From ccb9700860a81d01ee24c341f6b1012ad881d2a5 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Sat, 13 Apr 2024 15:50:24 -0400 Subject: [PATCH] chore: update wasi binaries --- .../compare-double-images.wasi.wasm | Bin 1592999 -> 1592384 bytes .../wasm_modules/vector-magnitude.wasi.wasm | Bin 1443117 -> 1442526 bytes .../js_package.py | 2 +- .../wasm_modules/compress-stringify.wasi.wasm | Bin 1026315 -> 1026291 bytes .../parse-string-decompress.wasi.wasm | Bin 754592 -> 754568 bytes .../itkwasm_dicom_emscripten/js_package.py | 2 +- ...pply-presentation-state-to-image.wasi.wasm | Bin 5231331 -> 5231132 bytes .../read-dicom-encapsulated-pdf.wasi.wasm | Bin 1897807 -> 1897783 bytes .../read-image-dicom-file-series.wasi.wasm | Bin 6078815 -> 6078616 bytes .../structured-report-to-html.wasi.wasm | Bin 4588618 -> 4588594 bytes .../structured-report-to-text.wasi.wasm | Bin 4569238 -> 4569214 bytes .../js_package.py | 2 +- .../itkwasm_image_io_emscripten/js_package.py | 2 +- .../itkwasm_mesh_io_emscripten/js_package.py | 2 +- 14 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/compare-images/python/itkwasm-compare-images-wasi/itkwasm_compare_images_wasi/wasm_modules/compare-double-images.wasi.wasm b/packages/compare-images/python/itkwasm-compare-images-wasi/itkwasm_compare_images_wasi/wasm_modules/compare-double-images.wasi.wasm index f546b6ae9b6bb3af90ce4d58937e8dda635d53dc..8433e2f5f9210b6a6dd509828a85898f08730a0c 100755 GIT binary patch delta 38091 zcmd6Q2Y^+@_4k|mdfUDAvFx(D_dOO^dQrN-UVaht{Rn7tL&h9 zNZl6NpuMOq4QtPQUX zzhJC1RvD{}HO8yP4&!s!YB$#6zynq zMfmyf3*nXFRpDvcbnQuPhBi}M8=i$HPib?sb>a2l4dEBV8^bS!=W0*Hc0}fBk4Gm* zr$nblpVsDU&uE*%&uSCGo5KsVE#ZaQVr_|LYfH7~w5zs;Uk)$R-VQF;R^acw$_v^` zZI!l0+ZC<|?+&lkwntu#R76Kac1Pccei7LdeKay5GBGkv|0*(G|2i^3e>^f#pB$MI znHqUaeURBA zeTV*W zeb|_wZVpdWA5$l(kE@RulhrBeRP_mUnmS#5Qk|jxbM)PH8(%WQ7->AOu8h2(u2I+G zxK7=mZdIQ&W*B3QaRxUYH6|D@s}qgKj7i4h#$;oPG1Yj&m}bm0W*M`Mr;ItqE9y3N zullC?mio53N8LC2Xx+lHA=)?U1KNYycj~w55p`qen0i$GUY)FMjyxBBJGfcO<`Su0GN} z7FVBWpW^B>?Q?N;P&cuJkBHx|57Gzg58(PieUGwN*{!^xlsyz18XK-ZtUsa;(I3)>>iHW(A4f;(qx3QQ zAOk}b?RUZZNpVVjQ#MVrGV`#8;zcxtQ7&@sQS5H7__i5$Yz1p+-0{y7+jJ{A` zq}%#Z{W+9;MZXUM+^WB`K(kEr|fvUl`%^%o->BVX&^=-=u`^zZbe z`uF-V{kVPtS0v|q4f=bZG1wT2rXE%+A{CKQ#%N=VF-Kn+c}kzF&(r4{&lvZqgVe$5 zv&LNGs4~xZ$=GCUHntdBjRnTbhHboJydB(TY=>X?IQqOkCNVBCAu%!WSRiq4;=aWF zqYLZjsiP936Xl7Rv{;G^e&YWvNK7vreetRq3;Wd1%l04E<-_{u^49qaA8WI8r?g$= zW}J1PW1l!X_raI482*#+pBMl6?3c3qe|n1T=dGXf|26wPJ!&$`EXAK@rSg7$c%47N zw?F6qJA0q^T;}h`-nXAy=D#{9eW3Gudq#A-!5aT?iG9fJb^f+Ep!{I=fqln%|22%g z$Y0ywug_kzPi*in>LHCwfJWWks08|X6Jb*-mYT(x87`JQDUanJnDm-q-rWeaj0W?p za93Z6$xOx@&XH4mjuB{;<@H$OUk@k!)(HF!@`FaehzCJuPHD8-oQC2M+XKG_K5hrHm)^qL|2-b7%FH-&~g(N>bj3}(FAX(Gu?pXDp%)AIsN>ICwv zxJ!l=Dn(f{ke3Qrn_lx!<2aZBE6)2S0yTM7tw1msD(xEgfMn~^NWr;y3FwTbJf^2u z3Yng!EXyi42jt1!&-Pl`d9A}hh4YdMKFJ8wt=4k!k8PPx%nMA8xXjiv!*-Wifi4T7 zl!smkw8mleD}fqpi@p1mK&_xQR7-lTL$8M$dps5!aK5iZeuRg11#V_T`G8%4DeRxN zS`qkXL$;1T;SFBF*4szD!P+tQC@+wMS4a~yUa}x=@V;s=z(>i!v2-U(3nuJNN-)CG z&uu*afU${oH$8Z@#Mar<62adwGm}YvceIAmuJc&=u54Kkyr(4a$9Xgfo zkMQm9#x(xtyx>6luLZ#yi+xMLjKb;ZGV~6a}%-|-Sea3ez4=zWcf367rmUa6=Pqr|lojt9+<;;v) z8$G3Fwi%XjyK%Na8RFM zh8lW3)7pCPM5|Hj2wD%BF_?BtK4h<69nA5f>>KNXgV-V7XFX(l$X>QS*vSu~k8TRq z!rdC1gH71ycGu0prc5;GOE(yC8}ylBG#EyMqqhVP`q1G0+k+F?m%Q-RV3K`lTdxK~ z68p;T@mlb5hU3(o!Kdi@qKaS(x-Q!te3*{$J;4+mo9zug3Zx}EXZxZFe(`GM z_6Ha24A~2IhG*aG{h~OFUq3f1hySf( z*(NK6!WZ|5Qz1h}2?U-pz`1s_j3`3khm6ypW$auZWrfUzPXCP5TIVQ1U)3 z?R`=xTNuv|eiAUf*1iBA_I5N?Z~zx1seN?xwUXWokiYbsKKX%=>Erizj&!R5o{FWM zR1gf6NhM&438wfvog>NGKG$DMrsN9DmzVNcX&(lGfu*PAR4^z!q$E7#57M}YXx!$~ zSmDyR&86|R>NHASA{S@U2nwsy$gg=n8uEfb{$^glL2Cp%>2)byJn z2utuN>Q`?e2`&RP9Gt@CQ8CmUZ4Dl`<;Bg+R+U=uM9cAk(xlH@V)~@JF<51lHf0_d zQ@L*d4RGjuqfUI9Z(|@8 z;O)CcIyNOqHN%*#z?8uQ49~H{f5i`JEqDfgW^WP08xG)Tz?;$2IXd9~WjM-X0lubN zq(cLt>$CE5n*EVx1YS5rGy7Z8IK98+nXFGcLl5E4j?FF#?)O8O6@K1#e>BA#bdSXS za4CDy@vJn(VE68gfXU1NG*B!(<~=J1XRxk9@ZdXx zHa^-)+5iXHk7XBC+EzDE&yr!`GvIbGTxVS7BpF?SwsPhwio5`efn6{ z>6EI|=~bt*Do=~0xo}V2;ula8&xqTmubXIak#iMvu9iAiS&M97K2Axw-LQW86T}5_LJf7&8 zyH%zsCYiUyiktjE=Sc3^w7K>ZSDUNejTVLBe|~~L4E!A$J>(HCn>XzliOQgIU^P$O zqi3WQ#6Y;*7o7=={AkZe|6VZ1jlPtJ{58z7$aJJyEN#I^FN9buZSz?SW`;q8M#XJD z@E&eO1u#f>O670EB#MnbpyL34sdpql;#@*30e%SAEXd1>;)Py_j883!7hq&;-aV^X z6k}I}j2ds|^T%bIJg-hX2M?#bA1%5PHtdOt0rE#tXiB7GP=*2fXHj_l2hpNN)s>pQ zx)mxmBgEvzFl4J1nX?(;&wdcC1!~KuW;Y>LLTOgsTqxJ$`=(~+gngtyj1v*gp2)s5 z6e*T~Msd}l9{7y#KVK5LI71evH-Lworezl~?}L3Wjo5uJjSjxgySz9qU`>#f)%IA2 zFk;^qN${6jW##hrJEI-Z?B8}q{~e&y@b&1g4CuVFEBXroor&blNBEsy^I1hSuAtY9 z@mK3M(cRJi3BVafw3WNG^?$>mZBTXEhQ1N~wE~-MG?4rPz$OV8uy${>Jq{=LMvWhU zWj`0j)HwGSBA-x9x3{A0|F55Qv!Tpbi(U2<%cD;Uou= zxZuSFC@y%Z0w{kH00nIkK%to_HAqmz1t$6e90;8BC+&|`2PL2Gj|xyy;XMN=*^AJF3rhBRGeOBduLDX@0JFkMP*UL) zprqCZQ2|PDDL~2A_oDv+Q1ZhRW`dHRMd5!NltcwYfs8Q6;eG4HYw-OaMw|XfjI!`R z)LwWXR@g{-w;oq+59IPM^!Tj+BsUoGe+Q80iTJM!kSwhc|Ahd_CuG0-yl&(L7b5aP zM~b|NNOfi8<*S_d{{)!q5q-?1vBITsn@i(s)oJ`oZv58?P;#6965s?;7cZhNb8E#L z{Id8Y!KdWMeZL3~gis0#;td*8*eLX`!bX|%TQQRSXG1Oblbs!r9FTHHVO)TeW0DhU zdAu<0gj&keAO+!W5o&R7{Hj38fgb}>3d=-1rg)`s8TFV z2ZnGUhZ9txV9Ht03BU=>o|(y49|{^*6Xu|KG+Gd$m(x*(g(k@}Q9(?L5jgmfVUS-A zaNIy+mJ|QTBcuW9u5{eyHPrw|^V;$1fTO&2TmX(E(is59F{u)8lve{BkBx$KD~{XUinA`s zl4iOHV@azlLKyX0XZK?Vl&aU%B8L5c@Ayss?*l`ysTd*qDZuyBK=Mj# z&kcekS`PVzI3kSkPN%Hm|2@Vai#x&`jM3W4axeySFvfLOmV+@idfY$=#&Ll$+#A0t zj8XA}7-MzktU}D?-szmBmx(o+e+edvr74vN!dan7BM28yU`06{aYxAjt)`42#6Z}< zSt7Ae&xHvVmVVrD1|fz9zXr%~nHajA7{$d7WVpbA3>Q^%hby~ewXC*q5r9YgZWUyBM#_v)JR>c;uKgCvdjEsgj>e`kNkBFZyT zw<1C*ULGW*{_6e~w&_W^CcqHK}tM`s)Syw?LG|cT`by+uP;$w|7e^Xkls$U}1|III8z01q`StbU2|nhD>>s(9 zVc$3{yYt6vrakjvIU1H8F!K`wn?alZ=wKd{*{t7M5JS z@;v0!BBKy_0Qh(3ZLOpuC`gF<5FG)szY^j0fSZg7gxwCQD#*N|=hUDnHAdqpw#xEc zkV4ue;(EoXgi#q6k4M>!x?hR z+7Zj&j||;odE}L`PjC3&rrYyhO?xgZZ2n$c2hCOCBR+i_1E5%UTPgmPox}%$vy(@ zJYN!h2WTiIc?Dbx3KI9teN;ra2f^6^suHX;sY7IO)ojMgeY54pWuT3UQmZB?{E`XE z0`kKlh&O{WpB3pT5?^7+wNXCjht1do1&~7y4$x99a*C(eu*b|1QWou5jB?ZPe~fHF z50^g<8MUh<4Wor2RFg^tBV~+xO4gagji=-Xu7J{tCES**3WuHj4m+TtRwXgkQtB~a zK%Njsf`EsTnW^3ZFLEfIjTs_!)<@@|R3Pc)_vXcQ{@dnCu1E@RM@tsYW{}g8!mY48 zD0Duh(RtydsdG_sH*=G_y?n%*(PRgVuC$BACw8&;V^o+D$HiM6SSC6jHnsR5kW?t? zCDU;GF7Mr3DU62QbXSnVKb|9-^-g;owF-IDh7|NUv`_EB9B8h5Wxkj?%I}0tvE#*k zZ~9&1o|YYE=_O+G3%%s+xpJ!Tw3ooD(l7C#5bb&?L*ruC3$#-`@7zm9Rn6Q3X`_N| zXBt)7vO{U#7^*bn45Naz3!?%Bl%*bU9AiV%<7ju4>e|x^fdqe$RgpeSthPm(`Y+1r zMD#>!1agnWK=3b^9Z#Ja#yi68++%#yi7NR$#~BHTU$iE#PBXmd%nbWrj-D#*rV}%X zWlGGfeP->#k%|meVM2U+mq>11VLq;KH;Q+OT~w#`nzB5M#?)&laZ;qs)2p`ciJHb4 zUnM$6wv!D{ZzF^E@)w?wFODM%9?ss)g6Db9%K7zBB1hP@j7UihAE&D8%b!qq@e|o!=FqU$wwr96LIe^kbe?!7cG>V zo_n@e`e_e9z;R?yzf=N8;?Hm-sahf*74LN&S|~3SvZj3`Qj|md@Iq`)IkT>6E|MFR zd96jGLNu6qDK3c7mX?yebOR%8D@li84)M8nXttU1Q8^T+0U<`FY{eik8mJ}f*hn;0 z?ppjHF~T|3sa5iWqT$SP9pGTl&>-Zwolj9puz?%U1vN;{JBj|{ih#Ix=6#v`7gpx< zlISU?_beU1vKI&+7j}Id{OP#Ga#1!$k3k^B6@bKFS}b3fkg&nS$?c}6&;m*g@o_mX z>+)D8yL|W(xv7k?ccKqtFO9L7uKRfG<4{gR2vQ7*-f1fvbr;9=I~%gxIe-}Hc;B~>iazu?IiIE(XvP7+7&uH|Z*&?NBE_Z; z`9W+}!88L+Ssn}pmpT@*JHr34Og3S{gIKBj z7z44cK%G8O?h{R)+ELOs1=Mp&RyahUq=2)|%>(XD6O;&?@1T2%Ah{kYOCB!e*5%7&P;wvrkWJfVA66OSrQKt)eqQiOL<#JQz=OdQO z%gbVB!~*!0KMR7EfV?l5i>Vk+{bYkWc5Xf!w4|grM&>LUfPw;@!2G7eeUvvE9tG8w6 zgaW}(SX}+?dAXLCZr}C1oG(ru#R-+n<5QokkyDmmP-x;RnL5kA+C_EhQcGw0SFgB! zgXRqzHO8|hkdmLQEhxXL#+pQlbd2f7!p-7-&xDi$r01=gK=(lHSWt-qKiYM@Xntsdai0ueDBYR)#aTrXR!$QoNSGG?sE?gi4i4ukG@a)_E#C6BNW# z=?223*a|I}50}Q0u1G_*J(k=r6)f^lZ*&3=5+N%Iv5EOXzImM-<4e}a4UzAKEUOrL ztk{Vu5K6g>EkmMQ$|q1RoKO-m3vve(xUgT&KXVtWcND5a`{rRz(G*ERRRE>W~| z=z&30+#9RmNV}@%pgtVzM!7|+gd@|c{(-Wt?1W3C2EsAp6v^>P4U{~7(*{}pFUv`* zl+zT*sRD9>hlYoNVPI&{GUQZ2azc-(8d}H^rR$$2ClvR_lvCw|`a({P+vB-ECZ8%S zRH!B_lnTeP&nT=nU;M8ND_$wARS?#02rHH$tayg7c9XDxIjajRUH>#;p}04ODR}ik z81)@tU5MxYSmab;p+Yrbp;R~qv_&@&7JfsG5tgJ2h6{^{OMcZ$vK7L>6~i_;KV7xy zQlp)RW(Z!HZUaSCryAc0phm=~E|mfuIc|=|9jiPr;5KYPy&ImUV3T|yhT+mpaxZrn z7A<9>3h_puiiZ5eCb_#P<&PmcUmZoDnxFrEv&@McaO5QSVg&H>@D`bN#ujhE*cpJzB&rM_-G%z4DNQCMrTBPzFuzyk^`Uv_p-3Xtg{JhV8B_{@( zYUkOH4u?eozI}OCq5T>KdnM z2Oc0)L;*#t=g>?pkY0JCXIR?{mC@20J#v@cBwBjI{mR?U(wl_NoxUyFL+fVHsrZGb zYhE%)&H*%vnL03R8J_z4;ZLY*UP`j?8aPTb=B(4f;3OC4mZcDGgAG}2XtfPd8N^{b z--}+n4Rc>i%^Vc#?Hr_)JU^_*n~aNB!L7hm($2<>%xx>(lvubsdsDuurZ9vP+0+(3 z?j^sd(pv1;&y}2Z0jr1z^3oe=Da-^Z=oz52GZTd2+QbYRP)E>6@fCO+d85i%<4C@J zEmJO%%J5MgYEz2dXoKg&ME#c3n_p6_)a(n#Y_Z#6ry&{yyjHCX<21rp z(mg~6;61`|Zcg95e`;KL@BWPnE07(SE3JH4wI z{FR_$M9^h-kn}e?T{bHE<`&Ucd3H!Kpf5k-C>Sd!075ZIEW27*6568H_jp=+V9C5| zNGXW~tyL#zxi=Z$BSK2v`LGii?JhcjDD<5;L691q%Z&$G>qOa<*nkUfNqTnIeW|PZ zZcF(oQt0J}LP{MhLVg}q61-7Z=}-?cfv-+QlV0?8gb9xaB+v1k4E|Vz{$M7UFC#8` z$%<$VUY=0mSB1=|NO!@J7Uli;6qhs*P5|}soxGNk=N^2|h59sk5*n7hVnp_|luDBL zESl@LH%b&J2B~5}SFppEMU-ToW4N?V08vTv(580JJr-6hKz;X!QWsof%#p#9JRbcE z#gSumnD)LxDefeOe*Zk=?3QdU5tD{eVJ}elNr#lu{E!hGI$q%#mV` zP=Bel@dSV5K)4p~9aGx1gTt?U3DzW>5{~l8CV%ivSVqR1K8h)Qq4~g1(tLJ%NAH23 zrgv8*+v7?j(m-5E@^;^2;r5&?#cUE3o)$e1o{J0+z0b9e5lo4BlCo7S`X_ZwQ|4PY z%k>ZflE`t3#6Y-!mk1TY&JYw5im1vNQMvm{c{t z;0z3S<4^JnXyxpzjZd={J(V{Evi>!1_|O%3Lc!c0H>w031bo2A(m$p6%1lMz0|`kQ zIQ0%pNrbwxK)nR726zgz6HV&E*ZB#f(YNKi1Ct~sxHZeyJ!zO($q-aQdNbkW_{EBn zD05ci42-5hQ|)hN;Y)!oLdzz%iVhe{22cxKmXZTSI-rCWgb%=hAO!qKzyaa0lvlVA zQe4?zN|OZ45k*BnEkI);QAF+p4I>a@W|ua^T0MPGtkNZkbRT^G$7wMN7vvRaQPdQT zC8KTws0AfO=mDk`i08%Tjfh_|7nC`Vi=@D44h+0UMiV9ceGqY&| zkqwZEPa3KOr!fC1MR3tCOwi0Sbzq#d*-7U+_6=x3X6~pMYd&IRF=@b;D3l(r{BDaP$v2>%`31p8-v5*m();<*0e;&$cl5Y zu1Q#Z9|VkrK{HJDEuO%50A*kn7Cuo1DZ|Gw{!dM*QJ+DRQOqYdsVQV3F~kQPaL4ck zQxuXns}!?Vmm)`2`N5!wAmJN&152&) z!{RFC%aWK+I0#6;G)1Y8=$NFJKsQX->1Gl>UU)MYick1EC{*MOL@OkJ6`R6_P=@!d zsr(iwu{U2-6JrjYd|gv{ioL_9Y;*%n@rrxYopgPDTE+?Zcd z>PwX2!(>?@kB3QKpFbFaZ%;A_42l4#zV3Ng$PQB!5f9Ig2V)^oIVVLm;aYJ(9tP@`F)w;EN|1mFOM75Y z;@fW`wM}RMYJv1D4+JOm&J#!0JCAaj-ES6pNkwQB@AQ!4qt?$(W+;=)GSmUrE}a32 zC8GA}bTY3XQ`o_OkW610Eyh|vpdcAv^R!@lRt|>OT--zMFQkf75-To9tkidiK#{5o zxdCG&{~fuNohmpVa)PT91Q@D~>t&n+CxU{6QCIJ#-@CVGy9XVATP24m=%mxO0=GZJWR5}B{0chC*t z)b}Evuyf9D9T^5XmrLRlpa`iOK5_21@ZCa@$RU^gHZ4*jFXf4Q$thq8uV|Z;qYE9 zr9QR=WaTS^YalR=`tVI(s!mfl{YuT|$pXd9nM~_@Fk2DJ4a}o*NQJ}qp|2`X@}rwo znw0~nTKJ@5fnt;i`+{P~S|Ci=R#$}Z$}A6(bSTH;q|+Rv3J?e`92*PJ!6$-OWS=zf zkaC%|(tW!~%?UbhpMtj|>;ixT6eWVmltqE&vD6Ak=kJFRA%&nevOq9jbsqtArttif z$4E5+mccW4Jh(?Js0!CeG*GuD2@?)Ja298>zQ*Q#+l0&O&EddTVF3@%)V@Pr3*z(A`?CF#-C11=Kp zK~@Mb@jx_n4>CAz#{hwd3S6Mu6wJbXi4!V}47|-M$IP4_NAVea2loP`BVWfv&;z3} z!lyM%rB?*YAoLh|<_k^b9Db9jbmK}=c>trt!6c@O&n1^)izc`R(*a~7 zxZ(`j;;~p)fGNYCMHvA^Od7v^G=9^Pw}7RnEMi0mPY*6q>X*TPNF~q`+!fK6<9zEM z!3mgbHxNsU7kH6_6EQGis49b5p%Z(NCqrW|(38b3#DoHe+mp-*SOu*73n^1uR7d`k z#RkHwAd*XiYDODn)f)+?8wtZy(LADFXoTuZ1LcK52O^=fQBVWUocO{UNK+zy#7gnI z1Na0vy$@KMx((HIc2kpB908Gai531B!wMxJ1g-Gk9xd`m*ZJs|9(ciL;Q-%V2QjDO zBBgGbz>BBI*qJ*JMiRDyL5;|QIK;%lNiD#&lb|4S5rmfw0{{U&dm(kI2ia5S&cr{# zYWODz{L`8M5O^h!g9)1hfBD9E8v@y#v%ZIu_M2n>k&_P8-m1W+T;g?00oc^)qxV%#_kK zgpP?`a0X9^NsyysJUKyAxFn6B+fp=7Un}z(9i1@D@8Egnb?No z1Ya8!!cwZu9zE4(k9=-1yc{h{S(I(!WTjBFT};|Ma6;%mWD5{6nJ6$786!NUa}YH} zCaqXcrP-HjndJEpAQcOTj;%T!-l3kR{IJl4QUK!~_kSj3S8`B;KU7~)sdMp(^_Bap zh|5fc!F!1~VMharzO;DL^oeX3!2~Q79mscPdccp6rc2K}=1W6tCvnGL#Mizk=klcu z6uk^VNv8+UxRW}2iVo;b<4XD%;9%C{3_?ya$9IqQsse5A{dBJr%FhTlhS`o6bwgpM=3c zWqM7uFRs8FeIyCmzJ@{==*e)*=+4gW0k2ik&zUxPv750|D3I%;ZyoWGM!a^&#M%ia ziWl?pk#Rkjlp@vv&?5OZVK|75BB^fchuAoGSyM%6D_(T2BMiJ&>|^yd^4uU2V^L9e zD57;D6PZ~M3GKsyE8vrwDmB}|#|vLCrUQP8SK))&J}X|@$m8iJ;5e?t7xd|;R8k=~ za~`_jhngy>LLbGIpdQ+GBf$eWwweCSwojyQSAO_im=VG|_-O?3;dgHy$e7wp$vF=$ zs#1nn-Xa--Vv-?#90x2zh9dvjm7(Cns*NQyuXTXWFO27LxjFEikGI4AhdMuw{=1qh zDP%I8jefXP8qx7V{``0j;yDNwI0@76JTmIJo3-%qOx%Z%A{RP2@z}5h5a2{n(wh#& zmNBxFDlW+rfJ-uC(kpR^R)|YVD5o8V9_v#|m6h*BMZVx-S>=Chp%n5yFNOVJbXW_l z1^D=^7D^ExeU7a80!W$(G8DlTG0yTS?G$5NTSd-+ zvlclQVk8znAaP0wR*UOxm2!e5ZIyFz*whx7#s{khS|cK9g#)4Z!)=wDsx{vf3r{pI zATCuoE+8+2ietz?x2CcGlsDF4dHkhz%Jq0n!}iMWavXSsjdA3okkXg-gM3nZB?pC; zv?LIghcuylw}jh<(8??4YzP!&rfAI}nJjOIXNa$@DLVA_qA;`j8!d;n1(xNI-2`@p49dWUdA&JTtNgl9oBrc?>?sd5#_hr*=1q@VIuqI>y? zQz$z5(<%DuKSYtey`wVA%O2r>>#Y1A8*0DTS+N*?VyJExMN`$GTCTOF`Y#b(csZ5h zi!WDZq1bg-C|5A{sJ-M$rM)jgzZ!&*PJRr(3N%#CO*Dl_$g@IE@+9}!B=O8t)A#AO zgs9Hr8gDvFIhT*TRyi&`p>gY)*g5vv>y%4F>I<3ohTgU74B1Ch_5em225*{_$X?DO+vlKA>DF;qos- zK=&kj^AM$9wlq=WBR7SA!~Z^BiTSr^(aDIn4Ff5w#w!cJ+g~14re@_1)1wz+z^Gzq znC=ih%x*GE=`69)_JF697Zd4U$g%MYIdd4>z>lp_3d0-R!W($eTBQu)p1xLyF>9Uj z1;ohKD}{`0wv!u_5jgS%FDj$)TU}i@D*y1G{_{!t%Ss5p=w;`>q7=|Cd!4sUS%J&% zwkdriw$;9BhteTOsBYh`YCj@1>l1~3L`wNo!H-Ds1)nN2@v}a^`%G!*XZ!63zEHTt zKC%nGRvuwE&ih7rEFix}dxx;g{XJcR9_0h}RmYY2UgUj*nR;V($(Ue|~Xx6kdUs$Tp^R5weV#qPHcS!zRx-Op=vQTwo``Q2UAHtcD8 zaToPIDKOrMP6-6~$hJ|#zOfTvpVi$7>1o5Uy_FBBpG#~ZfBGS{CtJ*qJ*1YfCA`B>wHpqDhpM%4m_1aT zhi6v|Q*UHz?G?k+VT?`V7d)(9gu~c})pOW<`=y7~VjugIe=$=1E1J7`lxS`Ve%6pJ z_2Yz`4zs7w4kB(fX0TzC|0b>dt48;Q( zHQ+!2jquYp;_hOuHet`(?{T%8KeZr1@j3i96V?fEj<)^Q>ZbBqLty&tioDkDIZ55h z*xPpAWHrwZs#;H1JF$iK9n;k&5eQ|*(<*}DZ`-q0s*NPJ*xtEXy$Qed$vbRN3)nmM zH5=4{arQ3XzC+Dr`|MA5sDneOb=zL`h!4kp@2D(Z?7r@m;`EE>*H52K+u#wWAPgLh z`CMJWp68bwRIkL(qdj#{ts7o%&{COS-oSSsRJ*i#QLu}csl3r3OhRYt3@mjcJFnQ1 z2Vnk#cySDQQuu?VvlxNLCH7^9)V{3!5`#c^cQCd0TMMut;!-*K<;v49U4mmk zbRs05{6Z}TS3SN^+cCD55B^de3J-x8)1=Vi1PveZV!rq*b#xSDrl1v!@*DYOU#s`C z7x=EP)n~!fL*J+cRfXq&17)q_Z+)ZYSKah}tDc9OCEsS2{NuNH=Q=*M+RYcgRrk~b z`(~8pl*IjcCca8dLmMSvSV!LW$d!b>bVN;}g-?!THmiK6*2K+*->LPh2)O1ubr(q$ z3}7%PF$U$=_-~G?=U0^(aa3(wb+!Je+Nf6gO-78q+(CJm;-{EM3hTIXT+MB~YFiaO zq7=q!3rnwXQqq7t{PlLtqez5Pr7&B|jXm*hRTciX@70???YrM2iPh#s$J8CUb|Q8T z0SNrkUc5Dq0s8f)%2yWDtRf1!(P2%ySV?DMm=4Gi4J6s@7W*dV0V zN_vgC%)*3n+r1pERJRdptAfx{bmzd;+O7&b?cCdKcPWl)y+ zB3?UJJA~SLo_3>JWuthzQ-Q=C%}}R3KTrFAEU&60-ji$jfcwGIxr@=M?GxKvZGz=!tm@@>ua?bTgDGI&@KiW&A1MZ{&m`s#y+h6SwecH&{i-B0#Dxj$fiR!BF6E5V%F`gFtM zF9X(kx`{S#s$U=yu2-l;X!UW14T2}Cnwz~jxp-Ew|yGwt$e zC23$*PWk#)?yW{d@IqtPmJ^S2V? zz&EY59yFFA$IfYuI#1>Rz;A7>wQGVBXjZZ&Ec{>#bDaMho8Yv?Z4phaMbT80i1e4A zwJTa{ZCEy*VgqQJtRnubrR9Phn0;>SnF`cSL)X4-wWq@AEBr!Zv6hpa>9?=}mEYY; ztHb-W(|(H<7PZrEiLXkWk3F6q>y1@3crNx z=V^by5Hk2Y?QW;8Q5W9r6#Qz?o>Ad~9k1+A;HHi;mhdx78x2 z)l5if(56}-Q2L!_SMqf`WmfOmNlQfq7PhFK&HvU(`$uA(Ay!6dOZhRDhWhJxyd;A= z`exqH^ zR&k|^*04dP(y;%N;=U4?DV7#tLrs<>dC)V`+Am0J9~!D6gU{@uJ$0HdB_&of!NKQi z{{ZswcGc=J5Zkbuc8{ObpU;zBw7jw^BCzQQz3eN@uM(JOdaSRjPWQZ1d3QoNOBa~e zIDIyu@@!S**@R9sXdz>mPV9N7cubiNbh1lO=q>Dm+ zXeoo zmm|*-^L^_7&IDu)5}-c15U#IMH?Ra6uCg!E42@naE)%p1jd)$lTVJFN%zhz3-V~20 zm@U7+mtBORW-Z@$kyhhES5`B>uhb*;bN4Qd=I-h8mTAi2>)m@0zk5c0X9@4zQ)||4 zv0*Vv{Dlt=mRffXu)ae|0RyVStRB&MhzA?;Xw8{Sdae)K>LH?8N66dE?TJBmG2hw~ zj(IWvpeJ0+Vjk`#ZZ_zpol{J8X)wSNUoTPb0g#=(N!h$WpGT>s!M(uYVm_yr*0BNk zaI3z6#x$kId#&|UNK9O4lOgD`mLR!rE!TQuL|)F@^+pe0Yd_RmyI;a|BTDHY*1H{q z0Jh#>@WYo!YuGI>)y9Sc)VMs~-gdS2a*RD=Prg~ZfW=%Dzxg@Zw7>j6Z60IK@TvXK z+n(Wt{n6VN+uizW6%q#_f1}N21A$vnK}B0Rk?;R4U-eM&T}|*?>^B0L7P#-wXRt? z?nBp{C`w-}KHkaSX$WYcPt-akg>lo&k_?6N0Lnu&u@?D67B$5OPSkp~t1L!{g|_3N zrEQF|Z>SSE@4*T63a`^0NvOE9#QuJwRv^`NNtv*_lH|`ZV{%E}OBM}xH;=EbkFQ5} zdD&**+MSS?BL<`0KzQAqS~r%;K#ajMqBTNM)R{-j2+(2>qz_md!O zDfiFNnu5HRGiX+4-!?;gA5lMk;4sCjsfHaA53$^ArJc=u) zS264551=mo;zH_1{NO_Ew|USoFd}wUhbdJ_te$~{1s{S0`?^J%%GfSGV6iq4hxiih zH>h^W5}@V^K6i=Mk?poWS)#RT}V<$G+_tIdPk6)`PWuluf>to2%J$)VCz&#ynq|d&c>UKJ2y|*v@ z9IwrET+DhS?H`ymvQE0{viH;Ft!e8kPiGDj4Z__Erq=Ri>i~3j@e9|1@ICyNb%0}w z?MK&X&l4)UVgu%RyZG`AV7$VXU(`-|aaZ1~b->+To3&O>nJf6-%~}k%KH4l)di55> zVRrFnw`gNgt=m>@l$ZC~uEqHW+o0<=dA;qhv$uHf?b=Z^;ONvYe^tAYocH^$YwP_8 zrq9`{U8k^pJo33#h#-1{&o#fq-nE+@(r%~d`OG6)pF*~u2Xpi~>^YbsS@rNI!hj#k|~RHf3d_Ef5%swJw#`{sk> zwR~#6-U)|y^7YTtQJZv|9%}I%#QYef|7&yN@DXBDnHc!*em@9jmX;U{UuDQD@I?Iv70#qdJH4^wERkSrt85cqRY2!T z`$w1$C8+@AVt zu$F^8g+7}0(%a)^zh3$qxY@P0UKcF!&uM(y5 zC-%Z?^raH}#O~imM+(jX{%l|UB`n7M{d)Z}Z{cT7$qJ43e+Ff7i9nP5DZvZ*L;JHE z^#=9X37+$ael`1=4}3(wmJPCBeMFB2*%AA#vHHCdp7tHD*T9P7o#XZT^$!_Q&0`H2 zAGQ{Y{i8G>e<|(_$Gs($_rBtr#_RVX!?Ne2`ZkbNFhRc@>!5#~px^4xKOo2|MgkAz zI$cR4zlSpGYo(a{ku6QpU+^-{S5MP(*m(ZNG`)yD%1=&%34Fv$rt9n2SS~+@Emf$| z2;0~s0CzJgKWd-*q~0;3;_z8I5{ler>aI_7xa8SV!mGQj88Ys*KcBD?H14I3EvqDi0XGPI&*b1FmGp4VHmv%R+DOb={nrQXNK zKD2+oR{wxx(tW*N!LYKMdQk@&8gKX7sGmct*Y|DGv*`KA&H5-D`SO?bQTCFpx{q$+ zq5}%^?_Pm1kLM-Z^z+#m{=hc9Ii$OEoBkn4ow8l9l)p<~U+wB%{*MZ%Gqb=jeqskY z;#j-UYx*u?{HN9p+x>Ry^;z~uVpx?d1eFj&I>4vBp|=5jd*9HPgSGK{^qzIt^u-?- zFMA`?6W9j{;Ay=$_Ml<#9X_Kun{NC4Mk~xd?DHBJ*GdSKO=x7)X+JjsNauBz(5!91 zN9&DjU33HV~qHV?LEIYKJv0DeElDdHf$gr-X1`! z!)`Jbu_t-S&BjSO{GV~edFBHaFDW&~(8OeCKVt~Ux~{*`ACc0{{f(wr_Wr)VaWTUb z=b~GTsm!)Nzr_HWo59(wc-IWx?pEVY92VYc{2qtI0An{>$qx-MdKL&kO_Owx>CET} z9?>GlyGh9G>f4MqEmvaFWiezd(Gop;8h|~8IVr73>W4UsR|FTgt*!*~sJfPKyv?}O z5f_^0slON>{fh_!l2@&@6hUY_(4bU;Ndt}P|Dt#p#aAMLz;F1gF}jmGg~*5=pec9Y z`OF>SJ(dlkX!&2%bk82ZV7`R6yxlm7m;jz&rC}X00~LZve(W|QhxfU|@H>3a%&-3) zM*li^Ml&v2ZWeP8lXi!BtOp7+XEXNkJB&-2!$gE8(G;7_jDk?qCxIyDQv4NWTR7#-?=tf0Jn1fbisnxZvJh&Z0{o)84XnXF_{X~q O{Fku*cy|r!)&CFbzkt{P delta 38472 zcmdU22Y?kt(tbTJr`?(9ncZdMyhqw4qmoq^6hwmY@)=JrEuIG+`rrMh?xLtDs05)A zPzfrCfFNNcND>qQ5tJ+{X3U_dh=KpBo_YJ;5){4r{qH}{oz$Vas=E5C>Y8~g#$7(` zzRTytg8s(~=FCe5+eei^VBT4IXDDpN=wWJu;K~A@Z~44O)G3TTKd-OeGsth_D~(mg zqw$&X58`(kcNw?yJ4QcL`0K!{`W}7sw}quOnwH4m6K6?|rX zZhm1NH20ZbnupA<%&*OF%#Y0d<|pQd=Evs5g8K?46ue>9YWExCl5?Ygby2)6r+5YopIbXYeVB7h{j|`{NJ9C&eenXYyHmHeVNgjE|45kIvy6qI3B? zKA$h(3%SFei*Ahm{0aVQcoAQWzk{`<{7Jryui)FGJEA+IEBWTw3$Y#X5wV@|UGYz1 zFU9YTjgL);-D4bxjWs@tjWh0#-D^A$n-rTI8*faBeIENFb};s3Yii*4VXYuv1eeor{Ht}KnqxepBYiwI=d+bx~)$kZYjP6o=R(O&z&ls5;G4J-` zk6HKuzB0NeHf>%_>8;V4jm9ndt@`uECS$Ylg7KoU#n@_WGqxKCwJ)_#^+VdNv9Gk- z^r8Cg`Y?UCewTi?etYbW*a&^3{;=_Cc$7X`zegXV-(rr{Z#9K}n>kJ&YTj<%s}D2B z>+7Qv^oja?`u+NF^8tO5K3SilPt_mPAJQMz?=+|B)AdJ24{6f${JYG%%_sHcv1R%y z{V5z*>rdapng7UUR%T!JKH`XWnlD;GkiT?%Qx`n`1AY;Mi~@uHNB$ z<<-0VJzTxdKaf`+@{e%!G2e%){rnUDDL;Vg&-mx^=@N{dPVk69v<|y+KV|i@4F~fM&m}Sm3Z_UT~<|+_pO;w7AUcg9{%~9f(I+a$X!a|yvwUf@&g|m>c{hHJ8s*mJgDv^)*9Wda`PY7Z(Np z$=(p>E)Mo*Z#YX92Y(w@-ZaF%6*0qUu_`!RVQ+~=tAm}Cx4a6`HNn5KH=Td130}n5 z8nNx^U=>@l@R{KJ-pWFgs5G2)TByIjAZ#g>N}D9J!j+0I?X!b}QhqBe`k0}1qH95@ zF!uTuU(cjs;~*|62$hKerJ<;J#tfC_1$_31ZP8TF9*4gnvEK}t`9aWKRGkh{W6=~7 zc1fsNDpF!cdj`5$3=bpKcw|LN(h>W?4%G029ju7BtRR$TQRn7@&<1})wCjtvM=5G0 z#guMVP}0^T>9dGH+v+baHAATye~F!}->$zT?YGyt6ysp|?W8&+(j%$FQPb+5@=4yN zSi%?g#jSuHAU><~r%2Mp?DFc?%xBkH154Dizk`63&)-d4VTQ_xh$99kiP+&1fdhz$ zekT#K|Kk(k4&D`v4q9ijUOr1iBc&!v)S{ zEgWOHk3!B`J-mmpd!0v&@NX5i$_W;Rf5Xt&Wkun!!Q^-j0qyaT5Y!36Umos~m`JzU z$U76A-sR!_m2AFq>RDlfv8B%Wy~1-%jPm03S_igf>@&fFq`JpNj zhdTz@2O@u3_;mK6IA>b8gni^xPYbUz*!!a0((n=#+P^gXGgh?ENS$QGyZbu$Ync_d z*ZQihd@HK%6BjQF7Zu`ZtDL8m)mDLgIDA>SlI?RAEDJxZpr4CYh94>a&=_w;n)`iI zJNf^PHsba{v=y-umfuRKA2|(Ig^Tr3G@9Y^gB-yX!cOJ5IPq2O5iX84Q%j;r^EzgPyHSvoD! zkqvV`n-+OC50}dqMmn%z;){im)7TEDofA2~T$yhOts+@)+x=T3&iz}X6@T{cs#3+^ zAxfbr{~{O?J5P^Y$Kv9=uCc%Cf%ZzoQY_Y930MJn5HEKQRzygLaU&pDx7g(@C|(

7PCH65kt6+lgC2GT60 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 W2~SqucK9DA{wr_}|D(`;;eP-cqU@;v diff --git a/packages/compare-images/python/itkwasm-compare-images-wasi/itkwasm_compare_images_wasi/wasm_modules/vector-magnitude.wasi.wasm b/packages/compare-images/python/itkwasm-compare-images-wasi/itkwasm_compare_images_wasi/wasm_modules/vector-magnitude.wasi.wasm index b98e577251fd95a1bb31b76af31976bff58b0e64..5c5b3ca4fb55942d9aa4b1330872049dccba58a7 100755 GIT binary patch delta 37288 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 Hb?5yb_qfUn diff --git a/packages/compress-stringify/python/itkwasm-compress-stringify-emscripten/itkwasm_compress_stringify_emscripten/js_package.py b/packages/compress-stringify/python/itkwasm-compress-stringify-emscripten/itkwasm_compress_stringify_emscripten/js_package.py index 5362dc9ab..ef3ebc55a 100644 --- a/packages/compress-stringify/python/itkwasm-compress-stringify-emscripten/itkwasm_compress_stringify_emscripten/js_package.py +++ b/packages/compress-stringify/python/itkwasm-compress-stringify-emscripten/itkwasm_compress_stringify_emscripten/js_package.py @@ -3,6 +3,6 @@ from itkwasm.pyodide import JsPackageConfig, JsPackage from ._version import __version__ -default_js_module = """data:text/javascript;base64,dmFyIGx0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgY3Q9KEEsZSk9Pntmb3IodmFyIHQgaW4gZSlsdChBLHQse2dldDplW3RdLGVudW1lcmFibGU6ITB9KX07dmFyIHV0PSIzLjAuMSIsUkE9dXQ7dmFyIGZ0PXtJbnQ4OiJpbnQ4IixVSW50ODoidWludDgiLEludDE2OiJpbnQxNiIsVUludDE2OiJ1aW50MTYiLEludDMyOiJpbnQzMiIsVUludDMyOiJ1aW50MzIiLEludDY0OiJpbnQ2NCIsVUludDY0OiJ1aW50NjQiLFNpemVWYWx1ZVR5cGU6InVpbnQ2NCIsSWRlbnRpZmllclR5cGU6InVpbnQ2NCIsSW5kZXhWYWx1ZVR5cGU6ImludDY0IixPZmZzZXRWYWx1ZVR5cGU6ImludDY0In0sRD1mdDt2YXIgcHQ9e0Zsb2F0MzI6ImZsb2F0MzIiLEZsb2F0NjQ6ImZsb2F0NjQiLFNwYWNlUHJlY2lzaW9uVHlwZToiZmxvYXQ2NCJ9LEo9cHQ7ZnVuY3Rpb24gZHQoQSxlKXtsZXQgdD1udWxsO3N3aXRjaChBKXtjYXNlIEQuVUludDg6e3Q9bmV3IFVpbnQ4QXJyYXkoZSk7YnJlYWt9Y2FzZSBELkludDg6e3Q9bmV3IEludDhBcnJheShlKTticmVha31jYXNlIEQuVUludDE2Ont0PW5ldyBVaW50MTZBcnJheShlKTticmVha31jYXNlIEQuSW50MTY6e3Q9bmV3IEludDE2QXJyYXkoZSk7YnJlYWt9Y2FzZSBELlVJbnQzMjp7dD1uZXcgVWludDMyQXJyYXkoZSk7YnJlYWt9Y2FzZSBELkludDMyOnt0PW5ldyBJbnQzMkFycmF5KGUpO2JyZWFrfWNhc2UgRC5VSW50NjQ6e3R5cGVvZiBnbG9iYWxUaGlzLkJpZ1VpbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ1VpbnQ2NEFycmF5KGUpOnQ9bmV3IFVpbnQ4QXJyYXkoZSk7YnJlYWt9Y2FzZSBELkludDY0Ont0eXBlb2YgZ2xvYmFsVGhpcy5CaWdJbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ0ludDY0QXJyYXkoZSk6dD1uZXcgVWludDhBcnJheShlKTticmVha31jYXNlIEouRmxvYXQzMjp7dD1uZXcgRmxvYXQzMkFycmF5KGUpO2JyZWFrfWNhc2UgSi5GbG9hdDY0Ont0PW5ldyBGbG9hdDY0QXJyYXkoZSk7YnJlYWt9Y2FzZSJudWxsIjp7dD1udWxsO2JyZWFrfWNhc2UgbnVsbDp7dD1udWxsO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlIGlzIG5vdCBzdXBwb3J0ZWQgYXMgYSBUeXBlZEFycmF5Iil9cmV0dXJuIHR9dmFyIE49ZHQ7dmFyIGh0PXtUZXh0RmlsZToiVGV4dEZpbGUiLEJpbmFyeUZpbGU6IkJpbmFyeUZpbGUiLFRleHRTdHJlYW06IlRleHRTdHJlYW0iLEJpbmFyeVN0cmVhbToiQmluYXJ5U3RyZWFtIixJbWFnZToiSW1hZ2UiLE1lc2g6Ik1lc2giLFBvbHlEYXRhOiJQb2x5RGF0YSIsSnNvbkNvbXBhdGlibGU6Ikpzb25Db21wYXRpYmxlIn0scD1odDt2YXIgb2U9U3ltYm9sKCJDb21saW5rLnByb3h5IiksbXQ9U3ltYm9sKCJDb21saW5rLmVuZHBvaW50IiksVUE9U3ltYm9sKCJDb21saW5rLnJlbGVhc2VQcm94eSIpLGJBPVN5bWJvbCgiQ29tbGluay5maW5hbGl6ZXIiKSxvQT1TeW1ib2woIkNvbWxpbmsudGhyb3duIiksc2U9QT0+dHlwZW9mIEE9PSJvYmplY3QiJiZBIT09bnVsbHx8dHlwZW9mIEE9PSJmdW5jdGlvbiIseXQ9e2NhbkhhbmRsZTpBPT5zZShBKSYmQVtvZV0sc2VyaWFsaXplKEEpe2xldHtwb3J0MTplLHBvcnQyOnR9PW5ldyBNZXNzYWdlQ2hhbm5lbDtyZXR1cm4gSWUoQSxlKSxbdCxbdF1dfSxkZXNlcmlhbGl6ZShBKXtyZXR1cm4gQS5zdGFydCgpLE5BKEEpfX0sd3Q9e2NhbkhhbmRsZTpBPT5zZShBKSYmb0EgaW4gQSxzZXJpYWxpemUoe3ZhbHVlOkF9KXtsZXQgZTtyZXR1cm4gQSBpbnN0YW5jZW9mIEVycm9yP2U9e2lzRXJyb3I6ITAsdmFsdWU6e21lc3NhZ2U6QS5tZXNzYWdlLG5hbWU6QS5uYW1lLHN0YWNrOkEuc3RhY2t9fTplPXtpc0Vycm9yOiExLHZhbHVlOkF9LFtlLFtdXX0sZGVzZXJpYWxpemUoQSl7dGhyb3cgQS5pc0Vycm9yP09iamVjdC5hc3NpZ24obmV3IEVycm9yKEEudmFsdWUubWVzc2FnZSksQS52YWx1ZSk6QS52YWx1ZX19LGFlPW5ldyBNYXAoW1sicHJveHkiLHl0XSxbInRocm93Iix3dF1dKTtmdW5jdGlvbiBEdChBLGUpe2ZvcihsZXQgdCBvZiBBKWlmKGU9PT10fHx0PT09IioifHx0IGluc3RhbmNlb2YgUmVnRXhwJiZ0LnRlc3QoZSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gSWUoQSxlPWdsb2JhbFRoaXMsdD1bIioiXSl7ZS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiByKGkpe2lmKCFpfHwhaS5kYXRhKXJldHVybjtpZighRHQodCxpLm9yaWdpbikpe2NvbnNvbGUud2FybihgSW52YWxpZCBvcmlnaW4gJyR7aS5vcmlnaW59JyBmb3IgY29tbGluayBwcm94eWApO3JldHVybn1sZXR7aWQ6bix0eXBlOm8scGF0aDpnfT1PYmplY3QuYXNzaWduKHtwYXRoOltdfSxpLmRhdGEpLEU9KGkuZGF0YS5hcmd1bWVudExpc3R8fFtdKS5tYXAoVCksQjt0cnl7bGV0IEk9Zy5zbGljZSgwLC0xKS5yZWR1Y2UoKGMsQyk9PmNbQ10sQSkscz1nLnJlZHVjZSgoYyxDKT0+Y1tDXSxBKTtzd2l0Y2gobyl7Y2FzZSJHRVQiOkI9czticmVhaztjYXNlIlNFVCI6SVtnLnNsaWNlKC0xKVswXV09VChpLmRhdGEudmFsdWUpLEI9ITA7YnJlYWs7Y2FzZSJBUFBMWSI6Qj1zLmFwcGx5KEksRSk7YnJlYWs7Y2FzZSJDT05TVFJVQ1QiOntsZXQgYz1uZXcgcyguLi5FKTtCPWt0KGMpfWJyZWFrO2Nhc2UiRU5EUE9JTlQiOntsZXR7cG9ydDE6Yyxwb3J0MjpDfT1uZXcgTWVzc2FnZUNoYW5uZWw7SWUoQSxDKSxCPUdBKGMsW2NdKX1icmVhaztjYXNlIlJFTEVBU0UiOkI9dm9pZCAwO2JyZWFrO2RlZmF1bHQ6cmV0dXJufX1jYXRjaChJKXtCPXt2YWx1ZTpJLFtvQV06MH19UHJvbWlzZS5yZXNvbHZlKEIpLmNhdGNoKEk9Pih7dmFsdWU6SSxbb0FdOjB9KSkudGhlbihJPT57bGV0W3MsY109SUEoSSk7ZS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scykse2lkOm59KSxjKSxvPT09IlJFTEVBU0UiJiYoZS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixyKSxnZShlKSxiQSBpbiBBJiZ0eXBlb2YgQVtiQV09PSJmdW5jdGlvbiImJkFbYkFdKCkpfSkuY2F0Y2goST0+e2xldFtzLGNdPUlBKHt2YWx1ZTpuZXcgVHlwZUVycm9yKCJVbnNlcmlhbGl6YWJsZSByZXR1cm4gdmFsdWUiKSxbb0FdOjB9KTtlLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxzKSx7aWQ6bn0pLGMpfSl9KSxlLnN0YXJ0JiZlLnN0YXJ0KCl9ZnVuY3Rpb24gU3QoQSl7cmV0dXJuIEEuY29uc3RydWN0b3IubmFtZT09PSJNZXNzYWdlUG9ydCJ9ZnVuY3Rpb24gZ2UoQSl7U3QoQSkmJkEuY2xvc2UoKX1mdW5jdGlvbiBOQShBLGUpe3JldHVybiBrQShBLFtdLGUpfWZ1bmN0aW9uIG5BKEEpe2lmKEEpdGhyb3cgbmV3IEVycm9yKCJQcm94eSBoYXMgYmVlbiByZWxlYXNlZCBhbmQgaXMgbm90IHVzZWFibGUiKX1mdW5jdGlvbiBDZShBKXtyZXR1cm4geChBLHt0eXBlOiJSRUxFQVNFIn0pLnRoZW4oKCk9PntnZShBKX0pfXZhciBzQT1uZXcgV2Vha01hcCxhQT0iRmluYWxpemF0aW9uUmVnaXN0cnkiaW4gZ2xvYmFsVGhpcyYmbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KEE9PntsZXQgZT0oc0EuZ2V0KEEpfHwwKS0xO3NBLnNldChBLGUpLGU9PT0wJiZDZShBKX0pO2Z1bmN0aW9uIEZ0KEEsZSl7bGV0IHQ9KHNBLmdldChlKXx8MCkrMTtzQS5zZXQoZSx0KSxhQSYmYUEucmVnaXN0ZXIoQSxlLEEpfWZ1bmN0aW9uIFJ0KEEpe2FBJiZhQS51bnJlZ2lzdGVyKEEpfWZ1bmN0aW9uIGtBKEEsZT1bXSx0PWZ1bmN0aW9uKCl7fSl7bGV0IHI9ITEsaT1uZXcgUHJveHkodCx7Z2V0KG4sbyl7aWYobkEociksbz09PVVBKXJldHVybigpPT57UnQoaSksQ2UoQSkscj0hMH07aWYobz09PSJ0aGVuIil7aWYoZS5sZW5ndGg9PT0wKXJldHVybnt0aGVuOigpPT5pfTtsZXQgZz14KEEse3R5cGU6IkdFVCIscGF0aDplLm1hcChFPT5FLnRvU3RyaW5nKCkpfSkudGhlbihUKTtyZXR1cm4gZy50aGVuLmJpbmQoZyl9cmV0dXJuIGtBKEEsWy4uLmUsb10pfSxzZXQobixvLGcpe25BKHIpO2xldFtFLEJdPUlBKGcpO3JldHVybiB4KEEse3R5cGU6IlNFVCIscGF0aDpbLi4uZSxvXS5tYXAoST0+SS50b1N0cmluZygpKSx2YWx1ZTpFfSxCKS50aGVuKFQpfSxhcHBseShuLG8sZyl7bkEocik7bGV0IEU9ZVtlLmxlbmd0aC0xXTtpZihFPT09bXQpcmV0dXJuIHgoQSx7dHlwZToiRU5EUE9JTlQifSkudGhlbihUKTtpZihFPT09ImJpbmQiKXJldHVybiBrQShBLGUuc2xpY2UoMCwtMSkpO2xldFtCLEldPW5lKGcpO3JldHVybiB4KEEse3R5cGU6IkFQUExZIixwYXRoOmUubWFwKHM9PnMudG9TdHJpbmcoKSksYXJndW1lbnRMaXN0OkJ9LEkpLnRoZW4oVCl9LGNvbnN0cnVjdChuLG8pe25BKHIpO2xldFtnLEVdPW5lKG8pO3JldHVybiB4KEEse3R5cGU6IkNPTlNUUlVDVCIscGF0aDplLm1hcChCPT5CLnRvU3RyaW5nKCkpLGFyZ3VtZW50TGlzdDpnfSxFKS50aGVuKFQpfX0pO3JldHVybiBGdChpLEEpLGl9ZnVuY3Rpb24gYnQoQSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sQSl9ZnVuY3Rpb24gbmUoQSl7bGV0IGU9QS5tYXAoSUEpO3JldHVybltlLm1hcCh0PT50WzBdKSxidChlLm1hcCh0PT50WzFdKSldfXZhciBCZT1uZXcgV2Vha01hcDtmdW5jdGlvbiBHQShBLGUpe3JldHVybiBCZS5zZXQoQSxlKSxBfWZ1bmN0aW9uIGt0KEEpe3JldHVybiBPYmplY3QuYXNzaWduKEEse1tvZV06ITB9KX1mdW5jdGlvbiBJQShBKXtmb3IobGV0W2UsdF1vZiBhZSlpZih0LmNhbkhhbmRsZShBKSl7bGV0W3IsaV09dC5zZXJpYWxpemUoQSk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmUsdmFsdWU6cn0saV19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOkF9LEJlLmdldChBKXx8W11dfWZ1bmN0aW9uIFQoQSl7c3dpdGNoKEEudHlwZSl7Y2FzZSJIQU5ETEVSIjpyZXR1cm4gYWUuZ2V0KEEubmFtZSkuZGVzZXJpYWxpemUoQS52YWx1ZSk7Y2FzZSJSQVciOnJldHVybiBBLnZhbHVlfX1mdW5jdGlvbiB4KEEsZSx0KXtyZXR1cm4gbmV3IFByb21pc2Uocj0+e2xldCBpPVV0KCk7QS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiBuKG8peyFvLmRhdGF8fCFvLmRhdGEuaWR8fG8uZGF0YS5pZCE9PWl8fChBLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLG4pLHIoby5kYXRhKSl9KSxBLnN0YXJ0JiZBLnN0YXJ0KCksQS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKHtpZDppfSxlKSx0KX0pfWZ1bmN0aW9uIFV0KCl7cmV0dXJuIG5ldyBBcnJheSg0KS5maWxsKDApLm1hcCgoKT0+TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKk51bWJlci5NQVhfU0FGRV9JTlRFR0VSKS50b1N0cmluZygxNikpLmpvaW4oIi0iKX1mdW5jdGlvbiBfKEEsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEEuYXBwbHkoZSxhcmd1bWVudHMpfX12YXJ7dG9TdHJpbmc6TnR9PU9iamVjdC5wcm90b3R5cGUse2dldFByb3RvdHlwZU9mOlRBfT1PYmplY3QsQ0E9KEE9PmU9PntsZXQgdD1OdC5jYWxsKGUpO3JldHVybiBBW3RdfHwoQVt0XT10LnNsaWNlKDgsLTEpLnRvTG93ZXJDYXNlKCkpfSkoT2JqZWN0LmNyZWF0ZShudWxsKSksaz1BPT4oQT1BLnRvTG93ZXJDYXNlKCksZT0+Q0EoZSk9PT1BKSxCQT1BPT5lPT50eXBlb2YgZT09PUEse2lzQXJyYXk6UH09QXJyYXksej1CQSgidW5kZWZpbmVkIik7ZnVuY3Rpb24gR3QoQSl7cmV0dXJuIEEhPT1udWxsJiYheihBKSYmQS5jb25zdHJ1Y3RvciE9PW51bGwmJiF6KEEuY29uc3RydWN0b3IpJiZGKEEuY29uc3RydWN0b3IuaXNCdWZmZXIpJiZBLmNvbnN0cnVjdG9yLmlzQnVmZmVyKEEpfXZhciBjZT1rKCJBcnJheUJ1ZmZlciIpO2Z1bmN0aW9uIEx0KEEpe2xldCBlO3JldHVybiB0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZBcnJheUJ1ZmZlci5pc1ZpZXc/ZT1BcnJheUJ1ZmZlci5pc1ZpZXcoQSk6ZT1BJiZBLmJ1ZmZlciYmY2UoQS5idWZmZXIpLGV9dmFyIE90PUJBKCJzdHJpbmciKSxGPUJBKCJmdW5jdGlvbiIpLHVlPUJBKCJudW1iZXIiKSxFQT1BPT5BIT09bnVsbCYmdHlwZW9mIEE9PSJvYmplY3QiLFR0PUE9PkE9PT0hMHx8QT09PSExLGdBPUE9PntpZihDQShBKSE9PSJvYmplY3QiKXJldHVybiExO2xldCBlPVRBKEEpO3JldHVybihlPT09bnVsbHx8ZT09PU9iamVjdC5wcm90b3R5cGV8fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PW51bGwpJiYhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBBKSYmIShTeW1ib2wuaXRlcmF0b3IgaW4gQSl9LEp0PWsoIkRhdGUiKSx4dD1rKCJGaWxlIiksUHQ9aygiQmxvYiIpLEh0PWsoIkZpbGVMaXN0IiksTXQ9QT0+RUEoQSkmJkYoQS5waXBlKSxZdD1BPT57bGV0IGU7cmV0dXJuIEEmJih0eXBlb2YgRm9ybURhdGE9PSJmdW5jdGlvbiImJkEgaW5zdGFuY2VvZiBGb3JtRGF0YXx8RihBLmFwcGVuZCkmJigoZT1DQShBKSk9PT0iZm9ybWRhdGEifHxlPT09Im9iamVjdCImJkYoQS50b1N0cmluZykmJkEudG9TdHJpbmcoKT09PSJbb2JqZWN0IEZvcm1EYXRhXSIpKX0scXQ9aygiVVJMU2VhcmNoUGFyYW1zIiksS3Q9QT0+QS50cmltP0EudHJpbSgpOkEucmVwbGFjZSgvXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csIiIpO2Z1bmN0aW9uIFYoQSxlLHthbGxPd25LZXlzOnQ9ITF9PXt9KXtpZihBPT09bnVsbHx8dHlwZW9mIEE+InUiKXJldHVybjtsZXQgcixpO2lmKHR5cGVvZiBBIT0ib2JqZWN0IiYmKEE9W0FdKSxQKEEpKWZvcihyPTAsaT1BLmxlbmd0aDtyPGk7cisrKWUuY2FsbChudWxsLEFbcl0scixBKTtlbHNle2xldCBuPXQ/T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoQSk6T2JqZWN0LmtleXMoQSksbz1uLmxlbmd0aCxnO2ZvcihyPTA7cjxvO3IrKylnPW5bcl0sZS5jYWxsKG51bGwsQVtnXSxnLEEpfX1mdW5jdGlvbiBmZShBLGUpe2U9ZS50b0xvd2VyQ2FzZSgpO2xldCB0PU9iamVjdC5rZXlzKEEpLHI9dC5sZW5ndGgsaTtmb3IoO3ItLSA+MDspaWYoaT10W3JdLGU9PT1pLnRvTG93ZXJDYXNlKCkpcmV0dXJuIGk7cmV0dXJuIG51bGx9dmFyIHBlPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzpnbG9iYWwsZGU9QT0+IXooQSkmJkEhPT1wZTtmdW5jdGlvbiBPQSgpe2xldHtjYXNlbGVzczpBfT1kZSh0aGlzKSYmdGhpc3x8e30sZT17fSx0PShyLGkpPT57bGV0IG49QSYmZmUoZSxpKXx8aTtnQShlW25dKSYmZ0Eocik/ZVtuXT1PQShlW25dLHIpOmdBKHIpP2Vbbl09T0Eoe30scik6UChyKT9lW25dPXIuc2xpY2UoKTplW25dPXJ9O2ZvcihsZXQgcj0wLGk9YXJndW1lbnRzLmxlbmd0aDtyPGk7cisrKWFyZ3VtZW50c1tyXSYmVihhcmd1bWVudHNbcl0sdCk7cmV0dXJuIGV9dmFyIFd0PShBLGUsdCx7YWxsT3duS2V5czpyfT17fSk9PihWKGUsKGksbik9Pnt0JiZGKGkpP0Fbbl09XyhpLHQpOkFbbl09aX0se2FsbE93bktleXM6cn0pLEEpLGp0PUE9PihBLmNoYXJDb2RlQXQoMCk9PT02NTI3OSYmKEE9QS5zbGljZSgxKSksQSksdnQ9KEEsZSx0LHIpPT57QS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSxyKSxBLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1BLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJzdXBlciIse3ZhbHVlOmUucHJvdG90eXBlfSksdCYmT2JqZWN0LmFzc2lnbihBLnByb3RvdHlwZSx0KX0sX3Q9KEEsZSx0LHIpPT57bGV0IGksbixvLGc9e307aWYoZT1lfHx7fSxBPT1udWxsKXJldHVybiBlO2Rve2ZvcihpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEEpLG49aS5sZW5ndGg7bi0tID4wOylvPWlbbl0sKCFyfHxyKG8sQSxlKSkmJiFnW29dJiYoZVtvXT1BW29dLGdbb109ITApO0E9dCE9PSExJiZUQShBKX13aGlsZShBJiYoIXR8fHQoQSxlKSkmJkEhPT1PYmplY3QucHJvdG90eXBlKTtyZXR1cm4gZX0senQ9KEEsZSx0KT0+e0E9U3RyaW5nKEEpLCh0PT09dm9pZCAwfHx0PkEubGVuZ3RoKSYmKHQ9QS5sZW5ndGgpLHQtPWUubGVuZ3RoO2xldCByPUEuaW5kZXhPZihlLHQpO3JldHVybiByIT09LTEmJnI9PT10fSxWdD1BPT57aWYoIUEpcmV0dXJuIG51bGw7aWYoUChBKSlyZXR1cm4gQTtsZXQgZT1BLmxlbmd0aDtpZighdWUoZSkpcmV0dXJuIG51bGw7bGV0IHQ9bmV3IEFycmF5KGUpO2Zvcig7ZS0tID4wOyl0W2VdPUFbZV07cmV0dXJuIHR9LFp0PShBPT5lPT5BJiZlIGluc3RhbmNlb2YgQSkodHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZUQShVaW50OEFycmF5KSksWHQ9KEEsZSk9PntsZXQgcj0oQSYmQVtTeW1ib2wuaXRlcmF0b3JdKS5jYWxsKEEpLGk7Zm9yKDsoaT1yLm5leHQoKSkmJiFpLmRvbmU7KXtsZXQgbj1pLnZhbHVlO2UuY2FsbChBLG5bMF0sblsxXSl9fSwkdD0oQSxlKT0+e2xldCB0LHI9W107Zm9yKDsodD1BLmV4ZWMoZSkpIT09bnVsbDspci5wdXNoKHQpO3JldHVybiByfSxBcj1rKCJIVE1MRm9ybUVsZW1lbnQiKSxlcj1BPT5BLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWy1fXHNdKFthLXpcZF0pKFx3KikvZyxmdW5jdGlvbih0LHIsaSl7cmV0dXJuIHIudG9VcHBlckNhc2UoKStpfSksUWU9KCh7aGFzT3duUHJvcGVydHk6QX0pPT4oZSx0KT0+QS5jYWxsKGUsdCkpKE9iamVjdC5wcm90b3R5cGUpLHRyPWsoIlJlZ0V4cCIpLGhlPShBLGUpPT57bGV0IHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoQSkscj17fTtWKHQsKGksbik9PntsZXQgbzsobz1lKGksbixBKSkhPT0hMSYmKHJbbl09b3x8aSl9KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhBLHIpfSxycj1BPT57aGUoQSwoZSx0KT0+e2lmKEYoQSkmJlsiYXJndW1lbnRzIiwiY2FsbGVyIiwiY2FsbGVlIl0uaW5kZXhPZih0KSE9PS0xKXJldHVybiExO2xldCByPUFbdF07aWYoRihyKSl7aWYoZS5lbnVtZXJhYmxlPSExLCJ3cml0YWJsZSJpbiBlKXtlLndyaXRhYmxlPSExO3JldHVybn1lLnNldHx8KGUuc2V0PSgpPT57dGhyb3cgRXJyb3IoIkNhbiBub3QgcmV3cml0ZSByZWFkLW9ubHkgbWV0aG9kICciK3QrIiciKX0pfX0pfSxpcj0oQSxlKT0+e2xldCB0PXt9LHI9aT0+e2kuZm9yRWFjaChuPT57dFtuXT0hMH0pfTtyZXR1cm4gUChBKT9yKEEpOnIoU3RyaW5nKEEpLnNwbGl0KGUpKSx0fSxucj0oKT0+e30sb3I9KEEsZSk9PihBPStBLE51bWJlci5pc0Zpbml0ZShBKT9BOmUpLExBPSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsbGU9IjAxMjM0NTY3ODkiLG1lPXtESUdJVDpsZSxBTFBIQTpMQSxBTFBIQV9ESUdJVDpMQStMQS50b1VwcGVyQ2FzZSgpK2xlfSxzcj0oQT0xNixlPW1lLkFMUEhBX0RJR0lUKT0+e2xldCB0PSIiLHtsZW5ndGg6cn09ZTtmb3IoO0EtLTspdCs9ZVtNYXRoLnJhbmRvbSgpKnJ8MF07cmV0dXJuIHR9O2Z1bmN0aW9uIGFyKEEpe3JldHVybiEhKEEmJkYoQS5hcHBlbmQpJiZBW1N5bWJvbC50b1N0cmluZ1RhZ109PT0iRm9ybURhdGEiJiZBW1N5bWJvbC5pdGVyYXRvcl0pfXZhciBJcj1BPT57bGV0IGU9bmV3IEFycmF5KDEwKSx0PShyLGkpPT57aWYoRUEocikpe2lmKGUuaW5kZXhPZihyKT49MClyZXR1cm47aWYoISgidG9KU09OImluIHIpKXtlW2ldPXI7bGV0IG49UChyKT9bXTp7fTtyZXR1cm4gVihyLChvLGcpPT57bGV0IEU9dChvLGkrMSk7IXooRSkmJihuW2ddPUUpfSksZVtpXT12b2lkIDAsbn19cmV0dXJuIHJ9O3JldHVybiB0KEEsMCl9LGdyPWsoIkFzeW5jRnVuY3Rpb24iKSxDcj1BPT5BJiYoRUEoQSl8fEYoQSkpJiZGKEEudGhlbikmJkYoQS5jYXRjaCksYT17aXNBcnJheTpQLGlzQXJyYXlCdWZmZXI6Y2UsaXNCdWZmZXI6R3QsaXNGb3JtRGF0YTpZdCxpc0FycmF5QnVmZmVyVmlldzpMdCxpc1N0cmluZzpPdCxpc051bWJlcjp1ZSxpc0Jvb2xlYW46VHQsaXNPYmplY3Q6RUEsaXNQbGFpbk9iamVjdDpnQSxpc1VuZGVmaW5lZDp6LGlzRGF0ZTpKdCxpc0ZpbGU6eHQsaXNCbG9iOlB0LGlzUmVnRXhwOnRyLGlzRnVuY3Rpb246Rixpc1N0cmVhbTpNdCxpc1VSTFNlYXJjaFBhcmFtczpxdCxpc1R5cGVkQXJyYXk6WnQsaXNGaWxlTGlzdDpIdCxmb3JFYWNoOlYsbWVyZ2U6T0EsZXh0ZW5kOld0LHRyaW06S3Qsc3RyaXBCT006anQsaW5oZXJpdHM6dnQsdG9GbGF0T2JqZWN0Ol90LGtpbmRPZjpDQSxraW5kT2ZUZXN0OmssZW5kc1dpdGg6enQsdG9BcnJheTpWdCxmb3JFYWNoRW50cnk6WHQsbWF0Y2hBbGw6JHQsaXNIVE1MRm9ybTpBcixoYXNPd25Qcm9wZXJ0eTpRZSxoYXNPd25Qcm9wOlFlLHJlZHVjZURlc2NyaXB0b3JzOmhlLGZyZWV6ZU1ldGhvZHM6cnIsdG9PYmplY3RTZXQ6aXIsdG9DYW1lbENhc2U6ZXIsbm9vcDpucix0b0Zpbml0ZU51bWJlcjpvcixmaW5kS2V5OmZlLGdsb2JhbDpwZSxpc0NvbnRleHREZWZpbmVkOmRlLEFMUEhBQkVUOm1lLGdlbmVyYXRlU3RyaW5nOnNyLGlzU3BlY0NvbXBsaWFudEZvcm06YXIsdG9KU09OT2JqZWN0OklyLGlzQXN5bmNGbjpncixpc1RoZW5hYmxlOkNyfTtmdW5jdGlvbiBIKEEsZSx0LHIsaSl7RXJyb3IuY2FsbCh0aGlzKSxFcnJvci5jYXB0dXJlU3RhY2tUcmFjZT9FcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLHRoaXMuY29uc3RydWN0b3IpOnRoaXMuc3RhY2s9bmV3IEVycm9yKCkuc3RhY2ssdGhpcy5tZXNzYWdlPUEsdGhpcy5uYW1lPSJBeGlvc0Vycm9yIixlJiYodGhpcy5jb2RlPWUpLHQmJih0aGlzLmNvbmZpZz10KSxyJiYodGhpcy5yZXF1ZXN0PXIpLGkmJih0aGlzLnJlc3BvbnNlPWkpfWEuaW5oZXJpdHMoSCxFcnJvcix7dG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOmEudG9KU09OT2JqZWN0KHRoaXMuY29uZmlnKSxjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5yZXNwb25zZSYmdGhpcy5yZXNwb25zZS5zdGF0dXM/dGhpcy5yZXNwb25zZS5zdGF0dXM6bnVsbH19fSk7dmFyIHllPUgucHJvdG90eXBlLHdlPXt9O1siRVJSX0JBRF9PUFRJT05fVkFMVUUiLCJFUlJfQkFEX09QVElPTiIsIkVDT05OQUJPUlRFRCIsIkVUSU1FRE9VVCIsIkVSUl9ORVRXT1JLIiwiRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUyIsIkVSUl9ERVBSRUNBVEVEIiwiRVJSX0JBRF9SRVNQT05TRSIsIkVSUl9CQURfUkVRVUVTVCIsIkVSUl9DQU5DRUxFRCIsIkVSUl9OT1RfU1VQUE9SVCIsIkVSUl9JTlZBTElEX1VSTCJdLmZvckVhY2goQT0+e3dlW0FdPXt2YWx1ZTpBfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEgsd2UpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh5ZSwiaXNBeGlvc0Vycm9yIix7dmFsdWU6ITB9KTtILmZyb209KEEsZSx0LHIsaSxuKT0+e2xldCBvPU9iamVjdC5jcmVhdGUoeWUpO3JldHVybiBhLnRvRmxhdE9iamVjdChBLG8sZnVuY3Rpb24oRSl7cmV0dXJuIEUhPT1FcnJvci5wcm90b3R5cGV9LGc9PmchPT0iaXNBeGlvc0Vycm9yIiksSC5jYWxsKG8sQS5tZXNzYWdlLGUsdCxyLGkpLG8uY2F1c2U9QSxvLm5hbWU9QS5uYW1lLG4mJk9iamVjdC5hc3NpZ24obyxuKSxvfTt2YXIgZj1IO3ZhciBRQT1udWxsO2Z1bmN0aW9uIEpBKEEpe3JldHVybiBhLmlzUGxhaW5PYmplY3QoQSl8fGEuaXNBcnJheShBKX1mdW5jdGlvbiBTZShBKXtyZXR1cm4gYS5lbmRzV2l0aChBLCJbXSIpP0Euc2xpY2UoMCwtMik6QX1mdW5jdGlvbiBEZShBLGUsdCl7cmV0dXJuIEE/QS5jb25jYXQoZSkubWFwKGZ1bmN0aW9uKGksbil7cmV0dXJuIGk9U2UoaSksIXQmJm4/IlsiK2krIl0iOml9KS5qb2luKHQ/Ii4iOiIiKTplfWZ1bmN0aW9uIEJyKEEpe3JldHVybiBhLmlzQXJyYXkoQSkmJiFBLnNvbWUoSkEpfXZhciBFcj1hLnRvRmxhdE9iamVjdChhLHt9LG51bGwsZnVuY3Rpb24oZSl7cmV0dXJuL15pc1tBLVpdLy50ZXN0KGUpfSk7ZnVuY3Rpb24gUXIoQSxlLHQpe2lmKCFhLmlzT2JqZWN0KEEpKXRocm93IG5ldyBUeXBlRXJyb3IoInRhcmdldCBtdXN0IGJlIGFuIG9iamVjdCIpO2U9ZXx8bmV3KFFBfHxGb3JtRGF0YSksdD1hLnRvRmxhdE9iamVjdCh0LHttZXRhVG9rZW5zOiEwLGRvdHM6ITEsaW5kZXhlczohMX0sITEsZnVuY3Rpb24oUSx1KXtyZXR1cm4hYS5pc1VuZGVmaW5lZCh1W1FdKX0pO2xldCByPXQubWV0YVRva2VucyxpPXQudmlzaXRvcnx8SSxuPXQuZG90cyxvPXQuaW5kZXhlcyxFPSh0LkJsb2J8fHR5cGVvZiBCbG9iPCJ1IiYmQmxvYikmJmEuaXNTcGVjQ29tcGxpYW50Rm9ybShlKTtpZighYS5pc0Z1bmN0aW9uKGkpKXRocm93IG5ldyBUeXBlRXJyb3IoInZpc2l0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uIik7ZnVuY3Rpb24gQihsKXtpZihsPT09bnVsbClyZXR1cm4iIjtpZihhLmlzRGF0ZShsKSlyZXR1cm4gbC50b0lTT1N0cmluZygpO2lmKCFFJiZhLmlzQmxvYihsKSl0aHJvdyBuZXcgZigiQmxvYiBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgYSBCdWZmZXIgaW5zdGVhZC4iKTtyZXR1cm4gYS5pc0FycmF5QnVmZmVyKGwpfHxhLmlzVHlwZWRBcnJheShsKT9FJiZ0eXBlb2YgQmxvYj09ImZ1bmN0aW9uIj9uZXcgQmxvYihbbF0pOkJ1ZmZlci5mcm9tKGwpOmx9ZnVuY3Rpb24gSShsLFEsdSl7bGV0IGQ9bDtpZihsJiYhdSYmdHlwZW9mIGw9PSJvYmplY3QiKXtpZihhLmVuZHNXaXRoKFEsInt9IikpUT1yP1E6US5zbGljZSgwLC0yKSxsPUpTT04uc3RyaW5naWZ5KGwpO2Vsc2UgaWYoYS5pc0FycmF5KGwpJiZCcihsKXx8KGEuaXNGaWxlTGlzdChsKXx8YS5lbmRzV2l0aChRLCJbXSIpKSYmKGQ9YS50b0FycmF5KGwpKSlyZXR1cm4gUT1TZShRKSxkLmZvckVhY2goZnVuY3Rpb24oYixRdCl7IShhLmlzVW5kZWZpbmVkKGIpfHxiPT09bnVsbCkmJmUuYXBwZW5kKG89PT0hMD9EZShbUV0sUXQsbik6bz09PW51bGw/UTpRKyJbXSIsQihiKSl9KSwhMX1yZXR1cm4gSkEobCk/ITA6KGUuYXBwZW5kKERlKHUsUSxuKSxCKGwpKSwhMSl9bGV0IHM9W10sYz1PYmplY3QuYXNzaWduKEVyLHtkZWZhdWx0VmlzaXRvcjpJLGNvbnZlcnRWYWx1ZTpCLGlzVmlzaXRhYmxlOkpBfSk7ZnVuY3Rpb24gQyhsLFEpe2lmKCFhLmlzVW5kZWZpbmVkKGwpKXtpZihzLmluZGV4T2YobCkhPT0tMSl0aHJvdyBFcnJvcigiQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGluICIrUS5qb2luKCIuIikpO3MucHVzaChsKSxhLmZvckVhY2gobCxmdW5jdGlvbihkLFIpeyghKGEuaXNVbmRlZmluZWQoZCl8fGQ9PT1udWxsKSYmaS5jYWxsKGUsZCxhLmlzU3RyaW5nKFIpP1IudHJpbSgpOlIsUSxjKSk9PT0hMCYmQyhkLFE/US5jb25jYXQoUik6W1JdKX0pLHMucG9wKCl9fWlmKCFhLmlzT2JqZWN0KEEpKXRocm93IG5ldyBUeXBlRXJyb3IoImRhdGEgbXVzdCBiZSBhbiBvYmplY3QiKTtyZXR1cm4gQyhBKSxlfXZhciBHPVFyO2Z1bmN0aW9uIEZlKEEpe2xldCBlPXsiISI6IiUyMSIsIiciOiIlMjciLCIoIjoiJTI4IiwiKSI6IiUyOSIsIn4iOiIlN0UiLCIlMjAiOiIrIiwiJTAwIjoiXDAifTtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEEpLnJlcGxhY2UoL1shJygpfl18JTIwfCUwMC9nLGZ1bmN0aW9uKHIpe3JldHVybiBlW3JdfSl9ZnVuY3Rpb24gUmUoQSxlKXt0aGlzLl9wYWlycz1bXSxBJiZHKEEsdGhpcyxlKX12YXIgYmU9UmUucHJvdG90eXBlO2JlLmFwcGVuZD1mdW5jdGlvbihlLHQpe3RoaXMuX3BhaXJzLnB1c2goW2UsdF0pfTtiZS50b1N0cmluZz1mdW5jdGlvbihlKXtsZXQgdD1lP2Z1bmN0aW9uKHIpe3JldHVybiBlLmNhbGwodGhpcyxyLEZlKX06RmU7cmV0dXJuIHRoaXMuX3BhaXJzLm1hcChmdW5jdGlvbihpKXtyZXR1cm4gdChpWzBdKSsiPSIrdChpWzFdKX0sIiIpLmpvaW4oIiYiKX07dmFyIGxBPVJlO2Z1bmN0aW9uIGxyKEEpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoQSkucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2csIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjAvZywiKyIpLnJlcGxhY2UoLyU1Qi9naSwiWyIpLnJlcGxhY2UoLyU1RC9naSwiXSIpfWZ1bmN0aW9uIFooQSxlLHQpe2lmKCFlKXJldHVybiBBO2xldCByPXQmJnQuZW5jb2RlfHxscixpPXQmJnQuc2VyaWFsaXplLG47aWYoaT9uPWkoZSx0KTpuPWEuaXNVUkxTZWFyY2hQYXJhbXMoZSk/ZS50b1N0cmluZygpOm5ldyBsQShlLHQpLnRvU3RyaW5nKHIpLG4pe2xldCBvPUEuaW5kZXhPZigiIyIpO28hPT0tMSYmKEE9QS5zbGljZSgwLG8pKSxBKz0oQS5pbmRleE9mKCI/Iik9PT0tMT8iPyI6IiYiKStufXJldHVybiBBfXZhciB4QT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuaGFuZGxlcnM9W119dXNlKGUsdCxyKXtyZXR1cm4gdGhpcy5oYW5kbGVycy5wdXNoKHtmdWxmaWxsZWQ6ZSxyZWplY3RlZDp0LHN5bmNocm9ub3VzOnI/ci5zeW5jaHJvbm91czohMSxydW5XaGVuOnI/ci5ydW5XaGVuOm51bGx9KSx0aGlzLmhhbmRsZXJzLmxlbmd0aC0xfWVqZWN0KGUpe3RoaXMuaGFuZGxlcnNbZV0mJih0aGlzLmhhbmRsZXJzW2VdPW51bGwpfWNsZWFyKCl7dGhpcy5oYW5kbGVycyYmKHRoaXMuaGFuZGxlcnM9W10pfWZvckVhY2goZSl7YS5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsZnVuY3Rpb24ocil7ciE9PW51bGwmJmUocil9KX19LFBBPXhBO3ZhciBjQT17c2lsZW50SlNPTlBhcnNpbmc6ITAsZm9yY2VkSlNPTlBhcnNpbmc6ITAsY2xhcmlmeVRpbWVvdXRFcnJvcjohMX07dmFyIGtlPXR5cGVvZiBVUkxTZWFyY2hQYXJhbXM8InUiP1VSTFNlYXJjaFBhcmFtczpsQTt2YXIgVWU9dHlwZW9mIEZvcm1EYXRhPCJ1Ij9Gb3JtRGF0YTpudWxsO3ZhciBOZT10eXBlb2YgQmxvYjwidSI/QmxvYjpudWxsO3ZhciBHZT17aXNCcm93c2VyOiEwLGNsYXNzZXM6e1VSTFNlYXJjaFBhcmFtczprZSxGb3JtRGF0YTpVZSxCbG9iOk5lfSxwcm90b2NvbHM6WyJodHRwIiwiaHR0cHMiLCJmaWxlIiwiYmxvYiIsInVybCIsImRhdGEiXX07dmFyIEhBPXt9O2N0KEhBLHtoYXNCcm93c2VyRW52OigpPT5MZSxoYXNTdGFuZGFyZEJyb3dzZXJFbnY6KCk9PmNyLGhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudjooKT0+dXJ9KTt2YXIgTGU9dHlwZW9mIHdpbmRvdzwidSImJnR5cGVvZiBkb2N1bWVudDwidSIsY3I9KEE9PkxlJiZbIlJlYWN0TmF0aXZlIiwiTmF0aXZlU2NyaXB0IiwiTlMiXS5pbmRleE9mKEEpPDApKHR5cGVvZiBuYXZpZ2F0b3I8InUiJiZuYXZpZ2F0b3IucHJvZHVjdCksdXI9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlPCJ1IiYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZ0eXBlb2Ygc2VsZi5pbXBvcnRTY3JpcHRzPT0iZnVuY3Rpb24iO3ZhciB5PXsuLi5IQSwuLi5HZX07ZnVuY3Rpb24gTUEoQSxlKXtyZXR1cm4gRyhBLG5ldyB5LmNsYXNzZXMuVVJMU2VhcmNoUGFyYW1zLE9iamVjdC5hc3NpZ24oe3Zpc2l0b3I6ZnVuY3Rpb24odCxyLGksbil7cmV0dXJuIHkuaXNOb2RlJiZhLmlzQnVmZmVyKHQpPyh0aGlzLmFwcGVuZChyLHQudG9TdHJpbmcoImJhc2U2NCIpKSwhMSk6bi5kZWZhdWx0VmlzaXRvci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSxlKSl9ZnVuY3Rpb24gZnIoQSl7cmV0dXJuIGEubWF0Y2hBbGwoL1x3K3xcWyhcdyopXS9nLEEpLm1hcChlPT5lWzBdPT09IltdIj8iIjplWzFdfHxlWzBdKX1mdW5jdGlvbiBwcihBKXtsZXQgZT17fSx0PU9iamVjdC5rZXlzKEEpLHIsaT10Lmxlbmd0aCxuO2ZvcihyPTA7cjxpO3IrKyluPXRbcl0sZVtuXT1BW25dO3JldHVybiBlfWZ1bmN0aW9uIGRyKEEpe2Z1bmN0aW9uIGUodCxyLGksbil7bGV0IG89dFtuKytdLGc9TnVtYmVyLmlzRmluaXRlKCtvKSxFPW4+PXQubGVuZ3RoO3JldHVybiBvPSFvJiZhLmlzQXJyYXkoaSk/aS5sZW5ndGg6byxFPyhhLmhhc093blByb3AoaSxvKT9pW29dPVtpW29dLHJdOmlbb109ciwhZyk6KCghaVtvXXx8IWEuaXNPYmplY3QoaVtvXSkpJiYoaVtvXT1bXSksZSh0LHIsaVtvXSxuKSYmYS5pc0FycmF5KGlbb10pJiYoaVtvXT1wcihpW29dKSksIWcpfWlmKGEuaXNGb3JtRGF0YShBKSYmYS5pc0Z1bmN0aW9uKEEuZW50cmllcykpe2xldCB0PXt9O3JldHVybiBhLmZvckVhY2hFbnRyeShBLChyLGkpPT57ZShmcihyKSxpLHQsMCl9KSx0fXJldHVybiBudWxsfXZhciB1QT1kcjtmdW5jdGlvbiBocihBLGUsdCl7aWYoYS5pc1N0cmluZyhBKSl0cnl7cmV0dXJuKGV8fEpTT04ucGFyc2UpKEEpLGEudHJpbShBKX1jYXRjaChyKXtpZihyLm5hbWUhPT0iU3ludGF4RXJyb3IiKXRocm93IHJ9cmV0dXJuKHR8fEpTT04uc3RyaW5naWZ5KShBKX12YXIgWUE9e3RyYW5zaXRpb25hbDpjQSxhZGFwdGVyOlsieGhyIiwiaHR0cCJdLHRyYW5zZm9ybVJlcXVlc3Q6W2Z1bmN0aW9uKGUsdCl7bGV0IHI9dC5nZXRDb250ZW50VHlwZSgpfHwiIixpPXIuaW5kZXhPZigiYXBwbGljYXRpb24vanNvbiIpPi0xLG49YS5pc09iamVjdChlKTtpZihuJiZhLmlzSFRNTEZvcm0oZSkmJihlPW5ldyBGb3JtRGF0YShlKSksYS5pc0Zvcm1EYXRhKGUpKXJldHVybiBpJiZpP0pTT04uc3RyaW5naWZ5KHVBKGUpKTplO2lmKGEuaXNBcnJheUJ1ZmZlcihlKXx8YS5pc0J1ZmZlcihlKXx8YS5pc1N0cmVhbShlKXx8YS5pc0ZpbGUoZSl8fGEuaXNCbG9iKGUpKXJldHVybiBlO2lmKGEuaXNBcnJheUJ1ZmZlclZpZXcoZSkpcmV0dXJuIGUuYnVmZmVyO2lmKGEuaXNVUkxTZWFyY2hQYXJhbXMoZSkpcmV0dXJuIHQuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04IiwhMSksZS50b1N0cmluZygpO2xldCBnO2lmKG4pe2lmKHIuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik+LTEpcmV0dXJuIE1BKGUsdGhpcy5mb3JtU2VyaWFsaXplcikudG9TdHJpbmcoKTtpZigoZz1hLmlzRmlsZUxpc3QoZSkpfHxyLmluZGV4T2YoIm11bHRpcGFydC9mb3JtLWRhdGEiKT4tMSl7bGV0IEU9dGhpcy5lbnYmJnRoaXMuZW52LkZvcm1EYXRhO3JldHVybiBHKGc/eyJmaWxlc1tdIjplfTplLEUmJm5ldyBFLHRoaXMuZm9ybVNlcmlhbGl6ZXIpfX1yZXR1cm4gbnx8aT8odC5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24vanNvbiIsITEpLGhyKGUpKTplfV0sdHJhbnNmb3JtUmVzcG9uc2U6W2Z1bmN0aW9uKGUpe2xldCB0PXRoaXMudHJhbnNpdGlvbmFsfHxZQS50cmFuc2l0aW9uYWwscj10JiZ0LmZvcmNlZEpTT05QYXJzaW5nLGk9dGhpcy5yZXNwb25zZVR5cGU9PT0ianNvbiI7aWYoZSYmYS5pc1N0cmluZyhlKSYmKHImJiF0aGlzLnJlc3BvbnNlVHlwZXx8aSkpe2xldCBvPSEodCYmdC5zaWxlbnRKU09OUGFyc2luZykmJmk7dHJ5e3JldHVybiBKU09OLnBhcnNlKGUpfWNhdGNoKGcpe2lmKG8pdGhyb3cgZy5uYW1lPT09IlN5bnRheEVycm9yIj9mLmZyb20oZyxmLkVSUl9CQURfUkVTUE9OU0UsdGhpcyxudWxsLHRoaXMucmVzcG9uc2UpOmd9fXJldHVybiBlfV0sdGltZW91dDowLHhzcmZDb29raWVOYW1lOiJYU1JGLVRPS0VOIix4c3JmSGVhZGVyTmFtZToiWC1YU1JGLVRPS0VOIixtYXhDb250ZW50TGVuZ3RoOi0xLG1heEJvZHlMZW5ndGg6LTEsZW52OntGb3JtRGF0YTp5LmNsYXNzZXMuRm9ybURhdGEsQmxvYjp5LmNsYXNzZXMuQmxvYn0sdmFsaWRhdGVTdGF0dXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PTIwMCYmZTwzMDB9LGhlYWRlcnM6e2NvbW1vbjp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoiLCJDb250ZW50LVR5cGUiOnZvaWQgMH19fTthLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwicG9zdCIsInB1dCIsInBhdGNoIl0sQT0+e1lBLmhlYWRlcnNbQV09e319KTt2YXIgTT1ZQTt2YXIgbXI9YS50b09iamVjdFNldChbImFnZSIsImF1dGhvcml6YXRpb24iLCJjb250ZW50LWxlbmd0aCIsImNvbnRlbnQtdHlwZSIsImV0YWciLCJleHBpcmVzIiwiZnJvbSIsImhvc3QiLCJpZi1tb2RpZmllZC1zaW5jZSIsImlmLXVubW9kaWZpZWQtc2luY2UiLCJsYXN0LW1vZGlmaWVkIiwibG9jYXRpb24iLCJtYXgtZm9yd2FyZHMiLCJwcm94eS1hdXRob3JpemF0aW9uIiwicmVmZXJlciIsInJldHJ5LWFmdGVyIiwidXNlci1hZ2VudCJdKSxPZT1BPT57bGV0IGU9e30sdCxyLGk7cmV0dXJuIEEmJkEuc3BsaXQoYApgKS5mb3JFYWNoKGZ1bmN0aW9uKG8pe2k9by5pbmRleE9mKCI6IiksdD1vLnN1YnN0cmluZygwLGkpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLHI9by5zdWJzdHJpbmcoaSsxKS50cmltKCksISghdHx8ZVt0XSYmbXJbdF0pJiYodD09PSJzZXQtY29va2llIj9lW3RdP2VbdF0ucHVzaChyKTplW3RdPVtyXTplW3RdPWVbdF0/ZVt0XSsiLCAiK3I6cil9KSxlfTt2YXIgVGU9U3ltYm9sKCJpbnRlcm5hbHMiKTtmdW5jdGlvbiBYKEEpe3JldHVybiBBJiZTdHJpbmcoQSkudHJpbSgpLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gZkEoQSl7cmV0dXJuIEE9PT0hMXx8QT09bnVsbD9BOmEuaXNBcnJheShBKT9BLm1hcChmQSk6U3RyaW5nKEEpfWZ1bmN0aW9uIHlyKEEpe2xldCBlPU9iamVjdC5jcmVhdGUobnVsbCksdD0vKFteXHMsOz1dKylccyooPzo9XHMqKFteLDtdKykpPy9nLHI7Zm9yKDtyPXQuZXhlYyhBKTspZVtyWzFdXT1yWzJdO3JldHVybiBlfXZhciB3cj1BPT4vXlstX2EtekEtWjAtOV5gfH4sISMkJSYnKisuXSskLy50ZXN0KEEudHJpbSgpKTtmdW5jdGlvbiBxQShBLGUsdCxyLGkpe2lmKGEuaXNGdW5jdGlvbihyKSlyZXR1cm4gci5jYWxsKHRoaXMsZSx0KTtpZihpJiYoZT10KSwhIWEuaXNTdHJpbmcoZSkpe2lmKGEuaXNTdHJpbmcocikpcmV0dXJuIGUuaW5kZXhPZihyKSE9PS0xO2lmKGEuaXNSZWdFeHAocikpcmV0dXJuIHIudGVzdChlKX19ZnVuY3Rpb24gRHIoQSl7cmV0dXJuIEEudHJpbSgpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvKFthLXpcZF0pKFx3KikvZywoZSx0LHIpPT50LnRvVXBwZXJDYXNlKCkrcil9ZnVuY3Rpb24gU3IoQSxlKXtsZXQgdD1hLnRvQ2FtZWxDYXNlKCIgIitlKTtbImdldCIsInNldCIsImhhcyJdLmZvckVhY2gocj0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLHIrdCx7dmFsdWU6ZnVuY3Rpb24oaSxuLG8pe3JldHVybiB0aGlzW3JdLmNhbGwodGhpcyxlLGksbixvKX0sY29uZmlndXJhYmxlOiEwfSl9KX12YXIgWT1jbGFzc3tjb25zdHJ1Y3RvcihlKXtlJiZ0aGlzLnNldChlKX1zZXQoZSx0LHIpe2xldCBpPXRoaXM7ZnVuY3Rpb24gbihnLEUsQil7bGV0IEk9WChFKTtpZighSSl0aHJvdyBuZXcgRXJyb3IoImhlYWRlciBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nIik7bGV0IHM9YS5maW5kS2V5KGksSSk7KCFzfHxpW3NdPT09dm9pZCAwfHxCPT09ITB8fEI9PT12b2lkIDAmJmlbc10hPT0hMSkmJihpW3N8fEVdPWZBKGcpKX1sZXQgbz0oZyxFKT0+YS5mb3JFYWNoKGcsKEIsSSk9Pm4oQixJLEUpKTtyZXR1cm4gYS5pc1BsYWluT2JqZWN0KGUpfHxlIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9vKGUsdCk6YS5pc1N0cmluZyhlKSYmKGU9ZS50cmltKCkpJiYhd3IoZSk/byhPZShlKSx0KTplIT1udWxsJiZuKHQsZSxyKSx0aGlzfWdldChlLHQpe2lmKGU9WChlKSxlKXtsZXQgcj1hLmZpbmRLZXkodGhpcyxlKTtpZihyKXtsZXQgaT10aGlzW3JdO2lmKCF0KXJldHVybiBpO2lmKHQ9PT0hMClyZXR1cm4geXIoaSk7aWYoYS5pc0Z1bmN0aW9uKHQpKXJldHVybiB0LmNhbGwodGhpcyxpLHIpO2lmKGEuaXNSZWdFeHAodCkpcmV0dXJuIHQuZXhlYyhpKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJwYXJzZXIgbXVzdCBiZSBib29sZWFufHJlZ2V4cHxmdW5jdGlvbiIpfX19aGFzKGUsdCl7aWYoZT1YKGUpLGUpe2xldCByPWEuZmluZEtleSh0aGlzLGUpO3JldHVybiEhKHImJnRoaXNbcl0hPT12b2lkIDAmJighdHx8cUEodGhpcyx0aGlzW3JdLHIsdCkpKX1yZXR1cm4hMX1kZWxldGUoZSx0KXtsZXQgcj10aGlzLGk9ITE7ZnVuY3Rpb24gbihvKXtpZihvPVgobyksbyl7bGV0IGc9YS5maW5kS2V5KHIsbyk7ZyYmKCF0fHxxQShyLHJbZ10sZyx0KSkmJihkZWxldGUgcltnXSxpPSEwKX19cmV0dXJuIGEuaXNBcnJheShlKT9lLmZvckVhY2gobik6bihlKSxpfWNsZWFyKGUpe2xldCB0PU9iamVjdC5rZXlzKHRoaXMpLHI9dC5sZW5ndGgsaT0hMTtmb3IoO3ItLTspe2xldCBuPXRbcl07KCFlfHxxQSh0aGlzLHRoaXNbbl0sbixlLCEwKSkmJihkZWxldGUgdGhpc1tuXSxpPSEwKX1yZXR1cm4gaX1ub3JtYWxpemUoZSl7bGV0IHQ9dGhpcyxyPXt9O3JldHVybiBhLmZvckVhY2godGhpcywoaSxuKT0+e2xldCBvPWEuZmluZEtleShyLG4pO2lmKG8pe3Rbb109ZkEoaSksZGVsZXRlIHRbbl07cmV0dXJufWxldCBnPWU/RHIobik6U3RyaW5nKG4pLnRyaW0oKTtnIT09biYmZGVsZXRlIHRbbl0sdFtnXT1mQShpKSxyW2ddPSEwfSksdGhpc31jb25jYXQoLi4uZSl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY29uY2F0KHRoaXMsLi4uZSl9dG9KU09OKGUpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGEuZm9yRWFjaCh0aGlzLChyLGkpPT57ciE9bnVsbCYmciE9PSExJiYodFtpXT1lJiZhLmlzQXJyYXkocik/ci5qb2luKCIsICIpOnIpfSksdH1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKVtTeW1ib2wuaXRlcmF0b3JdKCl9dG9TdHJpbmcoKXtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSkubWFwKChbZSx0XSk9PmUrIjogIit0KS5qb2luKGAKYCl9Z2V0W1N5bWJvbC50b1N0cmluZ1RhZ10oKXtyZXR1cm4iQXhpb3NIZWFkZXJzIn1zdGF0aWMgZnJvbShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHRoaXM/ZTpuZXcgdGhpcyhlKX1zdGF0aWMgY29uY2F0KGUsLi4udCl7bGV0IHI9bmV3IHRoaXMoZSk7cmV0dXJuIHQuZm9yRWFjaChpPT5yLnNldChpKSkscn1zdGF0aWMgYWNjZXNzb3IoZSl7bGV0IHI9KHRoaXNbVGVdPXRoaXNbVGVdPXthY2Nlc3NvcnM6e319KS5hY2Nlc3NvcnMsaT10aGlzLnByb3RvdHlwZTtmdW5jdGlvbiBuKG8pe2xldCBnPVgobyk7cltnXXx8KFNyKGksbykscltnXT0hMCl9cmV0dXJuIGEuaXNBcnJheShlKT9lLmZvckVhY2gobik6bihlKSx0aGlzfX07WS5hY2Nlc3NvcihbIkNvbnRlbnQtVHlwZSIsIkNvbnRlbnQtTGVuZ3RoIiwiQWNjZXB0IiwiQWNjZXB0LUVuY29kaW5nIiwiVXNlci1BZ2VudCIsIkF1dGhvcml6YXRpb24iXSk7YS5yZWR1Y2VEZXNjcmlwdG9ycyhZLnByb3RvdHlwZSwoe3ZhbHVlOkF9LGUpPT57bGV0IHQ9ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSk7cmV0dXJue2dldDooKT0+QSxzZXQocil7dGhpc1t0XT1yfX19KTthLmZyZWV6ZU1ldGhvZHMoWSk7dmFyIHc9WTtmdW5jdGlvbiAkKEEsZSl7bGV0IHQ9dGhpc3x8TSxyPWV8fHQsaT13LmZyb20oci5oZWFkZXJzKSxuPXIuZGF0YTtyZXR1cm4gYS5mb3JFYWNoKEEsZnVuY3Rpb24oZyl7bj1nLmNhbGwodCxuLGkubm9ybWFsaXplKCksZT9lLnN0YXR1czp2b2lkIDApfSksaS5ub3JtYWxpemUoKSxufWZ1bmN0aW9uIEFBKEEpe3JldHVybiEhKEEmJkEuX19DQU5DRUxfXyl9ZnVuY3Rpb24gSmUoQSxlLHQpe2YuY2FsbCh0aGlzLEE/PyJjYW5jZWxlZCIsZi5FUlJfQ0FOQ0VMRUQsZSx0KSx0aGlzLm5hbWU9IkNhbmNlbGVkRXJyb3IifWEuaW5oZXJpdHMoSmUsZix7X19DQU5DRUxfXzohMH0pO3ZhciBMPUplO2Z1bmN0aW9uIEtBKEEsZSx0KXtsZXQgcj10LmNvbmZpZy52YWxpZGF0ZVN0YXR1czshdC5zdGF0dXN8fCFyfHxyKHQuc3RhdHVzKT9BKHQpOmUobmV3IGYoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIit0LnN0YXR1cyxbZi5FUlJfQkFEX1JFUVVFU1QsZi5FUlJfQkFEX1JFU1BPTlNFXVtNYXRoLmZsb29yKHQuc3RhdHVzLzEwMCktNF0sdC5jb25maWcsdC5yZXF1ZXN0LHQpKX12YXIgeGU9eS5oYXNTdGFuZGFyZEJyb3dzZXJFbnY/e3dyaXRlKEEsZSx0LHIsaSxuKXtsZXQgbz1bQSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGUpXTthLmlzTnVtYmVyKHQpJiZvLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZSh0KS50b0dNVFN0cmluZygpKSxhLmlzU3RyaW5nKHIpJiZvLnB1c2goInBhdGg9IityKSxhLmlzU3RyaW5nKGkpJiZvLnB1c2goImRvbWFpbj0iK2kpLG49PT0hMCYmby5wdXNoKCJzZWN1cmUiKSxkb2N1bWVudC5jb29raWU9by5qb2luKCI7ICIpfSxyZWFkKEEpe2xldCBlPWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCIoXnw7XFxzKikoIitBKyIpPShbXjtdKikiKSk7cmV0dXJuIGU/ZGVjb2RlVVJJQ29tcG9uZW50KGVbM10pOm51bGx9LHJlbW92ZShBKXt0aGlzLndyaXRlKEEsIiIsRGF0ZS5ub3coKS04NjRlNSl9fTp7d3JpdGUoKXt9LHJlYWQoKXtyZXR1cm4gbnVsbH0scmVtb3ZlKCl7fX07ZnVuY3Rpb24gV0EoQSl7cmV0dXJuL14oW2Etel1bYS16XGQrXC0uXSo6KT9cL1wvL2kudGVzdChBKX1mdW5jdGlvbiBqQShBLGUpe3JldHVybiBlP0EucmVwbGFjZSgvXC8rJC8sIiIpKyIvIitlLnJlcGxhY2UoL15cLysvLCIiKTpBfWZ1bmN0aW9uIGVBKEEsZSl7cmV0dXJuIEEmJiFXQShlKT9qQShBLGUpOmV9dmFyIFBlPXkuaGFzU3RhbmRhcmRCcm93c2VyRW52P2Z1bmN0aW9uKCl7bGV0IGU9Lyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSx0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxyO2Z1bmN0aW9uIGkobil7bGV0IG89bjtyZXR1cm4gZSYmKHQuc2V0QXR0cmlidXRlKCJocmVmIixvKSxvPXQuaHJlZiksdC5zZXRBdHRyaWJ1dGUoImhyZWYiLG8pLHtocmVmOnQuaHJlZixwcm90b2NvbDp0LnByb3RvY29sP3QucHJvdG9jb2wucmVwbGFjZSgvOiQvLCIiKToiIixob3N0OnQuaG9zdCxzZWFyY2g6dC5zZWFyY2g/dC5zZWFyY2gucmVwbGFjZSgvXlw/LywiIik6IiIsaGFzaDp0Lmhhc2g/dC5oYXNoLnJlcGxhY2UoL14jLywiIik6IiIsaG9zdG5hbWU6dC5ob3N0bmFtZSxwb3J0OnQucG9ydCxwYXRobmFtZTp0LnBhdGhuYW1lLmNoYXJBdCgwKT09PSIvIj90LnBhdGhuYW1lOiIvIit0LnBhdGhuYW1lfX1yZXR1cm4gcj1pKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxmdW5jdGlvbihvKXtsZXQgZz1hLmlzU3RyaW5nKG8pP2kobyk6bztyZXR1cm4gZy5wcm90b2NvbD09PXIucHJvdG9jb2wmJmcuaG9zdD09PXIuaG9zdH19KCk6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hMH19KCk7ZnVuY3Rpb24gdkEoQSl7bGV0IGU9L14oWy0rXHddezEsMjV9KSg6P1wvXC98OikvLmV4ZWMoQSk7cmV0dXJuIGUmJmVbMV18fCIifWZ1bmN0aW9uIEZyKEEsZSl7QT1BfHwxMDtsZXQgdD1uZXcgQXJyYXkoQSkscj1uZXcgQXJyYXkoQSksaT0wLG49MCxvO3JldHVybiBlPWUhPT12b2lkIDA/ZToxZTMsZnVuY3Rpb24oRSl7bGV0IEI9RGF0ZS5ub3coKSxJPXJbbl07b3x8KG89QiksdFtpXT1FLHJbaV09QjtsZXQgcz1uLGM9MDtmb3IoO3MhPT1pOyljKz10W3MrK10scz1zJUE7aWYoaT0oaSsxKSVBLGk9PT1uJiYobj0obisxKSVBKSxCLW88ZSlyZXR1cm47bGV0IEM9SSYmQi1JO3JldHVybiBDP01hdGgucm91bmQoYyoxZTMvQyk6dm9pZCAwfX12YXIgSGU9RnI7ZnVuY3Rpb24gTWUoQSxlKXtsZXQgdD0wLHI9SGUoNTAsMjUwKTtyZXR1cm4gaT0+e2xldCBuPWkubG9hZGVkLG89aS5sZW5ndGhDb21wdXRhYmxlP2kudG90YWw6dm9pZCAwLGc9bi10LEU9cihnKSxCPW48PW87dD1uO2xldCBJPXtsb2FkZWQ6bix0b3RhbDpvLHByb2dyZXNzOm8/bi9vOnZvaWQgMCxieXRlczpnLHJhdGU6RXx8dm9pZCAwLGVzdGltYXRlZDpFJiZvJiZCPyhvLW4pL0U6dm9pZCAwLGV2ZW50Oml9O0lbZT8iZG93bmxvYWQiOiJ1cGxvYWQiXT0hMCxBKEkpfX12YXIgUnI9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0PCJ1IixZZT1SciYmZnVuY3Rpb24oQSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQscil7bGV0IGk9QS5kYXRhLG49dy5mcm9tKEEuaGVhZGVycykubm9ybWFsaXplKCkse3Jlc3BvbnNlVHlwZTpvLHdpdGhYU1JGVG9rZW46Z309QSxFO2Z1bmN0aW9uIEIoKXtBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKEUpLEEuc2lnbmFsJiZBLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsRSl9bGV0IEk7aWYoYS5pc0Zvcm1EYXRhKGkpKXtpZih5Lmhhc1N0YW5kYXJkQnJvd3NlckVudnx8eS5oYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnYpbi5zZXRDb250ZW50VHlwZSghMSk7ZWxzZSBpZigoST1uLmdldENvbnRlbnRUeXBlKCkpIT09ITEpe2xldFtRLC4uLnVdPUk/SS5zcGxpdCgiOyIpLm1hcChkPT5kLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pOltdO24uc2V0Q29udGVudFR5cGUoW1F8fCJtdWx0aXBhcnQvZm9ybS1kYXRhIiwuLi51XS5qb2luKCI7ICIpKX19bGV0IHM9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKEEuYXV0aCl7bGV0IFE9QS5hdXRoLnVzZXJuYW1lfHwiIix1PUEuYXV0aC5wYXNzd29yZD91bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoQS5hdXRoLnBhc3N3b3JkKSk6IiI7bi5zZXQoIkF1dGhvcml6YXRpb24iLCJCYXNpYyAiK2J0b2EoUSsiOiIrdSkpfWxldCBjPWVBKEEuYmFzZVVSTCxBLnVybCk7cy5vcGVuKEEubWV0aG9kLnRvVXBwZXJDYXNlKCksWihjLEEucGFyYW1zLEEucGFyYW1zU2VyaWFsaXplciksITApLHMudGltZW91dD1BLnRpbWVvdXQ7ZnVuY3Rpb24gQygpe2lmKCFzKXJldHVybjtsZXQgUT13LmZyb20oImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiBzJiZzLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSxkPXtkYXRhOiFvfHxvPT09InRleHQifHxvPT09Impzb24iP3MucmVzcG9uc2VUZXh0OnMucmVzcG9uc2Usc3RhdHVzOnMuc3RhdHVzLHN0YXR1c1RleHQ6cy5zdGF0dXNUZXh0LGhlYWRlcnM6USxjb25maWc6QSxyZXF1ZXN0OnN9O0tBKGZ1bmN0aW9uKGIpe3QoYiksQigpfSxmdW5jdGlvbihiKXtyKGIpLEIoKX0sZCkscz1udWxsfWlmKCJvbmxvYWRlbmQiaW4gcz9zLm9ubG9hZGVuZD1DOnMub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7IXN8fHMucmVhZHlTdGF0ZSE9PTR8fHMuc3RhdHVzPT09MCYmIShzLnJlc3BvbnNlVVJMJiZzLnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6Iik9PT0wKXx8c2V0VGltZW91dChDKX0scy5vbmFib3J0PWZ1bmN0aW9uKCl7cyYmKHIobmV3IGYoIlJlcXVlc3QgYWJvcnRlZCIsZi5FQ09OTkFCT1JURUQsQSxzKSkscz1udWxsKX0scy5vbmVycm9yPWZ1bmN0aW9uKCl7cihuZXcgZigiTmV0d29yayBFcnJvciIsZi5FUlJfTkVUV09SSyxBLHMpKSxzPW51bGx9LHMub250aW1lb3V0PWZ1bmN0aW9uKCl7bGV0IHU9QS50aW1lb3V0PyJ0aW1lb3V0IG9mICIrQS50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiLGQ9QS50cmFuc2l0aW9uYWx8fGNBO0EudGltZW91dEVycm9yTWVzc2FnZSYmKHU9QS50aW1lb3V0RXJyb3JNZXNzYWdlKSxyKG5ldyBmKHUsZC5jbGFyaWZ5VGltZW91dEVycm9yP2YuRVRJTUVET1VUOmYuRUNPTk5BQk9SVEVELEEscykpLHM9bnVsbH0seS5oYXNTdGFuZGFyZEJyb3dzZXJFbnYmJihnJiZhLmlzRnVuY3Rpb24oZykmJihnPWcoQSkpLGd8fGchPT0hMSYmUGUoYykpKXtsZXQgUT1BLnhzcmZIZWFkZXJOYW1lJiZBLnhzcmZDb29raWVOYW1lJiZ4ZS5yZWFkKEEueHNyZkNvb2tpZU5hbWUpO1EmJm4uc2V0KEEueHNyZkhlYWRlck5hbWUsUSl9aT09PXZvaWQgMCYmbi5zZXRDb250ZW50VHlwZShudWxsKSwic2V0UmVxdWVzdEhlYWRlciJpbiBzJiZhLmZvckVhY2gobi50b0pTT04oKSxmdW5jdGlvbih1LGQpe3Muc2V0UmVxdWVzdEhlYWRlcihkLHUpfSksYS5pc1VuZGVmaW5lZChBLndpdGhDcmVkZW50aWFscyl8fChzLndpdGhDcmVkZW50aWFscz0hIUEud2l0aENyZWRlbnRpYWxzKSxvJiZvIT09Impzb24iJiYocy5yZXNwb25zZVR5cGU9QS5yZXNwb25zZVR5cGUpLHR5cGVvZiBBLm9uRG93bmxvYWRQcm9ncmVzcz09ImZ1bmN0aW9uIiYmcy5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsTWUoQS5vbkRvd25sb2FkUHJvZ3Jlc3MsITApKSx0eXBlb2YgQS5vblVwbG9hZFByb2dyZXNzPT0iZnVuY3Rpb24iJiZzLnVwbG9hZCYmcy51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLE1lKEEub25VcGxvYWRQcm9ncmVzcykpLChBLmNhbmNlbFRva2VufHxBLnNpZ25hbCkmJihFPVE9PntzJiYocighUXx8US50eXBlP25ldyBMKG51bGwsQSxzKTpRKSxzLmFib3J0KCkscz1udWxsKX0sQS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUoRSksQS5zaWduYWwmJihBLnNpZ25hbC5hYm9ydGVkP0UoKTpBLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsRSkpKTtsZXQgbD12QShjKTtpZihsJiZ5LnByb3RvY29scy5pbmRleE9mKGwpPT09LTEpe3IobmV3IGYoIlVuc3VwcG9ydGVkIHByb3RvY29sICIrbCsiOiIsZi5FUlJfQkFEX1JFUVVFU1QsQSkpO3JldHVybn1zLnNlbmQoaXx8bnVsbCl9KX07dmFyIF9BPXtodHRwOlFBLHhocjpZZX07YS5mb3JFYWNoKF9BLChBLGUpPT57aWYoQSl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJuYW1lIix7dmFsdWU6ZX0pfWNhdGNoe31PYmplY3QuZGVmaW5lUHJvcGVydHkoQSwiYWRhcHRlck5hbWUiLHt2YWx1ZTplfSl9fSk7dmFyIHFlPUE9PmAtICR7QX1gLGJyPUE9PmEuaXNGdW5jdGlvbihBKXx8QT09PW51bGx8fEE9PT0hMSxwQT17Z2V0QWRhcHRlcjpBPT57QT1hLmlzQXJyYXkoQSk/QTpbQV07bGV0e2xlbmd0aDplfT1BLHQscixpPXt9O2ZvcihsZXQgbj0wO248ZTtuKyspe3Q9QVtuXTtsZXQgbztpZihyPXQsIWJyKHQpJiYocj1fQVsobz1TdHJpbmcodCkpLnRvTG93ZXJDYXNlKCldLHI9PT12b2lkIDApKXRocm93IG5ldyBmKGBVbmtub3duIGFkYXB0ZXIgJyR7b30nYCk7aWYocilicmVhaztpW298fCIjIituXT1yfWlmKCFyKXtsZXQgbj1PYmplY3QuZW50cmllcyhpKS5tYXAoKFtnLEVdKT0+YGFkYXB0ZXIgJHtnfSBgKyhFPT09ITE/ImlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGVudmlyb25tZW50IjoiaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgYnVpbGQiKSksbz1lP24ubGVuZ3RoPjE/YHNpbmNlIDoKYCtuLm1hcChxZSkuam9pbihgCmApOiIgIitxZShuWzBdKToiYXMgbm8gYWRhcHRlciBzcGVjaWZpZWQiO3Rocm93IG5ldyBmKCJUaGVyZSBpcyBubyBzdWl0YWJsZSBhZGFwdGVyIHRvIGRpc3BhdGNoIHRoZSByZXF1ZXN0ICIrbywiRVJSX05PVF9TVVBQT1JUIil9cmV0dXJuIHJ9LGFkYXB0ZXJzOl9BfTtmdW5jdGlvbiB6QShBKXtpZihBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxBLnNpZ25hbCYmQS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgTChudWxsLEEpfWZ1bmN0aW9uIGRBKEEpe3JldHVybiB6QShBKSxBLmhlYWRlcnM9dy5mcm9tKEEuaGVhZGVycyksQS5kYXRhPSQuY2FsbChBLEEudHJhbnNmb3JtUmVxdWVzdCksWyJwb3N0IiwicHV0IiwicGF0Y2giXS5pbmRleE9mKEEubWV0aG9kKSE9PS0xJiZBLmhlYWRlcnMuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsITEpLHBBLmdldEFkYXB0ZXIoQS5hZGFwdGVyfHxNLmFkYXB0ZXIpKEEpLnRoZW4oZnVuY3Rpb24ocil7cmV0dXJuIHpBKEEpLHIuZGF0YT0kLmNhbGwoQSxBLnRyYW5zZm9ybVJlc3BvbnNlLHIpLHIuaGVhZGVycz13LmZyb20oci5oZWFkZXJzKSxyfSxmdW5jdGlvbihyKXtyZXR1cm4gQUEocil8fCh6QShBKSxyJiZyLnJlc3BvbnNlJiYoci5yZXNwb25zZS5kYXRhPSQuY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2Usci5yZXNwb25zZSksci5yZXNwb25zZS5oZWFkZXJzPXcuZnJvbShyLnJlc3BvbnNlLmhlYWRlcnMpKSksUHJvbWlzZS5yZWplY3Qocil9KX12YXIgS2U9QT0+QSBpbnN0YW5jZW9mIHc/QS50b0pTT04oKTpBO2Z1bmN0aW9uIFUoQSxlKXtlPWV8fHt9O2xldCB0PXt9O2Z1bmN0aW9uIHIoQixJLHMpe3JldHVybiBhLmlzUGxhaW5PYmplY3QoQikmJmEuaXNQbGFpbk9iamVjdChJKT9hLm1lcmdlLmNhbGwoe2Nhc2VsZXNzOnN9LEIsSSk6YS5pc1BsYWluT2JqZWN0KEkpP2EubWVyZ2Uoe30sSSk6YS5pc0FycmF5KEkpP0kuc2xpY2UoKTpJfWZ1bmN0aW9uIGkoQixJLHMpe2lmKGEuaXNVbmRlZmluZWQoSSkpe2lmKCFhLmlzVW5kZWZpbmVkKEIpKXJldHVybiByKHZvaWQgMCxCLHMpfWVsc2UgcmV0dXJuIHIoQixJLHMpfWZ1bmN0aW9uIG4oQixJKXtpZighYS5pc1VuZGVmaW5lZChJKSlyZXR1cm4gcih2b2lkIDAsSSl9ZnVuY3Rpb24gbyhCLEkpe2lmKGEuaXNVbmRlZmluZWQoSSkpe2lmKCFhLmlzVW5kZWZpbmVkKEIpKXJldHVybiByKHZvaWQgMCxCKX1lbHNlIHJldHVybiByKHZvaWQgMCxJKX1mdW5jdGlvbiBnKEIsSSxzKXtpZihzIGluIGUpcmV0dXJuIHIoQixJKTtpZihzIGluIEEpcmV0dXJuIHIodm9pZCAwLEIpfWxldCBFPXt1cmw6bixtZXRob2Q6bixkYXRhOm4sYmFzZVVSTDpvLHRyYW5zZm9ybVJlcXVlc3Q6byx0cmFuc2Zvcm1SZXNwb25zZTpvLHBhcmFtc1NlcmlhbGl6ZXI6byx0aW1lb3V0Om8sdGltZW91dE1lc3NhZ2U6byx3aXRoQ3JlZGVudGlhbHM6byx3aXRoWFNSRlRva2VuOm8sYWRhcHRlcjpvLHJlc3BvbnNlVHlwZTpvLHhzcmZDb29raWVOYW1lOm8seHNyZkhlYWRlck5hbWU6byxvblVwbG9hZFByb2dyZXNzOm8sb25Eb3dubG9hZFByb2dyZXNzOm8sZGVjb21wcmVzczpvLG1heENvbnRlbnRMZW5ndGg6byxtYXhCb2R5TGVuZ3RoOm8sYmVmb3JlUmVkaXJlY3Q6byx0cmFuc3BvcnQ6byxodHRwQWdlbnQ6byxodHRwc0FnZW50Om8sY2FuY2VsVG9rZW46byxzb2NrZXRQYXRoOm8scmVzcG9uc2VFbmNvZGluZzpvLHZhbGlkYXRlU3RhdHVzOmcsaGVhZGVyczooQixJKT0+aShLZShCKSxLZShJKSwhMCl9O3JldHVybiBhLmZvckVhY2goT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxBLGUpKSxmdW5jdGlvbihJKXtsZXQgcz1FW0ldfHxpLGM9cyhBW0ldLGVbSV0sSSk7YS5pc1VuZGVmaW5lZChjKSYmcyE9PWd8fCh0W0ldPWMpfSksdH12YXIgaEE9IjEuNi4yIjt2YXIgVkE9e307WyJvYmplY3QiLCJib29sZWFuIiwibnVtYmVyIiwiZnVuY3Rpb24iLCJzdHJpbmciLCJzeW1ib2wiXS5mb3JFYWNoKChBLGUpPT57VkFbQV09ZnVuY3Rpb24ocil7cmV0dXJuIHR5cGVvZiByPT09QXx8ImEiKyhlPDE/Im4gIjoiICIpK0F9fSk7dmFyIFdlPXt9O1ZBLnRyYW5zaXRpb25hbD1mdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gaShuLG8pe3JldHVybiJbQXhpb3MgdiIraEErIl0gVHJhbnNpdGlvbmFsIG9wdGlvbiAnIituKyInIitvKyhyPyIuICIrcjoiIil9cmV0dXJuKG4sbyxnKT0+e2lmKGU9PT0hMSl0aHJvdyBuZXcgZihpKG8sIiBoYXMgYmVlbiByZW1vdmVkIisodD8iIGluICIrdDoiIikpLGYuRVJSX0RFUFJFQ0FURUQpO3JldHVybiB0JiYhV2Vbb10mJihXZVtvXT0hMCxjb25zb2xlLndhcm4oaShvLCIgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2Iit0KyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLGU/ZShuLG8sZyk6ITB9fTtmdW5jdGlvbiBrcihBLGUsdCl7aWYodHlwZW9mIEEhPSJvYmplY3QiKXRocm93IG5ldyBmKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0IixmLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtsZXQgcj1PYmplY3Qua2V5cyhBKSxpPXIubGVuZ3RoO2Zvcig7aS0tID4wOyl7bGV0IG49cltpXSxvPWVbbl07aWYobyl7bGV0IGc9QVtuXSxFPWc9PT12b2lkIDB8fG8oZyxuLEEpO2lmKEUhPT0hMCl0aHJvdyBuZXcgZigib3B0aW9uICIrbisiIG11c3QgYmUgIitFLGYuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2NvbnRpbnVlfWlmKHQhPT0hMCl0aHJvdyBuZXcgZigiVW5rbm93biBvcHRpb24gIituLGYuRVJSX0JBRF9PUFRJT04pfX12YXIgbUE9e2Fzc2VydE9wdGlvbnM6a3IsdmFsaWRhdG9yczpWQX07dmFyIE89bUEudmFsaWRhdG9ycyxxPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuZGVmYXVsdHM9ZSx0aGlzLmludGVyY2VwdG9ycz17cmVxdWVzdDpuZXcgUEEscmVzcG9uc2U6bmV3IFBBfX1yZXF1ZXN0KGUsdCl7dHlwZW9mIGU9PSJzdHJpbmciPyh0PXR8fHt9LHQudXJsPWUpOnQ9ZXx8e30sdD1VKHRoaXMuZGVmYXVsdHMsdCk7bGV0e3RyYW5zaXRpb25hbDpyLHBhcmFtc1NlcmlhbGl6ZXI6aSxoZWFkZXJzOm59PXQ7ciE9PXZvaWQgMCYmbUEuYXNzZXJ0T3B0aW9ucyhyLHtzaWxlbnRKU09OUGFyc2luZzpPLnRyYW5zaXRpb25hbChPLmJvb2xlYW4pLGZvcmNlZEpTT05QYXJzaW5nOk8udHJhbnNpdGlvbmFsKE8uYm9vbGVhbiksY2xhcmlmeVRpbWVvdXRFcnJvcjpPLnRyYW5zaXRpb25hbChPLmJvb2xlYW4pfSwhMSksaSE9bnVsbCYmKGEuaXNGdW5jdGlvbihpKT90LnBhcmFtc1NlcmlhbGl6ZXI9e3NlcmlhbGl6ZTppfTptQS5hc3NlcnRPcHRpb25zKGkse2VuY29kZTpPLmZ1bmN0aW9uLHNlcmlhbGl6ZTpPLmZ1bmN0aW9ufSwhMCkpLHQubWV0aG9kPSh0Lm1ldGhvZHx8dGhpcy5kZWZhdWx0cy5tZXRob2R8fCJnZXQiKS50b0xvd2VyQ2FzZSgpO2xldCBvPW4mJmEubWVyZ2Uobi5jb21tb24sblt0Lm1ldGhvZF0pO24mJmEuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSxsPT57ZGVsZXRlIG5bbF19KSx0LmhlYWRlcnM9dy5jb25jYXQobyxuKTtsZXQgZz1bXSxFPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbihRKXt0eXBlb2YgUS5ydW5XaGVuPT0iZnVuY3Rpb24iJiZRLnJ1bldoZW4odCk9PT0hMXx8KEU9RSYmUS5zeW5jaHJvbm91cyxnLnVuc2hpZnQoUS5mdWxmaWxsZWQsUS5yZWplY3RlZCkpfSk7bGV0IEI9W107dGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihRKXtCLnB1c2goUS5mdWxmaWxsZWQsUS5yZWplY3RlZCl9KTtsZXQgSSxzPTAsYztpZighRSl7bGV0IGw9W2RBLmJpbmQodGhpcyksdm9pZCAwXTtmb3IobC51bnNoaWZ0LmFwcGx5KGwsZyksbC5wdXNoLmFwcGx5KGwsQiksYz1sLmxlbmd0aCxJPVByb21pc2UucmVzb2x2ZSh0KTtzPGM7KUk9SS50aGVuKGxbcysrXSxsW3MrK10pO3JldHVybiBJfWM9Zy5sZW5ndGg7bGV0IEM9dDtmb3Iocz0wO3M8Yzspe2xldCBsPWdbcysrXSxRPWdbcysrXTt0cnl7Qz1sKEMpfWNhdGNoKHUpe1EuY2FsbCh0aGlzLHUpO2JyZWFrfX10cnl7ST1kQS5jYWxsKHRoaXMsQyl9Y2F0Y2gobCl7cmV0dXJuIFByb21pc2UucmVqZWN0KGwpfWZvcihzPTAsYz1CLmxlbmd0aDtzPGM7KUk9SS50aGVuKEJbcysrXSxCW3MrK10pO3JldHVybiBJfWdldFVyaShlKXtlPVUodGhpcy5kZWZhdWx0cyxlKTtsZXQgdD1lQShlLmJhc2VVUkwsZS51cmwpO3JldHVybiBaKHQsZS5wYXJhbXMsZS5wYXJhbXNTZXJpYWxpemVyKX19O2EuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJvcHRpb25zIl0sZnVuY3Rpb24oZSl7cS5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KFUocnx8e30se21ldGhvZDplLHVybDp0LGRhdGE6KHJ8fHt9KS5kYXRhfSkpfX0pO2EuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocil7cmV0dXJuIGZ1bmN0aW9uKG4sbyxnKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KFUoZ3x8e30se21ldGhvZDplLGhlYWRlcnM6cj97IkNvbnRlbnQtVHlwZSI6Im11bHRpcGFydC9mb3JtLWRhdGEifTp7fSx1cmw6bixkYXRhOm99KSl9fXEucHJvdG90eXBlW2VdPXQoKSxxLnByb3RvdHlwZVtlKyJGb3JtIl09dCghMCl9KTt2YXIgdEE9cTt2YXIgWkE9Y2xhc3MgQXtjb25zdHJ1Y3RvcihlKXtpZih0eXBlb2YgZSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJleGVjdXRvciBtdXN0IGJlIGEgZnVuY3Rpb24uIik7bGV0IHQ7dGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKG4pe3Q9bn0pO2xldCByPXRoaXM7dGhpcy5wcm9taXNlLnRoZW4oaT0+e2lmKCFyLl9saXN0ZW5lcnMpcmV0dXJuO2xldCBuPXIuX2xpc3RlbmVycy5sZW5ndGg7Zm9yKDtuLS0gPjA7KXIuX2xpc3RlbmVyc1tuXShpKTtyLl9saXN0ZW5lcnM9bnVsbH0pLHRoaXMucHJvbWlzZS50aGVuPWk9PntsZXQgbixvPW5ldyBQcm9taXNlKGc9PntyLnN1YnNjcmliZShnKSxuPWd9KS50aGVuKGkpO3JldHVybiBvLmNhbmNlbD1mdW5jdGlvbigpe3IudW5zdWJzY3JpYmUobil9LG99LGUoZnVuY3Rpb24obixvLGcpe3IucmVhc29ufHwoci5yZWFzb249bmV3IEwobixvLGcpLHQoci5yZWFzb24pKX0pfXRocm93SWZSZXF1ZXN0ZWQoKXtpZih0aGlzLnJlYXNvbil0aHJvdyB0aGlzLnJlYXNvbn1zdWJzY3JpYmUoZSl7aWYodGhpcy5yZWFzb24pe2UodGhpcy5yZWFzb24pO3JldHVybn10aGlzLl9saXN0ZW5lcnM/dGhpcy5fbGlzdGVuZXJzLnB1c2goZSk6dGhpcy5fbGlzdGVuZXJzPVtlXX11bnN1YnNjcmliZShlKXtpZighdGhpcy5fbGlzdGVuZXJzKXJldHVybjtsZXQgdD10aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihlKTt0IT09LTEmJnRoaXMuX2xpc3RlbmVycy5zcGxpY2UodCwxKX1zdGF0aWMgc291cmNlKCl7bGV0IGU7cmV0dXJue3Rva2VuOm5ldyBBKGZ1bmN0aW9uKGkpe2U9aX0pLGNhbmNlbDplfX19LGplPVpBO2Z1bmN0aW9uIFhBKEEpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gQS5hcHBseShudWxsLHQpfX1mdW5jdGlvbiAkQShBKXtyZXR1cm4gYS5pc09iamVjdChBKSYmQS5pc0F4aW9zRXJyb3I9PT0hMH12YXIgQWU9e0NvbnRpbnVlOjEwMCxTd2l0Y2hpbmdQcm90b2NvbHM6MTAxLFByb2Nlc3Npbmc6MTAyLEVhcmx5SGludHM6MTAzLE9rOjIwMCxDcmVhdGVkOjIwMSxBY2NlcHRlZDoyMDIsTm9uQXV0aG9yaXRhdGl2ZUluZm9ybWF0aW9uOjIwMyxOb0NvbnRlbnQ6MjA0LFJlc2V0Q29udGVudDoyMDUsUGFydGlhbENvbnRlbnQ6MjA2LE11bHRpU3RhdHVzOjIwNyxBbHJlYWR5UmVwb3J0ZWQ6MjA4LEltVXNlZDoyMjYsTXVsdGlwbGVDaG9pY2VzOjMwMCxNb3ZlZFBlcm1hbmVudGx5OjMwMSxGb3VuZDozMDIsU2VlT3RoZXI6MzAzLE5vdE1vZGlmaWVkOjMwNCxVc2VQcm94eTozMDUsVW51c2VkOjMwNixUZW1wb3JhcnlSZWRpcmVjdDozMDcsUGVybWFuZW50UmVkaXJlY3Q6MzA4LEJhZFJlcXVlc3Q6NDAwLFVuYXV0aG9yaXplZDo0MDEsUGF5bWVudFJlcXVpcmVkOjQwMixGb3JiaWRkZW46NDAzLE5vdEZvdW5kOjQwNCxNZXRob2ROb3RBbGxvd2VkOjQwNSxOb3RBY2NlcHRhYmxlOjQwNixQcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6NDA3LFJlcXVlc3RUaW1lb3V0OjQwOCxDb25mbGljdDo0MDksR29uZTo0MTAsTGVuZ3RoUmVxdWlyZWQ6NDExLFByZWNvbmRpdGlvbkZhaWxlZDo0MTIsUGF5bG9hZFRvb0xhcmdlOjQxMyxVcmlUb29Mb25nOjQxNCxVbnN1cHBvcnRlZE1lZGlhVHlwZTo0MTUsUmFuZ2VOb3RTYXRpc2ZpYWJsZTo0MTYsRXhwZWN0YXRpb25GYWlsZWQ6NDE3LEltQVRlYXBvdDo0MTgsTWlzZGlyZWN0ZWRSZXF1ZXN0OjQyMSxVbnByb2Nlc3NhYmxlRW50aXR5OjQyMixMb2NrZWQ6NDIzLEZhaWxlZERlcGVuZGVuY3k6NDI0LFRvb0Vhcmx5OjQyNSxVcGdyYWRlUmVxdWlyZWQ6NDI2LFByZWNvbmRpdGlvblJlcXVpcmVkOjQyOCxUb29NYW55UmVxdWVzdHM6NDI5LFJlcXVlc3RIZWFkZXJGaWVsZHNUb29MYXJnZTo0MzEsVW5hdmFpbGFibGVGb3JMZWdhbFJlYXNvbnM6NDUxLEludGVybmFsU2VydmVyRXJyb3I6NTAwLE5vdEltcGxlbWVudGVkOjUwMSxCYWRHYXRld2F5OjUwMixTZXJ2aWNlVW5hdmFpbGFibGU6NTAzLEdhdGV3YXlUaW1lb3V0OjUwNCxIdHRwVmVyc2lvbk5vdFN1cHBvcnRlZDo1MDUsVmFyaWFudEFsc29OZWdvdGlhdGVzOjUwNixJbnN1ZmZpY2llbnRTdG9yYWdlOjUwNyxMb29wRGV0ZWN0ZWQ6NTA4LE5vdEV4dGVuZGVkOjUxMCxOZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZDo1MTF9O09iamVjdC5lbnRyaWVzKEFlKS5mb3JFYWNoKChbQSxlXSk9PntBZVtlXT1BfSk7dmFyIHZlPUFlO2Z1bmN0aW9uIF9lKEEpe2xldCBlPW5ldyB0QShBKSx0PV8odEEucHJvdG90eXBlLnJlcXVlc3QsZSk7cmV0dXJuIGEuZXh0ZW5kKHQsdEEucHJvdG90eXBlLGUse2FsbE93bktleXM6ITB9KSxhLmV4dGVuZCh0LGUsbnVsbCx7YWxsT3duS2V5czohMH0pLHQuY3JlYXRlPWZ1bmN0aW9uKGkpe3JldHVybiBfZShVKEEsaSkpfSx0fXZhciBoPV9lKE0pO2guQXhpb3M9dEE7aC5DYW5jZWxlZEVycm9yPUw7aC5DYW5jZWxUb2tlbj1qZTtoLmlzQ2FuY2VsPUFBO2guVkVSU0lPTj1oQTtoLnRvRm9ybURhdGE9RztoLkF4aW9zRXJyb3I9ZjtoLkNhbmNlbD1oLkNhbmNlbGVkRXJyb3I7aC5hbGw9ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKGUpfTtoLnNwcmVhZD1YQTtoLmlzQXhpb3NFcnJvcj0kQTtoLm1lcmdlQ29uZmlnPVU7aC5BeGlvc0hlYWRlcnM9dztoLmZvcm1Ub0pTT049QT0+dUEoYS5pc0hUTUxGb3JtKEEpP25ldyBGb3JtRGF0YShBKTpBKTtoLmdldEFkYXB0ZXI9cEEuZ2V0QWRhcHRlcjtoLkh0dHBTdGF0dXNDb2RlPXZlO2guZGVmYXVsdD1oO3ZhciBLPWg7dmFye0F4aW9zOldvLEF4aW9zRXJyb3I6am8sQ2FuY2VsZWRFcnJvcjp2byxpc0NhbmNlbDpfbyxDYW5jZWxUb2tlbjp6byxWRVJTSU9OOlZvLGFsbDpabyxDYW5jZWw6WG8saXNBeGlvc0Vycm9yOiRvLHNwcmVhZDpBcyx0b0Zvcm1EYXRhOmVzLEF4aW9zSGVhZGVyczp0cyxIdHRwU3RhdHVzQ29kZTpycyxmb3JtVG9KU09OOmlzLGdldEFkYXB0ZXI6bnMsbWVyZ2VDb25maWc6b3N9PUs7YXN5bmMgZnVuY3Rpb24gVXIoQSxlKXtsZXQgdD1BLHI9bnVsbDtpZih0PT09bnVsbClyPW5ldyBXb3JrZXIobmV3IFVSTCgiLi93ZWItd29ya2Vycy9pdGstd2FzbS1waXBlbGluZS53b3JrZXIuanMiLGltcG9ydC5tZXRhLnVybCkse3R5cGU6Im1vZHVsZSJ9KTtlbHNlIGlmKHQuc3RhcnRzV2l0aCgiaHR0cCIpKXtsZXQgaT1hd2FpdCBLLmdldCh0LHtyZXNwb25zZVR5cGU6ImJsb2IiLHBhcmFtczplfSksbj1VUkwuY3JlYXRlT2JqZWN0VVJMKGkuZGF0YSk7cj1uZXcgV29ya2VyKG4se3R5cGU6Im1vZHVsZSJ9KX1lbHNlIHI9bmV3IFdvcmtlcih0LHt0eXBlOiJtb2R1bGUifSk7cmV0dXJuIHJ9dmFyIHJBPVVyO2Z1bmN0aW9uIHplKEEpe2xldCBlPU5BKEEpLHQ9QTtyZXR1cm4gdC50ZXJtaW5hdGVkPSExLHQud29ya2VyUHJveHk9ZSx0Lm9yaWdpbmFsVGVybWluYXRlPXQudGVybWluYXRlLHQudGVybWluYXRlPSgpPT57dC50ZXJtaW5hdGVkPSEwLHQud29ya2VyUHJveHlbVUFdKCksdC5vcmlnaW5hbFRlcm1pbmF0ZSgpfSx7d29ya2VyUHJveHk6ZSx3b3JrZXI6dH19YXN5bmMgZnVuY3Rpb24gTnIoQSxlLHQpe2xldCByO2lmKEEhPW51bGwpe2xldCBuPUE7cmV0dXJuIG4ud29ya2VyUHJveHkhPT12b2lkIDA/KHI9bi53b3JrZXJQcm94eSx7d29ya2VyUHJveHk6cix3b3JrZXI6bn0pOnplKEEpfWxldCBpPWF3YWl0IHJBKGUsdCk7cmV0dXJuIHplKGkpfXZhciBWZT1Ocjthc3luYyBmdW5jdGlvbiBHcihBLGUsdCl7bGV0IHI9InVua25vd24iO3R5cGVvZiBBIT0ic3RyaW5nIj9yPUEuaHJlZjpBLnN0YXJ0c1dpdGgoImh0dHAiKT9yPUE6cj10eXBlb2YgZTwidSI/YCR7ZX0vJHtBfWA6QSxyLmVuZHNXaXRoKCIuanMiKSYmKHI9ci5zdWJzdHJpbmcoMCxyLmxlbmd0aC0zKSksci5lbmRzV2l0aCgiLndhc20iKSYmKHI9ci5zdWJzdHJpbmcoMCxyLmxlbmd0aC01KSk7bGV0IGk9YCR7cn0ud2FzbWAsbz0oYXdhaXQgSy5nZXQoaSx7cmVzcG9uc2VUeXBlOiJhcnJheWJ1ZmZlciIscGFyYW1zOnR9KSkuZGF0YTtyZXR1cm4oYXdhaXQgaW1wb3J0KGAke3J9LmpzYCkpLmRlZmF1bHQoe3dhc21CaW5hcnk6b30pfXZhciBaZT1Hcjt2YXIgWGU9YXN5bmMoKT0+V2ViQXNzZW1ibHkudmFsaWRhdGUobmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsNSwxLDk2LDAsMSwxMjMsMywyLDEsMCwxMCwxMCwxLDgsMCw2NSwwLDI1MywxNSwyNTMsOTgsMTFdKSk7dmFyIGV0PXR5cGVvZiBnbG9iYWxUaGlzLlNoYXJlZEFycmF5QnVmZmVyPT0iZnVuY3Rpb24iLCRlPW5ldyBUZXh0RW5jb2RlcixBdD1uZXcgVGV4dERlY29kZXIoInV0Zi04Iik7ZnVuY3Rpb24gTHIoQSxlKXtsZXQgdD17ZmxhZ3M6InIiLGVuY29kaW5nOiJiaW5hcnkifSxyPUEuZnNfb3BlbihlLHQuZmxhZ3MpLG49QS5mc19zdGF0KGUpLnNpemUsbz1udWxsO2V0P289bmV3IFNoYXJlZEFycmF5QnVmZmVyKG4pOm89bmV3IEFycmF5QnVmZmVyKG4pO2xldCBnPW5ldyBVaW50OEFycmF5KG8pO3JldHVybiBBLmZzX3JlYWQocixnLDAsbiwwKSxBLmZzX2Nsb3NlKHIpLGd9ZnVuY3Rpb24gdHQoQSxlLHQpe2xldCByPW51bGw7ZXQ/cj1uZXcgU2hhcmVkQXJyYXlCdWZmZXIodCk6cj1uZXcgQXJyYXlCdWZmZXIodCk7bGV0IGk9bmV3IFVpbnQ4QXJyYXkociksbj1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsZSx0KTtyZXR1cm4gaS5zZXQobiksaX1mdW5jdGlvbiBtKEEsZSx0LHIpe2xldCBpPTA7cmV0dXJuIGUhPT1udWxsJiYoaT1BLmNjYWxsKCJpdGtfd2FzbV9pbnB1dF9hcnJheV9hbGxvYyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCx0LHIsZS5idWZmZXIuYnl0ZUxlbmd0aF0pLEEuSEVBUFU4LnNldChuZXcgVWludDhBcnJheShlLmJ1ZmZlciksaSkpLGl9ZnVuY3Rpb24gVyhBLGUsdCl7bGV0IHI9SlNPTi5zdHJpbmdpZnkoZSksaT1BLmNjYWxsKCJpdGtfd2FzbV9pbnB1dF9qc29uX2FsbG9jIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHQsci5sZW5ndGhdKTtBLndyaXRlQXNjaWlUb01lbW9yeShyLGksITEpfWZ1bmN0aW9uIFMoQSxlLHQscil7bGV0IGk9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsZSx0XSksbj1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxlLHRdKSxvPXR0KEEsaSxuKTtyZXR1cm4gTihyLG8uYnVmZmVyKX1mdW5jdGlvbiBlZShBLGUpe2xldCB0PUEuY2NhbGwoIml0a193YXNtX291dHB1dF9qc29uX2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIl0sWzAsZV0pLHI9QS5Bc2NpaVRvU3RyaW5nKHQpO3JldHVybiBKU09OLnBhcnNlKHIpfWZ1bmN0aW9uIE9yKEEsZSx0LHIpe3IhPW51bGwmJnIubGVuZ3RoPjAmJnIuZm9yRWFjaChmdW5jdGlvbihCLEkpe3N3aXRjaChCLnR5cGUpe2Nhc2UgcC5UZXh0U3RyZWFtOntsZXQgcz0kZS5lbmNvZGUoQi5kYXRhLmRhdGEpLGM9bShBLHMsSSwwKSxDPXtzaXplOnMuYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2N9YH07VyhBLEMsSSk7YnJlYWt9Y2FzZSBwLkpzb25Db21wYXRpYmxlOntsZXQgcz0kZS5lbmNvZGUoSlNPTi5zdHJpbmdpZnkoQi5kYXRhKSksYz1tKEEscyxJLDApLEM9e3NpemU6cy5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gfTtXKEEsQyxJKTticmVha31jYXNlIHAuQmluYXJ5U3RyZWFtOntsZXQgcz1CLmRhdGEuZGF0YSxjPW0oQSxzLEksMCksQz17c2l6ZTpzLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWB9O1coQSxDLEkpO2JyZWFrfWNhc2UgcC5UZXh0RmlsZTp7QS5mc193cml0ZUZpbGUoQi5kYXRhLnBhdGgsQi5kYXRhLmRhdGEpO2JyZWFrfWNhc2UgcC5CaW5hcnlGaWxlOntBLmZzX3dyaXRlRmlsZShCLmRhdGEucGF0aCxCLmRhdGEuZGF0YSk7YnJlYWt9Y2FzZSBwLkltYWdlOntsZXQgcz1CLmRhdGEsYz1tKEEscy5kYXRhLEksMCksQz1tKEEscy5kaXJlY3Rpb24sSSwxKSxsPXR5cGVvZiBzLm1ldGFkYXRhPy5lbnRyaWVzPCJ1Ij9KU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKHMubWV0YWRhdGEuZW50cmllcygpKSk6IltdIixRPXtpbWFnZVR5cGU6cy5pbWFnZVR5cGUsbmFtZTpzLm5hbWUsb3JpZ2luOnMub3JpZ2luLHNwYWNpbmc6cy5zcGFjaW5nLGRpcmVjdGlvbjpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0N9YCxzaXplOnMuc2l6ZSxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gLG1ldGFkYXRhOmx9O1coQSxRLEkpO2JyZWFrfWNhc2UgcC5NZXNoOntsZXQgcz1CLmRhdGEsYz1tKEEscy5wb2ludHMsSSwwKSxDPW0oQSxzLmNlbGxzLEksMSksbD1tKEEscy5wb2ludERhdGEsSSwyKSxRPW0oQSxzLmNlbGxEYXRhLEksMyksdT17bWVzaFR5cGU6cy5tZXNoVHlwZSxuYW1lOnMubmFtZSxudW1iZXJPZlBvaW50czpzLm51bWJlck9mUG9pbnRzLHBvaW50czpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2N9YCxudW1iZXJPZkNlbGxzOnMubnVtYmVyT2ZDZWxscyxjZWxsczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0N9YCxjZWxsQnVmZmVyU2l6ZTpzLmNlbGxCdWZmZXJTaXplLG51bWJlck9mUG9pbnRQaXhlbHM6cy5udW1iZXJPZlBvaW50UGl4ZWxzLHBvaW50RGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2x9YCxudW1iZXJPZkNlbGxQaXhlbHM6cy5udW1iZXJPZkNlbGxQaXhlbHMsY2VsbERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWB9O1coQSx1LEkpO2JyZWFrfWNhc2UgcC5Qb2x5RGF0YTp7bGV0IHM9Qi5kYXRhLGM9bShBLHMucG9pbnRzLEksMCksQz1tKEEscy52ZXJ0aWNlcyxJLDEpLGw9bShBLHMubGluZXMsSSwyKSxRPW0oQSxzLnBvbHlnb25zLEksMyksdT1tKEEscy50cmlhbmdsZVN0cmlwcyxJLDQpLGQ9bShBLHMucG9pbnREYXRhLEksNSksUj1tKEEscy5wb2ludERhdGEsSSw2KSxiPXtwb2x5RGF0YVR5cGU6cy5wb2x5RGF0YVR5cGUsbmFtZTpzLm5hbWUsbnVtYmVyT2ZQb2ludHM6cy5udW1iZXJPZlBvaW50cyxwb2ludHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWAsdmVydGljZXNCdWZmZXJTaXplOnMudmVydGljZXNCdWZmZXJTaXplLHZlcnRpY2VzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Q31gLGxpbmVzQnVmZmVyU2l6ZTpzLmxpbmVzQnVmZmVyU2l6ZSxsaW5lczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2x9YCxwb2x5Z29uc0J1ZmZlclNpemU6cy5wb2x5Z29uc0J1ZmZlclNpemUscG9seWdvbnM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWAsdHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplOnMudHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplLHRyaWFuZ2xlU3RyaXBzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7dX1gLG51bWJlck9mUG9pbnRQaXhlbHM6cy5udW1iZXJPZlBvaW50UGl4ZWxzLHBvaW50RGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2R9YCxudW1iZXJPZkNlbGxQaXhlbHM6cy5udW1iZXJPZkNlbGxQaXhlbHMsY2VsbERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtSfWB9O1coQSxiLEkpO2JyZWFrfWRlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuc3VwcG9ydGVkIGlucHV0IEludGVyZmFjZVR5cGUiKX19KSxBLnJlc2V0TW9kdWxlU3Rkb3V0KCksQS5yZXNldE1vZHVsZVN0ZGVycigpO2xldCBpPUEuc3RhY2tTYXZlKCksbj0wO3RyeXtuPUEuY2FsbE1haW4oZS5zbGljZSgpKX1jYXRjaChCKXt0aHJvdyB0eXBlb2YgQj09Im51bWJlciImJihjb25zb2xlLmxvZygiRXhjZXB0aW9uIHdoaWxlIHJ1bm5pbmcgcGlwZWxpbmU6IiksY29uc29sZS5sb2coInN0ZG91dDoiLEEuZ2V0TW9kdWxlU3Rkb3V0KCkpLGNvbnNvbGUuZXJyb3IoInN0ZGVycjoiLEEuZ2V0TW9kdWxlU3RkZXJyKCkpLHR5cGVvZiBBLmdldEV4Y2VwdGlvbk1lc3NhZ2U8InUiP2NvbnNvbGUuZXJyb3IoImV4Y2VwdGlvbjoiLEEuZ2V0RXhjZXB0aW9uTWVzc2FnZShCKSk6Y29uc29sZS5lcnJvcigiQnVpbGQgbW9kdWxlIGluIERlYnVnIG1vZGUgZm9yIGV4Y2VwdGlvbiBtZXNzYWdlIGluZm9ybWF0aW9uLiIpKSxCfWZpbmFsbHl7QS5zdGFja1Jlc3RvcmUoaSl9bGV0IG89QS5nZXRNb2R1bGVTdGRvdXQoKSxnPUEuZ2V0TW9kdWxlU3RkZXJyKCksRT1bXTtyZXR1cm4gdCE9bnVsbCYmdC5sZW5ndGg+MCYmbj09PTAmJnQuZm9yRWFjaChmdW5jdGlvbihCLEkpe2xldCBzPW51bGw7c3dpdGNoKEIudHlwZSl7Y2FzZSBwLlRleHRTdHJlYW06e2xldCBDPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEksMF0pLGw9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsSSwwXSksUT1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsQyxsKTtzPXtkYXRhOkF0LmRlY29kZShRKX07YnJlYWt9Y2FzZSBwLkpzb25Db21wYXRpYmxlOntsZXQgQz1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxJLDBdKSxsPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEksMF0pLFE9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLEMsbCk7cz1KU09OLnBhcnNlKEF0LmRlY29kZShRKSk7YnJlYWt9Y2FzZSBwLkJpbmFyeVN0cmVhbTp7bGV0IEM9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsSSwwXSksbD1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxJLDBdKTtzPXtkYXRhOnR0KEEsQyxsKX07YnJlYWt9Y2FzZSBwLlRleHRGaWxlOntzPXtwYXRoOkIuZGF0YS5wYXRoLGRhdGE6QS5mc19yZWFkRmlsZShCLmRhdGEucGF0aCx7ZW5jb2Rpbmc6InV0ZjgifSl9O2JyZWFrfWNhc2UgcC5CaW5hcnlGaWxlOntzPXtwYXRoOkIuZGF0YS5wYXRoLGRhdGE6THIoQSxCLmRhdGEucGF0aCl9O2JyZWFrfWNhc2UgcC5JbWFnZTp7bGV0IEM9ZWUoQSxJKTtDLmRhdGE9UyhBLEksMCxDLmltYWdlVHlwZS5jb21wb25lbnRUeXBlKSxDLmRpcmVjdGlvbj1TKEEsSSwxLEouRmxvYXQ2NCksQy5tZXRhZGF0YT1uZXcgTWFwKEMubWV0YWRhdGEpLHM9QzticmVha31jYXNlIHAuTWVzaDp7bGV0IEM9ZWUoQSxJKTtDLm51bWJlck9mUG9pbnRzPjA/Qy5wb2ludHM9UyhBLEksMCxDLm1lc2hUeXBlLnBvaW50Q29tcG9uZW50VHlwZSk6Qy5wb2ludHM9TihDLm1lc2hUeXBlLnBvaW50Q29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEMubnVtYmVyT2ZDZWxscz4wP0MuY2VsbHM9UyhBLEksMSxDLm1lc2hUeXBlLmNlbGxDb21wb25lbnRUeXBlKTpDLmNlbGxzPU4oQy5tZXNoVHlwZS5jZWxsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEMubnVtYmVyT2ZQb2ludFBpeGVscz4wP0MucG9pbnREYXRhPVMoQSxJLDIsQy5tZXNoVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSk6Qy5wb2ludERhdGE9TihDLm1lc2hUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksQy5udW1iZXJPZkNlbGxQaXhlbHM+MD9DLmNlbGxEYXRhPVMoQSxJLDMsQy5tZXNoVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlKTpDLmNlbGxEYXRhPU4oQy5tZXNoVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSkscz1DO2JyZWFrfWNhc2UgcC5Qb2x5RGF0YTp7bGV0IEM9ZWUoQSxJKTtDLm51bWJlck9mUG9pbnRzPjA/Qy5wb2ludHM9UyhBLEksMCxKLkZsb2F0MzIpOkMucG9pbnRzPW5ldyBGbG9hdDMyQXJyYXksQy52ZXJ0aWNlc0J1ZmZlclNpemU+MD9DLnZlcnRpY2VzPVMoQSxJLDEsRC5VSW50MzIpOkMudmVydGljZXM9bmV3IFVpbnQzMkFycmF5LEMubGluZXNCdWZmZXJTaXplPjA/Qy5saW5lcz1TKEEsSSwyLEQuVUludDMyKTpDLmxpbmVzPW5ldyBVaW50MzJBcnJheSxDLnBvbHlnb25zQnVmZmVyU2l6ZT4wP0MucG9seWdvbnM9UyhBLEksMyxELlVJbnQzMik6Qy5wb2x5Z29ucz1uZXcgVWludDMyQXJyYXksQy50cmlhbmdsZVN0cmlwc0J1ZmZlclNpemU+MD9DLnRyaWFuZ2xlU3RyaXBzPVMoQSxJLDQsRC5VSW50MzIpOkMudHJpYW5nbGVTdHJpcHM9bmV3IFVpbnQzMkFycmF5LEMubnVtYmVyT2ZQb2ludFBpeGVscz4wP0MucG9pbnREYXRhPVMoQSxJLDUsQy5wb2x5RGF0YVR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUpOkMucG9pbnREYXRhPU4oQy5wb2x5RGF0YVR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxDLm51bWJlck9mQ2VsbFBpeGVscz4wP0MuY2VsbERhdGE9UyhBLEksNixDLnBvbHlEYXRhVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlKTpDLmNlbGxEYXRhPU4oQy5wb2x5RGF0YVR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLHM9QzticmVha31kZWZhdWx0OnRocm93IEVycm9yKCJVbnN1cHBvcnRlZCBvdXRwdXQgSW50ZXJmYWNlVHlwZSIpfWxldCBjPXt0eXBlOkIudHlwZSxkYXRhOnN9O0UucHVzaChjKX0pLHtyZXR1cm5WYWx1ZTpuLHN0ZG91dDpvLHN0ZGVycjpnLG91dHB1dHM6RX19dmFyIHJ0PU9yO3ZhciBUcj10eXBlb2YgZ2xvYmFsVGhpcy5TaGFyZWRBcnJheUJ1ZmZlcjwidSI7ZnVuY3Rpb24gSnIoQSxlKXtpZihBPT1udWxsKXJldHVybltdO2xldCB0PVtdO2ZvcihsZXQgcj0wO3I8QS5sZW5ndGg7cisrKXtsZXQgaT14cihBW3JdLGUpO2khPT1udWxsJiZ0LnB1c2goaSl9cmV0dXJuIHR9ZnVuY3Rpb24geHIoQSxlKXtpZihBPT1udWxsKXJldHVybiBudWxsO2xldCB0PW51bGw7cmV0dXJuIEEuYnVmZmVyIT09dm9pZCAwP3Q9QS5idWZmZXI6QS5ieXRlTGVuZ3RoIT09dm9pZCAwJiYodD1BKSxUciYmdCBpbnN0YW5jZW9mIFNoYXJlZEFycmF5QnVmZmVyP251bGw6ZT90OnQuc2xpY2UoMCl9dmFyIGl0PUpyO2Z1bmN0aW9uIFByKEEpe3JldHVybltBLmRhdGEsQS5kaXJlY3Rpb25dfXZhciBudD1QcjtmdW5jdGlvbiBIcihBKXtyZXR1cm5bQS5wb2ludHMsQS5wb2ludERhdGEsQS5jZWxscyxBLmNlbGxEYXRhXX12YXIgb3Q9SHI7ZnVuY3Rpb24gTXIoQSl7cmV0dXJuW0EucG9pbnRzLEEudmVydGljZXMsQS5saW5lcyxBLnBvbHlnb25zLEEudHJpYW5nbGVTdHJpcHMsQS5wb2ludERhdGEsQS5jZWxsRGF0YV19dmFyIHN0PU1yO3ZhciBZcjtmdW5jdGlvbiB5QSgpe3JldHVybiBZcn12YXIgcXI7ZnVuY3Rpb24gYXQoKXtyZXR1cm4gcXJ9dmFyIEtyO2Z1bmN0aW9uIHdBKCl7cmV0dXJuIEtyfXZhciB0ZT1uZXcgTWFwO2Z1bmN0aW9uIFdyKCl7bGV0IEE9d0EoKTtyZXR1cm4gdHlwZW9mIEE+InUiJiYoQT1udWxsKSxBfWZ1bmN0aW9uIEl0KCl7bGV0IEE9eUEoKTtyZXR1cm4gdHlwZW9mIEE+InUiJiYoQT1uZXcgVVJMKCIvcGlwZWxpbmVzIixkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4pLmhyZWYpLEF9ZnVuY3Rpb24gREEoKXtsZXQgQT1hdCgpO3JldHVybiB0eXBlb2YgQT4idSImJihBPXt9KSxBfWFzeW5jIGZ1bmN0aW9uIGpyKEEsZSx0KXtsZXQgcj1BLGk9QTtpZih0eXBlb2YgQSE9InN0cmluZyImJihyPW5ldyBVUkwoQS5ocmVmKSxpPXIuaHJlZiksdGUuaGFzKGkpKXJldHVybiB0ZS5nZXQoaSk7e2xldCBuPWF3YWl0IFplKEEsZT8udG9TdHJpbmcoKT8/SXQoKSx0Pz9EQSgpKTtyZXR1cm4gdGUuc2V0KGksbiksbn19YXN5bmMgZnVuY3Rpb24gdnIoQSxlLHQscixpKXtpZighYXdhaXQgWGUoKSl7bGV0IHU9IldlYkFzc2VtYmx5IFNJTUQgc3VwcG9ydCBpcyByZXF1aXJlZCAtLSBwbGVhc2UgdXBkYXRlIHlvdXIgYnJvd3Nlci4iO3Rocm93IGFsZXJ0KHUpLG5ldyBFcnJvcih1KX1sZXQgbj1pPy53ZWJXb3JrZXI/P251bGw7aWYobj09PSExKXtsZXQgdT1hd2FpdCBqcihBLnRvU3RyaW5nKCksaT8ucGlwZWxpbmVCYXNlVXJsLGk/LnBpcGVsaW5lUXVlcnlQYXJhbXM/P0RBKCkpO3JldHVybiBydCh1LGUsdCxyKX1sZXQgbz1uLGc9aT8ucGlwZWxpbmVXb3JrZXJVcmw/P1dyKCksRT10eXBlb2YgZyE9InN0cmluZyImJnR5cGVvZiBnPy5ocmVmPCJ1Ij9nLmhyZWY6Zyx7d29ya2VyUHJveHk6Qix3b3JrZXI6SX09YXdhaXQgVmUobyxFLGk/LnBpcGVsaW5lUXVlcnlQYXJhbXM/P0RBKCkpO289STtsZXQgcz1bXTtyIT1udWxsJiZyLmxlbmd0aD4wJiZyLmZvckVhY2goZnVuY3Rpb24odSl7aWYodS50eXBlPT09cC5CaW5hcnlTdHJlYW0pe2xldCBkPXUuZGF0YS5kYXRhO3MucHVzaChkKX1lbHNlIGlmKHUudHlwZT09PXAuQmluYXJ5RmlsZSl7bGV0IGQ9dS5kYXRhLmRhdGE7cy5wdXNoKGQpfWVsc2UgaWYodS50eXBlPT09cC5JbWFnZSl7bGV0IGQ9dS5kYXRhO2QuZGF0YSE9PW51bGwmJnMucHVzaCguLi5udChkKSl9ZWxzZSBpZih1LnR5cGU9PT1wLk1lc2gpe2xldCBkPXUuZGF0YTtzLnB1c2goLi4ub3QoZCkpfWVsc2UgaWYodS50eXBlPT09cC5Qb2x5RGF0YSl7bGV0IGQ9dS5kYXRhO3MucHVzaCguLi5zdChkKSl9fSk7bGV0IGM9aT8ucGlwZWxpbmVCYXNlVXJsPz9JdCgpLEM9dHlwZW9mIGMhPSJzdHJpbmciJiZ0eXBlb2YgYz8uaHJlZjwidSI/Yy5ocmVmOmMsbD1yIT1udWxsP0dBKHIsaXQocyxpPy5ub0NvcHkpKTpudWxsLFE9YXdhaXQgQi5ydW5QaXBlbGluZShBLnRvU3RyaW5nKCksQyxlLHQsbCxpPy5waXBlbGluZVF1ZXJ5UGFyYW1zPz9EQSgpKTtyZXR1cm57cmV0dXJuVmFsdWU6US5yZXR1cm5WYWx1ZSxzdGRvdXQ6US5zdGRvdXQsc3RkZXJyOlEuc3RkZXJyLG91dHB1dHM6US5vdXRwdXRzLHdlYldvcmtlcjpvfX12YXIgaUE9dnI7dmFyIF9yPW51bGw7ZnVuY3Rpb24gZ3QoKXtyZXR1cm4gX3J9dmFyIHJlLHpyPWBodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpdGstd2FzbS9jb21wcmVzcy1zdHJpbmdpZnlAJHtSQX0vZGlzdC9waXBlbGluZXNgO2Z1bmN0aW9uIFZzKEEpe3JlPUF9ZnVuY3Rpb24gU0EoKXtpZih0eXBlb2YgcmU8InUiKXJldHVybiByZTtsZXQgQT15QSgpO3JldHVybiB0eXBlb2YgQTwidSI/QTp6cn12YXIgaWUsVnI9bnVsbDtmdW5jdGlvbiBDdChBKXtpZT1BfWZ1bmN0aW9uIGooKXtpZih0eXBlb2YgaWU8InUiKXJldHVybiBpZTtsZXQgQT13QSgpO3JldHVybiB0eXBlb2YgQTwidSI/QTpWcn12YXIgdj1udWxsO2FzeW5jIGZ1bmN0aW9uIEJ0KCl7bGV0IEE9aigpLGU9dHlwZW9mIEEhPSJzdHJpbmciJiZ0eXBlb2YgQT8uaHJlZjwidSI/QS5ocmVmOkE7dj1hd2FpdCByQShlKX1mdW5jdGlvbiByYShBKXt2PUF9YXN5bmMgZnVuY3Rpb24gRkEoKXtpZih2IT09bnVsbClyZXR1cm4gdi50ZXJtaW5hdGVkJiZhd2FpdCBCdCgpLHY7bGV0IEE9Z3QoKTtyZXR1cm4gQSE9PW51bGw/QTooYXdhaXQgQnQoKSx2KX1hc3luYyBmdW5jdGlvbiBacihBLGU9e30pe2xldCB0PVt7dHlwZTpwLkJpbmFyeVN0cmVhbX1dLHI9W3t0eXBlOnAuQmluYXJ5U3RyZWFtLGRhdGE6e2RhdGE6QX19XSxpPVtdLG49IjAiO2kucHVzaChuKTtsZXQgbz0iMCI7aS5wdXNoKG8pLGkucHVzaCgiLS1tZW1vcnktaW8iKSxlLnN0cmluZ2lmeSYmZS5zdHJpbmdpZnkmJmkucHVzaCgiLS1zdHJpbmdpZnkiKSxlLmNvbXByZXNzaW9uTGV2ZWwmJmkucHVzaCgiLS1jb21wcmVzc2lvbi1sZXZlbCIsZS5jb21wcmVzc2lvbkxldmVsLnRvU3RyaW5nKCkpLGUuZGF0YVVybFByZWZpeCYmaS5wdXNoKCItLWRhdGEtdXJsLXByZWZpeCIsZS5kYXRhVXJsUHJlZml4LnRvU3RyaW5nKCkpO2xldCBnPSJjb21wcmVzcy1zdHJpbmdpZnkiLEU9ZT8ud2ViV29ya2VyO0U9PT12b2lkIDAmJihFPWF3YWl0IEZBKCkpO2xldHt3ZWJXb3JrZXI6QixyZXR1cm5WYWx1ZTpJLHN0ZGVycjpzLG91dHB1dHM6Y309YXdhaXQgaUEoZyxpLHQscix7cGlwZWxpbmVCYXNlVXJsOlNBKCkscGlwZWxpbmVXb3JrZXJVcmw6aigpLHdlYldvcmtlcjpFLG5vQ29weTplPy5ub0NvcHl9KTtpZihJIT09MCYmcyE9PSIiKXRocm93IG5ldyBFcnJvcihzKTtyZXR1cm57d2ViV29ya2VyOkIsb3V0cHV0OihjWzBdPy5kYXRhKS5kYXRhfX12YXIgWHI9WnI7YXN5bmMgZnVuY3Rpb24gJHIoQSxlPXt9KXtsZXQgdD1be3R5cGU6cC5CaW5hcnlTdHJlYW19XSxyPVt7dHlwZTpwLkJpbmFyeVN0cmVhbSxkYXRhOntkYXRhOkF9fV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IG89IjAiO2kucHVzaChvKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksZS5wYXJzZVN0cmluZyYmZS5wYXJzZVN0cmluZyYmaS5wdXNoKCItLXBhcnNlLXN0cmluZyIpO2xldCBnPSJwYXJzZS1zdHJpbmctZGVjb21wcmVzcyIsRT1lPy53ZWJXb3JrZXI7RT09PXZvaWQgMCYmKEU9YXdhaXQgRkEoKSk7bGV0e3dlYldvcmtlcjpCLHJldHVyblZhbHVlOkksc3RkZXJyOnMsb3V0cHV0czpjfT1hd2FpdCBpQShnLGksdCxyLHtwaXBlbGluZUJhc2VVcmw6U0EoKSxwaXBlbGluZVdvcmtlclVybDpqKCksd2ViV29ya2VyOkUsbm9Db3B5OmU/Lm5vQ29weX0pO2lmKEkhPT0wJiZzIT09IiIpdGhyb3cgbmV3IEVycm9yKHMpO3JldHVybnt3ZWJXb3JrZXI6QixvdXRwdXQ6KGNbMF0/LmRhdGEpLmRhdGF9fXZhciBBaT0kcjt2YXIgRXQ9J2RhdGE6dGV4dC9qYXZhc2NyaXB0O2NoYXJzZXQ9dXRmLTgsdmFyIHR0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgZXQ9KEEsSSk9Pntmb3IodmFyIHQgaW4gSSl0dChBLHQse2dldDpJW3RdLGVudW1lcmFibGU6ITB9KX07dmFyIHZBPVN5bWJvbCgiQ29tbGluay5wcm94eSIpLGd0PVN5bWJvbCgiQ29tbGluay5lbmRwb2ludCIpLHJ0PVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSxtQT1TeW1ib2woIkNvbWxpbmsuZmluYWxpemVyIiksZUE9U3ltYm9sKCJDb21saW5rLnRocm93biIpLCRBPUE9PnR5cGVvZiBBPT0ib2JqZWN0IiYmQSE9PW51bGx8fHR5cGVvZiBBPT0iZnVuY3Rpb24iLGl0PXtjYW5IYW5kbGU6QT0+JEEoQSkmJkFbdkFdLHNlcmlhbGl6ZShBKXtsZXR7cG9ydDE6SSxwb3J0Mjp0fT1uZXcgTWVzc2FnZUNoYW5uZWw7cmV0dXJuIG9BKEEsSSksW3QsW3RdXX0sZGVzZXJpYWxpemUoQSl7cmV0dXJuIEEuc3RhcnQoKSxzdChBKX19LG90PXtjYW5IYW5kbGU6QT0+JEEoQSkmJmVBIGluIEEsc2VyaWFsaXplKHt2YWx1ZTpBfSl7bGV0IEk7cmV0dXJuIEEgaW5zdGFuY2VvZiBFcnJvcj9JPXtpc0Vycm9yOiEwLHZhbHVlOnttZXNzYWdlOkEubWVzc2FnZSxuYW1lOkEubmFtZSxzdGFjazpBLnN0YWNrfX06ST17aXNFcnJvcjohMSx2YWx1ZTpBfSxbSSxbXV19LGRlc2VyaWFsaXplKEEpe3Rocm93IEEuaXNFcnJvcj9PYmplY3QuYXNzaWduKG5ldyBFcnJvcihBLnZhbHVlLm1lc3NhZ2UpLEEudmFsdWUpOkEudmFsdWV9fSxBST1uZXcgTWFwKFtbInByb3h5IixpdF0sWyJ0aHJvdyIsb3RdXSk7ZnVuY3Rpb24gQnQoQSxJKXtmb3IobGV0IHQgb2YgQSlpZihJPT09dHx8dD09PSIqInx8dCBpbnN0YW5jZW9mIFJlZ0V4cCYmdC50ZXN0KEkpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIG9BKEEsST1nbG9iYWxUaGlzLHQ9WyIqIl0pe0kuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gZShnKXtpZighZ3x8IWcuZGF0YSlyZXR1cm47aWYoIUJ0KHQsZy5vcmlnaW4pKXtjb25zb2xlLndhcm4oYEludmFsaWQgb3JpZ2luIFwnJHtnLm9yaWdpbn1cJyBmb3IgY29tbGluayBwcm94eWApO3JldHVybn1sZXR7aWQ6cix0eXBlOmkscGF0aDpzfT1PYmplY3QuYXNzaWduKHtwYXRoOltdfSxnLmRhdGEpLGE9KGcuZGF0YS5hcmd1bWVudExpc3R8fFtdKS5tYXAoYiksbjt0cnl7bGV0IEM9cy5zbGljZSgwLC0xKS5yZWR1Y2UoKGYsUSk9PmZbUV0sQSksbz1zLnJlZHVjZSgoZixRKT0+ZltRXSxBKTtzd2l0Y2goaSl7Y2FzZSJHRVQiOm49bzticmVhaztjYXNlIlNFVCI6Q1tzLnNsaWNlKC0xKVswXV09YihnLmRhdGEudmFsdWUpLG49ITA7YnJlYWs7Y2FzZSJBUFBMWSI6bj1vLmFwcGx5KEMsYSk7YnJlYWs7Y2FzZSJDT05TVFJVQ1QiOntsZXQgZj1uZXcgbyguLi5hKTtuPWF0KGYpfWJyZWFrO2Nhc2UiRU5EUE9JTlQiOntsZXR7cG9ydDE6Zixwb3J0MjpRfT1uZXcgTWVzc2FnZUNoYW5uZWw7b0EoQSxRKSxuPVNBKGYsW2ZdKX1icmVhaztjYXNlIlJFTEVBU0UiOm49dm9pZCAwO2JyZWFrO2RlZmF1bHQ6cmV0dXJufX1jYXRjaChDKXtuPXt2YWx1ZTpDLFtlQV06MH19UHJvbWlzZS5yZXNvbHZlKG4pLmNhdGNoKEM9Pih7dmFsdWU6QyxbZUFdOjB9KSkudGhlbihDPT57bGV0W28sZl09aUEoQyk7SS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbykse2lkOnJ9KSxmKSxpPT09IlJFTEVBU0UiJiYoSS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixlKSxJSShJKSxtQSBpbiBBJiZ0eXBlb2YgQVttQV09PSJmdW5jdGlvbiImJkFbbUFdKCkpfSkuY2F0Y2goQz0+e2xldFtvLGZdPWlBKHt2YWx1ZTpuZXcgVHlwZUVycm9yKCJVbnNlcmlhbGl6YWJsZSByZXR1cm4gdmFsdWUiKSxbZUFdOjB9KTtJLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSx7aWQ6cn0pLGYpfSl9KSxJLnN0YXJ0JiZJLnN0YXJ0KCl9ZnVuY3Rpb24gQ3QoQSl7cmV0dXJuIEEuY29uc3RydWN0b3IubmFtZT09PSJNZXNzYWdlUG9ydCJ9ZnVuY3Rpb24gSUkoQSl7Q3QoQSkmJkEuY2xvc2UoKX1mdW5jdGlvbiBzdChBLEkpe3JldHVybiBwQShBLFtdLEkpfWZ1bmN0aW9uIHRBKEEpe2lmKEEpdGhyb3cgbmV3IEVycm9yKCJQcm94eSBoYXMgYmVlbiByZWxlYXNlZCBhbmQgaXMgbm90IHVzZWFibGUiKX1mdW5jdGlvbiB0SShBKXtyZXR1cm4gTShBLHt0eXBlOiJSRUxFQVNFIn0pLnRoZW4oKCk9PntJSShBKX0pfXZhciBnQT1uZXcgV2Vha01hcCxyQT0iRmluYWxpemF0aW9uUmVnaXN0cnkiaW4gZ2xvYmFsVGhpcyYmbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KEE9PntsZXQgST0oZ0EuZ2V0KEEpfHwwKS0xO2dBLnNldChBLEkpLEk9PT0wJiZ0SShBKX0pO2Z1bmN0aW9uIFF0KEEsSSl7bGV0IHQ9KGdBLmdldChJKXx8MCkrMTtnQS5zZXQoSSx0KSxyQSYmckEucmVnaXN0ZXIoQSxJLEEpfWZ1bmN0aW9uIG50KEEpe3JBJiZyQS51bnJlZ2lzdGVyKEEpfWZ1bmN0aW9uIHBBKEEsST1bXSx0PWZ1bmN0aW9uKCl7fSl7bGV0IGU9ITEsZz1uZXcgUHJveHkodCx7Z2V0KHIsaSl7aWYodEEoZSksaT09PXJ0KXJldHVybigpPT57bnQoZyksdEkoQSksZT0hMH07aWYoaT09PSJ0aGVuIil7aWYoSS5sZW5ndGg9PT0wKXJldHVybnt0aGVuOigpPT5nfTtsZXQgcz1NKEEse3R5cGU6IkdFVCIscGF0aDpJLm1hcChhPT5hLnRvU3RyaW5nKCkpfSkudGhlbihiKTtyZXR1cm4gcy50aGVuLmJpbmQocyl9cmV0dXJuIHBBKEEsWy4uLkksaV0pfSxzZXQocixpLHMpe3RBKGUpO2xldFthLG5dPWlBKHMpO3JldHVybiBNKEEse3R5cGU6IlNFVCIscGF0aDpbLi4uSSxpXS5tYXAoQz0+Qy50b1N0cmluZygpKSx2YWx1ZTphfSxuKS50aGVuKGIpfSxhcHBseShyLGkscyl7dEEoZSk7bGV0IGE9SVtJLmxlbmd0aC0xXTtpZihhPT09Z3QpcmV0dXJuIE0oQSx7dHlwZToiRU5EUE9JTlQifSkudGhlbihiKTtpZihhPT09ImJpbmQiKXJldHVybiBwQShBLEkuc2xpY2UoMCwtMSkpO2xldFtuLENdPV9BKHMpO3JldHVybiBNKEEse3R5cGU6IkFQUExZIixwYXRoOkkubWFwKG89Pm8udG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Om59LEMpLnRoZW4oYil9LGNvbnN0cnVjdChyLGkpe3RBKGUpO2xldFtzLGFdPV9BKGkpO3JldHVybiBNKEEse3R5cGU6IkNPTlNUUlVDVCIscGF0aDpJLm1hcChuPT5uLnRvU3RyaW5nKCkpLGFyZ3VtZW50TGlzdDpzfSxhKS50aGVuKGIpfX0pO3JldHVybiBRdChnLEEpLGd9ZnVuY3Rpb24gRXQoQSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sQSl9ZnVuY3Rpb24gX0EoQSl7bGV0IEk9QS5tYXAoaUEpO3JldHVybltJLm1hcCh0PT50WzBdKSxFdChJLm1hcCh0PT50WzFdKSldfXZhciBlST1uZXcgV2Vha01hcDtmdW5jdGlvbiBTQShBLEkpe3JldHVybiBlSS5zZXQoQSxJKSxBfWZ1bmN0aW9uIGF0KEEpe3JldHVybiBPYmplY3QuYXNzaWduKEEse1t2QV06ITB9KX1mdW5jdGlvbiBpQShBKXtmb3IobGV0W0ksdF1vZiBBSSlpZih0LmNhbkhhbmRsZShBKSl7bGV0W2UsZ109dC5zZXJpYWxpemUoQSk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOkksdmFsdWU6ZX0sZ119cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOkF9LGVJLmdldChBKXx8W11dfWZ1bmN0aW9uIGIoQSl7c3dpdGNoKEEudHlwZSl7Y2FzZSJIQU5ETEVSIjpyZXR1cm4gQUkuZ2V0KEEubmFtZSkuZGVzZXJpYWxpemUoQS52YWx1ZSk7Y2FzZSJSQVciOnJldHVybiBBLnZhbHVlfX1mdW5jdGlvbiBNKEEsSSx0KXtyZXR1cm4gbmV3IFByb21pc2UoZT0+e2xldCBnPWN0KCk7QS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiByKGkpeyFpLmRhdGF8fCFpLmRhdGEuaWR8fGkuZGF0YS5pZCE9PWd8fChBLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHIpLGUoaS5kYXRhKSl9KSxBLnN0YXJ0JiZBLnN0YXJ0KCksQS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKHtpZDpnfSxJKSx0KX0pfWZ1bmN0aW9uIGN0KCl7cmV0dXJuIG5ldyBBcnJheSg0KS5maWxsKDApLm1hcCgoKT0+TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKk51bWJlci5NQVhfU0FGRV9JTlRFR0VSKS50b1N0cmluZygxNikpLmpvaW4oIi0iKX1mdW5jdGlvbiBXKEEsSSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEEuYXBwbHkoSSxhcmd1bWVudHMpfX12YXJ7dG9TdHJpbmc6ZnR9PU9iamVjdC5wcm90b3R5cGUse2dldFByb3RvdHlwZU9mOk5BfT1PYmplY3QsQ0E9KEE9Pkk9PntsZXQgdD1mdC5jYWxsKEkpO3JldHVybiBBW3RdfHwoQVt0XT10LnNsaWNlKDgsLTEpLnRvTG93ZXJDYXNlKCkpfSkoT2JqZWN0LmNyZWF0ZShudWxsKSksVT1BPT4oQT1BLnRvTG93ZXJDYXNlKCksST0+Q0EoSSk9PT1BKSxzQT1BPT5JPT50eXBlb2YgST09PUEse2lzQXJyYXk6cX09QXJyYXksWj1zQSgidW5kZWZpbmVkIik7ZnVuY3Rpb24gbHQoQSl7cmV0dXJuIEEhPT1udWxsJiYhWihBKSYmQS5jb25zdHJ1Y3RvciE9PW51bGwmJiFaKEEuY29uc3RydWN0b3IpJiZGKEEuY29uc3RydWN0b3IuaXNCdWZmZXIpJiZBLmNvbnN0cnVjdG9yLmlzQnVmZmVyKEEpfXZhciBvST1VKCJBcnJheUJ1ZmZlciIpO2Z1bmN0aW9uIER0KEEpe2xldCBJO3JldHVybiB0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZBcnJheUJ1ZmZlci5pc1ZpZXc/ST1BcnJheUJ1ZmZlci5pc1ZpZXcoQSk6ST1BJiZBLmJ1ZmZlciYmb0koQS5idWZmZXIpLEl9dmFyIHV0PXNBKCJzdHJpbmciKSxGPXNBKCJmdW5jdGlvbiIpLEJJPXNBKCJudW1iZXIiKSxRQT1BPT5BIT09bnVsbCYmdHlwZW9mIEE9PSJvYmplY3QiLGh0PUE9PkE9PT0hMHx8QT09PSExLEJBPUE9PntpZihDQShBKSE9PSJvYmplY3QiKXJldHVybiExO2xldCBJPU5BKEEpO3JldHVybihJPT09bnVsbHx8ST09PU9iamVjdC5wcm90b3R5cGV8fE9iamVjdC5nZXRQcm90b3R5cGVPZihJKT09PW51bGwpJiYhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBBKSYmIShTeW1ib2wuaXRlcmF0b3IgaW4gQSl9LGR0PVUoIkRhdGUiKSx5dD1VKCJGaWxlIiksd3Q9VSgiQmxvYiIpLG10PVUoIkZpbGVMaXN0IikscHQ9QT0+UUEoQSkmJkYoQS5waXBlKSxTdD1BPT57bGV0IEk7cmV0dXJuIEEmJih0eXBlb2YgRm9ybURhdGE9PSJmdW5jdGlvbiImJkEgaW5zdGFuY2VvZiBGb3JtRGF0YXx8RihBLmFwcGVuZCkmJigoST1DQShBKSk9PT0iZm9ybWRhdGEifHxJPT09Im9iamVjdCImJkYoQS50b1N0cmluZykmJkEudG9TdHJpbmcoKT09PSJbb2JqZWN0IEZvcm1EYXRhXSIpKX0sRnQ9VSgiVVJMU2VhcmNoUGFyYW1zIiksUnQ9QT0+QS50cmltP0EudHJpbSgpOkEucmVwbGFjZSgvXltcXHNcXHVGRUZGXFx4QTBdK3xbXFxzXFx1RkVGRlxceEEwXSskL2csIiIpO2Z1bmN0aW9uIFYoQSxJLHthbGxPd25LZXlzOnQ9ITF9PXt9KXtpZihBPT09bnVsbHx8dHlwZW9mIEE+InUiKXJldHVybjtsZXQgZSxnO2lmKHR5cGVvZiBBIT0ib2JqZWN0IiYmKEE9W0FdKSxxKEEpKWZvcihlPTAsZz1BLmxlbmd0aDtlPGc7ZSsrKUkuY2FsbChudWxsLEFbZV0sZSxBKTtlbHNle2xldCByPXQ/T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoQSk6T2JqZWN0LmtleXMoQSksaT1yLmxlbmd0aCxzO2ZvcihlPTA7ZTxpO2UrKylzPXJbZV0sSS5jYWxsKG51bGwsQVtzXSxzLEEpfX1mdW5jdGlvbiBDSShBLEkpe0k9SS50b0xvd2VyQ2FzZSgpO2xldCB0PU9iamVjdC5rZXlzKEEpLGU9dC5sZW5ndGgsZztmb3IoO2UtLSA+MDspaWYoZz10W2VdLEk9PT1nLnRvTG93ZXJDYXNlKCkpcmV0dXJuIGc7cmV0dXJuIG51bGx9dmFyIHNJPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzpnbG9iYWwsUUk9QT0+IVooQSkmJkEhPT1zSTtmdW5jdGlvbiBSQSgpe2xldHtjYXNlbGVzczpBfT1RSSh0aGlzKSYmdGhpc3x8e30sST17fSx0PShlLGcpPT57bGV0IHI9QSYmQ0koSSxnKXx8ZztCQShJW3JdKSYmQkEoZSk/SVtyXT1SQShJW3JdLGUpOkJBKGUpP0lbcl09UkEoe30sZSk6cShlKT9JW3JdPWUuc2xpY2UoKTpJW3JdPWV9O2ZvcihsZXQgZT0wLGc9YXJndW1lbnRzLmxlbmd0aDtlPGc7ZSsrKWFyZ3VtZW50c1tlXSYmVihhcmd1bWVudHNbZV0sdCk7cmV0dXJuIEl9dmFyIE50PShBLEksdCx7YWxsT3duS2V5czplfT17fSk9PihWKEksKGcscik9Pnt0JiZGKGcpP0Fbcl09VyhnLHQpOkFbcl09Z30se2FsbE93bktleXM6ZX0pLEEpLFV0PUE9PihBLmNoYXJDb2RlQXQoMCk9PT02NTI3OSYmKEE9QS5zbGljZSgxKSksQSksR3Q9KEEsSSx0LGUpPT57QS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShJLnByb3RvdHlwZSxlKSxBLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1BLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJzdXBlciIse3ZhbHVlOkkucHJvdG90eXBlfSksdCYmT2JqZWN0LmFzc2lnbihBLnByb3RvdHlwZSx0KX0sa3Q9KEEsSSx0LGUpPT57bGV0IGcscixpLHM9e307aWYoST1JfHx7fSxBPT1udWxsKXJldHVybiBJO2Rve2ZvcihnPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEEpLHI9Zy5sZW5ndGg7ci0tID4wOylpPWdbcl0sKCFlfHxlKGksQSxJKSkmJiFzW2ldJiYoSVtpXT1BW2ldLHNbaV09ITApO0E9dCE9PSExJiZOQShBKX13aGlsZShBJiYoIXR8fHQoQSxJKSkmJkEhPT1PYmplY3QucHJvdG90eXBlKTtyZXR1cm4gSX0sTHQ9KEEsSSx0KT0+e0E9U3RyaW5nKEEpLCh0PT09dm9pZCAwfHx0PkEubGVuZ3RoKSYmKHQ9QS5sZW5ndGgpLHQtPUkubGVuZ3RoO2xldCBlPUEuaW5kZXhPZihJLHQpO3JldHVybiBlIT09LTEmJmU9PT10fSxKdD1BPT57aWYoIUEpcmV0dXJuIG51bGw7aWYocShBKSlyZXR1cm4gQTtsZXQgST1BLmxlbmd0aDtpZighQkkoSSkpcmV0dXJuIG51bGw7bGV0IHQ9bmV3IEFycmF5KEkpO2Zvcig7SS0tID4wOyl0W0ldPUFbSV07cmV0dXJuIHR9LEh0PShBPT5JPT5BJiZJIGluc3RhbmNlb2YgQSkodHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZOQShVaW50OEFycmF5KSksWXQ9KEEsSSk9PntsZXQgZT0oQSYmQVtTeW1ib2wuaXRlcmF0b3JdKS5jYWxsKEEpLGc7Zm9yKDsoZz1lLm5leHQoKSkmJiFnLmRvbmU7KXtsZXQgcj1nLnZhbHVlO0kuY2FsbChBLHJbMF0sclsxXSl9fSxidD0oQSxJKT0+e2xldCB0LGU9W107Zm9yKDsodD1BLmV4ZWMoSSkpIT09bnVsbDspZS5wdXNoKHQpO3JldHVybiBlfSxNdD1VKCJIVE1MRm9ybUVsZW1lbnQiKSxxdD1BPT5BLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWy1fXFxzXShbYS16XFxkXSkoXFx3KikvZyxmdW5jdGlvbih0LGUsZyl7cmV0dXJuIGUudG9VcHBlckNhc2UoKStnfSksckk9KCh7aGFzT3duUHJvcGVydHk6QX0pPT4oSSx0KT0+QS5jYWxsKEksdCkpKE9iamVjdC5wcm90b3R5cGUpLEt0PVUoIlJlZ0V4cCIpLG5JPShBLEkpPT57bGV0IHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoQSksZT17fTtWKHQsKGcscik9PntsZXQgaTsoaT1JKGcscixBKSkhPT0hMSYmKGVbcl09aXx8Zyl9KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhBLGUpfSxPdD1BPT57bkkoQSwoSSx0KT0+e2lmKEYoQSkmJlsiYXJndW1lbnRzIiwiY2FsbGVyIiwiY2FsbGVlIl0uaW5kZXhPZih0KSE9PS0xKXJldHVybiExO2xldCBlPUFbdF07aWYoRihlKSl7aWYoSS5lbnVtZXJhYmxlPSExLCJ3cml0YWJsZSJpbiBJKXtJLndyaXRhYmxlPSExO3JldHVybn1JLnNldHx8KEkuc2V0PSgpPT57dGhyb3cgRXJyb3IoIkNhbiBub3QgcmV3cml0ZSByZWFkLW9ubHkgbWV0aG9kIFwnIit0KyJcJyIpfSl9fSl9LFR0PShBLEkpPT57bGV0IHQ9e30sZT1nPT57Zy5mb3JFYWNoKHI9Pnt0W3JdPSEwfSl9O3JldHVybiBxKEEpP2UoQSk6ZShTdHJpbmcoQSkuc3BsaXQoSSkpLHR9LHh0PSgpPT57fSxQdD0oQSxJKT0+KEE9K0EsTnVtYmVyLmlzRmluaXRlKEEpP0E6SSksRkE9ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IixpST0iMDEyMzQ1Njc4OSIsRUk9e0RJR0lUOmlJLEFMUEhBOkZBLEFMUEhBX0RJR0lUOkZBK0ZBLnRvVXBwZXJDYXNlKCkraUl9LGp0PShBPTE2LEk9RUkuQUxQSEFfRElHSVQpPT57bGV0IHQ9IiIse2xlbmd0aDplfT1JO2Zvcig7QS0tOyl0Kz1JW01hdGgucmFuZG9tKCkqZXwwXTtyZXR1cm4gdH07ZnVuY3Rpb24gV3QoQSl7cmV0dXJuISEoQSYmRihBLmFwcGVuZCkmJkFbU3ltYm9sLnRvU3RyaW5nVGFnXT09PSJGb3JtRGF0YSImJkFbU3ltYm9sLml0ZXJhdG9yXSl9dmFyIFp0PUE9PntsZXQgST1uZXcgQXJyYXkoMTApLHQ9KGUsZyk9PntpZihRQShlKSl7aWYoSS5pbmRleE9mKGUpPj0wKXJldHVybjtpZighKCJ0b0pTT04iaW4gZSkpe0lbZ109ZTtsZXQgcj1xKGUpP1tdOnt9O3JldHVybiBWKGUsKGkscyk9PntsZXQgYT10KGksZysxKTshWihhKSYmKHJbc109YSl9KSxJW2ddPXZvaWQgMCxyfX1yZXR1cm4gZX07cmV0dXJuIHQoQSwwKX0sVnQ9VSgiQXN5bmNGdW5jdGlvbiIpLFh0PUE9PkEmJihRQShBKXx8RihBKSkmJkYoQS50aGVuKSYmRihBLmNhdGNoKSxCPXtpc0FycmF5OnEsaXNBcnJheUJ1ZmZlcjpvSSxpc0J1ZmZlcjpsdCxpc0Zvcm1EYXRhOlN0LGlzQXJyYXlCdWZmZXJWaWV3OkR0LGlzU3RyaW5nOnV0LGlzTnVtYmVyOkJJLGlzQm9vbGVhbjpodCxpc09iamVjdDpRQSxpc1BsYWluT2JqZWN0OkJBLGlzVW5kZWZpbmVkOlosaXNEYXRlOmR0LGlzRmlsZTp5dCxpc0Jsb2I6d3QsaXNSZWdFeHA6S3QsaXNGdW5jdGlvbjpGLGlzU3RyZWFtOnB0LGlzVVJMU2VhcmNoUGFyYW1zOkZ0LGlzVHlwZWRBcnJheTpIdCxpc0ZpbGVMaXN0Om10LGZvckVhY2g6VixtZXJnZTpSQSxleHRlbmQ6TnQsdHJpbTpSdCxzdHJpcEJPTTpVdCxpbmhlcml0czpHdCx0b0ZsYXRPYmplY3Q6a3Qsa2luZE9mOkNBLGtpbmRPZlRlc3Q6VSxlbmRzV2l0aDpMdCx0b0FycmF5Okp0LGZvckVhY2hFbnRyeTpZdCxtYXRjaEFsbDpidCxpc0hUTUxGb3JtOk10LGhhc093blByb3BlcnR5OnJJLGhhc093blByb3A6ckkscmVkdWNlRGVzY3JpcHRvcnM6bkksZnJlZXplTWV0aG9kczpPdCx0b09iamVjdFNldDpUdCx0b0NhbWVsQ2FzZTpxdCxub29wOnh0LHRvRmluaXRlTnVtYmVyOlB0LGZpbmRLZXk6Q0ksZ2xvYmFsOnNJLGlzQ29udGV4dERlZmluZWQ6UUksQUxQSEFCRVQ6RUksZ2VuZXJhdGVTdHJpbmc6anQsaXNTcGVjQ29tcGxpYW50Rm9ybTpXdCx0b0pTT05PYmplY3Q6WnQsaXNBc3luY0ZuOlZ0LGlzVGhlbmFibGU6WHR9O2Z1bmN0aW9uIEsoQSxJLHQsZSxnKXtFcnJvci5jYWxsKHRoaXMpLEVycm9yLmNhcHR1cmVTdGFja1RyYWNlP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsdGhpcy5jb25zdHJ1Y3Rvcik6dGhpcy5zdGFjaz1uZXcgRXJyb3IoKS5zdGFjayx0aGlzLm1lc3NhZ2U9QSx0aGlzLm5hbWU9IkF4aW9zRXJyb3IiLEkmJih0aGlzLmNvZGU9SSksdCYmKHRoaXMuY29uZmlnPXQpLGUmJih0aGlzLnJlcXVlc3Q9ZSksZyYmKHRoaXMucmVzcG9uc2U9Zyl9Qi5pbmhlcml0cyhLLEVycm9yLHt0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm57bWVzc2FnZTp0aGlzLm1lc3NhZ2UsbmFtZTp0aGlzLm5hbWUsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbixudW1iZXI6dGhpcy5udW1iZXIsZmlsZU5hbWU6dGhpcy5maWxlTmFtZSxsaW5lTnVtYmVyOnRoaXMubGluZU51bWJlcixjb2x1bW5OdW1iZXI6dGhpcy5jb2x1bW5OdW1iZXIsc3RhY2s6dGhpcy5zdGFjayxjb25maWc6Qi50b0pTT05PYmplY3QodGhpcy5jb25maWcpLGNvZGU6dGhpcy5jb2RlLHN0YXR1czp0aGlzLnJlc3BvbnNlJiZ0aGlzLnJlc3BvbnNlLnN0YXR1cz90aGlzLnJlc3BvbnNlLnN0YXR1czpudWxsfX19KTt2YXIgYUk9Sy5wcm90b3R5cGUsY0k9e307WyJFUlJfQkFEX09QVElPTl9WQUxVRSIsIkVSUl9CQURfT1BUSU9OIiwiRUNPTk5BQk9SVEVEIiwiRVRJTUVET1VUIiwiRVJSX05FVFdPUksiLCJFUlJfRlJfVE9PX01BTllfUkVESVJFQ1RTIiwiRVJSX0RFUFJFQ0FURUQiLCJFUlJfQkFEX1JFU1BPTlNFIiwiRVJSX0JBRF9SRVFVRVNUIiwiRVJSX0NBTkNFTEVEIiwiRVJSX05PVF9TVVBQT1JUIiwiRVJSX0lOVkFMSURfVVJMIl0uZm9yRWFjaChBPT57Y0lbQV09e3ZhbHVlOkF9fSk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoSyxjSSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGFJLCJpc0F4aW9zRXJyb3IiLHt2YWx1ZTohMH0pO0suZnJvbT0oQSxJLHQsZSxnLHIpPT57bGV0IGk9T2JqZWN0LmNyZWF0ZShhSSk7cmV0dXJuIEIudG9GbGF0T2JqZWN0KEEsaSxmdW5jdGlvbihhKXtyZXR1cm4gYSE9PUVycm9yLnByb3RvdHlwZX0scz0+cyE9PSJpc0F4aW9zRXJyb3IiKSxLLmNhbGwoaSxBLm1lc3NhZ2UsSSx0LGUsZyksaS5jYXVzZT1BLGkubmFtZT1BLm5hbWUsciYmT2JqZWN0LmFzc2lnbihpLHIpLGl9O3ZhciBsPUs7dmFyIG5BPW51bGw7ZnVuY3Rpb24gVUEoQSl7cmV0dXJuIEIuaXNQbGFpbk9iamVjdChBKXx8Qi5pc0FycmF5KEEpfWZ1bmN0aW9uIGxJKEEpe3JldHVybiBCLmVuZHNXaXRoKEEsIltdIik/QS5zbGljZSgwLC0yKTpBfWZ1bmN0aW9uIGZJKEEsSSx0KXtyZXR1cm4gQT9BLmNvbmNhdChJKS5tYXAoZnVuY3Rpb24oZyxyKXtyZXR1cm4gZz1sSShnKSwhdCYmcj8iWyIrZysiXSI6Z30pLmpvaW4odD8iLiI6IiIpOkl9ZnVuY3Rpb24genQoQSl7cmV0dXJuIEIuaXNBcnJheShBKSYmIUEuc29tZShVQSl9dmFyIF90PUIudG9GbGF0T2JqZWN0KEIse30sbnVsbCxmdW5jdGlvbihJKXtyZXR1cm4vXmlzW0EtWl0vLnRlc3QoSSl9KTtmdW5jdGlvbiB2dChBLEksdCl7aWYoIUIuaXNPYmplY3QoQSkpdGhyb3cgbmV3IFR5cGVFcnJvcigidGFyZ2V0IG11c3QgYmUgYW4gb2JqZWN0Iik7ST1JfHxuZXcobkF8fEZvcm1EYXRhKSx0PUIudG9GbGF0T2JqZWN0KHQse21ldGFUb2tlbnM6ITAsZG90czohMSxpbmRleGVzOiExfSwhMSxmdW5jdGlvbihjLHUpe3JldHVybiFCLmlzVW5kZWZpbmVkKHVbY10pfSk7bGV0IGU9dC5tZXRhVG9rZW5zLGc9dC52aXNpdG9yfHxDLHI9dC5kb3RzLGk9dC5pbmRleGVzLGE9KHQuQmxvYnx8dHlwZW9mIEJsb2I8InUiJiZCbG9iKSYmQi5pc1NwZWNDb21wbGlhbnRGb3JtKEkpO2lmKCFCLmlzRnVuY3Rpb24oZykpdGhyb3cgbmV3IFR5cGVFcnJvcigidmlzaXRvciBtdXN0IGJlIGEgZnVuY3Rpb24iKTtmdW5jdGlvbiBuKEUpe2lmKEU9PT1udWxsKXJldHVybiIiO2lmKEIuaXNEYXRlKEUpKXJldHVybiBFLnRvSVNPU3RyaW5nKCk7aWYoIWEmJkIuaXNCbG9iKEUpKXRocm93IG5ldyBsKCJCbG9iIGlzIG5vdCBzdXBwb3J0ZWQuIFVzZSBhIEJ1ZmZlciBpbnN0ZWFkLiIpO3JldHVybiBCLmlzQXJyYXlCdWZmZXIoRSl8fEIuaXNUeXBlZEFycmF5KEUpP2EmJnR5cGVvZiBCbG9iPT0iZnVuY3Rpb24iP25ldyBCbG9iKFtFXSk6QnVmZmVyLmZyb20oRSk6RX1mdW5jdGlvbiBDKEUsYyx1KXtsZXQgZD1FO2lmKEUmJiF1JiZ0eXBlb2YgRT09Im9iamVjdCIpe2lmKEIuZW5kc1dpdGgoYywie30iKSljPWU/YzpjLnNsaWNlKDAsLTIpLEU9SlNPTi5zdHJpbmdpZnkoRSk7ZWxzZSBpZihCLmlzQXJyYXkoRSkmJnp0KEUpfHwoQi5pc0ZpbGVMaXN0KEUpfHxCLmVuZHNXaXRoKGMsIltdIikpJiYoZD1CLnRvQXJyYXkoRSkpKXJldHVybiBjPWxJKGMpLGQuZm9yRWFjaChmdW5jdGlvbihOLEl0KXshKEIuaXNVbmRlZmluZWQoTil8fE49PT1udWxsKSYmSS5hcHBlbmQoaT09PSEwP2ZJKFtjXSxJdCxyKTppPT09bnVsbD9jOmMrIltdIixuKE4pKX0pLCExfXJldHVybiBVQShFKT8hMDooSS5hcHBlbmQoZkkodSxjLHIpLG4oRSkpLCExKX1sZXQgbz1bXSxmPU9iamVjdC5hc3NpZ24oX3Qse2RlZmF1bHRWaXNpdG9yOkMsY29udmVydFZhbHVlOm4saXNWaXNpdGFibGU6VUF9KTtmdW5jdGlvbiBRKEUsYyl7aWYoIUIuaXNVbmRlZmluZWQoRSkpe2lmKG8uaW5kZXhPZihFKSE9PS0xKXRocm93IEVycm9yKCJDaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQgaW4gIitjLmpvaW4oIi4iKSk7by5wdXNoKEUpLEIuZm9yRWFjaChFLGZ1bmN0aW9uKGQsUil7KCEoQi5pc1VuZGVmaW5lZChkKXx8ZD09PW51bGwpJiZnLmNhbGwoSSxkLEIuaXNTdHJpbmcoUik/Ui50cmltKCk6UixjLGYpKT09PSEwJiZRKGQsYz9jLmNvbmNhdChSKTpbUl0pfSksby5wb3AoKX19aWYoIUIuaXNPYmplY3QoQSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiZGF0YSBtdXN0IGJlIGFuIG9iamVjdCIpO3JldHVybiBRKEEpLEl9dmFyIEw9dnQ7ZnVuY3Rpb24gREkoQSl7bGV0IEk9eyIhIjoiJTI1MjEiLCJcJyI6IiUyNTI3IiwiKCI6IiUyNTI4IiwiKSI6IiUyNTI5IiwifiI6IiUyNTdFIiwiJTI1MjAiOiIrIiwiJTI1MDAiOiJcXDAifTtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEEpLnJlcGxhY2UoL1shXCcoKX5dfCUyNTIwfCUyNTAwL2csZnVuY3Rpb24oZSl7cmV0dXJuIElbZV19KX1mdW5jdGlvbiB1SShBLEkpe3RoaXMuX3BhaXJzPVtdLEEmJkwoQSx0aGlzLEkpfXZhciBoST11SS5wcm90b3R5cGU7aEkuYXBwZW5kPWZ1bmN0aW9uKEksdCl7dGhpcy5fcGFpcnMucHVzaChbSSx0XSl9O2hJLnRvU3RyaW5nPWZ1bmN0aW9uKEkpe2xldCB0PUk/ZnVuY3Rpb24oZSl7cmV0dXJuIEkuY2FsbCh0aGlzLGUsREkpfTpESTtyZXR1cm4gdGhpcy5fcGFpcnMubWFwKGZ1bmN0aW9uKGcpe3JldHVybiB0KGdbMF0pKyI9Iit0KGdbMV0pfSwiIikuam9pbigiJiIpfTt2YXIgRUE9dUk7ZnVuY3Rpb24gJHQoQSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChBKS5yZXBsYWNlKC8lMjUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNTI0L2csIiQiKS5yZXBsYWNlKC8lMjUyQy9naSwiLCIpLnJlcGxhY2UoLyUyNTIwL2csIisiKS5yZXBsYWNlKC8lMjU1Qi9naSwiWyIpLnJlcGxhY2UoLyUyNTVEL2dpLCJdIil9ZnVuY3Rpb24gWChBLEksdCl7aWYoIUkpcmV0dXJuIEE7bGV0IGU9dCYmdC5lbmNvZGV8fCR0LGc9dCYmdC5zZXJpYWxpemUscjtpZihnP3I9ZyhJLHQpOnI9Qi5pc1VSTFNlYXJjaFBhcmFtcyhJKT9JLnRvU3RyaW5nKCk6bmV3IEVBKEksdCkudG9TdHJpbmcoZSkscil7bGV0IGk9QS5pbmRleE9mKCIlMjMiKTtpIT09LTEmJihBPUEuc2xpY2UoMCxpKSksQSs9KEEuaW5kZXhPZigiPyIpPT09LTE/Ij8iOiImIikrcn1yZXR1cm4gQX12YXIgR0E9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmhhbmRsZXJzPVtdfXVzZShJLHQsZSl7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOkkscmVqZWN0ZWQ6dCxzeW5jaHJvbm91czplP2Uuc3luY2hyb25vdXM6ITEscnVuV2hlbjplP2UucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX1lamVjdChJKXt0aGlzLmhhbmRsZXJzW0ldJiYodGhpcy5oYW5kbGVyc1tJXT1udWxsKX1jbGVhcigpe3RoaXMuaGFuZGxlcnMmJih0aGlzLmhhbmRsZXJzPVtdKX1mb3JFYWNoKEkpe0IuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLGZ1bmN0aW9uKGUpe2UhPT1udWxsJiZJKGUpfSl9fSxrQT1HQTt2YXIgYUE9e3NpbGVudEpTT05QYXJzaW5nOiEwLGZvcmNlZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9O3ZhciBkST10eXBlb2YgVVJMU2VhcmNoUGFyYW1zPCJ1Ij9VUkxTZWFyY2hQYXJhbXM6RUE7dmFyIHlJPXR5cGVvZiBGb3JtRGF0YTwidSI/Rm9ybURhdGE6bnVsbDt2YXIgd0k9dHlwZW9mIEJsb2I8InUiP0Jsb2I6bnVsbDt2YXIgbUk9e2lzQnJvd3NlcjohMCxjbGFzc2VzOntVUkxTZWFyY2hQYXJhbXM6ZEksRm9ybURhdGE6eUksQmxvYjp3SX0scHJvdG9jb2xzOlsiaHR0cCIsImh0dHBzIiwiZmlsZSIsImJsb2IiLCJ1cmwiLCJkYXRhIl19O3ZhciBMQT17fTtldChMQSx7aGFzQnJvd3NlckVudjooKT0+cEksaGFzU3RhbmRhcmRCcm93c2VyRW52OigpPT5BZSxoYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnY6KCk9PkllfSk7dmFyIHBJPXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2YgZG9jdW1lbnQ8InUiLEFlPShBPT5wSSYmWyJSZWFjdE5hdGl2ZSIsIk5hdGl2ZVNjcmlwdCIsIk5TIl0uaW5kZXhPZihBKTwwKSh0eXBlb2YgbmF2aWdhdG9yPCJ1IiYmbmF2aWdhdG9yLnByb2R1Y3QpLEllPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZTwidSImJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSYmdHlwZW9mIHNlbGYuaW1wb3J0U2NyaXB0cz09ImZ1bmN0aW9uIjt2YXIgdz17Li4uTEEsLi4ubUl9O2Z1bmN0aW9uIEpBKEEsSSl7cmV0dXJuIEwoQSxuZXcgdy5jbGFzc2VzLlVSTFNlYXJjaFBhcmFtcyxPYmplY3QuYXNzaWduKHt2aXNpdG9yOmZ1bmN0aW9uKHQsZSxnLHIpe3JldHVybiB3LmlzTm9kZSYmQi5pc0J1ZmZlcih0KT8odGhpcy5hcHBlbmQoZSx0LnRvU3RyaW5nKCJiYXNlNjQiKSksITEpOnIuZGVmYXVsdFZpc2l0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sSSkpfWZ1bmN0aW9uIHRlKEEpe3JldHVybiBCLm1hdGNoQWxsKC9cXHcrfFxcWyhcXHcqKV0vZyxBKS5tYXAoST0+SVswXT09PSJbXSI/IiI6SVsxXXx8SVswXSl9ZnVuY3Rpb24gZWUoQSl7bGV0IEk9e30sdD1PYmplY3Qua2V5cyhBKSxlLGc9dC5sZW5ndGgscjtmb3IoZT0wO2U8ZztlKyspcj10W2VdLElbcl09QVtyXTtyZXR1cm4gSX1mdW5jdGlvbiBnZShBKXtmdW5jdGlvbiBJKHQsZSxnLHIpe2xldCBpPXRbcisrXSxzPU51bWJlci5pc0Zpbml0ZSgraSksYT1yPj10Lmxlbmd0aDtyZXR1cm4gaT0haSYmQi5pc0FycmF5KGcpP2cubGVuZ3RoOmksYT8oQi5oYXNPd25Qcm9wKGcsaSk/Z1tpXT1bZ1tpXSxlXTpnW2ldPWUsIXMpOigoIWdbaV18fCFCLmlzT2JqZWN0KGdbaV0pKSYmKGdbaV09W10pLEkodCxlLGdbaV0scikmJkIuaXNBcnJheShnW2ldKSYmKGdbaV09ZWUoZ1tpXSkpLCFzKX1pZihCLmlzRm9ybURhdGEoQSkmJkIuaXNGdW5jdGlvbihBLmVudHJpZXMpKXtsZXQgdD17fTtyZXR1cm4gQi5mb3JFYWNoRW50cnkoQSwoZSxnKT0+e0kodGUoZSksZyx0LDApfSksdH1yZXR1cm4gbnVsbH12YXIgY0E9Z2U7ZnVuY3Rpb24gcmUoQSxJLHQpe2lmKEIuaXNTdHJpbmcoQSkpdHJ5e3JldHVybihJfHxKU09OLnBhcnNlKShBKSxCLnRyaW0oQSl9Y2F0Y2goZSl7aWYoZS5uYW1lIT09IlN5bnRheEVycm9yIil0aHJvdyBlfXJldHVybih0fHxKU09OLnN0cmluZ2lmeSkoQSl9dmFyIEhBPXt0cmFuc2l0aW9uYWw6YUEsYWRhcHRlcjpbInhociIsImh0dHAiXSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbihJLHQpe2xldCBlPXQuZ2V0Q29udGVudFR5cGUoKXx8IiIsZz1lLmluZGV4T2YoImFwcGxpY2F0aW9uL2pzb24iKT4tMSxyPUIuaXNPYmplY3QoSSk7aWYociYmQi5pc0hUTUxGb3JtKEkpJiYoST1uZXcgRm9ybURhdGEoSSkpLEIuaXNGb3JtRGF0YShJKSlyZXR1cm4gZyYmZz9KU09OLnN0cmluZ2lmeShjQShJKSk6STtpZihCLmlzQXJyYXlCdWZmZXIoSSl8fEIuaXNCdWZmZXIoSSl8fEIuaXNTdHJlYW0oSSl8fEIuaXNGaWxlKEkpfHxCLmlzQmxvYihJKSlyZXR1cm4gSTtpZihCLmlzQXJyYXlCdWZmZXJWaWV3KEkpKXJldHVybiBJLmJ1ZmZlcjtpZihCLmlzVVJMU2VhcmNoUGFyYW1zKEkpKXJldHVybiB0LnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIsITEpLEkudG9TdHJpbmcoKTtsZXQgcztpZihyKXtpZihlLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpPi0xKXJldHVybiBKQShJLHRoaXMuZm9ybVNlcmlhbGl6ZXIpLnRvU3RyaW5nKCk7aWYoKHM9Qi5pc0ZpbGVMaXN0KEkpKXx8ZS5pbmRleE9mKCJtdWx0aXBhcnQvZm9ybS1kYXRhIik+LTEpe2xldCBhPXRoaXMuZW52JiZ0aGlzLmVudi5Gb3JtRGF0YTtyZXR1cm4gTChzP3siZmlsZXNbXSI6SX06SSxhJiZuZXcgYSx0aGlzLmZvcm1TZXJpYWxpemVyKX19cmV0dXJuIHJ8fGc/KHQuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL2pzb24iLCExKSxyZShJKSk6SX1dLHRyYW5zZm9ybVJlc3BvbnNlOltmdW5jdGlvbihJKXtsZXQgdD10aGlzLnRyYW5zaXRpb25hbHx8SEEudHJhbnNpdGlvbmFsLGU9dCYmdC5mb3JjZWRKU09OUGFyc2luZyxnPXRoaXMucmVzcG9uc2VUeXBlPT09Impzb24iO2lmKEkmJkIuaXNTdHJpbmcoSSkmJihlJiYhdGhpcy5yZXNwb25zZVR5cGV8fGcpKXtsZXQgaT0hKHQmJnQuc2lsZW50SlNPTlBhcnNpbmcpJiZnO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShJKX1jYXRjaChzKXtpZihpKXRocm93IHMubmFtZT09PSJTeW50YXhFcnJvciI/bC5mcm9tKHMsbC5FUlJfQkFEX1JFU1BPTlNFLHRoaXMsbnVsbCx0aGlzLnJlc3BvbnNlKTpzfX1yZXR1cm4gSX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSxtYXhCb2R5TGVuZ3RoOi0xLGVudjp7Rm9ybURhdGE6dy5jbGFzc2VzLkZvcm1EYXRhLEJsb2I6dy5jbGFzc2VzLkJsb2J9LHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKEkpe3JldHVybiBJPj0yMDAmJkk8MzAwfSxoZWFkZXJzOntjb21tb246e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIiwiQ29udGVudC1UeXBlIjp2b2lkIDB9fX07Qi5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCJdLEE9PntIQS5oZWFkZXJzW0FdPXt9fSk7dmFyIE89SEE7dmFyIGllPUIudG9PYmplY3RTZXQoWyJhZ2UiLCJhdXRob3JpemF0aW9uIiwiY29udGVudC1sZW5ndGgiLCJjb250ZW50LXR5cGUiLCJldGFnIiwiZXhwaXJlcyIsImZyb20iLCJob3N0IiwiaWYtbW9kaWZpZWQtc2luY2UiLCJpZi11bm1vZGlmaWVkLXNpbmNlIiwibGFzdC1tb2RpZmllZCIsImxvY2F0aW9uIiwibWF4LWZvcndhcmRzIiwicHJveHktYXV0aG9yaXphdGlvbiIsInJlZmVyZXIiLCJyZXRyeS1hZnRlciIsInVzZXItYWdlbnQiXSksU0k9QT0+e2xldCBJPXt9LHQsZSxnO3JldHVybiBBJiZBLnNwbGl0KGAlMEFgKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe2c9aS5pbmRleE9mKCI6IiksdD1pLnN1YnN0cmluZygwLGcpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLGU9aS5zdWJzdHJpbmcoZysxKS50cmltKCksISghdHx8SVt0XSYmaWVbdF0pJiYodD09PSJzZXQtY29va2llIj9JW3RdP0lbdF0ucHVzaChlKTpJW3RdPVtlXTpJW3RdPUlbdF0/SVt0XSsiLCAiK2U6ZSl9KSxJfTt2YXIgRkk9U3ltYm9sKCJpbnRlcm5hbHMiKTtmdW5jdGlvbiB6KEEpe3JldHVybiBBJiZTdHJpbmcoQSkudHJpbSgpLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gZkEoQSl7cmV0dXJuIEE9PT0hMXx8QT09bnVsbD9BOkIuaXNBcnJheShBKT9BLm1hcChmQSk6U3RyaW5nKEEpfWZ1bmN0aW9uIG9lKEEpe2xldCBJPU9iamVjdC5jcmVhdGUobnVsbCksdD0vKFteXFxzLDs9XSspXFxzKig/Oj1cXHMqKFteLDtdKykpPy9nLGU7Zm9yKDtlPXQuZXhlYyhBKTspSVtlWzFdXT1lWzJdO3JldHVybiBJfXZhciBCZT1BPT4vXlstX2EtekEtWjAtOV5gfH4sISUyMyQlJlwnKisuXSskLy50ZXN0KEEudHJpbSgpKTtmdW5jdGlvbiBZQShBLEksdCxlLGcpe2lmKEIuaXNGdW5jdGlvbihlKSlyZXR1cm4gZS5jYWxsKHRoaXMsSSx0KTtpZihnJiYoST10KSwhIUIuaXNTdHJpbmcoSSkpe2lmKEIuaXNTdHJpbmcoZSkpcmV0dXJuIEkuaW5kZXhPZihlKSE9PS0xO2lmKEIuaXNSZWdFeHAoZSkpcmV0dXJuIGUudGVzdChJKX19ZnVuY3Rpb24gQ2UoQSl7cmV0dXJuIEEudHJpbSgpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvKFthLXpcXGRdKShcXHcqKS9nLChJLHQsZSk9PnQudG9VcHBlckNhc2UoKStlKX1mdW5jdGlvbiBzZShBLEkpe2xldCB0PUIudG9DYW1lbENhc2UoIiAiK0kpO1siZ2V0Iiwic2V0IiwiaGFzIl0uZm9yRWFjaChlPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KEEsZSt0LHt2YWx1ZTpmdW5jdGlvbihnLHIsaSl7cmV0dXJuIHRoaXNbZV0uY2FsbCh0aGlzLEksZyxyLGkpfSxjb25maWd1cmFibGU6ITB9KX0pfXZhciBUPWNsYXNze2NvbnN0cnVjdG9yKEkpe0kmJnRoaXMuc2V0KEkpfXNldChJLHQsZSl7bGV0IGc9dGhpcztmdW5jdGlvbiByKHMsYSxuKXtsZXQgQz16KGEpO2lmKCFDKXRocm93IG5ldyBFcnJvcigiaGVhZGVyIG5hbWUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmciKTtsZXQgbz1CLmZpbmRLZXkoZyxDKTsoIW98fGdbb109PT12b2lkIDB8fG49PT0hMHx8bj09PXZvaWQgMCYmZ1tvXSE9PSExKSYmKGdbb3x8YV09ZkEocykpfWxldCBpPShzLGEpPT5CLmZvckVhY2gocywobixDKT0+cihuLEMsYSkpO3JldHVybiBCLmlzUGxhaW5PYmplY3QoSSl8fEkgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yP2koSSx0KTpCLmlzU3RyaW5nKEkpJiYoST1JLnRyaW0oKSkmJiFCZShJKT9pKFNJKEkpLHQpOkkhPW51bGwmJnIodCxJLGUpLHRoaXN9Z2V0KEksdCl7aWYoST16KEkpLEkpe2xldCBlPUIuZmluZEtleSh0aGlzLEkpO2lmKGUpe2xldCBnPXRoaXNbZV07aWYoIXQpcmV0dXJuIGc7aWYodD09PSEwKXJldHVybiBvZShnKTtpZihCLmlzRnVuY3Rpb24odCkpcmV0dXJuIHQuY2FsbCh0aGlzLGcsZSk7aWYoQi5pc1JlZ0V4cCh0KSlyZXR1cm4gdC5leGVjKGcpO3Rocm93IG5ldyBUeXBlRXJyb3IoInBhcnNlciBtdXN0IGJlIGJvb2xlYW58cmVnZXhwfGZ1bmN0aW9uIil9fX1oYXMoSSx0KXtpZihJPXooSSksSSl7bGV0IGU9Qi5maW5kS2V5KHRoaXMsSSk7cmV0dXJuISEoZSYmdGhpc1tlXSE9PXZvaWQgMCYmKCF0fHxZQSh0aGlzLHRoaXNbZV0sZSx0KSkpfXJldHVybiExfWRlbGV0ZShJLHQpe2xldCBlPXRoaXMsZz0hMTtmdW5jdGlvbiByKGkpe2lmKGk9eihpKSxpKXtsZXQgcz1CLmZpbmRLZXkoZSxpKTtzJiYoIXR8fFlBKGUsZVtzXSxzLHQpKSYmKGRlbGV0ZSBlW3NdLGc9ITApfX1yZXR1cm4gQi5pc0FycmF5KEkpP0kuZm9yRWFjaChyKTpyKEkpLGd9Y2xlYXIoSSl7bGV0IHQ9T2JqZWN0LmtleXModGhpcyksZT10Lmxlbmd0aCxnPSExO2Zvcig7ZS0tOyl7bGV0IHI9dFtlXTsoIUl8fFlBKHRoaXMsdGhpc1tyXSxyLEksITApKSYmKGRlbGV0ZSB0aGlzW3JdLGc9ITApfXJldHVybiBnfW5vcm1hbGl6ZShJKXtsZXQgdD10aGlzLGU9e307cmV0dXJuIEIuZm9yRWFjaCh0aGlzLChnLHIpPT57bGV0IGk9Qi5maW5kS2V5KGUscik7aWYoaSl7dFtpXT1mQShnKSxkZWxldGUgdFtyXTtyZXR1cm59bGV0IHM9ST9DZShyKTpTdHJpbmcocikudHJpbSgpO3MhPT1yJiZkZWxldGUgdFtyXSx0W3NdPWZBKGcpLGVbc109ITB9KSx0aGlzfWNvbmNhdCguLi5JKXtyZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5jb25jYXQodGhpcywuLi5JKX10b0pTT04oSSl7bGV0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gQi5mb3JFYWNoKHRoaXMsKGUsZyk9PntlIT1udWxsJiZlIT09ITEmJih0W2ddPUkmJkIuaXNBcnJheShlKT9lLmpvaW4oIiwgIik6ZSl9KSx0fVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMudG9KU09OKCkpW1N5bWJvbC5pdGVyYXRvcl0oKX10b1N0cmluZygpe3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKS5tYXAoKFtJLHRdKT0+SSsiOiAiK3QpLmpvaW4oYCUwQWApfWdldFtTeW1ib2wudG9TdHJpbmdUYWddKCl7cmV0dXJuIkF4aW9zSGVhZGVycyJ9c3RhdGljIGZyb20oSSl7cmV0dXJuIEkgaW5zdGFuY2VvZiB0aGlzP0k6bmV3IHRoaXMoSSl9c3RhdGljIGNvbmNhdChJLC4uLnQpe2xldCBlPW5ldyB0aGlzKEkpO3JldHVybiB0LmZvckVhY2goZz0+ZS5zZXQoZykpLGV9c3RhdGljIGFjY2Vzc29yKEkpe2xldCBlPSh0aGlzW0ZJXT10aGlzW0ZJXT17YWNjZXNzb3JzOnt9fSkuYWNjZXNzb3JzLGc9dGhpcy5wcm90b3R5cGU7ZnVuY3Rpb24gcihpKXtsZXQgcz16KGkpO2Vbc118fChzZShnLGkpLGVbc109ITApfXJldHVybiBCLmlzQXJyYXkoSSk/SS5mb3JFYWNoKHIpOnIoSSksdGhpc319O1QuYWNjZXNzb3IoWyJDb250ZW50LVR5cGUiLCJDb250ZW50LUxlbmd0aCIsIkFjY2VwdCIsIkFjY2VwdC1FbmNvZGluZyIsIlVzZXItQWdlbnQiLCJBdXRob3JpemF0aW9uIl0pO0IucmVkdWNlRGVzY3JpcHRvcnMoVC5wcm90b3R5cGUsKHt2YWx1ZTpBfSxJKT0+e2xldCB0PUlbMF0udG9VcHBlckNhc2UoKStJLnNsaWNlKDEpO3JldHVybntnZXQ6KCk9PkEsc2V0KGUpe3RoaXNbdF09ZX19fSk7Qi5mcmVlemVNZXRob2RzKFQpO3ZhciBtPVQ7ZnVuY3Rpb24gXyhBLEkpe2xldCB0PXRoaXN8fE8sZT1JfHx0LGc9bS5mcm9tKGUuaGVhZGVycykscj1lLmRhdGE7cmV0dXJuIEIuZm9yRWFjaChBLGZ1bmN0aW9uKHMpe3I9cy5jYWxsKHQscixnLm5vcm1hbGl6ZSgpLEk/SS5zdGF0dXM6dm9pZCAwKX0pLGcubm9ybWFsaXplKCkscn1mdW5jdGlvbiB2KEEpe3JldHVybiEhKEEmJkEuX19DQU5DRUxfXyl9ZnVuY3Rpb24gUkkoQSxJLHQpe2wuY2FsbCh0aGlzLEE/PyJjYW5jZWxlZCIsbC5FUlJfQ0FOQ0VMRUQsSSx0KSx0aGlzLm5hbWU9IkNhbmNlbGVkRXJyb3IifUIuaW5oZXJpdHMoUkksbCx7X19DQU5DRUxfXzohMH0pO3ZhciBKPVJJO2Z1bmN0aW9uIGJBKEEsSSx0KXtsZXQgZT10LmNvbmZpZy52YWxpZGF0ZVN0YXR1czshdC5zdGF0dXN8fCFlfHxlKHQuc3RhdHVzKT9BKHQpOkkobmV3IGwoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIit0LnN0YXR1cyxbbC5FUlJfQkFEX1JFUVVFU1QsbC5FUlJfQkFEX1JFU1BPTlNFXVtNYXRoLmZsb29yKHQuc3RhdHVzLzEwMCktNF0sdC5jb25maWcsdC5yZXF1ZXN0LHQpKX12YXIgTkk9dy5oYXNTdGFuZGFyZEJyb3dzZXJFbnY/e3dyaXRlKEEsSSx0LGUsZyxyKXtsZXQgaT1bQSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KEkpXTtCLmlzTnVtYmVyKHQpJiZpLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZSh0KS50b0dNVFN0cmluZygpKSxCLmlzU3RyaW5nKGUpJiZpLnB1c2goInBhdGg9IitlKSxCLmlzU3RyaW5nKGcpJiZpLnB1c2goImRvbWFpbj0iK2cpLHI9PT0hMCYmaS5wdXNoKCJzZWN1cmUiKSxkb2N1bWVudC5jb29raWU9aS5qb2luKCI7ICIpfSxyZWFkKEEpe2xldCBJPWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCIoXnw7XFxcXHMqKSgiK0ErIik9KFteO10qKSIpKTtyZXR1cm4gST9kZWNvZGVVUklDb21wb25lbnQoSVszXSk6bnVsbH0scmVtb3ZlKEEpe3RoaXMud3JpdGUoQSwiIixEYXRlLm5vdygpLTg2NGU1KX19Ont3cml0ZSgpe30scmVhZCgpe3JldHVybiBudWxsfSxyZW1vdmUoKXt9fTtmdW5jdGlvbiBNQShBKXtyZXR1cm4vXihbYS16XVthLXpcXGQrXFwtLl0qOik/XFwvXFwvL2kudGVzdChBKX1mdW5jdGlvbiBxQShBLEkpe3JldHVybiBJP0EucmVwbGFjZSgvXFwvKyQvLCIiKSsiLyIrSS5yZXBsYWNlKC9eXFwvKy8sIiIpOkF9ZnVuY3Rpb24gJChBLEkpe3JldHVybiBBJiYhTUEoSSk/cUEoQSxJKTpJfXZhciBVST13Lmhhc1N0YW5kYXJkQnJvd3NlckVudj9mdW5jdGlvbigpe2xldCBJPS8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIiksZTtmdW5jdGlvbiBnKHIpe2xldCBpPXI7cmV0dXJuIEkmJih0LnNldEF0dHJpYnV0ZSgiaHJlZiIsaSksaT10LmhyZWYpLHQuc2V0QXR0cmlidXRlKCJocmVmIixpKSx7aHJlZjp0LmhyZWYscHJvdG9jb2w6dC5wcm90b2NvbD90LnByb3RvY29sLnJlcGxhY2UoLzokLywiIik6IiIsaG9zdDp0Lmhvc3Qsc2VhcmNoOnQuc2VhcmNoP3Quc2VhcmNoLnJlcGxhY2UoL15cXD8vLCIiKToiIixoYXNoOnQuaGFzaD90Lmhhc2gucmVwbGFjZSgvXiUyMy8sIiIpOiIiLGhvc3RuYW1lOnQuaG9zdG5hbWUscG9ydDp0LnBvcnQscGF0aG5hbWU6dC5wYXRobmFtZS5jaGFyQXQoMCk9PT0iLyI/dC5wYXRobmFtZToiLyIrdC5wYXRobmFtZX19cmV0dXJuIGU9Zyh3aW5kb3cubG9jYXRpb24uaHJlZiksZnVuY3Rpb24oaSl7bGV0IHM9Qi5pc1N0cmluZyhpKT9nKGkpOmk7cmV0dXJuIHMucHJvdG9jb2w9PT1lLnByb3RvY29sJiZzLmhvc3Q9PT1lLmhvc3R9fSgpOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuITB9fSgpO2Z1bmN0aW9uIEtBKEEpe2xldCBJPS9eKFstK1xcd117MSwyNX0pKDo/XFwvXFwvfDopLy5leGVjKEEpO3JldHVybiBJJiZJWzFdfHwiIn1mdW5jdGlvbiBRZShBLEkpe0E9QXx8MTA7bGV0IHQ9bmV3IEFycmF5KEEpLGU9bmV3IEFycmF5KEEpLGc9MCxyPTAsaTtyZXR1cm4gST1JIT09dm9pZCAwP0k6MWUzLGZ1bmN0aW9uKGEpe2xldCBuPURhdGUubm93KCksQz1lW3JdO2l8fChpPW4pLHRbZ109YSxlW2ddPW47bGV0IG89cixmPTA7Zm9yKDtvIT09ZzspZis9dFtvKytdLG89byVBO2lmKGc9KGcrMSklQSxnPT09ciYmKHI9KHIrMSklQSksbi1pPEkpcmV0dXJuO2xldCBRPUMmJm4tQztyZXR1cm4gUT9NYXRoLnJvdW5kKGYqMWUzL1EpOnZvaWQgMH19dmFyIEdJPVFlO2Z1bmN0aW9uIGtJKEEsSSl7bGV0IHQ9MCxlPUdJKDUwLDI1MCk7cmV0dXJuIGc9PntsZXQgcj1nLmxvYWRlZCxpPWcubGVuZ3RoQ29tcHV0YWJsZT9nLnRvdGFsOnZvaWQgMCxzPXItdCxhPWUocyksbj1yPD1pO3Q9cjtsZXQgQz17bG9hZGVkOnIsdG90YWw6aSxwcm9ncmVzczppP3IvaTp2b2lkIDAsYnl0ZXM6cyxyYXRlOmF8fHZvaWQgMCxlc3RpbWF0ZWQ6YSYmaSYmbj8oaS1yKS9hOnZvaWQgMCxldmVudDpnfTtDW0k/ImRvd25sb2FkIjoidXBsb2FkIl09ITAsQShDKX19dmFyIG5lPXR5cGVvZiBYTUxIdHRwUmVxdWVzdDwidSIsTEk9bmUmJmZ1bmN0aW9uKEEpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0LGUpe2xldCBnPUEuZGF0YSxyPW0uZnJvbShBLmhlYWRlcnMpLm5vcm1hbGl6ZSgpLHtyZXNwb25zZVR5cGU6aSx3aXRoWFNSRlRva2VuOnN9PUEsYTtmdW5jdGlvbiBuKCl7QS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi51bnN1YnNjcmliZShhKSxBLnNpZ25hbCYmQS5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGEpfWxldCBDO2lmKEIuaXNGb3JtRGF0YShnKSl7aWYody5oYXNTdGFuZGFyZEJyb3dzZXJFbnZ8fHcuaGFzU3RhbmRhcmRCcm93c2VyV2ViV29ya2VyRW52KXIuc2V0Q29udGVudFR5cGUoITEpO2Vsc2UgaWYoKEM9ci5nZXRDb250ZW50VHlwZSgpKSE9PSExKXtsZXRbYywuLi51XT1DP0Muc3BsaXQoIjsiKS5tYXAoZD0+ZC50cmltKCkpLmZpbHRlcihCb29sZWFuKTpbXTtyLnNldENvbnRlbnRUeXBlKFtjfHwibXVsdGlwYXJ0L2Zvcm0tZGF0YSIsLi4udV0uam9pbigiOyAiKSl9fWxldCBvPW5ldyBYTUxIdHRwUmVxdWVzdDtpZihBLmF1dGgpe2xldCBjPUEuYXV0aC51c2VybmFtZXx8IiIsdT1BLmF1dGgucGFzc3dvcmQ/dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEEuYXV0aC5wYXNzd29yZCkpOiIiO3Iuc2V0KCJBdXRob3JpemF0aW9uIiwiQmFzaWMgIitidG9hKGMrIjoiK3UpKX1sZXQgZj0kKEEuYmFzZVVSTCxBLnVybCk7by5vcGVuKEEubWV0aG9kLnRvVXBwZXJDYXNlKCksWChmLEEucGFyYW1zLEEucGFyYW1zU2VyaWFsaXplciksITApLG8udGltZW91dD1BLnRpbWVvdXQ7ZnVuY3Rpb24gUSgpe2lmKCFvKXJldHVybjtsZXQgYz1tLmZyb20oImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiBvJiZvLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSxkPXtkYXRhOiFpfHxpPT09InRleHQifHxpPT09Impzb24iP28ucmVzcG9uc2VUZXh0Om8ucmVzcG9uc2Usc3RhdHVzOm8uc3RhdHVzLHN0YXR1c1RleHQ6by5zdGF0dXNUZXh0LGhlYWRlcnM6Yyxjb25maWc6QSxyZXF1ZXN0Om99O2JBKGZ1bmN0aW9uKE4pe3QoTiksbigpfSxmdW5jdGlvbihOKXtlKE4pLG4oKX0sZCksbz1udWxsfWlmKCJvbmxvYWRlbmQiaW4gbz9vLm9ubG9hZGVuZD1ROm8ub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7IW98fG8ucmVhZHlTdGF0ZSE9PTR8fG8uc3RhdHVzPT09MCYmIShvLnJlc3BvbnNlVVJMJiZvLnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6Iik9PT0wKXx8c2V0VGltZW91dChRKX0sby5vbmFib3J0PWZ1bmN0aW9uKCl7byYmKGUobmV3IGwoIlJlcXVlc3QgYWJvcnRlZCIsbC5FQ09OTkFCT1JURUQsQSxvKSksbz1udWxsKX0sby5vbmVycm9yPWZ1bmN0aW9uKCl7ZShuZXcgbCgiTmV0d29yayBFcnJvciIsbC5FUlJfTkVUV09SSyxBLG8pKSxvPW51bGx9LG8ub250aW1lb3V0PWZ1bmN0aW9uKCl7bGV0IHU9QS50aW1lb3V0PyJ0aW1lb3V0IG9mICIrQS50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiLGQ9QS50cmFuc2l0aW9uYWx8fGFBO0EudGltZW91dEVycm9yTWVzc2FnZSYmKHU9QS50aW1lb3V0RXJyb3JNZXNzYWdlKSxlKG5ldyBsKHUsZC5jbGFyaWZ5VGltZW91dEVycm9yP2wuRVRJTUVET1VUOmwuRUNPTk5BQk9SVEVELEEsbykpLG89bnVsbH0sdy5oYXNTdGFuZGFyZEJyb3dzZXJFbnYmJihzJiZCLmlzRnVuY3Rpb24ocykmJihzPXMoQSkpLHN8fHMhPT0hMSYmVUkoZikpKXtsZXQgYz1BLnhzcmZIZWFkZXJOYW1lJiZBLnhzcmZDb29raWVOYW1lJiZOSS5yZWFkKEEueHNyZkNvb2tpZU5hbWUpO2MmJnIuc2V0KEEueHNyZkhlYWRlck5hbWUsYyl9Zz09PXZvaWQgMCYmci5zZXRDb250ZW50VHlwZShudWxsKSwic2V0UmVxdWVzdEhlYWRlciJpbiBvJiZCLmZvckVhY2goci50b0pTT04oKSxmdW5jdGlvbih1LGQpe28uc2V0UmVxdWVzdEhlYWRlcihkLHUpfSksQi5pc1VuZGVmaW5lZChBLndpdGhDcmVkZW50aWFscyl8fChvLndpdGhDcmVkZW50aWFscz0hIUEud2l0aENyZWRlbnRpYWxzKSxpJiZpIT09Impzb24iJiYoby5yZXNwb25zZVR5cGU9QS5yZXNwb25zZVR5cGUpLHR5cGVvZiBBLm9uRG93bmxvYWRQcm9ncmVzcz09ImZ1bmN0aW9uIiYmby5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsa0koQS5vbkRvd25sb2FkUHJvZ3Jlc3MsITApKSx0eXBlb2YgQS5vblVwbG9hZFByb2dyZXNzPT0iZnVuY3Rpb24iJiZvLnVwbG9hZCYmby51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGtJKEEub25VcGxvYWRQcm9ncmVzcykpLChBLmNhbmNlbFRva2VufHxBLnNpZ25hbCkmJihhPWM9PntvJiYoZSghY3x8Yy50eXBlP25ldyBKKG51bGwsQSxvKTpjKSxvLmFib3J0KCksbz1udWxsKX0sQS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUoYSksQS5zaWduYWwmJihBLnNpZ25hbC5hYm9ydGVkP2EoKTpBLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsYSkpKTtsZXQgRT1LQShmKTtpZihFJiZ3LnByb3RvY29scy5pbmRleE9mKEUpPT09LTEpe2UobmV3IGwoIlVuc3VwcG9ydGVkIHByb3RvY29sICIrRSsiOiIsbC5FUlJfQkFEX1JFUVVFU1QsQSkpO3JldHVybn1vLnNlbmQoZ3x8bnVsbCl9KX07dmFyIE9BPXtodHRwOm5BLHhocjpMSX07Qi5mb3JFYWNoKE9BLChBLEkpPT57aWYoQSl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJuYW1lIix7dmFsdWU6SX0pfWNhdGNoe31PYmplY3QuZGVmaW5lUHJvcGVydHkoQSwiYWRhcHRlck5hbWUiLHt2YWx1ZTpJfSl9fSk7dmFyIEpJPUE9PmAtICR7QX1gLEVlPUE9PkIuaXNGdW5jdGlvbihBKXx8QT09PW51bGx8fEE9PT0hMSxsQT17Z2V0QWRhcHRlcjpBPT57QT1CLmlzQXJyYXkoQSk/QTpbQV07bGV0e2xlbmd0aDpJfT1BLHQsZSxnPXt9O2ZvcihsZXQgcj0wO3I8STtyKyspe3Q9QVtyXTtsZXQgaTtpZihlPXQsIUVlKHQpJiYoZT1PQVsoaT1TdHJpbmcodCkpLnRvTG93ZXJDYXNlKCldLGU9PT12b2lkIDApKXRocm93IG5ldyBsKGBVbmtub3duIGFkYXB0ZXIgXCcke2l9XCdgKTtpZihlKWJyZWFrO2dbaXx8IiUyMyIrcl09ZX1pZighZSl7bGV0IHI9T2JqZWN0LmVudHJpZXMoZykubWFwKChbcyxhXSk9PmBhZGFwdGVyICR7c30gYCsoYT09PSExPyJpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBlbnZpcm9ubWVudCI6ImlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGJ1aWxkIikpLGk9ST9yLmxlbmd0aD4xP2BzaW5jZSA6JTBBYCtyLm1hcChKSSkuam9pbihgJTBBYCk6IiAiK0pJKHJbMF0pOiJhcyBubyBhZGFwdGVyIHNwZWNpZmllZCI7dGhyb3cgbmV3IGwoIlRoZXJlIGlzIG5vIHN1aXRhYmxlIGFkYXB0ZXIgdG8gZGlzcGF0Y2ggdGhlIHJlcXVlc3QgIitpLCJFUlJfTk9UX1NVUFBPUlQiKX1yZXR1cm4gZX0sYWRhcHRlcnM6T0F9O2Z1bmN0aW9uIFRBKEEpe2lmKEEuY2FuY2VsVG9rZW4mJkEuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpLEEuc2lnbmFsJiZBLnNpZ25hbC5hYm9ydGVkKXRocm93IG5ldyBKKG51bGwsQSl9ZnVuY3Rpb24gREEoQSl7cmV0dXJuIFRBKEEpLEEuaGVhZGVycz1tLmZyb20oQS5oZWFkZXJzKSxBLmRhdGE9Xy5jYWxsKEEsQS50cmFuc2Zvcm1SZXF1ZXN0KSxbInBvc3QiLCJwdXQiLCJwYXRjaCJdLmluZGV4T2YoQS5tZXRob2QpIT09LTEmJkEuaGVhZGVycy5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiwhMSksbEEuZ2V0QWRhcHRlcihBLmFkYXB0ZXJ8fE8uYWRhcHRlcikoQSkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gVEEoQSksZS5kYXRhPV8uY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2UsZSksZS5oZWFkZXJzPW0uZnJvbShlLmhlYWRlcnMpLGV9LGZ1bmN0aW9uKGUpe3JldHVybiB2KGUpfHwoVEEoQSksZSYmZS5yZXNwb25zZSYmKGUucmVzcG9uc2UuZGF0YT1fLmNhbGwoQSxBLnRyYW5zZm9ybVJlc3BvbnNlLGUucmVzcG9uc2UpLGUucmVzcG9uc2UuaGVhZGVycz1tLmZyb20oZS5yZXNwb25zZS5oZWFkZXJzKSkpLFByb21pc2UucmVqZWN0KGUpfSl9dmFyIEhJPUE9PkEgaW5zdGFuY2VvZiBtP0EudG9KU09OKCk6QTtmdW5jdGlvbiBHKEEsSSl7ST1JfHx7fTtsZXQgdD17fTtmdW5jdGlvbiBlKG4sQyxvKXtyZXR1cm4gQi5pc1BsYWluT2JqZWN0KG4pJiZCLmlzUGxhaW5PYmplY3QoQyk/Qi5tZXJnZS5jYWxsKHtjYXNlbGVzczpvfSxuLEMpOkIuaXNQbGFpbk9iamVjdChDKT9CLm1lcmdlKHt9LEMpOkIuaXNBcnJheShDKT9DLnNsaWNlKCk6Q31mdW5jdGlvbiBnKG4sQyxvKXtpZihCLmlzVW5kZWZpbmVkKEMpKXtpZighQi5pc1VuZGVmaW5lZChuKSlyZXR1cm4gZSh2b2lkIDAsbixvKX1lbHNlIHJldHVybiBlKG4sQyxvKX1mdW5jdGlvbiByKG4sQyl7aWYoIUIuaXNVbmRlZmluZWQoQykpcmV0dXJuIGUodm9pZCAwLEMpfWZ1bmN0aW9uIGkobixDKXtpZihCLmlzVW5kZWZpbmVkKEMpKXtpZighQi5pc1VuZGVmaW5lZChuKSlyZXR1cm4gZSh2b2lkIDAsbil9ZWxzZSByZXR1cm4gZSh2b2lkIDAsQyl9ZnVuY3Rpb24gcyhuLEMsbyl7aWYobyBpbiBJKXJldHVybiBlKG4sQyk7aWYobyBpbiBBKXJldHVybiBlKHZvaWQgMCxuKX1sZXQgYT17dXJsOnIsbWV0aG9kOnIsZGF0YTpyLGJhc2VVUkw6aSx0cmFuc2Zvcm1SZXF1ZXN0OmksdHJhbnNmb3JtUmVzcG9uc2U6aSxwYXJhbXNTZXJpYWxpemVyOmksdGltZW91dDppLHRpbWVvdXRNZXNzYWdlOmksd2l0aENyZWRlbnRpYWxzOmksd2l0aFhTUkZUb2tlbjppLGFkYXB0ZXI6aSxyZXNwb25zZVR5cGU6aSx4c3JmQ29va2llTmFtZTppLHhzcmZIZWFkZXJOYW1lOmksb25VcGxvYWRQcm9ncmVzczppLG9uRG93bmxvYWRQcm9ncmVzczppLGRlY29tcHJlc3M6aSxtYXhDb250ZW50TGVuZ3RoOmksbWF4Qm9keUxlbmd0aDppLGJlZm9yZVJlZGlyZWN0OmksdHJhbnNwb3J0OmksaHR0cEFnZW50OmksaHR0cHNBZ2VudDppLGNhbmNlbFRva2VuOmksc29ja2V0UGF0aDppLHJlc3BvbnNlRW5jb2Rpbmc6aSx2YWxpZGF0ZVN0YXR1czpzLGhlYWRlcnM6KG4sQyk9PmcoSEkobiksSEkoQyksITApfTtyZXR1cm4gQi5mb3JFYWNoKE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sQSxJKSksZnVuY3Rpb24oQyl7bGV0IG89YVtDXXx8ZyxmPW8oQVtDXSxJW0NdLEMpO0IuaXNVbmRlZmluZWQoZikmJm8hPT1zfHwodFtDXT1mKX0pLHR9dmFyIHVBPSIxLjYuMiI7dmFyIHhBPXt9O1sib2JqZWN0IiwiYm9vbGVhbiIsIm51bWJlciIsImZ1bmN0aW9uIiwic3RyaW5nIiwic3ltYm9sIl0uZm9yRWFjaCgoQSxJKT0+e3hBW0FdPWZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09PUF8fCJhIisoSTwxPyJuICI6IiAiKStBfX0pO3ZhciBZST17fTt4QS50cmFuc2l0aW9uYWw9ZnVuY3Rpb24oSSx0LGUpe2Z1bmN0aW9uIGcocixpKXtyZXR1cm4iW0F4aW9zIHYiK3VBKyJdIFRyYW5zaXRpb25hbCBvcHRpb24gXCciK3IrIlwnIitpKyhlPyIuICIrZToiIil9cmV0dXJuKHIsaSxzKT0+e2lmKEk9PT0hMSl0aHJvdyBuZXcgbChnKGksIiBoYXMgYmVlbiByZW1vdmVkIisodD8iIGluICIrdDoiIikpLGwuRVJSX0RFUFJFQ0FURUQpO3JldHVybiB0JiYhWUlbaV0mJihZSVtpXT0hMCxjb25zb2xlLndhcm4oZyhpLCIgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2Iit0KyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLEk/SShyLGkscyk6ITB9fTtmdW5jdGlvbiBhZShBLEksdCl7aWYodHlwZW9mIEEhPSJvYmplY3QiKXRocm93IG5ldyBsKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0IixsLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtsZXQgZT1PYmplY3Qua2V5cyhBKSxnPWUubGVuZ3RoO2Zvcig7Zy0tID4wOyl7bGV0IHI9ZVtnXSxpPUlbcl07aWYoaSl7bGV0IHM9QVtyXSxhPXM9PT12b2lkIDB8fGkocyxyLEEpO2lmKGEhPT0hMCl0aHJvdyBuZXcgbCgib3B0aW9uICIrcisiIG11c3QgYmUgIithLGwuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2NvbnRpbnVlfWlmKHQhPT0hMCl0aHJvdyBuZXcgbCgiVW5rbm93biBvcHRpb24gIityLGwuRVJSX0JBRF9PUFRJT04pfX12YXIgaEE9e2Fzc2VydE9wdGlvbnM6YWUsdmFsaWRhdG9yczp4QX07dmFyIEg9aEEudmFsaWRhdG9ycyx4PWNsYXNze2NvbnN0cnVjdG9yKEkpe3RoaXMuZGVmYXVsdHM9SSx0aGlzLmludGVyY2VwdG9ycz17cmVxdWVzdDpuZXcga0EscmVzcG9uc2U6bmV3IGtBfX1yZXF1ZXN0KEksdCl7dHlwZW9mIEk9PSJzdHJpbmciPyh0PXR8fHt9LHQudXJsPUkpOnQ9SXx8e30sdD1HKHRoaXMuZGVmYXVsdHMsdCk7bGV0e3RyYW5zaXRpb25hbDplLHBhcmFtc1NlcmlhbGl6ZXI6ZyxoZWFkZXJzOnJ9PXQ7ZSE9PXZvaWQgMCYmaEEuYXNzZXJ0T3B0aW9ucyhlLHtzaWxlbnRKU09OUGFyc2luZzpILnRyYW5zaXRpb25hbChILmJvb2xlYW4pLGZvcmNlZEpTT05QYXJzaW5nOkgudHJhbnNpdGlvbmFsKEguYm9vbGVhbiksY2xhcmlmeVRpbWVvdXRFcnJvcjpILnRyYW5zaXRpb25hbChILmJvb2xlYW4pfSwhMSksZyE9bnVsbCYmKEIuaXNGdW5jdGlvbihnKT90LnBhcmFtc1NlcmlhbGl6ZXI9e3NlcmlhbGl6ZTpnfTpoQS5hc3NlcnRPcHRpb25zKGcse2VuY29kZTpILmZ1bmN0aW9uLHNlcmlhbGl6ZTpILmZ1bmN0aW9ufSwhMCkpLHQubWV0aG9kPSh0Lm1ldGhvZHx8dGhpcy5kZWZhdWx0cy5tZXRob2R8fCJnZXQiKS50b0xvd2VyQ2FzZSgpO2xldCBpPXImJkIubWVyZ2Uoci5jb21tb24sclt0Lm1ldGhvZF0pO3ImJkIuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSxFPT57ZGVsZXRlIHJbRV19KSx0LmhlYWRlcnM9bS5jb25jYXQoaSxyKTtsZXQgcz1bXSxhPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbihjKXt0eXBlb2YgYy5ydW5XaGVuPT0iZnVuY3Rpb24iJiZjLnJ1bldoZW4odCk9PT0hMXx8KGE9YSYmYy5zeW5jaHJvbm91cyxzLnVuc2hpZnQoYy5mdWxmaWxsZWQsYy5yZWplY3RlZCkpfSk7bGV0IG49W107dGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihjKXtuLnB1c2goYy5mdWxmaWxsZWQsYy5yZWplY3RlZCl9KTtsZXQgQyxvPTAsZjtpZighYSl7bGV0IEU9W0RBLmJpbmQodGhpcyksdm9pZCAwXTtmb3IoRS51bnNoaWZ0LmFwcGx5KEUscyksRS5wdXNoLmFwcGx5KEUsbiksZj1FLmxlbmd0aCxDPVByb21pc2UucmVzb2x2ZSh0KTtvPGY7KUM9Qy50aGVuKEVbbysrXSxFW28rK10pO3JldHVybiBDfWY9cy5sZW5ndGg7bGV0IFE9dDtmb3Iobz0wO288Zjspe2xldCBFPXNbbysrXSxjPXNbbysrXTt0cnl7UT1FKFEpfWNhdGNoKHUpe2MuY2FsbCh0aGlzLHUpO2JyZWFrfX10cnl7Qz1EQS5jYWxsKHRoaXMsUSl9Y2F0Y2goRSl7cmV0dXJuIFByb21pc2UucmVqZWN0KEUpfWZvcihvPTAsZj1uLmxlbmd0aDtvPGY7KUM9Qy50aGVuKG5bbysrXSxuW28rK10pO3JldHVybiBDfWdldFVyaShJKXtJPUcodGhpcy5kZWZhdWx0cyxJKTtsZXQgdD0kKEkuYmFzZVVSTCxJLnVybCk7cmV0dXJuIFgodCxJLnBhcmFtcyxJLnBhcmFtc1NlcmlhbGl6ZXIpfX07Qi5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSxmdW5jdGlvbihJKXt4LnByb3RvdHlwZVtJXT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnJlcXVlc3QoRyhlfHx7fSx7bWV0aG9kOkksdXJsOnQsZGF0YTooZXx8e30pLmRhdGF9KSl9fSk7Qi5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sZnVuY3Rpb24oSSl7ZnVuY3Rpb24gdChlKXtyZXR1cm4gZnVuY3Rpb24ocixpLHMpe3JldHVybiB0aGlzLnJlcXVlc3QoRyhzfHx7fSx7bWV0aG9kOkksaGVhZGVyczplP3siQ29udGVudC1UeXBlIjoibXVsdGlwYXJ0L2Zvcm0tZGF0YSJ9Ont9LHVybDpyLGRhdGE6aX0pKX19eC5wcm90b3R5cGVbSV09dCgpLHgucHJvdG90eXBlW0krIkZvcm0iXT10KCEwKX0pO3ZhciBBQT14O3ZhciBQQT1jbGFzcyBBe2NvbnN0cnVjdG9yKEkpe2lmKHR5cGVvZiBJIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoImV4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4iKTtsZXQgdDt0aGlzLnByb21pc2U9bmV3IFByb21pc2UoZnVuY3Rpb24ocil7dD1yfSk7bGV0IGU9dGhpczt0aGlzLnByb21pc2UudGhlbihnPT57aWYoIWUuX2xpc3RlbmVycylyZXR1cm47bGV0IHI9ZS5fbGlzdGVuZXJzLmxlbmd0aDtmb3IoO3ItLSA+MDspZS5fbGlzdGVuZXJzW3JdKGcpO2UuX2xpc3RlbmVycz1udWxsfSksdGhpcy5wcm9taXNlLnRoZW49Zz0+e2xldCByLGk9bmV3IFByb21pc2Uocz0+e2Uuc3Vic2NyaWJlKHMpLHI9c30pLnRoZW4oZyk7cmV0dXJuIGkuY2FuY2VsPWZ1bmN0aW9uKCl7ZS51bnN1YnNjcmliZShyKX0saX0sSShmdW5jdGlvbihyLGkscyl7ZS5yZWFzb258fChlLnJlYXNvbj1uZXcgSihyLGkscyksdChlLnJlYXNvbikpfSl9dGhyb3dJZlJlcXVlc3RlZCgpe2lmKHRoaXMucmVhc29uKXRocm93IHRoaXMucmVhc29ufXN1YnNjcmliZShJKXtpZih0aGlzLnJlYXNvbil7SSh0aGlzLnJlYXNvbik7cmV0dXJufXRoaXMuX2xpc3RlbmVycz90aGlzLl9saXN0ZW5lcnMucHVzaChJKTp0aGlzLl9saXN0ZW5lcnM9W0ldfXVuc3Vic2NyaWJlKEkpe2lmKCF0aGlzLl9saXN0ZW5lcnMpcmV0dXJuO2xldCB0PXRoaXMuX2xpc3RlbmVycy5pbmRleE9mKEkpO3QhPT0tMSYmdGhpcy5fbGlzdGVuZXJzLnNwbGljZSh0LDEpfXN0YXRpYyBzb3VyY2UoKXtsZXQgSTtyZXR1cm57dG9rZW46bmV3IEEoZnVuY3Rpb24oZyl7ST1nfSksY2FuY2VsOkl9fX0sYkk9UEE7ZnVuY3Rpb24gakEoQSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBBLmFwcGx5KG51bGwsdCl9fWZ1bmN0aW9uIFdBKEEpe3JldHVybiBCLmlzT2JqZWN0KEEpJiZBLmlzQXhpb3NFcnJvcj09PSEwfXZhciBaQT17Q29udGludWU6MTAwLFN3aXRjaGluZ1Byb3RvY29sczoxMDEsUHJvY2Vzc2luZzoxMDIsRWFybHlIaW50czoxMDMsT2s6MjAwLENyZWF0ZWQ6MjAxLEFjY2VwdGVkOjIwMixOb25BdXRob3JpdGF0aXZlSW5mb3JtYXRpb246MjAzLE5vQ29udGVudDoyMDQsUmVzZXRDb250ZW50OjIwNSxQYXJ0aWFsQ29udGVudDoyMDYsTXVsdGlTdGF0dXM6MjA3LEFscmVhZHlSZXBvcnRlZDoyMDgsSW1Vc2VkOjIyNixNdWx0aXBsZUNob2ljZXM6MzAwLE1vdmVkUGVybWFuZW50bHk6MzAxLEZvdW5kOjMwMixTZWVPdGhlcjozMDMsTm90TW9kaWZpZWQ6MzA0LFVzZVByb3h5OjMwNSxVbnVzZWQ6MzA2LFRlbXBvcmFyeVJlZGlyZWN0OjMwNyxQZXJtYW5lbnRSZWRpcmVjdDozMDgsQmFkUmVxdWVzdDo0MDAsVW5hdXRob3JpemVkOjQwMSxQYXltZW50UmVxdWlyZWQ6NDAyLEZvcmJpZGRlbjo0MDMsTm90Rm91bmQ6NDA0LE1ldGhvZE5vdEFsbG93ZWQ6NDA1LE5vdEFjY2VwdGFibGU6NDA2LFByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZDo0MDcsUmVxdWVzdFRpbWVvdXQ6NDA4LENvbmZsaWN0OjQwOSxHb25lOjQxMCxMZW5ndGhSZXF1aXJlZDo0MTEsUHJlY29uZGl0aW9uRmFpbGVkOjQxMixQYXlsb2FkVG9vTGFyZ2U6NDEzLFVyaVRvb0xvbmc6NDE0LFVuc3VwcG9ydGVkTWVkaWFUeXBlOjQxNSxSYW5nZU5vdFNhdGlzZmlhYmxlOjQxNixFeHBlY3RhdGlvbkZhaWxlZDo0MTcsSW1BVGVhcG90OjQxOCxNaXNkaXJlY3RlZFJlcXVlc3Q6NDIxLFVucHJvY2Vzc2FibGVFbnRpdHk6NDIyLExvY2tlZDo0MjMsRmFpbGVkRGVwZW5kZW5jeTo0MjQsVG9vRWFybHk6NDI1LFVwZ3JhZGVSZXF1aXJlZDo0MjYsUHJlY29uZGl0aW9uUmVxdWlyZWQ6NDI4LFRvb01hbnlSZXF1ZXN0czo0MjksUmVxdWVzdEhlYWRlckZpZWxkc1Rvb0xhcmdlOjQzMSxVbmF2YWlsYWJsZUZvckxlZ2FsUmVhc29uczo0NTEsSW50ZXJuYWxTZXJ2ZXJFcnJvcjo1MDAsTm90SW1wbGVtZW50ZWQ6NTAxLEJhZEdhdGV3YXk6NTAyLFNlcnZpY2VVbmF2YWlsYWJsZTo1MDMsR2F0ZXdheVRpbWVvdXQ6NTA0LEh0dHBWZXJzaW9uTm90U3VwcG9ydGVkOjUwNSxWYXJpYW50QWxzb05lZ290aWF0ZXM6NTA2LEluc3VmZmljaWVudFN0b3JhZ2U6NTA3LExvb3BEZXRlY3RlZDo1MDgsTm90RXh0ZW5kZWQ6NTEwLE5ldHdvcmtBdXRoZW50aWNhdGlvblJlcXVpcmVkOjUxMX07T2JqZWN0LmVudHJpZXMoWkEpLmZvckVhY2goKFtBLEldKT0+e1pBW0ldPUF9KTt2YXIgTUk9WkE7ZnVuY3Rpb24gcUkoQSl7bGV0IEk9bmV3IEFBKEEpLHQ9VyhBQS5wcm90b3R5cGUucmVxdWVzdCxJKTtyZXR1cm4gQi5leHRlbmQodCxBQS5wcm90b3R5cGUsSSx7YWxsT3duS2V5czohMH0pLEIuZXh0ZW5kKHQsSSxudWxsLHthbGxPd25LZXlzOiEwfSksdC5jcmVhdGU9ZnVuY3Rpb24oZyl7cmV0dXJuIHFJKEcoQSxnKSl9LHR9dmFyIGg9cUkoTyk7aC5BeGlvcz1BQTtoLkNhbmNlbGVkRXJyb3I9SjtoLkNhbmNlbFRva2VuPWJJO2guaXNDYW5jZWw9djtoLlZFUlNJT049dUE7aC50b0Zvcm1EYXRhPUw7aC5BeGlvc0Vycm9yPWw7aC5DYW5jZWw9aC5DYW5jZWxlZEVycm9yO2guYWxsPWZ1bmN0aW9uKEkpe3JldHVybiBQcm9taXNlLmFsbChJKX07aC5zcHJlYWQ9akE7aC5pc0F4aW9zRXJyb3I9V0E7aC5tZXJnZUNvbmZpZz1HO2guQXhpb3NIZWFkZXJzPW07aC5mb3JtVG9KU09OPUE9PmNBKEIuaXNIVE1MRm9ybShBKT9uZXcgRm9ybURhdGEoQSk6QSk7aC5nZXRBZGFwdGVyPWxBLmdldEFkYXB0ZXI7aC5IdHRwU3RhdHVzQ29kZT1NSTtoLmRlZmF1bHQ9aDt2YXIgZEE9aDt2YXJ7QXhpb3M6b2ksQXhpb3NFcnJvcjpCaSxDYW5jZWxlZEVycm9yOkNpLGlzQ2FuY2VsOnNpLENhbmNlbFRva2VuOlFpLFZFUlNJT046bmksYWxsOkVpLENhbmNlbDphaSxpc0F4aW9zRXJyb3I6Y2ksc3ByZWFkOmZpLHRvRm9ybURhdGE6bGksQXhpb3NIZWFkZXJzOkRpLEh0dHBTdGF0dXNDb2RlOnVpLGZvcm1Ub0pTT046aGksZ2V0QWRhcHRlcjpkaSxtZXJnZUNvbmZpZzp5aX09ZEE7dmFyIElBLGssWEEsVkE9e2Vudjp7ZW1zY3JpcHRlbl9ub3RpZnlfbWVtb3J5X2dyb3d0aDpmdW5jdGlvbihBKXtYQT1uZXcgVWludDhBcnJheShrLmV4cG9ydHMubWVtb3J5LmJ1ZmZlcil9fX0seUE9Y2xhc3N7aW5pdCgpe3JldHVybiBJQXx8KHR5cGVvZiBmZXRjaDwidSI/SUE9ZmV0Y2goImRhdGE6YXBwbGljYXRpb24vd2FzbTtiYXNlNjQsIitLSSkudGhlbihJPT5JLmFycmF5QnVmZmVyKCkpLnRoZW4oST0+V2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoSSxWQSkpLnRoZW4odGhpcy5faW5pdCk6SUE9V2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoQnVmZmVyLmZyb20oS0ksImJhc2U2NCIpLFZBKS50aGVuKHRoaXMuX2luaXQpLElBKX1faW5pdChJKXtrPUkuaW5zdGFuY2UsVkEuZW52LmVtc2NyaXB0ZW5fbm90aWZ5X21lbW9yeV9ncm93dGgoMCl9ZGVjb2RlKEksdD0wKXtpZighayl0aHJvdyBuZXcgRXJyb3IoIlpTVEREZWNvZGVyOiBBd2FpdCAuaW5pdCgpIGJlZm9yZSBkZWNvZGluZy4iKTtsZXQgZT1JLmJ5dGVMZW5ndGgsZz1rLmV4cG9ydHMubWFsbG9jKGUpO1hBLnNldChJLGcpLHQ9dHx8TnVtYmVyKGsuZXhwb3J0cy5aU1REX2ZpbmREZWNvbXByZXNzZWRTaXplKGcsZSkpO2xldCByPWsuZXhwb3J0cy5tYWxsb2ModCksaT1rLmV4cG9ydHMuWlNURF9kZWNvbXByZXNzKHIsdCxnLGUpLHM9WEEuc2xpY2UocixyK2kpO3JldHVybiBrLmV4cG9ydHMuZnJlZShnKSxrLmV4cG9ydHMuZnJlZShyKSxzfX0sS0k9IkFHRnpiUUVBQUFBQmJnNWdBMzkvZndGL1lBRi9BWDlnQW45L0FHQUJmd0JnQlg5L2YzOS9BWDlnQTM5L2Z3QmdCSDkvZjM4QmYyQUFBWDlnQW45L0FYOWdCMzkvZjM5L2YzOEJmMkFDZjM4QmZtQUlmMzkvZjM5L2YzOEJmMkFGZjM5L2YzOEFZQTUvZjM5L2YzOS9mMzkvZjM5L2Z3Ri9BaWNCQTJWdWRoOWxiWE5qY21sd2RHVnVYMjV2ZEdsbWVWOXRaVzF2Y25sZlozSnZkM1JvQUFNREl5SUhBQUFCQVFNSEF3RUFDUVFBQlFFSUNBRUZCZ1FFQkFNR0FBQUtBQVVMREEwR0JBVUJjQUVCQVFVSEFRR0FBb0NBQWdZSUFYOEJRWUNqQkFzSHJnRUxCbTFsYlc5eWVRSUFCbTFoYkd4dll3QUZCR1p5WldVQUJneGFVMVJFWDJselJYSnliM0lBRWhsYVUxUkVYMlpwYm1SRVpXTnZiWEJ5WlhOelpXUlRhWHBsQUJ3UFdsTlVSRjlrWldOdmJYQnlaWE56QUNJWlgxOXBibVJwY21WamRGOW1kVzVqZEdsdmJsOTBZV0pzWlFFQUVGOWZaWEp5Ym05ZmJHOWpZWFJwYjI0QUFRbHpkR0ZqYTFOaGRtVUFCd3h6ZEdGamExSmxjM1J2Y21VQUNBcHpkR0ZqYTBGc2JHOWpBQWtLaS9JQklnVUFRWVFmQ3pNQkFYOGdBZ1JBSUFBaEF3TkFJQU1nQVMwQUFEb0FBQ0FEUVFGcUlRTWdBVUVCYWlFQklBSkJBV3NpQWcwQUN3c2dBQXNwQVFGL0lBSUVRQ0FBSVFNRFFDQURJQUU2QUFBZ0EwRUJhaUVESUFKQkFXc2lBZzBBQ3dzZ0FBdHNBUUovUVlBZktBSUFJZ0VnQUVFSGFrRjRjU0lDYWlFQUFrQWdBa0VBSUFBZ0FVMGJEUUFnQUQ4QVFSQjBTd1JBSUFBL0FFRVFkR3RCLy84RGFrRVFka0FBUVg5R0JIOUJBQVZCQUJBQVFRRUxSUTBCQzBHQUh5QUFOZ0lBSUFFUEMwR0VIMEV3TmdJQVFYOEx1U2NCQzM4akFFRVFheUlLSkFBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBQkI5QUZOQkVCQmlCOG9BZ0FpQmtFUUlBQkJDMnBCZUhFZ0FFRUxTUnNpQlVFRGRpSUFkaUlCUVFOeEJFQUNRQ0FCUVg5elFRRnhJQUJxSWdKQkEzUWlBVUd3SDJvaUFDQUJRYmdmYWlnQ0FDSUJLQUlJSWdSR0JFQkJpQjhnQmtGK0lBSjNjVFlDQUF3QkN5QUVJQUEyQWd3Z0FDQUVOZ0lJQ3lBQlFRaHFJUUFnQVNBQ1FRTjBJZ0pCQTNJMkFnUWdBU0FDYWlJQklBRW9BZ1JCQVhJMkFnUU1Ed3NnQlVHUUh5Z0NBQ0lIVFEwQklBRUVRQUpBUVFJZ0FIUWlBa0VBSUFKcmNpQUJJQUIwY1dnaUFVRURkQ0lBUWJBZmFpSUNJQUJCdUI5cUtBSUFJZ0FvQWdnaUJFWUVRRUdJSHlBR1FYNGdBWGR4SWdZMkFnQU1BUXNnQkNBQ05nSU1JQUlnQkRZQ0NBc2dBQ0FGUVFOeU5nSUVJQUFnQldvaUNDQUJRUU4wSWdFZ0JXc2lCRUVCY2pZQ0JDQUFJQUZxSUFRMkFnQWdCd1JBSUFkQmVIRkJzQjlxSVFGQm5COG9BZ0FoQWdKL0lBWkJBU0FIUVFOMmRDSURjVVVFUUVHSUh5QURJQVp5TmdJQUlBRU1BUXNnQVNnQ0NBc2hBeUFCSUFJMkFnZ2dBeUFDTmdJTUlBSWdBVFlDRENBQ0lBTTJBZ2dMSUFCQkNHb2hBRUdjSHlBSU5nSUFRWkFmSUFRMkFnQU1Ed3RCakI4b0FnQWlDMFVOQVNBTGFFRUNkRUc0SVdvb0FnQWlBaWdDQkVGNGNTQUZheUVESUFJaEFRTkFBa0FnQVNnQ0VDSUFSUVJBSUFFb0FoUWlBRVVOQVFzZ0FDZ0NCRUY0Y1NBRmF5SUJJQU1nQVNBRFNTSUJHeUVESUFBZ0FpQUJHeUVDSUFBaEFRd0JDd3NnQWlnQ0dDRUpJQUlnQWlnQ0RDSUVSd1JBUVpnZktBSUFHaUFDS0FJSUlnQWdCRFlDRENBRUlBQTJBZ2dNRGdzZ0FrRVVhaUlCS0FJQUlnQkZCRUFnQWlnQ0VDSUFSUTBESUFKQkVHb2hBUXNEUUNBQklRZ2dBQ0lFUVJScUlnRW9BZ0FpQUEwQUlBUkJFR29oQVNBRUtBSVFJZ0FOQUFzZ0NFRUFOZ0lBREEwTFFYOGhCU0FBUWI5L1N3MEFJQUJCQzJvaUFFRjRjU0VGUVl3ZktBSUFJZ2hGRFFCQkFDQUZheUVEQWtBQ1FBSkFBbjlCQUNBRlFZQUNTUTBBR2tFZklBVkIvLy8vQjBzTkFCb2dCVUVtSUFCQkNIWm5JZ0JyZGtFQmNTQUFRUUYwYTBFK2Fnc2lCMEVDZEVHNElXb29BZ0FpQVVVRVFFRUFJUUFNQVF0QkFDRUFJQVZCR1NBSFFRRjJhMEVBSUFkQkgwY2JkQ0VDQTBBQ1FDQUJLQUlFUVhoeElBVnJJZ1lnQTA4TkFDQUJJUVFnQmlJRERRQkJBQ0VESUFFaEFBd0RDeUFBSUFFb0FoUWlCaUFHSUFFZ0FrRWRka0VFY1dvb0FoQWlBVVliSUFBZ0Joc2hBQ0FDUVFGMElRSWdBUTBBQ3dzZ0FDQUVja1VFUUVFQUlRUkJBaUFIZENJQVFRQWdBR3R5SUFoeElnQkZEUU1nQUdoQkFuUkJ1Q0ZxS0FJQUlRQUxJQUJGRFFFTEEwQWdBQ2dDQkVGNGNTQUZheUlDSUFOSklRRWdBaUFESUFFYklRTWdBQ0FFSUFFYklRUWdBQ2dDRUNJQkJIOGdBUVVnQUNnQ0ZBc2lBQTBBQ3dzZ0JFVU5BQ0FEUVpBZktBSUFJQVZyVHcwQUlBUW9BaGdoQnlBRUlBUW9BZ3dpQWtjRVFFR1lIeWdDQUJvZ0JDZ0NDQ0lBSUFJMkFnd2dBaUFBTmdJSURBd0xJQVJCRkdvaUFTZ0NBQ0lBUlFSQUlBUW9BaEFpQUVVTkF5QUVRUkJxSVFFTEEwQWdBU0VHSUFBaUFrRVVhaUlCS0FJQUlnQU5BQ0FDUVJCcUlRRWdBaWdDRUNJQURRQUxJQVpCQURZQ0FBd0xDeUFGUVpBZktBSUFJZ1JOQkVCQm5COG9BZ0FoQUFKQUlBUWdCV3NpQVVFUVR3UkFJQUFnQldvaUFpQUJRUUZ5TmdJRUlBQWdCR29nQVRZQ0FDQUFJQVZCQTNJMkFnUU1BUXNnQUNBRVFRTnlOZ0lFSUFBZ0JHb2lBU0FCS0FJRVFRRnlOZ0lFUVFBaEFrRUFJUUVMUVpBZklBRTJBZ0JCbkI4Z0FqWUNBQ0FBUVFocUlRQU1EUXNnQlVHVUh5Z0NBQ0lDU1FSQVFaUWZJQUlnQldzaUFUWUNBRUdnSDBHZ0h5Z0NBQ0lBSUFWcUlnSTJBZ0FnQWlBQlFRRnlOZ0lFSUFBZ0JVRURjallDQkNBQVFRaHFJUUFNRFF0QkFDRUFJQVZCTDJvaUF3Si9RZUFpS0FJQUJFQkI2Q0lvQWdBTUFRdEI3Q0pDZnpjQ0FFSGtJa0tBb0lDQWdJQUVOd0lBUWVBaUlBcEJER3BCY0hGQjJLclZxZ1Z6TmdJQVFmUWlRUUEyQWdCQnhDSkJBRFlDQUVHQUlBc2lBV29pQmtFQUlBRnJJZ2h4SWdFZ0JVME5ERUhBSWlnQ0FDSUVCRUJCdUNJb0FnQWlCeUFCYWlJSklBZE5JQVFnQ1VseURRMExBa0JCeENJdEFBQkJCSEZGQkVBQ1FBSkFBa0FDUUVHZ0h5Z0NBQ0lFQkVCQnlDSWhBQU5BSUFRZ0FDZ0NBQ0lIVHdSQUlBY2dBQ2dDQkdvZ0JFc05Bd3NnQUNnQ0NDSUFEUUFMQzBFQUVBUWlBa0YvUmcwRElBRWhCa0hrSWlnQ0FDSUFRUUZySWdRZ0FuRUVRQ0FCSUFKcklBSWdCR3BCQUNBQWEzRnFJUVlMSUFVZ0JrOE5BMEhBSWlnQ0FDSUFCRUJCdUNJb0FnQWlCQ0FHYWlJSUlBUk5JQUFnQ0VseURRUUxJQVlRQkNJQUlBSkhEUUVNQlFzZ0JpQUNheUFJY1NJR0VBUWlBaUFBS0FJQUlBQW9BZ1JxUmcwQklBSWhBQXNnQUVGL1JnMEJJQVZCTUdvZ0JrMEVRQ0FBSVFJTUJBdEI2Q0lvQWdBaUFpQURJQVpyYWtFQUlBSnJjU0lDRUFSQmYwWU5BU0FDSUFacUlRWWdBQ0VDREFNTElBSkJmMGNOQWd0QnhDSkJ4Q0lvQWdCQkJISTJBZ0FMSUFFUUJDSUNRWDlHUVFBUUJDSUFRWDlHY2lBQUlBSk5jZzBGSUFBZ0Ftc2lCaUFGUVNocVRRMEZDMEc0SWtHNElpZ0NBQ0FHYWlJQU5nSUFRYndpS0FJQUlBQkpCRUJCdkNJZ0FEWUNBQXNDUUVHZ0h5Z0NBQ0lEQkVCQnlDSWhBQU5BSUFJZ0FDZ0NBQ0lCSUFBb0FnUWlCR3BHRFFJZ0FDZ0NDQ0lBRFFBTERBUUxRWmdmS0FJQUlnQkJBQ0FBSUFKTkcwVUVRRUdZSHlBQ05nSUFDMEVBSVFCQnpDSWdCallDQUVISUlpQUNOZ0lBUWFnZlFYODJBZ0JCckI5QjRDSW9BZ0EyQWdCQjFDSkJBRFlDQUFOQUlBQkJBM1FpQVVHNEgyb2dBVUd3SDJvaUJEWUNBQ0FCUWJ3ZmFpQUVOZ0lBSUFCQkFXb2lBRUVnUncwQUMwR1VIeUFHUVNocklnQkJlQ0FDYTBFSGNTSUJheUlFTmdJQVFhQWZJQUVnQW1vaUFUWUNBQ0FCSUFSQkFYSTJBZ1FnQUNBQ2FrRW9OZ0lFUWFRZlFmQWlLQUlBTmdJQURBUUxJQUlnQTAwZ0FTQURTM0lOQWlBQUtBSU1RUWh4RFFJZ0FDQUVJQVpxTmdJRVFhQWZJQU5CZUNBRGEwRUhjU0lBYWlJQk5nSUFRWlFmUVpRZktBSUFJQVpxSWdJZ0FHc2lBRFlDQUNBQklBQkJBWEkyQWdRZ0FpQURha0VvTmdJRVFhUWZRZkFpS0FJQU5nSUFEQU1MUVFBaEJBd0tDMEVBSVFJTUNBdEJtQjhvQWdBZ0Frc0VRRUdZSHlBQ05nSUFDeUFDSUFacUlRRkJ5Q0loQUFKQUFrQUNRQU5BSUFFZ0FDZ0NBRWNFUUNBQUtBSUlJZ0FOQVF3Q0N3c2dBQzBBREVFSWNVVU5BUXRCeUNJaEFBTkFJQU1nQUNnQ0FDSUJUd1JBSUFFZ0FDZ0NCR29pQkNBRFN3MERDeUFBS0FJSUlRQU1BQXNBQ3lBQUlBSTJBZ0FnQUNBQUtBSUVJQVpxTmdJRUlBSkJlQ0FDYTBFSGNXb2lCeUFGUVFOeU5nSUVJQUZCZUNBQmEwRUhjV29pQmlBRklBZHFJZ1ZySVFBZ0F5QUdSZ1JBUWFBZklBVTJBZ0JCbEI5QmxCOG9BZ0FnQUdvaUFEWUNBQ0FGSUFCQkFYSTJBZ1FNQ0F0Qm5COG9BZ0FnQmtZRVFFR2NIeUFGTmdJQVFaQWZRWkFmS0FJQUlBQnFJZ0EyQWdBZ0JTQUFRUUZ5TmdJRUlBQWdCV29nQURZQ0FBd0lDeUFHS0FJRUlnTkJBM0ZCQVVjTkJpQURRWGh4SVFrZ0EwSC9BVTBFUUNBR0tBSU1JZ0VnQmlnQ0NDSUNSZ1JBUVlnZlFZZ2ZLQUlBUVg0Z0EwRURkbmR4TmdJQURBY0xJQUlnQVRZQ0RDQUJJQUkyQWdnTUJnc2dCaWdDR0NFSUlBWWdCaWdDRENJQ1J3UkFJQVlvQWdnaUFTQUNOZ0lNSUFJZ0FUWUNDQXdGQ3lBR1FSUnFJZ0VvQWdBaUEwVUVRQ0FHS0FJUUlnTkZEUVFnQmtFUWFpRUJDd05BSUFFaEJDQURJZ0pCRkdvaUFTZ0NBQ0lERFFBZ0FrRVFhaUVCSUFJb0FoQWlBdzBBQ3lBRVFRQTJBZ0FNQkF0QmxCOGdCa0VvYXlJQVFYZ2dBbXRCQjNFaUFXc2lDRFlDQUVHZ0h5QUJJQUpxSWdFMkFnQWdBU0FJUVFGeU5nSUVJQUFnQW1wQktEWUNCRUdrSDBId0lpZ0NBRFlDQUNBRElBUkJKeUFFYTBFSGNXcEJMMnNpQUNBQUlBTkJFR3BKR3lJQlFSczJBZ1FnQVVIUUlpa0NBRGNDRUNBQlFjZ2lLUUlBTndJSVFkQWlJQUZCQ0dvMkFnQkJ6Q0lnQmpZQ0FFSElJaUFDTmdJQVFkUWlRUUEyQWdBZ0FVRVlhaUVBQTBBZ0FFRUhOZ0lFSUFCQkNHb2dBRUVFYWlFQUlBUkpEUUFMSUFFZ0EwWU5BQ0FCSUFFb0FnUkJmbkUyQWdRZ0F5QUJJQU5ySWdKQkFYSTJBZ1FnQVNBQ05nSUFJQUpCL3dGTkJFQWdBa0Y0Y1VHd0gyb2hBQUovUVlnZktBSUFJZ0ZCQVNBQ1FRTjJkQ0lDY1VVRVFFR0lIeUFCSUFKeU5nSUFJQUFNQVFzZ0FDZ0NDQXNoQVNBQUlBTTJBZ2dnQVNBRE5nSU1JQU1nQURZQ0RDQURJQUUyQWdnTUFRdEJIeUVBSUFKQi8vLy9CMDBFUUNBQ1FTWWdBa0VJZG1jaUFHdDJRUUZ4SUFCQkFYUnJRVDVxSVFBTElBTWdBRFlDSENBRFFnQTNBaEFnQUVFQ2RFRzRJV29oQVFKQUFrQkJqQjhvQWdBaUJFRUJJQUIwSWdaeFJRUkFRWXdmSUFRZ0JuSTJBZ0FnQVNBRE5nSUFEQUVMSUFKQkdTQUFRUUYyYTBFQUlBQkJIMGNiZENFQUlBRW9BZ0FoQkFOQUlBUWlBU2dDQkVGNGNTQUNSZzBDSUFCQkhYWWhCQ0FBUVFGMElRQWdBU0FFUVFSeGFpSUdLQUlRSWdRTkFBc2dCaUFETmdJUUN5QURJQUUyQWhnZ0F5QUROZ0lNSUFNZ0F6WUNDQXdCQ3lBQktBSUlJZ0FnQXpZQ0RDQUJJQU0yQWdnZ0EwRUFOZ0lZSUFNZ0FUWUNEQ0FESUFBMkFnZ0xRWlFmS0FJQUlnQWdCVTBOQUVHVUh5QUFJQVZySWdFMkFnQkJvQjlCb0I4b0FnQWlBQ0FGYWlJQ05nSUFJQUlnQVVFQmNqWUNCQ0FBSUFWQkEzSTJBZ1FnQUVFSWFpRUFEQWdMUVlRZlFUQTJBZ0JCQUNFQURBY0xRUUFoQWdzZ0NFVU5BQUpBSUFZb0Fod2lBVUVDZEVHNElXb2lCQ2dDQUNBR1JnUkFJQVFnQWpZQ0FDQUNEUUZCakI5QmpCOG9BZ0JCZmlBQmQzRTJBZ0FNQWdzZ0NFRVFRUlFnQ0NnQ0VDQUdSaHRxSUFJMkFnQWdBa1VOQVFzZ0FpQUlOZ0lZSUFZb0FoQWlBUVJBSUFJZ0FUWUNFQ0FCSUFJMkFoZ0xJQVlvQWhRaUFVVU5BQ0FDSUFFMkFoUWdBU0FDTmdJWUN5QUFJQWxxSVFBZ0JpQUphaUlHS0FJRUlRTUxJQVlnQTBGK2NUWUNCQ0FGSUFCQkFYSTJBZ1FnQUNBRmFpQUFOZ0lBSUFCQi93Rk5CRUFnQUVGNGNVR3dIMm9oQVFKL1FZZ2ZLQUlBSWdKQkFTQUFRUU4yZENJQWNVVUVRRUdJSHlBQUlBSnlOZ0lBSUFFTUFRc2dBU2dDQ0FzaEFDQUJJQVUyQWdnZ0FDQUZOZ0lNSUFVZ0FUWUNEQ0FGSUFBMkFnZ01BUXRCSHlFRElBQkIvLy8vQjAwRVFDQUFRU1lnQUVFSWRtY2lBV3QyUVFGeElBRkJBWFJyUVQ1cUlRTUxJQVVnQXpZQ0hDQUZRZ0EzQWhBZ0EwRUNkRUc0SVdvaEFRSkFBa0JCakI4b0FnQWlBa0VCSUFOMElnUnhSUVJBUVl3ZklBSWdCSEkyQWdBZ0FTQUZOZ0lBREFFTElBQkJHU0FEUVFGMmEwRUFJQU5CSDBjYmRDRURJQUVvQWdBaEFnTkFJQUlpQVNnQ0JFRjRjU0FBUmcwQ0lBTkJIWFloQWlBRFFRRjBJUU1nQVNBQ1FRUnhhaUlFS0FJUUlnSU5BQXNnQkNBRk5nSVFDeUFGSUFFMkFoZ2dCU0FGTmdJTUlBVWdCVFlDQ0F3QkN5QUJLQUlJSWdBZ0JUWUNEQ0FCSUFVMkFnZ2dCVUVBTmdJWUlBVWdBVFlDRENBRklBQTJBZ2dMSUFkQkNHb2hBQXdDQ3dKQUlBZEZEUUFDUUNBRUtBSWNJZ0JCQW5SQnVDRnFJZ0VvQWdBZ0JFWUVRQ0FCSUFJMkFnQWdBZzBCUVl3ZklBaEJmaUFBZDNFaUNEWUNBQXdDQ3lBSFFSQkJGQ0FIS0FJUUlBUkdHMm9nQWpZQ0FDQUNSUTBCQ3lBQ0lBYzJBaGdnQkNnQ0VDSUFCRUFnQWlBQU5nSVFJQUFnQWpZQ0dBc2dCQ2dDRkNJQVJRMEFJQUlnQURZQ0ZDQUFJQUkyQWhnTEFrQWdBMEVQVFFSQUlBUWdBeUFGYWlJQVFRTnlOZ0lFSUFBZ0JHb2lBQ0FBS0FJRVFRRnlOZ0lFREFFTElBUWdCVUVEY2pZQ0JDQUVJQVZxSWdJZ0EwRUJjallDQkNBQ0lBTnFJQU0yQWdBZ0EwSC9BVTBFUUNBRFFYaHhRYkFmYWlFQUFuOUJpQjhvQWdBaUFVRUJJQU5CQTNaMElnTnhSUVJBUVlnZklBRWdBM0kyQWdBZ0FBd0JDeUFBS0FJSUN5RUJJQUFnQWpZQ0NDQUJJQUkyQWd3Z0FpQUFOZ0lNSUFJZ0FUWUNDQXdCQzBFZklRQWdBMEgvLy84SFRRUkFJQU5CSmlBRFFRaDJaeUlBYTNaQkFYRWdBRUVCZEd0QlBtb2hBQXNnQWlBQU5nSWNJQUpDQURjQ0VDQUFRUUowUWJnaGFpRUJBa0FDUUNBSVFRRWdBSFFpQm5GRkJFQkJqQjhnQmlBSWNqWUNBQ0FCSUFJMkFnQU1BUXNnQTBFWklBQkJBWFpyUVFBZ0FFRWZSeHQwSVFBZ0FTZ0NBQ0VGQTBBZ0JTSUJLQUlFUVhoeElBTkdEUUlnQUVFZGRpRUdJQUJCQVhRaEFDQUJJQVpCQkhGcUlnWW9BaEFpQlEwQUN5QUdJQUkyQWhBTElBSWdBVFlDR0NBQ0lBSTJBZ3dnQWlBQ05nSUlEQUVMSUFFb0FnZ2lBQ0FDTmdJTUlBRWdBallDQ0NBQ1FRQTJBaGdnQWlBQk5nSU1JQUlnQURZQ0NBc2dCRUVJYWlFQURBRUxBa0FnQ1VVTkFBSkFJQUlvQWh3aUFFRUNkRUc0SVdvaUFTZ0NBQ0FDUmdSQUlBRWdCRFlDQUNBRURRRkJqQjhnQzBGK0lBQjNjVFlDQUF3Q0N5QUpRUkJCRkNBSktBSVFJQUpHRzJvZ0JEWUNBQ0FFUlEwQkN5QUVJQWsyQWhnZ0FpZ0NFQ0lBQkVBZ0JDQUFOZ0lRSUFBZ0JEWUNHQXNnQWlnQ0ZDSUFSUTBBSUFRZ0FEWUNGQ0FBSUFRMkFoZ0xBa0FnQTBFUFRRUkFJQUlnQXlBRmFpSUFRUU55TmdJRUlBQWdBbW9pQUNBQUtBSUVRUUZ5TmdJRURBRUxJQUlnQlVFRGNqWUNCQ0FDSUFWcUlnUWdBMEVCY2pZQ0JDQURJQVJxSUFNMkFnQWdCd1JBSUFkQmVIRkJzQjlxSVFCQm5COG9BZ0FoQVFKL1FRRWdCMEVEZG5RaUJTQUdjVVVFUUVHSUh5QUZJQVp5TmdJQUlBQU1BUXNnQUNnQ0NBc2hCaUFBSUFFMkFnZ2dCaUFCTmdJTUlBRWdBRFlDRENBQklBWTJBZ2dMUVp3ZklBUTJBZ0JCa0I4Z0F6WUNBQXNnQWtFSWFpRUFDeUFLUVJCcUpBQWdBQXZTQ3dFSGZ3SkFJQUJGRFFBZ0FFRUlheUlDSUFCQkJHc29BZ0FpQVVGNGNTSUFhaUVGQWtBZ0FVRUJjUTBBSUFGQkEzRkZEUUVnQWlBQ0tBSUFJZ0ZySWdKQm1COG9BZ0JKRFFFZ0FDQUJhaUVBQWtBQ1FFR2NIeWdDQUNBQ1J3UkFJQUZCL3dGTkJFQWdBVUVEZGlFRUlBSW9BZ3dpQVNBQ0tBSUlJZ05HQkVCQmlCOUJpQjhvQWdCQmZpQUVkM0UyQWdBTUJRc2dBeUFCTmdJTUlBRWdBellDQ0F3RUN5QUNLQUlZSVFZZ0FpQUNLQUlNSWdGSEJFQWdBaWdDQ0NJRElBRTJBZ3dnQVNBRE5nSUlEQU1MSUFKQkZHb2lCQ2dDQUNJRFJRUkFJQUlvQWhBaUEwVU5BaUFDUVJCcUlRUUxBMEFnQkNFSElBTWlBVUVVYWlJRUtBSUFJZ01OQUNBQlFSQnFJUVFnQVNnQ0VDSUREUUFMSUFkQkFEWUNBQXdDQ3lBRktBSUVJZ0ZCQTNGQkEwY05Ba0dRSHlBQU5nSUFJQVVnQVVGK2NUWUNCQ0FDSUFCQkFYSTJBZ1FnQlNBQU5nSUFEd3RCQUNFQkN5QUdSUTBBQWtBZ0FpZ0NIQ0lEUVFKMFFiZ2hhaUlFS0FJQUlBSkdCRUFnQkNBQk5nSUFJQUVOQVVHTUgwR01IeWdDQUVGK0lBTjNjVFlDQUF3Q0N5QUdRUkJCRkNBR0tBSVFJQUpHRzJvZ0FUWUNBQ0FCUlEwQkN5QUJJQVkyQWhnZ0FpZ0NFQ0lEQkVBZ0FTQUROZ0lRSUFNZ0FUWUNHQXNnQWlnQ0ZDSURSUTBBSUFFZ0F6WUNGQ0FESUFFMkFoZ0xJQUlnQlU4TkFDQUZLQUlFSWdGQkFYRkZEUUFDUUFKQUFrQUNRQ0FCUVFKeFJRUkFRYUFmS0FJQUlBVkdCRUJCb0I4Z0FqWUNBRUdVSDBHVUh5Z0NBQ0FBYWlJQU5nSUFJQUlnQUVFQmNqWUNCQ0FDUVp3ZktBSUFSdzBHUVpBZlFRQTJBZ0JCbkI5QkFEWUNBQThMUVp3ZktBSUFJQVZHQkVCQm5COGdBallDQUVHUUgwR1FIeWdDQUNBQWFpSUFOZ0lBSUFJZ0FFRUJjallDQkNBQUlBSnFJQUEyQWdBUEN5QUJRWGh4SUFCcUlRQWdBVUgvQVUwRVFDQUJRUU4ySVFRZ0JTZ0NEQ0lCSUFVb0FnZ2lBMFlFUUVHSUgwR0lIeWdDQUVGK0lBUjNjVFlDQUF3RkN5QURJQUUyQWd3Z0FTQUROZ0lJREFRTElBVW9BaGdoQmlBRklBVW9BZ3dpQVVjRVFFR1lIeWdDQUJvZ0JTZ0NDQ0lESUFFMkFnd2dBU0FETmdJSURBTUxJQVZCRkdvaUJDZ0NBQ0lEUlFSQUlBVW9BaEFpQTBVTkFpQUZRUkJxSVFRTEEwQWdCQ0VISUFNaUFVRVVhaUlFS0FJQUlnTU5BQ0FCUVJCcUlRUWdBU2dDRUNJRERRQUxJQWRCQURZQ0FBd0NDeUFGSUFGQmZuRTJBZ1FnQWlBQVFRRnlOZ0lFSUFBZ0Ftb2dBRFlDQUF3REMwRUFJUUVMSUFaRkRRQUNRQ0FGS0FJY0lnTkJBblJCdUNGcUlnUW9BZ0FnQlVZRVFDQUVJQUUyQWdBZ0FRMEJRWXdmUVl3ZktBSUFRWDRnQTNkeE5nSUFEQUlMSUFaQkVFRVVJQVlvQWhBZ0JVWWJhaUFCTmdJQUlBRkZEUUVMSUFFZ0JqWUNHQ0FGS0FJUUlnTUVRQ0FCSUFNMkFoQWdBeUFCTmdJWUN5QUZLQUlVSWdORkRRQWdBU0FETmdJVUlBTWdBVFlDR0FzZ0FpQUFRUUZ5TmdJRUlBQWdBbW9nQURZQ0FDQUNRWndmS0FJQVJ3MEFRWkFmSUFBMkFnQVBDeUFBUWY4QlRRUkFJQUJCZUhGQnNCOXFJUUVDZjBHSUh5Z0NBQ0lEUVFFZ0FFRURkblFpQUhGRkJFQkJpQjhnQUNBRGNqWUNBQ0FCREFFTElBRW9BZ2dMSVFBZ0FTQUNOZ0lJSUFBZ0FqWUNEQ0FDSUFFMkFnd2dBaUFBTmdJSUR3dEJIeUVESUFCQi8vLy9CMDBFUUNBQVFTWWdBRUVJZG1jaUFXdDJRUUZ4SUFGQkFYUnJRVDVxSVFNTElBSWdBellDSENBQ1FnQTNBaEFnQTBFQ2RFRzRJV29oQVFKQUFrQUNRRUdNSHlnQ0FDSUVRUUVnQTNRaUIzRkZCRUJCakI4Z0JDQUhjallDQUNBQklBSTJBZ0FnQWlBQk5nSVlEQUVMSUFCQkdTQURRUUYyYTBFQUlBTkJIMGNiZENFRElBRW9BZ0FoQVFOQUlBRWlCQ2dDQkVGNGNTQUFSZzBDSUFOQkhYWWhBU0FEUVFGMElRTWdCQ0FCUVFSeGFpSUhRUkJxS0FJQUlnRU5BQXNnQnlBQ05nSVFJQUlnQkRZQ0dBc2dBaUFDTmdJTUlBSWdBallDQ0F3QkN5QUVLQUlJSWdBZ0FqWUNEQ0FFSUFJMkFnZ2dBa0VBTmdJWUlBSWdCRFlDRENBQ0lBQTJBZ2dMUWFnZlFhZ2ZLQUlBUVFGcklnQkJmeUFBR3pZQ0FBc0xCQUFqQUFzR0FDQUFKQUFMRUFBakFDQUFhMEZ3Y1NJQUpBQWdBQXRLQVFGL0lBQWdBVWtFUUNBQUlBRWdBaEFDRHdzZ0FnUkFJQUFnQW1vaEF5QUJJQUpxSVFFRFFDQURRUUZySWdNZ0FVRUJheUlCTFFBQU9nQUFJQUpCQVdzaUFnMEFDd3NnQUF2OURnSVJmd0YrSXdCQk1Hc2lCeVFBUWJoL0lRZ0NRQ0FGUlEwQUlBUXNBQUFpQ1VIL0FYRWhDd0pBSUFsQkFFZ0VRQ0FMUWY0QWEwRUJkaUlHSUFWUERRSkJiQ0VJSUF0Qi93QnJJZ3RCL3dGTERRSWdCRUVCYWlFSVFRQWhCUU5BSUFVZ0MwOEVRQ0FMSVFnZ0JpRUxEQU1GSUFBZ0JXb2dDQ0FGUVFGMmFpSUVMUUFBUVFSMk9nQUFJQUFnQlVFQmNtb2dCQzBBQUVFUGNUb0FBQ0FGUVFKcUlRVU1BUXNBQ3dBTElBVWdDMDBOQVNBSFFmOEJOZ0lFSUFZZ0IwRUVhaUFIUVFocUlBUkJBV29pRGlBTEVBd2lCRUdJZjBzRVFDQUVJUWdNQWd0QlZDRUlJQWNvQWdnaUVFRUdTdzBCSUFjb0FnUWlFVUVCZENJSlFRSnFyVUlCSUJDdGhpSVlRUUVnRUhRaURVRUJhaUlGclVJQ2hueDhRZ3Q4UXZ6Ly8vLy8vLy8vL3dDRFF1UUNWZzBCUVZJaENDQVJRZjhCU3cwQklBMUJmM05CQW5SQjVBSnFyU0FSUVFGcUloVkJBWFN0SUJoOFFnaDhWQTBCSUFzZ0JHc2hGaUFFSUE1cUlSY2dCa0dBQkdvaUVpQUZRUUowYWlJUklBbHFRUUpxSVE0Z0JrR0VCR29oRTBHQWdBSWdFSFJCRUhZaENVRUFJUVZCQVNFUElBMUJBV3NpRkNFS0EwQWdCU0FWUmtVRVFBSkFJQVlnQlVFQmRDSUlhaThCQUNJRVFmLy9BMFlFUUNBVElBcEJBblJxSUFVNkFBSWdDa0VCYXlFS1FRRWhCQXdCQ3lBUFFRQWdDU0FFd1VvYklROExJQWdnRVdvZ0JEc0JBQ0FGUVFGcUlRVU1BUXNMSUFZZ0R6c0JnZ1FnQmlBUU93R0FCQUpBSUFvZ0ZFWUVRQ0FOUVFOMklRaENBQ0VZUVFBaER3TkFJQXdnRlVZRVFDQUlJQTFCQVhacVFRTnFJZ2xCQVhRaENFRUFJUVJCQUNFS0EwQkJBQ0VGSUFvZ0RVOE5CQU5BSUFWQkFrWkZCRUFnRXlBRklBbHNJQVJxSUJSeFFRSjBhaUFPSUFVZ0NtcHFMUUFBT2dBQ0lBVkJBV29oQlF3QkN3c2dDa0VDYWlFS0lBUWdDR29nRkhFaEJBd0FDd0FGSUFZZ0RFRUJkR291QVFBaENTQU9JQTlxSWdRZ0dEY0FBRUVJSVFVRFFDQUZJQWxPUlFSQUlBUWdCV29nR0RjQUFDQUZRUWhxSVFVTUFRc0xJQmhDZ1lLRWlKQ2d3SUFCZkNFWUlBeEJBV29oRENBSklBOXFJUThNQVFzQUN3QUxJQTFCQTNZZ0RVRUJkbXBCQTJvaENFRUFJUVVEUUNBTUlCVkdSUVJBUVFBaENTQUdJQXhCQVhScUxnRUFJZ1JCQUNBRVFRQktHeUVFQTBBZ0JDQUpSa1VFUUNBVElBVkJBblJxSUF3NkFBSURRQ0FGSUFocUlCUnhJZ1VnQ2tzTkFBc2dDVUVCYWlFSkRBRUxDeUFNUVFGcUlRd01BUXNMUVg4aENDQUZEUUlMSUJCQkFXb2hDRUVBSVFVRFFDQUZJQTFHUlFSQUlCRWdFeUFGUVFKMGFpSU9MUUFDUVFGMGFpSUVJQVF2QVFBaUNVRUJhanNCQUNBT0lBZ2dDV2RCWUhOcUlnUTZBQU1nRGlBSklBUjBJQTFyT3dFQUlBVkJBV29oQlF3QkN3c0NRQUpBSUFZdkFZSUVCRUFnQjBFY2FpSUVJQmNnRmhBTklnaEJpSDlMRFFJZ0IwRVVhaUFFSUJJUURpQUhRUXhxSUFRZ0VoQU9RUUFoQlFOQUlBZEJIR29pQkJBUElBVkIrd0ZMY2cwQ0lBQWdCV29pQmlBSFFSUnFJQVFRRURvQUFDQUdJQWRCREdvZ0JCQVFPZ0FCSUFWQkFuSWhCQ0FIUVJ4cUVBOEVRQ0FFSVFVTUF3VWdBQ0FFYWlBSFFSUnFJQWRCSEdvaUJCQVFPZ0FBSUFZZ0IwRU1haUFFRUJBNkFBTWdCVUVFYWlFRkRBRUxBQXNBQ3lBSFFSeHFJZ1FnRnlBV0VBMGlDRUdJZjBzTkFTQUhRUlJxSUFRZ0VoQU9JQWRCREdvZ0JDQVNFQTVCQUNFRkEwQWdCMEVjYWlJRUVBOGdCVUg3QVV0eVJRUkFJQUFnQldvaUJpQUhRUlJxSUFRUUVUb0FBQ0FHSUFkQkRHb2dCQkFST2dBQklBVkJBbkloQkNBSFFSeHFFQThFUUNBRUlRVUZJQUFnQkdvZ0IwRVVhaUFIUVJ4cUlnUVFFVG9BQUNBR0lBZEJER29nQkJBUk9nQURJQVZCQkdvaEJRd0NDd3NMQW44RFFFRzZmeUVJSUFWQi9RRkxEUU1nQUNBRmFpSUdJQWRCRkdvZ0IwRWNhaUlKRUJFNkFBQWdCa0VCYWlFRUlBa1FEMEVEUmdSQUlBZEJER29oQ0VFQ0RBSUxJQVZCL0FGTERRTWdCaUFIUVF4cUlBZEJIR29pQkJBUk9nQUJJQVZCQW1vaEJTQUVFQTlCQTBjTkFBc2dBQ0FGYWlFRUlBZEJGR29oQ0VFREN5QUVJQWdnQjBFY2FoQVJPZ0FBSUFacUlBQnJJUWdNQVFzQ2Z3TkFRYnAvSVFnZ0JVSDlBVXNOQWlBQUlBVnFJZ1lnQjBFVWFpQUhRUnhxSWdrUUVEb0FBQ0FHUVFGcUlRUWdDUkFQUVFOR0JFQWdCMEVNYWlFSVFRSU1BZ3NnQlVIOEFVc05BaUFHSUFkQkRHb2dCMEVjYWlJRUVCQTZBQUVnQlVFQ2FpRUZJQVFRRDBFRFJ3MEFDeUFBSUFWcUlRUWdCMEVVYWlFSVFRTUxJQVFnQ0NBSFFSeHFFQkE2QUFBZ0Jtb2dBR3NoQ0FzZ0NFR0lmMHNOQVFzZ0NDRUVRUUFoQlNBQlFRQkJOQkFESVFsQkFDRUtBMEFnQkNBRlJ3UkFJQUFnQldvaUJpMEFBQ0lCUVF0TEJFQkJiQ0VJREFNRklBa2dBVUVDZEdvaUFTQUJLQUlBUVFGcU5nSUFJQVZCQVdvaEJVRUJJQVl0QUFCMFFRRjFJQXBxSVFvTUFnc0FDd3RCYkNFSUlBcEZEUUFnQ21jaUJVRWZjeUlCUVF0TERRQWdBMEVnSUFWck5nSUFRUUZCQWlBQmRDQUtheUlEWjBFZmN5SUJkQ0FEUncwQUlBQWdCR29nQVVFQmFpSUFPZ0FBSUFrZ0FFRUNkR29pQUNBQUtBSUFRUUZxTmdJQUlBa29BZ1FpQUVFQ1NTQUFRUUZ4Y2cwQUlBSWdCRUVCYWpZQ0FDQUxRUUZxSVFnTElBZEJNR29rQUNBSUM2QUZBUXgvSXdCQkVHc2lEQ1FBQW44Z0JFRUhUUVJBSUF4Q0FEY0RDQ0FNUVFocUlnVWdBeUFFRUFJYVFXd2dBQ0FCSUFJZ0JVRUlFQXdpQUNBQUlBUkxHeUFBSUFCQmlYOUpHd3dCQ3lBQVFRQWdBU2dDQUVFQmFpSU5RUUYwRUFNaEQwRlVJQU1vQUFBaUJrRVBjU0lBUVFwTERRQWFJQUlnQUVFRmFqWUNBQ0FESUFScUlnSkJCR3NoQnlBQ1FRZHJJUXNnQUVFR2FpRU9RUVFoQWlBR1FRUjJJUVZCSUNBQWRDSUlRUUZ5SVFsQkFDRUFRUUVoQmlBRElRUURRQUpBSUFaQkFYRkZCRUFEUUNBRlFYOXpRWUNBZ0lCNGNtZ2lCa0VZU1VVRVFDQUFRU1JxSVFBZ0JDQUxUUVIvSUFSQkEyb0ZJQVFnQzJ0QkEzUWdBbXBCSDNFaEFpQUhDeUlFS0FBQUlBSjJJUVVNQVFzTElBSWdCa0VlY1NJS2FrRUNhaUVDSUFaQkFYWkJBMndnQUdvZ0JTQUtka0VEY1dvaUFDQU5UdzBCQW44Z0JDQUxTeUFDUVFOMklBUnFJZ1VnQjB0eFJRUkFJQUpCQjNFaEFpQUZEQUVMSUFRZ0IydEJBM1FnQW1wQkgzRWhBaUFIQ3lJRUtBQUFJQUoySVFVTElBVWdDRUVCYTNFaUJpQUlRUUYwUVFGcklnb2dDV3NpRUVrRWZ5QU9RUUZyQlNBRklBcHhJZ1VnRUVFQUlBVWdDRTRiYXlFR0lBNExJUVVnRHlBQVFRRjBhaUFHUVFGcklnbzdBUUFnQUVFQmFpRUFJQUlnQldvaEFpQUlRUUVnQm1zZ0NpQUdRUUJLR3lBSmFpSUpTZ1JBSUFsQkFrZ05BVUVnSUFsbklnVnJJUTVCQVNBRlFSOXpkQ0VJQ3lBQUlBMVBEUUFnQ2tFQVJ5RUdBbjhnQkNBTFN5QUNRUU4xSUFScUlnVWdCMHR4UlFSQUlBSkJCM0VoQWlBRkRBRUxJQUlnQkNBSGEwRURkR3BCSDNFaEFpQUhDeUlFS0FBQUlBSjJJUVVNQVFzTFFXd2dDVUVCUncwQUdrRlFJQUFnRFVzTkFCcEJiQ0FDUVNCS0RRQWFJQUVnQUVFQmF6WUNBQ0FFSUFKQkIycEJBM1ZxSUFOckN5QU1RUkJxSkFBTDhnRUJBWDhnQWtVRVFDQUFRZ0EzQWdBZ0FFRUFOZ0lRSUFCQ0FEY0NDRUc0Znc4TElBQWdBVFlDRENBQUlBRkJCR28yQWhBZ0FrRUVUd1JBSUFBZ0FTQUNhaUlCUVFScklnTTJBZ2dnQUNBREtBQUFOZ0lBSUFGQkFXc3RBQUFpQVFSQUlBQWdBV2RCRjJzMkFnUWdBZzhMSUFCQkFEWUNCRUYvRHdzZ0FDQUJOZ0lJSUFBZ0FTMEFBQ0lETmdJQUFrQUNRQUpBSUFKQkFtc09BZ0VBQWdzZ0FDQUJMUUFDUVJCMElBTnlJZ00yQWdBTElBQWdBUzBBQVVFSWRDQURhallDQUFzZ0FTQUNha0VCYXkwQUFDSUJSUVJBSUFCQkFEWUNCRUZzRHdzZ0FDQUJaeUFDUVFOMGEwRUphallDQkNBQ0MwUUJBbjhnQVNBQ0x3RUFJZ01nQVNnQ0JHb2lCRFlDQkNBQUlBTkJBblJCb0IxcUtBSUFJQUVvQWdCQkFDQUVhM1p4TmdJQUlBRVFEeG9nQUNBQ1FRUnFOZ0lFQzU4QkFRUi9RUU1oQVNBQUtBSUVJZ0pCSUUwRVFDQUFLQUlJSWdFZ0FDZ0NFRThFUUNBQUlBSkJCM0UyQWdRZ0FDQUJJQUpCQTNacklnSTJBZ2dnQUNBQ0tBQUFOZ0lBUVFBUEN5QUFLQUlNSWdNZ0FVWUVRRUVCUVFJZ0FrRWdTUnNQQ3lBQUlBRWdBU0FEYXlBQ1FRTjJJZ1FnQVNBRWF5QURTU0lCR3lJRGF5SUVOZ0lJSUFBZ0FpQURRUU4wYXpZQ0JDQUFJQVFvQUFBMkFnQUxJQUVMU0FFRWZ5QUFLQUlFSUFBb0FnQkJBblJxSWdJdEFBSWdBaThCQUNFRUlBRWdBU2dDQkNJRklBSXRBQU1pQW1vMkFnUWdBQ0FFSUFFb0FnQWdCWFJCQUNBQ2EzWnFOZ0lBQzFJQkJIOGdBQ2dDQkNBQUtBSUFRUUowYWlJQ0xRQUNJQUl2QVFBaEJDQUJJQUl0QUFNaUFpQUJLQUlFYWlJRk5nSUVJQUFnQkNBQ1FRSjBRYUFkYWlnQ0FDQUJLQUlBUVFBZ0JXdDJjV28yQWdBTENBQWdBRUdJZjBzTEdnQWdBQVJBSUFFRVFDQUNJQUFnQVJFQ0FBOExJQUFRQmdzTHBnZ0NEWDhCZmlNQVFSQnJJZ2trQUNBSlFRQTJBZ3dnQ1VFQU5nSUlBbjhDUUNBRFFlZ0phaUFESUFsQkNHb2dDVUVNYWlBQklBSWdBMEdBQVdvUUN5SVBRWWgvU3cwQVFWUWdDU2dDRENJRUlBQW9BZ0FpQVVIL0FYRkJBV3BMRFFFYUlBQkJCR29oQ3lBQUlBRkIvNEdBZUhFZ0JFRVFkRUdBZ1B3SGNYSTJBZ0JCZnlBRUlBUkJBRWdiUVFGcUlRQkJBQ0VCSUFrb0FnZ2hCVUVBSVFJRFFDQUFJQUpHQkVBZ0JVRURheUVCUVFBaEFBTkFBa0JCQUNFQ0lBQWdBVTRFUUFOQUlBQWdCVTROQWlBRElBQWdBMnBCNkFscUxRQUFRUUowYWtGQWF5SUJJQUVvQWdBaUFVRUJhallDQUNBQklBTnFJQUE2QU9nSElBQkJBV29oQUF3QUN3QUZBMEFnQWtFRVJrVUVRQ0FESUFNZ0FDQUNhaUlIYWtIb0NXb3RBQUJCQW5ScVFVQnJJZ2dnQ0NnQ0FDSUlRUUZxTmdJQUlBTWdDR29nQnpvQTZBY2dBa0VCYWlFQ0RBRUxDeUFBUVFScUlRQU1BZ3NBQ3dzZ0JFRUJhaUVPSUFNb0FnQWhCMEVBSVFCQkFTRUlBMEFnQ0NBT1JnMERJQTRnQ0dzaEJDQURJQWhCQW5ScUtBSUFJUVVDUUFKQUFrQUNRQUpBQWtCQkFTQUlkRUVCZFNJTlFRRnJEZ2dBQVFRQ0JBUUVBd1FMUVFBaEFpQUZRUUFnQlVFQVNoc2hCaUFBSVFFRFFDQUNJQVpHRFFVZ0F5QUNJQWRxYWkwQTZBY2hDaUFMSUFGQkFYUnFJZ3dnQkRvQUFTQU1JQW82QUFBZ0FrRUJhaUVDSUFGQkFXb2hBUXdBQ3dBTFFRQWhBaUFGUVFBZ0JVRUFTaHNoQ2lBQUlRRURRQ0FDSUFwR0RRUWdDeUFCUVFGMGFpSUdJQU1nQWlBSGFtb3RBT2dISWd3NkFBSWdCaUFFT2dBQklBWWdERG9BQUNBR0lBUTZBQU1nQWtFQmFpRUNJQUZCQW1vaEFRd0FDd0FMUVFBaEFpQUZRUUFnQlVFQVNoc2hCaUFFUVFoMFFZRCtBM0VoQkNBQUlRRURRQ0FDSUFaR0RRTWdDeUFCUVFGMGFpQUVJQU1nQWlBSGFtb3RBT2dIY3ExQ2dZQ0VnSkNBd0FCK053QUFJQUpCQVdvaEFpQUJRUVJxSVFFTUFBc0FDMEVBSVFJZ0JVRUFJQVZCQUVvYklRWWdCRUVJZEVHQS9nTnhJUVFnQUNFQkEwQWdBaUFHUmcwQ0lBc2dBVUVCZEdvaUNpQUVJQU1nQWlBSGFtb3RBT2dIY3ExQ2dZQ0VnSkNBd0FCK0loRTNBQWdnQ2lBUk53QUFJQUpCQVdvaEFpQUJRUWhxSVFFTUFBc0FDMEVBSVFFZ0JVRUFJQVZCQUVvYklRb2dCRUVJZEVHQS9nTnhJUXdnQUNFRUEwQWdBU0FLUmcwQklBc2dCRUVCZEdvaEVDQU1JQU1nQVNBSGFtb3RBT2dIY3ExQ2dZQ0VnSkNBd0FCK0lSRkJBQ0VDQTBBZ0FpQU5Ua1VFUUNBUUlBSkJBWFJxSWdZZ0VUY0FHQ0FHSUJFM0FCQWdCaUFSTndBSUlBWWdFVGNBQUNBQ1FSQnFJUUlNQVFzTElBRkJBV29oQVNBRUlBMXFJUVFNQUFzQUN5QUlRUUZxSVFnZ0JTQUhhaUVISUFVZ0RXd2dBR29oQUF3QUN3QUZJQU1nQWtFQ2RHb2lCMEZBYXlBQk5nSUFJQUpCQVdvaEFpQUhLQUlBSUFGcUlRRU1BUXNBQ3dBTElBOExJQWxCRUdva0FBdnlBZ0VHZnlNQVFTQnJJZ1VrQUNBRUtBSUFJUVlnQlVFTWFpQUNJQU1RRFNJRFFZaC9UUVJBSUFSQkJHb2hBaUFBSUFGcUlnbEJBMnNoQkVFQUlBWkJFSFpyUVI5eElRTURRQ0FGUVF4cUVBOGdBQ0FFVDNKRkJFQWdBaUFGS0FJTUlnWWdCU2dDRUNJSGRDQURka0VCZEdvaUNDMEFBU0VLSUFBZ0NDMEFBRG9BQUNBQ0lBWWdCeUFLYWlJR2RDQURka0VCZEdvaUJ5MEFBQ0VJSUFVZ0JpQUhMUUFCYWpZQ0VDQUFJQWc2QUFFZ0FFRUNhaUVBREFFTEN3TkFJQVZCREdvUUR5RUhJQVVvQWd3aEJpQUZLQUlRSVFRZ0FDQUpUeUFIY2tVRVFDQUNJQVlnQkhRZ0EzWkJBWFJxSWdZdEFBQWhCeUFGSUFRZ0JpMEFBV28yQWhBZ0FDQUhPZ0FBSUFCQkFXb2hBQXdCQ3dzRFFDQUFJQWxQUlFSQUlBSWdCaUFFZENBRGRrRUJkR29pQnkwQUFTRUlJQUFnQnkwQUFEb0FBQ0FBUVFGcUlRQWdCQ0FJYWlFRURBRUxDMEZzUVd3Z0FTQUZLQUlVSUFVb0FoaEhHeUFFUVNCSEd5RURDeUFGUVNCcUpBQWdBd3ZQRkFFamZ5TUFRZEFBYXlJRkpBQkJiQ0VKQWtBZ0EwRUtTUTBBQWtBZ0F5QUNMd0FFSWdjZ0FpOEFBQ0lJSUFJdkFBSWlEV3BxUVFacUlneEpEUUFnQkM4QkFpRUdJQVZCUEdvZ0FrRUdhaUlDSUFnUURTSUpRWWgvU3cwQklBVkJLR29nQWlBSWFpSUNJQTBRRFNJSlFZaC9TdzBCSUFWQkZHb2dBaUFOYWlJQ0lBY1FEU0lKUVloL1N3MEJJQVVnQWlBSGFpQURJQXhyRUEwaUNVR0lmMHNOQVNBRVFRUnFJUW9nQUNBQmFpSWZRUU5ySVNCQkFDQUdhMEVmY1NFTElBVW9BZ2doRVNBRktBSWNJUklnQlNnQ01DRVRJQVVvQWtRaEZDQUZLQUlFSVFrZ0JTZ0NHQ0VOSUFVb0Fpd2hEQ0FGS0FKQUlRWWdCU2dDRUNFaElBVW9BaVFoSWlBRktBSTRJU01nQlNnQ1RDRWtJQVVvQWdBaEZTQUZLQUlVSVJZZ0JTZ0NLQ0VYSUFVb0Fqd2hHRUVCSVE4Z0FDQUJRUU5xUVFKMklnUnFJZ01nQkdvaUFpQUVhaUlaSVFRZ0FpRUlJQU1oQndOQUlBOUJBWEZGSUFRZ0lFOXlSUVJBSUFBZ0NpQVlJQVowSUF0MlFRSjBhaUlPTHdFQU93QUFJQTR0QUFJaEdpQU9MUUFESVJBZ0J5QUtJQmNnREhRZ0MzWkJBblJxSWc0dkFRQTdBQUFnRGkwQUFpRWJJQTR0QUFNaER5QUlJQW9nRmlBTmRDQUxka0VDZEdvaURpOEJBRHNBQUNBT0xRQUNJUndnRGkwQUF5RWRJQVFnQ2lBVklBbDBJQXQyUVFKMGFpSU9Md0VBT3dBQUlBNHRBQUloSGlBT0xRQURJUTRnQUNBUWFpSWxJQW9nR0NBR0lCcHFJZ1owSUF0MlFRSjBhaUlRTHdFQU93QUFJQkF0QUFJZ0VDMEFBeUVtSUFjZ0Qyb2lKeUFLSUJjZ0RDQWJhaUlhZENBTGRrRUNkR29pQnk4QkFEc0FBQ0FITFFBQ0lRd2dCeTBBQXlFUUlBZ2dIV29pR3lBS0lCWWdEU0FjYWlJUGRDQUxka0VDZEdvaUNDOEJBRHNBQUNBSUxRQUNJUTBnQ0MwQUF5RWNJQVFnRG1vaUhTQUtJQlVnQ1NBZWFpSU9kQ0FMZGtFQ2RHb2lDUzhCQURzQUFDQUdhaUVBUVFNaEJ3Si9JQlFnSkVrRVFDQUFJUVpCQXd3QkN5QUFRUWR4SVFZZ0ZDQUFRUU4yYXlJVUtBQUFJUmhCQUFzZ0NTMEFBeUVlSUFrdEFBSWhDQ0FNSUJwcUlRQWdFeUFqU1FSL0lBQUZJQk1nQUVFRGRtc2lFeWdBQUNFWFFRQWhCeUFBUVFkeEN5RU1JQTBnRDJvaEFDQUhjaUVKUVFNaER3Si9JQklnSWtrRVFDQUFJUTFCQXd3QkN5QUFRUWR4SVEwZ0VpQUFRUU4yYXlJU0tBQUFJUlpCQUFzZ0NDQU9haUVBSUFseUlCRWdJVWtFZnlBQUJTQVJJQUJCQTNackloRW9BQUFoRlVFQUlROGdBRUVIY1FzaENTQWxJQ1pxSVFBZ0VDQW5haUVISUJzZ0hHb2hDQ0FkSUI1cUlRUWdEM0pGSVE4TUFRc0xJQVVnRERZQ0xDQUZJQVkyQWtBZ0JTQU5OZ0lZSUFVZ0NUWUNCQ0FGSUJRMkFrUWdCU0FUTmdJd0lBVWdFallDSENBRklCRTJBZ2dnQlNBWU5nSThJQVVnRnpZQ0tDQUZJQlkyQWhRZ0JTQVZOZ0lBSUFJZ0Iwa2dBQ0FEUzNJTkFFRnNJUWtnQ0NBWlN3MEJJQU5CQTJzaENRTkFJQVZCUEdvUUQwVWdBQ0FKU1hFRVFDQUFJQW9nQlNnQ1BDSU5JQVVvQWtBaURIUWdDM1pCQW5ScUlnNHZBUUE3QUFBZ0FDQU9MUUFEYWlJR0lBb2dEU0FNSUE0dEFBSnFJZ0IwSUF0MlFRSjBhaUlNTHdFQU93QUFJQVVnQUNBTUxRQUNhallDUUNBR0lBd3RBQU5xSVFBTUFRVWdBMEVDYXlFTUEwQWdCVUU4YWhBUElRWWdCU2dDUENFTklBVW9Ba0FoQ1NBQUlBeExJQVp5UlFSQUlBQWdDaUFOSUFsMElBdDJRUUowYWlJR0x3RUFPd0FBSUFVZ0NTQUdMUUFDYWpZQ1FDQUFJQVl0QUFOcUlRQU1BUXNMQTBBZ0FDQU1TMFVFUUNBQUlBb2dEU0FKZENBTGRrRUNkR29pQmk4QkFEc0FBQ0FBSUFZdEFBTnFJUUFnQ1NBR0xRQUNhaUVKREFFTEN3SkFJQUFnQTA4TkFDQUFJQW9nRFNBSmRDQUxkaUlBUVFKMGFpSURMUUFBT2dBQUlBTXRBQU5CQVVZRVFDQUpJQU10QUFKcUlRa01BUXNnQ1VFZlN3MEFRU0FnQ1NBS0lBQkJBblJxTFFBQ2FpSUFJQUJCSUU4YklRa0xJQUpCQTJzaERBTkFJQVZCS0dvUUQwVWdCeUFNU1hFRVFDQUhJQW9nQlNnQ0tDSUdJQVVvQWl3aUFIUWdDM1pCQW5ScUlnMHZBUUE3QUFBZ0J5QU5MUUFEYWlJRElBb2dCaUFBSUEwdEFBSnFJZ0IwSUF0MlFRSjBhaUlHTHdFQU93QUFJQVVnQUNBR0xRQUNhallDTENBRElBWXRBQU5xSVFjTUFRVWdBa0VDYXlFR0EwQWdCVUVvYWhBUElRTWdCU2dDS0NFTUlBVW9BaXdoQUNBR0lBZEpJQU55UlFSQUlBY2dDaUFNSUFCMElBdDJRUUowYWlJREx3RUFPd0FBSUFVZ0FDQURMUUFDYWpZQ0xDQUhJQU10QUFOcUlRY01BUXNMQTBBZ0JpQUhTVVVFUUNBSElBb2dEQ0FBZENBTGRrRUNkR29pQXk4QkFEc0FBQ0FISUFNdEFBTnFJUWNnQUNBRExRQUNhaUVBREFFTEN3SkFJQUlnQjAwTkFDQUhJQW9nRENBQWRDQUxkaUlDUVFKMGFpSURMUUFBT2dBQUlBTXRBQU5CQVVZRVFDQUFJQU10QUFKcUlRQU1BUXNnQUVFZlN3MEFRU0FnQUNBS0lBSkJBblJxTFFBQ2FpSUFJQUJCSUU4YklRQUxJQmxCQTJzaERBTkFJQVZCRkdvUUQwVWdDQ0FNU1hFRVFDQUlJQW9nQlNnQ0ZDSUdJQVVvQWhnaUFuUWdDM1pCQW5ScUlnMHZBUUE3QUFBZ0NDQU5MUUFEYWlJRElBb2dCaUFDSUEwdEFBSnFJZ0owSUF0MlFRSjBhaUlHTHdFQU93QUFJQVVnQWlBR0xRQUNhallDR0NBRElBWXRBQU5xSVFnTUFRVWdHVUVDYXlFREEwQWdCVUVVYWhBUElRSWdCU2dDRkNFR0lBVW9BaGdoQnlBRElBaEpJQUp5UlFSQUlBZ2dDaUFHSUFkMElBdDJRUUowYWlJQ0x3RUFPd0FBSUFVZ0J5QUNMUUFDYWpZQ0dDQUlJQUl0QUFOcUlRZ01BUXNMQTBBZ0F5QUlTVVVFUUNBSUlBb2dCaUFIZENBTGRrRUNkR29pQWk4QkFEc0FBQ0FJSUFJdEFBTnFJUWdnQnlBQ0xRQUNhaUVIREFFTEN3SkFJQWdnR1U4TkFDQUlJQW9nQmlBSGRDQUxkaUlDUVFKMGFpSURMUUFBT2dBQUlBTXRBQU5CQVVZRVFDQUhJQU10QUFKcUlRY01BUXNnQjBFZlN3MEFRU0FnQnlBS0lBSkJBblJxTFFBQ2FpSUNJQUpCSUU4YklRY0xBMEFnQlJBUFJTQUVJQ0JKY1FSQUlBUWdDaUFGS0FJQUlnWWdCU2dDQkNJQ2RDQUxka0VDZEdvaURDOEJBRHNBQUNBRUlBd3RBQU5xSWdNZ0NpQUdJQUlnREMwQUFtb2lBblFnQzNaQkFuUnFJZ1F2QVFBN0FBQWdCU0FDSUFRdEFBSnFOZ0lFSUFNZ0JDMEFBMm9oQkF3QkJTQWZRUUpySVFNRFFDQUZFQThoQWlBRktBSUFJUVlnQlNnQ0JDRUlJQU1nQkVrZ0FuSkZCRUFnQkNBS0lBWWdDSFFnQzNaQkFuUnFJZ0l2QVFBN0FBQWdCU0FJSUFJdEFBSnFOZ0lFSUFRZ0FpMEFBMm9oQkF3QkN3c0RRQ0FESUFSSlJRUkFJQVFnQ2lBR0lBaDBJQXQyUVFKMGFpSUNMd0VBT3dBQUlBUWdBaTBBQTJvaEJDQUlJQUl0QUFKcUlRZ01BUXNMQWtBZ0JDQWZUdzBBSUFRZ0NpQUdJQWgwSUF0MklnSkJBblJxSWdNdEFBQTZBQUFnQXkwQUEwRUJSZ1JBSUFnZ0F5MEFBbW9oQ0F3QkN5QUlRUjlMRFFCQklDQUlJQW9nQWtFQ2RHb3RBQUpxSWdJZ0FrRWdUeHNoQ0F0QmJFRnNRV3hCYkVGc1FXeEJiRUZzSUFFZ0NFRWdSeHNnQlNnQ0NDQUZLQUlNUnhzZ0IwRWdSeHNnQlNnQ0hDQUZLQUlnUnhzZ0FFRWdSeHNnQlNnQ01DQUZLQUkwUnhzZ0NVRWdSeHNnQlNnQ1JDQUZLQUpJUnhzaENRd0pDd0FMQUFzQUN3QUxBQXNBQ3dBTEFBdEJiQ0VKQ3lBRlFkQUFhaVFBSUFrTDdCQUJIbjhqQUVIUUFHc2lCU1FBUVd3aENRSkFJQU5CQ2trTkFBSkFJQU1nQWk4QUJDSUdJQUl2QUFBaUJ5QUNMd0FDSWdocWFrRUdhaUlPU1EwQUlBUXZBUUloRHlBRlFUeHFJQUpCQm1vaUFpQUhFQTBpQ1VHSWYwc05BU0FGUVNocUlBSWdCMm9pQWlBSUVBMGlDVUdJZjBzTkFTQUZRUlJxSUFJZ0NHb2lBaUFHRUEwaUNVR0lmMHNOQVNBRklBSWdCbW9nQXlBT2F4QU5JZ2xCaUg5TERRRWdCRUVFYWlFS0lBQWdBV29pSEVFRGF5RWRRUUFnRDJ0QkgzRWhDeUFGS0FJSUlSRWdCU2dDSENFU0lBVW9BakFoRXlBRktBSkVJUlFnQlNnQ0JDRUpJQVVvQWhnaEJpQUZLQUlzSVFjZ0JTZ0NRQ0VJSUFVb0FoQWhIaUFGS0FJa0lSOGdCU2dDT0NFZ0lBVW9Ba3doSVNBRktBSUFJUlVnQlNnQ0ZDRVdJQVVvQWlnaEZ5QUZLQUk4SVJoQkFTRU5JQUFnQVVFRGFrRUNkaUlDYWlJT0lBSnFJZzhnQW1vaUdTRUVJQThoQWlBT0lRTURRQ0FOUlNBRUlCMVBja1VFUUNBS0lCZ2dDSFFnQzNaQkFYUnFJZ3d0QUFFaERTQUFJQXd0QUFBNkFBQWdDaUFYSUFkMElBdDJRUUYwYWlJTUxRQUJJUkFnQXlBTUxRQUFPZ0FBSUFvZ0ZpQUdkQ0FMZGtFQmRHb2lEQzBBQVNFYUlBSWdEQzBBQURvQUFDQUtJQlVnQ1hRZ0MzWkJBWFJxSWd3dEFBRWhHeUFFSUF3dEFBQTZBQUFnQ2lBWUlBZ2dEV29pQ0hRZ0MzWkJBWFJxSWd3dEFBRWhEU0FBSUF3dEFBQTZBQUVnQ2lBWElBY2dFR29pQjNRZ0MzWkJBWFJxSWd3dEFBRWhFQ0FESUF3dEFBQTZBQUVnQ2lBV0lBWWdHbW9pREhRZ0MzWkJBWFJxSWdZdEFBRWhHaUFDSUFZdEFBQTZBQUVnQ2lBVklBa2dHMm9pRzNRZ0MzWkJBWFJxSWdrdEFBRWhJaUFFSUFrdEFBQTZBQUVnQ0NBTmFpRUdRUU1oQ1FKL0lCUWdJVWtFUUVFRElRMGdCZ3dCQ3lBVUlBWkJBM1pySWhRb0FBQWhHRUVBSVEwZ0JrRUhjUXNoQ0NBSElCQnFJUVlnRXlBZ1NRUi9JQVlGSUJNZ0JrRURkbXNpRXlnQUFDRVhRUUFoQ1NBR1FRZHhDeUVISUF3Z0dtb2hEQ0FKSUExeUlSQkJBeUVOQW44Z0VpQWZTUVJBSUF3aEJrRUREQUVMSUF4QkIzRWhCaUFTSUF4QkEzWnJJaElvQUFBaEZrRUFDeUFiSUNKcUlRd2dFSEloRUNBUklCNUpCSDhnREFVZ0VTQU1RUU4yYXlJUktBQUFJUlZCQUNFTklBeEJCM0VMSVFrZ0JFRUNhaUVFSUFKQkFtb2hBaUFEUVFKcUlRTWdBRUVDYWlFQUlBMGdFSEpGSVEwTUFRc0xJQVVnQnpZQ0xDQUZJQWcyQWtBZ0JTQUdOZ0lZSUFVZ0NUWUNCQ0FGSUJRMkFrUWdCU0FUTmdJd0lBVWdFallDSENBRklCRTJBZ2dnQlNBWU5nSThJQVVnRnpZQ0tDQUZJQlkyQWhRZ0JTQVZOZ0lBSUFBZ0Rrc2dBeUFQUzNJTkFFRnNJUWtnQWlBWlN3MEJJQTVCQTJzaENRTkFJQVZCUEdvUUR5QUFJQWxQY2tVRVFDQUtJQVVvQWp3aUJpQUZLQUpBSWdkMElBdDJRUUYwYWlJSUxRQUJJUXdnQUNBSUxRQUFPZ0FBSUFvZ0JpQUhJQXhxSWdaMElBdDJRUUYwYWlJSExRQUFJUWdnQlNBR0lBY3RBQUZxTmdKQUlBQWdDRG9BQVNBQVFRSnFJUUFNQVFzTEEwQWdCVUU4YWhBUElRY2dCU2dDUENFR0lBVW9Ba0FoQ1NBQUlBNVBJQWR5UlFSQUlBb2dCaUFKZENBTGRrRUJkR29pQmkwQUFDRUhJQVVnQ1NBR0xRQUJhallDUUNBQUlBYzZBQUFnQUVFQmFpRUFEQUVMQ3dOQUlBQWdEazlGQkVBZ0NpQUdJQWwwSUF0MlFRRjBhaUlITFFBQklBQWdCeTBBQURvQUFDQUFRUUZxSVFBZ0NXb2hDUXdCQ3dzZ0QwRURheUVBQTBBZ0JVRW9haEFQSUFBZ0EwMXlSUVJBSUFvZ0JTZ0NLQ0lHSUFVb0Fpd2lCM1FnQzNaQkFYUnFJZ2d0QUFFaERpQURJQWd0QUFBNkFBQWdDaUFHSUFjZ0Rtb2lCblFnQzNaQkFYUnFJZ2N0QUFBaENDQUZJQVlnQnkwQUFXbzJBaXdnQXlBSU9nQUJJQU5CQW1vaEF3d0JDd3NEUUNBRlFTaHFFQThoQnlBRktBSW9JUVlnQlNnQ0xDRUFJQU1nRDA4Z0IzSkZCRUFnQ2lBR0lBQjBJQXQyUVFGMGFpSUdMUUFBSVFjZ0JTQUFJQVl0QUFGcU5nSXNJQU1nQnpvQUFDQURRUUZxSVFNTUFRc0xBMEFnQXlBUFQwVUVRQ0FLSUFZZ0FIUWdDM1pCQVhScUlnY3RBQUVoQ0NBRElBY3RBQUE2QUFBZ0EwRUJhaUVESUFBZ0NHb2hBQXdCQ3dzZ0dVRURheUVEQTBBZ0JVRVVhaEFQSUFJZ0EwOXlSUVJBSUFvZ0JTZ0NGQ0lHSUFVb0FoZ2lCM1FnQzNaQkFYUnFJZ2d0QUFFaERpQUNJQWd0QUFBNkFBQWdDaUFHSUFjZ0Rtb2lCblFnQzNaQkFYUnFJZ2N0QUFBaENDQUZJQVlnQnkwQUFXbzJBaGdnQWlBSU9nQUJJQUpCQW1vaEFnd0JDd3NEUUNBRlFSUnFFQThoQnlBRktBSVVJUVlnQlNnQ0dDRURJQUlnR1U4Z0IzSkZCRUFnQ2lBR0lBTjBJQXQyUVFGMGFpSUdMUUFBSVFjZ0JTQURJQVl0QUFGcU5nSVlJQUlnQnpvQUFDQUNRUUZxSVFJTUFRc0xBMEFnQWlBWlQwVUVRQ0FLSUFZZ0EzUWdDM1pCQVhScUlnY3RBQUVoQ0NBQ0lBY3RBQUE2QUFBZ0FrRUJhaUVDSUFNZ0NHb2hBd3dCQ3dzRFFDQUZFQThnQkNBZFQzSkZCRUFnQ2lBRktBSUFJZ0lnQlNnQ0JDSUdkQ0FMZGtFQmRHb2lCeTBBQVNFSUlBUWdCeTBBQURvQUFDQUtJQUlnQmlBSWFpSUNkQ0FMZGtFQmRHb2lCaTBBQUNFSElBVWdBaUFHTFFBQmFqWUNCQ0FFSUFjNkFBRWdCRUVDYWlFRURBRUxDd05BSUFVUUR5RUhJQVVvQWdBaEJpQUZLQUlFSVFJZ0JDQWNUeUFIY2tVRVFDQUtJQVlnQW5RZ0MzWkJBWFJxSWdZdEFBQWhCeUFGSUFJZ0JpMEFBV28yQWdRZ0JDQUhPZ0FBSUFSQkFXb2hCQXdCQ3dzRFFDQUVJQnhQUlFSQUlBb2dCaUFDZENBTGRrRUJkR29pQnkwQUFTRUlJQVFnQnkwQUFEb0FBQ0FFUVFGcUlRUWdBaUFJYWlFQ0RBRUxDMEZzUVd4QmJFRnNRV3hCYkVGc1FXd2dBU0FDUVNCSEd5QUZLQUlJSUFVb0FneEhHeUFEUVNCSEd5QUZLQUljSUFVb0FpQkhHeUFBUVNCSEd5QUZLQUl3SUFVb0FqUkhHeUFKUVNCSEd5QUZLQUpFSUFVb0FraEhHeUVKREFFTFFXd2hDUXNnQlVIUUFHb2tBQ0FKQzFnQkEzOENRQ0FBS0FLUTZ3RWlBVVVOQUNBQktBSUFJQUZCdE5VQmFpZ0NBQ0lDSUFGQnVOVUJhaWdDQUNJREVCTWdBZ1JBSUFNZ0FTQUNFUUlBREFFTElBRVFCZ3NnQUVFQU5nS2c2d0VnQUVJQU53T1E2d0VMNlFNQ0JIOENmaUFBUVFCQktCQURJUVFnQWtFQlFRVWdBeHNpQUVrRVFDQUFEd3NnQVVVRVFFRi9Ed3RCQVNFR0FrQUNRQ0FEUVFGR0RRQWdBeUVHSUFFb0FBQWlCVUdvNnI1cFJnMEFRWFloQXlBRlFYQnhRZERVdE1JQlJ3MEJRUWdoQXlBQ1FRaEpEUUVnQVRVQUJDRUlJQVJCQVRZQ0ZDQUVJQWczQXdCQkFBOExJQUVnQWlBR0VCb2lBeUFDU3cwQUlBUWdBellDR0VGeUlRTWdBQ0FCYWlJRlFRRnJMUUFBSWdKQkNIRU5BQ0FDUVNCeElnWkZCRUJCY0NFRElBVXRBQUFpQlVHbkFVc05BU0FGUVFkeHJVSUJJQVZCQTNaQkNtcXRoaUlJUWdPSWZpQUlmQ0VKSUFCQkFXb2hBQXNnQWtFR2RpRUZJQUpCQW5aQkFDRURBa0FDUUFKQUFrQWdBa0VEY1VFQmF3NERBQUVDQXdzZ0FDQUJhaTBBQUNFRElBQkJBV29oQUF3Q0N5QUFJQUZxTHdBQUlRTWdBRUVDYWlFQURBRUxJQUFnQVdvb0FBQWhBeUFBUVFScUlRQUxRUUZ4SVFJQ2ZnSkFBa0FDUUFKQUlBVkJBV3NPQXdFQ0F3QUxRbjhnQmtVTkF4b2dBQ0FCYWpFQUFBd0RDeUFBSUFGcU13QUFRb0FDZkF3Q0N5QUFJQUZxTlFBQURBRUxJQUFnQVdvcEFBQUxJUWdnQkNBQ05nSWdJQVFnQXpZQ0hDQUVJQWczQXdCQkFDRURJQVJCQURZQ0ZDQUVJQWdnQ1NBR0d5SUlOd01JSUFSQ2dJQUlJQWdnQ0VLQWdBaGFHejRDRUFzZ0F3dGZBUUYvUWJoL0lRTWdBVUVCUVFVZ0Foc2lBazhFZnlBQUlBSnFRUUZyTFFBQUlnQkJBM0ZCQW5SQm9CNXFLQUlBSUFKcUlBQkJCSFpCREhGQnNCNXFLQUlBYWlBQVFTQnhJZ0ZGYWlBQlFRVjJJQUJCd0FCSmNXb0ZRYmgvQ3dzTUFDQUFJQUVnQWtFQUVCa0xsd01DQlg4Q2ZpTUFRVUJxSWdRa0FBSkFBMEFnQVVFRlR3UkFBa0FnQUNnQUFFRndjVUhRMUxUQ0FVWUVRRUorSVFjZ0FVRUlTUTBFSUFBb0FBUWlBa0YzU3cwRUlBSkJDR29pQXlBQlN3MEVJQUpCZ1g5SkRRRU1CQXNnQkVFWWFpQUFJQUVRR3lFQ1FuNGdCQ2tER0VJQUlBUW9BaXhCQVVjYklBSWJJZ2RDZlZZTkF5QUhJQWg4SWdnZ0IxUkNmaUVIRFFNQ1FBSkFJQUZCQ0VrTkFDQUFLQUFBUVhCeFFkRFV0TUlCUncwQUlBQW9BQVFpQWtGM1N3MEZRYmgvSUFKQkNHb2lBaUFCSUFKSkd5RUREQUVMSUFSQkdHb2dBQ0FCRUJzaUFrR0lmMHNFUUNBQ0lRTU1BUXRCdUg4aEF5QUNEUUFnQVNBRUtBSXdJZ0pySVFVZ0FDQUNhaUVHQTBBZ0JpQUZJQVJCREdvUUhTSURRWWgvU3cwQklBTkJBMm9pQWlBRlN3UkFRYmgvSVFNTUFnc2dCU0FDYXlFRklBSWdCbW9oQmlBRUtBSVFSUTBBQ3lBRUtBSTRCSDlCdUg4aEF5QUZRUVJKRFFFZ0JrRUVhZ1VnQmdzZ0FHc2hBd3NnQTBHSWYwc05Bd3NnQVNBRGF5RUJJQUFnQTJvaEFBd0JDd3RDZmlBSUlBRWJJUWNMSUFSQlFHc2tBQ0FIQzJRQkFYOUJ1SDhoQXdKQUlBRkJBMGtOQUNBQUxRQUNJUUVnQWlBQUx3QUFJZ0JCQVhFMkFnUWdBaUFBUVFGMlFRTnhJZ00yQWdBZ0FpQUFJQUZCRUhSeVFRTjJJZ0EyQWdnQ1FBSkFJQU5CQVdzT0F3SUJBQUVMUVd3UEN5QUFJUU1MSUFNTFJBRUNmeUFCSUFJb0FnUWlBeUFCS0FJRWFpSUVOZ0lFSUFBZ0EwRUNkRUdnSFdvb0FnQWdBU2dDQUVFQUlBUnJkbkUyQWdBZ0FSQVBHaUFBSUFKQkNHbzJBZ1FMemdFQkJuOUJ1bjhoQ2dKQUlBSW9BZ1FpQ0NBQ0tBSUFJZ2xxSWcwZ0FTQUFhMHNOQUVGc0lRb2dDU0FFSUFNb0FnQWlDMnRMRFFBZ0FDQUphaUlFSUFJb0FnZ2lER3NoQWlBQUlBRkJJR3NpQUNBTElBbEJBQkFnSUFNZ0NTQUxhallDQUFKQUFrQWdCQ0FGYXlBTVR3UkFJQUloQlF3QkN5QU1JQVFnQm10TERRSWdCeUFISUFJZ0JXc2lBbW9pQVNBSWFrOEVRQ0FFSUFFZ0NCQUtHZ3dDQ3lBQ0lBaHFJUWdnQkNBQlFRQWdBbXNRQ2lBQ2F5RUVDeUFFSUFBZ0JTQUlRUUVRSUFzZ0RTRUtDeUFLQzhjRUFRSi9JQUFnQTJvaEJnSkFJQU5CQjB3RVFBTkFJQUFnQms4TkFpQUFJQUl0QUFBNkFBQWdBRUVCYWlFQUlBSkJBV29oQWd3QUN3QUxJQVJCQVVZRVFBSkFJQUFnQW1zaUJVRUhUUVJBSUFBZ0FpMEFBRG9BQUNBQUlBSXRBQUU2QUFFZ0FDQUNMUUFDT2dBQ0lBQWdBaTBBQXpvQUF5QUFJQUlnQlVFQ2RDSUZRY0FlYWlnQ0FHb2lBaWdBQURZQUJDQUNJQVZCNEI1cUtBSUFheUVDREFFTElBQWdBaWtBQURjQUFBc2dBa0VJYWlFQ0lBQkJDR29oQUFzZ0FTQUdUd1JBSUFBZ0Eyb2hBU0FFUVFGSElBQWdBbXRCRDBweVJRUkFBMEFnQUNBQ0tRQUFOd0FBSUFKQkNHb2hBaUFBUVFocUlnQWdBVWtOQUF3REN3QUxJQUFnQWlrQUFEY0FBQ0FBSUFJcEFBZzNBQWdnQTBFUlNRMEJJQUJCRUdvaEFBTkFJQUFnQWlrQUVEY0FBQ0FBSUFJcEFCZzNBQWdnQUNBQ0tRQWdOd0FRSUFBZ0Fpa0FLRGNBR0NBQ1FTQnFJUUlnQUVFZ2FpSUFJQUZKRFFBTERBRUxBa0FnQUNBQlN3UkFJQUFoQVF3QkN5QUJJQUJySVFVQ1FDQUVRUUZISUFBZ0FtdEJEMHB5UlFSQUlBSWhBd05BSUFBZ0F5a0FBRGNBQUNBRFFRaHFJUU1nQUVFSWFpSUFJQUZKRFFBTERBRUxJQUFnQWlrQUFEY0FBQ0FBSUFJcEFBZzNBQWdnQlVFUlNBMEFJQUJCRUdvaEFDQUNJUU1EUUNBQUlBTXBBQkEzQUFBZ0FDQURLUUFZTndBSUlBQWdBeWtBSURjQUVDQUFJQU1wQUNnM0FCZ2dBMEVnYWlFRElBQkJJR29pQUNBQlNRMEFDd3NnQWlBRmFpRUNDd05BSUFFZ0JrOE5BU0FCSUFJdEFBQTZBQUFnQVVFQmFpRUJJQUpCQVdvaEFnd0FDd0FMQzY0SEFnVi9BWDRqQUVHQUFXc2lFU1FBSUJFZ0F6WUNmRUYvSVE4Q1FBSkFBa0FDUUFKQUlBSU9CQUVBQXdJRUN5QUdSUVJBUWJoL0lROE1CQXRCYkNFUElBVXRBQUFpQWlBRFN3MERJQWdnQWtFQ2RDSUNhaWdDQUNFRElBSWdCMm9vQWdBaEFpQUFRUUE2QUFzZ0FFSUFOd0lBSUFBZ0FqWUNEQ0FBSUFNNkFBb2dBRUVBT3dFSUlBRWdBRFlDQUVFQklROE1Bd3NnQVNBSk5nSUFRUUFoRHd3Q0N5QUtSUVJBUVd3aER3d0NDMEVBSVE4Z0MwVWdERUVaU0hJTkFVRUlJQVIwUVFocUlRQkJBQ0VEQTBBZ0FDQURUUTBDSUFOQlFHc2hBd3dBQ3dBTFFXd2hEeUFSSUJGQi9BQnFJQkZCK0FCcUlBVWdCaEFNSWdOQmlIOUxEUUFnRVNnQ2VDSUNJQVJMRFFBZ0VTZ0NmRUVCYWlFSklBQkJDR29oQzBHQWdBSWdBblJCRUhVaEJVRUJJUkJCQVNBQ2RDSVBRUUZySWdvaEVnTkFJQWtnRGtjRVFBSkFJQkVnRGtFQmRDSUVhaThCQUNJTVFmLy9BMFlFUUNBTElCSkJBM1JxSUE0MkFnUWdFa0VCYXlFU1FRRWhEQXdCQ3lBUVFRQWdCU0FNd1VvYklSQUxJQVFnRFdvZ0REc0JBQ0FPUVFGcUlRNE1BUXNMSUFBZ0FqWUNCQ0FBSUJBMkFnQUNRQ0FLSUJKR0JFQWdEVUhxQUdvaEJrRUFJUkJCQUNFTUEwQWdDU0FRUmdSQUlBOUJBM1lnRDBFQmRtcEJBMm9pQlVFQmRDRUVRUUFoREVFQUlSSURRRUVBSVE0Z0R5QVNUUTBFQTBBZ0RrRUNSd1JBSUFzZ0JTQU9iQ0FNYWlBS2NVRURkR29nQmlBT0lCSnFhaTBBQURZQ0JDQU9RUUZxSVE0TUFRc0xJQkpCQW1vaEVpQUVJQXhxSUFweElRd01BQXNBQlNBUklCQkJBWFJxTGdFQUlRVWdCaUFNYWlJRUlCTTNBQUJCQ0NFT0EwQWdCU0FPU2dSQUlBUWdEbW9nRXpjQUFDQU9RUWhxSVE0TUFRc0xJQk5DZ1lLRWlKQ2d3SUFCZkNFVElCQkJBV29oRUNBRklBeHFJUXdNQVFzQUN3QUxJQTlCQTNZZ0QwRUJkbXBCQTJvaEJVRUFJUkJCQUNFT0EwQWdDU0FRUmcwQlFRQWhEQ0FSSUJCQkFYUnFMZ0VBSWdSQkFDQUVRUUJLR3lFRUEwQWdCQ0FNUndSQUlBc2dEa0VEZEdvZ0VEWUNCQU5BSUFVZ0Rtb2dDbkVpRGlBU1N3MEFDeUFNUVFGcUlRd01BUXNMSUJCQkFXb2hFQXdBQ3dBTElBSkJBV29oQlVFQUlRd0RRQ0FNSUE5SEJFQWdEU0FMSUF4QkEzUnFJZ2tvQWdRaUJFRUJkR29pQWlBQ0x3RUFJZ1pCQVdvN0FRQWdDU0FGSUFablFXQnphaUlDT2dBRElBa2dCaUFDZENBUGF6c0JBQ0FKSUFnZ0JFRUNkQ0lDYWlnQ0FEb0FBaUFKSUFJZ0Iyb29BZ0EyQWdRZ0RFRUJhaUVNREFFTEN5QUJJQUEyQWdBZ0F5RVBDeUFSUVlBQmFpUUFJQThMN1ZvQ08zOEdmaU1BUWVBQmF5SUVKQUFDUUVHdzdBa1FCU0lGUlFSQVFVQWhCd3dCQ3lBRlFnQTNBdlRxQVNBRlFRQTJBc1RyQVNBRlFRQTJBclRyQVNBRlFnQTNBcHpyQVNBRlFRQTJBcmpwQVNBRlFRQTJBcXpzQ1NBRlFnQTNBdFRyQVNBRlFnQTNBcXpyQVNBRlFnQTNBNGpyQVNBRlFnQTNBdVRxQVNBRlFnQTNBdVRyQVNBRlFZR0FnTUFBTmdLODZ3RWdCVUlBTndLazZ3RWdCVUg4NmdGcVFRQTJBZ0FnQlVHUTZ3RnFRZ0EzQXdBZ0JSQVlJQVZCck5VQmFpRVVJQVZCK09zQmFpRWNJQVZCc09vQmFpRWlJQVZCb0RCcUlTb2dCVUdZSUdvaEt5QUZRYWpRQUdvaEhpQUZRUkJxSVN3Z0JVRUlhaUVvSUFWQkJHb2hMU0FGUWNEcEFXb2hLU0FGUVlqckFXb2dCRUdVQVdvaEx5QUVRWXdCYWlFd0lBUkJoQUZxSVRFZ0JFSGNBR29oTWlBRVFkUUFhaUV6SUFSQnpBQnFJVFFnQUNFZEFrQUNRQUpBQWtBQ1FBTkFRUUZCQlNBRktBTGs2Z0ViSVFZQ1FBTkFJQU1nQmtrTkFTQUNLQUFBUVhCeFFkRFV0TUlCUmdSQVFiaC9JUWNnQTBFSVNRMElJQUlvQUFRaURrRjNTd1JBUVhJaEJ3d0pDeUFESUE1QkNHb2lDVWtOQ0NBT1FZQi9Td1JBSUFraEJ3d0pDeUFESUFscklRTWdBaUFKYWlFQ0RBRUxDeUFGUWdBM0FxenBBU0FGUWdBM0EranBBU0FGUVFBMkFwanJBU0FGUWdBM0E0RHFBU0FGUWdNM0EvanBBU0FGUWJUcEFXcENBRGNDQUNBRlFmRHBBV3BDQURjREFDQUZRYWpRQUdvaUNVR01nSURnQURZQ0FDQUZRYXpRQVdwQjRCSXBBZ0EzQWdBZ0JVRzAwQUZxUWVnU0tBSUFOZ0lBSUFVZ0JVRVFhallDQUNBRklBVkJvREJxTmdJRUlBVWdCVUdZSUdvMkFnZ2dCU0FKTmdJTUlBVkJBVUVGSUFVb0F1VHFBUnMyQXJ6cEFRSkFJQUZGRFFBZ0JTZ0NyT2tCSWdrZ0hVWU5BQ0FGSUFrMkFyanBBU0FGSUIwMkFxenBBU0FGS0FLdzZRRWhEaUFGSUIwMkFyRHBBU0FGSUIwZ0RpQUphMm8yQXJUcEFRdEJ1SDhoQ1NBRFFRVkJDU0FGS0FMazZnRWlCaHRKRFFVZ0FrRUJRUVVnQmhzZ0JoQWFJZzVCaUg5TEJFQWdEaUVKREFVTElBTWdEa0VEYWtrTkJTQXBJQUlnRGlBR0VCa2lCa0dJZjBzRVFDQUdJUWtNQlFzZ0JnMEZBa0FDUUNBRktBS282d0ZCQVVjTkFDQUZLQUtrNndFaUNVVU5BQ0FGS0FLVTZ3RkZEUUFnQ1NnQ0JFRUJheUlISUFVb0F0enBBU0lLclVLSGxhK3ZtTGJlbTU1L2ZrTEp6OW15OGVXNjZpZUZRaGVKUXMvVzA3N1N4NnZaUW41QytmUGQ4Wm4ybWFzV2ZDSS9RaUdJSUQrRlFzL1cwNzdTeDZ2WlFuNGlQMElkaUNBL2hVTDU4OTN4bWZhWnF4WitJajlDSUlnZ1A0V25jU0VHSUFrb0FnQWhGUU5BUVFBaENBSkFJQlVnQmtFQ2RHb29BZ0FpQ1VVTkFDQUpLQUlJUVFoSkRRQWdDU2dDQkNJU0tBQUFRYmZJd3VGK1J3MEFJQklvQUFRaENBc2dDQ0FLUndSQUlBWWdCM0ZCQVdvaEJpQUlEUUVMQ3lBSlJRMEFJQVVRR0NBRlFYODJBcURyQVNBRklBazJBcFRyQVNBRklBVW9BdHpwQVNJSU5nS1k2d0VNQVFzZ0JTZ0MzT2tCSVFnTEFrQWdDRVVOQUNBRktBS1k2d0VnQ0VZTkFFRmdJUWtNQmdzQ1FDQUZLQUxnNlFFRVFDQUZJQVVvQXVqcUFTSUpSVFlDN09vQklBa05BU0FGUXZucTBORG55YUhrNFFBM0E2anFBU0FGUWdBM0E2RHFBU0FGUXMvVzA3N1N4NnZaUWpjRG1Pb0JJQVZDMXV1Qzd1cjlpZlhnQURjRGtPb0JJQVZDQURjRGlPb0JJQ0pCQUVFb0VBTWFEQUVMSUFWQkFEWUM3T29CQ3lBQklCMXFJU1VnQlNBRktRUG82UUVnRHExOE53UG82UUVnQXlBT2F5RURJQUlnRG1vaEFpQWRJUTREUUNBQ0lBTWdCRUVzYWhBZEloVkJpSDlMQkVBZ0ZTRUpEQVlMSUFOQkEyc2lOU0FWU1EwRUlBSkJBMm9oRzBGc0lRa0NRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBRUtBSXNEZ01DQVFBVkN5QVZRZi8vQjBzTkV5QVZRUU5KRFJJZ0JTa0R5T2tCSVQ4Q1FBSkFJQnN0QUFBaUNVRURjU0lhUVFGckRnTUdBUUFIQ3lBRktBS0E2Z0VOQUVGaUlRa01GUXNnRlVFRlNRMFNJQnNvQUFBaEF3Si9Ba0FDUUFKQUlBbEJBblpCQTNFaUNVRUNhdzRDQVFJQUN5QUpRUUJISVFjZ0EwRUVka0gvQjNFaEMwRURJUVlnQTBFT2RrSC9CM0VNQWd0QkJDRUdJQU5CQkhaQi8vOEFjU0VMUVFFaEJ5QURRUkoyREFFTElBTkJCSFpCLy84UGNTSUxRWUNBQ0VzTkUwRUJJUWRCQlNFR0lBSXRBQWRCQ25RZ0EwRVdkbklMSWdnZ0Jtb2lDU0FWU3cwU0FrQWdDMEdCQmtrTkFDQUZLQUtjNndGRkRRQkJBQ0VEQTBBZ0EwR0RnQUZMRFFFZ0EwRkFheUVEREFBTEFBc2dCaUFiYWlFUElCcEJBMGNOQmlBRktBSU1JZ0l0QUFGQkNIUWhBeUFIRFFjZ0EwVU5DQ0FFUWZBQWFpQVBJQWdRRFNJRFFZaC9TdzBKSUFKQkJHb2hCaUFMSUJ4cUloSkJBMnNoQ2tFQUlBSXZBUUpyUVI5eElRY2dIQ0VEQTBBZ0JFSHdBR29RRDBVZ0F5QUtTWEVFUUNBRElBWWdCQ2dDY0NJSUlBUW9BblFpRDNRZ0IzWkJBblJxSWdJdkFRQTdBQUFnQXlBQ0xRQURhaUlESUFZZ0NDQVBJQUl0QUFKcUlnaDBJQWQyUVFKMGFpSUNMd0VBT3dBQUlBUWdDQ0FDTFFBQ2FqWUNkQ0FESUFJdEFBTnFJUU1NQVFVZ0VrRUNheUVJQTBBZ0JFSHdBR29RRHlFUElBUW9BbkFoQ2lBRUtBSjBJUUlnQXlBSVN5QVBja1VFUUNBRElBWWdDaUFDZENBSGRrRUNkR29pQ2k4QkFEc0FBQ0FFSUFJZ0NpMEFBbW8yQW5RZ0F5QUtMUUFEYWlFRERBRUxDd05BSUFNZ0NFMEVRQ0FESUFZZ0NpQUNkQ0FIZGtFQ2RHb2lEeThCQURzQUFDQURJQTh0QUFOcUlRTWdBaUFQTFFBQ2FpRUNEQUVMQ3dKQUlBTWdFazhOQUNBRElBWWdDaUFDZENBSGRrRUNkR29pQXkwQUFEb0FBQ0FETFFBRFFRRkdCRUFnQWlBRExRQUNhaUVDREFFTElBSkJIMHNOQUVFZ0lBSWdBeTBBQW1vaUFpQUNRU0JQR3lFQ0MwRnNRV3dnQ3lBRUtBSjRJQVFvQW54SEd5QUNRU0JIR3lFRERBc0xBQXNBQ3lBRUtBSTBJZ0lnSlNBT2Ewc05DaUFPUlFSQVFRQWhDU0FDRFFJTURnc2dEaUFiTFFBQUlBSVFBeG9nQWlFSkRBd0xJQlVnSlNBT2Ewc05DU0FPRFFGQkFDRUpJQlZGRFF3TFFiWi9JUWtNRVFzZ0RpQWJJQlVRQWhvZ0ZTRUpEQW9MSUJ3Z0d3Si9Ba0FDUUFKQUlBbEJBblpCQTNGQkFXc09Bd0VBQWdBTElBbEJBM1loQTBFQkRBSUxJQnN2QUFCQkJIWWhBMEVDREFFTElCVkJCRWtORGlBQ0x3QURJQUl0QUFWQkVIUnlJZ0pCajRDQUFVc05EaUFDUVFSMklRTkJBd3NpQW1vdEFBQWdBMEVnYWhBRElRa2dCU0FETmdLQTZ3RWdCU0FKTmdMdzZnRWdBa0VCYWlFSkRBVUxJQlVDZndKQUFrQUNRQ0FKUVFKMlFRTnhRUUZyRGdNQkFBSUFDeUFKUVFOMklRTkJBUXdDQ3lBYkx3QUFRUVIySVFOQkFnd0JDeUFDTHdBRElBSXRBQVZCRUhSeVFRUjJJUU5CQXdzaUFpQURhaUlKUVNCcVNRUkFJQWtnRlVzTkRTQWNJQUlnRzJvZ0F4QUNJUUlnQlNBRE5nS0E2d0VnQlNBQ05nTHc2Z0VnQWlBRGFpSUNRZ0EzQUJnZ0FrSUFOd0FRSUFKQ0FEY0FDQ0FDUWdBM0FBQU1CUXNnQlNBRE5nS0E2d0VnQlNBQ0lCdHFOZ0x3NmdFTUJBc2dCMFVFUUNBZUlBOGdDQ0FVRUJRaUFrR0lmMHNnQWlBSVQzSU5EQ0FjSUFzZ0FpQVBhaUFJSUFKcklCNFFGU0VEREFNTElBdEZJQWhGY2cwTElBdEJDSFlpQXlBSUlBdEpCSDhnQ0VFRWRDQUxiZ1ZCRHd0QkdHd2lBa0dNQ0dvb0FnQnNJQUpCaUFocUtBSUFhaUlHUVFOMklBWnFJQUpCZ0FocUtBSUFJQUpCaEFocUtBSUFJQU5zYWtrRVFDTUFRUkJySWhBa0FDQWVLQUlBSVFNZ0ZFSHdCR3BCQUVIc0FCQURJUVpCVkNFQ0FrQWdBMEgvQVhFaURFRU1TdzBBQWtBZ0ZFSGNDV29nQmlBUVFRaHFJQkJCREdvZ0R5QUlJQlJCM0F0cUloY1FDeUlTUVloL1N3MEFJQkFvQWd3aUJpQU1TdzBCSUJSQnFBVnFJUTBnRkVHa0JXb2hOaUFlUVFScUlSRWdBMEdBZ0lCNGNTRTNJQVpCQVdvaUV5RUNJQVloQXdOQUlBSWlCMEVCYXlFQ0lBTWlDa0VCYXlFRElCUWdDa0VDZEdvb0F2QUVSUTBBQzBFQklBY2dCMEVCVFJzaEZrRUFJUWRCQVNFQ0EwQWdBaUFXUndSQUlCUWdBa0VDZENJRGFpZ0M4QVFoR0NBRElBMXFJQWMyQWdBZ0FrRUJhaUVDSUFjZ0dHb2hCd3dCQ3dzZ0RTQUhOZ0lBUVFBaEFpQVFLQUlJSVFNRFFDQUNJQU5IQkVBZ0RTQUNJQlJxUWR3SmFpMEFBQ0lZUVFKMGFpSVpJQmtvQWdBaUdVRUJhallDQUNBVUlCbEJBWFJxSWhrZ0dEb0EzUVVnR1NBQ09nRGNCU0FDUVFGcUlRSU1BUXNMUVFBaEF5QU5RUUEyQWdBZ0RDQUdRWDl6YWlFR1FRRWhBZ05BSUFJZ0ZrY0VRQ0FVSUFKQkFuUnFJZzBnQXpZQ0FDQU5LQUx3QkNBQ0lBWnFkQ0FEYWlFRElBSkJBV29oQWd3QkN3c2dEQ0FUSUFwcklnWnJRUUZxSVFvZ0JpRURBMEFnQXlBS1NRUkFJQlFnQTBFMGJHb2hEVUVCSVFJRFFDQUNJQlpIQkVBZ0RTQUNRUUowSWhocUlCUWdHR29vQWdBZ0EzWTJBZ0FnQWtFQmFpRUNEQUVMQ3lBRFFRRnFJUU1NQVFzTElCY2dGRUUwRUFJaE9DQVVRWkFNYWlFNUlCTWdER3NoT2lBVVFkd0ZhaUVYUVFBaENnTkFBa0FDUUNBSElBcEhCRUJCQVNBTUlCTWdGeUFLUVFGMGFpSUNMUUFCSWcxcklnTnJJaGgwSVJrZ0FpMEFBQ0VXSURnZ0RVRUNkR29pSHlnQ0FDRUNJQVlnR0UwRVFDQTJRUUVnQXlBNmFpSU5JQTFCQVV3YklpQkJBblFpSkdvb0FnQWhEU0E1SUJRZ0EwRTBiR3BCTkJBQ0lTRWdEVUVCZENFbUlCRWdBa0VDZEdvaEl5QWdRUUZORFFJZ0EwRVFkRUdBZ1B3SGNTQVdja0dBZ0lBSWNpRWdJQ0VnSkdvb0FnQWhKRUVBSVFJRFFDQUNJQ1JHRFFNZ0l5QUNRUUowYWlBZ05nRUFJQUpCQVdvaEFnd0FDd0FMSUFJZ0FpQVphaUlOSUFJZ0RVc2JJUTBnQTBFUWRFR0FnUHdIY1NBV2NrR0FnSUFJY2lFREEwQWdBaUFOUmcwRElCRWdBa0VDZEdvZ0F6WUJBQ0FDUVFGcUlRSU1BQXNBQ3lBZUlBeEJFSFFnTjNJZ0RISkJnQUp5TmdJQURBTUxJQWNnRFdzaEpDQVhJQ1pxSVNaQkFDRU5BMEFnRFNBa1JnMEJRUUVnR0NBVElDWWdEVUVCZEdvaUp5MEFBU0lDYXlJN2EzUWlQQ0FoSUFKQkFuUnFJaUFvQWdBaUFtb2hQU0FESUR0cVFSQjBRWUNBL0FkeElDY3RBQUJCQ0hSeUlCWnlRWUNBZ0JCeUlTY0RRQ0FqSUFKQkFuUnFJQ2MyQVFBZ0FrRUJhaUlDSUQxSkRRQUxJQ0FnSUNnQ0FDQThhallDQUNBTlFRRnFJUTBNQUFzQUN5QWZJQjhvQWdBZ0dXbzJBZ0FnQ2tFQmFpRUtEQUFMQUFzZ0VpRUNDeUFRUVJCcUpBQWdBa0dJZjBzZ0FpQUlUM0lORENBY0lBc2dBaUFQYWlBSUlBSnJJQjRRRmlFRERBTUxJQjRnRHlBSUlCUVFGQ0lDUVloL1N5QUNJQWhQY2cwTElCd2dDeUFDSUE5cUlBZ2dBbXNnSGhBWElRTU1BZ3NnQXdSQUlCd2dDeUFQSUFnZ0FoQVdJUU1NQWdzZ0hDQUxJQThnQ0NBQ0VCY2hBd3dCQ3lBY0lBc2dEeUFJSUFJUUZTRURDeUFEUVloL1N3MElJQVVnQ3pZQ2dPc0JJQVVnSERZQzhPb0JJQVZCQVRZQ2dPb0JJQnBCQWtZRVFDQUZJQjQyQWd3TElBc2dIR29pQWtJQU53QUFJQUpDQURjQUdDQUNRZ0EzQUJBZ0FrSUFOd0FJSUFsQmlIOUxEUW9MSUFrZ0ZVWU5DQ0FWSUFscklRWWdCU2dDbk9zQklRb0NRQ0FKSUJ0cUlnTXRBQUFpRDBVRVFFRUJJUUpCQUNFUFFiaC9JUWtnQmtFQlJnMEJEQXNMQW44Z0EwRUJhaUFQd0NJQ1FRQk9EUUFhSUFKQmYwWUVRQ0FHUVFOSURRc2dBeThBQVVHQS9nRnFJUThnQTBFRGFnd0JDeUFHUVFKSURRb2dBeTBBQVNBUFFRaDBja0dBZ0FKcklROGdBMEVDYWdzaEVrRzRmeUVKSUJKQkFXb2lBaUFWSUJ0cUlnZExEUW9nTENBRklCSXRBQUFpRWtFR2RrRWpRUWtnQWlBSElBSnJRY0FRUWRBUlFmQVNJQVVvQW9UcUFTQUtJQThnRkJBaElnbEJpSDlMRFFnZ0t5QW9JQkpCQkhaQkEzRkJIMEVJSUFJZ0NXb2lBaUFISUFKclFZQUxRWUFNUVlBWElBVW9Bb1RxQVNBRktBS2M2d0VnRHlBVUVDRWlDRUdJZjBzTkNFRnNJUWtnS2lBdElCSkJBblpCQTNGQk5FRUpJQUlnQ0dvaUFpQUhJQUpyUVlBTlFlQU9RWkFaSUFVb0FvVHFBU0FGS0FLYzZ3RWdEeUFVRUNFaUIwR0lmMHNOQ2lBQ0lBZHFJQU5ySWdJaENTQUNRWWgvU3cwS0N5QU9JQTlCQUV4eURRRUxRYnAvSVFrTUNBc2dKU0FPYXlFSklBWWdBbXNoQmlBQ0lBTnFJUWNDUUFKQUFrQWdDa1VFUUNBUFFRbElJQVVwQThqcEFVS0JnSUFJVkhJTkFpQW9LQUlBSWdKQkNHb2hFaUFDS0FJRUlRcEJBQ0VEUVFBaEFnTkFJQU1nQ25aRkJFQWdBaUFTSUFOQkEzUnFMUUFDUVJaTGFpRUNJQU5CQVdvaEF3d0JDd3NnQlVFQU5nS2M2d0VnQWtFSUlBcHJkRUVVVHcwQkRBTUxJQVZCQURZQ25Pc0JDeUFFSUFVb0F2RHFBU0lETmdMY0FTQUpJQTVxSVJZZ0F5QUZLQUtBNndGcUlSY0NRQ0FQUlFSQUlBNGhCd3dCQ3lBRktBSzQ2UUVoR2lBRktBSzA2UUVoR0NBRktBS3c2UUVoRWlBRlFRRTJBb1RxQVVFQUlRTURRQ0FEUVFOSEJFQWdCQ0FEUVFKMElnSnFJQUlnQldwQnJOQUJhaWdDQURZQ1pDQURRUUZxSVFNTUFRc0xRV3doQ1NBRVFUaHFJZ0lnQnlBR0VBMUJpSDlMRFFOQkNDQVBJQTlCQ0U0YklSOGdOQ0FDSUFVb0FnQVFIaUF6SUFJZ0JTZ0NDQkFlSURJZ0FpQUZLQUlFRUI0Z0RpQVNheUVaUVFBaENBTkFJQVJCT0dvUUQwRURSaUFJSUI5T2NrVUVRQ0FFS0FKUUlBUW9Ba3hCQTNScUtRSUFJa0NuSWdkQkVIWWlFVUgvQVhFaEN5QUVLQUpnSUFRb0FseEJBM1JxS1FJQUlrR25JZ3hCRUhZaUlVSC9BWEVoRUNBRUtBSllJQVFvQWxSQkEzUnFLUUlBSWtKQ0lJaW5JUVlnUVVJZ2lDQkFRaUNJcHlFREFrQWdRa0lRaUtjaUNrSC9BWEVpQWtFQ1R3UkFBa0FnQWtFWlNTQS9Rb0dBZ0JCVWNrVUVRQ0FFUVNBZ0JDZ0NQQ0lLYXlJTklBSWdBaUFOU3hzaUV5QUthallDUENBR0lBUW9BamdnQ25SQkFDQVRhM1lnQWlBVGF5SVRkR29oQ2lBRVFUaHFFQThhSUFJZ0RVME5BU0FFSUFRb0Fqd2lBaUFUYWpZQ1BDQUVLQUk0SUFKMFFRQWdFMnQySUFwcUlRb01BUXNnQkNBQ0lBUW9BandpRFdvMkFqd2dCQ2dDT0NBTmRFRUFJQXByZGlBR2FpRUtJQVJCT0dvUUR4b0xJQVFwQW1RaFJDQUVJQW8yQW1RZ0JDQkVOd0pvREFFTEFrQWdBa1VFUUNBREJFQWdCQ2dDWkNFS0RBTUxJQVFvQW1naENnd0JDeUFFSUFRb0Fqd2lBa0VCYWpZQ1BBSi9JQVlnQTBWcUlBUW9BamdnQW5SQkgzWnFJZ0pCQTBZRVFDQUVLQUprUVFGckRBRUxJQUpCQW5RZ0JHb29BbVFMSWdaRklBWnFJUW9nQWtFQlJ3UkFJQVFnQkNnQ2FEWUNiQXNMSUFRZ0JDZ0NaRFlDYUNBRUlBbzJBbVFMcHlFQ0lFRkNnSUQ4QjROUVJRUkFJQVFnQkNnQ1BDSUdJQkJxTmdJOElBUW9BamdnQm5SQkFDQWhhM1lnQW1vaEFnc2dDeUFRYWtFVVR3UkFJQVJCT0dvUUR4b0xJRUJDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NQQ0lHSUF0cU5nSThJQVFvQWpnZ0JuUkJBQ0FSYTNZZ0Eyb2hBd3NnQkVFNGFoQVBHaUFFSUFRb0FqZ2lCa0VBSUFkQkdIWWlDeUFFS0FJOGFpSVFhM1lnQzBFQ2RFR2dIV29vQWdCeElBZEIvLzhEY1dvMkFrd2dCQ0FRSUF4QkdIWWlCMm9pQ3pZQ1BDQUVJQWRCQW5SQm9CMXFLQUlBSUFaQkFDQUxhM1p4SUF4Qi8vOERjV28yQWx3Z0JFRTRhaEFQR2lBRUlFS25JZ1pCR0hZaUJ5QUVLQUk4YWlJTE5nSThJQVFnQjBFQ2RFR2dIV29vQWdBZ0JDZ0NPRUVBSUF0cmRuRWdCa0gvL3dOeGFqWUNWQ0FFUWZBQWFpQUlRUXhzYWlJR0lBbzJBZ2dnQmlBQ05nSUVJQVlnQXpZQ0FDQUlRUUZxSVFnZ0F5QVphaUFDYWlFWkRBRUxDeUFJSUI5SURRTWdGa0VnYXlFaElBNGhCd05BSUFSQk9Hb1FEMEVEUmlBSUlBOU9ja1VFUUNBRUtBSlFJQVFvQWt4QkEzUnFLUUlBSWtDbklnWkJFSFlpSTBIL0FYRWhDaUFFS0FKZ0lBUW9BbHhCQTNScUtRSUFJa0duSWcxQkVIWWlJRUgvQVhFaEV5QUVLQUpZSUFRb0FsUkJBM1JxS1FJQUlrSkNJSWluSVFNZ1FVSWdpQ0JBUWlDSXB5RUxBa0FnUWtJUWlLY2lERUgvQVhFaUFrRUNUd1JBQWtBZ0FrRVpTU0EvUW9HQWdCQlVja1VFUUNBRVFTQWdCQ2dDUENJTWF5SVJJQUlnQWlBUlN4c2lFQ0FNYWpZQ1BDQURJQVFvQWpnZ0RIUkJBQ0FRYTNZZ0FpQVFheUlNZEdvaEVDQUVRVGhxRUE4YUlBSWdFVTBOQVNBRUlBUW9BandpQWlBTWFqWUNQQ0FFS0FJNElBSjBRUUFnREd0MklCQnFJUkFNQVFzZ0JDQUNJQVFvQWp3aUVHbzJBandnQkNnQ09DQVFkRUVBSUF4cmRpQURhaUVRSUFSQk9Hb1FEeG9MSUFRcEFtUWhSQ0FFSUJBMkFtUWdCQ0JFTndKb0RBRUxBa0FnQWtVRVFDQUxCRUFnQkNnQ1pDRVFEQU1MSUFRb0FtZ2hFQXdCQ3lBRUlBUW9BandpQWtFQmFqWUNQQUovSUFNZ0MwVnFJQVFvQWpnZ0FuUkJIM1pxSWdKQkEwWUVRQ0FFS0FKa1FRRnJEQUVMSUFKQkFuUWdCR29vQW1RTElnTkZJQU5xSVJBZ0FrRUJSd1JBSUFRZ0JDZ0NhRFlDYkFzTElBUWdCQ2dDWkRZQ2FDQUVJQkEyQW1RTHB5RU1JRUZDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NQQ0lDSUJOcU5nSThJQVFvQWpnZ0FuUkJBQ0FnYTNZZ0RHb2hEQXNnQ2lBVGFrRVVUd1JBSUFSQk9Hb1FEeG9MSUVCQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDUENJQ0lBcHFOZ0k4SUFRb0FqZ2dBblJCQUNBamEzWWdDMm9oQ3dzZ0JFRTRhaEFQR2lBRUlBUW9BamdpQWtFQUlBWkJHSFlpQXlBRUtBSThhaUlLYTNZZ0EwRUNkRUdnSFdvb0FnQnhJQVpCLy84RGNXbzJBa3dnQkNBS0lBMUJHSFlpQTJvaUJqWUNQQ0FFSUFOQkFuUkJvQjFxS0FJQUlBSkJBQ0FHYTNaeElBMUIvLzhEY1dvMkFsd2dCRUU0YWhBUEdpQUVJRUtuSWdKQkdIWWlBeUFFS0FJOGFpSUdOZ0k4SUFRZ0EwRUNkRUdnSFdvb0FnQWdCQ2dDT0VFQUlBWnJkbkVnQWtILy93TnhhallDVkFKQUFrQUNRQ0FFS0FMY0FTSURJQVJCOEFCcUlBaEJCM0ZCREd4cUloTW9BZ0FpRVdvaUl5QVhTdzBBSUFjZ0V5Z0NCQ0lOSUJGcUlncHFJQ0ZMRFFBZ0NrRWdhaUFXSUFkclRRMEJDeUFFSUJNb0FnZzJBaGdnQkNBVEtRSUFOd01RSUFjZ0ZpQUVRUkJxSUFSQjNBRnFJQmNnRWlBWUlCb1FIeUVLREFFTElBY2dFV29oQWlBVEtBSUlJUVlnQnlBREtRQUFOd0FBSUFjZ0F5a0FDRGNBQ0FKQUlCRkJFVWtOQUNBSElBTXBBQkEzQUJBZ0J5QURLUUFZTndBWUlCRkJFR3RCRVVnTkFDQURRUkJxSVFNZ0IwRWdhaUVSQTBBZ0VTQURLUUFRTndBQUlCRWdBeWtBR0RjQUNDQVJJQU1wQUNBM0FCQWdFU0FES1FBb053QVlJQU5CSUdvaEF5QVJRU0JxSWhFZ0Fra05BQXNMSUFJZ0Jtc2hBeUFFSUNNMkF0d0JJQUlnRW1zZ0Jra0VRQ0FHSUFJZ0dHdExEUWNnR2lBYUlBTWdFbXNpQTJvaUVTQU5hazhFUUNBQ0lCRWdEUkFLR2d3Q0N5QURJQTFxSVEwZ0FpQVJRUUFnQTJzUUNpQURheUVDSUJJaEF3c2dCa0VRVHdSQUlBSWdBeWtBQURjQUFDQUNJQU1wQUFnM0FBZ2dEVUVSU0EwQklBSWdEV29oQmlBQ1FSQnFJUUlEUUNBQ0lBTXBBQkEzQUFBZ0FpQURLUUFZTndBSUlBSWdBeWtBSURjQUVDQUNJQU1wQUNnM0FCZ2dBMEVnYWlFRElBSkJJR29pQWlBR1NRMEFDd3dCQ3dKQUlBWkJCMDBFUUNBQ0lBTXRBQUE2QUFBZ0FpQURMUUFCT2dBQklBSWdBeTBBQWpvQUFpQUNJQU10QUFNNkFBTWdBaUFESUFaQkFuUWlCa0hBSG1vb0FnQnFJZ01vQUFBMkFBUWdBeUFHUWVBZWFpZ0NBR3NoQXd3QkN5QUNJQU1wQUFBM0FBQUxJQTFCQ1VrTkFDQUNJQTFxSVJFZ0FrRUlhaUlHSUFOQkNHb2lBMnRCRDB3RVFBTkFJQVlnQXlrQUFEY0FBQ0FEUVFocUlRTWdCa0VJYWlJR0lCRkpEUUFNQWdzQUN5QUdJQU1wQUFBM0FBQWdCaUFES1FBSU53QUlJQTFCR1VnTkFDQUNRUmhxSVFJRFFDQUNJQU1wQUJBM0FBQWdBaUFES1FBWU53QUlJQUlnQXlrQUlEY0FFQ0FDSUFNcEFDZzNBQmdnQTBFZ2FpRURJQUpCSUdvaUFpQVJTUTBBQ3dzZ0NrR0lmMHNFUUNBS0lRa01CZ1VnRXlBUU5nSUlJQk1nRERZQ0JDQVRJQXMyQWdBZ0NFRUJhaUVJSUFjZ0Ntb2hCeUFMSUJscUlBeHFJUmtNQWdzQUN3c2dDQ0FQU0EwRElBZ2dIMnNoQmdOQUFrQWdCaUFQVGdSQVFRQWhBd05BSUFOQkEwWU5BaUFGSUFOQkFuUWlBbXBCck5BQmFpQUNJQVJxS0FKa05nSUFJQU5CQVdvaEF3d0FDd0FMQWtBQ1FBSkFJQVFvQXR3QklnTWdCRUh3QUdvZ0JrRUhjVUVNYkdvaUNDZ0NBQ0lNYWlJUUlCZExEUUFnQnlBSUtBSUVJZ3NnREdvaUNtb2dJVXNOQUNBS1FTQnFJQllnQjJ0TkRRRUxJQVFnQ0NnQ0NEWUNLQ0FFSUFncEFnQTNBeUFnQnlBV0lBUkJJR29nQkVIY0FXb2dGeUFTSUJnZ0doQWZJUW9NQVFzZ0J5QU1haUVDSUFnb0FnZ2hDQ0FISUFNcEFBQTNBQUFnQnlBREtRQUlOd0FJQWtBZ0RFRVJTUTBBSUFjZ0F5a0FFRGNBRUNBSElBTXBBQmczQUJnZ0RFRVFhMEVSU0EwQUlBTkJFR29oQXlBSFFTQnFJUXdEUUNBTUlBTXBBQkEzQUFBZ0RDQURLUUFZTndBSUlBd2dBeWtBSURjQUVDQU1JQU1wQUNnM0FCZ2dBMEVnYWlFRElBeEJJR29pRENBQ1NRMEFDd3NnQWlBSWF5RURJQVFnRURZQzNBRWdBaUFTYXlBSVNRUkFJQWdnQWlBWWEwc05CeUFhSUJvZ0F5QVNheUlEYWlJTUlBdHFUd1JBSUFJZ0RDQUxFQW9hREFJTElBTWdDMm9oQ3lBQ0lBeEJBQ0FEYXhBS0lBTnJJUUlnRWlFREN5QUlRUkJQQkVBZ0FpQURLUUFBTndBQUlBSWdBeWtBQ0RjQUNDQUxRUkZJRFFFZ0FpQUxhaUVJSUFKQkVHb2hBZ05BSUFJZ0F5a0FFRGNBQUNBQ0lBTXBBQmczQUFnZ0FpQURLUUFnTndBUUlBSWdBeWtBS0RjQUdDQURRU0JxSVFNZ0FrRWdhaUlDSUFoSkRRQUxEQUVMQWtBZ0NFRUhUUVJBSUFJZ0F5MEFBRG9BQUNBQ0lBTXRBQUU2QUFFZ0FpQURMUUFDT2dBQ0lBSWdBeTBBQXpvQUF5QUNJQU1nQ0VFQ2RDSUlRY0FlYWlnQ0FHb2lBeWdBQURZQUJDQURJQWhCNEI1cUtBSUFheUVEREFFTElBSWdBeWtBQURjQUFBc2dDMEVKU1EwQUlBSWdDMm9oRENBQ1FRaHFJZ2dnQTBFSWFpSURhMEVQVEFSQUEwQWdDQ0FES1FBQU53QUFJQU5CQ0dvaEF5QUlRUWhxSWdnZ0RFa05BQXdDQ3dBTElBZ2dBeWtBQURjQUFDQUlJQU1wQUFnM0FBZ2dDMEVaU0EwQUlBSkJHR29oQWdOQUlBSWdBeWtBRURjQUFDQUNJQU1wQUJnM0FBZ2dBaUFES1FBZ053QVFJQUlnQXlrQUtEY0FHQ0FEUVNCcUlRTWdBa0VnYWlJQ0lBeEpEUUFMQ3lBS1FZaC9Td1JBSUFvaENRd0dCU0FHUVFGcUlRWWdCeUFLYWlFSERBSUxBQXNMSUFRb0F0d0JJUU1MUWJwL0lRa2dGeUFEYXlJQ0lCWWdCMnRMRFFJZ0J3Ui9JQWNnQXlBQ0VBSWdBbW9GUVFBTElBNXJJUWtNQWdzZ0JVRUFOZ0tjNndFTElBUWdCU2dDOE9vQklnTTJBdHdCSUFrZ0Rtb2hEQ0FESUFVb0FvRHJBV29oRUFKQUlBOUZCRUFnRGlFR0RBRUxJQVVvQXJqcEFTRU5JQVVvQXJUcEFTRVRJQVVvQXJEcEFTRVNJQVZCQVRZQ2hPb0JRUUFoQXdOQUlBTkJBMGNFUUNBRUlBTkJBblFpQW1vZ0FpQUZha0dzMEFGcUtBSUFOZ0tjQVNBRFFRRnFJUU1NQVFzTFFXd2hDU0FFUWZBQWFpSUNJQWNnQmhBTlFZaC9TdzBCSURFZ0FpQUZLQUlBRUI0Z01DQUNJQVVvQWdnUUhpQXZJQUlnQlNnQ0JCQWVJQXhCSUdzaEdDQU9JUVlEUUNBRUtBS0lBU0FFS0FLRUFVRURkR29wQWdBaVFLY2lDa0VRZGlJWlFmOEJjU0VMSUFRb0FwZ0JJQVFvQXBRQlFRTjBhaWtDQUNKQnB5SVdRUkIySWg5Qi93RnhJUm9nQkNnQ2tBRWdCQ2dDakFGQkEzUnFLUUlBSWtKQ0lJaW5JUWNnUVVJZ2lDQkFRaUNJcHlFREFrQWdRa0lRaUtjaUNFSC9BWEVpQWtFQ1R3UkFBa0FnQWtFWlNTQS9Rb0dBZ0JCVWNrVUVRQ0FFUVNBZ0JDZ0NkQ0lJYXlJUklBSWdBaUFSU3hzaUZ5QUlhallDZENBSElBUW9BbkFnQ0hSQkFDQVhhM1lnQWlBWGF5SVhkR29oQ0NBRVFmQUFhaEFQR2lBQ0lCRk5EUUVnQkNBRUtBSjBJZ0lnRjJvMkFuUWdCQ2dDY0NBQ2RFRUFJQmRyZGlBSWFpRUlEQUVMSUFRZ0FpQUVLQUowSWhGcU5nSjBJQVFvQW5BZ0VYUkJBQ0FJYTNZZ0Iyb2hDQ0FFUWZBQWFoQVBHZ3NnQkNrQ25BRWhSQ0FFSUFnMkFwd0JJQVFnUkRjQ29BRU1BUXNDUUNBQ1JRUkFJQU1FUUNBRUtBS2NBU0VJREFNTElBUW9BcUFCSVFnTUFRc2dCQ0FFS0FKMElnSkJBV28yQW5RQ2Z5QUhJQU5GYWlBRUtBSndJQUowUVI5MmFpSUNRUU5HQkVBZ0JDZ0NuQUZCQVdzTUFRc2dBa0VDZENBRWFpZ0NuQUVMSWdkRklBZHFJUWdnQWtFQlJ3UkFJQVFnQkNnQ29BRTJBcVFCQ3dzZ0JDQUVLQUtjQVRZQ29BRWdCQ0FJTmdLY0FRdW5JUUlnUVVLQWdQd0hnMUJGQkVBZ0JDQUVLQUowSWdjZ0dtbzJBblFnQkNnQ2NDQUhkRUVBSUI5cmRpQUNhaUVDQ3lBTElCcHFRUlJQQkVBZ0JFSHdBR29RRHhvTElFQkNnSUQ4QjROUVJRUkFJQVFnQkNnQ2RDSUhJQXRxTmdKMElBUW9BbkFnQjNSQkFDQVphM1lnQTJvaEF3c2dCRUh3QUdvUUR4b2dCQ0FFS0FKd0lnZEJBQ0FLUVJoMklnc2dCQ2dDZEdvaUdtdDJJQXRCQW5SQm9CMXFLQUlBY1NBS1FmLy9BM0ZxTmdLRUFTQUVJQm9nRmtFWWRpSUthaUlMTmdKMElBUWdDa0VDZEVHZ0hXb29BZ0FnQjBFQUlBdHJkbkVnRmtILy93TnhhallDbEFFZ0JFSHdBR29RRHhvZ0JDQkNweUlIUVJoMklnb2dCQ2dDZEdvaUN6WUNkQ0FFSUFwQkFuUkJvQjFxS0FJQUlBUW9BbkJCQUNBTGEzWnhJQWRCLy84RGNXbzJBb3dCSUFRZ0F6WUNPQ0FFSUFJMkFqd2dCQ0FJTmdKQUFrQUNRQUpBSUFRb0F0d0JJZ3NnQTJvaUZpQVFTdzBBSUFZZ0FpQURhaUlLYWlBWVN3MEFJQXBCSUdvZ0RDQUdhMDBOQVFzZ0JDQUVRVUJyS0FJQU5nSUlJQVFnQkNrRE9EY0RBQ0FHSUF3Z0JDQUVRZHdCYWlBUUlCSWdFeUFORUI4aENnd0JDeUFESUFacUlRY2dCaUFMS1FBQU53QUFJQVlnQ3lrQUNEY0FDQUpBSUFOQkVVa05BQ0FHSUFzcEFCQTNBQkFnQmlBTEtRQVlOd0FZSUFOQkVHdEJFVWdOQUNBTFFSQnFJUU1nQmtFZ2FpRUxBMEFnQ3lBREtRQVFOd0FBSUFzZ0F5a0FHRGNBQ0NBTElBTXBBQ0EzQUJBZ0N5QURLUUFvTndBWUlBTkJJR29oQXlBTFFTQnFJZ3NnQjBrTkFBc0xJQWNnQ0dzaEF5QUVJQlkyQXR3QklBY2dFbXNnQ0VrRVFDQUlJQWNnRTJ0TERRUWdEU0FOSUFNZ0Vtc2lBMm9pQ3lBQ2FrOEVRQ0FISUFzZ0FoQUtHZ3dDQ3lBSElBdEJBQ0FEYXhBS0lBUWdBaUFEYWlJQ05nSThJQU5ySVFjZ0VpRURDeUFJUVJCUEJFQWdCeUFES1FBQU53QUFJQWNnQXlrQUNEY0FDQ0FDUVJGSURRRWdBaUFIYWlFSUlBZEJFR29oQWdOQUlBSWdBeWtBRURjQUFDQUNJQU1wQUJnM0FBZ2dBaUFES1FBZ053QVFJQUlnQXlrQUtEY0FHQ0FEUVNCcUlRTWdBa0VnYWlJQ0lBaEpEUUFMREFFTEFrQWdDRUVIVFFSQUlBY2dBeTBBQURvQUFDQUhJQU10QUFFNkFBRWdCeUFETFFBQ09nQUNJQWNnQXkwQUF6b0FBeUFISUFNZ0NFRUNkQ0lJUWNBZWFpZ0NBR29pQXlnQUFEWUFCQ0FESUFoQjRCNXFLQUlBYXlFRERBRUxJQWNnQXlrQUFEY0FBQXNnQWtFSlNRMEFJQUlnQjJvaEN5QUhRUWhxSWdnZ0EwRUlhaUlEYTBFUFRBUkFBMEFnQ0NBREtRQUFOd0FBSUFOQkNHb2hBeUFJUVFocUlnZ2dDMGtOQUF3Q0N3QUxJQWdnQXlrQUFEY0FBQ0FJSUFNcEFBZzNBQWdnQWtFWlNBMEFJQWRCR0dvaEFnTkFJQUlnQXlrQUVEY0FBQ0FDSUFNcEFCZzNBQWdnQWlBREtRQWdOd0FRSUFJZ0F5a0FLRGNBR0NBRFFTQnFJUU1nQWtFZ2FpSUNJQXRKRFFBTEN5QUtRWWgvU3dSQUlBb2hDUXdEQ3lBR0lBcHFJUVlnQkVId0FHb1FEeUVESUE5QkFXc2lEdzBBQzBFQUlRSWdBMEVDU1EwQkEwQWdBa0VEUndSQUlBVWdBa0VDZENJRGFrR3MwQUZxSUFNZ0JHb29BcHdCTmdJQUlBSkJBV29oQWd3QkN3c2dCQ2dDM0FFaEF3dEJ1bjhoQ1NBUUlBTnJJZ0lnRENBR2Ewc05BQ0FHQkg4Z0JpQURJQUlRQWlBQ2FnVkJBQXNnRG1zaENRc2dDVUdJZjBzTkJnc0NRQ0FGS0FMczZnRkZEUUFnQlNBRktRT0k2Z0VnQ2ExOE53T0k2Z0VDUUNBRktBTFE2Z0VpQWlBSmFpSUlRUjlOQkVBZ0RrVU5BU0FDSUNKcUlBNGdDUkFDR2lBRktBTFE2Z0VnQ1dvaENBd0JDeUFPSVFNZ0FnUkFJQUlnSW1vZ0EwRWdJQUpyRUFJYUlBVW9BdERxQVNFQ0lBVkJBRFlDME9vQklBVWdCU2tEa09vQklBVXBBTERxQVVMUDF0Tyswc2VyMlVKK2ZFSWZpVUtIbGErdm1MYmVtNTUvZmpjRGtPb0JJQVVnQlNrRG1Pb0JJQVVwQUxqcUFVTFAxdE8rMHNlcjJVSitmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZqY0RtT29CSUFVZ0JTa0RvT29CSUFVcEFNRHFBVUxQMXRPKzBzZXIyVUorZkVJZmlVS0hsYSt2bUxiZW01NS9mamNEb09vQklBVWdCU2tEcU9vQklBVXBBTWpxQVVMUDF0Tyswc2VyMlVKK2ZFSWZpVUtIbGErdm1MYmVtNTUvZmpjRHFPb0JJQU1nQW10QklHb2hBd3NnQ1NBT2FpSUNJQU5CSUdwUEJFQWdBa0VnYXlFR0lBVXBBNmpxQVNFL0lBVXBBNkRxQVNGQUlBVXBBNWpxQVNGQklBVXBBNURxQVNGQ0EwQWdBeWtBR0VMUDF0Tyswc2VyMlVKK0lEOThRaCtKUW9lVnI2K1l0dDZibm45K0lUOGdBeWtBRUVMUDF0Tyswc2VyMlVKK0lFQjhRaCtKUW9lVnI2K1l0dDZibm45K0lVQWdBeWtBQ0VMUDF0Tyswc2VyMlVKK0lFRjhRaCtKUW9lVnI2K1l0dDZibm45K0lVRWdBeWtBQUVMUDF0Tyswc2VyMlVKK0lFSjhRaCtKUW9lVnI2K1l0dDZibm45K0lVSWdBMEVnYWlJRElBWk5EUUFMSUFVZ1B6Y0RxT29CSUFVZ1FEY0RvT29CSUFVZ1FUY0RtT29CSUFVZ1FqY0RrT29CQ3lBQ0lBTk5EUUVnSWlBRElBSWdBMnNpQ0JBQ0dnc2dCU0FJTmdMUTZnRUxJRFVnRldzaEF5QVZJQnRxSVFJZ0NTQU9haUVPSUFRb0FqQkZEUUFMSUNrcEF3QWlQMEovVVNBL0lBNGdIV3VzVVhKRkJFQkJiQ0VKREFZTElBVW9BdURwQVFSQVFXb2hDU0FEUVFSSkRRWWdCU2dDNk9vQlJRUkFJQ0lnQlNnQzBPb0JhaUVLQW40Z0JTa0RpT29CSWo5Q0lGb0VRQ0FGS1FPWTZnRWlRRUlIaVNBRktRT1E2Z0VpUVVJQmlYd2dCU2tEb09vQklrSkNESWw4SUFVcEE2anFBU0pEUWhLSmZDQkJRcy9XMDc3U3g2dlpRbjVDSDRsQ2g1V3ZyNWkyM3B1ZWYzNkZRb2VWcjYrWXR0NmJubjkrUXAyanRlcURzWTJLK2dCOUlFQkN6OWJUdnRMSHE5bENma0lmaVVLSGxhK3ZtTGJlbTU1L2ZvVkNoNVd2cjVpMjNwdWVmMzVDbmFPMTZvT3hqWXI2QUgwZ1FrTFAxdE8rMHNlcjJVSitRaCtKUW9lVnI2K1l0dDZibm45K2hVS0hsYSt2bUxiZW01NS9ma0tkbzdYcWc3R05pdm9BZlNCRFFzL1cwNzdTeDZ2WlFuNUNINGxDaDVXdnI1aTIzcHVlZjM2RlFvZVZyNitZdHQ2Ym5uOStRcDJqdGVxRHNZMksrZ0I5REFFTElBVXBBNkRxQVVMRno5bXk4ZVc2NmlkOEN5QS9mQ0UvSUNJaEJnTkFJQW9nQmtFSWFpSUhUd1JBSUFZcEFBQkN6OWJUdnRMSHE5bENma0lmaVVLSGxhK3ZtTGJlbTU1L2ZpQS9oVUliaVVLSGxhK3ZtTGJlbTU1L2ZrS2RvN1hxZzdHTml2b0FmU0UvSUFjaEJnd0JDd3NDUUNBS0lBWkJCR29pQ0VrRVFDQUdJUWdNQVFzZ0JqVUFBRUtIbGErdm1MYmVtNTUvZmlBL2hVSVhpVUxQMXRPKzBzZXIyVUorUXZuejNmR1o5cG1yRm53aFB3c0RRQ0FJSUFwSkJFQWdDREVBQUVMRno5bXk4ZVc2NmlkK0lEK0ZRZ3VKUW9lVnI2K1l0dDZibm45K0lUOGdDRUVCYWlFSURBRUxDeUFDS0FBQUlEOUNJWWdnUDRWQ3o5YlR2dExIcTlsQ2ZpSS9RaDJJSUQrRlF2bnozZkdaOXBtckZuNGlQMElnaUNBL2hhZEhEUWNMSUFOQkJHc2hBeUFDUVFScUlRSUxJQTRnSFdzaUNVR0pmMDhOQkNBQklBbHJJUUVnQ1NBZGFpRWRRUUVoUGd3QkN3dEJ1SDhoQnlBRERRUWdIU0FBYXlFSERBUUxRV3doQ1F3QkMwRzRmeUVKQzBHNGZ5RUhJQWxCZGtZZ1BuRU5BUXNnQ1NFSEN5Z0NBQTBBSUFWQi9Pb0JhaWdDQUNFQklBVkIrT29CYWlnQ0FDRUFJQVVRR0NBRktBS3c2d0VnQUNBQkVCTWdCVUVBTmdLdzZ3RWdCU2dDcE9zQklnSUVRQUpBQWtBQ1FBSkFJQUlvQWdBaUF3UkFJQUJGRFFJZ0FTQURJQUFSQWdBTUFRc2dBRVVOQWdzZ0FTQUNJQUFSQWdBTUFnc2dBeEFHQ3lBQ0VBWUxJQVZCQURZQ3BPc0JDeUFBQkVBZ0FTQUZJQUFSQWdBTUFRc2dCUkFHQ3lBRVFlQUJhaVFBSUFjTEM2Z1ZDUUJCaUFnTERRRUFBQUFCQUFBQUFnQUFBQUlBUWFBSUM3TUdBUUFBQUFFQUFBQUNBQUFBQWdBQUFDWUFBQUNDQUFBQUlRVUFBRW9BQUFCbkNBQUFKZ0FBQU1BQkFBQ0FBQUFBU1FVQUFFb0FBQUMrQ0FBQUtRQUFBQ3dDQUFDQUFBQUFTUVVBQUVvQUFBQytDQUFBTHdBQUFNb0NBQUNBQUFBQWlnVUFBRW9BQUFDRUNRQUFOUUFBQUhNREFBQ0FBQUFBblFVQUFFb0FBQUNnQ1FBQVBRQUFBSUVEQUFDQUFBQUE2d1VBQUVzQUFBQStDZ0FBUkFBQUFKNERBQUNBQUFBQVRRWUFBRXNBQUFDcUNnQUFTd0FBQUxNREFBQ0FBQUFBd1FZQUFFMEFBQUFmRFFBQVRRQUFBRk1FQUFDQUFBQUFJd2dBQUZFQUFBQ21Ed0FBVkFBQUFKa0VBQUNBQUFBQVN3a0FBRmNBQUFDeEVnQUFXQUFBQU5vRUFBQ0FBQUFBYndrQUFGMEFBQUFqRkFBQVZBQUFBRVVGQUFDQUFBQUFWQW9BQUdvQUFBQ01GQUFBYWdBQUFLOEZBQUNBQUFBQWRna0FBSHdBQUFCT0VBQUFmQUFBQU5JQ0FBQ0FBQUFBWXdjQUFKRUFBQUNRQndBQWtnQUFBQUFBQUFBQkFBQUFBUUFBQUFVQUFBQU5BQUFBSFFBQUFEMEFBQUI5QUFBQS9RQUFBUDBCQUFEOUF3QUEvUWNBQVAwUEFBRDlId0FBL1Q4QUFQMS9BQUQ5L3dBQS9mOEJBUDMvQXdEOS93Y0EvZjhQQVAzL0h3RDkvejhBL2Y5L0FQMy8vd0Q5Ly84Qi9mLy9BLzMvL3dmOS8vOFAvZi8vSC8zLy96LzkvLzkvQUFBQUFBRUFBQUFDQUFBQUF3QUFBQVFBQUFBRkFBQUFCZ0FBQUFjQUFBQUlBQUFBQ1FBQUFBb0FBQUFMQUFBQURBQUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQVJBQUFBRWdBQUFCTUFBQUFVQUFBQUZRQUFBQllBQUFBWEFBQUFHQUFBQUJrQUFBQWFBQUFBR3dBQUFCd0FBQUFkQUFBQUhnQUFBQjhBQUFBREFBQUFCQUFBQUFVQUFBQUdBQUFBQndBQUFBZ0FBQUFKQUFBQUNnQUFBQXNBQUFBTUFBQUFEUUFBQUE0QUFBQVBBQUFBRUFBQUFCRUFBQUFTQUFBQUV3QUFBQlFBQUFBVkFBQUFGZ0FBQUJjQUFBQVlBQUFBR1FBQUFCb0FBQUFiQUFBQUhBQUFBQjBBQUFBZUFBQUFId0FBQUNBQUFBQWhBQUFBSWdBQUFDTUFBQUFsQUFBQUp3QUFBQ2tBQUFBckFBQUFMd0FBQURNQUFBQTdBQUFBUXdBQUFGTUFBQUJqQUFBQWd3QUFBQU1CQUFBREFnQUFBd1FBQUFNSUFBQURFQUFBQXlBQUFBTkFBQUFEZ0FBQUF3QUJBRUhnRHd0UkFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQXdBQUFBTUFBQUFFQUFBQUJBQUFBQVVBQUFBSEFBQUFDQUFBQUFrQUFBQUtBQUFBQ3dBQUFBd0FBQUFOQUFBQURnQUFBQThBQUFBUUFFSEVFQXVMQVFFQUFBQUNBQUFBQXdBQUFBUUFBQUFGQUFBQUJnQUFBQWNBQUFBSUFBQUFDUUFBQUFvQUFBQUxBQUFBREFBQUFBMEFBQUFPQUFBQUR3QUFBQkFBQUFBU0FBQUFGQUFBQUJZQUFBQVlBQUFBSEFBQUFDQUFBQUFvQUFBQU1BQUFBRUFBQUFDQUFBQUFBQUVBQUFBQ0FBQUFCQUFBQUFnQUFBQVFBQUFBSUFBQUFFQUFBQUNBQUFBQUFBRUFRWkFTQytZRUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQXdBQUFBTUFBQUFFQUFBQUJnQUFBQWNBQUFBSUFBQUFDUUFBQUFvQUFBQUxBQUFBREFBQUFBMEFBQUFPQUFBQUR3QUFBQkFBQUFBQkFBQUFCQUFBQUFnQUFBQUFBQUFBQVFBQkFRWUFBQUFBQUFBRUFBQUFBQkFBQUFRQUFBQUFJQUFBQlFFQUFBQUFBQUFGQXdBQUFBQUFBQVVFQUFBQUFBQUFCUVlBQUFBQUFBQUZCd0FBQUFBQUFBVUpBQUFBQUFBQUJRb0FBQUFBQUFBRkRBQUFBQUFBQUFZT0FBQUFBQUFCQlJBQUFBQUFBQUVGRkFBQUFBQUFBUVVXQUFBQUFBQUNCUndBQUFBQUFBTUZJQUFBQUFBQUJBVXdBQUFBSUFBR0JVQUFBQUFBQUFjRmdBQUFBQUFBQ0FZQUFRQUFBQUFLQmdBRUFBQUFBQXdHQUJBQUFDQUFBQVFBQUFBQUFBQUFCQUVBQUFBQUFBQUZBZ0FBQUNBQUFBVUVBQUFBQUFBQUJRVUFBQUFnQUFBRkJ3QUFBQUFBQUFVSUFBQUFJQUFBQlFvQUFBQUFBQUFGQ3dBQUFBQUFBQVlOQUFBQUlBQUJCUkFBQUFBQUFBRUZFZ0FBQUNBQUFRVVdBQUFBQUFBQ0JSZ0FBQUFnQUFNRklBQUFBQUFBQXdVb0FBQUFBQUFHQkVBQUFBQVFBQVlFUUFBQUFDQUFCd1dBQUFBQUFBQUpCZ0FDQUFBQUFBc0dBQWdBQURBQUFBUUFBQUFBRUFBQUJBRUFBQUFnQUFBRkFnQUFBQ0FBQUFVREFBQUFJQUFBQlFVQUFBQWdBQUFGQmdBQUFDQUFBQVVJQUFBQUlBQUFCUWtBQUFBZ0FBQUZDd0FBQUNBQUFBVU1BQUFBQUFBQUJnOEFBQUFnQUFFRkVnQUFBQ0FBQVFVVUFBQUFJQUFDQlJnQUFBQWdBQUlGSEFBQUFDQUFBd1VvQUFBQUlBQUVCVEFBQUFBQUFCQUdBQUFCQUFBQUR3WUFnQUFBQUFBT0JnQkFBQUFBQUEwR0FDQUFRWUFYQzRjQ0FRQUJBUVVBQUFBQUFBQUZBQUFBQUFBQUJnUTlBQUFBQUFBSkJmMEJBQUFBQUE4Ri9YOEFBQUFBRlFYOS94OEFBQUFEQlFVQUFBQUFBQWNFZlFBQUFBQUFEQVg5RHdBQUFBQVNCZjMvQXdBQUFCY0YvZjkvQUFBQUJRVWRBQUFBQUFBSUJQMEFBQUFBQUE0Ri9UOEFBQUFBRkFYOS93OEFBQUFDQlFFQUFBQVFBQWNFZlFBQUFBQUFDd1g5QndBQUFBQVJCZjMvQVFBQUFCWUYvZjgvQUFBQUJBVU5BQUFBRUFBSUJQMEFBQUFBQUEwRi9SOEFBQUFBRXdYOS93Y0FBQUFCQlFFQUFBQVFBQVlFUFFBQUFBQUFDZ1g5QXdBQUFBQVFCZjMvQUFBQUFCd0YvZi8vRHdBQUd3WDkvLzhIQUFBYUJmMy8vd01BQUJrRi9mLy9BUUFBR0FYOS8vOEFRWkFaQzRZRUFRQUJBUVlBQUFBQUFBQUdBd0FBQUFBQUFBUUVBQUFBSUFBQUJRVUFBQUFBQUFBRkJnQUFBQUFBQUFVSUFBQUFBQUFBQlFrQUFBQUFBQUFGQ3dBQUFBQUFBQVlOQUFBQUFBQUFCaEFBQUFBQUFBQUdFd0FBQUFBQUFBWVdBQUFBQUFBQUJoa0FBQUFBQUFBR0hBQUFBQUFBQUFZZkFBQUFBQUFBQmlJQUFBQUFBQUVHSlFBQUFBQUFBUVlwQUFBQUFBQUNCaThBQUFBQUFBTUdPd0FBQUFBQUJBWlRBQUFBQUFBSEJvTUFBQUFBQUFrR0F3SUFBQkFBQUFRRUFBQUFBQUFBQkFVQUFBQWdBQUFGQmdBQUFBQUFBQVVIQUFBQUlBQUFCUWtBQUFBQUFBQUZDZ0FBQUFBQUFBWU1BQUFBQUFBQUJnOEFBQUFBQUFBR0VnQUFBQUFBQUFZVkFBQUFBQUFBQmhnQUFBQUFBQUFHR3dBQUFBQUFBQVllQUFBQUFBQUFCaUVBQUFBQUFBRUdJd0FBQUFBQUFRWW5BQUFBQUFBQ0Jpc0FBQUFBQUFNR013QUFBQUFBQkFaREFBQUFBQUFGQm1NQUFBQUFBQWdHQXdFQUFDQUFBQVFFQUFBQU1BQUFCQVFBQUFBUUFBQUVCUUFBQUNBQUFBVUhBQUFBSUFBQUJRZ0FBQUFnQUFBRkNnQUFBQ0FBQUFVTEFBQUFBQUFBQmc0QUFBQUFBQUFHRVFBQUFBQUFBQVlVQUFBQUFBQUFCaGNBQUFBQUFBQUdHZ0FBQUFBQUFBWWRBQUFBQUFBQUJpQUFBQUFBQUJBR0F3QUJBQUFBRHdZRGdBQUFBQUFPQmdOQUFBQUFBQTBHQXlBQUFBQUFEQVlERUFBQUFBQUxCZ01JQUFBQUFBb0dBd1FBUWFRZEM5a0JBUUFBQUFNQUFBQUhBQUFBRHdBQUFCOEFBQUEvQUFBQWZ3QUFBUDhBQUFEL0FRQUEvd01BQVA4SEFBRC9Ed0FBL3g4QUFQOC9BQUQvZndBQS8vOEFBUC8vQVFELy93TUEvLzhIQVAvL0R3RC8veDhBLy84L0FQLy9md0QvLy84QS8vLy9BZi8vL3dQLy8vOEgvLy8vRC8vLy94Ly8vLzgvLy8vL2Z3QUFBQUFCQUFBQUFnQUFBQVFBQUFBQUFBQUFBZ0FBQUFRQUFBQUlBQUFBQUFBQUFBRUFBQUFDQUFBQUFRQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBZ0FBQUFIQUFBQUNBQUFBQWtBQUFBS0FBQUFDd0JCZ0I4TEE0QVJBUT09Ijt2YXIgT0k9bmV3IHlBLFRJPSExO2FzeW5jIGZ1bmN0aW9uIGNlKEEsSSx0KXtsZXQgZT1udWxsO3R5cGVvZiBBIT0ic3RyaW5nIj9lPUEuaHJlZjpBLnN0YXJ0c1dpdGgoImh0dHAiKT9lPUE6ZT1gJHtJfS8ke0F9YCxlLmVuZHNXaXRoKCIuanMiKSYmKGU9ZS5zdWJzdHJpbmcoMCxlLmxlbmd0aC0zKSksZS5lbmRzV2l0aCgiLndhc20iKSYmKGU9ZS5zdWJzdHJpbmcoMCxlLmxlbmd0aC01KSk7bGV0IGc9YCR7ZX0ud2FzbWAscj1hd2FpdCBkQS5nZXQoYCR7Z30uenN0YCx7cmVzcG9uc2VUeXBlOiJhcnJheWJ1ZmZlciIscGFyYW1zOnR9KTtUSXx8KGF3YWl0IE9JLmluaXQoKSxUST0hMCk7bGV0IHM9T0kuZGVjb2RlKG5ldyBVaW50OEFycmF5KHIuZGF0YSkpLmJ1ZmZlcjtyZXR1cm4oYXdhaXQgaW1wb3J0KGAke2V9LmpzYCkpLmRlZmF1bHQoe3dhc21CaW5hcnk6c30pfXZhciB4ST1jZTt2YXIgd0E9bmV3IE1hcDthc3luYyBmdW5jdGlvbiBmZShBLEksdCl7bGV0IGU9QSxnPUEscj1udWxsO3JldHVybiB0eXBlb2YgQSE9InN0cmluZyImJihlPW5ldyBVUkwoQS5ocmVmKSxnPWUuaHJlZiksd0EuaGFzKGcpP3I9YXdhaXQgd0EuZ2V0KGcpOih3QS5zZXQoZyx4SShlLEksdCkpLHI9YXdhaXQgd0EuZ2V0KGcpKSxyfXZhciBQST1mZTt2YXIgbGU9e1RleHRGaWxlOiJUZXh0RmlsZSIsQmluYXJ5RmlsZToiQmluYXJ5RmlsZSIsVGV4dFN0cmVhbToiVGV4dFN0cmVhbSIsQmluYXJ5U3RyZWFtOiJCaW5hcnlTdHJlYW0iLEltYWdlOiJJbWFnZSIsTWVzaDoiTWVzaCIsUG9seURhdGE6IlBvbHlEYXRhIixKc29uQ29tcGF0aWJsZToiSnNvbkNvbXBhdGlibGUifSxEPWxlO3ZhciBEZT17SW50ODoiaW50OCIsVUludDg6InVpbnQ4IixJbnQxNjoiaW50MTYiLFVJbnQxNjoidWludDE2IixJbnQzMjoiaW50MzIiLFVJbnQzMjoidWludDMyIixJbnQ2NDoiaW50NjQiLFVJbnQ2NDoidWludDY0IixTaXplVmFsdWVUeXBlOiJ1aW50NjQiLElkZW50aWZpZXJUeXBlOiJ1aW50NjQiLEluZGV4VmFsdWVUeXBlOiJpbnQ2NCIsT2Zmc2V0VmFsdWVUeXBlOiJpbnQ2NCJ9LHA9RGU7dmFyIHVlPXtGbG9hdDMyOiJmbG9hdDMyIixGbG9hdDY0OiJmbG9hdDY0IixTcGFjZVByZWNpc2lvblR5cGU6ImZsb2F0NjQifSxQPXVlO2Z1bmN0aW9uIGhlKEEsSSl7bGV0IHQ9bnVsbDtzd2l0Y2goQSl7Y2FzZSBwLlVJbnQ4Ont0PW5ldyBVaW50OEFycmF5KEkpO2JyZWFrfWNhc2UgcC5JbnQ4Ont0PW5ldyBJbnQ4QXJyYXkoSSk7YnJlYWt9Y2FzZSBwLlVJbnQxNjp7dD1uZXcgVWludDE2QXJyYXkoSSk7YnJlYWt9Y2FzZSBwLkludDE2Ont0PW5ldyBJbnQxNkFycmF5KEkpO2JyZWFrfWNhc2UgcC5VSW50MzI6e3Q9bmV3IFVpbnQzMkFycmF5KEkpO2JyZWFrfWNhc2UgcC5JbnQzMjp7dD1uZXcgSW50MzJBcnJheShJKTticmVha31jYXNlIHAuVUludDY0Ont0eXBlb2YgZ2xvYmFsVGhpcy5CaWdVaW50NjRBcnJheT09ImZ1bmN0aW9uIj90PW5ldyBCaWdVaW50NjRBcnJheShJKTp0PW5ldyBVaW50OEFycmF5KEkpO2JyZWFrfWNhc2UgcC5JbnQ2NDp7dHlwZW9mIGdsb2JhbFRoaXMuQmlnSW50NjRBcnJheT09ImZ1bmN0aW9uIj90PW5ldyBCaWdJbnQ2NEFycmF5KEkpOnQ9bmV3IFVpbnQ4QXJyYXkoSSk7YnJlYWt9Y2FzZSBQLkZsb2F0MzI6e3Q9bmV3IEZsb2F0MzJBcnJheShJKTticmVha31jYXNlIFAuRmxvYXQ2NDp7dD1uZXcgRmxvYXQ2NEFycmF5KEkpO2JyZWFrfWNhc2UibnVsbCI6e3Q9bnVsbDticmVha31jYXNlIG51bGw6e3Q9bnVsbDticmVha31kZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVHlwZSBpcyBub3Qgc3VwcG9ydGVkIGFzIGEgVHlwZWRBcnJheSIpfXJldHVybiB0fXZhciBZPWhlO3ZhciBaST10eXBlb2YgZ2xvYmFsVGhpcy5TaGFyZWRBcnJheUJ1ZmZlcj09ImZ1bmN0aW9uIixqST1uZXcgVGV4dEVuY29kZXIsV0k9bmV3IFRleHREZWNvZGVyKCJ1dGYtOCIpO2Z1bmN0aW9uIGRlKEEsSSl7bGV0IHQ9e2ZsYWdzOiJyIixlbmNvZGluZzoiYmluYXJ5In0sZT1BLmZzX29wZW4oSSx0LmZsYWdzKSxyPUEuZnNfc3RhdChJKS5zaXplLGk9bnVsbDtaST9pPW5ldyBTaGFyZWRBcnJheUJ1ZmZlcihyKTppPW5ldyBBcnJheUJ1ZmZlcihyKTtsZXQgcz1uZXcgVWludDhBcnJheShpKTtyZXR1cm4gQS5mc19yZWFkKGUscywwLHIsMCksQS5mc19jbG9zZShlKSxzfWZ1bmN0aW9uIFZJKEEsSSx0KXtsZXQgZT1udWxsO1pJP2U9bmV3IFNoYXJlZEFycmF5QnVmZmVyKHQpOmU9bmV3IEFycmF5QnVmZmVyKHQpO2xldCBnPW5ldyBVaW50OEFycmF5KGUpLHI9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLEksdCk7cmV0dXJuIGcuc2V0KHIpLGd9ZnVuY3Rpb24geShBLEksdCxlKXtsZXQgZz0wO3JldHVybiBJIT09bnVsbCYmKGc9QS5jY2FsbCgiaXRrX3dhc21faW5wdXRfYXJyYXlfYWxsb2MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsdCxlLEkuYnVmZmVyLmJ5dGVMZW5ndGhdKSxBLkhFQVBVOC5zZXQobmV3IFVpbnQ4QXJyYXkoSS5idWZmZXIpLGcpKSxnfWZ1bmN0aW9uIGooQSxJLHQpe2xldCBlPUpTT04uc3RyaW5naWZ5KEkpLGc9QS5jY2FsbCgiaXRrX3dhc21faW5wdXRfanNvbl9hbGxvYyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCx0LGUubGVuZ3RoXSk7QS53cml0ZUFzY2lpVG9NZW1vcnkoZSxnLCExKX1mdW5jdGlvbiBTKEEsSSx0LGUpe2xldCBnPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEksdF0pLHI9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsSSx0XSksaT1WSShBLGcscik7cmV0dXJuIFkoZSxpLmJ1ZmZlcil9ZnVuY3Rpb24gekEoQSxJKXtsZXQgdD1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfanNvbl9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciJdLFswLEldKSxlPUEuQXNjaWlUb1N0cmluZyh0KTtyZXR1cm4gSlNPTi5wYXJzZShlKX1mdW5jdGlvbiB5ZShBLEksdCxlKXtlIT1udWxsJiZlLmxlbmd0aD4wJiZlLmZvckVhY2goZnVuY3Rpb24obixDKXtzd2l0Y2gobi50eXBlKXtjYXNlIEQuVGV4dFN0cmVhbTp7bGV0IG89akkuZW5jb2RlKG4uZGF0YS5kYXRhKSxmPXkoQSxvLEMsMCksUT17c2l6ZTpvLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWB9O2ooQSxRLEMpO2JyZWFrfWNhc2UgRC5Kc29uQ29tcGF0aWJsZTp7bGV0IG89akkuZW5jb2RlKEpTT04uc3RyaW5naWZ5KG4uZGF0YSkpLGY9eShBLG8sQywwKSxRPXtzaXplOm8uYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YH07aihBLFEsQyk7YnJlYWt9Y2FzZSBELkJpbmFyeVN0cmVhbTp7bGV0IG89bi5kYXRhLmRhdGEsZj15KEEsbyxDLDApLFE9e3NpemU6by5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gfTtqKEEsUSxDKTticmVha31jYXNlIEQuVGV4dEZpbGU6e0EuZnNfd3JpdGVGaWxlKG4uZGF0YS5wYXRoLG4uZGF0YS5kYXRhKTticmVha31jYXNlIEQuQmluYXJ5RmlsZTp7QS5mc193cml0ZUZpbGUobi5kYXRhLnBhdGgsbi5kYXRhLmRhdGEpO2JyZWFrfWNhc2UgRC5JbWFnZTp7bGV0IG89bi5kYXRhLGY9eShBLG8uZGF0YSxDLDApLFE9eShBLG8uZGlyZWN0aW9uLEMsMSksRT10eXBlb2Ygby5tZXRhZGF0YT8uZW50cmllczwidSI/SlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbShvLm1ldGFkYXRhLmVudHJpZXMoKSkpOiJbXSIsYz17aW1hZ2VUeXBlOm8uaW1hZ2VUeXBlLG5hbWU6by5uYW1lLG9yaWdpbjpvLm9yaWdpbixzcGFjaW5nOm8uc3BhY2luZyxkaXJlY3Rpb246YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWAsc2l6ZTpvLnNpemUsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YCxtZXRhZGF0YTpFfTtqKEEsYyxDKTticmVha31jYXNlIEQuTWVzaDp7bGV0IG89bi5kYXRhLGY9eShBLG8ucG9pbnRzLEMsMCksUT15KEEsby5jZWxscyxDLDEpLEU9eShBLG8ucG9pbnREYXRhLEMsMiksYz15KEEsby5jZWxsRGF0YSxDLDMpLHU9e21lc2hUeXBlOm8ubWVzaFR5cGUsbmFtZTpvLm5hbWUsbnVtYmVyT2ZQb2ludHM6by5udW1iZXJPZlBvaW50cyxwb2ludHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWAsbnVtYmVyT2ZDZWxsczpvLm51bWJlck9mQ2VsbHMsY2VsbHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWAsY2VsbEJ1ZmZlclNpemU6by5jZWxsQnVmZmVyU2l6ZSxudW1iZXJPZlBvaW50UGl4ZWxzOm8ubnVtYmVyT2ZQb2ludFBpeGVscyxwb2ludERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtFfWAsbnVtYmVyT2ZDZWxsUGl4ZWxzOm8ubnVtYmVyT2ZDZWxsUGl4ZWxzLGNlbGxEYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gfTtqKEEsdSxDKTticmVha31jYXNlIEQuUG9seURhdGE6e2xldCBvPW4uZGF0YSxmPXkoQSxvLnBvaW50cyxDLDApLFE9eShBLG8udmVydGljZXMsQywxKSxFPXkoQSxvLmxpbmVzLEMsMiksYz15KEEsby5wb2x5Z29ucyxDLDMpLHU9eShBLG8udHJpYW5nbGVTdHJpcHMsQyw0KSxkPXkoQSxvLnBvaW50RGF0YSxDLDUpLFI9eShBLG8ucG9pbnREYXRhLEMsNiksTj17cG9seURhdGFUeXBlOm8ucG9seURhdGFUeXBlLG5hbWU6by5uYW1lLG51bWJlck9mUG9pbnRzOm8ubnVtYmVyT2ZQb2ludHMscG9pbnRzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gLHZlcnRpY2VzQnVmZmVyU2l6ZTpvLnZlcnRpY2VzQnVmZmVyU2l6ZSx2ZXJ0aWNlczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1F9YCxsaW5lc0J1ZmZlclNpemU6by5saW5lc0J1ZmZlclNpemUsbGluZXM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtFfWAscG9seWdvbnNCdWZmZXJTaXplOm8ucG9seWdvbnNCdWZmZXJTaXplLHBvbHlnb25zOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gLHRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZTpvLnRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZSx0cmlhbmdsZVN0cmlwczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke3V9YCxudW1iZXJPZlBvaW50UGl4ZWxzOm8ubnVtYmVyT2ZQb2ludFBpeGVscyxwb2ludERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtkfWAsbnVtYmVyT2ZDZWxsUGl4ZWxzOm8ubnVtYmVyT2ZDZWxsUGl4ZWxzLGNlbGxEYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Un1gfTtqKEEsTixDKTticmVha31kZWZhdWx0OnRocm93IEVycm9yKCJVbnN1cHBvcnRlZCBpbnB1dCBJbnRlcmZhY2VUeXBlIil9fSksQS5yZXNldE1vZHVsZVN0ZG91dCgpLEEucmVzZXRNb2R1bGVTdGRlcnIoKTtsZXQgZz1BLnN0YWNrU2F2ZSgpLHI9MDt0cnl7cj1BLmNhbGxNYWluKEkuc2xpY2UoKSl9Y2F0Y2gobil7dGhyb3cgdHlwZW9mIG49PSJudW1iZXIiJiYoY29uc29sZS5sb2coIkV4Y2VwdGlvbiB3aGlsZSBydW5uaW5nIHBpcGVsaW5lOiIpLGNvbnNvbGUubG9nKCJzdGRvdXQ6IixBLmdldE1vZHVsZVN0ZG91dCgpKSxjb25zb2xlLmVycm9yKCJzdGRlcnI6IixBLmdldE1vZHVsZVN0ZGVycigpKSx0eXBlb2YgQS5nZXRFeGNlcHRpb25NZXNzYWdlPCJ1Ij9jb25zb2xlLmVycm9yKCJleGNlcHRpb246IixBLmdldEV4Y2VwdGlvbk1lc3NhZ2UobikpOmNvbnNvbGUuZXJyb3IoIkJ1aWxkIG1vZHVsZSBpbiBEZWJ1ZyBtb2RlIGZvciBleGNlcHRpb24gbWVzc2FnZSBpbmZvcm1hdGlvbi4iKSksbn1maW5hbGx5e0Euc3RhY2tSZXN0b3JlKGcpfWxldCBpPUEuZ2V0TW9kdWxlU3Rkb3V0KCkscz1BLmdldE1vZHVsZVN0ZGVycigpLGE9W107cmV0dXJuIHQhPW51bGwmJnQubGVuZ3RoPjAmJnI9PT0wJiZ0LmZvckVhY2goZnVuY3Rpb24obixDKXtsZXQgbz1udWxsO3N3aXRjaChuLnR5cGUpe2Nhc2UgRC5UZXh0U3RyZWFtOntsZXQgUT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxDLDBdKSxFPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEMsMF0pLGM9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLFEsRSk7bz17ZGF0YTpXSS5kZWNvZGUoYyl9O2JyZWFrfWNhc2UgRC5Kc29uQ29tcGF0aWJsZTp7bGV0IFE9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQywwXSksRT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxDLDBdKSxjPW5ldyBVaW50OEFycmF5KEEuSEVBUFU4LmJ1ZmZlcixRLEUpO289SlNPTi5wYXJzZShXSS5kZWNvZGUoYykpO2JyZWFrfWNhc2UgRC5CaW5hcnlTdHJlYW06e2xldCBRPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEMsMF0pLEU9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQywwXSk7bz17ZGF0YTpWSShBLFEsRSl9O2JyZWFrfWNhc2UgRC5UZXh0RmlsZTp7bz17cGF0aDpuLmRhdGEucGF0aCxkYXRhOkEuZnNfcmVhZEZpbGUobi5kYXRhLnBhdGgse2VuY29kaW5nOiJ1dGY4In0pfTticmVha31jYXNlIEQuQmluYXJ5RmlsZTp7bz17cGF0aDpuLmRhdGEucGF0aCxkYXRhOmRlKEEsbi5kYXRhLnBhdGgpfTticmVha31jYXNlIEQuSW1hZ2U6e2xldCBRPXpBKEEsQyk7US5kYXRhPVMoQSxDLDAsUS5pbWFnZVR5cGUuY29tcG9uZW50VHlwZSksUS5kaXJlY3Rpb249UyhBLEMsMSxQLkZsb2F0NjQpLFEubWV0YWRhdGE9bmV3IE1hcChRLm1ldGFkYXRhKSxvPVE7YnJlYWt9Y2FzZSBELk1lc2g6e2xldCBRPXpBKEEsQyk7US5udW1iZXJPZlBvaW50cz4wP1EucG9pbnRzPVMoQSxDLDAsUS5tZXNoVHlwZS5wb2ludENvbXBvbmVudFR5cGUpOlEucG9pbnRzPVkoUS5tZXNoVHlwZS5wb2ludENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxRLm51bWJlck9mQ2VsbHM+MD9RLmNlbGxzPVMoQSxDLDEsUS5tZXNoVHlwZS5jZWxsQ29tcG9uZW50VHlwZSk6US5jZWxscz1ZKFEubWVzaFR5cGUuY2VsbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxRLm51bWJlck9mUG9pbnRQaXhlbHM+MD9RLnBvaW50RGF0YT1TKEEsQywyLFEubWVzaFR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUpOlEucG9pbnREYXRhPVkoUS5tZXNoVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLFEubnVtYmVyT2ZDZWxsUGl4ZWxzPjA/US5jZWxsRGF0YT1TKEEsQywzLFEubWVzaFR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSk6US5jZWxsRGF0YT1ZKFEubWVzaFR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLG89UTticmVha31jYXNlIEQuUG9seURhdGE6e2xldCBRPXpBKEEsQyk7US5udW1iZXJPZlBvaW50cz4wP1EucG9pbnRzPVMoQSxDLDAsUC5GbG9hdDMyKTpRLnBvaW50cz1uZXcgRmxvYXQzMkFycmF5LFEudmVydGljZXNCdWZmZXJTaXplPjA/US52ZXJ0aWNlcz1TKEEsQywxLHAuVUludDMyKTpRLnZlcnRpY2VzPW5ldyBVaW50MzJBcnJheSxRLmxpbmVzQnVmZmVyU2l6ZT4wP1EubGluZXM9UyhBLEMsMixwLlVJbnQzMik6US5saW5lcz1uZXcgVWludDMyQXJyYXksUS5wb2x5Z29uc0J1ZmZlclNpemU+MD9RLnBvbHlnb25zPVMoQSxDLDMscC5VSW50MzIpOlEucG9seWdvbnM9bmV3IFVpbnQzMkFycmF5LFEudHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplPjA/US50cmlhbmdsZVN0cmlwcz1TKEEsQyw0LHAuVUludDMyKTpRLnRyaWFuZ2xlU3RyaXBzPW5ldyBVaW50MzJBcnJheSxRLm51bWJlck9mUG9pbnRQaXhlbHM+MD9RLnBvaW50RGF0YT1TKEEsQyw1LFEucG9seURhdGFUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlKTpRLnBvaW50RGF0YT1ZKFEucG9seURhdGFUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksUS5udW1iZXJPZkNlbGxQaXhlbHM+MD9RLmNlbGxEYXRhPVMoQSxDLDYsUS5wb2x5RGF0YVR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSk6US5jZWxsRGF0YT1ZKFEucG9seURhdGFUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxvPVE7YnJlYWt9ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5zdXBwb3J0ZWQgb3V0cHV0IEludGVyZmFjZVR5cGUiKX1sZXQgZj17dHlwZTpuLnR5cGUsZGF0YTpvfTthLnB1c2goZil9KSx7cmV0dXJuVmFsdWU6cixzdGRvdXQ6aSxzdGRlcnI6cyxvdXRwdXRzOmF9fXZhciBYST15ZTt2YXIgd2U9dHlwZW9mIGdsb2JhbFRoaXMuU2hhcmVkQXJyYXlCdWZmZXI8InUiO2Z1bmN0aW9uIG1lKEEsSSl7aWYoQT09bnVsbClyZXR1cm5bXTtsZXQgdD1bXTtmb3IobGV0IGU9MDtlPEEubGVuZ3RoO2UrKyl7bGV0IGc9cGUoQVtlXSxJKTtnIT09bnVsbCYmdC5wdXNoKGcpfXJldHVybiB0fWZ1bmN0aW9uIHBlKEEsSSl7aWYoQT09bnVsbClyZXR1cm4gbnVsbDtsZXQgdD1udWxsO3JldHVybiBBLmJ1ZmZlciE9PXZvaWQgMD90PUEuYnVmZmVyOkEuYnl0ZUxlbmd0aCE9PXZvaWQgMCYmKHQ9QSksd2UmJnQgaW5zdGFuY2VvZiBTaGFyZWRBcnJheUJ1ZmZlcj9udWxsOkk/dDp0LnNsaWNlKDApfXZhciB6ST1tZTtmdW5jdGlvbiBTZShBKXtyZXR1cm5bQS5kYXRhLEEuZGlyZWN0aW9uXX12YXIgX0k9U2U7ZnVuY3Rpb24gRmUoQSl7cmV0dXJuW0EucG9pbnRzLEEucG9pbnREYXRhLEEuY2VsbHMsQS5jZWxsRGF0YV19dmFyIHZJPUZlO2Z1bmN0aW9uIFJlKEEpe3JldHVybltBLnBvaW50cyxBLnZlcnRpY2VzLEEubGluZXMsQS5wb2x5Z29ucyxBLnRyaWFuZ2xlU3RyaXBzLEEucG9pbnREYXRhLEEuY2VsbERhdGFdfXZhciAkST1SZTthc3luYyBmdW5jdGlvbiBOZShBLEksdCxlKXtsZXQgZz1YSShBLEksdCxlKSxyPVtdO3JldHVybiBnLm91dHB1dHMuZm9yRWFjaChmdW5jdGlvbihpKXtpZihpLnR5cGU9PT1ELkJpbmFyeVN0cmVhbXx8aS50eXBlPT09RC5CaW5hcnlGaWxlKXtsZXQgcz1pLmRhdGE7ci5wdXNoKHMpfWVsc2UgaWYoaS50eXBlPT09RC5JbWFnZSl7bGV0IHM9aS5kYXRhO3IucHVzaCguLi5fSShzKSl9ZWxzZSBpZihpLnR5cGU9PT1ELk1lc2gpe2xldCBzPWkuZGF0YTtyLnB1c2goLi4udkkocykpfWVsc2UgaWYoaS50eXBlPT09RC5Qb2x5RGF0YSl7bGV0IHM9aS5kYXRhO3IucHVzaCguLi4kSShzKSl9fSksU0EoZyx6SShyLCEwKSl9dmFyIEF0PU5lO3ZhciBVZT17cnVuUGlwZWxpbmU6YXN5bmMgZnVuY3Rpb24oQSxJLHQsZSxnLHIpe2xldCBpPWF3YWl0IFBJKEEsSSxyKTtyZXR1cm4gYXdhaXQgQXQoaSx0LGUsZyl9fTtvQShVZSk7JTBBLyohIEJ1bmRsZWQgbGljZW5zZSBpbmZvcm1hdGlvbjolMEElMEFjb21saW5rL2Rpc3QvZXNtL2NvbWxpbmsubWpzOiUwQSAgKCoqJTBBICAgKiBAbGljZW5zZSUwQSAgICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIExMQyUwQSAgICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAlMEEgICAqKSUwQSovJTBBJztDdChFdCk7ZXhwb3J0e1hyIGFzIGNvbXByZXNzU3RyaW5naWZ5LEZBIGFzIGdldERlZmF1bHRXZWJXb3JrZXIsaiBhcyBnZXRQaXBlbGluZVdvcmtlclVybCxTQSBhcyBnZXRQaXBlbGluZXNCYXNlVXJsLEFpIGFzIHBhcnNlU3RyaW5nRGVjb21wcmVzcyxyYSBhcyBzZXREZWZhdWx0V2ViV29ya2VyLEN0IGFzIHNldFBpcGVsaW5lV29ya2VyVXJsLFZzIGFzIHNldFBpcGVsaW5lc0Jhc2VVcmwsUkEgYXMgdmVyc2lvbn07Ci8qISBCdW5kbGVkIGxpY2Vuc2UgaW5mb3JtYXRpb246Cgpjb21saW5rL2Rpc3QvZXNtL2NvbWxpbmsubWpzOgogICgqKgogICAqIEBsaWNlbnNlCiAgICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIExMQwogICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wCiAgICopCiovCg==""" +default_js_module = """data:text/javascript;base64,dmFyIGx0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgY3Q9KEEsZSk9Pntmb3IodmFyIHQgaW4gZSlsdChBLHQse2dldDplW3RdLGVudW1lcmFibGU6ITB9KX07dmFyIHV0PSIzLjAuMSIsUkE9dXQ7dmFyIGZ0PXtJbnQ4OiJpbnQ4IixVSW50ODoidWludDgiLEludDE2OiJpbnQxNiIsVUludDE2OiJ1aW50MTYiLEludDMyOiJpbnQzMiIsVUludDMyOiJ1aW50MzIiLEludDY0OiJpbnQ2NCIsVUludDY0OiJ1aW50NjQiLFNpemVWYWx1ZVR5cGU6InVpbnQ2NCIsSWRlbnRpZmllclR5cGU6InVpbnQ2NCIsSW5kZXhWYWx1ZVR5cGU6ImludDY0IixPZmZzZXRWYWx1ZVR5cGU6ImludDY0In0sRD1mdDt2YXIgcHQ9e0Zsb2F0MzI6ImZsb2F0MzIiLEZsb2F0NjQ6ImZsb2F0NjQiLFNwYWNlUHJlY2lzaW9uVHlwZToiZmxvYXQ2NCJ9LEo9cHQ7ZnVuY3Rpb24gZHQoQSxlKXtsZXQgdD1udWxsO3N3aXRjaChBKXtjYXNlIEQuVUludDg6e3Q9bmV3IFVpbnQ4QXJyYXkoZSk7YnJlYWt9Y2FzZSBELkludDg6e3Q9bmV3IEludDhBcnJheShlKTticmVha31jYXNlIEQuVUludDE2Ont0PW5ldyBVaW50MTZBcnJheShlKTticmVha31jYXNlIEQuSW50MTY6e3Q9bmV3IEludDE2QXJyYXkoZSk7YnJlYWt9Y2FzZSBELlVJbnQzMjp7dD1uZXcgVWludDMyQXJyYXkoZSk7YnJlYWt9Y2FzZSBELkludDMyOnt0PW5ldyBJbnQzMkFycmF5KGUpO2JyZWFrfWNhc2UgRC5VSW50NjQ6e3R5cGVvZiBnbG9iYWxUaGlzLkJpZ1VpbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ1VpbnQ2NEFycmF5KGUpOnQ9bmV3IFVpbnQ4QXJyYXkoZSk7YnJlYWt9Y2FzZSBELkludDY0Ont0eXBlb2YgZ2xvYmFsVGhpcy5CaWdJbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ0ludDY0QXJyYXkoZSk6dD1uZXcgVWludDhBcnJheShlKTticmVha31jYXNlIEouRmxvYXQzMjp7dD1uZXcgRmxvYXQzMkFycmF5KGUpO2JyZWFrfWNhc2UgSi5GbG9hdDY0Ont0PW5ldyBGbG9hdDY0QXJyYXkoZSk7YnJlYWt9Y2FzZSJudWxsIjp7dD1udWxsO2JyZWFrfWNhc2UgbnVsbDp7dD1udWxsO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlIGlzIG5vdCBzdXBwb3J0ZWQgYXMgYSBUeXBlZEFycmF5Iil9cmV0dXJuIHR9dmFyIE49ZHQ7dmFyIGh0PXtUZXh0RmlsZToiVGV4dEZpbGUiLEJpbmFyeUZpbGU6IkJpbmFyeUZpbGUiLFRleHRTdHJlYW06IlRleHRTdHJlYW0iLEJpbmFyeVN0cmVhbToiQmluYXJ5U3RyZWFtIixJbWFnZToiSW1hZ2UiLE1lc2g6Ik1lc2giLFBvbHlEYXRhOiJQb2x5RGF0YSIsSnNvbkNvbXBhdGlibGU6Ikpzb25Db21wYXRpYmxlIn0scD1odDt2YXIgb2U9U3ltYm9sKCJDb21saW5rLnByb3h5IiksbXQ9U3ltYm9sKCJDb21saW5rLmVuZHBvaW50IiksVUE9U3ltYm9sKCJDb21saW5rLnJlbGVhc2VQcm94eSIpLGJBPVN5bWJvbCgiQ29tbGluay5maW5hbGl6ZXIiKSxvQT1TeW1ib2woIkNvbWxpbmsudGhyb3duIiksc2U9QT0+dHlwZW9mIEE9PSJvYmplY3QiJiZBIT09bnVsbHx8dHlwZW9mIEE9PSJmdW5jdGlvbiIseXQ9e2NhbkhhbmRsZTpBPT5zZShBKSYmQVtvZV0sc2VyaWFsaXplKEEpe2xldHtwb3J0MTplLHBvcnQyOnR9PW5ldyBNZXNzYWdlQ2hhbm5lbDtyZXR1cm4gSWUoQSxlKSxbdCxbdF1dfSxkZXNlcmlhbGl6ZShBKXtyZXR1cm4gQS5zdGFydCgpLE5BKEEpfX0sd3Q9e2NhbkhhbmRsZTpBPT5zZShBKSYmb0EgaW4gQSxzZXJpYWxpemUoe3ZhbHVlOkF9KXtsZXQgZTtyZXR1cm4gQSBpbnN0YW5jZW9mIEVycm9yP2U9e2lzRXJyb3I6ITAsdmFsdWU6e21lc3NhZ2U6QS5tZXNzYWdlLG5hbWU6QS5uYW1lLHN0YWNrOkEuc3RhY2t9fTplPXtpc0Vycm9yOiExLHZhbHVlOkF9LFtlLFtdXX0sZGVzZXJpYWxpemUoQSl7dGhyb3cgQS5pc0Vycm9yP09iamVjdC5hc3NpZ24obmV3IEVycm9yKEEudmFsdWUubWVzc2FnZSksQS52YWx1ZSk6QS52YWx1ZX19LGFlPW5ldyBNYXAoW1sicHJveHkiLHl0XSxbInRocm93Iix3dF1dKTtmdW5jdGlvbiBEdChBLGUpe2ZvcihsZXQgdCBvZiBBKWlmKGU9PT10fHx0PT09IioifHx0IGluc3RhbmNlb2YgUmVnRXhwJiZ0LnRlc3QoZSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gSWUoQSxlPWdsb2JhbFRoaXMsdD1bIioiXSl7ZS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiByKGkpe2lmKCFpfHwhaS5kYXRhKXJldHVybjtpZighRHQodCxpLm9yaWdpbikpe2NvbnNvbGUud2FybihgSW52YWxpZCBvcmlnaW4gJyR7aS5vcmlnaW59JyBmb3IgY29tbGluayBwcm94eWApO3JldHVybn1sZXR7aWQ6bix0eXBlOm8scGF0aDpnfT1PYmplY3QuYXNzaWduKHtwYXRoOltdfSxpLmRhdGEpLEU9KGkuZGF0YS5hcmd1bWVudExpc3R8fFtdKS5tYXAoVCksQjt0cnl7bGV0IEk9Zy5zbGljZSgwLC0xKS5yZWR1Y2UoKGMsQyk9PmNbQ10sQSkscz1nLnJlZHVjZSgoYyxDKT0+Y1tDXSxBKTtzd2l0Y2gobyl7Y2FzZSJHRVQiOkI9czticmVhaztjYXNlIlNFVCI6SVtnLnNsaWNlKC0xKVswXV09VChpLmRhdGEudmFsdWUpLEI9ITA7YnJlYWs7Y2FzZSJBUFBMWSI6Qj1zLmFwcGx5KEksRSk7YnJlYWs7Y2FzZSJDT05TVFJVQ1QiOntsZXQgYz1uZXcgcyguLi5FKTtCPWt0KGMpfWJyZWFrO2Nhc2UiRU5EUE9JTlQiOntsZXR7cG9ydDE6Yyxwb3J0MjpDfT1uZXcgTWVzc2FnZUNoYW5uZWw7SWUoQSxDKSxCPUdBKGMsW2NdKX1icmVhaztjYXNlIlJFTEVBU0UiOkI9dm9pZCAwO2JyZWFrO2RlZmF1bHQ6cmV0dXJufX1jYXRjaChJKXtCPXt2YWx1ZTpJLFtvQV06MH19UHJvbWlzZS5yZXNvbHZlKEIpLmNhdGNoKEk9Pih7dmFsdWU6SSxbb0FdOjB9KSkudGhlbihJPT57bGV0W3MsY109SUEoSSk7ZS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scykse2lkOm59KSxjKSxvPT09IlJFTEVBU0UiJiYoZS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixyKSxnZShlKSxiQSBpbiBBJiZ0eXBlb2YgQVtiQV09PSJmdW5jdGlvbiImJkFbYkFdKCkpfSkuY2F0Y2goST0+e2xldFtzLGNdPUlBKHt2YWx1ZTpuZXcgVHlwZUVycm9yKCJVbnNlcmlhbGl6YWJsZSByZXR1cm4gdmFsdWUiKSxbb0FdOjB9KTtlLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxzKSx7aWQ6bn0pLGMpfSl9KSxlLnN0YXJ0JiZlLnN0YXJ0KCl9ZnVuY3Rpb24gU3QoQSl7cmV0dXJuIEEuY29uc3RydWN0b3IubmFtZT09PSJNZXNzYWdlUG9ydCJ9ZnVuY3Rpb24gZ2UoQSl7U3QoQSkmJkEuY2xvc2UoKX1mdW5jdGlvbiBOQShBLGUpe3JldHVybiBrQShBLFtdLGUpfWZ1bmN0aW9uIG5BKEEpe2lmKEEpdGhyb3cgbmV3IEVycm9yKCJQcm94eSBoYXMgYmVlbiByZWxlYXNlZCBhbmQgaXMgbm90IHVzZWFibGUiKX1mdW5jdGlvbiBDZShBKXtyZXR1cm4geChBLHt0eXBlOiJSRUxFQVNFIn0pLnRoZW4oKCk9PntnZShBKX0pfXZhciBzQT1uZXcgV2Vha01hcCxhQT0iRmluYWxpemF0aW9uUmVnaXN0cnkiaW4gZ2xvYmFsVGhpcyYmbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KEE9PntsZXQgZT0oc0EuZ2V0KEEpfHwwKS0xO3NBLnNldChBLGUpLGU9PT0wJiZDZShBKX0pO2Z1bmN0aW9uIEZ0KEEsZSl7bGV0IHQ9KHNBLmdldChlKXx8MCkrMTtzQS5zZXQoZSx0KSxhQSYmYUEucmVnaXN0ZXIoQSxlLEEpfWZ1bmN0aW9uIFJ0KEEpe2FBJiZhQS51bnJlZ2lzdGVyKEEpfWZ1bmN0aW9uIGtBKEEsZT1bXSx0PWZ1bmN0aW9uKCl7fSl7bGV0IHI9ITEsaT1uZXcgUHJveHkodCx7Z2V0KG4sbyl7aWYobkEociksbz09PVVBKXJldHVybigpPT57UnQoaSksQ2UoQSkscj0hMH07aWYobz09PSJ0aGVuIil7aWYoZS5sZW5ndGg9PT0wKXJldHVybnt0aGVuOigpPT5pfTtsZXQgZz14KEEse3R5cGU6IkdFVCIscGF0aDplLm1hcChFPT5FLnRvU3RyaW5nKCkpfSkudGhlbihUKTtyZXR1cm4gZy50aGVuLmJpbmQoZyl9cmV0dXJuIGtBKEEsWy4uLmUsb10pfSxzZXQobixvLGcpe25BKHIpO2xldFtFLEJdPUlBKGcpO3JldHVybiB4KEEse3R5cGU6IlNFVCIscGF0aDpbLi4uZSxvXS5tYXAoST0+SS50b1N0cmluZygpKSx2YWx1ZTpFfSxCKS50aGVuKFQpfSxhcHBseShuLG8sZyl7bkEocik7bGV0IEU9ZVtlLmxlbmd0aC0xXTtpZihFPT09bXQpcmV0dXJuIHgoQSx7dHlwZToiRU5EUE9JTlQifSkudGhlbihUKTtpZihFPT09ImJpbmQiKXJldHVybiBrQShBLGUuc2xpY2UoMCwtMSkpO2xldFtCLEldPW5lKGcpO3JldHVybiB4KEEse3R5cGU6IkFQUExZIixwYXRoOmUubWFwKHM9PnMudG9TdHJpbmcoKSksYXJndW1lbnRMaXN0OkJ9LEkpLnRoZW4oVCl9LGNvbnN0cnVjdChuLG8pe25BKHIpO2xldFtnLEVdPW5lKG8pO3JldHVybiB4KEEse3R5cGU6IkNPTlNUUlVDVCIscGF0aDplLm1hcChCPT5CLnRvU3RyaW5nKCkpLGFyZ3VtZW50TGlzdDpnfSxFKS50aGVuKFQpfX0pO3JldHVybiBGdChpLEEpLGl9ZnVuY3Rpb24gYnQoQSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sQSl9ZnVuY3Rpb24gbmUoQSl7bGV0IGU9QS5tYXAoSUEpO3JldHVybltlLm1hcCh0PT50WzBdKSxidChlLm1hcCh0PT50WzFdKSldfXZhciBCZT1uZXcgV2Vha01hcDtmdW5jdGlvbiBHQShBLGUpe3JldHVybiBCZS5zZXQoQSxlKSxBfWZ1bmN0aW9uIGt0KEEpe3JldHVybiBPYmplY3QuYXNzaWduKEEse1tvZV06ITB9KX1mdW5jdGlvbiBJQShBKXtmb3IobGV0W2UsdF1vZiBhZSlpZih0LmNhbkhhbmRsZShBKSl7bGV0W3IsaV09dC5zZXJpYWxpemUoQSk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmUsdmFsdWU6cn0saV19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOkF9LEJlLmdldChBKXx8W11dfWZ1bmN0aW9uIFQoQSl7c3dpdGNoKEEudHlwZSl7Y2FzZSJIQU5ETEVSIjpyZXR1cm4gYWUuZ2V0KEEubmFtZSkuZGVzZXJpYWxpemUoQS52YWx1ZSk7Y2FzZSJSQVciOnJldHVybiBBLnZhbHVlfX1mdW5jdGlvbiB4KEEsZSx0KXtyZXR1cm4gbmV3IFByb21pc2Uocj0+e2xldCBpPVV0KCk7QS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiBuKG8peyFvLmRhdGF8fCFvLmRhdGEuaWR8fG8uZGF0YS5pZCE9PWl8fChBLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLG4pLHIoby5kYXRhKSl9KSxBLnN0YXJ0JiZBLnN0YXJ0KCksQS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKHtpZDppfSxlKSx0KX0pfWZ1bmN0aW9uIFV0KCl7cmV0dXJuIG5ldyBBcnJheSg0KS5maWxsKDApLm1hcCgoKT0+TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKk51bWJlci5NQVhfU0FGRV9JTlRFR0VSKS50b1N0cmluZygxNikpLmpvaW4oIi0iKX1mdW5jdGlvbiBfKEEsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEEuYXBwbHkoZSxhcmd1bWVudHMpfX12YXJ7dG9TdHJpbmc6TnR9PU9iamVjdC5wcm90b3R5cGUse2dldFByb3RvdHlwZU9mOlRBfT1PYmplY3QsQ0E9KEE9PmU9PntsZXQgdD1OdC5jYWxsKGUpO3JldHVybiBBW3RdfHwoQVt0XT10LnNsaWNlKDgsLTEpLnRvTG93ZXJDYXNlKCkpfSkoT2JqZWN0LmNyZWF0ZShudWxsKSksaz1BPT4oQT1BLnRvTG93ZXJDYXNlKCksZT0+Q0EoZSk9PT1BKSxCQT1BPT5lPT50eXBlb2YgZT09PUEse2lzQXJyYXk6UH09QXJyYXksej1CQSgidW5kZWZpbmVkIik7ZnVuY3Rpb24gR3QoQSl7cmV0dXJuIEEhPT1udWxsJiYheihBKSYmQS5jb25zdHJ1Y3RvciE9PW51bGwmJiF6KEEuY29uc3RydWN0b3IpJiZGKEEuY29uc3RydWN0b3IuaXNCdWZmZXIpJiZBLmNvbnN0cnVjdG9yLmlzQnVmZmVyKEEpfXZhciBjZT1rKCJBcnJheUJ1ZmZlciIpO2Z1bmN0aW9uIEx0KEEpe2xldCBlO3JldHVybiB0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZBcnJheUJ1ZmZlci5pc1ZpZXc/ZT1BcnJheUJ1ZmZlci5pc1ZpZXcoQSk6ZT1BJiZBLmJ1ZmZlciYmY2UoQS5idWZmZXIpLGV9dmFyIE90PUJBKCJzdHJpbmciKSxGPUJBKCJmdW5jdGlvbiIpLHVlPUJBKCJudW1iZXIiKSxFQT1BPT5BIT09bnVsbCYmdHlwZW9mIEE9PSJvYmplY3QiLFR0PUE9PkE9PT0hMHx8QT09PSExLGdBPUE9PntpZihDQShBKSE9PSJvYmplY3QiKXJldHVybiExO2xldCBlPVRBKEEpO3JldHVybihlPT09bnVsbHx8ZT09PU9iamVjdC5wcm90b3R5cGV8fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PW51bGwpJiYhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBBKSYmIShTeW1ib2wuaXRlcmF0b3IgaW4gQSl9LEp0PWsoIkRhdGUiKSx4dD1rKCJGaWxlIiksUHQ9aygiQmxvYiIpLEh0PWsoIkZpbGVMaXN0IiksTXQ9QT0+RUEoQSkmJkYoQS5waXBlKSxZdD1BPT57bGV0IGU7cmV0dXJuIEEmJih0eXBlb2YgRm9ybURhdGE9PSJmdW5jdGlvbiImJkEgaW5zdGFuY2VvZiBGb3JtRGF0YXx8RihBLmFwcGVuZCkmJigoZT1DQShBKSk9PT0iZm9ybWRhdGEifHxlPT09Im9iamVjdCImJkYoQS50b1N0cmluZykmJkEudG9TdHJpbmcoKT09PSJbb2JqZWN0IEZvcm1EYXRhXSIpKX0scXQ9aygiVVJMU2VhcmNoUGFyYW1zIiksS3Q9QT0+QS50cmltP0EudHJpbSgpOkEucmVwbGFjZSgvXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csIiIpO2Z1bmN0aW9uIFYoQSxlLHthbGxPd25LZXlzOnQ9ITF9PXt9KXtpZihBPT09bnVsbHx8dHlwZW9mIEE+InUiKXJldHVybjtsZXQgcixpO2lmKHR5cGVvZiBBIT0ib2JqZWN0IiYmKEE9W0FdKSxQKEEpKWZvcihyPTAsaT1BLmxlbmd0aDtyPGk7cisrKWUuY2FsbChudWxsLEFbcl0scixBKTtlbHNle2xldCBuPXQ/T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoQSk6T2JqZWN0LmtleXMoQSksbz1uLmxlbmd0aCxnO2ZvcihyPTA7cjxvO3IrKylnPW5bcl0sZS5jYWxsKG51bGwsQVtnXSxnLEEpfX1mdW5jdGlvbiBmZShBLGUpe2U9ZS50b0xvd2VyQ2FzZSgpO2xldCB0PU9iamVjdC5rZXlzKEEpLHI9dC5sZW5ndGgsaTtmb3IoO3ItLSA+MDspaWYoaT10W3JdLGU9PT1pLnRvTG93ZXJDYXNlKCkpcmV0dXJuIGk7cmV0dXJuIG51bGx9dmFyIHBlPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzpnbG9iYWwsZGU9QT0+IXooQSkmJkEhPT1wZTtmdW5jdGlvbiBPQSgpe2xldHtjYXNlbGVzczpBfT1kZSh0aGlzKSYmdGhpc3x8e30sZT17fSx0PShyLGkpPT57bGV0IG49QSYmZmUoZSxpKXx8aTtnQShlW25dKSYmZ0Eocik/ZVtuXT1PQShlW25dLHIpOmdBKHIpP2Vbbl09T0Eoe30scik6UChyKT9lW25dPXIuc2xpY2UoKTplW25dPXJ9O2ZvcihsZXQgcj0wLGk9YXJndW1lbnRzLmxlbmd0aDtyPGk7cisrKWFyZ3VtZW50c1tyXSYmVihhcmd1bWVudHNbcl0sdCk7cmV0dXJuIGV9dmFyIFd0PShBLGUsdCx7YWxsT3duS2V5czpyfT17fSk9PihWKGUsKGksbik9Pnt0JiZGKGkpP0Fbbl09XyhpLHQpOkFbbl09aX0se2FsbE93bktleXM6cn0pLEEpLGp0PUE9PihBLmNoYXJDb2RlQXQoMCk9PT02NTI3OSYmKEE9QS5zbGljZSgxKSksQSksdnQ9KEEsZSx0LHIpPT57QS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSxyKSxBLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1BLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJzdXBlciIse3ZhbHVlOmUucHJvdG90eXBlfSksdCYmT2JqZWN0LmFzc2lnbihBLnByb3RvdHlwZSx0KX0sX3Q9KEEsZSx0LHIpPT57bGV0IGksbixvLGc9e307aWYoZT1lfHx7fSxBPT1udWxsKXJldHVybiBlO2Rve2ZvcihpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEEpLG49aS5sZW5ndGg7bi0tID4wOylvPWlbbl0sKCFyfHxyKG8sQSxlKSkmJiFnW29dJiYoZVtvXT1BW29dLGdbb109ITApO0E9dCE9PSExJiZUQShBKX13aGlsZShBJiYoIXR8fHQoQSxlKSkmJkEhPT1PYmplY3QucHJvdG90eXBlKTtyZXR1cm4gZX0senQ9KEEsZSx0KT0+e0E9U3RyaW5nKEEpLCh0PT09dm9pZCAwfHx0PkEubGVuZ3RoKSYmKHQ9QS5sZW5ndGgpLHQtPWUubGVuZ3RoO2xldCByPUEuaW5kZXhPZihlLHQpO3JldHVybiByIT09LTEmJnI9PT10fSxWdD1BPT57aWYoIUEpcmV0dXJuIG51bGw7aWYoUChBKSlyZXR1cm4gQTtsZXQgZT1BLmxlbmd0aDtpZighdWUoZSkpcmV0dXJuIG51bGw7bGV0IHQ9bmV3IEFycmF5KGUpO2Zvcig7ZS0tID4wOyl0W2VdPUFbZV07cmV0dXJuIHR9LFp0PShBPT5lPT5BJiZlIGluc3RhbmNlb2YgQSkodHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZUQShVaW50OEFycmF5KSksWHQ9KEEsZSk9PntsZXQgcj0oQSYmQVtTeW1ib2wuaXRlcmF0b3JdKS5jYWxsKEEpLGk7Zm9yKDsoaT1yLm5leHQoKSkmJiFpLmRvbmU7KXtsZXQgbj1pLnZhbHVlO2UuY2FsbChBLG5bMF0sblsxXSl9fSwkdD0oQSxlKT0+e2xldCB0LHI9W107Zm9yKDsodD1BLmV4ZWMoZSkpIT09bnVsbDspci5wdXNoKHQpO3JldHVybiByfSxBcj1rKCJIVE1MRm9ybUVsZW1lbnQiKSxlcj1BPT5BLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWy1fXHNdKFthLXpcZF0pKFx3KikvZyxmdW5jdGlvbih0LHIsaSl7cmV0dXJuIHIudG9VcHBlckNhc2UoKStpfSksUWU9KCh7aGFzT3duUHJvcGVydHk6QX0pPT4oZSx0KT0+QS5jYWxsKGUsdCkpKE9iamVjdC5wcm90b3R5cGUpLHRyPWsoIlJlZ0V4cCIpLGhlPShBLGUpPT57bGV0IHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoQSkscj17fTtWKHQsKGksbik9PntsZXQgbzsobz1lKGksbixBKSkhPT0hMSYmKHJbbl09b3x8aSl9KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhBLHIpfSxycj1BPT57aGUoQSwoZSx0KT0+e2lmKEYoQSkmJlsiYXJndW1lbnRzIiwiY2FsbGVyIiwiY2FsbGVlIl0uaW5kZXhPZih0KSE9PS0xKXJldHVybiExO2xldCByPUFbdF07aWYoRihyKSl7aWYoZS5lbnVtZXJhYmxlPSExLCJ3cml0YWJsZSJpbiBlKXtlLndyaXRhYmxlPSExO3JldHVybn1lLnNldHx8KGUuc2V0PSgpPT57dGhyb3cgRXJyb3IoIkNhbiBub3QgcmV3cml0ZSByZWFkLW9ubHkgbWV0aG9kICciK3QrIiciKX0pfX0pfSxpcj0oQSxlKT0+e2xldCB0PXt9LHI9aT0+e2kuZm9yRWFjaChuPT57dFtuXT0hMH0pfTtyZXR1cm4gUChBKT9yKEEpOnIoU3RyaW5nKEEpLnNwbGl0KGUpKSx0fSxucj0oKT0+e30sb3I9KEEsZSk9PihBPStBLE51bWJlci5pc0Zpbml0ZShBKT9BOmUpLExBPSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsbGU9IjAxMjM0NTY3ODkiLG1lPXtESUdJVDpsZSxBTFBIQTpMQSxBTFBIQV9ESUdJVDpMQStMQS50b1VwcGVyQ2FzZSgpK2xlfSxzcj0oQT0xNixlPW1lLkFMUEhBX0RJR0lUKT0+e2xldCB0PSIiLHtsZW5ndGg6cn09ZTtmb3IoO0EtLTspdCs9ZVtNYXRoLnJhbmRvbSgpKnJ8MF07cmV0dXJuIHR9O2Z1bmN0aW9uIGFyKEEpe3JldHVybiEhKEEmJkYoQS5hcHBlbmQpJiZBW1N5bWJvbC50b1N0cmluZ1RhZ109PT0iRm9ybURhdGEiJiZBW1N5bWJvbC5pdGVyYXRvcl0pfXZhciBJcj1BPT57bGV0IGU9bmV3IEFycmF5KDEwKSx0PShyLGkpPT57aWYoRUEocikpe2lmKGUuaW5kZXhPZihyKT49MClyZXR1cm47aWYoISgidG9KU09OImluIHIpKXtlW2ldPXI7bGV0IG49UChyKT9bXTp7fTtyZXR1cm4gVihyLChvLGcpPT57bGV0IEU9dChvLGkrMSk7IXooRSkmJihuW2ddPUUpfSksZVtpXT12b2lkIDAsbn19cmV0dXJuIHJ9O3JldHVybiB0KEEsMCl9LGdyPWsoIkFzeW5jRnVuY3Rpb24iKSxDcj1BPT5BJiYoRUEoQSl8fEYoQSkpJiZGKEEudGhlbikmJkYoQS5jYXRjaCksYT17aXNBcnJheTpQLGlzQXJyYXlCdWZmZXI6Y2UsaXNCdWZmZXI6R3QsaXNGb3JtRGF0YTpZdCxpc0FycmF5QnVmZmVyVmlldzpMdCxpc1N0cmluZzpPdCxpc051bWJlcjp1ZSxpc0Jvb2xlYW46VHQsaXNPYmplY3Q6RUEsaXNQbGFpbk9iamVjdDpnQSxpc1VuZGVmaW5lZDp6LGlzRGF0ZTpKdCxpc0ZpbGU6eHQsaXNCbG9iOlB0LGlzUmVnRXhwOnRyLGlzRnVuY3Rpb246Rixpc1N0cmVhbTpNdCxpc1VSTFNlYXJjaFBhcmFtczpxdCxpc1R5cGVkQXJyYXk6WnQsaXNGaWxlTGlzdDpIdCxmb3JFYWNoOlYsbWVyZ2U6T0EsZXh0ZW5kOld0LHRyaW06S3Qsc3RyaXBCT006anQsaW5oZXJpdHM6dnQsdG9GbGF0T2JqZWN0Ol90LGtpbmRPZjpDQSxraW5kT2ZUZXN0OmssZW5kc1dpdGg6enQsdG9BcnJheTpWdCxmb3JFYWNoRW50cnk6WHQsbWF0Y2hBbGw6JHQsaXNIVE1MRm9ybTpBcixoYXNPd25Qcm9wZXJ0eTpRZSxoYXNPd25Qcm9wOlFlLHJlZHVjZURlc2NyaXB0b3JzOmhlLGZyZWV6ZU1ldGhvZHM6cnIsdG9PYmplY3RTZXQ6aXIsdG9DYW1lbENhc2U6ZXIsbm9vcDpucix0b0Zpbml0ZU51bWJlcjpvcixmaW5kS2V5OmZlLGdsb2JhbDpwZSxpc0NvbnRleHREZWZpbmVkOmRlLEFMUEhBQkVUOm1lLGdlbmVyYXRlU3RyaW5nOnNyLGlzU3BlY0NvbXBsaWFudEZvcm06YXIsdG9KU09OT2JqZWN0OklyLGlzQXN5bmNGbjpncixpc1RoZW5hYmxlOkNyfTtmdW5jdGlvbiBIKEEsZSx0LHIsaSl7RXJyb3IuY2FsbCh0aGlzKSxFcnJvci5jYXB0dXJlU3RhY2tUcmFjZT9FcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLHRoaXMuY29uc3RydWN0b3IpOnRoaXMuc3RhY2s9bmV3IEVycm9yKCkuc3RhY2ssdGhpcy5tZXNzYWdlPUEsdGhpcy5uYW1lPSJBeGlvc0Vycm9yIixlJiYodGhpcy5jb2RlPWUpLHQmJih0aGlzLmNvbmZpZz10KSxyJiYodGhpcy5yZXF1ZXN0PXIpLGkmJih0aGlzLnJlc3BvbnNlPWkpfWEuaW5oZXJpdHMoSCxFcnJvcix7dG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOmEudG9KU09OT2JqZWN0KHRoaXMuY29uZmlnKSxjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5yZXNwb25zZSYmdGhpcy5yZXNwb25zZS5zdGF0dXM/dGhpcy5yZXNwb25zZS5zdGF0dXM6bnVsbH19fSk7dmFyIHllPUgucHJvdG90eXBlLHdlPXt9O1siRVJSX0JBRF9PUFRJT05fVkFMVUUiLCJFUlJfQkFEX09QVElPTiIsIkVDT05OQUJPUlRFRCIsIkVUSU1FRE9VVCIsIkVSUl9ORVRXT1JLIiwiRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUyIsIkVSUl9ERVBSRUNBVEVEIiwiRVJSX0JBRF9SRVNQT05TRSIsIkVSUl9CQURfUkVRVUVTVCIsIkVSUl9DQU5DRUxFRCIsIkVSUl9OT1RfU1VQUE9SVCIsIkVSUl9JTlZBTElEX1VSTCJdLmZvckVhY2goQT0+e3dlW0FdPXt2YWx1ZTpBfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEgsd2UpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh5ZSwiaXNBeGlvc0Vycm9yIix7dmFsdWU6ITB9KTtILmZyb209KEEsZSx0LHIsaSxuKT0+e2xldCBvPU9iamVjdC5jcmVhdGUoeWUpO3JldHVybiBhLnRvRmxhdE9iamVjdChBLG8sZnVuY3Rpb24oRSl7cmV0dXJuIEUhPT1FcnJvci5wcm90b3R5cGV9LGc9PmchPT0iaXNBeGlvc0Vycm9yIiksSC5jYWxsKG8sQS5tZXNzYWdlLGUsdCxyLGkpLG8uY2F1c2U9QSxvLm5hbWU9QS5uYW1lLG4mJk9iamVjdC5hc3NpZ24obyxuKSxvfTt2YXIgZj1IO3ZhciBRQT1udWxsO2Z1bmN0aW9uIEpBKEEpe3JldHVybiBhLmlzUGxhaW5PYmplY3QoQSl8fGEuaXNBcnJheShBKX1mdW5jdGlvbiBTZShBKXtyZXR1cm4gYS5lbmRzV2l0aChBLCJbXSIpP0Euc2xpY2UoMCwtMik6QX1mdW5jdGlvbiBEZShBLGUsdCl7cmV0dXJuIEE/QS5jb25jYXQoZSkubWFwKGZ1bmN0aW9uKGksbil7cmV0dXJuIGk9U2UoaSksIXQmJm4/IlsiK2krIl0iOml9KS5qb2luKHQ/Ii4iOiIiKTplfWZ1bmN0aW9uIEJyKEEpe3JldHVybiBhLmlzQXJyYXkoQSkmJiFBLnNvbWUoSkEpfXZhciBFcj1hLnRvRmxhdE9iamVjdChhLHt9LG51bGwsZnVuY3Rpb24oZSl7cmV0dXJuL15pc1tBLVpdLy50ZXN0KGUpfSk7ZnVuY3Rpb24gUXIoQSxlLHQpe2lmKCFhLmlzT2JqZWN0KEEpKXRocm93IG5ldyBUeXBlRXJyb3IoInRhcmdldCBtdXN0IGJlIGFuIG9iamVjdCIpO2U9ZXx8bmV3KFFBfHxGb3JtRGF0YSksdD1hLnRvRmxhdE9iamVjdCh0LHttZXRhVG9rZW5zOiEwLGRvdHM6ITEsaW5kZXhlczohMX0sITEsZnVuY3Rpb24oUSx1KXtyZXR1cm4hYS5pc1VuZGVmaW5lZCh1W1FdKX0pO2xldCByPXQubWV0YVRva2VucyxpPXQudmlzaXRvcnx8SSxuPXQuZG90cyxvPXQuaW5kZXhlcyxFPSh0LkJsb2J8fHR5cGVvZiBCbG9iPCJ1IiYmQmxvYikmJmEuaXNTcGVjQ29tcGxpYW50Rm9ybShlKTtpZighYS5pc0Z1bmN0aW9uKGkpKXRocm93IG5ldyBUeXBlRXJyb3IoInZpc2l0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uIik7ZnVuY3Rpb24gQihsKXtpZihsPT09bnVsbClyZXR1cm4iIjtpZihhLmlzRGF0ZShsKSlyZXR1cm4gbC50b0lTT1N0cmluZygpO2lmKCFFJiZhLmlzQmxvYihsKSl0aHJvdyBuZXcgZigiQmxvYiBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgYSBCdWZmZXIgaW5zdGVhZC4iKTtyZXR1cm4gYS5pc0FycmF5QnVmZmVyKGwpfHxhLmlzVHlwZWRBcnJheShsKT9FJiZ0eXBlb2YgQmxvYj09ImZ1bmN0aW9uIj9uZXcgQmxvYihbbF0pOkJ1ZmZlci5mcm9tKGwpOmx9ZnVuY3Rpb24gSShsLFEsdSl7bGV0IGQ9bDtpZihsJiYhdSYmdHlwZW9mIGw9PSJvYmplY3QiKXtpZihhLmVuZHNXaXRoKFEsInt9IikpUT1yP1E6US5zbGljZSgwLC0yKSxsPUpTT04uc3RyaW5naWZ5KGwpO2Vsc2UgaWYoYS5pc0FycmF5KGwpJiZCcihsKXx8KGEuaXNGaWxlTGlzdChsKXx8YS5lbmRzV2l0aChRLCJbXSIpKSYmKGQ9YS50b0FycmF5KGwpKSlyZXR1cm4gUT1TZShRKSxkLmZvckVhY2goZnVuY3Rpb24oYixRdCl7IShhLmlzVW5kZWZpbmVkKGIpfHxiPT09bnVsbCkmJmUuYXBwZW5kKG89PT0hMD9EZShbUV0sUXQsbik6bz09PW51bGw/UTpRKyJbXSIsQihiKSl9KSwhMX1yZXR1cm4gSkEobCk/ITA6KGUuYXBwZW5kKERlKHUsUSxuKSxCKGwpKSwhMSl9bGV0IHM9W10sYz1PYmplY3QuYXNzaWduKEVyLHtkZWZhdWx0VmlzaXRvcjpJLGNvbnZlcnRWYWx1ZTpCLGlzVmlzaXRhYmxlOkpBfSk7ZnVuY3Rpb24gQyhsLFEpe2lmKCFhLmlzVW5kZWZpbmVkKGwpKXtpZihzLmluZGV4T2YobCkhPT0tMSl0aHJvdyBFcnJvcigiQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGluICIrUS5qb2luKCIuIikpO3MucHVzaChsKSxhLmZvckVhY2gobCxmdW5jdGlvbihkLFIpeyghKGEuaXNVbmRlZmluZWQoZCl8fGQ9PT1udWxsKSYmaS5jYWxsKGUsZCxhLmlzU3RyaW5nKFIpP1IudHJpbSgpOlIsUSxjKSk9PT0hMCYmQyhkLFE/US5jb25jYXQoUik6W1JdKX0pLHMucG9wKCl9fWlmKCFhLmlzT2JqZWN0KEEpKXRocm93IG5ldyBUeXBlRXJyb3IoImRhdGEgbXVzdCBiZSBhbiBvYmplY3QiKTtyZXR1cm4gQyhBKSxlfXZhciBHPVFyO2Z1bmN0aW9uIEZlKEEpe2xldCBlPXsiISI6IiUyMSIsIiciOiIlMjciLCIoIjoiJTI4IiwiKSI6IiUyOSIsIn4iOiIlN0UiLCIlMjAiOiIrIiwiJTAwIjoiXDAifTtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEEpLnJlcGxhY2UoL1shJygpfl18JTIwfCUwMC9nLGZ1bmN0aW9uKHIpe3JldHVybiBlW3JdfSl9ZnVuY3Rpb24gUmUoQSxlKXt0aGlzLl9wYWlycz1bXSxBJiZHKEEsdGhpcyxlKX12YXIgYmU9UmUucHJvdG90eXBlO2JlLmFwcGVuZD1mdW5jdGlvbihlLHQpe3RoaXMuX3BhaXJzLnB1c2goW2UsdF0pfTtiZS50b1N0cmluZz1mdW5jdGlvbihlKXtsZXQgdD1lP2Z1bmN0aW9uKHIpe3JldHVybiBlLmNhbGwodGhpcyxyLEZlKX06RmU7cmV0dXJuIHRoaXMuX3BhaXJzLm1hcChmdW5jdGlvbihpKXtyZXR1cm4gdChpWzBdKSsiPSIrdChpWzFdKX0sIiIpLmpvaW4oIiYiKX07dmFyIGxBPVJlO2Z1bmN0aW9uIGxyKEEpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoQSkucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2csIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjAvZywiKyIpLnJlcGxhY2UoLyU1Qi9naSwiWyIpLnJlcGxhY2UoLyU1RC9naSwiXSIpfWZ1bmN0aW9uIFooQSxlLHQpe2lmKCFlKXJldHVybiBBO2xldCByPXQmJnQuZW5jb2RlfHxscixpPXQmJnQuc2VyaWFsaXplLG47aWYoaT9uPWkoZSx0KTpuPWEuaXNVUkxTZWFyY2hQYXJhbXMoZSk/ZS50b1N0cmluZygpOm5ldyBsQShlLHQpLnRvU3RyaW5nKHIpLG4pe2xldCBvPUEuaW5kZXhPZigiIyIpO28hPT0tMSYmKEE9QS5zbGljZSgwLG8pKSxBKz0oQS5pbmRleE9mKCI/Iik9PT0tMT8iPyI6IiYiKStufXJldHVybiBBfXZhciB4QT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuaGFuZGxlcnM9W119dXNlKGUsdCxyKXtyZXR1cm4gdGhpcy5oYW5kbGVycy5wdXNoKHtmdWxmaWxsZWQ6ZSxyZWplY3RlZDp0LHN5bmNocm9ub3VzOnI/ci5zeW5jaHJvbm91czohMSxydW5XaGVuOnI/ci5ydW5XaGVuOm51bGx9KSx0aGlzLmhhbmRsZXJzLmxlbmd0aC0xfWVqZWN0KGUpe3RoaXMuaGFuZGxlcnNbZV0mJih0aGlzLmhhbmRsZXJzW2VdPW51bGwpfWNsZWFyKCl7dGhpcy5oYW5kbGVycyYmKHRoaXMuaGFuZGxlcnM9W10pfWZvckVhY2goZSl7YS5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsZnVuY3Rpb24ocil7ciE9PW51bGwmJmUocil9KX19LFBBPXhBO3ZhciBjQT17c2lsZW50SlNPTlBhcnNpbmc6ITAsZm9yY2VkSlNPTlBhcnNpbmc6ITAsY2xhcmlmeVRpbWVvdXRFcnJvcjohMX07dmFyIGtlPXR5cGVvZiBVUkxTZWFyY2hQYXJhbXM8InUiP1VSTFNlYXJjaFBhcmFtczpsQTt2YXIgVWU9dHlwZW9mIEZvcm1EYXRhPCJ1Ij9Gb3JtRGF0YTpudWxsO3ZhciBOZT10eXBlb2YgQmxvYjwidSI/QmxvYjpudWxsO3ZhciBHZT17aXNCcm93c2VyOiEwLGNsYXNzZXM6e1VSTFNlYXJjaFBhcmFtczprZSxGb3JtRGF0YTpVZSxCbG9iOk5lfSxwcm90b2NvbHM6WyJodHRwIiwiaHR0cHMiLCJmaWxlIiwiYmxvYiIsInVybCIsImRhdGEiXX07dmFyIEhBPXt9O2N0KEhBLHtoYXNCcm93c2VyRW52OigpPT5MZSxoYXNTdGFuZGFyZEJyb3dzZXJFbnY6KCk9PmNyLGhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudjooKT0+dXJ9KTt2YXIgTGU9dHlwZW9mIHdpbmRvdzwidSImJnR5cGVvZiBkb2N1bWVudDwidSIsY3I9KEE9PkxlJiZbIlJlYWN0TmF0aXZlIiwiTmF0aXZlU2NyaXB0IiwiTlMiXS5pbmRleE9mKEEpPDApKHR5cGVvZiBuYXZpZ2F0b3I8InUiJiZuYXZpZ2F0b3IucHJvZHVjdCksdXI9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlPCJ1IiYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZ0eXBlb2Ygc2VsZi5pbXBvcnRTY3JpcHRzPT0iZnVuY3Rpb24iO3ZhciB5PXsuLi5IQSwuLi5HZX07ZnVuY3Rpb24gTUEoQSxlKXtyZXR1cm4gRyhBLG5ldyB5LmNsYXNzZXMuVVJMU2VhcmNoUGFyYW1zLE9iamVjdC5hc3NpZ24oe3Zpc2l0b3I6ZnVuY3Rpb24odCxyLGksbil7cmV0dXJuIHkuaXNOb2RlJiZhLmlzQnVmZmVyKHQpPyh0aGlzLmFwcGVuZChyLHQudG9TdHJpbmcoImJhc2U2NCIpKSwhMSk6bi5kZWZhdWx0VmlzaXRvci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSxlKSl9ZnVuY3Rpb24gZnIoQSl7cmV0dXJuIGEubWF0Y2hBbGwoL1x3K3xcWyhcdyopXS9nLEEpLm1hcChlPT5lWzBdPT09IltdIj8iIjplWzFdfHxlWzBdKX1mdW5jdGlvbiBwcihBKXtsZXQgZT17fSx0PU9iamVjdC5rZXlzKEEpLHIsaT10Lmxlbmd0aCxuO2ZvcihyPTA7cjxpO3IrKyluPXRbcl0sZVtuXT1BW25dO3JldHVybiBlfWZ1bmN0aW9uIGRyKEEpe2Z1bmN0aW9uIGUodCxyLGksbil7bGV0IG89dFtuKytdLGc9TnVtYmVyLmlzRmluaXRlKCtvKSxFPW4+PXQubGVuZ3RoO3JldHVybiBvPSFvJiZhLmlzQXJyYXkoaSk/aS5sZW5ndGg6byxFPyhhLmhhc093blByb3AoaSxvKT9pW29dPVtpW29dLHJdOmlbb109ciwhZyk6KCghaVtvXXx8IWEuaXNPYmplY3QoaVtvXSkpJiYoaVtvXT1bXSksZSh0LHIsaVtvXSxuKSYmYS5pc0FycmF5KGlbb10pJiYoaVtvXT1wcihpW29dKSksIWcpfWlmKGEuaXNGb3JtRGF0YShBKSYmYS5pc0Z1bmN0aW9uKEEuZW50cmllcykpe2xldCB0PXt9O3JldHVybiBhLmZvckVhY2hFbnRyeShBLChyLGkpPT57ZShmcihyKSxpLHQsMCl9KSx0fXJldHVybiBudWxsfXZhciB1QT1kcjtmdW5jdGlvbiBocihBLGUsdCl7aWYoYS5pc1N0cmluZyhBKSl0cnl7cmV0dXJuKGV8fEpTT04ucGFyc2UpKEEpLGEudHJpbShBKX1jYXRjaChyKXtpZihyLm5hbWUhPT0iU3ludGF4RXJyb3IiKXRocm93IHJ9cmV0dXJuKHR8fEpTT04uc3RyaW5naWZ5KShBKX12YXIgWUE9e3RyYW5zaXRpb25hbDpjQSxhZGFwdGVyOlsieGhyIiwiaHR0cCJdLHRyYW5zZm9ybVJlcXVlc3Q6W2Z1bmN0aW9uKGUsdCl7bGV0IHI9dC5nZXRDb250ZW50VHlwZSgpfHwiIixpPXIuaW5kZXhPZigiYXBwbGljYXRpb24vanNvbiIpPi0xLG49YS5pc09iamVjdChlKTtpZihuJiZhLmlzSFRNTEZvcm0oZSkmJihlPW5ldyBGb3JtRGF0YShlKSksYS5pc0Zvcm1EYXRhKGUpKXJldHVybiBpJiZpP0pTT04uc3RyaW5naWZ5KHVBKGUpKTplO2lmKGEuaXNBcnJheUJ1ZmZlcihlKXx8YS5pc0J1ZmZlcihlKXx8YS5pc1N0cmVhbShlKXx8YS5pc0ZpbGUoZSl8fGEuaXNCbG9iKGUpKXJldHVybiBlO2lmKGEuaXNBcnJheUJ1ZmZlclZpZXcoZSkpcmV0dXJuIGUuYnVmZmVyO2lmKGEuaXNVUkxTZWFyY2hQYXJhbXMoZSkpcmV0dXJuIHQuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04IiwhMSksZS50b1N0cmluZygpO2xldCBnO2lmKG4pe2lmKHIuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik+LTEpcmV0dXJuIE1BKGUsdGhpcy5mb3JtU2VyaWFsaXplcikudG9TdHJpbmcoKTtpZigoZz1hLmlzRmlsZUxpc3QoZSkpfHxyLmluZGV4T2YoIm11bHRpcGFydC9mb3JtLWRhdGEiKT4tMSl7bGV0IEU9dGhpcy5lbnYmJnRoaXMuZW52LkZvcm1EYXRhO3JldHVybiBHKGc/eyJmaWxlc1tdIjplfTplLEUmJm5ldyBFLHRoaXMuZm9ybVNlcmlhbGl6ZXIpfX1yZXR1cm4gbnx8aT8odC5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24vanNvbiIsITEpLGhyKGUpKTplfV0sdHJhbnNmb3JtUmVzcG9uc2U6W2Z1bmN0aW9uKGUpe2xldCB0PXRoaXMudHJhbnNpdGlvbmFsfHxZQS50cmFuc2l0aW9uYWwscj10JiZ0LmZvcmNlZEpTT05QYXJzaW5nLGk9dGhpcy5yZXNwb25zZVR5cGU9PT0ianNvbiI7aWYoZSYmYS5pc1N0cmluZyhlKSYmKHImJiF0aGlzLnJlc3BvbnNlVHlwZXx8aSkpe2xldCBvPSEodCYmdC5zaWxlbnRKU09OUGFyc2luZykmJmk7dHJ5e3JldHVybiBKU09OLnBhcnNlKGUpfWNhdGNoKGcpe2lmKG8pdGhyb3cgZy5uYW1lPT09IlN5bnRheEVycm9yIj9mLmZyb20oZyxmLkVSUl9CQURfUkVTUE9OU0UsdGhpcyxudWxsLHRoaXMucmVzcG9uc2UpOmd9fXJldHVybiBlfV0sdGltZW91dDowLHhzcmZDb29raWVOYW1lOiJYU1JGLVRPS0VOIix4c3JmSGVhZGVyTmFtZToiWC1YU1JGLVRPS0VOIixtYXhDb250ZW50TGVuZ3RoOi0xLG1heEJvZHlMZW5ndGg6LTEsZW52OntGb3JtRGF0YTp5LmNsYXNzZXMuRm9ybURhdGEsQmxvYjp5LmNsYXNzZXMuQmxvYn0sdmFsaWRhdGVTdGF0dXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PTIwMCYmZTwzMDB9LGhlYWRlcnM6e2NvbW1vbjp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoiLCJDb250ZW50LVR5cGUiOnZvaWQgMH19fTthLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwicG9zdCIsInB1dCIsInBhdGNoIl0sQT0+e1lBLmhlYWRlcnNbQV09e319KTt2YXIgTT1ZQTt2YXIgbXI9YS50b09iamVjdFNldChbImFnZSIsImF1dGhvcml6YXRpb24iLCJjb250ZW50LWxlbmd0aCIsImNvbnRlbnQtdHlwZSIsImV0YWciLCJleHBpcmVzIiwiZnJvbSIsImhvc3QiLCJpZi1tb2RpZmllZC1zaW5jZSIsImlmLXVubW9kaWZpZWQtc2luY2UiLCJsYXN0LW1vZGlmaWVkIiwibG9jYXRpb24iLCJtYXgtZm9yd2FyZHMiLCJwcm94eS1hdXRob3JpemF0aW9uIiwicmVmZXJlciIsInJldHJ5LWFmdGVyIiwidXNlci1hZ2VudCJdKSxPZT1BPT57bGV0IGU9e30sdCxyLGk7cmV0dXJuIEEmJkEuc3BsaXQoYApgKS5mb3JFYWNoKGZ1bmN0aW9uKG8pe2k9by5pbmRleE9mKCI6IiksdD1vLnN1YnN0cmluZygwLGkpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLHI9by5zdWJzdHJpbmcoaSsxKS50cmltKCksISghdHx8ZVt0XSYmbXJbdF0pJiYodD09PSJzZXQtY29va2llIj9lW3RdP2VbdF0ucHVzaChyKTplW3RdPVtyXTplW3RdPWVbdF0/ZVt0XSsiLCAiK3I6cil9KSxlfTt2YXIgVGU9U3ltYm9sKCJpbnRlcm5hbHMiKTtmdW5jdGlvbiBYKEEpe3JldHVybiBBJiZTdHJpbmcoQSkudHJpbSgpLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gZkEoQSl7cmV0dXJuIEE9PT0hMXx8QT09bnVsbD9BOmEuaXNBcnJheShBKT9BLm1hcChmQSk6U3RyaW5nKEEpfWZ1bmN0aW9uIHlyKEEpe2xldCBlPU9iamVjdC5jcmVhdGUobnVsbCksdD0vKFteXHMsOz1dKylccyooPzo9XHMqKFteLDtdKykpPy9nLHI7Zm9yKDtyPXQuZXhlYyhBKTspZVtyWzFdXT1yWzJdO3JldHVybiBlfXZhciB3cj1BPT4vXlstX2EtekEtWjAtOV5gfH4sISMkJSYnKisuXSskLy50ZXN0KEEudHJpbSgpKTtmdW5jdGlvbiBxQShBLGUsdCxyLGkpe2lmKGEuaXNGdW5jdGlvbihyKSlyZXR1cm4gci5jYWxsKHRoaXMsZSx0KTtpZihpJiYoZT10KSwhIWEuaXNTdHJpbmcoZSkpe2lmKGEuaXNTdHJpbmcocikpcmV0dXJuIGUuaW5kZXhPZihyKSE9PS0xO2lmKGEuaXNSZWdFeHAocikpcmV0dXJuIHIudGVzdChlKX19ZnVuY3Rpb24gRHIoQSl7cmV0dXJuIEEudHJpbSgpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvKFthLXpcZF0pKFx3KikvZywoZSx0LHIpPT50LnRvVXBwZXJDYXNlKCkrcil9ZnVuY3Rpb24gU3IoQSxlKXtsZXQgdD1hLnRvQ2FtZWxDYXNlKCIgIitlKTtbImdldCIsInNldCIsImhhcyJdLmZvckVhY2gocj0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLHIrdCx7dmFsdWU6ZnVuY3Rpb24oaSxuLG8pe3JldHVybiB0aGlzW3JdLmNhbGwodGhpcyxlLGksbixvKX0sY29uZmlndXJhYmxlOiEwfSl9KX12YXIgWT1jbGFzc3tjb25zdHJ1Y3RvcihlKXtlJiZ0aGlzLnNldChlKX1zZXQoZSx0LHIpe2xldCBpPXRoaXM7ZnVuY3Rpb24gbihnLEUsQil7bGV0IEk9WChFKTtpZighSSl0aHJvdyBuZXcgRXJyb3IoImhlYWRlciBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nIik7bGV0IHM9YS5maW5kS2V5KGksSSk7KCFzfHxpW3NdPT09dm9pZCAwfHxCPT09ITB8fEI9PT12b2lkIDAmJmlbc10hPT0hMSkmJihpW3N8fEVdPWZBKGcpKX1sZXQgbz0oZyxFKT0+YS5mb3JFYWNoKGcsKEIsSSk9Pm4oQixJLEUpKTtyZXR1cm4gYS5pc1BsYWluT2JqZWN0KGUpfHxlIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9vKGUsdCk6YS5pc1N0cmluZyhlKSYmKGU9ZS50cmltKCkpJiYhd3IoZSk/byhPZShlKSx0KTplIT1udWxsJiZuKHQsZSxyKSx0aGlzfWdldChlLHQpe2lmKGU9WChlKSxlKXtsZXQgcj1hLmZpbmRLZXkodGhpcyxlKTtpZihyKXtsZXQgaT10aGlzW3JdO2lmKCF0KXJldHVybiBpO2lmKHQ9PT0hMClyZXR1cm4geXIoaSk7aWYoYS5pc0Z1bmN0aW9uKHQpKXJldHVybiB0LmNhbGwodGhpcyxpLHIpO2lmKGEuaXNSZWdFeHAodCkpcmV0dXJuIHQuZXhlYyhpKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJwYXJzZXIgbXVzdCBiZSBib29sZWFufHJlZ2V4cHxmdW5jdGlvbiIpfX19aGFzKGUsdCl7aWYoZT1YKGUpLGUpe2xldCByPWEuZmluZEtleSh0aGlzLGUpO3JldHVybiEhKHImJnRoaXNbcl0hPT12b2lkIDAmJighdHx8cUEodGhpcyx0aGlzW3JdLHIsdCkpKX1yZXR1cm4hMX1kZWxldGUoZSx0KXtsZXQgcj10aGlzLGk9ITE7ZnVuY3Rpb24gbihvKXtpZihvPVgobyksbyl7bGV0IGc9YS5maW5kS2V5KHIsbyk7ZyYmKCF0fHxxQShyLHJbZ10sZyx0KSkmJihkZWxldGUgcltnXSxpPSEwKX19cmV0dXJuIGEuaXNBcnJheShlKT9lLmZvckVhY2gobik6bihlKSxpfWNsZWFyKGUpe2xldCB0PU9iamVjdC5rZXlzKHRoaXMpLHI9dC5sZW5ndGgsaT0hMTtmb3IoO3ItLTspe2xldCBuPXRbcl07KCFlfHxxQSh0aGlzLHRoaXNbbl0sbixlLCEwKSkmJihkZWxldGUgdGhpc1tuXSxpPSEwKX1yZXR1cm4gaX1ub3JtYWxpemUoZSl7bGV0IHQ9dGhpcyxyPXt9O3JldHVybiBhLmZvckVhY2godGhpcywoaSxuKT0+e2xldCBvPWEuZmluZEtleShyLG4pO2lmKG8pe3Rbb109ZkEoaSksZGVsZXRlIHRbbl07cmV0dXJufWxldCBnPWU/RHIobik6U3RyaW5nKG4pLnRyaW0oKTtnIT09biYmZGVsZXRlIHRbbl0sdFtnXT1mQShpKSxyW2ddPSEwfSksdGhpc31jb25jYXQoLi4uZSl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY29uY2F0KHRoaXMsLi4uZSl9dG9KU09OKGUpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGEuZm9yRWFjaCh0aGlzLChyLGkpPT57ciE9bnVsbCYmciE9PSExJiYodFtpXT1lJiZhLmlzQXJyYXkocik/ci5qb2luKCIsICIpOnIpfSksdH1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKVtTeW1ib2wuaXRlcmF0b3JdKCl9dG9TdHJpbmcoKXtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSkubWFwKChbZSx0XSk9PmUrIjogIit0KS5qb2luKGAKYCl9Z2V0W1N5bWJvbC50b1N0cmluZ1RhZ10oKXtyZXR1cm4iQXhpb3NIZWFkZXJzIn1zdGF0aWMgZnJvbShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHRoaXM/ZTpuZXcgdGhpcyhlKX1zdGF0aWMgY29uY2F0KGUsLi4udCl7bGV0IHI9bmV3IHRoaXMoZSk7cmV0dXJuIHQuZm9yRWFjaChpPT5yLnNldChpKSkscn1zdGF0aWMgYWNjZXNzb3IoZSl7bGV0IHI9KHRoaXNbVGVdPXRoaXNbVGVdPXthY2Nlc3NvcnM6e319KS5hY2Nlc3NvcnMsaT10aGlzLnByb3RvdHlwZTtmdW5jdGlvbiBuKG8pe2xldCBnPVgobyk7cltnXXx8KFNyKGksbykscltnXT0hMCl9cmV0dXJuIGEuaXNBcnJheShlKT9lLmZvckVhY2gobik6bihlKSx0aGlzfX07WS5hY2Nlc3NvcihbIkNvbnRlbnQtVHlwZSIsIkNvbnRlbnQtTGVuZ3RoIiwiQWNjZXB0IiwiQWNjZXB0LUVuY29kaW5nIiwiVXNlci1BZ2VudCIsIkF1dGhvcml6YXRpb24iXSk7YS5yZWR1Y2VEZXNjcmlwdG9ycyhZLnByb3RvdHlwZSwoe3ZhbHVlOkF9LGUpPT57bGV0IHQ9ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSk7cmV0dXJue2dldDooKT0+QSxzZXQocil7dGhpc1t0XT1yfX19KTthLmZyZWV6ZU1ldGhvZHMoWSk7dmFyIHc9WTtmdW5jdGlvbiAkKEEsZSl7bGV0IHQ9dGhpc3x8TSxyPWV8fHQsaT13LmZyb20oci5oZWFkZXJzKSxuPXIuZGF0YTtyZXR1cm4gYS5mb3JFYWNoKEEsZnVuY3Rpb24oZyl7bj1nLmNhbGwodCxuLGkubm9ybWFsaXplKCksZT9lLnN0YXR1czp2b2lkIDApfSksaS5ub3JtYWxpemUoKSxufWZ1bmN0aW9uIEFBKEEpe3JldHVybiEhKEEmJkEuX19DQU5DRUxfXyl9ZnVuY3Rpb24gSmUoQSxlLHQpe2YuY2FsbCh0aGlzLEE/PyJjYW5jZWxlZCIsZi5FUlJfQ0FOQ0VMRUQsZSx0KSx0aGlzLm5hbWU9IkNhbmNlbGVkRXJyb3IifWEuaW5oZXJpdHMoSmUsZix7X19DQU5DRUxfXzohMH0pO3ZhciBMPUplO2Z1bmN0aW9uIEtBKEEsZSx0KXtsZXQgcj10LmNvbmZpZy52YWxpZGF0ZVN0YXR1czshdC5zdGF0dXN8fCFyfHxyKHQuc3RhdHVzKT9BKHQpOmUobmV3IGYoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIit0LnN0YXR1cyxbZi5FUlJfQkFEX1JFUVVFU1QsZi5FUlJfQkFEX1JFU1BPTlNFXVtNYXRoLmZsb29yKHQuc3RhdHVzLzEwMCktNF0sdC5jb25maWcsdC5yZXF1ZXN0LHQpKX12YXIgeGU9eS5oYXNTdGFuZGFyZEJyb3dzZXJFbnY/e3dyaXRlKEEsZSx0LHIsaSxuKXtsZXQgbz1bQSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGUpXTthLmlzTnVtYmVyKHQpJiZvLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZSh0KS50b0dNVFN0cmluZygpKSxhLmlzU3RyaW5nKHIpJiZvLnB1c2goInBhdGg9IityKSxhLmlzU3RyaW5nKGkpJiZvLnB1c2goImRvbWFpbj0iK2kpLG49PT0hMCYmby5wdXNoKCJzZWN1cmUiKSxkb2N1bWVudC5jb29raWU9by5qb2luKCI7ICIpfSxyZWFkKEEpe2xldCBlPWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCIoXnw7XFxzKikoIitBKyIpPShbXjtdKikiKSk7cmV0dXJuIGU/ZGVjb2RlVVJJQ29tcG9uZW50KGVbM10pOm51bGx9LHJlbW92ZShBKXt0aGlzLndyaXRlKEEsIiIsRGF0ZS5ub3coKS04NjRlNSl9fTp7d3JpdGUoKXt9LHJlYWQoKXtyZXR1cm4gbnVsbH0scmVtb3ZlKCl7fX07ZnVuY3Rpb24gV0EoQSl7cmV0dXJuL14oW2Etel1bYS16XGQrXC0uXSo6KT9cL1wvL2kudGVzdChBKX1mdW5jdGlvbiBqQShBLGUpe3JldHVybiBlP0EucmVwbGFjZSgvXC8rJC8sIiIpKyIvIitlLnJlcGxhY2UoL15cLysvLCIiKTpBfWZ1bmN0aW9uIGVBKEEsZSl7cmV0dXJuIEEmJiFXQShlKT9qQShBLGUpOmV9dmFyIFBlPXkuaGFzU3RhbmRhcmRCcm93c2VyRW52P2Z1bmN0aW9uKCl7bGV0IGU9Lyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSx0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxyO2Z1bmN0aW9uIGkobil7bGV0IG89bjtyZXR1cm4gZSYmKHQuc2V0QXR0cmlidXRlKCJocmVmIixvKSxvPXQuaHJlZiksdC5zZXRBdHRyaWJ1dGUoImhyZWYiLG8pLHtocmVmOnQuaHJlZixwcm90b2NvbDp0LnByb3RvY29sP3QucHJvdG9jb2wucmVwbGFjZSgvOiQvLCIiKToiIixob3N0OnQuaG9zdCxzZWFyY2g6dC5zZWFyY2g/dC5zZWFyY2gucmVwbGFjZSgvXlw/LywiIik6IiIsaGFzaDp0Lmhhc2g/dC5oYXNoLnJlcGxhY2UoL14jLywiIik6IiIsaG9zdG5hbWU6dC5ob3N0bmFtZSxwb3J0OnQucG9ydCxwYXRobmFtZTp0LnBhdGhuYW1lLmNoYXJBdCgwKT09PSIvIj90LnBhdGhuYW1lOiIvIit0LnBhdGhuYW1lfX1yZXR1cm4gcj1pKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxmdW5jdGlvbihvKXtsZXQgZz1hLmlzU3RyaW5nKG8pP2kobyk6bztyZXR1cm4gZy5wcm90b2NvbD09PXIucHJvdG9jb2wmJmcuaG9zdD09PXIuaG9zdH19KCk6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hMH19KCk7ZnVuY3Rpb24gdkEoQSl7bGV0IGU9L14oWy0rXHddezEsMjV9KSg6P1wvXC98OikvLmV4ZWMoQSk7cmV0dXJuIGUmJmVbMV18fCIifWZ1bmN0aW9uIEZyKEEsZSl7QT1BfHwxMDtsZXQgdD1uZXcgQXJyYXkoQSkscj1uZXcgQXJyYXkoQSksaT0wLG49MCxvO3JldHVybiBlPWUhPT12b2lkIDA/ZToxZTMsZnVuY3Rpb24oRSl7bGV0IEI9RGF0ZS5ub3coKSxJPXJbbl07b3x8KG89QiksdFtpXT1FLHJbaV09QjtsZXQgcz1uLGM9MDtmb3IoO3MhPT1pOyljKz10W3MrK10scz1zJUE7aWYoaT0oaSsxKSVBLGk9PT1uJiYobj0obisxKSVBKSxCLW88ZSlyZXR1cm47bGV0IEM9SSYmQi1JO3JldHVybiBDP01hdGgucm91bmQoYyoxZTMvQyk6dm9pZCAwfX12YXIgSGU9RnI7ZnVuY3Rpb24gTWUoQSxlKXtsZXQgdD0wLHI9SGUoNTAsMjUwKTtyZXR1cm4gaT0+e2xldCBuPWkubG9hZGVkLG89aS5sZW5ndGhDb21wdXRhYmxlP2kudG90YWw6dm9pZCAwLGc9bi10LEU9cihnKSxCPW48PW87dD1uO2xldCBJPXtsb2FkZWQ6bix0b3RhbDpvLHByb2dyZXNzOm8/bi9vOnZvaWQgMCxieXRlczpnLHJhdGU6RXx8dm9pZCAwLGVzdGltYXRlZDpFJiZvJiZCPyhvLW4pL0U6dm9pZCAwLGV2ZW50Oml9O0lbZT8iZG93bmxvYWQiOiJ1cGxvYWQiXT0hMCxBKEkpfX12YXIgUnI9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0PCJ1IixZZT1SciYmZnVuY3Rpb24oQSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQscil7bGV0IGk9QS5kYXRhLG49dy5mcm9tKEEuaGVhZGVycykubm9ybWFsaXplKCkse3Jlc3BvbnNlVHlwZTpvLHdpdGhYU1JGVG9rZW46Z309QSxFO2Z1bmN0aW9uIEIoKXtBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKEUpLEEuc2lnbmFsJiZBLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsRSl9bGV0IEk7aWYoYS5pc0Zvcm1EYXRhKGkpKXtpZih5Lmhhc1N0YW5kYXJkQnJvd3NlckVudnx8eS5oYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnYpbi5zZXRDb250ZW50VHlwZSghMSk7ZWxzZSBpZigoST1uLmdldENvbnRlbnRUeXBlKCkpIT09ITEpe2xldFtRLC4uLnVdPUk/SS5zcGxpdCgiOyIpLm1hcChkPT5kLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pOltdO24uc2V0Q29udGVudFR5cGUoW1F8fCJtdWx0aXBhcnQvZm9ybS1kYXRhIiwuLi51XS5qb2luKCI7ICIpKX19bGV0IHM9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKEEuYXV0aCl7bGV0IFE9QS5hdXRoLnVzZXJuYW1lfHwiIix1PUEuYXV0aC5wYXNzd29yZD91bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoQS5hdXRoLnBhc3N3b3JkKSk6IiI7bi5zZXQoIkF1dGhvcml6YXRpb24iLCJCYXNpYyAiK2J0b2EoUSsiOiIrdSkpfWxldCBjPWVBKEEuYmFzZVVSTCxBLnVybCk7cy5vcGVuKEEubWV0aG9kLnRvVXBwZXJDYXNlKCksWihjLEEucGFyYW1zLEEucGFyYW1zU2VyaWFsaXplciksITApLHMudGltZW91dD1BLnRpbWVvdXQ7ZnVuY3Rpb24gQygpe2lmKCFzKXJldHVybjtsZXQgUT13LmZyb20oImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiBzJiZzLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSxkPXtkYXRhOiFvfHxvPT09InRleHQifHxvPT09Impzb24iP3MucmVzcG9uc2VUZXh0OnMucmVzcG9uc2Usc3RhdHVzOnMuc3RhdHVzLHN0YXR1c1RleHQ6cy5zdGF0dXNUZXh0LGhlYWRlcnM6USxjb25maWc6QSxyZXF1ZXN0OnN9O0tBKGZ1bmN0aW9uKGIpe3QoYiksQigpfSxmdW5jdGlvbihiKXtyKGIpLEIoKX0sZCkscz1udWxsfWlmKCJvbmxvYWRlbmQiaW4gcz9zLm9ubG9hZGVuZD1DOnMub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7IXN8fHMucmVhZHlTdGF0ZSE9PTR8fHMuc3RhdHVzPT09MCYmIShzLnJlc3BvbnNlVVJMJiZzLnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6Iik9PT0wKXx8c2V0VGltZW91dChDKX0scy5vbmFib3J0PWZ1bmN0aW9uKCl7cyYmKHIobmV3IGYoIlJlcXVlc3QgYWJvcnRlZCIsZi5FQ09OTkFCT1JURUQsQSxzKSkscz1udWxsKX0scy5vbmVycm9yPWZ1bmN0aW9uKCl7cihuZXcgZigiTmV0d29yayBFcnJvciIsZi5FUlJfTkVUV09SSyxBLHMpKSxzPW51bGx9LHMub250aW1lb3V0PWZ1bmN0aW9uKCl7bGV0IHU9QS50aW1lb3V0PyJ0aW1lb3V0IG9mICIrQS50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiLGQ9QS50cmFuc2l0aW9uYWx8fGNBO0EudGltZW91dEVycm9yTWVzc2FnZSYmKHU9QS50aW1lb3V0RXJyb3JNZXNzYWdlKSxyKG5ldyBmKHUsZC5jbGFyaWZ5VGltZW91dEVycm9yP2YuRVRJTUVET1VUOmYuRUNPTk5BQk9SVEVELEEscykpLHM9bnVsbH0seS5oYXNTdGFuZGFyZEJyb3dzZXJFbnYmJihnJiZhLmlzRnVuY3Rpb24oZykmJihnPWcoQSkpLGd8fGchPT0hMSYmUGUoYykpKXtsZXQgUT1BLnhzcmZIZWFkZXJOYW1lJiZBLnhzcmZDb29raWVOYW1lJiZ4ZS5yZWFkKEEueHNyZkNvb2tpZU5hbWUpO1EmJm4uc2V0KEEueHNyZkhlYWRlck5hbWUsUSl9aT09PXZvaWQgMCYmbi5zZXRDb250ZW50VHlwZShudWxsKSwic2V0UmVxdWVzdEhlYWRlciJpbiBzJiZhLmZvckVhY2gobi50b0pTT04oKSxmdW5jdGlvbih1LGQpe3Muc2V0UmVxdWVzdEhlYWRlcihkLHUpfSksYS5pc1VuZGVmaW5lZChBLndpdGhDcmVkZW50aWFscyl8fChzLndpdGhDcmVkZW50aWFscz0hIUEud2l0aENyZWRlbnRpYWxzKSxvJiZvIT09Impzb24iJiYocy5yZXNwb25zZVR5cGU9QS5yZXNwb25zZVR5cGUpLHR5cGVvZiBBLm9uRG93bmxvYWRQcm9ncmVzcz09ImZ1bmN0aW9uIiYmcy5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsTWUoQS5vbkRvd25sb2FkUHJvZ3Jlc3MsITApKSx0eXBlb2YgQS5vblVwbG9hZFByb2dyZXNzPT0iZnVuY3Rpb24iJiZzLnVwbG9hZCYmcy51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLE1lKEEub25VcGxvYWRQcm9ncmVzcykpLChBLmNhbmNlbFRva2VufHxBLnNpZ25hbCkmJihFPVE9PntzJiYocighUXx8US50eXBlP25ldyBMKG51bGwsQSxzKTpRKSxzLmFib3J0KCkscz1udWxsKX0sQS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUoRSksQS5zaWduYWwmJihBLnNpZ25hbC5hYm9ydGVkP0UoKTpBLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsRSkpKTtsZXQgbD12QShjKTtpZihsJiZ5LnByb3RvY29scy5pbmRleE9mKGwpPT09LTEpe3IobmV3IGYoIlVuc3VwcG9ydGVkIHByb3RvY29sICIrbCsiOiIsZi5FUlJfQkFEX1JFUVVFU1QsQSkpO3JldHVybn1zLnNlbmQoaXx8bnVsbCl9KX07dmFyIF9BPXtodHRwOlFBLHhocjpZZX07YS5mb3JFYWNoKF9BLChBLGUpPT57aWYoQSl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJuYW1lIix7dmFsdWU6ZX0pfWNhdGNoe31PYmplY3QuZGVmaW5lUHJvcGVydHkoQSwiYWRhcHRlck5hbWUiLHt2YWx1ZTplfSl9fSk7dmFyIHFlPUE9PmAtICR7QX1gLGJyPUE9PmEuaXNGdW5jdGlvbihBKXx8QT09PW51bGx8fEE9PT0hMSxwQT17Z2V0QWRhcHRlcjpBPT57QT1hLmlzQXJyYXkoQSk/QTpbQV07bGV0e2xlbmd0aDplfT1BLHQscixpPXt9O2ZvcihsZXQgbj0wO248ZTtuKyspe3Q9QVtuXTtsZXQgbztpZihyPXQsIWJyKHQpJiYocj1fQVsobz1TdHJpbmcodCkpLnRvTG93ZXJDYXNlKCldLHI9PT12b2lkIDApKXRocm93IG5ldyBmKGBVbmtub3duIGFkYXB0ZXIgJyR7b30nYCk7aWYocilicmVhaztpW298fCIjIituXT1yfWlmKCFyKXtsZXQgbj1PYmplY3QuZW50cmllcyhpKS5tYXAoKFtnLEVdKT0+YGFkYXB0ZXIgJHtnfSBgKyhFPT09ITE/ImlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGVudmlyb25tZW50IjoiaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgYnVpbGQiKSksbz1lP24ubGVuZ3RoPjE/YHNpbmNlIDoKYCtuLm1hcChxZSkuam9pbihgCmApOiIgIitxZShuWzBdKToiYXMgbm8gYWRhcHRlciBzcGVjaWZpZWQiO3Rocm93IG5ldyBmKCJUaGVyZSBpcyBubyBzdWl0YWJsZSBhZGFwdGVyIHRvIGRpc3BhdGNoIHRoZSByZXF1ZXN0ICIrbywiRVJSX05PVF9TVVBQT1JUIil9cmV0dXJuIHJ9LGFkYXB0ZXJzOl9BfTtmdW5jdGlvbiB6QShBKXtpZihBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxBLnNpZ25hbCYmQS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgTChudWxsLEEpfWZ1bmN0aW9uIGRBKEEpe3JldHVybiB6QShBKSxBLmhlYWRlcnM9dy5mcm9tKEEuaGVhZGVycyksQS5kYXRhPSQuY2FsbChBLEEudHJhbnNmb3JtUmVxdWVzdCksWyJwb3N0IiwicHV0IiwicGF0Y2giXS5pbmRleE9mKEEubWV0aG9kKSE9PS0xJiZBLmhlYWRlcnMuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsITEpLHBBLmdldEFkYXB0ZXIoQS5hZGFwdGVyfHxNLmFkYXB0ZXIpKEEpLnRoZW4oZnVuY3Rpb24ocil7cmV0dXJuIHpBKEEpLHIuZGF0YT0kLmNhbGwoQSxBLnRyYW5zZm9ybVJlc3BvbnNlLHIpLHIuaGVhZGVycz13LmZyb20oci5oZWFkZXJzKSxyfSxmdW5jdGlvbihyKXtyZXR1cm4gQUEocil8fCh6QShBKSxyJiZyLnJlc3BvbnNlJiYoci5yZXNwb25zZS5kYXRhPSQuY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2Usci5yZXNwb25zZSksci5yZXNwb25zZS5oZWFkZXJzPXcuZnJvbShyLnJlc3BvbnNlLmhlYWRlcnMpKSksUHJvbWlzZS5yZWplY3Qocil9KX12YXIgS2U9QT0+QSBpbnN0YW5jZW9mIHc/QS50b0pTT04oKTpBO2Z1bmN0aW9uIFUoQSxlKXtlPWV8fHt9O2xldCB0PXt9O2Z1bmN0aW9uIHIoQixJLHMpe3JldHVybiBhLmlzUGxhaW5PYmplY3QoQikmJmEuaXNQbGFpbk9iamVjdChJKT9hLm1lcmdlLmNhbGwoe2Nhc2VsZXNzOnN9LEIsSSk6YS5pc1BsYWluT2JqZWN0KEkpP2EubWVyZ2Uoe30sSSk6YS5pc0FycmF5KEkpP0kuc2xpY2UoKTpJfWZ1bmN0aW9uIGkoQixJLHMpe2lmKGEuaXNVbmRlZmluZWQoSSkpe2lmKCFhLmlzVW5kZWZpbmVkKEIpKXJldHVybiByKHZvaWQgMCxCLHMpfWVsc2UgcmV0dXJuIHIoQixJLHMpfWZ1bmN0aW9uIG4oQixJKXtpZighYS5pc1VuZGVmaW5lZChJKSlyZXR1cm4gcih2b2lkIDAsSSl9ZnVuY3Rpb24gbyhCLEkpe2lmKGEuaXNVbmRlZmluZWQoSSkpe2lmKCFhLmlzVW5kZWZpbmVkKEIpKXJldHVybiByKHZvaWQgMCxCKX1lbHNlIHJldHVybiByKHZvaWQgMCxJKX1mdW5jdGlvbiBnKEIsSSxzKXtpZihzIGluIGUpcmV0dXJuIHIoQixJKTtpZihzIGluIEEpcmV0dXJuIHIodm9pZCAwLEIpfWxldCBFPXt1cmw6bixtZXRob2Q6bixkYXRhOm4sYmFzZVVSTDpvLHRyYW5zZm9ybVJlcXVlc3Q6byx0cmFuc2Zvcm1SZXNwb25zZTpvLHBhcmFtc1NlcmlhbGl6ZXI6byx0aW1lb3V0Om8sdGltZW91dE1lc3NhZ2U6byx3aXRoQ3JlZGVudGlhbHM6byx3aXRoWFNSRlRva2VuOm8sYWRhcHRlcjpvLHJlc3BvbnNlVHlwZTpvLHhzcmZDb29raWVOYW1lOm8seHNyZkhlYWRlck5hbWU6byxvblVwbG9hZFByb2dyZXNzOm8sb25Eb3dubG9hZFByb2dyZXNzOm8sZGVjb21wcmVzczpvLG1heENvbnRlbnRMZW5ndGg6byxtYXhCb2R5TGVuZ3RoOm8sYmVmb3JlUmVkaXJlY3Q6byx0cmFuc3BvcnQ6byxodHRwQWdlbnQ6byxodHRwc0FnZW50Om8sY2FuY2VsVG9rZW46byxzb2NrZXRQYXRoOm8scmVzcG9uc2VFbmNvZGluZzpvLHZhbGlkYXRlU3RhdHVzOmcsaGVhZGVyczooQixJKT0+aShLZShCKSxLZShJKSwhMCl9O3JldHVybiBhLmZvckVhY2goT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxBLGUpKSxmdW5jdGlvbihJKXtsZXQgcz1FW0ldfHxpLGM9cyhBW0ldLGVbSV0sSSk7YS5pc1VuZGVmaW5lZChjKSYmcyE9PWd8fCh0W0ldPWMpfSksdH12YXIgaEE9IjEuNi4yIjt2YXIgVkE9e307WyJvYmplY3QiLCJib29sZWFuIiwibnVtYmVyIiwiZnVuY3Rpb24iLCJzdHJpbmciLCJzeW1ib2wiXS5mb3JFYWNoKChBLGUpPT57VkFbQV09ZnVuY3Rpb24ocil7cmV0dXJuIHR5cGVvZiByPT09QXx8ImEiKyhlPDE/Im4gIjoiICIpK0F9fSk7dmFyIFdlPXt9O1ZBLnRyYW5zaXRpb25hbD1mdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gaShuLG8pe3JldHVybiJbQXhpb3MgdiIraEErIl0gVHJhbnNpdGlvbmFsIG9wdGlvbiAnIituKyInIitvKyhyPyIuICIrcjoiIil9cmV0dXJuKG4sbyxnKT0+e2lmKGU9PT0hMSl0aHJvdyBuZXcgZihpKG8sIiBoYXMgYmVlbiByZW1vdmVkIisodD8iIGluICIrdDoiIikpLGYuRVJSX0RFUFJFQ0FURUQpO3JldHVybiB0JiYhV2Vbb10mJihXZVtvXT0hMCxjb25zb2xlLndhcm4oaShvLCIgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2Iit0KyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLGU/ZShuLG8sZyk6ITB9fTtmdW5jdGlvbiBrcihBLGUsdCl7aWYodHlwZW9mIEEhPSJvYmplY3QiKXRocm93IG5ldyBmKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0IixmLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtsZXQgcj1PYmplY3Qua2V5cyhBKSxpPXIubGVuZ3RoO2Zvcig7aS0tID4wOyl7bGV0IG49cltpXSxvPWVbbl07aWYobyl7bGV0IGc9QVtuXSxFPWc9PT12b2lkIDB8fG8oZyxuLEEpO2lmKEUhPT0hMCl0aHJvdyBuZXcgZigib3B0aW9uICIrbisiIG11c3QgYmUgIitFLGYuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2NvbnRpbnVlfWlmKHQhPT0hMCl0aHJvdyBuZXcgZigiVW5rbm93biBvcHRpb24gIituLGYuRVJSX0JBRF9PUFRJT04pfX12YXIgbUE9e2Fzc2VydE9wdGlvbnM6a3IsdmFsaWRhdG9yczpWQX07dmFyIE89bUEudmFsaWRhdG9ycyxxPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuZGVmYXVsdHM9ZSx0aGlzLmludGVyY2VwdG9ycz17cmVxdWVzdDpuZXcgUEEscmVzcG9uc2U6bmV3IFBBfX1yZXF1ZXN0KGUsdCl7dHlwZW9mIGU9PSJzdHJpbmciPyh0PXR8fHt9LHQudXJsPWUpOnQ9ZXx8e30sdD1VKHRoaXMuZGVmYXVsdHMsdCk7bGV0e3RyYW5zaXRpb25hbDpyLHBhcmFtc1NlcmlhbGl6ZXI6aSxoZWFkZXJzOm59PXQ7ciE9PXZvaWQgMCYmbUEuYXNzZXJ0T3B0aW9ucyhyLHtzaWxlbnRKU09OUGFyc2luZzpPLnRyYW5zaXRpb25hbChPLmJvb2xlYW4pLGZvcmNlZEpTT05QYXJzaW5nOk8udHJhbnNpdGlvbmFsKE8uYm9vbGVhbiksY2xhcmlmeVRpbWVvdXRFcnJvcjpPLnRyYW5zaXRpb25hbChPLmJvb2xlYW4pfSwhMSksaSE9bnVsbCYmKGEuaXNGdW5jdGlvbihpKT90LnBhcmFtc1NlcmlhbGl6ZXI9e3NlcmlhbGl6ZTppfTptQS5hc3NlcnRPcHRpb25zKGkse2VuY29kZTpPLmZ1bmN0aW9uLHNlcmlhbGl6ZTpPLmZ1bmN0aW9ufSwhMCkpLHQubWV0aG9kPSh0Lm1ldGhvZHx8dGhpcy5kZWZhdWx0cy5tZXRob2R8fCJnZXQiKS50b0xvd2VyQ2FzZSgpO2xldCBvPW4mJmEubWVyZ2Uobi5jb21tb24sblt0Lm1ldGhvZF0pO24mJmEuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSxsPT57ZGVsZXRlIG5bbF19KSx0LmhlYWRlcnM9dy5jb25jYXQobyxuKTtsZXQgZz1bXSxFPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbihRKXt0eXBlb2YgUS5ydW5XaGVuPT0iZnVuY3Rpb24iJiZRLnJ1bldoZW4odCk9PT0hMXx8KEU9RSYmUS5zeW5jaHJvbm91cyxnLnVuc2hpZnQoUS5mdWxmaWxsZWQsUS5yZWplY3RlZCkpfSk7bGV0IEI9W107dGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihRKXtCLnB1c2goUS5mdWxmaWxsZWQsUS5yZWplY3RlZCl9KTtsZXQgSSxzPTAsYztpZighRSl7bGV0IGw9W2RBLmJpbmQodGhpcyksdm9pZCAwXTtmb3IobC51bnNoaWZ0LmFwcGx5KGwsZyksbC5wdXNoLmFwcGx5KGwsQiksYz1sLmxlbmd0aCxJPVByb21pc2UucmVzb2x2ZSh0KTtzPGM7KUk9SS50aGVuKGxbcysrXSxsW3MrK10pO3JldHVybiBJfWM9Zy5sZW5ndGg7bGV0IEM9dDtmb3Iocz0wO3M8Yzspe2xldCBsPWdbcysrXSxRPWdbcysrXTt0cnl7Qz1sKEMpfWNhdGNoKHUpe1EuY2FsbCh0aGlzLHUpO2JyZWFrfX10cnl7ST1kQS5jYWxsKHRoaXMsQyl9Y2F0Y2gobCl7cmV0dXJuIFByb21pc2UucmVqZWN0KGwpfWZvcihzPTAsYz1CLmxlbmd0aDtzPGM7KUk9SS50aGVuKEJbcysrXSxCW3MrK10pO3JldHVybiBJfWdldFVyaShlKXtlPVUodGhpcy5kZWZhdWx0cyxlKTtsZXQgdD1lQShlLmJhc2VVUkwsZS51cmwpO3JldHVybiBaKHQsZS5wYXJhbXMsZS5wYXJhbXNTZXJpYWxpemVyKX19O2EuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJvcHRpb25zIl0sZnVuY3Rpb24oZSl7cS5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KFUocnx8e30se21ldGhvZDplLHVybDp0LGRhdGE6KHJ8fHt9KS5kYXRhfSkpfX0pO2EuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocil7cmV0dXJuIGZ1bmN0aW9uKG4sbyxnKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KFUoZ3x8e30se21ldGhvZDplLGhlYWRlcnM6cj97IkNvbnRlbnQtVHlwZSI6Im11bHRpcGFydC9mb3JtLWRhdGEifTp7fSx1cmw6bixkYXRhOm99KSl9fXEucHJvdG90eXBlW2VdPXQoKSxxLnByb3RvdHlwZVtlKyJGb3JtIl09dCghMCl9KTt2YXIgdEE9cTt2YXIgWkE9Y2xhc3MgQXtjb25zdHJ1Y3RvcihlKXtpZih0eXBlb2YgZSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJleGVjdXRvciBtdXN0IGJlIGEgZnVuY3Rpb24uIik7bGV0IHQ7dGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKG4pe3Q9bn0pO2xldCByPXRoaXM7dGhpcy5wcm9taXNlLnRoZW4oaT0+e2lmKCFyLl9saXN0ZW5lcnMpcmV0dXJuO2xldCBuPXIuX2xpc3RlbmVycy5sZW5ndGg7Zm9yKDtuLS0gPjA7KXIuX2xpc3RlbmVyc1tuXShpKTtyLl9saXN0ZW5lcnM9bnVsbH0pLHRoaXMucHJvbWlzZS50aGVuPWk9PntsZXQgbixvPW5ldyBQcm9taXNlKGc9PntyLnN1YnNjcmliZShnKSxuPWd9KS50aGVuKGkpO3JldHVybiBvLmNhbmNlbD1mdW5jdGlvbigpe3IudW5zdWJzY3JpYmUobil9LG99LGUoZnVuY3Rpb24obixvLGcpe3IucmVhc29ufHwoci5yZWFzb249bmV3IEwobixvLGcpLHQoci5yZWFzb24pKX0pfXRocm93SWZSZXF1ZXN0ZWQoKXtpZih0aGlzLnJlYXNvbil0aHJvdyB0aGlzLnJlYXNvbn1zdWJzY3JpYmUoZSl7aWYodGhpcy5yZWFzb24pe2UodGhpcy5yZWFzb24pO3JldHVybn10aGlzLl9saXN0ZW5lcnM/dGhpcy5fbGlzdGVuZXJzLnB1c2goZSk6dGhpcy5fbGlzdGVuZXJzPVtlXX11bnN1YnNjcmliZShlKXtpZighdGhpcy5fbGlzdGVuZXJzKXJldHVybjtsZXQgdD10aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihlKTt0IT09LTEmJnRoaXMuX2xpc3RlbmVycy5zcGxpY2UodCwxKX1zdGF0aWMgc291cmNlKCl7bGV0IGU7cmV0dXJue3Rva2VuOm5ldyBBKGZ1bmN0aW9uKGkpe2U9aX0pLGNhbmNlbDplfX19LGplPVpBO2Z1bmN0aW9uIFhBKEEpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gQS5hcHBseShudWxsLHQpfX1mdW5jdGlvbiAkQShBKXtyZXR1cm4gYS5pc09iamVjdChBKSYmQS5pc0F4aW9zRXJyb3I9PT0hMH12YXIgQWU9e0NvbnRpbnVlOjEwMCxTd2l0Y2hpbmdQcm90b2NvbHM6MTAxLFByb2Nlc3Npbmc6MTAyLEVhcmx5SGludHM6MTAzLE9rOjIwMCxDcmVhdGVkOjIwMSxBY2NlcHRlZDoyMDIsTm9uQXV0aG9yaXRhdGl2ZUluZm9ybWF0aW9uOjIwMyxOb0NvbnRlbnQ6MjA0LFJlc2V0Q29udGVudDoyMDUsUGFydGlhbENvbnRlbnQ6MjA2LE11bHRpU3RhdHVzOjIwNyxBbHJlYWR5UmVwb3J0ZWQ6MjA4LEltVXNlZDoyMjYsTXVsdGlwbGVDaG9pY2VzOjMwMCxNb3ZlZFBlcm1hbmVudGx5OjMwMSxGb3VuZDozMDIsU2VlT3RoZXI6MzAzLE5vdE1vZGlmaWVkOjMwNCxVc2VQcm94eTozMDUsVW51c2VkOjMwNixUZW1wb3JhcnlSZWRpcmVjdDozMDcsUGVybWFuZW50UmVkaXJlY3Q6MzA4LEJhZFJlcXVlc3Q6NDAwLFVuYXV0aG9yaXplZDo0MDEsUGF5bWVudFJlcXVpcmVkOjQwMixGb3JiaWRkZW46NDAzLE5vdEZvdW5kOjQwNCxNZXRob2ROb3RBbGxvd2VkOjQwNSxOb3RBY2NlcHRhYmxlOjQwNixQcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6NDA3LFJlcXVlc3RUaW1lb3V0OjQwOCxDb25mbGljdDo0MDksR29uZTo0MTAsTGVuZ3RoUmVxdWlyZWQ6NDExLFByZWNvbmRpdGlvbkZhaWxlZDo0MTIsUGF5bG9hZFRvb0xhcmdlOjQxMyxVcmlUb29Mb25nOjQxNCxVbnN1cHBvcnRlZE1lZGlhVHlwZTo0MTUsUmFuZ2VOb3RTYXRpc2ZpYWJsZTo0MTYsRXhwZWN0YXRpb25GYWlsZWQ6NDE3LEltQVRlYXBvdDo0MTgsTWlzZGlyZWN0ZWRSZXF1ZXN0OjQyMSxVbnByb2Nlc3NhYmxlRW50aXR5OjQyMixMb2NrZWQ6NDIzLEZhaWxlZERlcGVuZGVuY3k6NDI0LFRvb0Vhcmx5OjQyNSxVcGdyYWRlUmVxdWlyZWQ6NDI2LFByZWNvbmRpdGlvblJlcXVpcmVkOjQyOCxUb29NYW55UmVxdWVzdHM6NDI5LFJlcXVlc3RIZWFkZXJGaWVsZHNUb29MYXJnZTo0MzEsVW5hdmFpbGFibGVGb3JMZWdhbFJlYXNvbnM6NDUxLEludGVybmFsU2VydmVyRXJyb3I6NTAwLE5vdEltcGxlbWVudGVkOjUwMSxCYWRHYXRld2F5OjUwMixTZXJ2aWNlVW5hdmFpbGFibGU6NTAzLEdhdGV3YXlUaW1lb3V0OjUwNCxIdHRwVmVyc2lvbk5vdFN1cHBvcnRlZDo1MDUsVmFyaWFudEFsc29OZWdvdGlhdGVzOjUwNixJbnN1ZmZpY2llbnRTdG9yYWdlOjUwNyxMb29wRGV0ZWN0ZWQ6NTA4LE5vdEV4dGVuZGVkOjUxMCxOZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZDo1MTF9O09iamVjdC5lbnRyaWVzKEFlKS5mb3JFYWNoKChbQSxlXSk9PntBZVtlXT1BfSk7dmFyIHZlPUFlO2Z1bmN0aW9uIF9lKEEpe2xldCBlPW5ldyB0QShBKSx0PV8odEEucHJvdG90eXBlLnJlcXVlc3QsZSk7cmV0dXJuIGEuZXh0ZW5kKHQsdEEucHJvdG90eXBlLGUse2FsbE93bktleXM6ITB9KSxhLmV4dGVuZCh0LGUsbnVsbCx7YWxsT3duS2V5czohMH0pLHQuY3JlYXRlPWZ1bmN0aW9uKGkpe3JldHVybiBfZShVKEEsaSkpfSx0fXZhciBoPV9lKE0pO2guQXhpb3M9dEE7aC5DYW5jZWxlZEVycm9yPUw7aC5DYW5jZWxUb2tlbj1qZTtoLmlzQ2FuY2VsPUFBO2guVkVSU0lPTj1oQTtoLnRvRm9ybURhdGE9RztoLkF4aW9zRXJyb3I9ZjtoLkNhbmNlbD1oLkNhbmNlbGVkRXJyb3I7aC5hbGw9ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKGUpfTtoLnNwcmVhZD1YQTtoLmlzQXhpb3NFcnJvcj0kQTtoLm1lcmdlQ29uZmlnPVU7aC5BeGlvc0hlYWRlcnM9dztoLmZvcm1Ub0pTT049QT0+dUEoYS5pc0hUTUxGb3JtKEEpP25ldyBGb3JtRGF0YShBKTpBKTtoLmdldEFkYXB0ZXI9cEEuZ2V0QWRhcHRlcjtoLkh0dHBTdGF0dXNDb2RlPXZlO2guZGVmYXVsdD1oO3ZhciBLPWg7dmFye0F4aW9zOldvLEF4aW9zRXJyb3I6am8sQ2FuY2VsZWRFcnJvcjp2byxpc0NhbmNlbDpfbyxDYW5jZWxUb2tlbjp6byxWRVJTSU9OOlZvLGFsbDpabyxDYW5jZWw6WG8saXNBeGlvc0Vycm9yOiRvLHNwcmVhZDpBcyx0b0Zvcm1EYXRhOmVzLEF4aW9zSGVhZGVyczp0cyxIdHRwU3RhdHVzQ29kZTpycyxmb3JtVG9KU09OOmlzLGdldEFkYXB0ZXI6bnMsbWVyZ2VDb25maWc6b3N9PUs7YXN5bmMgZnVuY3Rpb24gVXIoQSxlKXtsZXQgdD1BLHI9bnVsbDtpZih0PT1udWxsKXI9bmV3IFdvcmtlcihuZXcgVVJMKCIuL3dlYi13b3JrZXJzL2l0ay13YXNtLXBpcGVsaW5lLndvcmtlci5qcyIsaW1wb3J0Lm1ldGEudXJsKSx7dHlwZToibW9kdWxlIn0pO2Vsc2UgaWYodC5zdGFydHNXaXRoKCJodHRwIikpe2xldCBpPWF3YWl0IEsuZ2V0KHQse3Jlc3BvbnNlVHlwZToiYmxvYiIscGFyYW1zOmV9KSxuPVVSTC5jcmVhdGVPYmplY3RVUkwoaS5kYXRhKTtyPW5ldyBXb3JrZXIobix7dHlwZToibW9kdWxlIn0pfWVsc2Ugcj1uZXcgV29ya2VyKHQse3R5cGU6Im1vZHVsZSJ9KTtyZXR1cm4gcn12YXIgckE9VXI7ZnVuY3Rpb24gemUoQSl7bGV0IGU9TkEoQSksdD1BO3JldHVybiB0LnRlcm1pbmF0ZWQ9ITEsdC53b3JrZXJQcm94eT1lLHQub3JpZ2luYWxUZXJtaW5hdGU9dC50ZXJtaW5hdGUsdC50ZXJtaW5hdGU9KCk9Pnt0LnRlcm1pbmF0ZWQ9ITAsdC53b3JrZXJQcm94eVtVQV0oKSx0Lm9yaWdpbmFsVGVybWluYXRlKCl9LHt3b3JrZXJQcm94eTplLHdvcmtlcjp0fX1hc3luYyBmdW5jdGlvbiBOcihBLGUsdCl7bGV0IHI7aWYoQSE9bnVsbCl7bGV0IG49QTtyZXR1cm4gbi53b3JrZXJQcm94eSE9PXZvaWQgMD8ocj1uLndvcmtlclByb3h5LHt3b3JrZXJQcm94eTpyLHdvcmtlcjpufSk6emUoQSl9bGV0IGk9YXdhaXQgckEoZSx0KTtyZXR1cm4gemUoaSl9dmFyIFZlPU5yO2FzeW5jIGZ1bmN0aW9uIEdyKEEsZSx0KXtsZXQgcj0idW5rbm93biI7dHlwZW9mIEEhPSJzdHJpbmciP3I9QS5ocmVmOkEuc3RhcnRzV2l0aCgiaHR0cCIpP3I9QTpyPXR5cGVvZiBlPCJ1Ij9gJHtlfS8ke0F9YDpBLHIuZW5kc1dpdGgoIi5qcyIpJiYocj1yLnN1YnN0cmluZygwLHIubGVuZ3RoLTMpKSxyLmVuZHNXaXRoKCIud2FzbSIpJiYocj1yLnN1YnN0cmluZygwLHIubGVuZ3RoLTUpKTtsZXQgaT1gJHtyfS53YXNtYCxvPShhd2FpdCBLLmdldChpLHtyZXNwb25zZVR5cGU6ImFycmF5YnVmZmVyIixwYXJhbXM6dH0pKS5kYXRhO3JldHVybihhd2FpdCBpbXBvcnQoYCR7cn0uanNgKSkuZGVmYXVsdCh7d2FzbUJpbmFyeTpvfSl9dmFyIFplPUdyO3ZhciBYZT1hc3luYygpPT5XZWJBc3NlbWJseS52YWxpZGF0ZShuZXcgVWludDhBcnJheShbMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw1LDEsOTYsMCwxLDEyMywzLDIsMSwwLDEwLDEwLDEsOCwwLDY1LDAsMjUzLDE1LDI1Myw5OCwxMV0pKTt2YXIgZXQ9dHlwZW9mIGdsb2JhbFRoaXMuU2hhcmVkQXJyYXlCdWZmZXI9PSJmdW5jdGlvbiIsJGU9bmV3IFRleHRFbmNvZGVyLEF0PW5ldyBUZXh0RGVjb2RlcigidXRmLTgiKTtmdW5jdGlvbiBMcihBLGUpe2xldCB0PXtmbGFnczoiciIsZW5jb2Rpbmc6ImJpbmFyeSJ9LHI9QS5mc19vcGVuKGUsdC5mbGFncyksbj1BLmZzX3N0YXQoZSkuc2l6ZSxvPW51bGw7ZXQ/bz1uZXcgU2hhcmVkQXJyYXlCdWZmZXIobik6bz1uZXcgQXJyYXlCdWZmZXIobik7bGV0IGc9bmV3IFVpbnQ4QXJyYXkobyk7cmV0dXJuIEEuZnNfcmVhZChyLGcsMCxuLDApLEEuZnNfY2xvc2UociksZ31mdW5jdGlvbiB0dChBLGUsdCl7bGV0IHI9bnVsbDtldD9yPW5ldyBTaGFyZWRBcnJheUJ1ZmZlcih0KTpyPW5ldyBBcnJheUJ1ZmZlcih0KTtsZXQgaT1uZXcgVWludDhBcnJheShyKSxuPW5ldyBVaW50OEFycmF5KEEuSEVBUFU4LmJ1ZmZlcixlLHQpO3JldHVybiBpLnNldChuKSxpfWZ1bmN0aW9uIG0oQSxlLHQscil7bGV0IGk9MDtyZXR1cm4gZSE9PW51bGwmJihpPUEuY2NhbGwoIml0a193YXNtX2lucHV0X2FycmF5X2FsbG9jIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHQscixlLmJ1ZmZlci5ieXRlTGVuZ3RoXSksQS5IRUFQVTguc2V0KG5ldyBVaW50OEFycmF5KGUuYnVmZmVyKSxpKSksaX1mdW5jdGlvbiBXKEEsZSx0KXtsZXQgcj1KU09OLnN0cmluZ2lmeShlKSxpPUEuY2NhbGwoIml0a193YXNtX2lucHV0X2pzb25fYWxsb2MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsdCxyLmxlbmd0aF0pO0Eud3JpdGVBc2NpaVRvTWVtb3J5KHIsaSwhMSl9ZnVuY3Rpb24gUyhBLGUsdCxyKXtsZXQgaT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxlLHRdKSxuPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLGUsdF0pLG89dHQoQSxpLG4pO3JldHVybiBOKHIsby5idWZmZXIpfWZ1bmN0aW9uIGVlKEEsZSl7bGV0IHQ9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2pzb25fYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiXSxbMCxlXSkscj1BLkFzY2lpVG9TdHJpbmcodCk7cmV0dXJuIEpTT04ucGFyc2Uocil9ZnVuY3Rpb24gT3IoQSxlLHQscil7ciE9bnVsbCYmci5sZW5ndGg+MCYmci5mb3JFYWNoKGZ1bmN0aW9uKEIsSSl7c3dpdGNoKEIudHlwZSl7Y2FzZSBwLlRleHRTdHJlYW06e2xldCBzPSRlLmVuY29kZShCLmRhdGEuZGF0YSksYz1tKEEscyxJLDApLEM9e3NpemU6cy5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gfTtXKEEsQyxJKTticmVha31jYXNlIHAuSnNvbkNvbXBhdGlibGU6e2xldCBzPSRlLmVuY29kZShKU09OLnN0cmluZ2lmeShCLmRhdGEpKSxjPW0oQSxzLEksMCksQz17c2l6ZTpzLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWB9O1coQSxDLEkpO2JyZWFrfWNhc2UgcC5CaW5hcnlTdHJlYW06e2xldCBzPUIuZGF0YS5kYXRhLGM9bShBLHMsSSwwKSxDPXtzaXplOnMuYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2N9YH07VyhBLEMsSSk7YnJlYWt9Y2FzZSBwLlRleHRGaWxlOntBLmZzX3dyaXRlRmlsZShCLmRhdGEucGF0aCxCLmRhdGEuZGF0YSk7YnJlYWt9Y2FzZSBwLkJpbmFyeUZpbGU6e0EuZnNfd3JpdGVGaWxlKEIuZGF0YS5wYXRoLEIuZGF0YS5kYXRhKTticmVha31jYXNlIHAuSW1hZ2U6e2xldCBzPUIuZGF0YSxjPW0oQSxzLmRhdGEsSSwwKSxDPW0oQSxzLmRpcmVjdGlvbixJLDEpLGw9dHlwZW9mIHMubWV0YWRhdGE/LmVudHJpZXM8InUiP0pTT04uc3RyaW5naWZ5KEFycmF5LmZyb20ocy5tZXRhZGF0YS5lbnRyaWVzKCkpKToiW10iLFE9e2ltYWdlVHlwZTpzLmltYWdlVHlwZSxuYW1lOnMubmFtZSxvcmlnaW46cy5vcmlnaW4sc3BhY2luZzpzLnNwYWNpbmcsZGlyZWN0aW9uOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Q31gLHNpemU6cy5zaXplLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWAsbWV0YWRhdGE6bH07VyhBLFEsSSk7YnJlYWt9Y2FzZSBwLk1lc2g6e2xldCBzPUIuZGF0YSxjPW0oQSxzLnBvaW50cyxJLDApLEM9bShBLHMuY2VsbHMsSSwxKSxsPW0oQSxzLnBvaW50RGF0YSxJLDIpLFE9bShBLHMuY2VsbERhdGEsSSwzKSx1PXttZXNoVHlwZTpzLm1lc2hUeXBlLG5hbWU6cy5uYW1lLG51bWJlck9mUG9pbnRzOnMubnVtYmVyT2ZQb2ludHMscG9pbnRzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gLG51bWJlck9mQ2VsbHM6cy5udW1iZXJPZkNlbGxzLGNlbGxzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Q31gLGNlbGxCdWZmZXJTaXplOnMuY2VsbEJ1ZmZlclNpemUsbnVtYmVyT2ZQb2ludFBpeGVsczpzLm51bWJlck9mUG9pbnRQaXhlbHMscG9pbnREYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7bH1gLG51bWJlck9mQ2VsbFBpeGVsczpzLm51bWJlck9mQ2VsbFBpeGVscyxjZWxsRGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1F9YH07VyhBLHUsSSk7YnJlYWt9Y2FzZSBwLlBvbHlEYXRhOntsZXQgcz1CLmRhdGEsYz1tKEEscy5wb2ludHMsSSwwKSxDPW0oQSxzLnZlcnRpY2VzLEksMSksbD1tKEEscy5saW5lcyxJLDIpLFE9bShBLHMucG9seWdvbnMsSSwzKSx1PW0oQSxzLnRyaWFuZ2xlU3RyaXBzLEksNCksZD1tKEEscy5wb2ludERhdGEsSSw1KSxSPW0oQSxzLnBvaW50RGF0YSxJLDYpLGI9e3BvbHlEYXRhVHlwZTpzLnBvbHlEYXRhVHlwZSxuYW1lOnMubmFtZSxudW1iZXJPZlBvaW50czpzLm51bWJlck9mUG9pbnRzLHBvaW50czpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2N9YCx2ZXJ0aWNlc0J1ZmZlclNpemU6cy52ZXJ0aWNlc0J1ZmZlclNpemUsdmVydGljZXM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtDfWAsbGluZXNCdWZmZXJTaXplOnMubGluZXNCdWZmZXJTaXplLGxpbmVzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7bH1gLHBvbHlnb25zQnVmZmVyU2l6ZTpzLnBvbHlnb25zQnVmZmVyU2l6ZSxwb2x5Z29uczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1F9YCx0cmlhbmdsZVN0cmlwc0J1ZmZlclNpemU6cy50cmlhbmdsZVN0cmlwc0J1ZmZlclNpemUsdHJpYW5nbGVTdHJpcHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHt1fWAsbnVtYmVyT2ZQb2ludFBpeGVsczpzLm51bWJlck9mUG9pbnRQaXhlbHMscG9pbnREYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7ZH1gLG51bWJlck9mQ2VsbFBpeGVsczpzLm51bWJlck9mQ2VsbFBpeGVscyxjZWxsRGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1J9YH07VyhBLGIsSSk7YnJlYWt9ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5zdXBwb3J0ZWQgaW5wdXQgSW50ZXJmYWNlVHlwZSIpfX0pLEEucmVzZXRNb2R1bGVTdGRvdXQoKSxBLnJlc2V0TW9kdWxlU3RkZXJyKCk7bGV0IGk9QS5zdGFja1NhdmUoKSxuPTA7dHJ5e249QS5jYWxsTWFpbihlLnNsaWNlKCkpfWNhdGNoKEIpe3Rocm93IHR5cGVvZiBCPT0ibnVtYmVyIiYmKGNvbnNvbGUubG9nKCJFeGNlcHRpb24gd2hpbGUgcnVubmluZyBwaXBlbGluZToiKSxjb25zb2xlLmxvZygic3Rkb3V0OiIsQS5nZXRNb2R1bGVTdGRvdXQoKSksY29uc29sZS5lcnJvcigic3RkZXJyOiIsQS5nZXRNb2R1bGVTdGRlcnIoKSksdHlwZW9mIEEuZ2V0RXhjZXB0aW9uTWVzc2FnZTwidSI/Y29uc29sZS5lcnJvcigiZXhjZXB0aW9uOiIsQS5nZXRFeGNlcHRpb25NZXNzYWdlKEIpKTpjb25zb2xlLmVycm9yKCJCdWlsZCBtb2R1bGUgaW4gRGVidWcgbW9kZSBmb3IgZXhjZXB0aW9uIG1lc3NhZ2UgaW5mb3JtYXRpb24uIikpLEJ9ZmluYWxseXtBLnN0YWNrUmVzdG9yZShpKX1sZXQgbz1BLmdldE1vZHVsZVN0ZG91dCgpLGc9QS5nZXRNb2R1bGVTdGRlcnIoKSxFPVtdO3JldHVybiB0IT1udWxsJiZ0Lmxlbmd0aD4wJiZuPT09MCYmdC5mb3JFYWNoKGZ1bmN0aW9uKEIsSSl7bGV0IHM9bnVsbDtzd2l0Y2goQi50eXBlKXtjYXNlIHAuVGV4dFN0cmVhbTp7bGV0IEM9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsSSwwXSksbD1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxJLDBdKSxRPW5ldyBVaW50OEFycmF5KEEuSEVBUFU4LmJ1ZmZlcixDLGwpO3M9e2RhdGE6QXQuZGVjb2RlKFEpfTticmVha31jYXNlIHAuSnNvbkNvbXBhdGlibGU6e2xldCBDPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEksMF0pLGw9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsSSwwXSksUT1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsQyxsKTtzPUpTT04ucGFyc2UoQXQuZGVjb2RlKFEpKTticmVha31jYXNlIHAuQmluYXJ5U3RyZWFtOntsZXQgQz1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxJLDBdKSxsPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEksMF0pO3M9e2RhdGE6dHQoQSxDLGwpfTticmVha31jYXNlIHAuVGV4dEZpbGU6e3M9e3BhdGg6Qi5kYXRhLnBhdGgsZGF0YTpBLmZzX3JlYWRGaWxlKEIuZGF0YS5wYXRoLHtlbmNvZGluZzoidXRmOCJ9KX07YnJlYWt9Y2FzZSBwLkJpbmFyeUZpbGU6e3M9e3BhdGg6Qi5kYXRhLnBhdGgsZGF0YTpMcihBLEIuZGF0YS5wYXRoKX07YnJlYWt9Y2FzZSBwLkltYWdlOntsZXQgQz1lZShBLEkpO0MuZGF0YT1TKEEsSSwwLEMuaW1hZ2VUeXBlLmNvbXBvbmVudFR5cGUpLEMuZGlyZWN0aW9uPVMoQSxJLDEsSi5GbG9hdDY0KSxDLm1ldGFkYXRhPW5ldyBNYXAoQy5tZXRhZGF0YSkscz1DO2JyZWFrfWNhc2UgcC5NZXNoOntsZXQgQz1lZShBLEkpO0MubnVtYmVyT2ZQb2ludHM+MD9DLnBvaW50cz1TKEEsSSwwLEMubWVzaFR5cGUucG9pbnRDb21wb25lbnRUeXBlKTpDLnBvaW50cz1OKEMubWVzaFR5cGUucG9pbnRDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksQy5udW1iZXJPZkNlbGxzPjA/Qy5jZWxscz1TKEEsSSwxLEMubWVzaFR5cGUuY2VsbENvbXBvbmVudFR5cGUpOkMuY2VsbHM9TihDLm1lc2hUeXBlLmNlbGxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksQy5udW1iZXJPZlBvaW50UGl4ZWxzPjA/Qy5wb2ludERhdGE9UyhBLEksMixDLm1lc2hUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlKTpDLnBvaW50RGF0YT1OKEMubWVzaFR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxDLm51bWJlck9mQ2VsbFBpeGVscz4wP0MuY2VsbERhdGE9UyhBLEksMyxDLm1lc2hUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUpOkMuY2VsbERhdGE9TihDLm1lc2hUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxzPUM7YnJlYWt9Y2FzZSBwLlBvbHlEYXRhOntsZXQgQz1lZShBLEkpO0MubnVtYmVyT2ZQb2ludHM+MD9DLnBvaW50cz1TKEEsSSwwLEouRmxvYXQzMik6Qy5wb2ludHM9bmV3IEZsb2F0MzJBcnJheSxDLnZlcnRpY2VzQnVmZmVyU2l6ZT4wP0MudmVydGljZXM9UyhBLEksMSxELlVJbnQzMik6Qy52ZXJ0aWNlcz1uZXcgVWludDMyQXJyYXksQy5saW5lc0J1ZmZlclNpemU+MD9DLmxpbmVzPVMoQSxJLDIsRC5VSW50MzIpOkMubGluZXM9bmV3IFVpbnQzMkFycmF5LEMucG9seWdvbnNCdWZmZXJTaXplPjA/Qy5wb2x5Z29ucz1TKEEsSSwzLEQuVUludDMyKTpDLnBvbHlnb25zPW5ldyBVaW50MzJBcnJheSxDLnRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZT4wP0MudHJpYW5nbGVTdHJpcHM9UyhBLEksNCxELlVJbnQzMik6Qy50cmlhbmdsZVN0cmlwcz1uZXcgVWludDMyQXJyYXksQy5udW1iZXJPZlBvaW50UGl4ZWxzPjA/Qy5wb2ludERhdGE9UyhBLEksNSxDLnBvbHlEYXRhVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSk6Qy5wb2ludERhdGE9TihDLnBvbHlEYXRhVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEMubnVtYmVyT2ZDZWxsUGl4ZWxzPjA/Qy5jZWxsRGF0YT1TKEEsSSw2LEMucG9seURhdGFUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUpOkMuY2VsbERhdGE9TihDLnBvbHlEYXRhVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSkscz1DO2JyZWFrfWRlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuc3VwcG9ydGVkIG91dHB1dCBJbnRlcmZhY2VUeXBlIil9bGV0IGM9e3R5cGU6Qi50eXBlLGRhdGE6c307RS5wdXNoKGMpfSkse3JldHVyblZhbHVlOm4sc3Rkb3V0Om8sc3RkZXJyOmcsb3V0cHV0czpFfX12YXIgcnQ9T3I7dmFyIFRyPXR5cGVvZiBnbG9iYWxUaGlzLlNoYXJlZEFycmF5QnVmZmVyPCJ1IjtmdW5jdGlvbiBKcihBLGUpe2lmKEE9PW51bGwpcmV0dXJuW107bGV0IHQ9W107Zm9yKGxldCByPTA7cjxBLmxlbmd0aDtyKyspe2xldCBpPXhyKEFbcl0sZSk7aSE9PW51bGwmJnQucHVzaChpKX1yZXR1cm4gdH1mdW5jdGlvbiB4cihBLGUpe2lmKEE9PW51bGwpcmV0dXJuIG51bGw7bGV0IHQ9bnVsbDtyZXR1cm4gQS5idWZmZXIhPT12b2lkIDA/dD1BLmJ1ZmZlcjpBLmJ5dGVMZW5ndGghPT12b2lkIDAmJih0PUEpLFRyJiZ0IGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXI/bnVsbDplP3Q6dC5zbGljZSgwKX12YXIgaXQ9SnI7ZnVuY3Rpb24gUHIoQSl7cmV0dXJuW0EuZGF0YSxBLmRpcmVjdGlvbl19dmFyIG50PVByO2Z1bmN0aW9uIEhyKEEpe3JldHVybltBLnBvaW50cyxBLnBvaW50RGF0YSxBLmNlbGxzLEEuY2VsbERhdGFdfXZhciBvdD1IcjtmdW5jdGlvbiBNcihBKXtyZXR1cm5bQS5wb2ludHMsQS52ZXJ0aWNlcyxBLmxpbmVzLEEucG9seWdvbnMsQS50cmlhbmdsZVN0cmlwcyxBLnBvaW50RGF0YSxBLmNlbGxEYXRhXX12YXIgc3Q9TXI7dmFyIFlyO2Z1bmN0aW9uIHlBKCl7cmV0dXJuIFlyfXZhciBxcjtmdW5jdGlvbiBhdCgpe3JldHVybiBxcn12YXIgS3I7ZnVuY3Rpb24gd0EoKXtyZXR1cm4gS3J9dmFyIHRlPW5ldyBNYXA7ZnVuY3Rpb24gV3IoKXtsZXQgQT13QSgpO3JldHVybiB0eXBlb2YgQT4idSImJihBPW51bGwpLEF9ZnVuY3Rpb24gSXQoKXtsZXQgQT15QSgpO3JldHVybiB0eXBlb2YgQT4idSImJihBPW5ldyBVUkwoIi9waXBlbGluZXMiLGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbikuaHJlZiksQX1mdW5jdGlvbiBEQSgpe2xldCBBPWF0KCk7cmV0dXJuIHR5cGVvZiBBPiJ1IiYmKEE9e30pLEF9YXN5bmMgZnVuY3Rpb24ganIoQSxlLHQpe2xldCByPUEsaT1BO2lmKHR5cGVvZiBBIT0ic3RyaW5nIiYmKHI9bmV3IFVSTChBLmhyZWYpLGk9ci5ocmVmKSx0ZS5oYXMoaSkpcmV0dXJuIHRlLmdldChpKTt7bGV0IG49YXdhaXQgWmUoQSxlPy50b1N0cmluZygpPz9JdCgpLHQ/P0RBKCkpO3JldHVybiB0ZS5zZXQoaSxuKSxufX1hc3luYyBmdW5jdGlvbiB2cihBLGUsdCxyLGkpe2lmKCFhd2FpdCBYZSgpKXtsZXQgdT0iV2ViQXNzZW1ibHkgU0lNRCBzdXBwb3J0IGlzIHJlcXVpcmVkIC0tIHBsZWFzZSB1cGRhdGUgeW91ciBicm93c2VyLiI7dGhyb3cgYWxlcnQodSksbmV3IEVycm9yKHUpfWxldCBuPWk/LndlYldvcmtlcj8/bnVsbDtpZihuPT09ITEpe2xldCB1PWF3YWl0IGpyKEEudG9TdHJpbmcoKSxpPy5waXBlbGluZUJhc2VVcmwsaT8ucGlwZWxpbmVRdWVyeVBhcmFtcz8/REEoKSk7cmV0dXJuIHJ0KHUsZSx0LHIpfWxldCBvPW4sZz1pPy5waXBlbGluZVdvcmtlclVybD8/V3IoKSxFPXR5cGVvZiBnIT0ic3RyaW5nIiYmdHlwZW9mIGc/LmhyZWY8InUiP2cuaHJlZjpnLHt3b3JrZXJQcm94eTpCLHdvcmtlcjpJfT1hd2FpdCBWZShvLEUsaT8ucGlwZWxpbmVRdWVyeVBhcmFtcz8/REEoKSk7bz1JO2xldCBzPVtdO3IhPW51bGwmJnIubGVuZ3RoPjAmJnIuZm9yRWFjaChmdW5jdGlvbih1KXtpZih1LnR5cGU9PT1wLkJpbmFyeVN0cmVhbSl7bGV0IGQ9dS5kYXRhLmRhdGE7cy5wdXNoKGQpfWVsc2UgaWYodS50eXBlPT09cC5CaW5hcnlGaWxlKXtsZXQgZD11LmRhdGEuZGF0YTtzLnB1c2goZCl9ZWxzZSBpZih1LnR5cGU9PT1wLkltYWdlKXtsZXQgZD11LmRhdGE7ZC5kYXRhIT09bnVsbCYmcy5wdXNoKC4uLm50KGQpKX1lbHNlIGlmKHUudHlwZT09PXAuTWVzaCl7bGV0IGQ9dS5kYXRhO3MucHVzaCguLi5vdChkKSl9ZWxzZSBpZih1LnR5cGU9PT1wLlBvbHlEYXRhKXtsZXQgZD11LmRhdGE7cy5wdXNoKC4uLnN0KGQpKX19KTtsZXQgYz1pPy5waXBlbGluZUJhc2VVcmw/P0l0KCksQz10eXBlb2YgYyE9InN0cmluZyImJnR5cGVvZiBjPy5ocmVmPCJ1Ij9jLmhyZWY6YyxsPXIhPW51bGw/R0EocixpdChzLGk/Lm5vQ29weSkpOm51bGwsUT1hd2FpdCBCLnJ1blBpcGVsaW5lKEEudG9TdHJpbmcoKSxDLGUsdCxsLGk/LnBpcGVsaW5lUXVlcnlQYXJhbXM/P0RBKCkpO3JldHVybntyZXR1cm5WYWx1ZTpRLnJldHVyblZhbHVlLHN0ZG91dDpRLnN0ZG91dCxzdGRlcnI6US5zdGRlcnIsb3V0cHV0czpRLm91dHB1dHMsd2ViV29ya2VyOm99fXZhciBpQT12cjt2YXIgX3I9bnVsbDtmdW5jdGlvbiBndCgpe3JldHVybiBfcn12YXIgcmUsenI9YGh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGl0ay13YXNtL2NvbXByZXNzLXN0cmluZ2lmeUAke1JBfS9kaXN0L3BpcGVsaW5lc2A7ZnVuY3Rpb24gVnMoQSl7cmU9QX1mdW5jdGlvbiBTQSgpe2lmKHR5cGVvZiByZTwidSIpcmV0dXJuIHJlO2xldCBBPXlBKCk7cmV0dXJuIHR5cGVvZiBBPCJ1Ij9BOnpyfXZhciBpZSxWcj1udWxsO2Z1bmN0aW9uIEN0KEEpe2llPUF9ZnVuY3Rpb24gaigpe2lmKHR5cGVvZiBpZTwidSIpcmV0dXJuIGllO2xldCBBPXdBKCk7cmV0dXJuIHR5cGVvZiBBPCJ1Ij9BOlZyfXZhciB2PW51bGw7YXN5bmMgZnVuY3Rpb24gQnQoKXtsZXQgQT1qKCksZT10eXBlb2YgQSE9InN0cmluZyImJnR5cGVvZiBBPy5ocmVmPCJ1Ij9BLmhyZWY6QTt2PWF3YWl0IHJBKGUpfWZ1bmN0aW9uIHJhKEEpe3Y9QX1hc3luYyBmdW5jdGlvbiBGQSgpe2lmKHYhPT1udWxsKXJldHVybiB2LnRlcm1pbmF0ZWQmJmF3YWl0IEJ0KCksdjtsZXQgQT1ndCgpO3JldHVybiBBIT09bnVsbD9BOihhd2FpdCBCdCgpLHYpfWFzeW5jIGZ1bmN0aW9uIFpyKEEsZT17fSl7bGV0IHQ9W3t0eXBlOnAuQmluYXJ5U3RyZWFtfV0scj1be3R5cGU6cC5CaW5hcnlTdHJlYW0sZGF0YTp7ZGF0YTpBfX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBvPSIwIjtpLnB1c2gobyksaS5wdXNoKCItLW1lbW9yeS1pbyIpLGUuc3RyaW5naWZ5JiZlLnN0cmluZ2lmeSYmaS5wdXNoKCItLXN0cmluZ2lmeSIpLGUuY29tcHJlc3Npb25MZXZlbCYmaS5wdXNoKCItLWNvbXByZXNzaW9uLWxldmVsIixlLmNvbXByZXNzaW9uTGV2ZWwudG9TdHJpbmcoKSksZS5kYXRhVXJsUHJlZml4JiZpLnB1c2goIi0tZGF0YS11cmwtcHJlZml4IixlLmRhdGFVcmxQcmVmaXgudG9TdHJpbmcoKSk7bGV0IGc9ImNvbXByZXNzLXN0cmluZ2lmeSIsRT1lPy53ZWJXb3JrZXI7RT09PXZvaWQgMCYmKEU9YXdhaXQgRkEoKSk7bGV0e3dlYldvcmtlcjpCLHJldHVyblZhbHVlOkksc3RkZXJyOnMsb3V0cHV0czpjfT1hd2FpdCBpQShnLGksdCxyLHtwaXBlbGluZUJhc2VVcmw6U0EoKSxwaXBlbGluZVdvcmtlclVybDpqKCksd2ViV29ya2VyOkUsbm9Db3B5OmU/Lm5vQ29weX0pO2lmKEkhPT0wJiZzIT09IiIpdGhyb3cgbmV3IEVycm9yKHMpO3JldHVybnt3ZWJXb3JrZXI6QixvdXRwdXQ6KGNbMF0/LmRhdGEpLmRhdGF9fXZhciBYcj1acjthc3luYyBmdW5jdGlvbiAkcihBLGU9e30pe2xldCB0PVt7dHlwZTpwLkJpbmFyeVN0cmVhbX1dLHI9W3t0eXBlOnAuQmluYXJ5U3RyZWFtLGRhdGE6e2RhdGE6QX19XSxpPVtdLG49IjAiO2kucHVzaChuKTtsZXQgbz0iMCI7aS5wdXNoKG8pLGkucHVzaCgiLS1tZW1vcnktaW8iKSxlLnBhcnNlU3RyaW5nJiZlLnBhcnNlU3RyaW5nJiZpLnB1c2goIi0tcGFyc2Utc3RyaW5nIik7bGV0IGc9InBhcnNlLXN0cmluZy1kZWNvbXByZXNzIixFPWU/LndlYldvcmtlcjtFPT09dm9pZCAwJiYoRT1hd2FpdCBGQSgpKTtsZXR7d2ViV29ya2VyOkIscmV0dXJuVmFsdWU6SSxzdGRlcnI6cyxvdXRwdXRzOmN9PWF3YWl0IGlBKGcsaSx0LHIse3BpcGVsaW5lQmFzZVVybDpTQSgpLHBpcGVsaW5lV29ya2VyVXJsOmooKSx3ZWJXb3JrZXI6RSxub0NvcHk6ZT8ubm9Db3B5fSk7aWYoSSE9PTAmJnMhPT0iIil0aHJvdyBuZXcgRXJyb3Iocyk7cmV0dXJue3dlYldvcmtlcjpCLG91dHB1dDooY1swXT8uZGF0YSkuZGF0YX19dmFyIEFpPSRyO3ZhciBFdD0nZGF0YTp0ZXh0L2phdmFzY3JpcHQ7Y2hhcnNldD11dGYtOCx2YXIgdHQ9T2JqZWN0LmRlZmluZVByb3BlcnR5O3ZhciBldD0oQSxJKT0+e2Zvcih2YXIgdCBpbiBJKXR0KEEsdCx7Z2V0OklbdF0sZW51bWVyYWJsZTohMH0pfTt2YXIgdkE9U3ltYm9sKCJDb21saW5rLnByb3h5IiksZ3Q9U3ltYm9sKCJDb21saW5rLmVuZHBvaW50IikscnQ9U3ltYm9sKCJDb21saW5rLnJlbGVhc2VQcm94eSIpLG1BPVN5bWJvbCgiQ29tbGluay5maW5hbGl6ZXIiKSxlQT1TeW1ib2woIkNvbWxpbmsudGhyb3duIiksJEE9QT0+dHlwZW9mIEE9PSJvYmplY3QiJiZBIT09bnVsbHx8dHlwZW9mIEE9PSJmdW5jdGlvbiIsaXQ9e2NhbkhhbmRsZTpBPT4kQShBKSYmQVt2QV0sc2VyaWFsaXplKEEpe2xldHtwb3J0MTpJLHBvcnQyOnR9PW5ldyBNZXNzYWdlQ2hhbm5lbDtyZXR1cm4gb0EoQSxJKSxbdCxbdF1dfSxkZXNlcmlhbGl6ZShBKXtyZXR1cm4gQS5zdGFydCgpLHN0KEEpfX0sb3Q9e2NhbkhhbmRsZTpBPT4kQShBKSYmZUEgaW4gQSxzZXJpYWxpemUoe3ZhbHVlOkF9KXtsZXQgSTtyZXR1cm4gQSBpbnN0YW5jZW9mIEVycm9yP0k9e2lzRXJyb3I6ITAsdmFsdWU6e21lc3NhZ2U6QS5tZXNzYWdlLG5hbWU6QS5uYW1lLHN0YWNrOkEuc3RhY2t9fTpJPXtpc0Vycm9yOiExLHZhbHVlOkF9LFtJLFtdXX0sZGVzZXJpYWxpemUoQSl7dGhyb3cgQS5pc0Vycm9yP09iamVjdC5hc3NpZ24obmV3IEVycm9yKEEudmFsdWUubWVzc2FnZSksQS52YWx1ZSk6QS52YWx1ZX19LEFJPW5ldyBNYXAoW1sicHJveHkiLGl0XSxbInRocm93IixvdF1dKTtmdW5jdGlvbiBCdChBLEkpe2ZvcihsZXQgdCBvZiBBKWlmKEk9PT10fHx0PT09IioifHx0IGluc3RhbmNlb2YgUmVnRXhwJiZ0LnRlc3QoSSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gb0EoQSxJPWdsb2JhbFRoaXMsdD1bIioiXSl7SS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiBlKGcpe2lmKCFnfHwhZy5kYXRhKXJldHVybjtpZighQnQodCxnLm9yaWdpbikpe2NvbnNvbGUud2FybihgSW52YWxpZCBvcmlnaW4gXCcke2cub3JpZ2lufVwnIGZvciBjb21saW5rIHByb3h5YCk7cmV0dXJufWxldHtpZDpyLHR5cGU6aSxwYXRoOnN9PU9iamVjdC5hc3NpZ24oe3BhdGg6W119LGcuZGF0YSksYT0oZy5kYXRhLmFyZ3VtZW50TGlzdHx8W10pLm1hcChiKSxuO3RyeXtsZXQgQz1zLnNsaWNlKDAsLTEpLnJlZHVjZSgoZixRKT0+ZltRXSxBKSxvPXMucmVkdWNlKChmLFEpPT5mW1FdLEEpO3N3aXRjaChpKXtjYXNlIkdFVCI6bj1vO2JyZWFrO2Nhc2UiU0VUIjpDW3Muc2xpY2UoLTEpWzBdXT1iKGcuZGF0YS52YWx1ZSksbj0hMDticmVhaztjYXNlIkFQUExZIjpuPW8uYXBwbHkoQyxhKTticmVhaztjYXNlIkNPTlNUUlVDVCI6e2xldCBmPW5ldyBvKC4uLmEpO249YXQoZil9YnJlYWs7Y2FzZSJFTkRQT0lOVCI6e2xldHtwb3J0MTpmLHBvcnQyOlF9PW5ldyBNZXNzYWdlQ2hhbm5lbDtvQShBLFEpLG49U0EoZixbZl0pfWJyZWFrO2Nhc2UiUkVMRUFTRSI6bj12b2lkIDA7YnJlYWs7ZGVmYXVsdDpyZXR1cm59fWNhdGNoKEMpe249e3ZhbHVlOkMsW2VBXTowfX1Qcm9taXNlLnJlc29sdmUobikuY2F0Y2goQz0+KHt2YWx1ZTpDLFtlQV06MH0pKS50aGVuKEM9PntsZXRbbyxmXT1pQShDKTtJLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSx7aWQ6cn0pLGYpLGk9PT0iUkVMRUFTRSImJihJLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGUpLElJKEkpLG1BIGluIEEmJnR5cGVvZiBBW21BXT09ImZ1bmN0aW9uIiYmQVttQV0oKSl9KS5jYXRjaChDPT57bGV0W28sZl09aUEoe3ZhbHVlOm5ldyBUeXBlRXJyb3IoIlVuc2VyaWFsaXphYmxlIHJldHVybiB2YWx1ZSIpLFtlQV06MH0pO0kucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG8pLHtpZDpyfSksZil9KX0pLEkuc3RhcnQmJkkuc3RhcnQoKX1mdW5jdGlvbiBDdChBKXtyZXR1cm4gQS5jb25zdHJ1Y3Rvci5uYW1lPT09Ik1lc3NhZ2VQb3J0In1mdW5jdGlvbiBJSShBKXtDdChBKSYmQS5jbG9zZSgpfWZ1bmN0aW9uIHN0KEEsSSl7cmV0dXJuIHBBKEEsW10sSSl9ZnVuY3Rpb24gdEEoQSl7aWYoQSl0aHJvdyBuZXcgRXJyb3IoIlByb3h5IGhhcyBiZWVuIHJlbGVhc2VkIGFuZCBpcyBub3QgdXNlYWJsZSIpfWZ1bmN0aW9uIHRJKEEpe3JldHVybiBNKEEse3R5cGU6IlJFTEVBU0UifSkudGhlbigoKT0+e0lJKEEpfSl9dmFyIGdBPW5ldyBXZWFrTWFwLHJBPSJGaW5hbGl6YXRpb25SZWdpc3RyeSJpbiBnbG9iYWxUaGlzJiZuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoQT0+e2xldCBJPShnQS5nZXQoQSl8fDApLTE7Z0Euc2V0KEEsSSksST09PTAmJnRJKEEpfSk7ZnVuY3Rpb24gUXQoQSxJKXtsZXQgdD0oZ0EuZ2V0KEkpfHwwKSsxO2dBLnNldChJLHQpLHJBJiZyQS5yZWdpc3RlcihBLEksQSl9ZnVuY3Rpb24gbnQoQSl7ckEmJnJBLnVucmVnaXN0ZXIoQSl9ZnVuY3Rpb24gcEEoQSxJPVtdLHQ9ZnVuY3Rpb24oKXt9KXtsZXQgZT0hMSxnPW5ldyBQcm94eSh0LHtnZXQocixpKXtpZih0QShlKSxpPT09cnQpcmV0dXJuKCk9PntudChnKSx0SShBKSxlPSEwfTtpZihpPT09InRoZW4iKXtpZihJLmxlbmd0aD09PTApcmV0dXJue3RoZW46KCk9Pmd9O2xldCBzPU0oQSx7dHlwZToiR0VUIixwYXRoOkkubWFwKGE9PmEudG9TdHJpbmcoKSl9KS50aGVuKGIpO3JldHVybiBzLnRoZW4uYmluZChzKX1yZXR1cm4gcEEoQSxbLi4uSSxpXSl9LHNldChyLGkscyl7dEEoZSk7bGV0W2Esbl09aUEocyk7cmV0dXJuIE0oQSx7dHlwZToiU0VUIixwYXRoOlsuLi5JLGldLm1hcChDPT5DLnRvU3RyaW5nKCkpLHZhbHVlOmF9LG4pLnRoZW4oYil9LGFwcGx5KHIsaSxzKXt0QShlKTtsZXQgYT1JW0kubGVuZ3RoLTFdO2lmKGE9PT1ndClyZXR1cm4gTShBLHt0eXBlOiJFTkRQT0lOVCJ9KS50aGVuKGIpO2lmKGE9PT0iYmluZCIpcmV0dXJuIHBBKEEsSS5zbGljZSgwLC0xKSk7bGV0W24sQ109X0Eocyk7cmV0dXJuIE0oQSx7dHlwZToiQVBQTFkiLHBhdGg6SS5tYXAobz0+by50b1N0cmluZygpKSxhcmd1bWVudExpc3Q6bn0sQykudGhlbihiKX0sY29uc3RydWN0KHIsaSl7dEEoZSk7bGV0W3MsYV09X0EoaSk7cmV0dXJuIE0oQSx7dHlwZToiQ09OU1RSVUNUIixwYXRoOkkubWFwKG49Pm4udG9TdHJpbmcoKSksYXJndW1lbnRMaXN0OnN9LGEpLnRoZW4oYil9fSk7cmV0dXJuIFF0KGcsQSksZ31mdW5jdGlvbiBFdChBKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxBKX1mdW5jdGlvbiBfQShBKXtsZXQgST1BLm1hcChpQSk7cmV0dXJuW0kubWFwKHQ9PnRbMF0pLEV0KEkubWFwKHQ9PnRbMV0pKV19dmFyIGVJPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIFNBKEEsSSl7cmV0dXJuIGVJLnNldChBLEkpLEF9ZnVuY3Rpb24gYXQoQSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oQSx7W3ZBXTohMH0pfWZ1bmN0aW9uIGlBKEEpe2ZvcihsZXRbSSx0XW9mIEFJKWlmKHQuY2FuSGFuZGxlKEEpKXtsZXRbZSxnXT10LnNlcmlhbGl6ZShBKTtyZXR1cm5be3R5cGU6IkhBTkRMRVIiLG5hbWU6SSx2YWx1ZTplfSxnXX1yZXR1cm5be3R5cGU6IlJBVyIsdmFsdWU6QX0sZUkuZ2V0KEEpfHxbXV19ZnVuY3Rpb24gYihBKXtzd2l0Y2goQS50eXBlKXtjYXNlIkhBTkRMRVIiOnJldHVybiBBSS5nZXQoQS5uYW1lKS5kZXNlcmlhbGl6ZShBLnZhbHVlKTtjYXNlIlJBVyI6cmV0dXJuIEEudmFsdWV9fWZ1bmN0aW9uIE0oQSxJLHQpe3JldHVybiBuZXcgUHJvbWlzZShlPT57bGV0IGc9Y3QoKTtBLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uIHIoaSl7IWkuZGF0YXx8IWkuZGF0YS5pZHx8aS5kYXRhLmlkIT09Z3x8KEEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsciksZShpLmRhdGEpKX0pLEEuc3RhcnQmJkEuc3RhcnQoKSxBLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oe2lkOmd9LEkpLHQpfSl9ZnVuY3Rpb24gY3QoKXtyZXR1cm4gbmV3IEFycmF5KDQpLmZpbGwoMCkubWFwKCgpPT5NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLnRvU3RyaW5nKDE2KSkuam9pbigiLSIpfWZ1bmN0aW9uIFcoQSxJKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gQS5hcHBseShJLGFyZ3VtZW50cyl9fXZhcnt0b1N0cmluZzpmdH09T2JqZWN0LnByb3RvdHlwZSx7Z2V0UHJvdG90eXBlT2Y6TkF9PU9iamVjdCxDQT0oQT0+ST0+e2xldCB0PWZ0LmNhbGwoSSk7cmV0dXJuIEFbdF18fChBW3RdPXQuc2xpY2UoOCwtMSkudG9Mb3dlckNhc2UoKSl9KShPYmplY3QuY3JlYXRlKG51bGwpKSxVPUE9PihBPUEudG9Mb3dlckNhc2UoKSxJPT5DQShJKT09PUEpLHNBPUE9Pkk9PnR5cGVvZiBJPT09QSx7aXNBcnJheTpxfT1BcnJheSxaPXNBKCJ1bmRlZmluZWQiKTtmdW5jdGlvbiBsdChBKXtyZXR1cm4gQSE9PW51bGwmJiFaKEEpJiZBLmNvbnN0cnVjdG9yIT09bnVsbCYmIVooQS5jb25zdHJ1Y3RvcikmJkYoQS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcikmJkEuY29uc3RydWN0b3IuaXNCdWZmZXIoQSl9dmFyIG9JPVUoIkFycmF5QnVmZmVyIik7ZnVuY3Rpb24gRHQoQSl7bGV0IEk7cmV0dXJuIHR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJkFycmF5QnVmZmVyLmlzVmlldz9JPUFycmF5QnVmZmVyLmlzVmlldyhBKTpJPUEmJkEuYnVmZmVyJiZvSShBLmJ1ZmZlciksSX12YXIgdXQ9c0EoInN0cmluZyIpLEY9c0EoImZ1bmN0aW9uIiksQkk9c0EoIm51bWJlciIpLFFBPUE9PkEhPT1udWxsJiZ0eXBlb2YgQT09Im9iamVjdCIsaHQ9QT0+QT09PSEwfHxBPT09ITEsQkE9QT0+e2lmKENBKEEpIT09Im9iamVjdCIpcmV0dXJuITE7bGV0IEk9TkEoQSk7cmV0dXJuKEk9PT1udWxsfHxJPT09T2JqZWN0LnByb3RvdHlwZXx8T2JqZWN0LmdldFByb3RvdHlwZU9mKEkpPT09bnVsbCkmJiEoU3ltYm9sLnRvU3RyaW5nVGFnIGluIEEpJiYhKFN5bWJvbC5pdGVyYXRvciBpbiBBKX0sZHQ9VSgiRGF0ZSIpLHl0PVUoIkZpbGUiKSx3dD1VKCJCbG9iIiksbXQ9VSgiRmlsZUxpc3QiKSxwdD1BPT5RQShBKSYmRihBLnBpcGUpLFN0PUE9PntsZXQgSTtyZXR1cm4gQSYmKHR5cGVvZiBGb3JtRGF0YT09ImZ1bmN0aW9uIiYmQSBpbnN0YW5jZW9mIEZvcm1EYXRhfHxGKEEuYXBwZW5kKSYmKChJPUNBKEEpKT09PSJmb3JtZGF0YSJ8fEk9PT0ib2JqZWN0IiYmRihBLnRvU3RyaW5nKSYmQS50b1N0cmluZygpPT09IltvYmplY3QgRm9ybURhdGFdIikpfSxGdD1VKCJVUkxTZWFyY2hQYXJhbXMiKSxSdD1BPT5BLnRyaW0/QS50cmltKCk6QS5yZXBsYWNlKC9eW1xcc1xcdUZFRkZcXHhBMF0rfFtcXHNcXHVGRUZGXFx4QTBdKyQvZywiIik7ZnVuY3Rpb24gVihBLEkse2FsbE93bktleXM6dD0hMX09e30pe2lmKEE9PT1udWxsfHx0eXBlb2YgQT4idSIpcmV0dXJuO2xldCBlLGc7aWYodHlwZW9mIEEhPSJvYmplY3QiJiYoQT1bQV0pLHEoQSkpZm9yKGU9MCxnPUEubGVuZ3RoO2U8ZztlKyspSS5jYWxsKG51bGwsQVtlXSxlLEEpO2Vsc2V7bGV0IHI9dD9PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhBKTpPYmplY3Qua2V5cyhBKSxpPXIubGVuZ3RoLHM7Zm9yKGU9MDtlPGk7ZSsrKXM9cltlXSxJLmNhbGwobnVsbCxBW3NdLHMsQSl9fWZ1bmN0aW9uIENJKEEsSSl7ST1JLnRvTG93ZXJDYXNlKCk7bGV0IHQ9T2JqZWN0LmtleXMoQSksZT10Lmxlbmd0aCxnO2Zvcig7ZS0tID4wOylpZihnPXRbZV0sST09PWcudG9Mb3dlckNhc2UoKSlyZXR1cm4gZztyZXR1cm4gbnVsbH12YXIgc0k9dHlwZW9mIGdsb2JhbFRoaXM8InUiP2dsb2JhbFRoaXM6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Omdsb2JhbCxRST1BPT4hWihBKSYmQSE9PXNJO2Z1bmN0aW9uIFJBKCl7bGV0e2Nhc2VsZXNzOkF9PVFJKHRoaXMpJiZ0aGlzfHx7fSxJPXt9LHQ9KGUsZyk9PntsZXQgcj1BJiZDSShJLGcpfHxnO0JBKElbcl0pJiZCQShlKT9JW3JdPVJBKElbcl0sZSk6QkEoZSk/SVtyXT1SQSh7fSxlKTpxKGUpP0lbcl09ZS5zbGljZSgpOklbcl09ZX07Zm9yKGxldCBlPTAsZz1hcmd1bWVudHMubGVuZ3RoO2U8ZztlKyspYXJndW1lbnRzW2VdJiZWKGFyZ3VtZW50c1tlXSx0KTtyZXR1cm4gSX12YXIgTnQ9KEEsSSx0LHthbGxPd25LZXlzOmV9PXt9KT0+KFYoSSwoZyxyKT0+e3QmJkYoZyk/QVtyXT1XKGcsdCk6QVtyXT1nfSx7YWxsT3duS2V5czplfSksQSksVXQ9QT0+KEEuY2hhckNvZGVBdCgwKT09PTY1Mjc5JiYoQT1BLnNsaWNlKDEpKSxBKSxHdD0oQSxJLHQsZSk9PntBLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEkucHJvdG90eXBlLGUpLEEucHJvdG90eXBlLmNvbnN0cnVjdG9yPUEsT2JqZWN0LmRlZmluZVByb3BlcnR5KEEsInN1cGVyIix7dmFsdWU6SS5wcm90b3R5cGV9KSx0JiZPYmplY3QuYXNzaWduKEEucHJvdG90eXBlLHQpfSxrdD0oQSxJLHQsZSk9PntsZXQgZyxyLGkscz17fTtpZihJPUl8fHt9LEE9PW51bGwpcmV0dXJuIEk7ZG97Zm9yKGc9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoQSkscj1nLmxlbmd0aDtyLS0gPjA7KWk9Z1tyXSwoIWV8fGUoaSxBLEkpKSYmIXNbaV0mJihJW2ldPUFbaV0sc1tpXT0hMCk7QT10IT09ITEmJk5BKEEpfXdoaWxlKEEmJighdHx8dChBLEkpKSYmQSE9PU9iamVjdC5wcm90b3R5cGUpO3JldHVybiBJfSxMdD0oQSxJLHQpPT57QT1TdHJpbmcoQSksKHQ9PT12b2lkIDB8fHQ+QS5sZW5ndGgpJiYodD1BLmxlbmd0aCksdC09SS5sZW5ndGg7bGV0IGU9QS5pbmRleE9mKEksdCk7cmV0dXJuIGUhPT0tMSYmZT09PXR9LEp0PUE9PntpZighQSlyZXR1cm4gbnVsbDtpZihxKEEpKXJldHVybiBBO2xldCBJPUEubGVuZ3RoO2lmKCFCSShJKSlyZXR1cm4gbnVsbDtsZXQgdD1uZXcgQXJyYXkoSSk7Zm9yKDtJLS0gPjA7KXRbSV09QVtJXTtyZXR1cm4gdH0sSHQ9KEE9Pkk9PkEmJkkgaW5zdGFuY2VvZiBBKSh0eXBlb2YgVWludDhBcnJheTwidSImJk5BKFVpbnQ4QXJyYXkpKSxZdD0oQSxJKT0+e2xldCBlPShBJiZBW1N5bWJvbC5pdGVyYXRvcl0pLmNhbGwoQSksZztmb3IoOyhnPWUubmV4dCgpKSYmIWcuZG9uZTspe2xldCByPWcudmFsdWU7SS5jYWxsKEEsclswXSxyWzFdKX19LGJ0PShBLEkpPT57bGV0IHQsZT1bXTtmb3IoOyh0PUEuZXhlYyhJKSkhPT1udWxsOyllLnB1c2godCk7cmV0dXJuIGV9LE10PVUoIkhUTUxGb3JtRWxlbWVudCIpLHF0PUE9PkEudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bLV9cXHNdKFthLXpcXGRdKShcXHcqKS9nLGZ1bmN0aW9uKHQsZSxnKXtyZXR1cm4gZS50b1VwcGVyQ2FzZSgpK2d9KSxyST0oKHtoYXNPd25Qcm9wZXJ0eTpBfSk9PihJLHQpPT5BLmNhbGwoSSx0KSkoT2JqZWN0LnByb3RvdHlwZSksS3Q9VSgiUmVnRXhwIiksbkk9KEEsSSk9PntsZXQgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhBKSxlPXt9O1YodCwoZyxyKT0+e2xldCBpOyhpPUkoZyxyLEEpKSE9PSExJiYoZVtyXT1pfHxnKX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEEsZSl9LE90PUE9PntuSShBLChJLHQpPT57aWYoRihBKSYmWyJhcmd1bWVudHMiLCJjYWxsZXIiLCJjYWxsZWUiXS5pbmRleE9mKHQpIT09LTEpcmV0dXJuITE7bGV0IGU9QVt0XTtpZihGKGUpKXtpZihJLmVudW1lcmFibGU9ITEsIndyaXRhYmxlImluIEkpe0kud3JpdGFibGU9ITE7cmV0dXJufUkuc2V0fHwoSS5zZXQ9KCk9Pnt0aHJvdyBFcnJvcigiQ2FuIG5vdCByZXdyaXRlIHJlYWQtb25seSBtZXRob2QgXCciK3QrIlwnIil9KX19KX0sVHQ9KEEsSSk9PntsZXQgdD17fSxlPWc9PntnLmZvckVhY2gocj0+e3Rbcl09ITB9KX07cmV0dXJuIHEoQSk/ZShBKTplKFN0cmluZyhBKS5zcGxpdChJKSksdH0seHQ9KCk9Pnt9LFB0PShBLEkpPT4oQT0rQSxOdW1iZXIuaXNGaW5pdGUoQSk/QTpJKSxGQT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiLGlJPSIwMTIzNDU2Nzg5IixFST17RElHSVQ6aUksQUxQSEE6RkEsQUxQSEFfRElHSVQ6RkErRkEudG9VcHBlckNhc2UoKStpSX0sanQ9KEE9MTYsST1FSS5BTFBIQV9ESUdJVCk9PntsZXQgdD0iIix7bGVuZ3RoOmV9PUk7Zm9yKDtBLS07KXQrPUlbTWF0aC5yYW5kb20oKSplfDBdO3JldHVybiB0fTtmdW5jdGlvbiBXdChBKXtyZXR1cm4hIShBJiZGKEEuYXBwZW5kKSYmQVtTeW1ib2wudG9TdHJpbmdUYWddPT09IkZvcm1EYXRhIiYmQVtTeW1ib2wuaXRlcmF0b3JdKX12YXIgWnQ9QT0+e2xldCBJPW5ldyBBcnJheSgxMCksdD0oZSxnKT0+e2lmKFFBKGUpKXtpZihJLmluZGV4T2YoZSk+PTApcmV0dXJuO2lmKCEoInRvSlNPTiJpbiBlKSl7SVtnXT1lO2xldCByPXEoZSk/W106e307cmV0dXJuIFYoZSwoaSxzKT0+e2xldCBhPXQoaSxnKzEpOyFaKGEpJiYocltzXT1hKX0pLElbZ109dm9pZCAwLHJ9fXJldHVybiBlfTtyZXR1cm4gdChBLDApfSxWdD1VKCJBc3luY0Z1bmN0aW9uIiksWHQ9QT0+QSYmKFFBKEEpfHxGKEEpKSYmRihBLnRoZW4pJiZGKEEuY2F0Y2gpLEI9e2lzQXJyYXk6cSxpc0FycmF5QnVmZmVyOm9JLGlzQnVmZmVyOmx0LGlzRm9ybURhdGE6U3QsaXNBcnJheUJ1ZmZlclZpZXc6RHQsaXNTdHJpbmc6dXQsaXNOdW1iZXI6QkksaXNCb29sZWFuOmh0LGlzT2JqZWN0OlFBLGlzUGxhaW5PYmplY3Q6QkEsaXNVbmRlZmluZWQ6Wixpc0RhdGU6ZHQsaXNGaWxlOnl0LGlzQmxvYjp3dCxpc1JlZ0V4cDpLdCxpc0Z1bmN0aW9uOkYsaXNTdHJlYW06cHQsaXNVUkxTZWFyY2hQYXJhbXM6RnQsaXNUeXBlZEFycmF5Okh0LGlzRmlsZUxpc3Q6bXQsZm9yRWFjaDpWLG1lcmdlOlJBLGV4dGVuZDpOdCx0cmltOlJ0LHN0cmlwQk9NOlV0LGluaGVyaXRzOkd0LHRvRmxhdE9iamVjdDprdCxraW5kT2Y6Q0Esa2luZE9mVGVzdDpVLGVuZHNXaXRoOkx0LHRvQXJyYXk6SnQsZm9yRWFjaEVudHJ5Oll0LG1hdGNoQWxsOmJ0LGlzSFRNTEZvcm06TXQsaGFzT3duUHJvcGVydHk6ckksaGFzT3duUHJvcDpySSxyZWR1Y2VEZXNjcmlwdG9yczpuSSxmcmVlemVNZXRob2RzOk90LHRvT2JqZWN0U2V0OlR0LHRvQ2FtZWxDYXNlOnF0LG5vb3A6eHQsdG9GaW5pdGVOdW1iZXI6UHQsZmluZEtleTpDSSxnbG9iYWw6c0ksaXNDb250ZXh0RGVmaW5lZDpRSSxBTFBIQUJFVDpFSSxnZW5lcmF0ZVN0cmluZzpqdCxpc1NwZWNDb21wbGlhbnRGb3JtOld0LHRvSlNPTk9iamVjdDpadCxpc0FzeW5jRm46VnQsaXNUaGVuYWJsZTpYdH07ZnVuY3Rpb24gSyhBLEksdCxlLGcpe0Vycm9yLmNhbGwodGhpcyksRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U/RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcyx0aGlzLmNvbnN0cnVjdG9yKTp0aGlzLnN0YWNrPW5ldyBFcnJvcigpLnN0YWNrLHRoaXMubWVzc2FnZT1BLHRoaXMubmFtZT0iQXhpb3NFcnJvciIsSSYmKHRoaXMuY29kZT1JKSx0JiYodGhpcy5jb25maWc9dCksZSYmKHRoaXMucmVxdWVzdD1lKSxnJiYodGhpcy5yZXNwb25zZT1nKX1CLmluaGVyaXRzKEssRXJyb3Ise3RvSlNPTjpmdW5jdGlvbigpe3JldHVybnttZXNzYWdlOnRoaXMubWVzc2FnZSxuYW1lOnRoaXMubmFtZSxkZXNjcmlwdGlvbjp0aGlzLmRlc2NyaXB0aW9uLG51bWJlcjp0aGlzLm51bWJlcixmaWxlTmFtZTp0aGlzLmZpbGVOYW1lLGxpbmVOdW1iZXI6dGhpcy5saW5lTnVtYmVyLGNvbHVtbk51bWJlcjp0aGlzLmNvbHVtbk51bWJlcixzdGFjazp0aGlzLnN0YWNrLGNvbmZpZzpCLnRvSlNPTk9iamVjdCh0aGlzLmNvbmZpZyksY29kZTp0aGlzLmNvZGUsc3RhdHVzOnRoaXMucmVzcG9uc2UmJnRoaXMucmVzcG9uc2Uuc3RhdHVzP3RoaXMucmVzcG9uc2Uuc3RhdHVzOm51bGx9fX0pO3ZhciBhST1LLnByb3RvdHlwZSxjST17fTtbIkVSUl9CQURfT1BUSU9OX1ZBTFVFIiwiRVJSX0JBRF9PUFRJT04iLCJFQ09OTkFCT1JURUQiLCJFVElNRURPVVQiLCJFUlJfTkVUV09SSyIsIkVSUl9GUl9UT09fTUFOWV9SRURJUkVDVFMiLCJFUlJfREVQUkVDQVRFRCIsIkVSUl9CQURfUkVTUE9OU0UiLCJFUlJfQkFEX1JFUVVFU1QiLCJFUlJfQ0FOQ0VMRUQiLCJFUlJfTk9UX1NVUFBPUlQiLCJFUlJfSU5WQUxJRF9VUkwiXS5mb3JFYWNoKEE9PntjSVtBXT17dmFsdWU6QX19KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhLLGNJKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYUksImlzQXhpb3NFcnJvciIse3ZhbHVlOiEwfSk7Sy5mcm9tPShBLEksdCxlLGcscik9PntsZXQgaT1PYmplY3QuY3JlYXRlKGFJKTtyZXR1cm4gQi50b0ZsYXRPYmplY3QoQSxpLGZ1bmN0aW9uKGEpe3JldHVybiBhIT09RXJyb3IucHJvdG90eXBlfSxzPT5zIT09ImlzQXhpb3NFcnJvciIpLEsuY2FsbChpLEEubWVzc2FnZSxJLHQsZSxnKSxpLmNhdXNlPUEsaS5uYW1lPUEubmFtZSxyJiZPYmplY3QuYXNzaWduKGksciksaX07dmFyIGw9Szt2YXIgbkE9bnVsbDtmdW5jdGlvbiBVQShBKXtyZXR1cm4gQi5pc1BsYWluT2JqZWN0KEEpfHxCLmlzQXJyYXkoQSl9ZnVuY3Rpb24gbEkoQSl7cmV0dXJuIEIuZW5kc1dpdGgoQSwiW10iKT9BLnNsaWNlKDAsLTIpOkF9ZnVuY3Rpb24gZkkoQSxJLHQpe3JldHVybiBBP0EuY29uY2F0KEkpLm1hcChmdW5jdGlvbihnLHIpe3JldHVybiBnPWxJKGcpLCF0JiZyPyJbIitnKyJdIjpnfSkuam9pbih0PyIuIjoiIik6SX1mdW5jdGlvbiB6dChBKXtyZXR1cm4gQi5pc0FycmF5KEEpJiYhQS5zb21lKFVBKX12YXIgX3Q9Qi50b0ZsYXRPYmplY3QoQix7fSxudWxsLGZ1bmN0aW9uKEkpe3JldHVybi9eaXNbQS1aXS8udGVzdChJKX0pO2Z1bmN0aW9uIHZ0KEEsSSx0KXtpZighQi5pc09iamVjdChBKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ0YXJnZXQgbXVzdCBiZSBhbiBvYmplY3QiKTtJPUl8fG5ldyhuQXx8Rm9ybURhdGEpLHQ9Qi50b0ZsYXRPYmplY3QodCx7bWV0YVRva2VuczohMCxkb3RzOiExLGluZGV4ZXM6ITF9LCExLGZ1bmN0aW9uKGMsdSl7cmV0dXJuIUIuaXNVbmRlZmluZWQodVtjXSl9KTtsZXQgZT10Lm1ldGFUb2tlbnMsZz10LnZpc2l0b3J8fEMscj10LmRvdHMsaT10LmluZGV4ZXMsYT0odC5CbG9ifHx0eXBlb2YgQmxvYjwidSImJkJsb2IpJiZCLmlzU3BlY0NvbXBsaWFudEZvcm0oSSk7aWYoIUIuaXNGdW5jdGlvbihnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ2aXNpdG9yIG11c3QgYmUgYSBmdW5jdGlvbiIpO2Z1bmN0aW9uIG4oRSl7aWYoRT09PW51bGwpcmV0dXJuIiI7aWYoQi5pc0RhdGUoRSkpcmV0dXJuIEUudG9JU09TdHJpbmcoKTtpZighYSYmQi5pc0Jsb2IoRSkpdGhyb3cgbmV3IGwoIkJsb2IgaXMgbm90IHN1cHBvcnRlZC4gVXNlIGEgQnVmZmVyIGluc3RlYWQuIik7cmV0dXJuIEIuaXNBcnJheUJ1ZmZlcihFKXx8Qi5pc1R5cGVkQXJyYXkoRSk/YSYmdHlwZW9mIEJsb2I9PSJmdW5jdGlvbiI/bmV3IEJsb2IoW0VdKTpCdWZmZXIuZnJvbShFKTpFfWZ1bmN0aW9uIEMoRSxjLHUpe2xldCBkPUU7aWYoRSYmIXUmJnR5cGVvZiBFPT0ib2JqZWN0Iil7aWYoQi5lbmRzV2l0aChjLCJ7fSIpKWM9ZT9jOmMuc2xpY2UoMCwtMiksRT1KU09OLnN0cmluZ2lmeShFKTtlbHNlIGlmKEIuaXNBcnJheShFKSYmenQoRSl8fChCLmlzRmlsZUxpc3QoRSl8fEIuZW5kc1dpdGgoYywiW10iKSkmJihkPUIudG9BcnJheShFKSkpcmV0dXJuIGM9bEkoYyksZC5mb3JFYWNoKGZ1bmN0aW9uKE4sSXQpeyEoQi5pc1VuZGVmaW5lZChOKXx8Tj09PW51bGwpJiZJLmFwcGVuZChpPT09ITA/ZkkoW2NdLEl0LHIpOmk9PT1udWxsP2M6YysiW10iLG4oTikpfSksITF9cmV0dXJuIFVBKEUpPyEwOihJLmFwcGVuZChmSSh1LGMsciksbihFKSksITEpfWxldCBvPVtdLGY9T2JqZWN0LmFzc2lnbihfdCx7ZGVmYXVsdFZpc2l0b3I6Qyxjb252ZXJ0VmFsdWU6bixpc1Zpc2l0YWJsZTpVQX0pO2Z1bmN0aW9uIFEoRSxjKXtpZighQi5pc1VuZGVmaW5lZChFKSl7aWYoby5pbmRleE9mKEUpIT09LTEpdGhyb3cgRXJyb3IoIkNpcmN1bGFyIHJlZmVyZW5jZSBkZXRlY3RlZCBpbiAiK2Muam9pbigiLiIpKTtvLnB1c2goRSksQi5mb3JFYWNoKEUsZnVuY3Rpb24oZCxSKXsoIShCLmlzVW5kZWZpbmVkKGQpfHxkPT09bnVsbCkmJmcuY2FsbChJLGQsQi5pc1N0cmluZyhSKT9SLnRyaW0oKTpSLGMsZikpPT09ITAmJlEoZCxjP2MuY29uY2F0KFIpOltSXSl9KSxvLnBvcCgpfX1pZighQi5pc09iamVjdChBKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJkYXRhIG11c3QgYmUgYW4gb2JqZWN0Iik7cmV0dXJuIFEoQSksSX12YXIgTD12dDtmdW5jdGlvbiBESShBKXtsZXQgST17IiEiOiIlMjUyMSIsIlwnIjoiJTI1MjciLCIoIjoiJTI1MjgiLCIpIjoiJTI1MjkiLCJ+IjoiJTI1N0UiLCIlMjUyMCI6IisiLCIlMjUwMCI6IlxcMCJ9O3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoQSkucmVwbGFjZSgvWyFcJygpfl18JTI1MjB8JTI1MDAvZyxmdW5jdGlvbihlKXtyZXR1cm4gSVtlXX0pfWZ1bmN0aW9uIHVJKEEsSSl7dGhpcy5fcGFpcnM9W10sQSYmTChBLHRoaXMsSSl9dmFyIGhJPXVJLnByb3RvdHlwZTtoSS5hcHBlbmQ9ZnVuY3Rpb24oSSx0KXt0aGlzLl9wYWlycy5wdXNoKFtJLHRdKX07aEkudG9TdHJpbmc9ZnVuY3Rpb24oSSl7bGV0IHQ9ST9mdW5jdGlvbihlKXtyZXR1cm4gSS5jYWxsKHRoaXMsZSxESSl9OkRJO3JldHVybiB0aGlzLl9wYWlycy5tYXAoZnVuY3Rpb24oZyl7cmV0dXJuIHQoZ1swXSkrIj0iK3QoZ1sxXSl9LCIiKS5qb2luKCImIil9O3ZhciBFQT11STtmdW5jdGlvbiAkdChBKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEEpLnJlcGxhY2UoLyUyNTNBL2dpLCI6IikucmVwbGFjZSgvJTI1MjQvZywiJCIpLnJlcGxhY2UoLyUyNTJDL2dpLCIsIikucmVwbGFjZSgvJTI1MjAvZywiKyIpLnJlcGxhY2UoLyUyNTVCL2dpLCJbIikucmVwbGFjZSgvJTI1NUQvZ2ksIl0iKX1mdW5jdGlvbiBYKEEsSSx0KXtpZighSSlyZXR1cm4gQTtsZXQgZT10JiZ0LmVuY29kZXx8JHQsZz10JiZ0LnNlcmlhbGl6ZSxyO2lmKGc/cj1nKEksdCk6cj1CLmlzVVJMU2VhcmNoUGFyYW1zKEkpP0kudG9TdHJpbmcoKTpuZXcgRUEoSSx0KS50b1N0cmluZyhlKSxyKXtsZXQgaT1BLmluZGV4T2YoIiUyMyIpO2khPT0tMSYmKEE9QS5zbGljZSgwLGkpKSxBKz0oQS5pbmRleE9mKCI/Iik9PT0tMT8iPyI6IiYiKStyfXJldHVybiBBfXZhciBHQT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuaGFuZGxlcnM9W119dXNlKEksdCxlKXtyZXR1cm4gdGhpcy5oYW5kbGVycy5wdXNoKHtmdWxmaWxsZWQ6SSxyZWplY3RlZDp0LHN5bmNocm9ub3VzOmU/ZS5zeW5jaHJvbm91czohMSxydW5XaGVuOmU/ZS5ydW5XaGVuOm51bGx9KSx0aGlzLmhhbmRsZXJzLmxlbmd0aC0xfWVqZWN0KEkpe3RoaXMuaGFuZGxlcnNbSV0mJih0aGlzLmhhbmRsZXJzW0ldPW51bGwpfWNsZWFyKCl7dGhpcy5oYW5kbGVycyYmKHRoaXMuaGFuZGxlcnM9W10pfWZvckVhY2goSSl7Qi5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsZnVuY3Rpb24oZSl7ZSE9PW51bGwmJkkoZSl9KX19LGtBPUdBO3ZhciBhQT17c2lsZW50SlNPTlBhcnNpbmc6ITAsZm9yY2VkSlNPTlBhcnNpbmc6ITAsY2xhcmlmeVRpbWVvdXRFcnJvcjohMX07dmFyIGRJPXR5cGVvZiBVUkxTZWFyY2hQYXJhbXM8InUiP1VSTFNlYXJjaFBhcmFtczpFQTt2YXIgeUk9dHlwZW9mIEZvcm1EYXRhPCJ1Ij9Gb3JtRGF0YTpudWxsO3ZhciB3ST10eXBlb2YgQmxvYjwidSI/QmxvYjpudWxsO3ZhciBtST17aXNCcm93c2VyOiEwLGNsYXNzZXM6e1VSTFNlYXJjaFBhcmFtczpkSSxGb3JtRGF0YTp5SSxCbG9iOndJfSxwcm90b2NvbHM6WyJodHRwIiwiaHR0cHMiLCJmaWxlIiwiYmxvYiIsInVybCIsImRhdGEiXX07dmFyIExBPXt9O2V0KExBLHtoYXNCcm93c2VyRW52OigpPT5wSSxoYXNTdGFuZGFyZEJyb3dzZXJFbnY6KCk9PkFlLGhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudjooKT0+SWV9KTt2YXIgcEk9dHlwZW9mIHdpbmRvdzwidSImJnR5cGVvZiBkb2N1bWVudDwidSIsQWU9KEE9PnBJJiZbIlJlYWN0TmF0aXZlIiwiTmF0aXZlU2NyaXB0IiwiTlMiXS5pbmRleE9mKEEpPDApKHR5cGVvZiBuYXZpZ2F0b3I8InUiJiZuYXZpZ2F0b3IucHJvZHVjdCksSWU9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlPCJ1IiYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZ0eXBlb2Ygc2VsZi5pbXBvcnRTY3JpcHRzPT0iZnVuY3Rpb24iO3ZhciB3PXsuLi5MQSwuLi5tSX07ZnVuY3Rpb24gSkEoQSxJKXtyZXR1cm4gTChBLG5ldyB3LmNsYXNzZXMuVVJMU2VhcmNoUGFyYW1zLE9iamVjdC5hc3NpZ24oe3Zpc2l0b3I6ZnVuY3Rpb24odCxlLGcscil7cmV0dXJuIHcuaXNOb2RlJiZCLmlzQnVmZmVyKHQpPyh0aGlzLmFwcGVuZChlLHQudG9TdHJpbmcoImJhc2U2NCIpKSwhMSk6ci5kZWZhdWx0VmlzaXRvci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSxJKSl9ZnVuY3Rpb24gdGUoQSl7cmV0dXJuIEIubWF0Y2hBbGwoL1xcdyt8XFxbKFxcdyopXS9nLEEpLm1hcChJPT5JWzBdPT09IltdIj8iIjpJWzFdfHxJWzBdKX1mdW5jdGlvbiBlZShBKXtsZXQgST17fSx0PU9iamVjdC5rZXlzKEEpLGUsZz10Lmxlbmd0aCxyO2ZvcihlPTA7ZTxnO2UrKylyPXRbZV0sSVtyXT1BW3JdO3JldHVybiBJfWZ1bmN0aW9uIGdlKEEpe2Z1bmN0aW9uIEkodCxlLGcscil7bGV0IGk9dFtyKytdLHM9TnVtYmVyLmlzRmluaXRlKCtpKSxhPXI+PXQubGVuZ3RoO3JldHVybiBpPSFpJiZCLmlzQXJyYXkoZyk/Zy5sZW5ndGg6aSxhPyhCLmhhc093blByb3AoZyxpKT9nW2ldPVtnW2ldLGVdOmdbaV09ZSwhcyk6KCghZ1tpXXx8IUIuaXNPYmplY3QoZ1tpXSkpJiYoZ1tpXT1bXSksSSh0LGUsZ1tpXSxyKSYmQi5pc0FycmF5KGdbaV0pJiYoZ1tpXT1lZShnW2ldKSksIXMpfWlmKEIuaXNGb3JtRGF0YShBKSYmQi5pc0Z1bmN0aW9uKEEuZW50cmllcykpe2xldCB0PXt9O3JldHVybiBCLmZvckVhY2hFbnRyeShBLChlLGcpPT57SSh0ZShlKSxnLHQsMCl9KSx0fXJldHVybiBudWxsfXZhciBjQT1nZTtmdW5jdGlvbiByZShBLEksdCl7aWYoQi5pc1N0cmluZyhBKSl0cnl7cmV0dXJuKEl8fEpTT04ucGFyc2UpKEEpLEIudHJpbShBKX1jYXRjaChlKXtpZihlLm5hbWUhPT0iU3ludGF4RXJyb3IiKXRocm93IGV9cmV0dXJuKHR8fEpTT04uc3RyaW5naWZ5KShBKX12YXIgSEE9e3RyYW5zaXRpb25hbDphQSxhZGFwdGVyOlsieGhyIiwiaHR0cCJdLHRyYW5zZm9ybVJlcXVlc3Q6W2Z1bmN0aW9uKEksdCl7bGV0IGU9dC5nZXRDb250ZW50VHlwZSgpfHwiIixnPWUuaW5kZXhPZigiYXBwbGljYXRpb24vanNvbiIpPi0xLHI9Qi5pc09iamVjdChJKTtpZihyJiZCLmlzSFRNTEZvcm0oSSkmJihJPW5ldyBGb3JtRGF0YShJKSksQi5pc0Zvcm1EYXRhKEkpKXJldHVybiBnJiZnP0pTT04uc3RyaW5naWZ5KGNBKEkpKTpJO2lmKEIuaXNBcnJheUJ1ZmZlcihJKXx8Qi5pc0J1ZmZlcihJKXx8Qi5pc1N0cmVhbShJKXx8Qi5pc0ZpbGUoSSl8fEIuaXNCbG9iKEkpKXJldHVybiBJO2lmKEIuaXNBcnJheUJ1ZmZlclZpZXcoSSkpcmV0dXJuIEkuYnVmZmVyO2lmKEIuaXNVUkxTZWFyY2hQYXJhbXMoSSkpcmV0dXJuIHQuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04IiwhMSksSS50b1N0cmluZygpO2xldCBzO2lmKHIpe2lmKGUuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik+LTEpcmV0dXJuIEpBKEksdGhpcy5mb3JtU2VyaWFsaXplcikudG9TdHJpbmcoKTtpZigocz1CLmlzRmlsZUxpc3QoSSkpfHxlLmluZGV4T2YoIm11bHRpcGFydC9mb3JtLWRhdGEiKT4tMSl7bGV0IGE9dGhpcy5lbnYmJnRoaXMuZW52LkZvcm1EYXRhO3JldHVybiBMKHM/eyJmaWxlc1tdIjpJfTpJLGEmJm5ldyBhLHRoaXMuZm9ybVNlcmlhbGl6ZXIpfX1yZXR1cm4gcnx8Zz8odC5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24vanNvbiIsITEpLHJlKEkpKTpJfV0sdHJhbnNmb3JtUmVzcG9uc2U6W2Z1bmN0aW9uKEkpe2xldCB0PXRoaXMudHJhbnNpdGlvbmFsfHxIQS50cmFuc2l0aW9uYWwsZT10JiZ0LmZvcmNlZEpTT05QYXJzaW5nLGc9dGhpcy5yZXNwb25zZVR5cGU9PT0ianNvbiI7aWYoSSYmQi5pc1N0cmluZyhJKSYmKGUmJiF0aGlzLnJlc3BvbnNlVHlwZXx8Zykpe2xldCBpPSEodCYmdC5zaWxlbnRKU09OUGFyc2luZykmJmc7dHJ5e3JldHVybiBKU09OLnBhcnNlKEkpfWNhdGNoKHMpe2lmKGkpdGhyb3cgcy5uYW1lPT09IlN5bnRheEVycm9yIj9sLmZyb20ocyxsLkVSUl9CQURfUkVTUE9OU0UsdGhpcyxudWxsLHRoaXMucmVzcG9uc2UpOnN9fXJldHVybiBJfV0sdGltZW91dDowLHhzcmZDb29raWVOYW1lOiJYU1JGLVRPS0VOIix4c3JmSGVhZGVyTmFtZToiWC1YU1JGLVRPS0VOIixtYXhDb250ZW50TGVuZ3RoOi0xLG1heEJvZHlMZW5ndGg6LTEsZW52OntGb3JtRGF0YTp3LmNsYXNzZXMuRm9ybURhdGEsQmxvYjp3LmNsYXNzZXMuQmxvYn0sdmFsaWRhdGVTdGF0dXM6ZnVuY3Rpb24oSSl7cmV0dXJuIEk+PTIwMCYmSTwzMDB9LGhlYWRlcnM6e2NvbW1vbjp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoiLCJDb250ZW50LVR5cGUiOnZvaWQgMH19fTtCLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwicG9zdCIsInB1dCIsInBhdGNoIl0sQT0+e0hBLmhlYWRlcnNbQV09e319KTt2YXIgTz1IQTt2YXIgaWU9Qi50b09iamVjdFNldChbImFnZSIsImF1dGhvcml6YXRpb24iLCJjb250ZW50LWxlbmd0aCIsImNvbnRlbnQtdHlwZSIsImV0YWciLCJleHBpcmVzIiwiZnJvbSIsImhvc3QiLCJpZi1tb2RpZmllZC1zaW5jZSIsImlmLXVubW9kaWZpZWQtc2luY2UiLCJsYXN0LW1vZGlmaWVkIiwibG9jYXRpb24iLCJtYXgtZm9yd2FyZHMiLCJwcm94eS1hdXRob3JpemF0aW9uIiwicmVmZXJlciIsInJldHJ5LWFmdGVyIiwidXNlci1hZ2VudCJdKSxTST1BPT57bGV0IEk9e30sdCxlLGc7cmV0dXJuIEEmJkEuc3BsaXQoYCUwQWApLmZvckVhY2goZnVuY3Rpb24oaSl7Zz1pLmluZGV4T2YoIjoiKSx0PWkuc3Vic3RyaW5nKDAsZykudHJpbSgpLnRvTG93ZXJDYXNlKCksZT1pLnN1YnN0cmluZyhnKzEpLnRyaW0oKSwhKCF0fHxJW3RdJiZpZVt0XSkmJih0PT09InNldC1jb29raWUiP0lbdF0/SVt0XS5wdXNoKGUpOklbdF09W2VdOklbdF09SVt0XT9JW3RdKyIsICIrZTplKX0pLEl9O3ZhciBGST1TeW1ib2woImludGVybmFscyIpO2Z1bmN0aW9uIHooQSl7cmV0dXJuIEEmJlN0cmluZyhBKS50cmltKCkudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBmQShBKXtyZXR1cm4gQT09PSExfHxBPT1udWxsP0E6Qi5pc0FycmF5KEEpP0EubWFwKGZBKTpTdHJpbmcoQSl9ZnVuY3Rpb24gb2UoQSl7bGV0IEk9T2JqZWN0LmNyZWF0ZShudWxsKSx0PS8oW15cXHMsOz1dKylcXHMqKD86PVxccyooW14sO10rKSk/L2csZTtmb3IoO2U9dC5leGVjKEEpOylJW2VbMV1dPWVbMl07cmV0dXJuIEl9dmFyIEJlPUE9Pi9eWy1fYS16QS1aMC05XmB8fiwhJTIzJCUmXCcqKy5dKyQvLnRlc3QoQS50cmltKCkpO2Z1bmN0aW9uIFlBKEEsSSx0LGUsZyl7aWYoQi5pc0Z1bmN0aW9uKGUpKXJldHVybiBlLmNhbGwodGhpcyxJLHQpO2lmKGcmJihJPXQpLCEhQi5pc1N0cmluZyhJKSl7aWYoQi5pc1N0cmluZyhlKSlyZXR1cm4gSS5pbmRleE9mKGUpIT09LTE7aWYoQi5pc1JlZ0V4cChlKSlyZXR1cm4gZS50ZXN0KEkpfX1mdW5jdGlvbiBDZShBKXtyZXR1cm4gQS50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8oW2EtelxcZF0pKFxcdyopL2csKEksdCxlKT0+dC50b1VwcGVyQ2FzZSgpK2UpfWZ1bmN0aW9uIHNlKEEsSSl7bGV0IHQ9Qi50b0NhbWVsQ2FzZSgiICIrSSk7WyJnZXQiLCJzZXQiLCJoYXMiXS5mb3JFYWNoKGU9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoQSxlK3Qse3ZhbHVlOmZ1bmN0aW9uKGcscixpKXtyZXR1cm4gdGhpc1tlXS5jYWxsKHRoaXMsSSxnLHIsaSl9LGNvbmZpZ3VyYWJsZTohMH0pfSl9dmFyIFQ9Y2xhc3N7Y29uc3RydWN0b3IoSSl7SSYmdGhpcy5zZXQoSSl9c2V0KEksdCxlKXtsZXQgZz10aGlzO2Z1bmN0aW9uIHIocyxhLG4pe2xldCBDPXooYSk7aWYoIUMpdGhyb3cgbmV3IEVycm9yKCJoZWFkZXIgbmFtZSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZyIpO2xldCBvPUIuZmluZEtleShnLEMpOyghb3x8Z1tvXT09PXZvaWQgMHx8bj09PSEwfHxuPT09dm9pZCAwJiZnW29dIT09ITEpJiYoZ1tvfHxhXT1mQShzKSl9bGV0IGk9KHMsYSk9PkIuZm9yRWFjaChzLChuLEMpPT5yKG4sQyxhKSk7cmV0dXJuIEIuaXNQbGFpbk9iamVjdChJKXx8SSBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3I/aShJLHQpOkIuaXNTdHJpbmcoSSkmJihJPUkudHJpbSgpKSYmIUJlKEkpP2koU0koSSksdCk6SSE9bnVsbCYmcih0LEksZSksdGhpc31nZXQoSSx0KXtpZihJPXooSSksSSl7bGV0IGU9Qi5maW5kS2V5KHRoaXMsSSk7aWYoZSl7bGV0IGc9dGhpc1tlXTtpZighdClyZXR1cm4gZztpZih0PT09ITApcmV0dXJuIG9lKGcpO2lmKEIuaXNGdW5jdGlvbih0KSlyZXR1cm4gdC5jYWxsKHRoaXMsZyxlKTtpZihCLmlzUmVnRXhwKHQpKXJldHVybiB0LmV4ZWMoZyk7dGhyb3cgbmV3IFR5cGVFcnJvcigicGFyc2VyIG11c3QgYmUgYm9vbGVhbnxyZWdleHB8ZnVuY3Rpb24iKX19fWhhcyhJLHQpe2lmKEk9eihJKSxJKXtsZXQgZT1CLmZpbmRLZXkodGhpcyxJKTtyZXR1cm4hIShlJiZ0aGlzW2VdIT09dm9pZCAwJiYoIXR8fFlBKHRoaXMsdGhpc1tlXSxlLHQpKSl9cmV0dXJuITF9ZGVsZXRlKEksdCl7bGV0IGU9dGhpcyxnPSExO2Z1bmN0aW9uIHIoaSl7aWYoaT16KGkpLGkpe2xldCBzPUIuZmluZEtleShlLGkpO3MmJighdHx8WUEoZSxlW3NdLHMsdCkpJiYoZGVsZXRlIGVbc10sZz0hMCl9fXJldHVybiBCLmlzQXJyYXkoSSk/SS5mb3JFYWNoKHIpOnIoSSksZ31jbGVhcihJKXtsZXQgdD1PYmplY3Qua2V5cyh0aGlzKSxlPXQubGVuZ3RoLGc9ITE7Zm9yKDtlLS07KXtsZXQgcj10W2VdOyghSXx8WUEodGhpcyx0aGlzW3JdLHIsSSwhMCkpJiYoZGVsZXRlIHRoaXNbcl0sZz0hMCl9cmV0dXJuIGd9bm9ybWFsaXplKEkpe2xldCB0PXRoaXMsZT17fTtyZXR1cm4gQi5mb3JFYWNoKHRoaXMsKGcscik9PntsZXQgaT1CLmZpbmRLZXkoZSxyKTtpZihpKXt0W2ldPWZBKGcpLGRlbGV0ZSB0W3JdO3JldHVybn1sZXQgcz1JP0NlKHIpOlN0cmluZyhyKS50cmltKCk7cyE9PXImJmRlbGV0ZSB0W3JdLHRbc109ZkEoZyksZVtzXT0hMH0pLHRoaXN9Y29uY2F0KC4uLkkpe3JldHVybiB0aGlzLmNvbnN0cnVjdG9yLmNvbmNhdCh0aGlzLC4uLkkpfXRvSlNPTihJKXtsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBCLmZvckVhY2godGhpcywoZSxnKT0+e2UhPW51bGwmJmUhPT0hMSYmKHRbZ109SSYmQi5pc0FycmF5KGUpP2Uuam9pbigiLCAiKTplKX0pLHR9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSlbU3ltYm9sLml0ZXJhdG9yXSgpfXRvU3RyaW5nKCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMudG9KU09OKCkpLm1hcCgoW0ksdF0pPT5JKyI6ICIrdCkuam9pbihgJTBBYCl9Z2V0W1N5bWJvbC50b1N0cmluZ1RhZ10oKXtyZXR1cm4iQXhpb3NIZWFkZXJzIn1zdGF0aWMgZnJvbShJKXtyZXR1cm4gSSBpbnN0YW5jZW9mIHRoaXM/STpuZXcgdGhpcyhJKX1zdGF0aWMgY29uY2F0KEksLi4udCl7bGV0IGU9bmV3IHRoaXMoSSk7cmV0dXJuIHQuZm9yRWFjaChnPT5lLnNldChnKSksZX1zdGF0aWMgYWNjZXNzb3IoSSl7bGV0IGU9KHRoaXNbRkldPXRoaXNbRkldPXthY2Nlc3NvcnM6e319KS5hY2Nlc3NvcnMsZz10aGlzLnByb3RvdHlwZTtmdW5jdGlvbiByKGkpe2xldCBzPXooaSk7ZVtzXXx8KHNlKGcsaSksZVtzXT0hMCl9cmV0dXJuIEIuaXNBcnJheShJKT9JLmZvckVhY2gocik6cihJKSx0aGlzfX07VC5hY2Nlc3NvcihbIkNvbnRlbnQtVHlwZSIsIkNvbnRlbnQtTGVuZ3RoIiwiQWNjZXB0IiwiQWNjZXB0LUVuY29kaW5nIiwiVXNlci1BZ2VudCIsIkF1dGhvcml6YXRpb24iXSk7Qi5yZWR1Y2VEZXNjcmlwdG9ycyhULnByb3RvdHlwZSwoe3ZhbHVlOkF9LEkpPT57bGV0IHQ9SVswXS50b1VwcGVyQ2FzZSgpK0kuc2xpY2UoMSk7cmV0dXJue2dldDooKT0+QSxzZXQoZSl7dGhpc1t0XT1lfX19KTtCLmZyZWV6ZU1ldGhvZHMoVCk7dmFyIG09VDtmdW5jdGlvbiBfKEEsSSl7bGV0IHQ9dGhpc3x8TyxlPUl8fHQsZz1tLmZyb20oZS5oZWFkZXJzKSxyPWUuZGF0YTtyZXR1cm4gQi5mb3JFYWNoKEEsZnVuY3Rpb24ocyl7cj1zLmNhbGwodCxyLGcubm9ybWFsaXplKCksST9JLnN0YXR1czp2b2lkIDApfSksZy5ub3JtYWxpemUoKSxyfWZ1bmN0aW9uIHYoQSl7cmV0dXJuISEoQSYmQS5fX0NBTkNFTF9fKX1mdW5jdGlvbiBSSShBLEksdCl7bC5jYWxsKHRoaXMsQT8/ImNhbmNlbGVkIixsLkVSUl9DQU5DRUxFRCxJLHQpLHRoaXMubmFtZT0iQ2FuY2VsZWRFcnJvciJ9Qi5pbmhlcml0cyhSSSxsLHtfX0NBTkNFTF9fOiEwfSk7dmFyIEo9Ukk7ZnVuY3Rpb24gYkEoQSxJLHQpe2xldCBlPXQuY29uZmlnLnZhbGlkYXRlU3RhdHVzOyF0LnN0YXR1c3x8IWV8fGUodC5zdGF0dXMpP0EodCk6SShuZXcgbCgiUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK3Quc3RhdHVzLFtsLkVSUl9CQURfUkVRVUVTVCxsLkVSUl9CQURfUkVTUE9OU0VdW01hdGguZmxvb3IodC5zdGF0dXMvMTAwKS00XSx0LmNvbmZpZyx0LnJlcXVlc3QsdCkpfXZhciBOST13Lmhhc1N0YW5kYXJkQnJvd3NlckVudj97d3JpdGUoQSxJLHQsZSxnLHIpe2xldCBpPVtBKyI9IitlbmNvZGVVUklDb21wb25lbnQoSSldO0IuaXNOdW1iZXIodCkmJmkucHVzaCgiZXhwaXJlcz0iK25ldyBEYXRlKHQpLnRvR01UU3RyaW5nKCkpLEIuaXNTdHJpbmcoZSkmJmkucHVzaCgicGF0aD0iK2UpLEIuaXNTdHJpbmcoZykmJmkucHVzaCgiZG9tYWluPSIrZykscj09PSEwJiZpLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1pLmpvaW4oIjsgIil9LHJlYWQoQSl7bGV0IEk9ZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoIihefDtcXFxccyopKCIrQSsiKT0oW147XSopIikpO3JldHVybiBJP2RlY29kZVVSSUNvbXBvbmVudChJWzNdKTpudWxsfSxyZW1vdmUoQSl7dGhpcy53cml0ZShBLCIiLERhdGUubm93KCktODY0ZTUpfX06e3dyaXRlKCl7fSxyZWFkKCl7cmV0dXJuIG51bGx9LHJlbW92ZSgpe319O2Z1bmN0aW9uIE1BKEEpe3JldHVybi9eKFthLXpdW2EtelxcZCtcXC0uXSo6KT9cXC9cXC8vaS50ZXN0KEEpfWZ1bmN0aW9uIHFBKEEsSSl7cmV0dXJuIEk/QS5yZXBsYWNlKC9cXC8rJC8sIiIpKyIvIitJLnJlcGxhY2UoL15cXC8rLywiIik6QX1mdW5jdGlvbiAkKEEsSSl7cmV0dXJuIEEmJiFNQShJKT9xQShBLEkpOkl9dmFyIFVJPXcuaGFzU3RhbmRhcmRCcm93c2VyRW52P2Z1bmN0aW9uKCl7bGV0IEk9Lyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSx0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxlO2Z1bmN0aW9uIGcocil7bGV0IGk9cjtyZXR1cm4gSSYmKHQuc2V0QXR0cmlidXRlKCJocmVmIixpKSxpPXQuaHJlZiksdC5zZXRBdHRyaWJ1dGUoImhyZWYiLGkpLHtocmVmOnQuaHJlZixwcm90b2NvbDp0LnByb3RvY29sP3QucHJvdG9jb2wucmVwbGFjZSgvOiQvLCIiKToiIixob3N0OnQuaG9zdCxzZWFyY2g6dC5zZWFyY2g/dC5zZWFyY2gucmVwbGFjZSgvXlxcPy8sIiIpOiIiLGhhc2g6dC5oYXNoP3QuaGFzaC5yZXBsYWNlKC9eJTIzLywiIik6IiIsaG9zdG5hbWU6dC5ob3N0bmFtZSxwb3J0OnQucG9ydCxwYXRobmFtZTp0LnBhdGhuYW1lLmNoYXJBdCgwKT09PSIvIj90LnBhdGhuYW1lOiIvIit0LnBhdGhuYW1lfX1yZXR1cm4gZT1nKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxmdW5jdGlvbihpKXtsZXQgcz1CLmlzU3RyaW5nKGkpP2coaSk6aTtyZXR1cm4gcy5wcm90b2NvbD09PWUucHJvdG9jb2wmJnMuaG9zdD09PWUuaG9zdH19KCk6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hMH19KCk7ZnVuY3Rpb24gS0EoQSl7bGV0IEk9L14oWy0rXFx3XXsxLDI1fSkoOj9cXC9cXC98OikvLmV4ZWMoQSk7cmV0dXJuIEkmJklbMV18fCIifWZ1bmN0aW9uIFFlKEEsSSl7QT1BfHwxMDtsZXQgdD1uZXcgQXJyYXkoQSksZT1uZXcgQXJyYXkoQSksZz0wLHI9MCxpO3JldHVybiBJPUkhPT12b2lkIDA/SToxZTMsZnVuY3Rpb24oYSl7bGV0IG49RGF0ZS5ub3coKSxDPWVbcl07aXx8KGk9biksdFtnXT1hLGVbZ109bjtsZXQgbz1yLGY9MDtmb3IoO28hPT1nOylmKz10W28rK10sbz1vJUE7aWYoZz0oZysxKSVBLGc9PT1yJiYocj0ocisxKSVBKSxuLWk8SSlyZXR1cm47bGV0IFE9QyYmbi1DO3JldHVybiBRP01hdGgucm91bmQoZioxZTMvUSk6dm9pZCAwfX12YXIgR0k9UWU7ZnVuY3Rpb24ga0koQSxJKXtsZXQgdD0wLGU9R0koNTAsMjUwKTtyZXR1cm4gZz0+e2xldCByPWcubG9hZGVkLGk9Zy5sZW5ndGhDb21wdXRhYmxlP2cudG90YWw6dm9pZCAwLHM9ci10LGE9ZShzKSxuPXI8PWk7dD1yO2xldCBDPXtsb2FkZWQ6cix0b3RhbDppLHByb2dyZXNzOmk/ci9pOnZvaWQgMCxieXRlczpzLHJhdGU6YXx8dm9pZCAwLGVzdGltYXRlZDphJiZpJiZuPyhpLXIpL2E6dm9pZCAwLGV2ZW50Omd9O0NbST8iZG93bmxvYWQiOiJ1cGxvYWQiXT0hMCxBKEMpfX12YXIgbmU9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0PCJ1IixMST1uZSYmZnVuY3Rpb24oQSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQsZSl7bGV0IGc9QS5kYXRhLHI9bS5mcm9tKEEuaGVhZGVycykubm9ybWFsaXplKCkse3Jlc3BvbnNlVHlwZTppLHdpdGhYU1JGVG9rZW46c309QSxhO2Z1bmN0aW9uIG4oKXtBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKGEpLEEuc2lnbmFsJiZBLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsYSl9bGV0IEM7aWYoQi5pc0Zvcm1EYXRhKGcpKXtpZih3Lmhhc1N0YW5kYXJkQnJvd3NlckVudnx8dy5oYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnYpci5zZXRDb250ZW50VHlwZSghMSk7ZWxzZSBpZigoQz1yLmdldENvbnRlbnRUeXBlKCkpIT09ITEpe2xldFtjLC4uLnVdPUM/Qy5zcGxpdCgiOyIpLm1hcChkPT5kLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pOltdO3Iuc2V0Q29udGVudFR5cGUoW2N8fCJtdWx0aXBhcnQvZm9ybS1kYXRhIiwuLi51XS5qb2luKCI7ICIpKX19bGV0IG89bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKEEuYXV0aCl7bGV0IGM9QS5hdXRoLnVzZXJuYW1lfHwiIix1PUEuYXV0aC5wYXNzd29yZD91bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoQS5hdXRoLnBhc3N3b3JkKSk6IiI7ci5zZXQoIkF1dGhvcml6YXRpb24iLCJCYXNpYyAiK2J0b2EoYysiOiIrdSkpfWxldCBmPSQoQS5iYXNlVVJMLEEudXJsKTtvLm9wZW4oQS5tZXRob2QudG9VcHBlckNhc2UoKSxYKGYsQS5wYXJhbXMsQS5wYXJhbXNTZXJpYWxpemVyKSwhMCksby50aW1lb3V0PUEudGltZW91dDtmdW5jdGlvbiBRKCl7aWYoIW8pcmV0dXJuO2xldCBjPW0uZnJvbSgiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzImluIG8mJm8uZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpLGQ9e2RhdGE6IWl8fGk9PT0idGV4dCJ8fGk9PT0ianNvbiI/by5yZXNwb25zZVRleHQ6by5yZXNwb25zZSxzdGF0dXM6by5zdGF0dXMsc3RhdHVzVGV4dDpvLnN0YXR1c1RleHQsaGVhZGVyczpjLGNvbmZpZzpBLHJlcXVlc3Q6b307YkEoZnVuY3Rpb24oTil7dChOKSxuKCl9LGZ1bmN0aW9uKE4pe2UoTiksbigpfSxkKSxvPW51bGx9aWYoIm9ubG9hZGVuZCJpbiBvP28ub25sb2FkZW5kPVE6by5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXshb3x8by5yZWFkeVN0YXRlIT09NHx8by5zdGF0dXM9PT0wJiYhKG8ucmVzcG9uc2VVUkwmJm8ucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKT09PTApfHxzZXRUaW1lb3V0KFEpfSxvLm9uYWJvcnQ9ZnVuY3Rpb24oKXtvJiYoZShuZXcgbCgiUmVxdWVzdCBhYm9ydGVkIixsLkVDT05OQUJPUlRFRCxBLG8pKSxvPW51bGwpfSxvLm9uZXJyb3I9ZnVuY3Rpb24oKXtlKG5ldyBsKCJOZXR3b3JrIEVycm9yIixsLkVSUl9ORVRXT1JLLEEsbykpLG89bnVsbH0sby5vbnRpbWVvdXQ9ZnVuY3Rpb24oKXtsZXQgdT1BLnRpbWVvdXQ/InRpbWVvdXQgb2YgIitBLnRpbWVvdXQrIm1zIGV4Y2VlZGVkIjoidGltZW91dCBleGNlZWRlZCIsZD1BLnRyYW5zaXRpb25hbHx8YUE7QS50aW1lb3V0RXJyb3JNZXNzYWdlJiYodT1BLnRpbWVvdXRFcnJvck1lc3NhZ2UpLGUobmV3IGwodSxkLmNsYXJpZnlUaW1lb3V0RXJyb3I/bC5FVElNRURPVVQ6bC5FQ09OTkFCT1JURUQsQSxvKSksbz1udWxsfSx3Lmhhc1N0YW5kYXJkQnJvd3NlckVudiYmKHMmJkIuaXNGdW5jdGlvbihzKSYmKHM9cyhBKSksc3x8cyE9PSExJiZVSShmKSkpe2xldCBjPUEueHNyZkhlYWRlck5hbWUmJkEueHNyZkNvb2tpZU5hbWUmJk5JLnJlYWQoQS54c3JmQ29va2llTmFtZSk7YyYmci5zZXQoQS54c3JmSGVhZGVyTmFtZSxjKX1nPT09dm9pZCAwJiZyLnNldENvbnRlbnRUeXBlKG51bGwpLCJzZXRSZXF1ZXN0SGVhZGVyImluIG8mJkIuZm9yRWFjaChyLnRvSlNPTigpLGZ1bmN0aW9uKHUsZCl7by5zZXRSZXF1ZXN0SGVhZGVyKGQsdSl9KSxCLmlzVW5kZWZpbmVkKEEud2l0aENyZWRlbnRpYWxzKXx8KG8ud2l0aENyZWRlbnRpYWxzPSEhQS53aXRoQ3JlZGVudGlhbHMpLGkmJmkhPT0ianNvbiImJihvLnJlc3BvbnNlVHlwZT1BLnJlc3BvbnNlVHlwZSksdHlwZW9mIEEub25Eb3dubG9hZFByb2dyZXNzPT0iZnVuY3Rpb24iJiZvLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixrSShBLm9uRG93bmxvYWRQcm9ncmVzcywhMCkpLHR5cGVvZiBBLm9uVXBsb2FkUHJvZ3Jlc3M9PSJmdW5jdGlvbiImJm8udXBsb2FkJiZvLnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsa0koQS5vblVwbG9hZFByb2dyZXNzKSksKEEuY2FuY2VsVG9rZW58fEEuc2lnbmFsKSYmKGE9Yz0+e28mJihlKCFjfHxjLnR5cGU/bmV3IEoobnVsbCxBLG8pOmMpLG8uYWJvcnQoKSxvPW51bGwpfSxBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnN1YnNjcmliZShhKSxBLnNpZ25hbCYmKEEuc2lnbmFsLmFib3J0ZWQ/YSgpOkEuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixhKSkpO2xldCBFPUtBKGYpO2lmKEUmJncucHJvdG9jb2xzLmluZGV4T2YoRSk9PT0tMSl7ZShuZXcgbCgiVW5zdXBwb3J0ZWQgcHJvdG9jb2wgIitFKyI6IixsLkVSUl9CQURfUkVRVUVTVCxBKSk7cmV0dXJufW8uc2VuZChnfHxudWxsKX0pfTt2YXIgT0E9e2h0dHA6bkEseGhyOkxJfTtCLmZvckVhY2goT0EsKEEsSSk9PntpZihBKXt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KEEsIm5hbWUiLHt2YWx1ZTpJfSl9Y2F0Y2h7fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJhZGFwdGVyTmFtZSIse3ZhbHVlOkl9KX19KTt2YXIgSkk9QT0+YC0gJHtBfWAsRWU9QT0+Qi5pc0Z1bmN0aW9uKEEpfHxBPT09bnVsbHx8QT09PSExLGxBPXtnZXRBZGFwdGVyOkE9PntBPUIuaXNBcnJheShBKT9BOltBXTtsZXR7bGVuZ3RoOkl9PUEsdCxlLGc9e307Zm9yKGxldCByPTA7cjxJO3IrKyl7dD1BW3JdO2xldCBpO2lmKGU9dCwhRWUodCkmJihlPU9BWyhpPVN0cmluZyh0KSkudG9Mb3dlckNhc2UoKV0sZT09PXZvaWQgMCkpdGhyb3cgbmV3IGwoYFVua25vd24gYWRhcHRlciBcJyR7aX1cJ2ApO2lmKGUpYnJlYWs7Z1tpfHwiJTIzIityXT1lfWlmKCFlKXtsZXQgcj1PYmplY3QuZW50cmllcyhnKS5tYXAoKFtzLGFdKT0+YGFkYXB0ZXIgJHtzfSBgKyhhPT09ITE/ImlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGVudmlyb25tZW50IjoiaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgYnVpbGQiKSksaT1JP3IubGVuZ3RoPjE/YHNpbmNlIDolMEFgK3IubWFwKEpJKS5qb2luKGAlMEFgKToiICIrSkkoclswXSk6ImFzIG5vIGFkYXB0ZXIgc3BlY2lmaWVkIjt0aHJvdyBuZXcgbCgiVGhlcmUgaXMgbm8gc3VpdGFibGUgYWRhcHRlciB0byBkaXNwYXRjaCB0aGUgcmVxdWVzdCAiK2ksIkVSUl9OT1RfU1VQUE9SVCIpfXJldHVybiBlfSxhZGFwdGVyczpPQX07ZnVuY3Rpb24gVEEoQSl7aWYoQS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCksQS5zaWduYWwmJkEuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IEoobnVsbCxBKX1mdW5jdGlvbiBEQShBKXtyZXR1cm4gVEEoQSksQS5oZWFkZXJzPW0uZnJvbShBLmhlYWRlcnMpLEEuZGF0YT1fLmNhbGwoQSxBLnRyYW5zZm9ybVJlcXVlc3QpLFsicG9zdCIsInB1dCIsInBhdGNoIl0uaW5kZXhPZihBLm1ldGhvZCkhPT0tMSYmQS5oZWFkZXJzLnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLCExKSxsQS5nZXRBZGFwdGVyKEEuYWRhcHRlcnx8Ty5hZGFwdGVyKShBKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBUQShBKSxlLmRhdGE9Xy5jYWxsKEEsQS50cmFuc2Zvcm1SZXNwb25zZSxlKSxlLmhlYWRlcnM9bS5mcm9tKGUuaGVhZGVycyksZX0sZnVuY3Rpb24oZSl7cmV0dXJuIHYoZSl8fChUQShBKSxlJiZlLnJlc3BvbnNlJiYoZS5yZXNwb25zZS5kYXRhPV8uY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2UsZS5yZXNwb25zZSksZS5yZXNwb25zZS5oZWFkZXJzPW0uZnJvbShlLnJlc3BvbnNlLmhlYWRlcnMpKSksUHJvbWlzZS5yZWplY3QoZSl9KX12YXIgSEk9QT0+QSBpbnN0YW5jZW9mIG0/QS50b0pTT04oKTpBO2Z1bmN0aW9uIEcoQSxJKXtJPUl8fHt9O2xldCB0PXt9O2Z1bmN0aW9uIGUobixDLG8pe3JldHVybiBCLmlzUGxhaW5PYmplY3QobikmJkIuaXNQbGFpbk9iamVjdChDKT9CLm1lcmdlLmNhbGwoe2Nhc2VsZXNzOm99LG4sQyk6Qi5pc1BsYWluT2JqZWN0KEMpP0IubWVyZ2Uoe30sQyk6Qi5pc0FycmF5KEMpP0Muc2xpY2UoKTpDfWZ1bmN0aW9uIGcobixDLG8pe2lmKEIuaXNVbmRlZmluZWQoQykpe2lmKCFCLmlzVW5kZWZpbmVkKG4pKXJldHVybiBlKHZvaWQgMCxuLG8pfWVsc2UgcmV0dXJuIGUobixDLG8pfWZ1bmN0aW9uIHIobixDKXtpZighQi5pc1VuZGVmaW5lZChDKSlyZXR1cm4gZSh2b2lkIDAsQyl9ZnVuY3Rpb24gaShuLEMpe2lmKEIuaXNVbmRlZmluZWQoQykpe2lmKCFCLmlzVW5kZWZpbmVkKG4pKXJldHVybiBlKHZvaWQgMCxuKX1lbHNlIHJldHVybiBlKHZvaWQgMCxDKX1mdW5jdGlvbiBzKG4sQyxvKXtpZihvIGluIEkpcmV0dXJuIGUobixDKTtpZihvIGluIEEpcmV0dXJuIGUodm9pZCAwLG4pfWxldCBhPXt1cmw6cixtZXRob2Q6cixkYXRhOnIsYmFzZVVSTDppLHRyYW5zZm9ybVJlcXVlc3Q6aSx0cmFuc2Zvcm1SZXNwb25zZTppLHBhcmFtc1NlcmlhbGl6ZXI6aSx0aW1lb3V0OmksdGltZW91dE1lc3NhZ2U6aSx3aXRoQ3JlZGVudGlhbHM6aSx3aXRoWFNSRlRva2VuOmksYWRhcHRlcjppLHJlc3BvbnNlVHlwZTppLHhzcmZDb29raWVOYW1lOmkseHNyZkhlYWRlck5hbWU6aSxvblVwbG9hZFByb2dyZXNzOmksb25Eb3dubG9hZFByb2dyZXNzOmksZGVjb21wcmVzczppLG1heENvbnRlbnRMZW5ndGg6aSxtYXhCb2R5TGVuZ3RoOmksYmVmb3JlUmVkaXJlY3Q6aSx0cmFuc3BvcnQ6aSxodHRwQWdlbnQ6aSxodHRwc0FnZW50OmksY2FuY2VsVG9rZW46aSxzb2NrZXRQYXRoOmkscmVzcG9uc2VFbmNvZGluZzppLHZhbGlkYXRlU3RhdHVzOnMsaGVhZGVyczoobixDKT0+ZyhISShuKSxISShDKSwhMCl9O3JldHVybiBCLmZvckVhY2goT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxBLEkpKSxmdW5jdGlvbihDKXtsZXQgbz1hW0NdfHxnLGY9byhBW0NdLElbQ10sQyk7Qi5pc1VuZGVmaW5lZChmKSYmbyE9PXN8fCh0W0NdPWYpfSksdH12YXIgdUE9IjEuNi4yIjt2YXIgeEE9e307WyJvYmplY3QiLCJib29sZWFuIiwibnVtYmVyIiwiZnVuY3Rpb24iLCJzdHJpbmciLCJzeW1ib2wiXS5mb3JFYWNoKChBLEkpPT57eEFbQV09ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPT09QXx8ImEiKyhJPDE/Im4gIjoiICIpK0F9fSk7dmFyIFlJPXt9O3hBLnRyYW5zaXRpb25hbD1mdW5jdGlvbihJLHQsZSl7ZnVuY3Rpb24gZyhyLGkpe3JldHVybiJbQXhpb3MgdiIrdUErIl0gVHJhbnNpdGlvbmFsIG9wdGlvbiBcJyIrcisiXCciK2krKGU/Ii4gIitlOiIiKX1yZXR1cm4ocixpLHMpPT57aWYoST09PSExKXRocm93IG5ldyBsKGcoaSwiIGhhcyBiZWVuIHJlbW92ZWQiKyh0PyIgaW4gIit0OiIiKSksbC5FUlJfREVQUkVDQVRFRCk7cmV0dXJuIHQmJiFZSVtpXSYmKFlJW2ldPSEwLGNvbnNvbGUud2FybihnKGksIiBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYiK3QrIiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSIpKSksST9JKHIsaSxzKTohMH19O2Z1bmN0aW9uIGFlKEEsSSx0KXtpZih0eXBlb2YgQSE9Im9iamVjdCIpdGhyb3cgbmV3IGwoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiLGwuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2xldCBlPU9iamVjdC5rZXlzKEEpLGc9ZS5sZW5ndGg7Zm9yKDtnLS0gPjA7KXtsZXQgcj1lW2ddLGk9SVtyXTtpZihpKXtsZXQgcz1BW3JdLGE9cz09PXZvaWQgMHx8aShzLHIsQSk7aWYoYSE9PSEwKXRocm93IG5ldyBsKCJvcHRpb24gIityKyIgbXVzdCBiZSAiK2EsbC5FUlJfQkFEX09QVElPTl9WQUxVRSk7Y29udGludWV9aWYodCE9PSEwKXRocm93IG5ldyBsKCJVbmtub3duIG9wdGlvbiAiK3IsbC5FUlJfQkFEX09QVElPTil9fXZhciBoQT17YXNzZXJ0T3B0aW9uczphZSx2YWxpZGF0b3JzOnhBfTt2YXIgSD1oQS52YWxpZGF0b3JzLHg9Y2xhc3N7Y29uc3RydWN0b3IoSSl7dGhpcy5kZWZhdWx0cz1JLHRoaXMuaW50ZXJjZXB0b3JzPXtyZXF1ZXN0Om5ldyBrQSxyZXNwb25zZTpuZXcga0F9fXJlcXVlc3QoSSx0KXt0eXBlb2YgST09InN0cmluZyI/KHQ9dHx8e30sdC51cmw9SSk6dD1JfHx7fSx0PUcodGhpcy5kZWZhdWx0cyx0KTtsZXR7dHJhbnNpdGlvbmFsOmUscGFyYW1zU2VyaWFsaXplcjpnLGhlYWRlcnM6cn09dDtlIT09dm9pZCAwJiZoQS5hc3NlcnRPcHRpb25zKGUse3NpbGVudEpTT05QYXJzaW5nOkgudHJhbnNpdGlvbmFsKEguYm9vbGVhbiksZm9yY2VkSlNPTlBhcnNpbmc6SC50cmFuc2l0aW9uYWwoSC5ib29sZWFuKSxjbGFyaWZ5VGltZW91dEVycm9yOkgudHJhbnNpdGlvbmFsKEguYm9vbGVhbil9LCExKSxnIT1udWxsJiYoQi5pc0Z1bmN0aW9uKGcpP3QucGFyYW1zU2VyaWFsaXplcj17c2VyaWFsaXplOmd9OmhBLmFzc2VydE9wdGlvbnMoZyx7ZW5jb2RlOkguZnVuY3Rpb24sc2VyaWFsaXplOkguZnVuY3Rpb259LCEwKSksdC5tZXRob2Q9KHQubWV0aG9kfHx0aGlzLmRlZmF1bHRzLm1ldGhvZHx8ImdldCIpLnRvTG93ZXJDYXNlKCk7bGV0IGk9ciYmQi5tZXJnZShyLmNvbW1vbixyW3QubWV0aG9kXSk7ciYmQi5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCIsImNvbW1vbiJdLEU9PntkZWxldGUgcltFXX0pLHQuaGVhZGVycz1tLmNvbmNhdChpLHIpO2xldCBzPVtdLGE9ITA7dGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKGZ1bmN0aW9uKGMpe3R5cGVvZiBjLnJ1bldoZW49PSJmdW5jdGlvbiImJmMucnVuV2hlbih0KT09PSExfHwoYT1hJiZjLnN5bmNocm9ub3VzLHMudW5zaGlmdChjLmZ1bGZpbGxlZCxjLnJlamVjdGVkKSl9KTtsZXQgbj1bXTt0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKGZ1bmN0aW9uKGMpe24ucHVzaChjLmZ1bGZpbGxlZCxjLnJlamVjdGVkKX0pO2xldCBDLG89MCxmO2lmKCFhKXtsZXQgRT1bREEuYmluZCh0aGlzKSx2b2lkIDBdO2ZvcihFLnVuc2hpZnQuYXBwbHkoRSxzKSxFLnB1c2guYXBwbHkoRSxuKSxmPUUubGVuZ3RoLEM9UHJvbWlzZS5yZXNvbHZlKHQpO288ZjspQz1DLnRoZW4oRVtvKytdLEVbbysrXSk7cmV0dXJuIEN9Zj1zLmxlbmd0aDtsZXQgUT10O2ZvcihvPTA7bzxmOyl7bGV0IEU9c1tvKytdLGM9c1tvKytdO3RyeXtRPUUoUSl9Y2F0Y2godSl7Yy5jYWxsKHRoaXMsdSk7YnJlYWt9fXRyeXtDPURBLmNhbGwodGhpcyxRKX1jYXRjaChFKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoRSl9Zm9yKG89MCxmPW4ubGVuZ3RoO288ZjspQz1DLnRoZW4obltvKytdLG5bbysrXSk7cmV0dXJuIEN9Z2V0VXJpKEkpe0k9Ryh0aGlzLmRlZmF1bHRzLEkpO2xldCB0PSQoSS5iYXNlVVJMLEkudXJsKTtyZXR1cm4gWCh0LEkucGFyYW1zLEkucGFyYW1zU2VyaWFsaXplcil9fTtCLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyJdLGZ1bmN0aW9uKEkpe3gucHJvdG90eXBlW0ldPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucmVxdWVzdChHKGV8fHt9LHttZXRob2Q6SSx1cmw6dCxkYXRhOihlfHx7fSkuZGF0YX0pKX19KTtCLmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSxmdW5jdGlvbihJKXtmdW5jdGlvbiB0KGUpe3JldHVybiBmdW5jdGlvbihyLGkscyl7cmV0dXJuIHRoaXMucmVxdWVzdChHKHN8fHt9LHttZXRob2Q6SSxoZWFkZXJzOmU/eyJDb250ZW50LVR5cGUiOiJtdWx0aXBhcnQvZm9ybS1kYXRhIn06e30sdXJsOnIsZGF0YTppfSkpfX14LnByb3RvdHlwZVtJXT10KCkseC5wcm90b3R5cGVbSSsiRm9ybSJdPXQoITApfSk7dmFyIEFBPXg7dmFyIFBBPWNsYXNzIEF7Y29uc3RydWN0b3IoSSl7aWYodHlwZW9mIEkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO2xldCB0O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihyKXt0PXJ9KTtsZXQgZT10aGlzO3RoaXMucHJvbWlzZS50aGVuKGc9PntpZighZS5fbGlzdGVuZXJzKXJldHVybjtsZXQgcj1lLl9saXN0ZW5lcnMubGVuZ3RoO2Zvcig7ci0tID4wOyllLl9saXN0ZW5lcnNbcl0oZyk7ZS5fbGlzdGVuZXJzPW51bGx9KSx0aGlzLnByb21pc2UudGhlbj1nPT57bGV0IHIsaT1uZXcgUHJvbWlzZShzPT57ZS5zdWJzY3JpYmUocykscj1zfSkudGhlbihnKTtyZXR1cm4gaS5jYW5jZWw9ZnVuY3Rpb24oKXtlLnVuc3Vic2NyaWJlKHIpfSxpfSxJKGZ1bmN0aW9uKHIsaSxzKXtlLnJlYXNvbnx8KGUucmVhc29uPW5ldyBKKHIsaSxzKSx0KGUucmVhc29uKSl9KX10aHJvd0lmUmVxdWVzdGVkKCl7aWYodGhpcy5yZWFzb24pdGhyb3cgdGhpcy5yZWFzb259c3Vic2NyaWJlKEkpe2lmKHRoaXMucmVhc29uKXtJKHRoaXMucmVhc29uKTtyZXR1cm59dGhpcy5fbGlzdGVuZXJzP3RoaXMuX2xpc3RlbmVycy5wdXNoKEkpOnRoaXMuX2xpc3RlbmVycz1bSV19dW5zdWJzY3JpYmUoSSl7aWYoIXRoaXMuX2xpc3RlbmVycylyZXR1cm47bGV0IHQ9dGhpcy5fbGlzdGVuZXJzLmluZGV4T2YoSSk7dCE9PS0xJiZ0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKHQsMSl9c3RhdGljIHNvdXJjZSgpe2xldCBJO3JldHVybnt0b2tlbjpuZXcgQShmdW5jdGlvbihnKXtJPWd9KSxjYW5jZWw6SX19fSxiST1QQTtmdW5jdGlvbiBqQShBKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIEEuYXBwbHkobnVsbCx0KX19ZnVuY3Rpb24gV0EoQSl7cmV0dXJuIEIuaXNPYmplY3QoQSkmJkEuaXNBeGlvc0Vycm9yPT09ITB9dmFyIFpBPXtDb250aW51ZToxMDAsU3dpdGNoaW5nUHJvdG9jb2xzOjEwMSxQcm9jZXNzaW5nOjEwMixFYXJseUhpbnRzOjEwMyxPazoyMDAsQ3JlYXRlZDoyMDEsQWNjZXB0ZWQ6MjAyLE5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbjoyMDMsTm9Db250ZW50OjIwNCxSZXNldENvbnRlbnQ6MjA1LFBhcnRpYWxDb250ZW50OjIwNixNdWx0aVN0YXR1czoyMDcsQWxyZWFkeVJlcG9ydGVkOjIwOCxJbVVzZWQ6MjI2LE11bHRpcGxlQ2hvaWNlczozMDAsTW92ZWRQZXJtYW5lbnRseTozMDEsRm91bmQ6MzAyLFNlZU90aGVyOjMwMyxOb3RNb2RpZmllZDozMDQsVXNlUHJveHk6MzA1LFVudXNlZDozMDYsVGVtcG9yYXJ5UmVkaXJlY3Q6MzA3LFBlcm1hbmVudFJlZGlyZWN0OjMwOCxCYWRSZXF1ZXN0OjQwMCxVbmF1dGhvcml6ZWQ6NDAxLFBheW1lbnRSZXF1aXJlZDo0MDIsRm9yYmlkZGVuOjQwMyxOb3RGb3VuZDo0MDQsTWV0aG9kTm90QWxsb3dlZDo0MDUsTm90QWNjZXB0YWJsZTo0MDYsUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkOjQwNyxSZXF1ZXN0VGltZW91dDo0MDgsQ29uZmxpY3Q6NDA5LEdvbmU6NDEwLExlbmd0aFJlcXVpcmVkOjQxMSxQcmVjb25kaXRpb25GYWlsZWQ6NDEyLFBheWxvYWRUb29MYXJnZTo0MTMsVXJpVG9vTG9uZzo0MTQsVW5zdXBwb3J0ZWRNZWRpYVR5cGU6NDE1LFJhbmdlTm90U2F0aXNmaWFibGU6NDE2LEV4cGVjdGF0aW9uRmFpbGVkOjQxNyxJbUFUZWFwb3Q6NDE4LE1pc2RpcmVjdGVkUmVxdWVzdDo0MjEsVW5wcm9jZXNzYWJsZUVudGl0eTo0MjIsTG9ja2VkOjQyMyxGYWlsZWREZXBlbmRlbmN5OjQyNCxUb29FYXJseTo0MjUsVXBncmFkZVJlcXVpcmVkOjQyNixQcmVjb25kaXRpb25SZXF1aXJlZDo0MjgsVG9vTWFueVJlcXVlc3RzOjQyOSxSZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2U6NDMxLFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zOjQ1MSxJbnRlcm5hbFNlcnZlckVycm9yOjUwMCxOb3RJbXBsZW1lbnRlZDo1MDEsQmFkR2F0ZXdheTo1MDIsU2VydmljZVVuYXZhaWxhYmxlOjUwMyxHYXRld2F5VGltZW91dDo1MDQsSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQ6NTA1LFZhcmlhbnRBbHNvTmVnb3RpYXRlczo1MDYsSW5zdWZmaWNpZW50U3RvcmFnZTo1MDcsTG9vcERldGVjdGVkOjUwOCxOb3RFeHRlbmRlZDo1MTAsTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6NTExfTtPYmplY3QuZW50cmllcyhaQSkuZm9yRWFjaCgoW0EsSV0pPT57WkFbSV09QX0pO3ZhciBNST1aQTtmdW5jdGlvbiBxSShBKXtsZXQgST1uZXcgQUEoQSksdD1XKEFBLnByb3RvdHlwZS5yZXF1ZXN0LEkpO3JldHVybiBCLmV4dGVuZCh0LEFBLnByb3RvdHlwZSxJLHthbGxPd25LZXlzOiEwfSksQi5leHRlbmQodCxJLG51bGwse2FsbE93bktleXM6ITB9KSx0LmNyZWF0ZT1mdW5jdGlvbihnKXtyZXR1cm4gcUkoRyhBLGcpKX0sdH12YXIgaD1xSShPKTtoLkF4aW9zPUFBO2guQ2FuY2VsZWRFcnJvcj1KO2guQ2FuY2VsVG9rZW49Ykk7aC5pc0NhbmNlbD12O2guVkVSU0lPTj11QTtoLnRvRm9ybURhdGE9TDtoLkF4aW9zRXJyb3I9bDtoLkNhbmNlbD1oLkNhbmNlbGVkRXJyb3I7aC5hbGw9ZnVuY3Rpb24oSSl7cmV0dXJuIFByb21pc2UuYWxsKEkpfTtoLnNwcmVhZD1qQTtoLmlzQXhpb3NFcnJvcj1XQTtoLm1lcmdlQ29uZmlnPUc7aC5BeGlvc0hlYWRlcnM9bTtoLmZvcm1Ub0pTT049QT0+Y0EoQi5pc0hUTUxGb3JtKEEpP25ldyBGb3JtRGF0YShBKTpBKTtoLmdldEFkYXB0ZXI9bEEuZ2V0QWRhcHRlcjtoLkh0dHBTdGF0dXNDb2RlPU1JO2guZGVmYXVsdD1oO3ZhciBkQT1oO3ZhcntBeGlvczpvaSxBeGlvc0Vycm9yOkJpLENhbmNlbGVkRXJyb3I6Q2ksaXNDYW5jZWw6c2ksQ2FuY2VsVG9rZW46UWksVkVSU0lPTjpuaSxhbGw6RWksQ2FuY2VsOmFpLGlzQXhpb3NFcnJvcjpjaSxzcHJlYWQ6ZmksdG9Gb3JtRGF0YTpsaSxBeGlvc0hlYWRlcnM6RGksSHR0cFN0YXR1c0NvZGU6dWksZm9ybVRvSlNPTjpoaSxnZXRBZGFwdGVyOmRpLG1lcmdlQ29uZmlnOnlpfT1kQTt2YXIgSUEsayxYQSxWQT17ZW52OntlbXNjcmlwdGVuX25vdGlmeV9tZW1vcnlfZ3Jvd3RoOmZ1bmN0aW9uKEEpe1hBPW5ldyBVaW50OEFycmF5KGsuZXhwb3J0cy5tZW1vcnkuYnVmZmVyKX19fSx5QT1jbGFzc3tpbml0KCl7cmV0dXJuIElBfHwodHlwZW9mIGZldGNoPCJ1Ij9JQT1mZXRjaCgiZGF0YTphcHBsaWNhdGlvbi93YXNtO2Jhc2U2NCwiK0tJKS50aGVuKEk9PkkuYXJyYXlCdWZmZXIoKSkudGhlbihJPT5XZWJBc3NlbWJseS5pbnN0YW50aWF0ZShJLFZBKSkudGhlbih0aGlzLl9pbml0KTpJQT1XZWJBc3NlbWJseS5pbnN0YW50aWF0ZShCdWZmZXIuZnJvbShLSSwiYmFzZTY0IiksVkEpLnRoZW4odGhpcy5faW5pdCksSUEpfV9pbml0KEkpe2s9SS5pbnN0YW5jZSxWQS5lbnYuZW1zY3JpcHRlbl9ub3RpZnlfbWVtb3J5X2dyb3d0aCgwKX1kZWNvZGUoSSx0PTApe2lmKCFrKXRocm93IG5ldyBFcnJvcigiWlNURERlY29kZXI6IEF3YWl0IC5pbml0KCkgYmVmb3JlIGRlY29kaW5nLiIpO2xldCBlPUkuYnl0ZUxlbmd0aCxnPWsuZXhwb3J0cy5tYWxsb2MoZSk7WEEuc2V0KEksZyksdD10fHxOdW1iZXIoay5leHBvcnRzLlpTVERfZmluZERlY29tcHJlc3NlZFNpemUoZyxlKSk7bGV0IHI9ay5leHBvcnRzLm1hbGxvYyh0KSxpPWsuZXhwb3J0cy5aU1REX2RlY29tcHJlc3Mocix0LGcsZSkscz1YQS5zbGljZShyLHIraSk7cmV0dXJuIGsuZXhwb3J0cy5mcmVlKGcpLGsuZXhwb3J0cy5mcmVlKHIpLHN9fSxLST0iQUdGemJRRUFBQUFCYmc1Z0EzOS9md0YvWUFGL0FYOWdBbjkvQUdBQmZ3QmdCWDkvZjM5L0FYOWdBMzkvZndCZ0JIOS9mMzhCZjJBQUFYOWdBbjkvQVg5Z0IzOS9mMzkvZjM4QmYyQUNmMzhCZm1BSWYzOS9mMzkvZjM4QmYyQUZmMzkvZjM4QVlBNS9mMzkvZjM5L2YzOS9mMzkvZndGL0FpY0JBMlZ1ZGg5bGJYTmpjbWx3ZEdWdVgyNXZkR2xtZVY5dFpXMXZjbmxmWjNKdmQzUm9BQU1ESXlJSEFBQUJBUU1IQXdFQUNRUUFCUUVJQ0FFRkJnUUVCQU1HQUFBS0FBVUxEQTBHQkFVQmNBRUJBUVVIQVFHQUFvQ0FBZ1lJQVg4QlFZQ2pCQXNIcmdFTEJtMWxiVzl5ZVFJQUJtMWhiR3h2WXdBRkJHWnlaV1VBQmd4YVUxUkVYMmx6UlhKeWIzSUFFaGxhVTFSRVgyWnBibVJFWldOdmJYQnlaWE56WldSVGFYcGxBQndQV2xOVVJGOWtaV052YlhCeVpYTnpBQ0laWDE5cGJtUnBjbVZqZEY5bWRXNWpkR2x2Ymw5MFlXSnNaUUVBRUY5ZlpYSnlibTlmYkc5allYUnBiMjRBQVFsemRHRmphMU5oZG1VQUJ3eHpkR0ZqYTFKbGMzUnZjbVVBQ0FwemRHRmphMEZzYkc5akFBa0tpL0lCSWdVQVFZUWZDek1CQVg4Z0FnUkFJQUFoQXdOQUlBTWdBUzBBQURvQUFDQURRUUZxSVFNZ0FVRUJhaUVCSUFKQkFXc2lBZzBBQ3dzZ0FBc3BBUUYvSUFJRVFDQUFJUU1EUUNBRElBRTZBQUFnQTBFQmFpRURJQUpCQVdzaUFnMEFDd3NnQUF0c0FRSi9RWUFmS0FJQUlnRWdBRUVIYWtGNGNTSUNhaUVBQWtBZ0FrRUFJQUFnQVUwYkRRQWdBRDhBUVJCMFN3UkFJQUEvQUVFUWRHdEIvLzhEYWtFUWRrQUFRWDlHQkg5QkFBVkJBQkFBUVFFTFJRMEJDMEdBSHlBQU5nSUFJQUVQQzBHRUgwRXdOZ0lBUVg4THVTY0JDMzhqQUVFUWF5SUtKQUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQjlBRk5CRUJCaUI4b0FnQWlCa0VRSUFCQkMycEJlSEVnQUVFTFNSc2lCVUVEZGlJQWRpSUJRUU54QkVBQ1FDQUJRWDl6UVFGeElBQnFJZ0pCQTNRaUFVR3dIMm9pQUNBQlFiZ2ZhaWdDQUNJQktBSUlJZ1JHQkVCQmlCOGdCa0YrSUFKM2NUWUNBQXdCQ3lBRUlBQTJBZ3dnQUNBRU5nSUlDeUFCUVFocUlRQWdBU0FDUVFOMElnSkJBM0kyQWdRZ0FTQUNhaUlCSUFFb0FnUkJBWEkyQWdRTUR3c2dCVUdRSHlnQ0FDSUhUUTBCSUFFRVFBSkFRUUlnQUhRaUFrRUFJQUpyY2lBQklBQjBjV2dpQVVFRGRDSUFRYkFmYWlJQ0lBQkJ1QjlxS0FJQUlnQW9BZ2dpQkVZRVFFR0lIeUFHUVg0Z0FYZHhJZ1kyQWdBTUFRc2dCQ0FDTmdJTUlBSWdCRFlDQ0FzZ0FDQUZRUU55TmdJRUlBQWdCV29pQ0NBQlFRTjBJZ0VnQldzaUJFRUJjallDQkNBQUlBRnFJQVEyQWdBZ0J3UkFJQWRCZUhGQnNCOXFJUUZCbkI4b0FnQWhBZ0ovSUFaQkFTQUhRUU4yZENJRGNVVUVRRUdJSHlBRElBWnlOZ0lBSUFFTUFRc2dBU2dDQ0FzaEF5QUJJQUkyQWdnZ0F5QUNOZ0lNSUFJZ0FUWUNEQ0FDSUFNMkFnZ0xJQUJCQ0dvaEFFR2NIeUFJTmdJQVFaQWZJQVEyQWdBTUR3dEJqQjhvQWdBaUMwVU5BU0FMYUVFQ2RFRzRJV29vQWdBaUFpZ0NCRUY0Y1NBRmF5RURJQUloQVFOQUFrQWdBU2dDRUNJQVJRUkFJQUVvQWhRaUFFVU5BUXNnQUNnQ0JFRjRjU0FGYXlJQklBTWdBU0FEU1NJQkd5RURJQUFnQWlBQkd5RUNJQUFoQVF3QkN3c2dBaWdDR0NFSklBSWdBaWdDRENJRVJ3UkFRWmdmS0FJQUdpQUNLQUlJSWdBZ0JEWUNEQ0FFSUFBMkFnZ01EZ3NnQWtFVWFpSUJLQUlBSWdCRkJFQWdBaWdDRUNJQVJRMERJQUpCRUdvaEFRc0RRQ0FCSVFnZ0FDSUVRUlJxSWdFb0FnQWlBQTBBSUFSQkVHb2hBU0FFS0FJUUlnQU5BQXNnQ0VFQU5nSUFEQTBMUVg4aEJTQUFRYjkvU3cwQUlBQkJDMm9pQUVGNGNTRUZRWXdmS0FJQUlnaEZEUUJCQUNBRmF5RURBa0FDUUFKQUFuOUJBQ0FGUVlBQ1NRMEFHa0VmSUFWQi8vLy9CMHNOQUJvZ0JVRW1JQUJCQ0habklnQnJka0VCY1NBQVFRRjBhMEUrYWdzaUIwRUNkRUc0SVdvb0FnQWlBVVVFUUVFQUlRQU1BUXRCQUNFQUlBVkJHU0FIUVFGMmEwRUFJQWRCSDBjYmRDRUNBMEFDUUNBQktBSUVRWGh4SUFWcklnWWdBMDhOQUNBQklRUWdCaUlERFFCQkFDRURJQUVoQUF3REN5QUFJQUVvQWhRaUJpQUdJQUVnQWtFZGRrRUVjV29vQWhBaUFVWWJJQUFnQmhzaEFDQUNRUUYwSVFJZ0FRMEFDd3NnQUNBRWNrVUVRRUVBSVFSQkFpQUhkQ0lBUVFBZ0FHdHlJQWh4SWdCRkRRTWdBR2hCQW5SQnVDRnFLQUlBSVFBTElBQkZEUUVMQTBBZ0FDZ0NCRUY0Y1NBRmF5SUNJQU5KSVFFZ0FpQURJQUViSVFNZ0FDQUVJQUViSVFRZ0FDZ0NFQ0lCQkg4Z0FRVWdBQ2dDRkFzaUFBMEFDd3NnQkVVTkFDQURRWkFmS0FJQUlBVnJUdzBBSUFRb0FoZ2hCeUFFSUFRb0Fnd2lBa2NFUUVHWUh5Z0NBQm9nQkNnQ0NDSUFJQUkyQWd3Z0FpQUFOZ0lJREF3TElBUkJGR29pQVNnQ0FDSUFSUVJBSUFRb0FoQWlBRVVOQXlBRVFSQnFJUUVMQTBBZ0FTRUdJQUFpQWtFVWFpSUJLQUlBSWdBTkFDQUNRUkJxSVFFZ0FpZ0NFQ0lBRFFBTElBWkJBRFlDQUF3TEN5QUZRWkFmS0FJQUlnUk5CRUJCbkI4b0FnQWhBQUpBSUFRZ0JXc2lBVUVRVHdSQUlBQWdCV29pQWlBQlFRRnlOZ0lFSUFBZ0JHb2dBVFlDQUNBQUlBVkJBM0kyQWdRTUFRc2dBQ0FFUVFOeU5nSUVJQUFnQkdvaUFTQUJLQUlFUVFGeU5nSUVRUUFoQWtFQUlRRUxRWkFmSUFFMkFnQkJuQjhnQWpZQ0FDQUFRUWhxSVFBTURRc2dCVUdVSHlnQ0FDSUNTUVJBUVpRZklBSWdCV3NpQVRZQ0FFR2dIMEdnSHlnQ0FDSUFJQVZxSWdJMkFnQWdBaUFCUVFGeU5nSUVJQUFnQlVFRGNqWUNCQ0FBUVFocUlRQU1EUXRCQUNFQUlBVkJMMm9pQXdKL1FlQWlLQUlBQkVCQjZDSW9BZ0FNQVF0QjdDSkNmemNDQUVIa0lrS0FvSUNBZ0lBRU53SUFRZUFpSUFwQkRHcEJjSEZCMktyVnFnVnpOZ0lBUWZRaVFRQTJBZ0JCeENKQkFEWUNBRUdBSUFzaUFXb2lCa0VBSUFGcklnaHhJZ0VnQlUwTkRFSEFJaWdDQUNJRUJFQkJ1Q0lvQWdBaUJ5QUJhaUlKSUFkTklBUWdDVWx5RFEwTEFrQkJ4Q0l0QUFCQkJIRkZCRUFDUUFKQUFrQUNRRUdnSHlnQ0FDSUVCRUJCeUNJaEFBTkFJQVFnQUNnQ0FDSUhUd1JBSUFjZ0FDZ0NCR29nQkVzTkF3c2dBQ2dDQ0NJQURRQUxDMEVBRUFRaUFrRi9SZzBESUFFaEJrSGtJaWdDQUNJQVFRRnJJZ1FnQW5FRVFDQUJJQUpySUFJZ0JHcEJBQ0FBYTNGcUlRWUxJQVVnQms4TkEwSEFJaWdDQUNJQUJFQkJ1Q0lvQWdBaUJDQUdhaUlJSUFSTklBQWdDRWx5RFFRTElBWVFCQ0lBSUFKSERRRU1CUXNnQmlBQ2F5QUljU0lHRUFRaUFpQUFLQUlBSUFBb0FnUnFSZzBCSUFJaEFBc2dBRUYvUmcwQklBVkJNR29nQmswRVFDQUFJUUlNQkF0QjZDSW9BZ0FpQWlBRElBWnJha0VBSUFKcmNTSUNFQVJCZjBZTkFTQUNJQVpxSVFZZ0FDRUNEQU1MSUFKQmYwY05BZ3RCeENKQnhDSW9BZ0JCQkhJMkFnQUxJQUVRQkNJQ1FYOUdRUUFRQkNJQVFYOUdjaUFBSUFKTmNnMEZJQUFnQW1zaUJpQUZRU2hxVFEwRkMwRzRJa0c0SWlnQ0FDQUdhaUlBTmdJQVFid2lLQUlBSUFCSkJFQkJ2Q0lnQURZQ0FBc0NRRUdnSHlnQ0FDSURCRUJCeUNJaEFBTkFJQUlnQUNnQ0FDSUJJQUFvQWdRaUJHcEdEUUlnQUNnQ0NDSUFEUUFMREFRTFFaZ2ZLQUlBSWdCQkFDQUFJQUpORzBVRVFFR1lIeUFDTmdJQUMwRUFJUUJCekNJZ0JqWUNBRUhJSWlBQ05nSUFRYWdmUVg4MkFnQkJyQjlCNENJb0FnQTJBZ0JCMUNKQkFEWUNBQU5BSUFCQkEzUWlBVUc0SDJvZ0FVR3dIMm9pQkRZQ0FDQUJRYndmYWlBRU5nSUFJQUJCQVdvaUFFRWdSdzBBQzBHVUh5QUdRU2hySWdCQmVDQUNhMEVIY1NJQmF5SUVOZ0lBUWFBZklBRWdBbW9pQVRZQ0FDQUJJQVJCQVhJMkFnUWdBQ0FDYWtFb05nSUVRYVFmUWZBaUtBSUFOZ0lBREFRTElBSWdBMDBnQVNBRFMzSU5BaUFBS0FJTVFRaHhEUUlnQUNBRUlBWnFOZ0lFUWFBZklBTkJlQ0FEYTBFSGNTSUFhaUlCTmdJQVFaUWZRWlFmS0FJQUlBWnFJZ0lnQUdzaUFEWUNBQ0FCSUFCQkFYSTJBZ1FnQWlBRGFrRW9OZ0lFUWFRZlFmQWlLQUlBTmdJQURBTUxRUUFoQkF3S0MwRUFJUUlNQ0F0Qm1COG9BZ0FnQWtzRVFFR1lIeUFDTmdJQUN5QUNJQVpxSVFGQnlDSWhBQUpBQWtBQ1FBTkFJQUVnQUNnQ0FFY0VRQ0FBS0FJSUlnQU5BUXdDQ3dzZ0FDMEFERUVJY1VVTkFRdEJ5Q0loQUFOQUlBTWdBQ2dDQUNJQlR3UkFJQUVnQUNnQ0JHb2lCQ0FEU3cwREN5QUFLQUlJSVFBTUFBc0FDeUFBSUFJMkFnQWdBQ0FBS0FJRUlBWnFOZ0lFSUFKQmVDQUNhMEVIY1dvaUJ5QUZRUU55TmdJRUlBRkJlQ0FCYTBFSGNXb2lCaUFGSUFkcUlnVnJJUUFnQXlBR1JnUkFRYUFmSUFVMkFnQkJsQjlCbEI4b0FnQWdBR29pQURZQ0FDQUZJQUJCQVhJMkFnUU1DQXRCbkI4b0FnQWdCa1lFUUVHY0h5QUZOZ0lBUVpBZlFaQWZLQUlBSUFCcUlnQTJBZ0FnQlNBQVFRRnlOZ0lFSUFBZ0JXb2dBRFlDQUF3SUN5QUdLQUlFSWdOQkEzRkJBVWNOQmlBRFFYaHhJUWtnQTBIL0FVMEVRQ0FHS0FJTUlnRWdCaWdDQ0NJQ1JnUkFRWWdmUVlnZktBSUFRWDRnQTBFRGRuZHhOZ0lBREFjTElBSWdBVFlDRENBQklBSTJBZ2dNQmdzZ0JpZ0NHQ0VJSUFZZ0JpZ0NEQ0lDUndSQUlBWW9BZ2dpQVNBQ05nSU1JQUlnQVRZQ0NBd0ZDeUFHUVJScUlnRW9BZ0FpQTBVRVFDQUdLQUlRSWdORkRRUWdCa0VRYWlFQkN3TkFJQUVoQkNBRElnSkJGR29pQVNnQ0FDSUREUUFnQWtFUWFpRUJJQUlvQWhBaUF3MEFDeUFFUVFBMkFnQU1CQXRCbEI4Z0JrRW9heUlBUVhnZ0FtdEJCM0VpQVdzaUNEWUNBRUdnSHlBQklBSnFJZ0UyQWdBZ0FTQUlRUUZ5TmdJRUlBQWdBbXBCS0RZQ0JFR2tIMEh3SWlnQ0FEWUNBQ0FESUFSQkp5QUVhMEVIY1dwQkwyc2lBQ0FBSUFOQkVHcEpHeUlCUVJzMkFnUWdBVUhRSWlrQ0FEY0NFQ0FCUWNnaUtRSUFOd0lJUWRBaUlBRkJDR28yQWdCQnpDSWdCallDQUVISUlpQUNOZ0lBUWRRaVFRQTJBZ0FnQVVFWWFpRUFBMEFnQUVFSE5nSUVJQUJCQ0dvZ0FFRUVhaUVBSUFSSkRRQUxJQUVnQTBZTkFDQUJJQUVvQWdSQmZuRTJBZ1FnQXlBQklBTnJJZ0pCQVhJMkFnUWdBU0FDTmdJQUlBSkIvd0ZOQkVBZ0FrRjRjVUd3SDJvaEFBSi9RWWdmS0FJQUlnRkJBU0FDUVFOMmRDSUNjVVVFUUVHSUh5QUJJQUp5TmdJQUlBQU1BUXNnQUNnQ0NBc2hBU0FBSUFNMkFnZ2dBU0FETmdJTUlBTWdBRFlDRENBRElBRTJBZ2dNQVF0Qkh5RUFJQUpCLy8vL0IwMEVRQ0FDUVNZZ0FrRUlkbWNpQUd0MlFRRnhJQUJCQVhSclFUNXFJUUFMSUFNZ0FEWUNIQ0FEUWdBM0FoQWdBRUVDZEVHNElXb2hBUUpBQWtCQmpCOG9BZ0FpQkVFQklBQjBJZ1p4UlFSQVFZd2ZJQVFnQm5JMkFnQWdBU0FETmdJQURBRUxJQUpCR1NBQVFRRjJhMEVBSUFCQkgwY2JkQ0VBSUFFb0FnQWhCQU5BSUFRaUFTZ0NCRUY0Y1NBQ1JnMENJQUJCSFhZaEJDQUFRUUYwSVFBZ0FTQUVRUVJ4YWlJR0tBSVFJZ1FOQUFzZ0JpQUROZ0lRQ3lBRElBRTJBaGdnQXlBRE5nSU1JQU1nQXpZQ0NBd0JDeUFCS0FJSUlnQWdBellDRENBQklBTTJBZ2dnQTBFQU5nSVlJQU1nQVRZQ0RDQURJQUEyQWdnTFFaUWZLQUlBSWdBZ0JVME5BRUdVSHlBQUlBVnJJZ0UyQWdCQm9COUJvQjhvQWdBaUFDQUZhaUlDTmdJQUlBSWdBVUVCY2pZQ0JDQUFJQVZCQTNJMkFnUWdBRUVJYWlFQURBZ0xRWVFmUVRBMkFnQkJBQ0VBREFjTFFRQWhBZ3NnQ0VVTkFBSkFJQVlvQWh3aUFVRUNkRUc0SVdvaUJDZ0NBQ0FHUmdSQUlBUWdBallDQUNBQ0RRRkJqQjlCakI4b0FnQkJmaUFCZDNFMkFnQU1BZ3NnQ0VFUVFSUWdDQ2dDRUNBR1JodHFJQUkyQWdBZ0FrVU5BUXNnQWlBSU5nSVlJQVlvQWhBaUFRUkFJQUlnQVRZQ0VDQUJJQUkyQWhnTElBWW9BaFFpQVVVTkFDQUNJQUUyQWhRZ0FTQUNOZ0lZQ3lBQUlBbHFJUUFnQmlBSmFpSUdLQUlFSVFNTElBWWdBMEYrY1RZQ0JDQUZJQUJCQVhJMkFnUWdBQ0FGYWlBQU5nSUFJQUJCL3dGTkJFQWdBRUY0Y1VHd0gyb2hBUUovUVlnZktBSUFJZ0pCQVNBQVFRTjJkQ0lBY1VVRVFFR0lIeUFBSUFKeU5nSUFJQUVNQVFzZ0FTZ0NDQXNoQUNBQklBVTJBZ2dnQUNBRk5nSU1JQVVnQVRZQ0RDQUZJQUEyQWdnTUFRdEJIeUVESUFCQi8vLy9CMDBFUUNBQVFTWWdBRUVJZG1jaUFXdDJRUUZ4SUFGQkFYUnJRVDVxSVFNTElBVWdBellDSENBRlFnQTNBaEFnQTBFQ2RFRzRJV29oQVFKQUFrQkJqQjhvQWdBaUFrRUJJQU4wSWdSeFJRUkFRWXdmSUFJZ0JISTJBZ0FnQVNBRk5nSUFEQUVMSUFCQkdTQURRUUYyYTBFQUlBTkJIMGNiZENFRElBRW9BZ0FoQWdOQUlBSWlBU2dDQkVGNGNTQUFSZzBDSUFOQkhYWWhBaUFEUVFGMElRTWdBU0FDUVFSeGFpSUVLQUlRSWdJTkFBc2dCQ0FGTmdJUUN5QUZJQUUyQWhnZ0JTQUZOZ0lNSUFVZ0JUWUNDQXdCQ3lBQktBSUlJZ0FnQlRZQ0RDQUJJQVUyQWdnZ0JVRUFOZ0lZSUFVZ0FUWUNEQ0FGSUFBMkFnZ0xJQWRCQ0dvaEFBd0NDd0pBSUFkRkRRQUNRQ0FFS0FJY0lnQkJBblJCdUNGcUlnRW9BZ0FnQkVZRVFDQUJJQUkyQWdBZ0FnMEJRWXdmSUFoQmZpQUFkM0VpQ0RZQ0FBd0NDeUFIUVJCQkZDQUhLQUlRSUFSR0cyb2dBallDQUNBQ1JRMEJDeUFDSUFjMkFoZ2dCQ2dDRUNJQUJFQWdBaUFBTmdJUUlBQWdBallDR0FzZ0JDZ0NGQ0lBUlEwQUlBSWdBRFlDRkNBQUlBSTJBaGdMQWtBZ0EwRVBUUVJBSUFRZ0F5QUZhaUlBUVFOeU5nSUVJQUFnQkdvaUFDQUFLQUlFUVFGeU5nSUVEQUVMSUFRZ0JVRURjallDQkNBRUlBVnFJZ0lnQTBFQmNqWUNCQ0FDSUFOcUlBTTJBZ0FnQTBIL0FVMEVRQ0FEUVhoeFFiQWZhaUVBQW45QmlCOG9BZ0FpQVVFQklBTkJBM1owSWdOeFJRUkFRWWdmSUFFZ0EzSTJBZ0FnQUF3QkN5QUFLQUlJQ3lFQklBQWdBallDQ0NBQklBSTJBZ3dnQWlBQU5nSU1JQUlnQVRZQ0NBd0JDMEVmSVFBZ0EwSC8vLzhIVFFSQUlBTkJKaUFEUVFoMlp5SUFhM1pCQVhFZ0FFRUJkR3RCUG1vaEFBc2dBaUFBTmdJY0lBSkNBRGNDRUNBQVFRSjBRYmdoYWlFQkFrQUNRQ0FJUVFFZ0FIUWlCbkZGQkVCQmpCOGdCaUFJY2pZQ0FDQUJJQUkyQWdBTUFRc2dBMEVaSUFCQkFYWnJRUUFnQUVFZlJ4dDBJUUFnQVNnQ0FDRUZBMEFnQlNJQktBSUVRWGh4SUFOR0RRSWdBRUVkZGlFR0lBQkJBWFFoQUNBQklBWkJCSEZxSWdZb0FoQWlCUTBBQ3lBR0lBSTJBaEFMSUFJZ0FUWUNHQ0FDSUFJMkFnd2dBaUFDTmdJSURBRUxJQUVvQWdnaUFDQUNOZ0lNSUFFZ0FqWUNDQ0FDUVFBMkFoZ2dBaUFCTmdJTUlBSWdBRFlDQ0FzZ0JFRUlhaUVBREFFTEFrQWdDVVVOQUFKQUlBSW9BaHdpQUVFQ2RFRzRJV29pQVNnQ0FDQUNSZ1JBSUFFZ0JEWUNBQ0FFRFFGQmpCOGdDMEYrSUFCM2NUWUNBQXdDQ3lBSlFSQkJGQ0FKS0FJUUlBSkdHMm9nQkRZQ0FDQUVSUTBCQ3lBRUlBazJBaGdnQWlnQ0VDSUFCRUFnQkNBQU5nSVFJQUFnQkRZQ0dBc2dBaWdDRkNJQVJRMEFJQVFnQURZQ0ZDQUFJQVEyQWhnTEFrQWdBMEVQVFFSQUlBSWdBeUFGYWlJQVFRTnlOZ0lFSUFBZ0Ftb2lBQ0FBS0FJRVFRRnlOZ0lFREFFTElBSWdCVUVEY2pZQ0JDQUNJQVZxSWdRZ0EwRUJjallDQkNBRElBUnFJQU0yQWdBZ0J3UkFJQWRCZUhGQnNCOXFJUUJCbkI4b0FnQWhBUUovUVFFZ0IwRURkblFpQlNBR2NVVUVRRUdJSHlBRklBWnlOZ0lBSUFBTUFRc2dBQ2dDQ0FzaEJpQUFJQUUyQWdnZ0JpQUJOZ0lNSUFFZ0FEWUNEQ0FCSUFZMkFnZ0xRWndmSUFRMkFnQkJrQjhnQXpZQ0FBc2dBa0VJYWlFQUN5QUtRUkJxSkFBZ0FBdlNDd0VIZndKQUlBQkZEUUFnQUVFSWF5SUNJQUJCQkdzb0FnQWlBVUY0Y1NJQWFpRUZBa0FnQVVFQmNRMEFJQUZCQTNGRkRRRWdBaUFDS0FJQUlnRnJJZ0pCbUI4b0FnQkpEUUVnQUNBQmFpRUFBa0FDUUVHY0h5Z0NBQ0FDUndSQUlBRkIvd0ZOQkVBZ0FVRURkaUVFSUFJb0Fnd2lBU0FDS0FJSUlnTkdCRUJCaUI5QmlCOG9BZ0JCZmlBRWQzRTJBZ0FNQlFzZ0F5QUJOZ0lNSUFFZ0F6WUNDQXdFQ3lBQ0tBSVlJUVlnQWlBQ0tBSU1JZ0ZIQkVBZ0FpZ0NDQ0lESUFFMkFnd2dBU0FETmdJSURBTUxJQUpCRkdvaUJDZ0NBQ0lEUlFSQUlBSW9BaEFpQTBVTkFpQUNRUkJxSVFRTEEwQWdCQ0VISUFNaUFVRVVhaUlFS0FJQUlnTU5BQ0FCUVJCcUlRUWdBU2dDRUNJRERRQUxJQWRCQURZQ0FBd0NDeUFGS0FJRUlnRkJBM0ZCQTBjTkFrR1FIeUFBTmdJQUlBVWdBVUYrY1RZQ0JDQUNJQUJCQVhJMkFnUWdCU0FBTmdJQUR3dEJBQ0VCQ3lBR1JRMEFBa0FnQWlnQ0hDSURRUUowUWJnaGFpSUVLQUlBSUFKR0JFQWdCQ0FCTmdJQUlBRU5BVUdNSDBHTUh5Z0NBRUYrSUFOM2NUWUNBQXdDQ3lBR1FSQkJGQ0FHS0FJUUlBSkdHMm9nQVRZQ0FDQUJSUTBCQ3lBQklBWTJBaGdnQWlnQ0VDSURCRUFnQVNBRE5nSVFJQU1nQVRZQ0dBc2dBaWdDRkNJRFJRMEFJQUVnQXpZQ0ZDQURJQUUyQWhnTElBSWdCVThOQUNBRktBSUVJZ0ZCQVhGRkRRQUNRQUpBQWtBQ1FDQUJRUUp4UlFSQVFhQWZLQUlBSUFWR0JFQkJvQjhnQWpZQ0FFR1VIMEdVSHlnQ0FDQUFhaUlBTmdJQUlBSWdBRUVCY2pZQ0JDQUNRWndmS0FJQVJ3MEdRWkFmUVFBMkFnQkJuQjlCQURZQ0FBOExRWndmS0FJQUlBVkdCRUJCbkI4Z0FqWUNBRUdRSDBHUUh5Z0NBQ0FBYWlJQU5nSUFJQUlnQUVFQmNqWUNCQ0FBSUFKcUlBQTJBZ0FQQ3lBQlFYaHhJQUJxSVFBZ0FVSC9BVTBFUUNBQlFRTjJJUVFnQlNnQ0RDSUJJQVVvQWdnaUEwWUVRRUdJSDBHSUh5Z0NBRUYrSUFSM2NUWUNBQXdGQ3lBRElBRTJBZ3dnQVNBRE5nSUlEQVFMSUFVb0FoZ2hCaUFGSUFVb0Fnd2lBVWNFUUVHWUh5Z0NBQm9nQlNnQ0NDSURJQUUyQWd3Z0FTQUROZ0lJREFNTElBVkJGR29pQkNnQ0FDSURSUVJBSUFVb0FoQWlBMFVOQWlBRlFSQnFJUVFMQTBBZ0JDRUhJQU1pQVVFVWFpSUVLQUlBSWdNTkFDQUJRUkJxSVFRZ0FTZ0NFQ0lERFFBTElBZEJBRFlDQUF3Q0N5QUZJQUZCZm5FMkFnUWdBaUFBUVFGeU5nSUVJQUFnQW1vZ0FEWUNBQXdEQzBFQUlRRUxJQVpGRFFBQ1FDQUZLQUljSWdOQkFuUkJ1Q0ZxSWdRb0FnQWdCVVlFUUNBRUlBRTJBZ0FnQVEwQlFZd2ZRWXdmS0FJQVFYNGdBM2R4TmdJQURBSUxJQVpCRUVFVUlBWW9BaEFnQlVZYmFpQUJOZ0lBSUFGRkRRRUxJQUVnQmpZQ0dDQUZLQUlRSWdNRVFDQUJJQU0yQWhBZ0F5QUJOZ0lZQ3lBRktBSVVJZ05GRFFBZ0FTQUROZ0lVSUFNZ0FUWUNHQXNnQWlBQVFRRnlOZ0lFSUFBZ0Ftb2dBRFlDQUNBQ1Fad2ZLQUlBUncwQVFaQWZJQUEyQWdBUEN5QUFRZjhCVFFSQUlBQkJlSEZCc0I5cUlRRUNmMEdJSHlnQ0FDSURRUUVnQUVFRGRuUWlBSEZGQkVCQmlCOGdBQ0FEY2pZQ0FDQUJEQUVMSUFFb0FnZ0xJUUFnQVNBQ05nSUlJQUFnQWpZQ0RDQUNJQUUyQWd3Z0FpQUFOZ0lJRHd0Qkh5RURJQUJCLy8vL0IwMEVRQ0FBUVNZZ0FFRUlkbWNpQVd0MlFRRnhJQUZCQVhSclFUNXFJUU1MSUFJZ0F6WUNIQ0FDUWdBM0FoQWdBMEVDZEVHNElXb2hBUUpBQWtBQ1FFR01IeWdDQUNJRVFRRWdBM1FpQjNGRkJFQkJqQjhnQkNBSGNqWUNBQ0FCSUFJMkFnQWdBaUFCTmdJWURBRUxJQUJCR1NBRFFRRjJhMEVBSUFOQkgwY2JkQ0VESUFFb0FnQWhBUU5BSUFFaUJDZ0NCRUY0Y1NBQVJnMENJQU5CSFhZaEFTQURRUUYwSVFNZ0JDQUJRUVJ4YWlJSFFSQnFLQUlBSWdFTkFBc2dCeUFDTmdJUUlBSWdCRFlDR0FzZ0FpQUNOZ0lNSUFJZ0FqWUNDQXdCQ3lBRUtBSUlJZ0FnQWpZQ0RDQUVJQUkyQWdnZ0FrRUFOZ0lZSUFJZ0JEWUNEQ0FDSUFBMkFnZ0xRYWdmUWFnZktBSUFRUUZySWdCQmZ5QUFHellDQUFzTEJBQWpBQXNHQUNBQUpBQUxFQUFqQUNBQWEwRndjU0lBSkFBZ0FBdEtBUUYvSUFBZ0FVa0VRQ0FBSUFFZ0FoQUNEd3NnQWdSQUlBQWdBbW9oQXlBQklBSnFJUUVEUUNBRFFRRnJJZ01nQVVFQmF5SUJMUUFBT2dBQUlBSkJBV3NpQWcwQUN3c2dBQXY5RGdJUmZ3RitJd0JCTUdzaUJ5UUFRYmgvSVFnQ1FDQUZSUTBBSUFRc0FBQWlDVUgvQVhFaEN3SkFJQWxCQUVnRVFDQUxRZjRBYTBFQmRpSUdJQVZQRFFKQmJDRUlJQXRCL3dCcklndEIvd0ZMRFFJZ0JFRUJhaUVJUVFBaEJRTkFJQVVnQzA4RVFDQUxJUWdnQmlFTERBTUZJQUFnQldvZ0NDQUZRUUYyYWlJRUxRQUFRUVIyT2dBQUlBQWdCVUVCY21vZ0JDMEFBRUVQY1RvQUFDQUZRUUpxSVFVTUFRc0FDd0FMSUFVZ0MwME5BU0FIUWY4Qk5nSUVJQVlnQjBFRWFpQUhRUWhxSUFSQkFXb2lEaUFMRUF3aUJFR0lmMHNFUUNBRUlRZ01BZ3RCVkNFSUlBY29BZ2dpRUVFR1N3MEJJQWNvQWdRaUVVRUJkQ0lKUVFKcXJVSUJJQkN0aGlJWVFRRWdFSFFpRFVFQmFpSUZyVUlDaG54OFFndDhRdnovLy8vLy8vLy8vd0NEUXVRQ1ZnMEJRVkloQ0NBUlFmOEJTdzBCSUExQmYzTkJBblJCNUFKcXJTQVJRUUZxSWhWQkFYU3RJQmg4UWdoOFZBMEJJQXNnQkdzaEZpQUVJQTVxSVJjZ0JrR0FCR29pRWlBRlFRSjBhaUlSSUFscVFRSnFJUTRnQmtHRUJHb2hFMEdBZ0FJZ0VIUkJFSFloQ1VFQUlRVkJBU0VQSUExQkFXc2lGQ0VLQTBBZ0JTQVZSa1VFUUFKQUlBWWdCVUVCZENJSWFpOEJBQ0lFUWYvL0EwWUVRQ0FUSUFwQkFuUnFJQVU2QUFJZ0NrRUJheUVLUVFFaEJBd0JDeUFQUVFBZ0NTQUV3VW9iSVE4TElBZ2dFV29nQkRzQkFDQUZRUUZxSVFVTUFRc0xJQVlnRHpzQmdnUWdCaUFRT3dHQUJBSkFJQW9nRkVZRVFDQU5RUU4ySVFoQ0FDRVlRUUFoRHdOQUlBd2dGVVlFUUNBSUlBMUJBWFpxUVFOcUlnbEJBWFFoQ0VFQUlRUkJBQ0VLQTBCQkFDRUZJQW9nRFU4TkJBTkFJQVZCQWtaRkJFQWdFeUFGSUFsc0lBUnFJQlJ4UVFKMGFpQU9JQVVnQ21wcUxRQUFPZ0FDSUFWQkFXb2hCUXdCQ3dzZ0NrRUNhaUVLSUFRZ0NHb2dGSEVoQkF3QUN3QUZJQVlnREVFQmRHb3VBUUFoQ1NBT0lBOXFJZ1FnR0RjQUFFRUlJUVVEUUNBRklBbE9SUVJBSUFRZ0JXb2dHRGNBQUNBRlFRaHFJUVVNQVFzTElCaENnWUtFaUpDZ3dJQUJmQ0VZSUF4QkFXb2hEQ0FKSUE5cUlROE1BUXNBQ3dBTElBMUJBM1lnRFVFQmRtcEJBMm9oQ0VFQUlRVURRQ0FNSUJWR1JRUkFRUUFoQ1NBR0lBeEJBWFJxTGdFQUlnUkJBQ0FFUVFCS0d5RUVBMEFnQkNBSlJrVUVRQ0FUSUFWQkFuUnFJQXc2QUFJRFFDQUZJQWhxSUJSeElnVWdDa3NOQUFzZ0NVRUJhaUVKREFFTEN5QU1RUUZxSVF3TUFRc0xRWDhoQ0NBRkRRSUxJQkJCQVdvaENFRUFJUVVEUUNBRklBMUdSUVJBSUJFZ0V5QUZRUUowYWlJT0xRQUNRUUYwYWlJRUlBUXZBUUFpQ1VFQmFqc0JBQ0FPSUFnZ0NXZEJZSE5xSWdRNkFBTWdEaUFKSUFSMElBMXJPd0VBSUFWQkFXb2hCUXdCQ3dzQ1FBSkFJQVl2QVlJRUJFQWdCMEVjYWlJRUlCY2dGaEFOSWdoQmlIOUxEUUlnQjBFVWFpQUVJQklRRGlBSFFReHFJQVFnRWhBT1FRQWhCUU5BSUFkQkhHb2lCQkFQSUFWQit3RkxjZzBDSUFBZ0JXb2lCaUFIUVJScUlBUVFFRG9BQUNBR0lBZEJER29nQkJBUU9nQUJJQVZCQW5JaEJDQUhRUnhxRUE4RVFDQUVJUVVNQXdVZ0FDQUVhaUFIUVJScUlBZEJIR29pQkJBUU9nQUFJQVlnQjBFTWFpQUVFQkE2QUFNZ0JVRUVhaUVGREFFTEFBc0FDeUFIUVJ4cUlnUWdGeUFXRUEwaUNFR0lmMHNOQVNBSFFSUnFJQVFnRWhBT0lBZEJER29nQkNBU0VBNUJBQ0VGQTBBZ0IwRWNhaUlFRUE4Z0JVSDdBVXR5UlFSQUlBQWdCV29pQmlBSFFSUnFJQVFRRVRvQUFDQUdJQWRCREdvZ0JCQVJPZ0FCSUFWQkFuSWhCQ0FIUVJ4cUVBOEVRQ0FFSVFVRklBQWdCR29nQjBFVWFpQUhRUnhxSWdRUUVUb0FBQ0FHSUFkQkRHb2dCQkFST2dBRElBVkJCR29oQlF3Q0N3c0xBbjhEUUVHNmZ5RUlJQVZCL1FGTERRTWdBQ0FGYWlJR0lBZEJGR29nQjBFY2FpSUpFQkU2QUFBZ0JrRUJhaUVFSUFrUUQwRURSZ1JBSUFkQkRHb2hDRUVDREFJTElBVkIvQUZMRFFNZ0JpQUhRUXhxSUFkQkhHb2lCQkFST2dBQklBVkJBbW9oQlNBRUVBOUJBMGNOQUFzZ0FDQUZhaUVFSUFkQkZHb2hDRUVEQ3lBRUlBZ2dCMEVjYWhBUk9nQUFJQVpxSUFCcklRZ01BUXNDZndOQVFicC9JUWdnQlVIOUFVc05BaUFBSUFWcUlnWWdCMEVVYWlBSFFSeHFJZ2tRRURvQUFDQUdRUUZxSVFRZ0NSQVBRUU5HQkVBZ0IwRU1haUVJUVFJTUFnc2dCVUg4QVVzTkFpQUdJQWRCREdvZ0IwRWNhaUlFRUJBNkFBRWdCVUVDYWlFRklBUVFEMEVEUncwQUN5QUFJQVZxSVFRZ0IwRVVhaUVJUVFNTElBUWdDQ0FIUVJ4cUVCQTZBQUFnQm1vZ0FHc2hDQXNnQ0VHSWYwc05BUXNnQ0NFRVFRQWhCU0FCUVFCQk5CQURJUWxCQUNFS0EwQWdCQ0FGUndSQUlBQWdCV29pQmkwQUFDSUJRUXRMQkVCQmJDRUlEQU1GSUFrZ0FVRUNkR29pQVNBQktBSUFRUUZxTmdJQUlBVkJBV29oQlVFQklBWXRBQUIwUVFGMUlBcHFJUW9NQWdzQUN3dEJiQ0VJSUFwRkRRQWdDbWNpQlVFZmN5SUJRUXRMRFFBZ0EwRWdJQVZyTmdJQVFRRkJBaUFCZENBS2F5SURaMEVmY3lJQmRDQURSdzBBSUFBZ0JHb2dBVUVCYWlJQU9nQUFJQWtnQUVFQ2RHb2lBQ0FBS0FJQVFRRnFOZ0lBSUFrb0FnUWlBRUVDU1NBQVFRRnhjZzBBSUFJZ0JFRUJhallDQUNBTFFRRnFJUWdMSUFkQk1Hb2tBQ0FJQzZBRkFReC9Jd0JCRUdzaURDUUFBbjhnQkVFSFRRUkFJQXhDQURjRENDQU1RUWhxSWdVZ0F5QUVFQUlhUVd3Z0FDQUJJQUlnQlVFSUVBd2lBQ0FBSUFSTEd5QUFJQUJCaVg5Skd3d0JDeUFBUVFBZ0FTZ0NBRUVCYWlJTlFRRjBFQU1oRDBGVUlBTW9BQUFpQmtFUGNTSUFRUXBMRFFBYUlBSWdBRUVGYWpZQ0FDQURJQVJxSWdKQkJHc2hCeUFDUVFkcklRc2dBRUVHYWlFT1FRUWhBaUFHUVFSMklRVkJJQ0FBZENJSVFRRnlJUWxCQUNFQVFRRWhCaUFESVFRRFFBSkFJQVpCQVhGRkJFQURRQ0FGUVg5elFZQ0FnSUI0Y21naUJrRVlTVVVFUUNBQVFTUnFJUUFnQkNBTFRRUi9JQVJCQTJvRklBUWdDMnRCQTNRZ0FtcEJIM0VoQWlBSEN5SUVLQUFBSUFKMklRVU1BUXNMSUFJZ0JrRWVjU0lLYWtFQ2FpRUNJQVpCQVhaQkEyd2dBR29nQlNBS2RrRURjV29pQUNBTlR3MEJBbjhnQkNBTFN5QUNRUU4ySUFScUlnVWdCMHR4UlFSQUlBSkJCM0VoQWlBRkRBRUxJQVFnQjJ0QkEzUWdBbXBCSDNFaEFpQUhDeUlFS0FBQUlBSjJJUVVMSUFVZ0NFRUJhM0VpQmlBSVFRRjBRUUZySWdvZ0NXc2lFRWtFZnlBT1FRRnJCU0FGSUFweElnVWdFRUVBSUFVZ0NFNGJheUVHSUE0TElRVWdEeUFBUVFGMGFpQUdRUUZySWdvN0FRQWdBRUVCYWlFQUlBSWdCV29oQWlBSVFRRWdCbXNnQ2lBR1FRQktHeUFKYWlJSlNnUkFJQWxCQWtnTkFVRWdJQWxuSWdWcklRNUJBU0FGUVI5emRDRUlDeUFBSUExUERRQWdDa0VBUnlFR0FuOGdCQ0FMU3lBQ1FRTjFJQVJxSWdVZ0IwdHhSUVJBSUFKQkIzRWhBaUFGREFFTElBSWdCQ0FIYTBFRGRHcEJIM0VoQWlBSEN5SUVLQUFBSUFKMklRVU1BUXNMUVd3Z0NVRUJSdzBBR2tGUUlBQWdEVXNOQUJwQmJDQUNRU0JLRFFBYUlBRWdBRUVCYXpZQ0FDQUVJQUpCQjJwQkEzVnFJQU5yQ3lBTVFSQnFKQUFMOGdFQkFYOGdBa1VFUUNBQVFnQTNBZ0FnQUVFQU5nSVFJQUJDQURjQ0NFRzRmdzhMSUFBZ0FUWUNEQ0FBSUFGQkJHbzJBaEFnQWtFRVR3UkFJQUFnQVNBQ2FpSUJRUVJySWdNMkFnZ2dBQ0FES0FBQU5nSUFJQUZCQVdzdEFBQWlBUVJBSUFBZ0FXZEJGMnMyQWdRZ0FnOExJQUJCQURZQ0JFRi9Ed3NnQUNBQk5nSUlJQUFnQVMwQUFDSUROZ0lBQWtBQ1FBSkFJQUpCQW1zT0FnRUFBZ3NnQUNBQkxRQUNRUkIwSUFOeUlnTTJBZ0FMSUFBZ0FTMEFBVUVJZENBRGFqWUNBQXNnQVNBQ2FrRUJheTBBQUNJQlJRUkFJQUJCQURZQ0JFRnNEd3NnQUNBQlp5QUNRUU4wYTBFSmFqWUNCQ0FDQzBRQkFuOGdBU0FDTHdFQUlnTWdBU2dDQkdvaUJEWUNCQ0FBSUFOQkFuUkJvQjFxS0FJQUlBRW9BZ0JCQUNBRWEzWnhOZ0lBSUFFUUR4b2dBQ0FDUVFScU5nSUVDNThCQVFSL1FRTWhBU0FBS0FJRUlnSkJJRTBFUUNBQUtBSUlJZ0VnQUNnQ0VFOEVRQ0FBSUFKQkIzRTJBZ1FnQUNBQklBSkJBM1pySWdJMkFnZ2dBQ0FDS0FBQU5nSUFRUUFQQ3lBQUtBSU1JZ01nQVVZRVFFRUJRUUlnQWtFZ1NSc1BDeUFBSUFFZ0FTQURheUFDUVFOMklnUWdBU0FFYXlBRFNTSUJHeUlEYXlJRU5nSUlJQUFnQWlBRFFRTjBhellDQkNBQUlBUW9BQUEyQWdBTElBRUxTQUVFZnlBQUtBSUVJQUFvQWdCQkFuUnFJZ0l0QUFJZ0FpOEJBQ0VFSUFFZ0FTZ0NCQ0lGSUFJdEFBTWlBbW8yQWdRZ0FDQUVJQUVvQWdBZ0JYUkJBQ0FDYTNacU5nSUFDMUlCQkg4Z0FDZ0NCQ0FBS0FJQVFRSjBhaUlDTFFBQ0lBSXZBUUFoQkNBQklBSXRBQU1pQWlBQktBSUVhaUlGTmdJRUlBQWdCQ0FDUVFKMFFhQWRhaWdDQUNBQktBSUFRUUFnQld0MmNXbzJBZ0FMQ0FBZ0FFR0lmMHNMR2dBZ0FBUkFJQUVFUUNBQ0lBQWdBUkVDQUE4TElBQVFCZ3NMcGdnQ0RYOEJmaU1BUVJCcklna2tBQ0FKUVFBMkFnd2dDVUVBTmdJSUFuOENRQ0FEUWVnSmFpQURJQWxCQ0dvZ0NVRU1haUFCSUFJZ0EwR0FBV29RQ3lJUFFZaC9TdzBBUVZRZ0NTZ0NEQ0lFSUFBb0FnQWlBVUgvQVhGQkFXcExEUUVhSUFCQkJHb2hDeUFBSUFGQi80R0FlSEVnQkVFUWRFR0FnUHdIY1hJMkFnQkJmeUFFSUFSQkFFZ2JRUUZxSVFCQkFDRUJJQWtvQWdnaEJVRUFJUUlEUUNBQUlBSkdCRUFnQlVFRGF5RUJRUUFoQUFOQUFrQkJBQ0VDSUFBZ0FVNEVRQU5BSUFBZ0JVNE5BaUFESUFBZ0EycEI2QWxxTFFBQVFRSjBha0ZBYXlJQklBRW9BZ0FpQVVFQmFqWUNBQ0FCSUFOcUlBQTZBT2dISUFCQkFXb2hBQXdBQ3dBRkEwQWdBa0VFUmtVRVFDQURJQU1nQUNBQ2FpSUhha0hvQ1dvdEFBQkJBblJxUVVCcklnZ2dDQ2dDQUNJSVFRRnFOZ0lBSUFNZ0NHb2dCem9BNkFjZ0FrRUJhaUVDREFFTEN5QUFRUVJxSVFBTUFnc0FDd3NnQkVFQmFpRU9JQU1vQWdBaEIwRUFJUUJCQVNFSUEwQWdDQ0FPUmcwRElBNGdDR3NoQkNBRElBaEJBblJxS0FJQUlRVUNRQUpBQWtBQ1FBSkFBa0JCQVNBSWRFRUJkU0lOUVFGckRnZ0FBUVFDQkFRRUF3UUxRUUFoQWlBRlFRQWdCVUVBU2hzaEJpQUFJUUVEUUNBQ0lBWkdEUVVnQXlBQ0lBZHFhaTBBNkFjaENpQUxJQUZCQVhScUlnd2dCRG9BQVNBTUlBbzZBQUFnQWtFQmFpRUNJQUZCQVdvaEFRd0FDd0FMUVFBaEFpQUZRUUFnQlVFQVNoc2hDaUFBSVFFRFFDQUNJQXBHRFFRZ0N5QUJRUUYwYWlJR0lBTWdBaUFIYW1vdEFPZ0hJZ3c2QUFJZ0JpQUVPZ0FCSUFZZ0REb0FBQ0FHSUFRNkFBTWdBa0VCYWlFQ0lBRkJBbW9oQVF3QUN3QUxRUUFoQWlBRlFRQWdCVUVBU2hzaEJpQUVRUWgwUVlEK0EzRWhCQ0FBSVFFRFFDQUNJQVpHRFFNZ0N5QUJRUUYwYWlBRUlBTWdBaUFIYW1vdEFPZ0hjcTFDZ1lDRWdKQ0F3QUIrTndBQUlBSkJBV29oQWlBQlFRUnFJUUVNQUFzQUMwRUFJUUlnQlVFQUlBVkJBRW9iSVFZZ0JFRUlkRUdBL2dOeElRUWdBQ0VCQTBBZ0FpQUdSZzBDSUFzZ0FVRUJkR29pQ2lBRUlBTWdBaUFIYW1vdEFPZ0hjcTFDZ1lDRWdKQ0F3QUIrSWhFM0FBZ2dDaUFSTndBQUlBSkJBV29oQWlBQlFRaHFJUUVNQUFzQUMwRUFJUUVnQlVFQUlBVkJBRW9iSVFvZ0JFRUlkRUdBL2dOeElRd2dBQ0VFQTBBZ0FTQUtSZzBCSUFzZ0JFRUJkR29oRUNBTUlBTWdBU0FIYW1vdEFPZ0hjcTFDZ1lDRWdKQ0F3QUIrSVJGQkFDRUNBMEFnQWlBTlRrVUVRQ0FRSUFKQkFYUnFJZ1lnRVRjQUdDQUdJQkUzQUJBZ0JpQVJOd0FJSUFZZ0VUY0FBQ0FDUVJCcUlRSU1BUXNMSUFGQkFXb2hBU0FFSUExcUlRUU1BQXNBQ3lBSVFRRnFJUWdnQlNBSGFpRUhJQVVnRFd3Z0FHb2hBQXdBQ3dBRklBTWdBa0VDZEdvaUIwRkFheUFCTmdJQUlBSkJBV29oQWlBSEtBSUFJQUZxSVFFTUFRc0FDd0FMSUE4TElBbEJFR29rQUF2eUFnRUdmeU1BUVNCcklnVWtBQ0FFS0FJQUlRWWdCVUVNYWlBQ0lBTVFEU0lEUVloL1RRUkFJQVJCQkdvaEFpQUFJQUZxSWdsQkEyc2hCRUVBSUFaQkVIWnJRUjl4SVFNRFFDQUZRUXhxRUE4Z0FDQUVUM0pGQkVBZ0FpQUZLQUlNSWdZZ0JTZ0NFQ0lIZENBRGRrRUJkR29pQ0MwQUFTRUtJQUFnQ0MwQUFEb0FBQ0FDSUFZZ0J5QUthaUlHZENBRGRrRUJkR29pQnkwQUFDRUlJQVVnQmlBSExRQUJhallDRUNBQUlBZzZBQUVnQUVFQ2FpRUFEQUVMQ3dOQUlBVkJER29RRHlFSElBVW9BZ3doQmlBRktBSVFJUVFnQUNBSlR5QUhja1VFUUNBQ0lBWWdCSFFnQTNaQkFYUnFJZ1l0QUFBaEJ5QUZJQVFnQmkwQUFXbzJBaEFnQUNBSE9nQUFJQUJCQVdvaEFBd0JDd3NEUUNBQUlBbFBSUVJBSUFJZ0JpQUVkQ0FEZGtFQmRHb2lCeTBBQVNFSUlBQWdCeTBBQURvQUFDQUFRUUZxSVFBZ0JDQUlhaUVFREFFTEMwRnNRV3dnQVNBRktBSVVJQVVvQWhoSEd5QUVRU0JIR3lFREN5QUZRU0JxSkFBZ0F3dlBGQUVqZnlNQVFkQUFheUlGSkFCQmJDRUpBa0FnQTBFS1NRMEFBa0FnQXlBQ0x3QUVJZ2NnQWk4QUFDSUlJQUl2QUFJaURXcHFRUVpxSWd4SkRRQWdCQzhCQWlFR0lBVkJQR29nQWtFR2FpSUNJQWdRRFNJSlFZaC9TdzBCSUFWQktHb2dBaUFJYWlJQ0lBMFFEU0lKUVloL1N3MEJJQVZCRkdvZ0FpQU5haUlDSUFjUURTSUpRWWgvU3cwQklBVWdBaUFIYWlBRElBeHJFQTBpQ1VHSWYwc05BU0FFUVFScUlRb2dBQ0FCYWlJZlFRTnJJU0JCQUNBR2EwRWZjU0VMSUFVb0FnZ2hFU0FGS0FJY0lSSWdCU2dDTUNFVElBVW9Ba1FoRkNBRktBSUVJUWtnQlNnQ0dDRU5JQVVvQWl3aERDQUZLQUpBSVFZZ0JTZ0NFQ0VoSUFVb0FpUWhJaUFGS0FJNElTTWdCU2dDVENFa0lBVW9BZ0FoRlNBRktBSVVJUllnQlNnQ0tDRVhJQVVvQWp3aEdFRUJJUThnQUNBQlFRTnFRUUoySWdScUlnTWdCR29pQWlBRWFpSVpJUVFnQWlFSUlBTWhCd05BSUE5QkFYRkZJQVFnSUU5eVJRUkFJQUFnQ2lBWUlBWjBJQXQyUVFKMGFpSU9Md0VBT3dBQUlBNHRBQUloR2lBT0xRQURJUkFnQnlBS0lCY2dESFFnQzNaQkFuUnFJZzR2QVFBN0FBQWdEaTBBQWlFYklBNHRBQU1oRHlBSUlBb2dGaUFOZENBTGRrRUNkR29pRGk4QkFEc0FBQ0FPTFFBQ0lSd2dEaTBBQXlFZElBUWdDaUFWSUFsMElBdDJRUUowYWlJT0x3RUFPd0FBSUE0dEFBSWhIaUFPTFFBRElRNGdBQ0FRYWlJbElBb2dHQ0FHSUJwcUlnWjBJQXQyUVFKMGFpSVFMd0VBT3dBQUlCQXRBQUlnRUMwQUF5RW1JQWNnRDJvaUp5QUtJQmNnRENBYmFpSWFkQ0FMZGtFQ2RHb2lCeThCQURzQUFDQUhMUUFDSVF3Z0J5MEFBeUVRSUFnZ0hXb2lHeUFLSUJZZ0RTQWNhaUlQZENBTGRrRUNkR29pQ0M4QkFEc0FBQ0FJTFFBQ0lRMGdDQzBBQXlFY0lBUWdEbW9pSFNBS0lCVWdDU0FlYWlJT2RDQUxka0VDZEdvaUNTOEJBRHNBQUNBR2FpRUFRUU1oQndKL0lCUWdKRWtFUUNBQUlRWkJBd3dCQ3lBQVFRZHhJUVlnRkNBQVFRTjJheUlVS0FBQUlSaEJBQXNnQ1MwQUF5RWVJQWt0QUFJaENDQU1JQnBxSVFBZ0V5QWpTUVIvSUFBRklCTWdBRUVEZG1zaUV5Z0FBQ0VYUVFBaEJ5QUFRUWR4Q3lFTUlBMGdEMm9oQUNBSGNpRUpRUU1oRHdKL0lCSWdJa2tFUUNBQUlRMUJBd3dCQ3lBQVFRZHhJUTBnRWlBQVFRTjJheUlTS0FBQUlSWkJBQXNnQ0NBT2FpRUFJQWx5SUJFZ0lVa0VmeUFBQlNBUklBQkJBM1pySWhFb0FBQWhGVUVBSVE4Z0FFRUhjUXNoQ1NBbElDWnFJUUFnRUNBbmFpRUhJQnNnSEdvaENDQWRJQjVxSVFRZ0QzSkZJUThNQVFzTElBVWdERFlDTENBRklBWTJBa0FnQlNBTk5nSVlJQVVnQ1RZQ0JDQUZJQlEyQWtRZ0JTQVROZ0l3SUFVZ0VqWUNIQ0FGSUJFMkFnZ2dCU0FZTmdJOElBVWdGellDS0NBRklCWTJBaFFnQlNBVk5nSUFJQUlnQjBrZ0FDQURTM0lOQUVGc0lRa2dDQ0FaU3cwQklBTkJBMnNoQ1FOQUlBVkJQR29RRDBVZ0FDQUpTWEVFUUNBQUlBb2dCU2dDUENJTklBVW9Ba0FpREhRZ0MzWkJBblJxSWc0dkFRQTdBQUFnQUNBT0xRQURhaUlHSUFvZ0RTQU1JQTR0QUFKcUlnQjBJQXQyUVFKMGFpSU1Md0VBT3dBQUlBVWdBQ0FNTFFBQ2FqWUNRQ0FHSUF3dEFBTnFJUUFNQVFVZ0EwRUNheUVNQTBBZ0JVRThhaEFQSVFZZ0JTZ0NQQ0VOSUFVb0FrQWhDU0FBSUF4TElBWnlSUVJBSUFBZ0NpQU5JQWwwSUF0MlFRSjBhaUlHTHdFQU93QUFJQVVnQ1NBR0xRQUNhallDUUNBQUlBWXRBQU5xSVFBTUFRc0xBMEFnQUNBTVMwVUVRQ0FBSUFvZ0RTQUpkQ0FMZGtFQ2RHb2lCaThCQURzQUFDQUFJQVl0QUFOcUlRQWdDU0FHTFFBQ2FpRUpEQUVMQ3dKQUlBQWdBMDhOQUNBQUlBb2dEU0FKZENBTGRpSUFRUUowYWlJRExRQUFPZ0FBSUFNdEFBTkJBVVlFUUNBSklBTXRBQUpxSVFrTUFRc2dDVUVmU3cwQVFTQWdDU0FLSUFCQkFuUnFMUUFDYWlJQUlBQkJJRThiSVFrTElBSkJBMnNoREFOQUlBVkJLR29RRDBVZ0J5QU1TWEVFUUNBSElBb2dCU2dDS0NJR0lBVW9BaXdpQUhRZ0MzWkJBblJxSWcwdkFRQTdBQUFnQnlBTkxRQURhaUlESUFvZ0JpQUFJQTB0QUFKcUlnQjBJQXQyUVFKMGFpSUdMd0VBT3dBQUlBVWdBQ0FHTFFBQ2FqWUNMQ0FESUFZdEFBTnFJUWNNQVFVZ0FrRUNheUVHQTBBZ0JVRW9haEFQSVFNZ0JTZ0NLQ0VNSUFVb0Fpd2hBQ0FHSUFkSklBTnlSUVJBSUFjZ0NpQU1JQUIwSUF0MlFRSjBhaUlETHdFQU93QUFJQVVnQUNBRExRQUNhallDTENBSElBTXRBQU5xSVFjTUFRc0xBMEFnQmlBSFNVVUVRQ0FISUFvZ0RDQUFkQ0FMZGtFQ2RHb2lBeThCQURzQUFDQUhJQU10QUFOcUlRY2dBQ0FETFFBQ2FpRUFEQUVMQ3dKQUlBSWdCMDBOQUNBSElBb2dEQ0FBZENBTGRpSUNRUUowYWlJRExRQUFPZ0FBSUFNdEFBTkJBVVlFUUNBQUlBTXRBQUpxSVFBTUFRc2dBRUVmU3cwQVFTQWdBQ0FLSUFKQkFuUnFMUUFDYWlJQUlBQkJJRThiSVFBTElCbEJBMnNoREFOQUlBVkJGR29RRDBVZ0NDQU1TWEVFUUNBSUlBb2dCU2dDRkNJR0lBVW9BaGdpQW5RZ0MzWkJBblJxSWcwdkFRQTdBQUFnQ0NBTkxRQURhaUlESUFvZ0JpQUNJQTB0QUFKcUlnSjBJQXQyUVFKMGFpSUdMd0VBT3dBQUlBVWdBaUFHTFFBQ2FqWUNHQ0FESUFZdEFBTnFJUWdNQVFVZ0dVRUNheUVEQTBBZ0JVRVVhaEFQSVFJZ0JTZ0NGQ0VHSUFVb0FoZ2hCeUFESUFoSklBSnlSUVJBSUFnZ0NpQUdJQWQwSUF0MlFRSjBhaUlDTHdFQU93QUFJQVVnQnlBQ0xRQUNhallDR0NBSUlBSXRBQU5xSVFnTUFRc0xBMEFnQXlBSVNVVUVRQ0FJSUFvZ0JpQUhkQ0FMZGtFQ2RHb2lBaThCQURzQUFDQUlJQUl0QUFOcUlRZ2dCeUFDTFFBQ2FpRUhEQUVMQ3dKQUlBZ2dHVThOQUNBSUlBb2dCaUFIZENBTGRpSUNRUUowYWlJRExRQUFPZ0FBSUFNdEFBTkJBVVlFUUNBSElBTXRBQUpxSVFjTUFRc2dCMEVmU3cwQVFTQWdCeUFLSUFKQkFuUnFMUUFDYWlJQ0lBSkJJRThiSVFjTEEwQWdCUkFQUlNBRUlDQkpjUVJBSUFRZ0NpQUZLQUlBSWdZZ0JTZ0NCQ0lDZENBTGRrRUNkR29pREM4QkFEc0FBQ0FFSUF3dEFBTnFJZ01nQ2lBR0lBSWdEQzBBQW1vaUFuUWdDM1pCQW5ScUlnUXZBUUE3QUFBZ0JTQUNJQVF0QUFKcU5nSUVJQU1nQkMwQUEyb2hCQXdCQlNBZlFRSnJJUU1EUUNBRkVBOGhBaUFGS0FJQUlRWWdCU2dDQkNFSUlBTWdCRWtnQW5KRkJFQWdCQ0FLSUFZZ0NIUWdDM1pCQW5ScUlnSXZBUUE3QUFBZ0JTQUlJQUl0QUFKcU5nSUVJQVFnQWkwQUEyb2hCQXdCQ3dzRFFDQURJQVJKUlFSQUlBUWdDaUFHSUFoMElBdDJRUUowYWlJQ0x3RUFPd0FBSUFRZ0FpMEFBMm9oQkNBSUlBSXRBQUpxSVFnTUFRc0xBa0FnQkNBZlR3MEFJQVFnQ2lBR0lBaDBJQXQySWdKQkFuUnFJZ010QUFBNkFBQWdBeTBBQTBFQlJnUkFJQWdnQXkwQUFtb2hDQXdCQ3lBSVFSOUxEUUJCSUNBSUlBb2dBa0VDZEdvdEFBSnFJZ0lnQWtFZ1R4c2hDQXRCYkVGc1FXeEJiRUZzUVd4QmJFRnNJQUVnQ0VFZ1J4c2dCU2dDQ0NBRktBSU1SeHNnQjBFZ1J4c2dCU2dDSENBRktBSWdSeHNnQUVFZ1J4c2dCU2dDTUNBRktBSTBSeHNnQ1VFZ1J4c2dCU2dDUkNBRktBSklSeHNoQ1F3SkN3QUxBQXNBQ3dBTEFBc0FDd0FMQUF0QmJDRUpDeUFGUWRBQWFpUUFJQWtMN0JBQkhuOGpBRUhRQUdzaUJTUUFRV3doQ1FKQUlBTkJDa2tOQUFKQUlBTWdBaThBQkNJR0lBSXZBQUFpQnlBQ0x3QUNJZ2hxYWtFR2FpSU9TUTBBSUFRdkFRSWhEeUFGUVR4cUlBSkJCbW9pQWlBSEVBMGlDVUdJZjBzTkFTQUZRU2hxSUFJZ0Iyb2lBaUFJRUEwaUNVR0lmMHNOQVNBRlFSUnFJQUlnQ0dvaUFpQUdFQTBpQ1VHSWYwc05BU0FGSUFJZ0Jtb2dBeUFPYXhBTklnbEJpSDlMRFFFZ0JFRUVhaUVLSUFBZ0FXb2lIRUVEYXlFZFFRQWdEMnRCSDNFaEN5QUZLQUlJSVJFZ0JTZ0NIQ0VTSUFVb0FqQWhFeUFGS0FKRUlSUWdCU2dDQkNFSklBVW9BaGdoQmlBRktBSXNJUWNnQlNnQ1FDRUlJQVVvQWhBaEhpQUZLQUlrSVI4Z0JTZ0NPQ0VnSUFVb0Frd2hJU0FGS0FJQUlSVWdCU2dDRkNFV0lBVW9BaWdoRnlBRktBSThJUmhCQVNFTklBQWdBVUVEYWtFQ2RpSUNhaUlPSUFKcUlnOGdBbW9pR1NFRUlBOGhBaUFPSVFNRFFDQU5SU0FFSUIxUGNrVUVRQ0FLSUJnZ0NIUWdDM1pCQVhScUlnd3RBQUVoRFNBQUlBd3RBQUE2QUFBZ0NpQVhJQWQwSUF0MlFRRjBhaUlNTFFBQklSQWdBeUFNTFFBQU9nQUFJQW9nRmlBR2RDQUxka0VCZEdvaURDMEFBU0VhSUFJZ0RDMEFBRG9BQUNBS0lCVWdDWFFnQzNaQkFYUnFJZ3d0QUFFaEd5QUVJQXd0QUFBNkFBQWdDaUFZSUFnZ0RXb2lDSFFnQzNaQkFYUnFJZ3d0QUFFaERTQUFJQXd0QUFBNkFBRWdDaUFYSUFjZ0VHb2lCM1FnQzNaQkFYUnFJZ3d0QUFFaEVDQURJQXd0QUFBNkFBRWdDaUFXSUFZZ0dtb2lESFFnQzNaQkFYUnFJZ1l0QUFFaEdpQUNJQVl0QUFBNkFBRWdDaUFWSUFrZ0cyb2lHM1FnQzNaQkFYUnFJZ2t0QUFFaElpQUVJQWt0QUFBNkFBRWdDQ0FOYWlFR1FRTWhDUUovSUJRZ0lVa0VRRUVESVEwZ0Jnd0JDeUFVSUFaQkEzWnJJaFFvQUFBaEdFRUFJUTBnQmtFSGNRc2hDQ0FISUJCcUlRWWdFeUFnU1FSL0lBWUZJQk1nQmtFRGRtc2lFeWdBQUNFWFFRQWhDU0FHUVFkeEN5RUhJQXdnR21vaERDQUpJQTF5SVJCQkF5RU5BbjhnRWlBZlNRUkFJQXdoQmtFRERBRUxJQXhCQjNFaEJpQVNJQXhCQTNackloSW9BQUFoRmtFQUN5QWJJQ0pxSVF3Z0VISWhFQ0FSSUI1SkJIOGdEQVVnRVNBTVFRTjJheUlSS0FBQUlSVkJBQ0VOSUF4QkIzRUxJUWtnQkVFQ2FpRUVJQUpCQW1vaEFpQURRUUpxSVFNZ0FFRUNhaUVBSUEwZ0VISkZJUTBNQVFzTElBVWdCellDTENBRklBZzJBa0FnQlNBR05nSVlJQVVnQ1RZQ0JDQUZJQlEyQWtRZ0JTQVROZ0l3SUFVZ0VqWUNIQ0FGSUJFMkFnZ2dCU0FZTmdJOElBVWdGellDS0NBRklCWTJBaFFnQlNBVk5nSUFJQUFnRGtzZ0F5QVBTM0lOQUVGc0lRa2dBaUFaU3cwQklBNUJBMnNoQ1FOQUlBVkJQR29RRHlBQUlBbFBja1VFUUNBS0lBVW9BandpQmlBRktBSkFJZ2QwSUF0MlFRRjBhaUlJTFFBQklRd2dBQ0FJTFFBQU9nQUFJQW9nQmlBSElBeHFJZ1owSUF0MlFRRjBhaUlITFFBQUlRZ2dCU0FHSUFjdEFBRnFOZ0pBSUFBZ0NEb0FBU0FBUVFKcUlRQU1BUXNMQTBBZ0JVRThhaEFQSVFjZ0JTZ0NQQ0VHSUFVb0FrQWhDU0FBSUE1UElBZHlSUVJBSUFvZ0JpQUpkQ0FMZGtFQmRHb2lCaTBBQUNFSElBVWdDU0FHTFFBQmFqWUNRQ0FBSUFjNkFBQWdBRUVCYWlFQURBRUxDd05BSUFBZ0RrOUZCRUFnQ2lBR0lBbDBJQXQyUVFGMGFpSUhMUUFCSUFBZ0J5MEFBRG9BQUNBQVFRRnFJUUFnQ1dvaENRd0JDd3NnRDBFRGF5RUFBMEFnQlVFb2FoQVBJQUFnQTAxeVJRUkFJQW9nQlNnQ0tDSUdJQVVvQWl3aUIzUWdDM1pCQVhScUlnZ3RBQUVoRGlBRElBZ3RBQUE2QUFBZ0NpQUdJQWNnRG1vaUJuUWdDM1pCQVhScUlnY3RBQUFoQ0NBRklBWWdCeTBBQVdvMkFpd2dBeUFJT2dBQklBTkJBbW9oQXd3QkN3c0RRQ0FGUVNocUVBOGhCeUFGS0FJb0lRWWdCU2dDTENFQUlBTWdEMDhnQjNKRkJFQWdDaUFHSUFCMElBdDJRUUYwYWlJR0xRQUFJUWNnQlNBQUlBWXRBQUZxTmdJc0lBTWdCem9BQUNBRFFRRnFJUU1NQVFzTEEwQWdBeUFQVDBVRVFDQUtJQVlnQUhRZ0MzWkJBWFJxSWdjdEFBRWhDQ0FESUFjdEFBQTZBQUFnQTBFQmFpRURJQUFnQ0dvaEFBd0JDd3NnR1VFRGF5RURBMEFnQlVFVWFoQVBJQUlnQTA5eVJRUkFJQW9nQlNnQ0ZDSUdJQVVvQWhnaUIzUWdDM1pCQVhScUlnZ3RBQUVoRGlBQ0lBZ3RBQUE2QUFBZ0NpQUdJQWNnRG1vaUJuUWdDM1pCQVhScUlnY3RBQUFoQ0NBRklBWWdCeTBBQVdvMkFoZ2dBaUFJT2dBQklBSkJBbW9oQWd3QkN3c0RRQ0FGUVJScUVBOGhCeUFGS0FJVUlRWWdCU2dDR0NFRElBSWdHVThnQjNKRkJFQWdDaUFHSUFOMElBdDJRUUYwYWlJR0xRQUFJUWNnQlNBRElBWXRBQUZxTmdJWUlBSWdCem9BQUNBQ1FRRnFJUUlNQVFzTEEwQWdBaUFaVDBVRVFDQUtJQVlnQTNRZ0MzWkJBWFJxSWdjdEFBRWhDQ0FDSUFjdEFBQTZBQUFnQWtFQmFpRUNJQU1nQ0dvaEF3d0JDd3NEUUNBRkVBOGdCQ0FkVDNKRkJFQWdDaUFGS0FJQUlnSWdCU2dDQkNJR2RDQUxka0VCZEdvaUJ5MEFBU0VJSUFRZ0J5MEFBRG9BQUNBS0lBSWdCaUFJYWlJQ2RDQUxka0VCZEdvaUJpMEFBQ0VISUFVZ0FpQUdMUUFCYWpZQ0JDQUVJQWM2QUFFZ0JFRUNhaUVFREFFTEN3TkFJQVVRRHlFSElBVW9BZ0FoQmlBRktBSUVJUUlnQkNBY1R5QUhja1VFUUNBS0lBWWdBblFnQzNaQkFYUnFJZ1l0QUFBaEJ5QUZJQUlnQmkwQUFXbzJBZ1FnQkNBSE9nQUFJQVJCQVdvaEJBd0JDd3NEUUNBRUlCeFBSUVJBSUFvZ0JpQUNkQ0FMZGtFQmRHb2lCeTBBQVNFSUlBUWdCeTBBQURvQUFDQUVRUUZxSVFRZ0FpQUlhaUVDREFFTEMwRnNRV3hCYkVGc1FXeEJiRUZzUVd3Z0FTQUNRU0JIR3lBRktBSUlJQVVvQWd4SEd5QURRU0JIR3lBRktBSWNJQVVvQWlCSEd5QUFRU0JIR3lBRktBSXdJQVVvQWpSSEd5QUpRU0JIR3lBRktBSkVJQVVvQWtoSEd5RUpEQUVMUVd3aENRc2dCVUhRQUdva0FDQUpDMWdCQTM4Q1FDQUFLQUtRNndFaUFVVU5BQ0FCS0FJQUlBRkJ0TlVCYWlnQ0FDSUNJQUZCdU5VQmFpZ0NBQ0lERUJNZ0FnUkFJQU1nQVNBQ0VRSUFEQUVMSUFFUUJnc2dBRUVBTmdLZzZ3RWdBRUlBTndPUTZ3RUw2UU1DQkg4Q2ZpQUFRUUJCS0JBRElRUWdBa0VCUVFVZ0F4c2lBRWtFUUNBQUR3c2dBVVVFUUVGL0R3dEJBU0VHQWtBQ1FDQURRUUZHRFFBZ0F5RUdJQUVvQUFBaUJVR282cjVwUmcwQVFYWWhBeUFGUVhCeFFkRFV0TUlCUncwQlFRZ2hBeUFDUVFoSkRRRWdBVFVBQkNFSUlBUkJBVFlDRkNBRUlBZzNBd0JCQUE4TElBRWdBaUFHRUJvaUF5QUNTdzBBSUFRZ0F6WUNHRUZ5SVFNZ0FDQUJhaUlGUVFGckxRQUFJZ0pCQ0hFTkFDQUNRU0J4SWdaRkJFQkJjQ0VESUFVdEFBQWlCVUduQVVzTkFTQUZRUWR4clVJQklBVkJBM1pCQ21xdGhpSUlRZ09JZmlBSWZDRUpJQUJCQVdvaEFBc2dBa0VHZGlFRklBSkJBblpCQUNFREFrQUNRQUpBQWtBZ0FrRURjVUVCYXc0REFBRUNBd3NnQUNBQmFpMEFBQ0VESUFCQkFXb2hBQXdDQ3lBQUlBRnFMd0FBSVFNZ0FFRUNhaUVBREFFTElBQWdBV29vQUFBaEF5QUFRUVJxSVFBTFFRRnhJUUlDZmdKQUFrQUNRQUpBSUFWQkFXc09Bd0VDQXdBTFFuOGdCa1VOQXhvZ0FDQUJhakVBQUF3REN5QUFJQUZxTXdBQVFvQUNmQXdDQ3lBQUlBRnFOUUFBREFFTElBQWdBV29wQUFBTElRZ2dCQ0FDTmdJZ0lBUWdBellDSENBRUlBZzNBd0JCQUNFRElBUkJBRFlDRkNBRUlBZ2dDU0FHR3lJSU53TUlJQVJDZ0lBSUlBZ2dDRUtBZ0FoYUd6NENFQXNnQXd0ZkFRRi9RYmgvSVFNZ0FVRUJRUVVnQWhzaUFrOEVmeUFBSUFKcVFRRnJMUUFBSWdCQkEzRkJBblJCb0I1cUtBSUFJQUpxSUFCQkJIWkJESEZCc0I1cUtBSUFhaUFBUVNCeElnRkZhaUFCUVFWMklBQkJ3QUJKY1dvRlFiaC9Dd3NNQUNBQUlBRWdBa0VBRUJrTGx3TUNCWDhDZmlNQVFVQnFJZ1FrQUFKQUEwQWdBVUVGVHdSQUFrQWdBQ2dBQUVGd2NVSFExTFRDQVVZRVFFSitJUWNnQVVFSVNRMEVJQUFvQUFRaUFrRjNTdzBFSUFKQkNHb2lBeUFCU3cwRUlBSkJnWDlKRFFFTUJBc2dCRUVZYWlBQUlBRVFHeUVDUW40Z0JDa0RHRUlBSUFRb0FpeEJBVWNiSUFJYklnZENmVllOQXlBSElBaDhJZ2dnQjFSQ2ZpRUhEUU1DUUFKQUlBRkJDRWtOQUNBQUtBQUFRWEJ4UWREVXRNSUJSdzBBSUFBb0FBUWlBa0YzU3cwRlFiaC9JQUpCQ0dvaUFpQUJJQUpKR3lFRERBRUxJQVJCR0dvZ0FDQUJFQnNpQWtHSWYwc0VRQ0FDSVFNTUFRdEJ1SDhoQXlBQ0RRQWdBU0FFS0FJd0lnSnJJUVVnQUNBQ2FpRUdBMEFnQmlBRklBUkJER29RSFNJRFFZaC9TdzBCSUFOQkEyb2lBaUFGU3dSQVFiaC9JUU1NQWdzZ0JTQUNheUVGSUFJZ0Jtb2hCaUFFS0FJUVJRMEFDeUFFS0FJNEJIOUJ1SDhoQXlBRlFRUkpEUUVnQmtFRWFnVWdCZ3NnQUdzaEF3c2dBMEdJZjBzTkF3c2dBU0FEYXlFQklBQWdBMm9oQUF3QkN3dENmaUFJSUFFYklRY0xJQVJCUUdza0FDQUhDMlFCQVg5QnVIOGhBd0pBSUFGQkEwa05BQ0FBTFFBQ0lRRWdBaUFBTHdBQUlnQkJBWEUyQWdRZ0FpQUFRUUYyUVFOeElnTTJBZ0FnQWlBQUlBRkJFSFJ5UVFOMklnQTJBZ2dDUUFKQUlBTkJBV3NPQXdJQkFBRUxRV3dQQ3lBQUlRTUxJQU1MUkFFQ2Z5QUJJQUlvQWdRaUF5QUJLQUlFYWlJRU5nSUVJQUFnQTBFQ2RFR2dIV29vQWdBZ0FTZ0NBRUVBSUFScmRuRTJBZ0FnQVJBUEdpQUFJQUpCQ0dvMkFnUUx6Z0VCQm45QnVuOGhDZ0pBSUFJb0FnUWlDQ0FDS0FJQUlnbHFJZzBnQVNBQWEwc05BRUZzSVFvZ0NTQUVJQU1vQWdBaUMydExEUUFnQUNBSmFpSUVJQUlvQWdnaURHc2hBaUFBSUFGQklHc2lBQ0FMSUFsQkFCQWdJQU1nQ1NBTGFqWUNBQUpBQWtBZ0JDQUZheUFNVHdSQUlBSWhCUXdCQ3lBTUlBUWdCbXRMRFFJZ0J5QUhJQUlnQldzaUFtb2lBU0FJYWs4RVFDQUVJQUVnQ0JBS0dnd0NDeUFDSUFocUlRZ2dCQ0FCUVFBZ0Ftc1FDaUFDYXlFRUN5QUVJQUFnQlNBSVFRRVFJQXNnRFNFS0N5QUtDOGNFQVFKL0lBQWdBMm9oQmdKQUlBTkJCMHdFUUFOQUlBQWdCazhOQWlBQUlBSXRBQUE2QUFBZ0FFRUJhaUVBSUFKQkFXb2hBZ3dBQ3dBTElBUkJBVVlFUUFKQUlBQWdBbXNpQlVFSFRRUkFJQUFnQWkwQUFEb0FBQ0FBSUFJdEFBRTZBQUVnQUNBQ0xRQUNPZ0FDSUFBZ0FpMEFBem9BQXlBQUlBSWdCVUVDZENJRlFjQWVhaWdDQUdvaUFpZ0FBRFlBQkNBQ0lBVkI0QjVxS0FJQWF5RUNEQUVMSUFBZ0Fpa0FBRGNBQUFzZ0FrRUlhaUVDSUFCQkNHb2hBQXNnQVNBR1R3UkFJQUFnQTJvaEFTQUVRUUZISUFBZ0FtdEJEMHB5UlFSQUEwQWdBQ0FDS1FBQU53QUFJQUpCQ0dvaEFpQUFRUWhxSWdBZ0FVa05BQXdEQ3dBTElBQWdBaWtBQURjQUFDQUFJQUlwQUFnM0FBZ2dBMEVSU1EwQklBQkJFR29oQUFOQUlBQWdBaWtBRURjQUFDQUFJQUlwQUJnM0FBZ2dBQ0FDS1FBZ053QVFJQUFnQWlrQUtEY0FHQ0FDUVNCcUlRSWdBRUVnYWlJQUlBRkpEUUFMREFFTEFrQWdBQ0FCU3dSQUlBQWhBUXdCQ3lBQklBQnJJUVVDUUNBRVFRRkhJQUFnQW10QkQwcHlSUVJBSUFJaEF3TkFJQUFnQXlrQUFEY0FBQ0FEUVFocUlRTWdBRUVJYWlJQUlBRkpEUUFMREFFTElBQWdBaWtBQURjQUFDQUFJQUlwQUFnM0FBZ2dCVUVSU0EwQUlBQkJFR29oQUNBQ0lRTURRQ0FBSUFNcEFCQTNBQUFnQUNBREtRQVlOd0FJSUFBZ0F5a0FJRGNBRUNBQUlBTXBBQ2czQUJnZ0EwRWdhaUVESUFCQklHb2lBQ0FCU1EwQUN3c2dBaUFGYWlFQ0N3TkFJQUVnQms4TkFTQUJJQUl0QUFBNkFBQWdBVUVCYWlFQklBSkJBV29oQWd3QUN3QUxDNjRIQWdWL0FYNGpBRUdBQVdzaUVTUUFJQkVnQXpZQ2ZFRi9JUThDUUFKQUFrQUNRQUpBSUFJT0JBRUFBd0lFQ3lBR1JRUkFRYmgvSVE4TUJBdEJiQ0VQSUFVdEFBQWlBaUFEU3cwRElBZ2dBa0VDZENJQ2FpZ0NBQ0VESUFJZ0Iyb29BZ0FoQWlBQVFRQTZBQXNnQUVJQU53SUFJQUFnQWpZQ0RDQUFJQU02QUFvZ0FFRUFPd0VJSUFFZ0FEWUNBRUVCSVE4TUF3c2dBU0FKTmdJQVFRQWhEd3dDQ3lBS1JRUkFRV3doRHd3Q0MwRUFJUThnQzBVZ0RFRVpTSElOQVVFSUlBUjBRUWhxSVFCQkFDRURBMEFnQUNBRFRRMENJQU5CUUdzaEF3d0FDd0FMUVd3aER5QVJJQkZCL0FCcUlCRkIrQUJxSUFVZ0JoQU1JZ05CaUg5TERRQWdFU2dDZUNJQ0lBUkxEUUFnRVNnQ2ZFRUJhaUVKSUFCQkNHb2hDMEdBZ0FJZ0FuUkJFSFVoQlVFQklSQkJBU0FDZENJUFFRRnJJZ29oRWdOQUlBa2dEa2NFUUFKQUlCRWdEa0VCZENJRWFpOEJBQ0lNUWYvL0EwWUVRQ0FMSUJKQkEzUnFJQTQyQWdRZ0VrRUJheUVTUVFFaERBd0JDeUFRUVFBZ0JTQU13VW9iSVJBTElBUWdEV29nRERzQkFDQU9RUUZxSVE0TUFRc0xJQUFnQWpZQ0JDQUFJQkEyQWdBQ1FDQUtJQkpHQkVBZ0RVSHFBR29oQmtFQUlSQkJBQ0VNQTBBZ0NTQVFSZ1JBSUE5QkEzWWdEMEVCZG1wQkEyb2lCVUVCZENFRVFRQWhERUVBSVJJRFFFRUFJUTRnRHlBU1RRMEVBMEFnRGtFQ1J3UkFJQXNnQlNBT2JDQU1haUFLY1VFRGRHb2dCaUFPSUJKcWFpMEFBRFlDQkNBT1FRRnFJUTRNQVFzTElCSkJBbW9oRWlBRUlBeHFJQXB4SVF3TUFBc0FCU0FSSUJCQkFYUnFMZ0VBSVFVZ0JpQU1haUlFSUJNM0FBQkJDQ0VPQTBBZ0JTQU9TZ1JBSUFRZ0Rtb2dFemNBQUNBT1FRaHFJUTRNQVFzTElCTkNnWUtFaUpDZ3dJQUJmQ0VUSUJCQkFXb2hFQ0FGSUF4cUlRd01BUXNBQ3dBTElBOUJBM1lnRDBFQmRtcEJBMm9oQlVFQUlSQkJBQ0VPQTBBZ0NTQVFSZzBCUVFBaERDQVJJQkJCQVhScUxnRUFJZ1JCQUNBRVFRQktHeUVFQTBBZ0JDQU1Sd1JBSUFzZ0RrRURkR29nRURZQ0JBTkFJQVVnRG1vZ0NuRWlEaUFTU3cwQUN5QU1RUUZxSVF3TUFRc0xJQkJCQVdvaEVBd0FDd0FMSUFKQkFXb2hCVUVBSVF3RFFDQU1JQTlIQkVBZ0RTQUxJQXhCQTNScUlna29BZ1FpQkVFQmRHb2lBaUFDTHdFQUlnWkJBV283QVFBZ0NTQUZJQVpuUVdCemFpSUNPZ0FESUFrZ0JpQUNkQ0FQYXpzQkFDQUpJQWdnQkVFQ2RDSUNhaWdDQURvQUFpQUpJQUlnQjJvb0FnQTJBZ1FnREVFQmFpRU1EQUVMQ3lBQklBQTJBZ0FnQXlFUEN5QVJRWUFCYWlRQUlBOEw3Vm9DTzM4R2ZpTUFRZUFCYXlJRUpBQUNRRUd3N0FrUUJTSUZSUVJBUVVBaEJ3d0JDeUFGUWdBM0F2VHFBU0FGUVFBMkFzVHJBU0FGUVFBMkFyVHJBU0FGUWdBM0FwenJBU0FGUVFBMkFyanBBU0FGUVFBMkFxenNDU0FGUWdBM0F0VHJBU0FGUWdBM0FxenJBU0FGUWdBM0E0anJBU0FGUWdBM0F1VHFBU0FGUWdBM0F1VHJBU0FGUVlHQWdNQUFOZ0s4NndFZ0JVSUFOd0trNndFZ0JVSDg2Z0ZxUVFBMkFnQWdCVUdRNndGcVFnQTNBd0FnQlJBWUlBVkJyTlVCYWlFVUlBVkIrT3NCYWlFY0lBVkJzT29CYWlFaUlBVkJvREJxSVNvZ0JVR1lJR29oS3lBRlFhalFBR29oSGlBRlFSQnFJU3dnQlVFSWFpRW9JQVZCQkdvaExTQUZRY0RwQVdvaEtTQUZRWWpyQVdvZ0JFR1VBV29oTHlBRVFZd0JhaUV3SUFSQmhBRnFJVEVnQkVIY0FHb2hNaUFFUWRRQWFpRXpJQVJCekFCcUlUUWdBQ0VkQWtBQ1FBSkFBa0FDUUFOQVFRRkJCU0FGS0FMazZnRWJJUVlDUUFOQUlBTWdCa2tOQVNBQ0tBQUFRWEJ4UWREVXRNSUJSZ1JBUWJoL0lRY2dBMEVJU1EwSUlBSW9BQVFpRGtGM1N3UkFRWEloQnd3SkN5QURJQTVCQ0dvaUNVa05DQ0FPUVlCL1N3UkFJQWtoQnd3SkN5QURJQWxySVFNZ0FpQUphaUVDREFFTEN5QUZRZ0EzQXF6cEFTQUZRZ0EzQStqcEFTQUZRUUEyQXBqckFTQUZRZ0EzQTREcUFTQUZRZ00zQS9qcEFTQUZRYlRwQVdwQ0FEY0NBQ0FGUWZEcEFXcENBRGNEQUNBRlFhalFBR29pQ1VHTWdJRGdBRFlDQUNBRlFhelFBV3BCNEJJcEFnQTNBZ0FnQlVHMDBBRnFRZWdTS0FJQU5nSUFJQVVnQlVFUWFqWUNBQ0FGSUFWQm9EQnFOZ0lFSUFVZ0JVR1lJR28yQWdnZ0JTQUpOZ0lNSUFWQkFVRUZJQVVvQXVUcUFSczJBcnpwQVFKQUlBRkZEUUFnQlNnQ3JPa0JJZ2tnSFVZTkFDQUZJQWsyQXJqcEFTQUZJQjAyQXF6cEFTQUZLQUt3NlFFaERpQUZJQjAyQXJEcEFTQUZJQjBnRGlBSmEybzJBclRwQVF0QnVIOGhDU0FEUVFWQkNTQUZLQUxrNmdFaUJodEpEUVVnQWtFQlFRVWdCaHNnQmhBYUlnNUJpSDlMQkVBZ0RpRUpEQVVMSUFNZ0RrRURha2tOQlNBcElBSWdEaUFHRUJraUJrR0lmMHNFUUNBR0lRa01CUXNnQmcwRkFrQUNRQ0FGS0FLbzZ3RkJBVWNOQUNBRktBS2s2d0VpQ1VVTkFDQUZLQUtVNndGRkRRQWdDU2dDQkVFQmF5SUhJQVVvQXR6cEFTSUtyVUtIbGErdm1MYmVtNTUvZmtMSno5bXk4ZVc2NmllRlFoZUpRcy9XMDc3U3g2dlpRbjVDK2ZQZDhabjJtYXNXZkNJL1FpR0lJRCtGUXMvVzA3N1N4NnZaUW40aVAwSWRpQ0EvaFVMNTg5M3htZmFacXhaK0lqOUNJSWdnUDRXbmNTRUdJQWtvQWdBaEZRTkFRUUFoQ0FKQUlCVWdCa0VDZEdvb0FnQWlDVVVOQUNBSktBSUlRUWhKRFFBZ0NTZ0NCQ0lTS0FBQVFiZkl3dUYrUncwQUlCSW9BQVFoQ0FzZ0NDQUtSd1JBSUFZZ0IzRkJBV29oQmlBSURRRUxDeUFKUlEwQUlBVVFHQ0FGUVg4MkFxRHJBU0FGSUFrMkFwVHJBU0FGSUFVb0F0enBBU0lJTmdLWTZ3RU1BUXNnQlNnQzNPa0JJUWdMQWtBZ0NFVU5BQ0FGS0FLWTZ3RWdDRVlOQUVGZ0lRa01CZ3NDUUNBRktBTGc2UUVFUUNBRklBVW9BdWpxQVNJSlJUWUM3T29CSUFrTkFTQUZRdm5xME5EbnlhSGs0UUEzQTZqcUFTQUZRZ0EzQTZEcUFTQUZRcy9XMDc3U3g2dlpRamNEbU9vQklBVkMxdXVDN3VyOWlmWGdBRGNEa09vQklBVkNBRGNEaU9vQklDSkJBRUVvRUFNYURBRUxJQVZCQURZQzdPb0JDeUFCSUIxcUlTVWdCU0FGS1FQbzZRRWdEcTE4TndQbzZRRWdBeUFPYXlFRElBSWdEbW9oQWlBZElRNERRQ0FDSUFNZ0JFRXNhaEFkSWhWQmlIOUxCRUFnRlNFSkRBWUxJQU5CQTJzaU5TQVZTUTBFSUFKQkEyb2hHMEZzSVFrQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FFS0FJc0RnTUNBUUFWQ3lBVlFmLy9CMHNORXlBVlFRTkpEUklnQlNrRHlPa0JJVDhDUUFKQUlCc3RBQUFpQ1VFRGNTSWFRUUZyRGdNR0FRQUhDeUFGS0FLQTZnRU5BRUZpSVFrTUZRc2dGVUVGU1EwU0lCc29BQUFoQXdKL0FrQUNRQUpBSUFsQkFuWkJBM0VpQ1VFQ2F3NENBUUlBQ3lBSlFRQkhJUWNnQTBFRWRrSC9CM0VoQzBFRElRWWdBMEVPZGtIL0IzRU1BZ3RCQkNFR0lBTkJCSFpCLy84QWNTRUxRUUVoQnlBRFFSSjJEQUVMSUFOQkJIWkIvLzhQY1NJTFFZQ0FDRXNORTBFQklRZEJCU0VHSUFJdEFBZEJDblFnQTBFV2RuSUxJZ2dnQm1vaUNTQVZTdzBTQWtBZ0MwR0JCa2tOQUNBRktBS2M2d0ZGRFFCQkFDRURBMEFnQTBHRGdBRkxEUUVnQTBGQWF5RUREQUFMQUFzZ0JpQWJhaUVQSUJwQkEwY05CaUFGS0FJTUlnSXRBQUZCQ0hRaEF5QUhEUWNnQTBVTkNDQUVRZkFBYWlBUElBZ1FEU0lEUVloL1N3MEpJQUpCQkdvaEJpQUxJQnhxSWhKQkEyc2hDa0VBSUFJdkFRSnJRUjl4SVFjZ0hDRURBMEFnQkVId0FHb1FEMFVnQXlBS1NYRUVRQ0FESUFZZ0JDZ0NjQ0lJSUFRb0FuUWlEM1FnQjNaQkFuUnFJZ0l2QVFBN0FBQWdBeUFDTFFBRGFpSURJQVlnQ0NBUElBSXRBQUpxSWdoMElBZDJRUUowYWlJQ0x3RUFPd0FBSUFRZ0NDQUNMUUFDYWpZQ2RDQURJQUl0QUFOcUlRTU1BUVVnRWtFQ2F5RUlBMEFnQkVId0FHb1FEeUVQSUFRb0FuQWhDaUFFS0FKMElRSWdBeUFJU3lBUGNrVUVRQ0FESUFZZ0NpQUNkQ0FIZGtFQ2RHb2lDaThCQURzQUFDQUVJQUlnQ2kwQUFtbzJBblFnQXlBS0xRQURhaUVEREFFTEN3TkFJQU1nQ0UwRVFDQURJQVlnQ2lBQ2RDQUhka0VDZEdvaUR5OEJBRHNBQUNBRElBOHRBQU5xSVFNZ0FpQVBMUUFDYWlFQ0RBRUxDd0pBSUFNZ0VrOE5BQ0FESUFZZ0NpQUNkQ0FIZGtFQ2RHb2lBeTBBQURvQUFDQURMUUFEUVFGR0JFQWdBaUFETFFBQ2FpRUNEQUVMSUFKQkgwc05BRUVnSUFJZ0F5MEFBbW9pQWlBQ1FTQlBHeUVDQzBGc1FXd2dDeUFFS0FKNElBUW9BbnhIR3lBQ1FTQkhHeUVEREFzTEFBc0FDeUFFS0FJMElnSWdKU0FPYTBzTkNpQU9SUVJBUVFBaENTQUNEUUlNRGdzZ0RpQWJMUUFBSUFJUUF4b2dBaUVKREF3TElCVWdKU0FPYTBzTkNTQU9EUUZCQUNFSklCVkZEUXdMUWJaL0lRa01FUXNnRGlBYklCVVFBaG9nRlNFSkRBb0xJQndnR3dKL0FrQUNRQUpBSUFsQkFuWkJBM0ZCQVdzT0F3RUFBZ0FMSUFsQkEzWWhBMEVCREFJTElCc3ZBQUJCQkhZaEEwRUNEQUVMSUJWQkJFa05EaUFDTHdBRElBSXRBQVZCRUhSeUlnSkJqNENBQVVzTkRpQUNRUVIySVFOQkF3c2lBbW90QUFBZ0EwRWdhaEFESVFrZ0JTQUROZ0tBNndFZ0JTQUpOZ0x3NmdFZ0FrRUJhaUVKREFVTElCVUNmd0pBQWtBQ1FDQUpRUUoyUVFOeFFRRnJEZ01CQUFJQUN5QUpRUU4ySVFOQkFRd0NDeUFiTHdBQVFRUjJJUU5CQWd3QkN5QUNMd0FESUFJdEFBVkJFSFJ5UVFSMklRTkJBd3NpQWlBRGFpSUpRU0JxU1FSQUlBa2dGVXNORFNBY0lBSWdHMm9nQXhBQ0lRSWdCU0FETmdLQTZ3RWdCU0FDTmdMdzZnRWdBaUFEYWlJQ1FnQTNBQmdnQWtJQU53QVFJQUpDQURjQUNDQUNRZ0EzQUFBTUJRc2dCU0FETmdLQTZ3RWdCU0FDSUJ0cU5nTHc2Z0VNQkFzZ0IwVUVRQ0FlSUE4Z0NDQVVFQlFpQWtHSWYwc2dBaUFJVDNJTkRDQWNJQXNnQWlBUGFpQUlJQUpySUI0UUZTRUREQU1MSUF0RklBaEZjZzBMSUF0QkNIWWlBeUFJSUF0SkJIOGdDRUVFZENBTGJnVkJEd3RCR0d3aUFrR01DR29vQWdCc0lBSkJpQWhxS0FJQWFpSUdRUU4ySUFacUlBSkJnQWhxS0FJQUlBSkJoQWhxS0FJQUlBTnNha2tFUUNNQVFSQnJJaEFrQUNBZUtBSUFJUU1nRkVId0JHcEJBRUhzQUJBRElRWkJWQ0VDQWtBZ0EwSC9BWEVpREVFTVN3MEFBa0FnRkVIY0NXb2dCaUFRUVFocUlCQkJER29nRHlBSUlCUkIzQXRxSWhjUUN5SVNRWWgvU3cwQUlCQW9BZ3dpQmlBTVN3MEJJQlJCcUFWcUlRMGdGRUdrQldvaE5pQWVRUVJxSVJFZ0EwR0FnSUI0Y1NFM0lBWkJBV29pRXlFQ0lBWWhBd05BSUFJaUIwRUJheUVDSUFNaUNrRUJheUVESUJRZ0NrRUNkR29vQXZBRVJRMEFDMEVCSUFjZ0IwRUJUUnNoRmtFQUlRZEJBU0VDQTBBZ0FpQVdSd1JBSUJRZ0FrRUNkQ0lEYWlnQzhBUWhHQ0FESUExcUlBYzJBZ0FnQWtFQmFpRUNJQWNnR0dvaEJ3d0JDd3NnRFNBSE5nSUFRUUFoQWlBUUtBSUlJUU1EUUNBQ0lBTkhCRUFnRFNBQ0lCUnFRZHdKYWkwQUFDSVlRUUowYWlJWklCa29BZ0FpR1VFQmFqWUNBQ0FVSUJsQkFYUnFJaGtnR0RvQTNRVWdHU0FDT2dEY0JTQUNRUUZxSVFJTUFRc0xRUUFoQXlBTlFRQTJBZ0FnRENBR1FYOXphaUVHUVFFaEFnTkFJQUlnRmtjRVFDQVVJQUpCQW5ScUlnMGdBellDQUNBTktBTHdCQ0FDSUFacWRDQURhaUVESUFKQkFXb2hBZ3dCQ3dzZ0RDQVRJQXBySWdaclFRRnFJUW9nQmlFREEwQWdBeUFLU1FSQUlCUWdBMEUwYkdvaERVRUJJUUlEUUNBQ0lCWkhCRUFnRFNBQ1FRSjBJaGhxSUJRZ0dHb29BZ0FnQTNZMkFnQWdBa0VCYWlFQ0RBRUxDeUFEUVFGcUlRTU1BUXNMSUJjZ0ZFRTBFQUloT0NBVVFaQU1haUU1SUJNZ0RHc2hPaUFVUWR3RmFpRVhRUUFoQ2dOQUFrQUNRQ0FISUFwSEJFQkJBU0FNSUJNZ0Z5QUtRUUYwYWlJQ0xRQUJJZzFySWdOckloaDBJUmtnQWkwQUFDRVdJRGdnRFVFQ2RHb2lIeWdDQUNFQ0lBWWdHRTBFUUNBMlFRRWdBeUE2YWlJTklBMUJBVXdiSWlCQkFuUWlKR29vQWdBaERTQTVJQlFnQTBFMGJHcEJOQkFDSVNFZ0RVRUJkQ0VtSUJFZ0FrRUNkR29oSXlBZ1FRRk5EUUlnQTBFUWRFR0FnUHdIY1NBV2NrR0FnSUFJY2lFZ0lDRWdKR29vQWdBaEpFRUFJUUlEUUNBQ0lDUkdEUU1nSXlBQ1FRSjBhaUFnTmdFQUlBSkJBV29oQWd3QUN3QUxJQUlnQWlBWmFpSU5JQUlnRFVzYklRMGdBMEVRZEVHQWdQd0hjU0FXY2tHQWdJQUljaUVEQTBBZ0FpQU5SZzBESUJFZ0FrRUNkR29nQXpZQkFDQUNRUUZxSVFJTUFBc0FDeUFlSUF4QkVIUWdOM0lnREhKQmdBSnlOZ0lBREFNTElBY2dEV3NoSkNBWElDWnFJU1pCQUNFTkEwQWdEU0FrUmcwQlFRRWdHQ0FUSUNZZ0RVRUJkR29pSnkwQUFTSUNheUk3YTNRaVBDQWhJQUpCQW5ScUlpQW9BZ0FpQW1vaFBTQURJRHRxUVJCMFFZQ0EvQWR4SUNjdEFBQkJDSFJ5SUJaeVFZQ0FnQkJ5SVNjRFFDQWpJQUpCQW5ScUlDYzJBUUFnQWtFQmFpSUNJRDFKRFFBTElDQWdJQ2dDQUNBOGFqWUNBQ0FOUVFGcUlRME1BQXNBQ3lBZklCOG9BZ0FnR1dvMkFnQWdDa0VCYWlFS0RBQUxBQXNnRWlFQ0N5QVFRUkJxSkFBZ0FrR0lmMHNnQWlBSVQzSU5EQ0FjSUFzZ0FpQVBhaUFJSUFKcklCNFFGaUVEREFNTElCNGdEeUFJSUJRUUZDSUNRWWgvU3lBQ0lBaFBjZzBMSUJ3Z0N5QUNJQTlxSUFnZ0Ftc2dIaEFYSVFNTUFnc2dBd1JBSUJ3Z0N5QVBJQWdnQWhBV0lRTU1BZ3NnSENBTElBOGdDQ0FDRUJjaEF3d0JDeUFjSUFzZ0R5QUlJQUlRRlNFREN5QURRWWgvU3cwSUlBVWdDellDZ09zQklBVWdIRFlDOE9vQklBVkJBVFlDZ09vQklCcEJBa1lFUUNBRklCNDJBZ3dMSUFzZ0hHb2lBa0lBTndBQUlBSkNBRGNBR0NBQ1FnQTNBQkFnQWtJQU53QUlJQWxCaUg5TERRb0xJQWtnRlVZTkNDQVZJQWxySVFZZ0JTZ0NuT3NCSVFvQ1FDQUpJQnRxSWdNdEFBQWlEMFVFUUVFQklRSkJBQ0VQUWJoL0lRa2dCa0VCUmcwQkRBc0xBbjhnQTBFQmFpQVB3Q0lDUVFCT0RRQWFJQUpCZjBZRVFDQUdRUU5JRFFzZ0F5OEFBVUdBL2dGcUlROGdBMEVEYWd3QkN5QUdRUUpJRFFvZ0F5MEFBU0FQUVFoMGNrR0FnQUpySVE4Z0EwRUNhZ3NoRWtHNGZ5RUpJQkpCQVdvaUFpQVZJQnRxSWdkTERRb2dMQ0FGSUJJdEFBQWlFa0VHZGtFalFRa2dBaUFISUFKclFjQVFRZEFSUWZBU0lBVW9Bb1RxQVNBS0lBOGdGQkFoSWdsQmlIOUxEUWdnS3lBb0lCSkJCSFpCQTNGQkgwRUlJQUlnQ1dvaUFpQUhJQUpyUVlBTFFZQU1RWUFYSUFVb0FvVHFBU0FGS0FLYzZ3RWdEeUFVRUNFaUNFR0lmMHNOQ0VGc0lRa2dLaUF0SUJKQkFuWkJBM0ZCTkVFSklBSWdDR29pQWlBSElBSnJRWUFOUWVBT1FaQVpJQVVvQW9UcUFTQUZLQUtjNndFZ0R5QVVFQ0VpQjBHSWYwc05DaUFDSUFkcUlBTnJJZ0loQ1NBQ1FZaC9TdzBLQ3lBT0lBOUJBRXh5RFFFTFFicC9JUWtNQ0FzZ0pTQU9heUVKSUFZZ0Ftc2hCaUFDSUFOcUlRY0NRQUpBQWtBZ0NrVUVRQ0FQUVFsSUlBVXBBOGpwQVVLQmdJQUlWSElOQWlBb0tBSUFJZ0pCQ0dvaEVpQUNLQUlFSVFwQkFDRURRUUFoQWdOQUlBTWdDblpGQkVBZ0FpQVNJQU5CQTNScUxRQUNRUlpMYWlFQ0lBTkJBV29oQXd3QkN3c2dCVUVBTmdLYzZ3RWdBa0VJSUFwcmRFRVVUdzBCREFNTElBVkJBRFlDbk9zQkN5QUVJQVVvQXZEcUFTSUROZ0xjQVNBSklBNXFJUllnQXlBRktBS0E2d0ZxSVJjQ1FDQVBSUVJBSUE0aEJ3d0JDeUFGS0FLNDZRRWhHaUFGS0FLMDZRRWhHQ0FGS0FLdzZRRWhFaUFGUVFFMkFvVHFBVUVBSVFNRFFDQURRUU5IQkVBZ0JDQURRUUowSWdKcUlBSWdCV3BCck5BQmFpZ0NBRFlDWkNBRFFRRnFJUU1NQVFzTFFXd2hDU0FFUVRocUlnSWdCeUFHRUExQmlIOUxEUU5CQ0NBUElBOUJDRTRiSVI4Z05DQUNJQVVvQWdBUUhpQXpJQUlnQlNnQ0NCQWVJRElnQWlBRktBSUVFQjRnRGlBU2F5RVpRUUFoQ0FOQUlBUkJPR29RRDBFRFJpQUlJQjlPY2tVRVFDQUVLQUpRSUFRb0FreEJBM1JxS1FJQUlrQ25JZ2RCRUhZaUVVSC9BWEVoQ3lBRUtBSmdJQVFvQWx4QkEzUnFLUUlBSWtHbklneEJFSFlpSVVIL0FYRWhFQ0FFS0FKWUlBUW9BbFJCQTNScUtRSUFJa0pDSUlpbklRWWdRVUlnaUNCQVFpQ0lweUVEQWtBZ1FrSVFpS2NpQ2tIL0FYRWlBa0VDVHdSQUFrQWdBa0VaU1NBL1FvR0FnQkJVY2tVRVFDQUVRU0FnQkNnQ1BDSUtheUlOSUFJZ0FpQU5TeHNpRXlBS2FqWUNQQ0FHSUFRb0FqZ2dDblJCQUNBVGEzWWdBaUFUYXlJVGRHb2hDaUFFUVRocUVBOGFJQUlnRFUwTkFTQUVJQVFvQWp3aUFpQVRhallDUENBRUtBSTRJQUowUVFBZ0UydDJJQXBxSVFvTUFRc2dCQ0FDSUFRb0Fqd2lEV28yQWp3Z0JDZ0NPQ0FOZEVFQUlBcHJkaUFHYWlFS0lBUkJPR29RRHhvTElBUXBBbVFoUkNBRUlBbzJBbVFnQkNCRU53Sm9EQUVMQWtBZ0FrVUVRQ0FEQkVBZ0JDZ0NaQ0VLREFNTElBUW9BbWdoQ2d3QkN5QUVJQVFvQWp3aUFrRUJhallDUEFKL0lBWWdBMFZxSUFRb0FqZ2dBblJCSDNacUlnSkJBMFlFUUNBRUtBSmtRUUZyREFFTElBSkJBblFnQkdvb0FtUUxJZ1pGSUFacUlRb2dBa0VCUndSQUlBUWdCQ2dDYURZQ2JBc0xJQVFnQkNnQ1pEWUNhQ0FFSUFvMkFtUUxweUVDSUVGQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDUENJR0lCQnFOZ0k4SUFRb0FqZ2dCblJCQUNBaGEzWWdBbW9oQWdzZ0N5QVFha0VVVHdSQUlBUkJPR29RRHhvTElFQkNnSUQ4QjROUVJRUkFJQVFnQkNnQ1BDSUdJQXRxTmdJOElBUW9BamdnQm5SQkFDQVJhM1lnQTJvaEF3c2dCRUU0YWhBUEdpQUVJQVFvQWpnaUJrRUFJQWRCR0hZaUN5QUVLQUk4YWlJUWEzWWdDMEVDZEVHZ0hXb29BZ0J4SUFkQi8vOERjV28yQWt3Z0JDQVFJQXhCR0hZaUIyb2lDellDUENBRUlBZEJBblJCb0IxcUtBSUFJQVpCQUNBTGEzWnhJQXhCLy84RGNXbzJBbHdnQkVFNGFoQVBHaUFFSUVLbklnWkJHSFlpQnlBRUtBSThhaUlMTmdJOElBUWdCMEVDZEVHZ0hXb29BZ0FnQkNnQ09FRUFJQXRyZG5FZ0JrSC8vd054YWpZQ1ZDQUVRZkFBYWlBSVFReHNhaUlHSUFvMkFnZ2dCaUFDTmdJRUlBWWdBellDQUNBSVFRRnFJUWdnQXlBWmFpQUNhaUVaREFFTEN5QUlJQjlJRFFNZ0ZrRWdheUVoSUE0aEJ3TkFJQVJCT0dvUUQwRURSaUFJSUE5T2NrVUVRQ0FFS0FKUUlBUW9Ba3hCQTNScUtRSUFJa0NuSWdaQkVIWWlJMEgvQVhFaENpQUVLQUpnSUFRb0FseEJBM1JxS1FJQUlrR25JZzFCRUhZaUlFSC9BWEVoRXlBRUtBSllJQVFvQWxSQkEzUnFLUUlBSWtKQ0lJaW5JUU1nUVVJZ2lDQkFRaUNJcHlFTEFrQWdRa0lRaUtjaURFSC9BWEVpQWtFQ1R3UkFBa0FnQWtFWlNTQS9Rb0dBZ0JCVWNrVUVRQ0FFUVNBZ0JDZ0NQQ0lNYXlJUklBSWdBaUFSU3hzaUVDQU1hallDUENBRElBUW9BamdnREhSQkFDQVFhM1lnQWlBUWF5SU1kR29oRUNBRVFUaHFFQThhSUFJZ0VVME5BU0FFSUFRb0Fqd2lBaUFNYWpZQ1BDQUVLQUk0SUFKMFFRQWdER3QySUJCcUlSQU1BUXNnQkNBQ0lBUW9BandpRUdvMkFqd2dCQ2dDT0NBUWRFRUFJQXhyZGlBRGFpRVFJQVJCT0dvUUR4b0xJQVFwQW1RaFJDQUVJQkEyQW1RZ0JDQkVOd0pvREFFTEFrQWdBa1VFUUNBTEJFQWdCQ2dDWkNFUURBTUxJQVFvQW1naEVBd0JDeUFFSUFRb0Fqd2lBa0VCYWpZQ1BBSi9JQU1nQzBWcUlBUW9BamdnQW5SQkgzWnFJZ0pCQTBZRVFDQUVLQUprUVFGckRBRUxJQUpCQW5RZ0JHb29BbVFMSWdORklBTnFJUkFnQWtFQlJ3UkFJQVFnQkNnQ2FEWUNiQXNMSUFRZ0JDZ0NaRFlDYUNBRUlCQTJBbVFMcHlFTUlFRkNnSUQ4QjROUVJRUkFJQVFnQkNnQ1BDSUNJQk5xTmdJOElBUW9BamdnQW5SQkFDQWdhM1lnREdvaERBc2dDaUFUYWtFVVR3UkFJQVJCT0dvUUR4b0xJRUJDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NQQ0lDSUFwcU5nSThJQVFvQWpnZ0FuUkJBQ0FqYTNZZ0Myb2hDd3NnQkVFNGFoQVBHaUFFSUFRb0FqZ2lBa0VBSUFaQkdIWWlBeUFFS0FJOGFpSUthM1lnQTBFQ2RFR2dIV29vQWdCeElBWkIvLzhEY1dvMkFrd2dCQ0FLSUExQkdIWWlBMm9pQmpZQ1BDQUVJQU5CQW5SQm9CMXFLQUlBSUFKQkFDQUdhM1p4SUExQi8vOERjV28yQWx3Z0JFRTRhaEFQR2lBRUlFS25JZ0pCR0hZaUF5QUVLQUk4YWlJR05nSThJQVFnQTBFQ2RFR2dIV29vQWdBZ0JDZ0NPRUVBSUFacmRuRWdBa0gvL3dOeGFqWUNWQUpBQWtBQ1FDQUVLQUxjQVNJRElBUkI4QUJxSUFoQkIzRkJER3hxSWhNb0FnQWlFV29pSXlBWFN3MEFJQWNnRXlnQ0JDSU5JQkZxSWdwcUlDRkxEUUFnQ2tFZ2FpQVdJQWRyVFEwQkN5QUVJQk1vQWdnMkFoZ2dCQ0FUS1FJQU53TVFJQWNnRmlBRVFSQnFJQVJCM0FGcUlCY2dFaUFZSUJvUUh5RUtEQUVMSUFjZ0VXb2hBaUFUS0FJSUlRWWdCeUFES1FBQU53QUFJQWNnQXlrQUNEY0FDQUpBSUJGQkVVa05BQ0FISUFNcEFCQTNBQkFnQnlBREtRQVlOd0FZSUJGQkVHdEJFVWdOQUNBRFFSQnFJUU1nQjBFZ2FpRVJBMEFnRVNBREtRQVFOd0FBSUJFZ0F5a0FHRGNBQ0NBUklBTXBBQ0EzQUJBZ0VTQURLUUFvTndBWUlBTkJJR29oQXlBUlFTQnFJaEVnQWtrTkFBc0xJQUlnQm1zaEF5QUVJQ00yQXR3QklBSWdFbXNnQmtrRVFDQUdJQUlnR0d0TERRY2dHaUFhSUFNZ0Vtc2lBMm9pRVNBTmFrOEVRQ0FDSUJFZ0RSQUtHZ3dDQ3lBRElBMXFJUTBnQWlBUlFRQWdBMnNRQ2lBRGF5RUNJQkloQXdzZ0JrRVFUd1JBSUFJZ0F5a0FBRGNBQUNBQ0lBTXBBQWczQUFnZ0RVRVJTQTBCSUFJZ0RXb2hCaUFDUVJCcUlRSURRQ0FDSUFNcEFCQTNBQUFnQWlBREtRQVlOd0FJSUFJZ0F5a0FJRGNBRUNBQ0lBTXBBQ2czQUJnZ0EwRWdhaUVESUFKQklHb2lBaUFHU1EwQUN3d0JDd0pBSUFaQkIwMEVRQ0FDSUFNdEFBQTZBQUFnQWlBRExRQUJPZ0FCSUFJZ0F5MEFBam9BQWlBQ0lBTXRBQU02QUFNZ0FpQURJQVpCQW5RaUJrSEFIbW9vQWdCcUlnTW9BQUEyQUFRZ0F5QUdRZUFlYWlnQ0FHc2hBd3dCQ3lBQ0lBTXBBQUEzQUFBTElBMUJDVWtOQUNBQ0lBMXFJUkVnQWtFSWFpSUdJQU5CQ0dvaUEydEJEMHdFUUFOQUlBWWdBeWtBQURjQUFDQURRUWhxSVFNZ0JrRUlhaUlHSUJGSkRRQU1BZ3NBQ3lBR0lBTXBBQUEzQUFBZ0JpQURLUUFJTndBSUlBMUJHVWdOQUNBQ1FSaHFJUUlEUUNBQ0lBTXBBQkEzQUFBZ0FpQURLUUFZTndBSUlBSWdBeWtBSURjQUVDQUNJQU1wQUNnM0FCZ2dBMEVnYWlFRElBSkJJR29pQWlBUlNRMEFDd3NnQ2tHSWYwc0VRQ0FLSVFrTUJnVWdFeUFRTmdJSUlCTWdERFlDQkNBVElBczJBZ0FnQ0VFQmFpRUlJQWNnQ21vaEJ5QUxJQmxxSUF4cUlSa01BZ3NBQ3dzZ0NDQVBTQTBESUFnZ0gyc2hCZ05BQWtBZ0JpQVBUZ1JBUVFBaEF3TkFJQU5CQTBZTkFpQUZJQU5CQW5RaUFtcEJyTkFCYWlBQ0lBUnFLQUprTmdJQUlBTkJBV29oQXd3QUN3QUxBa0FDUUFKQUlBUW9BdHdCSWdNZ0JFSHdBR29nQmtFSGNVRU1iR29pQ0NnQ0FDSU1haUlRSUJkTERRQWdCeUFJS0FJRUlnc2dER29pQ21vZ0lVc05BQ0FLUVNCcUlCWWdCMnRORFFFTElBUWdDQ2dDQ0RZQ0tDQUVJQWdwQWdBM0F5QWdCeUFXSUFSQklHb2dCRUhjQVdvZ0Z5QVNJQmdnR2hBZklRb01BUXNnQnlBTWFpRUNJQWdvQWdnaENDQUhJQU1wQUFBM0FBQWdCeUFES1FBSU53QUlBa0FnREVFUlNRMEFJQWNnQXlrQUVEY0FFQ0FISUFNcEFCZzNBQmdnREVFUWEwRVJTQTBBSUFOQkVHb2hBeUFIUVNCcUlRd0RRQ0FNSUFNcEFCQTNBQUFnRENBREtRQVlOd0FJSUF3Z0F5a0FJRGNBRUNBTUlBTXBBQ2czQUJnZ0EwRWdhaUVESUF4QklHb2lEQ0FDU1EwQUN3c2dBaUFJYXlFRElBUWdFRFlDM0FFZ0FpQVNheUFJU1FSQUlBZ2dBaUFZYTBzTkJ5QWFJQm9nQXlBU2F5SURhaUlNSUF0cVR3UkFJQUlnRENBTEVBb2FEQUlMSUFNZ0Myb2hDeUFDSUF4QkFDQURheEFLSUFOcklRSWdFaUVEQ3lBSVFSQlBCRUFnQWlBREtRQUFOd0FBSUFJZ0F5a0FDRGNBQ0NBTFFSRklEUUVnQWlBTGFpRUlJQUpCRUdvaEFnTkFJQUlnQXlrQUVEY0FBQ0FDSUFNcEFCZzNBQWdnQWlBREtRQWdOd0FRSUFJZ0F5a0FLRGNBR0NBRFFTQnFJUU1nQWtFZ2FpSUNJQWhKRFFBTERBRUxBa0FnQ0VFSFRRUkFJQUlnQXkwQUFEb0FBQ0FDSUFNdEFBRTZBQUVnQWlBRExRQUNPZ0FDSUFJZ0F5MEFBem9BQXlBQ0lBTWdDRUVDZENJSVFjQWVhaWdDQUdvaUF5Z0FBRFlBQkNBRElBaEI0QjVxS0FJQWF5RUREQUVMSUFJZ0F5a0FBRGNBQUFzZ0MwRUpTUTBBSUFJZ0Myb2hEQ0FDUVFocUlnZ2dBMEVJYWlJRGEwRVBUQVJBQTBBZ0NDQURLUUFBTndBQUlBTkJDR29oQXlBSVFRaHFJZ2dnREVrTkFBd0NDd0FMSUFnZ0F5a0FBRGNBQUNBSUlBTXBBQWczQUFnZ0MwRVpTQTBBSUFKQkdHb2hBZ05BSUFJZ0F5a0FFRGNBQUNBQ0lBTXBBQmczQUFnZ0FpQURLUUFnTndBUUlBSWdBeWtBS0RjQUdDQURRU0JxSVFNZ0FrRWdhaUlDSUF4SkRRQUxDeUFLUVloL1N3UkFJQW9oQ1F3R0JTQUdRUUZxSVFZZ0J5QUthaUVIREFJTEFBc0xJQVFvQXR3QklRTUxRYnAvSVFrZ0Z5QURheUlDSUJZZ0IydExEUUlnQndSL0lBY2dBeUFDRUFJZ0Ftb0ZRUUFMSUE1cklRa01BZ3NnQlVFQU5nS2M2d0VMSUFRZ0JTZ0M4T29CSWdNMkF0d0JJQWtnRG1vaERDQURJQVVvQW9EckFXb2hFQUpBSUE5RkJFQWdEaUVHREFFTElBVW9BcmpwQVNFTklBVW9BclRwQVNFVElBVW9BckRwQVNFU0lBVkJBVFlDaE9vQlFRQWhBd05BSUFOQkEwY0VRQ0FFSUFOQkFuUWlBbW9nQWlBRmFrR3MwQUZxS0FJQU5nS2NBU0FEUVFGcUlRTU1BUXNMUVd3aENTQUVRZkFBYWlJQ0lBY2dCaEFOUVloL1N3MEJJREVnQWlBRktBSUFFQjRnTUNBQ0lBVW9BZ2dRSGlBdklBSWdCU2dDQkJBZUlBeEJJR3NoR0NBT0lRWURRQ0FFS0FLSUFTQUVLQUtFQVVFRGRHb3BBZ0FpUUtjaUNrRVFkaUlaUWY4QmNTRUxJQVFvQXBnQklBUW9BcFFCUVFOMGFpa0NBQ0pCcHlJV1FSQjJJaDlCL3dGeElSb2dCQ2dDa0FFZ0JDZ0NqQUZCQTNScUtRSUFJa0pDSUlpbklRY2dRVUlnaUNCQVFpQ0lweUVEQWtBZ1FrSVFpS2NpQ0VIL0FYRWlBa0VDVHdSQUFrQWdBa0VaU1NBL1FvR0FnQkJVY2tVRVFDQUVRU0FnQkNnQ2RDSUlheUlSSUFJZ0FpQVJTeHNpRnlBSWFqWUNkQ0FISUFRb0FuQWdDSFJCQUNBWGEzWWdBaUFYYXlJWGRHb2hDQ0FFUWZBQWFoQVBHaUFDSUJGTkRRRWdCQ0FFS0FKMElnSWdGMm8yQW5RZ0JDZ0NjQ0FDZEVFQUlCZHJkaUFJYWlFSURBRUxJQVFnQWlBRUtBSjBJaEZxTmdKMElBUW9BbkFnRVhSQkFDQUlhM1lnQjJvaENDQUVRZkFBYWhBUEdnc2dCQ2tDbkFFaFJDQUVJQWcyQXB3QklBUWdSRGNDb0FFTUFRc0NRQ0FDUlFSQUlBTUVRQ0FFS0FLY0FTRUlEQU1MSUFRb0FxQUJJUWdNQVFzZ0JDQUVLQUowSWdKQkFXbzJBblFDZnlBSElBTkZhaUFFS0FKd0lBSjBRUjkyYWlJQ1FRTkdCRUFnQkNnQ25BRkJBV3NNQVFzZ0FrRUNkQ0FFYWlnQ25BRUxJZ2RGSUFkcUlRZ2dBa0VCUndSQUlBUWdCQ2dDb0FFMkFxUUJDd3NnQkNBRUtBS2NBVFlDb0FFZ0JDQUlOZ0tjQVF1bklRSWdRVUtBZ1B3SGcxQkZCRUFnQkNBRUtBSjBJZ2NnR21vMkFuUWdCQ2dDY0NBSGRFRUFJQjlyZGlBQ2FpRUNDeUFMSUJwcVFSUlBCRUFnQkVId0FHb1FEeG9MSUVCQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDZENJSElBdHFOZ0owSUFRb0FuQWdCM1JCQUNBWmEzWWdBMm9oQXdzZ0JFSHdBR29RRHhvZ0JDQUVLQUp3SWdkQkFDQUtRUmgySWdzZ0JDZ0NkR29pR210MklBdEJBblJCb0IxcUtBSUFjU0FLUWYvL0EzRnFOZ0tFQVNBRUlCb2dGa0VZZGlJS2FpSUxOZ0owSUFRZ0NrRUNkRUdnSFdvb0FnQWdCMEVBSUF0cmRuRWdGa0gvL3dOeGFqWUNsQUVnQkVId0FHb1FEeG9nQkNCQ3B5SUhRUmgySWdvZ0JDZ0NkR29pQ3pZQ2RDQUVJQXBCQW5SQm9CMXFLQUlBSUFRb0FuQkJBQ0FMYTNaeElBZEIvLzhEY1dvMkFvd0JJQVFnQXpZQ09DQUVJQUkyQWp3Z0JDQUlOZ0pBQWtBQ1FBSkFJQVFvQXR3Qklnc2dBMm9pRmlBUVN3MEFJQVlnQWlBRGFpSUthaUFZU3cwQUlBcEJJR29nRENBR2EwME5BUXNnQkNBRVFVQnJLQUlBTmdJSUlBUWdCQ2tET0RjREFDQUdJQXdnQkNBRVFkd0JhaUFRSUJJZ0V5QU5FQjhoQ2d3QkN5QURJQVpxSVFjZ0JpQUxLUUFBTndBQUlBWWdDeWtBQ0RjQUNBSkFJQU5CRVVrTkFDQUdJQXNwQUJBM0FCQWdCaUFMS1FBWU53QVlJQU5CRUd0QkVVZ05BQ0FMUVJCcUlRTWdCa0VnYWlFTEEwQWdDeUFES1FBUU53QUFJQXNnQXlrQUdEY0FDQ0FMSUFNcEFDQTNBQkFnQ3lBREtRQW9Od0FZSUFOQklHb2hBeUFMUVNCcUlnc2dCMGtOQUFzTElBY2dDR3NoQXlBRUlCWTJBdHdCSUFjZ0Vtc2dDRWtFUUNBSUlBY2dFMnRMRFFRZ0RTQU5JQU1nRW1zaUEyb2lDeUFDYWs4RVFDQUhJQXNnQWhBS0dnd0NDeUFISUF0QkFDQURheEFLSUFRZ0FpQURhaUlDTmdJOElBTnJJUWNnRWlFREN5QUlRUkJQQkVBZ0J5QURLUUFBTndBQUlBY2dBeWtBQ0RjQUNDQUNRUkZJRFFFZ0FpQUhhaUVJSUFkQkVHb2hBZ05BSUFJZ0F5a0FFRGNBQUNBQ0lBTXBBQmczQUFnZ0FpQURLUUFnTndBUUlBSWdBeWtBS0RjQUdDQURRU0JxSVFNZ0FrRWdhaUlDSUFoSkRRQUxEQUVMQWtBZ0NFRUhUUVJBSUFjZ0F5MEFBRG9BQUNBSElBTXRBQUU2QUFFZ0J5QURMUUFDT2dBQ0lBY2dBeTBBQXpvQUF5QUhJQU1nQ0VFQ2RDSUlRY0FlYWlnQ0FHb2lBeWdBQURZQUJDQURJQWhCNEI1cUtBSUFheUVEREFFTElBY2dBeWtBQURjQUFBc2dBa0VKU1EwQUlBSWdCMm9oQ3lBSFFRaHFJZ2dnQTBFSWFpSURhMEVQVEFSQUEwQWdDQ0FES1FBQU53QUFJQU5CQ0dvaEF5QUlRUWhxSWdnZ0Mwa05BQXdDQ3dBTElBZ2dBeWtBQURjQUFDQUlJQU1wQUFnM0FBZ2dBa0VaU0EwQUlBZEJHR29oQWdOQUlBSWdBeWtBRURjQUFDQUNJQU1wQUJnM0FBZ2dBaUFES1FBZ053QVFJQUlnQXlrQUtEY0FHQ0FEUVNCcUlRTWdBa0VnYWlJQ0lBdEpEUUFMQ3lBS1FZaC9Td1JBSUFvaENRd0RDeUFHSUFwcUlRWWdCRUh3QUdvUUR5RURJQTlCQVdzaUR3MEFDMEVBSVFJZ0EwRUNTUTBCQTBBZ0FrRURSd1JBSUFVZ0FrRUNkQ0lEYWtHczBBRnFJQU1nQkdvb0Fwd0JOZ0lBSUFKQkFXb2hBZ3dCQ3dzZ0JDZ0MzQUVoQXd0QnVuOGhDU0FRSUFOcklnSWdEQ0FHYTBzTkFDQUdCSDhnQmlBRElBSVFBaUFDYWdWQkFBc2dEbXNoQ1FzZ0NVR0lmMHNOQmdzQ1FDQUZLQUxzNmdGRkRRQWdCU0FGS1FPSTZnRWdDYTE4TndPSTZnRUNRQ0FGS0FMUTZnRWlBaUFKYWlJSVFSOU5CRUFnRGtVTkFTQUNJQ0pxSUE0Z0NSQUNHaUFGS0FMUTZnRWdDV29oQ0F3QkN5QU9JUU1nQWdSQUlBSWdJbW9nQTBFZ0lBSnJFQUlhSUFVb0F0RHFBU0VDSUFWQkFEWUMwT29CSUFVZ0JTa0RrT29CSUFVcEFMRHFBVUxQMXRPKzBzZXIyVUorZkVJZmlVS0hsYSt2bUxiZW01NS9mamNEa09vQklBVWdCU2tEbU9vQklBVXBBTGpxQVVMUDF0Tyswc2VyMlVKK2ZFSWZpVUtIbGErdm1MYmVtNTUvZmpjRG1Pb0JJQVVnQlNrRG9Pb0JJQVVwQU1EcUFVTFAxdE8rMHNlcjJVSitmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZqY0RvT29CSUFVZ0JTa0RxT29CSUFVcEFNanFBVUxQMXRPKzBzZXIyVUorZkVJZmlVS0hsYSt2bUxiZW01NS9mamNEcU9vQklBTWdBbXRCSUdvaEF3c2dDU0FPYWlJQ0lBTkJJR3BQQkVBZ0FrRWdheUVHSUFVcEE2anFBU0UvSUFVcEE2RHFBU0ZBSUFVcEE1anFBU0ZCSUFVcEE1RHFBU0ZDQTBBZ0F5a0FHRUxQMXRPKzBzZXIyVUorSUQ5OFFoK0pRb2VWcjYrWXR0NmJubjkrSVQ4Z0F5a0FFRUxQMXRPKzBzZXIyVUorSUVCOFFoK0pRb2VWcjYrWXR0NmJubjkrSVVBZ0F5a0FDRUxQMXRPKzBzZXIyVUorSUVGOFFoK0pRb2VWcjYrWXR0NmJubjkrSVVFZ0F5a0FBRUxQMXRPKzBzZXIyVUorSUVKOFFoK0pRb2VWcjYrWXR0NmJubjkrSVVJZ0EwRWdhaUlESUFaTkRRQUxJQVVnUHpjRHFPb0JJQVVnUURjRG9Pb0JJQVVnUVRjRG1Pb0JJQVVnUWpjRGtPb0JDeUFDSUFOTkRRRWdJaUFESUFJZ0Eyc2lDQkFDR2dzZ0JTQUlOZ0xRNmdFTElEVWdGV3NoQXlBVklCdHFJUUlnQ1NBT2FpRU9JQVFvQWpCRkRRQUxJQ2twQXdBaVAwSi9VU0EvSUE0Z0hXdXNVWEpGQkVCQmJDRUpEQVlMSUFVb0F1RHBBUVJBUVdvaENTQURRUVJKRFFZZ0JTZ0M2T29CUlFSQUlDSWdCU2dDME9vQmFpRUtBbjRnQlNrRGlPb0JJajlDSUZvRVFDQUZLUU9ZNmdFaVFFSUhpU0FGS1FPUTZnRWlRVUlCaVh3Z0JTa0RvT29CSWtKQ0RJbDhJQVVwQTZqcUFTSkRRaEtKZkNCQlFzL1cwNzdTeDZ2WlFuNUNINGxDaDVXdnI1aTIzcHVlZjM2RlFvZVZyNitZdHQ2Ym5uOStRcDJqdGVxRHNZMksrZ0I5SUVCQ3o5YlR2dExIcTlsQ2ZrSWZpVUtIbGErdm1MYmVtNTUvZm9WQ2g1V3ZyNWkyM3B1ZWYzNUNuYU8xNm9PeGpZcjZBSDBnUWtMUDF0Tyswc2VyMlVKK1FoK0pRb2VWcjYrWXR0NmJubjkraFVLSGxhK3ZtTGJlbTU1L2ZrS2RvN1hxZzdHTml2b0FmU0JEUXMvVzA3N1N4NnZaUW41Q0g0bENoNVd2cjVpMjNwdWVmMzZGUW9lVnI2K1l0dDZibm45K1FwMmp0ZXFEc1kySytnQjlEQUVMSUFVcEE2RHFBVUxGejlteThlVzY2aWQ4Q3lBL2ZDRS9JQ0loQmdOQUlBb2dCa0VJYWlJSFR3UkFJQVlwQUFCQ3o5YlR2dExIcTlsQ2ZrSWZpVUtIbGErdm1MYmVtNTUvZmlBL2hVSWJpVUtIbGErdm1MYmVtNTUvZmtLZG83WHFnN0dOaXZvQWZTRS9JQWNoQmd3QkN3c0NRQ0FLSUFaQkJHb2lDRWtFUUNBR0lRZ01BUXNnQmpVQUFFS0hsYSt2bUxiZW01NS9maUEvaFVJWGlVTFAxdE8rMHNlcjJVSitRdm56M2ZHWjlwbXJGbndoUHdzRFFDQUlJQXBKQkVBZ0NERUFBRUxGejlteThlVzY2aWQrSUQrRlFndUpRb2VWcjYrWXR0NmJubjkrSVQ4Z0NFRUJhaUVJREFFTEN5QUNLQUFBSUQ5Q0lZZ2dQNFZDejliVHZ0TEhxOWxDZmlJL1FoMklJRCtGUXZuejNmR1o5cG1yRm40aVAwSWdpQ0EvaGFkSERRY0xJQU5CQkdzaEF5QUNRUVJxSVFJTElBNGdIV3NpQ1VHSmYwOE5CQ0FCSUFscklRRWdDU0FkYWlFZFFRRWhQZ3dCQ3d0QnVIOGhCeUFERFFRZ0hTQUFheUVIREFRTFFXd2hDUXdCQzBHNGZ5RUpDMEc0ZnlFSElBbEJka1lnUG5FTkFRc2dDU0VIQ3lnQ0FBMEFJQVZCL09vQmFpZ0NBQ0VCSUFWQitPb0JhaWdDQUNFQUlBVVFHQ0FGS0FLdzZ3RWdBQ0FCRUJNZ0JVRUFOZ0t3NndFZ0JTZ0NwT3NCSWdJRVFBSkFBa0FDUUFKQUlBSW9BZ0FpQXdSQUlBQkZEUUlnQVNBRElBQVJBZ0FNQVFzZ0FFVU5BZ3NnQVNBQ0lBQVJBZ0FNQWdzZ0F4QUdDeUFDRUFZTElBVkJBRFlDcE9zQkN5QUFCRUFnQVNBRklBQVJBZ0FNQVFzZ0JSQUdDeUFFUWVBQmFpUUFJQWNMQzZnVkNRQkJpQWdMRFFFQUFBQUJBQUFBQWdBQUFBSUFRYUFJQzdNR0FRQUFBQUVBQUFBQ0FBQUFBZ0FBQUNZQUFBQ0NBQUFBSVFVQUFFb0FBQUJuQ0FBQUpnQUFBTUFCQUFDQUFBQUFTUVVBQUVvQUFBQytDQUFBS1FBQUFDd0NBQUNBQUFBQVNRVUFBRW9BQUFDK0NBQUFMd0FBQU1vQ0FBQ0FBQUFBaWdVQUFFb0FBQUNFQ1FBQU5RQUFBSE1EQUFDQUFBQUFuUVVBQUVvQUFBQ2dDUUFBUFFBQUFJRURBQUNBQUFBQTZ3VUFBRXNBQUFBK0NnQUFSQUFBQUo0REFBQ0FBQUFBVFFZQUFFc0FBQUNxQ2dBQVN3QUFBTE1EQUFDQUFBQUF3UVlBQUUwQUFBQWZEUUFBVFFBQUFGTUVBQUNBQUFBQUl3Z0FBRkVBQUFDbUR3QUFWQUFBQUprRUFBQ0FBQUFBU3drQUFGY0FBQUN4RWdBQVdBQUFBTm9FQUFDQUFBQUFid2tBQUYwQUFBQWpGQUFBVkFBQUFFVUZBQUNBQUFBQVZBb0FBR29BQUFDTUZBQUFhZ0FBQUs4RkFBQ0FBQUFBZGdrQUFId0FBQUJPRUFBQWZBQUFBTklDQUFDQUFBQUFZd2NBQUpFQUFBQ1FCd0FBa2dBQUFBQUFBQUFCQUFBQUFRQUFBQVVBQUFBTkFBQUFIUUFBQUQwQUFBQjlBQUFBL1FBQUFQMEJBQUQ5QXdBQS9RY0FBUDBQQUFEOUh3QUEvVDhBQVAxL0FBRDkvd0FBL2Y4QkFQMy9Bd0Q5L3djQS9mOFBBUDMvSHdEOS96OEEvZjkvQVAzLy93RDkvLzhCL2YvL0EvMy8vd2Y5Ly84UC9mLy9ILzMvL3ovOS8vOS9BQUFBQUFFQUFBQUNBQUFBQXdBQUFBUUFBQUFGQUFBQUJnQUFBQWNBQUFBSUFBQUFDUUFBQUFvQUFBQUxBQUFBREFBQUFBMEFBQUFPQUFBQUR3QUFBQkFBQUFBUkFBQUFFZ0FBQUJNQUFBQVVBQUFBRlFBQUFCWUFBQUFYQUFBQUdBQUFBQmtBQUFBYUFBQUFHd0FBQUJ3QUFBQWRBQUFBSGdBQUFCOEFBQUFEQUFBQUJBQUFBQVVBQUFBR0FBQUFCd0FBQUFnQUFBQUpBQUFBQ2dBQUFBc0FBQUFNQUFBQURRQUFBQTRBQUFBUEFBQUFFQUFBQUJFQUFBQVNBQUFBRXdBQUFCUUFBQUFWQUFBQUZnQUFBQmNBQUFBWUFBQUFHUUFBQUJvQUFBQWJBQUFBSEFBQUFCMEFBQUFlQUFBQUh3QUFBQ0FBQUFBaEFBQUFJZ0FBQUNNQUFBQWxBQUFBSndBQUFDa0FBQUFyQUFBQUx3QUFBRE1BQUFBN0FBQUFRd0FBQUZNQUFBQmpBQUFBZ3dBQUFBTUJBQUFEQWdBQUF3UUFBQU1JQUFBREVBQUFBeUFBQUFOQUFBQURnQUFBQXdBQkFFSGdEd3RSQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBd0FBQUFNQUFBQUVBQUFBQkFBQUFBVUFBQUFIQUFBQUNBQUFBQWtBQUFBS0FBQUFDd0FBQUF3QUFBQU5BQUFBRGdBQUFBOEFBQUFRQUVIRUVBdUxBUUVBQUFBQ0FBQUFBd0FBQUFRQUFBQUZBQUFBQmdBQUFBY0FBQUFJQUFBQUNRQUFBQW9BQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBRHdBQUFCQUFBQUFTQUFBQUZBQUFBQllBQUFBWUFBQUFIQUFBQUNBQUFBQW9BQUFBTUFBQUFFQUFBQUNBQUFBQUFBRUFBQUFDQUFBQUJBQUFBQWdBQUFBUUFBQUFJQUFBQUVBQUFBQ0FBQUFBQUFFQVFaQVNDK1lFQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBd0FBQUFNQUFBQUVBQUFBQmdBQUFBY0FBQUFJQUFBQUNRQUFBQW9BQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBRHdBQUFCQUFBQUFCQUFBQUJBQUFBQWdBQUFBQUFBQUFBUUFCQVFZQUFBQUFBQUFFQUFBQUFCQUFBQVFBQUFBQUlBQUFCUUVBQUFBQUFBQUZBd0FBQUFBQUFBVUVBQUFBQUFBQUJRWUFBQUFBQUFBRkJ3QUFBQUFBQUFVSkFBQUFBQUFBQlFvQUFBQUFBQUFGREFBQUFBQUFBQVlPQUFBQUFBQUJCUkFBQUFBQUFBRUZGQUFBQUFBQUFRVVdBQUFBQUFBQ0JSd0FBQUFBQUFNRklBQUFBQUFBQkFVd0FBQUFJQUFHQlVBQUFBQUFBQWNGZ0FBQUFBQUFDQVlBQVFBQUFBQUtCZ0FFQUFBQUFBd0dBQkFBQUNBQUFBUUFBQUFBQUFBQUJBRUFBQUFBQUFBRkFnQUFBQ0FBQUFVRUFBQUFBQUFBQlFVQUFBQWdBQUFGQndBQUFBQUFBQVVJQUFBQUlBQUFCUW9BQUFBQUFBQUZDd0FBQUFBQUFBWU5BQUFBSUFBQkJSQUFBQUFBQUFFRkVnQUFBQ0FBQVFVV0FBQUFBQUFDQlJnQUFBQWdBQU1GSUFBQUFBQUFBd1VvQUFBQUFBQUdCRUFBQUFBUUFBWUVRQUFBQUNBQUJ3V0FBQUFBQUFBSkJnQUNBQUFBQUFzR0FBZ0FBREFBQUFRQUFBQUFFQUFBQkFFQUFBQWdBQUFGQWdBQUFDQUFBQVVEQUFBQUlBQUFCUVVBQUFBZ0FBQUZCZ0FBQUNBQUFBVUlBQUFBSUFBQUJRa0FBQUFnQUFBRkN3QUFBQ0FBQUFVTUFBQUFBQUFBQmc4QUFBQWdBQUVGRWdBQUFDQUFBUVVVQUFBQUlBQUNCUmdBQUFBZ0FBSUZIQUFBQUNBQUF3VW9BQUFBSUFBRUJUQUFBQUFBQUJBR0FBQUJBQUFBRHdZQWdBQUFBQUFPQmdCQUFBQUFBQTBHQUNBQVFZQVhDNGNDQVFBQkFRVUFBQUFBQUFBRkFBQUFBQUFBQmdROUFBQUFBQUFKQmYwQkFBQUFBQThGL1g4QUFBQUFGUVg5L3g4QUFBQURCUVVBQUFBQUFBY0VmUUFBQUFBQURBWDlEd0FBQUFBU0JmMy9Bd0FBQUJjRi9mOS9BQUFBQlFVZEFBQUFBQUFJQlAwQUFBQUFBQTRGL1Q4QUFBQUFGQVg5L3c4QUFBQUNCUUVBQUFBUUFBY0VmUUFBQUFBQUN3WDlCd0FBQUFBUkJmMy9BUUFBQUJZRi9mOC9BQUFBQkFVTkFBQUFFQUFJQlAwQUFBQUFBQTBGL1I4QUFBQUFFd1g5L3djQUFBQUJCUUVBQUFBUUFBWUVQUUFBQUFBQUNnWDlBd0FBQUFBUUJmMy9BQUFBQUJ3Ri9mLy9Ed0FBR3dYOS8vOEhBQUFhQmYzLy93TUFBQmtGL2YvL0FRQUFHQVg5Ly84QVFaQVpDNFlFQVFBQkFRWUFBQUFBQUFBR0F3QUFBQUFBQUFRRUFBQUFJQUFBQlFVQUFBQUFBQUFGQmdBQUFBQUFBQVVJQUFBQUFBQUFCUWtBQUFBQUFBQUZDd0FBQUFBQUFBWU5BQUFBQUFBQUJoQUFBQUFBQUFBR0V3QUFBQUFBQUFZV0FBQUFBQUFBQmhrQUFBQUFBQUFHSEFBQUFBQUFBQVlmQUFBQUFBQUFCaUlBQUFBQUFBRUdKUUFBQUFBQUFRWXBBQUFBQUFBQ0JpOEFBQUFBQUFNR093QUFBQUFBQkFaVEFBQUFBQUFIQm9NQUFBQUFBQWtHQXdJQUFCQUFBQVFFQUFBQUFBQUFCQVVBQUFBZ0FBQUZCZ0FBQUFBQUFBVUhBQUFBSUFBQUJRa0FBQUFBQUFBRkNnQUFBQUFBQUFZTUFBQUFBQUFBQmc4QUFBQUFBQUFHRWdBQUFBQUFBQVlWQUFBQUFBQUFCaGdBQUFBQUFBQUdHd0FBQUFBQUFBWWVBQUFBQUFBQUJpRUFBQUFBQUFFR0l3QUFBQUFBQVFZbkFBQUFBQUFDQmlzQUFBQUFBQU1HTXdBQUFBQUFCQVpEQUFBQUFBQUZCbU1BQUFBQUFBZ0dBd0VBQUNBQUFBUUVBQUFBTUFBQUJBUUFBQUFRQUFBRUJRQUFBQ0FBQUFVSEFBQUFJQUFBQlFnQUFBQWdBQUFGQ2dBQUFDQUFBQVVMQUFBQUFBQUFCZzRBQUFBQUFBQUdFUUFBQUFBQUFBWVVBQUFBQUFBQUJoY0FBQUFBQUFBR0dnQUFBQUFBQUFZZEFBQUFBQUFBQmlBQUFBQUFBQkFHQXdBQkFBQUFEd1lEZ0FBQUFBQU9CZ05BQUFBQUFBMEdBeUFBQUFBQURBWURFQUFBQUFBTEJnTUlBQUFBQUFvR0F3UUFRYVFkQzlrQkFRQUFBQU1BQUFBSEFBQUFEd0FBQUI4QUFBQS9BQUFBZndBQUFQOEFBQUQvQVFBQS93TUFBUDhIQUFEL0R3QUEveDhBQVA4L0FBRC9md0FBLy84QUFQLy9BUUQvL3dNQS8vOEhBUC8vRHdELy94OEEvLzgvQVAvL2Z3RC8vLzhBLy8vL0FmLy8vd1AvLy84SC8vLy9ELy8vL3gvLy8vOC8vLy8vZndBQUFBQUJBQUFBQWdBQUFBUUFBQUFBQUFBQUFnQUFBQVFBQUFBSUFBQUFBQUFBQUFFQUFBQUNBQUFBQVFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFDQUFBQUFnQUFBQUhBQUFBQ0FBQUFBa0FBQUFLQUFBQUN3QkJnQjhMQTRBUkFRPT0iO3ZhciBPST1uZXcgeUEsVEk9ITE7YXN5bmMgZnVuY3Rpb24gY2UoQSxJLHQpe2xldCBlPW51bGw7dHlwZW9mIEEhPSJzdHJpbmciP2U9QS5ocmVmOkEuc3RhcnRzV2l0aCgiaHR0cCIpP2U9QTplPWAke0l9LyR7QX1gLGUuZW5kc1dpdGgoIi5qcyIpJiYoZT1lLnN1YnN0cmluZygwLGUubGVuZ3RoLTMpKSxlLmVuZHNXaXRoKCIud2FzbSIpJiYoZT1lLnN1YnN0cmluZygwLGUubGVuZ3RoLTUpKTtsZXQgZz1gJHtlfS53YXNtYCxyPWF3YWl0IGRBLmdldChgJHtnfS56c3RgLHtyZXNwb25zZVR5cGU6ImFycmF5YnVmZmVyIixwYXJhbXM6dH0pO1RJfHwoYXdhaXQgT0kuaW5pdCgpLFRJPSEwKTtsZXQgcz1PSS5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoci5kYXRhKSkuYnVmZmVyO3JldHVybihhd2FpdCBpbXBvcnQoYCR7ZX0uanNgKSkuZGVmYXVsdCh7d2FzbUJpbmFyeTpzfSl9dmFyIHhJPWNlO3ZhciB3QT1uZXcgTWFwO2FzeW5jIGZ1bmN0aW9uIGZlKEEsSSx0KXtsZXQgZT1BLGc9QSxyPW51bGw7cmV0dXJuIHR5cGVvZiBBIT0ic3RyaW5nIiYmKGU9bmV3IFVSTChBLmhyZWYpLGc9ZS5ocmVmKSx3QS5oYXMoZyk/cj1hd2FpdCB3QS5nZXQoZyk6KHdBLnNldChnLHhJKGUsSSx0KSkscj1hd2FpdCB3QS5nZXQoZykpLHJ9dmFyIFBJPWZlO3ZhciBsZT17VGV4dEZpbGU6IlRleHRGaWxlIixCaW5hcnlGaWxlOiJCaW5hcnlGaWxlIixUZXh0U3RyZWFtOiJUZXh0U3RyZWFtIixCaW5hcnlTdHJlYW06IkJpbmFyeVN0cmVhbSIsSW1hZ2U6IkltYWdlIixNZXNoOiJNZXNoIixQb2x5RGF0YToiUG9seURhdGEiLEpzb25Db21wYXRpYmxlOiJKc29uQ29tcGF0aWJsZSJ9LEQ9bGU7dmFyIERlPXtJbnQ4OiJpbnQ4IixVSW50ODoidWludDgiLEludDE2OiJpbnQxNiIsVUludDE2OiJ1aW50MTYiLEludDMyOiJpbnQzMiIsVUludDMyOiJ1aW50MzIiLEludDY0OiJpbnQ2NCIsVUludDY0OiJ1aW50NjQiLFNpemVWYWx1ZVR5cGU6InVpbnQ2NCIsSWRlbnRpZmllclR5cGU6InVpbnQ2NCIsSW5kZXhWYWx1ZVR5cGU6ImludDY0IixPZmZzZXRWYWx1ZVR5cGU6ImludDY0In0scD1EZTt2YXIgdWU9e0Zsb2F0MzI6ImZsb2F0MzIiLEZsb2F0NjQ6ImZsb2F0NjQiLFNwYWNlUHJlY2lzaW9uVHlwZToiZmxvYXQ2NCJ9LFA9dWU7ZnVuY3Rpb24gaGUoQSxJKXtsZXQgdD1udWxsO3N3aXRjaChBKXtjYXNlIHAuVUludDg6e3Q9bmV3IFVpbnQ4QXJyYXkoSSk7YnJlYWt9Y2FzZSBwLkludDg6e3Q9bmV3IEludDhBcnJheShJKTticmVha31jYXNlIHAuVUludDE2Ont0PW5ldyBVaW50MTZBcnJheShJKTticmVha31jYXNlIHAuSW50MTY6e3Q9bmV3IEludDE2QXJyYXkoSSk7YnJlYWt9Y2FzZSBwLlVJbnQzMjp7dD1uZXcgVWludDMyQXJyYXkoSSk7YnJlYWt9Y2FzZSBwLkludDMyOnt0PW5ldyBJbnQzMkFycmF5KEkpO2JyZWFrfWNhc2UgcC5VSW50NjQ6e3R5cGVvZiBnbG9iYWxUaGlzLkJpZ1VpbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ1VpbnQ2NEFycmF5KEkpOnQ9bmV3IFVpbnQ4QXJyYXkoSSk7YnJlYWt9Y2FzZSBwLkludDY0Ont0eXBlb2YgZ2xvYmFsVGhpcy5CaWdJbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ0ludDY0QXJyYXkoSSk6dD1uZXcgVWludDhBcnJheShJKTticmVha31jYXNlIFAuRmxvYXQzMjp7dD1uZXcgRmxvYXQzMkFycmF5KEkpO2JyZWFrfWNhc2UgUC5GbG9hdDY0Ont0PW5ldyBGbG9hdDY0QXJyYXkoSSk7YnJlYWt9Y2FzZSJudWxsIjp7dD1udWxsO2JyZWFrfWNhc2UgbnVsbDp7dD1udWxsO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlIGlzIG5vdCBzdXBwb3J0ZWQgYXMgYSBUeXBlZEFycmF5Iil9cmV0dXJuIHR9dmFyIFk9aGU7dmFyIFpJPXR5cGVvZiBnbG9iYWxUaGlzLlNoYXJlZEFycmF5QnVmZmVyPT0iZnVuY3Rpb24iLGpJPW5ldyBUZXh0RW5jb2RlcixXST1uZXcgVGV4dERlY29kZXIoInV0Zi04Iik7ZnVuY3Rpb24gZGUoQSxJKXtsZXQgdD17ZmxhZ3M6InIiLGVuY29kaW5nOiJiaW5hcnkifSxlPUEuZnNfb3BlbihJLHQuZmxhZ3MpLHI9QS5mc19zdGF0KEkpLnNpemUsaT1udWxsO1pJP2k9bmV3IFNoYXJlZEFycmF5QnVmZmVyKHIpOmk9bmV3IEFycmF5QnVmZmVyKHIpO2xldCBzPW5ldyBVaW50OEFycmF5KGkpO3JldHVybiBBLmZzX3JlYWQoZSxzLDAsciwwKSxBLmZzX2Nsb3NlKGUpLHN9ZnVuY3Rpb24gVkkoQSxJLHQpe2xldCBlPW51bGw7Wkk/ZT1uZXcgU2hhcmVkQXJyYXlCdWZmZXIodCk6ZT1uZXcgQXJyYXlCdWZmZXIodCk7bGV0IGc9bmV3IFVpbnQ4QXJyYXkoZSkscj1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsSSx0KTtyZXR1cm4gZy5zZXQociksZ31mdW5jdGlvbiB5KEEsSSx0LGUpe2xldCBnPTA7cmV0dXJuIEkhPT1udWxsJiYoZz1BLmNjYWxsKCJpdGtfd2FzbV9pbnB1dF9hcnJheV9hbGxvYyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCx0LGUsSS5idWZmZXIuYnl0ZUxlbmd0aF0pLEEuSEVBUFU4LnNldChuZXcgVWludDhBcnJheShJLmJ1ZmZlciksZykpLGd9ZnVuY3Rpb24gaihBLEksdCl7bGV0IGU9SlNPTi5zdHJpbmdpZnkoSSksZz1BLmNjYWxsKCJpdGtfd2FzbV9pbnB1dF9qc29uX2FsbG9jIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHQsZS5sZW5ndGhdKTtBLndyaXRlQXNjaWlUb01lbW9yeShlLGcsITEpfWZ1bmN0aW9uIFMoQSxJLHQsZSl7bGV0IGc9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsSSx0XSkscj1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxJLHRdKSxpPVZJKEEsZyxyKTtyZXR1cm4gWShlLGkuYnVmZmVyKX1mdW5jdGlvbiB6QShBLEkpe2xldCB0PUEuY2NhbGwoIml0a193YXNtX291dHB1dF9qc29uX2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIl0sWzAsSV0pLGU9QS5Bc2NpaVRvU3RyaW5nKHQpO3JldHVybiBKU09OLnBhcnNlKGUpfWZ1bmN0aW9uIHllKEEsSSx0LGUpe2UhPW51bGwmJmUubGVuZ3RoPjAmJmUuZm9yRWFjaChmdW5jdGlvbihuLEMpe3N3aXRjaChuLnR5cGUpe2Nhc2UgRC5UZXh0U3RyZWFtOntsZXQgbz1qSS5lbmNvZGUobi5kYXRhLmRhdGEpLGY9eShBLG8sQywwKSxRPXtzaXplOm8uYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YH07aihBLFEsQyk7YnJlYWt9Y2FzZSBELkpzb25Db21wYXRpYmxlOntsZXQgbz1qSS5lbmNvZGUoSlNPTi5zdHJpbmdpZnkobi5kYXRhKSksZj15KEEsbyxDLDApLFE9e3NpemU6by5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gfTtqKEEsUSxDKTticmVha31jYXNlIEQuQmluYXJ5U3RyZWFtOntsZXQgbz1uLmRhdGEuZGF0YSxmPXkoQSxvLEMsMCksUT17c2l6ZTpvLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWB9O2ooQSxRLEMpO2JyZWFrfWNhc2UgRC5UZXh0RmlsZTp7QS5mc193cml0ZUZpbGUobi5kYXRhLnBhdGgsbi5kYXRhLmRhdGEpO2JyZWFrfWNhc2UgRC5CaW5hcnlGaWxlOntBLmZzX3dyaXRlRmlsZShuLmRhdGEucGF0aCxuLmRhdGEuZGF0YSk7YnJlYWt9Y2FzZSBELkltYWdlOntsZXQgbz1uLmRhdGEsZj15KEEsby5kYXRhLEMsMCksUT15KEEsby5kaXJlY3Rpb24sQywxKSxFPXR5cGVvZiBvLm1ldGFkYXRhPy5lbnRyaWVzPCJ1Ij9KU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKG8ubWV0YWRhdGEuZW50cmllcygpKSk6IltdIixjPXtpbWFnZVR5cGU6by5pbWFnZVR5cGUsbmFtZTpvLm5hbWUsb3JpZ2luOm8ub3JpZ2luLHNwYWNpbmc6by5zcGFjaW5nLGRpcmVjdGlvbjpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1F9YCxzaXplOm8uc2l6ZSxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gLG1ldGFkYXRhOkV9O2ooQSxjLEMpO2JyZWFrfWNhc2UgRC5NZXNoOntsZXQgbz1uLmRhdGEsZj15KEEsby5wb2ludHMsQywwKSxRPXkoQSxvLmNlbGxzLEMsMSksRT15KEEsby5wb2ludERhdGEsQywyKSxjPXkoQSxvLmNlbGxEYXRhLEMsMyksdT17bWVzaFR5cGU6by5tZXNoVHlwZSxuYW1lOm8ubmFtZSxudW1iZXJPZlBvaW50czpvLm51bWJlck9mUG9pbnRzLHBvaW50czpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YCxudW1iZXJPZkNlbGxzOm8ubnVtYmVyT2ZDZWxscyxjZWxsczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1F9YCxjZWxsQnVmZmVyU2l6ZTpvLmNlbGxCdWZmZXJTaXplLG51bWJlck9mUG9pbnRQaXhlbHM6by5udW1iZXJPZlBvaW50UGl4ZWxzLHBvaW50RGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0V9YCxudW1iZXJPZkNlbGxQaXhlbHM6by5udW1iZXJPZkNlbGxQaXhlbHMsY2VsbERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWB9O2ooQSx1LEMpO2JyZWFrfWNhc2UgRC5Qb2x5RGF0YTp7bGV0IG89bi5kYXRhLGY9eShBLG8ucG9pbnRzLEMsMCksUT15KEEsby52ZXJ0aWNlcyxDLDEpLEU9eShBLG8ubGluZXMsQywyKSxjPXkoQSxvLnBvbHlnb25zLEMsMyksdT15KEEsby50cmlhbmdsZVN0cmlwcyxDLDQpLGQ9eShBLG8ucG9pbnREYXRhLEMsNSksUj15KEEsby5wb2ludERhdGEsQyw2KSxOPXtwb2x5RGF0YVR5cGU6by5wb2x5RGF0YVR5cGUsbmFtZTpvLm5hbWUsbnVtYmVyT2ZQb2ludHM6by5udW1iZXJPZlBvaW50cyxwb2ludHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWAsdmVydGljZXNCdWZmZXJTaXplOm8udmVydGljZXNCdWZmZXJTaXplLHZlcnRpY2VzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7UX1gLGxpbmVzQnVmZmVyU2l6ZTpvLmxpbmVzQnVmZmVyU2l6ZSxsaW5lczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0V9YCxwb2x5Z29uc0J1ZmZlclNpemU6by5wb2x5Z29uc0J1ZmZlclNpemUscG9seWdvbnM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWAsdHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplOm8udHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplLHRyaWFuZ2xlU3RyaXBzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7dX1gLG51bWJlck9mUG9pbnRQaXhlbHM6by5udW1iZXJPZlBvaW50UGl4ZWxzLHBvaW50RGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2R9YCxudW1iZXJPZkNlbGxQaXhlbHM6by5udW1iZXJPZkNlbGxQaXhlbHMsY2VsbERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtSfWB9O2ooQSxOLEMpO2JyZWFrfWRlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuc3VwcG9ydGVkIGlucHV0IEludGVyZmFjZVR5cGUiKX19KSxBLnJlc2V0TW9kdWxlU3Rkb3V0KCksQS5yZXNldE1vZHVsZVN0ZGVycigpO2xldCBnPUEuc3RhY2tTYXZlKCkscj0wO3RyeXtyPUEuY2FsbE1haW4oSS5zbGljZSgpKX1jYXRjaChuKXt0aHJvdyB0eXBlb2Ygbj09Im51bWJlciImJihjb25zb2xlLmxvZygiRXhjZXB0aW9uIHdoaWxlIHJ1bm5pbmcgcGlwZWxpbmU6IiksY29uc29sZS5sb2coInN0ZG91dDoiLEEuZ2V0TW9kdWxlU3Rkb3V0KCkpLGNvbnNvbGUuZXJyb3IoInN0ZGVycjoiLEEuZ2V0TW9kdWxlU3RkZXJyKCkpLHR5cGVvZiBBLmdldEV4Y2VwdGlvbk1lc3NhZ2U8InUiP2NvbnNvbGUuZXJyb3IoImV4Y2VwdGlvbjoiLEEuZ2V0RXhjZXB0aW9uTWVzc2FnZShuKSk6Y29uc29sZS5lcnJvcigiQnVpbGQgbW9kdWxlIGluIERlYnVnIG1vZGUgZm9yIGV4Y2VwdGlvbiBtZXNzYWdlIGluZm9ybWF0aW9uLiIpKSxufWZpbmFsbHl7QS5zdGFja1Jlc3RvcmUoZyl9bGV0IGk9QS5nZXRNb2R1bGVTdGRvdXQoKSxzPUEuZ2V0TW9kdWxlU3RkZXJyKCksYT1bXTtyZXR1cm4gdCE9bnVsbCYmdC5sZW5ndGg+MCYmcj09PTAmJnQuZm9yRWFjaChmdW5jdGlvbihuLEMpe2xldCBvPW51bGw7c3dpdGNoKG4udHlwZSl7Y2FzZSBELlRleHRTdHJlYW06e2xldCBRPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEMsMF0pLEU9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQywwXSksYz1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsUSxFKTtvPXtkYXRhOldJLmRlY29kZShjKX07YnJlYWt9Y2FzZSBELkpzb25Db21wYXRpYmxlOntsZXQgUT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxDLDBdKSxFPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEMsMF0pLGM9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLFEsRSk7bz1KU09OLnBhcnNlKFdJLmRlY29kZShjKSk7YnJlYWt9Y2FzZSBELkJpbmFyeVN0cmVhbTp7bGV0IFE9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQywwXSksRT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxDLDBdKTtvPXtkYXRhOlZJKEEsUSxFKX07YnJlYWt9Y2FzZSBELlRleHRGaWxlOntvPXtwYXRoOm4uZGF0YS5wYXRoLGRhdGE6QS5mc19yZWFkRmlsZShuLmRhdGEucGF0aCx7ZW5jb2Rpbmc6InV0ZjgifSl9O2JyZWFrfWNhc2UgRC5CaW5hcnlGaWxlOntvPXtwYXRoOm4uZGF0YS5wYXRoLGRhdGE6ZGUoQSxuLmRhdGEucGF0aCl9O2JyZWFrfWNhc2UgRC5JbWFnZTp7bGV0IFE9ekEoQSxDKTtRLmRhdGE9UyhBLEMsMCxRLmltYWdlVHlwZS5jb21wb25lbnRUeXBlKSxRLmRpcmVjdGlvbj1TKEEsQywxLFAuRmxvYXQ2NCksUS5tZXRhZGF0YT1uZXcgTWFwKFEubWV0YWRhdGEpLG89UTticmVha31jYXNlIEQuTWVzaDp7bGV0IFE9ekEoQSxDKTtRLm51bWJlck9mUG9pbnRzPjA/US5wb2ludHM9UyhBLEMsMCxRLm1lc2hUeXBlLnBvaW50Q29tcG9uZW50VHlwZSk6US5wb2ludHM9WShRLm1lc2hUeXBlLnBvaW50Q29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLFEubnVtYmVyT2ZDZWxscz4wP1EuY2VsbHM9UyhBLEMsMSxRLm1lc2hUeXBlLmNlbGxDb21wb25lbnRUeXBlKTpRLmNlbGxzPVkoUS5tZXNoVHlwZS5jZWxsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLFEubnVtYmVyT2ZQb2ludFBpeGVscz4wP1EucG9pbnREYXRhPVMoQSxDLDIsUS5tZXNoVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSk6US5wb2ludERhdGE9WShRLm1lc2hUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksUS5udW1iZXJPZkNlbGxQaXhlbHM+MD9RLmNlbGxEYXRhPVMoQSxDLDMsUS5tZXNoVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlKTpRLmNlbGxEYXRhPVkoUS5tZXNoVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksbz1RO2JyZWFrfWNhc2UgRC5Qb2x5RGF0YTp7bGV0IFE9ekEoQSxDKTtRLm51bWJlck9mUG9pbnRzPjA/US5wb2ludHM9UyhBLEMsMCxQLkZsb2F0MzIpOlEucG9pbnRzPW5ldyBGbG9hdDMyQXJyYXksUS52ZXJ0aWNlc0J1ZmZlclNpemU+MD9RLnZlcnRpY2VzPVMoQSxDLDEscC5VSW50MzIpOlEudmVydGljZXM9bmV3IFVpbnQzMkFycmF5LFEubGluZXNCdWZmZXJTaXplPjA/US5saW5lcz1TKEEsQywyLHAuVUludDMyKTpRLmxpbmVzPW5ldyBVaW50MzJBcnJheSxRLnBvbHlnb25zQnVmZmVyU2l6ZT4wP1EucG9seWdvbnM9UyhBLEMsMyxwLlVJbnQzMik6US5wb2x5Z29ucz1uZXcgVWludDMyQXJyYXksUS50cmlhbmdsZVN0cmlwc0J1ZmZlclNpemU+MD9RLnRyaWFuZ2xlU3RyaXBzPVMoQSxDLDQscC5VSW50MzIpOlEudHJpYW5nbGVTdHJpcHM9bmV3IFVpbnQzMkFycmF5LFEubnVtYmVyT2ZQb2ludFBpeGVscz4wP1EucG9pbnREYXRhPVMoQSxDLDUsUS5wb2x5RGF0YVR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUpOlEucG9pbnREYXRhPVkoUS5wb2x5RGF0YVR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxRLm51bWJlck9mQ2VsbFBpeGVscz4wP1EuY2VsbERhdGE9UyhBLEMsNixRLnBvbHlEYXRhVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlKTpRLmNlbGxEYXRhPVkoUS5wb2x5RGF0YVR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLG89UTticmVha31kZWZhdWx0OnRocm93IEVycm9yKCJVbnN1cHBvcnRlZCBvdXRwdXQgSW50ZXJmYWNlVHlwZSIpfWxldCBmPXt0eXBlOm4udHlwZSxkYXRhOm99O2EucHVzaChmKX0pLHtyZXR1cm5WYWx1ZTpyLHN0ZG91dDppLHN0ZGVycjpzLG91dHB1dHM6YX19dmFyIFhJPXllO3ZhciB3ZT10eXBlb2YgZ2xvYmFsVGhpcy5TaGFyZWRBcnJheUJ1ZmZlcjwidSI7ZnVuY3Rpb24gbWUoQSxJKXtpZihBPT1udWxsKXJldHVybltdO2xldCB0PVtdO2ZvcihsZXQgZT0wO2U8QS5sZW5ndGg7ZSsrKXtsZXQgZz1wZShBW2VdLEkpO2chPT1udWxsJiZ0LnB1c2goZyl9cmV0dXJuIHR9ZnVuY3Rpb24gcGUoQSxJKXtpZihBPT1udWxsKXJldHVybiBudWxsO2xldCB0PW51bGw7cmV0dXJuIEEuYnVmZmVyIT09dm9pZCAwP3Q9QS5idWZmZXI6QS5ieXRlTGVuZ3RoIT09dm9pZCAwJiYodD1BKSx3ZSYmdCBpbnN0YW5jZW9mIFNoYXJlZEFycmF5QnVmZmVyP251bGw6ST90OnQuc2xpY2UoMCl9dmFyIHpJPW1lO2Z1bmN0aW9uIFNlKEEpe3JldHVybltBLmRhdGEsQS5kaXJlY3Rpb25dfXZhciBfST1TZTtmdW5jdGlvbiBGZShBKXtyZXR1cm5bQS5wb2ludHMsQS5wb2ludERhdGEsQS5jZWxscyxBLmNlbGxEYXRhXX12YXIgdkk9RmU7ZnVuY3Rpb24gUmUoQSl7cmV0dXJuW0EucG9pbnRzLEEudmVydGljZXMsQS5saW5lcyxBLnBvbHlnb25zLEEudHJpYW5nbGVTdHJpcHMsQS5wb2ludERhdGEsQS5jZWxsRGF0YV19dmFyICRJPVJlO2FzeW5jIGZ1bmN0aW9uIE5lKEEsSSx0LGUpe2xldCBnPVhJKEEsSSx0LGUpLHI9W107cmV0dXJuIGcub3V0cHV0cy5mb3JFYWNoKGZ1bmN0aW9uKGkpe2lmKGkudHlwZT09PUQuQmluYXJ5U3RyZWFtfHxpLnR5cGU9PT1ELkJpbmFyeUZpbGUpe2xldCBzPWkuZGF0YTtyLnB1c2gocyl9ZWxzZSBpZihpLnR5cGU9PT1ELkltYWdlKXtsZXQgcz1pLmRhdGE7ci5wdXNoKC4uLl9JKHMpKX1lbHNlIGlmKGkudHlwZT09PUQuTWVzaCl7bGV0IHM9aS5kYXRhO3IucHVzaCguLi52SShzKSl9ZWxzZSBpZihpLnR5cGU9PT1ELlBvbHlEYXRhKXtsZXQgcz1pLmRhdGE7ci5wdXNoKC4uLiRJKHMpKX19KSxTQShnLHpJKHIsITApKX12YXIgQXQ9TmU7dmFyIFVlPXtydW5QaXBlbGluZTphc3luYyBmdW5jdGlvbihBLEksdCxlLGcscil7bGV0IGk9YXdhaXQgUEkoQSxJLHIpO3JldHVybiBhd2FpdCBBdChpLHQsZSxnKX19O29BKFVlKTslMEEvKiEgQnVuZGxlZCBsaWNlbnNlIGluZm9ybWF0aW9uOiUwQSUwQWNvbWxpbmsvZGlzdC9lc20vY29tbGluay5tanM6JTBBICAoKiolMEEgICAqIEBsaWNlbnNlJTBBICAgKiBDb3B5cmlnaHQgMjAxOSBHb29nbGUgTExDJTBBICAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCUwQSAgICopJTBBKi8lMEEnO0N0KEV0KTtleHBvcnR7WHIgYXMgY29tcHJlc3NTdHJpbmdpZnksRkEgYXMgZ2V0RGVmYXVsdFdlYldvcmtlcixqIGFzIGdldFBpcGVsaW5lV29ya2VyVXJsLFNBIGFzIGdldFBpcGVsaW5lc0Jhc2VVcmwsQWkgYXMgcGFyc2VTdHJpbmdEZWNvbXByZXNzLHJhIGFzIHNldERlZmF1bHRXZWJXb3JrZXIsQ3QgYXMgc2V0UGlwZWxpbmVXb3JrZXJVcmwsVnMgYXMgc2V0UGlwZWxpbmVzQmFzZVVybCxSQSBhcyB2ZXJzaW9ufTsKLyohIEJ1bmRsZWQgbGljZW5zZSBpbmZvcm1hdGlvbjoKCmNvbWxpbmsvZGlzdC9lc20vY29tbGluay5tanM6CiAgKCoqCiAgICogQGxpY2Vuc2UKICAgKiBDb3B5cmlnaHQgMjAxOSBHb29nbGUgTExDCiAgICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKICAgKikKKi8K""" default_config = JsPackageConfig(default_js_module) js_package = JsPackage(default_config) diff --git a/packages/compress-stringify/python/itkwasm-compress-stringify-wasi/itkwasm_compress_stringify_wasi/wasm_modules/compress-stringify.wasi.wasm b/packages/compress-stringify/python/itkwasm-compress-stringify-wasi/itkwasm_compress_stringify_wasi/wasm_modules/compress-stringify.wasi.wasm index 0e5e65a05e3aae353f9863828e05c765052f3365..cf3a1521788d3a260c8670e1101449a5c0b1d110 100755 GIT binary patch delta 5274 zcma)AeQ;D)6@T}=m)$LI-(_K80|`l9HVXt=YQaD=0RxvA1Z!KTGh%U6baZrp4h)R- z4;{zdgb10E8JE6H-?oGjZPX}OqcFZWjcpv#mXTBf#4%H%M!V85#N0t0tMDj@`P-6)sJ0ptXp1?`y$*4k3MsUN1q1BiM|E2JWDD4pH+{E9d{r>W%_n)D;m_+SV-Bib5Q1leds|<5nC;_4-73Q+ue5(0F@J6q=I_i%6GXm0|+PlTUj_9o=rSJBAP(!6Yz z=1WdIj7H2uPXr>!IKMKm361=&HgIscrF*LkjTrTN0{!qQ>$Tu=$@kFp5jhjzS1h0t3 zuA9N?Pmv7gTq9^etBC|P2pZ{Zme&XZC?e@_wMa#(7f1)N(k-q;UI>$n@q?SeS63IC zY}{<=TT4;>43OzNUSu4tM0f1H} zX~F^lrVvhI4+N(#NEW1gP9T5v@WH`q^TFBaaq4sUl0XOtvIm1h*hhG*;0Bl~ID|!? zQ_kZ=CVUVa%|5<2JbdR0Nr$k9aoZ#AViF&5rw@YT-A6d-A%wFXFqT0$zM*OJjd+|0 z+zB?6gzUmS;3NF`v^(OCX@@Ywnl@n@lX!rwKBzc{@0y2i$mJWP&7>1yzn8GjN7&S#$_HSkoSHnn^ssHXj5xpO5b! z9=_qCy9kGTUIQL4((i-d_Vf|zciaHs>I94}Lbx5FX$P41I1#vVZHO*HxMqEXZ+i&) zT*6)-;Tb0J5qJBb4i7}v%#4RG$1oP)1Z}#DaLnUHMwws-KjeWZ;jd@i5qHhf;2B{j zYuZljOyU8ieNc-FB^65eo`(?10-F$SemhTeuex3efpWqFK?MPl)feS6?z#a&QDF1I zz3*`$LFo_2U^$b8s8-o(YNBF*naFk(;aD+8&r$LVs zx!{AK#PRW+XmSHgvoe73CEHlrCQLDjM_BX`=H?Jy@(>QVg#A9gb6&n49|RQ_1bB33 zJOsZ7;5QF`3jD(6&bZq6>XK1r5JzsY!Yi)RLu%C`tJ-?RUz7ZONUcYsM(JgB6G|JO zzpP$r;4E;JYu1#2f|X&)GJ)I+Bm%8Tej(2@)_zZk8V9ea%DNmYO9(ndtC)*QwM;-` zRVEWaC$svl&8mJ%SVd+0>Ix51no|-QV^>tot|8}rgt58hs=5=|)^jROo&$fyY5rwc zJyo(~>VCzHPRHXUs-7jQ|Bpw@59(|O~&S`{^2Tm(H6 zr?V--+`}r$TN5N~Q{m8o6(4!&0c%arrNB#Lcb$O3StlO`%~R8AQ}E-&X+WH1=2t}g zB3d=!l)^8Cp}YmrO6|CvT5${gBUz(L#$Q8OBPHYI@cEgHH^S#%mJ}+%6)0=2D8bJt zTlqx0af8B%`(B{6zKROQTTj&5w3$z_aeN0 zo@ECq%oy)4!tJ2`{$ge%$M6=Aw#D!&<4`58eu&O=Ee+K73_<>92z{0*!1Y=TKMmf| zQk*sp#BjASP>Nqh8S@)UaJLBGa5M|0jf_v*xY>wLEY=Z*3T zTrI<7XN(sr@zo6yp%we;Bm!e`GtOsc+Q9j5;CfP2u)Xo$QQj=Zguk*PV$ z15u3?V9p8f!yVl7q%vNv!5{y4kP`SQIt*)VYXW%$Ue6j*)+1QMSz~_!ubl6|T=@zp zVcT3x;F_glPF`W_Nd!bI>`^1Q9B+W_)VLfQs3z+iJZ~!10s+x78-rbCE&fq6zXCr# zkF*`;PgRmSER&80BPT;;a9mWsW;*E)x!|bFw#th?d zm-NGfG%lBKhaCXK^b|`O*|qpaqTP~C+{+T!sb$){wGL0Rv+(+(xFWa`Xq~deVxzad gvQ!{I;~;5c^=70~5quN*zO8Jj0J&p)vD|DlmN@c;k- delta 5190 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 diff --git a/packages/dicom/python/itkwasm-dicom-emscripten/itkwasm_dicom_emscripten/js_package.py b/packages/dicom/python/itkwasm-dicom-emscripten/itkwasm_dicom_emscripten/js_package.py index c30a1d062..c974bc772 100644 --- a/packages/dicom/python/itkwasm-dicom-emscripten/itkwasm_dicom_emscripten/js_package.py +++ b/packages/dicom/python/itkwasm-dicom-emscripten/itkwasm_dicom_emscripten/js_package.py @@ -3,6 +3,6 @@ from itkwasm.pyodide import JsPackageConfig, JsPackage from ._version import __version__ -default_js_module = """data:text/javascript;base64,dmFyIFN0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgRnQ9KEEsZSk9Pntmb3IodmFyIHQgaW4gZSlTdChBLHQse2dldDplW3RdLGVudW1lcmFibGU6ITB9KX07dmFyIGt0PSI2LjAuMSIsa0E9a3Q7dmFyIFJ0PXtJbnQ4OiJpbnQ4IixVSW50ODoidWludDgiLEludDE2OiJpbnQxNiIsVUludDE2OiJ1aW50MTYiLEludDMyOiJpbnQzMiIsVUludDMyOiJ1aW50MzIiLEludDY0OiJpbnQ2NCIsVUludDY0OiJ1aW50NjQiLFNpemVWYWx1ZVR5cGU6InVpbnQ2NCIsSWRlbnRpZmllclR5cGU6InVpbnQ2NCIsSW5kZXhWYWx1ZVR5cGU6ImludDY0IixPZmZzZXRWYWx1ZVR5cGU6ImludDY0In0saD1SdDt2YXIgYnQ9e0Zsb2F0MzI6ImZsb2F0MzIiLEZsb2F0NjQ6ImZsb2F0NjQiLFNwYWNlUHJlY2lzaW9uVHlwZToiZmxvYXQ2NCJ9LE09YnQ7ZnVuY3Rpb24gVXQoQSxlKXtsZXQgdD1udWxsO3N3aXRjaChBKXtjYXNlIGguVUludDg6e3Q9bmV3IFVpbnQ4QXJyYXkoZSk7YnJlYWt9Y2FzZSBoLkludDg6e3Q9bmV3IEludDhBcnJheShlKTticmVha31jYXNlIGguVUludDE2Ont0PW5ldyBVaW50MTZBcnJheShlKTticmVha31jYXNlIGguSW50MTY6e3Q9bmV3IEludDE2QXJyYXkoZSk7YnJlYWt9Y2FzZSBoLlVJbnQzMjp7dD1uZXcgVWludDMyQXJyYXkoZSk7YnJlYWt9Y2FzZSBoLkludDMyOnt0PW5ldyBJbnQzMkFycmF5KGUpO2JyZWFrfWNhc2UgaC5VSW50NjQ6e3R5cGVvZiBnbG9iYWxUaGlzLkJpZ1VpbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ1VpbnQ2NEFycmF5KGUpOnQ9bmV3IFVpbnQ4QXJyYXkoZSk7YnJlYWt9Y2FzZSBoLkludDY0Ont0eXBlb2YgZ2xvYmFsVGhpcy5CaWdJbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ0ludDY0QXJyYXkoZSk6dD1uZXcgVWludDhBcnJheShlKTticmVha31jYXNlIE0uRmxvYXQzMjp7dD1uZXcgRmxvYXQzMkFycmF5KGUpO2JyZWFrfWNhc2UgTS5GbG9hdDY0Ont0PW5ldyBGbG9hdDY0QXJyYXkoZSk7YnJlYWt9Y2FzZSJudWxsIjp7dD1udWxsO2JyZWFrfWNhc2UgbnVsbDp7dD1udWxsO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlIGlzIG5vdCBzdXBwb3J0ZWQgYXMgYSBUeXBlZEFycmF5Iil9cmV0dXJuIHR9dmFyIEw9VXQ7dmFyIE50PXtVbmtub3duOiJVbmtub3duIixTY2FsYXI6IlNjYWxhciIsUkdCOiJSR0IiLFJHQkE6IlJHQkEiLE9mZnNldDoiT2Zmc2V0IixWZWN0b3I6IlZlY3RvciIsUG9pbnQ6IlBvaW50IixDb3ZhcmlhbnRWZWN0b3I6IkNvdmFyaWFudFZlY3RvciIsU3ltbWV0cmljU2Vjb25kUmFua1RlbnNvcjoiU3ltbWV0cmljU2Vjb25kUmFua1RlbnNvciIsRGlmZnVzaW9uVGVuc29yM0Q6IkRpZmZ1c2lvblRlbnNvcjNEIixDb21wbGV4OiJDb21wbGV4IixGaXhlZEFycmF5OiJGaXhlZEFycmF5IixBcnJheToiQXJyYXkiLE1hdHJpeDoiTWF0cml4IixWYXJpYWJsZUxlbmd0aFZlY3RvcjoiVmFyaWFibGVMZW5ndGhWZWN0b3IiLFZhcmlhYmxlU2l6ZU1hdHJpeDoiVmFyaWFibGVTaXplTWF0cml4In0sbGU9TnQ7dmFyIFJBPWNsYXNze2RpbWVuc2lvbjtjb21wb25lbnRUeXBlO3BpeGVsVHlwZTtjb21wb25lbnRzO2NvbnN0cnVjdG9yKGU9Mix0PWguVUludDgscj1sZS5TY2FsYXIsbj0xKXt0aGlzLmRpbWVuc2lvbj1lLHRoaXMuY29tcG9uZW50VHlwZT10LHRoaXMucGl4ZWxUeXBlPXIsdGhpcy5jb21wb25lbnRzPW59fSxCZT1SQTtmdW5jdGlvbiBHdChBLGUsdCxyLG4pe0Fbcit0KmVdPW59dmFyIENlPUd0O3ZhciBiQT1jbGFzc3tpbWFnZVR5cGU7bmFtZT0iaW1hZ2UiO29yaWdpbjtzcGFjaW5nO2RpcmVjdGlvbjtzaXplO21ldGFkYXRhO2RhdGE7Y29uc3RydWN0b3IoZT1uZXcgQmUpe3RoaXMuaW1hZ2VUeXBlPWU7bGV0IHQ9ZS5kaW1lbnNpb247dGhpcy5vcmlnaW49bmV3IEFycmF5KHQpLHRoaXMub3JpZ2luLmZpbGwoMCksdGhpcy5zcGFjaW5nPW5ldyBBcnJheSh0KSx0aGlzLnNwYWNpbmcuZmlsbCgxKSx0aGlzLmRpcmVjdGlvbj1uZXcgRmxvYXQ2NEFycmF5KHQqdCksdGhpcy5kaXJlY3Rpb24uZmlsbCgwKTtmb3IobGV0IHI9MDtyPHQ7cisrKUNlKHRoaXMuZGlyZWN0aW9uLHQscixyLDEpO3RoaXMuc2l6ZT1uZXcgQXJyYXkodCksdGhpcy5zaXplLmZpbGwoMCksdGhpcy5tZXRhZGF0YT1uZXcgTWFwLHRoaXMuZGF0YT1udWxsfX0sY2U9YkE7ZnVuY3Rpb24gVHQoQSl7aWYoQS5sZW5ndGg8MSl0aHJvdyBFcnJvcigiQXQgbGVhc3Qgb25lIGltYWdlcyBpcyByZXF1aXJlZC4iKTtsZXQgZT1BWzBdO2lmKGUuZGF0YT09PW51bGwpdGhyb3cgRXJyb3IoIkltYWdlIGRhdGEgaXMgbnVsbC4iKTtsZXQgdD1uZXcgY2UoZS5pbWFnZVR5cGUpO3Qub3JpZ2luPUFycmF5LmZyb20oZS5vcmlnaW4pLHQuc3BhY2luZz1BcnJheS5mcm9tKGUuc3BhY2luZyk7bGV0IHI9dC5pbWFnZVR5cGUuZGltZW5zaW9uO3QuZGlyZWN0aW9uPWUuZGlyZWN0aW9uLnNsaWNlKCk7bGV0IG49ci0xO3Quc2l6ZT1BcnJheS5mcm9tKGUuc2l6ZSk7bGV0IGk9QS5yZWR1Y2UoKHMsYSk9PnMrYS5zaXplW25dLDApO3Quc2l6ZVtuXT1pO2xldCBvPXQuc2l6ZS5yZWR1Y2UoKHMsYSk9PnMqYSwxKSp0LmltYWdlVHlwZS5jb21wb25lbnRzLGc9ZS5kYXRhLmNvbnN0cnVjdG9yO3QuZGF0YT1uZXcgZyhvKTtsZXQgQz10LmltYWdlVHlwZS5jb21wb25lbnRzO2ZvcihsZXQgcz0wO3M8dC5zaXplLmxlbmd0aC0xO3MrKylDKj10LnNpemVbc107bGV0IGw9MDtpZih0LmRhdGEhPW51bGwpZm9yKGxldCBzPTA7czxBLmxlbmd0aDtzKyspdC5kYXRhLnNldChBW3NdLmRhdGEsQypsKSxsKz1BW3NdLnNpemVbbl07ZWxzZSB0aHJvdyBFcnJvcigiQ291bGQgbm90IGNyZWF0ZSByZXN1bHQgaW1hZ2UgZGF0YS4iKTtyZXR1cm4gdH12YXIgVUE9VHQ7dmFyIE5BPWNsYXNze2Zjbjt3b3JrZXJRdWV1ZTtydW5JbmZvO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5mY249dCx0aGlzLndvcmtlclF1ZXVlPW5ldyBBcnJheShlKSx0aGlzLndvcmtlclF1ZXVlLmZpbGwobnVsbCksdGhpcy5ydW5JbmZvPVtdfXJ1blRhc2tzKGUsdD1udWxsKXtsZXQgcj17dGFza1F1ZXVlOltdLHJlc3VsdHM6W10sYWRkaW5nVGFza3M6ITEscG9zdHBvbmVkOiExLHJ1bm5pbmdXb3JrZXJzOjAsaW5kZXg6MCxjb21wbGV0ZWRUYXNrczowLHByb2dyZXNzQ2FsbGJhY2s6dCxjYW5jZWxlZDohMX07cmV0dXJuIHRoaXMucnVuSW5mby5wdXNoKHIpLHIuaW5kZXg9dGhpcy5ydW5JbmZvLmxlbmd0aC0xLHtwcm9taXNlOm5ldyBQcm9taXNlKChuLGkpPT57ci5yZXNvbHZlPW4sci5yZWplY3Q9aSxyLnJlc3VsdHM9bmV3IEFycmF5KGUubGVuZ3RoKSxyLmNvbXBsZXRlZFRhc2tzPTAsci5hZGRpbmdUYXNrcz0hMCxlLmZvckVhY2goKG8sZyk9Pnt0aGlzLmFkZFRhc2soci5pbmRleCxnLG8pfSksci5hZGRpbmdUYXNrcz0hMX0pLHJ1bklkOnIuaW5kZXh9fXRlcm1pbmF0ZVdvcmtlcnMoKXtmb3IobGV0IGU9MDtlPHRoaXMud29ya2VyUXVldWUubGVuZ3RoO2UrKyl7bGV0IHQ9dGhpcy53b3JrZXJRdWV1ZVtlXTt0Py50ZXJtaW5hdGUoKSx0aGlzLndvcmtlclF1ZXVlW2VdPW51bGx9fWNhbmNlbChlKXtsZXQgdD10aGlzLnJ1bkluZm9bZV07dCE9bnVsbCYmKHQuY2FuY2VsZWQ9ITApfWFkZFRhc2soZSx0LHIpe2xldCBuPXRoaXMucnVuSW5mb1tlXTtpZihuPy5jYW5jZWxlZD09PSEwKXtuLnJlamVjdCgiUmVtYWluaW5nIHRhc2tzIGNhbmNlbGVkIiksdGhpcy5jbGVhclRhc2sobi5pbmRleCk7cmV0dXJufWlmKHRoaXMud29ya2VyUXVldWUubGVuZ3RoPjApe2xldCBpPXRoaXMud29ya2VyUXVldWUucG9wKCk7bi5ydW5uaW5nV29ya2VycysrLHJbci5sZW5ndGgtMV0ud2ViV29ya2VyPWksdGhpcy5mY24oLi4ucikudGhlbigoe3dlYldvcmtlcjpvLC4uLmd9KT0+e2lmKHRoaXMud29ya2VyUXVldWUucHVzaChvKSx0aGlzLnJ1bkluZm9bZV0hPT1udWxsKXtpZihuLnJ1bm5pbmdXb3JrZXJzLS0sbi5yZXN1bHRzW3RdPWcsbi5jb21wbGV0ZWRUYXNrcysrLG4ucHJvZ3Jlc3NDYWxsYmFjayE9bnVsbCYmbi5wcm9ncmVzc0NhbGxiYWNrKG4uY29tcGxldGVkVGFza3Msbi5yZXN1bHRzLmxlbmd0aCksbi50YXNrUXVldWUubGVuZ3RoPjApe2xldCBDPW4udGFza1F1ZXVlLnNoaWZ0KCk7dGhpcy5hZGRUYXNrKGUsQ1swXSxDWzFdKX1lbHNlIGlmKCFuLmFkZGluZ1Rhc2tzJiZuLnJ1bm5pbmdXb3JrZXJzPT09MCl7bGV0IEM9bi5yZXN1bHRzO24ucmVzb2x2ZShDKSx0aGlzLmNsZWFyVGFzayhuLmluZGV4KX19fSkuY2F0Y2gobz0+e24ucmVqZWN0KG8pLHRoaXMuY2xlYXJUYXNrKG4uaW5kZXgpfSl9ZWxzZSBuLnJ1bm5pbmdXb3JrZXJzIT09MHx8bi5wb3N0cG9uZWQ/bi50YXNrUXVldWUucHVzaChbdCxyXSk6KG4ucG9zdHBvbmVkPSEwLHNldFRpbWVvdXQoKCk9PntuLnBvc3Rwb25lZD0hMSx0aGlzLmFkZFRhc2sobi5pbmRleCx0LHIpfSw1MCkpfWNsZWFyVGFzayhlKXt0aGlzLnJ1bkluZm9bZV0ucmVzdWx0cz1bXSx0aGlzLnJ1bkluZm9bZV0udGFza1F1ZXVlPVtdLHRoaXMucnVuSW5mb1tlXS5wcm9ncmVzc0NhbGxiYWNrPW51bGwsdGhpcy5ydW5JbmZvW2VdLmNhbmNlbGVkPW51bGwsdGhpcy5ydW5JbmZvW2VdLnJlamVjdD0oKT0+e30sdGhpcy5ydW5JbmZvW2VdLnJlc29sdmU9KCk9Pnt9fX0sR0E9TkE7dmFyIEx0PXtUZXh0RmlsZToiVGV4dEZpbGUiLEJpbmFyeUZpbGU6IkJpbmFyeUZpbGUiLFRleHRTdHJlYW06IlRleHRTdHJlYW0iLEJpbmFyeVN0cmVhbToiQmluYXJ5U3RyZWFtIixJbWFnZToiSW1hZ2UiLE1lc2g6Ik1lc2giLFBvbHlEYXRhOiJQb2x5RGF0YSIsSnNvbkNvbXBhdGlibGU6Ikpzb25Db21wYXRpYmxlIn0sUT1MdDt2YXIgRWU9U3ltYm9sKCJDb21saW5rLnByb3h5IikseHQ9U3ltYm9sKCJDb21saW5rLmVuZHBvaW50IikseEE9U3ltYm9sKCJDb21saW5rLnJlbGVhc2VQcm94eSIpLFRBPVN5bWJvbCgiQ29tbGluay5maW5hbGl6ZXIiKSxzQT1TeW1ib2woIkNvbWxpbmsudGhyb3duIiksUWU9QT0+dHlwZW9mIEE9PSJvYmplY3QiJiZBIT09bnVsbHx8dHlwZW9mIEE9PSJmdW5jdGlvbiIsT3Q9e2NhbkhhbmRsZTpBPT5RZShBKSYmQVtFZV0sc2VyaWFsaXplKEEpe2xldHtwb3J0MTplLHBvcnQyOnR9PW5ldyBNZXNzYWdlQ2hhbm5lbDtyZXR1cm4gcGUoQSxlKSxbdCxbdF1dfSxkZXNlcmlhbGl6ZShBKXtyZXR1cm4gQS5zdGFydCgpLE9BKEEpfX0sUHQ9e2NhbkhhbmRsZTpBPT5RZShBKSYmc0EgaW4gQSxzZXJpYWxpemUoe3ZhbHVlOkF9KXtsZXQgZTtyZXR1cm4gQSBpbnN0YW5jZW9mIEVycm9yP2U9e2lzRXJyb3I6ITAsdmFsdWU6e21lc3NhZ2U6QS5tZXNzYWdlLG5hbWU6QS5uYW1lLHN0YWNrOkEuc3RhY2t9fTplPXtpc0Vycm9yOiExLHZhbHVlOkF9LFtlLFtdXX0sZGVzZXJpYWxpemUoQSl7dGhyb3cgQS5pc0Vycm9yP09iamVjdC5hc3NpZ24obmV3IEVycm9yKEEudmFsdWUubWVzc2FnZSksQS52YWx1ZSk6QS52YWx1ZX19LGZlPW5ldyBNYXAoW1sicHJveHkiLE90XSxbInRocm93IixQdF1dKTtmdW5jdGlvbiBKdChBLGUpe2ZvcihsZXQgdCBvZiBBKWlmKGU9PT10fHx0PT09IioifHx0IGluc3RhbmNlb2YgUmVnRXhwJiZ0LnRlc3QoZSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gcGUoQSxlPWdsb2JhbFRoaXMsdD1bIioiXSl7ZS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiByKG4pe2lmKCFufHwhbi5kYXRhKXJldHVybjtpZighSnQodCxuLm9yaWdpbikpe2NvbnNvbGUud2FybihgSW52YWxpZCBvcmlnaW4gJyR7bi5vcmlnaW59JyBmb3IgY29tbGluayBwcm94eWApO3JldHVybn1sZXR7aWQ6aSx0eXBlOm8scGF0aDpnfT1PYmplY3QuYXNzaWduKHtwYXRoOltdfSxuLmRhdGEpLEM9KG4uZGF0YS5hcmd1bWVudExpc3R8fFtdKS5tYXAoSCksbDt0cnl7bGV0IHM9Zy5zbGljZSgwLC0xKS5yZWR1Y2UoKEUsQik9PkVbQl0sQSksYT1nLnJlZHVjZSgoRSxCKT0+RVtCXSxBKTtzd2l0Y2gobyl7Y2FzZSJHRVQiOmw9YTticmVhaztjYXNlIlNFVCI6c1tnLnNsaWNlKC0xKVswXV09SChuLmRhdGEudmFsdWUpLGw9ITA7YnJlYWs7Y2FzZSJBUFBMWSI6bD1hLmFwcGx5KHMsQyk7YnJlYWs7Y2FzZSJDT05TVFJVQ1QiOntsZXQgRT1uZXcgYSguLi5DKTtsPUt0KEUpfWJyZWFrO2Nhc2UiRU5EUE9JTlQiOntsZXR7cG9ydDE6RSxwb3J0MjpCfT1uZXcgTWVzc2FnZUNoYW5uZWw7cGUoQSxCKSxsPVBBKEUsW0VdKX1icmVhaztjYXNlIlJFTEVBU0UiOmw9dm9pZCAwO2JyZWFrO2RlZmF1bHQ6cmV0dXJufX1jYXRjaChzKXtsPXt2YWx1ZTpzLFtzQV06MH19UHJvbWlzZS5yZXNvbHZlKGwpLmNhdGNoKHM9Pih7dmFsdWU6cyxbc0FdOjB9KSkudGhlbihzPT57bGV0W2EsRV09bEEocyk7ZS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYSkse2lkOml9KSxFKSxvPT09IlJFTEVBU0UiJiYoZS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixyKSxkZShlKSxUQSBpbiBBJiZ0eXBlb2YgQVtUQV09PSJmdW5jdGlvbiImJkFbVEFdKCkpfSkuY2F0Y2gocz0+e2xldFthLEVdPWxBKHt2YWx1ZTpuZXcgVHlwZUVycm9yKCJVbnNlcmlhbGl6YWJsZSByZXR1cm4gdmFsdWUiKSxbc0FdOjB9KTtlLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhKSx7aWQ6aX0pLEUpfSl9KSxlLnN0YXJ0JiZlLnN0YXJ0KCl9ZnVuY3Rpb24gSHQoQSl7cmV0dXJuIEEuY29uc3RydWN0b3IubmFtZT09PSJNZXNzYWdlUG9ydCJ9ZnVuY3Rpb24gZGUoQSl7SHQoQSkmJkEuY2xvc2UoKX1mdW5jdGlvbiBPQShBLGUpe3JldHVybiBMQShBLFtdLGUpfWZ1bmN0aW9uIGFBKEEpe2lmKEEpdGhyb3cgbmV3IEVycm9yKCJQcm94eSBoYXMgYmVlbiByZWxlYXNlZCBhbmQgaXMgbm90IHVzZWFibGUiKX1mdW5jdGlvbiBtZShBKXtyZXR1cm4gWShBLHt0eXBlOiJSRUxFQVNFIn0pLnRoZW4oKCk9PntkZShBKX0pfXZhciBJQT1uZXcgV2Vha01hcCxnQT0iRmluYWxpemF0aW9uUmVnaXN0cnkiaW4gZ2xvYmFsVGhpcyYmbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KEE9PntsZXQgZT0oSUEuZ2V0KEEpfHwwKS0xO0lBLnNldChBLGUpLGU9PT0wJiZtZShBKX0pO2Z1bmN0aW9uIE10KEEsZSl7bGV0IHQ9KElBLmdldChlKXx8MCkrMTtJQS5zZXQoZSx0KSxnQSYmZ0EucmVnaXN0ZXIoQSxlLEEpfWZ1bmN0aW9uIFl0KEEpe2dBJiZnQS51bnJlZ2lzdGVyKEEpfWZ1bmN0aW9uIExBKEEsZT1bXSx0PWZ1bmN0aW9uKCl7fSl7bGV0IHI9ITEsbj1uZXcgUHJveHkodCx7Z2V0KGksbyl7aWYoYUEociksbz09PXhBKXJldHVybigpPT57WXQobiksbWUoQSkscj0hMH07aWYobz09PSJ0aGVuIil7aWYoZS5sZW5ndGg9PT0wKXJldHVybnt0aGVuOigpPT5ufTtsZXQgZz1ZKEEse3R5cGU6IkdFVCIscGF0aDplLm1hcChDPT5DLnRvU3RyaW5nKCkpfSkudGhlbihIKTtyZXR1cm4gZy50aGVuLmJpbmQoZyl9cmV0dXJuIExBKEEsWy4uLmUsb10pfSxzZXQoaSxvLGcpe2FBKHIpO2xldFtDLGxdPWxBKGcpO3JldHVybiBZKEEse3R5cGU6IlNFVCIscGF0aDpbLi4uZSxvXS5tYXAocz0+cy50b1N0cmluZygpKSx2YWx1ZTpDfSxsKS50aGVuKEgpfSxhcHBseShpLG8sZyl7YUEocik7bGV0IEM9ZVtlLmxlbmd0aC0xXTtpZihDPT09eHQpcmV0dXJuIFkoQSx7dHlwZToiRU5EUE9JTlQifSkudGhlbihIKTtpZihDPT09ImJpbmQiKXJldHVybiBMQShBLGUuc2xpY2UoMCwtMSkpO2xldFtsLHNdPXVlKGcpO3JldHVybiBZKEEse3R5cGU6IkFQUExZIixwYXRoOmUubWFwKGE9PmEudG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omx9LHMpLnRoZW4oSCl9LGNvbnN0cnVjdChpLG8pe2FBKHIpO2xldFtnLENdPXVlKG8pO3JldHVybiBZKEEse3R5cGU6IkNPTlNUUlVDVCIscGF0aDplLm1hcChsPT5sLnRvU3RyaW5nKCkpLGFyZ3VtZW50TGlzdDpnfSxDKS50aGVuKEgpfX0pO3JldHVybiBNdChuLEEpLG59ZnVuY3Rpb24gcXQoQSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sQSl9ZnVuY3Rpb24gdWUoQSl7bGV0IGU9QS5tYXAobEEpO3JldHVybltlLm1hcCh0PT50WzBdKSxxdChlLm1hcCh0PT50WzFdKSldfXZhciBoZT1uZXcgV2Vha01hcDtmdW5jdGlvbiBQQShBLGUpe3JldHVybiBoZS5zZXQoQSxlKSxBfWZ1bmN0aW9uIEt0KEEpe3JldHVybiBPYmplY3QuYXNzaWduKEEse1tFZV06ITB9KX1mdW5jdGlvbiBsQShBKXtmb3IobGV0W2UsdF1vZiBmZSlpZih0LmNhbkhhbmRsZShBKSl7bGV0W3Isbl09dC5zZXJpYWxpemUoQSk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmUsdmFsdWU6cn0sbl19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOkF9LGhlLmdldChBKXx8W11dfWZ1bmN0aW9uIEgoQSl7c3dpdGNoKEEudHlwZSl7Y2FzZSJIQU5ETEVSIjpyZXR1cm4gZmUuZ2V0KEEubmFtZSkuZGVzZXJpYWxpemUoQS52YWx1ZSk7Y2FzZSJSQVciOnJldHVybiBBLnZhbHVlfX1mdW5jdGlvbiBZKEEsZSx0KXtyZXR1cm4gbmV3IFByb21pc2Uocj0+e2xldCBuPVd0KCk7QS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiBpKG8peyFvLmRhdGF8fCFvLmRhdGEuaWR8fG8uZGF0YS5pZCE9PW58fChBLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGkpLHIoby5kYXRhKSl9KSxBLnN0YXJ0JiZBLnN0YXJ0KCksQS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKHtpZDpufSxlKSx0KX0pfWZ1bmN0aW9uIFd0KCl7cmV0dXJuIG5ldyBBcnJheSg0KS5maWxsKDApLm1hcCgoKT0+TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKk51bWJlci5NQVhfU0FGRV9JTlRFR0VSKS50b1N0cmluZygxNikpLmpvaW4oIi0iKX1mdW5jdGlvbiBaKEEsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEEuYXBwbHkoZSxhcmd1bWVudHMpfX12YXJ7dG9TdHJpbmc6dnR9PU9iamVjdC5wcm90b3R5cGUse2dldFByb3RvdHlwZU9mOk1BfT1PYmplY3QsQ0E9KEE9PmU9PntsZXQgdD12dC5jYWxsKGUpO3JldHVybiBBW3RdfHwoQVt0XT10LnNsaWNlKDgsLTEpLnRvTG93ZXJDYXNlKCkpfSkoT2JqZWN0LmNyZWF0ZShudWxsKSksRz1BPT4oQT1BLnRvTG93ZXJDYXNlKCksZT0+Q0EoZSk9PT1BKSxjQT1BPT5lPT50eXBlb2YgZT09PUEse2lzQXJyYXk6cX09QXJyYXksWD1jQSgidW5kZWZpbmVkIik7ZnVuY3Rpb24ganQoQSl7cmV0dXJuIEEhPT1udWxsJiYhWChBKSYmQS5jb25zdHJ1Y3RvciE9PW51bGwmJiFYKEEuY29uc3RydWN0b3IpJiZVKEEuY29uc3RydWN0b3IuaXNCdWZmZXIpJiZBLmNvbnN0cnVjdG9yLmlzQnVmZmVyKEEpfXZhciBTZT1HKCJBcnJheUJ1ZmZlciIpO2Z1bmN0aW9uIF90KEEpe2xldCBlO3JldHVybiB0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZBcnJheUJ1ZmZlci5pc1ZpZXc/ZT1BcnJheUJ1ZmZlci5pc1ZpZXcoQSk6ZT1BJiZBLmJ1ZmZlciYmU2UoQS5idWZmZXIpLGV9dmFyIHp0PWNBKCJzdHJpbmciKSxVPWNBKCJmdW5jdGlvbiIpLEZlPWNBKCJudW1iZXIiKSx1QT1BPT5BIT09bnVsbCYmdHlwZW9mIEE9PSJvYmplY3QiLFZ0PUE9PkE9PT0hMHx8QT09PSExLEJBPUE9PntpZihDQShBKSE9PSJvYmplY3QiKXJldHVybiExO2xldCBlPU1BKEEpO3JldHVybihlPT09bnVsbHx8ZT09PU9iamVjdC5wcm90b3R5cGV8fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PW51bGwpJiYhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBBKSYmIShTeW1ib2wuaXRlcmF0b3IgaW4gQSl9LFp0PUcoIkRhdGUiKSxYdD1HKCJGaWxlIiksJHQ9RygiQmxvYiIpLEFyPUcoIkZpbGVMaXN0IiksZXI9QT0+dUEoQSkmJlUoQS5waXBlKSx0cj1BPT57bGV0IGU7cmV0dXJuIEEmJih0eXBlb2YgRm9ybURhdGE9PSJmdW5jdGlvbiImJkEgaW5zdGFuY2VvZiBGb3JtRGF0YXx8VShBLmFwcGVuZCkmJigoZT1DQShBKSk9PT0iZm9ybWRhdGEifHxlPT09Im9iamVjdCImJlUoQS50b1N0cmluZykmJkEudG9TdHJpbmcoKT09PSJbb2JqZWN0IEZvcm1EYXRhXSIpKX0scnI9RygiVVJMU2VhcmNoUGFyYW1zIiksaXI9QT0+QS50cmltP0EudHJpbSgpOkEucmVwbGFjZSgvXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csIiIpO2Z1bmN0aW9uICQoQSxlLHthbGxPd25LZXlzOnQ9ITF9PXt9KXtpZihBPT09bnVsbHx8dHlwZW9mIEE+InUiKXJldHVybjtsZXQgcixuO2lmKHR5cGVvZiBBIT0ib2JqZWN0IiYmKEE9W0FdKSxxKEEpKWZvcihyPTAsbj1BLmxlbmd0aDtyPG47cisrKWUuY2FsbChudWxsLEFbcl0scixBKTtlbHNle2xldCBpPXQ/T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoQSk6T2JqZWN0LmtleXMoQSksbz1pLmxlbmd0aCxnO2ZvcihyPTA7cjxvO3IrKylnPWlbcl0sZS5jYWxsKG51bGwsQVtnXSxnLEEpfX1mdW5jdGlvbiBrZShBLGUpe2U9ZS50b0xvd2VyQ2FzZSgpO2xldCB0PU9iamVjdC5rZXlzKEEpLHI9dC5sZW5ndGgsbjtmb3IoO3ItLSA+MDspaWYobj10W3JdLGU9PT1uLnRvTG93ZXJDYXNlKCkpcmV0dXJuIG47cmV0dXJuIG51bGx9dmFyIFJlPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzpnbG9iYWwsYmU9QT0+IVgoQSkmJkEhPT1SZTtmdW5jdGlvbiBIQSgpe2xldHtjYXNlbGVzczpBfT1iZSh0aGlzKSYmdGhpc3x8e30sZT17fSx0PShyLG4pPT57bGV0IGk9QSYma2UoZSxuKXx8bjtCQShlW2ldKSYmQkEocik/ZVtpXT1IQShlW2ldLHIpOkJBKHIpP2VbaV09SEEoe30scik6cShyKT9lW2ldPXIuc2xpY2UoKTplW2ldPXJ9O2ZvcihsZXQgcj0wLG49YXJndW1lbnRzLmxlbmd0aDtyPG47cisrKWFyZ3VtZW50c1tyXSYmJChhcmd1bWVudHNbcl0sdCk7cmV0dXJuIGV9dmFyIG5yPShBLGUsdCx7YWxsT3duS2V5czpyfT17fSk9PigkKGUsKG4saSk9Pnt0JiZVKG4pP0FbaV09WihuLHQpOkFbaV09bn0se2FsbE93bktleXM6cn0pLEEpLG9yPUE9PihBLmNoYXJDb2RlQXQoMCk9PT02NTI3OSYmKEE9QS5zbGljZSgxKSksQSksYXI9KEEsZSx0LHIpPT57QS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSxyKSxBLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1BLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJzdXBlciIse3ZhbHVlOmUucHJvdG90eXBlfSksdCYmT2JqZWN0LmFzc2lnbihBLnByb3RvdHlwZSx0KX0sc3I9KEEsZSx0LHIpPT57bGV0IG4saSxvLGc9e307aWYoZT1lfHx7fSxBPT1udWxsKXJldHVybiBlO2Rve2ZvcihuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEEpLGk9bi5sZW5ndGg7aS0tID4wOylvPW5baV0sKCFyfHxyKG8sQSxlKSkmJiFnW29dJiYoZVtvXT1BW29dLGdbb109ITApO0E9dCE9PSExJiZNQShBKX13aGlsZShBJiYoIXR8fHQoQSxlKSkmJkEhPT1PYmplY3QucHJvdG90eXBlKTtyZXR1cm4gZX0sSXI9KEEsZSx0KT0+e0E9U3RyaW5nKEEpLCh0PT09dm9pZCAwfHx0PkEubGVuZ3RoKSYmKHQ9QS5sZW5ndGgpLHQtPWUubGVuZ3RoO2xldCByPUEuaW5kZXhPZihlLHQpO3JldHVybiByIT09LTEmJnI9PT10fSxncj1BPT57aWYoIUEpcmV0dXJuIG51bGw7aWYocShBKSlyZXR1cm4gQTtsZXQgZT1BLmxlbmd0aDtpZighRmUoZSkpcmV0dXJuIG51bGw7bGV0IHQ9bmV3IEFycmF5KGUpO2Zvcig7ZS0tID4wOyl0W2VdPUFbZV07cmV0dXJuIHR9LGxyPShBPT5lPT5BJiZlIGluc3RhbmNlb2YgQSkodHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZNQShVaW50OEFycmF5KSksQnI9KEEsZSk9PntsZXQgcj0oQSYmQVtTeW1ib2wuaXRlcmF0b3JdKS5jYWxsKEEpLG47Zm9yKDsobj1yLm5leHQoKSkmJiFuLmRvbmU7KXtsZXQgaT1uLnZhbHVlO2UuY2FsbChBLGlbMF0saVsxXSl9fSxDcj0oQSxlKT0+e2xldCB0LHI9W107Zm9yKDsodD1BLmV4ZWMoZSkpIT09bnVsbDspci5wdXNoKHQpO3JldHVybiByfSxjcj1HKCJIVE1MRm9ybUVsZW1lbnQiKSx1cj1BPT5BLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWy1fXHNdKFthLXpcZF0pKFx3KikvZyxmdW5jdGlvbih0LHIsbil7cmV0dXJuIHIudG9VcHBlckNhc2UoKStufSksd2U9KCh7aGFzT3duUHJvcGVydHk6QX0pPT4oZSx0KT0+QS5jYWxsKGUsdCkpKE9iamVjdC5wcm90b3R5cGUpLEVyPUcoIlJlZ0V4cCIpLFVlPShBLGUpPT57bGV0IHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoQSkscj17fTskKHQsKG4saSk9PntsZXQgbzsobz1lKG4saSxBKSkhPT0hMSYmKHJbaV09b3x8bil9KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhBLHIpfSxRcj1BPT57VWUoQSwoZSx0KT0+e2lmKFUoQSkmJlsiYXJndW1lbnRzIiwiY2FsbGVyIiwiY2FsbGVlIl0uaW5kZXhPZih0KSE9PS0xKXJldHVybiExO2xldCByPUFbdF07aWYoVShyKSl7aWYoZS5lbnVtZXJhYmxlPSExLCJ3cml0YWJsZSJpbiBlKXtlLndyaXRhYmxlPSExO3JldHVybn1lLnNldHx8KGUuc2V0PSgpPT57dGhyb3cgRXJyb3IoIkNhbiBub3QgcmV3cml0ZSByZWFkLW9ubHkgbWV0aG9kICciK3QrIiciKX0pfX0pfSxmcj0oQSxlKT0+e2xldCB0PXt9LHI9bj0+e24uZm9yRWFjaChpPT57dFtpXT0hMH0pfTtyZXR1cm4gcShBKT9yKEEpOnIoU3RyaW5nKEEpLnNwbGl0KGUpKSx0fSxwcj0oKT0+e30sZHI9KEEsZSk9PihBPStBLE51bWJlci5pc0Zpbml0ZShBKT9BOmUpLEpBPSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsRGU9IjAxMjM0NTY3ODkiLE5lPXtESUdJVDpEZSxBTFBIQTpKQSxBTFBIQV9ESUdJVDpKQStKQS50b1VwcGVyQ2FzZSgpK0RlfSxtcj0oQT0xNixlPU5lLkFMUEhBX0RJR0lUKT0+e2xldCB0PSIiLHtsZW5ndGg6cn09ZTtmb3IoO0EtLTspdCs9ZVtNYXRoLnJhbmRvbSgpKnJ8MF07cmV0dXJuIHR9O2Z1bmN0aW9uIGhyKEEpe3JldHVybiEhKEEmJlUoQS5hcHBlbmQpJiZBW1N5bWJvbC50b1N0cmluZ1RhZ109PT0iRm9ybURhdGEiJiZBW1N5bWJvbC5pdGVyYXRvcl0pfXZhciB5cj1BPT57bGV0IGU9bmV3IEFycmF5KDEwKSx0PShyLG4pPT57aWYodUEocikpe2lmKGUuaW5kZXhPZihyKT49MClyZXR1cm47aWYoISgidG9KU09OImluIHIpKXtlW25dPXI7bGV0IGk9cShyKT9bXTp7fTtyZXR1cm4gJChyLChvLGcpPT57bGV0IEM9dChvLG4rMSk7IVgoQykmJihpW2ddPUMpfSksZVtuXT12b2lkIDAsaX19cmV0dXJuIHJ9O3JldHVybiB0KEEsMCl9LHdyPUcoIkFzeW5jRnVuY3Rpb24iKSxEcj1BPT5BJiYodUEoQSl8fFUoQSkpJiZVKEEudGhlbikmJlUoQS5jYXRjaCksST17aXNBcnJheTpxLGlzQXJyYXlCdWZmZXI6U2UsaXNCdWZmZXI6anQsaXNGb3JtRGF0YTp0cixpc0FycmF5QnVmZmVyVmlldzpfdCxpc1N0cmluZzp6dCxpc051bWJlcjpGZSxpc0Jvb2xlYW46VnQsaXNPYmplY3Q6dUEsaXNQbGFpbk9iamVjdDpCQSxpc1VuZGVmaW5lZDpYLGlzRGF0ZTpadCxpc0ZpbGU6WHQsaXNCbG9iOiR0LGlzUmVnRXhwOkVyLGlzRnVuY3Rpb246VSxpc1N0cmVhbTplcixpc1VSTFNlYXJjaFBhcmFtczpycixpc1R5cGVkQXJyYXk6bHIsaXNGaWxlTGlzdDpBcixmb3JFYWNoOiQsbWVyZ2U6SEEsZXh0ZW5kOm5yLHRyaW06aXIsc3RyaXBCT006b3IsaW5oZXJpdHM6YXIsdG9GbGF0T2JqZWN0OnNyLGtpbmRPZjpDQSxraW5kT2ZUZXN0OkcsZW5kc1dpdGg6SXIsdG9BcnJheTpncixmb3JFYWNoRW50cnk6QnIsbWF0Y2hBbGw6Q3IsaXNIVE1MRm9ybTpjcixoYXNPd25Qcm9wZXJ0eTp3ZSxoYXNPd25Qcm9wOndlLHJlZHVjZURlc2NyaXB0b3JzOlVlLGZyZWV6ZU1ldGhvZHM6UXIsdG9PYmplY3RTZXQ6ZnIsdG9DYW1lbENhc2U6dXIsbm9vcDpwcix0b0Zpbml0ZU51bWJlcjpkcixmaW5kS2V5OmtlLGdsb2JhbDpSZSxpc0NvbnRleHREZWZpbmVkOmJlLEFMUEhBQkVUOk5lLGdlbmVyYXRlU3RyaW5nOm1yLGlzU3BlY0NvbXBsaWFudEZvcm06aHIsdG9KU09OT2JqZWN0OnlyLGlzQXN5bmNGbjp3cixpc1RoZW5hYmxlOkRyfTtmdW5jdGlvbiBLKEEsZSx0LHIsbil7RXJyb3IuY2FsbCh0aGlzKSxFcnJvci5jYXB0dXJlU3RhY2tUcmFjZT9FcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLHRoaXMuY29uc3RydWN0b3IpOnRoaXMuc3RhY2s9bmV3IEVycm9yKCkuc3RhY2ssdGhpcy5tZXNzYWdlPUEsdGhpcy5uYW1lPSJBeGlvc0Vycm9yIixlJiYodGhpcy5jb2RlPWUpLHQmJih0aGlzLmNvbmZpZz10KSxyJiYodGhpcy5yZXF1ZXN0PXIpLG4mJih0aGlzLnJlc3BvbnNlPW4pfUkuaW5oZXJpdHMoSyxFcnJvcix7dG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOkkudG9KU09OT2JqZWN0KHRoaXMuY29uZmlnKSxjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5yZXNwb25zZSYmdGhpcy5yZXNwb25zZS5zdGF0dXM/dGhpcy5yZXNwb25zZS5zdGF0dXM6bnVsbH19fSk7dmFyIEdlPUsucHJvdG90eXBlLFRlPXt9O1siRVJSX0JBRF9PUFRJT05fVkFMVUUiLCJFUlJfQkFEX09QVElPTiIsIkVDT05OQUJPUlRFRCIsIkVUSU1FRE9VVCIsIkVSUl9ORVRXT1JLIiwiRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUyIsIkVSUl9ERVBSRUNBVEVEIiwiRVJSX0JBRF9SRVNQT05TRSIsIkVSUl9CQURfUkVRVUVTVCIsIkVSUl9DQU5DRUxFRCIsIkVSUl9OT1RfU1VQUE9SVCIsIkVSUl9JTlZBTElEX1VSTCJdLmZvckVhY2goQT0+e1RlW0FdPXt2YWx1ZTpBfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEssVGUpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShHZSwiaXNBeGlvc0Vycm9yIix7dmFsdWU6ITB9KTtLLmZyb209KEEsZSx0LHIsbixpKT0+e2xldCBvPU9iamVjdC5jcmVhdGUoR2UpO3JldHVybiBJLnRvRmxhdE9iamVjdChBLG8sZnVuY3Rpb24oQyl7cmV0dXJuIEMhPT1FcnJvci5wcm90b3R5cGV9LGc9PmchPT0iaXNBeGlvc0Vycm9yIiksSy5jYWxsKG8sQS5tZXNzYWdlLGUsdCxyLG4pLG8uY2F1c2U9QSxvLm5hbWU9QS5uYW1lLGkmJk9iamVjdC5hc3NpZ24obyxpKSxvfTt2YXIgcD1LO3ZhciBFQT1udWxsO2Z1bmN0aW9uIFlBKEEpe3JldHVybiBJLmlzUGxhaW5PYmplY3QoQSl8fEkuaXNBcnJheShBKX1mdW5jdGlvbiB4ZShBKXtyZXR1cm4gSS5lbmRzV2l0aChBLCJbXSIpP0Euc2xpY2UoMCwtMik6QX1mdW5jdGlvbiBMZShBLGUsdCl7cmV0dXJuIEE/QS5jb25jYXQoZSkubWFwKGZ1bmN0aW9uKG4saSl7cmV0dXJuIG49eGUobiksIXQmJmk/IlsiK24rIl0iOm59KS5qb2luKHQ/Ii4iOiIiKTplfWZ1bmN0aW9uIFNyKEEpe3JldHVybiBJLmlzQXJyYXkoQSkmJiFBLnNvbWUoWUEpfXZhciBGcj1JLnRvRmxhdE9iamVjdChJLHt9LG51bGwsZnVuY3Rpb24oZSl7cmV0dXJuL15pc1tBLVpdLy50ZXN0KGUpfSk7ZnVuY3Rpb24ga3IoQSxlLHQpe2lmKCFJLmlzT2JqZWN0KEEpKXRocm93IG5ldyBUeXBlRXJyb3IoInRhcmdldCBtdXN0IGJlIGFuIG9iamVjdCIpO2U9ZXx8bmV3KEVBfHxGb3JtRGF0YSksdD1JLnRvRmxhdE9iamVjdCh0LHttZXRhVG9rZW5zOiEwLGRvdHM6ITEsaW5kZXhlczohMX0sITEsZnVuY3Rpb24oYyxmKXtyZXR1cm4hSS5pc1VuZGVmaW5lZChmW2NdKX0pO2xldCByPXQubWV0YVRva2VucyxuPXQudmlzaXRvcnx8cyxpPXQuZG90cyxvPXQuaW5kZXhlcyxDPSh0LkJsb2J8fHR5cGVvZiBCbG9iPCJ1IiYmQmxvYikmJkkuaXNTcGVjQ29tcGxpYW50Rm9ybShlKTtpZighSS5pc0Z1bmN0aW9uKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoInZpc2l0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uIik7ZnVuY3Rpb24gbCh1KXtpZih1PT09bnVsbClyZXR1cm4iIjtpZihJLmlzRGF0ZSh1KSlyZXR1cm4gdS50b0lTT1N0cmluZygpO2lmKCFDJiZJLmlzQmxvYih1KSl0aHJvdyBuZXcgcCgiQmxvYiBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgYSBCdWZmZXIgaW5zdGVhZC4iKTtyZXR1cm4gSS5pc0FycmF5QnVmZmVyKHUpfHxJLmlzVHlwZWRBcnJheSh1KT9DJiZ0eXBlb2YgQmxvYj09ImZ1bmN0aW9uIj9uZXcgQmxvYihbdV0pOkJ1ZmZlci5mcm9tKHUpOnV9ZnVuY3Rpb24gcyh1LGMsZil7bGV0IGQ9dTtpZih1JiYhZiYmdHlwZW9mIHU9PSJvYmplY3QiKXtpZihJLmVuZHNXaXRoKGMsInt9IikpYz1yP2M6Yy5zbGljZSgwLC0yKSx1PUpTT04uc3RyaW5naWZ5KHUpO2Vsc2UgaWYoSS5pc0FycmF5KHUpJiZTcih1KXx8KEkuaXNGaWxlTGlzdCh1KXx8SS5lbmRzV2l0aChjLCJbXSIpKSYmKGQ9SS50b0FycmF5KHUpKSlyZXR1cm4gYz14ZShjKSxkLmZvckVhY2goZnVuY3Rpb24oUyxEdCl7IShJLmlzVW5kZWZpbmVkKFMpfHxTPT09bnVsbCkmJmUuYXBwZW5kKG89PT0hMD9MZShbY10sRHQsaSk6bz09PW51bGw/YzpjKyJbXSIsbChTKSl9KSwhMX1yZXR1cm4gWUEodSk/ITA6KGUuYXBwZW5kKExlKGYsYyxpKSxsKHUpKSwhMSl9bGV0IGE9W10sRT1PYmplY3QuYXNzaWduKEZyLHtkZWZhdWx0VmlzaXRvcjpzLGNvbnZlcnRWYWx1ZTpsLGlzVmlzaXRhYmxlOllBfSk7ZnVuY3Rpb24gQih1LGMpe2lmKCFJLmlzVW5kZWZpbmVkKHUpKXtpZihhLmluZGV4T2YodSkhPT0tMSl0aHJvdyBFcnJvcigiQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGluICIrYy5qb2luKCIuIikpO2EucHVzaCh1KSxJLmZvckVhY2godSxmdW5jdGlvbihkLGspeyghKEkuaXNVbmRlZmluZWQoZCl8fGQ9PT1udWxsKSYmbi5jYWxsKGUsZCxJLmlzU3RyaW5nKGspP2sudHJpbSgpOmssYyxFKSk9PT0hMCYmQihkLGM/Yy5jb25jYXQoayk6W2tdKX0pLGEucG9wKCl9fWlmKCFJLmlzT2JqZWN0KEEpKXRocm93IG5ldyBUeXBlRXJyb3IoImRhdGEgbXVzdCBiZSBhbiBvYmplY3QiKTtyZXR1cm4gQihBKSxlfXZhciB4PWtyO2Z1bmN0aW9uIE9lKEEpe2xldCBlPXsiISI6IiUyMSIsIiciOiIlMjciLCIoIjoiJTI4IiwiKSI6IiUyOSIsIn4iOiIlN0UiLCIlMjAiOiIrIiwiJTAwIjoiXDAifTtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEEpLnJlcGxhY2UoL1shJygpfl18JTIwfCUwMC9nLGZ1bmN0aW9uKHIpe3JldHVybiBlW3JdfSl9ZnVuY3Rpb24gUGUoQSxlKXt0aGlzLl9wYWlycz1bXSxBJiZ4KEEsdGhpcyxlKX12YXIgSmU9UGUucHJvdG90eXBlO0plLmFwcGVuZD1mdW5jdGlvbihlLHQpe3RoaXMuX3BhaXJzLnB1c2goW2UsdF0pfTtKZS50b1N0cmluZz1mdW5jdGlvbihlKXtsZXQgdD1lP2Z1bmN0aW9uKHIpe3JldHVybiBlLmNhbGwodGhpcyxyLE9lKX06T2U7cmV0dXJuIHRoaXMuX3BhaXJzLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gdChuWzBdKSsiPSIrdChuWzFdKX0sIiIpLmpvaW4oIiYiKX07dmFyIFFBPVBlO2Z1bmN0aW9uIFJyKEEpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoQSkucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2csIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjAvZywiKyIpLnJlcGxhY2UoLyU1Qi9naSwiWyIpLnJlcGxhY2UoLyU1RC9naSwiXSIpfWZ1bmN0aW9uIEFBKEEsZSx0KXtpZighZSlyZXR1cm4gQTtsZXQgcj10JiZ0LmVuY29kZXx8UnIsbj10JiZ0LnNlcmlhbGl6ZSxpO2lmKG4/aT1uKGUsdCk6aT1JLmlzVVJMU2VhcmNoUGFyYW1zKGUpP2UudG9TdHJpbmcoKTpuZXcgUUEoZSx0KS50b1N0cmluZyhyKSxpKXtsZXQgbz1BLmluZGV4T2YoIiMiKTtvIT09LTEmJihBPUEuc2xpY2UoMCxvKSksQSs9KEEuaW5kZXhPZigiPyIpPT09LTE/Ij8iOiImIikraX1yZXR1cm4gQX12YXIgcUE9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmhhbmRsZXJzPVtdfXVzZShlLHQscil7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOmUscmVqZWN0ZWQ6dCxzeW5jaHJvbm91czpyP3Iuc3luY2hyb25vdXM6ITEscnVuV2hlbjpyP3IucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX1lamVjdChlKXt0aGlzLmhhbmRsZXJzW2VdJiYodGhpcy5oYW5kbGVyc1tlXT1udWxsKX1jbGVhcigpe3RoaXMuaGFuZGxlcnMmJih0aGlzLmhhbmRsZXJzPVtdKX1mb3JFYWNoKGUpe0kuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLGZ1bmN0aW9uKHIpe3IhPT1udWxsJiZlKHIpfSl9fSxLQT1xQTt2YXIgZkE9e3NpbGVudEpTT05QYXJzaW5nOiEwLGZvcmNlZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9O3ZhciBIZT10eXBlb2YgVVJMU2VhcmNoUGFyYW1zPCJ1Ij9VUkxTZWFyY2hQYXJhbXM6UUE7dmFyIE1lPXR5cGVvZiBGb3JtRGF0YTwidSI/Rm9ybURhdGE6bnVsbDt2YXIgWWU9dHlwZW9mIEJsb2I8InUiP0Jsb2I6bnVsbDt2YXIgcWU9e2lzQnJvd3NlcjohMCxjbGFzc2VzOntVUkxTZWFyY2hQYXJhbXM6SGUsRm9ybURhdGE6TWUsQmxvYjpZZX0scHJvdG9jb2xzOlsiaHR0cCIsImh0dHBzIiwiZmlsZSIsImJsb2IiLCJ1cmwiLCJkYXRhIl19O3ZhciBXQT17fTtGdChXQSx7aGFzQnJvd3NlckVudjooKT0+S2UsaGFzU3RhbmRhcmRCcm93c2VyRW52OigpPT5icixoYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnY6KCk9PlVyfSk7dmFyIEtlPXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2YgZG9jdW1lbnQ8InUiLGJyPShBPT5LZSYmWyJSZWFjdE5hdGl2ZSIsIk5hdGl2ZVNjcmlwdCIsIk5TIl0uaW5kZXhPZihBKTwwKSh0eXBlb2YgbmF2aWdhdG9yPCJ1IiYmbmF2aWdhdG9yLnByb2R1Y3QpLFVyPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZTwidSImJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSYmdHlwZW9mIHNlbGYuaW1wb3J0U2NyaXB0cz09ImZ1bmN0aW9uIjt2YXIgdz17Li4uV0EsLi4ucWV9O2Z1bmN0aW9uIHZBKEEsZSl7cmV0dXJuIHgoQSxuZXcgdy5jbGFzc2VzLlVSTFNlYXJjaFBhcmFtcyxPYmplY3QuYXNzaWduKHt2aXNpdG9yOmZ1bmN0aW9uKHQscixuLGkpe3JldHVybiB3LmlzTm9kZSYmSS5pc0J1ZmZlcih0KT8odGhpcy5hcHBlbmQocix0LnRvU3RyaW5nKCJiYXNlNjQiKSksITEpOmkuZGVmYXVsdFZpc2l0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sZSkpfWZ1bmN0aW9uIE5yKEEpe3JldHVybiBJLm1hdGNoQWxsKC9cdyt8XFsoXHcqKV0vZyxBKS5tYXAoZT0+ZVswXT09PSJbXSI/IiI6ZVsxXXx8ZVswXSl9ZnVuY3Rpb24gR3IoQSl7bGV0IGU9e30sdD1PYmplY3Qua2V5cyhBKSxyLG49dC5sZW5ndGgsaTtmb3Iocj0wO3I8bjtyKyspaT10W3JdLGVbaV09QVtpXTtyZXR1cm4gZX1mdW5jdGlvbiBUcihBKXtmdW5jdGlvbiBlKHQscixuLGkpe2xldCBvPXRbaSsrXSxnPU51bWJlci5pc0Zpbml0ZSgrbyksQz1pPj10Lmxlbmd0aDtyZXR1cm4gbz0hbyYmSS5pc0FycmF5KG4pP24ubGVuZ3RoOm8sQz8oSS5oYXNPd25Qcm9wKG4sbyk/bltvXT1bbltvXSxyXTpuW29dPXIsIWcpOigoIW5bb118fCFJLmlzT2JqZWN0KG5bb10pKSYmKG5bb109W10pLGUodCxyLG5bb10saSkmJkkuaXNBcnJheShuW29dKSYmKG5bb109R3IobltvXSkpLCFnKX1pZihJLmlzRm9ybURhdGEoQSkmJkkuaXNGdW5jdGlvbihBLmVudHJpZXMpKXtsZXQgdD17fTtyZXR1cm4gSS5mb3JFYWNoRW50cnkoQSwocixuKT0+e2UoTnIociksbix0LDApfSksdH1yZXR1cm4gbnVsbH12YXIgcEE9VHI7ZnVuY3Rpb24gTHIoQSxlLHQpe2lmKEkuaXNTdHJpbmcoQSkpdHJ5e3JldHVybihlfHxKU09OLnBhcnNlKShBKSxJLnRyaW0oQSl9Y2F0Y2gocil7aWYoci5uYW1lIT09IlN5bnRheEVycm9yIil0aHJvdyByfXJldHVybih0fHxKU09OLnN0cmluZ2lmeSkoQSl9dmFyIGpBPXt0cmFuc2l0aW9uYWw6ZkEsYWRhcHRlcjpbInhociIsImh0dHAiXSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbihlLHQpe2xldCByPXQuZ2V0Q29udGVudFR5cGUoKXx8IiIsbj1yLmluZGV4T2YoImFwcGxpY2F0aW9uL2pzb24iKT4tMSxpPUkuaXNPYmplY3QoZSk7aWYoaSYmSS5pc0hUTUxGb3JtKGUpJiYoZT1uZXcgRm9ybURhdGEoZSkpLEkuaXNGb3JtRGF0YShlKSlyZXR1cm4gbiYmbj9KU09OLnN0cmluZ2lmeShwQShlKSk6ZTtpZihJLmlzQXJyYXlCdWZmZXIoZSl8fEkuaXNCdWZmZXIoZSl8fEkuaXNTdHJlYW0oZSl8fEkuaXNGaWxlKGUpfHxJLmlzQmxvYihlKSlyZXR1cm4gZTtpZihJLmlzQXJyYXlCdWZmZXJWaWV3KGUpKXJldHVybiBlLmJ1ZmZlcjtpZihJLmlzVVJMU2VhcmNoUGFyYW1zKGUpKXJldHVybiB0LnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIsITEpLGUudG9TdHJpbmcoKTtsZXQgZztpZihpKXtpZihyLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpPi0xKXJldHVybiB2QShlLHRoaXMuZm9ybVNlcmlhbGl6ZXIpLnRvU3RyaW5nKCk7aWYoKGc9SS5pc0ZpbGVMaXN0KGUpKXx8ci5pbmRleE9mKCJtdWx0aXBhcnQvZm9ybS1kYXRhIik+LTEpe2xldCBDPXRoaXMuZW52JiZ0aGlzLmVudi5Gb3JtRGF0YTtyZXR1cm4geChnP3siZmlsZXNbXSI6ZX06ZSxDJiZuZXcgQyx0aGlzLmZvcm1TZXJpYWxpemVyKX19cmV0dXJuIGl8fG4/KHQuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL2pzb24iLCExKSxMcihlKSk6ZX1dLHRyYW5zZm9ybVJlc3BvbnNlOltmdW5jdGlvbihlKXtsZXQgdD10aGlzLnRyYW5zaXRpb25hbHx8akEudHJhbnNpdGlvbmFsLHI9dCYmdC5mb3JjZWRKU09OUGFyc2luZyxuPXRoaXMucmVzcG9uc2VUeXBlPT09Impzb24iO2lmKGUmJkkuaXNTdHJpbmcoZSkmJihyJiYhdGhpcy5yZXNwb25zZVR5cGV8fG4pKXtsZXQgbz0hKHQmJnQuc2lsZW50SlNPTlBhcnNpbmcpJiZuO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShlKX1jYXRjaChnKXtpZihvKXRocm93IGcubmFtZT09PSJTeW50YXhFcnJvciI/cC5mcm9tKGcscC5FUlJfQkFEX1JFU1BPTlNFLHRoaXMsbnVsbCx0aGlzLnJlc3BvbnNlKTpnfX1yZXR1cm4gZX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSxtYXhCb2R5TGVuZ3RoOi0xLGVudjp7Rm9ybURhdGE6dy5jbGFzc2VzLkZvcm1EYXRhLEJsb2I6dy5jbGFzc2VzLkJsb2J9LHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0yMDAmJmU8MzAwfSxoZWFkZXJzOntjb21tb246e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIiwiQ29udGVudC1UeXBlIjp2b2lkIDB9fX07SS5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCJdLEE9PntqQS5oZWFkZXJzW0FdPXt9fSk7dmFyIFc9akE7dmFyIHhyPUkudG9PYmplY3RTZXQoWyJhZ2UiLCJhdXRob3JpemF0aW9uIiwiY29udGVudC1sZW5ndGgiLCJjb250ZW50LXR5cGUiLCJldGFnIiwiZXhwaXJlcyIsImZyb20iLCJob3N0IiwiaWYtbW9kaWZpZWQtc2luY2UiLCJpZi11bm1vZGlmaWVkLXNpbmNlIiwibGFzdC1tb2RpZmllZCIsImxvY2F0aW9uIiwibWF4LWZvcndhcmRzIiwicHJveHktYXV0aG9yaXphdGlvbiIsInJlZmVyZXIiLCJyZXRyeS1hZnRlciIsInVzZXItYWdlbnQiXSksV2U9QT0+e2xldCBlPXt9LHQscixuO3JldHVybiBBJiZBLnNwbGl0KGAKYCkuZm9yRWFjaChmdW5jdGlvbihvKXtuPW8uaW5kZXhPZigiOiIpLHQ9by5zdWJzdHJpbmcoMCxuKS50cmltKCkudG9Mb3dlckNhc2UoKSxyPW8uc3Vic3RyaW5nKG4rMSkudHJpbSgpLCEoIXR8fGVbdF0mJnhyW3RdKSYmKHQ9PT0ic2V0LWNvb2tpZSI/ZVt0XT9lW3RdLnB1c2gocik6ZVt0XT1bcl06ZVt0XT1lW3RdP2VbdF0rIiwgIityOnIpfSksZX07dmFyIHZlPVN5bWJvbCgiaW50ZXJuYWxzIik7ZnVuY3Rpb24gZUEoQSl7cmV0dXJuIEEmJlN0cmluZyhBKS50cmltKCkudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBkQShBKXtyZXR1cm4gQT09PSExfHxBPT1udWxsP0E6SS5pc0FycmF5KEEpP0EubWFwKGRBKTpTdHJpbmcoQSl9ZnVuY3Rpb24gT3IoQSl7bGV0IGU9T2JqZWN0LmNyZWF0ZShudWxsKSx0PS8oW15ccyw7PV0rKVxzKig/Oj1ccyooW14sO10rKSk/L2cscjtmb3IoO3I9dC5leGVjKEEpOyllW3JbMV1dPXJbMl07cmV0dXJuIGV9dmFyIFByPUE9Pi9eWy1fYS16QS1aMC05XmB8fiwhIyQlJicqKy5dKyQvLnRlc3QoQS50cmltKCkpO2Z1bmN0aW9uIF9BKEEsZSx0LHIsbil7aWYoSS5pc0Z1bmN0aW9uKHIpKXJldHVybiByLmNhbGwodGhpcyxlLHQpO2lmKG4mJihlPXQpLCEhSS5pc1N0cmluZyhlKSl7aWYoSS5pc1N0cmluZyhyKSlyZXR1cm4gZS5pbmRleE9mKHIpIT09LTE7aWYoSS5pc1JlZ0V4cChyKSlyZXR1cm4gci50ZXN0KGUpfX1mdW5jdGlvbiBKcihBKXtyZXR1cm4gQS50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8oW2EtelxkXSkoXHcqKS9nLChlLHQscik9PnQudG9VcHBlckNhc2UoKStyKX1mdW5jdGlvbiBIcihBLGUpe2xldCB0PUkudG9DYW1lbENhc2UoIiAiK2UpO1siZ2V0Iiwic2V0IiwiaGFzIl0uZm9yRWFjaChyPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KEEscit0LHt2YWx1ZTpmdW5jdGlvbihuLGksbyl7cmV0dXJuIHRoaXNbcl0uY2FsbCh0aGlzLGUsbixpLG8pfSxjb25maWd1cmFibGU6ITB9KX0pfXZhciB2PWNsYXNze2NvbnN0cnVjdG9yKGUpe2UmJnRoaXMuc2V0KGUpfXNldChlLHQscil7bGV0IG49dGhpcztmdW5jdGlvbiBpKGcsQyxsKXtsZXQgcz1lQShDKTtpZighcyl0aHJvdyBuZXcgRXJyb3IoImhlYWRlciBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nIik7bGV0IGE9SS5maW5kS2V5KG4scyk7KCFhfHxuW2FdPT09dm9pZCAwfHxsPT09ITB8fGw9PT12b2lkIDAmJm5bYV0hPT0hMSkmJihuW2F8fENdPWRBKGcpKX1sZXQgbz0oZyxDKT0+SS5mb3JFYWNoKGcsKGwscyk9PmkobCxzLEMpKTtyZXR1cm4gSS5pc1BsYWluT2JqZWN0KGUpfHxlIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9vKGUsdCk6SS5pc1N0cmluZyhlKSYmKGU9ZS50cmltKCkpJiYhUHIoZSk/byhXZShlKSx0KTplIT1udWxsJiZpKHQsZSxyKSx0aGlzfWdldChlLHQpe2lmKGU9ZUEoZSksZSl7bGV0IHI9SS5maW5kS2V5KHRoaXMsZSk7aWYocil7bGV0IG49dGhpc1tyXTtpZighdClyZXR1cm4gbjtpZih0PT09ITApcmV0dXJuIE9yKG4pO2lmKEkuaXNGdW5jdGlvbih0KSlyZXR1cm4gdC5jYWxsKHRoaXMsbixyKTtpZihJLmlzUmVnRXhwKHQpKXJldHVybiB0LmV4ZWMobik7dGhyb3cgbmV3IFR5cGVFcnJvcigicGFyc2VyIG11c3QgYmUgYm9vbGVhbnxyZWdleHB8ZnVuY3Rpb24iKX19fWhhcyhlLHQpe2lmKGU9ZUEoZSksZSl7bGV0IHI9SS5maW5kS2V5KHRoaXMsZSk7cmV0dXJuISEociYmdGhpc1tyXSE9PXZvaWQgMCYmKCF0fHxfQSh0aGlzLHRoaXNbcl0scix0KSkpfXJldHVybiExfWRlbGV0ZShlLHQpe2xldCByPXRoaXMsbj0hMTtmdW5jdGlvbiBpKG8pe2lmKG89ZUEobyksbyl7bGV0IGc9SS5maW5kS2V5KHIsbyk7ZyYmKCF0fHxfQShyLHJbZ10sZyx0KSkmJihkZWxldGUgcltnXSxuPSEwKX19cmV0dXJuIEkuaXNBcnJheShlKT9lLmZvckVhY2goaSk6aShlKSxufWNsZWFyKGUpe2xldCB0PU9iamVjdC5rZXlzKHRoaXMpLHI9dC5sZW5ndGgsbj0hMTtmb3IoO3ItLTspe2xldCBpPXRbcl07KCFlfHxfQSh0aGlzLHRoaXNbaV0saSxlLCEwKSkmJihkZWxldGUgdGhpc1tpXSxuPSEwKX1yZXR1cm4gbn1ub3JtYWxpemUoZSl7bGV0IHQ9dGhpcyxyPXt9O3JldHVybiBJLmZvckVhY2godGhpcywobixpKT0+e2xldCBvPUkuZmluZEtleShyLGkpO2lmKG8pe3Rbb109ZEEobiksZGVsZXRlIHRbaV07cmV0dXJufWxldCBnPWU/SnIoaSk6U3RyaW5nKGkpLnRyaW0oKTtnIT09aSYmZGVsZXRlIHRbaV0sdFtnXT1kQShuKSxyW2ddPSEwfSksdGhpc31jb25jYXQoLi4uZSl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY29uY2F0KHRoaXMsLi4uZSl9dG9KU09OKGUpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIEkuZm9yRWFjaCh0aGlzLChyLG4pPT57ciE9bnVsbCYmciE9PSExJiYodFtuXT1lJiZJLmlzQXJyYXkocik/ci5qb2luKCIsICIpOnIpfSksdH1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKVtTeW1ib2wuaXRlcmF0b3JdKCl9dG9TdHJpbmcoKXtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSkubWFwKChbZSx0XSk9PmUrIjogIit0KS5qb2luKGAKYCl9Z2V0W1N5bWJvbC50b1N0cmluZ1RhZ10oKXtyZXR1cm4iQXhpb3NIZWFkZXJzIn1zdGF0aWMgZnJvbShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHRoaXM/ZTpuZXcgdGhpcyhlKX1zdGF0aWMgY29uY2F0KGUsLi4udCl7bGV0IHI9bmV3IHRoaXMoZSk7cmV0dXJuIHQuZm9yRWFjaChuPT5yLnNldChuKSkscn1zdGF0aWMgYWNjZXNzb3IoZSl7bGV0IHI9KHRoaXNbdmVdPXRoaXNbdmVdPXthY2Nlc3NvcnM6e319KS5hY2Nlc3NvcnMsbj10aGlzLnByb3RvdHlwZTtmdW5jdGlvbiBpKG8pe2xldCBnPWVBKG8pO3JbZ118fChIcihuLG8pLHJbZ109ITApfXJldHVybiBJLmlzQXJyYXkoZSk/ZS5mb3JFYWNoKGkpOmkoZSksdGhpc319O3YuYWNjZXNzb3IoWyJDb250ZW50LVR5cGUiLCJDb250ZW50LUxlbmd0aCIsIkFjY2VwdCIsIkFjY2VwdC1FbmNvZGluZyIsIlVzZXItQWdlbnQiLCJBdXRob3JpemF0aW9uIl0pO0kucmVkdWNlRGVzY3JpcHRvcnModi5wcm90b3R5cGUsKHt2YWx1ZTpBfSxlKT0+e2xldCB0PWVbMF0udG9VcHBlckNhc2UoKStlLnNsaWNlKDEpO3JldHVybntnZXQ6KCk9PkEsc2V0KHIpe3RoaXNbdF09cn19fSk7SS5mcmVlemVNZXRob2RzKHYpO3ZhciBEPXY7ZnVuY3Rpb24gdEEoQSxlKXtsZXQgdD10aGlzfHxXLHI9ZXx8dCxuPUQuZnJvbShyLmhlYWRlcnMpLGk9ci5kYXRhO3JldHVybiBJLmZvckVhY2goQSxmdW5jdGlvbihnKXtpPWcuY2FsbCh0LGksbi5ub3JtYWxpemUoKSxlP2Uuc3RhdHVzOnZvaWQgMCl9KSxuLm5vcm1hbGl6ZSgpLGl9ZnVuY3Rpb24gckEoQSl7cmV0dXJuISEoQSYmQS5fX0NBTkNFTF9fKX1mdW5jdGlvbiBqZShBLGUsdCl7cC5jYWxsKHRoaXMsQT8/ImNhbmNlbGVkIixwLkVSUl9DQU5DRUxFRCxlLHQpLHRoaXMubmFtZT0iQ2FuY2VsZWRFcnJvciJ9SS5pbmhlcml0cyhqZSxwLHtfX0NBTkNFTF9fOiEwfSk7dmFyIE89amU7ZnVuY3Rpb24gekEoQSxlLHQpe2xldCByPXQuY29uZmlnLnZhbGlkYXRlU3RhdHVzOyF0LnN0YXR1c3x8IXJ8fHIodC5zdGF0dXMpP0EodCk6ZShuZXcgcCgiUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK3Quc3RhdHVzLFtwLkVSUl9CQURfUkVRVUVTVCxwLkVSUl9CQURfUkVTUE9OU0VdW01hdGguZmxvb3IodC5zdGF0dXMvMTAwKS00XSx0LmNvbmZpZyx0LnJlcXVlc3QsdCkpfXZhciBfZT13Lmhhc1N0YW5kYXJkQnJvd3NlckVudj97d3JpdGUoQSxlLHQscixuLGkpe2xldCBvPVtBKyI9IitlbmNvZGVVUklDb21wb25lbnQoZSldO0kuaXNOdW1iZXIodCkmJm8ucHVzaCgiZXhwaXJlcz0iK25ldyBEYXRlKHQpLnRvR01UU3RyaW5nKCkpLEkuaXNTdHJpbmcocikmJm8ucHVzaCgicGF0aD0iK3IpLEkuaXNTdHJpbmcobikmJm8ucHVzaCgiZG9tYWluPSIrbiksaT09PSEwJiZvLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1vLmpvaW4oIjsgIil9LHJlYWQoQSl7bGV0IGU9ZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoIihefDtcXHMqKSgiK0ErIik9KFteO10qKSIpKTtyZXR1cm4gZT9kZWNvZGVVUklDb21wb25lbnQoZVszXSk6bnVsbH0scmVtb3ZlKEEpe3RoaXMud3JpdGUoQSwiIixEYXRlLm5vdygpLTg2NGU1KX19Ont3cml0ZSgpe30scmVhZCgpe3JldHVybiBudWxsfSxyZW1vdmUoKXt9fTtmdW5jdGlvbiBWQShBKXtyZXR1cm4vXihbYS16XVthLXpcZCtcLS5dKjopP1wvXC8vaS50ZXN0KEEpfWZ1bmN0aW9uIFpBKEEsZSl7cmV0dXJuIGU/QS5yZXBsYWNlKC9cLyskLywiIikrIi8iK2UucmVwbGFjZSgvXlwvKy8sIiIpOkF9ZnVuY3Rpb24gaUEoQSxlKXtyZXR1cm4gQSYmIVZBKGUpP1pBKEEsZSk6ZX12YXIgemU9dy5oYXNTdGFuZGFyZEJyb3dzZXJFbnY/ZnVuY3Rpb24oKXtsZXQgZT0vKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpLHI7ZnVuY3Rpb24gbihpKXtsZXQgbz1pO3JldHVybiBlJiYodC5zZXRBdHRyaWJ1dGUoImhyZWYiLG8pLG89dC5ocmVmKSx0LnNldEF0dHJpYnV0ZSgiaHJlZiIsbykse2hyZWY6dC5ocmVmLHByb3RvY29sOnQucHJvdG9jb2w/dC5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6dC5ob3N0LHNlYXJjaDp0LnNlYXJjaD90LnNlYXJjaC5yZXBsYWNlKC9eXD8vLCIiKToiIixoYXNoOnQuaGFzaD90Lmhhc2gucmVwbGFjZSgvXiMvLCIiKToiIixob3N0bmFtZTp0Lmhvc3RuYW1lLHBvcnQ6dC5wb3J0LHBhdGhuYW1lOnQucGF0aG5hbWUuY2hhckF0KDApPT09Ii8iP3QucGF0aG5hbWU6Ii8iK3QucGF0aG5hbWV9fXJldHVybiByPW4od2luZG93LmxvY2F0aW9uLmhyZWYpLGZ1bmN0aW9uKG8pe2xldCBnPUkuaXNTdHJpbmcobyk/bihvKTpvO3JldHVybiBnLnByb3RvY29sPT09ci5wcm90b2NvbCYmZy5ob3N0PT09ci5ob3N0fX0oKTpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiEwfX0oKTtmdW5jdGlvbiBYQShBKXtsZXQgZT0vXihbLStcd117MSwyNX0pKDo/XC9cL3w6KS8uZXhlYyhBKTtyZXR1cm4gZSYmZVsxXXx8IiJ9ZnVuY3Rpb24gTXIoQSxlKXtBPUF8fDEwO2xldCB0PW5ldyBBcnJheShBKSxyPW5ldyBBcnJheShBKSxuPTAsaT0wLG87cmV0dXJuIGU9ZSE9PXZvaWQgMD9lOjFlMyxmdW5jdGlvbihDKXtsZXQgbD1EYXRlLm5vdygpLHM9cltpXTtvfHwobz1sKSx0W25dPUMscltuXT1sO2xldCBhPWksRT0wO2Zvcig7YSE9PW47KUUrPXRbYSsrXSxhPWElQTtpZihuPShuKzEpJUEsbj09PWkmJihpPShpKzEpJUEpLGwtbzxlKXJldHVybjtsZXQgQj1zJiZsLXM7cmV0dXJuIEI/TWF0aC5yb3VuZChFKjFlMy9CKTp2b2lkIDB9fXZhciBWZT1NcjtmdW5jdGlvbiBaZShBLGUpe2xldCB0PTAscj1WZSg1MCwyNTApO3JldHVybiBuPT57bGV0IGk9bi5sb2FkZWQsbz1uLmxlbmd0aENvbXB1dGFibGU/bi50b3RhbDp2b2lkIDAsZz1pLXQsQz1yKGcpLGw9aTw9bzt0PWk7bGV0IHM9e2xvYWRlZDppLHRvdGFsOm8scHJvZ3Jlc3M6bz9pL286dm9pZCAwLGJ5dGVzOmcscmF0ZTpDfHx2b2lkIDAsZXN0aW1hdGVkOkMmJm8mJmw/KG8taSkvQzp2b2lkIDAsZXZlbnQ6bn07c1tlPyJkb3dubG9hZCI6InVwbG9hZCJdPSEwLEEocyl9fXZhciBZcj10eXBlb2YgWE1MSHR0cFJlcXVlc3Q8InUiLFhlPVlyJiZmdW5jdGlvbihBKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odCxyKXtsZXQgbj1BLmRhdGEsaT1ELmZyb20oQS5oZWFkZXJzKS5ub3JtYWxpemUoKSx7cmVzcG9uc2VUeXBlOm8sd2l0aFhTUkZUb2tlbjpnfT1BLEM7ZnVuY3Rpb24gbCgpe0EuY2FuY2VsVG9rZW4mJkEuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUoQyksQS5zaWduYWwmJkEuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixDKX1sZXQgcztpZihJLmlzRm9ybURhdGEobikpe2lmKHcuaGFzU3RhbmRhcmRCcm93c2VyRW52fHx3Lmhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudilpLnNldENvbnRlbnRUeXBlKCExKTtlbHNlIGlmKChzPWkuZ2V0Q29udGVudFR5cGUoKSkhPT0hMSl7bGV0W2MsLi4uZl09cz9zLnNwbGl0KCI7IikubWFwKGQ9PmQudHJpbSgpKS5maWx0ZXIoQm9vbGVhbik6W107aS5zZXRDb250ZW50VHlwZShbY3x8Im11bHRpcGFydC9mb3JtLWRhdGEiLC4uLmZdLmpvaW4oIjsgIikpfX1sZXQgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoQS5hdXRoKXtsZXQgYz1BLmF1dGgudXNlcm5hbWV8fCIiLGY9QS5hdXRoLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChBLmF1dGgucGFzc3dvcmQpKToiIjtpLnNldCgiQXV0aG9yaXphdGlvbiIsIkJhc2ljICIrYnRvYShjKyI6IitmKSl9bGV0IEU9aUEoQS5iYXNlVVJMLEEudXJsKTthLm9wZW4oQS5tZXRob2QudG9VcHBlckNhc2UoKSxBQShFLEEucGFyYW1zLEEucGFyYW1zU2VyaWFsaXplciksITApLGEudGltZW91dD1BLnRpbWVvdXQ7ZnVuY3Rpb24gQigpe2lmKCFhKXJldHVybjtsZXQgYz1ELmZyb20oImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiBhJiZhLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSxkPXtkYXRhOiFvfHxvPT09InRleHQifHxvPT09Impzb24iP2EucmVzcG9uc2VUZXh0OmEucmVzcG9uc2Usc3RhdHVzOmEuc3RhdHVzLHN0YXR1c1RleHQ6YS5zdGF0dXNUZXh0LGhlYWRlcnM6Yyxjb25maWc6QSxyZXF1ZXN0OmF9O3pBKGZ1bmN0aW9uKFMpe3QoUyksbCgpfSxmdW5jdGlvbihTKXtyKFMpLGwoKX0sZCksYT1udWxsfWlmKCJvbmxvYWRlbmQiaW4gYT9hLm9ubG9hZGVuZD1COmEub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7IWF8fGEucmVhZHlTdGF0ZSE9PTR8fGEuc3RhdHVzPT09MCYmIShhLnJlc3BvbnNlVVJMJiZhLnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6Iik9PT0wKXx8c2V0VGltZW91dChCKX0sYS5vbmFib3J0PWZ1bmN0aW9uKCl7YSYmKHIobmV3IHAoIlJlcXVlc3QgYWJvcnRlZCIscC5FQ09OTkFCT1JURUQsQSxhKSksYT1udWxsKX0sYS5vbmVycm9yPWZ1bmN0aW9uKCl7cihuZXcgcCgiTmV0d29yayBFcnJvciIscC5FUlJfTkVUV09SSyxBLGEpKSxhPW51bGx9LGEub250aW1lb3V0PWZ1bmN0aW9uKCl7bGV0IGY9QS50aW1lb3V0PyJ0aW1lb3V0IG9mICIrQS50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiLGQ9QS50cmFuc2l0aW9uYWx8fGZBO0EudGltZW91dEVycm9yTWVzc2FnZSYmKGY9QS50aW1lb3V0RXJyb3JNZXNzYWdlKSxyKG5ldyBwKGYsZC5jbGFyaWZ5VGltZW91dEVycm9yP3AuRVRJTUVET1VUOnAuRUNPTk5BQk9SVEVELEEsYSkpLGE9bnVsbH0sdy5oYXNTdGFuZGFyZEJyb3dzZXJFbnYmJihnJiZJLmlzRnVuY3Rpb24oZykmJihnPWcoQSkpLGd8fGchPT0hMSYmemUoRSkpKXtsZXQgYz1BLnhzcmZIZWFkZXJOYW1lJiZBLnhzcmZDb29raWVOYW1lJiZfZS5yZWFkKEEueHNyZkNvb2tpZU5hbWUpO2MmJmkuc2V0KEEueHNyZkhlYWRlck5hbWUsYyl9bj09PXZvaWQgMCYmaS5zZXRDb250ZW50VHlwZShudWxsKSwic2V0UmVxdWVzdEhlYWRlciJpbiBhJiZJLmZvckVhY2goaS50b0pTT04oKSxmdW5jdGlvbihmLGQpe2Euc2V0UmVxdWVzdEhlYWRlcihkLGYpfSksSS5pc1VuZGVmaW5lZChBLndpdGhDcmVkZW50aWFscyl8fChhLndpdGhDcmVkZW50aWFscz0hIUEud2l0aENyZWRlbnRpYWxzKSxvJiZvIT09Impzb24iJiYoYS5yZXNwb25zZVR5cGU9QS5yZXNwb25zZVR5cGUpLHR5cGVvZiBBLm9uRG93bmxvYWRQcm9ncmVzcz09ImZ1bmN0aW9uIiYmYS5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsWmUoQS5vbkRvd25sb2FkUHJvZ3Jlc3MsITApKSx0eXBlb2YgQS5vblVwbG9hZFByb2dyZXNzPT0iZnVuY3Rpb24iJiZhLnVwbG9hZCYmYS51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLFplKEEub25VcGxvYWRQcm9ncmVzcykpLChBLmNhbmNlbFRva2VufHxBLnNpZ25hbCkmJihDPWM9PnthJiYocighY3x8Yy50eXBlP25ldyBPKG51bGwsQSxhKTpjKSxhLmFib3J0KCksYT1udWxsKX0sQS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUoQyksQS5zaWduYWwmJihBLnNpZ25hbC5hYm9ydGVkP0MoKTpBLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsQykpKTtsZXQgdT1YQShFKTtpZih1JiZ3LnByb3RvY29scy5pbmRleE9mKHUpPT09LTEpe3IobmV3IHAoIlVuc3VwcG9ydGVkIHByb3RvY29sICIrdSsiOiIscC5FUlJfQkFEX1JFUVVFU1QsQSkpO3JldHVybn1hLnNlbmQobnx8bnVsbCl9KX07dmFyICRBPXtodHRwOkVBLHhocjpYZX07SS5mb3JFYWNoKCRBLChBLGUpPT57aWYoQSl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJuYW1lIix7dmFsdWU6ZX0pfWNhdGNoe31PYmplY3QuZGVmaW5lUHJvcGVydHkoQSwiYWRhcHRlck5hbWUiLHt2YWx1ZTplfSl9fSk7dmFyICRlPUE9PmAtICR7QX1gLHFyPUE9PkkuaXNGdW5jdGlvbihBKXx8QT09PW51bGx8fEE9PT0hMSxtQT17Z2V0QWRhcHRlcjpBPT57QT1JLmlzQXJyYXkoQSk/QTpbQV07bGV0e2xlbmd0aDplfT1BLHQscixuPXt9O2ZvcihsZXQgaT0wO2k8ZTtpKyspe3Q9QVtpXTtsZXQgbztpZihyPXQsIXFyKHQpJiYocj0kQVsobz1TdHJpbmcodCkpLnRvTG93ZXJDYXNlKCldLHI9PT12b2lkIDApKXRocm93IG5ldyBwKGBVbmtub3duIGFkYXB0ZXIgJyR7b30nYCk7aWYocilicmVhaztuW298fCIjIitpXT1yfWlmKCFyKXtsZXQgaT1PYmplY3QuZW50cmllcyhuKS5tYXAoKFtnLENdKT0+YGFkYXB0ZXIgJHtnfSBgKyhDPT09ITE/ImlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGVudmlyb25tZW50IjoiaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgYnVpbGQiKSksbz1lP2kubGVuZ3RoPjE/YHNpbmNlIDoKYCtpLm1hcCgkZSkuam9pbihgCmApOiIgIiskZShpWzBdKToiYXMgbm8gYWRhcHRlciBzcGVjaWZpZWQiO3Rocm93IG5ldyBwKCJUaGVyZSBpcyBubyBzdWl0YWJsZSBhZGFwdGVyIHRvIGRpc3BhdGNoIHRoZSByZXF1ZXN0ICIrbywiRVJSX05PVF9TVVBQT1JUIil9cmV0dXJuIHJ9LGFkYXB0ZXJzOiRBfTtmdW5jdGlvbiBBZShBKXtpZihBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxBLnNpZ25hbCYmQS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgTyhudWxsLEEpfWZ1bmN0aW9uIGhBKEEpe3JldHVybiBBZShBKSxBLmhlYWRlcnM9RC5mcm9tKEEuaGVhZGVycyksQS5kYXRhPXRBLmNhbGwoQSxBLnRyYW5zZm9ybVJlcXVlc3QpLFsicG9zdCIsInB1dCIsInBhdGNoIl0uaW5kZXhPZihBLm1ldGhvZCkhPT0tMSYmQS5oZWFkZXJzLnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLCExKSxtQS5nZXRBZGFwdGVyKEEuYWRhcHRlcnx8Vy5hZGFwdGVyKShBKS50aGVuKGZ1bmN0aW9uKHIpe3JldHVybiBBZShBKSxyLmRhdGE9dEEuY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2Usciksci5oZWFkZXJzPUQuZnJvbShyLmhlYWRlcnMpLHJ9LGZ1bmN0aW9uKHIpe3JldHVybiByQShyKXx8KEFlKEEpLHImJnIucmVzcG9uc2UmJihyLnJlc3BvbnNlLmRhdGE9dEEuY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2Usci5yZXNwb25zZSksci5yZXNwb25zZS5oZWFkZXJzPUQuZnJvbShyLnJlc3BvbnNlLmhlYWRlcnMpKSksUHJvbWlzZS5yZWplY3Qocil9KX12YXIgQXQ9QT0+QSBpbnN0YW5jZW9mIEQ/QS50b0pTT04oKTpBO2Z1bmN0aW9uIFQoQSxlKXtlPWV8fHt9O2xldCB0PXt9O2Z1bmN0aW9uIHIobCxzLGEpe3JldHVybiBJLmlzUGxhaW5PYmplY3QobCkmJkkuaXNQbGFpbk9iamVjdChzKT9JLm1lcmdlLmNhbGwoe2Nhc2VsZXNzOmF9LGwscyk6SS5pc1BsYWluT2JqZWN0KHMpP0kubWVyZ2Uoe30scyk6SS5pc0FycmF5KHMpP3Muc2xpY2UoKTpzfWZ1bmN0aW9uIG4obCxzLGEpe2lmKEkuaXNVbmRlZmluZWQocykpe2lmKCFJLmlzVW5kZWZpbmVkKGwpKXJldHVybiByKHZvaWQgMCxsLGEpfWVsc2UgcmV0dXJuIHIobCxzLGEpfWZ1bmN0aW9uIGkobCxzKXtpZighSS5pc1VuZGVmaW5lZChzKSlyZXR1cm4gcih2b2lkIDAscyl9ZnVuY3Rpb24gbyhsLHMpe2lmKEkuaXNVbmRlZmluZWQocykpe2lmKCFJLmlzVW5kZWZpbmVkKGwpKXJldHVybiByKHZvaWQgMCxsKX1lbHNlIHJldHVybiByKHZvaWQgMCxzKX1mdW5jdGlvbiBnKGwscyxhKXtpZihhIGluIGUpcmV0dXJuIHIobCxzKTtpZihhIGluIEEpcmV0dXJuIHIodm9pZCAwLGwpfWxldCBDPXt1cmw6aSxtZXRob2Q6aSxkYXRhOmksYmFzZVVSTDpvLHRyYW5zZm9ybVJlcXVlc3Q6byx0cmFuc2Zvcm1SZXNwb25zZTpvLHBhcmFtc1NlcmlhbGl6ZXI6byx0aW1lb3V0Om8sdGltZW91dE1lc3NhZ2U6byx3aXRoQ3JlZGVudGlhbHM6byx3aXRoWFNSRlRva2VuOm8sYWRhcHRlcjpvLHJlc3BvbnNlVHlwZTpvLHhzcmZDb29raWVOYW1lOm8seHNyZkhlYWRlck5hbWU6byxvblVwbG9hZFByb2dyZXNzOm8sb25Eb3dubG9hZFByb2dyZXNzOm8sZGVjb21wcmVzczpvLG1heENvbnRlbnRMZW5ndGg6byxtYXhCb2R5TGVuZ3RoOm8sYmVmb3JlUmVkaXJlY3Q6byx0cmFuc3BvcnQ6byxodHRwQWdlbnQ6byxodHRwc0FnZW50Om8sY2FuY2VsVG9rZW46byxzb2NrZXRQYXRoOm8scmVzcG9uc2VFbmNvZGluZzpvLHZhbGlkYXRlU3RhdHVzOmcsaGVhZGVyczoobCxzKT0+bihBdChsKSxBdChzKSwhMCl9O3JldHVybiBJLmZvckVhY2goT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxBLGUpKSxmdW5jdGlvbihzKXtsZXQgYT1DW3NdfHxuLEU9YShBW3NdLGVbc10scyk7SS5pc1VuZGVmaW5lZChFKSYmYSE9PWd8fCh0W3NdPUUpfSksdH12YXIgeUE9IjEuNi4yIjt2YXIgZWU9e307WyJvYmplY3QiLCJib29sZWFuIiwibnVtYmVyIiwiZnVuY3Rpb24iLCJzdHJpbmciLCJzeW1ib2wiXS5mb3JFYWNoKChBLGUpPT57ZWVbQV09ZnVuY3Rpb24ocil7cmV0dXJuIHR5cGVvZiByPT09QXx8ImEiKyhlPDE/Im4gIjoiICIpK0F9fSk7dmFyIGV0PXt9O2VlLnRyYW5zaXRpb25hbD1mdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbihpLG8pe3JldHVybiJbQXhpb3MgdiIreUErIl0gVHJhbnNpdGlvbmFsIG9wdGlvbiAnIitpKyInIitvKyhyPyIuICIrcjoiIil9cmV0dXJuKGksbyxnKT0+e2lmKGU9PT0hMSl0aHJvdyBuZXcgcChuKG8sIiBoYXMgYmVlbiByZW1vdmVkIisodD8iIGluICIrdDoiIikpLHAuRVJSX0RFUFJFQ0FURUQpO3JldHVybiB0JiYhZXRbb10mJihldFtvXT0hMCxjb25zb2xlLndhcm4obihvLCIgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2Iit0KyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLGU/ZShpLG8sZyk6ITB9fTtmdW5jdGlvbiBLcihBLGUsdCl7aWYodHlwZW9mIEEhPSJvYmplY3QiKXRocm93IG5ldyBwKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0IixwLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtsZXQgcj1PYmplY3Qua2V5cyhBKSxuPXIubGVuZ3RoO2Zvcig7bi0tID4wOyl7bGV0IGk9cltuXSxvPWVbaV07aWYobyl7bGV0IGc9QVtpXSxDPWc9PT12b2lkIDB8fG8oZyxpLEEpO2lmKEMhPT0hMCl0aHJvdyBuZXcgcCgib3B0aW9uICIraSsiIG11c3QgYmUgIitDLHAuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2NvbnRpbnVlfWlmKHQhPT0hMCl0aHJvdyBuZXcgcCgiVW5rbm93biBvcHRpb24gIitpLHAuRVJSX0JBRF9PUFRJT04pfX12YXIgd0E9e2Fzc2VydE9wdGlvbnM6S3IsdmFsaWRhdG9yczplZX07dmFyIFA9d0EudmFsaWRhdG9ycyxqPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuZGVmYXVsdHM9ZSx0aGlzLmludGVyY2VwdG9ycz17cmVxdWVzdDpuZXcgS0EscmVzcG9uc2U6bmV3IEtBfX1yZXF1ZXN0KGUsdCl7dHlwZW9mIGU9PSJzdHJpbmciPyh0PXR8fHt9LHQudXJsPWUpOnQ9ZXx8e30sdD1UKHRoaXMuZGVmYXVsdHMsdCk7bGV0e3RyYW5zaXRpb25hbDpyLHBhcmFtc1NlcmlhbGl6ZXI6bixoZWFkZXJzOml9PXQ7ciE9PXZvaWQgMCYmd0EuYXNzZXJ0T3B0aW9ucyhyLHtzaWxlbnRKU09OUGFyc2luZzpQLnRyYW5zaXRpb25hbChQLmJvb2xlYW4pLGZvcmNlZEpTT05QYXJzaW5nOlAudHJhbnNpdGlvbmFsKFAuYm9vbGVhbiksY2xhcmlmeVRpbWVvdXRFcnJvcjpQLnRyYW5zaXRpb25hbChQLmJvb2xlYW4pfSwhMSksbiE9bnVsbCYmKEkuaXNGdW5jdGlvbihuKT90LnBhcmFtc1NlcmlhbGl6ZXI9e3NlcmlhbGl6ZTpufTp3QS5hc3NlcnRPcHRpb25zKG4se2VuY29kZTpQLmZ1bmN0aW9uLHNlcmlhbGl6ZTpQLmZ1bmN0aW9ufSwhMCkpLHQubWV0aG9kPSh0Lm1ldGhvZHx8dGhpcy5kZWZhdWx0cy5tZXRob2R8fCJnZXQiKS50b0xvd2VyQ2FzZSgpO2xldCBvPWkmJkkubWVyZ2UoaS5jb21tb24saVt0Lm1ldGhvZF0pO2kmJkkuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSx1PT57ZGVsZXRlIGlbdV19KSx0LmhlYWRlcnM9RC5jb25jYXQobyxpKTtsZXQgZz1bXSxDPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbihjKXt0eXBlb2YgYy5ydW5XaGVuPT0iZnVuY3Rpb24iJiZjLnJ1bldoZW4odCk9PT0hMXx8KEM9QyYmYy5zeW5jaHJvbm91cyxnLnVuc2hpZnQoYy5mdWxmaWxsZWQsYy5yZWplY3RlZCkpfSk7bGV0IGw9W107dGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihjKXtsLnB1c2goYy5mdWxmaWxsZWQsYy5yZWplY3RlZCl9KTtsZXQgcyxhPTAsRTtpZighQyl7bGV0IHU9W2hBLmJpbmQodGhpcyksdm9pZCAwXTtmb3IodS51bnNoaWZ0LmFwcGx5KHUsZyksdS5wdXNoLmFwcGx5KHUsbCksRT11Lmxlbmd0aCxzPVByb21pc2UucmVzb2x2ZSh0KTthPEU7KXM9cy50aGVuKHVbYSsrXSx1W2ErK10pO3JldHVybiBzfUU9Zy5sZW5ndGg7bGV0IEI9dDtmb3IoYT0wO2E8RTspe2xldCB1PWdbYSsrXSxjPWdbYSsrXTt0cnl7Qj11KEIpfWNhdGNoKGYpe2MuY2FsbCh0aGlzLGYpO2JyZWFrfX10cnl7cz1oQS5jYWxsKHRoaXMsQil9Y2F0Y2godSl7cmV0dXJuIFByb21pc2UucmVqZWN0KHUpfWZvcihhPTAsRT1sLmxlbmd0aDthPEU7KXM9cy50aGVuKGxbYSsrXSxsW2ErK10pO3JldHVybiBzfWdldFVyaShlKXtlPVQodGhpcy5kZWZhdWx0cyxlKTtsZXQgdD1pQShlLmJhc2VVUkwsZS51cmwpO3JldHVybiBBQSh0LGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplcil9fTtJLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyJdLGZ1bmN0aW9uKGUpe2oucHJvdG90eXBlW2VdPWZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMucmVxdWVzdChUKHJ8fHt9LHttZXRob2Q6ZSx1cmw6dCxkYXRhOihyfHx7fSkuZGF0YX0pKX19KTtJLmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIpe3JldHVybiBmdW5jdGlvbihpLG8sZyl7cmV0dXJuIHRoaXMucmVxdWVzdChUKGd8fHt9LHttZXRob2Q6ZSxoZWFkZXJzOnI/eyJDb250ZW50LVR5cGUiOiJtdWx0aXBhcnQvZm9ybS1kYXRhIn06e30sdXJsOmksZGF0YTpvfSkpfX1qLnByb3RvdHlwZVtlXT10KCksai5wcm90b3R5cGVbZSsiRm9ybSJdPXQoITApfSk7dmFyIG5BPWo7dmFyIHRlPWNsYXNzIEF7Y29uc3RydWN0b3IoZSl7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO2xldCB0O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihpKXt0PWl9KTtsZXQgcj10aGlzO3RoaXMucHJvbWlzZS50aGVuKG49PntpZighci5fbGlzdGVuZXJzKXJldHVybjtsZXQgaT1yLl9saXN0ZW5lcnMubGVuZ3RoO2Zvcig7aS0tID4wOylyLl9saXN0ZW5lcnNbaV0obik7ci5fbGlzdGVuZXJzPW51bGx9KSx0aGlzLnByb21pc2UudGhlbj1uPT57bGV0IGksbz1uZXcgUHJvbWlzZShnPT57ci5zdWJzY3JpYmUoZyksaT1nfSkudGhlbihuKTtyZXR1cm4gby5jYW5jZWw9ZnVuY3Rpb24oKXtyLnVuc3Vic2NyaWJlKGkpfSxvfSxlKGZ1bmN0aW9uKGksbyxnKXtyLnJlYXNvbnx8KHIucmVhc29uPW5ldyBPKGksbyxnKSx0KHIucmVhc29uKSl9KX10aHJvd0lmUmVxdWVzdGVkKCl7aWYodGhpcy5yZWFzb24pdGhyb3cgdGhpcy5yZWFzb259c3Vic2NyaWJlKGUpe2lmKHRoaXMucmVhc29uKXtlKHRoaXMucmVhc29uKTtyZXR1cm59dGhpcy5fbGlzdGVuZXJzP3RoaXMuX2xpc3RlbmVycy5wdXNoKGUpOnRoaXMuX2xpc3RlbmVycz1bZV19dW5zdWJzY3JpYmUoZSl7aWYoIXRoaXMuX2xpc3RlbmVycylyZXR1cm47bGV0IHQ9dGhpcy5fbGlzdGVuZXJzLmluZGV4T2YoZSk7dCE9PS0xJiZ0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKHQsMSl9c3RhdGljIHNvdXJjZSgpe2xldCBlO3JldHVybnt0b2tlbjpuZXcgQShmdW5jdGlvbihuKXtlPW59KSxjYW5jZWw6ZX19fSx0dD10ZTtmdW5jdGlvbiByZShBKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIEEuYXBwbHkobnVsbCx0KX19ZnVuY3Rpb24gaWUoQSl7cmV0dXJuIEkuaXNPYmplY3QoQSkmJkEuaXNBeGlvc0Vycm9yPT09ITB9dmFyIG5lPXtDb250aW51ZToxMDAsU3dpdGNoaW5nUHJvdG9jb2xzOjEwMSxQcm9jZXNzaW5nOjEwMixFYXJseUhpbnRzOjEwMyxPazoyMDAsQ3JlYXRlZDoyMDEsQWNjZXB0ZWQ6MjAyLE5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbjoyMDMsTm9Db250ZW50OjIwNCxSZXNldENvbnRlbnQ6MjA1LFBhcnRpYWxDb250ZW50OjIwNixNdWx0aVN0YXR1czoyMDcsQWxyZWFkeVJlcG9ydGVkOjIwOCxJbVVzZWQ6MjI2LE11bHRpcGxlQ2hvaWNlczozMDAsTW92ZWRQZXJtYW5lbnRseTozMDEsRm91bmQ6MzAyLFNlZU90aGVyOjMwMyxOb3RNb2RpZmllZDozMDQsVXNlUHJveHk6MzA1LFVudXNlZDozMDYsVGVtcG9yYXJ5UmVkaXJlY3Q6MzA3LFBlcm1hbmVudFJlZGlyZWN0OjMwOCxCYWRSZXF1ZXN0OjQwMCxVbmF1dGhvcml6ZWQ6NDAxLFBheW1lbnRSZXF1aXJlZDo0MDIsRm9yYmlkZGVuOjQwMyxOb3RGb3VuZDo0MDQsTWV0aG9kTm90QWxsb3dlZDo0MDUsTm90QWNjZXB0YWJsZTo0MDYsUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkOjQwNyxSZXF1ZXN0VGltZW91dDo0MDgsQ29uZmxpY3Q6NDA5LEdvbmU6NDEwLExlbmd0aFJlcXVpcmVkOjQxMSxQcmVjb25kaXRpb25GYWlsZWQ6NDEyLFBheWxvYWRUb29MYXJnZTo0MTMsVXJpVG9vTG9uZzo0MTQsVW5zdXBwb3J0ZWRNZWRpYVR5cGU6NDE1LFJhbmdlTm90U2F0aXNmaWFibGU6NDE2LEV4cGVjdGF0aW9uRmFpbGVkOjQxNyxJbUFUZWFwb3Q6NDE4LE1pc2RpcmVjdGVkUmVxdWVzdDo0MjEsVW5wcm9jZXNzYWJsZUVudGl0eTo0MjIsTG9ja2VkOjQyMyxGYWlsZWREZXBlbmRlbmN5OjQyNCxUb29FYXJseTo0MjUsVXBncmFkZVJlcXVpcmVkOjQyNixQcmVjb25kaXRpb25SZXF1aXJlZDo0MjgsVG9vTWFueVJlcXVlc3RzOjQyOSxSZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2U6NDMxLFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zOjQ1MSxJbnRlcm5hbFNlcnZlckVycm9yOjUwMCxOb3RJbXBsZW1lbnRlZDo1MDEsQmFkR2F0ZXdheTo1MDIsU2VydmljZVVuYXZhaWxhYmxlOjUwMyxHYXRld2F5VGltZW91dDo1MDQsSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQ6NTA1LFZhcmlhbnRBbHNvTmVnb3RpYXRlczo1MDYsSW5zdWZmaWNpZW50U3RvcmFnZTo1MDcsTG9vcERldGVjdGVkOjUwOCxOb3RFeHRlbmRlZDo1MTAsTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6NTExfTtPYmplY3QuZW50cmllcyhuZSkuZm9yRWFjaCgoW0EsZV0pPT57bmVbZV09QX0pO3ZhciBydD1uZTtmdW5jdGlvbiBpdChBKXtsZXQgZT1uZXcgbkEoQSksdD1aKG5BLnByb3RvdHlwZS5yZXF1ZXN0LGUpO3JldHVybiBJLmV4dGVuZCh0LG5BLnByb3RvdHlwZSxlLHthbGxPd25LZXlzOiEwfSksSS5leHRlbmQodCxlLG51bGwse2FsbE93bktleXM6ITB9KSx0LmNyZWF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gaXQoVChBLG4pKX0sdH12YXIgbT1pdChXKTttLkF4aW9zPW5BO20uQ2FuY2VsZWRFcnJvcj1PO20uQ2FuY2VsVG9rZW49dHQ7bS5pc0NhbmNlbD1yQTttLlZFUlNJT049eUE7bS50b0Zvcm1EYXRhPXg7bS5BeGlvc0Vycm9yPXA7bS5DYW5jZWw9bS5DYW5jZWxlZEVycm9yO20uYWxsPWZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChlKX07bS5zcHJlYWQ9cmU7bS5pc0F4aW9zRXJyb3I9aWU7bS5tZXJnZUNvbmZpZz1UO20uQXhpb3NIZWFkZXJzPUQ7bS5mb3JtVG9KU09OPUE9PnBBKEkuaXNIVE1MRm9ybShBKT9uZXcgRm9ybURhdGEoQSk6QSk7bS5nZXRBZGFwdGVyPW1BLmdldEFkYXB0ZXI7bS5IdHRwU3RhdHVzQ29kZT1ydDttLmRlZmF1bHQ9bTt2YXIgXz1tO3ZhcntBeGlvczpHYSxBeGlvc0Vycm9yOlRhLENhbmNlbGVkRXJyb3I6TGEsaXNDYW5jZWw6eGEsQ2FuY2VsVG9rZW46T2EsVkVSU0lPTjpQYSxhbGw6SmEsQ2FuY2VsOkhhLGlzQXhpb3NFcnJvcjpNYSxzcHJlYWQ6WWEsdG9Gb3JtRGF0YTpxYSxBeGlvc0hlYWRlcnM6S2EsSHR0cFN0YXR1c0NvZGU6V2EsZm9ybVRvSlNPTjp2YSxnZXRBZGFwdGVyOmphLG1lcmdlQ29uZmlnOl9hfT1fO2FzeW5jIGZ1bmN0aW9uIFdyKEEsZSl7bGV0IHQ9QSxyPW51bGw7aWYodD09PW51bGwpcj1uZXcgV29ya2VyKG5ldyBVUkwoIi4vd2ViLXdvcmtlcnMvaXRrLXdhc20tcGlwZWxpbmUud29ya2VyLmpzIixpbXBvcnQubWV0YS51cmwpLHt0eXBlOiJtb2R1bGUifSk7ZWxzZSBpZih0LnN0YXJ0c1dpdGgoImh0dHAiKSl7bGV0IG49YXdhaXQgXy5nZXQodCx7cmVzcG9uc2VUeXBlOiJibG9iIixwYXJhbXM6ZX0pLGk9VVJMLmNyZWF0ZU9iamVjdFVSTChuLmRhdGEpO3I9bmV3IFdvcmtlcihpLHt0eXBlOiJtb2R1bGUifSl9ZWxzZSByPW5ldyBXb3JrZXIodCx7dHlwZToibW9kdWxlIn0pO3JldHVybiByfXZhciBvQT1XcjtmdW5jdGlvbiBudChBKXtsZXQgZT1PQShBKSx0PUE7cmV0dXJuIHQudGVybWluYXRlZD0hMSx0LndvcmtlclByb3h5PWUsdC5vcmlnaW5hbFRlcm1pbmF0ZT10LnRlcm1pbmF0ZSx0LnRlcm1pbmF0ZT0oKT0+e3QudGVybWluYXRlZD0hMCx0LndvcmtlclByb3h5W3hBXSgpLHQub3JpZ2luYWxUZXJtaW5hdGUoKX0se3dvcmtlclByb3h5OmUsd29ya2VyOnR9fWFzeW5jIGZ1bmN0aW9uIHZyKEEsZSx0KXtsZXQgcjtpZihBIT1udWxsKXtsZXQgaT1BO3JldHVybiBpLndvcmtlclByb3h5IT09dm9pZCAwPyhyPWkud29ya2VyUHJveHkse3dvcmtlclByb3h5OnIsd29ya2VyOml9KTpudChBKX1sZXQgbj1hd2FpdCBvQShlLHQpO3JldHVybiBudChuKX12YXIgb3Q9dnI7YXN5bmMgZnVuY3Rpb24ganIoQSxlLHQpe2xldCByPSJ1bmtub3duIjt0eXBlb2YgQSE9InN0cmluZyI/cj1BLmhyZWY6QS5zdGFydHNXaXRoKCJodHRwIik/cj1BOnI9dHlwZW9mIGU8InUiP2Ake2V9LyR7QX1gOkEsci5lbmRzV2l0aCgiLmpzIikmJihyPXIuc3Vic3RyaW5nKDAsci5sZW5ndGgtMykpLHIuZW5kc1dpdGgoIi53YXNtIikmJihyPXIuc3Vic3RyaW5nKDAsci5sZW5ndGgtNSkpO2xldCBuPWAke3J9Lndhc21gLG89KGF3YWl0IF8uZ2V0KG4se3Jlc3BvbnNlVHlwZToiYXJyYXlidWZmZXIiLHBhcmFtczp0fSkpLmRhdGE7cmV0dXJuKGF3YWl0IGltcG9ydChgJHtyfS5qc2ApKS5kZWZhdWx0KHt3YXNtQmluYXJ5Om99KX12YXIgYXQ9anI7dmFyIHN0PWFzeW5jKCk9PldlYkFzc2VtYmx5LnZhbGlkYXRlKG5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDUsMSw5NiwwLDEsMTIzLDMsMiwxLDAsMTAsMTAsMSw4LDAsNjUsMCwyNTMsMTUsMjUzLDk4LDExXSkpO3ZhciBsdD10eXBlb2YgZ2xvYmFsVGhpcy5TaGFyZWRBcnJheUJ1ZmZlcj09ImZ1bmN0aW9uIixJdD1uZXcgVGV4dEVuY29kZXIsZ3Q9bmV3IFRleHREZWNvZGVyKCJ1dGYtOCIpO2Z1bmN0aW9uIF9yKEEsZSl7bGV0IHQ9e2ZsYWdzOiJyIixlbmNvZGluZzoiYmluYXJ5In0scj1BLmZzX29wZW4oZSx0LmZsYWdzKSxpPUEuZnNfc3RhdChlKS5zaXplLG89bnVsbDtsdD9vPW5ldyBTaGFyZWRBcnJheUJ1ZmZlcihpKTpvPW5ldyBBcnJheUJ1ZmZlcihpKTtsZXQgZz1uZXcgVWludDhBcnJheShvKTtyZXR1cm4gQS5mc19yZWFkKHIsZywwLGksMCksQS5mc19jbG9zZShyKSxnfWZ1bmN0aW9uIEJ0KEEsZSx0KXtsZXQgcj1udWxsO2x0P3I9bmV3IFNoYXJlZEFycmF5QnVmZmVyKHQpOnI9bmV3IEFycmF5QnVmZmVyKHQpO2xldCBuPW5ldyBVaW50OEFycmF5KHIpLGk9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLGUsdCk7cmV0dXJuIG4uc2V0KGkpLG59ZnVuY3Rpb24geShBLGUsdCxyKXtsZXQgbj0wO3JldHVybiBlIT09bnVsbCYmKG49QS5jY2FsbCgiaXRrX3dhc21faW5wdXRfYXJyYXlfYWxsb2MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsdCxyLGUuYnVmZmVyLmJ5dGVMZW5ndGhdKSxBLkhFQVBVOC5zZXQobmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpLG4pKSxufWZ1bmN0aW9uIHooQSxlLHQpe2xldCByPUpTT04uc3RyaW5naWZ5KGUpLG49QS5jY2FsbCgiaXRrX3dhc21faW5wdXRfanNvbl9hbGxvYyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCx0LHIubGVuZ3RoXSk7QS53cml0ZUFzY2lpVG9NZW1vcnkocixuLCExKX1mdW5jdGlvbiBSKEEsZSx0LHIpe2xldCBuPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLGUsdF0pLGk9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsZSx0XSksbz1CdChBLG4saSk7cmV0dXJuIEwocixvLmJ1ZmZlcil9ZnVuY3Rpb24gb2UoQSxlKXtsZXQgdD1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfanNvbl9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciJdLFswLGVdKSxyPUEuQXNjaWlUb1N0cmluZyh0KTtyZXR1cm4gSlNPTi5wYXJzZShyKX1mdW5jdGlvbiB6cihBLGUsdCxyKXtyIT1udWxsJiZyLmxlbmd0aD4wJiZyLmZvckVhY2goZnVuY3Rpb24obCxzKXtzd2l0Y2gobC50eXBlKXtjYXNlIFEuVGV4dFN0cmVhbTp7bGV0IGE9SXQuZW5jb2RlKGwuZGF0YS5kYXRhKSxFPXkoQSxhLHMsMCksQj17c2l6ZTphLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtFfWB9O3ooQSxCLHMpO2JyZWFrfWNhc2UgUS5Kc29uQ29tcGF0aWJsZTp7bGV0IGE9SXQuZW5jb2RlKEpTT04uc3RyaW5naWZ5KGwuZGF0YSkpLEU9eShBLGEscywwKSxCPXtzaXplOmEuYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0V9YH07eihBLEIscyk7YnJlYWt9Y2FzZSBRLkJpbmFyeVN0cmVhbTp7bGV0IGE9bC5kYXRhLmRhdGEsRT15KEEsYSxzLDApLEI9e3NpemU6YS5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7RX1gfTt6KEEsQixzKTticmVha31jYXNlIFEuVGV4dEZpbGU6e0EuZnNfd3JpdGVGaWxlKGwuZGF0YS5wYXRoLGwuZGF0YS5kYXRhKTticmVha31jYXNlIFEuQmluYXJ5RmlsZTp7QS5mc193cml0ZUZpbGUobC5kYXRhLnBhdGgsbC5kYXRhLmRhdGEpO2JyZWFrfWNhc2UgUS5JbWFnZTp7bGV0IGE9bC5kYXRhLEU9eShBLGEuZGF0YSxzLDApLEI9eShBLGEuZGlyZWN0aW9uLHMsMSksdT10eXBlb2YgYS5tZXRhZGF0YT8uZW50cmllczwidSI/SlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbShhLm1ldGFkYXRhLmVudHJpZXMoKSkpOiJbXSIsYz17aW1hZ2VUeXBlOmEuaW1hZ2VUeXBlLG5hbWU6YS5uYW1lLG9yaWdpbjphLm9yaWdpbixzcGFjaW5nOmEuc3BhY2luZyxkaXJlY3Rpb246YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtCfWAsc2l6ZTphLnNpemUsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0V9YCxtZXRhZGF0YTp1fTt6KEEsYyxzKTticmVha31jYXNlIFEuTWVzaDp7bGV0IGE9bC5kYXRhLEU9eShBLGEucG9pbnRzLHMsMCksQj15KEEsYS5jZWxscyxzLDEpLHU9eShBLGEucG9pbnREYXRhLHMsMiksYz15KEEsYS5jZWxsRGF0YSxzLDMpLGY9e21lc2hUeXBlOmEubWVzaFR5cGUsbmFtZTphLm5hbWUsbnVtYmVyT2ZQb2ludHM6YS5udW1iZXJPZlBvaW50cyxwb2ludHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtFfWAsbnVtYmVyT2ZDZWxsczphLm51bWJlck9mQ2VsbHMsY2VsbHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtCfWAsY2VsbEJ1ZmZlclNpemU6YS5jZWxsQnVmZmVyU2l6ZSxudW1iZXJPZlBvaW50UGl4ZWxzOmEubnVtYmVyT2ZQb2ludFBpeGVscyxwb2ludERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHt1fWAsbnVtYmVyT2ZDZWxsUGl4ZWxzOmEubnVtYmVyT2ZDZWxsUGl4ZWxzLGNlbGxEYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gfTt6KEEsZixzKTticmVha31jYXNlIFEuUG9seURhdGE6e2xldCBhPWwuZGF0YSxFPXkoQSxhLnBvaW50cyxzLDApLEI9eShBLGEudmVydGljZXMscywxKSx1PXkoQSxhLmxpbmVzLHMsMiksYz15KEEsYS5wb2x5Z29ucyxzLDMpLGY9eShBLGEudHJpYW5nbGVTdHJpcHMscyw0KSxkPXkoQSxhLnBvaW50RGF0YSxzLDUpLGs9eShBLGEucG9pbnREYXRhLHMsNiksUz17cG9seURhdGFUeXBlOmEucG9seURhdGFUeXBlLG5hbWU6YS5uYW1lLG51bWJlck9mUG9pbnRzOmEubnVtYmVyT2ZQb2ludHMscG9pbnRzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7RX1gLHZlcnRpY2VzQnVmZmVyU2l6ZTphLnZlcnRpY2VzQnVmZmVyU2l6ZSx2ZXJ0aWNlczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0J9YCxsaW5lc0J1ZmZlclNpemU6YS5saW5lc0J1ZmZlclNpemUsbGluZXM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHt1fWAscG9seWdvbnNCdWZmZXJTaXplOmEucG9seWdvbnNCdWZmZXJTaXplLHBvbHlnb25zOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gLHRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZTphLnRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZSx0cmlhbmdsZVN0cmlwczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YCxudW1iZXJPZlBvaW50UGl4ZWxzOmEubnVtYmVyT2ZQb2ludFBpeGVscyxwb2ludERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtkfWAsbnVtYmVyT2ZDZWxsUGl4ZWxzOmEubnVtYmVyT2ZDZWxsUGl4ZWxzLGNlbGxEYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7a31gfTt6KEEsUyxzKTticmVha31kZWZhdWx0OnRocm93IEVycm9yKCJVbnN1cHBvcnRlZCBpbnB1dCBJbnRlcmZhY2VUeXBlIil9fSksQS5yZXNldE1vZHVsZVN0ZG91dCgpLEEucmVzZXRNb2R1bGVTdGRlcnIoKTtsZXQgbj1BLnN0YWNrU2F2ZSgpLGk9MDt0cnl7aT1BLmNhbGxNYWluKGUuc2xpY2UoKSl9Y2F0Y2gobCl7dGhyb3cgdHlwZW9mIGw9PSJudW1iZXIiJiYoY29uc29sZS5sb2coIkV4Y2VwdGlvbiB3aGlsZSBydW5uaW5nIHBpcGVsaW5lOiIpLGNvbnNvbGUubG9nKCJzdGRvdXQ6IixBLmdldE1vZHVsZVN0ZG91dCgpKSxjb25zb2xlLmVycm9yKCJzdGRlcnI6IixBLmdldE1vZHVsZVN0ZGVycigpKSx0eXBlb2YgQS5nZXRFeGNlcHRpb25NZXNzYWdlPCJ1Ij9jb25zb2xlLmVycm9yKCJleGNlcHRpb246IixBLmdldEV4Y2VwdGlvbk1lc3NhZ2UobCkpOmNvbnNvbGUuZXJyb3IoIkJ1aWxkIG1vZHVsZSBpbiBEZWJ1ZyBtb2RlIGZvciBleGNlcHRpb24gbWVzc2FnZSBpbmZvcm1hdGlvbi4iKSksbH1maW5hbGx5e0Euc3RhY2tSZXN0b3JlKG4pfWxldCBvPUEuZ2V0TW9kdWxlU3Rkb3V0KCksZz1BLmdldE1vZHVsZVN0ZGVycigpLEM9W107cmV0dXJuIHQhPW51bGwmJnQubGVuZ3RoPjAmJmk9PT0wJiZ0LmZvckVhY2goZnVuY3Rpb24obCxzKXtsZXQgYT1udWxsO3N3aXRjaChsLnR5cGUpe2Nhc2UgUS5UZXh0U3RyZWFtOntsZXQgQj1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxzLDBdKSx1PUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHMsMF0pLGM9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLEIsdSk7YT17ZGF0YTpndC5kZWNvZGUoYyl9O2JyZWFrfWNhc2UgUS5Kc29uQ29tcGF0aWJsZTp7bGV0IEI9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAscywwXSksdT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxzLDBdKSxjPW5ldyBVaW50OEFycmF5KEEuSEVBUFU4LmJ1ZmZlcixCLHUpO2E9SlNPTi5wYXJzZShndC5kZWNvZGUoYykpO2JyZWFrfWNhc2UgUS5CaW5hcnlTdHJlYW06e2xldCBCPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHMsMF0pLHU9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAscywwXSk7YT17ZGF0YTpCdChBLEIsdSl9O2JyZWFrfWNhc2UgUS5UZXh0RmlsZTp7YT17cGF0aDpsLmRhdGEucGF0aCxkYXRhOkEuZnNfcmVhZEZpbGUobC5kYXRhLnBhdGgse2VuY29kaW5nOiJ1dGY4In0pfTticmVha31jYXNlIFEuQmluYXJ5RmlsZTp7YT17cGF0aDpsLmRhdGEucGF0aCxkYXRhOl9yKEEsbC5kYXRhLnBhdGgpfTticmVha31jYXNlIFEuSW1hZ2U6e2xldCBCPW9lKEEscyk7Qi5kYXRhPVIoQSxzLDAsQi5pbWFnZVR5cGUuY29tcG9uZW50VHlwZSksQi5kaXJlY3Rpb249UihBLHMsMSxNLkZsb2F0NjQpLEIubWV0YWRhdGE9bmV3IE1hcChCLm1ldGFkYXRhKSxhPUI7YnJlYWt9Y2FzZSBRLk1lc2g6e2xldCBCPW9lKEEscyk7Qi5udW1iZXJPZlBvaW50cz4wP0IucG9pbnRzPVIoQSxzLDAsQi5tZXNoVHlwZS5wb2ludENvbXBvbmVudFR5cGUpOkIucG9pbnRzPUwoQi5tZXNoVHlwZS5wb2ludENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxCLm51bWJlck9mQ2VsbHM+MD9CLmNlbGxzPVIoQSxzLDEsQi5tZXNoVHlwZS5jZWxsQ29tcG9uZW50VHlwZSk6Qi5jZWxscz1MKEIubWVzaFR5cGUuY2VsbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxCLm51bWJlck9mUG9pbnRQaXhlbHM+MD9CLnBvaW50RGF0YT1SKEEscywyLEIubWVzaFR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUpOkIucG9pbnREYXRhPUwoQi5tZXNoVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEIubnVtYmVyT2ZDZWxsUGl4ZWxzPjA/Qi5jZWxsRGF0YT1SKEEscywzLEIubWVzaFR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSk6Qi5jZWxsRGF0YT1MKEIubWVzaFR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLGE9QjticmVha31jYXNlIFEuUG9seURhdGE6e2xldCBCPW9lKEEscyk7Qi5udW1iZXJPZlBvaW50cz4wP0IucG9pbnRzPVIoQSxzLDAsTS5GbG9hdDMyKTpCLnBvaW50cz1uZXcgRmxvYXQzMkFycmF5LEIudmVydGljZXNCdWZmZXJTaXplPjA/Qi52ZXJ0aWNlcz1SKEEscywxLGguVUludDMyKTpCLnZlcnRpY2VzPW5ldyBVaW50MzJBcnJheSxCLmxpbmVzQnVmZmVyU2l6ZT4wP0IubGluZXM9UihBLHMsMixoLlVJbnQzMik6Qi5saW5lcz1uZXcgVWludDMyQXJyYXksQi5wb2x5Z29uc0J1ZmZlclNpemU+MD9CLnBvbHlnb25zPVIoQSxzLDMsaC5VSW50MzIpOkIucG9seWdvbnM9bmV3IFVpbnQzMkFycmF5LEIudHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplPjA/Qi50cmlhbmdsZVN0cmlwcz1SKEEscyw0LGguVUludDMyKTpCLnRyaWFuZ2xlU3RyaXBzPW5ldyBVaW50MzJBcnJheSxCLm51bWJlck9mUG9pbnRQaXhlbHM+MD9CLnBvaW50RGF0YT1SKEEscyw1LEIucG9seURhdGFUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlKTpCLnBvaW50RGF0YT1MKEIucG9seURhdGFUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksQi5udW1iZXJPZkNlbGxQaXhlbHM+MD9CLmNlbGxEYXRhPVIoQSxzLDYsQi5wb2x5RGF0YVR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSk6Qi5jZWxsRGF0YT1MKEIucG9seURhdGFUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxhPUI7YnJlYWt9ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5zdXBwb3J0ZWQgb3V0cHV0IEludGVyZmFjZVR5cGUiKX1sZXQgRT17dHlwZTpsLnR5cGUsZGF0YTphfTtDLnB1c2goRSl9KSx7cmV0dXJuVmFsdWU6aSxzdGRvdXQ6byxzdGRlcnI6ZyxvdXRwdXRzOkN9fXZhciBDdD16cjt2YXIgVnI9dHlwZW9mIGdsb2JhbFRoaXMuU2hhcmVkQXJyYXlCdWZmZXI8InUiO2Z1bmN0aW9uIFpyKEEsZSl7aWYoQT09bnVsbClyZXR1cm5bXTtsZXQgdD1bXTtmb3IobGV0IHI9MDtyPEEubGVuZ3RoO3IrKyl7bGV0IG49WHIoQVtyXSxlKTtuIT09bnVsbCYmdC5wdXNoKG4pfXJldHVybiB0fWZ1bmN0aW9uIFhyKEEsZSl7aWYoQT09bnVsbClyZXR1cm4gbnVsbDtsZXQgdD1udWxsO3JldHVybiBBLmJ1ZmZlciE9PXZvaWQgMD90PUEuYnVmZmVyOkEuYnl0ZUxlbmd0aCE9PXZvaWQgMCYmKHQ9QSksVnImJnQgaW5zdGFuY2VvZiBTaGFyZWRBcnJheUJ1ZmZlcj9udWxsOmU/dDp0LnNsaWNlKDApfXZhciBjdD1acjtmdW5jdGlvbiAkcihBKXtyZXR1cm5bQS5kYXRhLEEuZGlyZWN0aW9uXX12YXIgdXQ9JHI7ZnVuY3Rpb24gQWkoQSl7cmV0dXJuW0EucG9pbnRzLEEucG9pbnREYXRhLEEuY2VsbHMsQS5jZWxsRGF0YV19dmFyIEV0PUFpO2Z1bmN0aW9uIGVpKEEpe3JldHVybltBLnBvaW50cyxBLnZlcnRpY2VzLEEubGluZXMsQS5wb2x5Z29ucyxBLnRyaWFuZ2xlU3RyaXBzLEEucG9pbnREYXRhLEEuY2VsbERhdGFdfXZhciBRdD1laTt2YXIgdGk7ZnVuY3Rpb24gREEoKXtyZXR1cm4gdGl9dmFyIHJpO2Z1bmN0aW9uIGZ0KCl7cmV0dXJuIHJpfXZhciBpaTtmdW5jdGlvbiBTQSgpe3JldHVybiBpaX12YXIgYWU9bmV3IE1hcDtmdW5jdGlvbiBuaSgpe2xldCBBPVNBKCk7cmV0dXJuIHR5cGVvZiBBPiJ1IiYmKEE9bnVsbCksQX1mdW5jdGlvbiBwdCgpe2xldCBBPURBKCk7cmV0dXJuIHR5cGVvZiBBPiJ1IiYmKEE9bmV3IFVSTCgiL3BpcGVsaW5lcyIsZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luKS5ocmVmKSxBfWZ1bmN0aW9uIEZBKCl7bGV0IEE9ZnQoKTtyZXR1cm4gdHlwZW9mIEE+InUiJiYoQT17fSksQX1hc3luYyBmdW5jdGlvbiBvaShBLGUsdCl7bGV0IHI9QSxuPUE7aWYodHlwZW9mIEEhPSJzdHJpbmciJiYocj1uZXcgVVJMKEEuaHJlZiksbj1yLmhyZWYpLGFlLmhhcyhuKSlyZXR1cm4gYWUuZ2V0KG4pO3tsZXQgaT1hd2FpdCBhdChBLGU/LnRvU3RyaW5nKCk/P3B0KCksdD8/RkEoKSk7cmV0dXJuIGFlLnNldChuLGkpLGl9fWFzeW5jIGZ1bmN0aW9uIGFpKEEsZSx0LHIsbil7aWYoIWF3YWl0IHN0KCkpe2xldCBmPSJXZWJBc3NlbWJseSBTSU1EIHN1cHBvcnQgaXMgcmVxdWlyZWQgLS0gcGxlYXNlIHVwZGF0ZSB5b3VyIGJyb3dzZXIuIjt0aHJvdyBhbGVydChmKSxuZXcgRXJyb3IoZil9bGV0IGk9bj8ud2ViV29ya2VyPz9udWxsO2lmKGk9PT0hMSl7bGV0IGY9YXdhaXQgb2koQS50b1N0cmluZygpLG4/LnBpcGVsaW5lQmFzZVVybCxuPy5waXBlbGluZVF1ZXJ5UGFyYW1zPz9GQSgpKTtyZXR1cm4gQ3QoZixlLHQscil9bGV0IG89aSxnPW4/LnBpcGVsaW5lV29ya2VyVXJsPz9uaSgpLEM9dHlwZW9mIGchPSJzdHJpbmciJiZ0eXBlb2YgZz8uaHJlZjwidSI/Zy5ocmVmOmcse3dvcmtlclByb3h5Omwsd29ya2VyOnN9PWF3YWl0IG90KG8sQyxuPy5waXBlbGluZVF1ZXJ5UGFyYW1zPz9GQSgpKTtvPXM7bGV0IGE9W107ciE9bnVsbCYmci5sZW5ndGg+MCYmci5mb3JFYWNoKGZ1bmN0aW9uKGYpe2lmKGYudHlwZT09PVEuQmluYXJ5U3RyZWFtKXtsZXQgZD1mLmRhdGEuZGF0YTthLnB1c2goZCl9ZWxzZSBpZihmLnR5cGU9PT1RLkJpbmFyeUZpbGUpe2xldCBkPWYuZGF0YS5kYXRhO2EucHVzaChkKX1lbHNlIGlmKGYudHlwZT09PVEuSW1hZ2Upe2xldCBkPWYuZGF0YTtkLmRhdGEhPT1udWxsJiZhLnB1c2goLi4udXQoZCkpfWVsc2UgaWYoZi50eXBlPT09US5NZXNoKXtsZXQgZD1mLmRhdGE7YS5wdXNoKC4uLkV0KGQpKX1lbHNlIGlmKGYudHlwZT09PVEuUG9seURhdGEpe2xldCBkPWYuZGF0YTthLnB1c2goLi4uUXQoZCkpfX0pO2xldCBFPW4/LnBpcGVsaW5lQmFzZVVybD8/cHQoKSxCPXR5cGVvZiBFIT0ic3RyaW5nIiYmdHlwZW9mIEU/LmhyZWY8InUiP0UuaHJlZjpFLHU9ciE9bnVsbD9QQShyLGN0KGEsbj8ubm9Db3B5KSk6bnVsbCxjPWF3YWl0IGwucnVuUGlwZWxpbmUoQS50b1N0cmluZygpLEIsZSx0LHUsbj8ucGlwZWxpbmVRdWVyeVBhcmFtcz8/RkEoKSk7cmV0dXJue3JldHVyblZhbHVlOmMucmV0dXJuVmFsdWUsc3Rkb3V0OmMuc3Rkb3V0LHN0ZGVycjpjLnN0ZGVycixvdXRwdXRzOmMub3V0cHV0cyx3ZWJXb3JrZXI6b319dmFyIGI9YWk7dmFyIHNpPW51bGw7ZnVuY3Rpb24gZHQoKXtyZXR1cm4gc2l9dmFyIHNlLElpPWBodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpdGstd2FzbS9kaWNvbUAke2tBfS9kaXN0L3BpcGVsaW5lc2A7ZnVuY3Rpb24gUHMoQSl7c2U9QX1mdW5jdGlvbiBOKCl7aWYodHlwZW9mIHNlPCJ1IilyZXR1cm4gc2U7bGV0IEE9REEoKTtyZXR1cm4gdHlwZW9mIEE8InUiP0E6SWl9dmFyIEllLGdpPW51bGw7ZnVuY3Rpb24gbXQoQSl7SWU9QX1mdW5jdGlvbiBGKCl7aWYodHlwZW9mIEllPCJ1IilyZXR1cm4gSWU7bGV0IEE9U0EoKTtyZXR1cm4gdHlwZW9mIEE8InUiP0E6Z2l9dmFyIFY9bnVsbDthc3luYyBmdW5jdGlvbiBodCgpe2xldCBBPUYoKSxlPXR5cGVvZiBBIT0ic3RyaW5nIiYmdHlwZW9mIEE/LmhyZWY8InUiP0EuaHJlZjpBO1Y9YXdhaXQgb0EoZSl9ZnVuY3Rpb24gV3MoQSl7Vj1BfWFzeW5jIGZ1bmN0aW9uIEooKXtpZihWIT09bnVsbClyZXR1cm4gVi50ZXJtaW5hdGVkJiZhd2FpdCBodCgpLFY7bGV0IEE9ZHQoKTtyZXR1cm4gQSE9PW51bGw/QTooYXdhaXQgaHQoKSxWKX1hc3luYyBmdW5jdGlvbiBsaShBLGUsdD17fSl7bGV0IHI9W3t0eXBlOlEuSnNvbkNvbXBhdGlibGV9LHt0eXBlOlEuSW1hZ2V9XSxuPUE7aWYoQSBpbnN0YW5jZW9mIEZpbGUpe2xldCBTPWF3YWl0IEEuYXJyYXlCdWZmZXIoKTtuPXtwYXRoOkEubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KFMpfX1sZXQgaT1lO2lmKGUgaW5zdGFuY2VvZiBGaWxlKXtsZXQgUz1hd2FpdCBlLmFycmF5QnVmZmVyKCk7aT17cGF0aDplLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShTKX19bGV0IG89W3t0eXBlOlEuQmluYXJ5RmlsZSxkYXRhOm59LHt0eXBlOlEuQmluYXJ5RmlsZSxkYXRhOml9XSxnPVtdLEM9bi5wYXRoO2cucHVzaChDKTtsZXQgbD1pLnBhdGg7Zy5wdXNoKGwpO2xldCBzPSIwIjtnLnB1c2gocyk7bGV0IGE9IjEiO2cucHVzaChhKSxnLnB1c2goIi0tbWVtb3J5LWlvIiksdC5jb2xvck91dHB1dCYmdC5jb2xvck91dHB1dCYmZy5wdXNoKCItLWNvbG9yLW91dHB1dCIpLHQuY29uZmlnRmlsZSYmZy5wdXNoKCItLWNvbmZpZy1maWxlIix0LmNvbmZpZ0ZpbGUudG9TdHJpbmcoKSksdC5mcmFtZSYmZy5wdXNoKCItLWZyYW1lIix0LmZyYW1lLnRvU3RyaW5nKCkpLHQubm9QcmVzZW50YXRpb25TdGF0ZU91dHB1dCYmdC5ub1ByZXNlbnRhdGlvblN0YXRlT3V0cHV0JiZnLnB1c2goIi0tbm8tcHJlc2VudGF0aW9uLXN0YXRlLW91dHB1dCIpLHQubm9CaXRtYXBPdXRwdXQmJnQubm9CaXRtYXBPdXRwdXQmJmcucHVzaCgiLS1uby1iaXRtYXAtb3V0cHV0Iik7bGV0IEU9ImFwcGx5LXByZXNlbnRhdGlvbi1zdGF0ZS10by1pbWFnZSIsQj10Py53ZWJXb3JrZXI7Qj09PXZvaWQgMCYmKEI9YXdhaXQgSigpKTtsZXR7d2ViV29ya2VyOnUscmV0dXJuVmFsdWU6YyxzdGRlcnI6ZixvdXRwdXRzOmR9PWF3YWl0IGIoRSxnLHIsbyx7cGlwZWxpbmVCYXNlVXJsOk4oKSxwaXBlbGluZVdvcmtlclVybDpGKCksd2ViV29ya2VyOkIsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKGMhPT0wJiZmIT09IiIpdGhyb3cgbmV3IEVycm9yKGYpO3JldHVybnt3ZWJXb3JrZXI6dSxwcmVzZW50YXRpb25TdGF0ZU91dFN0cmVhbTpkWzBdPy5kYXRhLG91dHB1dEltYWdlOmRbMV0/LmRhdGF9fXZhciBCaT1saTthc3luYyBmdW5jdGlvbiBDaShBLGU9e30pe2xldCB0PVt7dHlwZTpRLkJpbmFyeVN0cmVhbX1dLHI9QTtpZihBIGluc3RhbmNlb2YgRmlsZSl7bGV0IGM9YXdhaXQgQS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6QS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoYyl9fWxldCBuPVt7dHlwZTpRLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxvPXIucGF0aDtpLnB1c2gobyk7bGV0IGc9IjAiO2kucHVzaChnKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksZS5yZWFkRmlsZU9ubHkmJmUucmVhZEZpbGVPbmx5JiZpLnB1c2goIi0tcmVhZC1maWxlLW9ubHkiKSxlLnJlYWREYXRhc2V0JiZlLnJlYWREYXRhc2V0JiZpLnB1c2goIi0tcmVhZC1kYXRhc2V0IiksZS5yZWFkWGZlckF1dG8mJmUucmVhZFhmZXJBdXRvJiZpLnB1c2goIi0tcmVhZC14ZmVyLWF1dG8iKSxlLnJlYWRYZmVyRGV0ZWN0JiZlLnJlYWRYZmVyRGV0ZWN0JiZpLnB1c2goIi0tcmVhZC14ZmVyLWRldGVjdCIpLGUucmVhZFhmZXJMaXR0bGUmJmUucmVhZFhmZXJMaXR0bGUmJmkucHVzaCgiLS1yZWFkLXhmZXItbGl0dGxlIiksZS5yZWFkWGZlckJpZyYmZS5yZWFkWGZlckJpZyYmaS5wdXNoKCItLXJlYWQteGZlci1iaWciKSxlLnJlYWRYZmVySW1wbGljaXQmJmUucmVhZFhmZXJJbXBsaWNpdCYmaS5wdXNoKCItLXJlYWQteGZlci1pbXBsaWNpdCIpLGUuYWNjZXB0T2RkTGVuZ3RoJiZlLmFjY2VwdE9kZExlbmd0aCYmaS5wdXNoKCItLWFjY2VwdC1vZGQtbGVuZ3RoIiksZS5hc3N1bWVFdmVuTGVuZ3RoJiZlLmFzc3VtZUV2ZW5MZW5ndGgmJmkucHVzaCgiLS1hc3N1bWUtZXZlbi1sZW5ndGgiKSxlLmVuYWJsZUNwMjQ2JiZlLmVuYWJsZUNwMjQ2JiZpLnB1c2goIi0tZW5hYmxlLWNwMjQ2IiksZS5kaXNhYmxlQ3AyNDYmJmUuZGlzYWJsZUNwMjQ2JiZpLnB1c2goIi0tZGlzYWJsZS1jcDI0NiIpLGUucmV0YWluVW4mJmUucmV0YWluVW4mJmkucHVzaCgiLS1yZXRhaW4tdW4iKSxlLmNvbnZlcnRVbiYmZS5jb252ZXJ0VW4mJmkucHVzaCgiLS1jb252ZXJ0LXVuIiksZS5lbmFibGVDb3JyZWN0aW9uJiZlLmVuYWJsZUNvcnJlY3Rpb24mJmkucHVzaCgiLS1lbmFibGUtY29ycmVjdGlvbiIpLGUuZGlzYWJsZUNvcnJlY3Rpb24mJmUuZGlzYWJsZUNvcnJlY3Rpb24mJmkucHVzaCgiLS1kaXNhYmxlLWNvcnJlY3Rpb24iKTtsZXQgQz0icmVhZC1kaWNvbS1lbmNhcHN1bGF0ZWQtcGRmIixsPWU/LndlYldvcmtlcjtsPT09dm9pZCAwJiYobD1hd2FpdCBKKCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTphLHN0ZGVycjpFLG91dHB1dHM6Qn09YXdhaXQgYihDLGksdCxuLHtwaXBlbGluZUJhc2VVcmw6TigpLHBpcGVsaW5lV29ya2VyVXJsOkYoKSx3ZWJXb3JrZXI6bCxub0NvcHk6ZT8ubm9Db3B5fSk7aWYoYSE9PTAmJkUhPT0iIil0aHJvdyBuZXcgRXJyb3IoRSk7cmV0dXJue3dlYldvcmtlcjpzLHBkZkJpbmFyeU91dHB1dDooQlswXT8uZGF0YSkuZGF0YX19dmFyIGNpPUNpO2FzeW5jIGZ1bmN0aW9uIHVpKEEsZT17fSl7bGV0IHQ9W3t0eXBlOlEuVGV4dFN0cmVhbX1dLHI9QTtpZihBIGluc3RhbmNlb2YgRmlsZSl7bGV0IGM9YXdhaXQgQS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6QS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoYyl9fWxldCBuPVt7dHlwZTpRLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxvPXIucGF0aDtpLnB1c2gobyk7bGV0IGc9IjAiO2lmKGkucHVzaChnKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksZS5yZWFkRmlsZU9ubHkmJmUucmVhZEZpbGVPbmx5JiZpLnB1c2goIi0tcmVhZC1maWxlLW9ubHkiKSxlLnJlYWREYXRhc2V0JiZlLnJlYWREYXRhc2V0JiZpLnB1c2goIi0tcmVhZC1kYXRhc2V0IiksZS5yZWFkWGZlckF1dG8mJmUucmVhZFhmZXJBdXRvJiZpLnB1c2goIi0tcmVhZC14ZmVyLWF1dG8iKSxlLnJlYWRYZmVyRGV0ZWN0JiZlLnJlYWRYZmVyRGV0ZWN0JiZpLnB1c2goIi0tcmVhZC14ZmVyLWRldGVjdCIpLGUucmVhZFhmZXJMaXR0bGUmJmUucmVhZFhmZXJMaXR0bGUmJmkucHVzaCgiLS1yZWFkLXhmZXItbGl0dGxlIiksZS5yZWFkWGZlckJpZyYmZS5yZWFkWGZlckJpZyYmaS5wdXNoKCItLXJlYWQteGZlci1iaWciKSxlLnJlYWRYZmVySW1wbGljaXQmJmUucmVhZFhmZXJJbXBsaWNpdCYmaS5wdXNoKCItLXJlYWQteGZlci1pbXBsaWNpdCIpLGUucHJvY2Vzc2luZ0RldGFpbHMmJmUucHJvY2Vzc2luZ0RldGFpbHMmJmkucHVzaCgiLS1wcm9jZXNzaW5nLWRldGFpbHMiKSxlLnVua25vd25SZWxhdGlvbnNoaXAmJmUudW5rbm93blJlbGF0aW9uc2hpcCYmaS5wdXNoKCItLXVua25vd24tcmVsYXRpb25zaGlwIiksZS5pbnZhbGlkSXRlbVZhbHVlJiZlLmludmFsaWRJdGVtVmFsdWUmJmkucHVzaCgiLS1pbnZhbGlkLWl0ZW0tdmFsdWUiKSxlLmlnbm9yZUNvbnN0cmFpbnRzJiZlLmlnbm9yZUNvbnN0cmFpbnRzJiZpLnB1c2goIi0taWdub3JlLWNvbnN0cmFpbnRzIiksZS5pZ25vcmVJdGVtRXJyb3JzJiZlLmlnbm9yZUl0ZW1FcnJvcnMmJmkucHVzaCgiLS1pZ25vcmUtaXRlbS1lcnJvcnMiKSxlLnNraXBJbnZhbGlkSXRlbXMmJmUuc2tpcEludmFsaWRJdGVtcyYmaS5wdXNoKCItLXNraXAtaW52YWxpZC1pdGVtcyIpLGUuZGlzYWJsZVZyQ2hlY2tlciYmZS5kaXNhYmxlVnJDaGVja2VyJiZpLnB1c2goIi0tZGlzYWJsZS12ci1jaGVja2VyIiksZS5jaGFyc2V0UmVxdWlyZSYmZS5jaGFyc2V0UmVxdWlyZSYmaS5wdXNoKCItLWNoYXJzZXQtcmVxdWlyZSIpLGUuY2hhcnNldEFzc3VtZSYmaS5wdXNoKCItLWNoYXJzZXQtYXNzdW1lIixlLmNoYXJzZXRBc3N1bWUudG9TdHJpbmcoKSksZS5jaGFyc2V0Q2hlY2tBbGwmJmUuY2hhcnNldENoZWNrQWxsJiZpLnB1c2goIi0tY2hhcnNldC1jaGVjay1hbGwiKSxlLmNvbnZlcnRUb1V0ZjgmJmUuY29udmVydFRvVXRmOCYmaS5wdXNoKCItLWNvbnZlcnQtdG8tdXRmOCIpLGUudXJsUHJlZml4JiZpLnB1c2goIi0tdXJsLXByZWZpeCIsZS51cmxQcmVmaXgudG9TdHJpbmcoKSksZS5odG1sMzImJmUuaHRtbDMyJiZpLnB1c2goIi0taHRtbC0zMiIpLGUuaHRtbDQwJiZlLmh0bWw0MCYmaS5wdXNoKCItLWh0bWwtNDAiKSxlLnhodG1sMTEmJmUueGh0bWwxMSYmaS5wdXNoKCItLXhodG1sLTExIiksZS5hZGREb2N1bWVudFR5cGUmJmUuYWRkRG9jdW1lbnRUeXBlJiZpLnB1c2goIi0tYWRkLWRvY3VtZW50LXR5cGUiKSxlLmNzc1JlZmVyZW5jZSl7bGV0IGM9bi5sZW5ndGgudG9TdHJpbmcoKTtuLnB1c2goe3R5cGU6US5UZXh0U3RyZWFtLGRhdGE6e2RhdGE6ZS5jc3NSZWZlcmVuY2V9fSksaS5wdXNoKCItLWNzcy1yZWZlcmVuY2UiLGMpfWlmKGUuY3NzRmlsZSl7bGV0IGM9ZS5jc3NGaWxlLGY9YztpZihjIGluc3RhbmNlb2YgRmlsZSl7bGV0IGs9YXdhaXQgYy5hcnJheUJ1ZmZlcigpO2Y9e3BhdGg6Yy5uYW1lLGRhdGE6bmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGspfX1pLnB1c2goIi0tY3NzLWZpbGUiKSxuLnB1c2goe3R5cGU6US5UZXh0RmlsZSxkYXRhOmZ9KTtsZXQgZD1jIGluc3RhbmNlb2YgRmlsZT9jLm5hbWU6Yy5wYXRoO2kucHVzaChkKX1lLmV4cGFuZElubGluZSYmZS5leHBhbmRJbmxpbmUmJmkucHVzaCgiLS1leHBhbmQtaW5saW5lIiksZS5uZXZlckV4cGFuZElubGluZSYmZS5uZXZlckV4cGFuZElubGluZSYmaS5wdXNoKCItLW5ldmVyLWV4cGFuZC1pbmxpbmUiKSxlLmFsd2F5c0V4cGFuZElubGluZSYmZS5hbHdheXNFeHBhbmRJbmxpbmUmJmkucHVzaCgiLS1hbHdheXMtZXhwYW5kLWlubGluZSIpLGUucmVuZGVyRnVsbERhdGEmJmUucmVuZGVyRnVsbERhdGEmJmkucHVzaCgiLS1yZW5kZXItZnVsbC1kYXRhIiksZS5zZWN0aW9uVGl0bGVJbmxpbmUmJmUuc2VjdGlvblRpdGxlSW5saW5lJiZpLnB1c2goIi0tc2VjdGlvbi10aXRsZS1pbmxpbmUiKSxlLmRvY3VtZW50VHlwZVRpdGxlJiZlLmRvY3VtZW50VHlwZVRpdGxlJiZpLnB1c2goIi0tZG9jdW1lbnQtdHlwZS10aXRsZSIpLGUucGF0aWVudEluZm9UaXRsZSYmZS5wYXRpZW50SW5mb1RpdGxlJiZpLnB1c2goIi0tcGF0aWVudC1pbmZvLXRpdGxlIiksZS5ub0RvY3VtZW50SGVhZGVyJiZlLm5vRG9jdW1lbnRIZWFkZXImJmkucHVzaCgiLS1uby1kb2N1bWVudC1oZWFkZXIiKSxlLnJlbmRlcklubGluZUNvZGVzJiZlLnJlbmRlcklubGluZUNvZGVzJiZpLnB1c2goIi0tcmVuZGVyLWlubGluZS1jb2RlcyIpLGUuY29uY2VwdE5hbWVDb2RlcyYmZS5jb25jZXB0TmFtZUNvZGVzJiZpLnB1c2goIi0tY29uY2VwdC1uYW1lLWNvZGVzIiksZS5udW1lcmljVW5pdENvZGVzJiZlLm51bWVyaWNVbml0Q29kZXMmJmkucHVzaCgiLS1udW1lcmljLXVuaXQtY29kZXMiKSxlLmNvZGVWYWx1ZVVuaXQmJmUuY29kZVZhbHVlVW5pdCYmaS5wdXNoKCItLWNvZGUtdmFsdWUtdW5pdCIpLGUuY29kZU1lYW5pbmdVbml0JiZlLmNvZGVNZWFuaW5nVW5pdCYmaS5wdXNoKCItLWNvZGUtbWVhbmluZy11bml0IiksZS5yZW5kZXJBbGxDb2RlcyYmZS5yZW5kZXJBbGxDb2RlcyYmaS5wdXNoKCItLXJlbmRlci1hbGwtY29kZXMiKSxlLmNvZGVEZXRhaWxzVG9vbHRpcCYmZS5jb2RlRGV0YWlsc1Rvb2x0aXAmJmkucHVzaCgiLS1jb2RlLWRldGFpbHMtdG9vbHRpcCIpO2xldCBDPSJzdHJ1Y3R1cmVkLXJlcG9ydC10by1odG1sIixsPWU/LndlYldvcmtlcjtsPT09dm9pZCAwJiYobD1hd2FpdCBKKCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTphLHN0ZGVycjpFLG91dHB1dHM6Qn09YXdhaXQgYihDLGksdCxuLHtwaXBlbGluZUJhc2VVcmw6TigpLHBpcGVsaW5lV29ya2VyVXJsOkYoKSx3ZWJXb3JrZXI6bCxub0NvcHk6ZT8ubm9Db3B5fSk7aWYoYSE9PTAmJkUhPT0iIil0aHJvdyBuZXcgRXJyb3IoRSk7cmV0dXJue3dlYldvcmtlcjpzLG91dHB1dFRleHQ6KEJbMF0/LmRhdGEpLmRhdGF9fXZhciBFaT11aTthc3luYyBmdW5jdGlvbiBRaShBLGU9e30pe2xldCB0PVt7dHlwZTpRLlRleHRTdHJlYW19XSxyPUE7aWYoQSBpbnN0YW5jZW9mIEZpbGUpe2xldCBjPWF3YWl0IEEuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOkEubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KGMpfX1sZXQgbj1be3R5cGU6US5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbz1yLnBhdGg7aS5wdXNoKG8pO2xldCBnPSIwIjtpLnB1c2goZyksaS5wdXNoKCItLW1lbW9yeS1pbyIpLGUudW5rbm93blJlbGF0aW9uc2hpcCYmZS51bmtub3duUmVsYXRpb25zaGlwJiZpLnB1c2goIi0tdW5rbm93bi1yZWxhdGlvbnNoaXAiKSxlLmludmFsaWRJdGVtVmFsdWUmJmUuaW52YWxpZEl0ZW1WYWx1ZSYmaS5wdXNoKCItLWludmFsaWQtaXRlbS12YWx1ZSIpLGUuaWdub3JlQ29uc3RyYWludHMmJmUuaWdub3JlQ29uc3RyYWludHMmJmkucHVzaCgiLS1pZ25vcmUtY29uc3RyYWludHMiKSxlLmlnbm9yZUl0ZW1FcnJvcnMmJmUuaWdub3JlSXRlbUVycm9ycyYmaS5wdXNoKCItLWlnbm9yZS1pdGVtLWVycm9ycyIpLGUuc2tpcEludmFsaWRJdGVtcyYmZS5za2lwSW52YWxpZEl0ZW1zJiZpLnB1c2goIi0tc2tpcC1pbnZhbGlkLWl0ZW1zIiksZS5ub0RvY3VtZW50SGVhZGVyJiZlLm5vRG9jdW1lbnRIZWFkZXImJmkucHVzaCgiLS1uby1kb2N1bWVudC1oZWFkZXIiKSxlLm51bWJlck5lc3RlZEl0ZW1zJiZlLm51bWJlck5lc3RlZEl0ZW1zJiZpLnB1c2goIi0tbnVtYmVyLW5lc3RlZC1pdGVtcyIpLGUuc2hvcnRlbkxvbmdWYWx1ZXMmJmUuc2hvcnRlbkxvbmdWYWx1ZXMmJmkucHVzaCgiLS1zaG9ydGVuLWxvbmctdmFsdWVzIiksZS5wcmludEluc3RhbmNlVWlkJiZlLnByaW50SW5zdGFuY2VVaWQmJmkucHVzaCgiLS1wcmludC1pbnN0YW5jZS11aWQiKSxlLnByaW50U29wY2xhc3NTaG9ydCYmZS5wcmludFNvcGNsYXNzU2hvcnQmJmkucHVzaCgiLS1wcmludC1zb3BjbGFzcy1zaG9ydCIpLGUucHJpbnRTb3BjbGFzc0xvbmcmJmUucHJpbnRTb3BjbGFzc0xvbmcmJmkucHVzaCgiLS1wcmludC1zb3BjbGFzcy1sb25nIiksZS5wcmludFNvcGNsYXNzVWlkJiZlLnByaW50U29wY2xhc3NVaWQmJmkucHVzaCgiLS1wcmludC1zb3BjbGFzcy11aWQiKSxlLnByaW50QWxsQ29kZXMmJmUucHJpbnRBbGxDb2RlcyYmaS5wdXNoKCItLXByaW50LWFsbC1jb2RlcyIpLGUucHJpbnRJbnZhbGlkQ29kZXMmJmUucHJpbnRJbnZhbGlkQ29kZXMmJmkucHVzaCgiLS1wcmludC1pbnZhbGlkLWNvZGVzIiksZS5wcmludFRlbXBsYXRlSWQmJmUucHJpbnRUZW1wbGF0ZUlkJiZpLnB1c2goIi0tcHJpbnQtdGVtcGxhdGUtaWQiKSxlLmluZGljYXRlRW5oYW5jZWQmJmUuaW5kaWNhdGVFbmhhbmNlZCYmaS5wdXNoKCItLWluZGljYXRlLWVuaGFuY2VkIiksZS5wcmludENvbG9yJiZlLnByaW50Q29sb3ImJmkucHVzaCgiLS1wcmludC1jb2xvciIpO2xldCBDPSJzdHJ1Y3R1cmVkLXJlcG9ydC10by10ZXh0IixsPWU/LndlYldvcmtlcjtsPT09dm9pZCAwJiYobD1hd2FpdCBKKCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTphLHN0ZGVycjpFLG91dHB1dHM6Qn09YXdhaXQgYihDLGksdCxuLHtwaXBlbGluZUJhc2VVcmw6TigpLHBpcGVsaW5lV29ya2VyVXJsOkYoKSx3ZWJXb3JrZXI6bCxub0NvcHk6ZT8ubm9Db3B5fSk7aWYoYSE9PTAmJkUhPT0iIil0aHJvdyBuZXcgRXJyb3IoRSk7cmV0dXJue3dlYldvcmtlcjpzLG91dHB1dFRleHQ6KEJbMF0/LmRhdGEpLmRhdGF9fXZhciBmaT1RaTthc3luYyBmdW5jdGlvbiBwaShBLGU9e30pe2xldCB0PVt7dHlwZTpRLkpzb25Db21wYXRpYmxlfV0scj1BO2lmKEEgaW5zdGFuY2VvZiBGaWxlKXtsZXQgdT1hd2FpdCBBLmFycmF5QnVmZmVyKCk7cj17cGF0aDpBLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheSh1KX19bGV0IG49W3t0eXBlOlEuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG89ci5wYXRoO2kucHVzaChvKTtsZXQgZz0iMCI7aWYoaS5wdXNoKGcpLGkucHVzaCgiLS1tZW1vcnktaW8iKSx0eXBlb2YgZS50YWdzVG9SZWFkPCJ1Iil7bGV0IHU9bi5sZW5ndGgudG9TdHJpbmcoKTtuLnB1c2goe3R5cGU6US5Kc29uQ29tcGF0aWJsZSxkYXRhOmUudGFnc1RvUmVhZH0pLGkucHVzaCgiLS10YWdzLXRvLXJlYWQiLHUpfWxldCBDPSJyZWFkLWRpY29tLXRhZ3MiLHt3ZWJXb3JrZXI6bCxyZXR1cm5WYWx1ZTpzLHN0ZGVycjphLG91dHB1dHM6RX09YXdhaXQgYihDLGksdCxuLHtwaXBlbGluZUJhc2VVcmw6TigpLHBpcGVsaW5lV29ya2VyVXJsOkYoKSx3ZWJXb3JrZXI6ZT8ud2ViV29ya2VyPz9udWxsfSk7aWYocyE9PTApdGhyb3cgbmV3IEVycm9yKGEpO3JldHVybnt3ZWJXb3JrZXI6bCx0YWdzOkVbMF0uZGF0YX19dmFyIGRpPXBpO2FzeW5jIGZ1bmN0aW9uIG1pKEEsZT0hMSx0PXt9KXtsZXQgcj1be3R5cGU6US5JbWFnZX0se3R5cGU6US5Kc29uQ29tcGF0aWJsZX1dLG49W10saT1bXSxvPSIwIjtpLnB1c2gobyk7bGV0IGc9IjEiO2kucHVzaChnKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksaS5wdXNoKCItLWlucHV0LWltYWdlcyIpLEEuZm9yRWFjaCh1PT57bi5wdXNoKHt0eXBlOlEuQmluYXJ5RmlsZSxkYXRhOnV9KSxpLnB1c2godS5wYXRoKX0pLHR5cGVvZiBlPCJ1IiYmZSYmaS5wdXNoKCItLXNpbmdsZS1zb3J0ZWQtc2VyaWVzIik7bGV0IEM9InJlYWQtaW1hZ2UtZGljb20tZmlsZS1zZXJpZXMiLHt3ZWJXb3JrZXI6bCxyZXR1cm5WYWx1ZTpzLHN0ZGVycjphLG91dHB1dHM6RX09YXdhaXQgYihDLGkscixuLHtwaXBlbGluZUJhc2VVcmw6TigpLHBpcGVsaW5lV29ya2VyVXJsOkYoKSx3ZWJXb3JrZXI6dD8ud2ViV29ya2VyPz9udWxsfSk7aWYocyE9PTApdGhyb3cgbmV3IEVycm9yKGEpO3JldHVybnt3ZWJXb3JrZXI6bCxvdXRwdXRJbWFnZTpFWzBdLmRhdGEsc29ydGVkRmlsZW5hbWVzOkVbMV0uZGF0YX19dmFyIGdlPW1pO3ZhciBoaT10eXBlb2YgZ2xvYmFsVGhpcy5uYXZpZ2F0b3I/LmhhcmR3YXJlQ29uY3VycmVuY3k9PSJudW1iZXIiP2dsb2JhbFRoaXMubmF2aWdhdG9yLmhhcmR3YXJlQ29uY3VycmVuY3k6NCx5dD04O2FzeW5jIGZ1bmN0aW9uIHlpKEE9e2lucHV0SW1hZ2VzOltdfSl7bGV0IGU9QS53ZWJXb3JrZXJQb29sPz9udWxsO2U9PT1udWxsJiYoZT1uZXcgR0EoaGksZ2UpKTtsZXQgdD1bXTtpZihBLmlucHV0SW1hZ2VzLmxlbmd0aDwxKXRocm93IG5ldyBFcnJvcignImlucHV0LWltYWdlcyIgb3B0aW9uIG11c3QgaGF2ZSBhIGxlbmd0aCA+IDEnKTtpZihhd2FpdCBQcm9taXNlLmFsbChBLmlucHV0SW1hZ2VzLm1hcChhc3luYyByPT57bGV0IG49cjtpZihyIGluc3RhbmNlb2YgRmlsZSl7bGV0IGk9YXdhaXQgci5hcnJheUJ1ZmZlcigpO249e3BhdGg6ci5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoaSl9fXQucHVzaChuKX0pKSxBLnNpbmdsZVNvcnRlZFNlcmllcyl7bGV0IHI9W107Zm9yKGxldCBDPTA7Qzx0Lmxlbmd0aDtDKz15dCl7bGV0IGw9dC5zbGljZShDLEMreXQpO3IucHVzaChbbCxBLnNpbmdsZVNvcnRlZFNlcmllcyx7fV0pfWxldCBuPWF3YWl0IGUucnVuVGFza3MocikucHJvbWlzZSxpPW4ubWFwKEM9PkMub3V0cHV0SW1hZ2UpLG89bi5yZWR1Y2UoKEMsbCk9PkMuY29uY2F0KGwuc29ydGVkRmlsZW5hbWVzKSxbXSk7cmV0dXJue291dHB1dEltYWdlOlVBKGkpLHdlYldvcmtlclBvb2w6ZSxzb3J0ZWRGaWxlbmFtZXM6b319ZWxzZXtsZXQgcj1bW3QsQS5zaW5nbGVTb3J0ZWRTZXJpZXMse31dXSxuPWF3YWl0IGUucnVuVGFza3MocikucHJvbWlzZTtyZXR1cm57b3V0cHV0SW1hZ2U6blswXS5vdXRwdXRJbWFnZSx3ZWJXb3JrZXJQb29sOmUsc29ydGVkRmlsZW5hbWVzOm5bMF0uc29ydGVkRmlsZW5hbWVzfX19dmFyIHdpPXlpO3ZhciB3dD0nZGF0YTp0ZXh0L2phdmFzY3JpcHQ7Y2hhcnNldD11dGYtOCx2YXIgdHQ9T2JqZWN0LmRlZmluZVByb3BlcnR5O3ZhciBldD0oQSxJKT0+e2Zvcih2YXIgdCBpbiBJKXR0KEEsdCx7Z2V0OklbdF0sZW51bWVyYWJsZTohMH0pfTt2YXIgdkE9U3ltYm9sKCJDb21saW5rLnByb3h5IiksZ3Q9U3ltYm9sKCJDb21saW5rLmVuZHBvaW50IikscnQ9U3ltYm9sKCJDb21saW5rLnJlbGVhc2VQcm94eSIpLG1BPVN5bWJvbCgiQ29tbGluay5maW5hbGl6ZXIiKSxlQT1TeW1ib2woIkNvbWxpbmsudGhyb3duIiksJEE9QT0+dHlwZW9mIEE9PSJvYmplY3QiJiZBIT09bnVsbHx8dHlwZW9mIEE9PSJmdW5jdGlvbiIsaXQ9e2NhbkhhbmRsZTpBPT4kQShBKSYmQVt2QV0sc2VyaWFsaXplKEEpe2xldHtwb3J0MTpJLHBvcnQyOnR9PW5ldyBNZXNzYWdlQ2hhbm5lbDtyZXR1cm4gb0EoQSxJKSxbdCxbdF1dfSxkZXNlcmlhbGl6ZShBKXtyZXR1cm4gQS5zdGFydCgpLHN0KEEpfX0sb3Q9e2NhbkhhbmRsZTpBPT4kQShBKSYmZUEgaW4gQSxzZXJpYWxpemUoe3ZhbHVlOkF9KXtsZXQgSTtyZXR1cm4gQSBpbnN0YW5jZW9mIEVycm9yP0k9e2lzRXJyb3I6ITAsdmFsdWU6e21lc3NhZ2U6QS5tZXNzYWdlLG5hbWU6QS5uYW1lLHN0YWNrOkEuc3RhY2t9fTpJPXtpc0Vycm9yOiExLHZhbHVlOkF9LFtJLFtdXX0sZGVzZXJpYWxpemUoQSl7dGhyb3cgQS5pc0Vycm9yP09iamVjdC5hc3NpZ24obmV3IEVycm9yKEEudmFsdWUubWVzc2FnZSksQS52YWx1ZSk6QS52YWx1ZX19LEFJPW5ldyBNYXAoW1sicHJveHkiLGl0XSxbInRocm93IixvdF1dKTtmdW5jdGlvbiBCdChBLEkpe2ZvcihsZXQgdCBvZiBBKWlmKEk9PT10fHx0PT09IioifHx0IGluc3RhbmNlb2YgUmVnRXhwJiZ0LnRlc3QoSSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gb0EoQSxJPWdsb2JhbFRoaXMsdD1bIioiXSl7SS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiBlKGcpe2lmKCFnfHwhZy5kYXRhKXJldHVybjtpZighQnQodCxnLm9yaWdpbikpe2NvbnNvbGUud2FybihgSW52YWxpZCBvcmlnaW4gXCcke2cub3JpZ2lufVwnIGZvciBjb21saW5rIHByb3h5YCk7cmV0dXJufWxldHtpZDpyLHR5cGU6aSxwYXRoOnN9PU9iamVjdC5hc3NpZ24oe3BhdGg6W119LGcuZGF0YSksYT0oZy5kYXRhLmFyZ3VtZW50TGlzdHx8W10pLm1hcChiKSxuO3RyeXtsZXQgQz1zLnNsaWNlKDAsLTEpLnJlZHVjZSgoZixRKT0+ZltRXSxBKSxvPXMucmVkdWNlKChmLFEpPT5mW1FdLEEpO3N3aXRjaChpKXtjYXNlIkdFVCI6bj1vO2JyZWFrO2Nhc2UiU0VUIjpDW3Muc2xpY2UoLTEpWzBdXT1iKGcuZGF0YS52YWx1ZSksbj0hMDticmVhaztjYXNlIkFQUExZIjpuPW8uYXBwbHkoQyxhKTticmVhaztjYXNlIkNPTlNUUlVDVCI6e2xldCBmPW5ldyBvKC4uLmEpO249YXQoZil9YnJlYWs7Y2FzZSJFTkRQT0lOVCI6e2xldHtwb3J0MTpmLHBvcnQyOlF9PW5ldyBNZXNzYWdlQ2hhbm5lbDtvQShBLFEpLG49U0EoZixbZl0pfWJyZWFrO2Nhc2UiUkVMRUFTRSI6bj12b2lkIDA7YnJlYWs7ZGVmYXVsdDpyZXR1cm59fWNhdGNoKEMpe249e3ZhbHVlOkMsW2VBXTowfX1Qcm9taXNlLnJlc29sdmUobikuY2F0Y2goQz0+KHt2YWx1ZTpDLFtlQV06MH0pKS50aGVuKEM9PntsZXRbbyxmXT1pQShDKTtJLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSx7aWQ6cn0pLGYpLGk9PT0iUkVMRUFTRSImJihJLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGUpLElJKEkpLG1BIGluIEEmJnR5cGVvZiBBW21BXT09ImZ1bmN0aW9uIiYmQVttQV0oKSl9KS5jYXRjaChDPT57bGV0W28sZl09aUEoe3ZhbHVlOm5ldyBUeXBlRXJyb3IoIlVuc2VyaWFsaXphYmxlIHJldHVybiB2YWx1ZSIpLFtlQV06MH0pO0kucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG8pLHtpZDpyfSksZil9KX0pLEkuc3RhcnQmJkkuc3RhcnQoKX1mdW5jdGlvbiBDdChBKXtyZXR1cm4gQS5jb25zdHJ1Y3Rvci5uYW1lPT09Ik1lc3NhZ2VQb3J0In1mdW5jdGlvbiBJSShBKXtDdChBKSYmQS5jbG9zZSgpfWZ1bmN0aW9uIHN0KEEsSSl7cmV0dXJuIHBBKEEsW10sSSl9ZnVuY3Rpb24gdEEoQSl7aWYoQSl0aHJvdyBuZXcgRXJyb3IoIlByb3h5IGhhcyBiZWVuIHJlbGVhc2VkIGFuZCBpcyBub3QgdXNlYWJsZSIpfWZ1bmN0aW9uIHRJKEEpe3JldHVybiBNKEEse3R5cGU6IlJFTEVBU0UifSkudGhlbigoKT0+e0lJKEEpfSl9dmFyIGdBPW5ldyBXZWFrTWFwLHJBPSJGaW5hbGl6YXRpb25SZWdpc3RyeSJpbiBnbG9iYWxUaGlzJiZuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoQT0+e2xldCBJPShnQS5nZXQoQSl8fDApLTE7Z0Euc2V0KEEsSSksST09PTAmJnRJKEEpfSk7ZnVuY3Rpb24gUXQoQSxJKXtsZXQgdD0oZ0EuZ2V0KEkpfHwwKSsxO2dBLnNldChJLHQpLHJBJiZyQS5yZWdpc3RlcihBLEksQSl9ZnVuY3Rpb24gbnQoQSl7ckEmJnJBLnVucmVnaXN0ZXIoQSl9ZnVuY3Rpb24gcEEoQSxJPVtdLHQ9ZnVuY3Rpb24oKXt9KXtsZXQgZT0hMSxnPW5ldyBQcm94eSh0LHtnZXQocixpKXtpZih0QShlKSxpPT09cnQpcmV0dXJuKCk9PntudChnKSx0SShBKSxlPSEwfTtpZihpPT09InRoZW4iKXtpZihJLmxlbmd0aD09PTApcmV0dXJue3RoZW46KCk9Pmd9O2xldCBzPU0oQSx7dHlwZToiR0VUIixwYXRoOkkubWFwKGE9PmEudG9TdHJpbmcoKSl9KS50aGVuKGIpO3JldHVybiBzLnRoZW4uYmluZChzKX1yZXR1cm4gcEEoQSxbLi4uSSxpXSl9LHNldChyLGkscyl7dEEoZSk7bGV0W2Esbl09aUEocyk7cmV0dXJuIE0oQSx7dHlwZToiU0VUIixwYXRoOlsuLi5JLGldLm1hcChDPT5DLnRvU3RyaW5nKCkpLHZhbHVlOmF9LG4pLnRoZW4oYil9LGFwcGx5KHIsaSxzKXt0QShlKTtsZXQgYT1JW0kubGVuZ3RoLTFdO2lmKGE9PT1ndClyZXR1cm4gTShBLHt0eXBlOiJFTkRQT0lOVCJ9KS50aGVuKGIpO2lmKGE9PT0iYmluZCIpcmV0dXJuIHBBKEEsSS5zbGljZSgwLC0xKSk7bGV0W24sQ109X0Eocyk7cmV0dXJuIE0oQSx7dHlwZToiQVBQTFkiLHBhdGg6SS5tYXAobz0+by50b1N0cmluZygpKSxhcmd1bWVudExpc3Q6bn0sQykudGhlbihiKX0sY29uc3RydWN0KHIsaSl7dEEoZSk7bGV0W3MsYV09X0EoaSk7cmV0dXJuIE0oQSx7dHlwZToiQ09OU1RSVUNUIixwYXRoOkkubWFwKG49Pm4udG9TdHJpbmcoKSksYXJndW1lbnRMaXN0OnN9LGEpLnRoZW4oYil9fSk7cmV0dXJuIFF0KGcsQSksZ31mdW5jdGlvbiBFdChBKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxBKX1mdW5jdGlvbiBfQShBKXtsZXQgST1BLm1hcChpQSk7cmV0dXJuW0kubWFwKHQ9PnRbMF0pLEV0KEkubWFwKHQ9PnRbMV0pKV19dmFyIGVJPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIFNBKEEsSSl7cmV0dXJuIGVJLnNldChBLEkpLEF9ZnVuY3Rpb24gYXQoQSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oQSx7W3ZBXTohMH0pfWZ1bmN0aW9uIGlBKEEpe2ZvcihsZXRbSSx0XW9mIEFJKWlmKHQuY2FuSGFuZGxlKEEpKXtsZXRbZSxnXT10LnNlcmlhbGl6ZShBKTtyZXR1cm5be3R5cGU6IkhBTkRMRVIiLG5hbWU6SSx2YWx1ZTplfSxnXX1yZXR1cm5be3R5cGU6IlJBVyIsdmFsdWU6QX0sZUkuZ2V0KEEpfHxbXV19ZnVuY3Rpb24gYihBKXtzd2l0Y2goQS50eXBlKXtjYXNlIkhBTkRMRVIiOnJldHVybiBBSS5nZXQoQS5uYW1lKS5kZXNlcmlhbGl6ZShBLnZhbHVlKTtjYXNlIlJBVyI6cmV0dXJuIEEudmFsdWV9fWZ1bmN0aW9uIE0oQSxJLHQpe3JldHVybiBuZXcgUHJvbWlzZShlPT57bGV0IGc9Y3QoKTtBLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uIHIoaSl7IWkuZGF0YXx8IWkuZGF0YS5pZHx8aS5kYXRhLmlkIT09Z3x8KEEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsciksZShpLmRhdGEpKX0pLEEuc3RhcnQmJkEuc3RhcnQoKSxBLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oe2lkOmd9LEkpLHQpfSl9ZnVuY3Rpb24gY3QoKXtyZXR1cm4gbmV3IEFycmF5KDQpLmZpbGwoMCkubWFwKCgpPT5NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLnRvU3RyaW5nKDE2KSkuam9pbigiLSIpfWZ1bmN0aW9uIFcoQSxJKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gQS5hcHBseShJLGFyZ3VtZW50cyl9fXZhcnt0b1N0cmluZzpmdH09T2JqZWN0LnByb3RvdHlwZSx7Z2V0UHJvdG90eXBlT2Y6TkF9PU9iamVjdCxDQT0oQT0+ST0+e2xldCB0PWZ0LmNhbGwoSSk7cmV0dXJuIEFbdF18fChBW3RdPXQuc2xpY2UoOCwtMSkudG9Mb3dlckNhc2UoKSl9KShPYmplY3QuY3JlYXRlKG51bGwpKSxVPUE9PihBPUEudG9Mb3dlckNhc2UoKSxJPT5DQShJKT09PUEpLHNBPUE9Pkk9PnR5cGVvZiBJPT09QSx7aXNBcnJheTpxfT1BcnJheSxaPXNBKCJ1bmRlZmluZWQiKTtmdW5jdGlvbiBsdChBKXtyZXR1cm4gQSE9PW51bGwmJiFaKEEpJiZBLmNvbnN0cnVjdG9yIT09bnVsbCYmIVooQS5jb25zdHJ1Y3RvcikmJkYoQS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcikmJkEuY29uc3RydWN0b3IuaXNCdWZmZXIoQSl9dmFyIG9JPVUoIkFycmF5QnVmZmVyIik7ZnVuY3Rpb24gRHQoQSl7bGV0IEk7cmV0dXJuIHR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJkFycmF5QnVmZmVyLmlzVmlldz9JPUFycmF5QnVmZmVyLmlzVmlldyhBKTpJPUEmJkEuYnVmZmVyJiZvSShBLmJ1ZmZlciksSX12YXIgdXQ9c0EoInN0cmluZyIpLEY9c0EoImZ1bmN0aW9uIiksQkk9c0EoIm51bWJlciIpLFFBPUE9PkEhPT1udWxsJiZ0eXBlb2YgQT09Im9iamVjdCIsaHQ9QT0+QT09PSEwfHxBPT09ITEsQkE9QT0+e2lmKENBKEEpIT09Im9iamVjdCIpcmV0dXJuITE7bGV0IEk9TkEoQSk7cmV0dXJuKEk9PT1udWxsfHxJPT09T2JqZWN0LnByb3RvdHlwZXx8T2JqZWN0LmdldFByb3RvdHlwZU9mKEkpPT09bnVsbCkmJiEoU3ltYm9sLnRvU3RyaW5nVGFnIGluIEEpJiYhKFN5bWJvbC5pdGVyYXRvciBpbiBBKX0sZHQ9VSgiRGF0ZSIpLHl0PVUoIkZpbGUiKSx3dD1VKCJCbG9iIiksbXQ9VSgiRmlsZUxpc3QiKSxwdD1BPT5RQShBKSYmRihBLnBpcGUpLFN0PUE9PntsZXQgSTtyZXR1cm4gQSYmKHR5cGVvZiBGb3JtRGF0YT09ImZ1bmN0aW9uIiYmQSBpbnN0YW5jZW9mIEZvcm1EYXRhfHxGKEEuYXBwZW5kKSYmKChJPUNBKEEpKT09PSJmb3JtZGF0YSJ8fEk9PT0ib2JqZWN0IiYmRihBLnRvU3RyaW5nKSYmQS50b1N0cmluZygpPT09IltvYmplY3QgRm9ybURhdGFdIikpfSxGdD1VKCJVUkxTZWFyY2hQYXJhbXMiKSxSdD1BPT5BLnRyaW0/QS50cmltKCk6QS5yZXBsYWNlKC9eW1xcc1xcdUZFRkZcXHhBMF0rfFtcXHNcXHVGRUZGXFx4QTBdKyQvZywiIik7ZnVuY3Rpb24gVihBLEkse2FsbE93bktleXM6dD0hMX09e30pe2lmKEE9PT1udWxsfHx0eXBlb2YgQT4idSIpcmV0dXJuO2xldCBlLGc7aWYodHlwZW9mIEEhPSJvYmplY3QiJiYoQT1bQV0pLHEoQSkpZm9yKGU9MCxnPUEubGVuZ3RoO2U8ZztlKyspSS5jYWxsKG51bGwsQVtlXSxlLEEpO2Vsc2V7bGV0IHI9dD9PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhBKTpPYmplY3Qua2V5cyhBKSxpPXIubGVuZ3RoLHM7Zm9yKGU9MDtlPGk7ZSsrKXM9cltlXSxJLmNhbGwobnVsbCxBW3NdLHMsQSl9fWZ1bmN0aW9uIENJKEEsSSl7ST1JLnRvTG93ZXJDYXNlKCk7bGV0IHQ9T2JqZWN0LmtleXMoQSksZT10Lmxlbmd0aCxnO2Zvcig7ZS0tID4wOylpZihnPXRbZV0sST09PWcudG9Mb3dlckNhc2UoKSlyZXR1cm4gZztyZXR1cm4gbnVsbH12YXIgc0k9dHlwZW9mIGdsb2JhbFRoaXM8InUiP2dsb2JhbFRoaXM6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Omdsb2JhbCxRST1BPT4hWihBKSYmQSE9PXNJO2Z1bmN0aW9uIFJBKCl7bGV0e2Nhc2VsZXNzOkF9PVFJKHRoaXMpJiZ0aGlzfHx7fSxJPXt9LHQ9KGUsZyk9PntsZXQgcj1BJiZDSShJLGcpfHxnO0JBKElbcl0pJiZCQShlKT9JW3JdPVJBKElbcl0sZSk6QkEoZSk/SVtyXT1SQSh7fSxlKTpxKGUpP0lbcl09ZS5zbGljZSgpOklbcl09ZX07Zm9yKGxldCBlPTAsZz1hcmd1bWVudHMubGVuZ3RoO2U8ZztlKyspYXJndW1lbnRzW2VdJiZWKGFyZ3VtZW50c1tlXSx0KTtyZXR1cm4gSX12YXIgTnQ9KEEsSSx0LHthbGxPd25LZXlzOmV9PXt9KT0+KFYoSSwoZyxyKT0+e3QmJkYoZyk/QVtyXT1XKGcsdCk6QVtyXT1nfSx7YWxsT3duS2V5czplfSksQSksVXQ9QT0+KEEuY2hhckNvZGVBdCgwKT09PTY1Mjc5JiYoQT1BLnNsaWNlKDEpKSxBKSxHdD0oQSxJLHQsZSk9PntBLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEkucHJvdG90eXBlLGUpLEEucHJvdG90eXBlLmNvbnN0cnVjdG9yPUEsT2JqZWN0LmRlZmluZVByb3BlcnR5KEEsInN1cGVyIix7dmFsdWU6SS5wcm90b3R5cGV9KSx0JiZPYmplY3QuYXNzaWduKEEucHJvdG90eXBlLHQpfSxrdD0oQSxJLHQsZSk9PntsZXQgZyxyLGkscz17fTtpZihJPUl8fHt9LEE9PW51bGwpcmV0dXJuIEk7ZG97Zm9yKGc9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoQSkscj1nLmxlbmd0aDtyLS0gPjA7KWk9Z1tyXSwoIWV8fGUoaSxBLEkpKSYmIXNbaV0mJihJW2ldPUFbaV0sc1tpXT0hMCk7QT10IT09ITEmJk5BKEEpfXdoaWxlKEEmJighdHx8dChBLEkpKSYmQSE9PU9iamVjdC5wcm90b3R5cGUpO3JldHVybiBJfSxMdD0oQSxJLHQpPT57QT1TdHJpbmcoQSksKHQ9PT12b2lkIDB8fHQ+QS5sZW5ndGgpJiYodD1BLmxlbmd0aCksdC09SS5sZW5ndGg7bGV0IGU9QS5pbmRleE9mKEksdCk7cmV0dXJuIGUhPT0tMSYmZT09PXR9LEp0PUE9PntpZighQSlyZXR1cm4gbnVsbDtpZihxKEEpKXJldHVybiBBO2xldCBJPUEubGVuZ3RoO2lmKCFCSShJKSlyZXR1cm4gbnVsbDtsZXQgdD1uZXcgQXJyYXkoSSk7Zm9yKDtJLS0gPjA7KXRbSV09QVtJXTtyZXR1cm4gdH0sSHQ9KEE9Pkk9PkEmJkkgaW5zdGFuY2VvZiBBKSh0eXBlb2YgVWludDhBcnJheTwidSImJk5BKFVpbnQ4QXJyYXkpKSxZdD0oQSxJKT0+e2xldCBlPShBJiZBW1N5bWJvbC5pdGVyYXRvcl0pLmNhbGwoQSksZztmb3IoOyhnPWUubmV4dCgpKSYmIWcuZG9uZTspe2xldCByPWcudmFsdWU7SS5jYWxsKEEsclswXSxyWzFdKX19LGJ0PShBLEkpPT57bGV0IHQsZT1bXTtmb3IoOyh0PUEuZXhlYyhJKSkhPT1udWxsOyllLnB1c2godCk7cmV0dXJuIGV9LE10PVUoIkhUTUxGb3JtRWxlbWVudCIpLHF0PUE9PkEudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bLV9cXHNdKFthLXpcXGRdKShcXHcqKS9nLGZ1bmN0aW9uKHQsZSxnKXtyZXR1cm4gZS50b1VwcGVyQ2FzZSgpK2d9KSxyST0oKHtoYXNPd25Qcm9wZXJ0eTpBfSk9PihJLHQpPT5BLmNhbGwoSSx0KSkoT2JqZWN0LnByb3RvdHlwZSksS3Q9VSgiUmVnRXhwIiksbkk9KEEsSSk9PntsZXQgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhBKSxlPXt9O1YodCwoZyxyKT0+e2xldCBpOyhpPUkoZyxyLEEpKSE9PSExJiYoZVtyXT1pfHxnKX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEEsZSl9LE90PUE9PntuSShBLChJLHQpPT57aWYoRihBKSYmWyJhcmd1bWVudHMiLCJjYWxsZXIiLCJjYWxsZWUiXS5pbmRleE9mKHQpIT09LTEpcmV0dXJuITE7bGV0IGU9QVt0XTtpZihGKGUpKXtpZihJLmVudW1lcmFibGU9ITEsIndyaXRhYmxlImluIEkpe0kud3JpdGFibGU9ITE7cmV0dXJufUkuc2V0fHwoSS5zZXQ9KCk9Pnt0aHJvdyBFcnJvcigiQ2FuIG5vdCByZXdyaXRlIHJlYWQtb25seSBtZXRob2QgXCciK3QrIlwnIil9KX19KX0sVHQ9KEEsSSk9PntsZXQgdD17fSxlPWc9PntnLmZvckVhY2gocj0+e3Rbcl09ITB9KX07cmV0dXJuIHEoQSk/ZShBKTplKFN0cmluZyhBKS5zcGxpdChJKSksdH0seHQ9KCk9Pnt9LFB0PShBLEkpPT4oQT0rQSxOdW1iZXIuaXNGaW5pdGUoQSk/QTpJKSxGQT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiLGlJPSIwMTIzNDU2Nzg5IixFST17RElHSVQ6aUksQUxQSEE6RkEsQUxQSEFfRElHSVQ6RkErRkEudG9VcHBlckNhc2UoKStpSX0sanQ9KEE9MTYsST1FSS5BTFBIQV9ESUdJVCk9PntsZXQgdD0iIix7bGVuZ3RoOmV9PUk7Zm9yKDtBLS07KXQrPUlbTWF0aC5yYW5kb20oKSplfDBdO3JldHVybiB0fTtmdW5jdGlvbiBXdChBKXtyZXR1cm4hIShBJiZGKEEuYXBwZW5kKSYmQVtTeW1ib2wudG9TdHJpbmdUYWddPT09IkZvcm1EYXRhIiYmQVtTeW1ib2wuaXRlcmF0b3JdKX12YXIgWnQ9QT0+e2xldCBJPW5ldyBBcnJheSgxMCksdD0oZSxnKT0+e2lmKFFBKGUpKXtpZihJLmluZGV4T2YoZSk+PTApcmV0dXJuO2lmKCEoInRvSlNPTiJpbiBlKSl7SVtnXT1lO2xldCByPXEoZSk/W106e307cmV0dXJuIFYoZSwoaSxzKT0+e2xldCBhPXQoaSxnKzEpOyFaKGEpJiYocltzXT1hKX0pLElbZ109dm9pZCAwLHJ9fXJldHVybiBlfTtyZXR1cm4gdChBLDApfSxWdD1VKCJBc3luY0Z1bmN0aW9uIiksWHQ9QT0+QSYmKFFBKEEpfHxGKEEpKSYmRihBLnRoZW4pJiZGKEEuY2F0Y2gpLEI9e2lzQXJyYXk6cSxpc0FycmF5QnVmZmVyOm9JLGlzQnVmZmVyOmx0LGlzRm9ybURhdGE6U3QsaXNBcnJheUJ1ZmZlclZpZXc6RHQsaXNTdHJpbmc6dXQsaXNOdW1iZXI6QkksaXNCb29sZWFuOmh0LGlzT2JqZWN0OlFBLGlzUGxhaW5PYmplY3Q6QkEsaXNVbmRlZmluZWQ6Wixpc0RhdGU6ZHQsaXNGaWxlOnl0LGlzQmxvYjp3dCxpc1JlZ0V4cDpLdCxpc0Z1bmN0aW9uOkYsaXNTdHJlYW06cHQsaXNVUkxTZWFyY2hQYXJhbXM6RnQsaXNUeXBlZEFycmF5Okh0LGlzRmlsZUxpc3Q6bXQsZm9yRWFjaDpWLG1lcmdlOlJBLGV4dGVuZDpOdCx0cmltOlJ0LHN0cmlwQk9NOlV0LGluaGVyaXRzOkd0LHRvRmxhdE9iamVjdDprdCxraW5kT2Y6Q0Esa2luZE9mVGVzdDpVLGVuZHNXaXRoOkx0LHRvQXJyYXk6SnQsZm9yRWFjaEVudHJ5Oll0LG1hdGNoQWxsOmJ0LGlzSFRNTEZvcm06TXQsaGFzT3duUHJvcGVydHk6ckksaGFzT3duUHJvcDpySSxyZWR1Y2VEZXNjcmlwdG9yczpuSSxmcmVlemVNZXRob2RzOk90LHRvT2JqZWN0U2V0OlR0LHRvQ2FtZWxDYXNlOnF0LG5vb3A6eHQsdG9GaW5pdGVOdW1iZXI6UHQsZmluZEtleTpDSSxnbG9iYWw6c0ksaXNDb250ZXh0RGVmaW5lZDpRSSxBTFBIQUJFVDpFSSxnZW5lcmF0ZVN0cmluZzpqdCxpc1NwZWNDb21wbGlhbnRGb3JtOld0LHRvSlNPTk9iamVjdDpadCxpc0FzeW5jRm46VnQsaXNUaGVuYWJsZTpYdH07ZnVuY3Rpb24gSyhBLEksdCxlLGcpe0Vycm9yLmNhbGwodGhpcyksRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U/RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcyx0aGlzLmNvbnN0cnVjdG9yKTp0aGlzLnN0YWNrPW5ldyBFcnJvcigpLnN0YWNrLHRoaXMubWVzc2FnZT1BLHRoaXMubmFtZT0iQXhpb3NFcnJvciIsSSYmKHRoaXMuY29kZT1JKSx0JiYodGhpcy5jb25maWc9dCksZSYmKHRoaXMucmVxdWVzdD1lKSxnJiYodGhpcy5yZXNwb25zZT1nKX1CLmluaGVyaXRzKEssRXJyb3Ise3RvSlNPTjpmdW5jdGlvbigpe3JldHVybnttZXNzYWdlOnRoaXMubWVzc2FnZSxuYW1lOnRoaXMubmFtZSxkZXNjcmlwdGlvbjp0aGlzLmRlc2NyaXB0aW9uLG51bWJlcjp0aGlzLm51bWJlcixmaWxlTmFtZTp0aGlzLmZpbGVOYW1lLGxpbmVOdW1iZXI6dGhpcy5saW5lTnVtYmVyLGNvbHVtbk51bWJlcjp0aGlzLmNvbHVtbk51bWJlcixzdGFjazp0aGlzLnN0YWNrLGNvbmZpZzpCLnRvSlNPTk9iamVjdCh0aGlzLmNvbmZpZyksY29kZTp0aGlzLmNvZGUsc3RhdHVzOnRoaXMucmVzcG9uc2UmJnRoaXMucmVzcG9uc2Uuc3RhdHVzP3RoaXMucmVzcG9uc2Uuc3RhdHVzOm51bGx9fX0pO3ZhciBhST1LLnByb3RvdHlwZSxjST17fTtbIkVSUl9CQURfT1BUSU9OX1ZBTFVFIiwiRVJSX0JBRF9PUFRJT04iLCJFQ09OTkFCT1JURUQiLCJFVElNRURPVVQiLCJFUlJfTkVUV09SSyIsIkVSUl9GUl9UT09fTUFOWV9SRURJUkVDVFMiLCJFUlJfREVQUkVDQVRFRCIsIkVSUl9CQURfUkVTUE9OU0UiLCJFUlJfQkFEX1JFUVVFU1QiLCJFUlJfQ0FOQ0VMRUQiLCJFUlJfTk9UX1NVUFBPUlQiLCJFUlJfSU5WQUxJRF9VUkwiXS5mb3JFYWNoKEE9PntjSVtBXT17dmFsdWU6QX19KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhLLGNJKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYUksImlzQXhpb3NFcnJvciIse3ZhbHVlOiEwfSk7Sy5mcm9tPShBLEksdCxlLGcscik9PntsZXQgaT1PYmplY3QuY3JlYXRlKGFJKTtyZXR1cm4gQi50b0ZsYXRPYmplY3QoQSxpLGZ1bmN0aW9uKGEpe3JldHVybiBhIT09RXJyb3IucHJvdG90eXBlfSxzPT5zIT09ImlzQXhpb3NFcnJvciIpLEsuY2FsbChpLEEubWVzc2FnZSxJLHQsZSxnKSxpLmNhdXNlPUEsaS5uYW1lPUEubmFtZSxyJiZPYmplY3QuYXNzaWduKGksciksaX07dmFyIGw9Szt2YXIgbkE9bnVsbDtmdW5jdGlvbiBVQShBKXtyZXR1cm4gQi5pc1BsYWluT2JqZWN0KEEpfHxCLmlzQXJyYXkoQSl9ZnVuY3Rpb24gbEkoQSl7cmV0dXJuIEIuZW5kc1dpdGgoQSwiW10iKT9BLnNsaWNlKDAsLTIpOkF9ZnVuY3Rpb24gZkkoQSxJLHQpe3JldHVybiBBP0EuY29uY2F0KEkpLm1hcChmdW5jdGlvbihnLHIpe3JldHVybiBnPWxJKGcpLCF0JiZyPyJbIitnKyJdIjpnfSkuam9pbih0PyIuIjoiIik6SX1mdW5jdGlvbiB6dChBKXtyZXR1cm4gQi5pc0FycmF5KEEpJiYhQS5zb21lKFVBKX12YXIgX3Q9Qi50b0ZsYXRPYmplY3QoQix7fSxudWxsLGZ1bmN0aW9uKEkpe3JldHVybi9eaXNbQS1aXS8udGVzdChJKX0pO2Z1bmN0aW9uIHZ0KEEsSSx0KXtpZighQi5pc09iamVjdChBKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ0YXJnZXQgbXVzdCBiZSBhbiBvYmplY3QiKTtJPUl8fG5ldyhuQXx8Rm9ybURhdGEpLHQ9Qi50b0ZsYXRPYmplY3QodCx7bWV0YVRva2VuczohMCxkb3RzOiExLGluZGV4ZXM6ITF9LCExLGZ1bmN0aW9uKGMsdSl7cmV0dXJuIUIuaXNVbmRlZmluZWQodVtjXSl9KTtsZXQgZT10Lm1ldGFUb2tlbnMsZz10LnZpc2l0b3J8fEMscj10LmRvdHMsaT10LmluZGV4ZXMsYT0odC5CbG9ifHx0eXBlb2YgQmxvYjwidSImJkJsb2IpJiZCLmlzU3BlY0NvbXBsaWFudEZvcm0oSSk7aWYoIUIuaXNGdW5jdGlvbihnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ2aXNpdG9yIG11c3QgYmUgYSBmdW5jdGlvbiIpO2Z1bmN0aW9uIG4oRSl7aWYoRT09PW51bGwpcmV0dXJuIiI7aWYoQi5pc0RhdGUoRSkpcmV0dXJuIEUudG9JU09TdHJpbmcoKTtpZighYSYmQi5pc0Jsb2IoRSkpdGhyb3cgbmV3IGwoIkJsb2IgaXMgbm90IHN1cHBvcnRlZC4gVXNlIGEgQnVmZmVyIGluc3RlYWQuIik7cmV0dXJuIEIuaXNBcnJheUJ1ZmZlcihFKXx8Qi5pc1R5cGVkQXJyYXkoRSk/YSYmdHlwZW9mIEJsb2I9PSJmdW5jdGlvbiI/bmV3IEJsb2IoW0VdKTpCdWZmZXIuZnJvbShFKTpFfWZ1bmN0aW9uIEMoRSxjLHUpe2xldCBkPUU7aWYoRSYmIXUmJnR5cGVvZiBFPT0ib2JqZWN0Iil7aWYoQi5lbmRzV2l0aChjLCJ7fSIpKWM9ZT9jOmMuc2xpY2UoMCwtMiksRT1KU09OLnN0cmluZ2lmeShFKTtlbHNlIGlmKEIuaXNBcnJheShFKSYmenQoRSl8fChCLmlzRmlsZUxpc3QoRSl8fEIuZW5kc1dpdGgoYywiW10iKSkmJihkPUIudG9BcnJheShFKSkpcmV0dXJuIGM9bEkoYyksZC5mb3JFYWNoKGZ1bmN0aW9uKE4sSXQpeyEoQi5pc1VuZGVmaW5lZChOKXx8Tj09PW51bGwpJiZJLmFwcGVuZChpPT09ITA/ZkkoW2NdLEl0LHIpOmk9PT1udWxsP2M6YysiW10iLG4oTikpfSksITF9cmV0dXJuIFVBKEUpPyEwOihJLmFwcGVuZChmSSh1LGMsciksbihFKSksITEpfWxldCBvPVtdLGY9T2JqZWN0LmFzc2lnbihfdCx7ZGVmYXVsdFZpc2l0b3I6Qyxjb252ZXJ0VmFsdWU6bixpc1Zpc2l0YWJsZTpVQX0pO2Z1bmN0aW9uIFEoRSxjKXtpZighQi5pc1VuZGVmaW5lZChFKSl7aWYoby5pbmRleE9mKEUpIT09LTEpdGhyb3cgRXJyb3IoIkNpcmN1bGFyIHJlZmVyZW5jZSBkZXRlY3RlZCBpbiAiK2Muam9pbigiLiIpKTtvLnB1c2goRSksQi5mb3JFYWNoKEUsZnVuY3Rpb24oZCxSKXsoIShCLmlzVW5kZWZpbmVkKGQpfHxkPT09bnVsbCkmJmcuY2FsbChJLGQsQi5pc1N0cmluZyhSKT9SLnRyaW0oKTpSLGMsZikpPT09ITAmJlEoZCxjP2MuY29uY2F0KFIpOltSXSl9KSxvLnBvcCgpfX1pZighQi5pc09iamVjdChBKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJkYXRhIG11c3QgYmUgYW4gb2JqZWN0Iik7cmV0dXJuIFEoQSksSX12YXIgTD12dDtmdW5jdGlvbiBESShBKXtsZXQgST17IiEiOiIlMjUyMSIsIlwnIjoiJTI1MjciLCIoIjoiJTI1MjgiLCIpIjoiJTI1MjkiLCJ+IjoiJTI1N0UiLCIlMjUyMCI6IisiLCIlMjUwMCI6IlxcMCJ9O3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoQSkucmVwbGFjZSgvWyFcJygpfl18JTI1MjB8JTI1MDAvZyxmdW5jdGlvbihlKXtyZXR1cm4gSVtlXX0pfWZ1bmN0aW9uIHVJKEEsSSl7dGhpcy5fcGFpcnM9W10sQSYmTChBLHRoaXMsSSl9dmFyIGhJPXVJLnByb3RvdHlwZTtoSS5hcHBlbmQ9ZnVuY3Rpb24oSSx0KXt0aGlzLl9wYWlycy5wdXNoKFtJLHRdKX07aEkudG9TdHJpbmc9ZnVuY3Rpb24oSSl7bGV0IHQ9ST9mdW5jdGlvbihlKXtyZXR1cm4gSS5jYWxsKHRoaXMsZSxESSl9OkRJO3JldHVybiB0aGlzLl9wYWlycy5tYXAoZnVuY3Rpb24oZyl7cmV0dXJuIHQoZ1swXSkrIj0iK3QoZ1sxXSl9LCIiKS5qb2luKCImIil9O3ZhciBFQT11STtmdW5jdGlvbiAkdChBKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEEpLnJlcGxhY2UoLyUyNTNBL2dpLCI6IikucmVwbGFjZSgvJTI1MjQvZywiJCIpLnJlcGxhY2UoLyUyNTJDL2dpLCIsIikucmVwbGFjZSgvJTI1MjAvZywiKyIpLnJlcGxhY2UoLyUyNTVCL2dpLCJbIikucmVwbGFjZSgvJTI1NUQvZ2ksIl0iKX1mdW5jdGlvbiBYKEEsSSx0KXtpZighSSlyZXR1cm4gQTtsZXQgZT10JiZ0LmVuY29kZXx8JHQsZz10JiZ0LnNlcmlhbGl6ZSxyO2lmKGc/cj1nKEksdCk6cj1CLmlzVVJMU2VhcmNoUGFyYW1zKEkpP0kudG9TdHJpbmcoKTpuZXcgRUEoSSx0KS50b1N0cmluZyhlKSxyKXtsZXQgaT1BLmluZGV4T2YoIiUyMyIpO2khPT0tMSYmKEE9QS5zbGljZSgwLGkpKSxBKz0oQS5pbmRleE9mKCI/Iik9PT0tMT8iPyI6IiYiKStyfXJldHVybiBBfXZhciBHQT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuaGFuZGxlcnM9W119dXNlKEksdCxlKXtyZXR1cm4gdGhpcy5oYW5kbGVycy5wdXNoKHtmdWxmaWxsZWQ6SSxyZWplY3RlZDp0LHN5bmNocm9ub3VzOmU/ZS5zeW5jaHJvbm91czohMSxydW5XaGVuOmU/ZS5ydW5XaGVuOm51bGx9KSx0aGlzLmhhbmRsZXJzLmxlbmd0aC0xfWVqZWN0KEkpe3RoaXMuaGFuZGxlcnNbSV0mJih0aGlzLmhhbmRsZXJzW0ldPW51bGwpfWNsZWFyKCl7dGhpcy5oYW5kbGVycyYmKHRoaXMuaGFuZGxlcnM9W10pfWZvckVhY2goSSl7Qi5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsZnVuY3Rpb24oZSl7ZSE9PW51bGwmJkkoZSl9KX19LGtBPUdBO3ZhciBhQT17c2lsZW50SlNPTlBhcnNpbmc6ITAsZm9yY2VkSlNPTlBhcnNpbmc6ITAsY2xhcmlmeVRpbWVvdXRFcnJvcjohMX07dmFyIGRJPXR5cGVvZiBVUkxTZWFyY2hQYXJhbXM8InUiP1VSTFNlYXJjaFBhcmFtczpFQTt2YXIgeUk9dHlwZW9mIEZvcm1EYXRhPCJ1Ij9Gb3JtRGF0YTpudWxsO3ZhciB3ST10eXBlb2YgQmxvYjwidSI/QmxvYjpudWxsO3ZhciBtST17aXNCcm93c2VyOiEwLGNsYXNzZXM6e1VSTFNlYXJjaFBhcmFtczpkSSxGb3JtRGF0YTp5SSxCbG9iOndJfSxwcm90b2NvbHM6WyJodHRwIiwiaHR0cHMiLCJmaWxlIiwiYmxvYiIsInVybCIsImRhdGEiXX07dmFyIExBPXt9O2V0KExBLHtoYXNCcm93c2VyRW52OigpPT5wSSxoYXNTdGFuZGFyZEJyb3dzZXJFbnY6KCk9PkFlLGhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudjooKT0+SWV9KTt2YXIgcEk9dHlwZW9mIHdpbmRvdzwidSImJnR5cGVvZiBkb2N1bWVudDwidSIsQWU9KEE9PnBJJiZbIlJlYWN0TmF0aXZlIiwiTmF0aXZlU2NyaXB0IiwiTlMiXS5pbmRleE9mKEEpPDApKHR5cGVvZiBuYXZpZ2F0b3I8InUiJiZuYXZpZ2F0b3IucHJvZHVjdCksSWU9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlPCJ1IiYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZ0eXBlb2Ygc2VsZi5pbXBvcnRTY3JpcHRzPT0iZnVuY3Rpb24iO3ZhciB3PXsuLi5MQSwuLi5tSX07ZnVuY3Rpb24gSkEoQSxJKXtyZXR1cm4gTChBLG5ldyB3LmNsYXNzZXMuVVJMU2VhcmNoUGFyYW1zLE9iamVjdC5hc3NpZ24oe3Zpc2l0b3I6ZnVuY3Rpb24odCxlLGcscil7cmV0dXJuIHcuaXNOb2RlJiZCLmlzQnVmZmVyKHQpPyh0aGlzLmFwcGVuZChlLHQudG9TdHJpbmcoImJhc2U2NCIpKSwhMSk6ci5kZWZhdWx0VmlzaXRvci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSxJKSl9ZnVuY3Rpb24gdGUoQSl7cmV0dXJuIEIubWF0Y2hBbGwoL1xcdyt8XFxbKFxcdyopXS9nLEEpLm1hcChJPT5JWzBdPT09IltdIj8iIjpJWzFdfHxJWzBdKX1mdW5jdGlvbiBlZShBKXtsZXQgST17fSx0PU9iamVjdC5rZXlzKEEpLGUsZz10Lmxlbmd0aCxyO2ZvcihlPTA7ZTxnO2UrKylyPXRbZV0sSVtyXT1BW3JdO3JldHVybiBJfWZ1bmN0aW9uIGdlKEEpe2Z1bmN0aW9uIEkodCxlLGcscil7bGV0IGk9dFtyKytdLHM9TnVtYmVyLmlzRmluaXRlKCtpKSxhPXI+PXQubGVuZ3RoO3JldHVybiBpPSFpJiZCLmlzQXJyYXkoZyk/Zy5sZW5ndGg6aSxhPyhCLmhhc093blByb3AoZyxpKT9nW2ldPVtnW2ldLGVdOmdbaV09ZSwhcyk6KCghZ1tpXXx8IUIuaXNPYmplY3QoZ1tpXSkpJiYoZ1tpXT1bXSksSSh0LGUsZ1tpXSxyKSYmQi5pc0FycmF5KGdbaV0pJiYoZ1tpXT1lZShnW2ldKSksIXMpfWlmKEIuaXNGb3JtRGF0YShBKSYmQi5pc0Z1bmN0aW9uKEEuZW50cmllcykpe2xldCB0PXt9O3JldHVybiBCLmZvckVhY2hFbnRyeShBLChlLGcpPT57SSh0ZShlKSxnLHQsMCl9KSx0fXJldHVybiBudWxsfXZhciBjQT1nZTtmdW5jdGlvbiByZShBLEksdCl7aWYoQi5pc1N0cmluZyhBKSl0cnl7cmV0dXJuKEl8fEpTT04ucGFyc2UpKEEpLEIudHJpbShBKX1jYXRjaChlKXtpZihlLm5hbWUhPT0iU3ludGF4RXJyb3IiKXRocm93IGV9cmV0dXJuKHR8fEpTT04uc3RyaW5naWZ5KShBKX12YXIgSEE9e3RyYW5zaXRpb25hbDphQSxhZGFwdGVyOlsieGhyIiwiaHR0cCJdLHRyYW5zZm9ybVJlcXVlc3Q6W2Z1bmN0aW9uKEksdCl7bGV0IGU9dC5nZXRDb250ZW50VHlwZSgpfHwiIixnPWUuaW5kZXhPZigiYXBwbGljYXRpb24vanNvbiIpPi0xLHI9Qi5pc09iamVjdChJKTtpZihyJiZCLmlzSFRNTEZvcm0oSSkmJihJPW5ldyBGb3JtRGF0YShJKSksQi5pc0Zvcm1EYXRhKEkpKXJldHVybiBnJiZnP0pTT04uc3RyaW5naWZ5KGNBKEkpKTpJO2lmKEIuaXNBcnJheUJ1ZmZlcihJKXx8Qi5pc0J1ZmZlcihJKXx8Qi5pc1N0cmVhbShJKXx8Qi5pc0ZpbGUoSSl8fEIuaXNCbG9iKEkpKXJldHVybiBJO2lmKEIuaXNBcnJheUJ1ZmZlclZpZXcoSSkpcmV0dXJuIEkuYnVmZmVyO2lmKEIuaXNVUkxTZWFyY2hQYXJhbXMoSSkpcmV0dXJuIHQuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04IiwhMSksSS50b1N0cmluZygpO2xldCBzO2lmKHIpe2lmKGUuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik+LTEpcmV0dXJuIEpBKEksdGhpcy5mb3JtU2VyaWFsaXplcikudG9TdHJpbmcoKTtpZigocz1CLmlzRmlsZUxpc3QoSSkpfHxlLmluZGV4T2YoIm11bHRpcGFydC9mb3JtLWRhdGEiKT4tMSl7bGV0IGE9dGhpcy5lbnYmJnRoaXMuZW52LkZvcm1EYXRhO3JldHVybiBMKHM/eyJmaWxlc1tdIjpJfTpJLGEmJm5ldyBhLHRoaXMuZm9ybVNlcmlhbGl6ZXIpfX1yZXR1cm4gcnx8Zz8odC5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24vanNvbiIsITEpLHJlKEkpKTpJfV0sdHJhbnNmb3JtUmVzcG9uc2U6W2Z1bmN0aW9uKEkpe2xldCB0PXRoaXMudHJhbnNpdGlvbmFsfHxIQS50cmFuc2l0aW9uYWwsZT10JiZ0LmZvcmNlZEpTT05QYXJzaW5nLGc9dGhpcy5yZXNwb25zZVR5cGU9PT0ianNvbiI7aWYoSSYmQi5pc1N0cmluZyhJKSYmKGUmJiF0aGlzLnJlc3BvbnNlVHlwZXx8Zykpe2xldCBpPSEodCYmdC5zaWxlbnRKU09OUGFyc2luZykmJmc7dHJ5e3JldHVybiBKU09OLnBhcnNlKEkpfWNhdGNoKHMpe2lmKGkpdGhyb3cgcy5uYW1lPT09IlN5bnRheEVycm9yIj9sLmZyb20ocyxsLkVSUl9CQURfUkVTUE9OU0UsdGhpcyxudWxsLHRoaXMucmVzcG9uc2UpOnN9fXJldHVybiBJfV0sdGltZW91dDowLHhzcmZDb29raWVOYW1lOiJYU1JGLVRPS0VOIix4c3JmSGVhZGVyTmFtZToiWC1YU1JGLVRPS0VOIixtYXhDb250ZW50TGVuZ3RoOi0xLG1heEJvZHlMZW5ndGg6LTEsZW52OntGb3JtRGF0YTp3LmNsYXNzZXMuRm9ybURhdGEsQmxvYjp3LmNsYXNzZXMuQmxvYn0sdmFsaWRhdGVTdGF0dXM6ZnVuY3Rpb24oSSl7cmV0dXJuIEk+PTIwMCYmSTwzMDB9LGhlYWRlcnM6e2NvbW1vbjp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoiLCJDb250ZW50LVR5cGUiOnZvaWQgMH19fTtCLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwicG9zdCIsInB1dCIsInBhdGNoIl0sQT0+e0hBLmhlYWRlcnNbQV09e319KTt2YXIgTz1IQTt2YXIgaWU9Qi50b09iamVjdFNldChbImFnZSIsImF1dGhvcml6YXRpb24iLCJjb250ZW50LWxlbmd0aCIsImNvbnRlbnQtdHlwZSIsImV0YWciLCJleHBpcmVzIiwiZnJvbSIsImhvc3QiLCJpZi1tb2RpZmllZC1zaW5jZSIsImlmLXVubW9kaWZpZWQtc2luY2UiLCJsYXN0LW1vZGlmaWVkIiwibG9jYXRpb24iLCJtYXgtZm9yd2FyZHMiLCJwcm94eS1hdXRob3JpemF0aW9uIiwicmVmZXJlciIsInJldHJ5LWFmdGVyIiwidXNlci1hZ2VudCJdKSxTST1BPT57bGV0IEk9e30sdCxlLGc7cmV0dXJuIEEmJkEuc3BsaXQoYCUwQWApLmZvckVhY2goZnVuY3Rpb24oaSl7Zz1pLmluZGV4T2YoIjoiKSx0PWkuc3Vic3RyaW5nKDAsZykudHJpbSgpLnRvTG93ZXJDYXNlKCksZT1pLnN1YnN0cmluZyhnKzEpLnRyaW0oKSwhKCF0fHxJW3RdJiZpZVt0XSkmJih0PT09InNldC1jb29raWUiP0lbdF0/SVt0XS5wdXNoKGUpOklbdF09W2VdOklbdF09SVt0XT9JW3RdKyIsICIrZTplKX0pLEl9O3ZhciBGST1TeW1ib2woImludGVybmFscyIpO2Z1bmN0aW9uIHooQSl7cmV0dXJuIEEmJlN0cmluZyhBKS50cmltKCkudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBmQShBKXtyZXR1cm4gQT09PSExfHxBPT1udWxsP0E6Qi5pc0FycmF5KEEpP0EubWFwKGZBKTpTdHJpbmcoQSl9ZnVuY3Rpb24gb2UoQSl7bGV0IEk9T2JqZWN0LmNyZWF0ZShudWxsKSx0PS8oW15cXHMsOz1dKylcXHMqKD86PVxccyooW14sO10rKSk/L2csZTtmb3IoO2U9dC5leGVjKEEpOylJW2VbMV1dPWVbMl07cmV0dXJuIEl9dmFyIEJlPUE9Pi9eWy1fYS16QS1aMC05XmB8fiwhJTIzJCUmXCcqKy5dKyQvLnRlc3QoQS50cmltKCkpO2Z1bmN0aW9uIFlBKEEsSSx0LGUsZyl7aWYoQi5pc0Z1bmN0aW9uKGUpKXJldHVybiBlLmNhbGwodGhpcyxJLHQpO2lmKGcmJihJPXQpLCEhQi5pc1N0cmluZyhJKSl7aWYoQi5pc1N0cmluZyhlKSlyZXR1cm4gSS5pbmRleE9mKGUpIT09LTE7aWYoQi5pc1JlZ0V4cChlKSlyZXR1cm4gZS50ZXN0KEkpfX1mdW5jdGlvbiBDZShBKXtyZXR1cm4gQS50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8oW2EtelxcZF0pKFxcdyopL2csKEksdCxlKT0+dC50b1VwcGVyQ2FzZSgpK2UpfWZ1bmN0aW9uIHNlKEEsSSl7bGV0IHQ9Qi50b0NhbWVsQ2FzZSgiICIrSSk7WyJnZXQiLCJzZXQiLCJoYXMiXS5mb3JFYWNoKGU9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoQSxlK3Qse3ZhbHVlOmZ1bmN0aW9uKGcscixpKXtyZXR1cm4gdGhpc1tlXS5jYWxsKHRoaXMsSSxnLHIsaSl9LGNvbmZpZ3VyYWJsZTohMH0pfSl9dmFyIFQ9Y2xhc3N7Y29uc3RydWN0b3IoSSl7SSYmdGhpcy5zZXQoSSl9c2V0KEksdCxlKXtsZXQgZz10aGlzO2Z1bmN0aW9uIHIocyxhLG4pe2xldCBDPXooYSk7aWYoIUMpdGhyb3cgbmV3IEVycm9yKCJoZWFkZXIgbmFtZSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZyIpO2xldCBvPUIuZmluZEtleShnLEMpOyghb3x8Z1tvXT09PXZvaWQgMHx8bj09PSEwfHxuPT09dm9pZCAwJiZnW29dIT09ITEpJiYoZ1tvfHxhXT1mQShzKSl9bGV0IGk9KHMsYSk9PkIuZm9yRWFjaChzLChuLEMpPT5yKG4sQyxhKSk7cmV0dXJuIEIuaXNQbGFpbk9iamVjdChJKXx8SSBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3I/aShJLHQpOkIuaXNTdHJpbmcoSSkmJihJPUkudHJpbSgpKSYmIUJlKEkpP2koU0koSSksdCk6SSE9bnVsbCYmcih0LEksZSksdGhpc31nZXQoSSx0KXtpZihJPXooSSksSSl7bGV0IGU9Qi5maW5kS2V5KHRoaXMsSSk7aWYoZSl7bGV0IGc9dGhpc1tlXTtpZighdClyZXR1cm4gZztpZih0PT09ITApcmV0dXJuIG9lKGcpO2lmKEIuaXNGdW5jdGlvbih0KSlyZXR1cm4gdC5jYWxsKHRoaXMsZyxlKTtpZihCLmlzUmVnRXhwKHQpKXJldHVybiB0LmV4ZWMoZyk7dGhyb3cgbmV3IFR5cGVFcnJvcigicGFyc2VyIG11c3QgYmUgYm9vbGVhbnxyZWdleHB8ZnVuY3Rpb24iKX19fWhhcyhJLHQpe2lmKEk9eihJKSxJKXtsZXQgZT1CLmZpbmRLZXkodGhpcyxJKTtyZXR1cm4hIShlJiZ0aGlzW2VdIT09dm9pZCAwJiYoIXR8fFlBKHRoaXMsdGhpc1tlXSxlLHQpKSl9cmV0dXJuITF9ZGVsZXRlKEksdCl7bGV0IGU9dGhpcyxnPSExO2Z1bmN0aW9uIHIoaSl7aWYoaT16KGkpLGkpe2xldCBzPUIuZmluZEtleShlLGkpO3MmJighdHx8WUEoZSxlW3NdLHMsdCkpJiYoZGVsZXRlIGVbc10sZz0hMCl9fXJldHVybiBCLmlzQXJyYXkoSSk/SS5mb3JFYWNoKHIpOnIoSSksZ31jbGVhcihJKXtsZXQgdD1PYmplY3Qua2V5cyh0aGlzKSxlPXQubGVuZ3RoLGc9ITE7Zm9yKDtlLS07KXtsZXQgcj10W2VdOyghSXx8WUEodGhpcyx0aGlzW3JdLHIsSSwhMCkpJiYoZGVsZXRlIHRoaXNbcl0sZz0hMCl9cmV0dXJuIGd9bm9ybWFsaXplKEkpe2xldCB0PXRoaXMsZT17fTtyZXR1cm4gQi5mb3JFYWNoKHRoaXMsKGcscik9PntsZXQgaT1CLmZpbmRLZXkoZSxyKTtpZihpKXt0W2ldPWZBKGcpLGRlbGV0ZSB0W3JdO3JldHVybn1sZXQgcz1JP0NlKHIpOlN0cmluZyhyKS50cmltKCk7cyE9PXImJmRlbGV0ZSB0W3JdLHRbc109ZkEoZyksZVtzXT0hMH0pLHRoaXN9Y29uY2F0KC4uLkkpe3JldHVybiB0aGlzLmNvbnN0cnVjdG9yLmNvbmNhdCh0aGlzLC4uLkkpfXRvSlNPTihJKXtsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBCLmZvckVhY2godGhpcywoZSxnKT0+e2UhPW51bGwmJmUhPT0hMSYmKHRbZ109SSYmQi5pc0FycmF5KGUpP2Uuam9pbigiLCAiKTplKX0pLHR9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSlbU3ltYm9sLml0ZXJhdG9yXSgpfXRvU3RyaW5nKCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMudG9KU09OKCkpLm1hcCgoW0ksdF0pPT5JKyI6ICIrdCkuam9pbihgJTBBYCl9Z2V0W1N5bWJvbC50b1N0cmluZ1RhZ10oKXtyZXR1cm4iQXhpb3NIZWFkZXJzIn1zdGF0aWMgZnJvbShJKXtyZXR1cm4gSSBpbnN0YW5jZW9mIHRoaXM/STpuZXcgdGhpcyhJKX1zdGF0aWMgY29uY2F0KEksLi4udCl7bGV0IGU9bmV3IHRoaXMoSSk7cmV0dXJuIHQuZm9yRWFjaChnPT5lLnNldChnKSksZX1zdGF0aWMgYWNjZXNzb3IoSSl7bGV0IGU9KHRoaXNbRkldPXRoaXNbRkldPXthY2Nlc3NvcnM6e319KS5hY2Nlc3NvcnMsZz10aGlzLnByb3RvdHlwZTtmdW5jdGlvbiByKGkpe2xldCBzPXooaSk7ZVtzXXx8KHNlKGcsaSksZVtzXT0hMCl9cmV0dXJuIEIuaXNBcnJheShJKT9JLmZvckVhY2gocik6cihJKSx0aGlzfX07VC5hY2Nlc3NvcihbIkNvbnRlbnQtVHlwZSIsIkNvbnRlbnQtTGVuZ3RoIiwiQWNjZXB0IiwiQWNjZXB0LUVuY29kaW5nIiwiVXNlci1BZ2VudCIsIkF1dGhvcml6YXRpb24iXSk7Qi5yZWR1Y2VEZXNjcmlwdG9ycyhULnByb3RvdHlwZSwoe3ZhbHVlOkF9LEkpPT57bGV0IHQ9SVswXS50b1VwcGVyQ2FzZSgpK0kuc2xpY2UoMSk7cmV0dXJue2dldDooKT0+QSxzZXQoZSl7dGhpc1t0XT1lfX19KTtCLmZyZWV6ZU1ldGhvZHMoVCk7dmFyIG09VDtmdW5jdGlvbiBfKEEsSSl7bGV0IHQ9dGhpc3x8TyxlPUl8fHQsZz1tLmZyb20oZS5oZWFkZXJzKSxyPWUuZGF0YTtyZXR1cm4gQi5mb3JFYWNoKEEsZnVuY3Rpb24ocyl7cj1zLmNhbGwodCxyLGcubm9ybWFsaXplKCksST9JLnN0YXR1czp2b2lkIDApfSksZy5ub3JtYWxpemUoKSxyfWZ1bmN0aW9uIHYoQSl7cmV0dXJuISEoQSYmQS5fX0NBTkNFTF9fKX1mdW5jdGlvbiBSSShBLEksdCl7bC5jYWxsKHRoaXMsQT8/ImNhbmNlbGVkIixsLkVSUl9DQU5DRUxFRCxJLHQpLHRoaXMubmFtZT0iQ2FuY2VsZWRFcnJvciJ9Qi5pbmhlcml0cyhSSSxsLHtfX0NBTkNFTF9fOiEwfSk7dmFyIEo9Ukk7ZnVuY3Rpb24gYkEoQSxJLHQpe2xldCBlPXQuY29uZmlnLnZhbGlkYXRlU3RhdHVzOyF0LnN0YXR1c3x8IWV8fGUodC5zdGF0dXMpP0EodCk6SShuZXcgbCgiUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK3Quc3RhdHVzLFtsLkVSUl9CQURfUkVRVUVTVCxsLkVSUl9CQURfUkVTUE9OU0VdW01hdGguZmxvb3IodC5zdGF0dXMvMTAwKS00XSx0LmNvbmZpZyx0LnJlcXVlc3QsdCkpfXZhciBOST13Lmhhc1N0YW5kYXJkQnJvd3NlckVudj97d3JpdGUoQSxJLHQsZSxnLHIpe2xldCBpPVtBKyI9IitlbmNvZGVVUklDb21wb25lbnQoSSldO0IuaXNOdW1iZXIodCkmJmkucHVzaCgiZXhwaXJlcz0iK25ldyBEYXRlKHQpLnRvR01UU3RyaW5nKCkpLEIuaXNTdHJpbmcoZSkmJmkucHVzaCgicGF0aD0iK2UpLEIuaXNTdHJpbmcoZykmJmkucHVzaCgiZG9tYWluPSIrZykscj09PSEwJiZpLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1pLmpvaW4oIjsgIil9LHJlYWQoQSl7bGV0IEk9ZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoIihefDtcXFxccyopKCIrQSsiKT0oW147XSopIikpO3JldHVybiBJP2RlY29kZVVSSUNvbXBvbmVudChJWzNdKTpudWxsfSxyZW1vdmUoQSl7dGhpcy53cml0ZShBLCIiLERhdGUubm93KCktODY0ZTUpfX06e3dyaXRlKCl7fSxyZWFkKCl7cmV0dXJuIG51bGx9LHJlbW92ZSgpe319O2Z1bmN0aW9uIE1BKEEpe3JldHVybi9eKFthLXpdW2EtelxcZCtcXC0uXSo6KT9cXC9cXC8vaS50ZXN0KEEpfWZ1bmN0aW9uIHFBKEEsSSl7cmV0dXJuIEk/QS5yZXBsYWNlKC9cXC8rJC8sIiIpKyIvIitJLnJlcGxhY2UoL15cXC8rLywiIik6QX1mdW5jdGlvbiAkKEEsSSl7cmV0dXJuIEEmJiFNQShJKT9xQShBLEkpOkl9dmFyIFVJPXcuaGFzU3RhbmRhcmRCcm93c2VyRW52P2Z1bmN0aW9uKCl7bGV0IEk9Lyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSx0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxlO2Z1bmN0aW9uIGcocil7bGV0IGk9cjtyZXR1cm4gSSYmKHQuc2V0QXR0cmlidXRlKCJocmVmIixpKSxpPXQuaHJlZiksdC5zZXRBdHRyaWJ1dGUoImhyZWYiLGkpLHtocmVmOnQuaHJlZixwcm90b2NvbDp0LnByb3RvY29sP3QucHJvdG9jb2wucmVwbGFjZSgvOiQvLCIiKToiIixob3N0OnQuaG9zdCxzZWFyY2g6dC5zZWFyY2g/dC5zZWFyY2gucmVwbGFjZSgvXlxcPy8sIiIpOiIiLGhhc2g6dC5oYXNoP3QuaGFzaC5yZXBsYWNlKC9eJTIzLywiIik6IiIsaG9zdG5hbWU6dC5ob3N0bmFtZSxwb3J0OnQucG9ydCxwYXRobmFtZTp0LnBhdGhuYW1lLmNoYXJBdCgwKT09PSIvIj90LnBhdGhuYW1lOiIvIit0LnBhdGhuYW1lfX1yZXR1cm4gZT1nKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxmdW5jdGlvbihpKXtsZXQgcz1CLmlzU3RyaW5nKGkpP2coaSk6aTtyZXR1cm4gcy5wcm90b2NvbD09PWUucHJvdG9jb2wmJnMuaG9zdD09PWUuaG9zdH19KCk6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hMH19KCk7ZnVuY3Rpb24gS0EoQSl7bGV0IEk9L14oWy0rXFx3XXsxLDI1fSkoOj9cXC9cXC98OikvLmV4ZWMoQSk7cmV0dXJuIEkmJklbMV18fCIifWZ1bmN0aW9uIFFlKEEsSSl7QT1BfHwxMDtsZXQgdD1uZXcgQXJyYXkoQSksZT1uZXcgQXJyYXkoQSksZz0wLHI9MCxpO3JldHVybiBJPUkhPT12b2lkIDA/SToxZTMsZnVuY3Rpb24oYSl7bGV0IG49RGF0ZS5ub3coKSxDPWVbcl07aXx8KGk9biksdFtnXT1hLGVbZ109bjtsZXQgbz1yLGY9MDtmb3IoO28hPT1nOylmKz10W28rK10sbz1vJUE7aWYoZz0oZysxKSVBLGc9PT1yJiYocj0ocisxKSVBKSxuLWk8SSlyZXR1cm47bGV0IFE9QyYmbi1DO3JldHVybiBRP01hdGgucm91bmQoZioxZTMvUSk6dm9pZCAwfX12YXIgR0k9UWU7ZnVuY3Rpb24ga0koQSxJKXtsZXQgdD0wLGU9R0koNTAsMjUwKTtyZXR1cm4gZz0+e2xldCByPWcubG9hZGVkLGk9Zy5sZW5ndGhDb21wdXRhYmxlP2cudG90YWw6dm9pZCAwLHM9ci10LGE9ZShzKSxuPXI8PWk7dD1yO2xldCBDPXtsb2FkZWQ6cix0b3RhbDppLHByb2dyZXNzOmk/ci9pOnZvaWQgMCxieXRlczpzLHJhdGU6YXx8dm9pZCAwLGVzdGltYXRlZDphJiZpJiZuPyhpLXIpL2E6dm9pZCAwLGV2ZW50Omd9O0NbST8iZG93bmxvYWQiOiJ1cGxvYWQiXT0hMCxBKEMpfX12YXIgbmU9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0PCJ1IixMST1uZSYmZnVuY3Rpb24oQSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQsZSl7bGV0IGc9QS5kYXRhLHI9bS5mcm9tKEEuaGVhZGVycykubm9ybWFsaXplKCkse3Jlc3BvbnNlVHlwZTppLHdpdGhYU1JGVG9rZW46c309QSxhO2Z1bmN0aW9uIG4oKXtBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKGEpLEEuc2lnbmFsJiZBLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsYSl9bGV0IEM7aWYoQi5pc0Zvcm1EYXRhKGcpKXtpZih3Lmhhc1N0YW5kYXJkQnJvd3NlckVudnx8dy5oYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnYpci5zZXRDb250ZW50VHlwZSghMSk7ZWxzZSBpZigoQz1yLmdldENvbnRlbnRUeXBlKCkpIT09ITEpe2xldFtjLC4uLnVdPUM/Qy5zcGxpdCgiOyIpLm1hcChkPT5kLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pOltdO3Iuc2V0Q29udGVudFR5cGUoW2N8fCJtdWx0aXBhcnQvZm9ybS1kYXRhIiwuLi51XS5qb2luKCI7ICIpKX19bGV0IG89bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKEEuYXV0aCl7bGV0IGM9QS5hdXRoLnVzZXJuYW1lfHwiIix1PUEuYXV0aC5wYXNzd29yZD91bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoQS5hdXRoLnBhc3N3b3JkKSk6IiI7ci5zZXQoIkF1dGhvcml6YXRpb24iLCJCYXNpYyAiK2J0b2EoYysiOiIrdSkpfWxldCBmPSQoQS5iYXNlVVJMLEEudXJsKTtvLm9wZW4oQS5tZXRob2QudG9VcHBlckNhc2UoKSxYKGYsQS5wYXJhbXMsQS5wYXJhbXNTZXJpYWxpemVyKSwhMCksby50aW1lb3V0PUEudGltZW91dDtmdW5jdGlvbiBRKCl7aWYoIW8pcmV0dXJuO2xldCBjPW0uZnJvbSgiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzImluIG8mJm8uZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpLGQ9e2RhdGE6IWl8fGk9PT0idGV4dCJ8fGk9PT0ianNvbiI/by5yZXNwb25zZVRleHQ6by5yZXNwb25zZSxzdGF0dXM6by5zdGF0dXMsc3RhdHVzVGV4dDpvLnN0YXR1c1RleHQsaGVhZGVyczpjLGNvbmZpZzpBLHJlcXVlc3Q6b307YkEoZnVuY3Rpb24oTil7dChOKSxuKCl9LGZ1bmN0aW9uKE4pe2UoTiksbigpfSxkKSxvPW51bGx9aWYoIm9ubG9hZGVuZCJpbiBvP28ub25sb2FkZW5kPVE6by5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXshb3x8by5yZWFkeVN0YXRlIT09NHx8by5zdGF0dXM9PT0wJiYhKG8ucmVzcG9uc2VVUkwmJm8ucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKT09PTApfHxzZXRUaW1lb3V0KFEpfSxvLm9uYWJvcnQ9ZnVuY3Rpb24oKXtvJiYoZShuZXcgbCgiUmVxdWVzdCBhYm9ydGVkIixsLkVDT05OQUJPUlRFRCxBLG8pKSxvPW51bGwpfSxvLm9uZXJyb3I9ZnVuY3Rpb24oKXtlKG5ldyBsKCJOZXR3b3JrIEVycm9yIixsLkVSUl9ORVRXT1JLLEEsbykpLG89bnVsbH0sby5vbnRpbWVvdXQ9ZnVuY3Rpb24oKXtsZXQgdT1BLnRpbWVvdXQ/InRpbWVvdXQgb2YgIitBLnRpbWVvdXQrIm1zIGV4Y2VlZGVkIjoidGltZW91dCBleGNlZWRlZCIsZD1BLnRyYW5zaXRpb25hbHx8YUE7QS50aW1lb3V0RXJyb3JNZXNzYWdlJiYodT1BLnRpbWVvdXRFcnJvck1lc3NhZ2UpLGUobmV3IGwodSxkLmNsYXJpZnlUaW1lb3V0RXJyb3I/bC5FVElNRURPVVQ6bC5FQ09OTkFCT1JURUQsQSxvKSksbz1udWxsfSx3Lmhhc1N0YW5kYXJkQnJvd3NlckVudiYmKHMmJkIuaXNGdW5jdGlvbihzKSYmKHM9cyhBKSksc3x8cyE9PSExJiZVSShmKSkpe2xldCBjPUEueHNyZkhlYWRlck5hbWUmJkEueHNyZkNvb2tpZU5hbWUmJk5JLnJlYWQoQS54c3JmQ29va2llTmFtZSk7YyYmci5zZXQoQS54c3JmSGVhZGVyTmFtZSxjKX1nPT09dm9pZCAwJiZyLnNldENvbnRlbnRUeXBlKG51bGwpLCJzZXRSZXF1ZXN0SGVhZGVyImluIG8mJkIuZm9yRWFjaChyLnRvSlNPTigpLGZ1bmN0aW9uKHUsZCl7by5zZXRSZXF1ZXN0SGVhZGVyKGQsdSl9KSxCLmlzVW5kZWZpbmVkKEEud2l0aENyZWRlbnRpYWxzKXx8KG8ud2l0aENyZWRlbnRpYWxzPSEhQS53aXRoQ3JlZGVudGlhbHMpLGkmJmkhPT0ianNvbiImJihvLnJlc3BvbnNlVHlwZT1BLnJlc3BvbnNlVHlwZSksdHlwZW9mIEEub25Eb3dubG9hZFByb2dyZXNzPT0iZnVuY3Rpb24iJiZvLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixrSShBLm9uRG93bmxvYWRQcm9ncmVzcywhMCkpLHR5cGVvZiBBLm9uVXBsb2FkUHJvZ3Jlc3M9PSJmdW5jdGlvbiImJm8udXBsb2FkJiZvLnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsa0koQS5vblVwbG9hZFByb2dyZXNzKSksKEEuY2FuY2VsVG9rZW58fEEuc2lnbmFsKSYmKGE9Yz0+e28mJihlKCFjfHxjLnR5cGU/bmV3IEoobnVsbCxBLG8pOmMpLG8uYWJvcnQoKSxvPW51bGwpfSxBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnN1YnNjcmliZShhKSxBLnNpZ25hbCYmKEEuc2lnbmFsLmFib3J0ZWQ/YSgpOkEuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixhKSkpO2xldCBFPUtBKGYpO2lmKEUmJncucHJvdG9jb2xzLmluZGV4T2YoRSk9PT0tMSl7ZShuZXcgbCgiVW5zdXBwb3J0ZWQgcHJvdG9jb2wgIitFKyI6IixsLkVSUl9CQURfUkVRVUVTVCxBKSk7cmV0dXJufW8uc2VuZChnfHxudWxsKX0pfTt2YXIgT0E9e2h0dHA6bkEseGhyOkxJfTtCLmZvckVhY2goT0EsKEEsSSk9PntpZihBKXt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KEEsIm5hbWUiLHt2YWx1ZTpJfSl9Y2F0Y2h7fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJhZGFwdGVyTmFtZSIse3ZhbHVlOkl9KX19KTt2YXIgSkk9QT0+YC0gJHtBfWAsRWU9QT0+Qi5pc0Z1bmN0aW9uKEEpfHxBPT09bnVsbHx8QT09PSExLGxBPXtnZXRBZGFwdGVyOkE9PntBPUIuaXNBcnJheShBKT9BOltBXTtsZXR7bGVuZ3RoOkl9PUEsdCxlLGc9e307Zm9yKGxldCByPTA7cjxJO3IrKyl7dD1BW3JdO2xldCBpO2lmKGU9dCwhRWUodCkmJihlPU9BWyhpPVN0cmluZyh0KSkudG9Mb3dlckNhc2UoKV0sZT09PXZvaWQgMCkpdGhyb3cgbmV3IGwoYFVua25vd24gYWRhcHRlciBcJyR7aX1cJ2ApO2lmKGUpYnJlYWs7Z1tpfHwiJTIzIityXT1lfWlmKCFlKXtsZXQgcj1PYmplY3QuZW50cmllcyhnKS5tYXAoKFtzLGFdKT0+YGFkYXB0ZXIgJHtzfSBgKyhhPT09ITE/ImlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGVudmlyb25tZW50IjoiaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgYnVpbGQiKSksaT1JP3IubGVuZ3RoPjE/YHNpbmNlIDolMEFgK3IubWFwKEpJKS5qb2luKGAlMEFgKToiICIrSkkoclswXSk6ImFzIG5vIGFkYXB0ZXIgc3BlY2lmaWVkIjt0aHJvdyBuZXcgbCgiVGhlcmUgaXMgbm8gc3VpdGFibGUgYWRhcHRlciB0byBkaXNwYXRjaCB0aGUgcmVxdWVzdCAiK2ksIkVSUl9OT1RfU1VQUE9SVCIpfXJldHVybiBlfSxhZGFwdGVyczpPQX07ZnVuY3Rpb24gVEEoQSl7aWYoQS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCksQS5zaWduYWwmJkEuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IEoobnVsbCxBKX1mdW5jdGlvbiBEQShBKXtyZXR1cm4gVEEoQSksQS5oZWFkZXJzPW0uZnJvbShBLmhlYWRlcnMpLEEuZGF0YT1fLmNhbGwoQSxBLnRyYW5zZm9ybVJlcXVlc3QpLFsicG9zdCIsInB1dCIsInBhdGNoIl0uaW5kZXhPZihBLm1ldGhvZCkhPT0tMSYmQS5oZWFkZXJzLnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLCExKSxsQS5nZXRBZGFwdGVyKEEuYWRhcHRlcnx8Ty5hZGFwdGVyKShBKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBUQShBKSxlLmRhdGE9Xy5jYWxsKEEsQS50cmFuc2Zvcm1SZXNwb25zZSxlKSxlLmhlYWRlcnM9bS5mcm9tKGUuaGVhZGVycyksZX0sZnVuY3Rpb24oZSl7cmV0dXJuIHYoZSl8fChUQShBKSxlJiZlLnJlc3BvbnNlJiYoZS5yZXNwb25zZS5kYXRhPV8uY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2UsZS5yZXNwb25zZSksZS5yZXNwb25zZS5oZWFkZXJzPW0uZnJvbShlLnJlc3BvbnNlLmhlYWRlcnMpKSksUHJvbWlzZS5yZWplY3QoZSl9KX12YXIgSEk9QT0+QSBpbnN0YW5jZW9mIG0/QS50b0pTT04oKTpBO2Z1bmN0aW9uIEcoQSxJKXtJPUl8fHt9O2xldCB0PXt9O2Z1bmN0aW9uIGUobixDLG8pe3JldHVybiBCLmlzUGxhaW5PYmplY3QobikmJkIuaXNQbGFpbk9iamVjdChDKT9CLm1lcmdlLmNhbGwoe2Nhc2VsZXNzOm99LG4sQyk6Qi5pc1BsYWluT2JqZWN0KEMpP0IubWVyZ2Uoe30sQyk6Qi5pc0FycmF5KEMpP0Muc2xpY2UoKTpDfWZ1bmN0aW9uIGcobixDLG8pe2lmKEIuaXNVbmRlZmluZWQoQykpe2lmKCFCLmlzVW5kZWZpbmVkKG4pKXJldHVybiBlKHZvaWQgMCxuLG8pfWVsc2UgcmV0dXJuIGUobixDLG8pfWZ1bmN0aW9uIHIobixDKXtpZighQi5pc1VuZGVmaW5lZChDKSlyZXR1cm4gZSh2b2lkIDAsQyl9ZnVuY3Rpb24gaShuLEMpe2lmKEIuaXNVbmRlZmluZWQoQykpe2lmKCFCLmlzVW5kZWZpbmVkKG4pKXJldHVybiBlKHZvaWQgMCxuKX1lbHNlIHJldHVybiBlKHZvaWQgMCxDKX1mdW5jdGlvbiBzKG4sQyxvKXtpZihvIGluIEkpcmV0dXJuIGUobixDKTtpZihvIGluIEEpcmV0dXJuIGUodm9pZCAwLG4pfWxldCBhPXt1cmw6cixtZXRob2Q6cixkYXRhOnIsYmFzZVVSTDppLHRyYW5zZm9ybVJlcXVlc3Q6aSx0cmFuc2Zvcm1SZXNwb25zZTppLHBhcmFtc1NlcmlhbGl6ZXI6aSx0aW1lb3V0OmksdGltZW91dE1lc3NhZ2U6aSx3aXRoQ3JlZGVudGlhbHM6aSx3aXRoWFNSRlRva2VuOmksYWRhcHRlcjppLHJlc3BvbnNlVHlwZTppLHhzcmZDb29raWVOYW1lOmkseHNyZkhlYWRlck5hbWU6aSxvblVwbG9hZFByb2dyZXNzOmksb25Eb3dubG9hZFByb2dyZXNzOmksZGVjb21wcmVzczppLG1heENvbnRlbnRMZW5ndGg6aSxtYXhCb2R5TGVuZ3RoOmksYmVmb3JlUmVkaXJlY3Q6aSx0cmFuc3BvcnQ6aSxodHRwQWdlbnQ6aSxodHRwc0FnZW50OmksY2FuY2VsVG9rZW46aSxzb2NrZXRQYXRoOmkscmVzcG9uc2VFbmNvZGluZzppLHZhbGlkYXRlU3RhdHVzOnMsaGVhZGVyczoobixDKT0+ZyhISShuKSxISShDKSwhMCl9O3JldHVybiBCLmZvckVhY2goT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxBLEkpKSxmdW5jdGlvbihDKXtsZXQgbz1hW0NdfHxnLGY9byhBW0NdLElbQ10sQyk7Qi5pc1VuZGVmaW5lZChmKSYmbyE9PXN8fCh0W0NdPWYpfSksdH12YXIgdUE9IjEuNi4yIjt2YXIgeEE9e307WyJvYmplY3QiLCJib29sZWFuIiwibnVtYmVyIiwiZnVuY3Rpb24iLCJzdHJpbmciLCJzeW1ib2wiXS5mb3JFYWNoKChBLEkpPT57eEFbQV09ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPT09QXx8ImEiKyhJPDE/Im4gIjoiICIpK0F9fSk7dmFyIFlJPXt9O3hBLnRyYW5zaXRpb25hbD1mdW5jdGlvbihJLHQsZSl7ZnVuY3Rpb24gZyhyLGkpe3JldHVybiJbQXhpb3MgdiIrdUErIl0gVHJhbnNpdGlvbmFsIG9wdGlvbiBcJyIrcisiXCciK2krKGU/Ii4gIitlOiIiKX1yZXR1cm4ocixpLHMpPT57aWYoST09PSExKXRocm93IG5ldyBsKGcoaSwiIGhhcyBiZWVuIHJlbW92ZWQiKyh0PyIgaW4gIit0OiIiKSksbC5FUlJfREVQUkVDQVRFRCk7cmV0dXJuIHQmJiFZSVtpXSYmKFlJW2ldPSEwLGNvbnNvbGUud2FybihnKGksIiBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYiK3QrIiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSIpKSksST9JKHIsaSxzKTohMH19O2Z1bmN0aW9uIGFlKEEsSSx0KXtpZih0eXBlb2YgQSE9Im9iamVjdCIpdGhyb3cgbmV3IGwoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiLGwuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2xldCBlPU9iamVjdC5rZXlzKEEpLGc9ZS5sZW5ndGg7Zm9yKDtnLS0gPjA7KXtsZXQgcj1lW2ddLGk9SVtyXTtpZihpKXtsZXQgcz1BW3JdLGE9cz09PXZvaWQgMHx8aShzLHIsQSk7aWYoYSE9PSEwKXRocm93IG5ldyBsKCJvcHRpb24gIityKyIgbXVzdCBiZSAiK2EsbC5FUlJfQkFEX09QVElPTl9WQUxVRSk7Y29udGludWV9aWYodCE9PSEwKXRocm93IG5ldyBsKCJVbmtub3duIG9wdGlvbiAiK3IsbC5FUlJfQkFEX09QVElPTil9fXZhciBoQT17YXNzZXJ0T3B0aW9uczphZSx2YWxpZGF0b3JzOnhBfTt2YXIgSD1oQS52YWxpZGF0b3JzLHg9Y2xhc3N7Y29uc3RydWN0b3IoSSl7dGhpcy5kZWZhdWx0cz1JLHRoaXMuaW50ZXJjZXB0b3JzPXtyZXF1ZXN0Om5ldyBrQSxyZXNwb25zZTpuZXcga0F9fXJlcXVlc3QoSSx0KXt0eXBlb2YgST09InN0cmluZyI/KHQ9dHx8e30sdC51cmw9SSk6dD1JfHx7fSx0PUcodGhpcy5kZWZhdWx0cyx0KTtsZXR7dHJhbnNpdGlvbmFsOmUscGFyYW1zU2VyaWFsaXplcjpnLGhlYWRlcnM6cn09dDtlIT09dm9pZCAwJiZoQS5hc3NlcnRPcHRpb25zKGUse3NpbGVudEpTT05QYXJzaW5nOkgudHJhbnNpdGlvbmFsKEguYm9vbGVhbiksZm9yY2VkSlNPTlBhcnNpbmc6SC50cmFuc2l0aW9uYWwoSC5ib29sZWFuKSxjbGFyaWZ5VGltZW91dEVycm9yOkgudHJhbnNpdGlvbmFsKEguYm9vbGVhbil9LCExKSxnIT1udWxsJiYoQi5pc0Z1bmN0aW9uKGcpP3QucGFyYW1zU2VyaWFsaXplcj17c2VyaWFsaXplOmd9OmhBLmFzc2VydE9wdGlvbnMoZyx7ZW5jb2RlOkguZnVuY3Rpb24sc2VyaWFsaXplOkguZnVuY3Rpb259LCEwKSksdC5tZXRob2Q9KHQubWV0aG9kfHx0aGlzLmRlZmF1bHRzLm1ldGhvZHx8ImdldCIpLnRvTG93ZXJDYXNlKCk7bGV0IGk9ciYmQi5tZXJnZShyLmNvbW1vbixyW3QubWV0aG9kXSk7ciYmQi5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCIsImNvbW1vbiJdLEU9PntkZWxldGUgcltFXX0pLHQuaGVhZGVycz1tLmNvbmNhdChpLHIpO2xldCBzPVtdLGE9ITA7dGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKGZ1bmN0aW9uKGMpe3R5cGVvZiBjLnJ1bldoZW49PSJmdW5jdGlvbiImJmMucnVuV2hlbih0KT09PSExfHwoYT1hJiZjLnN5bmNocm9ub3VzLHMudW5zaGlmdChjLmZ1bGZpbGxlZCxjLnJlamVjdGVkKSl9KTtsZXQgbj1bXTt0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKGZ1bmN0aW9uKGMpe24ucHVzaChjLmZ1bGZpbGxlZCxjLnJlamVjdGVkKX0pO2xldCBDLG89MCxmO2lmKCFhKXtsZXQgRT1bREEuYmluZCh0aGlzKSx2b2lkIDBdO2ZvcihFLnVuc2hpZnQuYXBwbHkoRSxzKSxFLnB1c2guYXBwbHkoRSxuKSxmPUUubGVuZ3RoLEM9UHJvbWlzZS5yZXNvbHZlKHQpO288ZjspQz1DLnRoZW4oRVtvKytdLEVbbysrXSk7cmV0dXJuIEN9Zj1zLmxlbmd0aDtsZXQgUT10O2ZvcihvPTA7bzxmOyl7bGV0IEU9c1tvKytdLGM9c1tvKytdO3RyeXtRPUUoUSl9Y2F0Y2godSl7Yy5jYWxsKHRoaXMsdSk7YnJlYWt9fXRyeXtDPURBLmNhbGwodGhpcyxRKX1jYXRjaChFKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoRSl9Zm9yKG89MCxmPW4ubGVuZ3RoO288ZjspQz1DLnRoZW4obltvKytdLG5bbysrXSk7cmV0dXJuIEN9Z2V0VXJpKEkpe0k9Ryh0aGlzLmRlZmF1bHRzLEkpO2xldCB0PSQoSS5iYXNlVVJMLEkudXJsKTtyZXR1cm4gWCh0LEkucGFyYW1zLEkucGFyYW1zU2VyaWFsaXplcil9fTtCLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyJdLGZ1bmN0aW9uKEkpe3gucHJvdG90eXBlW0ldPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucmVxdWVzdChHKGV8fHt9LHttZXRob2Q6SSx1cmw6dCxkYXRhOihlfHx7fSkuZGF0YX0pKX19KTtCLmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSxmdW5jdGlvbihJKXtmdW5jdGlvbiB0KGUpe3JldHVybiBmdW5jdGlvbihyLGkscyl7cmV0dXJuIHRoaXMucmVxdWVzdChHKHN8fHt9LHttZXRob2Q6SSxoZWFkZXJzOmU/eyJDb250ZW50LVR5cGUiOiJtdWx0aXBhcnQvZm9ybS1kYXRhIn06e30sdXJsOnIsZGF0YTppfSkpfX14LnByb3RvdHlwZVtJXT10KCkseC5wcm90b3R5cGVbSSsiRm9ybSJdPXQoITApfSk7dmFyIEFBPXg7dmFyIFBBPWNsYXNzIEF7Y29uc3RydWN0b3IoSSl7aWYodHlwZW9mIEkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO2xldCB0O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihyKXt0PXJ9KTtsZXQgZT10aGlzO3RoaXMucHJvbWlzZS50aGVuKGc9PntpZighZS5fbGlzdGVuZXJzKXJldHVybjtsZXQgcj1lLl9saXN0ZW5lcnMubGVuZ3RoO2Zvcig7ci0tID4wOyllLl9saXN0ZW5lcnNbcl0oZyk7ZS5fbGlzdGVuZXJzPW51bGx9KSx0aGlzLnByb21pc2UudGhlbj1nPT57bGV0IHIsaT1uZXcgUHJvbWlzZShzPT57ZS5zdWJzY3JpYmUocykscj1zfSkudGhlbihnKTtyZXR1cm4gaS5jYW5jZWw9ZnVuY3Rpb24oKXtlLnVuc3Vic2NyaWJlKHIpfSxpfSxJKGZ1bmN0aW9uKHIsaSxzKXtlLnJlYXNvbnx8KGUucmVhc29uPW5ldyBKKHIsaSxzKSx0KGUucmVhc29uKSl9KX10aHJvd0lmUmVxdWVzdGVkKCl7aWYodGhpcy5yZWFzb24pdGhyb3cgdGhpcy5yZWFzb259c3Vic2NyaWJlKEkpe2lmKHRoaXMucmVhc29uKXtJKHRoaXMucmVhc29uKTtyZXR1cm59dGhpcy5fbGlzdGVuZXJzP3RoaXMuX2xpc3RlbmVycy5wdXNoKEkpOnRoaXMuX2xpc3RlbmVycz1bSV19dW5zdWJzY3JpYmUoSSl7aWYoIXRoaXMuX2xpc3RlbmVycylyZXR1cm47bGV0IHQ9dGhpcy5fbGlzdGVuZXJzLmluZGV4T2YoSSk7dCE9PS0xJiZ0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKHQsMSl9c3RhdGljIHNvdXJjZSgpe2xldCBJO3JldHVybnt0b2tlbjpuZXcgQShmdW5jdGlvbihnKXtJPWd9KSxjYW5jZWw6SX19fSxiST1QQTtmdW5jdGlvbiBqQShBKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIEEuYXBwbHkobnVsbCx0KX19ZnVuY3Rpb24gV0EoQSl7cmV0dXJuIEIuaXNPYmplY3QoQSkmJkEuaXNBeGlvc0Vycm9yPT09ITB9dmFyIFpBPXtDb250aW51ZToxMDAsU3dpdGNoaW5nUHJvdG9jb2xzOjEwMSxQcm9jZXNzaW5nOjEwMixFYXJseUhpbnRzOjEwMyxPazoyMDAsQ3JlYXRlZDoyMDEsQWNjZXB0ZWQ6MjAyLE5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbjoyMDMsTm9Db250ZW50OjIwNCxSZXNldENvbnRlbnQ6MjA1LFBhcnRpYWxDb250ZW50OjIwNixNdWx0aVN0YXR1czoyMDcsQWxyZWFkeVJlcG9ydGVkOjIwOCxJbVVzZWQ6MjI2LE11bHRpcGxlQ2hvaWNlczozMDAsTW92ZWRQZXJtYW5lbnRseTozMDEsRm91bmQ6MzAyLFNlZU90aGVyOjMwMyxOb3RNb2RpZmllZDozMDQsVXNlUHJveHk6MzA1LFVudXNlZDozMDYsVGVtcG9yYXJ5UmVkaXJlY3Q6MzA3LFBlcm1hbmVudFJlZGlyZWN0OjMwOCxCYWRSZXF1ZXN0OjQwMCxVbmF1dGhvcml6ZWQ6NDAxLFBheW1lbnRSZXF1aXJlZDo0MDIsRm9yYmlkZGVuOjQwMyxOb3RGb3VuZDo0MDQsTWV0aG9kTm90QWxsb3dlZDo0MDUsTm90QWNjZXB0YWJsZTo0MDYsUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkOjQwNyxSZXF1ZXN0VGltZW91dDo0MDgsQ29uZmxpY3Q6NDA5LEdvbmU6NDEwLExlbmd0aFJlcXVpcmVkOjQxMSxQcmVjb25kaXRpb25GYWlsZWQ6NDEyLFBheWxvYWRUb29MYXJnZTo0MTMsVXJpVG9vTG9uZzo0MTQsVW5zdXBwb3J0ZWRNZWRpYVR5cGU6NDE1LFJhbmdlTm90U2F0aXNmaWFibGU6NDE2LEV4cGVjdGF0aW9uRmFpbGVkOjQxNyxJbUFUZWFwb3Q6NDE4LE1pc2RpcmVjdGVkUmVxdWVzdDo0MjEsVW5wcm9jZXNzYWJsZUVudGl0eTo0MjIsTG9ja2VkOjQyMyxGYWlsZWREZXBlbmRlbmN5OjQyNCxUb29FYXJseTo0MjUsVXBncmFkZVJlcXVpcmVkOjQyNixQcmVjb25kaXRpb25SZXF1aXJlZDo0MjgsVG9vTWFueVJlcXVlc3RzOjQyOSxSZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2U6NDMxLFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zOjQ1MSxJbnRlcm5hbFNlcnZlckVycm9yOjUwMCxOb3RJbXBsZW1lbnRlZDo1MDEsQmFkR2F0ZXdheTo1MDIsU2VydmljZVVuYXZhaWxhYmxlOjUwMyxHYXRld2F5VGltZW91dDo1MDQsSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQ6NTA1LFZhcmlhbnRBbHNvTmVnb3RpYXRlczo1MDYsSW5zdWZmaWNpZW50U3RvcmFnZTo1MDcsTG9vcERldGVjdGVkOjUwOCxOb3RFeHRlbmRlZDo1MTAsTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6NTExfTtPYmplY3QuZW50cmllcyhaQSkuZm9yRWFjaCgoW0EsSV0pPT57WkFbSV09QX0pO3ZhciBNST1aQTtmdW5jdGlvbiBxSShBKXtsZXQgST1uZXcgQUEoQSksdD1XKEFBLnByb3RvdHlwZS5yZXF1ZXN0LEkpO3JldHVybiBCLmV4dGVuZCh0LEFBLnByb3RvdHlwZSxJLHthbGxPd25LZXlzOiEwfSksQi5leHRlbmQodCxJLG51bGwse2FsbE93bktleXM6ITB9KSx0LmNyZWF0ZT1mdW5jdGlvbihnKXtyZXR1cm4gcUkoRyhBLGcpKX0sdH12YXIgaD1xSShPKTtoLkF4aW9zPUFBO2guQ2FuY2VsZWRFcnJvcj1KO2guQ2FuY2VsVG9rZW49Ykk7aC5pc0NhbmNlbD12O2guVkVSU0lPTj11QTtoLnRvRm9ybURhdGE9TDtoLkF4aW9zRXJyb3I9bDtoLkNhbmNlbD1oLkNhbmNlbGVkRXJyb3I7aC5hbGw9ZnVuY3Rpb24oSSl7cmV0dXJuIFByb21pc2UuYWxsKEkpfTtoLnNwcmVhZD1qQTtoLmlzQXhpb3NFcnJvcj1XQTtoLm1lcmdlQ29uZmlnPUc7aC5BeGlvc0hlYWRlcnM9bTtoLmZvcm1Ub0pTT049QT0+Y0EoQi5pc0hUTUxGb3JtKEEpP25ldyBGb3JtRGF0YShBKTpBKTtoLmdldEFkYXB0ZXI9bEEuZ2V0QWRhcHRlcjtoLkh0dHBTdGF0dXNDb2RlPU1JO2guZGVmYXVsdD1oO3ZhciBkQT1oO3ZhcntBeGlvczpvaSxBeGlvc0Vycm9yOkJpLENhbmNlbGVkRXJyb3I6Q2ksaXNDYW5jZWw6c2ksQ2FuY2VsVG9rZW46UWksVkVSU0lPTjpuaSxhbGw6RWksQ2FuY2VsOmFpLGlzQXhpb3NFcnJvcjpjaSxzcHJlYWQ6ZmksdG9Gb3JtRGF0YTpsaSxBeGlvc0hlYWRlcnM6RGksSHR0cFN0YXR1c0NvZGU6dWksZm9ybVRvSlNPTjpoaSxnZXRBZGFwdGVyOmRpLG1lcmdlQ29uZmlnOnlpfT1kQTt2YXIgSUEsayxYQSxWQT17ZW52OntlbXNjcmlwdGVuX25vdGlmeV9tZW1vcnlfZ3Jvd3RoOmZ1bmN0aW9uKEEpe1hBPW5ldyBVaW50OEFycmF5KGsuZXhwb3J0cy5tZW1vcnkuYnVmZmVyKX19fSx5QT1jbGFzc3tpbml0KCl7cmV0dXJuIElBfHwodHlwZW9mIGZldGNoPCJ1Ij9JQT1mZXRjaCgiZGF0YTphcHBsaWNhdGlvbi93YXNtO2Jhc2U2NCwiK0tJKS50aGVuKEk9PkkuYXJyYXlCdWZmZXIoKSkudGhlbihJPT5XZWJBc3NlbWJseS5pbnN0YW50aWF0ZShJLFZBKSkudGhlbih0aGlzLl9pbml0KTpJQT1XZWJBc3NlbWJseS5pbnN0YW50aWF0ZShCdWZmZXIuZnJvbShLSSwiYmFzZTY0IiksVkEpLnRoZW4odGhpcy5faW5pdCksSUEpfV9pbml0KEkpe2s9SS5pbnN0YW5jZSxWQS5lbnYuZW1zY3JpcHRlbl9ub3RpZnlfbWVtb3J5X2dyb3d0aCgwKX1kZWNvZGUoSSx0PTApe2lmKCFrKXRocm93IG5ldyBFcnJvcigiWlNURERlY29kZXI6IEF3YWl0IC5pbml0KCkgYmVmb3JlIGRlY29kaW5nLiIpO2xldCBlPUkuYnl0ZUxlbmd0aCxnPWsuZXhwb3J0cy5tYWxsb2MoZSk7WEEuc2V0KEksZyksdD10fHxOdW1iZXIoay5leHBvcnRzLlpTVERfZmluZERlY29tcHJlc3NlZFNpemUoZyxlKSk7bGV0IHI9ay5leHBvcnRzLm1hbGxvYyh0KSxpPWsuZXhwb3J0cy5aU1REX2RlY29tcHJlc3Mocix0LGcsZSkscz1YQS5zbGljZShyLHIraSk7cmV0dXJuIGsuZXhwb3J0cy5mcmVlKGcpLGsuZXhwb3J0cy5mcmVlKHIpLHN9fSxLST0iQUdGemJRRUFBQUFCYmc1Z0EzOS9md0YvWUFGL0FYOWdBbjkvQUdBQmZ3QmdCWDkvZjM5L0FYOWdBMzkvZndCZ0JIOS9mMzhCZjJBQUFYOWdBbjkvQVg5Z0IzOS9mMzkvZjM4QmYyQUNmMzhCZm1BSWYzOS9mMzkvZjM4QmYyQUZmMzkvZjM4QVlBNS9mMzkvZjM5L2YzOS9mMzkvZndGL0FpY0JBMlZ1ZGg5bGJYTmpjbWx3ZEdWdVgyNXZkR2xtZVY5dFpXMXZjbmxmWjNKdmQzUm9BQU1ESXlJSEFBQUJBUU1IQXdFQUNRUUFCUUVJQ0FFRkJnUUVCQU1HQUFBS0FBVUxEQTBHQkFVQmNBRUJBUVVIQVFHQUFvQ0FBZ1lJQVg4QlFZQ2pCQXNIcmdFTEJtMWxiVzl5ZVFJQUJtMWhiR3h2WXdBRkJHWnlaV1VBQmd4YVUxUkVYMmx6UlhKeWIzSUFFaGxhVTFSRVgyWnBibVJFWldOdmJYQnlaWE56WldSVGFYcGxBQndQV2xOVVJGOWtaV052YlhCeVpYTnpBQ0laWDE5cGJtUnBjbVZqZEY5bWRXNWpkR2x2Ymw5MFlXSnNaUUVBRUY5ZlpYSnlibTlmYkc5allYUnBiMjRBQVFsemRHRmphMU5oZG1VQUJ3eHpkR0ZqYTFKbGMzUnZjbVVBQ0FwemRHRmphMEZzYkc5akFBa0tpL0lCSWdVQVFZUWZDek1CQVg4Z0FnUkFJQUFoQXdOQUlBTWdBUzBBQURvQUFDQURRUUZxSVFNZ0FVRUJhaUVCSUFKQkFXc2lBZzBBQ3dzZ0FBc3BBUUYvSUFJRVFDQUFJUU1EUUNBRElBRTZBQUFnQTBFQmFpRURJQUpCQVdzaUFnMEFDd3NnQUF0c0FRSi9RWUFmS0FJQUlnRWdBRUVIYWtGNGNTSUNhaUVBQWtBZ0FrRUFJQUFnQVUwYkRRQWdBRDhBUVJCMFN3UkFJQUEvQUVFUWRHdEIvLzhEYWtFUWRrQUFRWDlHQkg5QkFBVkJBQkFBUVFFTFJRMEJDMEdBSHlBQU5nSUFJQUVQQzBHRUgwRXdOZ0lBUVg4THVTY0JDMzhqQUVFUWF5SUtKQUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQjlBRk5CRUJCaUI4b0FnQWlCa0VRSUFCQkMycEJlSEVnQUVFTFNSc2lCVUVEZGlJQWRpSUJRUU54QkVBQ1FDQUJRWDl6UVFGeElBQnFJZ0pCQTNRaUFVR3dIMm9pQUNBQlFiZ2ZhaWdDQUNJQktBSUlJZ1JHQkVCQmlCOGdCa0YrSUFKM2NUWUNBQXdCQ3lBRUlBQTJBZ3dnQUNBRU5nSUlDeUFCUVFocUlRQWdBU0FDUVFOMElnSkJBM0kyQWdRZ0FTQUNhaUlCSUFFb0FnUkJBWEkyQWdRTUR3c2dCVUdRSHlnQ0FDSUhUUTBCSUFFRVFBSkFRUUlnQUhRaUFrRUFJQUpyY2lBQklBQjBjV2dpQVVFRGRDSUFRYkFmYWlJQ0lBQkJ1QjlxS0FJQUlnQW9BZ2dpQkVZRVFFR0lIeUFHUVg0Z0FYZHhJZ1kyQWdBTUFRc2dCQ0FDTmdJTUlBSWdCRFlDQ0FzZ0FDQUZRUU55TmdJRUlBQWdCV29pQ0NBQlFRTjBJZ0VnQldzaUJFRUJjallDQkNBQUlBRnFJQVEyQWdBZ0J3UkFJQWRCZUhGQnNCOXFJUUZCbkI4b0FnQWhBZ0ovSUFaQkFTQUhRUU4yZENJRGNVVUVRRUdJSHlBRElBWnlOZ0lBSUFFTUFRc2dBU2dDQ0FzaEF5QUJJQUkyQWdnZ0F5QUNOZ0lNSUFJZ0FUWUNEQ0FDSUFNMkFnZ0xJQUJCQ0dvaEFFR2NIeUFJTmdJQVFaQWZJQVEyQWdBTUR3dEJqQjhvQWdBaUMwVU5BU0FMYUVFQ2RFRzRJV29vQWdBaUFpZ0NCRUY0Y1NBRmF5RURJQUloQVFOQUFrQWdBU2dDRUNJQVJRUkFJQUVvQWhRaUFFVU5BUXNnQUNnQ0JFRjRjU0FGYXlJQklBTWdBU0FEU1NJQkd5RURJQUFnQWlBQkd5RUNJQUFoQVF3QkN3c2dBaWdDR0NFSklBSWdBaWdDRENJRVJ3UkFRWmdmS0FJQUdpQUNLQUlJSWdBZ0JEWUNEQ0FFSUFBMkFnZ01EZ3NnQWtFVWFpSUJLQUlBSWdCRkJFQWdBaWdDRUNJQVJRMERJQUpCRUdvaEFRc0RRQ0FCSVFnZ0FDSUVRUlJxSWdFb0FnQWlBQTBBSUFSQkVHb2hBU0FFS0FJUUlnQU5BQXNnQ0VFQU5nSUFEQTBMUVg4aEJTQUFRYjkvU3cwQUlBQkJDMm9pQUVGNGNTRUZRWXdmS0FJQUlnaEZEUUJCQUNBRmF5RURBa0FDUUFKQUFuOUJBQ0FGUVlBQ1NRMEFHa0VmSUFWQi8vLy9CMHNOQUJvZ0JVRW1JQUJCQ0habklnQnJka0VCY1NBQVFRRjBhMEUrYWdzaUIwRUNkRUc0SVdvb0FnQWlBVVVFUUVFQUlRQU1BUXRCQUNFQUlBVkJHU0FIUVFGMmEwRUFJQWRCSDBjYmRDRUNBMEFDUUNBQktBSUVRWGh4SUFWcklnWWdBMDhOQUNBQklRUWdCaUlERFFCQkFDRURJQUVoQUF3REN5QUFJQUVvQWhRaUJpQUdJQUVnQWtFZGRrRUVjV29vQWhBaUFVWWJJQUFnQmhzaEFDQUNRUUYwSVFJZ0FRMEFDd3NnQUNBRWNrVUVRRUVBSVFSQkFpQUhkQ0lBUVFBZ0FHdHlJQWh4SWdCRkRRTWdBR2hCQW5SQnVDRnFLQUlBSVFBTElBQkZEUUVMQTBBZ0FDZ0NCRUY0Y1NBRmF5SUNJQU5KSVFFZ0FpQURJQUViSVFNZ0FDQUVJQUViSVFRZ0FDZ0NFQ0lCQkg4Z0FRVWdBQ2dDRkFzaUFBMEFDd3NnQkVVTkFDQURRWkFmS0FJQUlBVnJUdzBBSUFRb0FoZ2hCeUFFSUFRb0Fnd2lBa2NFUUVHWUh5Z0NBQm9nQkNnQ0NDSUFJQUkyQWd3Z0FpQUFOZ0lJREF3TElBUkJGR29pQVNnQ0FDSUFSUVJBSUFRb0FoQWlBRVVOQXlBRVFSQnFJUUVMQTBBZ0FTRUdJQUFpQWtFVWFpSUJLQUlBSWdBTkFDQUNRUkJxSVFFZ0FpZ0NFQ0lBRFFBTElBWkJBRFlDQUF3TEN5QUZRWkFmS0FJQUlnUk5CRUJCbkI4b0FnQWhBQUpBSUFRZ0JXc2lBVUVRVHdSQUlBQWdCV29pQWlBQlFRRnlOZ0lFSUFBZ0JHb2dBVFlDQUNBQUlBVkJBM0kyQWdRTUFRc2dBQ0FFUVFOeU5nSUVJQUFnQkdvaUFTQUJLQUlFUVFGeU5nSUVRUUFoQWtFQUlRRUxRWkFmSUFFMkFnQkJuQjhnQWpZQ0FDQUFRUWhxSVFBTURRc2dCVUdVSHlnQ0FDSUNTUVJBUVpRZklBSWdCV3NpQVRZQ0FFR2dIMEdnSHlnQ0FDSUFJQVZxSWdJMkFnQWdBaUFCUVFGeU5nSUVJQUFnQlVFRGNqWUNCQ0FBUVFocUlRQU1EUXRCQUNFQUlBVkJMMm9pQXdKL1FlQWlLQUlBQkVCQjZDSW9BZ0FNQVF0QjdDSkNmemNDQUVIa0lrS0FvSUNBZ0lBRU53SUFRZUFpSUFwQkRHcEJjSEZCMktyVnFnVnpOZ0lBUWZRaVFRQTJBZ0JCeENKQkFEWUNBRUdBSUFzaUFXb2lCa0VBSUFGcklnaHhJZ0VnQlUwTkRFSEFJaWdDQUNJRUJFQkJ1Q0lvQWdBaUJ5QUJhaUlKSUFkTklBUWdDVWx5RFEwTEFrQkJ4Q0l0QUFCQkJIRkZCRUFDUUFKQUFrQUNRRUdnSHlnQ0FDSUVCRUJCeUNJaEFBTkFJQVFnQUNnQ0FDSUhUd1JBSUFjZ0FDZ0NCR29nQkVzTkF3c2dBQ2dDQ0NJQURRQUxDMEVBRUFRaUFrRi9SZzBESUFFaEJrSGtJaWdDQUNJQVFRRnJJZ1FnQW5FRVFDQUJJQUpySUFJZ0JHcEJBQ0FBYTNGcUlRWUxJQVVnQms4TkEwSEFJaWdDQUNJQUJFQkJ1Q0lvQWdBaUJDQUdhaUlJSUFSTklBQWdDRWx5RFFRTElBWVFCQ0lBSUFKSERRRU1CUXNnQmlBQ2F5QUljU0lHRUFRaUFpQUFLQUlBSUFBb0FnUnFSZzBCSUFJaEFBc2dBRUYvUmcwQklBVkJNR29nQmswRVFDQUFJUUlNQkF0QjZDSW9BZ0FpQWlBRElBWnJha0VBSUFKcmNTSUNFQVJCZjBZTkFTQUNJQVpxSVFZZ0FDRUNEQU1MSUFKQmYwY05BZ3RCeENKQnhDSW9BZ0JCQkhJMkFnQUxJQUVRQkNJQ1FYOUdRUUFRQkNJQVFYOUdjaUFBSUFKTmNnMEZJQUFnQW1zaUJpQUZRU2hxVFEwRkMwRzRJa0c0SWlnQ0FDQUdhaUlBTmdJQVFid2lLQUlBSUFCSkJFQkJ2Q0lnQURZQ0FBc0NRRUdnSHlnQ0FDSURCRUJCeUNJaEFBTkFJQUlnQUNnQ0FDSUJJQUFvQWdRaUJHcEdEUUlnQUNnQ0NDSUFEUUFMREFRTFFaZ2ZLQUlBSWdCQkFDQUFJQUpORzBVRVFFR1lIeUFDTmdJQUMwRUFJUUJCekNJZ0JqWUNBRUhJSWlBQ05nSUFRYWdmUVg4MkFnQkJyQjlCNENJb0FnQTJBZ0JCMUNKQkFEWUNBQU5BSUFCQkEzUWlBVUc0SDJvZ0FVR3dIMm9pQkRZQ0FDQUJRYndmYWlBRU5nSUFJQUJCQVdvaUFFRWdSdzBBQzBHVUh5QUdRU2hySWdCQmVDQUNhMEVIY1NJQmF5SUVOZ0lBUWFBZklBRWdBbW9pQVRZQ0FDQUJJQVJCQVhJMkFnUWdBQ0FDYWtFb05nSUVRYVFmUWZBaUtBSUFOZ0lBREFRTElBSWdBMDBnQVNBRFMzSU5BaUFBS0FJTVFRaHhEUUlnQUNBRUlBWnFOZ0lFUWFBZklBTkJlQ0FEYTBFSGNTSUFhaUlCTmdJQVFaUWZRWlFmS0FJQUlBWnFJZ0lnQUdzaUFEWUNBQ0FCSUFCQkFYSTJBZ1FnQWlBRGFrRW9OZ0lFUWFRZlFmQWlLQUlBTmdJQURBTUxRUUFoQkF3S0MwRUFJUUlNQ0F0Qm1COG9BZ0FnQWtzRVFFR1lIeUFDTmdJQUN5QUNJQVpxSVFGQnlDSWhBQUpBQWtBQ1FBTkFJQUVnQUNnQ0FFY0VRQ0FBS0FJSUlnQU5BUXdDQ3dzZ0FDMEFERUVJY1VVTkFRdEJ5Q0loQUFOQUlBTWdBQ2dDQUNJQlR3UkFJQUVnQUNnQ0JHb2lCQ0FEU3cwREN5QUFLQUlJSVFBTUFBc0FDeUFBSUFJMkFnQWdBQ0FBS0FJRUlBWnFOZ0lFSUFKQmVDQUNhMEVIY1dvaUJ5QUZRUU55TmdJRUlBRkJlQ0FCYTBFSGNXb2lCaUFGSUFkcUlnVnJJUUFnQXlBR1JnUkFRYUFmSUFVMkFnQkJsQjlCbEI4b0FnQWdBR29pQURZQ0FDQUZJQUJCQVhJMkFnUU1DQXRCbkI4b0FnQWdCa1lFUUVHY0h5QUZOZ0lBUVpBZlFaQWZLQUlBSUFCcUlnQTJBZ0FnQlNBQVFRRnlOZ0lFSUFBZ0JXb2dBRFlDQUF3SUN5QUdLQUlFSWdOQkEzRkJBVWNOQmlBRFFYaHhJUWtnQTBIL0FVMEVRQ0FHS0FJTUlnRWdCaWdDQ0NJQ1JnUkFRWWdmUVlnZktBSUFRWDRnQTBFRGRuZHhOZ0lBREFjTElBSWdBVFlDRENBQklBSTJBZ2dNQmdzZ0JpZ0NHQ0VJSUFZZ0JpZ0NEQ0lDUndSQUlBWW9BZ2dpQVNBQ05nSU1JQUlnQVRZQ0NBd0ZDeUFHUVJScUlnRW9BZ0FpQTBVRVFDQUdLQUlRSWdORkRRUWdCa0VRYWlFQkN3TkFJQUVoQkNBRElnSkJGR29pQVNnQ0FDSUREUUFnQWtFUWFpRUJJQUlvQWhBaUF3MEFDeUFFUVFBMkFnQU1CQXRCbEI4Z0JrRW9heUlBUVhnZ0FtdEJCM0VpQVdzaUNEWUNBRUdnSHlBQklBSnFJZ0UyQWdBZ0FTQUlRUUZ5TmdJRUlBQWdBbXBCS0RZQ0JFR2tIMEh3SWlnQ0FEWUNBQ0FESUFSQkp5QUVhMEVIY1dwQkwyc2lBQ0FBSUFOQkVHcEpHeUlCUVJzMkFnUWdBVUhRSWlrQ0FEY0NFQ0FCUWNnaUtRSUFOd0lJUWRBaUlBRkJDR28yQWdCQnpDSWdCallDQUVISUlpQUNOZ0lBUWRRaVFRQTJBZ0FnQVVFWWFpRUFBMEFnQUVFSE5nSUVJQUJCQ0dvZ0FFRUVhaUVBSUFSSkRRQUxJQUVnQTBZTkFDQUJJQUVvQWdSQmZuRTJBZ1FnQXlBQklBTnJJZ0pCQVhJMkFnUWdBU0FDTmdJQUlBSkIvd0ZOQkVBZ0FrRjRjVUd3SDJvaEFBSi9RWWdmS0FJQUlnRkJBU0FDUVFOMmRDSUNjVVVFUUVHSUh5QUJJQUp5TmdJQUlBQU1BUXNnQUNnQ0NBc2hBU0FBSUFNMkFnZ2dBU0FETmdJTUlBTWdBRFlDRENBRElBRTJBZ2dNQVF0Qkh5RUFJQUpCLy8vL0IwMEVRQ0FDUVNZZ0FrRUlkbWNpQUd0MlFRRnhJQUJCQVhSclFUNXFJUUFMSUFNZ0FEWUNIQ0FEUWdBM0FoQWdBRUVDZEVHNElXb2hBUUpBQWtCQmpCOG9BZ0FpQkVFQklBQjBJZ1p4UlFSQVFZd2ZJQVFnQm5JMkFnQWdBU0FETmdJQURBRUxJQUpCR1NBQVFRRjJhMEVBSUFCQkgwY2JkQ0VBSUFFb0FnQWhCQU5BSUFRaUFTZ0NCRUY0Y1NBQ1JnMENJQUJCSFhZaEJDQUFRUUYwSVFBZ0FTQUVRUVJ4YWlJR0tBSVFJZ1FOQUFzZ0JpQUROZ0lRQ3lBRElBRTJBaGdnQXlBRE5nSU1JQU1nQXpZQ0NBd0JDeUFCS0FJSUlnQWdBellDRENBQklBTTJBZ2dnQTBFQU5nSVlJQU1nQVRZQ0RDQURJQUEyQWdnTFFaUWZLQUlBSWdBZ0JVME5BRUdVSHlBQUlBVnJJZ0UyQWdCQm9COUJvQjhvQWdBaUFDQUZhaUlDTmdJQUlBSWdBVUVCY2pZQ0JDQUFJQVZCQTNJMkFnUWdBRUVJYWlFQURBZ0xRWVFmUVRBMkFnQkJBQ0VBREFjTFFRQWhBZ3NnQ0VVTkFBSkFJQVlvQWh3aUFVRUNkRUc0SVdvaUJDZ0NBQ0FHUmdSQUlBUWdBallDQUNBQ0RRRkJqQjlCakI4b0FnQkJmaUFCZDNFMkFnQU1BZ3NnQ0VFUVFSUWdDQ2dDRUNBR1JodHFJQUkyQWdBZ0FrVU5BUXNnQWlBSU5nSVlJQVlvQWhBaUFRUkFJQUlnQVRZQ0VDQUJJQUkyQWhnTElBWW9BaFFpQVVVTkFDQUNJQUUyQWhRZ0FTQUNOZ0lZQ3lBQUlBbHFJUUFnQmlBSmFpSUdLQUlFSVFNTElBWWdBMEYrY1RZQ0JDQUZJQUJCQVhJMkFnUWdBQ0FGYWlBQU5nSUFJQUJCL3dGTkJFQWdBRUY0Y1VHd0gyb2hBUUovUVlnZktBSUFJZ0pCQVNBQVFRTjJkQ0lBY1VVRVFFR0lIeUFBSUFKeU5nSUFJQUVNQVFzZ0FTZ0NDQXNoQUNBQklBVTJBZ2dnQUNBRk5nSU1JQVVnQVRZQ0RDQUZJQUEyQWdnTUFRdEJIeUVESUFCQi8vLy9CMDBFUUNBQVFTWWdBRUVJZG1jaUFXdDJRUUZ4SUFGQkFYUnJRVDVxSVFNTElBVWdBellDSENBRlFnQTNBaEFnQTBFQ2RFRzRJV29oQVFKQUFrQkJqQjhvQWdBaUFrRUJJQU4wSWdSeFJRUkFRWXdmSUFJZ0JISTJBZ0FnQVNBRk5nSUFEQUVMSUFCQkdTQURRUUYyYTBFQUlBTkJIMGNiZENFRElBRW9BZ0FoQWdOQUlBSWlBU2dDQkVGNGNTQUFSZzBDSUFOQkhYWWhBaUFEUVFGMElRTWdBU0FDUVFSeGFpSUVLQUlRSWdJTkFBc2dCQ0FGTmdJUUN5QUZJQUUyQWhnZ0JTQUZOZ0lNSUFVZ0JUWUNDQXdCQ3lBQktBSUlJZ0FnQlRZQ0RDQUJJQVUyQWdnZ0JVRUFOZ0lZSUFVZ0FUWUNEQ0FGSUFBMkFnZ0xJQWRCQ0dvaEFBd0NDd0pBSUFkRkRRQUNRQ0FFS0FJY0lnQkJBblJCdUNGcUlnRW9BZ0FnQkVZRVFDQUJJQUkyQWdBZ0FnMEJRWXdmSUFoQmZpQUFkM0VpQ0RZQ0FBd0NDeUFIUVJCQkZDQUhLQUlRSUFSR0cyb2dBallDQUNBQ1JRMEJDeUFDSUFjMkFoZ2dCQ2dDRUNJQUJFQWdBaUFBTmdJUUlBQWdBallDR0FzZ0JDZ0NGQ0lBUlEwQUlBSWdBRFlDRkNBQUlBSTJBaGdMQWtBZ0EwRVBUUVJBSUFRZ0F5QUZhaUlBUVFOeU5nSUVJQUFnQkdvaUFDQUFLQUlFUVFGeU5nSUVEQUVMSUFRZ0JVRURjallDQkNBRUlBVnFJZ0lnQTBFQmNqWUNCQ0FDSUFOcUlBTTJBZ0FnQTBIL0FVMEVRQ0FEUVhoeFFiQWZhaUVBQW45QmlCOG9BZ0FpQVVFQklBTkJBM1owSWdOeFJRUkFRWWdmSUFFZ0EzSTJBZ0FnQUF3QkN5QUFLQUlJQ3lFQklBQWdBallDQ0NBQklBSTJBZ3dnQWlBQU5nSU1JQUlnQVRZQ0NBd0JDMEVmSVFBZ0EwSC8vLzhIVFFSQUlBTkJKaUFEUVFoMlp5SUFhM1pCQVhFZ0FFRUJkR3RCUG1vaEFBc2dBaUFBTmdJY0lBSkNBRGNDRUNBQVFRSjBRYmdoYWlFQkFrQUNRQ0FJUVFFZ0FIUWlCbkZGQkVCQmpCOGdCaUFJY2pZQ0FDQUJJQUkyQWdBTUFRc2dBMEVaSUFCQkFYWnJRUUFnQUVFZlJ4dDBJUUFnQVNnQ0FDRUZBMEFnQlNJQktBSUVRWGh4SUFOR0RRSWdBRUVkZGlFR0lBQkJBWFFoQUNBQklBWkJCSEZxSWdZb0FoQWlCUTBBQ3lBR0lBSTJBaEFMSUFJZ0FUWUNHQ0FDSUFJMkFnd2dBaUFDTmdJSURBRUxJQUVvQWdnaUFDQUNOZ0lNSUFFZ0FqWUNDQ0FDUVFBMkFoZ2dBaUFCTmdJTUlBSWdBRFlDQ0FzZ0JFRUlhaUVBREFFTEFrQWdDVVVOQUFKQUlBSW9BaHdpQUVFQ2RFRzRJV29pQVNnQ0FDQUNSZ1JBSUFFZ0JEWUNBQ0FFRFFGQmpCOGdDMEYrSUFCM2NUWUNBQXdDQ3lBSlFSQkJGQ0FKS0FJUUlBSkdHMm9nQkRZQ0FDQUVSUTBCQ3lBRUlBazJBaGdnQWlnQ0VDSUFCRUFnQkNBQU5nSVFJQUFnQkRZQ0dBc2dBaWdDRkNJQVJRMEFJQVFnQURZQ0ZDQUFJQVEyQWhnTEFrQWdBMEVQVFFSQUlBSWdBeUFGYWlJQVFRTnlOZ0lFSUFBZ0Ftb2lBQ0FBS0FJRVFRRnlOZ0lFREFFTElBSWdCVUVEY2pZQ0JDQUNJQVZxSWdRZ0EwRUJjallDQkNBRElBUnFJQU0yQWdBZ0J3UkFJQWRCZUhGQnNCOXFJUUJCbkI4b0FnQWhBUUovUVFFZ0IwRURkblFpQlNBR2NVVUVRRUdJSHlBRklBWnlOZ0lBSUFBTUFRc2dBQ2dDQ0FzaEJpQUFJQUUyQWdnZ0JpQUJOZ0lNSUFFZ0FEWUNEQ0FCSUFZMkFnZ0xRWndmSUFRMkFnQkJrQjhnQXpZQ0FBc2dBa0VJYWlFQUN5QUtRUkJxSkFBZ0FBdlNDd0VIZndKQUlBQkZEUUFnQUVFSWF5SUNJQUJCQkdzb0FnQWlBVUY0Y1NJQWFpRUZBa0FnQVVFQmNRMEFJQUZCQTNGRkRRRWdBaUFDS0FJQUlnRnJJZ0pCbUI4b0FnQkpEUUVnQUNBQmFpRUFBa0FDUUVHY0h5Z0NBQ0FDUndSQUlBRkIvd0ZOQkVBZ0FVRURkaUVFSUFJb0Fnd2lBU0FDS0FJSUlnTkdCRUJCaUI5QmlCOG9BZ0JCZmlBRWQzRTJBZ0FNQlFzZ0F5QUJOZ0lNSUFFZ0F6WUNDQXdFQ3lBQ0tBSVlJUVlnQWlBQ0tBSU1JZ0ZIQkVBZ0FpZ0NDQ0lESUFFMkFnd2dBU0FETmdJSURBTUxJQUpCRkdvaUJDZ0NBQ0lEUlFSQUlBSW9BaEFpQTBVTkFpQUNRUkJxSVFRTEEwQWdCQ0VISUFNaUFVRVVhaUlFS0FJQUlnTU5BQ0FCUVJCcUlRUWdBU2dDRUNJRERRQUxJQWRCQURZQ0FBd0NDeUFGS0FJRUlnRkJBM0ZCQTBjTkFrR1FIeUFBTmdJQUlBVWdBVUYrY1RZQ0JDQUNJQUJCQVhJMkFnUWdCU0FBTmdJQUR3dEJBQ0VCQ3lBR1JRMEFBa0FnQWlnQ0hDSURRUUowUWJnaGFpSUVLQUlBSUFKR0JFQWdCQ0FCTmdJQUlBRU5BVUdNSDBHTUh5Z0NBRUYrSUFOM2NUWUNBQXdDQ3lBR1FSQkJGQ0FHS0FJUUlBSkdHMm9nQVRZQ0FDQUJSUTBCQ3lBQklBWTJBaGdnQWlnQ0VDSURCRUFnQVNBRE5nSVFJQU1nQVRZQ0dBc2dBaWdDRkNJRFJRMEFJQUVnQXpZQ0ZDQURJQUUyQWhnTElBSWdCVThOQUNBRktBSUVJZ0ZCQVhGRkRRQUNRQUpBQWtBQ1FDQUJRUUp4UlFSQVFhQWZLQUlBSUFWR0JFQkJvQjhnQWpZQ0FFR1VIMEdVSHlnQ0FDQUFhaUlBTmdJQUlBSWdBRUVCY2pZQ0JDQUNRWndmS0FJQVJ3MEdRWkFmUVFBMkFnQkJuQjlCQURZQ0FBOExRWndmS0FJQUlBVkdCRUJCbkI4Z0FqWUNBRUdRSDBHUUh5Z0NBQ0FBYWlJQU5nSUFJQUlnQUVFQmNqWUNCQ0FBSUFKcUlBQTJBZ0FQQ3lBQlFYaHhJQUJxSVFBZ0FVSC9BVTBFUUNBQlFRTjJJUVFnQlNnQ0RDSUJJQVVvQWdnaUEwWUVRRUdJSDBHSUh5Z0NBRUYrSUFSM2NUWUNBQXdGQ3lBRElBRTJBZ3dnQVNBRE5nSUlEQVFMSUFVb0FoZ2hCaUFGSUFVb0Fnd2lBVWNFUUVHWUh5Z0NBQm9nQlNnQ0NDSURJQUUyQWd3Z0FTQUROZ0lJREFNTElBVkJGR29pQkNnQ0FDSURSUVJBSUFVb0FoQWlBMFVOQWlBRlFSQnFJUVFMQTBBZ0JDRUhJQU1pQVVFVWFpSUVLQUlBSWdNTkFDQUJRUkJxSVFRZ0FTZ0NFQ0lERFFBTElBZEJBRFlDQUF3Q0N5QUZJQUZCZm5FMkFnUWdBaUFBUVFGeU5nSUVJQUFnQW1vZ0FEWUNBQXdEQzBFQUlRRUxJQVpGRFFBQ1FDQUZLQUljSWdOQkFuUkJ1Q0ZxSWdRb0FnQWdCVVlFUUNBRUlBRTJBZ0FnQVEwQlFZd2ZRWXdmS0FJQVFYNGdBM2R4TmdJQURBSUxJQVpCRUVFVUlBWW9BaEFnQlVZYmFpQUJOZ0lBSUFGRkRRRUxJQUVnQmpZQ0dDQUZLQUlRSWdNRVFDQUJJQU0yQWhBZ0F5QUJOZ0lZQ3lBRktBSVVJZ05GRFFBZ0FTQUROZ0lVSUFNZ0FUWUNHQXNnQWlBQVFRRnlOZ0lFSUFBZ0Ftb2dBRFlDQUNBQ1Fad2ZLQUlBUncwQVFaQWZJQUEyQWdBUEN5QUFRZjhCVFFSQUlBQkJlSEZCc0I5cUlRRUNmMEdJSHlnQ0FDSURRUUVnQUVFRGRuUWlBSEZGQkVCQmlCOGdBQ0FEY2pZQ0FDQUJEQUVMSUFFb0FnZ0xJUUFnQVNBQ05nSUlJQUFnQWpZQ0RDQUNJQUUyQWd3Z0FpQUFOZ0lJRHd0Qkh5RURJQUJCLy8vL0IwMEVRQ0FBUVNZZ0FFRUlkbWNpQVd0MlFRRnhJQUZCQVhSclFUNXFJUU1MSUFJZ0F6WUNIQ0FDUWdBM0FoQWdBMEVDZEVHNElXb2hBUUpBQWtBQ1FFR01IeWdDQUNJRVFRRWdBM1FpQjNGRkJFQkJqQjhnQkNBSGNqWUNBQ0FCSUFJMkFnQWdBaUFCTmdJWURBRUxJQUJCR1NBRFFRRjJhMEVBSUFOQkgwY2JkQ0VESUFFb0FnQWhBUU5BSUFFaUJDZ0NCRUY0Y1NBQVJnMENJQU5CSFhZaEFTQURRUUYwSVFNZ0JDQUJRUVJ4YWlJSFFSQnFLQUlBSWdFTkFBc2dCeUFDTmdJUUlBSWdCRFlDR0FzZ0FpQUNOZ0lNSUFJZ0FqWUNDQXdCQ3lBRUtBSUlJZ0FnQWpZQ0RDQUVJQUkyQWdnZ0FrRUFOZ0lZSUFJZ0JEWUNEQ0FDSUFBMkFnZ0xRYWdmUWFnZktBSUFRUUZySWdCQmZ5QUFHellDQUFzTEJBQWpBQXNHQUNBQUpBQUxFQUFqQUNBQWEwRndjU0lBSkFBZ0FBdEtBUUYvSUFBZ0FVa0VRQ0FBSUFFZ0FoQUNEd3NnQWdSQUlBQWdBbW9oQXlBQklBSnFJUUVEUUNBRFFRRnJJZ01nQVVFQmF5SUJMUUFBT2dBQUlBSkJBV3NpQWcwQUN3c2dBQXY5RGdJUmZ3RitJd0JCTUdzaUJ5UUFRYmgvSVFnQ1FDQUZSUTBBSUFRc0FBQWlDVUgvQVhFaEN3SkFJQWxCQUVnRVFDQUxRZjRBYTBFQmRpSUdJQVZQRFFKQmJDRUlJQXRCL3dCcklndEIvd0ZMRFFJZ0JFRUJhaUVJUVFBaEJRTkFJQVVnQzA4RVFDQUxJUWdnQmlFTERBTUZJQUFnQldvZ0NDQUZRUUYyYWlJRUxRQUFRUVIyT2dBQUlBQWdCVUVCY21vZ0JDMEFBRUVQY1RvQUFDQUZRUUpxSVFVTUFRc0FDd0FMSUFVZ0MwME5BU0FIUWY4Qk5nSUVJQVlnQjBFRWFpQUhRUWhxSUFSQkFXb2lEaUFMRUF3aUJFR0lmMHNFUUNBRUlRZ01BZ3RCVkNFSUlBY29BZ2dpRUVFR1N3MEJJQWNvQWdRaUVVRUJkQ0lKUVFKcXJVSUJJQkN0aGlJWVFRRWdFSFFpRFVFQmFpSUZyVUlDaG54OFFndDhRdnovLy8vLy8vLy8vd0NEUXVRQ1ZnMEJRVkloQ0NBUlFmOEJTdzBCSUExQmYzTkJBblJCNUFKcXJTQVJRUUZxSWhWQkFYU3RJQmg4UWdoOFZBMEJJQXNnQkdzaEZpQUVJQTVxSVJjZ0JrR0FCR29pRWlBRlFRSjBhaUlSSUFscVFRSnFJUTRnQmtHRUJHb2hFMEdBZ0FJZ0VIUkJFSFloQ1VFQUlRVkJBU0VQSUExQkFXc2lGQ0VLQTBBZ0JTQVZSa1VFUUFKQUlBWWdCVUVCZENJSWFpOEJBQ0lFUWYvL0EwWUVRQ0FUSUFwQkFuUnFJQVU2QUFJZ0NrRUJheUVLUVFFaEJBd0JDeUFQUVFBZ0NTQUV3VW9iSVE4TElBZ2dFV29nQkRzQkFDQUZRUUZxSVFVTUFRc0xJQVlnRHpzQmdnUWdCaUFRT3dHQUJBSkFJQW9nRkVZRVFDQU5RUU4ySVFoQ0FDRVlRUUFoRHdOQUlBd2dGVVlFUUNBSUlBMUJBWFpxUVFOcUlnbEJBWFFoQ0VFQUlRUkJBQ0VLQTBCQkFDRUZJQW9nRFU4TkJBTkFJQVZCQWtaRkJFQWdFeUFGSUFsc0lBUnFJQlJ4UVFKMGFpQU9JQVVnQ21wcUxRQUFPZ0FDSUFWQkFXb2hCUXdCQ3dzZ0NrRUNhaUVLSUFRZ0NHb2dGSEVoQkF3QUN3QUZJQVlnREVFQmRHb3VBUUFoQ1NBT0lBOXFJZ1FnR0RjQUFFRUlJUVVEUUNBRklBbE9SUVJBSUFRZ0JXb2dHRGNBQUNBRlFRaHFJUVVNQVFzTElCaENnWUtFaUpDZ3dJQUJmQ0VZSUF4QkFXb2hEQ0FKSUE5cUlROE1BUXNBQ3dBTElBMUJBM1lnRFVFQmRtcEJBMm9oQ0VFQUlRVURRQ0FNSUJWR1JRUkFRUUFoQ1NBR0lBeEJBWFJxTGdFQUlnUkJBQ0FFUVFCS0d5RUVBMEFnQkNBSlJrVUVRQ0FUSUFWQkFuUnFJQXc2QUFJRFFDQUZJQWhxSUJSeElnVWdDa3NOQUFzZ0NVRUJhaUVKREFFTEN5QU1RUUZxSVF3TUFRc0xRWDhoQ0NBRkRRSUxJQkJCQVdvaENFRUFJUVVEUUNBRklBMUdSUVJBSUJFZ0V5QUZRUUowYWlJT0xRQUNRUUYwYWlJRUlBUXZBUUFpQ1VFQmFqc0JBQ0FPSUFnZ0NXZEJZSE5xSWdRNkFBTWdEaUFKSUFSMElBMXJPd0VBSUFWQkFXb2hCUXdCQ3dzQ1FBSkFJQVl2QVlJRUJFQWdCMEVjYWlJRUlCY2dGaEFOSWdoQmlIOUxEUUlnQjBFVWFpQUVJQklRRGlBSFFReHFJQVFnRWhBT1FRQWhCUU5BSUFkQkhHb2lCQkFQSUFWQit3RkxjZzBDSUFBZ0JXb2lCaUFIUVJScUlBUVFFRG9BQUNBR0lBZEJER29nQkJBUU9nQUJJQVZCQW5JaEJDQUhRUnhxRUE4RVFDQUVJUVVNQXdVZ0FDQUVhaUFIUVJScUlBZEJIR29pQkJBUU9nQUFJQVlnQjBFTWFpQUVFQkE2QUFNZ0JVRUVhaUVGREFFTEFBc0FDeUFIUVJ4cUlnUWdGeUFXRUEwaUNFR0lmMHNOQVNBSFFSUnFJQVFnRWhBT0lBZEJER29nQkNBU0VBNUJBQ0VGQTBBZ0IwRWNhaUlFRUE4Z0JVSDdBVXR5UlFSQUlBQWdCV29pQmlBSFFSUnFJQVFRRVRvQUFDQUdJQWRCREdvZ0JCQVJPZ0FCSUFWQkFuSWhCQ0FIUVJ4cUVBOEVRQ0FFSVFVRklBQWdCR29nQjBFVWFpQUhRUnhxSWdRUUVUb0FBQ0FHSUFkQkRHb2dCQkFST2dBRElBVkJCR29oQlF3Q0N3c0xBbjhEUUVHNmZ5RUlJQVZCL1FGTERRTWdBQ0FGYWlJR0lBZEJGR29nQjBFY2FpSUpFQkU2QUFBZ0JrRUJhaUVFSUFrUUQwRURSZ1JBSUFkQkRHb2hDRUVDREFJTElBVkIvQUZMRFFNZ0JpQUhRUXhxSUFkQkhHb2lCQkFST2dBQklBVkJBbW9oQlNBRUVBOUJBMGNOQUFzZ0FDQUZhaUVFSUFkQkZHb2hDRUVEQ3lBRUlBZ2dCMEVjYWhBUk9nQUFJQVpxSUFCcklRZ01BUXNDZndOQVFicC9JUWdnQlVIOUFVc05BaUFBSUFWcUlnWWdCMEVVYWlBSFFSeHFJZ2tRRURvQUFDQUdRUUZxSVFRZ0NSQVBRUU5HQkVBZ0IwRU1haUVJUVFJTUFnc2dCVUg4QVVzTkFpQUdJQWRCREdvZ0IwRWNhaUlFRUJBNkFBRWdCVUVDYWlFRklBUVFEMEVEUncwQUN5QUFJQVZxSVFRZ0IwRVVhaUVJUVFNTElBUWdDQ0FIUVJ4cUVCQTZBQUFnQm1vZ0FHc2hDQXNnQ0VHSWYwc05BUXNnQ0NFRVFRQWhCU0FCUVFCQk5CQURJUWxCQUNFS0EwQWdCQ0FGUndSQUlBQWdCV29pQmkwQUFDSUJRUXRMQkVCQmJDRUlEQU1GSUFrZ0FVRUNkR29pQVNBQktBSUFRUUZxTmdJQUlBVkJBV29oQlVFQklBWXRBQUIwUVFGMUlBcHFJUW9NQWdzQUN3dEJiQ0VJSUFwRkRRQWdDbWNpQlVFZmN5SUJRUXRMRFFBZ0EwRWdJQVZyTmdJQVFRRkJBaUFCZENBS2F5SURaMEVmY3lJQmRDQURSdzBBSUFBZ0JHb2dBVUVCYWlJQU9nQUFJQWtnQUVFQ2RHb2lBQ0FBS0FJQVFRRnFOZ0lBSUFrb0FnUWlBRUVDU1NBQVFRRnhjZzBBSUFJZ0JFRUJhallDQUNBTFFRRnFJUWdMSUFkQk1Hb2tBQ0FJQzZBRkFReC9Jd0JCRUdzaURDUUFBbjhnQkVFSFRRUkFJQXhDQURjRENDQU1RUWhxSWdVZ0F5QUVFQUlhUVd3Z0FDQUJJQUlnQlVFSUVBd2lBQ0FBSUFSTEd5QUFJQUJCaVg5Skd3d0JDeUFBUVFBZ0FTZ0NBRUVCYWlJTlFRRjBFQU1oRDBGVUlBTW9BQUFpQmtFUGNTSUFRUXBMRFFBYUlBSWdBRUVGYWpZQ0FDQURJQVJxSWdKQkJHc2hCeUFDUVFkcklRc2dBRUVHYWlFT1FRUWhBaUFHUVFSMklRVkJJQ0FBZENJSVFRRnlJUWxCQUNFQVFRRWhCaUFESVFRRFFBSkFJQVpCQVhGRkJFQURRQ0FGUVg5elFZQ0FnSUI0Y21naUJrRVlTVVVFUUNBQVFTUnFJUUFnQkNBTFRRUi9JQVJCQTJvRklBUWdDMnRCQTNRZ0FtcEJIM0VoQWlBSEN5SUVLQUFBSUFKMklRVU1BUXNMSUFJZ0JrRWVjU0lLYWtFQ2FpRUNJQVpCQVhaQkEyd2dBR29nQlNBS2RrRURjV29pQUNBTlR3MEJBbjhnQkNBTFN5QUNRUU4ySUFScUlnVWdCMHR4UlFSQUlBSkJCM0VoQWlBRkRBRUxJQVFnQjJ0QkEzUWdBbXBCSDNFaEFpQUhDeUlFS0FBQUlBSjJJUVVMSUFVZ0NFRUJhM0VpQmlBSVFRRjBRUUZySWdvZ0NXc2lFRWtFZnlBT1FRRnJCU0FGSUFweElnVWdFRUVBSUFVZ0NFNGJheUVHSUE0TElRVWdEeUFBUVFGMGFpQUdRUUZySWdvN0FRQWdBRUVCYWlFQUlBSWdCV29oQWlBSVFRRWdCbXNnQ2lBR1FRQktHeUFKYWlJSlNnUkFJQWxCQWtnTkFVRWdJQWxuSWdWcklRNUJBU0FGUVI5emRDRUlDeUFBSUExUERRQWdDa0VBUnlFR0FuOGdCQ0FMU3lBQ1FRTjFJQVJxSWdVZ0IwdHhSUVJBSUFKQkIzRWhBaUFGREFFTElBSWdCQ0FIYTBFRGRHcEJIM0VoQWlBSEN5SUVLQUFBSUFKMklRVU1BUXNMUVd3Z0NVRUJSdzBBR2tGUUlBQWdEVXNOQUJwQmJDQUNRU0JLRFFBYUlBRWdBRUVCYXpZQ0FDQUVJQUpCQjJwQkEzVnFJQU5yQ3lBTVFSQnFKQUFMOGdFQkFYOGdBa1VFUUNBQVFnQTNBZ0FnQUVFQU5nSVFJQUJDQURjQ0NFRzRmdzhMSUFBZ0FUWUNEQ0FBSUFGQkJHbzJBaEFnQWtFRVR3UkFJQUFnQVNBQ2FpSUJRUVJySWdNMkFnZ2dBQ0FES0FBQU5nSUFJQUZCQVdzdEFBQWlBUVJBSUFBZ0FXZEJGMnMyQWdRZ0FnOExJQUJCQURZQ0JFRi9Ed3NnQUNBQk5nSUlJQUFnQVMwQUFDSUROZ0lBQWtBQ1FBSkFJQUpCQW1zT0FnRUFBZ3NnQUNBQkxRQUNRUkIwSUFOeUlnTTJBZ0FMSUFBZ0FTMEFBVUVJZENBRGFqWUNBQXNnQVNBQ2FrRUJheTBBQUNJQlJRUkFJQUJCQURZQ0JFRnNEd3NnQUNBQlp5QUNRUU4wYTBFSmFqWUNCQ0FDQzBRQkFuOGdBU0FDTHdFQUlnTWdBU2dDQkdvaUJEWUNCQ0FBSUFOQkFuUkJvQjFxS0FJQUlBRW9BZ0JCQUNBRWEzWnhOZ0lBSUFFUUR4b2dBQ0FDUVFScU5nSUVDNThCQVFSL1FRTWhBU0FBS0FJRUlnSkJJRTBFUUNBQUtBSUlJZ0VnQUNnQ0VFOEVRQ0FBSUFKQkIzRTJBZ1FnQUNBQklBSkJBM1pySWdJMkFnZ2dBQ0FDS0FBQU5nSUFRUUFQQ3lBQUtBSU1JZ01nQVVZRVFFRUJRUUlnQWtFZ1NSc1BDeUFBSUFFZ0FTQURheUFDUVFOMklnUWdBU0FFYXlBRFNTSUJHeUlEYXlJRU5nSUlJQUFnQWlBRFFRTjBhellDQkNBQUlBUW9BQUEyQWdBTElBRUxTQUVFZnlBQUtBSUVJQUFvQWdCQkFuUnFJZ0l0QUFJZ0FpOEJBQ0VFSUFFZ0FTZ0NCQ0lGSUFJdEFBTWlBbW8yQWdRZ0FDQUVJQUVvQWdBZ0JYUkJBQ0FDYTNacU5nSUFDMUlCQkg4Z0FDZ0NCQ0FBS0FJQVFRSjBhaUlDTFFBQ0lBSXZBUUFoQkNBQklBSXRBQU1pQWlBQktBSUVhaUlGTmdJRUlBQWdCQ0FDUVFKMFFhQWRhaWdDQUNBQktBSUFRUUFnQld0MmNXbzJBZ0FMQ0FBZ0FFR0lmMHNMR2dBZ0FBUkFJQUVFUUNBQ0lBQWdBUkVDQUE4TElBQVFCZ3NMcGdnQ0RYOEJmaU1BUVJCcklna2tBQ0FKUVFBMkFnd2dDVUVBTmdJSUFuOENRQ0FEUWVnSmFpQURJQWxCQ0dvZ0NVRU1haUFCSUFJZ0EwR0FBV29RQ3lJUFFZaC9TdzBBUVZRZ0NTZ0NEQ0lFSUFBb0FnQWlBVUgvQVhGQkFXcExEUUVhSUFCQkJHb2hDeUFBSUFGQi80R0FlSEVnQkVFUWRFR0FnUHdIY1hJMkFnQkJmeUFFSUFSQkFFZ2JRUUZxSVFCQkFDRUJJQWtvQWdnaEJVRUFJUUlEUUNBQUlBSkdCRUFnQlVFRGF5RUJRUUFoQUFOQUFrQkJBQ0VDSUFBZ0FVNEVRQU5BSUFBZ0JVNE5BaUFESUFBZ0EycEI2QWxxTFFBQVFRSjBha0ZBYXlJQklBRW9BZ0FpQVVFQmFqWUNBQ0FCSUFOcUlBQTZBT2dISUFCQkFXb2hBQXdBQ3dBRkEwQWdBa0VFUmtVRVFDQURJQU1nQUNBQ2FpSUhha0hvQ1dvdEFBQkJBblJxUVVCcklnZ2dDQ2dDQUNJSVFRRnFOZ0lBSUFNZ0NHb2dCem9BNkFjZ0FrRUJhaUVDREFFTEN5QUFRUVJxSVFBTUFnc0FDd3NnQkVFQmFpRU9JQU1vQWdBaEIwRUFJUUJCQVNFSUEwQWdDQ0FPUmcwRElBNGdDR3NoQkNBRElBaEJBblJxS0FJQUlRVUNRQUpBQWtBQ1FBSkFBa0JCQVNBSWRFRUJkU0lOUVFGckRnZ0FBUVFDQkFRRUF3UUxRUUFoQWlBRlFRQWdCVUVBU2hzaEJpQUFJUUVEUUNBQ0lBWkdEUVVnQXlBQ0lBZHFhaTBBNkFjaENpQUxJQUZCQVhScUlnd2dCRG9BQVNBTUlBbzZBQUFnQWtFQmFpRUNJQUZCQVdvaEFRd0FDd0FMUVFBaEFpQUZRUUFnQlVFQVNoc2hDaUFBSVFFRFFDQUNJQXBHRFFRZ0N5QUJRUUYwYWlJR0lBTWdBaUFIYW1vdEFPZ0hJZ3c2QUFJZ0JpQUVPZ0FCSUFZZ0REb0FBQ0FHSUFRNkFBTWdBa0VCYWlFQ0lBRkJBbW9oQVF3QUN3QUxRUUFoQWlBRlFRQWdCVUVBU2hzaEJpQUVRUWgwUVlEK0EzRWhCQ0FBSVFFRFFDQUNJQVpHRFFNZ0N5QUJRUUYwYWlBRUlBTWdBaUFIYW1vdEFPZ0hjcTFDZ1lDRWdKQ0F3QUIrTndBQUlBSkJBV29oQWlBQlFRUnFJUUVNQUFzQUMwRUFJUUlnQlVFQUlBVkJBRW9iSVFZZ0JFRUlkRUdBL2dOeElRUWdBQ0VCQTBBZ0FpQUdSZzBDSUFzZ0FVRUJkR29pQ2lBRUlBTWdBaUFIYW1vdEFPZ0hjcTFDZ1lDRWdKQ0F3QUIrSWhFM0FBZ2dDaUFSTndBQUlBSkJBV29oQWlBQlFRaHFJUUVNQUFzQUMwRUFJUUVnQlVFQUlBVkJBRW9iSVFvZ0JFRUlkRUdBL2dOeElRd2dBQ0VFQTBBZ0FTQUtSZzBCSUFzZ0JFRUJkR29oRUNBTUlBTWdBU0FIYW1vdEFPZ0hjcTFDZ1lDRWdKQ0F3QUIrSVJGQkFDRUNBMEFnQWlBTlRrVUVRQ0FRSUFKQkFYUnFJZ1lnRVRjQUdDQUdJQkUzQUJBZ0JpQVJOd0FJSUFZZ0VUY0FBQ0FDUVJCcUlRSU1BUXNMSUFGQkFXb2hBU0FFSUExcUlRUU1BQXNBQ3lBSVFRRnFJUWdnQlNBSGFpRUhJQVVnRFd3Z0FHb2hBQXdBQ3dBRklBTWdBa0VDZEdvaUIwRkFheUFCTmdJQUlBSkJBV29oQWlBSEtBSUFJQUZxSVFFTUFRc0FDd0FMSUE4TElBbEJFR29rQUF2eUFnRUdmeU1BUVNCcklnVWtBQ0FFS0FJQUlRWWdCVUVNYWlBQ0lBTVFEU0lEUVloL1RRUkFJQVJCQkdvaEFpQUFJQUZxSWdsQkEyc2hCRUVBSUFaQkVIWnJRUjl4SVFNRFFDQUZRUXhxRUE4Z0FDQUVUM0pGQkVBZ0FpQUZLQUlNSWdZZ0JTZ0NFQ0lIZENBRGRrRUJkR29pQ0MwQUFTRUtJQUFnQ0MwQUFEb0FBQ0FDSUFZZ0J5QUthaUlHZENBRGRrRUJkR29pQnkwQUFDRUlJQVVnQmlBSExRQUJhallDRUNBQUlBZzZBQUVnQUVFQ2FpRUFEQUVMQ3dOQUlBVkJER29RRHlFSElBVW9BZ3doQmlBRktBSVFJUVFnQUNBSlR5QUhja1VFUUNBQ0lBWWdCSFFnQTNaQkFYUnFJZ1l0QUFBaEJ5QUZJQVFnQmkwQUFXbzJBaEFnQUNBSE9nQUFJQUJCQVdvaEFBd0JDd3NEUUNBQUlBbFBSUVJBSUFJZ0JpQUVkQ0FEZGtFQmRHb2lCeTBBQVNFSUlBQWdCeTBBQURvQUFDQUFRUUZxSVFBZ0JDQUlhaUVFREFFTEMwRnNRV3dnQVNBRktBSVVJQVVvQWhoSEd5QUVRU0JIR3lFREN5QUZRU0JxSkFBZ0F3dlBGQUVqZnlNQVFkQUFheUlGSkFCQmJDRUpBa0FnQTBFS1NRMEFBa0FnQXlBQ0x3QUVJZ2NnQWk4QUFDSUlJQUl2QUFJaURXcHFRUVpxSWd4SkRRQWdCQzhCQWlFR0lBVkJQR29nQWtFR2FpSUNJQWdRRFNJSlFZaC9TdzBCSUFWQktHb2dBaUFJYWlJQ0lBMFFEU0lKUVloL1N3MEJJQVZCRkdvZ0FpQU5haUlDSUFjUURTSUpRWWgvU3cwQklBVWdBaUFIYWlBRElBeHJFQTBpQ1VHSWYwc05BU0FFUVFScUlRb2dBQ0FCYWlJZlFRTnJJU0JCQUNBR2EwRWZjU0VMSUFVb0FnZ2hFU0FGS0FJY0lSSWdCU2dDTUNFVElBVW9Ba1FoRkNBRktBSUVJUWtnQlNnQ0dDRU5JQVVvQWl3aERDQUZLQUpBSVFZZ0JTZ0NFQ0VoSUFVb0FpUWhJaUFGS0FJNElTTWdCU2dDVENFa0lBVW9BZ0FoRlNBRktBSVVJUllnQlNnQ0tDRVhJQVVvQWp3aEdFRUJJUThnQUNBQlFRTnFRUUoySWdScUlnTWdCR29pQWlBRWFpSVpJUVFnQWlFSUlBTWhCd05BSUE5QkFYRkZJQVFnSUU5eVJRUkFJQUFnQ2lBWUlBWjBJQXQyUVFKMGFpSU9Md0VBT3dBQUlBNHRBQUloR2lBT0xRQURJUkFnQnlBS0lCY2dESFFnQzNaQkFuUnFJZzR2QVFBN0FBQWdEaTBBQWlFYklBNHRBQU1oRHlBSUlBb2dGaUFOZENBTGRrRUNkR29pRGk4QkFEc0FBQ0FPTFFBQ0lSd2dEaTBBQXlFZElBUWdDaUFWSUFsMElBdDJRUUowYWlJT0x3RUFPd0FBSUE0dEFBSWhIaUFPTFFBRElRNGdBQ0FRYWlJbElBb2dHQ0FHSUJwcUlnWjBJQXQyUVFKMGFpSVFMd0VBT3dBQUlCQXRBQUlnRUMwQUF5RW1JQWNnRDJvaUp5QUtJQmNnRENBYmFpSWFkQ0FMZGtFQ2RHb2lCeThCQURzQUFDQUhMUUFDSVF3Z0J5MEFBeUVRSUFnZ0hXb2lHeUFLSUJZZ0RTQWNhaUlQZENBTGRrRUNkR29pQ0M4QkFEc0FBQ0FJTFFBQ0lRMGdDQzBBQXlFY0lBUWdEbW9pSFNBS0lCVWdDU0FlYWlJT2RDQUxka0VDZEdvaUNTOEJBRHNBQUNBR2FpRUFRUU1oQndKL0lCUWdKRWtFUUNBQUlRWkJBd3dCQ3lBQVFRZHhJUVlnRkNBQVFRTjJheUlVS0FBQUlSaEJBQXNnQ1MwQUF5RWVJQWt0QUFJaENDQU1JQnBxSVFBZ0V5QWpTUVIvSUFBRklCTWdBRUVEZG1zaUV5Z0FBQ0VYUVFBaEJ5QUFRUWR4Q3lFTUlBMGdEMm9oQUNBSGNpRUpRUU1oRHdKL0lCSWdJa2tFUUNBQUlRMUJBd3dCQ3lBQVFRZHhJUTBnRWlBQVFRTjJheUlTS0FBQUlSWkJBQXNnQ0NBT2FpRUFJQWx5SUJFZ0lVa0VmeUFBQlNBUklBQkJBM1pySWhFb0FBQWhGVUVBSVE4Z0FFRUhjUXNoQ1NBbElDWnFJUUFnRUNBbmFpRUhJQnNnSEdvaENDQWRJQjVxSVFRZ0QzSkZJUThNQVFzTElBVWdERFlDTENBRklBWTJBa0FnQlNBTk5nSVlJQVVnQ1RZQ0JDQUZJQlEyQWtRZ0JTQVROZ0l3SUFVZ0VqWUNIQ0FGSUJFMkFnZ2dCU0FZTmdJOElBVWdGellDS0NBRklCWTJBaFFnQlNBVk5nSUFJQUlnQjBrZ0FDQURTM0lOQUVGc0lRa2dDQ0FaU3cwQklBTkJBMnNoQ1FOQUlBVkJQR29RRDBVZ0FDQUpTWEVFUUNBQUlBb2dCU2dDUENJTklBVW9Ba0FpREhRZ0MzWkJBblJxSWc0dkFRQTdBQUFnQUNBT0xRQURhaUlHSUFvZ0RTQU1JQTR0QUFKcUlnQjBJQXQyUVFKMGFpSU1Md0VBT3dBQUlBVWdBQ0FNTFFBQ2FqWUNRQ0FHSUF3dEFBTnFJUUFNQVFVZ0EwRUNheUVNQTBBZ0JVRThhaEFQSVFZZ0JTZ0NQQ0VOSUFVb0FrQWhDU0FBSUF4TElBWnlSUVJBSUFBZ0NpQU5JQWwwSUF0MlFRSjBhaUlHTHdFQU93QUFJQVVnQ1NBR0xRQUNhallDUUNBQUlBWXRBQU5xSVFBTUFRc0xBMEFnQUNBTVMwVUVRQ0FBSUFvZ0RTQUpkQ0FMZGtFQ2RHb2lCaThCQURzQUFDQUFJQVl0QUFOcUlRQWdDU0FHTFFBQ2FpRUpEQUVMQ3dKQUlBQWdBMDhOQUNBQUlBb2dEU0FKZENBTGRpSUFRUUowYWlJRExRQUFPZ0FBSUFNdEFBTkJBVVlFUUNBSklBTXRBQUpxSVFrTUFRc2dDVUVmU3cwQVFTQWdDU0FLSUFCQkFuUnFMUUFDYWlJQUlBQkJJRThiSVFrTElBSkJBMnNoREFOQUlBVkJLR29RRDBVZ0J5QU1TWEVFUUNBSElBb2dCU2dDS0NJR0lBVW9BaXdpQUhRZ0MzWkJBblJxSWcwdkFRQTdBQUFnQnlBTkxRQURhaUlESUFvZ0JpQUFJQTB0QUFKcUlnQjBJQXQyUVFKMGFpSUdMd0VBT3dBQUlBVWdBQ0FHTFFBQ2FqWUNMQ0FESUFZdEFBTnFJUWNNQVFVZ0FrRUNheUVHQTBBZ0JVRW9haEFQSVFNZ0JTZ0NLQ0VNSUFVb0Fpd2hBQ0FHSUFkSklBTnlSUVJBSUFjZ0NpQU1JQUIwSUF0MlFRSjBhaUlETHdFQU93QUFJQVVnQUNBRExRQUNhallDTENBSElBTXRBQU5xSVFjTUFRc0xBMEFnQmlBSFNVVUVRQ0FISUFvZ0RDQUFkQ0FMZGtFQ2RHb2lBeThCQURzQUFDQUhJQU10QUFOcUlRY2dBQ0FETFFBQ2FpRUFEQUVMQ3dKQUlBSWdCMDBOQUNBSElBb2dEQ0FBZENBTGRpSUNRUUowYWlJRExRQUFPZ0FBSUFNdEFBTkJBVVlFUUNBQUlBTXRBQUpxSVFBTUFRc2dBRUVmU3cwQVFTQWdBQ0FLSUFKQkFuUnFMUUFDYWlJQUlBQkJJRThiSVFBTElCbEJBMnNoREFOQUlBVkJGR29RRDBVZ0NDQU1TWEVFUUNBSUlBb2dCU2dDRkNJR0lBVW9BaGdpQW5RZ0MzWkJBblJxSWcwdkFRQTdBQUFnQ0NBTkxRQURhaUlESUFvZ0JpQUNJQTB0QUFKcUlnSjBJQXQyUVFKMGFpSUdMd0VBT3dBQUlBVWdBaUFHTFFBQ2FqWUNHQ0FESUFZdEFBTnFJUWdNQVFVZ0dVRUNheUVEQTBBZ0JVRVVhaEFQSVFJZ0JTZ0NGQ0VHSUFVb0FoZ2hCeUFESUFoSklBSnlSUVJBSUFnZ0NpQUdJQWQwSUF0MlFRSjBhaUlDTHdFQU93QUFJQVVnQnlBQ0xRQUNhallDR0NBSUlBSXRBQU5xSVFnTUFRc0xBMEFnQXlBSVNVVUVRQ0FJSUFvZ0JpQUhkQ0FMZGtFQ2RHb2lBaThCQURzQUFDQUlJQUl0QUFOcUlRZ2dCeUFDTFFBQ2FpRUhEQUVMQ3dKQUlBZ2dHVThOQUNBSUlBb2dCaUFIZENBTGRpSUNRUUowYWlJRExRQUFPZ0FBSUFNdEFBTkJBVVlFUUNBSElBTXRBQUpxSVFjTUFRc2dCMEVmU3cwQVFTQWdCeUFLSUFKQkFuUnFMUUFDYWlJQ0lBSkJJRThiSVFjTEEwQWdCUkFQUlNBRUlDQkpjUVJBSUFRZ0NpQUZLQUlBSWdZZ0JTZ0NCQ0lDZENBTGRrRUNkR29pREM4QkFEc0FBQ0FFSUF3dEFBTnFJZ01nQ2lBR0lBSWdEQzBBQW1vaUFuUWdDM1pCQW5ScUlnUXZBUUE3QUFBZ0JTQUNJQVF0QUFKcU5nSUVJQU1nQkMwQUEyb2hCQXdCQlNBZlFRSnJJUU1EUUNBRkVBOGhBaUFGS0FJQUlRWWdCU2dDQkNFSUlBTWdCRWtnQW5KRkJFQWdCQ0FLSUFZZ0NIUWdDM1pCQW5ScUlnSXZBUUE3QUFBZ0JTQUlJQUl0QUFKcU5nSUVJQVFnQWkwQUEyb2hCQXdCQ3dzRFFDQURJQVJKUlFSQUlBUWdDaUFHSUFoMElBdDJRUUowYWlJQ0x3RUFPd0FBSUFRZ0FpMEFBMm9oQkNBSUlBSXRBQUpxSVFnTUFRc0xBa0FnQkNBZlR3MEFJQVFnQ2lBR0lBaDBJQXQySWdKQkFuUnFJZ010QUFBNkFBQWdBeTBBQTBFQlJnUkFJQWdnQXkwQUFtb2hDQXdCQ3lBSVFSOUxEUUJCSUNBSUlBb2dBa0VDZEdvdEFBSnFJZ0lnQWtFZ1R4c2hDQXRCYkVGc1FXeEJiRUZzUVd4QmJFRnNJQUVnQ0VFZ1J4c2dCU2dDQ0NBRktBSU1SeHNnQjBFZ1J4c2dCU2dDSENBRktBSWdSeHNnQUVFZ1J4c2dCU2dDTUNBRktBSTBSeHNnQ1VFZ1J4c2dCU2dDUkNBRktBSklSeHNoQ1F3SkN3QUxBQXNBQ3dBTEFBc0FDd0FMQUF0QmJDRUpDeUFGUWRBQWFpUUFJQWtMN0JBQkhuOGpBRUhRQUdzaUJTUUFRV3doQ1FKQUlBTkJDa2tOQUFKQUlBTWdBaThBQkNJR0lBSXZBQUFpQnlBQ0x3QUNJZ2hxYWtFR2FpSU9TUTBBSUFRdkFRSWhEeUFGUVR4cUlBSkJCbW9pQWlBSEVBMGlDVUdJZjBzTkFTQUZRU2hxSUFJZ0Iyb2lBaUFJRUEwaUNVR0lmMHNOQVNBRlFSUnFJQUlnQ0dvaUFpQUdFQTBpQ1VHSWYwc05BU0FGSUFJZ0Jtb2dBeUFPYXhBTklnbEJpSDlMRFFFZ0JFRUVhaUVLSUFBZ0FXb2lIRUVEYXlFZFFRQWdEMnRCSDNFaEN5QUZLQUlJSVJFZ0JTZ0NIQ0VTSUFVb0FqQWhFeUFGS0FKRUlSUWdCU2dDQkNFSklBVW9BaGdoQmlBRktBSXNJUWNnQlNnQ1FDRUlJQVVvQWhBaEhpQUZLQUlrSVI4Z0JTZ0NPQ0VnSUFVb0Frd2hJU0FGS0FJQUlSVWdCU2dDRkNFV0lBVW9BaWdoRnlBRktBSThJUmhCQVNFTklBQWdBVUVEYWtFQ2RpSUNhaUlPSUFKcUlnOGdBbW9pR1NFRUlBOGhBaUFPSVFNRFFDQU5SU0FFSUIxUGNrVUVRQ0FLSUJnZ0NIUWdDM1pCQVhScUlnd3RBQUVoRFNBQUlBd3RBQUE2QUFBZ0NpQVhJQWQwSUF0MlFRRjBhaUlNTFFBQklSQWdBeUFNTFFBQU9nQUFJQW9nRmlBR2RDQUxka0VCZEdvaURDMEFBU0VhSUFJZ0RDMEFBRG9BQUNBS0lCVWdDWFFnQzNaQkFYUnFJZ3d0QUFFaEd5QUVJQXd0QUFBNkFBQWdDaUFZSUFnZ0RXb2lDSFFnQzNaQkFYUnFJZ3d0QUFFaERTQUFJQXd0QUFBNkFBRWdDaUFYSUFjZ0VHb2lCM1FnQzNaQkFYUnFJZ3d0QUFFaEVDQURJQXd0QUFBNkFBRWdDaUFXSUFZZ0dtb2lESFFnQzNaQkFYUnFJZ1l0QUFFaEdpQUNJQVl0QUFBNkFBRWdDaUFWSUFrZ0cyb2lHM1FnQzNaQkFYUnFJZ2t0QUFFaElpQUVJQWt0QUFBNkFBRWdDQ0FOYWlFR1FRTWhDUUovSUJRZ0lVa0VRRUVESVEwZ0Jnd0JDeUFVSUFaQkEzWnJJaFFvQUFBaEdFRUFJUTBnQmtFSGNRc2hDQ0FISUJCcUlRWWdFeUFnU1FSL0lBWUZJQk1nQmtFRGRtc2lFeWdBQUNFWFFRQWhDU0FHUVFkeEN5RUhJQXdnR21vaERDQUpJQTF5SVJCQkF5RU5BbjhnRWlBZlNRUkFJQXdoQmtFRERBRUxJQXhCQjNFaEJpQVNJQXhCQTNackloSW9BQUFoRmtFQUN5QWJJQ0pxSVF3Z0VISWhFQ0FSSUI1SkJIOGdEQVVnRVNBTVFRTjJheUlSS0FBQUlSVkJBQ0VOSUF4QkIzRUxJUWtnQkVFQ2FpRUVJQUpCQW1vaEFpQURRUUpxSVFNZ0FFRUNhaUVBSUEwZ0VISkZJUTBNQVFzTElBVWdCellDTENBRklBZzJBa0FnQlNBR05nSVlJQVVnQ1RZQ0JDQUZJQlEyQWtRZ0JTQVROZ0l3SUFVZ0VqWUNIQ0FGSUJFMkFnZ2dCU0FZTmdJOElBVWdGellDS0NBRklCWTJBaFFnQlNBVk5nSUFJQUFnRGtzZ0F5QVBTM0lOQUVGc0lRa2dBaUFaU3cwQklBNUJBMnNoQ1FOQUlBVkJQR29RRHlBQUlBbFBja1VFUUNBS0lBVW9BandpQmlBRktBSkFJZ2QwSUF0MlFRRjBhaUlJTFFBQklRd2dBQ0FJTFFBQU9nQUFJQW9nQmlBSElBeHFJZ1owSUF0MlFRRjBhaUlITFFBQUlRZ2dCU0FHSUFjdEFBRnFOZ0pBSUFBZ0NEb0FBU0FBUVFKcUlRQU1BUXNMQTBBZ0JVRThhaEFQSVFjZ0JTZ0NQQ0VHSUFVb0FrQWhDU0FBSUE1UElBZHlSUVJBSUFvZ0JpQUpkQ0FMZGtFQmRHb2lCaTBBQUNFSElBVWdDU0FHTFFBQmFqWUNRQ0FBSUFjNkFBQWdBRUVCYWlFQURBRUxDd05BSUFBZ0RrOUZCRUFnQ2lBR0lBbDBJQXQyUVFGMGFpSUhMUUFCSUFBZ0J5MEFBRG9BQUNBQVFRRnFJUUFnQ1dvaENRd0JDd3NnRDBFRGF5RUFBMEFnQlVFb2FoQVBJQUFnQTAxeVJRUkFJQW9nQlNnQ0tDSUdJQVVvQWl3aUIzUWdDM1pCQVhScUlnZ3RBQUVoRGlBRElBZ3RBQUE2QUFBZ0NpQUdJQWNnRG1vaUJuUWdDM1pCQVhScUlnY3RBQUFoQ0NBRklBWWdCeTBBQVdvMkFpd2dBeUFJT2dBQklBTkJBbW9oQXd3QkN3c0RRQ0FGUVNocUVBOGhCeUFGS0FJb0lRWWdCU2dDTENFQUlBTWdEMDhnQjNKRkJFQWdDaUFHSUFCMElBdDJRUUYwYWlJR0xRQUFJUWNnQlNBQUlBWXRBQUZxTmdJc0lBTWdCem9BQUNBRFFRRnFJUU1NQVFzTEEwQWdBeUFQVDBVRVFDQUtJQVlnQUhRZ0MzWkJBWFJxSWdjdEFBRWhDQ0FESUFjdEFBQTZBQUFnQTBFQmFpRURJQUFnQ0dvaEFBd0JDd3NnR1VFRGF5RURBMEFnQlVFVWFoQVBJQUlnQTA5eVJRUkFJQW9nQlNnQ0ZDSUdJQVVvQWhnaUIzUWdDM1pCQVhScUlnZ3RBQUVoRGlBQ0lBZ3RBQUE2QUFBZ0NpQUdJQWNnRG1vaUJuUWdDM1pCQVhScUlnY3RBQUFoQ0NBRklBWWdCeTBBQVdvMkFoZ2dBaUFJT2dBQklBSkJBbW9oQWd3QkN3c0RRQ0FGUVJScUVBOGhCeUFGS0FJVUlRWWdCU2dDR0NFRElBSWdHVThnQjNKRkJFQWdDaUFHSUFOMElBdDJRUUYwYWlJR0xRQUFJUWNnQlNBRElBWXRBQUZxTmdJWUlBSWdCem9BQUNBQ1FRRnFJUUlNQVFzTEEwQWdBaUFaVDBVRVFDQUtJQVlnQTNRZ0MzWkJBWFJxSWdjdEFBRWhDQ0FDSUFjdEFBQTZBQUFnQWtFQmFpRUNJQU1nQ0dvaEF3d0JDd3NEUUNBRkVBOGdCQ0FkVDNKRkJFQWdDaUFGS0FJQUlnSWdCU2dDQkNJR2RDQUxka0VCZEdvaUJ5MEFBU0VJSUFRZ0J5MEFBRG9BQUNBS0lBSWdCaUFJYWlJQ2RDQUxka0VCZEdvaUJpMEFBQ0VISUFVZ0FpQUdMUUFCYWpZQ0JDQUVJQWM2QUFFZ0JFRUNhaUVFREFFTEN3TkFJQVVRRHlFSElBVW9BZ0FoQmlBRktBSUVJUUlnQkNBY1R5QUhja1VFUUNBS0lBWWdBblFnQzNaQkFYUnFJZ1l0QUFBaEJ5QUZJQUlnQmkwQUFXbzJBZ1FnQkNBSE9nQUFJQVJCQVdvaEJBd0JDd3NEUUNBRUlCeFBSUVJBSUFvZ0JpQUNkQ0FMZGtFQmRHb2lCeTBBQVNFSUlBUWdCeTBBQURvQUFDQUVRUUZxSVFRZ0FpQUlhaUVDREFFTEMwRnNRV3hCYkVGc1FXeEJiRUZzUVd3Z0FTQUNRU0JIR3lBRktBSUlJQVVvQWd4SEd5QURRU0JIR3lBRktBSWNJQVVvQWlCSEd5QUFRU0JIR3lBRktBSXdJQVVvQWpSSEd5QUpRU0JIR3lBRktBSkVJQVVvQWtoSEd5RUpEQUVMUVd3aENRc2dCVUhRQUdva0FDQUpDMWdCQTM4Q1FDQUFLQUtRNndFaUFVVU5BQ0FCS0FJQUlBRkJ0TlVCYWlnQ0FDSUNJQUZCdU5VQmFpZ0NBQ0lERUJNZ0FnUkFJQU1nQVNBQ0VRSUFEQUVMSUFFUUJnc2dBRUVBTmdLZzZ3RWdBRUlBTndPUTZ3RUw2UU1DQkg4Q2ZpQUFRUUJCS0JBRElRUWdBa0VCUVFVZ0F4c2lBRWtFUUNBQUR3c2dBVVVFUUVGL0R3dEJBU0VHQWtBQ1FDQURRUUZHRFFBZ0F5RUdJQUVvQUFBaUJVR282cjVwUmcwQVFYWWhBeUFGUVhCeFFkRFV0TUlCUncwQlFRZ2hBeUFDUVFoSkRRRWdBVFVBQkNFSUlBUkJBVFlDRkNBRUlBZzNBd0JCQUE4TElBRWdBaUFHRUJvaUF5QUNTdzBBSUFRZ0F6WUNHRUZ5SVFNZ0FDQUJhaUlGUVFGckxRQUFJZ0pCQ0hFTkFDQUNRU0J4SWdaRkJFQkJjQ0VESUFVdEFBQWlCVUduQVVzTkFTQUZRUWR4clVJQklBVkJBM1pCQ21xdGhpSUlRZ09JZmlBSWZDRUpJQUJCQVdvaEFBc2dBa0VHZGlFRklBSkJBblpCQUNFREFrQUNRQUpBQWtBZ0FrRURjVUVCYXc0REFBRUNBd3NnQUNBQmFpMEFBQ0VESUFCQkFXb2hBQXdDQ3lBQUlBRnFMd0FBSVFNZ0FFRUNhaUVBREFFTElBQWdBV29vQUFBaEF5QUFRUVJxSVFBTFFRRnhJUUlDZmdKQUFrQUNRQUpBSUFWQkFXc09Bd0VDQXdBTFFuOGdCa1VOQXhvZ0FDQUJhakVBQUF3REN5QUFJQUZxTXdBQVFvQUNmQXdDQ3lBQUlBRnFOUUFBREFFTElBQWdBV29wQUFBTElRZ2dCQ0FDTmdJZ0lBUWdBellDSENBRUlBZzNBd0JCQUNFRElBUkJBRFlDRkNBRUlBZ2dDU0FHR3lJSU53TUlJQVJDZ0lBSUlBZ2dDRUtBZ0FoYUd6NENFQXNnQXd0ZkFRRi9RYmgvSVFNZ0FVRUJRUVVnQWhzaUFrOEVmeUFBSUFKcVFRRnJMUUFBSWdCQkEzRkJBblJCb0I1cUtBSUFJQUpxSUFCQkJIWkJESEZCc0I1cUtBSUFhaUFBUVNCeElnRkZhaUFCUVFWMklBQkJ3QUJKY1dvRlFiaC9Dd3NNQUNBQUlBRWdBa0VBRUJrTGx3TUNCWDhDZmlNQVFVQnFJZ1FrQUFKQUEwQWdBVUVGVHdSQUFrQWdBQ2dBQUVGd2NVSFExTFRDQVVZRVFFSitJUWNnQVVFSVNRMEVJQUFvQUFRaUFrRjNTdzBFSUFKQkNHb2lBeUFCU3cwRUlBSkJnWDlKRFFFTUJBc2dCRUVZYWlBQUlBRVFHeUVDUW40Z0JDa0RHRUlBSUFRb0FpeEJBVWNiSUFJYklnZENmVllOQXlBSElBaDhJZ2dnQjFSQ2ZpRUhEUU1DUUFKQUlBRkJDRWtOQUNBQUtBQUFRWEJ4UWREVXRNSUJSdzBBSUFBb0FBUWlBa0YzU3cwRlFiaC9JQUpCQ0dvaUFpQUJJQUpKR3lFRERBRUxJQVJCR0dvZ0FDQUJFQnNpQWtHSWYwc0VRQ0FDSVFNTUFRdEJ1SDhoQXlBQ0RRQWdBU0FFS0FJd0lnSnJJUVVnQUNBQ2FpRUdBMEFnQmlBRklBUkJER29RSFNJRFFZaC9TdzBCSUFOQkEyb2lBaUFGU3dSQVFiaC9JUU1NQWdzZ0JTQUNheUVGSUFJZ0Jtb2hCaUFFS0FJUVJRMEFDeUFFS0FJNEJIOUJ1SDhoQXlBRlFRUkpEUUVnQmtFRWFnVWdCZ3NnQUdzaEF3c2dBMEdJZjBzTkF3c2dBU0FEYXlFQklBQWdBMm9oQUF3QkN3dENmaUFJSUFFYklRY0xJQVJCUUdza0FDQUhDMlFCQVg5QnVIOGhBd0pBSUFGQkEwa05BQ0FBTFFBQ0lRRWdBaUFBTHdBQUlnQkJBWEUyQWdRZ0FpQUFRUUYyUVFOeElnTTJBZ0FnQWlBQUlBRkJFSFJ5UVFOMklnQTJBZ2dDUUFKQUlBTkJBV3NPQXdJQkFBRUxRV3dQQ3lBQUlRTUxJQU1MUkFFQ2Z5QUJJQUlvQWdRaUF5QUJLQUlFYWlJRU5nSUVJQUFnQTBFQ2RFR2dIV29vQWdBZ0FTZ0NBRUVBSUFScmRuRTJBZ0FnQVJBUEdpQUFJQUpCQ0dvMkFnUUx6Z0VCQm45QnVuOGhDZ0pBSUFJb0FnUWlDQ0FDS0FJQUlnbHFJZzBnQVNBQWEwc05BRUZzSVFvZ0NTQUVJQU1vQWdBaUMydExEUUFnQUNBSmFpSUVJQUlvQWdnaURHc2hBaUFBSUFGQklHc2lBQ0FMSUFsQkFCQWdJQU1nQ1NBTGFqWUNBQUpBQWtBZ0JDQUZheUFNVHdSQUlBSWhCUXdCQ3lBTUlBUWdCbXRMRFFJZ0J5QUhJQUlnQldzaUFtb2lBU0FJYWs4RVFDQUVJQUVnQ0JBS0dnd0NDeUFDSUFocUlRZ2dCQ0FCUVFBZ0Ftc1FDaUFDYXlFRUN5QUVJQUFnQlNBSVFRRVFJQXNnRFNFS0N5QUtDOGNFQVFKL0lBQWdBMm9oQmdKQUlBTkJCMHdFUUFOQUlBQWdCazhOQWlBQUlBSXRBQUE2QUFBZ0FFRUJhaUVBSUFKQkFXb2hBZ3dBQ3dBTElBUkJBVVlFUUFKQUlBQWdBbXNpQlVFSFRRUkFJQUFnQWkwQUFEb0FBQ0FBSUFJdEFBRTZBQUVnQUNBQ0xRQUNPZ0FDSUFBZ0FpMEFBem9BQXlBQUlBSWdCVUVDZENJRlFjQWVhaWdDQUdvaUFpZ0FBRFlBQkNBQ0lBVkI0QjVxS0FJQWF5RUNEQUVMSUFBZ0Fpa0FBRGNBQUFzZ0FrRUlhaUVDSUFCQkNHb2hBQXNnQVNBR1R3UkFJQUFnQTJvaEFTQUVRUUZISUFBZ0FtdEJEMHB5UlFSQUEwQWdBQ0FDS1FBQU53QUFJQUpCQ0dvaEFpQUFRUWhxSWdBZ0FVa05BQXdEQ3dBTElBQWdBaWtBQURjQUFDQUFJQUlwQUFnM0FBZ2dBMEVSU1EwQklBQkJFR29oQUFOQUlBQWdBaWtBRURjQUFDQUFJQUlwQUJnM0FBZ2dBQ0FDS1FBZ053QVFJQUFnQWlrQUtEY0FHQ0FDUVNCcUlRSWdBRUVnYWlJQUlBRkpEUUFMREFFTEFrQWdBQ0FCU3dSQUlBQWhBUXdCQ3lBQklBQnJJUVVDUUNBRVFRRkhJQUFnQW10QkQwcHlSUVJBSUFJaEF3TkFJQUFnQXlrQUFEY0FBQ0FEUVFocUlRTWdBRUVJYWlJQUlBRkpEUUFMREFFTElBQWdBaWtBQURjQUFDQUFJQUlwQUFnM0FBZ2dCVUVSU0EwQUlBQkJFR29oQUNBQ0lRTURRQ0FBSUFNcEFCQTNBQUFnQUNBREtRQVlOd0FJSUFBZ0F5a0FJRGNBRUNBQUlBTXBBQ2czQUJnZ0EwRWdhaUVESUFCQklHb2lBQ0FCU1EwQUN3c2dBaUFGYWlFQ0N3TkFJQUVnQms4TkFTQUJJQUl0QUFBNkFBQWdBVUVCYWlFQklBSkJBV29oQWd3QUN3QUxDNjRIQWdWL0FYNGpBRUdBQVdzaUVTUUFJQkVnQXpZQ2ZFRi9JUThDUUFKQUFrQUNRQUpBSUFJT0JBRUFBd0lFQ3lBR1JRUkFRYmgvSVE4TUJBdEJiQ0VQSUFVdEFBQWlBaUFEU3cwRElBZ2dBa0VDZENJQ2FpZ0NBQ0VESUFJZ0Iyb29BZ0FoQWlBQVFRQTZBQXNnQUVJQU53SUFJQUFnQWpZQ0RDQUFJQU02QUFvZ0FFRUFPd0VJSUFFZ0FEWUNBRUVCSVE4TUF3c2dBU0FKTmdJQVFRQWhEd3dDQ3lBS1JRUkFRV3doRHd3Q0MwRUFJUThnQzBVZ0RFRVpTSElOQVVFSUlBUjBRUWhxSVFCQkFDRURBMEFnQUNBRFRRMENJQU5CUUdzaEF3d0FDd0FMUVd3aER5QVJJQkZCL0FCcUlCRkIrQUJxSUFVZ0JoQU1JZ05CaUg5TERRQWdFU2dDZUNJQ0lBUkxEUUFnRVNnQ2ZFRUJhaUVKSUFCQkNHb2hDMEdBZ0FJZ0FuUkJFSFVoQlVFQklSQkJBU0FDZENJUFFRRnJJZ29oRWdOQUlBa2dEa2NFUUFKQUlCRWdEa0VCZENJRWFpOEJBQ0lNUWYvL0EwWUVRQ0FMSUJKQkEzUnFJQTQyQWdRZ0VrRUJheUVTUVFFaERBd0JDeUFRUVFBZ0JTQU13VW9iSVJBTElBUWdEV29nRERzQkFDQU9RUUZxSVE0TUFRc0xJQUFnQWpZQ0JDQUFJQkEyQWdBQ1FDQUtJQkpHQkVBZ0RVSHFBR29oQmtFQUlSQkJBQ0VNQTBBZ0NTQVFSZ1JBSUE5QkEzWWdEMEVCZG1wQkEyb2lCVUVCZENFRVFRQWhERUVBSVJJRFFFRUFJUTRnRHlBU1RRMEVBMEFnRGtFQ1J3UkFJQXNnQlNBT2JDQU1haUFLY1VFRGRHb2dCaUFPSUJKcWFpMEFBRFlDQkNBT1FRRnFJUTRNQVFzTElCSkJBbW9oRWlBRUlBeHFJQXB4SVF3TUFBc0FCU0FSSUJCQkFYUnFMZ0VBSVFVZ0JpQU1haUlFSUJNM0FBQkJDQ0VPQTBBZ0JTQU9TZ1JBSUFRZ0Rtb2dFemNBQUNBT1FRaHFJUTRNQVFzTElCTkNnWUtFaUpDZ3dJQUJmQ0VUSUJCQkFXb2hFQ0FGSUF4cUlRd01BUXNBQ3dBTElBOUJBM1lnRDBFQmRtcEJBMm9oQlVFQUlSQkJBQ0VPQTBBZ0NTQVFSZzBCUVFBaERDQVJJQkJCQVhScUxnRUFJZ1JCQUNBRVFRQktHeUVFQTBBZ0JDQU1Sd1JBSUFzZ0RrRURkR29nRURZQ0JBTkFJQVVnRG1vZ0NuRWlEaUFTU3cwQUN5QU1RUUZxSVF3TUFRc0xJQkJCQVdvaEVBd0FDd0FMSUFKQkFXb2hCVUVBSVF3RFFDQU1JQTlIQkVBZ0RTQUxJQXhCQTNScUlna29BZ1FpQkVFQmRHb2lBaUFDTHdFQUlnWkJBV283QVFBZ0NTQUZJQVpuUVdCemFpSUNPZ0FESUFrZ0JpQUNkQ0FQYXpzQkFDQUpJQWdnQkVFQ2RDSUNhaWdDQURvQUFpQUpJQUlnQjJvb0FnQTJBZ1FnREVFQmFpRU1EQUVMQ3lBQklBQTJBZ0FnQXlFUEN5QVJRWUFCYWlRQUlBOEw3Vm9DTzM4R2ZpTUFRZUFCYXlJRUpBQUNRRUd3N0FrUUJTSUZSUVJBUVVBaEJ3d0JDeUFGUWdBM0F2VHFBU0FGUVFBMkFzVHJBU0FGUVFBMkFyVHJBU0FGUWdBM0FwenJBU0FGUVFBMkFyanBBU0FGUVFBMkFxenNDU0FGUWdBM0F0VHJBU0FGUWdBM0FxenJBU0FGUWdBM0E0anJBU0FGUWdBM0F1VHFBU0FGUWdBM0F1VHJBU0FGUVlHQWdNQUFOZ0s4NndFZ0JVSUFOd0trNndFZ0JVSDg2Z0ZxUVFBMkFnQWdCVUdRNndGcVFnQTNBd0FnQlJBWUlBVkJyTlVCYWlFVUlBVkIrT3NCYWlFY0lBVkJzT29CYWlFaUlBVkJvREJxSVNvZ0JVR1lJR29oS3lBRlFhalFBR29oSGlBRlFSQnFJU3dnQlVFSWFpRW9JQVZCQkdvaExTQUZRY0RwQVdvaEtTQUZRWWpyQVdvZ0JFR1VBV29oTHlBRVFZd0JhaUV3SUFSQmhBRnFJVEVnQkVIY0FHb2hNaUFFUWRRQWFpRXpJQVJCekFCcUlUUWdBQ0VkQWtBQ1FBSkFBa0FDUUFOQVFRRkJCU0FGS0FMazZnRWJJUVlDUUFOQUlBTWdCa2tOQVNBQ0tBQUFRWEJ4UWREVXRNSUJSZ1JBUWJoL0lRY2dBMEVJU1EwSUlBSW9BQVFpRGtGM1N3UkFRWEloQnd3SkN5QURJQTVCQ0dvaUNVa05DQ0FPUVlCL1N3UkFJQWtoQnd3SkN5QURJQWxySVFNZ0FpQUphaUVDREFFTEN5QUZRZ0EzQXF6cEFTQUZRZ0EzQStqcEFTQUZRUUEyQXBqckFTQUZRZ0EzQTREcUFTQUZRZ00zQS9qcEFTQUZRYlRwQVdwQ0FEY0NBQ0FGUWZEcEFXcENBRGNEQUNBRlFhalFBR29pQ1VHTWdJRGdBRFlDQUNBRlFhelFBV3BCNEJJcEFnQTNBZ0FnQlVHMDBBRnFRZWdTS0FJQU5nSUFJQVVnQlVFUWFqWUNBQ0FGSUFWQm9EQnFOZ0lFSUFVZ0JVR1lJR28yQWdnZ0JTQUpOZ0lNSUFWQkFVRUZJQVVvQXVUcUFSczJBcnpwQVFKQUlBRkZEUUFnQlNnQ3JPa0JJZ2tnSFVZTkFDQUZJQWsyQXJqcEFTQUZJQjAyQXF6cEFTQUZLQUt3NlFFaERpQUZJQjAyQXJEcEFTQUZJQjBnRGlBSmEybzJBclRwQVF0QnVIOGhDU0FEUVFWQkNTQUZLQUxrNmdFaUJodEpEUVVnQWtFQlFRVWdCaHNnQmhBYUlnNUJpSDlMQkVBZ0RpRUpEQVVMSUFNZ0RrRURha2tOQlNBcElBSWdEaUFHRUJraUJrR0lmMHNFUUNBR0lRa01CUXNnQmcwRkFrQUNRQ0FGS0FLbzZ3RkJBVWNOQUNBRktBS2s2d0VpQ1VVTkFDQUZLQUtVNndGRkRRQWdDU2dDQkVFQmF5SUhJQVVvQXR6cEFTSUtyVUtIbGErdm1MYmVtNTUvZmtMSno5bXk4ZVc2NmllRlFoZUpRcy9XMDc3U3g2dlpRbjVDK2ZQZDhabjJtYXNXZkNJL1FpR0lJRCtGUXMvVzA3N1N4NnZaUW40aVAwSWRpQ0EvaFVMNTg5M3htZmFacXhaK0lqOUNJSWdnUDRXbmNTRUdJQWtvQWdBaEZRTkFRUUFoQ0FKQUlCVWdCa0VDZEdvb0FnQWlDVVVOQUNBSktBSUlRUWhKRFFBZ0NTZ0NCQ0lTS0FBQVFiZkl3dUYrUncwQUlCSW9BQVFoQ0FzZ0NDQUtSd1JBSUFZZ0IzRkJBV29oQmlBSURRRUxDeUFKUlEwQUlBVVFHQ0FGUVg4MkFxRHJBU0FGSUFrMkFwVHJBU0FGSUFVb0F0enBBU0lJTmdLWTZ3RU1BUXNnQlNnQzNPa0JJUWdMQWtBZ0NFVU5BQ0FGS0FLWTZ3RWdDRVlOQUVGZ0lRa01CZ3NDUUNBRktBTGc2UUVFUUNBRklBVW9BdWpxQVNJSlJUWUM3T29CSUFrTkFTQUZRdm5xME5EbnlhSGs0UUEzQTZqcUFTQUZRZ0EzQTZEcUFTQUZRcy9XMDc3U3g2dlpRamNEbU9vQklBVkMxdXVDN3VyOWlmWGdBRGNEa09vQklBVkNBRGNEaU9vQklDSkJBRUVvRUFNYURBRUxJQVZCQURZQzdPb0JDeUFCSUIxcUlTVWdCU0FGS1FQbzZRRWdEcTE4TndQbzZRRWdBeUFPYXlFRElBSWdEbW9oQWlBZElRNERRQ0FDSUFNZ0JFRXNhaEFkSWhWQmlIOUxCRUFnRlNFSkRBWUxJQU5CQTJzaU5TQVZTUTBFSUFKQkEyb2hHMEZzSVFrQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FFS0FJc0RnTUNBUUFWQ3lBVlFmLy9CMHNORXlBVlFRTkpEUklnQlNrRHlPa0JJVDhDUUFKQUlCc3RBQUFpQ1VFRGNTSWFRUUZyRGdNR0FRQUhDeUFGS0FLQTZnRU5BRUZpSVFrTUZRc2dGVUVGU1EwU0lCc29BQUFoQXdKL0FrQUNRQUpBSUFsQkFuWkJBM0VpQ1VFQ2F3NENBUUlBQ3lBSlFRQkhJUWNnQTBFRWRrSC9CM0VoQzBFRElRWWdBMEVPZGtIL0IzRU1BZ3RCQkNFR0lBTkJCSFpCLy84QWNTRUxRUUVoQnlBRFFSSjJEQUVMSUFOQkJIWkIvLzhQY1NJTFFZQ0FDRXNORTBFQklRZEJCU0VHSUFJdEFBZEJDblFnQTBFV2RuSUxJZ2dnQm1vaUNTQVZTdzBTQWtBZ0MwR0JCa2tOQUNBRktBS2M2d0ZGRFFCQkFDRURBMEFnQTBHRGdBRkxEUUVnQTBGQWF5RUREQUFMQUFzZ0JpQWJhaUVQSUJwQkEwY05CaUFGS0FJTUlnSXRBQUZCQ0hRaEF5QUhEUWNnQTBVTkNDQUVRZkFBYWlBUElBZ1FEU0lEUVloL1N3MEpJQUpCQkdvaEJpQUxJQnhxSWhKQkEyc2hDa0VBSUFJdkFRSnJRUjl4SVFjZ0hDRURBMEFnQkVId0FHb1FEMFVnQXlBS1NYRUVRQ0FESUFZZ0JDZ0NjQ0lJSUFRb0FuUWlEM1FnQjNaQkFuUnFJZ0l2QVFBN0FBQWdBeUFDTFFBRGFpSURJQVlnQ0NBUElBSXRBQUpxSWdoMElBZDJRUUowYWlJQ0x3RUFPd0FBSUFRZ0NDQUNMUUFDYWpZQ2RDQURJQUl0QUFOcUlRTU1BUVVnRWtFQ2F5RUlBMEFnQkVId0FHb1FEeUVQSUFRb0FuQWhDaUFFS0FKMElRSWdBeUFJU3lBUGNrVUVRQ0FESUFZZ0NpQUNkQ0FIZGtFQ2RHb2lDaThCQURzQUFDQUVJQUlnQ2kwQUFtbzJBblFnQXlBS0xRQURhaUVEREFFTEN3TkFJQU1nQ0UwRVFDQURJQVlnQ2lBQ2RDQUhka0VDZEdvaUR5OEJBRHNBQUNBRElBOHRBQU5xSVFNZ0FpQVBMUUFDYWlFQ0RBRUxDd0pBSUFNZ0VrOE5BQ0FESUFZZ0NpQUNkQ0FIZGtFQ2RHb2lBeTBBQURvQUFDQURMUUFEUVFGR0JFQWdBaUFETFFBQ2FpRUNEQUVMSUFKQkgwc05BRUVnSUFJZ0F5MEFBbW9pQWlBQ1FTQlBHeUVDQzBGc1FXd2dDeUFFS0FKNElBUW9BbnhIR3lBQ1FTQkhHeUVEREFzTEFBc0FDeUFFS0FJMElnSWdKU0FPYTBzTkNpQU9SUVJBUVFBaENTQUNEUUlNRGdzZ0RpQWJMUUFBSUFJUUF4b2dBaUVKREF3TElCVWdKU0FPYTBzTkNTQU9EUUZCQUNFSklCVkZEUXdMUWJaL0lRa01FUXNnRGlBYklCVVFBaG9nRlNFSkRBb0xJQndnR3dKL0FrQUNRQUpBSUFsQkFuWkJBM0ZCQVdzT0F3RUFBZ0FMSUFsQkEzWWhBMEVCREFJTElCc3ZBQUJCQkhZaEEwRUNEQUVMSUJWQkJFa05EaUFDTHdBRElBSXRBQVZCRUhSeUlnSkJqNENBQVVzTkRpQUNRUVIySVFOQkF3c2lBbW90QUFBZ0EwRWdhaEFESVFrZ0JTQUROZ0tBNndFZ0JTQUpOZ0x3NmdFZ0FrRUJhaUVKREFVTElCVUNmd0pBQWtBQ1FDQUpRUUoyUVFOeFFRRnJEZ01CQUFJQUN5QUpRUU4ySVFOQkFRd0NDeUFiTHdBQVFRUjJJUU5CQWd3QkN5QUNMd0FESUFJdEFBVkJFSFJ5UVFSMklRTkJBd3NpQWlBRGFpSUpRU0JxU1FSQUlBa2dGVXNORFNBY0lBSWdHMm9nQXhBQ0lRSWdCU0FETmdLQTZ3RWdCU0FDTmdMdzZnRWdBaUFEYWlJQ1FnQTNBQmdnQWtJQU53QVFJQUpDQURjQUNDQUNRZ0EzQUFBTUJRc2dCU0FETmdLQTZ3RWdCU0FDSUJ0cU5nTHc2Z0VNQkFzZ0IwVUVRQ0FlSUE4Z0NDQVVFQlFpQWtHSWYwc2dBaUFJVDNJTkRDQWNJQXNnQWlBUGFpQUlJQUpySUI0UUZTRUREQU1MSUF0RklBaEZjZzBMSUF0QkNIWWlBeUFJSUF0SkJIOGdDRUVFZENBTGJnVkJEd3RCR0d3aUFrR01DR29vQWdCc0lBSkJpQWhxS0FJQWFpSUdRUU4ySUFacUlBSkJnQWhxS0FJQUlBSkJoQWhxS0FJQUlBTnNha2tFUUNNQVFSQnJJaEFrQUNBZUtBSUFJUU1nRkVId0JHcEJBRUhzQUJBRElRWkJWQ0VDQWtBZ0EwSC9BWEVpREVFTVN3MEFBa0FnRkVIY0NXb2dCaUFRUVFocUlCQkJER29nRHlBSUlCUkIzQXRxSWhjUUN5SVNRWWgvU3cwQUlCQW9BZ3dpQmlBTVN3MEJJQlJCcUFWcUlRMGdGRUdrQldvaE5pQWVRUVJxSVJFZ0EwR0FnSUI0Y1NFM0lBWkJBV29pRXlFQ0lBWWhBd05BSUFJaUIwRUJheUVDSUFNaUNrRUJheUVESUJRZ0NrRUNkR29vQXZBRVJRMEFDMEVCSUFjZ0IwRUJUUnNoRmtFQUlRZEJBU0VDQTBBZ0FpQVdSd1JBSUJRZ0FrRUNkQ0lEYWlnQzhBUWhHQ0FESUExcUlBYzJBZ0FnQWtFQmFpRUNJQWNnR0dvaEJ3d0JDd3NnRFNBSE5nSUFRUUFoQWlBUUtBSUlJUU1EUUNBQ0lBTkhCRUFnRFNBQ0lCUnFRZHdKYWkwQUFDSVlRUUowYWlJWklCa29BZ0FpR1VFQmFqWUNBQ0FVSUJsQkFYUnFJaGtnR0RvQTNRVWdHU0FDT2dEY0JTQUNRUUZxSVFJTUFRc0xRUUFoQXlBTlFRQTJBZ0FnRENBR1FYOXphaUVHUVFFaEFnTkFJQUlnRmtjRVFDQVVJQUpCQW5ScUlnMGdBellDQUNBTktBTHdCQ0FDSUFacWRDQURhaUVESUFKQkFXb2hBZ3dCQ3dzZ0RDQVRJQXBySWdaclFRRnFJUW9nQmlFREEwQWdBeUFLU1FSQUlCUWdBMEUwYkdvaERVRUJJUUlEUUNBQ0lCWkhCRUFnRFNBQ1FRSjBJaGhxSUJRZ0dHb29BZ0FnQTNZMkFnQWdBa0VCYWlFQ0RBRUxDeUFEUVFGcUlRTU1BUXNMSUJjZ0ZFRTBFQUloT0NBVVFaQU1haUU1SUJNZ0RHc2hPaUFVUWR3RmFpRVhRUUFoQ2dOQUFrQUNRQ0FISUFwSEJFQkJBU0FNSUJNZ0Z5QUtRUUYwYWlJQ0xRQUJJZzFySWdOckloaDBJUmtnQWkwQUFDRVdJRGdnRFVFQ2RHb2lIeWdDQUNFQ0lBWWdHRTBFUUNBMlFRRWdBeUE2YWlJTklBMUJBVXdiSWlCQkFuUWlKR29vQWdBaERTQTVJQlFnQTBFMGJHcEJOQkFDSVNFZ0RVRUJkQ0VtSUJFZ0FrRUNkR29oSXlBZ1FRRk5EUUlnQTBFUWRFR0FnUHdIY1NBV2NrR0FnSUFJY2lFZ0lDRWdKR29vQWdBaEpFRUFJUUlEUUNBQ0lDUkdEUU1nSXlBQ1FRSjBhaUFnTmdFQUlBSkJBV29oQWd3QUN3QUxJQUlnQWlBWmFpSU5JQUlnRFVzYklRMGdBMEVRZEVHQWdQd0hjU0FXY2tHQWdJQUljaUVEQTBBZ0FpQU5SZzBESUJFZ0FrRUNkR29nQXpZQkFDQUNRUUZxSVFJTUFBc0FDeUFlSUF4QkVIUWdOM0lnREhKQmdBSnlOZ0lBREFNTElBY2dEV3NoSkNBWElDWnFJU1pCQUNFTkEwQWdEU0FrUmcwQlFRRWdHQ0FUSUNZZ0RVRUJkR29pSnkwQUFTSUNheUk3YTNRaVBDQWhJQUpCQW5ScUlpQW9BZ0FpQW1vaFBTQURJRHRxUVJCMFFZQ0EvQWR4SUNjdEFBQkJDSFJ5SUJaeVFZQ0FnQkJ5SVNjRFFDQWpJQUpCQW5ScUlDYzJBUUFnQWtFQmFpSUNJRDFKRFFBTElDQWdJQ2dDQUNBOGFqWUNBQ0FOUVFGcUlRME1BQXNBQ3lBZklCOG9BZ0FnR1dvMkFnQWdDa0VCYWlFS0RBQUxBQXNnRWlFQ0N5QVFRUkJxSkFBZ0FrR0lmMHNnQWlBSVQzSU5EQ0FjSUFzZ0FpQVBhaUFJSUFKcklCNFFGaUVEREFNTElCNGdEeUFJSUJRUUZDSUNRWWgvU3lBQ0lBaFBjZzBMSUJ3Z0N5QUNJQTlxSUFnZ0Ftc2dIaEFYSVFNTUFnc2dBd1JBSUJ3Z0N5QVBJQWdnQWhBV0lRTU1BZ3NnSENBTElBOGdDQ0FDRUJjaEF3d0JDeUFjSUFzZ0R5QUlJQUlRRlNFREN5QURRWWgvU3cwSUlBVWdDellDZ09zQklBVWdIRFlDOE9vQklBVkJBVFlDZ09vQklCcEJBa1lFUUNBRklCNDJBZ3dMSUFzZ0hHb2lBa0lBTndBQUlBSkNBRGNBR0NBQ1FnQTNBQkFnQWtJQU53QUlJQWxCaUg5TERRb0xJQWtnRlVZTkNDQVZJQWxySVFZZ0JTZ0NuT3NCSVFvQ1FDQUpJQnRxSWdNdEFBQWlEMFVFUUVFQklRSkJBQ0VQUWJoL0lRa2dCa0VCUmcwQkRBc0xBbjhnQTBFQmFpQVB3Q0lDUVFCT0RRQWFJQUpCZjBZRVFDQUdRUU5JRFFzZ0F5OEFBVUdBL2dGcUlROGdBMEVEYWd3QkN5QUdRUUpJRFFvZ0F5MEFBU0FQUVFoMGNrR0FnQUpySVE4Z0EwRUNhZ3NoRWtHNGZ5RUpJQkpCQVdvaUFpQVZJQnRxSWdkTERRb2dMQ0FGSUJJdEFBQWlFa0VHZGtFalFRa2dBaUFISUFKclFjQVFRZEFSUWZBU0lBVW9Bb1RxQVNBS0lBOGdGQkFoSWdsQmlIOUxEUWdnS3lBb0lCSkJCSFpCQTNGQkgwRUlJQUlnQ1dvaUFpQUhJQUpyUVlBTFFZQU1RWUFYSUFVb0FvVHFBU0FGS0FLYzZ3RWdEeUFVRUNFaUNFR0lmMHNOQ0VGc0lRa2dLaUF0SUJKQkFuWkJBM0ZCTkVFSklBSWdDR29pQWlBSElBSnJRWUFOUWVBT1FaQVpJQVVvQW9UcUFTQUZLQUtjNndFZ0R5QVVFQ0VpQjBHSWYwc05DaUFDSUFkcUlBTnJJZ0loQ1NBQ1FZaC9TdzBLQ3lBT0lBOUJBRXh5RFFFTFFicC9JUWtNQ0FzZ0pTQU9heUVKSUFZZ0Ftc2hCaUFDSUFOcUlRY0NRQUpBQWtBZ0NrVUVRQ0FQUVFsSUlBVXBBOGpwQVVLQmdJQUlWSElOQWlBb0tBSUFJZ0pCQ0dvaEVpQUNLQUlFSVFwQkFDRURRUUFoQWdOQUlBTWdDblpGQkVBZ0FpQVNJQU5CQTNScUxRQUNRUlpMYWlFQ0lBTkJBV29oQXd3QkN3c2dCVUVBTmdLYzZ3RWdBa0VJSUFwcmRFRVVUdzBCREFNTElBVkJBRFlDbk9zQkN5QUVJQVVvQXZEcUFTSUROZ0xjQVNBSklBNXFJUllnQXlBRktBS0E2d0ZxSVJjQ1FDQVBSUVJBSUE0aEJ3d0JDeUFGS0FLNDZRRWhHaUFGS0FLMDZRRWhHQ0FGS0FLdzZRRWhFaUFGUVFFMkFvVHFBVUVBSVFNRFFDQURRUU5IQkVBZ0JDQURRUUowSWdKcUlBSWdCV3BCck5BQmFpZ0NBRFlDWkNBRFFRRnFJUU1NQVFzTFFXd2hDU0FFUVRocUlnSWdCeUFHRUExQmlIOUxEUU5CQ0NBUElBOUJDRTRiSVI4Z05DQUNJQVVvQWdBUUhpQXpJQUlnQlNnQ0NCQWVJRElnQWlBRktBSUVFQjRnRGlBU2F5RVpRUUFoQ0FOQUlBUkJPR29RRDBFRFJpQUlJQjlPY2tVRVFDQUVLQUpRSUFRb0FreEJBM1JxS1FJQUlrQ25JZ2RCRUhZaUVVSC9BWEVoQ3lBRUtBSmdJQVFvQWx4QkEzUnFLUUlBSWtHbklneEJFSFlpSVVIL0FYRWhFQ0FFS0FKWUlBUW9BbFJCQTNScUtRSUFJa0pDSUlpbklRWWdRVUlnaUNCQVFpQ0lweUVEQWtBZ1FrSVFpS2NpQ2tIL0FYRWlBa0VDVHdSQUFrQWdBa0VaU1NBL1FvR0FnQkJVY2tVRVFDQUVRU0FnQkNnQ1BDSUtheUlOSUFJZ0FpQU5TeHNpRXlBS2FqWUNQQ0FHSUFRb0FqZ2dDblJCQUNBVGEzWWdBaUFUYXlJVGRHb2hDaUFFUVRocUVBOGFJQUlnRFUwTkFTQUVJQVFvQWp3aUFpQVRhallDUENBRUtBSTRJQUowUVFBZ0UydDJJQXBxSVFvTUFRc2dCQ0FDSUFRb0Fqd2lEV28yQWp3Z0JDZ0NPQ0FOZEVFQUlBcHJkaUFHYWlFS0lBUkJPR29RRHhvTElBUXBBbVFoUkNBRUlBbzJBbVFnQkNCRU53Sm9EQUVMQWtBZ0FrVUVRQ0FEQkVBZ0JDZ0NaQ0VLREFNTElBUW9BbWdoQ2d3QkN5QUVJQVFvQWp3aUFrRUJhallDUEFKL0lBWWdBMFZxSUFRb0FqZ2dBblJCSDNacUlnSkJBMFlFUUNBRUtBSmtRUUZyREFFTElBSkJBblFnQkdvb0FtUUxJZ1pGSUFacUlRb2dBa0VCUndSQUlBUWdCQ2dDYURZQ2JBc0xJQVFnQkNnQ1pEWUNhQ0FFSUFvMkFtUUxweUVDSUVGQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDUENJR0lCQnFOZ0k4SUFRb0FqZ2dCblJCQUNBaGEzWWdBbW9oQWdzZ0N5QVFha0VVVHdSQUlBUkJPR29RRHhvTElFQkNnSUQ4QjROUVJRUkFJQVFnQkNnQ1BDSUdJQXRxTmdJOElBUW9BamdnQm5SQkFDQVJhM1lnQTJvaEF3c2dCRUU0YWhBUEdpQUVJQVFvQWpnaUJrRUFJQWRCR0hZaUN5QUVLQUk4YWlJUWEzWWdDMEVDZEVHZ0hXb29BZ0J4SUFkQi8vOERjV28yQWt3Z0JDQVFJQXhCR0hZaUIyb2lDellDUENBRUlBZEJBblJCb0IxcUtBSUFJQVpCQUNBTGEzWnhJQXhCLy84RGNXbzJBbHdnQkVFNGFoQVBHaUFFSUVLbklnWkJHSFlpQnlBRUtBSThhaUlMTmdJOElBUWdCMEVDZEVHZ0hXb29BZ0FnQkNnQ09FRUFJQXRyZG5FZ0JrSC8vd054YWpZQ1ZDQUVRZkFBYWlBSVFReHNhaUlHSUFvMkFnZ2dCaUFDTmdJRUlBWWdBellDQUNBSVFRRnFJUWdnQXlBWmFpQUNhaUVaREFFTEN5QUlJQjlJRFFNZ0ZrRWdheUVoSUE0aEJ3TkFJQVJCT0dvUUQwRURSaUFJSUE5T2NrVUVRQ0FFS0FKUUlBUW9Ba3hCQTNScUtRSUFJa0NuSWdaQkVIWWlJMEgvQVhFaENpQUVLQUpnSUFRb0FseEJBM1JxS1FJQUlrR25JZzFCRUhZaUlFSC9BWEVoRXlBRUtBSllJQVFvQWxSQkEzUnFLUUlBSWtKQ0lJaW5JUU1nUVVJZ2lDQkFRaUNJcHlFTEFrQWdRa0lRaUtjaURFSC9BWEVpQWtFQ1R3UkFBa0FnQWtFWlNTQS9Rb0dBZ0JCVWNrVUVRQ0FFUVNBZ0JDZ0NQQ0lNYXlJUklBSWdBaUFSU3hzaUVDQU1hallDUENBRElBUW9BamdnREhSQkFDQVFhM1lnQWlBUWF5SU1kR29oRUNBRVFUaHFFQThhSUFJZ0VVME5BU0FFSUFRb0Fqd2lBaUFNYWpZQ1BDQUVLQUk0SUFKMFFRQWdER3QySUJCcUlSQU1BUXNnQkNBQ0lBUW9BandpRUdvMkFqd2dCQ2dDT0NBUWRFRUFJQXhyZGlBRGFpRVFJQVJCT0dvUUR4b0xJQVFwQW1RaFJDQUVJQkEyQW1RZ0JDQkVOd0pvREFFTEFrQWdBa1VFUUNBTEJFQWdCQ2dDWkNFUURBTUxJQVFvQW1naEVBd0JDeUFFSUFRb0Fqd2lBa0VCYWpZQ1BBSi9JQU1nQzBWcUlBUW9BamdnQW5SQkgzWnFJZ0pCQTBZRVFDQUVLQUprUVFGckRBRUxJQUpCQW5RZ0JHb29BbVFMSWdORklBTnFJUkFnQWtFQlJ3UkFJQVFnQkNnQ2FEWUNiQXNMSUFRZ0JDZ0NaRFlDYUNBRUlCQTJBbVFMcHlFTUlFRkNnSUQ4QjROUVJRUkFJQVFnQkNnQ1BDSUNJQk5xTmdJOElBUW9BamdnQW5SQkFDQWdhM1lnREdvaERBc2dDaUFUYWtFVVR3UkFJQVJCT0dvUUR4b0xJRUJDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NQQ0lDSUFwcU5nSThJQVFvQWpnZ0FuUkJBQ0FqYTNZZ0Myb2hDd3NnQkVFNGFoQVBHaUFFSUFRb0FqZ2lBa0VBSUFaQkdIWWlBeUFFS0FJOGFpSUthM1lnQTBFQ2RFR2dIV29vQWdCeElBWkIvLzhEY1dvMkFrd2dCQ0FLSUExQkdIWWlBMm9pQmpZQ1BDQUVJQU5CQW5SQm9CMXFLQUlBSUFKQkFDQUdhM1p4SUExQi8vOERjV28yQWx3Z0JFRTRhaEFQR2lBRUlFS25JZ0pCR0hZaUF5QUVLQUk4YWlJR05nSThJQVFnQTBFQ2RFR2dIV29vQWdBZ0JDZ0NPRUVBSUFacmRuRWdBa0gvL3dOeGFqWUNWQUpBQWtBQ1FDQUVLQUxjQVNJRElBUkI4QUJxSUFoQkIzRkJER3hxSWhNb0FnQWlFV29pSXlBWFN3MEFJQWNnRXlnQ0JDSU5JQkZxSWdwcUlDRkxEUUFnQ2tFZ2FpQVdJQWRyVFEwQkN5QUVJQk1vQWdnMkFoZ2dCQ0FUS1FJQU53TVFJQWNnRmlBRVFSQnFJQVJCM0FGcUlCY2dFaUFZSUJvUUh5RUtEQUVMSUFjZ0VXb2hBaUFUS0FJSUlRWWdCeUFES1FBQU53QUFJQWNnQXlrQUNEY0FDQUpBSUJGQkVVa05BQ0FISUFNcEFCQTNBQkFnQnlBREtRQVlOd0FZSUJGQkVHdEJFVWdOQUNBRFFSQnFJUU1nQjBFZ2FpRVJBMEFnRVNBREtRQVFOd0FBSUJFZ0F5a0FHRGNBQ0NBUklBTXBBQ0EzQUJBZ0VTQURLUUFvTndBWUlBTkJJR29oQXlBUlFTQnFJaEVnQWtrTkFBc0xJQUlnQm1zaEF5QUVJQ00yQXR3QklBSWdFbXNnQmtrRVFDQUdJQUlnR0d0TERRY2dHaUFhSUFNZ0Vtc2lBMm9pRVNBTmFrOEVRQ0FDSUJFZ0RSQUtHZ3dDQ3lBRElBMXFJUTBnQWlBUlFRQWdBMnNRQ2lBRGF5RUNJQkloQXdzZ0JrRVFUd1JBSUFJZ0F5a0FBRGNBQUNBQ0lBTXBBQWczQUFnZ0RVRVJTQTBCSUFJZ0RXb2hCaUFDUVJCcUlRSURRQ0FDSUFNcEFCQTNBQUFnQWlBREtRQVlOd0FJSUFJZ0F5a0FJRGNBRUNBQ0lBTXBBQ2czQUJnZ0EwRWdhaUVESUFKQklHb2lBaUFHU1EwQUN3d0JDd0pBSUFaQkIwMEVRQ0FDSUFNdEFBQTZBQUFnQWlBRExRQUJPZ0FCSUFJZ0F5MEFBam9BQWlBQ0lBTXRBQU02QUFNZ0FpQURJQVpCQW5RaUJrSEFIbW9vQWdCcUlnTW9BQUEyQUFRZ0F5QUdRZUFlYWlnQ0FHc2hBd3dCQ3lBQ0lBTXBBQUEzQUFBTElBMUJDVWtOQUNBQ0lBMXFJUkVnQWtFSWFpSUdJQU5CQ0dvaUEydEJEMHdFUUFOQUlBWWdBeWtBQURjQUFDQURRUWhxSVFNZ0JrRUlhaUlHSUJGSkRRQU1BZ3NBQ3lBR0lBTXBBQUEzQUFBZ0JpQURLUUFJTndBSUlBMUJHVWdOQUNBQ1FSaHFJUUlEUUNBQ0lBTXBBQkEzQUFBZ0FpQURLUUFZTndBSUlBSWdBeWtBSURjQUVDQUNJQU1wQUNnM0FCZ2dBMEVnYWlFRElBSkJJR29pQWlBUlNRMEFDd3NnQ2tHSWYwc0VRQ0FLSVFrTUJnVWdFeUFRTmdJSUlCTWdERFlDQkNBVElBczJBZ0FnQ0VFQmFpRUlJQWNnQ21vaEJ5QUxJQmxxSUF4cUlSa01BZ3NBQ3dzZ0NDQVBTQTBESUFnZ0gyc2hCZ05BQWtBZ0JpQVBUZ1JBUVFBaEF3TkFJQU5CQTBZTkFpQUZJQU5CQW5RaUFtcEJyTkFCYWlBQ0lBUnFLQUprTmdJQUlBTkJBV29oQXd3QUN3QUxBa0FDUUFKQUlBUW9BdHdCSWdNZ0JFSHdBR29nQmtFSGNVRU1iR29pQ0NnQ0FDSU1haUlRSUJkTERRQWdCeUFJS0FJRUlnc2dER29pQ21vZ0lVc05BQ0FLUVNCcUlCWWdCMnRORFFFTElBUWdDQ2dDQ0RZQ0tDQUVJQWdwQWdBM0F5QWdCeUFXSUFSQklHb2dCRUhjQVdvZ0Z5QVNJQmdnR2hBZklRb01BUXNnQnlBTWFpRUNJQWdvQWdnaENDQUhJQU1wQUFBM0FBQWdCeUFES1FBSU53QUlBa0FnREVFUlNRMEFJQWNnQXlrQUVEY0FFQ0FISUFNcEFCZzNBQmdnREVFUWEwRVJTQTBBSUFOQkVHb2hBeUFIUVNCcUlRd0RRQ0FNSUFNcEFCQTNBQUFnRENBREtRQVlOd0FJSUF3Z0F5a0FJRGNBRUNBTUlBTXBBQ2czQUJnZ0EwRWdhaUVESUF4QklHb2lEQ0FDU1EwQUN3c2dBaUFJYXlFRElBUWdFRFlDM0FFZ0FpQVNheUFJU1FSQUlBZ2dBaUFZYTBzTkJ5QWFJQm9nQXlBU2F5SURhaUlNSUF0cVR3UkFJQUlnRENBTEVBb2FEQUlMSUFNZ0Myb2hDeUFDSUF4QkFDQURheEFLSUFOcklRSWdFaUVEQ3lBSVFSQlBCRUFnQWlBREtRQUFOd0FBSUFJZ0F5a0FDRGNBQ0NBTFFSRklEUUVnQWlBTGFpRUlJQUpCRUdvaEFnTkFJQUlnQXlrQUVEY0FBQ0FDSUFNcEFCZzNBQWdnQWlBREtRQWdOd0FRSUFJZ0F5a0FLRGNBR0NBRFFTQnFJUU1nQWtFZ2FpSUNJQWhKRFFBTERBRUxBa0FnQ0VFSFRRUkFJQUlnQXkwQUFEb0FBQ0FDSUFNdEFBRTZBQUVnQWlBRExRQUNPZ0FDSUFJZ0F5MEFBem9BQXlBQ0lBTWdDRUVDZENJSVFjQWVhaWdDQUdvaUF5Z0FBRFlBQkNBRElBaEI0QjVxS0FJQWF5RUREQUVMSUFJZ0F5a0FBRGNBQUFzZ0MwRUpTUTBBSUFJZ0Myb2hEQ0FDUVFocUlnZ2dBMEVJYWlJRGEwRVBUQVJBQTBBZ0NDQURLUUFBTndBQUlBTkJDR29oQXlBSVFRaHFJZ2dnREVrTkFBd0NDd0FMSUFnZ0F5a0FBRGNBQUNBSUlBTXBBQWczQUFnZ0MwRVpTQTBBSUFKQkdHb2hBZ05BSUFJZ0F5a0FFRGNBQUNBQ0lBTXBBQmczQUFnZ0FpQURLUUFnTndBUUlBSWdBeWtBS0RjQUdDQURRU0JxSVFNZ0FrRWdhaUlDSUF4SkRRQUxDeUFLUVloL1N3UkFJQW9oQ1F3R0JTQUdRUUZxSVFZZ0J5QUthaUVIREFJTEFBc0xJQVFvQXR3QklRTUxRYnAvSVFrZ0Z5QURheUlDSUJZZ0IydExEUUlnQndSL0lBY2dBeUFDRUFJZ0Ftb0ZRUUFMSUE1cklRa01BZ3NnQlVFQU5nS2M2d0VMSUFRZ0JTZ0M4T29CSWdNMkF0d0JJQWtnRG1vaERDQURJQVVvQW9EckFXb2hFQUpBSUE5RkJFQWdEaUVHREFFTElBVW9BcmpwQVNFTklBVW9BclRwQVNFVElBVW9BckRwQVNFU0lBVkJBVFlDaE9vQlFRQWhBd05BSUFOQkEwY0VRQ0FFSUFOQkFuUWlBbW9nQWlBRmFrR3MwQUZxS0FJQU5nS2NBU0FEUVFGcUlRTU1BUXNMUVd3aENTQUVRZkFBYWlJQ0lBY2dCaEFOUVloL1N3MEJJREVnQWlBRktBSUFFQjRnTUNBQ0lBVW9BZ2dRSGlBdklBSWdCU2dDQkJBZUlBeEJJR3NoR0NBT0lRWURRQ0FFS0FLSUFTQUVLQUtFQVVFRGRHb3BBZ0FpUUtjaUNrRVFkaUlaUWY4QmNTRUxJQVFvQXBnQklBUW9BcFFCUVFOMGFpa0NBQ0pCcHlJV1FSQjJJaDlCL3dGeElSb2dCQ2dDa0FFZ0JDZ0NqQUZCQTNScUtRSUFJa0pDSUlpbklRY2dRVUlnaUNCQVFpQ0lweUVEQWtBZ1FrSVFpS2NpQ0VIL0FYRWlBa0VDVHdSQUFrQWdBa0VaU1NBL1FvR0FnQkJVY2tVRVFDQUVRU0FnQkNnQ2RDSUlheUlSSUFJZ0FpQVJTeHNpRnlBSWFqWUNkQ0FISUFRb0FuQWdDSFJCQUNBWGEzWWdBaUFYYXlJWGRHb2hDQ0FFUWZBQWFoQVBHaUFDSUJGTkRRRWdCQ0FFS0FKMElnSWdGMm8yQW5RZ0JDZ0NjQ0FDZEVFQUlCZHJkaUFJYWlFSURBRUxJQVFnQWlBRUtBSjBJaEZxTmdKMElBUW9BbkFnRVhSQkFDQUlhM1lnQjJvaENDQUVRZkFBYWhBUEdnc2dCQ2tDbkFFaFJDQUVJQWcyQXB3QklBUWdSRGNDb0FFTUFRc0NRQ0FDUlFSQUlBTUVRQ0FFS0FLY0FTRUlEQU1MSUFRb0FxQUJJUWdNQVFzZ0JDQUVLQUowSWdKQkFXbzJBblFDZnlBSElBTkZhaUFFS0FKd0lBSjBRUjkyYWlJQ1FRTkdCRUFnQkNnQ25BRkJBV3NNQVFzZ0FrRUNkQ0FFYWlnQ25BRUxJZ2RGSUFkcUlRZ2dBa0VCUndSQUlBUWdCQ2dDb0FFMkFxUUJDd3NnQkNBRUtBS2NBVFlDb0FFZ0JDQUlOZ0tjQVF1bklRSWdRVUtBZ1B3SGcxQkZCRUFnQkNBRUtBSjBJZ2NnR21vMkFuUWdCQ2dDY0NBSGRFRUFJQjlyZGlBQ2FpRUNDeUFMSUJwcVFSUlBCRUFnQkVId0FHb1FEeG9MSUVCQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDZENJSElBdHFOZ0owSUFRb0FuQWdCM1JCQUNBWmEzWWdBMm9oQXdzZ0JFSHdBR29RRHhvZ0JDQUVLQUp3SWdkQkFDQUtRUmgySWdzZ0JDZ0NkR29pR210MklBdEJBblJCb0IxcUtBSUFjU0FLUWYvL0EzRnFOZ0tFQVNBRUlCb2dGa0VZZGlJS2FpSUxOZ0owSUFRZ0NrRUNkRUdnSFdvb0FnQWdCMEVBSUF0cmRuRWdGa0gvL3dOeGFqWUNsQUVnQkVId0FHb1FEeG9nQkNCQ3B5SUhRUmgySWdvZ0JDZ0NkR29pQ3pZQ2RDQUVJQXBCQW5SQm9CMXFLQUlBSUFRb0FuQkJBQ0FMYTNaeElBZEIvLzhEY1dvMkFvd0JJQVFnQXpZQ09DQUVJQUkyQWp3Z0JDQUlOZ0pBQWtBQ1FBSkFJQVFvQXR3Qklnc2dBMm9pRmlBUVN3MEFJQVlnQWlBRGFpSUthaUFZU3cwQUlBcEJJR29nRENBR2EwME5BUXNnQkNBRVFVQnJLQUlBTmdJSUlBUWdCQ2tET0RjREFDQUdJQXdnQkNBRVFkd0JhaUFRSUJJZ0V5QU5FQjhoQ2d3QkN5QURJQVpxSVFjZ0JpQUxLUUFBTndBQUlBWWdDeWtBQ0RjQUNBSkFJQU5CRVVrTkFDQUdJQXNwQUJBM0FCQWdCaUFMS1FBWU53QVlJQU5CRUd0QkVVZ05BQ0FMUVJCcUlRTWdCa0VnYWlFTEEwQWdDeUFES1FBUU53QUFJQXNnQXlrQUdEY0FDQ0FMSUFNcEFDQTNBQkFnQ3lBREtRQW9Od0FZSUFOQklHb2hBeUFMUVNCcUlnc2dCMGtOQUFzTElBY2dDR3NoQXlBRUlCWTJBdHdCSUFjZ0Vtc2dDRWtFUUNBSUlBY2dFMnRMRFFRZ0RTQU5JQU1nRW1zaUEyb2lDeUFDYWs4RVFDQUhJQXNnQWhBS0dnd0NDeUFISUF0QkFDQURheEFLSUFRZ0FpQURhaUlDTmdJOElBTnJJUWNnRWlFREN5QUlRUkJQQkVBZ0J5QURLUUFBTndBQUlBY2dBeWtBQ0RjQUNDQUNRUkZJRFFFZ0FpQUhhaUVJSUFkQkVHb2hBZ05BSUFJZ0F5a0FFRGNBQUNBQ0lBTXBBQmczQUFnZ0FpQURLUUFnTndBUUlBSWdBeWtBS0RjQUdDQURRU0JxSVFNZ0FrRWdhaUlDSUFoSkRRQUxEQUVMQWtBZ0NFRUhUUVJBSUFjZ0F5MEFBRG9BQUNBSElBTXRBQUU2QUFFZ0J5QURMUUFDT2dBQ0lBY2dBeTBBQXpvQUF5QUhJQU1nQ0VFQ2RDSUlRY0FlYWlnQ0FHb2lBeWdBQURZQUJDQURJQWhCNEI1cUtBSUFheUVEREFFTElBY2dBeWtBQURjQUFBc2dBa0VKU1EwQUlBSWdCMm9oQ3lBSFFRaHFJZ2dnQTBFSWFpSURhMEVQVEFSQUEwQWdDQ0FES1FBQU53QUFJQU5CQ0dvaEF5QUlRUWhxSWdnZ0Mwa05BQXdDQ3dBTElBZ2dBeWtBQURjQUFDQUlJQU1wQUFnM0FBZ2dBa0VaU0EwQUlBZEJHR29oQWdOQUlBSWdBeWtBRURjQUFDQUNJQU1wQUJnM0FBZ2dBaUFES1FBZ053QVFJQUlnQXlrQUtEY0FHQ0FEUVNCcUlRTWdBa0VnYWlJQ0lBdEpEUUFMQ3lBS1FZaC9Td1JBSUFvaENRd0RDeUFHSUFwcUlRWWdCRUh3QUdvUUR5RURJQTlCQVdzaUR3MEFDMEVBSVFJZ0EwRUNTUTBCQTBBZ0FrRURSd1JBSUFVZ0FrRUNkQ0lEYWtHczBBRnFJQU1nQkdvb0Fwd0JOZ0lBSUFKQkFXb2hBZ3dCQ3dzZ0JDZ0MzQUVoQXd0QnVuOGhDU0FRSUFOcklnSWdEQ0FHYTBzTkFDQUdCSDhnQmlBRElBSVFBaUFDYWdWQkFBc2dEbXNoQ1FzZ0NVR0lmMHNOQmdzQ1FDQUZLQUxzNmdGRkRRQWdCU0FGS1FPSTZnRWdDYTE4TndPSTZnRUNRQ0FGS0FMUTZnRWlBaUFKYWlJSVFSOU5CRUFnRGtVTkFTQUNJQ0pxSUE0Z0NSQUNHaUFGS0FMUTZnRWdDV29oQ0F3QkN5QU9JUU1nQWdSQUlBSWdJbW9nQTBFZ0lBSnJFQUlhSUFVb0F0RHFBU0VDSUFWQkFEWUMwT29CSUFVZ0JTa0RrT29CSUFVcEFMRHFBVUxQMXRPKzBzZXIyVUorZkVJZmlVS0hsYSt2bUxiZW01NS9mamNEa09vQklBVWdCU2tEbU9vQklBVXBBTGpxQVVMUDF0Tyswc2VyMlVKK2ZFSWZpVUtIbGErdm1MYmVtNTUvZmpjRG1Pb0JJQVVnQlNrRG9Pb0JJQVVwQU1EcUFVTFAxdE8rMHNlcjJVSitmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZqY0RvT29CSUFVZ0JTa0RxT29CSUFVcEFNanFBVUxQMXRPKzBzZXIyVUorZkVJZmlVS0hsYSt2bUxiZW01NS9mamNEcU9vQklBTWdBbXRCSUdvaEF3c2dDU0FPYWlJQ0lBTkJJR3BQQkVBZ0FrRWdheUVHSUFVcEE2anFBU0UvSUFVcEE2RHFBU0ZBSUFVcEE1anFBU0ZCSUFVcEE1RHFBU0ZDQTBBZ0F5a0FHRUxQMXRPKzBzZXIyVUorSUQ5OFFoK0pRb2VWcjYrWXR0NmJubjkrSVQ4Z0F5a0FFRUxQMXRPKzBzZXIyVUorSUVCOFFoK0pRb2VWcjYrWXR0NmJubjkrSVVBZ0F5a0FDRUxQMXRPKzBzZXIyVUorSUVGOFFoK0pRb2VWcjYrWXR0NmJubjkrSVVFZ0F5a0FBRUxQMXRPKzBzZXIyVUorSUVKOFFoK0pRb2VWcjYrWXR0NmJubjkrSVVJZ0EwRWdhaUlESUFaTkRRQUxJQVVnUHpjRHFPb0JJQVVnUURjRG9Pb0JJQVVnUVRjRG1Pb0JJQVVnUWpjRGtPb0JDeUFDSUFOTkRRRWdJaUFESUFJZ0Eyc2lDQkFDR2dzZ0JTQUlOZ0xRNmdFTElEVWdGV3NoQXlBVklCdHFJUUlnQ1NBT2FpRU9JQVFvQWpCRkRRQUxJQ2twQXdBaVAwSi9VU0EvSUE0Z0hXdXNVWEpGQkVCQmJDRUpEQVlMSUFVb0F1RHBBUVJBUVdvaENTQURRUVJKRFFZZ0JTZ0M2T29CUlFSQUlDSWdCU2dDME9vQmFpRUtBbjRnQlNrRGlPb0JJajlDSUZvRVFDQUZLUU9ZNmdFaVFFSUhpU0FGS1FPUTZnRWlRVUlCaVh3Z0JTa0RvT29CSWtKQ0RJbDhJQVVwQTZqcUFTSkRRaEtKZkNCQlFzL1cwNzdTeDZ2WlFuNUNINGxDaDVXdnI1aTIzcHVlZjM2RlFvZVZyNitZdHQ2Ym5uOStRcDJqdGVxRHNZMksrZ0I5SUVCQ3o5YlR2dExIcTlsQ2ZrSWZpVUtIbGErdm1MYmVtNTUvZm9WQ2g1V3ZyNWkyM3B1ZWYzNUNuYU8xNm9PeGpZcjZBSDBnUWtMUDF0Tyswc2VyMlVKK1FoK0pRb2VWcjYrWXR0NmJubjkraFVLSGxhK3ZtTGJlbTU1L2ZrS2RvN1hxZzdHTml2b0FmU0JEUXMvVzA3N1N4NnZaUW41Q0g0bENoNVd2cjVpMjNwdWVmMzZGUW9lVnI2K1l0dDZibm45K1FwMmp0ZXFEc1kySytnQjlEQUVMSUFVcEE2RHFBVUxGejlteThlVzY2aWQ4Q3lBL2ZDRS9JQ0loQmdOQUlBb2dCa0VJYWlJSFR3UkFJQVlwQUFCQ3o5YlR2dExIcTlsQ2ZrSWZpVUtIbGErdm1MYmVtNTUvZmlBL2hVSWJpVUtIbGErdm1MYmVtNTUvZmtLZG83WHFnN0dOaXZvQWZTRS9JQWNoQmd3QkN3c0NRQ0FLSUFaQkJHb2lDRWtFUUNBR0lRZ01BUXNnQmpVQUFFS0hsYSt2bUxiZW01NS9maUEvaFVJWGlVTFAxdE8rMHNlcjJVSitRdm56M2ZHWjlwbXJGbndoUHdzRFFDQUlJQXBKQkVBZ0NERUFBRUxGejlteThlVzY2aWQrSUQrRlFndUpRb2VWcjYrWXR0NmJubjkrSVQ4Z0NFRUJhaUVJREFFTEN5QUNLQUFBSUQ5Q0lZZ2dQNFZDejliVHZ0TEhxOWxDZmlJL1FoMklJRCtGUXZuejNmR1o5cG1yRm40aVAwSWdpQ0EvaGFkSERRY0xJQU5CQkdzaEF5QUNRUVJxSVFJTElBNGdIV3NpQ1VHSmYwOE5CQ0FCSUFscklRRWdDU0FkYWlFZFFRRWhQZ3dCQ3d0QnVIOGhCeUFERFFRZ0hTQUFheUVIREFRTFFXd2hDUXdCQzBHNGZ5RUpDMEc0ZnlFSElBbEJka1lnUG5FTkFRc2dDU0VIQ3lnQ0FBMEFJQVZCL09vQmFpZ0NBQ0VCSUFWQitPb0JhaWdDQUNFQUlBVVFHQ0FGS0FLdzZ3RWdBQ0FCRUJNZ0JVRUFOZ0t3NndFZ0JTZ0NwT3NCSWdJRVFBSkFBa0FDUUFKQUlBSW9BZ0FpQXdSQUlBQkZEUUlnQVNBRElBQVJBZ0FNQVFzZ0FFVU5BZ3NnQVNBQ0lBQVJBZ0FNQWdzZ0F4QUdDeUFDRUFZTElBVkJBRFlDcE9zQkN5QUFCRUFnQVNBRklBQVJBZ0FNQVFzZ0JSQUdDeUFFUWVBQmFpUUFJQWNMQzZnVkNRQkJpQWdMRFFFQUFBQUJBQUFBQWdBQUFBSUFRYUFJQzdNR0FRQUFBQUVBQUFBQ0FBQUFBZ0FBQUNZQUFBQ0NBQUFBSVFVQUFFb0FBQUJuQ0FBQUpnQUFBTUFCQUFDQUFBQUFTUVVBQUVvQUFBQytDQUFBS1FBQUFDd0NBQUNBQUFBQVNRVUFBRW9BQUFDK0NBQUFMd0FBQU1vQ0FBQ0FBQUFBaWdVQUFFb0FBQUNFQ1FBQU5RQUFBSE1EQUFDQUFBQUFuUVVBQUVvQUFBQ2dDUUFBUFFBQUFJRURBQUNBQUFBQTZ3VUFBRXNBQUFBK0NnQUFSQUFBQUo0REFBQ0FBQUFBVFFZQUFFc0FBQUNxQ2dBQVN3QUFBTE1EQUFDQUFBQUF3UVlBQUUwQUFBQWZEUUFBVFFBQUFGTUVBQUNBQUFBQUl3Z0FBRkVBQUFDbUR3QUFWQUFBQUprRUFBQ0FBQUFBU3drQUFGY0FBQUN4RWdBQVdBQUFBTm9FQUFDQUFBQUFid2tBQUYwQUFBQWpGQUFBVkFBQUFFVUZBQUNBQUFBQVZBb0FBR29BQUFDTUZBQUFhZ0FBQUs4RkFBQ0FBQUFBZGdrQUFId0FBQUJPRUFBQWZBQUFBTklDQUFDQUFBQUFZd2NBQUpFQUFBQ1FCd0FBa2dBQUFBQUFBQUFCQUFBQUFRQUFBQVVBQUFBTkFBQUFIUUFBQUQwQUFBQjlBQUFBL1FBQUFQMEJBQUQ5QXdBQS9RY0FBUDBQQUFEOUh3QUEvVDhBQVAxL0FBRDkvd0FBL2Y4QkFQMy9Bd0Q5L3djQS9mOFBBUDMvSHdEOS96OEEvZjkvQVAzLy93RDkvLzhCL2YvL0EvMy8vd2Y5Ly84UC9mLy9ILzMvL3ovOS8vOS9BQUFBQUFFQUFBQUNBQUFBQXdBQUFBUUFBQUFGQUFBQUJnQUFBQWNBQUFBSUFBQUFDUUFBQUFvQUFBQUxBQUFBREFBQUFBMEFBQUFPQUFBQUR3QUFBQkFBQUFBUkFBQUFFZ0FBQUJNQUFBQVVBQUFBRlFBQUFCWUFBQUFYQUFBQUdBQUFBQmtBQUFBYUFBQUFHd0FBQUJ3QUFBQWRBQUFBSGdBQUFCOEFBQUFEQUFBQUJBQUFBQVVBQUFBR0FBQUFCd0FBQUFnQUFBQUpBQUFBQ2dBQUFBc0FBQUFNQUFBQURRQUFBQTRBQUFBUEFBQUFFQUFBQUJFQUFBQVNBQUFBRXdBQUFCUUFBQUFWQUFBQUZnQUFBQmNBQUFBWUFBQUFHUUFBQUJvQUFBQWJBQUFBSEFBQUFCMEFBQUFlQUFBQUh3QUFBQ0FBQUFBaEFBQUFJZ0FBQUNNQUFBQWxBQUFBSndBQUFDa0FBQUFyQUFBQUx3QUFBRE1BQUFBN0FBQUFRd0FBQUZNQUFBQmpBQUFBZ3dBQUFBTUJBQUFEQWdBQUF3UUFBQU1JQUFBREVBQUFBeUFBQUFOQUFBQURnQUFBQXdBQkFFSGdEd3RSQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBd0FBQUFNQUFBQUVBQUFBQkFBQUFBVUFBQUFIQUFBQUNBQUFBQWtBQUFBS0FBQUFDd0FBQUF3QUFBQU5BQUFBRGdBQUFBOEFBQUFRQUVIRUVBdUxBUUVBQUFBQ0FBQUFBd0FBQUFRQUFBQUZBQUFBQmdBQUFBY0FBQUFJQUFBQUNRQUFBQW9BQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBRHdBQUFCQUFBQUFTQUFBQUZBQUFBQllBQUFBWUFBQUFIQUFBQUNBQUFBQW9BQUFBTUFBQUFFQUFBQUNBQUFBQUFBRUFBQUFDQUFBQUJBQUFBQWdBQUFBUUFBQUFJQUFBQUVBQUFBQ0FBQUFBQUFFQVFaQVNDK1lFQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBd0FBQUFNQUFBQUVBQUFBQmdBQUFBY0FBQUFJQUFBQUNRQUFBQW9BQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBRHdBQUFCQUFBQUFCQUFBQUJBQUFBQWdBQUFBQUFBQUFBUUFCQVFZQUFBQUFBQUFFQUFBQUFCQUFBQVFBQUFBQUlBQUFCUUVBQUFBQUFBQUZBd0FBQUFBQUFBVUVBQUFBQUFBQUJRWUFBQUFBQUFBRkJ3QUFBQUFBQUFVSkFBQUFBQUFBQlFvQUFBQUFBQUFGREFBQUFBQUFBQVlPQUFBQUFBQUJCUkFBQUFBQUFBRUZGQUFBQUFBQUFRVVdBQUFBQUFBQ0JSd0FBQUFBQUFNRklBQUFBQUFBQkFVd0FBQUFJQUFHQlVBQUFBQUFBQWNGZ0FBQUFBQUFDQVlBQVFBQUFBQUtCZ0FFQUFBQUFBd0dBQkFBQUNBQUFBUUFBQUFBQUFBQUJBRUFBQUFBQUFBRkFnQUFBQ0FBQUFVRUFBQUFBQUFBQlFVQUFBQWdBQUFGQndBQUFBQUFBQVVJQUFBQUlBQUFCUW9BQUFBQUFBQUZDd0FBQUFBQUFBWU5BQUFBSUFBQkJSQUFBQUFBQUFFRkVnQUFBQ0FBQVFVV0FBQUFBQUFDQlJnQUFBQWdBQU1GSUFBQUFBQUFBd1VvQUFBQUFBQUdCRUFBQUFBUUFBWUVRQUFBQUNBQUJ3V0FBQUFBQUFBSkJnQUNBQUFBQUFzR0FBZ0FBREFBQUFRQUFBQUFFQUFBQkFFQUFBQWdBQUFGQWdBQUFDQUFBQVVEQUFBQUlBQUFCUVVBQUFBZ0FBQUZCZ0FBQUNBQUFBVUlBQUFBSUFBQUJRa0FBQUFnQUFBRkN3QUFBQ0FBQUFVTUFBQUFBQUFBQmc4QUFBQWdBQUVGRWdBQUFDQUFBUVVVQUFBQUlBQUNCUmdBQUFBZ0FBSUZIQUFBQUNBQUF3VW9BQUFBSUFBRUJUQUFBQUFBQUJBR0FBQUJBQUFBRHdZQWdBQUFBQUFPQmdCQUFBQUFBQTBHQUNBQVFZQVhDNGNDQVFBQkFRVUFBQUFBQUFBRkFBQUFBQUFBQmdROUFBQUFBQUFKQmYwQkFBQUFBQThGL1g4QUFBQUFGUVg5L3g4QUFBQURCUVVBQUFBQUFBY0VmUUFBQUFBQURBWDlEd0FBQUFBU0JmMy9Bd0FBQUJjRi9mOS9BQUFBQlFVZEFBQUFBQUFJQlAwQUFBQUFBQTRGL1Q4QUFBQUFGQVg5L3c4QUFBQUNCUUVBQUFBUUFBY0VmUUFBQUFBQUN3WDlCd0FBQUFBUkJmMy9BUUFBQUJZRi9mOC9BQUFBQkFVTkFBQUFFQUFJQlAwQUFBQUFBQTBGL1I4QUFBQUFFd1g5L3djQUFBQUJCUUVBQUFBUUFBWUVQUUFBQUFBQUNnWDlBd0FBQUFBUUJmMy9BQUFBQUJ3Ri9mLy9Ed0FBR3dYOS8vOEhBQUFhQmYzLy93TUFBQmtGL2YvL0FRQUFHQVg5Ly84QVFaQVpDNFlFQVFBQkFRWUFBQUFBQUFBR0F3QUFBQUFBQUFRRUFBQUFJQUFBQlFVQUFBQUFBQUFGQmdBQUFBQUFBQVVJQUFBQUFBQUFCUWtBQUFBQUFBQUZDd0FBQUFBQUFBWU5BQUFBQUFBQUJoQUFBQUFBQUFBR0V3QUFBQUFBQUFZV0FBQUFBQUFBQmhrQUFBQUFBQUFHSEFBQUFBQUFBQVlmQUFBQUFBQUFCaUlBQUFBQUFBRUdKUUFBQUFBQUFRWXBBQUFBQUFBQ0JpOEFBQUFBQUFNR093QUFBQUFBQkFaVEFBQUFBQUFIQm9NQUFBQUFBQWtHQXdJQUFCQUFBQVFFQUFBQUFBQUFCQVVBQUFBZ0FBQUZCZ0FBQUFBQUFBVUhBQUFBSUFBQUJRa0FBQUFBQUFBRkNnQUFBQUFBQUFZTUFBQUFBQUFBQmc4QUFBQUFBQUFHRWdBQUFBQUFBQVlWQUFBQUFBQUFCaGdBQUFBQUFBQUdHd0FBQUFBQUFBWWVBQUFBQUFBQUJpRUFBQUFBQUFFR0l3QUFBQUFBQVFZbkFBQUFBQUFDQmlzQUFBQUFBQU1HTXdBQUFBQUFCQVpEQUFBQUFBQUZCbU1BQUFBQUFBZ0dBd0VBQUNBQUFBUUVBQUFBTUFBQUJBUUFBQUFRQUFBRUJRQUFBQ0FBQUFVSEFBQUFJQUFBQlFnQUFBQWdBQUFGQ2dBQUFDQUFBQVVMQUFBQUFBQUFCZzRBQUFBQUFBQUdFUUFBQUFBQUFBWVVBQUFBQUFBQUJoY0FBQUFBQUFBR0dnQUFBQUFBQUFZZEFBQUFBQUFBQmlBQUFBQUFBQkFHQXdBQkFBQUFEd1lEZ0FBQUFBQU9CZ05BQUFBQUFBMEdBeUFBQUFBQURBWURFQUFBQUFBTEJnTUlBQUFBQUFvR0F3UUFRYVFkQzlrQkFRQUFBQU1BQUFBSEFBQUFEd0FBQUI4QUFBQS9BQUFBZndBQUFQOEFBQUQvQVFBQS93TUFBUDhIQUFEL0R3QUEveDhBQVA4L0FBRC9md0FBLy84QUFQLy9BUUQvL3dNQS8vOEhBUC8vRHdELy94OEEvLzgvQVAvL2Z3RC8vLzhBLy8vL0FmLy8vd1AvLy84SC8vLy9ELy8vL3gvLy8vOC8vLy8vZndBQUFBQUJBQUFBQWdBQUFBUUFBQUFBQUFBQUFnQUFBQVFBQUFBSUFBQUFBQUFBQUFFQUFBQUNBQUFBQVFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFDQUFBQUFnQUFBQUhBQUFBQ0FBQUFBa0FBQUFLQUFBQUN3QkJnQjhMQTRBUkFRPT0iO3ZhciBPST1uZXcgeUEsVEk9ITE7YXN5bmMgZnVuY3Rpb24gY2UoQSxJLHQpe2xldCBlPW51bGw7dHlwZW9mIEEhPSJzdHJpbmciP2U9QS5ocmVmOkEuc3RhcnRzV2l0aCgiaHR0cCIpP2U9QTplPWAke0l9LyR7QX1gLGUuZW5kc1dpdGgoIi5qcyIpJiYoZT1lLnN1YnN0cmluZygwLGUubGVuZ3RoLTMpKSxlLmVuZHNXaXRoKCIud2FzbSIpJiYoZT1lLnN1YnN0cmluZygwLGUubGVuZ3RoLTUpKTtsZXQgZz1gJHtlfS53YXNtYCxyPWF3YWl0IGRBLmdldChgJHtnfS56c3RgLHtyZXNwb25zZVR5cGU6ImFycmF5YnVmZmVyIixwYXJhbXM6dH0pO1RJfHwoYXdhaXQgT0kuaW5pdCgpLFRJPSEwKTtsZXQgcz1PSS5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoci5kYXRhKSkuYnVmZmVyO3JldHVybihhd2FpdCBpbXBvcnQoYCR7ZX0uanNgKSkuZGVmYXVsdCh7d2FzbUJpbmFyeTpzfSl9dmFyIHhJPWNlO3ZhciB3QT1uZXcgTWFwO2FzeW5jIGZ1bmN0aW9uIGZlKEEsSSx0KXtsZXQgZT1BLGc9QSxyPW51bGw7cmV0dXJuIHR5cGVvZiBBIT0ic3RyaW5nIiYmKGU9bmV3IFVSTChBLmhyZWYpLGc9ZS5ocmVmKSx3QS5oYXMoZyk/cj1hd2FpdCB3QS5nZXQoZyk6KHdBLnNldChnLHhJKGUsSSx0KSkscj1hd2FpdCB3QS5nZXQoZykpLHJ9dmFyIFBJPWZlO3ZhciBsZT17VGV4dEZpbGU6IlRleHRGaWxlIixCaW5hcnlGaWxlOiJCaW5hcnlGaWxlIixUZXh0U3RyZWFtOiJUZXh0U3RyZWFtIixCaW5hcnlTdHJlYW06IkJpbmFyeVN0cmVhbSIsSW1hZ2U6IkltYWdlIixNZXNoOiJNZXNoIixQb2x5RGF0YToiUG9seURhdGEiLEpzb25Db21wYXRpYmxlOiJKc29uQ29tcGF0aWJsZSJ9LEQ9bGU7dmFyIERlPXtJbnQ4OiJpbnQ4IixVSW50ODoidWludDgiLEludDE2OiJpbnQxNiIsVUludDE2OiJ1aW50MTYiLEludDMyOiJpbnQzMiIsVUludDMyOiJ1aW50MzIiLEludDY0OiJpbnQ2NCIsVUludDY0OiJ1aW50NjQiLFNpemVWYWx1ZVR5cGU6InVpbnQ2NCIsSWRlbnRpZmllclR5cGU6InVpbnQ2NCIsSW5kZXhWYWx1ZVR5cGU6ImludDY0IixPZmZzZXRWYWx1ZVR5cGU6ImludDY0In0scD1EZTt2YXIgdWU9e0Zsb2F0MzI6ImZsb2F0MzIiLEZsb2F0NjQ6ImZsb2F0NjQiLFNwYWNlUHJlY2lzaW9uVHlwZToiZmxvYXQ2NCJ9LFA9dWU7ZnVuY3Rpb24gaGUoQSxJKXtsZXQgdD1udWxsO3N3aXRjaChBKXtjYXNlIHAuVUludDg6e3Q9bmV3IFVpbnQ4QXJyYXkoSSk7YnJlYWt9Y2FzZSBwLkludDg6e3Q9bmV3IEludDhBcnJheShJKTticmVha31jYXNlIHAuVUludDE2Ont0PW5ldyBVaW50MTZBcnJheShJKTticmVha31jYXNlIHAuSW50MTY6e3Q9bmV3IEludDE2QXJyYXkoSSk7YnJlYWt9Y2FzZSBwLlVJbnQzMjp7dD1uZXcgVWludDMyQXJyYXkoSSk7YnJlYWt9Y2FzZSBwLkludDMyOnt0PW5ldyBJbnQzMkFycmF5KEkpO2JyZWFrfWNhc2UgcC5VSW50NjQ6e3R5cGVvZiBnbG9iYWxUaGlzLkJpZ1VpbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ1VpbnQ2NEFycmF5KEkpOnQ9bmV3IFVpbnQ4QXJyYXkoSSk7YnJlYWt9Y2FzZSBwLkludDY0Ont0eXBlb2YgZ2xvYmFsVGhpcy5CaWdJbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ0ludDY0QXJyYXkoSSk6dD1uZXcgVWludDhBcnJheShJKTticmVha31jYXNlIFAuRmxvYXQzMjp7dD1uZXcgRmxvYXQzMkFycmF5KEkpO2JyZWFrfWNhc2UgUC5GbG9hdDY0Ont0PW5ldyBGbG9hdDY0QXJyYXkoSSk7YnJlYWt9Y2FzZSJudWxsIjp7dD1udWxsO2JyZWFrfWNhc2UgbnVsbDp7dD1udWxsO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlIGlzIG5vdCBzdXBwb3J0ZWQgYXMgYSBUeXBlZEFycmF5Iil9cmV0dXJuIHR9dmFyIFk9aGU7dmFyIFpJPXR5cGVvZiBnbG9iYWxUaGlzLlNoYXJlZEFycmF5QnVmZmVyPT0iZnVuY3Rpb24iLGpJPW5ldyBUZXh0RW5jb2RlcixXST1uZXcgVGV4dERlY29kZXIoInV0Zi04Iik7ZnVuY3Rpb24gZGUoQSxJKXtsZXQgdD17ZmxhZ3M6InIiLGVuY29kaW5nOiJiaW5hcnkifSxlPUEuZnNfb3BlbihJLHQuZmxhZ3MpLHI9QS5mc19zdGF0KEkpLnNpemUsaT1udWxsO1pJP2k9bmV3IFNoYXJlZEFycmF5QnVmZmVyKHIpOmk9bmV3IEFycmF5QnVmZmVyKHIpO2xldCBzPW5ldyBVaW50OEFycmF5KGkpO3JldHVybiBBLmZzX3JlYWQoZSxzLDAsciwwKSxBLmZzX2Nsb3NlKGUpLHN9ZnVuY3Rpb24gVkkoQSxJLHQpe2xldCBlPW51bGw7Wkk/ZT1uZXcgU2hhcmVkQXJyYXlCdWZmZXIodCk6ZT1uZXcgQXJyYXlCdWZmZXIodCk7bGV0IGc9bmV3IFVpbnQ4QXJyYXkoZSkscj1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsSSx0KTtyZXR1cm4gZy5zZXQociksZ31mdW5jdGlvbiB5KEEsSSx0LGUpe2xldCBnPTA7cmV0dXJuIEkhPT1udWxsJiYoZz1BLmNjYWxsKCJpdGtfd2FzbV9pbnB1dF9hcnJheV9hbGxvYyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCx0LGUsSS5idWZmZXIuYnl0ZUxlbmd0aF0pLEEuSEVBUFU4LnNldChuZXcgVWludDhBcnJheShJLmJ1ZmZlciksZykpLGd9ZnVuY3Rpb24gaihBLEksdCl7bGV0IGU9SlNPTi5zdHJpbmdpZnkoSSksZz1BLmNjYWxsKCJpdGtfd2FzbV9pbnB1dF9qc29uX2FsbG9jIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHQsZS5sZW5ndGhdKTtBLndyaXRlQXNjaWlUb01lbW9yeShlLGcsITEpfWZ1bmN0aW9uIFMoQSxJLHQsZSl7bGV0IGc9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsSSx0XSkscj1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxJLHRdKSxpPVZJKEEsZyxyKTtyZXR1cm4gWShlLGkuYnVmZmVyKX1mdW5jdGlvbiB6QShBLEkpe2xldCB0PUEuY2NhbGwoIml0a193YXNtX291dHB1dF9qc29uX2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIl0sWzAsSV0pLGU9QS5Bc2NpaVRvU3RyaW5nKHQpO3JldHVybiBKU09OLnBhcnNlKGUpfWZ1bmN0aW9uIHllKEEsSSx0LGUpe2UhPW51bGwmJmUubGVuZ3RoPjAmJmUuZm9yRWFjaChmdW5jdGlvbihuLEMpe3N3aXRjaChuLnR5cGUpe2Nhc2UgRC5UZXh0U3RyZWFtOntsZXQgbz1qSS5lbmNvZGUobi5kYXRhLmRhdGEpLGY9eShBLG8sQywwKSxRPXtzaXplOm8uYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YH07aihBLFEsQyk7YnJlYWt9Y2FzZSBELkpzb25Db21wYXRpYmxlOntsZXQgbz1qSS5lbmNvZGUoSlNPTi5zdHJpbmdpZnkobi5kYXRhKSksZj15KEEsbyxDLDApLFE9e3NpemU6by5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gfTtqKEEsUSxDKTticmVha31jYXNlIEQuQmluYXJ5U3RyZWFtOntsZXQgbz1uLmRhdGEuZGF0YSxmPXkoQSxvLEMsMCksUT17c2l6ZTpvLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWB9O2ooQSxRLEMpO2JyZWFrfWNhc2UgRC5UZXh0RmlsZTp7QS5mc193cml0ZUZpbGUobi5kYXRhLnBhdGgsbi5kYXRhLmRhdGEpO2JyZWFrfWNhc2UgRC5CaW5hcnlGaWxlOntBLmZzX3dyaXRlRmlsZShuLmRhdGEucGF0aCxuLmRhdGEuZGF0YSk7YnJlYWt9Y2FzZSBELkltYWdlOntsZXQgbz1uLmRhdGEsZj15KEEsby5kYXRhLEMsMCksUT15KEEsby5kaXJlY3Rpb24sQywxKSxFPXR5cGVvZiBvLm1ldGFkYXRhPy5lbnRyaWVzPCJ1Ij9KU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKG8ubWV0YWRhdGEuZW50cmllcygpKSk6IltdIixjPXtpbWFnZVR5cGU6by5pbWFnZVR5cGUsbmFtZTpvLm5hbWUsb3JpZ2luOm8ub3JpZ2luLHNwYWNpbmc6by5zcGFjaW5nLGRpcmVjdGlvbjpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1F9YCxzaXplOm8uc2l6ZSxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gLG1ldGFkYXRhOkV9O2ooQSxjLEMpO2JyZWFrfWNhc2UgRC5NZXNoOntsZXQgbz1uLmRhdGEsZj15KEEsby5wb2ludHMsQywwKSxRPXkoQSxvLmNlbGxzLEMsMSksRT15KEEsby5wb2ludERhdGEsQywyKSxjPXkoQSxvLmNlbGxEYXRhLEMsMyksdT17bWVzaFR5cGU6by5tZXNoVHlwZSxuYW1lOm8ubmFtZSxudW1iZXJPZlBvaW50czpvLm51bWJlck9mUG9pbnRzLHBvaW50czpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YCxudW1iZXJPZkNlbGxzOm8ubnVtYmVyT2ZDZWxscyxjZWxsczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1F9YCxjZWxsQnVmZmVyU2l6ZTpvLmNlbGxCdWZmZXJTaXplLG51bWJlck9mUG9pbnRQaXhlbHM6by5udW1iZXJPZlBvaW50UGl4ZWxzLHBvaW50RGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0V9YCxudW1iZXJPZkNlbGxQaXhlbHM6by5udW1iZXJPZkNlbGxQaXhlbHMsY2VsbERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWB9O2ooQSx1LEMpO2JyZWFrfWNhc2UgRC5Qb2x5RGF0YTp7bGV0IG89bi5kYXRhLGY9eShBLG8ucG9pbnRzLEMsMCksUT15KEEsby52ZXJ0aWNlcyxDLDEpLEU9eShBLG8ubGluZXMsQywyKSxjPXkoQSxvLnBvbHlnb25zLEMsMyksdT15KEEsby50cmlhbmdsZVN0cmlwcyxDLDQpLGQ9eShBLG8ucG9pbnREYXRhLEMsNSksUj15KEEsby5wb2ludERhdGEsQyw2KSxOPXtwb2x5RGF0YVR5cGU6by5wb2x5RGF0YVR5cGUsbmFtZTpvLm5hbWUsbnVtYmVyT2ZQb2ludHM6by5udW1iZXJPZlBvaW50cyxwb2ludHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWAsdmVydGljZXNCdWZmZXJTaXplOm8udmVydGljZXNCdWZmZXJTaXplLHZlcnRpY2VzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7UX1gLGxpbmVzQnVmZmVyU2l6ZTpvLmxpbmVzQnVmZmVyU2l6ZSxsaW5lczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0V9YCxwb2x5Z29uc0J1ZmZlclNpemU6by5wb2x5Z29uc0J1ZmZlclNpemUscG9seWdvbnM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWAsdHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplOm8udHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplLHRyaWFuZ2xlU3RyaXBzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7dX1gLG51bWJlck9mUG9pbnRQaXhlbHM6by5udW1iZXJPZlBvaW50UGl4ZWxzLHBvaW50RGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2R9YCxudW1iZXJPZkNlbGxQaXhlbHM6by5udW1iZXJPZkNlbGxQaXhlbHMsY2VsbERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtSfWB9O2ooQSxOLEMpO2JyZWFrfWRlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuc3VwcG9ydGVkIGlucHV0IEludGVyZmFjZVR5cGUiKX19KSxBLnJlc2V0TW9kdWxlU3Rkb3V0KCksQS5yZXNldE1vZHVsZVN0ZGVycigpO2xldCBnPUEuc3RhY2tTYXZlKCkscj0wO3RyeXtyPUEuY2FsbE1haW4oSS5zbGljZSgpKX1jYXRjaChuKXt0aHJvdyB0eXBlb2Ygbj09Im51bWJlciImJihjb25zb2xlLmxvZygiRXhjZXB0aW9uIHdoaWxlIHJ1bm5pbmcgcGlwZWxpbmU6IiksY29uc29sZS5sb2coInN0ZG91dDoiLEEuZ2V0TW9kdWxlU3Rkb3V0KCkpLGNvbnNvbGUuZXJyb3IoInN0ZGVycjoiLEEuZ2V0TW9kdWxlU3RkZXJyKCkpLHR5cGVvZiBBLmdldEV4Y2VwdGlvbk1lc3NhZ2U8InUiP2NvbnNvbGUuZXJyb3IoImV4Y2VwdGlvbjoiLEEuZ2V0RXhjZXB0aW9uTWVzc2FnZShuKSk6Y29uc29sZS5lcnJvcigiQnVpbGQgbW9kdWxlIGluIERlYnVnIG1vZGUgZm9yIGV4Y2VwdGlvbiBtZXNzYWdlIGluZm9ybWF0aW9uLiIpKSxufWZpbmFsbHl7QS5zdGFja1Jlc3RvcmUoZyl9bGV0IGk9QS5nZXRNb2R1bGVTdGRvdXQoKSxzPUEuZ2V0TW9kdWxlU3RkZXJyKCksYT1bXTtyZXR1cm4gdCE9bnVsbCYmdC5sZW5ndGg+MCYmcj09PTAmJnQuZm9yRWFjaChmdW5jdGlvbihuLEMpe2xldCBvPW51bGw7c3dpdGNoKG4udHlwZSl7Y2FzZSBELlRleHRTdHJlYW06e2xldCBRPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEMsMF0pLEU9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQywwXSksYz1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsUSxFKTtvPXtkYXRhOldJLmRlY29kZShjKX07YnJlYWt9Y2FzZSBELkpzb25Db21wYXRpYmxlOntsZXQgUT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxDLDBdKSxFPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEMsMF0pLGM9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLFEsRSk7bz1KU09OLnBhcnNlKFdJLmRlY29kZShjKSk7YnJlYWt9Y2FzZSBELkJpbmFyeVN0cmVhbTp7bGV0IFE9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQywwXSksRT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxDLDBdKTtvPXtkYXRhOlZJKEEsUSxFKX07YnJlYWt9Y2FzZSBELlRleHRGaWxlOntvPXtwYXRoOm4uZGF0YS5wYXRoLGRhdGE6QS5mc19yZWFkRmlsZShuLmRhdGEucGF0aCx7ZW5jb2Rpbmc6InV0ZjgifSl9O2JyZWFrfWNhc2UgRC5CaW5hcnlGaWxlOntvPXtwYXRoOm4uZGF0YS5wYXRoLGRhdGE6ZGUoQSxuLmRhdGEucGF0aCl9O2JyZWFrfWNhc2UgRC5JbWFnZTp7bGV0IFE9ekEoQSxDKTtRLmRhdGE9UyhBLEMsMCxRLmltYWdlVHlwZS5jb21wb25lbnRUeXBlKSxRLmRpcmVjdGlvbj1TKEEsQywxLFAuRmxvYXQ2NCksUS5tZXRhZGF0YT1uZXcgTWFwKFEubWV0YWRhdGEpLG89UTticmVha31jYXNlIEQuTWVzaDp7bGV0IFE9ekEoQSxDKTtRLm51bWJlck9mUG9pbnRzPjA/US5wb2ludHM9UyhBLEMsMCxRLm1lc2hUeXBlLnBvaW50Q29tcG9uZW50VHlwZSk6US5wb2ludHM9WShRLm1lc2hUeXBlLnBvaW50Q29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLFEubnVtYmVyT2ZDZWxscz4wP1EuY2VsbHM9UyhBLEMsMSxRLm1lc2hUeXBlLmNlbGxDb21wb25lbnRUeXBlKTpRLmNlbGxzPVkoUS5tZXNoVHlwZS5jZWxsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLFEubnVtYmVyT2ZQb2ludFBpeGVscz4wP1EucG9pbnREYXRhPVMoQSxDLDIsUS5tZXNoVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSk6US5wb2ludERhdGE9WShRLm1lc2hUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksUS5udW1iZXJPZkNlbGxQaXhlbHM+MD9RLmNlbGxEYXRhPVMoQSxDLDMsUS5tZXNoVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlKTpRLmNlbGxEYXRhPVkoUS5tZXNoVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksbz1RO2JyZWFrfWNhc2UgRC5Qb2x5RGF0YTp7bGV0IFE9ekEoQSxDKTtRLm51bWJlck9mUG9pbnRzPjA/US5wb2ludHM9UyhBLEMsMCxQLkZsb2F0MzIpOlEucG9pbnRzPW5ldyBGbG9hdDMyQXJyYXksUS52ZXJ0aWNlc0J1ZmZlclNpemU+MD9RLnZlcnRpY2VzPVMoQSxDLDEscC5VSW50MzIpOlEudmVydGljZXM9bmV3IFVpbnQzMkFycmF5LFEubGluZXNCdWZmZXJTaXplPjA/US5saW5lcz1TKEEsQywyLHAuVUludDMyKTpRLmxpbmVzPW5ldyBVaW50MzJBcnJheSxRLnBvbHlnb25zQnVmZmVyU2l6ZT4wP1EucG9seWdvbnM9UyhBLEMsMyxwLlVJbnQzMik6US5wb2x5Z29ucz1uZXcgVWludDMyQXJyYXksUS50cmlhbmdsZVN0cmlwc0J1ZmZlclNpemU+MD9RLnRyaWFuZ2xlU3RyaXBzPVMoQSxDLDQscC5VSW50MzIpOlEudHJpYW5nbGVTdHJpcHM9bmV3IFVpbnQzMkFycmF5LFEubnVtYmVyT2ZQb2ludFBpeGVscz4wP1EucG9pbnREYXRhPVMoQSxDLDUsUS5wb2x5RGF0YVR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUpOlEucG9pbnREYXRhPVkoUS5wb2x5RGF0YVR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxRLm51bWJlck9mQ2VsbFBpeGVscz4wP1EuY2VsbERhdGE9UyhBLEMsNixRLnBvbHlEYXRhVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlKTpRLmNlbGxEYXRhPVkoUS5wb2x5RGF0YVR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLG89UTticmVha31kZWZhdWx0OnRocm93IEVycm9yKCJVbnN1cHBvcnRlZCBvdXRwdXQgSW50ZXJmYWNlVHlwZSIpfWxldCBmPXt0eXBlOm4udHlwZSxkYXRhOm99O2EucHVzaChmKX0pLHtyZXR1cm5WYWx1ZTpyLHN0ZG91dDppLHN0ZGVycjpzLG91dHB1dHM6YX19dmFyIFhJPXllO3ZhciB3ZT10eXBlb2YgZ2xvYmFsVGhpcy5TaGFyZWRBcnJheUJ1ZmZlcjwidSI7ZnVuY3Rpb24gbWUoQSxJKXtpZihBPT1udWxsKXJldHVybltdO2xldCB0PVtdO2ZvcihsZXQgZT0wO2U8QS5sZW5ndGg7ZSsrKXtsZXQgZz1wZShBW2VdLEkpO2chPT1udWxsJiZ0LnB1c2goZyl9cmV0dXJuIHR9ZnVuY3Rpb24gcGUoQSxJKXtpZihBPT1udWxsKXJldHVybiBudWxsO2xldCB0PW51bGw7cmV0dXJuIEEuYnVmZmVyIT09dm9pZCAwP3Q9QS5idWZmZXI6QS5ieXRlTGVuZ3RoIT09dm9pZCAwJiYodD1BKSx3ZSYmdCBpbnN0YW5jZW9mIFNoYXJlZEFycmF5QnVmZmVyP251bGw6ST90OnQuc2xpY2UoMCl9dmFyIHpJPW1lO2Z1bmN0aW9uIFNlKEEpe3JldHVybltBLmRhdGEsQS5kaXJlY3Rpb25dfXZhciBfST1TZTtmdW5jdGlvbiBGZShBKXtyZXR1cm5bQS5wb2ludHMsQS5wb2ludERhdGEsQS5jZWxscyxBLmNlbGxEYXRhXX12YXIgdkk9RmU7ZnVuY3Rpb24gUmUoQSl7cmV0dXJuW0EucG9pbnRzLEEudmVydGljZXMsQS5saW5lcyxBLnBvbHlnb25zLEEudHJpYW5nbGVTdHJpcHMsQS5wb2ludERhdGEsQS5jZWxsRGF0YV19dmFyICRJPVJlO2FzeW5jIGZ1bmN0aW9uIE5lKEEsSSx0LGUpe2xldCBnPVhJKEEsSSx0LGUpLHI9W107cmV0dXJuIGcub3V0cHV0cy5mb3JFYWNoKGZ1bmN0aW9uKGkpe2lmKGkudHlwZT09PUQuQmluYXJ5U3RyZWFtfHxpLnR5cGU9PT1ELkJpbmFyeUZpbGUpe2xldCBzPWkuZGF0YTtyLnB1c2gocyl9ZWxzZSBpZihpLnR5cGU9PT1ELkltYWdlKXtsZXQgcz1pLmRhdGE7ci5wdXNoKC4uLl9JKHMpKX1lbHNlIGlmKGkudHlwZT09PUQuTWVzaCl7bGV0IHM9aS5kYXRhO3IucHVzaCguLi52SShzKSl9ZWxzZSBpZihpLnR5cGU9PT1ELlBvbHlEYXRhKXtsZXQgcz1pLmRhdGE7ci5wdXNoKC4uLiRJKHMpKX19KSxTQShnLHpJKHIsITApKX12YXIgQXQ9TmU7dmFyIFVlPXtydW5QaXBlbGluZTphc3luYyBmdW5jdGlvbihBLEksdCxlLGcscil7bGV0IGk9YXdhaXQgUEkoQSxJLHIpO3JldHVybiBhd2FpdCBBdChpLHQsZSxnKX19O29BKFVlKTslMEEvKiEgQnVuZGxlZCBsaWNlbnNlIGluZm9ybWF0aW9uOiUwQSUwQWNvbWxpbmsvZGlzdC9lc20vY29tbGluay5tanM6JTBBICAoKiolMEEgICAqIEBsaWNlbnNlJTBBICAgKiBDb3B5cmlnaHQgMjAxOSBHb29nbGUgTExDJTBBICAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCUwQSAgICopJTBBKi8lMEEnO210KHd0KTtleHBvcnR7QmkgYXMgYXBwbHlQcmVzZW50YXRpb25TdGF0ZVRvSW1hZ2UsSiBhcyBnZXREZWZhdWx0V2ViV29ya2VyLEYgYXMgZ2V0UGlwZWxpbmVXb3JrZXJVcmwsTiBhcyBnZXRQaXBlbGluZXNCYXNlVXJsLGNpIGFzIHJlYWREaWNvbUVuY2Fwc3VsYXRlZFBkZixkaSBhcyByZWFkRGljb21UYWdzLHdpIGFzIHJlYWRJbWFnZURpY29tRmlsZVNlcmllcyxnZSBhcyByZWFkSW1hZ2VEaWNvbUZpbGVTZXJpZXNXb3JrZXJGdW5jdGlvbixXcyBhcyBzZXREZWZhdWx0V2ViV29ya2VyLG10IGFzIHNldFBpcGVsaW5lV29ya2VyVXJsLFBzIGFzIHNldFBpcGVsaW5lc0Jhc2VVcmwsRWkgYXMgc3RydWN0dXJlZFJlcG9ydFRvSHRtbCxmaSBhcyBzdHJ1Y3R1cmVkUmVwb3J0VG9UZXh0LGtBIGFzIHZlcnNpb259OwovKiEgQnVuZGxlZCBsaWNlbnNlIGluZm9ybWF0aW9uOgoKY29tbGluay9kaXN0L2VzbS9jb21saW5rLm1qczoKICAoKioKICAgKiBAbGljZW5zZQogICAqIENvcHlyaWdodCAyMDE5IEdvb2dsZSBMTEMKICAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMAogICAqKQoqLwo=""" +default_js_module = """data:text/javascript;base64,dmFyIFN0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgRnQ9KEEsZSk9Pntmb3IodmFyIHQgaW4gZSlTdChBLHQse2dldDplW3RdLGVudW1lcmFibGU6ITB9KX07dmFyIGt0PSI2LjAuMSIsa0E9a3Q7dmFyIFJ0PXtJbnQ4OiJpbnQ4IixVSW50ODoidWludDgiLEludDE2OiJpbnQxNiIsVUludDE2OiJ1aW50MTYiLEludDMyOiJpbnQzMiIsVUludDMyOiJ1aW50MzIiLEludDY0OiJpbnQ2NCIsVUludDY0OiJ1aW50NjQiLFNpemVWYWx1ZVR5cGU6InVpbnQ2NCIsSWRlbnRpZmllclR5cGU6InVpbnQ2NCIsSW5kZXhWYWx1ZVR5cGU6ImludDY0IixPZmZzZXRWYWx1ZVR5cGU6ImludDY0In0saD1SdDt2YXIgYnQ9e0Zsb2F0MzI6ImZsb2F0MzIiLEZsb2F0NjQ6ImZsb2F0NjQiLFNwYWNlUHJlY2lzaW9uVHlwZToiZmxvYXQ2NCJ9LE09YnQ7ZnVuY3Rpb24gVXQoQSxlKXtsZXQgdD1udWxsO3N3aXRjaChBKXtjYXNlIGguVUludDg6e3Q9bmV3IFVpbnQ4QXJyYXkoZSk7YnJlYWt9Y2FzZSBoLkludDg6e3Q9bmV3IEludDhBcnJheShlKTticmVha31jYXNlIGguVUludDE2Ont0PW5ldyBVaW50MTZBcnJheShlKTticmVha31jYXNlIGguSW50MTY6e3Q9bmV3IEludDE2QXJyYXkoZSk7YnJlYWt9Y2FzZSBoLlVJbnQzMjp7dD1uZXcgVWludDMyQXJyYXkoZSk7YnJlYWt9Y2FzZSBoLkludDMyOnt0PW5ldyBJbnQzMkFycmF5KGUpO2JyZWFrfWNhc2UgaC5VSW50NjQ6e3R5cGVvZiBnbG9iYWxUaGlzLkJpZ1VpbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ1VpbnQ2NEFycmF5KGUpOnQ9bmV3IFVpbnQ4QXJyYXkoZSk7YnJlYWt9Y2FzZSBoLkludDY0Ont0eXBlb2YgZ2xvYmFsVGhpcy5CaWdJbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ0ludDY0QXJyYXkoZSk6dD1uZXcgVWludDhBcnJheShlKTticmVha31jYXNlIE0uRmxvYXQzMjp7dD1uZXcgRmxvYXQzMkFycmF5KGUpO2JyZWFrfWNhc2UgTS5GbG9hdDY0Ont0PW5ldyBGbG9hdDY0QXJyYXkoZSk7YnJlYWt9Y2FzZSJudWxsIjp7dD1udWxsO2JyZWFrfWNhc2UgbnVsbDp7dD1udWxsO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlIGlzIG5vdCBzdXBwb3J0ZWQgYXMgYSBUeXBlZEFycmF5Iil9cmV0dXJuIHR9dmFyIEw9VXQ7dmFyIE50PXtVbmtub3duOiJVbmtub3duIixTY2FsYXI6IlNjYWxhciIsUkdCOiJSR0IiLFJHQkE6IlJHQkEiLE9mZnNldDoiT2Zmc2V0IixWZWN0b3I6IlZlY3RvciIsUG9pbnQ6IlBvaW50IixDb3ZhcmlhbnRWZWN0b3I6IkNvdmFyaWFudFZlY3RvciIsU3ltbWV0cmljU2Vjb25kUmFua1RlbnNvcjoiU3ltbWV0cmljU2Vjb25kUmFua1RlbnNvciIsRGlmZnVzaW9uVGVuc29yM0Q6IkRpZmZ1c2lvblRlbnNvcjNEIixDb21wbGV4OiJDb21wbGV4IixGaXhlZEFycmF5OiJGaXhlZEFycmF5IixBcnJheToiQXJyYXkiLE1hdHJpeDoiTWF0cml4IixWYXJpYWJsZUxlbmd0aFZlY3RvcjoiVmFyaWFibGVMZW5ndGhWZWN0b3IiLFZhcmlhYmxlU2l6ZU1hdHJpeDoiVmFyaWFibGVTaXplTWF0cml4In0sbGU9TnQ7dmFyIFJBPWNsYXNze2RpbWVuc2lvbjtjb21wb25lbnRUeXBlO3BpeGVsVHlwZTtjb21wb25lbnRzO2NvbnN0cnVjdG9yKGU9Mix0PWguVUludDgscj1sZS5TY2FsYXIsbj0xKXt0aGlzLmRpbWVuc2lvbj1lLHRoaXMuY29tcG9uZW50VHlwZT10LHRoaXMucGl4ZWxUeXBlPXIsdGhpcy5jb21wb25lbnRzPW59fSxCZT1SQTtmdW5jdGlvbiBHdChBLGUsdCxyLG4pe0Fbcit0KmVdPW59dmFyIENlPUd0O3ZhciBiQT1jbGFzc3tpbWFnZVR5cGU7bmFtZT0iaW1hZ2UiO29yaWdpbjtzcGFjaW5nO2RpcmVjdGlvbjtzaXplO21ldGFkYXRhO2RhdGE7Y29uc3RydWN0b3IoZT1uZXcgQmUpe3RoaXMuaW1hZ2VUeXBlPWU7bGV0IHQ9ZS5kaW1lbnNpb247dGhpcy5vcmlnaW49bmV3IEFycmF5KHQpLHRoaXMub3JpZ2luLmZpbGwoMCksdGhpcy5zcGFjaW5nPW5ldyBBcnJheSh0KSx0aGlzLnNwYWNpbmcuZmlsbCgxKSx0aGlzLmRpcmVjdGlvbj1uZXcgRmxvYXQ2NEFycmF5KHQqdCksdGhpcy5kaXJlY3Rpb24uZmlsbCgwKTtmb3IobGV0IHI9MDtyPHQ7cisrKUNlKHRoaXMuZGlyZWN0aW9uLHQscixyLDEpO3RoaXMuc2l6ZT1uZXcgQXJyYXkodCksdGhpcy5zaXplLmZpbGwoMCksdGhpcy5tZXRhZGF0YT1uZXcgTWFwLHRoaXMuZGF0YT1udWxsfX0sY2U9YkE7ZnVuY3Rpb24gVHQoQSl7aWYoQS5sZW5ndGg8MSl0aHJvdyBFcnJvcigiQXQgbGVhc3Qgb25lIGltYWdlcyBpcyByZXF1aXJlZC4iKTtsZXQgZT1BWzBdO2lmKGUuZGF0YT09PW51bGwpdGhyb3cgRXJyb3IoIkltYWdlIGRhdGEgaXMgbnVsbC4iKTtsZXQgdD1uZXcgY2UoZS5pbWFnZVR5cGUpO3Qub3JpZ2luPUFycmF5LmZyb20oZS5vcmlnaW4pLHQuc3BhY2luZz1BcnJheS5mcm9tKGUuc3BhY2luZyk7bGV0IHI9dC5pbWFnZVR5cGUuZGltZW5zaW9uO3QuZGlyZWN0aW9uPWUuZGlyZWN0aW9uLnNsaWNlKCk7bGV0IG49ci0xO3Quc2l6ZT1BcnJheS5mcm9tKGUuc2l6ZSk7bGV0IGk9QS5yZWR1Y2UoKHMsYSk9PnMrYS5zaXplW25dLDApO3Quc2l6ZVtuXT1pO2xldCBvPXQuc2l6ZS5yZWR1Y2UoKHMsYSk9PnMqYSwxKSp0LmltYWdlVHlwZS5jb21wb25lbnRzLGc9ZS5kYXRhLmNvbnN0cnVjdG9yO3QuZGF0YT1uZXcgZyhvKTtsZXQgQz10LmltYWdlVHlwZS5jb21wb25lbnRzO2ZvcihsZXQgcz0wO3M8dC5zaXplLmxlbmd0aC0xO3MrKylDKj10LnNpemVbc107bGV0IGw9MDtpZih0LmRhdGEhPW51bGwpZm9yKGxldCBzPTA7czxBLmxlbmd0aDtzKyspdC5kYXRhLnNldChBW3NdLmRhdGEsQypsKSxsKz1BW3NdLnNpemVbbl07ZWxzZSB0aHJvdyBFcnJvcigiQ291bGQgbm90IGNyZWF0ZSByZXN1bHQgaW1hZ2UgZGF0YS4iKTtyZXR1cm4gdH12YXIgVUE9VHQ7dmFyIE5BPWNsYXNze2Zjbjt3b3JrZXJRdWV1ZTtydW5JbmZvO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5mY249dCx0aGlzLndvcmtlclF1ZXVlPW5ldyBBcnJheShlKSx0aGlzLndvcmtlclF1ZXVlLmZpbGwobnVsbCksdGhpcy5ydW5JbmZvPVtdfXJ1blRhc2tzKGUsdD1udWxsKXtsZXQgcj17dGFza1F1ZXVlOltdLHJlc3VsdHM6W10sYWRkaW5nVGFza3M6ITEscG9zdHBvbmVkOiExLHJ1bm5pbmdXb3JrZXJzOjAsaW5kZXg6MCxjb21wbGV0ZWRUYXNrczowLHByb2dyZXNzQ2FsbGJhY2s6dCxjYW5jZWxlZDohMX07cmV0dXJuIHRoaXMucnVuSW5mby5wdXNoKHIpLHIuaW5kZXg9dGhpcy5ydW5JbmZvLmxlbmd0aC0xLHtwcm9taXNlOm5ldyBQcm9taXNlKChuLGkpPT57ci5yZXNvbHZlPW4sci5yZWplY3Q9aSxyLnJlc3VsdHM9bmV3IEFycmF5KGUubGVuZ3RoKSxyLmNvbXBsZXRlZFRhc2tzPTAsci5hZGRpbmdUYXNrcz0hMCxlLmZvckVhY2goKG8sZyk9Pnt0aGlzLmFkZFRhc2soci5pbmRleCxnLG8pfSksci5hZGRpbmdUYXNrcz0hMX0pLHJ1bklkOnIuaW5kZXh9fXRlcm1pbmF0ZVdvcmtlcnMoKXtmb3IobGV0IGU9MDtlPHRoaXMud29ya2VyUXVldWUubGVuZ3RoO2UrKyl7bGV0IHQ9dGhpcy53b3JrZXJRdWV1ZVtlXTt0Py50ZXJtaW5hdGUoKSx0aGlzLndvcmtlclF1ZXVlW2VdPW51bGx9fWNhbmNlbChlKXtsZXQgdD10aGlzLnJ1bkluZm9bZV07dCE9bnVsbCYmKHQuY2FuY2VsZWQ9ITApfWFkZFRhc2soZSx0LHIpe2xldCBuPXRoaXMucnVuSW5mb1tlXTtpZihuPy5jYW5jZWxlZD09PSEwKXtuLnJlamVjdCgiUmVtYWluaW5nIHRhc2tzIGNhbmNlbGVkIiksdGhpcy5jbGVhclRhc2sobi5pbmRleCk7cmV0dXJufWlmKHRoaXMud29ya2VyUXVldWUubGVuZ3RoPjApe2xldCBpPXRoaXMud29ya2VyUXVldWUucG9wKCk7bi5ydW5uaW5nV29ya2VycysrLHJbci5sZW5ndGgtMV0ud2ViV29ya2VyPWksdGhpcy5mY24oLi4ucikudGhlbigoe3dlYldvcmtlcjpvLC4uLmd9KT0+e2lmKHRoaXMud29ya2VyUXVldWUucHVzaChvKSx0aGlzLnJ1bkluZm9bZV0hPT1udWxsKXtpZihuLnJ1bm5pbmdXb3JrZXJzLS0sbi5yZXN1bHRzW3RdPWcsbi5jb21wbGV0ZWRUYXNrcysrLG4ucHJvZ3Jlc3NDYWxsYmFjayE9bnVsbCYmbi5wcm9ncmVzc0NhbGxiYWNrKG4uY29tcGxldGVkVGFza3Msbi5yZXN1bHRzLmxlbmd0aCksbi50YXNrUXVldWUubGVuZ3RoPjApe2xldCBDPW4udGFza1F1ZXVlLnNoaWZ0KCk7dGhpcy5hZGRUYXNrKGUsQ1swXSxDWzFdKX1lbHNlIGlmKCFuLmFkZGluZ1Rhc2tzJiZuLnJ1bm5pbmdXb3JrZXJzPT09MCl7bGV0IEM9bi5yZXN1bHRzO24ucmVzb2x2ZShDKSx0aGlzLmNsZWFyVGFzayhuLmluZGV4KX19fSkuY2F0Y2gobz0+e24ucmVqZWN0KG8pLHRoaXMuY2xlYXJUYXNrKG4uaW5kZXgpfSl9ZWxzZSBuLnJ1bm5pbmdXb3JrZXJzIT09MHx8bi5wb3N0cG9uZWQ/bi50YXNrUXVldWUucHVzaChbdCxyXSk6KG4ucG9zdHBvbmVkPSEwLHNldFRpbWVvdXQoKCk9PntuLnBvc3Rwb25lZD0hMSx0aGlzLmFkZFRhc2sobi5pbmRleCx0LHIpfSw1MCkpfWNsZWFyVGFzayhlKXt0aGlzLnJ1bkluZm9bZV0ucmVzdWx0cz1bXSx0aGlzLnJ1bkluZm9bZV0udGFza1F1ZXVlPVtdLHRoaXMucnVuSW5mb1tlXS5wcm9ncmVzc0NhbGxiYWNrPW51bGwsdGhpcy5ydW5JbmZvW2VdLmNhbmNlbGVkPW51bGwsdGhpcy5ydW5JbmZvW2VdLnJlamVjdD0oKT0+e30sdGhpcy5ydW5JbmZvW2VdLnJlc29sdmU9KCk9Pnt9fX0sR0E9TkE7dmFyIEx0PXtUZXh0RmlsZToiVGV4dEZpbGUiLEJpbmFyeUZpbGU6IkJpbmFyeUZpbGUiLFRleHRTdHJlYW06IlRleHRTdHJlYW0iLEJpbmFyeVN0cmVhbToiQmluYXJ5U3RyZWFtIixJbWFnZToiSW1hZ2UiLE1lc2g6Ik1lc2giLFBvbHlEYXRhOiJQb2x5RGF0YSIsSnNvbkNvbXBhdGlibGU6Ikpzb25Db21wYXRpYmxlIn0sUT1MdDt2YXIgRWU9U3ltYm9sKCJDb21saW5rLnByb3h5IikseHQ9U3ltYm9sKCJDb21saW5rLmVuZHBvaW50IikseEE9U3ltYm9sKCJDb21saW5rLnJlbGVhc2VQcm94eSIpLFRBPVN5bWJvbCgiQ29tbGluay5maW5hbGl6ZXIiKSxzQT1TeW1ib2woIkNvbWxpbmsudGhyb3duIiksUWU9QT0+dHlwZW9mIEE9PSJvYmplY3QiJiZBIT09bnVsbHx8dHlwZW9mIEE9PSJmdW5jdGlvbiIsT3Q9e2NhbkhhbmRsZTpBPT5RZShBKSYmQVtFZV0sc2VyaWFsaXplKEEpe2xldHtwb3J0MTplLHBvcnQyOnR9PW5ldyBNZXNzYWdlQ2hhbm5lbDtyZXR1cm4gcGUoQSxlKSxbdCxbdF1dfSxkZXNlcmlhbGl6ZShBKXtyZXR1cm4gQS5zdGFydCgpLE9BKEEpfX0sUHQ9e2NhbkhhbmRsZTpBPT5RZShBKSYmc0EgaW4gQSxzZXJpYWxpemUoe3ZhbHVlOkF9KXtsZXQgZTtyZXR1cm4gQSBpbnN0YW5jZW9mIEVycm9yP2U9e2lzRXJyb3I6ITAsdmFsdWU6e21lc3NhZ2U6QS5tZXNzYWdlLG5hbWU6QS5uYW1lLHN0YWNrOkEuc3RhY2t9fTplPXtpc0Vycm9yOiExLHZhbHVlOkF9LFtlLFtdXX0sZGVzZXJpYWxpemUoQSl7dGhyb3cgQS5pc0Vycm9yP09iamVjdC5hc3NpZ24obmV3IEVycm9yKEEudmFsdWUubWVzc2FnZSksQS52YWx1ZSk6QS52YWx1ZX19LGZlPW5ldyBNYXAoW1sicHJveHkiLE90XSxbInRocm93IixQdF1dKTtmdW5jdGlvbiBKdChBLGUpe2ZvcihsZXQgdCBvZiBBKWlmKGU9PT10fHx0PT09IioifHx0IGluc3RhbmNlb2YgUmVnRXhwJiZ0LnRlc3QoZSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gcGUoQSxlPWdsb2JhbFRoaXMsdD1bIioiXSl7ZS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiByKG4pe2lmKCFufHwhbi5kYXRhKXJldHVybjtpZighSnQodCxuLm9yaWdpbikpe2NvbnNvbGUud2FybihgSW52YWxpZCBvcmlnaW4gJyR7bi5vcmlnaW59JyBmb3IgY29tbGluayBwcm94eWApO3JldHVybn1sZXR7aWQ6aSx0eXBlOm8scGF0aDpnfT1PYmplY3QuYXNzaWduKHtwYXRoOltdfSxuLmRhdGEpLEM9KG4uZGF0YS5hcmd1bWVudExpc3R8fFtdKS5tYXAoSCksbDt0cnl7bGV0IHM9Zy5zbGljZSgwLC0xKS5yZWR1Y2UoKEUsQik9PkVbQl0sQSksYT1nLnJlZHVjZSgoRSxCKT0+RVtCXSxBKTtzd2l0Y2gobyl7Y2FzZSJHRVQiOmw9YTticmVhaztjYXNlIlNFVCI6c1tnLnNsaWNlKC0xKVswXV09SChuLmRhdGEudmFsdWUpLGw9ITA7YnJlYWs7Y2FzZSJBUFBMWSI6bD1hLmFwcGx5KHMsQyk7YnJlYWs7Y2FzZSJDT05TVFJVQ1QiOntsZXQgRT1uZXcgYSguLi5DKTtsPUt0KEUpfWJyZWFrO2Nhc2UiRU5EUE9JTlQiOntsZXR7cG9ydDE6RSxwb3J0MjpCfT1uZXcgTWVzc2FnZUNoYW5uZWw7cGUoQSxCKSxsPVBBKEUsW0VdKX1icmVhaztjYXNlIlJFTEVBU0UiOmw9dm9pZCAwO2JyZWFrO2RlZmF1bHQ6cmV0dXJufX1jYXRjaChzKXtsPXt2YWx1ZTpzLFtzQV06MH19UHJvbWlzZS5yZXNvbHZlKGwpLmNhdGNoKHM9Pih7dmFsdWU6cyxbc0FdOjB9KSkudGhlbihzPT57bGV0W2EsRV09bEEocyk7ZS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYSkse2lkOml9KSxFKSxvPT09IlJFTEVBU0UiJiYoZS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixyKSxkZShlKSxUQSBpbiBBJiZ0eXBlb2YgQVtUQV09PSJmdW5jdGlvbiImJkFbVEFdKCkpfSkuY2F0Y2gocz0+e2xldFthLEVdPWxBKHt2YWx1ZTpuZXcgVHlwZUVycm9yKCJVbnNlcmlhbGl6YWJsZSByZXR1cm4gdmFsdWUiKSxbc0FdOjB9KTtlLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhKSx7aWQ6aX0pLEUpfSl9KSxlLnN0YXJ0JiZlLnN0YXJ0KCl9ZnVuY3Rpb24gSHQoQSl7cmV0dXJuIEEuY29uc3RydWN0b3IubmFtZT09PSJNZXNzYWdlUG9ydCJ9ZnVuY3Rpb24gZGUoQSl7SHQoQSkmJkEuY2xvc2UoKX1mdW5jdGlvbiBPQShBLGUpe3JldHVybiBMQShBLFtdLGUpfWZ1bmN0aW9uIGFBKEEpe2lmKEEpdGhyb3cgbmV3IEVycm9yKCJQcm94eSBoYXMgYmVlbiByZWxlYXNlZCBhbmQgaXMgbm90IHVzZWFibGUiKX1mdW5jdGlvbiBtZShBKXtyZXR1cm4gWShBLHt0eXBlOiJSRUxFQVNFIn0pLnRoZW4oKCk9PntkZShBKX0pfXZhciBJQT1uZXcgV2Vha01hcCxnQT0iRmluYWxpemF0aW9uUmVnaXN0cnkiaW4gZ2xvYmFsVGhpcyYmbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KEE9PntsZXQgZT0oSUEuZ2V0KEEpfHwwKS0xO0lBLnNldChBLGUpLGU9PT0wJiZtZShBKX0pO2Z1bmN0aW9uIE10KEEsZSl7bGV0IHQ9KElBLmdldChlKXx8MCkrMTtJQS5zZXQoZSx0KSxnQSYmZ0EucmVnaXN0ZXIoQSxlLEEpfWZ1bmN0aW9uIFl0KEEpe2dBJiZnQS51bnJlZ2lzdGVyKEEpfWZ1bmN0aW9uIExBKEEsZT1bXSx0PWZ1bmN0aW9uKCl7fSl7bGV0IHI9ITEsbj1uZXcgUHJveHkodCx7Z2V0KGksbyl7aWYoYUEociksbz09PXhBKXJldHVybigpPT57WXQobiksbWUoQSkscj0hMH07aWYobz09PSJ0aGVuIil7aWYoZS5sZW5ndGg9PT0wKXJldHVybnt0aGVuOigpPT5ufTtsZXQgZz1ZKEEse3R5cGU6IkdFVCIscGF0aDplLm1hcChDPT5DLnRvU3RyaW5nKCkpfSkudGhlbihIKTtyZXR1cm4gZy50aGVuLmJpbmQoZyl9cmV0dXJuIExBKEEsWy4uLmUsb10pfSxzZXQoaSxvLGcpe2FBKHIpO2xldFtDLGxdPWxBKGcpO3JldHVybiBZKEEse3R5cGU6IlNFVCIscGF0aDpbLi4uZSxvXS5tYXAocz0+cy50b1N0cmluZygpKSx2YWx1ZTpDfSxsKS50aGVuKEgpfSxhcHBseShpLG8sZyl7YUEocik7bGV0IEM9ZVtlLmxlbmd0aC0xXTtpZihDPT09eHQpcmV0dXJuIFkoQSx7dHlwZToiRU5EUE9JTlQifSkudGhlbihIKTtpZihDPT09ImJpbmQiKXJldHVybiBMQShBLGUuc2xpY2UoMCwtMSkpO2xldFtsLHNdPXVlKGcpO3JldHVybiBZKEEse3R5cGU6IkFQUExZIixwYXRoOmUubWFwKGE9PmEudG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omx9LHMpLnRoZW4oSCl9LGNvbnN0cnVjdChpLG8pe2FBKHIpO2xldFtnLENdPXVlKG8pO3JldHVybiBZKEEse3R5cGU6IkNPTlNUUlVDVCIscGF0aDplLm1hcChsPT5sLnRvU3RyaW5nKCkpLGFyZ3VtZW50TGlzdDpnfSxDKS50aGVuKEgpfX0pO3JldHVybiBNdChuLEEpLG59ZnVuY3Rpb24gcXQoQSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sQSl9ZnVuY3Rpb24gdWUoQSl7bGV0IGU9QS5tYXAobEEpO3JldHVybltlLm1hcCh0PT50WzBdKSxxdChlLm1hcCh0PT50WzFdKSldfXZhciBoZT1uZXcgV2Vha01hcDtmdW5jdGlvbiBQQShBLGUpe3JldHVybiBoZS5zZXQoQSxlKSxBfWZ1bmN0aW9uIEt0KEEpe3JldHVybiBPYmplY3QuYXNzaWduKEEse1tFZV06ITB9KX1mdW5jdGlvbiBsQShBKXtmb3IobGV0W2UsdF1vZiBmZSlpZih0LmNhbkhhbmRsZShBKSl7bGV0W3Isbl09dC5zZXJpYWxpemUoQSk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmUsdmFsdWU6cn0sbl19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOkF9LGhlLmdldChBKXx8W11dfWZ1bmN0aW9uIEgoQSl7c3dpdGNoKEEudHlwZSl7Y2FzZSJIQU5ETEVSIjpyZXR1cm4gZmUuZ2V0KEEubmFtZSkuZGVzZXJpYWxpemUoQS52YWx1ZSk7Y2FzZSJSQVciOnJldHVybiBBLnZhbHVlfX1mdW5jdGlvbiBZKEEsZSx0KXtyZXR1cm4gbmV3IFByb21pc2Uocj0+e2xldCBuPVd0KCk7QS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiBpKG8peyFvLmRhdGF8fCFvLmRhdGEuaWR8fG8uZGF0YS5pZCE9PW58fChBLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGkpLHIoby5kYXRhKSl9KSxBLnN0YXJ0JiZBLnN0YXJ0KCksQS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKHtpZDpufSxlKSx0KX0pfWZ1bmN0aW9uIFd0KCl7cmV0dXJuIG5ldyBBcnJheSg0KS5maWxsKDApLm1hcCgoKT0+TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKk51bWJlci5NQVhfU0FGRV9JTlRFR0VSKS50b1N0cmluZygxNikpLmpvaW4oIi0iKX1mdW5jdGlvbiBaKEEsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEEuYXBwbHkoZSxhcmd1bWVudHMpfX12YXJ7dG9TdHJpbmc6dnR9PU9iamVjdC5wcm90b3R5cGUse2dldFByb3RvdHlwZU9mOk1BfT1PYmplY3QsQ0E9KEE9PmU9PntsZXQgdD12dC5jYWxsKGUpO3JldHVybiBBW3RdfHwoQVt0XT10LnNsaWNlKDgsLTEpLnRvTG93ZXJDYXNlKCkpfSkoT2JqZWN0LmNyZWF0ZShudWxsKSksRz1BPT4oQT1BLnRvTG93ZXJDYXNlKCksZT0+Q0EoZSk9PT1BKSxjQT1BPT5lPT50eXBlb2YgZT09PUEse2lzQXJyYXk6cX09QXJyYXksWD1jQSgidW5kZWZpbmVkIik7ZnVuY3Rpb24ganQoQSl7cmV0dXJuIEEhPT1udWxsJiYhWChBKSYmQS5jb25zdHJ1Y3RvciE9PW51bGwmJiFYKEEuY29uc3RydWN0b3IpJiZVKEEuY29uc3RydWN0b3IuaXNCdWZmZXIpJiZBLmNvbnN0cnVjdG9yLmlzQnVmZmVyKEEpfXZhciBTZT1HKCJBcnJheUJ1ZmZlciIpO2Z1bmN0aW9uIF90KEEpe2xldCBlO3JldHVybiB0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZBcnJheUJ1ZmZlci5pc1ZpZXc/ZT1BcnJheUJ1ZmZlci5pc1ZpZXcoQSk6ZT1BJiZBLmJ1ZmZlciYmU2UoQS5idWZmZXIpLGV9dmFyIHp0PWNBKCJzdHJpbmciKSxVPWNBKCJmdW5jdGlvbiIpLEZlPWNBKCJudW1iZXIiKSx1QT1BPT5BIT09bnVsbCYmdHlwZW9mIEE9PSJvYmplY3QiLFZ0PUE9PkE9PT0hMHx8QT09PSExLEJBPUE9PntpZihDQShBKSE9PSJvYmplY3QiKXJldHVybiExO2xldCBlPU1BKEEpO3JldHVybihlPT09bnVsbHx8ZT09PU9iamVjdC5wcm90b3R5cGV8fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PW51bGwpJiYhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBBKSYmIShTeW1ib2wuaXRlcmF0b3IgaW4gQSl9LFp0PUcoIkRhdGUiKSxYdD1HKCJGaWxlIiksJHQ9RygiQmxvYiIpLEFyPUcoIkZpbGVMaXN0IiksZXI9QT0+dUEoQSkmJlUoQS5waXBlKSx0cj1BPT57bGV0IGU7cmV0dXJuIEEmJih0eXBlb2YgRm9ybURhdGE9PSJmdW5jdGlvbiImJkEgaW5zdGFuY2VvZiBGb3JtRGF0YXx8VShBLmFwcGVuZCkmJigoZT1DQShBKSk9PT0iZm9ybWRhdGEifHxlPT09Im9iamVjdCImJlUoQS50b1N0cmluZykmJkEudG9TdHJpbmcoKT09PSJbb2JqZWN0IEZvcm1EYXRhXSIpKX0scnI9RygiVVJMU2VhcmNoUGFyYW1zIiksaXI9QT0+QS50cmltP0EudHJpbSgpOkEucmVwbGFjZSgvXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csIiIpO2Z1bmN0aW9uICQoQSxlLHthbGxPd25LZXlzOnQ9ITF9PXt9KXtpZihBPT09bnVsbHx8dHlwZW9mIEE+InUiKXJldHVybjtsZXQgcixuO2lmKHR5cGVvZiBBIT0ib2JqZWN0IiYmKEE9W0FdKSxxKEEpKWZvcihyPTAsbj1BLmxlbmd0aDtyPG47cisrKWUuY2FsbChudWxsLEFbcl0scixBKTtlbHNle2xldCBpPXQ/T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoQSk6T2JqZWN0LmtleXMoQSksbz1pLmxlbmd0aCxnO2ZvcihyPTA7cjxvO3IrKylnPWlbcl0sZS5jYWxsKG51bGwsQVtnXSxnLEEpfX1mdW5jdGlvbiBrZShBLGUpe2U9ZS50b0xvd2VyQ2FzZSgpO2xldCB0PU9iamVjdC5rZXlzKEEpLHI9dC5sZW5ndGgsbjtmb3IoO3ItLSA+MDspaWYobj10W3JdLGU9PT1uLnRvTG93ZXJDYXNlKCkpcmV0dXJuIG47cmV0dXJuIG51bGx9dmFyIFJlPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzpnbG9iYWwsYmU9QT0+IVgoQSkmJkEhPT1SZTtmdW5jdGlvbiBIQSgpe2xldHtjYXNlbGVzczpBfT1iZSh0aGlzKSYmdGhpc3x8e30sZT17fSx0PShyLG4pPT57bGV0IGk9QSYma2UoZSxuKXx8bjtCQShlW2ldKSYmQkEocik/ZVtpXT1IQShlW2ldLHIpOkJBKHIpP2VbaV09SEEoe30scik6cShyKT9lW2ldPXIuc2xpY2UoKTplW2ldPXJ9O2ZvcihsZXQgcj0wLG49YXJndW1lbnRzLmxlbmd0aDtyPG47cisrKWFyZ3VtZW50c1tyXSYmJChhcmd1bWVudHNbcl0sdCk7cmV0dXJuIGV9dmFyIG5yPShBLGUsdCx7YWxsT3duS2V5czpyfT17fSk9PigkKGUsKG4saSk9Pnt0JiZVKG4pP0FbaV09WihuLHQpOkFbaV09bn0se2FsbE93bktleXM6cn0pLEEpLG9yPUE9PihBLmNoYXJDb2RlQXQoMCk9PT02NTI3OSYmKEE9QS5zbGljZSgxKSksQSksYXI9KEEsZSx0LHIpPT57QS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSxyKSxBLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1BLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJzdXBlciIse3ZhbHVlOmUucHJvdG90eXBlfSksdCYmT2JqZWN0LmFzc2lnbihBLnByb3RvdHlwZSx0KX0sc3I9KEEsZSx0LHIpPT57bGV0IG4saSxvLGc9e307aWYoZT1lfHx7fSxBPT1udWxsKXJldHVybiBlO2Rve2ZvcihuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEEpLGk9bi5sZW5ndGg7aS0tID4wOylvPW5baV0sKCFyfHxyKG8sQSxlKSkmJiFnW29dJiYoZVtvXT1BW29dLGdbb109ITApO0E9dCE9PSExJiZNQShBKX13aGlsZShBJiYoIXR8fHQoQSxlKSkmJkEhPT1PYmplY3QucHJvdG90eXBlKTtyZXR1cm4gZX0sSXI9KEEsZSx0KT0+e0E9U3RyaW5nKEEpLCh0PT09dm9pZCAwfHx0PkEubGVuZ3RoKSYmKHQ9QS5sZW5ndGgpLHQtPWUubGVuZ3RoO2xldCByPUEuaW5kZXhPZihlLHQpO3JldHVybiByIT09LTEmJnI9PT10fSxncj1BPT57aWYoIUEpcmV0dXJuIG51bGw7aWYocShBKSlyZXR1cm4gQTtsZXQgZT1BLmxlbmd0aDtpZighRmUoZSkpcmV0dXJuIG51bGw7bGV0IHQ9bmV3IEFycmF5KGUpO2Zvcig7ZS0tID4wOyl0W2VdPUFbZV07cmV0dXJuIHR9LGxyPShBPT5lPT5BJiZlIGluc3RhbmNlb2YgQSkodHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZNQShVaW50OEFycmF5KSksQnI9KEEsZSk9PntsZXQgcj0oQSYmQVtTeW1ib2wuaXRlcmF0b3JdKS5jYWxsKEEpLG47Zm9yKDsobj1yLm5leHQoKSkmJiFuLmRvbmU7KXtsZXQgaT1uLnZhbHVlO2UuY2FsbChBLGlbMF0saVsxXSl9fSxDcj0oQSxlKT0+e2xldCB0LHI9W107Zm9yKDsodD1BLmV4ZWMoZSkpIT09bnVsbDspci5wdXNoKHQpO3JldHVybiByfSxjcj1HKCJIVE1MRm9ybUVsZW1lbnQiKSx1cj1BPT5BLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWy1fXHNdKFthLXpcZF0pKFx3KikvZyxmdW5jdGlvbih0LHIsbil7cmV0dXJuIHIudG9VcHBlckNhc2UoKStufSksd2U9KCh7aGFzT3duUHJvcGVydHk6QX0pPT4oZSx0KT0+QS5jYWxsKGUsdCkpKE9iamVjdC5wcm90b3R5cGUpLEVyPUcoIlJlZ0V4cCIpLFVlPShBLGUpPT57bGV0IHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoQSkscj17fTskKHQsKG4saSk9PntsZXQgbzsobz1lKG4saSxBKSkhPT0hMSYmKHJbaV09b3x8bil9KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhBLHIpfSxRcj1BPT57VWUoQSwoZSx0KT0+e2lmKFUoQSkmJlsiYXJndW1lbnRzIiwiY2FsbGVyIiwiY2FsbGVlIl0uaW5kZXhPZih0KSE9PS0xKXJldHVybiExO2xldCByPUFbdF07aWYoVShyKSl7aWYoZS5lbnVtZXJhYmxlPSExLCJ3cml0YWJsZSJpbiBlKXtlLndyaXRhYmxlPSExO3JldHVybn1lLnNldHx8KGUuc2V0PSgpPT57dGhyb3cgRXJyb3IoIkNhbiBub3QgcmV3cml0ZSByZWFkLW9ubHkgbWV0aG9kICciK3QrIiciKX0pfX0pfSxmcj0oQSxlKT0+e2xldCB0PXt9LHI9bj0+e24uZm9yRWFjaChpPT57dFtpXT0hMH0pfTtyZXR1cm4gcShBKT9yKEEpOnIoU3RyaW5nKEEpLnNwbGl0KGUpKSx0fSxwcj0oKT0+e30sZHI9KEEsZSk9PihBPStBLE51bWJlci5pc0Zpbml0ZShBKT9BOmUpLEpBPSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsRGU9IjAxMjM0NTY3ODkiLE5lPXtESUdJVDpEZSxBTFBIQTpKQSxBTFBIQV9ESUdJVDpKQStKQS50b1VwcGVyQ2FzZSgpK0RlfSxtcj0oQT0xNixlPU5lLkFMUEhBX0RJR0lUKT0+e2xldCB0PSIiLHtsZW5ndGg6cn09ZTtmb3IoO0EtLTspdCs9ZVtNYXRoLnJhbmRvbSgpKnJ8MF07cmV0dXJuIHR9O2Z1bmN0aW9uIGhyKEEpe3JldHVybiEhKEEmJlUoQS5hcHBlbmQpJiZBW1N5bWJvbC50b1N0cmluZ1RhZ109PT0iRm9ybURhdGEiJiZBW1N5bWJvbC5pdGVyYXRvcl0pfXZhciB5cj1BPT57bGV0IGU9bmV3IEFycmF5KDEwKSx0PShyLG4pPT57aWYodUEocikpe2lmKGUuaW5kZXhPZihyKT49MClyZXR1cm47aWYoISgidG9KU09OImluIHIpKXtlW25dPXI7bGV0IGk9cShyKT9bXTp7fTtyZXR1cm4gJChyLChvLGcpPT57bGV0IEM9dChvLG4rMSk7IVgoQykmJihpW2ddPUMpfSksZVtuXT12b2lkIDAsaX19cmV0dXJuIHJ9O3JldHVybiB0KEEsMCl9LHdyPUcoIkFzeW5jRnVuY3Rpb24iKSxEcj1BPT5BJiYodUEoQSl8fFUoQSkpJiZVKEEudGhlbikmJlUoQS5jYXRjaCksST17aXNBcnJheTpxLGlzQXJyYXlCdWZmZXI6U2UsaXNCdWZmZXI6anQsaXNGb3JtRGF0YTp0cixpc0FycmF5QnVmZmVyVmlldzpfdCxpc1N0cmluZzp6dCxpc051bWJlcjpGZSxpc0Jvb2xlYW46VnQsaXNPYmplY3Q6dUEsaXNQbGFpbk9iamVjdDpCQSxpc1VuZGVmaW5lZDpYLGlzRGF0ZTpadCxpc0ZpbGU6WHQsaXNCbG9iOiR0LGlzUmVnRXhwOkVyLGlzRnVuY3Rpb246VSxpc1N0cmVhbTplcixpc1VSTFNlYXJjaFBhcmFtczpycixpc1R5cGVkQXJyYXk6bHIsaXNGaWxlTGlzdDpBcixmb3JFYWNoOiQsbWVyZ2U6SEEsZXh0ZW5kOm5yLHRyaW06aXIsc3RyaXBCT006b3IsaW5oZXJpdHM6YXIsdG9GbGF0T2JqZWN0OnNyLGtpbmRPZjpDQSxraW5kT2ZUZXN0OkcsZW5kc1dpdGg6SXIsdG9BcnJheTpncixmb3JFYWNoRW50cnk6QnIsbWF0Y2hBbGw6Q3IsaXNIVE1MRm9ybTpjcixoYXNPd25Qcm9wZXJ0eTp3ZSxoYXNPd25Qcm9wOndlLHJlZHVjZURlc2NyaXB0b3JzOlVlLGZyZWV6ZU1ldGhvZHM6UXIsdG9PYmplY3RTZXQ6ZnIsdG9DYW1lbENhc2U6dXIsbm9vcDpwcix0b0Zpbml0ZU51bWJlcjpkcixmaW5kS2V5OmtlLGdsb2JhbDpSZSxpc0NvbnRleHREZWZpbmVkOmJlLEFMUEhBQkVUOk5lLGdlbmVyYXRlU3RyaW5nOm1yLGlzU3BlY0NvbXBsaWFudEZvcm06aHIsdG9KU09OT2JqZWN0OnlyLGlzQXN5bmNGbjp3cixpc1RoZW5hYmxlOkRyfTtmdW5jdGlvbiBLKEEsZSx0LHIsbil7RXJyb3IuY2FsbCh0aGlzKSxFcnJvci5jYXB0dXJlU3RhY2tUcmFjZT9FcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLHRoaXMuY29uc3RydWN0b3IpOnRoaXMuc3RhY2s9bmV3IEVycm9yKCkuc3RhY2ssdGhpcy5tZXNzYWdlPUEsdGhpcy5uYW1lPSJBeGlvc0Vycm9yIixlJiYodGhpcy5jb2RlPWUpLHQmJih0aGlzLmNvbmZpZz10KSxyJiYodGhpcy5yZXF1ZXN0PXIpLG4mJih0aGlzLnJlc3BvbnNlPW4pfUkuaW5oZXJpdHMoSyxFcnJvcix7dG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOkkudG9KU09OT2JqZWN0KHRoaXMuY29uZmlnKSxjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5yZXNwb25zZSYmdGhpcy5yZXNwb25zZS5zdGF0dXM/dGhpcy5yZXNwb25zZS5zdGF0dXM6bnVsbH19fSk7dmFyIEdlPUsucHJvdG90eXBlLFRlPXt9O1siRVJSX0JBRF9PUFRJT05fVkFMVUUiLCJFUlJfQkFEX09QVElPTiIsIkVDT05OQUJPUlRFRCIsIkVUSU1FRE9VVCIsIkVSUl9ORVRXT1JLIiwiRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUyIsIkVSUl9ERVBSRUNBVEVEIiwiRVJSX0JBRF9SRVNQT05TRSIsIkVSUl9CQURfUkVRVUVTVCIsIkVSUl9DQU5DRUxFRCIsIkVSUl9OT1RfU1VQUE9SVCIsIkVSUl9JTlZBTElEX1VSTCJdLmZvckVhY2goQT0+e1RlW0FdPXt2YWx1ZTpBfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEssVGUpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShHZSwiaXNBeGlvc0Vycm9yIix7dmFsdWU6ITB9KTtLLmZyb209KEEsZSx0LHIsbixpKT0+e2xldCBvPU9iamVjdC5jcmVhdGUoR2UpO3JldHVybiBJLnRvRmxhdE9iamVjdChBLG8sZnVuY3Rpb24oQyl7cmV0dXJuIEMhPT1FcnJvci5wcm90b3R5cGV9LGc9PmchPT0iaXNBeGlvc0Vycm9yIiksSy5jYWxsKG8sQS5tZXNzYWdlLGUsdCxyLG4pLG8uY2F1c2U9QSxvLm5hbWU9QS5uYW1lLGkmJk9iamVjdC5hc3NpZ24obyxpKSxvfTt2YXIgcD1LO3ZhciBFQT1udWxsO2Z1bmN0aW9uIFlBKEEpe3JldHVybiBJLmlzUGxhaW5PYmplY3QoQSl8fEkuaXNBcnJheShBKX1mdW5jdGlvbiB4ZShBKXtyZXR1cm4gSS5lbmRzV2l0aChBLCJbXSIpP0Euc2xpY2UoMCwtMik6QX1mdW5jdGlvbiBMZShBLGUsdCl7cmV0dXJuIEE/QS5jb25jYXQoZSkubWFwKGZ1bmN0aW9uKG4saSl7cmV0dXJuIG49eGUobiksIXQmJmk/IlsiK24rIl0iOm59KS5qb2luKHQ/Ii4iOiIiKTplfWZ1bmN0aW9uIFNyKEEpe3JldHVybiBJLmlzQXJyYXkoQSkmJiFBLnNvbWUoWUEpfXZhciBGcj1JLnRvRmxhdE9iamVjdChJLHt9LG51bGwsZnVuY3Rpb24oZSl7cmV0dXJuL15pc1tBLVpdLy50ZXN0KGUpfSk7ZnVuY3Rpb24ga3IoQSxlLHQpe2lmKCFJLmlzT2JqZWN0KEEpKXRocm93IG5ldyBUeXBlRXJyb3IoInRhcmdldCBtdXN0IGJlIGFuIG9iamVjdCIpO2U9ZXx8bmV3KEVBfHxGb3JtRGF0YSksdD1JLnRvRmxhdE9iamVjdCh0LHttZXRhVG9rZW5zOiEwLGRvdHM6ITEsaW5kZXhlczohMX0sITEsZnVuY3Rpb24oYyxmKXtyZXR1cm4hSS5pc1VuZGVmaW5lZChmW2NdKX0pO2xldCByPXQubWV0YVRva2VucyxuPXQudmlzaXRvcnx8cyxpPXQuZG90cyxvPXQuaW5kZXhlcyxDPSh0LkJsb2J8fHR5cGVvZiBCbG9iPCJ1IiYmQmxvYikmJkkuaXNTcGVjQ29tcGxpYW50Rm9ybShlKTtpZighSS5pc0Z1bmN0aW9uKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoInZpc2l0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uIik7ZnVuY3Rpb24gbCh1KXtpZih1PT09bnVsbClyZXR1cm4iIjtpZihJLmlzRGF0ZSh1KSlyZXR1cm4gdS50b0lTT1N0cmluZygpO2lmKCFDJiZJLmlzQmxvYih1KSl0aHJvdyBuZXcgcCgiQmxvYiBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgYSBCdWZmZXIgaW5zdGVhZC4iKTtyZXR1cm4gSS5pc0FycmF5QnVmZmVyKHUpfHxJLmlzVHlwZWRBcnJheSh1KT9DJiZ0eXBlb2YgQmxvYj09ImZ1bmN0aW9uIj9uZXcgQmxvYihbdV0pOkJ1ZmZlci5mcm9tKHUpOnV9ZnVuY3Rpb24gcyh1LGMsZil7bGV0IGQ9dTtpZih1JiYhZiYmdHlwZW9mIHU9PSJvYmplY3QiKXtpZihJLmVuZHNXaXRoKGMsInt9IikpYz1yP2M6Yy5zbGljZSgwLC0yKSx1PUpTT04uc3RyaW5naWZ5KHUpO2Vsc2UgaWYoSS5pc0FycmF5KHUpJiZTcih1KXx8KEkuaXNGaWxlTGlzdCh1KXx8SS5lbmRzV2l0aChjLCJbXSIpKSYmKGQ9SS50b0FycmF5KHUpKSlyZXR1cm4gYz14ZShjKSxkLmZvckVhY2goZnVuY3Rpb24oUyxEdCl7IShJLmlzVW5kZWZpbmVkKFMpfHxTPT09bnVsbCkmJmUuYXBwZW5kKG89PT0hMD9MZShbY10sRHQsaSk6bz09PW51bGw/YzpjKyJbXSIsbChTKSl9KSwhMX1yZXR1cm4gWUEodSk/ITA6KGUuYXBwZW5kKExlKGYsYyxpKSxsKHUpKSwhMSl9bGV0IGE9W10sRT1PYmplY3QuYXNzaWduKEZyLHtkZWZhdWx0VmlzaXRvcjpzLGNvbnZlcnRWYWx1ZTpsLGlzVmlzaXRhYmxlOllBfSk7ZnVuY3Rpb24gQih1LGMpe2lmKCFJLmlzVW5kZWZpbmVkKHUpKXtpZihhLmluZGV4T2YodSkhPT0tMSl0aHJvdyBFcnJvcigiQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGluICIrYy5qb2luKCIuIikpO2EucHVzaCh1KSxJLmZvckVhY2godSxmdW5jdGlvbihkLGspeyghKEkuaXNVbmRlZmluZWQoZCl8fGQ9PT1udWxsKSYmbi5jYWxsKGUsZCxJLmlzU3RyaW5nKGspP2sudHJpbSgpOmssYyxFKSk9PT0hMCYmQihkLGM/Yy5jb25jYXQoayk6W2tdKX0pLGEucG9wKCl9fWlmKCFJLmlzT2JqZWN0KEEpKXRocm93IG5ldyBUeXBlRXJyb3IoImRhdGEgbXVzdCBiZSBhbiBvYmplY3QiKTtyZXR1cm4gQihBKSxlfXZhciB4PWtyO2Z1bmN0aW9uIE9lKEEpe2xldCBlPXsiISI6IiUyMSIsIiciOiIlMjciLCIoIjoiJTI4IiwiKSI6IiUyOSIsIn4iOiIlN0UiLCIlMjAiOiIrIiwiJTAwIjoiXDAifTtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEEpLnJlcGxhY2UoL1shJygpfl18JTIwfCUwMC9nLGZ1bmN0aW9uKHIpe3JldHVybiBlW3JdfSl9ZnVuY3Rpb24gUGUoQSxlKXt0aGlzLl9wYWlycz1bXSxBJiZ4KEEsdGhpcyxlKX12YXIgSmU9UGUucHJvdG90eXBlO0plLmFwcGVuZD1mdW5jdGlvbihlLHQpe3RoaXMuX3BhaXJzLnB1c2goW2UsdF0pfTtKZS50b1N0cmluZz1mdW5jdGlvbihlKXtsZXQgdD1lP2Z1bmN0aW9uKHIpe3JldHVybiBlLmNhbGwodGhpcyxyLE9lKX06T2U7cmV0dXJuIHRoaXMuX3BhaXJzLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gdChuWzBdKSsiPSIrdChuWzFdKX0sIiIpLmpvaW4oIiYiKX07dmFyIFFBPVBlO2Z1bmN0aW9uIFJyKEEpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoQSkucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2csIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjAvZywiKyIpLnJlcGxhY2UoLyU1Qi9naSwiWyIpLnJlcGxhY2UoLyU1RC9naSwiXSIpfWZ1bmN0aW9uIEFBKEEsZSx0KXtpZighZSlyZXR1cm4gQTtsZXQgcj10JiZ0LmVuY29kZXx8UnIsbj10JiZ0LnNlcmlhbGl6ZSxpO2lmKG4/aT1uKGUsdCk6aT1JLmlzVVJMU2VhcmNoUGFyYW1zKGUpP2UudG9TdHJpbmcoKTpuZXcgUUEoZSx0KS50b1N0cmluZyhyKSxpKXtsZXQgbz1BLmluZGV4T2YoIiMiKTtvIT09LTEmJihBPUEuc2xpY2UoMCxvKSksQSs9KEEuaW5kZXhPZigiPyIpPT09LTE/Ij8iOiImIikraX1yZXR1cm4gQX12YXIgcUE9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmhhbmRsZXJzPVtdfXVzZShlLHQscil7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOmUscmVqZWN0ZWQ6dCxzeW5jaHJvbm91czpyP3Iuc3luY2hyb25vdXM6ITEscnVuV2hlbjpyP3IucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX1lamVjdChlKXt0aGlzLmhhbmRsZXJzW2VdJiYodGhpcy5oYW5kbGVyc1tlXT1udWxsKX1jbGVhcigpe3RoaXMuaGFuZGxlcnMmJih0aGlzLmhhbmRsZXJzPVtdKX1mb3JFYWNoKGUpe0kuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLGZ1bmN0aW9uKHIpe3IhPT1udWxsJiZlKHIpfSl9fSxLQT1xQTt2YXIgZkE9e3NpbGVudEpTT05QYXJzaW5nOiEwLGZvcmNlZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9O3ZhciBIZT10eXBlb2YgVVJMU2VhcmNoUGFyYW1zPCJ1Ij9VUkxTZWFyY2hQYXJhbXM6UUE7dmFyIE1lPXR5cGVvZiBGb3JtRGF0YTwidSI/Rm9ybURhdGE6bnVsbDt2YXIgWWU9dHlwZW9mIEJsb2I8InUiP0Jsb2I6bnVsbDt2YXIgcWU9e2lzQnJvd3NlcjohMCxjbGFzc2VzOntVUkxTZWFyY2hQYXJhbXM6SGUsRm9ybURhdGE6TWUsQmxvYjpZZX0scHJvdG9jb2xzOlsiaHR0cCIsImh0dHBzIiwiZmlsZSIsImJsb2IiLCJ1cmwiLCJkYXRhIl19O3ZhciBXQT17fTtGdChXQSx7aGFzQnJvd3NlckVudjooKT0+S2UsaGFzU3RhbmRhcmRCcm93c2VyRW52OigpPT5icixoYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnY6KCk9PlVyfSk7dmFyIEtlPXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2YgZG9jdW1lbnQ8InUiLGJyPShBPT5LZSYmWyJSZWFjdE5hdGl2ZSIsIk5hdGl2ZVNjcmlwdCIsIk5TIl0uaW5kZXhPZihBKTwwKSh0eXBlb2YgbmF2aWdhdG9yPCJ1IiYmbmF2aWdhdG9yLnByb2R1Y3QpLFVyPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZTwidSImJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSYmdHlwZW9mIHNlbGYuaW1wb3J0U2NyaXB0cz09ImZ1bmN0aW9uIjt2YXIgdz17Li4uV0EsLi4ucWV9O2Z1bmN0aW9uIHZBKEEsZSl7cmV0dXJuIHgoQSxuZXcgdy5jbGFzc2VzLlVSTFNlYXJjaFBhcmFtcyxPYmplY3QuYXNzaWduKHt2aXNpdG9yOmZ1bmN0aW9uKHQscixuLGkpe3JldHVybiB3LmlzTm9kZSYmSS5pc0J1ZmZlcih0KT8odGhpcy5hcHBlbmQocix0LnRvU3RyaW5nKCJiYXNlNjQiKSksITEpOmkuZGVmYXVsdFZpc2l0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sZSkpfWZ1bmN0aW9uIE5yKEEpe3JldHVybiBJLm1hdGNoQWxsKC9cdyt8XFsoXHcqKV0vZyxBKS5tYXAoZT0+ZVswXT09PSJbXSI/IiI6ZVsxXXx8ZVswXSl9ZnVuY3Rpb24gR3IoQSl7bGV0IGU9e30sdD1PYmplY3Qua2V5cyhBKSxyLG49dC5sZW5ndGgsaTtmb3Iocj0wO3I8bjtyKyspaT10W3JdLGVbaV09QVtpXTtyZXR1cm4gZX1mdW5jdGlvbiBUcihBKXtmdW5jdGlvbiBlKHQscixuLGkpe2xldCBvPXRbaSsrXSxnPU51bWJlci5pc0Zpbml0ZSgrbyksQz1pPj10Lmxlbmd0aDtyZXR1cm4gbz0hbyYmSS5pc0FycmF5KG4pP24ubGVuZ3RoOm8sQz8oSS5oYXNPd25Qcm9wKG4sbyk/bltvXT1bbltvXSxyXTpuW29dPXIsIWcpOigoIW5bb118fCFJLmlzT2JqZWN0KG5bb10pKSYmKG5bb109W10pLGUodCxyLG5bb10saSkmJkkuaXNBcnJheShuW29dKSYmKG5bb109R3IobltvXSkpLCFnKX1pZihJLmlzRm9ybURhdGEoQSkmJkkuaXNGdW5jdGlvbihBLmVudHJpZXMpKXtsZXQgdD17fTtyZXR1cm4gSS5mb3JFYWNoRW50cnkoQSwocixuKT0+e2UoTnIociksbix0LDApfSksdH1yZXR1cm4gbnVsbH12YXIgcEE9VHI7ZnVuY3Rpb24gTHIoQSxlLHQpe2lmKEkuaXNTdHJpbmcoQSkpdHJ5e3JldHVybihlfHxKU09OLnBhcnNlKShBKSxJLnRyaW0oQSl9Y2F0Y2gocil7aWYoci5uYW1lIT09IlN5bnRheEVycm9yIil0aHJvdyByfXJldHVybih0fHxKU09OLnN0cmluZ2lmeSkoQSl9dmFyIGpBPXt0cmFuc2l0aW9uYWw6ZkEsYWRhcHRlcjpbInhociIsImh0dHAiXSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbihlLHQpe2xldCByPXQuZ2V0Q29udGVudFR5cGUoKXx8IiIsbj1yLmluZGV4T2YoImFwcGxpY2F0aW9uL2pzb24iKT4tMSxpPUkuaXNPYmplY3QoZSk7aWYoaSYmSS5pc0hUTUxGb3JtKGUpJiYoZT1uZXcgRm9ybURhdGEoZSkpLEkuaXNGb3JtRGF0YShlKSlyZXR1cm4gbiYmbj9KU09OLnN0cmluZ2lmeShwQShlKSk6ZTtpZihJLmlzQXJyYXlCdWZmZXIoZSl8fEkuaXNCdWZmZXIoZSl8fEkuaXNTdHJlYW0oZSl8fEkuaXNGaWxlKGUpfHxJLmlzQmxvYihlKSlyZXR1cm4gZTtpZihJLmlzQXJyYXlCdWZmZXJWaWV3KGUpKXJldHVybiBlLmJ1ZmZlcjtpZihJLmlzVVJMU2VhcmNoUGFyYW1zKGUpKXJldHVybiB0LnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIsITEpLGUudG9TdHJpbmcoKTtsZXQgZztpZihpKXtpZihyLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpPi0xKXJldHVybiB2QShlLHRoaXMuZm9ybVNlcmlhbGl6ZXIpLnRvU3RyaW5nKCk7aWYoKGc9SS5pc0ZpbGVMaXN0KGUpKXx8ci5pbmRleE9mKCJtdWx0aXBhcnQvZm9ybS1kYXRhIik+LTEpe2xldCBDPXRoaXMuZW52JiZ0aGlzLmVudi5Gb3JtRGF0YTtyZXR1cm4geChnP3siZmlsZXNbXSI6ZX06ZSxDJiZuZXcgQyx0aGlzLmZvcm1TZXJpYWxpemVyKX19cmV0dXJuIGl8fG4/KHQuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL2pzb24iLCExKSxMcihlKSk6ZX1dLHRyYW5zZm9ybVJlc3BvbnNlOltmdW5jdGlvbihlKXtsZXQgdD10aGlzLnRyYW5zaXRpb25hbHx8akEudHJhbnNpdGlvbmFsLHI9dCYmdC5mb3JjZWRKU09OUGFyc2luZyxuPXRoaXMucmVzcG9uc2VUeXBlPT09Impzb24iO2lmKGUmJkkuaXNTdHJpbmcoZSkmJihyJiYhdGhpcy5yZXNwb25zZVR5cGV8fG4pKXtsZXQgbz0hKHQmJnQuc2lsZW50SlNPTlBhcnNpbmcpJiZuO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShlKX1jYXRjaChnKXtpZihvKXRocm93IGcubmFtZT09PSJTeW50YXhFcnJvciI/cC5mcm9tKGcscC5FUlJfQkFEX1JFU1BPTlNFLHRoaXMsbnVsbCx0aGlzLnJlc3BvbnNlKTpnfX1yZXR1cm4gZX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSxtYXhCb2R5TGVuZ3RoOi0xLGVudjp7Rm9ybURhdGE6dy5jbGFzc2VzLkZvcm1EYXRhLEJsb2I6dy5jbGFzc2VzLkJsb2J9LHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0yMDAmJmU8MzAwfSxoZWFkZXJzOntjb21tb246e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIiwiQ29udGVudC1UeXBlIjp2b2lkIDB9fX07SS5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCJdLEE9PntqQS5oZWFkZXJzW0FdPXt9fSk7dmFyIFc9akE7dmFyIHhyPUkudG9PYmplY3RTZXQoWyJhZ2UiLCJhdXRob3JpemF0aW9uIiwiY29udGVudC1sZW5ndGgiLCJjb250ZW50LXR5cGUiLCJldGFnIiwiZXhwaXJlcyIsImZyb20iLCJob3N0IiwiaWYtbW9kaWZpZWQtc2luY2UiLCJpZi11bm1vZGlmaWVkLXNpbmNlIiwibGFzdC1tb2RpZmllZCIsImxvY2F0aW9uIiwibWF4LWZvcndhcmRzIiwicHJveHktYXV0aG9yaXphdGlvbiIsInJlZmVyZXIiLCJyZXRyeS1hZnRlciIsInVzZXItYWdlbnQiXSksV2U9QT0+e2xldCBlPXt9LHQscixuO3JldHVybiBBJiZBLnNwbGl0KGAKYCkuZm9yRWFjaChmdW5jdGlvbihvKXtuPW8uaW5kZXhPZigiOiIpLHQ9by5zdWJzdHJpbmcoMCxuKS50cmltKCkudG9Mb3dlckNhc2UoKSxyPW8uc3Vic3RyaW5nKG4rMSkudHJpbSgpLCEoIXR8fGVbdF0mJnhyW3RdKSYmKHQ9PT0ic2V0LWNvb2tpZSI/ZVt0XT9lW3RdLnB1c2gocik6ZVt0XT1bcl06ZVt0XT1lW3RdP2VbdF0rIiwgIityOnIpfSksZX07dmFyIHZlPVN5bWJvbCgiaW50ZXJuYWxzIik7ZnVuY3Rpb24gZUEoQSl7cmV0dXJuIEEmJlN0cmluZyhBKS50cmltKCkudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBkQShBKXtyZXR1cm4gQT09PSExfHxBPT1udWxsP0E6SS5pc0FycmF5KEEpP0EubWFwKGRBKTpTdHJpbmcoQSl9ZnVuY3Rpb24gT3IoQSl7bGV0IGU9T2JqZWN0LmNyZWF0ZShudWxsKSx0PS8oW15ccyw7PV0rKVxzKig/Oj1ccyooW14sO10rKSk/L2cscjtmb3IoO3I9dC5leGVjKEEpOyllW3JbMV1dPXJbMl07cmV0dXJuIGV9dmFyIFByPUE9Pi9eWy1fYS16QS1aMC05XmB8fiwhIyQlJicqKy5dKyQvLnRlc3QoQS50cmltKCkpO2Z1bmN0aW9uIF9BKEEsZSx0LHIsbil7aWYoSS5pc0Z1bmN0aW9uKHIpKXJldHVybiByLmNhbGwodGhpcyxlLHQpO2lmKG4mJihlPXQpLCEhSS5pc1N0cmluZyhlKSl7aWYoSS5pc1N0cmluZyhyKSlyZXR1cm4gZS5pbmRleE9mKHIpIT09LTE7aWYoSS5pc1JlZ0V4cChyKSlyZXR1cm4gci50ZXN0KGUpfX1mdW5jdGlvbiBKcihBKXtyZXR1cm4gQS50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8oW2EtelxkXSkoXHcqKS9nLChlLHQscik9PnQudG9VcHBlckNhc2UoKStyKX1mdW5jdGlvbiBIcihBLGUpe2xldCB0PUkudG9DYW1lbENhc2UoIiAiK2UpO1siZ2V0Iiwic2V0IiwiaGFzIl0uZm9yRWFjaChyPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KEEscit0LHt2YWx1ZTpmdW5jdGlvbihuLGksbyl7cmV0dXJuIHRoaXNbcl0uY2FsbCh0aGlzLGUsbixpLG8pfSxjb25maWd1cmFibGU6ITB9KX0pfXZhciB2PWNsYXNze2NvbnN0cnVjdG9yKGUpe2UmJnRoaXMuc2V0KGUpfXNldChlLHQscil7bGV0IG49dGhpcztmdW5jdGlvbiBpKGcsQyxsKXtsZXQgcz1lQShDKTtpZighcyl0aHJvdyBuZXcgRXJyb3IoImhlYWRlciBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nIik7bGV0IGE9SS5maW5kS2V5KG4scyk7KCFhfHxuW2FdPT09dm9pZCAwfHxsPT09ITB8fGw9PT12b2lkIDAmJm5bYV0hPT0hMSkmJihuW2F8fENdPWRBKGcpKX1sZXQgbz0oZyxDKT0+SS5mb3JFYWNoKGcsKGwscyk9PmkobCxzLEMpKTtyZXR1cm4gSS5pc1BsYWluT2JqZWN0KGUpfHxlIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9vKGUsdCk6SS5pc1N0cmluZyhlKSYmKGU9ZS50cmltKCkpJiYhUHIoZSk/byhXZShlKSx0KTplIT1udWxsJiZpKHQsZSxyKSx0aGlzfWdldChlLHQpe2lmKGU9ZUEoZSksZSl7bGV0IHI9SS5maW5kS2V5KHRoaXMsZSk7aWYocil7bGV0IG49dGhpc1tyXTtpZighdClyZXR1cm4gbjtpZih0PT09ITApcmV0dXJuIE9yKG4pO2lmKEkuaXNGdW5jdGlvbih0KSlyZXR1cm4gdC5jYWxsKHRoaXMsbixyKTtpZihJLmlzUmVnRXhwKHQpKXJldHVybiB0LmV4ZWMobik7dGhyb3cgbmV3IFR5cGVFcnJvcigicGFyc2VyIG11c3QgYmUgYm9vbGVhbnxyZWdleHB8ZnVuY3Rpb24iKX19fWhhcyhlLHQpe2lmKGU9ZUEoZSksZSl7bGV0IHI9SS5maW5kS2V5KHRoaXMsZSk7cmV0dXJuISEociYmdGhpc1tyXSE9PXZvaWQgMCYmKCF0fHxfQSh0aGlzLHRoaXNbcl0scix0KSkpfXJldHVybiExfWRlbGV0ZShlLHQpe2xldCByPXRoaXMsbj0hMTtmdW5jdGlvbiBpKG8pe2lmKG89ZUEobyksbyl7bGV0IGc9SS5maW5kS2V5KHIsbyk7ZyYmKCF0fHxfQShyLHJbZ10sZyx0KSkmJihkZWxldGUgcltnXSxuPSEwKX19cmV0dXJuIEkuaXNBcnJheShlKT9lLmZvckVhY2goaSk6aShlKSxufWNsZWFyKGUpe2xldCB0PU9iamVjdC5rZXlzKHRoaXMpLHI9dC5sZW5ndGgsbj0hMTtmb3IoO3ItLTspe2xldCBpPXRbcl07KCFlfHxfQSh0aGlzLHRoaXNbaV0saSxlLCEwKSkmJihkZWxldGUgdGhpc1tpXSxuPSEwKX1yZXR1cm4gbn1ub3JtYWxpemUoZSl7bGV0IHQ9dGhpcyxyPXt9O3JldHVybiBJLmZvckVhY2godGhpcywobixpKT0+e2xldCBvPUkuZmluZEtleShyLGkpO2lmKG8pe3Rbb109ZEEobiksZGVsZXRlIHRbaV07cmV0dXJufWxldCBnPWU/SnIoaSk6U3RyaW5nKGkpLnRyaW0oKTtnIT09aSYmZGVsZXRlIHRbaV0sdFtnXT1kQShuKSxyW2ddPSEwfSksdGhpc31jb25jYXQoLi4uZSl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY29uY2F0KHRoaXMsLi4uZSl9dG9KU09OKGUpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIEkuZm9yRWFjaCh0aGlzLChyLG4pPT57ciE9bnVsbCYmciE9PSExJiYodFtuXT1lJiZJLmlzQXJyYXkocik/ci5qb2luKCIsICIpOnIpfSksdH1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKVtTeW1ib2wuaXRlcmF0b3JdKCl9dG9TdHJpbmcoKXtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSkubWFwKChbZSx0XSk9PmUrIjogIit0KS5qb2luKGAKYCl9Z2V0W1N5bWJvbC50b1N0cmluZ1RhZ10oKXtyZXR1cm4iQXhpb3NIZWFkZXJzIn1zdGF0aWMgZnJvbShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHRoaXM/ZTpuZXcgdGhpcyhlKX1zdGF0aWMgY29uY2F0KGUsLi4udCl7bGV0IHI9bmV3IHRoaXMoZSk7cmV0dXJuIHQuZm9yRWFjaChuPT5yLnNldChuKSkscn1zdGF0aWMgYWNjZXNzb3IoZSl7bGV0IHI9KHRoaXNbdmVdPXRoaXNbdmVdPXthY2Nlc3NvcnM6e319KS5hY2Nlc3NvcnMsbj10aGlzLnByb3RvdHlwZTtmdW5jdGlvbiBpKG8pe2xldCBnPWVBKG8pO3JbZ118fChIcihuLG8pLHJbZ109ITApfXJldHVybiBJLmlzQXJyYXkoZSk/ZS5mb3JFYWNoKGkpOmkoZSksdGhpc319O3YuYWNjZXNzb3IoWyJDb250ZW50LVR5cGUiLCJDb250ZW50LUxlbmd0aCIsIkFjY2VwdCIsIkFjY2VwdC1FbmNvZGluZyIsIlVzZXItQWdlbnQiLCJBdXRob3JpemF0aW9uIl0pO0kucmVkdWNlRGVzY3JpcHRvcnModi5wcm90b3R5cGUsKHt2YWx1ZTpBfSxlKT0+e2xldCB0PWVbMF0udG9VcHBlckNhc2UoKStlLnNsaWNlKDEpO3JldHVybntnZXQ6KCk9PkEsc2V0KHIpe3RoaXNbdF09cn19fSk7SS5mcmVlemVNZXRob2RzKHYpO3ZhciBEPXY7ZnVuY3Rpb24gdEEoQSxlKXtsZXQgdD10aGlzfHxXLHI9ZXx8dCxuPUQuZnJvbShyLmhlYWRlcnMpLGk9ci5kYXRhO3JldHVybiBJLmZvckVhY2goQSxmdW5jdGlvbihnKXtpPWcuY2FsbCh0LGksbi5ub3JtYWxpemUoKSxlP2Uuc3RhdHVzOnZvaWQgMCl9KSxuLm5vcm1hbGl6ZSgpLGl9ZnVuY3Rpb24gckEoQSl7cmV0dXJuISEoQSYmQS5fX0NBTkNFTF9fKX1mdW5jdGlvbiBqZShBLGUsdCl7cC5jYWxsKHRoaXMsQT8/ImNhbmNlbGVkIixwLkVSUl9DQU5DRUxFRCxlLHQpLHRoaXMubmFtZT0iQ2FuY2VsZWRFcnJvciJ9SS5pbmhlcml0cyhqZSxwLHtfX0NBTkNFTF9fOiEwfSk7dmFyIE89amU7ZnVuY3Rpb24gekEoQSxlLHQpe2xldCByPXQuY29uZmlnLnZhbGlkYXRlU3RhdHVzOyF0LnN0YXR1c3x8IXJ8fHIodC5zdGF0dXMpP0EodCk6ZShuZXcgcCgiUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK3Quc3RhdHVzLFtwLkVSUl9CQURfUkVRVUVTVCxwLkVSUl9CQURfUkVTUE9OU0VdW01hdGguZmxvb3IodC5zdGF0dXMvMTAwKS00XSx0LmNvbmZpZyx0LnJlcXVlc3QsdCkpfXZhciBfZT13Lmhhc1N0YW5kYXJkQnJvd3NlckVudj97d3JpdGUoQSxlLHQscixuLGkpe2xldCBvPVtBKyI9IitlbmNvZGVVUklDb21wb25lbnQoZSldO0kuaXNOdW1iZXIodCkmJm8ucHVzaCgiZXhwaXJlcz0iK25ldyBEYXRlKHQpLnRvR01UU3RyaW5nKCkpLEkuaXNTdHJpbmcocikmJm8ucHVzaCgicGF0aD0iK3IpLEkuaXNTdHJpbmcobikmJm8ucHVzaCgiZG9tYWluPSIrbiksaT09PSEwJiZvLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1vLmpvaW4oIjsgIil9LHJlYWQoQSl7bGV0IGU9ZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoIihefDtcXHMqKSgiK0ErIik9KFteO10qKSIpKTtyZXR1cm4gZT9kZWNvZGVVUklDb21wb25lbnQoZVszXSk6bnVsbH0scmVtb3ZlKEEpe3RoaXMud3JpdGUoQSwiIixEYXRlLm5vdygpLTg2NGU1KX19Ont3cml0ZSgpe30scmVhZCgpe3JldHVybiBudWxsfSxyZW1vdmUoKXt9fTtmdW5jdGlvbiBWQShBKXtyZXR1cm4vXihbYS16XVthLXpcZCtcLS5dKjopP1wvXC8vaS50ZXN0KEEpfWZ1bmN0aW9uIFpBKEEsZSl7cmV0dXJuIGU/QS5yZXBsYWNlKC9cLyskLywiIikrIi8iK2UucmVwbGFjZSgvXlwvKy8sIiIpOkF9ZnVuY3Rpb24gaUEoQSxlKXtyZXR1cm4gQSYmIVZBKGUpP1pBKEEsZSk6ZX12YXIgemU9dy5oYXNTdGFuZGFyZEJyb3dzZXJFbnY/ZnVuY3Rpb24oKXtsZXQgZT0vKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpLHI7ZnVuY3Rpb24gbihpKXtsZXQgbz1pO3JldHVybiBlJiYodC5zZXRBdHRyaWJ1dGUoImhyZWYiLG8pLG89dC5ocmVmKSx0LnNldEF0dHJpYnV0ZSgiaHJlZiIsbykse2hyZWY6dC5ocmVmLHByb3RvY29sOnQucHJvdG9jb2w/dC5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6dC5ob3N0LHNlYXJjaDp0LnNlYXJjaD90LnNlYXJjaC5yZXBsYWNlKC9eXD8vLCIiKToiIixoYXNoOnQuaGFzaD90Lmhhc2gucmVwbGFjZSgvXiMvLCIiKToiIixob3N0bmFtZTp0Lmhvc3RuYW1lLHBvcnQ6dC5wb3J0LHBhdGhuYW1lOnQucGF0aG5hbWUuY2hhckF0KDApPT09Ii8iP3QucGF0aG5hbWU6Ii8iK3QucGF0aG5hbWV9fXJldHVybiByPW4od2luZG93LmxvY2F0aW9uLmhyZWYpLGZ1bmN0aW9uKG8pe2xldCBnPUkuaXNTdHJpbmcobyk/bihvKTpvO3JldHVybiBnLnByb3RvY29sPT09ci5wcm90b2NvbCYmZy5ob3N0PT09ci5ob3N0fX0oKTpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiEwfX0oKTtmdW5jdGlvbiBYQShBKXtsZXQgZT0vXihbLStcd117MSwyNX0pKDo/XC9cL3w6KS8uZXhlYyhBKTtyZXR1cm4gZSYmZVsxXXx8IiJ9ZnVuY3Rpb24gTXIoQSxlKXtBPUF8fDEwO2xldCB0PW5ldyBBcnJheShBKSxyPW5ldyBBcnJheShBKSxuPTAsaT0wLG87cmV0dXJuIGU9ZSE9PXZvaWQgMD9lOjFlMyxmdW5jdGlvbihDKXtsZXQgbD1EYXRlLm5vdygpLHM9cltpXTtvfHwobz1sKSx0W25dPUMscltuXT1sO2xldCBhPWksRT0wO2Zvcig7YSE9PW47KUUrPXRbYSsrXSxhPWElQTtpZihuPShuKzEpJUEsbj09PWkmJihpPShpKzEpJUEpLGwtbzxlKXJldHVybjtsZXQgQj1zJiZsLXM7cmV0dXJuIEI/TWF0aC5yb3VuZChFKjFlMy9CKTp2b2lkIDB9fXZhciBWZT1NcjtmdW5jdGlvbiBaZShBLGUpe2xldCB0PTAscj1WZSg1MCwyNTApO3JldHVybiBuPT57bGV0IGk9bi5sb2FkZWQsbz1uLmxlbmd0aENvbXB1dGFibGU/bi50b3RhbDp2b2lkIDAsZz1pLXQsQz1yKGcpLGw9aTw9bzt0PWk7bGV0IHM9e2xvYWRlZDppLHRvdGFsOm8scHJvZ3Jlc3M6bz9pL286dm9pZCAwLGJ5dGVzOmcscmF0ZTpDfHx2b2lkIDAsZXN0aW1hdGVkOkMmJm8mJmw/KG8taSkvQzp2b2lkIDAsZXZlbnQ6bn07c1tlPyJkb3dubG9hZCI6InVwbG9hZCJdPSEwLEEocyl9fXZhciBZcj10eXBlb2YgWE1MSHR0cFJlcXVlc3Q8InUiLFhlPVlyJiZmdW5jdGlvbihBKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odCxyKXtsZXQgbj1BLmRhdGEsaT1ELmZyb20oQS5oZWFkZXJzKS5ub3JtYWxpemUoKSx7cmVzcG9uc2VUeXBlOm8sd2l0aFhTUkZUb2tlbjpnfT1BLEM7ZnVuY3Rpb24gbCgpe0EuY2FuY2VsVG9rZW4mJkEuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUoQyksQS5zaWduYWwmJkEuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixDKX1sZXQgcztpZihJLmlzRm9ybURhdGEobikpe2lmKHcuaGFzU3RhbmRhcmRCcm93c2VyRW52fHx3Lmhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudilpLnNldENvbnRlbnRUeXBlKCExKTtlbHNlIGlmKChzPWkuZ2V0Q29udGVudFR5cGUoKSkhPT0hMSl7bGV0W2MsLi4uZl09cz9zLnNwbGl0KCI7IikubWFwKGQ9PmQudHJpbSgpKS5maWx0ZXIoQm9vbGVhbik6W107aS5zZXRDb250ZW50VHlwZShbY3x8Im11bHRpcGFydC9mb3JtLWRhdGEiLC4uLmZdLmpvaW4oIjsgIikpfX1sZXQgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoQS5hdXRoKXtsZXQgYz1BLmF1dGgudXNlcm5hbWV8fCIiLGY9QS5hdXRoLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChBLmF1dGgucGFzc3dvcmQpKToiIjtpLnNldCgiQXV0aG9yaXphdGlvbiIsIkJhc2ljICIrYnRvYShjKyI6IitmKSl9bGV0IEU9aUEoQS5iYXNlVVJMLEEudXJsKTthLm9wZW4oQS5tZXRob2QudG9VcHBlckNhc2UoKSxBQShFLEEucGFyYW1zLEEucGFyYW1zU2VyaWFsaXplciksITApLGEudGltZW91dD1BLnRpbWVvdXQ7ZnVuY3Rpb24gQigpe2lmKCFhKXJldHVybjtsZXQgYz1ELmZyb20oImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiBhJiZhLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSxkPXtkYXRhOiFvfHxvPT09InRleHQifHxvPT09Impzb24iP2EucmVzcG9uc2VUZXh0OmEucmVzcG9uc2Usc3RhdHVzOmEuc3RhdHVzLHN0YXR1c1RleHQ6YS5zdGF0dXNUZXh0LGhlYWRlcnM6Yyxjb25maWc6QSxyZXF1ZXN0OmF9O3pBKGZ1bmN0aW9uKFMpe3QoUyksbCgpfSxmdW5jdGlvbihTKXtyKFMpLGwoKX0sZCksYT1udWxsfWlmKCJvbmxvYWRlbmQiaW4gYT9hLm9ubG9hZGVuZD1COmEub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7IWF8fGEucmVhZHlTdGF0ZSE9PTR8fGEuc3RhdHVzPT09MCYmIShhLnJlc3BvbnNlVVJMJiZhLnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6Iik9PT0wKXx8c2V0VGltZW91dChCKX0sYS5vbmFib3J0PWZ1bmN0aW9uKCl7YSYmKHIobmV3IHAoIlJlcXVlc3QgYWJvcnRlZCIscC5FQ09OTkFCT1JURUQsQSxhKSksYT1udWxsKX0sYS5vbmVycm9yPWZ1bmN0aW9uKCl7cihuZXcgcCgiTmV0d29yayBFcnJvciIscC5FUlJfTkVUV09SSyxBLGEpKSxhPW51bGx9LGEub250aW1lb3V0PWZ1bmN0aW9uKCl7bGV0IGY9QS50aW1lb3V0PyJ0aW1lb3V0IG9mICIrQS50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiLGQ9QS50cmFuc2l0aW9uYWx8fGZBO0EudGltZW91dEVycm9yTWVzc2FnZSYmKGY9QS50aW1lb3V0RXJyb3JNZXNzYWdlKSxyKG5ldyBwKGYsZC5jbGFyaWZ5VGltZW91dEVycm9yP3AuRVRJTUVET1VUOnAuRUNPTk5BQk9SVEVELEEsYSkpLGE9bnVsbH0sdy5oYXNTdGFuZGFyZEJyb3dzZXJFbnYmJihnJiZJLmlzRnVuY3Rpb24oZykmJihnPWcoQSkpLGd8fGchPT0hMSYmemUoRSkpKXtsZXQgYz1BLnhzcmZIZWFkZXJOYW1lJiZBLnhzcmZDb29raWVOYW1lJiZfZS5yZWFkKEEueHNyZkNvb2tpZU5hbWUpO2MmJmkuc2V0KEEueHNyZkhlYWRlck5hbWUsYyl9bj09PXZvaWQgMCYmaS5zZXRDb250ZW50VHlwZShudWxsKSwic2V0UmVxdWVzdEhlYWRlciJpbiBhJiZJLmZvckVhY2goaS50b0pTT04oKSxmdW5jdGlvbihmLGQpe2Euc2V0UmVxdWVzdEhlYWRlcihkLGYpfSksSS5pc1VuZGVmaW5lZChBLndpdGhDcmVkZW50aWFscyl8fChhLndpdGhDcmVkZW50aWFscz0hIUEud2l0aENyZWRlbnRpYWxzKSxvJiZvIT09Impzb24iJiYoYS5yZXNwb25zZVR5cGU9QS5yZXNwb25zZVR5cGUpLHR5cGVvZiBBLm9uRG93bmxvYWRQcm9ncmVzcz09ImZ1bmN0aW9uIiYmYS5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsWmUoQS5vbkRvd25sb2FkUHJvZ3Jlc3MsITApKSx0eXBlb2YgQS5vblVwbG9hZFByb2dyZXNzPT0iZnVuY3Rpb24iJiZhLnVwbG9hZCYmYS51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLFplKEEub25VcGxvYWRQcm9ncmVzcykpLChBLmNhbmNlbFRva2VufHxBLnNpZ25hbCkmJihDPWM9PnthJiYocighY3x8Yy50eXBlP25ldyBPKG51bGwsQSxhKTpjKSxhLmFib3J0KCksYT1udWxsKX0sQS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUoQyksQS5zaWduYWwmJihBLnNpZ25hbC5hYm9ydGVkP0MoKTpBLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsQykpKTtsZXQgdT1YQShFKTtpZih1JiZ3LnByb3RvY29scy5pbmRleE9mKHUpPT09LTEpe3IobmV3IHAoIlVuc3VwcG9ydGVkIHByb3RvY29sICIrdSsiOiIscC5FUlJfQkFEX1JFUVVFU1QsQSkpO3JldHVybn1hLnNlbmQobnx8bnVsbCl9KX07dmFyICRBPXtodHRwOkVBLHhocjpYZX07SS5mb3JFYWNoKCRBLChBLGUpPT57aWYoQSl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJuYW1lIix7dmFsdWU6ZX0pfWNhdGNoe31PYmplY3QuZGVmaW5lUHJvcGVydHkoQSwiYWRhcHRlck5hbWUiLHt2YWx1ZTplfSl9fSk7dmFyICRlPUE9PmAtICR7QX1gLHFyPUE9PkkuaXNGdW5jdGlvbihBKXx8QT09PW51bGx8fEE9PT0hMSxtQT17Z2V0QWRhcHRlcjpBPT57QT1JLmlzQXJyYXkoQSk/QTpbQV07bGV0e2xlbmd0aDplfT1BLHQscixuPXt9O2ZvcihsZXQgaT0wO2k8ZTtpKyspe3Q9QVtpXTtsZXQgbztpZihyPXQsIXFyKHQpJiYocj0kQVsobz1TdHJpbmcodCkpLnRvTG93ZXJDYXNlKCldLHI9PT12b2lkIDApKXRocm93IG5ldyBwKGBVbmtub3duIGFkYXB0ZXIgJyR7b30nYCk7aWYocilicmVhaztuW298fCIjIitpXT1yfWlmKCFyKXtsZXQgaT1PYmplY3QuZW50cmllcyhuKS5tYXAoKFtnLENdKT0+YGFkYXB0ZXIgJHtnfSBgKyhDPT09ITE/ImlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGVudmlyb25tZW50IjoiaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgYnVpbGQiKSksbz1lP2kubGVuZ3RoPjE/YHNpbmNlIDoKYCtpLm1hcCgkZSkuam9pbihgCmApOiIgIiskZShpWzBdKToiYXMgbm8gYWRhcHRlciBzcGVjaWZpZWQiO3Rocm93IG5ldyBwKCJUaGVyZSBpcyBubyBzdWl0YWJsZSBhZGFwdGVyIHRvIGRpc3BhdGNoIHRoZSByZXF1ZXN0ICIrbywiRVJSX05PVF9TVVBQT1JUIil9cmV0dXJuIHJ9LGFkYXB0ZXJzOiRBfTtmdW5jdGlvbiBBZShBKXtpZihBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxBLnNpZ25hbCYmQS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgTyhudWxsLEEpfWZ1bmN0aW9uIGhBKEEpe3JldHVybiBBZShBKSxBLmhlYWRlcnM9RC5mcm9tKEEuaGVhZGVycyksQS5kYXRhPXRBLmNhbGwoQSxBLnRyYW5zZm9ybVJlcXVlc3QpLFsicG9zdCIsInB1dCIsInBhdGNoIl0uaW5kZXhPZihBLm1ldGhvZCkhPT0tMSYmQS5oZWFkZXJzLnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLCExKSxtQS5nZXRBZGFwdGVyKEEuYWRhcHRlcnx8Vy5hZGFwdGVyKShBKS50aGVuKGZ1bmN0aW9uKHIpe3JldHVybiBBZShBKSxyLmRhdGE9dEEuY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2Usciksci5oZWFkZXJzPUQuZnJvbShyLmhlYWRlcnMpLHJ9LGZ1bmN0aW9uKHIpe3JldHVybiByQShyKXx8KEFlKEEpLHImJnIucmVzcG9uc2UmJihyLnJlc3BvbnNlLmRhdGE9dEEuY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2Usci5yZXNwb25zZSksci5yZXNwb25zZS5oZWFkZXJzPUQuZnJvbShyLnJlc3BvbnNlLmhlYWRlcnMpKSksUHJvbWlzZS5yZWplY3Qocil9KX12YXIgQXQ9QT0+QSBpbnN0YW5jZW9mIEQ/QS50b0pTT04oKTpBO2Z1bmN0aW9uIFQoQSxlKXtlPWV8fHt9O2xldCB0PXt9O2Z1bmN0aW9uIHIobCxzLGEpe3JldHVybiBJLmlzUGxhaW5PYmplY3QobCkmJkkuaXNQbGFpbk9iamVjdChzKT9JLm1lcmdlLmNhbGwoe2Nhc2VsZXNzOmF9LGwscyk6SS5pc1BsYWluT2JqZWN0KHMpP0kubWVyZ2Uoe30scyk6SS5pc0FycmF5KHMpP3Muc2xpY2UoKTpzfWZ1bmN0aW9uIG4obCxzLGEpe2lmKEkuaXNVbmRlZmluZWQocykpe2lmKCFJLmlzVW5kZWZpbmVkKGwpKXJldHVybiByKHZvaWQgMCxsLGEpfWVsc2UgcmV0dXJuIHIobCxzLGEpfWZ1bmN0aW9uIGkobCxzKXtpZighSS5pc1VuZGVmaW5lZChzKSlyZXR1cm4gcih2b2lkIDAscyl9ZnVuY3Rpb24gbyhsLHMpe2lmKEkuaXNVbmRlZmluZWQocykpe2lmKCFJLmlzVW5kZWZpbmVkKGwpKXJldHVybiByKHZvaWQgMCxsKX1lbHNlIHJldHVybiByKHZvaWQgMCxzKX1mdW5jdGlvbiBnKGwscyxhKXtpZihhIGluIGUpcmV0dXJuIHIobCxzKTtpZihhIGluIEEpcmV0dXJuIHIodm9pZCAwLGwpfWxldCBDPXt1cmw6aSxtZXRob2Q6aSxkYXRhOmksYmFzZVVSTDpvLHRyYW5zZm9ybVJlcXVlc3Q6byx0cmFuc2Zvcm1SZXNwb25zZTpvLHBhcmFtc1NlcmlhbGl6ZXI6byx0aW1lb3V0Om8sdGltZW91dE1lc3NhZ2U6byx3aXRoQ3JlZGVudGlhbHM6byx3aXRoWFNSRlRva2VuOm8sYWRhcHRlcjpvLHJlc3BvbnNlVHlwZTpvLHhzcmZDb29raWVOYW1lOm8seHNyZkhlYWRlck5hbWU6byxvblVwbG9hZFByb2dyZXNzOm8sb25Eb3dubG9hZFByb2dyZXNzOm8sZGVjb21wcmVzczpvLG1heENvbnRlbnRMZW5ndGg6byxtYXhCb2R5TGVuZ3RoOm8sYmVmb3JlUmVkaXJlY3Q6byx0cmFuc3BvcnQ6byxodHRwQWdlbnQ6byxodHRwc0FnZW50Om8sY2FuY2VsVG9rZW46byxzb2NrZXRQYXRoOm8scmVzcG9uc2VFbmNvZGluZzpvLHZhbGlkYXRlU3RhdHVzOmcsaGVhZGVyczoobCxzKT0+bihBdChsKSxBdChzKSwhMCl9O3JldHVybiBJLmZvckVhY2goT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxBLGUpKSxmdW5jdGlvbihzKXtsZXQgYT1DW3NdfHxuLEU9YShBW3NdLGVbc10scyk7SS5pc1VuZGVmaW5lZChFKSYmYSE9PWd8fCh0W3NdPUUpfSksdH12YXIgeUE9IjEuNi4yIjt2YXIgZWU9e307WyJvYmplY3QiLCJib29sZWFuIiwibnVtYmVyIiwiZnVuY3Rpb24iLCJzdHJpbmciLCJzeW1ib2wiXS5mb3JFYWNoKChBLGUpPT57ZWVbQV09ZnVuY3Rpb24ocil7cmV0dXJuIHR5cGVvZiByPT09QXx8ImEiKyhlPDE/Im4gIjoiICIpK0F9fSk7dmFyIGV0PXt9O2VlLnRyYW5zaXRpb25hbD1mdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbihpLG8pe3JldHVybiJbQXhpb3MgdiIreUErIl0gVHJhbnNpdGlvbmFsIG9wdGlvbiAnIitpKyInIitvKyhyPyIuICIrcjoiIil9cmV0dXJuKGksbyxnKT0+e2lmKGU9PT0hMSl0aHJvdyBuZXcgcChuKG8sIiBoYXMgYmVlbiByZW1vdmVkIisodD8iIGluICIrdDoiIikpLHAuRVJSX0RFUFJFQ0FURUQpO3JldHVybiB0JiYhZXRbb10mJihldFtvXT0hMCxjb25zb2xlLndhcm4obihvLCIgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2Iit0KyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLGU/ZShpLG8sZyk6ITB9fTtmdW5jdGlvbiBLcihBLGUsdCl7aWYodHlwZW9mIEEhPSJvYmplY3QiKXRocm93IG5ldyBwKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0IixwLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtsZXQgcj1PYmplY3Qua2V5cyhBKSxuPXIubGVuZ3RoO2Zvcig7bi0tID4wOyl7bGV0IGk9cltuXSxvPWVbaV07aWYobyl7bGV0IGc9QVtpXSxDPWc9PT12b2lkIDB8fG8oZyxpLEEpO2lmKEMhPT0hMCl0aHJvdyBuZXcgcCgib3B0aW9uICIraSsiIG11c3QgYmUgIitDLHAuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2NvbnRpbnVlfWlmKHQhPT0hMCl0aHJvdyBuZXcgcCgiVW5rbm93biBvcHRpb24gIitpLHAuRVJSX0JBRF9PUFRJT04pfX12YXIgd0E9e2Fzc2VydE9wdGlvbnM6S3IsdmFsaWRhdG9yczplZX07dmFyIFA9d0EudmFsaWRhdG9ycyxqPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuZGVmYXVsdHM9ZSx0aGlzLmludGVyY2VwdG9ycz17cmVxdWVzdDpuZXcgS0EscmVzcG9uc2U6bmV3IEtBfX1yZXF1ZXN0KGUsdCl7dHlwZW9mIGU9PSJzdHJpbmciPyh0PXR8fHt9LHQudXJsPWUpOnQ9ZXx8e30sdD1UKHRoaXMuZGVmYXVsdHMsdCk7bGV0e3RyYW5zaXRpb25hbDpyLHBhcmFtc1NlcmlhbGl6ZXI6bixoZWFkZXJzOml9PXQ7ciE9PXZvaWQgMCYmd0EuYXNzZXJ0T3B0aW9ucyhyLHtzaWxlbnRKU09OUGFyc2luZzpQLnRyYW5zaXRpb25hbChQLmJvb2xlYW4pLGZvcmNlZEpTT05QYXJzaW5nOlAudHJhbnNpdGlvbmFsKFAuYm9vbGVhbiksY2xhcmlmeVRpbWVvdXRFcnJvcjpQLnRyYW5zaXRpb25hbChQLmJvb2xlYW4pfSwhMSksbiE9bnVsbCYmKEkuaXNGdW5jdGlvbihuKT90LnBhcmFtc1NlcmlhbGl6ZXI9e3NlcmlhbGl6ZTpufTp3QS5hc3NlcnRPcHRpb25zKG4se2VuY29kZTpQLmZ1bmN0aW9uLHNlcmlhbGl6ZTpQLmZ1bmN0aW9ufSwhMCkpLHQubWV0aG9kPSh0Lm1ldGhvZHx8dGhpcy5kZWZhdWx0cy5tZXRob2R8fCJnZXQiKS50b0xvd2VyQ2FzZSgpO2xldCBvPWkmJkkubWVyZ2UoaS5jb21tb24saVt0Lm1ldGhvZF0pO2kmJkkuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSx1PT57ZGVsZXRlIGlbdV19KSx0LmhlYWRlcnM9RC5jb25jYXQobyxpKTtsZXQgZz1bXSxDPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbihjKXt0eXBlb2YgYy5ydW5XaGVuPT0iZnVuY3Rpb24iJiZjLnJ1bldoZW4odCk9PT0hMXx8KEM9QyYmYy5zeW5jaHJvbm91cyxnLnVuc2hpZnQoYy5mdWxmaWxsZWQsYy5yZWplY3RlZCkpfSk7bGV0IGw9W107dGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihjKXtsLnB1c2goYy5mdWxmaWxsZWQsYy5yZWplY3RlZCl9KTtsZXQgcyxhPTAsRTtpZighQyl7bGV0IHU9W2hBLmJpbmQodGhpcyksdm9pZCAwXTtmb3IodS51bnNoaWZ0LmFwcGx5KHUsZyksdS5wdXNoLmFwcGx5KHUsbCksRT11Lmxlbmd0aCxzPVByb21pc2UucmVzb2x2ZSh0KTthPEU7KXM9cy50aGVuKHVbYSsrXSx1W2ErK10pO3JldHVybiBzfUU9Zy5sZW5ndGg7bGV0IEI9dDtmb3IoYT0wO2E8RTspe2xldCB1PWdbYSsrXSxjPWdbYSsrXTt0cnl7Qj11KEIpfWNhdGNoKGYpe2MuY2FsbCh0aGlzLGYpO2JyZWFrfX10cnl7cz1oQS5jYWxsKHRoaXMsQil9Y2F0Y2godSl7cmV0dXJuIFByb21pc2UucmVqZWN0KHUpfWZvcihhPTAsRT1sLmxlbmd0aDthPEU7KXM9cy50aGVuKGxbYSsrXSxsW2ErK10pO3JldHVybiBzfWdldFVyaShlKXtlPVQodGhpcy5kZWZhdWx0cyxlKTtsZXQgdD1pQShlLmJhc2VVUkwsZS51cmwpO3JldHVybiBBQSh0LGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplcil9fTtJLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyJdLGZ1bmN0aW9uKGUpe2oucHJvdG90eXBlW2VdPWZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMucmVxdWVzdChUKHJ8fHt9LHttZXRob2Q6ZSx1cmw6dCxkYXRhOihyfHx7fSkuZGF0YX0pKX19KTtJLmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIpe3JldHVybiBmdW5jdGlvbihpLG8sZyl7cmV0dXJuIHRoaXMucmVxdWVzdChUKGd8fHt9LHttZXRob2Q6ZSxoZWFkZXJzOnI/eyJDb250ZW50LVR5cGUiOiJtdWx0aXBhcnQvZm9ybS1kYXRhIn06e30sdXJsOmksZGF0YTpvfSkpfX1qLnByb3RvdHlwZVtlXT10KCksai5wcm90b3R5cGVbZSsiRm9ybSJdPXQoITApfSk7dmFyIG5BPWo7dmFyIHRlPWNsYXNzIEF7Y29uc3RydWN0b3IoZSl7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO2xldCB0O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihpKXt0PWl9KTtsZXQgcj10aGlzO3RoaXMucHJvbWlzZS50aGVuKG49PntpZighci5fbGlzdGVuZXJzKXJldHVybjtsZXQgaT1yLl9saXN0ZW5lcnMubGVuZ3RoO2Zvcig7aS0tID4wOylyLl9saXN0ZW5lcnNbaV0obik7ci5fbGlzdGVuZXJzPW51bGx9KSx0aGlzLnByb21pc2UudGhlbj1uPT57bGV0IGksbz1uZXcgUHJvbWlzZShnPT57ci5zdWJzY3JpYmUoZyksaT1nfSkudGhlbihuKTtyZXR1cm4gby5jYW5jZWw9ZnVuY3Rpb24oKXtyLnVuc3Vic2NyaWJlKGkpfSxvfSxlKGZ1bmN0aW9uKGksbyxnKXtyLnJlYXNvbnx8KHIucmVhc29uPW5ldyBPKGksbyxnKSx0KHIucmVhc29uKSl9KX10aHJvd0lmUmVxdWVzdGVkKCl7aWYodGhpcy5yZWFzb24pdGhyb3cgdGhpcy5yZWFzb259c3Vic2NyaWJlKGUpe2lmKHRoaXMucmVhc29uKXtlKHRoaXMucmVhc29uKTtyZXR1cm59dGhpcy5fbGlzdGVuZXJzP3RoaXMuX2xpc3RlbmVycy5wdXNoKGUpOnRoaXMuX2xpc3RlbmVycz1bZV19dW5zdWJzY3JpYmUoZSl7aWYoIXRoaXMuX2xpc3RlbmVycylyZXR1cm47bGV0IHQ9dGhpcy5fbGlzdGVuZXJzLmluZGV4T2YoZSk7dCE9PS0xJiZ0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKHQsMSl9c3RhdGljIHNvdXJjZSgpe2xldCBlO3JldHVybnt0b2tlbjpuZXcgQShmdW5jdGlvbihuKXtlPW59KSxjYW5jZWw6ZX19fSx0dD10ZTtmdW5jdGlvbiByZShBKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIEEuYXBwbHkobnVsbCx0KX19ZnVuY3Rpb24gaWUoQSl7cmV0dXJuIEkuaXNPYmplY3QoQSkmJkEuaXNBeGlvc0Vycm9yPT09ITB9dmFyIG5lPXtDb250aW51ZToxMDAsU3dpdGNoaW5nUHJvdG9jb2xzOjEwMSxQcm9jZXNzaW5nOjEwMixFYXJseUhpbnRzOjEwMyxPazoyMDAsQ3JlYXRlZDoyMDEsQWNjZXB0ZWQ6MjAyLE5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbjoyMDMsTm9Db250ZW50OjIwNCxSZXNldENvbnRlbnQ6MjA1LFBhcnRpYWxDb250ZW50OjIwNixNdWx0aVN0YXR1czoyMDcsQWxyZWFkeVJlcG9ydGVkOjIwOCxJbVVzZWQ6MjI2LE11bHRpcGxlQ2hvaWNlczozMDAsTW92ZWRQZXJtYW5lbnRseTozMDEsRm91bmQ6MzAyLFNlZU90aGVyOjMwMyxOb3RNb2RpZmllZDozMDQsVXNlUHJveHk6MzA1LFVudXNlZDozMDYsVGVtcG9yYXJ5UmVkaXJlY3Q6MzA3LFBlcm1hbmVudFJlZGlyZWN0OjMwOCxCYWRSZXF1ZXN0OjQwMCxVbmF1dGhvcml6ZWQ6NDAxLFBheW1lbnRSZXF1aXJlZDo0MDIsRm9yYmlkZGVuOjQwMyxOb3RGb3VuZDo0MDQsTWV0aG9kTm90QWxsb3dlZDo0MDUsTm90QWNjZXB0YWJsZTo0MDYsUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkOjQwNyxSZXF1ZXN0VGltZW91dDo0MDgsQ29uZmxpY3Q6NDA5LEdvbmU6NDEwLExlbmd0aFJlcXVpcmVkOjQxMSxQcmVjb25kaXRpb25GYWlsZWQ6NDEyLFBheWxvYWRUb29MYXJnZTo0MTMsVXJpVG9vTG9uZzo0MTQsVW5zdXBwb3J0ZWRNZWRpYVR5cGU6NDE1LFJhbmdlTm90U2F0aXNmaWFibGU6NDE2LEV4cGVjdGF0aW9uRmFpbGVkOjQxNyxJbUFUZWFwb3Q6NDE4LE1pc2RpcmVjdGVkUmVxdWVzdDo0MjEsVW5wcm9jZXNzYWJsZUVudGl0eTo0MjIsTG9ja2VkOjQyMyxGYWlsZWREZXBlbmRlbmN5OjQyNCxUb29FYXJseTo0MjUsVXBncmFkZVJlcXVpcmVkOjQyNixQcmVjb25kaXRpb25SZXF1aXJlZDo0MjgsVG9vTWFueVJlcXVlc3RzOjQyOSxSZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2U6NDMxLFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zOjQ1MSxJbnRlcm5hbFNlcnZlckVycm9yOjUwMCxOb3RJbXBsZW1lbnRlZDo1MDEsQmFkR2F0ZXdheTo1MDIsU2VydmljZVVuYXZhaWxhYmxlOjUwMyxHYXRld2F5VGltZW91dDo1MDQsSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQ6NTA1LFZhcmlhbnRBbHNvTmVnb3RpYXRlczo1MDYsSW5zdWZmaWNpZW50U3RvcmFnZTo1MDcsTG9vcERldGVjdGVkOjUwOCxOb3RFeHRlbmRlZDo1MTAsTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6NTExfTtPYmplY3QuZW50cmllcyhuZSkuZm9yRWFjaCgoW0EsZV0pPT57bmVbZV09QX0pO3ZhciBydD1uZTtmdW5jdGlvbiBpdChBKXtsZXQgZT1uZXcgbkEoQSksdD1aKG5BLnByb3RvdHlwZS5yZXF1ZXN0LGUpO3JldHVybiBJLmV4dGVuZCh0LG5BLnByb3RvdHlwZSxlLHthbGxPd25LZXlzOiEwfSksSS5leHRlbmQodCxlLG51bGwse2FsbE93bktleXM6ITB9KSx0LmNyZWF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gaXQoVChBLG4pKX0sdH12YXIgbT1pdChXKTttLkF4aW9zPW5BO20uQ2FuY2VsZWRFcnJvcj1PO20uQ2FuY2VsVG9rZW49dHQ7bS5pc0NhbmNlbD1yQTttLlZFUlNJT049eUE7bS50b0Zvcm1EYXRhPXg7bS5BeGlvc0Vycm9yPXA7bS5DYW5jZWw9bS5DYW5jZWxlZEVycm9yO20uYWxsPWZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChlKX07bS5zcHJlYWQ9cmU7bS5pc0F4aW9zRXJyb3I9aWU7bS5tZXJnZUNvbmZpZz1UO20uQXhpb3NIZWFkZXJzPUQ7bS5mb3JtVG9KU09OPUE9PnBBKEkuaXNIVE1MRm9ybShBKT9uZXcgRm9ybURhdGEoQSk6QSk7bS5nZXRBZGFwdGVyPW1BLmdldEFkYXB0ZXI7bS5IdHRwU3RhdHVzQ29kZT1ydDttLmRlZmF1bHQ9bTt2YXIgXz1tO3ZhcntBeGlvczpHYSxBeGlvc0Vycm9yOlRhLENhbmNlbGVkRXJyb3I6TGEsaXNDYW5jZWw6eGEsQ2FuY2VsVG9rZW46T2EsVkVSU0lPTjpQYSxhbGw6SmEsQ2FuY2VsOkhhLGlzQXhpb3NFcnJvcjpNYSxzcHJlYWQ6WWEsdG9Gb3JtRGF0YTpxYSxBeGlvc0hlYWRlcnM6S2EsSHR0cFN0YXR1c0NvZGU6V2EsZm9ybVRvSlNPTjp2YSxnZXRBZGFwdGVyOmphLG1lcmdlQ29uZmlnOl9hfT1fO2FzeW5jIGZ1bmN0aW9uIFdyKEEsZSl7bGV0IHQ9QSxyPW51bGw7aWYodD09bnVsbClyPW5ldyBXb3JrZXIobmV3IFVSTCgiLi93ZWItd29ya2Vycy9pdGstd2FzbS1waXBlbGluZS53b3JrZXIuanMiLGltcG9ydC5tZXRhLnVybCkse3R5cGU6Im1vZHVsZSJ9KTtlbHNlIGlmKHQuc3RhcnRzV2l0aCgiaHR0cCIpKXtsZXQgbj1hd2FpdCBfLmdldCh0LHtyZXNwb25zZVR5cGU6ImJsb2IiLHBhcmFtczplfSksaT1VUkwuY3JlYXRlT2JqZWN0VVJMKG4uZGF0YSk7cj1uZXcgV29ya2VyKGkse3R5cGU6Im1vZHVsZSJ9KX1lbHNlIHI9bmV3IFdvcmtlcih0LHt0eXBlOiJtb2R1bGUifSk7cmV0dXJuIHJ9dmFyIG9BPVdyO2Z1bmN0aW9uIG50KEEpe2xldCBlPU9BKEEpLHQ9QTtyZXR1cm4gdC50ZXJtaW5hdGVkPSExLHQud29ya2VyUHJveHk9ZSx0Lm9yaWdpbmFsVGVybWluYXRlPXQudGVybWluYXRlLHQudGVybWluYXRlPSgpPT57dC50ZXJtaW5hdGVkPSEwLHQud29ya2VyUHJveHlbeEFdKCksdC5vcmlnaW5hbFRlcm1pbmF0ZSgpfSx7d29ya2VyUHJveHk6ZSx3b3JrZXI6dH19YXN5bmMgZnVuY3Rpb24gdnIoQSxlLHQpe2xldCByO2lmKEEhPW51bGwpe2xldCBpPUE7cmV0dXJuIGkud29ya2VyUHJveHkhPT12b2lkIDA/KHI9aS53b3JrZXJQcm94eSx7d29ya2VyUHJveHk6cix3b3JrZXI6aX0pOm50KEEpfWxldCBuPWF3YWl0IG9BKGUsdCk7cmV0dXJuIG50KG4pfXZhciBvdD12cjthc3luYyBmdW5jdGlvbiBqcihBLGUsdCl7bGV0IHI9InVua25vd24iO3R5cGVvZiBBIT0ic3RyaW5nIj9yPUEuaHJlZjpBLnN0YXJ0c1dpdGgoImh0dHAiKT9yPUE6cj10eXBlb2YgZTwidSI/YCR7ZX0vJHtBfWA6QSxyLmVuZHNXaXRoKCIuanMiKSYmKHI9ci5zdWJzdHJpbmcoMCxyLmxlbmd0aC0zKSksci5lbmRzV2l0aCgiLndhc20iKSYmKHI9ci5zdWJzdHJpbmcoMCxyLmxlbmd0aC01KSk7bGV0IG49YCR7cn0ud2FzbWAsbz0oYXdhaXQgXy5nZXQobix7cmVzcG9uc2VUeXBlOiJhcnJheWJ1ZmZlciIscGFyYW1zOnR9KSkuZGF0YTtyZXR1cm4oYXdhaXQgaW1wb3J0KGAke3J9LmpzYCkpLmRlZmF1bHQoe3dhc21CaW5hcnk6b30pfXZhciBhdD1qcjt2YXIgc3Q9YXN5bmMoKT0+V2ViQXNzZW1ibHkudmFsaWRhdGUobmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsNSwxLDk2LDAsMSwxMjMsMywyLDEsMCwxMCwxMCwxLDgsMCw2NSwwLDI1MywxNSwyNTMsOTgsMTFdKSk7dmFyIGx0PXR5cGVvZiBnbG9iYWxUaGlzLlNoYXJlZEFycmF5QnVmZmVyPT0iZnVuY3Rpb24iLEl0PW5ldyBUZXh0RW5jb2RlcixndD1uZXcgVGV4dERlY29kZXIoInV0Zi04Iik7ZnVuY3Rpb24gX3IoQSxlKXtsZXQgdD17ZmxhZ3M6InIiLGVuY29kaW5nOiJiaW5hcnkifSxyPUEuZnNfb3BlbihlLHQuZmxhZ3MpLGk9QS5mc19zdGF0KGUpLnNpemUsbz1udWxsO2x0P289bmV3IFNoYXJlZEFycmF5QnVmZmVyKGkpOm89bmV3IEFycmF5QnVmZmVyKGkpO2xldCBnPW5ldyBVaW50OEFycmF5KG8pO3JldHVybiBBLmZzX3JlYWQocixnLDAsaSwwKSxBLmZzX2Nsb3NlKHIpLGd9ZnVuY3Rpb24gQnQoQSxlLHQpe2xldCByPW51bGw7bHQ/cj1uZXcgU2hhcmVkQXJyYXlCdWZmZXIodCk6cj1uZXcgQXJyYXlCdWZmZXIodCk7bGV0IG49bmV3IFVpbnQ4QXJyYXkociksaT1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsZSx0KTtyZXR1cm4gbi5zZXQoaSksbn1mdW5jdGlvbiB5KEEsZSx0LHIpe2xldCBuPTA7cmV0dXJuIGUhPT1udWxsJiYobj1BLmNjYWxsKCJpdGtfd2FzbV9pbnB1dF9hcnJheV9hbGxvYyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCx0LHIsZS5idWZmZXIuYnl0ZUxlbmd0aF0pLEEuSEVBUFU4LnNldChuZXcgVWludDhBcnJheShlLmJ1ZmZlciksbikpLG59ZnVuY3Rpb24geihBLGUsdCl7bGV0IHI9SlNPTi5zdHJpbmdpZnkoZSksbj1BLmNjYWxsKCJpdGtfd2FzbV9pbnB1dF9qc29uX2FsbG9jIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHQsci5sZW5ndGhdKTtBLndyaXRlQXNjaWlUb01lbW9yeShyLG4sITEpfWZ1bmN0aW9uIFIoQSxlLHQscil7bGV0IG49QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsZSx0XSksaT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxlLHRdKSxvPUJ0KEEsbixpKTtyZXR1cm4gTChyLG8uYnVmZmVyKX1mdW5jdGlvbiBvZShBLGUpe2xldCB0PUEuY2NhbGwoIml0a193YXNtX291dHB1dF9qc29uX2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIl0sWzAsZV0pLHI9QS5Bc2NpaVRvU3RyaW5nKHQpO3JldHVybiBKU09OLnBhcnNlKHIpfWZ1bmN0aW9uIHpyKEEsZSx0LHIpe3IhPW51bGwmJnIubGVuZ3RoPjAmJnIuZm9yRWFjaChmdW5jdGlvbihsLHMpe3N3aXRjaChsLnR5cGUpe2Nhc2UgUS5UZXh0U3RyZWFtOntsZXQgYT1JdC5lbmNvZGUobC5kYXRhLmRhdGEpLEU9eShBLGEscywwKSxCPXtzaXplOmEuYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0V9YH07eihBLEIscyk7YnJlYWt9Y2FzZSBRLkpzb25Db21wYXRpYmxlOntsZXQgYT1JdC5lbmNvZGUoSlNPTi5zdHJpbmdpZnkobC5kYXRhKSksRT15KEEsYSxzLDApLEI9e3NpemU6YS5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7RX1gfTt6KEEsQixzKTticmVha31jYXNlIFEuQmluYXJ5U3RyZWFtOntsZXQgYT1sLmRhdGEuZGF0YSxFPXkoQSxhLHMsMCksQj17c2l6ZTphLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtFfWB9O3ooQSxCLHMpO2JyZWFrfWNhc2UgUS5UZXh0RmlsZTp7QS5mc193cml0ZUZpbGUobC5kYXRhLnBhdGgsbC5kYXRhLmRhdGEpO2JyZWFrfWNhc2UgUS5CaW5hcnlGaWxlOntBLmZzX3dyaXRlRmlsZShsLmRhdGEucGF0aCxsLmRhdGEuZGF0YSk7YnJlYWt9Y2FzZSBRLkltYWdlOntsZXQgYT1sLmRhdGEsRT15KEEsYS5kYXRhLHMsMCksQj15KEEsYS5kaXJlY3Rpb24scywxKSx1PXR5cGVvZiBhLm1ldGFkYXRhPy5lbnRyaWVzPCJ1Ij9KU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKGEubWV0YWRhdGEuZW50cmllcygpKSk6IltdIixjPXtpbWFnZVR5cGU6YS5pbWFnZVR5cGUsbmFtZTphLm5hbWUsb3JpZ2luOmEub3JpZ2luLHNwYWNpbmc6YS5zcGFjaW5nLGRpcmVjdGlvbjpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0J9YCxzaXplOmEuc2l6ZSxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7RX1gLG1ldGFkYXRhOnV9O3ooQSxjLHMpO2JyZWFrfWNhc2UgUS5NZXNoOntsZXQgYT1sLmRhdGEsRT15KEEsYS5wb2ludHMscywwKSxCPXkoQSxhLmNlbGxzLHMsMSksdT15KEEsYS5wb2ludERhdGEscywyKSxjPXkoQSxhLmNlbGxEYXRhLHMsMyksZj17bWVzaFR5cGU6YS5tZXNoVHlwZSxuYW1lOmEubmFtZSxudW1iZXJPZlBvaW50czphLm51bWJlck9mUG9pbnRzLHBvaW50czpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0V9YCxudW1iZXJPZkNlbGxzOmEubnVtYmVyT2ZDZWxscyxjZWxsczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0J9YCxjZWxsQnVmZmVyU2l6ZTphLmNlbGxCdWZmZXJTaXplLG51bWJlck9mUG9pbnRQaXhlbHM6YS5udW1iZXJPZlBvaW50UGl4ZWxzLHBvaW50RGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke3V9YCxudW1iZXJPZkNlbGxQaXhlbHM6YS5udW1iZXJPZkNlbGxQaXhlbHMsY2VsbERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWB9O3ooQSxmLHMpO2JyZWFrfWNhc2UgUS5Qb2x5RGF0YTp7bGV0IGE9bC5kYXRhLEU9eShBLGEucG9pbnRzLHMsMCksQj15KEEsYS52ZXJ0aWNlcyxzLDEpLHU9eShBLGEubGluZXMscywyKSxjPXkoQSxhLnBvbHlnb25zLHMsMyksZj15KEEsYS50cmlhbmdsZVN0cmlwcyxzLDQpLGQ9eShBLGEucG9pbnREYXRhLHMsNSksaz15KEEsYS5wb2ludERhdGEscyw2KSxTPXtwb2x5RGF0YVR5cGU6YS5wb2x5RGF0YVR5cGUsbmFtZTphLm5hbWUsbnVtYmVyT2ZQb2ludHM6YS5udW1iZXJPZlBvaW50cyxwb2ludHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtFfWAsdmVydGljZXNCdWZmZXJTaXplOmEudmVydGljZXNCdWZmZXJTaXplLHZlcnRpY2VzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Qn1gLGxpbmVzQnVmZmVyU2l6ZTphLmxpbmVzQnVmZmVyU2l6ZSxsaW5lczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke3V9YCxwb2x5Z29uc0J1ZmZlclNpemU6YS5wb2x5Z29uc0J1ZmZlclNpemUscG9seWdvbnM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWAsdHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplOmEudHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplLHRyaWFuZ2xlU3RyaXBzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gLG51bWJlck9mUG9pbnRQaXhlbHM6YS5udW1iZXJPZlBvaW50UGl4ZWxzLHBvaW50RGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2R9YCxudW1iZXJPZkNlbGxQaXhlbHM6YS5udW1iZXJPZkNlbGxQaXhlbHMsY2VsbERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtrfWB9O3ooQSxTLHMpO2JyZWFrfWRlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuc3VwcG9ydGVkIGlucHV0IEludGVyZmFjZVR5cGUiKX19KSxBLnJlc2V0TW9kdWxlU3Rkb3V0KCksQS5yZXNldE1vZHVsZVN0ZGVycigpO2xldCBuPUEuc3RhY2tTYXZlKCksaT0wO3RyeXtpPUEuY2FsbE1haW4oZS5zbGljZSgpKX1jYXRjaChsKXt0aHJvdyB0eXBlb2YgbD09Im51bWJlciImJihjb25zb2xlLmxvZygiRXhjZXB0aW9uIHdoaWxlIHJ1bm5pbmcgcGlwZWxpbmU6IiksY29uc29sZS5sb2coInN0ZG91dDoiLEEuZ2V0TW9kdWxlU3Rkb3V0KCkpLGNvbnNvbGUuZXJyb3IoInN0ZGVycjoiLEEuZ2V0TW9kdWxlU3RkZXJyKCkpLHR5cGVvZiBBLmdldEV4Y2VwdGlvbk1lc3NhZ2U8InUiP2NvbnNvbGUuZXJyb3IoImV4Y2VwdGlvbjoiLEEuZ2V0RXhjZXB0aW9uTWVzc2FnZShsKSk6Y29uc29sZS5lcnJvcigiQnVpbGQgbW9kdWxlIGluIERlYnVnIG1vZGUgZm9yIGV4Y2VwdGlvbiBtZXNzYWdlIGluZm9ybWF0aW9uLiIpKSxsfWZpbmFsbHl7QS5zdGFja1Jlc3RvcmUobil9bGV0IG89QS5nZXRNb2R1bGVTdGRvdXQoKSxnPUEuZ2V0TW9kdWxlU3RkZXJyKCksQz1bXTtyZXR1cm4gdCE9bnVsbCYmdC5sZW5ndGg+MCYmaT09PTAmJnQuZm9yRWFjaChmdW5jdGlvbihsLHMpe2xldCBhPW51bGw7c3dpdGNoKGwudHlwZSl7Y2FzZSBRLlRleHRTdHJlYW06e2xldCBCPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHMsMF0pLHU9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAscywwXSksYz1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsQix1KTthPXtkYXRhOmd0LmRlY29kZShjKX07YnJlYWt9Y2FzZSBRLkpzb25Db21wYXRpYmxlOntsZXQgQj1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxzLDBdKSx1PUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHMsMF0pLGM9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLEIsdSk7YT1KU09OLnBhcnNlKGd0LmRlY29kZShjKSk7YnJlYWt9Y2FzZSBRLkJpbmFyeVN0cmVhbTp7bGV0IEI9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAscywwXSksdT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxzLDBdKTthPXtkYXRhOkJ0KEEsQix1KX07YnJlYWt9Y2FzZSBRLlRleHRGaWxlOnthPXtwYXRoOmwuZGF0YS5wYXRoLGRhdGE6QS5mc19yZWFkRmlsZShsLmRhdGEucGF0aCx7ZW5jb2Rpbmc6InV0ZjgifSl9O2JyZWFrfWNhc2UgUS5CaW5hcnlGaWxlOnthPXtwYXRoOmwuZGF0YS5wYXRoLGRhdGE6X3IoQSxsLmRhdGEucGF0aCl9O2JyZWFrfWNhc2UgUS5JbWFnZTp7bGV0IEI9b2UoQSxzKTtCLmRhdGE9UihBLHMsMCxCLmltYWdlVHlwZS5jb21wb25lbnRUeXBlKSxCLmRpcmVjdGlvbj1SKEEscywxLE0uRmxvYXQ2NCksQi5tZXRhZGF0YT1uZXcgTWFwKEIubWV0YWRhdGEpLGE9QjticmVha31jYXNlIFEuTWVzaDp7bGV0IEI9b2UoQSxzKTtCLm51bWJlck9mUG9pbnRzPjA/Qi5wb2ludHM9UihBLHMsMCxCLm1lc2hUeXBlLnBvaW50Q29tcG9uZW50VHlwZSk6Qi5wb2ludHM9TChCLm1lc2hUeXBlLnBvaW50Q29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEIubnVtYmVyT2ZDZWxscz4wP0IuY2VsbHM9UihBLHMsMSxCLm1lc2hUeXBlLmNlbGxDb21wb25lbnRUeXBlKTpCLmNlbGxzPUwoQi5tZXNoVHlwZS5jZWxsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEIubnVtYmVyT2ZQb2ludFBpeGVscz4wP0IucG9pbnREYXRhPVIoQSxzLDIsQi5tZXNoVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSk6Qi5wb2ludERhdGE9TChCLm1lc2hUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksQi5udW1iZXJPZkNlbGxQaXhlbHM+MD9CLmNlbGxEYXRhPVIoQSxzLDMsQi5tZXNoVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlKTpCLmNlbGxEYXRhPUwoQi5tZXNoVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksYT1CO2JyZWFrfWNhc2UgUS5Qb2x5RGF0YTp7bGV0IEI9b2UoQSxzKTtCLm51bWJlck9mUG9pbnRzPjA/Qi5wb2ludHM9UihBLHMsMCxNLkZsb2F0MzIpOkIucG9pbnRzPW5ldyBGbG9hdDMyQXJyYXksQi52ZXJ0aWNlc0J1ZmZlclNpemU+MD9CLnZlcnRpY2VzPVIoQSxzLDEsaC5VSW50MzIpOkIudmVydGljZXM9bmV3IFVpbnQzMkFycmF5LEIubGluZXNCdWZmZXJTaXplPjA/Qi5saW5lcz1SKEEscywyLGguVUludDMyKTpCLmxpbmVzPW5ldyBVaW50MzJBcnJheSxCLnBvbHlnb25zQnVmZmVyU2l6ZT4wP0IucG9seWdvbnM9UihBLHMsMyxoLlVJbnQzMik6Qi5wb2x5Z29ucz1uZXcgVWludDMyQXJyYXksQi50cmlhbmdsZVN0cmlwc0J1ZmZlclNpemU+MD9CLnRyaWFuZ2xlU3RyaXBzPVIoQSxzLDQsaC5VSW50MzIpOkIudHJpYW5nbGVTdHJpcHM9bmV3IFVpbnQzMkFycmF5LEIubnVtYmVyT2ZQb2ludFBpeGVscz4wP0IucG9pbnREYXRhPVIoQSxzLDUsQi5wb2x5RGF0YVR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUpOkIucG9pbnREYXRhPUwoQi5wb2x5RGF0YVR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxCLm51bWJlck9mQ2VsbFBpeGVscz4wP0IuY2VsbERhdGE9UihBLHMsNixCLnBvbHlEYXRhVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlKTpCLmNlbGxEYXRhPUwoQi5wb2x5RGF0YVR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLGE9QjticmVha31kZWZhdWx0OnRocm93IEVycm9yKCJVbnN1cHBvcnRlZCBvdXRwdXQgSW50ZXJmYWNlVHlwZSIpfWxldCBFPXt0eXBlOmwudHlwZSxkYXRhOmF9O0MucHVzaChFKX0pLHtyZXR1cm5WYWx1ZTppLHN0ZG91dDpvLHN0ZGVycjpnLG91dHB1dHM6Q319dmFyIEN0PXpyO3ZhciBWcj10eXBlb2YgZ2xvYmFsVGhpcy5TaGFyZWRBcnJheUJ1ZmZlcjwidSI7ZnVuY3Rpb24gWnIoQSxlKXtpZihBPT1udWxsKXJldHVybltdO2xldCB0PVtdO2ZvcihsZXQgcj0wO3I8QS5sZW5ndGg7cisrKXtsZXQgbj1YcihBW3JdLGUpO24hPT1udWxsJiZ0LnB1c2gobil9cmV0dXJuIHR9ZnVuY3Rpb24gWHIoQSxlKXtpZihBPT1udWxsKXJldHVybiBudWxsO2xldCB0PW51bGw7cmV0dXJuIEEuYnVmZmVyIT09dm9pZCAwP3Q9QS5idWZmZXI6QS5ieXRlTGVuZ3RoIT09dm9pZCAwJiYodD1BKSxWciYmdCBpbnN0YW5jZW9mIFNoYXJlZEFycmF5QnVmZmVyP251bGw6ZT90OnQuc2xpY2UoMCl9dmFyIGN0PVpyO2Z1bmN0aW9uICRyKEEpe3JldHVybltBLmRhdGEsQS5kaXJlY3Rpb25dfXZhciB1dD0kcjtmdW5jdGlvbiBBaShBKXtyZXR1cm5bQS5wb2ludHMsQS5wb2ludERhdGEsQS5jZWxscyxBLmNlbGxEYXRhXX12YXIgRXQ9QWk7ZnVuY3Rpb24gZWkoQSl7cmV0dXJuW0EucG9pbnRzLEEudmVydGljZXMsQS5saW5lcyxBLnBvbHlnb25zLEEudHJpYW5nbGVTdHJpcHMsQS5wb2ludERhdGEsQS5jZWxsRGF0YV19dmFyIFF0PWVpO3ZhciB0aTtmdW5jdGlvbiBEQSgpe3JldHVybiB0aX12YXIgcmk7ZnVuY3Rpb24gZnQoKXtyZXR1cm4gcml9dmFyIGlpO2Z1bmN0aW9uIFNBKCl7cmV0dXJuIGlpfXZhciBhZT1uZXcgTWFwO2Z1bmN0aW9uIG5pKCl7bGV0IEE9U0EoKTtyZXR1cm4gdHlwZW9mIEE+InUiJiYoQT1udWxsKSxBfWZ1bmN0aW9uIHB0KCl7bGV0IEE9REEoKTtyZXR1cm4gdHlwZW9mIEE+InUiJiYoQT1uZXcgVVJMKCIvcGlwZWxpbmVzIixkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4pLmhyZWYpLEF9ZnVuY3Rpb24gRkEoKXtsZXQgQT1mdCgpO3JldHVybiB0eXBlb2YgQT4idSImJihBPXt9KSxBfWFzeW5jIGZ1bmN0aW9uIG9pKEEsZSx0KXtsZXQgcj1BLG49QTtpZih0eXBlb2YgQSE9InN0cmluZyImJihyPW5ldyBVUkwoQS5ocmVmKSxuPXIuaHJlZiksYWUuaGFzKG4pKXJldHVybiBhZS5nZXQobik7e2xldCBpPWF3YWl0IGF0KEEsZT8udG9TdHJpbmcoKT8/cHQoKSx0Pz9GQSgpKTtyZXR1cm4gYWUuc2V0KG4saSksaX19YXN5bmMgZnVuY3Rpb24gYWkoQSxlLHQscixuKXtpZighYXdhaXQgc3QoKSl7bGV0IGY9IldlYkFzc2VtYmx5IFNJTUQgc3VwcG9ydCBpcyByZXF1aXJlZCAtLSBwbGVhc2UgdXBkYXRlIHlvdXIgYnJvd3Nlci4iO3Rocm93IGFsZXJ0KGYpLG5ldyBFcnJvcihmKX1sZXQgaT1uPy53ZWJXb3JrZXI/P251bGw7aWYoaT09PSExKXtsZXQgZj1hd2FpdCBvaShBLnRvU3RyaW5nKCksbj8ucGlwZWxpbmVCYXNlVXJsLG4/LnBpcGVsaW5lUXVlcnlQYXJhbXM/P0ZBKCkpO3JldHVybiBDdChmLGUsdCxyKX1sZXQgbz1pLGc9bj8ucGlwZWxpbmVXb3JrZXJVcmw/P25pKCksQz10eXBlb2YgZyE9InN0cmluZyImJnR5cGVvZiBnPy5ocmVmPCJ1Ij9nLmhyZWY6Zyx7d29ya2VyUHJveHk6bCx3b3JrZXI6c309YXdhaXQgb3QobyxDLG4/LnBpcGVsaW5lUXVlcnlQYXJhbXM/P0ZBKCkpO289cztsZXQgYT1bXTtyIT1udWxsJiZyLmxlbmd0aD4wJiZyLmZvckVhY2goZnVuY3Rpb24oZil7aWYoZi50eXBlPT09US5CaW5hcnlTdHJlYW0pe2xldCBkPWYuZGF0YS5kYXRhO2EucHVzaChkKX1lbHNlIGlmKGYudHlwZT09PVEuQmluYXJ5RmlsZSl7bGV0IGQ9Zi5kYXRhLmRhdGE7YS5wdXNoKGQpfWVsc2UgaWYoZi50eXBlPT09US5JbWFnZSl7bGV0IGQ9Zi5kYXRhO2QuZGF0YSE9PW51bGwmJmEucHVzaCguLi51dChkKSl9ZWxzZSBpZihmLnR5cGU9PT1RLk1lc2gpe2xldCBkPWYuZGF0YTthLnB1c2goLi4uRXQoZCkpfWVsc2UgaWYoZi50eXBlPT09US5Qb2x5RGF0YSl7bGV0IGQ9Zi5kYXRhO2EucHVzaCguLi5RdChkKSl9fSk7bGV0IEU9bj8ucGlwZWxpbmVCYXNlVXJsPz9wdCgpLEI9dHlwZW9mIEUhPSJzdHJpbmciJiZ0eXBlb2YgRT8uaHJlZjwidSI/RS5ocmVmOkUsdT1yIT1udWxsP1BBKHIsY3QoYSxuPy5ub0NvcHkpKTpudWxsLGM9YXdhaXQgbC5ydW5QaXBlbGluZShBLnRvU3RyaW5nKCksQixlLHQsdSxuPy5waXBlbGluZVF1ZXJ5UGFyYW1zPz9GQSgpKTtyZXR1cm57cmV0dXJuVmFsdWU6Yy5yZXR1cm5WYWx1ZSxzdGRvdXQ6Yy5zdGRvdXQsc3RkZXJyOmMuc3RkZXJyLG91dHB1dHM6Yy5vdXRwdXRzLHdlYldvcmtlcjpvfX12YXIgYj1haTt2YXIgc2k9bnVsbDtmdW5jdGlvbiBkdCgpe3JldHVybiBzaX12YXIgc2UsSWk9YGh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGl0ay13YXNtL2RpY29tQCR7a0F9L2Rpc3QvcGlwZWxpbmVzYDtmdW5jdGlvbiBQcyhBKXtzZT1BfWZ1bmN0aW9uIE4oKXtpZih0eXBlb2Ygc2U8InUiKXJldHVybiBzZTtsZXQgQT1EQSgpO3JldHVybiB0eXBlb2YgQTwidSI/QTpJaX12YXIgSWUsZ2k9bnVsbDtmdW5jdGlvbiBtdChBKXtJZT1BfWZ1bmN0aW9uIEYoKXtpZih0eXBlb2YgSWU8InUiKXJldHVybiBJZTtsZXQgQT1TQSgpO3JldHVybiB0eXBlb2YgQTwidSI/QTpnaX12YXIgVj1udWxsO2FzeW5jIGZ1bmN0aW9uIGh0KCl7bGV0IEE9RigpLGU9dHlwZW9mIEEhPSJzdHJpbmciJiZ0eXBlb2YgQT8uaHJlZjwidSI/QS5ocmVmOkE7Vj1hd2FpdCBvQShlKX1mdW5jdGlvbiBXcyhBKXtWPUF9YXN5bmMgZnVuY3Rpb24gSigpe2lmKFYhPT1udWxsKXJldHVybiBWLnRlcm1pbmF0ZWQmJmF3YWl0IGh0KCksVjtsZXQgQT1kdCgpO3JldHVybiBBIT09bnVsbD9BOihhd2FpdCBodCgpLFYpfWFzeW5jIGZ1bmN0aW9uIGxpKEEsZSx0PXt9KXtsZXQgcj1be3R5cGU6US5Kc29uQ29tcGF0aWJsZX0se3R5cGU6US5JbWFnZX1dLG49QTtpZihBIGluc3RhbmNlb2YgRmlsZSl7bGV0IFM9YXdhaXQgQS5hcnJheUJ1ZmZlcigpO249e3BhdGg6QS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoUyl9fWxldCBpPWU7aWYoZSBpbnN0YW5jZW9mIEZpbGUpe2xldCBTPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtpPXtwYXRoOmUubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KFMpfX1sZXQgbz1be3R5cGU6US5CaW5hcnlGaWxlLGRhdGE6bn0se3R5cGU6US5CaW5hcnlGaWxlLGRhdGE6aX1dLGc9W10sQz1uLnBhdGg7Zy5wdXNoKEMpO2xldCBsPWkucGF0aDtnLnB1c2gobCk7bGV0IHM9IjAiO2cucHVzaChzKTtsZXQgYT0iMSI7Zy5wdXNoKGEpLGcucHVzaCgiLS1tZW1vcnktaW8iKSx0LmNvbG9yT3V0cHV0JiZ0LmNvbG9yT3V0cHV0JiZnLnB1c2goIi0tY29sb3Itb3V0cHV0IiksdC5jb25maWdGaWxlJiZnLnB1c2goIi0tY29uZmlnLWZpbGUiLHQuY29uZmlnRmlsZS50b1N0cmluZygpKSx0LmZyYW1lJiZnLnB1c2goIi0tZnJhbWUiLHQuZnJhbWUudG9TdHJpbmcoKSksdC5ub1ByZXNlbnRhdGlvblN0YXRlT3V0cHV0JiZ0Lm5vUHJlc2VudGF0aW9uU3RhdGVPdXRwdXQmJmcucHVzaCgiLS1uby1wcmVzZW50YXRpb24tc3RhdGUtb3V0cHV0IiksdC5ub0JpdG1hcE91dHB1dCYmdC5ub0JpdG1hcE91dHB1dCYmZy5wdXNoKCItLW5vLWJpdG1hcC1vdXRwdXQiKTtsZXQgRT0iYXBwbHktcHJlc2VudGF0aW9uLXN0YXRlLXRvLWltYWdlIixCPXQ/LndlYldvcmtlcjtCPT09dm9pZCAwJiYoQj1hd2FpdCBKKCkpO2xldHt3ZWJXb3JrZXI6dSxyZXR1cm5WYWx1ZTpjLHN0ZGVycjpmLG91dHB1dHM6ZH09YXdhaXQgYihFLGcscixvLHtwaXBlbGluZUJhc2VVcmw6TigpLHBpcGVsaW5lV29ya2VyVXJsOkYoKSx3ZWJXb3JrZXI6Qixub0NvcHk6dD8ubm9Db3B5fSk7aWYoYyE9PTAmJmYhPT0iIil0aHJvdyBuZXcgRXJyb3IoZik7cmV0dXJue3dlYldvcmtlcjp1LHByZXNlbnRhdGlvblN0YXRlT3V0U3RyZWFtOmRbMF0/LmRhdGEsb3V0cHV0SW1hZ2U6ZFsxXT8uZGF0YX19dmFyIEJpPWxpO2FzeW5jIGZ1bmN0aW9uIENpKEEsZT17fSl7bGV0IHQ9W3t0eXBlOlEuQmluYXJ5U3RyZWFtfV0scj1BO2lmKEEgaW5zdGFuY2VvZiBGaWxlKXtsZXQgYz1hd2FpdCBBLmFycmF5QnVmZmVyKCk7cj17cGF0aDpBLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShjKX19bGV0IG49W3t0eXBlOlEuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG89ci5wYXRoO2kucHVzaChvKTtsZXQgZz0iMCI7aS5wdXNoKGcpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxlLnJlYWRGaWxlT25seSYmZS5yZWFkRmlsZU9ubHkmJmkucHVzaCgiLS1yZWFkLWZpbGUtb25seSIpLGUucmVhZERhdGFzZXQmJmUucmVhZERhdGFzZXQmJmkucHVzaCgiLS1yZWFkLWRhdGFzZXQiKSxlLnJlYWRYZmVyQXV0byYmZS5yZWFkWGZlckF1dG8mJmkucHVzaCgiLS1yZWFkLXhmZXItYXV0byIpLGUucmVhZFhmZXJEZXRlY3QmJmUucmVhZFhmZXJEZXRlY3QmJmkucHVzaCgiLS1yZWFkLXhmZXItZGV0ZWN0IiksZS5yZWFkWGZlckxpdHRsZSYmZS5yZWFkWGZlckxpdHRsZSYmaS5wdXNoKCItLXJlYWQteGZlci1saXR0bGUiKSxlLnJlYWRYZmVyQmlnJiZlLnJlYWRYZmVyQmlnJiZpLnB1c2goIi0tcmVhZC14ZmVyLWJpZyIpLGUucmVhZFhmZXJJbXBsaWNpdCYmZS5yZWFkWGZlckltcGxpY2l0JiZpLnB1c2goIi0tcmVhZC14ZmVyLWltcGxpY2l0IiksZS5hY2NlcHRPZGRMZW5ndGgmJmUuYWNjZXB0T2RkTGVuZ3RoJiZpLnB1c2goIi0tYWNjZXB0LW9kZC1sZW5ndGgiKSxlLmFzc3VtZUV2ZW5MZW5ndGgmJmUuYXNzdW1lRXZlbkxlbmd0aCYmaS5wdXNoKCItLWFzc3VtZS1ldmVuLWxlbmd0aCIpLGUuZW5hYmxlQ3AyNDYmJmUuZW5hYmxlQ3AyNDYmJmkucHVzaCgiLS1lbmFibGUtY3AyNDYiKSxlLmRpc2FibGVDcDI0NiYmZS5kaXNhYmxlQ3AyNDYmJmkucHVzaCgiLS1kaXNhYmxlLWNwMjQ2IiksZS5yZXRhaW5VbiYmZS5yZXRhaW5VbiYmaS5wdXNoKCItLXJldGFpbi11biIpLGUuY29udmVydFVuJiZlLmNvbnZlcnRVbiYmaS5wdXNoKCItLWNvbnZlcnQtdW4iKSxlLmVuYWJsZUNvcnJlY3Rpb24mJmUuZW5hYmxlQ29ycmVjdGlvbiYmaS5wdXNoKCItLWVuYWJsZS1jb3JyZWN0aW9uIiksZS5kaXNhYmxlQ29ycmVjdGlvbiYmZS5kaXNhYmxlQ29ycmVjdGlvbiYmaS5wdXNoKCItLWRpc2FibGUtY29ycmVjdGlvbiIpO2xldCBDPSJyZWFkLWRpY29tLWVuY2Fwc3VsYXRlZC1wZGYiLGw9ZT8ud2ViV29ya2VyO2w9PT12b2lkIDAmJihsPWF3YWl0IEooKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOmEsc3RkZXJyOkUsb3V0cHV0czpCfT1hd2FpdCBiKEMsaSx0LG4se3BpcGVsaW5lQmFzZVVybDpOKCkscGlwZWxpbmVXb3JrZXJVcmw6RigpLHdlYldvcmtlcjpsLG5vQ29weTplPy5ub0NvcHl9KTtpZihhIT09MCYmRSE9PSIiKXRocm93IG5ldyBFcnJvcihFKTtyZXR1cm57d2ViV29ya2VyOnMscGRmQmluYXJ5T3V0cHV0OihCWzBdPy5kYXRhKS5kYXRhfX12YXIgY2k9Q2k7YXN5bmMgZnVuY3Rpb24gdWkoQSxlPXt9KXtsZXQgdD1be3R5cGU6US5UZXh0U3RyZWFtfV0scj1BO2lmKEEgaW5zdGFuY2VvZiBGaWxlKXtsZXQgYz1hd2FpdCBBLmFycmF5QnVmZmVyKCk7cj17cGF0aDpBLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShjKX19bGV0IG49W3t0eXBlOlEuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG89ci5wYXRoO2kucHVzaChvKTtsZXQgZz0iMCI7aWYoaS5wdXNoKGcpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxlLnJlYWRGaWxlT25seSYmZS5yZWFkRmlsZU9ubHkmJmkucHVzaCgiLS1yZWFkLWZpbGUtb25seSIpLGUucmVhZERhdGFzZXQmJmUucmVhZERhdGFzZXQmJmkucHVzaCgiLS1yZWFkLWRhdGFzZXQiKSxlLnJlYWRYZmVyQXV0byYmZS5yZWFkWGZlckF1dG8mJmkucHVzaCgiLS1yZWFkLXhmZXItYXV0byIpLGUucmVhZFhmZXJEZXRlY3QmJmUucmVhZFhmZXJEZXRlY3QmJmkucHVzaCgiLS1yZWFkLXhmZXItZGV0ZWN0IiksZS5yZWFkWGZlckxpdHRsZSYmZS5yZWFkWGZlckxpdHRsZSYmaS5wdXNoKCItLXJlYWQteGZlci1saXR0bGUiKSxlLnJlYWRYZmVyQmlnJiZlLnJlYWRYZmVyQmlnJiZpLnB1c2goIi0tcmVhZC14ZmVyLWJpZyIpLGUucmVhZFhmZXJJbXBsaWNpdCYmZS5yZWFkWGZlckltcGxpY2l0JiZpLnB1c2goIi0tcmVhZC14ZmVyLWltcGxpY2l0IiksZS5wcm9jZXNzaW5nRGV0YWlscyYmZS5wcm9jZXNzaW5nRGV0YWlscyYmaS5wdXNoKCItLXByb2Nlc3NpbmctZGV0YWlscyIpLGUudW5rbm93blJlbGF0aW9uc2hpcCYmZS51bmtub3duUmVsYXRpb25zaGlwJiZpLnB1c2goIi0tdW5rbm93bi1yZWxhdGlvbnNoaXAiKSxlLmludmFsaWRJdGVtVmFsdWUmJmUuaW52YWxpZEl0ZW1WYWx1ZSYmaS5wdXNoKCItLWludmFsaWQtaXRlbS12YWx1ZSIpLGUuaWdub3JlQ29uc3RyYWludHMmJmUuaWdub3JlQ29uc3RyYWludHMmJmkucHVzaCgiLS1pZ25vcmUtY29uc3RyYWludHMiKSxlLmlnbm9yZUl0ZW1FcnJvcnMmJmUuaWdub3JlSXRlbUVycm9ycyYmaS5wdXNoKCItLWlnbm9yZS1pdGVtLWVycm9ycyIpLGUuc2tpcEludmFsaWRJdGVtcyYmZS5za2lwSW52YWxpZEl0ZW1zJiZpLnB1c2goIi0tc2tpcC1pbnZhbGlkLWl0ZW1zIiksZS5kaXNhYmxlVnJDaGVja2VyJiZlLmRpc2FibGVWckNoZWNrZXImJmkucHVzaCgiLS1kaXNhYmxlLXZyLWNoZWNrZXIiKSxlLmNoYXJzZXRSZXF1aXJlJiZlLmNoYXJzZXRSZXF1aXJlJiZpLnB1c2goIi0tY2hhcnNldC1yZXF1aXJlIiksZS5jaGFyc2V0QXNzdW1lJiZpLnB1c2goIi0tY2hhcnNldC1hc3N1bWUiLGUuY2hhcnNldEFzc3VtZS50b1N0cmluZygpKSxlLmNoYXJzZXRDaGVja0FsbCYmZS5jaGFyc2V0Q2hlY2tBbGwmJmkucHVzaCgiLS1jaGFyc2V0LWNoZWNrLWFsbCIpLGUuY29udmVydFRvVXRmOCYmZS5jb252ZXJ0VG9VdGY4JiZpLnB1c2goIi0tY29udmVydC10by11dGY4IiksZS51cmxQcmVmaXgmJmkucHVzaCgiLS11cmwtcHJlZml4IixlLnVybFByZWZpeC50b1N0cmluZygpKSxlLmh0bWwzMiYmZS5odG1sMzImJmkucHVzaCgiLS1odG1sLTMyIiksZS5odG1sNDAmJmUuaHRtbDQwJiZpLnB1c2goIi0taHRtbC00MCIpLGUueGh0bWwxMSYmZS54aHRtbDExJiZpLnB1c2goIi0teGh0bWwtMTEiKSxlLmFkZERvY3VtZW50VHlwZSYmZS5hZGREb2N1bWVudFR5cGUmJmkucHVzaCgiLS1hZGQtZG9jdW1lbnQtdHlwZSIpLGUuY3NzUmVmZXJlbmNlKXtsZXQgYz1uLmxlbmd0aC50b1N0cmluZygpO24ucHVzaCh7dHlwZTpRLlRleHRTdHJlYW0sZGF0YTp7ZGF0YTplLmNzc1JlZmVyZW5jZX19KSxpLnB1c2goIi0tY3NzLXJlZmVyZW5jZSIsYyl9aWYoZS5jc3NGaWxlKXtsZXQgYz1lLmNzc0ZpbGUsZj1jO2lmKGMgaW5zdGFuY2VvZiBGaWxlKXtsZXQgaz1hd2FpdCBjLmFycmF5QnVmZmVyKCk7Zj17cGF0aDpjLm5hbWUsZGF0YTpuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoayl9fWkucHVzaCgiLS1jc3MtZmlsZSIpLG4ucHVzaCh7dHlwZTpRLlRleHRGaWxlLGRhdGE6Zn0pO2xldCBkPWMgaW5zdGFuY2VvZiBGaWxlP2MubmFtZTpjLnBhdGg7aS5wdXNoKGQpfWUuZXhwYW5kSW5saW5lJiZlLmV4cGFuZElubGluZSYmaS5wdXNoKCItLWV4cGFuZC1pbmxpbmUiKSxlLm5ldmVyRXhwYW5kSW5saW5lJiZlLm5ldmVyRXhwYW5kSW5saW5lJiZpLnB1c2goIi0tbmV2ZXItZXhwYW5kLWlubGluZSIpLGUuYWx3YXlzRXhwYW5kSW5saW5lJiZlLmFsd2F5c0V4cGFuZElubGluZSYmaS5wdXNoKCItLWFsd2F5cy1leHBhbmQtaW5saW5lIiksZS5yZW5kZXJGdWxsRGF0YSYmZS5yZW5kZXJGdWxsRGF0YSYmaS5wdXNoKCItLXJlbmRlci1mdWxsLWRhdGEiKSxlLnNlY3Rpb25UaXRsZUlubGluZSYmZS5zZWN0aW9uVGl0bGVJbmxpbmUmJmkucHVzaCgiLS1zZWN0aW9uLXRpdGxlLWlubGluZSIpLGUuZG9jdW1lbnRUeXBlVGl0bGUmJmUuZG9jdW1lbnRUeXBlVGl0bGUmJmkucHVzaCgiLS1kb2N1bWVudC10eXBlLXRpdGxlIiksZS5wYXRpZW50SW5mb1RpdGxlJiZlLnBhdGllbnRJbmZvVGl0bGUmJmkucHVzaCgiLS1wYXRpZW50LWluZm8tdGl0bGUiKSxlLm5vRG9jdW1lbnRIZWFkZXImJmUubm9Eb2N1bWVudEhlYWRlciYmaS5wdXNoKCItLW5vLWRvY3VtZW50LWhlYWRlciIpLGUucmVuZGVySW5saW5lQ29kZXMmJmUucmVuZGVySW5saW5lQ29kZXMmJmkucHVzaCgiLS1yZW5kZXItaW5saW5lLWNvZGVzIiksZS5jb25jZXB0TmFtZUNvZGVzJiZlLmNvbmNlcHROYW1lQ29kZXMmJmkucHVzaCgiLS1jb25jZXB0LW5hbWUtY29kZXMiKSxlLm51bWVyaWNVbml0Q29kZXMmJmUubnVtZXJpY1VuaXRDb2RlcyYmaS5wdXNoKCItLW51bWVyaWMtdW5pdC1jb2RlcyIpLGUuY29kZVZhbHVlVW5pdCYmZS5jb2RlVmFsdWVVbml0JiZpLnB1c2goIi0tY29kZS12YWx1ZS11bml0IiksZS5jb2RlTWVhbmluZ1VuaXQmJmUuY29kZU1lYW5pbmdVbml0JiZpLnB1c2goIi0tY29kZS1tZWFuaW5nLXVuaXQiKSxlLnJlbmRlckFsbENvZGVzJiZlLnJlbmRlckFsbENvZGVzJiZpLnB1c2goIi0tcmVuZGVyLWFsbC1jb2RlcyIpLGUuY29kZURldGFpbHNUb29sdGlwJiZlLmNvZGVEZXRhaWxzVG9vbHRpcCYmaS5wdXNoKCItLWNvZGUtZGV0YWlscy10b29sdGlwIik7bGV0IEM9InN0cnVjdHVyZWQtcmVwb3J0LXRvLWh0bWwiLGw9ZT8ud2ViV29ya2VyO2w9PT12b2lkIDAmJihsPWF3YWl0IEooKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOmEsc3RkZXJyOkUsb3V0cHV0czpCfT1hd2FpdCBiKEMsaSx0LG4se3BpcGVsaW5lQmFzZVVybDpOKCkscGlwZWxpbmVXb3JrZXJVcmw6RigpLHdlYldvcmtlcjpsLG5vQ29weTplPy5ub0NvcHl9KTtpZihhIT09MCYmRSE9PSIiKXRocm93IG5ldyBFcnJvcihFKTtyZXR1cm57d2ViV29ya2VyOnMsb3V0cHV0VGV4dDooQlswXT8uZGF0YSkuZGF0YX19dmFyIEVpPXVpO2FzeW5jIGZ1bmN0aW9uIFFpKEEsZT17fSl7bGV0IHQ9W3t0eXBlOlEuVGV4dFN0cmVhbX1dLHI9QTtpZihBIGluc3RhbmNlb2YgRmlsZSl7bGV0IGM9YXdhaXQgQS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6QS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoYyl9fWxldCBuPVt7dHlwZTpRLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxvPXIucGF0aDtpLnB1c2gobyk7bGV0IGc9IjAiO2kucHVzaChnKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksZS51bmtub3duUmVsYXRpb25zaGlwJiZlLnVua25vd25SZWxhdGlvbnNoaXAmJmkucHVzaCgiLS11bmtub3duLXJlbGF0aW9uc2hpcCIpLGUuaW52YWxpZEl0ZW1WYWx1ZSYmZS5pbnZhbGlkSXRlbVZhbHVlJiZpLnB1c2goIi0taW52YWxpZC1pdGVtLXZhbHVlIiksZS5pZ25vcmVDb25zdHJhaW50cyYmZS5pZ25vcmVDb25zdHJhaW50cyYmaS5wdXNoKCItLWlnbm9yZS1jb25zdHJhaW50cyIpLGUuaWdub3JlSXRlbUVycm9ycyYmZS5pZ25vcmVJdGVtRXJyb3JzJiZpLnB1c2goIi0taWdub3JlLWl0ZW0tZXJyb3JzIiksZS5za2lwSW52YWxpZEl0ZW1zJiZlLnNraXBJbnZhbGlkSXRlbXMmJmkucHVzaCgiLS1za2lwLWludmFsaWQtaXRlbXMiKSxlLm5vRG9jdW1lbnRIZWFkZXImJmUubm9Eb2N1bWVudEhlYWRlciYmaS5wdXNoKCItLW5vLWRvY3VtZW50LWhlYWRlciIpLGUubnVtYmVyTmVzdGVkSXRlbXMmJmUubnVtYmVyTmVzdGVkSXRlbXMmJmkucHVzaCgiLS1udW1iZXItbmVzdGVkLWl0ZW1zIiksZS5zaG9ydGVuTG9uZ1ZhbHVlcyYmZS5zaG9ydGVuTG9uZ1ZhbHVlcyYmaS5wdXNoKCItLXNob3J0ZW4tbG9uZy12YWx1ZXMiKSxlLnByaW50SW5zdGFuY2VVaWQmJmUucHJpbnRJbnN0YW5jZVVpZCYmaS5wdXNoKCItLXByaW50LWluc3RhbmNlLXVpZCIpLGUucHJpbnRTb3BjbGFzc1Nob3J0JiZlLnByaW50U29wY2xhc3NTaG9ydCYmaS5wdXNoKCItLXByaW50LXNvcGNsYXNzLXNob3J0IiksZS5wcmludFNvcGNsYXNzTG9uZyYmZS5wcmludFNvcGNsYXNzTG9uZyYmaS5wdXNoKCItLXByaW50LXNvcGNsYXNzLWxvbmciKSxlLnByaW50U29wY2xhc3NVaWQmJmUucHJpbnRTb3BjbGFzc1VpZCYmaS5wdXNoKCItLXByaW50LXNvcGNsYXNzLXVpZCIpLGUucHJpbnRBbGxDb2RlcyYmZS5wcmludEFsbENvZGVzJiZpLnB1c2goIi0tcHJpbnQtYWxsLWNvZGVzIiksZS5wcmludEludmFsaWRDb2RlcyYmZS5wcmludEludmFsaWRDb2RlcyYmaS5wdXNoKCItLXByaW50LWludmFsaWQtY29kZXMiKSxlLnByaW50VGVtcGxhdGVJZCYmZS5wcmludFRlbXBsYXRlSWQmJmkucHVzaCgiLS1wcmludC10ZW1wbGF0ZS1pZCIpLGUuaW5kaWNhdGVFbmhhbmNlZCYmZS5pbmRpY2F0ZUVuaGFuY2VkJiZpLnB1c2goIi0taW5kaWNhdGUtZW5oYW5jZWQiKSxlLnByaW50Q29sb3ImJmUucHJpbnRDb2xvciYmaS5wdXNoKCItLXByaW50LWNvbG9yIik7bGV0IEM9InN0cnVjdHVyZWQtcmVwb3J0LXRvLXRleHQiLGw9ZT8ud2ViV29ya2VyO2w9PT12b2lkIDAmJihsPWF3YWl0IEooKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOmEsc3RkZXJyOkUsb3V0cHV0czpCfT1hd2FpdCBiKEMsaSx0LG4se3BpcGVsaW5lQmFzZVVybDpOKCkscGlwZWxpbmVXb3JrZXJVcmw6RigpLHdlYldvcmtlcjpsLG5vQ29weTplPy5ub0NvcHl9KTtpZihhIT09MCYmRSE9PSIiKXRocm93IG5ldyBFcnJvcihFKTtyZXR1cm57d2ViV29ya2VyOnMsb3V0cHV0VGV4dDooQlswXT8uZGF0YSkuZGF0YX19dmFyIGZpPVFpO2FzeW5jIGZ1bmN0aW9uIHBpKEEsZT17fSl7bGV0IHQ9W3t0eXBlOlEuSnNvbkNvbXBhdGlibGV9XSxyPUE7aWYoQSBpbnN0YW5jZW9mIEZpbGUpe2xldCB1PWF3YWl0IEEuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOkEubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KHUpfX1sZXQgbj1be3R5cGU6US5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbz1yLnBhdGg7aS5wdXNoKG8pO2xldCBnPSIwIjtpZihpLnB1c2goZyksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHR5cGVvZiBlLnRhZ3NUb1JlYWQ8InUiKXtsZXQgdT1uLmxlbmd0aC50b1N0cmluZygpO24ucHVzaCh7dHlwZTpRLkpzb25Db21wYXRpYmxlLGRhdGE6ZS50YWdzVG9SZWFkfSksaS5wdXNoKCItLXRhZ3MtdG8tcmVhZCIsdSl9bGV0IEM9InJlYWQtZGljb20tdGFncyIse3dlYldvcmtlcjpsLHJldHVyblZhbHVlOnMsc3RkZXJyOmEsb3V0cHV0czpFfT1hd2FpdCBiKEMsaSx0LG4se3BpcGVsaW5lQmFzZVVybDpOKCkscGlwZWxpbmVXb3JrZXJVcmw6RigpLHdlYldvcmtlcjplPy53ZWJXb3JrZXI/P251bGx9KTtpZihzIT09MCl0aHJvdyBuZXcgRXJyb3IoYSk7cmV0dXJue3dlYldvcmtlcjpsLHRhZ3M6RVswXS5kYXRhfX12YXIgZGk9cGk7YXN5bmMgZnVuY3Rpb24gbWkoQSxlPSExLHQ9e30pe2xldCByPVt7dHlwZTpRLkltYWdlfSx7dHlwZTpRLkpzb25Db21wYXRpYmxlfV0sbj1bXSxpPVtdLG89IjAiO2kucHVzaChvKTtsZXQgZz0iMSI7aS5wdXNoKGcpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxpLnB1c2goIi0taW5wdXQtaW1hZ2VzIiksQS5mb3JFYWNoKHU9PntuLnB1c2goe3R5cGU6US5CaW5hcnlGaWxlLGRhdGE6dX0pLGkucHVzaCh1LnBhdGgpfSksdHlwZW9mIGU8InUiJiZlJiZpLnB1c2goIi0tc2luZ2xlLXNvcnRlZC1zZXJpZXMiKTtsZXQgQz0icmVhZC1pbWFnZS1kaWNvbS1maWxlLXNlcmllcyIse3dlYldvcmtlcjpsLHJldHVyblZhbHVlOnMsc3RkZXJyOmEsb3V0cHV0czpFfT1hd2FpdCBiKEMsaSxyLG4se3BpcGVsaW5lQmFzZVVybDpOKCkscGlwZWxpbmVXb3JrZXJVcmw6RigpLHdlYldvcmtlcjp0Py53ZWJXb3JrZXI/P251bGx9KTtpZihzIT09MCl0aHJvdyBuZXcgRXJyb3IoYSk7cmV0dXJue3dlYldvcmtlcjpsLG91dHB1dEltYWdlOkVbMF0uZGF0YSxzb3J0ZWRGaWxlbmFtZXM6RVsxXS5kYXRhfX12YXIgZ2U9bWk7dmFyIGhpPXR5cGVvZiBnbG9iYWxUaGlzLm5hdmlnYXRvcj8uaGFyZHdhcmVDb25jdXJyZW5jeT09Im51bWJlciI/Z2xvYmFsVGhpcy5uYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeTo0LHl0PTg7YXN5bmMgZnVuY3Rpb24geWkoQT17aW5wdXRJbWFnZXM6W119KXtsZXQgZT1BLndlYldvcmtlclBvb2w/P251bGw7ZT09PW51bGwmJihlPW5ldyBHQShoaSxnZSkpO2xldCB0PVtdO2lmKEEuaW5wdXRJbWFnZXMubGVuZ3RoPDEpdGhyb3cgbmV3IEVycm9yKCciaW5wdXQtaW1hZ2VzIiBvcHRpb24gbXVzdCBoYXZlIGEgbGVuZ3RoID4gMScpO2lmKGF3YWl0IFByb21pc2UuYWxsKEEuaW5wdXRJbWFnZXMubWFwKGFzeW5jIHI9PntsZXQgbj1yO2lmKHIgaW5zdGFuY2VvZiBGaWxlKXtsZXQgaT1hd2FpdCByLmFycmF5QnVmZmVyKCk7bj17cGF0aDpyLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShpKX19dC5wdXNoKG4pfSkpLEEuc2luZ2xlU29ydGVkU2VyaWVzKXtsZXQgcj1bXTtmb3IobGV0IEM9MDtDPHQubGVuZ3RoO0MrPXl0KXtsZXQgbD10LnNsaWNlKEMsQyt5dCk7ci5wdXNoKFtsLEEuc2luZ2xlU29ydGVkU2VyaWVzLHt9XSl9bGV0IG49YXdhaXQgZS5ydW5UYXNrcyhyKS5wcm9taXNlLGk9bi5tYXAoQz0+Qy5vdXRwdXRJbWFnZSksbz1uLnJlZHVjZSgoQyxsKT0+Qy5jb25jYXQobC5zb3J0ZWRGaWxlbmFtZXMpLFtdKTtyZXR1cm57b3V0cHV0SW1hZ2U6VUEoaSksd2ViV29ya2VyUG9vbDplLHNvcnRlZEZpbGVuYW1lczpvfX1lbHNle2xldCByPVtbdCxBLnNpbmdsZVNvcnRlZFNlcmllcyx7fV1dLG49YXdhaXQgZS5ydW5UYXNrcyhyKS5wcm9taXNlO3JldHVybntvdXRwdXRJbWFnZTpuWzBdLm91dHB1dEltYWdlLHdlYldvcmtlclBvb2w6ZSxzb3J0ZWRGaWxlbmFtZXM6blswXS5zb3J0ZWRGaWxlbmFtZXN9fX12YXIgd2k9eWk7dmFyIHd0PSdkYXRhOnRleHQvamF2YXNjcmlwdDtjaGFyc2V0PXV0Zi04LHZhciB0dD1PYmplY3QuZGVmaW5lUHJvcGVydHk7dmFyIGV0PShBLEkpPT57Zm9yKHZhciB0IGluIEkpdHQoQSx0LHtnZXQ6SVt0XSxlbnVtZXJhYmxlOiEwfSl9O3ZhciB2QT1TeW1ib2woIkNvbWxpbmsucHJveHkiKSxndD1TeW1ib2woIkNvbWxpbmsuZW5kcG9pbnQiKSxydD1TeW1ib2woIkNvbWxpbmsucmVsZWFzZVByb3h5IiksbUE9U3ltYm9sKCJDb21saW5rLmZpbmFsaXplciIpLGVBPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSwkQT1BPT50eXBlb2YgQT09Im9iamVjdCImJkEhPT1udWxsfHx0eXBlb2YgQT09ImZ1bmN0aW9uIixpdD17Y2FuSGFuZGxlOkE9PiRBKEEpJiZBW3ZBXSxzZXJpYWxpemUoQSl7bGV0e3BvcnQxOkkscG9ydDI6dH09bmV3IE1lc3NhZ2VDaGFubmVsO3JldHVybiBvQShBLEkpLFt0LFt0XV19LGRlc2VyaWFsaXplKEEpe3JldHVybiBBLnN0YXJ0KCksc3QoQSl9fSxvdD17Y2FuSGFuZGxlOkE9PiRBKEEpJiZlQSBpbiBBLHNlcmlhbGl6ZSh7dmFsdWU6QX0pe2xldCBJO3JldHVybiBBIGluc3RhbmNlb2YgRXJyb3I/ST17aXNFcnJvcjohMCx2YWx1ZTp7bWVzc2FnZTpBLm1lc3NhZ2UsbmFtZTpBLm5hbWUsc3RhY2s6QS5zdGFja319Okk9e2lzRXJyb3I6ITEsdmFsdWU6QX0sW0ksW11dfSxkZXNlcmlhbGl6ZShBKXt0aHJvdyBBLmlzRXJyb3I/T2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoQS52YWx1ZS5tZXNzYWdlKSxBLnZhbHVlKTpBLnZhbHVlfX0sQUk9bmV3IE1hcChbWyJwcm94eSIsaXRdLFsidGhyb3ciLG90XV0pO2Z1bmN0aW9uIEJ0KEEsSSl7Zm9yKGxldCB0IG9mIEEpaWYoST09PXR8fHQ9PT0iKiJ8fHQgaW5zdGFuY2VvZiBSZWdFeHAmJnQudGVzdChJKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBvQShBLEk9Z2xvYmFsVGhpcyx0PVsiKiJdKXtJLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uIGUoZyl7aWYoIWd8fCFnLmRhdGEpcmV0dXJuO2lmKCFCdCh0LGcub3JpZ2luKSl7Y29uc29sZS53YXJuKGBJbnZhbGlkIG9yaWdpbiBcJyR7Zy5vcmlnaW59XCcgZm9yIGNvbWxpbmsgcHJveHlgKTtyZXR1cm59bGV0e2lkOnIsdHlwZTppLHBhdGg6c309T2JqZWN0LmFzc2lnbih7cGF0aDpbXX0sZy5kYXRhKSxhPShnLmRhdGEuYXJndW1lbnRMaXN0fHxbXSkubWFwKGIpLG47dHJ5e2xldCBDPXMuc2xpY2UoMCwtMSkucmVkdWNlKChmLFEpPT5mW1FdLEEpLG89cy5yZWR1Y2UoKGYsUSk9PmZbUV0sQSk7c3dpdGNoKGkpe2Nhc2UiR0VUIjpuPW87YnJlYWs7Y2FzZSJTRVQiOkNbcy5zbGljZSgtMSlbMF1dPWIoZy5kYXRhLnZhbHVlKSxuPSEwO2JyZWFrO2Nhc2UiQVBQTFkiOm49by5hcHBseShDLGEpO2JyZWFrO2Nhc2UiQ09OU1RSVUNUIjp7bGV0IGY9bmV3IG8oLi4uYSk7bj1hdChmKX1icmVhaztjYXNlIkVORFBPSU5UIjp7bGV0e3BvcnQxOmYscG9ydDI6UX09bmV3IE1lc3NhZ2VDaGFubmVsO29BKEEsUSksbj1TQShmLFtmXSl9YnJlYWs7Y2FzZSJSRUxFQVNFIjpuPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2goQyl7bj17dmFsdWU6QyxbZUFdOjB9fVByb21pc2UucmVzb2x2ZShuKS5jYXRjaChDPT4oe3ZhbHVlOkMsW2VBXTowfSkpLnRoZW4oQz0+e2xldFtvLGZdPWlBKEMpO0kucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG8pLHtpZDpyfSksZiksaT09PSJSRUxFQVNFIiYmKEkucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZSksSUkoSSksbUEgaW4gQSYmdHlwZW9mIEFbbUFdPT0iZnVuY3Rpb24iJiZBW21BXSgpKX0pLmNhdGNoKEM9PntsZXRbbyxmXT1pQSh7dmFsdWU6bmV3IFR5cGVFcnJvcigiVW5zZXJpYWxpemFibGUgcmV0dXJuIHZhbHVlIiksW2VBXTowfSk7SS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbykse2lkOnJ9KSxmKX0pfSksSS5zdGFydCYmSS5zdGFydCgpfWZ1bmN0aW9uIEN0KEEpe3JldHVybiBBLmNvbnN0cnVjdG9yLm5hbWU9PT0iTWVzc2FnZVBvcnQifWZ1bmN0aW9uIElJKEEpe0N0KEEpJiZBLmNsb3NlKCl9ZnVuY3Rpb24gc3QoQSxJKXtyZXR1cm4gcEEoQSxbXSxJKX1mdW5jdGlvbiB0QShBKXtpZihBKXRocm93IG5ldyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIil9ZnVuY3Rpb24gdEkoQSl7cmV0dXJuIE0oQSx7dHlwZToiUkVMRUFTRSJ9KS50aGVuKCgpPT57SUkoQSl9KX12YXIgZ0E9bmV3IFdlYWtNYXAsckE9IkZpbmFsaXphdGlvblJlZ2lzdHJ5ImluIGdsb2JhbFRoaXMmJm5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShBPT57bGV0IEk9KGdBLmdldChBKXx8MCktMTtnQS5zZXQoQSxJKSxJPT09MCYmdEkoQSl9KTtmdW5jdGlvbiBRdChBLEkpe2xldCB0PShnQS5nZXQoSSl8fDApKzE7Z0Euc2V0KEksdCksckEmJnJBLnJlZ2lzdGVyKEEsSSxBKX1mdW5jdGlvbiBudChBKXtyQSYmckEudW5yZWdpc3RlcihBKX1mdW5jdGlvbiBwQShBLEk9W10sdD1mdW5jdGlvbigpe30pe2xldCBlPSExLGc9bmV3IFByb3h5KHQse2dldChyLGkpe2lmKHRBKGUpLGk9PT1ydClyZXR1cm4oKT0+e250KGcpLHRJKEEpLGU9ITB9O2lmKGk9PT0idGhlbiIpe2lmKEkubGVuZ3RoPT09MClyZXR1cm57dGhlbjooKT0+Z307bGV0IHM9TShBLHt0eXBlOiJHRVQiLHBhdGg6SS5tYXAoYT0+YS50b1N0cmluZygpKX0pLnRoZW4oYik7cmV0dXJuIHMudGhlbi5iaW5kKHMpfXJldHVybiBwQShBLFsuLi5JLGldKX0sc2V0KHIsaSxzKXt0QShlKTtsZXRbYSxuXT1pQShzKTtyZXR1cm4gTShBLHt0eXBlOiJTRVQiLHBhdGg6Wy4uLkksaV0ubWFwKEM9PkMudG9TdHJpbmcoKSksdmFsdWU6YX0sbikudGhlbihiKX0sYXBwbHkocixpLHMpe3RBKGUpO2xldCBhPUlbSS5sZW5ndGgtMV07aWYoYT09PWd0KXJldHVybiBNKEEse3R5cGU6IkVORFBPSU5UIn0pLnRoZW4oYik7aWYoYT09PSJiaW5kIilyZXR1cm4gcEEoQSxJLnNsaWNlKDAsLTEpKTtsZXRbbixDXT1fQShzKTtyZXR1cm4gTShBLHt0eXBlOiJBUFBMWSIscGF0aDpJLm1hcChvPT5vLnRvU3RyaW5nKCkpLGFyZ3VtZW50TGlzdDpufSxDKS50aGVuKGIpfSxjb25zdHJ1Y3QocixpKXt0QShlKTtsZXRbcyxhXT1fQShpKTtyZXR1cm4gTShBLHt0eXBlOiJDT05TVFJVQ1QiLHBhdGg6SS5tYXAobj0+bi50b1N0cmluZygpKSxhcmd1bWVudExpc3Q6c30sYSkudGhlbihiKX19KTtyZXR1cm4gUXQoZyxBKSxnfWZ1bmN0aW9uIEV0KEEpe3JldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLEEpfWZ1bmN0aW9uIF9BKEEpe2xldCBJPUEubWFwKGlBKTtyZXR1cm5bSS5tYXAodD0+dFswXSksRXQoSS5tYXAodD0+dFsxXSkpXX12YXIgZUk9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gU0EoQSxJKXtyZXR1cm4gZUkuc2V0KEEsSSksQX1mdW5jdGlvbiBhdChBKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihBLHtbdkFdOiEwfSl9ZnVuY3Rpb24gaUEoQSl7Zm9yKGxldFtJLHRdb2YgQUkpaWYodC5jYW5IYW5kbGUoQSkpe2xldFtlLGddPXQuc2VyaWFsaXplKEEpO3JldHVyblt7dHlwZToiSEFORExFUiIsbmFtZTpJLHZhbHVlOmV9LGddfXJldHVyblt7dHlwZToiUkFXIix2YWx1ZTpBfSxlSS5nZXQoQSl8fFtdXX1mdW5jdGlvbiBiKEEpe3N3aXRjaChBLnR5cGUpe2Nhc2UiSEFORExFUiI6cmV0dXJuIEFJLmdldChBLm5hbWUpLmRlc2VyaWFsaXplKEEudmFsdWUpO2Nhc2UiUkFXIjpyZXR1cm4gQS52YWx1ZX19ZnVuY3Rpb24gTShBLEksdCl7cmV0dXJuIG5ldyBQcm9taXNlKGU9PntsZXQgZz1jdCgpO0EuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gcihpKXshaS5kYXRhfHwhaS5kYXRhLmlkfHxpLmRhdGEuaWQhPT1nfHwoQS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixyKSxlKGkuZGF0YSkpfSksQS5zdGFydCYmQS5zdGFydCgpLEEucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbih7aWQ6Z30sSSksdCl9KX1mdW5jdGlvbiBjdCgpe3JldHVybiBuZXcgQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCk9Pk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKS5qb2luKCItIil9ZnVuY3Rpb24gVyhBLEkpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBBLmFwcGx5KEksYXJndW1lbnRzKX19dmFye3RvU3RyaW5nOmZ0fT1PYmplY3QucHJvdG90eXBlLHtnZXRQcm90b3R5cGVPZjpOQX09T2JqZWN0LENBPShBPT5JPT57bGV0IHQ9ZnQuY2FsbChJKTtyZXR1cm4gQVt0XXx8KEFbdF09dC5zbGljZSg4LC0xKS50b0xvd2VyQ2FzZSgpKX0pKE9iamVjdC5jcmVhdGUobnVsbCkpLFU9QT0+KEE9QS50b0xvd2VyQ2FzZSgpLEk9PkNBKEkpPT09QSksc0E9QT0+ST0+dHlwZW9mIEk9PT1BLHtpc0FycmF5OnF9PUFycmF5LFo9c0EoInVuZGVmaW5lZCIpO2Z1bmN0aW9uIGx0KEEpe3JldHVybiBBIT09bnVsbCYmIVooQSkmJkEuY29uc3RydWN0b3IhPT1udWxsJiYhWihBLmNvbnN0cnVjdG9yKSYmRihBLmNvbnN0cnVjdG9yLmlzQnVmZmVyKSYmQS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihBKX12YXIgb0k9VSgiQXJyYXlCdWZmZXIiKTtmdW5jdGlvbiBEdChBKXtsZXQgSTtyZXR1cm4gdHlwZW9mIEFycmF5QnVmZmVyPCJ1IiYmQXJyYXlCdWZmZXIuaXNWaWV3P0k9QXJyYXlCdWZmZXIuaXNWaWV3KEEpOkk9QSYmQS5idWZmZXImJm9JKEEuYnVmZmVyKSxJfXZhciB1dD1zQSgic3RyaW5nIiksRj1zQSgiZnVuY3Rpb24iKSxCST1zQSgibnVtYmVyIiksUUE9QT0+QSE9PW51bGwmJnR5cGVvZiBBPT0ib2JqZWN0IixodD1BPT5BPT09ITB8fEE9PT0hMSxCQT1BPT57aWYoQ0EoQSkhPT0ib2JqZWN0IilyZXR1cm4hMTtsZXQgST1OQShBKTtyZXR1cm4oST09PW51bGx8fEk9PT1PYmplY3QucHJvdG90eXBlfHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoSSk9PT1udWxsKSYmIShTeW1ib2wudG9TdHJpbmdUYWcgaW4gQSkmJiEoU3ltYm9sLml0ZXJhdG9yIGluIEEpfSxkdD1VKCJEYXRlIikseXQ9VSgiRmlsZSIpLHd0PVUoIkJsb2IiKSxtdD1VKCJGaWxlTGlzdCIpLHB0PUE9PlFBKEEpJiZGKEEucGlwZSksU3Q9QT0+e2xldCBJO3JldHVybiBBJiYodHlwZW9mIEZvcm1EYXRhPT0iZnVuY3Rpb24iJiZBIGluc3RhbmNlb2YgRm9ybURhdGF8fEYoQS5hcHBlbmQpJiYoKEk9Q0EoQSkpPT09ImZvcm1kYXRhInx8ST09PSJvYmplY3QiJiZGKEEudG9TdHJpbmcpJiZBLnRvU3RyaW5nKCk9PT0iW29iamVjdCBGb3JtRGF0YV0iKSl9LEZ0PVUoIlVSTFNlYXJjaFBhcmFtcyIpLFJ0PUE9PkEudHJpbT9BLnRyaW0oKTpBLnJlcGxhY2UoL15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nLCIiKTtmdW5jdGlvbiBWKEEsSSx7YWxsT3duS2V5czp0PSExfT17fSl7aWYoQT09PW51bGx8fHR5cGVvZiBBPiJ1IilyZXR1cm47bGV0IGUsZztpZih0eXBlb2YgQSE9Im9iamVjdCImJihBPVtBXSkscShBKSlmb3IoZT0wLGc9QS5sZW5ndGg7ZTxnO2UrKylJLmNhbGwobnVsbCxBW2VdLGUsQSk7ZWxzZXtsZXQgcj10P09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEEpOk9iamVjdC5rZXlzKEEpLGk9ci5sZW5ndGgscztmb3IoZT0wO2U8aTtlKyspcz1yW2VdLEkuY2FsbChudWxsLEFbc10scyxBKX19ZnVuY3Rpb24gQ0koQSxJKXtJPUkudG9Mb3dlckNhc2UoKTtsZXQgdD1PYmplY3Qua2V5cyhBKSxlPXQubGVuZ3RoLGc7Zm9yKDtlLS0gPjA7KWlmKGc9dFtlXSxJPT09Zy50b0xvd2VyQ2FzZSgpKXJldHVybiBnO3JldHVybiBudWxsfXZhciBzST10eXBlb2YgZ2xvYmFsVGhpczwidSI/Z2xvYmFsVGhpczp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6Z2xvYmFsLFFJPUE9PiFaKEEpJiZBIT09c0k7ZnVuY3Rpb24gUkEoKXtsZXR7Y2FzZWxlc3M6QX09UUkodGhpcykmJnRoaXN8fHt9LEk9e30sdD0oZSxnKT0+e2xldCByPUEmJkNJKEksZyl8fGc7QkEoSVtyXSkmJkJBKGUpP0lbcl09UkEoSVtyXSxlKTpCQShlKT9JW3JdPVJBKHt9LGUpOnEoZSk/SVtyXT1lLnNsaWNlKCk6SVtyXT1lfTtmb3IobGV0IGU9MCxnPWFyZ3VtZW50cy5sZW5ndGg7ZTxnO2UrKylhcmd1bWVudHNbZV0mJlYoYXJndW1lbnRzW2VdLHQpO3JldHVybiBJfXZhciBOdD0oQSxJLHQse2FsbE93bktleXM6ZX09e30pPT4oVihJLChnLHIpPT57dCYmRihnKT9BW3JdPVcoZyx0KTpBW3JdPWd9LHthbGxPd25LZXlzOmV9KSxBKSxVdD1BPT4oQS5jaGFyQ29kZUF0KDApPT09NjUyNzkmJihBPUEuc2xpY2UoMSkpLEEpLEd0PShBLEksdCxlKT0+e0EucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoSS5wcm90b3R5cGUsZSksQS5wcm90b3R5cGUuY29uc3RydWN0b3I9QSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQSwic3VwZXIiLHt2YWx1ZTpJLnByb3RvdHlwZX0pLHQmJk9iamVjdC5hc3NpZ24oQS5wcm90b3R5cGUsdCl9LGt0PShBLEksdCxlKT0+e2xldCBnLHIsaSxzPXt9O2lmKEk9SXx8e30sQT09bnVsbClyZXR1cm4gSTtkb3tmb3IoZz1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhBKSxyPWcubGVuZ3RoO3ItLSA+MDspaT1nW3JdLCghZXx8ZShpLEEsSSkpJiYhc1tpXSYmKElbaV09QVtpXSxzW2ldPSEwKTtBPXQhPT0hMSYmTkEoQSl9d2hpbGUoQSYmKCF0fHx0KEEsSSkpJiZBIT09T2JqZWN0LnByb3RvdHlwZSk7cmV0dXJuIEl9LEx0PShBLEksdCk9PntBPVN0cmluZyhBKSwodD09PXZvaWQgMHx8dD5BLmxlbmd0aCkmJih0PUEubGVuZ3RoKSx0LT1JLmxlbmd0aDtsZXQgZT1BLmluZGV4T2YoSSx0KTtyZXR1cm4gZSE9PS0xJiZlPT09dH0sSnQ9QT0+e2lmKCFBKXJldHVybiBudWxsO2lmKHEoQSkpcmV0dXJuIEE7bGV0IEk9QS5sZW5ndGg7aWYoIUJJKEkpKXJldHVybiBudWxsO2xldCB0PW5ldyBBcnJheShJKTtmb3IoO0ktLSA+MDspdFtJXT1BW0ldO3JldHVybiB0fSxIdD0oQT0+ST0+QSYmSSBpbnN0YW5jZW9mIEEpKHR5cGVvZiBVaW50OEFycmF5PCJ1IiYmTkEoVWludDhBcnJheSkpLFl0PShBLEkpPT57bGV0IGU9KEEmJkFbU3ltYm9sLml0ZXJhdG9yXSkuY2FsbChBKSxnO2Zvcig7KGc9ZS5uZXh0KCkpJiYhZy5kb25lOyl7bGV0IHI9Zy52YWx1ZTtJLmNhbGwoQSxyWzBdLHJbMV0pfX0sYnQ9KEEsSSk9PntsZXQgdCxlPVtdO2Zvcig7KHQ9QS5leGVjKEkpKSE9PW51bGw7KWUucHVzaCh0KTtyZXR1cm4gZX0sTXQ9VSgiSFRNTEZvcm1FbGVtZW50IikscXQ9QT0+QS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1stX1xcc10oW2EtelxcZF0pKFxcdyopL2csZnVuY3Rpb24odCxlLGcpe3JldHVybiBlLnRvVXBwZXJDYXNlKCkrZ30pLHJJPSgoe2hhc093blByb3BlcnR5OkF9KT0+KEksdCk9PkEuY2FsbChJLHQpKShPYmplY3QucHJvdG90eXBlKSxLdD1VKCJSZWdFeHAiKSxuST0oQSxJKT0+e2xldCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKEEpLGU9e307Vih0LChnLHIpPT57bGV0IGk7KGk9SShnLHIsQSkpIT09ITEmJihlW3JdPWl8fGcpfSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQSxlKX0sT3Q9QT0+e25JKEEsKEksdCk9PntpZihGKEEpJiZbImFyZ3VtZW50cyIsImNhbGxlciIsImNhbGxlZSJdLmluZGV4T2YodCkhPT0tMSlyZXR1cm4hMTtsZXQgZT1BW3RdO2lmKEYoZSkpe2lmKEkuZW51bWVyYWJsZT0hMSwid3JpdGFibGUiaW4gSSl7SS53cml0YWJsZT0hMTtyZXR1cm59SS5zZXR8fChJLnNldD0oKT0+e3Rocm93IEVycm9yKCJDYW4gbm90IHJld3JpdGUgcmVhZC1vbmx5IG1ldGhvZCBcJyIrdCsiXCciKX0pfX0pfSxUdD0oQSxJKT0+e2xldCB0PXt9LGU9Zz0+e2cuZm9yRWFjaChyPT57dFtyXT0hMH0pfTtyZXR1cm4gcShBKT9lKEEpOmUoU3RyaW5nKEEpLnNwbGl0KEkpKSx0fSx4dD0oKT0+e30sUHQ9KEEsSSk9PihBPStBLE51bWJlci5pc0Zpbml0ZShBKT9BOkkpLEZBPSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsaUk9IjAxMjM0NTY3ODkiLEVJPXtESUdJVDppSSxBTFBIQTpGQSxBTFBIQV9ESUdJVDpGQStGQS50b1VwcGVyQ2FzZSgpK2lJfSxqdD0oQT0xNixJPUVJLkFMUEhBX0RJR0lUKT0+e2xldCB0PSIiLHtsZW5ndGg6ZX09STtmb3IoO0EtLTspdCs9SVtNYXRoLnJhbmRvbSgpKmV8MF07cmV0dXJuIHR9O2Z1bmN0aW9uIFd0KEEpe3JldHVybiEhKEEmJkYoQS5hcHBlbmQpJiZBW1N5bWJvbC50b1N0cmluZ1RhZ109PT0iRm9ybURhdGEiJiZBW1N5bWJvbC5pdGVyYXRvcl0pfXZhciBadD1BPT57bGV0IEk9bmV3IEFycmF5KDEwKSx0PShlLGcpPT57aWYoUUEoZSkpe2lmKEkuaW5kZXhPZihlKT49MClyZXR1cm47aWYoISgidG9KU09OImluIGUpKXtJW2ddPWU7bGV0IHI9cShlKT9bXTp7fTtyZXR1cm4gVihlLChpLHMpPT57bGV0IGE9dChpLGcrMSk7IVooYSkmJihyW3NdPWEpfSksSVtnXT12b2lkIDAscn19cmV0dXJuIGV9O3JldHVybiB0KEEsMCl9LFZ0PVUoIkFzeW5jRnVuY3Rpb24iKSxYdD1BPT5BJiYoUUEoQSl8fEYoQSkpJiZGKEEudGhlbikmJkYoQS5jYXRjaCksQj17aXNBcnJheTpxLGlzQXJyYXlCdWZmZXI6b0ksaXNCdWZmZXI6bHQsaXNGb3JtRGF0YTpTdCxpc0FycmF5QnVmZmVyVmlldzpEdCxpc1N0cmluZzp1dCxpc051bWJlcjpCSSxpc0Jvb2xlYW46aHQsaXNPYmplY3Q6UUEsaXNQbGFpbk9iamVjdDpCQSxpc1VuZGVmaW5lZDpaLGlzRGF0ZTpkdCxpc0ZpbGU6eXQsaXNCbG9iOnd0LGlzUmVnRXhwOkt0LGlzRnVuY3Rpb246Rixpc1N0cmVhbTpwdCxpc1VSTFNlYXJjaFBhcmFtczpGdCxpc1R5cGVkQXJyYXk6SHQsaXNGaWxlTGlzdDptdCxmb3JFYWNoOlYsbWVyZ2U6UkEsZXh0ZW5kOk50LHRyaW06UnQsc3RyaXBCT006VXQsaW5oZXJpdHM6R3QsdG9GbGF0T2JqZWN0Omt0LGtpbmRPZjpDQSxraW5kT2ZUZXN0OlUsZW5kc1dpdGg6THQsdG9BcnJheTpKdCxmb3JFYWNoRW50cnk6WXQsbWF0Y2hBbGw6YnQsaXNIVE1MRm9ybTpNdCxoYXNPd25Qcm9wZXJ0eTpySSxoYXNPd25Qcm9wOnJJLHJlZHVjZURlc2NyaXB0b3JzOm5JLGZyZWV6ZU1ldGhvZHM6T3QsdG9PYmplY3RTZXQ6VHQsdG9DYW1lbENhc2U6cXQsbm9vcDp4dCx0b0Zpbml0ZU51bWJlcjpQdCxmaW5kS2V5OkNJLGdsb2JhbDpzSSxpc0NvbnRleHREZWZpbmVkOlFJLEFMUEhBQkVUOkVJLGdlbmVyYXRlU3RyaW5nOmp0LGlzU3BlY0NvbXBsaWFudEZvcm06V3QsdG9KU09OT2JqZWN0Olp0LGlzQXN5bmNGbjpWdCxpc1RoZW5hYmxlOlh0fTtmdW5jdGlvbiBLKEEsSSx0LGUsZyl7RXJyb3IuY2FsbCh0aGlzKSxFcnJvci5jYXB0dXJlU3RhY2tUcmFjZT9FcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLHRoaXMuY29uc3RydWN0b3IpOnRoaXMuc3RhY2s9bmV3IEVycm9yKCkuc3RhY2ssdGhpcy5tZXNzYWdlPUEsdGhpcy5uYW1lPSJBeGlvc0Vycm9yIixJJiYodGhpcy5jb2RlPUkpLHQmJih0aGlzLmNvbmZpZz10KSxlJiYodGhpcy5yZXF1ZXN0PWUpLGcmJih0aGlzLnJlc3BvbnNlPWcpfUIuaW5oZXJpdHMoSyxFcnJvcix7dG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOkIudG9KU09OT2JqZWN0KHRoaXMuY29uZmlnKSxjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5yZXNwb25zZSYmdGhpcy5yZXNwb25zZS5zdGF0dXM/dGhpcy5yZXNwb25zZS5zdGF0dXM6bnVsbH19fSk7dmFyIGFJPUsucHJvdG90eXBlLGNJPXt9O1siRVJSX0JBRF9PUFRJT05fVkFMVUUiLCJFUlJfQkFEX09QVElPTiIsIkVDT05OQUJPUlRFRCIsIkVUSU1FRE9VVCIsIkVSUl9ORVRXT1JLIiwiRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUyIsIkVSUl9ERVBSRUNBVEVEIiwiRVJSX0JBRF9SRVNQT05TRSIsIkVSUl9CQURfUkVRVUVTVCIsIkVSUl9DQU5DRUxFRCIsIkVSUl9OT1RfU1VQUE9SVCIsIkVSUl9JTlZBTElEX1VSTCJdLmZvckVhY2goQT0+e2NJW0FdPXt2YWx1ZTpBfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEssY0kpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhSSwiaXNBeGlvc0Vycm9yIix7dmFsdWU6ITB9KTtLLmZyb209KEEsSSx0LGUsZyxyKT0+e2xldCBpPU9iamVjdC5jcmVhdGUoYUkpO3JldHVybiBCLnRvRmxhdE9iamVjdChBLGksZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT1FcnJvci5wcm90b3R5cGV9LHM9PnMhPT0iaXNBeGlvc0Vycm9yIiksSy5jYWxsKGksQS5tZXNzYWdlLEksdCxlLGcpLGkuY2F1c2U9QSxpLm5hbWU9QS5uYW1lLHImJk9iamVjdC5hc3NpZ24oaSxyKSxpfTt2YXIgbD1LO3ZhciBuQT1udWxsO2Z1bmN0aW9uIFVBKEEpe3JldHVybiBCLmlzUGxhaW5PYmplY3QoQSl8fEIuaXNBcnJheShBKX1mdW5jdGlvbiBsSShBKXtyZXR1cm4gQi5lbmRzV2l0aChBLCJbXSIpP0Euc2xpY2UoMCwtMik6QX1mdW5jdGlvbiBmSShBLEksdCl7cmV0dXJuIEE/QS5jb25jYXQoSSkubWFwKGZ1bmN0aW9uKGcscil7cmV0dXJuIGc9bEkoZyksIXQmJnI/IlsiK2crIl0iOmd9KS5qb2luKHQ/Ii4iOiIiKTpJfWZ1bmN0aW9uIHp0KEEpe3JldHVybiBCLmlzQXJyYXkoQSkmJiFBLnNvbWUoVUEpfXZhciBfdD1CLnRvRmxhdE9iamVjdChCLHt9LG51bGwsZnVuY3Rpb24oSSl7cmV0dXJuL15pc1tBLVpdLy50ZXN0KEkpfSk7ZnVuY3Rpb24gdnQoQSxJLHQpe2lmKCFCLmlzT2JqZWN0KEEpKXRocm93IG5ldyBUeXBlRXJyb3IoInRhcmdldCBtdXN0IGJlIGFuIG9iamVjdCIpO0k9SXx8bmV3KG5BfHxGb3JtRGF0YSksdD1CLnRvRmxhdE9iamVjdCh0LHttZXRhVG9rZW5zOiEwLGRvdHM6ITEsaW5kZXhlczohMX0sITEsZnVuY3Rpb24oYyx1KXtyZXR1cm4hQi5pc1VuZGVmaW5lZCh1W2NdKX0pO2xldCBlPXQubWV0YVRva2VucyxnPXQudmlzaXRvcnx8QyxyPXQuZG90cyxpPXQuaW5kZXhlcyxhPSh0LkJsb2J8fHR5cGVvZiBCbG9iPCJ1IiYmQmxvYikmJkIuaXNTcGVjQ29tcGxpYW50Rm9ybShJKTtpZighQi5pc0Z1bmN0aW9uKGcpKXRocm93IG5ldyBUeXBlRXJyb3IoInZpc2l0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uIik7ZnVuY3Rpb24gbihFKXtpZihFPT09bnVsbClyZXR1cm4iIjtpZihCLmlzRGF0ZShFKSlyZXR1cm4gRS50b0lTT1N0cmluZygpO2lmKCFhJiZCLmlzQmxvYihFKSl0aHJvdyBuZXcgbCgiQmxvYiBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgYSBCdWZmZXIgaW5zdGVhZC4iKTtyZXR1cm4gQi5pc0FycmF5QnVmZmVyKEUpfHxCLmlzVHlwZWRBcnJheShFKT9hJiZ0eXBlb2YgQmxvYj09ImZ1bmN0aW9uIj9uZXcgQmxvYihbRV0pOkJ1ZmZlci5mcm9tKEUpOkV9ZnVuY3Rpb24gQyhFLGMsdSl7bGV0IGQ9RTtpZihFJiYhdSYmdHlwZW9mIEU9PSJvYmplY3QiKXtpZihCLmVuZHNXaXRoKGMsInt9IikpYz1lP2M6Yy5zbGljZSgwLC0yKSxFPUpTT04uc3RyaW5naWZ5KEUpO2Vsc2UgaWYoQi5pc0FycmF5KEUpJiZ6dChFKXx8KEIuaXNGaWxlTGlzdChFKXx8Qi5lbmRzV2l0aChjLCJbXSIpKSYmKGQ9Qi50b0FycmF5KEUpKSlyZXR1cm4gYz1sSShjKSxkLmZvckVhY2goZnVuY3Rpb24oTixJdCl7IShCLmlzVW5kZWZpbmVkKE4pfHxOPT09bnVsbCkmJkkuYXBwZW5kKGk9PT0hMD9mSShbY10sSXQscik6aT09PW51bGw/YzpjKyJbXSIsbihOKSl9KSwhMX1yZXR1cm4gVUEoRSk/ITA6KEkuYXBwZW5kKGZJKHUsYyxyKSxuKEUpKSwhMSl9bGV0IG89W10sZj1PYmplY3QuYXNzaWduKF90LHtkZWZhdWx0VmlzaXRvcjpDLGNvbnZlcnRWYWx1ZTpuLGlzVmlzaXRhYmxlOlVBfSk7ZnVuY3Rpb24gUShFLGMpe2lmKCFCLmlzVW5kZWZpbmVkKEUpKXtpZihvLmluZGV4T2YoRSkhPT0tMSl0aHJvdyBFcnJvcigiQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGluICIrYy5qb2luKCIuIikpO28ucHVzaChFKSxCLmZvckVhY2goRSxmdW5jdGlvbihkLFIpeyghKEIuaXNVbmRlZmluZWQoZCl8fGQ9PT1udWxsKSYmZy5jYWxsKEksZCxCLmlzU3RyaW5nKFIpP1IudHJpbSgpOlIsYyxmKSk9PT0hMCYmUShkLGM/Yy5jb25jYXQoUik6W1JdKX0pLG8ucG9wKCl9fWlmKCFCLmlzT2JqZWN0KEEpKXRocm93IG5ldyBUeXBlRXJyb3IoImRhdGEgbXVzdCBiZSBhbiBvYmplY3QiKTtyZXR1cm4gUShBKSxJfXZhciBMPXZ0O2Z1bmN0aW9uIERJKEEpe2xldCBJPXsiISI6IiUyNTIxIiwiXCciOiIlMjUyNyIsIigiOiIlMjUyOCIsIikiOiIlMjUyOSIsIn4iOiIlMjU3RSIsIiUyNTIwIjoiKyIsIiUyNTAwIjoiXFwwIn07cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChBKS5yZXBsYWNlKC9bIVwnKCl+XXwlMjUyMHwlMjUwMC9nLGZ1bmN0aW9uKGUpe3JldHVybiBJW2VdfSl9ZnVuY3Rpb24gdUkoQSxJKXt0aGlzLl9wYWlycz1bXSxBJiZMKEEsdGhpcyxJKX12YXIgaEk9dUkucHJvdG90eXBlO2hJLmFwcGVuZD1mdW5jdGlvbihJLHQpe3RoaXMuX3BhaXJzLnB1c2goW0ksdF0pfTtoSS50b1N0cmluZz1mdW5jdGlvbihJKXtsZXQgdD1JP2Z1bmN0aW9uKGUpe3JldHVybiBJLmNhbGwodGhpcyxlLERJKX06REk7cmV0dXJuIHRoaXMuX3BhaXJzLm1hcChmdW5jdGlvbihnKXtyZXR1cm4gdChnWzBdKSsiPSIrdChnWzFdKX0sIiIpLmpvaW4oIiYiKX07dmFyIEVBPXVJO2Z1bmN0aW9uICR0KEEpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoQSkucmVwbGFjZSgvJTI1M0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjUyNC9nLCIkIikucmVwbGFjZSgvJTI1MkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjUyMC9nLCIrIikucmVwbGFjZSgvJTI1NUIvZ2ksIlsiKS5yZXBsYWNlKC8lMjU1RC9naSwiXSIpfWZ1bmN0aW9uIFgoQSxJLHQpe2lmKCFJKXJldHVybiBBO2xldCBlPXQmJnQuZW5jb2RlfHwkdCxnPXQmJnQuc2VyaWFsaXplLHI7aWYoZz9yPWcoSSx0KTpyPUIuaXNVUkxTZWFyY2hQYXJhbXMoSSk/SS50b1N0cmluZygpOm5ldyBFQShJLHQpLnRvU3RyaW5nKGUpLHIpe2xldCBpPUEuaW5kZXhPZigiJTIzIik7aSE9PS0xJiYoQT1BLnNsaWNlKDAsaSkpLEErPShBLmluZGV4T2YoIj8iKT09PS0xPyI/IjoiJiIpK3J9cmV0dXJuIEF9dmFyIEdBPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5oYW5kbGVycz1bXX11c2UoSSx0LGUpe3JldHVybiB0aGlzLmhhbmRsZXJzLnB1c2goe2Z1bGZpbGxlZDpJLHJlamVjdGVkOnQsc3luY2hyb25vdXM6ZT9lLnN5bmNocm9ub3VzOiExLHJ1bldoZW46ZT9lLnJ1bldoZW46bnVsbH0pLHRoaXMuaGFuZGxlcnMubGVuZ3RoLTF9ZWplY3QoSSl7dGhpcy5oYW5kbGVyc1tJXSYmKHRoaXMuaGFuZGxlcnNbSV09bnVsbCl9Y2xlYXIoKXt0aGlzLmhhbmRsZXJzJiYodGhpcy5oYW5kbGVycz1bXSl9Zm9yRWFjaChJKXtCLmZvckVhY2godGhpcy5oYW5kbGVycyxmdW5jdGlvbihlKXtlIT09bnVsbCYmSShlKX0pfX0sa0E9R0E7dmFyIGFBPXtzaWxlbnRKU09OUGFyc2luZzohMCxmb3JjZWRKU09OUGFyc2luZzohMCxjbGFyaWZ5VGltZW91dEVycm9yOiExfTt2YXIgZEk9dHlwZW9mIFVSTFNlYXJjaFBhcmFtczwidSI/VVJMU2VhcmNoUGFyYW1zOkVBO3ZhciB5ST10eXBlb2YgRm9ybURhdGE8InUiP0Zvcm1EYXRhOm51bGw7dmFyIHdJPXR5cGVvZiBCbG9iPCJ1Ij9CbG9iOm51bGw7dmFyIG1JPXtpc0Jyb3dzZXI6ITAsY2xhc3Nlczp7VVJMU2VhcmNoUGFyYW1zOmRJLEZvcm1EYXRhOnlJLEJsb2I6d0l9LHByb3RvY29sczpbImh0dHAiLCJodHRwcyIsImZpbGUiLCJibG9iIiwidXJsIiwiZGF0YSJdfTt2YXIgTEE9e307ZXQoTEEse2hhc0Jyb3dzZXJFbnY6KCk9PnBJLGhhc1N0YW5kYXJkQnJvd3NlckVudjooKT0+QWUsaGFzU3RhbmRhcmRCcm93c2VyV2ViV29ya2VyRW52OigpPT5JZX0pO3ZhciBwST10eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9mIGRvY3VtZW50PCJ1IixBZT0oQT0+cEkmJlsiUmVhY3ROYXRpdmUiLCJOYXRpdmVTY3JpcHQiLCJOUyJdLmluZGV4T2YoQSk8MCkodHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvci5wcm9kdWN0KSxJZT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGU8InUiJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnR5cGVvZiBzZWxmLmltcG9ydFNjcmlwdHM9PSJmdW5jdGlvbiI7dmFyIHc9ey4uLkxBLC4uLm1JfTtmdW5jdGlvbiBKQShBLEkpe3JldHVybiBMKEEsbmV3IHcuY2xhc3Nlcy5VUkxTZWFyY2hQYXJhbXMsT2JqZWN0LmFzc2lnbih7dmlzaXRvcjpmdW5jdGlvbih0LGUsZyxyKXtyZXR1cm4gdy5pc05vZGUmJkIuaXNCdWZmZXIodCk/KHRoaXMuYXBwZW5kKGUsdC50b1N0cmluZygiYmFzZTY0IikpLCExKTpyLmRlZmF1bHRWaXNpdG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LEkpKX1mdW5jdGlvbiB0ZShBKXtyZXR1cm4gQi5tYXRjaEFsbCgvXFx3K3xcXFsoXFx3KildL2csQSkubWFwKEk9PklbMF09PT0iW10iPyIiOklbMV18fElbMF0pfWZ1bmN0aW9uIGVlKEEpe2xldCBJPXt9LHQ9T2JqZWN0LmtleXMoQSksZSxnPXQubGVuZ3RoLHI7Zm9yKGU9MDtlPGc7ZSsrKXI9dFtlXSxJW3JdPUFbcl07cmV0dXJuIEl9ZnVuY3Rpb24gZ2UoQSl7ZnVuY3Rpb24gSSh0LGUsZyxyKXtsZXQgaT10W3IrK10scz1OdW1iZXIuaXNGaW5pdGUoK2kpLGE9cj49dC5sZW5ndGg7cmV0dXJuIGk9IWkmJkIuaXNBcnJheShnKT9nLmxlbmd0aDppLGE/KEIuaGFzT3duUHJvcChnLGkpP2dbaV09W2dbaV0sZV06Z1tpXT1lLCFzKTooKCFnW2ldfHwhQi5pc09iamVjdChnW2ldKSkmJihnW2ldPVtdKSxJKHQsZSxnW2ldLHIpJiZCLmlzQXJyYXkoZ1tpXSkmJihnW2ldPWVlKGdbaV0pKSwhcyl9aWYoQi5pc0Zvcm1EYXRhKEEpJiZCLmlzRnVuY3Rpb24oQS5lbnRyaWVzKSl7bGV0IHQ9e307cmV0dXJuIEIuZm9yRWFjaEVudHJ5KEEsKGUsZyk9PntJKHRlKGUpLGcsdCwwKX0pLHR9cmV0dXJuIG51bGx9dmFyIGNBPWdlO2Z1bmN0aW9uIHJlKEEsSSx0KXtpZihCLmlzU3RyaW5nKEEpKXRyeXtyZXR1cm4oSXx8SlNPTi5wYXJzZSkoQSksQi50cmltKEEpfWNhdGNoKGUpe2lmKGUubmFtZSE9PSJTeW50YXhFcnJvciIpdGhyb3cgZX1yZXR1cm4odHx8SlNPTi5zdHJpbmdpZnkpKEEpfXZhciBIQT17dHJhbnNpdGlvbmFsOmFBLGFkYXB0ZXI6WyJ4aHIiLCJodHRwIl0sdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24oSSx0KXtsZXQgZT10LmdldENvbnRlbnRUeXBlKCl8fCIiLGc9ZS5pbmRleE9mKCJhcHBsaWNhdGlvbi9qc29uIik+LTEscj1CLmlzT2JqZWN0KEkpO2lmKHImJkIuaXNIVE1MRm9ybShJKSYmKEk9bmV3IEZvcm1EYXRhKEkpKSxCLmlzRm9ybURhdGEoSSkpcmV0dXJuIGcmJmc/SlNPTi5zdHJpbmdpZnkoY0EoSSkpOkk7aWYoQi5pc0FycmF5QnVmZmVyKEkpfHxCLmlzQnVmZmVyKEkpfHxCLmlzU3RyZWFtKEkpfHxCLmlzRmlsZShJKXx8Qi5pc0Jsb2IoSSkpcmV0dXJuIEk7aWYoQi5pc0FycmF5QnVmZmVyVmlldyhJKSlyZXR1cm4gSS5idWZmZXI7aWYoQi5pc1VSTFNlYXJjaFBhcmFtcyhJKSlyZXR1cm4gdC5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiLCExKSxJLnRvU3RyaW5nKCk7bGV0IHM7aWYocil7aWYoZS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKT4tMSlyZXR1cm4gSkEoSSx0aGlzLmZvcm1TZXJpYWxpemVyKS50b1N0cmluZygpO2lmKChzPUIuaXNGaWxlTGlzdChJKSl8fGUuaW5kZXhPZigibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpPi0xKXtsZXQgYT10aGlzLmVudiYmdGhpcy5lbnYuRm9ybURhdGE7cmV0dXJuIEwocz97ImZpbGVzW10iOkl9OkksYSYmbmV3IGEsdGhpcy5mb3JtU2VyaWFsaXplcil9fXJldHVybiByfHxnPyh0LnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi9qc29uIiwhMSkscmUoSSkpOkl9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24oSSl7bGV0IHQ9dGhpcy50cmFuc2l0aW9uYWx8fEhBLnRyYW5zaXRpb25hbCxlPXQmJnQuZm9yY2VkSlNPTlBhcnNpbmcsZz10aGlzLnJlc3BvbnNlVHlwZT09PSJqc29uIjtpZihJJiZCLmlzU3RyaW5nKEkpJiYoZSYmIXRoaXMucmVzcG9uc2VUeXBlfHxnKSl7bGV0IGk9ISh0JiZ0LnNpbGVudEpTT05QYXJzaW5nKSYmZzt0cnl7cmV0dXJuIEpTT04ucGFyc2UoSSl9Y2F0Y2gocyl7aWYoaSl0aHJvdyBzLm5hbWU9PT0iU3ludGF4RXJyb3IiP2wuZnJvbShzLGwuRVJSX0JBRF9SRVNQT05TRSx0aGlzLG51bGwsdGhpcy5yZXNwb25zZSk6c319cmV0dXJuIEl9XSx0aW1lb3V0OjAseHNyZkNvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLHhzcmZIZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4iLG1heENvbnRlbnRMZW5ndGg6LTEsbWF4Qm9keUxlbmd0aDotMSxlbnY6e0Zvcm1EYXRhOncuY2xhc3Nlcy5Gb3JtRGF0YSxCbG9iOncuY2xhc3Nlcy5CbG9ifSx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihJKXtyZXR1cm4gST49MjAwJiZJPDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiIsIkNvbnRlbnQtVHlwZSI6dm9pZCAwfX19O0IuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giXSxBPT57SEEuaGVhZGVyc1tBXT17fX0pO3ZhciBPPUhBO3ZhciBpZT1CLnRvT2JqZWN0U2V0KFsiYWdlIiwiYXV0aG9yaXphdGlvbiIsImNvbnRlbnQtbGVuZ3RoIiwiY29udGVudC10eXBlIiwiZXRhZyIsImV4cGlyZXMiLCJmcm9tIiwiaG9zdCIsImlmLW1vZGlmaWVkLXNpbmNlIiwiaWYtdW5tb2RpZmllZC1zaW5jZSIsImxhc3QtbW9kaWZpZWQiLCJsb2NhdGlvbiIsIm1heC1mb3J3YXJkcyIsInByb3h5LWF1dGhvcml6YXRpb24iLCJyZWZlcmVyIiwicmV0cnktYWZ0ZXIiLCJ1c2VyLWFnZW50Il0pLFNJPUE9PntsZXQgST17fSx0LGUsZztyZXR1cm4gQSYmQS5zcGxpdChgJTBBYCkuZm9yRWFjaChmdW5jdGlvbihpKXtnPWkuaW5kZXhPZigiOiIpLHQ9aS5zdWJzdHJpbmcoMCxnKS50cmltKCkudG9Mb3dlckNhc2UoKSxlPWkuc3Vic3RyaW5nKGcrMSkudHJpbSgpLCEoIXR8fElbdF0mJmllW3RdKSYmKHQ9PT0ic2V0LWNvb2tpZSI/SVt0XT9JW3RdLnB1c2goZSk6SVt0XT1bZV06SVt0XT1JW3RdP0lbdF0rIiwgIitlOmUpfSksSX07dmFyIEZJPVN5bWJvbCgiaW50ZXJuYWxzIik7ZnVuY3Rpb24geihBKXtyZXR1cm4gQSYmU3RyaW5nKEEpLnRyaW0oKS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIGZBKEEpe3JldHVybiBBPT09ITF8fEE9PW51bGw/QTpCLmlzQXJyYXkoQSk/QS5tYXAoZkEpOlN0cmluZyhBKX1mdW5jdGlvbiBvZShBKXtsZXQgST1PYmplY3QuY3JlYXRlKG51bGwpLHQ9LyhbXlxccyw7PV0rKVxccyooPzo9XFxzKihbXiw7XSspKT8vZyxlO2Zvcig7ZT10LmV4ZWMoQSk7KUlbZVsxXV09ZVsyXTtyZXR1cm4gSX12YXIgQmU9QT0+L15bLV9hLXpBLVowLTleYHx+LCElMjMkJSZcJyorLl0rJC8udGVzdChBLnRyaW0oKSk7ZnVuY3Rpb24gWUEoQSxJLHQsZSxnKXtpZihCLmlzRnVuY3Rpb24oZSkpcmV0dXJuIGUuY2FsbCh0aGlzLEksdCk7aWYoZyYmKEk9dCksISFCLmlzU3RyaW5nKEkpKXtpZihCLmlzU3RyaW5nKGUpKXJldHVybiBJLmluZGV4T2YoZSkhPT0tMTtpZihCLmlzUmVnRXhwKGUpKXJldHVybiBlLnRlc3QoSSl9fWZ1bmN0aW9uIENlKEEpe3JldHVybiBBLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLyhbYS16XFxkXSkoXFx3KikvZywoSSx0LGUpPT50LnRvVXBwZXJDYXNlKCkrZSl9ZnVuY3Rpb24gc2UoQSxJKXtsZXQgdD1CLnRvQ2FtZWxDYXNlKCIgIitJKTtbImdldCIsInNldCIsImhhcyJdLmZvckVhY2goZT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLGUrdCx7dmFsdWU6ZnVuY3Rpb24oZyxyLGkpe3JldHVybiB0aGlzW2VdLmNhbGwodGhpcyxJLGcscixpKX0sY29uZmlndXJhYmxlOiEwfSl9KX12YXIgVD1jbGFzc3tjb25zdHJ1Y3RvcihJKXtJJiZ0aGlzLnNldChJKX1zZXQoSSx0LGUpe2xldCBnPXRoaXM7ZnVuY3Rpb24gcihzLGEsbil7bGV0IEM9eihhKTtpZighQyl0aHJvdyBuZXcgRXJyb3IoImhlYWRlciBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nIik7bGV0IG89Qi5maW5kS2V5KGcsQyk7KCFvfHxnW29dPT09dm9pZCAwfHxuPT09ITB8fG49PT12b2lkIDAmJmdbb10hPT0hMSkmJihnW298fGFdPWZBKHMpKX1sZXQgaT0ocyxhKT0+Qi5mb3JFYWNoKHMsKG4sQyk9PnIobixDLGEpKTtyZXR1cm4gQi5pc1BsYWluT2JqZWN0KEkpfHxJIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9pKEksdCk6Qi5pc1N0cmluZyhJKSYmKEk9SS50cmltKCkpJiYhQmUoSSk/aShTSShJKSx0KTpJIT1udWxsJiZyKHQsSSxlKSx0aGlzfWdldChJLHQpe2lmKEk9eihJKSxJKXtsZXQgZT1CLmZpbmRLZXkodGhpcyxJKTtpZihlKXtsZXQgZz10aGlzW2VdO2lmKCF0KXJldHVybiBnO2lmKHQ9PT0hMClyZXR1cm4gb2UoZyk7aWYoQi5pc0Z1bmN0aW9uKHQpKXJldHVybiB0LmNhbGwodGhpcyxnLGUpO2lmKEIuaXNSZWdFeHAodCkpcmV0dXJuIHQuZXhlYyhnKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJwYXJzZXIgbXVzdCBiZSBib29sZWFufHJlZ2V4cHxmdW5jdGlvbiIpfX19aGFzKEksdCl7aWYoST16KEkpLEkpe2xldCBlPUIuZmluZEtleSh0aGlzLEkpO3JldHVybiEhKGUmJnRoaXNbZV0hPT12b2lkIDAmJighdHx8WUEodGhpcyx0aGlzW2VdLGUsdCkpKX1yZXR1cm4hMX1kZWxldGUoSSx0KXtsZXQgZT10aGlzLGc9ITE7ZnVuY3Rpb24gcihpKXtpZihpPXooaSksaSl7bGV0IHM9Qi5maW5kS2V5KGUsaSk7cyYmKCF0fHxZQShlLGVbc10scyx0KSkmJihkZWxldGUgZVtzXSxnPSEwKX19cmV0dXJuIEIuaXNBcnJheShJKT9JLmZvckVhY2gocik6cihJKSxnfWNsZWFyKEkpe2xldCB0PU9iamVjdC5rZXlzKHRoaXMpLGU9dC5sZW5ndGgsZz0hMTtmb3IoO2UtLTspe2xldCByPXRbZV07KCFJfHxZQSh0aGlzLHRoaXNbcl0scixJLCEwKSkmJihkZWxldGUgdGhpc1tyXSxnPSEwKX1yZXR1cm4gZ31ub3JtYWxpemUoSSl7bGV0IHQ9dGhpcyxlPXt9O3JldHVybiBCLmZvckVhY2godGhpcywoZyxyKT0+e2xldCBpPUIuZmluZEtleShlLHIpO2lmKGkpe3RbaV09ZkEoZyksZGVsZXRlIHRbcl07cmV0dXJufWxldCBzPUk/Q2Uocik6U3RyaW5nKHIpLnRyaW0oKTtzIT09ciYmZGVsZXRlIHRbcl0sdFtzXT1mQShnKSxlW3NdPSEwfSksdGhpc31jb25jYXQoLi4uSSl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY29uY2F0KHRoaXMsLi4uSSl9dG9KU09OKEkpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIEIuZm9yRWFjaCh0aGlzLChlLGcpPT57ZSE9bnVsbCYmZSE9PSExJiYodFtnXT1JJiZCLmlzQXJyYXkoZSk/ZS5qb2luKCIsICIpOmUpfSksdH1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKVtTeW1ib2wuaXRlcmF0b3JdKCl9dG9TdHJpbmcoKXtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSkubWFwKChbSSx0XSk9PkkrIjogIit0KS5qb2luKGAlMEFgKX1nZXRbU3ltYm9sLnRvU3RyaW5nVGFnXSgpe3JldHVybiJBeGlvc0hlYWRlcnMifXN0YXRpYyBmcm9tKEkpe3JldHVybiBJIGluc3RhbmNlb2YgdGhpcz9JOm5ldyB0aGlzKEkpfXN0YXRpYyBjb25jYXQoSSwuLi50KXtsZXQgZT1uZXcgdGhpcyhJKTtyZXR1cm4gdC5mb3JFYWNoKGc9PmUuc2V0KGcpKSxlfXN0YXRpYyBhY2Nlc3NvcihJKXtsZXQgZT0odGhpc1tGSV09dGhpc1tGSV09e2FjY2Vzc29yczp7fX0pLmFjY2Vzc29ycyxnPXRoaXMucHJvdG90eXBlO2Z1bmN0aW9uIHIoaSl7bGV0IHM9eihpKTtlW3NdfHwoc2UoZyxpKSxlW3NdPSEwKX1yZXR1cm4gQi5pc0FycmF5KEkpP0kuZm9yRWFjaChyKTpyKEkpLHRoaXN9fTtULmFjY2Vzc29yKFsiQ29udGVudC1UeXBlIiwiQ29udGVudC1MZW5ndGgiLCJBY2NlcHQiLCJBY2NlcHQtRW5jb2RpbmciLCJVc2VyLUFnZW50IiwiQXV0aG9yaXphdGlvbiJdKTtCLnJlZHVjZURlc2NyaXB0b3JzKFQucHJvdG90eXBlLCh7dmFsdWU6QX0sSSk9PntsZXQgdD1JWzBdLnRvVXBwZXJDYXNlKCkrSS5zbGljZSgxKTtyZXR1cm57Z2V0OigpPT5BLHNldChlKXt0aGlzW3RdPWV9fX0pO0IuZnJlZXplTWV0aG9kcyhUKTt2YXIgbT1UO2Z1bmN0aW9uIF8oQSxJKXtsZXQgdD10aGlzfHxPLGU9SXx8dCxnPW0uZnJvbShlLmhlYWRlcnMpLHI9ZS5kYXRhO3JldHVybiBCLmZvckVhY2goQSxmdW5jdGlvbihzKXtyPXMuY2FsbCh0LHIsZy5ub3JtYWxpemUoKSxJP0kuc3RhdHVzOnZvaWQgMCl9KSxnLm5vcm1hbGl6ZSgpLHJ9ZnVuY3Rpb24gdihBKXtyZXR1cm4hIShBJiZBLl9fQ0FOQ0VMX18pfWZ1bmN0aW9uIFJJKEEsSSx0KXtsLmNhbGwodGhpcyxBPz8iY2FuY2VsZWQiLGwuRVJSX0NBTkNFTEVELEksdCksdGhpcy5uYW1lPSJDYW5jZWxlZEVycm9yIn1CLmluaGVyaXRzKFJJLGwse19fQ0FOQ0VMX186ITB9KTt2YXIgSj1SSTtmdW5jdGlvbiBiQShBLEksdCl7bGV0IGU9dC5jb25maWcudmFsaWRhdGVTdGF0dXM7IXQuc3RhdHVzfHwhZXx8ZSh0LnN0YXR1cyk/QSh0KTpJKG5ldyBsKCJSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICIrdC5zdGF0dXMsW2wuRVJSX0JBRF9SRVFVRVNULGwuRVJSX0JBRF9SRVNQT05TRV1bTWF0aC5mbG9vcih0LnN0YXR1cy8xMDApLTRdLHQuY29uZmlnLHQucmVxdWVzdCx0KSl9dmFyIE5JPXcuaGFzU3RhbmRhcmRCcm93c2VyRW52P3t3cml0ZShBLEksdCxlLGcscil7bGV0IGk9W0ErIj0iK2VuY29kZVVSSUNvbXBvbmVudChJKV07Qi5pc051bWJlcih0KSYmaS5wdXNoKCJleHBpcmVzPSIrbmV3IERhdGUodCkudG9HTVRTdHJpbmcoKSksQi5pc1N0cmluZyhlKSYmaS5wdXNoKCJwYXRoPSIrZSksQi5pc1N0cmluZyhnKSYmaS5wdXNoKCJkb21haW49IitnKSxyPT09ITAmJmkucHVzaCgic2VjdXJlIiksZG9jdW1lbnQuY29va2llPWkuam9pbigiOyAiKX0scmVhZChBKXtsZXQgST1kb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgiKF58O1xcXFxzKikoIitBKyIpPShbXjtdKikiKSk7cmV0dXJuIEk/ZGVjb2RlVVJJQ29tcG9uZW50KElbM10pOm51bGx9LHJlbW92ZShBKXt0aGlzLndyaXRlKEEsIiIsRGF0ZS5ub3coKS04NjRlNSl9fTp7d3JpdGUoKXt9LHJlYWQoKXtyZXR1cm4gbnVsbH0scmVtb3ZlKCl7fX07ZnVuY3Rpb24gTUEoQSl7cmV0dXJuL14oW2Etel1bYS16XFxkK1xcLS5dKjopP1xcL1xcLy9pLnRlc3QoQSl9ZnVuY3Rpb24gcUEoQSxJKXtyZXR1cm4gST9BLnJlcGxhY2UoL1xcLyskLywiIikrIi8iK0kucmVwbGFjZSgvXlxcLysvLCIiKTpBfWZ1bmN0aW9uICQoQSxJKXtyZXR1cm4gQSYmIU1BKEkpP3FBKEEsSSk6SX12YXIgVUk9dy5oYXNTdGFuZGFyZEJyb3dzZXJFbnY/ZnVuY3Rpb24oKXtsZXQgST0vKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpLGU7ZnVuY3Rpb24gZyhyKXtsZXQgaT1yO3JldHVybiBJJiYodC5zZXRBdHRyaWJ1dGUoImhyZWYiLGkpLGk9dC5ocmVmKSx0LnNldEF0dHJpYnV0ZSgiaHJlZiIsaSkse2hyZWY6dC5ocmVmLHByb3RvY29sOnQucHJvdG9jb2w/dC5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6dC5ob3N0LHNlYXJjaDp0LnNlYXJjaD90LnNlYXJjaC5yZXBsYWNlKC9eXFw/LywiIik6IiIsaGFzaDp0Lmhhc2g/dC5oYXNoLnJlcGxhY2UoL14lMjMvLCIiKToiIixob3N0bmFtZTp0Lmhvc3RuYW1lLHBvcnQ6dC5wb3J0LHBhdGhuYW1lOnQucGF0aG5hbWUuY2hhckF0KDApPT09Ii8iP3QucGF0aG5hbWU6Ii8iK3QucGF0aG5hbWV9fXJldHVybiBlPWcod2luZG93LmxvY2F0aW9uLmhyZWYpLGZ1bmN0aW9uKGkpe2xldCBzPUIuaXNTdHJpbmcoaSk/ZyhpKTppO3JldHVybiBzLnByb3RvY29sPT09ZS5wcm90b2NvbCYmcy5ob3N0PT09ZS5ob3N0fX0oKTpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiEwfX0oKTtmdW5jdGlvbiBLQShBKXtsZXQgST0vXihbLStcXHddezEsMjV9KSg6P1xcL1xcL3w6KS8uZXhlYyhBKTtyZXR1cm4gSSYmSVsxXXx8IiJ9ZnVuY3Rpb24gUWUoQSxJKXtBPUF8fDEwO2xldCB0PW5ldyBBcnJheShBKSxlPW5ldyBBcnJheShBKSxnPTAscj0wLGk7cmV0dXJuIEk9SSE9PXZvaWQgMD9JOjFlMyxmdW5jdGlvbihhKXtsZXQgbj1EYXRlLm5vdygpLEM9ZVtyXTtpfHwoaT1uKSx0W2ddPWEsZVtnXT1uO2xldCBvPXIsZj0wO2Zvcig7byE9PWc7KWYrPXRbbysrXSxvPW8lQTtpZihnPShnKzEpJUEsZz09PXImJihyPShyKzEpJUEpLG4taTxJKXJldHVybjtsZXQgUT1DJiZuLUM7cmV0dXJuIFE/TWF0aC5yb3VuZChmKjFlMy9RKTp2b2lkIDB9fXZhciBHST1RZTtmdW5jdGlvbiBrSShBLEkpe2xldCB0PTAsZT1HSSg1MCwyNTApO3JldHVybiBnPT57bGV0IHI9Zy5sb2FkZWQsaT1nLmxlbmd0aENvbXB1dGFibGU/Zy50b3RhbDp2b2lkIDAscz1yLXQsYT1lKHMpLG49cjw9aTt0PXI7bGV0IEM9e2xvYWRlZDpyLHRvdGFsOmkscHJvZ3Jlc3M6aT9yL2k6dm9pZCAwLGJ5dGVzOnMscmF0ZTphfHx2b2lkIDAsZXN0aW1hdGVkOmEmJmkmJm4/KGktcikvYTp2b2lkIDAsZXZlbnQ6Z307Q1tJPyJkb3dubG9hZCI6InVwbG9hZCJdPSEwLEEoQyl9fXZhciBuZT10eXBlb2YgWE1MSHR0cFJlcXVlc3Q8InUiLExJPW5lJiZmdW5jdGlvbihBKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odCxlKXtsZXQgZz1BLmRhdGEscj1tLmZyb20oQS5oZWFkZXJzKS5ub3JtYWxpemUoKSx7cmVzcG9uc2VUeXBlOmksd2l0aFhTUkZUb2tlbjpzfT1BLGE7ZnVuY3Rpb24gbigpe0EuY2FuY2VsVG9rZW4mJkEuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUoYSksQS5zaWduYWwmJkEuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixhKX1sZXQgQztpZihCLmlzRm9ybURhdGEoZykpe2lmKHcuaGFzU3RhbmRhcmRCcm93c2VyRW52fHx3Lmhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudilyLnNldENvbnRlbnRUeXBlKCExKTtlbHNlIGlmKChDPXIuZ2V0Q29udGVudFR5cGUoKSkhPT0hMSl7bGV0W2MsLi4udV09Qz9DLnNwbGl0KCI7IikubWFwKGQ9PmQudHJpbSgpKS5maWx0ZXIoQm9vbGVhbik6W107ci5zZXRDb250ZW50VHlwZShbY3x8Im11bHRpcGFydC9mb3JtLWRhdGEiLC4uLnVdLmpvaW4oIjsgIikpfX1sZXQgbz1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoQS5hdXRoKXtsZXQgYz1BLmF1dGgudXNlcm5hbWV8fCIiLHU9QS5hdXRoLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChBLmF1dGgucGFzc3dvcmQpKToiIjtyLnNldCgiQXV0aG9yaXphdGlvbiIsIkJhc2ljICIrYnRvYShjKyI6Iit1KSl9bGV0IGY9JChBLmJhc2VVUkwsQS51cmwpO28ub3BlbihBLm1ldGhvZC50b1VwcGVyQ2FzZSgpLFgoZixBLnBhcmFtcyxBLnBhcmFtc1NlcmlhbGl6ZXIpLCEwKSxvLnRpbWVvdXQ9QS50aW1lb3V0O2Z1bmN0aW9uIFEoKXtpZighbylyZXR1cm47bGV0IGM9bS5mcm9tKCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiaW4gbyYmby5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSksZD17ZGF0YTohaXx8aT09PSJ0ZXh0Inx8aT09PSJqc29uIj9vLnJlc3BvbnNlVGV4dDpvLnJlc3BvbnNlLHN0YXR1czpvLnN0YXR1cyxzdGF0dXNUZXh0Om8uc3RhdHVzVGV4dCxoZWFkZXJzOmMsY29uZmlnOkEscmVxdWVzdDpvfTtiQShmdW5jdGlvbihOKXt0KE4pLG4oKX0sZnVuY3Rpb24oTil7ZShOKSxuKCl9LGQpLG89bnVsbH1pZigib25sb2FkZW5kImluIG8/by5vbmxvYWRlbmQ9UTpvLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpeyFvfHxvLnJlYWR5U3RhdGUhPT00fHxvLnN0YXR1cz09PTAmJiEoby5yZXNwb25zZVVSTCYmby5yZXNwb25zZVVSTC5pbmRleE9mKCJmaWxlOiIpPT09MCl8fHNldFRpbWVvdXQoUSl9LG8ub25hYm9ydD1mdW5jdGlvbigpe28mJihlKG5ldyBsKCJSZXF1ZXN0IGFib3J0ZWQiLGwuRUNPTk5BQk9SVEVELEEsbykpLG89bnVsbCl9LG8ub25lcnJvcj1mdW5jdGlvbigpe2UobmV3IGwoIk5ldHdvcmsgRXJyb3IiLGwuRVJSX05FVFdPUkssQSxvKSksbz1udWxsfSxvLm9udGltZW91dD1mdW5jdGlvbigpe2xldCB1PUEudGltZW91dD8idGltZW91dCBvZiAiK0EudGltZW91dCsibXMgZXhjZWVkZWQiOiJ0aW1lb3V0IGV4Y2VlZGVkIixkPUEudHJhbnNpdGlvbmFsfHxhQTtBLnRpbWVvdXRFcnJvck1lc3NhZ2UmJih1PUEudGltZW91dEVycm9yTWVzc2FnZSksZShuZXcgbCh1LGQuY2xhcmlmeVRpbWVvdXRFcnJvcj9sLkVUSU1FRE9VVDpsLkVDT05OQUJPUlRFRCxBLG8pKSxvPW51bGx9LHcuaGFzU3RhbmRhcmRCcm93c2VyRW52JiYocyYmQi5pc0Z1bmN0aW9uKHMpJiYocz1zKEEpKSxzfHxzIT09ITEmJlVJKGYpKSl7bGV0IGM9QS54c3JmSGVhZGVyTmFtZSYmQS54c3JmQ29va2llTmFtZSYmTkkucmVhZChBLnhzcmZDb29raWVOYW1lKTtjJiZyLnNldChBLnhzcmZIZWFkZXJOYW1lLGMpfWc9PT12b2lkIDAmJnIuc2V0Q29udGVudFR5cGUobnVsbCksInNldFJlcXVlc3RIZWFkZXIiaW4gbyYmQi5mb3JFYWNoKHIudG9KU09OKCksZnVuY3Rpb24odSxkKXtvLnNldFJlcXVlc3RIZWFkZXIoZCx1KX0pLEIuaXNVbmRlZmluZWQoQS53aXRoQ3JlZGVudGlhbHMpfHwoby53aXRoQ3JlZGVudGlhbHM9ISFBLndpdGhDcmVkZW50aWFscyksaSYmaSE9PSJqc29uIiYmKG8ucmVzcG9uc2VUeXBlPUEucmVzcG9uc2VUeXBlKSx0eXBlb2YgQS5vbkRvd25sb2FkUHJvZ3Jlc3M9PSJmdW5jdGlvbiImJm8uYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGtJKEEub25Eb3dubG9hZFByb2dyZXNzLCEwKSksdHlwZW9mIEEub25VcGxvYWRQcm9ncmVzcz09ImZ1bmN0aW9uIiYmby51cGxvYWQmJm8udXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixrSShBLm9uVXBsb2FkUHJvZ3Jlc3MpKSwoQS5jYW5jZWxUb2tlbnx8QS5zaWduYWwpJiYoYT1jPT57byYmKGUoIWN8fGMudHlwZT9uZXcgSihudWxsLEEsbyk6Yyksby5hYm9ydCgpLG89bnVsbCl9LEEuY2FuY2VsVG9rZW4mJkEuY2FuY2VsVG9rZW4uc3Vic2NyaWJlKGEpLEEuc2lnbmFsJiYoQS5zaWduYWwuYWJvcnRlZD9hKCk6QS5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGEpKSk7bGV0IEU9S0EoZik7aWYoRSYmdy5wcm90b2NvbHMuaW5kZXhPZihFKT09PS0xKXtlKG5ldyBsKCJVbnN1cHBvcnRlZCBwcm90b2NvbCAiK0UrIjoiLGwuRVJSX0JBRF9SRVFVRVNULEEpKTtyZXR1cm59by5zZW5kKGd8fG51bGwpfSl9O3ZhciBPQT17aHR0cDpuQSx4aHI6TEl9O0IuZm9yRWFjaChPQSwoQSxJKT0+e2lmKEEpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoQSwibmFtZSIse3ZhbHVlOkl9KX1jYXRjaHt9T2JqZWN0LmRlZmluZVByb3BlcnR5KEEsImFkYXB0ZXJOYW1lIix7dmFsdWU6SX0pfX0pO3ZhciBKST1BPT5gLSAke0F9YCxFZT1BPT5CLmlzRnVuY3Rpb24oQSl8fEE9PT1udWxsfHxBPT09ITEsbEE9e2dldEFkYXB0ZXI6QT0+e0E9Qi5pc0FycmF5KEEpP0E6W0FdO2xldHtsZW5ndGg6SX09QSx0LGUsZz17fTtmb3IobGV0IHI9MDtyPEk7cisrKXt0PUFbcl07bGV0IGk7aWYoZT10LCFFZSh0KSYmKGU9T0FbKGk9U3RyaW5nKHQpKS50b0xvd2VyQ2FzZSgpXSxlPT09dm9pZCAwKSl0aHJvdyBuZXcgbChgVW5rbm93biBhZGFwdGVyIFwnJHtpfVwnYCk7aWYoZSlicmVhaztnW2l8fCIlMjMiK3JdPWV9aWYoIWUpe2xldCByPU9iamVjdC5lbnRyaWVzKGcpLm1hcCgoW3MsYV0pPT5gYWRhcHRlciAke3N9IGArKGE9PT0hMT8iaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZW52aXJvbm1lbnQiOiJpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBidWlsZCIpKSxpPUk/ci5sZW5ndGg+MT9gc2luY2UgOiUwQWArci5tYXAoSkkpLmpvaW4oYCUwQWApOiIgIitKSShyWzBdKToiYXMgbm8gYWRhcHRlciBzcGVjaWZpZWQiO3Rocm93IG5ldyBsKCJUaGVyZSBpcyBubyBzdWl0YWJsZSBhZGFwdGVyIHRvIGRpc3BhdGNoIHRoZSByZXF1ZXN0ICIraSwiRVJSX05PVF9TVVBQT1JUIil9cmV0dXJuIGV9LGFkYXB0ZXJzOk9BfTtmdW5jdGlvbiBUQShBKXtpZihBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxBLnNpZ25hbCYmQS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgSihudWxsLEEpfWZ1bmN0aW9uIERBKEEpe3JldHVybiBUQShBKSxBLmhlYWRlcnM9bS5mcm9tKEEuaGVhZGVycyksQS5kYXRhPV8uY2FsbChBLEEudHJhbnNmb3JtUmVxdWVzdCksWyJwb3N0IiwicHV0IiwicGF0Y2giXS5pbmRleE9mKEEubWV0aG9kKSE9PS0xJiZBLmhlYWRlcnMuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsITEpLGxBLmdldEFkYXB0ZXIoQS5hZGFwdGVyfHxPLmFkYXB0ZXIpKEEpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIFRBKEEpLGUuZGF0YT1fLmNhbGwoQSxBLnRyYW5zZm9ybVJlc3BvbnNlLGUpLGUuaGVhZGVycz1tLmZyb20oZS5oZWFkZXJzKSxlfSxmdW5jdGlvbihlKXtyZXR1cm4gdihlKXx8KFRBKEEpLGUmJmUucmVzcG9uc2UmJihlLnJlc3BvbnNlLmRhdGE9Xy5jYWxsKEEsQS50cmFuc2Zvcm1SZXNwb25zZSxlLnJlc3BvbnNlKSxlLnJlc3BvbnNlLmhlYWRlcnM9bS5mcm9tKGUucmVzcG9uc2UuaGVhZGVycykpKSxQcm9taXNlLnJlamVjdChlKX0pfXZhciBIST1BPT5BIGluc3RhbmNlb2YgbT9BLnRvSlNPTigpOkE7ZnVuY3Rpb24gRyhBLEkpe0k9SXx8e307bGV0IHQ9e307ZnVuY3Rpb24gZShuLEMsbyl7cmV0dXJuIEIuaXNQbGFpbk9iamVjdChuKSYmQi5pc1BsYWluT2JqZWN0KEMpP0IubWVyZ2UuY2FsbCh7Y2FzZWxlc3M6b30sbixDKTpCLmlzUGxhaW5PYmplY3QoQyk/Qi5tZXJnZSh7fSxDKTpCLmlzQXJyYXkoQyk/Qy5zbGljZSgpOkN9ZnVuY3Rpb24gZyhuLEMsbyl7aWYoQi5pc1VuZGVmaW5lZChDKSl7aWYoIUIuaXNVbmRlZmluZWQobikpcmV0dXJuIGUodm9pZCAwLG4sbyl9ZWxzZSByZXR1cm4gZShuLEMsbyl9ZnVuY3Rpb24gcihuLEMpe2lmKCFCLmlzVW5kZWZpbmVkKEMpKXJldHVybiBlKHZvaWQgMCxDKX1mdW5jdGlvbiBpKG4sQyl7aWYoQi5pc1VuZGVmaW5lZChDKSl7aWYoIUIuaXNVbmRlZmluZWQobikpcmV0dXJuIGUodm9pZCAwLG4pfWVsc2UgcmV0dXJuIGUodm9pZCAwLEMpfWZ1bmN0aW9uIHMobixDLG8pe2lmKG8gaW4gSSlyZXR1cm4gZShuLEMpO2lmKG8gaW4gQSlyZXR1cm4gZSh2b2lkIDAsbil9bGV0IGE9e3VybDpyLG1ldGhvZDpyLGRhdGE6cixiYXNlVVJMOmksdHJhbnNmb3JtUmVxdWVzdDppLHRyYW5zZm9ybVJlc3BvbnNlOmkscGFyYW1zU2VyaWFsaXplcjppLHRpbWVvdXQ6aSx0aW1lb3V0TWVzc2FnZTppLHdpdGhDcmVkZW50aWFsczppLHdpdGhYU1JGVG9rZW46aSxhZGFwdGVyOmkscmVzcG9uc2VUeXBlOmkseHNyZkNvb2tpZU5hbWU6aSx4c3JmSGVhZGVyTmFtZTppLG9uVXBsb2FkUHJvZ3Jlc3M6aSxvbkRvd25sb2FkUHJvZ3Jlc3M6aSxkZWNvbXByZXNzOmksbWF4Q29udGVudExlbmd0aDppLG1heEJvZHlMZW5ndGg6aSxiZWZvcmVSZWRpcmVjdDppLHRyYW5zcG9ydDppLGh0dHBBZ2VudDppLGh0dHBzQWdlbnQ6aSxjYW5jZWxUb2tlbjppLHNvY2tldFBhdGg6aSxyZXNwb25zZUVuY29kaW5nOmksdmFsaWRhdGVTdGF0dXM6cyxoZWFkZXJzOihuLEMpPT5nKEhJKG4pLEhJKEMpLCEwKX07cmV0dXJuIEIuZm9yRWFjaChPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LEEsSSkpLGZ1bmN0aW9uKEMpe2xldCBvPWFbQ118fGcsZj1vKEFbQ10sSVtDXSxDKTtCLmlzVW5kZWZpbmVkKGYpJiZvIT09c3x8KHRbQ109Zil9KSx0fXZhciB1QT0iMS42LjIiO3ZhciB4QT17fTtbIm9iamVjdCIsImJvb2xlYW4iLCJudW1iZXIiLCJmdW5jdGlvbiIsInN0cmluZyIsInN5bWJvbCJdLmZvckVhY2goKEEsSSk9Pnt4QVtBXT1mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PT1BfHwiYSIrKEk8MT8ibiAiOiIgIikrQX19KTt2YXIgWUk9e307eEEudHJhbnNpdGlvbmFsPWZ1bmN0aW9uKEksdCxlKXtmdW5jdGlvbiBnKHIsaSl7cmV0dXJuIltBeGlvcyB2Iit1QSsiXSBUcmFuc2l0aW9uYWwgb3B0aW9uIFwnIityKyJcJyIraSsoZT8iLiAiK2U6IiIpfXJldHVybihyLGkscyk9PntpZihJPT09ITEpdGhyb3cgbmV3IGwoZyhpLCIgaGFzIGJlZW4gcmVtb3ZlZCIrKHQ/IiBpbiAiK3Q6IiIpKSxsLkVSUl9ERVBSRUNBVEVEKTtyZXR1cm4gdCYmIVlJW2ldJiYoWUlbaV09ITAsY29uc29sZS53YXJuKGcoaSwiIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdiIrdCsiIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlIikpKSxJP0kocixpLHMpOiEwfX07ZnVuY3Rpb24gYWUoQSxJLHQpe2lmKHR5cGVvZiBBIT0ib2JqZWN0Iil0aHJvdyBuZXcgbCgib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIsbC5FUlJfQkFEX09QVElPTl9WQUxVRSk7bGV0IGU9T2JqZWN0LmtleXMoQSksZz1lLmxlbmd0aDtmb3IoO2ctLSA+MDspe2xldCByPWVbZ10saT1JW3JdO2lmKGkpe2xldCBzPUFbcl0sYT1zPT09dm9pZCAwfHxpKHMscixBKTtpZihhIT09ITApdGhyb3cgbmV3IGwoIm9wdGlvbiAiK3IrIiBtdXN0IGJlICIrYSxsLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtjb250aW51ZX1pZih0IT09ITApdGhyb3cgbmV3IGwoIlVua25vd24gb3B0aW9uICIrcixsLkVSUl9CQURfT1BUSU9OKX19dmFyIGhBPXthc3NlcnRPcHRpb25zOmFlLHZhbGlkYXRvcnM6eEF9O3ZhciBIPWhBLnZhbGlkYXRvcnMseD1jbGFzc3tjb25zdHJ1Y3RvcihJKXt0aGlzLmRlZmF1bHRzPUksdGhpcy5pbnRlcmNlcHRvcnM9e3JlcXVlc3Q6bmV3IGtBLHJlc3BvbnNlOm5ldyBrQX19cmVxdWVzdChJLHQpe3R5cGVvZiBJPT0ic3RyaW5nIj8odD10fHx7fSx0LnVybD1JKTp0PUl8fHt9LHQ9Ryh0aGlzLmRlZmF1bHRzLHQpO2xldHt0cmFuc2l0aW9uYWw6ZSxwYXJhbXNTZXJpYWxpemVyOmcsaGVhZGVyczpyfT10O2UhPT12b2lkIDAmJmhBLmFzc2VydE9wdGlvbnMoZSx7c2lsZW50SlNPTlBhcnNpbmc6SC50cmFuc2l0aW9uYWwoSC5ib29sZWFuKSxmb3JjZWRKU09OUGFyc2luZzpILnRyYW5zaXRpb25hbChILmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6SC50cmFuc2l0aW9uYWwoSC5ib29sZWFuKX0sITEpLGchPW51bGwmJihCLmlzRnVuY3Rpb24oZyk/dC5wYXJhbXNTZXJpYWxpemVyPXtzZXJpYWxpemU6Z306aEEuYXNzZXJ0T3B0aW9ucyhnLHtlbmNvZGU6SC5mdW5jdGlvbixzZXJpYWxpemU6SC5mdW5jdGlvbn0sITApKSx0Lm1ldGhvZD0odC5tZXRob2R8fHRoaXMuZGVmYXVsdHMubWV0aG9kfHwiZ2V0IikudG9Mb3dlckNhc2UoKTtsZXQgaT1yJiZCLm1lcmdlKHIuY29tbW9uLHJbdC5tZXRob2RdKTtyJiZCLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwicG9zdCIsInB1dCIsInBhdGNoIiwiY29tbW9uIl0sRT0+e2RlbGV0ZSByW0VdfSksdC5oZWFkZXJzPW0uY29uY2F0KGkscik7bGV0IHM9W10sYT0hMDt0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goZnVuY3Rpb24oYyl7dHlwZW9mIGMucnVuV2hlbj09ImZ1bmN0aW9uIiYmYy5ydW5XaGVuKHQpPT09ITF8fChhPWEmJmMuc3luY2hyb25vdXMscy51bnNoaWZ0KGMuZnVsZmlsbGVkLGMucmVqZWN0ZWQpKX0pO2xldCBuPVtdO3RoaXMuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLmZvckVhY2goZnVuY3Rpb24oYyl7bi5wdXNoKGMuZnVsZmlsbGVkLGMucmVqZWN0ZWQpfSk7bGV0IEMsbz0wLGY7aWYoIWEpe2xldCBFPVtEQS5iaW5kKHRoaXMpLHZvaWQgMF07Zm9yKEUudW5zaGlmdC5hcHBseShFLHMpLEUucHVzaC5hcHBseShFLG4pLGY9RS5sZW5ndGgsQz1Qcm9taXNlLnJlc29sdmUodCk7bzxmOylDPUMudGhlbihFW28rK10sRVtvKytdKTtyZXR1cm4gQ31mPXMubGVuZ3RoO2xldCBRPXQ7Zm9yKG89MDtvPGY7KXtsZXQgRT1zW28rK10sYz1zW28rK107dHJ5e1E9RShRKX1jYXRjaCh1KXtjLmNhbGwodGhpcyx1KTticmVha319dHJ5e0M9REEuY2FsbCh0aGlzLFEpfWNhdGNoKEUpe3JldHVybiBQcm9taXNlLnJlamVjdChFKX1mb3Iobz0wLGY9bi5sZW5ndGg7bzxmOylDPUMudGhlbihuW28rK10sbltvKytdKTtyZXR1cm4gQ31nZXRVcmkoSSl7ST1HKHRoaXMuZGVmYXVsdHMsSSk7bGV0IHQ9JChJLmJhc2VVUkwsSS51cmwpO3JldHVybiBYKHQsSS5wYXJhbXMsSS5wYXJhbXNTZXJpYWxpemVyKX19O0IuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJvcHRpb25zIl0sZnVuY3Rpb24oSSl7eC5wcm90b3R5cGVbSV09ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KEcoZXx8e30se21ldGhvZDpJLHVybDp0LGRhdGE6KGV8fHt9KS5kYXRhfSkpfX0pO0IuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLGZ1bmN0aW9uKEkpe2Z1bmN0aW9uIHQoZSl7cmV0dXJuIGZ1bmN0aW9uKHIsaSxzKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KEcoc3x8e30se21ldGhvZDpJLGhlYWRlcnM6ZT97IkNvbnRlbnQtVHlwZSI6Im11bHRpcGFydC9mb3JtLWRhdGEifTp7fSx1cmw6cixkYXRhOml9KSl9fXgucHJvdG90eXBlW0ldPXQoKSx4LnByb3RvdHlwZVtJKyJGb3JtIl09dCghMCl9KTt2YXIgQUE9eDt2YXIgUEE9Y2xhc3MgQXtjb25zdHJ1Y3RvcihJKXtpZih0eXBlb2YgSSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJleGVjdXRvciBtdXN0IGJlIGEgZnVuY3Rpb24uIik7bGV0IHQ7dGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpe3Q9cn0pO2xldCBlPXRoaXM7dGhpcy5wcm9taXNlLnRoZW4oZz0+e2lmKCFlLl9saXN0ZW5lcnMpcmV0dXJuO2xldCByPWUuX2xpc3RlbmVycy5sZW5ndGg7Zm9yKDtyLS0gPjA7KWUuX2xpc3RlbmVyc1tyXShnKTtlLl9saXN0ZW5lcnM9bnVsbH0pLHRoaXMucHJvbWlzZS50aGVuPWc9PntsZXQgcixpPW5ldyBQcm9taXNlKHM9PntlLnN1YnNjcmliZShzKSxyPXN9KS50aGVuKGcpO3JldHVybiBpLmNhbmNlbD1mdW5jdGlvbigpe2UudW5zdWJzY3JpYmUocil9LGl9LEkoZnVuY3Rpb24ocixpLHMpe2UucmVhc29ufHwoZS5yZWFzb249bmV3IEoocixpLHMpLHQoZS5yZWFzb24pKX0pfXRocm93SWZSZXF1ZXN0ZWQoKXtpZih0aGlzLnJlYXNvbil0aHJvdyB0aGlzLnJlYXNvbn1zdWJzY3JpYmUoSSl7aWYodGhpcy5yZWFzb24pe0kodGhpcy5yZWFzb24pO3JldHVybn10aGlzLl9saXN0ZW5lcnM/dGhpcy5fbGlzdGVuZXJzLnB1c2goSSk6dGhpcy5fbGlzdGVuZXJzPVtJXX11bnN1YnNjcmliZShJKXtpZighdGhpcy5fbGlzdGVuZXJzKXJldHVybjtsZXQgdD10aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihJKTt0IT09LTEmJnRoaXMuX2xpc3RlbmVycy5zcGxpY2UodCwxKX1zdGF0aWMgc291cmNlKCl7bGV0IEk7cmV0dXJue3Rva2VuOm5ldyBBKGZ1bmN0aW9uKGcpe0k9Z30pLGNhbmNlbDpJfX19LGJJPVBBO2Z1bmN0aW9uIGpBKEEpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gQS5hcHBseShudWxsLHQpfX1mdW5jdGlvbiBXQShBKXtyZXR1cm4gQi5pc09iamVjdChBKSYmQS5pc0F4aW9zRXJyb3I9PT0hMH12YXIgWkE9e0NvbnRpbnVlOjEwMCxTd2l0Y2hpbmdQcm90b2NvbHM6MTAxLFByb2Nlc3Npbmc6MTAyLEVhcmx5SGludHM6MTAzLE9rOjIwMCxDcmVhdGVkOjIwMSxBY2NlcHRlZDoyMDIsTm9uQXV0aG9yaXRhdGl2ZUluZm9ybWF0aW9uOjIwMyxOb0NvbnRlbnQ6MjA0LFJlc2V0Q29udGVudDoyMDUsUGFydGlhbENvbnRlbnQ6MjA2LE11bHRpU3RhdHVzOjIwNyxBbHJlYWR5UmVwb3J0ZWQ6MjA4LEltVXNlZDoyMjYsTXVsdGlwbGVDaG9pY2VzOjMwMCxNb3ZlZFBlcm1hbmVudGx5OjMwMSxGb3VuZDozMDIsU2VlT3RoZXI6MzAzLE5vdE1vZGlmaWVkOjMwNCxVc2VQcm94eTozMDUsVW51c2VkOjMwNixUZW1wb3JhcnlSZWRpcmVjdDozMDcsUGVybWFuZW50UmVkaXJlY3Q6MzA4LEJhZFJlcXVlc3Q6NDAwLFVuYXV0aG9yaXplZDo0MDEsUGF5bWVudFJlcXVpcmVkOjQwMixGb3JiaWRkZW46NDAzLE5vdEZvdW5kOjQwNCxNZXRob2ROb3RBbGxvd2VkOjQwNSxOb3RBY2NlcHRhYmxlOjQwNixQcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6NDA3LFJlcXVlc3RUaW1lb3V0OjQwOCxDb25mbGljdDo0MDksR29uZTo0MTAsTGVuZ3RoUmVxdWlyZWQ6NDExLFByZWNvbmRpdGlvbkZhaWxlZDo0MTIsUGF5bG9hZFRvb0xhcmdlOjQxMyxVcmlUb29Mb25nOjQxNCxVbnN1cHBvcnRlZE1lZGlhVHlwZTo0MTUsUmFuZ2VOb3RTYXRpc2ZpYWJsZTo0MTYsRXhwZWN0YXRpb25GYWlsZWQ6NDE3LEltQVRlYXBvdDo0MTgsTWlzZGlyZWN0ZWRSZXF1ZXN0OjQyMSxVbnByb2Nlc3NhYmxlRW50aXR5OjQyMixMb2NrZWQ6NDIzLEZhaWxlZERlcGVuZGVuY3k6NDI0LFRvb0Vhcmx5OjQyNSxVcGdyYWRlUmVxdWlyZWQ6NDI2LFByZWNvbmRpdGlvblJlcXVpcmVkOjQyOCxUb29NYW55UmVxdWVzdHM6NDI5LFJlcXVlc3RIZWFkZXJGaWVsZHNUb29MYXJnZTo0MzEsVW5hdmFpbGFibGVGb3JMZWdhbFJlYXNvbnM6NDUxLEludGVybmFsU2VydmVyRXJyb3I6NTAwLE5vdEltcGxlbWVudGVkOjUwMSxCYWRHYXRld2F5OjUwMixTZXJ2aWNlVW5hdmFpbGFibGU6NTAzLEdhdGV3YXlUaW1lb3V0OjUwNCxIdHRwVmVyc2lvbk5vdFN1cHBvcnRlZDo1MDUsVmFyaWFudEFsc29OZWdvdGlhdGVzOjUwNixJbnN1ZmZpY2llbnRTdG9yYWdlOjUwNyxMb29wRGV0ZWN0ZWQ6NTA4LE5vdEV4dGVuZGVkOjUxMCxOZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZDo1MTF9O09iamVjdC5lbnRyaWVzKFpBKS5mb3JFYWNoKChbQSxJXSk9PntaQVtJXT1BfSk7dmFyIE1JPVpBO2Z1bmN0aW9uIHFJKEEpe2xldCBJPW5ldyBBQShBKSx0PVcoQUEucHJvdG90eXBlLnJlcXVlc3QsSSk7cmV0dXJuIEIuZXh0ZW5kKHQsQUEucHJvdG90eXBlLEkse2FsbE93bktleXM6ITB9KSxCLmV4dGVuZCh0LEksbnVsbCx7YWxsT3duS2V5czohMH0pLHQuY3JlYXRlPWZ1bmN0aW9uKGcpe3JldHVybiBxSShHKEEsZykpfSx0fXZhciBoPXFJKE8pO2guQXhpb3M9QUE7aC5DYW5jZWxlZEVycm9yPUo7aC5DYW5jZWxUb2tlbj1iSTtoLmlzQ2FuY2VsPXY7aC5WRVJTSU9OPXVBO2gudG9Gb3JtRGF0YT1MO2guQXhpb3NFcnJvcj1sO2guQ2FuY2VsPWguQ2FuY2VsZWRFcnJvcjtoLmFsbD1mdW5jdGlvbihJKXtyZXR1cm4gUHJvbWlzZS5hbGwoSSl9O2guc3ByZWFkPWpBO2guaXNBeGlvc0Vycm9yPVdBO2gubWVyZ2VDb25maWc9RztoLkF4aW9zSGVhZGVycz1tO2guZm9ybVRvSlNPTj1BPT5jQShCLmlzSFRNTEZvcm0oQSk/bmV3IEZvcm1EYXRhKEEpOkEpO2guZ2V0QWRhcHRlcj1sQS5nZXRBZGFwdGVyO2guSHR0cFN0YXR1c0NvZGU9TUk7aC5kZWZhdWx0PWg7dmFyIGRBPWg7dmFye0F4aW9zOm9pLEF4aW9zRXJyb3I6QmksQ2FuY2VsZWRFcnJvcjpDaSxpc0NhbmNlbDpzaSxDYW5jZWxUb2tlbjpRaSxWRVJTSU9OOm5pLGFsbDpFaSxDYW5jZWw6YWksaXNBeGlvc0Vycm9yOmNpLHNwcmVhZDpmaSx0b0Zvcm1EYXRhOmxpLEF4aW9zSGVhZGVyczpEaSxIdHRwU3RhdHVzQ29kZTp1aSxmb3JtVG9KU09OOmhpLGdldEFkYXB0ZXI6ZGksbWVyZ2VDb25maWc6eWl9PWRBO3ZhciBJQSxrLFhBLFZBPXtlbnY6e2Vtc2NyaXB0ZW5fbm90aWZ5X21lbW9yeV9ncm93dGg6ZnVuY3Rpb24oQSl7WEE9bmV3IFVpbnQ4QXJyYXkoay5leHBvcnRzLm1lbW9yeS5idWZmZXIpfX19LHlBPWNsYXNze2luaXQoKXtyZXR1cm4gSUF8fCh0eXBlb2YgZmV0Y2g8InUiP0lBPWZldGNoKCJkYXRhOmFwcGxpY2F0aW9uL3dhc207YmFzZTY0LCIrS0kpLnRoZW4oST0+SS5hcnJheUJ1ZmZlcigpKS50aGVuKEk9PldlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKEksVkEpKS50aGVuKHRoaXMuX2luaXQpOklBPVdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKEJ1ZmZlci5mcm9tKEtJLCJiYXNlNjQiKSxWQSkudGhlbih0aGlzLl9pbml0KSxJQSl9X2luaXQoSSl7az1JLmluc3RhbmNlLFZBLmVudi5lbXNjcmlwdGVuX25vdGlmeV9tZW1vcnlfZ3Jvd3RoKDApfWRlY29kZShJLHQ9MCl7aWYoIWspdGhyb3cgbmV3IEVycm9yKCJaU1RERGVjb2RlcjogQXdhaXQgLmluaXQoKSBiZWZvcmUgZGVjb2RpbmcuIik7bGV0IGU9SS5ieXRlTGVuZ3RoLGc9ay5leHBvcnRzLm1hbGxvYyhlKTtYQS5zZXQoSSxnKSx0PXR8fE51bWJlcihrLmV4cG9ydHMuWlNURF9maW5kRGVjb21wcmVzc2VkU2l6ZShnLGUpKTtsZXQgcj1rLmV4cG9ydHMubWFsbG9jKHQpLGk9ay5leHBvcnRzLlpTVERfZGVjb21wcmVzcyhyLHQsZyxlKSxzPVhBLnNsaWNlKHIscitpKTtyZXR1cm4gay5leHBvcnRzLmZyZWUoZyksay5leHBvcnRzLmZyZWUociksc319LEtJPSJBR0Z6YlFFQUFBQUJiZzVnQTM5L2Z3Ri9ZQUYvQVg5Z0FuOS9BR0FCZndCZ0JYOS9mMzkvQVg5Z0EzOS9md0JnQkg5L2YzOEJmMkFBQVg5Z0FuOS9BWDlnQjM5L2YzOS9mMzhCZjJBQ2YzOEJmbUFJZjM5L2YzOS9mMzhCZjJBRmYzOS9mMzhBWUE1L2YzOS9mMzkvZjM5L2YzOS9md0YvQWljQkEyVnVkaDlsYlhOamNtbHdkR1Z1WDI1dmRHbG1lVjl0WlcxdmNubGZaM0p2ZDNSb0FBTURJeUlIQUFBQkFRTUhBd0VBQ1FRQUJRRUlDQUVGQmdRRUJBTUdBQUFLQUFVTERBMEdCQVVCY0FFQkFRVUhBUUdBQW9DQUFnWUlBWDhCUVlDakJBc0hyZ0VMQm0xbGJXOXllUUlBQm0xaGJHeHZZd0FGQkdaeVpXVUFCZ3hhVTFSRVgybHpSWEp5YjNJQUVobGFVMVJFWDJacGJtUkVaV052YlhCeVpYTnpaV1JUYVhwbEFCd1BXbE5VUkY5a1pXTnZiWEJ5WlhOekFDSVpYMTlwYm1ScGNtVmpkRjltZFc1amRHbHZibDkwWVdKc1pRRUFFRjlmWlhKeWJtOWZiRzlqWVhScGIyNEFBUWx6ZEdGamExTmhkbVVBQnd4emRHRmphMUpsYzNSdmNtVUFDQXB6ZEdGamEwRnNiRzlqQUFrS2kvSUJJZ1VBUVlRZkN6TUJBWDhnQWdSQUlBQWhBd05BSUFNZ0FTMEFBRG9BQUNBRFFRRnFJUU1nQVVFQmFpRUJJQUpCQVdzaUFnMEFDd3NnQUFzcEFRRi9JQUlFUUNBQUlRTURRQ0FESUFFNkFBQWdBMEVCYWlFRElBSkJBV3NpQWcwQUN3c2dBQXRzQVFKL1FZQWZLQUlBSWdFZ0FFRUhha0Y0Y1NJQ2FpRUFBa0FnQWtFQUlBQWdBVTBiRFFBZ0FEOEFRUkIwU3dSQUlBQS9BRUVRZEd0Qi8vOERha0VRZGtBQVFYOUdCSDlCQUFWQkFCQUFRUUVMUlEwQkMwR0FIeUFBTmdJQUlBRVBDMEdFSDBFd05nSUFRWDhMdVNjQkMzOGpBRUVRYXlJS0pBQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUJCOUFGTkJFQkJpQjhvQWdBaUJrRVFJQUJCQzJwQmVIRWdBRUVMU1JzaUJVRURkaUlBZGlJQlFRTnhCRUFDUUNBQlFYOXpRUUZ4SUFCcUlnSkJBM1FpQVVHd0gyb2lBQ0FCUWJnZmFpZ0NBQ0lCS0FJSUlnUkdCRUJCaUI4Z0JrRitJQUozY1RZQ0FBd0JDeUFFSUFBMkFnd2dBQ0FFTmdJSUN5QUJRUWhxSVFBZ0FTQUNRUU4wSWdKQkEzSTJBZ1FnQVNBQ2FpSUJJQUVvQWdSQkFYSTJBZ1FNRHdzZ0JVR1FIeWdDQUNJSFRRMEJJQUVFUUFKQVFRSWdBSFFpQWtFQUlBSnJjaUFCSUFCMGNXZ2lBVUVEZENJQVFiQWZhaUlDSUFCQnVCOXFLQUlBSWdBb0FnZ2lCRVlFUUVHSUh5QUdRWDRnQVhkeElnWTJBZ0FNQVFzZ0JDQUNOZ0lNSUFJZ0JEWUNDQXNnQUNBRlFRTnlOZ0lFSUFBZ0JXb2lDQ0FCUVFOMElnRWdCV3NpQkVFQmNqWUNCQ0FBSUFGcUlBUTJBZ0FnQndSQUlBZEJlSEZCc0I5cUlRRkJuQjhvQWdBaEFnSi9JQVpCQVNBSFFRTjJkQ0lEY1VVRVFFR0lIeUFESUFaeU5nSUFJQUVNQVFzZ0FTZ0NDQXNoQXlBQklBSTJBZ2dnQXlBQ05nSU1JQUlnQVRZQ0RDQUNJQU0yQWdnTElBQkJDR29oQUVHY0h5QUlOZ0lBUVpBZklBUTJBZ0FNRHd0QmpCOG9BZ0FpQzBVTkFTQUxhRUVDZEVHNElXb29BZ0FpQWlnQ0JFRjRjU0FGYXlFRElBSWhBUU5BQWtBZ0FTZ0NFQ0lBUlFSQUlBRW9BaFFpQUVVTkFRc2dBQ2dDQkVGNGNTQUZheUlCSUFNZ0FTQURTU0lCR3lFRElBQWdBaUFCR3lFQ0lBQWhBUXdCQ3dzZ0FpZ0NHQ0VKSUFJZ0FpZ0NEQ0lFUndSQVFaZ2ZLQUlBR2lBQ0tBSUlJZ0FnQkRZQ0RDQUVJQUEyQWdnTURnc2dBa0VVYWlJQktBSUFJZ0JGQkVBZ0FpZ0NFQ0lBUlEwRElBSkJFR29oQVFzRFFDQUJJUWdnQUNJRVFSUnFJZ0VvQWdBaUFBMEFJQVJCRUdvaEFTQUVLQUlRSWdBTkFBc2dDRUVBTmdJQURBMExRWDhoQlNBQVFiOS9TdzBBSUFCQkMyb2lBRUY0Y1NFRlFZd2ZLQUlBSWdoRkRRQkJBQ0FGYXlFREFrQUNRQUpBQW45QkFDQUZRWUFDU1EwQUdrRWZJQVZCLy8vL0Iwc05BQm9nQlVFbUlBQkJDSFpuSWdCcmRrRUJjU0FBUVFGMGEwRSthZ3NpQjBFQ2RFRzRJV29vQWdBaUFVVUVRRUVBSVFBTUFRdEJBQ0VBSUFWQkdTQUhRUUYyYTBFQUlBZEJIMGNiZENFQ0EwQUNRQ0FCS0FJRVFYaHhJQVZySWdZZ0EwOE5BQ0FCSVFRZ0JpSUREUUJCQUNFRElBRWhBQXdEQ3lBQUlBRW9BaFFpQmlBR0lBRWdBa0VkZGtFRWNXb29BaEFpQVVZYklBQWdCaHNoQUNBQ1FRRjBJUUlnQVEwQUN3c2dBQ0FFY2tVRVFFRUFJUVJCQWlBSGRDSUFRUUFnQUd0eUlBaHhJZ0JGRFFNZ0FHaEJBblJCdUNGcUtBSUFJUUFMSUFCRkRRRUxBMEFnQUNnQ0JFRjRjU0FGYXlJQ0lBTkpJUUVnQWlBRElBRWJJUU1nQUNBRUlBRWJJUVFnQUNnQ0VDSUJCSDhnQVFVZ0FDZ0NGQXNpQUEwQUN3c2dCRVVOQUNBRFFaQWZLQUlBSUFWclR3MEFJQVFvQWhnaEJ5QUVJQVFvQWd3aUFrY0VRRUdZSHlnQ0FCb2dCQ2dDQ0NJQUlBSTJBZ3dnQWlBQU5nSUlEQXdMSUFSQkZHb2lBU2dDQUNJQVJRUkFJQVFvQWhBaUFFVU5BeUFFUVJCcUlRRUxBMEFnQVNFR0lBQWlBa0VVYWlJQktBSUFJZ0FOQUNBQ1FSQnFJUUVnQWlnQ0VDSUFEUUFMSUFaQkFEWUNBQXdMQ3lBRlFaQWZLQUlBSWdSTkJFQkJuQjhvQWdBaEFBSkFJQVFnQldzaUFVRVFUd1JBSUFBZ0JXb2lBaUFCUVFGeU5nSUVJQUFnQkdvZ0FUWUNBQ0FBSUFWQkEzSTJBZ1FNQVFzZ0FDQUVRUU55TmdJRUlBQWdCR29pQVNBQktBSUVRUUZ5TmdJRVFRQWhBa0VBSVFFTFFaQWZJQUUyQWdCQm5COGdBallDQUNBQVFRaHFJUUFNRFFzZ0JVR1VIeWdDQUNJQ1NRUkFRWlFmSUFJZ0JXc2lBVFlDQUVHZ0gwR2dIeWdDQUNJQUlBVnFJZ0kyQWdBZ0FpQUJRUUZ5TmdJRUlBQWdCVUVEY2pZQ0JDQUFRUWhxSVFBTURRdEJBQ0VBSUFWQkwyb2lBd0ovUWVBaUtBSUFCRUJCNkNJb0FnQU1BUXRCN0NKQ2Z6Y0NBRUhrSWtLQW9JQ0FnSUFFTndJQVFlQWlJQXBCREdwQmNIRkIyS3JWcWdWek5nSUFRZlFpUVFBMkFnQkJ4Q0pCQURZQ0FFR0FJQXNpQVdvaUJrRUFJQUZySWdoeElnRWdCVTBOREVIQUlpZ0NBQ0lFQkVCQnVDSW9BZ0FpQnlBQmFpSUpJQWROSUFRZ0NVbHlEUTBMQWtCQnhDSXRBQUJCQkhGRkJFQUNRQUpBQWtBQ1FFR2dIeWdDQUNJRUJFQkJ5Q0loQUFOQUlBUWdBQ2dDQUNJSFR3UkFJQWNnQUNnQ0JHb2dCRXNOQXdzZ0FDZ0NDQ0lBRFFBTEMwRUFFQVFpQWtGL1JnMERJQUVoQmtIa0lpZ0NBQ0lBUVFGcklnUWdBbkVFUUNBQklBSnJJQUlnQkdwQkFDQUFhM0ZxSVFZTElBVWdCazhOQTBIQUlpZ0NBQ0lBQkVCQnVDSW9BZ0FpQkNBR2FpSUlJQVJOSUFBZ0NFbHlEUVFMSUFZUUJDSUFJQUpIRFFFTUJRc2dCaUFDYXlBSWNTSUdFQVFpQWlBQUtBSUFJQUFvQWdScVJnMEJJQUloQUFzZ0FFRi9SZzBCSUFWQk1Hb2dCazBFUUNBQUlRSU1CQXRCNkNJb0FnQWlBaUFESUFacmFrRUFJQUpyY1NJQ0VBUkJmMFlOQVNBQ0lBWnFJUVlnQUNFQ0RBTUxJQUpCZjBjTkFndEJ4Q0pCeENJb0FnQkJCSEkyQWdBTElBRVFCQ0lDUVg5R1FRQVFCQ0lBUVg5R2NpQUFJQUpOY2cwRklBQWdBbXNpQmlBRlFTaHFUUTBGQzBHNElrRzRJaWdDQUNBR2FpSUFOZ0lBUWJ3aUtBSUFJQUJKQkVCQnZDSWdBRFlDQUFzQ1FFR2dIeWdDQUNJREJFQkJ5Q0loQUFOQUlBSWdBQ2dDQUNJQklBQW9BZ1FpQkdwR0RRSWdBQ2dDQ0NJQURRQUxEQVFMUVpnZktBSUFJZ0JCQUNBQUlBSk5HMFVFUUVHWUh5QUNOZ0lBQzBFQUlRQkJ6Q0lnQmpZQ0FFSElJaUFDTmdJQVFhZ2ZRWDgyQWdCQnJCOUI0Q0lvQWdBMkFnQkIxQ0pCQURZQ0FBTkFJQUJCQTNRaUFVRzRIMm9nQVVHd0gyb2lCRFlDQUNBQlFid2ZhaUFFTmdJQUlBQkJBV29pQUVFZ1J3MEFDMEdVSHlBR1FTaHJJZ0JCZUNBQ2EwRUhjU0lCYXlJRU5nSUFRYUFmSUFFZ0Ftb2lBVFlDQUNBQklBUkJBWEkyQWdRZ0FDQUNha0VvTmdJRVFhUWZRZkFpS0FJQU5nSUFEQVFMSUFJZ0EwMGdBU0FEUzNJTkFpQUFLQUlNUVFoeERRSWdBQ0FFSUFacU5nSUVRYUFmSUFOQmVDQURhMEVIY1NJQWFpSUJOZ0lBUVpRZlFaUWZLQUlBSUFacUlnSWdBR3NpQURZQ0FDQUJJQUJCQVhJMkFnUWdBaUFEYWtFb05nSUVRYVFmUWZBaUtBSUFOZ0lBREFNTFFRQWhCQXdLQzBFQUlRSU1DQXRCbUI4b0FnQWdBa3NFUUVHWUh5QUNOZ0lBQ3lBQ0lBWnFJUUZCeUNJaEFBSkFBa0FDUUFOQUlBRWdBQ2dDQUVjRVFDQUFLQUlJSWdBTkFRd0NDd3NnQUMwQURFRUljVVVOQVF0QnlDSWhBQU5BSUFNZ0FDZ0NBQ0lCVHdSQUlBRWdBQ2dDQkdvaUJDQURTdzBEQ3lBQUtBSUlJUUFNQUFzQUN5QUFJQUkyQWdBZ0FDQUFLQUlFSUFacU5nSUVJQUpCZUNBQ2EwRUhjV29pQnlBRlFRTnlOZ0lFSUFGQmVDQUJhMEVIY1dvaUJpQUZJQWRxSWdWcklRQWdBeUFHUmdSQVFhQWZJQVUyQWdCQmxCOUJsQjhvQWdBZ0FHb2lBRFlDQUNBRklBQkJBWEkyQWdRTUNBdEJuQjhvQWdBZ0JrWUVRRUdjSHlBRk5nSUFRWkFmUVpBZktBSUFJQUJxSWdBMkFnQWdCU0FBUVFGeU5nSUVJQUFnQldvZ0FEWUNBQXdJQ3lBR0tBSUVJZ05CQTNGQkFVY05CaUFEUVhoeElRa2dBMEgvQVUwRVFDQUdLQUlNSWdFZ0JpZ0NDQ0lDUmdSQVFZZ2ZRWWdmS0FJQVFYNGdBMEVEZG5keE5nSUFEQWNMSUFJZ0FUWUNEQ0FCSUFJMkFnZ01CZ3NnQmlnQ0dDRUlJQVlnQmlnQ0RDSUNSd1JBSUFZb0FnZ2lBU0FDTmdJTUlBSWdBVFlDQ0F3RkN5QUdRUlJxSWdFb0FnQWlBMFVFUUNBR0tBSVFJZ05GRFFRZ0JrRVFhaUVCQ3dOQUlBRWhCQ0FESWdKQkZHb2lBU2dDQUNJRERRQWdBa0VRYWlFQklBSW9BaEFpQXcwQUN5QUVRUUEyQWdBTUJBdEJsQjhnQmtFb2F5SUFRWGdnQW10QkIzRWlBV3NpQ0RZQ0FFR2dIeUFCSUFKcUlnRTJBZ0FnQVNBSVFRRnlOZ0lFSUFBZ0FtcEJLRFlDQkVHa0gwSHdJaWdDQURZQ0FDQURJQVJCSnlBRWEwRUhjV3BCTDJzaUFDQUFJQU5CRUdwSkd5SUJRUnMyQWdRZ0FVSFFJaWtDQURjQ0VDQUJRY2dpS1FJQU53SUlRZEFpSUFGQkNHbzJBZ0JCekNJZ0JqWUNBRUhJSWlBQ05nSUFRZFFpUVFBMkFnQWdBVUVZYWlFQUEwQWdBRUVITmdJRUlBQkJDR29nQUVFRWFpRUFJQVJKRFFBTElBRWdBMFlOQUNBQklBRW9BZ1JCZm5FMkFnUWdBeUFCSUFOcklnSkJBWEkyQWdRZ0FTQUNOZ0lBSUFKQi93Rk5CRUFnQWtGNGNVR3dIMm9oQUFKL1FZZ2ZLQUlBSWdGQkFTQUNRUU4yZENJQ2NVVUVRRUdJSHlBQklBSnlOZ0lBSUFBTUFRc2dBQ2dDQ0FzaEFTQUFJQU0yQWdnZ0FTQUROZ0lNSUFNZ0FEWUNEQ0FESUFFMkFnZ01BUXRCSHlFQUlBSkIvLy8vQjAwRVFDQUNRU1lnQWtFSWRtY2lBR3QyUVFGeElBQkJBWFJyUVQ1cUlRQUxJQU1nQURZQ0hDQURRZ0EzQWhBZ0FFRUNkRUc0SVdvaEFRSkFBa0JCakI4b0FnQWlCRUVCSUFCMElnWnhSUVJBUVl3ZklBUWdCbkkyQWdBZ0FTQUROZ0lBREFFTElBSkJHU0FBUVFGMmEwRUFJQUJCSDBjYmRDRUFJQUVvQWdBaEJBTkFJQVFpQVNnQ0JFRjRjU0FDUmcwQ0lBQkJIWFloQkNBQVFRRjBJUUFnQVNBRVFRUnhhaUlHS0FJUUlnUU5BQXNnQmlBRE5nSVFDeUFESUFFMkFoZ2dBeUFETmdJTUlBTWdBellDQ0F3QkN5QUJLQUlJSWdBZ0F6WUNEQ0FCSUFNMkFnZ2dBMEVBTmdJWUlBTWdBVFlDRENBRElBQTJBZ2dMUVpRZktBSUFJZ0FnQlUwTkFFR1VIeUFBSUFWcklnRTJBZ0JCb0I5Qm9COG9BZ0FpQUNBRmFpSUNOZ0lBSUFJZ0FVRUJjallDQkNBQUlBVkJBM0kyQWdRZ0FFRUlhaUVBREFnTFFZUWZRVEEyQWdCQkFDRUFEQWNMUVFBaEFnc2dDRVVOQUFKQUlBWW9BaHdpQVVFQ2RFRzRJV29pQkNnQ0FDQUdSZ1JBSUFRZ0FqWUNBQ0FDRFFGQmpCOUJqQjhvQWdCQmZpQUJkM0UyQWdBTUFnc2dDRUVRUVJRZ0NDZ0NFQ0FHUmh0cUlBSTJBZ0FnQWtVTkFRc2dBaUFJTmdJWUlBWW9BaEFpQVFSQUlBSWdBVFlDRUNBQklBSTJBaGdMSUFZb0FoUWlBVVVOQUNBQ0lBRTJBaFFnQVNBQ05nSVlDeUFBSUFscUlRQWdCaUFKYWlJR0tBSUVJUU1MSUFZZ0EwRitjVFlDQkNBRklBQkJBWEkyQWdRZ0FDQUZhaUFBTmdJQUlBQkIvd0ZOQkVBZ0FFRjRjVUd3SDJvaEFRSi9RWWdmS0FJQUlnSkJBU0FBUVFOMmRDSUFjVVVFUUVHSUh5QUFJQUp5TmdJQUlBRU1BUXNnQVNnQ0NBc2hBQ0FCSUFVMkFnZ2dBQ0FGTmdJTUlBVWdBVFlDRENBRklBQTJBZ2dNQVF0Qkh5RURJQUJCLy8vL0IwMEVRQ0FBUVNZZ0FFRUlkbWNpQVd0MlFRRnhJQUZCQVhSclFUNXFJUU1MSUFVZ0F6WUNIQ0FGUWdBM0FoQWdBMEVDZEVHNElXb2hBUUpBQWtCQmpCOG9BZ0FpQWtFQklBTjBJZ1J4UlFSQVFZd2ZJQUlnQkhJMkFnQWdBU0FGTmdJQURBRUxJQUJCR1NBRFFRRjJhMEVBSUFOQkgwY2JkQ0VESUFFb0FnQWhBZ05BSUFJaUFTZ0NCRUY0Y1NBQVJnMENJQU5CSFhZaEFpQURRUUYwSVFNZ0FTQUNRUVJ4YWlJRUtBSVFJZ0lOQUFzZ0JDQUZOZ0lRQ3lBRklBRTJBaGdnQlNBRk5nSU1JQVVnQlRZQ0NBd0JDeUFCS0FJSUlnQWdCVFlDRENBQklBVTJBZ2dnQlVFQU5nSVlJQVVnQVRZQ0RDQUZJQUEyQWdnTElBZEJDR29oQUF3Q0N3SkFJQWRGRFFBQ1FDQUVLQUljSWdCQkFuUkJ1Q0ZxSWdFb0FnQWdCRVlFUUNBQklBSTJBZ0FnQWcwQlFZd2ZJQWhCZmlBQWQzRWlDRFlDQUF3Q0N5QUhRUkJCRkNBSEtBSVFJQVJHRzJvZ0FqWUNBQ0FDUlEwQkN5QUNJQWMyQWhnZ0JDZ0NFQ0lBQkVBZ0FpQUFOZ0lRSUFBZ0FqWUNHQXNnQkNnQ0ZDSUFSUTBBSUFJZ0FEWUNGQ0FBSUFJMkFoZ0xBa0FnQTBFUFRRUkFJQVFnQXlBRmFpSUFRUU55TmdJRUlBQWdCR29pQUNBQUtBSUVRUUZ5TmdJRURBRUxJQVFnQlVFRGNqWUNCQ0FFSUFWcUlnSWdBMEVCY2pZQ0JDQUNJQU5xSUFNMkFnQWdBMEgvQVUwRVFDQURRWGh4UWJBZmFpRUFBbjlCaUI4b0FnQWlBVUVCSUFOQkEzWjBJZ054UlFSQVFZZ2ZJQUVnQTNJMkFnQWdBQXdCQ3lBQUtBSUlDeUVCSUFBZ0FqWUNDQ0FCSUFJMkFnd2dBaUFBTmdJTUlBSWdBVFlDQ0F3QkMwRWZJUUFnQTBILy8vOEhUUVJBSUFOQkppQURRUWgyWnlJQWEzWkJBWEVnQUVFQmRHdEJQbW9oQUFzZ0FpQUFOZ0ljSUFKQ0FEY0NFQ0FBUVFKMFFiZ2hhaUVCQWtBQ1FDQUlRUUVnQUhRaUJuRkZCRUJCakI4Z0JpQUljallDQUNBQklBSTJBZ0FNQVFzZ0EwRVpJQUJCQVhaclFRQWdBRUVmUnh0MElRQWdBU2dDQUNFRkEwQWdCU0lCS0FJRVFYaHhJQU5HRFFJZ0FFRWRkaUVHSUFCQkFYUWhBQ0FCSUFaQkJIRnFJZ1lvQWhBaUJRMEFDeUFHSUFJMkFoQUxJQUlnQVRZQ0dDQUNJQUkyQWd3Z0FpQUNOZ0lJREFFTElBRW9BZ2dpQUNBQ05nSU1JQUVnQWpZQ0NDQUNRUUEyQWhnZ0FpQUJOZ0lNSUFJZ0FEWUNDQXNnQkVFSWFpRUFEQUVMQWtBZ0NVVU5BQUpBSUFJb0Fod2lBRUVDZEVHNElXb2lBU2dDQUNBQ1JnUkFJQUVnQkRZQ0FDQUVEUUZCakI4Z0MwRitJQUIzY1RZQ0FBd0NDeUFKUVJCQkZDQUpLQUlRSUFKR0cyb2dCRFlDQUNBRVJRMEJDeUFFSUFrMkFoZ2dBaWdDRUNJQUJFQWdCQ0FBTmdJUUlBQWdCRFlDR0FzZ0FpZ0NGQ0lBUlEwQUlBUWdBRFlDRkNBQUlBUTJBaGdMQWtBZ0EwRVBUUVJBSUFJZ0F5QUZhaUlBUVFOeU5nSUVJQUFnQW1vaUFDQUFLQUlFUVFGeU5nSUVEQUVMSUFJZ0JVRURjallDQkNBQ0lBVnFJZ1FnQTBFQmNqWUNCQ0FESUFScUlBTTJBZ0FnQndSQUlBZEJlSEZCc0I5cUlRQkJuQjhvQWdBaEFRSi9RUUVnQjBFRGRuUWlCU0FHY1VVRVFFR0lIeUFGSUFaeU5nSUFJQUFNQVFzZ0FDZ0NDQXNoQmlBQUlBRTJBZ2dnQmlBQk5nSU1JQUVnQURZQ0RDQUJJQVkyQWdnTFFad2ZJQVEyQWdCQmtCOGdBellDQUFzZ0FrRUlhaUVBQ3lBS1FSQnFKQUFnQUF2U0N3RUhmd0pBSUFCRkRRQWdBRUVJYXlJQ0lBQkJCR3NvQWdBaUFVRjRjU0lBYWlFRkFrQWdBVUVCY1EwQUlBRkJBM0ZGRFFFZ0FpQUNLQUlBSWdGcklnSkJtQjhvQWdCSkRRRWdBQ0FCYWlFQUFrQUNRRUdjSHlnQ0FDQUNSd1JBSUFGQi93Rk5CRUFnQVVFRGRpRUVJQUlvQWd3aUFTQUNLQUlJSWdOR0JFQkJpQjlCaUI4b0FnQkJmaUFFZDNFMkFnQU1CUXNnQXlBQk5nSU1JQUVnQXpZQ0NBd0VDeUFDS0FJWUlRWWdBaUFDS0FJTUlnRkhCRUFnQWlnQ0NDSURJQUUyQWd3Z0FTQUROZ0lJREFNTElBSkJGR29pQkNnQ0FDSURSUVJBSUFJb0FoQWlBMFVOQWlBQ1FSQnFJUVFMQTBBZ0JDRUhJQU1pQVVFVWFpSUVLQUlBSWdNTkFDQUJRUkJxSVFRZ0FTZ0NFQ0lERFFBTElBZEJBRFlDQUF3Q0N5QUZLQUlFSWdGQkEzRkJBMGNOQWtHUUh5QUFOZ0lBSUFVZ0FVRitjVFlDQkNBQ0lBQkJBWEkyQWdRZ0JTQUFOZ0lBRHd0QkFDRUJDeUFHUlEwQUFrQWdBaWdDSENJRFFRSjBRYmdoYWlJRUtBSUFJQUpHQkVBZ0JDQUJOZ0lBSUFFTkFVR01IMEdNSHlnQ0FFRitJQU4zY1RZQ0FBd0NDeUFHUVJCQkZDQUdLQUlRSUFKR0cyb2dBVFlDQUNBQlJRMEJDeUFCSUFZMkFoZ2dBaWdDRUNJREJFQWdBU0FETmdJUUlBTWdBVFlDR0FzZ0FpZ0NGQ0lEUlEwQUlBRWdBellDRkNBRElBRTJBaGdMSUFJZ0JVOE5BQ0FGS0FJRUlnRkJBWEZGRFFBQ1FBSkFBa0FDUUNBQlFRSnhSUVJBUWFBZktBSUFJQVZHQkVCQm9COGdBallDQUVHVUgwR1VIeWdDQUNBQWFpSUFOZ0lBSUFJZ0FFRUJjallDQkNBQ1Fad2ZLQUlBUncwR1FaQWZRUUEyQWdCQm5COUJBRFlDQUE4TFFad2ZLQUlBSUFWR0JFQkJuQjhnQWpZQ0FFR1FIMEdRSHlnQ0FDQUFhaUlBTmdJQUlBSWdBRUVCY2pZQ0JDQUFJQUpxSUFBMkFnQVBDeUFCUVhoeElBQnFJUUFnQVVIL0FVMEVRQ0FCUVFOMklRUWdCU2dDRENJQklBVW9BZ2dpQTBZRVFFR0lIMEdJSHlnQ0FFRitJQVIzY1RZQ0FBd0ZDeUFESUFFMkFnd2dBU0FETmdJSURBUUxJQVVvQWhnaEJpQUZJQVVvQWd3aUFVY0VRRUdZSHlnQ0FCb2dCU2dDQ0NJRElBRTJBZ3dnQVNBRE5nSUlEQU1MSUFWQkZHb2lCQ2dDQUNJRFJRUkFJQVVvQWhBaUEwVU5BaUFGUVJCcUlRUUxBMEFnQkNFSElBTWlBVUVVYWlJRUtBSUFJZ01OQUNBQlFSQnFJUVFnQVNnQ0VDSUREUUFMSUFkQkFEWUNBQXdDQ3lBRklBRkJmbkUyQWdRZ0FpQUFRUUZ5TmdJRUlBQWdBbW9nQURZQ0FBd0RDMEVBSVFFTElBWkZEUUFDUUNBRktBSWNJZ05CQW5SQnVDRnFJZ1FvQWdBZ0JVWUVRQ0FFSUFFMkFnQWdBUTBCUVl3ZlFZd2ZLQUlBUVg0Z0EzZHhOZ0lBREFJTElBWkJFRUVVSUFZb0FoQWdCVVliYWlBQk5nSUFJQUZGRFFFTElBRWdCallDR0NBRktBSVFJZ01FUUNBQklBTTJBaEFnQXlBQk5nSVlDeUFGS0FJVUlnTkZEUUFnQVNBRE5nSVVJQU1nQVRZQ0dBc2dBaUFBUVFGeU5nSUVJQUFnQW1vZ0FEWUNBQ0FDUVp3ZktBSUFSdzBBUVpBZklBQTJBZ0FQQ3lBQVFmOEJUUVJBSUFCQmVIRkJzQjlxSVFFQ2YwR0lIeWdDQUNJRFFRRWdBRUVEZG5RaUFIRkZCRUJCaUI4Z0FDQURjallDQUNBQkRBRUxJQUVvQWdnTElRQWdBU0FDTmdJSUlBQWdBallDRENBQ0lBRTJBZ3dnQWlBQU5nSUlEd3RCSHlFRElBQkIvLy8vQjAwRVFDQUFRU1lnQUVFSWRtY2lBV3QyUVFGeElBRkJBWFJyUVQ1cUlRTUxJQUlnQXpZQ0hDQUNRZ0EzQWhBZ0EwRUNkRUc0SVdvaEFRSkFBa0FDUUVHTUh5Z0NBQ0lFUVFFZ0EzUWlCM0ZGQkVCQmpCOGdCQ0FIY2pZQ0FDQUJJQUkyQWdBZ0FpQUJOZ0lZREFFTElBQkJHU0FEUVFGMmEwRUFJQU5CSDBjYmRDRURJQUVvQWdBaEFRTkFJQUVpQkNnQ0JFRjRjU0FBUmcwQ0lBTkJIWFloQVNBRFFRRjBJUU1nQkNBQlFRUnhhaUlIUVJCcUtBSUFJZ0VOQUFzZ0J5QUNOZ0lRSUFJZ0JEWUNHQXNnQWlBQ05nSU1JQUlnQWpZQ0NBd0JDeUFFS0FJSUlnQWdBallDRENBRUlBSTJBZ2dnQWtFQU5nSVlJQUlnQkRZQ0RDQUNJQUEyQWdnTFFhZ2ZRYWdmS0FJQVFRRnJJZ0JCZnlBQUd6WUNBQXNMQkFBakFBc0dBQ0FBSkFBTEVBQWpBQ0FBYTBGd2NTSUFKQUFnQUF0S0FRRi9JQUFnQVVrRVFDQUFJQUVnQWhBQ0R3c2dBZ1JBSUFBZ0Ftb2hBeUFCSUFKcUlRRURRQ0FEUVFGcklnTWdBVUVCYXlJQkxRQUFPZ0FBSUFKQkFXc2lBZzBBQ3dzZ0FBdjlEZ0lSZndGK0l3QkJNR3NpQnlRQVFiaC9JUWdDUUNBRlJRMEFJQVFzQUFBaUNVSC9BWEVoQ3dKQUlBbEJBRWdFUUNBTFFmNEFhMEVCZGlJR0lBVlBEUUpCYkNFSUlBdEIvd0JySWd0Qi93RkxEUUlnQkVFQmFpRUlRUUFoQlFOQUlBVWdDMDhFUUNBTElRZ2dCaUVMREFNRklBQWdCV29nQ0NBRlFRRjJhaUlFTFFBQVFRUjJPZ0FBSUFBZ0JVRUJjbW9nQkMwQUFFRVBjVG9BQUNBRlFRSnFJUVVNQVFzQUN3QUxJQVVnQzAwTkFTQUhRZjhCTmdJRUlBWWdCMEVFYWlBSFFRaHFJQVJCQVdvaURpQUxFQXdpQkVHSWYwc0VRQ0FFSVFnTUFndEJWQ0VJSUFjb0FnZ2lFRUVHU3cwQklBY29BZ1FpRVVFQmRDSUpRUUpxclVJQklCQ3RoaUlZUVFFZ0VIUWlEVUVCYWlJRnJVSUNobng4UWd0OFF2ei8vLy8vLy8vLy93Q0RRdVFDVmcwQlFWSWhDQ0FSUWY4QlN3MEJJQTFCZjNOQkFuUkI1QUpxclNBUlFRRnFJaFZCQVhTdElCaDhRZ2g4VkEwQklBc2dCR3NoRmlBRUlBNXFJUmNnQmtHQUJHb2lFaUFGUVFKMGFpSVJJQWxxUVFKcUlRNGdCa0dFQkdvaEUwR0FnQUlnRUhSQkVIWWhDVUVBSVFWQkFTRVBJQTFCQVdzaUZDRUtBMEFnQlNBVlJrVUVRQUpBSUFZZ0JVRUJkQ0lJYWk4QkFDSUVRZi8vQTBZRVFDQVRJQXBCQW5ScUlBVTZBQUlnQ2tFQmF5RUtRUUVoQkF3QkN5QVBRUUFnQ1NBRXdVb2JJUThMSUFnZ0VXb2dCRHNCQUNBRlFRRnFJUVVNQVFzTElBWWdEenNCZ2dRZ0JpQVFPd0dBQkFKQUlBb2dGRVlFUUNBTlFRTjJJUWhDQUNFWVFRQWhEd05BSUF3Z0ZVWUVRQ0FJSUExQkFYWnFRUU5xSWdsQkFYUWhDRUVBSVFSQkFDRUtBMEJCQUNFRklBb2dEVThOQkFOQUlBVkJBa1pGQkVBZ0V5QUZJQWxzSUFScUlCUnhRUUowYWlBT0lBVWdDbXBxTFFBQU9nQUNJQVZCQVdvaEJRd0JDd3NnQ2tFQ2FpRUtJQVFnQ0dvZ0ZIRWhCQXdBQ3dBRklBWWdERUVCZEdvdUFRQWhDU0FPSUE5cUlnUWdHRGNBQUVFSUlRVURRQ0FGSUFsT1JRUkFJQVFnQldvZ0dEY0FBQ0FGUVFocUlRVU1BUXNMSUJoQ2dZS0VpSkNnd0lBQmZDRVlJQXhCQVdvaERDQUpJQTlxSVE4TUFRc0FDd0FMSUExQkEzWWdEVUVCZG1wQkEyb2hDRUVBSVFVRFFDQU1JQlZHUlFSQVFRQWhDU0FHSUF4QkFYUnFMZ0VBSWdSQkFDQUVRUUJLR3lFRUEwQWdCQ0FKUmtVRVFDQVRJQVZCQW5ScUlBdzZBQUlEUUNBRklBaHFJQlJ4SWdVZ0Nrc05BQXNnQ1VFQmFpRUpEQUVMQ3lBTVFRRnFJUXdNQVFzTFFYOGhDQ0FGRFFJTElCQkJBV29oQ0VFQUlRVURRQ0FGSUExR1JRUkFJQkVnRXlBRlFRSjBhaUlPTFFBQ1FRRjBhaUlFSUFRdkFRQWlDVUVCYWpzQkFDQU9JQWdnQ1dkQllITnFJZ1E2QUFNZ0RpQUpJQVIwSUExck93RUFJQVZCQVdvaEJRd0JDd3NDUUFKQUlBWXZBWUlFQkVBZ0IwRWNhaUlFSUJjZ0ZoQU5JZ2hCaUg5TERRSWdCMEVVYWlBRUlCSVFEaUFIUVF4cUlBUWdFaEFPUVFBaEJRTkFJQWRCSEdvaUJCQVBJQVZCK3dGTGNnMENJQUFnQldvaUJpQUhRUlJxSUFRUUVEb0FBQ0FHSUFkQkRHb2dCQkFRT2dBQklBVkJBbkloQkNBSFFSeHFFQThFUUNBRUlRVU1Bd1VnQUNBRWFpQUhRUlJxSUFkQkhHb2lCQkFRT2dBQUlBWWdCMEVNYWlBRUVCQTZBQU1nQlVFRWFpRUZEQUVMQUFzQUN5QUhRUnhxSWdRZ0Z5QVdFQTBpQ0VHSWYwc05BU0FIUVJScUlBUWdFaEFPSUFkQkRHb2dCQ0FTRUE1QkFDRUZBMEFnQjBFY2FpSUVFQThnQlVIN0FVdHlSUVJBSUFBZ0JXb2lCaUFIUVJScUlBUVFFVG9BQUNBR0lBZEJER29nQkJBUk9nQUJJQVZCQW5JaEJDQUhRUnhxRUE4RVFDQUVJUVVGSUFBZ0JHb2dCMEVVYWlBSFFSeHFJZ1FRRVRvQUFDQUdJQWRCREdvZ0JCQVJPZ0FESUFWQkJHb2hCUXdDQ3dzTEFuOERRRUc2ZnlFSUlBVkIvUUZMRFFNZ0FDQUZhaUlHSUFkQkZHb2dCMEVjYWlJSkVCRTZBQUFnQmtFQmFpRUVJQWtRRDBFRFJnUkFJQWRCREdvaENFRUNEQUlMSUFWQi9BRkxEUU1nQmlBSFFReHFJQWRCSEdvaUJCQVJPZ0FCSUFWQkFtb2hCU0FFRUE5QkEwY05BQXNnQUNBRmFpRUVJQWRCRkdvaENFRURDeUFFSUFnZ0IwRWNhaEFST2dBQUlBWnFJQUJySVFnTUFRc0Nmd05BUWJwL0lRZ2dCVUg5QVVzTkFpQUFJQVZxSWdZZ0IwRVVhaUFIUVJ4cUlna1FFRG9BQUNBR1FRRnFJUVFnQ1JBUFFRTkdCRUFnQjBFTWFpRUlRUUlNQWdzZ0JVSDhBVXNOQWlBR0lBZEJER29nQjBFY2FpSUVFQkE2QUFFZ0JVRUNhaUVGSUFRUUQwRURSdzBBQ3lBQUlBVnFJUVFnQjBFVWFpRUlRUU1MSUFRZ0NDQUhRUnhxRUJBNkFBQWdCbW9nQUdzaENBc2dDRUdJZjBzTkFRc2dDQ0VFUVFBaEJTQUJRUUJCTkJBRElRbEJBQ0VLQTBBZ0JDQUZSd1JBSUFBZ0JXb2lCaTBBQUNJQlFRdExCRUJCYkNFSURBTUZJQWtnQVVFQ2RHb2lBU0FCS0FJQVFRRnFOZ0lBSUFWQkFXb2hCVUVCSUFZdEFBQjBRUUYxSUFwcUlRb01BZ3NBQ3d0QmJDRUlJQXBGRFFBZ0NtY2lCVUVmY3lJQlFRdExEUUFnQTBFZ0lBVnJOZ0lBUVFGQkFpQUJkQ0FLYXlJRFowRWZjeUlCZENBRFJ3MEFJQUFnQkdvZ0FVRUJhaUlBT2dBQUlBa2dBRUVDZEdvaUFDQUFLQUlBUVFGcU5nSUFJQWtvQWdRaUFFRUNTU0FBUVFGeGNnMEFJQUlnQkVFQmFqWUNBQ0FMUVFGcUlRZ0xJQWRCTUdva0FDQUlDNkFGQVF4L0l3QkJFR3NpRENRQUFuOGdCRUVIVFFSQUlBeENBRGNEQ0NBTVFRaHFJZ1VnQXlBRUVBSWFRV3dnQUNBQklBSWdCVUVJRUF3aUFDQUFJQVJMR3lBQUlBQkJpWDlKR3d3QkN5QUFRUUFnQVNnQ0FFRUJhaUlOUVFGMEVBTWhEMEZVSUFNb0FBQWlCa0VQY1NJQVFRcExEUUFhSUFJZ0FFRUZhallDQUNBRElBUnFJZ0pCQkdzaEJ5QUNRUWRySVFzZ0FFRUdhaUVPUVFRaEFpQUdRUVIySVFWQklDQUFkQ0lJUVFGeUlRbEJBQ0VBUVFFaEJpQURJUVFEUUFKQUlBWkJBWEZGQkVBRFFDQUZRWDl6UVlDQWdJQjRjbWdpQmtFWVNVVUVRQ0FBUVNScUlRQWdCQ0FMVFFSL0lBUkJBMm9GSUFRZ0MydEJBM1FnQW1wQkgzRWhBaUFIQ3lJRUtBQUFJQUoySVFVTUFRc0xJQUlnQmtFZWNTSUtha0VDYWlFQ0lBWkJBWFpCQTJ3Z0FHb2dCU0FLZGtFRGNXb2lBQ0FOVHcwQkFuOGdCQ0FMU3lBQ1FRTjJJQVJxSWdVZ0IwdHhSUVJBSUFKQkIzRWhBaUFGREFFTElBUWdCMnRCQTNRZ0FtcEJIM0VoQWlBSEN5SUVLQUFBSUFKMklRVUxJQVVnQ0VFQmEzRWlCaUFJUVFGMFFRRnJJZ29nQ1dzaUVFa0VmeUFPUVFGckJTQUZJQXB4SWdVZ0VFRUFJQVVnQ0U0YmF5RUdJQTRMSVFVZ0R5QUFRUUYwYWlBR1FRRnJJZ283QVFBZ0FFRUJhaUVBSUFJZ0JXb2hBaUFJUVFFZ0Jtc2dDaUFHUVFCS0d5QUphaUlKU2dSQUlBbEJBa2dOQVVFZ0lBbG5JZ1ZySVE1QkFTQUZRUjl6ZENFSUN5QUFJQTFQRFFBZ0NrRUFSeUVHQW44Z0JDQUxTeUFDUVFOMUlBUnFJZ1VnQjB0eFJRUkFJQUpCQjNFaEFpQUZEQUVMSUFJZ0JDQUhhMEVEZEdwQkgzRWhBaUFIQ3lJRUtBQUFJQUoySVFVTUFRc0xRV3dnQ1VFQlJ3MEFHa0ZRSUFBZ0RVc05BQnBCYkNBQ1FTQktEUUFhSUFFZ0FFRUJhellDQUNBRUlBSkJCMnBCQTNWcUlBTnJDeUFNUVJCcUpBQUw4Z0VCQVg4Z0FrVUVRQ0FBUWdBM0FnQWdBRUVBTmdJUUlBQkNBRGNDQ0VHNGZ3OExJQUFnQVRZQ0RDQUFJQUZCQkdvMkFoQWdBa0VFVHdSQUlBQWdBU0FDYWlJQlFRUnJJZ00yQWdnZ0FDQURLQUFBTmdJQUlBRkJBV3N0QUFBaUFRUkFJQUFnQVdkQkYyczJBZ1FnQWc4TElBQkJBRFlDQkVGL0R3c2dBQ0FCTmdJSUlBQWdBUzBBQUNJRE5nSUFBa0FDUUFKQUlBSkJBbXNPQWdFQUFnc2dBQ0FCTFFBQ1FSQjBJQU55SWdNMkFnQUxJQUFnQVMwQUFVRUlkQ0FEYWpZQ0FBc2dBU0FDYWtFQmF5MEFBQ0lCUlFSQUlBQkJBRFlDQkVGc0R3c2dBQ0FCWnlBQ1FRTjBhMEVKYWpZQ0JDQUNDMFFCQW44Z0FTQUNMd0VBSWdNZ0FTZ0NCR29pQkRZQ0JDQUFJQU5CQW5SQm9CMXFLQUlBSUFFb0FnQkJBQ0FFYTNaeE5nSUFJQUVRRHhvZ0FDQUNRUVJxTmdJRUM1OEJBUVIvUVFNaEFTQUFLQUlFSWdKQklFMEVRQ0FBS0FJSUlnRWdBQ2dDRUU4RVFDQUFJQUpCQjNFMkFnUWdBQ0FCSUFKQkEzWnJJZ0kyQWdnZ0FDQUNLQUFBTmdJQVFRQVBDeUFBS0FJTUlnTWdBVVlFUUVFQlFRSWdBa0VnU1JzUEN5QUFJQUVnQVNBRGF5QUNRUU4ySWdRZ0FTQUVheUFEU1NJQkd5SURheUlFTmdJSUlBQWdBaUFEUVFOMGF6WUNCQ0FBSUFRb0FBQTJBZ0FMSUFFTFNBRUVmeUFBS0FJRUlBQW9BZ0JCQW5ScUlnSXRBQUlnQWk4QkFDRUVJQUVnQVNnQ0JDSUZJQUl0QUFNaUFtbzJBZ1FnQUNBRUlBRW9BZ0FnQlhSQkFDQUNhM1pxTmdJQUMxSUJCSDhnQUNnQ0JDQUFLQUlBUVFKMGFpSUNMUUFDSUFJdkFRQWhCQ0FCSUFJdEFBTWlBaUFCS0FJRWFpSUZOZ0lFSUFBZ0JDQUNRUUowUWFBZGFpZ0NBQ0FCS0FJQVFRQWdCV3QyY1dvMkFnQUxDQUFnQUVHSWYwc0xHZ0FnQUFSQUlBRUVRQ0FDSUFBZ0FSRUNBQThMSUFBUUJnc0xwZ2dDRFg4QmZpTUFRUkJySWdra0FDQUpRUUEyQWd3Z0NVRUFOZ0lJQW44Q1FDQURRZWdKYWlBRElBbEJDR29nQ1VFTWFpQUJJQUlnQTBHQUFXb1FDeUlQUVloL1N3MEFRVlFnQ1NnQ0RDSUVJQUFvQWdBaUFVSC9BWEZCQVdwTERRRWFJQUJCQkdvaEN5QUFJQUZCLzRHQWVIRWdCRUVRZEVHQWdQd0hjWEkyQWdCQmZ5QUVJQVJCQUVnYlFRRnFJUUJCQUNFQklBa29BZ2doQlVFQUlRSURRQ0FBSUFKR0JFQWdCVUVEYXlFQlFRQWhBQU5BQWtCQkFDRUNJQUFnQVU0RVFBTkFJQUFnQlU0TkFpQURJQUFnQTJwQjZBbHFMUUFBUVFKMGFrRkFheUlCSUFFb0FnQWlBVUVCYWpZQ0FDQUJJQU5xSUFBNkFPZ0hJQUJCQVdvaEFBd0FDd0FGQTBBZ0FrRUVSa1VFUUNBRElBTWdBQ0FDYWlJSGFrSG9DV290QUFCQkFuUnFRVUJySWdnZ0NDZ0NBQ0lJUVFGcU5nSUFJQU1nQ0dvZ0J6b0E2QWNnQWtFQmFpRUNEQUVMQ3lBQVFRUnFJUUFNQWdzQUN3c2dCRUVCYWlFT0lBTW9BZ0FoQjBFQUlRQkJBU0VJQTBBZ0NDQU9SZzBESUE0Z0NHc2hCQ0FESUFoQkFuUnFLQUlBSVFVQ1FBSkFBa0FDUUFKQUFrQkJBU0FJZEVFQmRTSU5RUUZyRGdnQUFRUUNCQVFFQXdRTFFRQWhBaUFGUVFBZ0JVRUFTaHNoQmlBQUlRRURRQ0FDSUFaR0RRVWdBeUFDSUFkcWFpMEE2QWNoQ2lBTElBRkJBWFJxSWd3Z0JEb0FBU0FNSUFvNkFBQWdBa0VCYWlFQ0lBRkJBV29oQVF3QUN3QUxRUUFoQWlBRlFRQWdCVUVBU2hzaENpQUFJUUVEUUNBQ0lBcEdEUVFnQ3lBQlFRRjBhaUlHSUFNZ0FpQUhhbW90QU9nSElndzZBQUlnQmlBRU9nQUJJQVlnRERvQUFDQUdJQVE2QUFNZ0FrRUJhaUVDSUFGQkFtb2hBUXdBQ3dBTFFRQWhBaUFGUVFBZ0JVRUFTaHNoQmlBRVFRaDBRWUQrQTNFaEJDQUFJUUVEUUNBQ0lBWkdEUU1nQ3lBQlFRRjBhaUFFSUFNZ0FpQUhhbW90QU9nSGNxMUNnWUNFZ0pDQXdBQitOd0FBSUFKQkFXb2hBaUFCUVFScUlRRU1BQXNBQzBFQUlRSWdCVUVBSUFWQkFFb2JJUVlnQkVFSWRFR0EvZ054SVFRZ0FDRUJBMEFnQWlBR1JnMENJQXNnQVVFQmRHb2lDaUFFSUFNZ0FpQUhhbW90QU9nSGNxMUNnWUNFZ0pDQXdBQitJaEUzQUFnZ0NpQVJOd0FBSUFKQkFXb2hBaUFCUVFocUlRRU1BQXNBQzBFQUlRRWdCVUVBSUFWQkFFb2JJUW9nQkVFSWRFR0EvZ054SVF3Z0FDRUVBMEFnQVNBS1JnMEJJQXNnQkVFQmRHb2hFQ0FNSUFNZ0FTQUhhbW90QU9nSGNxMUNnWUNFZ0pDQXdBQitJUkZCQUNFQ0EwQWdBaUFOVGtVRVFDQVFJQUpCQVhScUlnWWdFVGNBR0NBR0lCRTNBQkFnQmlBUk53QUlJQVlnRVRjQUFDQUNRUkJxSVFJTUFRc0xJQUZCQVdvaEFTQUVJQTFxSVFRTUFBc0FDeUFJUVFGcUlRZ2dCU0FIYWlFSElBVWdEV3dnQUdvaEFBd0FDd0FGSUFNZ0FrRUNkR29pQjBGQWF5QUJOZ0lBSUFKQkFXb2hBaUFIS0FJQUlBRnFJUUVNQVFzQUN3QUxJQThMSUFsQkVHb2tBQXZ5QWdFR2Z5TUFRU0JySWdVa0FDQUVLQUlBSVFZZ0JVRU1haUFDSUFNUURTSURRWWgvVFFSQUlBUkJCR29oQWlBQUlBRnFJZ2xCQTJzaEJFRUFJQVpCRUhaclFSOXhJUU1EUUNBRlFReHFFQThnQUNBRVQzSkZCRUFnQWlBRktBSU1JZ1lnQlNnQ0VDSUhkQ0FEZGtFQmRHb2lDQzBBQVNFS0lBQWdDQzBBQURvQUFDQUNJQVlnQnlBS2FpSUdkQ0FEZGtFQmRHb2lCeTBBQUNFSUlBVWdCaUFITFFBQmFqWUNFQ0FBSUFnNkFBRWdBRUVDYWlFQURBRUxDd05BSUFWQkRHb1FEeUVISUFVb0Fnd2hCaUFGS0FJUUlRUWdBQ0FKVHlBSGNrVUVRQ0FDSUFZZ0JIUWdBM1pCQVhScUlnWXRBQUFoQnlBRklBUWdCaTBBQVdvMkFoQWdBQ0FIT2dBQUlBQkJBV29oQUF3QkN3c0RRQ0FBSUFsUFJRUkFJQUlnQmlBRWRDQURka0VCZEdvaUJ5MEFBU0VJSUFBZ0J5MEFBRG9BQUNBQVFRRnFJUUFnQkNBSWFpRUVEQUVMQzBGc1FXd2dBU0FGS0FJVUlBVW9BaGhIR3lBRVFTQkhHeUVEQ3lBRlFTQnFKQUFnQXd2UEZBRWpmeU1BUWRBQWF5SUZKQUJCYkNFSkFrQWdBMEVLU1EwQUFrQWdBeUFDTHdBRUlnY2dBaThBQUNJSUlBSXZBQUlpRFdwcVFRWnFJZ3hKRFFBZ0JDOEJBaUVHSUFWQlBHb2dBa0VHYWlJQ0lBZ1FEU0lKUVloL1N3MEJJQVZCS0dvZ0FpQUlhaUlDSUEwUURTSUpRWWgvU3cwQklBVkJGR29nQWlBTmFpSUNJQWNRRFNJSlFZaC9TdzBCSUFVZ0FpQUhhaUFESUF4ckVBMGlDVUdJZjBzTkFTQUVRUVJxSVFvZ0FDQUJhaUlmUVFOcklTQkJBQ0FHYTBFZmNTRUxJQVVvQWdnaEVTQUZLQUljSVJJZ0JTZ0NNQ0VUSUFVb0FrUWhGQ0FGS0FJRUlRa2dCU2dDR0NFTklBVW9BaXdoRENBRktBSkFJUVlnQlNnQ0VDRWhJQVVvQWlRaElpQUZLQUk0SVNNZ0JTZ0NUQ0VrSUFVb0FnQWhGU0FGS0FJVUlSWWdCU2dDS0NFWElBVW9BandoR0VFQklROGdBQ0FCUVFOcVFRSjJJZ1JxSWdNZ0JHb2lBaUFFYWlJWklRUWdBaUVJSUFNaEJ3TkFJQTlCQVhGRklBUWdJRTl5UlFSQUlBQWdDaUFZSUFaMElBdDJRUUowYWlJT0x3RUFPd0FBSUE0dEFBSWhHaUFPTFFBRElSQWdCeUFLSUJjZ0RIUWdDM1pCQW5ScUlnNHZBUUE3QUFBZ0RpMEFBaUViSUE0dEFBTWhEeUFJSUFvZ0ZpQU5kQ0FMZGtFQ2RHb2lEaThCQURzQUFDQU9MUUFDSVJ3Z0RpMEFBeUVkSUFRZ0NpQVZJQWwwSUF0MlFRSjBhaUlPTHdFQU93QUFJQTR0QUFJaEhpQU9MUUFESVE0Z0FDQVFhaUlsSUFvZ0dDQUdJQnBxSWdaMElBdDJRUUowYWlJUUx3RUFPd0FBSUJBdEFBSWdFQzBBQXlFbUlBY2dEMm9pSnlBS0lCY2dEQ0FiYWlJYWRDQUxka0VDZEdvaUJ5OEJBRHNBQUNBSExRQUNJUXdnQnkwQUF5RVFJQWdnSFdvaUd5QUtJQllnRFNBY2FpSVBkQ0FMZGtFQ2RHb2lDQzhCQURzQUFDQUlMUUFDSVEwZ0NDMEFBeUVjSUFRZ0Rtb2lIU0FLSUJVZ0NTQWVhaUlPZENBTGRrRUNkR29pQ1M4QkFEc0FBQ0FHYWlFQVFRTWhCd0ovSUJRZ0pFa0VRQ0FBSVFaQkF3d0JDeUFBUVFkeElRWWdGQ0FBUVFOMmF5SVVLQUFBSVJoQkFBc2dDUzBBQXlFZUlBa3RBQUloQ0NBTUlCcHFJUUFnRXlBalNRUi9JQUFGSUJNZ0FFRURkbXNpRXlnQUFDRVhRUUFoQnlBQVFRZHhDeUVNSUEwZ0Qyb2hBQ0FIY2lFSlFRTWhEd0ovSUJJZ0lra0VRQ0FBSVExQkF3d0JDeUFBUVFkeElRMGdFaUFBUVFOMmF5SVNLQUFBSVJaQkFBc2dDQ0FPYWlFQUlBbHlJQkVnSVVrRWZ5QUFCU0FSSUFCQkEzWnJJaEVvQUFBaEZVRUFJUThnQUVFSGNRc2hDU0FsSUNacUlRQWdFQ0FuYWlFSElCc2dIR29oQ0NBZElCNXFJUVFnRDNKRklROE1BUXNMSUFVZ0REWUNMQ0FGSUFZMkFrQWdCU0FOTmdJWUlBVWdDVFlDQkNBRklCUTJBa1FnQlNBVE5nSXdJQVVnRWpZQ0hDQUZJQkUyQWdnZ0JTQVlOZ0k4SUFVZ0Z6WUNLQ0FGSUJZMkFoUWdCU0FWTmdJQUlBSWdCMGtnQUNBRFMzSU5BRUZzSVFrZ0NDQVpTdzBCSUFOQkEyc2hDUU5BSUFWQlBHb1FEMFVnQUNBSlNYRUVRQ0FBSUFvZ0JTZ0NQQ0lOSUFVb0FrQWlESFFnQzNaQkFuUnFJZzR2QVFBN0FBQWdBQ0FPTFFBRGFpSUdJQW9nRFNBTUlBNHRBQUpxSWdCMElBdDJRUUowYWlJTUx3RUFPd0FBSUFVZ0FDQU1MUUFDYWpZQ1FDQUdJQXd0QUFOcUlRQU1BUVVnQTBFQ2F5RU1BMEFnQlVFOGFoQVBJUVlnQlNnQ1BDRU5JQVVvQWtBaENTQUFJQXhMSUFaeVJRUkFJQUFnQ2lBTklBbDBJQXQyUVFKMGFpSUdMd0VBT3dBQUlBVWdDU0FHTFFBQ2FqWUNRQ0FBSUFZdEFBTnFJUUFNQVFzTEEwQWdBQ0FNUzBVRVFDQUFJQW9nRFNBSmRDQUxka0VDZEdvaUJpOEJBRHNBQUNBQUlBWXRBQU5xSVFBZ0NTQUdMUUFDYWlFSkRBRUxDd0pBSUFBZ0EwOE5BQ0FBSUFvZ0RTQUpkQ0FMZGlJQVFRSjBhaUlETFFBQU9nQUFJQU10QUFOQkFVWUVRQ0FKSUFNdEFBSnFJUWtNQVFzZ0NVRWZTdzBBUVNBZ0NTQUtJQUJCQW5ScUxRQUNhaUlBSUFCQklFOGJJUWtMSUFKQkEyc2hEQU5BSUFWQktHb1FEMFVnQnlBTVNYRUVRQ0FISUFvZ0JTZ0NLQ0lHSUFVb0Fpd2lBSFFnQzNaQkFuUnFJZzB2QVFBN0FBQWdCeUFOTFFBRGFpSURJQW9nQmlBQUlBMHRBQUpxSWdCMElBdDJRUUowYWlJR0x3RUFPd0FBSUFVZ0FDQUdMUUFDYWpZQ0xDQURJQVl0QUFOcUlRY01BUVVnQWtFQ2F5RUdBMEFnQlVFb2FoQVBJUU1nQlNnQ0tDRU1JQVVvQWl3aEFDQUdJQWRKSUFOeVJRUkFJQWNnQ2lBTUlBQjBJQXQyUVFKMGFpSURMd0VBT3dBQUlBVWdBQ0FETFFBQ2FqWUNMQ0FISUFNdEFBTnFJUWNNQVFzTEEwQWdCaUFIU1VVRVFDQUhJQW9nRENBQWRDQUxka0VDZEdvaUF5OEJBRHNBQUNBSElBTXRBQU5xSVFjZ0FDQURMUUFDYWlFQURBRUxDd0pBSUFJZ0IwME5BQ0FISUFvZ0RDQUFkQ0FMZGlJQ1FRSjBhaUlETFFBQU9nQUFJQU10QUFOQkFVWUVRQ0FBSUFNdEFBSnFJUUFNQVFzZ0FFRWZTdzBBUVNBZ0FDQUtJQUpCQW5ScUxRQUNhaUlBSUFCQklFOGJJUUFMSUJsQkEyc2hEQU5BSUFWQkZHb1FEMFVnQ0NBTVNYRUVRQ0FJSUFvZ0JTZ0NGQ0lHSUFVb0FoZ2lBblFnQzNaQkFuUnFJZzB2QVFBN0FBQWdDQ0FOTFFBRGFpSURJQW9nQmlBQ0lBMHRBQUpxSWdKMElBdDJRUUowYWlJR0x3RUFPd0FBSUFVZ0FpQUdMUUFDYWpZQ0dDQURJQVl0QUFOcUlRZ01BUVVnR1VFQ2F5RURBMEFnQlVFVWFoQVBJUUlnQlNnQ0ZDRUdJQVVvQWhnaEJ5QURJQWhKSUFKeVJRUkFJQWdnQ2lBR0lBZDBJQXQyUVFKMGFpSUNMd0VBT3dBQUlBVWdCeUFDTFFBQ2FqWUNHQ0FJSUFJdEFBTnFJUWdNQVFzTEEwQWdBeUFJU1VVRVFDQUlJQW9nQmlBSGRDQUxka0VDZEdvaUFpOEJBRHNBQUNBSUlBSXRBQU5xSVFnZ0J5QUNMUUFDYWlFSERBRUxDd0pBSUFnZ0dVOE5BQ0FJSUFvZ0JpQUhkQ0FMZGlJQ1FRSjBhaUlETFFBQU9nQUFJQU10QUFOQkFVWUVRQ0FISUFNdEFBSnFJUWNNQVFzZ0IwRWZTdzBBUVNBZ0J5QUtJQUpCQW5ScUxRQUNhaUlDSUFKQklFOGJJUWNMQTBBZ0JSQVBSU0FFSUNCSmNRUkFJQVFnQ2lBRktBSUFJZ1lnQlNnQ0JDSUNkQ0FMZGtFQ2RHb2lEQzhCQURzQUFDQUVJQXd0QUFOcUlnTWdDaUFHSUFJZ0RDMEFBbW9pQW5RZ0MzWkJBblJxSWdRdkFRQTdBQUFnQlNBQ0lBUXRBQUpxTmdJRUlBTWdCQzBBQTJvaEJBd0JCU0FmUVFKcklRTURRQ0FGRUE4aEFpQUZLQUlBSVFZZ0JTZ0NCQ0VJSUFNZ0JFa2dBbkpGQkVBZ0JDQUtJQVlnQ0hRZ0MzWkJBblJxSWdJdkFRQTdBQUFnQlNBSUlBSXRBQUpxTmdJRUlBUWdBaTBBQTJvaEJBd0JDd3NEUUNBRElBUkpSUVJBSUFRZ0NpQUdJQWgwSUF0MlFRSjBhaUlDTHdFQU93QUFJQVFnQWkwQUEyb2hCQ0FJSUFJdEFBSnFJUWdNQVFzTEFrQWdCQ0FmVHcwQUlBUWdDaUFHSUFoMElBdDJJZ0pCQW5ScUlnTXRBQUE2QUFBZ0F5MEFBMEVCUmdSQUlBZ2dBeTBBQW1vaENBd0JDeUFJUVI5TERRQkJJQ0FJSUFvZ0FrRUNkR290QUFKcUlnSWdBa0VnVHhzaENBdEJiRUZzUVd4QmJFRnNRV3hCYkVGc0lBRWdDRUVnUnhzZ0JTZ0NDQ0FGS0FJTVJ4c2dCMEVnUnhzZ0JTZ0NIQ0FGS0FJZ1J4c2dBRUVnUnhzZ0JTZ0NNQ0FGS0FJMFJ4c2dDVUVnUnhzZ0JTZ0NSQ0FGS0FKSVJ4c2hDUXdKQ3dBTEFBc0FDd0FMQUFzQUN3QUxBQXRCYkNFSkN5QUZRZEFBYWlRQUlBa0w3QkFCSG44akFFSFFBR3NpQlNRQVFXd2hDUUpBSUFOQkNra05BQUpBSUFNZ0FpOEFCQ0lHSUFJdkFBQWlCeUFDTHdBQ0lnaHFha0VHYWlJT1NRMEFJQVF2QVFJaER5QUZRVHhxSUFKQkJtb2lBaUFIRUEwaUNVR0lmMHNOQVNBRlFTaHFJQUlnQjJvaUFpQUlFQTBpQ1VHSWYwc05BU0FGUVJScUlBSWdDR29pQWlBR0VBMGlDVUdJZjBzTkFTQUZJQUlnQm1vZ0F5QU9heEFOSWdsQmlIOUxEUUVnQkVFRWFpRUtJQUFnQVdvaUhFRURheUVkUVFBZ0QydEJIM0VoQ3lBRktBSUlJUkVnQlNnQ0hDRVNJQVVvQWpBaEV5QUZLQUpFSVJRZ0JTZ0NCQ0VKSUFVb0FoZ2hCaUFGS0FJc0lRY2dCU2dDUUNFSUlBVW9BaEFoSGlBRktBSWtJUjhnQlNnQ09DRWdJQVVvQWt3aElTQUZLQUlBSVJVZ0JTZ0NGQ0VXSUFVb0FpZ2hGeUFGS0FJOElSaEJBU0VOSUFBZ0FVRURha0VDZGlJQ2FpSU9JQUpxSWc4Z0Ftb2lHU0VFSUE4aEFpQU9JUU1EUUNBTlJTQUVJQjFQY2tVRVFDQUtJQmdnQ0hRZ0MzWkJBWFJxSWd3dEFBRWhEU0FBSUF3dEFBQTZBQUFnQ2lBWElBZDBJQXQyUVFGMGFpSU1MUUFCSVJBZ0F5QU1MUUFBT2dBQUlBb2dGaUFHZENBTGRrRUJkR29pREMwQUFTRWFJQUlnREMwQUFEb0FBQ0FLSUJVZ0NYUWdDM1pCQVhScUlnd3RBQUVoR3lBRUlBd3RBQUE2QUFBZ0NpQVlJQWdnRFdvaUNIUWdDM1pCQVhScUlnd3RBQUVoRFNBQUlBd3RBQUE2QUFFZ0NpQVhJQWNnRUdvaUIzUWdDM1pCQVhScUlnd3RBQUVoRUNBRElBd3RBQUE2QUFFZ0NpQVdJQVlnR21vaURIUWdDM1pCQVhScUlnWXRBQUVoR2lBQ0lBWXRBQUE2QUFFZ0NpQVZJQWtnRzJvaUczUWdDM1pCQVhScUlna3RBQUVoSWlBRUlBa3RBQUE2QUFFZ0NDQU5haUVHUVFNaENRSi9JQlFnSVVrRVFFRURJUTBnQmd3QkN5QVVJQVpCQTNackloUW9BQUFoR0VFQUlRMGdCa0VIY1FzaENDQUhJQkJxSVFZZ0V5QWdTUVIvSUFZRklCTWdCa0VEZG1zaUV5Z0FBQ0VYUVFBaENTQUdRUWR4Q3lFSElBd2dHbW9oRENBSklBMXlJUkJCQXlFTkFuOGdFaUFmU1FSQUlBd2hCa0VEREFFTElBeEJCM0VoQmlBU0lBeEJBM1pySWhJb0FBQWhGa0VBQ3lBYklDSnFJUXdnRUhJaEVDQVJJQjVKQkg4Z0RBVWdFU0FNUVFOMmF5SVJLQUFBSVJWQkFDRU5JQXhCQjNFTElRa2dCRUVDYWlFRUlBSkJBbW9oQWlBRFFRSnFJUU1nQUVFQ2FpRUFJQTBnRUhKRklRME1BUXNMSUFVZ0J6WUNMQ0FGSUFnMkFrQWdCU0FHTmdJWUlBVWdDVFlDQkNBRklCUTJBa1FnQlNBVE5nSXdJQVVnRWpZQ0hDQUZJQkUyQWdnZ0JTQVlOZ0k4SUFVZ0Z6WUNLQ0FGSUJZMkFoUWdCU0FWTmdJQUlBQWdEa3NnQXlBUFMzSU5BRUZzSVFrZ0FpQVpTdzBCSUE1QkEyc2hDUU5BSUFWQlBHb1FEeUFBSUFsUGNrVUVRQ0FLSUFVb0Fqd2lCaUFGS0FKQUlnZDBJQXQyUVFGMGFpSUlMUUFCSVF3Z0FDQUlMUUFBT2dBQUlBb2dCaUFISUF4cUlnWjBJQXQyUVFGMGFpSUhMUUFBSVFnZ0JTQUdJQWN0QUFGcU5nSkFJQUFnQ0RvQUFTQUFRUUpxSVFBTUFRc0xBMEFnQlVFOGFoQVBJUWNnQlNnQ1BDRUdJQVVvQWtBaENTQUFJQTVQSUFkeVJRUkFJQW9nQmlBSmRDQUxka0VCZEdvaUJpMEFBQ0VISUFVZ0NTQUdMUUFCYWpZQ1FDQUFJQWM2QUFBZ0FFRUJhaUVBREFFTEN3TkFJQUFnRGs5RkJFQWdDaUFHSUFsMElBdDJRUUYwYWlJSExRQUJJQUFnQnkwQUFEb0FBQ0FBUVFGcUlRQWdDV29oQ1F3QkN3c2dEMEVEYXlFQUEwQWdCVUVvYWhBUElBQWdBMDF5UlFSQUlBb2dCU2dDS0NJR0lBVW9BaXdpQjNRZ0MzWkJBWFJxSWdndEFBRWhEaUFESUFndEFBQTZBQUFnQ2lBR0lBY2dEbW9pQm5RZ0MzWkJBWFJxSWdjdEFBQWhDQ0FGSUFZZ0J5MEFBV28yQWl3Z0F5QUlPZ0FCSUFOQkFtb2hBd3dCQ3dzRFFDQUZRU2hxRUE4aEJ5QUZLQUlvSVFZZ0JTZ0NMQ0VBSUFNZ0QwOGdCM0pGQkVBZ0NpQUdJQUIwSUF0MlFRRjBhaUlHTFFBQUlRY2dCU0FBSUFZdEFBRnFOZ0lzSUFNZ0J6b0FBQ0FEUVFGcUlRTU1BUXNMQTBBZ0F5QVBUMFVFUUNBS0lBWWdBSFFnQzNaQkFYUnFJZ2N0QUFFaENDQURJQWN0QUFBNkFBQWdBMEVCYWlFRElBQWdDR29oQUF3QkN3c2dHVUVEYXlFREEwQWdCVUVVYWhBUElBSWdBMDl5UlFSQUlBb2dCU2dDRkNJR0lBVW9BaGdpQjNRZ0MzWkJBWFJxSWdndEFBRWhEaUFDSUFndEFBQTZBQUFnQ2lBR0lBY2dEbW9pQm5RZ0MzWkJBWFJxSWdjdEFBQWhDQ0FGSUFZZ0J5MEFBV28yQWhnZ0FpQUlPZ0FCSUFKQkFtb2hBZ3dCQ3dzRFFDQUZRUlJxRUE4aEJ5QUZLQUlVSVFZZ0JTZ0NHQ0VESUFJZ0dVOGdCM0pGQkVBZ0NpQUdJQU4wSUF0MlFRRjBhaUlHTFFBQUlRY2dCU0FESUFZdEFBRnFOZ0lZSUFJZ0J6b0FBQ0FDUVFGcUlRSU1BUXNMQTBBZ0FpQVpUMFVFUUNBS0lBWWdBM1FnQzNaQkFYUnFJZ2N0QUFFaENDQUNJQWN0QUFBNkFBQWdBa0VCYWlFQ0lBTWdDR29oQXd3QkN3c0RRQ0FGRUE4Z0JDQWRUM0pGQkVBZ0NpQUZLQUlBSWdJZ0JTZ0NCQ0lHZENBTGRrRUJkR29pQnkwQUFTRUlJQVFnQnkwQUFEb0FBQ0FLSUFJZ0JpQUlhaUlDZENBTGRrRUJkR29pQmkwQUFDRUhJQVVnQWlBR0xRQUJhallDQkNBRUlBYzZBQUVnQkVFQ2FpRUVEQUVMQ3dOQUlBVVFEeUVISUFVb0FnQWhCaUFGS0FJRUlRSWdCQ0FjVHlBSGNrVUVRQ0FLSUFZZ0FuUWdDM1pCQVhScUlnWXRBQUFoQnlBRklBSWdCaTBBQVdvMkFnUWdCQ0FIT2dBQUlBUkJBV29oQkF3QkN3c0RRQ0FFSUJ4UFJRUkFJQW9nQmlBQ2RDQUxka0VCZEdvaUJ5MEFBU0VJSUFRZ0J5MEFBRG9BQUNBRVFRRnFJUVFnQWlBSWFpRUNEQUVMQzBGc1FXeEJiRUZzUVd4QmJFRnNRV3dnQVNBQ1FTQkhHeUFGS0FJSUlBVW9BZ3hIR3lBRFFTQkhHeUFGS0FJY0lBVW9BaUJIR3lBQVFTQkhHeUFGS0FJd0lBVW9BalJIR3lBSlFTQkhHeUFGS0FKRUlBVW9Ba2hIR3lFSkRBRUxRV3doQ1FzZ0JVSFFBR29rQUNBSkMxZ0JBMzhDUUNBQUtBS1E2d0VpQVVVTkFDQUJLQUlBSUFGQnROVUJhaWdDQUNJQ0lBRkJ1TlVCYWlnQ0FDSURFQk1nQWdSQUlBTWdBU0FDRVFJQURBRUxJQUVRQmdzZ0FFRUFOZ0tnNndFZ0FFSUFOd09RNndFTDZRTUNCSDhDZmlBQVFRQkJLQkFESVFRZ0FrRUJRUVVnQXhzaUFFa0VRQ0FBRHdzZ0FVVUVRRUYvRHd0QkFTRUdBa0FDUUNBRFFRRkdEUUFnQXlFR0lBRW9BQUFpQlVHbzZyNXBSZzBBUVhZaEF5QUZRWEJ4UWREVXRNSUJSdzBCUVFnaEF5QUNRUWhKRFFFZ0FUVUFCQ0VJSUFSQkFUWUNGQ0FFSUFnM0F3QkJBQThMSUFFZ0FpQUdFQm9pQXlBQ1N3MEFJQVFnQXpZQ0dFRnlJUU1nQUNBQmFpSUZRUUZyTFFBQUlnSkJDSEVOQUNBQ1FTQnhJZ1pGQkVCQmNDRURJQVV0QUFBaUJVR25BVXNOQVNBRlFRZHhyVUlCSUFWQkEzWkJDbXF0aGlJSVFnT0lmaUFJZkNFSklBQkJBV29oQUFzZ0FrRUdkaUVGSUFKQkFuWkJBQ0VEQWtBQ1FBSkFBa0FnQWtFRGNVRUJhdzREQUFFQ0F3c2dBQ0FCYWkwQUFDRURJQUJCQVdvaEFBd0NDeUFBSUFGcUx3QUFJUU1nQUVFQ2FpRUFEQUVMSUFBZ0FXb29BQUFoQXlBQVFRUnFJUUFMUVFGeElRSUNmZ0pBQWtBQ1FBSkFJQVZCQVdzT0F3RUNBd0FMUW44Z0JrVU5BeG9nQUNBQmFqRUFBQXdEQ3lBQUlBRnFNd0FBUW9BQ2ZBd0NDeUFBSUFGcU5RQUFEQUVMSUFBZ0FXb3BBQUFMSVFnZ0JDQUNOZ0lnSUFRZ0F6WUNIQ0FFSUFnM0F3QkJBQ0VESUFSQkFEWUNGQ0FFSUFnZ0NTQUdHeUlJTndNSUlBUkNnSUFJSUFnZ0NFS0FnQWhhR3o0Q0VBc2dBd3RmQVFGL1FiaC9JUU1nQVVFQlFRVWdBaHNpQWs4RWZ5QUFJQUpxUVFGckxRQUFJZ0JCQTNGQkFuUkJvQjVxS0FJQUlBSnFJQUJCQkhaQkRIRkJzQjVxS0FJQWFpQUFRU0J4SWdGRmFpQUJRUVYySUFCQndBQkpjV29GUWJoL0N3c01BQ0FBSUFFZ0FrRUFFQmtMbHdNQ0JYOENmaU1BUVVCcUlnUWtBQUpBQTBBZ0FVRUZUd1JBQWtBZ0FDZ0FBRUZ3Y1VIUTFMVENBVVlFUUVKK0lRY2dBVUVJU1EwRUlBQW9BQVFpQWtGM1N3MEVJQUpCQ0dvaUF5QUJTdzBFSUFKQmdYOUpEUUVNQkFzZ0JFRVlhaUFBSUFFUUd5RUNRbjRnQkNrREdFSUFJQVFvQWl4QkFVY2JJQUliSWdkQ2ZWWU5BeUFISUFoOElnZ2dCMVJDZmlFSERRTUNRQUpBSUFGQkNFa05BQ0FBS0FBQVFYQnhRZERVdE1JQlJ3MEFJQUFvQUFRaUFrRjNTdzBGUWJoL0lBSkJDR29pQWlBQklBSkpHeUVEREFFTElBUkJHR29nQUNBQkVCc2lBa0dJZjBzRVFDQUNJUU1NQVF0QnVIOGhBeUFDRFFBZ0FTQUVLQUl3SWdKcklRVWdBQ0FDYWlFR0EwQWdCaUFGSUFSQkRHb1FIU0lEUVloL1N3MEJJQU5CQTJvaUFpQUZTd1JBUWJoL0lRTU1BZ3NnQlNBQ2F5RUZJQUlnQm1vaEJpQUVLQUlRUlEwQUN5QUVLQUk0Qkg5QnVIOGhBeUFGUVFSSkRRRWdCa0VFYWdVZ0Jnc2dBR3NoQXdzZ0EwR0lmMHNOQXdzZ0FTQURheUVCSUFBZ0Eyb2hBQXdCQ3d0Q2ZpQUlJQUViSVFjTElBUkJRR3NrQUNBSEMyUUJBWDlCdUg4aEF3SkFJQUZCQTBrTkFDQUFMUUFDSVFFZ0FpQUFMd0FBSWdCQkFYRTJBZ1FnQWlBQVFRRjJRUU54SWdNMkFnQWdBaUFBSUFGQkVIUnlRUU4ySWdBMkFnZ0NRQUpBSUFOQkFXc09Bd0lCQUFFTFFXd1BDeUFBSVFNTElBTUxSQUVDZnlBQklBSW9BZ1FpQXlBQktBSUVhaUlFTmdJRUlBQWdBMEVDZEVHZ0hXb29BZ0FnQVNnQ0FFRUFJQVJyZG5FMkFnQWdBUkFQR2lBQUlBSkJDR28yQWdRTHpnRUJCbjlCdW44aENnSkFJQUlvQWdRaUNDQUNLQUlBSWdscUlnMGdBU0FBYTBzTkFFRnNJUW9nQ1NBRUlBTW9BZ0FpQzJ0TERRQWdBQ0FKYWlJRUlBSW9BZ2dpREdzaEFpQUFJQUZCSUdzaUFDQUxJQWxCQUJBZ0lBTWdDU0FMYWpZQ0FBSkFBa0FnQkNBRmF5QU1Ud1JBSUFJaEJRd0JDeUFNSUFRZ0JtdExEUUlnQnlBSElBSWdCV3NpQW1vaUFTQUlhazhFUUNBRUlBRWdDQkFLR2d3Q0N5QUNJQWhxSVFnZ0JDQUJRUUFnQW1zUUNpQUNheUVFQ3lBRUlBQWdCU0FJUVFFUUlBc2dEU0VLQ3lBS0M4Y0VBUUovSUFBZ0Eyb2hCZ0pBSUFOQkIwd0VRQU5BSUFBZ0JrOE5BaUFBSUFJdEFBQTZBQUFnQUVFQmFpRUFJQUpCQVdvaEFnd0FDd0FMSUFSQkFVWUVRQUpBSUFBZ0Ftc2lCVUVIVFFSQUlBQWdBaTBBQURvQUFDQUFJQUl0QUFFNkFBRWdBQ0FDTFFBQ09nQUNJQUFnQWkwQUF6b0FBeUFBSUFJZ0JVRUNkQ0lGUWNBZWFpZ0NBR29pQWlnQUFEWUFCQ0FDSUFWQjRCNXFLQUlBYXlFQ0RBRUxJQUFnQWlrQUFEY0FBQXNnQWtFSWFpRUNJQUJCQ0dvaEFBc2dBU0FHVHdSQUlBQWdBMm9oQVNBRVFRRkhJQUFnQW10QkQwcHlSUVJBQTBBZ0FDQUNLUUFBTndBQUlBSkJDR29oQWlBQVFRaHFJZ0FnQVVrTkFBd0RDd0FMSUFBZ0Fpa0FBRGNBQUNBQUlBSXBBQWczQUFnZ0EwRVJTUTBCSUFCQkVHb2hBQU5BSUFBZ0Fpa0FFRGNBQUNBQUlBSXBBQmczQUFnZ0FDQUNLUUFnTndBUUlBQWdBaWtBS0RjQUdDQUNRU0JxSVFJZ0FFRWdhaUlBSUFGSkRRQUxEQUVMQWtBZ0FDQUJTd1JBSUFBaEFRd0JDeUFCSUFCcklRVUNRQ0FFUVFGSElBQWdBbXRCRDBweVJRUkFJQUloQXdOQUlBQWdBeWtBQURjQUFDQURRUWhxSVFNZ0FFRUlhaUlBSUFGSkRRQUxEQUVMSUFBZ0Fpa0FBRGNBQUNBQUlBSXBBQWczQUFnZ0JVRVJTQTBBSUFCQkVHb2hBQ0FDSVFNRFFDQUFJQU1wQUJBM0FBQWdBQ0FES1FBWU53QUlJQUFnQXlrQUlEY0FFQ0FBSUFNcEFDZzNBQmdnQTBFZ2FpRURJQUJCSUdvaUFDQUJTUTBBQ3dzZ0FpQUZhaUVDQ3dOQUlBRWdCazhOQVNBQklBSXRBQUE2QUFBZ0FVRUJhaUVCSUFKQkFXb2hBZ3dBQ3dBTEM2NEhBZ1YvQVg0akFFR0FBV3NpRVNRQUlCRWdBellDZkVGL0lROENRQUpBQWtBQ1FBSkFJQUlPQkFFQUF3SUVDeUFHUlFSQVFiaC9JUThNQkF0QmJDRVBJQVV0QUFBaUFpQURTdzBESUFnZ0FrRUNkQ0lDYWlnQ0FDRURJQUlnQjJvb0FnQWhBaUFBUVFBNkFBc2dBRUlBTndJQUlBQWdBallDRENBQUlBTTZBQW9nQUVFQU93RUlJQUVnQURZQ0FFRUJJUThNQXdzZ0FTQUpOZ0lBUVFBaER3d0NDeUFLUlFSQVFXd2hEd3dDQzBFQUlROGdDMFVnREVFWlNISU5BVUVJSUFSMFFRaHFJUUJCQUNFREEwQWdBQ0FEVFEwQ0lBTkJRR3NoQXd3QUN3QUxRV3doRHlBUklCRkIvQUJxSUJGQitBQnFJQVVnQmhBTUlnTkJpSDlMRFFBZ0VTZ0NlQ0lDSUFSTERRQWdFU2dDZkVFQmFpRUpJQUJCQ0dvaEMwR0FnQUlnQW5SQkVIVWhCVUVCSVJCQkFTQUNkQ0lQUVFGcklnb2hFZ05BSUFrZ0RrY0VRQUpBSUJFZ0RrRUJkQ0lFYWk4QkFDSU1RZi8vQTBZRVFDQUxJQkpCQTNScUlBNDJBZ1FnRWtFQmF5RVNRUUVoREF3QkN5QVFRUUFnQlNBTXdVb2JJUkFMSUFRZ0RXb2dERHNCQUNBT1FRRnFJUTRNQVFzTElBQWdBallDQkNBQUlCQTJBZ0FDUUNBS0lCSkdCRUFnRFVIcUFHb2hCa0VBSVJCQkFDRU1BMEFnQ1NBUVJnUkFJQTlCQTNZZ0QwRUJkbXBCQTJvaUJVRUJkQ0VFUVFBaERFRUFJUklEUUVFQUlRNGdEeUFTVFEwRUEwQWdEa0VDUndSQUlBc2dCU0FPYkNBTWFpQUtjVUVEZEdvZ0JpQU9JQkpxYWkwQUFEWUNCQ0FPUVFGcUlRNE1BUXNMSUJKQkFtb2hFaUFFSUF4cUlBcHhJUXdNQUFzQUJTQVJJQkJCQVhScUxnRUFJUVVnQmlBTWFpSUVJQk0zQUFCQkNDRU9BMEFnQlNBT1NnUkFJQVFnRG1vZ0V6Y0FBQ0FPUVFocUlRNE1BUXNMSUJOQ2dZS0VpSkNnd0lBQmZDRVRJQkJCQVdvaEVDQUZJQXhxSVF3TUFRc0FDd0FMSUE5QkEzWWdEMEVCZG1wQkEyb2hCVUVBSVJCQkFDRU9BMEFnQ1NBUVJnMEJRUUFoRENBUklCQkJBWFJxTGdFQUlnUkJBQ0FFUVFCS0d5RUVBMEFnQkNBTVJ3UkFJQXNnRGtFRGRHb2dFRFlDQkFOQUlBVWdEbW9nQ25FaURpQVNTdzBBQ3lBTVFRRnFJUXdNQVFzTElCQkJBV29oRUF3QUN3QUxJQUpCQVdvaEJVRUFJUXdEUUNBTUlBOUhCRUFnRFNBTElBeEJBM1JxSWdrb0FnUWlCRUVCZEdvaUFpQUNMd0VBSWdaQkFXbzdBUUFnQ1NBRklBWm5RV0J6YWlJQ09nQURJQWtnQmlBQ2RDQVBhenNCQUNBSklBZ2dCRUVDZENJQ2FpZ0NBRG9BQWlBSklBSWdCMm9vQWdBMkFnUWdERUVCYWlFTURBRUxDeUFCSUFBMkFnQWdBeUVQQ3lBUlFZQUJhaVFBSUE4TDdWb0NPMzhHZmlNQVFlQUJheUlFSkFBQ1FFR3c3QWtRQlNJRlJRUkFRVUFoQnd3QkN5QUZRZ0EzQXZUcUFTQUZRUUEyQXNUckFTQUZRUUEyQXJUckFTQUZRZ0EzQXB6ckFTQUZRUUEyQXJqcEFTQUZRUUEyQXF6c0NTQUZRZ0EzQXRUckFTQUZRZ0EzQXF6ckFTQUZRZ0EzQTRqckFTQUZRZ0EzQXVUcUFTQUZRZ0EzQXVUckFTQUZRWUdBZ01BQU5nSzg2d0VnQlVJQU53S2s2d0VnQlVIODZnRnFRUUEyQWdBZ0JVR1E2d0ZxUWdBM0F3QWdCUkFZSUFWQnJOVUJhaUVVSUFWQitPc0JhaUVjSUFWQnNPb0JhaUVpSUFWQm9EQnFJU29nQlVHWUlHb2hLeUFGUWFqUUFHb2hIaUFGUVJCcUlTd2dCVUVJYWlFb0lBVkJCR29oTFNBRlFjRHBBV29oS1NBRlFZanJBV29nQkVHVUFXb2hMeUFFUVl3QmFpRXdJQVJCaEFGcUlURWdCRUhjQUdvaE1pQUVRZFFBYWlFeklBUkJ6QUJxSVRRZ0FDRWRBa0FDUUFKQUFrQUNRQU5BUVFGQkJTQUZLQUxrNmdFYklRWUNRQU5BSUFNZ0Jra05BU0FDS0FBQVFYQnhRZERVdE1JQlJnUkFRYmgvSVFjZ0EwRUlTUTBJSUFJb0FBUWlEa0YzU3dSQVFYSWhCd3dKQ3lBRElBNUJDR29pQ1VrTkNDQU9RWUIvU3dSQUlBa2hCd3dKQ3lBRElBbHJJUU1nQWlBSmFpRUNEQUVMQ3lBRlFnQTNBcXpwQVNBRlFnQTNBK2pwQVNBRlFRQTJBcGpyQVNBRlFnQTNBNERxQVNBRlFnTTNBL2pwQVNBRlFiVHBBV3BDQURjQ0FDQUZRZkRwQVdwQ0FEY0RBQ0FGUWFqUUFHb2lDVUdNZ0lEZ0FEWUNBQ0FGUWF6UUFXcEI0QklwQWdBM0FnQWdCVUcwMEFGcVFlZ1NLQUlBTmdJQUlBVWdCVUVRYWpZQ0FDQUZJQVZCb0RCcU5nSUVJQVVnQlVHWUlHbzJBZ2dnQlNBSk5nSU1JQVZCQVVFRklBVW9BdVRxQVJzMkFyenBBUUpBSUFGRkRRQWdCU2dDck9rQklna2dIVVlOQUNBRklBazJBcmpwQVNBRklCMDJBcXpwQVNBRktBS3c2UUVoRGlBRklCMDJBckRwQVNBRklCMGdEaUFKYTJvMkFyVHBBUXRCdUg4aENTQURRUVZCQ1NBRktBTGs2Z0VpQmh0SkRRVWdBa0VCUVFVZ0Joc2dCaEFhSWc1QmlIOUxCRUFnRGlFSkRBVUxJQU1nRGtFRGFra05CU0FwSUFJZ0RpQUdFQmtpQmtHSWYwc0VRQ0FHSVFrTUJRc2dCZzBGQWtBQ1FDQUZLQUtvNndGQkFVY05BQ0FGS0FLazZ3RWlDVVVOQUNBRktBS1U2d0ZGRFFBZ0NTZ0NCRUVCYXlJSElBVW9BdHpwQVNJS3JVS0hsYSt2bUxiZW01NS9ma0xKejlteThlVzY2aWVGUWhlSlFzL1cwNzdTeDZ2WlFuNUMrZlBkOFpuMm1hc1dmQ0kvUWlHSUlEK0ZRcy9XMDc3U3g2dlpRbjRpUDBJZGlDQS9oVUw1ODkzeG1mYVpxeForSWo5Q0lJZ2dQNFduY1NFR0lBa29BZ0FoRlFOQVFRQWhDQUpBSUJVZ0JrRUNkR29vQWdBaUNVVU5BQ0FKS0FJSVFRaEpEUUFnQ1NnQ0JDSVNLQUFBUWJmSXd1RitSdzBBSUJJb0FBUWhDQXNnQ0NBS1J3UkFJQVlnQjNGQkFXb2hCaUFJRFFFTEN5QUpSUTBBSUFVUUdDQUZRWDgyQXFEckFTQUZJQWsyQXBUckFTQUZJQVVvQXR6cEFTSUlOZ0tZNndFTUFRc2dCU2dDM09rQklRZ0xBa0FnQ0VVTkFDQUZLQUtZNndFZ0NFWU5BRUZnSVFrTUJnc0NRQ0FGS0FMZzZRRUVRQ0FGSUFVb0F1anFBU0lKUlRZQzdPb0JJQWtOQVNBRlF2bnEwTkRueWFIazRRQTNBNmpxQVNBRlFnQTNBNkRxQVNBRlFzL1cwNzdTeDZ2WlFqY0RtT29CSUFWQzF1dUM3dXI5aWZYZ0FEY0RrT29CSUFWQ0FEY0RpT29CSUNKQkFFRW9FQU1hREFFTElBVkJBRFlDN09vQkN5QUJJQjFxSVNVZ0JTQUZLUVBvNlFFZ0RxMThOd1BvNlFFZ0F5QU9heUVESUFJZ0Rtb2hBaUFkSVE0RFFDQUNJQU1nQkVFc2FoQWRJaFZCaUg5TEJFQWdGU0VKREFZTElBTkJBMnNpTlNBVlNRMEVJQUpCQTJvaEcwRnNJUWtDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUVLQUlzRGdNQ0FRQVZDeUFWUWYvL0Iwc05FeUFWUVFOSkRSSWdCU2tEeU9rQklUOENRQUpBSUJzdEFBQWlDVUVEY1NJYVFRRnJEZ01HQVFBSEN5QUZLQUtBNmdFTkFFRmlJUWtNRlFzZ0ZVRUZTUTBTSUJzb0FBQWhBd0ovQWtBQ1FBSkFJQWxCQW5aQkEzRWlDVUVDYXc0Q0FRSUFDeUFKUVFCSElRY2dBMEVFZGtIL0IzRWhDMEVESVFZZ0EwRU9ka0gvQjNFTUFndEJCQ0VHSUFOQkJIWkIvLzhBY1NFTFFRRWhCeUFEUVJKMkRBRUxJQU5CQkhaQi8vOFBjU0lMUVlDQUNFc05FMEVCSVFkQkJTRUdJQUl0QUFkQkNuUWdBMEVXZG5JTElnZ2dCbW9pQ1NBVlN3MFNBa0FnQzBHQkJra05BQ0FGS0FLYzZ3RkZEUUJCQUNFREEwQWdBMEdEZ0FGTERRRWdBMEZBYXlFRERBQUxBQXNnQmlBYmFpRVBJQnBCQTBjTkJpQUZLQUlNSWdJdEFBRkJDSFFoQXlBSERRY2dBMFVOQ0NBRVFmQUFhaUFQSUFnUURTSURRWWgvU3cwSklBSkJCR29oQmlBTElCeHFJaEpCQTJzaENrRUFJQUl2QVFKclFSOXhJUWNnSENFREEwQWdCRUh3QUdvUUQwVWdBeUFLU1hFRVFDQURJQVlnQkNnQ2NDSUlJQVFvQW5RaUQzUWdCM1pCQW5ScUlnSXZBUUE3QUFBZ0F5QUNMUUFEYWlJRElBWWdDQ0FQSUFJdEFBSnFJZ2gwSUFkMlFRSjBhaUlDTHdFQU93QUFJQVFnQ0NBQ0xRQUNhallDZENBRElBSXRBQU5xSVFNTUFRVWdFa0VDYXlFSUEwQWdCRUh3QUdvUUR5RVBJQVFvQW5BaENpQUVLQUowSVFJZ0F5QUlTeUFQY2tVRVFDQURJQVlnQ2lBQ2RDQUhka0VDZEdvaUNpOEJBRHNBQUNBRUlBSWdDaTBBQW1vMkFuUWdBeUFLTFFBRGFpRUREQUVMQ3dOQUlBTWdDRTBFUUNBRElBWWdDaUFDZENBSGRrRUNkR29pRHk4QkFEc0FBQ0FESUE4dEFBTnFJUU1nQWlBUExRQUNhaUVDREFFTEN3SkFJQU1nRWs4TkFDQURJQVlnQ2lBQ2RDQUhka0VDZEdvaUF5MEFBRG9BQUNBRExRQURRUUZHQkVBZ0FpQURMUUFDYWlFQ0RBRUxJQUpCSDBzTkFFRWdJQUlnQXkwQUFtb2lBaUFDUVNCUEd5RUNDMEZzUVd3Z0N5QUVLQUo0SUFRb0FueEhHeUFDUVNCSEd5RUREQXNMQUFzQUN5QUVLQUkwSWdJZ0pTQU9hMHNOQ2lBT1JRUkFRUUFoQ1NBQ0RRSU1EZ3NnRGlBYkxRQUFJQUlRQXhvZ0FpRUpEQXdMSUJVZ0pTQU9hMHNOQ1NBT0RRRkJBQ0VKSUJWRkRRd0xRYlovSVFrTUVRc2dEaUFiSUJVUUFob2dGU0VKREFvTElCd2dHd0ovQWtBQ1FBSkFJQWxCQW5aQkEzRkJBV3NPQXdFQUFnQUxJQWxCQTNZaEEwRUJEQUlMSUJzdkFBQkJCSFloQTBFQ0RBRUxJQlZCQkVrTkRpQUNMd0FESUFJdEFBVkJFSFJ5SWdKQmo0Q0FBVXNORGlBQ1FRUjJJUU5CQXdzaUFtb3RBQUFnQTBFZ2FoQURJUWtnQlNBRE5nS0E2d0VnQlNBSk5nTHc2Z0VnQWtFQmFpRUpEQVVMSUJVQ2Z3SkFBa0FDUUNBSlFRSjJRUU54UVFGckRnTUJBQUlBQ3lBSlFRTjJJUU5CQVF3Q0N5QWJMd0FBUVFSMklRTkJBZ3dCQ3lBQ0x3QURJQUl0QUFWQkVIUnlRUVIySVFOQkF3c2lBaUFEYWlJSlFTQnFTUVJBSUFrZ0ZVc05EU0FjSUFJZ0cyb2dBeEFDSVFJZ0JTQUROZ0tBNndFZ0JTQUNOZ0x3NmdFZ0FpQURhaUlDUWdBM0FCZ2dBa0lBTndBUUlBSkNBRGNBQ0NBQ1FnQTNBQUFNQlFzZ0JTQUROZ0tBNndFZ0JTQUNJQnRxTmdMdzZnRU1CQXNnQjBVRVFDQWVJQThnQ0NBVUVCUWlBa0dJZjBzZ0FpQUlUM0lORENBY0lBc2dBaUFQYWlBSUlBSnJJQjRRRlNFRERBTUxJQXRGSUFoRmNnMExJQXRCQ0hZaUF5QUlJQXRKQkg4Z0NFRUVkQ0FMYmdWQkR3dEJHR3dpQWtHTUNHb29BZ0JzSUFKQmlBaHFLQUlBYWlJR1FRTjJJQVpxSUFKQmdBaHFLQUlBSUFKQmhBaHFLQUlBSUFOc2Fra0VRQ01BUVJCckloQWtBQ0FlS0FJQUlRTWdGRUh3QkdwQkFFSHNBQkFESVFaQlZDRUNBa0FnQTBIL0FYRWlERUVNU3cwQUFrQWdGRUhjQ1dvZ0JpQVFRUWhxSUJCQkRHb2dEeUFJSUJSQjNBdHFJaGNRQ3lJU1FZaC9TdzBBSUJBb0Fnd2lCaUFNU3cwQklCUkJxQVZxSVEwZ0ZFR2tCV29oTmlBZVFRUnFJUkVnQTBHQWdJQjRjU0UzSUFaQkFXb2lFeUVDSUFZaEF3TkFJQUlpQjBFQmF5RUNJQU1pQ2tFQmF5RURJQlFnQ2tFQ2RHb29BdkFFUlEwQUMwRUJJQWNnQjBFQlRSc2hGa0VBSVFkQkFTRUNBMEFnQWlBV1J3UkFJQlFnQWtFQ2RDSURhaWdDOEFRaEdDQURJQTFxSUFjMkFnQWdBa0VCYWlFQ0lBY2dHR29oQnd3QkN3c2dEU0FITmdJQVFRQWhBaUFRS0FJSUlRTURRQ0FDSUFOSEJFQWdEU0FDSUJScVFkd0phaTBBQUNJWVFRSjBhaUlaSUJrb0FnQWlHVUVCYWpZQ0FDQVVJQmxCQVhScUloa2dHRG9BM1FVZ0dTQUNPZ0RjQlNBQ1FRRnFJUUlNQVFzTFFRQWhBeUFOUVFBMkFnQWdEQ0FHUVg5emFpRUdRUUVoQWdOQUlBSWdGa2NFUUNBVUlBSkJBblJxSWcwZ0F6WUNBQ0FOS0FMd0JDQUNJQVpxZENBRGFpRURJQUpCQVdvaEFnd0JDd3NnRENBVElBcHJJZ1pyUVFGcUlRb2dCaUVEQTBBZ0F5QUtTUVJBSUJRZ0EwRTBiR29oRFVFQklRSURRQ0FDSUJaSEJFQWdEU0FDUVFKMEloaHFJQlFnR0dvb0FnQWdBM1kyQWdBZ0FrRUJhaUVDREFFTEN5QURRUUZxSVFNTUFRc0xJQmNnRkVFMEVBSWhPQ0FVUVpBTWFpRTVJQk1nREdzaE9pQVVRZHdGYWlFWFFRQWhDZ05BQWtBQ1FDQUhJQXBIQkVCQkFTQU1JQk1nRnlBS1FRRjBhaUlDTFFBQklnMXJJZ05ySWhoMElSa2dBaTBBQUNFV0lEZ2dEVUVDZEdvaUh5Z0NBQ0VDSUFZZ0dFMEVRQ0EyUVFFZ0F5QTZhaUlOSUExQkFVd2JJaUJCQW5RaUpHb29BZ0FoRFNBNUlCUWdBMEUwYkdwQk5CQUNJU0VnRFVFQmRDRW1JQkVnQWtFQ2RHb2hJeUFnUVFGTkRRSWdBMEVRZEVHQWdQd0hjU0FXY2tHQWdJQUljaUVnSUNFZ0pHb29BZ0FoSkVFQUlRSURRQ0FDSUNSR0RRTWdJeUFDUVFKMGFpQWdOZ0VBSUFKQkFXb2hBZ3dBQ3dBTElBSWdBaUFaYWlJTklBSWdEVXNiSVEwZ0EwRVFkRUdBZ1B3SGNTQVdja0dBZ0lBSWNpRURBMEFnQWlBTlJnMERJQkVnQWtFQ2RHb2dBellCQUNBQ1FRRnFJUUlNQUFzQUN5QWVJQXhCRUhRZ04zSWdESEpCZ0FKeU5nSUFEQU1MSUFjZ0RXc2hKQ0FYSUNacUlTWkJBQ0VOQTBBZ0RTQWtSZzBCUVFFZ0dDQVRJQ1lnRFVFQmRHb2lKeTBBQVNJQ2F5STdhM1FpUENBaElBSkJBblJxSWlBb0FnQWlBbW9oUFNBRElEdHFRUkIwUVlDQS9BZHhJQ2N0QUFCQkNIUnlJQlp5UVlDQWdCQnlJU2NEUUNBaklBSkJBblJxSUNjMkFRQWdBa0VCYWlJQ0lEMUpEUUFMSUNBZ0lDZ0NBQ0E4YWpZQ0FDQU5RUUZxSVEwTUFBc0FDeUFmSUI4b0FnQWdHV28yQWdBZ0NrRUJhaUVLREFBTEFBc2dFaUVDQ3lBUVFSQnFKQUFnQWtHSWYwc2dBaUFJVDNJTkRDQWNJQXNnQWlBUGFpQUlJQUpySUI0UUZpRUREQU1MSUI0Z0R5QUlJQlFRRkNJQ1FZaC9TeUFDSUFoUGNnMExJQndnQ3lBQ0lBOXFJQWdnQW1zZ0hoQVhJUU1NQWdzZ0F3UkFJQndnQ3lBUElBZ2dBaEFXSVFNTUFnc2dIQ0FMSUE4Z0NDQUNFQmNoQXd3QkN5QWNJQXNnRHlBSUlBSVFGU0VEQ3lBRFFZaC9TdzBJSUFVZ0N6WUNnT3NCSUFVZ0hEWUM4T29CSUFWQkFUWUNnT29CSUJwQkFrWUVRQ0FGSUI0MkFnd0xJQXNnSEdvaUFrSUFOd0FBSUFKQ0FEY0FHQ0FDUWdBM0FCQWdBa0lBTndBSUlBbEJpSDlMRFFvTElBa2dGVVlOQ0NBVklBbHJJUVlnQlNnQ25Pc0JJUW9DUUNBSklCdHFJZ010QUFBaUQwVUVRRUVCSVFKQkFDRVBRYmgvSVFrZ0JrRUJSZzBCREFzTEFuOGdBMEVCYWlBUHdDSUNRUUJPRFFBYUlBSkJmMFlFUUNBR1FRTklEUXNnQXk4QUFVR0EvZ0ZxSVE4Z0EwRURhZ3dCQ3lBR1FRSklEUW9nQXkwQUFTQVBRUWgwY2tHQWdBSnJJUThnQTBFQ2Fnc2hFa0c0ZnlFSklCSkJBV29pQWlBVklCdHFJZ2RMRFFvZ0xDQUZJQkl0QUFBaUVrRUdka0VqUVFrZ0FpQUhJQUpyUWNBUVFkQVJRZkFTSUFVb0FvVHFBU0FLSUE4Z0ZCQWhJZ2xCaUg5TERRZ2dLeUFvSUJKQkJIWkJBM0ZCSDBFSUlBSWdDV29pQWlBSElBSnJRWUFMUVlBTVFZQVhJQVVvQW9UcUFTQUZLQUtjNndFZ0R5QVVFQ0VpQ0VHSWYwc05DRUZzSVFrZ0tpQXRJQkpCQW5aQkEzRkJORUVKSUFJZ0NHb2lBaUFISUFKclFZQU5RZUFPUVpBWklBVW9Bb1RxQVNBRktBS2M2d0VnRHlBVUVDRWlCMEdJZjBzTkNpQUNJQWRxSUFOcklnSWhDU0FDUVloL1N3MEtDeUFPSUE5QkFFeHlEUUVMUWJwL0lRa01DQXNnSlNBT2F5RUpJQVlnQW1zaEJpQUNJQU5xSVFjQ1FBSkFBa0FnQ2tVRVFDQVBRUWxJSUFVcEE4anBBVUtCZ0lBSVZISU5BaUFvS0FJQUlnSkJDR29oRWlBQ0tBSUVJUXBCQUNFRFFRQWhBZ05BSUFNZ0NuWkZCRUFnQWlBU0lBTkJBM1JxTFFBQ1FSWkxhaUVDSUFOQkFXb2hBd3dCQ3dzZ0JVRUFOZ0tjNndFZ0FrRUlJQXByZEVFVVR3MEJEQU1MSUFWQkFEWUNuT3NCQ3lBRUlBVW9BdkRxQVNJRE5nTGNBU0FKSUE1cUlSWWdBeUFGS0FLQTZ3RnFJUmNDUUNBUFJRUkFJQTRoQnd3QkN5QUZLQUs0NlFFaEdpQUZLQUswNlFFaEdDQUZLQUt3NlFFaEVpQUZRUUUyQW9UcUFVRUFJUU1EUUNBRFFRTkhCRUFnQkNBRFFRSjBJZ0pxSUFJZ0JXcEJyTkFCYWlnQ0FEWUNaQ0FEUVFGcUlRTU1BUXNMUVd3aENTQUVRVGhxSWdJZ0J5QUdFQTFCaUg5TERRTkJDQ0FQSUE5QkNFNGJJUjhnTkNBQ0lBVW9BZ0FRSGlBeklBSWdCU2dDQ0JBZUlESWdBaUFGS0FJRUVCNGdEaUFTYXlFWlFRQWhDQU5BSUFSQk9Hb1FEMEVEUmlBSUlCOU9ja1VFUUNBRUtBSlFJQVFvQWt4QkEzUnFLUUlBSWtDbklnZEJFSFlpRVVIL0FYRWhDeUFFS0FKZ0lBUW9BbHhCQTNScUtRSUFJa0duSWd4QkVIWWlJVUgvQVhFaEVDQUVLQUpZSUFRb0FsUkJBM1JxS1FJQUlrSkNJSWluSVFZZ1FVSWdpQ0JBUWlDSXB5RURBa0FnUWtJUWlLY2lDa0gvQVhFaUFrRUNUd1JBQWtBZ0FrRVpTU0EvUW9HQWdCQlVja1VFUUNBRVFTQWdCQ2dDUENJS2F5SU5JQUlnQWlBTlN4c2lFeUFLYWpZQ1BDQUdJQVFvQWpnZ0NuUkJBQ0FUYTNZZ0FpQVRheUlUZEdvaENpQUVRVGhxRUE4YUlBSWdEVTBOQVNBRUlBUW9BandpQWlBVGFqWUNQQ0FFS0FJNElBSjBRUUFnRTJ0MklBcHFJUW9NQVFzZ0JDQUNJQVFvQWp3aURXbzJBandnQkNnQ09DQU5kRUVBSUFwcmRpQUdhaUVLSUFSQk9Hb1FEeG9MSUFRcEFtUWhSQ0FFSUFvMkFtUWdCQ0JFTndKb0RBRUxBa0FnQWtVRVFDQURCRUFnQkNnQ1pDRUtEQU1MSUFRb0FtZ2hDZ3dCQ3lBRUlBUW9BandpQWtFQmFqWUNQQUovSUFZZ0EwVnFJQVFvQWpnZ0FuUkJIM1pxSWdKQkEwWUVRQ0FFS0FKa1FRRnJEQUVMSUFKQkFuUWdCR29vQW1RTElnWkZJQVpxSVFvZ0FrRUJSd1JBSUFRZ0JDZ0NhRFlDYkFzTElBUWdCQ2dDWkRZQ2FDQUVJQW8yQW1RTHB5RUNJRUZDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NQQ0lHSUJCcU5nSThJQVFvQWpnZ0JuUkJBQ0FoYTNZZ0Ftb2hBZ3NnQ3lBUWFrRVVUd1JBSUFSQk9Hb1FEeG9MSUVCQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDUENJR0lBdHFOZ0k4SUFRb0FqZ2dCblJCQUNBUmEzWWdBMm9oQXdzZ0JFRTRhaEFQR2lBRUlBUW9BamdpQmtFQUlBZEJHSFlpQ3lBRUtBSThhaUlRYTNZZ0MwRUNkRUdnSFdvb0FnQnhJQWRCLy84RGNXbzJBa3dnQkNBUUlBeEJHSFlpQjJvaUN6WUNQQ0FFSUFkQkFuUkJvQjFxS0FJQUlBWkJBQ0FMYTNaeElBeEIvLzhEY1dvMkFsd2dCRUU0YWhBUEdpQUVJRUtuSWdaQkdIWWlCeUFFS0FJOGFpSUxOZ0k4SUFRZ0IwRUNkRUdnSFdvb0FnQWdCQ2dDT0VFQUlBdHJkbkVnQmtILy93TnhhallDVkNBRVFmQUFhaUFJUVF4c2FpSUdJQW8yQWdnZ0JpQUNOZ0lFSUFZZ0F6WUNBQ0FJUVFGcUlRZ2dBeUFaYWlBQ2FpRVpEQUVMQ3lBSUlCOUlEUU1nRmtFZ2F5RWhJQTRoQndOQUlBUkJPR29RRDBFRFJpQUlJQTlPY2tVRVFDQUVLQUpRSUFRb0FreEJBM1JxS1FJQUlrQ25JZ1pCRUhZaUkwSC9BWEVoQ2lBRUtBSmdJQVFvQWx4QkEzUnFLUUlBSWtHbklnMUJFSFlpSUVIL0FYRWhFeUFFS0FKWUlBUW9BbFJCQTNScUtRSUFJa0pDSUlpbklRTWdRVUlnaUNCQVFpQ0lweUVMQWtBZ1FrSVFpS2NpREVIL0FYRWlBa0VDVHdSQUFrQWdBa0VaU1NBL1FvR0FnQkJVY2tVRVFDQUVRU0FnQkNnQ1BDSU1heUlSSUFJZ0FpQVJTeHNpRUNBTWFqWUNQQ0FESUFRb0FqZ2dESFJCQUNBUWEzWWdBaUFRYXlJTWRHb2hFQ0FFUVRocUVBOGFJQUlnRVUwTkFTQUVJQVFvQWp3aUFpQU1hallDUENBRUtBSTRJQUowUVFBZ0RHdDJJQkJxSVJBTUFRc2dCQ0FDSUFRb0Fqd2lFR28yQWp3Z0JDZ0NPQ0FRZEVFQUlBeHJkaUFEYWlFUUlBUkJPR29RRHhvTElBUXBBbVFoUkNBRUlCQTJBbVFnQkNCRU53Sm9EQUVMQWtBZ0FrVUVRQ0FMQkVBZ0JDZ0NaQ0VRREFNTElBUW9BbWdoRUF3QkN5QUVJQVFvQWp3aUFrRUJhallDUEFKL0lBTWdDMFZxSUFRb0FqZ2dBblJCSDNacUlnSkJBMFlFUUNBRUtBSmtRUUZyREFFTElBSkJBblFnQkdvb0FtUUxJZ05GSUFOcUlSQWdBa0VCUndSQUlBUWdCQ2dDYURZQ2JBc0xJQVFnQkNnQ1pEWUNhQ0FFSUJBMkFtUUxweUVNSUVGQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDUENJQ0lCTnFOZ0k4SUFRb0FqZ2dBblJCQUNBZ2EzWWdER29oREFzZ0NpQVRha0VVVHdSQUlBUkJPR29RRHhvTElFQkNnSUQ4QjROUVJRUkFJQVFnQkNnQ1BDSUNJQXBxTmdJOElBUW9BamdnQW5SQkFDQWphM1lnQzJvaEN3c2dCRUU0YWhBUEdpQUVJQVFvQWpnaUFrRUFJQVpCR0hZaUF5QUVLQUk4YWlJS2EzWWdBMEVDZEVHZ0hXb29BZ0J4SUFaQi8vOERjV28yQWt3Z0JDQUtJQTFCR0hZaUEyb2lCallDUENBRUlBTkJBblJCb0IxcUtBSUFJQUpCQUNBR2EzWnhJQTFCLy84RGNXbzJBbHdnQkVFNGFoQVBHaUFFSUVLbklnSkJHSFlpQXlBRUtBSThhaUlHTmdJOElBUWdBMEVDZEVHZ0hXb29BZ0FnQkNnQ09FRUFJQVpyZG5FZ0FrSC8vd054YWpZQ1ZBSkFBa0FDUUNBRUtBTGNBU0lESUFSQjhBQnFJQWhCQjNGQkRHeHFJaE1vQWdBaUVXb2lJeUFYU3cwQUlBY2dFeWdDQkNJTklCRnFJZ3BxSUNGTERRQWdDa0VnYWlBV0lBZHJUUTBCQ3lBRUlCTW9BZ2cyQWhnZ0JDQVRLUUlBTndNUUlBY2dGaUFFUVJCcUlBUkIzQUZxSUJjZ0VpQVlJQm9RSHlFS0RBRUxJQWNnRVdvaEFpQVRLQUlJSVFZZ0J5QURLUUFBTndBQUlBY2dBeWtBQ0RjQUNBSkFJQkZCRVVrTkFDQUhJQU1wQUJBM0FCQWdCeUFES1FBWU53QVlJQkZCRUd0QkVVZ05BQ0FEUVJCcUlRTWdCMEVnYWlFUkEwQWdFU0FES1FBUU53QUFJQkVnQXlrQUdEY0FDQ0FSSUFNcEFDQTNBQkFnRVNBREtRQW9Od0FZSUFOQklHb2hBeUFSUVNCcUloRWdBa2tOQUFzTElBSWdCbXNoQXlBRUlDTTJBdHdCSUFJZ0Vtc2dCa2tFUUNBR0lBSWdHR3RMRFFjZ0dpQWFJQU1nRW1zaUEyb2lFU0FOYWs4RVFDQUNJQkVnRFJBS0dnd0NDeUFESUExcUlRMGdBaUFSUVFBZ0Eyc1FDaUFEYXlFQ0lCSWhBd3NnQmtFUVR3UkFJQUlnQXlrQUFEY0FBQ0FDSUFNcEFBZzNBQWdnRFVFUlNBMEJJQUlnRFdvaEJpQUNRUkJxSVFJRFFDQUNJQU1wQUJBM0FBQWdBaUFES1FBWU53QUlJQUlnQXlrQUlEY0FFQ0FDSUFNcEFDZzNBQmdnQTBFZ2FpRURJQUpCSUdvaUFpQUdTUTBBQ3d3QkN3SkFJQVpCQjAwRVFDQUNJQU10QUFBNkFBQWdBaUFETFFBQk9nQUJJQUlnQXkwQUFqb0FBaUFDSUFNdEFBTTZBQU1nQWlBRElBWkJBblFpQmtIQUhtb29BZ0JxSWdNb0FBQTJBQVFnQXlBR1FlQWVhaWdDQUdzaEF3d0JDeUFDSUFNcEFBQTNBQUFMSUExQkNVa05BQ0FDSUExcUlSRWdBa0VJYWlJR0lBTkJDR29pQTJ0QkQwd0VRQU5BSUFZZ0F5a0FBRGNBQUNBRFFRaHFJUU1nQmtFSWFpSUdJQkZKRFFBTUFnc0FDeUFHSUFNcEFBQTNBQUFnQmlBREtRQUlOd0FJSUExQkdVZ05BQ0FDUVJocUlRSURRQ0FDSUFNcEFCQTNBQUFnQWlBREtRQVlOd0FJSUFJZ0F5a0FJRGNBRUNBQ0lBTXBBQ2czQUJnZ0EwRWdhaUVESUFKQklHb2lBaUFSU1EwQUN3c2dDa0dJZjBzRVFDQUtJUWtNQmdVZ0V5QVFOZ0lJSUJNZ0REWUNCQ0FUSUFzMkFnQWdDRUVCYWlFSUlBY2dDbW9oQnlBTElCbHFJQXhxSVJrTUFnc0FDd3NnQ0NBUFNBMERJQWdnSDJzaEJnTkFBa0FnQmlBUFRnUkFRUUFoQXdOQUlBTkJBMFlOQWlBRklBTkJBblFpQW1wQnJOQUJhaUFDSUFScUtBSmtOZ0lBSUFOQkFXb2hBd3dBQ3dBTEFrQUNRQUpBSUFRb0F0d0JJZ01nQkVId0FHb2dCa0VIY1VFTWJHb2lDQ2dDQUNJTWFpSVFJQmRMRFFBZ0J5QUlLQUlFSWdzZ0RHb2lDbW9nSVVzTkFDQUtRU0JxSUJZZ0IydE5EUUVMSUFRZ0NDZ0NDRFlDS0NBRUlBZ3BBZ0EzQXlBZ0J5QVdJQVJCSUdvZ0JFSGNBV29nRnlBU0lCZ2dHaEFmSVFvTUFRc2dCeUFNYWlFQ0lBZ29BZ2doQ0NBSElBTXBBQUEzQUFBZ0J5QURLUUFJTndBSUFrQWdERUVSU1EwQUlBY2dBeWtBRURjQUVDQUhJQU1wQUJnM0FCZ2dERUVRYTBFUlNBMEFJQU5CRUdvaEF5QUhRU0JxSVF3RFFDQU1JQU1wQUJBM0FBQWdEQ0FES1FBWU53QUlJQXdnQXlrQUlEY0FFQ0FNSUFNcEFDZzNBQmdnQTBFZ2FpRURJQXhCSUdvaURDQUNTUTBBQ3dzZ0FpQUlheUVESUFRZ0VEWUMzQUVnQWlBU2F5QUlTUVJBSUFnZ0FpQVlhMHNOQnlBYUlCb2dBeUFTYXlJRGFpSU1JQXRxVHdSQUlBSWdEQ0FMRUFvYURBSUxJQU1nQzJvaEN5QUNJQXhCQUNBRGF4QUtJQU5ySVFJZ0VpRURDeUFJUVJCUEJFQWdBaUFES1FBQU53QUFJQUlnQXlrQUNEY0FDQ0FMUVJGSURRRWdBaUFMYWlFSUlBSkJFR29oQWdOQUlBSWdBeWtBRURjQUFDQUNJQU1wQUJnM0FBZ2dBaUFES1FBZ053QVFJQUlnQXlrQUtEY0FHQ0FEUVNCcUlRTWdBa0VnYWlJQ0lBaEpEUUFMREFFTEFrQWdDRUVIVFFSQUlBSWdBeTBBQURvQUFDQUNJQU10QUFFNkFBRWdBaUFETFFBQ09nQUNJQUlnQXkwQUF6b0FBeUFDSUFNZ0NFRUNkQ0lJUWNBZWFpZ0NBR29pQXlnQUFEWUFCQ0FESUFoQjRCNXFLQUlBYXlFRERBRUxJQUlnQXlrQUFEY0FBQXNnQzBFSlNRMEFJQUlnQzJvaERDQUNRUWhxSWdnZ0EwRUlhaUlEYTBFUFRBUkFBMEFnQ0NBREtRQUFOd0FBSUFOQkNHb2hBeUFJUVFocUlnZ2dERWtOQUF3Q0N3QUxJQWdnQXlrQUFEY0FBQ0FJSUFNcEFBZzNBQWdnQzBFWlNBMEFJQUpCR0dvaEFnTkFJQUlnQXlrQUVEY0FBQ0FDSUFNcEFCZzNBQWdnQWlBREtRQWdOd0FRSUFJZ0F5a0FLRGNBR0NBRFFTQnFJUU1nQWtFZ2FpSUNJQXhKRFFBTEN5QUtRWWgvU3dSQUlBb2hDUXdHQlNBR1FRRnFJUVlnQnlBS2FpRUhEQUlMQUFzTElBUW9BdHdCSVFNTFFicC9JUWtnRnlBRGF5SUNJQllnQjJ0TERRSWdCd1IvSUFjZ0F5QUNFQUlnQW1vRlFRQUxJQTVySVFrTUFnc2dCVUVBTmdLYzZ3RUxJQVFnQlNnQzhPb0JJZ00yQXR3QklBa2dEbW9oRENBRElBVW9Bb0RyQVdvaEVBSkFJQTlGQkVBZ0RpRUdEQUVMSUFVb0FyanBBU0VOSUFVb0FyVHBBU0VUSUFVb0FyRHBBU0VTSUFWQkFUWUNoT29CUVFBaEF3TkFJQU5CQTBjRVFDQUVJQU5CQW5RaUFtb2dBaUFGYWtHczBBRnFLQUlBTmdLY0FTQURRUUZxSVFNTUFRc0xRV3doQ1NBRVFmQUFhaUlDSUFjZ0JoQU5RWWgvU3cwQklERWdBaUFGS0FJQUVCNGdNQ0FDSUFVb0FnZ1FIaUF2SUFJZ0JTZ0NCQkFlSUF4QklHc2hHQ0FPSVFZRFFDQUVLQUtJQVNBRUtBS0VBVUVEZEdvcEFnQWlRS2NpQ2tFUWRpSVpRZjhCY1NFTElBUW9BcGdCSUFRb0FwUUJRUU4wYWlrQ0FDSkJweUlXUVJCMkloOUIvd0Z4SVJvZ0JDZ0NrQUVnQkNnQ2pBRkJBM1JxS1FJQUlrSkNJSWluSVFjZ1FVSWdpQ0JBUWlDSXB5RURBa0FnUWtJUWlLY2lDRUgvQVhFaUFrRUNUd1JBQWtBZ0FrRVpTU0EvUW9HQWdCQlVja1VFUUNBRVFTQWdCQ2dDZENJSWF5SVJJQUlnQWlBUlN4c2lGeUFJYWpZQ2RDQUhJQVFvQW5BZ0NIUkJBQ0FYYTNZZ0FpQVhheUlYZEdvaENDQUVRZkFBYWhBUEdpQUNJQkZORFFFZ0JDQUVLQUowSWdJZ0YybzJBblFnQkNnQ2NDQUNkRUVBSUJkcmRpQUlhaUVJREFFTElBUWdBaUFFS0FKMEloRnFOZ0owSUFRb0FuQWdFWFJCQUNBSWEzWWdCMm9oQ0NBRVFmQUFhaEFQR2dzZ0JDa0NuQUVoUkNBRUlBZzJBcHdCSUFRZ1JEY0NvQUVNQVFzQ1FDQUNSUVJBSUFNRVFDQUVLQUtjQVNFSURBTUxJQVFvQXFBQklRZ01BUXNnQkNBRUtBSjBJZ0pCQVdvMkFuUUNmeUFISUFORmFpQUVLQUp3SUFKMFFSOTJhaUlDUVFOR0JFQWdCQ2dDbkFGQkFXc01BUXNnQWtFQ2RDQUVhaWdDbkFFTElnZEZJQWRxSVFnZ0FrRUJSd1JBSUFRZ0JDZ0NvQUUyQXFRQkN3c2dCQ0FFS0FLY0FUWUNvQUVnQkNBSU5nS2NBUXVuSVFJZ1FVS0FnUHdIZzFCRkJFQWdCQ0FFS0FKMElnY2dHbW8yQW5RZ0JDZ0NjQ0FIZEVFQUlCOXJkaUFDYWlFQ0N5QUxJQnBxUVJSUEJFQWdCRUh3QUdvUUR4b0xJRUJDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NkQ0lISUF0cU5nSjBJQVFvQW5BZ0IzUkJBQ0FaYTNZZ0Eyb2hBd3NnQkVId0FHb1FEeG9nQkNBRUtBSndJZ2RCQUNBS1FSaDJJZ3NnQkNnQ2RHb2lHbXQySUF0QkFuUkJvQjFxS0FJQWNTQUtRZi8vQTNGcU5nS0VBU0FFSUJvZ0ZrRVlkaUlLYWlJTE5nSjBJQVFnQ2tFQ2RFR2dIV29vQWdBZ0IwRUFJQXRyZG5FZ0ZrSC8vd054YWpZQ2xBRWdCRUh3QUdvUUR4b2dCQ0JDcHlJSFFSaDJJZ29nQkNnQ2RHb2lDellDZENBRUlBcEJBblJCb0IxcUtBSUFJQVFvQW5CQkFDQUxhM1p4SUFkQi8vOERjV28yQW93QklBUWdBellDT0NBRUlBSTJBandnQkNBSU5nSkFBa0FDUUFKQUlBUW9BdHdCSWdzZ0Eyb2lGaUFRU3cwQUlBWWdBaUFEYWlJS2FpQVlTdzBBSUFwQklHb2dEQ0FHYTAwTkFRc2dCQ0FFUVVCcktBSUFOZ0lJSUFRZ0JDa0RPRGNEQUNBR0lBd2dCQ0FFUWR3QmFpQVFJQklnRXlBTkVCOGhDZ3dCQ3lBRElBWnFJUWNnQmlBTEtRQUFOd0FBSUFZZ0N5a0FDRGNBQ0FKQUlBTkJFVWtOQUNBR0lBc3BBQkEzQUJBZ0JpQUxLUUFZTndBWUlBTkJFR3RCRVVnTkFDQUxRUkJxSVFNZ0JrRWdhaUVMQTBBZ0N5QURLUUFRTndBQUlBc2dBeWtBR0RjQUNDQUxJQU1wQUNBM0FCQWdDeUFES1FBb053QVlJQU5CSUdvaEF5QUxRU0JxSWdzZ0Iwa05BQXNMSUFjZ0NHc2hBeUFFSUJZMkF0d0JJQWNnRW1zZ0NFa0VRQ0FJSUFjZ0UydExEUVFnRFNBTklBTWdFbXNpQTJvaUN5QUNhazhFUUNBSElBc2dBaEFLR2d3Q0N5QUhJQXRCQUNBRGF4QUtJQVFnQWlBRGFpSUNOZ0k4SUFOcklRY2dFaUVEQ3lBSVFSQlBCRUFnQnlBREtRQUFOd0FBSUFjZ0F5a0FDRGNBQ0NBQ1FSRklEUUVnQWlBSGFpRUlJQWRCRUdvaEFnTkFJQUlnQXlrQUVEY0FBQ0FDSUFNcEFCZzNBQWdnQWlBREtRQWdOd0FRSUFJZ0F5a0FLRGNBR0NBRFFTQnFJUU1nQWtFZ2FpSUNJQWhKRFFBTERBRUxBa0FnQ0VFSFRRUkFJQWNnQXkwQUFEb0FBQ0FISUFNdEFBRTZBQUVnQnlBRExRQUNPZ0FDSUFjZ0F5MEFBem9BQXlBSElBTWdDRUVDZENJSVFjQWVhaWdDQUdvaUF5Z0FBRFlBQkNBRElBaEI0QjVxS0FJQWF5RUREQUVMSUFjZ0F5a0FBRGNBQUFzZ0FrRUpTUTBBSUFJZ0Iyb2hDeUFIUVFocUlnZ2dBMEVJYWlJRGEwRVBUQVJBQTBBZ0NDQURLUUFBTndBQUlBTkJDR29oQXlBSVFRaHFJZ2dnQzBrTkFBd0NDd0FMSUFnZ0F5a0FBRGNBQUNBSUlBTXBBQWczQUFnZ0FrRVpTQTBBSUFkQkdHb2hBZ05BSUFJZ0F5a0FFRGNBQUNBQ0lBTXBBQmczQUFnZ0FpQURLUUFnTndBUUlBSWdBeWtBS0RjQUdDQURRU0JxSVFNZ0FrRWdhaUlDSUF0SkRRQUxDeUFLUVloL1N3UkFJQW9oQ1F3REN5QUdJQXBxSVFZZ0JFSHdBR29RRHlFRElBOUJBV3NpRHcwQUMwRUFJUUlnQTBFQ1NRMEJBMEFnQWtFRFJ3UkFJQVVnQWtFQ2RDSURha0dzMEFGcUlBTWdCR29vQXB3Qk5nSUFJQUpCQVdvaEFnd0JDd3NnQkNnQzNBRWhBd3RCdW44aENTQVFJQU5ySWdJZ0RDQUdhMHNOQUNBR0JIOGdCaUFESUFJUUFpQUNhZ1ZCQUFzZ0Rtc2hDUXNnQ1VHSWYwc05CZ3NDUUNBRktBTHM2Z0ZGRFFBZ0JTQUZLUU9JNmdFZ0NhMThOd09JNmdFQ1FDQUZLQUxRNmdFaUFpQUphaUlJUVI5TkJFQWdEa1VOQVNBQ0lDSnFJQTRnQ1JBQ0dpQUZLQUxRNmdFZ0NXb2hDQXdCQ3lBT0lRTWdBZ1JBSUFJZ0ltb2dBMEVnSUFKckVBSWFJQVVvQXREcUFTRUNJQVZCQURZQzBPb0JJQVVnQlNrRGtPb0JJQVVwQUxEcUFVTFAxdE8rMHNlcjJVSitmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZqY0RrT29CSUFVZ0JTa0RtT29CSUFVcEFManFBVUxQMXRPKzBzZXIyVUorZkVJZmlVS0hsYSt2bUxiZW01NS9mamNEbU9vQklBVWdCU2tEb09vQklBVXBBTURxQVVMUDF0Tyswc2VyMlVKK2ZFSWZpVUtIbGErdm1MYmVtNTUvZmpjRG9Pb0JJQVVnQlNrRHFPb0JJQVVwQU1qcUFVTFAxdE8rMHNlcjJVSitmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZqY0RxT29CSUFNZ0FtdEJJR29oQXdzZ0NTQU9haUlDSUFOQklHcFBCRUFnQWtFZ2F5RUdJQVVwQTZqcUFTRS9JQVVwQTZEcUFTRkFJQVVwQTVqcUFTRkJJQVVwQTVEcUFTRkNBMEFnQXlrQUdFTFAxdE8rMHNlcjJVSitJRDk4UWgrSlFvZVZyNitZdHQ2Ym5uOStJVDhnQXlrQUVFTFAxdE8rMHNlcjJVSitJRUI4UWgrSlFvZVZyNitZdHQ2Ym5uOStJVUFnQXlrQUNFTFAxdE8rMHNlcjJVSitJRUY4UWgrSlFvZVZyNitZdHQ2Ym5uOStJVUVnQXlrQUFFTFAxdE8rMHNlcjJVSitJRUo4UWgrSlFvZVZyNitZdHQ2Ym5uOStJVUlnQTBFZ2FpSURJQVpORFFBTElBVWdQemNEcU9vQklBVWdRRGNEb09vQklBVWdRVGNEbU9vQklBVWdRamNEa09vQkN5QUNJQU5ORFFFZ0lpQURJQUlnQTJzaUNCQUNHZ3NnQlNBSU5nTFE2Z0VMSURVZ0ZXc2hBeUFWSUJ0cUlRSWdDU0FPYWlFT0lBUW9BakJGRFFBTElDa3BBd0FpUDBKL1VTQS9JQTRnSFd1c1VYSkZCRUJCYkNFSkRBWUxJQVVvQXVEcEFRUkFRV29oQ1NBRFFRUkpEUVlnQlNnQzZPb0JSUVJBSUNJZ0JTZ0MwT29CYWlFS0FuNGdCU2tEaU9vQklqOUNJRm9FUUNBRktRT1k2Z0VpUUVJSGlTQUZLUU9RNmdFaVFVSUJpWHdnQlNrRG9Pb0JJa0pDRElsOElBVXBBNmpxQVNKRFFoS0pmQ0JCUXMvVzA3N1N4NnZaUW41Q0g0bENoNVd2cjVpMjNwdWVmMzZGUW9lVnI2K1l0dDZibm45K1FwMmp0ZXFEc1kySytnQjlJRUJDejliVHZ0TEhxOWxDZmtJZmlVS0hsYSt2bUxiZW01NS9mb1ZDaDVXdnI1aTIzcHVlZjM1Q25hTzE2b094allyNkFIMGdRa0xQMXRPKzBzZXIyVUorUWgrSlFvZVZyNitZdHQ2Ym5uOStoVUtIbGErdm1MYmVtNTUvZmtLZG83WHFnN0dOaXZvQWZTQkRRcy9XMDc3U3g2dlpRbjVDSDRsQ2g1V3ZyNWkyM3B1ZWYzNkZRb2VWcjYrWXR0NmJubjkrUXAyanRlcURzWTJLK2dCOURBRUxJQVVwQTZEcUFVTEZ6OW15OGVXNjZpZDhDeUEvZkNFL0lDSWhCZ05BSUFvZ0JrRUlhaUlIVHdSQUlBWXBBQUJDejliVHZ0TEhxOWxDZmtJZmlVS0hsYSt2bUxiZW01NS9maUEvaFVJYmlVS0hsYSt2bUxiZW01NS9ma0tkbzdYcWc3R05pdm9BZlNFL0lBY2hCZ3dCQ3dzQ1FDQUtJQVpCQkdvaUNFa0VRQ0FHSVFnTUFRc2dCalVBQUVLSGxhK3ZtTGJlbTU1L2ZpQS9oVUlYaVVMUDF0Tyswc2VyMlVKK1F2bnozZkdaOXBtckZud2hQd3NEUUNBSUlBcEpCRUFnQ0RFQUFFTEZ6OW15OGVXNjZpZCtJRCtGUWd1SlFvZVZyNitZdHQ2Ym5uOStJVDhnQ0VFQmFpRUlEQUVMQ3lBQ0tBQUFJRDlDSVlnZ1A0VkN6OWJUdnRMSHE5bENmaUkvUWgySUlEK0ZRdm56M2ZHWjlwbXJGbjRpUDBJZ2lDQS9oYWRIRFFjTElBTkJCR3NoQXlBQ1FRUnFJUUlMSUE0Z0hXc2lDVUdKZjA4TkJDQUJJQWxySVFFZ0NTQWRhaUVkUVFFaFBnd0JDd3RCdUg4aEJ5QUREUVFnSFNBQWF5RUhEQVFMUVd3aENRd0JDMEc0ZnlFSkMwRzRmeUVISUFsQmRrWWdQbkVOQVFzZ0NTRUhDeWdDQUEwQUlBVkIvT29CYWlnQ0FDRUJJQVZCK09vQmFpZ0NBQ0VBSUFVUUdDQUZLQUt3NndFZ0FDQUJFQk1nQlVFQU5nS3c2d0VnQlNnQ3BPc0JJZ0lFUUFKQUFrQUNRQUpBSUFJb0FnQWlBd1JBSUFCRkRRSWdBU0FESUFBUkFnQU1BUXNnQUVVTkFnc2dBU0FDSUFBUkFnQU1BZ3NnQXhBR0N5QUNFQVlMSUFWQkFEWUNwT3NCQ3lBQUJFQWdBU0FGSUFBUkFnQU1BUXNnQlJBR0N5QUVRZUFCYWlRQUlBY0xDNmdWQ1FCQmlBZ0xEUUVBQUFBQkFBQUFBZ0FBQUFJQVFhQUlDN01HQVFBQUFBRUFBQUFDQUFBQUFnQUFBQ1lBQUFDQ0FBQUFJUVVBQUVvQUFBQm5DQUFBSmdBQUFNQUJBQUNBQUFBQVNRVUFBRW9BQUFDK0NBQUFLUUFBQUN3Q0FBQ0FBQUFBU1FVQUFFb0FBQUMrQ0FBQUx3QUFBTW9DQUFDQUFBQUFpZ1VBQUVvQUFBQ0VDUUFBTlFBQUFITURBQUNBQUFBQW5RVUFBRW9BQUFDZ0NRQUFQUUFBQUlFREFBQ0FBQUFBNndVQUFFc0FBQUErQ2dBQVJBQUFBSjREQUFDQUFBQUFUUVlBQUVzQUFBQ3FDZ0FBU3dBQUFMTURBQUNBQUFBQXdRWUFBRTBBQUFBZkRRQUFUUUFBQUZNRUFBQ0FBQUFBSXdnQUFGRUFBQUNtRHdBQVZBQUFBSmtFQUFDQUFBQUFTd2tBQUZjQUFBQ3hFZ0FBV0FBQUFOb0VBQUNBQUFBQWJ3a0FBRjBBQUFBakZBQUFWQUFBQUVVRkFBQ0FBQUFBVkFvQUFHb0FBQUNNRkFBQWFnQUFBSzhGQUFDQUFBQUFkZ2tBQUh3QUFBQk9FQUFBZkFBQUFOSUNBQUNBQUFBQVl3Y0FBSkVBQUFDUUJ3QUFrZ0FBQUFBQUFBQUJBQUFBQVFBQUFBVUFBQUFOQUFBQUhRQUFBRDBBQUFCOUFBQUEvUUFBQVAwQkFBRDlBd0FBL1FjQUFQMFBBQUQ5SHdBQS9UOEFBUDEvQUFEOS93QUEvZjhCQVAzL0F3RDkvd2NBL2Y4UEFQMy9Id0Q5L3o4QS9mOS9BUDMvL3dEOS8vOEIvZi8vQS8zLy93ZjkvLzhQL2YvL0gvMy8vei85Ly85L0FBQUFBQUVBQUFBQ0FBQUFBd0FBQUFRQUFBQUZBQUFBQmdBQUFBY0FBQUFJQUFBQUNRQUFBQW9BQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBRHdBQUFCQUFBQUFSQUFBQUVnQUFBQk1BQUFBVUFBQUFGUUFBQUJZQUFBQVhBQUFBR0FBQUFCa0FBQUFhQUFBQUd3QUFBQndBQUFBZEFBQUFIZ0FBQUI4QUFBQURBQUFBQkFBQUFBVUFBQUFHQUFBQUJ3QUFBQWdBQUFBSkFBQUFDZ0FBQUFzQUFBQU1BQUFBRFFBQUFBNEFBQUFQQUFBQUVBQUFBQkVBQUFBU0FBQUFFd0FBQUJRQUFBQVZBQUFBRmdBQUFCY0FBQUFZQUFBQUdRQUFBQm9BQUFBYkFBQUFIQUFBQUIwQUFBQWVBQUFBSHdBQUFDQUFBQUFoQUFBQUlnQUFBQ01BQUFBbEFBQUFKd0FBQUNrQUFBQXJBQUFBTHdBQUFETUFBQUE3QUFBQVF3QUFBRk1BQUFCakFBQUFnd0FBQUFNQkFBQURBZ0FBQXdRQUFBTUlBQUFERUFBQUF5QUFBQU5BQUFBRGdBQUFBd0FCQUVIZ0R3dFJBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFDQUFBQUF3QUFBQU1BQUFBRUFBQUFCQUFBQUFVQUFBQUhBQUFBQ0FBQUFBa0FBQUFLQUFBQUN3QUFBQXdBQUFBTkFBQUFEZ0FBQUE4QUFBQVFBRUhFRUF1TEFRRUFBQUFDQUFBQUF3QUFBQVFBQUFBRkFBQUFCZ0FBQUFjQUFBQUlBQUFBQ1FBQUFBb0FBQUFMQUFBQURBQUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQVNBQUFBRkFBQUFCWUFBQUFZQUFBQUhBQUFBQ0FBQUFBb0FBQUFNQUFBQUVBQUFBQ0FBQUFBQUFFQUFBQUNBQUFBQkFBQUFBZ0FBQUFRQUFBQUlBQUFBRUFBQUFDQUFBQUFBQUVBUVpBU0MrWUVBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFDQUFBQUF3QUFBQU1BQUFBRUFBQUFCZ0FBQUFjQUFBQUlBQUFBQ1FBQUFBb0FBQUFMQUFBQURBQUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQUJBQUFBQkFBQUFBZ0FBQUFBQUFBQUFRQUJBUVlBQUFBQUFBQUVBQUFBQUJBQUFBUUFBQUFBSUFBQUJRRUFBQUFBQUFBRkF3QUFBQUFBQUFVRUFBQUFBQUFBQlFZQUFBQUFBQUFGQndBQUFBQUFBQVVKQUFBQUFBQUFCUW9BQUFBQUFBQUZEQUFBQUFBQUFBWU9BQUFBQUFBQkJSQUFBQUFBQUFFRkZBQUFBQUFBQVFVV0FBQUFBQUFDQlJ3QUFBQUFBQU1GSUFBQUFBQUFCQVV3QUFBQUlBQUdCVUFBQUFBQUFBY0ZnQUFBQUFBQUNBWUFBUUFBQUFBS0JnQUVBQUFBQUF3R0FCQUFBQ0FBQUFRQUFBQUFBQUFBQkFFQUFBQUFBQUFGQWdBQUFDQUFBQVVFQUFBQUFBQUFCUVVBQUFBZ0FBQUZCd0FBQUFBQUFBVUlBQUFBSUFBQUJRb0FBQUFBQUFBRkN3QUFBQUFBQUFZTkFBQUFJQUFCQlJBQUFBQUFBQUVGRWdBQUFDQUFBUVVXQUFBQUFBQUNCUmdBQUFBZ0FBTUZJQUFBQUFBQUF3VW9BQUFBQUFBR0JFQUFBQUFRQUFZRVFBQUFBQ0FBQndXQUFBQUFBQUFKQmdBQ0FBQUFBQXNHQUFnQUFEQUFBQVFBQUFBQUVBQUFCQUVBQUFBZ0FBQUZBZ0FBQUNBQUFBVURBQUFBSUFBQUJRVUFBQUFnQUFBRkJnQUFBQ0FBQUFVSUFBQUFJQUFBQlFrQUFBQWdBQUFGQ3dBQUFDQUFBQVVNQUFBQUFBQUFCZzhBQUFBZ0FBRUZFZ0FBQUNBQUFRVVVBQUFBSUFBQ0JSZ0FBQUFnQUFJRkhBQUFBQ0FBQXdVb0FBQUFJQUFFQlRBQUFBQUFBQkFHQUFBQkFBQUFEd1lBZ0FBQUFBQU9CZ0JBQUFBQUFBMEdBQ0FBUVlBWEM0Y0NBUUFCQVFVQUFBQUFBQUFGQUFBQUFBQUFCZ1E5QUFBQUFBQUpCZjBCQUFBQUFBOEYvWDhBQUFBQUZRWDkveDhBQUFBREJRVUFBQUFBQUFjRWZRQUFBQUFBREFYOUR3QUFBQUFTQmYzL0F3QUFBQmNGL2Y5L0FBQUFCUVVkQUFBQUFBQUlCUDBBQUFBQUFBNEYvVDhBQUFBQUZBWDkvdzhBQUFBQ0JRRUFBQUFRQUFjRWZRQUFBQUFBQ3dYOUJ3QUFBQUFSQmYzL0FRQUFBQllGL2Y4L0FBQUFCQVVOQUFBQUVBQUlCUDBBQUFBQUFBMEYvUjhBQUFBQUV3WDkvd2NBQUFBQkJRRUFBQUFRQUFZRVBRQUFBQUFBQ2dYOUF3QUFBQUFRQmYzL0FBQUFBQndGL2YvL0R3QUFHd1g5Ly84SEFBQWFCZjMvL3dNQUFCa0YvZi8vQVFBQUdBWDkvLzhBUVpBWkM0WUVBUUFCQVFZQUFBQUFBQUFHQXdBQUFBQUFBQVFFQUFBQUlBQUFCUVVBQUFBQUFBQUZCZ0FBQUFBQUFBVUlBQUFBQUFBQUJRa0FBQUFBQUFBRkN3QUFBQUFBQUFZTkFBQUFBQUFBQmhBQUFBQUFBQUFHRXdBQUFBQUFBQVlXQUFBQUFBQUFCaGtBQUFBQUFBQUdIQUFBQUFBQUFBWWZBQUFBQUFBQUJpSUFBQUFBQUFFR0pRQUFBQUFBQVFZcEFBQUFBQUFDQmk4QUFBQUFBQU1HT3dBQUFBQUFCQVpUQUFBQUFBQUhCb01BQUFBQUFBa0dBd0lBQUJBQUFBUUVBQUFBQUFBQUJBVUFBQUFnQUFBRkJnQUFBQUFBQUFVSEFBQUFJQUFBQlFrQUFBQUFBQUFGQ2dBQUFBQUFBQVlNQUFBQUFBQUFCZzhBQUFBQUFBQUdFZ0FBQUFBQUFBWVZBQUFBQUFBQUJoZ0FBQUFBQUFBR0d3QUFBQUFBQUFZZUFBQUFBQUFBQmlFQUFBQUFBQUVHSXdBQUFBQUFBUVluQUFBQUFBQUNCaXNBQUFBQUFBTUdNd0FBQUFBQUJBWkRBQUFBQUFBRkJtTUFBQUFBQUFnR0F3RUFBQ0FBQUFRRUFBQUFNQUFBQkFRQUFBQVFBQUFFQlFBQUFDQUFBQVVIQUFBQUlBQUFCUWdBQUFBZ0FBQUZDZ0FBQUNBQUFBVUxBQUFBQUFBQUJnNEFBQUFBQUFBR0VRQUFBQUFBQUFZVUFBQUFBQUFBQmhjQUFBQUFBQUFHR2dBQUFBQUFBQVlkQUFBQUFBQUFCaUFBQUFBQUFCQUdBd0FCQUFBQUR3WURnQUFBQUFBT0JnTkFBQUFBQUEwR0F5QUFBQUFBREFZREVBQUFBQUFMQmdNSUFBQUFBQW9HQXdRQVFhUWRDOWtCQVFBQUFBTUFBQUFIQUFBQUR3QUFBQjhBQUFBL0FBQUFmd0FBQVA4QUFBRC9BUUFBL3dNQUFQOEhBQUQvRHdBQS94OEFBUDgvQUFEL2Z3QUEvLzhBQVAvL0FRRC8vd01BLy84SEFQLy9Ed0QvL3g4QS8vOC9BUC8vZndELy8vOEEvLy8vQWYvLy93UC8vLzhILy8vL0QvLy8veC8vLy84Ly8vLy9md0FBQUFBQkFBQUFBZ0FBQUFRQUFBQUFBQUFBQWdBQUFBUUFBQUFJQUFBQUFBQUFBQUVBQUFBQ0FBQUFBUUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQWdBQUFBSEFBQUFDQUFBQUFrQUFBQUtBQUFBQ3dCQmdCOExBNEFSQVE9PSI7dmFyIE9JPW5ldyB5QSxUST0hMTthc3luYyBmdW5jdGlvbiBjZShBLEksdCl7bGV0IGU9bnVsbDt0eXBlb2YgQSE9InN0cmluZyI/ZT1BLmhyZWY6QS5zdGFydHNXaXRoKCJodHRwIik/ZT1BOmU9YCR7SX0vJHtBfWAsZS5lbmRzV2l0aCgiLmpzIikmJihlPWUuc3Vic3RyaW5nKDAsZS5sZW5ndGgtMykpLGUuZW5kc1dpdGgoIi53YXNtIikmJihlPWUuc3Vic3RyaW5nKDAsZS5sZW5ndGgtNSkpO2xldCBnPWAke2V9Lndhc21gLHI9YXdhaXQgZEEuZ2V0KGAke2d9LnpzdGAse3Jlc3BvbnNlVHlwZToiYXJyYXlidWZmZXIiLHBhcmFtczp0fSk7VEl8fChhd2FpdCBPSS5pbml0KCksVEk9ITApO2xldCBzPU9JLmRlY29kZShuZXcgVWludDhBcnJheShyLmRhdGEpKS5idWZmZXI7cmV0dXJuKGF3YWl0IGltcG9ydChgJHtlfS5qc2ApKS5kZWZhdWx0KHt3YXNtQmluYXJ5OnN9KX12YXIgeEk9Y2U7dmFyIHdBPW5ldyBNYXA7YXN5bmMgZnVuY3Rpb24gZmUoQSxJLHQpe2xldCBlPUEsZz1BLHI9bnVsbDtyZXR1cm4gdHlwZW9mIEEhPSJzdHJpbmciJiYoZT1uZXcgVVJMKEEuaHJlZiksZz1lLmhyZWYpLHdBLmhhcyhnKT9yPWF3YWl0IHdBLmdldChnKTood0Euc2V0KGcseEkoZSxJLHQpKSxyPWF3YWl0IHdBLmdldChnKSkscn12YXIgUEk9ZmU7dmFyIGxlPXtUZXh0RmlsZToiVGV4dEZpbGUiLEJpbmFyeUZpbGU6IkJpbmFyeUZpbGUiLFRleHRTdHJlYW06IlRleHRTdHJlYW0iLEJpbmFyeVN0cmVhbToiQmluYXJ5U3RyZWFtIixJbWFnZToiSW1hZ2UiLE1lc2g6Ik1lc2giLFBvbHlEYXRhOiJQb2x5RGF0YSIsSnNvbkNvbXBhdGlibGU6Ikpzb25Db21wYXRpYmxlIn0sRD1sZTt2YXIgRGU9e0ludDg6ImludDgiLFVJbnQ4OiJ1aW50OCIsSW50MTY6ImludDE2IixVSW50MTY6InVpbnQxNiIsSW50MzI6ImludDMyIixVSW50MzI6InVpbnQzMiIsSW50NjQ6ImludDY0IixVSW50NjQ6InVpbnQ2NCIsU2l6ZVZhbHVlVHlwZToidWludDY0IixJZGVudGlmaWVyVHlwZToidWludDY0IixJbmRleFZhbHVlVHlwZToiaW50NjQiLE9mZnNldFZhbHVlVHlwZToiaW50NjQifSxwPURlO3ZhciB1ZT17RmxvYXQzMjoiZmxvYXQzMiIsRmxvYXQ2NDoiZmxvYXQ2NCIsU3BhY2VQcmVjaXNpb25UeXBlOiJmbG9hdDY0In0sUD11ZTtmdW5jdGlvbiBoZShBLEkpe2xldCB0PW51bGw7c3dpdGNoKEEpe2Nhc2UgcC5VSW50ODp7dD1uZXcgVWludDhBcnJheShJKTticmVha31jYXNlIHAuSW50ODp7dD1uZXcgSW50OEFycmF5KEkpO2JyZWFrfWNhc2UgcC5VSW50MTY6e3Q9bmV3IFVpbnQxNkFycmF5KEkpO2JyZWFrfWNhc2UgcC5JbnQxNjp7dD1uZXcgSW50MTZBcnJheShJKTticmVha31jYXNlIHAuVUludDMyOnt0PW5ldyBVaW50MzJBcnJheShJKTticmVha31jYXNlIHAuSW50MzI6e3Q9bmV3IEludDMyQXJyYXkoSSk7YnJlYWt9Y2FzZSBwLlVJbnQ2NDp7dHlwZW9mIGdsb2JhbFRoaXMuQmlnVWludDY0QXJyYXk9PSJmdW5jdGlvbiI/dD1uZXcgQmlnVWludDY0QXJyYXkoSSk6dD1uZXcgVWludDhBcnJheShJKTticmVha31jYXNlIHAuSW50NjQ6e3R5cGVvZiBnbG9iYWxUaGlzLkJpZ0ludDY0QXJyYXk9PSJmdW5jdGlvbiI/dD1uZXcgQmlnSW50NjRBcnJheShJKTp0PW5ldyBVaW50OEFycmF5KEkpO2JyZWFrfWNhc2UgUC5GbG9hdDMyOnt0PW5ldyBGbG9hdDMyQXJyYXkoSSk7YnJlYWt9Y2FzZSBQLkZsb2F0NjQ6e3Q9bmV3IEZsb2F0NjRBcnJheShJKTticmVha31jYXNlIm51bGwiOnt0PW51bGw7YnJlYWt9Y2FzZSBudWxsOnt0PW51bGw7YnJlYWt9ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlR5cGUgaXMgbm90IHN1cHBvcnRlZCBhcyBhIFR5cGVkQXJyYXkiKX1yZXR1cm4gdH12YXIgWT1oZTt2YXIgWkk9dHlwZW9mIGdsb2JhbFRoaXMuU2hhcmVkQXJyYXlCdWZmZXI9PSJmdW5jdGlvbiIsakk9bmV3IFRleHRFbmNvZGVyLFdJPW5ldyBUZXh0RGVjb2RlcigidXRmLTgiKTtmdW5jdGlvbiBkZShBLEkpe2xldCB0PXtmbGFnczoiciIsZW5jb2Rpbmc6ImJpbmFyeSJ9LGU9QS5mc19vcGVuKEksdC5mbGFncykscj1BLmZzX3N0YXQoSSkuc2l6ZSxpPW51bGw7Wkk/aT1uZXcgU2hhcmVkQXJyYXlCdWZmZXIocik6aT1uZXcgQXJyYXlCdWZmZXIocik7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoaSk7cmV0dXJuIEEuZnNfcmVhZChlLHMsMCxyLDApLEEuZnNfY2xvc2UoZSksc31mdW5jdGlvbiBWSShBLEksdCl7bGV0IGU9bnVsbDtaST9lPW5ldyBTaGFyZWRBcnJheUJ1ZmZlcih0KTplPW5ldyBBcnJheUJ1ZmZlcih0KTtsZXQgZz1uZXcgVWludDhBcnJheShlKSxyPW5ldyBVaW50OEFycmF5KEEuSEVBUFU4LmJ1ZmZlcixJLHQpO3JldHVybiBnLnNldChyKSxnfWZ1bmN0aW9uIHkoQSxJLHQsZSl7bGV0IGc9MDtyZXR1cm4gSSE9PW51bGwmJihnPUEuY2NhbGwoIml0a193YXNtX2lucHV0X2FycmF5X2FsbG9jIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHQsZSxJLmJ1ZmZlci5ieXRlTGVuZ3RoXSksQS5IRUFQVTguc2V0KG5ldyBVaW50OEFycmF5KEkuYnVmZmVyKSxnKSksZ31mdW5jdGlvbiBqKEEsSSx0KXtsZXQgZT1KU09OLnN0cmluZ2lmeShJKSxnPUEuY2NhbGwoIml0a193YXNtX2lucHV0X2pzb25fYWxsb2MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsdCxlLmxlbmd0aF0pO0Eud3JpdGVBc2NpaVRvTWVtb3J5KGUsZywhMSl9ZnVuY3Rpb24gUyhBLEksdCxlKXtsZXQgZz1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxJLHRdKSxyPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEksdF0pLGk9VkkoQSxnLHIpO3JldHVybiBZKGUsaS5idWZmZXIpfWZ1bmN0aW9uIHpBKEEsSSl7bGV0IHQ9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2pzb25fYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiXSxbMCxJXSksZT1BLkFzY2lpVG9TdHJpbmcodCk7cmV0dXJuIEpTT04ucGFyc2UoZSl9ZnVuY3Rpb24geWUoQSxJLHQsZSl7ZSE9bnVsbCYmZS5sZW5ndGg+MCYmZS5mb3JFYWNoKGZ1bmN0aW9uKG4sQyl7c3dpdGNoKG4udHlwZSl7Y2FzZSBELlRleHRTdHJlYW06e2xldCBvPWpJLmVuY29kZShuLmRhdGEuZGF0YSksZj15KEEsbyxDLDApLFE9e3NpemU6by5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gfTtqKEEsUSxDKTticmVha31jYXNlIEQuSnNvbkNvbXBhdGlibGU6e2xldCBvPWpJLmVuY29kZShKU09OLnN0cmluZ2lmeShuLmRhdGEpKSxmPXkoQSxvLEMsMCksUT17c2l6ZTpvLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWB9O2ooQSxRLEMpO2JyZWFrfWNhc2UgRC5CaW5hcnlTdHJlYW06e2xldCBvPW4uZGF0YS5kYXRhLGY9eShBLG8sQywwKSxRPXtzaXplOm8uYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YH07aihBLFEsQyk7YnJlYWt9Y2FzZSBELlRleHRGaWxlOntBLmZzX3dyaXRlRmlsZShuLmRhdGEucGF0aCxuLmRhdGEuZGF0YSk7YnJlYWt9Y2FzZSBELkJpbmFyeUZpbGU6e0EuZnNfd3JpdGVGaWxlKG4uZGF0YS5wYXRoLG4uZGF0YS5kYXRhKTticmVha31jYXNlIEQuSW1hZ2U6e2xldCBvPW4uZGF0YSxmPXkoQSxvLmRhdGEsQywwKSxRPXkoQSxvLmRpcmVjdGlvbixDLDEpLEU9dHlwZW9mIG8ubWV0YWRhdGE/LmVudHJpZXM8InUiP0pTT04uc3RyaW5naWZ5KEFycmF5LmZyb20oby5tZXRhZGF0YS5lbnRyaWVzKCkpKToiW10iLGM9e2ltYWdlVHlwZTpvLmltYWdlVHlwZSxuYW1lOm8ubmFtZSxvcmlnaW46by5vcmlnaW4sc3BhY2luZzpvLnNwYWNpbmcsZGlyZWN0aW9uOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7UX1gLHNpemU6by5zaXplLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWAsbWV0YWRhdGE6RX07aihBLGMsQyk7YnJlYWt9Y2FzZSBELk1lc2g6e2xldCBvPW4uZGF0YSxmPXkoQSxvLnBvaW50cyxDLDApLFE9eShBLG8uY2VsbHMsQywxKSxFPXkoQSxvLnBvaW50RGF0YSxDLDIpLGM9eShBLG8uY2VsbERhdGEsQywzKSx1PXttZXNoVHlwZTpvLm1lc2hUeXBlLG5hbWU6by5uYW1lLG51bWJlck9mUG9pbnRzOm8ubnVtYmVyT2ZQb2ludHMscG9pbnRzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gLG51bWJlck9mQ2VsbHM6by5udW1iZXJPZkNlbGxzLGNlbGxzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7UX1gLGNlbGxCdWZmZXJTaXplOm8uY2VsbEJ1ZmZlclNpemUsbnVtYmVyT2ZQb2ludFBpeGVsczpvLm51bWJlck9mUG9pbnRQaXhlbHMscG9pbnREYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7RX1gLG51bWJlck9mQ2VsbFBpeGVsczpvLm51bWJlck9mQ2VsbFBpeGVscyxjZWxsRGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2N9YH07aihBLHUsQyk7YnJlYWt9Y2FzZSBELlBvbHlEYXRhOntsZXQgbz1uLmRhdGEsZj15KEEsby5wb2ludHMsQywwKSxRPXkoQSxvLnZlcnRpY2VzLEMsMSksRT15KEEsby5saW5lcyxDLDIpLGM9eShBLG8ucG9seWdvbnMsQywzKSx1PXkoQSxvLnRyaWFuZ2xlU3RyaXBzLEMsNCksZD15KEEsby5wb2ludERhdGEsQyw1KSxSPXkoQSxvLnBvaW50RGF0YSxDLDYpLE49e3BvbHlEYXRhVHlwZTpvLnBvbHlEYXRhVHlwZSxuYW1lOm8ubmFtZSxudW1iZXJPZlBvaW50czpvLm51bWJlck9mUG9pbnRzLHBvaW50czpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YCx2ZXJ0aWNlc0J1ZmZlclNpemU6by52ZXJ0aWNlc0J1ZmZlclNpemUsdmVydGljZXM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWAsbGluZXNCdWZmZXJTaXplOm8ubGluZXNCdWZmZXJTaXplLGxpbmVzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7RX1gLHBvbHlnb25zQnVmZmVyU2l6ZTpvLnBvbHlnb25zQnVmZmVyU2l6ZSxwb2x5Z29uczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2N9YCx0cmlhbmdsZVN0cmlwc0J1ZmZlclNpemU6by50cmlhbmdsZVN0cmlwc0J1ZmZlclNpemUsdHJpYW5nbGVTdHJpcHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHt1fWAsbnVtYmVyT2ZQb2ludFBpeGVsczpvLm51bWJlck9mUG9pbnRQaXhlbHMscG9pbnREYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7ZH1gLG51bWJlck9mQ2VsbFBpeGVsczpvLm51bWJlck9mQ2VsbFBpeGVscyxjZWxsRGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1J9YH07aihBLE4sQyk7YnJlYWt9ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5zdXBwb3J0ZWQgaW5wdXQgSW50ZXJmYWNlVHlwZSIpfX0pLEEucmVzZXRNb2R1bGVTdGRvdXQoKSxBLnJlc2V0TW9kdWxlU3RkZXJyKCk7bGV0IGc9QS5zdGFja1NhdmUoKSxyPTA7dHJ5e3I9QS5jYWxsTWFpbihJLnNsaWNlKCkpfWNhdGNoKG4pe3Rocm93IHR5cGVvZiBuPT0ibnVtYmVyIiYmKGNvbnNvbGUubG9nKCJFeGNlcHRpb24gd2hpbGUgcnVubmluZyBwaXBlbGluZToiKSxjb25zb2xlLmxvZygic3Rkb3V0OiIsQS5nZXRNb2R1bGVTdGRvdXQoKSksY29uc29sZS5lcnJvcigic3RkZXJyOiIsQS5nZXRNb2R1bGVTdGRlcnIoKSksdHlwZW9mIEEuZ2V0RXhjZXB0aW9uTWVzc2FnZTwidSI/Y29uc29sZS5lcnJvcigiZXhjZXB0aW9uOiIsQS5nZXRFeGNlcHRpb25NZXNzYWdlKG4pKTpjb25zb2xlLmVycm9yKCJCdWlsZCBtb2R1bGUgaW4gRGVidWcgbW9kZSBmb3IgZXhjZXB0aW9uIG1lc3NhZ2UgaW5mb3JtYXRpb24uIikpLG59ZmluYWxseXtBLnN0YWNrUmVzdG9yZShnKX1sZXQgaT1BLmdldE1vZHVsZVN0ZG91dCgpLHM9QS5nZXRNb2R1bGVTdGRlcnIoKSxhPVtdO3JldHVybiB0IT1udWxsJiZ0Lmxlbmd0aD4wJiZyPT09MCYmdC5mb3JFYWNoKGZ1bmN0aW9uKG4sQyl7bGV0IG89bnVsbDtzd2l0Y2gobi50eXBlKXtjYXNlIEQuVGV4dFN0cmVhbTp7bGV0IFE9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQywwXSksRT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxDLDBdKSxjPW5ldyBVaW50OEFycmF5KEEuSEVBUFU4LmJ1ZmZlcixRLEUpO289e2RhdGE6V0kuZGVjb2RlKGMpfTticmVha31jYXNlIEQuSnNvbkNvbXBhdGlibGU6e2xldCBRPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEMsMF0pLEU9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQywwXSksYz1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsUSxFKTtvPUpTT04ucGFyc2UoV0kuZGVjb2RlKGMpKTticmVha31jYXNlIEQuQmluYXJ5U3RyZWFtOntsZXQgUT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxDLDBdKSxFPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEMsMF0pO289e2RhdGE6VkkoQSxRLEUpfTticmVha31jYXNlIEQuVGV4dEZpbGU6e289e3BhdGg6bi5kYXRhLnBhdGgsZGF0YTpBLmZzX3JlYWRGaWxlKG4uZGF0YS5wYXRoLHtlbmNvZGluZzoidXRmOCJ9KX07YnJlYWt9Y2FzZSBELkJpbmFyeUZpbGU6e289e3BhdGg6bi5kYXRhLnBhdGgsZGF0YTpkZShBLG4uZGF0YS5wYXRoKX07YnJlYWt9Y2FzZSBELkltYWdlOntsZXQgUT16QShBLEMpO1EuZGF0YT1TKEEsQywwLFEuaW1hZ2VUeXBlLmNvbXBvbmVudFR5cGUpLFEuZGlyZWN0aW9uPVMoQSxDLDEsUC5GbG9hdDY0KSxRLm1ldGFkYXRhPW5ldyBNYXAoUS5tZXRhZGF0YSksbz1RO2JyZWFrfWNhc2UgRC5NZXNoOntsZXQgUT16QShBLEMpO1EubnVtYmVyT2ZQb2ludHM+MD9RLnBvaW50cz1TKEEsQywwLFEubWVzaFR5cGUucG9pbnRDb21wb25lbnRUeXBlKTpRLnBvaW50cz1ZKFEubWVzaFR5cGUucG9pbnRDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksUS5udW1iZXJPZkNlbGxzPjA/US5jZWxscz1TKEEsQywxLFEubWVzaFR5cGUuY2VsbENvbXBvbmVudFR5cGUpOlEuY2VsbHM9WShRLm1lc2hUeXBlLmNlbGxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksUS5udW1iZXJPZlBvaW50UGl4ZWxzPjA/US5wb2ludERhdGE9UyhBLEMsMixRLm1lc2hUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlKTpRLnBvaW50RGF0YT1ZKFEubWVzaFR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxRLm51bWJlck9mQ2VsbFBpeGVscz4wP1EuY2VsbERhdGE9UyhBLEMsMyxRLm1lc2hUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUpOlEuY2VsbERhdGE9WShRLm1lc2hUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxvPVE7YnJlYWt9Y2FzZSBELlBvbHlEYXRhOntsZXQgUT16QShBLEMpO1EubnVtYmVyT2ZQb2ludHM+MD9RLnBvaW50cz1TKEEsQywwLFAuRmxvYXQzMik6US5wb2ludHM9bmV3IEZsb2F0MzJBcnJheSxRLnZlcnRpY2VzQnVmZmVyU2l6ZT4wP1EudmVydGljZXM9UyhBLEMsMSxwLlVJbnQzMik6US52ZXJ0aWNlcz1uZXcgVWludDMyQXJyYXksUS5saW5lc0J1ZmZlclNpemU+MD9RLmxpbmVzPVMoQSxDLDIscC5VSW50MzIpOlEubGluZXM9bmV3IFVpbnQzMkFycmF5LFEucG9seWdvbnNCdWZmZXJTaXplPjA/US5wb2x5Z29ucz1TKEEsQywzLHAuVUludDMyKTpRLnBvbHlnb25zPW5ldyBVaW50MzJBcnJheSxRLnRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZT4wP1EudHJpYW5nbGVTdHJpcHM9UyhBLEMsNCxwLlVJbnQzMik6US50cmlhbmdsZVN0cmlwcz1uZXcgVWludDMyQXJyYXksUS5udW1iZXJPZlBvaW50UGl4ZWxzPjA/US5wb2ludERhdGE9UyhBLEMsNSxRLnBvbHlEYXRhVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSk6US5wb2ludERhdGE9WShRLnBvbHlEYXRhVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLFEubnVtYmVyT2ZDZWxsUGl4ZWxzPjA/US5jZWxsRGF0YT1TKEEsQyw2LFEucG9seURhdGFUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUpOlEuY2VsbERhdGE9WShRLnBvbHlEYXRhVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksbz1RO2JyZWFrfWRlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuc3VwcG9ydGVkIG91dHB1dCBJbnRlcmZhY2VUeXBlIil9bGV0IGY9e3R5cGU6bi50eXBlLGRhdGE6b307YS5wdXNoKGYpfSkse3JldHVyblZhbHVlOnIsc3Rkb3V0Omksc3RkZXJyOnMsb3V0cHV0czphfX12YXIgWEk9eWU7dmFyIHdlPXR5cGVvZiBnbG9iYWxUaGlzLlNoYXJlZEFycmF5QnVmZmVyPCJ1IjtmdW5jdGlvbiBtZShBLEkpe2lmKEE9PW51bGwpcmV0dXJuW107bGV0IHQ9W107Zm9yKGxldCBlPTA7ZTxBLmxlbmd0aDtlKyspe2xldCBnPXBlKEFbZV0sSSk7ZyE9PW51bGwmJnQucHVzaChnKX1yZXR1cm4gdH1mdW5jdGlvbiBwZShBLEkpe2lmKEE9PW51bGwpcmV0dXJuIG51bGw7bGV0IHQ9bnVsbDtyZXR1cm4gQS5idWZmZXIhPT12b2lkIDA/dD1BLmJ1ZmZlcjpBLmJ5dGVMZW5ndGghPT12b2lkIDAmJih0PUEpLHdlJiZ0IGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXI/bnVsbDpJP3Q6dC5zbGljZSgwKX12YXIgekk9bWU7ZnVuY3Rpb24gU2UoQSl7cmV0dXJuW0EuZGF0YSxBLmRpcmVjdGlvbl19dmFyIF9JPVNlO2Z1bmN0aW9uIEZlKEEpe3JldHVybltBLnBvaW50cyxBLnBvaW50RGF0YSxBLmNlbGxzLEEuY2VsbERhdGFdfXZhciB2ST1GZTtmdW5jdGlvbiBSZShBKXtyZXR1cm5bQS5wb2ludHMsQS52ZXJ0aWNlcyxBLmxpbmVzLEEucG9seWdvbnMsQS50cmlhbmdsZVN0cmlwcyxBLnBvaW50RGF0YSxBLmNlbGxEYXRhXX12YXIgJEk9UmU7YXN5bmMgZnVuY3Rpb24gTmUoQSxJLHQsZSl7bGV0IGc9WEkoQSxJLHQsZSkscj1bXTtyZXR1cm4gZy5vdXRwdXRzLmZvckVhY2goZnVuY3Rpb24oaSl7aWYoaS50eXBlPT09RC5CaW5hcnlTdHJlYW18fGkudHlwZT09PUQuQmluYXJ5RmlsZSl7bGV0IHM9aS5kYXRhO3IucHVzaChzKX1lbHNlIGlmKGkudHlwZT09PUQuSW1hZ2Upe2xldCBzPWkuZGF0YTtyLnB1c2goLi4uX0kocykpfWVsc2UgaWYoaS50eXBlPT09RC5NZXNoKXtsZXQgcz1pLmRhdGE7ci5wdXNoKC4uLnZJKHMpKX1lbHNlIGlmKGkudHlwZT09PUQuUG9seURhdGEpe2xldCBzPWkuZGF0YTtyLnB1c2goLi4uJEkocykpfX0pLFNBKGcsekkociwhMCkpfXZhciBBdD1OZTt2YXIgVWU9e3J1blBpcGVsaW5lOmFzeW5jIGZ1bmN0aW9uKEEsSSx0LGUsZyxyKXtsZXQgaT1hd2FpdCBQSShBLEkscik7cmV0dXJuIGF3YWl0IEF0KGksdCxlLGcpfX07b0EoVWUpOyUwQS8qISBCdW5kbGVkIGxpY2Vuc2UgaW5mb3JtYXRpb246JTBBJTBBY29tbGluay9kaXN0L2VzbS9jb21saW5rLm1qczolMEEgICgqKiUwQSAgICogQGxpY2Vuc2UlMEEgICAqIENvcHlyaWdodCAyMDE5IEdvb2dsZSBMTEMlMEEgICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wJTBBICAgKiklMEEqLyUwQSc7bXQod3QpO2V4cG9ydHtCaSBhcyBhcHBseVByZXNlbnRhdGlvblN0YXRlVG9JbWFnZSxKIGFzIGdldERlZmF1bHRXZWJXb3JrZXIsRiBhcyBnZXRQaXBlbGluZVdvcmtlclVybCxOIGFzIGdldFBpcGVsaW5lc0Jhc2VVcmwsY2kgYXMgcmVhZERpY29tRW5jYXBzdWxhdGVkUGRmLGRpIGFzIHJlYWREaWNvbVRhZ3Msd2kgYXMgcmVhZEltYWdlRGljb21GaWxlU2VyaWVzLGdlIGFzIHJlYWRJbWFnZURpY29tRmlsZVNlcmllc1dvcmtlckZ1bmN0aW9uLFdzIGFzIHNldERlZmF1bHRXZWJXb3JrZXIsbXQgYXMgc2V0UGlwZWxpbmVXb3JrZXJVcmwsUHMgYXMgc2V0UGlwZWxpbmVzQmFzZVVybCxFaSBhcyBzdHJ1Y3R1cmVkUmVwb3J0VG9IdG1sLGZpIGFzIHN0cnVjdHVyZWRSZXBvcnRUb1RleHQsa0EgYXMgdmVyc2lvbn07Ci8qISBCdW5kbGVkIGxpY2Vuc2UgaW5mb3JtYXRpb246Cgpjb21saW5rL2Rpc3QvZXNtL2NvbWxpbmsubWpzOgogICgqKgogICAqIEBsaWNlbnNlCiAgICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIExMQwogICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wCiAgICopCiovCg==""" default_config = JsPackageConfig(default_js_module) js_package = JsPackage(default_config) diff --git a/packages/dicom/python/itkwasm-dicom-wasi/itkwasm_dicom_wasi/wasm_modules/apply-presentation-state-to-image.wasi.wasm b/packages/dicom/python/itkwasm-dicom-wasi/itkwasm_dicom_wasi/wasm_modules/apply-presentation-state-to-image.wasi.wasm index 97fd086c45ca135048608246900b6ed8d3a8484a..ce8c230ad87e738de3f472c4ce616334997f8a9c 100755 GIT binary patch delta 99769 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 delta 100293 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⪙) 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 iZgAbhaU!}Wpd3)fFyIJE!F$^QY3^@m6R diff --git a/packages/dicom/python/itkwasm-dicom-wasi/itkwasm_dicom_wasi/wasm_modules/read-dicom-encapsulated-pdf.wasi.wasm b/packages/dicom/python/itkwasm-dicom-wasi/itkwasm_dicom_wasi/wasm_modules/read-dicom-encapsulated-pdf.wasi.wasm index 3d031b26005782fe7900cb2be1e1b30c0554b84a..76397eb9b5508e12c990d15526e17c7a8c220309 100755 GIT binary patch delta 179 zcmWN=ISRr+06(dXAjJ z|KNSA#8%1cZN%qXnzS^64kZ=qY_MrdqfZxcv)iZsN$Cmq5obCKWNmXjuHB`I)XLG3 riiL0YnLY?1(<0Ywu}zmAJM`IQk9`gpaL5tIoG|2+GtO<1FYdcPNAgKW delta 207 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

` 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 BlXn0B delta 368 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 Z+1UrZKpv0}Fkm5204!3^KDb!P{~s2x^vwVO diff --git a/packages/downsample/python/itkwasm-downsample-emscripten/itkwasm_downsample_emscripten/js_package.py b/packages/downsample/python/itkwasm-downsample-emscripten/itkwasm_downsample_emscripten/js_package.py index 89af96924..86d023562 100644 --- a/packages/downsample/python/itkwasm-downsample-emscripten/itkwasm_downsample_emscripten/js_package.py +++ b/packages/downsample/python/itkwasm-downsample-emscripten/itkwasm_downsample_emscripten/js_package.py @@ -3,6 +3,6 @@ from itkwasm.pyodide import JsPackageConfig, JsPackage from ._version import __version__ -default_js_module = """data:text/javascript;base64,dmFyIFF0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgY3Q9KEEsZSk9Pntmb3IodmFyIHQgaW4gZSlRdChBLHQse2dldDplW3RdLGVudW1lcmFibGU6ITB9KX07dmFyIHV0PSIxLjEuMSIsUkE9dXQ7dmFyIGZ0PXtJbnQ4OiJpbnQ4IixVSW50ODoidWludDgiLEludDE2OiJpbnQxNiIsVUludDE2OiJ1aW50MTYiLEludDMyOiJpbnQzMiIsVUludDMyOiJ1aW50MzIiLEludDY0OiJpbnQ2NCIsVUludDY0OiJ1aW50NjQiLFNpemVWYWx1ZVR5cGU6InVpbnQ2NCIsSWRlbnRpZmllclR5cGU6InVpbnQ2NCIsSW5kZXhWYWx1ZVR5cGU6ImludDY0IixPZmZzZXRWYWx1ZVR5cGU6ImludDY0In0sRD1mdDt2YXIgcHQ9e0Zsb2F0MzI6ImZsb2F0MzIiLEZsb2F0NjQ6ImZsb2F0NjQiLFNwYWNlUHJlY2lzaW9uVHlwZToiZmxvYXQ2NCJ9LE09cHQ7ZnVuY3Rpb24gZHQoQSxlKXtsZXQgdD1udWxsO3N3aXRjaChBKXtjYXNlIEQuVUludDg6e3Q9bmV3IFVpbnQ4QXJyYXkoZSk7YnJlYWt9Y2FzZSBELkludDg6e3Q9bmV3IEludDhBcnJheShlKTticmVha31jYXNlIEQuVUludDE2Ont0PW5ldyBVaW50MTZBcnJheShlKTticmVha31jYXNlIEQuSW50MTY6e3Q9bmV3IEludDE2QXJyYXkoZSk7YnJlYWt9Y2FzZSBELlVJbnQzMjp7dD1uZXcgVWludDMyQXJyYXkoZSk7YnJlYWt9Y2FzZSBELkludDMyOnt0PW5ldyBJbnQzMkFycmF5KGUpO2JyZWFrfWNhc2UgRC5VSW50NjQ6e3R5cGVvZiBnbG9iYWxUaGlzLkJpZ1VpbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ1VpbnQ2NEFycmF5KGUpOnQ9bmV3IFVpbnQ4QXJyYXkoZSk7YnJlYWt9Y2FzZSBELkludDY0Ont0eXBlb2YgZ2xvYmFsVGhpcy5CaWdJbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ0ludDY0QXJyYXkoZSk6dD1uZXcgVWludDhBcnJheShlKTticmVha31jYXNlIE0uRmxvYXQzMjp7dD1uZXcgRmxvYXQzMkFycmF5KGUpO2JyZWFrfWNhc2UgTS5GbG9hdDY0Ont0PW5ldyBGbG9hdDY0QXJyYXkoZSk7YnJlYWt9Y2FzZSJudWxsIjp7dD1udWxsO2JyZWFrfWNhc2UgbnVsbDp7dD1udWxsO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlIGlzIG5vdCBzdXBwb3J0ZWQgYXMgYSBUeXBlZEFycmF5Iil9cmV0dXJuIHR9dmFyIFA9ZHQ7dmFyIG10PXtUZXh0RmlsZToiVGV4dEZpbGUiLEJpbmFyeUZpbGU6IkJpbmFyeUZpbGUiLFRleHRTdHJlYW06IlRleHRTdHJlYW0iLEJpbmFyeVN0cmVhbToiQmluYXJ5U3RyZWFtIixJbWFnZToiSW1hZ2UiLE1lc2g6Ik1lc2giLFBvbHlEYXRhOiJQb2x5RGF0YSIsSnNvbkNvbXBhdGlibGU6Ikpzb25Db21wYXRpYmxlIn0sZj1tdDt2YXIgb2U9U3ltYm9sKCJDb21saW5rLnByb3h5IiksaHQ9U3ltYm9sKCJDb21saW5rLmVuZHBvaW50IiksVUE9U3ltYm9sKCJDb21saW5rLnJlbGVhc2VQcm94eSIpLEZBPVN5bWJvbCgiQ29tbGluay5maW5hbGl6ZXIiKSxzQT1TeW1ib2woIkNvbWxpbmsudGhyb3duIiksYWU9QT0+dHlwZW9mIEE9PSJvYmplY3QiJiZBIT09bnVsbHx8dHlwZW9mIEE9PSJmdW5jdGlvbiIseXQ9e2NhbkhhbmRsZTpBPT5hZShBKSYmQVtvZV0sc2VyaWFsaXplKEEpe2xldHtwb3J0MTplLHBvcnQyOnR9PW5ldyBNZXNzYWdlQ2hhbm5lbDtyZXR1cm4gSWUoQSxlKSxbdCxbdF1dfSxkZXNlcmlhbGl6ZShBKXtyZXR1cm4gQS5zdGFydCgpLE5BKEEpfX0sd3Q9e2NhbkhhbmRsZTpBPT5hZShBKSYmc0EgaW4gQSxzZXJpYWxpemUoe3ZhbHVlOkF9KXtsZXQgZTtyZXR1cm4gQSBpbnN0YW5jZW9mIEVycm9yP2U9e2lzRXJyb3I6ITAsdmFsdWU6e21lc3NhZ2U6QS5tZXNzYWdlLG5hbWU6QS5uYW1lLHN0YWNrOkEuc3RhY2t9fTplPXtpc0Vycm9yOiExLHZhbHVlOkF9LFtlLFtdXX0sZGVzZXJpYWxpemUoQSl7dGhyb3cgQS5pc0Vycm9yP09iamVjdC5hc3NpZ24obmV3IEVycm9yKEEudmFsdWUubWVzc2FnZSksQS52YWx1ZSk6QS52YWx1ZX19LHNlPW5ldyBNYXAoW1sicHJveHkiLHl0XSxbInRocm93Iix3dF1dKTtmdW5jdGlvbiBEdChBLGUpe2ZvcihsZXQgdCBvZiBBKWlmKGU9PT10fHx0PT09IioifHx0IGluc3RhbmNlb2YgUmVnRXhwJiZ0LnRlc3QoZSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gSWUoQSxlPWdsb2JhbFRoaXMsdD1bIioiXSl7ZS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiByKG4pe2lmKCFufHwhbi5kYXRhKXJldHVybjtpZighRHQodCxuLm9yaWdpbikpe2NvbnNvbGUud2FybihgSW52YWxpZCBvcmlnaW4gJyR7bi5vcmlnaW59JyBmb3IgY29tbGluayBwcm94eWApO3JldHVybn1sZXR7aWQ6aSx0eXBlOm8scGF0aDpnfT1PYmplY3QuYXNzaWduKHtwYXRoOltdfSxuLmRhdGEpLGw9KG4uZGF0YS5hcmd1bWVudExpc3R8fFtdKS5tYXAoSCksQzt0cnl7bGV0IEk9Zy5zbGljZSgwLC0xKS5yZWR1Y2UoKFEsQik9PlFbQl0sQSksYT1nLnJlZHVjZSgoUSxCKT0+UVtCXSxBKTtzd2l0Y2gobyl7Y2FzZSJHRVQiOkM9YTticmVhaztjYXNlIlNFVCI6SVtnLnNsaWNlKC0xKVswXV09SChuLmRhdGEudmFsdWUpLEM9ITA7YnJlYWs7Y2FzZSJBUFBMWSI6Qz1hLmFwcGx5KEksbCk7YnJlYWs7Y2FzZSJDT05TVFJVQ1QiOntsZXQgUT1uZXcgYSguLi5sKTtDPWJ0KFEpfWJyZWFrO2Nhc2UiRU5EUE9JTlQiOntsZXR7cG9ydDE6USxwb3J0MjpCfT1uZXcgTWVzc2FnZUNoYW5uZWw7SWUoQSxCKSxDPUdBKFEsW1FdKX1icmVhaztjYXNlIlJFTEVBU0UiOkM9dm9pZCAwO2JyZWFrO2RlZmF1bHQ6cmV0dXJufX1jYXRjaChJKXtDPXt2YWx1ZTpJLFtzQV06MH19UHJvbWlzZS5yZXNvbHZlKEMpLmNhdGNoKEk9Pih7dmFsdWU6SSxbc0FdOjB9KSkudGhlbihJPT57bGV0W2EsUV09QkEoSSk7ZS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYSkse2lkOml9KSxRKSxvPT09IlJFTEVBU0UiJiYoZS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixyKSxnZShlKSxGQSBpbiBBJiZ0eXBlb2YgQVtGQV09PSJmdW5jdGlvbiImJkFbRkFdKCkpfSkuY2F0Y2goST0+e2xldFthLFFdPUJBKHt2YWx1ZTpuZXcgVHlwZUVycm9yKCJVbnNlcmlhbGl6YWJsZSByZXR1cm4gdmFsdWUiKSxbc0FdOjB9KTtlLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhKSx7aWQ6aX0pLFEpfSl9KSxlLnN0YXJ0JiZlLnN0YXJ0KCl9ZnVuY3Rpb24gU3QoQSl7cmV0dXJuIEEuY29uc3RydWN0b3IubmFtZT09PSJNZXNzYWdlUG9ydCJ9ZnVuY3Rpb24gZ2UoQSl7U3QoQSkmJkEuY2xvc2UoKX1mdW5jdGlvbiBOQShBLGUpe3JldHVybiBiQShBLFtdLGUpfWZ1bmN0aW9uIGFBKEEpe2lmKEEpdGhyb3cgbmV3IEVycm9yKCJQcm94eSBoYXMgYmVlbiByZWxlYXNlZCBhbmQgaXMgbm90IHVzZWFibGUiKX1mdW5jdGlvbiBCZShBKXtyZXR1cm4gWShBLHt0eXBlOiJSRUxFQVNFIn0pLnRoZW4oKCk9PntnZShBKX0pfXZhciBJQT1uZXcgV2Vha01hcCxnQT0iRmluYWxpemF0aW9uUmVnaXN0cnkiaW4gZ2xvYmFsVGhpcyYmbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KEE9PntsZXQgZT0oSUEuZ2V0KEEpfHwwKS0xO0lBLnNldChBLGUpLGU9PT0wJiZCZShBKX0pO2Z1bmN0aW9uIGt0KEEsZSl7bGV0IHQ9KElBLmdldChlKXx8MCkrMTtJQS5zZXQoZSx0KSxnQSYmZ0EucmVnaXN0ZXIoQSxlLEEpfWZ1bmN0aW9uIFJ0KEEpe2dBJiZnQS51bnJlZ2lzdGVyKEEpfWZ1bmN0aW9uIGJBKEEsZT1bXSx0PWZ1bmN0aW9uKCl7fSl7bGV0IHI9ITEsbj1uZXcgUHJveHkodCx7Z2V0KGksbyl7aWYoYUEociksbz09PVVBKXJldHVybigpPT57UnQobiksQmUoQSkscj0hMH07aWYobz09PSJ0aGVuIil7aWYoZS5sZW5ndGg9PT0wKXJldHVybnt0aGVuOigpPT5ufTtsZXQgZz1ZKEEse3R5cGU6IkdFVCIscGF0aDplLm1hcChsPT5sLnRvU3RyaW5nKCkpfSkudGhlbihIKTtyZXR1cm4gZy50aGVuLmJpbmQoZyl9cmV0dXJuIGJBKEEsWy4uLmUsb10pfSxzZXQoaSxvLGcpe2FBKHIpO2xldFtsLENdPUJBKGcpO3JldHVybiBZKEEse3R5cGU6IlNFVCIscGF0aDpbLi4uZSxvXS5tYXAoST0+SS50b1N0cmluZygpKSx2YWx1ZTpsfSxDKS50aGVuKEgpfSxhcHBseShpLG8sZyl7YUEocik7bGV0IGw9ZVtlLmxlbmd0aC0xXTtpZihsPT09aHQpcmV0dXJuIFkoQSx7dHlwZToiRU5EUE9JTlQifSkudGhlbihIKTtpZihsPT09ImJpbmQiKXJldHVybiBiQShBLGUuc2xpY2UoMCwtMSkpO2xldFtDLEldPWllKGcpO3JldHVybiBZKEEse3R5cGU6IkFQUExZIixwYXRoOmUubWFwKGE9PmEudG9TdHJpbmcoKSksYXJndW1lbnRMaXN0OkN9LEkpLnRoZW4oSCl9LGNvbnN0cnVjdChpLG8pe2FBKHIpO2xldFtnLGxdPWllKG8pO3JldHVybiBZKEEse3R5cGU6IkNPTlNUUlVDVCIscGF0aDplLm1hcChDPT5DLnRvU3RyaW5nKCkpLGFyZ3VtZW50TGlzdDpnfSxsKS50aGVuKEgpfX0pO3JldHVybiBrdChuLEEpLG59ZnVuY3Rpb24gRnQoQSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sQSl9ZnVuY3Rpb24gaWUoQSl7bGV0IGU9QS5tYXAoQkEpO3JldHVybltlLm1hcCh0PT50WzBdKSxGdChlLm1hcCh0PT50WzFdKSldfXZhciBDZT1uZXcgV2Vha01hcDtmdW5jdGlvbiBHQShBLGUpe3JldHVybiBDZS5zZXQoQSxlKSxBfWZ1bmN0aW9uIGJ0KEEpe3JldHVybiBPYmplY3QuYXNzaWduKEEse1tvZV06ITB9KX1mdW5jdGlvbiBCQShBKXtmb3IobGV0W2UsdF1vZiBzZSlpZih0LmNhbkhhbmRsZShBKSl7bGV0W3Isbl09dC5zZXJpYWxpemUoQSk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmUsdmFsdWU6cn0sbl19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOkF9LENlLmdldChBKXx8W11dfWZ1bmN0aW9uIEgoQSl7c3dpdGNoKEEudHlwZSl7Y2FzZSJIQU5ETEVSIjpyZXR1cm4gc2UuZ2V0KEEubmFtZSkuZGVzZXJpYWxpemUoQS52YWx1ZSk7Y2FzZSJSQVciOnJldHVybiBBLnZhbHVlfX1mdW5jdGlvbiBZKEEsZSx0KXtyZXR1cm4gbmV3IFByb21pc2Uocj0+e2xldCBuPVV0KCk7QS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiBpKG8peyFvLmRhdGF8fCFvLmRhdGEuaWR8fG8uZGF0YS5pZCE9PW58fChBLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGkpLHIoby5kYXRhKSl9KSxBLnN0YXJ0JiZBLnN0YXJ0KCksQS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKHtpZDpufSxlKSx0KX0pfWZ1bmN0aW9uIFV0KCl7cmV0dXJuIG5ldyBBcnJheSg0KS5maWxsKDApLm1hcCgoKT0+TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKk51bWJlci5NQVhfU0FGRV9JTlRFR0VSKS50b1N0cmluZygxNikpLmpvaW4oIi0iKX1mdW5jdGlvbiBaKEEsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEEuYXBwbHkoZSxhcmd1bWVudHMpfX12YXJ7dG9TdHJpbmc6TnR9PU9iamVjdC5wcm90b3R5cGUse2dldFByb3RvdHlwZU9mOlBBfT1PYmplY3QsbEE9KEE9PmU9PntsZXQgdD1OdC5jYWxsKGUpO3JldHVybiBBW3RdfHwoQVt0XT10LnNsaWNlKDgsLTEpLnRvTG93ZXJDYXNlKCkpfSkoT2JqZWN0LmNyZWF0ZShudWxsKSksTj1BPT4oQT1BLnRvTG93ZXJDYXNlKCksZT0+bEEoZSk9PT1BKSxFQT1BPT5lPT50eXBlb2YgZT09PUEse2lzQXJyYXk6cX09QXJyYXksWD1FQSgidW5kZWZpbmVkIik7ZnVuY3Rpb24gR3QoQSl7cmV0dXJuIEEhPT1udWxsJiYhWChBKSYmQS5jb25zdHJ1Y3RvciE9PW51bGwmJiFYKEEuY29uc3RydWN0b3IpJiZrKEEuY29uc3RydWN0b3IuaXNCdWZmZXIpJiZBLmNvbnN0cnVjdG9yLmlzQnVmZmVyKEEpfXZhciBjZT1OKCJBcnJheUJ1ZmZlciIpO2Z1bmN0aW9uIEx0KEEpe2xldCBlO3JldHVybiB0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZBcnJheUJ1ZmZlci5pc1ZpZXc/ZT1BcnJheUJ1ZmZlci5pc1ZpZXcoQSk6ZT1BJiZBLmJ1ZmZlciYmY2UoQS5idWZmZXIpLGV9dmFyIE90PUVBKCJzdHJpbmciKSxrPUVBKCJmdW5jdGlvbiIpLHVlPUVBKCJudW1iZXIiKSxRQT1BPT5BIT09bnVsbCYmdHlwZW9mIEE9PSJvYmplY3QiLFB0PUE9PkE9PT0hMHx8QT09PSExLENBPUE9PntpZihsQShBKSE9PSJvYmplY3QiKXJldHVybiExO2xldCBlPVBBKEEpO3JldHVybihlPT09bnVsbHx8ZT09PU9iamVjdC5wcm90b3R5cGV8fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PW51bGwpJiYhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBBKSYmIShTeW1ib2wuaXRlcmF0b3IgaW4gQSl9LFR0PU4oIkRhdGUiKSx4dD1OKCJGaWxlIiksSnQ9TigiQmxvYiIpLEh0PU4oIkZpbGVMaXN0IiksTXQ9QT0+UUEoQSkmJmsoQS5waXBlKSxZdD1BPT57bGV0IGU7cmV0dXJuIEEmJih0eXBlb2YgRm9ybURhdGE9PSJmdW5jdGlvbiImJkEgaW5zdGFuY2VvZiBGb3JtRGF0YXx8ayhBLmFwcGVuZCkmJigoZT1sQShBKSk9PT0iZm9ybWRhdGEifHxlPT09Im9iamVjdCImJmsoQS50b1N0cmluZykmJkEudG9TdHJpbmcoKT09PSJbb2JqZWN0IEZvcm1EYXRhXSIpKX0scXQ9TigiVVJMU2VhcmNoUGFyYW1zIiksS3Q9QT0+QS50cmltP0EudHJpbSgpOkEucmVwbGFjZSgvXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csIiIpO2Z1bmN0aW9uICQoQSxlLHthbGxPd25LZXlzOnQ9ITF9PXt9KXtpZihBPT09bnVsbHx8dHlwZW9mIEE+InUiKXJldHVybjtsZXQgcixuO2lmKHR5cGVvZiBBIT0ib2JqZWN0IiYmKEE9W0FdKSxxKEEpKWZvcihyPTAsbj1BLmxlbmd0aDtyPG47cisrKWUuY2FsbChudWxsLEFbcl0scixBKTtlbHNle2xldCBpPXQ/T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoQSk6T2JqZWN0LmtleXMoQSksbz1pLmxlbmd0aCxnO2ZvcihyPTA7cjxvO3IrKylnPWlbcl0sZS5jYWxsKG51bGwsQVtnXSxnLEEpfX1mdW5jdGlvbiBmZShBLGUpe2U9ZS50b0xvd2VyQ2FzZSgpO2xldCB0PU9iamVjdC5rZXlzKEEpLHI9dC5sZW5ndGgsbjtmb3IoO3ItLSA+MDspaWYobj10W3JdLGU9PT1uLnRvTG93ZXJDYXNlKCkpcmV0dXJuIG47cmV0dXJuIG51bGx9dmFyIHBlPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzpnbG9iYWwsZGU9QT0+IVgoQSkmJkEhPT1wZTtmdW5jdGlvbiBPQSgpe2xldHtjYXNlbGVzczpBfT1kZSh0aGlzKSYmdGhpc3x8e30sZT17fSx0PShyLG4pPT57bGV0IGk9QSYmZmUoZSxuKXx8bjtDQShlW2ldKSYmQ0Eocik/ZVtpXT1PQShlW2ldLHIpOkNBKHIpP2VbaV09T0Eoe30scik6cShyKT9lW2ldPXIuc2xpY2UoKTplW2ldPXJ9O2ZvcihsZXQgcj0wLG49YXJndW1lbnRzLmxlbmd0aDtyPG47cisrKWFyZ3VtZW50c1tyXSYmJChhcmd1bWVudHNbcl0sdCk7cmV0dXJuIGV9dmFyIFd0PShBLGUsdCx7YWxsT3duS2V5czpyfT17fSk9PigkKGUsKG4saSk9Pnt0JiZrKG4pP0FbaV09WihuLHQpOkFbaV09bn0se2FsbE93bktleXM6cn0pLEEpLGp0PUE9PihBLmNoYXJDb2RlQXQoMCk9PT02NTI3OSYmKEE9QS5zbGljZSgxKSksQSksdnQ9KEEsZSx0LHIpPT57QS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSxyKSxBLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1BLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJzdXBlciIse3ZhbHVlOmUucHJvdG90eXBlfSksdCYmT2JqZWN0LmFzc2lnbihBLnByb3RvdHlwZSx0KX0sX3Q9KEEsZSx0LHIpPT57bGV0IG4saSxvLGc9e307aWYoZT1lfHx7fSxBPT1udWxsKXJldHVybiBlO2Rve2ZvcihuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEEpLGk9bi5sZW5ndGg7aS0tID4wOylvPW5baV0sKCFyfHxyKG8sQSxlKSkmJiFnW29dJiYoZVtvXT1BW29dLGdbb109ITApO0E9dCE9PSExJiZQQShBKX13aGlsZShBJiYoIXR8fHQoQSxlKSkmJkEhPT1PYmplY3QucHJvdG90eXBlKTtyZXR1cm4gZX0senQ9KEEsZSx0KT0+e0E9U3RyaW5nKEEpLCh0PT09dm9pZCAwfHx0PkEubGVuZ3RoKSYmKHQ9QS5sZW5ndGgpLHQtPWUubGVuZ3RoO2xldCByPUEuaW5kZXhPZihlLHQpO3JldHVybiByIT09LTEmJnI9PT10fSxWdD1BPT57aWYoIUEpcmV0dXJuIG51bGw7aWYocShBKSlyZXR1cm4gQTtsZXQgZT1BLmxlbmd0aDtpZighdWUoZSkpcmV0dXJuIG51bGw7bGV0IHQ9bmV3IEFycmF5KGUpO2Zvcig7ZS0tID4wOyl0W2VdPUFbZV07cmV0dXJuIHR9LFp0PShBPT5lPT5BJiZlIGluc3RhbmNlb2YgQSkodHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZQQShVaW50OEFycmF5KSksWHQ9KEEsZSk9PntsZXQgcj0oQSYmQVtTeW1ib2wuaXRlcmF0b3JdKS5jYWxsKEEpLG47Zm9yKDsobj1yLm5leHQoKSkmJiFuLmRvbmU7KXtsZXQgaT1uLnZhbHVlO2UuY2FsbChBLGlbMF0saVsxXSl9fSwkdD0oQSxlKT0+e2xldCB0LHI9W107Zm9yKDsodD1BLmV4ZWMoZSkpIT09bnVsbDspci5wdXNoKHQpO3JldHVybiByfSxBcj1OKCJIVE1MRm9ybUVsZW1lbnQiKSxlcj1BPT5BLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWy1fXHNdKFthLXpcZF0pKFx3KikvZyxmdW5jdGlvbih0LHIsbil7cmV0dXJuIHIudG9VcHBlckNhc2UoKStufSksRWU9KCh7aGFzT3duUHJvcGVydHk6QX0pPT4oZSx0KT0+QS5jYWxsKGUsdCkpKE9iamVjdC5wcm90b3R5cGUpLHRyPU4oIlJlZ0V4cCIpLG1lPShBLGUpPT57bGV0IHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoQSkscj17fTskKHQsKG4saSk9PntsZXQgbzsobz1lKG4saSxBKSkhPT0hMSYmKHJbaV09b3x8bil9KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhBLHIpfSxycj1BPT57bWUoQSwoZSx0KT0+e2lmKGsoQSkmJlsiYXJndW1lbnRzIiwiY2FsbGVyIiwiY2FsbGVlIl0uaW5kZXhPZih0KSE9PS0xKXJldHVybiExO2xldCByPUFbdF07aWYoayhyKSl7aWYoZS5lbnVtZXJhYmxlPSExLCJ3cml0YWJsZSJpbiBlKXtlLndyaXRhYmxlPSExO3JldHVybn1lLnNldHx8KGUuc2V0PSgpPT57dGhyb3cgRXJyb3IoIkNhbiBub3QgcmV3cml0ZSByZWFkLW9ubHkgbWV0aG9kICciK3QrIiciKX0pfX0pfSxucj0oQSxlKT0+e2xldCB0PXt9LHI9bj0+e24uZm9yRWFjaChpPT57dFtpXT0hMH0pfTtyZXR1cm4gcShBKT9yKEEpOnIoU3RyaW5nKEEpLnNwbGl0KGUpKSx0fSxpcj0oKT0+e30sb3I9KEEsZSk9PihBPStBLE51bWJlci5pc0Zpbml0ZShBKT9BOmUpLExBPSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsUWU9IjAxMjM0NTY3ODkiLGhlPXtESUdJVDpRZSxBTFBIQTpMQSxBTFBIQV9ESUdJVDpMQStMQS50b1VwcGVyQ2FzZSgpK1FlfSxhcj0oQT0xNixlPWhlLkFMUEhBX0RJR0lUKT0+e2xldCB0PSIiLHtsZW5ndGg6cn09ZTtmb3IoO0EtLTspdCs9ZVtNYXRoLnJhbmRvbSgpKnJ8MF07cmV0dXJuIHR9O2Z1bmN0aW9uIHNyKEEpe3JldHVybiEhKEEmJmsoQS5hcHBlbmQpJiZBW1N5bWJvbC50b1N0cmluZ1RhZ109PT0iRm9ybURhdGEiJiZBW1N5bWJvbC5pdGVyYXRvcl0pfXZhciBJcj1BPT57bGV0IGU9bmV3IEFycmF5KDEwKSx0PShyLG4pPT57aWYoUUEocikpe2lmKGUuaW5kZXhPZihyKT49MClyZXR1cm47aWYoISgidG9KU09OImluIHIpKXtlW25dPXI7bGV0IGk9cShyKT9bXTp7fTtyZXR1cm4gJChyLChvLGcpPT57bGV0IGw9dChvLG4rMSk7IVgobCkmJihpW2ddPWwpfSksZVtuXT12b2lkIDAsaX19cmV0dXJuIHJ9O3JldHVybiB0KEEsMCl9LGdyPU4oIkFzeW5jRnVuY3Rpb24iKSxCcj1BPT5BJiYoUUEoQSl8fGsoQSkpJiZrKEEudGhlbikmJmsoQS5jYXRjaCkscz17aXNBcnJheTpxLGlzQXJyYXlCdWZmZXI6Y2UsaXNCdWZmZXI6R3QsaXNGb3JtRGF0YTpZdCxpc0FycmF5QnVmZmVyVmlldzpMdCxpc1N0cmluZzpPdCxpc051bWJlcjp1ZSxpc0Jvb2xlYW46UHQsaXNPYmplY3Q6UUEsaXNQbGFpbk9iamVjdDpDQSxpc1VuZGVmaW5lZDpYLGlzRGF0ZTpUdCxpc0ZpbGU6eHQsaXNCbG9iOkp0LGlzUmVnRXhwOnRyLGlzRnVuY3Rpb246ayxpc1N0cmVhbTpNdCxpc1VSTFNlYXJjaFBhcmFtczpxdCxpc1R5cGVkQXJyYXk6WnQsaXNGaWxlTGlzdDpIdCxmb3JFYWNoOiQsbWVyZ2U6T0EsZXh0ZW5kOld0LHRyaW06S3Qsc3RyaXBCT006anQsaW5oZXJpdHM6dnQsdG9GbGF0T2JqZWN0Ol90LGtpbmRPZjpsQSxraW5kT2ZUZXN0Ok4sZW5kc1dpdGg6enQsdG9BcnJheTpWdCxmb3JFYWNoRW50cnk6WHQsbWF0Y2hBbGw6JHQsaXNIVE1MRm9ybTpBcixoYXNPd25Qcm9wZXJ0eTpFZSxoYXNPd25Qcm9wOkVlLHJlZHVjZURlc2NyaXB0b3JzOm1lLGZyZWV6ZU1ldGhvZHM6cnIsdG9PYmplY3RTZXQ6bnIsdG9DYW1lbENhc2U6ZXIsbm9vcDppcix0b0Zpbml0ZU51bWJlcjpvcixmaW5kS2V5OmZlLGdsb2JhbDpwZSxpc0NvbnRleHREZWZpbmVkOmRlLEFMUEhBQkVUOmhlLGdlbmVyYXRlU3RyaW5nOmFyLGlzU3BlY0NvbXBsaWFudEZvcm06c3IsdG9KU09OT2JqZWN0OklyLGlzQXN5bmNGbjpncixpc1RoZW5hYmxlOkJyfTtmdW5jdGlvbiBLKEEsZSx0LHIsbil7RXJyb3IuY2FsbCh0aGlzKSxFcnJvci5jYXB0dXJlU3RhY2tUcmFjZT9FcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLHRoaXMuY29uc3RydWN0b3IpOnRoaXMuc3RhY2s9bmV3IEVycm9yKCkuc3RhY2ssdGhpcy5tZXNzYWdlPUEsdGhpcy5uYW1lPSJBeGlvc0Vycm9yIixlJiYodGhpcy5jb2RlPWUpLHQmJih0aGlzLmNvbmZpZz10KSxyJiYodGhpcy5yZXF1ZXN0PXIpLG4mJih0aGlzLnJlc3BvbnNlPW4pfXMuaW5oZXJpdHMoSyxFcnJvcix7dG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOnMudG9KU09OT2JqZWN0KHRoaXMuY29uZmlnKSxjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5yZXNwb25zZSYmdGhpcy5yZXNwb25zZS5zdGF0dXM/dGhpcy5yZXNwb25zZS5zdGF0dXM6bnVsbH19fSk7dmFyIHllPUsucHJvdG90eXBlLHdlPXt9O1siRVJSX0JBRF9PUFRJT05fVkFMVUUiLCJFUlJfQkFEX09QVElPTiIsIkVDT05OQUJPUlRFRCIsIkVUSU1FRE9VVCIsIkVSUl9ORVRXT1JLIiwiRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUyIsIkVSUl9ERVBSRUNBVEVEIiwiRVJSX0JBRF9SRVNQT05TRSIsIkVSUl9CQURfUkVRVUVTVCIsIkVSUl9DQU5DRUxFRCIsIkVSUl9OT1RfU1VQUE9SVCIsIkVSUl9JTlZBTElEX1VSTCJdLmZvckVhY2goQT0+e3dlW0FdPXt2YWx1ZTpBfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEssd2UpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh5ZSwiaXNBeGlvc0Vycm9yIix7dmFsdWU6ITB9KTtLLmZyb209KEEsZSx0LHIsbixpKT0+e2xldCBvPU9iamVjdC5jcmVhdGUoeWUpO3JldHVybiBzLnRvRmxhdE9iamVjdChBLG8sZnVuY3Rpb24obCl7cmV0dXJuIGwhPT1FcnJvci5wcm90b3R5cGV9LGc9PmchPT0iaXNBeGlvc0Vycm9yIiksSy5jYWxsKG8sQS5tZXNzYWdlLGUsdCxyLG4pLG8uY2F1c2U9QSxvLm5hbWU9QS5uYW1lLGkmJk9iamVjdC5hc3NpZ24obyxpKSxvfTt2YXIgcD1LO3ZhciBjQT1udWxsO2Z1bmN0aW9uIFRBKEEpe3JldHVybiBzLmlzUGxhaW5PYmplY3QoQSl8fHMuaXNBcnJheShBKX1mdW5jdGlvbiBTZShBKXtyZXR1cm4gcy5lbmRzV2l0aChBLCJbXSIpP0Euc2xpY2UoMCwtMik6QX1mdW5jdGlvbiBEZShBLGUsdCl7cmV0dXJuIEE/QS5jb25jYXQoZSkubWFwKGZ1bmN0aW9uKG4saSl7cmV0dXJuIG49U2UobiksIXQmJmk/IlsiK24rIl0iOm59KS5qb2luKHQ/Ii4iOiIiKTplfWZ1bmN0aW9uIENyKEEpe3JldHVybiBzLmlzQXJyYXkoQSkmJiFBLnNvbWUoVEEpfXZhciBscj1zLnRvRmxhdE9iamVjdChzLHt9LG51bGwsZnVuY3Rpb24oZSl7cmV0dXJuL15pc1tBLVpdLy50ZXN0KGUpfSk7ZnVuY3Rpb24gRXIoQSxlLHQpe2lmKCFzLmlzT2JqZWN0KEEpKXRocm93IG5ldyBUeXBlRXJyb3IoInRhcmdldCBtdXN0IGJlIGFuIG9iamVjdCIpO2U9ZXx8bmV3KGNBfHxGb3JtRGF0YSksdD1zLnRvRmxhdE9iamVjdCh0LHttZXRhVG9rZW5zOiEwLGRvdHM6ITEsaW5kZXhlczohMX0sITEsZnVuY3Rpb24oYyx1KXtyZXR1cm4hcy5pc1VuZGVmaW5lZCh1W2NdKX0pO2xldCByPXQubWV0YVRva2VucyxuPXQudmlzaXRvcnx8SSxpPXQuZG90cyxvPXQuaW5kZXhlcyxsPSh0LkJsb2J8fHR5cGVvZiBCbG9iPCJ1IiYmQmxvYikmJnMuaXNTcGVjQ29tcGxpYW50Rm9ybShlKTtpZighcy5pc0Z1bmN0aW9uKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoInZpc2l0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uIik7ZnVuY3Rpb24gQyhFKXtpZihFPT09bnVsbClyZXR1cm4iIjtpZihzLmlzRGF0ZShFKSlyZXR1cm4gRS50b0lTT1N0cmluZygpO2lmKCFsJiZzLmlzQmxvYihFKSl0aHJvdyBuZXcgcCgiQmxvYiBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgYSBCdWZmZXIgaW5zdGVhZC4iKTtyZXR1cm4gcy5pc0FycmF5QnVmZmVyKEUpfHxzLmlzVHlwZWRBcnJheShFKT9sJiZ0eXBlb2YgQmxvYj09ImZ1bmN0aW9uIj9uZXcgQmxvYihbRV0pOkJ1ZmZlci5mcm9tKEUpOkV9ZnVuY3Rpb24gSShFLGMsdSl7bGV0IGQ9RTtpZihFJiYhdSYmdHlwZW9mIEU9PSJvYmplY3QiKXtpZihzLmVuZHNXaXRoKGMsInt9IikpYz1yP2M6Yy5zbGljZSgwLC0yKSxFPUpTT04uc3RyaW5naWZ5KEUpO2Vsc2UgaWYocy5pc0FycmF5KEUpJiZDcihFKXx8KHMuaXNGaWxlTGlzdChFKXx8cy5lbmRzV2l0aChjLCJbXSIpKSYmKGQ9cy50b0FycmF5KEUpKSlyZXR1cm4gYz1TZShjKSxkLmZvckVhY2goZnVuY3Rpb24oVSxFdCl7IShzLmlzVW5kZWZpbmVkKFUpfHxVPT09bnVsbCkmJmUuYXBwZW5kKG89PT0hMD9EZShbY10sRXQsaSk6bz09PW51bGw/YzpjKyJbXSIsQyhVKSl9KSwhMX1yZXR1cm4gVEEoRSk/ITA6KGUuYXBwZW5kKERlKHUsYyxpKSxDKEUpKSwhMSl9bGV0IGE9W10sUT1PYmplY3QuYXNzaWduKGxyLHtkZWZhdWx0VmlzaXRvcjpJLGNvbnZlcnRWYWx1ZTpDLGlzVmlzaXRhYmxlOlRBfSk7ZnVuY3Rpb24gQihFLGMpe2lmKCFzLmlzVW5kZWZpbmVkKEUpKXtpZihhLmluZGV4T2YoRSkhPT0tMSl0aHJvdyBFcnJvcigiQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGluICIrYy5qb2luKCIuIikpO2EucHVzaChFKSxzLmZvckVhY2goRSxmdW5jdGlvbihkLGIpeyghKHMuaXNVbmRlZmluZWQoZCl8fGQ9PT1udWxsKSYmbi5jYWxsKGUsZCxzLmlzU3RyaW5nKGIpP2IudHJpbSgpOmIsYyxRKSk9PT0hMCYmQihkLGM/Yy5jb25jYXQoYik6W2JdKX0pLGEucG9wKCl9fWlmKCFzLmlzT2JqZWN0KEEpKXRocm93IG5ldyBUeXBlRXJyb3IoImRhdGEgbXVzdCBiZSBhbiBvYmplY3QiKTtyZXR1cm4gQihBKSxlfXZhciBUPUVyO2Z1bmN0aW9uIGtlKEEpe2xldCBlPXsiISI6IiUyMSIsIiciOiIlMjciLCIoIjoiJTI4IiwiKSI6IiUyOSIsIn4iOiIlN0UiLCIlMjAiOiIrIiwiJTAwIjoiXDAifTtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEEpLnJlcGxhY2UoL1shJygpfl18JTIwfCUwMC9nLGZ1bmN0aW9uKHIpe3JldHVybiBlW3JdfSl9ZnVuY3Rpb24gUmUoQSxlKXt0aGlzLl9wYWlycz1bXSxBJiZUKEEsdGhpcyxlKX12YXIgRmU9UmUucHJvdG90eXBlO0ZlLmFwcGVuZD1mdW5jdGlvbihlLHQpe3RoaXMuX3BhaXJzLnB1c2goW2UsdF0pfTtGZS50b1N0cmluZz1mdW5jdGlvbihlKXtsZXQgdD1lP2Z1bmN0aW9uKHIpe3JldHVybiBlLmNhbGwodGhpcyxyLGtlKX06a2U7cmV0dXJuIHRoaXMuX3BhaXJzLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gdChuWzBdKSsiPSIrdChuWzFdKX0sIiIpLmpvaW4oIiYiKX07dmFyIHVBPVJlO2Z1bmN0aW9uIFFyKEEpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoQSkucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2csIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjAvZywiKyIpLnJlcGxhY2UoLyU1Qi9naSwiWyIpLnJlcGxhY2UoLyU1RC9naSwiXSIpfWZ1bmN0aW9uIEFBKEEsZSx0KXtpZighZSlyZXR1cm4gQTtsZXQgcj10JiZ0LmVuY29kZXx8UXIsbj10JiZ0LnNlcmlhbGl6ZSxpO2lmKG4/aT1uKGUsdCk6aT1zLmlzVVJMU2VhcmNoUGFyYW1zKGUpP2UudG9TdHJpbmcoKTpuZXcgdUEoZSx0KS50b1N0cmluZyhyKSxpKXtsZXQgbz1BLmluZGV4T2YoIiMiKTtvIT09LTEmJihBPUEuc2xpY2UoMCxvKSksQSs9KEEuaW5kZXhPZigiPyIpPT09LTE/Ij8iOiImIikraX1yZXR1cm4gQX12YXIgeEE9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmhhbmRsZXJzPVtdfXVzZShlLHQscil7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOmUscmVqZWN0ZWQ6dCxzeW5jaHJvbm91czpyP3Iuc3luY2hyb25vdXM6ITEscnVuV2hlbjpyP3IucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX1lamVjdChlKXt0aGlzLmhhbmRsZXJzW2VdJiYodGhpcy5oYW5kbGVyc1tlXT1udWxsKX1jbGVhcigpe3RoaXMuaGFuZGxlcnMmJih0aGlzLmhhbmRsZXJzPVtdKX1mb3JFYWNoKGUpe3MuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLGZ1bmN0aW9uKHIpe3IhPT1udWxsJiZlKHIpfSl9fSxKQT14QTt2YXIgZkE9e3NpbGVudEpTT05QYXJzaW5nOiEwLGZvcmNlZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9O3ZhciBiZT10eXBlb2YgVVJMU2VhcmNoUGFyYW1zPCJ1Ij9VUkxTZWFyY2hQYXJhbXM6dUE7dmFyIFVlPXR5cGVvZiBGb3JtRGF0YTwidSI/Rm9ybURhdGE6bnVsbDt2YXIgTmU9dHlwZW9mIEJsb2I8InUiP0Jsb2I6bnVsbDt2YXIgR2U9e2lzQnJvd3NlcjohMCxjbGFzc2VzOntVUkxTZWFyY2hQYXJhbXM6YmUsRm9ybURhdGE6VWUsQmxvYjpOZX0scHJvdG9jb2xzOlsiaHR0cCIsImh0dHBzIiwiZmlsZSIsImJsb2IiLCJ1cmwiLCJkYXRhIl19O3ZhciBIQT17fTtjdChIQSx7aGFzQnJvd3NlckVudjooKT0+TGUsaGFzU3RhbmRhcmRCcm93c2VyRW52OigpPT5jcixoYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnY6KCk9PnVyfSk7dmFyIExlPXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2YgZG9jdW1lbnQ8InUiLGNyPShBPT5MZSYmWyJSZWFjdE5hdGl2ZSIsIk5hdGl2ZVNjcmlwdCIsIk5TIl0uaW5kZXhPZihBKTwwKSh0eXBlb2YgbmF2aWdhdG9yPCJ1IiYmbmF2aWdhdG9yLnByb2R1Y3QpLHVyPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZTwidSImJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSYmdHlwZW9mIHNlbGYuaW1wb3J0U2NyaXB0cz09ImZ1bmN0aW9uIjt2YXIgeT17Li4uSEEsLi4uR2V9O2Z1bmN0aW9uIE1BKEEsZSl7cmV0dXJuIFQoQSxuZXcgeS5jbGFzc2VzLlVSTFNlYXJjaFBhcmFtcyxPYmplY3QuYXNzaWduKHt2aXNpdG9yOmZ1bmN0aW9uKHQscixuLGkpe3JldHVybiB5LmlzTm9kZSYmcy5pc0J1ZmZlcih0KT8odGhpcy5hcHBlbmQocix0LnRvU3RyaW5nKCJiYXNlNjQiKSksITEpOmkuZGVmYXVsdFZpc2l0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sZSkpfWZ1bmN0aW9uIGZyKEEpe3JldHVybiBzLm1hdGNoQWxsKC9cdyt8XFsoXHcqKV0vZyxBKS5tYXAoZT0+ZVswXT09PSJbXSI/IiI6ZVsxXXx8ZVswXSl9ZnVuY3Rpb24gcHIoQSl7bGV0IGU9e30sdD1PYmplY3Qua2V5cyhBKSxyLG49dC5sZW5ndGgsaTtmb3Iocj0wO3I8bjtyKyspaT10W3JdLGVbaV09QVtpXTtyZXR1cm4gZX1mdW5jdGlvbiBkcihBKXtmdW5jdGlvbiBlKHQscixuLGkpe2xldCBvPXRbaSsrXSxnPU51bWJlci5pc0Zpbml0ZSgrbyksbD1pPj10Lmxlbmd0aDtyZXR1cm4gbz0hbyYmcy5pc0FycmF5KG4pP24ubGVuZ3RoOm8sbD8ocy5oYXNPd25Qcm9wKG4sbyk/bltvXT1bbltvXSxyXTpuW29dPXIsIWcpOigoIW5bb118fCFzLmlzT2JqZWN0KG5bb10pKSYmKG5bb109W10pLGUodCxyLG5bb10saSkmJnMuaXNBcnJheShuW29dKSYmKG5bb109cHIobltvXSkpLCFnKX1pZihzLmlzRm9ybURhdGEoQSkmJnMuaXNGdW5jdGlvbihBLmVudHJpZXMpKXtsZXQgdD17fTtyZXR1cm4gcy5mb3JFYWNoRW50cnkoQSwocixuKT0+e2UoZnIociksbix0LDApfSksdH1yZXR1cm4gbnVsbH12YXIgcEE9ZHI7ZnVuY3Rpb24gbXIoQSxlLHQpe2lmKHMuaXNTdHJpbmcoQSkpdHJ5e3JldHVybihlfHxKU09OLnBhcnNlKShBKSxzLnRyaW0oQSl9Y2F0Y2gocil7aWYoci5uYW1lIT09IlN5bnRheEVycm9yIil0aHJvdyByfXJldHVybih0fHxKU09OLnN0cmluZ2lmeSkoQSl9dmFyIFlBPXt0cmFuc2l0aW9uYWw6ZkEsYWRhcHRlcjpbInhociIsImh0dHAiXSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbihlLHQpe2xldCByPXQuZ2V0Q29udGVudFR5cGUoKXx8IiIsbj1yLmluZGV4T2YoImFwcGxpY2F0aW9uL2pzb24iKT4tMSxpPXMuaXNPYmplY3QoZSk7aWYoaSYmcy5pc0hUTUxGb3JtKGUpJiYoZT1uZXcgRm9ybURhdGEoZSkpLHMuaXNGb3JtRGF0YShlKSlyZXR1cm4gbiYmbj9KU09OLnN0cmluZ2lmeShwQShlKSk6ZTtpZihzLmlzQXJyYXlCdWZmZXIoZSl8fHMuaXNCdWZmZXIoZSl8fHMuaXNTdHJlYW0oZSl8fHMuaXNGaWxlKGUpfHxzLmlzQmxvYihlKSlyZXR1cm4gZTtpZihzLmlzQXJyYXlCdWZmZXJWaWV3KGUpKXJldHVybiBlLmJ1ZmZlcjtpZihzLmlzVVJMU2VhcmNoUGFyYW1zKGUpKXJldHVybiB0LnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIsITEpLGUudG9TdHJpbmcoKTtsZXQgZztpZihpKXtpZihyLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpPi0xKXJldHVybiBNQShlLHRoaXMuZm9ybVNlcmlhbGl6ZXIpLnRvU3RyaW5nKCk7aWYoKGc9cy5pc0ZpbGVMaXN0KGUpKXx8ci5pbmRleE9mKCJtdWx0aXBhcnQvZm9ybS1kYXRhIik+LTEpe2xldCBsPXRoaXMuZW52JiZ0aGlzLmVudi5Gb3JtRGF0YTtyZXR1cm4gVChnP3siZmlsZXNbXSI6ZX06ZSxsJiZuZXcgbCx0aGlzLmZvcm1TZXJpYWxpemVyKX19cmV0dXJuIGl8fG4/KHQuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL2pzb24iLCExKSxtcihlKSk6ZX1dLHRyYW5zZm9ybVJlc3BvbnNlOltmdW5jdGlvbihlKXtsZXQgdD10aGlzLnRyYW5zaXRpb25hbHx8WUEudHJhbnNpdGlvbmFsLHI9dCYmdC5mb3JjZWRKU09OUGFyc2luZyxuPXRoaXMucmVzcG9uc2VUeXBlPT09Impzb24iO2lmKGUmJnMuaXNTdHJpbmcoZSkmJihyJiYhdGhpcy5yZXNwb25zZVR5cGV8fG4pKXtsZXQgbz0hKHQmJnQuc2lsZW50SlNPTlBhcnNpbmcpJiZuO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShlKX1jYXRjaChnKXtpZihvKXRocm93IGcubmFtZT09PSJTeW50YXhFcnJvciI/cC5mcm9tKGcscC5FUlJfQkFEX1JFU1BPTlNFLHRoaXMsbnVsbCx0aGlzLnJlc3BvbnNlKTpnfX1yZXR1cm4gZX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSxtYXhCb2R5TGVuZ3RoOi0xLGVudjp7Rm9ybURhdGE6eS5jbGFzc2VzLkZvcm1EYXRhLEJsb2I6eS5jbGFzc2VzLkJsb2J9LHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0yMDAmJmU8MzAwfSxoZWFkZXJzOntjb21tb246e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIiwiQ29udGVudC1UeXBlIjp2b2lkIDB9fX07cy5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCJdLEE9PntZQS5oZWFkZXJzW0FdPXt9fSk7dmFyIFc9WUE7dmFyIGhyPXMudG9PYmplY3RTZXQoWyJhZ2UiLCJhdXRob3JpemF0aW9uIiwiY29udGVudC1sZW5ndGgiLCJjb250ZW50LXR5cGUiLCJldGFnIiwiZXhwaXJlcyIsImZyb20iLCJob3N0IiwiaWYtbW9kaWZpZWQtc2luY2UiLCJpZi11bm1vZGlmaWVkLXNpbmNlIiwibGFzdC1tb2RpZmllZCIsImxvY2F0aW9uIiwibWF4LWZvcndhcmRzIiwicHJveHktYXV0aG9yaXphdGlvbiIsInJlZmVyZXIiLCJyZXRyeS1hZnRlciIsInVzZXItYWdlbnQiXSksT2U9QT0+e2xldCBlPXt9LHQscixuO3JldHVybiBBJiZBLnNwbGl0KGAKYCkuZm9yRWFjaChmdW5jdGlvbihvKXtuPW8uaW5kZXhPZigiOiIpLHQ9by5zdWJzdHJpbmcoMCxuKS50cmltKCkudG9Mb3dlckNhc2UoKSxyPW8uc3Vic3RyaW5nKG4rMSkudHJpbSgpLCEoIXR8fGVbdF0mJmhyW3RdKSYmKHQ9PT0ic2V0LWNvb2tpZSI/ZVt0XT9lW3RdLnB1c2gocik6ZVt0XT1bcl06ZVt0XT1lW3RdP2VbdF0rIiwgIityOnIpfSksZX07dmFyIFBlPVN5bWJvbCgiaW50ZXJuYWxzIik7ZnVuY3Rpb24gZUEoQSl7cmV0dXJuIEEmJlN0cmluZyhBKS50cmltKCkudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBkQShBKXtyZXR1cm4gQT09PSExfHxBPT1udWxsP0E6cy5pc0FycmF5KEEpP0EubWFwKGRBKTpTdHJpbmcoQSl9ZnVuY3Rpb24geXIoQSl7bGV0IGU9T2JqZWN0LmNyZWF0ZShudWxsKSx0PS8oW15ccyw7PV0rKVxzKig/Oj1ccyooW14sO10rKSk/L2cscjtmb3IoO3I9dC5leGVjKEEpOyllW3JbMV1dPXJbMl07cmV0dXJuIGV9dmFyIHdyPUE9Pi9eWy1fYS16QS1aMC05XmB8fiwhIyQlJicqKy5dKyQvLnRlc3QoQS50cmltKCkpO2Z1bmN0aW9uIHFBKEEsZSx0LHIsbil7aWYocy5pc0Z1bmN0aW9uKHIpKXJldHVybiByLmNhbGwodGhpcyxlLHQpO2lmKG4mJihlPXQpLCEhcy5pc1N0cmluZyhlKSl7aWYocy5pc1N0cmluZyhyKSlyZXR1cm4gZS5pbmRleE9mKHIpIT09LTE7aWYocy5pc1JlZ0V4cChyKSlyZXR1cm4gci50ZXN0KGUpfX1mdW5jdGlvbiBEcihBKXtyZXR1cm4gQS50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8oW2EtelxkXSkoXHcqKS9nLChlLHQscik9PnQudG9VcHBlckNhc2UoKStyKX1mdW5jdGlvbiBTcihBLGUpe2xldCB0PXMudG9DYW1lbENhc2UoIiAiK2UpO1siZ2V0Iiwic2V0IiwiaGFzIl0uZm9yRWFjaChyPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KEEscit0LHt2YWx1ZTpmdW5jdGlvbihuLGksbyl7cmV0dXJuIHRoaXNbcl0uY2FsbCh0aGlzLGUsbixpLG8pfSxjb25maWd1cmFibGU6ITB9KX0pfXZhciBqPWNsYXNze2NvbnN0cnVjdG9yKGUpe2UmJnRoaXMuc2V0KGUpfXNldChlLHQscil7bGV0IG49dGhpcztmdW5jdGlvbiBpKGcsbCxDKXtsZXQgST1lQShsKTtpZighSSl0aHJvdyBuZXcgRXJyb3IoImhlYWRlciBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nIik7bGV0IGE9cy5maW5kS2V5KG4sSSk7KCFhfHxuW2FdPT09dm9pZCAwfHxDPT09ITB8fEM9PT12b2lkIDAmJm5bYV0hPT0hMSkmJihuW2F8fGxdPWRBKGcpKX1sZXQgbz0oZyxsKT0+cy5mb3JFYWNoKGcsKEMsSSk9PmkoQyxJLGwpKTtyZXR1cm4gcy5pc1BsYWluT2JqZWN0KGUpfHxlIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9vKGUsdCk6cy5pc1N0cmluZyhlKSYmKGU9ZS50cmltKCkpJiYhd3IoZSk/byhPZShlKSx0KTplIT1udWxsJiZpKHQsZSxyKSx0aGlzfWdldChlLHQpe2lmKGU9ZUEoZSksZSl7bGV0IHI9cy5maW5kS2V5KHRoaXMsZSk7aWYocil7bGV0IG49dGhpc1tyXTtpZighdClyZXR1cm4gbjtpZih0PT09ITApcmV0dXJuIHlyKG4pO2lmKHMuaXNGdW5jdGlvbih0KSlyZXR1cm4gdC5jYWxsKHRoaXMsbixyKTtpZihzLmlzUmVnRXhwKHQpKXJldHVybiB0LmV4ZWMobik7dGhyb3cgbmV3IFR5cGVFcnJvcigicGFyc2VyIG11c3QgYmUgYm9vbGVhbnxyZWdleHB8ZnVuY3Rpb24iKX19fWhhcyhlLHQpe2lmKGU9ZUEoZSksZSl7bGV0IHI9cy5maW5kS2V5KHRoaXMsZSk7cmV0dXJuISEociYmdGhpc1tyXSE9PXZvaWQgMCYmKCF0fHxxQSh0aGlzLHRoaXNbcl0scix0KSkpfXJldHVybiExfWRlbGV0ZShlLHQpe2xldCByPXRoaXMsbj0hMTtmdW5jdGlvbiBpKG8pe2lmKG89ZUEobyksbyl7bGV0IGc9cy5maW5kS2V5KHIsbyk7ZyYmKCF0fHxxQShyLHJbZ10sZyx0KSkmJihkZWxldGUgcltnXSxuPSEwKX19cmV0dXJuIHMuaXNBcnJheShlKT9lLmZvckVhY2goaSk6aShlKSxufWNsZWFyKGUpe2xldCB0PU9iamVjdC5rZXlzKHRoaXMpLHI9dC5sZW5ndGgsbj0hMTtmb3IoO3ItLTspe2xldCBpPXRbcl07KCFlfHxxQSh0aGlzLHRoaXNbaV0saSxlLCEwKSkmJihkZWxldGUgdGhpc1tpXSxuPSEwKX1yZXR1cm4gbn1ub3JtYWxpemUoZSl7bGV0IHQ9dGhpcyxyPXt9O3JldHVybiBzLmZvckVhY2godGhpcywobixpKT0+e2xldCBvPXMuZmluZEtleShyLGkpO2lmKG8pe3Rbb109ZEEobiksZGVsZXRlIHRbaV07cmV0dXJufWxldCBnPWU/RHIoaSk6U3RyaW5nKGkpLnRyaW0oKTtnIT09aSYmZGVsZXRlIHRbaV0sdFtnXT1kQShuKSxyW2ddPSEwfSksdGhpc31jb25jYXQoLi4uZSl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY29uY2F0KHRoaXMsLi4uZSl9dG9KU09OKGUpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIHMuZm9yRWFjaCh0aGlzLChyLG4pPT57ciE9bnVsbCYmciE9PSExJiYodFtuXT1lJiZzLmlzQXJyYXkocik/ci5qb2luKCIsICIpOnIpfSksdH1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKVtTeW1ib2wuaXRlcmF0b3JdKCl9dG9TdHJpbmcoKXtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSkubWFwKChbZSx0XSk9PmUrIjogIit0KS5qb2luKGAKYCl9Z2V0W1N5bWJvbC50b1N0cmluZ1RhZ10oKXtyZXR1cm4iQXhpb3NIZWFkZXJzIn1zdGF0aWMgZnJvbShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHRoaXM/ZTpuZXcgdGhpcyhlKX1zdGF0aWMgY29uY2F0KGUsLi4udCl7bGV0IHI9bmV3IHRoaXMoZSk7cmV0dXJuIHQuZm9yRWFjaChuPT5yLnNldChuKSkscn1zdGF0aWMgYWNjZXNzb3IoZSl7bGV0IHI9KHRoaXNbUGVdPXRoaXNbUGVdPXthY2Nlc3NvcnM6e319KS5hY2Nlc3NvcnMsbj10aGlzLnByb3RvdHlwZTtmdW5jdGlvbiBpKG8pe2xldCBnPWVBKG8pO3JbZ118fChTcihuLG8pLHJbZ109ITApfXJldHVybiBzLmlzQXJyYXkoZSk/ZS5mb3JFYWNoKGkpOmkoZSksdGhpc319O2ouYWNjZXNzb3IoWyJDb250ZW50LVR5cGUiLCJDb250ZW50LUxlbmd0aCIsIkFjY2VwdCIsIkFjY2VwdC1FbmNvZGluZyIsIlVzZXItQWdlbnQiLCJBdXRob3JpemF0aW9uIl0pO3MucmVkdWNlRGVzY3JpcHRvcnMoai5wcm90b3R5cGUsKHt2YWx1ZTpBfSxlKT0+e2xldCB0PWVbMF0udG9VcHBlckNhc2UoKStlLnNsaWNlKDEpO3JldHVybntnZXQ6KCk9PkEsc2V0KHIpe3RoaXNbdF09cn19fSk7cy5mcmVlemVNZXRob2RzKGopO3ZhciB3PWo7ZnVuY3Rpb24gdEEoQSxlKXtsZXQgdD10aGlzfHxXLHI9ZXx8dCxuPXcuZnJvbShyLmhlYWRlcnMpLGk9ci5kYXRhO3JldHVybiBzLmZvckVhY2goQSxmdW5jdGlvbihnKXtpPWcuY2FsbCh0LGksbi5ub3JtYWxpemUoKSxlP2Uuc3RhdHVzOnZvaWQgMCl9KSxuLm5vcm1hbGl6ZSgpLGl9ZnVuY3Rpb24gckEoQSl7cmV0dXJuISEoQSYmQS5fX0NBTkNFTF9fKX1mdW5jdGlvbiBUZShBLGUsdCl7cC5jYWxsKHRoaXMsQT8/ImNhbmNlbGVkIixwLkVSUl9DQU5DRUxFRCxlLHQpLHRoaXMubmFtZT0iQ2FuY2VsZWRFcnJvciJ9cy5pbmhlcml0cyhUZSxwLHtfX0NBTkNFTF9fOiEwfSk7dmFyIHg9VGU7ZnVuY3Rpb24gS0EoQSxlLHQpe2xldCByPXQuY29uZmlnLnZhbGlkYXRlU3RhdHVzOyF0LnN0YXR1c3x8IXJ8fHIodC5zdGF0dXMpP0EodCk6ZShuZXcgcCgiUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK3Quc3RhdHVzLFtwLkVSUl9CQURfUkVRVUVTVCxwLkVSUl9CQURfUkVTUE9OU0VdW01hdGguZmxvb3IodC5zdGF0dXMvMTAwKS00XSx0LmNvbmZpZyx0LnJlcXVlc3QsdCkpfXZhciB4ZT15Lmhhc1N0YW5kYXJkQnJvd3NlckVudj97d3JpdGUoQSxlLHQscixuLGkpe2xldCBvPVtBKyI9IitlbmNvZGVVUklDb21wb25lbnQoZSldO3MuaXNOdW1iZXIodCkmJm8ucHVzaCgiZXhwaXJlcz0iK25ldyBEYXRlKHQpLnRvR01UU3RyaW5nKCkpLHMuaXNTdHJpbmcocikmJm8ucHVzaCgicGF0aD0iK3IpLHMuaXNTdHJpbmcobikmJm8ucHVzaCgiZG9tYWluPSIrbiksaT09PSEwJiZvLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1vLmpvaW4oIjsgIil9LHJlYWQoQSl7bGV0IGU9ZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoIihefDtcXHMqKSgiK0ErIik9KFteO10qKSIpKTtyZXR1cm4gZT9kZWNvZGVVUklDb21wb25lbnQoZVszXSk6bnVsbH0scmVtb3ZlKEEpe3RoaXMud3JpdGUoQSwiIixEYXRlLm5vdygpLTg2NGU1KX19Ont3cml0ZSgpe30scmVhZCgpe3JldHVybiBudWxsfSxyZW1vdmUoKXt9fTtmdW5jdGlvbiBXQShBKXtyZXR1cm4vXihbYS16XVthLXpcZCtcLS5dKjopP1wvXC8vaS50ZXN0KEEpfWZ1bmN0aW9uIGpBKEEsZSl7cmV0dXJuIGU/QS5yZXBsYWNlKC9cLyskLywiIikrIi8iK2UucmVwbGFjZSgvXlwvKy8sIiIpOkF9ZnVuY3Rpb24gbkEoQSxlKXtyZXR1cm4gQSYmIVdBKGUpP2pBKEEsZSk6ZX12YXIgSmU9eS5oYXNTdGFuZGFyZEJyb3dzZXJFbnY/ZnVuY3Rpb24oKXtsZXQgZT0vKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpLHI7ZnVuY3Rpb24gbihpKXtsZXQgbz1pO3JldHVybiBlJiYodC5zZXRBdHRyaWJ1dGUoImhyZWYiLG8pLG89dC5ocmVmKSx0LnNldEF0dHJpYnV0ZSgiaHJlZiIsbykse2hyZWY6dC5ocmVmLHByb3RvY29sOnQucHJvdG9jb2w/dC5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6dC5ob3N0LHNlYXJjaDp0LnNlYXJjaD90LnNlYXJjaC5yZXBsYWNlKC9eXD8vLCIiKToiIixoYXNoOnQuaGFzaD90Lmhhc2gucmVwbGFjZSgvXiMvLCIiKToiIixob3N0bmFtZTp0Lmhvc3RuYW1lLHBvcnQ6dC5wb3J0LHBhdGhuYW1lOnQucGF0aG5hbWUuY2hhckF0KDApPT09Ii8iP3QucGF0aG5hbWU6Ii8iK3QucGF0aG5hbWV9fXJldHVybiByPW4od2luZG93LmxvY2F0aW9uLmhyZWYpLGZ1bmN0aW9uKG8pe2xldCBnPXMuaXNTdHJpbmcobyk/bihvKTpvO3JldHVybiBnLnByb3RvY29sPT09ci5wcm90b2NvbCYmZy5ob3N0PT09ci5ob3N0fX0oKTpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiEwfX0oKTtmdW5jdGlvbiB2QShBKXtsZXQgZT0vXihbLStcd117MSwyNX0pKDo/XC9cL3w6KS8uZXhlYyhBKTtyZXR1cm4gZSYmZVsxXXx8IiJ9ZnVuY3Rpb24ga3IoQSxlKXtBPUF8fDEwO2xldCB0PW5ldyBBcnJheShBKSxyPW5ldyBBcnJheShBKSxuPTAsaT0wLG87cmV0dXJuIGU9ZSE9PXZvaWQgMD9lOjFlMyxmdW5jdGlvbihsKXtsZXQgQz1EYXRlLm5vdygpLEk9cltpXTtvfHwobz1DKSx0W25dPWwscltuXT1DO2xldCBhPWksUT0wO2Zvcig7YSE9PW47KVErPXRbYSsrXSxhPWElQTtpZihuPShuKzEpJUEsbj09PWkmJihpPShpKzEpJUEpLEMtbzxlKXJldHVybjtsZXQgQj1JJiZDLUk7cmV0dXJuIEI/TWF0aC5yb3VuZChRKjFlMy9CKTp2b2lkIDB9fXZhciBIZT1rcjtmdW5jdGlvbiBNZShBLGUpe2xldCB0PTAscj1IZSg1MCwyNTApO3JldHVybiBuPT57bGV0IGk9bi5sb2FkZWQsbz1uLmxlbmd0aENvbXB1dGFibGU/bi50b3RhbDp2b2lkIDAsZz1pLXQsbD1yKGcpLEM9aTw9bzt0PWk7bGV0IEk9e2xvYWRlZDppLHRvdGFsOm8scHJvZ3Jlc3M6bz9pL286dm9pZCAwLGJ5dGVzOmcscmF0ZTpsfHx2b2lkIDAsZXN0aW1hdGVkOmwmJm8mJkM/KG8taSkvbDp2b2lkIDAsZXZlbnQ6bn07SVtlPyJkb3dubG9hZCI6InVwbG9hZCJdPSEwLEEoSSl9fXZhciBScj10eXBlb2YgWE1MSHR0cFJlcXVlc3Q8InUiLFllPVJyJiZmdW5jdGlvbihBKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odCxyKXtsZXQgbj1BLmRhdGEsaT13LmZyb20oQS5oZWFkZXJzKS5ub3JtYWxpemUoKSx7cmVzcG9uc2VUeXBlOm8sd2l0aFhTUkZUb2tlbjpnfT1BLGw7ZnVuY3Rpb24gQygpe0EuY2FuY2VsVG9rZW4mJkEuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUobCksQS5zaWduYWwmJkEuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixsKX1sZXQgSTtpZihzLmlzRm9ybURhdGEobikpe2lmKHkuaGFzU3RhbmRhcmRCcm93c2VyRW52fHx5Lmhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudilpLnNldENvbnRlbnRUeXBlKCExKTtlbHNlIGlmKChJPWkuZ2V0Q29udGVudFR5cGUoKSkhPT0hMSl7bGV0W2MsLi4udV09ST9JLnNwbGl0KCI7IikubWFwKGQ9PmQudHJpbSgpKS5maWx0ZXIoQm9vbGVhbik6W107aS5zZXRDb250ZW50VHlwZShbY3x8Im11bHRpcGFydC9mb3JtLWRhdGEiLC4uLnVdLmpvaW4oIjsgIikpfX1sZXQgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoQS5hdXRoKXtsZXQgYz1BLmF1dGgudXNlcm5hbWV8fCIiLHU9QS5hdXRoLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChBLmF1dGgucGFzc3dvcmQpKToiIjtpLnNldCgiQXV0aG9yaXphdGlvbiIsIkJhc2ljICIrYnRvYShjKyI6Iit1KSl9bGV0IFE9bkEoQS5iYXNlVVJMLEEudXJsKTthLm9wZW4oQS5tZXRob2QudG9VcHBlckNhc2UoKSxBQShRLEEucGFyYW1zLEEucGFyYW1zU2VyaWFsaXplciksITApLGEudGltZW91dD1BLnRpbWVvdXQ7ZnVuY3Rpb24gQigpe2lmKCFhKXJldHVybjtsZXQgYz13LmZyb20oImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiBhJiZhLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSxkPXtkYXRhOiFvfHxvPT09InRleHQifHxvPT09Impzb24iP2EucmVzcG9uc2VUZXh0OmEucmVzcG9uc2Usc3RhdHVzOmEuc3RhdHVzLHN0YXR1c1RleHQ6YS5zdGF0dXNUZXh0LGhlYWRlcnM6Yyxjb25maWc6QSxyZXF1ZXN0OmF9O0tBKGZ1bmN0aW9uKFUpe3QoVSksQygpfSxmdW5jdGlvbihVKXtyKFUpLEMoKX0sZCksYT1udWxsfWlmKCJvbmxvYWRlbmQiaW4gYT9hLm9ubG9hZGVuZD1COmEub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7IWF8fGEucmVhZHlTdGF0ZSE9PTR8fGEuc3RhdHVzPT09MCYmIShhLnJlc3BvbnNlVVJMJiZhLnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6Iik9PT0wKXx8c2V0VGltZW91dChCKX0sYS5vbmFib3J0PWZ1bmN0aW9uKCl7YSYmKHIobmV3IHAoIlJlcXVlc3QgYWJvcnRlZCIscC5FQ09OTkFCT1JURUQsQSxhKSksYT1udWxsKX0sYS5vbmVycm9yPWZ1bmN0aW9uKCl7cihuZXcgcCgiTmV0d29yayBFcnJvciIscC5FUlJfTkVUV09SSyxBLGEpKSxhPW51bGx9LGEub250aW1lb3V0PWZ1bmN0aW9uKCl7bGV0IHU9QS50aW1lb3V0PyJ0aW1lb3V0IG9mICIrQS50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiLGQ9QS50cmFuc2l0aW9uYWx8fGZBO0EudGltZW91dEVycm9yTWVzc2FnZSYmKHU9QS50aW1lb3V0RXJyb3JNZXNzYWdlKSxyKG5ldyBwKHUsZC5jbGFyaWZ5VGltZW91dEVycm9yP3AuRVRJTUVET1VUOnAuRUNPTk5BQk9SVEVELEEsYSkpLGE9bnVsbH0seS5oYXNTdGFuZGFyZEJyb3dzZXJFbnYmJihnJiZzLmlzRnVuY3Rpb24oZykmJihnPWcoQSkpLGd8fGchPT0hMSYmSmUoUSkpKXtsZXQgYz1BLnhzcmZIZWFkZXJOYW1lJiZBLnhzcmZDb29raWVOYW1lJiZ4ZS5yZWFkKEEueHNyZkNvb2tpZU5hbWUpO2MmJmkuc2V0KEEueHNyZkhlYWRlck5hbWUsYyl9bj09PXZvaWQgMCYmaS5zZXRDb250ZW50VHlwZShudWxsKSwic2V0UmVxdWVzdEhlYWRlciJpbiBhJiZzLmZvckVhY2goaS50b0pTT04oKSxmdW5jdGlvbih1LGQpe2Euc2V0UmVxdWVzdEhlYWRlcihkLHUpfSkscy5pc1VuZGVmaW5lZChBLndpdGhDcmVkZW50aWFscyl8fChhLndpdGhDcmVkZW50aWFscz0hIUEud2l0aENyZWRlbnRpYWxzKSxvJiZvIT09Impzb24iJiYoYS5yZXNwb25zZVR5cGU9QS5yZXNwb25zZVR5cGUpLHR5cGVvZiBBLm9uRG93bmxvYWRQcm9ncmVzcz09ImZ1bmN0aW9uIiYmYS5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsTWUoQS5vbkRvd25sb2FkUHJvZ3Jlc3MsITApKSx0eXBlb2YgQS5vblVwbG9hZFByb2dyZXNzPT0iZnVuY3Rpb24iJiZhLnVwbG9hZCYmYS51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLE1lKEEub25VcGxvYWRQcm9ncmVzcykpLChBLmNhbmNlbFRva2VufHxBLnNpZ25hbCkmJihsPWM9PnthJiYocighY3x8Yy50eXBlP25ldyB4KG51bGwsQSxhKTpjKSxhLmFib3J0KCksYT1udWxsKX0sQS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUobCksQS5zaWduYWwmJihBLnNpZ25hbC5hYm9ydGVkP2woKTpBLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsbCkpKTtsZXQgRT12QShRKTtpZihFJiZ5LnByb3RvY29scy5pbmRleE9mKEUpPT09LTEpe3IobmV3IHAoIlVuc3VwcG9ydGVkIHByb3RvY29sICIrRSsiOiIscC5FUlJfQkFEX1JFUVVFU1QsQSkpO3JldHVybn1hLnNlbmQobnx8bnVsbCl9KX07dmFyIF9BPXtodHRwOmNBLHhocjpZZX07cy5mb3JFYWNoKF9BLChBLGUpPT57aWYoQSl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJuYW1lIix7dmFsdWU6ZX0pfWNhdGNoe31PYmplY3QuZGVmaW5lUHJvcGVydHkoQSwiYWRhcHRlck5hbWUiLHt2YWx1ZTplfSl9fSk7dmFyIHFlPUE9PmAtICR7QX1gLEZyPUE9PnMuaXNGdW5jdGlvbihBKXx8QT09PW51bGx8fEE9PT0hMSxtQT17Z2V0QWRhcHRlcjpBPT57QT1zLmlzQXJyYXkoQSk/QTpbQV07bGV0e2xlbmd0aDplfT1BLHQscixuPXt9O2ZvcihsZXQgaT0wO2k8ZTtpKyspe3Q9QVtpXTtsZXQgbztpZihyPXQsIUZyKHQpJiYocj1fQVsobz1TdHJpbmcodCkpLnRvTG93ZXJDYXNlKCldLHI9PT12b2lkIDApKXRocm93IG5ldyBwKGBVbmtub3duIGFkYXB0ZXIgJyR7b30nYCk7aWYocilicmVhaztuW298fCIjIitpXT1yfWlmKCFyKXtsZXQgaT1PYmplY3QuZW50cmllcyhuKS5tYXAoKFtnLGxdKT0+YGFkYXB0ZXIgJHtnfSBgKyhsPT09ITE/ImlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGVudmlyb25tZW50IjoiaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgYnVpbGQiKSksbz1lP2kubGVuZ3RoPjE/YHNpbmNlIDoKYCtpLm1hcChxZSkuam9pbihgCmApOiIgIitxZShpWzBdKToiYXMgbm8gYWRhcHRlciBzcGVjaWZpZWQiO3Rocm93IG5ldyBwKCJUaGVyZSBpcyBubyBzdWl0YWJsZSBhZGFwdGVyIHRvIGRpc3BhdGNoIHRoZSByZXF1ZXN0ICIrbywiRVJSX05PVF9TVVBQT1JUIil9cmV0dXJuIHJ9LGFkYXB0ZXJzOl9BfTtmdW5jdGlvbiB6QShBKXtpZihBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxBLnNpZ25hbCYmQS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgeChudWxsLEEpfWZ1bmN0aW9uIGhBKEEpe3JldHVybiB6QShBKSxBLmhlYWRlcnM9dy5mcm9tKEEuaGVhZGVycyksQS5kYXRhPXRBLmNhbGwoQSxBLnRyYW5zZm9ybVJlcXVlc3QpLFsicG9zdCIsInB1dCIsInBhdGNoIl0uaW5kZXhPZihBLm1ldGhvZCkhPT0tMSYmQS5oZWFkZXJzLnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLCExKSxtQS5nZXRBZGFwdGVyKEEuYWRhcHRlcnx8Vy5hZGFwdGVyKShBKS50aGVuKGZ1bmN0aW9uKHIpe3JldHVybiB6QShBKSxyLmRhdGE9dEEuY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2Usciksci5oZWFkZXJzPXcuZnJvbShyLmhlYWRlcnMpLHJ9LGZ1bmN0aW9uKHIpe3JldHVybiByQShyKXx8KHpBKEEpLHImJnIucmVzcG9uc2UmJihyLnJlc3BvbnNlLmRhdGE9dEEuY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2Usci5yZXNwb25zZSksci5yZXNwb25zZS5oZWFkZXJzPXcuZnJvbShyLnJlc3BvbnNlLmhlYWRlcnMpKSksUHJvbWlzZS5yZWplY3Qocil9KX12YXIgS2U9QT0+QSBpbnN0YW5jZW9mIHc/QS50b0pTT04oKTpBO2Z1bmN0aW9uIE8oQSxlKXtlPWV8fHt9O2xldCB0PXt9O2Z1bmN0aW9uIHIoQyxJLGEpe3JldHVybiBzLmlzUGxhaW5PYmplY3QoQykmJnMuaXNQbGFpbk9iamVjdChJKT9zLm1lcmdlLmNhbGwoe2Nhc2VsZXNzOmF9LEMsSSk6cy5pc1BsYWluT2JqZWN0KEkpP3MubWVyZ2Uoe30sSSk6cy5pc0FycmF5KEkpP0kuc2xpY2UoKTpJfWZ1bmN0aW9uIG4oQyxJLGEpe2lmKHMuaXNVbmRlZmluZWQoSSkpe2lmKCFzLmlzVW5kZWZpbmVkKEMpKXJldHVybiByKHZvaWQgMCxDLGEpfWVsc2UgcmV0dXJuIHIoQyxJLGEpfWZ1bmN0aW9uIGkoQyxJKXtpZighcy5pc1VuZGVmaW5lZChJKSlyZXR1cm4gcih2b2lkIDAsSSl9ZnVuY3Rpb24gbyhDLEkpe2lmKHMuaXNVbmRlZmluZWQoSSkpe2lmKCFzLmlzVW5kZWZpbmVkKEMpKXJldHVybiByKHZvaWQgMCxDKX1lbHNlIHJldHVybiByKHZvaWQgMCxJKX1mdW5jdGlvbiBnKEMsSSxhKXtpZihhIGluIGUpcmV0dXJuIHIoQyxJKTtpZihhIGluIEEpcmV0dXJuIHIodm9pZCAwLEMpfWxldCBsPXt1cmw6aSxtZXRob2Q6aSxkYXRhOmksYmFzZVVSTDpvLHRyYW5zZm9ybVJlcXVlc3Q6byx0cmFuc2Zvcm1SZXNwb25zZTpvLHBhcmFtc1NlcmlhbGl6ZXI6byx0aW1lb3V0Om8sdGltZW91dE1lc3NhZ2U6byx3aXRoQ3JlZGVudGlhbHM6byx3aXRoWFNSRlRva2VuOm8sYWRhcHRlcjpvLHJlc3BvbnNlVHlwZTpvLHhzcmZDb29raWVOYW1lOm8seHNyZkhlYWRlck5hbWU6byxvblVwbG9hZFByb2dyZXNzOm8sb25Eb3dubG9hZFByb2dyZXNzOm8sZGVjb21wcmVzczpvLG1heENvbnRlbnRMZW5ndGg6byxtYXhCb2R5TGVuZ3RoOm8sYmVmb3JlUmVkaXJlY3Q6byx0cmFuc3BvcnQ6byxodHRwQWdlbnQ6byxodHRwc0FnZW50Om8sY2FuY2VsVG9rZW46byxzb2NrZXRQYXRoOm8scmVzcG9uc2VFbmNvZGluZzpvLHZhbGlkYXRlU3RhdHVzOmcsaGVhZGVyczooQyxJKT0+bihLZShDKSxLZShJKSwhMCl9O3JldHVybiBzLmZvckVhY2goT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxBLGUpKSxmdW5jdGlvbihJKXtsZXQgYT1sW0ldfHxuLFE9YShBW0ldLGVbSV0sSSk7cy5pc1VuZGVmaW5lZChRKSYmYSE9PWd8fCh0W0ldPVEpfSksdH12YXIgeUE9IjEuNi4yIjt2YXIgVkE9e307WyJvYmplY3QiLCJib29sZWFuIiwibnVtYmVyIiwiZnVuY3Rpb24iLCJzdHJpbmciLCJzeW1ib2wiXS5mb3JFYWNoKChBLGUpPT57VkFbQV09ZnVuY3Rpb24ocil7cmV0dXJuIHR5cGVvZiByPT09QXx8ImEiKyhlPDE/Im4gIjoiICIpK0F9fSk7dmFyIFdlPXt9O1ZBLnRyYW5zaXRpb25hbD1mdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbihpLG8pe3JldHVybiJbQXhpb3MgdiIreUErIl0gVHJhbnNpdGlvbmFsIG9wdGlvbiAnIitpKyInIitvKyhyPyIuICIrcjoiIil9cmV0dXJuKGksbyxnKT0+e2lmKGU9PT0hMSl0aHJvdyBuZXcgcChuKG8sIiBoYXMgYmVlbiByZW1vdmVkIisodD8iIGluICIrdDoiIikpLHAuRVJSX0RFUFJFQ0FURUQpO3JldHVybiB0JiYhV2Vbb10mJihXZVtvXT0hMCxjb25zb2xlLndhcm4obihvLCIgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2Iit0KyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLGU/ZShpLG8sZyk6ITB9fTtmdW5jdGlvbiBicihBLGUsdCl7aWYodHlwZW9mIEEhPSJvYmplY3QiKXRocm93IG5ldyBwKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0IixwLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtsZXQgcj1PYmplY3Qua2V5cyhBKSxuPXIubGVuZ3RoO2Zvcig7bi0tID4wOyl7bGV0IGk9cltuXSxvPWVbaV07aWYobyl7bGV0IGc9QVtpXSxsPWc9PT12b2lkIDB8fG8oZyxpLEEpO2lmKGwhPT0hMCl0aHJvdyBuZXcgcCgib3B0aW9uICIraSsiIG11c3QgYmUgIitsLHAuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2NvbnRpbnVlfWlmKHQhPT0hMCl0aHJvdyBuZXcgcCgiVW5rbm93biBvcHRpb24gIitpLHAuRVJSX0JBRF9PUFRJT04pfX12YXIgd0E9e2Fzc2VydE9wdGlvbnM6YnIsdmFsaWRhdG9yczpWQX07dmFyIEo9d0EudmFsaWRhdG9ycyx2PWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuZGVmYXVsdHM9ZSx0aGlzLmludGVyY2VwdG9ycz17cmVxdWVzdDpuZXcgSkEscmVzcG9uc2U6bmV3IEpBfX1yZXF1ZXN0KGUsdCl7dHlwZW9mIGU9PSJzdHJpbmciPyh0PXR8fHt9LHQudXJsPWUpOnQ9ZXx8e30sdD1PKHRoaXMuZGVmYXVsdHMsdCk7bGV0e3RyYW5zaXRpb25hbDpyLHBhcmFtc1NlcmlhbGl6ZXI6bixoZWFkZXJzOml9PXQ7ciE9PXZvaWQgMCYmd0EuYXNzZXJ0T3B0aW9ucyhyLHtzaWxlbnRKU09OUGFyc2luZzpKLnRyYW5zaXRpb25hbChKLmJvb2xlYW4pLGZvcmNlZEpTT05QYXJzaW5nOkoudHJhbnNpdGlvbmFsKEouYm9vbGVhbiksY2xhcmlmeVRpbWVvdXRFcnJvcjpKLnRyYW5zaXRpb25hbChKLmJvb2xlYW4pfSwhMSksbiE9bnVsbCYmKHMuaXNGdW5jdGlvbihuKT90LnBhcmFtc1NlcmlhbGl6ZXI9e3NlcmlhbGl6ZTpufTp3QS5hc3NlcnRPcHRpb25zKG4se2VuY29kZTpKLmZ1bmN0aW9uLHNlcmlhbGl6ZTpKLmZ1bmN0aW9ufSwhMCkpLHQubWV0aG9kPSh0Lm1ldGhvZHx8dGhpcy5kZWZhdWx0cy5tZXRob2R8fCJnZXQiKS50b0xvd2VyQ2FzZSgpO2xldCBvPWkmJnMubWVyZ2UoaS5jb21tb24saVt0Lm1ldGhvZF0pO2kmJnMuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSxFPT57ZGVsZXRlIGlbRV19KSx0LmhlYWRlcnM9dy5jb25jYXQobyxpKTtsZXQgZz1bXSxsPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbihjKXt0eXBlb2YgYy5ydW5XaGVuPT0iZnVuY3Rpb24iJiZjLnJ1bldoZW4odCk9PT0hMXx8KGw9bCYmYy5zeW5jaHJvbm91cyxnLnVuc2hpZnQoYy5mdWxmaWxsZWQsYy5yZWplY3RlZCkpfSk7bGV0IEM9W107dGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihjKXtDLnB1c2goYy5mdWxmaWxsZWQsYy5yZWplY3RlZCl9KTtsZXQgSSxhPTAsUTtpZighbCl7bGV0IEU9W2hBLmJpbmQodGhpcyksdm9pZCAwXTtmb3IoRS51bnNoaWZ0LmFwcGx5KEUsZyksRS5wdXNoLmFwcGx5KEUsQyksUT1FLmxlbmd0aCxJPVByb21pc2UucmVzb2x2ZSh0KTthPFE7KUk9SS50aGVuKEVbYSsrXSxFW2ErK10pO3JldHVybiBJfVE9Zy5sZW5ndGg7bGV0IEI9dDtmb3IoYT0wO2E8UTspe2xldCBFPWdbYSsrXSxjPWdbYSsrXTt0cnl7Qj1FKEIpfWNhdGNoKHUpe2MuY2FsbCh0aGlzLHUpO2JyZWFrfX10cnl7ST1oQS5jYWxsKHRoaXMsQil9Y2F0Y2goRSl7cmV0dXJuIFByb21pc2UucmVqZWN0KEUpfWZvcihhPTAsUT1DLmxlbmd0aDthPFE7KUk9SS50aGVuKENbYSsrXSxDW2ErK10pO3JldHVybiBJfWdldFVyaShlKXtlPU8odGhpcy5kZWZhdWx0cyxlKTtsZXQgdD1uQShlLmJhc2VVUkwsZS51cmwpO3JldHVybiBBQSh0LGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplcil9fTtzLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyJdLGZ1bmN0aW9uKGUpe3YucHJvdG90eXBlW2VdPWZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMucmVxdWVzdChPKHJ8fHt9LHttZXRob2Q6ZSx1cmw6dCxkYXRhOihyfHx7fSkuZGF0YX0pKX19KTtzLmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIpe3JldHVybiBmdW5jdGlvbihpLG8sZyl7cmV0dXJuIHRoaXMucmVxdWVzdChPKGd8fHt9LHttZXRob2Q6ZSxoZWFkZXJzOnI/eyJDb250ZW50LVR5cGUiOiJtdWx0aXBhcnQvZm9ybS1kYXRhIn06e30sdXJsOmksZGF0YTpvfSkpfX12LnByb3RvdHlwZVtlXT10KCksdi5wcm90b3R5cGVbZSsiRm9ybSJdPXQoITApfSk7dmFyIGlBPXY7dmFyIFpBPWNsYXNzIEF7Y29uc3RydWN0b3IoZSl7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO2xldCB0O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihpKXt0PWl9KTtsZXQgcj10aGlzO3RoaXMucHJvbWlzZS50aGVuKG49PntpZighci5fbGlzdGVuZXJzKXJldHVybjtsZXQgaT1yLl9saXN0ZW5lcnMubGVuZ3RoO2Zvcig7aS0tID4wOylyLl9saXN0ZW5lcnNbaV0obik7ci5fbGlzdGVuZXJzPW51bGx9KSx0aGlzLnByb21pc2UudGhlbj1uPT57bGV0IGksbz1uZXcgUHJvbWlzZShnPT57ci5zdWJzY3JpYmUoZyksaT1nfSkudGhlbihuKTtyZXR1cm4gby5jYW5jZWw9ZnVuY3Rpb24oKXtyLnVuc3Vic2NyaWJlKGkpfSxvfSxlKGZ1bmN0aW9uKGksbyxnKXtyLnJlYXNvbnx8KHIucmVhc29uPW5ldyB4KGksbyxnKSx0KHIucmVhc29uKSl9KX10aHJvd0lmUmVxdWVzdGVkKCl7aWYodGhpcy5yZWFzb24pdGhyb3cgdGhpcy5yZWFzb259c3Vic2NyaWJlKGUpe2lmKHRoaXMucmVhc29uKXtlKHRoaXMucmVhc29uKTtyZXR1cm59dGhpcy5fbGlzdGVuZXJzP3RoaXMuX2xpc3RlbmVycy5wdXNoKGUpOnRoaXMuX2xpc3RlbmVycz1bZV19dW5zdWJzY3JpYmUoZSl7aWYoIXRoaXMuX2xpc3RlbmVycylyZXR1cm47bGV0IHQ9dGhpcy5fbGlzdGVuZXJzLmluZGV4T2YoZSk7dCE9PS0xJiZ0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKHQsMSl9c3RhdGljIHNvdXJjZSgpe2xldCBlO3JldHVybnt0b2tlbjpuZXcgQShmdW5jdGlvbihuKXtlPW59KSxjYW5jZWw6ZX19fSxqZT1aQTtmdW5jdGlvbiBYQShBKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIEEuYXBwbHkobnVsbCx0KX19ZnVuY3Rpb24gJEEoQSl7cmV0dXJuIHMuaXNPYmplY3QoQSkmJkEuaXNBeGlvc0Vycm9yPT09ITB9dmFyIEFlPXtDb250aW51ZToxMDAsU3dpdGNoaW5nUHJvdG9jb2xzOjEwMSxQcm9jZXNzaW5nOjEwMixFYXJseUhpbnRzOjEwMyxPazoyMDAsQ3JlYXRlZDoyMDEsQWNjZXB0ZWQ6MjAyLE5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbjoyMDMsTm9Db250ZW50OjIwNCxSZXNldENvbnRlbnQ6MjA1LFBhcnRpYWxDb250ZW50OjIwNixNdWx0aVN0YXR1czoyMDcsQWxyZWFkeVJlcG9ydGVkOjIwOCxJbVVzZWQ6MjI2LE11bHRpcGxlQ2hvaWNlczozMDAsTW92ZWRQZXJtYW5lbnRseTozMDEsRm91bmQ6MzAyLFNlZU90aGVyOjMwMyxOb3RNb2RpZmllZDozMDQsVXNlUHJveHk6MzA1LFVudXNlZDozMDYsVGVtcG9yYXJ5UmVkaXJlY3Q6MzA3LFBlcm1hbmVudFJlZGlyZWN0OjMwOCxCYWRSZXF1ZXN0OjQwMCxVbmF1dGhvcml6ZWQ6NDAxLFBheW1lbnRSZXF1aXJlZDo0MDIsRm9yYmlkZGVuOjQwMyxOb3RGb3VuZDo0MDQsTWV0aG9kTm90QWxsb3dlZDo0MDUsTm90QWNjZXB0YWJsZTo0MDYsUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkOjQwNyxSZXF1ZXN0VGltZW91dDo0MDgsQ29uZmxpY3Q6NDA5LEdvbmU6NDEwLExlbmd0aFJlcXVpcmVkOjQxMSxQcmVjb25kaXRpb25GYWlsZWQ6NDEyLFBheWxvYWRUb29MYXJnZTo0MTMsVXJpVG9vTG9uZzo0MTQsVW5zdXBwb3J0ZWRNZWRpYVR5cGU6NDE1LFJhbmdlTm90U2F0aXNmaWFibGU6NDE2LEV4cGVjdGF0aW9uRmFpbGVkOjQxNyxJbUFUZWFwb3Q6NDE4LE1pc2RpcmVjdGVkUmVxdWVzdDo0MjEsVW5wcm9jZXNzYWJsZUVudGl0eTo0MjIsTG9ja2VkOjQyMyxGYWlsZWREZXBlbmRlbmN5OjQyNCxUb29FYXJseTo0MjUsVXBncmFkZVJlcXVpcmVkOjQyNixQcmVjb25kaXRpb25SZXF1aXJlZDo0MjgsVG9vTWFueVJlcXVlc3RzOjQyOSxSZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2U6NDMxLFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zOjQ1MSxJbnRlcm5hbFNlcnZlckVycm9yOjUwMCxOb3RJbXBsZW1lbnRlZDo1MDEsQmFkR2F0ZXdheTo1MDIsU2VydmljZVVuYXZhaWxhYmxlOjUwMyxHYXRld2F5VGltZW91dDo1MDQsSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQ6NTA1LFZhcmlhbnRBbHNvTmVnb3RpYXRlczo1MDYsSW5zdWZmaWNpZW50U3RvcmFnZTo1MDcsTG9vcERldGVjdGVkOjUwOCxOb3RFeHRlbmRlZDo1MTAsTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6NTExfTtPYmplY3QuZW50cmllcyhBZSkuZm9yRWFjaCgoW0EsZV0pPT57QWVbZV09QX0pO3ZhciB2ZT1BZTtmdW5jdGlvbiBfZShBKXtsZXQgZT1uZXcgaUEoQSksdD1aKGlBLnByb3RvdHlwZS5yZXF1ZXN0LGUpO3JldHVybiBzLmV4dGVuZCh0LGlBLnByb3RvdHlwZSxlLHthbGxPd25LZXlzOiEwfSkscy5leHRlbmQodCxlLG51bGwse2FsbE93bktleXM6ITB9KSx0LmNyZWF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gX2UoTyhBLG4pKX0sdH12YXIgbT1fZShXKTttLkF4aW9zPWlBO20uQ2FuY2VsZWRFcnJvcj14O20uQ2FuY2VsVG9rZW49amU7bS5pc0NhbmNlbD1yQTttLlZFUlNJT049eUE7bS50b0Zvcm1EYXRhPVQ7bS5BeGlvc0Vycm9yPXA7bS5DYW5jZWw9bS5DYW5jZWxlZEVycm9yO20uYWxsPWZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChlKX07bS5zcHJlYWQ9WEE7bS5pc0F4aW9zRXJyb3I9JEE7bS5tZXJnZUNvbmZpZz1PO20uQXhpb3NIZWFkZXJzPXc7bS5mb3JtVG9KU09OPUE9PnBBKHMuaXNIVE1MRm9ybShBKT9uZXcgRm9ybURhdGEoQSk6QSk7bS5nZXRBZGFwdGVyPW1BLmdldEFkYXB0ZXI7bS5IdHRwU3RhdHVzQ29kZT12ZTttLmRlZmF1bHQ9bTt2YXIgXz1tO3ZhcntBeGlvczpabyxBeGlvc0Vycm9yOlhvLENhbmNlbGVkRXJyb3I6JG8saXNDYW5jZWw6QWEsQ2FuY2VsVG9rZW46ZWEsVkVSU0lPTjp0YSxhbGw6cmEsQ2FuY2VsOm5hLGlzQXhpb3NFcnJvcjppYSxzcHJlYWQ6b2EsdG9Gb3JtRGF0YTphYSxBeGlvc0hlYWRlcnM6c2EsSHR0cFN0YXR1c0NvZGU6SWEsZm9ybVRvSlNPTjpnYSxnZXRBZGFwdGVyOkJhLG1lcmdlQ29uZmlnOkNhfT1fO2FzeW5jIGZ1bmN0aW9uIFVyKEEsZSl7bGV0IHQ9QSxyPW51bGw7aWYodD09PW51bGwpcj1uZXcgV29ya2VyKG5ldyBVUkwoIi4vd2ViLXdvcmtlcnMvaXRrLXdhc20tcGlwZWxpbmUud29ya2VyLmpzIixpbXBvcnQubWV0YS51cmwpLHt0eXBlOiJtb2R1bGUifSk7ZWxzZSBpZih0LnN0YXJ0c1dpdGgoImh0dHAiKSl7bGV0IG49YXdhaXQgXy5nZXQodCx7cmVzcG9uc2VUeXBlOiJibG9iIixwYXJhbXM6ZX0pLGk9VVJMLmNyZWF0ZU9iamVjdFVSTChuLmRhdGEpO3I9bmV3IFdvcmtlcihpLHt0eXBlOiJtb2R1bGUifSl9ZWxzZSByPW5ldyBXb3JrZXIodCx7dHlwZToibW9kdWxlIn0pO3JldHVybiByfXZhciBvQT1VcjtmdW5jdGlvbiB6ZShBKXtsZXQgZT1OQShBKSx0PUE7cmV0dXJuIHQudGVybWluYXRlZD0hMSx0LndvcmtlclByb3h5PWUsdC5vcmlnaW5hbFRlcm1pbmF0ZT10LnRlcm1pbmF0ZSx0LnRlcm1pbmF0ZT0oKT0+e3QudGVybWluYXRlZD0hMCx0LndvcmtlclByb3h5W1VBXSgpLHQub3JpZ2luYWxUZXJtaW5hdGUoKX0se3dvcmtlclByb3h5OmUsd29ya2VyOnR9fWFzeW5jIGZ1bmN0aW9uIE5yKEEsZSx0KXtsZXQgcjtpZihBIT1udWxsKXtsZXQgaT1BO3JldHVybiBpLndvcmtlclByb3h5IT09dm9pZCAwPyhyPWkud29ya2VyUHJveHkse3dvcmtlclByb3h5OnIsd29ya2VyOml9KTp6ZShBKX1sZXQgbj1hd2FpdCBvQShlLHQpO3JldHVybiB6ZShuKX12YXIgVmU9TnI7YXN5bmMgZnVuY3Rpb24gR3IoQSxlLHQpe2xldCByPSJ1bmtub3duIjt0eXBlb2YgQSE9InN0cmluZyI/cj1BLmhyZWY6QS5zdGFydHNXaXRoKCJodHRwIik/cj1BOnI9dHlwZW9mIGU8InUiP2Ake2V9LyR7QX1gOkEsci5lbmRzV2l0aCgiLmpzIikmJihyPXIuc3Vic3RyaW5nKDAsci5sZW5ndGgtMykpLHIuZW5kc1dpdGgoIi53YXNtIikmJihyPXIuc3Vic3RyaW5nKDAsci5sZW5ndGgtNSkpO2xldCBuPWAke3J9Lndhc21gLG89KGF3YWl0IF8uZ2V0KG4se3Jlc3BvbnNlVHlwZToiYXJyYXlidWZmZXIiLHBhcmFtczp0fSkpLmRhdGE7cmV0dXJuKGF3YWl0IGltcG9ydChgJHtyfS5qc2ApKS5kZWZhdWx0KHt3YXNtQmluYXJ5Om99KX12YXIgWmU9R3I7dmFyIFhlPWFzeW5jKCk9PldlYkFzc2VtYmx5LnZhbGlkYXRlKG5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDUsMSw5NiwwLDEsMTIzLDMsMiwxLDAsMTAsMTAsMSw4LDAsNjUsMCwyNTMsMTUsMjUzLDk4LDExXSkpO3ZhciBldD10eXBlb2YgZ2xvYmFsVGhpcy5TaGFyZWRBcnJheUJ1ZmZlcj09ImZ1bmN0aW9uIiwkZT1uZXcgVGV4dEVuY29kZXIsQXQ9bmV3IFRleHREZWNvZGVyKCJ1dGYtOCIpO2Z1bmN0aW9uIExyKEEsZSl7bGV0IHQ9e2ZsYWdzOiJyIixlbmNvZGluZzoiYmluYXJ5In0scj1BLmZzX29wZW4oZSx0LmZsYWdzKSxpPUEuZnNfc3RhdChlKS5zaXplLG89bnVsbDtldD9vPW5ldyBTaGFyZWRBcnJheUJ1ZmZlcihpKTpvPW5ldyBBcnJheUJ1ZmZlcihpKTtsZXQgZz1uZXcgVWludDhBcnJheShvKTtyZXR1cm4gQS5mc19yZWFkKHIsZywwLGksMCksQS5mc19jbG9zZShyKSxnfWZ1bmN0aW9uIHR0KEEsZSx0KXtsZXQgcj1udWxsO2V0P3I9bmV3IFNoYXJlZEFycmF5QnVmZmVyKHQpOnI9bmV3IEFycmF5QnVmZmVyKHQpO2xldCBuPW5ldyBVaW50OEFycmF5KHIpLGk9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLGUsdCk7cmV0dXJuIG4uc2V0KGkpLG59ZnVuY3Rpb24gaChBLGUsdCxyKXtsZXQgbj0wO3JldHVybiBlIT09bnVsbCYmKG49QS5jY2FsbCgiaXRrX3dhc21faW5wdXRfYXJyYXlfYWxsb2MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsdCxyLGUuYnVmZmVyLmJ5dGVMZW5ndGhdKSxBLkhFQVBVOC5zZXQobmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpLG4pKSxufWZ1bmN0aW9uIHooQSxlLHQpe2xldCByPUpTT04uc3RyaW5naWZ5KGUpLG49QS5jY2FsbCgiaXRrX3dhc21faW5wdXRfanNvbl9hbGxvYyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCx0LHIubGVuZ3RoXSk7QS53cml0ZUFzY2lpVG9NZW1vcnkocixuLCExKX1mdW5jdGlvbiBTKEEsZSx0LHIpe2xldCBuPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLGUsdF0pLGk9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsZSx0XSksbz10dChBLG4saSk7cmV0dXJuIFAocixvLmJ1ZmZlcil9ZnVuY3Rpb24gZWUoQSxlKXtsZXQgdD1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfanNvbl9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciJdLFswLGVdKSxyPUEuQXNjaWlUb1N0cmluZyh0KTtyZXR1cm4gSlNPTi5wYXJzZShyKX1mdW5jdGlvbiBPcihBLGUsdCxyKXtyIT1udWxsJiZyLmxlbmd0aD4wJiZyLmZvckVhY2goZnVuY3Rpb24oQyxJKXtzd2l0Y2goQy50eXBlKXtjYXNlIGYuVGV4dFN0cmVhbTp7bGV0IGE9JGUuZW5jb2RlKEMuZGF0YS5kYXRhKSxRPWgoQSxhLEksMCksQj17c2l6ZTphLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWB9O3ooQSxCLEkpO2JyZWFrfWNhc2UgZi5Kc29uQ29tcGF0aWJsZTp7bGV0IGE9JGUuZW5jb2RlKEpTT04uc3RyaW5naWZ5KEMuZGF0YSkpLFE9aChBLGEsSSwwKSxCPXtzaXplOmEuYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1F9YH07eihBLEIsSSk7YnJlYWt9Y2FzZSBmLkJpbmFyeVN0cmVhbTp7bGV0IGE9Qy5kYXRhLmRhdGEsUT1oKEEsYSxJLDApLEI9e3NpemU6YS5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7UX1gfTt6KEEsQixJKTticmVha31jYXNlIGYuVGV4dEZpbGU6e0EuZnNfd3JpdGVGaWxlKEMuZGF0YS5wYXRoLEMuZGF0YS5kYXRhKTticmVha31jYXNlIGYuQmluYXJ5RmlsZTp7QS5mc193cml0ZUZpbGUoQy5kYXRhLnBhdGgsQy5kYXRhLmRhdGEpO2JyZWFrfWNhc2UgZi5JbWFnZTp7bGV0IGE9Qy5kYXRhLFE9aChBLGEuZGF0YSxJLDApLEI9aChBLGEuZGlyZWN0aW9uLEksMSksRT10eXBlb2YgYS5tZXRhZGF0YT8uZW50cmllczwidSI/SlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbShhLm1ldGFkYXRhLmVudHJpZXMoKSkpOiJbXSIsYz17aW1hZ2VUeXBlOmEuaW1hZ2VUeXBlLG5hbWU6YS5uYW1lLG9yaWdpbjphLm9yaWdpbixzcGFjaW5nOmEuc3BhY2luZyxkaXJlY3Rpb246YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtCfWAsc2l6ZTphLnNpemUsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1F9YCxtZXRhZGF0YTpFfTt6KEEsYyxJKTticmVha31jYXNlIGYuTWVzaDp7bGV0IGE9Qy5kYXRhLFE9aChBLGEucG9pbnRzLEksMCksQj1oKEEsYS5jZWxscyxJLDEpLEU9aChBLGEucG9pbnREYXRhLEksMiksYz1oKEEsYS5jZWxsRGF0YSxJLDMpLHU9e21lc2hUeXBlOmEubWVzaFR5cGUsbmFtZTphLm5hbWUsbnVtYmVyT2ZQb2ludHM6YS5udW1iZXJPZlBvaW50cyxwb2ludHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWAsbnVtYmVyT2ZDZWxsczphLm51bWJlck9mQ2VsbHMsY2VsbHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtCfWAsY2VsbEJ1ZmZlclNpemU6YS5jZWxsQnVmZmVyU2l6ZSxudW1iZXJPZlBvaW50UGl4ZWxzOmEubnVtYmVyT2ZQb2ludFBpeGVscyxwb2ludERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtFfWAsbnVtYmVyT2ZDZWxsUGl4ZWxzOmEubnVtYmVyT2ZDZWxsUGl4ZWxzLGNlbGxEYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gfTt6KEEsdSxJKTticmVha31jYXNlIGYuUG9seURhdGE6e2xldCBhPUMuZGF0YSxRPWgoQSxhLnBvaW50cyxJLDApLEI9aChBLGEudmVydGljZXMsSSwxKSxFPWgoQSxhLmxpbmVzLEksMiksYz1oKEEsYS5wb2x5Z29ucyxJLDMpLHU9aChBLGEudHJpYW5nbGVTdHJpcHMsSSw0KSxkPWgoQSxhLnBvaW50RGF0YSxJLDUpLGI9aChBLGEucG9pbnREYXRhLEksNiksVT17cG9seURhdGFUeXBlOmEucG9seURhdGFUeXBlLG5hbWU6YS5uYW1lLG51bWJlck9mUG9pbnRzOmEubnVtYmVyT2ZQb2ludHMscG9pbnRzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7UX1gLHZlcnRpY2VzQnVmZmVyU2l6ZTphLnZlcnRpY2VzQnVmZmVyU2l6ZSx2ZXJ0aWNlczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0J9YCxsaW5lc0J1ZmZlclNpemU6YS5saW5lc0J1ZmZlclNpemUsbGluZXM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtFfWAscG9seWdvbnNCdWZmZXJTaXplOmEucG9seWdvbnNCdWZmZXJTaXplLHBvbHlnb25zOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gLHRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZTphLnRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZSx0cmlhbmdsZVN0cmlwczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke3V9YCxudW1iZXJPZlBvaW50UGl4ZWxzOmEubnVtYmVyT2ZQb2ludFBpeGVscyxwb2ludERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtkfWAsbnVtYmVyT2ZDZWxsUGl4ZWxzOmEubnVtYmVyT2ZDZWxsUGl4ZWxzLGNlbGxEYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Yn1gfTt6KEEsVSxJKTticmVha31kZWZhdWx0OnRocm93IEVycm9yKCJVbnN1cHBvcnRlZCBpbnB1dCBJbnRlcmZhY2VUeXBlIil9fSksQS5yZXNldE1vZHVsZVN0ZG91dCgpLEEucmVzZXRNb2R1bGVTdGRlcnIoKTtsZXQgbj1BLnN0YWNrU2F2ZSgpLGk9MDt0cnl7aT1BLmNhbGxNYWluKGUuc2xpY2UoKSl9Y2F0Y2goQyl7dGhyb3cgdHlwZW9mIEM9PSJudW1iZXIiJiYoY29uc29sZS5sb2coIkV4Y2VwdGlvbiB3aGlsZSBydW5uaW5nIHBpcGVsaW5lOiIpLGNvbnNvbGUubG9nKCJzdGRvdXQ6IixBLmdldE1vZHVsZVN0ZG91dCgpKSxjb25zb2xlLmVycm9yKCJzdGRlcnI6IixBLmdldE1vZHVsZVN0ZGVycigpKSx0eXBlb2YgQS5nZXRFeGNlcHRpb25NZXNzYWdlPCJ1Ij9jb25zb2xlLmVycm9yKCJleGNlcHRpb246IixBLmdldEV4Y2VwdGlvbk1lc3NhZ2UoQykpOmNvbnNvbGUuZXJyb3IoIkJ1aWxkIG1vZHVsZSBpbiBEZWJ1ZyBtb2RlIGZvciBleGNlcHRpb24gbWVzc2FnZSBpbmZvcm1hdGlvbi4iKSksQ31maW5hbGx5e0Euc3RhY2tSZXN0b3JlKG4pfWxldCBvPUEuZ2V0TW9kdWxlU3Rkb3V0KCksZz1BLmdldE1vZHVsZVN0ZGVycigpLGw9W107cmV0dXJuIHQhPW51bGwmJnQubGVuZ3RoPjAmJmk9PT0wJiZ0LmZvckVhY2goZnVuY3Rpb24oQyxJKXtsZXQgYT1udWxsO3N3aXRjaChDLnR5cGUpe2Nhc2UgZi5UZXh0U3RyZWFtOntsZXQgQj1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxJLDBdKSxFPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEksMF0pLGM9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLEIsRSk7YT17ZGF0YTpBdC5kZWNvZGUoYyl9O2JyZWFrfWNhc2UgZi5Kc29uQ29tcGF0aWJsZTp7bGV0IEI9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsSSwwXSksRT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxJLDBdKSxjPW5ldyBVaW50OEFycmF5KEEuSEVBUFU4LmJ1ZmZlcixCLEUpO2E9SlNPTi5wYXJzZShBdC5kZWNvZGUoYykpO2JyZWFrfWNhc2UgZi5CaW5hcnlTdHJlYW06e2xldCBCPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEksMF0pLEU9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsSSwwXSk7YT17ZGF0YTp0dChBLEIsRSl9O2JyZWFrfWNhc2UgZi5UZXh0RmlsZTp7YT17cGF0aDpDLmRhdGEucGF0aCxkYXRhOkEuZnNfcmVhZEZpbGUoQy5kYXRhLnBhdGgse2VuY29kaW5nOiJ1dGY4In0pfTticmVha31jYXNlIGYuQmluYXJ5RmlsZTp7YT17cGF0aDpDLmRhdGEucGF0aCxkYXRhOkxyKEEsQy5kYXRhLnBhdGgpfTticmVha31jYXNlIGYuSW1hZ2U6e2xldCBCPWVlKEEsSSk7Qi5kYXRhPVMoQSxJLDAsQi5pbWFnZVR5cGUuY29tcG9uZW50VHlwZSksQi5kaXJlY3Rpb249UyhBLEksMSxNLkZsb2F0NjQpLEIubWV0YWRhdGE9bmV3IE1hcChCLm1ldGFkYXRhKSxhPUI7YnJlYWt9Y2FzZSBmLk1lc2g6e2xldCBCPWVlKEEsSSk7Qi5udW1iZXJPZlBvaW50cz4wP0IucG9pbnRzPVMoQSxJLDAsQi5tZXNoVHlwZS5wb2ludENvbXBvbmVudFR5cGUpOkIucG9pbnRzPVAoQi5tZXNoVHlwZS5wb2ludENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxCLm51bWJlck9mQ2VsbHM+MD9CLmNlbGxzPVMoQSxJLDEsQi5tZXNoVHlwZS5jZWxsQ29tcG9uZW50VHlwZSk6Qi5jZWxscz1QKEIubWVzaFR5cGUuY2VsbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxCLm51bWJlck9mUG9pbnRQaXhlbHM+MD9CLnBvaW50RGF0YT1TKEEsSSwyLEIubWVzaFR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUpOkIucG9pbnREYXRhPVAoQi5tZXNoVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEIubnVtYmVyT2ZDZWxsUGl4ZWxzPjA/Qi5jZWxsRGF0YT1TKEEsSSwzLEIubWVzaFR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSk6Qi5jZWxsRGF0YT1QKEIubWVzaFR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLGE9QjticmVha31jYXNlIGYuUG9seURhdGE6e2xldCBCPWVlKEEsSSk7Qi5udW1iZXJPZlBvaW50cz4wP0IucG9pbnRzPVMoQSxJLDAsTS5GbG9hdDMyKTpCLnBvaW50cz1uZXcgRmxvYXQzMkFycmF5LEIudmVydGljZXNCdWZmZXJTaXplPjA/Qi52ZXJ0aWNlcz1TKEEsSSwxLEQuVUludDMyKTpCLnZlcnRpY2VzPW5ldyBVaW50MzJBcnJheSxCLmxpbmVzQnVmZmVyU2l6ZT4wP0IubGluZXM9UyhBLEksMixELlVJbnQzMik6Qi5saW5lcz1uZXcgVWludDMyQXJyYXksQi5wb2x5Z29uc0J1ZmZlclNpemU+MD9CLnBvbHlnb25zPVMoQSxJLDMsRC5VSW50MzIpOkIucG9seWdvbnM9bmV3IFVpbnQzMkFycmF5LEIudHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplPjA/Qi50cmlhbmdsZVN0cmlwcz1TKEEsSSw0LEQuVUludDMyKTpCLnRyaWFuZ2xlU3RyaXBzPW5ldyBVaW50MzJBcnJheSxCLm51bWJlck9mUG9pbnRQaXhlbHM+MD9CLnBvaW50RGF0YT1TKEEsSSw1LEIucG9seURhdGFUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlKTpCLnBvaW50RGF0YT1QKEIucG9seURhdGFUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksQi5udW1iZXJPZkNlbGxQaXhlbHM+MD9CLmNlbGxEYXRhPVMoQSxJLDYsQi5wb2x5RGF0YVR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSk6Qi5jZWxsRGF0YT1QKEIucG9seURhdGFUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxhPUI7YnJlYWt9ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5zdXBwb3J0ZWQgb3V0cHV0IEludGVyZmFjZVR5cGUiKX1sZXQgUT17dHlwZTpDLnR5cGUsZGF0YTphfTtsLnB1c2goUSl9KSx7cmV0dXJuVmFsdWU6aSxzdGRvdXQ6byxzdGRlcnI6ZyxvdXRwdXRzOmx9fXZhciBydD1Pcjt2YXIgUHI9dHlwZW9mIGdsb2JhbFRoaXMuU2hhcmVkQXJyYXlCdWZmZXI8InUiO2Z1bmN0aW9uIFRyKEEsZSl7aWYoQT09bnVsbClyZXR1cm5bXTtsZXQgdD1bXTtmb3IobGV0IHI9MDtyPEEubGVuZ3RoO3IrKyl7bGV0IG49eHIoQVtyXSxlKTtuIT09bnVsbCYmdC5wdXNoKG4pfXJldHVybiB0fWZ1bmN0aW9uIHhyKEEsZSl7aWYoQT09bnVsbClyZXR1cm4gbnVsbDtsZXQgdD1udWxsO3JldHVybiBBLmJ1ZmZlciE9PXZvaWQgMD90PUEuYnVmZmVyOkEuYnl0ZUxlbmd0aCE9PXZvaWQgMCYmKHQ9QSksUHImJnQgaW5zdGFuY2VvZiBTaGFyZWRBcnJheUJ1ZmZlcj9udWxsOmU/dDp0LnNsaWNlKDApfXZhciBudD1UcjtmdW5jdGlvbiBKcihBKXtyZXR1cm5bQS5kYXRhLEEuZGlyZWN0aW9uXX12YXIgaXQ9SnI7ZnVuY3Rpb24gSHIoQSl7cmV0dXJuW0EucG9pbnRzLEEucG9pbnREYXRhLEEuY2VsbHMsQS5jZWxsRGF0YV19dmFyIG90PUhyO2Z1bmN0aW9uIE1yKEEpe3JldHVybltBLnBvaW50cyxBLnZlcnRpY2VzLEEubGluZXMsQS5wb2x5Z29ucyxBLnRyaWFuZ2xlU3RyaXBzLEEucG9pbnREYXRhLEEuY2VsbERhdGFdfXZhciBhdD1Ncjt2YXIgWXI7ZnVuY3Rpb24gREEoKXtyZXR1cm4gWXJ9dmFyIHFyO2Z1bmN0aW9uIHN0KCl7cmV0dXJuIHFyfXZhciBLcjtmdW5jdGlvbiBTQSgpe3JldHVybiBLcn12YXIgdGU9bmV3IE1hcDtmdW5jdGlvbiBXcigpe2xldCBBPVNBKCk7cmV0dXJuIHR5cGVvZiBBPiJ1IiYmKEE9bnVsbCksQX1mdW5jdGlvbiBJdCgpe2xldCBBPURBKCk7cmV0dXJuIHR5cGVvZiBBPiJ1IiYmKEE9bmV3IFVSTCgiL3BpcGVsaW5lcyIsZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luKS5ocmVmKSxBfWZ1bmN0aW9uIGtBKCl7bGV0IEE9c3QoKTtyZXR1cm4gdHlwZW9mIEE+InUiJiYoQT17fSksQX1hc3luYyBmdW5jdGlvbiBqcihBLGUsdCl7bGV0IHI9QSxuPUE7aWYodHlwZW9mIEEhPSJzdHJpbmciJiYocj1uZXcgVVJMKEEuaHJlZiksbj1yLmhyZWYpLHRlLmhhcyhuKSlyZXR1cm4gdGUuZ2V0KG4pO3tsZXQgaT1hd2FpdCBaZShBLGU/LnRvU3RyaW5nKCk/P0l0KCksdD8/a0EoKSk7cmV0dXJuIHRlLnNldChuLGkpLGl9fWFzeW5jIGZ1bmN0aW9uIHZyKEEsZSx0LHIsbil7aWYoIWF3YWl0IFhlKCkpe2xldCB1PSJXZWJBc3NlbWJseSBTSU1EIHN1cHBvcnQgaXMgcmVxdWlyZWQgLS0gcGxlYXNlIHVwZGF0ZSB5b3VyIGJyb3dzZXIuIjt0aHJvdyBhbGVydCh1KSxuZXcgRXJyb3IodSl9bGV0IGk9bj8ud2ViV29ya2VyPz9udWxsO2lmKGk9PT0hMSl7bGV0IHU9YXdhaXQganIoQS50b1N0cmluZygpLG4/LnBpcGVsaW5lQmFzZVVybCxuPy5waXBlbGluZVF1ZXJ5UGFyYW1zPz9rQSgpKTtyZXR1cm4gcnQodSxlLHQscil9bGV0IG89aSxnPW4/LnBpcGVsaW5lV29ya2VyVXJsPz9XcigpLGw9dHlwZW9mIGchPSJzdHJpbmciJiZ0eXBlb2YgZz8uaHJlZjwidSI/Zy5ocmVmOmcse3dvcmtlclByb3h5OkMsd29ya2VyOkl9PWF3YWl0IFZlKG8sbCxuPy5waXBlbGluZVF1ZXJ5UGFyYW1zPz9rQSgpKTtvPUk7bGV0IGE9W107ciE9bnVsbCYmci5sZW5ndGg+MCYmci5mb3JFYWNoKGZ1bmN0aW9uKHUpe2lmKHUudHlwZT09PWYuQmluYXJ5U3RyZWFtKXtsZXQgZD11LmRhdGEuZGF0YTthLnB1c2goZCl9ZWxzZSBpZih1LnR5cGU9PT1mLkJpbmFyeUZpbGUpe2xldCBkPXUuZGF0YS5kYXRhO2EucHVzaChkKX1lbHNlIGlmKHUudHlwZT09PWYuSW1hZ2Upe2xldCBkPXUuZGF0YTtkLmRhdGEhPT1udWxsJiZhLnB1c2goLi4uaXQoZCkpfWVsc2UgaWYodS50eXBlPT09Zi5NZXNoKXtsZXQgZD11LmRhdGE7YS5wdXNoKC4uLm90KGQpKX1lbHNlIGlmKHUudHlwZT09PWYuUG9seURhdGEpe2xldCBkPXUuZGF0YTthLnB1c2goLi4uYXQoZCkpfX0pO2xldCBRPW4/LnBpcGVsaW5lQmFzZVVybD8/SXQoKSxCPXR5cGVvZiBRIT0ic3RyaW5nIiYmdHlwZW9mIFE/LmhyZWY8InUiP1EuaHJlZjpRLEU9ciE9bnVsbD9HQShyLG50KGEsbj8ubm9Db3B5KSk6bnVsbCxjPWF3YWl0IEMucnVuUGlwZWxpbmUoQS50b1N0cmluZygpLEIsZSx0LEUsbj8ucGlwZWxpbmVRdWVyeVBhcmFtcz8/a0EoKSk7cmV0dXJue3JldHVyblZhbHVlOmMucmV0dXJuVmFsdWUsc3Rkb3V0OmMuc3Rkb3V0LHN0ZGVycjpjLnN0ZGVycixvdXRwdXRzOmMub3V0cHV0cyx3ZWJXb3JrZXI6b319dmFyIEY9dnI7dmFyIF9yPW51bGw7ZnVuY3Rpb24gZ3QoKXtyZXR1cm4gX3J9dmFyIHJlLHpyPWBodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpdGstd2FzbS9kb3duc2FtcGxlQCR7UkF9L2Rpc3QvcGlwZWxpbmVzYDtmdW5jdGlvbiB0cyhBKXtyZT1BfWZ1bmN0aW9uIEcoKXtpZih0eXBlb2YgcmU8InUiKXJldHVybiByZTtsZXQgQT1EQSgpO3JldHVybiB0eXBlb2YgQTwidSI/QTp6cn12YXIgbmUsVnI9bnVsbDtmdW5jdGlvbiBCdChBKXtuZT1BfWZ1bmN0aW9uIFIoKXtpZih0eXBlb2YgbmU8InUiKXJldHVybiBuZTtsZXQgQT1TQSgpO3JldHVybiB0eXBlb2YgQTwidSI/QTpWcn12YXIgVj1udWxsO2FzeW5jIGZ1bmN0aW9uIEN0KCl7bGV0IEE9UigpLGU9dHlwZW9mIEEhPSJzdHJpbmciJiZ0eXBlb2YgQT8uaHJlZjwidSI/QS5ocmVmOkE7Vj1hd2FpdCBvQShlKX1mdW5jdGlvbiBJcyhBKXtWPUF9YXN5bmMgZnVuY3Rpb24gTCgpe2lmKFYhPT1udWxsKXJldHVybiBWLnRlcm1pbmF0ZWQmJmF3YWl0IEN0KCksVjtsZXQgQT1ndCgpO3JldHVybiBBIT09bnVsbD9BOihhd2FpdCBDdCgpLFYpfWFzeW5jIGZ1bmN0aW9uIFpyKEEsZT17c2hyaW5rRmFjdG9yczpbMiwyXX0pe2xldCB0PVt7dHlwZTpmLkltYWdlfV0scj1be3R5cGU6Zi5JbWFnZSxkYXRhOkF9XSxuPVtdLGk9IjAiO24ucHVzaChpKTtsZXQgbz0iMCI7aWYobi5wdXNoKG8pLG4ucHVzaCgiLS1tZW1vcnktaW8iKSxlLnNocmlua0ZhY3RvcnMpe2lmKGUuc2hyaW5rRmFjdG9ycy5sZW5ndGg8Mil0aHJvdyBuZXcgRXJyb3IoJyJzaHJpbmstZmFjdG9ycyIgb3B0aW9uIG11c3QgaGF2ZSBhIGxlbmd0aCA+IDInKTtuLnB1c2goIi0tc2hyaW5rLWZhY3RvcnMiKSxhd2FpdCBQcm9taXNlLmFsbChlLnNocmlua0ZhY3RvcnMubWFwKGFzeW5jIEU9PntuLnB1c2goRS50b1N0cmluZygpKX0pKX1lLmluZm9ybWF0aW9uT25seSYmZS5pbmZvcm1hdGlvbk9ubHkmJm4ucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5Iik7bGV0IGc9ImRvd25zYW1wbGUtYmluLXNocmluayIsbD1lPy53ZWJXb3JrZXI7bD09PXZvaWQgMCYmKGw9YXdhaXQgTCgpKTtsZXR7d2ViV29ya2VyOkMscmV0dXJuVmFsdWU6SSxzdGRlcnI6YSxvdXRwdXRzOlF9PWF3YWl0IEYoZyxuLHQscix7cGlwZWxpbmVCYXNlVXJsOkcoKSxwaXBlbGluZVdvcmtlclVybDpSKCksd2ViV29ya2VyOmwsbm9Db3B5OmU/Lm5vQ29weX0pO2lmKEkhPT0wJiZhIT09IiIpdGhyb3cgbmV3IEVycm9yKGEpO3JldHVybnt3ZWJXb3JrZXI6Qyxkb3duc2FtcGxlZDpRWzBdPy5kYXRhfX12YXIgWHI9WnI7YXN5bmMgZnVuY3Rpb24gJHIoQSxlPXtzaHJpbmtGYWN0b3JzOlsyLDJdfSl7bGV0IHQ9W3t0eXBlOmYuSW1hZ2V9XSxyPVt7dHlwZTpmLkltYWdlLGRhdGE6QX1dLG49W10saT0iMCI7bi5wdXNoKGkpO2xldCBvPSIwIjtpZihuLnB1c2gobyksbi5wdXNoKCItLW1lbW9yeS1pbyIpLGUuc2hyaW5rRmFjdG9ycyl7aWYoZS5zaHJpbmtGYWN0b3JzLmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcignInNocmluay1mYWN0b3JzIiBvcHRpb24gbXVzdCBoYXZlIGEgbGVuZ3RoID4gMicpO24ucHVzaCgiLS1zaHJpbmstZmFjdG9ycyIpLGF3YWl0IFByb21pc2UuYWxsKGUuc2hyaW5rRmFjdG9ycy5tYXAoYXN5bmMgRT0+e24ucHVzaChFLnRvU3RyaW5nKCkpfSkpfWlmKGUuY3JvcFJhZGl1cyl7aWYoZS5jcm9wUmFkaXVzLmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcignImNyb3AtcmFkaXVzIiBvcHRpb24gbXVzdCBoYXZlIGEgbGVuZ3RoID4gMicpO24ucHVzaCgiLS1jcm9wLXJhZGl1cyIpLGF3YWl0IFByb21pc2UuYWxsKGUuY3JvcFJhZGl1cy5tYXAoYXN5bmMgRT0+e24ucHVzaChFLnRvU3RyaW5nKCkpfSkpfWxldCBnPSJkb3duc2FtcGxlLWxhYmVsLWltYWdlIixsPWU/LndlYldvcmtlcjtsPT09dm9pZCAwJiYobD1hd2FpdCBMKCkpO2xldHt3ZWJXb3JrZXI6QyxyZXR1cm5WYWx1ZTpJLHN0ZGVycjphLG91dHB1dHM6UX09YXdhaXQgRihnLG4sdCxyLHtwaXBlbGluZUJhc2VVcmw6RygpLHBpcGVsaW5lV29ya2VyVXJsOlIoKSx3ZWJXb3JrZXI6bCxub0NvcHk6ZT8ubm9Db3B5fSk7aWYoSSE9PTAmJmEhPT0iIil0aHJvdyBuZXcgRXJyb3IoYSk7cmV0dXJue3dlYldvcmtlcjpDLGRvd25zYW1wbGVkOlFbMF0/LmRhdGF9fXZhciBBbj0kcjthc3luYyBmdW5jdGlvbiBlbihBPXtzaHJpbmtGYWN0b3JzOlsyLDJdfSl7bGV0IGU9W3t0eXBlOmYuSnNvbkNvbXBhdGlibGV9XSx0PVtdLHI9W10sbj0iMCI7aWYoci5wdXNoKG4pLHIucHVzaCgiLS1tZW1vcnktaW8iKSx0eXBlb2YgQS5zaHJpbmtGYWN0b3JzPCJ1Iil7aWYoQS5zaHJpbmtGYWN0b3JzLmxlbmd0aDwxKXRocm93IG5ldyBFcnJvcignInNocmluay1mYWN0b3JzIiBvcHRpb24gbXVzdCBoYXZlIGEgbGVuZ3RoID4gMScpO3IucHVzaCgiLS1zaHJpbmstZmFjdG9ycyIpLGF3YWl0IFByb21pc2UuYWxsKEEuc2hyaW5rRmFjdG9ycy5tYXAoYXN5bmMgUT0+e3IucHVzaChRLnRvU3RyaW5nKCkpfSkpfWxldCBpPSJkb3duc2FtcGxlLXNpZ21hIixvPUE/LndlYldvcmtlcjtvPT09dm9pZCAwJiYobz1hd2FpdCBMKCkpO2xldHt3ZWJXb3JrZXI6ZyxyZXR1cm5WYWx1ZTpsLHN0ZGVycjpDLG91dHB1dHM6SX09YXdhaXQgRihpLHIsZSx0LHtwaXBlbGluZUJhc2VVcmw6RygpLHBpcGVsaW5lV29ya2VyVXJsOlIoKSx3ZWJXb3JrZXI6byxub0NvcHk6QT8ubm9Db3B5fSk7aWYobCE9PTAmJkMhPT0iIil0aHJvdyBuZXcgRXJyb3IoQyk7cmV0dXJue3dlYldvcmtlcjpnLHNpZ21hOklbMF0/LmRhdGF9fXZhciB0bj1lbjthc3luYyBmdW5jdGlvbiBybihBLGU9e3Nocmlua0ZhY3RvcnM6WzIsMl19KXtsZXQgdD1be3R5cGU6Zi5JbWFnZX1dLHI9W3t0eXBlOmYuSW1hZ2UsZGF0YTpBfV0sbj1bXSxpPSIwIjtuLnB1c2goaSk7bGV0IG89IjAiO2lmKG4ucHVzaChvKSxuLnB1c2goIi0tbWVtb3J5LWlvIiksZS5zaHJpbmtGYWN0b3JzKXtpZihlLnNocmlua0ZhY3RvcnMubGVuZ3RoPDIpdGhyb3cgbmV3IEVycm9yKCcic2hyaW5rLWZhY3RvcnMiIG9wdGlvbiBtdXN0IGhhdmUgYSBsZW5ndGggPiAyJyk7bi5wdXNoKCItLXNocmluay1mYWN0b3JzIiksYXdhaXQgUHJvbWlzZS5hbGwoZS5zaHJpbmtGYWN0b3JzLm1hcChhc3luYyBFPT57bi5wdXNoKEUudG9TdHJpbmcoKSl9KSl9aWYoZS5jcm9wUmFkaXVzKXtpZihlLmNyb3BSYWRpdXMubGVuZ3RoPDIpdGhyb3cgbmV3IEVycm9yKCciY3JvcC1yYWRpdXMiIG9wdGlvbiBtdXN0IGhhdmUgYSBsZW5ndGggPiAyJyk7bi5wdXNoKCItLWNyb3AtcmFkaXVzIiksYXdhaXQgUHJvbWlzZS5hbGwoZS5jcm9wUmFkaXVzLm1hcChhc3luYyBFPT57bi5wdXNoKEUudG9TdHJpbmcoKSl9KSl9bGV0IGc9ImRvd25zYW1wbGUiLGw9ZT8ud2ViV29ya2VyO2w9PT12b2lkIDAmJihsPWF3YWl0IEwoKSk7bGV0e3dlYldvcmtlcjpDLHJldHVyblZhbHVlOkksc3RkZXJyOmEsb3V0cHV0czpRfT1hd2FpdCBGKGcsbix0LHIse3BpcGVsaW5lQmFzZVVybDpHKCkscGlwZWxpbmVXb3JrZXJVcmw6UigpLHdlYldvcmtlcjpsLG5vQ29weTplPy5ub0NvcHl9KTtpZihJIT09MCYmYSE9PSIiKXRocm93IG5ldyBFcnJvcihhKTtyZXR1cm57d2ViV29ya2VyOkMsZG93bnNhbXBsZWQ6UVswXT8uZGF0YX19dmFyIG5uPXJuO2FzeW5jIGZ1bmN0aW9uIG9uKEE9e3NpemU6WzEsMV0sc2lnbWE6WzEsMV19KXtsZXQgZT1be3R5cGU6Zi5Kc29uQ29tcGF0aWJsZX1dLHQ9W10scj1bXSxuPSIwIjtpZihyLnB1c2gobiksci5wdXNoKCItLW1lbW9yeS1pbyIpLHR5cGVvZiBBLnNpemU8InUiKXtpZihBLnNpemUubGVuZ3RoPDEpdGhyb3cgbmV3IEVycm9yKCcic2l6ZSIgb3B0aW9uIG11c3QgaGF2ZSBhIGxlbmd0aCA+IDEnKTtyLnB1c2goIi0tc2l6ZSIpLGF3YWl0IFByb21pc2UuYWxsKEEuc2l6ZS5tYXAoYXN5bmMgUT0+e3IucHVzaChRLnRvU3RyaW5nKCkpfSkpfWlmKHR5cGVvZiBBLnNpZ21hPCJ1Iil7aWYoQS5zaWdtYS5sZW5ndGg8MSl0aHJvdyBuZXcgRXJyb3IoJyJzaWdtYSIgb3B0aW9uIG11c3QgaGF2ZSBhIGxlbmd0aCA+IDEnKTtyLnB1c2goIi0tc2lnbWEiKSxhd2FpdCBQcm9taXNlLmFsbChBLnNpZ21hLm1hcChhc3luYyBRPT57ci5wdXNoKFEudG9TdHJpbmcoKSl9KSl9dHlwZW9mIEEubWF4S2VybmVsV2lkdGg8InUiJiZyLnB1c2goIi0tbWF4LWtlcm5lbC13aWR0aCIsQS5tYXhLZXJuZWxXaWR0aC50b1N0cmluZygpKSx0eXBlb2YgQS5tYXhLZXJuZWxFcnJvcjwidSImJnIucHVzaCgiLS1tYXgta2VybmVsLWVycm9yIixBLm1heEtlcm5lbEVycm9yLnRvU3RyaW5nKCkpO2xldCBpPSJnYXVzc2lhbi1rZXJuZWwtcmFkaXVzIixvPUE/LndlYldvcmtlcjtvPT09dm9pZCAwJiYobz1hd2FpdCBMKCkpO2xldHt3ZWJXb3JrZXI6ZyxyZXR1cm5WYWx1ZTpsLHN0ZGVycjpDLG91dHB1dHM6SX09YXdhaXQgRihpLHIsZSx0LHtwaXBlbGluZUJhc2VVcmw6RygpLHBpcGVsaW5lV29ya2VyVXJsOlIoKSx3ZWJXb3JrZXI6byxub0NvcHk6QT8ubm9Db3B5fSk7aWYobCE9PTAmJkMhPT0iIil0aHJvdyBuZXcgRXJyb3IoQyk7cmV0dXJue3dlYldvcmtlcjpnLHJhZGl1czpJWzBdPy5kYXRhfX12YXIgYW49b247dmFyIGx0PSdkYXRhOnRleHQvamF2YXNjcmlwdDtjaGFyc2V0PXV0Zi04LHZhciB0dD1PYmplY3QuZGVmaW5lUHJvcGVydHk7dmFyIGV0PShBLEkpPT57Zm9yKHZhciB0IGluIEkpdHQoQSx0LHtnZXQ6SVt0XSxlbnVtZXJhYmxlOiEwfSl9O3ZhciB2QT1TeW1ib2woIkNvbWxpbmsucHJveHkiKSxndD1TeW1ib2woIkNvbWxpbmsuZW5kcG9pbnQiKSxydD1TeW1ib2woIkNvbWxpbmsucmVsZWFzZVByb3h5IiksbUE9U3ltYm9sKCJDb21saW5rLmZpbmFsaXplciIpLGVBPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSwkQT1BPT50eXBlb2YgQT09Im9iamVjdCImJkEhPT1udWxsfHx0eXBlb2YgQT09ImZ1bmN0aW9uIixpdD17Y2FuSGFuZGxlOkE9PiRBKEEpJiZBW3ZBXSxzZXJpYWxpemUoQSl7bGV0e3BvcnQxOkkscG9ydDI6dH09bmV3IE1lc3NhZ2VDaGFubmVsO3JldHVybiBvQShBLEkpLFt0LFt0XV19LGRlc2VyaWFsaXplKEEpe3JldHVybiBBLnN0YXJ0KCksc3QoQSl9fSxvdD17Y2FuSGFuZGxlOkE9PiRBKEEpJiZlQSBpbiBBLHNlcmlhbGl6ZSh7dmFsdWU6QX0pe2xldCBJO3JldHVybiBBIGluc3RhbmNlb2YgRXJyb3I/ST17aXNFcnJvcjohMCx2YWx1ZTp7bWVzc2FnZTpBLm1lc3NhZ2UsbmFtZTpBLm5hbWUsc3RhY2s6QS5zdGFja319Okk9e2lzRXJyb3I6ITEsdmFsdWU6QX0sW0ksW11dfSxkZXNlcmlhbGl6ZShBKXt0aHJvdyBBLmlzRXJyb3I/T2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoQS52YWx1ZS5tZXNzYWdlKSxBLnZhbHVlKTpBLnZhbHVlfX0sQUk9bmV3IE1hcChbWyJwcm94eSIsaXRdLFsidGhyb3ciLG90XV0pO2Z1bmN0aW9uIEJ0KEEsSSl7Zm9yKGxldCB0IG9mIEEpaWYoST09PXR8fHQ9PT0iKiJ8fHQgaW5zdGFuY2VvZiBSZWdFeHAmJnQudGVzdChJKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBvQShBLEk9Z2xvYmFsVGhpcyx0PVsiKiJdKXtJLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uIGUoZyl7aWYoIWd8fCFnLmRhdGEpcmV0dXJuO2lmKCFCdCh0LGcub3JpZ2luKSl7Y29uc29sZS53YXJuKGBJbnZhbGlkIG9yaWdpbiBcJyR7Zy5vcmlnaW59XCcgZm9yIGNvbWxpbmsgcHJveHlgKTtyZXR1cm59bGV0e2lkOnIsdHlwZTppLHBhdGg6c309T2JqZWN0LmFzc2lnbih7cGF0aDpbXX0sZy5kYXRhKSxhPShnLmRhdGEuYXJndW1lbnRMaXN0fHxbXSkubWFwKGIpLG47dHJ5e2xldCBDPXMuc2xpY2UoMCwtMSkucmVkdWNlKChmLFEpPT5mW1FdLEEpLG89cy5yZWR1Y2UoKGYsUSk9PmZbUV0sQSk7c3dpdGNoKGkpe2Nhc2UiR0VUIjpuPW87YnJlYWs7Y2FzZSJTRVQiOkNbcy5zbGljZSgtMSlbMF1dPWIoZy5kYXRhLnZhbHVlKSxuPSEwO2JyZWFrO2Nhc2UiQVBQTFkiOm49by5hcHBseShDLGEpO2JyZWFrO2Nhc2UiQ09OU1RSVUNUIjp7bGV0IGY9bmV3IG8oLi4uYSk7bj1hdChmKX1icmVhaztjYXNlIkVORFBPSU5UIjp7bGV0e3BvcnQxOmYscG9ydDI6UX09bmV3IE1lc3NhZ2VDaGFubmVsO29BKEEsUSksbj1TQShmLFtmXSl9YnJlYWs7Y2FzZSJSRUxFQVNFIjpuPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2goQyl7bj17dmFsdWU6QyxbZUFdOjB9fVByb21pc2UucmVzb2x2ZShuKS5jYXRjaChDPT4oe3ZhbHVlOkMsW2VBXTowfSkpLnRoZW4oQz0+e2xldFtvLGZdPWlBKEMpO0kucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG8pLHtpZDpyfSksZiksaT09PSJSRUxFQVNFIiYmKEkucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZSksSUkoSSksbUEgaW4gQSYmdHlwZW9mIEFbbUFdPT0iZnVuY3Rpb24iJiZBW21BXSgpKX0pLmNhdGNoKEM9PntsZXRbbyxmXT1pQSh7dmFsdWU6bmV3IFR5cGVFcnJvcigiVW5zZXJpYWxpemFibGUgcmV0dXJuIHZhbHVlIiksW2VBXTowfSk7SS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbykse2lkOnJ9KSxmKX0pfSksSS5zdGFydCYmSS5zdGFydCgpfWZ1bmN0aW9uIEN0KEEpe3JldHVybiBBLmNvbnN0cnVjdG9yLm5hbWU9PT0iTWVzc2FnZVBvcnQifWZ1bmN0aW9uIElJKEEpe0N0KEEpJiZBLmNsb3NlKCl9ZnVuY3Rpb24gc3QoQSxJKXtyZXR1cm4gcEEoQSxbXSxJKX1mdW5jdGlvbiB0QShBKXtpZihBKXRocm93IG5ldyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIil9ZnVuY3Rpb24gdEkoQSl7cmV0dXJuIE0oQSx7dHlwZToiUkVMRUFTRSJ9KS50aGVuKCgpPT57SUkoQSl9KX12YXIgZ0E9bmV3IFdlYWtNYXAsckE9IkZpbmFsaXphdGlvblJlZ2lzdHJ5ImluIGdsb2JhbFRoaXMmJm5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShBPT57bGV0IEk9KGdBLmdldChBKXx8MCktMTtnQS5zZXQoQSxJKSxJPT09MCYmdEkoQSl9KTtmdW5jdGlvbiBRdChBLEkpe2xldCB0PShnQS5nZXQoSSl8fDApKzE7Z0Euc2V0KEksdCksckEmJnJBLnJlZ2lzdGVyKEEsSSxBKX1mdW5jdGlvbiBudChBKXtyQSYmckEudW5yZWdpc3RlcihBKX1mdW5jdGlvbiBwQShBLEk9W10sdD1mdW5jdGlvbigpe30pe2xldCBlPSExLGc9bmV3IFByb3h5KHQse2dldChyLGkpe2lmKHRBKGUpLGk9PT1ydClyZXR1cm4oKT0+e250KGcpLHRJKEEpLGU9ITB9O2lmKGk9PT0idGhlbiIpe2lmKEkubGVuZ3RoPT09MClyZXR1cm57dGhlbjooKT0+Z307bGV0IHM9TShBLHt0eXBlOiJHRVQiLHBhdGg6SS5tYXAoYT0+YS50b1N0cmluZygpKX0pLnRoZW4oYik7cmV0dXJuIHMudGhlbi5iaW5kKHMpfXJldHVybiBwQShBLFsuLi5JLGldKX0sc2V0KHIsaSxzKXt0QShlKTtsZXRbYSxuXT1pQShzKTtyZXR1cm4gTShBLHt0eXBlOiJTRVQiLHBhdGg6Wy4uLkksaV0ubWFwKEM9PkMudG9TdHJpbmcoKSksdmFsdWU6YX0sbikudGhlbihiKX0sYXBwbHkocixpLHMpe3RBKGUpO2xldCBhPUlbSS5sZW5ndGgtMV07aWYoYT09PWd0KXJldHVybiBNKEEse3R5cGU6IkVORFBPSU5UIn0pLnRoZW4oYik7aWYoYT09PSJiaW5kIilyZXR1cm4gcEEoQSxJLnNsaWNlKDAsLTEpKTtsZXRbbixDXT1fQShzKTtyZXR1cm4gTShBLHt0eXBlOiJBUFBMWSIscGF0aDpJLm1hcChvPT5vLnRvU3RyaW5nKCkpLGFyZ3VtZW50TGlzdDpufSxDKS50aGVuKGIpfSxjb25zdHJ1Y3QocixpKXt0QShlKTtsZXRbcyxhXT1fQShpKTtyZXR1cm4gTShBLHt0eXBlOiJDT05TVFJVQ1QiLHBhdGg6SS5tYXAobj0+bi50b1N0cmluZygpKSxhcmd1bWVudExpc3Q6c30sYSkudGhlbihiKX19KTtyZXR1cm4gUXQoZyxBKSxnfWZ1bmN0aW9uIEV0KEEpe3JldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLEEpfWZ1bmN0aW9uIF9BKEEpe2xldCBJPUEubWFwKGlBKTtyZXR1cm5bSS5tYXAodD0+dFswXSksRXQoSS5tYXAodD0+dFsxXSkpXX12YXIgZUk9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gU0EoQSxJKXtyZXR1cm4gZUkuc2V0KEEsSSksQX1mdW5jdGlvbiBhdChBKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihBLHtbdkFdOiEwfSl9ZnVuY3Rpb24gaUEoQSl7Zm9yKGxldFtJLHRdb2YgQUkpaWYodC5jYW5IYW5kbGUoQSkpe2xldFtlLGddPXQuc2VyaWFsaXplKEEpO3JldHVyblt7dHlwZToiSEFORExFUiIsbmFtZTpJLHZhbHVlOmV9LGddfXJldHVyblt7dHlwZToiUkFXIix2YWx1ZTpBfSxlSS5nZXQoQSl8fFtdXX1mdW5jdGlvbiBiKEEpe3N3aXRjaChBLnR5cGUpe2Nhc2UiSEFORExFUiI6cmV0dXJuIEFJLmdldChBLm5hbWUpLmRlc2VyaWFsaXplKEEudmFsdWUpO2Nhc2UiUkFXIjpyZXR1cm4gQS52YWx1ZX19ZnVuY3Rpb24gTShBLEksdCl7cmV0dXJuIG5ldyBQcm9taXNlKGU9PntsZXQgZz1jdCgpO0EuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gcihpKXshaS5kYXRhfHwhaS5kYXRhLmlkfHxpLmRhdGEuaWQhPT1nfHwoQS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixyKSxlKGkuZGF0YSkpfSksQS5zdGFydCYmQS5zdGFydCgpLEEucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbih7aWQ6Z30sSSksdCl9KX1mdW5jdGlvbiBjdCgpe3JldHVybiBuZXcgQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCk9Pk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKS5qb2luKCItIil9ZnVuY3Rpb24gVyhBLEkpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBBLmFwcGx5KEksYXJndW1lbnRzKX19dmFye3RvU3RyaW5nOmZ0fT1PYmplY3QucHJvdG90eXBlLHtnZXRQcm90b3R5cGVPZjpOQX09T2JqZWN0LENBPShBPT5JPT57bGV0IHQ9ZnQuY2FsbChJKTtyZXR1cm4gQVt0XXx8KEFbdF09dC5zbGljZSg4LC0xKS50b0xvd2VyQ2FzZSgpKX0pKE9iamVjdC5jcmVhdGUobnVsbCkpLFU9QT0+KEE9QS50b0xvd2VyQ2FzZSgpLEk9PkNBKEkpPT09QSksc0E9QT0+ST0+dHlwZW9mIEk9PT1BLHtpc0FycmF5OnF9PUFycmF5LFo9c0EoInVuZGVmaW5lZCIpO2Z1bmN0aW9uIGx0KEEpe3JldHVybiBBIT09bnVsbCYmIVooQSkmJkEuY29uc3RydWN0b3IhPT1udWxsJiYhWihBLmNvbnN0cnVjdG9yKSYmRihBLmNvbnN0cnVjdG9yLmlzQnVmZmVyKSYmQS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihBKX12YXIgb0k9VSgiQXJyYXlCdWZmZXIiKTtmdW5jdGlvbiBEdChBKXtsZXQgSTtyZXR1cm4gdHlwZW9mIEFycmF5QnVmZmVyPCJ1IiYmQXJyYXlCdWZmZXIuaXNWaWV3P0k9QXJyYXlCdWZmZXIuaXNWaWV3KEEpOkk9QSYmQS5idWZmZXImJm9JKEEuYnVmZmVyKSxJfXZhciB1dD1zQSgic3RyaW5nIiksRj1zQSgiZnVuY3Rpb24iKSxCST1zQSgibnVtYmVyIiksUUE9QT0+QSE9PW51bGwmJnR5cGVvZiBBPT0ib2JqZWN0IixodD1BPT5BPT09ITB8fEE9PT0hMSxCQT1BPT57aWYoQ0EoQSkhPT0ib2JqZWN0IilyZXR1cm4hMTtsZXQgST1OQShBKTtyZXR1cm4oST09PW51bGx8fEk9PT1PYmplY3QucHJvdG90eXBlfHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoSSk9PT1udWxsKSYmIShTeW1ib2wudG9TdHJpbmdUYWcgaW4gQSkmJiEoU3ltYm9sLml0ZXJhdG9yIGluIEEpfSxkdD1VKCJEYXRlIikseXQ9VSgiRmlsZSIpLHd0PVUoIkJsb2IiKSxtdD1VKCJGaWxlTGlzdCIpLHB0PUE9PlFBKEEpJiZGKEEucGlwZSksU3Q9QT0+e2xldCBJO3JldHVybiBBJiYodHlwZW9mIEZvcm1EYXRhPT0iZnVuY3Rpb24iJiZBIGluc3RhbmNlb2YgRm9ybURhdGF8fEYoQS5hcHBlbmQpJiYoKEk9Q0EoQSkpPT09ImZvcm1kYXRhInx8ST09PSJvYmplY3QiJiZGKEEudG9TdHJpbmcpJiZBLnRvU3RyaW5nKCk9PT0iW29iamVjdCBGb3JtRGF0YV0iKSl9LEZ0PVUoIlVSTFNlYXJjaFBhcmFtcyIpLFJ0PUE9PkEudHJpbT9BLnRyaW0oKTpBLnJlcGxhY2UoL15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nLCIiKTtmdW5jdGlvbiBWKEEsSSx7YWxsT3duS2V5czp0PSExfT17fSl7aWYoQT09PW51bGx8fHR5cGVvZiBBPiJ1IilyZXR1cm47bGV0IGUsZztpZih0eXBlb2YgQSE9Im9iamVjdCImJihBPVtBXSkscShBKSlmb3IoZT0wLGc9QS5sZW5ndGg7ZTxnO2UrKylJLmNhbGwobnVsbCxBW2VdLGUsQSk7ZWxzZXtsZXQgcj10P09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEEpOk9iamVjdC5rZXlzKEEpLGk9ci5sZW5ndGgscztmb3IoZT0wO2U8aTtlKyspcz1yW2VdLEkuY2FsbChudWxsLEFbc10scyxBKX19ZnVuY3Rpb24gQ0koQSxJKXtJPUkudG9Mb3dlckNhc2UoKTtsZXQgdD1PYmplY3Qua2V5cyhBKSxlPXQubGVuZ3RoLGc7Zm9yKDtlLS0gPjA7KWlmKGc9dFtlXSxJPT09Zy50b0xvd2VyQ2FzZSgpKXJldHVybiBnO3JldHVybiBudWxsfXZhciBzST10eXBlb2YgZ2xvYmFsVGhpczwidSI/Z2xvYmFsVGhpczp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6Z2xvYmFsLFFJPUE9PiFaKEEpJiZBIT09c0k7ZnVuY3Rpb24gUkEoKXtsZXR7Y2FzZWxlc3M6QX09UUkodGhpcykmJnRoaXN8fHt9LEk9e30sdD0oZSxnKT0+e2xldCByPUEmJkNJKEksZyl8fGc7QkEoSVtyXSkmJkJBKGUpP0lbcl09UkEoSVtyXSxlKTpCQShlKT9JW3JdPVJBKHt9LGUpOnEoZSk/SVtyXT1lLnNsaWNlKCk6SVtyXT1lfTtmb3IobGV0IGU9MCxnPWFyZ3VtZW50cy5sZW5ndGg7ZTxnO2UrKylhcmd1bWVudHNbZV0mJlYoYXJndW1lbnRzW2VdLHQpO3JldHVybiBJfXZhciBOdD0oQSxJLHQse2FsbE93bktleXM6ZX09e30pPT4oVihJLChnLHIpPT57dCYmRihnKT9BW3JdPVcoZyx0KTpBW3JdPWd9LHthbGxPd25LZXlzOmV9KSxBKSxVdD1BPT4oQS5jaGFyQ29kZUF0KDApPT09NjUyNzkmJihBPUEuc2xpY2UoMSkpLEEpLEd0PShBLEksdCxlKT0+e0EucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoSS5wcm90b3R5cGUsZSksQS5wcm90b3R5cGUuY29uc3RydWN0b3I9QSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQSwic3VwZXIiLHt2YWx1ZTpJLnByb3RvdHlwZX0pLHQmJk9iamVjdC5hc3NpZ24oQS5wcm90b3R5cGUsdCl9LGt0PShBLEksdCxlKT0+e2xldCBnLHIsaSxzPXt9O2lmKEk9SXx8e30sQT09bnVsbClyZXR1cm4gSTtkb3tmb3IoZz1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhBKSxyPWcubGVuZ3RoO3ItLSA+MDspaT1nW3JdLCghZXx8ZShpLEEsSSkpJiYhc1tpXSYmKElbaV09QVtpXSxzW2ldPSEwKTtBPXQhPT0hMSYmTkEoQSl9d2hpbGUoQSYmKCF0fHx0KEEsSSkpJiZBIT09T2JqZWN0LnByb3RvdHlwZSk7cmV0dXJuIEl9LEx0PShBLEksdCk9PntBPVN0cmluZyhBKSwodD09PXZvaWQgMHx8dD5BLmxlbmd0aCkmJih0PUEubGVuZ3RoKSx0LT1JLmxlbmd0aDtsZXQgZT1BLmluZGV4T2YoSSx0KTtyZXR1cm4gZSE9PS0xJiZlPT09dH0sSnQ9QT0+e2lmKCFBKXJldHVybiBudWxsO2lmKHEoQSkpcmV0dXJuIEE7bGV0IEk9QS5sZW5ndGg7aWYoIUJJKEkpKXJldHVybiBudWxsO2xldCB0PW5ldyBBcnJheShJKTtmb3IoO0ktLSA+MDspdFtJXT1BW0ldO3JldHVybiB0fSxIdD0oQT0+ST0+QSYmSSBpbnN0YW5jZW9mIEEpKHR5cGVvZiBVaW50OEFycmF5PCJ1IiYmTkEoVWludDhBcnJheSkpLFl0PShBLEkpPT57bGV0IGU9KEEmJkFbU3ltYm9sLml0ZXJhdG9yXSkuY2FsbChBKSxnO2Zvcig7KGc9ZS5uZXh0KCkpJiYhZy5kb25lOyl7bGV0IHI9Zy52YWx1ZTtJLmNhbGwoQSxyWzBdLHJbMV0pfX0sYnQ9KEEsSSk9PntsZXQgdCxlPVtdO2Zvcig7KHQ9QS5leGVjKEkpKSE9PW51bGw7KWUucHVzaCh0KTtyZXR1cm4gZX0sTXQ9VSgiSFRNTEZvcm1FbGVtZW50IikscXQ9QT0+QS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1stX1xcc10oW2EtelxcZF0pKFxcdyopL2csZnVuY3Rpb24odCxlLGcpe3JldHVybiBlLnRvVXBwZXJDYXNlKCkrZ30pLHJJPSgoe2hhc093blByb3BlcnR5OkF9KT0+KEksdCk9PkEuY2FsbChJLHQpKShPYmplY3QucHJvdG90eXBlKSxLdD1VKCJSZWdFeHAiKSxuST0oQSxJKT0+e2xldCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKEEpLGU9e307Vih0LChnLHIpPT57bGV0IGk7KGk9SShnLHIsQSkpIT09ITEmJihlW3JdPWl8fGcpfSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQSxlKX0sT3Q9QT0+e25JKEEsKEksdCk9PntpZihGKEEpJiZbImFyZ3VtZW50cyIsImNhbGxlciIsImNhbGxlZSJdLmluZGV4T2YodCkhPT0tMSlyZXR1cm4hMTtsZXQgZT1BW3RdO2lmKEYoZSkpe2lmKEkuZW51bWVyYWJsZT0hMSwid3JpdGFibGUiaW4gSSl7SS53cml0YWJsZT0hMTtyZXR1cm59SS5zZXR8fChJLnNldD0oKT0+e3Rocm93IEVycm9yKCJDYW4gbm90IHJld3JpdGUgcmVhZC1vbmx5IG1ldGhvZCBcJyIrdCsiXCciKX0pfX0pfSxUdD0oQSxJKT0+e2xldCB0PXt9LGU9Zz0+e2cuZm9yRWFjaChyPT57dFtyXT0hMH0pfTtyZXR1cm4gcShBKT9lKEEpOmUoU3RyaW5nKEEpLnNwbGl0KEkpKSx0fSx4dD0oKT0+e30sUHQ9KEEsSSk9PihBPStBLE51bWJlci5pc0Zpbml0ZShBKT9BOkkpLEZBPSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsaUk9IjAxMjM0NTY3ODkiLEVJPXtESUdJVDppSSxBTFBIQTpGQSxBTFBIQV9ESUdJVDpGQStGQS50b1VwcGVyQ2FzZSgpK2lJfSxqdD0oQT0xNixJPUVJLkFMUEhBX0RJR0lUKT0+e2xldCB0PSIiLHtsZW5ndGg6ZX09STtmb3IoO0EtLTspdCs9SVtNYXRoLnJhbmRvbSgpKmV8MF07cmV0dXJuIHR9O2Z1bmN0aW9uIFd0KEEpe3JldHVybiEhKEEmJkYoQS5hcHBlbmQpJiZBW1N5bWJvbC50b1N0cmluZ1RhZ109PT0iRm9ybURhdGEiJiZBW1N5bWJvbC5pdGVyYXRvcl0pfXZhciBadD1BPT57bGV0IEk9bmV3IEFycmF5KDEwKSx0PShlLGcpPT57aWYoUUEoZSkpe2lmKEkuaW5kZXhPZihlKT49MClyZXR1cm47aWYoISgidG9KU09OImluIGUpKXtJW2ddPWU7bGV0IHI9cShlKT9bXTp7fTtyZXR1cm4gVihlLChpLHMpPT57bGV0IGE9dChpLGcrMSk7IVooYSkmJihyW3NdPWEpfSksSVtnXT12b2lkIDAscn19cmV0dXJuIGV9O3JldHVybiB0KEEsMCl9LFZ0PVUoIkFzeW5jRnVuY3Rpb24iKSxYdD1BPT5BJiYoUUEoQSl8fEYoQSkpJiZGKEEudGhlbikmJkYoQS5jYXRjaCksQj17aXNBcnJheTpxLGlzQXJyYXlCdWZmZXI6b0ksaXNCdWZmZXI6bHQsaXNGb3JtRGF0YTpTdCxpc0FycmF5QnVmZmVyVmlldzpEdCxpc1N0cmluZzp1dCxpc051bWJlcjpCSSxpc0Jvb2xlYW46aHQsaXNPYmplY3Q6UUEsaXNQbGFpbk9iamVjdDpCQSxpc1VuZGVmaW5lZDpaLGlzRGF0ZTpkdCxpc0ZpbGU6eXQsaXNCbG9iOnd0LGlzUmVnRXhwOkt0LGlzRnVuY3Rpb246Rixpc1N0cmVhbTpwdCxpc1VSTFNlYXJjaFBhcmFtczpGdCxpc1R5cGVkQXJyYXk6SHQsaXNGaWxlTGlzdDptdCxmb3JFYWNoOlYsbWVyZ2U6UkEsZXh0ZW5kOk50LHRyaW06UnQsc3RyaXBCT006VXQsaW5oZXJpdHM6R3QsdG9GbGF0T2JqZWN0Omt0LGtpbmRPZjpDQSxraW5kT2ZUZXN0OlUsZW5kc1dpdGg6THQsdG9BcnJheTpKdCxmb3JFYWNoRW50cnk6WXQsbWF0Y2hBbGw6YnQsaXNIVE1MRm9ybTpNdCxoYXNPd25Qcm9wZXJ0eTpySSxoYXNPd25Qcm9wOnJJLHJlZHVjZURlc2NyaXB0b3JzOm5JLGZyZWV6ZU1ldGhvZHM6T3QsdG9PYmplY3RTZXQ6VHQsdG9DYW1lbENhc2U6cXQsbm9vcDp4dCx0b0Zpbml0ZU51bWJlcjpQdCxmaW5kS2V5OkNJLGdsb2JhbDpzSSxpc0NvbnRleHREZWZpbmVkOlFJLEFMUEhBQkVUOkVJLGdlbmVyYXRlU3RyaW5nOmp0LGlzU3BlY0NvbXBsaWFudEZvcm06V3QsdG9KU09OT2JqZWN0Olp0LGlzQXN5bmNGbjpWdCxpc1RoZW5hYmxlOlh0fTtmdW5jdGlvbiBLKEEsSSx0LGUsZyl7RXJyb3IuY2FsbCh0aGlzKSxFcnJvci5jYXB0dXJlU3RhY2tUcmFjZT9FcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLHRoaXMuY29uc3RydWN0b3IpOnRoaXMuc3RhY2s9bmV3IEVycm9yKCkuc3RhY2ssdGhpcy5tZXNzYWdlPUEsdGhpcy5uYW1lPSJBeGlvc0Vycm9yIixJJiYodGhpcy5jb2RlPUkpLHQmJih0aGlzLmNvbmZpZz10KSxlJiYodGhpcy5yZXF1ZXN0PWUpLGcmJih0aGlzLnJlc3BvbnNlPWcpfUIuaW5oZXJpdHMoSyxFcnJvcix7dG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOkIudG9KU09OT2JqZWN0KHRoaXMuY29uZmlnKSxjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5yZXNwb25zZSYmdGhpcy5yZXNwb25zZS5zdGF0dXM/dGhpcy5yZXNwb25zZS5zdGF0dXM6bnVsbH19fSk7dmFyIGFJPUsucHJvdG90eXBlLGNJPXt9O1siRVJSX0JBRF9PUFRJT05fVkFMVUUiLCJFUlJfQkFEX09QVElPTiIsIkVDT05OQUJPUlRFRCIsIkVUSU1FRE9VVCIsIkVSUl9ORVRXT1JLIiwiRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUyIsIkVSUl9ERVBSRUNBVEVEIiwiRVJSX0JBRF9SRVNQT05TRSIsIkVSUl9CQURfUkVRVUVTVCIsIkVSUl9DQU5DRUxFRCIsIkVSUl9OT1RfU1VQUE9SVCIsIkVSUl9JTlZBTElEX1VSTCJdLmZvckVhY2goQT0+e2NJW0FdPXt2YWx1ZTpBfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEssY0kpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhSSwiaXNBeGlvc0Vycm9yIix7dmFsdWU6ITB9KTtLLmZyb209KEEsSSx0LGUsZyxyKT0+e2xldCBpPU9iamVjdC5jcmVhdGUoYUkpO3JldHVybiBCLnRvRmxhdE9iamVjdChBLGksZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT1FcnJvci5wcm90b3R5cGV9LHM9PnMhPT0iaXNBeGlvc0Vycm9yIiksSy5jYWxsKGksQS5tZXNzYWdlLEksdCxlLGcpLGkuY2F1c2U9QSxpLm5hbWU9QS5uYW1lLHImJk9iamVjdC5hc3NpZ24oaSxyKSxpfTt2YXIgbD1LO3ZhciBuQT1udWxsO2Z1bmN0aW9uIFVBKEEpe3JldHVybiBCLmlzUGxhaW5PYmplY3QoQSl8fEIuaXNBcnJheShBKX1mdW5jdGlvbiBsSShBKXtyZXR1cm4gQi5lbmRzV2l0aChBLCJbXSIpP0Euc2xpY2UoMCwtMik6QX1mdW5jdGlvbiBmSShBLEksdCl7cmV0dXJuIEE/QS5jb25jYXQoSSkubWFwKGZ1bmN0aW9uKGcscil7cmV0dXJuIGc9bEkoZyksIXQmJnI/IlsiK2crIl0iOmd9KS5qb2luKHQ/Ii4iOiIiKTpJfWZ1bmN0aW9uIHp0KEEpe3JldHVybiBCLmlzQXJyYXkoQSkmJiFBLnNvbWUoVUEpfXZhciBfdD1CLnRvRmxhdE9iamVjdChCLHt9LG51bGwsZnVuY3Rpb24oSSl7cmV0dXJuL15pc1tBLVpdLy50ZXN0KEkpfSk7ZnVuY3Rpb24gdnQoQSxJLHQpe2lmKCFCLmlzT2JqZWN0KEEpKXRocm93IG5ldyBUeXBlRXJyb3IoInRhcmdldCBtdXN0IGJlIGFuIG9iamVjdCIpO0k9SXx8bmV3KG5BfHxGb3JtRGF0YSksdD1CLnRvRmxhdE9iamVjdCh0LHttZXRhVG9rZW5zOiEwLGRvdHM6ITEsaW5kZXhlczohMX0sITEsZnVuY3Rpb24oYyx1KXtyZXR1cm4hQi5pc1VuZGVmaW5lZCh1W2NdKX0pO2xldCBlPXQubWV0YVRva2VucyxnPXQudmlzaXRvcnx8QyxyPXQuZG90cyxpPXQuaW5kZXhlcyxhPSh0LkJsb2J8fHR5cGVvZiBCbG9iPCJ1IiYmQmxvYikmJkIuaXNTcGVjQ29tcGxpYW50Rm9ybShJKTtpZighQi5pc0Z1bmN0aW9uKGcpKXRocm93IG5ldyBUeXBlRXJyb3IoInZpc2l0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uIik7ZnVuY3Rpb24gbihFKXtpZihFPT09bnVsbClyZXR1cm4iIjtpZihCLmlzRGF0ZShFKSlyZXR1cm4gRS50b0lTT1N0cmluZygpO2lmKCFhJiZCLmlzQmxvYihFKSl0aHJvdyBuZXcgbCgiQmxvYiBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgYSBCdWZmZXIgaW5zdGVhZC4iKTtyZXR1cm4gQi5pc0FycmF5QnVmZmVyKEUpfHxCLmlzVHlwZWRBcnJheShFKT9hJiZ0eXBlb2YgQmxvYj09ImZ1bmN0aW9uIj9uZXcgQmxvYihbRV0pOkJ1ZmZlci5mcm9tKEUpOkV9ZnVuY3Rpb24gQyhFLGMsdSl7bGV0IGQ9RTtpZihFJiYhdSYmdHlwZW9mIEU9PSJvYmplY3QiKXtpZihCLmVuZHNXaXRoKGMsInt9IikpYz1lP2M6Yy5zbGljZSgwLC0yKSxFPUpTT04uc3RyaW5naWZ5KEUpO2Vsc2UgaWYoQi5pc0FycmF5KEUpJiZ6dChFKXx8KEIuaXNGaWxlTGlzdChFKXx8Qi5lbmRzV2l0aChjLCJbXSIpKSYmKGQ9Qi50b0FycmF5KEUpKSlyZXR1cm4gYz1sSShjKSxkLmZvckVhY2goZnVuY3Rpb24oTixJdCl7IShCLmlzVW5kZWZpbmVkKE4pfHxOPT09bnVsbCkmJkkuYXBwZW5kKGk9PT0hMD9mSShbY10sSXQscik6aT09PW51bGw/YzpjKyJbXSIsbihOKSl9KSwhMX1yZXR1cm4gVUEoRSk/ITA6KEkuYXBwZW5kKGZJKHUsYyxyKSxuKEUpKSwhMSl9bGV0IG89W10sZj1PYmplY3QuYXNzaWduKF90LHtkZWZhdWx0VmlzaXRvcjpDLGNvbnZlcnRWYWx1ZTpuLGlzVmlzaXRhYmxlOlVBfSk7ZnVuY3Rpb24gUShFLGMpe2lmKCFCLmlzVW5kZWZpbmVkKEUpKXtpZihvLmluZGV4T2YoRSkhPT0tMSl0aHJvdyBFcnJvcigiQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGluICIrYy5qb2luKCIuIikpO28ucHVzaChFKSxCLmZvckVhY2goRSxmdW5jdGlvbihkLFIpeyghKEIuaXNVbmRlZmluZWQoZCl8fGQ9PT1udWxsKSYmZy5jYWxsKEksZCxCLmlzU3RyaW5nKFIpP1IudHJpbSgpOlIsYyxmKSk9PT0hMCYmUShkLGM/Yy5jb25jYXQoUik6W1JdKX0pLG8ucG9wKCl9fWlmKCFCLmlzT2JqZWN0KEEpKXRocm93IG5ldyBUeXBlRXJyb3IoImRhdGEgbXVzdCBiZSBhbiBvYmplY3QiKTtyZXR1cm4gUShBKSxJfXZhciBMPXZ0O2Z1bmN0aW9uIERJKEEpe2xldCBJPXsiISI6IiUyNTIxIiwiXCciOiIlMjUyNyIsIigiOiIlMjUyOCIsIikiOiIlMjUyOSIsIn4iOiIlMjU3RSIsIiUyNTIwIjoiKyIsIiUyNTAwIjoiXFwwIn07cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChBKS5yZXBsYWNlKC9bIVwnKCl+XXwlMjUyMHwlMjUwMC9nLGZ1bmN0aW9uKGUpe3JldHVybiBJW2VdfSl9ZnVuY3Rpb24gdUkoQSxJKXt0aGlzLl9wYWlycz1bXSxBJiZMKEEsdGhpcyxJKX12YXIgaEk9dUkucHJvdG90eXBlO2hJLmFwcGVuZD1mdW5jdGlvbihJLHQpe3RoaXMuX3BhaXJzLnB1c2goW0ksdF0pfTtoSS50b1N0cmluZz1mdW5jdGlvbihJKXtsZXQgdD1JP2Z1bmN0aW9uKGUpe3JldHVybiBJLmNhbGwodGhpcyxlLERJKX06REk7cmV0dXJuIHRoaXMuX3BhaXJzLm1hcChmdW5jdGlvbihnKXtyZXR1cm4gdChnWzBdKSsiPSIrdChnWzFdKX0sIiIpLmpvaW4oIiYiKX07dmFyIEVBPXVJO2Z1bmN0aW9uICR0KEEpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoQSkucmVwbGFjZSgvJTI1M0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjUyNC9nLCIkIikucmVwbGFjZSgvJTI1MkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjUyMC9nLCIrIikucmVwbGFjZSgvJTI1NUIvZ2ksIlsiKS5yZXBsYWNlKC8lMjU1RC9naSwiXSIpfWZ1bmN0aW9uIFgoQSxJLHQpe2lmKCFJKXJldHVybiBBO2xldCBlPXQmJnQuZW5jb2RlfHwkdCxnPXQmJnQuc2VyaWFsaXplLHI7aWYoZz9yPWcoSSx0KTpyPUIuaXNVUkxTZWFyY2hQYXJhbXMoSSk/SS50b1N0cmluZygpOm5ldyBFQShJLHQpLnRvU3RyaW5nKGUpLHIpe2xldCBpPUEuaW5kZXhPZigiJTIzIik7aSE9PS0xJiYoQT1BLnNsaWNlKDAsaSkpLEErPShBLmluZGV4T2YoIj8iKT09PS0xPyI/IjoiJiIpK3J9cmV0dXJuIEF9dmFyIEdBPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5oYW5kbGVycz1bXX11c2UoSSx0LGUpe3JldHVybiB0aGlzLmhhbmRsZXJzLnB1c2goe2Z1bGZpbGxlZDpJLHJlamVjdGVkOnQsc3luY2hyb25vdXM6ZT9lLnN5bmNocm9ub3VzOiExLHJ1bldoZW46ZT9lLnJ1bldoZW46bnVsbH0pLHRoaXMuaGFuZGxlcnMubGVuZ3RoLTF9ZWplY3QoSSl7dGhpcy5oYW5kbGVyc1tJXSYmKHRoaXMuaGFuZGxlcnNbSV09bnVsbCl9Y2xlYXIoKXt0aGlzLmhhbmRsZXJzJiYodGhpcy5oYW5kbGVycz1bXSl9Zm9yRWFjaChJKXtCLmZvckVhY2godGhpcy5oYW5kbGVycyxmdW5jdGlvbihlKXtlIT09bnVsbCYmSShlKX0pfX0sa0E9R0E7dmFyIGFBPXtzaWxlbnRKU09OUGFyc2luZzohMCxmb3JjZWRKU09OUGFyc2luZzohMCxjbGFyaWZ5VGltZW91dEVycm9yOiExfTt2YXIgZEk9dHlwZW9mIFVSTFNlYXJjaFBhcmFtczwidSI/VVJMU2VhcmNoUGFyYW1zOkVBO3ZhciB5ST10eXBlb2YgRm9ybURhdGE8InUiP0Zvcm1EYXRhOm51bGw7dmFyIHdJPXR5cGVvZiBCbG9iPCJ1Ij9CbG9iOm51bGw7dmFyIG1JPXtpc0Jyb3dzZXI6ITAsY2xhc3Nlczp7VVJMU2VhcmNoUGFyYW1zOmRJLEZvcm1EYXRhOnlJLEJsb2I6d0l9LHByb3RvY29sczpbImh0dHAiLCJodHRwcyIsImZpbGUiLCJibG9iIiwidXJsIiwiZGF0YSJdfTt2YXIgTEE9e307ZXQoTEEse2hhc0Jyb3dzZXJFbnY6KCk9PnBJLGhhc1N0YW5kYXJkQnJvd3NlckVudjooKT0+QWUsaGFzU3RhbmRhcmRCcm93c2VyV2ViV29ya2VyRW52OigpPT5JZX0pO3ZhciBwST10eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9mIGRvY3VtZW50PCJ1IixBZT0oQT0+cEkmJlsiUmVhY3ROYXRpdmUiLCJOYXRpdmVTY3JpcHQiLCJOUyJdLmluZGV4T2YoQSk8MCkodHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvci5wcm9kdWN0KSxJZT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGU8InUiJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnR5cGVvZiBzZWxmLmltcG9ydFNjcmlwdHM9PSJmdW5jdGlvbiI7dmFyIHc9ey4uLkxBLC4uLm1JfTtmdW5jdGlvbiBKQShBLEkpe3JldHVybiBMKEEsbmV3IHcuY2xhc3Nlcy5VUkxTZWFyY2hQYXJhbXMsT2JqZWN0LmFzc2lnbih7dmlzaXRvcjpmdW5jdGlvbih0LGUsZyxyKXtyZXR1cm4gdy5pc05vZGUmJkIuaXNCdWZmZXIodCk/KHRoaXMuYXBwZW5kKGUsdC50b1N0cmluZygiYmFzZTY0IikpLCExKTpyLmRlZmF1bHRWaXNpdG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LEkpKX1mdW5jdGlvbiB0ZShBKXtyZXR1cm4gQi5tYXRjaEFsbCgvXFx3K3xcXFsoXFx3KildL2csQSkubWFwKEk9PklbMF09PT0iW10iPyIiOklbMV18fElbMF0pfWZ1bmN0aW9uIGVlKEEpe2xldCBJPXt9LHQ9T2JqZWN0LmtleXMoQSksZSxnPXQubGVuZ3RoLHI7Zm9yKGU9MDtlPGc7ZSsrKXI9dFtlXSxJW3JdPUFbcl07cmV0dXJuIEl9ZnVuY3Rpb24gZ2UoQSl7ZnVuY3Rpb24gSSh0LGUsZyxyKXtsZXQgaT10W3IrK10scz1OdW1iZXIuaXNGaW5pdGUoK2kpLGE9cj49dC5sZW5ndGg7cmV0dXJuIGk9IWkmJkIuaXNBcnJheShnKT9nLmxlbmd0aDppLGE/KEIuaGFzT3duUHJvcChnLGkpP2dbaV09W2dbaV0sZV06Z1tpXT1lLCFzKTooKCFnW2ldfHwhQi5pc09iamVjdChnW2ldKSkmJihnW2ldPVtdKSxJKHQsZSxnW2ldLHIpJiZCLmlzQXJyYXkoZ1tpXSkmJihnW2ldPWVlKGdbaV0pKSwhcyl9aWYoQi5pc0Zvcm1EYXRhKEEpJiZCLmlzRnVuY3Rpb24oQS5lbnRyaWVzKSl7bGV0IHQ9e307cmV0dXJuIEIuZm9yRWFjaEVudHJ5KEEsKGUsZyk9PntJKHRlKGUpLGcsdCwwKX0pLHR9cmV0dXJuIG51bGx9dmFyIGNBPWdlO2Z1bmN0aW9uIHJlKEEsSSx0KXtpZihCLmlzU3RyaW5nKEEpKXRyeXtyZXR1cm4oSXx8SlNPTi5wYXJzZSkoQSksQi50cmltKEEpfWNhdGNoKGUpe2lmKGUubmFtZSE9PSJTeW50YXhFcnJvciIpdGhyb3cgZX1yZXR1cm4odHx8SlNPTi5zdHJpbmdpZnkpKEEpfXZhciBIQT17dHJhbnNpdGlvbmFsOmFBLGFkYXB0ZXI6WyJ4aHIiLCJodHRwIl0sdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24oSSx0KXtsZXQgZT10LmdldENvbnRlbnRUeXBlKCl8fCIiLGc9ZS5pbmRleE9mKCJhcHBsaWNhdGlvbi9qc29uIik+LTEscj1CLmlzT2JqZWN0KEkpO2lmKHImJkIuaXNIVE1MRm9ybShJKSYmKEk9bmV3IEZvcm1EYXRhKEkpKSxCLmlzRm9ybURhdGEoSSkpcmV0dXJuIGcmJmc/SlNPTi5zdHJpbmdpZnkoY0EoSSkpOkk7aWYoQi5pc0FycmF5QnVmZmVyKEkpfHxCLmlzQnVmZmVyKEkpfHxCLmlzU3RyZWFtKEkpfHxCLmlzRmlsZShJKXx8Qi5pc0Jsb2IoSSkpcmV0dXJuIEk7aWYoQi5pc0FycmF5QnVmZmVyVmlldyhJKSlyZXR1cm4gSS5idWZmZXI7aWYoQi5pc1VSTFNlYXJjaFBhcmFtcyhJKSlyZXR1cm4gdC5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiLCExKSxJLnRvU3RyaW5nKCk7bGV0IHM7aWYocil7aWYoZS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKT4tMSlyZXR1cm4gSkEoSSx0aGlzLmZvcm1TZXJpYWxpemVyKS50b1N0cmluZygpO2lmKChzPUIuaXNGaWxlTGlzdChJKSl8fGUuaW5kZXhPZigibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpPi0xKXtsZXQgYT10aGlzLmVudiYmdGhpcy5lbnYuRm9ybURhdGE7cmV0dXJuIEwocz97ImZpbGVzW10iOkl9OkksYSYmbmV3IGEsdGhpcy5mb3JtU2VyaWFsaXplcil9fXJldHVybiByfHxnPyh0LnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi9qc29uIiwhMSkscmUoSSkpOkl9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24oSSl7bGV0IHQ9dGhpcy50cmFuc2l0aW9uYWx8fEhBLnRyYW5zaXRpb25hbCxlPXQmJnQuZm9yY2VkSlNPTlBhcnNpbmcsZz10aGlzLnJlc3BvbnNlVHlwZT09PSJqc29uIjtpZihJJiZCLmlzU3RyaW5nKEkpJiYoZSYmIXRoaXMucmVzcG9uc2VUeXBlfHxnKSl7bGV0IGk9ISh0JiZ0LnNpbGVudEpTT05QYXJzaW5nKSYmZzt0cnl7cmV0dXJuIEpTT04ucGFyc2UoSSl9Y2F0Y2gocyl7aWYoaSl0aHJvdyBzLm5hbWU9PT0iU3ludGF4RXJyb3IiP2wuZnJvbShzLGwuRVJSX0JBRF9SRVNQT05TRSx0aGlzLG51bGwsdGhpcy5yZXNwb25zZSk6c319cmV0dXJuIEl9XSx0aW1lb3V0OjAseHNyZkNvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLHhzcmZIZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4iLG1heENvbnRlbnRMZW5ndGg6LTEsbWF4Qm9keUxlbmd0aDotMSxlbnY6e0Zvcm1EYXRhOncuY2xhc3Nlcy5Gb3JtRGF0YSxCbG9iOncuY2xhc3Nlcy5CbG9ifSx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihJKXtyZXR1cm4gST49MjAwJiZJPDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiIsIkNvbnRlbnQtVHlwZSI6dm9pZCAwfX19O0IuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giXSxBPT57SEEuaGVhZGVyc1tBXT17fX0pO3ZhciBPPUhBO3ZhciBpZT1CLnRvT2JqZWN0U2V0KFsiYWdlIiwiYXV0aG9yaXphdGlvbiIsImNvbnRlbnQtbGVuZ3RoIiwiY29udGVudC10eXBlIiwiZXRhZyIsImV4cGlyZXMiLCJmcm9tIiwiaG9zdCIsImlmLW1vZGlmaWVkLXNpbmNlIiwiaWYtdW5tb2RpZmllZC1zaW5jZSIsImxhc3QtbW9kaWZpZWQiLCJsb2NhdGlvbiIsIm1heC1mb3J3YXJkcyIsInByb3h5LWF1dGhvcml6YXRpb24iLCJyZWZlcmVyIiwicmV0cnktYWZ0ZXIiLCJ1c2VyLWFnZW50Il0pLFNJPUE9PntsZXQgST17fSx0LGUsZztyZXR1cm4gQSYmQS5zcGxpdChgJTBBYCkuZm9yRWFjaChmdW5jdGlvbihpKXtnPWkuaW5kZXhPZigiOiIpLHQ9aS5zdWJzdHJpbmcoMCxnKS50cmltKCkudG9Mb3dlckNhc2UoKSxlPWkuc3Vic3RyaW5nKGcrMSkudHJpbSgpLCEoIXR8fElbdF0mJmllW3RdKSYmKHQ9PT0ic2V0LWNvb2tpZSI/SVt0XT9JW3RdLnB1c2goZSk6SVt0XT1bZV06SVt0XT1JW3RdP0lbdF0rIiwgIitlOmUpfSksSX07dmFyIEZJPVN5bWJvbCgiaW50ZXJuYWxzIik7ZnVuY3Rpb24geihBKXtyZXR1cm4gQSYmU3RyaW5nKEEpLnRyaW0oKS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIGZBKEEpe3JldHVybiBBPT09ITF8fEE9PW51bGw/QTpCLmlzQXJyYXkoQSk/QS5tYXAoZkEpOlN0cmluZyhBKX1mdW5jdGlvbiBvZShBKXtsZXQgST1PYmplY3QuY3JlYXRlKG51bGwpLHQ9LyhbXlxccyw7PV0rKVxccyooPzo9XFxzKihbXiw7XSspKT8vZyxlO2Zvcig7ZT10LmV4ZWMoQSk7KUlbZVsxXV09ZVsyXTtyZXR1cm4gSX12YXIgQmU9QT0+L15bLV9hLXpBLVowLTleYHx+LCElMjMkJSZcJyorLl0rJC8udGVzdChBLnRyaW0oKSk7ZnVuY3Rpb24gWUEoQSxJLHQsZSxnKXtpZihCLmlzRnVuY3Rpb24oZSkpcmV0dXJuIGUuY2FsbCh0aGlzLEksdCk7aWYoZyYmKEk9dCksISFCLmlzU3RyaW5nKEkpKXtpZihCLmlzU3RyaW5nKGUpKXJldHVybiBJLmluZGV4T2YoZSkhPT0tMTtpZihCLmlzUmVnRXhwKGUpKXJldHVybiBlLnRlc3QoSSl9fWZ1bmN0aW9uIENlKEEpe3JldHVybiBBLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLyhbYS16XFxkXSkoXFx3KikvZywoSSx0LGUpPT50LnRvVXBwZXJDYXNlKCkrZSl9ZnVuY3Rpb24gc2UoQSxJKXtsZXQgdD1CLnRvQ2FtZWxDYXNlKCIgIitJKTtbImdldCIsInNldCIsImhhcyJdLmZvckVhY2goZT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLGUrdCx7dmFsdWU6ZnVuY3Rpb24oZyxyLGkpe3JldHVybiB0aGlzW2VdLmNhbGwodGhpcyxJLGcscixpKX0sY29uZmlndXJhYmxlOiEwfSl9KX12YXIgVD1jbGFzc3tjb25zdHJ1Y3RvcihJKXtJJiZ0aGlzLnNldChJKX1zZXQoSSx0LGUpe2xldCBnPXRoaXM7ZnVuY3Rpb24gcihzLGEsbil7bGV0IEM9eihhKTtpZighQyl0aHJvdyBuZXcgRXJyb3IoImhlYWRlciBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nIik7bGV0IG89Qi5maW5kS2V5KGcsQyk7KCFvfHxnW29dPT09dm9pZCAwfHxuPT09ITB8fG49PT12b2lkIDAmJmdbb10hPT0hMSkmJihnW298fGFdPWZBKHMpKX1sZXQgaT0ocyxhKT0+Qi5mb3JFYWNoKHMsKG4sQyk9PnIobixDLGEpKTtyZXR1cm4gQi5pc1BsYWluT2JqZWN0KEkpfHxJIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9pKEksdCk6Qi5pc1N0cmluZyhJKSYmKEk9SS50cmltKCkpJiYhQmUoSSk/aShTSShJKSx0KTpJIT1udWxsJiZyKHQsSSxlKSx0aGlzfWdldChJLHQpe2lmKEk9eihJKSxJKXtsZXQgZT1CLmZpbmRLZXkodGhpcyxJKTtpZihlKXtsZXQgZz10aGlzW2VdO2lmKCF0KXJldHVybiBnO2lmKHQ9PT0hMClyZXR1cm4gb2UoZyk7aWYoQi5pc0Z1bmN0aW9uKHQpKXJldHVybiB0LmNhbGwodGhpcyxnLGUpO2lmKEIuaXNSZWdFeHAodCkpcmV0dXJuIHQuZXhlYyhnKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJwYXJzZXIgbXVzdCBiZSBib29sZWFufHJlZ2V4cHxmdW5jdGlvbiIpfX19aGFzKEksdCl7aWYoST16KEkpLEkpe2xldCBlPUIuZmluZEtleSh0aGlzLEkpO3JldHVybiEhKGUmJnRoaXNbZV0hPT12b2lkIDAmJighdHx8WUEodGhpcyx0aGlzW2VdLGUsdCkpKX1yZXR1cm4hMX1kZWxldGUoSSx0KXtsZXQgZT10aGlzLGc9ITE7ZnVuY3Rpb24gcihpKXtpZihpPXooaSksaSl7bGV0IHM9Qi5maW5kS2V5KGUsaSk7cyYmKCF0fHxZQShlLGVbc10scyx0KSkmJihkZWxldGUgZVtzXSxnPSEwKX19cmV0dXJuIEIuaXNBcnJheShJKT9JLmZvckVhY2gocik6cihJKSxnfWNsZWFyKEkpe2xldCB0PU9iamVjdC5rZXlzKHRoaXMpLGU9dC5sZW5ndGgsZz0hMTtmb3IoO2UtLTspe2xldCByPXRbZV07KCFJfHxZQSh0aGlzLHRoaXNbcl0scixJLCEwKSkmJihkZWxldGUgdGhpc1tyXSxnPSEwKX1yZXR1cm4gZ31ub3JtYWxpemUoSSl7bGV0IHQ9dGhpcyxlPXt9O3JldHVybiBCLmZvckVhY2godGhpcywoZyxyKT0+e2xldCBpPUIuZmluZEtleShlLHIpO2lmKGkpe3RbaV09ZkEoZyksZGVsZXRlIHRbcl07cmV0dXJufWxldCBzPUk/Q2Uocik6U3RyaW5nKHIpLnRyaW0oKTtzIT09ciYmZGVsZXRlIHRbcl0sdFtzXT1mQShnKSxlW3NdPSEwfSksdGhpc31jb25jYXQoLi4uSSl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY29uY2F0KHRoaXMsLi4uSSl9dG9KU09OKEkpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIEIuZm9yRWFjaCh0aGlzLChlLGcpPT57ZSE9bnVsbCYmZSE9PSExJiYodFtnXT1JJiZCLmlzQXJyYXkoZSk/ZS5qb2luKCIsICIpOmUpfSksdH1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKVtTeW1ib2wuaXRlcmF0b3JdKCl9dG9TdHJpbmcoKXtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSkubWFwKChbSSx0XSk9PkkrIjogIit0KS5qb2luKGAlMEFgKX1nZXRbU3ltYm9sLnRvU3RyaW5nVGFnXSgpe3JldHVybiJBeGlvc0hlYWRlcnMifXN0YXRpYyBmcm9tKEkpe3JldHVybiBJIGluc3RhbmNlb2YgdGhpcz9JOm5ldyB0aGlzKEkpfXN0YXRpYyBjb25jYXQoSSwuLi50KXtsZXQgZT1uZXcgdGhpcyhJKTtyZXR1cm4gdC5mb3JFYWNoKGc9PmUuc2V0KGcpKSxlfXN0YXRpYyBhY2Nlc3NvcihJKXtsZXQgZT0odGhpc1tGSV09dGhpc1tGSV09e2FjY2Vzc29yczp7fX0pLmFjY2Vzc29ycyxnPXRoaXMucHJvdG90eXBlO2Z1bmN0aW9uIHIoaSl7bGV0IHM9eihpKTtlW3NdfHwoc2UoZyxpKSxlW3NdPSEwKX1yZXR1cm4gQi5pc0FycmF5KEkpP0kuZm9yRWFjaChyKTpyKEkpLHRoaXN9fTtULmFjY2Vzc29yKFsiQ29udGVudC1UeXBlIiwiQ29udGVudC1MZW5ndGgiLCJBY2NlcHQiLCJBY2NlcHQtRW5jb2RpbmciLCJVc2VyLUFnZW50IiwiQXV0aG9yaXphdGlvbiJdKTtCLnJlZHVjZURlc2NyaXB0b3JzKFQucHJvdG90eXBlLCh7dmFsdWU6QX0sSSk9PntsZXQgdD1JWzBdLnRvVXBwZXJDYXNlKCkrSS5zbGljZSgxKTtyZXR1cm57Z2V0OigpPT5BLHNldChlKXt0aGlzW3RdPWV9fX0pO0IuZnJlZXplTWV0aG9kcyhUKTt2YXIgbT1UO2Z1bmN0aW9uIF8oQSxJKXtsZXQgdD10aGlzfHxPLGU9SXx8dCxnPW0uZnJvbShlLmhlYWRlcnMpLHI9ZS5kYXRhO3JldHVybiBCLmZvckVhY2goQSxmdW5jdGlvbihzKXtyPXMuY2FsbCh0LHIsZy5ub3JtYWxpemUoKSxJP0kuc3RhdHVzOnZvaWQgMCl9KSxnLm5vcm1hbGl6ZSgpLHJ9ZnVuY3Rpb24gdihBKXtyZXR1cm4hIShBJiZBLl9fQ0FOQ0VMX18pfWZ1bmN0aW9uIFJJKEEsSSx0KXtsLmNhbGwodGhpcyxBPz8iY2FuY2VsZWQiLGwuRVJSX0NBTkNFTEVELEksdCksdGhpcy5uYW1lPSJDYW5jZWxlZEVycm9yIn1CLmluaGVyaXRzKFJJLGwse19fQ0FOQ0VMX186ITB9KTt2YXIgSj1SSTtmdW5jdGlvbiBiQShBLEksdCl7bGV0IGU9dC5jb25maWcudmFsaWRhdGVTdGF0dXM7IXQuc3RhdHVzfHwhZXx8ZSh0LnN0YXR1cyk/QSh0KTpJKG5ldyBsKCJSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICIrdC5zdGF0dXMsW2wuRVJSX0JBRF9SRVFVRVNULGwuRVJSX0JBRF9SRVNQT05TRV1bTWF0aC5mbG9vcih0LnN0YXR1cy8xMDApLTRdLHQuY29uZmlnLHQucmVxdWVzdCx0KSl9dmFyIE5JPXcuaGFzU3RhbmRhcmRCcm93c2VyRW52P3t3cml0ZShBLEksdCxlLGcscil7bGV0IGk9W0ErIj0iK2VuY29kZVVSSUNvbXBvbmVudChJKV07Qi5pc051bWJlcih0KSYmaS5wdXNoKCJleHBpcmVzPSIrbmV3IERhdGUodCkudG9HTVRTdHJpbmcoKSksQi5pc1N0cmluZyhlKSYmaS5wdXNoKCJwYXRoPSIrZSksQi5pc1N0cmluZyhnKSYmaS5wdXNoKCJkb21haW49IitnKSxyPT09ITAmJmkucHVzaCgic2VjdXJlIiksZG9jdW1lbnQuY29va2llPWkuam9pbigiOyAiKX0scmVhZChBKXtsZXQgST1kb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgiKF58O1xcXFxzKikoIitBKyIpPShbXjtdKikiKSk7cmV0dXJuIEk/ZGVjb2RlVVJJQ29tcG9uZW50KElbM10pOm51bGx9LHJlbW92ZShBKXt0aGlzLndyaXRlKEEsIiIsRGF0ZS5ub3coKS04NjRlNSl9fTp7d3JpdGUoKXt9LHJlYWQoKXtyZXR1cm4gbnVsbH0scmVtb3ZlKCl7fX07ZnVuY3Rpb24gTUEoQSl7cmV0dXJuL14oW2Etel1bYS16XFxkK1xcLS5dKjopP1xcL1xcLy9pLnRlc3QoQSl9ZnVuY3Rpb24gcUEoQSxJKXtyZXR1cm4gST9BLnJlcGxhY2UoL1xcLyskLywiIikrIi8iK0kucmVwbGFjZSgvXlxcLysvLCIiKTpBfWZ1bmN0aW9uICQoQSxJKXtyZXR1cm4gQSYmIU1BKEkpP3FBKEEsSSk6SX12YXIgVUk9dy5oYXNTdGFuZGFyZEJyb3dzZXJFbnY/ZnVuY3Rpb24oKXtsZXQgST0vKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpLGU7ZnVuY3Rpb24gZyhyKXtsZXQgaT1yO3JldHVybiBJJiYodC5zZXRBdHRyaWJ1dGUoImhyZWYiLGkpLGk9dC5ocmVmKSx0LnNldEF0dHJpYnV0ZSgiaHJlZiIsaSkse2hyZWY6dC5ocmVmLHByb3RvY29sOnQucHJvdG9jb2w/dC5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6dC5ob3N0LHNlYXJjaDp0LnNlYXJjaD90LnNlYXJjaC5yZXBsYWNlKC9eXFw/LywiIik6IiIsaGFzaDp0Lmhhc2g/dC5oYXNoLnJlcGxhY2UoL14lMjMvLCIiKToiIixob3N0bmFtZTp0Lmhvc3RuYW1lLHBvcnQ6dC5wb3J0LHBhdGhuYW1lOnQucGF0aG5hbWUuY2hhckF0KDApPT09Ii8iP3QucGF0aG5hbWU6Ii8iK3QucGF0aG5hbWV9fXJldHVybiBlPWcod2luZG93LmxvY2F0aW9uLmhyZWYpLGZ1bmN0aW9uKGkpe2xldCBzPUIuaXNTdHJpbmcoaSk/ZyhpKTppO3JldHVybiBzLnByb3RvY29sPT09ZS5wcm90b2NvbCYmcy5ob3N0PT09ZS5ob3N0fX0oKTpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiEwfX0oKTtmdW5jdGlvbiBLQShBKXtsZXQgST0vXihbLStcXHddezEsMjV9KSg6P1xcL1xcL3w6KS8uZXhlYyhBKTtyZXR1cm4gSSYmSVsxXXx8IiJ9ZnVuY3Rpb24gUWUoQSxJKXtBPUF8fDEwO2xldCB0PW5ldyBBcnJheShBKSxlPW5ldyBBcnJheShBKSxnPTAscj0wLGk7cmV0dXJuIEk9SSE9PXZvaWQgMD9JOjFlMyxmdW5jdGlvbihhKXtsZXQgbj1EYXRlLm5vdygpLEM9ZVtyXTtpfHwoaT1uKSx0W2ddPWEsZVtnXT1uO2xldCBvPXIsZj0wO2Zvcig7byE9PWc7KWYrPXRbbysrXSxvPW8lQTtpZihnPShnKzEpJUEsZz09PXImJihyPShyKzEpJUEpLG4taTxJKXJldHVybjtsZXQgUT1DJiZuLUM7cmV0dXJuIFE/TWF0aC5yb3VuZChmKjFlMy9RKTp2b2lkIDB9fXZhciBHST1RZTtmdW5jdGlvbiBrSShBLEkpe2xldCB0PTAsZT1HSSg1MCwyNTApO3JldHVybiBnPT57bGV0IHI9Zy5sb2FkZWQsaT1nLmxlbmd0aENvbXB1dGFibGU/Zy50b3RhbDp2b2lkIDAscz1yLXQsYT1lKHMpLG49cjw9aTt0PXI7bGV0IEM9e2xvYWRlZDpyLHRvdGFsOmkscHJvZ3Jlc3M6aT9yL2k6dm9pZCAwLGJ5dGVzOnMscmF0ZTphfHx2b2lkIDAsZXN0aW1hdGVkOmEmJmkmJm4/KGktcikvYTp2b2lkIDAsZXZlbnQ6Z307Q1tJPyJkb3dubG9hZCI6InVwbG9hZCJdPSEwLEEoQyl9fXZhciBuZT10eXBlb2YgWE1MSHR0cFJlcXVlc3Q8InUiLExJPW5lJiZmdW5jdGlvbihBKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odCxlKXtsZXQgZz1BLmRhdGEscj1tLmZyb20oQS5oZWFkZXJzKS5ub3JtYWxpemUoKSx7cmVzcG9uc2VUeXBlOmksd2l0aFhTUkZUb2tlbjpzfT1BLGE7ZnVuY3Rpb24gbigpe0EuY2FuY2VsVG9rZW4mJkEuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUoYSksQS5zaWduYWwmJkEuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixhKX1sZXQgQztpZihCLmlzRm9ybURhdGEoZykpe2lmKHcuaGFzU3RhbmRhcmRCcm93c2VyRW52fHx3Lmhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudilyLnNldENvbnRlbnRUeXBlKCExKTtlbHNlIGlmKChDPXIuZ2V0Q29udGVudFR5cGUoKSkhPT0hMSl7bGV0W2MsLi4udV09Qz9DLnNwbGl0KCI7IikubWFwKGQ9PmQudHJpbSgpKS5maWx0ZXIoQm9vbGVhbik6W107ci5zZXRDb250ZW50VHlwZShbY3x8Im11bHRpcGFydC9mb3JtLWRhdGEiLC4uLnVdLmpvaW4oIjsgIikpfX1sZXQgbz1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoQS5hdXRoKXtsZXQgYz1BLmF1dGgudXNlcm5hbWV8fCIiLHU9QS5hdXRoLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChBLmF1dGgucGFzc3dvcmQpKToiIjtyLnNldCgiQXV0aG9yaXphdGlvbiIsIkJhc2ljICIrYnRvYShjKyI6Iit1KSl9bGV0IGY9JChBLmJhc2VVUkwsQS51cmwpO28ub3BlbihBLm1ldGhvZC50b1VwcGVyQ2FzZSgpLFgoZixBLnBhcmFtcyxBLnBhcmFtc1NlcmlhbGl6ZXIpLCEwKSxvLnRpbWVvdXQ9QS50aW1lb3V0O2Z1bmN0aW9uIFEoKXtpZighbylyZXR1cm47bGV0IGM9bS5mcm9tKCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiaW4gbyYmby5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSksZD17ZGF0YTohaXx8aT09PSJ0ZXh0Inx8aT09PSJqc29uIj9vLnJlc3BvbnNlVGV4dDpvLnJlc3BvbnNlLHN0YXR1czpvLnN0YXR1cyxzdGF0dXNUZXh0Om8uc3RhdHVzVGV4dCxoZWFkZXJzOmMsY29uZmlnOkEscmVxdWVzdDpvfTtiQShmdW5jdGlvbihOKXt0KE4pLG4oKX0sZnVuY3Rpb24oTil7ZShOKSxuKCl9LGQpLG89bnVsbH1pZigib25sb2FkZW5kImluIG8/by5vbmxvYWRlbmQ9UTpvLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpeyFvfHxvLnJlYWR5U3RhdGUhPT00fHxvLnN0YXR1cz09PTAmJiEoby5yZXNwb25zZVVSTCYmby5yZXNwb25zZVVSTC5pbmRleE9mKCJmaWxlOiIpPT09MCl8fHNldFRpbWVvdXQoUSl9LG8ub25hYm9ydD1mdW5jdGlvbigpe28mJihlKG5ldyBsKCJSZXF1ZXN0IGFib3J0ZWQiLGwuRUNPTk5BQk9SVEVELEEsbykpLG89bnVsbCl9LG8ub25lcnJvcj1mdW5jdGlvbigpe2UobmV3IGwoIk5ldHdvcmsgRXJyb3IiLGwuRVJSX05FVFdPUkssQSxvKSksbz1udWxsfSxvLm9udGltZW91dD1mdW5jdGlvbigpe2xldCB1PUEudGltZW91dD8idGltZW91dCBvZiAiK0EudGltZW91dCsibXMgZXhjZWVkZWQiOiJ0aW1lb3V0IGV4Y2VlZGVkIixkPUEudHJhbnNpdGlvbmFsfHxhQTtBLnRpbWVvdXRFcnJvck1lc3NhZ2UmJih1PUEudGltZW91dEVycm9yTWVzc2FnZSksZShuZXcgbCh1LGQuY2xhcmlmeVRpbWVvdXRFcnJvcj9sLkVUSU1FRE9VVDpsLkVDT05OQUJPUlRFRCxBLG8pKSxvPW51bGx9LHcuaGFzU3RhbmRhcmRCcm93c2VyRW52JiYocyYmQi5pc0Z1bmN0aW9uKHMpJiYocz1zKEEpKSxzfHxzIT09ITEmJlVJKGYpKSl7bGV0IGM9QS54c3JmSGVhZGVyTmFtZSYmQS54c3JmQ29va2llTmFtZSYmTkkucmVhZChBLnhzcmZDb29raWVOYW1lKTtjJiZyLnNldChBLnhzcmZIZWFkZXJOYW1lLGMpfWc9PT12b2lkIDAmJnIuc2V0Q29udGVudFR5cGUobnVsbCksInNldFJlcXVlc3RIZWFkZXIiaW4gbyYmQi5mb3JFYWNoKHIudG9KU09OKCksZnVuY3Rpb24odSxkKXtvLnNldFJlcXVlc3RIZWFkZXIoZCx1KX0pLEIuaXNVbmRlZmluZWQoQS53aXRoQ3JlZGVudGlhbHMpfHwoby53aXRoQ3JlZGVudGlhbHM9ISFBLndpdGhDcmVkZW50aWFscyksaSYmaSE9PSJqc29uIiYmKG8ucmVzcG9uc2VUeXBlPUEucmVzcG9uc2VUeXBlKSx0eXBlb2YgQS5vbkRvd25sb2FkUHJvZ3Jlc3M9PSJmdW5jdGlvbiImJm8uYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGtJKEEub25Eb3dubG9hZFByb2dyZXNzLCEwKSksdHlwZW9mIEEub25VcGxvYWRQcm9ncmVzcz09ImZ1bmN0aW9uIiYmby51cGxvYWQmJm8udXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixrSShBLm9uVXBsb2FkUHJvZ3Jlc3MpKSwoQS5jYW5jZWxUb2tlbnx8QS5zaWduYWwpJiYoYT1jPT57byYmKGUoIWN8fGMudHlwZT9uZXcgSihudWxsLEEsbyk6Yyksby5hYm9ydCgpLG89bnVsbCl9LEEuY2FuY2VsVG9rZW4mJkEuY2FuY2VsVG9rZW4uc3Vic2NyaWJlKGEpLEEuc2lnbmFsJiYoQS5zaWduYWwuYWJvcnRlZD9hKCk6QS5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGEpKSk7bGV0IEU9S0EoZik7aWYoRSYmdy5wcm90b2NvbHMuaW5kZXhPZihFKT09PS0xKXtlKG5ldyBsKCJVbnN1cHBvcnRlZCBwcm90b2NvbCAiK0UrIjoiLGwuRVJSX0JBRF9SRVFVRVNULEEpKTtyZXR1cm59by5zZW5kKGd8fG51bGwpfSl9O3ZhciBPQT17aHR0cDpuQSx4aHI6TEl9O0IuZm9yRWFjaChPQSwoQSxJKT0+e2lmKEEpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoQSwibmFtZSIse3ZhbHVlOkl9KX1jYXRjaHt9T2JqZWN0LmRlZmluZVByb3BlcnR5KEEsImFkYXB0ZXJOYW1lIix7dmFsdWU6SX0pfX0pO3ZhciBKST1BPT5gLSAke0F9YCxFZT1BPT5CLmlzRnVuY3Rpb24oQSl8fEE9PT1udWxsfHxBPT09ITEsbEE9e2dldEFkYXB0ZXI6QT0+e0E9Qi5pc0FycmF5KEEpP0E6W0FdO2xldHtsZW5ndGg6SX09QSx0LGUsZz17fTtmb3IobGV0IHI9MDtyPEk7cisrKXt0PUFbcl07bGV0IGk7aWYoZT10LCFFZSh0KSYmKGU9T0FbKGk9U3RyaW5nKHQpKS50b0xvd2VyQ2FzZSgpXSxlPT09dm9pZCAwKSl0aHJvdyBuZXcgbChgVW5rbm93biBhZGFwdGVyIFwnJHtpfVwnYCk7aWYoZSlicmVhaztnW2l8fCIlMjMiK3JdPWV9aWYoIWUpe2xldCByPU9iamVjdC5lbnRyaWVzKGcpLm1hcCgoW3MsYV0pPT5gYWRhcHRlciAke3N9IGArKGE9PT0hMT8iaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZW52aXJvbm1lbnQiOiJpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBidWlsZCIpKSxpPUk/ci5sZW5ndGg+MT9gc2luY2UgOiUwQWArci5tYXAoSkkpLmpvaW4oYCUwQWApOiIgIitKSShyWzBdKToiYXMgbm8gYWRhcHRlciBzcGVjaWZpZWQiO3Rocm93IG5ldyBsKCJUaGVyZSBpcyBubyBzdWl0YWJsZSBhZGFwdGVyIHRvIGRpc3BhdGNoIHRoZSByZXF1ZXN0ICIraSwiRVJSX05PVF9TVVBQT1JUIil9cmV0dXJuIGV9LGFkYXB0ZXJzOk9BfTtmdW5jdGlvbiBUQShBKXtpZihBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxBLnNpZ25hbCYmQS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgSihudWxsLEEpfWZ1bmN0aW9uIERBKEEpe3JldHVybiBUQShBKSxBLmhlYWRlcnM9bS5mcm9tKEEuaGVhZGVycyksQS5kYXRhPV8uY2FsbChBLEEudHJhbnNmb3JtUmVxdWVzdCksWyJwb3N0IiwicHV0IiwicGF0Y2giXS5pbmRleE9mKEEubWV0aG9kKSE9PS0xJiZBLmhlYWRlcnMuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsITEpLGxBLmdldEFkYXB0ZXIoQS5hZGFwdGVyfHxPLmFkYXB0ZXIpKEEpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIFRBKEEpLGUuZGF0YT1fLmNhbGwoQSxBLnRyYW5zZm9ybVJlc3BvbnNlLGUpLGUuaGVhZGVycz1tLmZyb20oZS5oZWFkZXJzKSxlfSxmdW5jdGlvbihlKXtyZXR1cm4gdihlKXx8KFRBKEEpLGUmJmUucmVzcG9uc2UmJihlLnJlc3BvbnNlLmRhdGE9Xy5jYWxsKEEsQS50cmFuc2Zvcm1SZXNwb25zZSxlLnJlc3BvbnNlKSxlLnJlc3BvbnNlLmhlYWRlcnM9bS5mcm9tKGUucmVzcG9uc2UuaGVhZGVycykpKSxQcm9taXNlLnJlamVjdChlKX0pfXZhciBIST1BPT5BIGluc3RhbmNlb2YgbT9BLnRvSlNPTigpOkE7ZnVuY3Rpb24gRyhBLEkpe0k9SXx8e307bGV0IHQ9e307ZnVuY3Rpb24gZShuLEMsbyl7cmV0dXJuIEIuaXNQbGFpbk9iamVjdChuKSYmQi5pc1BsYWluT2JqZWN0KEMpP0IubWVyZ2UuY2FsbCh7Y2FzZWxlc3M6b30sbixDKTpCLmlzUGxhaW5PYmplY3QoQyk/Qi5tZXJnZSh7fSxDKTpCLmlzQXJyYXkoQyk/Qy5zbGljZSgpOkN9ZnVuY3Rpb24gZyhuLEMsbyl7aWYoQi5pc1VuZGVmaW5lZChDKSl7aWYoIUIuaXNVbmRlZmluZWQobikpcmV0dXJuIGUodm9pZCAwLG4sbyl9ZWxzZSByZXR1cm4gZShuLEMsbyl9ZnVuY3Rpb24gcihuLEMpe2lmKCFCLmlzVW5kZWZpbmVkKEMpKXJldHVybiBlKHZvaWQgMCxDKX1mdW5jdGlvbiBpKG4sQyl7aWYoQi5pc1VuZGVmaW5lZChDKSl7aWYoIUIuaXNVbmRlZmluZWQobikpcmV0dXJuIGUodm9pZCAwLG4pfWVsc2UgcmV0dXJuIGUodm9pZCAwLEMpfWZ1bmN0aW9uIHMobixDLG8pe2lmKG8gaW4gSSlyZXR1cm4gZShuLEMpO2lmKG8gaW4gQSlyZXR1cm4gZSh2b2lkIDAsbil9bGV0IGE9e3VybDpyLG1ldGhvZDpyLGRhdGE6cixiYXNlVVJMOmksdHJhbnNmb3JtUmVxdWVzdDppLHRyYW5zZm9ybVJlc3BvbnNlOmkscGFyYW1zU2VyaWFsaXplcjppLHRpbWVvdXQ6aSx0aW1lb3V0TWVzc2FnZTppLHdpdGhDcmVkZW50aWFsczppLHdpdGhYU1JGVG9rZW46aSxhZGFwdGVyOmkscmVzcG9uc2VUeXBlOmkseHNyZkNvb2tpZU5hbWU6aSx4c3JmSGVhZGVyTmFtZTppLG9uVXBsb2FkUHJvZ3Jlc3M6aSxvbkRvd25sb2FkUHJvZ3Jlc3M6aSxkZWNvbXByZXNzOmksbWF4Q29udGVudExlbmd0aDppLG1heEJvZHlMZW5ndGg6aSxiZWZvcmVSZWRpcmVjdDppLHRyYW5zcG9ydDppLGh0dHBBZ2VudDppLGh0dHBzQWdlbnQ6aSxjYW5jZWxUb2tlbjppLHNvY2tldFBhdGg6aSxyZXNwb25zZUVuY29kaW5nOmksdmFsaWRhdGVTdGF0dXM6cyxoZWFkZXJzOihuLEMpPT5nKEhJKG4pLEhJKEMpLCEwKX07cmV0dXJuIEIuZm9yRWFjaChPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LEEsSSkpLGZ1bmN0aW9uKEMpe2xldCBvPWFbQ118fGcsZj1vKEFbQ10sSVtDXSxDKTtCLmlzVW5kZWZpbmVkKGYpJiZvIT09c3x8KHRbQ109Zil9KSx0fXZhciB1QT0iMS42LjIiO3ZhciB4QT17fTtbIm9iamVjdCIsImJvb2xlYW4iLCJudW1iZXIiLCJmdW5jdGlvbiIsInN0cmluZyIsInN5bWJvbCJdLmZvckVhY2goKEEsSSk9Pnt4QVtBXT1mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PT1BfHwiYSIrKEk8MT8ibiAiOiIgIikrQX19KTt2YXIgWUk9e307eEEudHJhbnNpdGlvbmFsPWZ1bmN0aW9uKEksdCxlKXtmdW5jdGlvbiBnKHIsaSl7cmV0dXJuIltBeGlvcyB2Iit1QSsiXSBUcmFuc2l0aW9uYWwgb3B0aW9uIFwnIityKyJcJyIraSsoZT8iLiAiK2U6IiIpfXJldHVybihyLGkscyk9PntpZihJPT09ITEpdGhyb3cgbmV3IGwoZyhpLCIgaGFzIGJlZW4gcmVtb3ZlZCIrKHQ/IiBpbiAiK3Q6IiIpKSxsLkVSUl9ERVBSRUNBVEVEKTtyZXR1cm4gdCYmIVlJW2ldJiYoWUlbaV09ITAsY29uc29sZS53YXJuKGcoaSwiIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdiIrdCsiIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlIikpKSxJP0kocixpLHMpOiEwfX07ZnVuY3Rpb24gYWUoQSxJLHQpe2lmKHR5cGVvZiBBIT0ib2JqZWN0Iil0aHJvdyBuZXcgbCgib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIsbC5FUlJfQkFEX09QVElPTl9WQUxVRSk7bGV0IGU9T2JqZWN0LmtleXMoQSksZz1lLmxlbmd0aDtmb3IoO2ctLSA+MDspe2xldCByPWVbZ10saT1JW3JdO2lmKGkpe2xldCBzPUFbcl0sYT1zPT09dm9pZCAwfHxpKHMscixBKTtpZihhIT09ITApdGhyb3cgbmV3IGwoIm9wdGlvbiAiK3IrIiBtdXN0IGJlICIrYSxsLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtjb250aW51ZX1pZih0IT09ITApdGhyb3cgbmV3IGwoIlVua25vd24gb3B0aW9uICIrcixsLkVSUl9CQURfT1BUSU9OKX19dmFyIGhBPXthc3NlcnRPcHRpb25zOmFlLHZhbGlkYXRvcnM6eEF9O3ZhciBIPWhBLnZhbGlkYXRvcnMseD1jbGFzc3tjb25zdHJ1Y3RvcihJKXt0aGlzLmRlZmF1bHRzPUksdGhpcy5pbnRlcmNlcHRvcnM9e3JlcXVlc3Q6bmV3IGtBLHJlc3BvbnNlOm5ldyBrQX19cmVxdWVzdChJLHQpe3R5cGVvZiBJPT0ic3RyaW5nIj8odD10fHx7fSx0LnVybD1JKTp0PUl8fHt9LHQ9Ryh0aGlzLmRlZmF1bHRzLHQpO2xldHt0cmFuc2l0aW9uYWw6ZSxwYXJhbXNTZXJpYWxpemVyOmcsaGVhZGVyczpyfT10O2UhPT12b2lkIDAmJmhBLmFzc2VydE9wdGlvbnMoZSx7c2lsZW50SlNPTlBhcnNpbmc6SC50cmFuc2l0aW9uYWwoSC5ib29sZWFuKSxmb3JjZWRKU09OUGFyc2luZzpILnRyYW5zaXRpb25hbChILmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6SC50cmFuc2l0aW9uYWwoSC5ib29sZWFuKX0sITEpLGchPW51bGwmJihCLmlzRnVuY3Rpb24oZyk/dC5wYXJhbXNTZXJpYWxpemVyPXtzZXJpYWxpemU6Z306aEEuYXNzZXJ0T3B0aW9ucyhnLHtlbmNvZGU6SC5mdW5jdGlvbixzZXJpYWxpemU6SC5mdW5jdGlvbn0sITApKSx0Lm1ldGhvZD0odC5tZXRob2R8fHRoaXMuZGVmYXVsdHMubWV0aG9kfHwiZ2V0IikudG9Mb3dlckNhc2UoKTtsZXQgaT1yJiZCLm1lcmdlKHIuY29tbW9uLHJbdC5tZXRob2RdKTtyJiZCLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwicG9zdCIsInB1dCIsInBhdGNoIiwiY29tbW9uIl0sRT0+e2RlbGV0ZSByW0VdfSksdC5oZWFkZXJzPW0uY29uY2F0KGkscik7bGV0IHM9W10sYT0hMDt0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goZnVuY3Rpb24oYyl7dHlwZW9mIGMucnVuV2hlbj09ImZ1bmN0aW9uIiYmYy5ydW5XaGVuKHQpPT09ITF8fChhPWEmJmMuc3luY2hyb25vdXMscy51bnNoaWZ0KGMuZnVsZmlsbGVkLGMucmVqZWN0ZWQpKX0pO2xldCBuPVtdO3RoaXMuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLmZvckVhY2goZnVuY3Rpb24oYyl7bi5wdXNoKGMuZnVsZmlsbGVkLGMucmVqZWN0ZWQpfSk7bGV0IEMsbz0wLGY7aWYoIWEpe2xldCBFPVtEQS5iaW5kKHRoaXMpLHZvaWQgMF07Zm9yKEUudW5zaGlmdC5hcHBseShFLHMpLEUucHVzaC5hcHBseShFLG4pLGY9RS5sZW5ndGgsQz1Qcm9taXNlLnJlc29sdmUodCk7bzxmOylDPUMudGhlbihFW28rK10sRVtvKytdKTtyZXR1cm4gQ31mPXMubGVuZ3RoO2xldCBRPXQ7Zm9yKG89MDtvPGY7KXtsZXQgRT1zW28rK10sYz1zW28rK107dHJ5e1E9RShRKX1jYXRjaCh1KXtjLmNhbGwodGhpcyx1KTticmVha319dHJ5e0M9REEuY2FsbCh0aGlzLFEpfWNhdGNoKEUpe3JldHVybiBQcm9taXNlLnJlamVjdChFKX1mb3Iobz0wLGY9bi5sZW5ndGg7bzxmOylDPUMudGhlbihuW28rK10sbltvKytdKTtyZXR1cm4gQ31nZXRVcmkoSSl7ST1HKHRoaXMuZGVmYXVsdHMsSSk7bGV0IHQ9JChJLmJhc2VVUkwsSS51cmwpO3JldHVybiBYKHQsSS5wYXJhbXMsSS5wYXJhbXNTZXJpYWxpemVyKX19O0IuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJvcHRpb25zIl0sZnVuY3Rpb24oSSl7eC5wcm90b3R5cGVbSV09ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KEcoZXx8e30se21ldGhvZDpJLHVybDp0LGRhdGE6KGV8fHt9KS5kYXRhfSkpfX0pO0IuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLGZ1bmN0aW9uKEkpe2Z1bmN0aW9uIHQoZSl7cmV0dXJuIGZ1bmN0aW9uKHIsaSxzKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KEcoc3x8e30se21ldGhvZDpJLGhlYWRlcnM6ZT97IkNvbnRlbnQtVHlwZSI6Im11bHRpcGFydC9mb3JtLWRhdGEifTp7fSx1cmw6cixkYXRhOml9KSl9fXgucHJvdG90eXBlW0ldPXQoKSx4LnByb3RvdHlwZVtJKyJGb3JtIl09dCghMCl9KTt2YXIgQUE9eDt2YXIgUEE9Y2xhc3MgQXtjb25zdHJ1Y3RvcihJKXtpZih0eXBlb2YgSSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJleGVjdXRvciBtdXN0IGJlIGEgZnVuY3Rpb24uIik7bGV0IHQ7dGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpe3Q9cn0pO2xldCBlPXRoaXM7dGhpcy5wcm9taXNlLnRoZW4oZz0+e2lmKCFlLl9saXN0ZW5lcnMpcmV0dXJuO2xldCByPWUuX2xpc3RlbmVycy5sZW5ndGg7Zm9yKDtyLS0gPjA7KWUuX2xpc3RlbmVyc1tyXShnKTtlLl9saXN0ZW5lcnM9bnVsbH0pLHRoaXMucHJvbWlzZS50aGVuPWc9PntsZXQgcixpPW5ldyBQcm9taXNlKHM9PntlLnN1YnNjcmliZShzKSxyPXN9KS50aGVuKGcpO3JldHVybiBpLmNhbmNlbD1mdW5jdGlvbigpe2UudW5zdWJzY3JpYmUocil9LGl9LEkoZnVuY3Rpb24ocixpLHMpe2UucmVhc29ufHwoZS5yZWFzb249bmV3IEoocixpLHMpLHQoZS5yZWFzb24pKX0pfXRocm93SWZSZXF1ZXN0ZWQoKXtpZih0aGlzLnJlYXNvbil0aHJvdyB0aGlzLnJlYXNvbn1zdWJzY3JpYmUoSSl7aWYodGhpcy5yZWFzb24pe0kodGhpcy5yZWFzb24pO3JldHVybn10aGlzLl9saXN0ZW5lcnM/dGhpcy5fbGlzdGVuZXJzLnB1c2goSSk6dGhpcy5fbGlzdGVuZXJzPVtJXX11bnN1YnNjcmliZShJKXtpZighdGhpcy5fbGlzdGVuZXJzKXJldHVybjtsZXQgdD10aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihJKTt0IT09LTEmJnRoaXMuX2xpc3RlbmVycy5zcGxpY2UodCwxKX1zdGF0aWMgc291cmNlKCl7bGV0IEk7cmV0dXJue3Rva2VuOm5ldyBBKGZ1bmN0aW9uKGcpe0k9Z30pLGNhbmNlbDpJfX19LGJJPVBBO2Z1bmN0aW9uIGpBKEEpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gQS5hcHBseShudWxsLHQpfX1mdW5jdGlvbiBXQShBKXtyZXR1cm4gQi5pc09iamVjdChBKSYmQS5pc0F4aW9zRXJyb3I9PT0hMH12YXIgWkE9e0NvbnRpbnVlOjEwMCxTd2l0Y2hpbmdQcm90b2NvbHM6MTAxLFByb2Nlc3Npbmc6MTAyLEVhcmx5SGludHM6MTAzLE9rOjIwMCxDcmVhdGVkOjIwMSxBY2NlcHRlZDoyMDIsTm9uQXV0aG9yaXRhdGl2ZUluZm9ybWF0aW9uOjIwMyxOb0NvbnRlbnQ6MjA0LFJlc2V0Q29udGVudDoyMDUsUGFydGlhbENvbnRlbnQ6MjA2LE11bHRpU3RhdHVzOjIwNyxBbHJlYWR5UmVwb3J0ZWQ6MjA4LEltVXNlZDoyMjYsTXVsdGlwbGVDaG9pY2VzOjMwMCxNb3ZlZFBlcm1hbmVudGx5OjMwMSxGb3VuZDozMDIsU2VlT3RoZXI6MzAzLE5vdE1vZGlmaWVkOjMwNCxVc2VQcm94eTozMDUsVW51c2VkOjMwNixUZW1wb3JhcnlSZWRpcmVjdDozMDcsUGVybWFuZW50UmVkaXJlY3Q6MzA4LEJhZFJlcXVlc3Q6NDAwLFVuYXV0aG9yaXplZDo0MDEsUGF5bWVudFJlcXVpcmVkOjQwMixGb3JiaWRkZW46NDAzLE5vdEZvdW5kOjQwNCxNZXRob2ROb3RBbGxvd2VkOjQwNSxOb3RBY2NlcHRhYmxlOjQwNixQcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6NDA3LFJlcXVlc3RUaW1lb3V0OjQwOCxDb25mbGljdDo0MDksR29uZTo0MTAsTGVuZ3RoUmVxdWlyZWQ6NDExLFByZWNvbmRpdGlvbkZhaWxlZDo0MTIsUGF5bG9hZFRvb0xhcmdlOjQxMyxVcmlUb29Mb25nOjQxNCxVbnN1cHBvcnRlZE1lZGlhVHlwZTo0MTUsUmFuZ2VOb3RTYXRpc2ZpYWJsZTo0MTYsRXhwZWN0YXRpb25GYWlsZWQ6NDE3LEltQVRlYXBvdDo0MTgsTWlzZGlyZWN0ZWRSZXF1ZXN0OjQyMSxVbnByb2Nlc3NhYmxlRW50aXR5OjQyMixMb2NrZWQ6NDIzLEZhaWxlZERlcGVuZGVuY3k6NDI0LFRvb0Vhcmx5OjQyNSxVcGdyYWRlUmVxdWlyZWQ6NDI2LFByZWNvbmRpdGlvblJlcXVpcmVkOjQyOCxUb29NYW55UmVxdWVzdHM6NDI5LFJlcXVlc3RIZWFkZXJGaWVsZHNUb29MYXJnZTo0MzEsVW5hdmFpbGFibGVGb3JMZWdhbFJlYXNvbnM6NDUxLEludGVybmFsU2VydmVyRXJyb3I6NTAwLE5vdEltcGxlbWVudGVkOjUwMSxCYWRHYXRld2F5OjUwMixTZXJ2aWNlVW5hdmFpbGFibGU6NTAzLEdhdGV3YXlUaW1lb3V0OjUwNCxIdHRwVmVyc2lvbk5vdFN1cHBvcnRlZDo1MDUsVmFyaWFudEFsc29OZWdvdGlhdGVzOjUwNixJbnN1ZmZpY2llbnRTdG9yYWdlOjUwNyxMb29wRGV0ZWN0ZWQ6NTA4LE5vdEV4dGVuZGVkOjUxMCxOZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZDo1MTF9O09iamVjdC5lbnRyaWVzKFpBKS5mb3JFYWNoKChbQSxJXSk9PntaQVtJXT1BfSk7dmFyIE1JPVpBO2Z1bmN0aW9uIHFJKEEpe2xldCBJPW5ldyBBQShBKSx0PVcoQUEucHJvdG90eXBlLnJlcXVlc3QsSSk7cmV0dXJuIEIuZXh0ZW5kKHQsQUEucHJvdG90eXBlLEkse2FsbE93bktleXM6ITB9KSxCLmV4dGVuZCh0LEksbnVsbCx7YWxsT3duS2V5czohMH0pLHQuY3JlYXRlPWZ1bmN0aW9uKGcpe3JldHVybiBxSShHKEEsZykpfSx0fXZhciBoPXFJKE8pO2guQXhpb3M9QUE7aC5DYW5jZWxlZEVycm9yPUo7aC5DYW5jZWxUb2tlbj1iSTtoLmlzQ2FuY2VsPXY7aC5WRVJTSU9OPXVBO2gudG9Gb3JtRGF0YT1MO2guQXhpb3NFcnJvcj1sO2guQ2FuY2VsPWguQ2FuY2VsZWRFcnJvcjtoLmFsbD1mdW5jdGlvbihJKXtyZXR1cm4gUHJvbWlzZS5hbGwoSSl9O2guc3ByZWFkPWpBO2guaXNBeGlvc0Vycm9yPVdBO2gubWVyZ2VDb25maWc9RztoLkF4aW9zSGVhZGVycz1tO2guZm9ybVRvSlNPTj1BPT5jQShCLmlzSFRNTEZvcm0oQSk/bmV3IEZvcm1EYXRhKEEpOkEpO2guZ2V0QWRhcHRlcj1sQS5nZXRBZGFwdGVyO2guSHR0cFN0YXR1c0NvZGU9TUk7aC5kZWZhdWx0PWg7dmFyIGRBPWg7dmFye0F4aW9zOm9pLEF4aW9zRXJyb3I6QmksQ2FuY2VsZWRFcnJvcjpDaSxpc0NhbmNlbDpzaSxDYW5jZWxUb2tlbjpRaSxWRVJTSU9OOm5pLGFsbDpFaSxDYW5jZWw6YWksaXNBeGlvc0Vycm9yOmNpLHNwcmVhZDpmaSx0b0Zvcm1EYXRhOmxpLEF4aW9zSGVhZGVyczpEaSxIdHRwU3RhdHVzQ29kZTp1aSxmb3JtVG9KU09OOmhpLGdldEFkYXB0ZXI6ZGksbWVyZ2VDb25maWc6eWl9PWRBO3ZhciBJQSxrLFhBLFZBPXtlbnY6e2Vtc2NyaXB0ZW5fbm90aWZ5X21lbW9yeV9ncm93dGg6ZnVuY3Rpb24oQSl7WEE9bmV3IFVpbnQ4QXJyYXkoay5leHBvcnRzLm1lbW9yeS5idWZmZXIpfX19LHlBPWNsYXNze2luaXQoKXtyZXR1cm4gSUF8fCh0eXBlb2YgZmV0Y2g8InUiP0lBPWZldGNoKCJkYXRhOmFwcGxpY2F0aW9uL3dhc207YmFzZTY0LCIrS0kpLnRoZW4oST0+SS5hcnJheUJ1ZmZlcigpKS50aGVuKEk9PldlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKEksVkEpKS50aGVuKHRoaXMuX2luaXQpOklBPVdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKEJ1ZmZlci5mcm9tKEtJLCJiYXNlNjQiKSxWQSkudGhlbih0aGlzLl9pbml0KSxJQSl9X2luaXQoSSl7az1JLmluc3RhbmNlLFZBLmVudi5lbXNjcmlwdGVuX25vdGlmeV9tZW1vcnlfZ3Jvd3RoKDApfWRlY29kZShJLHQ9MCl7aWYoIWspdGhyb3cgbmV3IEVycm9yKCJaU1RERGVjb2RlcjogQXdhaXQgLmluaXQoKSBiZWZvcmUgZGVjb2RpbmcuIik7bGV0IGU9SS5ieXRlTGVuZ3RoLGc9ay5leHBvcnRzLm1hbGxvYyhlKTtYQS5zZXQoSSxnKSx0PXR8fE51bWJlcihrLmV4cG9ydHMuWlNURF9maW5kRGVjb21wcmVzc2VkU2l6ZShnLGUpKTtsZXQgcj1rLmV4cG9ydHMubWFsbG9jKHQpLGk9ay5leHBvcnRzLlpTVERfZGVjb21wcmVzcyhyLHQsZyxlKSxzPVhBLnNsaWNlKHIscitpKTtyZXR1cm4gay5leHBvcnRzLmZyZWUoZyksay5leHBvcnRzLmZyZWUociksc319LEtJPSJBR0Z6YlFFQUFBQUJiZzVnQTM5L2Z3Ri9ZQUYvQVg5Z0FuOS9BR0FCZndCZ0JYOS9mMzkvQVg5Z0EzOS9md0JnQkg5L2YzOEJmMkFBQVg5Z0FuOS9BWDlnQjM5L2YzOS9mMzhCZjJBQ2YzOEJmbUFJZjM5L2YzOS9mMzhCZjJBRmYzOS9mMzhBWUE1L2YzOS9mMzkvZjM5L2YzOS9md0YvQWljQkEyVnVkaDlsYlhOamNtbHdkR1Z1WDI1dmRHbG1lVjl0WlcxdmNubGZaM0p2ZDNSb0FBTURJeUlIQUFBQkFRTUhBd0VBQ1FRQUJRRUlDQUVGQmdRRUJBTUdBQUFLQUFVTERBMEdCQVVCY0FFQkFRVUhBUUdBQW9DQUFnWUlBWDhCUVlDakJBc0hyZ0VMQm0xbGJXOXllUUlBQm0xaGJHeHZZd0FGQkdaeVpXVUFCZ3hhVTFSRVgybHpSWEp5YjNJQUVobGFVMVJFWDJacGJtUkVaV052YlhCeVpYTnpaV1JUYVhwbEFCd1BXbE5VUkY5a1pXTnZiWEJ5WlhOekFDSVpYMTlwYm1ScGNtVmpkRjltZFc1amRHbHZibDkwWVdKc1pRRUFFRjlmWlhKeWJtOWZiRzlqWVhScGIyNEFBUWx6ZEdGamExTmhkbVVBQnd4emRHRmphMUpsYzNSdmNtVUFDQXB6ZEdGamEwRnNiRzlqQUFrS2kvSUJJZ1VBUVlRZkN6TUJBWDhnQWdSQUlBQWhBd05BSUFNZ0FTMEFBRG9BQUNBRFFRRnFJUU1nQVVFQmFpRUJJQUpCQVdzaUFnMEFDd3NnQUFzcEFRRi9JQUlFUUNBQUlRTURRQ0FESUFFNkFBQWdBMEVCYWlFRElBSkJBV3NpQWcwQUN3c2dBQXRzQVFKL1FZQWZLQUlBSWdFZ0FFRUhha0Y0Y1NJQ2FpRUFBa0FnQWtFQUlBQWdBVTBiRFFBZ0FEOEFRUkIwU3dSQUlBQS9BRUVRZEd0Qi8vOERha0VRZGtBQVFYOUdCSDlCQUFWQkFCQUFRUUVMUlEwQkMwR0FIeUFBTmdJQUlBRVBDMEdFSDBFd05nSUFRWDhMdVNjQkMzOGpBRUVRYXlJS0pBQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUJCOUFGTkJFQkJpQjhvQWdBaUJrRVFJQUJCQzJwQmVIRWdBRUVMU1JzaUJVRURkaUlBZGlJQlFRTnhCRUFDUUNBQlFYOXpRUUZ4SUFCcUlnSkJBM1FpQVVHd0gyb2lBQ0FCUWJnZmFpZ0NBQ0lCS0FJSUlnUkdCRUJCaUI4Z0JrRitJQUozY1RZQ0FBd0JDeUFFSUFBMkFnd2dBQ0FFTmdJSUN5QUJRUWhxSVFBZ0FTQUNRUU4wSWdKQkEzSTJBZ1FnQVNBQ2FpSUJJQUVvQWdSQkFYSTJBZ1FNRHdzZ0JVR1FIeWdDQUNJSFRRMEJJQUVFUUFKQVFRSWdBSFFpQWtFQUlBSnJjaUFCSUFCMGNXZ2lBVUVEZENJQVFiQWZhaUlDSUFCQnVCOXFLQUlBSWdBb0FnZ2lCRVlFUUVHSUh5QUdRWDRnQVhkeElnWTJBZ0FNQVFzZ0JDQUNOZ0lNSUFJZ0JEWUNDQXNnQUNBRlFRTnlOZ0lFSUFBZ0JXb2lDQ0FCUVFOMElnRWdCV3NpQkVFQmNqWUNCQ0FBSUFGcUlBUTJBZ0FnQndSQUlBZEJlSEZCc0I5cUlRRkJuQjhvQWdBaEFnSi9JQVpCQVNBSFFRTjJkQ0lEY1VVRVFFR0lIeUFESUFaeU5nSUFJQUVNQVFzZ0FTZ0NDQXNoQXlBQklBSTJBZ2dnQXlBQ05nSU1JQUlnQVRZQ0RDQUNJQU0yQWdnTElBQkJDR29oQUVHY0h5QUlOZ0lBUVpBZklBUTJBZ0FNRHd0QmpCOG9BZ0FpQzBVTkFTQUxhRUVDZEVHNElXb29BZ0FpQWlnQ0JFRjRjU0FGYXlFRElBSWhBUU5BQWtBZ0FTZ0NFQ0lBUlFSQUlBRW9BaFFpQUVVTkFRc2dBQ2dDQkVGNGNTQUZheUlCSUFNZ0FTQURTU0lCR3lFRElBQWdBaUFCR3lFQ0lBQWhBUXdCQ3dzZ0FpZ0NHQ0VKSUFJZ0FpZ0NEQ0lFUndSQVFaZ2ZLQUlBR2lBQ0tBSUlJZ0FnQkRZQ0RDQUVJQUEyQWdnTURnc2dBa0VVYWlJQktBSUFJZ0JGQkVBZ0FpZ0NFQ0lBUlEwRElBSkJFR29oQVFzRFFDQUJJUWdnQUNJRVFSUnFJZ0VvQWdBaUFBMEFJQVJCRUdvaEFTQUVLQUlRSWdBTkFBc2dDRUVBTmdJQURBMExRWDhoQlNBQVFiOS9TdzBBSUFCQkMyb2lBRUY0Y1NFRlFZd2ZLQUlBSWdoRkRRQkJBQ0FGYXlFREFrQUNRQUpBQW45QkFDQUZRWUFDU1EwQUdrRWZJQVZCLy8vL0Iwc05BQm9nQlVFbUlBQkJDSFpuSWdCcmRrRUJjU0FBUVFGMGEwRSthZ3NpQjBFQ2RFRzRJV29vQWdBaUFVVUVRRUVBSVFBTUFRdEJBQ0VBSUFWQkdTQUhRUUYyYTBFQUlBZEJIMGNiZENFQ0EwQUNRQ0FCS0FJRVFYaHhJQVZySWdZZ0EwOE5BQ0FCSVFRZ0JpSUREUUJCQUNFRElBRWhBQXdEQ3lBQUlBRW9BaFFpQmlBR0lBRWdBa0VkZGtFRWNXb29BaEFpQVVZYklBQWdCaHNoQUNBQ1FRRjBJUUlnQVEwQUN3c2dBQ0FFY2tVRVFFRUFJUVJCQWlBSGRDSUFRUUFnQUd0eUlBaHhJZ0JGRFFNZ0FHaEJBblJCdUNGcUtBSUFJUUFMSUFCRkRRRUxBMEFnQUNnQ0JFRjRjU0FGYXlJQ0lBTkpJUUVnQWlBRElBRWJJUU1nQUNBRUlBRWJJUVFnQUNnQ0VDSUJCSDhnQVFVZ0FDZ0NGQXNpQUEwQUN3c2dCRVVOQUNBRFFaQWZLQUlBSUFWclR3MEFJQVFvQWhnaEJ5QUVJQVFvQWd3aUFrY0VRRUdZSHlnQ0FCb2dCQ2dDQ0NJQUlBSTJBZ3dnQWlBQU5nSUlEQXdMSUFSQkZHb2lBU2dDQUNJQVJRUkFJQVFvQWhBaUFFVU5BeUFFUVJCcUlRRUxBMEFnQVNFR0lBQWlBa0VVYWlJQktBSUFJZ0FOQUNBQ1FSQnFJUUVnQWlnQ0VDSUFEUUFMSUFaQkFEWUNBQXdMQ3lBRlFaQWZLQUlBSWdSTkJFQkJuQjhvQWdBaEFBSkFJQVFnQldzaUFVRVFUd1JBSUFBZ0JXb2lBaUFCUVFGeU5nSUVJQUFnQkdvZ0FUWUNBQ0FBSUFWQkEzSTJBZ1FNQVFzZ0FDQUVRUU55TmdJRUlBQWdCR29pQVNBQktBSUVRUUZ5TmdJRVFRQWhBa0VBSVFFTFFaQWZJQUUyQWdCQm5COGdBallDQUNBQVFRaHFJUUFNRFFzZ0JVR1VIeWdDQUNJQ1NRUkFRWlFmSUFJZ0JXc2lBVFlDQUVHZ0gwR2dIeWdDQUNJQUlBVnFJZ0kyQWdBZ0FpQUJRUUZ5TmdJRUlBQWdCVUVEY2pZQ0JDQUFRUWhxSVFBTURRdEJBQ0VBSUFWQkwyb2lBd0ovUWVBaUtBSUFCRUJCNkNJb0FnQU1BUXRCN0NKQ2Z6Y0NBRUhrSWtLQW9JQ0FnSUFFTndJQVFlQWlJQXBCREdwQmNIRkIyS3JWcWdWek5nSUFRZlFpUVFBMkFnQkJ4Q0pCQURZQ0FFR0FJQXNpQVdvaUJrRUFJQUZySWdoeElnRWdCVTBOREVIQUlpZ0NBQ0lFQkVCQnVDSW9BZ0FpQnlBQmFpSUpJQWROSUFRZ0NVbHlEUTBMQWtCQnhDSXRBQUJCQkhGRkJFQUNRQUpBQWtBQ1FFR2dIeWdDQUNJRUJFQkJ5Q0loQUFOQUlBUWdBQ2dDQUNJSFR3UkFJQWNnQUNnQ0JHb2dCRXNOQXdzZ0FDZ0NDQ0lBRFFBTEMwRUFFQVFpQWtGL1JnMERJQUVoQmtIa0lpZ0NBQ0lBUVFGcklnUWdBbkVFUUNBQklBSnJJQUlnQkdwQkFDQUFhM0ZxSVFZTElBVWdCazhOQTBIQUlpZ0NBQ0lBQkVCQnVDSW9BZ0FpQkNBR2FpSUlJQVJOSUFBZ0NFbHlEUVFMSUFZUUJDSUFJQUpIRFFFTUJRc2dCaUFDYXlBSWNTSUdFQVFpQWlBQUtBSUFJQUFvQWdScVJnMEJJQUloQUFzZ0FFRi9SZzBCSUFWQk1Hb2dCazBFUUNBQUlRSU1CQXRCNkNJb0FnQWlBaUFESUFacmFrRUFJQUpyY1NJQ0VBUkJmMFlOQVNBQ0lBWnFJUVlnQUNFQ0RBTUxJQUpCZjBjTkFndEJ4Q0pCeENJb0FnQkJCSEkyQWdBTElBRVFCQ0lDUVg5R1FRQVFCQ0lBUVg5R2NpQUFJQUpOY2cwRklBQWdBbXNpQmlBRlFTaHFUUTBGQzBHNElrRzRJaWdDQUNBR2FpSUFOZ0lBUWJ3aUtBSUFJQUJKQkVCQnZDSWdBRFlDQUFzQ1FFR2dIeWdDQUNJREJFQkJ5Q0loQUFOQUlBSWdBQ2dDQUNJQklBQW9BZ1FpQkdwR0RRSWdBQ2dDQ0NJQURRQUxEQVFMUVpnZktBSUFJZ0JCQUNBQUlBSk5HMFVFUUVHWUh5QUNOZ0lBQzBFQUlRQkJ6Q0lnQmpZQ0FFSElJaUFDTmdJQVFhZ2ZRWDgyQWdCQnJCOUI0Q0lvQWdBMkFnQkIxQ0pCQURZQ0FBTkFJQUJCQTNRaUFVRzRIMm9nQVVHd0gyb2lCRFlDQUNBQlFid2ZhaUFFTmdJQUlBQkJBV29pQUVFZ1J3MEFDMEdVSHlBR1FTaHJJZ0JCZUNBQ2EwRUhjU0lCYXlJRU5nSUFRYUFmSUFFZ0Ftb2lBVFlDQUNBQklBUkJBWEkyQWdRZ0FDQUNha0VvTmdJRVFhUWZRZkFpS0FJQU5nSUFEQVFMSUFJZ0EwMGdBU0FEUzNJTkFpQUFLQUlNUVFoeERRSWdBQ0FFSUFacU5nSUVRYUFmSUFOQmVDQURhMEVIY1NJQWFpSUJOZ0lBUVpRZlFaUWZLQUlBSUFacUlnSWdBR3NpQURZQ0FDQUJJQUJCQVhJMkFnUWdBaUFEYWtFb05nSUVRYVFmUWZBaUtBSUFOZ0lBREFNTFFRQWhCQXdLQzBFQUlRSU1DQXRCbUI4b0FnQWdBa3NFUUVHWUh5QUNOZ0lBQ3lBQ0lBWnFJUUZCeUNJaEFBSkFBa0FDUUFOQUlBRWdBQ2dDQUVjRVFDQUFLQUlJSWdBTkFRd0NDd3NnQUMwQURFRUljVVVOQVF0QnlDSWhBQU5BSUFNZ0FDZ0NBQ0lCVHdSQUlBRWdBQ2dDQkdvaUJDQURTdzBEQ3lBQUtBSUlJUUFNQUFzQUN5QUFJQUkyQWdBZ0FDQUFLQUlFSUFacU5nSUVJQUpCZUNBQ2EwRUhjV29pQnlBRlFRTnlOZ0lFSUFGQmVDQUJhMEVIY1dvaUJpQUZJQWRxSWdWcklRQWdBeUFHUmdSQVFhQWZJQVUyQWdCQmxCOUJsQjhvQWdBZ0FHb2lBRFlDQUNBRklBQkJBWEkyQWdRTUNBdEJuQjhvQWdBZ0JrWUVRRUdjSHlBRk5nSUFRWkFmUVpBZktBSUFJQUJxSWdBMkFnQWdCU0FBUVFGeU5nSUVJQUFnQldvZ0FEWUNBQXdJQ3lBR0tBSUVJZ05CQTNGQkFVY05CaUFEUVhoeElRa2dBMEgvQVUwRVFDQUdLQUlNSWdFZ0JpZ0NDQ0lDUmdSQVFZZ2ZRWWdmS0FJQVFYNGdBMEVEZG5keE5nSUFEQWNMSUFJZ0FUWUNEQ0FCSUFJMkFnZ01CZ3NnQmlnQ0dDRUlJQVlnQmlnQ0RDSUNSd1JBSUFZb0FnZ2lBU0FDTmdJTUlBSWdBVFlDQ0F3RkN5QUdRUlJxSWdFb0FnQWlBMFVFUUNBR0tBSVFJZ05GRFFRZ0JrRVFhaUVCQ3dOQUlBRWhCQ0FESWdKQkZHb2lBU2dDQUNJRERRQWdBa0VRYWlFQklBSW9BaEFpQXcwQUN5QUVRUUEyQWdBTUJBdEJsQjhnQmtFb2F5SUFRWGdnQW10QkIzRWlBV3NpQ0RZQ0FFR2dIeUFCSUFKcUlnRTJBZ0FnQVNBSVFRRnlOZ0lFSUFBZ0FtcEJLRFlDQkVHa0gwSHdJaWdDQURZQ0FDQURJQVJCSnlBRWEwRUhjV3BCTDJzaUFDQUFJQU5CRUdwSkd5SUJRUnMyQWdRZ0FVSFFJaWtDQURjQ0VDQUJRY2dpS1FJQU53SUlRZEFpSUFGQkNHbzJBZ0JCekNJZ0JqWUNBRUhJSWlBQ05nSUFRZFFpUVFBMkFnQWdBVUVZYWlFQUEwQWdBRUVITmdJRUlBQkJDR29nQUVFRWFpRUFJQVJKRFFBTElBRWdBMFlOQUNBQklBRW9BZ1JCZm5FMkFnUWdBeUFCSUFOcklnSkJBWEkyQWdRZ0FTQUNOZ0lBSUFKQi93Rk5CRUFnQWtGNGNVR3dIMm9oQUFKL1FZZ2ZLQUlBSWdGQkFTQUNRUU4yZENJQ2NVVUVRRUdJSHlBQklBSnlOZ0lBSUFBTUFRc2dBQ2dDQ0FzaEFTQUFJQU0yQWdnZ0FTQUROZ0lNSUFNZ0FEWUNEQ0FESUFFMkFnZ01BUXRCSHlFQUlBSkIvLy8vQjAwRVFDQUNRU1lnQWtFSWRtY2lBR3QyUVFGeElBQkJBWFJyUVQ1cUlRQUxJQU1nQURZQ0hDQURRZ0EzQWhBZ0FFRUNkRUc0SVdvaEFRSkFBa0JCakI4b0FnQWlCRUVCSUFCMElnWnhSUVJBUVl3ZklBUWdCbkkyQWdBZ0FTQUROZ0lBREFFTElBSkJHU0FBUVFGMmEwRUFJQUJCSDBjYmRDRUFJQUVvQWdBaEJBTkFJQVFpQVNnQ0JFRjRjU0FDUmcwQ0lBQkJIWFloQkNBQVFRRjBJUUFnQVNBRVFRUnhhaUlHS0FJUUlnUU5BQXNnQmlBRE5nSVFDeUFESUFFMkFoZ2dBeUFETmdJTUlBTWdBellDQ0F3QkN5QUJLQUlJSWdBZ0F6WUNEQ0FCSUFNMkFnZ2dBMEVBTmdJWUlBTWdBVFlDRENBRElBQTJBZ2dMUVpRZktBSUFJZ0FnQlUwTkFFR1VIeUFBSUFWcklnRTJBZ0JCb0I5Qm9COG9BZ0FpQUNBRmFpSUNOZ0lBSUFJZ0FVRUJjallDQkNBQUlBVkJBM0kyQWdRZ0FFRUlhaUVBREFnTFFZUWZRVEEyQWdCQkFDRUFEQWNMUVFBaEFnc2dDRVVOQUFKQUlBWW9BaHdpQVVFQ2RFRzRJV29pQkNnQ0FDQUdSZ1JBSUFRZ0FqWUNBQ0FDRFFGQmpCOUJqQjhvQWdCQmZpQUJkM0UyQWdBTUFnc2dDRUVRUVJRZ0NDZ0NFQ0FHUmh0cUlBSTJBZ0FnQWtVTkFRc2dBaUFJTmdJWUlBWW9BaEFpQVFSQUlBSWdBVFlDRUNBQklBSTJBaGdMSUFZb0FoUWlBVVVOQUNBQ0lBRTJBaFFnQVNBQ05nSVlDeUFBSUFscUlRQWdCaUFKYWlJR0tBSUVJUU1MSUFZZ0EwRitjVFlDQkNBRklBQkJBWEkyQWdRZ0FDQUZhaUFBTmdJQUlBQkIvd0ZOQkVBZ0FFRjRjVUd3SDJvaEFRSi9RWWdmS0FJQUlnSkJBU0FBUVFOMmRDSUFjVVVFUUVHSUh5QUFJQUp5TmdJQUlBRU1BUXNnQVNnQ0NBc2hBQ0FCSUFVMkFnZ2dBQ0FGTmdJTUlBVWdBVFlDRENBRklBQTJBZ2dNQVF0Qkh5RURJQUJCLy8vL0IwMEVRQ0FBUVNZZ0FFRUlkbWNpQVd0MlFRRnhJQUZCQVhSclFUNXFJUU1MSUFVZ0F6WUNIQ0FGUWdBM0FoQWdBMEVDZEVHNElXb2hBUUpBQWtCQmpCOG9BZ0FpQWtFQklBTjBJZ1J4UlFSQVFZd2ZJQUlnQkhJMkFnQWdBU0FGTmdJQURBRUxJQUJCR1NBRFFRRjJhMEVBSUFOQkgwY2JkQ0VESUFFb0FnQWhBZ05BSUFJaUFTZ0NCRUY0Y1NBQVJnMENJQU5CSFhZaEFpQURRUUYwSVFNZ0FTQUNRUVJ4YWlJRUtBSVFJZ0lOQUFzZ0JDQUZOZ0lRQ3lBRklBRTJBaGdnQlNBRk5nSU1JQVVnQlRZQ0NBd0JDeUFCS0FJSUlnQWdCVFlDRENBQklBVTJBZ2dnQlVFQU5nSVlJQVVnQVRZQ0RDQUZJQUEyQWdnTElBZEJDR29oQUF3Q0N3SkFJQWRGRFFBQ1FDQUVLQUljSWdCQkFuUkJ1Q0ZxSWdFb0FnQWdCRVlFUUNBQklBSTJBZ0FnQWcwQlFZd2ZJQWhCZmlBQWQzRWlDRFlDQUF3Q0N5QUhRUkJCRkNBSEtBSVFJQVJHRzJvZ0FqWUNBQ0FDUlEwQkN5QUNJQWMyQWhnZ0JDZ0NFQ0lBQkVBZ0FpQUFOZ0lRSUFBZ0FqWUNHQXNnQkNnQ0ZDSUFSUTBBSUFJZ0FEWUNGQ0FBSUFJMkFoZ0xBa0FnQTBFUFRRUkFJQVFnQXlBRmFpSUFRUU55TmdJRUlBQWdCR29pQUNBQUtBSUVRUUZ5TmdJRURBRUxJQVFnQlVFRGNqWUNCQ0FFSUFWcUlnSWdBMEVCY2pZQ0JDQUNJQU5xSUFNMkFnQWdBMEgvQVUwRVFDQURRWGh4UWJBZmFpRUFBbjlCaUI4b0FnQWlBVUVCSUFOQkEzWjBJZ054UlFSQVFZZ2ZJQUVnQTNJMkFnQWdBQXdCQ3lBQUtBSUlDeUVCSUFBZ0FqWUNDQ0FCSUFJMkFnd2dBaUFBTmdJTUlBSWdBVFlDQ0F3QkMwRWZJUUFnQTBILy8vOEhUUVJBSUFOQkppQURRUWgyWnlJQWEzWkJBWEVnQUVFQmRHdEJQbW9oQUFzZ0FpQUFOZ0ljSUFKQ0FEY0NFQ0FBUVFKMFFiZ2hhaUVCQWtBQ1FDQUlRUUVnQUhRaUJuRkZCRUJCakI4Z0JpQUljallDQUNBQklBSTJBZ0FNQVFzZ0EwRVpJQUJCQVhaclFRQWdBRUVmUnh0MElRQWdBU2dDQUNFRkEwQWdCU0lCS0FJRVFYaHhJQU5HRFFJZ0FFRWRkaUVHSUFCQkFYUWhBQ0FCSUFaQkJIRnFJZ1lvQWhBaUJRMEFDeUFHSUFJMkFoQUxJQUlnQVRZQ0dDQUNJQUkyQWd3Z0FpQUNOZ0lJREFFTElBRW9BZ2dpQUNBQ05nSU1JQUVnQWpZQ0NDQUNRUUEyQWhnZ0FpQUJOZ0lNSUFJZ0FEWUNDQXNnQkVFSWFpRUFEQUVMQWtBZ0NVVU5BQUpBSUFJb0Fod2lBRUVDZEVHNElXb2lBU2dDQUNBQ1JnUkFJQUVnQkRZQ0FDQUVEUUZCakI4Z0MwRitJQUIzY1RZQ0FBd0NDeUFKUVJCQkZDQUpLQUlRSUFKR0cyb2dCRFlDQUNBRVJRMEJDeUFFSUFrMkFoZ2dBaWdDRUNJQUJFQWdCQ0FBTmdJUUlBQWdCRFlDR0FzZ0FpZ0NGQ0lBUlEwQUlBUWdBRFlDRkNBQUlBUTJBaGdMQWtBZ0EwRVBUUVJBSUFJZ0F5QUZhaUlBUVFOeU5nSUVJQUFnQW1vaUFDQUFLQUlFUVFGeU5nSUVEQUVMSUFJZ0JVRURjallDQkNBQ0lBVnFJZ1FnQTBFQmNqWUNCQ0FESUFScUlBTTJBZ0FnQndSQUlBZEJlSEZCc0I5cUlRQkJuQjhvQWdBaEFRSi9RUUVnQjBFRGRuUWlCU0FHY1VVRVFFR0lIeUFGSUFaeU5nSUFJQUFNQVFzZ0FDZ0NDQXNoQmlBQUlBRTJBZ2dnQmlBQk5nSU1JQUVnQURZQ0RDQUJJQVkyQWdnTFFad2ZJQVEyQWdCQmtCOGdBellDQUFzZ0FrRUlhaUVBQ3lBS1FSQnFKQUFnQUF2U0N3RUhmd0pBSUFCRkRRQWdBRUVJYXlJQ0lBQkJCR3NvQWdBaUFVRjRjU0lBYWlFRkFrQWdBVUVCY1EwQUlBRkJBM0ZGRFFFZ0FpQUNLQUlBSWdGcklnSkJtQjhvQWdCSkRRRWdBQ0FCYWlFQUFrQUNRRUdjSHlnQ0FDQUNSd1JBSUFGQi93Rk5CRUFnQVVFRGRpRUVJQUlvQWd3aUFTQUNLQUlJSWdOR0JFQkJpQjlCaUI4b0FnQkJmaUFFZDNFMkFnQU1CUXNnQXlBQk5nSU1JQUVnQXpZQ0NBd0VDeUFDS0FJWUlRWWdBaUFDS0FJTUlnRkhCRUFnQWlnQ0NDSURJQUUyQWd3Z0FTQUROZ0lJREFNTElBSkJGR29pQkNnQ0FDSURSUVJBSUFJb0FoQWlBMFVOQWlBQ1FSQnFJUVFMQTBBZ0JDRUhJQU1pQVVFVWFpSUVLQUlBSWdNTkFDQUJRUkJxSVFRZ0FTZ0NFQ0lERFFBTElBZEJBRFlDQUF3Q0N5QUZLQUlFSWdGQkEzRkJBMGNOQWtHUUh5QUFOZ0lBSUFVZ0FVRitjVFlDQkNBQ0lBQkJBWEkyQWdRZ0JTQUFOZ0lBRHd0QkFDRUJDeUFHUlEwQUFrQWdBaWdDSENJRFFRSjBRYmdoYWlJRUtBSUFJQUpHQkVBZ0JDQUJOZ0lBSUFFTkFVR01IMEdNSHlnQ0FFRitJQU4zY1RZQ0FBd0NDeUFHUVJCQkZDQUdLQUlRSUFKR0cyb2dBVFlDQUNBQlJRMEJDeUFCSUFZMkFoZ2dBaWdDRUNJREJFQWdBU0FETmdJUUlBTWdBVFlDR0FzZ0FpZ0NGQ0lEUlEwQUlBRWdBellDRkNBRElBRTJBaGdMSUFJZ0JVOE5BQ0FGS0FJRUlnRkJBWEZGRFFBQ1FBSkFBa0FDUUNBQlFRSnhSUVJBUWFBZktBSUFJQVZHQkVCQm9COGdBallDQUVHVUgwR1VIeWdDQUNBQWFpSUFOZ0lBSUFJZ0FFRUJjallDQkNBQ1Fad2ZLQUlBUncwR1FaQWZRUUEyQWdCQm5COUJBRFlDQUE4TFFad2ZLQUlBSUFWR0JFQkJuQjhnQWpZQ0FFR1FIMEdRSHlnQ0FDQUFhaUlBTmdJQUlBSWdBRUVCY2pZQ0JDQUFJQUpxSUFBMkFnQVBDeUFCUVhoeElBQnFJUUFnQVVIL0FVMEVRQ0FCUVFOMklRUWdCU2dDRENJQklBVW9BZ2dpQTBZRVFFR0lIMEdJSHlnQ0FFRitJQVIzY1RZQ0FBd0ZDeUFESUFFMkFnd2dBU0FETmdJSURBUUxJQVVvQWhnaEJpQUZJQVVvQWd3aUFVY0VRRUdZSHlnQ0FCb2dCU2dDQ0NJRElBRTJBZ3dnQVNBRE5nSUlEQU1MSUFWQkZHb2lCQ2dDQUNJRFJRUkFJQVVvQWhBaUEwVU5BaUFGUVJCcUlRUUxBMEFnQkNFSElBTWlBVUVVYWlJRUtBSUFJZ01OQUNBQlFSQnFJUVFnQVNnQ0VDSUREUUFMSUFkQkFEWUNBQXdDQ3lBRklBRkJmbkUyQWdRZ0FpQUFRUUZ5TmdJRUlBQWdBbW9nQURZQ0FBd0RDMEVBSVFFTElBWkZEUUFDUUNBRktBSWNJZ05CQW5SQnVDRnFJZ1FvQWdBZ0JVWUVRQ0FFSUFFMkFnQWdBUTBCUVl3ZlFZd2ZLQUlBUVg0Z0EzZHhOZ0lBREFJTElBWkJFRUVVSUFZb0FoQWdCVVliYWlBQk5nSUFJQUZGRFFFTElBRWdCallDR0NBRktBSVFJZ01FUUNBQklBTTJBaEFnQXlBQk5nSVlDeUFGS0FJVUlnTkZEUUFnQVNBRE5nSVVJQU1nQVRZQ0dBc2dBaUFBUVFGeU5nSUVJQUFnQW1vZ0FEWUNBQ0FDUVp3ZktBSUFSdzBBUVpBZklBQTJBZ0FQQ3lBQVFmOEJUUVJBSUFCQmVIRkJzQjlxSVFFQ2YwR0lIeWdDQUNJRFFRRWdBRUVEZG5RaUFIRkZCRUJCaUI4Z0FDQURjallDQUNBQkRBRUxJQUVvQWdnTElRQWdBU0FDTmdJSUlBQWdBallDRENBQ0lBRTJBZ3dnQWlBQU5nSUlEd3RCSHlFRElBQkIvLy8vQjAwRVFDQUFRU1lnQUVFSWRtY2lBV3QyUVFGeElBRkJBWFJyUVQ1cUlRTUxJQUlnQXpZQ0hDQUNRZ0EzQWhBZ0EwRUNkRUc0SVdvaEFRSkFBa0FDUUVHTUh5Z0NBQ0lFUVFFZ0EzUWlCM0ZGQkVCQmpCOGdCQ0FIY2pZQ0FDQUJJQUkyQWdBZ0FpQUJOZ0lZREFFTElBQkJHU0FEUVFGMmEwRUFJQU5CSDBjYmRDRURJQUVvQWdBaEFRTkFJQUVpQkNnQ0JFRjRjU0FBUmcwQ0lBTkJIWFloQVNBRFFRRjBJUU1nQkNBQlFRUnhhaUlIUVJCcUtBSUFJZ0VOQUFzZ0J5QUNOZ0lRSUFJZ0JEWUNHQXNnQWlBQ05nSU1JQUlnQWpZQ0NBd0JDeUFFS0FJSUlnQWdBallDRENBRUlBSTJBZ2dnQWtFQU5nSVlJQUlnQkRZQ0RDQUNJQUEyQWdnTFFhZ2ZRYWdmS0FJQVFRRnJJZ0JCZnlBQUd6WUNBQXNMQkFBakFBc0dBQ0FBSkFBTEVBQWpBQ0FBYTBGd2NTSUFKQUFnQUF0S0FRRi9JQUFnQVVrRVFDQUFJQUVnQWhBQ0R3c2dBZ1JBSUFBZ0Ftb2hBeUFCSUFKcUlRRURRQ0FEUVFGcklnTWdBVUVCYXlJQkxRQUFPZ0FBSUFKQkFXc2lBZzBBQ3dzZ0FBdjlEZ0lSZndGK0l3QkJNR3NpQnlRQVFiaC9JUWdDUUNBRlJRMEFJQVFzQUFBaUNVSC9BWEVoQ3dKQUlBbEJBRWdFUUNBTFFmNEFhMEVCZGlJR0lBVlBEUUpCYkNFSUlBdEIvd0JySWd0Qi93RkxEUUlnQkVFQmFpRUlRUUFoQlFOQUlBVWdDMDhFUUNBTElRZ2dCaUVMREFNRklBQWdCV29nQ0NBRlFRRjJhaUlFTFFBQVFRUjJPZ0FBSUFBZ0JVRUJjbW9nQkMwQUFFRVBjVG9BQUNBRlFRSnFJUVVNQVFzQUN3QUxJQVVnQzAwTkFTQUhRZjhCTmdJRUlBWWdCMEVFYWlBSFFRaHFJQVJCQVdvaURpQUxFQXdpQkVHSWYwc0VRQ0FFSVFnTUFndEJWQ0VJSUFjb0FnZ2lFRUVHU3cwQklBY29BZ1FpRVVFQmRDSUpRUUpxclVJQklCQ3RoaUlZUVFFZ0VIUWlEVUVCYWlJRnJVSUNobng4UWd0OFF2ei8vLy8vLy8vLy93Q0RRdVFDVmcwQlFWSWhDQ0FSUWY4QlN3MEJJQTFCZjNOQkFuUkI1QUpxclNBUlFRRnFJaFZCQVhTdElCaDhRZ2g4VkEwQklBc2dCR3NoRmlBRUlBNXFJUmNnQmtHQUJHb2lFaUFGUVFKMGFpSVJJQWxxUVFKcUlRNGdCa0dFQkdvaEUwR0FnQUlnRUhSQkVIWWhDVUVBSVFWQkFTRVBJQTFCQVdzaUZDRUtBMEFnQlNBVlJrVUVRQUpBSUFZZ0JVRUJkQ0lJYWk4QkFDSUVRZi8vQTBZRVFDQVRJQXBCQW5ScUlBVTZBQUlnQ2tFQmF5RUtRUUVoQkF3QkN5QVBRUUFnQ1NBRXdVb2JJUThMSUFnZ0VXb2dCRHNCQUNBRlFRRnFJUVVNQVFzTElBWWdEenNCZ2dRZ0JpQVFPd0dBQkFKQUlBb2dGRVlFUUNBTlFRTjJJUWhDQUNFWVFRQWhEd05BSUF3Z0ZVWUVRQ0FJSUExQkFYWnFRUU5xSWdsQkFYUWhDRUVBSVFSQkFDRUtBMEJCQUNFRklBb2dEVThOQkFOQUlBVkJBa1pGQkVBZ0V5QUZJQWxzSUFScUlCUnhRUUowYWlBT0lBVWdDbXBxTFFBQU9nQUNJQVZCQVdvaEJRd0JDd3NnQ2tFQ2FpRUtJQVFnQ0dvZ0ZIRWhCQXdBQ3dBRklBWWdERUVCZEdvdUFRQWhDU0FPSUE5cUlnUWdHRGNBQUVFSUlRVURRQ0FGSUFsT1JRUkFJQVFnQldvZ0dEY0FBQ0FGUVFocUlRVU1BUXNMSUJoQ2dZS0VpSkNnd0lBQmZDRVlJQXhCQVdvaERDQUpJQTlxSVE4TUFRc0FDd0FMSUExQkEzWWdEVUVCZG1wQkEyb2hDRUVBSVFVRFFDQU1JQlZHUlFSQVFRQWhDU0FHSUF4QkFYUnFMZ0VBSWdSQkFDQUVRUUJLR3lFRUEwQWdCQ0FKUmtVRVFDQVRJQVZCQW5ScUlBdzZBQUlEUUNBRklBaHFJQlJ4SWdVZ0Nrc05BQXNnQ1VFQmFpRUpEQUVMQ3lBTVFRRnFJUXdNQVFzTFFYOGhDQ0FGRFFJTElCQkJBV29oQ0VFQUlRVURRQ0FGSUExR1JRUkFJQkVnRXlBRlFRSjBhaUlPTFFBQ1FRRjBhaUlFSUFRdkFRQWlDVUVCYWpzQkFDQU9JQWdnQ1dkQllITnFJZ1E2QUFNZ0RpQUpJQVIwSUExck93RUFJQVZCQVdvaEJRd0JDd3NDUUFKQUlBWXZBWUlFQkVBZ0IwRWNhaUlFSUJjZ0ZoQU5JZ2hCaUg5TERRSWdCMEVVYWlBRUlCSVFEaUFIUVF4cUlBUWdFaEFPUVFBaEJRTkFJQWRCSEdvaUJCQVBJQVZCK3dGTGNnMENJQUFnQldvaUJpQUhRUlJxSUFRUUVEb0FBQ0FHSUFkQkRHb2dCQkFRT2dBQklBVkJBbkloQkNBSFFSeHFFQThFUUNBRUlRVU1Bd1VnQUNBRWFpQUhRUlJxSUFkQkhHb2lCQkFRT2dBQUlBWWdCMEVNYWlBRUVCQTZBQU1nQlVFRWFpRUZEQUVMQUFzQUN5QUhRUnhxSWdRZ0Z5QVdFQTBpQ0VHSWYwc05BU0FIUVJScUlBUWdFaEFPSUFkQkRHb2dCQ0FTRUE1QkFDRUZBMEFnQjBFY2FpSUVFQThnQlVIN0FVdHlSUVJBSUFBZ0JXb2lCaUFIUVJScUlBUVFFVG9BQUNBR0lBZEJER29nQkJBUk9nQUJJQVZCQW5JaEJDQUhRUnhxRUE4RVFDQUVJUVVGSUFBZ0JHb2dCMEVVYWlBSFFSeHFJZ1FRRVRvQUFDQUdJQWRCREdvZ0JCQVJPZ0FESUFWQkJHb2hCUXdDQ3dzTEFuOERRRUc2ZnlFSUlBVkIvUUZMRFFNZ0FDQUZhaUlHSUFkQkZHb2dCMEVjYWlJSkVCRTZBQUFnQmtFQmFpRUVJQWtRRDBFRFJnUkFJQWRCREdvaENFRUNEQUlMSUFWQi9BRkxEUU1nQmlBSFFReHFJQWRCSEdvaUJCQVJPZ0FCSUFWQkFtb2hCU0FFRUE5QkEwY05BQXNnQUNBRmFpRUVJQWRCRkdvaENFRURDeUFFSUFnZ0IwRWNhaEFST2dBQUlBWnFJQUJySVFnTUFRc0Nmd05BUWJwL0lRZ2dCVUg5QVVzTkFpQUFJQVZxSWdZZ0IwRVVhaUFIUVJ4cUlna1FFRG9BQUNBR1FRRnFJUVFnQ1JBUFFRTkdCRUFnQjBFTWFpRUlRUUlNQWdzZ0JVSDhBVXNOQWlBR0lBZEJER29nQjBFY2FpSUVFQkE2QUFFZ0JVRUNhaUVGSUFRUUQwRURSdzBBQ3lBQUlBVnFJUVFnQjBFVWFpRUlRUU1MSUFRZ0NDQUhRUnhxRUJBNkFBQWdCbW9nQUdzaENBc2dDRUdJZjBzTkFRc2dDQ0VFUVFBaEJTQUJRUUJCTkJBRElRbEJBQ0VLQTBBZ0JDQUZSd1JBSUFBZ0JXb2lCaTBBQUNJQlFRdExCRUJCYkNFSURBTUZJQWtnQVVFQ2RHb2lBU0FCS0FJQVFRRnFOZ0lBSUFWQkFXb2hCVUVCSUFZdEFBQjBRUUYxSUFwcUlRb01BZ3NBQ3d0QmJDRUlJQXBGRFFBZ0NtY2lCVUVmY3lJQlFRdExEUUFnQTBFZ0lBVnJOZ0lBUVFGQkFpQUJkQ0FLYXlJRFowRWZjeUlCZENBRFJ3MEFJQUFnQkdvZ0FVRUJhaUlBT2dBQUlBa2dBRUVDZEdvaUFDQUFLQUlBUVFGcU5nSUFJQWtvQWdRaUFFRUNTU0FBUVFGeGNnMEFJQUlnQkVFQmFqWUNBQ0FMUVFGcUlRZ0xJQWRCTUdva0FDQUlDNkFGQVF4L0l3QkJFR3NpRENRQUFuOGdCRUVIVFFSQUlBeENBRGNEQ0NBTVFRaHFJZ1VnQXlBRUVBSWFRV3dnQUNBQklBSWdCVUVJRUF3aUFDQUFJQVJMR3lBQUlBQkJpWDlKR3d3QkN5QUFRUUFnQVNnQ0FFRUJhaUlOUVFGMEVBTWhEMEZVSUFNb0FBQWlCa0VQY1NJQVFRcExEUUFhSUFJZ0FFRUZhallDQUNBRElBUnFJZ0pCQkdzaEJ5QUNRUWRySVFzZ0FFRUdhaUVPUVFRaEFpQUdRUVIySVFWQklDQUFkQ0lJUVFGeUlRbEJBQ0VBUVFFaEJpQURJUVFEUUFKQUlBWkJBWEZGQkVBRFFDQUZRWDl6UVlDQWdJQjRjbWdpQmtFWVNVVUVRQ0FBUVNScUlRQWdCQ0FMVFFSL0lBUkJBMm9GSUFRZ0MydEJBM1FnQW1wQkgzRWhBaUFIQ3lJRUtBQUFJQUoySVFVTUFRc0xJQUlnQmtFZWNTSUtha0VDYWlFQ0lBWkJBWFpCQTJ3Z0FHb2dCU0FLZGtFRGNXb2lBQ0FOVHcwQkFuOGdCQ0FMU3lBQ1FRTjJJQVJxSWdVZ0IwdHhSUVJBSUFKQkIzRWhBaUFGREFFTElBUWdCMnRCQTNRZ0FtcEJIM0VoQWlBSEN5SUVLQUFBSUFKMklRVUxJQVVnQ0VFQmEzRWlCaUFJUVFGMFFRRnJJZ29nQ1dzaUVFa0VmeUFPUVFGckJTQUZJQXB4SWdVZ0VFRUFJQVVnQ0U0YmF5RUdJQTRMSVFVZ0R5QUFRUUYwYWlBR1FRRnJJZ283QVFBZ0FFRUJhaUVBSUFJZ0JXb2hBaUFJUVFFZ0Jtc2dDaUFHUVFCS0d5QUphaUlKU2dSQUlBbEJBa2dOQVVFZ0lBbG5JZ1ZySVE1QkFTQUZRUjl6ZENFSUN5QUFJQTFQRFFBZ0NrRUFSeUVHQW44Z0JDQUxTeUFDUVFOMUlBUnFJZ1VnQjB0eFJRUkFJQUpCQjNFaEFpQUZEQUVMSUFJZ0JDQUhhMEVEZEdwQkgzRWhBaUFIQ3lJRUtBQUFJQUoySVFVTUFRc0xRV3dnQ1VFQlJ3MEFHa0ZRSUFBZ0RVc05BQnBCYkNBQ1FTQktEUUFhSUFFZ0FFRUJhellDQUNBRUlBSkJCMnBCQTNWcUlBTnJDeUFNUVJCcUpBQUw4Z0VCQVg4Z0FrVUVRQ0FBUWdBM0FnQWdBRUVBTmdJUUlBQkNBRGNDQ0VHNGZ3OExJQUFnQVRZQ0RDQUFJQUZCQkdvMkFoQWdBa0VFVHdSQUlBQWdBU0FDYWlJQlFRUnJJZ00yQWdnZ0FDQURLQUFBTmdJQUlBRkJBV3N0QUFBaUFRUkFJQUFnQVdkQkYyczJBZ1FnQWc4TElBQkJBRFlDQkVGL0R3c2dBQ0FCTmdJSUlBQWdBUzBBQUNJRE5nSUFBa0FDUUFKQUlBSkJBbXNPQWdFQUFnc2dBQ0FCTFFBQ1FSQjBJQU55SWdNMkFnQUxJQUFnQVMwQUFVRUlkQ0FEYWpZQ0FBc2dBU0FDYWtFQmF5MEFBQ0lCUlFSQUlBQkJBRFlDQkVGc0R3c2dBQ0FCWnlBQ1FRTjBhMEVKYWpZQ0JDQUNDMFFCQW44Z0FTQUNMd0VBSWdNZ0FTZ0NCR29pQkRZQ0JDQUFJQU5CQW5SQm9CMXFLQUlBSUFFb0FnQkJBQ0FFYTNaeE5nSUFJQUVRRHhvZ0FDQUNRUVJxTmdJRUM1OEJBUVIvUVFNaEFTQUFLQUlFSWdKQklFMEVRQ0FBS0FJSUlnRWdBQ2dDRUU4RVFDQUFJQUpCQjNFMkFnUWdBQ0FCSUFKQkEzWnJJZ0kyQWdnZ0FDQUNLQUFBTmdJQVFRQVBDeUFBS0FJTUlnTWdBVVlFUUVFQlFRSWdBa0VnU1JzUEN5QUFJQUVnQVNBRGF5QUNRUU4ySWdRZ0FTQUVheUFEU1NJQkd5SURheUlFTmdJSUlBQWdBaUFEUVFOMGF6WUNCQ0FBSUFRb0FBQTJBZ0FMSUFFTFNBRUVmeUFBS0FJRUlBQW9BZ0JCQW5ScUlnSXRBQUlnQWk4QkFDRUVJQUVnQVNnQ0JDSUZJQUl0QUFNaUFtbzJBZ1FnQUNBRUlBRW9BZ0FnQlhSQkFDQUNhM1pxTmdJQUMxSUJCSDhnQUNnQ0JDQUFLQUlBUVFKMGFpSUNMUUFDSUFJdkFRQWhCQ0FCSUFJdEFBTWlBaUFCS0FJRWFpSUZOZ0lFSUFBZ0JDQUNRUUowUWFBZGFpZ0NBQ0FCS0FJQVFRQWdCV3QyY1dvMkFnQUxDQUFnQUVHSWYwc0xHZ0FnQUFSQUlBRUVRQ0FDSUFBZ0FSRUNBQThMSUFBUUJnc0xwZ2dDRFg4QmZpTUFRUkJySWdra0FDQUpRUUEyQWd3Z0NVRUFOZ0lJQW44Q1FDQURRZWdKYWlBRElBbEJDR29nQ1VFTWFpQUJJQUlnQTBHQUFXb1FDeUlQUVloL1N3MEFRVlFnQ1NnQ0RDSUVJQUFvQWdBaUFVSC9BWEZCQVdwTERRRWFJQUJCQkdvaEN5QUFJQUZCLzRHQWVIRWdCRUVRZEVHQWdQd0hjWEkyQWdCQmZ5QUVJQVJCQUVnYlFRRnFJUUJCQUNFQklBa29BZ2doQlVFQUlRSURRQ0FBSUFKR0JFQWdCVUVEYXlFQlFRQWhBQU5BQWtCQkFDRUNJQUFnQVU0RVFBTkFJQUFnQlU0TkFpQURJQUFnQTJwQjZBbHFMUUFBUVFKMGFrRkFheUlCSUFFb0FnQWlBVUVCYWpZQ0FDQUJJQU5xSUFBNkFPZ0hJQUJCQVdvaEFBd0FDd0FGQTBBZ0FrRUVSa1VFUUNBRElBTWdBQ0FDYWlJSGFrSG9DV290QUFCQkFuUnFRVUJySWdnZ0NDZ0NBQ0lJUVFGcU5nSUFJQU1nQ0dvZ0J6b0E2QWNnQWtFQmFpRUNEQUVMQ3lBQVFRUnFJUUFNQWdzQUN3c2dCRUVCYWlFT0lBTW9BZ0FoQjBFQUlRQkJBU0VJQTBBZ0NDQU9SZzBESUE0Z0NHc2hCQ0FESUFoQkFuUnFLQUlBSVFVQ1FBSkFBa0FDUUFKQUFrQkJBU0FJZEVFQmRTSU5RUUZyRGdnQUFRUUNCQVFFQXdRTFFRQWhBaUFGUVFBZ0JVRUFTaHNoQmlBQUlRRURRQ0FDSUFaR0RRVWdBeUFDSUFkcWFpMEE2QWNoQ2lBTElBRkJBWFJxSWd3Z0JEb0FBU0FNSUFvNkFBQWdBa0VCYWlFQ0lBRkJBV29oQVF3QUN3QUxRUUFoQWlBRlFRQWdCVUVBU2hzaENpQUFJUUVEUUNBQ0lBcEdEUVFnQ3lBQlFRRjBhaUlHSUFNZ0FpQUhhbW90QU9nSElndzZBQUlnQmlBRU9nQUJJQVlnRERvQUFDQUdJQVE2QUFNZ0FrRUJhaUVDSUFGQkFtb2hBUXdBQ3dBTFFRQWhBaUFGUVFBZ0JVRUFTaHNoQmlBRVFRaDBRWUQrQTNFaEJDQUFJUUVEUUNBQ0lBWkdEUU1nQ3lBQlFRRjBhaUFFSUFNZ0FpQUhhbW90QU9nSGNxMUNnWUNFZ0pDQXdBQitOd0FBSUFKQkFXb2hBaUFCUVFScUlRRU1BQXNBQzBFQUlRSWdCVUVBSUFWQkFFb2JJUVlnQkVFSWRFR0EvZ054SVFRZ0FDRUJBMEFnQWlBR1JnMENJQXNnQVVFQmRHb2lDaUFFSUFNZ0FpQUhhbW90QU9nSGNxMUNnWUNFZ0pDQXdBQitJaEUzQUFnZ0NpQVJOd0FBSUFKQkFXb2hBaUFCUVFocUlRRU1BQXNBQzBFQUlRRWdCVUVBSUFWQkFFb2JJUW9nQkVFSWRFR0EvZ054SVF3Z0FDRUVBMEFnQVNBS1JnMEJJQXNnQkVFQmRHb2hFQ0FNSUFNZ0FTQUhhbW90QU9nSGNxMUNnWUNFZ0pDQXdBQitJUkZCQUNFQ0EwQWdBaUFOVGtVRVFDQVFJQUpCQVhScUlnWWdFVGNBR0NBR0lCRTNBQkFnQmlBUk53QUlJQVlnRVRjQUFDQUNRUkJxSVFJTUFRc0xJQUZCQVdvaEFTQUVJQTFxSVFRTUFBc0FDeUFJUVFGcUlRZ2dCU0FIYWlFSElBVWdEV3dnQUdvaEFBd0FDd0FGSUFNZ0FrRUNkR29pQjBGQWF5QUJOZ0lBSUFKQkFXb2hBaUFIS0FJQUlBRnFJUUVNQVFzQUN3QUxJQThMSUFsQkVHb2tBQXZ5QWdFR2Z5TUFRU0JySWdVa0FDQUVLQUlBSVFZZ0JVRU1haUFDSUFNUURTSURRWWgvVFFSQUlBUkJCR29oQWlBQUlBRnFJZ2xCQTJzaEJFRUFJQVpCRUhaclFSOXhJUU1EUUNBRlFReHFFQThnQUNBRVQzSkZCRUFnQWlBRktBSU1JZ1lnQlNnQ0VDSUhkQ0FEZGtFQmRHb2lDQzBBQVNFS0lBQWdDQzBBQURvQUFDQUNJQVlnQnlBS2FpSUdkQ0FEZGtFQmRHb2lCeTBBQUNFSUlBVWdCaUFITFFBQmFqWUNFQ0FBSUFnNkFBRWdBRUVDYWlFQURBRUxDd05BSUFWQkRHb1FEeUVISUFVb0Fnd2hCaUFGS0FJUUlRUWdBQ0FKVHlBSGNrVUVRQ0FDSUFZZ0JIUWdBM1pCQVhScUlnWXRBQUFoQnlBRklBUWdCaTBBQVdvMkFoQWdBQ0FIT2dBQUlBQkJBV29oQUF3QkN3c0RRQ0FBSUFsUFJRUkFJQUlnQmlBRWRDQURka0VCZEdvaUJ5MEFBU0VJSUFBZ0J5MEFBRG9BQUNBQVFRRnFJUUFnQkNBSWFpRUVEQUVMQzBGc1FXd2dBU0FGS0FJVUlBVW9BaGhIR3lBRVFTQkhHeUVEQ3lBRlFTQnFKQUFnQXd2UEZBRWpmeU1BUWRBQWF5SUZKQUJCYkNFSkFrQWdBMEVLU1EwQUFrQWdBeUFDTHdBRUlnY2dBaThBQUNJSUlBSXZBQUlpRFdwcVFRWnFJZ3hKRFFBZ0JDOEJBaUVHSUFWQlBHb2dBa0VHYWlJQ0lBZ1FEU0lKUVloL1N3MEJJQVZCS0dvZ0FpQUlhaUlDSUEwUURTSUpRWWgvU3cwQklBVkJGR29nQWlBTmFpSUNJQWNRRFNJSlFZaC9TdzBCSUFVZ0FpQUhhaUFESUF4ckVBMGlDVUdJZjBzTkFTQUVRUVJxSVFvZ0FDQUJhaUlmUVFOcklTQkJBQ0FHYTBFZmNTRUxJQVVvQWdnaEVTQUZLQUljSVJJZ0JTZ0NNQ0VUSUFVb0FrUWhGQ0FGS0FJRUlRa2dCU2dDR0NFTklBVW9BaXdoRENBRktBSkFJUVlnQlNnQ0VDRWhJQVVvQWlRaElpQUZLQUk0SVNNZ0JTZ0NUQ0VrSUFVb0FnQWhGU0FGS0FJVUlSWWdCU2dDS0NFWElBVW9BandoR0VFQklROGdBQ0FCUVFOcVFRSjJJZ1JxSWdNZ0JHb2lBaUFFYWlJWklRUWdBaUVJSUFNaEJ3TkFJQTlCQVhGRklBUWdJRTl5UlFSQUlBQWdDaUFZSUFaMElBdDJRUUowYWlJT0x3RUFPd0FBSUE0dEFBSWhHaUFPTFFBRElSQWdCeUFLSUJjZ0RIUWdDM1pCQW5ScUlnNHZBUUE3QUFBZ0RpMEFBaUViSUE0dEFBTWhEeUFJSUFvZ0ZpQU5kQ0FMZGtFQ2RHb2lEaThCQURzQUFDQU9MUUFDSVJ3Z0RpMEFBeUVkSUFRZ0NpQVZJQWwwSUF0MlFRSjBhaUlPTHdFQU93QUFJQTR0QUFJaEhpQU9MUUFESVE0Z0FDQVFhaUlsSUFvZ0dDQUdJQnBxSWdaMElBdDJRUUowYWlJUUx3RUFPd0FBSUJBdEFBSWdFQzBBQXlFbUlBY2dEMm9pSnlBS0lCY2dEQ0FiYWlJYWRDQUxka0VDZEdvaUJ5OEJBRHNBQUNBSExRQUNJUXdnQnkwQUF5RVFJQWdnSFdvaUd5QUtJQllnRFNBY2FpSVBkQ0FMZGtFQ2RHb2lDQzhCQURzQUFDQUlMUUFDSVEwZ0NDMEFBeUVjSUFRZ0Rtb2lIU0FLSUJVZ0NTQWVhaUlPZENBTGRrRUNkR29pQ1M4QkFEc0FBQ0FHYWlFQVFRTWhCd0ovSUJRZ0pFa0VRQ0FBSVFaQkF3d0JDeUFBUVFkeElRWWdGQ0FBUVFOMmF5SVVLQUFBSVJoQkFBc2dDUzBBQXlFZUlBa3RBQUloQ0NBTUlCcHFJUUFnRXlBalNRUi9JQUFGSUJNZ0FFRURkbXNpRXlnQUFDRVhRUUFoQnlBQVFRZHhDeUVNSUEwZ0Qyb2hBQ0FIY2lFSlFRTWhEd0ovSUJJZ0lra0VRQ0FBSVExQkF3d0JDeUFBUVFkeElRMGdFaUFBUVFOMmF5SVNLQUFBSVJaQkFBc2dDQ0FPYWlFQUlBbHlJQkVnSVVrRWZ5QUFCU0FSSUFCQkEzWnJJaEVvQUFBaEZVRUFJUThnQUVFSGNRc2hDU0FsSUNacUlRQWdFQ0FuYWlFSElCc2dIR29oQ0NBZElCNXFJUVFnRDNKRklROE1BUXNMSUFVZ0REWUNMQ0FGSUFZMkFrQWdCU0FOTmdJWUlBVWdDVFlDQkNBRklCUTJBa1FnQlNBVE5nSXdJQVVnRWpZQ0hDQUZJQkUyQWdnZ0JTQVlOZ0k4SUFVZ0Z6WUNLQ0FGSUJZMkFoUWdCU0FWTmdJQUlBSWdCMGtnQUNBRFMzSU5BRUZzSVFrZ0NDQVpTdzBCSUFOQkEyc2hDUU5BSUFWQlBHb1FEMFVnQUNBSlNYRUVRQ0FBSUFvZ0JTZ0NQQ0lOSUFVb0FrQWlESFFnQzNaQkFuUnFJZzR2QVFBN0FBQWdBQ0FPTFFBRGFpSUdJQW9nRFNBTUlBNHRBQUpxSWdCMElBdDJRUUowYWlJTUx3RUFPd0FBSUFVZ0FDQU1MUUFDYWpZQ1FDQUdJQXd0QUFOcUlRQU1BUVVnQTBFQ2F5RU1BMEFnQlVFOGFoQVBJUVlnQlNnQ1BDRU5JQVVvQWtBaENTQUFJQXhMSUFaeVJRUkFJQUFnQ2lBTklBbDBJQXQyUVFKMGFpSUdMd0VBT3dBQUlBVWdDU0FHTFFBQ2FqWUNRQ0FBSUFZdEFBTnFJUUFNQVFzTEEwQWdBQ0FNUzBVRVFDQUFJQW9nRFNBSmRDQUxka0VDZEdvaUJpOEJBRHNBQUNBQUlBWXRBQU5xSVFBZ0NTQUdMUUFDYWlFSkRBRUxDd0pBSUFBZ0EwOE5BQ0FBSUFvZ0RTQUpkQ0FMZGlJQVFRSjBhaUlETFFBQU9nQUFJQU10QUFOQkFVWUVRQ0FKSUFNdEFBSnFJUWtNQVFzZ0NVRWZTdzBBUVNBZ0NTQUtJQUJCQW5ScUxRQUNhaUlBSUFCQklFOGJJUWtMSUFKQkEyc2hEQU5BSUFWQktHb1FEMFVnQnlBTVNYRUVRQ0FISUFvZ0JTZ0NLQ0lHSUFVb0Fpd2lBSFFnQzNaQkFuUnFJZzB2QVFBN0FBQWdCeUFOTFFBRGFpSURJQW9nQmlBQUlBMHRBQUpxSWdCMElBdDJRUUowYWlJR0x3RUFPd0FBSUFVZ0FDQUdMUUFDYWpZQ0xDQURJQVl0QUFOcUlRY01BUVVnQWtFQ2F5RUdBMEFnQlVFb2FoQVBJUU1nQlNnQ0tDRU1JQVVvQWl3aEFDQUdJQWRKSUFOeVJRUkFJQWNnQ2lBTUlBQjBJQXQyUVFKMGFpSURMd0VBT3dBQUlBVWdBQ0FETFFBQ2FqWUNMQ0FISUFNdEFBTnFJUWNNQVFzTEEwQWdCaUFIU1VVRVFDQUhJQW9nRENBQWRDQUxka0VDZEdvaUF5OEJBRHNBQUNBSElBTXRBQU5xSVFjZ0FDQURMUUFDYWlFQURBRUxDd0pBSUFJZ0IwME5BQ0FISUFvZ0RDQUFkQ0FMZGlJQ1FRSjBhaUlETFFBQU9nQUFJQU10QUFOQkFVWUVRQ0FBSUFNdEFBSnFJUUFNQVFzZ0FFRWZTdzBBUVNBZ0FDQUtJQUpCQW5ScUxRQUNhaUlBSUFCQklFOGJJUUFMSUJsQkEyc2hEQU5BSUFWQkZHb1FEMFVnQ0NBTVNYRUVRQ0FJSUFvZ0JTZ0NGQ0lHSUFVb0FoZ2lBblFnQzNaQkFuUnFJZzB2QVFBN0FBQWdDQ0FOTFFBRGFpSURJQW9nQmlBQ0lBMHRBQUpxSWdKMElBdDJRUUowYWlJR0x3RUFPd0FBSUFVZ0FpQUdMUUFDYWpZQ0dDQURJQVl0QUFOcUlRZ01BUVVnR1VFQ2F5RURBMEFnQlVFVWFoQVBJUUlnQlNnQ0ZDRUdJQVVvQWhnaEJ5QURJQWhKSUFKeVJRUkFJQWdnQ2lBR0lBZDBJQXQyUVFKMGFpSUNMd0VBT3dBQUlBVWdCeUFDTFFBQ2FqWUNHQ0FJSUFJdEFBTnFJUWdNQVFzTEEwQWdBeUFJU1VVRVFDQUlJQW9nQmlBSGRDQUxka0VDZEdvaUFpOEJBRHNBQUNBSUlBSXRBQU5xSVFnZ0J5QUNMUUFDYWlFSERBRUxDd0pBSUFnZ0dVOE5BQ0FJSUFvZ0JpQUhkQ0FMZGlJQ1FRSjBhaUlETFFBQU9nQUFJQU10QUFOQkFVWUVRQ0FISUFNdEFBSnFJUWNNQVFzZ0IwRWZTdzBBUVNBZ0J5QUtJQUpCQW5ScUxRQUNhaUlDSUFKQklFOGJJUWNMQTBBZ0JSQVBSU0FFSUNCSmNRUkFJQVFnQ2lBRktBSUFJZ1lnQlNnQ0JDSUNkQ0FMZGtFQ2RHb2lEQzhCQURzQUFDQUVJQXd0QUFOcUlnTWdDaUFHSUFJZ0RDMEFBbW9pQW5RZ0MzWkJBblJxSWdRdkFRQTdBQUFnQlNBQ0lBUXRBQUpxTmdJRUlBTWdCQzBBQTJvaEJBd0JCU0FmUVFKcklRTURRQ0FGRUE4aEFpQUZLQUlBSVFZZ0JTZ0NCQ0VJSUFNZ0JFa2dBbkpGQkVBZ0JDQUtJQVlnQ0hRZ0MzWkJBblJxSWdJdkFRQTdBQUFnQlNBSUlBSXRBQUpxTmdJRUlBUWdBaTBBQTJvaEJBd0JDd3NEUUNBRElBUkpSUVJBSUFRZ0NpQUdJQWgwSUF0MlFRSjBhaUlDTHdFQU93QUFJQVFnQWkwQUEyb2hCQ0FJSUFJdEFBSnFJUWdNQVFzTEFrQWdCQ0FmVHcwQUlBUWdDaUFHSUFoMElBdDJJZ0pCQW5ScUlnTXRBQUE2QUFBZ0F5MEFBMEVCUmdSQUlBZ2dBeTBBQW1vaENBd0JDeUFJUVI5TERRQkJJQ0FJSUFvZ0FrRUNkR290QUFKcUlnSWdBa0VnVHhzaENBdEJiRUZzUVd4QmJFRnNRV3hCYkVGc0lBRWdDRUVnUnhzZ0JTZ0NDQ0FGS0FJTVJ4c2dCMEVnUnhzZ0JTZ0NIQ0FGS0FJZ1J4c2dBRUVnUnhzZ0JTZ0NNQ0FGS0FJMFJ4c2dDVUVnUnhzZ0JTZ0NSQ0FGS0FKSVJ4c2hDUXdKQ3dBTEFBc0FDd0FMQUFzQUN3QUxBQXRCYkNFSkN5QUZRZEFBYWlRQUlBa0w3QkFCSG44akFFSFFBR3NpQlNRQVFXd2hDUUpBSUFOQkNra05BQUpBSUFNZ0FpOEFCQ0lHSUFJdkFBQWlCeUFDTHdBQ0lnaHFha0VHYWlJT1NRMEFJQVF2QVFJaER5QUZRVHhxSUFKQkJtb2lBaUFIRUEwaUNVR0lmMHNOQVNBRlFTaHFJQUlnQjJvaUFpQUlFQTBpQ1VHSWYwc05BU0FGUVJScUlBSWdDR29pQWlBR0VBMGlDVUdJZjBzTkFTQUZJQUlnQm1vZ0F5QU9heEFOSWdsQmlIOUxEUUVnQkVFRWFpRUtJQUFnQVdvaUhFRURheUVkUVFBZ0QydEJIM0VoQ3lBRktBSUlJUkVnQlNnQ0hDRVNJQVVvQWpBaEV5QUZLQUpFSVJRZ0JTZ0NCQ0VKSUFVb0FoZ2hCaUFGS0FJc0lRY2dCU2dDUUNFSUlBVW9BaEFoSGlBRktBSWtJUjhnQlNnQ09DRWdJQVVvQWt3aElTQUZLQUlBSVJVZ0JTZ0NGQ0VXSUFVb0FpZ2hGeUFGS0FJOElSaEJBU0VOSUFBZ0FVRURha0VDZGlJQ2FpSU9JQUpxSWc4Z0Ftb2lHU0VFSUE4aEFpQU9JUU1EUUNBTlJTQUVJQjFQY2tVRVFDQUtJQmdnQ0hRZ0MzWkJBWFJxSWd3dEFBRWhEU0FBSUF3dEFBQTZBQUFnQ2lBWElBZDBJQXQyUVFGMGFpSU1MUUFCSVJBZ0F5QU1MUUFBT2dBQUlBb2dGaUFHZENBTGRrRUJkR29pREMwQUFTRWFJQUlnREMwQUFEb0FBQ0FLSUJVZ0NYUWdDM1pCQVhScUlnd3RBQUVoR3lBRUlBd3RBQUE2QUFBZ0NpQVlJQWdnRFdvaUNIUWdDM1pCQVhScUlnd3RBQUVoRFNBQUlBd3RBQUE2QUFFZ0NpQVhJQWNnRUdvaUIzUWdDM1pCQVhScUlnd3RBQUVoRUNBRElBd3RBQUE2QUFFZ0NpQVdJQVlnR21vaURIUWdDM1pCQVhScUlnWXRBQUVoR2lBQ0lBWXRBQUE2QUFFZ0NpQVZJQWtnRzJvaUczUWdDM1pCQVhScUlna3RBQUVoSWlBRUlBa3RBQUE2QUFFZ0NDQU5haUVHUVFNaENRSi9JQlFnSVVrRVFFRURJUTBnQmd3QkN5QVVJQVpCQTNackloUW9BQUFoR0VFQUlRMGdCa0VIY1FzaENDQUhJQkJxSVFZZ0V5QWdTUVIvSUFZRklCTWdCa0VEZG1zaUV5Z0FBQ0VYUVFBaENTQUdRUWR4Q3lFSElBd2dHbW9oRENBSklBMXlJUkJCQXlFTkFuOGdFaUFmU1FSQUlBd2hCa0VEREFFTElBeEJCM0VoQmlBU0lBeEJBM1pySWhJb0FBQWhGa0VBQ3lBYklDSnFJUXdnRUhJaEVDQVJJQjVKQkg4Z0RBVWdFU0FNUVFOMmF5SVJLQUFBSVJWQkFDRU5JQXhCQjNFTElRa2dCRUVDYWlFRUlBSkJBbW9oQWlBRFFRSnFJUU1nQUVFQ2FpRUFJQTBnRUhKRklRME1BUXNMSUFVZ0J6WUNMQ0FGSUFnMkFrQWdCU0FHTmdJWUlBVWdDVFlDQkNBRklCUTJBa1FnQlNBVE5nSXdJQVVnRWpZQ0hDQUZJQkUyQWdnZ0JTQVlOZ0k4SUFVZ0Z6WUNLQ0FGSUJZMkFoUWdCU0FWTmdJQUlBQWdEa3NnQXlBUFMzSU5BRUZzSVFrZ0FpQVpTdzBCSUE1QkEyc2hDUU5BSUFWQlBHb1FEeUFBSUFsUGNrVUVRQ0FLSUFVb0Fqd2lCaUFGS0FKQUlnZDBJQXQyUVFGMGFpSUlMUUFCSVF3Z0FDQUlMUUFBT2dBQUlBb2dCaUFISUF4cUlnWjBJQXQyUVFGMGFpSUhMUUFBSVFnZ0JTQUdJQWN0QUFGcU5nSkFJQUFnQ0RvQUFTQUFRUUpxSVFBTUFRc0xBMEFnQlVFOGFoQVBJUWNnQlNnQ1BDRUdJQVVvQWtBaENTQUFJQTVQSUFkeVJRUkFJQW9nQmlBSmRDQUxka0VCZEdvaUJpMEFBQ0VISUFVZ0NTQUdMUUFCYWpZQ1FDQUFJQWM2QUFBZ0FFRUJhaUVBREFFTEN3TkFJQUFnRGs5RkJFQWdDaUFHSUFsMElBdDJRUUYwYWlJSExRQUJJQUFnQnkwQUFEb0FBQ0FBUVFGcUlRQWdDV29oQ1F3QkN3c2dEMEVEYXlFQUEwQWdCVUVvYWhBUElBQWdBMDF5UlFSQUlBb2dCU2dDS0NJR0lBVW9BaXdpQjNRZ0MzWkJBWFJxSWdndEFBRWhEaUFESUFndEFBQTZBQUFnQ2lBR0lBY2dEbW9pQm5RZ0MzWkJBWFJxSWdjdEFBQWhDQ0FGSUFZZ0J5MEFBV28yQWl3Z0F5QUlPZ0FCSUFOQkFtb2hBd3dCQ3dzRFFDQUZRU2hxRUE4aEJ5QUZLQUlvSVFZZ0JTZ0NMQ0VBSUFNZ0QwOGdCM0pGQkVBZ0NpQUdJQUIwSUF0MlFRRjBhaUlHTFFBQUlRY2dCU0FBSUFZdEFBRnFOZ0lzSUFNZ0J6b0FBQ0FEUVFGcUlRTU1BUXNMQTBBZ0F5QVBUMFVFUUNBS0lBWWdBSFFnQzNaQkFYUnFJZ2N0QUFFaENDQURJQWN0QUFBNkFBQWdBMEVCYWlFRElBQWdDR29oQUF3QkN3c2dHVUVEYXlFREEwQWdCVUVVYWhBUElBSWdBMDl5UlFSQUlBb2dCU2dDRkNJR0lBVW9BaGdpQjNRZ0MzWkJBWFJxSWdndEFBRWhEaUFDSUFndEFBQTZBQUFnQ2lBR0lBY2dEbW9pQm5RZ0MzWkJBWFJxSWdjdEFBQWhDQ0FGSUFZZ0J5MEFBV28yQWhnZ0FpQUlPZ0FCSUFKQkFtb2hBZ3dCQ3dzRFFDQUZRUlJxRUE4aEJ5QUZLQUlVSVFZZ0JTZ0NHQ0VESUFJZ0dVOGdCM0pGQkVBZ0NpQUdJQU4wSUF0MlFRRjBhaUlHTFFBQUlRY2dCU0FESUFZdEFBRnFOZ0lZSUFJZ0J6b0FBQ0FDUVFGcUlRSU1BUXNMQTBBZ0FpQVpUMFVFUUNBS0lBWWdBM1FnQzNaQkFYUnFJZ2N0QUFFaENDQUNJQWN0QUFBNkFBQWdBa0VCYWlFQ0lBTWdDR29oQXd3QkN3c0RRQ0FGRUE4Z0JDQWRUM0pGQkVBZ0NpQUZLQUlBSWdJZ0JTZ0NCQ0lHZENBTGRrRUJkR29pQnkwQUFTRUlJQVFnQnkwQUFEb0FBQ0FLSUFJZ0JpQUlhaUlDZENBTGRrRUJkR29pQmkwQUFDRUhJQVVnQWlBR0xRQUJhallDQkNBRUlBYzZBQUVnQkVFQ2FpRUVEQUVMQ3dOQUlBVVFEeUVISUFVb0FnQWhCaUFGS0FJRUlRSWdCQ0FjVHlBSGNrVUVRQ0FLSUFZZ0FuUWdDM1pCQVhScUlnWXRBQUFoQnlBRklBSWdCaTBBQVdvMkFnUWdCQ0FIT2dBQUlBUkJBV29oQkF3QkN3c0RRQ0FFSUJ4UFJRUkFJQW9nQmlBQ2RDQUxka0VCZEdvaUJ5MEFBU0VJSUFRZ0J5MEFBRG9BQUNBRVFRRnFJUVFnQWlBSWFpRUNEQUVMQzBGc1FXeEJiRUZzUVd4QmJFRnNRV3dnQVNBQ1FTQkhHeUFGS0FJSUlBVW9BZ3hIR3lBRFFTQkhHeUFGS0FJY0lBVW9BaUJIR3lBQVFTQkhHeUFGS0FJd0lBVW9BalJIR3lBSlFTQkhHeUFGS0FKRUlBVW9Ba2hIR3lFSkRBRUxRV3doQ1FzZ0JVSFFBR29rQUNBSkMxZ0JBMzhDUUNBQUtBS1E2d0VpQVVVTkFDQUJLQUlBSUFGQnROVUJhaWdDQUNJQ0lBRkJ1TlVCYWlnQ0FDSURFQk1nQWdSQUlBTWdBU0FDRVFJQURBRUxJQUVRQmdzZ0FFRUFOZ0tnNndFZ0FFSUFOd09RNndFTDZRTUNCSDhDZmlBQVFRQkJLQkFESVFRZ0FrRUJRUVVnQXhzaUFFa0VRQ0FBRHdzZ0FVVUVRRUYvRHd0QkFTRUdBa0FDUUNBRFFRRkdEUUFnQXlFR0lBRW9BQUFpQlVHbzZyNXBSZzBBUVhZaEF5QUZRWEJ4UWREVXRNSUJSdzBCUVFnaEF5QUNRUWhKRFFFZ0FUVUFCQ0VJSUFSQkFUWUNGQ0FFSUFnM0F3QkJBQThMSUFFZ0FpQUdFQm9pQXlBQ1N3MEFJQVFnQXpZQ0dFRnlJUU1nQUNBQmFpSUZRUUZyTFFBQUlnSkJDSEVOQUNBQ1FTQnhJZ1pGQkVCQmNDRURJQVV0QUFBaUJVR25BVXNOQVNBRlFRZHhyVUlCSUFWQkEzWkJDbXF0aGlJSVFnT0lmaUFJZkNFSklBQkJBV29oQUFzZ0FrRUdkaUVGSUFKQkFuWkJBQ0VEQWtBQ1FBSkFBa0FnQWtFRGNVRUJhdzREQUFFQ0F3c2dBQ0FCYWkwQUFDRURJQUJCQVdvaEFBd0NDeUFBSUFGcUx3QUFJUU1nQUVFQ2FpRUFEQUVMSUFBZ0FXb29BQUFoQXlBQVFRUnFJUUFMUVFGeElRSUNmZ0pBQWtBQ1FBSkFJQVZCQVdzT0F3RUNBd0FMUW44Z0JrVU5BeG9nQUNBQmFqRUFBQXdEQ3lBQUlBRnFNd0FBUW9BQ2ZBd0NDeUFBSUFGcU5RQUFEQUVMSUFBZ0FXb3BBQUFMSVFnZ0JDQUNOZ0lnSUFRZ0F6WUNIQ0FFSUFnM0F3QkJBQ0VESUFSQkFEWUNGQ0FFSUFnZ0NTQUdHeUlJTndNSUlBUkNnSUFJSUFnZ0NFS0FnQWhhR3o0Q0VBc2dBd3RmQVFGL1FiaC9JUU1nQVVFQlFRVWdBaHNpQWs4RWZ5QUFJQUpxUVFGckxRQUFJZ0JCQTNGQkFuUkJvQjVxS0FJQUlBSnFJQUJCQkhaQkRIRkJzQjVxS0FJQWFpQUFRU0J4SWdGRmFpQUJRUVYySUFCQndBQkpjV29GUWJoL0N3c01BQ0FBSUFFZ0FrRUFFQmtMbHdNQ0JYOENmaU1BUVVCcUlnUWtBQUpBQTBBZ0FVRUZUd1JBQWtBZ0FDZ0FBRUZ3Y1VIUTFMVENBVVlFUUVKK0lRY2dBVUVJU1EwRUlBQW9BQVFpQWtGM1N3MEVJQUpCQ0dvaUF5QUJTdzBFSUFKQmdYOUpEUUVNQkFzZ0JFRVlhaUFBSUFFUUd5RUNRbjRnQkNrREdFSUFJQVFvQWl4QkFVY2JJQUliSWdkQ2ZWWU5BeUFISUFoOElnZ2dCMVJDZmlFSERRTUNRQUpBSUFGQkNFa05BQ0FBS0FBQVFYQnhRZERVdE1JQlJ3MEFJQUFvQUFRaUFrRjNTdzBGUWJoL0lBSkJDR29pQWlBQklBSkpHeUVEREFFTElBUkJHR29nQUNBQkVCc2lBa0dJZjBzRVFDQUNJUU1NQVF0QnVIOGhBeUFDRFFBZ0FTQUVLQUl3SWdKcklRVWdBQ0FDYWlFR0EwQWdCaUFGSUFSQkRHb1FIU0lEUVloL1N3MEJJQU5CQTJvaUFpQUZTd1JBUWJoL0lRTU1BZ3NnQlNBQ2F5RUZJQUlnQm1vaEJpQUVLQUlRUlEwQUN5QUVLQUk0Qkg5QnVIOGhBeUFGUVFSSkRRRWdCa0VFYWdVZ0Jnc2dBR3NoQXdzZ0EwR0lmMHNOQXdzZ0FTQURheUVCSUFBZ0Eyb2hBQXdCQ3d0Q2ZpQUlJQUViSVFjTElBUkJRR3NrQUNBSEMyUUJBWDlCdUg4aEF3SkFJQUZCQTBrTkFDQUFMUUFDSVFFZ0FpQUFMd0FBSWdCQkFYRTJBZ1FnQWlBQVFRRjJRUU54SWdNMkFnQWdBaUFBSUFGQkVIUnlRUU4ySWdBMkFnZ0NRQUpBSUFOQkFXc09Bd0lCQUFFTFFXd1BDeUFBSVFNTElBTUxSQUVDZnlBQklBSW9BZ1FpQXlBQktBSUVhaUlFTmdJRUlBQWdBMEVDZEVHZ0hXb29BZ0FnQVNnQ0FFRUFJQVJyZG5FMkFnQWdBUkFQR2lBQUlBSkJDR28yQWdRTHpnRUJCbjlCdW44aENnSkFJQUlvQWdRaUNDQUNLQUlBSWdscUlnMGdBU0FBYTBzTkFFRnNJUW9nQ1NBRUlBTW9BZ0FpQzJ0TERRQWdBQ0FKYWlJRUlBSW9BZ2dpREdzaEFpQUFJQUZCSUdzaUFDQUxJQWxCQUJBZ0lBTWdDU0FMYWpZQ0FBSkFBa0FnQkNBRmF5QU1Ud1JBSUFJaEJRd0JDeUFNSUFRZ0JtdExEUUlnQnlBSElBSWdCV3NpQW1vaUFTQUlhazhFUUNBRUlBRWdDQkFLR2d3Q0N5QUNJQWhxSVFnZ0JDQUJRUUFnQW1zUUNpQUNheUVFQ3lBRUlBQWdCU0FJUVFFUUlBc2dEU0VLQ3lBS0M4Y0VBUUovSUFBZ0Eyb2hCZ0pBSUFOQkIwd0VRQU5BSUFBZ0JrOE5BaUFBSUFJdEFBQTZBQUFnQUVFQmFpRUFJQUpCQVdvaEFnd0FDd0FMSUFSQkFVWUVRQUpBSUFBZ0Ftc2lCVUVIVFFSQUlBQWdBaTBBQURvQUFDQUFJQUl0QUFFNkFBRWdBQ0FDTFFBQ09nQUNJQUFnQWkwQUF6b0FBeUFBSUFJZ0JVRUNkQ0lGUWNBZWFpZ0NBR29pQWlnQUFEWUFCQ0FDSUFWQjRCNXFLQUlBYXlFQ0RBRUxJQUFnQWlrQUFEY0FBQXNnQWtFSWFpRUNJQUJCQ0dvaEFBc2dBU0FHVHdSQUlBQWdBMm9oQVNBRVFRRkhJQUFnQW10QkQwcHlSUVJBQTBBZ0FDQUNLUUFBTndBQUlBSkJDR29oQWlBQVFRaHFJZ0FnQVVrTkFBd0RDd0FMSUFBZ0Fpa0FBRGNBQUNBQUlBSXBBQWczQUFnZ0EwRVJTUTBCSUFCQkVHb2hBQU5BSUFBZ0Fpa0FFRGNBQUNBQUlBSXBBQmczQUFnZ0FDQUNLUUFnTndBUUlBQWdBaWtBS0RjQUdDQUNRU0JxSVFJZ0FFRWdhaUlBSUFGSkRRQUxEQUVMQWtBZ0FDQUJTd1JBSUFBaEFRd0JDeUFCSUFCcklRVUNRQ0FFUVFGSElBQWdBbXRCRDBweVJRUkFJQUloQXdOQUlBQWdBeWtBQURjQUFDQURRUWhxSVFNZ0FFRUlhaUlBSUFGSkRRQUxEQUVMSUFBZ0Fpa0FBRGNBQUNBQUlBSXBBQWczQUFnZ0JVRVJTQTBBSUFCQkVHb2hBQ0FDSVFNRFFDQUFJQU1wQUJBM0FBQWdBQ0FES1FBWU53QUlJQUFnQXlrQUlEY0FFQ0FBSUFNcEFDZzNBQmdnQTBFZ2FpRURJQUJCSUdvaUFDQUJTUTBBQ3dzZ0FpQUZhaUVDQ3dOQUlBRWdCazhOQVNBQklBSXRBQUE2QUFBZ0FVRUJhaUVCSUFKQkFXb2hBZ3dBQ3dBTEM2NEhBZ1YvQVg0akFFR0FBV3NpRVNRQUlCRWdBellDZkVGL0lROENRQUpBQWtBQ1FBSkFJQUlPQkFFQUF3SUVDeUFHUlFSQVFiaC9JUThNQkF0QmJDRVBJQVV0QUFBaUFpQURTdzBESUFnZ0FrRUNkQ0lDYWlnQ0FDRURJQUlnQjJvb0FnQWhBaUFBUVFBNkFBc2dBRUlBTndJQUlBQWdBallDRENBQUlBTTZBQW9nQUVFQU93RUlJQUVnQURZQ0FFRUJJUThNQXdzZ0FTQUpOZ0lBUVFBaER3d0NDeUFLUlFSQVFXd2hEd3dDQzBFQUlROGdDMFVnREVFWlNISU5BVUVJSUFSMFFRaHFJUUJCQUNFREEwQWdBQ0FEVFEwQ0lBTkJRR3NoQXd3QUN3QUxRV3doRHlBUklCRkIvQUJxSUJGQitBQnFJQVVnQmhBTUlnTkJpSDlMRFFBZ0VTZ0NlQ0lDSUFSTERRQWdFU2dDZkVFQmFpRUpJQUJCQ0dvaEMwR0FnQUlnQW5SQkVIVWhCVUVCSVJCQkFTQUNkQ0lQUVFGcklnb2hFZ05BSUFrZ0RrY0VRQUpBSUJFZ0RrRUJkQ0lFYWk4QkFDSU1RZi8vQTBZRVFDQUxJQkpCQTNScUlBNDJBZ1FnRWtFQmF5RVNRUUVoREF3QkN5QVFRUUFnQlNBTXdVb2JJUkFMSUFRZ0RXb2dERHNCQUNBT1FRRnFJUTRNQVFzTElBQWdBallDQkNBQUlCQTJBZ0FDUUNBS0lCSkdCRUFnRFVIcUFHb2hCa0VBSVJCQkFDRU1BMEFnQ1NBUVJnUkFJQTlCQTNZZ0QwRUJkbXBCQTJvaUJVRUJkQ0VFUVFBaERFRUFJUklEUUVFQUlRNGdEeUFTVFEwRUEwQWdEa0VDUndSQUlBc2dCU0FPYkNBTWFpQUtjVUVEZEdvZ0JpQU9JQkpxYWkwQUFEWUNCQ0FPUVFGcUlRNE1BUXNMSUJKQkFtb2hFaUFFSUF4cUlBcHhJUXdNQUFzQUJTQVJJQkJCQVhScUxnRUFJUVVnQmlBTWFpSUVJQk0zQUFCQkNDRU9BMEFnQlNBT1NnUkFJQVFnRG1vZ0V6Y0FBQ0FPUVFocUlRNE1BUXNMSUJOQ2dZS0VpSkNnd0lBQmZDRVRJQkJCQVdvaEVDQUZJQXhxSVF3TUFRc0FDd0FMSUE5QkEzWWdEMEVCZG1wQkEyb2hCVUVBSVJCQkFDRU9BMEFnQ1NBUVJnMEJRUUFoRENBUklCQkJBWFJxTGdFQUlnUkJBQ0FFUVFCS0d5RUVBMEFnQkNBTVJ3UkFJQXNnRGtFRGRHb2dFRFlDQkFOQUlBVWdEbW9nQ25FaURpQVNTdzBBQ3lBTVFRRnFJUXdNQVFzTElCQkJBV29oRUF3QUN3QUxJQUpCQVdvaEJVRUFJUXdEUUNBTUlBOUhCRUFnRFNBTElBeEJBM1JxSWdrb0FnUWlCRUVCZEdvaUFpQUNMd0VBSWdaQkFXbzdBUUFnQ1NBRklBWm5RV0J6YWlJQ09nQURJQWtnQmlBQ2RDQVBhenNCQUNBSklBZ2dCRUVDZENJQ2FpZ0NBRG9BQWlBSklBSWdCMm9vQWdBMkFnUWdERUVCYWlFTURBRUxDeUFCSUFBMkFnQWdBeUVQQ3lBUlFZQUJhaVFBSUE4TDdWb0NPMzhHZmlNQVFlQUJheUlFSkFBQ1FFR3c3QWtRQlNJRlJRUkFRVUFoQnd3QkN5QUZRZ0EzQXZUcUFTQUZRUUEyQXNUckFTQUZRUUEyQXJUckFTQUZRZ0EzQXB6ckFTQUZRUUEyQXJqcEFTQUZRUUEyQXF6c0NTQUZRZ0EzQXRUckFTQUZRZ0EzQXF6ckFTQUZRZ0EzQTRqckFTQUZRZ0EzQXVUcUFTQUZRZ0EzQXVUckFTQUZRWUdBZ01BQU5nSzg2d0VnQlVJQU53S2s2d0VnQlVIODZnRnFRUUEyQWdBZ0JVR1E2d0ZxUWdBM0F3QWdCUkFZSUFWQnJOVUJhaUVVSUFWQitPc0JhaUVjSUFWQnNPb0JhaUVpSUFWQm9EQnFJU29nQlVHWUlHb2hLeUFGUWFqUUFHb2hIaUFGUVJCcUlTd2dCVUVJYWlFb0lBVkJCR29oTFNBRlFjRHBBV29oS1NBRlFZanJBV29nQkVHVUFXb2hMeUFFUVl3QmFpRXdJQVJCaEFGcUlURWdCRUhjQUdvaE1pQUVRZFFBYWlFeklBUkJ6QUJxSVRRZ0FDRWRBa0FDUUFKQUFrQUNRQU5BUVFGQkJTQUZLQUxrNmdFYklRWUNRQU5BSUFNZ0Jra05BU0FDS0FBQVFYQnhRZERVdE1JQlJnUkFRYmgvSVFjZ0EwRUlTUTBJSUFJb0FBUWlEa0YzU3dSQVFYSWhCd3dKQ3lBRElBNUJDR29pQ1VrTkNDQU9RWUIvU3dSQUlBa2hCd3dKQ3lBRElBbHJJUU1nQWlBSmFpRUNEQUVMQ3lBRlFnQTNBcXpwQVNBRlFnQTNBK2pwQVNBRlFRQTJBcGpyQVNBRlFnQTNBNERxQVNBRlFnTTNBL2pwQVNBRlFiVHBBV3BDQURjQ0FDQUZRZkRwQVdwQ0FEY0RBQ0FGUWFqUUFHb2lDVUdNZ0lEZ0FEWUNBQ0FGUWF6UUFXcEI0QklwQWdBM0FnQWdCVUcwMEFGcVFlZ1NLQUlBTmdJQUlBVWdCVUVRYWpZQ0FDQUZJQVZCb0RCcU5nSUVJQVVnQlVHWUlHbzJBZ2dnQlNBSk5nSU1JQVZCQVVFRklBVW9BdVRxQVJzMkFyenBBUUpBSUFGRkRRQWdCU2dDck9rQklna2dIVVlOQUNBRklBazJBcmpwQVNBRklCMDJBcXpwQVNBRktBS3c2UUVoRGlBRklCMDJBckRwQVNBRklCMGdEaUFKYTJvMkFyVHBBUXRCdUg4aENTQURRUVZCQ1NBRktBTGs2Z0VpQmh0SkRRVWdBa0VCUVFVZ0Joc2dCaEFhSWc1QmlIOUxCRUFnRGlFSkRBVUxJQU1nRGtFRGFra05CU0FwSUFJZ0RpQUdFQmtpQmtHSWYwc0VRQ0FHSVFrTUJRc2dCZzBGQWtBQ1FDQUZLQUtvNndGQkFVY05BQ0FGS0FLazZ3RWlDVVVOQUNBRktBS1U2d0ZGRFFBZ0NTZ0NCRUVCYXlJSElBVW9BdHpwQVNJS3JVS0hsYSt2bUxiZW01NS9ma0xKejlteThlVzY2aWVGUWhlSlFzL1cwNzdTeDZ2WlFuNUMrZlBkOFpuMm1hc1dmQ0kvUWlHSUlEK0ZRcy9XMDc3U3g2dlpRbjRpUDBJZGlDQS9oVUw1ODkzeG1mYVpxeForSWo5Q0lJZ2dQNFduY1NFR0lBa29BZ0FoRlFOQVFRQWhDQUpBSUJVZ0JrRUNkR29vQWdBaUNVVU5BQ0FKS0FJSVFRaEpEUUFnQ1NnQ0JDSVNLQUFBUWJmSXd1RitSdzBBSUJJb0FBUWhDQXNnQ0NBS1J3UkFJQVlnQjNGQkFXb2hCaUFJRFFFTEN5QUpSUTBBSUFVUUdDQUZRWDgyQXFEckFTQUZJQWsyQXBUckFTQUZJQVVvQXR6cEFTSUlOZ0tZNndFTUFRc2dCU2dDM09rQklRZ0xBa0FnQ0VVTkFDQUZLQUtZNndFZ0NFWU5BRUZnSVFrTUJnc0NRQ0FGS0FMZzZRRUVRQ0FGSUFVb0F1anFBU0lKUlRZQzdPb0JJQWtOQVNBRlF2bnEwTkRueWFIazRRQTNBNmpxQVNBRlFnQTNBNkRxQVNBRlFzL1cwNzdTeDZ2WlFqY0RtT29CSUFWQzF1dUM3dXI5aWZYZ0FEY0RrT29CSUFWQ0FEY0RpT29CSUNKQkFFRW9FQU1hREFFTElBVkJBRFlDN09vQkN5QUJJQjFxSVNVZ0JTQUZLUVBvNlFFZ0RxMThOd1BvNlFFZ0F5QU9heUVESUFJZ0Rtb2hBaUFkSVE0RFFDQUNJQU1nQkVFc2FoQWRJaFZCaUg5TEJFQWdGU0VKREFZTElBTkJBMnNpTlNBVlNRMEVJQUpCQTJvaEcwRnNJUWtDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUVLQUlzRGdNQ0FRQVZDeUFWUWYvL0Iwc05FeUFWUVFOSkRSSWdCU2tEeU9rQklUOENRQUpBSUJzdEFBQWlDVUVEY1NJYVFRRnJEZ01HQVFBSEN5QUZLQUtBNmdFTkFFRmlJUWtNRlFzZ0ZVRUZTUTBTSUJzb0FBQWhBd0ovQWtBQ1FBSkFJQWxCQW5aQkEzRWlDVUVDYXc0Q0FRSUFDeUFKUVFCSElRY2dBMEVFZGtIL0IzRWhDMEVESVFZZ0EwRU9ka0gvQjNFTUFndEJCQ0VHSUFOQkJIWkIvLzhBY1NFTFFRRWhCeUFEUVJKMkRBRUxJQU5CQkhaQi8vOFBjU0lMUVlDQUNFc05FMEVCSVFkQkJTRUdJQUl0QUFkQkNuUWdBMEVXZG5JTElnZ2dCbW9pQ1NBVlN3MFNBa0FnQzBHQkJra05BQ0FGS0FLYzZ3RkZEUUJCQUNFREEwQWdBMEdEZ0FGTERRRWdBMEZBYXlFRERBQUxBQXNnQmlBYmFpRVBJQnBCQTBjTkJpQUZLQUlNSWdJdEFBRkJDSFFoQXlBSERRY2dBMFVOQ0NBRVFmQUFhaUFQSUFnUURTSURRWWgvU3cwSklBSkJCR29oQmlBTElCeHFJaEpCQTJzaENrRUFJQUl2QVFKclFSOXhJUWNnSENFREEwQWdCRUh3QUdvUUQwVWdBeUFLU1hFRVFDQURJQVlnQkNnQ2NDSUlJQVFvQW5RaUQzUWdCM1pCQW5ScUlnSXZBUUE3QUFBZ0F5QUNMUUFEYWlJRElBWWdDQ0FQSUFJdEFBSnFJZ2gwSUFkMlFRSjBhaUlDTHdFQU93QUFJQVFnQ0NBQ0xRQUNhallDZENBRElBSXRBQU5xSVFNTUFRVWdFa0VDYXlFSUEwQWdCRUh3QUdvUUR5RVBJQVFvQW5BaENpQUVLQUowSVFJZ0F5QUlTeUFQY2tVRVFDQURJQVlnQ2lBQ2RDQUhka0VDZEdvaUNpOEJBRHNBQUNBRUlBSWdDaTBBQW1vMkFuUWdBeUFLTFFBRGFpRUREQUVMQ3dOQUlBTWdDRTBFUUNBRElBWWdDaUFDZENBSGRrRUNkR29pRHk4QkFEc0FBQ0FESUE4dEFBTnFJUU1nQWlBUExRQUNhaUVDREFFTEN3SkFJQU1nRWs4TkFDQURJQVlnQ2lBQ2RDQUhka0VDZEdvaUF5MEFBRG9BQUNBRExRQURRUUZHQkVBZ0FpQURMUUFDYWlFQ0RBRUxJQUpCSDBzTkFFRWdJQUlnQXkwQUFtb2lBaUFDUVNCUEd5RUNDMEZzUVd3Z0N5QUVLQUo0SUFRb0FueEhHeUFDUVNCSEd5RUREQXNMQUFzQUN5QUVLQUkwSWdJZ0pTQU9hMHNOQ2lBT1JRUkFRUUFoQ1NBQ0RRSU1EZ3NnRGlBYkxRQUFJQUlRQXhvZ0FpRUpEQXdMSUJVZ0pTQU9hMHNOQ1NBT0RRRkJBQ0VKSUJWRkRRd0xRYlovSVFrTUVRc2dEaUFiSUJVUUFob2dGU0VKREFvTElCd2dHd0ovQWtBQ1FBSkFJQWxCQW5aQkEzRkJBV3NPQXdFQUFnQUxJQWxCQTNZaEEwRUJEQUlMSUJzdkFBQkJCSFloQTBFQ0RBRUxJQlZCQkVrTkRpQUNMd0FESUFJdEFBVkJFSFJ5SWdKQmo0Q0FBVXNORGlBQ1FRUjJJUU5CQXdzaUFtb3RBQUFnQTBFZ2FoQURJUWtnQlNBRE5nS0E2d0VnQlNBSk5nTHc2Z0VnQWtFQmFpRUpEQVVMSUJVQ2Z3SkFBa0FDUUNBSlFRSjJRUU54UVFGckRnTUJBQUlBQ3lBSlFRTjJJUU5CQVF3Q0N5QWJMd0FBUVFSMklRTkJBZ3dCQ3lBQ0x3QURJQUl0QUFWQkVIUnlRUVIySVFOQkF3c2lBaUFEYWlJSlFTQnFTUVJBSUFrZ0ZVc05EU0FjSUFJZ0cyb2dBeEFDSVFJZ0JTQUROZ0tBNndFZ0JTQUNOZ0x3NmdFZ0FpQURhaUlDUWdBM0FCZ2dBa0lBTndBUUlBSkNBRGNBQ0NBQ1FnQTNBQUFNQlFzZ0JTQUROZ0tBNndFZ0JTQUNJQnRxTmdMdzZnRU1CQXNnQjBVRVFDQWVJQThnQ0NBVUVCUWlBa0dJZjBzZ0FpQUlUM0lORENBY0lBc2dBaUFQYWlBSUlBSnJJQjRRRlNFRERBTUxJQXRGSUFoRmNnMExJQXRCQ0hZaUF5QUlJQXRKQkg4Z0NFRUVkQ0FMYmdWQkR3dEJHR3dpQWtHTUNHb29BZ0JzSUFKQmlBaHFLQUlBYWlJR1FRTjJJQVpxSUFKQmdBaHFLQUlBSUFKQmhBaHFLQUlBSUFOc2Fra0VRQ01BUVJCckloQWtBQ0FlS0FJQUlRTWdGRUh3QkdwQkFFSHNBQkFESVFaQlZDRUNBa0FnQTBIL0FYRWlERUVNU3cwQUFrQWdGRUhjQ1dvZ0JpQVFRUWhxSUJCQkRHb2dEeUFJSUJSQjNBdHFJaGNRQ3lJU1FZaC9TdzBBSUJBb0Fnd2lCaUFNU3cwQklCUkJxQVZxSVEwZ0ZFR2tCV29oTmlBZVFRUnFJUkVnQTBHQWdJQjRjU0UzSUFaQkFXb2lFeUVDSUFZaEF3TkFJQUlpQjBFQmF5RUNJQU1pQ2tFQmF5RURJQlFnQ2tFQ2RHb29BdkFFUlEwQUMwRUJJQWNnQjBFQlRSc2hGa0VBSVFkQkFTRUNBMEFnQWlBV1J3UkFJQlFnQWtFQ2RDSURhaWdDOEFRaEdDQURJQTFxSUFjMkFnQWdBa0VCYWlFQ0lBY2dHR29oQnd3QkN3c2dEU0FITmdJQVFRQWhBaUFRS0FJSUlRTURRQ0FDSUFOSEJFQWdEU0FDSUJScVFkd0phaTBBQUNJWVFRSjBhaUlaSUJrb0FnQWlHVUVCYWpZQ0FDQVVJQmxCQVhScUloa2dHRG9BM1FVZ0dTQUNPZ0RjQlNBQ1FRRnFJUUlNQVFzTFFRQWhBeUFOUVFBMkFnQWdEQ0FHUVg5emFpRUdRUUVoQWdOQUlBSWdGa2NFUUNBVUlBSkJBblJxSWcwZ0F6WUNBQ0FOS0FMd0JDQUNJQVpxZENBRGFpRURJQUpCQVdvaEFnd0JDd3NnRENBVElBcHJJZ1pyUVFGcUlRb2dCaUVEQTBBZ0F5QUtTUVJBSUJRZ0EwRTBiR29oRFVFQklRSURRQ0FDSUJaSEJFQWdEU0FDUVFKMEloaHFJQlFnR0dvb0FnQWdBM1kyQWdBZ0FrRUJhaUVDREFFTEN5QURRUUZxSVFNTUFRc0xJQmNnRkVFMEVBSWhPQ0FVUVpBTWFpRTVJQk1nREdzaE9pQVVRZHdGYWlFWFFRQWhDZ05BQWtBQ1FDQUhJQXBIQkVCQkFTQU1JQk1nRnlBS1FRRjBhaUlDTFFBQklnMXJJZ05ySWhoMElSa2dBaTBBQUNFV0lEZ2dEVUVDZEdvaUh5Z0NBQ0VDSUFZZ0dFMEVRQ0EyUVFFZ0F5QTZhaUlOSUExQkFVd2JJaUJCQW5RaUpHb29BZ0FoRFNBNUlCUWdBMEUwYkdwQk5CQUNJU0VnRFVFQmRDRW1JQkVnQWtFQ2RHb2hJeUFnUVFGTkRRSWdBMEVRZEVHQWdQd0hjU0FXY2tHQWdJQUljaUVnSUNFZ0pHb29BZ0FoSkVFQUlRSURRQ0FDSUNSR0RRTWdJeUFDUVFKMGFpQWdOZ0VBSUFKQkFXb2hBZ3dBQ3dBTElBSWdBaUFaYWlJTklBSWdEVXNiSVEwZ0EwRVFkRUdBZ1B3SGNTQVdja0dBZ0lBSWNpRURBMEFnQWlBTlJnMERJQkVnQWtFQ2RHb2dBellCQUNBQ1FRRnFJUUlNQUFzQUN5QWVJQXhCRUhRZ04zSWdESEpCZ0FKeU5nSUFEQU1MSUFjZ0RXc2hKQ0FYSUNacUlTWkJBQ0VOQTBBZ0RTQWtSZzBCUVFFZ0dDQVRJQ1lnRFVFQmRHb2lKeTBBQVNJQ2F5STdhM1FpUENBaElBSkJBblJxSWlBb0FnQWlBbW9oUFNBRElEdHFRUkIwUVlDQS9BZHhJQ2N0QUFCQkNIUnlJQlp5UVlDQWdCQnlJU2NEUUNBaklBSkJBblJxSUNjMkFRQWdBa0VCYWlJQ0lEMUpEUUFMSUNBZ0lDZ0NBQ0E4YWpZQ0FDQU5RUUZxSVEwTUFBc0FDeUFmSUI4b0FnQWdHV28yQWdBZ0NrRUJhaUVLREFBTEFBc2dFaUVDQ3lBUVFSQnFKQUFnQWtHSWYwc2dBaUFJVDNJTkRDQWNJQXNnQWlBUGFpQUlJQUpySUI0UUZpRUREQU1MSUI0Z0R5QUlJQlFRRkNJQ1FZaC9TeUFDSUFoUGNnMExJQndnQ3lBQ0lBOXFJQWdnQW1zZ0hoQVhJUU1NQWdzZ0F3UkFJQndnQ3lBUElBZ2dBaEFXSVFNTUFnc2dIQ0FMSUE4Z0NDQUNFQmNoQXd3QkN5QWNJQXNnRHlBSUlBSVFGU0VEQ3lBRFFZaC9TdzBJSUFVZ0N6WUNnT3NCSUFVZ0hEWUM4T29CSUFWQkFUWUNnT29CSUJwQkFrWUVRQ0FGSUI0MkFnd0xJQXNnSEdvaUFrSUFOd0FBSUFKQ0FEY0FHQ0FDUWdBM0FCQWdBa0lBTndBSUlBbEJpSDlMRFFvTElBa2dGVVlOQ0NBVklBbHJJUVlnQlNnQ25Pc0JJUW9DUUNBSklCdHFJZ010QUFBaUQwVUVRRUVCSVFKQkFDRVBRYmgvSVFrZ0JrRUJSZzBCREFzTEFuOGdBMEVCYWlBUHdDSUNRUUJPRFFBYUlBSkJmMFlFUUNBR1FRTklEUXNnQXk4QUFVR0EvZ0ZxSVE4Z0EwRURhZ3dCQ3lBR1FRSklEUW9nQXkwQUFTQVBRUWgwY2tHQWdBSnJJUThnQTBFQ2Fnc2hFa0c0ZnlFSklCSkJBV29pQWlBVklCdHFJZ2RMRFFvZ0xDQUZJQkl0QUFBaUVrRUdka0VqUVFrZ0FpQUhJQUpyUWNBUVFkQVJRZkFTSUFVb0FvVHFBU0FLSUE4Z0ZCQWhJZ2xCaUg5TERRZ2dLeUFvSUJKQkJIWkJBM0ZCSDBFSUlBSWdDV29pQWlBSElBSnJRWUFMUVlBTVFZQVhJQVVvQW9UcUFTQUZLQUtjNndFZ0R5QVVFQ0VpQ0VHSWYwc05DRUZzSVFrZ0tpQXRJQkpCQW5aQkEzRkJORUVKSUFJZ0NHb2lBaUFISUFKclFZQU5RZUFPUVpBWklBVW9Bb1RxQVNBRktBS2M2d0VnRHlBVUVDRWlCMEdJZjBzTkNpQUNJQWRxSUFOcklnSWhDU0FDUVloL1N3MEtDeUFPSUE5QkFFeHlEUUVMUWJwL0lRa01DQXNnSlNBT2F5RUpJQVlnQW1zaEJpQUNJQU5xSVFjQ1FBSkFBa0FnQ2tVRVFDQVBRUWxJSUFVcEE4anBBVUtCZ0lBSVZISU5BaUFvS0FJQUlnSkJDR29oRWlBQ0tBSUVJUXBCQUNFRFFRQWhBZ05BSUFNZ0NuWkZCRUFnQWlBU0lBTkJBM1JxTFFBQ1FSWkxhaUVDSUFOQkFXb2hBd3dCQ3dzZ0JVRUFOZ0tjNndFZ0FrRUlJQXByZEVFVVR3MEJEQU1MSUFWQkFEWUNuT3NCQ3lBRUlBVW9BdkRxQVNJRE5nTGNBU0FKSUE1cUlSWWdBeUFGS0FLQTZ3RnFJUmNDUUNBUFJRUkFJQTRoQnd3QkN5QUZLQUs0NlFFaEdpQUZLQUswNlFFaEdDQUZLQUt3NlFFaEVpQUZRUUUyQW9UcUFVRUFJUU1EUUNBRFFRTkhCRUFnQkNBRFFRSjBJZ0pxSUFJZ0JXcEJyTkFCYWlnQ0FEWUNaQ0FEUVFGcUlRTU1BUXNMUVd3aENTQUVRVGhxSWdJZ0J5QUdFQTFCaUg5TERRTkJDQ0FQSUE5QkNFNGJJUjhnTkNBQ0lBVW9BZ0FRSGlBeklBSWdCU2dDQ0JBZUlESWdBaUFGS0FJRUVCNGdEaUFTYXlFWlFRQWhDQU5BSUFSQk9Hb1FEMEVEUmlBSUlCOU9ja1VFUUNBRUtBSlFJQVFvQWt4QkEzUnFLUUlBSWtDbklnZEJFSFlpRVVIL0FYRWhDeUFFS0FKZ0lBUW9BbHhCQTNScUtRSUFJa0duSWd4QkVIWWlJVUgvQVhFaEVDQUVLQUpZSUFRb0FsUkJBM1JxS1FJQUlrSkNJSWluSVFZZ1FVSWdpQ0JBUWlDSXB5RURBa0FnUWtJUWlLY2lDa0gvQVhFaUFrRUNUd1JBQWtBZ0FrRVpTU0EvUW9HQWdCQlVja1VFUUNBRVFTQWdCQ2dDUENJS2F5SU5JQUlnQWlBTlN4c2lFeUFLYWpZQ1BDQUdJQVFvQWpnZ0NuUkJBQ0FUYTNZZ0FpQVRheUlUZEdvaENpQUVRVGhxRUE4YUlBSWdEVTBOQVNBRUlBUW9BandpQWlBVGFqWUNQQ0FFS0FJNElBSjBRUUFnRTJ0MklBcHFJUW9NQVFzZ0JDQUNJQVFvQWp3aURXbzJBandnQkNnQ09DQU5kRUVBSUFwcmRpQUdhaUVLSUFSQk9Hb1FEeG9MSUFRcEFtUWhSQ0FFSUFvMkFtUWdCQ0JFTndKb0RBRUxBa0FnQWtVRVFDQURCRUFnQkNnQ1pDRUtEQU1MSUFRb0FtZ2hDZ3dCQ3lBRUlBUW9BandpQWtFQmFqWUNQQUovSUFZZ0EwVnFJQVFvQWpnZ0FuUkJIM1pxSWdKQkEwWUVRQ0FFS0FKa1FRRnJEQUVMSUFKQkFuUWdCR29vQW1RTElnWkZJQVpxSVFvZ0FrRUJSd1JBSUFRZ0JDZ0NhRFlDYkFzTElBUWdCQ2dDWkRZQ2FDQUVJQW8yQW1RTHB5RUNJRUZDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NQQ0lHSUJCcU5nSThJQVFvQWpnZ0JuUkJBQ0FoYTNZZ0Ftb2hBZ3NnQ3lBUWFrRVVUd1JBSUFSQk9Hb1FEeG9MSUVCQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDUENJR0lBdHFOZ0k4SUFRb0FqZ2dCblJCQUNBUmEzWWdBMm9oQXdzZ0JFRTRhaEFQR2lBRUlBUW9BamdpQmtFQUlBZEJHSFlpQ3lBRUtBSThhaUlRYTNZZ0MwRUNkRUdnSFdvb0FnQnhJQWRCLy84RGNXbzJBa3dnQkNBUUlBeEJHSFlpQjJvaUN6WUNQQ0FFSUFkQkFuUkJvQjFxS0FJQUlBWkJBQ0FMYTNaeElBeEIvLzhEY1dvMkFsd2dCRUU0YWhBUEdpQUVJRUtuSWdaQkdIWWlCeUFFS0FJOGFpSUxOZ0k4SUFRZ0IwRUNkRUdnSFdvb0FnQWdCQ2dDT0VFQUlBdHJkbkVnQmtILy93TnhhallDVkNBRVFmQUFhaUFJUVF4c2FpSUdJQW8yQWdnZ0JpQUNOZ0lFSUFZZ0F6WUNBQ0FJUVFGcUlRZ2dBeUFaYWlBQ2FpRVpEQUVMQ3lBSUlCOUlEUU1nRmtFZ2F5RWhJQTRoQndOQUlBUkJPR29RRDBFRFJpQUlJQTlPY2tVRVFDQUVLQUpRSUFRb0FreEJBM1JxS1FJQUlrQ25JZ1pCRUhZaUkwSC9BWEVoQ2lBRUtBSmdJQVFvQWx4QkEzUnFLUUlBSWtHbklnMUJFSFlpSUVIL0FYRWhFeUFFS0FKWUlBUW9BbFJCQTNScUtRSUFJa0pDSUlpbklRTWdRVUlnaUNCQVFpQ0lweUVMQWtBZ1FrSVFpS2NpREVIL0FYRWlBa0VDVHdSQUFrQWdBa0VaU1NBL1FvR0FnQkJVY2tVRVFDQUVRU0FnQkNnQ1BDSU1heUlSSUFJZ0FpQVJTeHNpRUNBTWFqWUNQQ0FESUFRb0FqZ2dESFJCQUNBUWEzWWdBaUFRYXlJTWRHb2hFQ0FFUVRocUVBOGFJQUlnRVUwTkFTQUVJQVFvQWp3aUFpQU1hallDUENBRUtBSTRJQUowUVFBZ0RHdDJJQkJxSVJBTUFRc2dCQ0FDSUFRb0Fqd2lFR28yQWp3Z0JDZ0NPQ0FRZEVFQUlBeHJkaUFEYWlFUUlBUkJPR29RRHhvTElBUXBBbVFoUkNBRUlCQTJBbVFnQkNCRU53Sm9EQUVMQWtBZ0FrVUVRQ0FMQkVBZ0JDZ0NaQ0VRREFNTElBUW9BbWdoRUF3QkN5QUVJQVFvQWp3aUFrRUJhallDUEFKL0lBTWdDMFZxSUFRb0FqZ2dBblJCSDNacUlnSkJBMFlFUUNBRUtBSmtRUUZyREFFTElBSkJBblFnQkdvb0FtUUxJZ05GSUFOcUlSQWdBa0VCUndSQUlBUWdCQ2dDYURZQ2JBc0xJQVFnQkNnQ1pEWUNhQ0FFSUJBMkFtUUxweUVNSUVGQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDUENJQ0lCTnFOZ0k4SUFRb0FqZ2dBblJCQUNBZ2EzWWdER29oREFzZ0NpQVRha0VVVHdSQUlBUkJPR29RRHhvTElFQkNnSUQ4QjROUVJRUkFJQVFnQkNnQ1BDSUNJQXBxTmdJOElBUW9BamdnQW5SQkFDQWphM1lnQzJvaEN3c2dCRUU0YWhBUEdpQUVJQVFvQWpnaUFrRUFJQVpCR0hZaUF5QUVLQUk4YWlJS2EzWWdBMEVDZEVHZ0hXb29BZ0J4SUFaQi8vOERjV28yQWt3Z0JDQUtJQTFCR0hZaUEyb2lCallDUENBRUlBTkJBblJCb0IxcUtBSUFJQUpCQUNBR2EzWnhJQTFCLy84RGNXbzJBbHdnQkVFNGFoQVBHaUFFSUVLbklnSkJHSFlpQXlBRUtBSThhaUlHTmdJOElBUWdBMEVDZEVHZ0hXb29BZ0FnQkNnQ09FRUFJQVpyZG5FZ0FrSC8vd054YWpZQ1ZBSkFBa0FDUUNBRUtBTGNBU0lESUFSQjhBQnFJQWhCQjNGQkRHeHFJaE1vQWdBaUVXb2lJeUFYU3cwQUlBY2dFeWdDQkNJTklCRnFJZ3BxSUNGTERRQWdDa0VnYWlBV0lBZHJUUTBCQ3lBRUlCTW9BZ2cyQWhnZ0JDQVRLUUlBTndNUUlBY2dGaUFFUVJCcUlBUkIzQUZxSUJjZ0VpQVlJQm9RSHlFS0RBRUxJQWNnRVdvaEFpQVRLQUlJSVFZZ0J5QURLUUFBTndBQUlBY2dBeWtBQ0RjQUNBSkFJQkZCRVVrTkFDQUhJQU1wQUJBM0FCQWdCeUFES1FBWU53QVlJQkZCRUd0QkVVZ05BQ0FEUVJCcUlRTWdCMEVnYWlFUkEwQWdFU0FES1FBUU53QUFJQkVnQXlrQUdEY0FDQ0FSSUFNcEFDQTNBQkFnRVNBREtRQW9Od0FZSUFOQklHb2hBeUFSUVNCcUloRWdBa2tOQUFzTElBSWdCbXNoQXlBRUlDTTJBdHdCSUFJZ0Vtc2dCa2tFUUNBR0lBSWdHR3RMRFFjZ0dpQWFJQU1nRW1zaUEyb2lFU0FOYWs4RVFDQUNJQkVnRFJBS0dnd0NDeUFESUExcUlRMGdBaUFSUVFBZ0Eyc1FDaUFEYXlFQ0lCSWhBd3NnQmtFUVR3UkFJQUlnQXlrQUFEY0FBQ0FDSUFNcEFBZzNBQWdnRFVFUlNBMEJJQUlnRFdvaEJpQUNRUkJxSVFJRFFDQUNJQU1wQUJBM0FBQWdBaUFES1FBWU53QUlJQUlnQXlrQUlEY0FFQ0FDSUFNcEFDZzNBQmdnQTBFZ2FpRURJQUpCSUdvaUFpQUdTUTBBQ3d3QkN3SkFJQVpCQjAwRVFDQUNJQU10QUFBNkFBQWdBaUFETFFBQk9nQUJJQUlnQXkwQUFqb0FBaUFDSUFNdEFBTTZBQU1nQWlBRElBWkJBblFpQmtIQUhtb29BZ0JxSWdNb0FBQTJBQVFnQXlBR1FlQWVhaWdDQUdzaEF3d0JDeUFDSUFNcEFBQTNBQUFMSUExQkNVa05BQ0FDSUExcUlSRWdBa0VJYWlJR0lBTkJDR29pQTJ0QkQwd0VRQU5BSUFZZ0F5a0FBRGNBQUNBRFFRaHFJUU1nQmtFSWFpSUdJQkZKRFFBTUFnc0FDeUFHSUFNcEFBQTNBQUFnQmlBREtRQUlOd0FJSUExQkdVZ05BQ0FDUVJocUlRSURRQ0FDSUFNcEFCQTNBQUFnQWlBREtRQVlOd0FJSUFJZ0F5a0FJRGNBRUNBQ0lBTXBBQ2czQUJnZ0EwRWdhaUVESUFKQklHb2lBaUFSU1EwQUN3c2dDa0dJZjBzRVFDQUtJUWtNQmdVZ0V5QVFOZ0lJSUJNZ0REWUNCQ0FUSUFzMkFnQWdDRUVCYWlFSUlBY2dDbW9oQnlBTElCbHFJQXhxSVJrTUFnc0FDd3NnQ0NBUFNBMERJQWdnSDJzaEJnTkFBa0FnQmlBUFRnUkFRUUFoQXdOQUlBTkJBMFlOQWlBRklBTkJBblFpQW1wQnJOQUJhaUFDSUFScUtBSmtOZ0lBSUFOQkFXb2hBd3dBQ3dBTEFrQUNRQUpBSUFRb0F0d0JJZ01nQkVId0FHb2dCa0VIY1VFTWJHb2lDQ2dDQUNJTWFpSVFJQmRMRFFBZ0J5QUlLQUlFSWdzZ0RHb2lDbW9nSVVzTkFDQUtRU0JxSUJZZ0IydE5EUUVMSUFRZ0NDZ0NDRFlDS0NBRUlBZ3BBZ0EzQXlBZ0J5QVdJQVJCSUdvZ0JFSGNBV29nRnlBU0lCZ2dHaEFmSVFvTUFRc2dCeUFNYWlFQ0lBZ29BZ2doQ0NBSElBTXBBQUEzQUFBZ0J5QURLUUFJTndBSUFrQWdERUVSU1EwQUlBY2dBeWtBRURjQUVDQUhJQU1wQUJnM0FCZ2dERUVRYTBFUlNBMEFJQU5CRUdvaEF5QUhRU0JxSVF3RFFDQU1JQU1wQUJBM0FBQWdEQ0FES1FBWU53QUlJQXdnQXlrQUlEY0FFQ0FNSUFNcEFDZzNBQmdnQTBFZ2FpRURJQXhCSUdvaURDQUNTUTBBQ3dzZ0FpQUlheUVESUFRZ0VEWUMzQUVnQWlBU2F5QUlTUVJBSUFnZ0FpQVlhMHNOQnlBYUlCb2dBeUFTYXlJRGFpSU1JQXRxVHdSQUlBSWdEQ0FMRUFvYURBSUxJQU1nQzJvaEN5QUNJQXhCQUNBRGF4QUtJQU5ySVFJZ0VpRURDeUFJUVJCUEJFQWdBaUFES1FBQU53QUFJQUlnQXlrQUNEY0FDQ0FMUVJGSURRRWdBaUFMYWlFSUlBSkJFR29oQWdOQUlBSWdBeWtBRURjQUFDQUNJQU1wQUJnM0FBZ2dBaUFES1FBZ053QVFJQUlnQXlrQUtEY0FHQ0FEUVNCcUlRTWdBa0VnYWlJQ0lBaEpEUUFMREFFTEFrQWdDRUVIVFFSQUlBSWdBeTBBQURvQUFDQUNJQU10QUFFNkFBRWdBaUFETFFBQ09nQUNJQUlnQXkwQUF6b0FBeUFDSUFNZ0NFRUNkQ0lJUWNBZWFpZ0NBR29pQXlnQUFEWUFCQ0FESUFoQjRCNXFLQUlBYXlFRERBRUxJQUlnQXlrQUFEY0FBQXNnQzBFSlNRMEFJQUlnQzJvaERDQUNRUWhxSWdnZ0EwRUlhaUlEYTBFUFRBUkFBMEFnQ0NBREtRQUFOd0FBSUFOQkNHb2hBeUFJUVFocUlnZ2dERWtOQUF3Q0N3QUxJQWdnQXlrQUFEY0FBQ0FJSUFNcEFBZzNBQWdnQzBFWlNBMEFJQUpCR0dvaEFnTkFJQUlnQXlrQUVEY0FBQ0FDSUFNcEFCZzNBQWdnQWlBREtRQWdOd0FRSUFJZ0F5a0FLRGNBR0NBRFFTQnFJUU1nQWtFZ2FpSUNJQXhKRFFBTEN5QUtRWWgvU3dSQUlBb2hDUXdHQlNBR1FRRnFJUVlnQnlBS2FpRUhEQUlMQUFzTElBUW9BdHdCSVFNTFFicC9JUWtnRnlBRGF5SUNJQllnQjJ0TERRSWdCd1IvSUFjZ0F5QUNFQUlnQW1vRlFRQUxJQTVySVFrTUFnc2dCVUVBTmdLYzZ3RUxJQVFnQlNnQzhPb0JJZ00yQXR3QklBa2dEbW9oRENBRElBVW9Bb0RyQVdvaEVBSkFJQTlGQkVBZ0RpRUdEQUVMSUFVb0FyanBBU0VOSUFVb0FyVHBBU0VUSUFVb0FyRHBBU0VTSUFWQkFUWUNoT29CUVFBaEF3TkFJQU5CQTBjRVFDQUVJQU5CQW5RaUFtb2dBaUFGYWtHczBBRnFLQUlBTmdLY0FTQURRUUZxSVFNTUFRc0xRV3doQ1NBRVFmQUFhaUlDSUFjZ0JoQU5RWWgvU3cwQklERWdBaUFGS0FJQUVCNGdNQ0FDSUFVb0FnZ1FIaUF2SUFJZ0JTZ0NCQkFlSUF4QklHc2hHQ0FPSVFZRFFDQUVLQUtJQVNBRUtBS0VBVUVEZEdvcEFnQWlRS2NpQ2tFUWRpSVpRZjhCY1NFTElBUW9BcGdCSUFRb0FwUUJRUU4wYWlrQ0FDSkJweUlXUVJCMkloOUIvd0Z4SVJvZ0JDZ0NrQUVnQkNnQ2pBRkJBM1JxS1FJQUlrSkNJSWluSVFjZ1FVSWdpQ0JBUWlDSXB5RURBa0FnUWtJUWlLY2lDRUgvQVhFaUFrRUNUd1JBQWtBZ0FrRVpTU0EvUW9HQWdCQlVja1VFUUNBRVFTQWdCQ2dDZENJSWF5SVJJQUlnQWlBUlN4c2lGeUFJYWpZQ2RDQUhJQVFvQW5BZ0NIUkJBQ0FYYTNZZ0FpQVhheUlYZEdvaENDQUVRZkFBYWhBUEdpQUNJQkZORFFFZ0JDQUVLQUowSWdJZ0YybzJBblFnQkNnQ2NDQUNkRUVBSUJkcmRpQUlhaUVJREFFTElBUWdBaUFFS0FKMEloRnFOZ0owSUFRb0FuQWdFWFJCQUNBSWEzWWdCMm9oQ0NBRVFmQUFhaEFQR2dzZ0JDa0NuQUVoUkNBRUlBZzJBcHdCSUFRZ1JEY0NvQUVNQVFzQ1FDQUNSUVJBSUFNRVFDQUVLQUtjQVNFSURBTUxJQVFvQXFBQklRZ01BUXNnQkNBRUtBSjBJZ0pCQVdvMkFuUUNmeUFISUFORmFpQUVLQUp3SUFKMFFSOTJhaUlDUVFOR0JFQWdCQ2dDbkFGQkFXc01BUXNnQWtFQ2RDQUVhaWdDbkFFTElnZEZJQWRxSVFnZ0FrRUJSd1JBSUFRZ0JDZ0NvQUUyQXFRQkN3c2dCQ0FFS0FLY0FUWUNvQUVnQkNBSU5nS2NBUXVuSVFJZ1FVS0FnUHdIZzFCRkJFQWdCQ0FFS0FKMElnY2dHbW8yQW5RZ0JDZ0NjQ0FIZEVFQUlCOXJkaUFDYWlFQ0N5QUxJQnBxUVJSUEJFQWdCRUh3QUdvUUR4b0xJRUJDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NkQ0lISUF0cU5nSjBJQVFvQW5BZ0IzUkJBQ0FaYTNZZ0Eyb2hBd3NnQkVId0FHb1FEeG9nQkNBRUtBSndJZ2RCQUNBS1FSaDJJZ3NnQkNnQ2RHb2lHbXQySUF0QkFuUkJvQjFxS0FJQWNTQUtRZi8vQTNGcU5nS0VBU0FFSUJvZ0ZrRVlkaUlLYWlJTE5nSjBJQVFnQ2tFQ2RFR2dIV29vQWdBZ0IwRUFJQXRyZG5FZ0ZrSC8vd054YWpZQ2xBRWdCRUh3QUdvUUR4b2dCQ0JDcHlJSFFSaDJJZ29nQkNnQ2RHb2lDellDZENBRUlBcEJBblJCb0IxcUtBSUFJQVFvQW5CQkFDQUxhM1p4SUFkQi8vOERjV28yQW93QklBUWdBellDT0NBRUlBSTJBandnQkNBSU5nSkFBa0FDUUFKQUlBUW9BdHdCSWdzZ0Eyb2lGaUFRU3cwQUlBWWdBaUFEYWlJS2FpQVlTdzBBSUFwQklHb2dEQ0FHYTAwTkFRc2dCQ0FFUVVCcktBSUFOZ0lJSUFRZ0JDa0RPRGNEQUNBR0lBd2dCQ0FFUWR3QmFpQVFJQklnRXlBTkVCOGhDZ3dCQ3lBRElBWnFJUWNnQmlBTEtRQUFOd0FBSUFZZ0N5a0FDRGNBQ0FKQUlBTkJFVWtOQUNBR0lBc3BBQkEzQUJBZ0JpQUxLUUFZTndBWUlBTkJFR3RCRVVnTkFDQUxRUkJxSVFNZ0JrRWdhaUVMQTBBZ0N5QURLUUFRTndBQUlBc2dBeWtBR0RjQUNDQUxJQU1wQUNBM0FCQWdDeUFES1FBb053QVlJQU5CSUdvaEF5QUxRU0JxSWdzZ0Iwa05BQXNMSUFjZ0NHc2hBeUFFSUJZMkF0d0JJQWNnRW1zZ0NFa0VRQ0FJSUFjZ0UydExEUVFnRFNBTklBTWdFbXNpQTJvaUN5QUNhazhFUUNBSElBc2dBaEFLR2d3Q0N5QUhJQXRCQUNBRGF4QUtJQVFnQWlBRGFpSUNOZ0k4SUFOcklRY2dFaUVEQ3lBSVFSQlBCRUFnQnlBREtRQUFOd0FBSUFjZ0F5a0FDRGNBQ0NBQ1FSRklEUUVnQWlBSGFpRUlJQWRCRUdvaEFnTkFJQUlnQXlrQUVEY0FBQ0FDSUFNcEFCZzNBQWdnQWlBREtRQWdOd0FRSUFJZ0F5a0FLRGNBR0NBRFFTQnFJUU1nQWtFZ2FpSUNJQWhKRFFBTERBRUxBa0FnQ0VFSFRRUkFJQWNnQXkwQUFEb0FBQ0FISUFNdEFBRTZBQUVnQnlBRExRQUNPZ0FDSUFjZ0F5MEFBem9BQXlBSElBTWdDRUVDZENJSVFjQWVhaWdDQUdvaUF5Z0FBRFlBQkNBRElBaEI0QjVxS0FJQWF5RUREQUVMSUFjZ0F5a0FBRGNBQUFzZ0FrRUpTUTBBSUFJZ0Iyb2hDeUFIUVFocUlnZ2dBMEVJYWlJRGEwRVBUQVJBQTBBZ0NDQURLUUFBTndBQUlBTkJDR29oQXlBSVFRaHFJZ2dnQzBrTkFBd0NDd0FMSUFnZ0F5a0FBRGNBQUNBSUlBTXBBQWczQUFnZ0FrRVpTQTBBSUFkQkdHb2hBZ05BSUFJZ0F5a0FFRGNBQUNBQ0lBTXBBQmczQUFnZ0FpQURLUUFnTndBUUlBSWdBeWtBS0RjQUdDQURRU0JxSVFNZ0FrRWdhaUlDSUF0SkRRQUxDeUFLUVloL1N3UkFJQW9oQ1F3REN5QUdJQXBxSVFZZ0JFSHdBR29RRHlFRElBOUJBV3NpRHcwQUMwRUFJUUlnQTBFQ1NRMEJBMEFnQWtFRFJ3UkFJQVVnQWtFQ2RDSURha0dzMEFGcUlBTWdCR29vQXB3Qk5nSUFJQUpCQVdvaEFnd0JDd3NnQkNnQzNBRWhBd3RCdW44aENTQVFJQU5ySWdJZ0RDQUdhMHNOQUNBR0JIOGdCaUFESUFJUUFpQUNhZ1ZCQUFzZ0Rtc2hDUXNnQ1VHSWYwc05CZ3NDUUNBRktBTHM2Z0ZGRFFBZ0JTQUZLUU9JNmdFZ0NhMThOd09JNmdFQ1FDQUZLQUxRNmdFaUFpQUphaUlJUVI5TkJFQWdEa1VOQVNBQ0lDSnFJQTRnQ1JBQ0dpQUZLQUxRNmdFZ0NXb2hDQXdCQ3lBT0lRTWdBZ1JBSUFJZ0ltb2dBMEVnSUFKckVBSWFJQVVvQXREcUFTRUNJQVZCQURZQzBPb0JJQVVnQlNrRGtPb0JJQVVwQUxEcUFVTFAxdE8rMHNlcjJVSitmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZqY0RrT29CSUFVZ0JTa0RtT29CSUFVcEFManFBVUxQMXRPKzBzZXIyVUorZkVJZmlVS0hsYSt2bUxiZW01NS9mamNEbU9vQklBVWdCU2tEb09vQklBVXBBTURxQVVMUDF0Tyswc2VyMlVKK2ZFSWZpVUtIbGErdm1MYmVtNTUvZmpjRG9Pb0JJQVVnQlNrRHFPb0JJQVVwQU1qcUFVTFAxdE8rMHNlcjJVSitmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZqY0RxT29CSUFNZ0FtdEJJR29oQXdzZ0NTQU9haUlDSUFOQklHcFBCRUFnQWtFZ2F5RUdJQVVwQTZqcUFTRS9JQVVwQTZEcUFTRkFJQVVwQTVqcUFTRkJJQVVwQTVEcUFTRkNBMEFnQXlrQUdFTFAxdE8rMHNlcjJVSitJRDk4UWgrSlFvZVZyNitZdHQ2Ym5uOStJVDhnQXlrQUVFTFAxdE8rMHNlcjJVSitJRUI4UWgrSlFvZVZyNitZdHQ2Ym5uOStJVUFnQXlrQUNFTFAxdE8rMHNlcjJVSitJRUY4UWgrSlFvZVZyNitZdHQ2Ym5uOStJVUVnQXlrQUFFTFAxdE8rMHNlcjJVSitJRUo4UWgrSlFvZVZyNitZdHQ2Ym5uOStJVUlnQTBFZ2FpSURJQVpORFFBTElBVWdQemNEcU9vQklBVWdRRGNEb09vQklBVWdRVGNEbU9vQklBVWdRamNEa09vQkN5QUNJQU5ORFFFZ0lpQURJQUlnQTJzaUNCQUNHZ3NnQlNBSU5nTFE2Z0VMSURVZ0ZXc2hBeUFWSUJ0cUlRSWdDU0FPYWlFT0lBUW9BakJGRFFBTElDa3BBd0FpUDBKL1VTQS9JQTRnSFd1c1VYSkZCRUJCYkNFSkRBWUxJQVVvQXVEcEFRUkFRV29oQ1NBRFFRUkpEUVlnQlNnQzZPb0JSUVJBSUNJZ0JTZ0MwT29CYWlFS0FuNGdCU2tEaU9vQklqOUNJRm9FUUNBRktRT1k2Z0VpUUVJSGlTQUZLUU9RNmdFaVFVSUJpWHdnQlNrRG9Pb0JJa0pDRElsOElBVXBBNmpxQVNKRFFoS0pmQ0JCUXMvVzA3N1N4NnZaUW41Q0g0bENoNVd2cjVpMjNwdWVmMzZGUW9lVnI2K1l0dDZibm45K1FwMmp0ZXFEc1kySytnQjlJRUJDejliVHZ0TEhxOWxDZmtJZmlVS0hsYSt2bUxiZW01NS9mb1ZDaDVXdnI1aTIzcHVlZjM1Q25hTzE2b094allyNkFIMGdRa0xQMXRPKzBzZXIyVUorUWgrSlFvZVZyNitZdHQ2Ym5uOStoVUtIbGErdm1MYmVtNTUvZmtLZG83WHFnN0dOaXZvQWZTQkRRcy9XMDc3U3g2dlpRbjVDSDRsQ2g1V3ZyNWkyM3B1ZWYzNkZRb2VWcjYrWXR0NmJubjkrUXAyanRlcURzWTJLK2dCOURBRUxJQVVwQTZEcUFVTEZ6OW15OGVXNjZpZDhDeUEvZkNFL0lDSWhCZ05BSUFvZ0JrRUlhaUlIVHdSQUlBWXBBQUJDejliVHZ0TEhxOWxDZmtJZmlVS0hsYSt2bUxiZW01NS9maUEvaFVJYmlVS0hsYSt2bUxiZW01NS9ma0tkbzdYcWc3R05pdm9BZlNFL0lBY2hCZ3dCQ3dzQ1FDQUtJQVpCQkdvaUNFa0VRQ0FHSVFnTUFRc2dCalVBQUVLSGxhK3ZtTGJlbTU1L2ZpQS9oVUlYaVVMUDF0Tyswc2VyMlVKK1F2bnozZkdaOXBtckZud2hQd3NEUUNBSUlBcEpCRUFnQ0RFQUFFTEZ6OW15OGVXNjZpZCtJRCtGUWd1SlFvZVZyNitZdHQ2Ym5uOStJVDhnQ0VFQmFpRUlEQUVMQ3lBQ0tBQUFJRDlDSVlnZ1A0VkN6OWJUdnRMSHE5bENmaUkvUWgySUlEK0ZRdm56M2ZHWjlwbXJGbjRpUDBJZ2lDQS9oYWRIRFFjTElBTkJCR3NoQXlBQ1FRUnFJUUlMSUE0Z0hXc2lDVUdKZjA4TkJDQUJJQWxySVFFZ0NTQWRhaUVkUVFFaFBnd0JDd3RCdUg4aEJ5QUREUVFnSFNBQWF5RUhEQVFMUVd3aENRd0JDMEc0ZnlFSkMwRzRmeUVISUFsQmRrWWdQbkVOQVFzZ0NTRUhDeWdDQUEwQUlBVkIvT29CYWlnQ0FDRUJJQVZCK09vQmFpZ0NBQ0VBSUFVUUdDQUZLQUt3NndFZ0FDQUJFQk1nQlVFQU5nS3c2d0VnQlNnQ3BPc0JJZ0lFUUFKQUFrQUNRQUpBSUFJb0FnQWlBd1JBSUFCRkRRSWdBU0FESUFBUkFnQU1BUXNnQUVVTkFnc2dBU0FDSUFBUkFnQU1BZ3NnQXhBR0N5QUNFQVlMSUFWQkFEWUNwT3NCQ3lBQUJFQWdBU0FGSUFBUkFnQU1BUXNnQlJBR0N5QUVRZUFCYWlRQUlBY0xDNmdWQ1FCQmlBZ0xEUUVBQUFBQkFBQUFBZ0FBQUFJQVFhQUlDN01HQVFBQUFBRUFBQUFDQUFBQUFnQUFBQ1lBQUFDQ0FBQUFJUVVBQUVvQUFBQm5DQUFBSmdBQUFNQUJBQUNBQUFBQVNRVUFBRW9BQUFDK0NBQUFLUUFBQUN3Q0FBQ0FBQUFBU1FVQUFFb0FBQUMrQ0FBQUx3QUFBTW9DQUFDQUFBQUFpZ1VBQUVvQUFBQ0VDUUFBTlFBQUFITURBQUNBQUFBQW5RVUFBRW9BQUFDZ0NRQUFQUUFBQUlFREFBQ0FBQUFBNndVQUFFc0FBQUErQ2dBQVJBQUFBSjREQUFDQUFBQUFUUVlBQUVzQUFBQ3FDZ0FBU3dBQUFMTURBQUNBQUFBQXdRWUFBRTBBQUFBZkRRQUFUUUFBQUZNRUFBQ0FBQUFBSXdnQUFGRUFBQUNtRHdBQVZBQUFBSmtFQUFDQUFBQUFTd2tBQUZjQUFBQ3hFZ0FBV0FBQUFOb0VBQUNBQUFBQWJ3a0FBRjBBQUFBakZBQUFWQUFBQUVVRkFBQ0FBQUFBVkFvQUFHb0FBQUNNRkFBQWFnQUFBSzhGQUFDQUFBQUFkZ2tBQUh3QUFBQk9FQUFBZkFBQUFOSUNBQUNBQUFBQVl3Y0FBSkVBQUFDUUJ3QUFrZ0FBQUFBQUFBQUJBQUFBQVFBQUFBVUFBQUFOQUFBQUhRQUFBRDBBQUFCOUFBQUEvUUFBQVAwQkFBRDlBd0FBL1FjQUFQMFBBQUQ5SHdBQS9UOEFBUDEvQUFEOS93QUEvZjhCQVAzL0F3RDkvd2NBL2Y4UEFQMy9Id0Q5L3o4QS9mOS9BUDMvL3dEOS8vOEIvZi8vQS8zLy93ZjkvLzhQL2YvL0gvMy8vei85Ly85L0FBQUFBQUVBQUFBQ0FBQUFBd0FBQUFRQUFBQUZBQUFBQmdBQUFBY0FBQUFJQUFBQUNRQUFBQW9BQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBRHdBQUFCQUFBQUFSQUFBQUVnQUFBQk1BQUFBVUFBQUFGUUFBQUJZQUFBQVhBQUFBR0FBQUFCa0FBQUFhQUFBQUd3QUFBQndBQUFBZEFBQUFIZ0FBQUI4QUFBQURBQUFBQkFBQUFBVUFBQUFHQUFBQUJ3QUFBQWdBQUFBSkFBQUFDZ0FBQUFzQUFBQU1BQUFBRFFBQUFBNEFBQUFQQUFBQUVBQUFBQkVBQUFBU0FBQUFFd0FBQUJRQUFBQVZBQUFBRmdBQUFCY0FBQUFZQUFBQUdRQUFBQm9BQUFBYkFBQUFIQUFBQUIwQUFBQWVBQUFBSHdBQUFDQUFBQUFoQUFBQUlnQUFBQ01BQUFBbEFBQUFKd0FBQUNrQUFBQXJBQUFBTHdBQUFETUFBQUE3QUFBQVF3QUFBRk1BQUFCakFBQUFnd0FBQUFNQkFBQURBZ0FBQXdRQUFBTUlBQUFERUFBQUF5QUFBQU5BQUFBRGdBQUFBd0FCQUVIZ0R3dFJBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFDQUFBQUF3QUFBQU1BQUFBRUFBQUFCQUFBQUFVQUFBQUhBQUFBQ0FBQUFBa0FBQUFLQUFBQUN3QUFBQXdBQUFBTkFBQUFEZ0FBQUE4QUFBQVFBRUhFRUF1TEFRRUFBQUFDQUFBQUF3QUFBQVFBQUFBRkFBQUFCZ0FBQUFjQUFBQUlBQUFBQ1FBQUFBb0FBQUFMQUFBQURBQUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQVNBQUFBRkFBQUFCWUFBQUFZQUFBQUhBQUFBQ0FBQUFBb0FBQUFNQUFBQUVBQUFBQ0FBQUFBQUFFQUFBQUNBQUFBQkFBQUFBZ0FBQUFRQUFBQUlBQUFBRUFBQUFDQUFBQUFBQUVBUVpBU0MrWUVBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFDQUFBQUF3QUFBQU1BQUFBRUFBQUFCZ0FBQUFjQUFBQUlBQUFBQ1FBQUFBb0FBQUFMQUFBQURBQUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQUJBQUFBQkFBQUFBZ0FBQUFBQUFBQUFRQUJBUVlBQUFBQUFBQUVBQUFBQUJBQUFBUUFBQUFBSUFBQUJRRUFBQUFBQUFBRkF3QUFBQUFBQUFVRUFBQUFBQUFBQlFZQUFBQUFBQUFGQndBQUFBQUFBQVVKQUFBQUFBQUFCUW9BQUFBQUFBQUZEQUFBQUFBQUFBWU9BQUFBQUFBQkJSQUFBQUFBQUFFRkZBQUFBQUFBQVFVV0FBQUFBQUFDQlJ3QUFBQUFBQU1GSUFBQUFBQUFCQVV3QUFBQUlBQUdCVUFBQUFBQUFBY0ZnQUFBQUFBQUNBWUFBUUFBQUFBS0JnQUVBQUFBQUF3R0FCQUFBQ0FBQUFRQUFBQUFBQUFBQkFFQUFBQUFBQUFGQWdBQUFDQUFBQVVFQUFBQUFBQUFCUVVBQUFBZ0FBQUZCd0FBQUFBQUFBVUlBQUFBSUFBQUJRb0FBQUFBQUFBRkN3QUFBQUFBQUFZTkFBQUFJQUFCQlJBQUFBQUFBQUVGRWdBQUFDQUFBUVVXQUFBQUFBQUNCUmdBQUFBZ0FBTUZJQUFBQUFBQUF3VW9BQUFBQUFBR0JFQUFBQUFRQUFZRVFBQUFBQ0FBQndXQUFBQUFBQUFKQmdBQ0FBQUFBQXNHQUFnQUFEQUFBQVFBQUFBQUVBQUFCQUVBQUFBZ0FBQUZBZ0FBQUNBQUFBVURBQUFBSUFBQUJRVUFBQUFnQUFBRkJnQUFBQ0FBQUFVSUFBQUFJQUFBQlFrQUFBQWdBQUFGQ3dBQUFDQUFBQVVNQUFBQUFBQUFCZzhBQUFBZ0FBRUZFZ0FBQUNBQUFRVVVBQUFBSUFBQ0JSZ0FBQUFnQUFJRkhBQUFBQ0FBQXdVb0FBQUFJQUFFQlRBQUFBQUFBQkFHQUFBQkFBQUFEd1lBZ0FBQUFBQU9CZ0JBQUFBQUFBMEdBQ0FBUVlBWEM0Y0NBUUFCQVFVQUFBQUFBQUFGQUFBQUFBQUFCZ1E5QUFBQUFBQUpCZjBCQUFBQUFBOEYvWDhBQUFBQUZRWDkveDhBQUFBREJRVUFBQUFBQUFjRWZRQUFBQUFBREFYOUR3QUFBQUFTQmYzL0F3QUFBQmNGL2Y5L0FBQUFCUVVkQUFBQUFBQUlCUDBBQUFBQUFBNEYvVDhBQUFBQUZBWDkvdzhBQUFBQ0JRRUFBQUFRQUFjRWZRQUFBQUFBQ3dYOUJ3QUFBQUFSQmYzL0FRQUFBQllGL2Y4L0FBQUFCQVVOQUFBQUVBQUlCUDBBQUFBQUFBMEYvUjhBQUFBQUV3WDkvd2NBQUFBQkJRRUFBQUFRQUFZRVBRQUFBQUFBQ2dYOUF3QUFBQUFRQmYzL0FBQUFBQndGL2YvL0R3QUFHd1g5Ly84SEFBQWFCZjMvL3dNQUFCa0YvZi8vQVFBQUdBWDkvLzhBUVpBWkM0WUVBUUFCQVFZQUFBQUFBQUFHQXdBQUFBQUFBQVFFQUFBQUlBQUFCUVVBQUFBQUFBQUZCZ0FBQUFBQUFBVUlBQUFBQUFBQUJRa0FBQUFBQUFBRkN3QUFBQUFBQUFZTkFBQUFBQUFBQmhBQUFBQUFBQUFHRXdBQUFBQUFBQVlXQUFBQUFBQUFCaGtBQUFBQUFBQUdIQUFBQUFBQUFBWWZBQUFBQUFBQUJpSUFBQUFBQUFFR0pRQUFBQUFBQVFZcEFBQUFBQUFDQmk4QUFBQUFBQU1HT3dBQUFBQUFCQVpUQUFBQUFBQUhCb01BQUFBQUFBa0dBd0lBQUJBQUFBUUVBQUFBQUFBQUJBVUFBQUFnQUFBRkJnQUFBQUFBQUFVSEFBQUFJQUFBQlFrQUFBQUFBQUFGQ2dBQUFBQUFBQVlNQUFBQUFBQUFCZzhBQUFBQUFBQUdFZ0FBQUFBQUFBWVZBQUFBQUFBQUJoZ0FBQUFBQUFBR0d3QUFBQUFBQUFZZUFBQUFBQUFBQmlFQUFBQUFBQUVHSXdBQUFBQUFBUVluQUFBQUFBQUNCaXNBQUFBQUFBTUdNd0FBQUFBQUJBWkRBQUFBQUFBRkJtTUFBQUFBQUFnR0F3RUFBQ0FBQUFRRUFBQUFNQUFBQkFRQUFBQVFBQUFFQlFBQUFDQUFBQVVIQUFBQUlBQUFCUWdBQUFBZ0FBQUZDZ0FBQUNBQUFBVUxBQUFBQUFBQUJnNEFBQUFBQUFBR0VRQUFBQUFBQUFZVUFBQUFBQUFBQmhjQUFBQUFBQUFHR2dBQUFBQUFBQVlkQUFBQUFBQUFCaUFBQUFBQUFCQUdBd0FCQUFBQUR3WURnQUFBQUFBT0JnTkFBQUFBQUEwR0F5QUFBQUFBREFZREVBQUFBQUFMQmdNSUFBQUFBQW9HQXdRQVFhUWRDOWtCQVFBQUFBTUFBQUFIQUFBQUR3QUFBQjhBQUFBL0FBQUFmd0FBQVA4QUFBRC9BUUFBL3dNQUFQOEhBQUQvRHdBQS94OEFBUDgvQUFEL2Z3QUEvLzhBQVAvL0FRRC8vd01BLy84SEFQLy9Ed0QvL3g4QS8vOC9BUC8vZndELy8vOEEvLy8vQWYvLy93UC8vLzhILy8vL0QvLy8veC8vLy84Ly8vLy9md0FBQUFBQkFBQUFBZ0FBQUFRQUFBQUFBQUFBQWdBQUFBUUFBQUFJQUFBQUFBQUFBQUVBQUFBQ0FBQUFBUUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQWdBQUFBSEFBQUFDQUFBQUFrQUFBQUtBQUFBQ3dCQmdCOExBNEFSQVE9PSI7dmFyIE9JPW5ldyB5QSxUST0hMTthc3luYyBmdW5jdGlvbiBjZShBLEksdCl7bGV0IGU9bnVsbDt0eXBlb2YgQSE9InN0cmluZyI/ZT1BLmhyZWY6QS5zdGFydHNXaXRoKCJodHRwIik/ZT1BOmU9YCR7SX0vJHtBfWAsZS5lbmRzV2l0aCgiLmpzIikmJihlPWUuc3Vic3RyaW5nKDAsZS5sZW5ndGgtMykpLGUuZW5kc1dpdGgoIi53YXNtIikmJihlPWUuc3Vic3RyaW5nKDAsZS5sZW5ndGgtNSkpO2xldCBnPWAke2V9Lndhc21gLHI9YXdhaXQgZEEuZ2V0KGAke2d9LnpzdGAse3Jlc3BvbnNlVHlwZToiYXJyYXlidWZmZXIiLHBhcmFtczp0fSk7VEl8fChhd2FpdCBPSS5pbml0KCksVEk9ITApO2xldCBzPU9JLmRlY29kZShuZXcgVWludDhBcnJheShyLmRhdGEpKS5idWZmZXI7cmV0dXJuKGF3YWl0IGltcG9ydChgJHtlfS5qc2ApKS5kZWZhdWx0KHt3YXNtQmluYXJ5OnN9KX12YXIgeEk9Y2U7dmFyIHdBPW5ldyBNYXA7YXN5bmMgZnVuY3Rpb24gZmUoQSxJLHQpe2xldCBlPUEsZz1BLHI9bnVsbDtyZXR1cm4gdHlwZW9mIEEhPSJzdHJpbmciJiYoZT1uZXcgVVJMKEEuaHJlZiksZz1lLmhyZWYpLHdBLmhhcyhnKT9yPWF3YWl0IHdBLmdldChnKTood0Euc2V0KGcseEkoZSxJLHQpKSxyPWF3YWl0IHdBLmdldChnKSkscn12YXIgUEk9ZmU7dmFyIGxlPXtUZXh0RmlsZToiVGV4dEZpbGUiLEJpbmFyeUZpbGU6IkJpbmFyeUZpbGUiLFRleHRTdHJlYW06IlRleHRTdHJlYW0iLEJpbmFyeVN0cmVhbToiQmluYXJ5U3RyZWFtIixJbWFnZToiSW1hZ2UiLE1lc2g6Ik1lc2giLFBvbHlEYXRhOiJQb2x5RGF0YSIsSnNvbkNvbXBhdGlibGU6Ikpzb25Db21wYXRpYmxlIn0sRD1sZTt2YXIgRGU9e0ludDg6ImludDgiLFVJbnQ4OiJ1aW50OCIsSW50MTY6ImludDE2IixVSW50MTY6InVpbnQxNiIsSW50MzI6ImludDMyIixVSW50MzI6InVpbnQzMiIsSW50NjQ6ImludDY0IixVSW50NjQ6InVpbnQ2NCIsU2l6ZVZhbHVlVHlwZToidWludDY0IixJZGVudGlmaWVyVHlwZToidWludDY0IixJbmRleFZhbHVlVHlwZToiaW50NjQiLE9mZnNldFZhbHVlVHlwZToiaW50NjQifSxwPURlO3ZhciB1ZT17RmxvYXQzMjoiZmxvYXQzMiIsRmxvYXQ2NDoiZmxvYXQ2NCIsU3BhY2VQcmVjaXNpb25UeXBlOiJmbG9hdDY0In0sUD11ZTtmdW5jdGlvbiBoZShBLEkpe2xldCB0PW51bGw7c3dpdGNoKEEpe2Nhc2UgcC5VSW50ODp7dD1uZXcgVWludDhBcnJheShJKTticmVha31jYXNlIHAuSW50ODp7dD1uZXcgSW50OEFycmF5KEkpO2JyZWFrfWNhc2UgcC5VSW50MTY6e3Q9bmV3IFVpbnQxNkFycmF5KEkpO2JyZWFrfWNhc2UgcC5JbnQxNjp7dD1uZXcgSW50MTZBcnJheShJKTticmVha31jYXNlIHAuVUludDMyOnt0PW5ldyBVaW50MzJBcnJheShJKTticmVha31jYXNlIHAuSW50MzI6e3Q9bmV3IEludDMyQXJyYXkoSSk7YnJlYWt9Y2FzZSBwLlVJbnQ2NDp7dHlwZW9mIGdsb2JhbFRoaXMuQmlnVWludDY0QXJyYXk9PSJmdW5jdGlvbiI/dD1uZXcgQmlnVWludDY0QXJyYXkoSSk6dD1uZXcgVWludDhBcnJheShJKTticmVha31jYXNlIHAuSW50NjQ6e3R5cGVvZiBnbG9iYWxUaGlzLkJpZ0ludDY0QXJyYXk9PSJmdW5jdGlvbiI/dD1uZXcgQmlnSW50NjRBcnJheShJKTp0PW5ldyBVaW50OEFycmF5KEkpO2JyZWFrfWNhc2UgUC5GbG9hdDMyOnt0PW5ldyBGbG9hdDMyQXJyYXkoSSk7YnJlYWt9Y2FzZSBQLkZsb2F0NjQ6e3Q9bmV3IEZsb2F0NjRBcnJheShJKTticmVha31jYXNlIm51bGwiOnt0PW51bGw7YnJlYWt9Y2FzZSBudWxsOnt0PW51bGw7YnJlYWt9ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlR5cGUgaXMgbm90IHN1cHBvcnRlZCBhcyBhIFR5cGVkQXJyYXkiKX1yZXR1cm4gdH12YXIgWT1oZTt2YXIgWkk9dHlwZW9mIGdsb2JhbFRoaXMuU2hhcmVkQXJyYXlCdWZmZXI9PSJmdW5jdGlvbiIsakk9bmV3IFRleHRFbmNvZGVyLFdJPW5ldyBUZXh0RGVjb2RlcigidXRmLTgiKTtmdW5jdGlvbiBkZShBLEkpe2xldCB0PXtmbGFnczoiciIsZW5jb2Rpbmc6ImJpbmFyeSJ9LGU9QS5mc19vcGVuKEksdC5mbGFncykscj1BLmZzX3N0YXQoSSkuc2l6ZSxpPW51bGw7Wkk/aT1uZXcgU2hhcmVkQXJyYXlCdWZmZXIocik6aT1uZXcgQXJyYXlCdWZmZXIocik7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoaSk7cmV0dXJuIEEuZnNfcmVhZChlLHMsMCxyLDApLEEuZnNfY2xvc2UoZSksc31mdW5jdGlvbiBWSShBLEksdCl7bGV0IGU9bnVsbDtaST9lPW5ldyBTaGFyZWRBcnJheUJ1ZmZlcih0KTplPW5ldyBBcnJheUJ1ZmZlcih0KTtsZXQgZz1uZXcgVWludDhBcnJheShlKSxyPW5ldyBVaW50OEFycmF5KEEuSEVBUFU4LmJ1ZmZlcixJLHQpO3JldHVybiBnLnNldChyKSxnfWZ1bmN0aW9uIHkoQSxJLHQsZSl7bGV0IGc9MDtyZXR1cm4gSSE9PW51bGwmJihnPUEuY2NhbGwoIml0a193YXNtX2lucHV0X2FycmF5X2FsbG9jIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHQsZSxJLmJ1ZmZlci5ieXRlTGVuZ3RoXSksQS5IRUFQVTguc2V0KG5ldyBVaW50OEFycmF5KEkuYnVmZmVyKSxnKSksZ31mdW5jdGlvbiBqKEEsSSx0KXtsZXQgZT1KU09OLnN0cmluZ2lmeShJKSxnPUEuY2NhbGwoIml0a193YXNtX2lucHV0X2pzb25fYWxsb2MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsdCxlLmxlbmd0aF0pO0Eud3JpdGVBc2NpaVRvTWVtb3J5KGUsZywhMSl9ZnVuY3Rpb24gUyhBLEksdCxlKXtsZXQgZz1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxJLHRdKSxyPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEksdF0pLGk9VkkoQSxnLHIpO3JldHVybiBZKGUsaS5idWZmZXIpfWZ1bmN0aW9uIHpBKEEsSSl7bGV0IHQ9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2pzb25fYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiXSxbMCxJXSksZT1BLkFzY2lpVG9TdHJpbmcodCk7cmV0dXJuIEpTT04ucGFyc2UoZSl9ZnVuY3Rpb24geWUoQSxJLHQsZSl7ZSE9bnVsbCYmZS5sZW5ndGg+MCYmZS5mb3JFYWNoKGZ1bmN0aW9uKG4sQyl7c3dpdGNoKG4udHlwZSl7Y2FzZSBELlRleHRTdHJlYW06e2xldCBvPWpJLmVuY29kZShuLmRhdGEuZGF0YSksZj15KEEsbyxDLDApLFE9e3NpemU6by5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gfTtqKEEsUSxDKTticmVha31jYXNlIEQuSnNvbkNvbXBhdGlibGU6e2xldCBvPWpJLmVuY29kZShKU09OLnN0cmluZ2lmeShuLmRhdGEpKSxmPXkoQSxvLEMsMCksUT17c2l6ZTpvLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWB9O2ooQSxRLEMpO2JyZWFrfWNhc2UgRC5CaW5hcnlTdHJlYW06e2xldCBvPW4uZGF0YS5kYXRhLGY9eShBLG8sQywwKSxRPXtzaXplOm8uYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YH07aihBLFEsQyk7YnJlYWt9Y2FzZSBELlRleHRGaWxlOntBLmZzX3dyaXRlRmlsZShuLmRhdGEucGF0aCxuLmRhdGEuZGF0YSk7YnJlYWt9Y2FzZSBELkJpbmFyeUZpbGU6e0EuZnNfd3JpdGVGaWxlKG4uZGF0YS5wYXRoLG4uZGF0YS5kYXRhKTticmVha31jYXNlIEQuSW1hZ2U6e2xldCBvPW4uZGF0YSxmPXkoQSxvLmRhdGEsQywwKSxRPXkoQSxvLmRpcmVjdGlvbixDLDEpLEU9dHlwZW9mIG8ubWV0YWRhdGE/LmVudHJpZXM8InUiP0pTT04uc3RyaW5naWZ5KEFycmF5LmZyb20oby5tZXRhZGF0YS5lbnRyaWVzKCkpKToiW10iLGM9e2ltYWdlVHlwZTpvLmltYWdlVHlwZSxuYW1lOm8ubmFtZSxvcmlnaW46by5vcmlnaW4sc3BhY2luZzpvLnNwYWNpbmcsZGlyZWN0aW9uOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7UX1gLHNpemU6by5zaXplLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWAsbWV0YWRhdGE6RX07aihBLGMsQyk7YnJlYWt9Y2FzZSBELk1lc2g6e2xldCBvPW4uZGF0YSxmPXkoQSxvLnBvaW50cyxDLDApLFE9eShBLG8uY2VsbHMsQywxKSxFPXkoQSxvLnBvaW50RGF0YSxDLDIpLGM9eShBLG8uY2VsbERhdGEsQywzKSx1PXttZXNoVHlwZTpvLm1lc2hUeXBlLG5hbWU6by5uYW1lLG51bWJlck9mUG9pbnRzOm8ubnVtYmVyT2ZQb2ludHMscG9pbnRzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gLG51bWJlck9mQ2VsbHM6by5udW1iZXJPZkNlbGxzLGNlbGxzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7UX1gLGNlbGxCdWZmZXJTaXplOm8uY2VsbEJ1ZmZlclNpemUsbnVtYmVyT2ZQb2ludFBpeGVsczpvLm51bWJlck9mUG9pbnRQaXhlbHMscG9pbnREYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7RX1gLG51bWJlck9mQ2VsbFBpeGVsczpvLm51bWJlck9mQ2VsbFBpeGVscyxjZWxsRGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2N9YH07aihBLHUsQyk7YnJlYWt9Y2FzZSBELlBvbHlEYXRhOntsZXQgbz1uLmRhdGEsZj15KEEsby5wb2ludHMsQywwKSxRPXkoQSxvLnZlcnRpY2VzLEMsMSksRT15KEEsby5saW5lcyxDLDIpLGM9eShBLG8ucG9seWdvbnMsQywzKSx1PXkoQSxvLnRyaWFuZ2xlU3RyaXBzLEMsNCksZD15KEEsby5wb2ludERhdGEsQyw1KSxSPXkoQSxvLnBvaW50RGF0YSxDLDYpLE49e3BvbHlEYXRhVHlwZTpvLnBvbHlEYXRhVHlwZSxuYW1lOm8ubmFtZSxudW1iZXJPZlBvaW50czpvLm51bWJlck9mUG9pbnRzLHBvaW50czpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YCx2ZXJ0aWNlc0J1ZmZlclNpemU6by52ZXJ0aWNlc0J1ZmZlclNpemUsdmVydGljZXM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWAsbGluZXNCdWZmZXJTaXplOm8ubGluZXNCdWZmZXJTaXplLGxpbmVzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7RX1gLHBvbHlnb25zQnVmZmVyU2l6ZTpvLnBvbHlnb25zQnVmZmVyU2l6ZSxwb2x5Z29uczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2N9YCx0cmlhbmdsZVN0cmlwc0J1ZmZlclNpemU6by50cmlhbmdsZVN0cmlwc0J1ZmZlclNpemUsdHJpYW5nbGVTdHJpcHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHt1fWAsbnVtYmVyT2ZQb2ludFBpeGVsczpvLm51bWJlck9mUG9pbnRQaXhlbHMscG9pbnREYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7ZH1gLG51bWJlck9mQ2VsbFBpeGVsczpvLm51bWJlck9mQ2VsbFBpeGVscyxjZWxsRGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1J9YH07aihBLE4sQyk7YnJlYWt9ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5zdXBwb3J0ZWQgaW5wdXQgSW50ZXJmYWNlVHlwZSIpfX0pLEEucmVzZXRNb2R1bGVTdGRvdXQoKSxBLnJlc2V0TW9kdWxlU3RkZXJyKCk7bGV0IGc9QS5zdGFja1NhdmUoKSxyPTA7dHJ5e3I9QS5jYWxsTWFpbihJLnNsaWNlKCkpfWNhdGNoKG4pe3Rocm93IHR5cGVvZiBuPT0ibnVtYmVyIiYmKGNvbnNvbGUubG9nKCJFeGNlcHRpb24gd2hpbGUgcnVubmluZyBwaXBlbGluZToiKSxjb25zb2xlLmxvZygic3Rkb3V0OiIsQS5nZXRNb2R1bGVTdGRvdXQoKSksY29uc29sZS5lcnJvcigic3RkZXJyOiIsQS5nZXRNb2R1bGVTdGRlcnIoKSksdHlwZW9mIEEuZ2V0RXhjZXB0aW9uTWVzc2FnZTwidSI/Y29uc29sZS5lcnJvcigiZXhjZXB0aW9uOiIsQS5nZXRFeGNlcHRpb25NZXNzYWdlKG4pKTpjb25zb2xlLmVycm9yKCJCdWlsZCBtb2R1bGUgaW4gRGVidWcgbW9kZSBmb3IgZXhjZXB0aW9uIG1lc3NhZ2UgaW5mb3JtYXRpb24uIikpLG59ZmluYWxseXtBLnN0YWNrUmVzdG9yZShnKX1sZXQgaT1BLmdldE1vZHVsZVN0ZG91dCgpLHM9QS5nZXRNb2R1bGVTdGRlcnIoKSxhPVtdO3JldHVybiB0IT1udWxsJiZ0Lmxlbmd0aD4wJiZyPT09MCYmdC5mb3JFYWNoKGZ1bmN0aW9uKG4sQyl7bGV0IG89bnVsbDtzd2l0Y2gobi50eXBlKXtjYXNlIEQuVGV4dFN0cmVhbTp7bGV0IFE9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQywwXSksRT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxDLDBdKSxjPW5ldyBVaW50OEFycmF5KEEuSEVBUFU4LmJ1ZmZlcixRLEUpO289e2RhdGE6V0kuZGVjb2RlKGMpfTticmVha31jYXNlIEQuSnNvbkNvbXBhdGlibGU6e2xldCBRPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEMsMF0pLEU9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQywwXSksYz1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsUSxFKTtvPUpTT04ucGFyc2UoV0kuZGVjb2RlKGMpKTticmVha31jYXNlIEQuQmluYXJ5U3RyZWFtOntsZXQgUT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxDLDBdKSxFPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEMsMF0pO289e2RhdGE6VkkoQSxRLEUpfTticmVha31jYXNlIEQuVGV4dEZpbGU6e289e3BhdGg6bi5kYXRhLnBhdGgsZGF0YTpBLmZzX3JlYWRGaWxlKG4uZGF0YS5wYXRoLHtlbmNvZGluZzoidXRmOCJ9KX07YnJlYWt9Y2FzZSBELkJpbmFyeUZpbGU6e289e3BhdGg6bi5kYXRhLnBhdGgsZGF0YTpkZShBLG4uZGF0YS5wYXRoKX07YnJlYWt9Y2FzZSBELkltYWdlOntsZXQgUT16QShBLEMpO1EuZGF0YT1TKEEsQywwLFEuaW1hZ2VUeXBlLmNvbXBvbmVudFR5cGUpLFEuZGlyZWN0aW9uPVMoQSxDLDEsUC5GbG9hdDY0KSxRLm1ldGFkYXRhPW5ldyBNYXAoUS5tZXRhZGF0YSksbz1RO2JyZWFrfWNhc2UgRC5NZXNoOntsZXQgUT16QShBLEMpO1EubnVtYmVyT2ZQb2ludHM+MD9RLnBvaW50cz1TKEEsQywwLFEubWVzaFR5cGUucG9pbnRDb21wb25lbnRUeXBlKTpRLnBvaW50cz1ZKFEubWVzaFR5cGUucG9pbnRDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksUS5udW1iZXJPZkNlbGxzPjA/US5jZWxscz1TKEEsQywxLFEubWVzaFR5cGUuY2VsbENvbXBvbmVudFR5cGUpOlEuY2VsbHM9WShRLm1lc2hUeXBlLmNlbGxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksUS5udW1iZXJPZlBvaW50UGl4ZWxzPjA/US5wb2ludERhdGE9UyhBLEMsMixRLm1lc2hUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlKTpRLnBvaW50RGF0YT1ZKFEubWVzaFR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxRLm51bWJlck9mQ2VsbFBpeGVscz4wP1EuY2VsbERhdGE9UyhBLEMsMyxRLm1lc2hUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUpOlEuY2VsbERhdGE9WShRLm1lc2hUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxvPVE7YnJlYWt9Y2FzZSBELlBvbHlEYXRhOntsZXQgUT16QShBLEMpO1EubnVtYmVyT2ZQb2ludHM+MD9RLnBvaW50cz1TKEEsQywwLFAuRmxvYXQzMik6US5wb2ludHM9bmV3IEZsb2F0MzJBcnJheSxRLnZlcnRpY2VzQnVmZmVyU2l6ZT4wP1EudmVydGljZXM9UyhBLEMsMSxwLlVJbnQzMik6US52ZXJ0aWNlcz1uZXcgVWludDMyQXJyYXksUS5saW5lc0J1ZmZlclNpemU+MD9RLmxpbmVzPVMoQSxDLDIscC5VSW50MzIpOlEubGluZXM9bmV3IFVpbnQzMkFycmF5LFEucG9seWdvbnNCdWZmZXJTaXplPjA/US5wb2x5Z29ucz1TKEEsQywzLHAuVUludDMyKTpRLnBvbHlnb25zPW5ldyBVaW50MzJBcnJheSxRLnRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZT4wP1EudHJpYW5nbGVTdHJpcHM9UyhBLEMsNCxwLlVJbnQzMik6US50cmlhbmdsZVN0cmlwcz1uZXcgVWludDMyQXJyYXksUS5udW1iZXJPZlBvaW50UGl4ZWxzPjA/US5wb2ludERhdGE9UyhBLEMsNSxRLnBvbHlEYXRhVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSk6US5wb2ludERhdGE9WShRLnBvbHlEYXRhVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLFEubnVtYmVyT2ZDZWxsUGl4ZWxzPjA/US5jZWxsRGF0YT1TKEEsQyw2LFEucG9seURhdGFUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUpOlEuY2VsbERhdGE9WShRLnBvbHlEYXRhVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksbz1RO2JyZWFrfWRlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuc3VwcG9ydGVkIG91dHB1dCBJbnRlcmZhY2VUeXBlIil9bGV0IGY9e3R5cGU6bi50eXBlLGRhdGE6b307YS5wdXNoKGYpfSkse3JldHVyblZhbHVlOnIsc3Rkb3V0Omksc3RkZXJyOnMsb3V0cHV0czphfX12YXIgWEk9eWU7dmFyIHdlPXR5cGVvZiBnbG9iYWxUaGlzLlNoYXJlZEFycmF5QnVmZmVyPCJ1IjtmdW5jdGlvbiBtZShBLEkpe2lmKEE9PW51bGwpcmV0dXJuW107bGV0IHQ9W107Zm9yKGxldCBlPTA7ZTxBLmxlbmd0aDtlKyspe2xldCBnPXBlKEFbZV0sSSk7ZyE9PW51bGwmJnQucHVzaChnKX1yZXR1cm4gdH1mdW5jdGlvbiBwZShBLEkpe2lmKEE9PW51bGwpcmV0dXJuIG51bGw7bGV0IHQ9bnVsbDtyZXR1cm4gQS5idWZmZXIhPT12b2lkIDA/dD1BLmJ1ZmZlcjpBLmJ5dGVMZW5ndGghPT12b2lkIDAmJih0PUEpLHdlJiZ0IGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXI/bnVsbDpJP3Q6dC5zbGljZSgwKX12YXIgekk9bWU7ZnVuY3Rpb24gU2UoQSl7cmV0dXJuW0EuZGF0YSxBLmRpcmVjdGlvbl19dmFyIF9JPVNlO2Z1bmN0aW9uIEZlKEEpe3JldHVybltBLnBvaW50cyxBLnBvaW50RGF0YSxBLmNlbGxzLEEuY2VsbERhdGFdfXZhciB2ST1GZTtmdW5jdGlvbiBSZShBKXtyZXR1cm5bQS5wb2ludHMsQS52ZXJ0aWNlcyxBLmxpbmVzLEEucG9seWdvbnMsQS50cmlhbmdsZVN0cmlwcyxBLnBvaW50RGF0YSxBLmNlbGxEYXRhXX12YXIgJEk9UmU7YXN5bmMgZnVuY3Rpb24gTmUoQSxJLHQsZSl7bGV0IGc9WEkoQSxJLHQsZSkscj1bXTtyZXR1cm4gZy5vdXRwdXRzLmZvckVhY2goZnVuY3Rpb24oaSl7aWYoaS50eXBlPT09RC5CaW5hcnlTdHJlYW18fGkudHlwZT09PUQuQmluYXJ5RmlsZSl7bGV0IHM9aS5kYXRhO3IucHVzaChzKX1lbHNlIGlmKGkudHlwZT09PUQuSW1hZ2Upe2xldCBzPWkuZGF0YTtyLnB1c2goLi4uX0kocykpfWVsc2UgaWYoaS50eXBlPT09RC5NZXNoKXtsZXQgcz1pLmRhdGE7ci5wdXNoKC4uLnZJKHMpKX1lbHNlIGlmKGkudHlwZT09PUQuUG9seURhdGEpe2xldCBzPWkuZGF0YTtyLnB1c2goLi4uJEkocykpfX0pLFNBKGcsekkociwhMCkpfXZhciBBdD1OZTt2YXIgVWU9e3J1blBpcGVsaW5lOmFzeW5jIGZ1bmN0aW9uKEEsSSx0LGUsZyxyKXtsZXQgaT1hd2FpdCBQSShBLEkscik7cmV0dXJuIGF3YWl0IEF0KGksdCxlLGcpfX07b0EoVWUpOyUwQS8qISBCdW5kbGVkIGxpY2Vuc2UgaW5mb3JtYXRpb246JTBBJTBBY29tbGluay9kaXN0L2VzbS9jb21saW5rLm1qczolMEEgICgqKiUwQSAgICogQGxpY2Vuc2UlMEEgICAqIENvcHlyaWdodCAyMDE5IEdvb2dsZSBMTEMlMEEgICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wJTBBICAgKiklMEEqLyUwQSc7QnQobHQpO2V4cG9ydHtubiBhcyBkb3duc2FtcGxlLFhyIGFzIGRvd25zYW1wbGVCaW5TaHJpbmssQW4gYXMgZG93bnNhbXBsZUxhYmVsSW1hZ2UsdG4gYXMgZG93bnNhbXBsZVNpZ21hLGFuIGFzIGdhdXNzaWFuS2VybmVsUmFkaXVzLEwgYXMgZ2V0RGVmYXVsdFdlYldvcmtlcixSIGFzIGdldFBpcGVsaW5lV29ya2VyVXJsLEcgYXMgZ2V0UGlwZWxpbmVzQmFzZVVybCxJcyBhcyBzZXREZWZhdWx0V2ViV29ya2VyLEJ0IGFzIHNldFBpcGVsaW5lV29ya2VyVXJsLHRzIGFzIHNldFBpcGVsaW5lc0Jhc2VVcmwsUkEgYXMgdmVyc2lvbn07Ci8qISBCdW5kbGVkIGxpY2Vuc2UgaW5mb3JtYXRpb246Cgpjb21saW5rL2Rpc3QvZXNtL2NvbWxpbmsubWpzOgogICgqKgogICAqIEBsaWNlbnNlCiAgICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIExMQwogICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wCiAgICopCiovCg==""" +default_js_module = """data:text/javascript;base64,dmFyIFF0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgY3Q9KEEsZSk9Pntmb3IodmFyIHQgaW4gZSlRdChBLHQse2dldDplW3RdLGVudW1lcmFibGU6ITB9KX07dmFyIHV0PSIxLjEuMSIsUkE9dXQ7dmFyIGZ0PXtJbnQ4OiJpbnQ4IixVSW50ODoidWludDgiLEludDE2OiJpbnQxNiIsVUludDE2OiJ1aW50MTYiLEludDMyOiJpbnQzMiIsVUludDMyOiJ1aW50MzIiLEludDY0OiJpbnQ2NCIsVUludDY0OiJ1aW50NjQiLFNpemVWYWx1ZVR5cGU6InVpbnQ2NCIsSWRlbnRpZmllclR5cGU6InVpbnQ2NCIsSW5kZXhWYWx1ZVR5cGU6ImludDY0IixPZmZzZXRWYWx1ZVR5cGU6ImludDY0In0sRD1mdDt2YXIgcHQ9e0Zsb2F0MzI6ImZsb2F0MzIiLEZsb2F0NjQ6ImZsb2F0NjQiLFNwYWNlUHJlY2lzaW9uVHlwZToiZmxvYXQ2NCJ9LE09cHQ7ZnVuY3Rpb24gZHQoQSxlKXtsZXQgdD1udWxsO3N3aXRjaChBKXtjYXNlIEQuVUludDg6e3Q9bmV3IFVpbnQ4QXJyYXkoZSk7YnJlYWt9Y2FzZSBELkludDg6e3Q9bmV3IEludDhBcnJheShlKTticmVha31jYXNlIEQuVUludDE2Ont0PW5ldyBVaW50MTZBcnJheShlKTticmVha31jYXNlIEQuSW50MTY6e3Q9bmV3IEludDE2QXJyYXkoZSk7YnJlYWt9Y2FzZSBELlVJbnQzMjp7dD1uZXcgVWludDMyQXJyYXkoZSk7YnJlYWt9Y2FzZSBELkludDMyOnt0PW5ldyBJbnQzMkFycmF5KGUpO2JyZWFrfWNhc2UgRC5VSW50NjQ6e3R5cGVvZiBnbG9iYWxUaGlzLkJpZ1VpbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ1VpbnQ2NEFycmF5KGUpOnQ9bmV3IFVpbnQ4QXJyYXkoZSk7YnJlYWt9Y2FzZSBELkludDY0Ont0eXBlb2YgZ2xvYmFsVGhpcy5CaWdJbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ0ludDY0QXJyYXkoZSk6dD1uZXcgVWludDhBcnJheShlKTticmVha31jYXNlIE0uRmxvYXQzMjp7dD1uZXcgRmxvYXQzMkFycmF5KGUpO2JyZWFrfWNhc2UgTS5GbG9hdDY0Ont0PW5ldyBGbG9hdDY0QXJyYXkoZSk7YnJlYWt9Y2FzZSJudWxsIjp7dD1udWxsO2JyZWFrfWNhc2UgbnVsbDp7dD1udWxsO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlIGlzIG5vdCBzdXBwb3J0ZWQgYXMgYSBUeXBlZEFycmF5Iil9cmV0dXJuIHR9dmFyIFA9ZHQ7dmFyIG10PXtUZXh0RmlsZToiVGV4dEZpbGUiLEJpbmFyeUZpbGU6IkJpbmFyeUZpbGUiLFRleHRTdHJlYW06IlRleHRTdHJlYW0iLEJpbmFyeVN0cmVhbToiQmluYXJ5U3RyZWFtIixJbWFnZToiSW1hZ2UiLE1lc2g6Ik1lc2giLFBvbHlEYXRhOiJQb2x5RGF0YSIsSnNvbkNvbXBhdGlibGU6Ikpzb25Db21wYXRpYmxlIn0sZj1tdDt2YXIgb2U9U3ltYm9sKCJDb21saW5rLnByb3h5IiksaHQ9U3ltYm9sKCJDb21saW5rLmVuZHBvaW50IiksVUE9U3ltYm9sKCJDb21saW5rLnJlbGVhc2VQcm94eSIpLEZBPVN5bWJvbCgiQ29tbGluay5maW5hbGl6ZXIiKSxzQT1TeW1ib2woIkNvbWxpbmsudGhyb3duIiksYWU9QT0+dHlwZW9mIEE9PSJvYmplY3QiJiZBIT09bnVsbHx8dHlwZW9mIEE9PSJmdW5jdGlvbiIseXQ9e2NhbkhhbmRsZTpBPT5hZShBKSYmQVtvZV0sc2VyaWFsaXplKEEpe2xldHtwb3J0MTplLHBvcnQyOnR9PW5ldyBNZXNzYWdlQ2hhbm5lbDtyZXR1cm4gSWUoQSxlKSxbdCxbdF1dfSxkZXNlcmlhbGl6ZShBKXtyZXR1cm4gQS5zdGFydCgpLE5BKEEpfX0sd3Q9e2NhbkhhbmRsZTpBPT5hZShBKSYmc0EgaW4gQSxzZXJpYWxpemUoe3ZhbHVlOkF9KXtsZXQgZTtyZXR1cm4gQSBpbnN0YW5jZW9mIEVycm9yP2U9e2lzRXJyb3I6ITAsdmFsdWU6e21lc3NhZ2U6QS5tZXNzYWdlLG5hbWU6QS5uYW1lLHN0YWNrOkEuc3RhY2t9fTplPXtpc0Vycm9yOiExLHZhbHVlOkF9LFtlLFtdXX0sZGVzZXJpYWxpemUoQSl7dGhyb3cgQS5pc0Vycm9yP09iamVjdC5hc3NpZ24obmV3IEVycm9yKEEudmFsdWUubWVzc2FnZSksQS52YWx1ZSk6QS52YWx1ZX19LHNlPW5ldyBNYXAoW1sicHJveHkiLHl0XSxbInRocm93Iix3dF1dKTtmdW5jdGlvbiBEdChBLGUpe2ZvcihsZXQgdCBvZiBBKWlmKGU9PT10fHx0PT09IioifHx0IGluc3RhbmNlb2YgUmVnRXhwJiZ0LnRlc3QoZSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gSWUoQSxlPWdsb2JhbFRoaXMsdD1bIioiXSl7ZS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiByKG4pe2lmKCFufHwhbi5kYXRhKXJldHVybjtpZighRHQodCxuLm9yaWdpbikpe2NvbnNvbGUud2FybihgSW52YWxpZCBvcmlnaW4gJyR7bi5vcmlnaW59JyBmb3IgY29tbGluayBwcm94eWApO3JldHVybn1sZXR7aWQ6aSx0eXBlOm8scGF0aDpnfT1PYmplY3QuYXNzaWduKHtwYXRoOltdfSxuLmRhdGEpLGw9KG4uZGF0YS5hcmd1bWVudExpc3R8fFtdKS5tYXAoSCksQzt0cnl7bGV0IEk9Zy5zbGljZSgwLC0xKS5yZWR1Y2UoKFEsQik9PlFbQl0sQSksYT1nLnJlZHVjZSgoUSxCKT0+UVtCXSxBKTtzd2l0Y2gobyl7Y2FzZSJHRVQiOkM9YTticmVhaztjYXNlIlNFVCI6SVtnLnNsaWNlKC0xKVswXV09SChuLmRhdGEudmFsdWUpLEM9ITA7YnJlYWs7Y2FzZSJBUFBMWSI6Qz1hLmFwcGx5KEksbCk7YnJlYWs7Y2FzZSJDT05TVFJVQ1QiOntsZXQgUT1uZXcgYSguLi5sKTtDPWJ0KFEpfWJyZWFrO2Nhc2UiRU5EUE9JTlQiOntsZXR7cG9ydDE6USxwb3J0MjpCfT1uZXcgTWVzc2FnZUNoYW5uZWw7SWUoQSxCKSxDPUdBKFEsW1FdKX1icmVhaztjYXNlIlJFTEVBU0UiOkM9dm9pZCAwO2JyZWFrO2RlZmF1bHQ6cmV0dXJufX1jYXRjaChJKXtDPXt2YWx1ZTpJLFtzQV06MH19UHJvbWlzZS5yZXNvbHZlKEMpLmNhdGNoKEk9Pih7dmFsdWU6SSxbc0FdOjB9KSkudGhlbihJPT57bGV0W2EsUV09QkEoSSk7ZS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYSkse2lkOml9KSxRKSxvPT09IlJFTEVBU0UiJiYoZS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixyKSxnZShlKSxGQSBpbiBBJiZ0eXBlb2YgQVtGQV09PSJmdW5jdGlvbiImJkFbRkFdKCkpfSkuY2F0Y2goST0+e2xldFthLFFdPUJBKHt2YWx1ZTpuZXcgVHlwZUVycm9yKCJVbnNlcmlhbGl6YWJsZSByZXR1cm4gdmFsdWUiKSxbc0FdOjB9KTtlLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhKSx7aWQ6aX0pLFEpfSl9KSxlLnN0YXJ0JiZlLnN0YXJ0KCl9ZnVuY3Rpb24gU3QoQSl7cmV0dXJuIEEuY29uc3RydWN0b3IubmFtZT09PSJNZXNzYWdlUG9ydCJ9ZnVuY3Rpb24gZ2UoQSl7U3QoQSkmJkEuY2xvc2UoKX1mdW5jdGlvbiBOQShBLGUpe3JldHVybiBiQShBLFtdLGUpfWZ1bmN0aW9uIGFBKEEpe2lmKEEpdGhyb3cgbmV3IEVycm9yKCJQcm94eSBoYXMgYmVlbiByZWxlYXNlZCBhbmQgaXMgbm90IHVzZWFibGUiKX1mdW5jdGlvbiBCZShBKXtyZXR1cm4gWShBLHt0eXBlOiJSRUxFQVNFIn0pLnRoZW4oKCk9PntnZShBKX0pfXZhciBJQT1uZXcgV2Vha01hcCxnQT0iRmluYWxpemF0aW9uUmVnaXN0cnkiaW4gZ2xvYmFsVGhpcyYmbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KEE9PntsZXQgZT0oSUEuZ2V0KEEpfHwwKS0xO0lBLnNldChBLGUpLGU9PT0wJiZCZShBKX0pO2Z1bmN0aW9uIGt0KEEsZSl7bGV0IHQ9KElBLmdldChlKXx8MCkrMTtJQS5zZXQoZSx0KSxnQSYmZ0EucmVnaXN0ZXIoQSxlLEEpfWZ1bmN0aW9uIFJ0KEEpe2dBJiZnQS51bnJlZ2lzdGVyKEEpfWZ1bmN0aW9uIGJBKEEsZT1bXSx0PWZ1bmN0aW9uKCl7fSl7bGV0IHI9ITEsbj1uZXcgUHJveHkodCx7Z2V0KGksbyl7aWYoYUEociksbz09PVVBKXJldHVybigpPT57UnQobiksQmUoQSkscj0hMH07aWYobz09PSJ0aGVuIil7aWYoZS5sZW5ndGg9PT0wKXJldHVybnt0aGVuOigpPT5ufTtsZXQgZz1ZKEEse3R5cGU6IkdFVCIscGF0aDplLm1hcChsPT5sLnRvU3RyaW5nKCkpfSkudGhlbihIKTtyZXR1cm4gZy50aGVuLmJpbmQoZyl9cmV0dXJuIGJBKEEsWy4uLmUsb10pfSxzZXQoaSxvLGcpe2FBKHIpO2xldFtsLENdPUJBKGcpO3JldHVybiBZKEEse3R5cGU6IlNFVCIscGF0aDpbLi4uZSxvXS5tYXAoST0+SS50b1N0cmluZygpKSx2YWx1ZTpsfSxDKS50aGVuKEgpfSxhcHBseShpLG8sZyl7YUEocik7bGV0IGw9ZVtlLmxlbmd0aC0xXTtpZihsPT09aHQpcmV0dXJuIFkoQSx7dHlwZToiRU5EUE9JTlQifSkudGhlbihIKTtpZihsPT09ImJpbmQiKXJldHVybiBiQShBLGUuc2xpY2UoMCwtMSkpO2xldFtDLEldPWllKGcpO3JldHVybiBZKEEse3R5cGU6IkFQUExZIixwYXRoOmUubWFwKGE9PmEudG9TdHJpbmcoKSksYXJndW1lbnRMaXN0OkN9LEkpLnRoZW4oSCl9LGNvbnN0cnVjdChpLG8pe2FBKHIpO2xldFtnLGxdPWllKG8pO3JldHVybiBZKEEse3R5cGU6IkNPTlNUUlVDVCIscGF0aDplLm1hcChDPT5DLnRvU3RyaW5nKCkpLGFyZ3VtZW50TGlzdDpnfSxsKS50aGVuKEgpfX0pO3JldHVybiBrdChuLEEpLG59ZnVuY3Rpb24gRnQoQSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sQSl9ZnVuY3Rpb24gaWUoQSl7bGV0IGU9QS5tYXAoQkEpO3JldHVybltlLm1hcCh0PT50WzBdKSxGdChlLm1hcCh0PT50WzFdKSldfXZhciBDZT1uZXcgV2Vha01hcDtmdW5jdGlvbiBHQShBLGUpe3JldHVybiBDZS5zZXQoQSxlKSxBfWZ1bmN0aW9uIGJ0KEEpe3JldHVybiBPYmplY3QuYXNzaWduKEEse1tvZV06ITB9KX1mdW5jdGlvbiBCQShBKXtmb3IobGV0W2UsdF1vZiBzZSlpZih0LmNhbkhhbmRsZShBKSl7bGV0W3Isbl09dC5zZXJpYWxpemUoQSk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmUsdmFsdWU6cn0sbl19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOkF9LENlLmdldChBKXx8W11dfWZ1bmN0aW9uIEgoQSl7c3dpdGNoKEEudHlwZSl7Y2FzZSJIQU5ETEVSIjpyZXR1cm4gc2UuZ2V0KEEubmFtZSkuZGVzZXJpYWxpemUoQS52YWx1ZSk7Y2FzZSJSQVciOnJldHVybiBBLnZhbHVlfX1mdW5jdGlvbiBZKEEsZSx0KXtyZXR1cm4gbmV3IFByb21pc2Uocj0+e2xldCBuPVV0KCk7QS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiBpKG8peyFvLmRhdGF8fCFvLmRhdGEuaWR8fG8uZGF0YS5pZCE9PW58fChBLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGkpLHIoby5kYXRhKSl9KSxBLnN0YXJ0JiZBLnN0YXJ0KCksQS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKHtpZDpufSxlKSx0KX0pfWZ1bmN0aW9uIFV0KCl7cmV0dXJuIG5ldyBBcnJheSg0KS5maWxsKDApLm1hcCgoKT0+TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKk51bWJlci5NQVhfU0FGRV9JTlRFR0VSKS50b1N0cmluZygxNikpLmpvaW4oIi0iKX1mdW5jdGlvbiBaKEEsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEEuYXBwbHkoZSxhcmd1bWVudHMpfX12YXJ7dG9TdHJpbmc6TnR9PU9iamVjdC5wcm90b3R5cGUse2dldFByb3RvdHlwZU9mOlBBfT1PYmplY3QsbEE9KEE9PmU9PntsZXQgdD1OdC5jYWxsKGUpO3JldHVybiBBW3RdfHwoQVt0XT10LnNsaWNlKDgsLTEpLnRvTG93ZXJDYXNlKCkpfSkoT2JqZWN0LmNyZWF0ZShudWxsKSksTj1BPT4oQT1BLnRvTG93ZXJDYXNlKCksZT0+bEEoZSk9PT1BKSxFQT1BPT5lPT50eXBlb2YgZT09PUEse2lzQXJyYXk6cX09QXJyYXksWD1FQSgidW5kZWZpbmVkIik7ZnVuY3Rpb24gR3QoQSl7cmV0dXJuIEEhPT1udWxsJiYhWChBKSYmQS5jb25zdHJ1Y3RvciE9PW51bGwmJiFYKEEuY29uc3RydWN0b3IpJiZrKEEuY29uc3RydWN0b3IuaXNCdWZmZXIpJiZBLmNvbnN0cnVjdG9yLmlzQnVmZmVyKEEpfXZhciBjZT1OKCJBcnJheUJ1ZmZlciIpO2Z1bmN0aW9uIEx0KEEpe2xldCBlO3JldHVybiB0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZBcnJheUJ1ZmZlci5pc1ZpZXc/ZT1BcnJheUJ1ZmZlci5pc1ZpZXcoQSk6ZT1BJiZBLmJ1ZmZlciYmY2UoQS5idWZmZXIpLGV9dmFyIE90PUVBKCJzdHJpbmciKSxrPUVBKCJmdW5jdGlvbiIpLHVlPUVBKCJudW1iZXIiKSxRQT1BPT5BIT09bnVsbCYmdHlwZW9mIEE9PSJvYmplY3QiLFB0PUE9PkE9PT0hMHx8QT09PSExLENBPUE9PntpZihsQShBKSE9PSJvYmplY3QiKXJldHVybiExO2xldCBlPVBBKEEpO3JldHVybihlPT09bnVsbHx8ZT09PU9iamVjdC5wcm90b3R5cGV8fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PW51bGwpJiYhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBBKSYmIShTeW1ib2wuaXRlcmF0b3IgaW4gQSl9LFR0PU4oIkRhdGUiKSx4dD1OKCJGaWxlIiksSnQ9TigiQmxvYiIpLEh0PU4oIkZpbGVMaXN0IiksTXQ9QT0+UUEoQSkmJmsoQS5waXBlKSxZdD1BPT57bGV0IGU7cmV0dXJuIEEmJih0eXBlb2YgRm9ybURhdGE9PSJmdW5jdGlvbiImJkEgaW5zdGFuY2VvZiBGb3JtRGF0YXx8ayhBLmFwcGVuZCkmJigoZT1sQShBKSk9PT0iZm9ybWRhdGEifHxlPT09Im9iamVjdCImJmsoQS50b1N0cmluZykmJkEudG9TdHJpbmcoKT09PSJbb2JqZWN0IEZvcm1EYXRhXSIpKX0scXQ9TigiVVJMU2VhcmNoUGFyYW1zIiksS3Q9QT0+QS50cmltP0EudHJpbSgpOkEucmVwbGFjZSgvXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csIiIpO2Z1bmN0aW9uICQoQSxlLHthbGxPd25LZXlzOnQ9ITF9PXt9KXtpZihBPT09bnVsbHx8dHlwZW9mIEE+InUiKXJldHVybjtsZXQgcixuO2lmKHR5cGVvZiBBIT0ib2JqZWN0IiYmKEE9W0FdKSxxKEEpKWZvcihyPTAsbj1BLmxlbmd0aDtyPG47cisrKWUuY2FsbChudWxsLEFbcl0scixBKTtlbHNle2xldCBpPXQ/T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoQSk6T2JqZWN0LmtleXMoQSksbz1pLmxlbmd0aCxnO2ZvcihyPTA7cjxvO3IrKylnPWlbcl0sZS5jYWxsKG51bGwsQVtnXSxnLEEpfX1mdW5jdGlvbiBmZShBLGUpe2U9ZS50b0xvd2VyQ2FzZSgpO2xldCB0PU9iamVjdC5rZXlzKEEpLHI9dC5sZW5ndGgsbjtmb3IoO3ItLSA+MDspaWYobj10W3JdLGU9PT1uLnRvTG93ZXJDYXNlKCkpcmV0dXJuIG47cmV0dXJuIG51bGx9dmFyIHBlPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzpnbG9iYWwsZGU9QT0+IVgoQSkmJkEhPT1wZTtmdW5jdGlvbiBPQSgpe2xldHtjYXNlbGVzczpBfT1kZSh0aGlzKSYmdGhpc3x8e30sZT17fSx0PShyLG4pPT57bGV0IGk9QSYmZmUoZSxuKXx8bjtDQShlW2ldKSYmQ0Eocik/ZVtpXT1PQShlW2ldLHIpOkNBKHIpP2VbaV09T0Eoe30scik6cShyKT9lW2ldPXIuc2xpY2UoKTplW2ldPXJ9O2ZvcihsZXQgcj0wLG49YXJndW1lbnRzLmxlbmd0aDtyPG47cisrKWFyZ3VtZW50c1tyXSYmJChhcmd1bWVudHNbcl0sdCk7cmV0dXJuIGV9dmFyIFd0PShBLGUsdCx7YWxsT3duS2V5czpyfT17fSk9PigkKGUsKG4saSk9Pnt0JiZrKG4pP0FbaV09WihuLHQpOkFbaV09bn0se2FsbE93bktleXM6cn0pLEEpLGp0PUE9PihBLmNoYXJDb2RlQXQoMCk9PT02NTI3OSYmKEE9QS5zbGljZSgxKSksQSksdnQ9KEEsZSx0LHIpPT57QS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSxyKSxBLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1BLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJzdXBlciIse3ZhbHVlOmUucHJvdG90eXBlfSksdCYmT2JqZWN0LmFzc2lnbihBLnByb3RvdHlwZSx0KX0sX3Q9KEEsZSx0LHIpPT57bGV0IG4saSxvLGc9e307aWYoZT1lfHx7fSxBPT1udWxsKXJldHVybiBlO2Rve2ZvcihuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEEpLGk9bi5sZW5ndGg7aS0tID4wOylvPW5baV0sKCFyfHxyKG8sQSxlKSkmJiFnW29dJiYoZVtvXT1BW29dLGdbb109ITApO0E9dCE9PSExJiZQQShBKX13aGlsZShBJiYoIXR8fHQoQSxlKSkmJkEhPT1PYmplY3QucHJvdG90eXBlKTtyZXR1cm4gZX0senQ9KEEsZSx0KT0+e0E9U3RyaW5nKEEpLCh0PT09dm9pZCAwfHx0PkEubGVuZ3RoKSYmKHQ9QS5sZW5ndGgpLHQtPWUubGVuZ3RoO2xldCByPUEuaW5kZXhPZihlLHQpO3JldHVybiByIT09LTEmJnI9PT10fSxWdD1BPT57aWYoIUEpcmV0dXJuIG51bGw7aWYocShBKSlyZXR1cm4gQTtsZXQgZT1BLmxlbmd0aDtpZighdWUoZSkpcmV0dXJuIG51bGw7bGV0IHQ9bmV3IEFycmF5KGUpO2Zvcig7ZS0tID4wOyl0W2VdPUFbZV07cmV0dXJuIHR9LFp0PShBPT5lPT5BJiZlIGluc3RhbmNlb2YgQSkodHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZQQShVaW50OEFycmF5KSksWHQ9KEEsZSk9PntsZXQgcj0oQSYmQVtTeW1ib2wuaXRlcmF0b3JdKS5jYWxsKEEpLG47Zm9yKDsobj1yLm5leHQoKSkmJiFuLmRvbmU7KXtsZXQgaT1uLnZhbHVlO2UuY2FsbChBLGlbMF0saVsxXSl9fSwkdD0oQSxlKT0+e2xldCB0LHI9W107Zm9yKDsodD1BLmV4ZWMoZSkpIT09bnVsbDspci5wdXNoKHQpO3JldHVybiByfSxBcj1OKCJIVE1MRm9ybUVsZW1lbnQiKSxlcj1BPT5BLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWy1fXHNdKFthLXpcZF0pKFx3KikvZyxmdW5jdGlvbih0LHIsbil7cmV0dXJuIHIudG9VcHBlckNhc2UoKStufSksRWU9KCh7aGFzT3duUHJvcGVydHk6QX0pPT4oZSx0KT0+QS5jYWxsKGUsdCkpKE9iamVjdC5wcm90b3R5cGUpLHRyPU4oIlJlZ0V4cCIpLG1lPShBLGUpPT57bGV0IHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoQSkscj17fTskKHQsKG4saSk9PntsZXQgbzsobz1lKG4saSxBKSkhPT0hMSYmKHJbaV09b3x8bil9KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhBLHIpfSxycj1BPT57bWUoQSwoZSx0KT0+e2lmKGsoQSkmJlsiYXJndW1lbnRzIiwiY2FsbGVyIiwiY2FsbGVlIl0uaW5kZXhPZih0KSE9PS0xKXJldHVybiExO2xldCByPUFbdF07aWYoayhyKSl7aWYoZS5lbnVtZXJhYmxlPSExLCJ3cml0YWJsZSJpbiBlKXtlLndyaXRhYmxlPSExO3JldHVybn1lLnNldHx8KGUuc2V0PSgpPT57dGhyb3cgRXJyb3IoIkNhbiBub3QgcmV3cml0ZSByZWFkLW9ubHkgbWV0aG9kICciK3QrIiciKX0pfX0pfSxucj0oQSxlKT0+e2xldCB0PXt9LHI9bj0+e24uZm9yRWFjaChpPT57dFtpXT0hMH0pfTtyZXR1cm4gcShBKT9yKEEpOnIoU3RyaW5nKEEpLnNwbGl0KGUpKSx0fSxpcj0oKT0+e30sb3I9KEEsZSk9PihBPStBLE51bWJlci5pc0Zpbml0ZShBKT9BOmUpLExBPSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsUWU9IjAxMjM0NTY3ODkiLGhlPXtESUdJVDpRZSxBTFBIQTpMQSxBTFBIQV9ESUdJVDpMQStMQS50b1VwcGVyQ2FzZSgpK1FlfSxhcj0oQT0xNixlPWhlLkFMUEhBX0RJR0lUKT0+e2xldCB0PSIiLHtsZW5ndGg6cn09ZTtmb3IoO0EtLTspdCs9ZVtNYXRoLnJhbmRvbSgpKnJ8MF07cmV0dXJuIHR9O2Z1bmN0aW9uIHNyKEEpe3JldHVybiEhKEEmJmsoQS5hcHBlbmQpJiZBW1N5bWJvbC50b1N0cmluZ1RhZ109PT0iRm9ybURhdGEiJiZBW1N5bWJvbC5pdGVyYXRvcl0pfXZhciBJcj1BPT57bGV0IGU9bmV3IEFycmF5KDEwKSx0PShyLG4pPT57aWYoUUEocikpe2lmKGUuaW5kZXhPZihyKT49MClyZXR1cm47aWYoISgidG9KU09OImluIHIpKXtlW25dPXI7bGV0IGk9cShyKT9bXTp7fTtyZXR1cm4gJChyLChvLGcpPT57bGV0IGw9dChvLG4rMSk7IVgobCkmJihpW2ddPWwpfSksZVtuXT12b2lkIDAsaX19cmV0dXJuIHJ9O3JldHVybiB0KEEsMCl9LGdyPU4oIkFzeW5jRnVuY3Rpb24iKSxCcj1BPT5BJiYoUUEoQSl8fGsoQSkpJiZrKEEudGhlbikmJmsoQS5jYXRjaCkscz17aXNBcnJheTpxLGlzQXJyYXlCdWZmZXI6Y2UsaXNCdWZmZXI6R3QsaXNGb3JtRGF0YTpZdCxpc0FycmF5QnVmZmVyVmlldzpMdCxpc1N0cmluZzpPdCxpc051bWJlcjp1ZSxpc0Jvb2xlYW46UHQsaXNPYmplY3Q6UUEsaXNQbGFpbk9iamVjdDpDQSxpc1VuZGVmaW5lZDpYLGlzRGF0ZTpUdCxpc0ZpbGU6eHQsaXNCbG9iOkp0LGlzUmVnRXhwOnRyLGlzRnVuY3Rpb246ayxpc1N0cmVhbTpNdCxpc1VSTFNlYXJjaFBhcmFtczpxdCxpc1R5cGVkQXJyYXk6WnQsaXNGaWxlTGlzdDpIdCxmb3JFYWNoOiQsbWVyZ2U6T0EsZXh0ZW5kOld0LHRyaW06S3Qsc3RyaXBCT006anQsaW5oZXJpdHM6dnQsdG9GbGF0T2JqZWN0Ol90LGtpbmRPZjpsQSxraW5kT2ZUZXN0Ok4sZW5kc1dpdGg6enQsdG9BcnJheTpWdCxmb3JFYWNoRW50cnk6WHQsbWF0Y2hBbGw6JHQsaXNIVE1MRm9ybTpBcixoYXNPd25Qcm9wZXJ0eTpFZSxoYXNPd25Qcm9wOkVlLHJlZHVjZURlc2NyaXB0b3JzOm1lLGZyZWV6ZU1ldGhvZHM6cnIsdG9PYmplY3RTZXQ6bnIsdG9DYW1lbENhc2U6ZXIsbm9vcDppcix0b0Zpbml0ZU51bWJlcjpvcixmaW5kS2V5OmZlLGdsb2JhbDpwZSxpc0NvbnRleHREZWZpbmVkOmRlLEFMUEhBQkVUOmhlLGdlbmVyYXRlU3RyaW5nOmFyLGlzU3BlY0NvbXBsaWFudEZvcm06c3IsdG9KU09OT2JqZWN0OklyLGlzQXN5bmNGbjpncixpc1RoZW5hYmxlOkJyfTtmdW5jdGlvbiBLKEEsZSx0LHIsbil7RXJyb3IuY2FsbCh0aGlzKSxFcnJvci5jYXB0dXJlU3RhY2tUcmFjZT9FcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLHRoaXMuY29uc3RydWN0b3IpOnRoaXMuc3RhY2s9bmV3IEVycm9yKCkuc3RhY2ssdGhpcy5tZXNzYWdlPUEsdGhpcy5uYW1lPSJBeGlvc0Vycm9yIixlJiYodGhpcy5jb2RlPWUpLHQmJih0aGlzLmNvbmZpZz10KSxyJiYodGhpcy5yZXF1ZXN0PXIpLG4mJih0aGlzLnJlc3BvbnNlPW4pfXMuaW5oZXJpdHMoSyxFcnJvcix7dG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOnMudG9KU09OT2JqZWN0KHRoaXMuY29uZmlnKSxjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5yZXNwb25zZSYmdGhpcy5yZXNwb25zZS5zdGF0dXM/dGhpcy5yZXNwb25zZS5zdGF0dXM6bnVsbH19fSk7dmFyIHllPUsucHJvdG90eXBlLHdlPXt9O1siRVJSX0JBRF9PUFRJT05fVkFMVUUiLCJFUlJfQkFEX09QVElPTiIsIkVDT05OQUJPUlRFRCIsIkVUSU1FRE9VVCIsIkVSUl9ORVRXT1JLIiwiRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUyIsIkVSUl9ERVBSRUNBVEVEIiwiRVJSX0JBRF9SRVNQT05TRSIsIkVSUl9CQURfUkVRVUVTVCIsIkVSUl9DQU5DRUxFRCIsIkVSUl9OT1RfU1VQUE9SVCIsIkVSUl9JTlZBTElEX1VSTCJdLmZvckVhY2goQT0+e3dlW0FdPXt2YWx1ZTpBfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEssd2UpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh5ZSwiaXNBeGlvc0Vycm9yIix7dmFsdWU6ITB9KTtLLmZyb209KEEsZSx0LHIsbixpKT0+e2xldCBvPU9iamVjdC5jcmVhdGUoeWUpO3JldHVybiBzLnRvRmxhdE9iamVjdChBLG8sZnVuY3Rpb24obCl7cmV0dXJuIGwhPT1FcnJvci5wcm90b3R5cGV9LGc9PmchPT0iaXNBeGlvc0Vycm9yIiksSy5jYWxsKG8sQS5tZXNzYWdlLGUsdCxyLG4pLG8uY2F1c2U9QSxvLm5hbWU9QS5uYW1lLGkmJk9iamVjdC5hc3NpZ24obyxpKSxvfTt2YXIgcD1LO3ZhciBjQT1udWxsO2Z1bmN0aW9uIFRBKEEpe3JldHVybiBzLmlzUGxhaW5PYmplY3QoQSl8fHMuaXNBcnJheShBKX1mdW5jdGlvbiBTZShBKXtyZXR1cm4gcy5lbmRzV2l0aChBLCJbXSIpP0Euc2xpY2UoMCwtMik6QX1mdW5jdGlvbiBEZShBLGUsdCl7cmV0dXJuIEE/QS5jb25jYXQoZSkubWFwKGZ1bmN0aW9uKG4saSl7cmV0dXJuIG49U2UobiksIXQmJmk/IlsiK24rIl0iOm59KS5qb2luKHQ/Ii4iOiIiKTplfWZ1bmN0aW9uIENyKEEpe3JldHVybiBzLmlzQXJyYXkoQSkmJiFBLnNvbWUoVEEpfXZhciBscj1zLnRvRmxhdE9iamVjdChzLHt9LG51bGwsZnVuY3Rpb24oZSl7cmV0dXJuL15pc1tBLVpdLy50ZXN0KGUpfSk7ZnVuY3Rpb24gRXIoQSxlLHQpe2lmKCFzLmlzT2JqZWN0KEEpKXRocm93IG5ldyBUeXBlRXJyb3IoInRhcmdldCBtdXN0IGJlIGFuIG9iamVjdCIpO2U9ZXx8bmV3KGNBfHxGb3JtRGF0YSksdD1zLnRvRmxhdE9iamVjdCh0LHttZXRhVG9rZW5zOiEwLGRvdHM6ITEsaW5kZXhlczohMX0sITEsZnVuY3Rpb24oYyx1KXtyZXR1cm4hcy5pc1VuZGVmaW5lZCh1W2NdKX0pO2xldCByPXQubWV0YVRva2VucyxuPXQudmlzaXRvcnx8SSxpPXQuZG90cyxvPXQuaW5kZXhlcyxsPSh0LkJsb2J8fHR5cGVvZiBCbG9iPCJ1IiYmQmxvYikmJnMuaXNTcGVjQ29tcGxpYW50Rm9ybShlKTtpZighcy5pc0Z1bmN0aW9uKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoInZpc2l0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uIik7ZnVuY3Rpb24gQyhFKXtpZihFPT09bnVsbClyZXR1cm4iIjtpZihzLmlzRGF0ZShFKSlyZXR1cm4gRS50b0lTT1N0cmluZygpO2lmKCFsJiZzLmlzQmxvYihFKSl0aHJvdyBuZXcgcCgiQmxvYiBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgYSBCdWZmZXIgaW5zdGVhZC4iKTtyZXR1cm4gcy5pc0FycmF5QnVmZmVyKEUpfHxzLmlzVHlwZWRBcnJheShFKT9sJiZ0eXBlb2YgQmxvYj09ImZ1bmN0aW9uIj9uZXcgQmxvYihbRV0pOkJ1ZmZlci5mcm9tKEUpOkV9ZnVuY3Rpb24gSShFLGMsdSl7bGV0IGQ9RTtpZihFJiYhdSYmdHlwZW9mIEU9PSJvYmplY3QiKXtpZihzLmVuZHNXaXRoKGMsInt9IikpYz1yP2M6Yy5zbGljZSgwLC0yKSxFPUpTT04uc3RyaW5naWZ5KEUpO2Vsc2UgaWYocy5pc0FycmF5KEUpJiZDcihFKXx8KHMuaXNGaWxlTGlzdChFKXx8cy5lbmRzV2l0aChjLCJbXSIpKSYmKGQ9cy50b0FycmF5KEUpKSlyZXR1cm4gYz1TZShjKSxkLmZvckVhY2goZnVuY3Rpb24oVSxFdCl7IShzLmlzVW5kZWZpbmVkKFUpfHxVPT09bnVsbCkmJmUuYXBwZW5kKG89PT0hMD9EZShbY10sRXQsaSk6bz09PW51bGw/YzpjKyJbXSIsQyhVKSl9KSwhMX1yZXR1cm4gVEEoRSk/ITA6KGUuYXBwZW5kKERlKHUsYyxpKSxDKEUpKSwhMSl9bGV0IGE9W10sUT1PYmplY3QuYXNzaWduKGxyLHtkZWZhdWx0VmlzaXRvcjpJLGNvbnZlcnRWYWx1ZTpDLGlzVmlzaXRhYmxlOlRBfSk7ZnVuY3Rpb24gQihFLGMpe2lmKCFzLmlzVW5kZWZpbmVkKEUpKXtpZihhLmluZGV4T2YoRSkhPT0tMSl0aHJvdyBFcnJvcigiQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGluICIrYy5qb2luKCIuIikpO2EucHVzaChFKSxzLmZvckVhY2goRSxmdW5jdGlvbihkLGIpeyghKHMuaXNVbmRlZmluZWQoZCl8fGQ9PT1udWxsKSYmbi5jYWxsKGUsZCxzLmlzU3RyaW5nKGIpP2IudHJpbSgpOmIsYyxRKSk9PT0hMCYmQihkLGM/Yy5jb25jYXQoYik6W2JdKX0pLGEucG9wKCl9fWlmKCFzLmlzT2JqZWN0KEEpKXRocm93IG5ldyBUeXBlRXJyb3IoImRhdGEgbXVzdCBiZSBhbiBvYmplY3QiKTtyZXR1cm4gQihBKSxlfXZhciBUPUVyO2Z1bmN0aW9uIGtlKEEpe2xldCBlPXsiISI6IiUyMSIsIiciOiIlMjciLCIoIjoiJTI4IiwiKSI6IiUyOSIsIn4iOiIlN0UiLCIlMjAiOiIrIiwiJTAwIjoiXDAifTtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEEpLnJlcGxhY2UoL1shJygpfl18JTIwfCUwMC9nLGZ1bmN0aW9uKHIpe3JldHVybiBlW3JdfSl9ZnVuY3Rpb24gUmUoQSxlKXt0aGlzLl9wYWlycz1bXSxBJiZUKEEsdGhpcyxlKX12YXIgRmU9UmUucHJvdG90eXBlO0ZlLmFwcGVuZD1mdW5jdGlvbihlLHQpe3RoaXMuX3BhaXJzLnB1c2goW2UsdF0pfTtGZS50b1N0cmluZz1mdW5jdGlvbihlKXtsZXQgdD1lP2Z1bmN0aW9uKHIpe3JldHVybiBlLmNhbGwodGhpcyxyLGtlKX06a2U7cmV0dXJuIHRoaXMuX3BhaXJzLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gdChuWzBdKSsiPSIrdChuWzFdKX0sIiIpLmpvaW4oIiYiKX07dmFyIHVBPVJlO2Z1bmN0aW9uIFFyKEEpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoQSkucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2csIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjAvZywiKyIpLnJlcGxhY2UoLyU1Qi9naSwiWyIpLnJlcGxhY2UoLyU1RC9naSwiXSIpfWZ1bmN0aW9uIEFBKEEsZSx0KXtpZighZSlyZXR1cm4gQTtsZXQgcj10JiZ0LmVuY29kZXx8UXIsbj10JiZ0LnNlcmlhbGl6ZSxpO2lmKG4/aT1uKGUsdCk6aT1zLmlzVVJMU2VhcmNoUGFyYW1zKGUpP2UudG9TdHJpbmcoKTpuZXcgdUEoZSx0KS50b1N0cmluZyhyKSxpKXtsZXQgbz1BLmluZGV4T2YoIiMiKTtvIT09LTEmJihBPUEuc2xpY2UoMCxvKSksQSs9KEEuaW5kZXhPZigiPyIpPT09LTE/Ij8iOiImIikraX1yZXR1cm4gQX12YXIgeEE9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmhhbmRsZXJzPVtdfXVzZShlLHQscil7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOmUscmVqZWN0ZWQ6dCxzeW5jaHJvbm91czpyP3Iuc3luY2hyb25vdXM6ITEscnVuV2hlbjpyP3IucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX1lamVjdChlKXt0aGlzLmhhbmRsZXJzW2VdJiYodGhpcy5oYW5kbGVyc1tlXT1udWxsKX1jbGVhcigpe3RoaXMuaGFuZGxlcnMmJih0aGlzLmhhbmRsZXJzPVtdKX1mb3JFYWNoKGUpe3MuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLGZ1bmN0aW9uKHIpe3IhPT1udWxsJiZlKHIpfSl9fSxKQT14QTt2YXIgZkE9e3NpbGVudEpTT05QYXJzaW5nOiEwLGZvcmNlZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9O3ZhciBiZT10eXBlb2YgVVJMU2VhcmNoUGFyYW1zPCJ1Ij9VUkxTZWFyY2hQYXJhbXM6dUE7dmFyIFVlPXR5cGVvZiBGb3JtRGF0YTwidSI/Rm9ybURhdGE6bnVsbDt2YXIgTmU9dHlwZW9mIEJsb2I8InUiP0Jsb2I6bnVsbDt2YXIgR2U9e2lzQnJvd3NlcjohMCxjbGFzc2VzOntVUkxTZWFyY2hQYXJhbXM6YmUsRm9ybURhdGE6VWUsQmxvYjpOZX0scHJvdG9jb2xzOlsiaHR0cCIsImh0dHBzIiwiZmlsZSIsImJsb2IiLCJ1cmwiLCJkYXRhIl19O3ZhciBIQT17fTtjdChIQSx7aGFzQnJvd3NlckVudjooKT0+TGUsaGFzU3RhbmRhcmRCcm93c2VyRW52OigpPT5jcixoYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnY6KCk9PnVyfSk7dmFyIExlPXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2YgZG9jdW1lbnQ8InUiLGNyPShBPT5MZSYmWyJSZWFjdE5hdGl2ZSIsIk5hdGl2ZVNjcmlwdCIsIk5TIl0uaW5kZXhPZihBKTwwKSh0eXBlb2YgbmF2aWdhdG9yPCJ1IiYmbmF2aWdhdG9yLnByb2R1Y3QpLHVyPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZTwidSImJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSYmdHlwZW9mIHNlbGYuaW1wb3J0U2NyaXB0cz09ImZ1bmN0aW9uIjt2YXIgeT17Li4uSEEsLi4uR2V9O2Z1bmN0aW9uIE1BKEEsZSl7cmV0dXJuIFQoQSxuZXcgeS5jbGFzc2VzLlVSTFNlYXJjaFBhcmFtcyxPYmplY3QuYXNzaWduKHt2aXNpdG9yOmZ1bmN0aW9uKHQscixuLGkpe3JldHVybiB5LmlzTm9kZSYmcy5pc0J1ZmZlcih0KT8odGhpcy5hcHBlbmQocix0LnRvU3RyaW5nKCJiYXNlNjQiKSksITEpOmkuZGVmYXVsdFZpc2l0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sZSkpfWZ1bmN0aW9uIGZyKEEpe3JldHVybiBzLm1hdGNoQWxsKC9cdyt8XFsoXHcqKV0vZyxBKS5tYXAoZT0+ZVswXT09PSJbXSI/IiI6ZVsxXXx8ZVswXSl9ZnVuY3Rpb24gcHIoQSl7bGV0IGU9e30sdD1PYmplY3Qua2V5cyhBKSxyLG49dC5sZW5ndGgsaTtmb3Iocj0wO3I8bjtyKyspaT10W3JdLGVbaV09QVtpXTtyZXR1cm4gZX1mdW5jdGlvbiBkcihBKXtmdW5jdGlvbiBlKHQscixuLGkpe2xldCBvPXRbaSsrXSxnPU51bWJlci5pc0Zpbml0ZSgrbyksbD1pPj10Lmxlbmd0aDtyZXR1cm4gbz0hbyYmcy5pc0FycmF5KG4pP24ubGVuZ3RoOm8sbD8ocy5oYXNPd25Qcm9wKG4sbyk/bltvXT1bbltvXSxyXTpuW29dPXIsIWcpOigoIW5bb118fCFzLmlzT2JqZWN0KG5bb10pKSYmKG5bb109W10pLGUodCxyLG5bb10saSkmJnMuaXNBcnJheShuW29dKSYmKG5bb109cHIobltvXSkpLCFnKX1pZihzLmlzRm9ybURhdGEoQSkmJnMuaXNGdW5jdGlvbihBLmVudHJpZXMpKXtsZXQgdD17fTtyZXR1cm4gcy5mb3JFYWNoRW50cnkoQSwocixuKT0+e2UoZnIociksbix0LDApfSksdH1yZXR1cm4gbnVsbH12YXIgcEE9ZHI7ZnVuY3Rpb24gbXIoQSxlLHQpe2lmKHMuaXNTdHJpbmcoQSkpdHJ5e3JldHVybihlfHxKU09OLnBhcnNlKShBKSxzLnRyaW0oQSl9Y2F0Y2gocil7aWYoci5uYW1lIT09IlN5bnRheEVycm9yIil0aHJvdyByfXJldHVybih0fHxKU09OLnN0cmluZ2lmeSkoQSl9dmFyIFlBPXt0cmFuc2l0aW9uYWw6ZkEsYWRhcHRlcjpbInhociIsImh0dHAiXSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbihlLHQpe2xldCByPXQuZ2V0Q29udGVudFR5cGUoKXx8IiIsbj1yLmluZGV4T2YoImFwcGxpY2F0aW9uL2pzb24iKT4tMSxpPXMuaXNPYmplY3QoZSk7aWYoaSYmcy5pc0hUTUxGb3JtKGUpJiYoZT1uZXcgRm9ybURhdGEoZSkpLHMuaXNGb3JtRGF0YShlKSlyZXR1cm4gbiYmbj9KU09OLnN0cmluZ2lmeShwQShlKSk6ZTtpZihzLmlzQXJyYXlCdWZmZXIoZSl8fHMuaXNCdWZmZXIoZSl8fHMuaXNTdHJlYW0oZSl8fHMuaXNGaWxlKGUpfHxzLmlzQmxvYihlKSlyZXR1cm4gZTtpZihzLmlzQXJyYXlCdWZmZXJWaWV3KGUpKXJldHVybiBlLmJ1ZmZlcjtpZihzLmlzVVJMU2VhcmNoUGFyYW1zKGUpKXJldHVybiB0LnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIsITEpLGUudG9TdHJpbmcoKTtsZXQgZztpZihpKXtpZihyLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpPi0xKXJldHVybiBNQShlLHRoaXMuZm9ybVNlcmlhbGl6ZXIpLnRvU3RyaW5nKCk7aWYoKGc9cy5pc0ZpbGVMaXN0KGUpKXx8ci5pbmRleE9mKCJtdWx0aXBhcnQvZm9ybS1kYXRhIik+LTEpe2xldCBsPXRoaXMuZW52JiZ0aGlzLmVudi5Gb3JtRGF0YTtyZXR1cm4gVChnP3siZmlsZXNbXSI6ZX06ZSxsJiZuZXcgbCx0aGlzLmZvcm1TZXJpYWxpemVyKX19cmV0dXJuIGl8fG4/KHQuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL2pzb24iLCExKSxtcihlKSk6ZX1dLHRyYW5zZm9ybVJlc3BvbnNlOltmdW5jdGlvbihlKXtsZXQgdD10aGlzLnRyYW5zaXRpb25hbHx8WUEudHJhbnNpdGlvbmFsLHI9dCYmdC5mb3JjZWRKU09OUGFyc2luZyxuPXRoaXMucmVzcG9uc2VUeXBlPT09Impzb24iO2lmKGUmJnMuaXNTdHJpbmcoZSkmJihyJiYhdGhpcy5yZXNwb25zZVR5cGV8fG4pKXtsZXQgbz0hKHQmJnQuc2lsZW50SlNPTlBhcnNpbmcpJiZuO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShlKX1jYXRjaChnKXtpZihvKXRocm93IGcubmFtZT09PSJTeW50YXhFcnJvciI/cC5mcm9tKGcscC5FUlJfQkFEX1JFU1BPTlNFLHRoaXMsbnVsbCx0aGlzLnJlc3BvbnNlKTpnfX1yZXR1cm4gZX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSxtYXhCb2R5TGVuZ3RoOi0xLGVudjp7Rm9ybURhdGE6eS5jbGFzc2VzLkZvcm1EYXRhLEJsb2I6eS5jbGFzc2VzLkJsb2J9LHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0yMDAmJmU8MzAwfSxoZWFkZXJzOntjb21tb246e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIiwiQ29udGVudC1UeXBlIjp2b2lkIDB9fX07cy5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCJdLEE9PntZQS5oZWFkZXJzW0FdPXt9fSk7dmFyIFc9WUE7dmFyIGhyPXMudG9PYmplY3RTZXQoWyJhZ2UiLCJhdXRob3JpemF0aW9uIiwiY29udGVudC1sZW5ndGgiLCJjb250ZW50LXR5cGUiLCJldGFnIiwiZXhwaXJlcyIsImZyb20iLCJob3N0IiwiaWYtbW9kaWZpZWQtc2luY2UiLCJpZi11bm1vZGlmaWVkLXNpbmNlIiwibGFzdC1tb2RpZmllZCIsImxvY2F0aW9uIiwibWF4LWZvcndhcmRzIiwicHJveHktYXV0aG9yaXphdGlvbiIsInJlZmVyZXIiLCJyZXRyeS1hZnRlciIsInVzZXItYWdlbnQiXSksT2U9QT0+e2xldCBlPXt9LHQscixuO3JldHVybiBBJiZBLnNwbGl0KGAKYCkuZm9yRWFjaChmdW5jdGlvbihvKXtuPW8uaW5kZXhPZigiOiIpLHQ9by5zdWJzdHJpbmcoMCxuKS50cmltKCkudG9Mb3dlckNhc2UoKSxyPW8uc3Vic3RyaW5nKG4rMSkudHJpbSgpLCEoIXR8fGVbdF0mJmhyW3RdKSYmKHQ9PT0ic2V0LWNvb2tpZSI/ZVt0XT9lW3RdLnB1c2gocik6ZVt0XT1bcl06ZVt0XT1lW3RdP2VbdF0rIiwgIityOnIpfSksZX07dmFyIFBlPVN5bWJvbCgiaW50ZXJuYWxzIik7ZnVuY3Rpb24gZUEoQSl7cmV0dXJuIEEmJlN0cmluZyhBKS50cmltKCkudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBkQShBKXtyZXR1cm4gQT09PSExfHxBPT1udWxsP0E6cy5pc0FycmF5KEEpP0EubWFwKGRBKTpTdHJpbmcoQSl9ZnVuY3Rpb24geXIoQSl7bGV0IGU9T2JqZWN0LmNyZWF0ZShudWxsKSx0PS8oW15ccyw7PV0rKVxzKig/Oj1ccyooW14sO10rKSk/L2cscjtmb3IoO3I9dC5leGVjKEEpOyllW3JbMV1dPXJbMl07cmV0dXJuIGV9dmFyIHdyPUE9Pi9eWy1fYS16QS1aMC05XmB8fiwhIyQlJicqKy5dKyQvLnRlc3QoQS50cmltKCkpO2Z1bmN0aW9uIHFBKEEsZSx0LHIsbil7aWYocy5pc0Z1bmN0aW9uKHIpKXJldHVybiByLmNhbGwodGhpcyxlLHQpO2lmKG4mJihlPXQpLCEhcy5pc1N0cmluZyhlKSl7aWYocy5pc1N0cmluZyhyKSlyZXR1cm4gZS5pbmRleE9mKHIpIT09LTE7aWYocy5pc1JlZ0V4cChyKSlyZXR1cm4gci50ZXN0KGUpfX1mdW5jdGlvbiBEcihBKXtyZXR1cm4gQS50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8oW2EtelxkXSkoXHcqKS9nLChlLHQscik9PnQudG9VcHBlckNhc2UoKStyKX1mdW5jdGlvbiBTcihBLGUpe2xldCB0PXMudG9DYW1lbENhc2UoIiAiK2UpO1siZ2V0Iiwic2V0IiwiaGFzIl0uZm9yRWFjaChyPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KEEscit0LHt2YWx1ZTpmdW5jdGlvbihuLGksbyl7cmV0dXJuIHRoaXNbcl0uY2FsbCh0aGlzLGUsbixpLG8pfSxjb25maWd1cmFibGU6ITB9KX0pfXZhciBqPWNsYXNze2NvbnN0cnVjdG9yKGUpe2UmJnRoaXMuc2V0KGUpfXNldChlLHQscil7bGV0IG49dGhpcztmdW5jdGlvbiBpKGcsbCxDKXtsZXQgST1lQShsKTtpZighSSl0aHJvdyBuZXcgRXJyb3IoImhlYWRlciBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nIik7bGV0IGE9cy5maW5kS2V5KG4sSSk7KCFhfHxuW2FdPT09dm9pZCAwfHxDPT09ITB8fEM9PT12b2lkIDAmJm5bYV0hPT0hMSkmJihuW2F8fGxdPWRBKGcpKX1sZXQgbz0oZyxsKT0+cy5mb3JFYWNoKGcsKEMsSSk9PmkoQyxJLGwpKTtyZXR1cm4gcy5pc1BsYWluT2JqZWN0KGUpfHxlIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9vKGUsdCk6cy5pc1N0cmluZyhlKSYmKGU9ZS50cmltKCkpJiYhd3IoZSk/byhPZShlKSx0KTplIT1udWxsJiZpKHQsZSxyKSx0aGlzfWdldChlLHQpe2lmKGU9ZUEoZSksZSl7bGV0IHI9cy5maW5kS2V5KHRoaXMsZSk7aWYocil7bGV0IG49dGhpc1tyXTtpZighdClyZXR1cm4gbjtpZih0PT09ITApcmV0dXJuIHlyKG4pO2lmKHMuaXNGdW5jdGlvbih0KSlyZXR1cm4gdC5jYWxsKHRoaXMsbixyKTtpZihzLmlzUmVnRXhwKHQpKXJldHVybiB0LmV4ZWMobik7dGhyb3cgbmV3IFR5cGVFcnJvcigicGFyc2VyIG11c3QgYmUgYm9vbGVhbnxyZWdleHB8ZnVuY3Rpb24iKX19fWhhcyhlLHQpe2lmKGU9ZUEoZSksZSl7bGV0IHI9cy5maW5kS2V5KHRoaXMsZSk7cmV0dXJuISEociYmdGhpc1tyXSE9PXZvaWQgMCYmKCF0fHxxQSh0aGlzLHRoaXNbcl0scix0KSkpfXJldHVybiExfWRlbGV0ZShlLHQpe2xldCByPXRoaXMsbj0hMTtmdW5jdGlvbiBpKG8pe2lmKG89ZUEobyksbyl7bGV0IGc9cy5maW5kS2V5KHIsbyk7ZyYmKCF0fHxxQShyLHJbZ10sZyx0KSkmJihkZWxldGUgcltnXSxuPSEwKX19cmV0dXJuIHMuaXNBcnJheShlKT9lLmZvckVhY2goaSk6aShlKSxufWNsZWFyKGUpe2xldCB0PU9iamVjdC5rZXlzKHRoaXMpLHI9dC5sZW5ndGgsbj0hMTtmb3IoO3ItLTspe2xldCBpPXRbcl07KCFlfHxxQSh0aGlzLHRoaXNbaV0saSxlLCEwKSkmJihkZWxldGUgdGhpc1tpXSxuPSEwKX1yZXR1cm4gbn1ub3JtYWxpemUoZSl7bGV0IHQ9dGhpcyxyPXt9O3JldHVybiBzLmZvckVhY2godGhpcywobixpKT0+e2xldCBvPXMuZmluZEtleShyLGkpO2lmKG8pe3Rbb109ZEEobiksZGVsZXRlIHRbaV07cmV0dXJufWxldCBnPWU/RHIoaSk6U3RyaW5nKGkpLnRyaW0oKTtnIT09aSYmZGVsZXRlIHRbaV0sdFtnXT1kQShuKSxyW2ddPSEwfSksdGhpc31jb25jYXQoLi4uZSl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY29uY2F0KHRoaXMsLi4uZSl9dG9KU09OKGUpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIHMuZm9yRWFjaCh0aGlzLChyLG4pPT57ciE9bnVsbCYmciE9PSExJiYodFtuXT1lJiZzLmlzQXJyYXkocik/ci5qb2luKCIsICIpOnIpfSksdH1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKVtTeW1ib2wuaXRlcmF0b3JdKCl9dG9TdHJpbmcoKXtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSkubWFwKChbZSx0XSk9PmUrIjogIit0KS5qb2luKGAKYCl9Z2V0W1N5bWJvbC50b1N0cmluZ1RhZ10oKXtyZXR1cm4iQXhpb3NIZWFkZXJzIn1zdGF0aWMgZnJvbShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHRoaXM/ZTpuZXcgdGhpcyhlKX1zdGF0aWMgY29uY2F0KGUsLi4udCl7bGV0IHI9bmV3IHRoaXMoZSk7cmV0dXJuIHQuZm9yRWFjaChuPT5yLnNldChuKSkscn1zdGF0aWMgYWNjZXNzb3IoZSl7bGV0IHI9KHRoaXNbUGVdPXRoaXNbUGVdPXthY2Nlc3NvcnM6e319KS5hY2Nlc3NvcnMsbj10aGlzLnByb3RvdHlwZTtmdW5jdGlvbiBpKG8pe2xldCBnPWVBKG8pO3JbZ118fChTcihuLG8pLHJbZ109ITApfXJldHVybiBzLmlzQXJyYXkoZSk/ZS5mb3JFYWNoKGkpOmkoZSksdGhpc319O2ouYWNjZXNzb3IoWyJDb250ZW50LVR5cGUiLCJDb250ZW50LUxlbmd0aCIsIkFjY2VwdCIsIkFjY2VwdC1FbmNvZGluZyIsIlVzZXItQWdlbnQiLCJBdXRob3JpemF0aW9uIl0pO3MucmVkdWNlRGVzY3JpcHRvcnMoai5wcm90b3R5cGUsKHt2YWx1ZTpBfSxlKT0+e2xldCB0PWVbMF0udG9VcHBlckNhc2UoKStlLnNsaWNlKDEpO3JldHVybntnZXQ6KCk9PkEsc2V0KHIpe3RoaXNbdF09cn19fSk7cy5mcmVlemVNZXRob2RzKGopO3ZhciB3PWo7ZnVuY3Rpb24gdEEoQSxlKXtsZXQgdD10aGlzfHxXLHI9ZXx8dCxuPXcuZnJvbShyLmhlYWRlcnMpLGk9ci5kYXRhO3JldHVybiBzLmZvckVhY2goQSxmdW5jdGlvbihnKXtpPWcuY2FsbCh0LGksbi5ub3JtYWxpemUoKSxlP2Uuc3RhdHVzOnZvaWQgMCl9KSxuLm5vcm1hbGl6ZSgpLGl9ZnVuY3Rpb24gckEoQSl7cmV0dXJuISEoQSYmQS5fX0NBTkNFTF9fKX1mdW5jdGlvbiBUZShBLGUsdCl7cC5jYWxsKHRoaXMsQT8/ImNhbmNlbGVkIixwLkVSUl9DQU5DRUxFRCxlLHQpLHRoaXMubmFtZT0iQ2FuY2VsZWRFcnJvciJ9cy5pbmhlcml0cyhUZSxwLHtfX0NBTkNFTF9fOiEwfSk7dmFyIHg9VGU7ZnVuY3Rpb24gS0EoQSxlLHQpe2xldCByPXQuY29uZmlnLnZhbGlkYXRlU3RhdHVzOyF0LnN0YXR1c3x8IXJ8fHIodC5zdGF0dXMpP0EodCk6ZShuZXcgcCgiUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK3Quc3RhdHVzLFtwLkVSUl9CQURfUkVRVUVTVCxwLkVSUl9CQURfUkVTUE9OU0VdW01hdGguZmxvb3IodC5zdGF0dXMvMTAwKS00XSx0LmNvbmZpZyx0LnJlcXVlc3QsdCkpfXZhciB4ZT15Lmhhc1N0YW5kYXJkQnJvd3NlckVudj97d3JpdGUoQSxlLHQscixuLGkpe2xldCBvPVtBKyI9IitlbmNvZGVVUklDb21wb25lbnQoZSldO3MuaXNOdW1iZXIodCkmJm8ucHVzaCgiZXhwaXJlcz0iK25ldyBEYXRlKHQpLnRvR01UU3RyaW5nKCkpLHMuaXNTdHJpbmcocikmJm8ucHVzaCgicGF0aD0iK3IpLHMuaXNTdHJpbmcobikmJm8ucHVzaCgiZG9tYWluPSIrbiksaT09PSEwJiZvLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1vLmpvaW4oIjsgIil9LHJlYWQoQSl7bGV0IGU9ZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoIihefDtcXHMqKSgiK0ErIik9KFteO10qKSIpKTtyZXR1cm4gZT9kZWNvZGVVUklDb21wb25lbnQoZVszXSk6bnVsbH0scmVtb3ZlKEEpe3RoaXMud3JpdGUoQSwiIixEYXRlLm5vdygpLTg2NGU1KX19Ont3cml0ZSgpe30scmVhZCgpe3JldHVybiBudWxsfSxyZW1vdmUoKXt9fTtmdW5jdGlvbiBXQShBKXtyZXR1cm4vXihbYS16XVthLXpcZCtcLS5dKjopP1wvXC8vaS50ZXN0KEEpfWZ1bmN0aW9uIGpBKEEsZSl7cmV0dXJuIGU/QS5yZXBsYWNlKC9cLyskLywiIikrIi8iK2UucmVwbGFjZSgvXlwvKy8sIiIpOkF9ZnVuY3Rpb24gbkEoQSxlKXtyZXR1cm4gQSYmIVdBKGUpP2pBKEEsZSk6ZX12YXIgSmU9eS5oYXNTdGFuZGFyZEJyb3dzZXJFbnY/ZnVuY3Rpb24oKXtsZXQgZT0vKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpLHI7ZnVuY3Rpb24gbihpKXtsZXQgbz1pO3JldHVybiBlJiYodC5zZXRBdHRyaWJ1dGUoImhyZWYiLG8pLG89dC5ocmVmKSx0LnNldEF0dHJpYnV0ZSgiaHJlZiIsbykse2hyZWY6dC5ocmVmLHByb3RvY29sOnQucHJvdG9jb2w/dC5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6dC5ob3N0LHNlYXJjaDp0LnNlYXJjaD90LnNlYXJjaC5yZXBsYWNlKC9eXD8vLCIiKToiIixoYXNoOnQuaGFzaD90Lmhhc2gucmVwbGFjZSgvXiMvLCIiKToiIixob3N0bmFtZTp0Lmhvc3RuYW1lLHBvcnQ6dC5wb3J0LHBhdGhuYW1lOnQucGF0aG5hbWUuY2hhckF0KDApPT09Ii8iP3QucGF0aG5hbWU6Ii8iK3QucGF0aG5hbWV9fXJldHVybiByPW4od2luZG93LmxvY2F0aW9uLmhyZWYpLGZ1bmN0aW9uKG8pe2xldCBnPXMuaXNTdHJpbmcobyk/bihvKTpvO3JldHVybiBnLnByb3RvY29sPT09ci5wcm90b2NvbCYmZy5ob3N0PT09ci5ob3N0fX0oKTpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiEwfX0oKTtmdW5jdGlvbiB2QShBKXtsZXQgZT0vXihbLStcd117MSwyNX0pKDo/XC9cL3w6KS8uZXhlYyhBKTtyZXR1cm4gZSYmZVsxXXx8IiJ9ZnVuY3Rpb24ga3IoQSxlKXtBPUF8fDEwO2xldCB0PW5ldyBBcnJheShBKSxyPW5ldyBBcnJheShBKSxuPTAsaT0wLG87cmV0dXJuIGU9ZSE9PXZvaWQgMD9lOjFlMyxmdW5jdGlvbihsKXtsZXQgQz1EYXRlLm5vdygpLEk9cltpXTtvfHwobz1DKSx0W25dPWwscltuXT1DO2xldCBhPWksUT0wO2Zvcig7YSE9PW47KVErPXRbYSsrXSxhPWElQTtpZihuPShuKzEpJUEsbj09PWkmJihpPShpKzEpJUEpLEMtbzxlKXJldHVybjtsZXQgQj1JJiZDLUk7cmV0dXJuIEI/TWF0aC5yb3VuZChRKjFlMy9CKTp2b2lkIDB9fXZhciBIZT1rcjtmdW5jdGlvbiBNZShBLGUpe2xldCB0PTAscj1IZSg1MCwyNTApO3JldHVybiBuPT57bGV0IGk9bi5sb2FkZWQsbz1uLmxlbmd0aENvbXB1dGFibGU/bi50b3RhbDp2b2lkIDAsZz1pLXQsbD1yKGcpLEM9aTw9bzt0PWk7bGV0IEk9e2xvYWRlZDppLHRvdGFsOm8scHJvZ3Jlc3M6bz9pL286dm9pZCAwLGJ5dGVzOmcscmF0ZTpsfHx2b2lkIDAsZXN0aW1hdGVkOmwmJm8mJkM/KG8taSkvbDp2b2lkIDAsZXZlbnQ6bn07SVtlPyJkb3dubG9hZCI6InVwbG9hZCJdPSEwLEEoSSl9fXZhciBScj10eXBlb2YgWE1MSHR0cFJlcXVlc3Q8InUiLFllPVJyJiZmdW5jdGlvbihBKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odCxyKXtsZXQgbj1BLmRhdGEsaT13LmZyb20oQS5oZWFkZXJzKS5ub3JtYWxpemUoKSx7cmVzcG9uc2VUeXBlOm8sd2l0aFhTUkZUb2tlbjpnfT1BLGw7ZnVuY3Rpb24gQygpe0EuY2FuY2VsVG9rZW4mJkEuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUobCksQS5zaWduYWwmJkEuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixsKX1sZXQgSTtpZihzLmlzRm9ybURhdGEobikpe2lmKHkuaGFzU3RhbmRhcmRCcm93c2VyRW52fHx5Lmhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudilpLnNldENvbnRlbnRUeXBlKCExKTtlbHNlIGlmKChJPWkuZ2V0Q29udGVudFR5cGUoKSkhPT0hMSl7bGV0W2MsLi4udV09ST9JLnNwbGl0KCI7IikubWFwKGQ9PmQudHJpbSgpKS5maWx0ZXIoQm9vbGVhbik6W107aS5zZXRDb250ZW50VHlwZShbY3x8Im11bHRpcGFydC9mb3JtLWRhdGEiLC4uLnVdLmpvaW4oIjsgIikpfX1sZXQgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoQS5hdXRoKXtsZXQgYz1BLmF1dGgudXNlcm5hbWV8fCIiLHU9QS5hdXRoLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChBLmF1dGgucGFzc3dvcmQpKToiIjtpLnNldCgiQXV0aG9yaXphdGlvbiIsIkJhc2ljICIrYnRvYShjKyI6Iit1KSl9bGV0IFE9bkEoQS5iYXNlVVJMLEEudXJsKTthLm9wZW4oQS5tZXRob2QudG9VcHBlckNhc2UoKSxBQShRLEEucGFyYW1zLEEucGFyYW1zU2VyaWFsaXplciksITApLGEudGltZW91dD1BLnRpbWVvdXQ7ZnVuY3Rpb24gQigpe2lmKCFhKXJldHVybjtsZXQgYz13LmZyb20oImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiBhJiZhLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSxkPXtkYXRhOiFvfHxvPT09InRleHQifHxvPT09Impzb24iP2EucmVzcG9uc2VUZXh0OmEucmVzcG9uc2Usc3RhdHVzOmEuc3RhdHVzLHN0YXR1c1RleHQ6YS5zdGF0dXNUZXh0LGhlYWRlcnM6Yyxjb25maWc6QSxyZXF1ZXN0OmF9O0tBKGZ1bmN0aW9uKFUpe3QoVSksQygpfSxmdW5jdGlvbihVKXtyKFUpLEMoKX0sZCksYT1udWxsfWlmKCJvbmxvYWRlbmQiaW4gYT9hLm9ubG9hZGVuZD1COmEub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7IWF8fGEucmVhZHlTdGF0ZSE9PTR8fGEuc3RhdHVzPT09MCYmIShhLnJlc3BvbnNlVVJMJiZhLnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6Iik9PT0wKXx8c2V0VGltZW91dChCKX0sYS5vbmFib3J0PWZ1bmN0aW9uKCl7YSYmKHIobmV3IHAoIlJlcXVlc3QgYWJvcnRlZCIscC5FQ09OTkFCT1JURUQsQSxhKSksYT1udWxsKX0sYS5vbmVycm9yPWZ1bmN0aW9uKCl7cihuZXcgcCgiTmV0d29yayBFcnJvciIscC5FUlJfTkVUV09SSyxBLGEpKSxhPW51bGx9LGEub250aW1lb3V0PWZ1bmN0aW9uKCl7bGV0IHU9QS50aW1lb3V0PyJ0aW1lb3V0IG9mICIrQS50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiLGQ9QS50cmFuc2l0aW9uYWx8fGZBO0EudGltZW91dEVycm9yTWVzc2FnZSYmKHU9QS50aW1lb3V0RXJyb3JNZXNzYWdlKSxyKG5ldyBwKHUsZC5jbGFyaWZ5VGltZW91dEVycm9yP3AuRVRJTUVET1VUOnAuRUNPTk5BQk9SVEVELEEsYSkpLGE9bnVsbH0seS5oYXNTdGFuZGFyZEJyb3dzZXJFbnYmJihnJiZzLmlzRnVuY3Rpb24oZykmJihnPWcoQSkpLGd8fGchPT0hMSYmSmUoUSkpKXtsZXQgYz1BLnhzcmZIZWFkZXJOYW1lJiZBLnhzcmZDb29raWVOYW1lJiZ4ZS5yZWFkKEEueHNyZkNvb2tpZU5hbWUpO2MmJmkuc2V0KEEueHNyZkhlYWRlck5hbWUsYyl9bj09PXZvaWQgMCYmaS5zZXRDb250ZW50VHlwZShudWxsKSwic2V0UmVxdWVzdEhlYWRlciJpbiBhJiZzLmZvckVhY2goaS50b0pTT04oKSxmdW5jdGlvbih1LGQpe2Euc2V0UmVxdWVzdEhlYWRlcihkLHUpfSkscy5pc1VuZGVmaW5lZChBLndpdGhDcmVkZW50aWFscyl8fChhLndpdGhDcmVkZW50aWFscz0hIUEud2l0aENyZWRlbnRpYWxzKSxvJiZvIT09Impzb24iJiYoYS5yZXNwb25zZVR5cGU9QS5yZXNwb25zZVR5cGUpLHR5cGVvZiBBLm9uRG93bmxvYWRQcm9ncmVzcz09ImZ1bmN0aW9uIiYmYS5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsTWUoQS5vbkRvd25sb2FkUHJvZ3Jlc3MsITApKSx0eXBlb2YgQS5vblVwbG9hZFByb2dyZXNzPT0iZnVuY3Rpb24iJiZhLnVwbG9hZCYmYS51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLE1lKEEub25VcGxvYWRQcm9ncmVzcykpLChBLmNhbmNlbFRva2VufHxBLnNpZ25hbCkmJihsPWM9PnthJiYocighY3x8Yy50eXBlP25ldyB4KG51bGwsQSxhKTpjKSxhLmFib3J0KCksYT1udWxsKX0sQS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUobCksQS5zaWduYWwmJihBLnNpZ25hbC5hYm9ydGVkP2woKTpBLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsbCkpKTtsZXQgRT12QShRKTtpZihFJiZ5LnByb3RvY29scy5pbmRleE9mKEUpPT09LTEpe3IobmV3IHAoIlVuc3VwcG9ydGVkIHByb3RvY29sICIrRSsiOiIscC5FUlJfQkFEX1JFUVVFU1QsQSkpO3JldHVybn1hLnNlbmQobnx8bnVsbCl9KX07dmFyIF9BPXtodHRwOmNBLHhocjpZZX07cy5mb3JFYWNoKF9BLChBLGUpPT57aWYoQSl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJuYW1lIix7dmFsdWU6ZX0pfWNhdGNoe31PYmplY3QuZGVmaW5lUHJvcGVydHkoQSwiYWRhcHRlck5hbWUiLHt2YWx1ZTplfSl9fSk7dmFyIHFlPUE9PmAtICR7QX1gLEZyPUE9PnMuaXNGdW5jdGlvbihBKXx8QT09PW51bGx8fEE9PT0hMSxtQT17Z2V0QWRhcHRlcjpBPT57QT1zLmlzQXJyYXkoQSk/QTpbQV07bGV0e2xlbmd0aDplfT1BLHQscixuPXt9O2ZvcihsZXQgaT0wO2k8ZTtpKyspe3Q9QVtpXTtsZXQgbztpZihyPXQsIUZyKHQpJiYocj1fQVsobz1TdHJpbmcodCkpLnRvTG93ZXJDYXNlKCldLHI9PT12b2lkIDApKXRocm93IG5ldyBwKGBVbmtub3duIGFkYXB0ZXIgJyR7b30nYCk7aWYocilicmVhaztuW298fCIjIitpXT1yfWlmKCFyKXtsZXQgaT1PYmplY3QuZW50cmllcyhuKS5tYXAoKFtnLGxdKT0+YGFkYXB0ZXIgJHtnfSBgKyhsPT09ITE/ImlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGVudmlyb25tZW50IjoiaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgYnVpbGQiKSksbz1lP2kubGVuZ3RoPjE/YHNpbmNlIDoKYCtpLm1hcChxZSkuam9pbihgCmApOiIgIitxZShpWzBdKToiYXMgbm8gYWRhcHRlciBzcGVjaWZpZWQiO3Rocm93IG5ldyBwKCJUaGVyZSBpcyBubyBzdWl0YWJsZSBhZGFwdGVyIHRvIGRpc3BhdGNoIHRoZSByZXF1ZXN0ICIrbywiRVJSX05PVF9TVVBQT1JUIil9cmV0dXJuIHJ9LGFkYXB0ZXJzOl9BfTtmdW5jdGlvbiB6QShBKXtpZihBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxBLnNpZ25hbCYmQS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgeChudWxsLEEpfWZ1bmN0aW9uIGhBKEEpe3JldHVybiB6QShBKSxBLmhlYWRlcnM9dy5mcm9tKEEuaGVhZGVycyksQS5kYXRhPXRBLmNhbGwoQSxBLnRyYW5zZm9ybVJlcXVlc3QpLFsicG9zdCIsInB1dCIsInBhdGNoIl0uaW5kZXhPZihBLm1ldGhvZCkhPT0tMSYmQS5oZWFkZXJzLnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLCExKSxtQS5nZXRBZGFwdGVyKEEuYWRhcHRlcnx8Vy5hZGFwdGVyKShBKS50aGVuKGZ1bmN0aW9uKHIpe3JldHVybiB6QShBKSxyLmRhdGE9dEEuY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2Usciksci5oZWFkZXJzPXcuZnJvbShyLmhlYWRlcnMpLHJ9LGZ1bmN0aW9uKHIpe3JldHVybiByQShyKXx8KHpBKEEpLHImJnIucmVzcG9uc2UmJihyLnJlc3BvbnNlLmRhdGE9dEEuY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2Usci5yZXNwb25zZSksci5yZXNwb25zZS5oZWFkZXJzPXcuZnJvbShyLnJlc3BvbnNlLmhlYWRlcnMpKSksUHJvbWlzZS5yZWplY3Qocil9KX12YXIgS2U9QT0+QSBpbnN0YW5jZW9mIHc/QS50b0pTT04oKTpBO2Z1bmN0aW9uIE8oQSxlKXtlPWV8fHt9O2xldCB0PXt9O2Z1bmN0aW9uIHIoQyxJLGEpe3JldHVybiBzLmlzUGxhaW5PYmplY3QoQykmJnMuaXNQbGFpbk9iamVjdChJKT9zLm1lcmdlLmNhbGwoe2Nhc2VsZXNzOmF9LEMsSSk6cy5pc1BsYWluT2JqZWN0KEkpP3MubWVyZ2Uoe30sSSk6cy5pc0FycmF5KEkpP0kuc2xpY2UoKTpJfWZ1bmN0aW9uIG4oQyxJLGEpe2lmKHMuaXNVbmRlZmluZWQoSSkpe2lmKCFzLmlzVW5kZWZpbmVkKEMpKXJldHVybiByKHZvaWQgMCxDLGEpfWVsc2UgcmV0dXJuIHIoQyxJLGEpfWZ1bmN0aW9uIGkoQyxJKXtpZighcy5pc1VuZGVmaW5lZChJKSlyZXR1cm4gcih2b2lkIDAsSSl9ZnVuY3Rpb24gbyhDLEkpe2lmKHMuaXNVbmRlZmluZWQoSSkpe2lmKCFzLmlzVW5kZWZpbmVkKEMpKXJldHVybiByKHZvaWQgMCxDKX1lbHNlIHJldHVybiByKHZvaWQgMCxJKX1mdW5jdGlvbiBnKEMsSSxhKXtpZihhIGluIGUpcmV0dXJuIHIoQyxJKTtpZihhIGluIEEpcmV0dXJuIHIodm9pZCAwLEMpfWxldCBsPXt1cmw6aSxtZXRob2Q6aSxkYXRhOmksYmFzZVVSTDpvLHRyYW5zZm9ybVJlcXVlc3Q6byx0cmFuc2Zvcm1SZXNwb25zZTpvLHBhcmFtc1NlcmlhbGl6ZXI6byx0aW1lb3V0Om8sdGltZW91dE1lc3NhZ2U6byx3aXRoQ3JlZGVudGlhbHM6byx3aXRoWFNSRlRva2VuOm8sYWRhcHRlcjpvLHJlc3BvbnNlVHlwZTpvLHhzcmZDb29raWVOYW1lOm8seHNyZkhlYWRlck5hbWU6byxvblVwbG9hZFByb2dyZXNzOm8sb25Eb3dubG9hZFByb2dyZXNzOm8sZGVjb21wcmVzczpvLG1heENvbnRlbnRMZW5ndGg6byxtYXhCb2R5TGVuZ3RoOm8sYmVmb3JlUmVkaXJlY3Q6byx0cmFuc3BvcnQ6byxodHRwQWdlbnQ6byxodHRwc0FnZW50Om8sY2FuY2VsVG9rZW46byxzb2NrZXRQYXRoOm8scmVzcG9uc2VFbmNvZGluZzpvLHZhbGlkYXRlU3RhdHVzOmcsaGVhZGVyczooQyxJKT0+bihLZShDKSxLZShJKSwhMCl9O3JldHVybiBzLmZvckVhY2goT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxBLGUpKSxmdW5jdGlvbihJKXtsZXQgYT1sW0ldfHxuLFE9YShBW0ldLGVbSV0sSSk7cy5pc1VuZGVmaW5lZChRKSYmYSE9PWd8fCh0W0ldPVEpfSksdH12YXIgeUE9IjEuNi4yIjt2YXIgVkE9e307WyJvYmplY3QiLCJib29sZWFuIiwibnVtYmVyIiwiZnVuY3Rpb24iLCJzdHJpbmciLCJzeW1ib2wiXS5mb3JFYWNoKChBLGUpPT57VkFbQV09ZnVuY3Rpb24ocil7cmV0dXJuIHR5cGVvZiByPT09QXx8ImEiKyhlPDE/Im4gIjoiICIpK0F9fSk7dmFyIFdlPXt9O1ZBLnRyYW5zaXRpb25hbD1mdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbihpLG8pe3JldHVybiJbQXhpb3MgdiIreUErIl0gVHJhbnNpdGlvbmFsIG9wdGlvbiAnIitpKyInIitvKyhyPyIuICIrcjoiIil9cmV0dXJuKGksbyxnKT0+e2lmKGU9PT0hMSl0aHJvdyBuZXcgcChuKG8sIiBoYXMgYmVlbiByZW1vdmVkIisodD8iIGluICIrdDoiIikpLHAuRVJSX0RFUFJFQ0FURUQpO3JldHVybiB0JiYhV2Vbb10mJihXZVtvXT0hMCxjb25zb2xlLndhcm4obihvLCIgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2Iit0KyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLGU/ZShpLG8sZyk6ITB9fTtmdW5jdGlvbiBicihBLGUsdCl7aWYodHlwZW9mIEEhPSJvYmplY3QiKXRocm93IG5ldyBwKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0IixwLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtsZXQgcj1PYmplY3Qua2V5cyhBKSxuPXIubGVuZ3RoO2Zvcig7bi0tID4wOyl7bGV0IGk9cltuXSxvPWVbaV07aWYobyl7bGV0IGc9QVtpXSxsPWc9PT12b2lkIDB8fG8oZyxpLEEpO2lmKGwhPT0hMCl0aHJvdyBuZXcgcCgib3B0aW9uICIraSsiIG11c3QgYmUgIitsLHAuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2NvbnRpbnVlfWlmKHQhPT0hMCl0aHJvdyBuZXcgcCgiVW5rbm93biBvcHRpb24gIitpLHAuRVJSX0JBRF9PUFRJT04pfX12YXIgd0E9e2Fzc2VydE9wdGlvbnM6YnIsdmFsaWRhdG9yczpWQX07dmFyIEo9d0EudmFsaWRhdG9ycyx2PWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuZGVmYXVsdHM9ZSx0aGlzLmludGVyY2VwdG9ycz17cmVxdWVzdDpuZXcgSkEscmVzcG9uc2U6bmV3IEpBfX1yZXF1ZXN0KGUsdCl7dHlwZW9mIGU9PSJzdHJpbmciPyh0PXR8fHt9LHQudXJsPWUpOnQ9ZXx8e30sdD1PKHRoaXMuZGVmYXVsdHMsdCk7bGV0e3RyYW5zaXRpb25hbDpyLHBhcmFtc1NlcmlhbGl6ZXI6bixoZWFkZXJzOml9PXQ7ciE9PXZvaWQgMCYmd0EuYXNzZXJ0T3B0aW9ucyhyLHtzaWxlbnRKU09OUGFyc2luZzpKLnRyYW5zaXRpb25hbChKLmJvb2xlYW4pLGZvcmNlZEpTT05QYXJzaW5nOkoudHJhbnNpdGlvbmFsKEouYm9vbGVhbiksY2xhcmlmeVRpbWVvdXRFcnJvcjpKLnRyYW5zaXRpb25hbChKLmJvb2xlYW4pfSwhMSksbiE9bnVsbCYmKHMuaXNGdW5jdGlvbihuKT90LnBhcmFtc1NlcmlhbGl6ZXI9e3NlcmlhbGl6ZTpufTp3QS5hc3NlcnRPcHRpb25zKG4se2VuY29kZTpKLmZ1bmN0aW9uLHNlcmlhbGl6ZTpKLmZ1bmN0aW9ufSwhMCkpLHQubWV0aG9kPSh0Lm1ldGhvZHx8dGhpcy5kZWZhdWx0cy5tZXRob2R8fCJnZXQiKS50b0xvd2VyQ2FzZSgpO2xldCBvPWkmJnMubWVyZ2UoaS5jb21tb24saVt0Lm1ldGhvZF0pO2kmJnMuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSxFPT57ZGVsZXRlIGlbRV19KSx0LmhlYWRlcnM9dy5jb25jYXQobyxpKTtsZXQgZz1bXSxsPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbihjKXt0eXBlb2YgYy5ydW5XaGVuPT0iZnVuY3Rpb24iJiZjLnJ1bldoZW4odCk9PT0hMXx8KGw9bCYmYy5zeW5jaHJvbm91cyxnLnVuc2hpZnQoYy5mdWxmaWxsZWQsYy5yZWplY3RlZCkpfSk7bGV0IEM9W107dGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihjKXtDLnB1c2goYy5mdWxmaWxsZWQsYy5yZWplY3RlZCl9KTtsZXQgSSxhPTAsUTtpZighbCl7bGV0IEU9W2hBLmJpbmQodGhpcyksdm9pZCAwXTtmb3IoRS51bnNoaWZ0LmFwcGx5KEUsZyksRS5wdXNoLmFwcGx5KEUsQyksUT1FLmxlbmd0aCxJPVByb21pc2UucmVzb2x2ZSh0KTthPFE7KUk9SS50aGVuKEVbYSsrXSxFW2ErK10pO3JldHVybiBJfVE9Zy5sZW5ndGg7bGV0IEI9dDtmb3IoYT0wO2E8UTspe2xldCBFPWdbYSsrXSxjPWdbYSsrXTt0cnl7Qj1FKEIpfWNhdGNoKHUpe2MuY2FsbCh0aGlzLHUpO2JyZWFrfX10cnl7ST1oQS5jYWxsKHRoaXMsQil9Y2F0Y2goRSl7cmV0dXJuIFByb21pc2UucmVqZWN0KEUpfWZvcihhPTAsUT1DLmxlbmd0aDthPFE7KUk9SS50aGVuKENbYSsrXSxDW2ErK10pO3JldHVybiBJfWdldFVyaShlKXtlPU8odGhpcy5kZWZhdWx0cyxlKTtsZXQgdD1uQShlLmJhc2VVUkwsZS51cmwpO3JldHVybiBBQSh0LGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplcil9fTtzLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyJdLGZ1bmN0aW9uKGUpe3YucHJvdG90eXBlW2VdPWZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMucmVxdWVzdChPKHJ8fHt9LHttZXRob2Q6ZSx1cmw6dCxkYXRhOihyfHx7fSkuZGF0YX0pKX19KTtzLmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIpe3JldHVybiBmdW5jdGlvbihpLG8sZyl7cmV0dXJuIHRoaXMucmVxdWVzdChPKGd8fHt9LHttZXRob2Q6ZSxoZWFkZXJzOnI/eyJDb250ZW50LVR5cGUiOiJtdWx0aXBhcnQvZm9ybS1kYXRhIn06e30sdXJsOmksZGF0YTpvfSkpfX12LnByb3RvdHlwZVtlXT10KCksdi5wcm90b3R5cGVbZSsiRm9ybSJdPXQoITApfSk7dmFyIGlBPXY7dmFyIFpBPWNsYXNzIEF7Y29uc3RydWN0b3IoZSl7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO2xldCB0O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihpKXt0PWl9KTtsZXQgcj10aGlzO3RoaXMucHJvbWlzZS50aGVuKG49PntpZighci5fbGlzdGVuZXJzKXJldHVybjtsZXQgaT1yLl9saXN0ZW5lcnMubGVuZ3RoO2Zvcig7aS0tID4wOylyLl9saXN0ZW5lcnNbaV0obik7ci5fbGlzdGVuZXJzPW51bGx9KSx0aGlzLnByb21pc2UudGhlbj1uPT57bGV0IGksbz1uZXcgUHJvbWlzZShnPT57ci5zdWJzY3JpYmUoZyksaT1nfSkudGhlbihuKTtyZXR1cm4gby5jYW5jZWw9ZnVuY3Rpb24oKXtyLnVuc3Vic2NyaWJlKGkpfSxvfSxlKGZ1bmN0aW9uKGksbyxnKXtyLnJlYXNvbnx8KHIucmVhc29uPW5ldyB4KGksbyxnKSx0KHIucmVhc29uKSl9KX10aHJvd0lmUmVxdWVzdGVkKCl7aWYodGhpcy5yZWFzb24pdGhyb3cgdGhpcy5yZWFzb259c3Vic2NyaWJlKGUpe2lmKHRoaXMucmVhc29uKXtlKHRoaXMucmVhc29uKTtyZXR1cm59dGhpcy5fbGlzdGVuZXJzP3RoaXMuX2xpc3RlbmVycy5wdXNoKGUpOnRoaXMuX2xpc3RlbmVycz1bZV19dW5zdWJzY3JpYmUoZSl7aWYoIXRoaXMuX2xpc3RlbmVycylyZXR1cm47bGV0IHQ9dGhpcy5fbGlzdGVuZXJzLmluZGV4T2YoZSk7dCE9PS0xJiZ0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKHQsMSl9c3RhdGljIHNvdXJjZSgpe2xldCBlO3JldHVybnt0b2tlbjpuZXcgQShmdW5jdGlvbihuKXtlPW59KSxjYW5jZWw6ZX19fSxqZT1aQTtmdW5jdGlvbiBYQShBKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIEEuYXBwbHkobnVsbCx0KX19ZnVuY3Rpb24gJEEoQSl7cmV0dXJuIHMuaXNPYmplY3QoQSkmJkEuaXNBeGlvc0Vycm9yPT09ITB9dmFyIEFlPXtDb250aW51ZToxMDAsU3dpdGNoaW5nUHJvdG9jb2xzOjEwMSxQcm9jZXNzaW5nOjEwMixFYXJseUhpbnRzOjEwMyxPazoyMDAsQ3JlYXRlZDoyMDEsQWNjZXB0ZWQ6MjAyLE5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbjoyMDMsTm9Db250ZW50OjIwNCxSZXNldENvbnRlbnQ6MjA1LFBhcnRpYWxDb250ZW50OjIwNixNdWx0aVN0YXR1czoyMDcsQWxyZWFkeVJlcG9ydGVkOjIwOCxJbVVzZWQ6MjI2LE11bHRpcGxlQ2hvaWNlczozMDAsTW92ZWRQZXJtYW5lbnRseTozMDEsRm91bmQ6MzAyLFNlZU90aGVyOjMwMyxOb3RNb2RpZmllZDozMDQsVXNlUHJveHk6MzA1LFVudXNlZDozMDYsVGVtcG9yYXJ5UmVkaXJlY3Q6MzA3LFBlcm1hbmVudFJlZGlyZWN0OjMwOCxCYWRSZXF1ZXN0OjQwMCxVbmF1dGhvcml6ZWQ6NDAxLFBheW1lbnRSZXF1aXJlZDo0MDIsRm9yYmlkZGVuOjQwMyxOb3RGb3VuZDo0MDQsTWV0aG9kTm90QWxsb3dlZDo0MDUsTm90QWNjZXB0YWJsZTo0MDYsUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkOjQwNyxSZXF1ZXN0VGltZW91dDo0MDgsQ29uZmxpY3Q6NDA5LEdvbmU6NDEwLExlbmd0aFJlcXVpcmVkOjQxMSxQcmVjb25kaXRpb25GYWlsZWQ6NDEyLFBheWxvYWRUb29MYXJnZTo0MTMsVXJpVG9vTG9uZzo0MTQsVW5zdXBwb3J0ZWRNZWRpYVR5cGU6NDE1LFJhbmdlTm90U2F0aXNmaWFibGU6NDE2LEV4cGVjdGF0aW9uRmFpbGVkOjQxNyxJbUFUZWFwb3Q6NDE4LE1pc2RpcmVjdGVkUmVxdWVzdDo0MjEsVW5wcm9jZXNzYWJsZUVudGl0eTo0MjIsTG9ja2VkOjQyMyxGYWlsZWREZXBlbmRlbmN5OjQyNCxUb29FYXJseTo0MjUsVXBncmFkZVJlcXVpcmVkOjQyNixQcmVjb25kaXRpb25SZXF1aXJlZDo0MjgsVG9vTWFueVJlcXVlc3RzOjQyOSxSZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2U6NDMxLFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zOjQ1MSxJbnRlcm5hbFNlcnZlckVycm9yOjUwMCxOb3RJbXBsZW1lbnRlZDo1MDEsQmFkR2F0ZXdheTo1MDIsU2VydmljZVVuYXZhaWxhYmxlOjUwMyxHYXRld2F5VGltZW91dDo1MDQsSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQ6NTA1LFZhcmlhbnRBbHNvTmVnb3RpYXRlczo1MDYsSW5zdWZmaWNpZW50U3RvcmFnZTo1MDcsTG9vcERldGVjdGVkOjUwOCxOb3RFeHRlbmRlZDo1MTAsTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6NTExfTtPYmplY3QuZW50cmllcyhBZSkuZm9yRWFjaCgoW0EsZV0pPT57QWVbZV09QX0pO3ZhciB2ZT1BZTtmdW5jdGlvbiBfZShBKXtsZXQgZT1uZXcgaUEoQSksdD1aKGlBLnByb3RvdHlwZS5yZXF1ZXN0LGUpO3JldHVybiBzLmV4dGVuZCh0LGlBLnByb3RvdHlwZSxlLHthbGxPd25LZXlzOiEwfSkscy5leHRlbmQodCxlLG51bGwse2FsbE93bktleXM6ITB9KSx0LmNyZWF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gX2UoTyhBLG4pKX0sdH12YXIgbT1fZShXKTttLkF4aW9zPWlBO20uQ2FuY2VsZWRFcnJvcj14O20uQ2FuY2VsVG9rZW49amU7bS5pc0NhbmNlbD1yQTttLlZFUlNJT049eUE7bS50b0Zvcm1EYXRhPVQ7bS5BeGlvc0Vycm9yPXA7bS5DYW5jZWw9bS5DYW5jZWxlZEVycm9yO20uYWxsPWZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChlKX07bS5zcHJlYWQ9WEE7bS5pc0F4aW9zRXJyb3I9JEE7bS5tZXJnZUNvbmZpZz1PO20uQXhpb3NIZWFkZXJzPXc7bS5mb3JtVG9KU09OPUE9PnBBKHMuaXNIVE1MRm9ybShBKT9uZXcgRm9ybURhdGEoQSk6QSk7bS5nZXRBZGFwdGVyPW1BLmdldEFkYXB0ZXI7bS5IdHRwU3RhdHVzQ29kZT12ZTttLmRlZmF1bHQ9bTt2YXIgXz1tO3ZhcntBeGlvczpabyxBeGlvc0Vycm9yOlhvLENhbmNlbGVkRXJyb3I6JG8saXNDYW5jZWw6QWEsQ2FuY2VsVG9rZW46ZWEsVkVSU0lPTjp0YSxhbGw6cmEsQ2FuY2VsOm5hLGlzQXhpb3NFcnJvcjppYSxzcHJlYWQ6b2EsdG9Gb3JtRGF0YTphYSxBeGlvc0hlYWRlcnM6c2EsSHR0cFN0YXR1c0NvZGU6SWEsZm9ybVRvSlNPTjpnYSxnZXRBZGFwdGVyOkJhLG1lcmdlQ29uZmlnOkNhfT1fO2FzeW5jIGZ1bmN0aW9uIFVyKEEsZSl7bGV0IHQ9QSxyPW51bGw7aWYodD09bnVsbClyPW5ldyBXb3JrZXIobmV3IFVSTCgiLi93ZWItd29ya2Vycy9pdGstd2FzbS1waXBlbGluZS53b3JrZXIuanMiLGltcG9ydC5tZXRhLnVybCkse3R5cGU6Im1vZHVsZSJ9KTtlbHNlIGlmKHQuc3RhcnRzV2l0aCgiaHR0cCIpKXtsZXQgbj1hd2FpdCBfLmdldCh0LHtyZXNwb25zZVR5cGU6ImJsb2IiLHBhcmFtczplfSksaT1VUkwuY3JlYXRlT2JqZWN0VVJMKG4uZGF0YSk7cj1uZXcgV29ya2VyKGkse3R5cGU6Im1vZHVsZSJ9KX1lbHNlIHI9bmV3IFdvcmtlcih0LHt0eXBlOiJtb2R1bGUifSk7cmV0dXJuIHJ9dmFyIG9BPVVyO2Z1bmN0aW9uIHplKEEpe2xldCBlPU5BKEEpLHQ9QTtyZXR1cm4gdC50ZXJtaW5hdGVkPSExLHQud29ya2VyUHJveHk9ZSx0Lm9yaWdpbmFsVGVybWluYXRlPXQudGVybWluYXRlLHQudGVybWluYXRlPSgpPT57dC50ZXJtaW5hdGVkPSEwLHQud29ya2VyUHJveHlbVUFdKCksdC5vcmlnaW5hbFRlcm1pbmF0ZSgpfSx7d29ya2VyUHJveHk6ZSx3b3JrZXI6dH19YXN5bmMgZnVuY3Rpb24gTnIoQSxlLHQpe2xldCByO2lmKEEhPW51bGwpe2xldCBpPUE7cmV0dXJuIGkud29ya2VyUHJveHkhPT12b2lkIDA/KHI9aS53b3JrZXJQcm94eSx7d29ya2VyUHJveHk6cix3b3JrZXI6aX0pOnplKEEpfWxldCBuPWF3YWl0IG9BKGUsdCk7cmV0dXJuIHplKG4pfXZhciBWZT1Ocjthc3luYyBmdW5jdGlvbiBHcihBLGUsdCl7bGV0IHI9InVua25vd24iO3R5cGVvZiBBIT0ic3RyaW5nIj9yPUEuaHJlZjpBLnN0YXJ0c1dpdGgoImh0dHAiKT9yPUE6cj10eXBlb2YgZTwidSI/YCR7ZX0vJHtBfWA6QSxyLmVuZHNXaXRoKCIuanMiKSYmKHI9ci5zdWJzdHJpbmcoMCxyLmxlbmd0aC0zKSksci5lbmRzV2l0aCgiLndhc20iKSYmKHI9ci5zdWJzdHJpbmcoMCxyLmxlbmd0aC01KSk7bGV0IG49YCR7cn0ud2FzbWAsbz0oYXdhaXQgXy5nZXQobix7cmVzcG9uc2VUeXBlOiJhcnJheWJ1ZmZlciIscGFyYW1zOnR9KSkuZGF0YTtyZXR1cm4oYXdhaXQgaW1wb3J0KGAke3J9LmpzYCkpLmRlZmF1bHQoe3dhc21CaW5hcnk6b30pfXZhciBaZT1Hcjt2YXIgWGU9YXN5bmMoKT0+V2ViQXNzZW1ibHkudmFsaWRhdGUobmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsNSwxLDk2LDAsMSwxMjMsMywyLDEsMCwxMCwxMCwxLDgsMCw2NSwwLDI1MywxNSwyNTMsOTgsMTFdKSk7dmFyIGV0PXR5cGVvZiBnbG9iYWxUaGlzLlNoYXJlZEFycmF5QnVmZmVyPT0iZnVuY3Rpb24iLCRlPW5ldyBUZXh0RW5jb2RlcixBdD1uZXcgVGV4dERlY29kZXIoInV0Zi04Iik7ZnVuY3Rpb24gTHIoQSxlKXtsZXQgdD17ZmxhZ3M6InIiLGVuY29kaW5nOiJiaW5hcnkifSxyPUEuZnNfb3BlbihlLHQuZmxhZ3MpLGk9QS5mc19zdGF0KGUpLnNpemUsbz1udWxsO2V0P289bmV3IFNoYXJlZEFycmF5QnVmZmVyKGkpOm89bmV3IEFycmF5QnVmZmVyKGkpO2xldCBnPW5ldyBVaW50OEFycmF5KG8pO3JldHVybiBBLmZzX3JlYWQocixnLDAsaSwwKSxBLmZzX2Nsb3NlKHIpLGd9ZnVuY3Rpb24gdHQoQSxlLHQpe2xldCByPW51bGw7ZXQ/cj1uZXcgU2hhcmVkQXJyYXlCdWZmZXIodCk6cj1uZXcgQXJyYXlCdWZmZXIodCk7bGV0IG49bmV3IFVpbnQ4QXJyYXkociksaT1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsZSx0KTtyZXR1cm4gbi5zZXQoaSksbn1mdW5jdGlvbiBoKEEsZSx0LHIpe2xldCBuPTA7cmV0dXJuIGUhPT1udWxsJiYobj1BLmNjYWxsKCJpdGtfd2FzbV9pbnB1dF9hcnJheV9hbGxvYyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCx0LHIsZS5idWZmZXIuYnl0ZUxlbmd0aF0pLEEuSEVBUFU4LnNldChuZXcgVWludDhBcnJheShlLmJ1ZmZlciksbikpLG59ZnVuY3Rpb24geihBLGUsdCl7bGV0IHI9SlNPTi5zdHJpbmdpZnkoZSksbj1BLmNjYWxsKCJpdGtfd2FzbV9pbnB1dF9qc29uX2FsbG9jIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHQsci5sZW5ndGhdKTtBLndyaXRlQXNjaWlUb01lbW9yeShyLG4sITEpfWZ1bmN0aW9uIFMoQSxlLHQscil7bGV0IG49QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsZSx0XSksaT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxlLHRdKSxvPXR0KEEsbixpKTtyZXR1cm4gUChyLG8uYnVmZmVyKX1mdW5jdGlvbiBlZShBLGUpe2xldCB0PUEuY2NhbGwoIml0a193YXNtX291dHB1dF9qc29uX2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIl0sWzAsZV0pLHI9QS5Bc2NpaVRvU3RyaW5nKHQpO3JldHVybiBKU09OLnBhcnNlKHIpfWZ1bmN0aW9uIE9yKEEsZSx0LHIpe3IhPW51bGwmJnIubGVuZ3RoPjAmJnIuZm9yRWFjaChmdW5jdGlvbihDLEkpe3N3aXRjaChDLnR5cGUpe2Nhc2UgZi5UZXh0U3RyZWFtOntsZXQgYT0kZS5lbmNvZGUoQy5kYXRhLmRhdGEpLFE9aChBLGEsSSwwKSxCPXtzaXplOmEuYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1F9YH07eihBLEIsSSk7YnJlYWt9Y2FzZSBmLkpzb25Db21wYXRpYmxlOntsZXQgYT0kZS5lbmNvZGUoSlNPTi5zdHJpbmdpZnkoQy5kYXRhKSksUT1oKEEsYSxJLDApLEI9e3NpemU6YS5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7UX1gfTt6KEEsQixJKTticmVha31jYXNlIGYuQmluYXJ5U3RyZWFtOntsZXQgYT1DLmRhdGEuZGF0YSxRPWgoQSxhLEksMCksQj17c2l6ZTphLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWB9O3ooQSxCLEkpO2JyZWFrfWNhc2UgZi5UZXh0RmlsZTp7QS5mc193cml0ZUZpbGUoQy5kYXRhLnBhdGgsQy5kYXRhLmRhdGEpO2JyZWFrfWNhc2UgZi5CaW5hcnlGaWxlOntBLmZzX3dyaXRlRmlsZShDLmRhdGEucGF0aCxDLmRhdGEuZGF0YSk7YnJlYWt9Y2FzZSBmLkltYWdlOntsZXQgYT1DLmRhdGEsUT1oKEEsYS5kYXRhLEksMCksQj1oKEEsYS5kaXJlY3Rpb24sSSwxKSxFPXR5cGVvZiBhLm1ldGFkYXRhPy5lbnRyaWVzPCJ1Ij9KU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKGEubWV0YWRhdGEuZW50cmllcygpKSk6IltdIixjPXtpbWFnZVR5cGU6YS5pbWFnZVR5cGUsbmFtZTphLm5hbWUsb3JpZ2luOmEub3JpZ2luLHNwYWNpbmc6YS5zcGFjaW5nLGRpcmVjdGlvbjpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0J9YCxzaXplOmEuc2l6ZSxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7UX1gLG1ldGFkYXRhOkV9O3ooQSxjLEkpO2JyZWFrfWNhc2UgZi5NZXNoOntsZXQgYT1DLmRhdGEsUT1oKEEsYS5wb2ludHMsSSwwKSxCPWgoQSxhLmNlbGxzLEksMSksRT1oKEEsYS5wb2ludERhdGEsSSwyKSxjPWgoQSxhLmNlbGxEYXRhLEksMyksdT17bWVzaFR5cGU6YS5tZXNoVHlwZSxuYW1lOmEubmFtZSxudW1iZXJPZlBvaW50czphLm51bWJlck9mUG9pbnRzLHBvaW50czpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1F9YCxudW1iZXJPZkNlbGxzOmEubnVtYmVyT2ZDZWxscyxjZWxsczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0J9YCxjZWxsQnVmZmVyU2l6ZTphLmNlbGxCdWZmZXJTaXplLG51bWJlck9mUG9pbnRQaXhlbHM6YS5udW1iZXJPZlBvaW50UGl4ZWxzLHBvaW50RGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0V9YCxudW1iZXJPZkNlbGxQaXhlbHM6YS5udW1iZXJPZkNlbGxQaXhlbHMsY2VsbERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWB9O3ooQSx1LEkpO2JyZWFrfWNhc2UgZi5Qb2x5RGF0YTp7bGV0IGE9Qy5kYXRhLFE9aChBLGEucG9pbnRzLEksMCksQj1oKEEsYS52ZXJ0aWNlcyxJLDEpLEU9aChBLGEubGluZXMsSSwyKSxjPWgoQSxhLnBvbHlnb25zLEksMyksdT1oKEEsYS50cmlhbmdsZVN0cmlwcyxJLDQpLGQ9aChBLGEucG9pbnREYXRhLEksNSksYj1oKEEsYS5wb2ludERhdGEsSSw2KSxVPXtwb2x5RGF0YVR5cGU6YS5wb2x5RGF0YVR5cGUsbmFtZTphLm5hbWUsbnVtYmVyT2ZQb2ludHM6YS5udW1iZXJPZlBvaW50cyxwb2ludHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWAsdmVydGljZXNCdWZmZXJTaXplOmEudmVydGljZXNCdWZmZXJTaXplLHZlcnRpY2VzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Qn1gLGxpbmVzQnVmZmVyU2l6ZTphLmxpbmVzQnVmZmVyU2l6ZSxsaW5lczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0V9YCxwb2x5Z29uc0J1ZmZlclNpemU6YS5wb2x5Z29uc0J1ZmZlclNpemUscG9seWdvbnM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWAsdHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplOmEudHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplLHRyaWFuZ2xlU3RyaXBzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7dX1gLG51bWJlck9mUG9pbnRQaXhlbHM6YS5udW1iZXJPZlBvaW50UGl4ZWxzLHBvaW50RGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2R9YCxudW1iZXJPZkNlbGxQaXhlbHM6YS5udW1iZXJPZkNlbGxQaXhlbHMsY2VsbERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtifWB9O3ooQSxVLEkpO2JyZWFrfWRlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuc3VwcG9ydGVkIGlucHV0IEludGVyZmFjZVR5cGUiKX19KSxBLnJlc2V0TW9kdWxlU3Rkb3V0KCksQS5yZXNldE1vZHVsZVN0ZGVycigpO2xldCBuPUEuc3RhY2tTYXZlKCksaT0wO3RyeXtpPUEuY2FsbE1haW4oZS5zbGljZSgpKX1jYXRjaChDKXt0aHJvdyB0eXBlb2YgQz09Im51bWJlciImJihjb25zb2xlLmxvZygiRXhjZXB0aW9uIHdoaWxlIHJ1bm5pbmcgcGlwZWxpbmU6IiksY29uc29sZS5sb2coInN0ZG91dDoiLEEuZ2V0TW9kdWxlU3Rkb3V0KCkpLGNvbnNvbGUuZXJyb3IoInN0ZGVycjoiLEEuZ2V0TW9kdWxlU3RkZXJyKCkpLHR5cGVvZiBBLmdldEV4Y2VwdGlvbk1lc3NhZ2U8InUiP2NvbnNvbGUuZXJyb3IoImV4Y2VwdGlvbjoiLEEuZ2V0RXhjZXB0aW9uTWVzc2FnZShDKSk6Y29uc29sZS5lcnJvcigiQnVpbGQgbW9kdWxlIGluIERlYnVnIG1vZGUgZm9yIGV4Y2VwdGlvbiBtZXNzYWdlIGluZm9ybWF0aW9uLiIpKSxDfWZpbmFsbHl7QS5zdGFja1Jlc3RvcmUobil9bGV0IG89QS5nZXRNb2R1bGVTdGRvdXQoKSxnPUEuZ2V0TW9kdWxlU3RkZXJyKCksbD1bXTtyZXR1cm4gdCE9bnVsbCYmdC5sZW5ndGg+MCYmaT09PTAmJnQuZm9yRWFjaChmdW5jdGlvbihDLEkpe2xldCBhPW51bGw7c3dpdGNoKEMudHlwZSl7Y2FzZSBmLlRleHRTdHJlYW06e2xldCBCPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEksMF0pLEU9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsSSwwXSksYz1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsQixFKTthPXtkYXRhOkF0LmRlY29kZShjKX07YnJlYWt9Y2FzZSBmLkpzb25Db21wYXRpYmxlOntsZXQgQj1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxJLDBdKSxFPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEksMF0pLGM9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLEIsRSk7YT1KU09OLnBhcnNlKEF0LmRlY29kZShjKSk7YnJlYWt9Y2FzZSBmLkJpbmFyeVN0cmVhbTp7bGV0IEI9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsSSwwXSksRT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxJLDBdKTthPXtkYXRhOnR0KEEsQixFKX07YnJlYWt9Y2FzZSBmLlRleHRGaWxlOnthPXtwYXRoOkMuZGF0YS5wYXRoLGRhdGE6QS5mc19yZWFkRmlsZShDLmRhdGEucGF0aCx7ZW5jb2Rpbmc6InV0ZjgifSl9O2JyZWFrfWNhc2UgZi5CaW5hcnlGaWxlOnthPXtwYXRoOkMuZGF0YS5wYXRoLGRhdGE6THIoQSxDLmRhdGEucGF0aCl9O2JyZWFrfWNhc2UgZi5JbWFnZTp7bGV0IEI9ZWUoQSxJKTtCLmRhdGE9UyhBLEksMCxCLmltYWdlVHlwZS5jb21wb25lbnRUeXBlKSxCLmRpcmVjdGlvbj1TKEEsSSwxLE0uRmxvYXQ2NCksQi5tZXRhZGF0YT1uZXcgTWFwKEIubWV0YWRhdGEpLGE9QjticmVha31jYXNlIGYuTWVzaDp7bGV0IEI9ZWUoQSxJKTtCLm51bWJlck9mUG9pbnRzPjA/Qi5wb2ludHM9UyhBLEksMCxCLm1lc2hUeXBlLnBvaW50Q29tcG9uZW50VHlwZSk6Qi5wb2ludHM9UChCLm1lc2hUeXBlLnBvaW50Q29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEIubnVtYmVyT2ZDZWxscz4wP0IuY2VsbHM9UyhBLEksMSxCLm1lc2hUeXBlLmNlbGxDb21wb25lbnRUeXBlKTpCLmNlbGxzPVAoQi5tZXNoVHlwZS5jZWxsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEIubnVtYmVyT2ZQb2ludFBpeGVscz4wP0IucG9pbnREYXRhPVMoQSxJLDIsQi5tZXNoVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSk6Qi5wb2ludERhdGE9UChCLm1lc2hUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksQi5udW1iZXJPZkNlbGxQaXhlbHM+MD9CLmNlbGxEYXRhPVMoQSxJLDMsQi5tZXNoVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlKTpCLmNlbGxEYXRhPVAoQi5tZXNoVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksYT1CO2JyZWFrfWNhc2UgZi5Qb2x5RGF0YTp7bGV0IEI9ZWUoQSxJKTtCLm51bWJlck9mUG9pbnRzPjA/Qi5wb2ludHM9UyhBLEksMCxNLkZsb2F0MzIpOkIucG9pbnRzPW5ldyBGbG9hdDMyQXJyYXksQi52ZXJ0aWNlc0J1ZmZlclNpemU+MD9CLnZlcnRpY2VzPVMoQSxJLDEsRC5VSW50MzIpOkIudmVydGljZXM9bmV3IFVpbnQzMkFycmF5LEIubGluZXNCdWZmZXJTaXplPjA/Qi5saW5lcz1TKEEsSSwyLEQuVUludDMyKTpCLmxpbmVzPW5ldyBVaW50MzJBcnJheSxCLnBvbHlnb25zQnVmZmVyU2l6ZT4wP0IucG9seWdvbnM9UyhBLEksMyxELlVJbnQzMik6Qi5wb2x5Z29ucz1uZXcgVWludDMyQXJyYXksQi50cmlhbmdsZVN0cmlwc0J1ZmZlclNpemU+MD9CLnRyaWFuZ2xlU3RyaXBzPVMoQSxJLDQsRC5VSW50MzIpOkIudHJpYW5nbGVTdHJpcHM9bmV3IFVpbnQzMkFycmF5LEIubnVtYmVyT2ZQb2ludFBpeGVscz4wP0IucG9pbnREYXRhPVMoQSxJLDUsQi5wb2x5RGF0YVR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUpOkIucG9pbnREYXRhPVAoQi5wb2x5RGF0YVR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxCLm51bWJlck9mQ2VsbFBpeGVscz4wP0IuY2VsbERhdGE9UyhBLEksNixCLnBvbHlEYXRhVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlKTpCLmNlbGxEYXRhPVAoQi5wb2x5RGF0YVR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLGE9QjticmVha31kZWZhdWx0OnRocm93IEVycm9yKCJVbnN1cHBvcnRlZCBvdXRwdXQgSW50ZXJmYWNlVHlwZSIpfWxldCBRPXt0eXBlOkMudHlwZSxkYXRhOmF9O2wucHVzaChRKX0pLHtyZXR1cm5WYWx1ZTppLHN0ZG91dDpvLHN0ZGVycjpnLG91dHB1dHM6bH19dmFyIHJ0PU9yO3ZhciBQcj10eXBlb2YgZ2xvYmFsVGhpcy5TaGFyZWRBcnJheUJ1ZmZlcjwidSI7ZnVuY3Rpb24gVHIoQSxlKXtpZihBPT1udWxsKXJldHVybltdO2xldCB0PVtdO2ZvcihsZXQgcj0wO3I8QS5sZW5ndGg7cisrKXtsZXQgbj14cihBW3JdLGUpO24hPT1udWxsJiZ0LnB1c2gobil9cmV0dXJuIHR9ZnVuY3Rpb24geHIoQSxlKXtpZihBPT1udWxsKXJldHVybiBudWxsO2xldCB0PW51bGw7cmV0dXJuIEEuYnVmZmVyIT09dm9pZCAwP3Q9QS5idWZmZXI6QS5ieXRlTGVuZ3RoIT09dm9pZCAwJiYodD1BKSxQciYmdCBpbnN0YW5jZW9mIFNoYXJlZEFycmF5QnVmZmVyP251bGw6ZT90OnQuc2xpY2UoMCl9dmFyIG50PVRyO2Z1bmN0aW9uIEpyKEEpe3JldHVybltBLmRhdGEsQS5kaXJlY3Rpb25dfXZhciBpdD1KcjtmdW5jdGlvbiBIcihBKXtyZXR1cm5bQS5wb2ludHMsQS5wb2ludERhdGEsQS5jZWxscyxBLmNlbGxEYXRhXX12YXIgb3Q9SHI7ZnVuY3Rpb24gTXIoQSl7cmV0dXJuW0EucG9pbnRzLEEudmVydGljZXMsQS5saW5lcyxBLnBvbHlnb25zLEEudHJpYW5nbGVTdHJpcHMsQS5wb2ludERhdGEsQS5jZWxsRGF0YV19dmFyIGF0PU1yO3ZhciBZcjtmdW5jdGlvbiBEQSgpe3JldHVybiBZcn12YXIgcXI7ZnVuY3Rpb24gc3QoKXtyZXR1cm4gcXJ9dmFyIEtyO2Z1bmN0aW9uIFNBKCl7cmV0dXJuIEtyfXZhciB0ZT1uZXcgTWFwO2Z1bmN0aW9uIFdyKCl7bGV0IEE9U0EoKTtyZXR1cm4gdHlwZW9mIEE+InUiJiYoQT1udWxsKSxBfWZ1bmN0aW9uIEl0KCl7bGV0IEE9REEoKTtyZXR1cm4gdHlwZW9mIEE+InUiJiYoQT1uZXcgVVJMKCIvcGlwZWxpbmVzIixkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4pLmhyZWYpLEF9ZnVuY3Rpb24ga0EoKXtsZXQgQT1zdCgpO3JldHVybiB0eXBlb2YgQT4idSImJihBPXt9KSxBfWFzeW5jIGZ1bmN0aW9uIGpyKEEsZSx0KXtsZXQgcj1BLG49QTtpZih0eXBlb2YgQSE9InN0cmluZyImJihyPW5ldyBVUkwoQS5ocmVmKSxuPXIuaHJlZiksdGUuaGFzKG4pKXJldHVybiB0ZS5nZXQobik7e2xldCBpPWF3YWl0IFplKEEsZT8udG9TdHJpbmcoKT8/SXQoKSx0Pz9rQSgpKTtyZXR1cm4gdGUuc2V0KG4saSksaX19YXN5bmMgZnVuY3Rpb24gdnIoQSxlLHQscixuKXtpZighYXdhaXQgWGUoKSl7bGV0IHU9IldlYkFzc2VtYmx5IFNJTUQgc3VwcG9ydCBpcyByZXF1aXJlZCAtLSBwbGVhc2UgdXBkYXRlIHlvdXIgYnJvd3Nlci4iO3Rocm93IGFsZXJ0KHUpLG5ldyBFcnJvcih1KX1sZXQgaT1uPy53ZWJXb3JrZXI/P251bGw7aWYoaT09PSExKXtsZXQgdT1hd2FpdCBqcihBLnRvU3RyaW5nKCksbj8ucGlwZWxpbmVCYXNlVXJsLG4/LnBpcGVsaW5lUXVlcnlQYXJhbXM/P2tBKCkpO3JldHVybiBydCh1LGUsdCxyKX1sZXQgbz1pLGc9bj8ucGlwZWxpbmVXb3JrZXJVcmw/P1dyKCksbD10eXBlb2YgZyE9InN0cmluZyImJnR5cGVvZiBnPy5ocmVmPCJ1Ij9nLmhyZWY6Zyx7d29ya2VyUHJveHk6Qyx3b3JrZXI6SX09YXdhaXQgVmUobyxsLG4/LnBpcGVsaW5lUXVlcnlQYXJhbXM/P2tBKCkpO289STtsZXQgYT1bXTtyIT1udWxsJiZyLmxlbmd0aD4wJiZyLmZvckVhY2goZnVuY3Rpb24odSl7aWYodS50eXBlPT09Zi5CaW5hcnlTdHJlYW0pe2xldCBkPXUuZGF0YS5kYXRhO2EucHVzaChkKX1lbHNlIGlmKHUudHlwZT09PWYuQmluYXJ5RmlsZSl7bGV0IGQ9dS5kYXRhLmRhdGE7YS5wdXNoKGQpfWVsc2UgaWYodS50eXBlPT09Zi5JbWFnZSl7bGV0IGQ9dS5kYXRhO2QuZGF0YSE9PW51bGwmJmEucHVzaCguLi5pdChkKSl9ZWxzZSBpZih1LnR5cGU9PT1mLk1lc2gpe2xldCBkPXUuZGF0YTthLnB1c2goLi4ub3QoZCkpfWVsc2UgaWYodS50eXBlPT09Zi5Qb2x5RGF0YSl7bGV0IGQ9dS5kYXRhO2EucHVzaCguLi5hdChkKSl9fSk7bGV0IFE9bj8ucGlwZWxpbmVCYXNlVXJsPz9JdCgpLEI9dHlwZW9mIFEhPSJzdHJpbmciJiZ0eXBlb2YgUT8uaHJlZjwidSI/US5ocmVmOlEsRT1yIT1udWxsP0dBKHIsbnQoYSxuPy5ub0NvcHkpKTpudWxsLGM9YXdhaXQgQy5ydW5QaXBlbGluZShBLnRvU3RyaW5nKCksQixlLHQsRSxuPy5waXBlbGluZVF1ZXJ5UGFyYW1zPz9rQSgpKTtyZXR1cm57cmV0dXJuVmFsdWU6Yy5yZXR1cm5WYWx1ZSxzdGRvdXQ6Yy5zdGRvdXQsc3RkZXJyOmMuc3RkZXJyLG91dHB1dHM6Yy5vdXRwdXRzLHdlYldvcmtlcjpvfX12YXIgRj12cjt2YXIgX3I9bnVsbDtmdW5jdGlvbiBndCgpe3JldHVybiBfcn12YXIgcmUsenI9YGh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGl0ay13YXNtL2Rvd25zYW1wbGVAJHtSQX0vZGlzdC9waXBlbGluZXNgO2Z1bmN0aW9uIHRzKEEpe3JlPUF9ZnVuY3Rpb24gRygpe2lmKHR5cGVvZiByZTwidSIpcmV0dXJuIHJlO2xldCBBPURBKCk7cmV0dXJuIHR5cGVvZiBBPCJ1Ij9BOnpyfXZhciBuZSxWcj1udWxsO2Z1bmN0aW9uIEJ0KEEpe25lPUF9ZnVuY3Rpb24gUigpe2lmKHR5cGVvZiBuZTwidSIpcmV0dXJuIG5lO2xldCBBPVNBKCk7cmV0dXJuIHR5cGVvZiBBPCJ1Ij9BOlZyfXZhciBWPW51bGw7YXN5bmMgZnVuY3Rpb24gQ3QoKXtsZXQgQT1SKCksZT10eXBlb2YgQSE9InN0cmluZyImJnR5cGVvZiBBPy5ocmVmPCJ1Ij9BLmhyZWY6QTtWPWF3YWl0IG9BKGUpfWZ1bmN0aW9uIElzKEEpe1Y9QX1hc3luYyBmdW5jdGlvbiBMKCl7aWYoViE9PW51bGwpcmV0dXJuIFYudGVybWluYXRlZCYmYXdhaXQgQ3QoKSxWO2xldCBBPWd0KCk7cmV0dXJuIEEhPT1udWxsP0E6KGF3YWl0IEN0KCksVil9YXN5bmMgZnVuY3Rpb24gWnIoQSxlPXtzaHJpbmtGYWN0b3JzOlsyLDJdfSl7bGV0IHQ9W3t0eXBlOmYuSW1hZ2V9XSxyPVt7dHlwZTpmLkltYWdlLGRhdGE6QX1dLG49W10saT0iMCI7bi5wdXNoKGkpO2xldCBvPSIwIjtpZihuLnB1c2gobyksbi5wdXNoKCItLW1lbW9yeS1pbyIpLGUuc2hyaW5rRmFjdG9ycyl7aWYoZS5zaHJpbmtGYWN0b3JzLmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcignInNocmluay1mYWN0b3JzIiBvcHRpb24gbXVzdCBoYXZlIGEgbGVuZ3RoID4gMicpO24ucHVzaCgiLS1zaHJpbmstZmFjdG9ycyIpLGF3YWl0IFByb21pc2UuYWxsKGUuc2hyaW5rRmFjdG9ycy5tYXAoYXN5bmMgRT0+e24ucHVzaChFLnRvU3RyaW5nKCkpfSkpfWUuaW5mb3JtYXRpb25Pbmx5JiZlLmluZm9ybWF0aW9uT25seSYmbi5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgZz0iZG93bnNhbXBsZS1iaW4tc2hyaW5rIixsPWU/LndlYldvcmtlcjtsPT09dm9pZCAwJiYobD1hd2FpdCBMKCkpO2xldHt3ZWJXb3JrZXI6QyxyZXR1cm5WYWx1ZTpJLHN0ZGVycjphLG91dHB1dHM6UX09YXdhaXQgRihnLG4sdCxyLHtwaXBlbGluZUJhc2VVcmw6RygpLHBpcGVsaW5lV29ya2VyVXJsOlIoKSx3ZWJXb3JrZXI6bCxub0NvcHk6ZT8ubm9Db3B5fSk7aWYoSSE9PTAmJmEhPT0iIil0aHJvdyBuZXcgRXJyb3IoYSk7cmV0dXJue3dlYldvcmtlcjpDLGRvd25zYW1wbGVkOlFbMF0/LmRhdGF9fXZhciBYcj1acjthc3luYyBmdW5jdGlvbiAkcihBLGU9e3Nocmlua0ZhY3RvcnM6WzIsMl19KXtsZXQgdD1be3R5cGU6Zi5JbWFnZX1dLHI9W3t0eXBlOmYuSW1hZ2UsZGF0YTpBfV0sbj1bXSxpPSIwIjtuLnB1c2goaSk7bGV0IG89IjAiO2lmKG4ucHVzaChvKSxuLnB1c2goIi0tbWVtb3J5LWlvIiksZS5zaHJpbmtGYWN0b3JzKXtpZihlLnNocmlua0ZhY3RvcnMubGVuZ3RoPDIpdGhyb3cgbmV3IEVycm9yKCcic2hyaW5rLWZhY3RvcnMiIG9wdGlvbiBtdXN0IGhhdmUgYSBsZW5ndGggPiAyJyk7bi5wdXNoKCItLXNocmluay1mYWN0b3JzIiksYXdhaXQgUHJvbWlzZS5hbGwoZS5zaHJpbmtGYWN0b3JzLm1hcChhc3luYyBFPT57bi5wdXNoKEUudG9TdHJpbmcoKSl9KSl9aWYoZS5jcm9wUmFkaXVzKXtpZihlLmNyb3BSYWRpdXMubGVuZ3RoPDIpdGhyb3cgbmV3IEVycm9yKCciY3JvcC1yYWRpdXMiIG9wdGlvbiBtdXN0IGhhdmUgYSBsZW5ndGggPiAyJyk7bi5wdXNoKCItLWNyb3AtcmFkaXVzIiksYXdhaXQgUHJvbWlzZS5hbGwoZS5jcm9wUmFkaXVzLm1hcChhc3luYyBFPT57bi5wdXNoKEUudG9TdHJpbmcoKSl9KSl9bGV0IGc9ImRvd25zYW1wbGUtbGFiZWwtaW1hZ2UiLGw9ZT8ud2ViV29ya2VyO2w9PT12b2lkIDAmJihsPWF3YWl0IEwoKSk7bGV0e3dlYldvcmtlcjpDLHJldHVyblZhbHVlOkksc3RkZXJyOmEsb3V0cHV0czpRfT1hd2FpdCBGKGcsbix0LHIse3BpcGVsaW5lQmFzZVVybDpHKCkscGlwZWxpbmVXb3JrZXJVcmw6UigpLHdlYldvcmtlcjpsLG5vQ29weTplPy5ub0NvcHl9KTtpZihJIT09MCYmYSE9PSIiKXRocm93IG5ldyBFcnJvcihhKTtyZXR1cm57d2ViV29ya2VyOkMsZG93bnNhbXBsZWQ6UVswXT8uZGF0YX19dmFyIEFuPSRyO2FzeW5jIGZ1bmN0aW9uIGVuKEE9e3Nocmlua0ZhY3RvcnM6WzIsMl19KXtsZXQgZT1be3R5cGU6Zi5Kc29uQ29tcGF0aWJsZX1dLHQ9W10scj1bXSxuPSIwIjtpZihyLnB1c2gobiksci5wdXNoKCItLW1lbW9yeS1pbyIpLHR5cGVvZiBBLnNocmlua0ZhY3RvcnM8InUiKXtpZihBLnNocmlua0ZhY3RvcnMubGVuZ3RoPDEpdGhyb3cgbmV3IEVycm9yKCcic2hyaW5rLWZhY3RvcnMiIG9wdGlvbiBtdXN0IGhhdmUgYSBsZW5ndGggPiAxJyk7ci5wdXNoKCItLXNocmluay1mYWN0b3JzIiksYXdhaXQgUHJvbWlzZS5hbGwoQS5zaHJpbmtGYWN0b3JzLm1hcChhc3luYyBRPT57ci5wdXNoKFEudG9TdHJpbmcoKSl9KSl9bGV0IGk9ImRvd25zYW1wbGUtc2lnbWEiLG89QT8ud2ViV29ya2VyO289PT12b2lkIDAmJihvPWF3YWl0IEwoKSk7bGV0e3dlYldvcmtlcjpnLHJldHVyblZhbHVlOmwsc3RkZXJyOkMsb3V0cHV0czpJfT1hd2FpdCBGKGkscixlLHQse3BpcGVsaW5lQmFzZVVybDpHKCkscGlwZWxpbmVXb3JrZXJVcmw6UigpLHdlYldvcmtlcjpvLG5vQ29weTpBPy5ub0NvcHl9KTtpZihsIT09MCYmQyE9PSIiKXRocm93IG5ldyBFcnJvcihDKTtyZXR1cm57d2ViV29ya2VyOmcsc2lnbWE6SVswXT8uZGF0YX19dmFyIHRuPWVuO2FzeW5jIGZ1bmN0aW9uIHJuKEEsZT17c2hyaW5rRmFjdG9yczpbMiwyXX0pe2xldCB0PVt7dHlwZTpmLkltYWdlfV0scj1be3R5cGU6Zi5JbWFnZSxkYXRhOkF9XSxuPVtdLGk9IjAiO24ucHVzaChpKTtsZXQgbz0iMCI7aWYobi5wdXNoKG8pLG4ucHVzaCgiLS1tZW1vcnktaW8iKSxlLnNocmlua0ZhY3RvcnMpe2lmKGUuc2hyaW5rRmFjdG9ycy5sZW5ndGg8Mil0aHJvdyBuZXcgRXJyb3IoJyJzaHJpbmstZmFjdG9ycyIgb3B0aW9uIG11c3QgaGF2ZSBhIGxlbmd0aCA+IDInKTtuLnB1c2goIi0tc2hyaW5rLWZhY3RvcnMiKSxhd2FpdCBQcm9taXNlLmFsbChlLnNocmlua0ZhY3RvcnMubWFwKGFzeW5jIEU9PntuLnB1c2goRS50b1N0cmluZygpKX0pKX1pZihlLmNyb3BSYWRpdXMpe2lmKGUuY3JvcFJhZGl1cy5sZW5ndGg8Mil0aHJvdyBuZXcgRXJyb3IoJyJjcm9wLXJhZGl1cyIgb3B0aW9uIG11c3QgaGF2ZSBhIGxlbmd0aCA+IDInKTtuLnB1c2goIi0tY3JvcC1yYWRpdXMiKSxhd2FpdCBQcm9taXNlLmFsbChlLmNyb3BSYWRpdXMubWFwKGFzeW5jIEU9PntuLnB1c2goRS50b1N0cmluZygpKX0pKX1sZXQgZz0iZG93bnNhbXBsZSIsbD1lPy53ZWJXb3JrZXI7bD09PXZvaWQgMCYmKGw9YXdhaXQgTCgpKTtsZXR7d2ViV29ya2VyOkMscmV0dXJuVmFsdWU6SSxzdGRlcnI6YSxvdXRwdXRzOlF9PWF3YWl0IEYoZyxuLHQscix7cGlwZWxpbmVCYXNlVXJsOkcoKSxwaXBlbGluZVdvcmtlclVybDpSKCksd2ViV29ya2VyOmwsbm9Db3B5OmU/Lm5vQ29weX0pO2lmKEkhPT0wJiZhIT09IiIpdGhyb3cgbmV3IEVycm9yKGEpO3JldHVybnt3ZWJXb3JrZXI6Qyxkb3duc2FtcGxlZDpRWzBdPy5kYXRhfX12YXIgbm49cm47YXN5bmMgZnVuY3Rpb24gb24oQT17c2l6ZTpbMSwxXSxzaWdtYTpbMSwxXX0pe2xldCBlPVt7dHlwZTpmLkpzb25Db21wYXRpYmxlfV0sdD1bXSxyPVtdLG49IjAiO2lmKHIucHVzaChuKSxyLnB1c2goIi0tbWVtb3J5LWlvIiksdHlwZW9mIEEuc2l6ZTwidSIpe2lmKEEuc2l6ZS5sZW5ndGg8MSl0aHJvdyBuZXcgRXJyb3IoJyJzaXplIiBvcHRpb24gbXVzdCBoYXZlIGEgbGVuZ3RoID4gMScpO3IucHVzaCgiLS1zaXplIiksYXdhaXQgUHJvbWlzZS5hbGwoQS5zaXplLm1hcChhc3luYyBRPT57ci5wdXNoKFEudG9TdHJpbmcoKSl9KSl9aWYodHlwZW9mIEEuc2lnbWE8InUiKXtpZihBLnNpZ21hLmxlbmd0aDwxKXRocm93IG5ldyBFcnJvcignInNpZ21hIiBvcHRpb24gbXVzdCBoYXZlIGEgbGVuZ3RoID4gMScpO3IucHVzaCgiLS1zaWdtYSIpLGF3YWl0IFByb21pc2UuYWxsKEEuc2lnbWEubWFwKGFzeW5jIFE9PntyLnB1c2goUS50b1N0cmluZygpKX0pKX10eXBlb2YgQS5tYXhLZXJuZWxXaWR0aDwidSImJnIucHVzaCgiLS1tYXgta2VybmVsLXdpZHRoIixBLm1heEtlcm5lbFdpZHRoLnRvU3RyaW5nKCkpLHR5cGVvZiBBLm1heEtlcm5lbEVycm9yPCJ1IiYmci5wdXNoKCItLW1heC1rZXJuZWwtZXJyb3IiLEEubWF4S2VybmVsRXJyb3IudG9TdHJpbmcoKSk7bGV0IGk9ImdhdXNzaWFuLWtlcm5lbC1yYWRpdXMiLG89QT8ud2ViV29ya2VyO289PT12b2lkIDAmJihvPWF3YWl0IEwoKSk7bGV0e3dlYldvcmtlcjpnLHJldHVyblZhbHVlOmwsc3RkZXJyOkMsb3V0cHV0czpJfT1hd2FpdCBGKGkscixlLHQse3BpcGVsaW5lQmFzZVVybDpHKCkscGlwZWxpbmVXb3JrZXJVcmw6UigpLHdlYldvcmtlcjpvLG5vQ29weTpBPy5ub0NvcHl9KTtpZihsIT09MCYmQyE9PSIiKXRocm93IG5ldyBFcnJvcihDKTtyZXR1cm57d2ViV29ya2VyOmcscmFkaXVzOklbMF0/LmRhdGF9fXZhciBhbj1vbjt2YXIgbHQ9J2RhdGE6dGV4dC9qYXZhc2NyaXB0O2NoYXJzZXQ9dXRmLTgsdmFyIHR0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgZXQ9KEEsSSk9Pntmb3IodmFyIHQgaW4gSSl0dChBLHQse2dldDpJW3RdLGVudW1lcmFibGU6ITB9KX07dmFyIHZBPVN5bWJvbCgiQ29tbGluay5wcm94eSIpLGd0PVN5bWJvbCgiQ29tbGluay5lbmRwb2ludCIpLHJ0PVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSxtQT1TeW1ib2woIkNvbWxpbmsuZmluYWxpemVyIiksZUE9U3ltYm9sKCJDb21saW5rLnRocm93biIpLCRBPUE9PnR5cGVvZiBBPT0ib2JqZWN0IiYmQSE9PW51bGx8fHR5cGVvZiBBPT0iZnVuY3Rpb24iLGl0PXtjYW5IYW5kbGU6QT0+JEEoQSkmJkFbdkFdLHNlcmlhbGl6ZShBKXtsZXR7cG9ydDE6SSxwb3J0Mjp0fT1uZXcgTWVzc2FnZUNoYW5uZWw7cmV0dXJuIG9BKEEsSSksW3QsW3RdXX0sZGVzZXJpYWxpemUoQSl7cmV0dXJuIEEuc3RhcnQoKSxzdChBKX19LG90PXtjYW5IYW5kbGU6QT0+JEEoQSkmJmVBIGluIEEsc2VyaWFsaXplKHt2YWx1ZTpBfSl7bGV0IEk7cmV0dXJuIEEgaW5zdGFuY2VvZiBFcnJvcj9JPXtpc0Vycm9yOiEwLHZhbHVlOnttZXNzYWdlOkEubWVzc2FnZSxuYW1lOkEubmFtZSxzdGFjazpBLnN0YWNrfX06ST17aXNFcnJvcjohMSx2YWx1ZTpBfSxbSSxbXV19LGRlc2VyaWFsaXplKEEpe3Rocm93IEEuaXNFcnJvcj9PYmplY3QuYXNzaWduKG5ldyBFcnJvcihBLnZhbHVlLm1lc3NhZ2UpLEEudmFsdWUpOkEudmFsdWV9fSxBST1uZXcgTWFwKFtbInByb3h5IixpdF0sWyJ0aHJvdyIsb3RdXSk7ZnVuY3Rpb24gQnQoQSxJKXtmb3IobGV0IHQgb2YgQSlpZihJPT09dHx8dD09PSIqInx8dCBpbnN0YW5jZW9mIFJlZ0V4cCYmdC50ZXN0KEkpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIG9BKEEsST1nbG9iYWxUaGlzLHQ9WyIqIl0pe0kuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gZShnKXtpZighZ3x8IWcuZGF0YSlyZXR1cm47aWYoIUJ0KHQsZy5vcmlnaW4pKXtjb25zb2xlLndhcm4oYEludmFsaWQgb3JpZ2luIFwnJHtnLm9yaWdpbn1cJyBmb3IgY29tbGluayBwcm94eWApO3JldHVybn1sZXR7aWQ6cix0eXBlOmkscGF0aDpzfT1PYmplY3QuYXNzaWduKHtwYXRoOltdfSxnLmRhdGEpLGE9KGcuZGF0YS5hcmd1bWVudExpc3R8fFtdKS5tYXAoYiksbjt0cnl7bGV0IEM9cy5zbGljZSgwLC0xKS5yZWR1Y2UoKGYsUSk9PmZbUV0sQSksbz1zLnJlZHVjZSgoZixRKT0+ZltRXSxBKTtzd2l0Y2goaSl7Y2FzZSJHRVQiOm49bzticmVhaztjYXNlIlNFVCI6Q1tzLnNsaWNlKC0xKVswXV09YihnLmRhdGEudmFsdWUpLG49ITA7YnJlYWs7Y2FzZSJBUFBMWSI6bj1vLmFwcGx5KEMsYSk7YnJlYWs7Y2FzZSJDT05TVFJVQ1QiOntsZXQgZj1uZXcgbyguLi5hKTtuPWF0KGYpfWJyZWFrO2Nhc2UiRU5EUE9JTlQiOntsZXR7cG9ydDE6Zixwb3J0MjpRfT1uZXcgTWVzc2FnZUNoYW5uZWw7b0EoQSxRKSxuPVNBKGYsW2ZdKX1icmVhaztjYXNlIlJFTEVBU0UiOm49dm9pZCAwO2JyZWFrO2RlZmF1bHQ6cmV0dXJufX1jYXRjaChDKXtuPXt2YWx1ZTpDLFtlQV06MH19UHJvbWlzZS5yZXNvbHZlKG4pLmNhdGNoKEM9Pih7dmFsdWU6QyxbZUFdOjB9KSkudGhlbihDPT57bGV0W28sZl09aUEoQyk7SS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbykse2lkOnJ9KSxmKSxpPT09IlJFTEVBU0UiJiYoSS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixlKSxJSShJKSxtQSBpbiBBJiZ0eXBlb2YgQVttQV09PSJmdW5jdGlvbiImJkFbbUFdKCkpfSkuY2F0Y2goQz0+e2xldFtvLGZdPWlBKHt2YWx1ZTpuZXcgVHlwZUVycm9yKCJVbnNlcmlhbGl6YWJsZSByZXR1cm4gdmFsdWUiKSxbZUFdOjB9KTtJLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSx7aWQ6cn0pLGYpfSl9KSxJLnN0YXJ0JiZJLnN0YXJ0KCl9ZnVuY3Rpb24gQ3QoQSl7cmV0dXJuIEEuY29uc3RydWN0b3IubmFtZT09PSJNZXNzYWdlUG9ydCJ9ZnVuY3Rpb24gSUkoQSl7Q3QoQSkmJkEuY2xvc2UoKX1mdW5jdGlvbiBzdChBLEkpe3JldHVybiBwQShBLFtdLEkpfWZ1bmN0aW9uIHRBKEEpe2lmKEEpdGhyb3cgbmV3IEVycm9yKCJQcm94eSBoYXMgYmVlbiByZWxlYXNlZCBhbmQgaXMgbm90IHVzZWFibGUiKX1mdW5jdGlvbiB0SShBKXtyZXR1cm4gTShBLHt0eXBlOiJSRUxFQVNFIn0pLnRoZW4oKCk9PntJSShBKX0pfXZhciBnQT1uZXcgV2Vha01hcCxyQT0iRmluYWxpemF0aW9uUmVnaXN0cnkiaW4gZ2xvYmFsVGhpcyYmbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KEE9PntsZXQgST0oZ0EuZ2V0KEEpfHwwKS0xO2dBLnNldChBLEkpLEk9PT0wJiZ0SShBKX0pO2Z1bmN0aW9uIFF0KEEsSSl7bGV0IHQ9KGdBLmdldChJKXx8MCkrMTtnQS5zZXQoSSx0KSxyQSYmckEucmVnaXN0ZXIoQSxJLEEpfWZ1bmN0aW9uIG50KEEpe3JBJiZyQS51bnJlZ2lzdGVyKEEpfWZ1bmN0aW9uIHBBKEEsST1bXSx0PWZ1bmN0aW9uKCl7fSl7bGV0IGU9ITEsZz1uZXcgUHJveHkodCx7Z2V0KHIsaSl7aWYodEEoZSksaT09PXJ0KXJldHVybigpPT57bnQoZyksdEkoQSksZT0hMH07aWYoaT09PSJ0aGVuIil7aWYoSS5sZW5ndGg9PT0wKXJldHVybnt0aGVuOigpPT5nfTtsZXQgcz1NKEEse3R5cGU6IkdFVCIscGF0aDpJLm1hcChhPT5hLnRvU3RyaW5nKCkpfSkudGhlbihiKTtyZXR1cm4gcy50aGVuLmJpbmQocyl9cmV0dXJuIHBBKEEsWy4uLkksaV0pfSxzZXQocixpLHMpe3RBKGUpO2xldFthLG5dPWlBKHMpO3JldHVybiBNKEEse3R5cGU6IlNFVCIscGF0aDpbLi4uSSxpXS5tYXAoQz0+Qy50b1N0cmluZygpKSx2YWx1ZTphfSxuKS50aGVuKGIpfSxhcHBseShyLGkscyl7dEEoZSk7bGV0IGE9SVtJLmxlbmd0aC0xXTtpZihhPT09Z3QpcmV0dXJuIE0oQSx7dHlwZToiRU5EUE9JTlQifSkudGhlbihiKTtpZihhPT09ImJpbmQiKXJldHVybiBwQShBLEkuc2xpY2UoMCwtMSkpO2xldFtuLENdPV9BKHMpO3JldHVybiBNKEEse3R5cGU6IkFQUExZIixwYXRoOkkubWFwKG89Pm8udG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Om59LEMpLnRoZW4oYil9LGNvbnN0cnVjdChyLGkpe3RBKGUpO2xldFtzLGFdPV9BKGkpO3JldHVybiBNKEEse3R5cGU6IkNPTlNUUlVDVCIscGF0aDpJLm1hcChuPT5uLnRvU3RyaW5nKCkpLGFyZ3VtZW50TGlzdDpzfSxhKS50aGVuKGIpfX0pO3JldHVybiBRdChnLEEpLGd9ZnVuY3Rpb24gRXQoQSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sQSl9ZnVuY3Rpb24gX0EoQSl7bGV0IEk9QS5tYXAoaUEpO3JldHVybltJLm1hcCh0PT50WzBdKSxFdChJLm1hcCh0PT50WzFdKSldfXZhciBlST1uZXcgV2Vha01hcDtmdW5jdGlvbiBTQShBLEkpe3JldHVybiBlSS5zZXQoQSxJKSxBfWZ1bmN0aW9uIGF0KEEpe3JldHVybiBPYmplY3QuYXNzaWduKEEse1t2QV06ITB9KX1mdW5jdGlvbiBpQShBKXtmb3IobGV0W0ksdF1vZiBBSSlpZih0LmNhbkhhbmRsZShBKSl7bGV0W2UsZ109dC5zZXJpYWxpemUoQSk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOkksdmFsdWU6ZX0sZ119cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOkF9LGVJLmdldChBKXx8W11dfWZ1bmN0aW9uIGIoQSl7c3dpdGNoKEEudHlwZSl7Y2FzZSJIQU5ETEVSIjpyZXR1cm4gQUkuZ2V0KEEubmFtZSkuZGVzZXJpYWxpemUoQS52YWx1ZSk7Y2FzZSJSQVciOnJldHVybiBBLnZhbHVlfX1mdW5jdGlvbiBNKEEsSSx0KXtyZXR1cm4gbmV3IFByb21pc2UoZT0+e2xldCBnPWN0KCk7QS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiByKGkpeyFpLmRhdGF8fCFpLmRhdGEuaWR8fGkuZGF0YS5pZCE9PWd8fChBLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHIpLGUoaS5kYXRhKSl9KSxBLnN0YXJ0JiZBLnN0YXJ0KCksQS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKHtpZDpnfSxJKSx0KX0pfWZ1bmN0aW9uIGN0KCl7cmV0dXJuIG5ldyBBcnJheSg0KS5maWxsKDApLm1hcCgoKT0+TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKk51bWJlci5NQVhfU0FGRV9JTlRFR0VSKS50b1N0cmluZygxNikpLmpvaW4oIi0iKX1mdW5jdGlvbiBXKEEsSSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEEuYXBwbHkoSSxhcmd1bWVudHMpfX12YXJ7dG9TdHJpbmc6ZnR9PU9iamVjdC5wcm90b3R5cGUse2dldFByb3RvdHlwZU9mOk5BfT1PYmplY3QsQ0E9KEE9Pkk9PntsZXQgdD1mdC5jYWxsKEkpO3JldHVybiBBW3RdfHwoQVt0XT10LnNsaWNlKDgsLTEpLnRvTG93ZXJDYXNlKCkpfSkoT2JqZWN0LmNyZWF0ZShudWxsKSksVT1BPT4oQT1BLnRvTG93ZXJDYXNlKCksST0+Q0EoSSk9PT1BKSxzQT1BPT5JPT50eXBlb2YgST09PUEse2lzQXJyYXk6cX09QXJyYXksWj1zQSgidW5kZWZpbmVkIik7ZnVuY3Rpb24gbHQoQSl7cmV0dXJuIEEhPT1udWxsJiYhWihBKSYmQS5jb25zdHJ1Y3RvciE9PW51bGwmJiFaKEEuY29uc3RydWN0b3IpJiZGKEEuY29uc3RydWN0b3IuaXNCdWZmZXIpJiZBLmNvbnN0cnVjdG9yLmlzQnVmZmVyKEEpfXZhciBvST1VKCJBcnJheUJ1ZmZlciIpO2Z1bmN0aW9uIER0KEEpe2xldCBJO3JldHVybiB0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZBcnJheUJ1ZmZlci5pc1ZpZXc/ST1BcnJheUJ1ZmZlci5pc1ZpZXcoQSk6ST1BJiZBLmJ1ZmZlciYmb0koQS5idWZmZXIpLEl9dmFyIHV0PXNBKCJzdHJpbmciKSxGPXNBKCJmdW5jdGlvbiIpLEJJPXNBKCJudW1iZXIiKSxRQT1BPT5BIT09bnVsbCYmdHlwZW9mIEE9PSJvYmplY3QiLGh0PUE9PkE9PT0hMHx8QT09PSExLEJBPUE9PntpZihDQShBKSE9PSJvYmplY3QiKXJldHVybiExO2xldCBJPU5BKEEpO3JldHVybihJPT09bnVsbHx8ST09PU9iamVjdC5wcm90b3R5cGV8fE9iamVjdC5nZXRQcm90b3R5cGVPZihJKT09PW51bGwpJiYhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBBKSYmIShTeW1ib2wuaXRlcmF0b3IgaW4gQSl9LGR0PVUoIkRhdGUiKSx5dD1VKCJGaWxlIiksd3Q9VSgiQmxvYiIpLG10PVUoIkZpbGVMaXN0IikscHQ9QT0+UUEoQSkmJkYoQS5waXBlKSxTdD1BPT57bGV0IEk7cmV0dXJuIEEmJih0eXBlb2YgRm9ybURhdGE9PSJmdW5jdGlvbiImJkEgaW5zdGFuY2VvZiBGb3JtRGF0YXx8RihBLmFwcGVuZCkmJigoST1DQShBKSk9PT0iZm9ybWRhdGEifHxJPT09Im9iamVjdCImJkYoQS50b1N0cmluZykmJkEudG9TdHJpbmcoKT09PSJbb2JqZWN0IEZvcm1EYXRhXSIpKX0sRnQ9VSgiVVJMU2VhcmNoUGFyYW1zIiksUnQ9QT0+QS50cmltP0EudHJpbSgpOkEucmVwbGFjZSgvXltcXHNcXHVGRUZGXFx4QTBdK3xbXFxzXFx1RkVGRlxceEEwXSskL2csIiIpO2Z1bmN0aW9uIFYoQSxJLHthbGxPd25LZXlzOnQ9ITF9PXt9KXtpZihBPT09bnVsbHx8dHlwZW9mIEE+InUiKXJldHVybjtsZXQgZSxnO2lmKHR5cGVvZiBBIT0ib2JqZWN0IiYmKEE9W0FdKSxxKEEpKWZvcihlPTAsZz1BLmxlbmd0aDtlPGc7ZSsrKUkuY2FsbChudWxsLEFbZV0sZSxBKTtlbHNle2xldCByPXQ/T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoQSk6T2JqZWN0LmtleXMoQSksaT1yLmxlbmd0aCxzO2ZvcihlPTA7ZTxpO2UrKylzPXJbZV0sSS5jYWxsKG51bGwsQVtzXSxzLEEpfX1mdW5jdGlvbiBDSShBLEkpe0k9SS50b0xvd2VyQ2FzZSgpO2xldCB0PU9iamVjdC5rZXlzKEEpLGU9dC5sZW5ndGgsZztmb3IoO2UtLSA+MDspaWYoZz10W2VdLEk9PT1nLnRvTG93ZXJDYXNlKCkpcmV0dXJuIGc7cmV0dXJuIG51bGx9dmFyIHNJPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzpnbG9iYWwsUUk9QT0+IVooQSkmJkEhPT1zSTtmdW5jdGlvbiBSQSgpe2xldHtjYXNlbGVzczpBfT1RSSh0aGlzKSYmdGhpc3x8e30sST17fSx0PShlLGcpPT57bGV0IHI9QSYmQ0koSSxnKXx8ZztCQShJW3JdKSYmQkEoZSk/SVtyXT1SQShJW3JdLGUpOkJBKGUpP0lbcl09UkEoe30sZSk6cShlKT9JW3JdPWUuc2xpY2UoKTpJW3JdPWV9O2ZvcihsZXQgZT0wLGc9YXJndW1lbnRzLmxlbmd0aDtlPGc7ZSsrKWFyZ3VtZW50c1tlXSYmVihhcmd1bWVudHNbZV0sdCk7cmV0dXJuIEl9dmFyIE50PShBLEksdCx7YWxsT3duS2V5czplfT17fSk9PihWKEksKGcscik9Pnt0JiZGKGcpP0Fbcl09VyhnLHQpOkFbcl09Z30se2FsbE93bktleXM6ZX0pLEEpLFV0PUE9PihBLmNoYXJDb2RlQXQoMCk9PT02NTI3OSYmKEE9QS5zbGljZSgxKSksQSksR3Q9KEEsSSx0LGUpPT57QS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShJLnByb3RvdHlwZSxlKSxBLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1BLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJzdXBlciIse3ZhbHVlOkkucHJvdG90eXBlfSksdCYmT2JqZWN0LmFzc2lnbihBLnByb3RvdHlwZSx0KX0sa3Q9KEEsSSx0LGUpPT57bGV0IGcscixpLHM9e307aWYoST1JfHx7fSxBPT1udWxsKXJldHVybiBJO2Rve2ZvcihnPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEEpLHI9Zy5sZW5ndGg7ci0tID4wOylpPWdbcl0sKCFlfHxlKGksQSxJKSkmJiFzW2ldJiYoSVtpXT1BW2ldLHNbaV09ITApO0E9dCE9PSExJiZOQShBKX13aGlsZShBJiYoIXR8fHQoQSxJKSkmJkEhPT1PYmplY3QucHJvdG90eXBlKTtyZXR1cm4gSX0sTHQ9KEEsSSx0KT0+e0E9U3RyaW5nKEEpLCh0PT09dm9pZCAwfHx0PkEubGVuZ3RoKSYmKHQ9QS5sZW5ndGgpLHQtPUkubGVuZ3RoO2xldCBlPUEuaW5kZXhPZihJLHQpO3JldHVybiBlIT09LTEmJmU9PT10fSxKdD1BPT57aWYoIUEpcmV0dXJuIG51bGw7aWYocShBKSlyZXR1cm4gQTtsZXQgST1BLmxlbmd0aDtpZighQkkoSSkpcmV0dXJuIG51bGw7bGV0IHQ9bmV3IEFycmF5KEkpO2Zvcig7SS0tID4wOyl0W0ldPUFbSV07cmV0dXJuIHR9LEh0PShBPT5JPT5BJiZJIGluc3RhbmNlb2YgQSkodHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZOQShVaW50OEFycmF5KSksWXQ9KEEsSSk9PntsZXQgZT0oQSYmQVtTeW1ib2wuaXRlcmF0b3JdKS5jYWxsKEEpLGc7Zm9yKDsoZz1lLm5leHQoKSkmJiFnLmRvbmU7KXtsZXQgcj1nLnZhbHVlO0kuY2FsbChBLHJbMF0sclsxXSl9fSxidD0oQSxJKT0+e2xldCB0LGU9W107Zm9yKDsodD1BLmV4ZWMoSSkpIT09bnVsbDspZS5wdXNoKHQpO3JldHVybiBlfSxNdD1VKCJIVE1MRm9ybUVsZW1lbnQiKSxxdD1BPT5BLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWy1fXFxzXShbYS16XFxkXSkoXFx3KikvZyxmdW5jdGlvbih0LGUsZyl7cmV0dXJuIGUudG9VcHBlckNhc2UoKStnfSksckk9KCh7aGFzT3duUHJvcGVydHk6QX0pPT4oSSx0KT0+QS5jYWxsKEksdCkpKE9iamVjdC5wcm90b3R5cGUpLEt0PVUoIlJlZ0V4cCIpLG5JPShBLEkpPT57bGV0IHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoQSksZT17fTtWKHQsKGcscik9PntsZXQgaTsoaT1JKGcscixBKSkhPT0hMSYmKGVbcl09aXx8Zyl9KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhBLGUpfSxPdD1BPT57bkkoQSwoSSx0KT0+e2lmKEYoQSkmJlsiYXJndW1lbnRzIiwiY2FsbGVyIiwiY2FsbGVlIl0uaW5kZXhPZih0KSE9PS0xKXJldHVybiExO2xldCBlPUFbdF07aWYoRihlKSl7aWYoSS5lbnVtZXJhYmxlPSExLCJ3cml0YWJsZSJpbiBJKXtJLndyaXRhYmxlPSExO3JldHVybn1JLnNldHx8KEkuc2V0PSgpPT57dGhyb3cgRXJyb3IoIkNhbiBub3QgcmV3cml0ZSByZWFkLW9ubHkgbWV0aG9kIFwnIit0KyJcJyIpfSl9fSl9LFR0PShBLEkpPT57bGV0IHQ9e30sZT1nPT57Zy5mb3JFYWNoKHI9Pnt0W3JdPSEwfSl9O3JldHVybiBxKEEpP2UoQSk6ZShTdHJpbmcoQSkuc3BsaXQoSSkpLHR9LHh0PSgpPT57fSxQdD0oQSxJKT0+KEE9K0EsTnVtYmVyLmlzRmluaXRlKEEpP0E6SSksRkE9ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IixpST0iMDEyMzQ1Njc4OSIsRUk9e0RJR0lUOmlJLEFMUEhBOkZBLEFMUEhBX0RJR0lUOkZBK0ZBLnRvVXBwZXJDYXNlKCkraUl9LGp0PShBPTE2LEk9RUkuQUxQSEFfRElHSVQpPT57bGV0IHQ9IiIse2xlbmd0aDplfT1JO2Zvcig7QS0tOyl0Kz1JW01hdGgucmFuZG9tKCkqZXwwXTtyZXR1cm4gdH07ZnVuY3Rpb24gV3QoQSl7cmV0dXJuISEoQSYmRihBLmFwcGVuZCkmJkFbU3ltYm9sLnRvU3RyaW5nVGFnXT09PSJGb3JtRGF0YSImJkFbU3ltYm9sLml0ZXJhdG9yXSl9dmFyIFp0PUE9PntsZXQgST1uZXcgQXJyYXkoMTApLHQ9KGUsZyk9PntpZihRQShlKSl7aWYoSS5pbmRleE9mKGUpPj0wKXJldHVybjtpZighKCJ0b0pTT04iaW4gZSkpe0lbZ109ZTtsZXQgcj1xKGUpP1tdOnt9O3JldHVybiBWKGUsKGkscyk9PntsZXQgYT10KGksZysxKTshWihhKSYmKHJbc109YSl9KSxJW2ddPXZvaWQgMCxyfX1yZXR1cm4gZX07cmV0dXJuIHQoQSwwKX0sVnQ9VSgiQXN5bmNGdW5jdGlvbiIpLFh0PUE9PkEmJihRQShBKXx8RihBKSkmJkYoQS50aGVuKSYmRihBLmNhdGNoKSxCPXtpc0FycmF5OnEsaXNBcnJheUJ1ZmZlcjpvSSxpc0J1ZmZlcjpsdCxpc0Zvcm1EYXRhOlN0LGlzQXJyYXlCdWZmZXJWaWV3OkR0LGlzU3RyaW5nOnV0LGlzTnVtYmVyOkJJLGlzQm9vbGVhbjpodCxpc09iamVjdDpRQSxpc1BsYWluT2JqZWN0OkJBLGlzVW5kZWZpbmVkOlosaXNEYXRlOmR0LGlzRmlsZTp5dCxpc0Jsb2I6d3QsaXNSZWdFeHA6S3QsaXNGdW5jdGlvbjpGLGlzU3RyZWFtOnB0LGlzVVJMU2VhcmNoUGFyYW1zOkZ0LGlzVHlwZWRBcnJheTpIdCxpc0ZpbGVMaXN0Om10LGZvckVhY2g6VixtZXJnZTpSQSxleHRlbmQ6TnQsdHJpbTpSdCxzdHJpcEJPTTpVdCxpbmhlcml0czpHdCx0b0ZsYXRPYmplY3Q6a3Qsa2luZE9mOkNBLGtpbmRPZlRlc3Q6VSxlbmRzV2l0aDpMdCx0b0FycmF5Okp0LGZvckVhY2hFbnRyeTpZdCxtYXRjaEFsbDpidCxpc0hUTUxGb3JtOk10LGhhc093blByb3BlcnR5OnJJLGhhc093blByb3A6ckkscmVkdWNlRGVzY3JpcHRvcnM6bkksZnJlZXplTWV0aG9kczpPdCx0b09iamVjdFNldDpUdCx0b0NhbWVsQ2FzZTpxdCxub29wOnh0LHRvRmluaXRlTnVtYmVyOlB0LGZpbmRLZXk6Q0ksZ2xvYmFsOnNJLGlzQ29udGV4dERlZmluZWQ6UUksQUxQSEFCRVQ6RUksZ2VuZXJhdGVTdHJpbmc6anQsaXNTcGVjQ29tcGxpYW50Rm9ybTpXdCx0b0pTT05PYmplY3Q6WnQsaXNBc3luY0ZuOlZ0LGlzVGhlbmFibGU6WHR9O2Z1bmN0aW9uIEsoQSxJLHQsZSxnKXtFcnJvci5jYWxsKHRoaXMpLEVycm9yLmNhcHR1cmVTdGFja1RyYWNlP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsdGhpcy5jb25zdHJ1Y3Rvcik6dGhpcy5zdGFjaz1uZXcgRXJyb3IoKS5zdGFjayx0aGlzLm1lc3NhZ2U9QSx0aGlzLm5hbWU9IkF4aW9zRXJyb3IiLEkmJih0aGlzLmNvZGU9SSksdCYmKHRoaXMuY29uZmlnPXQpLGUmJih0aGlzLnJlcXVlc3Q9ZSksZyYmKHRoaXMucmVzcG9uc2U9Zyl9Qi5pbmhlcml0cyhLLEVycm9yLHt0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm57bWVzc2FnZTp0aGlzLm1lc3NhZ2UsbmFtZTp0aGlzLm5hbWUsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbixudW1iZXI6dGhpcy5udW1iZXIsZmlsZU5hbWU6dGhpcy5maWxlTmFtZSxsaW5lTnVtYmVyOnRoaXMubGluZU51bWJlcixjb2x1bW5OdW1iZXI6dGhpcy5jb2x1bW5OdW1iZXIsc3RhY2s6dGhpcy5zdGFjayxjb25maWc6Qi50b0pTT05PYmplY3QodGhpcy5jb25maWcpLGNvZGU6dGhpcy5jb2RlLHN0YXR1czp0aGlzLnJlc3BvbnNlJiZ0aGlzLnJlc3BvbnNlLnN0YXR1cz90aGlzLnJlc3BvbnNlLnN0YXR1czpudWxsfX19KTt2YXIgYUk9Sy5wcm90b3R5cGUsY0k9e307WyJFUlJfQkFEX09QVElPTl9WQUxVRSIsIkVSUl9CQURfT1BUSU9OIiwiRUNPTk5BQk9SVEVEIiwiRVRJTUVET1VUIiwiRVJSX05FVFdPUksiLCJFUlJfRlJfVE9PX01BTllfUkVESVJFQ1RTIiwiRVJSX0RFUFJFQ0FURUQiLCJFUlJfQkFEX1JFU1BPTlNFIiwiRVJSX0JBRF9SRVFVRVNUIiwiRVJSX0NBTkNFTEVEIiwiRVJSX05PVF9TVVBQT1JUIiwiRVJSX0lOVkFMSURfVVJMIl0uZm9yRWFjaChBPT57Y0lbQV09e3ZhbHVlOkF9fSk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoSyxjSSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGFJLCJpc0F4aW9zRXJyb3IiLHt2YWx1ZTohMH0pO0suZnJvbT0oQSxJLHQsZSxnLHIpPT57bGV0IGk9T2JqZWN0LmNyZWF0ZShhSSk7cmV0dXJuIEIudG9GbGF0T2JqZWN0KEEsaSxmdW5jdGlvbihhKXtyZXR1cm4gYSE9PUVycm9yLnByb3RvdHlwZX0scz0+cyE9PSJpc0F4aW9zRXJyb3IiKSxLLmNhbGwoaSxBLm1lc3NhZ2UsSSx0LGUsZyksaS5jYXVzZT1BLGkubmFtZT1BLm5hbWUsciYmT2JqZWN0LmFzc2lnbihpLHIpLGl9O3ZhciBsPUs7dmFyIG5BPW51bGw7ZnVuY3Rpb24gVUEoQSl7cmV0dXJuIEIuaXNQbGFpbk9iamVjdChBKXx8Qi5pc0FycmF5KEEpfWZ1bmN0aW9uIGxJKEEpe3JldHVybiBCLmVuZHNXaXRoKEEsIltdIik/QS5zbGljZSgwLC0yKTpBfWZ1bmN0aW9uIGZJKEEsSSx0KXtyZXR1cm4gQT9BLmNvbmNhdChJKS5tYXAoZnVuY3Rpb24oZyxyKXtyZXR1cm4gZz1sSShnKSwhdCYmcj8iWyIrZysiXSI6Z30pLmpvaW4odD8iLiI6IiIpOkl9ZnVuY3Rpb24genQoQSl7cmV0dXJuIEIuaXNBcnJheShBKSYmIUEuc29tZShVQSl9dmFyIF90PUIudG9GbGF0T2JqZWN0KEIse30sbnVsbCxmdW5jdGlvbihJKXtyZXR1cm4vXmlzW0EtWl0vLnRlc3QoSSl9KTtmdW5jdGlvbiB2dChBLEksdCl7aWYoIUIuaXNPYmplY3QoQSkpdGhyb3cgbmV3IFR5cGVFcnJvcigidGFyZ2V0IG11c3QgYmUgYW4gb2JqZWN0Iik7ST1JfHxuZXcobkF8fEZvcm1EYXRhKSx0PUIudG9GbGF0T2JqZWN0KHQse21ldGFUb2tlbnM6ITAsZG90czohMSxpbmRleGVzOiExfSwhMSxmdW5jdGlvbihjLHUpe3JldHVybiFCLmlzVW5kZWZpbmVkKHVbY10pfSk7bGV0IGU9dC5tZXRhVG9rZW5zLGc9dC52aXNpdG9yfHxDLHI9dC5kb3RzLGk9dC5pbmRleGVzLGE9KHQuQmxvYnx8dHlwZW9mIEJsb2I8InUiJiZCbG9iKSYmQi5pc1NwZWNDb21wbGlhbnRGb3JtKEkpO2lmKCFCLmlzRnVuY3Rpb24oZykpdGhyb3cgbmV3IFR5cGVFcnJvcigidmlzaXRvciBtdXN0IGJlIGEgZnVuY3Rpb24iKTtmdW5jdGlvbiBuKEUpe2lmKEU9PT1udWxsKXJldHVybiIiO2lmKEIuaXNEYXRlKEUpKXJldHVybiBFLnRvSVNPU3RyaW5nKCk7aWYoIWEmJkIuaXNCbG9iKEUpKXRocm93IG5ldyBsKCJCbG9iIGlzIG5vdCBzdXBwb3J0ZWQuIFVzZSBhIEJ1ZmZlciBpbnN0ZWFkLiIpO3JldHVybiBCLmlzQXJyYXlCdWZmZXIoRSl8fEIuaXNUeXBlZEFycmF5KEUpP2EmJnR5cGVvZiBCbG9iPT0iZnVuY3Rpb24iP25ldyBCbG9iKFtFXSk6QnVmZmVyLmZyb20oRSk6RX1mdW5jdGlvbiBDKEUsYyx1KXtsZXQgZD1FO2lmKEUmJiF1JiZ0eXBlb2YgRT09Im9iamVjdCIpe2lmKEIuZW5kc1dpdGgoYywie30iKSljPWU/YzpjLnNsaWNlKDAsLTIpLEU9SlNPTi5zdHJpbmdpZnkoRSk7ZWxzZSBpZihCLmlzQXJyYXkoRSkmJnp0KEUpfHwoQi5pc0ZpbGVMaXN0KEUpfHxCLmVuZHNXaXRoKGMsIltdIikpJiYoZD1CLnRvQXJyYXkoRSkpKXJldHVybiBjPWxJKGMpLGQuZm9yRWFjaChmdW5jdGlvbihOLEl0KXshKEIuaXNVbmRlZmluZWQoTil8fE49PT1udWxsKSYmSS5hcHBlbmQoaT09PSEwP2ZJKFtjXSxJdCxyKTppPT09bnVsbD9jOmMrIltdIixuKE4pKX0pLCExfXJldHVybiBVQShFKT8hMDooSS5hcHBlbmQoZkkodSxjLHIpLG4oRSkpLCExKX1sZXQgbz1bXSxmPU9iamVjdC5hc3NpZ24oX3Qse2RlZmF1bHRWaXNpdG9yOkMsY29udmVydFZhbHVlOm4saXNWaXNpdGFibGU6VUF9KTtmdW5jdGlvbiBRKEUsYyl7aWYoIUIuaXNVbmRlZmluZWQoRSkpe2lmKG8uaW5kZXhPZihFKSE9PS0xKXRocm93IEVycm9yKCJDaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQgaW4gIitjLmpvaW4oIi4iKSk7by5wdXNoKEUpLEIuZm9yRWFjaChFLGZ1bmN0aW9uKGQsUil7KCEoQi5pc1VuZGVmaW5lZChkKXx8ZD09PW51bGwpJiZnLmNhbGwoSSxkLEIuaXNTdHJpbmcoUik/Ui50cmltKCk6UixjLGYpKT09PSEwJiZRKGQsYz9jLmNvbmNhdChSKTpbUl0pfSksby5wb3AoKX19aWYoIUIuaXNPYmplY3QoQSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiZGF0YSBtdXN0IGJlIGFuIG9iamVjdCIpO3JldHVybiBRKEEpLEl9dmFyIEw9dnQ7ZnVuY3Rpb24gREkoQSl7bGV0IEk9eyIhIjoiJTI1MjEiLCJcJyI6IiUyNTI3IiwiKCI6IiUyNTI4IiwiKSI6IiUyNTI5IiwifiI6IiUyNTdFIiwiJTI1MjAiOiIrIiwiJTI1MDAiOiJcXDAifTtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEEpLnJlcGxhY2UoL1shXCcoKX5dfCUyNTIwfCUyNTAwL2csZnVuY3Rpb24oZSl7cmV0dXJuIElbZV19KX1mdW5jdGlvbiB1SShBLEkpe3RoaXMuX3BhaXJzPVtdLEEmJkwoQSx0aGlzLEkpfXZhciBoST11SS5wcm90b3R5cGU7aEkuYXBwZW5kPWZ1bmN0aW9uKEksdCl7dGhpcy5fcGFpcnMucHVzaChbSSx0XSl9O2hJLnRvU3RyaW5nPWZ1bmN0aW9uKEkpe2xldCB0PUk/ZnVuY3Rpb24oZSl7cmV0dXJuIEkuY2FsbCh0aGlzLGUsREkpfTpESTtyZXR1cm4gdGhpcy5fcGFpcnMubWFwKGZ1bmN0aW9uKGcpe3JldHVybiB0KGdbMF0pKyI9Iit0KGdbMV0pfSwiIikuam9pbigiJiIpfTt2YXIgRUE9dUk7ZnVuY3Rpb24gJHQoQSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChBKS5yZXBsYWNlKC8lMjUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNTI0L2csIiQiKS5yZXBsYWNlKC8lMjUyQy9naSwiLCIpLnJlcGxhY2UoLyUyNTIwL2csIisiKS5yZXBsYWNlKC8lMjU1Qi9naSwiWyIpLnJlcGxhY2UoLyUyNTVEL2dpLCJdIil9ZnVuY3Rpb24gWChBLEksdCl7aWYoIUkpcmV0dXJuIEE7bGV0IGU9dCYmdC5lbmNvZGV8fCR0LGc9dCYmdC5zZXJpYWxpemUscjtpZihnP3I9ZyhJLHQpOnI9Qi5pc1VSTFNlYXJjaFBhcmFtcyhJKT9JLnRvU3RyaW5nKCk6bmV3IEVBKEksdCkudG9TdHJpbmcoZSkscil7bGV0IGk9QS5pbmRleE9mKCIlMjMiKTtpIT09LTEmJihBPUEuc2xpY2UoMCxpKSksQSs9KEEuaW5kZXhPZigiPyIpPT09LTE/Ij8iOiImIikrcn1yZXR1cm4gQX12YXIgR0E9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmhhbmRsZXJzPVtdfXVzZShJLHQsZSl7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOkkscmVqZWN0ZWQ6dCxzeW5jaHJvbm91czplP2Uuc3luY2hyb25vdXM6ITEscnVuV2hlbjplP2UucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX1lamVjdChJKXt0aGlzLmhhbmRsZXJzW0ldJiYodGhpcy5oYW5kbGVyc1tJXT1udWxsKX1jbGVhcigpe3RoaXMuaGFuZGxlcnMmJih0aGlzLmhhbmRsZXJzPVtdKX1mb3JFYWNoKEkpe0IuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLGZ1bmN0aW9uKGUpe2UhPT1udWxsJiZJKGUpfSl9fSxrQT1HQTt2YXIgYUE9e3NpbGVudEpTT05QYXJzaW5nOiEwLGZvcmNlZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9O3ZhciBkST10eXBlb2YgVVJMU2VhcmNoUGFyYW1zPCJ1Ij9VUkxTZWFyY2hQYXJhbXM6RUE7dmFyIHlJPXR5cGVvZiBGb3JtRGF0YTwidSI/Rm9ybURhdGE6bnVsbDt2YXIgd0k9dHlwZW9mIEJsb2I8InUiP0Jsb2I6bnVsbDt2YXIgbUk9e2lzQnJvd3NlcjohMCxjbGFzc2VzOntVUkxTZWFyY2hQYXJhbXM6ZEksRm9ybURhdGE6eUksQmxvYjp3SX0scHJvdG9jb2xzOlsiaHR0cCIsImh0dHBzIiwiZmlsZSIsImJsb2IiLCJ1cmwiLCJkYXRhIl19O3ZhciBMQT17fTtldChMQSx7aGFzQnJvd3NlckVudjooKT0+cEksaGFzU3RhbmRhcmRCcm93c2VyRW52OigpPT5BZSxoYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnY6KCk9PkllfSk7dmFyIHBJPXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2YgZG9jdW1lbnQ8InUiLEFlPShBPT5wSSYmWyJSZWFjdE5hdGl2ZSIsIk5hdGl2ZVNjcmlwdCIsIk5TIl0uaW5kZXhPZihBKTwwKSh0eXBlb2YgbmF2aWdhdG9yPCJ1IiYmbmF2aWdhdG9yLnByb2R1Y3QpLEllPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZTwidSImJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSYmdHlwZW9mIHNlbGYuaW1wb3J0U2NyaXB0cz09ImZ1bmN0aW9uIjt2YXIgdz17Li4uTEEsLi4ubUl9O2Z1bmN0aW9uIEpBKEEsSSl7cmV0dXJuIEwoQSxuZXcgdy5jbGFzc2VzLlVSTFNlYXJjaFBhcmFtcyxPYmplY3QuYXNzaWduKHt2aXNpdG9yOmZ1bmN0aW9uKHQsZSxnLHIpe3JldHVybiB3LmlzTm9kZSYmQi5pc0J1ZmZlcih0KT8odGhpcy5hcHBlbmQoZSx0LnRvU3RyaW5nKCJiYXNlNjQiKSksITEpOnIuZGVmYXVsdFZpc2l0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sSSkpfWZ1bmN0aW9uIHRlKEEpe3JldHVybiBCLm1hdGNoQWxsKC9cXHcrfFxcWyhcXHcqKV0vZyxBKS5tYXAoST0+SVswXT09PSJbXSI/IiI6SVsxXXx8SVswXSl9ZnVuY3Rpb24gZWUoQSl7bGV0IEk9e30sdD1PYmplY3Qua2V5cyhBKSxlLGc9dC5sZW5ndGgscjtmb3IoZT0wO2U8ZztlKyspcj10W2VdLElbcl09QVtyXTtyZXR1cm4gSX1mdW5jdGlvbiBnZShBKXtmdW5jdGlvbiBJKHQsZSxnLHIpe2xldCBpPXRbcisrXSxzPU51bWJlci5pc0Zpbml0ZSgraSksYT1yPj10Lmxlbmd0aDtyZXR1cm4gaT0haSYmQi5pc0FycmF5KGcpP2cubGVuZ3RoOmksYT8oQi5oYXNPd25Qcm9wKGcsaSk/Z1tpXT1bZ1tpXSxlXTpnW2ldPWUsIXMpOigoIWdbaV18fCFCLmlzT2JqZWN0KGdbaV0pKSYmKGdbaV09W10pLEkodCxlLGdbaV0scikmJkIuaXNBcnJheShnW2ldKSYmKGdbaV09ZWUoZ1tpXSkpLCFzKX1pZihCLmlzRm9ybURhdGEoQSkmJkIuaXNGdW5jdGlvbihBLmVudHJpZXMpKXtsZXQgdD17fTtyZXR1cm4gQi5mb3JFYWNoRW50cnkoQSwoZSxnKT0+e0kodGUoZSksZyx0LDApfSksdH1yZXR1cm4gbnVsbH12YXIgY0E9Z2U7ZnVuY3Rpb24gcmUoQSxJLHQpe2lmKEIuaXNTdHJpbmcoQSkpdHJ5e3JldHVybihJfHxKU09OLnBhcnNlKShBKSxCLnRyaW0oQSl9Y2F0Y2goZSl7aWYoZS5uYW1lIT09IlN5bnRheEVycm9yIil0aHJvdyBlfXJldHVybih0fHxKU09OLnN0cmluZ2lmeSkoQSl9dmFyIEhBPXt0cmFuc2l0aW9uYWw6YUEsYWRhcHRlcjpbInhociIsImh0dHAiXSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbihJLHQpe2xldCBlPXQuZ2V0Q29udGVudFR5cGUoKXx8IiIsZz1lLmluZGV4T2YoImFwcGxpY2F0aW9uL2pzb24iKT4tMSxyPUIuaXNPYmplY3QoSSk7aWYociYmQi5pc0hUTUxGb3JtKEkpJiYoST1uZXcgRm9ybURhdGEoSSkpLEIuaXNGb3JtRGF0YShJKSlyZXR1cm4gZyYmZz9KU09OLnN0cmluZ2lmeShjQShJKSk6STtpZihCLmlzQXJyYXlCdWZmZXIoSSl8fEIuaXNCdWZmZXIoSSl8fEIuaXNTdHJlYW0oSSl8fEIuaXNGaWxlKEkpfHxCLmlzQmxvYihJKSlyZXR1cm4gSTtpZihCLmlzQXJyYXlCdWZmZXJWaWV3KEkpKXJldHVybiBJLmJ1ZmZlcjtpZihCLmlzVVJMU2VhcmNoUGFyYW1zKEkpKXJldHVybiB0LnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIsITEpLEkudG9TdHJpbmcoKTtsZXQgcztpZihyKXtpZihlLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpPi0xKXJldHVybiBKQShJLHRoaXMuZm9ybVNlcmlhbGl6ZXIpLnRvU3RyaW5nKCk7aWYoKHM9Qi5pc0ZpbGVMaXN0KEkpKXx8ZS5pbmRleE9mKCJtdWx0aXBhcnQvZm9ybS1kYXRhIik+LTEpe2xldCBhPXRoaXMuZW52JiZ0aGlzLmVudi5Gb3JtRGF0YTtyZXR1cm4gTChzP3siZmlsZXNbXSI6SX06SSxhJiZuZXcgYSx0aGlzLmZvcm1TZXJpYWxpemVyKX19cmV0dXJuIHJ8fGc/KHQuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL2pzb24iLCExKSxyZShJKSk6SX1dLHRyYW5zZm9ybVJlc3BvbnNlOltmdW5jdGlvbihJKXtsZXQgdD10aGlzLnRyYW5zaXRpb25hbHx8SEEudHJhbnNpdGlvbmFsLGU9dCYmdC5mb3JjZWRKU09OUGFyc2luZyxnPXRoaXMucmVzcG9uc2VUeXBlPT09Impzb24iO2lmKEkmJkIuaXNTdHJpbmcoSSkmJihlJiYhdGhpcy5yZXNwb25zZVR5cGV8fGcpKXtsZXQgaT0hKHQmJnQuc2lsZW50SlNPTlBhcnNpbmcpJiZnO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShJKX1jYXRjaChzKXtpZihpKXRocm93IHMubmFtZT09PSJTeW50YXhFcnJvciI/bC5mcm9tKHMsbC5FUlJfQkFEX1JFU1BPTlNFLHRoaXMsbnVsbCx0aGlzLnJlc3BvbnNlKTpzfX1yZXR1cm4gSX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSxtYXhCb2R5TGVuZ3RoOi0xLGVudjp7Rm9ybURhdGE6dy5jbGFzc2VzLkZvcm1EYXRhLEJsb2I6dy5jbGFzc2VzLkJsb2J9LHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKEkpe3JldHVybiBJPj0yMDAmJkk8MzAwfSxoZWFkZXJzOntjb21tb246e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIiwiQ29udGVudC1UeXBlIjp2b2lkIDB9fX07Qi5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCJdLEE9PntIQS5oZWFkZXJzW0FdPXt9fSk7dmFyIE89SEE7dmFyIGllPUIudG9PYmplY3RTZXQoWyJhZ2UiLCJhdXRob3JpemF0aW9uIiwiY29udGVudC1sZW5ndGgiLCJjb250ZW50LXR5cGUiLCJldGFnIiwiZXhwaXJlcyIsImZyb20iLCJob3N0IiwiaWYtbW9kaWZpZWQtc2luY2UiLCJpZi11bm1vZGlmaWVkLXNpbmNlIiwibGFzdC1tb2RpZmllZCIsImxvY2F0aW9uIiwibWF4LWZvcndhcmRzIiwicHJveHktYXV0aG9yaXphdGlvbiIsInJlZmVyZXIiLCJyZXRyeS1hZnRlciIsInVzZXItYWdlbnQiXSksU0k9QT0+e2xldCBJPXt9LHQsZSxnO3JldHVybiBBJiZBLnNwbGl0KGAlMEFgKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe2c9aS5pbmRleE9mKCI6IiksdD1pLnN1YnN0cmluZygwLGcpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLGU9aS5zdWJzdHJpbmcoZysxKS50cmltKCksISghdHx8SVt0XSYmaWVbdF0pJiYodD09PSJzZXQtY29va2llIj9JW3RdP0lbdF0ucHVzaChlKTpJW3RdPVtlXTpJW3RdPUlbdF0/SVt0XSsiLCAiK2U6ZSl9KSxJfTt2YXIgRkk9U3ltYm9sKCJpbnRlcm5hbHMiKTtmdW5jdGlvbiB6KEEpe3JldHVybiBBJiZTdHJpbmcoQSkudHJpbSgpLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gZkEoQSl7cmV0dXJuIEE9PT0hMXx8QT09bnVsbD9BOkIuaXNBcnJheShBKT9BLm1hcChmQSk6U3RyaW5nKEEpfWZ1bmN0aW9uIG9lKEEpe2xldCBJPU9iamVjdC5jcmVhdGUobnVsbCksdD0vKFteXFxzLDs9XSspXFxzKig/Oj1cXHMqKFteLDtdKykpPy9nLGU7Zm9yKDtlPXQuZXhlYyhBKTspSVtlWzFdXT1lWzJdO3JldHVybiBJfXZhciBCZT1BPT4vXlstX2EtekEtWjAtOV5gfH4sISUyMyQlJlwnKisuXSskLy50ZXN0KEEudHJpbSgpKTtmdW5jdGlvbiBZQShBLEksdCxlLGcpe2lmKEIuaXNGdW5jdGlvbihlKSlyZXR1cm4gZS5jYWxsKHRoaXMsSSx0KTtpZihnJiYoST10KSwhIUIuaXNTdHJpbmcoSSkpe2lmKEIuaXNTdHJpbmcoZSkpcmV0dXJuIEkuaW5kZXhPZihlKSE9PS0xO2lmKEIuaXNSZWdFeHAoZSkpcmV0dXJuIGUudGVzdChJKX19ZnVuY3Rpb24gQ2UoQSl7cmV0dXJuIEEudHJpbSgpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvKFthLXpcXGRdKShcXHcqKS9nLChJLHQsZSk9PnQudG9VcHBlckNhc2UoKStlKX1mdW5jdGlvbiBzZShBLEkpe2xldCB0PUIudG9DYW1lbENhc2UoIiAiK0kpO1siZ2V0Iiwic2V0IiwiaGFzIl0uZm9yRWFjaChlPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KEEsZSt0LHt2YWx1ZTpmdW5jdGlvbihnLHIsaSl7cmV0dXJuIHRoaXNbZV0uY2FsbCh0aGlzLEksZyxyLGkpfSxjb25maWd1cmFibGU6ITB9KX0pfXZhciBUPWNsYXNze2NvbnN0cnVjdG9yKEkpe0kmJnRoaXMuc2V0KEkpfXNldChJLHQsZSl7bGV0IGc9dGhpcztmdW5jdGlvbiByKHMsYSxuKXtsZXQgQz16KGEpO2lmKCFDKXRocm93IG5ldyBFcnJvcigiaGVhZGVyIG5hbWUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmciKTtsZXQgbz1CLmZpbmRLZXkoZyxDKTsoIW98fGdbb109PT12b2lkIDB8fG49PT0hMHx8bj09PXZvaWQgMCYmZ1tvXSE9PSExKSYmKGdbb3x8YV09ZkEocykpfWxldCBpPShzLGEpPT5CLmZvckVhY2gocywobixDKT0+cihuLEMsYSkpO3JldHVybiBCLmlzUGxhaW5PYmplY3QoSSl8fEkgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yP2koSSx0KTpCLmlzU3RyaW5nKEkpJiYoST1JLnRyaW0oKSkmJiFCZShJKT9pKFNJKEkpLHQpOkkhPW51bGwmJnIodCxJLGUpLHRoaXN9Z2V0KEksdCl7aWYoST16KEkpLEkpe2xldCBlPUIuZmluZEtleSh0aGlzLEkpO2lmKGUpe2xldCBnPXRoaXNbZV07aWYoIXQpcmV0dXJuIGc7aWYodD09PSEwKXJldHVybiBvZShnKTtpZihCLmlzRnVuY3Rpb24odCkpcmV0dXJuIHQuY2FsbCh0aGlzLGcsZSk7aWYoQi5pc1JlZ0V4cCh0KSlyZXR1cm4gdC5leGVjKGcpO3Rocm93IG5ldyBUeXBlRXJyb3IoInBhcnNlciBtdXN0IGJlIGJvb2xlYW58cmVnZXhwfGZ1bmN0aW9uIil9fX1oYXMoSSx0KXtpZihJPXooSSksSSl7bGV0IGU9Qi5maW5kS2V5KHRoaXMsSSk7cmV0dXJuISEoZSYmdGhpc1tlXSE9PXZvaWQgMCYmKCF0fHxZQSh0aGlzLHRoaXNbZV0sZSx0KSkpfXJldHVybiExfWRlbGV0ZShJLHQpe2xldCBlPXRoaXMsZz0hMTtmdW5jdGlvbiByKGkpe2lmKGk9eihpKSxpKXtsZXQgcz1CLmZpbmRLZXkoZSxpKTtzJiYoIXR8fFlBKGUsZVtzXSxzLHQpKSYmKGRlbGV0ZSBlW3NdLGc9ITApfX1yZXR1cm4gQi5pc0FycmF5KEkpP0kuZm9yRWFjaChyKTpyKEkpLGd9Y2xlYXIoSSl7bGV0IHQ9T2JqZWN0LmtleXModGhpcyksZT10Lmxlbmd0aCxnPSExO2Zvcig7ZS0tOyl7bGV0IHI9dFtlXTsoIUl8fFlBKHRoaXMsdGhpc1tyXSxyLEksITApKSYmKGRlbGV0ZSB0aGlzW3JdLGc9ITApfXJldHVybiBnfW5vcm1hbGl6ZShJKXtsZXQgdD10aGlzLGU9e307cmV0dXJuIEIuZm9yRWFjaCh0aGlzLChnLHIpPT57bGV0IGk9Qi5maW5kS2V5KGUscik7aWYoaSl7dFtpXT1mQShnKSxkZWxldGUgdFtyXTtyZXR1cm59bGV0IHM9ST9DZShyKTpTdHJpbmcocikudHJpbSgpO3MhPT1yJiZkZWxldGUgdFtyXSx0W3NdPWZBKGcpLGVbc109ITB9KSx0aGlzfWNvbmNhdCguLi5JKXtyZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5jb25jYXQodGhpcywuLi5JKX10b0pTT04oSSl7bGV0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gQi5mb3JFYWNoKHRoaXMsKGUsZyk9PntlIT1udWxsJiZlIT09ITEmJih0W2ddPUkmJkIuaXNBcnJheShlKT9lLmpvaW4oIiwgIik6ZSl9KSx0fVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMudG9KU09OKCkpW1N5bWJvbC5pdGVyYXRvcl0oKX10b1N0cmluZygpe3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKS5tYXAoKFtJLHRdKT0+SSsiOiAiK3QpLmpvaW4oYCUwQWApfWdldFtTeW1ib2wudG9TdHJpbmdUYWddKCl7cmV0dXJuIkF4aW9zSGVhZGVycyJ9c3RhdGljIGZyb20oSSl7cmV0dXJuIEkgaW5zdGFuY2VvZiB0aGlzP0k6bmV3IHRoaXMoSSl9c3RhdGljIGNvbmNhdChJLC4uLnQpe2xldCBlPW5ldyB0aGlzKEkpO3JldHVybiB0LmZvckVhY2goZz0+ZS5zZXQoZykpLGV9c3RhdGljIGFjY2Vzc29yKEkpe2xldCBlPSh0aGlzW0ZJXT10aGlzW0ZJXT17YWNjZXNzb3JzOnt9fSkuYWNjZXNzb3JzLGc9dGhpcy5wcm90b3R5cGU7ZnVuY3Rpb24gcihpKXtsZXQgcz16KGkpO2Vbc118fChzZShnLGkpLGVbc109ITApfXJldHVybiBCLmlzQXJyYXkoSSk/SS5mb3JFYWNoKHIpOnIoSSksdGhpc319O1QuYWNjZXNzb3IoWyJDb250ZW50LVR5cGUiLCJDb250ZW50LUxlbmd0aCIsIkFjY2VwdCIsIkFjY2VwdC1FbmNvZGluZyIsIlVzZXItQWdlbnQiLCJBdXRob3JpemF0aW9uIl0pO0IucmVkdWNlRGVzY3JpcHRvcnMoVC5wcm90b3R5cGUsKHt2YWx1ZTpBfSxJKT0+e2xldCB0PUlbMF0udG9VcHBlckNhc2UoKStJLnNsaWNlKDEpO3JldHVybntnZXQ6KCk9PkEsc2V0KGUpe3RoaXNbdF09ZX19fSk7Qi5mcmVlemVNZXRob2RzKFQpO3ZhciBtPVQ7ZnVuY3Rpb24gXyhBLEkpe2xldCB0PXRoaXN8fE8sZT1JfHx0LGc9bS5mcm9tKGUuaGVhZGVycykscj1lLmRhdGE7cmV0dXJuIEIuZm9yRWFjaChBLGZ1bmN0aW9uKHMpe3I9cy5jYWxsKHQscixnLm5vcm1hbGl6ZSgpLEk/SS5zdGF0dXM6dm9pZCAwKX0pLGcubm9ybWFsaXplKCkscn1mdW5jdGlvbiB2KEEpe3JldHVybiEhKEEmJkEuX19DQU5DRUxfXyl9ZnVuY3Rpb24gUkkoQSxJLHQpe2wuY2FsbCh0aGlzLEE/PyJjYW5jZWxlZCIsbC5FUlJfQ0FOQ0VMRUQsSSx0KSx0aGlzLm5hbWU9IkNhbmNlbGVkRXJyb3IifUIuaW5oZXJpdHMoUkksbCx7X19DQU5DRUxfXzohMH0pO3ZhciBKPVJJO2Z1bmN0aW9uIGJBKEEsSSx0KXtsZXQgZT10LmNvbmZpZy52YWxpZGF0ZVN0YXR1czshdC5zdGF0dXN8fCFlfHxlKHQuc3RhdHVzKT9BKHQpOkkobmV3IGwoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIit0LnN0YXR1cyxbbC5FUlJfQkFEX1JFUVVFU1QsbC5FUlJfQkFEX1JFU1BPTlNFXVtNYXRoLmZsb29yKHQuc3RhdHVzLzEwMCktNF0sdC5jb25maWcsdC5yZXF1ZXN0LHQpKX12YXIgTkk9dy5oYXNTdGFuZGFyZEJyb3dzZXJFbnY/e3dyaXRlKEEsSSx0LGUsZyxyKXtsZXQgaT1bQSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KEkpXTtCLmlzTnVtYmVyKHQpJiZpLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZSh0KS50b0dNVFN0cmluZygpKSxCLmlzU3RyaW5nKGUpJiZpLnB1c2goInBhdGg9IitlKSxCLmlzU3RyaW5nKGcpJiZpLnB1c2goImRvbWFpbj0iK2cpLHI9PT0hMCYmaS5wdXNoKCJzZWN1cmUiKSxkb2N1bWVudC5jb29raWU9aS5qb2luKCI7ICIpfSxyZWFkKEEpe2xldCBJPWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCIoXnw7XFxcXHMqKSgiK0ErIik9KFteO10qKSIpKTtyZXR1cm4gST9kZWNvZGVVUklDb21wb25lbnQoSVszXSk6bnVsbH0scmVtb3ZlKEEpe3RoaXMud3JpdGUoQSwiIixEYXRlLm5vdygpLTg2NGU1KX19Ont3cml0ZSgpe30scmVhZCgpe3JldHVybiBudWxsfSxyZW1vdmUoKXt9fTtmdW5jdGlvbiBNQShBKXtyZXR1cm4vXihbYS16XVthLXpcXGQrXFwtLl0qOik/XFwvXFwvL2kudGVzdChBKX1mdW5jdGlvbiBxQShBLEkpe3JldHVybiBJP0EucmVwbGFjZSgvXFwvKyQvLCIiKSsiLyIrSS5yZXBsYWNlKC9eXFwvKy8sIiIpOkF9ZnVuY3Rpb24gJChBLEkpe3JldHVybiBBJiYhTUEoSSk/cUEoQSxJKTpJfXZhciBVST13Lmhhc1N0YW5kYXJkQnJvd3NlckVudj9mdW5jdGlvbigpe2xldCBJPS8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIiksZTtmdW5jdGlvbiBnKHIpe2xldCBpPXI7cmV0dXJuIEkmJih0LnNldEF0dHJpYnV0ZSgiaHJlZiIsaSksaT10LmhyZWYpLHQuc2V0QXR0cmlidXRlKCJocmVmIixpKSx7aHJlZjp0LmhyZWYscHJvdG9jb2w6dC5wcm90b2NvbD90LnByb3RvY29sLnJlcGxhY2UoLzokLywiIik6IiIsaG9zdDp0Lmhvc3Qsc2VhcmNoOnQuc2VhcmNoP3Quc2VhcmNoLnJlcGxhY2UoL15cXD8vLCIiKToiIixoYXNoOnQuaGFzaD90Lmhhc2gucmVwbGFjZSgvXiUyMy8sIiIpOiIiLGhvc3RuYW1lOnQuaG9zdG5hbWUscG9ydDp0LnBvcnQscGF0aG5hbWU6dC5wYXRobmFtZS5jaGFyQXQoMCk9PT0iLyI/dC5wYXRobmFtZToiLyIrdC5wYXRobmFtZX19cmV0dXJuIGU9Zyh3aW5kb3cubG9jYXRpb24uaHJlZiksZnVuY3Rpb24oaSl7bGV0IHM9Qi5pc1N0cmluZyhpKT9nKGkpOmk7cmV0dXJuIHMucHJvdG9jb2w9PT1lLnByb3RvY29sJiZzLmhvc3Q9PT1lLmhvc3R9fSgpOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuITB9fSgpO2Z1bmN0aW9uIEtBKEEpe2xldCBJPS9eKFstK1xcd117MSwyNX0pKDo/XFwvXFwvfDopLy5leGVjKEEpO3JldHVybiBJJiZJWzFdfHwiIn1mdW5jdGlvbiBRZShBLEkpe0E9QXx8MTA7bGV0IHQ9bmV3IEFycmF5KEEpLGU9bmV3IEFycmF5KEEpLGc9MCxyPTAsaTtyZXR1cm4gST1JIT09dm9pZCAwP0k6MWUzLGZ1bmN0aW9uKGEpe2xldCBuPURhdGUubm93KCksQz1lW3JdO2l8fChpPW4pLHRbZ109YSxlW2ddPW47bGV0IG89cixmPTA7Zm9yKDtvIT09ZzspZis9dFtvKytdLG89byVBO2lmKGc9KGcrMSklQSxnPT09ciYmKHI9KHIrMSklQSksbi1pPEkpcmV0dXJuO2xldCBRPUMmJm4tQztyZXR1cm4gUT9NYXRoLnJvdW5kKGYqMWUzL1EpOnZvaWQgMH19dmFyIEdJPVFlO2Z1bmN0aW9uIGtJKEEsSSl7bGV0IHQ9MCxlPUdJKDUwLDI1MCk7cmV0dXJuIGc9PntsZXQgcj1nLmxvYWRlZCxpPWcubGVuZ3RoQ29tcHV0YWJsZT9nLnRvdGFsOnZvaWQgMCxzPXItdCxhPWUocyksbj1yPD1pO3Q9cjtsZXQgQz17bG9hZGVkOnIsdG90YWw6aSxwcm9ncmVzczppP3IvaTp2b2lkIDAsYnl0ZXM6cyxyYXRlOmF8fHZvaWQgMCxlc3RpbWF0ZWQ6YSYmaSYmbj8oaS1yKS9hOnZvaWQgMCxldmVudDpnfTtDW0k/ImRvd25sb2FkIjoidXBsb2FkIl09ITAsQShDKX19dmFyIG5lPXR5cGVvZiBYTUxIdHRwUmVxdWVzdDwidSIsTEk9bmUmJmZ1bmN0aW9uKEEpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0LGUpe2xldCBnPUEuZGF0YSxyPW0uZnJvbShBLmhlYWRlcnMpLm5vcm1hbGl6ZSgpLHtyZXNwb25zZVR5cGU6aSx3aXRoWFNSRlRva2VuOnN9PUEsYTtmdW5jdGlvbiBuKCl7QS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi51bnN1YnNjcmliZShhKSxBLnNpZ25hbCYmQS5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGEpfWxldCBDO2lmKEIuaXNGb3JtRGF0YShnKSl7aWYody5oYXNTdGFuZGFyZEJyb3dzZXJFbnZ8fHcuaGFzU3RhbmRhcmRCcm93c2VyV2ViV29ya2VyRW52KXIuc2V0Q29udGVudFR5cGUoITEpO2Vsc2UgaWYoKEM9ci5nZXRDb250ZW50VHlwZSgpKSE9PSExKXtsZXRbYywuLi51XT1DP0Muc3BsaXQoIjsiKS5tYXAoZD0+ZC50cmltKCkpLmZpbHRlcihCb29sZWFuKTpbXTtyLnNldENvbnRlbnRUeXBlKFtjfHwibXVsdGlwYXJ0L2Zvcm0tZGF0YSIsLi4udV0uam9pbigiOyAiKSl9fWxldCBvPW5ldyBYTUxIdHRwUmVxdWVzdDtpZihBLmF1dGgpe2xldCBjPUEuYXV0aC51c2VybmFtZXx8IiIsdT1BLmF1dGgucGFzc3dvcmQ/dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEEuYXV0aC5wYXNzd29yZCkpOiIiO3Iuc2V0KCJBdXRob3JpemF0aW9uIiwiQmFzaWMgIitidG9hKGMrIjoiK3UpKX1sZXQgZj0kKEEuYmFzZVVSTCxBLnVybCk7by5vcGVuKEEubWV0aG9kLnRvVXBwZXJDYXNlKCksWChmLEEucGFyYW1zLEEucGFyYW1zU2VyaWFsaXplciksITApLG8udGltZW91dD1BLnRpbWVvdXQ7ZnVuY3Rpb24gUSgpe2lmKCFvKXJldHVybjtsZXQgYz1tLmZyb20oImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiBvJiZvLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSxkPXtkYXRhOiFpfHxpPT09InRleHQifHxpPT09Impzb24iP28ucmVzcG9uc2VUZXh0Om8ucmVzcG9uc2Usc3RhdHVzOm8uc3RhdHVzLHN0YXR1c1RleHQ6by5zdGF0dXNUZXh0LGhlYWRlcnM6Yyxjb25maWc6QSxyZXF1ZXN0Om99O2JBKGZ1bmN0aW9uKE4pe3QoTiksbigpfSxmdW5jdGlvbihOKXtlKE4pLG4oKX0sZCksbz1udWxsfWlmKCJvbmxvYWRlbmQiaW4gbz9vLm9ubG9hZGVuZD1ROm8ub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7IW98fG8ucmVhZHlTdGF0ZSE9PTR8fG8uc3RhdHVzPT09MCYmIShvLnJlc3BvbnNlVVJMJiZvLnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6Iik9PT0wKXx8c2V0VGltZW91dChRKX0sby5vbmFib3J0PWZ1bmN0aW9uKCl7byYmKGUobmV3IGwoIlJlcXVlc3QgYWJvcnRlZCIsbC5FQ09OTkFCT1JURUQsQSxvKSksbz1udWxsKX0sby5vbmVycm9yPWZ1bmN0aW9uKCl7ZShuZXcgbCgiTmV0d29yayBFcnJvciIsbC5FUlJfTkVUV09SSyxBLG8pKSxvPW51bGx9LG8ub250aW1lb3V0PWZ1bmN0aW9uKCl7bGV0IHU9QS50aW1lb3V0PyJ0aW1lb3V0IG9mICIrQS50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiLGQ9QS50cmFuc2l0aW9uYWx8fGFBO0EudGltZW91dEVycm9yTWVzc2FnZSYmKHU9QS50aW1lb3V0RXJyb3JNZXNzYWdlKSxlKG5ldyBsKHUsZC5jbGFyaWZ5VGltZW91dEVycm9yP2wuRVRJTUVET1VUOmwuRUNPTk5BQk9SVEVELEEsbykpLG89bnVsbH0sdy5oYXNTdGFuZGFyZEJyb3dzZXJFbnYmJihzJiZCLmlzRnVuY3Rpb24ocykmJihzPXMoQSkpLHN8fHMhPT0hMSYmVUkoZikpKXtsZXQgYz1BLnhzcmZIZWFkZXJOYW1lJiZBLnhzcmZDb29raWVOYW1lJiZOSS5yZWFkKEEueHNyZkNvb2tpZU5hbWUpO2MmJnIuc2V0KEEueHNyZkhlYWRlck5hbWUsYyl9Zz09PXZvaWQgMCYmci5zZXRDb250ZW50VHlwZShudWxsKSwic2V0UmVxdWVzdEhlYWRlciJpbiBvJiZCLmZvckVhY2goci50b0pTT04oKSxmdW5jdGlvbih1LGQpe28uc2V0UmVxdWVzdEhlYWRlcihkLHUpfSksQi5pc1VuZGVmaW5lZChBLndpdGhDcmVkZW50aWFscyl8fChvLndpdGhDcmVkZW50aWFscz0hIUEud2l0aENyZWRlbnRpYWxzKSxpJiZpIT09Impzb24iJiYoby5yZXNwb25zZVR5cGU9QS5yZXNwb25zZVR5cGUpLHR5cGVvZiBBLm9uRG93bmxvYWRQcm9ncmVzcz09ImZ1bmN0aW9uIiYmby5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsa0koQS5vbkRvd25sb2FkUHJvZ3Jlc3MsITApKSx0eXBlb2YgQS5vblVwbG9hZFByb2dyZXNzPT0iZnVuY3Rpb24iJiZvLnVwbG9hZCYmby51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGtJKEEub25VcGxvYWRQcm9ncmVzcykpLChBLmNhbmNlbFRva2VufHxBLnNpZ25hbCkmJihhPWM9PntvJiYoZSghY3x8Yy50eXBlP25ldyBKKG51bGwsQSxvKTpjKSxvLmFib3J0KCksbz1udWxsKX0sQS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUoYSksQS5zaWduYWwmJihBLnNpZ25hbC5hYm9ydGVkP2EoKTpBLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsYSkpKTtsZXQgRT1LQShmKTtpZihFJiZ3LnByb3RvY29scy5pbmRleE9mKEUpPT09LTEpe2UobmV3IGwoIlVuc3VwcG9ydGVkIHByb3RvY29sICIrRSsiOiIsbC5FUlJfQkFEX1JFUVVFU1QsQSkpO3JldHVybn1vLnNlbmQoZ3x8bnVsbCl9KX07dmFyIE9BPXtodHRwOm5BLHhocjpMSX07Qi5mb3JFYWNoKE9BLChBLEkpPT57aWYoQSl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJuYW1lIix7dmFsdWU6SX0pfWNhdGNoe31PYmplY3QuZGVmaW5lUHJvcGVydHkoQSwiYWRhcHRlck5hbWUiLHt2YWx1ZTpJfSl9fSk7dmFyIEpJPUE9PmAtICR7QX1gLEVlPUE9PkIuaXNGdW5jdGlvbihBKXx8QT09PW51bGx8fEE9PT0hMSxsQT17Z2V0QWRhcHRlcjpBPT57QT1CLmlzQXJyYXkoQSk/QTpbQV07bGV0e2xlbmd0aDpJfT1BLHQsZSxnPXt9O2ZvcihsZXQgcj0wO3I8STtyKyspe3Q9QVtyXTtsZXQgaTtpZihlPXQsIUVlKHQpJiYoZT1PQVsoaT1TdHJpbmcodCkpLnRvTG93ZXJDYXNlKCldLGU9PT12b2lkIDApKXRocm93IG5ldyBsKGBVbmtub3duIGFkYXB0ZXIgXCcke2l9XCdgKTtpZihlKWJyZWFrO2dbaXx8IiUyMyIrcl09ZX1pZighZSl7bGV0IHI9T2JqZWN0LmVudHJpZXMoZykubWFwKChbcyxhXSk9PmBhZGFwdGVyICR7c30gYCsoYT09PSExPyJpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBlbnZpcm9ubWVudCI6ImlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGJ1aWxkIikpLGk9ST9yLmxlbmd0aD4xP2BzaW5jZSA6JTBBYCtyLm1hcChKSSkuam9pbihgJTBBYCk6IiAiK0pJKHJbMF0pOiJhcyBubyBhZGFwdGVyIHNwZWNpZmllZCI7dGhyb3cgbmV3IGwoIlRoZXJlIGlzIG5vIHN1aXRhYmxlIGFkYXB0ZXIgdG8gZGlzcGF0Y2ggdGhlIHJlcXVlc3QgIitpLCJFUlJfTk9UX1NVUFBPUlQiKX1yZXR1cm4gZX0sYWRhcHRlcnM6T0F9O2Z1bmN0aW9uIFRBKEEpe2lmKEEuY2FuY2VsVG9rZW4mJkEuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpLEEuc2lnbmFsJiZBLnNpZ25hbC5hYm9ydGVkKXRocm93IG5ldyBKKG51bGwsQSl9ZnVuY3Rpb24gREEoQSl7cmV0dXJuIFRBKEEpLEEuaGVhZGVycz1tLmZyb20oQS5oZWFkZXJzKSxBLmRhdGE9Xy5jYWxsKEEsQS50cmFuc2Zvcm1SZXF1ZXN0KSxbInBvc3QiLCJwdXQiLCJwYXRjaCJdLmluZGV4T2YoQS5tZXRob2QpIT09LTEmJkEuaGVhZGVycy5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiwhMSksbEEuZ2V0QWRhcHRlcihBLmFkYXB0ZXJ8fE8uYWRhcHRlcikoQSkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gVEEoQSksZS5kYXRhPV8uY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2UsZSksZS5oZWFkZXJzPW0uZnJvbShlLmhlYWRlcnMpLGV9LGZ1bmN0aW9uKGUpe3JldHVybiB2KGUpfHwoVEEoQSksZSYmZS5yZXNwb25zZSYmKGUucmVzcG9uc2UuZGF0YT1fLmNhbGwoQSxBLnRyYW5zZm9ybVJlc3BvbnNlLGUucmVzcG9uc2UpLGUucmVzcG9uc2UuaGVhZGVycz1tLmZyb20oZS5yZXNwb25zZS5oZWFkZXJzKSkpLFByb21pc2UucmVqZWN0KGUpfSl9dmFyIEhJPUE9PkEgaW5zdGFuY2VvZiBtP0EudG9KU09OKCk6QTtmdW5jdGlvbiBHKEEsSSl7ST1JfHx7fTtsZXQgdD17fTtmdW5jdGlvbiBlKG4sQyxvKXtyZXR1cm4gQi5pc1BsYWluT2JqZWN0KG4pJiZCLmlzUGxhaW5PYmplY3QoQyk/Qi5tZXJnZS5jYWxsKHtjYXNlbGVzczpvfSxuLEMpOkIuaXNQbGFpbk9iamVjdChDKT9CLm1lcmdlKHt9LEMpOkIuaXNBcnJheShDKT9DLnNsaWNlKCk6Q31mdW5jdGlvbiBnKG4sQyxvKXtpZihCLmlzVW5kZWZpbmVkKEMpKXtpZighQi5pc1VuZGVmaW5lZChuKSlyZXR1cm4gZSh2b2lkIDAsbixvKX1lbHNlIHJldHVybiBlKG4sQyxvKX1mdW5jdGlvbiByKG4sQyl7aWYoIUIuaXNVbmRlZmluZWQoQykpcmV0dXJuIGUodm9pZCAwLEMpfWZ1bmN0aW9uIGkobixDKXtpZihCLmlzVW5kZWZpbmVkKEMpKXtpZighQi5pc1VuZGVmaW5lZChuKSlyZXR1cm4gZSh2b2lkIDAsbil9ZWxzZSByZXR1cm4gZSh2b2lkIDAsQyl9ZnVuY3Rpb24gcyhuLEMsbyl7aWYobyBpbiBJKXJldHVybiBlKG4sQyk7aWYobyBpbiBBKXJldHVybiBlKHZvaWQgMCxuKX1sZXQgYT17dXJsOnIsbWV0aG9kOnIsZGF0YTpyLGJhc2VVUkw6aSx0cmFuc2Zvcm1SZXF1ZXN0OmksdHJhbnNmb3JtUmVzcG9uc2U6aSxwYXJhbXNTZXJpYWxpemVyOmksdGltZW91dDppLHRpbWVvdXRNZXNzYWdlOmksd2l0aENyZWRlbnRpYWxzOmksd2l0aFhTUkZUb2tlbjppLGFkYXB0ZXI6aSxyZXNwb25zZVR5cGU6aSx4c3JmQ29va2llTmFtZTppLHhzcmZIZWFkZXJOYW1lOmksb25VcGxvYWRQcm9ncmVzczppLG9uRG93bmxvYWRQcm9ncmVzczppLGRlY29tcHJlc3M6aSxtYXhDb250ZW50TGVuZ3RoOmksbWF4Qm9keUxlbmd0aDppLGJlZm9yZVJlZGlyZWN0OmksdHJhbnNwb3J0OmksaHR0cEFnZW50OmksaHR0cHNBZ2VudDppLGNhbmNlbFRva2VuOmksc29ja2V0UGF0aDppLHJlc3BvbnNlRW5jb2Rpbmc6aSx2YWxpZGF0ZVN0YXR1czpzLGhlYWRlcnM6KG4sQyk9PmcoSEkobiksSEkoQyksITApfTtyZXR1cm4gQi5mb3JFYWNoKE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sQSxJKSksZnVuY3Rpb24oQyl7bGV0IG89YVtDXXx8ZyxmPW8oQVtDXSxJW0NdLEMpO0IuaXNVbmRlZmluZWQoZikmJm8hPT1zfHwodFtDXT1mKX0pLHR9dmFyIHVBPSIxLjYuMiI7dmFyIHhBPXt9O1sib2JqZWN0IiwiYm9vbGVhbiIsIm51bWJlciIsImZ1bmN0aW9uIiwic3RyaW5nIiwic3ltYm9sIl0uZm9yRWFjaCgoQSxJKT0+e3hBW0FdPWZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09PUF8fCJhIisoSTwxPyJuICI6IiAiKStBfX0pO3ZhciBZST17fTt4QS50cmFuc2l0aW9uYWw9ZnVuY3Rpb24oSSx0LGUpe2Z1bmN0aW9uIGcocixpKXtyZXR1cm4iW0F4aW9zIHYiK3VBKyJdIFRyYW5zaXRpb25hbCBvcHRpb24gXCciK3IrIlwnIitpKyhlPyIuICIrZToiIil9cmV0dXJuKHIsaSxzKT0+e2lmKEk9PT0hMSl0aHJvdyBuZXcgbChnKGksIiBoYXMgYmVlbiByZW1vdmVkIisodD8iIGluICIrdDoiIikpLGwuRVJSX0RFUFJFQ0FURUQpO3JldHVybiB0JiYhWUlbaV0mJihZSVtpXT0hMCxjb25zb2xlLndhcm4oZyhpLCIgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2Iit0KyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLEk/SShyLGkscyk6ITB9fTtmdW5jdGlvbiBhZShBLEksdCl7aWYodHlwZW9mIEEhPSJvYmplY3QiKXRocm93IG5ldyBsKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0IixsLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtsZXQgZT1PYmplY3Qua2V5cyhBKSxnPWUubGVuZ3RoO2Zvcig7Zy0tID4wOyl7bGV0IHI9ZVtnXSxpPUlbcl07aWYoaSl7bGV0IHM9QVtyXSxhPXM9PT12b2lkIDB8fGkocyxyLEEpO2lmKGEhPT0hMCl0aHJvdyBuZXcgbCgib3B0aW9uICIrcisiIG11c3QgYmUgIithLGwuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2NvbnRpbnVlfWlmKHQhPT0hMCl0aHJvdyBuZXcgbCgiVW5rbm93biBvcHRpb24gIityLGwuRVJSX0JBRF9PUFRJT04pfX12YXIgaEE9e2Fzc2VydE9wdGlvbnM6YWUsdmFsaWRhdG9yczp4QX07dmFyIEg9aEEudmFsaWRhdG9ycyx4PWNsYXNze2NvbnN0cnVjdG9yKEkpe3RoaXMuZGVmYXVsdHM9SSx0aGlzLmludGVyY2VwdG9ycz17cmVxdWVzdDpuZXcga0EscmVzcG9uc2U6bmV3IGtBfX1yZXF1ZXN0KEksdCl7dHlwZW9mIEk9PSJzdHJpbmciPyh0PXR8fHt9LHQudXJsPUkpOnQ9SXx8e30sdD1HKHRoaXMuZGVmYXVsdHMsdCk7bGV0e3RyYW5zaXRpb25hbDplLHBhcmFtc1NlcmlhbGl6ZXI6ZyxoZWFkZXJzOnJ9PXQ7ZSE9PXZvaWQgMCYmaEEuYXNzZXJ0T3B0aW9ucyhlLHtzaWxlbnRKU09OUGFyc2luZzpILnRyYW5zaXRpb25hbChILmJvb2xlYW4pLGZvcmNlZEpTT05QYXJzaW5nOkgudHJhbnNpdGlvbmFsKEguYm9vbGVhbiksY2xhcmlmeVRpbWVvdXRFcnJvcjpILnRyYW5zaXRpb25hbChILmJvb2xlYW4pfSwhMSksZyE9bnVsbCYmKEIuaXNGdW5jdGlvbihnKT90LnBhcmFtc1NlcmlhbGl6ZXI9e3NlcmlhbGl6ZTpnfTpoQS5hc3NlcnRPcHRpb25zKGcse2VuY29kZTpILmZ1bmN0aW9uLHNlcmlhbGl6ZTpILmZ1bmN0aW9ufSwhMCkpLHQubWV0aG9kPSh0Lm1ldGhvZHx8dGhpcy5kZWZhdWx0cy5tZXRob2R8fCJnZXQiKS50b0xvd2VyQ2FzZSgpO2xldCBpPXImJkIubWVyZ2Uoci5jb21tb24sclt0Lm1ldGhvZF0pO3ImJkIuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSxFPT57ZGVsZXRlIHJbRV19KSx0LmhlYWRlcnM9bS5jb25jYXQoaSxyKTtsZXQgcz1bXSxhPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbihjKXt0eXBlb2YgYy5ydW5XaGVuPT0iZnVuY3Rpb24iJiZjLnJ1bldoZW4odCk9PT0hMXx8KGE9YSYmYy5zeW5jaHJvbm91cyxzLnVuc2hpZnQoYy5mdWxmaWxsZWQsYy5yZWplY3RlZCkpfSk7bGV0IG49W107dGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihjKXtuLnB1c2goYy5mdWxmaWxsZWQsYy5yZWplY3RlZCl9KTtsZXQgQyxvPTAsZjtpZighYSl7bGV0IEU9W0RBLmJpbmQodGhpcyksdm9pZCAwXTtmb3IoRS51bnNoaWZ0LmFwcGx5KEUscyksRS5wdXNoLmFwcGx5KEUsbiksZj1FLmxlbmd0aCxDPVByb21pc2UucmVzb2x2ZSh0KTtvPGY7KUM9Qy50aGVuKEVbbysrXSxFW28rK10pO3JldHVybiBDfWY9cy5sZW5ndGg7bGV0IFE9dDtmb3Iobz0wO288Zjspe2xldCBFPXNbbysrXSxjPXNbbysrXTt0cnl7UT1FKFEpfWNhdGNoKHUpe2MuY2FsbCh0aGlzLHUpO2JyZWFrfX10cnl7Qz1EQS5jYWxsKHRoaXMsUSl9Y2F0Y2goRSl7cmV0dXJuIFByb21pc2UucmVqZWN0KEUpfWZvcihvPTAsZj1uLmxlbmd0aDtvPGY7KUM9Qy50aGVuKG5bbysrXSxuW28rK10pO3JldHVybiBDfWdldFVyaShJKXtJPUcodGhpcy5kZWZhdWx0cyxJKTtsZXQgdD0kKEkuYmFzZVVSTCxJLnVybCk7cmV0dXJuIFgodCxJLnBhcmFtcyxJLnBhcmFtc1NlcmlhbGl6ZXIpfX07Qi5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSxmdW5jdGlvbihJKXt4LnByb3RvdHlwZVtJXT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnJlcXVlc3QoRyhlfHx7fSx7bWV0aG9kOkksdXJsOnQsZGF0YTooZXx8e30pLmRhdGF9KSl9fSk7Qi5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sZnVuY3Rpb24oSSl7ZnVuY3Rpb24gdChlKXtyZXR1cm4gZnVuY3Rpb24ocixpLHMpe3JldHVybiB0aGlzLnJlcXVlc3QoRyhzfHx7fSx7bWV0aG9kOkksaGVhZGVyczplP3siQ29udGVudC1UeXBlIjoibXVsdGlwYXJ0L2Zvcm0tZGF0YSJ9Ont9LHVybDpyLGRhdGE6aX0pKX19eC5wcm90b3R5cGVbSV09dCgpLHgucHJvdG90eXBlW0krIkZvcm0iXT10KCEwKX0pO3ZhciBBQT14O3ZhciBQQT1jbGFzcyBBe2NvbnN0cnVjdG9yKEkpe2lmKHR5cGVvZiBJIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoImV4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4iKTtsZXQgdDt0aGlzLnByb21pc2U9bmV3IFByb21pc2UoZnVuY3Rpb24ocil7dD1yfSk7bGV0IGU9dGhpczt0aGlzLnByb21pc2UudGhlbihnPT57aWYoIWUuX2xpc3RlbmVycylyZXR1cm47bGV0IHI9ZS5fbGlzdGVuZXJzLmxlbmd0aDtmb3IoO3ItLSA+MDspZS5fbGlzdGVuZXJzW3JdKGcpO2UuX2xpc3RlbmVycz1udWxsfSksdGhpcy5wcm9taXNlLnRoZW49Zz0+e2xldCByLGk9bmV3IFByb21pc2Uocz0+e2Uuc3Vic2NyaWJlKHMpLHI9c30pLnRoZW4oZyk7cmV0dXJuIGkuY2FuY2VsPWZ1bmN0aW9uKCl7ZS51bnN1YnNjcmliZShyKX0saX0sSShmdW5jdGlvbihyLGkscyl7ZS5yZWFzb258fChlLnJlYXNvbj1uZXcgSihyLGkscyksdChlLnJlYXNvbikpfSl9dGhyb3dJZlJlcXVlc3RlZCgpe2lmKHRoaXMucmVhc29uKXRocm93IHRoaXMucmVhc29ufXN1YnNjcmliZShJKXtpZih0aGlzLnJlYXNvbil7SSh0aGlzLnJlYXNvbik7cmV0dXJufXRoaXMuX2xpc3RlbmVycz90aGlzLl9saXN0ZW5lcnMucHVzaChJKTp0aGlzLl9saXN0ZW5lcnM9W0ldfXVuc3Vic2NyaWJlKEkpe2lmKCF0aGlzLl9saXN0ZW5lcnMpcmV0dXJuO2xldCB0PXRoaXMuX2xpc3RlbmVycy5pbmRleE9mKEkpO3QhPT0tMSYmdGhpcy5fbGlzdGVuZXJzLnNwbGljZSh0LDEpfXN0YXRpYyBzb3VyY2UoKXtsZXQgSTtyZXR1cm57dG9rZW46bmV3IEEoZnVuY3Rpb24oZyl7ST1nfSksY2FuY2VsOkl9fX0sYkk9UEE7ZnVuY3Rpb24gakEoQSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBBLmFwcGx5KG51bGwsdCl9fWZ1bmN0aW9uIFdBKEEpe3JldHVybiBCLmlzT2JqZWN0KEEpJiZBLmlzQXhpb3NFcnJvcj09PSEwfXZhciBaQT17Q29udGludWU6MTAwLFN3aXRjaGluZ1Byb3RvY29sczoxMDEsUHJvY2Vzc2luZzoxMDIsRWFybHlIaW50czoxMDMsT2s6MjAwLENyZWF0ZWQ6MjAxLEFjY2VwdGVkOjIwMixOb25BdXRob3JpdGF0aXZlSW5mb3JtYXRpb246MjAzLE5vQ29udGVudDoyMDQsUmVzZXRDb250ZW50OjIwNSxQYXJ0aWFsQ29udGVudDoyMDYsTXVsdGlTdGF0dXM6MjA3LEFscmVhZHlSZXBvcnRlZDoyMDgsSW1Vc2VkOjIyNixNdWx0aXBsZUNob2ljZXM6MzAwLE1vdmVkUGVybWFuZW50bHk6MzAxLEZvdW5kOjMwMixTZWVPdGhlcjozMDMsTm90TW9kaWZpZWQ6MzA0LFVzZVByb3h5OjMwNSxVbnVzZWQ6MzA2LFRlbXBvcmFyeVJlZGlyZWN0OjMwNyxQZXJtYW5lbnRSZWRpcmVjdDozMDgsQmFkUmVxdWVzdDo0MDAsVW5hdXRob3JpemVkOjQwMSxQYXltZW50UmVxdWlyZWQ6NDAyLEZvcmJpZGRlbjo0MDMsTm90Rm91bmQ6NDA0LE1ldGhvZE5vdEFsbG93ZWQ6NDA1LE5vdEFjY2VwdGFibGU6NDA2LFByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZDo0MDcsUmVxdWVzdFRpbWVvdXQ6NDA4LENvbmZsaWN0OjQwOSxHb25lOjQxMCxMZW5ndGhSZXF1aXJlZDo0MTEsUHJlY29uZGl0aW9uRmFpbGVkOjQxMixQYXlsb2FkVG9vTGFyZ2U6NDEzLFVyaVRvb0xvbmc6NDE0LFVuc3VwcG9ydGVkTWVkaWFUeXBlOjQxNSxSYW5nZU5vdFNhdGlzZmlhYmxlOjQxNixFeHBlY3RhdGlvbkZhaWxlZDo0MTcsSW1BVGVhcG90OjQxOCxNaXNkaXJlY3RlZFJlcXVlc3Q6NDIxLFVucHJvY2Vzc2FibGVFbnRpdHk6NDIyLExvY2tlZDo0MjMsRmFpbGVkRGVwZW5kZW5jeTo0MjQsVG9vRWFybHk6NDI1LFVwZ3JhZGVSZXF1aXJlZDo0MjYsUHJlY29uZGl0aW9uUmVxdWlyZWQ6NDI4LFRvb01hbnlSZXF1ZXN0czo0MjksUmVxdWVzdEhlYWRlckZpZWxkc1Rvb0xhcmdlOjQzMSxVbmF2YWlsYWJsZUZvckxlZ2FsUmVhc29uczo0NTEsSW50ZXJuYWxTZXJ2ZXJFcnJvcjo1MDAsTm90SW1wbGVtZW50ZWQ6NTAxLEJhZEdhdGV3YXk6NTAyLFNlcnZpY2VVbmF2YWlsYWJsZTo1MDMsR2F0ZXdheVRpbWVvdXQ6NTA0LEh0dHBWZXJzaW9uTm90U3VwcG9ydGVkOjUwNSxWYXJpYW50QWxzb05lZ290aWF0ZXM6NTA2LEluc3VmZmljaWVudFN0b3JhZ2U6NTA3LExvb3BEZXRlY3RlZDo1MDgsTm90RXh0ZW5kZWQ6NTEwLE5ldHdvcmtBdXRoZW50aWNhdGlvblJlcXVpcmVkOjUxMX07T2JqZWN0LmVudHJpZXMoWkEpLmZvckVhY2goKFtBLEldKT0+e1pBW0ldPUF9KTt2YXIgTUk9WkE7ZnVuY3Rpb24gcUkoQSl7bGV0IEk9bmV3IEFBKEEpLHQ9VyhBQS5wcm90b3R5cGUucmVxdWVzdCxJKTtyZXR1cm4gQi5leHRlbmQodCxBQS5wcm90b3R5cGUsSSx7YWxsT3duS2V5czohMH0pLEIuZXh0ZW5kKHQsSSxudWxsLHthbGxPd25LZXlzOiEwfSksdC5jcmVhdGU9ZnVuY3Rpb24oZyl7cmV0dXJuIHFJKEcoQSxnKSl9LHR9dmFyIGg9cUkoTyk7aC5BeGlvcz1BQTtoLkNhbmNlbGVkRXJyb3I9SjtoLkNhbmNlbFRva2VuPWJJO2guaXNDYW5jZWw9djtoLlZFUlNJT049dUE7aC50b0Zvcm1EYXRhPUw7aC5BeGlvc0Vycm9yPWw7aC5DYW5jZWw9aC5DYW5jZWxlZEVycm9yO2guYWxsPWZ1bmN0aW9uKEkpe3JldHVybiBQcm9taXNlLmFsbChJKX07aC5zcHJlYWQ9akE7aC5pc0F4aW9zRXJyb3I9V0E7aC5tZXJnZUNvbmZpZz1HO2guQXhpb3NIZWFkZXJzPW07aC5mb3JtVG9KU09OPUE9PmNBKEIuaXNIVE1MRm9ybShBKT9uZXcgRm9ybURhdGEoQSk6QSk7aC5nZXRBZGFwdGVyPWxBLmdldEFkYXB0ZXI7aC5IdHRwU3RhdHVzQ29kZT1NSTtoLmRlZmF1bHQ9aDt2YXIgZEE9aDt2YXJ7QXhpb3M6b2ksQXhpb3NFcnJvcjpCaSxDYW5jZWxlZEVycm9yOkNpLGlzQ2FuY2VsOnNpLENhbmNlbFRva2VuOlFpLFZFUlNJT046bmksYWxsOkVpLENhbmNlbDphaSxpc0F4aW9zRXJyb3I6Y2ksc3ByZWFkOmZpLHRvRm9ybURhdGE6bGksQXhpb3NIZWFkZXJzOkRpLEh0dHBTdGF0dXNDb2RlOnVpLGZvcm1Ub0pTT046aGksZ2V0QWRhcHRlcjpkaSxtZXJnZUNvbmZpZzp5aX09ZEE7dmFyIElBLGssWEEsVkE9e2Vudjp7ZW1zY3JpcHRlbl9ub3RpZnlfbWVtb3J5X2dyb3d0aDpmdW5jdGlvbihBKXtYQT1uZXcgVWludDhBcnJheShrLmV4cG9ydHMubWVtb3J5LmJ1ZmZlcil9fX0seUE9Y2xhc3N7aW5pdCgpe3JldHVybiBJQXx8KHR5cGVvZiBmZXRjaDwidSI/SUE9ZmV0Y2goImRhdGE6YXBwbGljYXRpb24vd2FzbTtiYXNlNjQsIitLSSkudGhlbihJPT5JLmFycmF5QnVmZmVyKCkpLnRoZW4oST0+V2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoSSxWQSkpLnRoZW4odGhpcy5faW5pdCk6SUE9V2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoQnVmZmVyLmZyb20oS0ksImJhc2U2NCIpLFZBKS50aGVuKHRoaXMuX2luaXQpLElBKX1faW5pdChJKXtrPUkuaW5zdGFuY2UsVkEuZW52LmVtc2NyaXB0ZW5fbm90aWZ5X21lbW9yeV9ncm93dGgoMCl9ZGVjb2RlKEksdD0wKXtpZighayl0aHJvdyBuZXcgRXJyb3IoIlpTVEREZWNvZGVyOiBBd2FpdCAuaW5pdCgpIGJlZm9yZSBkZWNvZGluZy4iKTtsZXQgZT1JLmJ5dGVMZW5ndGgsZz1rLmV4cG9ydHMubWFsbG9jKGUpO1hBLnNldChJLGcpLHQ9dHx8TnVtYmVyKGsuZXhwb3J0cy5aU1REX2ZpbmREZWNvbXByZXNzZWRTaXplKGcsZSkpO2xldCByPWsuZXhwb3J0cy5tYWxsb2ModCksaT1rLmV4cG9ydHMuWlNURF9kZWNvbXByZXNzKHIsdCxnLGUpLHM9WEEuc2xpY2UocixyK2kpO3JldHVybiBrLmV4cG9ydHMuZnJlZShnKSxrLmV4cG9ydHMuZnJlZShyKSxzfX0sS0k9IkFHRnpiUUVBQUFBQmJnNWdBMzkvZndGL1lBRi9BWDlnQW45L0FHQUJmd0JnQlg5L2YzOS9BWDlnQTM5L2Z3QmdCSDkvZjM4QmYyQUFBWDlnQW45L0FYOWdCMzkvZjM5L2YzOEJmMkFDZjM4QmZtQUlmMzkvZjM5L2YzOEJmMkFGZjM5L2YzOEFZQTUvZjM5L2YzOS9mMzkvZjM5L2Z3Ri9BaWNCQTJWdWRoOWxiWE5qY21sd2RHVnVYMjV2ZEdsbWVWOXRaVzF2Y25sZlozSnZkM1JvQUFNREl5SUhBQUFCQVFNSEF3RUFDUVFBQlFFSUNBRUZCZ1FFQkFNR0FBQUtBQVVMREEwR0JBVUJjQUVCQVFVSEFRR0FBb0NBQWdZSUFYOEJRWUNqQkFzSHJnRUxCbTFsYlc5eWVRSUFCbTFoYkd4dll3QUZCR1p5WldVQUJneGFVMVJFWDJselJYSnliM0lBRWhsYVUxUkVYMlpwYm1SRVpXTnZiWEJ5WlhOelpXUlRhWHBsQUJ3UFdsTlVSRjlrWldOdmJYQnlaWE56QUNJWlgxOXBibVJwY21WamRGOW1kVzVqZEdsdmJsOTBZV0pzWlFFQUVGOWZaWEp5Ym05ZmJHOWpZWFJwYjI0QUFRbHpkR0ZqYTFOaGRtVUFCd3h6ZEdGamExSmxjM1J2Y21VQUNBcHpkR0ZqYTBGc2JHOWpBQWtLaS9JQklnVUFRWVFmQ3pNQkFYOGdBZ1JBSUFBaEF3TkFJQU1nQVMwQUFEb0FBQ0FEUVFGcUlRTWdBVUVCYWlFQklBSkJBV3NpQWcwQUN3c2dBQXNwQVFGL0lBSUVRQ0FBSVFNRFFDQURJQUU2QUFBZ0EwRUJhaUVESUFKQkFXc2lBZzBBQ3dzZ0FBdHNBUUovUVlBZktBSUFJZ0VnQUVFSGFrRjRjU0lDYWlFQUFrQWdBa0VBSUFBZ0FVMGJEUUFnQUQ4QVFSQjBTd1JBSUFBL0FFRVFkR3RCLy84RGFrRVFka0FBUVg5R0JIOUJBQVZCQUJBQVFRRUxSUTBCQzBHQUh5QUFOZ0lBSUFFUEMwR0VIMEV3TmdJQVFYOEx1U2NCQzM4akFFRVFheUlLSkFBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBQkI5QUZOQkVCQmlCOG9BZ0FpQmtFUUlBQkJDMnBCZUhFZ0FFRUxTUnNpQlVFRGRpSUFkaUlCUVFOeEJFQUNRQ0FCUVg5elFRRnhJQUJxSWdKQkEzUWlBVUd3SDJvaUFDQUJRYmdmYWlnQ0FDSUJLQUlJSWdSR0JFQkJpQjhnQmtGK0lBSjNjVFlDQUF3QkN5QUVJQUEyQWd3Z0FDQUVOZ0lJQ3lBQlFRaHFJUUFnQVNBQ1FRTjBJZ0pCQTNJMkFnUWdBU0FDYWlJQklBRW9BZ1JCQVhJMkFnUU1Ed3NnQlVHUUh5Z0NBQ0lIVFEwQklBRUVRQUpBUVFJZ0FIUWlBa0VBSUFKcmNpQUJJQUIwY1dnaUFVRURkQ0lBUWJBZmFpSUNJQUJCdUI5cUtBSUFJZ0FvQWdnaUJFWUVRRUdJSHlBR1FYNGdBWGR4SWdZMkFnQU1BUXNnQkNBQ05nSU1JQUlnQkRZQ0NBc2dBQ0FGUVFOeU5nSUVJQUFnQldvaUNDQUJRUU4wSWdFZ0JXc2lCRUVCY2pZQ0JDQUFJQUZxSUFRMkFnQWdCd1JBSUFkQmVIRkJzQjlxSVFGQm5COG9BZ0FoQWdKL0lBWkJBU0FIUVFOMmRDSURjVVVFUUVHSUh5QURJQVp5TmdJQUlBRU1BUXNnQVNnQ0NBc2hBeUFCSUFJMkFnZ2dBeUFDTmdJTUlBSWdBVFlDRENBQ0lBTTJBZ2dMSUFCQkNHb2hBRUdjSHlBSU5nSUFRWkFmSUFRMkFnQU1Ed3RCakI4b0FnQWlDMFVOQVNBTGFFRUNkRUc0SVdvb0FnQWlBaWdDQkVGNGNTQUZheUVESUFJaEFRTkFBa0FnQVNnQ0VDSUFSUVJBSUFFb0FoUWlBRVVOQVFzZ0FDZ0NCRUY0Y1NBRmF5SUJJQU1nQVNBRFNTSUJHeUVESUFBZ0FpQUJHeUVDSUFBaEFRd0JDd3NnQWlnQ0dDRUpJQUlnQWlnQ0RDSUVSd1JBUVpnZktBSUFHaUFDS0FJSUlnQWdCRFlDRENBRUlBQTJBZ2dNRGdzZ0FrRVVhaUlCS0FJQUlnQkZCRUFnQWlnQ0VDSUFSUTBESUFKQkVHb2hBUXNEUUNBQklRZ2dBQ0lFUVJScUlnRW9BZ0FpQUEwQUlBUkJFR29oQVNBRUtBSVFJZ0FOQUFzZ0NFRUFOZ0lBREEwTFFYOGhCU0FBUWI5L1N3MEFJQUJCQzJvaUFFRjRjU0VGUVl3ZktBSUFJZ2hGRFFCQkFDQUZheUVEQWtBQ1FBSkFBbjlCQUNBRlFZQUNTUTBBR2tFZklBVkIvLy8vQjBzTkFCb2dCVUVtSUFCQkNIWm5JZ0JyZGtFQmNTQUFRUUYwYTBFK2Fnc2lCMEVDZEVHNElXb29BZ0FpQVVVRVFFRUFJUUFNQVF0QkFDRUFJQVZCR1NBSFFRRjJhMEVBSUFkQkgwY2JkQ0VDQTBBQ1FDQUJLQUlFUVhoeElBVnJJZ1lnQTA4TkFDQUJJUVFnQmlJRERRQkJBQ0VESUFFaEFBd0RDeUFBSUFFb0FoUWlCaUFHSUFFZ0FrRWRka0VFY1dvb0FoQWlBVVliSUFBZ0Joc2hBQ0FDUVFGMElRSWdBUTBBQ3dzZ0FDQUVja1VFUUVFQUlRUkJBaUFIZENJQVFRQWdBR3R5SUFoeElnQkZEUU1nQUdoQkFuUkJ1Q0ZxS0FJQUlRQUxJQUJGRFFFTEEwQWdBQ2dDQkVGNGNTQUZheUlDSUFOSklRRWdBaUFESUFFYklRTWdBQ0FFSUFFYklRUWdBQ2dDRUNJQkJIOGdBUVVnQUNnQ0ZBc2lBQTBBQ3dzZ0JFVU5BQ0FEUVpBZktBSUFJQVZyVHcwQUlBUW9BaGdoQnlBRUlBUW9BZ3dpQWtjRVFFR1lIeWdDQUJvZ0JDZ0NDQ0lBSUFJMkFnd2dBaUFBTmdJSURBd0xJQVJCRkdvaUFTZ0NBQ0lBUlFSQUlBUW9BaEFpQUVVTkF5QUVRUkJxSVFFTEEwQWdBU0VHSUFBaUFrRVVhaUlCS0FJQUlnQU5BQ0FDUVJCcUlRRWdBaWdDRUNJQURRQUxJQVpCQURZQ0FBd0xDeUFGUVpBZktBSUFJZ1JOQkVCQm5COG9BZ0FoQUFKQUlBUWdCV3NpQVVFUVR3UkFJQUFnQldvaUFpQUJRUUZ5TmdJRUlBQWdCR29nQVRZQ0FDQUFJQVZCQTNJMkFnUU1BUXNnQUNBRVFRTnlOZ0lFSUFBZ0JHb2lBU0FCS0FJRVFRRnlOZ0lFUVFBaEFrRUFJUUVMUVpBZklBRTJBZ0JCbkI4Z0FqWUNBQ0FBUVFocUlRQU1EUXNnQlVHVUh5Z0NBQ0lDU1FSQVFaUWZJQUlnQldzaUFUWUNBRUdnSDBHZ0h5Z0NBQ0lBSUFWcUlnSTJBZ0FnQWlBQlFRRnlOZ0lFSUFBZ0JVRURjallDQkNBQVFRaHFJUUFNRFF0QkFDRUFJQVZCTDJvaUF3Si9RZUFpS0FJQUJFQkI2Q0lvQWdBTUFRdEI3Q0pDZnpjQ0FFSGtJa0tBb0lDQWdJQUVOd0lBUWVBaUlBcEJER3BCY0hGQjJLclZxZ1Z6TmdJQVFmUWlRUUEyQWdCQnhDSkJBRFlDQUVHQUlBc2lBV29pQmtFQUlBRnJJZ2h4SWdFZ0JVME5ERUhBSWlnQ0FDSUVCRUJCdUNJb0FnQWlCeUFCYWlJSklBZE5JQVFnQ1VseURRMExBa0JCeENJdEFBQkJCSEZGQkVBQ1FBSkFBa0FDUUVHZ0h5Z0NBQ0lFQkVCQnlDSWhBQU5BSUFRZ0FDZ0NBQ0lIVHdSQUlBY2dBQ2dDQkdvZ0JFc05Bd3NnQUNnQ0NDSUFEUUFMQzBFQUVBUWlBa0YvUmcwRElBRWhCa0hrSWlnQ0FDSUFRUUZySWdRZ0FuRUVRQ0FCSUFKcklBSWdCR3BCQUNBQWEzRnFJUVlMSUFVZ0JrOE5BMEhBSWlnQ0FDSUFCRUJCdUNJb0FnQWlCQ0FHYWlJSUlBUk5JQUFnQ0VseURRUUxJQVlRQkNJQUlBSkhEUUVNQlFzZ0JpQUNheUFJY1NJR0VBUWlBaUFBS0FJQUlBQW9BZ1JxUmcwQklBSWhBQXNnQUVGL1JnMEJJQVZCTUdvZ0JrMEVRQ0FBSVFJTUJBdEI2Q0lvQWdBaUFpQURJQVpyYWtFQUlBSnJjU0lDRUFSQmYwWU5BU0FDSUFacUlRWWdBQ0VDREFNTElBSkJmMGNOQWd0QnhDSkJ4Q0lvQWdCQkJISTJBZ0FMSUFFUUJDSUNRWDlHUVFBUUJDSUFRWDlHY2lBQUlBSk5jZzBGSUFBZ0Ftc2lCaUFGUVNocVRRMEZDMEc0SWtHNElpZ0NBQ0FHYWlJQU5nSUFRYndpS0FJQUlBQkpCRUJCdkNJZ0FEWUNBQXNDUUVHZ0h5Z0NBQ0lEQkVCQnlDSWhBQU5BSUFJZ0FDZ0NBQ0lCSUFBb0FnUWlCR3BHRFFJZ0FDZ0NDQ0lBRFFBTERBUUxRWmdmS0FJQUlnQkJBQ0FBSUFKTkcwVUVRRUdZSHlBQ05nSUFDMEVBSVFCQnpDSWdCallDQUVISUlpQUNOZ0lBUWFnZlFYODJBZ0JCckI5QjRDSW9BZ0EyQWdCQjFDSkJBRFlDQUFOQUlBQkJBM1FpQVVHNEgyb2dBVUd3SDJvaUJEWUNBQ0FCUWJ3ZmFpQUVOZ0lBSUFCQkFXb2lBRUVnUncwQUMwR1VIeUFHUVNocklnQkJlQ0FDYTBFSGNTSUJheUlFTmdJQVFhQWZJQUVnQW1vaUFUWUNBQ0FCSUFSQkFYSTJBZ1FnQUNBQ2FrRW9OZ0lFUWFRZlFmQWlLQUlBTmdJQURBUUxJQUlnQTAwZ0FTQURTM0lOQWlBQUtBSU1RUWh4RFFJZ0FDQUVJQVpxTmdJRVFhQWZJQU5CZUNBRGEwRUhjU0lBYWlJQk5nSUFRWlFmUVpRZktBSUFJQVpxSWdJZ0FHc2lBRFlDQUNBQklBQkJBWEkyQWdRZ0FpQURha0VvTmdJRVFhUWZRZkFpS0FJQU5nSUFEQU1MUVFBaEJBd0tDMEVBSVFJTUNBdEJtQjhvQWdBZ0Frc0VRRUdZSHlBQ05nSUFDeUFDSUFacUlRRkJ5Q0loQUFKQUFrQUNRQU5BSUFFZ0FDZ0NBRWNFUUNBQUtBSUlJZ0FOQVF3Q0N3c2dBQzBBREVFSWNVVU5BUXRCeUNJaEFBTkFJQU1nQUNnQ0FDSUJUd1JBSUFFZ0FDZ0NCR29pQkNBRFN3MERDeUFBS0FJSUlRQU1BQXNBQ3lBQUlBSTJBZ0FnQUNBQUtBSUVJQVpxTmdJRUlBSkJlQ0FDYTBFSGNXb2lCeUFGUVFOeU5nSUVJQUZCZUNBQmEwRUhjV29pQmlBRklBZHFJZ1ZySVFBZ0F5QUdSZ1JBUWFBZklBVTJBZ0JCbEI5QmxCOG9BZ0FnQUdvaUFEWUNBQ0FGSUFCQkFYSTJBZ1FNQ0F0Qm5COG9BZ0FnQmtZRVFFR2NIeUFGTmdJQVFaQWZRWkFmS0FJQUlBQnFJZ0EyQWdBZ0JTQUFRUUZ5TmdJRUlBQWdCV29nQURZQ0FBd0lDeUFHS0FJRUlnTkJBM0ZCQVVjTkJpQURRWGh4SVFrZ0EwSC9BVTBFUUNBR0tBSU1JZ0VnQmlnQ0NDSUNSZ1JBUVlnZlFZZ2ZLQUlBUVg0Z0EwRURkbmR4TmdJQURBY0xJQUlnQVRZQ0RDQUJJQUkyQWdnTUJnc2dCaWdDR0NFSUlBWWdCaWdDRENJQ1J3UkFJQVlvQWdnaUFTQUNOZ0lNSUFJZ0FUWUNDQXdGQ3lBR1FSUnFJZ0VvQWdBaUEwVUVRQ0FHS0FJUUlnTkZEUVFnQmtFUWFpRUJDd05BSUFFaEJDQURJZ0pCRkdvaUFTZ0NBQ0lERFFBZ0FrRVFhaUVCSUFJb0FoQWlBdzBBQ3lBRVFRQTJBZ0FNQkF0QmxCOGdCa0VvYXlJQVFYZ2dBbXRCQjNFaUFXc2lDRFlDQUVHZ0h5QUJJQUpxSWdFMkFnQWdBU0FJUVFGeU5nSUVJQUFnQW1wQktEWUNCRUdrSDBId0lpZ0NBRFlDQUNBRElBUkJKeUFFYTBFSGNXcEJMMnNpQUNBQUlBTkJFR3BKR3lJQlFSczJBZ1FnQVVIUUlpa0NBRGNDRUNBQlFjZ2lLUUlBTndJSVFkQWlJQUZCQ0dvMkFnQkJ6Q0lnQmpZQ0FFSElJaUFDTmdJQVFkUWlRUUEyQWdBZ0FVRVlhaUVBQTBBZ0FFRUhOZ0lFSUFCQkNHb2dBRUVFYWlFQUlBUkpEUUFMSUFFZ0EwWU5BQ0FCSUFFb0FnUkJmbkUyQWdRZ0F5QUJJQU5ySWdKQkFYSTJBZ1FnQVNBQ05nSUFJQUpCL3dGTkJFQWdBa0Y0Y1VHd0gyb2hBQUovUVlnZktBSUFJZ0ZCQVNBQ1FRTjJkQ0lDY1VVRVFFR0lIeUFCSUFKeU5nSUFJQUFNQVFzZ0FDZ0NDQXNoQVNBQUlBTTJBZ2dnQVNBRE5nSU1JQU1nQURZQ0RDQURJQUUyQWdnTUFRdEJIeUVBSUFKQi8vLy9CMDBFUUNBQ1FTWWdBa0VJZG1jaUFHdDJRUUZ4SUFCQkFYUnJRVDVxSVFBTElBTWdBRFlDSENBRFFnQTNBaEFnQUVFQ2RFRzRJV29oQVFKQUFrQkJqQjhvQWdBaUJFRUJJQUIwSWdaeFJRUkFRWXdmSUFRZ0JuSTJBZ0FnQVNBRE5nSUFEQUVMSUFKQkdTQUFRUUYyYTBFQUlBQkJIMGNiZENFQUlBRW9BZ0FoQkFOQUlBUWlBU2dDQkVGNGNTQUNSZzBDSUFCQkhYWWhCQ0FBUVFGMElRQWdBU0FFUVFSeGFpSUdLQUlRSWdRTkFBc2dCaUFETmdJUUN5QURJQUUyQWhnZ0F5QUROZ0lNSUFNZ0F6WUNDQXdCQ3lBQktBSUlJZ0FnQXpZQ0RDQUJJQU0yQWdnZ0EwRUFOZ0lZSUFNZ0FUWUNEQ0FESUFBMkFnZ0xRWlFmS0FJQUlnQWdCVTBOQUVHVUh5QUFJQVZySWdFMkFnQkJvQjlCb0I4b0FnQWlBQ0FGYWlJQ05nSUFJQUlnQVVFQmNqWUNCQ0FBSUFWQkEzSTJBZ1FnQUVFSWFpRUFEQWdMUVlRZlFUQTJBZ0JCQUNFQURBY0xRUUFoQWdzZ0NFVU5BQUpBSUFZb0Fod2lBVUVDZEVHNElXb2lCQ2dDQUNBR1JnUkFJQVFnQWpZQ0FDQUNEUUZCakI5QmpCOG9BZ0JCZmlBQmQzRTJBZ0FNQWdzZ0NFRVFRUlFnQ0NnQ0VDQUdSaHRxSUFJMkFnQWdBa1VOQVFzZ0FpQUlOZ0lZSUFZb0FoQWlBUVJBSUFJZ0FUWUNFQ0FCSUFJMkFoZ0xJQVlvQWhRaUFVVU5BQ0FDSUFFMkFoUWdBU0FDTmdJWUN5QUFJQWxxSVFBZ0JpQUphaUlHS0FJRUlRTUxJQVlnQTBGK2NUWUNCQ0FGSUFCQkFYSTJBZ1FnQUNBRmFpQUFOZ0lBSUFCQi93Rk5CRUFnQUVGNGNVR3dIMm9oQVFKL1FZZ2ZLQUlBSWdKQkFTQUFRUU4yZENJQWNVVUVRRUdJSHlBQUlBSnlOZ0lBSUFFTUFRc2dBU2dDQ0FzaEFDQUJJQVUyQWdnZ0FDQUZOZ0lNSUFVZ0FUWUNEQ0FGSUFBMkFnZ01BUXRCSHlFRElBQkIvLy8vQjAwRVFDQUFRU1lnQUVFSWRtY2lBV3QyUVFGeElBRkJBWFJyUVQ1cUlRTUxJQVVnQXpZQ0hDQUZRZ0EzQWhBZ0EwRUNkRUc0SVdvaEFRSkFBa0JCakI4b0FnQWlBa0VCSUFOMElnUnhSUVJBUVl3ZklBSWdCSEkyQWdBZ0FTQUZOZ0lBREFFTElBQkJHU0FEUVFGMmEwRUFJQU5CSDBjYmRDRURJQUVvQWdBaEFnTkFJQUlpQVNnQ0JFRjRjU0FBUmcwQ0lBTkJIWFloQWlBRFFRRjBJUU1nQVNBQ1FRUnhhaUlFS0FJUUlnSU5BQXNnQkNBRk5nSVFDeUFGSUFFMkFoZ2dCU0FGTmdJTUlBVWdCVFlDQ0F3QkN5QUJLQUlJSWdBZ0JUWUNEQ0FCSUFVMkFnZ2dCVUVBTmdJWUlBVWdBVFlDRENBRklBQTJBZ2dMSUFkQkNHb2hBQXdDQ3dKQUlBZEZEUUFDUUNBRUtBSWNJZ0JCQW5SQnVDRnFJZ0VvQWdBZ0JFWUVRQ0FCSUFJMkFnQWdBZzBCUVl3ZklBaEJmaUFBZDNFaUNEWUNBQXdDQ3lBSFFSQkJGQ0FIS0FJUUlBUkdHMm9nQWpZQ0FDQUNSUTBCQ3lBQ0lBYzJBaGdnQkNnQ0VDSUFCRUFnQWlBQU5nSVFJQUFnQWpZQ0dBc2dCQ2dDRkNJQVJRMEFJQUlnQURZQ0ZDQUFJQUkyQWhnTEFrQWdBMEVQVFFSQUlBUWdBeUFGYWlJQVFRTnlOZ0lFSUFBZ0JHb2lBQ0FBS0FJRVFRRnlOZ0lFREFFTElBUWdCVUVEY2pZQ0JDQUVJQVZxSWdJZ0EwRUJjallDQkNBQ0lBTnFJQU0yQWdBZ0EwSC9BVTBFUUNBRFFYaHhRYkFmYWlFQUFuOUJpQjhvQWdBaUFVRUJJQU5CQTNaMElnTnhSUVJBUVlnZklBRWdBM0kyQWdBZ0FBd0JDeUFBS0FJSUN5RUJJQUFnQWpZQ0NDQUJJQUkyQWd3Z0FpQUFOZ0lNSUFJZ0FUWUNDQXdCQzBFZklRQWdBMEgvLy84SFRRUkFJQU5CSmlBRFFRaDJaeUlBYTNaQkFYRWdBRUVCZEd0QlBtb2hBQXNnQWlBQU5nSWNJQUpDQURjQ0VDQUFRUUowUWJnaGFpRUJBa0FDUUNBSVFRRWdBSFFpQm5GRkJFQkJqQjhnQmlBSWNqWUNBQ0FCSUFJMkFnQU1BUXNnQTBFWklBQkJBWFpyUVFBZ0FFRWZSeHQwSVFBZ0FTZ0NBQ0VGQTBBZ0JTSUJLQUlFUVhoeElBTkdEUUlnQUVFZGRpRUdJQUJCQVhRaEFDQUJJQVpCQkhGcUlnWW9BaEFpQlEwQUN5QUdJQUkyQWhBTElBSWdBVFlDR0NBQ0lBSTJBZ3dnQWlBQ05nSUlEQUVMSUFFb0FnZ2lBQ0FDTmdJTUlBRWdBallDQ0NBQ1FRQTJBaGdnQWlBQk5nSU1JQUlnQURZQ0NBc2dCRUVJYWlFQURBRUxBa0FnQ1VVTkFBSkFJQUlvQWh3aUFFRUNkRUc0SVdvaUFTZ0NBQ0FDUmdSQUlBRWdCRFlDQUNBRURRRkJqQjhnQzBGK0lBQjNjVFlDQUF3Q0N5QUpRUkJCRkNBSktBSVFJQUpHRzJvZ0JEWUNBQ0FFUlEwQkN5QUVJQWsyQWhnZ0FpZ0NFQ0lBQkVBZ0JDQUFOZ0lRSUFBZ0JEWUNHQXNnQWlnQ0ZDSUFSUTBBSUFRZ0FEWUNGQ0FBSUFRMkFoZ0xBa0FnQTBFUFRRUkFJQUlnQXlBRmFpSUFRUU55TmdJRUlBQWdBbW9pQUNBQUtBSUVRUUZ5TmdJRURBRUxJQUlnQlVFRGNqWUNCQ0FDSUFWcUlnUWdBMEVCY2pZQ0JDQURJQVJxSUFNMkFnQWdCd1JBSUFkQmVIRkJzQjlxSVFCQm5COG9BZ0FoQVFKL1FRRWdCMEVEZG5RaUJTQUdjVVVFUUVHSUh5QUZJQVp5TmdJQUlBQU1BUXNnQUNnQ0NBc2hCaUFBSUFFMkFnZ2dCaUFCTmdJTUlBRWdBRFlDRENBQklBWTJBZ2dMUVp3ZklBUTJBZ0JCa0I4Z0F6WUNBQXNnQWtFSWFpRUFDeUFLUVJCcUpBQWdBQXZTQ3dFSGZ3SkFJQUJGRFFBZ0FFRUlheUlDSUFCQkJHc29BZ0FpQVVGNGNTSUFhaUVGQWtBZ0FVRUJjUTBBSUFGQkEzRkZEUUVnQWlBQ0tBSUFJZ0ZySWdKQm1COG9BZ0JKRFFFZ0FDQUJhaUVBQWtBQ1FFR2NIeWdDQUNBQ1J3UkFJQUZCL3dGTkJFQWdBVUVEZGlFRUlBSW9BZ3dpQVNBQ0tBSUlJZ05HQkVCQmlCOUJpQjhvQWdCQmZpQUVkM0UyQWdBTUJRc2dBeUFCTmdJTUlBRWdBellDQ0F3RUN5QUNLQUlZSVFZZ0FpQUNLQUlNSWdGSEJFQWdBaWdDQ0NJRElBRTJBZ3dnQVNBRE5nSUlEQU1MSUFKQkZHb2lCQ2dDQUNJRFJRUkFJQUlvQWhBaUEwVU5BaUFDUVJCcUlRUUxBMEFnQkNFSElBTWlBVUVVYWlJRUtBSUFJZ01OQUNBQlFSQnFJUVFnQVNnQ0VDSUREUUFMSUFkQkFEWUNBQXdDQ3lBRktBSUVJZ0ZCQTNGQkEwY05Ba0dRSHlBQU5nSUFJQVVnQVVGK2NUWUNCQ0FDSUFCQkFYSTJBZ1FnQlNBQU5nSUFEd3RCQUNFQkN5QUdSUTBBQWtBZ0FpZ0NIQ0lEUVFKMFFiZ2hhaUlFS0FJQUlBSkdCRUFnQkNBQk5nSUFJQUVOQVVHTUgwR01IeWdDQUVGK0lBTjNjVFlDQUF3Q0N5QUdRUkJCRkNBR0tBSVFJQUpHRzJvZ0FUWUNBQ0FCUlEwQkN5QUJJQVkyQWhnZ0FpZ0NFQ0lEQkVBZ0FTQUROZ0lRSUFNZ0FUWUNHQXNnQWlnQ0ZDSURSUTBBSUFFZ0F6WUNGQ0FESUFFMkFoZ0xJQUlnQlU4TkFDQUZLQUlFSWdGQkFYRkZEUUFDUUFKQUFrQUNRQ0FCUVFKeFJRUkFRYUFmS0FJQUlBVkdCRUJCb0I4Z0FqWUNBRUdVSDBHVUh5Z0NBQ0FBYWlJQU5nSUFJQUlnQUVFQmNqWUNCQ0FDUVp3ZktBSUFSdzBHUVpBZlFRQTJBZ0JCbkI5QkFEWUNBQThMUVp3ZktBSUFJQVZHQkVCQm5COGdBallDQUVHUUgwR1FIeWdDQUNBQWFpSUFOZ0lBSUFJZ0FFRUJjallDQkNBQUlBSnFJQUEyQWdBUEN5QUJRWGh4SUFCcUlRQWdBVUgvQVUwRVFDQUJRUU4ySVFRZ0JTZ0NEQ0lCSUFVb0FnZ2lBMFlFUUVHSUgwR0lIeWdDQUVGK0lBUjNjVFlDQUF3RkN5QURJQUUyQWd3Z0FTQUROZ0lJREFRTElBVW9BaGdoQmlBRklBVW9BZ3dpQVVjRVFFR1lIeWdDQUJvZ0JTZ0NDQ0lESUFFMkFnd2dBU0FETmdJSURBTUxJQVZCRkdvaUJDZ0NBQ0lEUlFSQUlBVW9BaEFpQTBVTkFpQUZRUkJxSVFRTEEwQWdCQ0VISUFNaUFVRVVhaUlFS0FJQUlnTU5BQ0FCUVJCcUlRUWdBU2dDRUNJRERRQUxJQWRCQURZQ0FBd0NDeUFGSUFGQmZuRTJBZ1FnQWlBQVFRRnlOZ0lFSUFBZ0Ftb2dBRFlDQUF3REMwRUFJUUVMSUFaRkRRQUNRQ0FGS0FJY0lnTkJBblJCdUNGcUlnUW9BZ0FnQlVZRVFDQUVJQUUyQWdBZ0FRMEJRWXdmUVl3ZktBSUFRWDRnQTNkeE5nSUFEQUlMSUFaQkVFRVVJQVlvQWhBZ0JVWWJhaUFCTmdJQUlBRkZEUUVMSUFFZ0JqWUNHQ0FGS0FJUUlnTUVRQ0FCSUFNMkFoQWdBeUFCTmdJWUN5QUZLQUlVSWdORkRRQWdBU0FETmdJVUlBTWdBVFlDR0FzZ0FpQUFRUUZ5TmdJRUlBQWdBbW9nQURZQ0FDQUNRWndmS0FJQVJ3MEFRWkFmSUFBMkFnQVBDeUFBUWY4QlRRUkFJQUJCZUhGQnNCOXFJUUVDZjBHSUh5Z0NBQ0lEUVFFZ0FFRURkblFpQUhGRkJFQkJpQjhnQUNBRGNqWUNBQ0FCREFFTElBRW9BZ2dMSVFBZ0FTQUNOZ0lJSUFBZ0FqWUNEQ0FDSUFFMkFnd2dBaUFBTmdJSUR3dEJIeUVESUFCQi8vLy9CMDBFUUNBQVFTWWdBRUVJZG1jaUFXdDJRUUZ4SUFGQkFYUnJRVDVxSVFNTElBSWdBellDSENBQ1FnQTNBaEFnQTBFQ2RFRzRJV29oQVFKQUFrQUNRRUdNSHlnQ0FDSUVRUUVnQTNRaUIzRkZCRUJCakI4Z0JDQUhjallDQUNBQklBSTJBZ0FnQWlBQk5nSVlEQUVMSUFCQkdTQURRUUYyYTBFQUlBTkJIMGNiZENFRElBRW9BZ0FoQVFOQUlBRWlCQ2dDQkVGNGNTQUFSZzBDSUFOQkhYWWhBU0FEUVFGMElRTWdCQ0FCUVFSeGFpSUhRUkJxS0FJQUlnRU5BQXNnQnlBQ05nSVFJQUlnQkRZQ0dBc2dBaUFDTmdJTUlBSWdBallDQ0F3QkN5QUVLQUlJSWdBZ0FqWUNEQ0FFSUFJMkFnZ2dBa0VBTmdJWUlBSWdCRFlDRENBQ0lBQTJBZ2dMUWFnZlFhZ2ZLQUlBUVFGcklnQkJmeUFBR3pZQ0FBc0xCQUFqQUFzR0FDQUFKQUFMRUFBakFDQUFhMEZ3Y1NJQUpBQWdBQXRLQVFGL0lBQWdBVWtFUUNBQUlBRWdBaEFDRHdzZ0FnUkFJQUFnQW1vaEF5QUJJQUpxSVFFRFFDQURRUUZySWdNZ0FVRUJheUlCTFFBQU9nQUFJQUpCQVdzaUFnMEFDd3NnQUF2OURnSVJmd0YrSXdCQk1Hc2lCeVFBUWJoL0lRZ0NRQ0FGUlEwQUlBUXNBQUFpQ1VIL0FYRWhDd0pBSUFsQkFFZ0VRQ0FMUWY0QWEwRUJkaUlHSUFWUERRSkJiQ0VJSUF0Qi93QnJJZ3RCL3dGTERRSWdCRUVCYWlFSVFRQWhCUU5BSUFVZ0MwOEVRQ0FMSVFnZ0JpRUxEQU1GSUFBZ0JXb2dDQ0FGUVFGMmFpSUVMUUFBUVFSMk9nQUFJQUFnQlVFQmNtb2dCQzBBQUVFUGNUb0FBQ0FGUVFKcUlRVU1BUXNBQ3dBTElBVWdDMDBOQVNBSFFmOEJOZ0lFSUFZZ0IwRUVhaUFIUVFocUlBUkJBV29pRGlBTEVBd2lCRUdJZjBzRVFDQUVJUWdNQWd0QlZDRUlJQWNvQWdnaUVFRUdTdzBCSUFjb0FnUWlFVUVCZENJSlFRSnFyVUlCSUJDdGhpSVlRUUVnRUhRaURVRUJhaUlGclVJQ2hueDhRZ3Q4UXZ6Ly8vLy8vLy8vL3dDRFF1UUNWZzBCUVZJaENDQVJRZjhCU3cwQklBMUJmM05CQW5SQjVBSnFyU0FSUVFGcUloVkJBWFN0SUJoOFFnaDhWQTBCSUFzZ0JHc2hGaUFFSUE1cUlSY2dCa0dBQkdvaUVpQUZRUUowYWlJUklBbHFRUUpxSVE0Z0JrR0VCR29oRTBHQWdBSWdFSFJCRUhZaENVRUFJUVZCQVNFUElBMUJBV3NpRkNFS0EwQWdCU0FWUmtVRVFBSkFJQVlnQlVFQmRDSUlhaThCQUNJRVFmLy9BMFlFUUNBVElBcEJBblJxSUFVNkFBSWdDa0VCYXlFS1FRRWhCQXdCQ3lBUFFRQWdDU0FFd1VvYklROExJQWdnRVdvZ0JEc0JBQ0FGUVFGcUlRVU1BUXNMSUFZZ0R6c0JnZ1FnQmlBUU93R0FCQUpBSUFvZ0ZFWUVRQ0FOUVFOMklRaENBQ0VZUVFBaER3TkFJQXdnRlVZRVFDQUlJQTFCQVhacVFRTnFJZ2xCQVhRaENFRUFJUVJCQUNFS0EwQkJBQ0VGSUFvZ0RVOE5CQU5BSUFWQkFrWkZCRUFnRXlBRklBbHNJQVJxSUJSeFFRSjBhaUFPSUFVZ0NtcHFMUUFBT2dBQ0lBVkJBV29oQlF3QkN3c2dDa0VDYWlFS0lBUWdDR29nRkhFaEJBd0FDd0FGSUFZZ0RFRUJkR291QVFBaENTQU9JQTlxSWdRZ0dEY0FBRUVJSVFVRFFDQUZJQWxPUlFSQUlBUWdCV29nR0RjQUFDQUZRUWhxSVFVTUFRc0xJQmhDZ1lLRWlKQ2d3SUFCZkNFWUlBeEJBV29oRENBSklBOXFJUThNQVFzQUN3QUxJQTFCQTNZZ0RVRUJkbXBCQTJvaENFRUFJUVVEUUNBTUlCVkdSUVJBUVFBaENTQUdJQXhCQVhScUxnRUFJZ1JCQUNBRVFRQktHeUVFQTBBZ0JDQUpSa1VFUUNBVElBVkJBblJxSUF3NkFBSURRQ0FGSUFocUlCUnhJZ1VnQ2tzTkFBc2dDVUVCYWlFSkRBRUxDeUFNUVFGcUlRd01BUXNMUVg4aENDQUZEUUlMSUJCQkFXb2hDRUVBSVFVRFFDQUZJQTFHUlFSQUlCRWdFeUFGUVFKMGFpSU9MUUFDUVFGMGFpSUVJQVF2QVFBaUNVRUJhanNCQUNBT0lBZ2dDV2RCWUhOcUlnUTZBQU1nRGlBSklBUjBJQTFyT3dFQUlBVkJBV29oQlF3QkN3c0NRQUpBSUFZdkFZSUVCRUFnQjBFY2FpSUVJQmNnRmhBTklnaEJpSDlMRFFJZ0IwRVVhaUFFSUJJUURpQUhRUXhxSUFRZ0VoQU9RUUFoQlFOQUlBZEJIR29pQkJBUElBVkIrd0ZMY2cwQ0lBQWdCV29pQmlBSFFSUnFJQVFRRURvQUFDQUdJQWRCREdvZ0JCQVFPZ0FCSUFWQkFuSWhCQ0FIUVJ4cUVBOEVRQ0FFSVFVTUF3VWdBQ0FFYWlBSFFSUnFJQWRCSEdvaUJCQVFPZ0FBSUFZZ0IwRU1haUFFRUJBNkFBTWdCVUVFYWlFRkRBRUxBQXNBQ3lBSFFSeHFJZ1FnRnlBV0VBMGlDRUdJZjBzTkFTQUhRUlJxSUFRZ0VoQU9JQWRCREdvZ0JDQVNFQTVCQUNFRkEwQWdCMEVjYWlJRUVBOGdCVUg3QVV0eVJRUkFJQUFnQldvaUJpQUhRUlJxSUFRUUVUb0FBQ0FHSUFkQkRHb2dCQkFST2dBQklBVkJBbkloQkNBSFFSeHFFQThFUUNBRUlRVUZJQUFnQkdvZ0IwRVVhaUFIUVJ4cUlnUVFFVG9BQUNBR0lBZEJER29nQkJBUk9nQURJQVZCQkdvaEJRd0NDd3NMQW44RFFFRzZmeUVJSUFWQi9RRkxEUU1nQUNBRmFpSUdJQWRCRkdvZ0IwRWNhaUlKRUJFNkFBQWdCa0VCYWlFRUlBa1FEMEVEUmdSQUlBZEJER29oQ0VFQ0RBSUxJQVZCL0FGTERRTWdCaUFIUVF4cUlBZEJIR29pQkJBUk9nQUJJQVZCQW1vaEJTQUVFQTlCQTBjTkFBc2dBQ0FGYWlFRUlBZEJGR29oQ0VFREN5QUVJQWdnQjBFY2FoQVJPZ0FBSUFacUlBQnJJUWdNQVFzQ2Z3TkFRYnAvSVFnZ0JVSDlBVXNOQWlBQUlBVnFJZ1lnQjBFVWFpQUhRUnhxSWdrUUVEb0FBQ0FHUVFGcUlRUWdDUkFQUVFOR0JFQWdCMEVNYWlFSVFRSU1BZ3NnQlVIOEFVc05BaUFHSUFkQkRHb2dCMEVjYWlJRUVCQTZBQUVnQlVFQ2FpRUZJQVFRRDBFRFJ3MEFDeUFBSUFWcUlRUWdCMEVVYWlFSVFRTUxJQVFnQ0NBSFFSeHFFQkE2QUFBZ0Jtb2dBR3NoQ0FzZ0NFR0lmMHNOQVFzZ0NDRUVRUUFoQlNBQlFRQkJOQkFESVFsQkFDRUtBMEFnQkNBRlJ3UkFJQUFnQldvaUJpMEFBQ0lCUVF0TEJFQkJiQ0VJREFNRklBa2dBVUVDZEdvaUFTQUJLQUlBUVFGcU5nSUFJQVZCQVdvaEJVRUJJQVl0QUFCMFFRRjFJQXBxSVFvTUFnc0FDd3RCYkNFSUlBcEZEUUFnQ21jaUJVRWZjeUlCUVF0TERRQWdBMEVnSUFWck5nSUFRUUZCQWlBQmRDQUtheUlEWjBFZmN5SUJkQ0FEUncwQUlBQWdCR29nQVVFQmFpSUFPZ0FBSUFrZ0FFRUNkR29pQUNBQUtBSUFRUUZxTmdJQUlBa29BZ1FpQUVFQ1NTQUFRUUZ4Y2cwQUlBSWdCRUVCYWpZQ0FDQUxRUUZxSVFnTElBZEJNR29rQUNBSUM2QUZBUXgvSXdCQkVHc2lEQ1FBQW44Z0JFRUhUUVJBSUF4Q0FEY0RDQ0FNUVFocUlnVWdBeUFFRUFJYVFXd2dBQ0FCSUFJZ0JVRUlFQXdpQUNBQUlBUkxHeUFBSUFCQmlYOUpHd3dCQ3lBQVFRQWdBU2dDQUVFQmFpSU5RUUYwRUFNaEQwRlVJQU1vQUFBaUJrRVBjU0lBUVFwTERRQWFJQUlnQUVFRmFqWUNBQ0FESUFScUlnSkJCR3NoQnlBQ1FRZHJJUXNnQUVFR2FpRU9RUVFoQWlBR1FRUjJJUVZCSUNBQWRDSUlRUUZ5SVFsQkFDRUFRUUVoQmlBRElRUURRQUpBSUFaQkFYRkZCRUFEUUNBRlFYOXpRWUNBZ0lCNGNtZ2lCa0VZU1VVRVFDQUFRU1JxSVFBZ0JDQUxUUVIvSUFSQkEyb0ZJQVFnQzJ0QkEzUWdBbXBCSDNFaEFpQUhDeUlFS0FBQUlBSjJJUVVNQVFzTElBSWdCa0VlY1NJS2FrRUNhaUVDSUFaQkFYWkJBMndnQUdvZ0JTQUtka0VEY1dvaUFDQU5UdzBCQW44Z0JDQUxTeUFDUVFOMklBUnFJZ1VnQjB0eFJRUkFJQUpCQjNFaEFpQUZEQUVMSUFRZ0IydEJBM1FnQW1wQkgzRWhBaUFIQ3lJRUtBQUFJQUoySVFVTElBVWdDRUVCYTNFaUJpQUlRUUYwUVFGcklnb2dDV3NpRUVrRWZ5QU9RUUZyQlNBRklBcHhJZ1VnRUVFQUlBVWdDRTRiYXlFR0lBNExJUVVnRHlBQVFRRjBhaUFHUVFGcklnbzdBUUFnQUVFQmFpRUFJQUlnQldvaEFpQUlRUUVnQm1zZ0NpQUdRUUJLR3lBSmFpSUpTZ1JBSUFsQkFrZ05BVUVnSUFsbklnVnJJUTVCQVNBRlFSOXpkQ0VJQ3lBQUlBMVBEUUFnQ2tFQVJ5RUdBbjhnQkNBTFN5QUNRUU4xSUFScUlnVWdCMHR4UlFSQUlBSkJCM0VoQWlBRkRBRUxJQUlnQkNBSGEwRURkR3BCSDNFaEFpQUhDeUlFS0FBQUlBSjJJUVVNQVFzTFFXd2dDVUVCUncwQUdrRlFJQUFnRFVzTkFCcEJiQ0FDUVNCS0RRQWFJQUVnQUVFQmF6WUNBQ0FFSUFKQkIycEJBM1ZxSUFOckN5QU1RUkJxSkFBTDhnRUJBWDhnQWtVRVFDQUFRZ0EzQWdBZ0FFRUFOZ0lRSUFCQ0FEY0NDRUc0Znc4TElBQWdBVFlDRENBQUlBRkJCR28yQWhBZ0FrRUVUd1JBSUFBZ0FTQUNhaUlCUVFScklnTTJBZ2dnQUNBREtBQUFOZ0lBSUFGQkFXc3RBQUFpQVFSQUlBQWdBV2RCRjJzMkFnUWdBZzhMSUFCQkFEWUNCRUYvRHdzZ0FDQUJOZ0lJSUFBZ0FTMEFBQ0lETmdJQUFrQUNRQUpBSUFKQkFtc09BZ0VBQWdzZ0FDQUJMUUFDUVJCMElBTnlJZ00yQWdBTElBQWdBUzBBQVVFSWRDQURhallDQUFzZ0FTQUNha0VCYXkwQUFDSUJSUVJBSUFCQkFEWUNCRUZzRHdzZ0FDQUJaeUFDUVFOMGEwRUphallDQkNBQ0MwUUJBbjhnQVNBQ0x3RUFJZ01nQVNnQ0JHb2lCRFlDQkNBQUlBTkJBblJCb0IxcUtBSUFJQUVvQWdCQkFDQUVhM1p4TmdJQUlBRVFEeG9nQUNBQ1FRUnFOZ0lFQzU4QkFRUi9RUU1oQVNBQUtBSUVJZ0pCSUUwRVFDQUFLQUlJSWdFZ0FDZ0NFRThFUUNBQUlBSkJCM0UyQWdRZ0FDQUJJQUpCQTNacklnSTJBZ2dnQUNBQ0tBQUFOZ0lBUVFBUEN5QUFLQUlNSWdNZ0FVWUVRRUVCUVFJZ0FrRWdTUnNQQ3lBQUlBRWdBU0FEYXlBQ1FRTjJJZ1FnQVNBRWF5QURTU0lCR3lJRGF5SUVOZ0lJSUFBZ0FpQURRUU4wYXpZQ0JDQUFJQVFvQUFBMkFnQUxJQUVMU0FFRWZ5QUFLQUlFSUFBb0FnQkJBblJxSWdJdEFBSWdBaThCQUNFRUlBRWdBU2dDQkNJRklBSXRBQU1pQW1vMkFnUWdBQ0FFSUFFb0FnQWdCWFJCQUNBQ2EzWnFOZ0lBQzFJQkJIOGdBQ2dDQkNBQUtBSUFRUUowYWlJQ0xRQUNJQUl2QVFBaEJDQUJJQUl0QUFNaUFpQUJLQUlFYWlJRk5nSUVJQUFnQkNBQ1FRSjBRYUFkYWlnQ0FDQUJLQUlBUVFBZ0JXdDJjV28yQWdBTENBQWdBRUdJZjBzTEdnQWdBQVJBSUFFRVFDQUNJQUFnQVJFQ0FBOExJQUFRQmdzTHBnZ0NEWDhCZmlNQVFSQnJJZ2trQUNBSlFRQTJBZ3dnQ1VFQU5nSUlBbjhDUUNBRFFlZ0phaUFESUFsQkNHb2dDVUVNYWlBQklBSWdBMEdBQVdvUUN5SVBRWWgvU3cwQVFWUWdDU2dDRENJRUlBQW9BZ0FpQVVIL0FYRkJBV3BMRFFFYUlBQkJCR29oQ3lBQUlBRkIvNEdBZUhFZ0JFRVFkRUdBZ1B3SGNYSTJBZ0JCZnlBRUlBUkJBRWdiUVFGcUlRQkJBQ0VCSUFrb0FnZ2hCVUVBSVFJRFFDQUFJQUpHQkVBZ0JVRURheUVCUVFBaEFBTkFBa0JCQUNFQ0lBQWdBVTRFUUFOQUlBQWdCVTROQWlBRElBQWdBMnBCNkFscUxRQUFRUUowYWtGQWF5SUJJQUVvQWdBaUFVRUJhallDQUNBQklBTnFJQUE2QU9nSElBQkJBV29oQUF3QUN3QUZBMEFnQWtFRVJrVUVRQ0FESUFNZ0FDQUNhaUlIYWtIb0NXb3RBQUJCQW5ScVFVQnJJZ2dnQ0NnQ0FDSUlRUUZxTmdJQUlBTWdDR29nQnpvQTZBY2dBa0VCYWlFQ0RBRUxDeUFBUVFScUlRQU1BZ3NBQ3dzZ0JFRUJhaUVPSUFNb0FnQWhCMEVBSVFCQkFTRUlBMEFnQ0NBT1JnMERJQTRnQ0dzaEJDQURJQWhCQW5ScUtBSUFJUVVDUUFKQUFrQUNRQUpBQWtCQkFTQUlkRUVCZFNJTlFRRnJEZ2dBQVFRQ0JBUUVBd1FMUVFBaEFpQUZRUUFnQlVFQVNoc2hCaUFBSVFFRFFDQUNJQVpHRFFVZ0F5QUNJQWRxYWkwQTZBY2hDaUFMSUFGQkFYUnFJZ3dnQkRvQUFTQU1JQW82QUFBZ0FrRUJhaUVDSUFGQkFXb2hBUXdBQ3dBTFFRQWhBaUFGUVFBZ0JVRUFTaHNoQ2lBQUlRRURRQ0FDSUFwR0RRUWdDeUFCUVFGMGFpSUdJQU1nQWlBSGFtb3RBT2dISWd3NkFBSWdCaUFFT2dBQklBWWdERG9BQUNBR0lBUTZBQU1nQWtFQmFpRUNJQUZCQW1vaEFRd0FDd0FMUVFBaEFpQUZRUUFnQlVFQVNoc2hCaUFFUVFoMFFZRCtBM0VoQkNBQUlRRURRQ0FDSUFaR0RRTWdDeUFCUVFGMGFpQUVJQU1nQWlBSGFtb3RBT2dIY3ExQ2dZQ0VnSkNBd0FCK053QUFJQUpCQVdvaEFpQUJRUVJxSVFFTUFBc0FDMEVBSVFJZ0JVRUFJQVZCQUVvYklRWWdCRUVJZEVHQS9nTnhJUVFnQUNFQkEwQWdBaUFHUmcwQ0lBc2dBVUVCZEdvaUNpQUVJQU1nQWlBSGFtb3RBT2dIY3ExQ2dZQ0VnSkNBd0FCK0loRTNBQWdnQ2lBUk53QUFJQUpCQVdvaEFpQUJRUWhxSVFFTUFBc0FDMEVBSVFFZ0JVRUFJQVZCQUVvYklRb2dCRUVJZEVHQS9nTnhJUXdnQUNFRUEwQWdBU0FLUmcwQklBc2dCRUVCZEdvaEVDQU1JQU1nQVNBSGFtb3RBT2dIY3ExQ2dZQ0VnSkNBd0FCK0lSRkJBQ0VDQTBBZ0FpQU5Ua1VFUUNBUUlBSkJBWFJxSWdZZ0VUY0FHQ0FHSUJFM0FCQWdCaUFSTndBSUlBWWdFVGNBQUNBQ1FSQnFJUUlNQVFzTElBRkJBV29oQVNBRUlBMXFJUVFNQUFzQUN5QUlRUUZxSVFnZ0JTQUhhaUVISUFVZ0RXd2dBR29oQUF3QUN3QUZJQU1nQWtFQ2RHb2lCMEZBYXlBQk5nSUFJQUpCQVdvaEFpQUhLQUlBSUFGcUlRRU1BUXNBQ3dBTElBOExJQWxCRUdva0FBdnlBZ0VHZnlNQVFTQnJJZ1VrQUNBRUtBSUFJUVlnQlVFTWFpQUNJQU1RRFNJRFFZaC9UUVJBSUFSQkJHb2hBaUFBSUFGcUlnbEJBMnNoQkVFQUlBWkJFSFpyUVI5eElRTURRQ0FGUVF4cUVBOGdBQ0FFVDNKRkJFQWdBaUFGS0FJTUlnWWdCU2dDRUNJSGRDQURka0VCZEdvaUNDMEFBU0VLSUFBZ0NDMEFBRG9BQUNBQ0lBWWdCeUFLYWlJR2RDQURka0VCZEdvaUJ5MEFBQ0VJSUFVZ0JpQUhMUUFCYWpZQ0VDQUFJQWc2QUFFZ0FFRUNhaUVBREFFTEN3TkFJQVZCREdvUUR5RUhJQVVvQWd3aEJpQUZLQUlRSVFRZ0FDQUpUeUFIY2tVRVFDQUNJQVlnQkhRZ0EzWkJBWFJxSWdZdEFBQWhCeUFGSUFRZ0JpMEFBV28yQWhBZ0FDQUhPZ0FBSUFCQkFXb2hBQXdCQ3dzRFFDQUFJQWxQUlFSQUlBSWdCaUFFZENBRGRrRUJkR29pQnkwQUFTRUlJQUFnQnkwQUFEb0FBQ0FBUVFGcUlRQWdCQ0FJYWlFRURBRUxDMEZzUVd3Z0FTQUZLQUlVSUFVb0FoaEhHeUFFUVNCSEd5RURDeUFGUVNCcUpBQWdBd3ZQRkFFamZ5TUFRZEFBYXlJRkpBQkJiQ0VKQWtBZ0EwRUtTUTBBQWtBZ0F5QUNMd0FFSWdjZ0FpOEFBQ0lJSUFJdkFBSWlEV3BxUVFacUlneEpEUUFnQkM4QkFpRUdJQVZCUEdvZ0FrRUdhaUlDSUFnUURTSUpRWWgvU3cwQklBVkJLR29nQWlBSWFpSUNJQTBRRFNJSlFZaC9TdzBCSUFWQkZHb2dBaUFOYWlJQ0lBY1FEU0lKUVloL1N3MEJJQVVnQWlBSGFpQURJQXhyRUEwaUNVR0lmMHNOQVNBRVFRUnFJUW9nQUNBQmFpSWZRUU5ySVNCQkFDQUdhMEVmY1NFTElBVW9BZ2doRVNBRktBSWNJUklnQlNnQ01DRVRJQVVvQWtRaEZDQUZLQUlFSVFrZ0JTZ0NHQ0VOSUFVb0Fpd2hEQ0FGS0FKQUlRWWdCU2dDRUNFaElBVW9BaVFoSWlBRktBSTRJU01nQlNnQ1RDRWtJQVVvQWdBaEZTQUZLQUlVSVJZZ0JTZ0NLQ0VYSUFVb0Fqd2hHRUVCSVE4Z0FDQUJRUU5xUVFKMklnUnFJZ01nQkdvaUFpQUVhaUlaSVFRZ0FpRUlJQU1oQndOQUlBOUJBWEZGSUFRZ0lFOXlSUVJBSUFBZ0NpQVlJQVowSUF0MlFRSjBhaUlPTHdFQU93QUFJQTR0QUFJaEdpQU9MUUFESVJBZ0J5QUtJQmNnREhRZ0MzWkJBblJxSWc0dkFRQTdBQUFnRGkwQUFpRWJJQTR0QUFNaER5QUlJQW9nRmlBTmRDQUxka0VDZEdvaURpOEJBRHNBQUNBT0xRQUNJUndnRGkwQUF5RWRJQVFnQ2lBVklBbDBJQXQyUVFKMGFpSU9Md0VBT3dBQUlBNHRBQUloSGlBT0xRQURJUTRnQUNBUWFpSWxJQW9nR0NBR0lCcHFJZ1owSUF0MlFRSjBhaUlRTHdFQU93QUFJQkF0QUFJZ0VDMEFBeUVtSUFjZ0Qyb2lKeUFLSUJjZ0RDQWJhaUlhZENBTGRrRUNkR29pQnk4QkFEc0FBQ0FITFFBQ0lRd2dCeTBBQXlFUUlBZ2dIV29pR3lBS0lCWWdEU0FjYWlJUGRDQUxka0VDZEdvaUNDOEJBRHNBQUNBSUxRQUNJUTBnQ0MwQUF5RWNJQVFnRG1vaUhTQUtJQlVnQ1NBZWFpSU9kQ0FMZGtFQ2RHb2lDUzhCQURzQUFDQUdhaUVBUVFNaEJ3Si9JQlFnSkVrRVFDQUFJUVpCQXd3QkN5QUFRUWR4SVFZZ0ZDQUFRUU4yYXlJVUtBQUFJUmhCQUFzZ0NTMEFBeUVlSUFrdEFBSWhDQ0FNSUJwcUlRQWdFeUFqU1FSL0lBQUZJQk1nQUVFRGRtc2lFeWdBQUNFWFFRQWhCeUFBUVFkeEN5RU1JQTBnRDJvaEFDQUhjaUVKUVFNaER3Si9JQklnSWtrRVFDQUFJUTFCQXd3QkN5QUFRUWR4SVEwZ0VpQUFRUU4yYXlJU0tBQUFJUlpCQUFzZ0NDQU9haUVBSUFseUlCRWdJVWtFZnlBQUJTQVJJQUJCQTNackloRW9BQUFoRlVFQUlROGdBRUVIY1FzaENTQWxJQ1pxSVFBZ0VDQW5haUVISUJzZ0hHb2hDQ0FkSUI1cUlRUWdEM0pGSVE4TUFRc0xJQVVnRERZQ0xDQUZJQVkyQWtBZ0JTQU5OZ0lZSUFVZ0NUWUNCQ0FGSUJRMkFrUWdCU0FUTmdJd0lBVWdFallDSENBRklCRTJBZ2dnQlNBWU5nSThJQVVnRnpZQ0tDQUZJQlkyQWhRZ0JTQVZOZ0lBSUFJZ0Iwa2dBQ0FEUzNJTkFFRnNJUWtnQ0NBWlN3MEJJQU5CQTJzaENRTkFJQVZCUEdvUUQwVWdBQ0FKU1hFRVFDQUFJQW9nQlNnQ1BDSU5JQVVvQWtBaURIUWdDM1pCQW5ScUlnNHZBUUE3QUFBZ0FDQU9MUUFEYWlJR0lBb2dEU0FNSUE0dEFBSnFJZ0IwSUF0MlFRSjBhaUlNTHdFQU93QUFJQVVnQUNBTUxRQUNhallDUUNBR0lBd3RBQU5xSVFBTUFRVWdBMEVDYXlFTUEwQWdCVUU4YWhBUElRWWdCU2dDUENFTklBVW9Ba0FoQ1NBQUlBeExJQVp5UlFSQUlBQWdDaUFOSUFsMElBdDJRUUowYWlJR0x3RUFPd0FBSUFVZ0NTQUdMUUFDYWpZQ1FDQUFJQVl0QUFOcUlRQU1BUXNMQTBBZ0FDQU1TMFVFUUNBQUlBb2dEU0FKZENBTGRrRUNkR29pQmk4QkFEc0FBQ0FBSUFZdEFBTnFJUUFnQ1NBR0xRQUNhaUVKREFFTEN3SkFJQUFnQTA4TkFDQUFJQW9nRFNBSmRDQUxkaUlBUVFKMGFpSURMUUFBT2dBQUlBTXRBQU5CQVVZRVFDQUpJQU10QUFKcUlRa01BUXNnQ1VFZlN3MEFRU0FnQ1NBS0lBQkJBblJxTFFBQ2FpSUFJQUJCSUU4YklRa0xJQUpCQTJzaERBTkFJQVZCS0dvUUQwVWdCeUFNU1hFRVFDQUhJQW9nQlNnQ0tDSUdJQVVvQWl3aUFIUWdDM1pCQW5ScUlnMHZBUUE3QUFBZ0J5QU5MUUFEYWlJRElBb2dCaUFBSUEwdEFBSnFJZ0IwSUF0MlFRSjBhaUlHTHdFQU93QUFJQVVnQUNBR0xRQUNhallDTENBRElBWXRBQU5xSVFjTUFRVWdBa0VDYXlFR0EwQWdCVUVvYWhBUElRTWdCU2dDS0NFTUlBVW9BaXdoQUNBR0lBZEpJQU55UlFSQUlBY2dDaUFNSUFCMElBdDJRUUowYWlJREx3RUFPd0FBSUFVZ0FDQURMUUFDYWpZQ0xDQUhJQU10QUFOcUlRY01BUXNMQTBBZ0JpQUhTVVVFUUNBSElBb2dEQ0FBZENBTGRrRUNkR29pQXk4QkFEc0FBQ0FISUFNdEFBTnFJUWNnQUNBRExRQUNhaUVBREFFTEN3SkFJQUlnQjAwTkFDQUhJQW9nRENBQWRDQUxkaUlDUVFKMGFpSURMUUFBT2dBQUlBTXRBQU5CQVVZRVFDQUFJQU10QUFKcUlRQU1BUXNnQUVFZlN3MEFRU0FnQUNBS0lBSkJBblJxTFFBQ2FpSUFJQUJCSUU4YklRQUxJQmxCQTJzaERBTkFJQVZCRkdvUUQwVWdDQ0FNU1hFRVFDQUlJQW9nQlNnQ0ZDSUdJQVVvQWhnaUFuUWdDM1pCQW5ScUlnMHZBUUE3QUFBZ0NDQU5MUUFEYWlJRElBb2dCaUFDSUEwdEFBSnFJZ0owSUF0MlFRSjBhaUlHTHdFQU93QUFJQVVnQWlBR0xRQUNhallDR0NBRElBWXRBQU5xSVFnTUFRVWdHVUVDYXlFREEwQWdCVUVVYWhBUElRSWdCU2dDRkNFR0lBVW9BaGdoQnlBRElBaEpJQUp5UlFSQUlBZ2dDaUFHSUFkMElBdDJRUUowYWlJQ0x3RUFPd0FBSUFVZ0J5QUNMUUFDYWpZQ0dDQUlJQUl0QUFOcUlRZ01BUXNMQTBBZ0F5QUlTVVVFUUNBSUlBb2dCaUFIZENBTGRrRUNkR29pQWk4QkFEc0FBQ0FJSUFJdEFBTnFJUWdnQnlBQ0xRQUNhaUVIREFFTEN3SkFJQWdnR1U4TkFDQUlJQW9nQmlBSGRDQUxkaUlDUVFKMGFpSURMUUFBT2dBQUlBTXRBQU5CQVVZRVFDQUhJQU10QUFKcUlRY01BUXNnQjBFZlN3MEFRU0FnQnlBS0lBSkJBblJxTFFBQ2FpSUNJQUpCSUU4YklRY0xBMEFnQlJBUFJTQUVJQ0JKY1FSQUlBUWdDaUFGS0FJQUlnWWdCU2dDQkNJQ2RDQUxka0VDZEdvaURDOEJBRHNBQUNBRUlBd3RBQU5xSWdNZ0NpQUdJQUlnREMwQUFtb2lBblFnQzNaQkFuUnFJZ1F2QVFBN0FBQWdCU0FDSUFRdEFBSnFOZ0lFSUFNZ0JDMEFBMm9oQkF3QkJTQWZRUUpySVFNRFFDQUZFQThoQWlBRktBSUFJUVlnQlNnQ0JDRUlJQU1nQkVrZ0FuSkZCRUFnQkNBS0lBWWdDSFFnQzNaQkFuUnFJZ0l2QVFBN0FBQWdCU0FJSUFJdEFBSnFOZ0lFSUFRZ0FpMEFBMm9oQkF3QkN3c0RRQ0FESUFSSlJRUkFJQVFnQ2lBR0lBaDBJQXQyUVFKMGFpSUNMd0VBT3dBQUlBUWdBaTBBQTJvaEJDQUlJQUl0QUFKcUlRZ01BUXNMQWtBZ0JDQWZUdzBBSUFRZ0NpQUdJQWgwSUF0MklnSkJBblJxSWdNdEFBQTZBQUFnQXkwQUEwRUJSZ1JBSUFnZ0F5MEFBbW9oQ0F3QkN5QUlRUjlMRFFCQklDQUlJQW9nQWtFQ2RHb3RBQUpxSWdJZ0FrRWdUeHNoQ0F0QmJFRnNRV3hCYkVGc1FXeEJiRUZzSUFFZ0NFRWdSeHNnQlNnQ0NDQUZLQUlNUnhzZ0IwRWdSeHNnQlNnQ0hDQUZLQUlnUnhzZ0FFRWdSeHNnQlNnQ01DQUZLQUkwUnhzZ0NVRWdSeHNnQlNnQ1JDQUZLQUpJUnhzaENRd0pDd0FMQUFzQUN3QUxBQXNBQ3dBTEFBdEJiQ0VKQ3lBRlFkQUFhaVFBSUFrTDdCQUJIbjhqQUVIUUFHc2lCU1FBUVd3aENRSkFJQU5CQ2trTkFBSkFJQU1nQWk4QUJDSUdJQUl2QUFBaUJ5QUNMd0FDSWdocWFrRUdhaUlPU1EwQUlBUXZBUUloRHlBRlFUeHFJQUpCQm1vaUFpQUhFQTBpQ1VHSWYwc05BU0FGUVNocUlBSWdCMm9pQWlBSUVBMGlDVUdJZjBzTkFTQUZRUlJxSUFJZ0NHb2lBaUFHRUEwaUNVR0lmMHNOQVNBRklBSWdCbW9nQXlBT2F4QU5JZ2xCaUg5TERRRWdCRUVFYWlFS0lBQWdBV29pSEVFRGF5RWRRUUFnRDJ0QkgzRWhDeUFGS0FJSUlSRWdCU2dDSENFU0lBVW9BakFoRXlBRktBSkVJUlFnQlNnQ0JDRUpJQVVvQWhnaEJpQUZLQUlzSVFjZ0JTZ0NRQ0VJSUFVb0FoQWhIaUFGS0FJa0lSOGdCU2dDT0NFZ0lBVW9Ba3doSVNBRktBSUFJUlVnQlNnQ0ZDRVdJQVVvQWlnaEZ5QUZLQUk4SVJoQkFTRU5JQUFnQVVFRGFrRUNkaUlDYWlJT0lBSnFJZzhnQW1vaUdTRUVJQThoQWlBT0lRTURRQ0FOUlNBRUlCMVBja1VFUUNBS0lCZ2dDSFFnQzNaQkFYUnFJZ3d0QUFFaERTQUFJQXd0QUFBNkFBQWdDaUFYSUFkMElBdDJRUUYwYWlJTUxRQUJJUkFnQXlBTUxRQUFPZ0FBSUFvZ0ZpQUdkQ0FMZGtFQmRHb2lEQzBBQVNFYUlBSWdEQzBBQURvQUFDQUtJQlVnQ1hRZ0MzWkJBWFJxSWd3dEFBRWhHeUFFSUF3dEFBQTZBQUFnQ2lBWUlBZ2dEV29pQ0hRZ0MzWkJBWFJxSWd3dEFBRWhEU0FBSUF3dEFBQTZBQUVnQ2lBWElBY2dFR29pQjNRZ0MzWkJBWFJxSWd3dEFBRWhFQ0FESUF3dEFBQTZBQUVnQ2lBV0lBWWdHbW9pREhRZ0MzWkJBWFJxSWdZdEFBRWhHaUFDSUFZdEFBQTZBQUVnQ2lBVklBa2dHMm9pRzNRZ0MzWkJBWFJxSWdrdEFBRWhJaUFFSUFrdEFBQTZBQUVnQ0NBTmFpRUdRUU1oQ1FKL0lCUWdJVWtFUUVFRElRMGdCZ3dCQ3lBVUlBWkJBM1pySWhRb0FBQWhHRUVBSVEwZ0JrRUhjUXNoQ0NBSElCQnFJUVlnRXlBZ1NRUi9JQVlGSUJNZ0JrRURkbXNpRXlnQUFDRVhRUUFoQ1NBR1FRZHhDeUVISUF3Z0dtb2hEQ0FKSUExeUlSQkJBeUVOQW44Z0VpQWZTUVJBSUF3aEJrRUREQUVMSUF4QkIzRWhCaUFTSUF4QkEzWnJJaElvQUFBaEZrRUFDeUFiSUNKcUlRd2dFSEloRUNBUklCNUpCSDhnREFVZ0VTQU1RUU4yYXlJUktBQUFJUlZCQUNFTklBeEJCM0VMSVFrZ0JFRUNhaUVFSUFKQkFtb2hBaUFEUVFKcUlRTWdBRUVDYWlFQUlBMGdFSEpGSVEwTUFRc0xJQVVnQnpZQ0xDQUZJQWcyQWtBZ0JTQUdOZ0lZSUFVZ0NUWUNCQ0FGSUJRMkFrUWdCU0FUTmdJd0lBVWdFallDSENBRklCRTJBZ2dnQlNBWU5nSThJQVVnRnpZQ0tDQUZJQlkyQWhRZ0JTQVZOZ0lBSUFBZ0Rrc2dBeUFQUzNJTkFFRnNJUWtnQWlBWlN3MEJJQTVCQTJzaENRTkFJQVZCUEdvUUR5QUFJQWxQY2tVRVFDQUtJQVVvQWp3aUJpQUZLQUpBSWdkMElBdDJRUUYwYWlJSUxRQUJJUXdnQUNBSUxRQUFPZ0FBSUFvZ0JpQUhJQXhxSWdaMElBdDJRUUYwYWlJSExRQUFJUWdnQlNBR0lBY3RBQUZxTmdKQUlBQWdDRG9BQVNBQVFRSnFJUUFNQVFzTEEwQWdCVUU4YWhBUElRY2dCU2dDUENFR0lBVW9Ba0FoQ1NBQUlBNVBJQWR5UlFSQUlBb2dCaUFKZENBTGRrRUJkR29pQmkwQUFDRUhJQVVnQ1NBR0xRQUJhallDUUNBQUlBYzZBQUFnQUVFQmFpRUFEQUVMQ3dOQUlBQWdEazlGQkVBZ0NpQUdJQWwwSUF0MlFRRjBhaUlITFFBQklBQWdCeTBBQURvQUFDQUFRUUZxSVFBZ0NXb2hDUXdCQ3dzZ0QwRURheUVBQTBBZ0JVRW9haEFQSUFBZ0EwMXlSUVJBSUFvZ0JTZ0NLQ0lHSUFVb0Fpd2lCM1FnQzNaQkFYUnFJZ2d0QUFFaERpQURJQWd0QUFBNkFBQWdDaUFHSUFjZ0Rtb2lCblFnQzNaQkFYUnFJZ2N0QUFBaENDQUZJQVlnQnkwQUFXbzJBaXdnQXlBSU9nQUJJQU5CQW1vaEF3d0JDd3NEUUNBRlFTaHFFQThoQnlBRktBSW9JUVlnQlNnQ0xDRUFJQU1nRDA4Z0IzSkZCRUFnQ2lBR0lBQjBJQXQyUVFGMGFpSUdMUUFBSVFjZ0JTQUFJQVl0QUFGcU5nSXNJQU1nQnpvQUFDQURRUUZxSVFNTUFRc0xBMEFnQXlBUFQwVUVRQ0FLSUFZZ0FIUWdDM1pCQVhScUlnY3RBQUVoQ0NBRElBY3RBQUE2QUFBZ0EwRUJhaUVESUFBZ0NHb2hBQXdCQ3dzZ0dVRURheUVEQTBBZ0JVRVVhaEFQSUFJZ0EwOXlSUVJBSUFvZ0JTZ0NGQ0lHSUFVb0FoZ2lCM1FnQzNaQkFYUnFJZ2d0QUFFaERpQUNJQWd0QUFBNkFBQWdDaUFHSUFjZ0Rtb2lCblFnQzNaQkFYUnFJZ2N0QUFBaENDQUZJQVlnQnkwQUFXbzJBaGdnQWlBSU9nQUJJQUpCQW1vaEFnd0JDd3NEUUNBRlFSUnFFQThoQnlBRktBSVVJUVlnQlNnQ0dDRURJQUlnR1U4Z0IzSkZCRUFnQ2lBR0lBTjBJQXQyUVFGMGFpSUdMUUFBSVFjZ0JTQURJQVl0QUFGcU5nSVlJQUlnQnpvQUFDQUNRUUZxSVFJTUFRc0xBMEFnQWlBWlQwVUVRQ0FLSUFZZ0EzUWdDM1pCQVhScUlnY3RBQUVoQ0NBQ0lBY3RBQUE2QUFBZ0FrRUJhaUVDSUFNZ0NHb2hBd3dCQ3dzRFFDQUZFQThnQkNBZFQzSkZCRUFnQ2lBRktBSUFJZ0lnQlNnQ0JDSUdkQ0FMZGtFQmRHb2lCeTBBQVNFSUlBUWdCeTBBQURvQUFDQUtJQUlnQmlBSWFpSUNkQ0FMZGtFQmRHb2lCaTBBQUNFSElBVWdBaUFHTFFBQmFqWUNCQ0FFSUFjNkFBRWdCRUVDYWlFRURBRUxDd05BSUFVUUR5RUhJQVVvQWdBaEJpQUZLQUlFSVFJZ0JDQWNUeUFIY2tVRVFDQUtJQVlnQW5RZ0MzWkJBWFJxSWdZdEFBQWhCeUFGSUFJZ0JpMEFBV28yQWdRZ0JDQUhPZ0FBSUFSQkFXb2hCQXdCQ3dzRFFDQUVJQnhQUlFSQUlBb2dCaUFDZENBTGRrRUJkR29pQnkwQUFTRUlJQVFnQnkwQUFEb0FBQ0FFUVFGcUlRUWdBaUFJYWlFQ0RBRUxDMEZzUVd4QmJFRnNRV3hCYkVGc1FXd2dBU0FDUVNCSEd5QUZLQUlJSUFVb0FneEhHeUFEUVNCSEd5QUZLQUljSUFVb0FpQkhHeUFBUVNCSEd5QUZLQUl3SUFVb0FqUkhHeUFKUVNCSEd5QUZLQUpFSUFVb0FraEhHeUVKREFFTFFXd2hDUXNnQlVIUUFHb2tBQ0FKQzFnQkEzOENRQ0FBS0FLUTZ3RWlBVVVOQUNBQktBSUFJQUZCdE5VQmFpZ0NBQ0lDSUFGQnVOVUJhaWdDQUNJREVCTWdBZ1JBSUFNZ0FTQUNFUUlBREFFTElBRVFCZ3NnQUVFQU5nS2c2d0VnQUVJQU53T1E2d0VMNlFNQ0JIOENmaUFBUVFCQktCQURJUVFnQWtFQlFRVWdBeHNpQUVrRVFDQUFEd3NnQVVVRVFFRi9Ed3RCQVNFR0FrQUNRQ0FEUVFGR0RRQWdBeUVHSUFFb0FBQWlCVUdvNnI1cFJnMEFRWFloQXlBRlFYQnhRZERVdE1JQlJ3MEJRUWdoQXlBQ1FRaEpEUUVnQVRVQUJDRUlJQVJCQVRZQ0ZDQUVJQWczQXdCQkFBOExJQUVnQWlBR0VCb2lBeUFDU3cwQUlBUWdBellDR0VGeUlRTWdBQ0FCYWlJRlFRRnJMUUFBSWdKQkNIRU5BQ0FDUVNCeElnWkZCRUJCY0NFRElBVXRBQUFpQlVHbkFVc05BU0FGUVFkeHJVSUJJQVZCQTNaQkNtcXRoaUlJUWdPSWZpQUlmQ0VKSUFCQkFXb2hBQXNnQWtFR2RpRUZJQUpCQW5aQkFDRURBa0FDUUFKQUFrQWdBa0VEY1VFQmF3NERBQUVDQXdzZ0FDQUJhaTBBQUNFRElBQkJBV29oQUF3Q0N5QUFJQUZxTHdBQUlRTWdBRUVDYWlFQURBRUxJQUFnQVdvb0FBQWhBeUFBUVFScUlRQUxRUUZ4SVFJQ2ZnSkFBa0FDUUFKQUlBVkJBV3NPQXdFQ0F3QUxRbjhnQmtVTkF4b2dBQ0FCYWpFQUFBd0RDeUFBSUFGcU13QUFRb0FDZkF3Q0N5QUFJQUZxTlFBQURBRUxJQUFnQVdvcEFBQUxJUWdnQkNBQ05nSWdJQVFnQXpZQ0hDQUVJQWczQXdCQkFDRURJQVJCQURZQ0ZDQUVJQWdnQ1NBR0d5SUlOd01JSUFSQ2dJQUlJQWdnQ0VLQWdBaGFHejRDRUFzZ0F3dGZBUUYvUWJoL0lRTWdBVUVCUVFVZ0Foc2lBazhFZnlBQUlBSnFRUUZyTFFBQUlnQkJBM0ZCQW5SQm9CNXFLQUlBSUFKcUlBQkJCSFpCREhGQnNCNXFLQUlBYWlBQVFTQnhJZ0ZGYWlBQlFRVjJJQUJCd0FCSmNXb0ZRYmgvQ3dzTUFDQUFJQUVnQWtFQUVCa0xsd01DQlg4Q2ZpTUFRVUJxSWdRa0FBSkFBMEFnQVVFRlR3UkFBa0FnQUNnQUFFRndjVUhRMUxUQ0FVWUVRRUorSVFjZ0FVRUlTUTBFSUFBb0FBUWlBa0YzU3cwRUlBSkJDR29pQXlBQlN3MEVJQUpCZ1g5SkRRRU1CQXNnQkVFWWFpQUFJQUVRR3lFQ1FuNGdCQ2tER0VJQUlBUW9BaXhCQVVjYklBSWJJZ2RDZlZZTkF5QUhJQWg4SWdnZ0IxUkNmaUVIRFFNQ1FBSkFJQUZCQ0VrTkFDQUFLQUFBUVhCeFFkRFV0TUlCUncwQUlBQW9BQVFpQWtGM1N3MEZRYmgvSUFKQkNHb2lBaUFCSUFKSkd5RUREQUVMSUFSQkdHb2dBQ0FCRUJzaUFrR0lmMHNFUUNBQ0lRTU1BUXRCdUg4aEF5QUNEUUFnQVNBRUtBSXdJZ0pySVFVZ0FDQUNhaUVHQTBBZ0JpQUZJQVJCREdvUUhTSURRWWgvU3cwQklBTkJBMm9pQWlBRlN3UkFRYmgvSVFNTUFnc2dCU0FDYXlFRklBSWdCbW9oQmlBRUtBSVFSUTBBQ3lBRUtBSTRCSDlCdUg4aEF5QUZRUVJKRFFFZ0JrRUVhZ1VnQmdzZ0FHc2hBd3NnQTBHSWYwc05Bd3NnQVNBRGF5RUJJQUFnQTJvaEFBd0JDd3RDZmlBSUlBRWJJUWNMSUFSQlFHc2tBQ0FIQzJRQkFYOUJ1SDhoQXdKQUlBRkJBMGtOQUNBQUxRQUNJUUVnQWlBQUx3QUFJZ0JCQVhFMkFnUWdBaUFBUVFGMlFRTnhJZ00yQWdBZ0FpQUFJQUZCRUhSeVFRTjJJZ0EyQWdnQ1FBSkFJQU5CQVdzT0F3SUJBQUVMUVd3UEN5QUFJUU1MSUFNTFJBRUNmeUFCSUFJb0FnUWlBeUFCS0FJRWFpSUVOZ0lFSUFBZ0EwRUNkRUdnSFdvb0FnQWdBU2dDQUVFQUlBUnJkbkUyQWdBZ0FSQVBHaUFBSUFKQkNHbzJBZ1FMemdFQkJuOUJ1bjhoQ2dKQUlBSW9BZ1FpQ0NBQ0tBSUFJZ2xxSWcwZ0FTQUFhMHNOQUVGc0lRb2dDU0FFSUFNb0FnQWlDMnRMRFFBZ0FDQUphaUlFSUFJb0FnZ2lER3NoQWlBQUlBRkJJR3NpQUNBTElBbEJBQkFnSUFNZ0NTQUxhallDQUFKQUFrQWdCQ0FGYXlBTVR3UkFJQUloQlF3QkN5QU1JQVFnQm10TERRSWdCeUFISUFJZ0JXc2lBbW9pQVNBSWFrOEVRQ0FFSUFFZ0NCQUtHZ3dDQ3lBQ0lBaHFJUWdnQkNBQlFRQWdBbXNRQ2lBQ2F5RUVDeUFFSUFBZ0JTQUlRUUVRSUFzZ0RTRUtDeUFLQzhjRUFRSi9JQUFnQTJvaEJnSkFJQU5CQjB3RVFBTkFJQUFnQms4TkFpQUFJQUl0QUFBNkFBQWdBRUVCYWlFQUlBSkJBV29oQWd3QUN3QUxJQVJCQVVZRVFBSkFJQUFnQW1zaUJVRUhUUVJBSUFBZ0FpMEFBRG9BQUNBQUlBSXRBQUU2QUFFZ0FDQUNMUUFDT2dBQ0lBQWdBaTBBQXpvQUF5QUFJQUlnQlVFQ2RDSUZRY0FlYWlnQ0FHb2lBaWdBQURZQUJDQUNJQVZCNEI1cUtBSUFheUVDREFFTElBQWdBaWtBQURjQUFBc2dBa0VJYWlFQ0lBQkJDR29oQUFzZ0FTQUdUd1JBSUFBZ0Eyb2hBU0FFUVFGSElBQWdBbXRCRDBweVJRUkFBMEFnQUNBQ0tRQUFOd0FBSUFKQkNHb2hBaUFBUVFocUlnQWdBVWtOQUF3REN3QUxJQUFnQWlrQUFEY0FBQ0FBSUFJcEFBZzNBQWdnQTBFUlNRMEJJQUJCRUdvaEFBTkFJQUFnQWlrQUVEY0FBQ0FBSUFJcEFCZzNBQWdnQUNBQ0tRQWdOd0FRSUFBZ0Fpa0FLRGNBR0NBQ1FTQnFJUUlnQUVFZ2FpSUFJQUZKRFFBTERBRUxBa0FnQUNBQlN3UkFJQUFoQVF3QkN5QUJJQUJySVFVQ1FDQUVRUUZISUFBZ0FtdEJEMHB5UlFSQUlBSWhBd05BSUFBZ0F5a0FBRGNBQUNBRFFRaHFJUU1nQUVFSWFpSUFJQUZKRFFBTERBRUxJQUFnQWlrQUFEY0FBQ0FBSUFJcEFBZzNBQWdnQlVFUlNBMEFJQUJCRUdvaEFDQUNJUU1EUUNBQUlBTXBBQkEzQUFBZ0FDQURLUUFZTndBSUlBQWdBeWtBSURjQUVDQUFJQU1wQUNnM0FCZ2dBMEVnYWlFRElBQkJJR29pQUNBQlNRMEFDd3NnQWlBRmFpRUNDd05BSUFFZ0JrOE5BU0FCSUFJdEFBQTZBQUFnQVVFQmFpRUJJQUpCQVdvaEFnd0FDd0FMQzY0SEFnVi9BWDRqQUVHQUFXc2lFU1FBSUJFZ0F6WUNmRUYvSVE4Q1FBSkFBa0FDUUFKQUlBSU9CQUVBQXdJRUN5QUdSUVJBUWJoL0lROE1CQXRCYkNFUElBVXRBQUFpQWlBRFN3MERJQWdnQWtFQ2RDSUNhaWdDQUNFRElBSWdCMm9vQWdBaEFpQUFRUUE2QUFzZ0FFSUFOd0lBSUFBZ0FqWUNEQ0FBSUFNNkFBb2dBRUVBT3dFSUlBRWdBRFlDQUVFQklROE1Bd3NnQVNBSk5nSUFRUUFoRHd3Q0N5QUtSUVJBUVd3aER3d0NDMEVBSVE4Z0MwVWdERUVaU0hJTkFVRUlJQVIwUVFocUlRQkJBQ0VEQTBBZ0FDQURUUTBDSUFOQlFHc2hBd3dBQ3dBTFFXd2hEeUFSSUJGQi9BQnFJQkZCK0FCcUlBVWdCaEFNSWdOQmlIOUxEUUFnRVNnQ2VDSUNJQVJMRFFBZ0VTZ0NmRUVCYWlFSklBQkJDR29oQzBHQWdBSWdBblJCRUhVaEJVRUJJUkJCQVNBQ2RDSVBRUUZySWdvaEVnTkFJQWtnRGtjRVFBSkFJQkVnRGtFQmRDSUVhaThCQUNJTVFmLy9BMFlFUUNBTElCSkJBM1JxSUE0MkFnUWdFa0VCYXlFU1FRRWhEQXdCQ3lBUVFRQWdCU0FNd1VvYklSQUxJQVFnRFdvZ0REc0JBQ0FPUVFGcUlRNE1BUXNMSUFBZ0FqWUNCQ0FBSUJBMkFnQUNRQ0FLSUJKR0JFQWdEVUhxQUdvaEJrRUFJUkJCQUNFTUEwQWdDU0FRUmdSQUlBOUJBM1lnRDBFQmRtcEJBMm9pQlVFQmRDRUVRUUFoREVFQUlSSURRRUVBSVE0Z0R5QVNUUTBFQTBBZ0RrRUNSd1JBSUFzZ0JTQU9iQ0FNYWlBS2NVRURkR29nQmlBT0lCSnFhaTBBQURZQ0JDQU9RUUZxSVE0TUFRc0xJQkpCQW1vaEVpQUVJQXhxSUFweElRd01BQXNBQlNBUklCQkJBWFJxTGdFQUlRVWdCaUFNYWlJRUlCTTNBQUJCQ0NFT0EwQWdCU0FPU2dSQUlBUWdEbW9nRXpjQUFDQU9RUWhxSVE0TUFRc0xJQk5DZ1lLRWlKQ2d3SUFCZkNFVElCQkJBV29oRUNBRklBeHFJUXdNQVFzQUN3QUxJQTlCQTNZZ0QwRUJkbXBCQTJvaEJVRUFJUkJCQUNFT0EwQWdDU0FRUmcwQlFRQWhEQ0FSSUJCQkFYUnFMZ0VBSWdSQkFDQUVRUUJLR3lFRUEwQWdCQ0FNUndSQUlBc2dEa0VEZEdvZ0VEWUNCQU5BSUFVZ0Rtb2dDbkVpRGlBU1N3MEFDeUFNUVFGcUlRd01BUXNMSUJCQkFXb2hFQXdBQ3dBTElBSkJBV29oQlVFQUlRd0RRQ0FNSUE5SEJFQWdEU0FMSUF4QkEzUnFJZ2tvQWdRaUJFRUJkR29pQWlBQ0x3RUFJZ1pCQVdvN0FRQWdDU0FGSUFablFXQnphaUlDT2dBRElBa2dCaUFDZENBUGF6c0JBQ0FKSUFnZ0JFRUNkQ0lDYWlnQ0FEb0FBaUFKSUFJZ0Iyb29BZ0EyQWdRZ0RFRUJhaUVNREFFTEN5QUJJQUEyQWdBZ0F5RVBDeUFSUVlBQmFpUUFJQThMN1ZvQ08zOEdmaU1BUWVBQmF5SUVKQUFDUUVHdzdBa1FCU0lGUlFSQVFVQWhCd3dCQ3lBRlFnQTNBdlRxQVNBRlFRQTJBc1RyQVNBRlFRQTJBclRyQVNBRlFnQTNBcHpyQVNBRlFRQTJBcmpwQVNBRlFRQTJBcXpzQ1NBRlFnQTNBdFRyQVNBRlFnQTNBcXpyQVNBRlFnQTNBNGpyQVNBRlFnQTNBdVRxQVNBRlFnQTNBdVRyQVNBRlFZR0FnTUFBTmdLODZ3RWdCVUlBTndLazZ3RWdCVUg4NmdGcVFRQTJBZ0FnQlVHUTZ3RnFRZ0EzQXdBZ0JSQVlJQVZCck5VQmFpRVVJQVZCK09zQmFpRWNJQVZCc09vQmFpRWlJQVZCb0RCcUlTb2dCVUdZSUdvaEt5QUZRYWpRQUdvaEhpQUZRUkJxSVN3Z0JVRUlhaUVvSUFWQkJHb2hMU0FGUWNEcEFXb2hLU0FGUVlqckFXb2dCRUdVQVdvaEx5QUVRWXdCYWlFd0lBUkJoQUZxSVRFZ0JFSGNBR29oTWlBRVFkUUFhaUV6SUFSQnpBQnFJVFFnQUNFZEFrQUNRQUpBQWtBQ1FBTkFRUUZCQlNBRktBTGs2Z0ViSVFZQ1FBTkFJQU1nQmtrTkFTQUNLQUFBUVhCeFFkRFV0TUlCUmdSQVFiaC9JUWNnQTBFSVNRMElJQUlvQUFRaURrRjNTd1JBUVhJaEJ3d0pDeUFESUE1QkNHb2lDVWtOQ0NBT1FZQi9Td1JBSUFraEJ3d0pDeUFESUFscklRTWdBaUFKYWlFQ0RBRUxDeUFGUWdBM0FxenBBU0FGUWdBM0EranBBU0FGUVFBMkFwanJBU0FGUWdBM0E0RHFBU0FGUWdNM0EvanBBU0FGUWJUcEFXcENBRGNDQUNBRlFmRHBBV3BDQURjREFDQUZRYWpRQUdvaUNVR01nSURnQURZQ0FDQUZRYXpRQVdwQjRCSXBBZ0EzQWdBZ0JVRzAwQUZxUWVnU0tBSUFOZ0lBSUFVZ0JVRVFhallDQUNBRklBVkJvREJxTmdJRUlBVWdCVUdZSUdvMkFnZ2dCU0FKTmdJTUlBVkJBVUVGSUFVb0F1VHFBUnMyQXJ6cEFRSkFJQUZGRFFBZ0JTZ0NyT2tCSWdrZ0hVWU5BQ0FGSUFrMkFyanBBU0FGSUIwMkFxenBBU0FGS0FLdzZRRWhEaUFGSUIwMkFyRHBBU0FGSUIwZ0RpQUphMm8yQXJUcEFRdEJ1SDhoQ1NBRFFRVkJDU0FGS0FMazZnRWlCaHRKRFFVZ0FrRUJRUVVnQmhzZ0JoQWFJZzVCaUg5TEJFQWdEaUVKREFVTElBTWdEa0VEYWtrTkJTQXBJQUlnRGlBR0VCa2lCa0dJZjBzRVFDQUdJUWtNQlFzZ0JnMEZBa0FDUUNBRktBS282d0ZCQVVjTkFDQUZLQUtrNndFaUNVVU5BQ0FGS0FLVTZ3RkZEUUFnQ1NnQ0JFRUJheUlISUFVb0F0enBBU0lLclVLSGxhK3ZtTGJlbTU1L2ZrTEp6OW15OGVXNjZpZUZRaGVKUXMvVzA3N1N4NnZaUW41QytmUGQ4Wm4ybWFzV2ZDSS9RaUdJSUQrRlFzL1cwNzdTeDZ2WlFuNGlQMElkaUNBL2hVTDU4OTN4bWZhWnF4WitJajlDSUlnZ1A0V25jU0VHSUFrb0FnQWhGUU5BUVFBaENBSkFJQlVnQmtFQ2RHb29BZ0FpQ1VVTkFDQUpLQUlJUVFoSkRRQWdDU2dDQkNJU0tBQUFRYmZJd3VGK1J3MEFJQklvQUFRaENBc2dDQ0FLUndSQUlBWWdCM0ZCQVdvaEJpQUlEUUVMQ3lBSlJRMEFJQVVRR0NBRlFYODJBcURyQVNBRklBazJBcFRyQVNBRklBVW9BdHpwQVNJSU5nS1k2d0VNQVFzZ0JTZ0MzT2tCSVFnTEFrQWdDRVVOQUNBRktBS1k2d0VnQ0VZTkFFRmdJUWtNQmdzQ1FDQUZLQUxnNlFFRVFDQUZJQVVvQXVqcUFTSUpSVFlDN09vQklBa05BU0FGUXZucTBORG55YUhrNFFBM0E2anFBU0FGUWdBM0E2RHFBU0FGUXMvVzA3N1N4NnZaUWpjRG1Pb0JJQVZDMXV1Qzd1cjlpZlhnQURjRGtPb0JJQVZDQURjRGlPb0JJQ0pCQUVFb0VBTWFEQUVMSUFWQkFEWUM3T29CQ3lBQklCMXFJU1VnQlNBRktRUG82UUVnRHExOE53UG82UUVnQXlBT2F5RURJQUlnRG1vaEFpQWRJUTREUUNBQ0lBTWdCRUVzYWhBZEloVkJpSDlMQkVBZ0ZTRUpEQVlMSUFOQkEyc2lOU0FWU1EwRUlBSkJBMm9oRzBGc0lRa0NRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBRUtBSXNEZ01DQVFBVkN5QVZRZi8vQjBzTkV5QVZRUU5KRFJJZ0JTa0R5T2tCSVQ4Q1FBSkFJQnN0QUFBaUNVRURjU0lhUVFGckRnTUdBUUFIQ3lBRktBS0E2Z0VOQUVGaUlRa01GUXNnRlVFRlNRMFNJQnNvQUFBaEF3Si9Ba0FDUUFKQUlBbEJBblpCQTNFaUNVRUNhdzRDQVFJQUN5QUpRUUJISVFjZ0EwRUVka0gvQjNFaEMwRURJUVlnQTBFT2RrSC9CM0VNQWd0QkJDRUdJQU5CQkhaQi8vOEFjU0VMUVFFaEJ5QURRUkoyREFFTElBTkJCSFpCLy84UGNTSUxRWUNBQ0VzTkUwRUJJUWRCQlNFR0lBSXRBQWRCQ25RZ0EwRVdkbklMSWdnZ0Jtb2lDU0FWU3cwU0FrQWdDMEdCQmtrTkFDQUZLQUtjNndGRkRRQkJBQ0VEQTBBZ0EwR0RnQUZMRFFFZ0EwRkFheUVEREFBTEFBc2dCaUFiYWlFUElCcEJBMGNOQmlBRktBSU1JZ0l0QUFGQkNIUWhBeUFIRFFjZ0EwVU5DQ0FFUWZBQWFpQVBJQWdRRFNJRFFZaC9TdzBKSUFKQkJHb2hCaUFMSUJ4cUloSkJBMnNoQ2tFQUlBSXZBUUpyUVI5eElRY2dIQ0VEQTBBZ0JFSHdBR29RRDBVZ0F5QUtTWEVFUUNBRElBWWdCQ2dDY0NJSUlBUW9BblFpRDNRZ0IzWkJBblJxSWdJdkFRQTdBQUFnQXlBQ0xRQURhaUlESUFZZ0NDQVBJQUl0QUFKcUlnaDBJQWQyUVFKMGFpSUNMd0VBT3dBQUlBUWdDQ0FDTFFBQ2FqWUNkQ0FESUFJdEFBTnFJUU1NQVFVZ0VrRUNheUVJQTBBZ0JFSHdBR29RRHlFUElBUW9BbkFoQ2lBRUtBSjBJUUlnQXlBSVN5QVBja1VFUUNBRElBWWdDaUFDZENBSGRrRUNkR29pQ2k4QkFEc0FBQ0FFSUFJZ0NpMEFBbW8yQW5RZ0F5QUtMUUFEYWlFRERBRUxDd05BSUFNZ0NFMEVRQ0FESUFZZ0NpQUNkQ0FIZGtFQ2RHb2lEeThCQURzQUFDQURJQTh0QUFOcUlRTWdBaUFQTFFBQ2FpRUNEQUVMQ3dKQUlBTWdFazhOQUNBRElBWWdDaUFDZENBSGRrRUNkR29pQXkwQUFEb0FBQ0FETFFBRFFRRkdCRUFnQWlBRExRQUNhaUVDREFFTElBSkJIMHNOQUVFZ0lBSWdBeTBBQW1vaUFpQUNRU0JQR3lFQ0MwRnNRV3dnQ3lBRUtBSjRJQVFvQW54SEd5QUNRU0JIR3lFRERBc0xBQXNBQ3lBRUtBSTBJZ0lnSlNBT2Ewc05DaUFPUlFSQVFRQWhDU0FDRFFJTURnc2dEaUFiTFFBQUlBSVFBeG9nQWlFSkRBd0xJQlVnSlNBT2Ewc05DU0FPRFFGQkFDRUpJQlZGRFF3TFFiWi9JUWtNRVFzZ0RpQWJJQlVRQWhvZ0ZTRUpEQW9MSUJ3Z0d3Si9Ba0FDUUFKQUlBbEJBblpCQTNGQkFXc09Bd0VBQWdBTElBbEJBM1loQTBFQkRBSUxJQnN2QUFCQkJIWWhBMEVDREFFTElCVkJCRWtORGlBQ0x3QURJQUl0QUFWQkVIUnlJZ0pCajRDQUFVc05EaUFDUVFSMklRTkJBd3NpQW1vdEFBQWdBMEVnYWhBRElRa2dCU0FETmdLQTZ3RWdCU0FKTmdMdzZnRWdBa0VCYWlFSkRBVUxJQlVDZndKQUFrQUNRQ0FKUVFKMlFRTnhRUUZyRGdNQkFBSUFDeUFKUVFOMklRTkJBUXdDQ3lBYkx3QUFRUVIySVFOQkFnd0JDeUFDTHdBRElBSXRBQVZCRUhSeVFRUjJJUU5CQXdzaUFpQURhaUlKUVNCcVNRUkFJQWtnRlVzTkRTQWNJQUlnRzJvZ0F4QUNJUUlnQlNBRE5nS0E2d0VnQlNBQ05nTHc2Z0VnQWlBRGFpSUNRZ0EzQUJnZ0FrSUFOd0FRSUFKQ0FEY0FDQ0FDUWdBM0FBQU1CUXNnQlNBRE5nS0E2d0VnQlNBQ0lCdHFOZ0x3NmdFTUJBc2dCMFVFUUNBZUlBOGdDQ0FVRUJRaUFrR0lmMHNnQWlBSVQzSU5EQ0FjSUFzZ0FpQVBhaUFJSUFKcklCNFFGU0VEREFNTElBdEZJQWhGY2cwTElBdEJDSFlpQXlBSUlBdEpCSDhnQ0VFRWRDQUxiZ1ZCRHd0QkdHd2lBa0dNQ0dvb0FnQnNJQUpCaUFocUtBSUFhaUlHUVFOMklBWnFJQUpCZ0FocUtBSUFJQUpCaEFocUtBSUFJQU5zYWtrRVFDTUFRUkJySWhBa0FDQWVLQUlBSVFNZ0ZFSHdCR3BCQUVIc0FCQURJUVpCVkNFQ0FrQWdBMEgvQVhFaURFRU1TdzBBQWtBZ0ZFSGNDV29nQmlBUVFRaHFJQkJCREdvZ0R5QUlJQlJCM0F0cUloY1FDeUlTUVloL1N3MEFJQkFvQWd3aUJpQU1TdzBCSUJSQnFBVnFJUTBnRkVHa0JXb2hOaUFlUVFScUlSRWdBMEdBZ0lCNGNTRTNJQVpCQVdvaUV5RUNJQVloQXdOQUlBSWlCMEVCYXlFQ0lBTWlDa0VCYXlFRElCUWdDa0VDZEdvb0F2QUVSUTBBQzBFQklBY2dCMEVCVFJzaEZrRUFJUWRCQVNFQ0EwQWdBaUFXUndSQUlCUWdBa0VDZENJRGFpZ0M4QVFoR0NBRElBMXFJQWMyQWdBZ0FrRUJhaUVDSUFjZ0dHb2hCd3dCQ3dzZ0RTQUhOZ0lBUVFBaEFpQVFLQUlJSVFNRFFDQUNJQU5IQkVBZ0RTQUNJQlJxUWR3SmFpMEFBQ0lZUVFKMGFpSVpJQmtvQWdBaUdVRUJhallDQUNBVUlCbEJBWFJxSWhrZ0dEb0EzUVVnR1NBQ09nRGNCU0FDUVFGcUlRSU1BUXNMUVFBaEF5QU5RUUEyQWdBZ0RDQUdRWDl6YWlFR1FRRWhBZ05BSUFJZ0ZrY0VRQ0FVSUFKQkFuUnFJZzBnQXpZQ0FDQU5LQUx3QkNBQ0lBWnFkQ0FEYWlFRElBSkJBV29oQWd3QkN3c2dEQ0FUSUFwcklnWnJRUUZxSVFvZ0JpRURBMEFnQXlBS1NRUkFJQlFnQTBFMGJHb2hEVUVCSVFJRFFDQUNJQlpIQkVBZ0RTQUNRUUowSWhocUlCUWdHR29vQWdBZ0EzWTJBZ0FnQWtFQmFpRUNEQUVMQ3lBRFFRRnFJUU1NQVFzTElCY2dGRUUwRUFJaE9DQVVRWkFNYWlFNUlCTWdER3NoT2lBVVFkd0ZhaUVYUVFBaENnTkFBa0FDUUNBSElBcEhCRUJCQVNBTUlCTWdGeUFLUVFGMGFpSUNMUUFCSWcxcklnTnJJaGgwSVJrZ0FpMEFBQ0VXSURnZ0RVRUNkR29pSHlnQ0FDRUNJQVlnR0UwRVFDQTJRUUVnQXlBNmFpSU5JQTFCQVV3YklpQkJBblFpSkdvb0FnQWhEU0E1SUJRZ0EwRTBiR3BCTkJBQ0lTRWdEVUVCZENFbUlCRWdBa0VDZEdvaEl5QWdRUUZORFFJZ0EwRVFkRUdBZ1B3SGNTQVdja0dBZ0lBSWNpRWdJQ0VnSkdvb0FnQWhKRUVBSVFJRFFDQUNJQ1JHRFFNZ0l5QUNRUUowYWlBZ05nRUFJQUpCQVdvaEFnd0FDd0FMSUFJZ0FpQVphaUlOSUFJZ0RVc2JJUTBnQTBFUWRFR0FnUHdIY1NBV2NrR0FnSUFJY2lFREEwQWdBaUFOUmcwRElCRWdBa0VDZEdvZ0F6WUJBQ0FDUVFGcUlRSU1BQXNBQ3lBZUlBeEJFSFFnTjNJZ0RISkJnQUp5TmdJQURBTUxJQWNnRFdzaEpDQVhJQ1pxSVNaQkFDRU5BMEFnRFNBa1JnMEJRUUVnR0NBVElDWWdEVUVCZEdvaUp5MEFBU0lDYXlJN2EzUWlQQ0FoSUFKQkFuUnFJaUFvQWdBaUFtb2hQU0FESUR0cVFSQjBRWUNBL0FkeElDY3RBQUJCQ0hSeUlCWnlRWUNBZ0JCeUlTY0RRQ0FqSUFKQkFuUnFJQ2MyQVFBZ0FrRUJhaUlDSUQxSkRRQUxJQ0FnSUNnQ0FDQThhallDQUNBTlFRRnFJUTBNQUFzQUN5QWZJQjhvQWdBZ0dXbzJBZ0FnQ2tFQmFpRUtEQUFMQUFzZ0VpRUNDeUFRUVJCcUpBQWdBa0dJZjBzZ0FpQUlUM0lORENBY0lBc2dBaUFQYWlBSUlBSnJJQjRRRmlFRERBTUxJQjRnRHlBSUlCUVFGQ0lDUVloL1N5QUNJQWhQY2cwTElCd2dDeUFDSUE5cUlBZ2dBbXNnSGhBWElRTU1BZ3NnQXdSQUlCd2dDeUFQSUFnZ0FoQVdJUU1NQWdzZ0hDQUxJQThnQ0NBQ0VCY2hBd3dCQ3lBY0lBc2dEeUFJSUFJUUZTRURDeUFEUVloL1N3MElJQVVnQ3pZQ2dPc0JJQVVnSERZQzhPb0JJQVZCQVRZQ2dPb0JJQnBCQWtZRVFDQUZJQjQyQWd3TElBc2dIR29pQWtJQU53QUFJQUpDQURjQUdDQUNRZ0EzQUJBZ0FrSUFOd0FJSUFsQmlIOUxEUW9MSUFrZ0ZVWU5DQ0FWSUFscklRWWdCU2dDbk9zQklRb0NRQ0FKSUJ0cUlnTXRBQUFpRDBVRVFFRUJJUUpCQUNFUFFiaC9JUWtnQmtFQlJnMEJEQXNMQW44Z0EwRUJhaUFQd0NJQ1FRQk9EUUFhSUFKQmYwWUVRQ0FHUVFOSURRc2dBeThBQVVHQS9nRnFJUThnQTBFRGFnd0JDeUFHUVFKSURRb2dBeTBBQVNBUFFRaDBja0dBZ0FKcklROGdBMEVDYWdzaEVrRzRmeUVKSUJKQkFXb2lBaUFWSUJ0cUlnZExEUW9nTENBRklCSXRBQUFpRWtFR2RrRWpRUWtnQWlBSElBSnJRY0FRUWRBUlFmQVNJQVVvQW9UcUFTQUtJQThnRkJBaElnbEJpSDlMRFFnZ0t5QW9JQkpCQkhaQkEzRkJIMEVJSUFJZ0NXb2lBaUFISUFKclFZQUxRWUFNUVlBWElBVW9Bb1RxQVNBRktBS2M2d0VnRHlBVUVDRWlDRUdJZjBzTkNFRnNJUWtnS2lBdElCSkJBblpCQTNGQk5FRUpJQUlnQ0dvaUFpQUhJQUpyUVlBTlFlQU9RWkFaSUFVb0FvVHFBU0FGS0FLYzZ3RWdEeUFVRUNFaUIwR0lmMHNOQ2lBQ0lBZHFJQU5ySWdJaENTQUNRWWgvU3cwS0N5QU9JQTlCQUV4eURRRUxRYnAvSVFrTUNBc2dKU0FPYXlFSklBWWdBbXNoQmlBQ0lBTnFJUWNDUUFKQUFrQWdDa1VFUUNBUFFRbElJQVVwQThqcEFVS0JnSUFJVkhJTkFpQW9LQUlBSWdKQkNHb2hFaUFDS0FJRUlRcEJBQ0VEUVFBaEFnTkFJQU1nQ25aRkJFQWdBaUFTSUFOQkEzUnFMUUFDUVJaTGFpRUNJQU5CQVdvaEF3d0JDd3NnQlVFQU5nS2M2d0VnQWtFSUlBcHJkRUVVVHcwQkRBTUxJQVZCQURZQ25Pc0JDeUFFSUFVb0F2RHFBU0lETmdMY0FTQUpJQTVxSVJZZ0F5QUZLQUtBNndGcUlSY0NRQ0FQUlFSQUlBNGhCd3dCQ3lBRktBSzQ2UUVoR2lBRktBSzA2UUVoR0NBRktBS3c2UUVoRWlBRlFRRTJBb1RxQVVFQUlRTURRQ0FEUVFOSEJFQWdCQ0FEUVFKMElnSnFJQUlnQldwQnJOQUJhaWdDQURZQ1pDQURRUUZxSVFNTUFRc0xRV3doQ1NBRVFUaHFJZ0lnQnlBR0VBMUJpSDlMRFFOQkNDQVBJQTlCQ0U0YklSOGdOQ0FDSUFVb0FnQVFIaUF6SUFJZ0JTZ0NDQkFlSURJZ0FpQUZLQUlFRUI0Z0RpQVNheUVaUVFBaENBTkFJQVJCT0dvUUQwRURSaUFJSUI5T2NrVUVRQ0FFS0FKUUlBUW9Ba3hCQTNScUtRSUFJa0NuSWdkQkVIWWlFVUgvQVhFaEN5QUVLQUpnSUFRb0FseEJBM1JxS1FJQUlrR25JZ3hCRUhZaUlVSC9BWEVoRUNBRUtBSllJQVFvQWxSQkEzUnFLUUlBSWtKQ0lJaW5JUVlnUVVJZ2lDQkFRaUNJcHlFREFrQWdRa0lRaUtjaUNrSC9BWEVpQWtFQ1R3UkFBa0FnQWtFWlNTQS9Rb0dBZ0JCVWNrVUVRQ0FFUVNBZ0JDZ0NQQ0lLYXlJTklBSWdBaUFOU3hzaUV5QUthallDUENBR0lBUW9BamdnQ25SQkFDQVRhM1lnQWlBVGF5SVRkR29oQ2lBRVFUaHFFQThhSUFJZ0RVME5BU0FFSUFRb0Fqd2lBaUFUYWpZQ1BDQUVLQUk0SUFKMFFRQWdFMnQySUFwcUlRb01BUXNnQkNBQ0lBUW9BandpRFdvMkFqd2dCQ2dDT0NBTmRFRUFJQXByZGlBR2FpRUtJQVJCT0dvUUR4b0xJQVFwQW1RaFJDQUVJQW8yQW1RZ0JDQkVOd0pvREFFTEFrQWdBa1VFUUNBREJFQWdCQ2dDWkNFS0RBTUxJQVFvQW1naENnd0JDeUFFSUFRb0Fqd2lBa0VCYWpZQ1BBSi9JQVlnQTBWcUlBUW9BamdnQW5SQkgzWnFJZ0pCQTBZRVFDQUVLQUprUVFGckRBRUxJQUpCQW5RZ0JHb29BbVFMSWdaRklBWnFJUW9nQWtFQlJ3UkFJQVFnQkNnQ2FEWUNiQXNMSUFRZ0JDZ0NaRFlDYUNBRUlBbzJBbVFMcHlFQ0lFRkNnSUQ4QjROUVJRUkFJQVFnQkNnQ1BDSUdJQkJxTmdJOElBUW9BamdnQm5SQkFDQWhhM1lnQW1vaEFnc2dDeUFRYWtFVVR3UkFJQVJCT0dvUUR4b0xJRUJDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NQQ0lHSUF0cU5nSThJQVFvQWpnZ0JuUkJBQ0FSYTNZZ0Eyb2hBd3NnQkVFNGFoQVBHaUFFSUFRb0FqZ2lCa0VBSUFkQkdIWWlDeUFFS0FJOGFpSVFhM1lnQzBFQ2RFR2dIV29vQWdCeElBZEIvLzhEY1dvMkFrd2dCQ0FRSUF4QkdIWWlCMm9pQ3pZQ1BDQUVJQWRCQW5SQm9CMXFLQUlBSUFaQkFDQUxhM1p4SUF4Qi8vOERjV28yQWx3Z0JFRTRhaEFQR2lBRUlFS25JZ1pCR0hZaUJ5QUVLQUk4YWlJTE5nSThJQVFnQjBFQ2RFR2dIV29vQWdBZ0JDZ0NPRUVBSUF0cmRuRWdCa0gvL3dOeGFqWUNWQ0FFUWZBQWFpQUlRUXhzYWlJR0lBbzJBZ2dnQmlBQ05nSUVJQVlnQXpZQ0FDQUlRUUZxSVFnZ0F5QVphaUFDYWlFWkRBRUxDeUFJSUI5SURRTWdGa0VnYXlFaElBNGhCd05BSUFSQk9Hb1FEMEVEUmlBSUlBOU9ja1VFUUNBRUtBSlFJQVFvQWt4QkEzUnFLUUlBSWtDbklnWkJFSFlpSTBIL0FYRWhDaUFFS0FKZ0lBUW9BbHhCQTNScUtRSUFJa0duSWcxQkVIWWlJRUgvQVhFaEV5QUVLQUpZSUFRb0FsUkJBM1JxS1FJQUlrSkNJSWluSVFNZ1FVSWdpQ0JBUWlDSXB5RUxBa0FnUWtJUWlLY2lERUgvQVhFaUFrRUNUd1JBQWtBZ0FrRVpTU0EvUW9HQWdCQlVja1VFUUNBRVFTQWdCQ2dDUENJTWF5SVJJQUlnQWlBUlN4c2lFQ0FNYWpZQ1BDQURJQVFvQWpnZ0RIUkJBQ0FRYTNZZ0FpQVFheUlNZEdvaEVDQUVRVGhxRUE4YUlBSWdFVTBOQVNBRUlBUW9BandpQWlBTWFqWUNQQ0FFS0FJNElBSjBRUUFnREd0MklCQnFJUkFNQVFzZ0JDQUNJQVFvQWp3aUVHbzJBandnQkNnQ09DQVFkRUVBSUF4cmRpQURhaUVRSUFSQk9Hb1FEeG9MSUFRcEFtUWhSQ0FFSUJBMkFtUWdCQ0JFTndKb0RBRUxBa0FnQWtVRVFDQUxCRUFnQkNnQ1pDRVFEQU1MSUFRb0FtZ2hFQXdCQ3lBRUlBUW9BandpQWtFQmFqWUNQQUovSUFNZ0MwVnFJQVFvQWpnZ0FuUkJIM1pxSWdKQkEwWUVRQ0FFS0FKa1FRRnJEQUVMSUFKQkFuUWdCR29vQW1RTElnTkZJQU5xSVJBZ0FrRUJSd1JBSUFRZ0JDZ0NhRFlDYkFzTElBUWdCQ2dDWkRZQ2FDQUVJQkEyQW1RTHB5RU1JRUZDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NQQ0lDSUJOcU5nSThJQVFvQWpnZ0FuUkJBQ0FnYTNZZ0RHb2hEQXNnQ2lBVGFrRVVUd1JBSUFSQk9Hb1FEeG9MSUVCQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDUENJQ0lBcHFOZ0k4SUFRb0FqZ2dBblJCQUNBamEzWWdDMm9oQ3dzZ0JFRTRhaEFQR2lBRUlBUW9BamdpQWtFQUlBWkJHSFlpQXlBRUtBSThhaUlLYTNZZ0EwRUNkRUdnSFdvb0FnQnhJQVpCLy84RGNXbzJBa3dnQkNBS0lBMUJHSFlpQTJvaUJqWUNQQ0FFSUFOQkFuUkJvQjFxS0FJQUlBSkJBQ0FHYTNaeElBMUIvLzhEY1dvMkFsd2dCRUU0YWhBUEdpQUVJRUtuSWdKQkdIWWlBeUFFS0FJOGFpSUdOZ0k4SUFRZ0EwRUNkRUdnSFdvb0FnQWdCQ2dDT0VFQUlBWnJkbkVnQWtILy93TnhhallDVkFKQUFrQUNRQ0FFS0FMY0FTSURJQVJCOEFCcUlBaEJCM0ZCREd4cUloTW9BZ0FpRVdvaUl5QVhTdzBBSUFjZ0V5Z0NCQ0lOSUJGcUlncHFJQ0ZMRFFBZ0NrRWdhaUFXSUFkclRRMEJDeUFFSUJNb0FnZzJBaGdnQkNBVEtRSUFOd01RSUFjZ0ZpQUVRUkJxSUFSQjNBRnFJQmNnRWlBWUlCb1FIeUVLREFFTElBY2dFV29oQWlBVEtBSUlJUVlnQnlBREtRQUFOd0FBSUFjZ0F5a0FDRGNBQ0FKQUlCRkJFVWtOQUNBSElBTXBBQkEzQUJBZ0J5QURLUUFZTndBWUlCRkJFR3RCRVVnTkFDQURRUkJxSVFNZ0IwRWdhaUVSQTBBZ0VTQURLUUFRTndBQUlCRWdBeWtBR0RjQUNDQVJJQU1wQUNBM0FCQWdFU0FES1FBb053QVlJQU5CSUdvaEF5QVJRU0JxSWhFZ0Fra05BQXNMSUFJZ0Jtc2hBeUFFSUNNMkF0d0JJQUlnRW1zZ0Jra0VRQ0FHSUFJZ0dHdExEUWNnR2lBYUlBTWdFbXNpQTJvaUVTQU5hazhFUUNBQ0lCRWdEUkFLR2d3Q0N5QURJQTFxSVEwZ0FpQVJRUUFnQTJzUUNpQURheUVDSUJJaEF3c2dCa0VRVHdSQUlBSWdBeWtBQURjQUFDQUNJQU1wQUFnM0FBZ2dEVUVSU0EwQklBSWdEV29oQmlBQ1FSQnFJUUlEUUNBQ0lBTXBBQkEzQUFBZ0FpQURLUUFZTndBSUlBSWdBeWtBSURjQUVDQUNJQU1wQUNnM0FCZ2dBMEVnYWlFRElBSkJJR29pQWlBR1NRMEFDd3dCQ3dKQUlBWkJCMDBFUUNBQ0lBTXRBQUE2QUFBZ0FpQURMUUFCT2dBQklBSWdBeTBBQWpvQUFpQUNJQU10QUFNNkFBTWdBaUFESUFaQkFuUWlCa0hBSG1vb0FnQnFJZ01vQUFBMkFBUWdBeUFHUWVBZWFpZ0NBR3NoQXd3QkN5QUNJQU1wQUFBM0FBQUxJQTFCQ1VrTkFDQUNJQTFxSVJFZ0FrRUlhaUlHSUFOQkNHb2lBMnRCRDB3RVFBTkFJQVlnQXlrQUFEY0FBQ0FEUVFocUlRTWdCa0VJYWlJR0lCRkpEUUFNQWdzQUN5QUdJQU1wQUFBM0FBQWdCaUFES1FBSU53QUlJQTFCR1VnTkFDQUNRUmhxSVFJRFFDQUNJQU1wQUJBM0FBQWdBaUFES1FBWU53QUlJQUlnQXlrQUlEY0FFQ0FDSUFNcEFDZzNBQmdnQTBFZ2FpRURJQUpCSUdvaUFpQVJTUTBBQ3dzZ0NrR0lmMHNFUUNBS0lRa01CZ1VnRXlBUU5nSUlJQk1nRERZQ0JDQVRJQXMyQWdBZ0NFRUJhaUVJSUFjZ0Ntb2hCeUFMSUJscUlBeHFJUmtNQWdzQUN3c2dDQ0FQU0EwRElBZ2dIMnNoQmdOQUFrQWdCaUFQVGdSQVFRQWhBd05BSUFOQkEwWU5BaUFGSUFOQkFuUWlBbXBCck5BQmFpQUNJQVJxS0FKa05nSUFJQU5CQVdvaEF3d0FDd0FMQWtBQ1FBSkFJQVFvQXR3QklnTWdCRUh3QUdvZ0JrRUhjVUVNYkdvaUNDZ0NBQ0lNYWlJUUlCZExEUUFnQnlBSUtBSUVJZ3NnREdvaUNtb2dJVXNOQUNBS1FTQnFJQllnQjJ0TkRRRUxJQVFnQ0NnQ0NEWUNLQ0FFSUFncEFnQTNBeUFnQnlBV0lBUkJJR29nQkVIY0FXb2dGeUFTSUJnZ0doQWZJUW9NQVFzZ0J5QU1haUVDSUFnb0FnZ2hDQ0FISUFNcEFBQTNBQUFnQnlBREtRQUlOd0FJQWtBZ0RFRVJTUTBBSUFjZ0F5a0FFRGNBRUNBSElBTXBBQmczQUJnZ0RFRVFhMEVSU0EwQUlBTkJFR29oQXlBSFFTQnFJUXdEUUNBTUlBTXBBQkEzQUFBZ0RDQURLUUFZTndBSUlBd2dBeWtBSURjQUVDQU1JQU1wQUNnM0FCZ2dBMEVnYWlFRElBeEJJR29pRENBQ1NRMEFDd3NnQWlBSWF5RURJQVFnRURZQzNBRWdBaUFTYXlBSVNRUkFJQWdnQWlBWWEwc05CeUFhSUJvZ0F5QVNheUlEYWlJTUlBdHFUd1JBSUFJZ0RDQUxFQW9hREFJTElBTWdDMm9oQ3lBQ0lBeEJBQ0FEYXhBS0lBTnJJUUlnRWlFREN5QUlRUkJQQkVBZ0FpQURLUUFBTndBQUlBSWdBeWtBQ0RjQUNDQUxRUkZJRFFFZ0FpQUxhaUVJSUFKQkVHb2hBZ05BSUFJZ0F5a0FFRGNBQUNBQ0lBTXBBQmczQUFnZ0FpQURLUUFnTndBUUlBSWdBeWtBS0RjQUdDQURRU0JxSVFNZ0FrRWdhaUlDSUFoSkRRQUxEQUVMQWtBZ0NFRUhUUVJBSUFJZ0F5MEFBRG9BQUNBQ0lBTXRBQUU2QUFFZ0FpQURMUUFDT2dBQ0lBSWdBeTBBQXpvQUF5QUNJQU1nQ0VFQ2RDSUlRY0FlYWlnQ0FHb2lBeWdBQURZQUJDQURJQWhCNEI1cUtBSUFheUVEREFFTElBSWdBeWtBQURjQUFBc2dDMEVKU1EwQUlBSWdDMm9oRENBQ1FRaHFJZ2dnQTBFSWFpSURhMEVQVEFSQUEwQWdDQ0FES1FBQU53QUFJQU5CQ0dvaEF5QUlRUWhxSWdnZ0RFa05BQXdDQ3dBTElBZ2dBeWtBQURjQUFDQUlJQU1wQUFnM0FBZ2dDMEVaU0EwQUlBSkJHR29oQWdOQUlBSWdBeWtBRURjQUFDQUNJQU1wQUJnM0FBZ2dBaUFES1FBZ053QVFJQUlnQXlrQUtEY0FHQ0FEUVNCcUlRTWdBa0VnYWlJQ0lBeEpEUUFMQ3lBS1FZaC9Td1JBSUFvaENRd0dCU0FHUVFGcUlRWWdCeUFLYWlFSERBSUxBQXNMSUFRb0F0d0JJUU1MUWJwL0lRa2dGeUFEYXlJQ0lCWWdCMnRMRFFJZ0J3Ui9JQWNnQXlBQ0VBSWdBbW9GUVFBTElBNXJJUWtNQWdzZ0JVRUFOZ0tjNndFTElBUWdCU2dDOE9vQklnTTJBdHdCSUFrZ0Rtb2hEQ0FESUFVb0FvRHJBV29oRUFKQUlBOUZCRUFnRGlFR0RBRUxJQVVvQXJqcEFTRU5JQVVvQXJUcEFTRVRJQVVvQXJEcEFTRVNJQVZCQVRZQ2hPb0JRUUFoQXdOQUlBTkJBMGNFUUNBRUlBTkJBblFpQW1vZ0FpQUZha0dzMEFGcUtBSUFOZ0tjQVNBRFFRRnFJUU1NQVFzTFFXd2hDU0FFUWZBQWFpSUNJQWNnQmhBTlFZaC9TdzBCSURFZ0FpQUZLQUlBRUI0Z01DQUNJQVVvQWdnUUhpQXZJQUlnQlNnQ0JCQWVJQXhCSUdzaEdDQU9JUVlEUUNBRUtBS0lBU0FFS0FLRUFVRURkR29wQWdBaVFLY2lDa0VRZGlJWlFmOEJjU0VMSUFRb0FwZ0JJQVFvQXBRQlFRTjBhaWtDQUNKQnB5SVdRUkIySWg5Qi93RnhJUm9nQkNnQ2tBRWdCQ2dDakFGQkEzUnFLUUlBSWtKQ0lJaW5JUWNnUVVJZ2lDQkFRaUNJcHlFREFrQWdRa0lRaUtjaUNFSC9BWEVpQWtFQ1R3UkFBa0FnQWtFWlNTQS9Rb0dBZ0JCVWNrVUVRQ0FFUVNBZ0JDZ0NkQ0lJYXlJUklBSWdBaUFSU3hzaUZ5QUlhallDZENBSElBUW9BbkFnQ0hSQkFDQVhhM1lnQWlBWGF5SVhkR29oQ0NBRVFmQUFhaEFQR2lBQ0lCRk5EUUVnQkNBRUtBSjBJZ0lnRjJvMkFuUWdCQ2dDY0NBQ2RFRUFJQmRyZGlBSWFpRUlEQUVMSUFRZ0FpQUVLQUowSWhGcU5nSjBJQVFvQW5BZ0VYUkJBQ0FJYTNZZ0Iyb2hDQ0FFUWZBQWFoQVBHZ3NnQkNrQ25BRWhSQ0FFSUFnMkFwd0JJQVFnUkRjQ29BRU1BUXNDUUNBQ1JRUkFJQU1FUUNBRUtBS2NBU0VJREFNTElBUW9BcUFCSVFnTUFRc2dCQ0FFS0FKMElnSkJBV28yQW5RQ2Z5QUhJQU5GYWlBRUtBSndJQUowUVI5MmFpSUNRUU5HQkVBZ0JDZ0NuQUZCQVdzTUFRc2dBa0VDZENBRWFpZ0NuQUVMSWdkRklBZHFJUWdnQWtFQlJ3UkFJQVFnQkNnQ29BRTJBcVFCQ3dzZ0JDQUVLQUtjQVRZQ29BRWdCQ0FJTmdLY0FRdW5JUUlnUVVLQWdQd0hnMUJGQkVBZ0JDQUVLQUowSWdjZ0dtbzJBblFnQkNnQ2NDQUhkRUVBSUI5cmRpQUNhaUVDQ3lBTElCcHFRUlJQQkVBZ0JFSHdBR29RRHhvTElFQkNnSUQ4QjROUVJRUkFJQVFnQkNnQ2RDSUhJQXRxTmdKMElBUW9BbkFnQjNSQkFDQVphM1lnQTJvaEF3c2dCRUh3QUdvUUR4b2dCQ0FFS0FKd0lnZEJBQ0FLUVJoMklnc2dCQ2dDZEdvaUdtdDJJQXRCQW5SQm9CMXFLQUlBY1NBS1FmLy9BM0ZxTmdLRUFTQUVJQm9nRmtFWWRpSUthaUlMTmdKMElBUWdDa0VDZEVHZ0hXb29BZ0FnQjBFQUlBdHJkbkVnRmtILy93TnhhallDbEFFZ0JFSHdBR29RRHhvZ0JDQkNweUlIUVJoMklnb2dCQ2dDZEdvaUN6WUNkQ0FFSUFwQkFuUkJvQjFxS0FJQUlBUW9BbkJCQUNBTGEzWnhJQWRCLy84RGNXbzJBb3dCSUFRZ0F6WUNPQ0FFSUFJMkFqd2dCQ0FJTmdKQUFrQUNRQUpBSUFRb0F0d0JJZ3NnQTJvaUZpQVFTdzBBSUFZZ0FpQURhaUlLYWlBWVN3MEFJQXBCSUdvZ0RDQUdhMDBOQVFzZ0JDQUVRVUJyS0FJQU5nSUlJQVFnQkNrRE9EY0RBQ0FHSUF3Z0JDQUVRZHdCYWlBUUlCSWdFeUFORUI4aENnd0JDeUFESUFacUlRY2dCaUFMS1FBQU53QUFJQVlnQ3lrQUNEY0FDQUpBSUFOQkVVa05BQ0FHSUFzcEFCQTNBQkFnQmlBTEtRQVlOd0FZSUFOQkVHdEJFVWdOQUNBTFFSQnFJUU1nQmtFZ2FpRUxBMEFnQ3lBREtRQVFOd0FBSUFzZ0F5a0FHRGNBQ0NBTElBTXBBQ0EzQUJBZ0N5QURLUUFvTndBWUlBTkJJR29oQXlBTFFTQnFJZ3NnQjBrTkFBc0xJQWNnQ0dzaEF5QUVJQlkyQXR3QklBY2dFbXNnQ0VrRVFDQUlJQWNnRTJ0TERRUWdEU0FOSUFNZ0Vtc2lBMm9pQ3lBQ2FrOEVRQ0FISUFzZ0FoQUtHZ3dDQ3lBSElBdEJBQ0FEYXhBS0lBUWdBaUFEYWlJQ05nSThJQU5ySVFjZ0VpRURDeUFJUVJCUEJFQWdCeUFES1FBQU53QUFJQWNnQXlrQUNEY0FDQ0FDUVJGSURRRWdBaUFIYWlFSUlBZEJFR29oQWdOQUlBSWdBeWtBRURjQUFDQUNJQU1wQUJnM0FBZ2dBaUFES1FBZ053QVFJQUlnQXlrQUtEY0FHQ0FEUVNCcUlRTWdBa0VnYWlJQ0lBaEpEUUFMREFFTEFrQWdDRUVIVFFSQUlBY2dBeTBBQURvQUFDQUhJQU10QUFFNkFBRWdCeUFETFFBQ09nQUNJQWNnQXkwQUF6b0FBeUFISUFNZ0NFRUNkQ0lJUWNBZWFpZ0NBR29pQXlnQUFEWUFCQ0FESUFoQjRCNXFLQUlBYXlFRERBRUxJQWNnQXlrQUFEY0FBQXNnQWtFSlNRMEFJQUlnQjJvaEN5QUhRUWhxSWdnZ0EwRUlhaUlEYTBFUFRBUkFBMEFnQ0NBREtRQUFOd0FBSUFOQkNHb2hBeUFJUVFocUlnZ2dDMGtOQUF3Q0N3QUxJQWdnQXlrQUFEY0FBQ0FJSUFNcEFBZzNBQWdnQWtFWlNBMEFJQWRCR0dvaEFnTkFJQUlnQXlrQUVEY0FBQ0FDSUFNcEFCZzNBQWdnQWlBREtRQWdOd0FRSUFJZ0F5a0FLRGNBR0NBRFFTQnFJUU1nQWtFZ2FpSUNJQXRKRFFBTEN5QUtRWWgvU3dSQUlBb2hDUXdEQ3lBR0lBcHFJUVlnQkVId0FHb1FEeUVESUE5QkFXc2lEdzBBQzBFQUlRSWdBMEVDU1EwQkEwQWdBa0VEUndSQUlBVWdBa0VDZENJRGFrR3MwQUZxSUFNZ0JHb29BcHdCTmdJQUlBSkJBV29oQWd3QkN3c2dCQ2dDM0FFaEF3dEJ1bjhoQ1NBUUlBTnJJZ0lnRENBR2Ewc05BQ0FHQkg4Z0JpQURJQUlRQWlBQ2FnVkJBQXNnRG1zaENRc2dDVUdJZjBzTkJnc0NRQ0FGS0FMczZnRkZEUUFnQlNBRktRT0k2Z0VnQ2ExOE53T0k2Z0VDUUNBRktBTFE2Z0VpQWlBSmFpSUlRUjlOQkVBZ0RrVU5BU0FDSUNKcUlBNGdDUkFDR2lBRktBTFE2Z0VnQ1dvaENBd0JDeUFPSVFNZ0FnUkFJQUlnSW1vZ0EwRWdJQUpyRUFJYUlBVW9BdERxQVNFQ0lBVkJBRFlDME9vQklBVWdCU2tEa09vQklBVXBBTERxQVVMUDF0Tyswc2VyMlVKK2ZFSWZpVUtIbGErdm1MYmVtNTUvZmpjRGtPb0JJQVVnQlNrRG1Pb0JJQVVwQUxqcUFVTFAxdE8rMHNlcjJVSitmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZqY0RtT29CSUFVZ0JTa0RvT29CSUFVcEFNRHFBVUxQMXRPKzBzZXIyVUorZkVJZmlVS0hsYSt2bUxiZW01NS9mamNEb09vQklBVWdCU2tEcU9vQklBVXBBTWpxQVVMUDF0Tyswc2VyMlVKK2ZFSWZpVUtIbGErdm1MYmVtNTUvZmpjRHFPb0JJQU1nQW10QklHb2hBd3NnQ1NBT2FpSUNJQU5CSUdwUEJFQWdBa0VnYXlFR0lBVXBBNmpxQVNFL0lBVXBBNkRxQVNGQUlBVXBBNWpxQVNGQklBVXBBNURxQVNGQ0EwQWdBeWtBR0VMUDF0Tyswc2VyMlVKK0lEOThRaCtKUW9lVnI2K1l0dDZibm45K0lUOGdBeWtBRUVMUDF0Tyswc2VyMlVKK0lFQjhRaCtKUW9lVnI2K1l0dDZibm45K0lVQWdBeWtBQ0VMUDF0Tyswc2VyMlVKK0lFRjhRaCtKUW9lVnI2K1l0dDZibm45K0lVRWdBeWtBQUVMUDF0Tyswc2VyMlVKK0lFSjhRaCtKUW9lVnI2K1l0dDZibm45K0lVSWdBMEVnYWlJRElBWk5EUUFMSUFVZ1B6Y0RxT29CSUFVZ1FEY0RvT29CSUFVZ1FUY0RtT29CSUFVZ1FqY0RrT29CQ3lBQ0lBTk5EUUVnSWlBRElBSWdBMnNpQ0JBQ0dnc2dCU0FJTmdMUTZnRUxJRFVnRldzaEF5QVZJQnRxSVFJZ0NTQU9haUVPSUFRb0FqQkZEUUFMSUNrcEF3QWlQMEovVVNBL0lBNGdIV3VzVVhKRkJFQkJiQ0VKREFZTElBVW9BdURwQVFSQVFXb2hDU0FEUVFSSkRRWWdCU2dDNk9vQlJRUkFJQ0lnQlNnQzBPb0JhaUVLQW40Z0JTa0RpT29CSWo5Q0lGb0VRQ0FGS1FPWTZnRWlRRUlIaVNBRktRT1E2Z0VpUVVJQmlYd2dCU2tEb09vQklrSkNESWw4SUFVcEE2anFBU0pEUWhLSmZDQkJRcy9XMDc3U3g2dlpRbjVDSDRsQ2g1V3ZyNWkyM3B1ZWYzNkZRb2VWcjYrWXR0NmJubjkrUXAyanRlcURzWTJLK2dCOUlFQkN6OWJUdnRMSHE5bENma0lmaVVLSGxhK3ZtTGJlbTU1L2ZvVkNoNVd2cjVpMjNwdWVmMzVDbmFPMTZvT3hqWXI2QUgwZ1FrTFAxdE8rMHNlcjJVSitRaCtKUW9lVnI2K1l0dDZibm45K2hVS0hsYSt2bUxiZW01NS9ma0tkbzdYcWc3R05pdm9BZlNCRFFzL1cwNzdTeDZ2WlFuNUNINGxDaDVXdnI1aTIzcHVlZjM2RlFvZVZyNitZdHQ2Ym5uOStRcDJqdGVxRHNZMksrZ0I5REFFTElBVXBBNkRxQVVMRno5bXk4ZVc2NmlkOEN5QS9mQ0UvSUNJaEJnTkFJQW9nQmtFSWFpSUhUd1JBSUFZcEFBQkN6OWJUdnRMSHE5bENma0lmaVVLSGxhK3ZtTGJlbTU1L2ZpQS9oVUliaVVLSGxhK3ZtTGJlbTU1L2ZrS2RvN1hxZzdHTml2b0FmU0UvSUFjaEJnd0JDd3NDUUNBS0lBWkJCR29pQ0VrRVFDQUdJUWdNQVFzZ0JqVUFBRUtIbGErdm1MYmVtNTUvZmlBL2hVSVhpVUxQMXRPKzBzZXIyVUorUXZuejNmR1o5cG1yRm53aFB3c0RRQ0FJSUFwSkJFQWdDREVBQUVMRno5bXk4ZVc2NmlkK0lEK0ZRZ3VKUW9lVnI2K1l0dDZibm45K0lUOGdDRUVCYWlFSURBRUxDeUFDS0FBQUlEOUNJWWdnUDRWQ3o5YlR2dExIcTlsQ2ZpSS9RaDJJSUQrRlF2bnozZkdaOXBtckZuNGlQMElnaUNBL2hhZEhEUWNMSUFOQkJHc2hBeUFDUVFScUlRSUxJQTRnSFdzaUNVR0pmMDhOQkNBQklBbHJJUUVnQ1NBZGFpRWRRUUVoUGd3QkN3dEJ1SDhoQnlBRERRUWdIU0FBYXlFSERBUUxRV3doQ1F3QkMwRzRmeUVKQzBHNGZ5RUhJQWxCZGtZZ1BuRU5BUXNnQ1NFSEN5Z0NBQTBBSUFWQi9Pb0JhaWdDQUNFQklBVkIrT29CYWlnQ0FDRUFJQVVRR0NBRktBS3c2d0VnQUNBQkVCTWdCVUVBTmdLdzZ3RWdCU2dDcE9zQklnSUVRQUpBQWtBQ1FBSkFJQUlvQWdBaUF3UkFJQUJGRFFJZ0FTQURJQUFSQWdBTUFRc2dBRVVOQWdzZ0FTQUNJQUFSQWdBTUFnc2dBeEFHQ3lBQ0VBWUxJQVZCQURZQ3BPc0JDeUFBQkVBZ0FTQUZJQUFSQWdBTUFRc2dCUkFHQ3lBRVFlQUJhaVFBSUFjTEM2Z1ZDUUJCaUFnTERRRUFBQUFCQUFBQUFnQUFBQUlBUWFBSUM3TUdBUUFBQUFFQUFBQUNBQUFBQWdBQUFDWUFBQUNDQUFBQUlRVUFBRW9BQUFCbkNBQUFKZ0FBQU1BQkFBQ0FBQUFBU1FVQUFFb0FBQUMrQ0FBQUtRQUFBQ3dDQUFDQUFBQUFTUVVBQUVvQUFBQytDQUFBTHdBQUFNb0NBQUNBQUFBQWlnVUFBRW9BQUFDRUNRQUFOUUFBQUhNREFBQ0FBQUFBblFVQUFFb0FBQUNnQ1FBQVBRQUFBSUVEQUFDQUFBQUE2d1VBQUVzQUFBQStDZ0FBUkFBQUFKNERBQUNBQUFBQVRRWUFBRXNBQUFDcUNnQUFTd0FBQUxNREFBQ0FBQUFBd1FZQUFFMEFBQUFmRFFBQVRRQUFBRk1FQUFDQUFBQUFJd2dBQUZFQUFBQ21Ed0FBVkFBQUFKa0VBQUNBQUFBQVN3a0FBRmNBQUFDeEVnQUFXQUFBQU5vRUFBQ0FBQUFBYndrQUFGMEFBQUFqRkFBQVZBQUFBRVVGQUFDQUFBQUFWQW9BQUdvQUFBQ01GQUFBYWdBQUFLOEZBQUNBQUFBQWRna0FBSHdBQUFCT0VBQUFmQUFBQU5JQ0FBQ0FBQUFBWXdjQUFKRUFBQUNRQndBQWtnQUFBQUFBQUFBQkFBQUFBUUFBQUFVQUFBQU5BQUFBSFFBQUFEMEFBQUI5QUFBQS9RQUFBUDBCQUFEOUF3QUEvUWNBQVAwUEFBRDlId0FBL1Q4QUFQMS9BQUQ5L3dBQS9mOEJBUDMvQXdEOS93Y0EvZjhQQVAzL0h3RDkvejhBL2Y5L0FQMy8vd0Q5Ly84Qi9mLy9BLzMvL3dmOS8vOFAvZi8vSC8zLy96LzkvLzkvQUFBQUFBRUFBQUFDQUFBQUF3QUFBQVFBQUFBRkFBQUFCZ0FBQUFjQUFBQUlBQUFBQ1FBQUFBb0FBQUFMQUFBQURBQUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQVJBQUFBRWdBQUFCTUFBQUFVQUFBQUZRQUFBQllBQUFBWEFBQUFHQUFBQUJrQUFBQWFBQUFBR3dBQUFCd0FBQUFkQUFBQUhnQUFBQjhBQUFBREFBQUFCQUFBQUFVQUFBQUdBQUFBQndBQUFBZ0FBQUFKQUFBQUNnQUFBQXNBQUFBTUFBQUFEUUFBQUE0QUFBQVBBQUFBRUFBQUFCRUFBQUFTQUFBQUV3QUFBQlFBQUFBVkFBQUFGZ0FBQUJjQUFBQVlBQUFBR1FBQUFCb0FBQUFiQUFBQUhBQUFBQjBBQUFBZUFBQUFId0FBQUNBQUFBQWhBQUFBSWdBQUFDTUFBQUFsQUFBQUp3QUFBQ2tBQUFBckFBQUFMd0FBQURNQUFBQTdBQUFBUXdBQUFGTUFBQUJqQUFBQWd3QUFBQU1CQUFBREFnQUFBd1FBQUFNSUFBQURFQUFBQXlBQUFBTkFBQUFEZ0FBQUF3QUJBRUhnRHd0UkFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQXdBQUFBTUFBQUFFQUFBQUJBQUFBQVVBQUFBSEFBQUFDQUFBQUFrQUFBQUtBQUFBQ3dBQUFBd0FBQUFOQUFBQURnQUFBQThBQUFBUUFFSEVFQXVMQVFFQUFBQUNBQUFBQXdBQUFBUUFBQUFGQUFBQUJnQUFBQWNBQUFBSUFBQUFDUUFBQUFvQUFBQUxBQUFBREFBQUFBMEFBQUFPQUFBQUR3QUFBQkFBQUFBU0FBQUFGQUFBQUJZQUFBQVlBQUFBSEFBQUFDQUFBQUFvQUFBQU1BQUFBRUFBQUFDQUFBQUFBQUVBQUFBQ0FBQUFCQUFBQUFnQUFBQVFBQUFBSUFBQUFFQUFBQUNBQUFBQUFBRUFRWkFTQytZRUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQXdBQUFBTUFBQUFFQUFBQUJnQUFBQWNBQUFBSUFBQUFDUUFBQUFvQUFBQUxBQUFBREFBQUFBMEFBQUFPQUFBQUR3QUFBQkFBQUFBQkFBQUFCQUFBQUFnQUFBQUFBQUFBQVFBQkFRWUFBQUFBQUFBRUFBQUFBQkFBQUFRQUFBQUFJQUFBQlFFQUFBQUFBQUFGQXdBQUFBQUFBQVVFQUFBQUFBQUFCUVlBQUFBQUFBQUZCd0FBQUFBQUFBVUpBQUFBQUFBQUJRb0FBQUFBQUFBRkRBQUFBQUFBQUFZT0FBQUFBQUFCQlJBQUFBQUFBQUVGRkFBQUFBQUFBUVVXQUFBQUFBQUNCUndBQUFBQUFBTUZJQUFBQUFBQUJBVXdBQUFBSUFBR0JVQUFBQUFBQUFjRmdBQUFBQUFBQ0FZQUFRQUFBQUFLQmdBRUFBQUFBQXdHQUJBQUFDQUFBQVFBQUFBQUFBQUFCQUVBQUFBQUFBQUZBZ0FBQUNBQUFBVUVBQUFBQUFBQUJRVUFBQUFnQUFBRkJ3QUFBQUFBQUFVSUFBQUFJQUFBQlFvQUFBQUFBQUFGQ3dBQUFBQUFBQVlOQUFBQUlBQUJCUkFBQUFBQUFBRUZFZ0FBQUNBQUFRVVdBQUFBQUFBQ0JSZ0FBQUFnQUFNRklBQUFBQUFBQXdVb0FBQUFBQUFHQkVBQUFBQVFBQVlFUUFBQUFDQUFCd1dBQUFBQUFBQUpCZ0FDQUFBQUFBc0dBQWdBQURBQUFBUUFBQUFBRUFBQUJBRUFBQUFnQUFBRkFnQUFBQ0FBQUFVREFBQUFJQUFBQlFVQUFBQWdBQUFGQmdBQUFDQUFBQVVJQUFBQUlBQUFCUWtBQUFBZ0FBQUZDd0FBQUNBQUFBVU1BQUFBQUFBQUJnOEFBQUFnQUFFRkVnQUFBQ0FBQVFVVUFBQUFJQUFDQlJnQUFBQWdBQUlGSEFBQUFDQUFBd1VvQUFBQUlBQUVCVEFBQUFBQUFCQUdBQUFCQUFBQUR3WUFnQUFBQUFBT0JnQkFBQUFBQUEwR0FDQUFRWUFYQzRjQ0FRQUJBUVVBQUFBQUFBQUZBQUFBQUFBQUJnUTlBQUFBQUFBSkJmMEJBQUFBQUE4Ri9YOEFBQUFBRlFYOS94OEFBQUFEQlFVQUFBQUFBQWNFZlFBQUFBQUFEQVg5RHdBQUFBQVNCZjMvQXdBQUFCY0YvZjkvQUFBQUJRVWRBQUFBQUFBSUJQMEFBQUFBQUE0Ri9UOEFBQUFBRkFYOS93OEFBQUFDQlFFQUFBQVFBQWNFZlFBQUFBQUFDd1g5QndBQUFBQVJCZjMvQVFBQUFCWUYvZjgvQUFBQUJBVU5BQUFBRUFBSUJQMEFBQUFBQUEwRi9SOEFBQUFBRXdYOS93Y0FBQUFCQlFFQUFBQVFBQVlFUFFBQUFBQUFDZ1g5QXdBQUFBQVFCZjMvQUFBQUFCd0YvZi8vRHdBQUd3WDkvLzhIQUFBYUJmMy8vd01BQUJrRi9mLy9BUUFBR0FYOS8vOEFRWkFaQzRZRUFRQUJBUVlBQUFBQUFBQUdBd0FBQUFBQUFBUUVBQUFBSUFBQUJRVUFBQUFBQUFBRkJnQUFBQUFBQUFVSUFBQUFBQUFBQlFrQUFBQUFBQUFGQ3dBQUFBQUFBQVlOQUFBQUFBQUFCaEFBQUFBQUFBQUdFd0FBQUFBQUFBWVdBQUFBQUFBQUJoa0FBQUFBQUFBR0hBQUFBQUFBQUFZZkFBQUFBQUFBQmlJQUFBQUFBQUVHSlFBQUFBQUFBUVlwQUFBQUFBQUNCaThBQUFBQUFBTUdPd0FBQUFBQUJBWlRBQUFBQUFBSEJvTUFBQUFBQUFrR0F3SUFBQkFBQUFRRUFBQUFBQUFBQkFVQUFBQWdBQUFGQmdBQUFBQUFBQVVIQUFBQUlBQUFCUWtBQUFBQUFBQUZDZ0FBQUFBQUFBWU1BQUFBQUFBQUJnOEFBQUFBQUFBR0VnQUFBQUFBQUFZVkFBQUFBQUFBQmhnQUFBQUFBQUFHR3dBQUFBQUFBQVllQUFBQUFBQUFCaUVBQUFBQUFBRUdJd0FBQUFBQUFRWW5BQUFBQUFBQ0Jpc0FBQUFBQUFNR013QUFBQUFBQkFaREFBQUFBQUFGQm1NQUFBQUFBQWdHQXdFQUFDQUFBQVFFQUFBQU1BQUFCQVFBQUFBUUFBQUVCUUFBQUNBQUFBVUhBQUFBSUFBQUJRZ0FBQUFnQUFBRkNnQUFBQ0FBQUFVTEFBQUFBQUFBQmc0QUFBQUFBQUFHRVFBQUFBQUFBQVlVQUFBQUFBQUFCaGNBQUFBQUFBQUdHZ0FBQUFBQUFBWWRBQUFBQUFBQUJpQUFBQUFBQUJBR0F3QUJBQUFBRHdZRGdBQUFBQUFPQmdOQUFBQUFBQTBHQXlBQUFBQUFEQVlERUFBQUFBQUxCZ01JQUFBQUFBb0dBd1FBUWFRZEM5a0JBUUFBQUFNQUFBQUhBQUFBRHdBQUFCOEFBQUEvQUFBQWZ3QUFBUDhBQUFEL0FRQUEvd01BQVA4SEFBRC9Ed0FBL3g4QUFQOC9BQUQvZndBQS8vOEFBUC8vQVFELy93TUEvLzhIQVAvL0R3RC8veDhBLy84L0FQLy9md0QvLy84QS8vLy9BZi8vL3dQLy8vOEgvLy8vRC8vLy94Ly8vLzgvLy8vL2Z3QUFBQUFCQUFBQUFnQUFBQVFBQUFBQUFBQUFBZ0FBQUFRQUFBQUlBQUFBQUFBQUFBRUFBQUFDQUFBQUFRQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBZ0FBQUFIQUFBQUNBQUFBQWtBQUFBS0FBQUFDd0JCZ0I4TEE0QVJBUT09Ijt2YXIgT0k9bmV3IHlBLFRJPSExO2FzeW5jIGZ1bmN0aW9uIGNlKEEsSSx0KXtsZXQgZT1udWxsO3R5cGVvZiBBIT0ic3RyaW5nIj9lPUEuaHJlZjpBLnN0YXJ0c1dpdGgoImh0dHAiKT9lPUE6ZT1gJHtJfS8ke0F9YCxlLmVuZHNXaXRoKCIuanMiKSYmKGU9ZS5zdWJzdHJpbmcoMCxlLmxlbmd0aC0zKSksZS5lbmRzV2l0aCgiLndhc20iKSYmKGU9ZS5zdWJzdHJpbmcoMCxlLmxlbmd0aC01KSk7bGV0IGc9YCR7ZX0ud2FzbWAscj1hd2FpdCBkQS5nZXQoYCR7Z30uenN0YCx7cmVzcG9uc2VUeXBlOiJhcnJheWJ1ZmZlciIscGFyYW1zOnR9KTtUSXx8KGF3YWl0IE9JLmluaXQoKSxUST0hMCk7bGV0IHM9T0kuZGVjb2RlKG5ldyBVaW50OEFycmF5KHIuZGF0YSkpLmJ1ZmZlcjtyZXR1cm4oYXdhaXQgaW1wb3J0KGAke2V9LmpzYCkpLmRlZmF1bHQoe3dhc21CaW5hcnk6c30pfXZhciB4ST1jZTt2YXIgd0E9bmV3IE1hcDthc3luYyBmdW5jdGlvbiBmZShBLEksdCl7bGV0IGU9QSxnPUEscj1udWxsO3JldHVybiB0eXBlb2YgQSE9InN0cmluZyImJihlPW5ldyBVUkwoQS5ocmVmKSxnPWUuaHJlZiksd0EuaGFzKGcpP3I9YXdhaXQgd0EuZ2V0KGcpOih3QS5zZXQoZyx4SShlLEksdCkpLHI9YXdhaXQgd0EuZ2V0KGcpKSxyfXZhciBQST1mZTt2YXIgbGU9e1RleHRGaWxlOiJUZXh0RmlsZSIsQmluYXJ5RmlsZToiQmluYXJ5RmlsZSIsVGV4dFN0cmVhbToiVGV4dFN0cmVhbSIsQmluYXJ5U3RyZWFtOiJCaW5hcnlTdHJlYW0iLEltYWdlOiJJbWFnZSIsTWVzaDoiTWVzaCIsUG9seURhdGE6IlBvbHlEYXRhIixKc29uQ29tcGF0aWJsZToiSnNvbkNvbXBhdGlibGUifSxEPWxlO3ZhciBEZT17SW50ODoiaW50OCIsVUludDg6InVpbnQ4IixJbnQxNjoiaW50MTYiLFVJbnQxNjoidWludDE2IixJbnQzMjoiaW50MzIiLFVJbnQzMjoidWludDMyIixJbnQ2NDoiaW50NjQiLFVJbnQ2NDoidWludDY0IixTaXplVmFsdWVUeXBlOiJ1aW50NjQiLElkZW50aWZpZXJUeXBlOiJ1aW50NjQiLEluZGV4VmFsdWVUeXBlOiJpbnQ2NCIsT2Zmc2V0VmFsdWVUeXBlOiJpbnQ2NCJ9LHA9RGU7dmFyIHVlPXtGbG9hdDMyOiJmbG9hdDMyIixGbG9hdDY0OiJmbG9hdDY0IixTcGFjZVByZWNpc2lvblR5cGU6ImZsb2F0NjQifSxQPXVlO2Z1bmN0aW9uIGhlKEEsSSl7bGV0IHQ9bnVsbDtzd2l0Y2goQSl7Y2FzZSBwLlVJbnQ4Ont0PW5ldyBVaW50OEFycmF5KEkpO2JyZWFrfWNhc2UgcC5JbnQ4Ont0PW5ldyBJbnQ4QXJyYXkoSSk7YnJlYWt9Y2FzZSBwLlVJbnQxNjp7dD1uZXcgVWludDE2QXJyYXkoSSk7YnJlYWt9Y2FzZSBwLkludDE2Ont0PW5ldyBJbnQxNkFycmF5KEkpO2JyZWFrfWNhc2UgcC5VSW50MzI6e3Q9bmV3IFVpbnQzMkFycmF5KEkpO2JyZWFrfWNhc2UgcC5JbnQzMjp7dD1uZXcgSW50MzJBcnJheShJKTticmVha31jYXNlIHAuVUludDY0Ont0eXBlb2YgZ2xvYmFsVGhpcy5CaWdVaW50NjRBcnJheT09ImZ1bmN0aW9uIj90PW5ldyBCaWdVaW50NjRBcnJheShJKTp0PW5ldyBVaW50OEFycmF5KEkpO2JyZWFrfWNhc2UgcC5JbnQ2NDp7dHlwZW9mIGdsb2JhbFRoaXMuQmlnSW50NjRBcnJheT09ImZ1bmN0aW9uIj90PW5ldyBCaWdJbnQ2NEFycmF5KEkpOnQ9bmV3IFVpbnQ4QXJyYXkoSSk7YnJlYWt9Y2FzZSBQLkZsb2F0MzI6e3Q9bmV3IEZsb2F0MzJBcnJheShJKTticmVha31jYXNlIFAuRmxvYXQ2NDp7dD1uZXcgRmxvYXQ2NEFycmF5KEkpO2JyZWFrfWNhc2UibnVsbCI6e3Q9bnVsbDticmVha31jYXNlIG51bGw6e3Q9bnVsbDticmVha31kZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVHlwZSBpcyBub3Qgc3VwcG9ydGVkIGFzIGEgVHlwZWRBcnJheSIpfXJldHVybiB0fXZhciBZPWhlO3ZhciBaST10eXBlb2YgZ2xvYmFsVGhpcy5TaGFyZWRBcnJheUJ1ZmZlcj09ImZ1bmN0aW9uIixqST1uZXcgVGV4dEVuY29kZXIsV0k9bmV3IFRleHREZWNvZGVyKCJ1dGYtOCIpO2Z1bmN0aW9uIGRlKEEsSSl7bGV0IHQ9e2ZsYWdzOiJyIixlbmNvZGluZzoiYmluYXJ5In0sZT1BLmZzX29wZW4oSSx0LmZsYWdzKSxyPUEuZnNfc3RhdChJKS5zaXplLGk9bnVsbDtaST9pPW5ldyBTaGFyZWRBcnJheUJ1ZmZlcihyKTppPW5ldyBBcnJheUJ1ZmZlcihyKTtsZXQgcz1uZXcgVWludDhBcnJheShpKTtyZXR1cm4gQS5mc19yZWFkKGUscywwLHIsMCksQS5mc19jbG9zZShlKSxzfWZ1bmN0aW9uIFZJKEEsSSx0KXtsZXQgZT1udWxsO1pJP2U9bmV3IFNoYXJlZEFycmF5QnVmZmVyKHQpOmU9bmV3IEFycmF5QnVmZmVyKHQpO2xldCBnPW5ldyBVaW50OEFycmF5KGUpLHI9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLEksdCk7cmV0dXJuIGcuc2V0KHIpLGd9ZnVuY3Rpb24geShBLEksdCxlKXtsZXQgZz0wO3JldHVybiBJIT09bnVsbCYmKGc9QS5jY2FsbCgiaXRrX3dhc21faW5wdXRfYXJyYXlfYWxsb2MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsdCxlLEkuYnVmZmVyLmJ5dGVMZW5ndGhdKSxBLkhFQVBVOC5zZXQobmV3IFVpbnQ4QXJyYXkoSS5idWZmZXIpLGcpKSxnfWZ1bmN0aW9uIGooQSxJLHQpe2xldCBlPUpTT04uc3RyaW5naWZ5KEkpLGc9QS5jY2FsbCgiaXRrX3dhc21faW5wdXRfanNvbl9hbGxvYyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCx0LGUubGVuZ3RoXSk7QS53cml0ZUFzY2lpVG9NZW1vcnkoZSxnLCExKX1mdW5jdGlvbiBTKEEsSSx0LGUpe2xldCBnPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEksdF0pLHI9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsSSx0XSksaT1WSShBLGcscik7cmV0dXJuIFkoZSxpLmJ1ZmZlcil9ZnVuY3Rpb24gekEoQSxJKXtsZXQgdD1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfanNvbl9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciJdLFswLEldKSxlPUEuQXNjaWlUb1N0cmluZyh0KTtyZXR1cm4gSlNPTi5wYXJzZShlKX1mdW5jdGlvbiB5ZShBLEksdCxlKXtlIT1udWxsJiZlLmxlbmd0aD4wJiZlLmZvckVhY2goZnVuY3Rpb24obixDKXtzd2l0Y2gobi50eXBlKXtjYXNlIEQuVGV4dFN0cmVhbTp7bGV0IG89akkuZW5jb2RlKG4uZGF0YS5kYXRhKSxmPXkoQSxvLEMsMCksUT17c2l6ZTpvLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWB9O2ooQSxRLEMpO2JyZWFrfWNhc2UgRC5Kc29uQ29tcGF0aWJsZTp7bGV0IG89akkuZW5jb2RlKEpTT04uc3RyaW5naWZ5KG4uZGF0YSkpLGY9eShBLG8sQywwKSxRPXtzaXplOm8uYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YH07aihBLFEsQyk7YnJlYWt9Y2FzZSBELkJpbmFyeVN0cmVhbTp7bGV0IG89bi5kYXRhLmRhdGEsZj15KEEsbyxDLDApLFE9e3NpemU6by5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gfTtqKEEsUSxDKTticmVha31jYXNlIEQuVGV4dEZpbGU6e0EuZnNfd3JpdGVGaWxlKG4uZGF0YS5wYXRoLG4uZGF0YS5kYXRhKTticmVha31jYXNlIEQuQmluYXJ5RmlsZTp7QS5mc193cml0ZUZpbGUobi5kYXRhLnBhdGgsbi5kYXRhLmRhdGEpO2JyZWFrfWNhc2UgRC5JbWFnZTp7bGV0IG89bi5kYXRhLGY9eShBLG8uZGF0YSxDLDApLFE9eShBLG8uZGlyZWN0aW9uLEMsMSksRT10eXBlb2Ygby5tZXRhZGF0YT8uZW50cmllczwidSI/SlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbShvLm1ldGFkYXRhLmVudHJpZXMoKSkpOiJbXSIsYz17aW1hZ2VUeXBlOm8uaW1hZ2VUeXBlLG5hbWU6by5uYW1lLG9yaWdpbjpvLm9yaWdpbixzcGFjaW5nOm8uc3BhY2luZyxkaXJlY3Rpb246YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWAsc2l6ZTpvLnNpemUsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YCxtZXRhZGF0YTpFfTtqKEEsYyxDKTticmVha31jYXNlIEQuTWVzaDp7bGV0IG89bi5kYXRhLGY9eShBLG8ucG9pbnRzLEMsMCksUT15KEEsby5jZWxscyxDLDEpLEU9eShBLG8ucG9pbnREYXRhLEMsMiksYz15KEEsby5jZWxsRGF0YSxDLDMpLHU9e21lc2hUeXBlOm8ubWVzaFR5cGUsbmFtZTpvLm5hbWUsbnVtYmVyT2ZQb2ludHM6by5udW1iZXJPZlBvaW50cyxwb2ludHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWAsbnVtYmVyT2ZDZWxsczpvLm51bWJlck9mQ2VsbHMsY2VsbHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWAsY2VsbEJ1ZmZlclNpemU6by5jZWxsQnVmZmVyU2l6ZSxudW1iZXJPZlBvaW50UGl4ZWxzOm8ubnVtYmVyT2ZQb2ludFBpeGVscyxwb2ludERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtFfWAsbnVtYmVyT2ZDZWxsUGl4ZWxzOm8ubnVtYmVyT2ZDZWxsUGl4ZWxzLGNlbGxEYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gfTtqKEEsdSxDKTticmVha31jYXNlIEQuUG9seURhdGE6e2xldCBvPW4uZGF0YSxmPXkoQSxvLnBvaW50cyxDLDApLFE9eShBLG8udmVydGljZXMsQywxKSxFPXkoQSxvLmxpbmVzLEMsMiksYz15KEEsby5wb2x5Z29ucyxDLDMpLHU9eShBLG8udHJpYW5nbGVTdHJpcHMsQyw0KSxkPXkoQSxvLnBvaW50RGF0YSxDLDUpLFI9eShBLG8ucG9pbnREYXRhLEMsNiksTj17cG9seURhdGFUeXBlOm8ucG9seURhdGFUeXBlLG5hbWU6by5uYW1lLG51bWJlck9mUG9pbnRzOm8ubnVtYmVyT2ZQb2ludHMscG9pbnRzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gLHZlcnRpY2VzQnVmZmVyU2l6ZTpvLnZlcnRpY2VzQnVmZmVyU2l6ZSx2ZXJ0aWNlczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1F9YCxsaW5lc0J1ZmZlclNpemU6by5saW5lc0J1ZmZlclNpemUsbGluZXM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtFfWAscG9seWdvbnNCdWZmZXJTaXplOm8ucG9seWdvbnNCdWZmZXJTaXplLHBvbHlnb25zOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gLHRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZTpvLnRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZSx0cmlhbmdsZVN0cmlwczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke3V9YCxudW1iZXJPZlBvaW50UGl4ZWxzOm8ubnVtYmVyT2ZQb2ludFBpeGVscyxwb2ludERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtkfWAsbnVtYmVyT2ZDZWxsUGl4ZWxzOm8ubnVtYmVyT2ZDZWxsUGl4ZWxzLGNlbGxEYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Un1gfTtqKEEsTixDKTticmVha31kZWZhdWx0OnRocm93IEVycm9yKCJVbnN1cHBvcnRlZCBpbnB1dCBJbnRlcmZhY2VUeXBlIil9fSksQS5yZXNldE1vZHVsZVN0ZG91dCgpLEEucmVzZXRNb2R1bGVTdGRlcnIoKTtsZXQgZz1BLnN0YWNrU2F2ZSgpLHI9MDt0cnl7cj1BLmNhbGxNYWluKEkuc2xpY2UoKSl9Y2F0Y2gobil7dGhyb3cgdHlwZW9mIG49PSJudW1iZXIiJiYoY29uc29sZS5sb2coIkV4Y2VwdGlvbiB3aGlsZSBydW5uaW5nIHBpcGVsaW5lOiIpLGNvbnNvbGUubG9nKCJzdGRvdXQ6IixBLmdldE1vZHVsZVN0ZG91dCgpKSxjb25zb2xlLmVycm9yKCJzdGRlcnI6IixBLmdldE1vZHVsZVN0ZGVycigpKSx0eXBlb2YgQS5nZXRFeGNlcHRpb25NZXNzYWdlPCJ1Ij9jb25zb2xlLmVycm9yKCJleGNlcHRpb246IixBLmdldEV4Y2VwdGlvbk1lc3NhZ2UobikpOmNvbnNvbGUuZXJyb3IoIkJ1aWxkIG1vZHVsZSBpbiBEZWJ1ZyBtb2RlIGZvciBleGNlcHRpb24gbWVzc2FnZSBpbmZvcm1hdGlvbi4iKSksbn1maW5hbGx5e0Euc3RhY2tSZXN0b3JlKGcpfWxldCBpPUEuZ2V0TW9kdWxlU3Rkb3V0KCkscz1BLmdldE1vZHVsZVN0ZGVycigpLGE9W107cmV0dXJuIHQhPW51bGwmJnQubGVuZ3RoPjAmJnI9PT0wJiZ0LmZvckVhY2goZnVuY3Rpb24obixDKXtsZXQgbz1udWxsO3N3aXRjaChuLnR5cGUpe2Nhc2UgRC5UZXh0U3RyZWFtOntsZXQgUT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxDLDBdKSxFPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEMsMF0pLGM9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLFEsRSk7bz17ZGF0YTpXSS5kZWNvZGUoYyl9O2JyZWFrfWNhc2UgRC5Kc29uQ29tcGF0aWJsZTp7bGV0IFE9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQywwXSksRT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxDLDBdKSxjPW5ldyBVaW50OEFycmF5KEEuSEVBUFU4LmJ1ZmZlcixRLEUpO289SlNPTi5wYXJzZShXSS5kZWNvZGUoYykpO2JyZWFrfWNhc2UgRC5CaW5hcnlTdHJlYW06e2xldCBRPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEMsMF0pLEU9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQywwXSk7bz17ZGF0YTpWSShBLFEsRSl9O2JyZWFrfWNhc2UgRC5UZXh0RmlsZTp7bz17cGF0aDpuLmRhdGEucGF0aCxkYXRhOkEuZnNfcmVhZEZpbGUobi5kYXRhLnBhdGgse2VuY29kaW5nOiJ1dGY4In0pfTticmVha31jYXNlIEQuQmluYXJ5RmlsZTp7bz17cGF0aDpuLmRhdGEucGF0aCxkYXRhOmRlKEEsbi5kYXRhLnBhdGgpfTticmVha31jYXNlIEQuSW1hZ2U6e2xldCBRPXpBKEEsQyk7US5kYXRhPVMoQSxDLDAsUS5pbWFnZVR5cGUuY29tcG9uZW50VHlwZSksUS5kaXJlY3Rpb249UyhBLEMsMSxQLkZsb2F0NjQpLFEubWV0YWRhdGE9bmV3IE1hcChRLm1ldGFkYXRhKSxvPVE7YnJlYWt9Y2FzZSBELk1lc2g6e2xldCBRPXpBKEEsQyk7US5udW1iZXJPZlBvaW50cz4wP1EucG9pbnRzPVMoQSxDLDAsUS5tZXNoVHlwZS5wb2ludENvbXBvbmVudFR5cGUpOlEucG9pbnRzPVkoUS5tZXNoVHlwZS5wb2ludENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxRLm51bWJlck9mQ2VsbHM+MD9RLmNlbGxzPVMoQSxDLDEsUS5tZXNoVHlwZS5jZWxsQ29tcG9uZW50VHlwZSk6US5jZWxscz1ZKFEubWVzaFR5cGUuY2VsbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxRLm51bWJlck9mUG9pbnRQaXhlbHM+MD9RLnBvaW50RGF0YT1TKEEsQywyLFEubWVzaFR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUpOlEucG9pbnREYXRhPVkoUS5tZXNoVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLFEubnVtYmVyT2ZDZWxsUGl4ZWxzPjA/US5jZWxsRGF0YT1TKEEsQywzLFEubWVzaFR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSk6US5jZWxsRGF0YT1ZKFEubWVzaFR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLG89UTticmVha31jYXNlIEQuUG9seURhdGE6e2xldCBRPXpBKEEsQyk7US5udW1iZXJPZlBvaW50cz4wP1EucG9pbnRzPVMoQSxDLDAsUC5GbG9hdDMyKTpRLnBvaW50cz1uZXcgRmxvYXQzMkFycmF5LFEudmVydGljZXNCdWZmZXJTaXplPjA/US52ZXJ0aWNlcz1TKEEsQywxLHAuVUludDMyKTpRLnZlcnRpY2VzPW5ldyBVaW50MzJBcnJheSxRLmxpbmVzQnVmZmVyU2l6ZT4wP1EubGluZXM9UyhBLEMsMixwLlVJbnQzMik6US5saW5lcz1uZXcgVWludDMyQXJyYXksUS5wb2x5Z29uc0J1ZmZlclNpemU+MD9RLnBvbHlnb25zPVMoQSxDLDMscC5VSW50MzIpOlEucG9seWdvbnM9bmV3IFVpbnQzMkFycmF5LFEudHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplPjA/US50cmlhbmdsZVN0cmlwcz1TKEEsQyw0LHAuVUludDMyKTpRLnRyaWFuZ2xlU3RyaXBzPW5ldyBVaW50MzJBcnJheSxRLm51bWJlck9mUG9pbnRQaXhlbHM+MD9RLnBvaW50RGF0YT1TKEEsQyw1LFEucG9seURhdGFUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlKTpRLnBvaW50RGF0YT1ZKFEucG9seURhdGFUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksUS5udW1iZXJPZkNlbGxQaXhlbHM+MD9RLmNlbGxEYXRhPVMoQSxDLDYsUS5wb2x5RGF0YVR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSk6US5jZWxsRGF0YT1ZKFEucG9seURhdGFUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxvPVE7YnJlYWt9ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5zdXBwb3J0ZWQgb3V0cHV0IEludGVyZmFjZVR5cGUiKX1sZXQgZj17dHlwZTpuLnR5cGUsZGF0YTpvfTthLnB1c2goZil9KSx7cmV0dXJuVmFsdWU6cixzdGRvdXQ6aSxzdGRlcnI6cyxvdXRwdXRzOmF9fXZhciBYST15ZTt2YXIgd2U9dHlwZW9mIGdsb2JhbFRoaXMuU2hhcmVkQXJyYXlCdWZmZXI8InUiO2Z1bmN0aW9uIG1lKEEsSSl7aWYoQT09bnVsbClyZXR1cm5bXTtsZXQgdD1bXTtmb3IobGV0IGU9MDtlPEEubGVuZ3RoO2UrKyl7bGV0IGc9cGUoQVtlXSxJKTtnIT09bnVsbCYmdC5wdXNoKGcpfXJldHVybiB0fWZ1bmN0aW9uIHBlKEEsSSl7aWYoQT09bnVsbClyZXR1cm4gbnVsbDtsZXQgdD1udWxsO3JldHVybiBBLmJ1ZmZlciE9PXZvaWQgMD90PUEuYnVmZmVyOkEuYnl0ZUxlbmd0aCE9PXZvaWQgMCYmKHQ9QSksd2UmJnQgaW5zdGFuY2VvZiBTaGFyZWRBcnJheUJ1ZmZlcj9udWxsOkk/dDp0LnNsaWNlKDApfXZhciB6ST1tZTtmdW5jdGlvbiBTZShBKXtyZXR1cm5bQS5kYXRhLEEuZGlyZWN0aW9uXX12YXIgX0k9U2U7ZnVuY3Rpb24gRmUoQSl7cmV0dXJuW0EucG9pbnRzLEEucG9pbnREYXRhLEEuY2VsbHMsQS5jZWxsRGF0YV19dmFyIHZJPUZlO2Z1bmN0aW9uIFJlKEEpe3JldHVybltBLnBvaW50cyxBLnZlcnRpY2VzLEEubGluZXMsQS5wb2x5Z29ucyxBLnRyaWFuZ2xlU3RyaXBzLEEucG9pbnREYXRhLEEuY2VsbERhdGFdfXZhciAkST1SZTthc3luYyBmdW5jdGlvbiBOZShBLEksdCxlKXtsZXQgZz1YSShBLEksdCxlKSxyPVtdO3JldHVybiBnLm91dHB1dHMuZm9yRWFjaChmdW5jdGlvbihpKXtpZihpLnR5cGU9PT1ELkJpbmFyeVN0cmVhbXx8aS50eXBlPT09RC5CaW5hcnlGaWxlKXtsZXQgcz1pLmRhdGE7ci5wdXNoKHMpfWVsc2UgaWYoaS50eXBlPT09RC5JbWFnZSl7bGV0IHM9aS5kYXRhO3IucHVzaCguLi5fSShzKSl9ZWxzZSBpZihpLnR5cGU9PT1ELk1lc2gpe2xldCBzPWkuZGF0YTtyLnB1c2goLi4udkkocykpfWVsc2UgaWYoaS50eXBlPT09RC5Qb2x5RGF0YSl7bGV0IHM9aS5kYXRhO3IucHVzaCguLi4kSShzKSl9fSksU0EoZyx6SShyLCEwKSl9dmFyIEF0PU5lO3ZhciBVZT17cnVuUGlwZWxpbmU6YXN5bmMgZnVuY3Rpb24oQSxJLHQsZSxnLHIpe2xldCBpPWF3YWl0IFBJKEEsSSxyKTtyZXR1cm4gYXdhaXQgQXQoaSx0LGUsZyl9fTtvQShVZSk7JTBBLyohIEJ1bmRsZWQgbGljZW5zZSBpbmZvcm1hdGlvbjolMEElMEFjb21saW5rL2Rpc3QvZXNtL2NvbWxpbmsubWpzOiUwQSAgKCoqJTBBICAgKiBAbGljZW5zZSUwQSAgICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIExMQyUwQSAgICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAlMEEgICAqKSUwQSovJTBBJztCdChsdCk7ZXhwb3J0e25uIGFzIGRvd25zYW1wbGUsWHIgYXMgZG93bnNhbXBsZUJpblNocmluayxBbiBhcyBkb3duc2FtcGxlTGFiZWxJbWFnZSx0biBhcyBkb3duc2FtcGxlU2lnbWEsYW4gYXMgZ2F1c3NpYW5LZXJuZWxSYWRpdXMsTCBhcyBnZXREZWZhdWx0V2ViV29ya2VyLFIgYXMgZ2V0UGlwZWxpbmVXb3JrZXJVcmwsRyBhcyBnZXRQaXBlbGluZXNCYXNlVXJsLElzIGFzIHNldERlZmF1bHRXZWJXb3JrZXIsQnQgYXMgc2V0UGlwZWxpbmVXb3JrZXJVcmwsdHMgYXMgc2V0UGlwZWxpbmVzQmFzZVVybCxSQSBhcyB2ZXJzaW9ufTsKLyohIEJ1bmRsZWQgbGljZW5zZSBpbmZvcm1hdGlvbjoKCmNvbWxpbmsvZGlzdC9lc20vY29tbGluay5tanM6CiAgKCoqCiAgICogQGxpY2Vuc2UKICAgKiBDb3B5cmlnaHQgMjAxOSBHb29nbGUgTExDCiAgICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKICAgKikKKi8K""" default_config = JsPackageConfig(default_js_module) js_package = JsPackage(default_config) diff --git a/packages/image-io/python/itkwasm-image-io-emscripten/itkwasm_image_io_emscripten/js_package.py b/packages/image-io/python/itkwasm-image-io-emscripten/itkwasm_image_io_emscripten/js_package.py index ceeece2a5..84674244f 100644 --- a/packages/image-io/python/itkwasm-image-io-emscripten/itkwasm_image_io_emscripten/js_package.py +++ b/packages/image-io/python/itkwasm-image-io-emscripten/itkwasm_image_io_emscripten/js_package.py @@ -3,6 +3,6 @@ from itkwasm.pyodide import JsPackageConfig, JsPackage from ._version import __version__ -default_js_module = """data:text/javascript;base64,dmFyIGhyPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgd3I9KGUsQSk9Pntmb3IodmFyIHQgaW4gQSlocihlLHQse2dldDpBW3RdLGVudW1lcmFibGU6ITB9KX07dmFyIFJyPW5ldyBNYXAoW1siYm1wIiwiYm1wIl0sWyJkY20iLCJnZGNtIl0sWyJnaXBsIiwiZ2lwbCJdLFsiZ2lwbC5neiIsImdpcGwiXSxbImhkZjUiLCJoZGY1Il0sWyJqcGciLCJqcGVnIl0sWyJqcGVnIiwianBlZyJdLFsiaXdpIiwid2FzbSJdLFsiaXdpLmNib3IiLCJ3YXNtIl0sWyJpd2kuY2Jvci56c3QiLCJ3YXNtWnN0ZCJdLFsibHNtIiwibHNtIl0sWyJtbmMiLCJtbmMiXSxbIm1uYy5neiIsIm1uYyJdLFsibW5jMiIsIm1uYyJdLFsibWdoIiwibWdoIl0sWyJtZ3oiLCJtZ2giXSxbIm1naC5neiIsIm1naCJdLFsibWhhIiwibWV0YSJdLFsibWhkIiwibWV0YSJdLFsibXJjIiwibXJjIl0sWyJuaWEiLCJuaWZ0aSJdLFsibmlpIiwibmlmdGkiXSxbIm5paS5neiIsIm5pZnRpIl0sWyJoZHIiLCJuaWZ0aSJdLFsibnJyZCIsIm5ycmQiXSxbIm5oZHIiLCJucnJkIl0sWyJwbmciLCJwbmciXSxbInBpYyIsImJpb1JhZCJdLFsidGlmIiwidGlmZiJdLFsidGlmZiIsInRpZmYiXSxbInZ0ayIsInZ0ayJdLFsiaXNxIiwic2NhbmNvIl0sWyJhaW0iLCJzY2FuY28iXSxbImZkZiIsImZkZiJdXSksWT1Scjt2YXIga3I9e0ludDg6ImludDgiLFVJbnQ4OiJ1aW50OCIsSW50MTY6ImludDE2IixVSW50MTY6InVpbnQxNiIsSW50MzI6ImludDMyIixVSW50MzI6InVpbnQzMiIsSW50NjQ6ImludDY0IixVSW50NjQ6InVpbnQ2NCIsU2l6ZVZhbHVlVHlwZToidWludDY0IixJZGVudGlmaWVyVHlwZToidWludDY0IixJbmRleFZhbHVlVHlwZToiaW50NjQiLE9mZnNldFZhbHVlVHlwZToiaW50NjQifSxoPWtyO3ZhciBicj17RmxvYXQzMjoiZmxvYXQzMiIsRmxvYXQ2NDoiZmxvYXQ2NCIsU3BhY2VQcmVjaXNpb25UeXBlOiJmbG9hdDY0In0sYj1icjtmdW5jdGlvbiBEcihlLEEpe2xldCB0PW51bGw7c3dpdGNoKGUpe2Nhc2UgaC5VSW50ODp7dD1uZXcgVWludDhBcnJheShBKTticmVha31jYXNlIGguSW50ODp7dD1uZXcgSW50OEFycmF5KEEpO2JyZWFrfWNhc2UgaC5VSW50MTY6e3Q9bmV3IFVpbnQxNkFycmF5KEEpO2JyZWFrfWNhc2UgaC5JbnQxNjp7dD1uZXcgSW50MTZBcnJheShBKTticmVha31jYXNlIGguVUludDMyOnt0PW5ldyBVaW50MzJBcnJheShBKTticmVha31jYXNlIGguSW50MzI6e3Q9bmV3IEludDMyQXJyYXkoQSk7YnJlYWt9Y2FzZSBoLlVJbnQ2NDp7dHlwZW9mIGdsb2JhbFRoaXMuQmlnVWludDY0QXJyYXk9PSJmdW5jdGlvbiI/dD1uZXcgQmlnVWludDY0QXJyYXkoQSk6dD1uZXcgVWludDhBcnJheShBKTticmVha31jYXNlIGguSW50NjQ6e3R5cGVvZiBnbG9iYWxUaGlzLkJpZ0ludDY0QXJyYXk9PSJmdW5jdGlvbiI/dD1uZXcgQmlnSW50NjRBcnJheShBKTp0PW5ldyBVaW50OEFycmF5KEEpO2JyZWFrfWNhc2UgYi5GbG9hdDMyOnt0PW5ldyBGbG9hdDMyQXJyYXkoQSk7YnJlYWt9Y2FzZSBiLkZsb2F0NjQ6e3Q9bmV3IEZsb2F0NjRBcnJheShBKTticmVha31jYXNlIm51bGwiOnt0PW51bGw7YnJlYWt9Y2FzZSBudWxsOnt0PW51bGw7YnJlYWt9ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlR5cGUgaXMgbm90IHN1cHBvcnRlZCBhcyBhIFR5cGVkQXJyYXkiKX1yZXR1cm4gdH12YXIgUz1Ecjt2YXIgV3I9e1Vua25vd246IlVua25vd24iLFNjYWxhcjoiU2NhbGFyIixSR0I6IlJHQiIsUkdCQToiUkdCQSIsT2Zmc2V0OiJPZmZzZXQiLFZlY3RvcjoiVmVjdG9yIixQb2ludDoiUG9pbnQiLENvdmFyaWFudFZlY3RvcjoiQ292YXJpYW50VmVjdG9yIixTeW1tZXRyaWNTZWNvbmRSYW5rVGVuc29yOiJTeW1tZXRyaWNTZWNvbmRSYW5rVGVuc29yIixEaWZmdXNpb25UZW5zb3IzRDoiRGlmZnVzaW9uVGVuc29yM0QiLENvbXBsZXg6IkNvbXBsZXgiLEZpeGVkQXJyYXk6IkZpeGVkQXJyYXkiLEFycmF5OiJBcnJheSIsTWF0cml4OiJNYXRyaXgiLFZhcmlhYmxlTGVuZ3RoVmVjdG9yOiJWYXJpYWJsZUxlbmd0aFZlY3RvciIsVmFyaWFibGVTaXplTWF0cml4OiJWYXJpYWJsZVNpemVNYXRyaXgifSxtZT1Xcjt2YXIgUGU9Y2xhc3N7ZGltZW5zaW9uO2NvbXBvbmVudFR5cGU7cGl4ZWxUeXBlO2NvbXBvbmVudHM7Y29uc3RydWN0b3IoQT0yLHQ9aC5VSW50OCxyPW1lLlNjYWxhcixvPTEpe3RoaXMuZGltZW5zaW9uPUEsdGhpcy5jb21wb25lbnRUeXBlPXQsdGhpcy5waXhlbFR5cGU9cix0aGlzLmNvbXBvbmVudHM9b319LEl0PVBlO2Z1bmN0aW9uIEZyKGUsQSx0LHIsbyl7ZVtyK3QqQV09b312YXIgZ3Q9RnI7dmFyIHhlPWNsYXNze2ltYWdlVHlwZTtuYW1lPSJpbWFnZSI7b3JpZ2luO3NwYWNpbmc7ZGlyZWN0aW9uO3NpemU7bWV0YWRhdGE7ZGF0YTtjb25zdHJ1Y3RvcihBPW5ldyBJdCl7dGhpcy5pbWFnZVR5cGU9QTtsZXQgdD1BLmRpbWVuc2lvbjt0aGlzLm9yaWdpbj1uZXcgQXJyYXkodCksdGhpcy5vcmlnaW4uZmlsbCgwKSx0aGlzLnNwYWNpbmc9bmV3IEFycmF5KHQpLHRoaXMuc3BhY2luZy5maWxsKDEpLHRoaXMuZGlyZWN0aW9uPW5ldyBGbG9hdDY0QXJyYXkodCp0KSx0aGlzLmRpcmVjdGlvbi5maWxsKDApO2ZvcihsZXQgcj0wO3I8dDtyKyspZ3QodGhpcy5kaXJlY3Rpb24sdCxyLHIsMSk7dGhpcy5zaXplPW5ldyBBcnJheSh0KSx0aGlzLnNpemUuZmlsbCgwKSx0aGlzLm1ldGFkYXRhPW5ldyBNYXAsdGhpcy5kYXRhPW51bGx9fSxLPXhlO2Z1bmN0aW9uIFVyKGUpe2xldCBBPW5ldyBLKGUuaW1hZ2VUeXBlKTtpZihBLm5hbWU9ZS5uYW1lLEEub3JpZ2luPUFycmF5LmZyb20oZS5vcmlnaW4pLEEuc3BhY2luZz1BcnJheS5mcm9tKGUuc3BhY2luZyksQS5kaXJlY3Rpb249ZS5kaXJlY3Rpb24uc2xpY2UoKSxBLnNpemU9QXJyYXkuZnJvbShlLnNpemUpLGUuZGF0YSE9PW51bGwpe2xldCB0PWUuZGF0YS5jb25zdHJ1Y3RvcjtBLmRhdGE9bmV3IHQoZS5kYXRhLmxlbmd0aCksQS5kYXRhIT1udWxsJiZBLmRhdGEuc2V0KGUuZGF0YSwwKX1yZXR1cm4gQX12YXIgR2U9VXI7ZnVuY3Rpb24gU3IoZSl7aWYoZS5sZW5ndGg8MSl0aHJvdyBFcnJvcigiQXQgbGVhc3Qgb25lIGltYWdlcyBpcyByZXF1aXJlZC4iKTtsZXQgQT1lWzBdO2lmKEEuZGF0YT09PW51bGwpdGhyb3cgRXJyb3IoIkltYWdlIGRhdGEgaXMgbnVsbC4iKTtsZXQgdD1uZXcgSyhBLmltYWdlVHlwZSk7dC5vcmlnaW49QXJyYXkuZnJvbShBLm9yaWdpbiksdC5zcGFjaW5nPUFycmF5LmZyb20oQS5zcGFjaW5nKTtsZXQgcj10LmltYWdlVHlwZS5kaW1lbnNpb247dC5kaXJlY3Rpb249QS5kaXJlY3Rpb24uc2xpY2UoKTtsZXQgbz1yLTE7dC5zaXplPUFycmF5LmZyb20oQS5zaXplKTtsZXQgaT1lLnJlZHVjZSgoYSxzKT0+YStzLnNpemVbb10sMCk7dC5zaXplW29dPWk7bGV0IG49dC5zaXplLnJlZHVjZSgoYSxzKT0+YSpzLDEpKnQuaW1hZ2VUeXBlLmNvbXBvbmVudHMsZz1BLmRhdGEuY29uc3RydWN0b3I7dC5kYXRhPW5ldyBnKG4pO2xldCBmPXQuaW1hZ2VUeXBlLmNvbXBvbmVudHM7Zm9yKGxldCBhPTA7YTx0LnNpemUubGVuZ3RoLTE7YSsrKWYqPXQuc2l6ZVthXTtsZXQgbT0wO2lmKHQuZGF0YSE9bnVsbClmb3IobGV0IGE9MDthPGUubGVuZ3RoO2ErKyl0LmRhdGEuc2V0KGVbYV0uZGF0YSxmKm0pLG0rPWVbYV0uc2l6ZVtvXTtlbHNlIHRocm93IEVycm9yKCJDb3VsZCBub3QgY3JlYXRlIHJlc3VsdCBpbWFnZSBkYXRhLiIpO3JldHVybiB0fXZhciBUZT1TcjtmdW5jdGlvbiBPcihlKXtsZXQgQT1lLnNsaWNlKChlLmxhc3RJbmRleE9mKCIuIiktMT4+PjApKzIpO2lmKEEudG9Mb3dlckNhc2UoKT09PSJneiIpe2xldCB0PWUuc2xpY2UoMCwtMykubGFzdEluZGV4T2YoIi4iKTtBPWUuc2xpY2UoKHQtMT4+PjApKzIpfWVsc2UgaWYoQS50b0xvd2VyQ2FzZSgpPT09ImNib3IiKXtsZXQgdD1lLnNsaWNlKDAsLTUpLmxhc3RJbmRleE9mKCIuIik7QT1lLnNsaWNlKCh0LTE+Pj4wKSsyKX1lbHNlIGlmKEEudG9Mb3dlckNhc2UoKT09PSJ6c3QiKXtsZXQgdD1lLnNsaWNlKDAsLTEwKS5sYXN0SW5kZXhPZigiLiIpO0E9ZS5zbGljZSgodC0xPj4+MCkrMil9ZWxzZSBpZihBLnRvTG93ZXJDYXNlKCk9PT0iemlwIil7bGV0IHQ9ZS5zbGljZSgwLC00KS5sYXN0SW5kZXhPZigiLiIpO0E9ZS5zbGljZSgodC0xPj4+MCkrMil9cmV0dXJuIEF9dmFyIHRlPU9yO2Z1bmN0aW9uIE5yKGUsQSl7bGV0IHQ9ey4uLmUuaW1hZ2VUeXBlfTtpZih0eXBlb2YgQTwidSImJnR5cGVvZiBBLnBpeGVsVHlwZTwidSImJih0LnBpeGVsVHlwZT1BLnBpeGVsVHlwZSxBLnBpeGVsVHlwZT09PW1lLlNjYWxhciYmdC5jb21wb25lbnRzIT09MSkpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY2FzdCBtdWx0aS1jb21wb25lbnQgaW1hZ2UgdG8gYSBzY2FsYXIgaW1hZ2UiKTt0eXBlb2YgQTwidSImJnR5cGVvZiBBLmNvbXBvbmVudFR5cGU8InUiJiZBLmNvbXBvbmVudFR5cGUhPT1lLmltYWdlVHlwZS5jb21wb25lbnRUeXBlJiYodC5jb21wb25lbnRUeXBlPUEuY29tcG9uZW50VHlwZSk7bGV0IHI9bmV3IEsodCk7aWYoci5uYW1lPWUubmFtZSxyLm9yaWdpbj1BcnJheS5mcm9tKGUub3JpZ2luKSxyLnNwYWNpbmc9QXJyYXkuZnJvbShlLnNwYWNpbmcpLHIuZGlyZWN0aW9uPWUuZGlyZWN0aW9uLnNsaWNlKCksci5zaXplPUFycmF5LmZyb20oZS5zaXplKSxyLm1ldGFkYXRhPW5ldyBNYXAoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKGUubWV0YWRhdGEpKSkpLGUuZGF0YSE9PW51bGwpaWYodHlwZW9mIEE8InUiJiZ0eXBlb2YgQS5jb21wb25lbnRUeXBlPCJ1IiYmQS5jb21wb25lbnRUeXBlIT09ZS5pbWFnZVR5cGUuY29tcG9uZW50VHlwZSlzd2l0Y2goZS5pbWFnZVR5cGUuY29tcG9uZW50VHlwZSl7Y2FzZSBoLlVJbnQ4OmNhc2UgaC5JbnQ4OmNhc2UgaC5VSW50MTY6Y2FzZSBoLkludDE2OmNhc2UgaC5VSW50MzI6Y2FzZSBoLkludDMyOmNhc2UgYi5GbG9hdDMyOmNhc2UgYi5GbG9hdDY0OnN3aXRjaChyLmltYWdlVHlwZS5jb21wb25lbnRUeXBlKXtjYXNlIGguVUludDg6ci5kYXRhPW5ldyBVaW50OEFycmF5KGUuZGF0YSk7YnJlYWs7Y2FzZSBoLkludDg6ci5kYXRhPW5ldyBJbnQ4QXJyYXkoZS5kYXRhKTticmVhaztjYXNlIGguVUludDE2OnIuZGF0YT1uZXcgVWludDE2QXJyYXkoZS5kYXRhKTticmVhaztjYXNlIGguSW50MTY6ci5kYXRhPW5ldyBJbnQxNkFycmF5KGUuZGF0YSk7YnJlYWs7Y2FzZSBoLlVJbnQzMjpyLmRhdGE9bmV3IFVpbnQzMkFycmF5KGUuZGF0YSk7YnJlYWs7Y2FzZSBoLkludDMyOnIuZGF0YT1uZXcgSW50MzJBcnJheShlLmRhdGEpO2JyZWFrO2Nhc2UgYi5GbG9hdDMyOnIuZGF0YT1uZXcgRmxvYXQzMkFycmF5KGUuZGF0YSk7YnJlYWs7Y2FzZSBiLkZsb2F0NjQ6ci5kYXRhPW5ldyBGbG9hdDY0QXJyYXkoZS5kYXRhKTticmVhaztjYXNlIGguVUludDY0OnIuZGF0YT1uZXcgQmlnVWludDY0QXJyYXkoZS5kYXRhLmxlbmd0aCk7Zm9yKGxldCBvPTA7bzxyLmRhdGEubGVuZ3RoO28rKylyLmRhdGFbb109QmlnSW50LmFzSW50Tig2NCxCaWdJbnQoZS5kYXRhW29dKSk7YnJlYWs7Y2FzZSBoLkludDY0OnIuZGF0YT1uZXcgQmlnSW50NjRBcnJheShlLmRhdGEubGVuZ3RoKTtmb3IobGV0IG89MDtvPHIuZGF0YS5sZW5ndGg7bysrKXIuZGF0YVtvXT1CaWdJbnQuYXNVaW50Tig2NCxCaWdJbnQoZS5kYXRhW29dKSk7YnJlYWt9YnJlYWs7Y2FzZSBoLlVJbnQ2NDpjYXNlIGguSW50NjQ6c3dpdGNoKHIuaW1hZ2VUeXBlLmNvbXBvbmVudFR5cGUpe2Nhc2UgaC5VSW50ODpyLmRhdGE9bmV3IFVpbnQ4QXJyYXkoZS5kYXRhLmxlbmd0aCk7Zm9yKGxldCBvPTA7bzxyLmRhdGEubGVuZ3RoO28rKylyLmRhdGFbb109TnVtYmVyKGUuZGF0YVtvXSk7YnJlYWs7Y2FzZSBoLkludDg6ci5kYXRhPW5ldyBJbnQ4QXJyYXkoZS5kYXRhLmxlbmd0aCk7Zm9yKGxldCBvPTA7bzxyLmRhdGEubGVuZ3RoO28rKylyLmRhdGFbb109TnVtYmVyKGUuZGF0YVtvXSk7YnJlYWs7Y2FzZSBoLlVJbnQxNjpyLmRhdGE9bmV3IFVpbnQxNkFycmF5KGUuZGF0YS5sZW5ndGgpO2ZvcihsZXQgbz0wO288ci5kYXRhLmxlbmd0aDtvKyspci5kYXRhW29dPU51bWJlcihlLmRhdGFbb10pO2JyZWFrO2Nhc2UgaC5JbnQxNjpyLmRhdGE9bmV3IEludDE2QXJyYXkoZS5kYXRhLmxlbmd0aCk7Zm9yKGxldCBvPTA7bzxyLmRhdGEubGVuZ3RoO28rKylyLmRhdGFbb109TnVtYmVyKGUuZGF0YVtvXSk7YnJlYWs7Y2FzZSBoLlVJbnQzMjpyLmRhdGE9bmV3IFVpbnQzMkFycmF5KGUuZGF0YS5sZW5ndGgpO2ZvcihsZXQgbz0wO288ci5kYXRhLmxlbmd0aDtvKyspci5kYXRhW29dPU51bWJlcihlLmRhdGFbb10pO2JyZWFrO2Nhc2UgaC5JbnQzMjpyLmRhdGE9bmV3IEludDMyQXJyYXkoZS5kYXRhLmxlbmd0aCk7Zm9yKGxldCBvPTA7bzxyLmRhdGEubGVuZ3RoO28rKylyLmRhdGFbb109TnVtYmVyKGUuZGF0YVtvXSk7YnJlYWs7Y2FzZSBiLkZsb2F0MzI6ci5kYXRhPW5ldyBGbG9hdDMyQXJyYXkoZS5kYXRhLmxlbmd0aCk7Zm9yKGxldCBvPTA7bzxyLmRhdGEubGVuZ3RoO28rKylyLmRhdGFbb109TnVtYmVyKGUuZGF0YVtvXSk7YnJlYWs7Y2FzZSBiLkZsb2F0NjQ6ci5kYXRhPW5ldyBGbG9hdDY0QXJyYXkoZS5kYXRhLmxlbmd0aCk7Zm9yKGxldCBvPTA7bzxyLmRhdGEubGVuZ3RoO28rKylyLmRhdGFbb109TnVtYmVyKGUuZGF0YVtvXSk7YnJlYWs7Y2FzZSBoLlVJbnQ2NDpyLmRhdGE9bmV3IEJpZ1VpbnQ2NEFycmF5KGUuZGF0YSk7YnJlYWs7Y2FzZSBoLkludDY0OnIuZGF0YT1uZXcgQmlnSW50NjRBcnJheShlLmRhdGEpO2JyZWFrfWJyZWFrfWVsc2V7bGV0IG89ZS5kYXRhLmNvbnN0cnVjdG9yO3IuZGF0YT1uZXcgbyhlLmRhdGEubGVuZ3RoKSxyLmRhdGEhPW51bGwmJnIuZGF0YS5zZXQoZS5kYXRhLDApfXJldHVybiByfXZhciBKPU5yO3ZhciBKZT1jbGFzc3tmY247d29ya2VyUXVldWU7cnVuSW5mbztjb25zdHJ1Y3RvcihBLHQpe3RoaXMuZmNuPXQsdGhpcy53b3JrZXJRdWV1ZT1uZXcgQXJyYXkoQSksdGhpcy53b3JrZXJRdWV1ZS5maWxsKG51bGwpLHRoaXMucnVuSW5mbz1bXX1ydW5UYXNrcyhBLHQ9bnVsbCl7bGV0IHI9e3Rhc2tRdWV1ZTpbXSxyZXN1bHRzOltdLGFkZGluZ1Rhc2tzOiExLHBvc3Rwb25lZDohMSxydW5uaW5nV29ya2VyczowLGluZGV4OjAsY29tcGxldGVkVGFza3M6MCxwcm9ncmVzc0NhbGxiYWNrOnQsY2FuY2VsZWQ6ITF9O3JldHVybiB0aGlzLnJ1bkluZm8ucHVzaChyKSxyLmluZGV4PXRoaXMucnVuSW5mby5sZW5ndGgtMSx7cHJvbWlzZTpuZXcgUHJvbWlzZSgobyxpKT0+e3IucmVzb2x2ZT1vLHIucmVqZWN0PWksci5yZXN1bHRzPW5ldyBBcnJheShBLmxlbmd0aCksci5jb21wbGV0ZWRUYXNrcz0wLHIuYWRkaW5nVGFza3M9ITAsQS5mb3JFYWNoKChuLGcpPT57dGhpcy5hZGRUYXNrKHIuaW5kZXgsZyxuKX0pLHIuYWRkaW5nVGFza3M9ITF9KSxydW5JZDpyLmluZGV4fX10ZXJtaW5hdGVXb3JrZXJzKCl7Zm9yKGxldCBBPTA7QTx0aGlzLndvcmtlclF1ZXVlLmxlbmd0aDtBKyspe2xldCB0PXRoaXMud29ya2VyUXVldWVbQV07dD8udGVybWluYXRlKCksdGhpcy53b3JrZXJRdWV1ZVtBXT1udWxsfX1jYW5jZWwoQSl7bGV0IHQ9dGhpcy5ydW5JbmZvW0FdO3QhPW51bGwmJih0LmNhbmNlbGVkPSEwKX1hZGRUYXNrKEEsdCxyKXtsZXQgbz10aGlzLnJ1bkluZm9bQV07aWYobz8uY2FuY2VsZWQ9PT0hMCl7by5yZWplY3QoIlJlbWFpbmluZyB0YXNrcyBjYW5jZWxlZCIpLHRoaXMuY2xlYXJUYXNrKG8uaW5kZXgpO3JldHVybn1pZih0aGlzLndvcmtlclF1ZXVlLmxlbmd0aD4wKXtsZXQgaT10aGlzLndvcmtlclF1ZXVlLnBvcCgpO28ucnVubmluZ1dvcmtlcnMrKyxyW3IubGVuZ3RoLTFdLndlYldvcmtlcj1pLHRoaXMuZmNuKC4uLnIpLnRoZW4oKHt3ZWJXb3JrZXI6biwuLi5nfSk9PntpZih0aGlzLndvcmtlclF1ZXVlLnB1c2gobiksdGhpcy5ydW5JbmZvW0FdIT09bnVsbCl7aWYoby5ydW5uaW5nV29ya2Vycy0tLG8ucmVzdWx0c1t0XT1nLG8uY29tcGxldGVkVGFza3MrKyxvLnByb2dyZXNzQ2FsbGJhY2shPW51bGwmJm8ucHJvZ3Jlc3NDYWxsYmFjayhvLmNvbXBsZXRlZFRhc2tzLG8ucmVzdWx0cy5sZW5ndGgpLG8udGFza1F1ZXVlLmxlbmd0aD4wKXtsZXQgZj1vLnRhc2tRdWV1ZS5zaGlmdCgpO3RoaXMuYWRkVGFzayhBLGZbMF0sZlsxXSl9ZWxzZSBpZighby5hZGRpbmdUYXNrcyYmby5ydW5uaW5nV29ya2Vycz09PTApe2xldCBmPW8ucmVzdWx0cztvLnJlc29sdmUoZiksdGhpcy5jbGVhclRhc2soby5pbmRleCl9fX0pLmNhdGNoKG49PntvLnJlamVjdChuKSx0aGlzLmNsZWFyVGFzayhvLmluZGV4KX0pfWVsc2Ugby5ydW5uaW5nV29ya2VycyE9PTB8fG8ucG9zdHBvbmVkP28udGFza1F1ZXVlLnB1c2goW3Qscl0pOihvLnBvc3Rwb25lZD0hMCxzZXRUaW1lb3V0KCgpPT57by5wb3N0cG9uZWQ9ITEsdGhpcy5hZGRUYXNrKG8uaW5kZXgsdCxyKX0sNTApKX1jbGVhclRhc2soQSl7dGhpcy5ydW5JbmZvW0FdLnJlc3VsdHM9W10sdGhpcy5ydW5JbmZvW0FdLnRhc2tRdWV1ZT1bXSx0aGlzLnJ1bkluZm9bQV0ucHJvZ3Jlc3NDYWxsYmFjaz1udWxsLHRoaXMucnVuSW5mb1tBXS5jYW5jZWxlZD1udWxsLHRoaXMucnVuSW5mb1tBXS5yZWplY3Q9KCk9Pnt9LHRoaXMucnVuSW5mb1tBXS5yZXNvbHZlPSgpPT57fX19LExlPUplO3ZhciBQcj17VGV4dEZpbGU6IlRleHRGaWxlIixCaW5hcnlGaWxlOiJCaW5hcnlGaWxlIixUZXh0U3RyZWFtOiJUZXh0U3RyZWFtIixCaW5hcnlTdHJlYW06IkJpbmFyeVN0cmVhbSIsSW1hZ2U6IkltYWdlIixNZXNoOiJNZXNoIixQb2x5RGF0YToiUG9seURhdGEiLEpzb25Db21wYXRpYmxlOiJKc29uQ29tcGF0aWJsZSJ9LGw9UHI7dmFyIHB0PVN5bWJvbCgiQ29tbGluay5wcm94eSIpLHhyPVN5bWJvbCgiQ29tbGluay5lbmRwb2ludCIpLFllPVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSxNZT1TeW1ib2woIkNvbWxpbmsuZmluYWxpemVyIiksZmU9U3ltYm9sKCJDb21saW5rLnRocm93biIpLG10PWU9PnR5cGVvZiBlPT0ib2JqZWN0IiYmZSE9PW51bGx8fHR5cGVvZiBlPT0iZnVuY3Rpb24iLEdyPXtjYW5IYW5kbGU6ZT0+bXQoZSkmJmVbcHRdLHNlcmlhbGl6ZShlKXtsZXR7cG9ydDE6QSxwb3J0Mjp0fT1uZXcgTWVzc2FnZUNoYW5uZWw7cmV0dXJuIGZ0KGUsQSksW3QsW3RdXX0sZGVzZXJpYWxpemUoZSl7cmV0dXJuIGUuc3RhcnQoKSxxZShlKX19LFRyPXtjYW5IYW5kbGU6ZT0+bXQoZSkmJmZlIGluIGUsc2VyaWFsaXplKHt2YWx1ZTplfSl7bGV0IEE7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvcj9BPXtpc0Vycm9yOiEwLHZhbHVlOnttZXNzYWdlOmUubWVzc2FnZSxuYW1lOmUubmFtZSxzdGFjazplLnN0YWNrfX06QT17aXNFcnJvcjohMSx2YWx1ZTplfSxbQSxbXV19LGRlc2VyaWFsaXplKGUpe3Rocm93IGUuaXNFcnJvcj9PYmplY3QuYXNzaWduKG5ldyBFcnJvcihlLnZhbHVlLm1lc3NhZ2UpLGUudmFsdWUpOmUudmFsdWV9fSx1dD1uZXcgTWFwKFtbInByb3h5IixHcl0sWyJ0aHJvdyIsVHJdXSk7ZnVuY3Rpb24gSnIoZSxBKXtmb3IobGV0IHQgb2YgZSlpZihBPT09dHx8dD09PSIqInx8dCBpbnN0YW5jZW9mIFJlZ0V4cCYmdC50ZXN0KEEpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGZ0KGUsQT1nbG9iYWxUaGlzLHQ9WyIqIl0pe0EuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gcihvKXtpZighb3x8IW8uZGF0YSlyZXR1cm47aWYoIUpyKHQsby5vcmlnaW4pKXtjb25zb2xlLndhcm4oYEludmFsaWQgb3JpZ2luICcke28ub3JpZ2lufScgZm9yIGNvbWxpbmsgcHJveHlgKTtyZXR1cm59bGV0e2lkOmksdHlwZTpuLHBhdGg6Z309T2JqZWN0LmFzc2lnbih7cGF0aDpbXX0sby5kYXRhKSxmPShvLmRhdGEuYXJndW1lbnRMaXN0fHxbXSkubWFwKHEpLG07dHJ5e2xldCBhPWcuc2xpY2UoMCwtMSkucmVkdWNlKCh1LEkpPT51W0ldLGUpLHM9Zy5yZWR1Y2UoKHUsSSk9PnVbSV0sZSk7c3dpdGNoKG4pe2Nhc2UiR0VUIjptPXM7YnJlYWs7Y2FzZSJTRVQiOmFbZy5zbGljZSgtMSlbMF1dPXEoby5kYXRhLnZhbHVlKSxtPSEwO2JyZWFrO2Nhc2UiQVBQTFkiOm09cy5hcHBseShhLGYpO2JyZWFrO2Nhc2UiQ09OU1RSVUNUIjp7bGV0IHU9bmV3IHMoLi4uZik7bT1xcih1KX1icmVhaztjYXNlIkVORFBPSU5UIjp7bGV0e3BvcnQxOnUscG9ydDI6SX09bmV3IE1lc3NhZ2VDaGFubmVsO2Z0KGUsSSksbT1LZSh1LFt1XSl9YnJlYWs7Y2FzZSJSRUxFQVNFIjptPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2goYSl7bT17dmFsdWU6YSxbZmVdOjB9fVByb21pc2UucmVzb2x2ZShtKS5jYXRjaChhPT4oe3ZhbHVlOmEsW2ZlXTowfSkpLnRoZW4oYT0+e2xldFtzLHVdPWRlKGEpO0EucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHMpLHtpZDppfSksdSksbj09PSJSRUxFQVNFIiYmKEEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsciksY3QoQSksTWUgaW4gZSYmdHlwZW9mIGVbTWVdPT0iZnVuY3Rpb24iJiZlW01lXSgpKX0pLmNhdGNoKGE9PntsZXRbcyx1XT1kZSh7dmFsdWU6bmV3IFR5cGVFcnJvcigiVW5zZXJpYWxpemFibGUgcmV0dXJuIHZhbHVlIiksW2ZlXTowfSk7QS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scykse2lkOml9KSx1KX0pfSksQS5zdGFydCYmQS5zdGFydCgpfWZ1bmN0aW9uIExyKGUpe3JldHVybiBlLmNvbnN0cnVjdG9yLm5hbWU9PT0iTWVzc2FnZVBvcnQifWZ1bmN0aW9uIGN0KGUpe0xyKGUpJiZlLmNsb3NlKCl9ZnVuY3Rpb24gcWUoZSxBKXtyZXR1cm4gSGUoZSxbXSxBKX1mdW5jdGlvbiB1ZShlKXtpZihlKXRocm93IG5ldyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIil9ZnVuY3Rpb24gQnQoZSl7cmV0dXJuIGooZSx7dHlwZToiUkVMRUFTRSJ9KS50aGVuKCgpPT57Y3QoZSl9KX12YXIgY2U9bmV3IFdlYWtNYXAsQmU9IkZpbmFsaXphdGlvblJlZ2lzdHJ5ImluIGdsb2JhbFRoaXMmJm5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShlPT57bGV0IEE9KGNlLmdldChlKXx8MCktMTtjZS5zZXQoZSxBKSxBPT09MCYmQnQoZSl9KTtmdW5jdGlvbiBNcihlLEEpe2xldCB0PShjZS5nZXQoQSl8fDApKzE7Y2Uuc2V0KEEsdCksQmUmJkJlLnJlZ2lzdGVyKGUsQSxlKX1mdW5jdGlvbiBIcihlKXtCZSYmQmUudW5yZWdpc3RlcihlKX1mdW5jdGlvbiBIZShlLEE9W10sdD1mdW5jdGlvbigpe30pe2xldCByPSExLG89bmV3IFByb3h5KHQse2dldChpLG4pe2lmKHVlKHIpLG49PT1ZZSlyZXR1cm4oKT0+e0hyKG8pLEJ0KGUpLHI9ITB9O2lmKG49PT0idGhlbiIpe2lmKEEubGVuZ3RoPT09MClyZXR1cm57dGhlbjooKT0+b307bGV0IGc9aihlLHt0eXBlOiJHRVQiLHBhdGg6QS5tYXAoZj0+Zi50b1N0cmluZygpKX0pLnRoZW4ocSk7cmV0dXJuIGcudGhlbi5iaW5kKGcpfXJldHVybiBIZShlLFsuLi5BLG5dKX0sc2V0KGksbixnKXt1ZShyKTtsZXRbZixtXT1kZShnKTtyZXR1cm4gaihlLHt0eXBlOiJTRVQiLHBhdGg6Wy4uLkEsbl0ubWFwKGE9PmEudG9TdHJpbmcoKSksdmFsdWU6Zn0sbSkudGhlbihxKX0sYXBwbHkoaSxuLGcpe3VlKHIpO2xldCBmPUFbQS5sZW5ndGgtMV07aWYoZj09PXhyKXJldHVybiBqKGUse3R5cGU6IkVORFBPSU5UIn0pLnRoZW4ocSk7aWYoZj09PSJiaW5kIilyZXR1cm4gSGUoZSxBLnNsaWNlKDAsLTEpKTtsZXRbbSxhXT1sdChnKTtyZXR1cm4gaihlLHt0eXBlOiJBUFBMWSIscGF0aDpBLm1hcChzPT5zLnRvU3RyaW5nKCkpLGFyZ3VtZW50TGlzdDptfSxhKS50aGVuKHEpfSxjb25zdHJ1Y3QoaSxuKXt1ZShyKTtsZXRbZyxmXT1sdChuKTtyZXR1cm4gaihlLHt0eXBlOiJDT05TVFJVQ1QiLHBhdGg6QS5tYXAobT0+bS50b1N0cmluZygpKSxhcmd1bWVudExpc3Q6Z30sZikudGhlbihxKX19KTtyZXR1cm4gTXIobyxlKSxvfWZ1bmN0aW9uIFlyKGUpe3JldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLGUpfWZ1bmN0aW9uIGx0KGUpe2xldCBBPWUubWFwKGRlKTtyZXR1cm5bQS5tYXAodD0+dFswXSksWXIoQS5tYXAodD0+dFsxXSkpXX12YXIgZHQ9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gS2UoZSxBKXtyZXR1cm4gZHQuc2V0KGUsQSksZX1mdW5jdGlvbiBxcihlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihlLHtbcHRdOiEwfSl9ZnVuY3Rpb24gZGUoZSl7Zm9yKGxldFtBLHRdb2YgdXQpaWYodC5jYW5IYW5kbGUoZSkpe2xldFtyLG9dPXQuc2VyaWFsaXplKGUpO3JldHVyblt7dHlwZToiSEFORExFUiIsbmFtZTpBLHZhbHVlOnJ9LG9dfXJldHVyblt7dHlwZToiUkFXIix2YWx1ZTplfSxkdC5nZXQoZSl8fFtdXX1mdW5jdGlvbiBxKGUpe3N3aXRjaChlLnR5cGUpe2Nhc2UiSEFORExFUiI6cmV0dXJuIHV0LmdldChlLm5hbWUpLmRlc2VyaWFsaXplKGUudmFsdWUpO2Nhc2UiUkFXIjpyZXR1cm4gZS52YWx1ZX19ZnVuY3Rpb24gaihlLEEsdCl7cmV0dXJuIG5ldyBQcm9taXNlKHI9PntsZXQgbz1LcigpO2UuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gaShuKXshbi5kYXRhfHwhbi5kYXRhLmlkfHxuLmRhdGEuaWQhPT1vfHwoZS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixpKSxyKG4uZGF0YSkpfSksZS5zdGFydCYmZS5zdGFydCgpLGUucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbih7aWQ6b30sQSksdCl9KX1mdW5jdGlvbiBLcigpe3JldHVybiBuZXcgQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCk9Pk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKS5qb2luKCItIil9ZnVuY3Rpb24gcmUoZSxBKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseShBLGFyZ3VtZW50cyl9fXZhcnt0b1N0cmluZzpqcn09T2JqZWN0LnByb3RvdHlwZSx7Z2V0UHJvdG90eXBlT2Y6emV9PU9iamVjdCxFZT0oZT0+QT0+e2xldCB0PWpyLmNhbGwoQSk7cmV0dXJuIGVbdF18fChlW3RdPXQuc2xpY2UoOCwtMSkudG9Mb3dlckNhc2UoKSl9KShPYmplY3QuY3JlYXRlKG51bGwpKSx4PWU9PihlPWUudG9Mb3dlckNhc2UoKSxBPT5FZShBKT09PWUpLHllPWU9PkE9PnR5cGVvZiBBPT09ZSx7aXNBcnJheTp2fT1BcnJheSxpZT15ZSgidW5kZWZpbmVkIik7ZnVuY3Rpb24gdnIoZSl7cmV0dXJuIGUhPT1udWxsJiYhaWUoZSkmJmUuY29uc3RydWN0b3IhPT1udWxsJiYhaWUoZS5jb25zdHJ1Y3RvcikmJk8oZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcikmJmUuY29uc3RydWN0b3IuaXNCdWZmZXIoZSl9dmFyIFF0PXgoIkFycmF5QnVmZmVyIik7ZnVuY3Rpb24genIoZSl7bGV0IEE7cmV0dXJuIHR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJkFycmF5QnVmZmVyLmlzVmlldz9BPUFycmF5QnVmZmVyLmlzVmlldyhlKTpBPWUmJmUuYnVmZmVyJiZRdChlLmJ1ZmZlciksQX12YXIgVnI9eWUoInN0cmluZyIpLE89eWUoImZ1bmN0aW9uIiksaHQ9eWUoIm51bWJlciIpLFFlPWU9PmUhPT1udWxsJiZ0eXBlb2YgZT09Im9iamVjdCIsX3I9ZT0+ZT09PSEwfHxlPT09ITEsQ2U9ZT0+e2lmKEVlKGUpIT09Im9iamVjdCIpcmV0dXJuITE7bGV0IEE9emUoZSk7cmV0dXJuKEE9PT1udWxsfHxBPT09T2JqZWN0LnByb3RvdHlwZXx8T2JqZWN0LmdldFByb3RvdHlwZU9mKEEpPT09bnVsbCkmJiEoU3ltYm9sLnRvU3RyaW5nVGFnIGluIGUpJiYhKFN5bWJvbC5pdGVyYXRvciBpbiBlKX0sWnI9eCgiRGF0ZSIpLFhyPXgoIkZpbGUiKSwkcj14KCJCbG9iIiksZWk9eCgiRmlsZUxpc3QiKSxBaT1lPT5RZShlKSYmTyhlLnBpcGUpLHRpPWU9PntsZXQgQTtyZXR1cm4gZSYmKHR5cGVvZiBGb3JtRGF0YT09ImZ1bmN0aW9uIiYmZSBpbnN0YW5jZW9mIEZvcm1EYXRhfHxPKGUuYXBwZW5kKSYmKChBPUVlKGUpKT09PSJmb3JtZGF0YSJ8fEE9PT0ib2JqZWN0IiYmTyhlLnRvU3RyaW5nKSYmZS50b1N0cmluZygpPT09IltvYmplY3QgRm9ybURhdGFdIikpfSxyaT14KCJVUkxTZWFyY2hQYXJhbXMiKSxpaT1lPT5lLnRyaW0/ZS50cmltKCk6ZS5yZXBsYWNlKC9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQvZywiIik7ZnVuY3Rpb24gb2UoZSxBLHthbGxPd25LZXlzOnQ9ITF9PXt9KXtpZihlPT09bnVsbHx8dHlwZW9mIGU+InUiKXJldHVybjtsZXQgcixvO2lmKHR5cGVvZiBlIT0ib2JqZWN0IiYmKGU9W2VdKSx2KGUpKWZvcihyPTAsbz1lLmxlbmd0aDtyPG87cisrKUEuY2FsbChudWxsLGVbcl0scixlKTtlbHNle2xldCBpPXQ/T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSk6T2JqZWN0LmtleXMoZSksbj1pLmxlbmd0aCxnO2ZvcihyPTA7cjxuO3IrKylnPWlbcl0sQS5jYWxsKG51bGwsZVtnXSxnLGUpfX1mdW5jdGlvbiB3dChlLEEpe0E9QS50b0xvd2VyQ2FzZSgpO2xldCB0PU9iamVjdC5rZXlzKGUpLHI9dC5sZW5ndGgsbztmb3IoO3ItLSA+MDspaWYobz10W3JdLEE9PT1vLnRvTG93ZXJDYXNlKCkpcmV0dXJuIG87cmV0dXJuIG51bGx9dmFyIFJ0PXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzpnbG9iYWwsa3Q9ZT0+IWllKGUpJiZlIT09UnQ7ZnVuY3Rpb24gdmUoKXtsZXR7Y2FzZWxlc3M6ZX09a3QodGhpcykmJnRoaXN8fHt9LEE9e30sdD0ocixvKT0+e2xldCBpPWUmJnd0KEEsbyl8fG87Q2UoQVtpXSkmJkNlKHIpP0FbaV09dmUoQVtpXSxyKTpDZShyKT9BW2ldPXZlKHt9LHIpOnYocik/QVtpXT1yLnNsaWNlKCk6QVtpXT1yfTtmb3IobGV0IHI9MCxvPWFyZ3VtZW50cy5sZW5ndGg7cjxvO3IrKylhcmd1bWVudHNbcl0mJm9lKGFyZ3VtZW50c1tyXSx0KTtyZXR1cm4gQX12YXIgb2k9KGUsQSx0LHthbGxPd25LZXlzOnJ9PXt9KT0+KG9lKEEsKG8saSk9Pnt0JiZPKG8pP2VbaV09cmUobyx0KTplW2ldPW99LHthbGxPd25LZXlzOnJ9KSxlKSxhaT1lPT4oZS5jaGFyQ29kZUF0KDApPT09NjUyNzkmJihlPWUuc2xpY2UoMSkpLGUpLG5pPShlLEEsdCxyKT0+e2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoQS5wcm90b3R5cGUsciksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwic3VwZXIiLHt2YWx1ZTpBLnByb3RvdHlwZX0pLHQmJk9iamVjdC5hc3NpZ24oZS5wcm90b3R5cGUsdCl9LHNpPShlLEEsdCxyKT0+e2xldCBvLGksbixnPXt9O2lmKEE9QXx8e30sZT09bnVsbClyZXR1cm4gQTtkb3tmb3Iobz1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKSxpPW8ubGVuZ3RoO2ktLSA+MDspbj1vW2ldLCghcnx8cihuLGUsQSkpJiYhZ1tuXSYmKEFbbl09ZVtuXSxnW25dPSEwKTtlPXQhPT0hMSYmemUoZSl9d2hpbGUoZSYmKCF0fHx0KGUsQSkpJiZlIT09T2JqZWN0LnByb3RvdHlwZSk7cmV0dXJuIEF9LElpPShlLEEsdCk9PntlPVN0cmluZyhlKSwodD09PXZvaWQgMHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKSx0LT1BLmxlbmd0aDtsZXQgcj1lLmluZGV4T2YoQSx0KTtyZXR1cm4gciE9PS0xJiZyPT09dH0sZ2k9ZT0+e2lmKCFlKXJldHVybiBudWxsO2lmKHYoZSkpcmV0dXJuIGU7bGV0IEE9ZS5sZW5ndGg7aWYoIWh0KEEpKXJldHVybiBudWxsO2xldCB0PW5ldyBBcnJheShBKTtmb3IoO0EtLSA+MDspdFtBXT1lW0FdO3JldHVybiB0fSxsaT0oZT0+QT0+ZSYmQSBpbnN0YW5jZW9mIGUpKHR5cGVvZiBVaW50OEFycmF5PCJ1IiYmemUoVWludDhBcnJheSkpLHBpPShlLEEpPT57bGV0IHI9KGUmJmVbU3ltYm9sLml0ZXJhdG9yXSkuY2FsbChlKSxvO2Zvcig7KG89ci5uZXh0KCkpJiYhby5kb25lOyl7bGV0IGk9by52YWx1ZTtBLmNhbGwoZSxpWzBdLGlbMV0pfX0sbWk9KGUsQSk9PntsZXQgdCxyPVtdO2Zvcig7KHQ9ZS5leGVjKEEpKSE9PW51bGw7KXIucHVzaCh0KTtyZXR1cm4gcn0sdWk9eCgiSFRNTEZvcm1FbGVtZW50IiksZmk9ZT0+ZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1stX1xzXShbYS16XGRdKShcdyopL2csZnVuY3Rpb24odCxyLG8pe3JldHVybiByLnRvVXBwZXJDYXNlKCkrb30pLEV0PSgoe2hhc093blByb3BlcnR5OmV9KT0+KEEsdCk9PmUuY2FsbChBLHQpKShPYmplY3QucHJvdG90eXBlKSxjaT14KCJSZWdFeHAiKSxidD0oZSxBKT0+e2xldCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGUpLHI9e307b2UodCwobyxpKT0+e2xldCBuOyhuPUEobyxpLGUpKSE9PSExJiYocltpXT1ufHxvKX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUscil9LEJpPWU9PntidChlLChBLHQpPT57aWYoTyhlKSYmWyJhcmd1bWVudHMiLCJjYWxsZXIiLCJjYWxsZWUiXS5pbmRleE9mKHQpIT09LTEpcmV0dXJuITE7bGV0IHI9ZVt0XTtpZihPKHIpKXtpZihBLmVudW1lcmFibGU9ITEsIndyaXRhYmxlImluIEEpe0Eud3JpdGFibGU9ITE7cmV0dXJufUEuc2V0fHwoQS5zZXQ9KCk9Pnt0aHJvdyBFcnJvcigiQ2FuIG5vdCByZXdyaXRlIHJlYWQtb25seSBtZXRob2QgJyIrdCsiJyIpfSl9fSl9LGRpPShlLEEpPT57bGV0IHQ9e30scj1vPT57by5mb3JFYWNoKGk9Pnt0W2ldPSEwfSl9O3JldHVybiB2KGUpP3IoZSk6cihTdHJpbmcoZSkuc3BsaXQoQSkpLHR9LENpPSgpPT57fSxFaT0oZSxBKT0+KGU9K2UsTnVtYmVyLmlzRmluaXRlKGUpP2U6QSksamU9ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Iix5dD0iMDEyMzQ1Njc4OSIsRHQ9e0RJR0lUOnl0LEFMUEhBOmplLEFMUEhBX0RJR0lUOmplK2plLnRvVXBwZXJDYXNlKCkreXR9LHlpPShlPTE2LEE9RHQuQUxQSEFfRElHSVQpPT57bGV0IHQ9IiIse2xlbmd0aDpyfT1BO2Zvcig7ZS0tOyl0Kz1BW01hdGgucmFuZG9tKCkqcnwwXTtyZXR1cm4gdH07ZnVuY3Rpb24gUWkoZSl7cmV0dXJuISEoZSYmTyhlLmFwcGVuZCkmJmVbU3ltYm9sLnRvU3RyaW5nVGFnXT09PSJGb3JtRGF0YSImJmVbU3ltYm9sLml0ZXJhdG9yXSl9dmFyIGhpPWU9PntsZXQgQT1uZXcgQXJyYXkoMTApLHQ9KHIsbyk9PntpZihRZShyKSl7aWYoQS5pbmRleE9mKHIpPj0wKXJldHVybjtpZighKCJ0b0pTT04iaW4gcikpe0Fbb109cjtsZXQgaT12KHIpP1tdOnt9O3JldHVybiBvZShyLChuLGcpPT57bGV0IGY9dChuLG8rMSk7IWllKGYpJiYoaVtnXT1mKX0pLEFbb109dm9pZCAwLGl9fXJldHVybiByfTtyZXR1cm4gdChlLDApfSx3aT14KCJBc3luY0Z1bmN0aW9uIiksUmk9ZT0+ZSYmKFFlKGUpfHxPKGUpKSYmTyhlLnRoZW4pJiZPKGUuY2F0Y2gpLGM9e2lzQXJyYXk6dixpc0FycmF5QnVmZmVyOlF0LGlzQnVmZmVyOnZyLGlzRm9ybURhdGE6dGksaXNBcnJheUJ1ZmZlclZpZXc6enIsaXNTdHJpbmc6VnIsaXNOdW1iZXI6aHQsaXNCb29sZWFuOl9yLGlzT2JqZWN0OlFlLGlzUGxhaW5PYmplY3Q6Q2UsaXNVbmRlZmluZWQ6aWUsaXNEYXRlOlpyLGlzRmlsZTpYcixpc0Jsb2I6JHIsaXNSZWdFeHA6Y2ksaXNGdW5jdGlvbjpPLGlzU3RyZWFtOkFpLGlzVVJMU2VhcmNoUGFyYW1zOnJpLGlzVHlwZWRBcnJheTpsaSxpc0ZpbGVMaXN0OmVpLGZvckVhY2g6b2UsbWVyZ2U6dmUsZXh0ZW5kOm9pLHRyaW06aWksc3RyaXBCT006YWksaW5oZXJpdHM6bmksdG9GbGF0T2JqZWN0OnNpLGtpbmRPZjpFZSxraW5kT2ZUZXN0OngsZW5kc1dpdGg6SWksdG9BcnJheTpnaSxmb3JFYWNoRW50cnk6cGksbWF0Y2hBbGw6bWksaXNIVE1MRm9ybTp1aSxoYXNPd25Qcm9wZXJ0eTpFdCxoYXNPd25Qcm9wOkV0LHJlZHVjZURlc2NyaXB0b3JzOmJ0LGZyZWV6ZU1ldGhvZHM6QmksdG9PYmplY3RTZXQ6ZGksdG9DYW1lbENhc2U6Zmksbm9vcDpDaSx0b0Zpbml0ZU51bWJlcjpFaSxmaW5kS2V5Ond0LGdsb2JhbDpSdCxpc0NvbnRleHREZWZpbmVkOmt0LEFMUEhBQkVUOkR0LGdlbmVyYXRlU3RyaW5nOnlpLGlzU3BlY0NvbXBsaWFudEZvcm06UWksdG9KU09OT2JqZWN0OmhpLGlzQXN5bmNGbjp3aSxpc1RoZW5hYmxlOlJpfTtmdW5jdGlvbiB6KGUsQSx0LHIsbyl7RXJyb3IuY2FsbCh0aGlzKSxFcnJvci5jYXB0dXJlU3RhY2tUcmFjZT9FcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLHRoaXMuY29uc3RydWN0b3IpOnRoaXMuc3RhY2s9bmV3IEVycm9yKCkuc3RhY2ssdGhpcy5tZXNzYWdlPWUsdGhpcy5uYW1lPSJBeGlvc0Vycm9yIixBJiYodGhpcy5jb2RlPUEpLHQmJih0aGlzLmNvbmZpZz10KSxyJiYodGhpcy5yZXF1ZXN0PXIpLG8mJih0aGlzLnJlc3BvbnNlPW8pfWMuaW5oZXJpdHMoeixFcnJvcix7dG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOmMudG9KU09OT2JqZWN0KHRoaXMuY29uZmlnKSxjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5yZXNwb25zZSYmdGhpcy5yZXNwb25zZS5zdGF0dXM/dGhpcy5yZXNwb25zZS5zdGF0dXM6bnVsbH19fSk7dmFyIFd0PXoucHJvdG90eXBlLEZ0PXt9O1siRVJSX0JBRF9PUFRJT05fVkFMVUUiLCJFUlJfQkFEX09QVElPTiIsIkVDT05OQUJPUlRFRCIsIkVUSU1FRE9VVCIsIkVSUl9ORVRXT1JLIiwiRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUyIsIkVSUl9ERVBSRUNBVEVEIiwiRVJSX0JBRF9SRVNQT05TRSIsIkVSUl9CQURfUkVRVUVTVCIsIkVSUl9DQU5DRUxFRCIsIkVSUl9OT1RfU1VQUE9SVCIsIkVSUl9JTlZBTElEX1VSTCJdLmZvckVhY2goZT0+e0Z0W2VdPXt2YWx1ZTplfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHosRnQpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShXdCwiaXNBeGlvc0Vycm9yIix7dmFsdWU6ITB9KTt6LmZyb209KGUsQSx0LHIsbyxpKT0+e2xldCBuPU9iamVjdC5jcmVhdGUoV3QpO3JldHVybiBjLnRvRmxhdE9iamVjdChlLG4sZnVuY3Rpb24oZil7cmV0dXJuIGYhPT1FcnJvci5wcm90b3R5cGV9LGc9PmchPT0iaXNBeGlvc0Vycm9yIiksei5jYWxsKG4sZS5tZXNzYWdlLEEsdCxyLG8pLG4uY2F1c2U9ZSxuLm5hbWU9ZS5uYW1lLGkmJk9iamVjdC5hc3NpZ24obixpKSxufTt2YXIgdz16O3ZhciBoZT1udWxsO2Z1bmN0aW9uIFZlKGUpe3JldHVybiBjLmlzUGxhaW5PYmplY3QoZSl8fGMuaXNBcnJheShlKX1mdW5jdGlvbiBTdChlKXtyZXR1cm4gYy5lbmRzV2l0aChlLCJbXSIpP2Uuc2xpY2UoMCwtMik6ZX1mdW5jdGlvbiBVdChlLEEsdCl7cmV0dXJuIGU/ZS5jb25jYXQoQSkubWFwKGZ1bmN0aW9uKG8saSl7cmV0dXJuIG89U3QobyksIXQmJmk/IlsiK28rIl0iOm99KS5qb2luKHQ/Ii4iOiIiKTpBfWZ1bmN0aW9uIGtpKGUpe3JldHVybiBjLmlzQXJyYXkoZSkmJiFlLnNvbWUoVmUpfXZhciBiaT1jLnRvRmxhdE9iamVjdChjLHt9LG51bGwsZnVuY3Rpb24oQSl7cmV0dXJuL15pc1tBLVpdLy50ZXN0KEEpfSk7ZnVuY3Rpb24gRGkoZSxBLHQpe2lmKCFjLmlzT2JqZWN0KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoInRhcmdldCBtdXN0IGJlIGFuIG9iamVjdCIpO0E9QXx8bmV3KGhlfHxGb3JtRGF0YSksdD1jLnRvRmxhdE9iamVjdCh0LHttZXRhVG9rZW5zOiEwLGRvdHM6ITEsaW5kZXhlczohMX0sITEsZnVuY3Rpb24oQixRKXtyZXR1cm4hYy5pc1VuZGVmaW5lZChRW0JdKX0pO2xldCByPXQubWV0YVRva2VucyxvPXQudmlzaXRvcnx8YSxpPXQuZG90cyxuPXQuaW5kZXhlcyxmPSh0LkJsb2J8fHR5cGVvZiBCbG9iPCJ1IiYmQmxvYikmJmMuaXNTcGVjQ29tcGxpYW50Rm9ybShBKTtpZighYy5pc0Z1bmN0aW9uKG8pKXRocm93IG5ldyBUeXBlRXJyb3IoInZpc2l0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uIik7ZnVuY3Rpb24gbShwKXtpZihwPT09bnVsbClyZXR1cm4iIjtpZihjLmlzRGF0ZShwKSlyZXR1cm4gcC50b0lTT1N0cmluZygpO2lmKCFmJiZjLmlzQmxvYihwKSl0aHJvdyBuZXcgdygiQmxvYiBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgYSBCdWZmZXIgaW5zdGVhZC4iKTtyZXR1cm4gYy5pc0FycmF5QnVmZmVyKHApfHxjLmlzVHlwZWRBcnJheShwKT9mJiZ0eXBlb2YgQmxvYj09ImZ1bmN0aW9uIj9uZXcgQmxvYihbcF0pOkJ1ZmZlci5mcm9tKHApOnB9ZnVuY3Rpb24gYShwLEIsUSl7bGV0IFI9cDtpZihwJiYhUSYmdHlwZW9mIHA9PSJvYmplY3QiKXtpZihjLmVuZHNXaXRoKEIsInt9IikpQj1yP0I6Qi5zbGljZSgwLC0yKSxwPUpTT04uc3RyaW5naWZ5KHApO2Vsc2UgaWYoYy5pc0FycmF5KHApJiZraShwKXx8KGMuaXNGaWxlTGlzdChwKXx8Yy5lbmRzV2l0aChCLCJbXSIpKSYmKFI9Yy50b0FycmF5KHApKSlyZXR1cm4gQj1TdChCKSxSLmZvckVhY2goZnVuY3Rpb24oUCxRcil7IShjLmlzVW5kZWZpbmVkKFApfHxQPT09bnVsbCkmJkEuYXBwZW5kKG49PT0hMD9VdChbQl0sUXIsaSk6bj09PW51bGw/QjpCKyJbXSIsbShQKSl9KSwhMX1yZXR1cm4gVmUocCk/ITA6KEEuYXBwZW5kKFV0KFEsQixpKSxtKHApKSwhMSl9bGV0IHM9W10sdT1PYmplY3QuYXNzaWduKGJpLHtkZWZhdWx0VmlzaXRvcjphLGNvbnZlcnRWYWx1ZTptLGlzVmlzaXRhYmxlOlZlfSk7ZnVuY3Rpb24gSShwLEIpe2lmKCFjLmlzVW5kZWZpbmVkKHApKXtpZihzLmluZGV4T2YocCkhPT0tMSl0aHJvdyBFcnJvcigiQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGluICIrQi5qb2luKCIuIikpO3MucHVzaChwKSxjLmZvckVhY2gocCxmdW5jdGlvbihSLE4peyghKGMuaXNVbmRlZmluZWQoUil8fFI9PT1udWxsKSYmby5jYWxsKEEsUixjLmlzU3RyaW5nKE4pP04udHJpbSgpOk4sQix1KSk9PT0hMCYmSShSLEI/Qi5jb25jYXQoTik6W05dKX0pLHMucG9wKCl9fWlmKCFjLmlzT2JqZWN0KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoImRhdGEgbXVzdCBiZSBhbiBvYmplY3QiKTtyZXR1cm4gSShlKSxBfXZhciBMPURpO2Z1bmN0aW9uIE90KGUpe2xldCBBPXsiISI6IiUyMSIsIiciOiIlMjciLCIoIjoiJTI4IiwiKSI6IiUyOSIsIn4iOiIlN0UiLCIlMjAiOiIrIiwiJTAwIjoiXDAifTtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGUpLnJlcGxhY2UoL1shJygpfl18JTIwfCUwMC9nLGZ1bmN0aW9uKHIpe3JldHVybiBBW3JdfSl9ZnVuY3Rpb24gTnQoZSxBKXt0aGlzLl9wYWlycz1bXSxlJiZMKGUsdGhpcyxBKX12YXIgUHQ9TnQucHJvdG90eXBlO1B0LmFwcGVuZD1mdW5jdGlvbihBLHQpe3RoaXMuX3BhaXJzLnB1c2goW0EsdF0pfTtQdC50b1N0cmluZz1mdW5jdGlvbihBKXtsZXQgdD1BP2Z1bmN0aW9uKHIpe3JldHVybiBBLmNhbGwodGhpcyxyLE90KX06T3Q7cmV0dXJuIHRoaXMuX3BhaXJzLm1hcChmdW5jdGlvbihvKXtyZXR1cm4gdChvWzBdKSsiPSIrdChvWzFdKX0sIiIpLmpvaW4oIiYiKX07dmFyIHdlPU50O2Z1bmN0aW9uIFdpKGUpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoZSkucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2csIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjAvZywiKyIpLnJlcGxhY2UoLyU1Qi9naSwiWyIpLnJlcGxhY2UoLyU1RC9naSwiXSIpfWZ1bmN0aW9uIGFlKGUsQSx0KXtpZighQSlyZXR1cm4gZTtsZXQgcj10JiZ0LmVuY29kZXx8V2ksbz10JiZ0LnNlcmlhbGl6ZSxpO2lmKG8/aT1vKEEsdCk6aT1jLmlzVVJMU2VhcmNoUGFyYW1zKEEpP0EudG9TdHJpbmcoKTpuZXcgd2UoQSx0KS50b1N0cmluZyhyKSxpKXtsZXQgbj1lLmluZGV4T2YoIiMiKTtuIT09LTEmJihlPWUuc2xpY2UoMCxuKSksZSs9KGUuaW5kZXhPZigiPyIpPT09LTE/Ij8iOiImIikraX1yZXR1cm4gZX12YXIgX2U9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmhhbmRsZXJzPVtdfXVzZShBLHQscil7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOkEscmVqZWN0ZWQ6dCxzeW5jaHJvbm91czpyP3Iuc3luY2hyb25vdXM6ITEscnVuV2hlbjpyP3IucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX1lamVjdChBKXt0aGlzLmhhbmRsZXJzW0FdJiYodGhpcy5oYW5kbGVyc1tBXT1udWxsKX1jbGVhcigpe3RoaXMuaGFuZGxlcnMmJih0aGlzLmhhbmRsZXJzPVtdKX1mb3JFYWNoKEEpe2MuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLGZ1bmN0aW9uKHIpe3IhPT1udWxsJiZBKHIpfSl9fSxaZT1fZTt2YXIgUmU9e3NpbGVudEpTT05QYXJzaW5nOiEwLGZvcmNlZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9O3ZhciB4dD10eXBlb2YgVVJMU2VhcmNoUGFyYW1zPCJ1Ij9VUkxTZWFyY2hQYXJhbXM6d2U7dmFyIEd0PXR5cGVvZiBGb3JtRGF0YTwidSI/Rm9ybURhdGE6bnVsbDt2YXIgVHQ9dHlwZW9mIEJsb2I8InUiP0Jsb2I6bnVsbDt2YXIgSnQ9e2lzQnJvd3NlcjohMCxjbGFzc2VzOntVUkxTZWFyY2hQYXJhbXM6eHQsRm9ybURhdGE6R3QsQmxvYjpUdH0scHJvdG9jb2xzOlsiaHR0cCIsImh0dHBzIiwiZmlsZSIsImJsb2IiLCJ1cmwiLCJkYXRhIl19O3ZhciBYZT17fTt3cihYZSx7aGFzQnJvd3NlckVudjooKT0+THQsaGFzU3RhbmRhcmRCcm93c2VyRW52OigpPT5GaSxoYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnY6KCk9PlVpfSk7dmFyIEx0PXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2YgZG9jdW1lbnQ8InUiLEZpPShlPT5MdCYmWyJSZWFjdE5hdGl2ZSIsIk5hdGl2ZVNjcmlwdCIsIk5TIl0uaW5kZXhPZihlKTwwKSh0eXBlb2YgbmF2aWdhdG9yPCJ1IiYmbmF2aWdhdG9yLnByb2R1Y3QpLFVpPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZTwidSImJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSYmdHlwZW9mIHNlbGYuaW1wb3J0U2NyaXB0cz09ImZ1bmN0aW9uIjt2YXIgVz17Li4uWGUsLi4uSnR9O2Z1bmN0aW9uICRlKGUsQSl7cmV0dXJuIEwoZSxuZXcgVy5jbGFzc2VzLlVSTFNlYXJjaFBhcmFtcyxPYmplY3QuYXNzaWduKHt2aXNpdG9yOmZ1bmN0aW9uKHQscixvLGkpe3JldHVybiBXLmlzTm9kZSYmYy5pc0J1ZmZlcih0KT8odGhpcy5hcHBlbmQocix0LnRvU3RyaW5nKCJiYXNlNjQiKSksITEpOmkuZGVmYXVsdFZpc2l0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sQSkpfWZ1bmN0aW9uIFNpKGUpe3JldHVybiBjLm1hdGNoQWxsKC9cdyt8XFsoXHcqKV0vZyxlKS5tYXAoQT0+QVswXT09PSJbXSI/IiI6QVsxXXx8QVswXSl9ZnVuY3Rpb24gT2koZSl7bGV0IEE9e30sdD1PYmplY3Qua2V5cyhlKSxyLG89dC5sZW5ndGgsaTtmb3Iocj0wO3I8bztyKyspaT10W3JdLEFbaV09ZVtpXTtyZXR1cm4gQX1mdW5jdGlvbiBOaShlKXtmdW5jdGlvbiBBKHQscixvLGkpe2xldCBuPXRbaSsrXSxnPU51bWJlci5pc0Zpbml0ZSgrbiksZj1pPj10Lmxlbmd0aDtyZXR1cm4gbj0hbiYmYy5pc0FycmF5KG8pP28ubGVuZ3RoOm4sZj8oYy5oYXNPd25Qcm9wKG8sbik/b1tuXT1bb1tuXSxyXTpvW25dPXIsIWcpOigoIW9bbl18fCFjLmlzT2JqZWN0KG9bbl0pKSYmKG9bbl09W10pLEEodCxyLG9bbl0saSkmJmMuaXNBcnJheShvW25dKSYmKG9bbl09T2kob1tuXSkpLCFnKX1pZihjLmlzRm9ybURhdGEoZSkmJmMuaXNGdW5jdGlvbihlLmVudHJpZXMpKXtsZXQgdD17fTtyZXR1cm4gYy5mb3JFYWNoRW50cnkoZSwocixvKT0+e0EoU2kociksbyx0LDApfSksdH1yZXR1cm4gbnVsbH12YXIga2U9Tmk7ZnVuY3Rpb24gUGkoZSxBLHQpe2lmKGMuaXNTdHJpbmcoZSkpdHJ5e3JldHVybihBfHxKU09OLnBhcnNlKShlKSxjLnRyaW0oZSl9Y2F0Y2gocil7aWYoci5uYW1lIT09IlN5bnRheEVycm9yIil0aHJvdyByfXJldHVybih0fHxKU09OLnN0cmluZ2lmeSkoZSl9dmFyIGVBPXt0cmFuc2l0aW9uYWw6UmUsYWRhcHRlcjpbInhociIsImh0dHAiXSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbihBLHQpe2xldCByPXQuZ2V0Q29udGVudFR5cGUoKXx8IiIsbz1yLmluZGV4T2YoImFwcGxpY2F0aW9uL2pzb24iKT4tMSxpPWMuaXNPYmplY3QoQSk7aWYoaSYmYy5pc0hUTUxGb3JtKEEpJiYoQT1uZXcgRm9ybURhdGEoQSkpLGMuaXNGb3JtRGF0YShBKSlyZXR1cm4gbyYmbz9KU09OLnN0cmluZ2lmeShrZShBKSk6QTtpZihjLmlzQXJyYXlCdWZmZXIoQSl8fGMuaXNCdWZmZXIoQSl8fGMuaXNTdHJlYW0oQSl8fGMuaXNGaWxlKEEpfHxjLmlzQmxvYihBKSlyZXR1cm4gQTtpZihjLmlzQXJyYXlCdWZmZXJWaWV3KEEpKXJldHVybiBBLmJ1ZmZlcjtpZihjLmlzVVJMU2VhcmNoUGFyYW1zKEEpKXJldHVybiB0LnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIsITEpLEEudG9TdHJpbmcoKTtsZXQgZztpZihpKXtpZihyLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpPi0xKXJldHVybiAkZShBLHRoaXMuZm9ybVNlcmlhbGl6ZXIpLnRvU3RyaW5nKCk7aWYoKGc9Yy5pc0ZpbGVMaXN0KEEpKXx8ci5pbmRleE9mKCJtdWx0aXBhcnQvZm9ybS1kYXRhIik+LTEpe2xldCBmPXRoaXMuZW52JiZ0aGlzLmVudi5Gb3JtRGF0YTtyZXR1cm4gTChnP3siZmlsZXNbXSI6QX06QSxmJiZuZXcgZix0aGlzLmZvcm1TZXJpYWxpemVyKX19cmV0dXJuIGl8fG8/KHQuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL2pzb24iLCExKSxQaShBKSk6QX1dLHRyYW5zZm9ybVJlc3BvbnNlOltmdW5jdGlvbihBKXtsZXQgdD10aGlzLnRyYW5zaXRpb25hbHx8ZUEudHJhbnNpdGlvbmFsLHI9dCYmdC5mb3JjZWRKU09OUGFyc2luZyxvPXRoaXMucmVzcG9uc2VUeXBlPT09Impzb24iO2lmKEEmJmMuaXNTdHJpbmcoQSkmJihyJiYhdGhpcy5yZXNwb25zZVR5cGV8fG8pKXtsZXQgbj0hKHQmJnQuc2lsZW50SlNPTlBhcnNpbmcpJiZvO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShBKX1jYXRjaChnKXtpZihuKXRocm93IGcubmFtZT09PSJTeW50YXhFcnJvciI/dy5mcm9tKGcsdy5FUlJfQkFEX1JFU1BPTlNFLHRoaXMsbnVsbCx0aGlzLnJlc3BvbnNlKTpnfX1yZXR1cm4gQX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSxtYXhCb2R5TGVuZ3RoOi0xLGVudjp7Rm9ybURhdGE6Vy5jbGFzc2VzLkZvcm1EYXRhLEJsb2I6Vy5jbGFzc2VzLkJsb2J9LHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKEEpe3JldHVybiBBPj0yMDAmJkE8MzAwfSxoZWFkZXJzOntjb21tb246e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIiwiQ29udGVudC1UeXBlIjp2b2lkIDB9fX07Yy5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCJdLGU9PntlQS5oZWFkZXJzW2VdPXt9fSk7dmFyIFY9ZUE7dmFyIHhpPWMudG9PYmplY3RTZXQoWyJhZ2UiLCJhdXRob3JpemF0aW9uIiwiY29udGVudC1sZW5ndGgiLCJjb250ZW50LXR5cGUiLCJldGFnIiwiZXhwaXJlcyIsImZyb20iLCJob3N0IiwiaWYtbW9kaWZpZWQtc2luY2UiLCJpZi11bm1vZGlmaWVkLXNpbmNlIiwibGFzdC1tb2RpZmllZCIsImxvY2F0aW9uIiwibWF4LWZvcndhcmRzIiwicHJveHktYXV0aG9yaXphdGlvbiIsInJlZmVyZXIiLCJyZXRyeS1hZnRlciIsInVzZXItYWdlbnQiXSksTXQ9ZT0+e2xldCBBPXt9LHQscixvO3JldHVybiBlJiZlLnNwbGl0KGAKYCkuZm9yRWFjaChmdW5jdGlvbihuKXtvPW4uaW5kZXhPZigiOiIpLHQ9bi5zdWJzdHJpbmcoMCxvKS50cmltKCkudG9Mb3dlckNhc2UoKSxyPW4uc3Vic3RyaW5nKG8rMSkudHJpbSgpLCEoIXR8fEFbdF0mJnhpW3RdKSYmKHQ9PT0ic2V0LWNvb2tpZSI/QVt0XT9BW3RdLnB1c2gocik6QVt0XT1bcl06QVt0XT1BW3RdP0FbdF0rIiwgIityOnIpfSksQX07dmFyIEh0PVN5bWJvbCgiaW50ZXJuYWxzIik7ZnVuY3Rpb24gbmUoZSl7cmV0dXJuIGUmJlN0cmluZyhlKS50cmltKCkudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBiZShlKXtyZXR1cm4gZT09PSExfHxlPT1udWxsP2U6Yy5pc0FycmF5KGUpP2UubWFwKGJlKTpTdHJpbmcoZSl9ZnVuY3Rpb24gR2koZSl7bGV0IEE9T2JqZWN0LmNyZWF0ZShudWxsKSx0PS8oW15ccyw7PV0rKVxzKig/Oj1ccyooW14sO10rKSk/L2cscjtmb3IoO3I9dC5leGVjKGUpOylBW3JbMV1dPXJbMl07cmV0dXJuIEF9dmFyIFRpPWU9Pi9eWy1fYS16QS1aMC05XmB8fiwhIyQlJicqKy5dKyQvLnRlc3QoZS50cmltKCkpO2Z1bmN0aW9uIEFBKGUsQSx0LHIsbyl7aWYoYy5pc0Z1bmN0aW9uKHIpKXJldHVybiByLmNhbGwodGhpcyxBLHQpO2lmKG8mJihBPXQpLCEhYy5pc1N0cmluZyhBKSl7aWYoYy5pc1N0cmluZyhyKSlyZXR1cm4gQS5pbmRleE9mKHIpIT09LTE7aWYoYy5pc1JlZ0V4cChyKSlyZXR1cm4gci50ZXN0KEEpfX1mdW5jdGlvbiBKaShlKXtyZXR1cm4gZS50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8oW2EtelxkXSkoXHcqKS9nLChBLHQscik9PnQudG9VcHBlckNhc2UoKStyKX1mdW5jdGlvbiBMaShlLEEpe2xldCB0PWMudG9DYW1lbENhc2UoIiAiK0EpO1siZ2V0Iiwic2V0IiwiaGFzIl0uZm9yRWFjaChyPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscit0LHt2YWx1ZTpmdW5jdGlvbihvLGksbil7cmV0dXJuIHRoaXNbcl0uY2FsbCh0aGlzLEEsbyxpLG4pfSxjb25maWd1cmFibGU6ITB9KX0pfXZhciBfPWNsYXNze2NvbnN0cnVjdG9yKEEpe0EmJnRoaXMuc2V0KEEpfXNldChBLHQscil7bGV0IG89dGhpcztmdW5jdGlvbiBpKGcsZixtKXtsZXQgYT1uZShmKTtpZighYSl0aHJvdyBuZXcgRXJyb3IoImhlYWRlciBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nIik7bGV0IHM9Yy5maW5kS2V5KG8sYSk7KCFzfHxvW3NdPT09dm9pZCAwfHxtPT09ITB8fG09PT12b2lkIDAmJm9bc10hPT0hMSkmJihvW3N8fGZdPWJlKGcpKX1sZXQgbj0oZyxmKT0+Yy5mb3JFYWNoKGcsKG0sYSk9PmkobSxhLGYpKTtyZXR1cm4gYy5pc1BsYWluT2JqZWN0KEEpfHxBIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9uKEEsdCk6Yy5pc1N0cmluZyhBKSYmKEE9QS50cmltKCkpJiYhVGkoQSk/bihNdChBKSx0KTpBIT1udWxsJiZpKHQsQSxyKSx0aGlzfWdldChBLHQpe2lmKEE9bmUoQSksQSl7bGV0IHI9Yy5maW5kS2V5KHRoaXMsQSk7aWYocil7bGV0IG89dGhpc1tyXTtpZighdClyZXR1cm4gbztpZih0PT09ITApcmV0dXJuIEdpKG8pO2lmKGMuaXNGdW5jdGlvbih0KSlyZXR1cm4gdC5jYWxsKHRoaXMsbyxyKTtpZihjLmlzUmVnRXhwKHQpKXJldHVybiB0LmV4ZWMobyk7dGhyb3cgbmV3IFR5cGVFcnJvcigicGFyc2VyIG11c3QgYmUgYm9vbGVhbnxyZWdleHB8ZnVuY3Rpb24iKX19fWhhcyhBLHQpe2lmKEE9bmUoQSksQSl7bGV0IHI9Yy5maW5kS2V5KHRoaXMsQSk7cmV0dXJuISEociYmdGhpc1tyXSE9PXZvaWQgMCYmKCF0fHxBQSh0aGlzLHRoaXNbcl0scix0KSkpfXJldHVybiExfWRlbGV0ZShBLHQpe2xldCByPXRoaXMsbz0hMTtmdW5jdGlvbiBpKG4pe2lmKG49bmUobiksbil7bGV0IGc9Yy5maW5kS2V5KHIsbik7ZyYmKCF0fHxBQShyLHJbZ10sZyx0KSkmJihkZWxldGUgcltnXSxvPSEwKX19cmV0dXJuIGMuaXNBcnJheShBKT9BLmZvckVhY2goaSk6aShBKSxvfWNsZWFyKEEpe2xldCB0PU9iamVjdC5rZXlzKHRoaXMpLHI9dC5sZW5ndGgsbz0hMTtmb3IoO3ItLTspe2xldCBpPXRbcl07KCFBfHxBQSh0aGlzLHRoaXNbaV0saSxBLCEwKSkmJihkZWxldGUgdGhpc1tpXSxvPSEwKX1yZXR1cm4gb31ub3JtYWxpemUoQSl7bGV0IHQ9dGhpcyxyPXt9O3JldHVybiBjLmZvckVhY2godGhpcywobyxpKT0+e2xldCBuPWMuZmluZEtleShyLGkpO2lmKG4pe3Rbbl09YmUobyksZGVsZXRlIHRbaV07cmV0dXJufWxldCBnPUE/SmkoaSk6U3RyaW5nKGkpLnRyaW0oKTtnIT09aSYmZGVsZXRlIHRbaV0sdFtnXT1iZShvKSxyW2ddPSEwfSksdGhpc31jb25jYXQoLi4uQSl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY29uY2F0KHRoaXMsLi4uQSl9dG9KU09OKEEpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGMuZm9yRWFjaCh0aGlzLChyLG8pPT57ciE9bnVsbCYmciE9PSExJiYodFtvXT1BJiZjLmlzQXJyYXkocik/ci5qb2luKCIsICIpOnIpfSksdH1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKVtTeW1ib2wuaXRlcmF0b3JdKCl9dG9TdHJpbmcoKXtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSkubWFwKChbQSx0XSk9PkErIjogIit0KS5qb2luKGAKYCl9Z2V0W1N5bWJvbC50b1N0cmluZ1RhZ10oKXtyZXR1cm4iQXhpb3NIZWFkZXJzIn1zdGF0aWMgZnJvbShBKXtyZXR1cm4gQSBpbnN0YW5jZW9mIHRoaXM/QTpuZXcgdGhpcyhBKX1zdGF0aWMgY29uY2F0KEEsLi4udCl7bGV0IHI9bmV3IHRoaXMoQSk7cmV0dXJuIHQuZm9yRWFjaChvPT5yLnNldChvKSkscn1zdGF0aWMgYWNjZXNzb3IoQSl7bGV0IHI9KHRoaXNbSHRdPXRoaXNbSHRdPXthY2Nlc3NvcnM6e319KS5hY2Nlc3NvcnMsbz10aGlzLnByb3RvdHlwZTtmdW5jdGlvbiBpKG4pe2xldCBnPW5lKG4pO3JbZ118fChMaShvLG4pLHJbZ109ITApfXJldHVybiBjLmlzQXJyYXkoQSk/QS5mb3JFYWNoKGkpOmkoQSksdGhpc319O18uYWNjZXNzb3IoWyJDb250ZW50LVR5cGUiLCJDb250ZW50LUxlbmd0aCIsIkFjY2VwdCIsIkFjY2VwdC1FbmNvZGluZyIsIlVzZXItQWdlbnQiLCJBdXRob3JpemF0aW9uIl0pO2MucmVkdWNlRGVzY3JpcHRvcnMoXy5wcm90b3R5cGUsKHt2YWx1ZTplfSxBKT0+e2xldCB0PUFbMF0udG9VcHBlckNhc2UoKStBLnNsaWNlKDEpO3JldHVybntnZXQ6KCk9PmUsc2V0KHIpe3RoaXNbdF09cn19fSk7Yy5mcmVlemVNZXRob2RzKF8pO3ZhciBGPV87ZnVuY3Rpb24gc2UoZSxBKXtsZXQgdD10aGlzfHxWLHI9QXx8dCxvPUYuZnJvbShyLmhlYWRlcnMpLGk9ci5kYXRhO3JldHVybiBjLmZvckVhY2goZSxmdW5jdGlvbihnKXtpPWcuY2FsbCh0LGksby5ub3JtYWxpemUoKSxBP0Euc3RhdHVzOnZvaWQgMCl9KSxvLm5vcm1hbGl6ZSgpLGl9ZnVuY3Rpb24gSWUoZSl7cmV0dXJuISEoZSYmZS5fX0NBTkNFTF9fKX1mdW5jdGlvbiBZdChlLEEsdCl7dy5jYWxsKHRoaXMsZT8/ImNhbmNlbGVkIix3LkVSUl9DQU5DRUxFRCxBLHQpLHRoaXMubmFtZT0iQ2FuY2VsZWRFcnJvciJ9Yy5pbmhlcml0cyhZdCx3LHtfX0NBTkNFTF9fOiEwfSk7dmFyIE09WXQ7ZnVuY3Rpb24gdEEoZSxBLHQpe2xldCByPXQuY29uZmlnLnZhbGlkYXRlU3RhdHVzOyF0LnN0YXR1c3x8IXJ8fHIodC5zdGF0dXMpP2UodCk6QShuZXcgdygiUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK3Quc3RhdHVzLFt3LkVSUl9CQURfUkVRVUVTVCx3LkVSUl9CQURfUkVTUE9OU0VdW01hdGguZmxvb3IodC5zdGF0dXMvMTAwKS00XSx0LmNvbmZpZyx0LnJlcXVlc3QsdCkpfXZhciBxdD1XLmhhc1N0YW5kYXJkQnJvd3NlckVudj97d3JpdGUoZSxBLHQscixvLGkpe2xldCBuPVtlKyI9IitlbmNvZGVVUklDb21wb25lbnQoQSldO2MuaXNOdW1iZXIodCkmJm4ucHVzaCgiZXhwaXJlcz0iK25ldyBEYXRlKHQpLnRvR01UU3RyaW5nKCkpLGMuaXNTdHJpbmcocikmJm4ucHVzaCgicGF0aD0iK3IpLGMuaXNTdHJpbmcobykmJm4ucHVzaCgiZG9tYWluPSIrbyksaT09PSEwJiZuLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1uLmpvaW4oIjsgIil9LHJlYWQoZSl7bGV0IEE9ZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoIihefDtcXHMqKSgiK2UrIik9KFteO10qKSIpKTtyZXR1cm4gQT9kZWNvZGVVUklDb21wb25lbnQoQVszXSk6bnVsbH0scmVtb3ZlKGUpe3RoaXMud3JpdGUoZSwiIixEYXRlLm5vdygpLTg2NGU1KX19Ont3cml0ZSgpe30scmVhZCgpe3JldHVybiBudWxsfSxyZW1vdmUoKXt9fTtmdW5jdGlvbiByQShlKXtyZXR1cm4vXihbYS16XVthLXpcZCtcLS5dKjopP1wvXC8vaS50ZXN0KGUpfWZ1bmN0aW9uIGlBKGUsQSl7cmV0dXJuIEE/ZS5yZXBsYWNlKC9cLyskLywiIikrIi8iK0EucmVwbGFjZSgvXlwvKy8sIiIpOmV9ZnVuY3Rpb24gZ2UoZSxBKXtyZXR1cm4gZSYmIXJBKEEpP2lBKGUsQSk6QX12YXIgS3Q9Vy5oYXNTdGFuZGFyZEJyb3dzZXJFbnY/ZnVuY3Rpb24oKXtsZXQgQT0vKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpLHI7ZnVuY3Rpb24gbyhpKXtsZXQgbj1pO3JldHVybiBBJiYodC5zZXRBdHRyaWJ1dGUoImhyZWYiLG4pLG49dC5ocmVmKSx0LnNldEF0dHJpYnV0ZSgiaHJlZiIsbikse2hyZWY6dC5ocmVmLHByb3RvY29sOnQucHJvdG9jb2w/dC5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6dC5ob3N0LHNlYXJjaDp0LnNlYXJjaD90LnNlYXJjaC5yZXBsYWNlKC9eXD8vLCIiKToiIixoYXNoOnQuaGFzaD90Lmhhc2gucmVwbGFjZSgvXiMvLCIiKToiIixob3N0bmFtZTp0Lmhvc3RuYW1lLHBvcnQ6dC5wb3J0LHBhdGhuYW1lOnQucGF0aG5hbWUuY2hhckF0KDApPT09Ii8iP3QucGF0aG5hbWU6Ii8iK3QucGF0aG5hbWV9fXJldHVybiByPW8od2luZG93LmxvY2F0aW9uLmhyZWYpLGZ1bmN0aW9uKG4pe2xldCBnPWMuaXNTdHJpbmcobik/byhuKTpuO3JldHVybiBnLnByb3RvY29sPT09ci5wcm90b2NvbCYmZy5ob3N0PT09ci5ob3N0fX0oKTpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiEwfX0oKTtmdW5jdGlvbiBvQShlKXtsZXQgQT0vXihbLStcd117MSwyNX0pKDo/XC9cL3w6KS8uZXhlYyhlKTtyZXR1cm4gQSYmQVsxXXx8IiJ9ZnVuY3Rpb24gTWkoZSxBKXtlPWV8fDEwO2xldCB0PW5ldyBBcnJheShlKSxyPW5ldyBBcnJheShlKSxvPTAsaT0wLG47cmV0dXJuIEE9QSE9PXZvaWQgMD9BOjFlMyxmdW5jdGlvbihmKXtsZXQgbT1EYXRlLm5vdygpLGE9cltpXTtufHwobj1tKSx0W29dPWYscltvXT1tO2xldCBzPWksdT0wO2Zvcig7cyE9PW87KXUrPXRbcysrXSxzPXMlZTtpZihvPShvKzEpJWUsbz09PWkmJihpPShpKzEpJWUpLG0tbjxBKXJldHVybjtsZXQgST1hJiZtLWE7cmV0dXJuIEk/TWF0aC5yb3VuZCh1KjFlMy9JKTp2b2lkIDB9fXZhciBqdD1NaTtmdW5jdGlvbiB2dChlLEEpe2xldCB0PTAscj1qdCg1MCwyNTApO3JldHVybiBvPT57bGV0IGk9by5sb2FkZWQsbj1vLmxlbmd0aENvbXB1dGFibGU/by50b3RhbDp2b2lkIDAsZz1pLXQsZj1yKGcpLG09aTw9bjt0PWk7bGV0IGE9e2xvYWRlZDppLHRvdGFsOm4scHJvZ3Jlc3M6bj9pL246dm9pZCAwLGJ5dGVzOmcscmF0ZTpmfHx2b2lkIDAsZXN0aW1hdGVkOmYmJm4mJm0/KG4taSkvZjp2b2lkIDAsZXZlbnQ6b307YVtBPyJkb3dubG9hZCI6InVwbG9hZCJdPSEwLGUoYSl9fXZhciBIaT10eXBlb2YgWE1MSHR0cFJlcXVlc3Q8InUiLHp0PUhpJiZmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odCxyKXtsZXQgbz1lLmRhdGEsaT1GLmZyb20oZS5oZWFkZXJzKS5ub3JtYWxpemUoKSx7cmVzcG9uc2VUeXBlOm4sd2l0aFhTUkZUb2tlbjpnfT1lLGY7ZnVuY3Rpb24gbSgpe2UuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUoZiksZS5zaWduYWwmJmUuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixmKX1sZXQgYTtpZihjLmlzRm9ybURhdGEobykpe2lmKFcuaGFzU3RhbmRhcmRCcm93c2VyRW52fHxXLmhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudilpLnNldENvbnRlbnRUeXBlKCExKTtlbHNlIGlmKChhPWkuZ2V0Q29udGVudFR5cGUoKSkhPT0hMSl7bGV0W0IsLi4uUV09YT9hLnNwbGl0KCI7IikubWFwKFI9PlIudHJpbSgpKS5maWx0ZXIoQm9vbGVhbik6W107aS5zZXRDb250ZW50VHlwZShbQnx8Im11bHRpcGFydC9mb3JtLWRhdGEiLC4uLlFdLmpvaW4oIjsgIikpfX1sZXQgcz1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoZS5hdXRoKXtsZXQgQj1lLmF1dGgudXNlcm5hbWV8fCIiLFE9ZS5hdXRoLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChlLmF1dGgucGFzc3dvcmQpKToiIjtpLnNldCgiQXV0aG9yaXphdGlvbiIsIkJhc2ljICIrYnRvYShCKyI6IitRKSl9bGV0IHU9Z2UoZS5iYXNlVVJMLGUudXJsKTtzLm9wZW4oZS5tZXRob2QudG9VcHBlckNhc2UoKSxhZSh1LGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplciksITApLHMudGltZW91dD1lLnRpbWVvdXQ7ZnVuY3Rpb24gSSgpe2lmKCFzKXJldHVybjtsZXQgQj1GLmZyb20oImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiBzJiZzLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSxSPXtkYXRhOiFufHxuPT09InRleHQifHxuPT09Impzb24iP3MucmVzcG9uc2VUZXh0OnMucmVzcG9uc2Usc3RhdHVzOnMuc3RhdHVzLHN0YXR1c1RleHQ6cy5zdGF0dXNUZXh0LGhlYWRlcnM6Qixjb25maWc6ZSxyZXF1ZXN0OnN9O3RBKGZ1bmN0aW9uKFApe3QoUCksbSgpfSxmdW5jdGlvbihQKXtyKFApLG0oKX0sUikscz1udWxsfWlmKCJvbmxvYWRlbmQiaW4gcz9zLm9ubG9hZGVuZD1JOnMub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7IXN8fHMucmVhZHlTdGF0ZSE9PTR8fHMuc3RhdHVzPT09MCYmIShzLnJlc3BvbnNlVVJMJiZzLnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6Iik9PT0wKXx8c2V0VGltZW91dChJKX0scy5vbmFib3J0PWZ1bmN0aW9uKCl7cyYmKHIobmV3IHcoIlJlcXVlc3QgYWJvcnRlZCIsdy5FQ09OTkFCT1JURUQsZSxzKSkscz1udWxsKX0scy5vbmVycm9yPWZ1bmN0aW9uKCl7cihuZXcgdygiTmV0d29yayBFcnJvciIsdy5FUlJfTkVUV09SSyxlLHMpKSxzPW51bGx9LHMub250aW1lb3V0PWZ1bmN0aW9uKCl7bGV0IFE9ZS50aW1lb3V0PyJ0aW1lb3V0IG9mICIrZS50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiLFI9ZS50cmFuc2l0aW9uYWx8fFJlO2UudGltZW91dEVycm9yTWVzc2FnZSYmKFE9ZS50aW1lb3V0RXJyb3JNZXNzYWdlKSxyKG5ldyB3KFEsUi5jbGFyaWZ5VGltZW91dEVycm9yP3cuRVRJTUVET1VUOncuRUNPTk5BQk9SVEVELGUscykpLHM9bnVsbH0sVy5oYXNTdGFuZGFyZEJyb3dzZXJFbnYmJihnJiZjLmlzRnVuY3Rpb24oZykmJihnPWcoZSkpLGd8fGchPT0hMSYmS3QodSkpKXtsZXQgQj1lLnhzcmZIZWFkZXJOYW1lJiZlLnhzcmZDb29raWVOYW1lJiZxdC5yZWFkKGUueHNyZkNvb2tpZU5hbWUpO0ImJmkuc2V0KGUueHNyZkhlYWRlck5hbWUsQil9bz09PXZvaWQgMCYmaS5zZXRDb250ZW50VHlwZShudWxsKSwic2V0UmVxdWVzdEhlYWRlciJpbiBzJiZjLmZvckVhY2goaS50b0pTT04oKSxmdW5jdGlvbihRLFIpe3Muc2V0UmVxdWVzdEhlYWRlcihSLFEpfSksYy5pc1VuZGVmaW5lZChlLndpdGhDcmVkZW50aWFscyl8fChzLndpdGhDcmVkZW50aWFscz0hIWUud2l0aENyZWRlbnRpYWxzKSxuJiZuIT09Impzb24iJiYocy5yZXNwb25zZVR5cGU9ZS5yZXNwb25zZVR5cGUpLHR5cGVvZiBlLm9uRG93bmxvYWRQcm9ncmVzcz09ImZ1bmN0aW9uIiYmcy5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsdnQoZS5vbkRvd25sb2FkUHJvZ3Jlc3MsITApKSx0eXBlb2YgZS5vblVwbG9hZFByb2dyZXNzPT0iZnVuY3Rpb24iJiZzLnVwbG9hZCYmcy51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLHZ0KGUub25VcGxvYWRQcm9ncmVzcykpLChlLmNhbmNlbFRva2VufHxlLnNpZ25hbCkmJihmPUI9PntzJiYocighQnx8Qi50eXBlP25ldyBNKG51bGwsZSxzKTpCKSxzLmFib3J0KCkscz1udWxsKX0sZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUoZiksZS5zaWduYWwmJihlLnNpZ25hbC5hYm9ydGVkP2YoKTplLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsZikpKTtsZXQgcD1vQSh1KTtpZihwJiZXLnByb3RvY29scy5pbmRleE9mKHApPT09LTEpe3IobmV3IHcoIlVuc3VwcG9ydGVkIHByb3RvY29sICIrcCsiOiIsdy5FUlJfQkFEX1JFUVVFU1QsZSkpO3JldHVybn1zLnNlbmQob3x8bnVsbCl9KX07dmFyIGFBPXtodHRwOmhlLHhocjp6dH07Yy5mb3JFYWNoKGFBLChlLEEpPT57aWYoZSl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJuYW1lIix7dmFsdWU6QX0pfWNhdGNoe31PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiYWRhcHRlck5hbWUiLHt2YWx1ZTpBfSl9fSk7dmFyIFZ0PWU9PmAtICR7ZX1gLFlpPWU9PmMuaXNGdW5jdGlvbihlKXx8ZT09PW51bGx8fGU9PT0hMSxEZT17Z2V0QWRhcHRlcjplPT57ZT1jLmlzQXJyYXkoZSk/ZTpbZV07bGV0e2xlbmd0aDpBfT1lLHQscixvPXt9O2ZvcihsZXQgaT0wO2k8QTtpKyspe3Q9ZVtpXTtsZXQgbjtpZihyPXQsIVlpKHQpJiYocj1hQVsobj1TdHJpbmcodCkpLnRvTG93ZXJDYXNlKCldLHI9PT12b2lkIDApKXRocm93IG5ldyB3KGBVbmtub3duIGFkYXB0ZXIgJyR7bn0nYCk7aWYocilicmVhaztvW258fCIjIitpXT1yfWlmKCFyKXtsZXQgaT1PYmplY3QuZW50cmllcyhvKS5tYXAoKFtnLGZdKT0+YGFkYXB0ZXIgJHtnfSBgKyhmPT09ITE/ImlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGVudmlyb25tZW50IjoiaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgYnVpbGQiKSksbj1BP2kubGVuZ3RoPjE/YHNpbmNlIDoKYCtpLm1hcChWdCkuam9pbihgCmApOiIgIitWdChpWzBdKToiYXMgbm8gYWRhcHRlciBzcGVjaWZpZWQiO3Rocm93IG5ldyB3KCJUaGVyZSBpcyBubyBzdWl0YWJsZSBhZGFwdGVyIHRvIGRpc3BhdGNoIHRoZSByZXF1ZXN0ICIrbiwiRVJSX05PVF9TVVBQT1JUIil9cmV0dXJuIHJ9LGFkYXB0ZXJzOmFBfTtmdW5jdGlvbiBuQShlKXtpZihlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxlLnNpZ25hbCYmZS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgTShudWxsLGUpfWZ1bmN0aW9uIFdlKGUpe3JldHVybiBuQShlKSxlLmhlYWRlcnM9Ri5mcm9tKGUuaGVhZGVycyksZS5kYXRhPXNlLmNhbGwoZSxlLnRyYW5zZm9ybVJlcXVlc3QpLFsicG9zdCIsInB1dCIsInBhdGNoIl0uaW5kZXhPZihlLm1ldGhvZCkhPT0tMSYmZS5oZWFkZXJzLnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLCExKSxEZS5nZXRBZGFwdGVyKGUuYWRhcHRlcnx8Vi5hZGFwdGVyKShlKS50aGVuKGZ1bmN0aW9uKHIpe3JldHVybiBuQShlKSxyLmRhdGE9c2UuY2FsbChlLGUudHJhbnNmb3JtUmVzcG9uc2Usciksci5oZWFkZXJzPUYuZnJvbShyLmhlYWRlcnMpLHJ9LGZ1bmN0aW9uKHIpe3JldHVybiBJZShyKXx8KG5BKGUpLHImJnIucmVzcG9uc2UmJihyLnJlc3BvbnNlLmRhdGE9c2UuY2FsbChlLGUudHJhbnNmb3JtUmVzcG9uc2Usci5yZXNwb25zZSksci5yZXNwb25zZS5oZWFkZXJzPUYuZnJvbShyLnJlc3BvbnNlLmhlYWRlcnMpKSksUHJvbWlzZS5yZWplY3Qocil9KX12YXIgX3Q9ZT0+ZSBpbnN0YW5jZW9mIEY/ZS50b0pTT04oKTplO2Z1bmN0aW9uIFQoZSxBKXtBPUF8fHt9O2xldCB0PXt9O2Z1bmN0aW9uIHIobSxhLHMpe3JldHVybiBjLmlzUGxhaW5PYmplY3QobSkmJmMuaXNQbGFpbk9iamVjdChhKT9jLm1lcmdlLmNhbGwoe2Nhc2VsZXNzOnN9LG0sYSk6Yy5pc1BsYWluT2JqZWN0KGEpP2MubWVyZ2Uoe30sYSk6Yy5pc0FycmF5KGEpP2Euc2xpY2UoKTphfWZ1bmN0aW9uIG8obSxhLHMpe2lmKGMuaXNVbmRlZmluZWQoYSkpe2lmKCFjLmlzVW5kZWZpbmVkKG0pKXJldHVybiByKHZvaWQgMCxtLHMpfWVsc2UgcmV0dXJuIHIobSxhLHMpfWZ1bmN0aW9uIGkobSxhKXtpZighYy5pc1VuZGVmaW5lZChhKSlyZXR1cm4gcih2b2lkIDAsYSl9ZnVuY3Rpb24gbihtLGEpe2lmKGMuaXNVbmRlZmluZWQoYSkpe2lmKCFjLmlzVW5kZWZpbmVkKG0pKXJldHVybiByKHZvaWQgMCxtKX1lbHNlIHJldHVybiByKHZvaWQgMCxhKX1mdW5jdGlvbiBnKG0sYSxzKXtpZihzIGluIEEpcmV0dXJuIHIobSxhKTtpZihzIGluIGUpcmV0dXJuIHIodm9pZCAwLG0pfWxldCBmPXt1cmw6aSxtZXRob2Q6aSxkYXRhOmksYmFzZVVSTDpuLHRyYW5zZm9ybVJlcXVlc3Q6bix0cmFuc2Zvcm1SZXNwb25zZTpuLHBhcmFtc1NlcmlhbGl6ZXI6bix0aW1lb3V0Om4sdGltZW91dE1lc3NhZ2U6bix3aXRoQ3JlZGVudGlhbHM6bix3aXRoWFNSRlRva2VuOm4sYWRhcHRlcjpuLHJlc3BvbnNlVHlwZTpuLHhzcmZDb29raWVOYW1lOm4seHNyZkhlYWRlck5hbWU6bixvblVwbG9hZFByb2dyZXNzOm4sb25Eb3dubG9hZFByb2dyZXNzOm4sZGVjb21wcmVzczpuLG1heENvbnRlbnRMZW5ndGg6bixtYXhCb2R5TGVuZ3RoOm4sYmVmb3JlUmVkaXJlY3Q6bix0cmFuc3BvcnQ6bixodHRwQWdlbnQ6bixodHRwc0FnZW50Om4sY2FuY2VsVG9rZW46bixzb2NrZXRQYXRoOm4scmVzcG9uc2VFbmNvZGluZzpuLHZhbGlkYXRlU3RhdHVzOmcsaGVhZGVyczoobSxhKT0+byhfdChtKSxfdChhKSwhMCl9O3JldHVybiBjLmZvckVhY2goT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxlLEEpKSxmdW5jdGlvbihhKXtsZXQgcz1mW2FdfHxvLHU9cyhlW2FdLEFbYV0sYSk7Yy5pc1VuZGVmaW5lZCh1KSYmcyE9PWd8fCh0W2FdPXUpfSksdH12YXIgRmU9IjEuNi4yIjt2YXIgc0E9e307WyJvYmplY3QiLCJib29sZWFuIiwibnVtYmVyIiwiZnVuY3Rpb24iLCJzdHJpbmciLCJzeW1ib2wiXS5mb3JFYWNoKChlLEEpPT57c0FbZV09ZnVuY3Rpb24ocil7cmV0dXJuIHR5cGVvZiByPT09ZXx8ImEiKyhBPDE/Im4gIjoiICIpK2V9fSk7dmFyIFp0PXt9O3NBLnRyYW5zaXRpb25hbD1mdW5jdGlvbihBLHQscil7ZnVuY3Rpb24gbyhpLG4pe3JldHVybiJbQXhpb3MgdiIrRmUrIl0gVHJhbnNpdGlvbmFsIG9wdGlvbiAnIitpKyInIituKyhyPyIuICIrcjoiIil9cmV0dXJuKGksbixnKT0+e2lmKEE9PT0hMSl0aHJvdyBuZXcgdyhvKG4sIiBoYXMgYmVlbiByZW1vdmVkIisodD8iIGluICIrdDoiIikpLHcuRVJSX0RFUFJFQ0FURUQpO3JldHVybiB0JiYhWnRbbl0mJihadFtuXT0hMCxjb25zb2xlLndhcm4obyhuLCIgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2Iit0KyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLEE/QShpLG4sZyk6ITB9fTtmdW5jdGlvbiBxaShlLEEsdCl7aWYodHlwZW9mIGUhPSJvYmplY3QiKXRocm93IG5ldyB3KCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iix3LkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtsZXQgcj1PYmplY3Qua2V5cyhlKSxvPXIubGVuZ3RoO2Zvcig7by0tID4wOyl7bGV0IGk9cltvXSxuPUFbaV07aWYobil7bGV0IGc9ZVtpXSxmPWc9PT12b2lkIDB8fG4oZyxpLGUpO2lmKGYhPT0hMCl0aHJvdyBuZXcgdygib3B0aW9uICIraSsiIG11c3QgYmUgIitmLHcuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2NvbnRpbnVlfWlmKHQhPT0hMCl0aHJvdyBuZXcgdygiVW5rbm93biBvcHRpb24gIitpLHcuRVJSX0JBRF9PUFRJT04pfX12YXIgVWU9e2Fzc2VydE9wdGlvbnM6cWksdmFsaWRhdG9yczpzQX07dmFyIEg9VWUudmFsaWRhdG9ycyxaPWNsYXNze2NvbnN0cnVjdG9yKEEpe3RoaXMuZGVmYXVsdHM9QSx0aGlzLmludGVyY2VwdG9ycz17cmVxdWVzdDpuZXcgWmUscmVzcG9uc2U6bmV3IFplfX1yZXF1ZXN0KEEsdCl7dHlwZW9mIEE9PSJzdHJpbmciPyh0PXR8fHt9LHQudXJsPUEpOnQ9QXx8e30sdD1UKHRoaXMuZGVmYXVsdHMsdCk7bGV0e3RyYW5zaXRpb25hbDpyLHBhcmFtc1NlcmlhbGl6ZXI6byxoZWFkZXJzOml9PXQ7ciE9PXZvaWQgMCYmVWUuYXNzZXJ0T3B0aW9ucyhyLHtzaWxlbnRKU09OUGFyc2luZzpILnRyYW5zaXRpb25hbChILmJvb2xlYW4pLGZvcmNlZEpTT05QYXJzaW5nOkgudHJhbnNpdGlvbmFsKEguYm9vbGVhbiksY2xhcmlmeVRpbWVvdXRFcnJvcjpILnRyYW5zaXRpb25hbChILmJvb2xlYW4pfSwhMSksbyE9bnVsbCYmKGMuaXNGdW5jdGlvbihvKT90LnBhcmFtc1NlcmlhbGl6ZXI9e3NlcmlhbGl6ZTpvfTpVZS5hc3NlcnRPcHRpb25zKG8se2VuY29kZTpILmZ1bmN0aW9uLHNlcmlhbGl6ZTpILmZ1bmN0aW9ufSwhMCkpLHQubWV0aG9kPSh0Lm1ldGhvZHx8dGhpcy5kZWZhdWx0cy5tZXRob2R8fCJnZXQiKS50b0xvd2VyQ2FzZSgpO2xldCBuPWkmJmMubWVyZ2UoaS5jb21tb24saVt0Lm1ldGhvZF0pO2kmJmMuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSxwPT57ZGVsZXRlIGlbcF19KSx0LmhlYWRlcnM9Ri5jb25jYXQobixpKTtsZXQgZz1bXSxmPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbihCKXt0eXBlb2YgQi5ydW5XaGVuPT0iZnVuY3Rpb24iJiZCLnJ1bldoZW4odCk9PT0hMXx8KGY9ZiYmQi5zeW5jaHJvbm91cyxnLnVuc2hpZnQoQi5mdWxmaWxsZWQsQi5yZWplY3RlZCkpfSk7bGV0IG09W107dGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihCKXttLnB1c2goQi5mdWxmaWxsZWQsQi5yZWplY3RlZCl9KTtsZXQgYSxzPTAsdTtpZighZil7bGV0IHA9W1dlLmJpbmQodGhpcyksdm9pZCAwXTtmb3IocC51bnNoaWZ0LmFwcGx5KHAsZykscC5wdXNoLmFwcGx5KHAsbSksdT1wLmxlbmd0aCxhPVByb21pc2UucmVzb2x2ZSh0KTtzPHU7KWE9YS50aGVuKHBbcysrXSxwW3MrK10pO3JldHVybiBhfXU9Zy5sZW5ndGg7bGV0IEk9dDtmb3Iocz0wO3M8dTspe2xldCBwPWdbcysrXSxCPWdbcysrXTt0cnl7ST1wKEkpfWNhdGNoKFEpe0IuY2FsbCh0aGlzLFEpO2JyZWFrfX10cnl7YT1XZS5jYWxsKHRoaXMsSSl9Y2F0Y2gocCl7cmV0dXJuIFByb21pc2UucmVqZWN0KHApfWZvcihzPTAsdT1tLmxlbmd0aDtzPHU7KWE9YS50aGVuKG1bcysrXSxtW3MrK10pO3JldHVybiBhfWdldFVyaShBKXtBPVQodGhpcy5kZWZhdWx0cyxBKTtsZXQgdD1nZShBLmJhc2VVUkwsQS51cmwpO3JldHVybiBhZSh0LEEucGFyYW1zLEEucGFyYW1zU2VyaWFsaXplcil9fTtjLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyJdLGZ1bmN0aW9uKEEpe1oucHJvdG90eXBlW0FdPWZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMucmVxdWVzdChUKHJ8fHt9LHttZXRob2Q6QSx1cmw6dCxkYXRhOihyfHx7fSkuZGF0YX0pKX19KTtjLmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSxmdW5jdGlvbihBKXtmdW5jdGlvbiB0KHIpe3JldHVybiBmdW5jdGlvbihpLG4sZyl7cmV0dXJuIHRoaXMucmVxdWVzdChUKGd8fHt9LHttZXRob2Q6QSxoZWFkZXJzOnI/eyJDb250ZW50LVR5cGUiOiJtdWx0aXBhcnQvZm9ybS1kYXRhIn06e30sdXJsOmksZGF0YTpufSkpfX1aLnByb3RvdHlwZVtBXT10KCksWi5wcm90b3R5cGVbQSsiRm9ybSJdPXQoITApfSk7dmFyIGxlPVo7dmFyIElBPWNsYXNzIGV7Y29uc3RydWN0b3IoQSl7aWYodHlwZW9mIEEhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO2xldCB0O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihpKXt0PWl9KTtsZXQgcj10aGlzO3RoaXMucHJvbWlzZS50aGVuKG89PntpZighci5fbGlzdGVuZXJzKXJldHVybjtsZXQgaT1yLl9saXN0ZW5lcnMubGVuZ3RoO2Zvcig7aS0tID4wOylyLl9saXN0ZW5lcnNbaV0obyk7ci5fbGlzdGVuZXJzPW51bGx9KSx0aGlzLnByb21pc2UudGhlbj1vPT57bGV0IGksbj1uZXcgUHJvbWlzZShnPT57ci5zdWJzY3JpYmUoZyksaT1nfSkudGhlbihvKTtyZXR1cm4gbi5jYW5jZWw9ZnVuY3Rpb24oKXtyLnVuc3Vic2NyaWJlKGkpfSxufSxBKGZ1bmN0aW9uKGksbixnKXtyLnJlYXNvbnx8KHIucmVhc29uPW5ldyBNKGksbixnKSx0KHIucmVhc29uKSl9KX10aHJvd0lmUmVxdWVzdGVkKCl7aWYodGhpcy5yZWFzb24pdGhyb3cgdGhpcy5yZWFzb259c3Vic2NyaWJlKEEpe2lmKHRoaXMucmVhc29uKXtBKHRoaXMucmVhc29uKTtyZXR1cm59dGhpcy5fbGlzdGVuZXJzP3RoaXMuX2xpc3RlbmVycy5wdXNoKEEpOnRoaXMuX2xpc3RlbmVycz1bQV19dW5zdWJzY3JpYmUoQSl7aWYoIXRoaXMuX2xpc3RlbmVycylyZXR1cm47bGV0IHQ9dGhpcy5fbGlzdGVuZXJzLmluZGV4T2YoQSk7dCE9PS0xJiZ0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKHQsMSl9c3RhdGljIHNvdXJjZSgpe2xldCBBO3JldHVybnt0b2tlbjpuZXcgZShmdW5jdGlvbihvKXtBPW99KSxjYW5jZWw6QX19fSxYdD1JQTtmdW5jdGlvbiBnQShlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkobnVsbCx0KX19ZnVuY3Rpb24gbEEoZSl7cmV0dXJuIGMuaXNPYmplY3QoZSkmJmUuaXNBeGlvc0Vycm9yPT09ITB9dmFyIHBBPXtDb250aW51ZToxMDAsU3dpdGNoaW5nUHJvdG9jb2xzOjEwMSxQcm9jZXNzaW5nOjEwMixFYXJseUhpbnRzOjEwMyxPazoyMDAsQ3JlYXRlZDoyMDEsQWNjZXB0ZWQ6MjAyLE5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbjoyMDMsTm9Db250ZW50OjIwNCxSZXNldENvbnRlbnQ6MjA1LFBhcnRpYWxDb250ZW50OjIwNixNdWx0aVN0YXR1czoyMDcsQWxyZWFkeVJlcG9ydGVkOjIwOCxJbVVzZWQ6MjI2LE11bHRpcGxlQ2hvaWNlczozMDAsTW92ZWRQZXJtYW5lbnRseTozMDEsRm91bmQ6MzAyLFNlZU90aGVyOjMwMyxOb3RNb2RpZmllZDozMDQsVXNlUHJveHk6MzA1LFVudXNlZDozMDYsVGVtcG9yYXJ5UmVkaXJlY3Q6MzA3LFBlcm1hbmVudFJlZGlyZWN0OjMwOCxCYWRSZXF1ZXN0OjQwMCxVbmF1dGhvcml6ZWQ6NDAxLFBheW1lbnRSZXF1aXJlZDo0MDIsRm9yYmlkZGVuOjQwMyxOb3RGb3VuZDo0MDQsTWV0aG9kTm90QWxsb3dlZDo0MDUsTm90QWNjZXB0YWJsZTo0MDYsUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkOjQwNyxSZXF1ZXN0VGltZW91dDo0MDgsQ29uZmxpY3Q6NDA5LEdvbmU6NDEwLExlbmd0aFJlcXVpcmVkOjQxMSxQcmVjb25kaXRpb25GYWlsZWQ6NDEyLFBheWxvYWRUb29MYXJnZTo0MTMsVXJpVG9vTG9uZzo0MTQsVW5zdXBwb3J0ZWRNZWRpYVR5cGU6NDE1LFJhbmdlTm90U2F0aXNmaWFibGU6NDE2LEV4cGVjdGF0aW9uRmFpbGVkOjQxNyxJbUFUZWFwb3Q6NDE4LE1pc2RpcmVjdGVkUmVxdWVzdDo0MjEsVW5wcm9jZXNzYWJsZUVudGl0eTo0MjIsTG9ja2VkOjQyMyxGYWlsZWREZXBlbmRlbmN5OjQyNCxUb29FYXJseTo0MjUsVXBncmFkZVJlcXVpcmVkOjQyNixQcmVjb25kaXRpb25SZXF1aXJlZDo0MjgsVG9vTWFueVJlcXVlc3RzOjQyOSxSZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2U6NDMxLFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zOjQ1MSxJbnRlcm5hbFNlcnZlckVycm9yOjUwMCxOb3RJbXBsZW1lbnRlZDo1MDEsQmFkR2F0ZXdheTo1MDIsU2VydmljZVVuYXZhaWxhYmxlOjUwMyxHYXRld2F5VGltZW91dDo1MDQsSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQ6NTA1LFZhcmlhbnRBbHNvTmVnb3RpYXRlczo1MDYsSW5zdWZmaWNpZW50U3RvcmFnZTo1MDcsTG9vcERldGVjdGVkOjUwOCxOb3RFeHRlbmRlZDo1MTAsTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6NTExfTtPYmplY3QuZW50cmllcyhwQSkuZm9yRWFjaCgoW2UsQV0pPT57cEFbQV09ZX0pO3ZhciAkdD1wQTtmdW5jdGlvbiBlcihlKXtsZXQgQT1uZXcgbGUoZSksdD1yZShsZS5wcm90b3R5cGUucmVxdWVzdCxBKTtyZXR1cm4gYy5leHRlbmQodCxsZS5wcm90b3R5cGUsQSx7YWxsT3duS2V5czohMH0pLGMuZXh0ZW5kKHQsQSxudWxsLHthbGxPd25LZXlzOiEwfSksdC5jcmVhdGU9ZnVuY3Rpb24obyl7cmV0dXJuIGVyKFQoZSxvKSl9LHR9dmFyIGs9ZXIoVik7ay5BeGlvcz1sZTtrLkNhbmNlbGVkRXJyb3I9TTtrLkNhbmNlbFRva2VuPVh0O2suaXNDYW5jZWw9SWU7ay5WRVJTSU9OPUZlO2sudG9Gb3JtRGF0YT1MO2suQXhpb3NFcnJvcj13O2suQ2FuY2VsPWsuQ2FuY2VsZWRFcnJvcjtrLmFsbD1mdW5jdGlvbihBKXtyZXR1cm4gUHJvbWlzZS5hbGwoQSl9O2suc3ByZWFkPWdBO2suaXNBeGlvc0Vycm9yPWxBO2subWVyZ2VDb25maWc9VDtrLkF4aW9zSGVhZGVycz1GO2suZm9ybVRvSlNPTj1lPT5rZShjLmlzSFRNTEZvcm0oZSk/bmV3IEZvcm1EYXRhKGUpOmUpO2suZ2V0QWRhcHRlcj1EZS5nZXRBZGFwdGVyO2suSHR0cFN0YXR1c0NvZGU9JHQ7ay5kZWZhdWx0PWs7dmFyIEc9azt2YXJ7QXhpb3M6eEksQXhpb3NFcnJvcjpHSSxDYW5jZWxlZEVycm9yOlRJLGlzQ2FuY2VsOkpJLENhbmNlbFRva2VuOkxJLFZFUlNJT046TUksYWxsOkhJLENhbmNlbDpZSSxpc0F4aW9zRXJyb3I6cUksc3ByZWFkOktJLHRvRm9ybURhdGE6akksQXhpb3NIZWFkZXJzOnZJLEh0dHBTdGF0dXNDb2RlOnpJLGZvcm1Ub0pTT046VkksZ2V0QWRhcHRlcjpfSSxtZXJnZUNvbmZpZzpaSX09Rzthc3luYyBmdW5jdGlvbiBLaShlLEEpe2xldCB0PWUscj1udWxsO2lmKHQ9PT1udWxsKXI9bmV3IFdvcmtlcihuZXcgVVJMKCIuL3dlYi13b3JrZXJzL2l0ay13YXNtLXBpcGVsaW5lLndvcmtlci5qcyIsaW1wb3J0Lm1ldGEudXJsKSx7dHlwZToibW9kdWxlIn0pO2Vsc2UgaWYodC5zdGFydHNXaXRoKCJodHRwIikpe2xldCBvPWF3YWl0IEcuZ2V0KHQse3Jlc3BvbnNlVHlwZToiYmxvYiIscGFyYW1zOkF9KSxpPVVSTC5jcmVhdGVPYmplY3RVUkwoby5kYXRhKTtyPW5ldyBXb3JrZXIoaSx7dHlwZToibW9kdWxlIn0pfWVsc2Ugcj1uZXcgV29ya2VyKHQse3R5cGU6Im1vZHVsZSJ9KTtyZXR1cm4gcn12YXIgcGU9S2k7ZnVuY3Rpb24gQXIoZSl7bGV0IEE9cWUoZSksdD1lO3JldHVybiB0LnRlcm1pbmF0ZWQ9ITEsdC53b3JrZXJQcm94eT1BLHQub3JpZ2luYWxUZXJtaW5hdGU9dC50ZXJtaW5hdGUsdC50ZXJtaW5hdGU9KCk9Pnt0LnRlcm1pbmF0ZWQ9ITAsdC53b3JrZXJQcm94eVtZZV0oKSx0Lm9yaWdpbmFsVGVybWluYXRlKCl9LHt3b3JrZXJQcm94eTpBLHdvcmtlcjp0fX1hc3luYyBmdW5jdGlvbiBqaShlLEEsdCl7bGV0IHI7aWYoZSE9bnVsbCl7bGV0IGk9ZTtyZXR1cm4gaS53b3JrZXJQcm94eSE9PXZvaWQgMD8ocj1pLndvcmtlclByb3h5LHt3b3JrZXJQcm94eTpyLHdvcmtlcjppfSk6QXIoZSl9bGV0IG89YXdhaXQgcGUoQSx0KTtyZXR1cm4gQXIobyl9dmFyIHRyPWppO2FzeW5jIGZ1bmN0aW9uIHZpKGUsQSx0KXtsZXQgcj0idW5rbm93biI7dHlwZW9mIGUhPSJzdHJpbmciP3I9ZS5ocmVmOmUuc3RhcnRzV2l0aCgiaHR0cCIpP3I9ZTpyPXR5cGVvZiBBPCJ1Ij9gJHtBfS8ke2V9YDplLHIuZW5kc1dpdGgoIi5qcyIpJiYocj1yLnN1YnN0cmluZygwLHIubGVuZ3RoLTMpKSxyLmVuZHNXaXRoKCIud2FzbSIpJiYocj1yLnN1YnN0cmluZygwLHIubGVuZ3RoLTUpKTtsZXQgbz1gJHtyfS53YXNtYCxuPShhd2FpdCBHLmdldChvLHtyZXNwb25zZVR5cGU6ImFycmF5YnVmZmVyIixwYXJhbXM6dH0pKS5kYXRhO3JldHVybihhd2FpdCBpbXBvcnQoYCR7cn0uanNgKSkuZGVmYXVsdCh7d2FzbUJpbmFyeTpufSl9dmFyIHJyPXZpO3ZhciBpcj1hc3luYygpPT5XZWJBc3NlbWJseS52YWxpZGF0ZShuZXcgVWludDhBcnJheShbMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw1LDEsOTYsMCwxLDEyMywzLDIsMSwwLDEwLDEwLDEsOCwwLDY1LDAsMjUzLDE1LDI1Myw5OCwxMV0pKTt2YXIgbnI9dHlwZW9mIGdsb2JhbFRoaXMuU2hhcmVkQXJyYXlCdWZmZXI9PSJmdW5jdGlvbiIsb3I9bmV3IFRleHRFbmNvZGVyLGFyPW5ldyBUZXh0RGVjb2RlcigidXRmLTgiKTtmdW5jdGlvbiB6aShlLEEpe2xldCB0PXtmbGFnczoiciIsZW5jb2Rpbmc6ImJpbmFyeSJ9LHI9ZS5mc19vcGVuKEEsdC5mbGFncyksaT1lLmZzX3N0YXQoQSkuc2l6ZSxuPW51bGw7bnI/bj1uZXcgU2hhcmVkQXJyYXlCdWZmZXIoaSk6bj1uZXcgQXJyYXlCdWZmZXIoaSk7bGV0IGc9bmV3IFVpbnQ4QXJyYXkobik7cmV0dXJuIGUuZnNfcmVhZChyLGcsMCxpLDApLGUuZnNfY2xvc2UociksZ31mdW5jdGlvbiBzcihlLEEsdCl7bGV0IHI9bnVsbDtucj9yPW5ldyBTaGFyZWRBcnJheUJ1ZmZlcih0KTpyPW5ldyBBcnJheUJ1ZmZlcih0KTtsZXQgbz1uZXcgVWludDhBcnJheShyKSxpPW5ldyBVaW50OEFycmF5KGUuSEVBUFU4LmJ1ZmZlcixBLHQpO3JldHVybiBvLnNldChpKSxvfWZ1bmN0aW9uIEQoZSxBLHQscil7bGV0IG89MDtyZXR1cm4gQSE9PW51bGwmJihvPWUuY2NhbGwoIml0a193YXNtX2lucHV0X2FycmF5X2FsbG9jIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHQscixBLmJ1ZmZlci5ieXRlTGVuZ3RoXSksZS5IRUFQVTguc2V0KG5ldyBVaW50OEFycmF5KEEuYnVmZmVyKSxvKSksb31mdW5jdGlvbiBYKGUsQSx0KXtsZXQgcj1KU09OLnN0cmluZ2lmeShBKSxvPWUuY2NhbGwoIml0a193YXNtX2lucHV0X2pzb25fYWxsb2MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsdCxyLmxlbmd0aF0pO2Uud3JpdGVBc2NpaVRvTWVtb3J5KHIsbywhMSl9ZnVuY3Rpb24gVShlLEEsdCxyKXtsZXQgbz1lLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxBLHRdKSxpPWUuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEEsdF0pLG49c3IoZSxvLGkpO3JldHVybiBTKHIsbi5idWZmZXIpfWZ1bmN0aW9uIG1BKGUsQSl7bGV0IHQ9ZS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2pzb25fYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiXSxbMCxBXSkscj1lLkFzY2lpVG9TdHJpbmcodCk7cmV0dXJuIEpTT04ucGFyc2Uocil9ZnVuY3Rpb24gVmkoZSxBLHQscil7ciE9bnVsbCYmci5sZW5ndGg+MCYmci5mb3JFYWNoKGZ1bmN0aW9uKG0sYSl7c3dpdGNoKG0udHlwZSl7Y2FzZSBsLlRleHRTdHJlYW06e2xldCBzPW9yLmVuY29kZShtLmRhdGEuZGF0YSksdT1EKGUscyxhLDApLEk9e3NpemU6cy5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7dX1gfTtYKGUsSSxhKTticmVha31jYXNlIGwuSnNvbkNvbXBhdGlibGU6e2xldCBzPW9yLmVuY29kZShKU09OLnN0cmluZ2lmeShtLmRhdGEpKSx1PUQoZSxzLGEsMCksST17c2l6ZTpzLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHt1fWB9O1goZSxJLGEpO2JyZWFrfWNhc2UgbC5CaW5hcnlTdHJlYW06e2xldCBzPW0uZGF0YS5kYXRhLHU9RChlLHMsYSwwKSxJPXtzaXplOnMuYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke3V9YH07WChlLEksYSk7YnJlYWt9Y2FzZSBsLlRleHRGaWxlOntlLmZzX3dyaXRlRmlsZShtLmRhdGEucGF0aCxtLmRhdGEuZGF0YSk7YnJlYWt9Y2FzZSBsLkJpbmFyeUZpbGU6e2UuZnNfd3JpdGVGaWxlKG0uZGF0YS5wYXRoLG0uZGF0YS5kYXRhKTticmVha31jYXNlIGwuSW1hZ2U6e2xldCBzPW0uZGF0YSx1PUQoZSxzLmRhdGEsYSwwKSxJPUQoZSxzLmRpcmVjdGlvbixhLDEpLHA9dHlwZW9mIHMubWV0YWRhdGE/LmVudHJpZXM8InUiP0pTT04uc3RyaW5naWZ5KEFycmF5LmZyb20ocy5tZXRhZGF0YS5lbnRyaWVzKCkpKToiW10iLEI9e2ltYWdlVHlwZTpzLmltYWdlVHlwZSxuYW1lOnMubmFtZSxvcmlnaW46cy5vcmlnaW4sc3BhY2luZzpzLnNwYWNpbmcsZGlyZWN0aW9uOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7SX1gLHNpemU6cy5zaXplLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHt1fWAsbWV0YWRhdGE6cH07WChlLEIsYSk7YnJlYWt9Y2FzZSBsLk1lc2g6e2xldCBzPW0uZGF0YSx1PUQoZSxzLnBvaW50cyxhLDApLEk9RChlLHMuY2VsbHMsYSwxKSxwPUQoZSxzLnBvaW50RGF0YSxhLDIpLEI9RChlLHMuY2VsbERhdGEsYSwzKSxRPXttZXNoVHlwZTpzLm1lc2hUeXBlLG5hbWU6cy5uYW1lLG51bWJlck9mUG9pbnRzOnMubnVtYmVyT2ZQb2ludHMscG9pbnRzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7dX1gLG51bWJlck9mQ2VsbHM6cy5udW1iZXJPZkNlbGxzLGNlbGxzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7SX1gLGNlbGxCdWZmZXJTaXplOnMuY2VsbEJ1ZmZlclNpemUsbnVtYmVyT2ZQb2ludFBpeGVsczpzLm51bWJlck9mUG9pbnRQaXhlbHMscG9pbnREYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7cH1gLG51bWJlck9mQ2VsbFBpeGVsczpzLm51bWJlck9mQ2VsbFBpeGVscyxjZWxsRGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0J9YH07WChlLFEsYSk7YnJlYWt9Y2FzZSBsLlBvbHlEYXRhOntsZXQgcz1tLmRhdGEsdT1EKGUscy5wb2ludHMsYSwwKSxJPUQoZSxzLnZlcnRpY2VzLGEsMSkscD1EKGUscy5saW5lcyxhLDIpLEI9RChlLHMucG9seWdvbnMsYSwzKSxRPUQoZSxzLnRyaWFuZ2xlU3RyaXBzLGEsNCksUj1EKGUscy5wb2ludERhdGEsYSw1KSxOPUQoZSxzLnBvaW50RGF0YSxhLDYpLFA9e3BvbHlEYXRhVHlwZTpzLnBvbHlEYXRhVHlwZSxuYW1lOnMubmFtZSxudW1iZXJPZlBvaW50czpzLm51bWJlck9mUG9pbnRzLHBvaW50czpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke3V9YCx2ZXJ0aWNlc0J1ZmZlclNpemU6cy52ZXJ0aWNlc0J1ZmZlclNpemUsdmVydGljZXM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtJfWAsbGluZXNCdWZmZXJTaXplOnMubGluZXNCdWZmZXJTaXplLGxpbmVzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7cH1gLHBvbHlnb25zQnVmZmVyU2l6ZTpzLnBvbHlnb25zQnVmZmVyU2l6ZSxwb2x5Z29uczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0J9YCx0cmlhbmdsZVN0cmlwc0J1ZmZlclNpemU6cy50cmlhbmdsZVN0cmlwc0J1ZmZlclNpemUsdHJpYW5nbGVTdHJpcHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWAsbnVtYmVyT2ZQb2ludFBpeGVsczpzLm51bWJlck9mUG9pbnRQaXhlbHMscG9pbnREYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Un1gLG51bWJlck9mQ2VsbFBpeGVsczpzLm51bWJlck9mQ2VsbFBpeGVscyxjZWxsRGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke059YH07WChlLFAsYSk7YnJlYWt9ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5zdXBwb3J0ZWQgaW5wdXQgSW50ZXJmYWNlVHlwZSIpfX0pLGUucmVzZXRNb2R1bGVTdGRvdXQoKSxlLnJlc2V0TW9kdWxlU3RkZXJyKCk7bGV0IG89ZS5zdGFja1NhdmUoKSxpPTA7dHJ5e2k9ZS5jYWxsTWFpbihBLnNsaWNlKCkpfWNhdGNoKG0pe3Rocm93IHR5cGVvZiBtPT0ibnVtYmVyIiYmKGNvbnNvbGUubG9nKCJFeGNlcHRpb24gd2hpbGUgcnVubmluZyBwaXBlbGluZToiKSxjb25zb2xlLmxvZygic3Rkb3V0OiIsZS5nZXRNb2R1bGVTdGRvdXQoKSksY29uc29sZS5lcnJvcigic3RkZXJyOiIsZS5nZXRNb2R1bGVTdGRlcnIoKSksdHlwZW9mIGUuZ2V0RXhjZXB0aW9uTWVzc2FnZTwidSI/Y29uc29sZS5lcnJvcigiZXhjZXB0aW9uOiIsZS5nZXRFeGNlcHRpb25NZXNzYWdlKG0pKTpjb25zb2xlLmVycm9yKCJCdWlsZCBtb2R1bGUgaW4gRGVidWcgbW9kZSBmb3IgZXhjZXB0aW9uIG1lc3NhZ2UgaW5mb3JtYXRpb24uIikpLG19ZmluYWxseXtlLnN0YWNrUmVzdG9yZShvKX1sZXQgbj1lLmdldE1vZHVsZVN0ZG91dCgpLGc9ZS5nZXRNb2R1bGVTdGRlcnIoKSxmPVtdO3JldHVybiB0IT1udWxsJiZ0Lmxlbmd0aD4wJiZpPT09MCYmdC5mb3JFYWNoKGZ1bmN0aW9uKG0sYSl7bGV0IHM9bnVsbDtzd2l0Y2gobS50eXBlKXtjYXNlIGwuVGV4dFN0cmVhbTp7bGV0IEk9ZS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsYSwwXSkscD1lLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxhLDBdKSxCPW5ldyBVaW50OEFycmF5KGUuSEVBUFU4LmJ1ZmZlcixJLHApO3M9e2RhdGE6YXIuZGVjb2RlKEIpfTticmVha31jYXNlIGwuSnNvbkNvbXBhdGlibGU6e2xldCBJPWUuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLGEsMF0pLHA9ZS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsYSwwXSksQj1uZXcgVWludDhBcnJheShlLkhFQVBVOC5idWZmZXIsSSxwKTtzPUpTT04ucGFyc2UoYXIuZGVjb2RlKEIpKTticmVha31jYXNlIGwuQmluYXJ5U3RyZWFtOntsZXQgST1lLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxhLDBdKSxwPWUuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLGEsMF0pO3M9e2RhdGE6c3IoZSxJLHApfTticmVha31jYXNlIGwuVGV4dEZpbGU6e3M9e3BhdGg6bS5kYXRhLnBhdGgsZGF0YTplLmZzX3JlYWRGaWxlKG0uZGF0YS5wYXRoLHtlbmNvZGluZzoidXRmOCJ9KX07YnJlYWt9Y2FzZSBsLkJpbmFyeUZpbGU6e3M9e3BhdGg6bS5kYXRhLnBhdGgsZGF0YTp6aShlLG0uZGF0YS5wYXRoKX07YnJlYWt9Y2FzZSBsLkltYWdlOntsZXQgST1tQShlLGEpO0kuZGF0YT1VKGUsYSwwLEkuaW1hZ2VUeXBlLmNvbXBvbmVudFR5cGUpLEkuZGlyZWN0aW9uPVUoZSxhLDEsYi5GbG9hdDY0KSxJLm1ldGFkYXRhPW5ldyBNYXAoSS5tZXRhZGF0YSkscz1JO2JyZWFrfWNhc2UgbC5NZXNoOntsZXQgST1tQShlLGEpO0kubnVtYmVyT2ZQb2ludHM+MD9JLnBvaW50cz1VKGUsYSwwLEkubWVzaFR5cGUucG9pbnRDb21wb25lbnRUeXBlKTpJLnBvaW50cz1TKEkubWVzaFR5cGUucG9pbnRDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksSS5udW1iZXJPZkNlbGxzPjA/SS5jZWxscz1VKGUsYSwxLEkubWVzaFR5cGUuY2VsbENvbXBvbmVudFR5cGUpOkkuY2VsbHM9UyhJLm1lc2hUeXBlLmNlbGxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksSS5udW1iZXJPZlBvaW50UGl4ZWxzPjA/SS5wb2ludERhdGE9VShlLGEsMixJLm1lc2hUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlKTpJLnBvaW50RGF0YT1TKEkubWVzaFR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxJLm51bWJlck9mQ2VsbFBpeGVscz4wP0kuY2VsbERhdGE9VShlLGEsMyxJLm1lc2hUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUpOkkuY2VsbERhdGE9UyhJLm1lc2hUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxzPUk7YnJlYWt9Y2FzZSBsLlBvbHlEYXRhOntsZXQgST1tQShlLGEpO0kubnVtYmVyT2ZQb2ludHM+MD9JLnBvaW50cz1VKGUsYSwwLGIuRmxvYXQzMik6SS5wb2ludHM9bmV3IEZsb2F0MzJBcnJheSxJLnZlcnRpY2VzQnVmZmVyU2l6ZT4wP0kudmVydGljZXM9VShlLGEsMSxoLlVJbnQzMik6SS52ZXJ0aWNlcz1uZXcgVWludDMyQXJyYXksSS5saW5lc0J1ZmZlclNpemU+MD9JLmxpbmVzPVUoZSxhLDIsaC5VSW50MzIpOkkubGluZXM9bmV3IFVpbnQzMkFycmF5LEkucG9seWdvbnNCdWZmZXJTaXplPjA/SS5wb2x5Z29ucz1VKGUsYSwzLGguVUludDMyKTpJLnBvbHlnb25zPW5ldyBVaW50MzJBcnJheSxJLnRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZT4wP0kudHJpYW5nbGVTdHJpcHM9VShlLGEsNCxoLlVJbnQzMik6SS50cmlhbmdsZVN0cmlwcz1uZXcgVWludDMyQXJyYXksSS5udW1iZXJPZlBvaW50UGl4ZWxzPjA/SS5wb2ludERhdGE9VShlLGEsNSxJLnBvbHlEYXRhVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSk6SS5wb2ludERhdGE9UyhJLnBvbHlEYXRhVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEkubnVtYmVyT2ZDZWxsUGl4ZWxzPjA/SS5jZWxsRGF0YT1VKGUsYSw2LEkucG9seURhdGFUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUpOkkuY2VsbERhdGE9UyhJLnBvbHlEYXRhVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSkscz1JO2JyZWFrfWRlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuc3VwcG9ydGVkIG91dHB1dCBJbnRlcmZhY2VUeXBlIil9bGV0IHU9e3R5cGU6bS50eXBlLGRhdGE6c307Zi5wdXNoKHUpfSkse3JldHVyblZhbHVlOmksc3Rkb3V0Om4sc3RkZXJyOmcsb3V0cHV0czpmfX12YXIgSXI9Vmk7dmFyIF9pPXR5cGVvZiBnbG9iYWxUaGlzLlNoYXJlZEFycmF5QnVmZmVyPCJ1IjtmdW5jdGlvbiBaaShlLEEpe2lmKGU9PW51bGwpcmV0dXJuW107bGV0IHQ9W107Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspe2xldCBvPVhpKGVbcl0sQSk7byE9PW51bGwmJnQucHVzaChvKX1yZXR1cm4gdH1mdW5jdGlvbiBYaShlLEEpe2lmKGU9PW51bGwpcmV0dXJuIG51bGw7bGV0IHQ9bnVsbDtyZXR1cm4gZS5idWZmZXIhPT12b2lkIDA/dD1lLmJ1ZmZlcjplLmJ5dGVMZW5ndGghPT12b2lkIDAmJih0PWUpLF9pJiZ0IGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXI/bnVsbDpBP3Q6dC5zbGljZSgwKX12YXIgZ3I9Wmk7ZnVuY3Rpb24gJGkoZSl7cmV0dXJuW2UuZGF0YSxlLmRpcmVjdGlvbl19dmFyIGxyPSRpO2Z1bmN0aW9uIGVvKGUpe3JldHVybltlLnBvaW50cyxlLnBvaW50RGF0YSxlLmNlbGxzLGUuY2VsbERhdGFdfXZhciBwcj1lbztmdW5jdGlvbiBBbyhlKXtyZXR1cm5bZS5wb2ludHMsZS52ZXJ0aWNlcyxlLmxpbmVzLGUucG9seWdvbnMsZS50cmlhbmdsZVN0cmlwcyxlLnBvaW50RGF0YSxlLmNlbGxEYXRhXX12YXIgbXI9QW87dmFyIHRvO2Z1bmN0aW9uIFNlKCl7cmV0dXJuIHRvfXZhciBybztmdW5jdGlvbiB1cigpe3JldHVybiByb312YXIgaW87ZnVuY3Rpb24gT2UoKXtyZXR1cm4gaW99dmFyIHVBPW5ldyBNYXA7ZnVuY3Rpb24gb28oKXtsZXQgZT1PZSgpO3JldHVybiB0eXBlb2YgZT4idSImJihlPW51bGwpLGV9ZnVuY3Rpb24gZnIoKXtsZXQgZT1TZSgpO3JldHVybiB0eXBlb2YgZT4idSImJihlPW5ldyBVUkwoIi9waXBlbGluZXMiLGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbikuaHJlZiksZX1mdW5jdGlvbiBOZSgpe2xldCBlPXVyKCk7cmV0dXJuIHR5cGVvZiBlPiJ1IiYmKGU9e30pLGV9YXN5bmMgZnVuY3Rpb24gYW8oZSxBLHQpe2xldCByPWUsbz1lO2lmKHR5cGVvZiBlIT0ic3RyaW5nIiYmKHI9bmV3IFVSTChlLmhyZWYpLG89ci5ocmVmKSx1QS5oYXMobykpcmV0dXJuIHVBLmdldChvKTt7bGV0IGk9YXdhaXQgcnIoZSxBPy50b1N0cmluZygpPz9mcigpLHQ/P05lKCkpO3JldHVybiB1QS5zZXQobyxpKSxpfX1hc3luYyBmdW5jdGlvbiBubyhlLEEsdCxyLG8pe2lmKCFhd2FpdCBpcigpKXtsZXQgUT0iV2ViQXNzZW1ibHkgU0lNRCBzdXBwb3J0IGlzIHJlcXVpcmVkIC0tIHBsZWFzZSB1cGRhdGUgeW91ciBicm93c2VyLiI7dGhyb3cgYWxlcnQoUSksbmV3IEVycm9yKFEpfWxldCBpPW8/LndlYldvcmtlcj8/bnVsbDtpZihpPT09ITEpe2xldCBRPWF3YWl0IGFvKGUudG9TdHJpbmcoKSxvPy5waXBlbGluZUJhc2VVcmwsbz8ucGlwZWxpbmVRdWVyeVBhcmFtcz8/TmUoKSk7cmV0dXJuIElyKFEsQSx0LHIpfWxldCBuPWksZz1vPy5waXBlbGluZVdvcmtlclVybD8/b28oKSxmPXR5cGVvZiBnIT0ic3RyaW5nIiYmdHlwZW9mIGc/LmhyZWY8InUiP2cuaHJlZjpnLHt3b3JrZXJQcm94eTptLHdvcmtlcjphfT1hd2FpdCB0cihuLGYsbz8ucGlwZWxpbmVRdWVyeVBhcmFtcz8/TmUoKSk7bj1hO2xldCBzPVtdO3IhPW51bGwmJnIubGVuZ3RoPjAmJnIuZm9yRWFjaChmdW5jdGlvbihRKXtpZihRLnR5cGU9PT1sLkJpbmFyeVN0cmVhbSl7bGV0IFI9US5kYXRhLmRhdGE7cy5wdXNoKFIpfWVsc2UgaWYoUS50eXBlPT09bC5CaW5hcnlGaWxlKXtsZXQgUj1RLmRhdGEuZGF0YTtzLnB1c2goUil9ZWxzZSBpZihRLnR5cGU9PT1sLkltYWdlKXtsZXQgUj1RLmRhdGE7Ui5kYXRhIT09bnVsbCYmcy5wdXNoKC4uLmxyKFIpKX1lbHNlIGlmKFEudHlwZT09PWwuTWVzaCl7bGV0IFI9US5kYXRhO3MucHVzaCguLi5wcihSKSl9ZWxzZSBpZihRLnR5cGU9PT1sLlBvbHlEYXRhKXtsZXQgUj1RLmRhdGE7cy5wdXNoKC4uLm1yKFIpKX19KTtsZXQgdT1vPy5waXBlbGluZUJhc2VVcmw/P2ZyKCksST10eXBlb2YgdSE9InN0cmluZyImJnR5cGVvZiB1Py5ocmVmPCJ1Ij91LmhyZWY6dSxwPXIhPW51bGw/S2UocixncihzLG8/Lm5vQ29weSkpOm51bGwsQj1hd2FpdCBtLnJ1blBpcGVsaW5lKGUudG9TdHJpbmcoKSxJLEEsdCxwLG8/LnBpcGVsaW5lUXVlcnlQYXJhbXM/P05lKCkpO3JldHVybntyZXR1cm5WYWx1ZTpCLnJldHVyblZhbHVlLHN0ZG91dDpCLnN0ZG91dCxzdGRlcnI6Qi5zdGRlcnIsb3V0cHV0czpCLm91dHB1dHMsd2ViV29ya2VyOm59fXZhciBDPW5vO3ZhciBzbz1udWxsO2Z1bmN0aW9uIGNyKCl7cmV0dXJuIHNvfXZhciBJbz0iMS4xLjEiLEJyPUlvO3ZhciBmQSxnbz1gaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaXRrLXdhc20vaW1hZ2UtaW9AJHtCcn0vZGlzdC9waXBlbGluZXNgO2Z1bmN0aW9uIEhnKGUpe2ZBPWV9ZnVuY3Rpb24gRSgpe2lmKHR5cGVvZiBmQTwidSIpcmV0dXJuIGZBO2xldCBlPVNlKCk7cmV0dXJuIHR5cGVvZiBlPCJ1Ij9lOmdvfXZhciBjQSxsbz1udWxsO2Z1bmN0aW9uIGRyKGUpe2NBPWV9ZnVuY3Rpb24gZCgpe2lmKHR5cGVvZiBjQTwidSIpcmV0dXJuIGNBO2xldCBlPU9lKCk7cmV0dXJuIHR5cGVvZiBlPCJ1Ij9lOmxvfXZhciAkPW51bGw7YXN5bmMgZnVuY3Rpb24gQ3IoKXtsZXQgZT1kKCksQT10eXBlb2YgZSE9InN0cmluZyImJnR5cGVvZiBlPy5ocmVmPCJ1Ij9lLmhyZWY6ZTskPWF3YWl0IHBlKEEpfWZ1bmN0aW9uIFZnKGUpeyQ9ZX1hc3luYyBmdW5jdGlvbiB5KCl7aWYoJCE9PW51bGwpcmV0dXJuICQudGVybWluYXRlZCYmYXdhaXQgQ3IoKSwkO2xldCBlPWNyKCk7cmV0dXJuIGUhPT1udWxsP2U6KGF3YWl0IENyKCksJCl9YXN5bmMgZnVuY3Rpb24gcG8oZSl7bGV0IHQ9KGF3YWl0IEcuZ2V0KGAke2V9L2luZGV4Lmpzb25gLHtyZXNwb25zZVR5cGU6Impzb24ifSkpLmRhdGEscj1hd2FpdCBHLmdldChgJHtlfS9kYXRhL2RhdGEucmF3YCx7cmVzcG9uc2VUeXBlOiJhcnJheWJ1ZmZlciJ9KTt0LmRhdGE9Uyh0LmltYWdlVHlwZS5jb21wb25lbnRUeXBlLHIuZGF0YSk7bGV0IG89YXdhaXQgRy5nZXQoYCR7ZX0vZGF0YS9kaXJlY3Rpb24ucmF3YCx7cmVzcG9uc2VUeXBlOiJhcnJheWJ1ZmZlciJ9KTtyZXR1cm4gdC5kaXJlY3Rpb249UyhiLkZsb2F0NjQsby5kYXRhKSx0fXZhciBtbz1wbzt2YXIgdW89bmV3IE1hcChbWyJpbWFnZS9qcGVnIiwianBlZyJdLFsiaW1hZ2UvcG5nIiwicG5nIl0sWyJpbWFnZS90aWZmIiwidGlmZiJdLFsiaW1hZ2UveC1tcy1ibXAiLCJibXAiXSxbImltYWdlL3gtYm1wIiwiYm1wIl0sWyJpbWFnZS9ibXAiLCJibXAiXSxbImFwcGxpY2F0aW9uL2RpY29tIiwiZ2RjbSJdXSksZWU9dW87YXN5bmMgZnVuY3Rpb24gZm8oZSxBPXt9KXtsZXQgdD1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5JbWFnZX1dLHI9ZTtpZihlIGluc3RhbmNlb2YgRmlsZSl7bGV0IFE9YXdhaXQgZS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6ZS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoUSl9fWxldCBvPVt7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxuPXIucGF0aDtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj0iMSI7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxBLmluZm9ybWF0aW9uT25seSYmQS5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5Iik7bGV0IG09InBuZy1yZWFkLWltYWdlIixhPUE/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGksdCxvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6QT8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkUmVhZDpwWzBdPy5kYXRhLGltYWdlOnBbMV0/LmRhdGF9fXZhciBCQT1mbzthc3luYyBmdW5jdGlvbiBjbyhlLEEsdD17fSl7bGV0IHI9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOntwYXRoOkEsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpsLkltYWdlLGRhdGE6ZX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9QTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIik7bGV0IG09InBuZy13cml0ZS1pbWFnZSIsYT10Py53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFdyaXRlOnBbMF0/LmRhdGEsc2VyaWFsaXplZEltYWdlOnBbMV0/LmRhdGF9fXZhciBkQT1jbzthc3luYyBmdW5jdGlvbiBCbyhlLEE9e30pe2xldCB0PVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkltYWdlfV0scj1lO2lmKGUgaW5zdGFuY2VvZiBGaWxlKXtsZXQgUT1hd2FpdCBlLmFycmF5QnVmZmVyKCk7cj17cGF0aDplLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShRKX19bGV0IG89W3t0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLEEuaW5mb3JtYXRpb25Pbmx5JiZBLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgbT0ibWV0YS1yZWFkLWltYWdlIixhPUE/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGksdCxvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6QT8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkUmVhZDpwWzBdPy5kYXRhLGltYWdlOnBbMV0/LmRhdGF9fXZhciBDQT1Cbzthc3luYyBmdW5jdGlvbiBDbyhlLEEsdD17fSl7bGV0IHI9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOntwYXRoOkEsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpsLkltYWdlLGRhdGE6ZX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9QTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIik7bGV0IG09Im1ldGEtd3JpdGUtaW1hZ2UiLGE9dD8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSxyLG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTp0Py5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRXcml0ZTpwWzBdPy5kYXRhLHNlcmlhbGl6ZWRJbWFnZTpwWzFdPy5kYXRhfX12YXIgRUE9Q287YXN5bmMgZnVuY3Rpb24gRW8oZSxBPXt9KXtsZXQgdD1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5JbWFnZX1dLHI9ZTtpZihlIGluc3RhbmNlb2YgRmlsZSl7bGV0IFE9YXdhaXQgZS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6ZS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoUSl9fWxldCBvPVt7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxuPXIucGF0aDtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj0iMSI7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxBLmluZm9ybWF0aW9uT25seSYmQS5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5Iik7bGV0IG09InRpZmYtcmVhZC1pbWFnZSIsYT1BPy53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHQsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OkE/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFJlYWQ6cFswXT8uZGF0YSxpbWFnZTpwWzFdPy5kYXRhfX12YXIgeUE9RW87YXN5bmMgZnVuY3Rpb24geW8oZSxBLHQ9e30pe2xldCByPVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTp7cGF0aDpBLGRhdGE6bmV3IFVpbnQ4QXJyYXl9fV0sbz1be3R5cGU6bC5JbWFnZSxkYXRhOmV9XSxpPVtdLG49IjAiO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPUE7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSx0LmluZm9ybWF0aW9uT25seSYmdC5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5IiksdC51c2VDb21wcmVzc2lvbiYmdC51c2VDb21wcmVzc2lvbiYmaS5wdXNoKCItLXVzZS1jb21wcmVzc2lvbiIpO2xldCBtPSJ0aWZmLXdyaXRlLWltYWdlIixhPXQ/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGkscixvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6dD8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkV3JpdGU6cFswXT8uZGF0YSxzZXJpYWxpemVkSW1hZ2U6cFsxXT8uZGF0YX19dmFyIFFBPXlvO2FzeW5jIGZ1bmN0aW9uIFFvKGUsQT17fSl7bGV0IHQ9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuSW1hZ2V9XSxyPWU7aWYoZSBpbnN0YW5jZW9mIEZpbGUpe2xldCBRPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOmUubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KFEpfX1sZXQgbz1be3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksQS5pbmZvcm1hdGlvbk9ubHkmJkEuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBtPSJuaWZ0aS1yZWFkLWltYWdlIixhPUE/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGksdCxvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6QT8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkUmVhZDpwWzBdPy5kYXRhLGltYWdlOnBbMV0/LmRhdGF9fXZhciBoQT1Rbzthc3luYyBmdW5jdGlvbiBobyhlLEEsdD17fSl7bGV0IHI9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOntwYXRoOkEsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpsLkltYWdlLGRhdGE6ZX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9QTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIik7bGV0IG09Im5pZnRpLXdyaXRlLWltYWdlIixhPXQ/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGkscixvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6dD8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkV3JpdGU6cFswXT8uZGF0YSxzZXJpYWxpemVkSW1hZ2U6cFsxXT8uZGF0YX19dmFyIHdBPWhvO2FzeW5jIGZ1bmN0aW9uIHdvKGUsQT17fSl7bGV0IHQ9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuSW1hZ2V9XSxyPWU7aWYoZSBpbnN0YW5jZW9mIEZpbGUpe2xldCBRPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOmUubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KFEpfX1sZXQgbz1be3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksQS5pbmZvcm1hdGlvbk9ubHkmJkEuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBtPSJqcGVnLXJlYWQtaW1hZ2UiLGE9QT8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSx0LG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTpBPy5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRSZWFkOnBbMF0/LmRhdGEsaW1hZ2U6cFsxXT8uZGF0YX19dmFyIFJBPXdvO2FzeW5jIGZ1bmN0aW9uIFJvKGUsQSx0PXt9KXtsZXQgcj1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6QSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOmwuSW1hZ2UsZGF0YTplfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1BO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKTtsZXQgbT0ianBlZy13cml0ZS1pbWFnZSIsYT10Py53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFdyaXRlOnBbMF0/LmRhdGEsc2VyaWFsaXplZEltYWdlOnBbMV0/LmRhdGF9fXZhciBrQT1Sbzthc3luYyBmdW5jdGlvbiBrbyhlLEE9e30pe2xldCB0PVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkltYWdlfV0scj1lO2lmKGUgaW5zdGFuY2VvZiBGaWxlKXtsZXQgUT1hd2FpdCBlLmFycmF5QnVmZmVyKCk7cj17cGF0aDplLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShRKX19bGV0IG89W3t0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLEEuaW5mb3JtYXRpb25Pbmx5JiZBLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgbT0ibnJyZC1yZWFkLWltYWdlIixhPUE/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGksdCxvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6QT8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkUmVhZDpwWzBdPy5kYXRhLGltYWdlOnBbMV0/LmRhdGF9fXZhciBiQT1rbzthc3luYyBmdW5jdGlvbiBibyhlLEEsdD17fSl7bGV0IHI9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOntwYXRoOkEsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpsLkltYWdlLGRhdGE6ZX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9QTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIik7bGV0IG09Im5ycmQtd3JpdGUtaW1hZ2UiLGE9dD8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSxyLG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTp0Py5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRXcml0ZTpwWzBdPy5kYXRhLHNlcmlhbGl6ZWRJbWFnZTpwWzFdPy5kYXRhfX12YXIgREE9Ym87YXN5bmMgZnVuY3Rpb24gRG8oZSxBPXt9KXtsZXQgdD1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5JbWFnZX1dLHI9ZTtpZihlIGluc3RhbmNlb2YgRmlsZSl7bGV0IFE9YXdhaXQgZS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6ZS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoUSl9fWxldCBvPVt7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxuPXIucGF0aDtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj0iMSI7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxBLmluZm9ybWF0aW9uT25seSYmQS5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5Iik7bGV0IG09InZ0ay1yZWFkLWltYWdlIixhPUE/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGksdCxvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6QT8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkUmVhZDpwWzBdPy5kYXRhLGltYWdlOnBbMV0/LmRhdGF9fXZhciBXQT1Ebzthc3luYyBmdW5jdGlvbiBXbyhlLEEsdD17fSl7bGV0IHI9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOntwYXRoOkEsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpsLkltYWdlLGRhdGE6ZX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9QTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIik7bGV0IG09InZ0ay13cml0ZS1pbWFnZSIsYT10Py53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFdyaXRlOnBbMF0/LmRhdGEsc2VyaWFsaXplZEltYWdlOnBbMV0/LmRhdGF9fXZhciBGQT1Xbzthc3luYyBmdW5jdGlvbiBGbyhlLEE9e30pe2xldCB0PVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkltYWdlfV0scj1lO2lmKGUgaW5zdGFuY2VvZiBGaWxlKXtsZXQgUT1hd2FpdCBlLmFycmF5QnVmZmVyKCk7cj17cGF0aDplLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShRKX19bGV0IG89W3t0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLEEuaW5mb3JtYXRpb25Pbmx5JiZBLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgbT0iYm1wLXJlYWQtaW1hZ2UiLGE9QT8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSx0LG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTpBPy5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRSZWFkOnBbMF0/LmRhdGEsaW1hZ2U6cFsxXT8uZGF0YX19dmFyIFVBPUZvO2FzeW5jIGZ1bmN0aW9uIFVvKGUsQSx0PXt9KXtsZXQgcj1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6QSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOmwuSW1hZ2UsZGF0YTplfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1BO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKTtsZXQgbT0iYm1wLXdyaXRlLWltYWdlIixhPXQ/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGkscixvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6dD8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkV3JpdGU6cFswXT8uZGF0YSxzZXJpYWxpemVkSW1hZ2U6cFsxXT8uZGF0YX19dmFyIFNBPVVvO2FzeW5jIGZ1bmN0aW9uIFNvKGUsQT17fSl7bGV0IHQ9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuSW1hZ2V9XSxyPWU7aWYoZSBpbnN0YW5jZW9mIEZpbGUpe2xldCBRPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOmUubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KFEpfX1sZXQgbz1be3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksQS5pbmZvcm1hdGlvbk9ubHkmJkEuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBtPSJoZGY1LXJlYWQtaW1hZ2UiLGE9QT8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSx0LG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTpBPy5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRSZWFkOnBbMF0/LmRhdGEsaW1hZ2U6cFsxXT8uZGF0YX19dmFyIE9BPVNvO2FzeW5jIGZ1bmN0aW9uIE9vKGUsQSx0PXt9KXtsZXQgcj1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6QSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOmwuSW1hZ2UsZGF0YTplfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1BO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKTtsZXQgbT0iaGRmNS13cml0ZS1pbWFnZSIsYT10Py53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFdyaXRlOnBbMF0/LmRhdGEsc2VyaWFsaXplZEltYWdlOnBbMV0/LmRhdGF9fXZhciBOQT1Pbzthc3luYyBmdW5jdGlvbiBObyhlLEE9e30pe2xldCB0PVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkltYWdlfV0scj1lO2lmKGUgaW5zdGFuY2VvZiBGaWxlKXtsZXQgUT1hd2FpdCBlLmFycmF5QnVmZmVyKCk7cj17cGF0aDplLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShRKX19bGV0IG89W3t0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLEEuaW5mb3JtYXRpb25Pbmx5JiZBLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgbT0ibWluYy1yZWFkLWltYWdlIixhPUE/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGksdCxvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6QT8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkUmVhZDpwWzBdPy5kYXRhLGltYWdlOnBbMV0/LmRhdGF9fXZhciBQQT1Obzthc3luYyBmdW5jdGlvbiBQbyhlLEEsdD17fSl7bGV0IHI9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOntwYXRoOkEsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpsLkltYWdlLGRhdGE6ZX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9QTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIik7bGV0IG09Im1pbmMtd3JpdGUtaW1hZ2UiLGE9dD8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSxyLG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTp0Py5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRXcml0ZTpwWzBdPy5kYXRhLHNlcmlhbGl6ZWRJbWFnZTpwWzFdPy5kYXRhfX12YXIgeEE9UG87YXN5bmMgZnVuY3Rpb24geG8oZSxBPXt9KXtsZXQgdD1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5JbWFnZX1dLHI9ZTtpZihlIGluc3RhbmNlb2YgRmlsZSl7bGV0IFE9YXdhaXQgZS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6ZS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoUSl9fWxldCBvPVt7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxuPXIucGF0aDtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj0iMSI7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxBLmluZm9ybWF0aW9uT25seSYmQS5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5Iik7bGV0IG09Im1yYy1yZWFkLWltYWdlIixhPUE/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGksdCxvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6QT8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkUmVhZDpwWzBdPy5kYXRhLGltYWdlOnBbMV0/LmRhdGF9fXZhciBHQT14bzthc3luYyBmdW5jdGlvbiBHbyhlLEEsdD17fSl7bGV0IHI9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOntwYXRoOkEsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpsLkltYWdlLGRhdGE6ZX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9QTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIik7bGV0IG09Im1yYy13cml0ZS1pbWFnZSIsYT10Py53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFdyaXRlOnBbMF0/LmRhdGEsc2VyaWFsaXplZEltYWdlOnBbMV0/LmRhdGF9fXZhciBUQT1Hbzthc3luYyBmdW5jdGlvbiBUbyhlLEE9e30pe2xldCB0PVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkltYWdlfV0scj1lO2lmKGUgaW5zdGFuY2VvZiBGaWxlKXtsZXQgUT1hd2FpdCBlLmFycmF5QnVmZmVyKCk7cj17cGF0aDplLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShRKX19bGV0IG89W3t0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLEEuaW5mb3JtYXRpb25Pbmx5JiZBLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgbT0ibHNtLXJlYWQtaW1hZ2UiLGE9QT8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSx0LG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTpBPy5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRSZWFkOnBbMF0/LmRhdGEsaW1hZ2U6cFsxXT8uZGF0YX19dmFyIEpBPVRvO2FzeW5jIGZ1bmN0aW9uIEpvKGUsQSx0PXt9KXtsZXQgcj1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6QSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOmwuSW1hZ2UsZGF0YTplfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1BO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKTtsZXQgbT0ibHNtLXdyaXRlLWltYWdlIixhPXQ/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGkscixvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6dD8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkV3JpdGU6cFswXT8uZGF0YSxzZXJpYWxpemVkSW1hZ2U6cFsxXT8uZGF0YX19dmFyIExBPUpvO2FzeW5jIGZ1bmN0aW9uIExvKGUsQT17fSl7bGV0IHQ9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuSW1hZ2V9XSxyPWU7aWYoZSBpbnN0YW5jZW9mIEZpbGUpe2xldCBRPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOmUubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KFEpfX1sZXQgbz1be3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksQS5pbmZvcm1hdGlvbk9ubHkmJkEuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBtPSJtZ2gtcmVhZC1pbWFnZSIsYT1BPy53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHQsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OkE/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFJlYWQ6cFswXT8uZGF0YSxpbWFnZTpwWzFdPy5kYXRhfX12YXIgTUE9TG87YXN5bmMgZnVuY3Rpb24gTW8oZSxBLHQ9e30pe2xldCByPVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTp7cGF0aDpBLGRhdGE6bmV3IFVpbnQ4QXJyYXl9fV0sbz1be3R5cGU6bC5JbWFnZSxkYXRhOmV9XSxpPVtdLG49IjAiO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPUE7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSx0LmluZm9ybWF0aW9uT25seSYmdC5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5IiksdC51c2VDb21wcmVzc2lvbiYmdC51c2VDb21wcmVzc2lvbiYmaS5wdXNoKCItLXVzZS1jb21wcmVzc2lvbiIpO2xldCBtPSJtZ2gtd3JpdGUtaW1hZ2UiLGE9dD8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSxyLG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTp0Py5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRXcml0ZTpwWzBdPy5kYXRhLHNlcmlhbGl6ZWRJbWFnZTpwWzFdPy5kYXRhfX12YXIgSEE9TW87YXN5bmMgZnVuY3Rpb24gSG8oZSxBPXt9KXtsZXQgdD1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5JbWFnZX1dLHI9ZTtpZihlIGluc3RhbmNlb2YgRmlsZSl7bGV0IFE9YXdhaXQgZS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6ZS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoUSl9fWxldCBvPVt7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxuPXIucGF0aDtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj0iMSI7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxBLmluZm9ybWF0aW9uT25seSYmQS5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5Iik7bGV0IG09ImJpby1yYWQtcmVhZC1pbWFnZSIsYT1BPy53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHQsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OkE/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFJlYWQ6cFswXT8uZGF0YSxpbWFnZTpwWzFdPy5kYXRhfX12YXIgWUE9SG87YXN5bmMgZnVuY3Rpb24gWW8oZSxBLHQ9e30pe2xldCByPVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTp7cGF0aDpBLGRhdGE6bmV3IFVpbnQ4QXJyYXl9fV0sbz1be3R5cGU6bC5JbWFnZSxkYXRhOmV9XSxpPVtdLG49IjAiO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPUE7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSx0LmluZm9ybWF0aW9uT25seSYmdC5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5IiksdC51c2VDb21wcmVzc2lvbiYmdC51c2VDb21wcmVzc2lvbiYmaS5wdXNoKCItLXVzZS1jb21wcmVzc2lvbiIpO2xldCBtPSJiaW8tcmFkLXdyaXRlLWltYWdlIixhPXQ/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGkscixvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6dD8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkV3JpdGU6cFswXT8uZGF0YSxzZXJpYWxpemVkSW1hZ2U6cFsxXT8uZGF0YX19dmFyIHFBPVlvO2FzeW5jIGZ1bmN0aW9uIHFvKGUsQT17fSl7bGV0IHQ9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuSW1hZ2V9XSxyPWU7aWYoZSBpbnN0YW5jZW9mIEZpbGUpe2xldCBRPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOmUubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KFEpfX1sZXQgbz1be3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksQS5pbmZvcm1hdGlvbk9ubHkmJkEuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBtPSJnaXBsLXJlYWQtaW1hZ2UiLGE9QT8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSx0LG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTpBPy5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRSZWFkOnBbMF0/LmRhdGEsaW1hZ2U6cFsxXT8uZGF0YX19dmFyIEtBPXFvO2FzeW5jIGZ1bmN0aW9uIEtvKGUsQSx0PXt9KXtsZXQgcj1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6QSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOmwuSW1hZ2UsZGF0YTplfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1BO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKTtsZXQgbT0iZ2lwbC13cml0ZS1pbWFnZSIsYT10Py53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFdyaXRlOnBbMF0/LmRhdGEsc2VyaWFsaXplZEltYWdlOnBbMV0/LmRhdGF9fXZhciBqQT1Lbzthc3luYyBmdW5jdGlvbiBqbyhlLEE9e30pe2xldCB0PVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkltYWdlfV0scj1lO2lmKGUgaW5zdGFuY2VvZiBGaWxlKXtsZXQgUT1hd2FpdCBlLmFycmF5QnVmZmVyKCk7cj17cGF0aDplLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShRKX19bGV0IG89W3t0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLEEuaW5mb3JtYXRpb25Pbmx5JiZBLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgbT0iZ2UtYWR3LXJlYWQtaW1hZ2UiLGE9QT8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSx0LG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTpBPy5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRSZWFkOnBbMF0/LmRhdGEsaW1hZ2U6cFsxXT8uZGF0YX19dmFyIHZBPWpvO2FzeW5jIGZ1bmN0aW9uIHZvKGUsQSx0PXt9KXtsZXQgcj1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6QSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOmwuSW1hZ2UsZGF0YTplfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1BO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKTtsZXQgbT0iZ2UtYWR3LXdyaXRlLWltYWdlIixhPXQ/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGkscixvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6dD8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkV3JpdGU6cFswXT8uZGF0YSxzZXJpYWxpemVkSW1hZ2U6cFsxXT8uZGF0YX19dmFyIHpBPXZvO2FzeW5jIGZ1bmN0aW9uIHpvKGUsQT17fSl7bGV0IHQ9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuSW1hZ2V9XSxyPWU7aWYoZSBpbnN0YW5jZW9mIEZpbGUpe2xldCBRPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOmUubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KFEpfX1sZXQgbz1be3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksQS5pbmZvcm1hdGlvbk9ubHkmJkEuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBtPSJnZTQtcmVhZC1pbWFnZSIsYT1BPy53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHQsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OkE/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFJlYWQ6cFswXT8uZGF0YSxpbWFnZTpwWzFdPy5kYXRhfX12YXIgVkE9em87YXN5bmMgZnVuY3Rpb24gVm8oZSxBLHQ9e30pe2xldCByPVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTp7cGF0aDpBLGRhdGE6bmV3IFVpbnQ4QXJyYXl9fV0sbz1be3R5cGU6bC5JbWFnZSxkYXRhOmV9XSxpPVtdLG49IjAiO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPUE7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSx0LmluZm9ybWF0aW9uT25seSYmdC5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5IiksdC51c2VDb21wcmVzc2lvbiYmdC51c2VDb21wcmVzc2lvbiYmaS5wdXNoKCItLXVzZS1jb21wcmVzc2lvbiIpO2xldCBtPSJnZTQtd3JpdGUtaW1hZ2UiLGE9dD8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSxyLG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTp0Py5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRXcml0ZTpwWzBdPy5kYXRhLHNlcmlhbGl6ZWRJbWFnZTpwWzFdPy5kYXRhfX12YXIgX0E9Vm87YXN5bmMgZnVuY3Rpb24gX28oZSxBPXt9KXtsZXQgdD1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5JbWFnZX1dLHI9ZTtpZihlIGluc3RhbmNlb2YgRmlsZSl7bGV0IFE9YXdhaXQgZS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6ZS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoUSl9fWxldCBvPVt7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxuPXIucGF0aDtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj0iMSI7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxBLmluZm9ybWF0aW9uT25seSYmQS5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5Iik7bGV0IG09ImdlNS1yZWFkLWltYWdlIixhPUE/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGksdCxvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6QT8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkUmVhZDpwWzBdPy5kYXRhLGltYWdlOnBbMV0/LmRhdGF9fXZhciBaQT1fbzthc3luYyBmdW5jdGlvbiBabyhlLEEsdD17fSl7bGV0IHI9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOntwYXRoOkEsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpsLkltYWdlLGRhdGE6ZX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9QTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIik7bGV0IG09ImdlNS13cml0ZS1pbWFnZSIsYT10Py53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFdyaXRlOnBbMF0/LmRhdGEsc2VyaWFsaXplZEltYWdlOnBbMV0/LmRhdGF9fXZhciBYQT1abzthc3luYyBmdW5jdGlvbiBYbyhlLEE9e30pe2xldCB0PVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkltYWdlfV0scj1lO2lmKGUgaW5zdGFuY2VvZiBGaWxlKXtsZXQgUT1hd2FpdCBlLmFycmF5QnVmZmVyKCk7cj17cGF0aDplLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShRKX19bGV0IG89W3t0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLEEuaW5mb3JtYXRpb25Pbmx5JiZBLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgbT0iZ2RjbS1yZWFkLWltYWdlIixhPUE/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGksdCxvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6QT8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkUmVhZDpwWzBdPy5kYXRhLGltYWdlOnBbMV0/LmRhdGF9fXZhciAkQT1Ybzthc3luYyBmdW5jdGlvbiAkbyhlLEEsdD17fSl7bGV0IHI9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOntwYXRoOkEsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpsLkltYWdlLGRhdGE6ZX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9QTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIik7bGV0IG09ImdkY20td3JpdGUtaW1hZ2UiLGE9dD8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSxyLG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTp0Py5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRXcml0ZTpwWzBdPy5kYXRhLHNlcmlhbGl6ZWRJbWFnZTpwWzFdPy5kYXRhfX12YXIgZXQ9JG87YXN5bmMgZnVuY3Rpb24gZWEoZSxBPXt9KXtsZXQgdD1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5JbWFnZX1dLHI9ZTtpZihlIGluc3RhbmNlb2YgRmlsZSl7bGV0IFE9YXdhaXQgZS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6ZS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoUSl9fWxldCBvPVt7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxuPXIucGF0aDtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj0iMSI7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxBLmluZm9ybWF0aW9uT25seSYmQS5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5Iik7bGV0IG09InNjYW5jby1yZWFkLWltYWdlIixhPUE/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGksdCxvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6QT8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkUmVhZDpwWzBdPy5kYXRhLGltYWdlOnBbMV0/LmRhdGF9fXZhciBBdD1lYTthc3luYyBmdW5jdGlvbiBBYShlLEEsdD17fSl7bGV0IHI9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOntwYXRoOkEsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpsLkltYWdlLGRhdGE6ZX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9QTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIik7bGV0IG09InNjYW5jby13cml0ZS1pbWFnZSIsYT10Py53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFdyaXRlOnBbMF0/LmRhdGEsc2VyaWFsaXplZEltYWdlOnBbMV0/LmRhdGF9fXZhciB0dD1BYTthc3luYyBmdW5jdGlvbiB0YShlLEE9e30pe2xldCB0PVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkltYWdlfV0scj1lO2lmKGUgaW5zdGFuY2VvZiBGaWxlKXtsZXQgUT1hd2FpdCBlLmFycmF5QnVmZmVyKCk7cj17cGF0aDplLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShRKX19bGV0IG89W3t0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLEEuaW5mb3JtYXRpb25Pbmx5JiZBLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgbT0iZmRmLXJlYWQtaW1hZ2UiLGE9QT8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSx0LG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTpBPy5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRSZWFkOnBbMF0/LmRhdGEsaW1hZ2U6cFsxXT8uZGF0YX19dmFyIHJ0PXRhO2FzeW5jIGZ1bmN0aW9uIHJhKGUsQT17fSl7bGV0IHQ9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuSW1hZ2V9XSxyPWU7aWYoZSBpbnN0YW5jZW9mIEZpbGUpe2xldCBRPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOmUubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KFEpfX1sZXQgbz1be3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksQS5pbmZvcm1hdGlvbk9ubHkmJkEuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBtPSJ3YXNtLXJlYWQtaW1hZ2UiLGE9QT8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSx0LG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTpBPy5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRSZWFkOnBbMF0/LmRhdGEsaW1hZ2U6cFsxXT8uZGF0YX19dmFyIGl0PXJhO2FzeW5jIGZ1bmN0aW9uIGlhKGUsQSx0PXt9KXtsZXQgcj1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6QSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOmwuSW1hZ2UsZGF0YTplfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1BO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKTtsZXQgbT0id2FzbS13cml0ZS1pbWFnZSIsYT10Py53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFdyaXRlOnBbMF0/LmRhdGEsc2VyaWFsaXplZEltYWdlOnBbMV0/LmRhdGF9fXZhciBvdD1pYTthc3luYyBmdW5jdGlvbiBvYShlLEE9e30pe2xldCB0PVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkltYWdlfV0scj1lO2lmKGUgaW5zdGFuY2VvZiBGaWxlKXtsZXQgUT1hd2FpdCBlLmFycmF5QnVmZmVyKCk7cj17cGF0aDplLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShRKX19bGV0IG89W3t0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLEEuaW5mb3JtYXRpb25Pbmx5JiZBLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgbT0id2FzbS16c3RkLXJlYWQtaW1hZ2UiLGE9QT8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSx0LG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTpBPy5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRSZWFkOnBbMF0/LmRhdGEsaW1hZ2U6cFsxXT8uZGF0YX19dmFyIGF0PW9hO2FzeW5jIGZ1bmN0aW9uIGFhKGUsQSx0PXt9KXtsZXQgcj1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6QSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOmwuSW1hZ2UsZGF0YTplfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1BO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKTtsZXQgbT0id2FzbS16c3RkLXdyaXRlLWltYWdlIixhPXQ/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGkscixvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6dD8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkV3JpdGU6cFswXT8uZGF0YSxzZXJpYWxpemVkSW1hZ2U6cFsxXT8uZGF0YX19dmFyIG50PWFhO3ZhciBuYT1uZXcgTWFwKFtbInBuZyIsW0JBLGRBXV0sWyJtZXRhIixbQ0EsRUFdXSxbInRpZmYiLFt5QSxRQV1dLFsibmlmdGkiLFtoQSx3QV1dLFsianBlZyIsW1JBLGtBXV0sWyJucnJkIixbYkEsREFdXSxbInZ0ayIsW1dBLEZBXV0sWyJibXAiLFtVQSxTQV1dLFsiaGRmNSIsW09BLE5BXV0sWyJtaW5jIixbUEEseEFdXSxbIm1yYyIsW0dBLFRBXV0sWyJsc20iLFtKQSxMQV1dLFsibWdoIixbTUEsSEFdXSxbImJpb1JhZCIsW1lBLHFBXV0sWyJnaXBsIixbS0EsakFdXSxbImdlQWR3IixbdkEsekFdXSxbImdlNCIsW1ZBLF9BXV0sWyJnZTUiLFtaQSxYQV1dLFsiZ2RjbSIsWyRBLGV0XV0sWyJzY2FuY28iLFtBdCx0dF1dLFsiZmRmIixbcnQsbnVsbF1dLFsid2FzbSIsW2l0LG90XV0sWyJ3YXNtWnN0ZCIsW2F0LG50XV1dKSxBZT1uYTthc3luYyBmdW5jdGlvbiBzYShlLEE9e30pe2xldCB0PWUudHlwZT8/IiIscj1lLm5hbWU/P2UucGF0aD8/ImZpbGVOYW1lIixvPXRlKHIpLnRvTG93ZXJDYXNlKCksaT1BPy53ZWJXb3JrZXIsbj1lO2lmKGUgaW5zdGFuY2VvZiBCbG9iKXtsZXQgST1hd2FpdCBlLmFycmF5QnVmZmVyKCk7bj17cGF0aDplLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShJKX19bGV0IGc9bnVsbDtpZih0JiZlZS5oYXModCkpZz1lZS5nZXQodCk7ZWxzZSBpZihZLmhhcyhvKSlnPVkuZ2V0KG8pO2Vsc2UgZm9yKGxldCBJIG9mIEFlLnZhbHVlcygpKWlmKElbMF0hPT1udWxsKXtsZXR7d2ViV29ya2VyOnAsY291bGRSZWFkOkIsaW1hZ2U6UX09YXdhaXQgSVswXSh7cGF0aDpuLnBhdGgsZGF0YTpuLmRhdGEuc2xpY2UoKX0se3dlYldvcmtlcjppLGluZm9ybWF0aW9uT25seTpBPy5pbmZvcm1hdGlvbk9ubHksbm9Db3B5OkE/Lm5vQ29weX0pO2lmKGk9cCxCKXJldHVybiB0eXBlb2YgQTwidSImJihRPUooUSxBKSkse3dlYldvcmtlcjppLGltYWdlOlF9fWlmKCFnKXRocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCBJTyBmb3I6ICIrcik7bGV0IG09QWUuZ2V0KGcpWzBdLHt3ZWJXb3JrZXI6YSxjb3VsZFJlYWQ6cyxpbWFnZTp1fT1hd2FpdCBtKG4se3dlYldvcmtlcjppLGluZm9ybWF0aW9uT25seTpBPy5pbmZvcm1hdGlvbk9ubHksbm9Db3B5OkE/Lm5vQ29weX0pO2lmKGk9YSwhcyl0aHJvdyBFcnJvcigiQ291bGQgbm90IHJlYWQ6ICIrcik7cmV0dXJuIHR5cGVvZiBBPCJ1IiYmKHU9Sih1LEEpKSx7d2ViV29ya2VyOmksaW1hZ2U6dX19dmFyIHN0PXNhO3ZhciBJYT10eXBlb2YgZ2xvYmFsVGhpcy5uYXZpZ2F0b3I/LmhhcmR3YXJlQ29uY3VycmVuY3k9PSJudW1iZXIiP2dsb2JhbFRoaXMubmF2aWdhdG9yLmhhcmR3YXJlQ29uY3VycmVuY3k6NixFcj1uZXcgTGUoSWEsc3QpO2FzeW5jIGZ1bmN0aW9uIGdhKGUsQT17fSl7bGV0IHQ9MSxyPTAsbz0hMTt0eXBlb2YgQT09Im9iamVjdCImJih0eXBlb2YgQS56U3BhY2luZzwidSImJih0PUEuelNwYWNpbmcpLHR5cGVvZiBBLnpPcmlnaW48InUiJiYocj1BLnpPcmlnaW4pLHR5cGVvZiBBLnNvcnRlZFNlcmllczwidSImJihvPUEuc29ydGVkU2VyaWVzKSk7bGV0IGk9QXJyYXkuZnJvbShlLGFzeW5jIGZ1bmN0aW9uKHMpe2lmKHMgaW5zdGFuY2VvZiBGaWxlKXtsZXQgdT1hd2FpdCBzLmFycmF5QnVmZmVyKCk7cmV0dXJue3BhdGg6cy5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkodSl9fXJldHVybiBzfSksbj1hd2FpdCBQcm9taXNlLmFsbChpKTtvfHxuLnNvcnQoKHMsdSk9PnMucGF0aDx1LnBhdGg/LTE6cy5wYXRoPnUucGF0aD8xOjApO2xldCBnPVtdO2ZvcihsZXQgcz0wO3M8bi5sZW5ndGg7cysrKWcucHVzaChbbltzXSx7fV0pO2xldCBtPShhd2FpdCBFci5ydW5UYXNrcyhnKS5wcm9taXNlKS5tYXAocz0+e2xldCB1PXMuaW1hZ2U7cmV0dXJuIHUuaW1hZ2VUeXBlLmRpbWVuc2lvbj0zLHUuc2l6ZS5wdXNoKDEpLHUuc3BhY2luZy5wdXNoKHQpLHUub3JpZ2luLnB1c2gociksdS5kaXJlY3Rpb249bmV3IEZsb2F0NjRBcnJheSg5KSx1LmRpcmVjdGlvbi5maWxsKDApLHUuZGlyZWN0aW9uWzBdPTEsdS5kaXJlY3Rpb25bNF09MSx1LmRpcmVjdGlvbls4XT0xLHV9KSxhPVRlKG0pO3JldHVybiB0eXBlb2YgQT09Im9iamVjdCImJih0eXBlb2YgQS5jb21wb25lbnRUeXBlPCJ1Inx8dHlwZW9mIEEucGl4ZWxUeXBlPCJ1IikmJihhPUooYSxBKSkse2ltYWdlOmEsd2ViV29ya2VyUG9vbDpFcn19dmFyIGxhPWdhO2FzeW5jIGZ1bmN0aW9uIHBhKGUsQSx0PXt9KXtsZXQgcj1lOyh0eXBlb2YgdC5jb21wb25lbnRUeXBlPCJ1Inx8dHlwZW9mIHQucGl4ZWxUeXBlPCJ1IikmJihyPUooZSx0KSk7bGV0IG89dC5taW1lVHlwZSxpPXRlKEEpLnRvTG93ZXJDYXNlKCksbj10LndlYldvcmtlcixnPW51bGw7aWYodHlwZW9mIG88InUiJiZlZS5oYXMobykpZz1lZS5nZXQobyk7ZWxzZSBpZihZLmhhcyhpKSlnPVkuZ2V0KGkpO2Vsc2UgZm9yKGxldCBwIG9mIEFlLnZhbHVlcygpKWlmKHBbMV0hPT1udWxsKXtsZXR7d2ViV29ya2VyOkIsY291bGRXcml0ZTpRLHNlcmlhbGl6ZWRJbWFnZTpSfT1hd2FpdCBwWzFdKEdlKHIpLEEsdCk7aWYobj1CLFEpcmV0dXJue3dlYldvcmtlcjpuLHNlcmlhbGl6ZWRJbWFnZTpSfX1pZighZyl0aHJvdyBFcnJvcigiQ291bGQgbm90IGZpbmQgSU8gZm9yOiAiK0EpO2xldCBtPUFlLmdldChnKVsxXSx7d2ViV29ya2VyOmEsY291bGRXcml0ZTpzLHNlcmlhbGl6ZWRJbWFnZTp1fT1hd2FpdCBtKHIsQSx0KTtpZihuPWEsIXMpdGhyb3cgRXJyb3IoIkNvdWxkIG5vdCB3cml0ZTogIitBKTtyZXR1cm57d2ViV29ya2VyOm4sc2VyaWFsaXplZEltYWdlOnV9fXZhciBtYT1wYTthc3luYyBmdW5jdGlvbiB1YShlLEEsdD17fSl7bGV0IHI9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOntwYXRoOkEsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpsLkltYWdlLGRhdGE6ZX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9QTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIik7bGV0IG09ImZkZi13cml0ZS1pbWFnZSIsYT10Py53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFdyaXRlOnBbMF0/LmRhdGEsc2VyaWFsaXplZEltYWdlOnBbMV0/LmRhdGF9fXZhciBmYT11YTt2YXIgeXI9J2RhdGE6dGV4dC9qYXZhc2NyaXB0O2NoYXJzZXQ9dXRmLTgsdmFyIHR0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgZXQ9KEEsSSk9Pntmb3IodmFyIHQgaW4gSSl0dChBLHQse2dldDpJW3RdLGVudW1lcmFibGU6ITB9KX07dmFyIHZBPVN5bWJvbCgiQ29tbGluay5wcm94eSIpLGd0PVN5bWJvbCgiQ29tbGluay5lbmRwb2ludCIpLHJ0PVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSxtQT1TeW1ib2woIkNvbWxpbmsuZmluYWxpemVyIiksZUE9U3ltYm9sKCJDb21saW5rLnRocm93biIpLCRBPUE9PnR5cGVvZiBBPT0ib2JqZWN0IiYmQSE9PW51bGx8fHR5cGVvZiBBPT0iZnVuY3Rpb24iLGl0PXtjYW5IYW5kbGU6QT0+JEEoQSkmJkFbdkFdLHNlcmlhbGl6ZShBKXtsZXR7cG9ydDE6SSxwb3J0Mjp0fT1uZXcgTWVzc2FnZUNoYW5uZWw7cmV0dXJuIG9BKEEsSSksW3QsW3RdXX0sZGVzZXJpYWxpemUoQSl7cmV0dXJuIEEuc3RhcnQoKSxzdChBKX19LG90PXtjYW5IYW5kbGU6QT0+JEEoQSkmJmVBIGluIEEsc2VyaWFsaXplKHt2YWx1ZTpBfSl7bGV0IEk7cmV0dXJuIEEgaW5zdGFuY2VvZiBFcnJvcj9JPXtpc0Vycm9yOiEwLHZhbHVlOnttZXNzYWdlOkEubWVzc2FnZSxuYW1lOkEubmFtZSxzdGFjazpBLnN0YWNrfX06ST17aXNFcnJvcjohMSx2YWx1ZTpBfSxbSSxbXV19LGRlc2VyaWFsaXplKEEpe3Rocm93IEEuaXNFcnJvcj9PYmplY3QuYXNzaWduKG5ldyBFcnJvcihBLnZhbHVlLm1lc3NhZ2UpLEEudmFsdWUpOkEudmFsdWV9fSxBST1uZXcgTWFwKFtbInByb3h5IixpdF0sWyJ0aHJvdyIsb3RdXSk7ZnVuY3Rpb24gQnQoQSxJKXtmb3IobGV0IHQgb2YgQSlpZihJPT09dHx8dD09PSIqInx8dCBpbnN0YW5jZW9mIFJlZ0V4cCYmdC50ZXN0KEkpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIG9BKEEsST1nbG9iYWxUaGlzLHQ9WyIqIl0pe0kuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gZShnKXtpZighZ3x8IWcuZGF0YSlyZXR1cm47aWYoIUJ0KHQsZy5vcmlnaW4pKXtjb25zb2xlLndhcm4oYEludmFsaWQgb3JpZ2luIFwnJHtnLm9yaWdpbn1cJyBmb3IgY29tbGluayBwcm94eWApO3JldHVybn1sZXR7aWQ6cix0eXBlOmkscGF0aDpzfT1PYmplY3QuYXNzaWduKHtwYXRoOltdfSxnLmRhdGEpLGE9KGcuZGF0YS5hcmd1bWVudExpc3R8fFtdKS5tYXAoYiksbjt0cnl7bGV0IEM9cy5zbGljZSgwLC0xKS5yZWR1Y2UoKGYsUSk9PmZbUV0sQSksbz1zLnJlZHVjZSgoZixRKT0+ZltRXSxBKTtzd2l0Y2goaSl7Y2FzZSJHRVQiOm49bzticmVhaztjYXNlIlNFVCI6Q1tzLnNsaWNlKC0xKVswXV09YihnLmRhdGEudmFsdWUpLG49ITA7YnJlYWs7Y2FzZSJBUFBMWSI6bj1vLmFwcGx5KEMsYSk7YnJlYWs7Y2FzZSJDT05TVFJVQ1QiOntsZXQgZj1uZXcgbyguLi5hKTtuPWF0KGYpfWJyZWFrO2Nhc2UiRU5EUE9JTlQiOntsZXR7cG9ydDE6Zixwb3J0MjpRfT1uZXcgTWVzc2FnZUNoYW5uZWw7b0EoQSxRKSxuPVNBKGYsW2ZdKX1icmVhaztjYXNlIlJFTEVBU0UiOm49dm9pZCAwO2JyZWFrO2RlZmF1bHQ6cmV0dXJufX1jYXRjaChDKXtuPXt2YWx1ZTpDLFtlQV06MH19UHJvbWlzZS5yZXNvbHZlKG4pLmNhdGNoKEM9Pih7dmFsdWU6QyxbZUFdOjB9KSkudGhlbihDPT57bGV0W28sZl09aUEoQyk7SS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbykse2lkOnJ9KSxmKSxpPT09IlJFTEVBU0UiJiYoSS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixlKSxJSShJKSxtQSBpbiBBJiZ0eXBlb2YgQVttQV09PSJmdW5jdGlvbiImJkFbbUFdKCkpfSkuY2F0Y2goQz0+e2xldFtvLGZdPWlBKHt2YWx1ZTpuZXcgVHlwZUVycm9yKCJVbnNlcmlhbGl6YWJsZSByZXR1cm4gdmFsdWUiKSxbZUFdOjB9KTtJLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSx7aWQ6cn0pLGYpfSl9KSxJLnN0YXJ0JiZJLnN0YXJ0KCl9ZnVuY3Rpb24gQ3QoQSl7cmV0dXJuIEEuY29uc3RydWN0b3IubmFtZT09PSJNZXNzYWdlUG9ydCJ9ZnVuY3Rpb24gSUkoQSl7Q3QoQSkmJkEuY2xvc2UoKX1mdW5jdGlvbiBzdChBLEkpe3JldHVybiBwQShBLFtdLEkpfWZ1bmN0aW9uIHRBKEEpe2lmKEEpdGhyb3cgbmV3IEVycm9yKCJQcm94eSBoYXMgYmVlbiByZWxlYXNlZCBhbmQgaXMgbm90IHVzZWFibGUiKX1mdW5jdGlvbiB0SShBKXtyZXR1cm4gTShBLHt0eXBlOiJSRUxFQVNFIn0pLnRoZW4oKCk9PntJSShBKX0pfXZhciBnQT1uZXcgV2Vha01hcCxyQT0iRmluYWxpemF0aW9uUmVnaXN0cnkiaW4gZ2xvYmFsVGhpcyYmbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KEE9PntsZXQgST0oZ0EuZ2V0KEEpfHwwKS0xO2dBLnNldChBLEkpLEk9PT0wJiZ0SShBKX0pO2Z1bmN0aW9uIFF0KEEsSSl7bGV0IHQ9KGdBLmdldChJKXx8MCkrMTtnQS5zZXQoSSx0KSxyQSYmckEucmVnaXN0ZXIoQSxJLEEpfWZ1bmN0aW9uIG50KEEpe3JBJiZyQS51bnJlZ2lzdGVyKEEpfWZ1bmN0aW9uIHBBKEEsST1bXSx0PWZ1bmN0aW9uKCl7fSl7bGV0IGU9ITEsZz1uZXcgUHJveHkodCx7Z2V0KHIsaSl7aWYodEEoZSksaT09PXJ0KXJldHVybigpPT57bnQoZyksdEkoQSksZT0hMH07aWYoaT09PSJ0aGVuIil7aWYoSS5sZW5ndGg9PT0wKXJldHVybnt0aGVuOigpPT5nfTtsZXQgcz1NKEEse3R5cGU6IkdFVCIscGF0aDpJLm1hcChhPT5hLnRvU3RyaW5nKCkpfSkudGhlbihiKTtyZXR1cm4gcy50aGVuLmJpbmQocyl9cmV0dXJuIHBBKEEsWy4uLkksaV0pfSxzZXQocixpLHMpe3RBKGUpO2xldFthLG5dPWlBKHMpO3JldHVybiBNKEEse3R5cGU6IlNFVCIscGF0aDpbLi4uSSxpXS5tYXAoQz0+Qy50b1N0cmluZygpKSx2YWx1ZTphfSxuKS50aGVuKGIpfSxhcHBseShyLGkscyl7dEEoZSk7bGV0IGE9SVtJLmxlbmd0aC0xXTtpZihhPT09Z3QpcmV0dXJuIE0oQSx7dHlwZToiRU5EUE9JTlQifSkudGhlbihiKTtpZihhPT09ImJpbmQiKXJldHVybiBwQShBLEkuc2xpY2UoMCwtMSkpO2xldFtuLENdPV9BKHMpO3JldHVybiBNKEEse3R5cGU6IkFQUExZIixwYXRoOkkubWFwKG89Pm8udG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Om59LEMpLnRoZW4oYil9LGNvbnN0cnVjdChyLGkpe3RBKGUpO2xldFtzLGFdPV9BKGkpO3JldHVybiBNKEEse3R5cGU6IkNPTlNUUlVDVCIscGF0aDpJLm1hcChuPT5uLnRvU3RyaW5nKCkpLGFyZ3VtZW50TGlzdDpzfSxhKS50aGVuKGIpfX0pO3JldHVybiBRdChnLEEpLGd9ZnVuY3Rpb24gRXQoQSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sQSl9ZnVuY3Rpb24gX0EoQSl7bGV0IEk9QS5tYXAoaUEpO3JldHVybltJLm1hcCh0PT50WzBdKSxFdChJLm1hcCh0PT50WzFdKSldfXZhciBlST1uZXcgV2Vha01hcDtmdW5jdGlvbiBTQShBLEkpe3JldHVybiBlSS5zZXQoQSxJKSxBfWZ1bmN0aW9uIGF0KEEpe3JldHVybiBPYmplY3QuYXNzaWduKEEse1t2QV06ITB9KX1mdW5jdGlvbiBpQShBKXtmb3IobGV0W0ksdF1vZiBBSSlpZih0LmNhbkhhbmRsZShBKSl7bGV0W2UsZ109dC5zZXJpYWxpemUoQSk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOkksdmFsdWU6ZX0sZ119cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOkF9LGVJLmdldChBKXx8W11dfWZ1bmN0aW9uIGIoQSl7c3dpdGNoKEEudHlwZSl7Y2FzZSJIQU5ETEVSIjpyZXR1cm4gQUkuZ2V0KEEubmFtZSkuZGVzZXJpYWxpemUoQS52YWx1ZSk7Y2FzZSJSQVciOnJldHVybiBBLnZhbHVlfX1mdW5jdGlvbiBNKEEsSSx0KXtyZXR1cm4gbmV3IFByb21pc2UoZT0+e2xldCBnPWN0KCk7QS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiByKGkpeyFpLmRhdGF8fCFpLmRhdGEuaWR8fGkuZGF0YS5pZCE9PWd8fChBLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHIpLGUoaS5kYXRhKSl9KSxBLnN0YXJ0JiZBLnN0YXJ0KCksQS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKHtpZDpnfSxJKSx0KX0pfWZ1bmN0aW9uIGN0KCl7cmV0dXJuIG5ldyBBcnJheSg0KS5maWxsKDApLm1hcCgoKT0+TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKk51bWJlci5NQVhfU0FGRV9JTlRFR0VSKS50b1N0cmluZygxNikpLmpvaW4oIi0iKX1mdW5jdGlvbiBXKEEsSSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEEuYXBwbHkoSSxhcmd1bWVudHMpfX12YXJ7dG9TdHJpbmc6ZnR9PU9iamVjdC5wcm90b3R5cGUse2dldFByb3RvdHlwZU9mOk5BfT1PYmplY3QsQ0E9KEE9Pkk9PntsZXQgdD1mdC5jYWxsKEkpO3JldHVybiBBW3RdfHwoQVt0XT10LnNsaWNlKDgsLTEpLnRvTG93ZXJDYXNlKCkpfSkoT2JqZWN0LmNyZWF0ZShudWxsKSksVT1BPT4oQT1BLnRvTG93ZXJDYXNlKCksST0+Q0EoSSk9PT1BKSxzQT1BPT5JPT50eXBlb2YgST09PUEse2lzQXJyYXk6cX09QXJyYXksWj1zQSgidW5kZWZpbmVkIik7ZnVuY3Rpb24gbHQoQSl7cmV0dXJuIEEhPT1udWxsJiYhWihBKSYmQS5jb25zdHJ1Y3RvciE9PW51bGwmJiFaKEEuY29uc3RydWN0b3IpJiZGKEEuY29uc3RydWN0b3IuaXNCdWZmZXIpJiZBLmNvbnN0cnVjdG9yLmlzQnVmZmVyKEEpfXZhciBvST1VKCJBcnJheUJ1ZmZlciIpO2Z1bmN0aW9uIER0KEEpe2xldCBJO3JldHVybiB0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZBcnJheUJ1ZmZlci5pc1ZpZXc/ST1BcnJheUJ1ZmZlci5pc1ZpZXcoQSk6ST1BJiZBLmJ1ZmZlciYmb0koQS5idWZmZXIpLEl9dmFyIHV0PXNBKCJzdHJpbmciKSxGPXNBKCJmdW5jdGlvbiIpLEJJPXNBKCJudW1iZXIiKSxRQT1BPT5BIT09bnVsbCYmdHlwZW9mIEE9PSJvYmplY3QiLGh0PUE9PkE9PT0hMHx8QT09PSExLEJBPUE9PntpZihDQShBKSE9PSJvYmplY3QiKXJldHVybiExO2xldCBJPU5BKEEpO3JldHVybihJPT09bnVsbHx8ST09PU9iamVjdC5wcm90b3R5cGV8fE9iamVjdC5nZXRQcm90b3R5cGVPZihJKT09PW51bGwpJiYhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBBKSYmIShTeW1ib2wuaXRlcmF0b3IgaW4gQSl9LGR0PVUoIkRhdGUiKSx5dD1VKCJGaWxlIiksd3Q9VSgiQmxvYiIpLG10PVUoIkZpbGVMaXN0IikscHQ9QT0+UUEoQSkmJkYoQS5waXBlKSxTdD1BPT57bGV0IEk7cmV0dXJuIEEmJih0eXBlb2YgRm9ybURhdGE9PSJmdW5jdGlvbiImJkEgaW5zdGFuY2VvZiBGb3JtRGF0YXx8RihBLmFwcGVuZCkmJigoST1DQShBKSk9PT0iZm9ybWRhdGEifHxJPT09Im9iamVjdCImJkYoQS50b1N0cmluZykmJkEudG9TdHJpbmcoKT09PSJbb2JqZWN0IEZvcm1EYXRhXSIpKX0sRnQ9VSgiVVJMU2VhcmNoUGFyYW1zIiksUnQ9QT0+QS50cmltP0EudHJpbSgpOkEucmVwbGFjZSgvXltcXHNcXHVGRUZGXFx4QTBdK3xbXFxzXFx1RkVGRlxceEEwXSskL2csIiIpO2Z1bmN0aW9uIFYoQSxJLHthbGxPd25LZXlzOnQ9ITF9PXt9KXtpZihBPT09bnVsbHx8dHlwZW9mIEE+InUiKXJldHVybjtsZXQgZSxnO2lmKHR5cGVvZiBBIT0ib2JqZWN0IiYmKEE9W0FdKSxxKEEpKWZvcihlPTAsZz1BLmxlbmd0aDtlPGc7ZSsrKUkuY2FsbChudWxsLEFbZV0sZSxBKTtlbHNle2xldCByPXQ/T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoQSk6T2JqZWN0LmtleXMoQSksaT1yLmxlbmd0aCxzO2ZvcihlPTA7ZTxpO2UrKylzPXJbZV0sSS5jYWxsKG51bGwsQVtzXSxzLEEpfX1mdW5jdGlvbiBDSShBLEkpe0k9SS50b0xvd2VyQ2FzZSgpO2xldCB0PU9iamVjdC5rZXlzKEEpLGU9dC5sZW5ndGgsZztmb3IoO2UtLSA+MDspaWYoZz10W2VdLEk9PT1nLnRvTG93ZXJDYXNlKCkpcmV0dXJuIGc7cmV0dXJuIG51bGx9dmFyIHNJPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzpnbG9iYWwsUUk9QT0+IVooQSkmJkEhPT1zSTtmdW5jdGlvbiBSQSgpe2xldHtjYXNlbGVzczpBfT1RSSh0aGlzKSYmdGhpc3x8e30sST17fSx0PShlLGcpPT57bGV0IHI9QSYmQ0koSSxnKXx8ZztCQShJW3JdKSYmQkEoZSk/SVtyXT1SQShJW3JdLGUpOkJBKGUpP0lbcl09UkEoe30sZSk6cShlKT9JW3JdPWUuc2xpY2UoKTpJW3JdPWV9O2ZvcihsZXQgZT0wLGc9YXJndW1lbnRzLmxlbmd0aDtlPGc7ZSsrKWFyZ3VtZW50c1tlXSYmVihhcmd1bWVudHNbZV0sdCk7cmV0dXJuIEl9dmFyIE50PShBLEksdCx7YWxsT3duS2V5czplfT17fSk9PihWKEksKGcscik9Pnt0JiZGKGcpP0Fbcl09VyhnLHQpOkFbcl09Z30se2FsbE93bktleXM6ZX0pLEEpLFV0PUE9PihBLmNoYXJDb2RlQXQoMCk9PT02NTI3OSYmKEE9QS5zbGljZSgxKSksQSksR3Q9KEEsSSx0LGUpPT57QS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShJLnByb3RvdHlwZSxlKSxBLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1BLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJzdXBlciIse3ZhbHVlOkkucHJvdG90eXBlfSksdCYmT2JqZWN0LmFzc2lnbihBLnByb3RvdHlwZSx0KX0sa3Q9KEEsSSx0LGUpPT57bGV0IGcscixpLHM9e307aWYoST1JfHx7fSxBPT1udWxsKXJldHVybiBJO2Rve2ZvcihnPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEEpLHI9Zy5sZW5ndGg7ci0tID4wOylpPWdbcl0sKCFlfHxlKGksQSxJKSkmJiFzW2ldJiYoSVtpXT1BW2ldLHNbaV09ITApO0E9dCE9PSExJiZOQShBKX13aGlsZShBJiYoIXR8fHQoQSxJKSkmJkEhPT1PYmplY3QucHJvdG90eXBlKTtyZXR1cm4gSX0sTHQ9KEEsSSx0KT0+e0E9U3RyaW5nKEEpLCh0PT09dm9pZCAwfHx0PkEubGVuZ3RoKSYmKHQ9QS5sZW5ndGgpLHQtPUkubGVuZ3RoO2xldCBlPUEuaW5kZXhPZihJLHQpO3JldHVybiBlIT09LTEmJmU9PT10fSxKdD1BPT57aWYoIUEpcmV0dXJuIG51bGw7aWYocShBKSlyZXR1cm4gQTtsZXQgST1BLmxlbmd0aDtpZighQkkoSSkpcmV0dXJuIG51bGw7bGV0IHQ9bmV3IEFycmF5KEkpO2Zvcig7SS0tID4wOyl0W0ldPUFbSV07cmV0dXJuIHR9LEh0PShBPT5JPT5BJiZJIGluc3RhbmNlb2YgQSkodHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZOQShVaW50OEFycmF5KSksWXQ9KEEsSSk9PntsZXQgZT0oQSYmQVtTeW1ib2wuaXRlcmF0b3JdKS5jYWxsKEEpLGc7Zm9yKDsoZz1lLm5leHQoKSkmJiFnLmRvbmU7KXtsZXQgcj1nLnZhbHVlO0kuY2FsbChBLHJbMF0sclsxXSl9fSxidD0oQSxJKT0+e2xldCB0LGU9W107Zm9yKDsodD1BLmV4ZWMoSSkpIT09bnVsbDspZS5wdXNoKHQpO3JldHVybiBlfSxNdD1VKCJIVE1MRm9ybUVsZW1lbnQiKSxxdD1BPT5BLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWy1fXFxzXShbYS16XFxkXSkoXFx3KikvZyxmdW5jdGlvbih0LGUsZyl7cmV0dXJuIGUudG9VcHBlckNhc2UoKStnfSksckk9KCh7aGFzT3duUHJvcGVydHk6QX0pPT4oSSx0KT0+QS5jYWxsKEksdCkpKE9iamVjdC5wcm90b3R5cGUpLEt0PVUoIlJlZ0V4cCIpLG5JPShBLEkpPT57bGV0IHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoQSksZT17fTtWKHQsKGcscik9PntsZXQgaTsoaT1JKGcscixBKSkhPT0hMSYmKGVbcl09aXx8Zyl9KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhBLGUpfSxPdD1BPT57bkkoQSwoSSx0KT0+e2lmKEYoQSkmJlsiYXJndW1lbnRzIiwiY2FsbGVyIiwiY2FsbGVlIl0uaW5kZXhPZih0KSE9PS0xKXJldHVybiExO2xldCBlPUFbdF07aWYoRihlKSl7aWYoSS5lbnVtZXJhYmxlPSExLCJ3cml0YWJsZSJpbiBJKXtJLndyaXRhYmxlPSExO3JldHVybn1JLnNldHx8KEkuc2V0PSgpPT57dGhyb3cgRXJyb3IoIkNhbiBub3QgcmV3cml0ZSByZWFkLW9ubHkgbWV0aG9kIFwnIit0KyJcJyIpfSl9fSl9LFR0PShBLEkpPT57bGV0IHQ9e30sZT1nPT57Zy5mb3JFYWNoKHI9Pnt0W3JdPSEwfSl9O3JldHVybiBxKEEpP2UoQSk6ZShTdHJpbmcoQSkuc3BsaXQoSSkpLHR9LHh0PSgpPT57fSxQdD0oQSxJKT0+KEE9K0EsTnVtYmVyLmlzRmluaXRlKEEpP0E6SSksRkE9ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IixpST0iMDEyMzQ1Njc4OSIsRUk9e0RJR0lUOmlJLEFMUEhBOkZBLEFMUEhBX0RJR0lUOkZBK0ZBLnRvVXBwZXJDYXNlKCkraUl9LGp0PShBPTE2LEk9RUkuQUxQSEFfRElHSVQpPT57bGV0IHQ9IiIse2xlbmd0aDplfT1JO2Zvcig7QS0tOyl0Kz1JW01hdGgucmFuZG9tKCkqZXwwXTtyZXR1cm4gdH07ZnVuY3Rpb24gV3QoQSl7cmV0dXJuISEoQSYmRihBLmFwcGVuZCkmJkFbU3ltYm9sLnRvU3RyaW5nVGFnXT09PSJGb3JtRGF0YSImJkFbU3ltYm9sLml0ZXJhdG9yXSl9dmFyIFp0PUE9PntsZXQgST1uZXcgQXJyYXkoMTApLHQ9KGUsZyk9PntpZihRQShlKSl7aWYoSS5pbmRleE9mKGUpPj0wKXJldHVybjtpZighKCJ0b0pTT04iaW4gZSkpe0lbZ109ZTtsZXQgcj1xKGUpP1tdOnt9O3JldHVybiBWKGUsKGkscyk9PntsZXQgYT10KGksZysxKTshWihhKSYmKHJbc109YSl9KSxJW2ddPXZvaWQgMCxyfX1yZXR1cm4gZX07cmV0dXJuIHQoQSwwKX0sVnQ9VSgiQXN5bmNGdW5jdGlvbiIpLFh0PUE9PkEmJihRQShBKXx8RihBKSkmJkYoQS50aGVuKSYmRihBLmNhdGNoKSxCPXtpc0FycmF5OnEsaXNBcnJheUJ1ZmZlcjpvSSxpc0J1ZmZlcjpsdCxpc0Zvcm1EYXRhOlN0LGlzQXJyYXlCdWZmZXJWaWV3OkR0LGlzU3RyaW5nOnV0LGlzTnVtYmVyOkJJLGlzQm9vbGVhbjpodCxpc09iamVjdDpRQSxpc1BsYWluT2JqZWN0OkJBLGlzVW5kZWZpbmVkOlosaXNEYXRlOmR0LGlzRmlsZTp5dCxpc0Jsb2I6d3QsaXNSZWdFeHA6S3QsaXNGdW5jdGlvbjpGLGlzU3RyZWFtOnB0LGlzVVJMU2VhcmNoUGFyYW1zOkZ0LGlzVHlwZWRBcnJheTpIdCxpc0ZpbGVMaXN0Om10LGZvckVhY2g6VixtZXJnZTpSQSxleHRlbmQ6TnQsdHJpbTpSdCxzdHJpcEJPTTpVdCxpbmhlcml0czpHdCx0b0ZsYXRPYmplY3Q6a3Qsa2luZE9mOkNBLGtpbmRPZlRlc3Q6VSxlbmRzV2l0aDpMdCx0b0FycmF5Okp0LGZvckVhY2hFbnRyeTpZdCxtYXRjaEFsbDpidCxpc0hUTUxGb3JtOk10LGhhc093blByb3BlcnR5OnJJLGhhc093blByb3A6ckkscmVkdWNlRGVzY3JpcHRvcnM6bkksZnJlZXplTWV0aG9kczpPdCx0b09iamVjdFNldDpUdCx0b0NhbWVsQ2FzZTpxdCxub29wOnh0LHRvRmluaXRlTnVtYmVyOlB0LGZpbmRLZXk6Q0ksZ2xvYmFsOnNJLGlzQ29udGV4dERlZmluZWQ6UUksQUxQSEFCRVQ6RUksZ2VuZXJhdGVTdHJpbmc6anQsaXNTcGVjQ29tcGxpYW50Rm9ybTpXdCx0b0pTT05PYmplY3Q6WnQsaXNBc3luY0ZuOlZ0LGlzVGhlbmFibGU6WHR9O2Z1bmN0aW9uIEsoQSxJLHQsZSxnKXtFcnJvci5jYWxsKHRoaXMpLEVycm9yLmNhcHR1cmVTdGFja1RyYWNlP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsdGhpcy5jb25zdHJ1Y3Rvcik6dGhpcy5zdGFjaz1uZXcgRXJyb3IoKS5zdGFjayx0aGlzLm1lc3NhZ2U9QSx0aGlzLm5hbWU9IkF4aW9zRXJyb3IiLEkmJih0aGlzLmNvZGU9SSksdCYmKHRoaXMuY29uZmlnPXQpLGUmJih0aGlzLnJlcXVlc3Q9ZSksZyYmKHRoaXMucmVzcG9uc2U9Zyl9Qi5pbmhlcml0cyhLLEVycm9yLHt0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm57bWVzc2FnZTp0aGlzLm1lc3NhZ2UsbmFtZTp0aGlzLm5hbWUsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbixudW1iZXI6dGhpcy5udW1iZXIsZmlsZU5hbWU6dGhpcy5maWxlTmFtZSxsaW5lTnVtYmVyOnRoaXMubGluZU51bWJlcixjb2x1bW5OdW1iZXI6dGhpcy5jb2x1bW5OdW1iZXIsc3RhY2s6dGhpcy5zdGFjayxjb25maWc6Qi50b0pTT05PYmplY3QodGhpcy5jb25maWcpLGNvZGU6dGhpcy5jb2RlLHN0YXR1czp0aGlzLnJlc3BvbnNlJiZ0aGlzLnJlc3BvbnNlLnN0YXR1cz90aGlzLnJlc3BvbnNlLnN0YXR1czpudWxsfX19KTt2YXIgYUk9Sy5wcm90b3R5cGUsY0k9e307WyJFUlJfQkFEX09QVElPTl9WQUxVRSIsIkVSUl9CQURfT1BUSU9OIiwiRUNPTk5BQk9SVEVEIiwiRVRJTUVET1VUIiwiRVJSX05FVFdPUksiLCJFUlJfRlJfVE9PX01BTllfUkVESVJFQ1RTIiwiRVJSX0RFUFJFQ0FURUQiLCJFUlJfQkFEX1JFU1BPTlNFIiwiRVJSX0JBRF9SRVFVRVNUIiwiRVJSX0NBTkNFTEVEIiwiRVJSX05PVF9TVVBQT1JUIiwiRVJSX0lOVkFMSURfVVJMIl0uZm9yRWFjaChBPT57Y0lbQV09e3ZhbHVlOkF9fSk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoSyxjSSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGFJLCJpc0F4aW9zRXJyb3IiLHt2YWx1ZTohMH0pO0suZnJvbT0oQSxJLHQsZSxnLHIpPT57bGV0IGk9T2JqZWN0LmNyZWF0ZShhSSk7cmV0dXJuIEIudG9GbGF0T2JqZWN0KEEsaSxmdW5jdGlvbihhKXtyZXR1cm4gYSE9PUVycm9yLnByb3RvdHlwZX0scz0+cyE9PSJpc0F4aW9zRXJyb3IiKSxLLmNhbGwoaSxBLm1lc3NhZ2UsSSx0LGUsZyksaS5jYXVzZT1BLGkubmFtZT1BLm5hbWUsciYmT2JqZWN0LmFzc2lnbihpLHIpLGl9O3ZhciBsPUs7dmFyIG5BPW51bGw7ZnVuY3Rpb24gVUEoQSl7cmV0dXJuIEIuaXNQbGFpbk9iamVjdChBKXx8Qi5pc0FycmF5KEEpfWZ1bmN0aW9uIGxJKEEpe3JldHVybiBCLmVuZHNXaXRoKEEsIltdIik/QS5zbGljZSgwLC0yKTpBfWZ1bmN0aW9uIGZJKEEsSSx0KXtyZXR1cm4gQT9BLmNvbmNhdChJKS5tYXAoZnVuY3Rpb24oZyxyKXtyZXR1cm4gZz1sSShnKSwhdCYmcj8iWyIrZysiXSI6Z30pLmpvaW4odD8iLiI6IiIpOkl9ZnVuY3Rpb24genQoQSl7cmV0dXJuIEIuaXNBcnJheShBKSYmIUEuc29tZShVQSl9dmFyIF90PUIudG9GbGF0T2JqZWN0KEIse30sbnVsbCxmdW5jdGlvbihJKXtyZXR1cm4vXmlzW0EtWl0vLnRlc3QoSSl9KTtmdW5jdGlvbiB2dChBLEksdCl7aWYoIUIuaXNPYmplY3QoQSkpdGhyb3cgbmV3IFR5cGVFcnJvcigidGFyZ2V0IG11c3QgYmUgYW4gb2JqZWN0Iik7ST1JfHxuZXcobkF8fEZvcm1EYXRhKSx0PUIudG9GbGF0T2JqZWN0KHQse21ldGFUb2tlbnM6ITAsZG90czohMSxpbmRleGVzOiExfSwhMSxmdW5jdGlvbihjLHUpe3JldHVybiFCLmlzVW5kZWZpbmVkKHVbY10pfSk7bGV0IGU9dC5tZXRhVG9rZW5zLGc9dC52aXNpdG9yfHxDLHI9dC5kb3RzLGk9dC5pbmRleGVzLGE9KHQuQmxvYnx8dHlwZW9mIEJsb2I8InUiJiZCbG9iKSYmQi5pc1NwZWNDb21wbGlhbnRGb3JtKEkpO2lmKCFCLmlzRnVuY3Rpb24oZykpdGhyb3cgbmV3IFR5cGVFcnJvcigidmlzaXRvciBtdXN0IGJlIGEgZnVuY3Rpb24iKTtmdW5jdGlvbiBuKEUpe2lmKEU9PT1udWxsKXJldHVybiIiO2lmKEIuaXNEYXRlKEUpKXJldHVybiBFLnRvSVNPU3RyaW5nKCk7aWYoIWEmJkIuaXNCbG9iKEUpKXRocm93IG5ldyBsKCJCbG9iIGlzIG5vdCBzdXBwb3J0ZWQuIFVzZSBhIEJ1ZmZlciBpbnN0ZWFkLiIpO3JldHVybiBCLmlzQXJyYXlCdWZmZXIoRSl8fEIuaXNUeXBlZEFycmF5KEUpP2EmJnR5cGVvZiBCbG9iPT0iZnVuY3Rpb24iP25ldyBCbG9iKFtFXSk6QnVmZmVyLmZyb20oRSk6RX1mdW5jdGlvbiBDKEUsYyx1KXtsZXQgZD1FO2lmKEUmJiF1JiZ0eXBlb2YgRT09Im9iamVjdCIpe2lmKEIuZW5kc1dpdGgoYywie30iKSljPWU/YzpjLnNsaWNlKDAsLTIpLEU9SlNPTi5zdHJpbmdpZnkoRSk7ZWxzZSBpZihCLmlzQXJyYXkoRSkmJnp0KEUpfHwoQi5pc0ZpbGVMaXN0KEUpfHxCLmVuZHNXaXRoKGMsIltdIikpJiYoZD1CLnRvQXJyYXkoRSkpKXJldHVybiBjPWxJKGMpLGQuZm9yRWFjaChmdW5jdGlvbihOLEl0KXshKEIuaXNVbmRlZmluZWQoTil8fE49PT1udWxsKSYmSS5hcHBlbmQoaT09PSEwP2ZJKFtjXSxJdCxyKTppPT09bnVsbD9jOmMrIltdIixuKE4pKX0pLCExfXJldHVybiBVQShFKT8hMDooSS5hcHBlbmQoZkkodSxjLHIpLG4oRSkpLCExKX1sZXQgbz1bXSxmPU9iamVjdC5hc3NpZ24oX3Qse2RlZmF1bHRWaXNpdG9yOkMsY29udmVydFZhbHVlOm4saXNWaXNpdGFibGU6VUF9KTtmdW5jdGlvbiBRKEUsYyl7aWYoIUIuaXNVbmRlZmluZWQoRSkpe2lmKG8uaW5kZXhPZihFKSE9PS0xKXRocm93IEVycm9yKCJDaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQgaW4gIitjLmpvaW4oIi4iKSk7by5wdXNoKEUpLEIuZm9yRWFjaChFLGZ1bmN0aW9uKGQsUil7KCEoQi5pc1VuZGVmaW5lZChkKXx8ZD09PW51bGwpJiZnLmNhbGwoSSxkLEIuaXNTdHJpbmcoUik/Ui50cmltKCk6UixjLGYpKT09PSEwJiZRKGQsYz9jLmNvbmNhdChSKTpbUl0pfSksby5wb3AoKX19aWYoIUIuaXNPYmplY3QoQSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiZGF0YSBtdXN0IGJlIGFuIG9iamVjdCIpO3JldHVybiBRKEEpLEl9dmFyIEw9dnQ7ZnVuY3Rpb24gREkoQSl7bGV0IEk9eyIhIjoiJTI1MjEiLCJcJyI6IiUyNTI3IiwiKCI6IiUyNTI4IiwiKSI6IiUyNTI5IiwifiI6IiUyNTdFIiwiJTI1MjAiOiIrIiwiJTI1MDAiOiJcXDAifTtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEEpLnJlcGxhY2UoL1shXCcoKX5dfCUyNTIwfCUyNTAwL2csZnVuY3Rpb24oZSl7cmV0dXJuIElbZV19KX1mdW5jdGlvbiB1SShBLEkpe3RoaXMuX3BhaXJzPVtdLEEmJkwoQSx0aGlzLEkpfXZhciBoST11SS5wcm90b3R5cGU7aEkuYXBwZW5kPWZ1bmN0aW9uKEksdCl7dGhpcy5fcGFpcnMucHVzaChbSSx0XSl9O2hJLnRvU3RyaW5nPWZ1bmN0aW9uKEkpe2xldCB0PUk/ZnVuY3Rpb24oZSl7cmV0dXJuIEkuY2FsbCh0aGlzLGUsREkpfTpESTtyZXR1cm4gdGhpcy5fcGFpcnMubWFwKGZ1bmN0aW9uKGcpe3JldHVybiB0KGdbMF0pKyI9Iit0KGdbMV0pfSwiIikuam9pbigiJiIpfTt2YXIgRUE9dUk7ZnVuY3Rpb24gJHQoQSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChBKS5yZXBsYWNlKC8lMjUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNTI0L2csIiQiKS5yZXBsYWNlKC8lMjUyQy9naSwiLCIpLnJlcGxhY2UoLyUyNTIwL2csIisiKS5yZXBsYWNlKC8lMjU1Qi9naSwiWyIpLnJlcGxhY2UoLyUyNTVEL2dpLCJdIil9ZnVuY3Rpb24gWChBLEksdCl7aWYoIUkpcmV0dXJuIEE7bGV0IGU9dCYmdC5lbmNvZGV8fCR0LGc9dCYmdC5zZXJpYWxpemUscjtpZihnP3I9ZyhJLHQpOnI9Qi5pc1VSTFNlYXJjaFBhcmFtcyhJKT9JLnRvU3RyaW5nKCk6bmV3IEVBKEksdCkudG9TdHJpbmcoZSkscil7bGV0IGk9QS5pbmRleE9mKCIlMjMiKTtpIT09LTEmJihBPUEuc2xpY2UoMCxpKSksQSs9KEEuaW5kZXhPZigiPyIpPT09LTE/Ij8iOiImIikrcn1yZXR1cm4gQX12YXIgR0E9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmhhbmRsZXJzPVtdfXVzZShJLHQsZSl7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOkkscmVqZWN0ZWQ6dCxzeW5jaHJvbm91czplP2Uuc3luY2hyb25vdXM6ITEscnVuV2hlbjplP2UucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX1lamVjdChJKXt0aGlzLmhhbmRsZXJzW0ldJiYodGhpcy5oYW5kbGVyc1tJXT1udWxsKX1jbGVhcigpe3RoaXMuaGFuZGxlcnMmJih0aGlzLmhhbmRsZXJzPVtdKX1mb3JFYWNoKEkpe0IuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLGZ1bmN0aW9uKGUpe2UhPT1udWxsJiZJKGUpfSl9fSxrQT1HQTt2YXIgYUE9e3NpbGVudEpTT05QYXJzaW5nOiEwLGZvcmNlZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9O3ZhciBkST10eXBlb2YgVVJMU2VhcmNoUGFyYW1zPCJ1Ij9VUkxTZWFyY2hQYXJhbXM6RUE7dmFyIHlJPXR5cGVvZiBGb3JtRGF0YTwidSI/Rm9ybURhdGE6bnVsbDt2YXIgd0k9dHlwZW9mIEJsb2I8InUiP0Jsb2I6bnVsbDt2YXIgbUk9e2lzQnJvd3NlcjohMCxjbGFzc2VzOntVUkxTZWFyY2hQYXJhbXM6ZEksRm9ybURhdGE6eUksQmxvYjp3SX0scHJvdG9jb2xzOlsiaHR0cCIsImh0dHBzIiwiZmlsZSIsImJsb2IiLCJ1cmwiLCJkYXRhIl19O3ZhciBMQT17fTtldChMQSx7aGFzQnJvd3NlckVudjooKT0+cEksaGFzU3RhbmRhcmRCcm93c2VyRW52OigpPT5BZSxoYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnY6KCk9PkllfSk7dmFyIHBJPXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2YgZG9jdW1lbnQ8InUiLEFlPShBPT5wSSYmWyJSZWFjdE5hdGl2ZSIsIk5hdGl2ZVNjcmlwdCIsIk5TIl0uaW5kZXhPZihBKTwwKSh0eXBlb2YgbmF2aWdhdG9yPCJ1IiYmbmF2aWdhdG9yLnByb2R1Y3QpLEllPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZTwidSImJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSYmdHlwZW9mIHNlbGYuaW1wb3J0U2NyaXB0cz09ImZ1bmN0aW9uIjt2YXIgdz17Li4uTEEsLi4ubUl9O2Z1bmN0aW9uIEpBKEEsSSl7cmV0dXJuIEwoQSxuZXcgdy5jbGFzc2VzLlVSTFNlYXJjaFBhcmFtcyxPYmplY3QuYXNzaWduKHt2aXNpdG9yOmZ1bmN0aW9uKHQsZSxnLHIpe3JldHVybiB3LmlzTm9kZSYmQi5pc0J1ZmZlcih0KT8odGhpcy5hcHBlbmQoZSx0LnRvU3RyaW5nKCJiYXNlNjQiKSksITEpOnIuZGVmYXVsdFZpc2l0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sSSkpfWZ1bmN0aW9uIHRlKEEpe3JldHVybiBCLm1hdGNoQWxsKC9cXHcrfFxcWyhcXHcqKV0vZyxBKS5tYXAoST0+SVswXT09PSJbXSI/IiI6SVsxXXx8SVswXSl9ZnVuY3Rpb24gZWUoQSl7bGV0IEk9e30sdD1PYmplY3Qua2V5cyhBKSxlLGc9dC5sZW5ndGgscjtmb3IoZT0wO2U8ZztlKyspcj10W2VdLElbcl09QVtyXTtyZXR1cm4gSX1mdW5jdGlvbiBnZShBKXtmdW5jdGlvbiBJKHQsZSxnLHIpe2xldCBpPXRbcisrXSxzPU51bWJlci5pc0Zpbml0ZSgraSksYT1yPj10Lmxlbmd0aDtyZXR1cm4gaT0haSYmQi5pc0FycmF5KGcpP2cubGVuZ3RoOmksYT8oQi5oYXNPd25Qcm9wKGcsaSk/Z1tpXT1bZ1tpXSxlXTpnW2ldPWUsIXMpOigoIWdbaV18fCFCLmlzT2JqZWN0KGdbaV0pKSYmKGdbaV09W10pLEkodCxlLGdbaV0scikmJkIuaXNBcnJheShnW2ldKSYmKGdbaV09ZWUoZ1tpXSkpLCFzKX1pZihCLmlzRm9ybURhdGEoQSkmJkIuaXNGdW5jdGlvbihBLmVudHJpZXMpKXtsZXQgdD17fTtyZXR1cm4gQi5mb3JFYWNoRW50cnkoQSwoZSxnKT0+e0kodGUoZSksZyx0LDApfSksdH1yZXR1cm4gbnVsbH12YXIgY0E9Z2U7ZnVuY3Rpb24gcmUoQSxJLHQpe2lmKEIuaXNTdHJpbmcoQSkpdHJ5e3JldHVybihJfHxKU09OLnBhcnNlKShBKSxCLnRyaW0oQSl9Y2F0Y2goZSl7aWYoZS5uYW1lIT09IlN5bnRheEVycm9yIil0aHJvdyBlfXJldHVybih0fHxKU09OLnN0cmluZ2lmeSkoQSl9dmFyIEhBPXt0cmFuc2l0aW9uYWw6YUEsYWRhcHRlcjpbInhociIsImh0dHAiXSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbihJLHQpe2xldCBlPXQuZ2V0Q29udGVudFR5cGUoKXx8IiIsZz1lLmluZGV4T2YoImFwcGxpY2F0aW9uL2pzb24iKT4tMSxyPUIuaXNPYmplY3QoSSk7aWYociYmQi5pc0hUTUxGb3JtKEkpJiYoST1uZXcgRm9ybURhdGEoSSkpLEIuaXNGb3JtRGF0YShJKSlyZXR1cm4gZyYmZz9KU09OLnN0cmluZ2lmeShjQShJKSk6STtpZihCLmlzQXJyYXlCdWZmZXIoSSl8fEIuaXNCdWZmZXIoSSl8fEIuaXNTdHJlYW0oSSl8fEIuaXNGaWxlKEkpfHxCLmlzQmxvYihJKSlyZXR1cm4gSTtpZihCLmlzQXJyYXlCdWZmZXJWaWV3KEkpKXJldHVybiBJLmJ1ZmZlcjtpZihCLmlzVVJMU2VhcmNoUGFyYW1zKEkpKXJldHVybiB0LnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIsITEpLEkudG9TdHJpbmcoKTtsZXQgcztpZihyKXtpZihlLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpPi0xKXJldHVybiBKQShJLHRoaXMuZm9ybVNlcmlhbGl6ZXIpLnRvU3RyaW5nKCk7aWYoKHM9Qi5pc0ZpbGVMaXN0KEkpKXx8ZS5pbmRleE9mKCJtdWx0aXBhcnQvZm9ybS1kYXRhIik+LTEpe2xldCBhPXRoaXMuZW52JiZ0aGlzLmVudi5Gb3JtRGF0YTtyZXR1cm4gTChzP3siZmlsZXNbXSI6SX06SSxhJiZuZXcgYSx0aGlzLmZvcm1TZXJpYWxpemVyKX19cmV0dXJuIHJ8fGc/KHQuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL2pzb24iLCExKSxyZShJKSk6SX1dLHRyYW5zZm9ybVJlc3BvbnNlOltmdW5jdGlvbihJKXtsZXQgdD10aGlzLnRyYW5zaXRpb25hbHx8SEEudHJhbnNpdGlvbmFsLGU9dCYmdC5mb3JjZWRKU09OUGFyc2luZyxnPXRoaXMucmVzcG9uc2VUeXBlPT09Impzb24iO2lmKEkmJkIuaXNTdHJpbmcoSSkmJihlJiYhdGhpcy5yZXNwb25zZVR5cGV8fGcpKXtsZXQgaT0hKHQmJnQuc2lsZW50SlNPTlBhcnNpbmcpJiZnO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShJKX1jYXRjaChzKXtpZihpKXRocm93IHMubmFtZT09PSJTeW50YXhFcnJvciI/bC5mcm9tKHMsbC5FUlJfQkFEX1JFU1BPTlNFLHRoaXMsbnVsbCx0aGlzLnJlc3BvbnNlKTpzfX1yZXR1cm4gSX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSxtYXhCb2R5TGVuZ3RoOi0xLGVudjp7Rm9ybURhdGE6dy5jbGFzc2VzLkZvcm1EYXRhLEJsb2I6dy5jbGFzc2VzLkJsb2J9LHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKEkpe3JldHVybiBJPj0yMDAmJkk8MzAwfSxoZWFkZXJzOntjb21tb246e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIiwiQ29udGVudC1UeXBlIjp2b2lkIDB9fX07Qi5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCJdLEE9PntIQS5oZWFkZXJzW0FdPXt9fSk7dmFyIE89SEE7dmFyIGllPUIudG9PYmplY3RTZXQoWyJhZ2UiLCJhdXRob3JpemF0aW9uIiwiY29udGVudC1sZW5ndGgiLCJjb250ZW50LXR5cGUiLCJldGFnIiwiZXhwaXJlcyIsImZyb20iLCJob3N0IiwiaWYtbW9kaWZpZWQtc2luY2UiLCJpZi11bm1vZGlmaWVkLXNpbmNlIiwibGFzdC1tb2RpZmllZCIsImxvY2F0aW9uIiwibWF4LWZvcndhcmRzIiwicHJveHktYXV0aG9yaXphdGlvbiIsInJlZmVyZXIiLCJyZXRyeS1hZnRlciIsInVzZXItYWdlbnQiXSksU0k9QT0+e2xldCBJPXt9LHQsZSxnO3JldHVybiBBJiZBLnNwbGl0KGAlMEFgKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe2c9aS5pbmRleE9mKCI6IiksdD1pLnN1YnN0cmluZygwLGcpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLGU9aS5zdWJzdHJpbmcoZysxKS50cmltKCksISghdHx8SVt0XSYmaWVbdF0pJiYodD09PSJzZXQtY29va2llIj9JW3RdP0lbdF0ucHVzaChlKTpJW3RdPVtlXTpJW3RdPUlbdF0/SVt0XSsiLCAiK2U6ZSl9KSxJfTt2YXIgRkk9U3ltYm9sKCJpbnRlcm5hbHMiKTtmdW5jdGlvbiB6KEEpe3JldHVybiBBJiZTdHJpbmcoQSkudHJpbSgpLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gZkEoQSl7cmV0dXJuIEE9PT0hMXx8QT09bnVsbD9BOkIuaXNBcnJheShBKT9BLm1hcChmQSk6U3RyaW5nKEEpfWZ1bmN0aW9uIG9lKEEpe2xldCBJPU9iamVjdC5jcmVhdGUobnVsbCksdD0vKFteXFxzLDs9XSspXFxzKig/Oj1cXHMqKFteLDtdKykpPy9nLGU7Zm9yKDtlPXQuZXhlYyhBKTspSVtlWzFdXT1lWzJdO3JldHVybiBJfXZhciBCZT1BPT4vXlstX2EtekEtWjAtOV5gfH4sISUyMyQlJlwnKisuXSskLy50ZXN0KEEudHJpbSgpKTtmdW5jdGlvbiBZQShBLEksdCxlLGcpe2lmKEIuaXNGdW5jdGlvbihlKSlyZXR1cm4gZS5jYWxsKHRoaXMsSSx0KTtpZihnJiYoST10KSwhIUIuaXNTdHJpbmcoSSkpe2lmKEIuaXNTdHJpbmcoZSkpcmV0dXJuIEkuaW5kZXhPZihlKSE9PS0xO2lmKEIuaXNSZWdFeHAoZSkpcmV0dXJuIGUudGVzdChJKX19ZnVuY3Rpb24gQ2UoQSl7cmV0dXJuIEEudHJpbSgpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvKFthLXpcXGRdKShcXHcqKS9nLChJLHQsZSk9PnQudG9VcHBlckNhc2UoKStlKX1mdW5jdGlvbiBzZShBLEkpe2xldCB0PUIudG9DYW1lbENhc2UoIiAiK0kpO1siZ2V0Iiwic2V0IiwiaGFzIl0uZm9yRWFjaChlPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KEEsZSt0LHt2YWx1ZTpmdW5jdGlvbihnLHIsaSl7cmV0dXJuIHRoaXNbZV0uY2FsbCh0aGlzLEksZyxyLGkpfSxjb25maWd1cmFibGU6ITB9KX0pfXZhciBUPWNsYXNze2NvbnN0cnVjdG9yKEkpe0kmJnRoaXMuc2V0KEkpfXNldChJLHQsZSl7bGV0IGc9dGhpcztmdW5jdGlvbiByKHMsYSxuKXtsZXQgQz16KGEpO2lmKCFDKXRocm93IG5ldyBFcnJvcigiaGVhZGVyIG5hbWUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmciKTtsZXQgbz1CLmZpbmRLZXkoZyxDKTsoIW98fGdbb109PT12b2lkIDB8fG49PT0hMHx8bj09PXZvaWQgMCYmZ1tvXSE9PSExKSYmKGdbb3x8YV09ZkEocykpfWxldCBpPShzLGEpPT5CLmZvckVhY2gocywobixDKT0+cihuLEMsYSkpO3JldHVybiBCLmlzUGxhaW5PYmplY3QoSSl8fEkgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yP2koSSx0KTpCLmlzU3RyaW5nKEkpJiYoST1JLnRyaW0oKSkmJiFCZShJKT9pKFNJKEkpLHQpOkkhPW51bGwmJnIodCxJLGUpLHRoaXN9Z2V0KEksdCl7aWYoST16KEkpLEkpe2xldCBlPUIuZmluZEtleSh0aGlzLEkpO2lmKGUpe2xldCBnPXRoaXNbZV07aWYoIXQpcmV0dXJuIGc7aWYodD09PSEwKXJldHVybiBvZShnKTtpZihCLmlzRnVuY3Rpb24odCkpcmV0dXJuIHQuY2FsbCh0aGlzLGcsZSk7aWYoQi5pc1JlZ0V4cCh0KSlyZXR1cm4gdC5leGVjKGcpO3Rocm93IG5ldyBUeXBlRXJyb3IoInBhcnNlciBtdXN0IGJlIGJvb2xlYW58cmVnZXhwfGZ1bmN0aW9uIil9fX1oYXMoSSx0KXtpZihJPXooSSksSSl7bGV0IGU9Qi5maW5kS2V5KHRoaXMsSSk7cmV0dXJuISEoZSYmdGhpc1tlXSE9PXZvaWQgMCYmKCF0fHxZQSh0aGlzLHRoaXNbZV0sZSx0KSkpfXJldHVybiExfWRlbGV0ZShJLHQpe2xldCBlPXRoaXMsZz0hMTtmdW5jdGlvbiByKGkpe2lmKGk9eihpKSxpKXtsZXQgcz1CLmZpbmRLZXkoZSxpKTtzJiYoIXR8fFlBKGUsZVtzXSxzLHQpKSYmKGRlbGV0ZSBlW3NdLGc9ITApfX1yZXR1cm4gQi5pc0FycmF5KEkpP0kuZm9yRWFjaChyKTpyKEkpLGd9Y2xlYXIoSSl7bGV0IHQ9T2JqZWN0LmtleXModGhpcyksZT10Lmxlbmd0aCxnPSExO2Zvcig7ZS0tOyl7bGV0IHI9dFtlXTsoIUl8fFlBKHRoaXMsdGhpc1tyXSxyLEksITApKSYmKGRlbGV0ZSB0aGlzW3JdLGc9ITApfXJldHVybiBnfW5vcm1hbGl6ZShJKXtsZXQgdD10aGlzLGU9e307cmV0dXJuIEIuZm9yRWFjaCh0aGlzLChnLHIpPT57bGV0IGk9Qi5maW5kS2V5KGUscik7aWYoaSl7dFtpXT1mQShnKSxkZWxldGUgdFtyXTtyZXR1cm59bGV0IHM9ST9DZShyKTpTdHJpbmcocikudHJpbSgpO3MhPT1yJiZkZWxldGUgdFtyXSx0W3NdPWZBKGcpLGVbc109ITB9KSx0aGlzfWNvbmNhdCguLi5JKXtyZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5jb25jYXQodGhpcywuLi5JKX10b0pTT04oSSl7bGV0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gQi5mb3JFYWNoKHRoaXMsKGUsZyk9PntlIT1udWxsJiZlIT09ITEmJih0W2ddPUkmJkIuaXNBcnJheShlKT9lLmpvaW4oIiwgIik6ZSl9KSx0fVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMudG9KU09OKCkpW1N5bWJvbC5pdGVyYXRvcl0oKX10b1N0cmluZygpe3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKS5tYXAoKFtJLHRdKT0+SSsiOiAiK3QpLmpvaW4oYCUwQWApfWdldFtTeW1ib2wudG9TdHJpbmdUYWddKCl7cmV0dXJuIkF4aW9zSGVhZGVycyJ9c3RhdGljIGZyb20oSSl7cmV0dXJuIEkgaW5zdGFuY2VvZiB0aGlzP0k6bmV3IHRoaXMoSSl9c3RhdGljIGNvbmNhdChJLC4uLnQpe2xldCBlPW5ldyB0aGlzKEkpO3JldHVybiB0LmZvckVhY2goZz0+ZS5zZXQoZykpLGV9c3RhdGljIGFjY2Vzc29yKEkpe2xldCBlPSh0aGlzW0ZJXT10aGlzW0ZJXT17YWNjZXNzb3JzOnt9fSkuYWNjZXNzb3JzLGc9dGhpcy5wcm90b3R5cGU7ZnVuY3Rpb24gcihpKXtsZXQgcz16KGkpO2Vbc118fChzZShnLGkpLGVbc109ITApfXJldHVybiBCLmlzQXJyYXkoSSk/SS5mb3JFYWNoKHIpOnIoSSksdGhpc319O1QuYWNjZXNzb3IoWyJDb250ZW50LVR5cGUiLCJDb250ZW50LUxlbmd0aCIsIkFjY2VwdCIsIkFjY2VwdC1FbmNvZGluZyIsIlVzZXItQWdlbnQiLCJBdXRob3JpemF0aW9uIl0pO0IucmVkdWNlRGVzY3JpcHRvcnMoVC5wcm90b3R5cGUsKHt2YWx1ZTpBfSxJKT0+e2xldCB0PUlbMF0udG9VcHBlckNhc2UoKStJLnNsaWNlKDEpO3JldHVybntnZXQ6KCk9PkEsc2V0KGUpe3RoaXNbdF09ZX19fSk7Qi5mcmVlemVNZXRob2RzKFQpO3ZhciBtPVQ7ZnVuY3Rpb24gXyhBLEkpe2xldCB0PXRoaXN8fE8sZT1JfHx0LGc9bS5mcm9tKGUuaGVhZGVycykscj1lLmRhdGE7cmV0dXJuIEIuZm9yRWFjaChBLGZ1bmN0aW9uKHMpe3I9cy5jYWxsKHQscixnLm5vcm1hbGl6ZSgpLEk/SS5zdGF0dXM6dm9pZCAwKX0pLGcubm9ybWFsaXplKCkscn1mdW5jdGlvbiB2KEEpe3JldHVybiEhKEEmJkEuX19DQU5DRUxfXyl9ZnVuY3Rpb24gUkkoQSxJLHQpe2wuY2FsbCh0aGlzLEE/PyJjYW5jZWxlZCIsbC5FUlJfQ0FOQ0VMRUQsSSx0KSx0aGlzLm5hbWU9IkNhbmNlbGVkRXJyb3IifUIuaW5oZXJpdHMoUkksbCx7X19DQU5DRUxfXzohMH0pO3ZhciBKPVJJO2Z1bmN0aW9uIGJBKEEsSSx0KXtsZXQgZT10LmNvbmZpZy52YWxpZGF0ZVN0YXR1czshdC5zdGF0dXN8fCFlfHxlKHQuc3RhdHVzKT9BKHQpOkkobmV3IGwoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIit0LnN0YXR1cyxbbC5FUlJfQkFEX1JFUVVFU1QsbC5FUlJfQkFEX1JFU1BPTlNFXVtNYXRoLmZsb29yKHQuc3RhdHVzLzEwMCktNF0sdC5jb25maWcsdC5yZXF1ZXN0LHQpKX12YXIgTkk9dy5oYXNTdGFuZGFyZEJyb3dzZXJFbnY/e3dyaXRlKEEsSSx0LGUsZyxyKXtsZXQgaT1bQSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KEkpXTtCLmlzTnVtYmVyKHQpJiZpLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZSh0KS50b0dNVFN0cmluZygpKSxCLmlzU3RyaW5nKGUpJiZpLnB1c2goInBhdGg9IitlKSxCLmlzU3RyaW5nKGcpJiZpLnB1c2goImRvbWFpbj0iK2cpLHI9PT0hMCYmaS5wdXNoKCJzZWN1cmUiKSxkb2N1bWVudC5jb29raWU9aS5qb2luKCI7ICIpfSxyZWFkKEEpe2xldCBJPWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCIoXnw7XFxcXHMqKSgiK0ErIik9KFteO10qKSIpKTtyZXR1cm4gST9kZWNvZGVVUklDb21wb25lbnQoSVszXSk6bnVsbH0scmVtb3ZlKEEpe3RoaXMud3JpdGUoQSwiIixEYXRlLm5vdygpLTg2NGU1KX19Ont3cml0ZSgpe30scmVhZCgpe3JldHVybiBudWxsfSxyZW1vdmUoKXt9fTtmdW5jdGlvbiBNQShBKXtyZXR1cm4vXihbYS16XVthLXpcXGQrXFwtLl0qOik/XFwvXFwvL2kudGVzdChBKX1mdW5jdGlvbiBxQShBLEkpe3JldHVybiBJP0EucmVwbGFjZSgvXFwvKyQvLCIiKSsiLyIrSS5yZXBsYWNlKC9eXFwvKy8sIiIpOkF9ZnVuY3Rpb24gJChBLEkpe3JldHVybiBBJiYhTUEoSSk/cUEoQSxJKTpJfXZhciBVST13Lmhhc1N0YW5kYXJkQnJvd3NlckVudj9mdW5jdGlvbigpe2xldCBJPS8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIiksZTtmdW5jdGlvbiBnKHIpe2xldCBpPXI7cmV0dXJuIEkmJih0LnNldEF0dHJpYnV0ZSgiaHJlZiIsaSksaT10LmhyZWYpLHQuc2V0QXR0cmlidXRlKCJocmVmIixpKSx7aHJlZjp0LmhyZWYscHJvdG9jb2w6dC5wcm90b2NvbD90LnByb3RvY29sLnJlcGxhY2UoLzokLywiIik6IiIsaG9zdDp0Lmhvc3Qsc2VhcmNoOnQuc2VhcmNoP3Quc2VhcmNoLnJlcGxhY2UoL15cXD8vLCIiKToiIixoYXNoOnQuaGFzaD90Lmhhc2gucmVwbGFjZSgvXiUyMy8sIiIpOiIiLGhvc3RuYW1lOnQuaG9zdG5hbWUscG9ydDp0LnBvcnQscGF0aG5hbWU6dC5wYXRobmFtZS5jaGFyQXQoMCk9PT0iLyI/dC5wYXRobmFtZToiLyIrdC5wYXRobmFtZX19cmV0dXJuIGU9Zyh3aW5kb3cubG9jYXRpb24uaHJlZiksZnVuY3Rpb24oaSl7bGV0IHM9Qi5pc1N0cmluZyhpKT9nKGkpOmk7cmV0dXJuIHMucHJvdG9jb2w9PT1lLnByb3RvY29sJiZzLmhvc3Q9PT1lLmhvc3R9fSgpOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuITB9fSgpO2Z1bmN0aW9uIEtBKEEpe2xldCBJPS9eKFstK1xcd117MSwyNX0pKDo/XFwvXFwvfDopLy5leGVjKEEpO3JldHVybiBJJiZJWzFdfHwiIn1mdW5jdGlvbiBRZShBLEkpe0E9QXx8MTA7bGV0IHQ9bmV3IEFycmF5KEEpLGU9bmV3IEFycmF5KEEpLGc9MCxyPTAsaTtyZXR1cm4gST1JIT09dm9pZCAwP0k6MWUzLGZ1bmN0aW9uKGEpe2xldCBuPURhdGUubm93KCksQz1lW3JdO2l8fChpPW4pLHRbZ109YSxlW2ddPW47bGV0IG89cixmPTA7Zm9yKDtvIT09ZzspZis9dFtvKytdLG89byVBO2lmKGc9KGcrMSklQSxnPT09ciYmKHI9KHIrMSklQSksbi1pPEkpcmV0dXJuO2xldCBRPUMmJm4tQztyZXR1cm4gUT9NYXRoLnJvdW5kKGYqMWUzL1EpOnZvaWQgMH19dmFyIEdJPVFlO2Z1bmN0aW9uIGtJKEEsSSl7bGV0IHQ9MCxlPUdJKDUwLDI1MCk7cmV0dXJuIGc9PntsZXQgcj1nLmxvYWRlZCxpPWcubGVuZ3RoQ29tcHV0YWJsZT9nLnRvdGFsOnZvaWQgMCxzPXItdCxhPWUocyksbj1yPD1pO3Q9cjtsZXQgQz17bG9hZGVkOnIsdG90YWw6aSxwcm9ncmVzczppP3IvaTp2b2lkIDAsYnl0ZXM6cyxyYXRlOmF8fHZvaWQgMCxlc3RpbWF0ZWQ6YSYmaSYmbj8oaS1yKS9hOnZvaWQgMCxldmVudDpnfTtDW0k/ImRvd25sb2FkIjoidXBsb2FkIl09ITAsQShDKX19dmFyIG5lPXR5cGVvZiBYTUxIdHRwUmVxdWVzdDwidSIsTEk9bmUmJmZ1bmN0aW9uKEEpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0LGUpe2xldCBnPUEuZGF0YSxyPW0uZnJvbShBLmhlYWRlcnMpLm5vcm1hbGl6ZSgpLHtyZXNwb25zZVR5cGU6aSx3aXRoWFNSRlRva2VuOnN9PUEsYTtmdW5jdGlvbiBuKCl7QS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi51bnN1YnNjcmliZShhKSxBLnNpZ25hbCYmQS5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGEpfWxldCBDO2lmKEIuaXNGb3JtRGF0YShnKSl7aWYody5oYXNTdGFuZGFyZEJyb3dzZXJFbnZ8fHcuaGFzU3RhbmRhcmRCcm93c2VyV2ViV29ya2VyRW52KXIuc2V0Q29udGVudFR5cGUoITEpO2Vsc2UgaWYoKEM9ci5nZXRDb250ZW50VHlwZSgpKSE9PSExKXtsZXRbYywuLi51XT1DP0Muc3BsaXQoIjsiKS5tYXAoZD0+ZC50cmltKCkpLmZpbHRlcihCb29sZWFuKTpbXTtyLnNldENvbnRlbnRUeXBlKFtjfHwibXVsdGlwYXJ0L2Zvcm0tZGF0YSIsLi4udV0uam9pbigiOyAiKSl9fWxldCBvPW5ldyBYTUxIdHRwUmVxdWVzdDtpZihBLmF1dGgpe2xldCBjPUEuYXV0aC51c2VybmFtZXx8IiIsdT1BLmF1dGgucGFzc3dvcmQ/dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEEuYXV0aC5wYXNzd29yZCkpOiIiO3Iuc2V0KCJBdXRob3JpemF0aW9uIiwiQmFzaWMgIitidG9hKGMrIjoiK3UpKX1sZXQgZj0kKEEuYmFzZVVSTCxBLnVybCk7by5vcGVuKEEubWV0aG9kLnRvVXBwZXJDYXNlKCksWChmLEEucGFyYW1zLEEucGFyYW1zU2VyaWFsaXplciksITApLG8udGltZW91dD1BLnRpbWVvdXQ7ZnVuY3Rpb24gUSgpe2lmKCFvKXJldHVybjtsZXQgYz1tLmZyb20oImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiBvJiZvLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSxkPXtkYXRhOiFpfHxpPT09InRleHQifHxpPT09Impzb24iP28ucmVzcG9uc2VUZXh0Om8ucmVzcG9uc2Usc3RhdHVzOm8uc3RhdHVzLHN0YXR1c1RleHQ6by5zdGF0dXNUZXh0LGhlYWRlcnM6Yyxjb25maWc6QSxyZXF1ZXN0Om99O2JBKGZ1bmN0aW9uKE4pe3QoTiksbigpfSxmdW5jdGlvbihOKXtlKE4pLG4oKX0sZCksbz1udWxsfWlmKCJvbmxvYWRlbmQiaW4gbz9vLm9ubG9hZGVuZD1ROm8ub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7IW98fG8ucmVhZHlTdGF0ZSE9PTR8fG8uc3RhdHVzPT09MCYmIShvLnJlc3BvbnNlVVJMJiZvLnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6Iik9PT0wKXx8c2V0VGltZW91dChRKX0sby5vbmFib3J0PWZ1bmN0aW9uKCl7byYmKGUobmV3IGwoIlJlcXVlc3QgYWJvcnRlZCIsbC5FQ09OTkFCT1JURUQsQSxvKSksbz1udWxsKX0sby5vbmVycm9yPWZ1bmN0aW9uKCl7ZShuZXcgbCgiTmV0d29yayBFcnJvciIsbC5FUlJfTkVUV09SSyxBLG8pKSxvPW51bGx9LG8ub250aW1lb3V0PWZ1bmN0aW9uKCl7bGV0IHU9QS50aW1lb3V0PyJ0aW1lb3V0IG9mICIrQS50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiLGQ9QS50cmFuc2l0aW9uYWx8fGFBO0EudGltZW91dEVycm9yTWVzc2FnZSYmKHU9QS50aW1lb3V0RXJyb3JNZXNzYWdlKSxlKG5ldyBsKHUsZC5jbGFyaWZ5VGltZW91dEVycm9yP2wuRVRJTUVET1VUOmwuRUNPTk5BQk9SVEVELEEsbykpLG89bnVsbH0sdy5oYXNTdGFuZGFyZEJyb3dzZXJFbnYmJihzJiZCLmlzRnVuY3Rpb24ocykmJihzPXMoQSkpLHN8fHMhPT0hMSYmVUkoZikpKXtsZXQgYz1BLnhzcmZIZWFkZXJOYW1lJiZBLnhzcmZDb29raWVOYW1lJiZOSS5yZWFkKEEueHNyZkNvb2tpZU5hbWUpO2MmJnIuc2V0KEEueHNyZkhlYWRlck5hbWUsYyl9Zz09PXZvaWQgMCYmci5zZXRDb250ZW50VHlwZShudWxsKSwic2V0UmVxdWVzdEhlYWRlciJpbiBvJiZCLmZvckVhY2goci50b0pTT04oKSxmdW5jdGlvbih1LGQpe28uc2V0UmVxdWVzdEhlYWRlcihkLHUpfSksQi5pc1VuZGVmaW5lZChBLndpdGhDcmVkZW50aWFscyl8fChvLndpdGhDcmVkZW50aWFscz0hIUEud2l0aENyZWRlbnRpYWxzKSxpJiZpIT09Impzb24iJiYoby5yZXNwb25zZVR5cGU9QS5yZXNwb25zZVR5cGUpLHR5cGVvZiBBLm9uRG93bmxvYWRQcm9ncmVzcz09ImZ1bmN0aW9uIiYmby5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsa0koQS5vbkRvd25sb2FkUHJvZ3Jlc3MsITApKSx0eXBlb2YgQS5vblVwbG9hZFByb2dyZXNzPT0iZnVuY3Rpb24iJiZvLnVwbG9hZCYmby51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGtJKEEub25VcGxvYWRQcm9ncmVzcykpLChBLmNhbmNlbFRva2VufHxBLnNpZ25hbCkmJihhPWM9PntvJiYoZSghY3x8Yy50eXBlP25ldyBKKG51bGwsQSxvKTpjKSxvLmFib3J0KCksbz1udWxsKX0sQS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUoYSksQS5zaWduYWwmJihBLnNpZ25hbC5hYm9ydGVkP2EoKTpBLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsYSkpKTtsZXQgRT1LQShmKTtpZihFJiZ3LnByb3RvY29scy5pbmRleE9mKEUpPT09LTEpe2UobmV3IGwoIlVuc3VwcG9ydGVkIHByb3RvY29sICIrRSsiOiIsbC5FUlJfQkFEX1JFUVVFU1QsQSkpO3JldHVybn1vLnNlbmQoZ3x8bnVsbCl9KX07dmFyIE9BPXtodHRwOm5BLHhocjpMSX07Qi5mb3JFYWNoKE9BLChBLEkpPT57aWYoQSl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJuYW1lIix7dmFsdWU6SX0pfWNhdGNoe31PYmplY3QuZGVmaW5lUHJvcGVydHkoQSwiYWRhcHRlck5hbWUiLHt2YWx1ZTpJfSl9fSk7dmFyIEpJPUE9PmAtICR7QX1gLEVlPUE9PkIuaXNGdW5jdGlvbihBKXx8QT09PW51bGx8fEE9PT0hMSxsQT17Z2V0QWRhcHRlcjpBPT57QT1CLmlzQXJyYXkoQSk/QTpbQV07bGV0e2xlbmd0aDpJfT1BLHQsZSxnPXt9O2ZvcihsZXQgcj0wO3I8STtyKyspe3Q9QVtyXTtsZXQgaTtpZihlPXQsIUVlKHQpJiYoZT1PQVsoaT1TdHJpbmcodCkpLnRvTG93ZXJDYXNlKCldLGU9PT12b2lkIDApKXRocm93IG5ldyBsKGBVbmtub3duIGFkYXB0ZXIgXCcke2l9XCdgKTtpZihlKWJyZWFrO2dbaXx8IiUyMyIrcl09ZX1pZighZSl7bGV0IHI9T2JqZWN0LmVudHJpZXMoZykubWFwKChbcyxhXSk9PmBhZGFwdGVyICR7c30gYCsoYT09PSExPyJpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBlbnZpcm9ubWVudCI6ImlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGJ1aWxkIikpLGk9ST9yLmxlbmd0aD4xP2BzaW5jZSA6JTBBYCtyLm1hcChKSSkuam9pbihgJTBBYCk6IiAiK0pJKHJbMF0pOiJhcyBubyBhZGFwdGVyIHNwZWNpZmllZCI7dGhyb3cgbmV3IGwoIlRoZXJlIGlzIG5vIHN1aXRhYmxlIGFkYXB0ZXIgdG8gZGlzcGF0Y2ggdGhlIHJlcXVlc3QgIitpLCJFUlJfTk9UX1NVUFBPUlQiKX1yZXR1cm4gZX0sYWRhcHRlcnM6T0F9O2Z1bmN0aW9uIFRBKEEpe2lmKEEuY2FuY2VsVG9rZW4mJkEuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpLEEuc2lnbmFsJiZBLnNpZ25hbC5hYm9ydGVkKXRocm93IG5ldyBKKG51bGwsQSl9ZnVuY3Rpb24gREEoQSl7cmV0dXJuIFRBKEEpLEEuaGVhZGVycz1tLmZyb20oQS5oZWFkZXJzKSxBLmRhdGE9Xy5jYWxsKEEsQS50cmFuc2Zvcm1SZXF1ZXN0KSxbInBvc3QiLCJwdXQiLCJwYXRjaCJdLmluZGV4T2YoQS5tZXRob2QpIT09LTEmJkEuaGVhZGVycy5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiwhMSksbEEuZ2V0QWRhcHRlcihBLmFkYXB0ZXJ8fE8uYWRhcHRlcikoQSkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gVEEoQSksZS5kYXRhPV8uY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2UsZSksZS5oZWFkZXJzPW0uZnJvbShlLmhlYWRlcnMpLGV9LGZ1bmN0aW9uKGUpe3JldHVybiB2KGUpfHwoVEEoQSksZSYmZS5yZXNwb25zZSYmKGUucmVzcG9uc2UuZGF0YT1fLmNhbGwoQSxBLnRyYW5zZm9ybVJlc3BvbnNlLGUucmVzcG9uc2UpLGUucmVzcG9uc2UuaGVhZGVycz1tLmZyb20oZS5yZXNwb25zZS5oZWFkZXJzKSkpLFByb21pc2UucmVqZWN0KGUpfSl9dmFyIEhJPUE9PkEgaW5zdGFuY2VvZiBtP0EudG9KU09OKCk6QTtmdW5jdGlvbiBHKEEsSSl7ST1JfHx7fTtsZXQgdD17fTtmdW5jdGlvbiBlKG4sQyxvKXtyZXR1cm4gQi5pc1BsYWluT2JqZWN0KG4pJiZCLmlzUGxhaW5PYmplY3QoQyk/Qi5tZXJnZS5jYWxsKHtjYXNlbGVzczpvfSxuLEMpOkIuaXNQbGFpbk9iamVjdChDKT9CLm1lcmdlKHt9LEMpOkIuaXNBcnJheShDKT9DLnNsaWNlKCk6Q31mdW5jdGlvbiBnKG4sQyxvKXtpZihCLmlzVW5kZWZpbmVkKEMpKXtpZighQi5pc1VuZGVmaW5lZChuKSlyZXR1cm4gZSh2b2lkIDAsbixvKX1lbHNlIHJldHVybiBlKG4sQyxvKX1mdW5jdGlvbiByKG4sQyl7aWYoIUIuaXNVbmRlZmluZWQoQykpcmV0dXJuIGUodm9pZCAwLEMpfWZ1bmN0aW9uIGkobixDKXtpZihCLmlzVW5kZWZpbmVkKEMpKXtpZighQi5pc1VuZGVmaW5lZChuKSlyZXR1cm4gZSh2b2lkIDAsbil9ZWxzZSByZXR1cm4gZSh2b2lkIDAsQyl9ZnVuY3Rpb24gcyhuLEMsbyl7aWYobyBpbiBJKXJldHVybiBlKG4sQyk7aWYobyBpbiBBKXJldHVybiBlKHZvaWQgMCxuKX1sZXQgYT17dXJsOnIsbWV0aG9kOnIsZGF0YTpyLGJhc2VVUkw6aSx0cmFuc2Zvcm1SZXF1ZXN0OmksdHJhbnNmb3JtUmVzcG9uc2U6aSxwYXJhbXNTZXJpYWxpemVyOmksdGltZW91dDppLHRpbWVvdXRNZXNzYWdlOmksd2l0aENyZWRlbnRpYWxzOmksd2l0aFhTUkZUb2tlbjppLGFkYXB0ZXI6aSxyZXNwb25zZVR5cGU6aSx4c3JmQ29va2llTmFtZTppLHhzcmZIZWFkZXJOYW1lOmksb25VcGxvYWRQcm9ncmVzczppLG9uRG93bmxvYWRQcm9ncmVzczppLGRlY29tcHJlc3M6aSxtYXhDb250ZW50TGVuZ3RoOmksbWF4Qm9keUxlbmd0aDppLGJlZm9yZVJlZGlyZWN0OmksdHJhbnNwb3J0OmksaHR0cEFnZW50OmksaHR0cHNBZ2VudDppLGNhbmNlbFRva2VuOmksc29ja2V0UGF0aDppLHJlc3BvbnNlRW5jb2Rpbmc6aSx2YWxpZGF0ZVN0YXR1czpzLGhlYWRlcnM6KG4sQyk9PmcoSEkobiksSEkoQyksITApfTtyZXR1cm4gQi5mb3JFYWNoKE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sQSxJKSksZnVuY3Rpb24oQyl7bGV0IG89YVtDXXx8ZyxmPW8oQVtDXSxJW0NdLEMpO0IuaXNVbmRlZmluZWQoZikmJm8hPT1zfHwodFtDXT1mKX0pLHR9dmFyIHVBPSIxLjYuMiI7dmFyIHhBPXt9O1sib2JqZWN0IiwiYm9vbGVhbiIsIm51bWJlciIsImZ1bmN0aW9uIiwic3RyaW5nIiwic3ltYm9sIl0uZm9yRWFjaCgoQSxJKT0+e3hBW0FdPWZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09PUF8fCJhIisoSTwxPyJuICI6IiAiKStBfX0pO3ZhciBZST17fTt4QS50cmFuc2l0aW9uYWw9ZnVuY3Rpb24oSSx0LGUpe2Z1bmN0aW9uIGcocixpKXtyZXR1cm4iW0F4aW9zIHYiK3VBKyJdIFRyYW5zaXRpb25hbCBvcHRpb24gXCciK3IrIlwnIitpKyhlPyIuICIrZToiIil9cmV0dXJuKHIsaSxzKT0+e2lmKEk9PT0hMSl0aHJvdyBuZXcgbChnKGksIiBoYXMgYmVlbiByZW1vdmVkIisodD8iIGluICIrdDoiIikpLGwuRVJSX0RFUFJFQ0FURUQpO3JldHVybiB0JiYhWUlbaV0mJihZSVtpXT0hMCxjb25zb2xlLndhcm4oZyhpLCIgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2Iit0KyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLEk/SShyLGkscyk6ITB9fTtmdW5jdGlvbiBhZShBLEksdCl7aWYodHlwZW9mIEEhPSJvYmplY3QiKXRocm93IG5ldyBsKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0IixsLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtsZXQgZT1PYmplY3Qua2V5cyhBKSxnPWUubGVuZ3RoO2Zvcig7Zy0tID4wOyl7bGV0IHI9ZVtnXSxpPUlbcl07aWYoaSl7bGV0IHM9QVtyXSxhPXM9PT12b2lkIDB8fGkocyxyLEEpO2lmKGEhPT0hMCl0aHJvdyBuZXcgbCgib3B0aW9uICIrcisiIG11c3QgYmUgIithLGwuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2NvbnRpbnVlfWlmKHQhPT0hMCl0aHJvdyBuZXcgbCgiVW5rbm93biBvcHRpb24gIityLGwuRVJSX0JBRF9PUFRJT04pfX12YXIgaEE9e2Fzc2VydE9wdGlvbnM6YWUsdmFsaWRhdG9yczp4QX07dmFyIEg9aEEudmFsaWRhdG9ycyx4PWNsYXNze2NvbnN0cnVjdG9yKEkpe3RoaXMuZGVmYXVsdHM9SSx0aGlzLmludGVyY2VwdG9ycz17cmVxdWVzdDpuZXcga0EscmVzcG9uc2U6bmV3IGtBfX1yZXF1ZXN0KEksdCl7dHlwZW9mIEk9PSJzdHJpbmciPyh0PXR8fHt9LHQudXJsPUkpOnQ9SXx8e30sdD1HKHRoaXMuZGVmYXVsdHMsdCk7bGV0e3RyYW5zaXRpb25hbDplLHBhcmFtc1NlcmlhbGl6ZXI6ZyxoZWFkZXJzOnJ9PXQ7ZSE9PXZvaWQgMCYmaEEuYXNzZXJ0T3B0aW9ucyhlLHtzaWxlbnRKU09OUGFyc2luZzpILnRyYW5zaXRpb25hbChILmJvb2xlYW4pLGZvcmNlZEpTT05QYXJzaW5nOkgudHJhbnNpdGlvbmFsKEguYm9vbGVhbiksY2xhcmlmeVRpbWVvdXRFcnJvcjpILnRyYW5zaXRpb25hbChILmJvb2xlYW4pfSwhMSksZyE9bnVsbCYmKEIuaXNGdW5jdGlvbihnKT90LnBhcmFtc1NlcmlhbGl6ZXI9e3NlcmlhbGl6ZTpnfTpoQS5hc3NlcnRPcHRpb25zKGcse2VuY29kZTpILmZ1bmN0aW9uLHNlcmlhbGl6ZTpILmZ1bmN0aW9ufSwhMCkpLHQubWV0aG9kPSh0Lm1ldGhvZHx8dGhpcy5kZWZhdWx0cy5tZXRob2R8fCJnZXQiKS50b0xvd2VyQ2FzZSgpO2xldCBpPXImJkIubWVyZ2Uoci5jb21tb24sclt0Lm1ldGhvZF0pO3ImJkIuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSxFPT57ZGVsZXRlIHJbRV19KSx0LmhlYWRlcnM9bS5jb25jYXQoaSxyKTtsZXQgcz1bXSxhPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbihjKXt0eXBlb2YgYy5ydW5XaGVuPT0iZnVuY3Rpb24iJiZjLnJ1bldoZW4odCk9PT0hMXx8KGE9YSYmYy5zeW5jaHJvbm91cyxzLnVuc2hpZnQoYy5mdWxmaWxsZWQsYy5yZWplY3RlZCkpfSk7bGV0IG49W107dGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihjKXtuLnB1c2goYy5mdWxmaWxsZWQsYy5yZWplY3RlZCl9KTtsZXQgQyxvPTAsZjtpZighYSl7bGV0IEU9W0RBLmJpbmQodGhpcyksdm9pZCAwXTtmb3IoRS51bnNoaWZ0LmFwcGx5KEUscyksRS5wdXNoLmFwcGx5KEUsbiksZj1FLmxlbmd0aCxDPVByb21pc2UucmVzb2x2ZSh0KTtvPGY7KUM9Qy50aGVuKEVbbysrXSxFW28rK10pO3JldHVybiBDfWY9cy5sZW5ndGg7bGV0IFE9dDtmb3Iobz0wO288Zjspe2xldCBFPXNbbysrXSxjPXNbbysrXTt0cnl7UT1FKFEpfWNhdGNoKHUpe2MuY2FsbCh0aGlzLHUpO2JyZWFrfX10cnl7Qz1EQS5jYWxsKHRoaXMsUSl9Y2F0Y2goRSl7cmV0dXJuIFByb21pc2UucmVqZWN0KEUpfWZvcihvPTAsZj1uLmxlbmd0aDtvPGY7KUM9Qy50aGVuKG5bbysrXSxuW28rK10pO3JldHVybiBDfWdldFVyaShJKXtJPUcodGhpcy5kZWZhdWx0cyxJKTtsZXQgdD0kKEkuYmFzZVVSTCxJLnVybCk7cmV0dXJuIFgodCxJLnBhcmFtcyxJLnBhcmFtc1NlcmlhbGl6ZXIpfX07Qi5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSxmdW5jdGlvbihJKXt4LnByb3RvdHlwZVtJXT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnJlcXVlc3QoRyhlfHx7fSx7bWV0aG9kOkksdXJsOnQsZGF0YTooZXx8e30pLmRhdGF9KSl9fSk7Qi5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sZnVuY3Rpb24oSSl7ZnVuY3Rpb24gdChlKXtyZXR1cm4gZnVuY3Rpb24ocixpLHMpe3JldHVybiB0aGlzLnJlcXVlc3QoRyhzfHx7fSx7bWV0aG9kOkksaGVhZGVyczplP3siQ29udGVudC1UeXBlIjoibXVsdGlwYXJ0L2Zvcm0tZGF0YSJ9Ont9LHVybDpyLGRhdGE6aX0pKX19eC5wcm90b3R5cGVbSV09dCgpLHgucHJvdG90eXBlW0krIkZvcm0iXT10KCEwKX0pO3ZhciBBQT14O3ZhciBQQT1jbGFzcyBBe2NvbnN0cnVjdG9yKEkpe2lmKHR5cGVvZiBJIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoImV4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4iKTtsZXQgdDt0aGlzLnByb21pc2U9bmV3IFByb21pc2UoZnVuY3Rpb24ocil7dD1yfSk7bGV0IGU9dGhpczt0aGlzLnByb21pc2UudGhlbihnPT57aWYoIWUuX2xpc3RlbmVycylyZXR1cm47bGV0IHI9ZS5fbGlzdGVuZXJzLmxlbmd0aDtmb3IoO3ItLSA+MDspZS5fbGlzdGVuZXJzW3JdKGcpO2UuX2xpc3RlbmVycz1udWxsfSksdGhpcy5wcm9taXNlLnRoZW49Zz0+e2xldCByLGk9bmV3IFByb21pc2Uocz0+e2Uuc3Vic2NyaWJlKHMpLHI9c30pLnRoZW4oZyk7cmV0dXJuIGkuY2FuY2VsPWZ1bmN0aW9uKCl7ZS51bnN1YnNjcmliZShyKX0saX0sSShmdW5jdGlvbihyLGkscyl7ZS5yZWFzb258fChlLnJlYXNvbj1uZXcgSihyLGkscyksdChlLnJlYXNvbikpfSl9dGhyb3dJZlJlcXVlc3RlZCgpe2lmKHRoaXMucmVhc29uKXRocm93IHRoaXMucmVhc29ufXN1YnNjcmliZShJKXtpZih0aGlzLnJlYXNvbil7SSh0aGlzLnJlYXNvbik7cmV0dXJufXRoaXMuX2xpc3RlbmVycz90aGlzLl9saXN0ZW5lcnMucHVzaChJKTp0aGlzLl9saXN0ZW5lcnM9W0ldfXVuc3Vic2NyaWJlKEkpe2lmKCF0aGlzLl9saXN0ZW5lcnMpcmV0dXJuO2xldCB0PXRoaXMuX2xpc3RlbmVycy5pbmRleE9mKEkpO3QhPT0tMSYmdGhpcy5fbGlzdGVuZXJzLnNwbGljZSh0LDEpfXN0YXRpYyBzb3VyY2UoKXtsZXQgSTtyZXR1cm57dG9rZW46bmV3IEEoZnVuY3Rpb24oZyl7ST1nfSksY2FuY2VsOkl9fX0sYkk9UEE7ZnVuY3Rpb24gakEoQSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBBLmFwcGx5KG51bGwsdCl9fWZ1bmN0aW9uIFdBKEEpe3JldHVybiBCLmlzT2JqZWN0KEEpJiZBLmlzQXhpb3NFcnJvcj09PSEwfXZhciBaQT17Q29udGludWU6MTAwLFN3aXRjaGluZ1Byb3RvY29sczoxMDEsUHJvY2Vzc2luZzoxMDIsRWFybHlIaW50czoxMDMsT2s6MjAwLENyZWF0ZWQ6MjAxLEFjY2VwdGVkOjIwMixOb25BdXRob3JpdGF0aXZlSW5mb3JtYXRpb246MjAzLE5vQ29udGVudDoyMDQsUmVzZXRDb250ZW50OjIwNSxQYXJ0aWFsQ29udGVudDoyMDYsTXVsdGlTdGF0dXM6MjA3LEFscmVhZHlSZXBvcnRlZDoyMDgsSW1Vc2VkOjIyNixNdWx0aXBsZUNob2ljZXM6MzAwLE1vdmVkUGVybWFuZW50bHk6MzAxLEZvdW5kOjMwMixTZWVPdGhlcjozMDMsTm90TW9kaWZpZWQ6MzA0LFVzZVByb3h5OjMwNSxVbnVzZWQ6MzA2LFRlbXBvcmFyeVJlZGlyZWN0OjMwNyxQZXJtYW5lbnRSZWRpcmVjdDozMDgsQmFkUmVxdWVzdDo0MDAsVW5hdXRob3JpemVkOjQwMSxQYXltZW50UmVxdWlyZWQ6NDAyLEZvcmJpZGRlbjo0MDMsTm90Rm91bmQ6NDA0LE1ldGhvZE5vdEFsbG93ZWQ6NDA1LE5vdEFjY2VwdGFibGU6NDA2LFByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZDo0MDcsUmVxdWVzdFRpbWVvdXQ6NDA4LENvbmZsaWN0OjQwOSxHb25lOjQxMCxMZW5ndGhSZXF1aXJlZDo0MTEsUHJlY29uZGl0aW9uRmFpbGVkOjQxMixQYXlsb2FkVG9vTGFyZ2U6NDEzLFVyaVRvb0xvbmc6NDE0LFVuc3VwcG9ydGVkTWVkaWFUeXBlOjQxNSxSYW5nZU5vdFNhdGlzZmlhYmxlOjQxNixFeHBlY3RhdGlvbkZhaWxlZDo0MTcsSW1BVGVhcG90OjQxOCxNaXNkaXJlY3RlZFJlcXVlc3Q6NDIxLFVucHJvY2Vzc2FibGVFbnRpdHk6NDIyLExvY2tlZDo0MjMsRmFpbGVkRGVwZW5kZW5jeTo0MjQsVG9vRWFybHk6NDI1LFVwZ3JhZGVSZXF1aXJlZDo0MjYsUHJlY29uZGl0aW9uUmVxdWlyZWQ6NDI4LFRvb01hbnlSZXF1ZXN0czo0MjksUmVxdWVzdEhlYWRlckZpZWxkc1Rvb0xhcmdlOjQzMSxVbmF2YWlsYWJsZUZvckxlZ2FsUmVhc29uczo0NTEsSW50ZXJuYWxTZXJ2ZXJFcnJvcjo1MDAsTm90SW1wbGVtZW50ZWQ6NTAxLEJhZEdhdGV3YXk6NTAyLFNlcnZpY2VVbmF2YWlsYWJsZTo1MDMsR2F0ZXdheVRpbWVvdXQ6NTA0LEh0dHBWZXJzaW9uTm90U3VwcG9ydGVkOjUwNSxWYXJpYW50QWxzb05lZ290aWF0ZXM6NTA2LEluc3VmZmljaWVudFN0b3JhZ2U6NTA3LExvb3BEZXRlY3RlZDo1MDgsTm90RXh0ZW5kZWQ6NTEwLE5ldHdvcmtBdXRoZW50aWNhdGlvblJlcXVpcmVkOjUxMX07T2JqZWN0LmVudHJpZXMoWkEpLmZvckVhY2goKFtBLEldKT0+e1pBW0ldPUF9KTt2YXIgTUk9WkE7ZnVuY3Rpb24gcUkoQSl7bGV0IEk9bmV3IEFBKEEpLHQ9VyhBQS5wcm90b3R5cGUucmVxdWVzdCxJKTtyZXR1cm4gQi5leHRlbmQodCxBQS5wcm90b3R5cGUsSSx7YWxsT3duS2V5czohMH0pLEIuZXh0ZW5kKHQsSSxudWxsLHthbGxPd25LZXlzOiEwfSksdC5jcmVhdGU9ZnVuY3Rpb24oZyl7cmV0dXJuIHFJKEcoQSxnKSl9LHR9dmFyIGg9cUkoTyk7aC5BeGlvcz1BQTtoLkNhbmNlbGVkRXJyb3I9SjtoLkNhbmNlbFRva2VuPWJJO2guaXNDYW5jZWw9djtoLlZFUlNJT049dUE7aC50b0Zvcm1EYXRhPUw7aC5BeGlvc0Vycm9yPWw7aC5DYW5jZWw9aC5DYW5jZWxlZEVycm9yO2guYWxsPWZ1bmN0aW9uKEkpe3JldHVybiBQcm9taXNlLmFsbChJKX07aC5zcHJlYWQ9akE7aC5pc0F4aW9zRXJyb3I9V0E7aC5tZXJnZUNvbmZpZz1HO2guQXhpb3NIZWFkZXJzPW07aC5mb3JtVG9KU09OPUE9PmNBKEIuaXNIVE1MRm9ybShBKT9uZXcgRm9ybURhdGEoQSk6QSk7aC5nZXRBZGFwdGVyPWxBLmdldEFkYXB0ZXI7aC5IdHRwU3RhdHVzQ29kZT1NSTtoLmRlZmF1bHQ9aDt2YXIgZEE9aDt2YXJ7QXhpb3M6b2ksQXhpb3NFcnJvcjpCaSxDYW5jZWxlZEVycm9yOkNpLGlzQ2FuY2VsOnNpLENhbmNlbFRva2VuOlFpLFZFUlNJT046bmksYWxsOkVpLENhbmNlbDphaSxpc0F4aW9zRXJyb3I6Y2ksc3ByZWFkOmZpLHRvRm9ybURhdGE6bGksQXhpb3NIZWFkZXJzOkRpLEh0dHBTdGF0dXNDb2RlOnVpLGZvcm1Ub0pTT046aGksZ2V0QWRhcHRlcjpkaSxtZXJnZUNvbmZpZzp5aX09ZEE7dmFyIElBLGssWEEsVkE9e2Vudjp7ZW1zY3JpcHRlbl9ub3RpZnlfbWVtb3J5X2dyb3d0aDpmdW5jdGlvbihBKXtYQT1uZXcgVWludDhBcnJheShrLmV4cG9ydHMubWVtb3J5LmJ1ZmZlcil9fX0seUE9Y2xhc3N7aW5pdCgpe3JldHVybiBJQXx8KHR5cGVvZiBmZXRjaDwidSI/SUE9ZmV0Y2goImRhdGE6YXBwbGljYXRpb24vd2FzbTtiYXNlNjQsIitLSSkudGhlbihJPT5JLmFycmF5QnVmZmVyKCkpLnRoZW4oST0+V2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoSSxWQSkpLnRoZW4odGhpcy5faW5pdCk6SUE9V2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoQnVmZmVyLmZyb20oS0ksImJhc2U2NCIpLFZBKS50aGVuKHRoaXMuX2luaXQpLElBKX1faW5pdChJKXtrPUkuaW5zdGFuY2UsVkEuZW52LmVtc2NyaXB0ZW5fbm90aWZ5X21lbW9yeV9ncm93dGgoMCl9ZGVjb2RlKEksdD0wKXtpZighayl0aHJvdyBuZXcgRXJyb3IoIlpTVEREZWNvZGVyOiBBd2FpdCAuaW5pdCgpIGJlZm9yZSBkZWNvZGluZy4iKTtsZXQgZT1JLmJ5dGVMZW5ndGgsZz1rLmV4cG9ydHMubWFsbG9jKGUpO1hBLnNldChJLGcpLHQ9dHx8TnVtYmVyKGsuZXhwb3J0cy5aU1REX2ZpbmREZWNvbXByZXNzZWRTaXplKGcsZSkpO2xldCByPWsuZXhwb3J0cy5tYWxsb2ModCksaT1rLmV4cG9ydHMuWlNURF9kZWNvbXByZXNzKHIsdCxnLGUpLHM9WEEuc2xpY2UocixyK2kpO3JldHVybiBrLmV4cG9ydHMuZnJlZShnKSxrLmV4cG9ydHMuZnJlZShyKSxzfX0sS0k9IkFHRnpiUUVBQUFBQmJnNWdBMzkvZndGL1lBRi9BWDlnQW45L0FHQUJmd0JnQlg5L2YzOS9BWDlnQTM5L2Z3QmdCSDkvZjM4QmYyQUFBWDlnQW45L0FYOWdCMzkvZjM5L2YzOEJmMkFDZjM4QmZtQUlmMzkvZjM5L2YzOEJmMkFGZjM5L2YzOEFZQTUvZjM5L2YzOS9mMzkvZjM5L2Z3Ri9BaWNCQTJWdWRoOWxiWE5qY21sd2RHVnVYMjV2ZEdsbWVWOXRaVzF2Y25sZlozSnZkM1JvQUFNREl5SUhBQUFCQVFNSEF3RUFDUVFBQlFFSUNBRUZCZ1FFQkFNR0FBQUtBQVVMREEwR0JBVUJjQUVCQVFVSEFRR0FBb0NBQWdZSUFYOEJRWUNqQkFzSHJnRUxCbTFsYlc5eWVRSUFCbTFoYkd4dll3QUZCR1p5WldVQUJneGFVMVJFWDJselJYSnliM0lBRWhsYVUxUkVYMlpwYm1SRVpXTnZiWEJ5WlhOelpXUlRhWHBsQUJ3UFdsTlVSRjlrWldOdmJYQnlaWE56QUNJWlgxOXBibVJwY21WamRGOW1kVzVqZEdsdmJsOTBZV0pzWlFFQUVGOWZaWEp5Ym05ZmJHOWpZWFJwYjI0QUFRbHpkR0ZqYTFOaGRtVUFCd3h6ZEdGamExSmxjM1J2Y21VQUNBcHpkR0ZqYTBGc2JHOWpBQWtLaS9JQklnVUFRWVFmQ3pNQkFYOGdBZ1JBSUFBaEF3TkFJQU1nQVMwQUFEb0FBQ0FEUVFGcUlRTWdBVUVCYWlFQklBSkJBV3NpQWcwQUN3c2dBQXNwQVFGL0lBSUVRQ0FBSVFNRFFDQURJQUU2QUFBZ0EwRUJhaUVESUFKQkFXc2lBZzBBQ3dzZ0FBdHNBUUovUVlBZktBSUFJZ0VnQUVFSGFrRjRjU0lDYWlFQUFrQWdBa0VBSUFBZ0FVMGJEUUFnQUQ4QVFSQjBTd1JBSUFBL0FFRVFkR3RCLy84RGFrRVFka0FBUVg5R0JIOUJBQVZCQUJBQVFRRUxSUTBCQzBHQUh5QUFOZ0lBSUFFUEMwR0VIMEV3TmdJQVFYOEx1U2NCQzM4akFFRVFheUlLSkFBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBQkI5QUZOQkVCQmlCOG9BZ0FpQmtFUUlBQkJDMnBCZUhFZ0FFRUxTUnNpQlVFRGRpSUFkaUlCUVFOeEJFQUNRQ0FCUVg5elFRRnhJQUJxSWdKQkEzUWlBVUd3SDJvaUFDQUJRYmdmYWlnQ0FDSUJLQUlJSWdSR0JFQkJpQjhnQmtGK0lBSjNjVFlDQUF3QkN5QUVJQUEyQWd3Z0FDQUVOZ0lJQ3lBQlFRaHFJUUFnQVNBQ1FRTjBJZ0pCQTNJMkFnUWdBU0FDYWlJQklBRW9BZ1JCQVhJMkFnUU1Ed3NnQlVHUUh5Z0NBQ0lIVFEwQklBRUVRQUpBUVFJZ0FIUWlBa0VBSUFKcmNpQUJJQUIwY1dnaUFVRURkQ0lBUWJBZmFpSUNJQUJCdUI5cUtBSUFJZ0FvQWdnaUJFWUVRRUdJSHlBR1FYNGdBWGR4SWdZMkFnQU1BUXNnQkNBQ05nSU1JQUlnQkRZQ0NBc2dBQ0FGUVFOeU5nSUVJQUFnQldvaUNDQUJRUU4wSWdFZ0JXc2lCRUVCY2pZQ0JDQUFJQUZxSUFRMkFnQWdCd1JBSUFkQmVIRkJzQjlxSVFGQm5COG9BZ0FoQWdKL0lBWkJBU0FIUVFOMmRDSURjVVVFUUVHSUh5QURJQVp5TmdJQUlBRU1BUXNnQVNnQ0NBc2hBeUFCSUFJMkFnZ2dBeUFDTmdJTUlBSWdBVFlDRENBQ0lBTTJBZ2dMSUFCQkNHb2hBRUdjSHlBSU5nSUFRWkFmSUFRMkFnQU1Ed3RCakI4b0FnQWlDMFVOQVNBTGFFRUNkRUc0SVdvb0FnQWlBaWdDQkVGNGNTQUZheUVESUFJaEFRTkFBa0FnQVNnQ0VDSUFSUVJBSUFFb0FoUWlBRVVOQVFzZ0FDZ0NCRUY0Y1NBRmF5SUJJQU1nQVNBRFNTSUJHeUVESUFBZ0FpQUJHeUVDSUFBaEFRd0JDd3NnQWlnQ0dDRUpJQUlnQWlnQ0RDSUVSd1JBUVpnZktBSUFHaUFDS0FJSUlnQWdCRFlDRENBRUlBQTJBZ2dNRGdzZ0FrRVVhaUlCS0FJQUlnQkZCRUFnQWlnQ0VDSUFSUTBESUFKQkVHb2hBUXNEUUNBQklRZ2dBQ0lFUVJScUlnRW9BZ0FpQUEwQUlBUkJFR29oQVNBRUtBSVFJZ0FOQUFzZ0NFRUFOZ0lBREEwTFFYOGhCU0FBUWI5L1N3MEFJQUJCQzJvaUFFRjRjU0VGUVl3ZktBSUFJZ2hGRFFCQkFDQUZheUVEQWtBQ1FBSkFBbjlCQUNBRlFZQUNTUTBBR2tFZklBVkIvLy8vQjBzTkFCb2dCVUVtSUFCQkNIWm5JZ0JyZGtFQmNTQUFRUUYwYTBFK2Fnc2lCMEVDZEVHNElXb29BZ0FpQVVVRVFFRUFJUUFNQVF0QkFDRUFJQVZCR1NBSFFRRjJhMEVBSUFkQkgwY2JkQ0VDQTBBQ1FDQUJLQUlFUVhoeElBVnJJZ1lnQTA4TkFDQUJJUVFnQmlJRERRQkJBQ0VESUFFaEFBd0RDeUFBSUFFb0FoUWlCaUFHSUFFZ0FrRWRka0VFY1dvb0FoQWlBVVliSUFBZ0Joc2hBQ0FDUVFGMElRSWdBUTBBQ3dzZ0FDQUVja1VFUUVFQUlRUkJBaUFIZENJQVFRQWdBR3R5SUFoeElnQkZEUU1nQUdoQkFuUkJ1Q0ZxS0FJQUlRQUxJQUJGRFFFTEEwQWdBQ2dDQkVGNGNTQUZheUlDSUFOSklRRWdBaUFESUFFYklRTWdBQ0FFSUFFYklRUWdBQ2dDRUNJQkJIOGdBUVVnQUNnQ0ZBc2lBQTBBQ3dzZ0JFVU5BQ0FEUVpBZktBSUFJQVZyVHcwQUlBUW9BaGdoQnlBRUlBUW9BZ3dpQWtjRVFFR1lIeWdDQUJvZ0JDZ0NDQ0lBSUFJMkFnd2dBaUFBTmdJSURBd0xJQVJCRkdvaUFTZ0NBQ0lBUlFSQUlBUW9BaEFpQUVVTkF5QUVRUkJxSVFFTEEwQWdBU0VHSUFBaUFrRVVhaUlCS0FJQUlnQU5BQ0FDUVJCcUlRRWdBaWdDRUNJQURRQUxJQVpCQURZQ0FBd0xDeUFGUVpBZktBSUFJZ1JOQkVCQm5COG9BZ0FoQUFKQUlBUWdCV3NpQVVFUVR3UkFJQUFnQldvaUFpQUJRUUZ5TmdJRUlBQWdCR29nQVRZQ0FDQUFJQVZCQTNJMkFnUU1BUXNnQUNBRVFRTnlOZ0lFSUFBZ0JHb2lBU0FCS0FJRVFRRnlOZ0lFUVFBaEFrRUFJUUVMUVpBZklBRTJBZ0JCbkI4Z0FqWUNBQ0FBUVFocUlRQU1EUXNnQlVHVUh5Z0NBQ0lDU1FSQVFaUWZJQUlnQldzaUFUWUNBRUdnSDBHZ0h5Z0NBQ0lBSUFWcUlnSTJBZ0FnQWlBQlFRRnlOZ0lFSUFBZ0JVRURjallDQkNBQVFRaHFJUUFNRFF0QkFDRUFJQVZCTDJvaUF3Si9RZUFpS0FJQUJFQkI2Q0lvQWdBTUFRdEI3Q0pDZnpjQ0FFSGtJa0tBb0lDQWdJQUVOd0lBUWVBaUlBcEJER3BCY0hGQjJLclZxZ1Z6TmdJQVFmUWlRUUEyQWdCQnhDSkJBRFlDQUVHQUlBc2lBV29pQmtFQUlBRnJJZ2h4SWdFZ0JVME5ERUhBSWlnQ0FDSUVCRUJCdUNJb0FnQWlCeUFCYWlJSklBZE5JQVFnQ1VseURRMExBa0JCeENJdEFBQkJCSEZGQkVBQ1FBSkFBa0FDUUVHZ0h5Z0NBQ0lFQkVCQnlDSWhBQU5BSUFRZ0FDZ0NBQ0lIVHdSQUlBY2dBQ2dDQkdvZ0JFc05Bd3NnQUNnQ0NDSUFEUUFMQzBFQUVBUWlBa0YvUmcwRElBRWhCa0hrSWlnQ0FDSUFRUUZySWdRZ0FuRUVRQ0FCSUFKcklBSWdCR3BCQUNBQWEzRnFJUVlMSUFVZ0JrOE5BMEhBSWlnQ0FDSUFCRUJCdUNJb0FnQWlCQ0FHYWlJSUlBUk5JQUFnQ0VseURRUUxJQVlRQkNJQUlBSkhEUUVNQlFzZ0JpQUNheUFJY1NJR0VBUWlBaUFBS0FJQUlBQW9BZ1JxUmcwQklBSWhBQXNnQUVGL1JnMEJJQVZCTUdvZ0JrMEVRQ0FBSVFJTUJBdEI2Q0lvQWdBaUFpQURJQVpyYWtFQUlBSnJjU0lDRUFSQmYwWU5BU0FDSUFacUlRWWdBQ0VDREFNTElBSkJmMGNOQWd0QnhDSkJ4Q0lvQWdCQkJISTJBZ0FMSUFFUUJDSUNRWDlHUVFBUUJDSUFRWDlHY2lBQUlBSk5jZzBGSUFBZ0Ftc2lCaUFGUVNocVRRMEZDMEc0SWtHNElpZ0NBQ0FHYWlJQU5nSUFRYndpS0FJQUlBQkpCRUJCdkNJZ0FEWUNBQXNDUUVHZ0h5Z0NBQ0lEQkVCQnlDSWhBQU5BSUFJZ0FDZ0NBQ0lCSUFBb0FnUWlCR3BHRFFJZ0FDZ0NDQ0lBRFFBTERBUUxRWmdmS0FJQUlnQkJBQ0FBSUFKTkcwVUVRRUdZSHlBQ05nSUFDMEVBSVFCQnpDSWdCallDQUVISUlpQUNOZ0lBUWFnZlFYODJBZ0JCckI5QjRDSW9BZ0EyQWdCQjFDSkJBRFlDQUFOQUlBQkJBM1FpQVVHNEgyb2dBVUd3SDJvaUJEWUNBQ0FCUWJ3ZmFpQUVOZ0lBSUFCQkFXb2lBRUVnUncwQUMwR1VIeUFHUVNocklnQkJlQ0FDYTBFSGNTSUJheUlFTmdJQVFhQWZJQUVnQW1vaUFUWUNBQ0FCSUFSQkFYSTJBZ1FnQUNBQ2FrRW9OZ0lFUWFRZlFmQWlLQUlBTmdJQURBUUxJQUlnQTAwZ0FTQURTM0lOQWlBQUtBSU1RUWh4RFFJZ0FDQUVJQVpxTmdJRVFhQWZJQU5CZUNBRGEwRUhjU0lBYWlJQk5nSUFRWlFmUVpRZktBSUFJQVpxSWdJZ0FHc2lBRFlDQUNBQklBQkJBWEkyQWdRZ0FpQURha0VvTmdJRVFhUWZRZkFpS0FJQU5nSUFEQU1MUVFBaEJBd0tDMEVBSVFJTUNBdEJtQjhvQWdBZ0Frc0VRRUdZSHlBQ05nSUFDeUFDSUFacUlRRkJ5Q0loQUFKQUFrQUNRQU5BSUFFZ0FDZ0NBRWNFUUNBQUtBSUlJZ0FOQVF3Q0N3c2dBQzBBREVFSWNVVU5BUXRCeUNJaEFBTkFJQU1nQUNnQ0FDSUJUd1JBSUFFZ0FDZ0NCR29pQkNBRFN3MERDeUFBS0FJSUlRQU1BQXNBQ3lBQUlBSTJBZ0FnQUNBQUtBSUVJQVpxTmdJRUlBSkJlQ0FDYTBFSGNXb2lCeUFGUVFOeU5nSUVJQUZCZUNBQmEwRUhjV29pQmlBRklBZHFJZ1ZySVFBZ0F5QUdSZ1JBUWFBZklBVTJBZ0JCbEI5QmxCOG9BZ0FnQUdvaUFEWUNBQ0FGSUFCQkFYSTJBZ1FNQ0F0Qm5COG9BZ0FnQmtZRVFFR2NIeUFGTmdJQVFaQWZRWkFmS0FJQUlBQnFJZ0EyQWdBZ0JTQUFRUUZ5TmdJRUlBQWdCV29nQURZQ0FBd0lDeUFHS0FJRUlnTkJBM0ZCQVVjTkJpQURRWGh4SVFrZ0EwSC9BVTBFUUNBR0tBSU1JZ0VnQmlnQ0NDSUNSZ1JBUVlnZlFZZ2ZLQUlBUVg0Z0EwRURkbmR4TmdJQURBY0xJQUlnQVRZQ0RDQUJJQUkyQWdnTUJnc2dCaWdDR0NFSUlBWWdCaWdDRENJQ1J3UkFJQVlvQWdnaUFTQUNOZ0lNSUFJZ0FUWUNDQXdGQ3lBR1FSUnFJZ0VvQWdBaUEwVUVRQ0FHS0FJUUlnTkZEUVFnQmtFUWFpRUJDd05BSUFFaEJDQURJZ0pCRkdvaUFTZ0NBQ0lERFFBZ0FrRVFhaUVCSUFJb0FoQWlBdzBBQ3lBRVFRQTJBZ0FNQkF0QmxCOGdCa0VvYXlJQVFYZ2dBbXRCQjNFaUFXc2lDRFlDQUVHZ0h5QUJJQUpxSWdFMkFnQWdBU0FJUVFGeU5nSUVJQUFnQW1wQktEWUNCRUdrSDBId0lpZ0NBRFlDQUNBRElBUkJKeUFFYTBFSGNXcEJMMnNpQUNBQUlBTkJFR3BKR3lJQlFSczJBZ1FnQVVIUUlpa0NBRGNDRUNBQlFjZ2lLUUlBTndJSVFkQWlJQUZCQ0dvMkFnQkJ6Q0lnQmpZQ0FFSElJaUFDTmdJQVFkUWlRUUEyQWdBZ0FVRVlhaUVBQTBBZ0FFRUhOZ0lFSUFCQkNHb2dBRUVFYWlFQUlBUkpEUUFMSUFFZ0EwWU5BQ0FCSUFFb0FnUkJmbkUyQWdRZ0F5QUJJQU5ySWdKQkFYSTJBZ1FnQVNBQ05nSUFJQUpCL3dGTkJFQWdBa0Y0Y1VHd0gyb2hBQUovUVlnZktBSUFJZ0ZCQVNBQ1FRTjJkQ0lDY1VVRVFFR0lIeUFCSUFKeU5nSUFJQUFNQVFzZ0FDZ0NDQXNoQVNBQUlBTTJBZ2dnQVNBRE5nSU1JQU1nQURZQ0RDQURJQUUyQWdnTUFRdEJIeUVBSUFKQi8vLy9CMDBFUUNBQ1FTWWdBa0VJZG1jaUFHdDJRUUZ4SUFCQkFYUnJRVDVxSVFBTElBTWdBRFlDSENBRFFnQTNBaEFnQUVFQ2RFRzRJV29oQVFKQUFrQkJqQjhvQWdBaUJFRUJJQUIwSWdaeFJRUkFRWXdmSUFRZ0JuSTJBZ0FnQVNBRE5nSUFEQUVMSUFKQkdTQUFRUUYyYTBFQUlBQkJIMGNiZENFQUlBRW9BZ0FoQkFOQUlBUWlBU2dDQkVGNGNTQUNSZzBDSUFCQkhYWWhCQ0FBUVFGMElRQWdBU0FFUVFSeGFpSUdLQUlRSWdRTkFBc2dCaUFETmdJUUN5QURJQUUyQWhnZ0F5QUROZ0lNSUFNZ0F6WUNDQXdCQ3lBQktBSUlJZ0FnQXpZQ0RDQUJJQU0yQWdnZ0EwRUFOZ0lZSUFNZ0FUWUNEQ0FESUFBMkFnZ0xRWlFmS0FJQUlnQWdCVTBOQUVHVUh5QUFJQVZySWdFMkFnQkJvQjlCb0I4b0FnQWlBQ0FGYWlJQ05nSUFJQUlnQVVFQmNqWUNCQ0FBSUFWQkEzSTJBZ1FnQUVFSWFpRUFEQWdMUVlRZlFUQTJBZ0JCQUNFQURBY0xRUUFoQWdzZ0NFVU5BQUpBSUFZb0Fod2lBVUVDZEVHNElXb2lCQ2dDQUNBR1JnUkFJQVFnQWpZQ0FDQUNEUUZCakI5QmpCOG9BZ0JCZmlBQmQzRTJBZ0FNQWdzZ0NFRVFRUlFnQ0NnQ0VDQUdSaHRxSUFJMkFnQWdBa1VOQVFzZ0FpQUlOZ0lZSUFZb0FoQWlBUVJBSUFJZ0FUWUNFQ0FCSUFJMkFoZ0xJQVlvQWhRaUFVVU5BQ0FDSUFFMkFoUWdBU0FDTmdJWUN5QUFJQWxxSVFBZ0JpQUphaUlHS0FJRUlRTUxJQVlnQTBGK2NUWUNCQ0FGSUFCQkFYSTJBZ1FnQUNBRmFpQUFOZ0lBSUFCQi93Rk5CRUFnQUVGNGNVR3dIMm9oQVFKL1FZZ2ZLQUlBSWdKQkFTQUFRUU4yZENJQWNVVUVRRUdJSHlBQUlBSnlOZ0lBSUFFTUFRc2dBU2dDQ0FzaEFDQUJJQVUyQWdnZ0FDQUZOZ0lNSUFVZ0FUWUNEQ0FGSUFBMkFnZ01BUXRCSHlFRElBQkIvLy8vQjAwRVFDQUFRU1lnQUVFSWRtY2lBV3QyUVFGeElBRkJBWFJyUVQ1cUlRTUxJQVVnQXpZQ0hDQUZRZ0EzQWhBZ0EwRUNkRUc0SVdvaEFRSkFBa0JCakI4b0FnQWlBa0VCSUFOMElnUnhSUVJBUVl3ZklBSWdCSEkyQWdBZ0FTQUZOZ0lBREFFTElBQkJHU0FEUVFGMmEwRUFJQU5CSDBjYmRDRURJQUVvQWdBaEFnTkFJQUlpQVNnQ0JFRjRjU0FBUmcwQ0lBTkJIWFloQWlBRFFRRjBJUU1nQVNBQ1FRUnhhaUlFS0FJUUlnSU5BQXNnQkNBRk5nSVFDeUFGSUFFMkFoZ2dCU0FGTmdJTUlBVWdCVFlDQ0F3QkN5QUJLQUlJSWdBZ0JUWUNEQ0FCSUFVMkFnZ2dCVUVBTmdJWUlBVWdBVFlDRENBRklBQTJBZ2dMSUFkQkNHb2hBQXdDQ3dKQUlBZEZEUUFDUUNBRUtBSWNJZ0JCQW5SQnVDRnFJZ0VvQWdBZ0JFWUVRQ0FCSUFJMkFnQWdBZzBCUVl3ZklBaEJmaUFBZDNFaUNEWUNBQXdDQ3lBSFFSQkJGQ0FIS0FJUUlBUkdHMm9nQWpZQ0FDQUNSUTBCQ3lBQ0lBYzJBaGdnQkNnQ0VDSUFCRUFnQWlBQU5nSVFJQUFnQWpZQ0dBc2dCQ2dDRkNJQVJRMEFJQUlnQURZQ0ZDQUFJQUkyQWhnTEFrQWdBMEVQVFFSQUlBUWdBeUFGYWlJQVFRTnlOZ0lFSUFBZ0JHb2lBQ0FBS0FJRVFRRnlOZ0lFREFFTElBUWdCVUVEY2pZQ0JDQUVJQVZxSWdJZ0EwRUJjallDQkNBQ0lBTnFJQU0yQWdBZ0EwSC9BVTBFUUNBRFFYaHhRYkFmYWlFQUFuOUJpQjhvQWdBaUFVRUJJQU5CQTNaMElnTnhSUVJBUVlnZklBRWdBM0kyQWdBZ0FBd0JDeUFBS0FJSUN5RUJJQUFnQWpZQ0NDQUJJQUkyQWd3Z0FpQUFOZ0lNSUFJZ0FUWUNDQXdCQzBFZklRQWdBMEgvLy84SFRRUkFJQU5CSmlBRFFRaDJaeUlBYTNaQkFYRWdBRUVCZEd0QlBtb2hBQXNnQWlBQU5nSWNJQUpDQURjQ0VDQUFRUUowUWJnaGFpRUJBa0FDUUNBSVFRRWdBSFFpQm5GRkJFQkJqQjhnQmlBSWNqWUNBQ0FCSUFJMkFnQU1BUXNnQTBFWklBQkJBWFpyUVFBZ0FFRWZSeHQwSVFBZ0FTZ0NBQ0VGQTBBZ0JTSUJLQUlFUVhoeElBTkdEUUlnQUVFZGRpRUdJQUJCQVhRaEFDQUJJQVpCQkhGcUlnWW9BaEFpQlEwQUN5QUdJQUkyQWhBTElBSWdBVFlDR0NBQ0lBSTJBZ3dnQWlBQ05nSUlEQUVMSUFFb0FnZ2lBQ0FDTmdJTUlBRWdBallDQ0NBQ1FRQTJBaGdnQWlBQk5nSU1JQUlnQURZQ0NBc2dCRUVJYWlFQURBRUxBa0FnQ1VVTkFBSkFJQUlvQWh3aUFFRUNkRUc0SVdvaUFTZ0NBQ0FDUmdSQUlBRWdCRFlDQUNBRURRRkJqQjhnQzBGK0lBQjNjVFlDQUF3Q0N5QUpRUkJCRkNBSktBSVFJQUpHRzJvZ0JEWUNBQ0FFUlEwQkN5QUVJQWsyQWhnZ0FpZ0NFQ0lBQkVBZ0JDQUFOZ0lRSUFBZ0JEWUNHQXNnQWlnQ0ZDSUFSUTBBSUFRZ0FEWUNGQ0FBSUFRMkFoZ0xBa0FnQTBFUFRRUkFJQUlnQXlBRmFpSUFRUU55TmdJRUlBQWdBbW9pQUNBQUtBSUVRUUZ5TmdJRURBRUxJQUlnQlVFRGNqWUNCQ0FDSUFWcUlnUWdBMEVCY2pZQ0JDQURJQVJxSUFNMkFnQWdCd1JBSUFkQmVIRkJzQjlxSVFCQm5COG9BZ0FoQVFKL1FRRWdCMEVEZG5RaUJTQUdjVVVFUUVHSUh5QUZJQVp5TmdJQUlBQU1BUXNnQUNnQ0NBc2hCaUFBSUFFMkFnZ2dCaUFCTmdJTUlBRWdBRFlDRENBQklBWTJBZ2dMUVp3ZklBUTJBZ0JCa0I4Z0F6WUNBQXNnQWtFSWFpRUFDeUFLUVJCcUpBQWdBQXZTQ3dFSGZ3SkFJQUJGRFFBZ0FFRUlheUlDSUFCQkJHc29BZ0FpQVVGNGNTSUFhaUVGQWtBZ0FVRUJjUTBBSUFGQkEzRkZEUUVnQWlBQ0tBSUFJZ0ZySWdKQm1COG9BZ0JKRFFFZ0FDQUJhaUVBQWtBQ1FFR2NIeWdDQUNBQ1J3UkFJQUZCL3dGTkJFQWdBVUVEZGlFRUlBSW9BZ3dpQVNBQ0tBSUlJZ05HQkVCQmlCOUJpQjhvQWdCQmZpQUVkM0UyQWdBTUJRc2dBeUFCTmdJTUlBRWdBellDQ0F3RUN5QUNLQUlZSVFZZ0FpQUNLQUlNSWdGSEJFQWdBaWdDQ0NJRElBRTJBZ3dnQVNBRE5nSUlEQU1MSUFKQkZHb2lCQ2dDQUNJRFJRUkFJQUlvQWhBaUEwVU5BaUFDUVJCcUlRUUxBMEFnQkNFSElBTWlBVUVVYWlJRUtBSUFJZ01OQUNBQlFSQnFJUVFnQVNnQ0VDSUREUUFMSUFkQkFEWUNBQXdDQ3lBRktBSUVJZ0ZCQTNGQkEwY05Ba0dRSHlBQU5nSUFJQVVnQVVGK2NUWUNCQ0FDSUFCQkFYSTJBZ1FnQlNBQU5nSUFEd3RCQUNFQkN5QUdSUTBBQWtBZ0FpZ0NIQ0lEUVFKMFFiZ2hhaUlFS0FJQUlBSkdCRUFnQkNBQk5nSUFJQUVOQVVHTUgwR01IeWdDQUVGK0lBTjNjVFlDQUF3Q0N5QUdRUkJCRkNBR0tBSVFJQUpHRzJvZ0FUWUNBQ0FCUlEwQkN5QUJJQVkyQWhnZ0FpZ0NFQ0lEQkVBZ0FTQUROZ0lRSUFNZ0FUWUNHQXNnQWlnQ0ZDSURSUTBBSUFFZ0F6WUNGQ0FESUFFMkFoZ0xJQUlnQlU4TkFDQUZLQUlFSWdGQkFYRkZEUUFDUUFKQUFrQUNRQ0FCUVFKeFJRUkFRYUFmS0FJQUlBVkdCRUJCb0I4Z0FqWUNBRUdVSDBHVUh5Z0NBQ0FBYWlJQU5nSUFJQUlnQUVFQmNqWUNCQ0FDUVp3ZktBSUFSdzBHUVpBZlFRQTJBZ0JCbkI5QkFEWUNBQThMUVp3ZktBSUFJQVZHQkVCQm5COGdBallDQUVHUUgwR1FIeWdDQUNBQWFpSUFOZ0lBSUFJZ0FFRUJjallDQkNBQUlBSnFJQUEyQWdBUEN5QUJRWGh4SUFCcUlRQWdBVUgvQVUwRVFDQUJRUU4ySVFRZ0JTZ0NEQ0lCSUFVb0FnZ2lBMFlFUUVHSUgwR0lIeWdDQUVGK0lBUjNjVFlDQUF3RkN5QURJQUUyQWd3Z0FTQUROZ0lJREFRTElBVW9BaGdoQmlBRklBVW9BZ3dpQVVjRVFFR1lIeWdDQUJvZ0JTZ0NDQ0lESUFFMkFnd2dBU0FETmdJSURBTUxJQVZCRkdvaUJDZ0NBQ0lEUlFSQUlBVW9BaEFpQTBVTkFpQUZRUkJxSVFRTEEwQWdCQ0VISUFNaUFVRVVhaUlFS0FJQUlnTU5BQ0FCUVJCcUlRUWdBU2dDRUNJRERRQUxJQWRCQURZQ0FBd0NDeUFGSUFGQmZuRTJBZ1FnQWlBQVFRRnlOZ0lFSUFBZ0Ftb2dBRFlDQUF3REMwRUFJUUVMSUFaRkRRQUNRQ0FGS0FJY0lnTkJBblJCdUNGcUlnUW9BZ0FnQlVZRVFDQUVJQUUyQWdBZ0FRMEJRWXdmUVl3ZktBSUFRWDRnQTNkeE5nSUFEQUlMSUFaQkVFRVVJQVlvQWhBZ0JVWWJhaUFCTmdJQUlBRkZEUUVMSUFFZ0JqWUNHQ0FGS0FJUUlnTUVRQ0FCSUFNMkFoQWdBeUFCTmdJWUN5QUZLQUlVSWdORkRRQWdBU0FETmdJVUlBTWdBVFlDR0FzZ0FpQUFRUUZ5TmdJRUlBQWdBbW9nQURZQ0FDQUNRWndmS0FJQVJ3MEFRWkFmSUFBMkFnQVBDeUFBUWY4QlRRUkFJQUJCZUhGQnNCOXFJUUVDZjBHSUh5Z0NBQ0lEUVFFZ0FFRURkblFpQUhGRkJFQkJpQjhnQUNBRGNqWUNBQ0FCREFFTElBRW9BZ2dMSVFBZ0FTQUNOZ0lJSUFBZ0FqWUNEQ0FDSUFFMkFnd2dBaUFBTmdJSUR3dEJIeUVESUFCQi8vLy9CMDBFUUNBQVFTWWdBRUVJZG1jaUFXdDJRUUZ4SUFGQkFYUnJRVDVxSVFNTElBSWdBellDSENBQ1FnQTNBaEFnQTBFQ2RFRzRJV29oQVFKQUFrQUNRRUdNSHlnQ0FDSUVRUUVnQTNRaUIzRkZCRUJCakI4Z0JDQUhjallDQUNBQklBSTJBZ0FnQWlBQk5nSVlEQUVMSUFCQkdTQURRUUYyYTBFQUlBTkJIMGNiZENFRElBRW9BZ0FoQVFOQUlBRWlCQ2dDQkVGNGNTQUFSZzBDSUFOQkhYWWhBU0FEUVFGMElRTWdCQ0FCUVFSeGFpSUhRUkJxS0FJQUlnRU5BQXNnQnlBQ05nSVFJQUlnQkRZQ0dBc2dBaUFDTmdJTUlBSWdBallDQ0F3QkN5QUVLQUlJSWdBZ0FqWUNEQ0FFSUFJMkFnZ2dBa0VBTmdJWUlBSWdCRFlDRENBQ0lBQTJBZ2dMUWFnZlFhZ2ZLQUlBUVFGcklnQkJmeUFBR3pZQ0FBc0xCQUFqQUFzR0FDQUFKQUFMRUFBakFDQUFhMEZ3Y1NJQUpBQWdBQXRLQVFGL0lBQWdBVWtFUUNBQUlBRWdBaEFDRHdzZ0FnUkFJQUFnQW1vaEF5QUJJQUpxSVFFRFFDQURRUUZySWdNZ0FVRUJheUlCTFFBQU9nQUFJQUpCQVdzaUFnMEFDd3NnQUF2OURnSVJmd0YrSXdCQk1Hc2lCeVFBUWJoL0lRZ0NRQ0FGUlEwQUlBUXNBQUFpQ1VIL0FYRWhDd0pBSUFsQkFFZ0VRQ0FMUWY0QWEwRUJkaUlHSUFWUERRSkJiQ0VJSUF0Qi93QnJJZ3RCL3dGTERRSWdCRUVCYWlFSVFRQWhCUU5BSUFVZ0MwOEVRQ0FMSVFnZ0JpRUxEQU1GSUFBZ0JXb2dDQ0FGUVFGMmFpSUVMUUFBUVFSMk9nQUFJQUFnQlVFQmNtb2dCQzBBQUVFUGNUb0FBQ0FGUVFKcUlRVU1BUXNBQ3dBTElBVWdDMDBOQVNBSFFmOEJOZ0lFSUFZZ0IwRUVhaUFIUVFocUlBUkJBV29pRGlBTEVBd2lCRUdJZjBzRVFDQUVJUWdNQWd0QlZDRUlJQWNvQWdnaUVFRUdTdzBCSUFjb0FnUWlFVUVCZENJSlFRSnFyVUlCSUJDdGhpSVlRUUVnRUhRaURVRUJhaUlGclVJQ2hueDhRZ3Q4UXZ6Ly8vLy8vLy8vL3dDRFF1UUNWZzBCUVZJaENDQVJRZjhCU3cwQklBMUJmM05CQW5SQjVBSnFyU0FSUVFGcUloVkJBWFN0SUJoOFFnaDhWQTBCSUFzZ0JHc2hGaUFFSUE1cUlSY2dCa0dBQkdvaUVpQUZRUUowYWlJUklBbHFRUUpxSVE0Z0JrR0VCR29oRTBHQWdBSWdFSFJCRUhZaENVRUFJUVZCQVNFUElBMUJBV3NpRkNFS0EwQWdCU0FWUmtVRVFBSkFJQVlnQlVFQmRDSUlhaThCQUNJRVFmLy9BMFlFUUNBVElBcEJBblJxSUFVNkFBSWdDa0VCYXlFS1FRRWhCQXdCQ3lBUFFRQWdDU0FFd1VvYklROExJQWdnRVdvZ0JEc0JBQ0FGUVFGcUlRVU1BUXNMSUFZZ0R6c0JnZ1FnQmlBUU93R0FCQUpBSUFvZ0ZFWUVRQ0FOUVFOMklRaENBQ0VZUVFBaER3TkFJQXdnRlVZRVFDQUlJQTFCQVhacVFRTnFJZ2xCQVhRaENFRUFJUVJCQUNFS0EwQkJBQ0VGSUFvZ0RVOE5CQU5BSUFWQkFrWkZCRUFnRXlBRklBbHNJQVJxSUJSeFFRSjBhaUFPSUFVZ0NtcHFMUUFBT2dBQ0lBVkJBV29oQlF3QkN3c2dDa0VDYWlFS0lBUWdDR29nRkhFaEJBd0FDd0FGSUFZZ0RFRUJkR291QVFBaENTQU9JQTlxSWdRZ0dEY0FBRUVJSVFVRFFDQUZJQWxPUlFSQUlBUWdCV29nR0RjQUFDQUZRUWhxSVFVTUFRc0xJQmhDZ1lLRWlKQ2d3SUFCZkNFWUlBeEJBV29oRENBSklBOXFJUThNQVFzQUN3QUxJQTFCQTNZZ0RVRUJkbXBCQTJvaENFRUFJUVVEUUNBTUlCVkdSUVJBUVFBaENTQUdJQXhCQVhScUxnRUFJZ1JCQUNBRVFRQktHeUVFQTBBZ0JDQUpSa1VFUUNBVElBVkJBblJxSUF3NkFBSURRQ0FGSUFocUlCUnhJZ1VnQ2tzTkFBc2dDVUVCYWlFSkRBRUxDeUFNUVFGcUlRd01BUXNMUVg4aENDQUZEUUlMSUJCQkFXb2hDRUVBSVFVRFFDQUZJQTFHUlFSQUlCRWdFeUFGUVFKMGFpSU9MUUFDUVFGMGFpSUVJQVF2QVFBaUNVRUJhanNCQUNBT0lBZ2dDV2RCWUhOcUlnUTZBQU1nRGlBSklBUjBJQTFyT3dFQUlBVkJBV29oQlF3QkN3c0NRQUpBSUFZdkFZSUVCRUFnQjBFY2FpSUVJQmNnRmhBTklnaEJpSDlMRFFJZ0IwRVVhaUFFSUJJUURpQUhRUXhxSUFRZ0VoQU9RUUFoQlFOQUlBZEJIR29pQkJBUElBVkIrd0ZMY2cwQ0lBQWdCV29pQmlBSFFSUnFJQVFRRURvQUFDQUdJQWRCREdvZ0JCQVFPZ0FCSUFWQkFuSWhCQ0FIUVJ4cUVBOEVRQ0FFSVFVTUF3VWdBQ0FFYWlBSFFSUnFJQWRCSEdvaUJCQVFPZ0FBSUFZZ0IwRU1haUFFRUJBNkFBTWdCVUVFYWlFRkRBRUxBQXNBQ3lBSFFSeHFJZ1FnRnlBV0VBMGlDRUdJZjBzTkFTQUhRUlJxSUFRZ0VoQU9JQWRCREdvZ0JDQVNFQTVCQUNFRkEwQWdCMEVjYWlJRUVBOGdCVUg3QVV0eVJRUkFJQUFnQldvaUJpQUhRUlJxSUFRUUVUb0FBQ0FHSUFkQkRHb2dCQkFST2dBQklBVkJBbkloQkNBSFFSeHFFQThFUUNBRUlRVUZJQUFnQkdvZ0IwRVVhaUFIUVJ4cUlnUVFFVG9BQUNBR0lBZEJER29nQkJBUk9nQURJQVZCQkdvaEJRd0NDd3NMQW44RFFFRzZmeUVJSUFWQi9RRkxEUU1nQUNBRmFpSUdJQWRCRkdvZ0IwRWNhaUlKRUJFNkFBQWdCa0VCYWlFRUlBa1FEMEVEUmdSQUlBZEJER29oQ0VFQ0RBSUxJQVZCL0FGTERRTWdCaUFIUVF4cUlBZEJIR29pQkJBUk9nQUJJQVZCQW1vaEJTQUVFQTlCQTBjTkFBc2dBQ0FGYWlFRUlBZEJGR29oQ0VFREN5QUVJQWdnQjBFY2FoQVJPZ0FBSUFacUlBQnJJUWdNQVFzQ2Z3TkFRYnAvSVFnZ0JVSDlBVXNOQWlBQUlBVnFJZ1lnQjBFVWFpQUhRUnhxSWdrUUVEb0FBQ0FHUVFGcUlRUWdDUkFQUVFOR0JFQWdCMEVNYWlFSVFRSU1BZ3NnQlVIOEFVc05BaUFHSUFkQkRHb2dCMEVjYWlJRUVCQTZBQUVnQlVFQ2FpRUZJQVFRRDBFRFJ3MEFDeUFBSUFWcUlRUWdCMEVVYWlFSVFRTUxJQVFnQ0NBSFFSeHFFQkE2QUFBZ0Jtb2dBR3NoQ0FzZ0NFR0lmMHNOQVFzZ0NDRUVRUUFoQlNBQlFRQkJOQkFESVFsQkFDRUtBMEFnQkNBRlJ3UkFJQUFnQldvaUJpMEFBQ0lCUVF0TEJFQkJiQ0VJREFNRklBa2dBVUVDZEdvaUFTQUJLQUlBUVFGcU5nSUFJQVZCQVdvaEJVRUJJQVl0QUFCMFFRRjFJQXBxSVFvTUFnc0FDd3RCYkNFSUlBcEZEUUFnQ21jaUJVRWZjeUlCUVF0TERRQWdBMEVnSUFWck5nSUFRUUZCQWlBQmRDQUtheUlEWjBFZmN5SUJkQ0FEUncwQUlBQWdCR29nQVVFQmFpSUFPZ0FBSUFrZ0FFRUNkR29pQUNBQUtBSUFRUUZxTmdJQUlBa29BZ1FpQUVFQ1NTQUFRUUZ4Y2cwQUlBSWdCRUVCYWpZQ0FDQUxRUUZxSVFnTElBZEJNR29rQUNBSUM2QUZBUXgvSXdCQkVHc2lEQ1FBQW44Z0JFRUhUUVJBSUF4Q0FEY0RDQ0FNUVFocUlnVWdBeUFFRUFJYVFXd2dBQ0FCSUFJZ0JVRUlFQXdpQUNBQUlBUkxHeUFBSUFCQmlYOUpHd3dCQ3lBQVFRQWdBU2dDQUVFQmFpSU5RUUYwRUFNaEQwRlVJQU1vQUFBaUJrRVBjU0lBUVFwTERRQWFJQUlnQUVFRmFqWUNBQ0FESUFScUlnSkJCR3NoQnlBQ1FRZHJJUXNnQUVFR2FpRU9RUVFoQWlBR1FRUjJJUVZCSUNBQWRDSUlRUUZ5SVFsQkFDRUFRUUVoQmlBRElRUURRQUpBSUFaQkFYRkZCRUFEUUNBRlFYOXpRWUNBZ0lCNGNtZ2lCa0VZU1VVRVFDQUFRU1JxSVFBZ0JDQUxUUVIvSUFSQkEyb0ZJQVFnQzJ0QkEzUWdBbXBCSDNFaEFpQUhDeUlFS0FBQUlBSjJJUVVNQVFzTElBSWdCa0VlY1NJS2FrRUNhaUVDSUFaQkFYWkJBMndnQUdvZ0JTQUtka0VEY1dvaUFDQU5UdzBCQW44Z0JDQUxTeUFDUVFOMklBUnFJZ1VnQjB0eFJRUkFJQUpCQjNFaEFpQUZEQUVMSUFRZ0IydEJBM1FnQW1wQkgzRWhBaUFIQ3lJRUtBQUFJQUoySVFVTElBVWdDRUVCYTNFaUJpQUlRUUYwUVFGcklnb2dDV3NpRUVrRWZ5QU9RUUZyQlNBRklBcHhJZ1VnRUVFQUlBVWdDRTRiYXlFR0lBNExJUVVnRHlBQVFRRjBhaUFHUVFGcklnbzdBUUFnQUVFQmFpRUFJQUlnQldvaEFpQUlRUUVnQm1zZ0NpQUdRUUJLR3lBSmFpSUpTZ1JBSUFsQkFrZ05BVUVnSUFsbklnVnJJUTVCQVNBRlFSOXpkQ0VJQ3lBQUlBMVBEUUFnQ2tFQVJ5RUdBbjhnQkNBTFN5QUNRUU4xSUFScUlnVWdCMHR4UlFSQUlBSkJCM0VoQWlBRkRBRUxJQUlnQkNBSGEwRURkR3BCSDNFaEFpQUhDeUlFS0FBQUlBSjJJUVVNQVFzTFFXd2dDVUVCUncwQUdrRlFJQUFnRFVzTkFCcEJiQ0FDUVNCS0RRQWFJQUVnQUVFQmF6WUNBQ0FFSUFKQkIycEJBM1ZxSUFOckN5QU1RUkJxSkFBTDhnRUJBWDhnQWtVRVFDQUFRZ0EzQWdBZ0FFRUFOZ0lRSUFCQ0FEY0NDRUc0Znc4TElBQWdBVFlDRENBQUlBRkJCR28yQWhBZ0FrRUVUd1JBSUFBZ0FTQUNhaUlCUVFScklnTTJBZ2dnQUNBREtBQUFOZ0lBSUFGQkFXc3RBQUFpQVFSQUlBQWdBV2RCRjJzMkFnUWdBZzhMSUFCQkFEWUNCRUYvRHdzZ0FDQUJOZ0lJSUFBZ0FTMEFBQ0lETmdJQUFrQUNRQUpBSUFKQkFtc09BZ0VBQWdzZ0FDQUJMUUFDUVJCMElBTnlJZ00yQWdBTElBQWdBUzBBQVVFSWRDQURhallDQUFzZ0FTQUNha0VCYXkwQUFDSUJSUVJBSUFCQkFEWUNCRUZzRHdzZ0FDQUJaeUFDUVFOMGEwRUphallDQkNBQ0MwUUJBbjhnQVNBQ0x3RUFJZ01nQVNnQ0JHb2lCRFlDQkNBQUlBTkJBblJCb0IxcUtBSUFJQUVvQWdCQkFDQUVhM1p4TmdJQUlBRVFEeG9nQUNBQ1FRUnFOZ0lFQzU4QkFRUi9RUU1oQVNBQUtBSUVJZ0pCSUUwRVFDQUFLQUlJSWdFZ0FDZ0NFRThFUUNBQUlBSkJCM0UyQWdRZ0FDQUJJQUpCQTNacklnSTJBZ2dnQUNBQ0tBQUFOZ0lBUVFBUEN5QUFLQUlNSWdNZ0FVWUVRRUVCUVFJZ0FrRWdTUnNQQ3lBQUlBRWdBU0FEYXlBQ1FRTjJJZ1FnQVNBRWF5QURTU0lCR3lJRGF5SUVOZ0lJSUFBZ0FpQURRUU4wYXpZQ0JDQUFJQVFvQUFBMkFnQUxJQUVMU0FFRWZ5QUFLQUlFSUFBb0FnQkJBblJxSWdJdEFBSWdBaThCQUNFRUlBRWdBU2dDQkNJRklBSXRBQU1pQW1vMkFnUWdBQ0FFSUFFb0FnQWdCWFJCQUNBQ2EzWnFOZ0lBQzFJQkJIOGdBQ2dDQkNBQUtBSUFRUUowYWlJQ0xRQUNJQUl2QVFBaEJDQUJJQUl0QUFNaUFpQUJLQUlFYWlJRk5nSUVJQUFnQkNBQ1FRSjBRYUFkYWlnQ0FDQUJLQUlBUVFBZ0JXdDJjV28yQWdBTENBQWdBRUdJZjBzTEdnQWdBQVJBSUFFRVFDQUNJQUFnQVJFQ0FBOExJQUFRQmdzTHBnZ0NEWDhCZmlNQVFSQnJJZ2trQUNBSlFRQTJBZ3dnQ1VFQU5nSUlBbjhDUUNBRFFlZ0phaUFESUFsQkNHb2dDVUVNYWlBQklBSWdBMEdBQVdvUUN5SVBRWWgvU3cwQVFWUWdDU2dDRENJRUlBQW9BZ0FpQVVIL0FYRkJBV3BMRFFFYUlBQkJCR29oQ3lBQUlBRkIvNEdBZUhFZ0JFRVFkRUdBZ1B3SGNYSTJBZ0JCZnlBRUlBUkJBRWdiUVFGcUlRQkJBQ0VCSUFrb0FnZ2hCVUVBSVFJRFFDQUFJQUpHQkVBZ0JVRURheUVCUVFBaEFBTkFBa0JCQUNFQ0lBQWdBVTRFUUFOQUlBQWdCVTROQWlBRElBQWdBMnBCNkFscUxRQUFRUUowYWtGQWF5SUJJQUVvQWdBaUFVRUJhallDQUNBQklBTnFJQUE2QU9nSElBQkJBV29oQUF3QUN3QUZBMEFnQWtFRVJrVUVRQ0FESUFNZ0FDQUNhaUlIYWtIb0NXb3RBQUJCQW5ScVFVQnJJZ2dnQ0NnQ0FDSUlRUUZxTmdJQUlBTWdDR29nQnpvQTZBY2dBa0VCYWlFQ0RBRUxDeUFBUVFScUlRQU1BZ3NBQ3dzZ0JFRUJhaUVPSUFNb0FnQWhCMEVBSVFCQkFTRUlBMEFnQ0NBT1JnMERJQTRnQ0dzaEJDQURJQWhCQW5ScUtBSUFJUVVDUUFKQUFrQUNRQUpBQWtCQkFTQUlkRUVCZFNJTlFRRnJEZ2dBQVFRQ0JBUUVBd1FMUVFBaEFpQUZRUUFnQlVFQVNoc2hCaUFBSVFFRFFDQUNJQVpHRFFVZ0F5QUNJQWRxYWkwQTZBY2hDaUFMSUFGQkFYUnFJZ3dnQkRvQUFTQU1JQW82QUFBZ0FrRUJhaUVDSUFGQkFXb2hBUXdBQ3dBTFFRQWhBaUFGUVFBZ0JVRUFTaHNoQ2lBQUlRRURRQ0FDSUFwR0RRUWdDeUFCUVFGMGFpSUdJQU1nQWlBSGFtb3RBT2dISWd3NkFBSWdCaUFFT2dBQklBWWdERG9BQUNBR0lBUTZBQU1nQWtFQmFpRUNJQUZCQW1vaEFRd0FDd0FMUVFBaEFpQUZRUUFnQlVFQVNoc2hCaUFFUVFoMFFZRCtBM0VoQkNBQUlRRURRQ0FDSUFaR0RRTWdDeUFCUVFGMGFpQUVJQU1nQWlBSGFtb3RBT2dIY3ExQ2dZQ0VnSkNBd0FCK053QUFJQUpCQVdvaEFpQUJRUVJxSVFFTUFBc0FDMEVBSVFJZ0JVRUFJQVZCQUVvYklRWWdCRUVJZEVHQS9nTnhJUVFnQUNFQkEwQWdBaUFHUmcwQ0lBc2dBVUVCZEdvaUNpQUVJQU1nQWlBSGFtb3RBT2dIY3ExQ2dZQ0VnSkNBd0FCK0loRTNBQWdnQ2lBUk53QUFJQUpCQVdvaEFpQUJRUWhxSVFFTUFBc0FDMEVBSVFFZ0JVRUFJQVZCQUVvYklRb2dCRUVJZEVHQS9nTnhJUXdnQUNFRUEwQWdBU0FLUmcwQklBc2dCRUVCZEdvaEVDQU1JQU1nQVNBSGFtb3RBT2dIY3ExQ2dZQ0VnSkNBd0FCK0lSRkJBQ0VDQTBBZ0FpQU5Ua1VFUUNBUUlBSkJBWFJxSWdZZ0VUY0FHQ0FHSUJFM0FCQWdCaUFSTndBSUlBWWdFVGNBQUNBQ1FSQnFJUUlNQVFzTElBRkJBV29oQVNBRUlBMXFJUVFNQUFzQUN5QUlRUUZxSVFnZ0JTQUhhaUVISUFVZ0RXd2dBR29oQUF3QUN3QUZJQU1nQWtFQ2RHb2lCMEZBYXlBQk5nSUFJQUpCQVdvaEFpQUhLQUlBSUFGcUlRRU1BUXNBQ3dBTElBOExJQWxCRUdva0FBdnlBZ0VHZnlNQVFTQnJJZ1VrQUNBRUtBSUFJUVlnQlVFTWFpQUNJQU1RRFNJRFFZaC9UUVJBSUFSQkJHb2hBaUFBSUFGcUlnbEJBMnNoQkVFQUlBWkJFSFpyUVI5eElRTURRQ0FGUVF4cUVBOGdBQ0FFVDNKRkJFQWdBaUFGS0FJTUlnWWdCU2dDRUNJSGRDQURka0VCZEdvaUNDMEFBU0VLSUFBZ0NDMEFBRG9BQUNBQ0lBWWdCeUFLYWlJR2RDQURka0VCZEdvaUJ5MEFBQ0VJSUFVZ0JpQUhMUUFCYWpZQ0VDQUFJQWc2QUFFZ0FFRUNhaUVBREFFTEN3TkFJQVZCREdvUUR5RUhJQVVvQWd3aEJpQUZLQUlRSVFRZ0FDQUpUeUFIY2tVRVFDQUNJQVlnQkhRZ0EzWkJBWFJxSWdZdEFBQWhCeUFGSUFRZ0JpMEFBV28yQWhBZ0FDQUhPZ0FBSUFCQkFXb2hBQXdCQ3dzRFFDQUFJQWxQUlFSQUlBSWdCaUFFZENBRGRrRUJkR29pQnkwQUFTRUlJQUFnQnkwQUFEb0FBQ0FBUVFGcUlRQWdCQ0FJYWlFRURBRUxDMEZzUVd3Z0FTQUZLQUlVSUFVb0FoaEhHeUFFUVNCSEd5RURDeUFGUVNCcUpBQWdBd3ZQRkFFamZ5TUFRZEFBYXlJRkpBQkJiQ0VKQWtBZ0EwRUtTUTBBQWtBZ0F5QUNMd0FFSWdjZ0FpOEFBQ0lJSUFJdkFBSWlEV3BxUVFacUlneEpEUUFnQkM4QkFpRUdJQVZCUEdvZ0FrRUdhaUlDSUFnUURTSUpRWWgvU3cwQklBVkJLR29nQWlBSWFpSUNJQTBRRFNJSlFZaC9TdzBCSUFWQkZHb2dBaUFOYWlJQ0lBY1FEU0lKUVloL1N3MEJJQVVnQWlBSGFpQURJQXhyRUEwaUNVR0lmMHNOQVNBRVFRUnFJUW9nQUNBQmFpSWZRUU5ySVNCQkFDQUdhMEVmY1NFTElBVW9BZ2doRVNBRktBSWNJUklnQlNnQ01DRVRJQVVvQWtRaEZDQUZLQUlFSVFrZ0JTZ0NHQ0VOSUFVb0Fpd2hEQ0FGS0FKQUlRWWdCU2dDRUNFaElBVW9BaVFoSWlBRktBSTRJU01nQlNnQ1RDRWtJQVVvQWdBaEZTQUZLQUlVSVJZZ0JTZ0NLQ0VYSUFVb0Fqd2hHRUVCSVE4Z0FDQUJRUU5xUVFKMklnUnFJZ01nQkdvaUFpQUVhaUlaSVFRZ0FpRUlJQU1oQndOQUlBOUJBWEZGSUFRZ0lFOXlSUVJBSUFBZ0NpQVlJQVowSUF0MlFRSjBhaUlPTHdFQU93QUFJQTR0QUFJaEdpQU9MUUFESVJBZ0J5QUtJQmNnREhRZ0MzWkJBblJxSWc0dkFRQTdBQUFnRGkwQUFpRWJJQTR0QUFNaER5QUlJQW9nRmlBTmRDQUxka0VDZEdvaURpOEJBRHNBQUNBT0xRQUNJUndnRGkwQUF5RWRJQVFnQ2lBVklBbDBJQXQyUVFKMGFpSU9Md0VBT3dBQUlBNHRBQUloSGlBT0xRQURJUTRnQUNBUWFpSWxJQW9nR0NBR0lCcHFJZ1owSUF0MlFRSjBhaUlRTHdFQU93QUFJQkF0QUFJZ0VDMEFBeUVtSUFjZ0Qyb2lKeUFLSUJjZ0RDQWJhaUlhZENBTGRrRUNkR29pQnk4QkFEc0FBQ0FITFFBQ0lRd2dCeTBBQXlFUUlBZ2dIV29pR3lBS0lCWWdEU0FjYWlJUGRDQUxka0VDZEdvaUNDOEJBRHNBQUNBSUxRQUNJUTBnQ0MwQUF5RWNJQVFnRG1vaUhTQUtJQlVnQ1NBZWFpSU9kQ0FMZGtFQ2RHb2lDUzhCQURzQUFDQUdhaUVBUVFNaEJ3Si9JQlFnSkVrRVFDQUFJUVpCQXd3QkN5QUFRUWR4SVFZZ0ZDQUFRUU4yYXlJVUtBQUFJUmhCQUFzZ0NTMEFBeUVlSUFrdEFBSWhDQ0FNSUJwcUlRQWdFeUFqU1FSL0lBQUZJQk1nQUVFRGRtc2lFeWdBQUNFWFFRQWhCeUFBUVFkeEN5RU1JQTBnRDJvaEFDQUhjaUVKUVFNaER3Si9JQklnSWtrRVFDQUFJUTFCQXd3QkN5QUFRUWR4SVEwZ0VpQUFRUU4yYXlJU0tBQUFJUlpCQUFzZ0NDQU9haUVBSUFseUlCRWdJVWtFZnlBQUJTQVJJQUJCQTNackloRW9BQUFoRlVFQUlROGdBRUVIY1FzaENTQWxJQ1pxSVFBZ0VDQW5haUVISUJzZ0hHb2hDQ0FkSUI1cUlRUWdEM0pGSVE4TUFRc0xJQVVnRERZQ0xDQUZJQVkyQWtBZ0JTQU5OZ0lZSUFVZ0NUWUNCQ0FGSUJRMkFrUWdCU0FUTmdJd0lBVWdFallDSENBRklCRTJBZ2dnQlNBWU5nSThJQVVnRnpZQ0tDQUZJQlkyQWhRZ0JTQVZOZ0lBSUFJZ0Iwa2dBQ0FEUzNJTkFFRnNJUWtnQ0NBWlN3MEJJQU5CQTJzaENRTkFJQVZCUEdvUUQwVWdBQ0FKU1hFRVFDQUFJQW9nQlNnQ1BDSU5JQVVvQWtBaURIUWdDM1pCQW5ScUlnNHZBUUE3QUFBZ0FDQU9MUUFEYWlJR0lBb2dEU0FNSUE0dEFBSnFJZ0IwSUF0MlFRSjBhaUlNTHdFQU93QUFJQVVnQUNBTUxRQUNhallDUUNBR0lBd3RBQU5xSVFBTUFRVWdBMEVDYXlFTUEwQWdCVUU4YWhBUElRWWdCU2dDUENFTklBVW9Ba0FoQ1NBQUlBeExJQVp5UlFSQUlBQWdDaUFOSUFsMElBdDJRUUowYWlJR0x3RUFPd0FBSUFVZ0NTQUdMUUFDYWpZQ1FDQUFJQVl0QUFOcUlRQU1BUXNMQTBBZ0FDQU1TMFVFUUNBQUlBb2dEU0FKZENBTGRrRUNkR29pQmk4QkFEc0FBQ0FBSUFZdEFBTnFJUUFnQ1NBR0xRQUNhaUVKREFFTEN3SkFJQUFnQTA4TkFDQUFJQW9nRFNBSmRDQUxkaUlBUVFKMGFpSURMUUFBT2dBQUlBTXRBQU5CQVVZRVFDQUpJQU10QUFKcUlRa01BUXNnQ1VFZlN3MEFRU0FnQ1NBS0lBQkJBblJxTFFBQ2FpSUFJQUJCSUU4YklRa0xJQUpCQTJzaERBTkFJQVZCS0dvUUQwVWdCeUFNU1hFRVFDQUhJQW9nQlNnQ0tDSUdJQVVvQWl3aUFIUWdDM1pCQW5ScUlnMHZBUUE3QUFBZ0J5QU5MUUFEYWlJRElBb2dCaUFBSUEwdEFBSnFJZ0IwSUF0MlFRSjBhaUlHTHdFQU93QUFJQVVnQUNBR0xRQUNhallDTENBRElBWXRBQU5xSVFjTUFRVWdBa0VDYXlFR0EwQWdCVUVvYWhBUElRTWdCU2dDS0NFTUlBVW9BaXdoQUNBR0lBZEpJQU55UlFSQUlBY2dDaUFNSUFCMElBdDJRUUowYWlJREx3RUFPd0FBSUFVZ0FDQURMUUFDYWpZQ0xDQUhJQU10QUFOcUlRY01BUXNMQTBBZ0JpQUhTVVVFUUNBSElBb2dEQ0FBZENBTGRrRUNkR29pQXk4QkFEc0FBQ0FISUFNdEFBTnFJUWNnQUNBRExRQUNhaUVBREFFTEN3SkFJQUlnQjAwTkFDQUhJQW9nRENBQWRDQUxkaUlDUVFKMGFpSURMUUFBT2dBQUlBTXRBQU5CQVVZRVFDQUFJQU10QUFKcUlRQU1BUXNnQUVFZlN3MEFRU0FnQUNBS0lBSkJBblJxTFFBQ2FpSUFJQUJCSUU4YklRQUxJQmxCQTJzaERBTkFJQVZCRkdvUUQwVWdDQ0FNU1hFRVFDQUlJQW9nQlNnQ0ZDSUdJQVVvQWhnaUFuUWdDM1pCQW5ScUlnMHZBUUE3QUFBZ0NDQU5MUUFEYWlJRElBb2dCaUFDSUEwdEFBSnFJZ0owSUF0MlFRSjBhaUlHTHdFQU93QUFJQVVnQWlBR0xRQUNhallDR0NBRElBWXRBQU5xSVFnTUFRVWdHVUVDYXlFREEwQWdCVUVVYWhBUElRSWdCU2dDRkNFR0lBVW9BaGdoQnlBRElBaEpJQUp5UlFSQUlBZ2dDaUFHSUFkMElBdDJRUUowYWlJQ0x3RUFPd0FBSUFVZ0J5QUNMUUFDYWpZQ0dDQUlJQUl0QUFOcUlRZ01BUXNMQTBBZ0F5QUlTVVVFUUNBSUlBb2dCaUFIZENBTGRrRUNkR29pQWk4QkFEc0FBQ0FJSUFJdEFBTnFJUWdnQnlBQ0xRQUNhaUVIREFFTEN3SkFJQWdnR1U4TkFDQUlJQW9nQmlBSGRDQUxkaUlDUVFKMGFpSURMUUFBT2dBQUlBTXRBQU5CQVVZRVFDQUhJQU10QUFKcUlRY01BUXNnQjBFZlN3MEFRU0FnQnlBS0lBSkJBblJxTFFBQ2FpSUNJQUpCSUU4YklRY0xBMEFnQlJBUFJTQUVJQ0JKY1FSQUlBUWdDaUFGS0FJQUlnWWdCU2dDQkNJQ2RDQUxka0VDZEdvaURDOEJBRHNBQUNBRUlBd3RBQU5xSWdNZ0NpQUdJQUlnREMwQUFtb2lBblFnQzNaQkFuUnFJZ1F2QVFBN0FBQWdCU0FDSUFRdEFBSnFOZ0lFSUFNZ0JDMEFBMm9oQkF3QkJTQWZRUUpySVFNRFFDQUZFQThoQWlBRktBSUFJUVlnQlNnQ0JDRUlJQU1nQkVrZ0FuSkZCRUFnQkNBS0lBWWdDSFFnQzNaQkFuUnFJZ0l2QVFBN0FBQWdCU0FJSUFJdEFBSnFOZ0lFSUFRZ0FpMEFBMm9oQkF3QkN3c0RRQ0FESUFSSlJRUkFJQVFnQ2lBR0lBaDBJQXQyUVFKMGFpSUNMd0VBT3dBQUlBUWdBaTBBQTJvaEJDQUlJQUl0QUFKcUlRZ01BUXNMQWtBZ0JDQWZUdzBBSUFRZ0NpQUdJQWgwSUF0MklnSkJBblJxSWdNdEFBQTZBQUFnQXkwQUEwRUJSZ1JBSUFnZ0F5MEFBbW9oQ0F3QkN5QUlRUjlMRFFCQklDQUlJQW9nQWtFQ2RHb3RBQUpxSWdJZ0FrRWdUeHNoQ0F0QmJFRnNRV3hCYkVGc1FXeEJiRUZzSUFFZ0NFRWdSeHNnQlNnQ0NDQUZLQUlNUnhzZ0IwRWdSeHNnQlNnQ0hDQUZLQUlnUnhzZ0FFRWdSeHNnQlNnQ01DQUZLQUkwUnhzZ0NVRWdSeHNnQlNnQ1JDQUZLQUpJUnhzaENRd0pDd0FMQUFzQUN3QUxBQXNBQ3dBTEFBdEJiQ0VKQ3lBRlFkQUFhaVFBSUFrTDdCQUJIbjhqQUVIUUFHc2lCU1FBUVd3aENRSkFJQU5CQ2trTkFBSkFJQU1nQWk4QUJDSUdJQUl2QUFBaUJ5QUNMd0FDSWdocWFrRUdhaUlPU1EwQUlBUXZBUUloRHlBRlFUeHFJQUpCQm1vaUFpQUhFQTBpQ1VHSWYwc05BU0FGUVNocUlBSWdCMm9pQWlBSUVBMGlDVUdJZjBzTkFTQUZRUlJxSUFJZ0NHb2lBaUFHRUEwaUNVR0lmMHNOQVNBRklBSWdCbW9nQXlBT2F4QU5JZ2xCaUg5TERRRWdCRUVFYWlFS0lBQWdBV29pSEVFRGF5RWRRUUFnRDJ0QkgzRWhDeUFGS0FJSUlSRWdCU2dDSENFU0lBVW9BakFoRXlBRktBSkVJUlFnQlNnQ0JDRUpJQVVvQWhnaEJpQUZLQUlzSVFjZ0JTZ0NRQ0VJSUFVb0FoQWhIaUFGS0FJa0lSOGdCU2dDT0NFZ0lBVW9Ba3doSVNBRktBSUFJUlVnQlNnQ0ZDRVdJQVVvQWlnaEZ5QUZLQUk4SVJoQkFTRU5JQUFnQVVFRGFrRUNkaUlDYWlJT0lBSnFJZzhnQW1vaUdTRUVJQThoQWlBT0lRTURRQ0FOUlNBRUlCMVBja1VFUUNBS0lCZ2dDSFFnQzNaQkFYUnFJZ3d0QUFFaERTQUFJQXd0QUFBNkFBQWdDaUFYSUFkMElBdDJRUUYwYWlJTUxRQUJJUkFnQXlBTUxRQUFPZ0FBSUFvZ0ZpQUdkQ0FMZGtFQmRHb2lEQzBBQVNFYUlBSWdEQzBBQURvQUFDQUtJQlVnQ1hRZ0MzWkJBWFJxSWd3dEFBRWhHeUFFSUF3dEFBQTZBQUFnQ2lBWUlBZ2dEV29pQ0hRZ0MzWkJBWFJxSWd3dEFBRWhEU0FBSUF3dEFBQTZBQUVnQ2lBWElBY2dFR29pQjNRZ0MzWkJBWFJxSWd3dEFBRWhFQ0FESUF3dEFBQTZBQUVnQ2lBV0lBWWdHbW9pREhRZ0MzWkJBWFJxSWdZdEFBRWhHaUFDSUFZdEFBQTZBQUVnQ2lBVklBa2dHMm9pRzNRZ0MzWkJBWFJxSWdrdEFBRWhJaUFFSUFrdEFBQTZBQUVnQ0NBTmFpRUdRUU1oQ1FKL0lCUWdJVWtFUUVFRElRMGdCZ3dCQ3lBVUlBWkJBM1pySWhRb0FBQWhHRUVBSVEwZ0JrRUhjUXNoQ0NBSElCQnFJUVlnRXlBZ1NRUi9JQVlGSUJNZ0JrRURkbXNpRXlnQUFDRVhRUUFoQ1NBR1FRZHhDeUVISUF3Z0dtb2hEQ0FKSUExeUlSQkJBeUVOQW44Z0VpQWZTUVJBSUF3aEJrRUREQUVMSUF4QkIzRWhCaUFTSUF4QkEzWnJJaElvQUFBaEZrRUFDeUFiSUNKcUlRd2dFSEloRUNBUklCNUpCSDhnREFVZ0VTQU1RUU4yYXlJUktBQUFJUlZCQUNFTklBeEJCM0VMSVFrZ0JFRUNhaUVFSUFKQkFtb2hBaUFEUVFKcUlRTWdBRUVDYWlFQUlBMGdFSEpGSVEwTUFRc0xJQVVnQnpZQ0xDQUZJQWcyQWtBZ0JTQUdOZ0lZSUFVZ0NUWUNCQ0FGSUJRMkFrUWdCU0FUTmdJd0lBVWdFallDSENBRklCRTJBZ2dnQlNBWU5nSThJQVVnRnpZQ0tDQUZJQlkyQWhRZ0JTQVZOZ0lBSUFBZ0Rrc2dBeUFQUzNJTkFFRnNJUWtnQWlBWlN3MEJJQTVCQTJzaENRTkFJQVZCUEdvUUR5QUFJQWxQY2tVRVFDQUtJQVVvQWp3aUJpQUZLQUpBSWdkMElBdDJRUUYwYWlJSUxRQUJJUXdnQUNBSUxRQUFPZ0FBSUFvZ0JpQUhJQXhxSWdaMElBdDJRUUYwYWlJSExRQUFJUWdnQlNBR0lBY3RBQUZxTmdKQUlBQWdDRG9BQVNBQVFRSnFJUUFNQVFzTEEwQWdCVUU4YWhBUElRY2dCU2dDUENFR0lBVW9Ba0FoQ1NBQUlBNVBJQWR5UlFSQUlBb2dCaUFKZENBTGRrRUJkR29pQmkwQUFDRUhJQVVnQ1NBR0xRQUJhallDUUNBQUlBYzZBQUFnQUVFQmFpRUFEQUVMQ3dOQUlBQWdEazlGQkVBZ0NpQUdJQWwwSUF0MlFRRjBhaUlITFFBQklBQWdCeTBBQURvQUFDQUFRUUZxSVFBZ0NXb2hDUXdCQ3dzZ0QwRURheUVBQTBBZ0JVRW9haEFQSUFBZ0EwMXlSUVJBSUFvZ0JTZ0NLQ0lHSUFVb0Fpd2lCM1FnQzNaQkFYUnFJZ2d0QUFFaERpQURJQWd0QUFBNkFBQWdDaUFHSUFjZ0Rtb2lCblFnQzNaQkFYUnFJZ2N0QUFBaENDQUZJQVlnQnkwQUFXbzJBaXdnQXlBSU9nQUJJQU5CQW1vaEF3d0JDd3NEUUNBRlFTaHFFQThoQnlBRktBSW9JUVlnQlNnQ0xDRUFJQU1nRDA4Z0IzSkZCRUFnQ2lBR0lBQjBJQXQyUVFGMGFpSUdMUUFBSVFjZ0JTQUFJQVl0QUFGcU5nSXNJQU1nQnpvQUFDQURRUUZxSVFNTUFRc0xBMEFnQXlBUFQwVUVRQ0FLSUFZZ0FIUWdDM1pCQVhScUlnY3RBQUVoQ0NBRElBY3RBQUE2QUFBZ0EwRUJhaUVESUFBZ0NHb2hBQXdCQ3dzZ0dVRURheUVEQTBBZ0JVRVVhaEFQSUFJZ0EwOXlSUVJBSUFvZ0JTZ0NGQ0lHSUFVb0FoZ2lCM1FnQzNaQkFYUnFJZ2d0QUFFaERpQUNJQWd0QUFBNkFBQWdDaUFHSUFjZ0Rtb2lCblFnQzNaQkFYUnFJZ2N0QUFBaENDQUZJQVlnQnkwQUFXbzJBaGdnQWlBSU9nQUJJQUpCQW1vaEFnd0JDd3NEUUNBRlFSUnFFQThoQnlBRktBSVVJUVlnQlNnQ0dDRURJQUlnR1U4Z0IzSkZCRUFnQ2lBR0lBTjBJQXQyUVFGMGFpSUdMUUFBSVFjZ0JTQURJQVl0QUFGcU5nSVlJQUlnQnpvQUFDQUNRUUZxSVFJTUFRc0xBMEFnQWlBWlQwVUVRQ0FLSUFZZ0EzUWdDM1pCQVhScUlnY3RBQUVoQ0NBQ0lBY3RBQUE2QUFBZ0FrRUJhaUVDSUFNZ0NHb2hBd3dCQ3dzRFFDQUZFQThnQkNBZFQzSkZCRUFnQ2lBRktBSUFJZ0lnQlNnQ0JDSUdkQ0FMZGtFQmRHb2lCeTBBQVNFSUlBUWdCeTBBQURvQUFDQUtJQUlnQmlBSWFpSUNkQ0FMZGtFQmRHb2lCaTBBQUNFSElBVWdBaUFHTFFBQmFqWUNCQ0FFSUFjNkFBRWdCRUVDYWlFRURBRUxDd05BSUFVUUR5RUhJQVVvQWdBaEJpQUZLQUlFSVFJZ0JDQWNUeUFIY2tVRVFDQUtJQVlnQW5RZ0MzWkJBWFJxSWdZdEFBQWhCeUFGSUFJZ0JpMEFBV28yQWdRZ0JDQUhPZ0FBSUFSQkFXb2hCQXdCQ3dzRFFDQUVJQnhQUlFSQUlBb2dCaUFDZENBTGRrRUJkR29pQnkwQUFTRUlJQVFnQnkwQUFEb0FBQ0FFUVFGcUlRUWdBaUFJYWlFQ0RBRUxDMEZzUVd4QmJFRnNRV3hCYkVGc1FXd2dBU0FDUVNCSEd5QUZLQUlJSUFVb0FneEhHeUFEUVNCSEd5QUZLQUljSUFVb0FpQkhHeUFBUVNCSEd5QUZLQUl3SUFVb0FqUkhHeUFKUVNCSEd5QUZLQUpFSUFVb0FraEhHeUVKREFFTFFXd2hDUXNnQlVIUUFHb2tBQ0FKQzFnQkEzOENRQ0FBS0FLUTZ3RWlBVVVOQUNBQktBSUFJQUZCdE5VQmFpZ0NBQ0lDSUFGQnVOVUJhaWdDQUNJREVCTWdBZ1JBSUFNZ0FTQUNFUUlBREFFTElBRVFCZ3NnQUVFQU5nS2c2d0VnQUVJQU53T1E2d0VMNlFNQ0JIOENmaUFBUVFCQktCQURJUVFnQWtFQlFRVWdBeHNpQUVrRVFDQUFEd3NnQVVVRVFFRi9Ed3RCQVNFR0FrQUNRQ0FEUVFGR0RRQWdBeUVHSUFFb0FBQWlCVUdvNnI1cFJnMEFRWFloQXlBRlFYQnhRZERVdE1JQlJ3MEJRUWdoQXlBQ1FRaEpEUUVnQVRVQUJDRUlJQVJCQVRZQ0ZDQUVJQWczQXdCQkFBOExJQUVnQWlBR0VCb2lBeUFDU3cwQUlBUWdBellDR0VGeUlRTWdBQ0FCYWlJRlFRRnJMUUFBSWdKQkNIRU5BQ0FDUVNCeElnWkZCRUJCY0NFRElBVXRBQUFpQlVHbkFVc05BU0FGUVFkeHJVSUJJQVZCQTNaQkNtcXRoaUlJUWdPSWZpQUlmQ0VKSUFCQkFXb2hBQXNnQWtFR2RpRUZJQUpCQW5aQkFDRURBa0FDUUFKQUFrQWdBa0VEY1VFQmF3NERBQUVDQXdzZ0FDQUJhaTBBQUNFRElBQkJBV29oQUF3Q0N5QUFJQUZxTHdBQUlRTWdBRUVDYWlFQURBRUxJQUFnQVdvb0FBQWhBeUFBUVFScUlRQUxRUUZ4SVFJQ2ZnSkFBa0FDUUFKQUlBVkJBV3NPQXdFQ0F3QUxRbjhnQmtVTkF4b2dBQ0FCYWpFQUFBd0RDeUFBSUFGcU13QUFRb0FDZkF3Q0N5QUFJQUZxTlFBQURBRUxJQUFnQVdvcEFBQUxJUWdnQkNBQ05nSWdJQVFnQXpZQ0hDQUVJQWczQXdCQkFDRURJQVJCQURZQ0ZDQUVJQWdnQ1NBR0d5SUlOd01JSUFSQ2dJQUlJQWdnQ0VLQWdBaGFHejRDRUFzZ0F3dGZBUUYvUWJoL0lRTWdBVUVCUVFVZ0Foc2lBazhFZnlBQUlBSnFRUUZyTFFBQUlnQkJBM0ZCQW5SQm9CNXFLQUlBSUFKcUlBQkJCSFpCREhGQnNCNXFLQUlBYWlBQVFTQnhJZ0ZGYWlBQlFRVjJJQUJCd0FCSmNXb0ZRYmgvQ3dzTUFDQUFJQUVnQWtFQUVCa0xsd01DQlg4Q2ZpTUFRVUJxSWdRa0FBSkFBMEFnQVVFRlR3UkFBa0FnQUNnQUFFRndjVUhRMUxUQ0FVWUVRRUorSVFjZ0FVRUlTUTBFSUFBb0FBUWlBa0YzU3cwRUlBSkJDR29pQXlBQlN3MEVJQUpCZ1g5SkRRRU1CQXNnQkVFWWFpQUFJQUVRR3lFQ1FuNGdCQ2tER0VJQUlBUW9BaXhCQVVjYklBSWJJZ2RDZlZZTkF5QUhJQWg4SWdnZ0IxUkNmaUVIRFFNQ1FBSkFJQUZCQ0VrTkFDQUFLQUFBUVhCeFFkRFV0TUlCUncwQUlBQW9BQVFpQWtGM1N3MEZRYmgvSUFKQkNHb2lBaUFCSUFKSkd5RUREQUVMSUFSQkdHb2dBQ0FCRUJzaUFrR0lmMHNFUUNBQ0lRTU1BUXRCdUg4aEF5QUNEUUFnQVNBRUtBSXdJZ0pySVFVZ0FDQUNhaUVHQTBBZ0JpQUZJQVJCREdvUUhTSURRWWgvU3cwQklBTkJBMm9pQWlBRlN3UkFRYmgvSVFNTUFnc2dCU0FDYXlFRklBSWdCbW9oQmlBRUtBSVFSUTBBQ3lBRUtBSTRCSDlCdUg4aEF5QUZRUVJKRFFFZ0JrRUVhZ1VnQmdzZ0FHc2hBd3NnQTBHSWYwc05Bd3NnQVNBRGF5RUJJQUFnQTJvaEFBd0JDd3RDZmlBSUlBRWJJUWNMSUFSQlFHc2tBQ0FIQzJRQkFYOUJ1SDhoQXdKQUlBRkJBMGtOQUNBQUxRQUNJUUVnQWlBQUx3QUFJZ0JCQVhFMkFnUWdBaUFBUVFGMlFRTnhJZ00yQWdBZ0FpQUFJQUZCRUhSeVFRTjJJZ0EyQWdnQ1FBSkFJQU5CQVdzT0F3SUJBQUVMUVd3UEN5QUFJUU1MSUFNTFJBRUNmeUFCSUFJb0FnUWlBeUFCS0FJRWFpSUVOZ0lFSUFBZ0EwRUNkRUdnSFdvb0FnQWdBU2dDQUVFQUlBUnJkbkUyQWdBZ0FSQVBHaUFBSUFKQkNHbzJBZ1FMemdFQkJuOUJ1bjhoQ2dKQUlBSW9BZ1FpQ0NBQ0tBSUFJZ2xxSWcwZ0FTQUFhMHNOQUVGc0lRb2dDU0FFSUFNb0FnQWlDMnRMRFFBZ0FDQUphaUlFSUFJb0FnZ2lER3NoQWlBQUlBRkJJR3NpQUNBTElBbEJBQkFnSUFNZ0NTQUxhallDQUFKQUFrQWdCQ0FGYXlBTVR3UkFJQUloQlF3QkN5QU1JQVFnQm10TERRSWdCeUFISUFJZ0JXc2lBbW9pQVNBSWFrOEVRQ0FFSUFFZ0NCQUtHZ3dDQ3lBQ0lBaHFJUWdnQkNBQlFRQWdBbXNRQ2lBQ2F5RUVDeUFFSUFBZ0JTQUlRUUVRSUFzZ0RTRUtDeUFLQzhjRUFRSi9JQUFnQTJvaEJnSkFJQU5CQjB3RVFBTkFJQUFnQms4TkFpQUFJQUl0QUFBNkFBQWdBRUVCYWlFQUlBSkJBV29oQWd3QUN3QUxJQVJCQVVZRVFBSkFJQUFnQW1zaUJVRUhUUVJBSUFBZ0FpMEFBRG9BQUNBQUlBSXRBQUU2QUFFZ0FDQUNMUUFDT2dBQ0lBQWdBaTBBQXpvQUF5QUFJQUlnQlVFQ2RDSUZRY0FlYWlnQ0FHb2lBaWdBQURZQUJDQUNJQVZCNEI1cUtBSUFheUVDREFFTElBQWdBaWtBQURjQUFBc2dBa0VJYWlFQ0lBQkJDR29oQUFzZ0FTQUdUd1JBSUFBZ0Eyb2hBU0FFUVFGSElBQWdBbXRCRDBweVJRUkFBMEFnQUNBQ0tRQUFOd0FBSUFKQkNHb2hBaUFBUVFocUlnQWdBVWtOQUF3REN3QUxJQUFnQWlrQUFEY0FBQ0FBSUFJcEFBZzNBQWdnQTBFUlNRMEJJQUJCRUdvaEFBTkFJQUFnQWlrQUVEY0FBQ0FBSUFJcEFCZzNBQWdnQUNBQ0tRQWdOd0FRSUFBZ0Fpa0FLRGNBR0NBQ1FTQnFJUUlnQUVFZ2FpSUFJQUZKRFFBTERBRUxBa0FnQUNBQlN3UkFJQUFoQVF3QkN5QUJJQUJySVFVQ1FDQUVRUUZISUFBZ0FtdEJEMHB5UlFSQUlBSWhBd05BSUFBZ0F5a0FBRGNBQUNBRFFRaHFJUU1nQUVFSWFpSUFJQUZKRFFBTERBRUxJQUFnQWlrQUFEY0FBQ0FBSUFJcEFBZzNBQWdnQlVFUlNBMEFJQUJCRUdvaEFDQUNJUU1EUUNBQUlBTXBBQkEzQUFBZ0FDQURLUUFZTndBSUlBQWdBeWtBSURjQUVDQUFJQU1wQUNnM0FCZ2dBMEVnYWlFRElBQkJJR29pQUNBQlNRMEFDd3NnQWlBRmFpRUNDd05BSUFFZ0JrOE5BU0FCSUFJdEFBQTZBQUFnQVVFQmFpRUJJQUpCQVdvaEFnd0FDd0FMQzY0SEFnVi9BWDRqQUVHQUFXc2lFU1FBSUJFZ0F6WUNmRUYvSVE4Q1FBSkFBa0FDUUFKQUlBSU9CQUVBQXdJRUN5QUdSUVJBUWJoL0lROE1CQXRCYkNFUElBVXRBQUFpQWlBRFN3MERJQWdnQWtFQ2RDSUNhaWdDQUNFRElBSWdCMm9vQWdBaEFpQUFRUUE2QUFzZ0FFSUFOd0lBSUFBZ0FqWUNEQ0FBSUFNNkFBb2dBRUVBT3dFSUlBRWdBRFlDQUVFQklROE1Bd3NnQVNBSk5nSUFRUUFoRHd3Q0N5QUtSUVJBUVd3aER3d0NDMEVBSVE4Z0MwVWdERUVaU0hJTkFVRUlJQVIwUVFocUlRQkJBQ0VEQTBBZ0FDQURUUTBDSUFOQlFHc2hBd3dBQ3dBTFFXd2hEeUFSSUJGQi9BQnFJQkZCK0FCcUlBVWdCaEFNSWdOQmlIOUxEUUFnRVNnQ2VDSUNJQVJMRFFBZ0VTZ0NmRUVCYWlFSklBQkJDR29oQzBHQWdBSWdBblJCRUhVaEJVRUJJUkJCQVNBQ2RDSVBRUUZySWdvaEVnTkFJQWtnRGtjRVFBSkFJQkVnRGtFQmRDSUVhaThCQUNJTVFmLy9BMFlFUUNBTElCSkJBM1JxSUE0MkFnUWdFa0VCYXlFU1FRRWhEQXdCQ3lBUVFRQWdCU0FNd1VvYklSQUxJQVFnRFdvZ0REc0JBQ0FPUVFGcUlRNE1BUXNMSUFBZ0FqWUNCQ0FBSUJBMkFnQUNRQ0FLSUJKR0JFQWdEVUhxQUdvaEJrRUFJUkJCQUNFTUEwQWdDU0FRUmdSQUlBOUJBM1lnRDBFQmRtcEJBMm9pQlVFQmRDRUVRUUFoREVFQUlSSURRRUVBSVE0Z0R5QVNUUTBFQTBBZ0RrRUNSd1JBSUFzZ0JTQU9iQ0FNYWlBS2NVRURkR29nQmlBT0lCSnFhaTBBQURZQ0JDQU9RUUZxSVE0TUFRc0xJQkpCQW1vaEVpQUVJQXhxSUFweElRd01BQXNBQlNBUklCQkJBWFJxTGdFQUlRVWdCaUFNYWlJRUlCTTNBQUJCQ0NFT0EwQWdCU0FPU2dSQUlBUWdEbW9nRXpjQUFDQU9RUWhxSVE0TUFRc0xJQk5DZ1lLRWlKQ2d3SUFCZkNFVElCQkJBV29oRUNBRklBeHFJUXdNQVFzQUN3QUxJQTlCQTNZZ0QwRUJkbXBCQTJvaEJVRUFJUkJCQUNFT0EwQWdDU0FRUmcwQlFRQWhEQ0FSSUJCQkFYUnFMZ0VBSWdSQkFDQUVRUUJLR3lFRUEwQWdCQ0FNUndSQUlBc2dEa0VEZEdvZ0VEWUNCQU5BSUFVZ0Rtb2dDbkVpRGlBU1N3MEFDeUFNUVFGcUlRd01BUXNMSUJCQkFXb2hFQXdBQ3dBTElBSkJBV29oQlVFQUlRd0RRQ0FNSUE5SEJFQWdEU0FMSUF4QkEzUnFJZ2tvQWdRaUJFRUJkR29pQWlBQ0x3RUFJZ1pCQVdvN0FRQWdDU0FGSUFablFXQnphaUlDT2dBRElBa2dCaUFDZENBUGF6c0JBQ0FKSUFnZ0JFRUNkQ0lDYWlnQ0FEb0FBaUFKSUFJZ0Iyb29BZ0EyQWdRZ0RFRUJhaUVNREFFTEN5QUJJQUEyQWdBZ0F5RVBDeUFSUVlBQmFpUUFJQThMN1ZvQ08zOEdmaU1BUWVBQmF5SUVKQUFDUUVHdzdBa1FCU0lGUlFSQVFVQWhCd3dCQ3lBRlFnQTNBdlRxQVNBRlFRQTJBc1RyQVNBRlFRQTJBclRyQVNBRlFnQTNBcHpyQVNBRlFRQTJBcmpwQVNBRlFRQTJBcXpzQ1NBRlFnQTNBdFRyQVNBRlFnQTNBcXpyQVNBRlFnQTNBNGpyQVNBRlFnQTNBdVRxQVNBRlFnQTNBdVRyQVNBRlFZR0FnTUFBTmdLODZ3RWdCVUlBTndLazZ3RWdCVUg4NmdGcVFRQTJBZ0FnQlVHUTZ3RnFRZ0EzQXdBZ0JSQVlJQVZCck5VQmFpRVVJQVZCK09zQmFpRWNJQVZCc09vQmFpRWlJQVZCb0RCcUlTb2dCVUdZSUdvaEt5QUZRYWpRQUdvaEhpQUZRUkJxSVN3Z0JVRUlhaUVvSUFWQkJHb2hMU0FGUWNEcEFXb2hLU0FGUVlqckFXb2dCRUdVQVdvaEx5QUVRWXdCYWlFd0lBUkJoQUZxSVRFZ0JFSGNBR29oTWlBRVFkUUFhaUV6SUFSQnpBQnFJVFFnQUNFZEFrQUNRQUpBQWtBQ1FBTkFRUUZCQlNBRktBTGs2Z0ViSVFZQ1FBTkFJQU1nQmtrTkFTQUNLQUFBUVhCeFFkRFV0TUlCUmdSQVFiaC9JUWNnQTBFSVNRMElJQUlvQUFRaURrRjNTd1JBUVhJaEJ3d0pDeUFESUE1QkNHb2lDVWtOQ0NBT1FZQi9Td1JBSUFraEJ3d0pDeUFESUFscklRTWdBaUFKYWlFQ0RBRUxDeUFGUWdBM0FxenBBU0FGUWdBM0EranBBU0FGUVFBMkFwanJBU0FGUWdBM0E0RHFBU0FGUWdNM0EvanBBU0FGUWJUcEFXcENBRGNDQUNBRlFmRHBBV3BDQURjREFDQUZRYWpRQUdvaUNVR01nSURnQURZQ0FDQUZRYXpRQVdwQjRCSXBBZ0EzQWdBZ0JVRzAwQUZxUWVnU0tBSUFOZ0lBSUFVZ0JVRVFhallDQUNBRklBVkJvREJxTmdJRUlBVWdCVUdZSUdvMkFnZ2dCU0FKTmdJTUlBVkJBVUVGSUFVb0F1VHFBUnMyQXJ6cEFRSkFJQUZGRFFBZ0JTZ0NyT2tCSWdrZ0hVWU5BQ0FGSUFrMkFyanBBU0FGSUIwMkFxenBBU0FGS0FLdzZRRWhEaUFGSUIwMkFyRHBBU0FGSUIwZ0RpQUphMm8yQXJUcEFRdEJ1SDhoQ1NBRFFRVkJDU0FGS0FMazZnRWlCaHRKRFFVZ0FrRUJRUVVnQmhzZ0JoQWFJZzVCaUg5TEJFQWdEaUVKREFVTElBTWdEa0VEYWtrTkJTQXBJQUlnRGlBR0VCa2lCa0dJZjBzRVFDQUdJUWtNQlFzZ0JnMEZBa0FDUUNBRktBS282d0ZCQVVjTkFDQUZLQUtrNndFaUNVVU5BQ0FGS0FLVTZ3RkZEUUFnQ1NnQ0JFRUJheUlISUFVb0F0enBBU0lLclVLSGxhK3ZtTGJlbTU1L2ZrTEp6OW15OGVXNjZpZUZRaGVKUXMvVzA3N1N4NnZaUW41QytmUGQ4Wm4ybWFzV2ZDSS9RaUdJSUQrRlFzL1cwNzdTeDZ2WlFuNGlQMElkaUNBL2hVTDU4OTN4bWZhWnF4WitJajlDSUlnZ1A0V25jU0VHSUFrb0FnQWhGUU5BUVFBaENBSkFJQlVnQmtFQ2RHb29BZ0FpQ1VVTkFDQUpLQUlJUVFoSkRRQWdDU2dDQkNJU0tBQUFRYmZJd3VGK1J3MEFJQklvQUFRaENBc2dDQ0FLUndSQUlBWWdCM0ZCQVdvaEJpQUlEUUVMQ3lBSlJRMEFJQVVRR0NBRlFYODJBcURyQVNBRklBazJBcFRyQVNBRklBVW9BdHpwQVNJSU5nS1k2d0VNQVFzZ0JTZ0MzT2tCSVFnTEFrQWdDRVVOQUNBRktBS1k2d0VnQ0VZTkFFRmdJUWtNQmdzQ1FDQUZLQUxnNlFFRVFDQUZJQVVvQXVqcUFTSUpSVFlDN09vQklBa05BU0FGUXZucTBORG55YUhrNFFBM0E2anFBU0FGUWdBM0E2RHFBU0FGUXMvVzA3N1N4NnZaUWpjRG1Pb0JJQVZDMXV1Qzd1cjlpZlhnQURjRGtPb0JJQVZDQURjRGlPb0JJQ0pCQUVFb0VBTWFEQUVMSUFWQkFEWUM3T29CQ3lBQklCMXFJU1VnQlNBRktRUG82UUVnRHExOE53UG82UUVnQXlBT2F5RURJQUlnRG1vaEFpQWRJUTREUUNBQ0lBTWdCRUVzYWhBZEloVkJpSDlMQkVBZ0ZTRUpEQVlMSUFOQkEyc2lOU0FWU1EwRUlBSkJBMm9oRzBGc0lRa0NRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBRUtBSXNEZ01DQVFBVkN5QVZRZi8vQjBzTkV5QVZRUU5KRFJJZ0JTa0R5T2tCSVQ4Q1FBSkFJQnN0QUFBaUNVRURjU0lhUVFGckRnTUdBUUFIQ3lBRktBS0E2Z0VOQUVGaUlRa01GUXNnRlVFRlNRMFNJQnNvQUFBaEF3Si9Ba0FDUUFKQUlBbEJBblpCQTNFaUNVRUNhdzRDQVFJQUN5QUpRUUJISVFjZ0EwRUVka0gvQjNFaEMwRURJUVlnQTBFT2RrSC9CM0VNQWd0QkJDRUdJQU5CQkhaQi8vOEFjU0VMUVFFaEJ5QURRUkoyREFFTElBTkJCSFpCLy84UGNTSUxRWUNBQ0VzTkUwRUJJUWRCQlNFR0lBSXRBQWRCQ25RZ0EwRVdkbklMSWdnZ0Jtb2lDU0FWU3cwU0FrQWdDMEdCQmtrTkFDQUZLQUtjNndGRkRRQkJBQ0VEQTBBZ0EwR0RnQUZMRFFFZ0EwRkFheUVEREFBTEFBc2dCaUFiYWlFUElCcEJBMGNOQmlBRktBSU1JZ0l0QUFGQkNIUWhBeUFIRFFjZ0EwVU5DQ0FFUWZBQWFpQVBJQWdRRFNJRFFZaC9TdzBKSUFKQkJHb2hCaUFMSUJ4cUloSkJBMnNoQ2tFQUlBSXZBUUpyUVI5eElRY2dIQ0VEQTBBZ0JFSHdBR29RRDBVZ0F5QUtTWEVFUUNBRElBWWdCQ2dDY0NJSUlBUW9BblFpRDNRZ0IzWkJBblJxSWdJdkFRQTdBQUFnQXlBQ0xRQURhaUlESUFZZ0NDQVBJQUl0QUFKcUlnaDBJQWQyUVFKMGFpSUNMd0VBT3dBQUlBUWdDQ0FDTFFBQ2FqWUNkQ0FESUFJdEFBTnFJUU1NQVFVZ0VrRUNheUVJQTBBZ0JFSHdBR29RRHlFUElBUW9BbkFoQ2lBRUtBSjBJUUlnQXlBSVN5QVBja1VFUUNBRElBWWdDaUFDZENBSGRrRUNkR29pQ2k4QkFEc0FBQ0FFSUFJZ0NpMEFBbW8yQW5RZ0F5QUtMUUFEYWlFRERBRUxDd05BSUFNZ0NFMEVRQ0FESUFZZ0NpQUNkQ0FIZGtFQ2RHb2lEeThCQURzQUFDQURJQTh0QUFOcUlRTWdBaUFQTFFBQ2FpRUNEQUVMQ3dKQUlBTWdFazhOQUNBRElBWWdDaUFDZENBSGRrRUNkR29pQXkwQUFEb0FBQ0FETFFBRFFRRkdCRUFnQWlBRExRQUNhaUVDREFFTElBSkJIMHNOQUVFZ0lBSWdBeTBBQW1vaUFpQUNRU0JQR3lFQ0MwRnNRV3dnQ3lBRUtBSjRJQVFvQW54SEd5QUNRU0JIR3lFRERBc0xBQXNBQ3lBRUtBSTBJZ0lnSlNBT2Ewc05DaUFPUlFSQVFRQWhDU0FDRFFJTURnc2dEaUFiTFFBQUlBSVFBeG9nQWlFSkRBd0xJQlVnSlNBT2Ewc05DU0FPRFFGQkFDRUpJQlZGRFF3TFFiWi9JUWtNRVFzZ0RpQWJJQlVRQWhvZ0ZTRUpEQW9MSUJ3Z0d3Si9Ba0FDUUFKQUlBbEJBblpCQTNGQkFXc09Bd0VBQWdBTElBbEJBM1loQTBFQkRBSUxJQnN2QUFCQkJIWWhBMEVDREFFTElCVkJCRWtORGlBQ0x3QURJQUl0QUFWQkVIUnlJZ0pCajRDQUFVc05EaUFDUVFSMklRTkJBd3NpQW1vdEFBQWdBMEVnYWhBRElRa2dCU0FETmdLQTZ3RWdCU0FKTmdMdzZnRWdBa0VCYWlFSkRBVUxJQlVDZndKQUFrQUNRQ0FKUVFKMlFRTnhRUUZyRGdNQkFBSUFDeUFKUVFOMklRTkJBUXdDQ3lBYkx3QUFRUVIySVFOQkFnd0JDeUFDTHdBRElBSXRBQVZCRUhSeVFRUjJJUU5CQXdzaUFpQURhaUlKUVNCcVNRUkFJQWtnRlVzTkRTQWNJQUlnRzJvZ0F4QUNJUUlnQlNBRE5nS0E2d0VnQlNBQ05nTHc2Z0VnQWlBRGFpSUNRZ0EzQUJnZ0FrSUFOd0FRSUFKQ0FEY0FDQ0FDUWdBM0FBQU1CUXNnQlNBRE5nS0E2d0VnQlNBQ0lCdHFOZ0x3NmdFTUJBc2dCMFVFUUNBZUlBOGdDQ0FVRUJRaUFrR0lmMHNnQWlBSVQzSU5EQ0FjSUFzZ0FpQVBhaUFJSUFKcklCNFFGU0VEREFNTElBdEZJQWhGY2cwTElBdEJDSFlpQXlBSUlBdEpCSDhnQ0VFRWRDQUxiZ1ZCRHd0QkdHd2lBa0dNQ0dvb0FnQnNJQUpCaUFocUtBSUFhaUlHUVFOMklBWnFJQUpCZ0FocUtBSUFJQUpCaEFocUtBSUFJQU5zYWtrRVFDTUFRUkJySWhBa0FDQWVLQUlBSVFNZ0ZFSHdCR3BCQUVIc0FCQURJUVpCVkNFQ0FrQWdBMEgvQVhFaURFRU1TdzBBQWtBZ0ZFSGNDV29nQmlBUVFRaHFJQkJCREdvZ0R5QUlJQlJCM0F0cUloY1FDeUlTUVloL1N3MEFJQkFvQWd3aUJpQU1TdzBCSUJSQnFBVnFJUTBnRkVHa0JXb2hOaUFlUVFScUlSRWdBMEdBZ0lCNGNTRTNJQVpCQVdvaUV5RUNJQVloQXdOQUlBSWlCMEVCYXlFQ0lBTWlDa0VCYXlFRElCUWdDa0VDZEdvb0F2QUVSUTBBQzBFQklBY2dCMEVCVFJzaEZrRUFJUWRCQVNFQ0EwQWdBaUFXUndSQUlCUWdBa0VDZENJRGFpZ0M4QVFoR0NBRElBMXFJQWMyQWdBZ0FrRUJhaUVDSUFjZ0dHb2hCd3dCQ3dzZ0RTQUhOZ0lBUVFBaEFpQVFLQUlJSVFNRFFDQUNJQU5IQkVBZ0RTQUNJQlJxUWR3SmFpMEFBQ0lZUVFKMGFpSVpJQmtvQWdBaUdVRUJhallDQUNBVUlCbEJBWFJxSWhrZ0dEb0EzUVVnR1NBQ09nRGNCU0FDUVFGcUlRSU1BUXNMUVFBaEF5QU5RUUEyQWdBZ0RDQUdRWDl6YWlFR1FRRWhBZ05BSUFJZ0ZrY0VRQ0FVSUFKQkFuUnFJZzBnQXpZQ0FDQU5LQUx3QkNBQ0lBWnFkQ0FEYWlFRElBSkJBV29oQWd3QkN3c2dEQ0FUSUFwcklnWnJRUUZxSVFvZ0JpRURBMEFnQXlBS1NRUkFJQlFnQTBFMGJHb2hEVUVCSVFJRFFDQUNJQlpIQkVBZ0RTQUNRUUowSWhocUlCUWdHR29vQWdBZ0EzWTJBZ0FnQWtFQmFpRUNEQUVMQ3lBRFFRRnFJUU1NQVFzTElCY2dGRUUwRUFJaE9DQVVRWkFNYWlFNUlCTWdER3NoT2lBVVFkd0ZhaUVYUVFBaENnTkFBa0FDUUNBSElBcEhCRUJCQVNBTUlCTWdGeUFLUVFGMGFpSUNMUUFCSWcxcklnTnJJaGgwSVJrZ0FpMEFBQ0VXSURnZ0RVRUNkR29pSHlnQ0FDRUNJQVlnR0UwRVFDQTJRUUVnQXlBNmFpSU5JQTFCQVV3YklpQkJBblFpSkdvb0FnQWhEU0E1SUJRZ0EwRTBiR3BCTkJBQ0lTRWdEVUVCZENFbUlCRWdBa0VDZEdvaEl5QWdRUUZORFFJZ0EwRVFkRUdBZ1B3SGNTQVdja0dBZ0lBSWNpRWdJQ0VnSkdvb0FnQWhKRUVBSVFJRFFDQUNJQ1JHRFFNZ0l5QUNRUUowYWlBZ05nRUFJQUpCQVdvaEFnd0FDd0FMSUFJZ0FpQVphaUlOSUFJZ0RVc2JJUTBnQTBFUWRFR0FnUHdIY1NBV2NrR0FnSUFJY2lFREEwQWdBaUFOUmcwRElCRWdBa0VDZEdvZ0F6WUJBQ0FDUVFGcUlRSU1BQXNBQ3lBZUlBeEJFSFFnTjNJZ0RISkJnQUp5TmdJQURBTUxJQWNnRFdzaEpDQVhJQ1pxSVNaQkFDRU5BMEFnRFNBa1JnMEJRUUVnR0NBVElDWWdEVUVCZEdvaUp5MEFBU0lDYXlJN2EzUWlQQ0FoSUFKQkFuUnFJaUFvQWdBaUFtb2hQU0FESUR0cVFSQjBRWUNBL0FkeElDY3RBQUJCQ0hSeUlCWnlRWUNBZ0JCeUlTY0RRQ0FqSUFKQkFuUnFJQ2MyQVFBZ0FrRUJhaUlDSUQxSkRRQUxJQ0FnSUNnQ0FDQThhallDQUNBTlFRRnFJUTBNQUFzQUN5QWZJQjhvQWdBZ0dXbzJBZ0FnQ2tFQmFpRUtEQUFMQUFzZ0VpRUNDeUFRUVJCcUpBQWdBa0dJZjBzZ0FpQUlUM0lORENBY0lBc2dBaUFQYWlBSUlBSnJJQjRRRmlFRERBTUxJQjRnRHlBSUlCUVFGQ0lDUVloL1N5QUNJQWhQY2cwTElCd2dDeUFDSUE5cUlBZ2dBbXNnSGhBWElRTU1BZ3NnQXdSQUlCd2dDeUFQSUFnZ0FoQVdJUU1NQWdzZ0hDQUxJQThnQ0NBQ0VCY2hBd3dCQ3lBY0lBc2dEeUFJSUFJUUZTRURDeUFEUVloL1N3MElJQVVnQ3pZQ2dPc0JJQVVnSERZQzhPb0JJQVZCQVRZQ2dPb0JJQnBCQWtZRVFDQUZJQjQyQWd3TElBc2dIR29pQWtJQU53QUFJQUpDQURjQUdDQUNRZ0EzQUJBZ0FrSUFOd0FJSUFsQmlIOUxEUW9MSUFrZ0ZVWU5DQ0FWSUFscklRWWdCU2dDbk9zQklRb0NRQ0FKSUJ0cUlnTXRBQUFpRDBVRVFFRUJJUUpCQUNFUFFiaC9JUWtnQmtFQlJnMEJEQXNMQW44Z0EwRUJhaUFQd0NJQ1FRQk9EUUFhSUFKQmYwWUVRQ0FHUVFOSURRc2dBeThBQVVHQS9nRnFJUThnQTBFRGFnd0JDeUFHUVFKSURRb2dBeTBBQVNBUFFRaDBja0dBZ0FKcklROGdBMEVDYWdzaEVrRzRmeUVKSUJKQkFXb2lBaUFWSUJ0cUlnZExEUW9nTENBRklCSXRBQUFpRWtFR2RrRWpRUWtnQWlBSElBSnJRY0FRUWRBUlFmQVNJQVVvQW9UcUFTQUtJQThnRkJBaElnbEJpSDlMRFFnZ0t5QW9JQkpCQkhaQkEzRkJIMEVJSUFJZ0NXb2lBaUFISUFKclFZQUxRWUFNUVlBWElBVW9Bb1RxQVNBRktBS2M2d0VnRHlBVUVDRWlDRUdJZjBzTkNFRnNJUWtnS2lBdElCSkJBblpCQTNGQk5FRUpJQUlnQ0dvaUFpQUhJQUpyUVlBTlFlQU9RWkFaSUFVb0FvVHFBU0FGS0FLYzZ3RWdEeUFVRUNFaUIwR0lmMHNOQ2lBQ0lBZHFJQU5ySWdJaENTQUNRWWgvU3cwS0N5QU9JQTlCQUV4eURRRUxRYnAvSVFrTUNBc2dKU0FPYXlFSklBWWdBbXNoQmlBQ0lBTnFJUWNDUUFKQUFrQWdDa1VFUUNBUFFRbElJQVVwQThqcEFVS0JnSUFJVkhJTkFpQW9LQUlBSWdKQkNHb2hFaUFDS0FJRUlRcEJBQ0VEUVFBaEFnTkFJQU1nQ25aRkJFQWdBaUFTSUFOQkEzUnFMUUFDUVJaTGFpRUNJQU5CQVdvaEF3d0JDd3NnQlVFQU5nS2M2d0VnQWtFSUlBcHJkRUVVVHcwQkRBTUxJQVZCQURZQ25Pc0JDeUFFSUFVb0F2RHFBU0lETmdMY0FTQUpJQTVxSVJZZ0F5QUZLQUtBNndGcUlSY0NRQ0FQUlFSQUlBNGhCd3dCQ3lBRktBSzQ2UUVoR2lBRktBSzA2UUVoR0NBRktBS3c2UUVoRWlBRlFRRTJBb1RxQVVFQUlRTURRQ0FEUVFOSEJFQWdCQ0FEUVFKMElnSnFJQUlnQldwQnJOQUJhaWdDQURZQ1pDQURRUUZxSVFNTUFRc0xRV3doQ1NBRVFUaHFJZ0lnQnlBR0VBMUJpSDlMRFFOQkNDQVBJQTlCQ0U0YklSOGdOQ0FDSUFVb0FnQVFIaUF6SUFJZ0JTZ0NDQkFlSURJZ0FpQUZLQUlFRUI0Z0RpQVNheUVaUVFBaENBTkFJQVJCT0dvUUQwRURSaUFJSUI5T2NrVUVRQ0FFS0FKUUlBUW9Ba3hCQTNScUtRSUFJa0NuSWdkQkVIWWlFVUgvQVhFaEN5QUVLQUpnSUFRb0FseEJBM1JxS1FJQUlrR25JZ3hCRUhZaUlVSC9BWEVoRUNBRUtBSllJQVFvQWxSQkEzUnFLUUlBSWtKQ0lJaW5JUVlnUVVJZ2lDQkFRaUNJcHlFREFrQWdRa0lRaUtjaUNrSC9BWEVpQWtFQ1R3UkFBa0FnQWtFWlNTQS9Rb0dBZ0JCVWNrVUVRQ0FFUVNBZ0JDZ0NQQ0lLYXlJTklBSWdBaUFOU3hzaUV5QUthallDUENBR0lBUW9BamdnQ25SQkFDQVRhM1lnQWlBVGF5SVRkR29oQ2lBRVFUaHFFQThhSUFJZ0RVME5BU0FFSUFRb0Fqd2lBaUFUYWpZQ1BDQUVLQUk0SUFKMFFRQWdFMnQySUFwcUlRb01BUXNnQkNBQ0lBUW9BandpRFdvMkFqd2dCQ2dDT0NBTmRFRUFJQXByZGlBR2FpRUtJQVJCT0dvUUR4b0xJQVFwQW1RaFJDQUVJQW8yQW1RZ0JDQkVOd0pvREFFTEFrQWdBa1VFUUNBREJFQWdCQ2dDWkNFS0RBTUxJQVFvQW1naENnd0JDeUFFSUFRb0Fqd2lBa0VCYWpZQ1BBSi9JQVlnQTBWcUlBUW9BamdnQW5SQkgzWnFJZ0pCQTBZRVFDQUVLQUprUVFGckRBRUxJQUpCQW5RZ0JHb29BbVFMSWdaRklBWnFJUW9nQWtFQlJ3UkFJQVFnQkNnQ2FEWUNiQXNMSUFRZ0JDZ0NaRFlDYUNBRUlBbzJBbVFMcHlFQ0lFRkNnSUQ4QjROUVJRUkFJQVFnQkNnQ1BDSUdJQkJxTmdJOElBUW9BamdnQm5SQkFDQWhhM1lnQW1vaEFnc2dDeUFRYWtFVVR3UkFJQVJCT0dvUUR4b0xJRUJDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NQQ0lHSUF0cU5nSThJQVFvQWpnZ0JuUkJBQ0FSYTNZZ0Eyb2hBd3NnQkVFNGFoQVBHaUFFSUFRb0FqZ2lCa0VBSUFkQkdIWWlDeUFFS0FJOGFpSVFhM1lnQzBFQ2RFR2dIV29vQWdCeElBZEIvLzhEY1dvMkFrd2dCQ0FRSUF4QkdIWWlCMm9pQ3pZQ1BDQUVJQWRCQW5SQm9CMXFLQUlBSUFaQkFDQUxhM1p4SUF4Qi8vOERjV28yQWx3Z0JFRTRhaEFQR2lBRUlFS25JZ1pCR0hZaUJ5QUVLQUk4YWlJTE5nSThJQVFnQjBFQ2RFR2dIV29vQWdBZ0JDZ0NPRUVBSUF0cmRuRWdCa0gvL3dOeGFqWUNWQ0FFUWZBQWFpQUlRUXhzYWlJR0lBbzJBZ2dnQmlBQ05nSUVJQVlnQXpZQ0FDQUlRUUZxSVFnZ0F5QVphaUFDYWlFWkRBRUxDeUFJSUI5SURRTWdGa0VnYXlFaElBNGhCd05BSUFSQk9Hb1FEMEVEUmlBSUlBOU9ja1VFUUNBRUtBSlFJQVFvQWt4QkEzUnFLUUlBSWtDbklnWkJFSFlpSTBIL0FYRWhDaUFFS0FKZ0lBUW9BbHhCQTNScUtRSUFJa0duSWcxQkVIWWlJRUgvQVhFaEV5QUVLQUpZSUFRb0FsUkJBM1JxS1FJQUlrSkNJSWluSVFNZ1FVSWdpQ0JBUWlDSXB5RUxBa0FnUWtJUWlLY2lERUgvQVhFaUFrRUNUd1JBQWtBZ0FrRVpTU0EvUW9HQWdCQlVja1VFUUNBRVFTQWdCQ2dDUENJTWF5SVJJQUlnQWlBUlN4c2lFQ0FNYWpZQ1BDQURJQVFvQWpnZ0RIUkJBQ0FRYTNZZ0FpQVFheUlNZEdvaEVDQUVRVGhxRUE4YUlBSWdFVTBOQVNBRUlBUW9BandpQWlBTWFqWUNQQ0FFS0FJNElBSjBRUUFnREd0MklCQnFJUkFNQVFzZ0JDQUNJQVFvQWp3aUVHbzJBandnQkNnQ09DQVFkRUVBSUF4cmRpQURhaUVRSUFSQk9Hb1FEeG9MSUFRcEFtUWhSQ0FFSUJBMkFtUWdCQ0JFTndKb0RBRUxBa0FnQWtVRVFDQUxCRUFnQkNnQ1pDRVFEQU1MSUFRb0FtZ2hFQXdCQ3lBRUlBUW9BandpQWtFQmFqWUNQQUovSUFNZ0MwVnFJQVFvQWpnZ0FuUkJIM1pxSWdKQkEwWUVRQ0FFS0FKa1FRRnJEQUVMSUFKQkFuUWdCR29vQW1RTElnTkZJQU5xSVJBZ0FrRUJSd1JBSUFRZ0JDZ0NhRFlDYkFzTElBUWdCQ2dDWkRZQ2FDQUVJQkEyQW1RTHB5RU1JRUZDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NQQ0lDSUJOcU5nSThJQVFvQWpnZ0FuUkJBQ0FnYTNZZ0RHb2hEQXNnQ2lBVGFrRVVUd1JBSUFSQk9Hb1FEeG9MSUVCQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDUENJQ0lBcHFOZ0k4SUFRb0FqZ2dBblJCQUNBamEzWWdDMm9oQ3dzZ0JFRTRhaEFQR2lBRUlBUW9BamdpQWtFQUlBWkJHSFlpQXlBRUtBSThhaUlLYTNZZ0EwRUNkRUdnSFdvb0FnQnhJQVpCLy84RGNXbzJBa3dnQkNBS0lBMUJHSFlpQTJvaUJqWUNQQ0FFSUFOQkFuUkJvQjFxS0FJQUlBSkJBQ0FHYTNaeElBMUIvLzhEY1dvMkFsd2dCRUU0YWhBUEdpQUVJRUtuSWdKQkdIWWlBeUFFS0FJOGFpSUdOZ0k4SUFRZ0EwRUNkRUdnSFdvb0FnQWdCQ2dDT0VFQUlBWnJkbkVnQWtILy93TnhhallDVkFKQUFrQUNRQ0FFS0FMY0FTSURJQVJCOEFCcUlBaEJCM0ZCREd4cUloTW9BZ0FpRVdvaUl5QVhTdzBBSUFjZ0V5Z0NCQ0lOSUJGcUlncHFJQ0ZMRFFBZ0NrRWdhaUFXSUFkclRRMEJDeUFFSUJNb0FnZzJBaGdnQkNBVEtRSUFOd01RSUFjZ0ZpQUVRUkJxSUFSQjNBRnFJQmNnRWlBWUlCb1FIeUVLREFFTElBY2dFV29oQWlBVEtBSUlJUVlnQnlBREtRQUFOd0FBSUFjZ0F5a0FDRGNBQ0FKQUlCRkJFVWtOQUNBSElBTXBBQkEzQUJBZ0J5QURLUUFZTndBWUlCRkJFR3RCRVVnTkFDQURRUkJxSVFNZ0IwRWdhaUVSQTBBZ0VTQURLUUFRTndBQUlCRWdBeWtBR0RjQUNDQVJJQU1wQUNBM0FCQWdFU0FES1FBb053QVlJQU5CSUdvaEF5QVJRU0JxSWhFZ0Fra05BQXNMSUFJZ0Jtc2hBeUFFSUNNMkF0d0JJQUlnRW1zZ0Jra0VRQ0FHSUFJZ0dHdExEUWNnR2lBYUlBTWdFbXNpQTJvaUVTQU5hazhFUUNBQ0lCRWdEUkFLR2d3Q0N5QURJQTFxSVEwZ0FpQVJRUUFnQTJzUUNpQURheUVDSUJJaEF3c2dCa0VRVHdSQUlBSWdBeWtBQURjQUFDQUNJQU1wQUFnM0FBZ2dEVUVSU0EwQklBSWdEV29oQmlBQ1FSQnFJUUlEUUNBQ0lBTXBBQkEzQUFBZ0FpQURLUUFZTndBSUlBSWdBeWtBSURjQUVDQUNJQU1wQUNnM0FCZ2dBMEVnYWlFRElBSkJJR29pQWlBR1NRMEFDd3dCQ3dKQUlBWkJCMDBFUUNBQ0lBTXRBQUE2QUFBZ0FpQURMUUFCT2dBQklBSWdBeTBBQWpvQUFpQUNJQU10QUFNNkFBTWdBaUFESUFaQkFuUWlCa0hBSG1vb0FnQnFJZ01vQUFBMkFBUWdBeUFHUWVBZWFpZ0NBR3NoQXd3QkN5QUNJQU1wQUFBM0FBQUxJQTFCQ1VrTkFDQUNJQTFxSVJFZ0FrRUlhaUlHSUFOQkNHb2lBMnRCRDB3RVFBTkFJQVlnQXlrQUFEY0FBQ0FEUVFocUlRTWdCa0VJYWlJR0lCRkpEUUFNQWdzQUN5QUdJQU1wQUFBM0FBQWdCaUFES1FBSU53QUlJQTFCR1VnTkFDQUNRUmhxSVFJRFFDQUNJQU1wQUJBM0FBQWdBaUFES1FBWU53QUlJQUlnQXlrQUlEY0FFQ0FDSUFNcEFDZzNBQmdnQTBFZ2FpRURJQUpCSUdvaUFpQVJTUTBBQ3dzZ0NrR0lmMHNFUUNBS0lRa01CZ1VnRXlBUU5nSUlJQk1nRERZQ0JDQVRJQXMyQWdBZ0NFRUJhaUVJSUFjZ0Ntb2hCeUFMSUJscUlBeHFJUmtNQWdzQUN3c2dDQ0FQU0EwRElBZ2dIMnNoQmdOQUFrQWdCaUFQVGdSQVFRQWhBd05BSUFOQkEwWU5BaUFGSUFOQkFuUWlBbXBCck5BQmFpQUNJQVJxS0FKa05nSUFJQU5CQVdvaEF3d0FDd0FMQWtBQ1FBSkFJQVFvQXR3QklnTWdCRUh3QUdvZ0JrRUhjVUVNYkdvaUNDZ0NBQ0lNYWlJUUlCZExEUUFnQnlBSUtBSUVJZ3NnREdvaUNtb2dJVXNOQUNBS1FTQnFJQllnQjJ0TkRRRUxJQVFnQ0NnQ0NEWUNLQ0FFSUFncEFnQTNBeUFnQnlBV0lBUkJJR29nQkVIY0FXb2dGeUFTSUJnZ0doQWZJUW9NQVFzZ0J5QU1haUVDSUFnb0FnZ2hDQ0FISUFNcEFBQTNBQUFnQnlBREtRQUlOd0FJQWtBZ0RFRVJTUTBBSUFjZ0F5a0FFRGNBRUNBSElBTXBBQmczQUJnZ0RFRVFhMEVSU0EwQUlBTkJFR29oQXlBSFFTQnFJUXdEUUNBTUlBTXBBQkEzQUFBZ0RDQURLUUFZTndBSUlBd2dBeWtBSURjQUVDQU1JQU1wQUNnM0FCZ2dBMEVnYWlFRElBeEJJR29pRENBQ1NRMEFDd3NnQWlBSWF5RURJQVFnRURZQzNBRWdBaUFTYXlBSVNRUkFJQWdnQWlBWWEwc05CeUFhSUJvZ0F5QVNheUlEYWlJTUlBdHFUd1JBSUFJZ0RDQUxFQW9hREFJTElBTWdDMm9oQ3lBQ0lBeEJBQ0FEYXhBS0lBTnJJUUlnRWlFREN5QUlRUkJQQkVBZ0FpQURLUUFBTndBQUlBSWdBeWtBQ0RjQUNDQUxRUkZJRFFFZ0FpQUxhaUVJSUFKQkVHb2hBZ05BSUFJZ0F5a0FFRGNBQUNBQ0lBTXBBQmczQUFnZ0FpQURLUUFnTndBUUlBSWdBeWtBS0RjQUdDQURRU0JxSVFNZ0FrRWdhaUlDSUFoSkRRQUxEQUVMQWtBZ0NFRUhUUVJBSUFJZ0F5MEFBRG9BQUNBQ0lBTXRBQUU2QUFFZ0FpQURMUUFDT2dBQ0lBSWdBeTBBQXpvQUF5QUNJQU1nQ0VFQ2RDSUlRY0FlYWlnQ0FHb2lBeWdBQURZQUJDQURJQWhCNEI1cUtBSUFheUVEREFFTElBSWdBeWtBQURjQUFBc2dDMEVKU1EwQUlBSWdDMm9oRENBQ1FRaHFJZ2dnQTBFSWFpSURhMEVQVEFSQUEwQWdDQ0FES1FBQU53QUFJQU5CQ0dvaEF5QUlRUWhxSWdnZ0RFa05BQXdDQ3dBTElBZ2dBeWtBQURjQUFDQUlJQU1wQUFnM0FBZ2dDMEVaU0EwQUlBSkJHR29oQWdOQUlBSWdBeWtBRURjQUFDQUNJQU1wQUJnM0FBZ2dBaUFES1FBZ053QVFJQUlnQXlrQUtEY0FHQ0FEUVNCcUlRTWdBa0VnYWlJQ0lBeEpEUUFMQ3lBS1FZaC9Td1JBSUFvaENRd0dCU0FHUVFGcUlRWWdCeUFLYWlFSERBSUxBQXNMSUFRb0F0d0JJUU1MUWJwL0lRa2dGeUFEYXlJQ0lCWWdCMnRMRFFJZ0J3Ui9JQWNnQXlBQ0VBSWdBbW9GUVFBTElBNXJJUWtNQWdzZ0JVRUFOZ0tjNndFTElBUWdCU2dDOE9vQklnTTJBdHdCSUFrZ0Rtb2hEQ0FESUFVb0FvRHJBV29oRUFKQUlBOUZCRUFnRGlFR0RBRUxJQVVvQXJqcEFTRU5JQVVvQXJUcEFTRVRJQVVvQXJEcEFTRVNJQVZCQVRZQ2hPb0JRUUFoQXdOQUlBTkJBMGNFUUNBRUlBTkJBblFpQW1vZ0FpQUZha0dzMEFGcUtBSUFOZ0tjQVNBRFFRRnFJUU1NQVFzTFFXd2hDU0FFUWZBQWFpSUNJQWNnQmhBTlFZaC9TdzBCSURFZ0FpQUZLQUlBRUI0Z01DQUNJQVVvQWdnUUhpQXZJQUlnQlNnQ0JCQWVJQXhCSUdzaEdDQU9JUVlEUUNBRUtBS0lBU0FFS0FLRUFVRURkR29wQWdBaVFLY2lDa0VRZGlJWlFmOEJjU0VMSUFRb0FwZ0JJQVFvQXBRQlFRTjBhaWtDQUNKQnB5SVdRUkIySWg5Qi93RnhJUm9nQkNnQ2tBRWdCQ2dDakFGQkEzUnFLUUlBSWtKQ0lJaW5JUWNnUVVJZ2lDQkFRaUNJcHlFREFrQWdRa0lRaUtjaUNFSC9BWEVpQWtFQ1R3UkFBa0FnQWtFWlNTQS9Rb0dBZ0JCVWNrVUVRQ0FFUVNBZ0JDZ0NkQ0lJYXlJUklBSWdBaUFSU3hzaUZ5QUlhallDZENBSElBUW9BbkFnQ0hSQkFDQVhhM1lnQWlBWGF5SVhkR29oQ0NBRVFmQUFhaEFQR2lBQ0lCRk5EUUVnQkNBRUtBSjBJZ0lnRjJvMkFuUWdCQ2dDY0NBQ2RFRUFJQmRyZGlBSWFpRUlEQUVMSUFRZ0FpQUVLQUowSWhGcU5nSjBJQVFvQW5BZ0VYUkJBQ0FJYTNZZ0Iyb2hDQ0FFUWZBQWFoQVBHZ3NnQkNrQ25BRWhSQ0FFSUFnMkFwd0JJQVFnUkRjQ29BRU1BUXNDUUNBQ1JRUkFJQU1FUUNBRUtBS2NBU0VJREFNTElBUW9BcUFCSVFnTUFRc2dCQ0FFS0FKMElnSkJBV28yQW5RQ2Z5QUhJQU5GYWlBRUtBSndJQUowUVI5MmFpSUNRUU5HQkVBZ0JDZ0NuQUZCQVdzTUFRc2dBa0VDZENBRWFpZ0NuQUVMSWdkRklBZHFJUWdnQWtFQlJ3UkFJQVFnQkNnQ29BRTJBcVFCQ3dzZ0JDQUVLQUtjQVRZQ29BRWdCQ0FJTmdLY0FRdW5JUUlnUVVLQWdQd0hnMUJGQkVBZ0JDQUVLQUowSWdjZ0dtbzJBblFnQkNnQ2NDQUhkRUVBSUI5cmRpQUNhaUVDQ3lBTElCcHFRUlJQQkVBZ0JFSHdBR29RRHhvTElFQkNnSUQ4QjROUVJRUkFJQVFnQkNnQ2RDSUhJQXRxTmdKMElBUW9BbkFnQjNSQkFDQVphM1lnQTJvaEF3c2dCRUh3QUdvUUR4b2dCQ0FFS0FKd0lnZEJBQ0FLUVJoMklnc2dCQ2dDZEdvaUdtdDJJQXRCQW5SQm9CMXFLQUlBY1NBS1FmLy9BM0ZxTmdLRUFTQUVJQm9nRmtFWWRpSUthaUlMTmdKMElBUWdDa0VDZEVHZ0hXb29BZ0FnQjBFQUlBdHJkbkVnRmtILy93TnhhallDbEFFZ0JFSHdBR29RRHhvZ0JDQkNweUlIUVJoMklnb2dCQ2dDZEdvaUN6WUNkQ0FFSUFwQkFuUkJvQjFxS0FJQUlBUW9BbkJCQUNBTGEzWnhJQWRCLy84RGNXbzJBb3dCSUFRZ0F6WUNPQ0FFSUFJMkFqd2dCQ0FJTmdKQUFrQUNRQUpBSUFRb0F0d0JJZ3NnQTJvaUZpQVFTdzBBSUFZZ0FpQURhaUlLYWlBWVN3MEFJQXBCSUdvZ0RDQUdhMDBOQVFzZ0JDQUVRVUJyS0FJQU5nSUlJQVFnQkNrRE9EY0RBQ0FHSUF3Z0JDQUVRZHdCYWlBUUlCSWdFeUFORUI4aENnd0JDeUFESUFacUlRY2dCaUFMS1FBQU53QUFJQVlnQ3lrQUNEY0FDQUpBSUFOQkVVa05BQ0FHSUFzcEFCQTNBQkFnQmlBTEtRQVlOd0FZSUFOQkVHdEJFVWdOQUNBTFFSQnFJUU1nQmtFZ2FpRUxBMEFnQ3lBREtRQVFOd0FBSUFzZ0F5a0FHRGNBQ0NBTElBTXBBQ0EzQUJBZ0N5QURLUUFvTndBWUlBTkJJR29oQXlBTFFTQnFJZ3NnQjBrTkFBc0xJQWNnQ0dzaEF5QUVJQlkyQXR3QklBY2dFbXNnQ0VrRVFDQUlJQWNnRTJ0TERRUWdEU0FOSUFNZ0Vtc2lBMm9pQ3lBQ2FrOEVRQ0FISUFzZ0FoQUtHZ3dDQ3lBSElBdEJBQ0FEYXhBS0lBUWdBaUFEYWlJQ05nSThJQU5ySVFjZ0VpRURDeUFJUVJCUEJFQWdCeUFES1FBQU53QUFJQWNnQXlrQUNEY0FDQ0FDUVJGSURRRWdBaUFIYWlFSUlBZEJFR29oQWdOQUlBSWdBeWtBRURjQUFDQUNJQU1wQUJnM0FBZ2dBaUFES1FBZ053QVFJQUlnQXlrQUtEY0FHQ0FEUVNCcUlRTWdBa0VnYWlJQ0lBaEpEUUFMREFFTEFrQWdDRUVIVFFSQUlBY2dBeTBBQURvQUFDQUhJQU10QUFFNkFBRWdCeUFETFFBQ09nQUNJQWNnQXkwQUF6b0FBeUFISUFNZ0NFRUNkQ0lJUWNBZWFpZ0NBR29pQXlnQUFEWUFCQ0FESUFoQjRCNXFLQUlBYXlFRERBRUxJQWNnQXlrQUFEY0FBQXNnQWtFSlNRMEFJQUlnQjJvaEN5QUhRUWhxSWdnZ0EwRUlhaUlEYTBFUFRBUkFBMEFnQ0NBREtRQUFOd0FBSUFOQkNHb2hBeUFJUVFocUlnZ2dDMGtOQUF3Q0N3QUxJQWdnQXlrQUFEY0FBQ0FJSUFNcEFBZzNBQWdnQWtFWlNBMEFJQWRCR0dvaEFnTkFJQUlnQXlrQUVEY0FBQ0FDSUFNcEFCZzNBQWdnQWlBREtRQWdOd0FRSUFJZ0F5a0FLRGNBR0NBRFFTQnFJUU1nQWtFZ2FpSUNJQXRKRFFBTEN5QUtRWWgvU3dSQUlBb2hDUXdEQ3lBR0lBcHFJUVlnQkVId0FHb1FEeUVESUE5QkFXc2lEdzBBQzBFQUlRSWdBMEVDU1EwQkEwQWdBa0VEUndSQUlBVWdBa0VDZENJRGFrR3MwQUZxSUFNZ0JHb29BcHdCTmdJQUlBSkJBV29oQWd3QkN3c2dCQ2dDM0FFaEF3dEJ1bjhoQ1NBUUlBTnJJZ0lnRENBR2Ewc05BQ0FHQkg4Z0JpQURJQUlRQWlBQ2FnVkJBQXNnRG1zaENRc2dDVUdJZjBzTkJnc0NRQ0FGS0FMczZnRkZEUUFnQlNBRktRT0k2Z0VnQ2ExOE53T0k2Z0VDUUNBRktBTFE2Z0VpQWlBSmFpSUlRUjlOQkVBZ0RrVU5BU0FDSUNKcUlBNGdDUkFDR2lBRktBTFE2Z0VnQ1dvaENBd0JDeUFPSVFNZ0FnUkFJQUlnSW1vZ0EwRWdJQUpyRUFJYUlBVW9BdERxQVNFQ0lBVkJBRFlDME9vQklBVWdCU2tEa09vQklBVXBBTERxQVVMUDF0Tyswc2VyMlVKK2ZFSWZpVUtIbGErdm1MYmVtNTUvZmpjRGtPb0JJQVVnQlNrRG1Pb0JJQVVwQUxqcUFVTFAxdE8rMHNlcjJVSitmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZqY0RtT29CSUFVZ0JTa0RvT29CSUFVcEFNRHFBVUxQMXRPKzBzZXIyVUorZkVJZmlVS0hsYSt2bUxiZW01NS9mamNEb09vQklBVWdCU2tEcU9vQklBVXBBTWpxQVVMUDF0Tyswc2VyMlVKK2ZFSWZpVUtIbGErdm1MYmVtNTUvZmpjRHFPb0JJQU1nQW10QklHb2hBd3NnQ1NBT2FpSUNJQU5CSUdwUEJFQWdBa0VnYXlFR0lBVXBBNmpxQVNFL0lBVXBBNkRxQVNGQUlBVXBBNWpxQVNGQklBVXBBNURxQVNGQ0EwQWdBeWtBR0VMUDF0Tyswc2VyMlVKK0lEOThRaCtKUW9lVnI2K1l0dDZibm45K0lUOGdBeWtBRUVMUDF0Tyswc2VyMlVKK0lFQjhRaCtKUW9lVnI2K1l0dDZibm45K0lVQWdBeWtBQ0VMUDF0Tyswc2VyMlVKK0lFRjhRaCtKUW9lVnI2K1l0dDZibm45K0lVRWdBeWtBQUVMUDF0Tyswc2VyMlVKK0lFSjhRaCtKUW9lVnI2K1l0dDZibm45K0lVSWdBMEVnYWlJRElBWk5EUUFMSUFVZ1B6Y0RxT29CSUFVZ1FEY0RvT29CSUFVZ1FUY0RtT29CSUFVZ1FqY0RrT29CQ3lBQ0lBTk5EUUVnSWlBRElBSWdBMnNpQ0JBQ0dnc2dCU0FJTmdMUTZnRUxJRFVnRldzaEF5QVZJQnRxSVFJZ0NTQU9haUVPSUFRb0FqQkZEUUFMSUNrcEF3QWlQMEovVVNBL0lBNGdIV3VzVVhKRkJFQkJiQ0VKREFZTElBVW9BdURwQVFSQVFXb2hDU0FEUVFSSkRRWWdCU2dDNk9vQlJRUkFJQ0lnQlNnQzBPb0JhaUVLQW40Z0JTa0RpT29CSWo5Q0lGb0VRQ0FGS1FPWTZnRWlRRUlIaVNBRktRT1E2Z0VpUVVJQmlYd2dCU2tEb09vQklrSkNESWw4SUFVcEE2anFBU0pEUWhLSmZDQkJRcy9XMDc3U3g2dlpRbjVDSDRsQ2g1V3ZyNWkyM3B1ZWYzNkZRb2VWcjYrWXR0NmJubjkrUXAyanRlcURzWTJLK2dCOUlFQkN6OWJUdnRMSHE5bENma0lmaVVLSGxhK3ZtTGJlbTU1L2ZvVkNoNVd2cjVpMjNwdWVmMzVDbmFPMTZvT3hqWXI2QUgwZ1FrTFAxdE8rMHNlcjJVSitRaCtKUW9lVnI2K1l0dDZibm45K2hVS0hsYSt2bUxiZW01NS9ma0tkbzdYcWc3R05pdm9BZlNCRFFzL1cwNzdTeDZ2WlFuNUNINGxDaDVXdnI1aTIzcHVlZjM2RlFvZVZyNitZdHQ2Ym5uOStRcDJqdGVxRHNZMksrZ0I5REFFTElBVXBBNkRxQVVMRno5bXk4ZVc2NmlkOEN5QS9mQ0UvSUNJaEJnTkFJQW9nQmtFSWFpSUhUd1JBSUFZcEFBQkN6OWJUdnRMSHE5bENma0lmaVVLSGxhK3ZtTGJlbTU1L2ZpQS9oVUliaVVLSGxhK3ZtTGJlbTU1L2ZrS2RvN1hxZzdHTml2b0FmU0UvSUFjaEJnd0JDd3NDUUNBS0lBWkJCR29pQ0VrRVFDQUdJUWdNQVFzZ0JqVUFBRUtIbGErdm1MYmVtNTUvZmlBL2hVSVhpVUxQMXRPKzBzZXIyVUorUXZuejNmR1o5cG1yRm53aFB3c0RRQ0FJSUFwSkJFQWdDREVBQUVMRno5bXk4ZVc2NmlkK0lEK0ZRZ3VKUW9lVnI2K1l0dDZibm45K0lUOGdDRUVCYWlFSURBRUxDeUFDS0FBQUlEOUNJWWdnUDRWQ3o5YlR2dExIcTlsQ2ZpSS9RaDJJSUQrRlF2bnozZkdaOXBtckZuNGlQMElnaUNBL2hhZEhEUWNMSUFOQkJHc2hBeUFDUVFScUlRSUxJQTRnSFdzaUNVR0pmMDhOQkNBQklBbHJJUUVnQ1NBZGFpRWRRUUVoUGd3QkN3dEJ1SDhoQnlBRERRUWdIU0FBYXlFSERBUUxRV3doQ1F3QkMwRzRmeUVKQzBHNGZ5RUhJQWxCZGtZZ1BuRU5BUXNnQ1NFSEN5Z0NBQTBBSUFWQi9Pb0JhaWdDQUNFQklBVkIrT29CYWlnQ0FDRUFJQVVRR0NBRktBS3c2d0VnQUNBQkVCTWdCVUVBTmdLdzZ3RWdCU2dDcE9zQklnSUVRQUpBQWtBQ1FBSkFJQUlvQWdBaUF3UkFJQUJGRFFJZ0FTQURJQUFSQWdBTUFRc2dBRVVOQWdzZ0FTQUNJQUFSQWdBTUFnc2dBeEFHQ3lBQ0VBWUxJQVZCQURZQ3BPc0JDeUFBQkVBZ0FTQUZJQUFSQWdBTUFRc2dCUkFHQ3lBRVFlQUJhaVFBSUFjTEM2Z1ZDUUJCaUFnTERRRUFBQUFCQUFBQUFnQUFBQUlBUWFBSUM3TUdBUUFBQUFFQUFBQUNBQUFBQWdBQUFDWUFBQUNDQUFBQUlRVUFBRW9BQUFCbkNBQUFKZ0FBQU1BQkFBQ0FBQUFBU1FVQUFFb0FBQUMrQ0FBQUtRQUFBQ3dDQUFDQUFBQUFTUVVBQUVvQUFBQytDQUFBTHdBQUFNb0NBQUNBQUFBQWlnVUFBRW9BQUFDRUNRQUFOUUFBQUhNREFBQ0FBQUFBblFVQUFFb0FBQUNnQ1FBQVBRQUFBSUVEQUFDQUFBQUE2d1VBQUVzQUFBQStDZ0FBUkFBQUFKNERBQUNBQUFBQVRRWUFBRXNBQUFDcUNnQUFTd0FBQUxNREFBQ0FBQUFBd1FZQUFFMEFBQUFmRFFBQVRRQUFBRk1FQUFDQUFBQUFJd2dBQUZFQUFBQ21Ed0FBVkFBQUFKa0VBQUNBQUFBQVN3a0FBRmNBQUFDeEVnQUFXQUFBQU5vRUFBQ0FBQUFBYndrQUFGMEFBQUFqRkFBQVZBQUFBRVVGQUFDQUFBQUFWQW9BQUdvQUFBQ01GQUFBYWdBQUFLOEZBQUNBQUFBQWRna0FBSHdBQUFCT0VBQUFmQUFBQU5JQ0FBQ0FBQUFBWXdjQUFKRUFBQUNRQndBQWtnQUFBQUFBQUFBQkFBQUFBUUFBQUFVQUFBQU5BQUFBSFFBQUFEMEFBQUI5QUFBQS9RQUFBUDBCQUFEOUF3QUEvUWNBQVAwUEFBRDlId0FBL1Q4QUFQMS9BQUQ5L3dBQS9mOEJBUDMvQXdEOS93Y0EvZjhQQVAzL0h3RDkvejhBL2Y5L0FQMy8vd0Q5Ly84Qi9mLy9BLzMvL3dmOS8vOFAvZi8vSC8zLy96LzkvLzkvQUFBQUFBRUFBQUFDQUFBQUF3QUFBQVFBQUFBRkFBQUFCZ0FBQUFjQUFBQUlBQUFBQ1FBQUFBb0FBQUFMQUFBQURBQUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQVJBQUFBRWdBQUFCTUFBQUFVQUFBQUZRQUFBQllBQUFBWEFBQUFHQUFBQUJrQUFBQWFBQUFBR3dBQUFCd0FBQUFkQUFBQUhnQUFBQjhBQUFBREFBQUFCQUFBQUFVQUFBQUdBQUFBQndBQUFBZ0FBQUFKQUFBQUNnQUFBQXNBQUFBTUFBQUFEUUFBQUE0QUFBQVBBQUFBRUFBQUFCRUFBQUFTQUFBQUV3QUFBQlFBQUFBVkFBQUFGZ0FBQUJjQUFBQVlBQUFBR1FBQUFCb0FBQUFiQUFBQUhBQUFBQjBBQUFBZUFBQUFId0FBQUNBQUFBQWhBQUFBSWdBQUFDTUFBQUFsQUFBQUp3QUFBQ2tBQUFBckFBQUFMd0FBQURNQUFBQTdBQUFBUXdBQUFGTUFBQUJqQUFBQWd3QUFBQU1CQUFBREFnQUFBd1FBQUFNSUFBQURFQUFBQXlBQUFBTkFBQUFEZ0FBQUF3QUJBRUhnRHd0UkFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQXdBQUFBTUFBQUFFQUFBQUJBQUFBQVVBQUFBSEFBQUFDQUFBQUFrQUFBQUtBQUFBQ3dBQUFBd0FBQUFOQUFBQURnQUFBQThBQUFBUUFFSEVFQXVMQVFFQUFBQUNBQUFBQXdBQUFBUUFBQUFGQUFBQUJnQUFBQWNBQUFBSUFBQUFDUUFBQUFvQUFBQUxBQUFBREFBQUFBMEFBQUFPQUFBQUR3QUFBQkFBQUFBU0FBQUFGQUFBQUJZQUFBQVlBQUFBSEFBQUFDQUFBQUFvQUFBQU1BQUFBRUFBQUFDQUFBQUFBQUVBQUFBQ0FBQUFCQUFBQUFnQUFBQVFBQUFBSUFBQUFFQUFBQUNBQUFBQUFBRUFRWkFTQytZRUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQXdBQUFBTUFBQUFFQUFBQUJnQUFBQWNBQUFBSUFBQUFDUUFBQUFvQUFBQUxBQUFBREFBQUFBMEFBQUFPQUFBQUR3QUFBQkFBQUFBQkFBQUFCQUFBQUFnQUFBQUFBQUFBQVFBQkFRWUFBQUFBQUFBRUFBQUFBQkFBQUFRQUFBQUFJQUFBQlFFQUFBQUFBQUFGQXdBQUFBQUFBQVVFQUFBQUFBQUFCUVlBQUFBQUFBQUZCd0FBQUFBQUFBVUpBQUFBQUFBQUJRb0FBQUFBQUFBRkRBQUFBQUFBQUFZT0FBQUFBQUFCQlJBQUFBQUFBQUVGRkFBQUFBQUFBUVVXQUFBQUFBQUNCUndBQUFBQUFBTUZJQUFBQUFBQUJBVXdBQUFBSUFBR0JVQUFBQUFBQUFjRmdBQUFBQUFBQ0FZQUFRQUFBQUFLQmdBRUFBQUFBQXdHQUJBQUFDQUFBQVFBQUFBQUFBQUFCQUVBQUFBQUFBQUZBZ0FBQUNBQUFBVUVBQUFBQUFBQUJRVUFBQUFnQUFBRkJ3QUFBQUFBQUFVSUFBQUFJQUFBQlFvQUFBQUFBQUFGQ3dBQUFBQUFBQVlOQUFBQUlBQUJCUkFBQUFBQUFBRUZFZ0FBQUNBQUFRVVdBQUFBQUFBQ0JSZ0FBQUFnQUFNRklBQUFBQUFBQXdVb0FBQUFBQUFHQkVBQUFBQVFBQVlFUUFBQUFDQUFCd1dBQUFBQUFBQUpCZ0FDQUFBQUFBc0dBQWdBQURBQUFBUUFBQUFBRUFBQUJBRUFBQUFnQUFBRkFnQUFBQ0FBQUFVREFBQUFJQUFBQlFVQUFBQWdBQUFGQmdBQUFDQUFBQVVJQUFBQUlBQUFCUWtBQUFBZ0FBQUZDd0FBQUNBQUFBVU1BQUFBQUFBQUJnOEFBQUFnQUFFRkVnQUFBQ0FBQVFVVUFBQUFJQUFDQlJnQUFBQWdBQUlGSEFBQUFDQUFBd1VvQUFBQUlBQUVCVEFBQUFBQUFCQUdBQUFCQUFBQUR3WUFnQUFBQUFBT0JnQkFBQUFBQUEwR0FDQUFRWUFYQzRjQ0FRQUJBUVVBQUFBQUFBQUZBQUFBQUFBQUJnUTlBQUFBQUFBSkJmMEJBQUFBQUE4Ri9YOEFBQUFBRlFYOS94OEFBQUFEQlFVQUFBQUFBQWNFZlFBQUFBQUFEQVg5RHdBQUFBQVNCZjMvQXdBQUFCY0YvZjkvQUFBQUJRVWRBQUFBQUFBSUJQMEFBQUFBQUE0Ri9UOEFBQUFBRkFYOS93OEFBQUFDQlFFQUFBQVFBQWNFZlFBQUFBQUFDd1g5QndBQUFBQVJCZjMvQVFBQUFCWUYvZjgvQUFBQUJBVU5BQUFBRUFBSUJQMEFBQUFBQUEwRi9SOEFBQUFBRXdYOS93Y0FBQUFCQlFFQUFBQVFBQVlFUFFBQUFBQUFDZ1g5QXdBQUFBQVFCZjMvQUFBQUFCd0YvZi8vRHdBQUd3WDkvLzhIQUFBYUJmMy8vd01BQUJrRi9mLy9BUUFBR0FYOS8vOEFRWkFaQzRZRUFRQUJBUVlBQUFBQUFBQUdBd0FBQUFBQUFBUUVBQUFBSUFBQUJRVUFBQUFBQUFBRkJnQUFBQUFBQUFVSUFBQUFBQUFBQlFrQUFBQUFBQUFGQ3dBQUFBQUFBQVlOQUFBQUFBQUFCaEFBQUFBQUFBQUdFd0FBQUFBQUFBWVdBQUFBQUFBQUJoa0FBQUFBQUFBR0hBQUFBQUFBQUFZZkFBQUFBQUFBQmlJQUFBQUFBQUVHSlFBQUFBQUFBUVlwQUFBQUFBQUNCaThBQUFBQUFBTUdPd0FBQUFBQUJBWlRBQUFBQUFBSEJvTUFBQUFBQUFrR0F3SUFBQkFBQUFRRUFBQUFBQUFBQkFVQUFBQWdBQUFGQmdBQUFBQUFBQVVIQUFBQUlBQUFCUWtBQUFBQUFBQUZDZ0FBQUFBQUFBWU1BQUFBQUFBQUJnOEFBQUFBQUFBR0VnQUFBQUFBQUFZVkFBQUFBQUFBQmhnQUFBQUFBQUFHR3dBQUFBQUFBQVllQUFBQUFBQUFCaUVBQUFBQUFBRUdJd0FBQUFBQUFRWW5BQUFBQUFBQ0Jpc0FBQUFBQUFNR013QUFBQUFBQkFaREFBQUFBQUFGQm1NQUFBQUFBQWdHQXdFQUFDQUFBQVFFQUFBQU1BQUFCQVFBQUFBUUFBQUVCUUFBQUNBQUFBVUhBQUFBSUFBQUJRZ0FBQUFnQUFBRkNnQUFBQ0FBQUFVTEFBQUFBQUFBQmc0QUFBQUFBQUFHRVFBQUFBQUFBQVlVQUFBQUFBQUFCaGNBQUFBQUFBQUdHZ0FBQUFBQUFBWWRBQUFBQUFBQUJpQUFBQUFBQUJBR0F3QUJBQUFBRHdZRGdBQUFBQUFPQmdOQUFBQUFBQTBHQXlBQUFBQUFEQVlERUFBQUFBQUxCZ01JQUFBQUFBb0dBd1FBUWFRZEM5a0JBUUFBQUFNQUFBQUhBQUFBRHdBQUFCOEFBQUEvQUFBQWZ3QUFBUDhBQUFEL0FRQUEvd01BQVA4SEFBRC9Ed0FBL3g4QUFQOC9BQUQvZndBQS8vOEFBUC8vQVFELy93TUEvLzhIQVAvL0R3RC8veDhBLy84L0FQLy9md0QvLy84QS8vLy9BZi8vL3dQLy8vOEgvLy8vRC8vLy94Ly8vLzgvLy8vL2Z3QUFBQUFCQUFBQUFnQUFBQVFBQUFBQUFBQUFBZ0FBQUFRQUFBQUlBQUFBQUFBQUFBRUFBQUFDQUFBQUFRQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBZ0FBQUFIQUFBQUNBQUFBQWtBQUFBS0FBQUFDd0JCZ0I4TEE0QVJBUT09Ijt2YXIgT0k9bmV3IHlBLFRJPSExO2FzeW5jIGZ1bmN0aW9uIGNlKEEsSSx0KXtsZXQgZT1udWxsO3R5cGVvZiBBIT0ic3RyaW5nIj9lPUEuaHJlZjpBLnN0YXJ0c1dpdGgoImh0dHAiKT9lPUE6ZT1gJHtJfS8ke0F9YCxlLmVuZHNXaXRoKCIuanMiKSYmKGU9ZS5zdWJzdHJpbmcoMCxlLmxlbmd0aC0zKSksZS5lbmRzV2l0aCgiLndhc20iKSYmKGU9ZS5zdWJzdHJpbmcoMCxlLmxlbmd0aC01KSk7bGV0IGc9YCR7ZX0ud2FzbWAscj1hd2FpdCBkQS5nZXQoYCR7Z30uenN0YCx7cmVzcG9uc2VUeXBlOiJhcnJheWJ1ZmZlciIscGFyYW1zOnR9KTtUSXx8KGF3YWl0IE9JLmluaXQoKSxUST0hMCk7bGV0IHM9T0kuZGVjb2RlKG5ldyBVaW50OEFycmF5KHIuZGF0YSkpLmJ1ZmZlcjtyZXR1cm4oYXdhaXQgaW1wb3J0KGAke2V9LmpzYCkpLmRlZmF1bHQoe3dhc21CaW5hcnk6c30pfXZhciB4ST1jZTt2YXIgd0E9bmV3IE1hcDthc3luYyBmdW5jdGlvbiBmZShBLEksdCl7bGV0IGU9QSxnPUEscj1udWxsO3JldHVybiB0eXBlb2YgQSE9InN0cmluZyImJihlPW5ldyBVUkwoQS5ocmVmKSxnPWUuaHJlZiksd0EuaGFzKGcpP3I9YXdhaXQgd0EuZ2V0KGcpOih3QS5zZXQoZyx4SShlLEksdCkpLHI9YXdhaXQgd0EuZ2V0KGcpKSxyfXZhciBQST1mZTt2YXIgbGU9e1RleHRGaWxlOiJUZXh0RmlsZSIsQmluYXJ5RmlsZToiQmluYXJ5RmlsZSIsVGV4dFN0cmVhbToiVGV4dFN0cmVhbSIsQmluYXJ5U3RyZWFtOiJCaW5hcnlTdHJlYW0iLEltYWdlOiJJbWFnZSIsTWVzaDoiTWVzaCIsUG9seURhdGE6IlBvbHlEYXRhIixKc29uQ29tcGF0aWJsZToiSnNvbkNvbXBhdGlibGUifSxEPWxlO3ZhciBEZT17SW50ODoiaW50OCIsVUludDg6InVpbnQ4IixJbnQxNjoiaW50MTYiLFVJbnQxNjoidWludDE2IixJbnQzMjoiaW50MzIiLFVJbnQzMjoidWludDMyIixJbnQ2NDoiaW50NjQiLFVJbnQ2NDoidWludDY0IixTaXplVmFsdWVUeXBlOiJ1aW50NjQiLElkZW50aWZpZXJUeXBlOiJ1aW50NjQiLEluZGV4VmFsdWVUeXBlOiJpbnQ2NCIsT2Zmc2V0VmFsdWVUeXBlOiJpbnQ2NCJ9LHA9RGU7dmFyIHVlPXtGbG9hdDMyOiJmbG9hdDMyIixGbG9hdDY0OiJmbG9hdDY0IixTcGFjZVByZWNpc2lvblR5cGU6ImZsb2F0NjQifSxQPXVlO2Z1bmN0aW9uIGhlKEEsSSl7bGV0IHQ9bnVsbDtzd2l0Y2goQSl7Y2FzZSBwLlVJbnQ4Ont0PW5ldyBVaW50OEFycmF5KEkpO2JyZWFrfWNhc2UgcC5JbnQ4Ont0PW5ldyBJbnQ4QXJyYXkoSSk7YnJlYWt9Y2FzZSBwLlVJbnQxNjp7dD1uZXcgVWludDE2QXJyYXkoSSk7YnJlYWt9Y2FzZSBwLkludDE2Ont0PW5ldyBJbnQxNkFycmF5KEkpO2JyZWFrfWNhc2UgcC5VSW50MzI6e3Q9bmV3IFVpbnQzMkFycmF5KEkpO2JyZWFrfWNhc2UgcC5JbnQzMjp7dD1uZXcgSW50MzJBcnJheShJKTticmVha31jYXNlIHAuVUludDY0Ont0eXBlb2YgZ2xvYmFsVGhpcy5CaWdVaW50NjRBcnJheT09ImZ1bmN0aW9uIj90PW5ldyBCaWdVaW50NjRBcnJheShJKTp0PW5ldyBVaW50OEFycmF5KEkpO2JyZWFrfWNhc2UgcC5JbnQ2NDp7dHlwZW9mIGdsb2JhbFRoaXMuQmlnSW50NjRBcnJheT09ImZ1bmN0aW9uIj90PW5ldyBCaWdJbnQ2NEFycmF5KEkpOnQ9bmV3IFVpbnQ4QXJyYXkoSSk7YnJlYWt9Y2FzZSBQLkZsb2F0MzI6e3Q9bmV3IEZsb2F0MzJBcnJheShJKTticmVha31jYXNlIFAuRmxvYXQ2NDp7dD1uZXcgRmxvYXQ2NEFycmF5KEkpO2JyZWFrfWNhc2UibnVsbCI6e3Q9bnVsbDticmVha31jYXNlIG51bGw6e3Q9bnVsbDticmVha31kZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVHlwZSBpcyBub3Qgc3VwcG9ydGVkIGFzIGEgVHlwZWRBcnJheSIpfXJldHVybiB0fXZhciBZPWhlO3ZhciBaST10eXBlb2YgZ2xvYmFsVGhpcy5TaGFyZWRBcnJheUJ1ZmZlcj09ImZ1bmN0aW9uIixqST1uZXcgVGV4dEVuY29kZXIsV0k9bmV3IFRleHREZWNvZGVyKCJ1dGYtOCIpO2Z1bmN0aW9uIGRlKEEsSSl7bGV0IHQ9e2ZsYWdzOiJyIixlbmNvZGluZzoiYmluYXJ5In0sZT1BLmZzX29wZW4oSSx0LmZsYWdzKSxyPUEuZnNfc3RhdChJKS5zaXplLGk9bnVsbDtaST9pPW5ldyBTaGFyZWRBcnJheUJ1ZmZlcihyKTppPW5ldyBBcnJheUJ1ZmZlcihyKTtsZXQgcz1uZXcgVWludDhBcnJheShpKTtyZXR1cm4gQS5mc19yZWFkKGUscywwLHIsMCksQS5mc19jbG9zZShlKSxzfWZ1bmN0aW9uIFZJKEEsSSx0KXtsZXQgZT1udWxsO1pJP2U9bmV3IFNoYXJlZEFycmF5QnVmZmVyKHQpOmU9bmV3IEFycmF5QnVmZmVyKHQpO2xldCBnPW5ldyBVaW50OEFycmF5KGUpLHI9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLEksdCk7cmV0dXJuIGcuc2V0KHIpLGd9ZnVuY3Rpb24geShBLEksdCxlKXtsZXQgZz0wO3JldHVybiBJIT09bnVsbCYmKGc9QS5jY2FsbCgiaXRrX3dhc21faW5wdXRfYXJyYXlfYWxsb2MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsdCxlLEkuYnVmZmVyLmJ5dGVMZW5ndGhdKSxBLkhFQVBVOC5zZXQobmV3IFVpbnQ4QXJyYXkoSS5idWZmZXIpLGcpKSxnfWZ1bmN0aW9uIGooQSxJLHQpe2xldCBlPUpTT04uc3RyaW5naWZ5KEkpLGc9QS5jY2FsbCgiaXRrX3dhc21faW5wdXRfanNvbl9hbGxvYyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCx0LGUubGVuZ3RoXSk7QS53cml0ZUFzY2lpVG9NZW1vcnkoZSxnLCExKX1mdW5jdGlvbiBTKEEsSSx0LGUpe2xldCBnPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEksdF0pLHI9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsSSx0XSksaT1WSShBLGcscik7cmV0dXJuIFkoZSxpLmJ1ZmZlcil9ZnVuY3Rpb24gekEoQSxJKXtsZXQgdD1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfanNvbl9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciJdLFswLEldKSxlPUEuQXNjaWlUb1N0cmluZyh0KTtyZXR1cm4gSlNPTi5wYXJzZShlKX1mdW5jdGlvbiB5ZShBLEksdCxlKXtlIT1udWxsJiZlLmxlbmd0aD4wJiZlLmZvckVhY2goZnVuY3Rpb24obixDKXtzd2l0Y2gobi50eXBlKXtjYXNlIEQuVGV4dFN0cmVhbTp7bGV0IG89akkuZW5jb2RlKG4uZGF0YS5kYXRhKSxmPXkoQSxvLEMsMCksUT17c2l6ZTpvLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWB9O2ooQSxRLEMpO2JyZWFrfWNhc2UgRC5Kc29uQ29tcGF0aWJsZTp7bGV0IG89akkuZW5jb2RlKEpTT04uc3RyaW5naWZ5KG4uZGF0YSkpLGY9eShBLG8sQywwKSxRPXtzaXplOm8uYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YH07aihBLFEsQyk7YnJlYWt9Y2FzZSBELkJpbmFyeVN0cmVhbTp7bGV0IG89bi5kYXRhLmRhdGEsZj15KEEsbyxDLDApLFE9e3NpemU6by5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gfTtqKEEsUSxDKTticmVha31jYXNlIEQuVGV4dEZpbGU6e0EuZnNfd3JpdGVGaWxlKG4uZGF0YS5wYXRoLG4uZGF0YS5kYXRhKTticmVha31jYXNlIEQuQmluYXJ5RmlsZTp7QS5mc193cml0ZUZpbGUobi5kYXRhLnBhdGgsbi5kYXRhLmRhdGEpO2JyZWFrfWNhc2UgRC5JbWFnZTp7bGV0IG89bi5kYXRhLGY9eShBLG8uZGF0YSxDLDApLFE9eShBLG8uZGlyZWN0aW9uLEMsMSksRT10eXBlb2Ygby5tZXRhZGF0YT8uZW50cmllczwidSI/SlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbShvLm1ldGFkYXRhLmVudHJpZXMoKSkpOiJbXSIsYz17aW1hZ2VUeXBlOm8uaW1hZ2VUeXBlLG5hbWU6by5uYW1lLG9yaWdpbjpvLm9yaWdpbixzcGFjaW5nOm8uc3BhY2luZyxkaXJlY3Rpb246YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWAsc2l6ZTpvLnNpemUsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YCxtZXRhZGF0YTpFfTtqKEEsYyxDKTticmVha31jYXNlIEQuTWVzaDp7bGV0IG89bi5kYXRhLGY9eShBLG8ucG9pbnRzLEMsMCksUT15KEEsby5jZWxscyxDLDEpLEU9eShBLG8ucG9pbnREYXRhLEMsMiksYz15KEEsby5jZWxsRGF0YSxDLDMpLHU9e21lc2hUeXBlOm8ubWVzaFR5cGUsbmFtZTpvLm5hbWUsbnVtYmVyT2ZQb2ludHM6by5udW1iZXJPZlBvaW50cyxwb2ludHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWAsbnVtYmVyT2ZDZWxsczpvLm51bWJlck9mQ2VsbHMsY2VsbHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWAsY2VsbEJ1ZmZlclNpemU6by5jZWxsQnVmZmVyU2l6ZSxudW1iZXJPZlBvaW50UGl4ZWxzOm8ubnVtYmVyT2ZQb2ludFBpeGVscyxwb2ludERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtFfWAsbnVtYmVyT2ZDZWxsUGl4ZWxzOm8ubnVtYmVyT2ZDZWxsUGl4ZWxzLGNlbGxEYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gfTtqKEEsdSxDKTticmVha31jYXNlIEQuUG9seURhdGE6e2xldCBvPW4uZGF0YSxmPXkoQSxvLnBvaW50cyxDLDApLFE9eShBLG8udmVydGljZXMsQywxKSxFPXkoQSxvLmxpbmVzLEMsMiksYz15KEEsby5wb2x5Z29ucyxDLDMpLHU9eShBLG8udHJpYW5nbGVTdHJpcHMsQyw0KSxkPXkoQSxvLnBvaW50RGF0YSxDLDUpLFI9eShBLG8ucG9pbnREYXRhLEMsNiksTj17cG9seURhdGFUeXBlOm8ucG9seURhdGFUeXBlLG5hbWU6by5uYW1lLG51bWJlck9mUG9pbnRzOm8ubnVtYmVyT2ZQb2ludHMscG9pbnRzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gLHZlcnRpY2VzQnVmZmVyU2l6ZTpvLnZlcnRpY2VzQnVmZmVyU2l6ZSx2ZXJ0aWNlczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1F9YCxsaW5lc0J1ZmZlclNpemU6by5saW5lc0J1ZmZlclNpemUsbGluZXM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtFfWAscG9seWdvbnNCdWZmZXJTaXplOm8ucG9seWdvbnNCdWZmZXJTaXplLHBvbHlnb25zOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gLHRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZTpvLnRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZSx0cmlhbmdsZVN0cmlwczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke3V9YCxudW1iZXJPZlBvaW50UGl4ZWxzOm8ubnVtYmVyT2ZQb2ludFBpeGVscyxwb2ludERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtkfWAsbnVtYmVyT2ZDZWxsUGl4ZWxzOm8ubnVtYmVyT2ZDZWxsUGl4ZWxzLGNlbGxEYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Un1gfTtqKEEsTixDKTticmVha31kZWZhdWx0OnRocm93IEVycm9yKCJVbnN1cHBvcnRlZCBpbnB1dCBJbnRlcmZhY2VUeXBlIil9fSksQS5yZXNldE1vZHVsZVN0ZG91dCgpLEEucmVzZXRNb2R1bGVTdGRlcnIoKTtsZXQgZz1BLnN0YWNrU2F2ZSgpLHI9MDt0cnl7cj1BLmNhbGxNYWluKEkuc2xpY2UoKSl9Y2F0Y2gobil7dGhyb3cgdHlwZW9mIG49PSJudW1iZXIiJiYoY29uc29sZS5sb2coIkV4Y2VwdGlvbiB3aGlsZSBydW5uaW5nIHBpcGVsaW5lOiIpLGNvbnNvbGUubG9nKCJzdGRvdXQ6IixBLmdldE1vZHVsZVN0ZG91dCgpKSxjb25zb2xlLmVycm9yKCJzdGRlcnI6IixBLmdldE1vZHVsZVN0ZGVycigpKSx0eXBlb2YgQS5nZXRFeGNlcHRpb25NZXNzYWdlPCJ1Ij9jb25zb2xlLmVycm9yKCJleGNlcHRpb246IixBLmdldEV4Y2VwdGlvbk1lc3NhZ2UobikpOmNvbnNvbGUuZXJyb3IoIkJ1aWxkIG1vZHVsZSBpbiBEZWJ1ZyBtb2RlIGZvciBleGNlcHRpb24gbWVzc2FnZSBpbmZvcm1hdGlvbi4iKSksbn1maW5hbGx5e0Euc3RhY2tSZXN0b3JlKGcpfWxldCBpPUEuZ2V0TW9kdWxlU3Rkb3V0KCkscz1BLmdldE1vZHVsZVN0ZGVycigpLGE9W107cmV0dXJuIHQhPW51bGwmJnQubGVuZ3RoPjAmJnI9PT0wJiZ0LmZvckVhY2goZnVuY3Rpb24obixDKXtsZXQgbz1udWxsO3N3aXRjaChuLnR5cGUpe2Nhc2UgRC5UZXh0U3RyZWFtOntsZXQgUT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxDLDBdKSxFPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEMsMF0pLGM9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLFEsRSk7bz17ZGF0YTpXSS5kZWNvZGUoYyl9O2JyZWFrfWNhc2UgRC5Kc29uQ29tcGF0aWJsZTp7bGV0IFE9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQywwXSksRT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxDLDBdKSxjPW5ldyBVaW50OEFycmF5KEEuSEVBUFU4LmJ1ZmZlcixRLEUpO289SlNPTi5wYXJzZShXSS5kZWNvZGUoYykpO2JyZWFrfWNhc2UgRC5CaW5hcnlTdHJlYW06e2xldCBRPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEMsMF0pLEU9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQywwXSk7bz17ZGF0YTpWSShBLFEsRSl9O2JyZWFrfWNhc2UgRC5UZXh0RmlsZTp7bz17cGF0aDpuLmRhdGEucGF0aCxkYXRhOkEuZnNfcmVhZEZpbGUobi5kYXRhLnBhdGgse2VuY29kaW5nOiJ1dGY4In0pfTticmVha31jYXNlIEQuQmluYXJ5RmlsZTp7bz17cGF0aDpuLmRhdGEucGF0aCxkYXRhOmRlKEEsbi5kYXRhLnBhdGgpfTticmVha31jYXNlIEQuSW1hZ2U6e2xldCBRPXpBKEEsQyk7US5kYXRhPVMoQSxDLDAsUS5pbWFnZVR5cGUuY29tcG9uZW50VHlwZSksUS5kaXJlY3Rpb249UyhBLEMsMSxQLkZsb2F0NjQpLFEubWV0YWRhdGE9bmV3IE1hcChRLm1ldGFkYXRhKSxvPVE7YnJlYWt9Y2FzZSBELk1lc2g6e2xldCBRPXpBKEEsQyk7US5udW1iZXJPZlBvaW50cz4wP1EucG9pbnRzPVMoQSxDLDAsUS5tZXNoVHlwZS5wb2ludENvbXBvbmVudFR5cGUpOlEucG9pbnRzPVkoUS5tZXNoVHlwZS5wb2ludENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxRLm51bWJlck9mQ2VsbHM+MD9RLmNlbGxzPVMoQSxDLDEsUS5tZXNoVHlwZS5jZWxsQ29tcG9uZW50VHlwZSk6US5jZWxscz1ZKFEubWVzaFR5cGUuY2VsbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxRLm51bWJlck9mUG9pbnRQaXhlbHM+MD9RLnBvaW50RGF0YT1TKEEsQywyLFEubWVzaFR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUpOlEucG9pbnREYXRhPVkoUS5tZXNoVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLFEubnVtYmVyT2ZDZWxsUGl4ZWxzPjA/US5jZWxsRGF0YT1TKEEsQywzLFEubWVzaFR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSk6US5jZWxsRGF0YT1ZKFEubWVzaFR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLG89UTticmVha31jYXNlIEQuUG9seURhdGE6e2xldCBRPXpBKEEsQyk7US5udW1iZXJPZlBvaW50cz4wP1EucG9pbnRzPVMoQSxDLDAsUC5GbG9hdDMyKTpRLnBvaW50cz1uZXcgRmxvYXQzMkFycmF5LFEudmVydGljZXNCdWZmZXJTaXplPjA/US52ZXJ0aWNlcz1TKEEsQywxLHAuVUludDMyKTpRLnZlcnRpY2VzPW5ldyBVaW50MzJBcnJheSxRLmxpbmVzQnVmZmVyU2l6ZT4wP1EubGluZXM9UyhBLEMsMixwLlVJbnQzMik6US5saW5lcz1uZXcgVWludDMyQXJyYXksUS5wb2x5Z29uc0J1ZmZlclNpemU+MD9RLnBvbHlnb25zPVMoQSxDLDMscC5VSW50MzIpOlEucG9seWdvbnM9bmV3IFVpbnQzMkFycmF5LFEudHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplPjA/US50cmlhbmdsZVN0cmlwcz1TKEEsQyw0LHAuVUludDMyKTpRLnRyaWFuZ2xlU3RyaXBzPW5ldyBVaW50MzJBcnJheSxRLm51bWJlck9mUG9pbnRQaXhlbHM+MD9RLnBvaW50RGF0YT1TKEEsQyw1LFEucG9seURhdGFUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlKTpRLnBvaW50RGF0YT1ZKFEucG9seURhdGFUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksUS5udW1iZXJPZkNlbGxQaXhlbHM+MD9RLmNlbGxEYXRhPVMoQSxDLDYsUS5wb2x5RGF0YVR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSk6US5jZWxsRGF0YT1ZKFEucG9seURhdGFUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxvPVE7YnJlYWt9ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5zdXBwb3J0ZWQgb3V0cHV0IEludGVyZmFjZVR5cGUiKX1sZXQgZj17dHlwZTpuLnR5cGUsZGF0YTpvfTthLnB1c2goZil9KSx7cmV0dXJuVmFsdWU6cixzdGRvdXQ6aSxzdGRlcnI6cyxvdXRwdXRzOmF9fXZhciBYST15ZTt2YXIgd2U9dHlwZW9mIGdsb2JhbFRoaXMuU2hhcmVkQXJyYXlCdWZmZXI8InUiO2Z1bmN0aW9uIG1lKEEsSSl7aWYoQT09bnVsbClyZXR1cm5bXTtsZXQgdD1bXTtmb3IobGV0IGU9MDtlPEEubGVuZ3RoO2UrKyl7bGV0IGc9cGUoQVtlXSxJKTtnIT09bnVsbCYmdC5wdXNoKGcpfXJldHVybiB0fWZ1bmN0aW9uIHBlKEEsSSl7aWYoQT09bnVsbClyZXR1cm4gbnVsbDtsZXQgdD1udWxsO3JldHVybiBBLmJ1ZmZlciE9PXZvaWQgMD90PUEuYnVmZmVyOkEuYnl0ZUxlbmd0aCE9PXZvaWQgMCYmKHQ9QSksd2UmJnQgaW5zdGFuY2VvZiBTaGFyZWRBcnJheUJ1ZmZlcj9udWxsOkk/dDp0LnNsaWNlKDApfXZhciB6ST1tZTtmdW5jdGlvbiBTZShBKXtyZXR1cm5bQS5kYXRhLEEuZGlyZWN0aW9uXX12YXIgX0k9U2U7ZnVuY3Rpb24gRmUoQSl7cmV0dXJuW0EucG9pbnRzLEEucG9pbnREYXRhLEEuY2VsbHMsQS5jZWxsRGF0YV19dmFyIHZJPUZlO2Z1bmN0aW9uIFJlKEEpe3JldHVybltBLnBvaW50cyxBLnZlcnRpY2VzLEEubGluZXMsQS5wb2x5Z29ucyxBLnRyaWFuZ2xlU3RyaXBzLEEucG9pbnREYXRhLEEuY2VsbERhdGFdfXZhciAkST1SZTthc3luYyBmdW5jdGlvbiBOZShBLEksdCxlKXtsZXQgZz1YSShBLEksdCxlKSxyPVtdO3JldHVybiBnLm91dHB1dHMuZm9yRWFjaChmdW5jdGlvbihpKXtpZihpLnR5cGU9PT1ELkJpbmFyeVN0cmVhbXx8aS50eXBlPT09RC5CaW5hcnlGaWxlKXtsZXQgcz1pLmRhdGE7ci5wdXNoKHMpfWVsc2UgaWYoaS50eXBlPT09RC5JbWFnZSl7bGV0IHM9aS5kYXRhO3IucHVzaCguLi5fSShzKSl9ZWxzZSBpZihpLnR5cGU9PT1ELk1lc2gpe2xldCBzPWkuZGF0YTtyLnB1c2goLi4udkkocykpfWVsc2UgaWYoaS50eXBlPT09RC5Qb2x5RGF0YSl7bGV0IHM9aS5kYXRhO3IucHVzaCguLi4kSShzKSl9fSksU0EoZyx6SShyLCEwKSl9dmFyIEF0PU5lO3ZhciBVZT17cnVuUGlwZWxpbmU6YXN5bmMgZnVuY3Rpb24oQSxJLHQsZSxnLHIpe2xldCBpPWF3YWl0IFBJKEEsSSxyKTtyZXR1cm4gYXdhaXQgQXQoaSx0LGUsZyl9fTtvQShVZSk7JTBBLyohIEJ1bmRsZWQgbGljZW5zZSBpbmZvcm1hdGlvbjolMEElMEFjb21saW5rL2Rpc3QvZXNtL2NvbWxpbmsubWpzOiUwQSAgKCoqJTBBICAgKiBAbGljZW5zZSUwQSAgICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIExMQyUwQSAgICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAlMEEgICAqKSUwQSovJTBBJztkcih5cik7ZXhwb3J0e1lBIGFzIGJpb1JhZFJlYWRJbWFnZSxxQSBhcyBiaW9SYWRXcml0ZUltYWdlLFVBIGFzIGJtcFJlYWRJbWFnZSxTQSBhcyBibXBXcml0ZUltYWdlLFkgYXMgZXh0ZW5zaW9uVG9JbWFnZUlvLHJ0IGFzIGZkZlJlYWRJbWFnZSxmYSBhcyBmZGZXcml0ZUltYWdlLCRBIGFzIGdkY21SZWFkSW1hZ2UsZXQgYXMgZ2RjbVdyaXRlSW1hZ2UsVkEgYXMgZ2U0UmVhZEltYWdlLF9BIGFzIGdlNFdyaXRlSW1hZ2UsWkEgYXMgZ2U1UmVhZEltYWdlLFhBIGFzIGdlNVdyaXRlSW1hZ2UsdkEgYXMgZ2VBZHdSZWFkSW1hZ2UsekEgYXMgZ2VBZHdXcml0ZUltYWdlLHkgYXMgZ2V0RGVmYXVsdFdlYldvcmtlcixkIGFzIGdldFBpcGVsaW5lV29ya2VyVXJsLEUgYXMgZ2V0UGlwZWxpbmVzQmFzZVVybCxLQSBhcyBnaXBsUmVhZEltYWdlLGpBIGFzIGdpcGxXcml0ZUltYWdlLE9BIGFzIGhkZjVSZWFkSW1hZ2UsTkEgYXMgaGRmNVdyaXRlSW1hZ2UsUkEgYXMganBlZ1JlYWRJbWFnZSxrQSBhcyBqcGVnV3JpdGVJbWFnZSxKQSBhcyBsc21SZWFkSW1hZ2UsTEEgYXMgbHNtV3JpdGVJbWFnZSxDQSBhcyBtZXRhUmVhZEltYWdlLEVBIGFzIG1ldGFXcml0ZUltYWdlLE1BIGFzIG1naFJlYWRJbWFnZSxIQSBhcyBtZ2hXcml0ZUltYWdlLFBBIGFzIG1pbmNSZWFkSW1hZ2UseEEgYXMgbWluY1dyaXRlSW1hZ2UsR0EgYXMgbXJjUmVhZEltYWdlLFRBIGFzIG1yY1dyaXRlSW1hZ2UsaEEgYXMgbmlmdGlSZWFkSW1hZ2Usd0EgYXMgbmlmdGlXcml0ZUltYWdlLGJBIGFzIG5ycmRSZWFkSW1hZ2UsREEgYXMgbnJyZFdyaXRlSW1hZ2UsQkEgYXMgcG5nUmVhZEltYWdlLGRBIGFzIHBuZ1dyaXRlSW1hZ2Usc3QgYXMgcmVhZEltYWdlLGxhIGFzIHJlYWRJbWFnZUZpbGVTZXJpZXMsbW8gYXMgcmVhZEltYWdlSHR0cCxBdCBhcyBzY2FuY29SZWFkSW1hZ2UsdHQgYXMgc2NhbmNvV3JpdGVJbWFnZSxWZyBhcyBzZXREZWZhdWx0V2ViV29ya2VyLGRyIGFzIHNldFBpcGVsaW5lV29ya2VyVXJsLEhnIGFzIHNldFBpcGVsaW5lc0Jhc2VVcmwseUEgYXMgdGlmZlJlYWRJbWFnZSxRQSBhcyB0aWZmV3JpdGVJbWFnZSxXQSBhcyB2dGtSZWFkSW1hZ2UsRkEgYXMgdnRrV3JpdGVJbWFnZSxpdCBhcyB3YXNtUmVhZEltYWdlLG90IGFzIHdhc21Xcml0ZUltYWdlLGF0IGFzIHdhc21ac3RkUmVhZEltYWdlLG50IGFzIHdhc21ac3RkV3JpdGVJbWFnZSxtYSBhcyB3cml0ZUltYWdlfTsKLyohIEJ1bmRsZWQgbGljZW5zZSBpbmZvcm1hdGlvbjoKCmNvbWxpbmsvZGlzdC9lc20vY29tbGluay5tanM6CiAgKCoqCiAgICogQGxpY2Vuc2UKICAgKiBDb3B5cmlnaHQgMjAxOSBHb29nbGUgTExDCiAgICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKICAgKikKKi8K""" +default_js_module = """data:text/javascript;base64,dmFyIGhyPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgd3I9KGUsQSk9Pntmb3IodmFyIHQgaW4gQSlocihlLHQse2dldDpBW3RdLGVudW1lcmFibGU6ITB9KX07dmFyIFJyPW5ldyBNYXAoW1siYm1wIiwiYm1wIl0sWyJkY20iLCJnZGNtIl0sWyJnaXBsIiwiZ2lwbCJdLFsiZ2lwbC5neiIsImdpcGwiXSxbImhkZjUiLCJoZGY1Il0sWyJqcGciLCJqcGVnIl0sWyJqcGVnIiwianBlZyJdLFsiaXdpIiwid2FzbSJdLFsiaXdpLmNib3IiLCJ3YXNtIl0sWyJpd2kuY2Jvci56c3QiLCJ3YXNtWnN0ZCJdLFsibHNtIiwibHNtIl0sWyJtbmMiLCJtbmMiXSxbIm1uYy5neiIsIm1uYyJdLFsibW5jMiIsIm1uYyJdLFsibWdoIiwibWdoIl0sWyJtZ3oiLCJtZ2giXSxbIm1naC5neiIsIm1naCJdLFsibWhhIiwibWV0YSJdLFsibWhkIiwibWV0YSJdLFsibXJjIiwibXJjIl0sWyJuaWEiLCJuaWZ0aSJdLFsibmlpIiwibmlmdGkiXSxbIm5paS5neiIsIm5pZnRpIl0sWyJoZHIiLCJuaWZ0aSJdLFsibnJyZCIsIm5ycmQiXSxbIm5oZHIiLCJucnJkIl0sWyJwbmciLCJwbmciXSxbInBpYyIsImJpb1JhZCJdLFsidGlmIiwidGlmZiJdLFsidGlmZiIsInRpZmYiXSxbInZ0ayIsInZ0ayJdLFsiaXNxIiwic2NhbmNvIl0sWyJhaW0iLCJzY2FuY28iXSxbImZkZiIsImZkZiJdXSksWT1Scjt2YXIga3I9e0ludDg6ImludDgiLFVJbnQ4OiJ1aW50OCIsSW50MTY6ImludDE2IixVSW50MTY6InVpbnQxNiIsSW50MzI6ImludDMyIixVSW50MzI6InVpbnQzMiIsSW50NjQ6ImludDY0IixVSW50NjQ6InVpbnQ2NCIsU2l6ZVZhbHVlVHlwZToidWludDY0IixJZGVudGlmaWVyVHlwZToidWludDY0IixJbmRleFZhbHVlVHlwZToiaW50NjQiLE9mZnNldFZhbHVlVHlwZToiaW50NjQifSxoPWtyO3ZhciBicj17RmxvYXQzMjoiZmxvYXQzMiIsRmxvYXQ2NDoiZmxvYXQ2NCIsU3BhY2VQcmVjaXNpb25UeXBlOiJmbG9hdDY0In0sYj1icjtmdW5jdGlvbiBEcihlLEEpe2xldCB0PW51bGw7c3dpdGNoKGUpe2Nhc2UgaC5VSW50ODp7dD1uZXcgVWludDhBcnJheShBKTticmVha31jYXNlIGguSW50ODp7dD1uZXcgSW50OEFycmF5KEEpO2JyZWFrfWNhc2UgaC5VSW50MTY6e3Q9bmV3IFVpbnQxNkFycmF5KEEpO2JyZWFrfWNhc2UgaC5JbnQxNjp7dD1uZXcgSW50MTZBcnJheShBKTticmVha31jYXNlIGguVUludDMyOnt0PW5ldyBVaW50MzJBcnJheShBKTticmVha31jYXNlIGguSW50MzI6e3Q9bmV3IEludDMyQXJyYXkoQSk7YnJlYWt9Y2FzZSBoLlVJbnQ2NDp7dHlwZW9mIGdsb2JhbFRoaXMuQmlnVWludDY0QXJyYXk9PSJmdW5jdGlvbiI/dD1uZXcgQmlnVWludDY0QXJyYXkoQSk6dD1uZXcgVWludDhBcnJheShBKTticmVha31jYXNlIGguSW50NjQ6e3R5cGVvZiBnbG9iYWxUaGlzLkJpZ0ludDY0QXJyYXk9PSJmdW5jdGlvbiI/dD1uZXcgQmlnSW50NjRBcnJheShBKTp0PW5ldyBVaW50OEFycmF5KEEpO2JyZWFrfWNhc2UgYi5GbG9hdDMyOnt0PW5ldyBGbG9hdDMyQXJyYXkoQSk7YnJlYWt9Y2FzZSBiLkZsb2F0NjQ6e3Q9bmV3IEZsb2F0NjRBcnJheShBKTticmVha31jYXNlIm51bGwiOnt0PW51bGw7YnJlYWt9Y2FzZSBudWxsOnt0PW51bGw7YnJlYWt9ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlR5cGUgaXMgbm90IHN1cHBvcnRlZCBhcyBhIFR5cGVkQXJyYXkiKX1yZXR1cm4gdH12YXIgUz1Ecjt2YXIgV3I9e1Vua25vd246IlVua25vd24iLFNjYWxhcjoiU2NhbGFyIixSR0I6IlJHQiIsUkdCQToiUkdCQSIsT2Zmc2V0OiJPZmZzZXQiLFZlY3RvcjoiVmVjdG9yIixQb2ludDoiUG9pbnQiLENvdmFyaWFudFZlY3RvcjoiQ292YXJpYW50VmVjdG9yIixTeW1tZXRyaWNTZWNvbmRSYW5rVGVuc29yOiJTeW1tZXRyaWNTZWNvbmRSYW5rVGVuc29yIixEaWZmdXNpb25UZW5zb3IzRDoiRGlmZnVzaW9uVGVuc29yM0QiLENvbXBsZXg6IkNvbXBsZXgiLEZpeGVkQXJyYXk6IkZpeGVkQXJyYXkiLEFycmF5OiJBcnJheSIsTWF0cml4OiJNYXRyaXgiLFZhcmlhYmxlTGVuZ3RoVmVjdG9yOiJWYXJpYWJsZUxlbmd0aFZlY3RvciIsVmFyaWFibGVTaXplTWF0cml4OiJWYXJpYWJsZVNpemVNYXRyaXgifSxtZT1Xcjt2YXIgUGU9Y2xhc3N7ZGltZW5zaW9uO2NvbXBvbmVudFR5cGU7cGl4ZWxUeXBlO2NvbXBvbmVudHM7Y29uc3RydWN0b3IoQT0yLHQ9aC5VSW50OCxyPW1lLlNjYWxhcixvPTEpe3RoaXMuZGltZW5zaW9uPUEsdGhpcy5jb21wb25lbnRUeXBlPXQsdGhpcy5waXhlbFR5cGU9cix0aGlzLmNvbXBvbmVudHM9b319LEl0PVBlO2Z1bmN0aW9uIEZyKGUsQSx0LHIsbyl7ZVtyK3QqQV09b312YXIgZ3Q9RnI7dmFyIHhlPWNsYXNze2ltYWdlVHlwZTtuYW1lPSJpbWFnZSI7b3JpZ2luO3NwYWNpbmc7ZGlyZWN0aW9uO3NpemU7bWV0YWRhdGE7ZGF0YTtjb25zdHJ1Y3RvcihBPW5ldyBJdCl7dGhpcy5pbWFnZVR5cGU9QTtsZXQgdD1BLmRpbWVuc2lvbjt0aGlzLm9yaWdpbj1uZXcgQXJyYXkodCksdGhpcy5vcmlnaW4uZmlsbCgwKSx0aGlzLnNwYWNpbmc9bmV3IEFycmF5KHQpLHRoaXMuc3BhY2luZy5maWxsKDEpLHRoaXMuZGlyZWN0aW9uPW5ldyBGbG9hdDY0QXJyYXkodCp0KSx0aGlzLmRpcmVjdGlvbi5maWxsKDApO2ZvcihsZXQgcj0wO3I8dDtyKyspZ3QodGhpcy5kaXJlY3Rpb24sdCxyLHIsMSk7dGhpcy5zaXplPW5ldyBBcnJheSh0KSx0aGlzLnNpemUuZmlsbCgwKSx0aGlzLm1ldGFkYXRhPW5ldyBNYXAsdGhpcy5kYXRhPW51bGx9fSxLPXhlO2Z1bmN0aW9uIFVyKGUpe2xldCBBPW5ldyBLKGUuaW1hZ2VUeXBlKTtpZihBLm5hbWU9ZS5uYW1lLEEub3JpZ2luPUFycmF5LmZyb20oZS5vcmlnaW4pLEEuc3BhY2luZz1BcnJheS5mcm9tKGUuc3BhY2luZyksQS5kaXJlY3Rpb249ZS5kaXJlY3Rpb24uc2xpY2UoKSxBLnNpemU9QXJyYXkuZnJvbShlLnNpemUpLGUuZGF0YSE9PW51bGwpe2xldCB0PWUuZGF0YS5jb25zdHJ1Y3RvcjtBLmRhdGE9bmV3IHQoZS5kYXRhLmxlbmd0aCksQS5kYXRhIT1udWxsJiZBLmRhdGEuc2V0KGUuZGF0YSwwKX1yZXR1cm4gQX12YXIgR2U9VXI7ZnVuY3Rpb24gU3IoZSl7aWYoZS5sZW5ndGg8MSl0aHJvdyBFcnJvcigiQXQgbGVhc3Qgb25lIGltYWdlcyBpcyByZXF1aXJlZC4iKTtsZXQgQT1lWzBdO2lmKEEuZGF0YT09PW51bGwpdGhyb3cgRXJyb3IoIkltYWdlIGRhdGEgaXMgbnVsbC4iKTtsZXQgdD1uZXcgSyhBLmltYWdlVHlwZSk7dC5vcmlnaW49QXJyYXkuZnJvbShBLm9yaWdpbiksdC5zcGFjaW5nPUFycmF5LmZyb20oQS5zcGFjaW5nKTtsZXQgcj10LmltYWdlVHlwZS5kaW1lbnNpb247dC5kaXJlY3Rpb249QS5kaXJlY3Rpb24uc2xpY2UoKTtsZXQgbz1yLTE7dC5zaXplPUFycmF5LmZyb20oQS5zaXplKTtsZXQgaT1lLnJlZHVjZSgoYSxzKT0+YStzLnNpemVbb10sMCk7dC5zaXplW29dPWk7bGV0IG49dC5zaXplLnJlZHVjZSgoYSxzKT0+YSpzLDEpKnQuaW1hZ2VUeXBlLmNvbXBvbmVudHMsZz1BLmRhdGEuY29uc3RydWN0b3I7dC5kYXRhPW5ldyBnKG4pO2xldCBmPXQuaW1hZ2VUeXBlLmNvbXBvbmVudHM7Zm9yKGxldCBhPTA7YTx0LnNpemUubGVuZ3RoLTE7YSsrKWYqPXQuc2l6ZVthXTtsZXQgbT0wO2lmKHQuZGF0YSE9bnVsbClmb3IobGV0IGE9MDthPGUubGVuZ3RoO2ErKyl0LmRhdGEuc2V0KGVbYV0uZGF0YSxmKm0pLG0rPWVbYV0uc2l6ZVtvXTtlbHNlIHRocm93IEVycm9yKCJDb3VsZCBub3QgY3JlYXRlIHJlc3VsdCBpbWFnZSBkYXRhLiIpO3JldHVybiB0fXZhciBUZT1TcjtmdW5jdGlvbiBPcihlKXtsZXQgQT1lLnNsaWNlKChlLmxhc3RJbmRleE9mKCIuIiktMT4+PjApKzIpO2lmKEEudG9Mb3dlckNhc2UoKT09PSJneiIpe2xldCB0PWUuc2xpY2UoMCwtMykubGFzdEluZGV4T2YoIi4iKTtBPWUuc2xpY2UoKHQtMT4+PjApKzIpfWVsc2UgaWYoQS50b0xvd2VyQ2FzZSgpPT09ImNib3IiKXtsZXQgdD1lLnNsaWNlKDAsLTUpLmxhc3RJbmRleE9mKCIuIik7QT1lLnNsaWNlKCh0LTE+Pj4wKSsyKX1lbHNlIGlmKEEudG9Mb3dlckNhc2UoKT09PSJ6c3QiKXtsZXQgdD1lLnNsaWNlKDAsLTEwKS5sYXN0SW5kZXhPZigiLiIpO0E9ZS5zbGljZSgodC0xPj4+MCkrMil9ZWxzZSBpZihBLnRvTG93ZXJDYXNlKCk9PT0iemlwIil7bGV0IHQ9ZS5zbGljZSgwLC00KS5sYXN0SW5kZXhPZigiLiIpO0E9ZS5zbGljZSgodC0xPj4+MCkrMil9cmV0dXJuIEF9dmFyIHRlPU9yO2Z1bmN0aW9uIE5yKGUsQSl7bGV0IHQ9ey4uLmUuaW1hZ2VUeXBlfTtpZih0eXBlb2YgQTwidSImJnR5cGVvZiBBLnBpeGVsVHlwZTwidSImJih0LnBpeGVsVHlwZT1BLnBpeGVsVHlwZSxBLnBpeGVsVHlwZT09PW1lLlNjYWxhciYmdC5jb21wb25lbnRzIT09MSkpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY2FzdCBtdWx0aS1jb21wb25lbnQgaW1hZ2UgdG8gYSBzY2FsYXIgaW1hZ2UiKTt0eXBlb2YgQTwidSImJnR5cGVvZiBBLmNvbXBvbmVudFR5cGU8InUiJiZBLmNvbXBvbmVudFR5cGUhPT1lLmltYWdlVHlwZS5jb21wb25lbnRUeXBlJiYodC5jb21wb25lbnRUeXBlPUEuY29tcG9uZW50VHlwZSk7bGV0IHI9bmV3IEsodCk7aWYoci5uYW1lPWUubmFtZSxyLm9yaWdpbj1BcnJheS5mcm9tKGUub3JpZ2luKSxyLnNwYWNpbmc9QXJyYXkuZnJvbShlLnNwYWNpbmcpLHIuZGlyZWN0aW9uPWUuZGlyZWN0aW9uLnNsaWNlKCksci5zaXplPUFycmF5LmZyb20oZS5zaXplKSxyLm1ldGFkYXRhPW5ldyBNYXAoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKGUubWV0YWRhdGEpKSkpLGUuZGF0YSE9PW51bGwpaWYodHlwZW9mIEE8InUiJiZ0eXBlb2YgQS5jb21wb25lbnRUeXBlPCJ1IiYmQS5jb21wb25lbnRUeXBlIT09ZS5pbWFnZVR5cGUuY29tcG9uZW50VHlwZSlzd2l0Y2goZS5pbWFnZVR5cGUuY29tcG9uZW50VHlwZSl7Y2FzZSBoLlVJbnQ4OmNhc2UgaC5JbnQ4OmNhc2UgaC5VSW50MTY6Y2FzZSBoLkludDE2OmNhc2UgaC5VSW50MzI6Y2FzZSBoLkludDMyOmNhc2UgYi5GbG9hdDMyOmNhc2UgYi5GbG9hdDY0OnN3aXRjaChyLmltYWdlVHlwZS5jb21wb25lbnRUeXBlKXtjYXNlIGguVUludDg6ci5kYXRhPW5ldyBVaW50OEFycmF5KGUuZGF0YSk7YnJlYWs7Y2FzZSBoLkludDg6ci5kYXRhPW5ldyBJbnQ4QXJyYXkoZS5kYXRhKTticmVhaztjYXNlIGguVUludDE2OnIuZGF0YT1uZXcgVWludDE2QXJyYXkoZS5kYXRhKTticmVhaztjYXNlIGguSW50MTY6ci5kYXRhPW5ldyBJbnQxNkFycmF5KGUuZGF0YSk7YnJlYWs7Y2FzZSBoLlVJbnQzMjpyLmRhdGE9bmV3IFVpbnQzMkFycmF5KGUuZGF0YSk7YnJlYWs7Y2FzZSBoLkludDMyOnIuZGF0YT1uZXcgSW50MzJBcnJheShlLmRhdGEpO2JyZWFrO2Nhc2UgYi5GbG9hdDMyOnIuZGF0YT1uZXcgRmxvYXQzMkFycmF5KGUuZGF0YSk7YnJlYWs7Y2FzZSBiLkZsb2F0NjQ6ci5kYXRhPW5ldyBGbG9hdDY0QXJyYXkoZS5kYXRhKTticmVhaztjYXNlIGguVUludDY0OnIuZGF0YT1uZXcgQmlnVWludDY0QXJyYXkoZS5kYXRhLmxlbmd0aCk7Zm9yKGxldCBvPTA7bzxyLmRhdGEubGVuZ3RoO28rKylyLmRhdGFbb109QmlnSW50LmFzSW50Tig2NCxCaWdJbnQoZS5kYXRhW29dKSk7YnJlYWs7Y2FzZSBoLkludDY0OnIuZGF0YT1uZXcgQmlnSW50NjRBcnJheShlLmRhdGEubGVuZ3RoKTtmb3IobGV0IG89MDtvPHIuZGF0YS5sZW5ndGg7bysrKXIuZGF0YVtvXT1CaWdJbnQuYXNVaW50Tig2NCxCaWdJbnQoZS5kYXRhW29dKSk7YnJlYWt9YnJlYWs7Y2FzZSBoLlVJbnQ2NDpjYXNlIGguSW50NjQ6c3dpdGNoKHIuaW1hZ2VUeXBlLmNvbXBvbmVudFR5cGUpe2Nhc2UgaC5VSW50ODpyLmRhdGE9bmV3IFVpbnQ4QXJyYXkoZS5kYXRhLmxlbmd0aCk7Zm9yKGxldCBvPTA7bzxyLmRhdGEubGVuZ3RoO28rKylyLmRhdGFbb109TnVtYmVyKGUuZGF0YVtvXSk7YnJlYWs7Y2FzZSBoLkludDg6ci5kYXRhPW5ldyBJbnQ4QXJyYXkoZS5kYXRhLmxlbmd0aCk7Zm9yKGxldCBvPTA7bzxyLmRhdGEubGVuZ3RoO28rKylyLmRhdGFbb109TnVtYmVyKGUuZGF0YVtvXSk7YnJlYWs7Y2FzZSBoLlVJbnQxNjpyLmRhdGE9bmV3IFVpbnQxNkFycmF5KGUuZGF0YS5sZW5ndGgpO2ZvcihsZXQgbz0wO288ci5kYXRhLmxlbmd0aDtvKyspci5kYXRhW29dPU51bWJlcihlLmRhdGFbb10pO2JyZWFrO2Nhc2UgaC5JbnQxNjpyLmRhdGE9bmV3IEludDE2QXJyYXkoZS5kYXRhLmxlbmd0aCk7Zm9yKGxldCBvPTA7bzxyLmRhdGEubGVuZ3RoO28rKylyLmRhdGFbb109TnVtYmVyKGUuZGF0YVtvXSk7YnJlYWs7Y2FzZSBoLlVJbnQzMjpyLmRhdGE9bmV3IFVpbnQzMkFycmF5KGUuZGF0YS5sZW5ndGgpO2ZvcihsZXQgbz0wO288ci5kYXRhLmxlbmd0aDtvKyspci5kYXRhW29dPU51bWJlcihlLmRhdGFbb10pO2JyZWFrO2Nhc2UgaC5JbnQzMjpyLmRhdGE9bmV3IEludDMyQXJyYXkoZS5kYXRhLmxlbmd0aCk7Zm9yKGxldCBvPTA7bzxyLmRhdGEubGVuZ3RoO28rKylyLmRhdGFbb109TnVtYmVyKGUuZGF0YVtvXSk7YnJlYWs7Y2FzZSBiLkZsb2F0MzI6ci5kYXRhPW5ldyBGbG9hdDMyQXJyYXkoZS5kYXRhLmxlbmd0aCk7Zm9yKGxldCBvPTA7bzxyLmRhdGEubGVuZ3RoO28rKylyLmRhdGFbb109TnVtYmVyKGUuZGF0YVtvXSk7YnJlYWs7Y2FzZSBiLkZsb2F0NjQ6ci5kYXRhPW5ldyBGbG9hdDY0QXJyYXkoZS5kYXRhLmxlbmd0aCk7Zm9yKGxldCBvPTA7bzxyLmRhdGEubGVuZ3RoO28rKylyLmRhdGFbb109TnVtYmVyKGUuZGF0YVtvXSk7YnJlYWs7Y2FzZSBoLlVJbnQ2NDpyLmRhdGE9bmV3IEJpZ1VpbnQ2NEFycmF5KGUuZGF0YSk7YnJlYWs7Y2FzZSBoLkludDY0OnIuZGF0YT1uZXcgQmlnSW50NjRBcnJheShlLmRhdGEpO2JyZWFrfWJyZWFrfWVsc2V7bGV0IG89ZS5kYXRhLmNvbnN0cnVjdG9yO3IuZGF0YT1uZXcgbyhlLmRhdGEubGVuZ3RoKSxyLmRhdGEhPW51bGwmJnIuZGF0YS5zZXQoZS5kYXRhLDApfXJldHVybiByfXZhciBKPU5yO3ZhciBKZT1jbGFzc3tmY247d29ya2VyUXVldWU7cnVuSW5mbztjb25zdHJ1Y3RvcihBLHQpe3RoaXMuZmNuPXQsdGhpcy53b3JrZXJRdWV1ZT1uZXcgQXJyYXkoQSksdGhpcy53b3JrZXJRdWV1ZS5maWxsKG51bGwpLHRoaXMucnVuSW5mbz1bXX1ydW5UYXNrcyhBLHQ9bnVsbCl7bGV0IHI9e3Rhc2tRdWV1ZTpbXSxyZXN1bHRzOltdLGFkZGluZ1Rhc2tzOiExLHBvc3Rwb25lZDohMSxydW5uaW5nV29ya2VyczowLGluZGV4OjAsY29tcGxldGVkVGFza3M6MCxwcm9ncmVzc0NhbGxiYWNrOnQsY2FuY2VsZWQ6ITF9O3JldHVybiB0aGlzLnJ1bkluZm8ucHVzaChyKSxyLmluZGV4PXRoaXMucnVuSW5mby5sZW5ndGgtMSx7cHJvbWlzZTpuZXcgUHJvbWlzZSgobyxpKT0+e3IucmVzb2x2ZT1vLHIucmVqZWN0PWksci5yZXN1bHRzPW5ldyBBcnJheShBLmxlbmd0aCksci5jb21wbGV0ZWRUYXNrcz0wLHIuYWRkaW5nVGFza3M9ITAsQS5mb3JFYWNoKChuLGcpPT57dGhpcy5hZGRUYXNrKHIuaW5kZXgsZyxuKX0pLHIuYWRkaW5nVGFza3M9ITF9KSxydW5JZDpyLmluZGV4fX10ZXJtaW5hdGVXb3JrZXJzKCl7Zm9yKGxldCBBPTA7QTx0aGlzLndvcmtlclF1ZXVlLmxlbmd0aDtBKyspe2xldCB0PXRoaXMud29ya2VyUXVldWVbQV07dD8udGVybWluYXRlKCksdGhpcy53b3JrZXJRdWV1ZVtBXT1udWxsfX1jYW5jZWwoQSl7bGV0IHQ9dGhpcy5ydW5JbmZvW0FdO3QhPW51bGwmJih0LmNhbmNlbGVkPSEwKX1hZGRUYXNrKEEsdCxyKXtsZXQgbz10aGlzLnJ1bkluZm9bQV07aWYobz8uY2FuY2VsZWQ9PT0hMCl7by5yZWplY3QoIlJlbWFpbmluZyB0YXNrcyBjYW5jZWxlZCIpLHRoaXMuY2xlYXJUYXNrKG8uaW5kZXgpO3JldHVybn1pZih0aGlzLndvcmtlclF1ZXVlLmxlbmd0aD4wKXtsZXQgaT10aGlzLndvcmtlclF1ZXVlLnBvcCgpO28ucnVubmluZ1dvcmtlcnMrKyxyW3IubGVuZ3RoLTFdLndlYldvcmtlcj1pLHRoaXMuZmNuKC4uLnIpLnRoZW4oKHt3ZWJXb3JrZXI6biwuLi5nfSk9PntpZih0aGlzLndvcmtlclF1ZXVlLnB1c2gobiksdGhpcy5ydW5JbmZvW0FdIT09bnVsbCl7aWYoby5ydW5uaW5nV29ya2Vycy0tLG8ucmVzdWx0c1t0XT1nLG8uY29tcGxldGVkVGFza3MrKyxvLnByb2dyZXNzQ2FsbGJhY2shPW51bGwmJm8ucHJvZ3Jlc3NDYWxsYmFjayhvLmNvbXBsZXRlZFRhc2tzLG8ucmVzdWx0cy5sZW5ndGgpLG8udGFza1F1ZXVlLmxlbmd0aD4wKXtsZXQgZj1vLnRhc2tRdWV1ZS5zaGlmdCgpO3RoaXMuYWRkVGFzayhBLGZbMF0sZlsxXSl9ZWxzZSBpZighby5hZGRpbmdUYXNrcyYmby5ydW5uaW5nV29ya2Vycz09PTApe2xldCBmPW8ucmVzdWx0cztvLnJlc29sdmUoZiksdGhpcy5jbGVhclRhc2soby5pbmRleCl9fX0pLmNhdGNoKG49PntvLnJlamVjdChuKSx0aGlzLmNsZWFyVGFzayhvLmluZGV4KX0pfWVsc2Ugby5ydW5uaW5nV29ya2VycyE9PTB8fG8ucG9zdHBvbmVkP28udGFza1F1ZXVlLnB1c2goW3Qscl0pOihvLnBvc3Rwb25lZD0hMCxzZXRUaW1lb3V0KCgpPT57by5wb3N0cG9uZWQ9ITEsdGhpcy5hZGRUYXNrKG8uaW5kZXgsdCxyKX0sNTApKX1jbGVhclRhc2soQSl7dGhpcy5ydW5JbmZvW0FdLnJlc3VsdHM9W10sdGhpcy5ydW5JbmZvW0FdLnRhc2tRdWV1ZT1bXSx0aGlzLnJ1bkluZm9bQV0ucHJvZ3Jlc3NDYWxsYmFjaz1udWxsLHRoaXMucnVuSW5mb1tBXS5jYW5jZWxlZD1udWxsLHRoaXMucnVuSW5mb1tBXS5yZWplY3Q9KCk9Pnt9LHRoaXMucnVuSW5mb1tBXS5yZXNvbHZlPSgpPT57fX19LExlPUplO3ZhciBQcj17VGV4dEZpbGU6IlRleHRGaWxlIixCaW5hcnlGaWxlOiJCaW5hcnlGaWxlIixUZXh0U3RyZWFtOiJUZXh0U3RyZWFtIixCaW5hcnlTdHJlYW06IkJpbmFyeVN0cmVhbSIsSW1hZ2U6IkltYWdlIixNZXNoOiJNZXNoIixQb2x5RGF0YToiUG9seURhdGEiLEpzb25Db21wYXRpYmxlOiJKc29uQ29tcGF0aWJsZSJ9LGw9UHI7dmFyIHB0PVN5bWJvbCgiQ29tbGluay5wcm94eSIpLHhyPVN5bWJvbCgiQ29tbGluay5lbmRwb2ludCIpLFllPVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSxNZT1TeW1ib2woIkNvbWxpbmsuZmluYWxpemVyIiksZmU9U3ltYm9sKCJDb21saW5rLnRocm93biIpLG10PWU9PnR5cGVvZiBlPT0ib2JqZWN0IiYmZSE9PW51bGx8fHR5cGVvZiBlPT0iZnVuY3Rpb24iLEdyPXtjYW5IYW5kbGU6ZT0+bXQoZSkmJmVbcHRdLHNlcmlhbGl6ZShlKXtsZXR7cG9ydDE6QSxwb3J0Mjp0fT1uZXcgTWVzc2FnZUNoYW5uZWw7cmV0dXJuIGZ0KGUsQSksW3QsW3RdXX0sZGVzZXJpYWxpemUoZSl7cmV0dXJuIGUuc3RhcnQoKSxxZShlKX19LFRyPXtjYW5IYW5kbGU6ZT0+bXQoZSkmJmZlIGluIGUsc2VyaWFsaXplKHt2YWx1ZTplfSl7bGV0IEE7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvcj9BPXtpc0Vycm9yOiEwLHZhbHVlOnttZXNzYWdlOmUubWVzc2FnZSxuYW1lOmUubmFtZSxzdGFjazplLnN0YWNrfX06QT17aXNFcnJvcjohMSx2YWx1ZTplfSxbQSxbXV19LGRlc2VyaWFsaXplKGUpe3Rocm93IGUuaXNFcnJvcj9PYmplY3QuYXNzaWduKG5ldyBFcnJvcihlLnZhbHVlLm1lc3NhZ2UpLGUudmFsdWUpOmUudmFsdWV9fSx1dD1uZXcgTWFwKFtbInByb3h5IixHcl0sWyJ0aHJvdyIsVHJdXSk7ZnVuY3Rpb24gSnIoZSxBKXtmb3IobGV0IHQgb2YgZSlpZihBPT09dHx8dD09PSIqInx8dCBpbnN0YW5jZW9mIFJlZ0V4cCYmdC50ZXN0KEEpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGZ0KGUsQT1nbG9iYWxUaGlzLHQ9WyIqIl0pe0EuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gcihvKXtpZighb3x8IW8uZGF0YSlyZXR1cm47aWYoIUpyKHQsby5vcmlnaW4pKXtjb25zb2xlLndhcm4oYEludmFsaWQgb3JpZ2luICcke28ub3JpZ2lufScgZm9yIGNvbWxpbmsgcHJveHlgKTtyZXR1cm59bGV0e2lkOmksdHlwZTpuLHBhdGg6Z309T2JqZWN0LmFzc2lnbih7cGF0aDpbXX0sby5kYXRhKSxmPShvLmRhdGEuYXJndW1lbnRMaXN0fHxbXSkubWFwKHEpLG07dHJ5e2xldCBhPWcuc2xpY2UoMCwtMSkucmVkdWNlKCh1LEkpPT51W0ldLGUpLHM9Zy5yZWR1Y2UoKHUsSSk9PnVbSV0sZSk7c3dpdGNoKG4pe2Nhc2UiR0VUIjptPXM7YnJlYWs7Y2FzZSJTRVQiOmFbZy5zbGljZSgtMSlbMF1dPXEoby5kYXRhLnZhbHVlKSxtPSEwO2JyZWFrO2Nhc2UiQVBQTFkiOm09cy5hcHBseShhLGYpO2JyZWFrO2Nhc2UiQ09OU1RSVUNUIjp7bGV0IHU9bmV3IHMoLi4uZik7bT1xcih1KX1icmVhaztjYXNlIkVORFBPSU5UIjp7bGV0e3BvcnQxOnUscG9ydDI6SX09bmV3IE1lc3NhZ2VDaGFubmVsO2Z0KGUsSSksbT1LZSh1LFt1XSl9YnJlYWs7Y2FzZSJSRUxFQVNFIjptPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2goYSl7bT17dmFsdWU6YSxbZmVdOjB9fVByb21pc2UucmVzb2x2ZShtKS5jYXRjaChhPT4oe3ZhbHVlOmEsW2ZlXTowfSkpLnRoZW4oYT0+e2xldFtzLHVdPWRlKGEpO0EucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHMpLHtpZDppfSksdSksbj09PSJSRUxFQVNFIiYmKEEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsciksY3QoQSksTWUgaW4gZSYmdHlwZW9mIGVbTWVdPT0iZnVuY3Rpb24iJiZlW01lXSgpKX0pLmNhdGNoKGE9PntsZXRbcyx1XT1kZSh7dmFsdWU6bmV3IFR5cGVFcnJvcigiVW5zZXJpYWxpemFibGUgcmV0dXJuIHZhbHVlIiksW2ZlXTowfSk7QS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scykse2lkOml9KSx1KX0pfSksQS5zdGFydCYmQS5zdGFydCgpfWZ1bmN0aW9uIExyKGUpe3JldHVybiBlLmNvbnN0cnVjdG9yLm5hbWU9PT0iTWVzc2FnZVBvcnQifWZ1bmN0aW9uIGN0KGUpe0xyKGUpJiZlLmNsb3NlKCl9ZnVuY3Rpb24gcWUoZSxBKXtyZXR1cm4gSGUoZSxbXSxBKX1mdW5jdGlvbiB1ZShlKXtpZihlKXRocm93IG5ldyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIil9ZnVuY3Rpb24gQnQoZSl7cmV0dXJuIGooZSx7dHlwZToiUkVMRUFTRSJ9KS50aGVuKCgpPT57Y3QoZSl9KX12YXIgY2U9bmV3IFdlYWtNYXAsQmU9IkZpbmFsaXphdGlvblJlZ2lzdHJ5ImluIGdsb2JhbFRoaXMmJm5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShlPT57bGV0IEE9KGNlLmdldChlKXx8MCktMTtjZS5zZXQoZSxBKSxBPT09MCYmQnQoZSl9KTtmdW5jdGlvbiBNcihlLEEpe2xldCB0PShjZS5nZXQoQSl8fDApKzE7Y2Uuc2V0KEEsdCksQmUmJkJlLnJlZ2lzdGVyKGUsQSxlKX1mdW5jdGlvbiBIcihlKXtCZSYmQmUudW5yZWdpc3RlcihlKX1mdW5jdGlvbiBIZShlLEE9W10sdD1mdW5jdGlvbigpe30pe2xldCByPSExLG89bmV3IFByb3h5KHQse2dldChpLG4pe2lmKHVlKHIpLG49PT1ZZSlyZXR1cm4oKT0+e0hyKG8pLEJ0KGUpLHI9ITB9O2lmKG49PT0idGhlbiIpe2lmKEEubGVuZ3RoPT09MClyZXR1cm57dGhlbjooKT0+b307bGV0IGc9aihlLHt0eXBlOiJHRVQiLHBhdGg6QS5tYXAoZj0+Zi50b1N0cmluZygpKX0pLnRoZW4ocSk7cmV0dXJuIGcudGhlbi5iaW5kKGcpfXJldHVybiBIZShlLFsuLi5BLG5dKX0sc2V0KGksbixnKXt1ZShyKTtsZXRbZixtXT1kZShnKTtyZXR1cm4gaihlLHt0eXBlOiJTRVQiLHBhdGg6Wy4uLkEsbl0ubWFwKGE9PmEudG9TdHJpbmcoKSksdmFsdWU6Zn0sbSkudGhlbihxKX0sYXBwbHkoaSxuLGcpe3VlKHIpO2xldCBmPUFbQS5sZW5ndGgtMV07aWYoZj09PXhyKXJldHVybiBqKGUse3R5cGU6IkVORFBPSU5UIn0pLnRoZW4ocSk7aWYoZj09PSJiaW5kIilyZXR1cm4gSGUoZSxBLnNsaWNlKDAsLTEpKTtsZXRbbSxhXT1sdChnKTtyZXR1cm4gaihlLHt0eXBlOiJBUFBMWSIscGF0aDpBLm1hcChzPT5zLnRvU3RyaW5nKCkpLGFyZ3VtZW50TGlzdDptfSxhKS50aGVuKHEpfSxjb25zdHJ1Y3QoaSxuKXt1ZShyKTtsZXRbZyxmXT1sdChuKTtyZXR1cm4gaihlLHt0eXBlOiJDT05TVFJVQ1QiLHBhdGg6QS5tYXAobT0+bS50b1N0cmluZygpKSxhcmd1bWVudExpc3Q6Z30sZikudGhlbihxKX19KTtyZXR1cm4gTXIobyxlKSxvfWZ1bmN0aW9uIFlyKGUpe3JldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLGUpfWZ1bmN0aW9uIGx0KGUpe2xldCBBPWUubWFwKGRlKTtyZXR1cm5bQS5tYXAodD0+dFswXSksWXIoQS5tYXAodD0+dFsxXSkpXX12YXIgZHQ9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gS2UoZSxBKXtyZXR1cm4gZHQuc2V0KGUsQSksZX1mdW5jdGlvbiBxcihlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihlLHtbcHRdOiEwfSl9ZnVuY3Rpb24gZGUoZSl7Zm9yKGxldFtBLHRdb2YgdXQpaWYodC5jYW5IYW5kbGUoZSkpe2xldFtyLG9dPXQuc2VyaWFsaXplKGUpO3JldHVyblt7dHlwZToiSEFORExFUiIsbmFtZTpBLHZhbHVlOnJ9LG9dfXJldHVyblt7dHlwZToiUkFXIix2YWx1ZTplfSxkdC5nZXQoZSl8fFtdXX1mdW5jdGlvbiBxKGUpe3N3aXRjaChlLnR5cGUpe2Nhc2UiSEFORExFUiI6cmV0dXJuIHV0LmdldChlLm5hbWUpLmRlc2VyaWFsaXplKGUudmFsdWUpO2Nhc2UiUkFXIjpyZXR1cm4gZS52YWx1ZX19ZnVuY3Rpb24gaihlLEEsdCl7cmV0dXJuIG5ldyBQcm9taXNlKHI9PntsZXQgbz1LcigpO2UuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gaShuKXshbi5kYXRhfHwhbi5kYXRhLmlkfHxuLmRhdGEuaWQhPT1vfHwoZS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixpKSxyKG4uZGF0YSkpfSksZS5zdGFydCYmZS5zdGFydCgpLGUucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbih7aWQ6b30sQSksdCl9KX1mdW5jdGlvbiBLcigpe3JldHVybiBuZXcgQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCk9Pk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKS5qb2luKCItIil9ZnVuY3Rpb24gcmUoZSxBKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseShBLGFyZ3VtZW50cyl9fXZhcnt0b1N0cmluZzpqcn09T2JqZWN0LnByb3RvdHlwZSx7Z2V0UHJvdG90eXBlT2Y6emV9PU9iamVjdCxFZT0oZT0+QT0+e2xldCB0PWpyLmNhbGwoQSk7cmV0dXJuIGVbdF18fChlW3RdPXQuc2xpY2UoOCwtMSkudG9Mb3dlckNhc2UoKSl9KShPYmplY3QuY3JlYXRlKG51bGwpKSx4PWU9PihlPWUudG9Mb3dlckNhc2UoKSxBPT5FZShBKT09PWUpLHllPWU9PkE9PnR5cGVvZiBBPT09ZSx7aXNBcnJheTp2fT1BcnJheSxpZT15ZSgidW5kZWZpbmVkIik7ZnVuY3Rpb24gdnIoZSl7cmV0dXJuIGUhPT1udWxsJiYhaWUoZSkmJmUuY29uc3RydWN0b3IhPT1udWxsJiYhaWUoZS5jb25zdHJ1Y3RvcikmJk8oZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcikmJmUuY29uc3RydWN0b3IuaXNCdWZmZXIoZSl9dmFyIFF0PXgoIkFycmF5QnVmZmVyIik7ZnVuY3Rpb24genIoZSl7bGV0IEE7cmV0dXJuIHR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJkFycmF5QnVmZmVyLmlzVmlldz9BPUFycmF5QnVmZmVyLmlzVmlldyhlKTpBPWUmJmUuYnVmZmVyJiZRdChlLmJ1ZmZlciksQX12YXIgVnI9eWUoInN0cmluZyIpLE89eWUoImZ1bmN0aW9uIiksaHQ9eWUoIm51bWJlciIpLFFlPWU9PmUhPT1udWxsJiZ0eXBlb2YgZT09Im9iamVjdCIsX3I9ZT0+ZT09PSEwfHxlPT09ITEsQ2U9ZT0+e2lmKEVlKGUpIT09Im9iamVjdCIpcmV0dXJuITE7bGV0IEE9emUoZSk7cmV0dXJuKEE9PT1udWxsfHxBPT09T2JqZWN0LnByb3RvdHlwZXx8T2JqZWN0LmdldFByb3RvdHlwZU9mKEEpPT09bnVsbCkmJiEoU3ltYm9sLnRvU3RyaW5nVGFnIGluIGUpJiYhKFN5bWJvbC5pdGVyYXRvciBpbiBlKX0sWnI9eCgiRGF0ZSIpLFhyPXgoIkZpbGUiKSwkcj14KCJCbG9iIiksZWk9eCgiRmlsZUxpc3QiKSxBaT1lPT5RZShlKSYmTyhlLnBpcGUpLHRpPWU9PntsZXQgQTtyZXR1cm4gZSYmKHR5cGVvZiBGb3JtRGF0YT09ImZ1bmN0aW9uIiYmZSBpbnN0YW5jZW9mIEZvcm1EYXRhfHxPKGUuYXBwZW5kKSYmKChBPUVlKGUpKT09PSJmb3JtZGF0YSJ8fEE9PT0ib2JqZWN0IiYmTyhlLnRvU3RyaW5nKSYmZS50b1N0cmluZygpPT09IltvYmplY3QgRm9ybURhdGFdIikpfSxyaT14KCJVUkxTZWFyY2hQYXJhbXMiKSxpaT1lPT5lLnRyaW0/ZS50cmltKCk6ZS5yZXBsYWNlKC9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQvZywiIik7ZnVuY3Rpb24gb2UoZSxBLHthbGxPd25LZXlzOnQ9ITF9PXt9KXtpZihlPT09bnVsbHx8dHlwZW9mIGU+InUiKXJldHVybjtsZXQgcixvO2lmKHR5cGVvZiBlIT0ib2JqZWN0IiYmKGU9W2VdKSx2KGUpKWZvcihyPTAsbz1lLmxlbmd0aDtyPG87cisrKUEuY2FsbChudWxsLGVbcl0scixlKTtlbHNle2xldCBpPXQ/T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSk6T2JqZWN0LmtleXMoZSksbj1pLmxlbmd0aCxnO2ZvcihyPTA7cjxuO3IrKylnPWlbcl0sQS5jYWxsKG51bGwsZVtnXSxnLGUpfX1mdW5jdGlvbiB3dChlLEEpe0E9QS50b0xvd2VyQ2FzZSgpO2xldCB0PU9iamVjdC5rZXlzKGUpLHI9dC5sZW5ndGgsbztmb3IoO3ItLSA+MDspaWYobz10W3JdLEE9PT1vLnRvTG93ZXJDYXNlKCkpcmV0dXJuIG87cmV0dXJuIG51bGx9dmFyIFJ0PXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzpnbG9iYWwsa3Q9ZT0+IWllKGUpJiZlIT09UnQ7ZnVuY3Rpb24gdmUoKXtsZXR7Y2FzZWxlc3M6ZX09a3QodGhpcykmJnRoaXN8fHt9LEE9e30sdD0ocixvKT0+e2xldCBpPWUmJnd0KEEsbyl8fG87Q2UoQVtpXSkmJkNlKHIpP0FbaV09dmUoQVtpXSxyKTpDZShyKT9BW2ldPXZlKHt9LHIpOnYocik/QVtpXT1yLnNsaWNlKCk6QVtpXT1yfTtmb3IobGV0IHI9MCxvPWFyZ3VtZW50cy5sZW5ndGg7cjxvO3IrKylhcmd1bWVudHNbcl0mJm9lKGFyZ3VtZW50c1tyXSx0KTtyZXR1cm4gQX12YXIgb2k9KGUsQSx0LHthbGxPd25LZXlzOnJ9PXt9KT0+KG9lKEEsKG8saSk9Pnt0JiZPKG8pP2VbaV09cmUobyx0KTplW2ldPW99LHthbGxPd25LZXlzOnJ9KSxlKSxhaT1lPT4oZS5jaGFyQ29kZUF0KDApPT09NjUyNzkmJihlPWUuc2xpY2UoMSkpLGUpLG5pPShlLEEsdCxyKT0+e2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoQS5wcm90b3R5cGUsciksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwic3VwZXIiLHt2YWx1ZTpBLnByb3RvdHlwZX0pLHQmJk9iamVjdC5hc3NpZ24oZS5wcm90b3R5cGUsdCl9LHNpPShlLEEsdCxyKT0+e2xldCBvLGksbixnPXt9O2lmKEE9QXx8e30sZT09bnVsbClyZXR1cm4gQTtkb3tmb3Iobz1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKSxpPW8ubGVuZ3RoO2ktLSA+MDspbj1vW2ldLCghcnx8cihuLGUsQSkpJiYhZ1tuXSYmKEFbbl09ZVtuXSxnW25dPSEwKTtlPXQhPT0hMSYmemUoZSl9d2hpbGUoZSYmKCF0fHx0KGUsQSkpJiZlIT09T2JqZWN0LnByb3RvdHlwZSk7cmV0dXJuIEF9LElpPShlLEEsdCk9PntlPVN0cmluZyhlKSwodD09PXZvaWQgMHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKSx0LT1BLmxlbmd0aDtsZXQgcj1lLmluZGV4T2YoQSx0KTtyZXR1cm4gciE9PS0xJiZyPT09dH0sZ2k9ZT0+e2lmKCFlKXJldHVybiBudWxsO2lmKHYoZSkpcmV0dXJuIGU7bGV0IEE9ZS5sZW5ndGg7aWYoIWh0KEEpKXJldHVybiBudWxsO2xldCB0PW5ldyBBcnJheShBKTtmb3IoO0EtLSA+MDspdFtBXT1lW0FdO3JldHVybiB0fSxsaT0oZT0+QT0+ZSYmQSBpbnN0YW5jZW9mIGUpKHR5cGVvZiBVaW50OEFycmF5PCJ1IiYmemUoVWludDhBcnJheSkpLHBpPShlLEEpPT57bGV0IHI9KGUmJmVbU3ltYm9sLml0ZXJhdG9yXSkuY2FsbChlKSxvO2Zvcig7KG89ci5uZXh0KCkpJiYhby5kb25lOyl7bGV0IGk9by52YWx1ZTtBLmNhbGwoZSxpWzBdLGlbMV0pfX0sbWk9KGUsQSk9PntsZXQgdCxyPVtdO2Zvcig7KHQ9ZS5leGVjKEEpKSE9PW51bGw7KXIucHVzaCh0KTtyZXR1cm4gcn0sdWk9eCgiSFRNTEZvcm1FbGVtZW50IiksZmk9ZT0+ZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1stX1xzXShbYS16XGRdKShcdyopL2csZnVuY3Rpb24odCxyLG8pe3JldHVybiByLnRvVXBwZXJDYXNlKCkrb30pLEV0PSgoe2hhc093blByb3BlcnR5OmV9KT0+KEEsdCk9PmUuY2FsbChBLHQpKShPYmplY3QucHJvdG90eXBlKSxjaT14KCJSZWdFeHAiKSxidD0oZSxBKT0+e2xldCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKGUpLHI9e307b2UodCwobyxpKT0+e2xldCBuOyhuPUEobyxpLGUpKSE9PSExJiYocltpXT1ufHxvKX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUscil9LEJpPWU9PntidChlLChBLHQpPT57aWYoTyhlKSYmWyJhcmd1bWVudHMiLCJjYWxsZXIiLCJjYWxsZWUiXS5pbmRleE9mKHQpIT09LTEpcmV0dXJuITE7bGV0IHI9ZVt0XTtpZihPKHIpKXtpZihBLmVudW1lcmFibGU9ITEsIndyaXRhYmxlImluIEEpe0Eud3JpdGFibGU9ITE7cmV0dXJufUEuc2V0fHwoQS5zZXQ9KCk9Pnt0aHJvdyBFcnJvcigiQ2FuIG5vdCByZXdyaXRlIHJlYWQtb25seSBtZXRob2QgJyIrdCsiJyIpfSl9fSl9LGRpPShlLEEpPT57bGV0IHQ9e30scj1vPT57by5mb3JFYWNoKGk9Pnt0W2ldPSEwfSl9O3JldHVybiB2KGUpP3IoZSk6cihTdHJpbmcoZSkuc3BsaXQoQSkpLHR9LENpPSgpPT57fSxFaT0oZSxBKT0+KGU9K2UsTnVtYmVyLmlzRmluaXRlKGUpP2U6QSksamU9ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Iix5dD0iMDEyMzQ1Njc4OSIsRHQ9e0RJR0lUOnl0LEFMUEhBOmplLEFMUEhBX0RJR0lUOmplK2plLnRvVXBwZXJDYXNlKCkreXR9LHlpPShlPTE2LEE9RHQuQUxQSEFfRElHSVQpPT57bGV0IHQ9IiIse2xlbmd0aDpyfT1BO2Zvcig7ZS0tOyl0Kz1BW01hdGgucmFuZG9tKCkqcnwwXTtyZXR1cm4gdH07ZnVuY3Rpb24gUWkoZSl7cmV0dXJuISEoZSYmTyhlLmFwcGVuZCkmJmVbU3ltYm9sLnRvU3RyaW5nVGFnXT09PSJGb3JtRGF0YSImJmVbU3ltYm9sLml0ZXJhdG9yXSl9dmFyIGhpPWU9PntsZXQgQT1uZXcgQXJyYXkoMTApLHQ9KHIsbyk9PntpZihRZShyKSl7aWYoQS5pbmRleE9mKHIpPj0wKXJldHVybjtpZighKCJ0b0pTT04iaW4gcikpe0Fbb109cjtsZXQgaT12KHIpP1tdOnt9O3JldHVybiBvZShyLChuLGcpPT57bGV0IGY9dChuLG8rMSk7IWllKGYpJiYoaVtnXT1mKX0pLEFbb109dm9pZCAwLGl9fXJldHVybiByfTtyZXR1cm4gdChlLDApfSx3aT14KCJBc3luY0Z1bmN0aW9uIiksUmk9ZT0+ZSYmKFFlKGUpfHxPKGUpKSYmTyhlLnRoZW4pJiZPKGUuY2F0Y2gpLGM9e2lzQXJyYXk6dixpc0FycmF5QnVmZmVyOlF0LGlzQnVmZmVyOnZyLGlzRm9ybURhdGE6dGksaXNBcnJheUJ1ZmZlclZpZXc6enIsaXNTdHJpbmc6VnIsaXNOdW1iZXI6aHQsaXNCb29sZWFuOl9yLGlzT2JqZWN0OlFlLGlzUGxhaW5PYmplY3Q6Q2UsaXNVbmRlZmluZWQ6aWUsaXNEYXRlOlpyLGlzRmlsZTpYcixpc0Jsb2I6JHIsaXNSZWdFeHA6Y2ksaXNGdW5jdGlvbjpPLGlzU3RyZWFtOkFpLGlzVVJMU2VhcmNoUGFyYW1zOnJpLGlzVHlwZWRBcnJheTpsaSxpc0ZpbGVMaXN0OmVpLGZvckVhY2g6b2UsbWVyZ2U6dmUsZXh0ZW5kOm9pLHRyaW06aWksc3RyaXBCT006YWksaW5oZXJpdHM6bmksdG9GbGF0T2JqZWN0OnNpLGtpbmRPZjpFZSxraW5kT2ZUZXN0OngsZW5kc1dpdGg6SWksdG9BcnJheTpnaSxmb3JFYWNoRW50cnk6cGksbWF0Y2hBbGw6bWksaXNIVE1MRm9ybTp1aSxoYXNPd25Qcm9wZXJ0eTpFdCxoYXNPd25Qcm9wOkV0LHJlZHVjZURlc2NyaXB0b3JzOmJ0LGZyZWV6ZU1ldGhvZHM6QmksdG9PYmplY3RTZXQ6ZGksdG9DYW1lbENhc2U6Zmksbm9vcDpDaSx0b0Zpbml0ZU51bWJlcjpFaSxmaW5kS2V5Ond0LGdsb2JhbDpSdCxpc0NvbnRleHREZWZpbmVkOmt0LEFMUEhBQkVUOkR0LGdlbmVyYXRlU3RyaW5nOnlpLGlzU3BlY0NvbXBsaWFudEZvcm06UWksdG9KU09OT2JqZWN0OmhpLGlzQXN5bmNGbjp3aSxpc1RoZW5hYmxlOlJpfTtmdW5jdGlvbiB6KGUsQSx0LHIsbyl7RXJyb3IuY2FsbCh0aGlzKSxFcnJvci5jYXB0dXJlU3RhY2tUcmFjZT9FcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLHRoaXMuY29uc3RydWN0b3IpOnRoaXMuc3RhY2s9bmV3IEVycm9yKCkuc3RhY2ssdGhpcy5tZXNzYWdlPWUsdGhpcy5uYW1lPSJBeGlvc0Vycm9yIixBJiYodGhpcy5jb2RlPUEpLHQmJih0aGlzLmNvbmZpZz10KSxyJiYodGhpcy5yZXF1ZXN0PXIpLG8mJih0aGlzLnJlc3BvbnNlPW8pfWMuaW5oZXJpdHMoeixFcnJvcix7dG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOmMudG9KU09OT2JqZWN0KHRoaXMuY29uZmlnKSxjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5yZXNwb25zZSYmdGhpcy5yZXNwb25zZS5zdGF0dXM/dGhpcy5yZXNwb25zZS5zdGF0dXM6bnVsbH19fSk7dmFyIFd0PXoucHJvdG90eXBlLEZ0PXt9O1siRVJSX0JBRF9PUFRJT05fVkFMVUUiLCJFUlJfQkFEX09QVElPTiIsIkVDT05OQUJPUlRFRCIsIkVUSU1FRE9VVCIsIkVSUl9ORVRXT1JLIiwiRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUyIsIkVSUl9ERVBSRUNBVEVEIiwiRVJSX0JBRF9SRVNQT05TRSIsIkVSUl9CQURfUkVRVUVTVCIsIkVSUl9DQU5DRUxFRCIsIkVSUl9OT1RfU1VQUE9SVCIsIkVSUl9JTlZBTElEX1VSTCJdLmZvckVhY2goZT0+e0Z0W2VdPXt2YWx1ZTplfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHosRnQpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShXdCwiaXNBeGlvc0Vycm9yIix7dmFsdWU6ITB9KTt6LmZyb209KGUsQSx0LHIsbyxpKT0+e2xldCBuPU9iamVjdC5jcmVhdGUoV3QpO3JldHVybiBjLnRvRmxhdE9iamVjdChlLG4sZnVuY3Rpb24oZil7cmV0dXJuIGYhPT1FcnJvci5wcm90b3R5cGV9LGc9PmchPT0iaXNBeGlvc0Vycm9yIiksei5jYWxsKG4sZS5tZXNzYWdlLEEsdCxyLG8pLG4uY2F1c2U9ZSxuLm5hbWU9ZS5uYW1lLGkmJk9iamVjdC5hc3NpZ24obixpKSxufTt2YXIgdz16O3ZhciBoZT1udWxsO2Z1bmN0aW9uIFZlKGUpe3JldHVybiBjLmlzUGxhaW5PYmplY3QoZSl8fGMuaXNBcnJheShlKX1mdW5jdGlvbiBTdChlKXtyZXR1cm4gYy5lbmRzV2l0aChlLCJbXSIpP2Uuc2xpY2UoMCwtMik6ZX1mdW5jdGlvbiBVdChlLEEsdCl7cmV0dXJuIGU/ZS5jb25jYXQoQSkubWFwKGZ1bmN0aW9uKG8saSl7cmV0dXJuIG89U3QobyksIXQmJmk/IlsiK28rIl0iOm99KS5qb2luKHQ/Ii4iOiIiKTpBfWZ1bmN0aW9uIGtpKGUpe3JldHVybiBjLmlzQXJyYXkoZSkmJiFlLnNvbWUoVmUpfXZhciBiaT1jLnRvRmxhdE9iamVjdChjLHt9LG51bGwsZnVuY3Rpb24oQSl7cmV0dXJuL15pc1tBLVpdLy50ZXN0KEEpfSk7ZnVuY3Rpb24gRGkoZSxBLHQpe2lmKCFjLmlzT2JqZWN0KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoInRhcmdldCBtdXN0IGJlIGFuIG9iamVjdCIpO0E9QXx8bmV3KGhlfHxGb3JtRGF0YSksdD1jLnRvRmxhdE9iamVjdCh0LHttZXRhVG9rZW5zOiEwLGRvdHM6ITEsaW5kZXhlczohMX0sITEsZnVuY3Rpb24oQixRKXtyZXR1cm4hYy5pc1VuZGVmaW5lZChRW0JdKX0pO2xldCByPXQubWV0YVRva2VucyxvPXQudmlzaXRvcnx8YSxpPXQuZG90cyxuPXQuaW5kZXhlcyxmPSh0LkJsb2J8fHR5cGVvZiBCbG9iPCJ1IiYmQmxvYikmJmMuaXNTcGVjQ29tcGxpYW50Rm9ybShBKTtpZighYy5pc0Z1bmN0aW9uKG8pKXRocm93IG5ldyBUeXBlRXJyb3IoInZpc2l0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uIik7ZnVuY3Rpb24gbShwKXtpZihwPT09bnVsbClyZXR1cm4iIjtpZihjLmlzRGF0ZShwKSlyZXR1cm4gcC50b0lTT1N0cmluZygpO2lmKCFmJiZjLmlzQmxvYihwKSl0aHJvdyBuZXcgdygiQmxvYiBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgYSBCdWZmZXIgaW5zdGVhZC4iKTtyZXR1cm4gYy5pc0FycmF5QnVmZmVyKHApfHxjLmlzVHlwZWRBcnJheShwKT9mJiZ0eXBlb2YgQmxvYj09ImZ1bmN0aW9uIj9uZXcgQmxvYihbcF0pOkJ1ZmZlci5mcm9tKHApOnB9ZnVuY3Rpb24gYShwLEIsUSl7bGV0IFI9cDtpZihwJiYhUSYmdHlwZW9mIHA9PSJvYmplY3QiKXtpZihjLmVuZHNXaXRoKEIsInt9IikpQj1yP0I6Qi5zbGljZSgwLC0yKSxwPUpTT04uc3RyaW5naWZ5KHApO2Vsc2UgaWYoYy5pc0FycmF5KHApJiZraShwKXx8KGMuaXNGaWxlTGlzdChwKXx8Yy5lbmRzV2l0aChCLCJbXSIpKSYmKFI9Yy50b0FycmF5KHApKSlyZXR1cm4gQj1TdChCKSxSLmZvckVhY2goZnVuY3Rpb24oUCxRcil7IShjLmlzVW5kZWZpbmVkKFApfHxQPT09bnVsbCkmJkEuYXBwZW5kKG49PT0hMD9VdChbQl0sUXIsaSk6bj09PW51bGw/QjpCKyJbXSIsbShQKSl9KSwhMX1yZXR1cm4gVmUocCk/ITA6KEEuYXBwZW5kKFV0KFEsQixpKSxtKHApKSwhMSl9bGV0IHM9W10sdT1PYmplY3QuYXNzaWduKGJpLHtkZWZhdWx0VmlzaXRvcjphLGNvbnZlcnRWYWx1ZTptLGlzVmlzaXRhYmxlOlZlfSk7ZnVuY3Rpb24gSShwLEIpe2lmKCFjLmlzVW5kZWZpbmVkKHApKXtpZihzLmluZGV4T2YocCkhPT0tMSl0aHJvdyBFcnJvcigiQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGluICIrQi5qb2luKCIuIikpO3MucHVzaChwKSxjLmZvckVhY2gocCxmdW5jdGlvbihSLE4peyghKGMuaXNVbmRlZmluZWQoUil8fFI9PT1udWxsKSYmby5jYWxsKEEsUixjLmlzU3RyaW5nKE4pP04udHJpbSgpOk4sQix1KSk9PT0hMCYmSShSLEI/Qi5jb25jYXQoTik6W05dKX0pLHMucG9wKCl9fWlmKCFjLmlzT2JqZWN0KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoImRhdGEgbXVzdCBiZSBhbiBvYmplY3QiKTtyZXR1cm4gSShlKSxBfXZhciBMPURpO2Z1bmN0aW9uIE90KGUpe2xldCBBPXsiISI6IiUyMSIsIiciOiIlMjciLCIoIjoiJTI4IiwiKSI6IiUyOSIsIn4iOiIlN0UiLCIlMjAiOiIrIiwiJTAwIjoiXDAifTtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGUpLnJlcGxhY2UoL1shJygpfl18JTIwfCUwMC9nLGZ1bmN0aW9uKHIpe3JldHVybiBBW3JdfSl9ZnVuY3Rpb24gTnQoZSxBKXt0aGlzLl9wYWlycz1bXSxlJiZMKGUsdGhpcyxBKX12YXIgUHQ9TnQucHJvdG90eXBlO1B0LmFwcGVuZD1mdW5jdGlvbihBLHQpe3RoaXMuX3BhaXJzLnB1c2goW0EsdF0pfTtQdC50b1N0cmluZz1mdW5jdGlvbihBKXtsZXQgdD1BP2Z1bmN0aW9uKHIpe3JldHVybiBBLmNhbGwodGhpcyxyLE90KX06T3Q7cmV0dXJuIHRoaXMuX3BhaXJzLm1hcChmdW5jdGlvbihvKXtyZXR1cm4gdChvWzBdKSsiPSIrdChvWzFdKX0sIiIpLmpvaW4oIiYiKX07dmFyIHdlPU50O2Z1bmN0aW9uIFdpKGUpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoZSkucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2csIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjAvZywiKyIpLnJlcGxhY2UoLyU1Qi9naSwiWyIpLnJlcGxhY2UoLyU1RC9naSwiXSIpfWZ1bmN0aW9uIGFlKGUsQSx0KXtpZighQSlyZXR1cm4gZTtsZXQgcj10JiZ0LmVuY29kZXx8V2ksbz10JiZ0LnNlcmlhbGl6ZSxpO2lmKG8/aT1vKEEsdCk6aT1jLmlzVVJMU2VhcmNoUGFyYW1zKEEpP0EudG9TdHJpbmcoKTpuZXcgd2UoQSx0KS50b1N0cmluZyhyKSxpKXtsZXQgbj1lLmluZGV4T2YoIiMiKTtuIT09LTEmJihlPWUuc2xpY2UoMCxuKSksZSs9KGUuaW5kZXhPZigiPyIpPT09LTE/Ij8iOiImIikraX1yZXR1cm4gZX12YXIgX2U9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmhhbmRsZXJzPVtdfXVzZShBLHQscil7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOkEscmVqZWN0ZWQ6dCxzeW5jaHJvbm91czpyP3Iuc3luY2hyb25vdXM6ITEscnVuV2hlbjpyP3IucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX1lamVjdChBKXt0aGlzLmhhbmRsZXJzW0FdJiYodGhpcy5oYW5kbGVyc1tBXT1udWxsKX1jbGVhcigpe3RoaXMuaGFuZGxlcnMmJih0aGlzLmhhbmRsZXJzPVtdKX1mb3JFYWNoKEEpe2MuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLGZ1bmN0aW9uKHIpe3IhPT1udWxsJiZBKHIpfSl9fSxaZT1fZTt2YXIgUmU9e3NpbGVudEpTT05QYXJzaW5nOiEwLGZvcmNlZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9O3ZhciB4dD10eXBlb2YgVVJMU2VhcmNoUGFyYW1zPCJ1Ij9VUkxTZWFyY2hQYXJhbXM6d2U7dmFyIEd0PXR5cGVvZiBGb3JtRGF0YTwidSI/Rm9ybURhdGE6bnVsbDt2YXIgVHQ9dHlwZW9mIEJsb2I8InUiP0Jsb2I6bnVsbDt2YXIgSnQ9e2lzQnJvd3NlcjohMCxjbGFzc2VzOntVUkxTZWFyY2hQYXJhbXM6eHQsRm9ybURhdGE6R3QsQmxvYjpUdH0scHJvdG9jb2xzOlsiaHR0cCIsImh0dHBzIiwiZmlsZSIsImJsb2IiLCJ1cmwiLCJkYXRhIl19O3ZhciBYZT17fTt3cihYZSx7aGFzQnJvd3NlckVudjooKT0+THQsaGFzU3RhbmRhcmRCcm93c2VyRW52OigpPT5GaSxoYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnY6KCk9PlVpfSk7dmFyIEx0PXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2YgZG9jdW1lbnQ8InUiLEZpPShlPT5MdCYmWyJSZWFjdE5hdGl2ZSIsIk5hdGl2ZVNjcmlwdCIsIk5TIl0uaW5kZXhPZihlKTwwKSh0eXBlb2YgbmF2aWdhdG9yPCJ1IiYmbmF2aWdhdG9yLnByb2R1Y3QpLFVpPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZTwidSImJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSYmdHlwZW9mIHNlbGYuaW1wb3J0U2NyaXB0cz09ImZ1bmN0aW9uIjt2YXIgVz17Li4uWGUsLi4uSnR9O2Z1bmN0aW9uICRlKGUsQSl7cmV0dXJuIEwoZSxuZXcgVy5jbGFzc2VzLlVSTFNlYXJjaFBhcmFtcyxPYmplY3QuYXNzaWduKHt2aXNpdG9yOmZ1bmN0aW9uKHQscixvLGkpe3JldHVybiBXLmlzTm9kZSYmYy5pc0J1ZmZlcih0KT8odGhpcy5hcHBlbmQocix0LnRvU3RyaW5nKCJiYXNlNjQiKSksITEpOmkuZGVmYXVsdFZpc2l0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sQSkpfWZ1bmN0aW9uIFNpKGUpe3JldHVybiBjLm1hdGNoQWxsKC9cdyt8XFsoXHcqKV0vZyxlKS5tYXAoQT0+QVswXT09PSJbXSI/IiI6QVsxXXx8QVswXSl9ZnVuY3Rpb24gT2koZSl7bGV0IEE9e30sdD1PYmplY3Qua2V5cyhlKSxyLG89dC5sZW5ndGgsaTtmb3Iocj0wO3I8bztyKyspaT10W3JdLEFbaV09ZVtpXTtyZXR1cm4gQX1mdW5jdGlvbiBOaShlKXtmdW5jdGlvbiBBKHQscixvLGkpe2xldCBuPXRbaSsrXSxnPU51bWJlci5pc0Zpbml0ZSgrbiksZj1pPj10Lmxlbmd0aDtyZXR1cm4gbj0hbiYmYy5pc0FycmF5KG8pP28ubGVuZ3RoOm4sZj8oYy5oYXNPd25Qcm9wKG8sbik/b1tuXT1bb1tuXSxyXTpvW25dPXIsIWcpOigoIW9bbl18fCFjLmlzT2JqZWN0KG9bbl0pKSYmKG9bbl09W10pLEEodCxyLG9bbl0saSkmJmMuaXNBcnJheShvW25dKSYmKG9bbl09T2kob1tuXSkpLCFnKX1pZihjLmlzRm9ybURhdGEoZSkmJmMuaXNGdW5jdGlvbihlLmVudHJpZXMpKXtsZXQgdD17fTtyZXR1cm4gYy5mb3JFYWNoRW50cnkoZSwocixvKT0+e0EoU2kociksbyx0LDApfSksdH1yZXR1cm4gbnVsbH12YXIga2U9Tmk7ZnVuY3Rpb24gUGkoZSxBLHQpe2lmKGMuaXNTdHJpbmcoZSkpdHJ5e3JldHVybihBfHxKU09OLnBhcnNlKShlKSxjLnRyaW0oZSl9Y2F0Y2gocil7aWYoci5uYW1lIT09IlN5bnRheEVycm9yIil0aHJvdyByfXJldHVybih0fHxKU09OLnN0cmluZ2lmeSkoZSl9dmFyIGVBPXt0cmFuc2l0aW9uYWw6UmUsYWRhcHRlcjpbInhociIsImh0dHAiXSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbihBLHQpe2xldCByPXQuZ2V0Q29udGVudFR5cGUoKXx8IiIsbz1yLmluZGV4T2YoImFwcGxpY2F0aW9uL2pzb24iKT4tMSxpPWMuaXNPYmplY3QoQSk7aWYoaSYmYy5pc0hUTUxGb3JtKEEpJiYoQT1uZXcgRm9ybURhdGEoQSkpLGMuaXNGb3JtRGF0YShBKSlyZXR1cm4gbyYmbz9KU09OLnN0cmluZ2lmeShrZShBKSk6QTtpZihjLmlzQXJyYXlCdWZmZXIoQSl8fGMuaXNCdWZmZXIoQSl8fGMuaXNTdHJlYW0oQSl8fGMuaXNGaWxlKEEpfHxjLmlzQmxvYihBKSlyZXR1cm4gQTtpZihjLmlzQXJyYXlCdWZmZXJWaWV3KEEpKXJldHVybiBBLmJ1ZmZlcjtpZihjLmlzVVJMU2VhcmNoUGFyYW1zKEEpKXJldHVybiB0LnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIsITEpLEEudG9TdHJpbmcoKTtsZXQgZztpZihpKXtpZihyLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpPi0xKXJldHVybiAkZShBLHRoaXMuZm9ybVNlcmlhbGl6ZXIpLnRvU3RyaW5nKCk7aWYoKGc9Yy5pc0ZpbGVMaXN0KEEpKXx8ci5pbmRleE9mKCJtdWx0aXBhcnQvZm9ybS1kYXRhIik+LTEpe2xldCBmPXRoaXMuZW52JiZ0aGlzLmVudi5Gb3JtRGF0YTtyZXR1cm4gTChnP3siZmlsZXNbXSI6QX06QSxmJiZuZXcgZix0aGlzLmZvcm1TZXJpYWxpemVyKX19cmV0dXJuIGl8fG8/KHQuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL2pzb24iLCExKSxQaShBKSk6QX1dLHRyYW5zZm9ybVJlc3BvbnNlOltmdW5jdGlvbihBKXtsZXQgdD10aGlzLnRyYW5zaXRpb25hbHx8ZUEudHJhbnNpdGlvbmFsLHI9dCYmdC5mb3JjZWRKU09OUGFyc2luZyxvPXRoaXMucmVzcG9uc2VUeXBlPT09Impzb24iO2lmKEEmJmMuaXNTdHJpbmcoQSkmJihyJiYhdGhpcy5yZXNwb25zZVR5cGV8fG8pKXtsZXQgbj0hKHQmJnQuc2lsZW50SlNPTlBhcnNpbmcpJiZvO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShBKX1jYXRjaChnKXtpZihuKXRocm93IGcubmFtZT09PSJTeW50YXhFcnJvciI/dy5mcm9tKGcsdy5FUlJfQkFEX1JFU1BPTlNFLHRoaXMsbnVsbCx0aGlzLnJlc3BvbnNlKTpnfX1yZXR1cm4gQX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSxtYXhCb2R5TGVuZ3RoOi0xLGVudjp7Rm9ybURhdGE6Vy5jbGFzc2VzLkZvcm1EYXRhLEJsb2I6Vy5jbGFzc2VzLkJsb2J9LHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKEEpe3JldHVybiBBPj0yMDAmJkE8MzAwfSxoZWFkZXJzOntjb21tb246e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIiwiQ29udGVudC1UeXBlIjp2b2lkIDB9fX07Yy5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCJdLGU9PntlQS5oZWFkZXJzW2VdPXt9fSk7dmFyIFY9ZUE7dmFyIHhpPWMudG9PYmplY3RTZXQoWyJhZ2UiLCJhdXRob3JpemF0aW9uIiwiY29udGVudC1sZW5ndGgiLCJjb250ZW50LXR5cGUiLCJldGFnIiwiZXhwaXJlcyIsImZyb20iLCJob3N0IiwiaWYtbW9kaWZpZWQtc2luY2UiLCJpZi11bm1vZGlmaWVkLXNpbmNlIiwibGFzdC1tb2RpZmllZCIsImxvY2F0aW9uIiwibWF4LWZvcndhcmRzIiwicHJveHktYXV0aG9yaXphdGlvbiIsInJlZmVyZXIiLCJyZXRyeS1hZnRlciIsInVzZXItYWdlbnQiXSksTXQ9ZT0+e2xldCBBPXt9LHQscixvO3JldHVybiBlJiZlLnNwbGl0KGAKYCkuZm9yRWFjaChmdW5jdGlvbihuKXtvPW4uaW5kZXhPZigiOiIpLHQ9bi5zdWJzdHJpbmcoMCxvKS50cmltKCkudG9Mb3dlckNhc2UoKSxyPW4uc3Vic3RyaW5nKG8rMSkudHJpbSgpLCEoIXR8fEFbdF0mJnhpW3RdKSYmKHQ9PT0ic2V0LWNvb2tpZSI/QVt0XT9BW3RdLnB1c2gocik6QVt0XT1bcl06QVt0XT1BW3RdP0FbdF0rIiwgIityOnIpfSksQX07dmFyIEh0PVN5bWJvbCgiaW50ZXJuYWxzIik7ZnVuY3Rpb24gbmUoZSl7cmV0dXJuIGUmJlN0cmluZyhlKS50cmltKCkudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBiZShlKXtyZXR1cm4gZT09PSExfHxlPT1udWxsP2U6Yy5pc0FycmF5KGUpP2UubWFwKGJlKTpTdHJpbmcoZSl9ZnVuY3Rpb24gR2koZSl7bGV0IEE9T2JqZWN0LmNyZWF0ZShudWxsKSx0PS8oW15ccyw7PV0rKVxzKig/Oj1ccyooW14sO10rKSk/L2cscjtmb3IoO3I9dC5leGVjKGUpOylBW3JbMV1dPXJbMl07cmV0dXJuIEF9dmFyIFRpPWU9Pi9eWy1fYS16QS1aMC05XmB8fiwhIyQlJicqKy5dKyQvLnRlc3QoZS50cmltKCkpO2Z1bmN0aW9uIEFBKGUsQSx0LHIsbyl7aWYoYy5pc0Z1bmN0aW9uKHIpKXJldHVybiByLmNhbGwodGhpcyxBLHQpO2lmKG8mJihBPXQpLCEhYy5pc1N0cmluZyhBKSl7aWYoYy5pc1N0cmluZyhyKSlyZXR1cm4gQS5pbmRleE9mKHIpIT09LTE7aWYoYy5pc1JlZ0V4cChyKSlyZXR1cm4gci50ZXN0KEEpfX1mdW5jdGlvbiBKaShlKXtyZXR1cm4gZS50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8oW2EtelxkXSkoXHcqKS9nLChBLHQscik9PnQudG9VcHBlckNhc2UoKStyKX1mdW5jdGlvbiBMaShlLEEpe2xldCB0PWMudG9DYW1lbENhc2UoIiAiK0EpO1siZ2V0Iiwic2V0IiwiaGFzIl0uZm9yRWFjaChyPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscit0LHt2YWx1ZTpmdW5jdGlvbihvLGksbil7cmV0dXJuIHRoaXNbcl0uY2FsbCh0aGlzLEEsbyxpLG4pfSxjb25maWd1cmFibGU6ITB9KX0pfXZhciBfPWNsYXNze2NvbnN0cnVjdG9yKEEpe0EmJnRoaXMuc2V0KEEpfXNldChBLHQscil7bGV0IG89dGhpcztmdW5jdGlvbiBpKGcsZixtKXtsZXQgYT1uZShmKTtpZighYSl0aHJvdyBuZXcgRXJyb3IoImhlYWRlciBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nIik7bGV0IHM9Yy5maW5kS2V5KG8sYSk7KCFzfHxvW3NdPT09dm9pZCAwfHxtPT09ITB8fG09PT12b2lkIDAmJm9bc10hPT0hMSkmJihvW3N8fGZdPWJlKGcpKX1sZXQgbj0oZyxmKT0+Yy5mb3JFYWNoKGcsKG0sYSk9PmkobSxhLGYpKTtyZXR1cm4gYy5pc1BsYWluT2JqZWN0KEEpfHxBIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9uKEEsdCk6Yy5pc1N0cmluZyhBKSYmKEE9QS50cmltKCkpJiYhVGkoQSk/bihNdChBKSx0KTpBIT1udWxsJiZpKHQsQSxyKSx0aGlzfWdldChBLHQpe2lmKEE9bmUoQSksQSl7bGV0IHI9Yy5maW5kS2V5KHRoaXMsQSk7aWYocil7bGV0IG89dGhpc1tyXTtpZighdClyZXR1cm4gbztpZih0PT09ITApcmV0dXJuIEdpKG8pO2lmKGMuaXNGdW5jdGlvbih0KSlyZXR1cm4gdC5jYWxsKHRoaXMsbyxyKTtpZihjLmlzUmVnRXhwKHQpKXJldHVybiB0LmV4ZWMobyk7dGhyb3cgbmV3IFR5cGVFcnJvcigicGFyc2VyIG11c3QgYmUgYm9vbGVhbnxyZWdleHB8ZnVuY3Rpb24iKX19fWhhcyhBLHQpe2lmKEE9bmUoQSksQSl7bGV0IHI9Yy5maW5kS2V5KHRoaXMsQSk7cmV0dXJuISEociYmdGhpc1tyXSE9PXZvaWQgMCYmKCF0fHxBQSh0aGlzLHRoaXNbcl0scix0KSkpfXJldHVybiExfWRlbGV0ZShBLHQpe2xldCByPXRoaXMsbz0hMTtmdW5jdGlvbiBpKG4pe2lmKG49bmUobiksbil7bGV0IGc9Yy5maW5kS2V5KHIsbik7ZyYmKCF0fHxBQShyLHJbZ10sZyx0KSkmJihkZWxldGUgcltnXSxvPSEwKX19cmV0dXJuIGMuaXNBcnJheShBKT9BLmZvckVhY2goaSk6aShBKSxvfWNsZWFyKEEpe2xldCB0PU9iamVjdC5rZXlzKHRoaXMpLHI9dC5sZW5ndGgsbz0hMTtmb3IoO3ItLTspe2xldCBpPXRbcl07KCFBfHxBQSh0aGlzLHRoaXNbaV0saSxBLCEwKSkmJihkZWxldGUgdGhpc1tpXSxvPSEwKX1yZXR1cm4gb31ub3JtYWxpemUoQSl7bGV0IHQ9dGhpcyxyPXt9O3JldHVybiBjLmZvckVhY2godGhpcywobyxpKT0+e2xldCBuPWMuZmluZEtleShyLGkpO2lmKG4pe3Rbbl09YmUobyksZGVsZXRlIHRbaV07cmV0dXJufWxldCBnPUE/SmkoaSk6U3RyaW5nKGkpLnRyaW0oKTtnIT09aSYmZGVsZXRlIHRbaV0sdFtnXT1iZShvKSxyW2ddPSEwfSksdGhpc31jb25jYXQoLi4uQSl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY29uY2F0KHRoaXMsLi4uQSl9dG9KU09OKEEpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGMuZm9yRWFjaCh0aGlzLChyLG8pPT57ciE9bnVsbCYmciE9PSExJiYodFtvXT1BJiZjLmlzQXJyYXkocik/ci5qb2luKCIsICIpOnIpfSksdH1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKVtTeW1ib2wuaXRlcmF0b3JdKCl9dG9TdHJpbmcoKXtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSkubWFwKChbQSx0XSk9PkErIjogIit0KS5qb2luKGAKYCl9Z2V0W1N5bWJvbC50b1N0cmluZ1RhZ10oKXtyZXR1cm4iQXhpb3NIZWFkZXJzIn1zdGF0aWMgZnJvbShBKXtyZXR1cm4gQSBpbnN0YW5jZW9mIHRoaXM/QTpuZXcgdGhpcyhBKX1zdGF0aWMgY29uY2F0KEEsLi4udCl7bGV0IHI9bmV3IHRoaXMoQSk7cmV0dXJuIHQuZm9yRWFjaChvPT5yLnNldChvKSkscn1zdGF0aWMgYWNjZXNzb3IoQSl7bGV0IHI9KHRoaXNbSHRdPXRoaXNbSHRdPXthY2Nlc3NvcnM6e319KS5hY2Nlc3NvcnMsbz10aGlzLnByb3RvdHlwZTtmdW5jdGlvbiBpKG4pe2xldCBnPW5lKG4pO3JbZ118fChMaShvLG4pLHJbZ109ITApfXJldHVybiBjLmlzQXJyYXkoQSk/QS5mb3JFYWNoKGkpOmkoQSksdGhpc319O18uYWNjZXNzb3IoWyJDb250ZW50LVR5cGUiLCJDb250ZW50LUxlbmd0aCIsIkFjY2VwdCIsIkFjY2VwdC1FbmNvZGluZyIsIlVzZXItQWdlbnQiLCJBdXRob3JpemF0aW9uIl0pO2MucmVkdWNlRGVzY3JpcHRvcnMoXy5wcm90b3R5cGUsKHt2YWx1ZTplfSxBKT0+e2xldCB0PUFbMF0udG9VcHBlckNhc2UoKStBLnNsaWNlKDEpO3JldHVybntnZXQ6KCk9PmUsc2V0KHIpe3RoaXNbdF09cn19fSk7Yy5mcmVlemVNZXRob2RzKF8pO3ZhciBGPV87ZnVuY3Rpb24gc2UoZSxBKXtsZXQgdD10aGlzfHxWLHI9QXx8dCxvPUYuZnJvbShyLmhlYWRlcnMpLGk9ci5kYXRhO3JldHVybiBjLmZvckVhY2goZSxmdW5jdGlvbihnKXtpPWcuY2FsbCh0LGksby5ub3JtYWxpemUoKSxBP0Euc3RhdHVzOnZvaWQgMCl9KSxvLm5vcm1hbGl6ZSgpLGl9ZnVuY3Rpb24gSWUoZSl7cmV0dXJuISEoZSYmZS5fX0NBTkNFTF9fKX1mdW5jdGlvbiBZdChlLEEsdCl7dy5jYWxsKHRoaXMsZT8/ImNhbmNlbGVkIix3LkVSUl9DQU5DRUxFRCxBLHQpLHRoaXMubmFtZT0iQ2FuY2VsZWRFcnJvciJ9Yy5pbmhlcml0cyhZdCx3LHtfX0NBTkNFTF9fOiEwfSk7dmFyIE09WXQ7ZnVuY3Rpb24gdEEoZSxBLHQpe2xldCByPXQuY29uZmlnLnZhbGlkYXRlU3RhdHVzOyF0LnN0YXR1c3x8IXJ8fHIodC5zdGF0dXMpP2UodCk6QShuZXcgdygiUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK3Quc3RhdHVzLFt3LkVSUl9CQURfUkVRVUVTVCx3LkVSUl9CQURfUkVTUE9OU0VdW01hdGguZmxvb3IodC5zdGF0dXMvMTAwKS00XSx0LmNvbmZpZyx0LnJlcXVlc3QsdCkpfXZhciBxdD1XLmhhc1N0YW5kYXJkQnJvd3NlckVudj97d3JpdGUoZSxBLHQscixvLGkpe2xldCBuPVtlKyI9IitlbmNvZGVVUklDb21wb25lbnQoQSldO2MuaXNOdW1iZXIodCkmJm4ucHVzaCgiZXhwaXJlcz0iK25ldyBEYXRlKHQpLnRvR01UU3RyaW5nKCkpLGMuaXNTdHJpbmcocikmJm4ucHVzaCgicGF0aD0iK3IpLGMuaXNTdHJpbmcobykmJm4ucHVzaCgiZG9tYWluPSIrbyksaT09PSEwJiZuLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1uLmpvaW4oIjsgIil9LHJlYWQoZSl7bGV0IEE9ZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoIihefDtcXHMqKSgiK2UrIik9KFteO10qKSIpKTtyZXR1cm4gQT9kZWNvZGVVUklDb21wb25lbnQoQVszXSk6bnVsbH0scmVtb3ZlKGUpe3RoaXMud3JpdGUoZSwiIixEYXRlLm5vdygpLTg2NGU1KX19Ont3cml0ZSgpe30scmVhZCgpe3JldHVybiBudWxsfSxyZW1vdmUoKXt9fTtmdW5jdGlvbiByQShlKXtyZXR1cm4vXihbYS16XVthLXpcZCtcLS5dKjopP1wvXC8vaS50ZXN0KGUpfWZ1bmN0aW9uIGlBKGUsQSl7cmV0dXJuIEE/ZS5yZXBsYWNlKC9cLyskLywiIikrIi8iK0EucmVwbGFjZSgvXlwvKy8sIiIpOmV9ZnVuY3Rpb24gZ2UoZSxBKXtyZXR1cm4gZSYmIXJBKEEpP2lBKGUsQSk6QX12YXIgS3Q9Vy5oYXNTdGFuZGFyZEJyb3dzZXJFbnY/ZnVuY3Rpb24oKXtsZXQgQT0vKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpLHI7ZnVuY3Rpb24gbyhpKXtsZXQgbj1pO3JldHVybiBBJiYodC5zZXRBdHRyaWJ1dGUoImhyZWYiLG4pLG49dC5ocmVmKSx0LnNldEF0dHJpYnV0ZSgiaHJlZiIsbikse2hyZWY6dC5ocmVmLHByb3RvY29sOnQucHJvdG9jb2w/dC5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6dC5ob3N0LHNlYXJjaDp0LnNlYXJjaD90LnNlYXJjaC5yZXBsYWNlKC9eXD8vLCIiKToiIixoYXNoOnQuaGFzaD90Lmhhc2gucmVwbGFjZSgvXiMvLCIiKToiIixob3N0bmFtZTp0Lmhvc3RuYW1lLHBvcnQ6dC5wb3J0LHBhdGhuYW1lOnQucGF0aG5hbWUuY2hhckF0KDApPT09Ii8iP3QucGF0aG5hbWU6Ii8iK3QucGF0aG5hbWV9fXJldHVybiByPW8od2luZG93LmxvY2F0aW9uLmhyZWYpLGZ1bmN0aW9uKG4pe2xldCBnPWMuaXNTdHJpbmcobik/byhuKTpuO3JldHVybiBnLnByb3RvY29sPT09ci5wcm90b2NvbCYmZy5ob3N0PT09ci5ob3N0fX0oKTpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiEwfX0oKTtmdW5jdGlvbiBvQShlKXtsZXQgQT0vXihbLStcd117MSwyNX0pKDo/XC9cL3w6KS8uZXhlYyhlKTtyZXR1cm4gQSYmQVsxXXx8IiJ9ZnVuY3Rpb24gTWkoZSxBKXtlPWV8fDEwO2xldCB0PW5ldyBBcnJheShlKSxyPW5ldyBBcnJheShlKSxvPTAsaT0wLG47cmV0dXJuIEE9QSE9PXZvaWQgMD9BOjFlMyxmdW5jdGlvbihmKXtsZXQgbT1EYXRlLm5vdygpLGE9cltpXTtufHwobj1tKSx0W29dPWYscltvXT1tO2xldCBzPWksdT0wO2Zvcig7cyE9PW87KXUrPXRbcysrXSxzPXMlZTtpZihvPShvKzEpJWUsbz09PWkmJihpPShpKzEpJWUpLG0tbjxBKXJldHVybjtsZXQgST1hJiZtLWE7cmV0dXJuIEk/TWF0aC5yb3VuZCh1KjFlMy9JKTp2b2lkIDB9fXZhciBqdD1NaTtmdW5jdGlvbiB2dChlLEEpe2xldCB0PTAscj1qdCg1MCwyNTApO3JldHVybiBvPT57bGV0IGk9by5sb2FkZWQsbj1vLmxlbmd0aENvbXB1dGFibGU/by50b3RhbDp2b2lkIDAsZz1pLXQsZj1yKGcpLG09aTw9bjt0PWk7bGV0IGE9e2xvYWRlZDppLHRvdGFsOm4scHJvZ3Jlc3M6bj9pL246dm9pZCAwLGJ5dGVzOmcscmF0ZTpmfHx2b2lkIDAsZXN0aW1hdGVkOmYmJm4mJm0/KG4taSkvZjp2b2lkIDAsZXZlbnQ6b307YVtBPyJkb3dubG9hZCI6InVwbG9hZCJdPSEwLGUoYSl9fXZhciBIaT10eXBlb2YgWE1MSHR0cFJlcXVlc3Q8InUiLHp0PUhpJiZmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odCxyKXtsZXQgbz1lLmRhdGEsaT1GLmZyb20oZS5oZWFkZXJzKS5ub3JtYWxpemUoKSx7cmVzcG9uc2VUeXBlOm4sd2l0aFhTUkZUb2tlbjpnfT1lLGY7ZnVuY3Rpb24gbSgpe2UuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUoZiksZS5zaWduYWwmJmUuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixmKX1sZXQgYTtpZihjLmlzRm9ybURhdGEobykpe2lmKFcuaGFzU3RhbmRhcmRCcm93c2VyRW52fHxXLmhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudilpLnNldENvbnRlbnRUeXBlKCExKTtlbHNlIGlmKChhPWkuZ2V0Q29udGVudFR5cGUoKSkhPT0hMSl7bGV0W0IsLi4uUV09YT9hLnNwbGl0KCI7IikubWFwKFI9PlIudHJpbSgpKS5maWx0ZXIoQm9vbGVhbik6W107aS5zZXRDb250ZW50VHlwZShbQnx8Im11bHRpcGFydC9mb3JtLWRhdGEiLC4uLlFdLmpvaW4oIjsgIikpfX1sZXQgcz1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoZS5hdXRoKXtsZXQgQj1lLmF1dGgudXNlcm5hbWV8fCIiLFE9ZS5hdXRoLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChlLmF1dGgucGFzc3dvcmQpKToiIjtpLnNldCgiQXV0aG9yaXphdGlvbiIsIkJhc2ljICIrYnRvYShCKyI6IitRKSl9bGV0IHU9Z2UoZS5iYXNlVVJMLGUudXJsKTtzLm9wZW4oZS5tZXRob2QudG9VcHBlckNhc2UoKSxhZSh1LGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplciksITApLHMudGltZW91dD1lLnRpbWVvdXQ7ZnVuY3Rpb24gSSgpe2lmKCFzKXJldHVybjtsZXQgQj1GLmZyb20oImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiBzJiZzLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSxSPXtkYXRhOiFufHxuPT09InRleHQifHxuPT09Impzb24iP3MucmVzcG9uc2VUZXh0OnMucmVzcG9uc2Usc3RhdHVzOnMuc3RhdHVzLHN0YXR1c1RleHQ6cy5zdGF0dXNUZXh0LGhlYWRlcnM6Qixjb25maWc6ZSxyZXF1ZXN0OnN9O3RBKGZ1bmN0aW9uKFApe3QoUCksbSgpfSxmdW5jdGlvbihQKXtyKFApLG0oKX0sUikscz1udWxsfWlmKCJvbmxvYWRlbmQiaW4gcz9zLm9ubG9hZGVuZD1JOnMub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7IXN8fHMucmVhZHlTdGF0ZSE9PTR8fHMuc3RhdHVzPT09MCYmIShzLnJlc3BvbnNlVVJMJiZzLnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6Iik9PT0wKXx8c2V0VGltZW91dChJKX0scy5vbmFib3J0PWZ1bmN0aW9uKCl7cyYmKHIobmV3IHcoIlJlcXVlc3QgYWJvcnRlZCIsdy5FQ09OTkFCT1JURUQsZSxzKSkscz1udWxsKX0scy5vbmVycm9yPWZ1bmN0aW9uKCl7cihuZXcgdygiTmV0d29yayBFcnJvciIsdy5FUlJfTkVUV09SSyxlLHMpKSxzPW51bGx9LHMub250aW1lb3V0PWZ1bmN0aW9uKCl7bGV0IFE9ZS50aW1lb3V0PyJ0aW1lb3V0IG9mICIrZS50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiLFI9ZS50cmFuc2l0aW9uYWx8fFJlO2UudGltZW91dEVycm9yTWVzc2FnZSYmKFE9ZS50aW1lb3V0RXJyb3JNZXNzYWdlKSxyKG5ldyB3KFEsUi5jbGFyaWZ5VGltZW91dEVycm9yP3cuRVRJTUVET1VUOncuRUNPTk5BQk9SVEVELGUscykpLHM9bnVsbH0sVy5oYXNTdGFuZGFyZEJyb3dzZXJFbnYmJihnJiZjLmlzRnVuY3Rpb24oZykmJihnPWcoZSkpLGd8fGchPT0hMSYmS3QodSkpKXtsZXQgQj1lLnhzcmZIZWFkZXJOYW1lJiZlLnhzcmZDb29raWVOYW1lJiZxdC5yZWFkKGUueHNyZkNvb2tpZU5hbWUpO0ImJmkuc2V0KGUueHNyZkhlYWRlck5hbWUsQil9bz09PXZvaWQgMCYmaS5zZXRDb250ZW50VHlwZShudWxsKSwic2V0UmVxdWVzdEhlYWRlciJpbiBzJiZjLmZvckVhY2goaS50b0pTT04oKSxmdW5jdGlvbihRLFIpe3Muc2V0UmVxdWVzdEhlYWRlcihSLFEpfSksYy5pc1VuZGVmaW5lZChlLndpdGhDcmVkZW50aWFscyl8fChzLndpdGhDcmVkZW50aWFscz0hIWUud2l0aENyZWRlbnRpYWxzKSxuJiZuIT09Impzb24iJiYocy5yZXNwb25zZVR5cGU9ZS5yZXNwb25zZVR5cGUpLHR5cGVvZiBlLm9uRG93bmxvYWRQcm9ncmVzcz09ImZ1bmN0aW9uIiYmcy5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsdnQoZS5vbkRvd25sb2FkUHJvZ3Jlc3MsITApKSx0eXBlb2YgZS5vblVwbG9hZFByb2dyZXNzPT0iZnVuY3Rpb24iJiZzLnVwbG9hZCYmcy51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLHZ0KGUub25VcGxvYWRQcm9ncmVzcykpLChlLmNhbmNlbFRva2VufHxlLnNpZ25hbCkmJihmPUI9PntzJiYocighQnx8Qi50eXBlP25ldyBNKG51bGwsZSxzKTpCKSxzLmFib3J0KCkscz1udWxsKX0sZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUoZiksZS5zaWduYWwmJihlLnNpZ25hbC5hYm9ydGVkP2YoKTplLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsZikpKTtsZXQgcD1vQSh1KTtpZihwJiZXLnByb3RvY29scy5pbmRleE9mKHApPT09LTEpe3IobmV3IHcoIlVuc3VwcG9ydGVkIHByb3RvY29sICIrcCsiOiIsdy5FUlJfQkFEX1JFUVVFU1QsZSkpO3JldHVybn1zLnNlbmQob3x8bnVsbCl9KX07dmFyIGFBPXtodHRwOmhlLHhocjp6dH07Yy5mb3JFYWNoKGFBLChlLEEpPT57aWYoZSl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJuYW1lIix7dmFsdWU6QX0pfWNhdGNoe31PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiYWRhcHRlck5hbWUiLHt2YWx1ZTpBfSl9fSk7dmFyIFZ0PWU9PmAtICR7ZX1gLFlpPWU9PmMuaXNGdW5jdGlvbihlKXx8ZT09PW51bGx8fGU9PT0hMSxEZT17Z2V0QWRhcHRlcjplPT57ZT1jLmlzQXJyYXkoZSk/ZTpbZV07bGV0e2xlbmd0aDpBfT1lLHQscixvPXt9O2ZvcihsZXQgaT0wO2k8QTtpKyspe3Q9ZVtpXTtsZXQgbjtpZihyPXQsIVlpKHQpJiYocj1hQVsobj1TdHJpbmcodCkpLnRvTG93ZXJDYXNlKCldLHI9PT12b2lkIDApKXRocm93IG5ldyB3KGBVbmtub3duIGFkYXB0ZXIgJyR7bn0nYCk7aWYocilicmVhaztvW258fCIjIitpXT1yfWlmKCFyKXtsZXQgaT1PYmplY3QuZW50cmllcyhvKS5tYXAoKFtnLGZdKT0+YGFkYXB0ZXIgJHtnfSBgKyhmPT09ITE/ImlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGVudmlyb25tZW50IjoiaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgYnVpbGQiKSksbj1BP2kubGVuZ3RoPjE/YHNpbmNlIDoKYCtpLm1hcChWdCkuam9pbihgCmApOiIgIitWdChpWzBdKToiYXMgbm8gYWRhcHRlciBzcGVjaWZpZWQiO3Rocm93IG5ldyB3KCJUaGVyZSBpcyBubyBzdWl0YWJsZSBhZGFwdGVyIHRvIGRpc3BhdGNoIHRoZSByZXF1ZXN0ICIrbiwiRVJSX05PVF9TVVBQT1JUIil9cmV0dXJuIHJ9LGFkYXB0ZXJzOmFBfTtmdW5jdGlvbiBuQShlKXtpZihlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxlLnNpZ25hbCYmZS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgTShudWxsLGUpfWZ1bmN0aW9uIFdlKGUpe3JldHVybiBuQShlKSxlLmhlYWRlcnM9Ri5mcm9tKGUuaGVhZGVycyksZS5kYXRhPXNlLmNhbGwoZSxlLnRyYW5zZm9ybVJlcXVlc3QpLFsicG9zdCIsInB1dCIsInBhdGNoIl0uaW5kZXhPZihlLm1ldGhvZCkhPT0tMSYmZS5oZWFkZXJzLnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLCExKSxEZS5nZXRBZGFwdGVyKGUuYWRhcHRlcnx8Vi5hZGFwdGVyKShlKS50aGVuKGZ1bmN0aW9uKHIpe3JldHVybiBuQShlKSxyLmRhdGE9c2UuY2FsbChlLGUudHJhbnNmb3JtUmVzcG9uc2Usciksci5oZWFkZXJzPUYuZnJvbShyLmhlYWRlcnMpLHJ9LGZ1bmN0aW9uKHIpe3JldHVybiBJZShyKXx8KG5BKGUpLHImJnIucmVzcG9uc2UmJihyLnJlc3BvbnNlLmRhdGE9c2UuY2FsbChlLGUudHJhbnNmb3JtUmVzcG9uc2Usci5yZXNwb25zZSksci5yZXNwb25zZS5oZWFkZXJzPUYuZnJvbShyLnJlc3BvbnNlLmhlYWRlcnMpKSksUHJvbWlzZS5yZWplY3Qocil9KX12YXIgX3Q9ZT0+ZSBpbnN0YW5jZW9mIEY/ZS50b0pTT04oKTplO2Z1bmN0aW9uIFQoZSxBKXtBPUF8fHt9O2xldCB0PXt9O2Z1bmN0aW9uIHIobSxhLHMpe3JldHVybiBjLmlzUGxhaW5PYmplY3QobSkmJmMuaXNQbGFpbk9iamVjdChhKT9jLm1lcmdlLmNhbGwoe2Nhc2VsZXNzOnN9LG0sYSk6Yy5pc1BsYWluT2JqZWN0KGEpP2MubWVyZ2Uoe30sYSk6Yy5pc0FycmF5KGEpP2Euc2xpY2UoKTphfWZ1bmN0aW9uIG8obSxhLHMpe2lmKGMuaXNVbmRlZmluZWQoYSkpe2lmKCFjLmlzVW5kZWZpbmVkKG0pKXJldHVybiByKHZvaWQgMCxtLHMpfWVsc2UgcmV0dXJuIHIobSxhLHMpfWZ1bmN0aW9uIGkobSxhKXtpZighYy5pc1VuZGVmaW5lZChhKSlyZXR1cm4gcih2b2lkIDAsYSl9ZnVuY3Rpb24gbihtLGEpe2lmKGMuaXNVbmRlZmluZWQoYSkpe2lmKCFjLmlzVW5kZWZpbmVkKG0pKXJldHVybiByKHZvaWQgMCxtKX1lbHNlIHJldHVybiByKHZvaWQgMCxhKX1mdW5jdGlvbiBnKG0sYSxzKXtpZihzIGluIEEpcmV0dXJuIHIobSxhKTtpZihzIGluIGUpcmV0dXJuIHIodm9pZCAwLG0pfWxldCBmPXt1cmw6aSxtZXRob2Q6aSxkYXRhOmksYmFzZVVSTDpuLHRyYW5zZm9ybVJlcXVlc3Q6bix0cmFuc2Zvcm1SZXNwb25zZTpuLHBhcmFtc1NlcmlhbGl6ZXI6bix0aW1lb3V0Om4sdGltZW91dE1lc3NhZ2U6bix3aXRoQ3JlZGVudGlhbHM6bix3aXRoWFNSRlRva2VuOm4sYWRhcHRlcjpuLHJlc3BvbnNlVHlwZTpuLHhzcmZDb29raWVOYW1lOm4seHNyZkhlYWRlck5hbWU6bixvblVwbG9hZFByb2dyZXNzOm4sb25Eb3dubG9hZFByb2dyZXNzOm4sZGVjb21wcmVzczpuLG1heENvbnRlbnRMZW5ndGg6bixtYXhCb2R5TGVuZ3RoOm4sYmVmb3JlUmVkaXJlY3Q6bix0cmFuc3BvcnQ6bixodHRwQWdlbnQ6bixodHRwc0FnZW50Om4sY2FuY2VsVG9rZW46bixzb2NrZXRQYXRoOm4scmVzcG9uc2VFbmNvZGluZzpuLHZhbGlkYXRlU3RhdHVzOmcsaGVhZGVyczoobSxhKT0+byhfdChtKSxfdChhKSwhMCl9O3JldHVybiBjLmZvckVhY2goT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxlLEEpKSxmdW5jdGlvbihhKXtsZXQgcz1mW2FdfHxvLHU9cyhlW2FdLEFbYV0sYSk7Yy5pc1VuZGVmaW5lZCh1KSYmcyE9PWd8fCh0W2FdPXUpfSksdH12YXIgRmU9IjEuNi4yIjt2YXIgc0E9e307WyJvYmplY3QiLCJib29sZWFuIiwibnVtYmVyIiwiZnVuY3Rpb24iLCJzdHJpbmciLCJzeW1ib2wiXS5mb3JFYWNoKChlLEEpPT57c0FbZV09ZnVuY3Rpb24ocil7cmV0dXJuIHR5cGVvZiByPT09ZXx8ImEiKyhBPDE/Im4gIjoiICIpK2V9fSk7dmFyIFp0PXt9O3NBLnRyYW5zaXRpb25hbD1mdW5jdGlvbihBLHQscil7ZnVuY3Rpb24gbyhpLG4pe3JldHVybiJbQXhpb3MgdiIrRmUrIl0gVHJhbnNpdGlvbmFsIG9wdGlvbiAnIitpKyInIituKyhyPyIuICIrcjoiIil9cmV0dXJuKGksbixnKT0+e2lmKEE9PT0hMSl0aHJvdyBuZXcgdyhvKG4sIiBoYXMgYmVlbiByZW1vdmVkIisodD8iIGluICIrdDoiIikpLHcuRVJSX0RFUFJFQ0FURUQpO3JldHVybiB0JiYhWnRbbl0mJihadFtuXT0hMCxjb25zb2xlLndhcm4obyhuLCIgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2Iit0KyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLEE/QShpLG4sZyk6ITB9fTtmdW5jdGlvbiBxaShlLEEsdCl7aWYodHlwZW9mIGUhPSJvYmplY3QiKXRocm93IG5ldyB3KCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iix3LkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtsZXQgcj1PYmplY3Qua2V5cyhlKSxvPXIubGVuZ3RoO2Zvcig7by0tID4wOyl7bGV0IGk9cltvXSxuPUFbaV07aWYobil7bGV0IGc9ZVtpXSxmPWc9PT12b2lkIDB8fG4oZyxpLGUpO2lmKGYhPT0hMCl0aHJvdyBuZXcgdygib3B0aW9uICIraSsiIG11c3QgYmUgIitmLHcuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2NvbnRpbnVlfWlmKHQhPT0hMCl0aHJvdyBuZXcgdygiVW5rbm93biBvcHRpb24gIitpLHcuRVJSX0JBRF9PUFRJT04pfX12YXIgVWU9e2Fzc2VydE9wdGlvbnM6cWksdmFsaWRhdG9yczpzQX07dmFyIEg9VWUudmFsaWRhdG9ycyxaPWNsYXNze2NvbnN0cnVjdG9yKEEpe3RoaXMuZGVmYXVsdHM9QSx0aGlzLmludGVyY2VwdG9ycz17cmVxdWVzdDpuZXcgWmUscmVzcG9uc2U6bmV3IFplfX1yZXF1ZXN0KEEsdCl7dHlwZW9mIEE9PSJzdHJpbmciPyh0PXR8fHt9LHQudXJsPUEpOnQ9QXx8e30sdD1UKHRoaXMuZGVmYXVsdHMsdCk7bGV0e3RyYW5zaXRpb25hbDpyLHBhcmFtc1NlcmlhbGl6ZXI6byxoZWFkZXJzOml9PXQ7ciE9PXZvaWQgMCYmVWUuYXNzZXJ0T3B0aW9ucyhyLHtzaWxlbnRKU09OUGFyc2luZzpILnRyYW5zaXRpb25hbChILmJvb2xlYW4pLGZvcmNlZEpTT05QYXJzaW5nOkgudHJhbnNpdGlvbmFsKEguYm9vbGVhbiksY2xhcmlmeVRpbWVvdXRFcnJvcjpILnRyYW5zaXRpb25hbChILmJvb2xlYW4pfSwhMSksbyE9bnVsbCYmKGMuaXNGdW5jdGlvbihvKT90LnBhcmFtc1NlcmlhbGl6ZXI9e3NlcmlhbGl6ZTpvfTpVZS5hc3NlcnRPcHRpb25zKG8se2VuY29kZTpILmZ1bmN0aW9uLHNlcmlhbGl6ZTpILmZ1bmN0aW9ufSwhMCkpLHQubWV0aG9kPSh0Lm1ldGhvZHx8dGhpcy5kZWZhdWx0cy5tZXRob2R8fCJnZXQiKS50b0xvd2VyQ2FzZSgpO2xldCBuPWkmJmMubWVyZ2UoaS5jb21tb24saVt0Lm1ldGhvZF0pO2kmJmMuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSxwPT57ZGVsZXRlIGlbcF19KSx0LmhlYWRlcnM9Ri5jb25jYXQobixpKTtsZXQgZz1bXSxmPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbihCKXt0eXBlb2YgQi5ydW5XaGVuPT0iZnVuY3Rpb24iJiZCLnJ1bldoZW4odCk9PT0hMXx8KGY9ZiYmQi5zeW5jaHJvbm91cyxnLnVuc2hpZnQoQi5mdWxmaWxsZWQsQi5yZWplY3RlZCkpfSk7bGV0IG09W107dGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihCKXttLnB1c2goQi5mdWxmaWxsZWQsQi5yZWplY3RlZCl9KTtsZXQgYSxzPTAsdTtpZighZil7bGV0IHA9W1dlLmJpbmQodGhpcyksdm9pZCAwXTtmb3IocC51bnNoaWZ0LmFwcGx5KHAsZykscC5wdXNoLmFwcGx5KHAsbSksdT1wLmxlbmd0aCxhPVByb21pc2UucmVzb2x2ZSh0KTtzPHU7KWE9YS50aGVuKHBbcysrXSxwW3MrK10pO3JldHVybiBhfXU9Zy5sZW5ndGg7bGV0IEk9dDtmb3Iocz0wO3M8dTspe2xldCBwPWdbcysrXSxCPWdbcysrXTt0cnl7ST1wKEkpfWNhdGNoKFEpe0IuY2FsbCh0aGlzLFEpO2JyZWFrfX10cnl7YT1XZS5jYWxsKHRoaXMsSSl9Y2F0Y2gocCl7cmV0dXJuIFByb21pc2UucmVqZWN0KHApfWZvcihzPTAsdT1tLmxlbmd0aDtzPHU7KWE9YS50aGVuKG1bcysrXSxtW3MrK10pO3JldHVybiBhfWdldFVyaShBKXtBPVQodGhpcy5kZWZhdWx0cyxBKTtsZXQgdD1nZShBLmJhc2VVUkwsQS51cmwpO3JldHVybiBhZSh0LEEucGFyYW1zLEEucGFyYW1zU2VyaWFsaXplcil9fTtjLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyJdLGZ1bmN0aW9uKEEpe1oucHJvdG90eXBlW0FdPWZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMucmVxdWVzdChUKHJ8fHt9LHttZXRob2Q6QSx1cmw6dCxkYXRhOihyfHx7fSkuZGF0YX0pKX19KTtjLmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSxmdW5jdGlvbihBKXtmdW5jdGlvbiB0KHIpe3JldHVybiBmdW5jdGlvbihpLG4sZyl7cmV0dXJuIHRoaXMucmVxdWVzdChUKGd8fHt9LHttZXRob2Q6QSxoZWFkZXJzOnI/eyJDb250ZW50LVR5cGUiOiJtdWx0aXBhcnQvZm9ybS1kYXRhIn06e30sdXJsOmksZGF0YTpufSkpfX1aLnByb3RvdHlwZVtBXT10KCksWi5wcm90b3R5cGVbQSsiRm9ybSJdPXQoITApfSk7dmFyIGxlPVo7dmFyIElBPWNsYXNzIGV7Y29uc3RydWN0b3IoQSl7aWYodHlwZW9mIEEhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO2xldCB0O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihpKXt0PWl9KTtsZXQgcj10aGlzO3RoaXMucHJvbWlzZS50aGVuKG89PntpZighci5fbGlzdGVuZXJzKXJldHVybjtsZXQgaT1yLl9saXN0ZW5lcnMubGVuZ3RoO2Zvcig7aS0tID4wOylyLl9saXN0ZW5lcnNbaV0obyk7ci5fbGlzdGVuZXJzPW51bGx9KSx0aGlzLnByb21pc2UudGhlbj1vPT57bGV0IGksbj1uZXcgUHJvbWlzZShnPT57ci5zdWJzY3JpYmUoZyksaT1nfSkudGhlbihvKTtyZXR1cm4gbi5jYW5jZWw9ZnVuY3Rpb24oKXtyLnVuc3Vic2NyaWJlKGkpfSxufSxBKGZ1bmN0aW9uKGksbixnKXtyLnJlYXNvbnx8KHIucmVhc29uPW5ldyBNKGksbixnKSx0KHIucmVhc29uKSl9KX10aHJvd0lmUmVxdWVzdGVkKCl7aWYodGhpcy5yZWFzb24pdGhyb3cgdGhpcy5yZWFzb259c3Vic2NyaWJlKEEpe2lmKHRoaXMucmVhc29uKXtBKHRoaXMucmVhc29uKTtyZXR1cm59dGhpcy5fbGlzdGVuZXJzP3RoaXMuX2xpc3RlbmVycy5wdXNoKEEpOnRoaXMuX2xpc3RlbmVycz1bQV19dW5zdWJzY3JpYmUoQSl7aWYoIXRoaXMuX2xpc3RlbmVycylyZXR1cm47bGV0IHQ9dGhpcy5fbGlzdGVuZXJzLmluZGV4T2YoQSk7dCE9PS0xJiZ0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKHQsMSl9c3RhdGljIHNvdXJjZSgpe2xldCBBO3JldHVybnt0b2tlbjpuZXcgZShmdW5jdGlvbihvKXtBPW99KSxjYW5jZWw6QX19fSxYdD1JQTtmdW5jdGlvbiBnQShlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkobnVsbCx0KX19ZnVuY3Rpb24gbEEoZSl7cmV0dXJuIGMuaXNPYmplY3QoZSkmJmUuaXNBeGlvc0Vycm9yPT09ITB9dmFyIHBBPXtDb250aW51ZToxMDAsU3dpdGNoaW5nUHJvdG9jb2xzOjEwMSxQcm9jZXNzaW5nOjEwMixFYXJseUhpbnRzOjEwMyxPazoyMDAsQ3JlYXRlZDoyMDEsQWNjZXB0ZWQ6MjAyLE5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbjoyMDMsTm9Db250ZW50OjIwNCxSZXNldENvbnRlbnQ6MjA1LFBhcnRpYWxDb250ZW50OjIwNixNdWx0aVN0YXR1czoyMDcsQWxyZWFkeVJlcG9ydGVkOjIwOCxJbVVzZWQ6MjI2LE11bHRpcGxlQ2hvaWNlczozMDAsTW92ZWRQZXJtYW5lbnRseTozMDEsRm91bmQ6MzAyLFNlZU90aGVyOjMwMyxOb3RNb2RpZmllZDozMDQsVXNlUHJveHk6MzA1LFVudXNlZDozMDYsVGVtcG9yYXJ5UmVkaXJlY3Q6MzA3LFBlcm1hbmVudFJlZGlyZWN0OjMwOCxCYWRSZXF1ZXN0OjQwMCxVbmF1dGhvcml6ZWQ6NDAxLFBheW1lbnRSZXF1aXJlZDo0MDIsRm9yYmlkZGVuOjQwMyxOb3RGb3VuZDo0MDQsTWV0aG9kTm90QWxsb3dlZDo0MDUsTm90QWNjZXB0YWJsZTo0MDYsUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkOjQwNyxSZXF1ZXN0VGltZW91dDo0MDgsQ29uZmxpY3Q6NDA5LEdvbmU6NDEwLExlbmd0aFJlcXVpcmVkOjQxMSxQcmVjb25kaXRpb25GYWlsZWQ6NDEyLFBheWxvYWRUb29MYXJnZTo0MTMsVXJpVG9vTG9uZzo0MTQsVW5zdXBwb3J0ZWRNZWRpYVR5cGU6NDE1LFJhbmdlTm90U2F0aXNmaWFibGU6NDE2LEV4cGVjdGF0aW9uRmFpbGVkOjQxNyxJbUFUZWFwb3Q6NDE4LE1pc2RpcmVjdGVkUmVxdWVzdDo0MjEsVW5wcm9jZXNzYWJsZUVudGl0eTo0MjIsTG9ja2VkOjQyMyxGYWlsZWREZXBlbmRlbmN5OjQyNCxUb29FYXJseTo0MjUsVXBncmFkZVJlcXVpcmVkOjQyNixQcmVjb25kaXRpb25SZXF1aXJlZDo0MjgsVG9vTWFueVJlcXVlc3RzOjQyOSxSZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2U6NDMxLFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zOjQ1MSxJbnRlcm5hbFNlcnZlckVycm9yOjUwMCxOb3RJbXBsZW1lbnRlZDo1MDEsQmFkR2F0ZXdheTo1MDIsU2VydmljZVVuYXZhaWxhYmxlOjUwMyxHYXRld2F5VGltZW91dDo1MDQsSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQ6NTA1LFZhcmlhbnRBbHNvTmVnb3RpYXRlczo1MDYsSW5zdWZmaWNpZW50U3RvcmFnZTo1MDcsTG9vcERldGVjdGVkOjUwOCxOb3RFeHRlbmRlZDo1MTAsTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6NTExfTtPYmplY3QuZW50cmllcyhwQSkuZm9yRWFjaCgoW2UsQV0pPT57cEFbQV09ZX0pO3ZhciAkdD1wQTtmdW5jdGlvbiBlcihlKXtsZXQgQT1uZXcgbGUoZSksdD1yZShsZS5wcm90b3R5cGUucmVxdWVzdCxBKTtyZXR1cm4gYy5leHRlbmQodCxsZS5wcm90b3R5cGUsQSx7YWxsT3duS2V5czohMH0pLGMuZXh0ZW5kKHQsQSxudWxsLHthbGxPd25LZXlzOiEwfSksdC5jcmVhdGU9ZnVuY3Rpb24obyl7cmV0dXJuIGVyKFQoZSxvKSl9LHR9dmFyIGs9ZXIoVik7ay5BeGlvcz1sZTtrLkNhbmNlbGVkRXJyb3I9TTtrLkNhbmNlbFRva2VuPVh0O2suaXNDYW5jZWw9SWU7ay5WRVJTSU9OPUZlO2sudG9Gb3JtRGF0YT1MO2suQXhpb3NFcnJvcj13O2suQ2FuY2VsPWsuQ2FuY2VsZWRFcnJvcjtrLmFsbD1mdW5jdGlvbihBKXtyZXR1cm4gUHJvbWlzZS5hbGwoQSl9O2suc3ByZWFkPWdBO2suaXNBeGlvc0Vycm9yPWxBO2subWVyZ2VDb25maWc9VDtrLkF4aW9zSGVhZGVycz1GO2suZm9ybVRvSlNPTj1lPT5rZShjLmlzSFRNTEZvcm0oZSk/bmV3IEZvcm1EYXRhKGUpOmUpO2suZ2V0QWRhcHRlcj1EZS5nZXRBZGFwdGVyO2suSHR0cFN0YXR1c0NvZGU9JHQ7ay5kZWZhdWx0PWs7dmFyIEc9azt2YXJ7QXhpb3M6eEksQXhpb3NFcnJvcjpHSSxDYW5jZWxlZEVycm9yOlRJLGlzQ2FuY2VsOkpJLENhbmNlbFRva2VuOkxJLFZFUlNJT046TUksYWxsOkhJLENhbmNlbDpZSSxpc0F4aW9zRXJyb3I6cUksc3ByZWFkOktJLHRvRm9ybURhdGE6akksQXhpb3NIZWFkZXJzOnZJLEh0dHBTdGF0dXNDb2RlOnpJLGZvcm1Ub0pTT046VkksZ2V0QWRhcHRlcjpfSSxtZXJnZUNvbmZpZzpaSX09Rzthc3luYyBmdW5jdGlvbiBLaShlLEEpe2xldCB0PWUscj1udWxsO2lmKHQ9PW51bGwpcj1uZXcgV29ya2VyKG5ldyBVUkwoIi4vd2ViLXdvcmtlcnMvaXRrLXdhc20tcGlwZWxpbmUud29ya2VyLmpzIixpbXBvcnQubWV0YS51cmwpLHt0eXBlOiJtb2R1bGUifSk7ZWxzZSBpZih0LnN0YXJ0c1dpdGgoImh0dHAiKSl7bGV0IG89YXdhaXQgRy5nZXQodCx7cmVzcG9uc2VUeXBlOiJibG9iIixwYXJhbXM6QX0pLGk9VVJMLmNyZWF0ZU9iamVjdFVSTChvLmRhdGEpO3I9bmV3IFdvcmtlcihpLHt0eXBlOiJtb2R1bGUifSl9ZWxzZSByPW5ldyBXb3JrZXIodCx7dHlwZToibW9kdWxlIn0pO3JldHVybiByfXZhciBwZT1LaTtmdW5jdGlvbiBBcihlKXtsZXQgQT1xZShlKSx0PWU7cmV0dXJuIHQudGVybWluYXRlZD0hMSx0LndvcmtlclByb3h5PUEsdC5vcmlnaW5hbFRlcm1pbmF0ZT10LnRlcm1pbmF0ZSx0LnRlcm1pbmF0ZT0oKT0+e3QudGVybWluYXRlZD0hMCx0LndvcmtlclByb3h5W1llXSgpLHQub3JpZ2luYWxUZXJtaW5hdGUoKX0se3dvcmtlclByb3h5OkEsd29ya2VyOnR9fWFzeW5jIGZ1bmN0aW9uIGppKGUsQSx0KXtsZXQgcjtpZihlIT1udWxsKXtsZXQgaT1lO3JldHVybiBpLndvcmtlclByb3h5IT09dm9pZCAwPyhyPWkud29ya2VyUHJveHkse3dvcmtlclByb3h5OnIsd29ya2VyOml9KTpBcihlKX1sZXQgbz1hd2FpdCBwZShBLHQpO3JldHVybiBBcihvKX12YXIgdHI9amk7YXN5bmMgZnVuY3Rpb24gdmkoZSxBLHQpe2xldCByPSJ1bmtub3duIjt0eXBlb2YgZSE9InN0cmluZyI/cj1lLmhyZWY6ZS5zdGFydHNXaXRoKCJodHRwIik/cj1lOnI9dHlwZW9mIEE8InUiP2Ake0F9LyR7ZX1gOmUsci5lbmRzV2l0aCgiLmpzIikmJihyPXIuc3Vic3RyaW5nKDAsci5sZW5ndGgtMykpLHIuZW5kc1dpdGgoIi53YXNtIikmJihyPXIuc3Vic3RyaW5nKDAsci5sZW5ndGgtNSkpO2xldCBvPWAke3J9Lndhc21gLG49KGF3YWl0IEcuZ2V0KG8se3Jlc3BvbnNlVHlwZToiYXJyYXlidWZmZXIiLHBhcmFtczp0fSkpLmRhdGE7cmV0dXJuKGF3YWl0IGltcG9ydChgJHtyfS5qc2ApKS5kZWZhdWx0KHt3YXNtQmluYXJ5Om59KX12YXIgcnI9dmk7dmFyIGlyPWFzeW5jKCk9PldlYkFzc2VtYmx5LnZhbGlkYXRlKG5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDUsMSw5NiwwLDEsMTIzLDMsMiwxLDAsMTAsMTAsMSw4LDAsNjUsMCwyNTMsMTUsMjUzLDk4LDExXSkpO3ZhciBucj10eXBlb2YgZ2xvYmFsVGhpcy5TaGFyZWRBcnJheUJ1ZmZlcj09ImZ1bmN0aW9uIixvcj1uZXcgVGV4dEVuY29kZXIsYXI9bmV3IFRleHREZWNvZGVyKCJ1dGYtOCIpO2Z1bmN0aW9uIHppKGUsQSl7bGV0IHQ9e2ZsYWdzOiJyIixlbmNvZGluZzoiYmluYXJ5In0scj1lLmZzX29wZW4oQSx0LmZsYWdzKSxpPWUuZnNfc3RhdChBKS5zaXplLG49bnVsbDtucj9uPW5ldyBTaGFyZWRBcnJheUJ1ZmZlcihpKTpuPW5ldyBBcnJheUJ1ZmZlcihpKTtsZXQgZz1uZXcgVWludDhBcnJheShuKTtyZXR1cm4gZS5mc19yZWFkKHIsZywwLGksMCksZS5mc19jbG9zZShyKSxnfWZ1bmN0aW9uIHNyKGUsQSx0KXtsZXQgcj1udWxsO25yP3I9bmV3IFNoYXJlZEFycmF5QnVmZmVyKHQpOnI9bmV3IEFycmF5QnVmZmVyKHQpO2xldCBvPW5ldyBVaW50OEFycmF5KHIpLGk9bmV3IFVpbnQ4QXJyYXkoZS5IRUFQVTguYnVmZmVyLEEsdCk7cmV0dXJuIG8uc2V0KGkpLG99ZnVuY3Rpb24gRChlLEEsdCxyKXtsZXQgbz0wO3JldHVybiBBIT09bnVsbCYmKG89ZS5jY2FsbCgiaXRrX3dhc21faW5wdXRfYXJyYXlfYWxsb2MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsdCxyLEEuYnVmZmVyLmJ5dGVMZW5ndGhdKSxlLkhFQVBVOC5zZXQobmV3IFVpbnQ4QXJyYXkoQS5idWZmZXIpLG8pKSxvfWZ1bmN0aW9uIFgoZSxBLHQpe2xldCByPUpTT04uc3RyaW5naWZ5KEEpLG89ZS5jY2FsbCgiaXRrX3dhc21faW5wdXRfanNvbl9hbGxvYyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCx0LHIubGVuZ3RoXSk7ZS53cml0ZUFzY2lpVG9NZW1vcnkocixvLCExKX1mdW5jdGlvbiBVKGUsQSx0LHIpe2xldCBvPWUuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEEsdF0pLGk9ZS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQSx0XSksbj1zcihlLG8saSk7cmV0dXJuIFMocixuLmJ1ZmZlcil9ZnVuY3Rpb24gbUEoZSxBKXtsZXQgdD1lLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfanNvbl9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciJdLFswLEFdKSxyPWUuQXNjaWlUb1N0cmluZyh0KTtyZXR1cm4gSlNPTi5wYXJzZShyKX1mdW5jdGlvbiBWaShlLEEsdCxyKXtyIT1udWxsJiZyLmxlbmd0aD4wJiZyLmZvckVhY2goZnVuY3Rpb24obSxhKXtzd2l0Y2gobS50eXBlKXtjYXNlIGwuVGV4dFN0cmVhbTp7bGV0IHM9b3IuZW5jb2RlKG0uZGF0YS5kYXRhKSx1PUQoZSxzLGEsMCksST17c2l6ZTpzLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHt1fWB9O1goZSxJLGEpO2JyZWFrfWNhc2UgbC5Kc29uQ29tcGF0aWJsZTp7bGV0IHM9b3IuZW5jb2RlKEpTT04uc3RyaW5naWZ5KG0uZGF0YSkpLHU9RChlLHMsYSwwKSxJPXtzaXplOnMuYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke3V9YH07WChlLEksYSk7YnJlYWt9Y2FzZSBsLkJpbmFyeVN0cmVhbTp7bGV0IHM9bS5kYXRhLmRhdGEsdT1EKGUscyxhLDApLEk9e3NpemU6cy5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7dX1gfTtYKGUsSSxhKTticmVha31jYXNlIGwuVGV4dEZpbGU6e2UuZnNfd3JpdGVGaWxlKG0uZGF0YS5wYXRoLG0uZGF0YS5kYXRhKTticmVha31jYXNlIGwuQmluYXJ5RmlsZTp7ZS5mc193cml0ZUZpbGUobS5kYXRhLnBhdGgsbS5kYXRhLmRhdGEpO2JyZWFrfWNhc2UgbC5JbWFnZTp7bGV0IHM9bS5kYXRhLHU9RChlLHMuZGF0YSxhLDApLEk9RChlLHMuZGlyZWN0aW9uLGEsMSkscD10eXBlb2Ygcy5tZXRhZGF0YT8uZW50cmllczwidSI/SlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbShzLm1ldGFkYXRhLmVudHJpZXMoKSkpOiJbXSIsQj17aW1hZ2VUeXBlOnMuaW1hZ2VUeXBlLG5hbWU6cy5uYW1lLG9yaWdpbjpzLm9yaWdpbixzcGFjaW5nOnMuc3BhY2luZyxkaXJlY3Rpb246YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtJfWAsc2l6ZTpzLnNpemUsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke3V9YCxtZXRhZGF0YTpwfTtYKGUsQixhKTticmVha31jYXNlIGwuTWVzaDp7bGV0IHM9bS5kYXRhLHU9RChlLHMucG9pbnRzLGEsMCksST1EKGUscy5jZWxscyxhLDEpLHA9RChlLHMucG9pbnREYXRhLGEsMiksQj1EKGUscy5jZWxsRGF0YSxhLDMpLFE9e21lc2hUeXBlOnMubWVzaFR5cGUsbmFtZTpzLm5hbWUsbnVtYmVyT2ZQb2ludHM6cy5udW1iZXJPZlBvaW50cyxwb2ludHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHt1fWAsbnVtYmVyT2ZDZWxsczpzLm51bWJlck9mQ2VsbHMsY2VsbHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtJfWAsY2VsbEJ1ZmZlclNpemU6cy5jZWxsQnVmZmVyU2l6ZSxudW1iZXJPZlBvaW50UGl4ZWxzOnMubnVtYmVyT2ZQb2ludFBpeGVscyxwb2ludERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtwfWAsbnVtYmVyT2ZDZWxsUGl4ZWxzOnMubnVtYmVyT2ZDZWxsUGl4ZWxzLGNlbGxEYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Qn1gfTtYKGUsUSxhKTticmVha31jYXNlIGwuUG9seURhdGE6e2xldCBzPW0uZGF0YSx1PUQoZSxzLnBvaW50cyxhLDApLEk9RChlLHMudmVydGljZXMsYSwxKSxwPUQoZSxzLmxpbmVzLGEsMiksQj1EKGUscy5wb2x5Z29ucyxhLDMpLFE9RChlLHMudHJpYW5nbGVTdHJpcHMsYSw0KSxSPUQoZSxzLnBvaW50RGF0YSxhLDUpLE49RChlLHMucG9pbnREYXRhLGEsNiksUD17cG9seURhdGFUeXBlOnMucG9seURhdGFUeXBlLG5hbWU6cy5uYW1lLG51bWJlck9mUG9pbnRzOnMubnVtYmVyT2ZQb2ludHMscG9pbnRzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7dX1gLHZlcnRpY2VzQnVmZmVyU2l6ZTpzLnZlcnRpY2VzQnVmZmVyU2l6ZSx2ZXJ0aWNlczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0l9YCxsaW5lc0J1ZmZlclNpemU6cy5saW5lc0J1ZmZlclNpemUsbGluZXM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtwfWAscG9seWdvbnNCdWZmZXJTaXplOnMucG9seWdvbnNCdWZmZXJTaXplLHBvbHlnb25zOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Qn1gLHRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZTpzLnRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZSx0cmlhbmdsZVN0cmlwczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1F9YCxudW1iZXJPZlBvaW50UGl4ZWxzOnMubnVtYmVyT2ZQb2ludFBpeGVscyxwb2ludERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtSfWAsbnVtYmVyT2ZDZWxsUGl4ZWxzOnMubnVtYmVyT2ZDZWxsUGl4ZWxzLGNlbGxEYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Tn1gfTtYKGUsUCxhKTticmVha31kZWZhdWx0OnRocm93IEVycm9yKCJVbnN1cHBvcnRlZCBpbnB1dCBJbnRlcmZhY2VUeXBlIil9fSksZS5yZXNldE1vZHVsZVN0ZG91dCgpLGUucmVzZXRNb2R1bGVTdGRlcnIoKTtsZXQgbz1lLnN0YWNrU2F2ZSgpLGk9MDt0cnl7aT1lLmNhbGxNYWluKEEuc2xpY2UoKSl9Y2F0Y2gobSl7dGhyb3cgdHlwZW9mIG09PSJudW1iZXIiJiYoY29uc29sZS5sb2coIkV4Y2VwdGlvbiB3aGlsZSBydW5uaW5nIHBpcGVsaW5lOiIpLGNvbnNvbGUubG9nKCJzdGRvdXQ6IixlLmdldE1vZHVsZVN0ZG91dCgpKSxjb25zb2xlLmVycm9yKCJzdGRlcnI6IixlLmdldE1vZHVsZVN0ZGVycigpKSx0eXBlb2YgZS5nZXRFeGNlcHRpb25NZXNzYWdlPCJ1Ij9jb25zb2xlLmVycm9yKCJleGNlcHRpb246IixlLmdldEV4Y2VwdGlvbk1lc3NhZ2UobSkpOmNvbnNvbGUuZXJyb3IoIkJ1aWxkIG1vZHVsZSBpbiBEZWJ1ZyBtb2RlIGZvciBleGNlcHRpb24gbWVzc2FnZSBpbmZvcm1hdGlvbi4iKSksbX1maW5hbGx5e2Uuc3RhY2tSZXN0b3JlKG8pfWxldCBuPWUuZ2V0TW9kdWxlU3Rkb3V0KCksZz1lLmdldE1vZHVsZVN0ZGVycigpLGY9W107cmV0dXJuIHQhPW51bGwmJnQubGVuZ3RoPjAmJmk9PT0wJiZ0LmZvckVhY2goZnVuY3Rpb24obSxhKXtsZXQgcz1udWxsO3N3aXRjaChtLnR5cGUpe2Nhc2UgbC5UZXh0U3RyZWFtOntsZXQgST1lLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxhLDBdKSxwPWUuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLGEsMF0pLEI9bmV3IFVpbnQ4QXJyYXkoZS5IRUFQVTguYnVmZmVyLEkscCk7cz17ZGF0YTphci5kZWNvZGUoQil9O2JyZWFrfWNhc2UgbC5Kc29uQ29tcGF0aWJsZTp7bGV0IEk9ZS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsYSwwXSkscD1lLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxhLDBdKSxCPW5ldyBVaW50OEFycmF5KGUuSEVBUFU4LmJ1ZmZlcixJLHApO3M9SlNPTi5wYXJzZShhci5kZWNvZGUoQikpO2JyZWFrfWNhc2UgbC5CaW5hcnlTdHJlYW06e2xldCBJPWUuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLGEsMF0pLHA9ZS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsYSwwXSk7cz17ZGF0YTpzcihlLEkscCl9O2JyZWFrfWNhc2UgbC5UZXh0RmlsZTp7cz17cGF0aDptLmRhdGEucGF0aCxkYXRhOmUuZnNfcmVhZEZpbGUobS5kYXRhLnBhdGgse2VuY29kaW5nOiJ1dGY4In0pfTticmVha31jYXNlIGwuQmluYXJ5RmlsZTp7cz17cGF0aDptLmRhdGEucGF0aCxkYXRhOnppKGUsbS5kYXRhLnBhdGgpfTticmVha31jYXNlIGwuSW1hZ2U6e2xldCBJPW1BKGUsYSk7SS5kYXRhPVUoZSxhLDAsSS5pbWFnZVR5cGUuY29tcG9uZW50VHlwZSksSS5kaXJlY3Rpb249VShlLGEsMSxiLkZsb2F0NjQpLEkubWV0YWRhdGE9bmV3IE1hcChJLm1ldGFkYXRhKSxzPUk7YnJlYWt9Y2FzZSBsLk1lc2g6e2xldCBJPW1BKGUsYSk7SS5udW1iZXJPZlBvaW50cz4wP0kucG9pbnRzPVUoZSxhLDAsSS5tZXNoVHlwZS5wb2ludENvbXBvbmVudFR5cGUpOkkucG9pbnRzPVMoSS5tZXNoVHlwZS5wb2ludENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxJLm51bWJlck9mQ2VsbHM+MD9JLmNlbGxzPVUoZSxhLDEsSS5tZXNoVHlwZS5jZWxsQ29tcG9uZW50VHlwZSk6SS5jZWxscz1TKEkubWVzaFR5cGUuY2VsbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxJLm51bWJlck9mUG9pbnRQaXhlbHM+MD9JLnBvaW50RGF0YT1VKGUsYSwyLEkubWVzaFR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUpOkkucG9pbnREYXRhPVMoSS5tZXNoVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEkubnVtYmVyT2ZDZWxsUGl4ZWxzPjA/SS5jZWxsRGF0YT1VKGUsYSwzLEkubWVzaFR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSk6SS5jZWxsRGF0YT1TKEkubWVzaFR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLHM9STticmVha31jYXNlIGwuUG9seURhdGE6e2xldCBJPW1BKGUsYSk7SS5udW1iZXJPZlBvaW50cz4wP0kucG9pbnRzPVUoZSxhLDAsYi5GbG9hdDMyKTpJLnBvaW50cz1uZXcgRmxvYXQzMkFycmF5LEkudmVydGljZXNCdWZmZXJTaXplPjA/SS52ZXJ0aWNlcz1VKGUsYSwxLGguVUludDMyKTpJLnZlcnRpY2VzPW5ldyBVaW50MzJBcnJheSxJLmxpbmVzQnVmZmVyU2l6ZT4wP0kubGluZXM9VShlLGEsMixoLlVJbnQzMik6SS5saW5lcz1uZXcgVWludDMyQXJyYXksSS5wb2x5Z29uc0J1ZmZlclNpemU+MD9JLnBvbHlnb25zPVUoZSxhLDMsaC5VSW50MzIpOkkucG9seWdvbnM9bmV3IFVpbnQzMkFycmF5LEkudHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplPjA/SS50cmlhbmdsZVN0cmlwcz1VKGUsYSw0LGguVUludDMyKTpJLnRyaWFuZ2xlU3RyaXBzPW5ldyBVaW50MzJBcnJheSxJLm51bWJlck9mUG9pbnRQaXhlbHM+MD9JLnBvaW50RGF0YT1VKGUsYSw1LEkucG9seURhdGFUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlKTpJLnBvaW50RGF0YT1TKEkucG9seURhdGFUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksSS5udW1iZXJPZkNlbGxQaXhlbHM+MD9JLmNlbGxEYXRhPVUoZSxhLDYsSS5wb2x5RGF0YVR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSk6SS5jZWxsRGF0YT1TKEkucG9seURhdGFUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxzPUk7YnJlYWt9ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5zdXBwb3J0ZWQgb3V0cHV0IEludGVyZmFjZVR5cGUiKX1sZXQgdT17dHlwZTptLnR5cGUsZGF0YTpzfTtmLnB1c2godSl9KSx7cmV0dXJuVmFsdWU6aSxzdGRvdXQ6bixzdGRlcnI6ZyxvdXRwdXRzOmZ9fXZhciBJcj1WaTt2YXIgX2k9dHlwZW9mIGdsb2JhbFRoaXMuU2hhcmVkQXJyYXlCdWZmZXI8InUiO2Z1bmN0aW9uIFppKGUsQSl7aWYoZT09bnVsbClyZXR1cm5bXTtsZXQgdD1bXTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl7bGV0IG89WGkoZVtyXSxBKTtvIT09bnVsbCYmdC5wdXNoKG8pfXJldHVybiB0fWZ1bmN0aW9uIFhpKGUsQSl7aWYoZT09bnVsbClyZXR1cm4gbnVsbDtsZXQgdD1udWxsO3JldHVybiBlLmJ1ZmZlciE9PXZvaWQgMD90PWUuYnVmZmVyOmUuYnl0ZUxlbmd0aCE9PXZvaWQgMCYmKHQ9ZSksX2kmJnQgaW5zdGFuY2VvZiBTaGFyZWRBcnJheUJ1ZmZlcj9udWxsOkE/dDp0LnNsaWNlKDApfXZhciBncj1aaTtmdW5jdGlvbiAkaShlKXtyZXR1cm5bZS5kYXRhLGUuZGlyZWN0aW9uXX12YXIgbHI9JGk7ZnVuY3Rpb24gZW8oZSl7cmV0dXJuW2UucG9pbnRzLGUucG9pbnREYXRhLGUuY2VsbHMsZS5jZWxsRGF0YV19dmFyIHByPWVvO2Z1bmN0aW9uIEFvKGUpe3JldHVybltlLnBvaW50cyxlLnZlcnRpY2VzLGUubGluZXMsZS5wb2x5Z29ucyxlLnRyaWFuZ2xlU3RyaXBzLGUucG9pbnREYXRhLGUuY2VsbERhdGFdfXZhciBtcj1Bbzt2YXIgdG87ZnVuY3Rpb24gU2UoKXtyZXR1cm4gdG99dmFyIHJvO2Z1bmN0aW9uIHVyKCl7cmV0dXJuIHJvfXZhciBpbztmdW5jdGlvbiBPZSgpe3JldHVybiBpb312YXIgdUE9bmV3IE1hcDtmdW5jdGlvbiBvbygpe2xldCBlPU9lKCk7cmV0dXJuIHR5cGVvZiBlPiJ1IiYmKGU9bnVsbCksZX1mdW5jdGlvbiBmcigpe2xldCBlPVNlKCk7cmV0dXJuIHR5cGVvZiBlPiJ1IiYmKGU9bmV3IFVSTCgiL3BpcGVsaW5lcyIsZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luKS5ocmVmKSxlfWZ1bmN0aW9uIE5lKCl7bGV0IGU9dXIoKTtyZXR1cm4gdHlwZW9mIGU+InUiJiYoZT17fSksZX1hc3luYyBmdW5jdGlvbiBhbyhlLEEsdCl7bGV0IHI9ZSxvPWU7aWYodHlwZW9mIGUhPSJzdHJpbmciJiYocj1uZXcgVVJMKGUuaHJlZiksbz1yLmhyZWYpLHVBLmhhcyhvKSlyZXR1cm4gdUEuZ2V0KG8pO3tsZXQgaT1hd2FpdCBycihlLEE/LnRvU3RyaW5nKCk/P2ZyKCksdD8/TmUoKSk7cmV0dXJuIHVBLnNldChvLGkpLGl9fWFzeW5jIGZ1bmN0aW9uIG5vKGUsQSx0LHIsbyl7aWYoIWF3YWl0IGlyKCkpe2xldCBRPSJXZWJBc3NlbWJseSBTSU1EIHN1cHBvcnQgaXMgcmVxdWlyZWQgLS0gcGxlYXNlIHVwZGF0ZSB5b3VyIGJyb3dzZXIuIjt0aHJvdyBhbGVydChRKSxuZXcgRXJyb3IoUSl9bGV0IGk9bz8ud2ViV29ya2VyPz9udWxsO2lmKGk9PT0hMSl7bGV0IFE9YXdhaXQgYW8oZS50b1N0cmluZygpLG8/LnBpcGVsaW5lQmFzZVVybCxvPy5waXBlbGluZVF1ZXJ5UGFyYW1zPz9OZSgpKTtyZXR1cm4gSXIoUSxBLHQscil9bGV0IG49aSxnPW8/LnBpcGVsaW5lV29ya2VyVXJsPz9vbygpLGY9dHlwZW9mIGchPSJzdHJpbmciJiZ0eXBlb2YgZz8uaHJlZjwidSI/Zy5ocmVmOmcse3dvcmtlclByb3h5Om0sd29ya2VyOmF9PWF3YWl0IHRyKG4sZixvPy5waXBlbGluZVF1ZXJ5UGFyYW1zPz9OZSgpKTtuPWE7bGV0IHM9W107ciE9bnVsbCYmci5sZW5ndGg+MCYmci5mb3JFYWNoKGZ1bmN0aW9uKFEpe2lmKFEudHlwZT09PWwuQmluYXJ5U3RyZWFtKXtsZXQgUj1RLmRhdGEuZGF0YTtzLnB1c2goUil9ZWxzZSBpZihRLnR5cGU9PT1sLkJpbmFyeUZpbGUpe2xldCBSPVEuZGF0YS5kYXRhO3MucHVzaChSKX1lbHNlIGlmKFEudHlwZT09PWwuSW1hZ2Upe2xldCBSPVEuZGF0YTtSLmRhdGEhPT1udWxsJiZzLnB1c2goLi4ubHIoUikpfWVsc2UgaWYoUS50eXBlPT09bC5NZXNoKXtsZXQgUj1RLmRhdGE7cy5wdXNoKC4uLnByKFIpKX1lbHNlIGlmKFEudHlwZT09PWwuUG9seURhdGEpe2xldCBSPVEuZGF0YTtzLnB1c2goLi4ubXIoUikpfX0pO2xldCB1PW8/LnBpcGVsaW5lQmFzZVVybD8/ZnIoKSxJPXR5cGVvZiB1IT0ic3RyaW5nIiYmdHlwZW9mIHU/LmhyZWY8InUiP3UuaHJlZjp1LHA9ciE9bnVsbD9LZShyLGdyKHMsbz8ubm9Db3B5KSk6bnVsbCxCPWF3YWl0IG0ucnVuUGlwZWxpbmUoZS50b1N0cmluZygpLEksQSx0LHAsbz8ucGlwZWxpbmVRdWVyeVBhcmFtcz8/TmUoKSk7cmV0dXJue3JldHVyblZhbHVlOkIucmV0dXJuVmFsdWUsc3Rkb3V0OkIuc3Rkb3V0LHN0ZGVycjpCLnN0ZGVycixvdXRwdXRzOkIub3V0cHV0cyx3ZWJXb3JrZXI6bn19dmFyIEM9bm87dmFyIHNvPW51bGw7ZnVuY3Rpb24gY3IoKXtyZXR1cm4gc299dmFyIElvPSIxLjEuMSIsQnI9SW87dmFyIGZBLGdvPWBodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL0BpdGstd2FzbS9pbWFnZS1pb0Ake0JyfS9kaXN0L3BpcGVsaW5lc2A7ZnVuY3Rpb24gSGcoZSl7ZkE9ZX1mdW5jdGlvbiBFKCl7aWYodHlwZW9mIGZBPCJ1IilyZXR1cm4gZkE7bGV0IGU9U2UoKTtyZXR1cm4gdHlwZW9mIGU8InUiP2U6Z299dmFyIGNBLGxvPW51bGw7ZnVuY3Rpb24gZHIoZSl7Y0E9ZX1mdW5jdGlvbiBkKCl7aWYodHlwZW9mIGNBPCJ1IilyZXR1cm4gY0E7bGV0IGU9T2UoKTtyZXR1cm4gdHlwZW9mIGU8InUiP2U6bG99dmFyICQ9bnVsbDthc3luYyBmdW5jdGlvbiBDcigpe2xldCBlPWQoKSxBPXR5cGVvZiBlIT0ic3RyaW5nIiYmdHlwZW9mIGU/LmhyZWY8InUiP2UuaHJlZjplOyQ9YXdhaXQgcGUoQSl9ZnVuY3Rpb24gVmcoZSl7JD1lfWFzeW5jIGZ1bmN0aW9uIHkoKXtpZigkIT09bnVsbClyZXR1cm4gJC50ZXJtaW5hdGVkJiZhd2FpdCBDcigpLCQ7bGV0IGU9Y3IoKTtyZXR1cm4gZSE9PW51bGw/ZTooYXdhaXQgQ3IoKSwkKX1hc3luYyBmdW5jdGlvbiBwbyhlKXtsZXQgdD0oYXdhaXQgRy5nZXQoYCR7ZX0vaW5kZXguanNvbmAse3Jlc3BvbnNlVHlwZToianNvbiJ9KSkuZGF0YSxyPWF3YWl0IEcuZ2V0KGAke2V9L2RhdGEvZGF0YS5yYXdgLHtyZXNwb25zZVR5cGU6ImFycmF5YnVmZmVyIn0pO3QuZGF0YT1TKHQuaW1hZ2VUeXBlLmNvbXBvbmVudFR5cGUsci5kYXRhKTtsZXQgbz1hd2FpdCBHLmdldChgJHtlfS9kYXRhL2RpcmVjdGlvbi5yYXdgLHtyZXNwb25zZVR5cGU6ImFycmF5YnVmZmVyIn0pO3JldHVybiB0LmRpcmVjdGlvbj1TKGIuRmxvYXQ2NCxvLmRhdGEpLHR9dmFyIG1vPXBvO3ZhciB1bz1uZXcgTWFwKFtbImltYWdlL2pwZWciLCJqcGVnIl0sWyJpbWFnZS9wbmciLCJwbmciXSxbImltYWdlL3RpZmYiLCJ0aWZmIl0sWyJpbWFnZS94LW1zLWJtcCIsImJtcCJdLFsiaW1hZ2UveC1ibXAiLCJibXAiXSxbImltYWdlL2JtcCIsImJtcCJdLFsiYXBwbGljYXRpb24vZGljb20iLCJnZGNtIl1dKSxlZT11bzthc3luYyBmdW5jdGlvbiBmbyhlLEE9e30pe2xldCB0PVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkltYWdlfV0scj1lO2lmKGUgaW5zdGFuY2VvZiBGaWxlKXtsZXQgUT1hd2FpdCBlLmFycmF5QnVmZmVyKCk7cj17cGF0aDplLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShRKX19bGV0IG89W3t0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLEEuaW5mb3JtYXRpb25Pbmx5JiZBLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgbT0icG5nLXJlYWQtaW1hZ2UiLGE9QT8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSx0LG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTpBPy5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRSZWFkOnBbMF0/LmRhdGEsaW1hZ2U6cFsxXT8uZGF0YX19dmFyIEJBPWZvO2FzeW5jIGZ1bmN0aW9uIGNvKGUsQSx0PXt9KXtsZXQgcj1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6QSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOmwuSW1hZ2UsZGF0YTplfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1BO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKTtsZXQgbT0icG5nLXdyaXRlLWltYWdlIixhPXQ/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGkscixvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6dD8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkV3JpdGU6cFswXT8uZGF0YSxzZXJpYWxpemVkSW1hZ2U6cFsxXT8uZGF0YX19dmFyIGRBPWNvO2FzeW5jIGZ1bmN0aW9uIEJvKGUsQT17fSl7bGV0IHQ9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuSW1hZ2V9XSxyPWU7aWYoZSBpbnN0YW5jZW9mIEZpbGUpe2xldCBRPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOmUubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KFEpfX1sZXQgbz1be3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksQS5pbmZvcm1hdGlvbk9ubHkmJkEuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBtPSJtZXRhLXJlYWQtaW1hZ2UiLGE9QT8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSx0LG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTpBPy5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRSZWFkOnBbMF0/LmRhdGEsaW1hZ2U6cFsxXT8uZGF0YX19dmFyIENBPUJvO2FzeW5jIGZ1bmN0aW9uIENvKGUsQSx0PXt9KXtsZXQgcj1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6QSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOmwuSW1hZ2UsZGF0YTplfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1BO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKTtsZXQgbT0ibWV0YS13cml0ZS1pbWFnZSIsYT10Py53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFdyaXRlOnBbMF0/LmRhdGEsc2VyaWFsaXplZEltYWdlOnBbMV0/LmRhdGF9fXZhciBFQT1Dbzthc3luYyBmdW5jdGlvbiBFbyhlLEE9e30pe2xldCB0PVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkltYWdlfV0scj1lO2lmKGUgaW5zdGFuY2VvZiBGaWxlKXtsZXQgUT1hd2FpdCBlLmFycmF5QnVmZmVyKCk7cj17cGF0aDplLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShRKX19bGV0IG89W3t0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLEEuaW5mb3JtYXRpb25Pbmx5JiZBLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgbT0idGlmZi1yZWFkLWltYWdlIixhPUE/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGksdCxvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6QT8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkUmVhZDpwWzBdPy5kYXRhLGltYWdlOnBbMV0/LmRhdGF9fXZhciB5QT1Fbzthc3luYyBmdW5jdGlvbiB5byhlLEEsdD17fSl7bGV0IHI9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOntwYXRoOkEsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpsLkltYWdlLGRhdGE6ZX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9QTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIik7bGV0IG09InRpZmYtd3JpdGUtaW1hZ2UiLGE9dD8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSxyLG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTp0Py5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRXcml0ZTpwWzBdPy5kYXRhLHNlcmlhbGl6ZWRJbWFnZTpwWzFdPy5kYXRhfX12YXIgUUE9eW87YXN5bmMgZnVuY3Rpb24gUW8oZSxBPXt9KXtsZXQgdD1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5JbWFnZX1dLHI9ZTtpZihlIGluc3RhbmNlb2YgRmlsZSl7bGV0IFE9YXdhaXQgZS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6ZS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoUSl9fWxldCBvPVt7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxuPXIucGF0aDtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj0iMSI7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxBLmluZm9ybWF0aW9uT25seSYmQS5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5Iik7bGV0IG09Im5pZnRpLXJlYWQtaW1hZ2UiLGE9QT8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSx0LG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTpBPy5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRSZWFkOnBbMF0/LmRhdGEsaW1hZ2U6cFsxXT8uZGF0YX19dmFyIGhBPVFvO2FzeW5jIGZ1bmN0aW9uIGhvKGUsQSx0PXt9KXtsZXQgcj1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6QSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOmwuSW1hZ2UsZGF0YTplfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1BO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKTtsZXQgbT0ibmlmdGktd3JpdGUtaW1hZ2UiLGE9dD8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSxyLG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTp0Py5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRXcml0ZTpwWzBdPy5kYXRhLHNlcmlhbGl6ZWRJbWFnZTpwWzFdPy5kYXRhfX12YXIgd0E9aG87YXN5bmMgZnVuY3Rpb24gd28oZSxBPXt9KXtsZXQgdD1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5JbWFnZX1dLHI9ZTtpZihlIGluc3RhbmNlb2YgRmlsZSl7bGV0IFE9YXdhaXQgZS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6ZS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoUSl9fWxldCBvPVt7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxuPXIucGF0aDtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj0iMSI7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxBLmluZm9ybWF0aW9uT25seSYmQS5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5Iik7bGV0IG09ImpwZWctcmVhZC1pbWFnZSIsYT1BPy53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHQsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OkE/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFJlYWQ6cFswXT8uZGF0YSxpbWFnZTpwWzFdPy5kYXRhfX12YXIgUkE9d287YXN5bmMgZnVuY3Rpb24gUm8oZSxBLHQ9e30pe2xldCByPVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTp7cGF0aDpBLGRhdGE6bmV3IFVpbnQ4QXJyYXl9fV0sbz1be3R5cGU6bC5JbWFnZSxkYXRhOmV9XSxpPVtdLG49IjAiO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPUE7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSx0LmluZm9ybWF0aW9uT25seSYmdC5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5IiksdC51c2VDb21wcmVzc2lvbiYmdC51c2VDb21wcmVzc2lvbiYmaS5wdXNoKCItLXVzZS1jb21wcmVzc2lvbiIpO2xldCBtPSJqcGVnLXdyaXRlLWltYWdlIixhPXQ/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGkscixvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6dD8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkV3JpdGU6cFswXT8uZGF0YSxzZXJpYWxpemVkSW1hZ2U6cFsxXT8uZGF0YX19dmFyIGtBPVJvO2FzeW5jIGZ1bmN0aW9uIGtvKGUsQT17fSl7bGV0IHQ9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuSW1hZ2V9XSxyPWU7aWYoZSBpbnN0YW5jZW9mIEZpbGUpe2xldCBRPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOmUubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KFEpfX1sZXQgbz1be3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksQS5pbmZvcm1hdGlvbk9ubHkmJkEuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBtPSJucnJkLXJlYWQtaW1hZ2UiLGE9QT8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSx0LG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTpBPy5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRSZWFkOnBbMF0/LmRhdGEsaW1hZ2U6cFsxXT8uZGF0YX19dmFyIGJBPWtvO2FzeW5jIGZ1bmN0aW9uIGJvKGUsQSx0PXt9KXtsZXQgcj1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6QSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOmwuSW1hZ2UsZGF0YTplfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1BO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKTtsZXQgbT0ibnJyZC13cml0ZS1pbWFnZSIsYT10Py53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFdyaXRlOnBbMF0/LmRhdGEsc2VyaWFsaXplZEltYWdlOnBbMV0/LmRhdGF9fXZhciBEQT1ibzthc3luYyBmdW5jdGlvbiBEbyhlLEE9e30pe2xldCB0PVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkltYWdlfV0scj1lO2lmKGUgaW5zdGFuY2VvZiBGaWxlKXtsZXQgUT1hd2FpdCBlLmFycmF5QnVmZmVyKCk7cj17cGF0aDplLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShRKX19bGV0IG89W3t0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLEEuaW5mb3JtYXRpb25Pbmx5JiZBLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgbT0idnRrLXJlYWQtaW1hZ2UiLGE9QT8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSx0LG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTpBPy5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRSZWFkOnBbMF0/LmRhdGEsaW1hZ2U6cFsxXT8uZGF0YX19dmFyIFdBPURvO2FzeW5jIGZ1bmN0aW9uIFdvKGUsQSx0PXt9KXtsZXQgcj1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6QSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOmwuSW1hZ2UsZGF0YTplfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1BO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKTtsZXQgbT0idnRrLXdyaXRlLWltYWdlIixhPXQ/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGkscixvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6dD8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkV3JpdGU6cFswXT8uZGF0YSxzZXJpYWxpemVkSW1hZ2U6cFsxXT8uZGF0YX19dmFyIEZBPVdvO2FzeW5jIGZ1bmN0aW9uIEZvKGUsQT17fSl7bGV0IHQ9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuSW1hZ2V9XSxyPWU7aWYoZSBpbnN0YW5jZW9mIEZpbGUpe2xldCBRPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOmUubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KFEpfX1sZXQgbz1be3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksQS5pbmZvcm1hdGlvbk9ubHkmJkEuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBtPSJibXAtcmVhZC1pbWFnZSIsYT1BPy53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHQsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OkE/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFJlYWQ6cFswXT8uZGF0YSxpbWFnZTpwWzFdPy5kYXRhfX12YXIgVUE9Rm87YXN5bmMgZnVuY3Rpb24gVW8oZSxBLHQ9e30pe2xldCByPVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTp7cGF0aDpBLGRhdGE6bmV3IFVpbnQ4QXJyYXl9fV0sbz1be3R5cGU6bC5JbWFnZSxkYXRhOmV9XSxpPVtdLG49IjAiO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPUE7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSx0LmluZm9ybWF0aW9uT25seSYmdC5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5IiksdC51c2VDb21wcmVzc2lvbiYmdC51c2VDb21wcmVzc2lvbiYmaS5wdXNoKCItLXVzZS1jb21wcmVzc2lvbiIpO2xldCBtPSJibXAtd3JpdGUtaW1hZ2UiLGE9dD8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSxyLG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTp0Py5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRXcml0ZTpwWzBdPy5kYXRhLHNlcmlhbGl6ZWRJbWFnZTpwWzFdPy5kYXRhfX12YXIgU0E9VW87YXN5bmMgZnVuY3Rpb24gU28oZSxBPXt9KXtsZXQgdD1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5JbWFnZX1dLHI9ZTtpZihlIGluc3RhbmNlb2YgRmlsZSl7bGV0IFE9YXdhaXQgZS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6ZS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoUSl9fWxldCBvPVt7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxuPXIucGF0aDtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj0iMSI7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxBLmluZm9ybWF0aW9uT25seSYmQS5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5Iik7bGV0IG09ImhkZjUtcmVhZC1pbWFnZSIsYT1BPy53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHQsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OkE/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFJlYWQ6cFswXT8uZGF0YSxpbWFnZTpwWzFdPy5kYXRhfX12YXIgT0E9U287YXN5bmMgZnVuY3Rpb24gT28oZSxBLHQ9e30pe2xldCByPVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTp7cGF0aDpBLGRhdGE6bmV3IFVpbnQ4QXJyYXl9fV0sbz1be3R5cGU6bC5JbWFnZSxkYXRhOmV9XSxpPVtdLG49IjAiO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPUE7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSx0LmluZm9ybWF0aW9uT25seSYmdC5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5IiksdC51c2VDb21wcmVzc2lvbiYmdC51c2VDb21wcmVzc2lvbiYmaS5wdXNoKCItLXVzZS1jb21wcmVzc2lvbiIpO2xldCBtPSJoZGY1LXdyaXRlLWltYWdlIixhPXQ/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGkscixvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6dD8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkV3JpdGU6cFswXT8uZGF0YSxzZXJpYWxpemVkSW1hZ2U6cFsxXT8uZGF0YX19dmFyIE5BPU9vO2FzeW5jIGZ1bmN0aW9uIE5vKGUsQT17fSl7bGV0IHQ9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuSW1hZ2V9XSxyPWU7aWYoZSBpbnN0YW5jZW9mIEZpbGUpe2xldCBRPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOmUubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KFEpfX1sZXQgbz1be3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksQS5pbmZvcm1hdGlvbk9ubHkmJkEuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBtPSJtaW5jLXJlYWQtaW1hZ2UiLGE9QT8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSx0LG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTpBPy5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRSZWFkOnBbMF0/LmRhdGEsaW1hZ2U6cFsxXT8uZGF0YX19dmFyIFBBPU5vO2FzeW5jIGZ1bmN0aW9uIFBvKGUsQSx0PXt9KXtsZXQgcj1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6QSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOmwuSW1hZ2UsZGF0YTplfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1BO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKTtsZXQgbT0ibWluYy13cml0ZS1pbWFnZSIsYT10Py53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFdyaXRlOnBbMF0/LmRhdGEsc2VyaWFsaXplZEltYWdlOnBbMV0/LmRhdGF9fXZhciB4QT1Qbzthc3luYyBmdW5jdGlvbiB4byhlLEE9e30pe2xldCB0PVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkltYWdlfV0scj1lO2lmKGUgaW5zdGFuY2VvZiBGaWxlKXtsZXQgUT1hd2FpdCBlLmFycmF5QnVmZmVyKCk7cj17cGF0aDplLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShRKX19bGV0IG89W3t0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLEEuaW5mb3JtYXRpb25Pbmx5JiZBLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgbT0ibXJjLXJlYWQtaW1hZ2UiLGE9QT8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSx0LG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTpBPy5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRSZWFkOnBbMF0/LmRhdGEsaW1hZ2U6cFsxXT8uZGF0YX19dmFyIEdBPXhvO2FzeW5jIGZ1bmN0aW9uIEdvKGUsQSx0PXt9KXtsZXQgcj1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6QSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOmwuSW1hZ2UsZGF0YTplfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1BO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKTtsZXQgbT0ibXJjLXdyaXRlLWltYWdlIixhPXQ/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGkscixvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6dD8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkV3JpdGU6cFswXT8uZGF0YSxzZXJpYWxpemVkSW1hZ2U6cFsxXT8uZGF0YX19dmFyIFRBPUdvO2FzeW5jIGZ1bmN0aW9uIFRvKGUsQT17fSl7bGV0IHQ9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuSW1hZ2V9XSxyPWU7aWYoZSBpbnN0YW5jZW9mIEZpbGUpe2xldCBRPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOmUubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KFEpfX1sZXQgbz1be3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksQS5pbmZvcm1hdGlvbk9ubHkmJkEuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBtPSJsc20tcmVhZC1pbWFnZSIsYT1BPy53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHQsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OkE/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFJlYWQ6cFswXT8uZGF0YSxpbWFnZTpwWzFdPy5kYXRhfX12YXIgSkE9VG87YXN5bmMgZnVuY3Rpb24gSm8oZSxBLHQ9e30pe2xldCByPVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTp7cGF0aDpBLGRhdGE6bmV3IFVpbnQ4QXJyYXl9fV0sbz1be3R5cGU6bC5JbWFnZSxkYXRhOmV9XSxpPVtdLG49IjAiO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPUE7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSx0LmluZm9ybWF0aW9uT25seSYmdC5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5IiksdC51c2VDb21wcmVzc2lvbiYmdC51c2VDb21wcmVzc2lvbiYmaS5wdXNoKCItLXVzZS1jb21wcmVzc2lvbiIpO2xldCBtPSJsc20td3JpdGUtaW1hZ2UiLGE9dD8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSxyLG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTp0Py5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRXcml0ZTpwWzBdPy5kYXRhLHNlcmlhbGl6ZWRJbWFnZTpwWzFdPy5kYXRhfX12YXIgTEE9Sm87YXN5bmMgZnVuY3Rpb24gTG8oZSxBPXt9KXtsZXQgdD1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5JbWFnZX1dLHI9ZTtpZihlIGluc3RhbmNlb2YgRmlsZSl7bGV0IFE9YXdhaXQgZS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6ZS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoUSl9fWxldCBvPVt7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxuPXIucGF0aDtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj0iMSI7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxBLmluZm9ybWF0aW9uT25seSYmQS5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5Iik7bGV0IG09Im1naC1yZWFkLWltYWdlIixhPUE/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGksdCxvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6QT8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkUmVhZDpwWzBdPy5kYXRhLGltYWdlOnBbMV0/LmRhdGF9fXZhciBNQT1Mbzthc3luYyBmdW5jdGlvbiBNbyhlLEEsdD17fSl7bGV0IHI9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOntwYXRoOkEsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpsLkltYWdlLGRhdGE6ZX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9QTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIik7bGV0IG09Im1naC13cml0ZS1pbWFnZSIsYT10Py53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFdyaXRlOnBbMF0/LmRhdGEsc2VyaWFsaXplZEltYWdlOnBbMV0/LmRhdGF9fXZhciBIQT1Nbzthc3luYyBmdW5jdGlvbiBIbyhlLEE9e30pe2xldCB0PVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkltYWdlfV0scj1lO2lmKGUgaW5zdGFuY2VvZiBGaWxlKXtsZXQgUT1hd2FpdCBlLmFycmF5QnVmZmVyKCk7cj17cGF0aDplLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShRKX19bGV0IG89W3t0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLEEuaW5mb3JtYXRpb25Pbmx5JiZBLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgbT0iYmlvLXJhZC1yZWFkLWltYWdlIixhPUE/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGksdCxvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6QT8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkUmVhZDpwWzBdPy5kYXRhLGltYWdlOnBbMV0/LmRhdGF9fXZhciBZQT1Ibzthc3luYyBmdW5jdGlvbiBZbyhlLEEsdD17fSl7bGV0IHI9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOntwYXRoOkEsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpsLkltYWdlLGRhdGE6ZX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9QTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIik7bGV0IG09ImJpby1yYWQtd3JpdGUtaW1hZ2UiLGE9dD8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSxyLG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTp0Py5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRXcml0ZTpwWzBdPy5kYXRhLHNlcmlhbGl6ZWRJbWFnZTpwWzFdPy5kYXRhfX12YXIgcUE9WW87YXN5bmMgZnVuY3Rpb24gcW8oZSxBPXt9KXtsZXQgdD1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5JbWFnZX1dLHI9ZTtpZihlIGluc3RhbmNlb2YgRmlsZSl7bGV0IFE9YXdhaXQgZS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6ZS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoUSl9fWxldCBvPVt7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxuPXIucGF0aDtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj0iMSI7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxBLmluZm9ybWF0aW9uT25seSYmQS5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5Iik7bGV0IG09ImdpcGwtcmVhZC1pbWFnZSIsYT1BPy53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHQsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OkE/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFJlYWQ6cFswXT8uZGF0YSxpbWFnZTpwWzFdPy5kYXRhfX12YXIgS0E9cW87YXN5bmMgZnVuY3Rpb24gS28oZSxBLHQ9e30pe2xldCByPVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTp7cGF0aDpBLGRhdGE6bmV3IFVpbnQ4QXJyYXl9fV0sbz1be3R5cGU6bC5JbWFnZSxkYXRhOmV9XSxpPVtdLG49IjAiO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPUE7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSx0LmluZm9ybWF0aW9uT25seSYmdC5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5IiksdC51c2VDb21wcmVzc2lvbiYmdC51c2VDb21wcmVzc2lvbiYmaS5wdXNoKCItLXVzZS1jb21wcmVzc2lvbiIpO2xldCBtPSJnaXBsLXdyaXRlLWltYWdlIixhPXQ/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGkscixvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6dD8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkV3JpdGU6cFswXT8uZGF0YSxzZXJpYWxpemVkSW1hZ2U6cFsxXT8uZGF0YX19dmFyIGpBPUtvO2FzeW5jIGZ1bmN0aW9uIGpvKGUsQT17fSl7bGV0IHQ9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuSW1hZ2V9XSxyPWU7aWYoZSBpbnN0YW5jZW9mIEZpbGUpe2xldCBRPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOmUubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KFEpfX1sZXQgbz1be3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksQS5pbmZvcm1hdGlvbk9ubHkmJkEuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBtPSJnZS1hZHctcmVhZC1pbWFnZSIsYT1BPy53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHQsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OkE/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFJlYWQ6cFswXT8uZGF0YSxpbWFnZTpwWzFdPy5kYXRhfX12YXIgdkE9am87YXN5bmMgZnVuY3Rpb24gdm8oZSxBLHQ9e30pe2xldCByPVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTp7cGF0aDpBLGRhdGE6bmV3IFVpbnQ4QXJyYXl9fV0sbz1be3R5cGU6bC5JbWFnZSxkYXRhOmV9XSxpPVtdLG49IjAiO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPUE7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSx0LmluZm9ybWF0aW9uT25seSYmdC5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5IiksdC51c2VDb21wcmVzc2lvbiYmdC51c2VDb21wcmVzc2lvbiYmaS5wdXNoKCItLXVzZS1jb21wcmVzc2lvbiIpO2xldCBtPSJnZS1hZHctd3JpdGUtaW1hZ2UiLGE9dD8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSxyLG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTp0Py5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRXcml0ZTpwWzBdPy5kYXRhLHNlcmlhbGl6ZWRJbWFnZTpwWzFdPy5kYXRhfX12YXIgekE9dm87YXN5bmMgZnVuY3Rpb24gem8oZSxBPXt9KXtsZXQgdD1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5JbWFnZX1dLHI9ZTtpZihlIGluc3RhbmNlb2YgRmlsZSl7bGV0IFE9YXdhaXQgZS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6ZS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoUSl9fWxldCBvPVt7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxuPXIucGF0aDtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj0iMSI7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxBLmluZm9ybWF0aW9uT25seSYmQS5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5Iik7bGV0IG09ImdlNC1yZWFkLWltYWdlIixhPUE/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGksdCxvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6QT8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkUmVhZDpwWzBdPy5kYXRhLGltYWdlOnBbMV0/LmRhdGF9fXZhciBWQT16bzthc3luYyBmdW5jdGlvbiBWbyhlLEEsdD17fSl7bGV0IHI9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOntwYXRoOkEsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpsLkltYWdlLGRhdGE6ZX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9QTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIik7bGV0IG09ImdlNC13cml0ZS1pbWFnZSIsYT10Py53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFdyaXRlOnBbMF0/LmRhdGEsc2VyaWFsaXplZEltYWdlOnBbMV0/LmRhdGF9fXZhciBfQT1Wbzthc3luYyBmdW5jdGlvbiBfbyhlLEE9e30pe2xldCB0PVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkltYWdlfV0scj1lO2lmKGUgaW5zdGFuY2VvZiBGaWxlKXtsZXQgUT1hd2FpdCBlLmFycmF5QnVmZmVyKCk7cj17cGF0aDplLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShRKX19bGV0IG89W3t0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLEEuaW5mb3JtYXRpb25Pbmx5JiZBLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgbT0iZ2U1LXJlYWQtaW1hZ2UiLGE9QT8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSx0LG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTpBPy5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRSZWFkOnBbMF0/LmRhdGEsaW1hZ2U6cFsxXT8uZGF0YX19dmFyIFpBPV9vO2FzeW5jIGZ1bmN0aW9uIFpvKGUsQSx0PXt9KXtsZXQgcj1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6QSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOmwuSW1hZ2UsZGF0YTplfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1BO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKTtsZXQgbT0iZ2U1LXdyaXRlLWltYWdlIixhPXQ/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGkscixvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6dD8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkV3JpdGU6cFswXT8uZGF0YSxzZXJpYWxpemVkSW1hZ2U6cFsxXT8uZGF0YX19dmFyIFhBPVpvO2FzeW5jIGZ1bmN0aW9uIFhvKGUsQT17fSl7bGV0IHQ9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuSW1hZ2V9XSxyPWU7aWYoZSBpbnN0YW5jZW9mIEZpbGUpe2xldCBRPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOmUubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KFEpfX1sZXQgbz1be3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksQS5pbmZvcm1hdGlvbk9ubHkmJkEuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBtPSJnZGNtLXJlYWQtaW1hZ2UiLGE9QT8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSx0LG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTpBPy5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRSZWFkOnBbMF0/LmRhdGEsaW1hZ2U6cFsxXT8uZGF0YX19dmFyICRBPVhvO2FzeW5jIGZ1bmN0aW9uICRvKGUsQSx0PXt9KXtsZXQgcj1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6QSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOmwuSW1hZ2UsZGF0YTplfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1BO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKTtsZXQgbT0iZ2RjbS13cml0ZS1pbWFnZSIsYT10Py53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFdyaXRlOnBbMF0/LmRhdGEsc2VyaWFsaXplZEltYWdlOnBbMV0/LmRhdGF9fXZhciBldD0kbzthc3luYyBmdW5jdGlvbiBlYShlLEE9e30pe2xldCB0PVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkltYWdlfV0scj1lO2lmKGUgaW5zdGFuY2VvZiBGaWxlKXtsZXQgUT1hd2FpdCBlLmFycmF5QnVmZmVyKCk7cj17cGF0aDplLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShRKX19bGV0IG89W3t0eXBlOmwuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLEEuaW5mb3JtYXRpb25Pbmx5JiZBLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgbT0ic2NhbmNvLXJlYWQtaW1hZ2UiLGE9QT8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSx0LG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTpBPy5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRSZWFkOnBbMF0/LmRhdGEsaW1hZ2U6cFsxXT8uZGF0YX19dmFyIEF0PWVhO2FzeW5jIGZ1bmN0aW9uIEFhKGUsQSx0PXt9KXtsZXQgcj1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6QSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOmwuSW1hZ2UsZGF0YTplfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1BO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKTtsZXQgbT0ic2NhbmNvLXdyaXRlLWltYWdlIixhPXQ/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGkscixvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6dD8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkV3JpdGU6cFswXT8uZGF0YSxzZXJpYWxpemVkSW1hZ2U6cFsxXT8uZGF0YX19dmFyIHR0PUFhO2FzeW5jIGZ1bmN0aW9uIHRhKGUsQT17fSl7bGV0IHQ9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuSW1hZ2V9XSxyPWU7aWYoZSBpbnN0YW5jZW9mIEZpbGUpe2xldCBRPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOmUubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KFEpfX1sZXQgbz1be3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksQS5pbmZvcm1hdGlvbk9ubHkmJkEuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBtPSJmZGYtcmVhZC1pbWFnZSIsYT1BPy53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHQsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OkE/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFJlYWQ6cFswXT8uZGF0YSxpbWFnZTpwWzFdPy5kYXRhfX12YXIgcnQ9dGE7YXN5bmMgZnVuY3Rpb24gcmEoZSxBPXt9KXtsZXQgdD1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5JbWFnZX1dLHI9ZTtpZihlIGluc3RhbmNlb2YgRmlsZSl7bGV0IFE9YXdhaXQgZS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6ZS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoUSl9fWxldCBvPVt7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxuPXIucGF0aDtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj0iMSI7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxBLmluZm9ybWF0aW9uT25seSYmQS5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5Iik7bGV0IG09Indhc20tcmVhZC1pbWFnZSIsYT1BPy53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHQsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OkE/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFJlYWQ6cFswXT8uZGF0YSxpbWFnZTpwWzFdPy5kYXRhfX12YXIgaXQ9cmE7YXN5bmMgZnVuY3Rpb24gaWEoZSxBLHQ9e30pe2xldCByPVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTp7cGF0aDpBLGRhdGE6bmV3IFVpbnQ4QXJyYXl9fV0sbz1be3R5cGU6bC5JbWFnZSxkYXRhOmV9XSxpPVtdLG49IjAiO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPUE7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSx0LmluZm9ybWF0aW9uT25seSYmdC5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5IiksdC51c2VDb21wcmVzc2lvbiYmdC51c2VDb21wcmVzc2lvbiYmaS5wdXNoKCItLXVzZS1jb21wcmVzc2lvbiIpO2xldCBtPSJ3YXNtLXdyaXRlLWltYWdlIixhPXQ/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGkscixvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6dD8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkV3JpdGU6cFswXT8uZGF0YSxzZXJpYWxpemVkSW1hZ2U6cFsxXT8uZGF0YX19dmFyIG90PWlhO2FzeW5jIGZ1bmN0aW9uIG9hKGUsQT17fSl7bGV0IHQ9W3t0eXBlOmwuSnNvbkNvbXBhdGlibGV9LHt0eXBlOmwuSW1hZ2V9XSxyPWU7aWYoZSBpbnN0YW5jZW9mIEZpbGUpe2xldCBRPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOmUubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KFEpfX1sZXQgbz1be3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksQS5pbmZvcm1hdGlvbk9ubHkmJkEuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBtPSJ3YXNtLXpzdGQtcmVhZC1pbWFnZSIsYT1BPy53ZWJXb3JrZXI7YT09PXZvaWQgMCYmKGE9YXdhaXQgeSgpKTtsZXR7d2ViV29ya2VyOnMscmV0dXJuVmFsdWU6dSxzdGRlcnI6SSxvdXRwdXRzOnB9PWF3YWl0IEMobSxpLHQsbyx7cGlwZWxpbmVCYXNlVXJsOkUoKSxwaXBlbGluZVdvcmtlclVybDpkKCksd2ViV29ya2VyOmEsbm9Db3B5OkE/Lm5vQ29weX0pO2lmKHUhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6cyxjb3VsZFJlYWQ6cFswXT8uZGF0YSxpbWFnZTpwWzFdPy5kYXRhfX12YXIgYXQ9b2E7YXN5bmMgZnVuY3Rpb24gYWEoZSxBLHQ9e30pe2xldCByPVt7dHlwZTpsLkpzb25Db21wYXRpYmxlfSx7dHlwZTpsLkJpbmFyeUZpbGUsZGF0YTp7cGF0aDpBLGRhdGE6bmV3IFVpbnQ4QXJyYXl9fV0sbz1be3R5cGU6bC5JbWFnZSxkYXRhOmV9XSxpPVtdLG49IjAiO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPUE7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSx0LmluZm9ybWF0aW9uT25seSYmdC5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5IiksdC51c2VDb21wcmVzc2lvbiYmdC51c2VDb21wcmVzc2lvbiYmaS5wdXNoKCItLXVzZS1jb21wcmVzc2lvbiIpO2xldCBtPSJ3YXNtLXpzdGQtd3JpdGUtaW1hZ2UiLGE9dD8ud2ViV29ya2VyO2E9PT12b2lkIDAmJihhPWF3YWl0IHkoKSk7bGV0e3dlYldvcmtlcjpzLHJldHVyblZhbHVlOnUsc3RkZXJyOkksb3V0cHV0czpwfT1hd2FpdCBDKG0saSxyLG8se3BpcGVsaW5lQmFzZVVybDpFKCkscGlwZWxpbmVXb3JrZXJVcmw6ZCgpLHdlYldvcmtlcjphLG5vQ29weTp0Py5ub0NvcHl9KTtpZih1IT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOnMsY291bGRXcml0ZTpwWzBdPy5kYXRhLHNlcmlhbGl6ZWRJbWFnZTpwWzFdPy5kYXRhfX12YXIgbnQ9YWE7dmFyIG5hPW5ldyBNYXAoW1sicG5nIixbQkEsZEFdXSxbIm1ldGEiLFtDQSxFQV1dLFsidGlmZiIsW3lBLFFBXV0sWyJuaWZ0aSIsW2hBLHdBXV0sWyJqcGVnIixbUkEsa0FdXSxbIm5ycmQiLFtiQSxEQV1dLFsidnRrIixbV0EsRkFdXSxbImJtcCIsW1VBLFNBXV0sWyJoZGY1IixbT0EsTkFdXSxbIm1pbmMiLFtQQSx4QV1dLFsibXJjIixbR0EsVEFdXSxbImxzbSIsW0pBLExBXV0sWyJtZ2giLFtNQSxIQV1dLFsiYmlvUmFkIixbWUEscUFdXSxbImdpcGwiLFtLQSxqQV1dLFsiZ2VBZHciLFt2QSx6QV1dLFsiZ2U0IixbVkEsX0FdXSxbImdlNSIsW1pBLFhBXV0sWyJnZGNtIixbJEEsZXRdXSxbInNjYW5jbyIsW0F0LHR0XV0sWyJmZGYiLFtydCxudWxsXV0sWyJ3YXNtIixbaXQsb3RdXSxbIndhc21ac3RkIixbYXQsbnRdXV0pLEFlPW5hO2FzeW5jIGZ1bmN0aW9uIHNhKGUsQT17fSl7bGV0IHQ9ZS50eXBlPz8iIixyPWUubmFtZT8/ZS5wYXRoPz8iZmlsZU5hbWUiLG89dGUocikudG9Mb3dlckNhc2UoKSxpPUE/LndlYldvcmtlcixuPWU7aWYoZSBpbnN0YW5jZW9mIEJsb2Ipe2xldCBJPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtuPXtwYXRoOmUubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KEkpfX1sZXQgZz1udWxsO2lmKHQmJmVlLmhhcyh0KSlnPWVlLmdldCh0KTtlbHNlIGlmKFkuaGFzKG8pKWc9WS5nZXQobyk7ZWxzZSBmb3IobGV0IEkgb2YgQWUudmFsdWVzKCkpaWYoSVswXSE9PW51bGwpe2xldHt3ZWJXb3JrZXI6cCxjb3VsZFJlYWQ6QixpbWFnZTpRfT1hd2FpdCBJWzBdKHtwYXRoOm4ucGF0aCxkYXRhOm4uZGF0YS5zbGljZSgpfSx7d2ViV29ya2VyOmksaW5mb3JtYXRpb25Pbmx5OkE/LmluZm9ybWF0aW9uT25seSxub0NvcHk6QT8ubm9Db3B5fSk7aWYoaT1wLEIpcmV0dXJuIHR5cGVvZiBBPCJ1IiYmKFE9SihRLEEpKSx7d2ViV29ya2VyOmksaW1hZ2U6UX19aWYoIWcpdGhyb3cgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIElPIGZvcjogIityKTtsZXQgbT1BZS5nZXQoZylbMF0se3dlYldvcmtlcjphLGNvdWxkUmVhZDpzLGltYWdlOnV9PWF3YWl0IG0obix7d2ViV29ya2VyOmksaW5mb3JtYXRpb25Pbmx5OkE/LmluZm9ybWF0aW9uT25seSxub0NvcHk6QT8ubm9Db3B5fSk7aWYoaT1hLCFzKXRocm93IEVycm9yKCJDb3VsZCBub3QgcmVhZDogIityKTtyZXR1cm4gdHlwZW9mIEE8InUiJiYodT1KKHUsQSkpLHt3ZWJXb3JrZXI6aSxpbWFnZTp1fX12YXIgc3Q9c2E7dmFyIElhPXR5cGVvZiBnbG9iYWxUaGlzLm5hdmlnYXRvcj8uaGFyZHdhcmVDb25jdXJyZW5jeT09Im51bWJlciI/Z2xvYmFsVGhpcy5uYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeTo2LEVyPW5ldyBMZShJYSxzdCk7YXN5bmMgZnVuY3Rpb24gZ2EoZSxBPXt9KXtsZXQgdD0xLHI9MCxvPSExO3R5cGVvZiBBPT0ib2JqZWN0IiYmKHR5cGVvZiBBLnpTcGFjaW5nPCJ1IiYmKHQ9QS56U3BhY2luZyksdHlwZW9mIEEuek9yaWdpbjwidSImJihyPUEuek9yaWdpbiksdHlwZW9mIEEuc29ydGVkU2VyaWVzPCJ1IiYmKG89QS5zb3J0ZWRTZXJpZXMpKTtsZXQgaT1BcnJheS5mcm9tKGUsYXN5bmMgZnVuY3Rpb24ocyl7aWYocyBpbnN0YW5jZW9mIEZpbGUpe2xldCB1PWF3YWl0IHMuYXJyYXlCdWZmZXIoKTtyZXR1cm57cGF0aDpzLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheSh1KX19cmV0dXJuIHN9KSxuPWF3YWl0IFByb21pc2UuYWxsKGkpO298fG4uc29ydCgocyx1KT0+cy5wYXRoPHUucGF0aD8tMTpzLnBhdGg+dS5wYXRoPzE6MCk7bGV0IGc9W107Zm9yKGxldCBzPTA7czxuLmxlbmd0aDtzKyspZy5wdXNoKFtuW3NdLHt9XSk7bGV0IG09KGF3YWl0IEVyLnJ1blRhc2tzKGcpLnByb21pc2UpLm1hcChzPT57bGV0IHU9cy5pbWFnZTtyZXR1cm4gdS5pbWFnZVR5cGUuZGltZW5zaW9uPTMsdS5zaXplLnB1c2goMSksdS5zcGFjaW5nLnB1c2godCksdS5vcmlnaW4ucHVzaChyKSx1LmRpcmVjdGlvbj1uZXcgRmxvYXQ2NEFycmF5KDkpLHUuZGlyZWN0aW9uLmZpbGwoMCksdS5kaXJlY3Rpb25bMF09MSx1LmRpcmVjdGlvbls0XT0xLHUuZGlyZWN0aW9uWzhdPTEsdX0pLGE9VGUobSk7cmV0dXJuIHR5cGVvZiBBPT0ib2JqZWN0IiYmKHR5cGVvZiBBLmNvbXBvbmVudFR5cGU8InUifHx0eXBlb2YgQS5waXhlbFR5cGU8InUiKSYmKGE9SihhLEEpKSx7aW1hZ2U6YSx3ZWJXb3JrZXJQb29sOkVyfX12YXIgbGE9Z2E7YXN5bmMgZnVuY3Rpb24gcGEoZSxBLHQ9e30pe2xldCByPWU7KHR5cGVvZiB0LmNvbXBvbmVudFR5cGU8InUifHx0eXBlb2YgdC5waXhlbFR5cGU8InUiKSYmKHI9SihlLHQpKTtsZXQgbz10Lm1pbWVUeXBlLGk9dGUoQSkudG9Mb3dlckNhc2UoKSxuPXQud2ViV29ya2VyLGc9bnVsbDtpZih0eXBlb2YgbzwidSImJmVlLmhhcyhvKSlnPWVlLmdldChvKTtlbHNlIGlmKFkuaGFzKGkpKWc9WS5nZXQoaSk7ZWxzZSBmb3IobGV0IHAgb2YgQWUudmFsdWVzKCkpaWYocFsxXSE9PW51bGwpe2xldHt3ZWJXb3JrZXI6Qixjb3VsZFdyaXRlOlEsc2VyaWFsaXplZEltYWdlOlJ9PWF3YWl0IHBbMV0oR2UociksQSx0KTtpZihuPUIsUSlyZXR1cm57d2ViV29ya2VyOm4sc2VyaWFsaXplZEltYWdlOlJ9fWlmKCFnKXRocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCBJTyBmb3I6ICIrQSk7bGV0IG09QWUuZ2V0KGcpWzFdLHt3ZWJXb3JrZXI6YSxjb3VsZFdyaXRlOnMsc2VyaWFsaXplZEltYWdlOnV9PWF3YWl0IG0ocixBLHQpO2lmKG49YSwhcyl0aHJvdyBFcnJvcigiQ291bGQgbm90IHdyaXRlOiAiK0EpO3JldHVybnt3ZWJXb3JrZXI6bixzZXJpYWxpemVkSW1hZ2U6dX19dmFyIG1hPXBhO2FzeW5jIGZ1bmN0aW9uIHVhKGUsQSx0PXt9KXtsZXQgcj1be3R5cGU6bC5Kc29uQ29tcGF0aWJsZX0se3R5cGU6bC5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6QSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOmwuSW1hZ2UsZGF0YTplfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1BO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKTtsZXQgbT0iZmRmLXdyaXRlLWltYWdlIixhPXQ/LndlYldvcmtlcjthPT09dm9pZCAwJiYoYT1hd2FpdCB5KCkpO2xldHt3ZWJXb3JrZXI6cyxyZXR1cm5WYWx1ZTp1LHN0ZGVycjpJLG91dHB1dHM6cH09YXdhaXQgQyhtLGkscixvLHtwaXBlbGluZUJhc2VVcmw6RSgpLHBpcGVsaW5lV29ya2VyVXJsOmQoKSx3ZWJXb3JrZXI6YSxub0NvcHk6dD8ubm9Db3B5fSk7aWYodSE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjpzLGNvdWxkV3JpdGU6cFswXT8uZGF0YSxzZXJpYWxpemVkSW1hZ2U6cFsxXT8uZGF0YX19dmFyIGZhPXVhO3ZhciB5cj0nZGF0YTp0ZXh0L2phdmFzY3JpcHQ7Y2hhcnNldD11dGYtOCx2YXIgdHQ9T2JqZWN0LmRlZmluZVByb3BlcnR5O3ZhciBldD0oQSxJKT0+e2Zvcih2YXIgdCBpbiBJKXR0KEEsdCx7Z2V0OklbdF0sZW51bWVyYWJsZTohMH0pfTt2YXIgdkE9U3ltYm9sKCJDb21saW5rLnByb3h5IiksZ3Q9U3ltYm9sKCJDb21saW5rLmVuZHBvaW50IikscnQ9U3ltYm9sKCJDb21saW5rLnJlbGVhc2VQcm94eSIpLG1BPVN5bWJvbCgiQ29tbGluay5maW5hbGl6ZXIiKSxlQT1TeW1ib2woIkNvbWxpbmsudGhyb3duIiksJEE9QT0+dHlwZW9mIEE9PSJvYmplY3QiJiZBIT09bnVsbHx8dHlwZW9mIEE9PSJmdW5jdGlvbiIsaXQ9e2NhbkhhbmRsZTpBPT4kQShBKSYmQVt2QV0sc2VyaWFsaXplKEEpe2xldHtwb3J0MTpJLHBvcnQyOnR9PW5ldyBNZXNzYWdlQ2hhbm5lbDtyZXR1cm4gb0EoQSxJKSxbdCxbdF1dfSxkZXNlcmlhbGl6ZShBKXtyZXR1cm4gQS5zdGFydCgpLHN0KEEpfX0sb3Q9e2NhbkhhbmRsZTpBPT4kQShBKSYmZUEgaW4gQSxzZXJpYWxpemUoe3ZhbHVlOkF9KXtsZXQgSTtyZXR1cm4gQSBpbnN0YW5jZW9mIEVycm9yP0k9e2lzRXJyb3I6ITAsdmFsdWU6e21lc3NhZ2U6QS5tZXNzYWdlLG5hbWU6QS5uYW1lLHN0YWNrOkEuc3RhY2t9fTpJPXtpc0Vycm9yOiExLHZhbHVlOkF9LFtJLFtdXX0sZGVzZXJpYWxpemUoQSl7dGhyb3cgQS5pc0Vycm9yP09iamVjdC5hc3NpZ24obmV3IEVycm9yKEEudmFsdWUubWVzc2FnZSksQS52YWx1ZSk6QS52YWx1ZX19LEFJPW5ldyBNYXAoW1sicHJveHkiLGl0XSxbInRocm93IixvdF1dKTtmdW5jdGlvbiBCdChBLEkpe2ZvcihsZXQgdCBvZiBBKWlmKEk9PT10fHx0PT09IioifHx0IGluc3RhbmNlb2YgUmVnRXhwJiZ0LnRlc3QoSSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gb0EoQSxJPWdsb2JhbFRoaXMsdD1bIioiXSl7SS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiBlKGcpe2lmKCFnfHwhZy5kYXRhKXJldHVybjtpZighQnQodCxnLm9yaWdpbikpe2NvbnNvbGUud2FybihgSW52YWxpZCBvcmlnaW4gXCcke2cub3JpZ2lufVwnIGZvciBjb21saW5rIHByb3h5YCk7cmV0dXJufWxldHtpZDpyLHR5cGU6aSxwYXRoOnN9PU9iamVjdC5hc3NpZ24oe3BhdGg6W119LGcuZGF0YSksYT0oZy5kYXRhLmFyZ3VtZW50TGlzdHx8W10pLm1hcChiKSxuO3RyeXtsZXQgQz1zLnNsaWNlKDAsLTEpLnJlZHVjZSgoZixRKT0+ZltRXSxBKSxvPXMucmVkdWNlKChmLFEpPT5mW1FdLEEpO3N3aXRjaChpKXtjYXNlIkdFVCI6bj1vO2JyZWFrO2Nhc2UiU0VUIjpDW3Muc2xpY2UoLTEpWzBdXT1iKGcuZGF0YS52YWx1ZSksbj0hMDticmVhaztjYXNlIkFQUExZIjpuPW8uYXBwbHkoQyxhKTticmVhaztjYXNlIkNPTlNUUlVDVCI6e2xldCBmPW5ldyBvKC4uLmEpO249YXQoZil9YnJlYWs7Y2FzZSJFTkRQT0lOVCI6e2xldHtwb3J0MTpmLHBvcnQyOlF9PW5ldyBNZXNzYWdlQ2hhbm5lbDtvQShBLFEpLG49U0EoZixbZl0pfWJyZWFrO2Nhc2UiUkVMRUFTRSI6bj12b2lkIDA7YnJlYWs7ZGVmYXVsdDpyZXR1cm59fWNhdGNoKEMpe249e3ZhbHVlOkMsW2VBXTowfX1Qcm9taXNlLnJlc29sdmUobikuY2F0Y2goQz0+KHt2YWx1ZTpDLFtlQV06MH0pKS50aGVuKEM9PntsZXRbbyxmXT1pQShDKTtJLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSx7aWQ6cn0pLGYpLGk9PT0iUkVMRUFTRSImJihJLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGUpLElJKEkpLG1BIGluIEEmJnR5cGVvZiBBW21BXT09ImZ1bmN0aW9uIiYmQVttQV0oKSl9KS5jYXRjaChDPT57bGV0W28sZl09aUEoe3ZhbHVlOm5ldyBUeXBlRXJyb3IoIlVuc2VyaWFsaXphYmxlIHJldHVybiB2YWx1ZSIpLFtlQV06MH0pO0kucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG8pLHtpZDpyfSksZil9KX0pLEkuc3RhcnQmJkkuc3RhcnQoKX1mdW5jdGlvbiBDdChBKXtyZXR1cm4gQS5jb25zdHJ1Y3Rvci5uYW1lPT09Ik1lc3NhZ2VQb3J0In1mdW5jdGlvbiBJSShBKXtDdChBKSYmQS5jbG9zZSgpfWZ1bmN0aW9uIHN0KEEsSSl7cmV0dXJuIHBBKEEsW10sSSl9ZnVuY3Rpb24gdEEoQSl7aWYoQSl0aHJvdyBuZXcgRXJyb3IoIlByb3h5IGhhcyBiZWVuIHJlbGVhc2VkIGFuZCBpcyBub3QgdXNlYWJsZSIpfWZ1bmN0aW9uIHRJKEEpe3JldHVybiBNKEEse3R5cGU6IlJFTEVBU0UifSkudGhlbigoKT0+e0lJKEEpfSl9dmFyIGdBPW5ldyBXZWFrTWFwLHJBPSJGaW5hbGl6YXRpb25SZWdpc3RyeSJpbiBnbG9iYWxUaGlzJiZuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoQT0+e2xldCBJPShnQS5nZXQoQSl8fDApLTE7Z0Euc2V0KEEsSSksST09PTAmJnRJKEEpfSk7ZnVuY3Rpb24gUXQoQSxJKXtsZXQgdD0oZ0EuZ2V0KEkpfHwwKSsxO2dBLnNldChJLHQpLHJBJiZyQS5yZWdpc3RlcihBLEksQSl9ZnVuY3Rpb24gbnQoQSl7ckEmJnJBLnVucmVnaXN0ZXIoQSl9ZnVuY3Rpb24gcEEoQSxJPVtdLHQ9ZnVuY3Rpb24oKXt9KXtsZXQgZT0hMSxnPW5ldyBQcm94eSh0LHtnZXQocixpKXtpZih0QShlKSxpPT09cnQpcmV0dXJuKCk9PntudChnKSx0SShBKSxlPSEwfTtpZihpPT09InRoZW4iKXtpZihJLmxlbmd0aD09PTApcmV0dXJue3RoZW46KCk9Pmd9O2xldCBzPU0oQSx7dHlwZToiR0VUIixwYXRoOkkubWFwKGE9PmEudG9TdHJpbmcoKSl9KS50aGVuKGIpO3JldHVybiBzLnRoZW4uYmluZChzKX1yZXR1cm4gcEEoQSxbLi4uSSxpXSl9LHNldChyLGkscyl7dEEoZSk7bGV0W2Esbl09aUEocyk7cmV0dXJuIE0oQSx7dHlwZToiU0VUIixwYXRoOlsuLi5JLGldLm1hcChDPT5DLnRvU3RyaW5nKCkpLHZhbHVlOmF9LG4pLnRoZW4oYil9LGFwcGx5KHIsaSxzKXt0QShlKTtsZXQgYT1JW0kubGVuZ3RoLTFdO2lmKGE9PT1ndClyZXR1cm4gTShBLHt0eXBlOiJFTkRQT0lOVCJ9KS50aGVuKGIpO2lmKGE9PT0iYmluZCIpcmV0dXJuIHBBKEEsSS5zbGljZSgwLC0xKSk7bGV0W24sQ109X0Eocyk7cmV0dXJuIE0oQSx7dHlwZToiQVBQTFkiLHBhdGg6SS5tYXAobz0+by50b1N0cmluZygpKSxhcmd1bWVudExpc3Q6bn0sQykudGhlbihiKX0sY29uc3RydWN0KHIsaSl7dEEoZSk7bGV0W3MsYV09X0EoaSk7cmV0dXJuIE0oQSx7dHlwZToiQ09OU1RSVUNUIixwYXRoOkkubWFwKG49Pm4udG9TdHJpbmcoKSksYXJndW1lbnRMaXN0OnN9LGEpLnRoZW4oYil9fSk7cmV0dXJuIFF0KGcsQSksZ31mdW5jdGlvbiBFdChBKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxBKX1mdW5jdGlvbiBfQShBKXtsZXQgST1BLm1hcChpQSk7cmV0dXJuW0kubWFwKHQ9PnRbMF0pLEV0KEkubWFwKHQ9PnRbMV0pKV19dmFyIGVJPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIFNBKEEsSSl7cmV0dXJuIGVJLnNldChBLEkpLEF9ZnVuY3Rpb24gYXQoQSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oQSx7W3ZBXTohMH0pfWZ1bmN0aW9uIGlBKEEpe2ZvcihsZXRbSSx0XW9mIEFJKWlmKHQuY2FuSGFuZGxlKEEpKXtsZXRbZSxnXT10LnNlcmlhbGl6ZShBKTtyZXR1cm5be3R5cGU6IkhBTkRMRVIiLG5hbWU6SSx2YWx1ZTplfSxnXX1yZXR1cm5be3R5cGU6IlJBVyIsdmFsdWU6QX0sZUkuZ2V0KEEpfHxbXV19ZnVuY3Rpb24gYihBKXtzd2l0Y2goQS50eXBlKXtjYXNlIkhBTkRMRVIiOnJldHVybiBBSS5nZXQoQS5uYW1lKS5kZXNlcmlhbGl6ZShBLnZhbHVlKTtjYXNlIlJBVyI6cmV0dXJuIEEudmFsdWV9fWZ1bmN0aW9uIE0oQSxJLHQpe3JldHVybiBuZXcgUHJvbWlzZShlPT57bGV0IGc9Y3QoKTtBLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uIHIoaSl7IWkuZGF0YXx8IWkuZGF0YS5pZHx8aS5kYXRhLmlkIT09Z3x8KEEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsciksZShpLmRhdGEpKX0pLEEuc3RhcnQmJkEuc3RhcnQoKSxBLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oe2lkOmd9LEkpLHQpfSl9ZnVuY3Rpb24gY3QoKXtyZXR1cm4gbmV3IEFycmF5KDQpLmZpbGwoMCkubWFwKCgpPT5NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLnRvU3RyaW5nKDE2KSkuam9pbigiLSIpfWZ1bmN0aW9uIFcoQSxJKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gQS5hcHBseShJLGFyZ3VtZW50cyl9fXZhcnt0b1N0cmluZzpmdH09T2JqZWN0LnByb3RvdHlwZSx7Z2V0UHJvdG90eXBlT2Y6TkF9PU9iamVjdCxDQT0oQT0+ST0+e2xldCB0PWZ0LmNhbGwoSSk7cmV0dXJuIEFbdF18fChBW3RdPXQuc2xpY2UoOCwtMSkudG9Mb3dlckNhc2UoKSl9KShPYmplY3QuY3JlYXRlKG51bGwpKSxVPUE9PihBPUEudG9Mb3dlckNhc2UoKSxJPT5DQShJKT09PUEpLHNBPUE9Pkk9PnR5cGVvZiBJPT09QSx7aXNBcnJheTpxfT1BcnJheSxaPXNBKCJ1bmRlZmluZWQiKTtmdW5jdGlvbiBsdChBKXtyZXR1cm4gQSE9PW51bGwmJiFaKEEpJiZBLmNvbnN0cnVjdG9yIT09bnVsbCYmIVooQS5jb25zdHJ1Y3RvcikmJkYoQS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcikmJkEuY29uc3RydWN0b3IuaXNCdWZmZXIoQSl9dmFyIG9JPVUoIkFycmF5QnVmZmVyIik7ZnVuY3Rpb24gRHQoQSl7bGV0IEk7cmV0dXJuIHR5cGVvZiBBcnJheUJ1ZmZlcjwidSImJkFycmF5QnVmZmVyLmlzVmlldz9JPUFycmF5QnVmZmVyLmlzVmlldyhBKTpJPUEmJkEuYnVmZmVyJiZvSShBLmJ1ZmZlciksSX12YXIgdXQ9c0EoInN0cmluZyIpLEY9c0EoImZ1bmN0aW9uIiksQkk9c0EoIm51bWJlciIpLFFBPUE9PkEhPT1udWxsJiZ0eXBlb2YgQT09Im9iamVjdCIsaHQ9QT0+QT09PSEwfHxBPT09ITEsQkE9QT0+e2lmKENBKEEpIT09Im9iamVjdCIpcmV0dXJuITE7bGV0IEk9TkEoQSk7cmV0dXJuKEk9PT1udWxsfHxJPT09T2JqZWN0LnByb3RvdHlwZXx8T2JqZWN0LmdldFByb3RvdHlwZU9mKEkpPT09bnVsbCkmJiEoU3ltYm9sLnRvU3RyaW5nVGFnIGluIEEpJiYhKFN5bWJvbC5pdGVyYXRvciBpbiBBKX0sZHQ9VSgiRGF0ZSIpLHl0PVUoIkZpbGUiKSx3dD1VKCJCbG9iIiksbXQ9VSgiRmlsZUxpc3QiKSxwdD1BPT5RQShBKSYmRihBLnBpcGUpLFN0PUE9PntsZXQgSTtyZXR1cm4gQSYmKHR5cGVvZiBGb3JtRGF0YT09ImZ1bmN0aW9uIiYmQSBpbnN0YW5jZW9mIEZvcm1EYXRhfHxGKEEuYXBwZW5kKSYmKChJPUNBKEEpKT09PSJmb3JtZGF0YSJ8fEk9PT0ib2JqZWN0IiYmRihBLnRvU3RyaW5nKSYmQS50b1N0cmluZygpPT09IltvYmplY3QgRm9ybURhdGFdIikpfSxGdD1VKCJVUkxTZWFyY2hQYXJhbXMiKSxSdD1BPT5BLnRyaW0/QS50cmltKCk6QS5yZXBsYWNlKC9eW1xcc1xcdUZFRkZcXHhBMF0rfFtcXHNcXHVGRUZGXFx4QTBdKyQvZywiIik7ZnVuY3Rpb24gVihBLEkse2FsbE93bktleXM6dD0hMX09e30pe2lmKEE9PT1udWxsfHx0eXBlb2YgQT4idSIpcmV0dXJuO2xldCBlLGc7aWYodHlwZW9mIEEhPSJvYmplY3QiJiYoQT1bQV0pLHEoQSkpZm9yKGU9MCxnPUEubGVuZ3RoO2U8ZztlKyspSS5jYWxsKG51bGwsQVtlXSxlLEEpO2Vsc2V7bGV0IHI9dD9PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhBKTpPYmplY3Qua2V5cyhBKSxpPXIubGVuZ3RoLHM7Zm9yKGU9MDtlPGk7ZSsrKXM9cltlXSxJLmNhbGwobnVsbCxBW3NdLHMsQSl9fWZ1bmN0aW9uIENJKEEsSSl7ST1JLnRvTG93ZXJDYXNlKCk7bGV0IHQ9T2JqZWN0LmtleXMoQSksZT10Lmxlbmd0aCxnO2Zvcig7ZS0tID4wOylpZihnPXRbZV0sST09PWcudG9Mb3dlckNhc2UoKSlyZXR1cm4gZztyZXR1cm4gbnVsbH12YXIgc0k9dHlwZW9mIGdsb2JhbFRoaXM8InUiP2dsb2JhbFRoaXM6dHlwZW9mIHNlbGY8InUiP3NlbGY6dHlwZW9mIHdpbmRvdzwidSI/d2luZG93Omdsb2JhbCxRST1BPT4hWihBKSYmQSE9PXNJO2Z1bmN0aW9uIFJBKCl7bGV0e2Nhc2VsZXNzOkF9PVFJKHRoaXMpJiZ0aGlzfHx7fSxJPXt9LHQ9KGUsZyk9PntsZXQgcj1BJiZDSShJLGcpfHxnO0JBKElbcl0pJiZCQShlKT9JW3JdPVJBKElbcl0sZSk6QkEoZSk/SVtyXT1SQSh7fSxlKTpxKGUpP0lbcl09ZS5zbGljZSgpOklbcl09ZX07Zm9yKGxldCBlPTAsZz1hcmd1bWVudHMubGVuZ3RoO2U8ZztlKyspYXJndW1lbnRzW2VdJiZWKGFyZ3VtZW50c1tlXSx0KTtyZXR1cm4gSX12YXIgTnQ9KEEsSSx0LHthbGxPd25LZXlzOmV9PXt9KT0+KFYoSSwoZyxyKT0+e3QmJkYoZyk/QVtyXT1XKGcsdCk6QVtyXT1nfSx7YWxsT3duS2V5czplfSksQSksVXQ9QT0+KEEuY2hhckNvZGVBdCgwKT09PTY1Mjc5JiYoQT1BLnNsaWNlKDEpKSxBKSxHdD0oQSxJLHQsZSk9PntBLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEkucHJvdG90eXBlLGUpLEEucHJvdG90eXBlLmNvbnN0cnVjdG9yPUEsT2JqZWN0LmRlZmluZVByb3BlcnR5KEEsInN1cGVyIix7dmFsdWU6SS5wcm90b3R5cGV9KSx0JiZPYmplY3QuYXNzaWduKEEucHJvdG90eXBlLHQpfSxrdD0oQSxJLHQsZSk9PntsZXQgZyxyLGkscz17fTtpZihJPUl8fHt9LEE9PW51bGwpcmV0dXJuIEk7ZG97Zm9yKGc9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoQSkscj1nLmxlbmd0aDtyLS0gPjA7KWk9Z1tyXSwoIWV8fGUoaSxBLEkpKSYmIXNbaV0mJihJW2ldPUFbaV0sc1tpXT0hMCk7QT10IT09ITEmJk5BKEEpfXdoaWxlKEEmJighdHx8dChBLEkpKSYmQSE9PU9iamVjdC5wcm90b3R5cGUpO3JldHVybiBJfSxMdD0oQSxJLHQpPT57QT1TdHJpbmcoQSksKHQ9PT12b2lkIDB8fHQ+QS5sZW5ndGgpJiYodD1BLmxlbmd0aCksdC09SS5sZW5ndGg7bGV0IGU9QS5pbmRleE9mKEksdCk7cmV0dXJuIGUhPT0tMSYmZT09PXR9LEp0PUE9PntpZighQSlyZXR1cm4gbnVsbDtpZihxKEEpKXJldHVybiBBO2xldCBJPUEubGVuZ3RoO2lmKCFCSShJKSlyZXR1cm4gbnVsbDtsZXQgdD1uZXcgQXJyYXkoSSk7Zm9yKDtJLS0gPjA7KXRbSV09QVtJXTtyZXR1cm4gdH0sSHQ9KEE9Pkk9PkEmJkkgaW5zdGFuY2VvZiBBKSh0eXBlb2YgVWludDhBcnJheTwidSImJk5BKFVpbnQ4QXJyYXkpKSxZdD0oQSxJKT0+e2xldCBlPShBJiZBW1N5bWJvbC5pdGVyYXRvcl0pLmNhbGwoQSksZztmb3IoOyhnPWUubmV4dCgpKSYmIWcuZG9uZTspe2xldCByPWcudmFsdWU7SS5jYWxsKEEsclswXSxyWzFdKX19LGJ0PShBLEkpPT57bGV0IHQsZT1bXTtmb3IoOyh0PUEuZXhlYyhJKSkhPT1udWxsOyllLnB1c2godCk7cmV0dXJuIGV9LE10PVUoIkhUTUxGb3JtRWxlbWVudCIpLHF0PUE9PkEudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bLV9cXHNdKFthLXpcXGRdKShcXHcqKS9nLGZ1bmN0aW9uKHQsZSxnKXtyZXR1cm4gZS50b1VwcGVyQ2FzZSgpK2d9KSxyST0oKHtoYXNPd25Qcm9wZXJ0eTpBfSk9PihJLHQpPT5BLmNhbGwoSSx0KSkoT2JqZWN0LnByb3RvdHlwZSksS3Q9VSgiUmVnRXhwIiksbkk9KEEsSSk9PntsZXQgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhBKSxlPXt9O1YodCwoZyxyKT0+e2xldCBpOyhpPUkoZyxyLEEpKSE9PSExJiYoZVtyXT1pfHxnKX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEEsZSl9LE90PUE9PntuSShBLChJLHQpPT57aWYoRihBKSYmWyJhcmd1bWVudHMiLCJjYWxsZXIiLCJjYWxsZWUiXS5pbmRleE9mKHQpIT09LTEpcmV0dXJuITE7bGV0IGU9QVt0XTtpZihGKGUpKXtpZihJLmVudW1lcmFibGU9ITEsIndyaXRhYmxlImluIEkpe0kud3JpdGFibGU9ITE7cmV0dXJufUkuc2V0fHwoSS5zZXQ9KCk9Pnt0aHJvdyBFcnJvcigiQ2FuIG5vdCByZXdyaXRlIHJlYWQtb25seSBtZXRob2QgXCciK3QrIlwnIil9KX19KX0sVHQ9KEEsSSk9PntsZXQgdD17fSxlPWc9PntnLmZvckVhY2gocj0+e3Rbcl09ITB9KX07cmV0dXJuIHEoQSk/ZShBKTplKFN0cmluZyhBKS5zcGxpdChJKSksdH0seHQ9KCk9Pnt9LFB0PShBLEkpPT4oQT0rQSxOdW1iZXIuaXNGaW5pdGUoQSk/QTpJKSxGQT0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiLGlJPSIwMTIzNDU2Nzg5IixFST17RElHSVQ6aUksQUxQSEE6RkEsQUxQSEFfRElHSVQ6RkErRkEudG9VcHBlckNhc2UoKStpSX0sanQ9KEE9MTYsST1FSS5BTFBIQV9ESUdJVCk9PntsZXQgdD0iIix7bGVuZ3RoOmV9PUk7Zm9yKDtBLS07KXQrPUlbTWF0aC5yYW5kb20oKSplfDBdO3JldHVybiB0fTtmdW5jdGlvbiBXdChBKXtyZXR1cm4hIShBJiZGKEEuYXBwZW5kKSYmQVtTeW1ib2wudG9TdHJpbmdUYWddPT09IkZvcm1EYXRhIiYmQVtTeW1ib2wuaXRlcmF0b3JdKX12YXIgWnQ9QT0+e2xldCBJPW5ldyBBcnJheSgxMCksdD0oZSxnKT0+e2lmKFFBKGUpKXtpZihJLmluZGV4T2YoZSk+PTApcmV0dXJuO2lmKCEoInRvSlNPTiJpbiBlKSl7SVtnXT1lO2xldCByPXEoZSk/W106e307cmV0dXJuIFYoZSwoaSxzKT0+e2xldCBhPXQoaSxnKzEpOyFaKGEpJiYocltzXT1hKX0pLElbZ109dm9pZCAwLHJ9fXJldHVybiBlfTtyZXR1cm4gdChBLDApfSxWdD1VKCJBc3luY0Z1bmN0aW9uIiksWHQ9QT0+QSYmKFFBKEEpfHxGKEEpKSYmRihBLnRoZW4pJiZGKEEuY2F0Y2gpLEI9e2lzQXJyYXk6cSxpc0FycmF5QnVmZmVyOm9JLGlzQnVmZmVyOmx0LGlzRm9ybURhdGE6U3QsaXNBcnJheUJ1ZmZlclZpZXc6RHQsaXNTdHJpbmc6dXQsaXNOdW1iZXI6QkksaXNCb29sZWFuOmh0LGlzT2JqZWN0OlFBLGlzUGxhaW5PYmplY3Q6QkEsaXNVbmRlZmluZWQ6Wixpc0RhdGU6ZHQsaXNGaWxlOnl0LGlzQmxvYjp3dCxpc1JlZ0V4cDpLdCxpc0Z1bmN0aW9uOkYsaXNTdHJlYW06cHQsaXNVUkxTZWFyY2hQYXJhbXM6RnQsaXNUeXBlZEFycmF5Okh0LGlzRmlsZUxpc3Q6bXQsZm9yRWFjaDpWLG1lcmdlOlJBLGV4dGVuZDpOdCx0cmltOlJ0LHN0cmlwQk9NOlV0LGluaGVyaXRzOkd0LHRvRmxhdE9iamVjdDprdCxraW5kT2Y6Q0Esa2luZE9mVGVzdDpVLGVuZHNXaXRoOkx0LHRvQXJyYXk6SnQsZm9yRWFjaEVudHJ5Oll0LG1hdGNoQWxsOmJ0LGlzSFRNTEZvcm06TXQsaGFzT3duUHJvcGVydHk6ckksaGFzT3duUHJvcDpySSxyZWR1Y2VEZXNjcmlwdG9yczpuSSxmcmVlemVNZXRob2RzOk90LHRvT2JqZWN0U2V0OlR0LHRvQ2FtZWxDYXNlOnF0LG5vb3A6eHQsdG9GaW5pdGVOdW1iZXI6UHQsZmluZEtleTpDSSxnbG9iYWw6c0ksaXNDb250ZXh0RGVmaW5lZDpRSSxBTFBIQUJFVDpFSSxnZW5lcmF0ZVN0cmluZzpqdCxpc1NwZWNDb21wbGlhbnRGb3JtOld0LHRvSlNPTk9iamVjdDpadCxpc0FzeW5jRm46VnQsaXNUaGVuYWJsZTpYdH07ZnVuY3Rpb24gSyhBLEksdCxlLGcpe0Vycm9yLmNhbGwodGhpcyksRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U/RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcyx0aGlzLmNvbnN0cnVjdG9yKTp0aGlzLnN0YWNrPW5ldyBFcnJvcigpLnN0YWNrLHRoaXMubWVzc2FnZT1BLHRoaXMubmFtZT0iQXhpb3NFcnJvciIsSSYmKHRoaXMuY29kZT1JKSx0JiYodGhpcy5jb25maWc9dCksZSYmKHRoaXMucmVxdWVzdD1lKSxnJiYodGhpcy5yZXNwb25zZT1nKX1CLmluaGVyaXRzKEssRXJyb3Ise3RvSlNPTjpmdW5jdGlvbigpe3JldHVybnttZXNzYWdlOnRoaXMubWVzc2FnZSxuYW1lOnRoaXMubmFtZSxkZXNjcmlwdGlvbjp0aGlzLmRlc2NyaXB0aW9uLG51bWJlcjp0aGlzLm51bWJlcixmaWxlTmFtZTp0aGlzLmZpbGVOYW1lLGxpbmVOdW1iZXI6dGhpcy5saW5lTnVtYmVyLGNvbHVtbk51bWJlcjp0aGlzLmNvbHVtbk51bWJlcixzdGFjazp0aGlzLnN0YWNrLGNvbmZpZzpCLnRvSlNPTk9iamVjdCh0aGlzLmNvbmZpZyksY29kZTp0aGlzLmNvZGUsc3RhdHVzOnRoaXMucmVzcG9uc2UmJnRoaXMucmVzcG9uc2Uuc3RhdHVzP3RoaXMucmVzcG9uc2Uuc3RhdHVzOm51bGx9fX0pO3ZhciBhST1LLnByb3RvdHlwZSxjST17fTtbIkVSUl9CQURfT1BUSU9OX1ZBTFVFIiwiRVJSX0JBRF9PUFRJT04iLCJFQ09OTkFCT1JURUQiLCJFVElNRURPVVQiLCJFUlJfTkVUV09SSyIsIkVSUl9GUl9UT09fTUFOWV9SRURJUkVDVFMiLCJFUlJfREVQUkVDQVRFRCIsIkVSUl9CQURfUkVTUE9OU0UiLCJFUlJfQkFEX1JFUVVFU1QiLCJFUlJfQ0FOQ0VMRUQiLCJFUlJfTk9UX1NVUFBPUlQiLCJFUlJfSU5WQUxJRF9VUkwiXS5mb3JFYWNoKEE9PntjSVtBXT17dmFsdWU6QX19KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhLLGNJKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYUksImlzQXhpb3NFcnJvciIse3ZhbHVlOiEwfSk7Sy5mcm9tPShBLEksdCxlLGcscik9PntsZXQgaT1PYmplY3QuY3JlYXRlKGFJKTtyZXR1cm4gQi50b0ZsYXRPYmplY3QoQSxpLGZ1bmN0aW9uKGEpe3JldHVybiBhIT09RXJyb3IucHJvdG90eXBlfSxzPT5zIT09ImlzQXhpb3NFcnJvciIpLEsuY2FsbChpLEEubWVzc2FnZSxJLHQsZSxnKSxpLmNhdXNlPUEsaS5uYW1lPUEubmFtZSxyJiZPYmplY3QuYXNzaWduKGksciksaX07dmFyIGw9Szt2YXIgbkE9bnVsbDtmdW5jdGlvbiBVQShBKXtyZXR1cm4gQi5pc1BsYWluT2JqZWN0KEEpfHxCLmlzQXJyYXkoQSl9ZnVuY3Rpb24gbEkoQSl7cmV0dXJuIEIuZW5kc1dpdGgoQSwiW10iKT9BLnNsaWNlKDAsLTIpOkF9ZnVuY3Rpb24gZkkoQSxJLHQpe3JldHVybiBBP0EuY29uY2F0KEkpLm1hcChmdW5jdGlvbihnLHIpe3JldHVybiBnPWxJKGcpLCF0JiZyPyJbIitnKyJdIjpnfSkuam9pbih0PyIuIjoiIik6SX1mdW5jdGlvbiB6dChBKXtyZXR1cm4gQi5pc0FycmF5KEEpJiYhQS5zb21lKFVBKX12YXIgX3Q9Qi50b0ZsYXRPYmplY3QoQix7fSxudWxsLGZ1bmN0aW9uKEkpe3JldHVybi9eaXNbQS1aXS8udGVzdChJKX0pO2Z1bmN0aW9uIHZ0KEEsSSx0KXtpZighQi5pc09iamVjdChBKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ0YXJnZXQgbXVzdCBiZSBhbiBvYmplY3QiKTtJPUl8fG5ldyhuQXx8Rm9ybURhdGEpLHQ9Qi50b0ZsYXRPYmplY3QodCx7bWV0YVRva2VuczohMCxkb3RzOiExLGluZGV4ZXM6ITF9LCExLGZ1bmN0aW9uKGMsdSl7cmV0dXJuIUIuaXNVbmRlZmluZWQodVtjXSl9KTtsZXQgZT10Lm1ldGFUb2tlbnMsZz10LnZpc2l0b3J8fEMscj10LmRvdHMsaT10LmluZGV4ZXMsYT0odC5CbG9ifHx0eXBlb2YgQmxvYjwidSImJkJsb2IpJiZCLmlzU3BlY0NvbXBsaWFudEZvcm0oSSk7aWYoIUIuaXNGdW5jdGlvbihnKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ2aXNpdG9yIG11c3QgYmUgYSBmdW5jdGlvbiIpO2Z1bmN0aW9uIG4oRSl7aWYoRT09PW51bGwpcmV0dXJuIiI7aWYoQi5pc0RhdGUoRSkpcmV0dXJuIEUudG9JU09TdHJpbmcoKTtpZighYSYmQi5pc0Jsb2IoRSkpdGhyb3cgbmV3IGwoIkJsb2IgaXMgbm90IHN1cHBvcnRlZC4gVXNlIGEgQnVmZmVyIGluc3RlYWQuIik7cmV0dXJuIEIuaXNBcnJheUJ1ZmZlcihFKXx8Qi5pc1R5cGVkQXJyYXkoRSk/YSYmdHlwZW9mIEJsb2I9PSJmdW5jdGlvbiI/bmV3IEJsb2IoW0VdKTpCdWZmZXIuZnJvbShFKTpFfWZ1bmN0aW9uIEMoRSxjLHUpe2xldCBkPUU7aWYoRSYmIXUmJnR5cGVvZiBFPT0ib2JqZWN0Iil7aWYoQi5lbmRzV2l0aChjLCJ7fSIpKWM9ZT9jOmMuc2xpY2UoMCwtMiksRT1KU09OLnN0cmluZ2lmeShFKTtlbHNlIGlmKEIuaXNBcnJheShFKSYmenQoRSl8fChCLmlzRmlsZUxpc3QoRSl8fEIuZW5kc1dpdGgoYywiW10iKSkmJihkPUIudG9BcnJheShFKSkpcmV0dXJuIGM9bEkoYyksZC5mb3JFYWNoKGZ1bmN0aW9uKE4sSXQpeyEoQi5pc1VuZGVmaW5lZChOKXx8Tj09PW51bGwpJiZJLmFwcGVuZChpPT09ITA/ZkkoW2NdLEl0LHIpOmk9PT1udWxsP2M6YysiW10iLG4oTikpfSksITF9cmV0dXJuIFVBKEUpPyEwOihJLmFwcGVuZChmSSh1LGMsciksbihFKSksITEpfWxldCBvPVtdLGY9T2JqZWN0LmFzc2lnbihfdCx7ZGVmYXVsdFZpc2l0b3I6Qyxjb252ZXJ0VmFsdWU6bixpc1Zpc2l0YWJsZTpVQX0pO2Z1bmN0aW9uIFEoRSxjKXtpZighQi5pc1VuZGVmaW5lZChFKSl7aWYoby5pbmRleE9mKEUpIT09LTEpdGhyb3cgRXJyb3IoIkNpcmN1bGFyIHJlZmVyZW5jZSBkZXRlY3RlZCBpbiAiK2Muam9pbigiLiIpKTtvLnB1c2goRSksQi5mb3JFYWNoKEUsZnVuY3Rpb24oZCxSKXsoIShCLmlzVW5kZWZpbmVkKGQpfHxkPT09bnVsbCkmJmcuY2FsbChJLGQsQi5pc1N0cmluZyhSKT9SLnRyaW0oKTpSLGMsZikpPT09ITAmJlEoZCxjP2MuY29uY2F0KFIpOltSXSl9KSxvLnBvcCgpfX1pZighQi5pc09iamVjdChBKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJkYXRhIG11c3QgYmUgYW4gb2JqZWN0Iik7cmV0dXJuIFEoQSksSX12YXIgTD12dDtmdW5jdGlvbiBESShBKXtsZXQgST17IiEiOiIlMjUyMSIsIlwnIjoiJTI1MjciLCIoIjoiJTI1MjgiLCIpIjoiJTI1MjkiLCJ+IjoiJTI1N0UiLCIlMjUyMCI6IisiLCIlMjUwMCI6IlxcMCJ9O3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoQSkucmVwbGFjZSgvWyFcJygpfl18JTI1MjB8JTI1MDAvZyxmdW5jdGlvbihlKXtyZXR1cm4gSVtlXX0pfWZ1bmN0aW9uIHVJKEEsSSl7dGhpcy5fcGFpcnM9W10sQSYmTChBLHRoaXMsSSl9dmFyIGhJPXVJLnByb3RvdHlwZTtoSS5hcHBlbmQ9ZnVuY3Rpb24oSSx0KXt0aGlzLl9wYWlycy5wdXNoKFtJLHRdKX07aEkudG9TdHJpbmc9ZnVuY3Rpb24oSSl7bGV0IHQ9ST9mdW5jdGlvbihlKXtyZXR1cm4gSS5jYWxsKHRoaXMsZSxESSl9OkRJO3JldHVybiB0aGlzLl9wYWlycy5tYXAoZnVuY3Rpb24oZyl7cmV0dXJuIHQoZ1swXSkrIj0iK3QoZ1sxXSl9LCIiKS5qb2luKCImIil9O3ZhciBFQT11STtmdW5jdGlvbiAkdChBKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEEpLnJlcGxhY2UoLyUyNTNBL2dpLCI6IikucmVwbGFjZSgvJTI1MjQvZywiJCIpLnJlcGxhY2UoLyUyNTJDL2dpLCIsIikucmVwbGFjZSgvJTI1MjAvZywiKyIpLnJlcGxhY2UoLyUyNTVCL2dpLCJbIikucmVwbGFjZSgvJTI1NUQvZ2ksIl0iKX1mdW5jdGlvbiBYKEEsSSx0KXtpZighSSlyZXR1cm4gQTtsZXQgZT10JiZ0LmVuY29kZXx8JHQsZz10JiZ0LnNlcmlhbGl6ZSxyO2lmKGc/cj1nKEksdCk6cj1CLmlzVVJMU2VhcmNoUGFyYW1zKEkpP0kudG9TdHJpbmcoKTpuZXcgRUEoSSx0KS50b1N0cmluZyhlKSxyKXtsZXQgaT1BLmluZGV4T2YoIiUyMyIpO2khPT0tMSYmKEE9QS5zbGljZSgwLGkpKSxBKz0oQS5pbmRleE9mKCI/Iik9PT0tMT8iPyI6IiYiKStyfXJldHVybiBBfXZhciBHQT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuaGFuZGxlcnM9W119dXNlKEksdCxlKXtyZXR1cm4gdGhpcy5oYW5kbGVycy5wdXNoKHtmdWxmaWxsZWQ6SSxyZWplY3RlZDp0LHN5bmNocm9ub3VzOmU/ZS5zeW5jaHJvbm91czohMSxydW5XaGVuOmU/ZS5ydW5XaGVuOm51bGx9KSx0aGlzLmhhbmRsZXJzLmxlbmd0aC0xfWVqZWN0KEkpe3RoaXMuaGFuZGxlcnNbSV0mJih0aGlzLmhhbmRsZXJzW0ldPW51bGwpfWNsZWFyKCl7dGhpcy5oYW5kbGVycyYmKHRoaXMuaGFuZGxlcnM9W10pfWZvckVhY2goSSl7Qi5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsZnVuY3Rpb24oZSl7ZSE9PW51bGwmJkkoZSl9KX19LGtBPUdBO3ZhciBhQT17c2lsZW50SlNPTlBhcnNpbmc6ITAsZm9yY2VkSlNPTlBhcnNpbmc6ITAsY2xhcmlmeVRpbWVvdXRFcnJvcjohMX07dmFyIGRJPXR5cGVvZiBVUkxTZWFyY2hQYXJhbXM8InUiP1VSTFNlYXJjaFBhcmFtczpFQTt2YXIgeUk9dHlwZW9mIEZvcm1EYXRhPCJ1Ij9Gb3JtRGF0YTpudWxsO3ZhciB3ST10eXBlb2YgQmxvYjwidSI/QmxvYjpudWxsO3ZhciBtST17aXNCcm93c2VyOiEwLGNsYXNzZXM6e1VSTFNlYXJjaFBhcmFtczpkSSxGb3JtRGF0YTp5SSxCbG9iOndJfSxwcm90b2NvbHM6WyJodHRwIiwiaHR0cHMiLCJmaWxlIiwiYmxvYiIsInVybCIsImRhdGEiXX07dmFyIExBPXt9O2V0KExBLHtoYXNCcm93c2VyRW52OigpPT5wSSxoYXNTdGFuZGFyZEJyb3dzZXJFbnY6KCk9PkFlLGhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudjooKT0+SWV9KTt2YXIgcEk9dHlwZW9mIHdpbmRvdzwidSImJnR5cGVvZiBkb2N1bWVudDwidSIsQWU9KEE9PnBJJiZbIlJlYWN0TmF0aXZlIiwiTmF0aXZlU2NyaXB0IiwiTlMiXS5pbmRleE9mKEEpPDApKHR5cGVvZiBuYXZpZ2F0b3I8InUiJiZuYXZpZ2F0b3IucHJvZHVjdCksSWU9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlPCJ1IiYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZ0eXBlb2Ygc2VsZi5pbXBvcnRTY3JpcHRzPT0iZnVuY3Rpb24iO3ZhciB3PXsuLi5MQSwuLi5tSX07ZnVuY3Rpb24gSkEoQSxJKXtyZXR1cm4gTChBLG5ldyB3LmNsYXNzZXMuVVJMU2VhcmNoUGFyYW1zLE9iamVjdC5hc3NpZ24oe3Zpc2l0b3I6ZnVuY3Rpb24odCxlLGcscil7cmV0dXJuIHcuaXNOb2RlJiZCLmlzQnVmZmVyKHQpPyh0aGlzLmFwcGVuZChlLHQudG9TdHJpbmcoImJhc2U2NCIpKSwhMSk6ci5kZWZhdWx0VmlzaXRvci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSxJKSl9ZnVuY3Rpb24gdGUoQSl7cmV0dXJuIEIubWF0Y2hBbGwoL1xcdyt8XFxbKFxcdyopXS9nLEEpLm1hcChJPT5JWzBdPT09IltdIj8iIjpJWzFdfHxJWzBdKX1mdW5jdGlvbiBlZShBKXtsZXQgST17fSx0PU9iamVjdC5rZXlzKEEpLGUsZz10Lmxlbmd0aCxyO2ZvcihlPTA7ZTxnO2UrKylyPXRbZV0sSVtyXT1BW3JdO3JldHVybiBJfWZ1bmN0aW9uIGdlKEEpe2Z1bmN0aW9uIEkodCxlLGcscil7bGV0IGk9dFtyKytdLHM9TnVtYmVyLmlzRmluaXRlKCtpKSxhPXI+PXQubGVuZ3RoO3JldHVybiBpPSFpJiZCLmlzQXJyYXkoZyk/Zy5sZW5ndGg6aSxhPyhCLmhhc093blByb3AoZyxpKT9nW2ldPVtnW2ldLGVdOmdbaV09ZSwhcyk6KCghZ1tpXXx8IUIuaXNPYmplY3QoZ1tpXSkpJiYoZ1tpXT1bXSksSSh0LGUsZ1tpXSxyKSYmQi5pc0FycmF5KGdbaV0pJiYoZ1tpXT1lZShnW2ldKSksIXMpfWlmKEIuaXNGb3JtRGF0YShBKSYmQi5pc0Z1bmN0aW9uKEEuZW50cmllcykpe2xldCB0PXt9O3JldHVybiBCLmZvckVhY2hFbnRyeShBLChlLGcpPT57SSh0ZShlKSxnLHQsMCl9KSx0fXJldHVybiBudWxsfXZhciBjQT1nZTtmdW5jdGlvbiByZShBLEksdCl7aWYoQi5pc1N0cmluZyhBKSl0cnl7cmV0dXJuKEl8fEpTT04ucGFyc2UpKEEpLEIudHJpbShBKX1jYXRjaChlKXtpZihlLm5hbWUhPT0iU3ludGF4RXJyb3IiKXRocm93IGV9cmV0dXJuKHR8fEpTT04uc3RyaW5naWZ5KShBKX12YXIgSEE9e3RyYW5zaXRpb25hbDphQSxhZGFwdGVyOlsieGhyIiwiaHR0cCJdLHRyYW5zZm9ybVJlcXVlc3Q6W2Z1bmN0aW9uKEksdCl7bGV0IGU9dC5nZXRDb250ZW50VHlwZSgpfHwiIixnPWUuaW5kZXhPZigiYXBwbGljYXRpb24vanNvbiIpPi0xLHI9Qi5pc09iamVjdChJKTtpZihyJiZCLmlzSFRNTEZvcm0oSSkmJihJPW5ldyBGb3JtRGF0YShJKSksQi5pc0Zvcm1EYXRhKEkpKXJldHVybiBnJiZnP0pTT04uc3RyaW5naWZ5KGNBKEkpKTpJO2lmKEIuaXNBcnJheUJ1ZmZlcihJKXx8Qi5pc0J1ZmZlcihJKXx8Qi5pc1N0cmVhbShJKXx8Qi5pc0ZpbGUoSSl8fEIuaXNCbG9iKEkpKXJldHVybiBJO2lmKEIuaXNBcnJheUJ1ZmZlclZpZXcoSSkpcmV0dXJuIEkuYnVmZmVyO2lmKEIuaXNVUkxTZWFyY2hQYXJhbXMoSSkpcmV0dXJuIHQuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04IiwhMSksSS50b1N0cmluZygpO2xldCBzO2lmKHIpe2lmKGUuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik+LTEpcmV0dXJuIEpBKEksdGhpcy5mb3JtU2VyaWFsaXplcikudG9TdHJpbmcoKTtpZigocz1CLmlzRmlsZUxpc3QoSSkpfHxlLmluZGV4T2YoIm11bHRpcGFydC9mb3JtLWRhdGEiKT4tMSl7bGV0IGE9dGhpcy5lbnYmJnRoaXMuZW52LkZvcm1EYXRhO3JldHVybiBMKHM/eyJmaWxlc1tdIjpJfTpJLGEmJm5ldyBhLHRoaXMuZm9ybVNlcmlhbGl6ZXIpfX1yZXR1cm4gcnx8Zz8odC5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24vanNvbiIsITEpLHJlKEkpKTpJfV0sdHJhbnNmb3JtUmVzcG9uc2U6W2Z1bmN0aW9uKEkpe2xldCB0PXRoaXMudHJhbnNpdGlvbmFsfHxIQS50cmFuc2l0aW9uYWwsZT10JiZ0LmZvcmNlZEpTT05QYXJzaW5nLGc9dGhpcy5yZXNwb25zZVR5cGU9PT0ianNvbiI7aWYoSSYmQi5pc1N0cmluZyhJKSYmKGUmJiF0aGlzLnJlc3BvbnNlVHlwZXx8Zykpe2xldCBpPSEodCYmdC5zaWxlbnRKU09OUGFyc2luZykmJmc7dHJ5e3JldHVybiBKU09OLnBhcnNlKEkpfWNhdGNoKHMpe2lmKGkpdGhyb3cgcy5uYW1lPT09IlN5bnRheEVycm9yIj9sLmZyb20ocyxsLkVSUl9CQURfUkVTUE9OU0UsdGhpcyxudWxsLHRoaXMucmVzcG9uc2UpOnN9fXJldHVybiBJfV0sdGltZW91dDowLHhzcmZDb29raWVOYW1lOiJYU1JGLVRPS0VOIix4c3JmSGVhZGVyTmFtZToiWC1YU1JGLVRPS0VOIixtYXhDb250ZW50TGVuZ3RoOi0xLG1heEJvZHlMZW5ndGg6LTEsZW52OntGb3JtRGF0YTp3LmNsYXNzZXMuRm9ybURhdGEsQmxvYjp3LmNsYXNzZXMuQmxvYn0sdmFsaWRhdGVTdGF0dXM6ZnVuY3Rpb24oSSl7cmV0dXJuIEk+PTIwMCYmSTwzMDB9LGhlYWRlcnM6e2NvbW1vbjp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoiLCJDb250ZW50LVR5cGUiOnZvaWQgMH19fTtCLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwicG9zdCIsInB1dCIsInBhdGNoIl0sQT0+e0hBLmhlYWRlcnNbQV09e319KTt2YXIgTz1IQTt2YXIgaWU9Qi50b09iamVjdFNldChbImFnZSIsImF1dGhvcml6YXRpb24iLCJjb250ZW50LWxlbmd0aCIsImNvbnRlbnQtdHlwZSIsImV0YWciLCJleHBpcmVzIiwiZnJvbSIsImhvc3QiLCJpZi1tb2RpZmllZC1zaW5jZSIsImlmLXVubW9kaWZpZWQtc2luY2UiLCJsYXN0LW1vZGlmaWVkIiwibG9jYXRpb24iLCJtYXgtZm9yd2FyZHMiLCJwcm94eS1hdXRob3JpemF0aW9uIiwicmVmZXJlciIsInJldHJ5LWFmdGVyIiwidXNlci1hZ2VudCJdKSxTST1BPT57bGV0IEk9e30sdCxlLGc7cmV0dXJuIEEmJkEuc3BsaXQoYCUwQWApLmZvckVhY2goZnVuY3Rpb24oaSl7Zz1pLmluZGV4T2YoIjoiKSx0PWkuc3Vic3RyaW5nKDAsZykudHJpbSgpLnRvTG93ZXJDYXNlKCksZT1pLnN1YnN0cmluZyhnKzEpLnRyaW0oKSwhKCF0fHxJW3RdJiZpZVt0XSkmJih0PT09InNldC1jb29raWUiP0lbdF0/SVt0XS5wdXNoKGUpOklbdF09W2VdOklbdF09SVt0XT9JW3RdKyIsICIrZTplKX0pLEl9O3ZhciBGST1TeW1ib2woImludGVybmFscyIpO2Z1bmN0aW9uIHooQSl7cmV0dXJuIEEmJlN0cmluZyhBKS50cmltKCkudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBmQShBKXtyZXR1cm4gQT09PSExfHxBPT1udWxsP0E6Qi5pc0FycmF5KEEpP0EubWFwKGZBKTpTdHJpbmcoQSl9ZnVuY3Rpb24gb2UoQSl7bGV0IEk9T2JqZWN0LmNyZWF0ZShudWxsKSx0PS8oW15cXHMsOz1dKylcXHMqKD86PVxccyooW14sO10rKSk/L2csZTtmb3IoO2U9dC5leGVjKEEpOylJW2VbMV1dPWVbMl07cmV0dXJuIEl9dmFyIEJlPUE9Pi9eWy1fYS16QS1aMC05XmB8fiwhJTIzJCUmXCcqKy5dKyQvLnRlc3QoQS50cmltKCkpO2Z1bmN0aW9uIFlBKEEsSSx0LGUsZyl7aWYoQi5pc0Z1bmN0aW9uKGUpKXJldHVybiBlLmNhbGwodGhpcyxJLHQpO2lmKGcmJihJPXQpLCEhQi5pc1N0cmluZyhJKSl7aWYoQi5pc1N0cmluZyhlKSlyZXR1cm4gSS5pbmRleE9mKGUpIT09LTE7aWYoQi5pc1JlZ0V4cChlKSlyZXR1cm4gZS50ZXN0KEkpfX1mdW5jdGlvbiBDZShBKXtyZXR1cm4gQS50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8oW2EtelxcZF0pKFxcdyopL2csKEksdCxlKT0+dC50b1VwcGVyQ2FzZSgpK2UpfWZ1bmN0aW9uIHNlKEEsSSl7bGV0IHQ9Qi50b0NhbWVsQ2FzZSgiICIrSSk7WyJnZXQiLCJzZXQiLCJoYXMiXS5mb3JFYWNoKGU9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoQSxlK3Qse3ZhbHVlOmZ1bmN0aW9uKGcscixpKXtyZXR1cm4gdGhpc1tlXS5jYWxsKHRoaXMsSSxnLHIsaSl9LGNvbmZpZ3VyYWJsZTohMH0pfSl9dmFyIFQ9Y2xhc3N7Y29uc3RydWN0b3IoSSl7SSYmdGhpcy5zZXQoSSl9c2V0KEksdCxlKXtsZXQgZz10aGlzO2Z1bmN0aW9uIHIocyxhLG4pe2xldCBDPXooYSk7aWYoIUMpdGhyb3cgbmV3IEVycm9yKCJoZWFkZXIgbmFtZSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZyIpO2xldCBvPUIuZmluZEtleShnLEMpOyghb3x8Z1tvXT09PXZvaWQgMHx8bj09PSEwfHxuPT09dm9pZCAwJiZnW29dIT09ITEpJiYoZ1tvfHxhXT1mQShzKSl9bGV0IGk9KHMsYSk9PkIuZm9yRWFjaChzLChuLEMpPT5yKG4sQyxhKSk7cmV0dXJuIEIuaXNQbGFpbk9iamVjdChJKXx8SSBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3I/aShJLHQpOkIuaXNTdHJpbmcoSSkmJihJPUkudHJpbSgpKSYmIUJlKEkpP2koU0koSSksdCk6SSE9bnVsbCYmcih0LEksZSksdGhpc31nZXQoSSx0KXtpZihJPXooSSksSSl7bGV0IGU9Qi5maW5kS2V5KHRoaXMsSSk7aWYoZSl7bGV0IGc9dGhpc1tlXTtpZighdClyZXR1cm4gZztpZih0PT09ITApcmV0dXJuIG9lKGcpO2lmKEIuaXNGdW5jdGlvbih0KSlyZXR1cm4gdC5jYWxsKHRoaXMsZyxlKTtpZihCLmlzUmVnRXhwKHQpKXJldHVybiB0LmV4ZWMoZyk7dGhyb3cgbmV3IFR5cGVFcnJvcigicGFyc2VyIG11c3QgYmUgYm9vbGVhbnxyZWdleHB8ZnVuY3Rpb24iKX19fWhhcyhJLHQpe2lmKEk9eihJKSxJKXtsZXQgZT1CLmZpbmRLZXkodGhpcyxJKTtyZXR1cm4hIShlJiZ0aGlzW2VdIT09dm9pZCAwJiYoIXR8fFlBKHRoaXMsdGhpc1tlXSxlLHQpKSl9cmV0dXJuITF9ZGVsZXRlKEksdCl7bGV0IGU9dGhpcyxnPSExO2Z1bmN0aW9uIHIoaSl7aWYoaT16KGkpLGkpe2xldCBzPUIuZmluZEtleShlLGkpO3MmJighdHx8WUEoZSxlW3NdLHMsdCkpJiYoZGVsZXRlIGVbc10sZz0hMCl9fXJldHVybiBCLmlzQXJyYXkoSSk/SS5mb3JFYWNoKHIpOnIoSSksZ31jbGVhcihJKXtsZXQgdD1PYmplY3Qua2V5cyh0aGlzKSxlPXQubGVuZ3RoLGc9ITE7Zm9yKDtlLS07KXtsZXQgcj10W2VdOyghSXx8WUEodGhpcyx0aGlzW3JdLHIsSSwhMCkpJiYoZGVsZXRlIHRoaXNbcl0sZz0hMCl9cmV0dXJuIGd9bm9ybWFsaXplKEkpe2xldCB0PXRoaXMsZT17fTtyZXR1cm4gQi5mb3JFYWNoKHRoaXMsKGcscik9PntsZXQgaT1CLmZpbmRLZXkoZSxyKTtpZihpKXt0W2ldPWZBKGcpLGRlbGV0ZSB0W3JdO3JldHVybn1sZXQgcz1JP0NlKHIpOlN0cmluZyhyKS50cmltKCk7cyE9PXImJmRlbGV0ZSB0W3JdLHRbc109ZkEoZyksZVtzXT0hMH0pLHRoaXN9Y29uY2F0KC4uLkkpe3JldHVybiB0aGlzLmNvbnN0cnVjdG9yLmNvbmNhdCh0aGlzLC4uLkkpfXRvSlNPTihJKXtsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBCLmZvckVhY2godGhpcywoZSxnKT0+e2UhPW51bGwmJmUhPT0hMSYmKHRbZ109SSYmQi5pc0FycmF5KGUpP2Uuam9pbigiLCAiKTplKX0pLHR9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSlbU3ltYm9sLml0ZXJhdG9yXSgpfXRvU3RyaW5nKCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMudG9KU09OKCkpLm1hcCgoW0ksdF0pPT5JKyI6ICIrdCkuam9pbihgJTBBYCl9Z2V0W1N5bWJvbC50b1N0cmluZ1RhZ10oKXtyZXR1cm4iQXhpb3NIZWFkZXJzIn1zdGF0aWMgZnJvbShJKXtyZXR1cm4gSSBpbnN0YW5jZW9mIHRoaXM/STpuZXcgdGhpcyhJKX1zdGF0aWMgY29uY2F0KEksLi4udCl7bGV0IGU9bmV3IHRoaXMoSSk7cmV0dXJuIHQuZm9yRWFjaChnPT5lLnNldChnKSksZX1zdGF0aWMgYWNjZXNzb3IoSSl7bGV0IGU9KHRoaXNbRkldPXRoaXNbRkldPXthY2Nlc3NvcnM6e319KS5hY2Nlc3NvcnMsZz10aGlzLnByb3RvdHlwZTtmdW5jdGlvbiByKGkpe2xldCBzPXooaSk7ZVtzXXx8KHNlKGcsaSksZVtzXT0hMCl9cmV0dXJuIEIuaXNBcnJheShJKT9JLmZvckVhY2gocik6cihJKSx0aGlzfX07VC5hY2Nlc3NvcihbIkNvbnRlbnQtVHlwZSIsIkNvbnRlbnQtTGVuZ3RoIiwiQWNjZXB0IiwiQWNjZXB0LUVuY29kaW5nIiwiVXNlci1BZ2VudCIsIkF1dGhvcml6YXRpb24iXSk7Qi5yZWR1Y2VEZXNjcmlwdG9ycyhULnByb3RvdHlwZSwoe3ZhbHVlOkF9LEkpPT57bGV0IHQ9SVswXS50b1VwcGVyQ2FzZSgpK0kuc2xpY2UoMSk7cmV0dXJue2dldDooKT0+QSxzZXQoZSl7dGhpc1t0XT1lfX19KTtCLmZyZWV6ZU1ldGhvZHMoVCk7dmFyIG09VDtmdW5jdGlvbiBfKEEsSSl7bGV0IHQ9dGhpc3x8TyxlPUl8fHQsZz1tLmZyb20oZS5oZWFkZXJzKSxyPWUuZGF0YTtyZXR1cm4gQi5mb3JFYWNoKEEsZnVuY3Rpb24ocyl7cj1zLmNhbGwodCxyLGcubm9ybWFsaXplKCksST9JLnN0YXR1czp2b2lkIDApfSksZy5ub3JtYWxpemUoKSxyfWZ1bmN0aW9uIHYoQSl7cmV0dXJuISEoQSYmQS5fX0NBTkNFTF9fKX1mdW5jdGlvbiBSSShBLEksdCl7bC5jYWxsKHRoaXMsQT8/ImNhbmNlbGVkIixsLkVSUl9DQU5DRUxFRCxJLHQpLHRoaXMubmFtZT0iQ2FuY2VsZWRFcnJvciJ9Qi5pbmhlcml0cyhSSSxsLHtfX0NBTkNFTF9fOiEwfSk7dmFyIEo9Ukk7ZnVuY3Rpb24gYkEoQSxJLHQpe2xldCBlPXQuY29uZmlnLnZhbGlkYXRlU3RhdHVzOyF0LnN0YXR1c3x8IWV8fGUodC5zdGF0dXMpP0EodCk6SShuZXcgbCgiUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK3Quc3RhdHVzLFtsLkVSUl9CQURfUkVRVUVTVCxsLkVSUl9CQURfUkVTUE9OU0VdW01hdGguZmxvb3IodC5zdGF0dXMvMTAwKS00XSx0LmNvbmZpZyx0LnJlcXVlc3QsdCkpfXZhciBOST13Lmhhc1N0YW5kYXJkQnJvd3NlckVudj97d3JpdGUoQSxJLHQsZSxnLHIpe2xldCBpPVtBKyI9IitlbmNvZGVVUklDb21wb25lbnQoSSldO0IuaXNOdW1iZXIodCkmJmkucHVzaCgiZXhwaXJlcz0iK25ldyBEYXRlKHQpLnRvR01UU3RyaW5nKCkpLEIuaXNTdHJpbmcoZSkmJmkucHVzaCgicGF0aD0iK2UpLEIuaXNTdHJpbmcoZykmJmkucHVzaCgiZG9tYWluPSIrZykscj09PSEwJiZpLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1pLmpvaW4oIjsgIil9LHJlYWQoQSl7bGV0IEk9ZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoIihefDtcXFxccyopKCIrQSsiKT0oW147XSopIikpO3JldHVybiBJP2RlY29kZVVSSUNvbXBvbmVudChJWzNdKTpudWxsfSxyZW1vdmUoQSl7dGhpcy53cml0ZShBLCIiLERhdGUubm93KCktODY0ZTUpfX06e3dyaXRlKCl7fSxyZWFkKCl7cmV0dXJuIG51bGx9LHJlbW92ZSgpe319O2Z1bmN0aW9uIE1BKEEpe3JldHVybi9eKFthLXpdW2EtelxcZCtcXC0uXSo6KT9cXC9cXC8vaS50ZXN0KEEpfWZ1bmN0aW9uIHFBKEEsSSl7cmV0dXJuIEk/QS5yZXBsYWNlKC9cXC8rJC8sIiIpKyIvIitJLnJlcGxhY2UoL15cXC8rLywiIik6QX1mdW5jdGlvbiAkKEEsSSl7cmV0dXJuIEEmJiFNQShJKT9xQShBLEkpOkl9dmFyIFVJPXcuaGFzU3RhbmRhcmRCcm93c2VyRW52P2Z1bmN0aW9uKCl7bGV0IEk9Lyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSx0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxlO2Z1bmN0aW9uIGcocil7bGV0IGk9cjtyZXR1cm4gSSYmKHQuc2V0QXR0cmlidXRlKCJocmVmIixpKSxpPXQuaHJlZiksdC5zZXRBdHRyaWJ1dGUoImhyZWYiLGkpLHtocmVmOnQuaHJlZixwcm90b2NvbDp0LnByb3RvY29sP3QucHJvdG9jb2wucmVwbGFjZSgvOiQvLCIiKToiIixob3N0OnQuaG9zdCxzZWFyY2g6dC5zZWFyY2g/dC5zZWFyY2gucmVwbGFjZSgvXlxcPy8sIiIpOiIiLGhhc2g6dC5oYXNoP3QuaGFzaC5yZXBsYWNlKC9eJTIzLywiIik6IiIsaG9zdG5hbWU6dC5ob3N0bmFtZSxwb3J0OnQucG9ydCxwYXRobmFtZTp0LnBhdGhuYW1lLmNoYXJBdCgwKT09PSIvIj90LnBhdGhuYW1lOiIvIit0LnBhdGhuYW1lfX1yZXR1cm4gZT1nKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxmdW5jdGlvbihpKXtsZXQgcz1CLmlzU3RyaW5nKGkpP2coaSk6aTtyZXR1cm4gcy5wcm90b2NvbD09PWUucHJvdG9jb2wmJnMuaG9zdD09PWUuaG9zdH19KCk6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hMH19KCk7ZnVuY3Rpb24gS0EoQSl7bGV0IEk9L14oWy0rXFx3XXsxLDI1fSkoOj9cXC9cXC98OikvLmV4ZWMoQSk7cmV0dXJuIEkmJklbMV18fCIifWZ1bmN0aW9uIFFlKEEsSSl7QT1BfHwxMDtsZXQgdD1uZXcgQXJyYXkoQSksZT1uZXcgQXJyYXkoQSksZz0wLHI9MCxpO3JldHVybiBJPUkhPT12b2lkIDA/SToxZTMsZnVuY3Rpb24oYSl7bGV0IG49RGF0ZS5ub3coKSxDPWVbcl07aXx8KGk9biksdFtnXT1hLGVbZ109bjtsZXQgbz1yLGY9MDtmb3IoO28hPT1nOylmKz10W28rK10sbz1vJUE7aWYoZz0oZysxKSVBLGc9PT1yJiYocj0ocisxKSVBKSxuLWk8SSlyZXR1cm47bGV0IFE9QyYmbi1DO3JldHVybiBRP01hdGgucm91bmQoZioxZTMvUSk6dm9pZCAwfX12YXIgR0k9UWU7ZnVuY3Rpb24ga0koQSxJKXtsZXQgdD0wLGU9R0koNTAsMjUwKTtyZXR1cm4gZz0+e2xldCByPWcubG9hZGVkLGk9Zy5sZW5ndGhDb21wdXRhYmxlP2cudG90YWw6dm9pZCAwLHM9ci10LGE9ZShzKSxuPXI8PWk7dD1yO2xldCBDPXtsb2FkZWQ6cix0b3RhbDppLHByb2dyZXNzOmk/ci9pOnZvaWQgMCxieXRlczpzLHJhdGU6YXx8dm9pZCAwLGVzdGltYXRlZDphJiZpJiZuPyhpLXIpL2E6dm9pZCAwLGV2ZW50Omd9O0NbST8iZG93bmxvYWQiOiJ1cGxvYWQiXT0hMCxBKEMpfX12YXIgbmU9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0PCJ1IixMST1uZSYmZnVuY3Rpb24oQSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQsZSl7bGV0IGc9QS5kYXRhLHI9bS5mcm9tKEEuaGVhZGVycykubm9ybWFsaXplKCkse3Jlc3BvbnNlVHlwZTppLHdpdGhYU1JGVG9rZW46c309QSxhO2Z1bmN0aW9uIG4oKXtBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKGEpLEEuc2lnbmFsJiZBLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsYSl9bGV0IEM7aWYoQi5pc0Zvcm1EYXRhKGcpKXtpZih3Lmhhc1N0YW5kYXJkQnJvd3NlckVudnx8dy5oYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnYpci5zZXRDb250ZW50VHlwZSghMSk7ZWxzZSBpZigoQz1yLmdldENvbnRlbnRUeXBlKCkpIT09ITEpe2xldFtjLC4uLnVdPUM/Qy5zcGxpdCgiOyIpLm1hcChkPT5kLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pOltdO3Iuc2V0Q29udGVudFR5cGUoW2N8fCJtdWx0aXBhcnQvZm9ybS1kYXRhIiwuLi51XS5qb2luKCI7ICIpKX19bGV0IG89bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKEEuYXV0aCl7bGV0IGM9QS5hdXRoLnVzZXJuYW1lfHwiIix1PUEuYXV0aC5wYXNzd29yZD91bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoQS5hdXRoLnBhc3N3b3JkKSk6IiI7ci5zZXQoIkF1dGhvcml6YXRpb24iLCJCYXNpYyAiK2J0b2EoYysiOiIrdSkpfWxldCBmPSQoQS5iYXNlVVJMLEEudXJsKTtvLm9wZW4oQS5tZXRob2QudG9VcHBlckNhc2UoKSxYKGYsQS5wYXJhbXMsQS5wYXJhbXNTZXJpYWxpemVyKSwhMCksby50aW1lb3V0PUEudGltZW91dDtmdW5jdGlvbiBRKCl7aWYoIW8pcmV0dXJuO2xldCBjPW0uZnJvbSgiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzImluIG8mJm8uZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpLGQ9e2RhdGE6IWl8fGk9PT0idGV4dCJ8fGk9PT0ianNvbiI/by5yZXNwb25zZVRleHQ6by5yZXNwb25zZSxzdGF0dXM6by5zdGF0dXMsc3RhdHVzVGV4dDpvLnN0YXR1c1RleHQsaGVhZGVyczpjLGNvbmZpZzpBLHJlcXVlc3Q6b307YkEoZnVuY3Rpb24oTil7dChOKSxuKCl9LGZ1bmN0aW9uKE4pe2UoTiksbigpfSxkKSxvPW51bGx9aWYoIm9ubG9hZGVuZCJpbiBvP28ub25sb2FkZW5kPVE6by5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXshb3x8by5yZWFkeVN0YXRlIT09NHx8by5zdGF0dXM9PT0wJiYhKG8ucmVzcG9uc2VVUkwmJm8ucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKT09PTApfHxzZXRUaW1lb3V0KFEpfSxvLm9uYWJvcnQ9ZnVuY3Rpb24oKXtvJiYoZShuZXcgbCgiUmVxdWVzdCBhYm9ydGVkIixsLkVDT05OQUJPUlRFRCxBLG8pKSxvPW51bGwpfSxvLm9uZXJyb3I9ZnVuY3Rpb24oKXtlKG5ldyBsKCJOZXR3b3JrIEVycm9yIixsLkVSUl9ORVRXT1JLLEEsbykpLG89bnVsbH0sby5vbnRpbWVvdXQ9ZnVuY3Rpb24oKXtsZXQgdT1BLnRpbWVvdXQ/InRpbWVvdXQgb2YgIitBLnRpbWVvdXQrIm1zIGV4Y2VlZGVkIjoidGltZW91dCBleGNlZWRlZCIsZD1BLnRyYW5zaXRpb25hbHx8YUE7QS50aW1lb3V0RXJyb3JNZXNzYWdlJiYodT1BLnRpbWVvdXRFcnJvck1lc3NhZ2UpLGUobmV3IGwodSxkLmNsYXJpZnlUaW1lb3V0RXJyb3I/bC5FVElNRURPVVQ6bC5FQ09OTkFCT1JURUQsQSxvKSksbz1udWxsfSx3Lmhhc1N0YW5kYXJkQnJvd3NlckVudiYmKHMmJkIuaXNGdW5jdGlvbihzKSYmKHM9cyhBKSksc3x8cyE9PSExJiZVSShmKSkpe2xldCBjPUEueHNyZkhlYWRlck5hbWUmJkEueHNyZkNvb2tpZU5hbWUmJk5JLnJlYWQoQS54c3JmQ29va2llTmFtZSk7YyYmci5zZXQoQS54c3JmSGVhZGVyTmFtZSxjKX1nPT09dm9pZCAwJiZyLnNldENvbnRlbnRUeXBlKG51bGwpLCJzZXRSZXF1ZXN0SGVhZGVyImluIG8mJkIuZm9yRWFjaChyLnRvSlNPTigpLGZ1bmN0aW9uKHUsZCl7by5zZXRSZXF1ZXN0SGVhZGVyKGQsdSl9KSxCLmlzVW5kZWZpbmVkKEEud2l0aENyZWRlbnRpYWxzKXx8KG8ud2l0aENyZWRlbnRpYWxzPSEhQS53aXRoQ3JlZGVudGlhbHMpLGkmJmkhPT0ianNvbiImJihvLnJlc3BvbnNlVHlwZT1BLnJlc3BvbnNlVHlwZSksdHlwZW9mIEEub25Eb3dubG9hZFByb2dyZXNzPT0iZnVuY3Rpb24iJiZvLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixrSShBLm9uRG93bmxvYWRQcm9ncmVzcywhMCkpLHR5cGVvZiBBLm9uVXBsb2FkUHJvZ3Jlc3M9PSJmdW5jdGlvbiImJm8udXBsb2FkJiZvLnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsa0koQS5vblVwbG9hZFByb2dyZXNzKSksKEEuY2FuY2VsVG9rZW58fEEuc2lnbmFsKSYmKGE9Yz0+e28mJihlKCFjfHxjLnR5cGU/bmV3IEoobnVsbCxBLG8pOmMpLG8uYWJvcnQoKSxvPW51bGwpfSxBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnN1YnNjcmliZShhKSxBLnNpZ25hbCYmKEEuc2lnbmFsLmFib3J0ZWQ/YSgpOkEuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixhKSkpO2xldCBFPUtBKGYpO2lmKEUmJncucHJvdG9jb2xzLmluZGV4T2YoRSk9PT0tMSl7ZShuZXcgbCgiVW5zdXBwb3J0ZWQgcHJvdG9jb2wgIitFKyI6IixsLkVSUl9CQURfUkVRVUVTVCxBKSk7cmV0dXJufW8uc2VuZChnfHxudWxsKX0pfTt2YXIgT0E9e2h0dHA6bkEseGhyOkxJfTtCLmZvckVhY2goT0EsKEEsSSk9PntpZihBKXt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KEEsIm5hbWUiLHt2YWx1ZTpJfSl9Y2F0Y2h7fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJhZGFwdGVyTmFtZSIse3ZhbHVlOkl9KX19KTt2YXIgSkk9QT0+YC0gJHtBfWAsRWU9QT0+Qi5pc0Z1bmN0aW9uKEEpfHxBPT09bnVsbHx8QT09PSExLGxBPXtnZXRBZGFwdGVyOkE9PntBPUIuaXNBcnJheShBKT9BOltBXTtsZXR7bGVuZ3RoOkl9PUEsdCxlLGc9e307Zm9yKGxldCByPTA7cjxJO3IrKyl7dD1BW3JdO2xldCBpO2lmKGU9dCwhRWUodCkmJihlPU9BWyhpPVN0cmluZyh0KSkudG9Mb3dlckNhc2UoKV0sZT09PXZvaWQgMCkpdGhyb3cgbmV3IGwoYFVua25vd24gYWRhcHRlciBcJyR7aX1cJ2ApO2lmKGUpYnJlYWs7Z1tpfHwiJTIzIityXT1lfWlmKCFlKXtsZXQgcj1PYmplY3QuZW50cmllcyhnKS5tYXAoKFtzLGFdKT0+YGFkYXB0ZXIgJHtzfSBgKyhhPT09ITE/ImlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGVudmlyb25tZW50IjoiaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgYnVpbGQiKSksaT1JP3IubGVuZ3RoPjE/YHNpbmNlIDolMEFgK3IubWFwKEpJKS5qb2luKGAlMEFgKToiICIrSkkoclswXSk6ImFzIG5vIGFkYXB0ZXIgc3BlY2lmaWVkIjt0aHJvdyBuZXcgbCgiVGhlcmUgaXMgbm8gc3VpdGFibGUgYWRhcHRlciB0byBkaXNwYXRjaCB0aGUgcmVxdWVzdCAiK2ksIkVSUl9OT1RfU1VQUE9SVCIpfXJldHVybiBlfSxhZGFwdGVyczpPQX07ZnVuY3Rpb24gVEEoQSl7aWYoQS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCksQS5zaWduYWwmJkEuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IEoobnVsbCxBKX1mdW5jdGlvbiBEQShBKXtyZXR1cm4gVEEoQSksQS5oZWFkZXJzPW0uZnJvbShBLmhlYWRlcnMpLEEuZGF0YT1fLmNhbGwoQSxBLnRyYW5zZm9ybVJlcXVlc3QpLFsicG9zdCIsInB1dCIsInBhdGNoIl0uaW5kZXhPZihBLm1ldGhvZCkhPT0tMSYmQS5oZWFkZXJzLnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLCExKSxsQS5nZXRBZGFwdGVyKEEuYWRhcHRlcnx8Ty5hZGFwdGVyKShBKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBUQShBKSxlLmRhdGE9Xy5jYWxsKEEsQS50cmFuc2Zvcm1SZXNwb25zZSxlKSxlLmhlYWRlcnM9bS5mcm9tKGUuaGVhZGVycyksZX0sZnVuY3Rpb24oZSl7cmV0dXJuIHYoZSl8fChUQShBKSxlJiZlLnJlc3BvbnNlJiYoZS5yZXNwb25zZS5kYXRhPV8uY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2UsZS5yZXNwb25zZSksZS5yZXNwb25zZS5oZWFkZXJzPW0uZnJvbShlLnJlc3BvbnNlLmhlYWRlcnMpKSksUHJvbWlzZS5yZWplY3QoZSl9KX12YXIgSEk9QT0+QSBpbnN0YW5jZW9mIG0/QS50b0pTT04oKTpBO2Z1bmN0aW9uIEcoQSxJKXtJPUl8fHt9O2xldCB0PXt9O2Z1bmN0aW9uIGUobixDLG8pe3JldHVybiBCLmlzUGxhaW5PYmplY3QobikmJkIuaXNQbGFpbk9iamVjdChDKT9CLm1lcmdlLmNhbGwoe2Nhc2VsZXNzOm99LG4sQyk6Qi5pc1BsYWluT2JqZWN0KEMpP0IubWVyZ2Uoe30sQyk6Qi5pc0FycmF5KEMpP0Muc2xpY2UoKTpDfWZ1bmN0aW9uIGcobixDLG8pe2lmKEIuaXNVbmRlZmluZWQoQykpe2lmKCFCLmlzVW5kZWZpbmVkKG4pKXJldHVybiBlKHZvaWQgMCxuLG8pfWVsc2UgcmV0dXJuIGUobixDLG8pfWZ1bmN0aW9uIHIobixDKXtpZighQi5pc1VuZGVmaW5lZChDKSlyZXR1cm4gZSh2b2lkIDAsQyl9ZnVuY3Rpb24gaShuLEMpe2lmKEIuaXNVbmRlZmluZWQoQykpe2lmKCFCLmlzVW5kZWZpbmVkKG4pKXJldHVybiBlKHZvaWQgMCxuKX1lbHNlIHJldHVybiBlKHZvaWQgMCxDKX1mdW5jdGlvbiBzKG4sQyxvKXtpZihvIGluIEkpcmV0dXJuIGUobixDKTtpZihvIGluIEEpcmV0dXJuIGUodm9pZCAwLG4pfWxldCBhPXt1cmw6cixtZXRob2Q6cixkYXRhOnIsYmFzZVVSTDppLHRyYW5zZm9ybVJlcXVlc3Q6aSx0cmFuc2Zvcm1SZXNwb25zZTppLHBhcmFtc1NlcmlhbGl6ZXI6aSx0aW1lb3V0OmksdGltZW91dE1lc3NhZ2U6aSx3aXRoQ3JlZGVudGlhbHM6aSx3aXRoWFNSRlRva2VuOmksYWRhcHRlcjppLHJlc3BvbnNlVHlwZTppLHhzcmZDb29raWVOYW1lOmkseHNyZkhlYWRlck5hbWU6aSxvblVwbG9hZFByb2dyZXNzOmksb25Eb3dubG9hZFByb2dyZXNzOmksZGVjb21wcmVzczppLG1heENvbnRlbnRMZW5ndGg6aSxtYXhCb2R5TGVuZ3RoOmksYmVmb3JlUmVkaXJlY3Q6aSx0cmFuc3BvcnQ6aSxodHRwQWdlbnQ6aSxodHRwc0FnZW50OmksY2FuY2VsVG9rZW46aSxzb2NrZXRQYXRoOmkscmVzcG9uc2VFbmNvZGluZzppLHZhbGlkYXRlU3RhdHVzOnMsaGVhZGVyczoobixDKT0+ZyhISShuKSxISShDKSwhMCl9O3JldHVybiBCLmZvckVhY2goT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSxBLEkpKSxmdW5jdGlvbihDKXtsZXQgbz1hW0NdfHxnLGY9byhBW0NdLElbQ10sQyk7Qi5pc1VuZGVmaW5lZChmKSYmbyE9PXN8fCh0W0NdPWYpfSksdH12YXIgdUE9IjEuNi4yIjt2YXIgeEE9e307WyJvYmplY3QiLCJib29sZWFuIiwibnVtYmVyIiwiZnVuY3Rpb24iLCJzdHJpbmciLCJzeW1ib2wiXS5mb3JFYWNoKChBLEkpPT57eEFbQV09ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPT09QXx8ImEiKyhJPDE/Im4gIjoiICIpK0F9fSk7dmFyIFlJPXt9O3hBLnRyYW5zaXRpb25hbD1mdW5jdGlvbihJLHQsZSl7ZnVuY3Rpb24gZyhyLGkpe3JldHVybiJbQXhpb3MgdiIrdUErIl0gVHJhbnNpdGlvbmFsIG9wdGlvbiBcJyIrcisiXCciK2krKGU/Ii4gIitlOiIiKX1yZXR1cm4ocixpLHMpPT57aWYoST09PSExKXRocm93IG5ldyBsKGcoaSwiIGhhcyBiZWVuIHJlbW92ZWQiKyh0PyIgaW4gIit0OiIiKSksbC5FUlJfREVQUkVDQVRFRCk7cmV0dXJuIHQmJiFZSVtpXSYmKFlJW2ldPSEwLGNvbnNvbGUud2FybihnKGksIiBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYiK3QrIiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSIpKSksST9JKHIsaSxzKTohMH19O2Z1bmN0aW9uIGFlKEEsSSx0KXtpZih0eXBlb2YgQSE9Im9iamVjdCIpdGhyb3cgbmV3IGwoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiLGwuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2xldCBlPU9iamVjdC5rZXlzKEEpLGc9ZS5sZW5ndGg7Zm9yKDtnLS0gPjA7KXtsZXQgcj1lW2ddLGk9SVtyXTtpZihpKXtsZXQgcz1BW3JdLGE9cz09PXZvaWQgMHx8aShzLHIsQSk7aWYoYSE9PSEwKXRocm93IG5ldyBsKCJvcHRpb24gIityKyIgbXVzdCBiZSAiK2EsbC5FUlJfQkFEX09QVElPTl9WQUxVRSk7Y29udGludWV9aWYodCE9PSEwKXRocm93IG5ldyBsKCJVbmtub3duIG9wdGlvbiAiK3IsbC5FUlJfQkFEX09QVElPTil9fXZhciBoQT17YXNzZXJ0T3B0aW9uczphZSx2YWxpZGF0b3JzOnhBfTt2YXIgSD1oQS52YWxpZGF0b3JzLHg9Y2xhc3N7Y29uc3RydWN0b3IoSSl7dGhpcy5kZWZhdWx0cz1JLHRoaXMuaW50ZXJjZXB0b3JzPXtyZXF1ZXN0Om5ldyBrQSxyZXNwb25zZTpuZXcga0F9fXJlcXVlc3QoSSx0KXt0eXBlb2YgST09InN0cmluZyI/KHQ9dHx8e30sdC51cmw9SSk6dD1JfHx7fSx0PUcodGhpcy5kZWZhdWx0cyx0KTtsZXR7dHJhbnNpdGlvbmFsOmUscGFyYW1zU2VyaWFsaXplcjpnLGhlYWRlcnM6cn09dDtlIT09dm9pZCAwJiZoQS5hc3NlcnRPcHRpb25zKGUse3NpbGVudEpTT05QYXJzaW5nOkgudHJhbnNpdGlvbmFsKEguYm9vbGVhbiksZm9yY2VkSlNPTlBhcnNpbmc6SC50cmFuc2l0aW9uYWwoSC5ib29sZWFuKSxjbGFyaWZ5VGltZW91dEVycm9yOkgudHJhbnNpdGlvbmFsKEguYm9vbGVhbil9LCExKSxnIT1udWxsJiYoQi5pc0Z1bmN0aW9uKGcpP3QucGFyYW1zU2VyaWFsaXplcj17c2VyaWFsaXplOmd9OmhBLmFzc2VydE9wdGlvbnMoZyx7ZW5jb2RlOkguZnVuY3Rpb24sc2VyaWFsaXplOkguZnVuY3Rpb259LCEwKSksdC5tZXRob2Q9KHQubWV0aG9kfHx0aGlzLmRlZmF1bHRzLm1ldGhvZHx8ImdldCIpLnRvTG93ZXJDYXNlKCk7bGV0IGk9ciYmQi5tZXJnZShyLmNvbW1vbixyW3QubWV0aG9kXSk7ciYmQi5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCIsImNvbW1vbiJdLEU9PntkZWxldGUgcltFXX0pLHQuaGVhZGVycz1tLmNvbmNhdChpLHIpO2xldCBzPVtdLGE9ITA7dGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKGZ1bmN0aW9uKGMpe3R5cGVvZiBjLnJ1bldoZW49PSJmdW5jdGlvbiImJmMucnVuV2hlbih0KT09PSExfHwoYT1hJiZjLnN5bmNocm9ub3VzLHMudW5zaGlmdChjLmZ1bGZpbGxlZCxjLnJlamVjdGVkKSl9KTtsZXQgbj1bXTt0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKGZ1bmN0aW9uKGMpe24ucHVzaChjLmZ1bGZpbGxlZCxjLnJlamVjdGVkKX0pO2xldCBDLG89MCxmO2lmKCFhKXtsZXQgRT1bREEuYmluZCh0aGlzKSx2b2lkIDBdO2ZvcihFLnVuc2hpZnQuYXBwbHkoRSxzKSxFLnB1c2guYXBwbHkoRSxuKSxmPUUubGVuZ3RoLEM9UHJvbWlzZS5yZXNvbHZlKHQpO288ZjspQz1DLnRoZW4oRVtvKytdLEVbbysrXSk7cmV0dXJuIEN9Zj1zLmxlbmd0aDtsZXQgUT10O2ZvcihvPTA7bzxmOyl7bGV0IEU9c1tvKytdLGM9c1tvKytdO3RyeXtRPUUoUSl9Y2F0Y2godSl7Yy5jYWxsKHRoaXMsdSk7YnJlYWt9fXRyeXtDPURBLmNhbGwodGhpcyxRKX1jYXRjaChFKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoRSl9Zm9yKG89MCxmPW4ubGVuZ3RoO288ZjspQz1DLnRoZW4obltvKytdLG5bbysrXSk7cmV0dXJuIEN9Z2V0VXJpKEkpe0k9Ryh0aGlzLmRlZmF1bHRzLEkpO2xldCB0PSQoSS5iYXNlVVJMLEkudXJsKTtyZXR1cm4gWCh0LEkucGFyYW1zLEkucGFyYW1zU2VyaWFsaXplcil9fTtCLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyJdLGZ1bmN0aW9uKEkpe3gucHJvdG90eXBlW0ldPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucmVxdWVzdChHKGV8fHt9LHttZXRob2Q6SSx1cmw6dCxkYXRhOihlfHx7fSkuZGF0YX0pKX19KTtCLmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSxmdW5jdGlvbihJKXtmdW5jdGlvbiB0KGUpe3JldHVybiBmdW5jdGlvbihyLGkscyl7cmV0dXJuIHRoaXMucmVxdWVzdChHKHN8fHt9LHttZXRob2Q6SSxoZWFkZXJzOmU/eyJDb250ZW50LVR5cGUiOiJtdWx0aXBhcnQvZm9ybS1kYXRhIn06e30sdXJsOnIsZGF0YTppfSkpfX14LnByb3RvdHlwZVtJXT10KCkseC5wcm90b3R5cGVbSSsiRm9ybSJdPXQoITApfSk7dmFyIEFBPXg7dmFyIFBBPWNsYXNzIEF7Y29uc3RydWN0b3IoSSl7aWYodHlwZW9mIEkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO2xldCB0O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihyKXt0PXJ9KTtsZXQgZT10aGlzO3RoaXMucHJvbWlzZS50aGVuKGc9PntpZighZS5fbGlzdGVuZXJzKXJldHVybjtsZXQgcj1lLl9saXN0ZW5lcnMubGVuZ3RoO2Zvcig7ci0tID4wOyllLl9saXN0ZW5lcnNbcl0oZyk7ZS5fbGlzdGVuZXJzPW51bGx9KSx0aGlzLnByb21pc2UudGhlbj1nPT57bGV0IHIsaT1uZXcgUHJvbWlzZShzPT57ZS5zdWJzY3JpYmUocykscj1zfSkudGhlbihnKTtyZXR1cm4gaS5jYW5jZWw9ZnVuY3Rpb24oKXtlLnVuc3Vic2NyaWJlKHIpfSxpfSxJKGZ1bmN0aW9uKHIsaSxzKXtlLnJlYXNvbnx8KGUucmVhc29uPW5ldyBKKHIsaSxzKSx0KGUucmVhc29uKSl9KX10aHJvd0lmUmVxdWVzdGVkKCl7aWYodGhpcy5yZWFzb24pdGhyb3cgdGhpcy5yZWFzb259c3Vic2NyaWJlKEkpe2lmKHRoaXMucmVhc29uKXtJKHRoaXMucmVhc29uKTtyZXR1cm59dGhpcy5fbGlzdGVuZXJzP3RoaXMuX2xpc3RlbmVycy5wdXNoKEkpOnRoaXMuX2xpc3RlbmVycz1bSV19dW5zdWJzY3JpYmUoSSl7aWYoIXRoaXMuX2xpc3RlbmVycylyZXR1cm47bGV0IHQ9dGhpcy5fbGlzdGVuZXJzLmluZGV4T2YoSSk7dCE9PS0xJiZ0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKHQsMSl9c3RhdGljIHNvdXJjZSgpe2xldCBJO3JldHVybnt0b2tlbjpuZXcgQShmdW5jdGlvbihnKXtJPWd9KSxjYW5jZWw6SX19fSxiST1QQTtmdW5jdGlvbiBqQShBKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIEEuYXBwbHkobnVsbCx0KX19ZnVuY3Rpb24gV0EoQSl7cmV0dXJuIEIuaXNPYmplY3QoQSkmJkEuaXNBeGlvc0Vycm9yPT09ITB9dmFyIFpBPXtDb250aW51ZToxMDAsU3dpdGNoaW5nUHJvdG9jb2xzOjEwMSxQcm9jZXNzaW5nOjEwMixFYXJseUhpbnRzOjEwMyxPazoyMDAsQ3JlYXRlZDoyMDEsQWNjZXB0ZWQ6MjAyLE5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbjoyMDMsTm9Db250ZW50OjIwNCxSZXNldENvbnRlbnQ6MjA1LFBhcnRpYWxDb250ZW50OjIwNixNdWx0aVN0YXR1czoyMDcsQWxyZWFkeVJlcG9ydGVkOjIwOCxJbVVzZWQ6MjI2LE11bHRpcGxlQ2hvaWNlczozMDAsTW92ZWRQZXJtYW5lbnRseTozMDEsRm91bmQ6MzAyLFNlZU90aGVyOjMwMyxOb3RNb2RpZmllZDozMDQsVXNlUHJveHk6MzA1LFVudXNlZDozMDYsVGVtcG9yYXJ5UmVkaXJlY3Q6MzA3LFBlcm1hbmVudFJlZGlyZWN0OjMwOCxCYWRSZXF1ZXN0OjQwMCxVbmF1dGhvcml6ZWQ6NDAxLFBheW1lbnRSZXF1aXJlZDo0MDIsRm9yYmlkZGVuOjQwMyxOb3RGb3VuZDo0MDQsTWV0aG9kTm90QWxsb3dlZDo0MDUsTm90QWNjZXB0YWJsZTo0MDYsUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkOjQwNyxSZXF1ZXN0VGltZW91dDo0MDgsQ29uZmxpY3Q6NDA5LEdvbmU6NDEwLExlbmd0aFJlcXVpcmVkOjQxMSxQcmVjb25kaXRpb25GYWlsZWQ6NDEyLFBheWxvYWRUb29MYXJnZTo0MTMsVXJpVG9vTG9uZzo0MTQsVW5zdXBwb3J0ZWRNZWRpYVR5cGU6NDE1LFJhbmdlTm90U2F0aXNmaWFibGU6NDE2LEV4cGVjdGF0aW9uRmFpbGVkOjQxNyxJbUFUZWFwb3Q6NDE4LE1pc2RpcmVjdGVkUmVxdWVzdDo0MjEsVW5wcm9jZXNzYWJsZUVudGl0eTo0MjIsTG9ja2VkOjQyMyxGYWlsZWREZXBlbmRlbmN5OjQyNCxUb29FYXJseTo0MjUsVXBncmFkZVJlcXVpcmVkOjQyNixQcmVjb25kaXRpb25SZXF1aXJlZDo0MjgsVG9vTWFueVJlcXVlc3RzOjQyOSxSZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2U6NDMxLFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zOjQ1MSxJbnRlcm5hbFNlcnZlckVycm9yOjUwMCxOb3RJbXBsZW1lbnRlZDo1MDEsQmFkR2F0ZXdheTo1MDIsU2VydmljZVVuYXZhaWxhYmxlOjUwMyxHYXRld2F5VGltZW91dDo1MDQsSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQ6NTA1LFZhcmlhbnRBbHNvTmVnb3RpYXRlczo1MDYsSW5zdWZmaWNpZW50U3RvcmFnZTo1MDcsTG9vcERldGVjdGVkOjUwOCxOb3RFeHRlbmRlZDo1MTAsTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6NTExfTtPYmplY3QuZW50cmllcyhaQSkuZm9yRWFjaCgoW0EsSV0pPT57WkFbSV09QX0pO3ZhciBNST1aQTtmdW5jdGlvbiBxSShBKXtsZXQgST1uZXcgQUEoQSksdD1XKEFBLnByb3RvdHlwZS5yZXF1ZXN0LEkpO3JldHVybiBCLmV4dGVuZCh0LEFBLnByb3RvdHlwZSxJLHthbGxPd25LZXlzOiEwfSksQi5leHRlbmQodCxJLG51bGwse2FsbE93bktleXM6ITB9KSx0LmNyZWF0ZT1mdW5jdGlvbihnKXtyZXR1cm4gcUkoRyhBLGcpKX0sdH12YXIgaD1xSShPKTtoLkF4aW9zPUFBO2guQ2FuY2VsZWRFcnJvcj1KO2guQ2FuY2VsVG9rZW49Ykk7aC5pc0NhbmNlbD12O2guVkVSU0lPTj11QTtoLnRvRm9ybURhdGE9TDtoLkF4aW9zRXJyb3I9bDtoLkNhbmNlbD1oLkNhbmNlbGVkRXJyb3I7aC5hbGw9ZnVuY3Rpb24oSSl7cmV0dXJuIFByb21pc2UuYWxsKEkpfTtoLnNwcmVhZD1qQTtoLmlzQXhpb3NFcnJvcj1XQTtoLm1lcmdlQ29uZmlnPUc7aC5BeGlvc0hlYWRlcnM9bTtoLmZvcm1Ub0pTT049QT0+Y0EoQi5pc0hUTUxGb3JtKEEpP25ldyBGb3JtRGF0YShBKTpBKTtoLmdldEFkYXB0ZXI9bEEuZ2V0QWRhcHRlcjtoLkh0dHBTdGF0dXNDb2RlPU1JO2guZGVmYXVsdD1oO3ZhciBkQT1oO3ZhcntBeGlvczpvaSxBeGlvc0Vycm9yOkJpLENhbmNlbGVkRXJyb3I6Q2ksaXNDYW5jZWw6c2ksQ2FuY2VsVG9rZW46UWksVkVSU0lPTjpuaSxhbGw6RWksQ2FuY2VsOmFpLGlzQXhpb3NFcnJvcjpjaSxzcHJlYWQ6ZmksdG9Gb3JtRGF0YTpsaSxBeGlvc0hlYWRlcnM6RGksSHR0cFN0YXR1c0NvZGU6dWksZm9ybVRvSlNPTjpoaSxnZXRBZGFwdGVyOmRpLG1lcmdlQ29uZmlnOnlpfT1kQTt2YXIgSUEsayxYQSxWQT17ZW52OntlbXNjcmlwdGVuX25vdGlmeV9tZW1vcnlfZ3Jvd3RoOmZ1bmN0aW9uKEEpe1hBPW5ldyBVaW50OEFycmF5KGsuZXhwb3J0cy5tZW1vcnkuYnVmZmVyKX19fSx5QT1jbGFzc3tpbml0KCl7cmV0dXJuIElBfHwodHlwZW9mIGZldGNoPCJ1Ij9JQT1mZXRjaCgiZGF0YTphcHBsaWNhdGlvbi93YXNtO2Jhc2U2NCwiK0tJKS50aGVuKEk9PkkuYXJyYXlCdWZmZXIoKSkudGhlbihJPT5XZWJBc3NlbWJseS5pbnN0YW50aWF0ZShJLFZBKSkudGhlbih0aGlzLl9pbml0KTpJQT1XZWJBc3NlbWJseS5pbnN0YW50aWF0ZShCdWZmZXIuZnJvbShLSSwiYmFzZTY0IiksVkEpLnRoZW4odGhpcy5faW5pdCksSUEpfV9pbml0KEkpe2s9SS5pbnN0YW5jZSxWQS5lbnYuZW1zY3JpcHRlbl9ub3RpZnlfbWVtb3J5X2dyb3d0aCgwKX1kZWNvZGUoSSx0PTApe2lmKCFrKXRocm93IG5ldyBFcnJvcigiWlNURERlY29kZXI6IEF3YWl0IC5pbml0KCkgYmVmb3JlIGRlY29kaW5nLiIpO2xldCBlPUkuYnl0ZUxlbmd0aCxnPWsuZXhwb3J0cy5tYWxsb2MoZSk7WEEuc2V0KEksZyksdD10fHxOdW1iZXIoay5leHBvcnRzLlpTVERfZmluZERlY29tcHJlc3NlZFNpemUoZyxlKSk7bGV0IHI9ay5leHBvcnRzLm1hbGxvYyh0KSxpPWsuZXhwb3J0cy5aU1REX2RlY29tcHJlc3Mocix0LGcsZSkscz1YQS5zbGljZShyLHIraSk7cmV0dXJuIGsuZXhwb3J0cy5mcmVlKGcpLGsuZXhwb3J0cy5mcmVlKHIpLHN9fSxLST0iQUdGemJRRUFBQUFCYmc1Z0EzOS9md0YvWUFGL0FYOWdBbjkvQUdBQmZ3QmdCWDkvZjM5L0FYOWdBMzkvZndCZ0JIOS9mMzhCZjJBQUFYOWdBbjkvQVg5Z0IzOS9mMzkvZjM4QmYyQUNmMzhCZm1BSWYzOS9mMzkvZjM4QmYyQUZmMzkvZjM4QVlBNS9mMzkvZjM5L2YzOS9mMzkvZndGL0FpY0JBMlZ1ZGg5bGJYTmpjbWx3ZEdWdVgyNXZkR2xtZVY5dFpXMXZjbmxmWjNKdmQzUm9BQU1ESXlJSEFBQUJBUU1IQXdFQUNRUUFCUUVJQ0FFRkJnUUVCQU1HQUFBS0FBVUxEQTBHQkFVQmNBRUJBUVVIQVFHQUFvQ0FBZ1lJQVg4QlFZQ2pCQXNIcmdFTEJtMWxiVzl5ZVFJQUJtMWhiR3h2WXdBRkJHWnlaV1VBQmd4YVUxUkVYMmx6UlhKeWIzSUFFaGxhVTFSRVgyWnBibVJFWldOdmJYQnlaWE56WldSVGFYcGxBQndQV2xOVVJGOWtaV052YlhCeVpYTnpBQ0laWDE5cGJtUnBjbVZqZEY5bWRXNWpkR2x2Ymw5MFlXSnNaUUVBRUY5ZlpYSnlibTlmYkc5allYUnBiMjRBQVFsemRHRmphMU5oZG1VQUJ3eHpkR0ZqYTFKbGMzUnZjbVVBQ0FwemRHRmphMEZzYkc5akFBa0tpL0lCSWdVQVFZUWZDek1CQVg4Z0FnUkFJQUFoQXdOQUlBTWdBUzBBQURvQUFDQURRUUZxSVFNZ0FVRUJhaUVCSUFKQkFXc2lBZzBBQ3dzZ0FBc3BBUUYvSUFJRVFDQUFJUU1EUUNBRElBRTZBQUFnQTBFQmFpRURJQUpCQVdzaUFnMEFDd3NnQUF0c0FRSi9RWUFmS0FJQUlnRWdBRUVIYWtGNGNTSUNhaUVBQWtBZ0FrRUFJQUFnQVUwYkRRQWdBRDhBUVJCMFN3UkFJQUEvQUVFUWRHdEIvLzhEYWtFUWRrQUFRWDlHQkg5QkFBVkJBQkFBUVFFTFJRMEJDMEdBSHlBQU5nSUFJQUVQQzBHRUgwRXdOZ0lBUVg4THVTY0JDMzhqQUVFUWF5SUtKQUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQjlBRk5CRUJCaUI4b0FnQWlCa0VRSUFCQkMycEJlSEVnQUVFTFNSc2lCVUVEZGlJQWRpSUJRUU54QkVBQ1FDQUJRWDl6UVFGeElBQnFJZ0pCQTNRaUFVR3dIMm9pQUNBQlFiZ2ZhaWdDQUNJQktBSUlJZ1JHQkVCQmlCOGdCa0YrSUFKM2NUWUNBQXdCQ3lBRUlBQTJBZ3dnQUNBRU5nSUlDeUFCUVFocUlRQWdBU0FDUVFOMElnSkJBM0kyQWdRZ0FTQUNhaUlCSUFFb0FnUkJBWEkyQWdRTUR3c2dCVUdRSHlnQ0FDSUhUUTBCSUFFRVFBSkFRUUlnQUhRaUFrRUFJQUpyY2lBQklBQjBjV2dpQVVFRGRDSUFRYkFmYWlJQ0lBQkJ1QjlxS0FJQUlnQW9BZ2dpQkVZRVFFR0lIeUFHUVg0Z0FYZHhJZ1kyQWdBTUFRc2dCQ0FDTmdJTUlBSWdCRFlDQ0FzZ0FDQUZRUU55TmdJRUlBQWdCV29pQ0NBQlFRTjBJZ0VnQldzaUJFRUJjallDQkNBQUlBRnFJQVEyQWdBZ0J3UkFJQWRCZUhGQnNCOXFJUUZCbkI4b0FnQWhBZ0ovSUFaQkFTQUhRUU4yZENJRGNVVUVRRUdJSHlBRElBWnlOZ0lBSUFFTUFRc2dBU2dDQ0FzaEF5QUJJQUkyQWdnZ0F5QUNOZ0lNSUFJZ0FUWUNEQ0FDSUFNMkFnZ0xJQUJCQ0dvaEFFR2NIeUFJTmdJQVFaQWZJQVEyQWdBTUR3dEJqQjhvQWdBaUMwVU5BU0FMYUVFQ2RFRzRJV29vQWdBaUFpZ0NCRUY0Y1NBRmF5RURJQUloQVFOQUFrQWdBU2dDRUNJQVJRUkFJQUVvQWhRaUFFVU5BUXNnQUNnQ0JFRjRjU0FGYXlJQklBTWdBU0FEU1NJQkd5RURJQUFnQWlBQkd5RUNJQUFoQVF3QkN3c2dBaWdDR0NFSklBSWdBaWdDRENJRVJ3UkFRWmdmS0FJQUdpQUNLQUlJSWdBZ0JEWUNEQ0FFSUFBMkFnZ01EZ3NnQWtFVWFpSUJLQUlBSWdCRkJFQWdBaWdDRUNJQVJRMERJQUpCRUdvaEFRc0RRQ0FCSVFnZ0FDSUVRUlJxSWdFb0FnQWlBQTBBSUFSQkVHb2hBU0FFS0FJUUlnQU5BQXNnQ0VFQU5nSUFEQTBMUVg4aEJTQUFRYjkvU3cwQUlBQkJDMm9pQUVGNGNTRUZRWXdmS0FJQUlnaEZEUUJCQUNBRmF5RURBa0FDUUFKQUFuOUJBQ0FGUVlBQ1NRMEFHa0VmSUFWQi8vLy9CMHNOQUJvZ0JVRW1JQUJCQ0habklnQnJka0VCY1NBQVFRRjBhMEUrYWdzaUIwRUNkRUc0SVdvb0FnQWlBVVVFUUVFQUlRQU1BUXRCQUNFQUlBVkJHU0FIUVFGMmEwRUFJQWRCSDBjYmRDRUNBMEFDUUNBQktBSUVRWGh4SUFWcklnWWdBMDhOQUNBQklRUWdCaUlERFFCQkFDRURJQUVoQUF3REN5QUFJQUVvQWhRaUJpQUdJQUVnQWtFZGRrRUVjV29vQWhBaUFVWWJJQUFnQmhzaEFDQUNRUUYwSVFJZ0FRMEFDd3NnQUNBRWNrVUVRRUVBSVFSQkFpQUhkQ0lBUVFBZ0FHdHlJQWh4SWdCRkRRTWdBR2hCQW5SQnVDRnFLQUlBSVFBTElBQkZEUUVMQTBBZ0FDZ0NCRUY0Y1NBRmF5SUNJQU5KSVFFZ0FpQURJQUViSVFNZ0FDQUVJQUViSVFRZ0FDZ0NFQ0lCQkg4Z0FRVWdBQ2dDRkFzaUFBMEFDd3NnQkVVTkFDQURRWkFmS0FJQUlBVnJUdzBBSUFRb0FoZ2hCeUFFSUFRb0Fnd2lBa2NFUUVHWUh5Z0NBQm9nQkNnQ0NDSUFJQUkyQWd3Z0FpQUFOZ0lJREF3TElBUkJGR29pQVNnQ0FDSUFSUVJBSUFRb0FoQWlBRVVOQXlBRVFSQnFJUUVMQTBBZ0FTRUdJQUFpQWtFVWFpSUJLQUlBSWdBTkFDQUNRUkJxSVFFZ0FpZ0NFQ0lBRFFBTElBWkJBRFlDQUF3TEN5QUZRWkFmS0FJQUlnUk5CRUJCbkI4b0FnQWhBQUpBSUFRZ0JXc2lBVUVRVHdSQUlBQWdCV29pQWlBQlFRRnlOZ0lFSUFBZ0JHb2dBVFlDQUNBQUlBVkJBM0kyQWdRTUFRc2dBQ0FFUVFOeU5nSUVJQUFnQkdvaUFTQUJLQUlFUVFGeU5nSUVRUUFoQWtFQUlRRUxRWkFmSUFFMkFnQkJuQjhnQWpZQ0FDQUFRUWhxSVFBTURRc2dCVUdVSHlnQ0FDSUNTUVJBUVpRZklBSWdCV3NpQVRZQ0FFR2dIMEdnSHlnQ0FDSUFJQVZxSWdJMkFnQWdBaUFCUVFGeU5nSUVJQUFnQlVFRGNqWUNCQ0FBUVFocUlRQU1EUXRCQUNFQUlBVkJMMm9pQXdKL1FlQWlLQUlBQkVCQjZDSW9BZ0FNQVF0QjdDSkNmemNDQUVIa0lrS0FvSUNBZ0lBRU53SUFRZUFpSUFwQkRHcEJjSEZCMktyVnFnVnpOZ0lBUWZRaVFRQTJBZ0JCeENKQkFEWUNBRUdBSUFzaUFXb2lCa0VBSUFGcklnaHhJZ0VnQlUwTkRFSEFJaWdDQUNJRUJFQkJ1Q0lvQWdBaUJ5QUJhaUlKSUFkTklBUWdDVWx5RFEwTEFrQkJ4Q0l0QUFCQkJIRkZCRUFDUUFKQUFrQUNRRUdnSHlnQ0FDSUVCRUJCeUNJaEFBTkFJQVFnQUNnQ0FDSUhUd1JBSUFjZ0FDZ0NCR29nQkVzTkF3c2dBQ2dDQ0NJQURRQUxDMEVBRUFRaUFrRi9SZzBESUFFaEJrSGtJaWdDQUNJQVFRRnJJZ1FnQW5FRVFDQUJJQUpySUFJZ0JHcEJBQ0FBYTNGcUlRWUxJQVVnQms4TkEwSEFJaWdDQUNJQUJFQkJ1Q0lvQWdBaUJDQUdhaUlJSUFSTklBQWdDRWx5RFFRTElBWVFCQ0lBSUFKSERRRU1CUXNnQmlBQ2F5QUljU0lHRUFRaUFpQUFLQUlBSUFBb0FnUnFSZzBCSUFJaEFBc2dBRUYvUmcwQklBVkJNR29nQmswRVFDQUFJUUlNQkF0QjZDSW9BZ0FpQWlBRElBWnJha0VBSUFKcmNTSUNFQVJCZjBZTkFTQUNJQVpxSVFZZ0FDRUNEQU1MSUFKQmYwY05BZ3RCeENKQnhDSW9BZ0JCQkhJMkFnQUxJQUVRQkNJQ1FYOUdRUUFRQkNJQVFYOUdjaUFBSUFKTmNnMEZJQUFnQW1zaUJpQUZRU2hxVFEwRkMwRzRJa0c0SWlnQ0FDQUdhaUlBTmdJQVFid2lLQUlBSUFCSkJFQkJ2Q0lnQURZQ0FBc0NRRUdnSHlnQ0FDSURCRUJCeUNJaEFBTkFJQUlnQUNnQ0FDSUJJQUFvQWdRaUJHcEdEUUlnQUNnQ0NDSUFEUUFMREFRTFFaZ2ZLQUlBSWdCQkFDQUFJQUpORzBVRVFFR1lIeUFDTmdJQUMwRUFJUUJCekNJZ0JqWUNBRUhJSWlBQ05nSUFRYWdmUVg4MkFnQkJyQjlCNENJb0FnQTJBZ0JCMUNKQkFEWUNBQU5BSUFCQkEzUWlBVUc0SDJvZ0FVR3dIMm9pQkRZQ0FDQUJRYndmYWlBRU5nSUFJQUJCQVdvaUFFRWdSdzBBQzBHVUh5QUdRU2hySWdCQmVDQUNhMEVIY1NJQmF5SUVOZ0lBUWFBZklBRWdBbW9pQVRZQ0FDQUJJQVJCQVhJMkFnUWdBQ0FDYWtFb05nSUVRYVFmUWZBaUtBSUFOZ0lBREFRTElBSWdBMDBnQVNBRFMzSU5BaUFBS0FJTVFRaHhEUUlnQUNBRUlBWnFOZ0lFUWFBZklBTkJlQ0FEYTBFSGNTSUFhaUlCTmdJQVFaUWZRWlFmS0FJQUlBWnFJZ0lnQUdzaUFEWUNBQ0FCSUFCQkFYSTJBZ1FnQWlBRGFrRW9OZ0lFUWFRZlFmQWlLQUlBTmdJQURBTUxRUUFoQkF3S0MwRUFJUUlNQ0F0Qm1COG9BZ0FnQWtzRVFFR1lIeUFDTmdJQUN5QUNJQVpxSVFGQnlDSWhBQUpBQWtBQ1FBTkFJQUVnQUNnQ0FFY0VRQ0FBS0FJSUlnQU5BUXdDQ3dzZ0FDMEFERUVJY1VVTkFRdEJ5Q0loQUFOQUlBTWdBQ2dDQUNJQlR3UkFJQUVnQUNnQ0JHb2lCQ0FEU3cwREN5QUFLQUlJSVFBTUFBc0FDeUFBSUFJMkFnQWdBQ0FBS0FJRUlBWnFOZ0lFSUFKQmVDQUNhMEVIY1dvaUJ5QUZRUU55TmdJRUlBRkJlQ0FCYTBFSGNXb2lCaUFGSUFkcUlnVnJJUUFnQXlBR1JnUkFRYUFmSUFVMkFnQkJsQjlCbEI4b0FnQWdBR29pQURZQ0FDQUZJQUJCQVhJMkFnUU1DQXRCbkI4b0FnQWdCa1lFUUVHY0h5QUZOZ0lBUVpBZlFaQWZLQUlBSUFCcUlnQTJBZ0FnQlNBQVFRRnlOZ0lFSUFBZ0JXb2dBRFlDQUF3SUN5QUdLQUlFSWdOQkEzRkJBVWNOQmlBRFFYaHhJUWtnQTBIL0FVMEVRQ0FHS0FJTUlnRWdCaWdDQ0NJQ1JnUkFRWWdmUVlnZktBSUFRWDRnQTBFRGRuZHhOZ0lBREFjTElBSWdBVFlDRENBQklBSTJBZ2dNQmdzZ0JpZ0NHQ0VJSUFZZ0JpZ0NEQ0lDUndSQUlBWW9BZ2dpQVNBQ05nSU1JQUlnQVRZQ0NBd0ZDeUFHUVJScUlnRW9BZ0FpQTBVRVFDQUdLQUlRSWdORkRRUWdCa0VRYWlFQkN3TkFJQUVoQkNBRElnSkJGR29pQVNnQ0FDSUREUUFnQWtFUWFpRUJJQUlvQWhBaUF3MEFDeUFFUVFBMkFnQU1CQXRCbEI4Z0JrRW9heUlBUVhnZ0FtdEJCM0VpQVdzaUNEWUNBRUdnSHlBQklBSnFJZ0UyQWdBZ0FTQUlRUUZ5TmdJRUlBQWdBbXBCS0RZQ0JFR2tIMEh3SWlnQ0FEWUNBQ0FESUFSQkp5QUVhMEVIY1dwQkwyc2lBQ0FBSUFOQkVHcEpHeUlCUVJzMkFnUWdBVUhRSWlrQ0FEY0NFQ0FCUWNnaUtRSUFOd0lJUWRBaUlBRkJDR28yQWdCQnpDSWdCallDQUVISUlpQUNOZ0lBUWRRaVFRQTJBZ0FnQVVFWWFpRUFBMEFnQUVFSE5nSUVJQUJCQ0dvZ0FFRUVhaUVBSUFSSkRRQUxJQUVnQTBZTkFDQUJJQUVvQWdSQmZuRTJBZ1FnQXlBQklBTnJJZ0pCQVhJMkFnUWdBU0FDTmdJQUlBSkIvd0ZOQkVBZ0FrRjRjVUd3SDJvaEFBSi9RWWdmS0FJQUlnRkJBU0FDUVFOMmRDSUNjVVVFUUVHSUh5QUJJQUp5TmdJQUlBQU1BUXNnQUNnQ0NBc2hBU0FBSUFNMkFnZ2dBU0FETmdJTUlBTWdBRFlDRENBRElBRTJBZ2dNQVF0Qkh5RUFJQUpCLy8vL0IwMEVRQ0FDUVNZZ0FrRUlkbWNpQUd0MlFRRnhJQUJCQVhSclFUNXFJUUFMSUFNZ0FEWUNIQ0FEUWdBM0FoQWdBRUVDZEVHNElXb2hBUUpBQWtCQmpCOG9BZ0FpQkVFQklBQjBJZ1p4UlFSQVFZd2ZJQVFnQm5JMkFnQWdBU0FETmdJQURBRUxJQUpCR1NBQVFRRjJhMEVBSUFCQkgwY2JkQ0VBSUFFb0FnQWhCQU5BSUFRaUFTZ0NCRUY0Y1NBQ1JnMENJQUJCSFhZaEJDQUFRUUYwSVFBZ0FTQUVRUVJ4YWlJR0tBSVFJZ1FOQUFzZ0JpQUROZ0lRQ3lBRElBRTJBaGdnQXlBRE5nSU1JQU1nQXpZQ0NBd0JDeUFCS0FJSUlnQWdBellDRENBQklBTTJBZ2dnQTBFQU5nSVlJQU1nQVRZQ0RDQURJQUEyQWdnTFFaUWZLQUlBSWdBZ0JVME5BRUdVSHlBQUlBVnJJZ0UyQWdCQm9COUJvQjhvQWdBaUFDQUZhaUlDTmdJQUlBSWdBVUVCY2pZQ0JDQUFJQVZCQTNJMkFnUWdBRUVJYWlFQURBZ0xRWVFmUVRBMkFnQkJBQ0VBREFjTFFRQWhBZ3NnQ0VVTkFBSkFJQVlvQWh3aUFVRUNkRUc0SVdvaUJDZ0NBQ0FHUmdSQUlBUWdBallDQUNBQ0RRRkJqQjlCakI4b0FnQkJmaUFCZDNFMkFnQU1BZ3NnQ0VFUVFSUWdDQ2dDRUNBR1JodHFJQUkyQWdBZ0FrVU5BUXNnQWlBSU5nSVlJQVlvQWhBaUFRUkFJQUlnQVRZQ0VDQUJJQUkyQWhnTElBWW9BaFFpQVVVTkFDQUNJQUUyQWhRZ0FTQUNOZ0lZQ3lBQUlBbHFJUUFnQmlBSmFpSUdLQUlFSVFNTElBWWdBMEYrY1RZQ0JDQUZJQUJCQVhJMkFnUWdBQ0FGYWlBQU5nSUFJQUJCL3dGTkJFQWdBRUY0Y1VHd0gyb2hBUUovUVlnZktBSUFJZ0pCQVNBQVFRTjJkQ0lBY1VVRVFFR0lIeUFBSUFKeU5nSUFJQUVNQVFzZ0FTZ0NDQXNoQUNBQklBVTJBZ2dnQUNBRk5nSU1JQVVnQVRZQ0RDQUZJQUEyQWdnTUFRdEJIeUVESUFCQi8vLy9CMDBFUUNBQVFTWWdBRUVJZG1jaUFXdDJRUUZ4SUFGQkFYUnJRVDVxSVFNTElBVWdBellDSENBRlFnQTNBaEFnQTBFQ2RFRzRJV29oQVFKQUFrQkJqQjhvQWdBaUFrRUJJQU4wSWdSeFJRUkFRWXdmSUFJZ0JISTJBZ0FnQVNBRk5nSUFEQUVMSUFCQkdTQURRUUYyYTBFQUlBTkJIMGNiZENFRElBRW9BZ0FoQWdOQUlBSWlBU2dDQkVGNGNTQUFSZzBDSUFOQkhYWWhBaUFEUVFGMElRTWdBU0FDUVFSeGFpSUVLQUlRSWdJTkFBc2dCQ0FGTmdJUUN5QUZJQUUyQWhnZ0JTQUZOZ0lNSUFVZ0JUWUNDQXdCQ3lBQktBSUlJZ0FnQlRZQ0RDQUJJQVUyQWdnZ0JVRUFOZ0lZSUFVZ0FUWUNEQ0FGSUFBMkFnZ0xJQWRCQ0dvaEFBd0NDd0pBSUFkRkRRQUNRQ0FFS0FJY0lnQkJBblJCdUNGcUlnRW9BZ0FnQkVZRVFDQUJJQUkyQWdBZ0FnMEJRWXdmSUFoQmZpQUFkM0VpQ0RZQ0FBd0NDeUFIUVJCQkZDQUhLQUlRSUFSR0cyb2dBallDQUNBQ1JRMEJDeUFDSUFjMkFoZ2dCQ2dDRUNJQUJFQWdBaUFBTmdJUUlBQWdBallDR0FzZ0JDZ0NGQ0lBUlEwQUlBSWdBRFlDRkNBQUlBSTJBaGdMQWtBZ0EwRVBUUVJBSUFRZ0F5QUZhaUlBUVFOeU5nSUVJQUFnQkdvaUFDQUFLQUlFUVFGeU5nSUVEQUVMSUFRZ0JVRURjallDQkNBRUlBVnFJZ0lnQTBFQmNqWUNCQ0FDSUFOcUlBTTJBZ0FnQTBIL0FVMEVRQ0FEUVhoeFFiQWZhaUVBQW45QmlCOG9BZ0FpQVVFQklBTkJBM1owSWdOeFJRUkFRWWdmSUFFZ0EzSTJBZ0FnQUF3QkN5QUFLQUlJQ3lFQklBQWdBallDQ0NBQklBSTJBZ3dnQWlBQU5nSU1JQUlnQVRZQ0NBd0JDMEVmSVFBZ0EwSC8vLzhIVFFSQUlBTkJKaUFEUVFoMlp5SUFhM1pCQVhFZ0FFRUJkR3RCUG1vaEFBc2dBaUFBTmdJY0lBSkNBRGNDRUNBQVFRSjBRYmdoYWlFQkFrQUNRQ0FJUVFFZ0FIUWlCbkZGQkVCQmpCOGdCaUFJY2pZQ0FDQUJJQUkyQWdBTUFRc2dBMEVaSUFCQkFYWnJRUUFnQUVFZlJ4dDBJUUFnQVNnQ0FDRUZBMEFnQlNJQktBSUVRWGh4SUFOR0RRSWdBRUVkZGlFR0lBQkJBWFFoQUNBQklBWkJCSEZxSWdZb0FoQWlCUTBBQ3lBR0lBSTJBaEFMSUFJZ0FUWUNHQ0FDSUFJMkFnd2dBaUFDTmdJSURBRUxJQUVvQWdnaUFDQUNOZ0lNSUFFZ0FqWUNDQ0FDUVFBMkFoZ2dBaUFCTmdJTUlBSWdBRFlDQ0FzZ0JFRUlhaUVBREFFTEFrQWdDVVVOQUFKQUlBSW9BaHdpQUVFQ2RFRzRJV29pQVNnQ0FDQUNSZ1JBSUFFZ0JEWUNBQ0FFRFFGQmpCOGdDMEYrSUFCM2NUWUNBQXdDQ3lBSlFSQkJGQ0FKS0FJUUlBSkdHMm9nQkRZQ0FDQUVSUTBCQ3lBRUlBazJBaGdnQWlnQ0VDSUFCRUFnQkNBQU5nSVFJQUFnQkRZQ0dBc2dBaWdDRkNJQVJRMEFJQVFnQURZQ0ZDQUFJQVEyQWhnTEFrQWdBMEVQVFFSQUlBSWdBeUFGYWlJQVFRTnlOZ0lFSUFBZ0Ftb2lBQ0FBS0FJRVFRRnlOZ0lFREFFTElBSWdCVUVEY2pZQ0JDQUNJQVZxSWdRZ0EwRUJjallDQkNBRElBUnFJQU0yQWdBZ0J3UkFJQWRCZUhGQnNCOXFJUUJCbkI4b0FnQWhBUUovUVFFZ0IwRURkblFpQlNBR2NVVUVRRUdJSHlBRklBWnlOZ0lBSUFBTUFRc2dBQ2dDQ0FzaEJpQUFJQUUyQWdnZ0JpQUJOZ0lNSUFFZ0FEWUNEQ0FCSUFZMkFnZ0xRWndmSUFRMkFnQkJrQjhnQXpZQ0FBc2dBa0VJYWlFQUN5QUtRUkJxSkFBZ0FBdlNDd0VIZndKQUlBQkZEUUFnQUVFSWF5SUNJQUJCQkdzb0FnQWlBVUY0Y1NJQWFpRUZBa0FnQVVFQmNRMEFJQUZCQTNGRkRRRWdBaUFDS0FJQUlnRnJJZ0pCbUI4b0FnQkpEUUVnQUNBQmFpRUFBa0FDUUVHY0h5Z0NBQ0FDUndSQUlBRkIvd0ZOQkVBZ0FVRURkaUVFSUFJb0Fnd2lBU0FDS0FJSUlnTkdCRUJCaUI5QmlCOG9BZ0JCZmlBRWQzRTJBZ0FNQlFzZ0F5QUJOZ0lNSUFFZ0F6WUNDQXdFQ3lBQ0tBSVlJUVlnQWlBQ0tBSU1JZ0ZIQkVBZ0FpZ0NDQ0lESUFFMkFnd2dBU0FETmdJSURBTUxJQUpCRkdvaUJDZ0NBQ0lEUlFSQUlBSW9BaEFpQTBVTkFpQUNRUkJxSVFRTEEwQWdCQ0VISUFNaUFVRVVhaUlFS0FJQUlnTU5BQ0FCUVJCcUlRUWdBU2dDRUNJRERRQUxJQWRCQURZQ0FBd0NDeUFGS0FJRUlnRkJBM0ZCQTBjTkFrR1FIeUFBTmdJQUlBVWdBVUYrY1RZQ0JDQUNJQUJCQVhJMkFnUWdCU0FBTmdJQUR3dEJBQ0VCQ3lBR1JRMEFBa0FnQWlnQ0hDSURRUUowUWJnaGFpSUVLQUlBSUFKR0JFQWdCQ0FCTmdJQUlBRU5BVUdNSDBHTUh5Z0NBRUYrSUFOM2NUWUNBQXdDQ3lBR1FSQkJGQ0FHS0FJUUlBSkdHMm9nQVRZQ0FDQUJSUTBCQ3lBQklBWTJBaGdnQWlnQ0VDSURCRUFnQVNBRE5nSVFJQU1nQVRZQ0dBc2dBaWdDRkNJRFJRMEFJQUVnQXpZQ0ZDQURJQUUyQWhnTElBSWdCVThOQUNBRktBSUVJZ0ZCQVhGRkRRQUNRQUpBQWtBQ1FDQUJRUUp4UlFSQVFhQWZLQUlBSUFWR0JFQkJvQjhnQWpZQ0FFR1VIMEdVSHlnQ0FDQUFhaUlBTmdJQUlBSWdBRUVCY2pZQ0JDQUNRWndmS0FJQVJ3MEdRWkFmUVFBMkFnQkJuQjlCQURZQ0FBOExRWndmS0FJQUlBVkdCRUJCbkI4Z0FqWUNBRUdRSDBHUUh5Z0NBQ0FBYWlJQU5nSUFJQUlnQUVFQmNqWUNCQ0FBSUFKcUlBQTJBZ0FQQ3lBQlFYaHhJQUJxSVFBZ0FVSC9BVTBFUUNBQlFRTjJJUVFnQlNnQ0RDSUJJQVVvQWdnaUEwWUVRRUdJSDBHSUh5Z0NBRUYrSUFSM2NUWUNBQXdGQ3lBRElBRTJBZ3dnQVNBRE5nSUlEQVFMSUFVb0FoZ2hCaUFGSUFVb0Fnd2lBVWNFUUVHWUh5Z0NBQm9nQlNnQ0NDSURJQUUyQWd3Z0FTQUROZ0lJREFNTElBVkJGR29pQkNnQ0FDSURSUVJBSUFVb0FoQWlBMFVOQWlBRlFSQnFJUVFMQTBBZ0JDRUhJQU1pQVVFVWFpSUVLQUlBSWdNTkFDQUJRUkJxSVFRZ0FTZ0NFQ0lERFFBTElBZEJBRFlDQUF3Q0N5QUZJQUZCZm5FMkFnUWdBaUFBUVFGeU5nSUVJQUFnQW1vZ0FEWUNBQXdEQzBFQUlRRUxJQVpGRFFBQ1FDQUZLQUljSWdOQkFuUkJ1Q0ZxSWdRb0FnQWdCVVlFUUNBRUlBRTJBZ0FnQVEwQlFZd2ZRWXdmS0FJQVFYNGdBM2R4TmdJQURBSUxJQVpCRUVFVUlBWW9BaEFnQlVZYmFpQUJOZ0lBSUFGRkRRRUxJQUVnQmpZQ0dDQUZLQUlRSWdNRVFDQUJJQU0yQWhBZ0F5QUJOZ0lZQ3lBRktBSVVJZ05GRFFBZ0FTQUROZ0lVSUFNZ0FUWUNHQXNnQWlBQVFRRnlOZ0lFSUFBZ0Ftb2dBRFlDQUNBQ1Fad2ZLQUlBUncwQVFaQWZJQUEyQWdBUEN5QUFRZjhCVFFSQUlBQkJlSEZCc0I5cUlRRUNmMEdJSHlnQ0FDSURRUUVnQUVFRGRuUWlBSEZGQkVCQmlCOGdBQ0FEY2pZQ0FDQUJEQUVMSUFFb0FnZ0xJUUFnQVNBQ05nSUlJQUFnQWpZQ0RDQUNJQUUyQWd3Z0FpQUFOZ0lJRHd0Qkh5RURJQUJCLy8vL0IwMEVRQ0FBUVNZZ0FFRUlkbWNpQVd0MlFRRnhJQUZCQVhSclFUNXFJUU1MSUFJZ0F6WUNIQ0FDUWdBM0FoQWdBMEVDZEVHNElXb2hBUUpBQWtBQ1FFR01IeWdDQUNJRVFRRWdBM1FpQjNGRkJFQkJqQjhnQkNBSGNqWUNBQ0FCSUFJMkFnQWdBaUFCTmdJWURBRUxJQUJCR1NBRFFRRjJhMEVBSUFOQkgwY2JkQ0VESUFFb0FnQWhBUU5BSUFFaUJDZ0NCRUY0Y1NBQVJnMENJQU5CSFhZaEFTQURRUUYwSVFNZ0JDQUJRUVJ4YWlJSFFSQnFLQUlBSWdFTkFBc2dCeUFDTmdJUUlBSWdCRFlDR0FzZ0FpQUNOZ0lNSUFJZ0FqWUNDQXdCQ3lBRUtBSUlJZ0FnQWpZQ0RDQUVJQUkyQWdnZ0FrRUFOZ0lZSUFJZ0JEWUNEQ0FDSUFBMkFnZ0xRYWdmUWFnZktBSUFRUUZySWdCQmZ5QUFHellDQUFzTEJBQWpBQXNHQUNBQUpBQUxFQUFqQUNBQWEwRndjU0lBSkFBZ0FBdEtBUUYvSUFBZ0FVa0VRQ0FBSUFFZ0FoQUNEd3NnQWdSQUlBQWdBbW9oQXlBQklBSnFJUUVEUUNBRFFRRnJJZ01nQVVFQmF5SUJMUUFBT2dBQUlBSkJBV3NpQWcwQUN3c2dBQXY5RGdJUmZ3RitJd0JCTUdzaUJ5UUFRYmgvSVFnQ1FDQUZSUTBBSUFRc0FBQWlDVUgvQVhFaEN3SkFJQWxCQUVnRVFDQUxRZjRBYTBFQmRpSUdJQVZQRFFKQmJDRUlJQXRCL3dCcklndEIvd0ZMRFFJZ0JFRUJhaUVJUVFBaEJRTkFJQVVnQzA4RVFDQUxJUWdnQmlFTERBTUZJQUFnQldvZ0NDQUZRUUYyYWlJRUxRQUFRUVIyT2dBQUlBQWdCVUVCY21vZ0JDMEFBRUVQY1RvQUFDQUZRUUpxSVFVTUFRc0FDd0FMSUFVZ0MwME5BU0FIUWY4Qk5nSUVJQVlnQjBFRWFpQUhRUWhxSUFSQkFXb2lEaUFMRUF3aUJFR0lmMHNFUUNBRUlRZ01BZ3RCVkNFSUlBY29BZ2dpRUVFR1N3MEJJQWNvQWdRaUVVRUJkQ0lKUVFKcXJVSUJJQkN0aGlJWVFRRWdFSFFpRFVFQmFpSUZyVUlDaG54OFFndDhRdnovLy8vLy8vLy8vd0NEUXVRQ1ZnMEJRVkloQ0NBUlFmOEJTdzBCSUExQmYzTkJBblJCNUFKcXJTQVJRUUZxSWhWQkFYU3RJQmg4UWdoOFZBMEJJQXNnQkdzaEZpQUVJQTVxSVJjZ0JrR0FCR29pRWlBRlFRSjBhaUlSSUFscVFRSnFJUTRnQmtHRUJHb2hFMEdBZ0FJZ0VIUkJFSFloQ1VFQUlRVkJBU0VQSUExQkFXc2lGQ0VLQTBBZ0JTQVZSa1VFUUFKQUlBWWdCVUVCZENJSWFpOEJBQ0lFUWYvL0EwWUVRQ0FUSUFwQkFuUnFJQVU2QUFJZ0NrRUJheUVLUVFFaEJBd0JDeUFQUVFBZ0NTQUV3VW9iSVE4TElBZ2dFV29nQkRzQkFDQUZRUUZxSVFVTUFRc0xJQVlnRHpzQmdnUWdCaUFRT3dHQUJBSkFJQW9nRkVZRVFDQU5RUU4ySVFoQ0FDRVlRUUFoRHdOQUlBd2dGVVlFUUNBSUlBMUJBWFpxUVFOcUlnbEJBWFFoQ0VFQUlRUkJBQ0VLQTBCQkFDRUZJQW9nRFU4TkJBTkFJQVZCQWtaRkJFQWdFeUFGSUFsc0lBUnFJQlJ4UVFKMGFpQU9JQVVnQ21wcUxRQUFPZ0FDSUFWQkFXb2hCUXdCQ3dzZ0NrRUNhaUVLSUFRZ0NHb2dGSEVoQkF3QUN3QUZJQVlnREVFQmRHb3VBUUFoQ1NBT0lBOXFJZ1FnR0RjQUFFRUlJUVVEUUNBRklBbE9SUVJBSUFRZ0JXb2dHRGNBQUNBRlFRaHFJUVVNQVFzTElCaENnWUtFaUpDZ3dJQUJmQ0VZSUF4QkFXb2hEQ0FKSUE5cUlROE1BUXNBQ3dBTElBMUJBM1lnRFVFQmRtcEJBMm9oQ0VFQUlRVURRQ0FNSUJWR1JRUkFRUUFoQ1NBR0lBeEJBWFJxTGdFQUlnUkJBQ0FFUVFCS0d5RUVBMEFnQkNBSlJrVUVRQ0FUSUFWQkFuUnFJQXc2QUFJRFFDQUZJQWhxSUJSeElnVWdDa3NOQUFzZ0NVRUJhaUVKREFFTEN5QU1RUUZxSVF3TUFRc0xRWDhoQ0NBRkRRSUxJQkJCQVdvaENFRUFJUVVEUUNBRklBMUdSUVJBSUJFZ0V5QUZRUUowYWlJT0xRQUNRUUYwYWlJRUlBUXZBUUFpQ1VFQmFqc0JBQ0FPSUFnZ0NXZEJZSE5xSWdRNkFBTWdEaUFKSUFSMElBMXJPd0VBSUFWQkFXb2hCUXdCQ3dzQ1FBSkFJQVl2QVlJRUJFQWdCMEVjYWlJRUlCY2dGaEFOSWdoQmlIOUxEUUlnQjBFVWFpQUVJQklRRGlBSFFReHFJQVFnRWhBT1FRQWhCUU5BSUFkQkhHb2lCQkFQSUFWQit3RkxjZzBDSUFBZ0JXb2lCaUFIUVJScUlBUVFFRG9BQUNBR0lBZEJER29nQkJBUU9nQUJJQVZCQW5JaEJDQUhRUnhxRUE4RVFDQUVJUVVNQXdVZ0FDQUVhaUFIUVJScUlBZEJIR29pQkJBUU9nQUFJQVlnQjBFTWFpQUVFQkE2QUFNZ0JVRUVhaUVGREFFTEFBc0FDeUFIUVJ4cUlnUWdGeUFXRUEwaUNFR0lmMHNOQVNBSFFSUnFJQVFnRWhBT0lBZEJER29nQkNBU0VBNUJBQ0VGQTBBZ0IwRWNhaUlFRUE4Z0JVSDdBVXR5UlFSQUlBQWdCV29pQmlBSFFSUnFJQVFRRVRvQUFDQUdJQWRCREdvZ0JCQVJPZ0FCSUFWQkFuSWhCQ0FIUVJ4cUVBOEVRQ0FFSVFVRklBQWdCR29nQjBFVWFpQUhRUnhxSWdRUUVUb0FBQ0FHSUFkQkRHb2dCQkFST2dBRElBVkJCR29oQlF3Q0N3c0xBbjhEUUVHNmZ5RUlJQVZCL1FGTERRTWdBQ0FGYWlJR0lBZEJGR29nQjBFY2FpSUpFQkU2QUFBZ0JrRUJhaUVFSUFrUUQwRURSZ1JBSUFkQkRHb2hDRUVDREFJTElBVkIvQUZMRFFNZ0JpQUhRUXhxSUFkQkhHb2lCQkFST2dBQklBVkJBbW9oQlNBRUVBOUJBMGNOQUFzZ0FDQUZhaUVFSUFkQkZHb2hDRUVEQ3lBRUlBZ2dCMEVjYWhBUk9nQUFJQVpxSUFCcklRZ01BUXNDZndOQVFicC9JUWdnQlVIOUFVc05BaUFBSUFWcUlnWWdCMEVVYWlBSFFSeHFJZ2tRRURvQUFDQUdRUUZxSVFRZ0NSQVBRUU5HQkVBZ0IwRU1haUVJUVFJTUFnc2dCVUg4QVVzTkFpQUdJQWRCREdvZ0IwRWNhaUlFRUJBNkFBRWdCVUVDYWlFRklBUVFEMEVEUncwQUN5QUFJQVZxSVFRZ0IwRVVhaUVJUVFNTElBUWdDQ0FIUVJ4cUVCQTZBQUFnQm1vZ0FHc2hDQXNnQ0VHSWYwc05BUXNnQ0NFRVFRQWhCU0FCUVFCQk5CQURJUWxCQUNFS0EwQWdCQ0FGUndSQUlBQWdCV29pQmkwQUFDSUJRUXRMQkVCQmJDRUlEQU1GSUFrZ0FVRUNkR29pQVNBQktBSUFRUUZxTmdJQUlBVkJBV29oQlVFQklBWXRBQUIwUVFGMUlBcHFJUW9NQWdzQUN3dEJiQ0VJSUFwRkRRQWdDbWNpQlVFZmN5SUJRUXRMRFFBZ0EwRWdJQVZyTmdJQVFRRkJBaUFCZENBS2F5SURaMEVmY3lJQmRDQURSdzBBSUFBZ0JHb2dBVUVCYWlJQU9nQUFJQWtnQUVFQ2RHb2lBQ0FBS0FJQVFRRnFOZ0lBSUFrb0FnUWlBRUVDU1NBQVFRRnhjZzBBSUFJZ0JFRUJhallDQUNBTFFRRnFJUWdMSUFkQk1Hb2tBQ0FJQzZBRkFReC9Jd0JCRUdzaURDUUFBbjhnQkVFSFRRUkFJQXhDQURjRENDQU1RUWhxSWdVZ0F5QUVFQUlhUVd3Z0FDQUJJQUlnQlVFSUVBd2lBQ0FBSUFSTEd5QUFJQUJCaVg5Skd3d0JDeUFBUVFBZ0FTZ0NBRUVCYWlJTlFRRjBFQU1oRDBGVUlBTW9BQUFpQmtFUGNTSUFRUXBMRFFBYUlBSWdBRUVGYWpZQ0FDQURJQVJxSWdKQkJHc2hCeUFDUVFkcklRc2dBRUVHYWlFT1FRUWhBaUFHUVFSMklRVkJJQ0FBZENJSVFRRnlJUWxCQUNFQVFRRWhCaUFESVFRRFFBSkFJQVpCQVhGRkJFQURRQ0FGUVg5elFZQ0FnSUI0Y21naUJrRVlTVVVFUUNBQVFTUnFJUUFnQkNBTFRRUi9JQVJCQTJvRklBUWdDMnRCQTNRZ0FtcEJIM0VoQWlBSEN5SUVLQUFBSUFKMklRVU1BUXNMSUFJZ0JrRWVjU0lLYWtFQ2FpRUNJQVpCQVhaQkEyd2dBR29nQlNBS2RrRURjV29pQUNBTlR3MEJBbjhnQkNBTFN5QUNRUU4ySUFScUlnVWdCMHR4UlFSQUlBSkJCM0VoQWlBRkRBRUxJQVFnQjJ0QkEzUWdBbXBCSDNFaEFpQUhDeUlFS0FBQUlBSjJJUVVMSUFVZ0NFRUJhM0VpQmlBSVFRRjBRUUZySWdvZ0NXc2lFRWtFZnlBT1FRRnJCU0FGSUFweElnVWdFRUVBSUFVZ0NFNGJheUVHSUE0TElRVWdEeUFBUVFGMGFpQUdRUUZySWdvN0FRQWdBRUVCYWlFQUlBSWdCV29oQWlBSVFRRWdCbXNnQ2lBR1FRQktHeUFKYWlJSlNnUkFJQWxCQWtnTkFVRWdJQWxuSWdWcklRNUJBU0FGUVI5emRDRUlDeUFBSUExUERRQWdDa0VBUnlFR0FuOGdCQ0FMU3lBQ1FRTjFJQVJxSWdVZ0IwdHhSUVJBSUFKQkIzRWhBaUFGREFFTElBSWdCQ0FIYTBFRGRHcEJIM0VoQWlBSEN5SUVLQUFBSUFKMklRVU1BUXNMUVd3Z0NVRUJSdzBBR2tGUUlBQWdEVXNOQUJwQmJDQUNRU0JLRFFBYUlBRWdBRUVCYXpZQ0FDQUVJQUpCQjJwQkEzVnFJQU5yQ3lBTVFSQnFKQUFMOGdFQkFYOGdBa1VFUUNBQVFnQTNBZ0FnQUVFQU5nSVFJQUJDQURjQ0NFRzRmdzhMSUFBZ0FUWUNEQ0FBSUFGQkJHbzJBaEFnQWtFRVR3UkFJQUFnQVNBQ2FpSUJRUVJySWdNMkFnZ2dBQ0FES0FBQU5nSUFJQUZCQVdzdEFBQWlBUVJBSUFBZ0FXZEJGMnMyQWdRZ0FnOExJQUJCQURZQ0JFRi9Ed3NnQUNBQk5nSUlJQUFnQVMwQUFDSUROZ0lBQWtBQ1FBSkFJQUpCQW1zT0FnRUFBZ3NnQUNBQkxRQUNRUkIwSUFOeUlnTTJBZ0FMSUFBZ0FTMEFBVUVJZENBRGFqWUNBQXNnQVNBQ2FrRUJheTBBQUNJQlJRUkFJQUJCQURZQ0JFRnNEd3NnQUNBQlp5QUNRUU4wYTBFSmFqWUNCQ0FDQzBRQkFuOGdBU0FDTHdFQUlnTWdBU2dDQkdvaUJEWUNCQ0FBSUFOQkFuUkJvQjFxS0FJQUlBRW9BZ0JCQUNBRWEzWnhOZ0lBSUFFUUR4b2dBQ0FDUVFScU5nSUVDNThCQVFSL1FRTWhBU0FBS0FJRUlnSkJJRTBFUUNBQUtBSUlJZ0VnQUNnQ0VFOEVRQ0FBSUFKQkIzRTJBZ1FnQUNBQklBSkJBM1pySWdJMkFnZ2dBQ0FDS0FBQU5nSUFRUUFQQ3lBQUtBSU1JZ01nQVVZRVFFRUJRUUlnQWtFZ1NSc1BDeUFBSUFFZ0FTQURheUFDUVFOMklnUWdBU0FFYXlBRFNTSUJHeUlEYXlJRU5nSUlJQUFnQWlBRFFRTjBhellDQkNBQUlBUW9BQUEyQWdBTElBRUxTQUVFZnlBQUtBSUVJQUFvQWdCQkFuUnFJZ0l0QUFJZ0FpOEJBQ0VFSUFFZ0FTZ0NCQ0lGSUFJdEFBTWlBbW8yQWdRZ0FDQUVJQUVvQWdBZ0JYUkJBQ0FDYTNacU5nSUFDMUlCQkg4Z0FDZ0NCQ0FBS0FJQVFRSjBhaUlDTFFBQ0lBSXZBUUFoQkNBQklBSXRBQU1pQWlBQktBSUVhaUlGTmdJRUlBQWdCQ0FDUVFKMFFhQWRhaWdDQUNBQktBSUFRUUFnQld0MmNXbzJBZ0FMQ0FBZ0FFR0lmMHNMR2dBZ0FBUkFJQUVFUUNBQ0lBQWdBUkVDQUE4TElBQVFCZ3NMcGdnQ0RYOEJmaU1BUVJCcklna2tBQ0FKUVFBMkFnd2dDVUVBTmdJSUFuOENRQ0FEUWVnSmFpQURJQWxCQ0dvZ0NVRU1haUFCSUFJZ0EwR0FBV29RQ3lJUFFZaC9TdzBBUVZRZ0NTZ0NEQ0lFSUFBb0FnQWlBVUgvQVhGQkFXcExEUUVhSUFCQkJHb2hDeUFBSUFGQi80R0FlSEVnQkVFUWRFR0FnUHdIY1hJMkFnQkJmeUFFSUFSQkFFZ2JRUUZxSVFCQkFDRUJJQWtvQWdnaEJVRUFJUUlEUUNBQUlBSkdCRUFnQlVFRGF5RUJRUUFoQUFOQUFrQkJBQ0VDSUFBZ0FVNEVRQU5BSUFBZ0JVNE5BaUFESUFBZ0EycEI2QWxxTFFBQVFRSjBha0ZBYXlJQklBRW9BZ0FpQVVFQmFqWUNBQ0FCSUFOcUlBQTZBT2dISUFCQkFXb2hBQXdBQ3dBRkEwQWdBa0VFUmtVRVFDQURJQU1nQUNBQ2FpSUhha0hvQ1dvdEFBQkJBblJxUVVCcklnZ2dDQ2dDQUNJSVFRRnFOZ0lBSUFNZ0NHb2dCem9BNkFjZ0FrRUJhaUVDREFFTEN5QUFRUVJxSVFBTUFnc0FDd3NnQkVFQmFpRU9JQU1vQWdBaEIwRUFJUUJCQVNFSUEwQWdDQ0FPUmcwRElBNGdDR3NoQkNBRElBaEJBblJxS0FJQUlRVUNRQUpBQWtBQ1FBSkFBa0JCQVNBSWRFRUJkU0lOUVFGckRnZ0FBUVFDQkFRRUF3UUxRUUFoQWlBRlFRQWdCVUVBU2hzaEJpQUFJUUVEUUNBQ0lBWkdEUVVnQXlBQ0lBZHFhaTBBNkFjaENpQUxJQUZCQVhScUlnd2dCRG9BQVNBTUlBbzZBQUFnQWtFQmFpRUNJQUZCQVdvaEFRd0FDd0FMUVFBaEFpQUZRUUFnQlVFQVNoc2hDaUFBSVFFRFFDQUNJQXBHRFFRZ0N5QUJRUUYwYWlJR0lBTWdBaUFIYW1vdEFPZ0hJZ3c2QUFJZ0JpQUVPZ0FCSUFZZ0REb0FBQ0FHSUFRNkFBTWdBa0VCYWlFQ0lBRkJBbW9oQVF3QUN3QUxRUUFoQWlBRlFRQWdCVUVBU2hzaEJpQUVRUWgwUVlEK0EzRWhCQ0FBSVFFRFFDQUNJQVpHRFFNZ0N5QUJRUUYwYWlBRUlBTWdBaUFIYW1vdEFPZ0hjcTFDZ1lDRWdKQ0F3QUIrTndBQUlBSkJBV29oQWlBQlFRUnFJUUVNQUFzQUMwRUFJUUlnQlVFQUlBVkJBRW9iSVFZZ0JFRUlkRUdBL2dOeElRUWdBQ0VCQTBBZ0FpQUdSZzBDSUFzZ0FVRUJkR29pQ2lBRUlBTWdBaUFIYW1vdEFPZ0hjcTFDZ1lDRWdKQ0F3QUIrSWhFM0FBZ2dDaUFSTndBQUlBSkJBV29oQWlBQlFRaHFJUUVNQUFzQUMwRUFJUUVnQlVFQUlBVkJBRW9iSVFvZ0JFRUlkRUdBL2dOeElRd2dBQ0VFQTBBZ0FTQUtSZzBCSUFzZ0JFRUJkR29oRUNBTUlBTWdBU0FIYW1vdEFPZ0hjcTFDZ1lDRWdKQ0F3QUIrSVJGQkFDRUNBMEFnQWlBTlRrVUVRQ0FRSUFKQkFYUnFJZ1lnRVRjQUdDQUdJQkUzQUJBZ0JpQVJOd0FJSUFZZ0VUY0FBQ0FDUVJCcUlRSU1BUXNMSUFGQkFXb2hBU0FFSUExcUlRUU1BQXNBQ3lBSVFRRnFJUWdnQlNBSGFpRUhJQVVnRFd3Z0FHb2hBQXdBQ3dBRklBTWdBa0VDZEdvaUIwRkFheUFCTmdJQUlBSkJBV29oQWlBSEtBSUFJQUZxSVFFTUFRc0FDd0FMSUE4TElBbEJFR29rQUF2eUFnRUdmeU1BUVNCcklnVWtBQ0FFS0FJQUlRWWdCVUVNYWlBQ0lBTVFEU0lEUVloL1RRUkFJQVJCQkdvaEFpQUFJQUZxSWdsQkEyc2hCRUVBSUFaQkVIWnJRUjl4SVFNRFFDQUZRUXhxRUE4Z0FDQUVUM0pGQkVBZ0FpQUZLQUlNSWdZZ0JTZ0NFQ0lIZENBRGRrRUJkR29pQ0MwQUFTRUtJQUFnQ0MwQUFEb0FBQ0FDSUFZZ0J5QUthaUlHZENBRGRrRUJkR29pQnkwQUFDRUlJQVVnQmlBSExRQUJhallDRUNBQUlBZzZBQUVnQUVFQ2FpRUFEQUVMQ3dOQUlBVkJER29RRHlFSElBVW9BZ3doQmlBRktBSVFJUVFnQUNBSlR5QUhja1VFUUNBQ0lBWWdCSFFnQTNaQkFYUnFJZ1l0QUFBaEJ5QUZJQVFnQmkwQUFXbzJBaEFnQUNBSE9nQUFJQUJCQVdvaEFBd0JDd3NEUUNBQUlBbFBSUVJBSUFJZ0JpQUVkQ0FEZGtFQmRHb2lCeTBBQVNFSUlBQWdCeTBBQURvQUFDQUFRUUZxSVFBZ0JDQUlhaUVFREFFTEMwRnNRV3dnQVNBRktBSVVJQVVvQWhoSEd5QUVRU0JIR3lFREN5QUZRU0JxSkFBZ0F3dlBGQUVqZnlNQVFkQUFheUlGSkFCQmJDRUpBa0FnQTBFS1NRMEFBa0FnQXlBQ0x3QUVJZ2NnQWk4QUFDSUlJQUl2QUFJaURXcHFRUVpxSWd4SkRRQWdCQzhCQWlFR0lBVkJQR29nQWtFR2FpSUNJQWdRRFNJSlFZaC9TdzBCSUFWQktHb2dBaUFJYWlJQ0lBMFFEU0lKUVloL1N3MEJJQVZCRkdvZ0FpQU5haUlDSUFjUURTSUpRWWgvU3cwQklBVWdBaUFIYWlBRElBeHJFQTBpQ1VHSWYwc05BU0FFUVFScUlRb2dBQ0FCYWlJZlFRTnJJU0JCQUNBR2EwRWZjU0VMSUFVb0FnZ2hFU0FGS0FJY0lSSWdCU2dDTUNFVElBVW9Ba1FoRkNBRktBSUVJUWtnQlNnQ0dDRU5JQVVvQWl3aERDQUZLQUpBSVFZZ0JTZ0NFQ0VoSUFVb0FpUWhJaUFGS0FJNElTTWdCU2dDVENFa0lBVW9BZ0FoRlNBRktBSVVJUllnQlNnQ0tDRVhJQVVvQWp3aEdFRUJJUThnQUNBQlFRTnFRUUoySWdScUlnTWdCR29pQWlBRWFpSVpJUVFnQWlFSUlBTWhCd05BSUE5QkFYRkZJQVFnSUU5eVJRUkFJQUFnQ2lBWUlBWjBJQXQyUVFKMGFpSU9Md0VBT3dBQUlBNHRBQUloR2lBT0xRQURJUkFnQnlBS0lCY2dESFFnQzNaQkFuUnFJZzR2QVFBN0FBQWdEaTBBQWlFYklBNHRBQU1oRHlBSUlBb2dGaUFOZENBTGRrRUNkR29pRGk4QkFEc0FBQ0FPTFFBQ0lSd2dEaTBBQXlFZElBUWdDaUFWSUFsMElBdDJRUUowYWlJT0x3RUFPd0FBSUE0dEFBSWhIaUFPTFFBRElRNGdBQ0FRYWlJbElBb2dHQ0FHSUJwcUlnWjBJQXQyUVFKMGFpSVFMd0VBT3dBQUlCQXRBQUlnRUMwQUF5RW1JQWNnRDJvaUp5QUtJQmNnRENBYmFpSWFkQ0FMZGtFQ2RHb2lCeThCQURzQUFDQUhMUUFDSVF3Z0J5MEFBeUVRSUFnZ0hXb2lHeUFLSUJZZ0RTQWNhaUlQZENBTGRrRUNkR29pQ0M4QkFEc0FBQ0FJTFFBQ0lRMGdDQzBBQXlFY0lBUWdEbW9pSFNBS0lCVWdDU0FlYWlJT2RDQUxka0VDZEdvaUNTOEJBRHNBQUNBR2FpRUFRUU1oQndKL0lCUWdKRWtFUUNBQUlRWkJBd3dCQ3lBQVFRZHhJUVlnRkNBQVFRTjJheUlVS0FBQUlSaEJBQXNnQ1MwQUF5RWVJQWt0QUFJaENDQU1JQnBxSVFBZ0V5QWpTUVIvSUFBRklCTWdBRUVEZG1zaUV5Z0FBQ0VYUVFBaEJ5QUFRUWR4Q3lFTUlBMGdEMm9oQUNBSGNpRUpRUU1oRHdKL0lCSWdJa2tFUUNBQUlRMUJBd3dCQ3lBQVFRZHhJUTBnRWlBQVFRTjJheUlTS0FBQUlSWkJBQXNnQ0NBT2FpRUFJQWx5SUJFZ0lVa0VmeUFBQlNBUklBQkJBM1pySWhFb0FBQWhGVUVBSVE4Z0FFRUhjUXNoQ1NBbElDWnFJUUFnRUNBbmFpRUhJQnNnSEdvaENDQWRJQjVxSVFRZ0QzSkZJUThNQVFzTElBVWdERFlDTENBRklBWTJBa0FnQlNBTk5nSVlJQVVnQ1RZQ0JDQUZJQlEyQWtRZ0JTQVROZ0l3SUFVZ0VqWUNIQ0FGSUJFMkFnZ2dCU0FZTmdJOElBVWdGellDS0NBRklCWTJBaFFnQlNBVk5nSUFJQUlnQjBrZ0FDQURTM0lOQUVGc0lRa2dDQ0FaU3cwQklBTkJBMnNoQ1FOQUlBVkJQR29RRDBVZ0FDQUpTWEVFUUNBQUlBb2dCU2dDUENJTklBVW9Ba0FpREhRZ0MzWkJBblJxSWc0dkFRQTdBQUFnQUNBT0xRQURhaUlHSUFvZ0RTQU1JQTR0QUFKcUlnQjBJQXQyUVFKMGFpSU1Md0VBT3dBQUlBVWdBQ0FNTFFBQ2FqWUNRQ0FHSUF3dEFBTnFJUUFNQVFVZ0EwRUNheUVNQTBBZ0JVRThhaEFQSVFZZ0JTZ0NQQ0VOSUFVb0FrQWhDU0FBSUF4TElBWnlSUVJBSUFBZ0NpQU5JQWwwSUF0MlFRSjBhaUlHTHdFQU93QUFJQVVnQ1NBR0xRQUNhallDUUNBQUlBWXRBQU5xSVFBTUFRc0xBMEFnQUNBTVMwVUVRQ0FBSUFvZ0RTQUpkQ0FMZGtFQ2RHb2lCaThCQURzQUFDQUFJQVl0QUFOcUlRQWdDU0FHTFFBQ2FpRUpEQUVMQ3dKQUlBQWdBMDhOQUNBQUlBb2dEU0FKZENBTGRpSUFRUUowYWlJRExRQUFPZ0FBSUFNdEFBTkJBVVlFUUNBSklBTXRBQUpxSVFrTUFRc2dDVUVmU3cwQVFTQWdDU0FLSUFCQkFuUnFMUUFDYWlJQUlBQkJJRThiSVFrTElBSkJBMnNoREFOQUlBVkJLR29RRDBVZ0J5QU1TWEVFUUNBSElBb2dCU2dDS0NJR0lBVW9BaXdpQUhRZ0MzWkJBblJxSWcwdkFRQTdBQUFnQnlBTkxRQURhaUlESUFvZ0JpQUFJQTB0QUFKcUlnQjBJQXQyUVFKMGFpSUdMd0VBT3dBQUlBVWdBQ0FHTFFBQ2FqWUNMQ0FESUFZdEFBTnFJUWNNQVFVZ0FrRUNheUVHQTBBZ0JVRW9haEFQSVFNZ0JTZ0NLQ0VNSUFVb0Fpd2hBQ0FHSUFkSklBTnlSUVJBSUFjZ0NpQU1JQUIwSUF0MlFRSjBhaUlETHdFQU93QUFJQVVnQUNBRExRQUNhallDTENBSElBTXRBQU5xSVFjTUFRc0xBMEFnQmlBSFNVVUVRQ0FISUFvZ0RDQUFkQ0FMZGtFQ2RHb2lBeThCQURzQUFDQUhJQU10QUFOcUlRY2dBQ0FETFFBQ2FpRUFEQUVMQ3dKQUlBSWdCMDBOQUNBSElBb2dEQ0FBZENBTGRpSUNRUUowYWlJRExRQUFPZ0FBSUFNdEFBTkJBVVlFUUNBQUlBTXRBQUpxSVFBTUFRc2dBRUVmU3cwQVFTQWdBQ0FLSUFKQkFuUnFMUUFDYWlJQUlBQkJJRThiSVFBTElCbEJBMnNoREFOQUlBVkJGR29RRDBVZ0NDQU1TWEVFUUNBSUlBb2dCU2dDRkNJR0lBVW9BaGdpQW5RZ0MzWkJBblJxSWcwdkFRQTdBQUFnQ0NBTkxRQURhaUlESUFvZ0JpQUNJQTB0QUFKcUlnSjBJQXQyUVFKMGFpSUdMd0VBT3dBQUlBVWdBaUFHTFFBQ2FqWUNHQ0FESUFZdEFBTnFJUWdNQVFVZ0dVRUNheUVEQTBBZ0JVRVVhaEFQSVFJZ0JTZ0NGQ0VHSUFVb0FoZ2hCeUFESUFoSklBSnlSUVJBSUFnZ0NpQUdJQWQwSUF0MlFRSjBhaUlDTHdFQU93QUFJQVVnQnlBQ0xRQUNhallDR0NBSUlBSXRBQU5xSVFnTUFRc0xBMEFnQXlBSVNVVUVRQ0FJSUFvZ0JpQUhkQ0FMZGtFQ2RHb2lBaThCQURzQUFDQUlJQUl0QUFOcUlRZ2dCeUFDTFFBQ2FpRUhEQUVMQ3dKQUlBZ2dHVThOQUNBSUlBb2dCaUFIZENBTGRpSUNRUUowYWlJRExRQUFPZ0FBSUFNdEFBTkJBVVlFUUNBSElBTXRBQUpxSVFjTUFRc2dCMEVmU3cwQVFTQWdCeUFLSUFKQkFuUnFMUUFDYWlJQ0lBSkJJRThiSVFjTEEwQWdCUkFQUlNBRUlDQkpjUVJBSUFRZ0NpQUZLQUlBSWdZZ0JTZ0NCQ0lDZENBTGRrRUNkR29pREM4QkFEc0FBQ0FFSUF3dEFBTnFJZ01nQ2lBR0lBSWdEQzBBQW1vaUFuUWdDM1pCQW5ScUlnUXZBUUE3QUFBZ0JTQUNJQVF0QUFKcU5nSUVJQU1nQkMwQUEyb2hCQXdCQlNBZlFRSnJJUU1EUUNBRkVBOGhBaUFGS0FJQUlRWWdCU2dDQkNFSUlBTWdCRWtnQW5KRkJFQWdCQ0FLSUFZZ0NIUWdDM1pCQW5ScUlnSXZBUUE3QUFBZ0JTQUlJQUl0QUFKcU5nSUVJQVFnQWkwQUEyb2hCQXdCQ3dzRFFDQURJQVJKUlFSQUlBUWdDaUFHSUFoMElBdDJRUUowYWlJQ0x3RUFPd0FBSUFRZ0FpMEFBMm9oQkNBSUlBSXRBQUpxSVFnTUFRc0xBa0FnQkNBZlR3MEFJQVFnQ2lBR0lBaDBJQXQySWdKQkFuUnFJZ010QUFBNkFBQWdBeTBBQTBFQlJnUkFJQWdnQXkwQUFtb2hDQXdCQ3lBSVFSOUxEUUJCSUNBSUlBb2dBa0VDZEdvdEFBSnFJZ0lnQWtFZ1R4c2hDQXRCYkVGc1FXeEJiRUZzUVd4QmJFRnNJQUVnQ0VFZ1J4c2dCU2dDQ0NBRktBSU1SeHNnQjBFZ1J4c2dCU2dDSENBRktBSWdSeHNnQUVFZ1J4c2dCU2dDTUNBRktBSTBSeHNnQ1VFZ1J4c2dCU2dDUkNBRktBSklSeHNoQ1F3SkN3QUxBQXNBQ3dBTEFBc0FDd0FMQUF0QmJDRUpDeUFGUWRBQWFpUUFJQWtMN0JBQkhuOGpBRUhRQUdzaUJTUUFRV3doQ1FKQUlBTkJDa2tOQUFKQUlBTWdBaThBQkNJR0lBSXZBQUFpQnlBQ0x3QUNJZ2hxYWtFR2FpSU9TUTBBSUFRdkFRSWhEeUFGUVR4cUlBSkJCbW9pQWlBSEVBMGlDVUdJZjBzTkFTQUZRU2hxSUFJZ0Iyb2lBaUFJRUEwaUNVR0lmMHNOQVNBRlFSUnFJQUlnQ0dvaUFpQUdFQTBpQ1VHSWYwc05BU0FGSUFJZ0Jtb2dBeUFPYXhBTklnbEJpSDlMRFFFZ0JFRUVhaUVLSUFBZ0FXb2lIRUVEYXlFZFFRQWdEMnRCSDNFaEN5QUZLQUlJSVJFZ0JTZ0NIQ0VTSUFVb0FqQWhFeUFGS0FKRUlSUWdCU2dDQkNFSklBVW9BaGdoQmlBRktBSXNJUWNnQlNnQ1FDRUlJQVVvQWhBaEhpQUZLQUlrSVI4Z0JTZ0NPQ0VnSUFVb0Frd2hJU0FGS0FJQUlSVWdCU2dDRkNFV0lBVW9BaWdoRnlBRktBSThJUmhCQVNFTklBQWdBVUVEYWtFQ2RpSUNhaUlPSUFKcUlnOGdBbW9pR1NFRUlBOGhBaUFPSVFNRFFDQU5SU0FFSUIxUGNrVUVRQ0FLSUJnZ0NIUWdDM1pCQVhScUlnd3RBQUVoRFNBQUlBd3RBQUE2QUFBZ0NpQVhJQWQwSUF0MlFRRjBhaUlNTFFBQklSQWdBeUFNTFFBQU9nQUFJQW9nRmlBR2RDQUxka0VCZEdvaURDMEFBU0VhSUFJZ0RDMEFBRG9BQUNBS0lCVWdDWFFnQzNaQkFYUnFJZ3d0QUFFaEd5QUVJQXd0QUFBNkFBQWdDaUFZSUFnZ0RXb2lDSFFnQzNaQkFYUnFJZ3d0QUFFaERTQUFJQXd0QUFBNkFBRWdDaUFYSUFjZ0VHb2lCM1FnQzNaQkFYUnFJZ3d0QUFFaEVDQURJQXd0QUFBNkFBRWdDaUFXSUFZZ0dtb2lESFFnQzNaQkFYUnFJZ1l0QUFFaEdpQUNJQVl0QUFBNkFBRWdDaUFWSUFrZ0cyb2lHM1FnQzNaQkFYUnFJZ2t0QUFFaElpQUVJQWt0QUFBNkFBRWdDQ0FOYWlFR1FRTWhDUUovSUJRZ0lVa0VRRUVESVEwZ0Jnd0JDeUFVSUFaQkEzWnJJaFFvQUFBaEdFRUFJUTBnQmtFSGNRc2hDQ0FISUJCcUlRWWdFeUFnU1FSL0lBWUZJQk1nQmtFRGRtc2lFeWdBQUNFWFFRQWhDU0FHUVFkeEN5RUhJQXdnR21vaERDQUpJQTF5SVJCQkF5RU5BbjhnRWlBZlNRUkFJQXdoQmtFRERBRUxJQXhCQjNFaEJpQVNJQXhCQTNackloSW9BQUFoRmtFQUN5QWJJQ0pxSVF3Z0VISWhFQ0FSSUI1SkJIOGdEQVVnRVNBTVFRTjJheUlSS0FBQUlSVkJBQ0VOSUF4QkIzRUxJUWtnQkVFQ2FpRUVJQUpCQW1vaEFpQURRUUpxSVFNZ0FFRUNhaUVBSUEwZ0VISkZJUTBNQVFzTElBVWdCellDTENBRklBZzJBa0FnQlNBR05nSVlJQVVnQ1RZQ0JDQUZJQlEyQWtRZ0JTQVROZ0l3SUFVZ0VqWUNIQ0FGSUJFMkFnZ2dCU0FZTmdJOElBVWdGellDS0NBRklCWTJBaFFnQlNBVk5nSUFJQUFnRGtzZ0F5QVBTM0lOQUVGc0lRa2dBaUFaU3cwQklBNUJBMnNoQ1FOQUlBVkJQR29RRHlBQUlBbFBja1VFUUNBS0lBVW9BandpQmlBRktBSkFJZ2QwSUF0MlFRRjBhaUlJTFFBQklRd2dBQ0FJTFFBQU9nQUFJQW9nQmlBSElBeHFJZ1owSUF0MlFRRjBhaUlITFFBQUlRZ2dCU0FHSUFjdEFBRnFOZ0pBSUFBZ0NEb0FBU0FBUVFKcUlRQU1BUXNMQTBBZ0JVRThhaEFQSVFjZ0JTZ0NQQ0VHSUFVb0FrQWhDU0FBSUE1UElBZHlSUVJBSUFvZ0JpQUpkQ0FMZGtFQmRHb2lCaTBBQUNFSElBVWdDU0FHTFFBQmFqWUNRQ0FBSUFjNkFBQWdBRUVCYWlFQURBRUxDd05BSUFBZ0RrOUZCRUFnQ2lBR0lBbDBJQXQyUVFGMGFpSUhMUUFCSUFBZ0J5MEFBRG9BQUNBQVFRRnFJUUFnQ1dvaENRd0JDd3NnRDBFRGF5RUFBMEFnQlVFb2FoQVBJQUFnQTAxeVJRUkFJQW9nQlNnQ0tDSUdJQVVvQWl3aUIzUWdDM1pCQVhScUlnZ3RBQUVoRGlBRElBZ3RBQUE2QUFBZ0NpQUdJQWNnRG1vaUJuUWdDM1pCQVhScUlnY3RBQUFoQ0NBRklBWWdCeTBBQVdvMkFpd2dBeUFJT2dBQklBTkJBbW9oQXd3QkN3c0RRQ0FGUVNocUVBOGhCeUFGS0FJb0lRWWdCU2dDTENFQUlBTWdEMDhnQjNKRkJFQWdDaUFHSUFCMElBdDJRUUYwYWlJR0xRQUFJUWNnQlNBQUlBWXRBQUZxTmdJc0lBTWdCem9BQUNBRFFRRnFJUU1NQVFzTEEwQWdBeUFQVDBVRVFDQUtJQVlnQUhRZ0MzWkJBWFJxSWdjdEFBRWhDQ0FESUFjdEFBQTZBQUFnQTBFQmFpRURJQUFnQ0dvaEFBd0JDd3NnR1VFRGF5RURBMEFnQlVFVWFoQVBJQUlnQTA5eVJRUkFJQW9nQlNnQ0ZDSUdJQVVvQWhnaUIzUWdDM1pCQVhScUlnZ3RBQUVoRGlBQ0lBZ3RBQUE2QUFBZ0NpQUdJQWNnRG1vaUJuUWdDM1pCQVhScUlnY3RBQUFoQ0NBRklBWWdCeTBBQVdvMkFoZ2dBaUFJT2dBQklBSkJBbW9oQWd3QkN3c0RRQ0FGUVJScUVBOGhCeUFGS0FJVUlRWWdCU2dDR0NFRElBSWdHVThnQjNKRkJFQWdDaUFHSUFOMElBdDJRUUYwYWlJR0xRQUFJUWNnQlNBRElBWXRBQUZxTmdJWUlBSWdCem9BQUNBQ1FRRnFJUUlNQVFzTEEwQWdBaUFaVDBVRVFDQUtJQVlnQTNRZ0MzWkJBWFJxSWdjdEFBRWhDQ0FDSUFjdEFBQTZBQUFnQWtFQmFpRUNJQU1nQ0dvaEF3d0JDd3NEUUNBRkVBOGdCQ0FkVDNKRkJFQWdDaUFGS0FJQUlnSWdCU2dDQkNJR2RDQUxka0VCZEdvaUJ5MEFBU0VJSUFRZ0J5MEFBRG9BQUNBS0lBSWdCaUFJYWlJQ2RDQUxka0VCZEdvaUJpMEFBQ0VISUFVZ0FpQUdMUUFCYWpZQ0JDQUVJQWM2QUFFZ0JFRUNhaUVFREFFTEN3TkFJQVVRRHlFSElBVW9BZ0FoQmlBRktBSUVJUUlnQkNBY1R5QUhja1VFUUNBS0lBWWdBblFnQzNaQkFYUnFJZ1l0QUFBaEJ5QUZJQUlnQmkwQUFXbzJBZ1FnQkNBSE9nQUFJQVJCQVdvaEJBd0JDd3NEUUNBRUlCeFBSUVJBSUFvZ0JpQUNkQ0FMZGtFQmRHb2lCeTBBQVNFSUlBUWdCeTBBQURvQUFDQUVRUUZxSVFRZ0FpQUlhaUVDREFFTEMwRnNRV3hCYkVGc1FXeEJiRUZzUVd3Z0FTQUNRU0JIR3lBRktBSUlJQVVvQWd4SEd5QURRU0JIR3lBRktBSWNJQVVvQWlCSEd5QUFRU0JIR3lBRktBSXdJQVVvQWpSSEd5QUpRU0JIR3lBRktBSkVJQVVvQWtoSEd5RUpEQUVMUVd3aENRc2dCVUhRQUdva0FDQUpDMWdCQTM4Q1FDQUFLQUtRNndFaUFVVU5BQ0FCS0FJQUlBRkJ0TlVCYWlnQ0FDSUNJQUZCdU5VQmFpZ0NBQ0lERUJNZ0FnUkFJQU1nQVNBQ0VRSUFEQUVMSUFFUUJnc2dBRUVBTmdLZzZ3RWdBRUlBTndPUTZ3RUw2UU1DQkg4Q2ZpQUFRUUJCS0JBRElRUWdBa0VCUVFVZ0F4c2lBRWtFUUNBQUR3c2dBVVVFUUVGL0R3dEJBU0VHQWtBQ1FDQURRUUZHRFFBZ0F5RUdJQUVvQUFBaUJVR282cjVwUmcwQVFYWWhBeUFGUVhCeFFkRFV0TUlCUncwQlFRZ2hBeUFDUVFoSkRRRWdBVFVBQkNFSUlBUkJBVFlDRkNBRUlBZzNBd0JCQUE4TElBRWdBaUFHRUJvaUF5QUNTdzBBSUFRZ0F6WUNHRUZ5SVFNZ0FDQUJhaUlGUVFGckxRQUFJZ0pCQ0hFTkFDQUNRU0J4SWdaRkJFQkJjQ0VESUFVdEFBQWlCVUduQVVzTkFTQUZRUWR4clVJQklBVkJBM1pCQ21xdGhpSUlRZ09JZmlBSWZDRUpJQUJCQVdvaEFBc2dBa0VHZGlFRklBSkJBblpCQUNFREFrQUNRQUpBQWtBZ0FrRURjVUVCYXc0REFBRUNBd3NnQUNBQmFpMEFBQ0VESUFCQkFXb2hBQXdDQ3lBQUlBRnFMd0FBSVFNZ0FFRUNhaUVBREFFTElBQWdBV29vQUFBaEF5QUFRUVJxSVFBTFFRRnhJUUlDZmdKQUFrQUNRQUpBSUFWQkFXc09Bd0VDQXdBTFFuOGdCa1VOQXhvZ0FDQUJhakVBQUF3REN5QUFJQUZxTXdBQVFvQUNmQXdDQ3lBQUlBRnFOUUFBREFFTElBQWdBV29wQUFBTElRZ2dCQ0FDTmdJZ0lBUWdBellDSENBRUlBZzNBd0JCQUNFRElBUkJBRFlDRkNBRUlBZ2dDU0FHR3lJSU53TUlJQVJDZ0lBSUlBZ2dDRUtBZ0FoYUd6NENFQXNnQXd0ZkFRRi9RYmgvSVFNZ0FVRUJRUVVnQWhzaUFrOEVmeUFBSUFKcVFRRnJMUUFBSWdCQkEzRkJBblJCb0I1cUtBSUFJQUpxSUFCQkJIWkJESEZCc0I1cUtBSUFhaUFBUVNCeElnRkZhaUFCUVFWMklBQkJ3QUJKY1dvRlFiaC9Dd3NNQUNBQUlBRWdBa0VBRUJrTGx3TUNCWDhDZmlNQVFVQnFJZ1FrQUFKQUEwQWdBVUVGVHdSQUFrQWdBQ2dBQUVGd2NVSFExTFRDQVVZRVFFSitJUWNnQVVFSVNRMEVJQUFvQUFRaUFrRjNTdzBFSUFKQkNHb2lBeUFCU3cwRUlBSkJnWDlKRFFFTUJBc2dCRUVZYWlBQUlBRVFHeUVDUW40Z0JDa0RHRUlBSUFRb0FpeEJBVWNiSUFJYklnZENmVllOQXlBSElBaDhJZ2dnQjFSQ2ZpRUhEUU1DUUFKQUlBRkJDRWtOQUNBQUtBQUFRWEJ4UWREVXRNSUJSdzBBSUFBb0FBUWlBa0YzU3cwRlFiaC9JQUpCQ0dvaUFpQUJJQUpKR3lFRERBRUxJQVJCR0dvZ0FDQUJFQnNpQWtHSWYwc0VRQ0FDSVFNTUFRdEJ1SDhoQXlBQ0RRQWdBU0FFS0FJd0lnSnJJUVVnQUNBQ2FpRUdBMEFnQmlBRklBUkJER29RSFNJRFFZaC9TdzBCSUFOQkEyb2lBaUFGU3dSQVFiaC9JUU1NQWdzZ0JTQUNheUVGSUFJZ0Jtb2hCaUFFS0FJUVJRMEFDeUFFS0FJNEJIOUJ1SDhoQXlBRlFRUkpEUUVnQmtFRWFnVWdCZ3NnQUdzaEF3c2dBMEdJZjBzTkF3c2dBU0FEYXlFQklBQWdBMm9oQUF3QkN3dENmaUFJSUFFYklRY0xJQVJCUUdza0FDQUhDMlFCQVg5QnVIOGhBd0pBSUFGQkEwa05BQ0FBTFFBQ0lRRWdBaUFBTHdBQUlnQkJBWEUyQWdRZ0FpQUFRUUYyUVFOeElnTTJBZ0FnQWlBQUlBRkJFSFJ5UVFOMklnQTJBZ2dDUUFKQUlBTkJBV3NPQXdJQkFBRUxRV3dQQ3lBQUlRTUxJQU1MUkFFQ2Z5QUJJQUlvQWdRaUF5QUJLQUlFYWlJRU5nSUVJQUFnQTBFQ2RFR2dIV29vQWdBZ0FTZ0NBRUVBSUFScmRuRTJBZ0FnQVJBUEdpQUFJQUpCQ0dvMkFnUUx6Z0VCQm45QnVuOGhDZ0pBSUFJb0FnUWlDQ0FDS0FJQUlnbHFJZzBnQVNBQWEwc05BRUZzSVFvZ0NTQUVJQU1vQWdBaUMydExEUUFnQUNBSmFpSUVJQUlvQWdnaURHc2hBaUFBSUFGQklHc2lBQ0FMSUFsQkFCQWdJQU1nQ1NBTGFqWUNBQUpBQWtBZ0JDQUZheUFNVHdSQUlBSWhCUXdCQ3lBTUlBUWdCbXRMRFFJZ0J5QUhJQUlnQldzaUFtb2lBU0FJYWs4RVFDQUVJQUVnQ0JBS0dnd0NDeUFDSUFocUlRZ2dCQ0FCUVFBZ0Ftc1FDaUFDYXlFRUN5QUVJQUFnQlNBSVFRRVFJQXNnRFNFS0N5QUtDOGNFQVFKL0lBQWdBMm9oQmdKQUlBTkJCMHdFUUFOQUlBQWdCazhOQWlBQUlBSXRBQUE2QUFBZ0FFRUJhaUVBSUFKQkFXb2hBZ3dBQ3dBTElBUkJBVVlFUUFKQUlBQWdBbXNpQlVFSFRRUkFJQUFnQWkwQUFEb0FBQ0FBSUFJdEFBRTZBQUVnQUNBQ0xRQUNPZ0FDSUFBZ0FpMEFBem9BQXlBQUlBSWdCVUVDZENJRlFjQWVhaWdDQUdvaUFpZ0FBRFlBQkNBQ0lBVkI0QjVxS0FJQWF5RUNEQUVMSUFBZ0Fpa0FBRGNBQUFzZ0FrRUlhaUVDSUFCQkNHb2hBQXNnQVNBR1R3UkFJQUFnQTJvaEFTQUVRUUZISUFBZ0FtdEJEMHB5UlFSQUEwQWdBQ0FDS1FBQU53QUFJQUpCQ0dvaEFpQUFRUWhxSWdBZ0FVa05BQXdEQ3dBTElBQWdBaWtBQURjQUFDQUFJQUlwQUFnM0FBZ2dBMEVSU1EwQklBQkJFR29oQUFOQUlBQWdBaWtBRURjQUFDQUFJQUlwQUJnM0FBZ2dBQ0FDS1FBZ053QVFJQUFnQWlrQUtEY0FHQ0FDUVNCcUlRSWdBRUVnYWlJQUlBRkpEUUFMREFFTEFrQWdBQ0FCU3dSQUlBQWhBUXdCQ3lBQklBQnJJUVVDUUNBRVFRRkhJQUFnQW10QkQwcHlSUVJBSUFJaEF3TkFJQUFnQXlrQUFEY0FBQ0FEUVFocUlRTWdBRUVJYWlJQUlBRkpEUUFMREFFTElBQWdBaWtBQURjQUFDQUFJQUlwQUFnM0FBZ2dCVUVSU0EwQUlBQkJFR29oQUNBQ0lRTURRQ0FBSUFNcEFCQTNBQUFnQUNBREtRQVlOd0FJSUFBZ0F5a0FJRGNBRUNBQUlBTXBBQ2czQUJnZ0EwRWdhaUVESUFCQklHb2lBQ0FCU1EwQUN3c2dBaUFGYWlFQ0N3TkFJQUVnQms4TkFTQUJJQUl0QUFBNkFBQWdBVUVCYWlFQklBSkJBV29oQWd3QUN3QUxDNjRIQWdWL0FYNGpBRUdBQVdzaUVTUUFJQkVnQXpZQ2ZFRi9JUThDUUFKQUFrQUNRQUpBSUFJT0JBRUFBd0lFQ3lBR1JRUkFRYmgvSVE4TUJBdEJiQ0VQSUFVdEFBQWlBaUFEU3cwRElBZ2dBa0VDZENJQ2FpZ0NBQ0VESUFJZ0Iyb29BZ0FoQWlBQVFRQTZBQXNnQUVJQU53SUFJQUFnQWpZQ0RDQUFJQU02QUFvZ0FFRUFPd0VJSUFFZ0FEWUNBRUVCSVE4TUF3c2dBU0FKTmdJQVFRQWhEd3dDQ3lBS1JRUkFRV3doRHd3Q0MwRUFJUThnQzBVZ0RFRVpTSElOQVVFSUlBUjBRUWhxSVFCQkFDRURBMEFnQUNBRFRRMENJQU5CUUdzaEF3d0FDd0FMUVd3aER5QVJJQkZCL0FCcUlCRkIrQUJxSUFVZ0JoQU1JZ05CaUg5TERRQWdFU2dDZUNJQ0lBUkxEUUFnRVNnQ2ZFRUJhaUVKSUFCQkNHb2hDMEdBZ0FJZ0FuUkJFSFVoQlVFQklSQkJBU0FDZENJUFFRRnJJZ29oRWdOQUlBa2dEa2NFUUFKQUlCRWdEa0VCZENJRWFpOEJBQ0lNUWYvL0EwWUVRQ0FMSUJKQkEzUnFJQTQyQWdRZ0VrRUJheUVTUVFFaERBd0JDeUFRUVFBZ0JTQU13VW9iSVJBTElBUWdEV29nRERzQkFDQU9RUUZxSVE0TUFRc0xJQUFnQWpZQ0JDQUFJQkEyQWdBQ1FDQUtJQkpHQkVBZ0RVSHFBR29oQmtFQUlSQkJBQ0VNQTBBZ0NTQVFSZ1JBSUE5QkEzWWdEMEVCZG1wQkEyb2lCVUVCZENFRVFRQWhERUVBSVJJRFFFRUFJUTRnRHlBU1RRMEVBMEFnRGtFQ1J3UkFJQXNnQlNBT2JDQU1haUFLY1VFRGRHb2dCaUFPSUJKcWFpMEFBRFlDQkNBT1FRRnFJUTRNQVFzTElCSkJBbW9oRWlBRUlBeHFJQXB4SVF3TUFBc0FCU0FSSUJCQkFYUnFMZ0VBSVFVZ0JpQU1haUlFSUJNM0FBQkJDQ0VPQTBBZ0JTQU9TZ1JBSUFRZ0Rtb2dFemNBQUNBT1FRaHFJUTRNQVFzTElCTkNnWUtFaUpDZ3dJQUJmQ0VUSUJCQkFXb2hFQ0FGSUF4cUlRd01BUXNBQ3dBTElBOUJBM1lnRDBFQmRtcEJBMm9oQlVFQUlSQkJBQ0VPQTBBZ0NTQVFSZzBCUVFBaERDQVJJQkJCQVhScUxnRUFJZ1JCQUNBRVFRQktHeUVFQTBBZ0JDQU1Sd1JBSUFzZ0RrRURkR29nRURZQ0JBTkFJQVVnRG1vZ0NuRWlEaUFTU3cwQUN5QU1RUUZxSVF3TUFRc0xJQkJCQVdvaEVBd0FDd0FMSUFKQkFXb2hCVUVBSVF3RFFDQU1JQTlIQkVBZ0RTQUxJQXhCQTNScUlna29BZ1FpQkVFQmRHb2lBaUFDTHdFQUlnWkJBV283QVFBZ0NTQUZJQVpuUVdCemFpSUNPZ0FESUFrZ0JpQUNkQ0FQYXpzQkFDQUpJQWdnQkVFQ2RDSUNhaWdDQURvQUFpQUpJQUlnQjJvb0FnQTJBZ1FnREVFQmFpRU1EQUVMQ3lBQklBQTJBZ0FnQXlFUEN5QVJRWUFCYWlRQUlBOEw3Vm9DTzM4R2ZpTUFRZUFCYXlJRUpBQUNRRUd3N0FrUUJTSUZSUVJBUVVBaEJ3d0JDeUFGUWdBM0F2VHFBU0FGUVFBMkFzVHJBU0FGUVFBMkFyVHJBU0FGUWdBM0FwenJBU0FGUVFBMkFyanBBU0FGUVFBMkFxenNDU0FGUWdBM0F0VHJBU0FGUWdBM0FxenJBU0FGUWdBM0E0anJBU0FGUWdBM0F1VHFBU0FGUWdBM0F1VHJBU0FGUVlHQWdNQUFOZ0s4NndFZ0JVSUFOd0trNndFZ0JVSDg2Z0ZxUVFBMkFnQWdCVUdRNndGcVFnQTNBd0FnQlJBWUlBVkJyTlVCYWlFVUlBVkIrT3NCYWlFY0lBVkJzT29CYWlFaUlBVkJvREJxSVNvZ0JVR1lJR29oS3lBRlFhalFBR29oSGlBRlFSQnFJU3dnQlVFSWFpRW9JQVZCQkdvaExTQUZRY0RwQVdvaEtTQUZRWWpyQVdvZ0JFR1VBV29oTHlBRVFZd0JhaUV3SUFSQmhBRnFJVEVnQkVIY0FHb2hNaUFFUWRRQWFpRXpJQVJCekFCcUlUUWdBQ0VkQWtBQ1FBSkFBa0FDUUFOQVFRRkJCU0FGS0FMazZnRWJJUVlDUUFOQUlBTWdCa2tOQVNBQ0tBQUFRWEJ4UWREVXRNSUJSZ1JBUWJoL0lRY2dBMEVJU1EwSUlBSW9BQVFpRGtGM1N3UkFRWEloQnd3SkN5QURJQTVCQ0dvaUNVa05DQ0FPUVlCL1N3UkFJQWtoQnd3SkN5QURJQWxySVFNZ0FpQUphaUVDREFFTEN5QUZRZ0EzQXF6cEFTQUZRZ0EzQStqcEFTQUZRUUEyQXBqckFTQUZRZ0EzQTREcUFTQUZRZ00zQS9qcEFTQUZRYlRwQVdwQ0FEY0NBQ0FGUWZEcEFXcENBRGNEQUNBRlFhalFBR29pQ1VHTWdJRGdBRFlDQUNBRlFhelFBV3BCNEJJcEFnQTNBZ0FnQlVHMDBBRnFRZWdTS0FJQU5nSUFJQVVnQlVFUWFqWUNBQ0FGSUFWQm9EQnFOZ0lFSUFVZ0JVR1lJR28yQWdnZ0JTQUpOZ0lNSUFWQkFVRUZJQVVvQXVUcUFSczJBcnpwQVFKQUlBRkZEUUFnQlNnQ3JPa0JJZ2tnSFVZTkFDQUZJQWsyQXJqcEFTQUZJQjAyQXF6cEFTQUZLQUt3NlFFaERpQUZJQjAyQXJEcEFTQUZJQjBnRGlBSmEybzJBclRwQVF0QnVIOGhDU0FEUVFWQkNTQUZLQUxrNmdFaUJodEpEUVVnQWtFQlFRVWdCaHNnQmhBYUlnNUJpSDlMQkVBZ0RpRUpEQVVMSUFNZ0RrRURha2tOQlNBcElBSWdEaUFHRUJraUJrR0lmMHNFUUNBR0lRa01CUXNnQmcwRkFrQUNRQ0FGS0FLbzZ3RkJBVWNOQUNBRktBS2s2d0VpQ1VVTkFDQUZLQUtVNndGRkRRQWdDU2dDQkVFQmF5SUhJQVVvQXR6cEFTSUtyVUtIbGErdm1MYmVtNTUvZmtMSno5bXk4ZVc2NmllRlFoZUpRcy9XMDc3U3g2dlpRbjVDK2ZQZDhabjJtYXNXZkNJL1FpR0lJRCtGUXMvVzA3N1N4NnZaUW40aVAwSWRpQ0EvaFVMNTg5M3htZmFacXhaK0lqOUNJSWdnUDRXbmNTRUdJQWtvQWdBaEZRTkFRUUFoQ0FKQUlCVWdCa0VDZEdvb0FnQWlDVVVOQUNBSktBSUlRUWhKRFFBZ0NTZ0NCQ0lTS0FBQVFiZkl3dUYrUncwQUlCSW9BQVFoQ0FzZ0NDQUtSd1JBSUFZZ0IzRkJBV29oQmlBSURRRUxDeUFKUlEwQUlBVVFHQ0FGUVg4MkFxRHJBU0FGSUFrMkFwVHJBU0FGSUFVb0F0enBBU0lJTmdLWTZ3RU1BUXNnQlNnQzNPa0JJUWdMQWtBZ0NFVU5BQ0FGS0FLWTZ3RWdDRVlOQUVGZ0lRa01CZ3NDUUNBRktBTGc2UUVFUUNBRklBVW9BdWpxQVNJSlJUWUM3T29CSUFrTkFTQUZRdm5xME5EbnlhSGs0UUEzQTZqcUFTQUZRZ0EzQTZEcUFTQUZRcy9XMDc3U3g2dlpRamNEbU9vQklBVkMxdXVDN3VyOWlmWGdBRGNEa09vQklBVkNBRGNEaU9vQklDSkJBRUVvRUFNYURBRUxJQVZCQURZQzdPb0JDeUFCSUIxcUlTVWdCU0FGS1FQbzZRRWdEcTE4TndQbzZRRWdBeUFPYXlFRElBSWdEbW9oQWlBZElRNERRQ0FDSUFNZ0JFRXNhaEFkSWhWQmlIOUxCRUFnRlNFSkRBWUxJQU5CQTJzaU5TQVZTUTBFSUFKQkEyb2hHMEZzSVFrQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FFS0FJc0RnTUNBUUFWQ3lBVlFmLy9CMHNORXlBVlFRTkpEUklnQlNrRHlPa0JJVDhDUUFKQUlCc3RBQUFpQ1VFRGNTSWFRUUZyRGdNR0FRQUhDeUFGS0FLQTZnRU5BRUZpSVFrTUZRc2dGVUVGU1EwU0lCc29BQUFoQXdKL0FrQUNRQUpBSUFsQkFuWkJBM0VpQ1VFQ2F3NENBUUlBQ3lBSlFRQkhJUWNnQTBFRWRrSC9CM0VoQzBFRElRWWdBMEVPZGtIL0IzRU1BZ3RCQkNFR0lBTkJCSFpCLy84QWNTRUxRUUVoQnlBRFFSSjJEQUVMSUFOQkJIWkIvLzhQY1NJTFFZQ0FDRXNORTBFQklRZEJCU0VHSUFJdEFBZEJDblFnQTBFV2RuSUxJZ2dnQm1vaUNTQVZTdzBTQWtBZ0MwR0JCa2tOQUNBRktBS2M2d0ZGRFFCQkFDRURBMEFnQTBHRGdBRkxEUUVnQTBGQWF5RUREQUFMQUFzZ0JpQWJhaUVQSUJwQkEwY05CaUFGS0FJTUlnSXRBQUZCQ0hRaEF5QUhEUWNnQTBVTkNDQUVRZkFBYWlBUElBZ1FEU0lEUVloL1N3MEpJQUpCQkdvaEJpQUxJQnhxSWhKQkEyc2hDa0VBSUFJdkFRSnJRUjl4SVFjZ0hDRURBMEFnQkVId0FHb1FEMFVnQXlBS1NYRUVRQ0FESUFZZ0JDZ0NjQ0lJSUFRb0FuUWlEM1FnQjNaQkFuUnFJZ0l2QVFBN0FBQWdBeUFDTFFBRGFpSURJQVlnQ0NBUElBSXRBQUpxSWdoMElBZDJRUUowYWlJQ0x3RUFPd0FBSUFRZ0NDQUNMUUFDYWpZQ2RDQURJQUl0QUFOcUlRTU1BUVVnRWtFQ2F5RUlBMEFnQkVId0FHb1FEeUVQSUFRb0FuQWhDaUFFS0FKMElRSWdBeUFJU3lBUGNrVUVRQ0FESUFZZ0NpQUNkQ0FIZGtFQ2RHb2lDaThCQURzQUFDQUVJQUlnQ2kwQUFtbzJBblFnQXlBS0xRQURhaUVEREFFTEN3TkFJQU1nQ0UwRVFDQURJQVlnQ2lBQ2RDQUhka0VDZEdvaUR5OEJBRHNBQUNBRElBOHRBQU5xSVFNZ0FpQVBMUUFDYWlFQ0RBRUxDd0pBSUFNZ0VrOE5BQ0FESUFZZ0NpQUNkQ0FIZGtFQ2RHb2lBeTBBQURvQUFDQURMUUFEUVFGR0JFQWdBaUFETFFBQ2FpRUNEQUVMSUFKQkgwc05BRUVnSUFJZ0F5MEFBbW9pQWlBQ1FTQlBHeUVDQzBGc1FXd2dDeUFFS0FKNElBUW9BbnhIR3lBQ1FTQkhHeUVEREFzTEFBc0FDeUFFS0FJMElnSWdKU0FPYTBzTkNpQU9SUVJBUVFBaENTQUNEUUlNRGdzZ0RpQWJMUUFBSUFJUUF4b2dBaUVKREF3TElCVWdKU0FPYTBzTkNTQU9EUUZCQUNFSklCVkZEUXdMUWJaL0lRa01FUXNnRGlBYklCVVFBaG9nRlNFSkRBb0xJQndnR3dKL0FrQUNRQUpBSUFsQkFuWkJBM0ZCQVdzT0F3RUFBZ0FMSUFsQkEzWWhBMEVCREFJTElCc3ZBQUJCQkhZaEEwRUNEQUVMSUJWQkJFa05EaUFDTHdBRElBSXRBQVZCRUhSeUlnSkJqNENBQVVzTkRpQUNRUVIySVFOQkF3c2lBbW90QUFBZ0EwRWdhaEFESVFrZ0JTQUROZ0tBNndFZ0JTQUpOZ0x3NmdFZ0FrRUJhaUVKREFVTElCVUNmd0pBQWtBQ1FDQUpRUUoyUVFOeFFRRnJEZ01CQUFJQUN5QUpRUU4ySVFOQkFRd0NDeUFiTHdBQVFRUjJJUU5CQWd3QkN5QUNMd0FESUFJdEFBVkJFSFJ5UVFSMklRTkJBd3NpQWlBRGFpSUpRU0JxU1FSQUlBa2dGVXNORFNBY0lBSWdHMm9nQXhBQ0lRSWdCU0FETmdLQTZ3RWdCU0FDTmdMdzZnRWdBaUFEYWlJQ1FnQTNBQmdnQWtJQU53QVFJQUpDQURjQUNDQUNRZ0EzQUFBTUJRc2dCU0FETmdLQTZ3RWdCU0FDSUJ0cU5nTHc2Z0VNQkFzZ0IwVUVRQ0FlSUE4Z0NDQVVFQlFpQWtHSWYwc2dBaUFJVDNJTkRDQWNJQXNnQWlBUGFpQUlJQUpySUI0UUZTRUREQU1MSUF0RklBaEZjZzBMSUF0QkNIWWlBeUFJSUF0SkJIOGdDRUVFZENBTGJnVkJEd3RCR0d3aUFrR01DR29vQWdCc0lBSkJpQWhxS0FJQWFpSUdRUU4ySUFacUlBSkJnQWhxS0FJQUlBSkJoQWhxS0FJQUlBTnNha2tFUUNNQVFSQnJJaEFrQUNBZUtBSUFJUU1nRkVId0JHcEJBRUhzQUJBRElRWkJWQ0VDQWtBZ0EwSC9BWEVpREVFTVN3MEFBa0FnRkVIY0NXb2dCaUFRUVFocUlCQkJER29nRHlBSUlCUkIzQXRxSWhjUUN5SVNRWWgvU3cwQUlCQW9BZ3dpQmlBTVN3MEJJQlJCcUFWcUlRMGdGRUdrQldvaE5pQWVRUVJxSVJFZ0EwR0FnSUI0Y1NFM0lBWkJBV29pRXlFQ0lBWWhBd05BSUFJaUIwRUJheUVDSUFNaUNrRUJheUVESUJRZ0NrRUNkR29vQXZBRVJRMEFDMEVCSUFjZ0IwRUJUUnNoRmtFQUlRZEJBU0VDQTBBZ0FpQVdSd1JBSUJRZ0FrRUNkQ0lEYWlnQzhBUWhHQ0FESUExcUlBYzJBZ0FnQWtFQmFpRUNJQWNnR0dvaEJ3d0JDd3NnRFNBSE5nSUFRUUFoQWlBUUtBSUlJUU1EUUNBQ0lBTkhCRUFnRFNBQ0lCUnFRZHdKYWkwQUFDSVlRUUowYWlJWklCa29BZ0FpR1VFQmFqWUNBQ0FVSUJsQkFYUnFJaGtnR0RvQTNRVWdHU0FDT2dEY0JTQUNRUUZxSVFJTUFRc0xRUUFoQXlBTlFRQTJBZ0FnRENBR1FYOXphaUVHUVFFaEFnTkFJQUlnRmtjRVFDQVVJQUpCQW5ScUlnMGdBellDQUNBTktBTHdCQ0FDSUFacWRDQURhaUVESUFKQkFXb2hBZ3dCQ3dzZ0RDQVRJQXBySWdaclFRRnFJUW9nQmlFREEwQWdBeUFLU1FSQUlCUWdBMEUwYkdvaERVRUJJUUlEUUNBQ0lCWkhCRUFnRFNBQ1FRSjBJaGhxSUJRZ0dHb29BZ0FnQTNZMkFnQWdBa0VCYWlFQ0RBRUxDeUFEUVFGcUlRTU1BUXNMSUJjZ0ZFRTBFQUloT0NBVVFaQU1haUU1SUJNZ0RHc2hPaUFVUWR3RmFpRVhRUUFoQ2dOQUFrQUNRQ0FISUFwSEJFQkJBU0FNSUJNZ0Z5QUtRUUYwYWlJQ0xRQUJJZzFySWdOckloaDBJUmtnQWkwQUFDRVdJRGdnRFVFQ2RHb2lIeWdDQUNFQ0lBWWdHRTBFUUNBMlFRRWdBeUE2YWlJTklBMUJBVXdiSWlCQkFuUWlKR29vQWdBaERTQTVJQlFnQTBFMGJHcEJOQkFDSVNFZ0RVRUJkQ0VtSUJFZ0FrRUNkR29oSXlBZ1FRRk5EUUlnQTBFUWRFR0FnUHdIY1NBV2NrR0FnSUFJY2lFZ0lDRWdKR29vQWdBaEpFRUFJUUlEUUNBQ0lDUkdEUU1nSXlBQ1FRSjBhaUFnTmdFQUlBSkJBV29oQWd3QUN3QUxJQUlnQWlBWmFpSU5JQUlnRFVzYklRMGdBMEVRZEVHQWdQd0hjU0FXY2tHQWdJQUljaUVEQTBBZ0FpQU5SZzBESUJFZ0FrRUNkR29nQXpZQkFDQUNRUUZxSVFJTUFBc0FDeUFlSUF4QkVIUWdOM0lnREhKQmdBSnlOZ0lBREFNTElBY2dEV3NoSkNBWElDWnFJU1pCQUNFTkEwQWdEU0FrUmcwQlFRRWdHQ0FUSUNZZ0RVRUJkR29pSnkwQUFTSUNheUk3YTNRaVBDQWhJQUpCQW5ScUlpQW9BZ0FpQW1vaFBTQURJRHRxUVJCMFFZQ0EvQWR4SUNjdEFBQkJDSFJ5SUJaeVFZQ0FnQkJ5SVNjRFFDQWpJQUpCQW5ScUlDYzJBUUFnQWtFQmFpSUNJRDFKRFFBTElDQWdJQ2dDQUNBOGFqWUNBQ0FOUVFGcUlRME1BQXNBQ3lBZklCOG9BZ0FnR1dvMkFnQWdDa0VCYWlFS0RBQUxBQXNnRWlFQ0N5QVFRUkJxSkFBZ0FrR0lmMHNnQWlBSVQzSU5EQ0FjSUFzZ0FpQVBhaUFJSUFKcklCNFFGaUVEREFNTElCNGdEeUFJSUJRUUZDSUNRWWgvU3lBQ0lBaFBjZzBMSUJ3Z0N5QUNJQTlxSUFnZ0Ftc2dIaEFYSVFNTUFnc2dBd1JBSUJ3Z0N5QVBJQWdnQWhBV0lRTU1BZ3NnSENBTElBOGdDQ0FDRUJjaEF3d0JDeUFjSUFzZ0R5QUlJQUlRRlNFREN5QURRWWgvU3cwSUlBVWdDellDZ09zQklBVWdIRFlDOE9vQklBVkJBVFlDZ09vQklCcEJBa1lFUUNBRklCNDJBZ3dMSUFzZ0hHb2lBa0lBTndBQUlBSkNBRGNBR0NBQ1FnQTNBQkFnQWtJQU53QUlJQWxCaUg5TERRb0xJQWtnRlVZTkNDQVZJQWxySVFZZ0JTZ0NuT3NCSVFvQ1FDQUpJQnRxSWdNdEFBQWlEMFVFUUVFQklRSkJBQ0VQUWJoL0lRa2dCa0VCUmcwQkRBc0xBbjhnQTBFQmFpQVB3Q0lDUVFCT0RRQWFJQUpCZjBZRVFDQUdRUU5JRFFzZ0F5OEFBVUdBL2dGcUlROGdBMEVEYWd3QkN5QUdRUUpJRFFvZ0F5MEFBU0FQUVFoMGNrR0FnQUpySVE4Z0EwRUNhZ3NoRWtHNGZ5RUpJQkpCQVdvaUFpQVZJQnRxSWdkTERRb2dMQ0FGSUJJdEFBQWlFa0VHZGtFalFRa2dBaUFISUFKclFjQVFRZEFSUWZBU0lBVW9Bb1RxQVNBS0lBOGdGQkFoSWdsQmlIOUxEUWdnS3lBb0lCSkJCSFpCQTNGQkgwRUlJQUlnQ1dvaUFpQUhJQUpyUVlBTFFZQU1RWUFYSUFVb0FvVHFBU0FGS0FLYzZ3RWdEeUFVRUNFaUNFR0lmMHNOQ0VGc0lRa2dLaUF0SUJKQkFuWkJBM0ZCTkVFSklBSWdDR29pQWlBSElBSnJRWUFOUWVBT1FaQVpJQVVvQW9UcUFTQUZLQUtjNndFZ0R5QVVFQ0VpQjBHSWYwc05DaUFDSUFkcUlBTnJJZ0loQ1NBQ1FZaC9TdzBLQ3lBT0lBOUJBRXh5RFFFTFFicC9JUWtNQ0FzZ0pTQU9heUVKSUFZZ0Ftc2hCaUFDSUFOcUlRY0NRQUpBQWtBZ0NrVUVRQ0FQUVFsSUlBVXBBOGpwQVVLQmdJQUlWSElOQWlBb0tBSUFJZ0pCQ0dvaEVpQUNLQUlFSVFwQkFDRURRUUFoQWdOQUlBTWdDblpGQkVBZ0FpQVNJQU5CQTNScUxRQUNRUlpMYWlFQ0lBTkJBV29oQXd3QkN3c2dCVUVBTmdLYzZ3RWdBa0VJSUFwcmRFRVVUdzBCREFNTElBVkJBRFlDbk9zQkN5QUVJQVVvQXZEcUFTSUROZ0xjQVNBSklBNXFJUllnQXlBRktBS0E2d0ZxSVJjQ1FDQVBSUVJBSUE0aEJ3d0JDeUFGS0FLNDZRRWhHaUFGS0FLMDZRRWhHQ0FGS0FLdzZRRWhFaUFGUVFFMkFvVHFBVUVBSVFNRFFDQURRUU5IQkVBZ0JDQURRUUowSWdKcUlBSWdCV3BCck5BQmFpZ0NBRFlDWkNBRFFRRnFJUU1NQVFzTFFXd2hDU0FFUVRocUlnSWdCeUFHRUExQmlIOUxEUU5CQ0NBUElBOUJDRTRiSVI4Z05DQUNJQVVvQWdBUUhpQXpJQUlnQlNnQ0NCQWVJRElnQWlBRktBSUVFQjRnRGlBU2F5RVpRUUFoQ0FOQUlBUkJPR29RRDBFRFJpQUlJQjlPY2tVRVFDQUVLQUpRSUFRb0FreEJBM1JxS1FJQUlrQ25JZ2RCRUhZaUVVSC9BWEVoQ3lBRUtBSmdJQVFvQWx4QkEzUnFLUUlBSWtHbklneEJFSFlpSVVIL0FYRWhFQ0FFS0FKWUlBUW9BbFJCQTNScUtRSUFJa0pDSUlpbklRWWdRVUlnaUNCQVFpQ0lweUVEQWtBZ1FrSVFpS2NpQ2tIL0FYRWlBa0VDVHdSQUFrQWdBa0VaU1NBL1FvR0FnQkJVY2tVRVFDQUVRU0FnQkNnQ1BDSUtheUlOSUFJZ0FpQU5TeHNpRXlBS2FqWUNQQ0FHSUFRb0FqZ2dDblJCQUNBVGEzWWdBaUFUYXlJVGRHb2hDaUFFUVRocUVBOGFJQUlnRFUwTkFTQUVJQVFvQWp3aUFpQVRhallDUENBRUtBSTRJQUowUVFBZ0UydDJJQXBxSVFvTUFRc2dCQ0FDSUFRb0Fqd2lEV28yQWp3Z0JDZ0NPQ0FOZEVFQUlBcHJkaUFHYWlFS0lBUkJPR29RRHhvTElBUXBBbVFoUkNBRUlBbzJBbVFnQkNCRU53Sm9EQUVMQWtBZ0FrVUVRQ0FEQkVBZ0JDZ0NaQ0VLREFNTElBUW9BbWdoQ2d3QkN5QUVJQVFvQWp3aUFrRUJhallDUEFKL0lBWWdBMFZxSUFRb0FqZ2dBblJCSDNacUlnSkJBMFlFUUNBRUtBSmtRUUZyREFFTElBSkJBblFnQkdvb0FtUUxJZ1pGSUFacUlRb2dBa0VCUndSQUlBUWdCQ2dDYURZQ2JBc0xJQVFnQkNnQ1pEWUNhQ0FFSUFvMkFtUUxweUVDSUVGQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDUENJR0lCQnFOZ0k4SUFRb0FqZ2dCblJCQUNBaGEzWWdBbW9oQWdzZ0N5QVFha0VVVHdSQUlBUkJPR29RRHhvTElFQkNnSUQ4QjROUVJRUkFJQVFnQkNnQ1BDSUdJQXRxTmdJOElBUW9BamdnQm5SQkFDQVJhM1lnQTJvaEF3c2dCRUU0YWhBUEdpQUVJQVFvQWpnaUJrRUFJQWRCR0hZaUN5QUVLQUk4YWlJUWEzWWdDMEVDZEVHZ0hXb29BZ0J4SUFkQi8vOERjV28yQWt3Z0JDQVFJQXhCR0hZaUIyb2lDellDUENBRUlBZEJBblJCb0IxcUtBSUFJQVpCQUNBTGEzWnhJQXhCLy84RGNXbzJBbHdnQkVFNGFoQVBHaUFFSUVLbklnWkJHSFlpQnlBRUtBSThhaUlMTmdJOElBUWdCMEVDZEVHZ0hXb29BZ0FnQkNnQ09FRUFJQXRyZG5FZ0JrSC8vd054YWpZQ1ZDQUVRZkFBYWlBSVFReHNhaUlHSUFvMkFnZ2dCaUFDTmdJRUlBWWdBellDQUNBSVFRRnFJUWdnQXlBWmFpQUNhaUVaREFFTEN5QUlJQjlJRFFNZ0ZrRWdheUVoSUE0aEJ3TkFJQVJCT0dvUUQwRURSaUFJSUE5T2NrVUVRQ0FFS0FKUUlBUW9Ba3hCQTNScUtRSUFJa0NuSWdaQkVIWWlJMEgvQVhFaENpQUVLQUpnSUFRb0FseEJBM1JxS1FJQUlrR25JZzFCRUhZaUlFSC9BWEVoRXlBRUtBSllJQVFvQWxSQkEzUnFLUUlBSWtKQ0lJaW5JUU1nUVVJZ2lDQkFRaUNJcHlFTEFrQWdRa0lRaUtjaURFSC9BWEVpQWtFQ1R3UkFBa0FnQWtFWlNTQS9Rb0dBZ0JCVWNrVUVRQ0FFUVNBZ0JDZ0NQQ0lNYXlJUklBSWdBaUFSU3hzaUVDQU1hallDUENBRElBUW9BamdnREhSQkFDQVFhM1lnQWlBUWF5SU1kR29oRUNBRVFUaHFFQThhSUFJZ0VVME5BU0FFSUFRb0Fqd2lBaUFNYWpZQ1BDQUVLQUk0SUFKMFFRQWdER3QySUJCcUlSQU1BUXNnQkNBQ0lBUW9BandpRUdvMkFqd2dCQ2dDT0NBUWRFRUFJQXhyZGlBRGFpRVFJQVJCT0dvUUR4b0xJQVFwQW1RaFJDQUVJQkEyQW1RZ0JDQkVOd0pvREFFTEFrQWdBa1VFUUNBTEJFQWdCQ2dDWkNFUURBTUxJQVFvQW1naEVBd0JDeUFFSUFRb0Fqd2lBa0VCYWpZQ1BBSi9JQU1nQzBWcUlBUW9BamdnQW5SQkgzWnFJZ0pCQTBZRVFDQUVLQUprUVFGckRBRUxJQUpCQW5RZ0JHb29BbVFMSWdORklBTnFJUkFnQWtFQlJ3UkFJQVFnQkNnQ2FEWUNiQXNMSUFRZ0JDZ0NaRFlDYUNBRUlCQTJBbVFMcHlFTUlFRkNnSUQ4QjROUVJRUkFJQVFnQkNnQ1BDSUNJQk5xTmdJOElBUW9BamdnQW5SQkFDQWdhM1lnREdvaERBc2dDaUFUYWtFVVR3UkFJQVJCT0dvUUR4b0xJRUJDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NQQ0lDSUFwcU5nSThJQVFvQWpnZ0FuUkJBQ0FqYTNZZ0Myb2hDd3NnQkVFNGFoQVBHaUFFSUFRb0FqZ2lBa0VBSUFaQkdIWWlBeUFFS0FJOGFpSUthM1lnQTBFQ2RFR2dIV29vQWdCeElBWkIvLzhEY1dvMkFrd2dCQ0FLSUExQkdIWWlBMm9pQmpZQ1BDQUVJQU5CQW5SQm9CMXFLQUlBSUFKQkFDQUdhM1p4SUExQi8vOERjV28yQWx3Z0JFRTRhaEFQR2lBRUlFS25JZ0pCR0hZaUF5QUVLQUk4YWlJR05nSThJQVFnQTBFQ2RFR2dIV29vQWdBZ0JDZ0NPRUVBSUFacmRuRWdBa0gvL3dOeGFqWUNWQUpBQWtBQ1FDQUVLQUxjQVNJRElBUkI4QUJxSUFoQkIzRkJER3hxSWhNb0FnQWlFV29pSXlBWFN3MEFJQWNnRXlnQ0JDSU5JQkZxSWdwcUlDRkxEUUFnQ2tFZ2FpQVdJQWRyVFEwQkN5QUVJQk1vQWdnMkFoZ2dCQ0FUS1FJQU53TVFJQWNnRmlBRVFSQnFJQVJCM0FGcUlCY2dFaUFZSUJvUUh5RUtEQUVMSUFjZ0VXb2hBaUFUS0FJSUlRWWdCeUFES1FBQU53QUFJQWNnQXlrQUNEY0FDQUpBSUJGQkVVa05BQ0FISUFNcEFCQTNBQkFnQnlBREtRQVlOd0FZSUJGQkVHdEJFVWdOQUNBRFFSQnFJUU1nQjBFZ2FpRVJBMEFnRVNBREtRQVFOd0FBSUJFZ0F5a0FHRGNBQ0NBUklBTXBBQ0EzQUJBZ0VTQURLUUFvTndBWUlBTkJJR29oQXlBUlFTQnFJaEVnQWtrTkFBc0xJQUlnQm1zaEF5QUVJQ00yQXR3QklBSWdFbXNnQmtrRVFDQUdJQUlnR0d0TERRY2dHaUFhSUFNZ0Vtc2lBMm9pRVNBTmFrOEVRQ0FDSUJFZ0RSQUtHZ3dDQ3lBRElBMXFJUTBnQWlBUlFRQWdBMnNRQ2lBRGF5RUNJQkloQXdzZ0JrRVFUd1JBSUFJZ0F5a0FBRGNBQUNBQ0lBTXBBQWczQUFnZ0RVRVJTQTBCSUFJZ0RXb2hCaUFDUVJCcUlRSURRQ0FDSUFNcEFCQTNBQUFnQWlBREtRQVlOd0FJSUFJZ0F5a0FJRGNBRUNBQ0lBTXBBQ2czQUJnZ0EwRWdhaUVESUFKQklHb2lBaUFHU1EwQUN3d0JDd0pBSUFaQkIwMEVRQ0FDSUFNdEFBQTZBQUFnQWlBRExRQUJPZ0FCSUFJZ0F5MEFBam9BQWlBQ0lBTXRBQU02QUFNZ0FpQURJQVpCQW5RaUJrSEFIbW9vQWdCcUlnTW9BQUEyQUFRZ0F5QUdRZUFlYWlnQ0FHc2hBd3dCQ3lBQ0lBTXBBQUEzQUFBTElBMUJDVWtOQUNBQ0lBMXFJUkVnQWtFSWFpSUdJQU5CQ0dvaUEydEJEMHdFUUFOQUlBWWdBeWtBQURjQUFDQURRUWhxSVFNZ0JrRUlhaUlHSUJGSkRRQU1BZ3NBQ3lBR0lBTXBBQUEzQUFBZ0JpQURLUUFJTndBSUlBMUJHVWdOQUNBQ1FSaHFJUUlEUUNBQ0lBTXBBQkEzQUFBZ0FpQURLUUFZTndBSUlBSWdBeWtBSURjQUVDQUNJQU1wQUNnM0FCZ2dBMEVnYWlFRElBSkJJR29pQWlBUlNRMEFDd3NnQ2tHSWYwc0VRQ0FLSVFrTUJnVWdFeUFRTmdJSUlCTWdERFlDQkNBVElBczJBZ0FnQ0VFQmFpRUlJQWNnQ21vaEJ5QUxJQmxxSUF4cUlSa01BZ3NBQ3dzZ0NDQVBTQTBESUFnZ0gyc2hCZ05BQWtBZ0JpQVBUZ1JBUVFBaEF3TkFJQU5CQTBZTkFpQUZJQU5CQW5RaUFtcEJyTkFCYWlBQ0lBUnFLQUprTmdJQUlBTkJBV29oQXd3QUN3QUxBa0FDUUFKQUlBUW9BdHdCSWdNZ0JFSHdBR29nQmtFSGNVRU1iR29pQ0NnQ0FDSU1haUlRSUJkTERRQWdCeUFJS0FJRUlnc2dER29pQ21vZ0lVc05BQ0FLUVNCcUlCWWdCMnRORFFFTElBUWdDQ2dDQ0RZQ0tDQUVJQWdwQWdBM0F5QWdCeUFXSUFSQklHb2dCRUhjQVdvZ0Z5QVNJQmdnR2hBZklRb01BUXNnQnlBTWFpRUNJQWdvQWdnaENDQUhJQU1wQUFBM0FBQWdCeUFES1FBSU53QUlBa0FnREVFUlNRMEFJQWNnQXlrQUVEY0FFQ0FISUFNcEFCZzNBQmdnREVFUWEwRVJTQTBBSUFOQkVHb2hBeUFIUVNCcUlRd0RRQ0FNSUFNcEFCQTNBQUFnRENBREtRQVlOd0FJSUF3Z0F5a0FJRGNBRUNBTUlBTXBBQ2czQUJnZ0EwRWdhaUVESUF4QklHb2lEQ0FDU1EwQUN3c2dBaUFJYXlFRElBUWdFRFlDM0FFZ0FpQVNheUFJU1FSQUlBZ2dBaUFZYTBzTkJ5QWFJQm9nQXlBU2F5SURhaUlNSUF0cVR3UkFJQUlnRENBTEVBb2FEQUlMSUFNZ0Myb2hDeUFDSUF4QkFDQURheEFLSUFOcklRSWdFaUVEQ3lBSVFSQlBCRUFnQWlBREtRQUFOd0FBSUFJZ0F5a0FDRGNBQ0NBTFFSRklEUUVnQWlBTGFpRUlJQUpCRUdvaEFnTkFJQUlnQXlrQUVEY0FBQ0FDSUFNcEFCZzNBQWdnQWlBREtRQWdOd0FRSUFJZ0F5a0FLRGNBR0NBRFFTQnFJUU1nQWtFZ2FpSUNJQWhKRFFBTERBRUxBa0FnQ0VFSFRRUkFJQUlnQXkwQUFEb0FBQ0FDSUFNdEFBRTZBQUVnQWlBRExRQUNPZ0FDSUFJZ0F5MEFBem9BQXlBQ0lBTWdDRUVDZENJSVFjQWVhaWdDQUdvaUF5Z0FBRFlBQkNBRElBaEI0QjVxS0FJQWF5RUREQUVMSUFJZ0F5a0FBRGNBQUFzZ0MwRUpTUTBBSUFJZ0Myb2hEQ0FDUVFocUlnZ2dBMEVJYWlJRGEwRVBUQVJBQTBBZ0NDQURLUUFBTndBQUlBTkJDR29oQXlBSVFRaHFJZ2dnREVrTkFBd0NDd0FMSUFnZ0F5a0FBRGNBQUNBSUlBTXBBQWczQUFnZ0MwRVpTQTBBSUFKQkdHb2hBZ05BSUFJZ0F5a0FFRGNBQUNBQ0lBTXBBQmczQUFnZ0FpQURLUUFnTndBUUlBSWdBeWtBS0RjQUdDQURRU0JxSVFNZ0FrRWdhaUlDSUF4SkRRQUxDeUFLUVloL1N3UkFJQW9oQ1F3R0JTQUdRUUZxSVFZZ0J5QUthaUVIREFJTEFBc0xJQVFvQXR3QklRTUxRYnAvSVFrZ0Z5QURheUlDSUJZZ0IydExEUUlnQndSL0lBY2dBeUFDRUFJZ0Ftb0ZRUUFMSUE1cklRa01BZ3NnQlVFQU5nS2M2d0VMSUFRZ0JTZ0M4T29CSWdNMkF0d0JJQWtnRG1vaERDQURJQVVvQW9EckFXb2hFQUpBSUE5RkJFQWdEaUVHREFFTElBVW9BcmpwQVNFTklBVW9BclRwQVNFVElBVW9BckRwQVNFU0lBVkJBVFlDaE9vQlFRQWhBd05BSUFOQkEwY0VRQ0FFSUFOQkFuUWlBbW9nQWlBRmFrR3MwQUZxS0FJQU5nS2NBU0FEUVFGcUlRTU1BUXNMUVd3aENTQUVRZkFBYWlJQ0lBY2dCaEFOUVloL1N3MEJJREVnQWlBRktBSUFFQjRnTUNBQ0lBVW9BZ2dRSGlBdklBSWdCU2dDQkJBZUlBeEJJR3NoR0NBT0lRWURRQ0FFS0FLSUFTQUVLQUtFQVVFRGRHb3BBZ0FpUUtjaUNrRVFkaUlaUWY4QmNTRUxJQVFvQXBnQklBUW9BcFFCUVFOMGFpa0NBQ0pCcHlJV1FSQjJJaDlCL3dGeElSb2dCQ2dDa0FFZ0JDZ0NqQUZCQTNScUtRSUFJa0pDSUlpbklRY2dRVUlnaUNCQVFpQ0lweUVEQWtBZ1FrSVFpS2NpQ0VIL0FYRWlBa0VDVHdSQUFrQWdBa0VaU1NBL1FvR0FnQkJVY2tVRVFDQUVRU0FnQkNnQ2RDSUlheUlSSUFJZ0FpQVJTeHNpRnlBSWFqWUNkQ0FISUFRb0FuQWdDSFJCQUNBWGEzWWdBaUFYYXlJWGRHb2hDQ0FFUWZBQWFoQVBHaUFDSUJGTkRRRWdCQ0FFS0FKMElnSWdGMm8yQW5RZ0JDZ0NjQ0FDZEVFQUlCZHJkaUFJYWlFSURBRUxJQVFnQWlBRUtBSjBJaEZxTmdKMElBUW9BbkFnRVhSQkFDQUlhM1lnQjJvaENDQUVRZkFBYWhBUEdnc2dCQ2tDbkFFaFJDQUVJQWcyQXB3QklBUWdSRGNDb0FFTUFRc0NRQ0FDUlFSQUlBTUVRQ0FFS0FLY0FTRUlEQU1MSUFRb0FxQUJJUWdNQVFzZ0JDQUVLQUowSWdKQkFXbzJBblFDZnlBSElBTkZhaUFFS0FKd0lBSjBRUjkyYWlJQ1FRTkdCRUFnQkNnQ25BRkJBV3NNQVFzZ0FrRUNkQ0FFYWlnQ25BRUxJZ2RGSUFkcUlRZ2dBa0VCUndSQUlBUWdCQ2dDb0FFMkFxUUJDd3NnQkNBRUtBS2NBVFlDb0FFZ0JDQUlOZ0tjQVF1bklRSWdRVUtBZ1B3SGcxQkZCRUFnQkNBRUtBSjBJZ2NnR21vMkFuUWdCQ2dDY0NBSGRFRUFJQjlyZGlBQ2FpRUNDeUFMSUJwcVFSUlBCRUFnQkVId0FHb1FEeG9MSUVCQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDZENJSElBdHFOZ0owSUFRb0FuQWdCM1JCQUNBWmEzWWdBMm9oQXdzZ0JFSHdBR29RRHhvZ0JDQUVLQUp3SWdkQkFDQUtRUmgySWdzZ0JDZ0NkR29pR210MklBdEJBblJCb0IxcUtBSUFjU0FLUWYvL0EzRnFOZ0tFQVNBRUlCb2dGa0VZZGlJS2FpSUxOZ0owSUFRZ0NrRUNkRUdnSFdvb0FnQWdCMEVBSUF0cmRuRWdGa0gvL3dOeGFqWUNsQUVnQkVId0FHb1FEeG9nQkNCQ3B5SUhRUmgySWdvZ0JDZ0NkR29pQ3pZQ2RDQUVJQXBCQW5SQm9CMXFLQUlBSUFRb0FuQkJBQ0FMYTNaeElBZEIvLzhEY1dvMkFvd0JJQVFnQXpZQ09DQUVJQUkyQWp3Z0JDQUlOZ0pBQWtBQ1FBSkFJQVFvQXR3Qklnc2dBMm9pRmlBUVN3MEFJQVlnQWlBRGFpSUthaUFZU3cwQUlBcEJJR29nRENBR2EwME5BUXNnQkNBRVFVQnJLQUlBTmdJSUlBUWdCQ2tET0RjREFDQUdJQXdnQkNBRVFkd0JhaUFRSUJJZ0V5QU5FQjhoQ2d3QkN5QURJQVpxSVFjZ0JpQUxLUUFBTndBQUlBWWdDeWtBQ0RjQUNBSkFJQU5CRVVrTkFDQUdJQXNwQUJBM0FCQWdCaUFMS1FBWU53QVlJQU5CRUd0QkVVZ05BQ0FMUVJCcUlRTWdCa0VnYWlFTEEwQWdDeUFES1FBUU53QUFJQXNnQXlrQUdEY0FDQ0FMSUFNcEFDQTNBQkFnQ3lBREtRQW9Od0FZSUFOQklHb2hBeUFMUVNCcUlnc2dCMGtOQUFzTElBY2dDR3NoQXlBRUlCWTJBdHdCSUFjZ0Vtc2dDRWtFUUNBSUlBY2dFMnRMRFFRZ0RTQU5JQU1nRW1zaUEyb2lDeUFDYWs4RVFDQUhJQXNnQWhBS0dnd0NDeUFISUF0QkFDQURheEFLSUFRZ0FpQURhaUlDTmdJOElBTnJJUWNnRWlFREN5QUlRUkJQQkVBZ0J5QURLUUFBTndBQUlBY2dBeWtBQ0RjQUNDQUNRUkZJRFFFZ0FpQUhhaUVJSUFkQkVHb2hBZ05BSUFJZ0F5a0FFRGNBQUNBQ0lBTXBBQmczQUFnZ0FpQURLUUFnTndBUUlBSWdBeWtBS0RjQUdDQURRU0JxSVFNZ0FrRWdhaUlDSUFoSkRRQUxEQUVMQWtBZ0NFRUhUUVJBSUFjZ0F5MEFBRG9BQUNBSElBTXRBQUU2QUFFZ0J5QURMUUFDT2dBQ0lBY2dBeTBBQXpvQUF5QUhJQU1nQ0VFQ2RDSUlRY0FlYWlnQ0FHb2lBeWdBQURZQUJDQURJQWhCNEI1cUtBSUFheUVEREFFTElBY2dBeWtBQURjQUFBc2dBa0VKU1EwQUlBSWdCMm9oQ3lBSFFRaHFJZ2dnQTBFSWFpSURhMEVQVEFSQUEwQWdDQ0FES1FBQU53QUFJQU5CQ0dvaEF5QUlRUWhxSWdnZ0Mwa05BQXdDQ3dBTElBZ2dBeWtBQURjQUFDQUlJQU1wQUFnM0FBZ2dBa0VaU0EwQUlBZEJHR29oQWdOQUlBSWdBeWtBRURjQUFDQUNJQU1wQUJnM0FBZ2dBaUFES1FBZ053QVFJQUlnQXlrQUtEY0FHQ0FEUVNCcUlRTWdBa0VnYWlJQ0lBdEpEUUFMQ3lBS1FZaC9Td1JBSUFvaENRd0RDeUFHSUFwcUlRWWdCRUh3QUdvUUR5RURJQTlCQVdzaUR3MEFDMEVBSVFJZ0EwRUNTUTBCQTBBZ0FrRURSd1JBSUFVZ0FrRUNkQ0lEYWtHczBBRnFJQU1nQkdvb0Fwd0JOZ0lBSUFKQkFXb2hBZ3dCQ3dzZ0JDZ0MzQUVoQXd0QnVuOGhDU0FRSUFOcklnSWdEQ0FHYTBzTkFDQUdCSDhnQmlBRElBSVFBaUFDYWdWQkFBc2dEbXNoQ1FzZ0NVR0lmMHNOQmdzQ1FDQUZLQUxzNmdGRkRRQWdCU0FGS1FPSTZnRWdDYTE4TndPSTZnRUNRQ0FGS0FMUTZnRWlBaUFKYWlJSVFSOU5CRUFnRGtVTkFTQUNJQ0pxSUE0Z0NSQUNHaUFGS0FMUTZnRWdDV29oQ0F3QkN5QU9JUU1nQWdSQUlBSWdJbW9nQTBFZ0lBSnJFQUlhSUFVb0F0RHFBU0VDSUFWQkFEWUMwT29CSUFVZ0JTa0RrT29CSUFVcEFMRHFBVUxQMXRPKzBzZXIyVUorZkVJZmlVS0hsYSt2bUxiZW01NS9mamNEa09vQklBVWdCU2tEbU9vQklBVXBBTGpxQVVMUDF0Tyswc2VyMlVKK2ZFSWZpVUtIbGErdm1MYmVtNTUvZmpjRG1Pb0JJQVVnQlNrRG9Pb0JJQVVwQU1EcUFVTFAxdE8rMHNlcjJVSitmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZqY0RvT29CSUFVZ0JTa0RxT29CSUFVcEFNanFBVUxQMXRPKzBzZXIyVUorZkVJZmlVS0hsYSt2bUxiZW01NS9mamNEcU9vQklBTWdBbXRCSUdvaEF3c2dDU0FPYWlJQ0lBTkJJR3BQQkVBZ0FrRWdheUVHSUFVcEE2anFBU0UvSUFVcEE2RHFBU0ZBSUFVcEE1anFBU0ZCSUFVcEE1RHFBU0ZDQTBBZ0F5a0FHRUxQMXRPKzBzZXIyVUorSUQ5OFFoK0pRb2VWcjYrWXR0NmJubjkrSVQ4Z0F5a0FFRUxQMXRPKzBzZXIyVUorSUVCOFFoK0pRb2VWcjYrWXR0NmJubjkrSVVBZ0F5a0FDRUxQMXRPKzBzZXIyVUorSUVGOFFoK0pRb2VWcjYrWXR0NmJubjkrSVVFZ0F5a0FBRUxQMXRPKzBzZXIyVUorSUVKOFFoK0pRb2VWcjYrWXR0NmJubjkrSVVJZ0EwRWdhaUlESUFaTkRRQUxJQVVnUHpjRHFPb0JJQVVnUURjRG9Pb0JJQVVnUVRjRG1Pb0JJQVVnUWpjRGtPb0JDeUFDSUFOTkRRRWdJaUFESUFJZ0Eyc2lDQkFDR2dzZ0JTQUlOZ0xRNmdFTElEVWdGV3NoQXlBVklCdHFJUUlnQ1NBT2FpRU9JQVFvQWpCRkRRQUxJQ2twQXdBaVAwSi9VU0EvSUE0Z0hXdXNVWEpGQkVCQmJDRUpEQVlMSUFVb0F1RHBBUVJBUVdvaENTQURRUVJKRFFZZ0JTZ0M2T29CUlFSQUlDSWdCU2dDME9vQmFpRUtBbjRnQlNrRGlPb0JJajlDSUZvRVFDQUZLUU9ZNmdFaVFFSUhpU0FGS1FPUTZnRWlRVUlCaVh3Z0JTa0RvT29CSWtKQ0RJbDhJQVVwQTZqcUFTSkRRaEtKZkNCQlFzL1cwNzdTeDZ2WlFuNUNINGxDaDVXdnI1aTIzcHVlZjM2RlFvZVZyNitZdHQ2Ym5uOStRcDJqdGVxRHNZMksrZ0I5SUVCQ3o5YlR2dExIcTlsQ2ZrSWZpVUtIbGErdm1MYmVtNTUvZm9WQ2g1V3ZyNWkyM3B1ZWYzNUNuYU8xNm9PeGpZcjZBSDBnUWtMUDF0Tyswc2VyMlVKK1FoK0pRb2VWcjYrWXR0NmJubjkraFVLSGxhK3ZtTGJlbTU1L2ZrS2RvN1hxZzdHTml2b0FmU0JEUXMvVzA3N1N4NnZaUW41Q0g0bENoNVd2cjVpMjNwdWVmMzZGUW9lVnI2K1l0dDZibm45K1FwMmp0ZXFEc1kySytnQjlEQUVMSUFVcEE2RHFBVUxGejlteThlVzY2aWQ4Q3lBL2ZDRS9JQ0loQmdOQUlBb2dCa0VJYWlJSFR3UkFJQVlwQUFCQ3o5YlR2dExIcTlsQ2ZrSWZpVUtIbGErdm1MYmVtNTUvZmlBL2hVSWJpVUtIbGErdm1MYmVtNTUvZmtLZG83WHFnN0dOaXZvQWZTRS9JQWNoQmd3QkN3c0NRQ0FLSUFaQkJHb2lDRWtFUUNBR0lRZ01BUXNnQmpVQUFFS0hsYSt2bUxiZW01NS9maUEvaFVJWGlVTFAxdE8rMHNlcjJVSitRdm56M2ZHWjlwbXJGbndoUHdzRFFDQUlJQXBKQkVBZ0NERUFBRUxGejlteThlVzY2aWQrSUQrRlFndUpRb2VWcjYrWXR0NmJubjkrSVQ4Z0NFRUJhaUVJREFFTEN5QUNLQUFBSUQ5Q0lZZ2dQNFZDejliVHZ0TEhxOWxDZmlJL1FoMklJRCtGUXZuejNmR1o5cG1yRm40aVAwSWdpQ0EvaGFkSERRY0xJQU5CQkdzaEF5QUNRUVJxSVFJTElBNGdIV3NpQ1VHSmYwOE5CQ0FCSUFscklRRWdDU0FkYWlFZFFRRWhQZ3dCQ3d0QnVIOGhCeUFERFFRZ0hTQUFheUVIREFRTFFXd2hDUXdCQzBHNGZ5RUpDMEc0ZnlFSElBbEJka1lnUG5FTkFRc2dDU0VIQ3lnQ0FBMEFJQVZCL09vQmFpZ0NBQ0VCSUFWQitPb0JhaWdDQUNFQUlBVVFHQ0FGS0FLdzZ3RWdBQ0FCRUJNZ0JVRUFOZ0t3NndFZ0JTZ0NwT3NCSWdJRVFBSkFBa0FDUUFKQUlBSW9BZ0FpQXdSQUlBQkZEUUlnQVNBRElBQVJBZ0FNQVFzZ0FFVU5BZ3NnQVNBQ0lBQVJBZ0FNQWdzZ0F4QUdDeUFDRUFZTElBVkJBRFlDcE9zQkN5QUFCRUFnQVNBRklBQVJBZ0FNQVFzZ0JSQUdDeUFFUWVBQmFpUUFJQWNMQzZnVkNRQkJpQWdMRFFFQUFBQUJBQUFBQWdBQUFBSUFRYUFJQzdNR0FRQUFBQUVBQUFBQ0FBQUFBZ0FBQUNZQUFBQ0NBQUFBSVFVQUFFb0FBQUJuQ0FBQUpnQUFBTUFCQUFDQUFBQUFTUVVBQUVvQUFBQytDQUFBS1FBQUFDd0NBQUNBQUFBQVNRVUFBRW9BQUFDK0NBQUFMd0FBQU1vQ0FBQ0FBQUFBaWdVQUFFb0FBQUNFQ1FBQU5RQUFBSE1EQUFDQUFBQUFuUVVBQUVvQUFBQ2dDUUFBUFFBQUFJRURBQUNBQUFBQTZ3VUFBRXNBQUFBK0NnQUFSQUFBQUo0REFBQ0FBQUFBVFFZQUFFc0FBQUNxQ2dBQVN3QUFBTE1EQUFDQUFBQUF3UVlBQUUwQUFBQWZEUUFBVFFBQUFGTUVBQUNBQUFBQUl3Z0FBRkVBQUFDbUR3QUFWQUFBQUprRUFBQ0FBQUFBU3drQUFGY0FBQUN4RWdBQVdBQUFBTm9FQUFDQUFBQUFid2tBQUYwQUFBQWpGQUFBVkFBQUFFVUZBQUNBQUFBQVZBb0FBR29BQUFDTUZBQUFhZ0FBQUs4RkFBQ0FBQUFBZGdrQUFId0FBQUJPRUFBQWZBQUFBTklDQUFDQUFBQUFZd2NBQUpFQUFBQ1FCd0FBa2dBQUFBQUFBQUFCQUFBQUFRQUFBQVVBQUFBTkFBQUFIUUFBQUQwQUFBQjlBQUFBL1FBQUFQMEJBQUQ5QXdBQS9RY0FBUDBQQUFEOUh3QUEvVDhBQVAxL0FBRDkvd0FBL2Y4QkFQMy9Bd0Q5L3djQS9mOFBBUDMvSHdEOS96OEEvZjkvQVAzLy93RDkvLzhCL2YvL0EvMy8vd2Y5Ly84UC9mLy9ILzMvL3ovOS8vOS9BQUFBQUFFQUFBQUNBQUFBQXdBQUFBUUFBQUFGQUFBQUJnQUFBQWNBQUFBSUFBQUFDUUFBQUFvQUFBQUxBQUFBREFBQUFBMEFBQUFPQUFBQUR3QUFBQkFBQUFBUkFBQUFFZ0FBQUJNQUFBQVVBQUFBRlFBQUFCWUFBQUFYQUFBQUdBQUFBQmtBQUFBYUFBQUFHd0FBQUJ3QUFBQWRBQUFBSGdBQUFCOEFBQUFEQUFBQUJBQUFBQVVBQUFBR0FBQUFCd0FBQUFnQUFBQUpBQUFBQ2dBQUFBc0FBQUFNQUFBQURRQUFBQTRBQUFBUEFBQUFFQUFBQUJFQUFBQVNBQUFBRXdBQUFCUUFBQUFWQUFBQUZnQUFBQmNBQUFBWUFBQUFHUUFBQUJvQUFBQWJBQUFBSEFBQUFCMEFBQUFlQUFBQUh3QUFBQ0FBQUFBaEFBQUFJZ0FBQUNNQUFBQWxBQUFBSndBQUFDa0FBQUFyQUFBQUx3QUFBRE1BQUFBN0FBQUFRd0FBQUZNQUFBQmpBQUFBZ3dBQUFBTUJBQUFEQWdBQUF3UUFBQU1JQUFBREVBQUFBeUFBQUFOQUFBQURnQUFBQXdBQkFFSGdEd3RSQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBd0FBQUFNQUFBQUVBQUFBQkFBQUFBVUFBQUFIQUFBQUNBQUFBQWtBQUFBS0FBQUFDd0FBQUF3QUFBQU5BQUFBRGdBQUFBOEFBQUFRQUVIRUVBdUxBUUVBQUFBQ0FBQUFBd0FBQUFRQUFBQUZBQUFBQmdBQUFBY0FBQUFJQUFBQUNRQUFBQW9BQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBRHdBQUFCQUFBQUFTQUFBQUZBQUFBQllBQUFBWUFBQUFIQUFBQUNBQUFBQW9BQUFBTUFBQUFFQUFBQUNBQUFBQUFBRUFBQUFDQUFBQUJBQUFBQWdBQUFBUUFBQUFJQUFBQUVBQUFBQ0FBQUFBQUFFQVFaQVNDK1lFQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBd0FBQUFNQUFBQUVBQUFBQmdBQUFBY0FBQUFJQUFBQUNRQUFBQW9BQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBRHdBQUFCQUFBQUFCQUFBQUJBQUFBQWdBQUFBQUFBQUFBUUFCQVFZQUFBQUFBQUFFQUFBQUFCQUFBQVFBQUFBQUlBQUFCUUVBQUFBQUFBQUZBd0FBQUFBQUFBVUVBQUFBQUFBQUJRWUFBQUFBQUFBRkJ3QUFBQUFBQUFVSkFBQUFBQUFBQlFvQUFBQUFBQUFGREFBQUFBQUFBQVlPQUFBQUFBQUJCUkFBQUFBQUFBRUZGQUFBQUFBQUFRVVdBQUFBQUFBQ0JSd0FBQUFBQUFNRklBQUFBQUFBQkFVd0FBQUFJQUFHQlVBQUFBQUFBQWNGZ0FBQUFBQUFDQVlBQVFBQUFBQUtCZ0FFQUFBQUFBd0dBQkFBQUNBQUFBUUFBQUFBQUFBQUJBRUFBQUFBQUFBRkFnQUFBQ0FBQUFVRUFBQUFBQUFBQlFVQUFBQWdBQUFGQndBQUFBQUFBQVVJQUFBQUlBQUFCUW9BQUFBQUFBQUZDd0FBQUFBQUFBWU5BQUFBSUFBQkJSQUFBQUFBQUFFRkVnQUFBQ0FBQVFVV0FBQUFBQUFDQlJnQUFBQWdBQU1GSUFBQUFBQUFBd1VvQUFBQUFBQUdCRUFBQUFBUUFBWUVRQUFBQUNBQUJ3V0FBQUFBQUFBSkJnQUNBQUFBQUFzR0FBZ0FBREFBQUFRQUFBQUFFQUFBQkFFQUFBQWdBQUFGQWdBQUFDQUFBQVVEQUFBQUlBQUFCUVVBQUFBZ0FBQUZCZ0FBQUNBQUFBVUlBQUFBSUFBQUJRa0FBQUFnQUFBRkN3QUFBQ0FBQUFVTUFBQUFBQUFBQmc4QUFBQWdBQUVGRWdBQUFDQUFBUVVVQUFBQUlBQUNCUmdBQUFBZ0FBSUZIQUFBQUNBQUF3VW9BQUFBSUFBRUJUQUFBQUFBQUJBR0FBQUJBQUFBRHdZQWdBQUFBQUFPQmdCQUFBQUFBQTBHQUNBQVFZQVhDNGNDQVFBQkFRVUFBQUFBQUFBRkFBQUFBQUFBQmdROUFBQUFBQUFKQmYwQkFBQUFBQThGL1g4QUFBQUFGUVg5L3g4QUFBQURCUVVBQUFBQUFBY0VmUUFBQUFBQURBWDlEd0FBQUFBU0JmMy9Bd0FBQUJjRi9mOS9BQUFBQlFVZEFBQUFBQUFJQlAwQUFBQUFBQTRGL1Q4QUFBQUFGQVg5L3c4QUFBQUNCUUVBQUFBUUFBY0VmUUFBQUFBQUN3WDlCd0FBQUFBUkJmMy9BUUFBQUJZRi9mOC9BQUFBQkFVTkFBQUFFQUFJQlAwQUFBQUFBQTBGL1I4QUFBQUFFd1g5L3djQUFBQUJCUUVBQUFBUUFBWUVQUUFBQUFBQUNnWDlBd0FBQUFBUUJmMy9BQUFBQUJ3Ri9mLy9Ed0FBR3dYOS8vOEhBQUFhQmYzLy93TUFBQmtGL2YvL0FRQUFHQVg5Ly84QVFaQVpDNFlFQVFBQkFRWUFBQUFBQUFBR0F3QUFBQUFBQUFRRUFBQUFJQUFBQlFVQUFBQUFBQUFGQmdBQUFBQUFBQVVJQUFBQUFBQUFCUWtBQUFBQUFBQUZDd0FBQUFBQUFBWU5BQUFBQUFBQUJoQUFBQUFBQUFBR0V3QUFBQUFBQUFZV0FBQUFBQUFBQmhrQUFBQUFBQUFHSEFBQUFBQUFBQVlmQUFBQUFBQUFCaUlBQUFBQUFBRUdKUUFBQUFBQUFRWXBBQUFBQUFBQ0JpOEFBQUFBQUFNR093QUFBQUFBQkFaVEFBQUFBQUFIQm9NQUFBQUFBQWtHQXdJQUFCQUFBQVFFQUFBQUFBQUFCQVVBQUFBZ0FBQUZCZ0FBQUFBQUFBVUhBQUFBSUFBQUJRa0FBQUFBQUFBRkNnQUFBQUFBQUFZTUFBQUFBQUFBQmc4QUFBQUFBQUFHRWdBQUFBQUFBQVlWQUFBQUFBQUFCaGdBQUFBQUFBQUdHd0FBQUFBQUFBWWVBQUFBQUFBQUJpRUFBQUFBQUFFR0l3QUFBQUFBQVFZbkFBQUFBQUFDQmlzQUFBQUFBQU1HTXdBQUFBQUFCQVpEQUFBQUFBQUZCbU1BQUFBQUFBZ0dBd0VBQUNBQUFBUUVBQUFBTUFBQUJBUUFBQUFRQUFBRUJRQUFBQ0FBQUFVSEFBQUFJQUFBQlFnQUFBQWdBQUFGQ2dBQUFDQUFBQVVMQUFBQUFBQUFCZzRBQUFBQUFBQUdFUUFBQUFBQUFBWVVBQUFBQUFBQUJoY0FBQUFBQUFBR0dnQUFBQUFBQUFZZEFBQUFBQUFBQmlBQUFBQUFBQkFHQXdBQkFBQUFEd1lEZ0FBQUFBQU9CZ05BQUFBQUFBMEdBeUFBQUFBQURBWURFQUFBQUFBTEJnTUlBQUFBQUFvR0F3UUFRYVFkQzlrQkFRQUFBQU1BQUFBSEFBQUFEd0FBQUI4QUFBQS9BQUFBZndBQUFQOEFBQUQvQVFBQS93TUFBUDhIQUFEL0R3QUEveDhBQVA4L0FBRC9md0FBLy84QUFQLy9BUUQvL3dNQS8vOEhBUC8vRHdELy94OEEvLzgvQVAvL2Z3RC8vLzhBLy8vL0FmLy8vd1AvLy84SC8vLy9ELy8vL3gvLy8vOC8vLy8vZndBQUFBQUJBQUFBQWdBQUFBUUFBQUFBQUFBQUFnQUFBQVFBQUFBSUFBQUFBQUFBQUFFQUFBQUNBQUFBQVFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFDQUFBQUFnQUFBQUhBQUFBQ0FBQUFBa0FBQUFLQUFBQUN3QkJnQjhMQTRBUkFRPT0iO3ZhciBPST1uZXcgeUEsVEk9ITE7YXN5bmMgZnVuY3Rpb24gY2UoQSxJLHQpe2xldCBlPW51bGw7dHlwZW9mIEEhPSJzdHJpbmciP2U9QS5ocmVmOkEuc3RhcnRzV2l0aCgiaHR0cCIpP2U9QTplPWAke0l9LyR7QX1gLGUuZW5kc1dpdGgoIi5qcyIpJiYoZT1lLnN1YnN0cmluZygwLGUubGVuZ3RoLTMpKSxlLmVuZHNXaXRoKCIud2FzbSIpJiYoZT1lLnN1YnN0cmluZygwLGUubGVuZ3RoLTUpKTtsZXQgZz1gJHtlfS53YXNtYCxyPWF3YWl0IGRBLmdldChgJHtnfS56c3RgLHtyZXNwb25zZVR5cGU6ImFycmF5YnVmZmVyIixwYXJhbXM6dH0pO1RJfHwoYXdhaXQgT0kuaW5pdCgpLFRJPSEwKTtsZXQgcz1PSS5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoci5kYXRhKSkuYnVmZmVyO3JldHVybihhd2FpdCBpbXBvcnQoYCR7ZX0uanNgKSkuZGVmYXVsdCh7d2FzbUJpbmFyeTpzfSl9dmFyIHhJPWNlO3ZhciB3QT1uZXcgTWFwO2FzeW5jIGZ1bmN0aW9uIGZlKEEsSSx0KXtsZXQgZT1BLGc9QSxyPW51bGw7cmV0dXJuIHR5cGVvZiBBIT0ic3RyaW5nIiYmKGU9bmV3IFVSTChBLmhyZWYpLGc9ZS5ocmVmKSx3QS5oYXMoZyk/cj1hd2FpdCB3QS5nZXQoZyk6KHdBLnNldChnLHhJKGUsSSx0KSkscj1hd2FpdCB3QS5nZXQoZykpLHJ9dmFyIFBJPWZlO3ZhciBsZT17VGV4dEZpbGU6IlRleHRGaWxlIixCaW5hcnlGaWxlOiJCaW5hcnlGaWxlIixUZXh0U3RyZWFtOiJUZXh0U3RyZWFtIixCaW5hcnlTdHJlYW06IkJpbmFyeVN0cmVhbSIsSW1hZ2U6IkltYWdlIixNZXNoOiJNZXNoIixQb2x5RGF0YToiUG9seURhdGEiLEpzb25Db21wYXRpYmxlOiJKc29uQ29tcGF0aWJsZSJ9LEQ9bGU7dmFyIERlPXtJbnQ4OiJpbnQ4IixVSW50ODoidWludDgiLEludDE2OiJpbnQxNiIsVUludDE2OiJ1aW50MTYiLEludDMyOiJpbnQzMiIsVUludDMyOiJ1aW50MzIiLEludDY0OiJpbnQ2NCIsVUludDY0OiJ1aW50NjQiLFNpemVWYWx1ZVR5cGU6InVpbnQ2NCIsSWRlbnRpZmllclR5cGU6InVpbnQ2NCIsSW5kZXhWYWx1ZVR5cGU6ImludDY0IixPZmZzZXRWYWx1ZVR5cGU6ImludDY0In0scD1EZTt2YXIgdWU9e0Zsb2F0MzI6ImZsb2F0MzIiLEZsb2F0NjQ6ImZsb2F0NjQiLFNwYWNlUHJlY2lzaW9uVHlwZToiZmxvYXQ2NCJ9LFA9dWU7ZnVuY3Rpb24gaGUoQSxJKXtsZXQgdD1udWxsO3N3aXRjaChBKXtjYXNlIHAuVUludDg6e3Q9bmV3IFVpbnQ4QXJyYXkoSSk7YnJlYWt9Y2FzZSBwLkludDg6e3Q9bmV3IEludDhBcnJheShJKTticmVha31jYXNlIHAuVUludDE2Ont0PW5ldyBVaW50MTZBcnJheShJKTticmVha31jYXNlIHAuSW50MTY6e3Q9bmV3IEludDE2QXJyYXkoSSk7YnJlYWt9Y2FzZSBwLlVJbnQzMjp7dD1uZXcgVWludDMyQXJyYXkoSSk7YnJlYWt9Y2FzZSBwLkludDMyOnt0PW5ldyBJbnQzMkFycmF5KEkpO2JyZWFrfWNhc2UgcC5VSW50NjQ6e3R5cGVvZiBnbG9iYWxUaGlzLkJpZ1VpbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ1VpbnQ2NEFycmF5KEkpOnQ9bmV3IFVpbnQ4QXJyYXkoSSk7YnJlYWt9Y2FzZSBwLkludDY0Ont0eXBlb2YgZ2xvYmFsVGhpcy5CaWdJbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ0ludDY0QXJyYXkoSSk6dD1uZXcgVWludDhBcnJheShJKTticmVha31jYXNlIFAuRmxvYXQzMjp7dD1uZXcgRmxvYXQzMkFycmF5KEkpO2JyZWFrfWNhc2UgUC5GbG9hdDY0Ont0PW5ldyBGbG9hdDY0QXJyYXkoSSk7YnJlYWt9Y2FzZSJudWxsIjp7dD1udWxsO2JyZWFrfWNhc2UgbnVsbDp7dD1udWxsO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlIGlzIG5vdCBzdXBwb3J0ZWQgYXMgYSBUeXBlZEFycmF5Iil9cmV0dXJuIHR9dmFyIFk9aGU7dmFyIFpJPXR5cGVvZiBnbG9iYWxUaGlzLlNoYXJlZEFycmF5QnVmZmVyPT0iZnVuY3Rpb24iLGpJPW5ldyBUZXh0RW5jb2RlcixXST1uZXcgVGV4dERlY29kZXIoInV0Zi04Iik7ZnVuY3Rpb24gZGUoQSxJKXtsZXQgdD17ZmxhZ3M6InIiLGVuY29kaW5nOiJiaW5hcnkifSxlPUEuZnNfb3BlbihJLHQuZmxhZ3MpLHI9QS5mc19zdGF0KEkpLnNpemUsaT1udWxsO1pJP2k9bmV3IFNoYXJlZEFycmF5QnVmZmVyKHIpOmk9bmV3IEFycmF5QnVmZmVyKHIpO2xldCBzPW5ldyBVaW50OEFycmF5KGkpO3JldHVybiBBLmZzX3JlYWQoZSxzLDAsciwwKSxBLmZzX2Nsb3NlKGUpLHN9ZnVuY3Rpb24gVkkoQSxJLHQpe2xldCBlPW51bGw7Wkk/ZT1uZXcgU2hhcmVkQXJyYXlCdWZmZXIodCk6ZT1uZXcgQXJyYXlCdWZmZXIodCk7bGV0IGc9bmV3IFVpbnQ4QXJyYXkoZSkscj1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsSSx0KTtyZXR1cm4gZy5zZXQociksZ31mdW5jdGlvbiB5KEEsSSx0LGUpe2xldCBnPTA7cmV0dXJuIEkhPT1udWxsJiYoZz1BLmNjYWxsKCJpdGtfd2FzbV9pbnB1dF9hcnJheV9hbGxvYyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCx0LGUsSS5idWZmZXIuYnl0ZUxlbmd0aF0pLEEuSEVBUFU4LnNldChuZXcgVWludDhBcnJheShJLmJ1ZmZlciksZykpLGd9ZnVuY3Rpb24gaihBLEksdCl7bGV0IGU9SlNPTi5zdHJpbmdpZnkoSSksZz1BLmNjYWxsKCJpdGtfd2FzbV9pbnB1dF9qc29uX2FsbG9jIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHQsZS5sZW5ndGhdKTtBLndyaXRlQXNjaWlUb01lbW9yeShlLGcsITEpfWZ1bmN0aW9uIFMoQSxJLHQsZSl7bGV0IGc9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsSSx0XSkscj1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxJLHRdKSxpPVZJKEEsZyxyKTtyZXR1cm4gWShlLGkuYnVmZmVyKX1mdW5jdGlvbiB6QShBLEkpe2xldCB0PUEuY2NhbGwoIml0a193YXNtX291dHB1dF9qc29uX2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIl0sWzAsSV0pLGU9QS5Bc2NpaVRvU3RyaW5nKHQpO3JldHVybiBKU09OLnBhcnNlKGUpfWZ1bmN0aW9uIHllKEEsSSx0LGUpe2UhPW51bGwmJmUubGVuZ3RoPjAmJmUuZm9yRWFjaChmdW5jdGlvbihuLEMpe3N3aXRjaChuLnR5cGUpe2Nhc2UgRC5UZXh0U3RyZWFtOntsZXQgbz1qSS5lbmNvZGUobi5kYXRhLmRhdGEpLGY9eShBLG8sQywwKSxRPXtzaXplOm8uYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YH07aihBLFEsQyk7YnJlYWt9Y2FzZSBELkpzb25Db21wYXRpYmxlOntsZXQgbz1qSS5lbmNvZGUoSlNPTi5zdHJpbmdpZnkobi5kYXRhKSksZj15KEEsbyxDLDApLFE9e3NpemU6by5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gfTtqKEEsUSxDKTticmVha31jYXNlIEQuQmluYXJ5U3RyZWFtOntsZXQgbz1uLmRhdGEuZGF0YSxmPXkoQSxvLEMsMCksUT17c2l6ZTpvLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWB9O2ooQSxRLEMpO2JyZWFrfWNhc2UgRC5UZXh0RmlsZTp7QS5mc193cml0ZUZpbGUobi5kYXRhLnBhdGgsbi5kYXRhLmRhdGEpO2JyZWFrfWNhc2UgRC5CaW5hcnlGaWxlOntBLmZzX3dyaXRlRmlsZShuLmRhdGEucGF0aCxuLmRhdGEuZGF0YSk7YnJlYWt9Y2FzZSBELkltYWdlOntsZXQgbz1uLmRhdGEsZj15KEEsby5kYXRhLEMsMCksUT15KEEsby5kaXJlY3Rpb24sQywxKSxFPXR5cGVvZiBvLm1ldGFkYXRhPy5lbnRyaWVzPCJ1Ij9KU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKG8ubWV0YWRhdGEuZW50cmllcygpKSk6IltdIixjPXtpbWFnZVR5cGU6by5pbWFnZVR5cGUsbmFtZTpvLm5hbWUsb3JpZ2luOm8ub3JpZ2luLHNwYWNpbmc6by5zcGFjaW5nLGRpcmVjdGlvbjpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1F9YCxzaXplOm8uc2l6ZSxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gLG1ldGFkYXRhOkV9O2ooQSxjLEMpO2JyZWFrfWNhc2UgRC5NZXNoOntsZXQgbz1uLmRhdGEsZj15KEEsby5wb2ludHMsQywwKSxRPXkoQSxvLmNlbGxzLEMsMSksRT15KEEsby5wb2ludERhdGEsQywyKSxjPXkoQSxvLmNlbGxEYXRhLEMsMyksdT17bWVzaFR5cGU6by5tZXNoVHlwZSxuYW1lOm8ubmFtZSxudW1iZXJPZlBvaW50czpvLm51bWJlck9mUG9pbnRzLHBvaW50czpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YCxudW1iZXJPZkNlbGxzOm8ubnVtYmVyT2ZDZWxscyxjZWxsczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1F9YCxjZWxsQnVmZmVyU2l6ZTpvLmNlbGxCdWZmZXJTaXplLG51bWJlck9mUG9pbnRQaXhlbHM6by5udW1iZXJPZlBvaW50UGl4ZWxzLHBvaW50RGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0V9YCxudW1iZXJPZkNlbGxQaXhlbHM6by5udW1iZXJPZkNlbGxQaXhlbHMsY2VsbERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWB9O2ooQSx1LEMpO2JyZWFrfWNhc2UgRC5Qb2x5RGF0YTp7bGV0IG89bi5kYXRhLGY9eShBLG8ucG9pbnRzLEMsMCksUT15KEEsby52ZXJ0aWNlcyxDLDEpLEU9eShBLG8ubGluZXMsQywyKSxjPXkoQSxvLnBvbHlnb25zLEMsMyksdT15KEEsby50cmlhbmdsZVN0cmlwcyxDLDQpLGQ9eShBLG8ucG9pbnREYXRhLEMsNSksUj15KEEsby5wb2ludERhdGEsQyw2KSxOPXtwb2x5RGF0YVR5cGU6by5wb2x5RGF0YVR5cGUsbmFtZTpvLm5hbWUsbnVtYmVyT2ZQb2ludHM6by5udW1iZXJPZlBvaW50cyxwb2ludHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWAsdmVydGljZXNCdWZmZXJTaXplOm8udmVydGljZXNCdWZmZXJTaXplLHZlcnRpY2VzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7UX1gLGxpbmVzQnVmZmVyU2l6ZTpvLmxpbmVzQnVmZmVyU2l6ZSxsaW5lczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0V9YCxwb2x5Z29uc0J1ZmZlclNpemU6by5wb2x5Z29uc0J1ZmZlclNpemUscG9seWdvbnM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWAsdHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplOm8udHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplLHRyaWFuZ2xlU3RyaXBzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7dX1gLG51bWJlck9mUG9pbnRQaXhlbHM6by5udW1iZXJPZlBvaW50UGl4ZWxzLHBvaW50RGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2R9YCxudW1iZXJPZkNlbGxQaXhlbHM6by5udW1iZXJPZkNlbGxQaXhlbHMsY2VsbERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtSfWB9O2ooQSxOLEMpO2JyZWFrfWRlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuc3VwcG9ydGVkIGlucHV0IEludGVyZmFjZVR5cGUiKX19KSxBLnJlc2V0TW9kdWxlU3Rkb3V0KCksQS5yZXNldE1vZHVsZVN0ZGVycigpO2xldCBnPUEuc3RhY2tTYXZlKCkscj0wO3RyeXtyPUEuY2FsbE1haW4oSS5zbGljZSgpKX1jYXRjaChuKXt0aHJvdyB0eXBlb2Ygbj09Im51bWJlciImJihjb25zb2xlLmxvZygiRXhjZXB0aW9uIHdoaWxlIHJ1bm5pbmcgcGlwZWxpbmU6IiksY29uc29sZS5sb2coInN0ZG91dDoiLEEuZ2V0TW9kdWxlU3Rkb3V0KCkpLGNvbnNvbGUuZXJyb3IoInN0ZGVycjoiLEEuZ2V0TW9kdWxlU3RkZXJyKCkpLHR5cGVvZiBBLmdldEV4Y2VwdGlvbk1lc3NhZ2U8InUiP2NvbnNvbGUuZXJyb3IoImV4Y2VwdGlvbjoiLEEuZ2V0RXhjZXB0aW9uTWVzc2FnZShuKSk6Y29uc29sZS5lcnJvcigiQnVpbGQgbW9kdWxlIGluIERlYnVnIG1vZGUgZm9yIGV4Y2VwdGlvbiBtZXNzYWdlIGluZm9ybWF0aW9uLiIpKSxufWZpbmFsbHl7QS5zdGFja1Jlc3RvcmUoZyl9bGV0IGk9QS5nZXRNb2R1bGVTdGRvdXQoKSxzPUEuZ2V0TW9kdWxlU3RkZXJyKCksYT1bXTtyZXR1cm4gdCE9bnVsbCYmdC5sZW5ndGg+MCYmcj09PTAmJnQuZm9yRWFjaChmdW5jdGlvbihuLEMpe2xldCBvPW51bGw7c3dpdGNoKG4udHlwZSl7Y2FzZSBELlRleHRTdHJlYW06e2xldCBRPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEMsMF0pLEU9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQywwXSksYz1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsUSxFKTtvPXtkYXRhOldJLmRlY29kZShjKX07YnJlYWt9Y2FzZSBELkpzb25Db21wYXRpYmxlOntsZXQgUT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxDLDBdKSxFPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEMsMF0pLGM9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLFEsRSk7bz1KU09OLnBhcnNlKFdJLmRlY29kZShjKSk7YnJlYWt9Y2FzZSBELkJpbmFyeVN0cmVhbTp7bGV0IFE9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQywwXSksRT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxDLDBdKTtvPXtkYXRhOlZJKEEsUSxFKX07YnJlYWt9Y2FzZSBELlRleHRGaWxlOntvPXtwYXRoOm4uZGF0YS5wYXRoLGRhdGE6QS5mc19yZWFkRmlsZShuLmRhdGEucGF0aCx7ZW5jb2Rpbmc6InV0ZjgifSl9O2JyZWFrfWNhc2UgRC5CaW5hcnlGaWxlOntvPXtwYXRoOm4uZGF0YS5wYXRoLGRhdGE6ZGUoQSxuLmRhdGEucGF0aCl9O2JyZWFrfWNhc2UgRC5JbWFnZTp7bGV0IFE9ekEoQSxDKTtRLmRhdGE9UyhBLEMsMCxRLmltYWdlVHlwZS5jb21wb25lbnRUeXBlKSxRLmRpcmVjdGlvbj1TKEEsQywxLFAuRmxvYXQ2NCksUS5tZXRhZGF0YT1uZXcgTWFwKFEubWV0YWRhdGEpLG89UTticmVha31jYXNlIEQuTWVzaDp7bGV0IFE9ekEoQSxDKTtRLm51bWJlck9mUG9pbnRzPjA/US5wb2ludHM9UyhBLEMsMCxRLm1lc2hUeXBlLnBvaW50Q29tcG9uZW50VHlwZSk6US5wb2ludHM9WShRLm1lc2hUeXBlLnBvaW50Q29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLFEubnVtYmVyT2ZDZWxscz4wP1EuY2VsbHM9UyhBLEMsMSxRLm1lc2hUeXBlLmNlbGxDb21wb25lbnRUeXBlKTpRLmNlbGxzPVkoUS5tZXNoVHlwZS5jZWxsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLFEubnVtYmVyT2ZQb2ludFBpeGVscz4wP1EucG9pbnREYXRhPVMoQSxDLDIsUS5tZXNoVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSk6US5wb2ludERhdGE9WShRLm1lc2hUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksUS5udW1iZXJPZkNlbGxQaXhlbHM+MD9RLmNlbGxEYXRhPVMoQSxDLDMsUS5tZXNoVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlKTpRLmNlbGxEYXRhPVkoUS5tZXNoVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksbz1RO2JyZWFrfWNhc2UgRC5Qb2x5RGF0YTp7bGV0IFE9ekEoQSxDKTtRLm51bWJlck9mUG9pbnRzPjA/US5wb2ludHM9UyhBLEMsMCxQLkZsb2F0MzIpOlEucG9pbnRzPW5ldyBGbG9hdDMyQXJyYXksUS52ZXJ0aWNlc0J1ZmZlclNpemU+MD9RLnZlcnRpY2VzPVMoQSxDLDEscC5VSW50MzIpOlEudmVydGljZXM9bmV3IFVpbnQzMkFycmF5LFEubGluZXNCdWZmZXJTaXplPjA/US5saW5lcz1TKEEsQywyLHAuVUludDMyKTpRLmxpbmVzPW5ldyBVaW50MzJBcnJheSxRLnBvbHlnb25zQnVmZmVyU2l6ZT4wP1EucG9seWdvbnM9UyhBLEMsMyxwLlVJbnQzMik6US5wb2x5Z29ucz1uZXcgVWludDMyQXJyYXksUS50cmlhbmdsZVN0cmlwc0J1ZmZlclNpemU+MD9RLnRyaWFuZ2xlU3RyaXBzPVMoQSxDLDQscC5VSW50MzIpOlEudHJpYW5nbGVTdHJpcHM9bmV3IFVpbnQzMkFycmF5LFEubnVtYmVyT2ZQb2ludFBpeGVscz4wP1EucG9pbnREYXRhPVMoQSxDLDUsUS5wb2x5RGF0YVR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUpOlEucG9pbnREYXRhPVkoUS5wb2x5RGF0YVR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxRLm51bWJlck9mQ2VsbFBpeGVscz4wP1EuY2VsbERhdGE9UyhBLEMsNixRLnBvbHlEYXRhVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlKTpRLmNlbGxEYXRhPVkoUS5wb2x5RGF0YVR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLG89UTticmVha31kZWZhdWx0OnRocm93IEVycm9yKCJVbnN1cHBvcnRlZCBvdXRwdXQgSW50ZXJmYWNlVHlwZSIpfWxldCBmPXt0eXBlOm4udHlwZSxkYXRhOm99O2EucHVzaChmKX0pLHtyZXR1cm5WYWx1ZTpyLHN0ZG91dDppLHN0ZGVycjpzLG91dHB1dHM6YX19dmFyIFhJPXllO3ZhciB3ZT10eXBlb2YgZ2xvYmFsVGhpcy5TaGFyZWRBcnJheUJ1ZmZlcjwidSI7ZnVuY3Rpb24gbWUoQSxJKXtpZihBPT1udWxsKXJldHVybltdO2xldCB0PVtdO2ZvcihsZXQgZT0wO2U8QS5sZW5ndGg7ZSsrKXtsZXQgZz1wZShBW2VdLEkpO2chPT1udWxsJiZ0LnB1c2goZyl9cmV0dXJuIHR9ZnVuY3Rpb24gcGUoQSxJKXtpZihBPT1udWxsKXJldHVybiBudWxsO2xldCB0PW51bGw7cmV0dXJuIEEuYnVmZmVyIT09dm9pZCAwP3Q9QS5idWZmZXI6QS5ieXRlTGVuZ3RoIT09dm9pZCAwJiYodD1BKSx3ZSYmdCBpbnN0YW5jZW9mIFNoYXJlZEFycmF5QnVmZmVyP251bGw6ST90OnQuc2xpY2UoMCl9dmFyIHpJPW1lO2Z1bmN0aW9uIFNlKEEpe3JldHVybltBLmRhdGEsQS5kaXJlY3Rpb25dfXZhciBfST1TZTtmdW5jdGlvbiBGZShBKXtyZXR1cm5bQS5wb2ludHMsQS5wb2ludERhdGEsQS5jZWxscyxBLmNlbGxEYXRhXX12YXIgdkk9RmU7ZnVuY3Rpb24gUmUoQSl7cmV0dXJuW0EucG9pbnRzLEEudmVydGljZXMsQS5saW5lcyxBLnBvbHlnb25zLEEudHJpYW5nbGVTdHJpcHMsQS5wb2ludERhdGEsQS5jZWxsRGF0YV19dmFyICRJPVJlO2FzeW5jIGZ1bmN0aW9uIE5lKEEsSSx0LGUpe2xldCBnPVhJKEEsSSx0LGUpLHI9W107cmV0dXJuIGcub3V0cHV0cy5mb3JFYWNoKGZ1bmN0aW9uKGkpe2lmKGkudHlwZT09PUQuQmluYXJ5U3RyZWFtfHxpLnR5cGU9PT1ELkJpbmFyeUZpbGUpe2xldCBzPWkuZGF0YTtyLnB1c2gocyl9ZWxzZSBpZihpLnR5cGU9PT1ELkltYWdlKXtsZXQgcz1pLmRhdGE7ci5wdXNoKC4uLl9JKHMpKX1lbHNlIGlmKGkudHlwZT09PUQuTWVzaCl7bGV0IHM9aS5kYXRhO3IucHVzaCguLi52SShzKSl9ZWxzZSBpZihpLnR5cGU9PT1ELlBvbHlEYXRhKXtsZXQgcz1pLmRhdGE7ci5wdXNoKC4uLiRJKHMpKX19KSxTQShnLHpJKHIsITApKX12YXIgQXQ9TmU7dmFyIFVlPXtydW5QaXBlbGluZTphc3luYyBmdW5jdGlvbihBLEksdCxlLGcscil7bGV0IGk9YXdhaXQgUEkoQSxJLHIpO3JldHVybiBhd2FpdCBBdChpLHQsZSxnKX19O29BKFVlKTslMEEvKiEgQnVuZGxlZCBsaWNlbnNlIGluZm9ybWF0aW9uOiUwQSUwQWNvbWxpbmsvZGlzdC9lc20vY29tbGluay5tanM6JTBBICAoKiolMEEgICAqIEBsaWNlbnNlJTBBICAgKiBDb3B5cmlnaHQgMjAxOSBHb29nbGUgTExDJTBBICAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCUwQSAgICopJTBBKi8lMEEnO2RyKHlyKTtleHBvcnR7WUEgYXMgYmlvUmFkUmVhZEltYWdlLHFBIGFzIGJpb1JhZFdyaXRlSW1hZ2UsVUEgYXMgYm1wUmVhZEltYWdlLFNBIGFzIGJtcFdyaXRlSW1hZ2UsWSBhcyBleHRlbnNpb25Ub0ltYWdlSW8scnQgYXMgZmRmUmVhZEltYWdlLGZhIGFzIGZkZldyaXRlSW1hZ2UsJEEgYXMgZ2RjbVJlYWRJbWFnZSxldCBhcyBnZGNtV3JpdGVJbWFnZSxWQSBhcyBnZTRSZWFkSW1hZ2UsX0EgYXMgZ2U0V3JpdGVJbWFnZSxaQSBhcyBnZTVSZWFkSW1hZ2UsWEEgYXMgZ2U1V3JpdGVJbWFnZSx2QSBhcyBnZUFkd1JlYWRJbWFnZSx6QSBhcyBnZUFkd1dyaXRlSW1hZ2UseSBhcyBnZXREZWZhdWx0V2ViV29ya2VyLGQgYXMgZ2V0UGlwZWxpbmVXb3JrZXJVcmwsRSBhcyBnZXRQaXBlbGluZXNCYXNlVXJsLEtBIGFzIGdpcGxSZWFkSW1hZ2UsakEgYXMgZ2lwbFdyaXRlSW1hZ2UsT0EgYXMgaGRmNVJlYWRJbWFnZSxOQSBhcyBoZGY1V3JpdGVJbWFnZSxSQSBhcyBqcGVnUmVhZEltYWdlLGtBIGFzIGpwZWdXcml0ZUltYWdlLEpBIGFzIGxzbVJlYWRJbWFnZSxMQSBhcyBsc21Xcml0ZUltYWdlLENBIGFzIG1ldGFSZWFkSW1hZ2UsRUEgYXMgbWV0YVdyaXRlSW1hZ2UsTUEgYXMgbWdoUmVhZEltYWdlLEhBIGFzIG1naFdyaXRlSW1hZ2UsUEEgYXMgbWluY1JlYWRJbWFnZSx4QSBhcyBtaW5jV3JpdGVJbWFnZSxHQSBhcyBtcmNSZWFkSW1hZ2UsVEEgYXMgbXJjV3JpdGVJbWFnZSxoQSBhcyBuaWZ0aVJlYWRJbWFnZSx3QSBhcyBuaWZ0aVdyaXRlSW1hZ2UsYkEgYXMgbnJyZFJlYWRJbWFnZSxEQSBhcyBucnJkV3JpdGVJbWFnZSxCQSBhcyBwbmdSZWFkSW1hZ2UsZEEgYXMgcG5nV3JpdGVJbWFnZSxzdCBhcyByZWFkSW1hZ2UsbGEgYXMgcmVhZEltYWdlRmlsZVNlcmllcyxtbyBhcyByZWFkSW1hZ2VIdHRwLEF0IGFzIHNjYW5jb1JlYWRJbWFnZSx0dCBhcyBzY2FuY29Xcml0ZUltYWdlLFZnIGFzIHNldERlZmF1bHRXZWJXb3JrZXIsZHIgYXMgc2V0UGlwZWxpbmVXb3JrZXJVcmwsSGcgYXMgc2V0UGlwZWxpbmVzQmFzZVVybCx5QSBhcyB0aWZmUmVhZEltYWdlLFFBIGFzIHRpZmZXcml0ZUltYWdlLFdBIGFzIHZ0a1JlYWRJbWFnZSxGQSBhcyB2dGtXcml0ZUltYWdlLGl0IGFzIHdhc21SZWFkSW1hZ2Usb3QgYXMgd2FzbVdyaXRlSW1hZ2UsYXQgYXMgd2FzbVpzdGRSZWFkSW1hZ2UsbnQgYXMgd2FzbVpzdGRXcml0ZUltYWdlLG1hIGFzIHdyaXRlSW1hZ2V9OwovKiEgQnVuZGxlZCBsaWNlbnNlIGluZm9ybWF0aW9uOgoKY29tbGluay9kaXN0L2VzbS9jb21saW5rLm1qczoKICAoKioKICAgKiBAbGljZW5zZQogICAqIENvcHlyaWdodCAyMDE5IEdvb2dsZSBMTEMKICAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMAogICAqKQoqLwo=""" default_config = JsPackageConfig(default_js_module) js_package = JsPackage(default_config) diff --git a/packages/mesh-io/python/itkwasm-mesh-io-emscripten/itkwasm_mesh_io_emscripten/js_package.py b/packages/mesh-io/python/itkwasm-mesh-io-emscripten/itkwasm_mesh_io_emscripten/js_package.py index 6ca0ac260..9832e1f47 100644 --- a/packages/mesh-io/python/itkwasm-mesh-io-emscripten/itkwasm_mesh_io_emscripten/js_package.py +++ b/packages/mesh-io/python/itkwasm-mesh-io-emscripten/itkwasm_mesh_io_emscripten/js_package.py @@ -3,6 +3,6 @@ from itkwasm.pyodide import JsPackageConfig, JsPackage from ._version import __version__ -default_js_module = """data:text/javascript;base64,dmFyIHh0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgVHQ9KEEsZSk9Pntmb3IodmFyIHQgaW4gZSl4dChBLHQse2dldDplW3RdLGVudW1lcmFibGU6ITB9KX07dmFyIEp0PW5ldyBNYXAoW1sidnRrIiwidnRrIl0sWyJieXUiLCJieXUiXSxbImZzYSIsImZyZWUtc3VyZmVyLWFzY2lpIl0sWyJmc2IiLCJmcmVlLXN1cmZlci1iaW5hcnkiXSxbIm9iaiIsIm9iaiJdLFsib2ZmIiwib2ZmIl0sWyJzdGwiLCJzdGwiXSxbInN3YyIsInN3YyJdLFsiaXdtIiwid2FzbSJdLFsiaXdtLmNib3IiLCJ3YXNtIl0sWyJpd20uY2Jvci56c3QiLCJ3YXNtLXpzdGQiXV0pLFQ9SnQ7dmFyIEh0PXtJbnQ4OiJpbnQ4IixVSW50ODoidWludDgiLEludDE2OiJpbnQxNiIsVUludDE2OiJ1aW50MTYiLEludDMyOiJpbnQzMiIsVUludDMyOiJ1aW50MzIiLEludDY0OiJpbnQ2NCIsVUludDY0OiJ1aW50NjQiLFNpemVWYWx1ZVR5cGU6InVpbnQ2NCIsSWRlbnRpZmllclR5cGU6InVpbnQ2NCIsSW5kZXhWYWx1ZVR5cGU6ImludDY0IixPZmZzZXRWYWx1ZVR5cGU6ImludDY0In0sUz1IdDt2YXIgWXQ9e0Zsb2F0MzI6ImZsb2F0MzIiLEZsb2F0NjQ6ImZsb2F0NjQiLFNwYWNlUHJlY2lzaW9uVHlwZToiZmxvYXQ2NCJ9LEg9WXQ7ZnVuY3Rpb24gcXQoQSxlKXtsZXQgdD1udWxsO3N3aXRjaChBKXtjYXNlIFMuVUludDg6e3Q9bmV3IFVpbnQ4QXJyYXkoZSk7YnJlYWt9Y2FzZSBTLkludDg6e3Q9bmV3IEludDhBcnJheShlKTticmVha31jYXNlIFMuVUludDE2Ont0PW5ldyBVaW50MTZBcnJheShlKTticmVha31jYXNlIFMuSW50MTY6e3Q9bmV3IEludDE2QXJyYXkoZSk7YnJlYWt9Y2FzZSBTLlVJbnQzMjp7dD1uZXcgVWludDMyQXJyYXkoZSk7YnJlYWt9Y2FzZSBTLkludDMyOnt0PW5ldyBJbnQzMkFycmF5KGUpO2JyZWFrfWNhc2UgUy5VSW50NjQ6e3R5cGVvZiBnbG9iYWxUaGlzLkJpZ1VpbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ1VpbnQ2NEFycmF5KGUpOnQ9bmV3IFVpbnQ4QXJyYXkoZSk7YnJlYWt9Y2FzZSBTLkludDY0Ont0eXBlb2YgZ2xvYmFsVGhpcy5CaWdJbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ0ludDY0QXJyYXkoZSk6dD1uZXcgVWludDhBcnJheShlKTticmVha31jYXNlIEguRmxvYXQzMjp7dD1uZXcgRmxvYXQzMkFycmF5KGUpO2JyZWFrfWNhc2UgSC5GbG9hdDY0Ont0PW5ldyBGbG9hdDY0QXJyYXkoZSk7YnJlYWt9Y2FzZSJudWxsIjp7dD1udWxsO2JyZWFrfWNhc2UgbnVsbDp7dD1udWxsO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlIGlzIG5vdCBzdXBwb3J0ZWQgYXMgYSBUeXBlZEFycmF5Iil9cmV0dXJuIHR9dmFyIFA9cXQ7ZnVuY3Rpb24gS3QoQSl7bGV0IGU9QS5zbGljZSgoQS5sYXN0SW5kZXhPZigiLiIpLTE+Pj4wKSsyKTtpZihlLnRvTG93ZXJDYXNlKCk9PT0iZ3oiKXtsZXQgdD1BLnNsaWNlKDAsLTMpLmxhc3RJbmRleE9mKCIuIik7ZT1BLnNsaWNlKCh0LTE+Pj4wKSsyKX1lbHNlIGlmKGUudG9Mb3dlckNhc2UoKT09PSJjYm9yIil7bGV0IHQ9QS5zbGljZSgwLC01KS5sYXN0SW5kZXhPZigiLiIpO2U9QS5zbGljZSgodC0xPj4+MCkrMil9ZWxzZSBpZihlLnRvTG93ZXJDYXNlKCk9PT0ienN0Iil7bGV0IHQ9QS5zbGljZSgwLC0xMCkubGFzdEluZGV4T2YoIi4iKTtlPUEuc2xpY2UoKHQtMT4+PjApKzIpfWVsc2UgaWYoZS50b0xvd2VyQ2FzZSgpPT09InppcCIpe2xldCB0PUEuc2xpY2UoMCwtNCkubGFzdEluZGV4T2YoIi4iKTtlPUEuc2xpY2UoKHQtMT4+PjApKzIpfXJldHVybiBlfXZhciBBQT1LdDt2YXIganQ9e1RleHRGaWxlOiJUZXh0RmlsZSIsQmluYXJ5RmlsZToiQmluYXJ5RmlsZSIsVGV4dFN0cmVhbToiVGV4dFN0cmVhbSIsQmluYXJ5U3RyZWFtOiJCaW5hcnlTdHJlYW0iLEltYWdlOiJJbWFnZSIsTWVzaDoiTWVzaCIsUG9seURhdGE6IlBvbHlEYXRhIixKc29uQ29tcGF0aWJsZToiSnNvbkNvbXBhdGlibGUifSxDPWp0O3ZhciBTZT1TeW1ib2woIkNvbWxpbmsucHJveHkiKSx2dD1TeW1ib2woIkNvbWxpbmsuZW5kcG9pbnQiKSxPQT1TeW1ib2woIkNvbWxpbmsucmVsZWFzZVByb3h5IiksTkE9U3ltYm9sKCJDb21saW5rLmZpbmFsaXplciIpLEJBPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSxGZT1BPT50eXBlb2YgQT09Im9iamVjdCImJkEhPT1udWxsfHx0eXBlb2YgQT09ImZ1bmN0aW9uIixfdD17Y2FuSGFuZGxlOkE9PkZlKEEpJiZBW1NlXSxzZXJpYWxpemUoQSl7bGV0e3BvcnQxOmUscG9ydDI6dH09bmV3IE1lc3NhZ2VDaGFubmVsO3JldHVybiBOZShBLGUpLFt0LFt0XV19LGRlc2VyaWFsaXplKEEpe3JldHVybiBBLnN0YXJ0KCksV0EoQSl9fSx6dD17Y2FuSGFuZGxlOkE9PkZlKEEpJiZCQSBpbiBBLHNlcmlhbGl6ZSh7dmFsdWU6QX0pe2xldCBlO3JldHVybiBBIGluc3RhbmNlb2YgRXJyb3I/ZT17aXNFcnJvcjohMCx2YWx1ZTp7bWVzc2FnZTpBLm1lc3NhZ2UsbmFtZTpBLm5hbWUsc3RhY2s6QS5zdGFja319OmU9e2lzRXJyb3I6ITEsdmFsdWU6QX0sW2UsW11dfSxkZXNlcmlhbGl6ZShBKXt0aHJvdyBBLmlzRXJyb3I/T2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoQS52YWx1ZS5tZXNzYWdlKSxBLnZhbHVlKTpBLnZhbHVlfX0sVWU9bmV3IE1hcChbWyJwcm94eSIsX3RdLFsidGhyb3ciLHp0XV0pO2Z1bmN0aW9uIFZ0KEEsZSl7Zm9yKGxldCB0IG9mIEEpaWYoZT09PXR8fHQ9PT0iKiJ8fHQgaW5zdGFuY2VvZiBSZWdFeHAmJnQudGVzdChlKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBOZShBLGU9Z2xvYmFsVGhpcyx0PVsiKiJdKXtlLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uIHIobyl7aWYoIW98fCFvLmRhdGEpcmV0dXJuO2lmKCFWdCh0LG8ub3JpZ2luKSl7Y29uc29sZS53YXJuKGBJbnZhbGlkIG9yaWdpbiAnJHtvLm9yaWdpbn0nIGZvciBjb21saW5rIHByb3h5YCk7cmV0dXJufWxldHtpZDppLHR5cGU6bixwYXRoOmd9PU9iamVjdC5hc3NpZ24oe3BhdGg6W119LG8uZGF0YSksZj0oby5kYXRhLmFyZ3VtZW50TGlzdHx8W10pLm1hcChKKSxCO3RyeXtsZXQgcz1nLnNsaWNlKDAsLTEpLnJlZHVjZSgoYyxJKT0+Y1tJXSxBKSxhPWcucmVkdWNlKChjLEkpPT5jW0ldLEEpO3N3aXRjaChuKXtjYXNlIkdFVCI6Qj1hO2JyZWFrO2Nhc2UiU0VUIjpzW2cuc2xpY2UoLTEpWzBdXT1KKG8uZGF0YS52YWx1ZSksQj0hMDticmVhaztjYXNlIkFQUExZIjpCPWEuYXBwbHkocyxmKTticmVhaztjYXNlIkNPTlNUUlVDVCI6e2xldCBjPW5ldyBhKC4uLmYpO0I9ZXIoYyl9YnJlYWs7Y2FzZSJFTkRQT0lOVCI6e2xldHtwb3J0MTpjLHBvcnQyOkl9PW5ldyBNZXNzYWdlQ2hhbm5lbDtOZShBLEkpLEI9UEEoYyxbY10pfWJyZWFrO2Nhc2UiUkVMRUFTRSI6Qj12b2lkIDA7YnJlYWs7ZGVmYXVsdDpyZXR1cm59fWNhdGNoKHMpe0I9e3ZhbHVlOnMsW0JBXTowfX1Qcm9taXNlLnJlc29sdmUoQikuY2F0Y2gocz0+KHt2YWx1ZTpzLFtCQV06MH0pKS50aGVuKHM9PntsZXRbYSxjXT1mQShzKTtlLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhKSx7aWQ6aX0pLGMpLG49PT0iUkVMRUFTRSImJihlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHIpLE1lKGUpLE5BIGluIEEmJnR5cGVvZiBBW05BXT09ImZ1bmN0aW9uIiYmQVtOQV0oKSl9KS5jYXRjaChzPT57bGV0W2EsY109ZkEoe3ZhbHVlOm5ldyBUeXBlRXJyb3IoIlVuc2VyaWFsaXphYmxlIHJldHVybiB2YWx1ZSIpLFtCQV06MH0pO2UucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGEpLHtpZDppfSksYyl9KX0pLGUuc3RhcnQmJmUuc3RhcnQoKX1mdW5jdGlvbiBadChBKXtyZXR1cm4gQS5jb25zdHJ1Y3Rvci5uYW1lPT09Ik1lc3NhZ2VQb3J0In1mdW5jdGlvbiBNZShBKXtadChBKSYmQS5jbG9zZSgpfWZ1bmN0aW9uIFdBKEEsZSl7cmV0dXJuIE1BKEEsW10sZSl9ZnVuY3Rpb24gbEEoQSl7aWYoQSl0aHJvdyBuZXcgRXJyb3IoIlByb3h5IGhhcyBiZWVuIHJlbGVhc2VkIGFuZCBpcyBub3QgdXNlYWJsZSIpfWZ1bmN0aW9uIE9lKEEpe3JldHVybiBZKEEse3R5cGU6IlJFTEVBU0UifSkudGhlbigoKT0+e01lKEEpfSl9dmFyIHVBPW5ldyBXZWFrTWFwLENBPSJGaW5hbGl6YXRpb25SZWdpc3RyeSJpbiBnbG9iYWxUaGlzJiZuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoQT0+e2xldCBlPSh1QS5nZXQoQSl8fDApLTE7dUEuc2V0KEEsZSksZT09PTAmJk9lKEEpfSk7ZnVuY3Rpb24gWHQoQSxlKXtsZXQgdD0odUEuZ2V0KGUpfHwwKSsxO3VBLnNldChlLHQpLENBJiZDQS5yZWdpc3RlcihBLGUsQSl9ZnVuY3Rpb24gJHQoQSl7Q0EmJkNBLnVucmVnaXN0ZXIoQSl9ZnVuY3Rpb24gTUEoQSxlPVtdLHQ9ZnVuY3Rpb24oKXt9KXtsZXQgcj0hMSxvPW5ldyBQcm94eSh0LHtnZXQoaSxuKXtpZihsQShyKSxuPT09T0EpcmV0dXJuKCk9PnskdChvKSxPZShBKSxyPSEwfTtpZihuPT09InRoZW4iKXtpZihlLmxlbmd0aD09PTApcmV0dXJue3RoZW46KCk9Pm99O2xldCBnPVkoQSx7dHlwZToiR0VUIixwYXRoOmUubWFwKGY9PmYudG9TdHJpbmcoKSl9KS50aGVuKEopO3JldHVybiBnLnRoZW4uYmluZChnKX1yZXR1cm4gTUEoQSxbLi4uZSxuXSl9LHNldChpLG4sZyl7bEEocik7bGV0W2YsQl09ZkEoZyk7cmV0dXJuIFkoQSx7dHlwZToiU0VUIixwYXRoOlsuLi5lLG5dLm1hcChzPT5zLnRvU3RyaW5nKCkpLHZhbHVlOmZ9LEIpLnRoZW4oSil9LGFwcGx5KGksbixnKXtsQShyKTtsZXQgZj1lW2UubGVuZ3RoLTFdO2lmKGY9PT12dClyZXR1cm4gWShBLHt0eXBlOiJFTkRQT0lOVCJ9KS50aGVuKEopO2lmKGY9PT0iYmluZCIpcmV0dXJuIE1BKEEsZS5zbGljZSgwLC0xKSk7bGV0W0Isc109a2UoZyk7cmV0dXJuIFkoQSx7dHlwZToiQVBQTFkiLHBhdGg6ZS5tYXAoYT0+YS50b1N0cmluZygpKSxhcmd1bWVudExpc3Q6Qn0scykudGhlbihKKX0sY29uc3RydWN0KGksbil7bEEocik7bGV0W2csZl09a2Uobik7cmV0dXJuIFkoQSx7dHlwZToiQ09OU1RSVUNUIixwYXRoOmUubWFwKEI9PkIudG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omd9LGYpLnRoZW4oSil9fSk7cmV0dXJuIFh0KG8sQSksb31mdW5jdGlvbiBBcihBKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxBKX1mdW5jdGlvbiBrZShBKXtsZXQgZT1BLm1hcChmQSk7cmV0dXJuW2UubWFwKHQ9PnRbMF0pLEFyKGUubWFwKHQ9PnRbMV0pKV19dmFyIFdlPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIFBBKEEsZSl7cmV0dXJuIFdlLnNldChBLGUpLEF9ZnVuY3Rpb24gZXIoQSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oQSx7W1NlXTohMH0pfWZ1bmN0aW9uIGZBKEEpe2ZvcihsZXRbZSx0XW9mIFVlKWlmKHQuY2FuSGFuZGxlKEEpKXtsZXRbcixvXT10LnNlcmlhbGl6ZShBKTtyZXR1cm5be3R5cGU6IkhBTkRMRVIiLG5hbWU6ZSx2YWx1ZTpyfSxvXX1yZXR1cm5be3R5cGU6IlJBVyIsdmFsdWU6QX0sV2UuZ2V0KEEpfHxbXV19ZnVuY3Rpb24gSihBKXtzd2l0Y2goQS50eXBlKXtjYXNlIkhBTkRMRVIiOnJldHVybiBVZS5nZXQoQS5uYW1lKS5kZXNlcmlhbGl6ZShBLnZhbHVlKTtjYXNlIlJBVyI6cmV0dXJuIEEudmFsdWV9fWZ1bmN0aW9uIFkoQSxlLHQpe3JldHVybiBuZXcgUHJvbWlzZShyPT57bGV0IG89dHIoKTtBLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uIGkobil7IW4uZGF0YXx8IW4uZGF0YS5pZHx8bi5kYXRhLmlkIT09b3x8KEEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsaSkscihuLmRhdGEpKX0pLEEuc3RhcnQmJkEuc3RhcnQoKSxBLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oe2lkOm99LGUpLHQpfSl9ZnVuY3Rpb24gdHIoKXtyZXR1cm4gbmV3IEFycmF5KDQpLmZpbGwoMCkubWFwKCgpPT5NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLnRvU3RyaW5nKDE2KSkuam9pbigiLSIpfWZ1bmN0aW9uIGVBKEEsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEEuYXBwbHkoZSxhcmd1bWVudHMpfX12YXJ7dG9TdHJpbmc6cnJ9PU9iamVjdC5wcm90b3R5cGUse2dldFByb3RvdHlwZU9mOnhBfT1PYmplY3QscEE9KEE9PmU9PntsZXQgdD1yci5jYWxsKGUpO3JldHVybiBBW3RdfHwoQVt0XT10LnNsaWNlKDgsLTEpLnRvTG93ZXJDYXNlKCkpfSkoT2JqZWN0LmNyZWF0ZShudWxsKSksTz1BPT4oQT1BLnRvTG93ZXJDYXNlKCksZT0+cEEoZSk9PT1BKSxFQT1BPT5lPT50eXBlb2YgZT09PUEse2lzQXJyYXk6cX09QXJyYXksdEE9RUEoInVuZGVmaW5lZCIpO2Z1bmN0aW9uIGlyKEEpe3JldHVybiBBIT09bnVsbCYmIXRBKEEpJiZBLmNvbnN0cnVjdG9yIT09bnVsbCYmIXRBKEEuY29uc3RydWN0b3IpJiZVKEEuY29uc3RydWN0b3IuaXNCdWZmZXIpJiZBLmNvbnN0cnVjdG9yLmlzQnVmZmVyKEEpfXZhciB4ZT1PKCJBcnJheUJ1ZmZlciIpO2Z1bmN0aW9uIG9yKEEpe2xldCBlO3JldHVybiB0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZBcnJheUJ1ZmZlci5pc1ZpZXc/ZT1BcnJheUJ1ZmZlci5pc1ZpZXcoQSk6ZT1BJiZBLmJ1ZmZlciYmeGUoQS5idWZmZXIpLGV9dmFyIG5yPUVBKCJzdHJpbmciKSxVPUVBKCJmdW5jdGlvbiIpLFRlPUVBKCJudW1iZXIiKSxRQT1BPT5BIT09bnVsbCYmdHlwZW9mIEE9PSJvYmplY3QiLHNyPUE9PkE9PT0hMHx8QT09PSExLGNBPUE9PntpZihwQShBKSE9PSJvYmplY3QiKXJldHVybiExO2xldCBlPXhBKEEpO3JldHVybihlPT09bnVsbHx8ZT09PU9iamVjdC5wcm90b3R5cGV8fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PW51bGwpJiYhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBBKSYmIShTeW1ib2wuaXRlcmF0b3IgaW4gQSl9LGFyPU8oIkRhdGUiKSxJcj1PKCJGaWxlIiksZ3I9TygiQmxvYiIpLGxyPU8oIkZpbGVMaXN0IiksQnI9QT0+UUEoQSkmJlUoQS5waXBlKSx1cj1BPT57bGV0IGU7cmV0dXJuIEEmJih0eXBlb2YgRm9ybURhdGE9PSJmdW5jdGlvbiImJkEgaW5zdGFuY2VvZiBGb3JtRGF0YXx8VShBLmFwcGVuZCkmJigoZT1wQShBKSk9PT0iZm9ybWRhdGEifHxlPT09Im9iamVjdCImJlUoQS50b1N0cmluZykmJkEudG9TdHJpbmcoKT09PSJbb2JqZWN0IEZvcm1EYXRhXSIpKX0sQ3I9TygiVVJMU2VhcmNoUGFyYW1zIiksZnI9QT0+QS50cmltP0EudHJpbSgpOkEucmVwbGFjZSgvXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csIiIpO2Z1bmN0aW9uIHJBKEEsZSx7YWxsT3duS2V5czp0PSExfT17fSl7aWYoQT09PW51bGx8fHR5cGVvZiBBPiJ1IilyZXR1cm47bGV0IHIsbztpZih0eXBlb2YgQSE9Im9iamVjdCImJihBPVtBXSkscShBKSlmb3Iocj0wLG89QS5sZW5ndGg7cjxvO3IrKyllLmNhbGwobnVsbCxBW3JdLHIsQSk7ZWxzZXtsZXQgaT10P09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEEpOk9iamVjdC5rZXlzKEEpLG49aS5sZW5ndGgsZztmb3Iocj0wO3I8bjtyKyspZz1pW3JdLGUuY2FsbChudWxsLEFbZ10sZyxBKX19ZnVuY3Rpb24gSmUoQSxlKXtlPWUudG9Mb3dlckNhc2UoKTtsZXQgdD1PYmplY3Qua2V5cyhBKSxyPXQubGVuZ3RoLG87Zm9yKDtyLS0gPjA7KWlmKG89dFtyXSxlPT09by50b0xvd2VyQ2FzZSgpKXJldHVybiBvO3JldHVybiBudWxsfXZhciBIZT10eXBlb2YgZ2xvYmFsVGhpczwidSI/Z2xvYmFsVGhpczp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6Z2xvYmFsLFllPUE9PiF0QShBKSYmQSE9PUhlO2Z1bmN0aW9uIExBKCl7bGV0e2Nhc2VsZXNzOkF9PVllKHRoaXMpJiZ0aGlzfHx7fSxlPXt9LHQ9KHIsbyk9PntsZXQgaT1BJiZKZShlLG8pfHxvO2NBKGVbaV0pJiZjQShyKT9lW2ldPUxBKGVbaV0scik6Y0Eocik/ZVtpXT1MQSh7fSxyKTpxKHIpP2VbaV09ci5zbGljZSgpOmVbaV09cn07Zm9yKGxldCByPTAsbz1hcmd1bWVudHMubGVuZ3RoO3I8bztyKyspYXJndW1lbnRzW3JdJiZyQShhcmd1bWVudHNbcl0sdCk7cmV0dXJuIGV9dmFyIGNyPShBLGUsdCx7YWxsT3duS2V5czpyfT17fSk9PihyQShlLChvLGkpPT57dCYmVShvKT9BW2ldPWVBKG8sdCk6QVtpXT1vfSx7YWxsT3duS2V5czpyfSksQSkscHI9QT0+KEEuY2hhckNvZGVBdCgwKT09PTY1Mjc5JiYoQT1BLnNsaWNlKDEpKSxBKSxFcj0oQSxlLHQscik9PntBLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlLHIpLEEucHJvdG90eXBlLmNvbnN0cnVjdG9yPUEsT2JqZWN0LmRlZmluZVByb3BlcnR5KEEsInN1cGVyIix7dmFsdWU6ZS5wcm90b3R5cGV9KSx0JiZPYmplY3QuYXNzaWduKEEucHJvdG90eXBlLHQpfSxRcj0oQSxlLHQscik9PntsZXQgbyxpLG4sZz17fTtpZihlPWV8fHt9LEE9PW51bGwpcmV0dXJuIGU7ZG97Zm9yKG89T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoQSksaT1vLmxlbmd0aDtpLS0gPjA7KW49b1tpXSwoIXJ8fHIobixBLGUpKSYmIWdbbl0mJihlW25dPUFbbl0sZ1tuXT0hMCk7QT10IT09ITEmJnhBKEEpfXdoaWxlKEEmJighdHx8dChBLGUpKSYmQSE9PU9iamVjdC5wcm90b3R5cGUpO3JldHVybiBlfSxtcj0oQSxlLHQpPT57QT1TdHJpbmcoQSksKHQ9PT12b2lkIDB8fHQ+QS5sZW5ndGgpJiYodD1BLmxlbmd0aCksdC09ZS5sZW5ndGg7bGV0IHI9QS5pbmRleE9mKGUsdCk7cmV0dXJuIHIhPT0tMSYmcj09PXR9LGRyPUE9PntpZighQSlyZXR1cm4gbnVsbDtpZihxKEEpKXJldHVybiBBO2xldCBlPUEubGVuZ3RoO2lmKCFUZShlKSlyZXR1cm4gbnVsbDtsZXQgdD1uZXcgQXJyYXkoZSk7Zm9yKDtlLS0gPjA7KXRbZV09QVtlXTtyZXR1cm4gdH0saHI9KEE9PmU9PkEmJmUgaW5zdGFuY2VvZiBBKSh0eXBlb2YgVWludDhBcnJheTwidSImJnhBKFVpbnQ4QXJyYXkpKSx5cj0oQSxlKT0+e2xldCByPShBJiZBW1N5bWJvbC5pdGVyYXRvcl0pLmNhbGwoQSksbztmb3IoOyhvPXIubmV4dCgpKSYmIW8uZG9uZTspe2xldCBpPW8udmFsdWU7ZS5jYWxsKEEsaVswXSxpWzFdKX19LHdyPShBLGUpPT57bGV0IHQscj1bXTtmb3IoOyh0PUEuZXhlYyhlKSkhPT1udWxsOylyLnB1c2godCk7cmV0dXJuIHJ9LERyPU8oIkhUTUxGb3JtRWxlbWVudCIpLGJyPUE9PkEudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bLV9cc10oW2EtelxkXSkoXHcqKS9nLGZ1bmN0aW9uKHQscixvKXtyZXR1cm4gci50b1VwcGVyQ2FzZSgpK299KSxHZT0oKHtoYXNPd25Qcm9wZXJ0eTpBfSk9PihlLHQpPT5BLmNhbGwoZSx0KSkoT2JqZWN0LnByb3RvdHlwZSksUnI9TygiUmVnRXhwIikscWU9KEEsZSk9PntsZXQgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhBKSxyPXt9O3JBKHQsKG8saSk9PntsZXQgbjsobj1lKG8saSxBKSkhPT0hMSYmKHJbaV09bnx8byl9KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhBLHIpfSxrcj1BPT57cWUoQSwoZSx0KT0+e2lmKFUoQSkmJlsiYXJndW1lbnRzIiwiY2FsbGVyIiwiY2FsbGVlIl0uaW5kZXhPZih0KSE9PS0xKXJldHVybiExO2xldCByPUFbdF07aWYoVShyKSl7aWYoZS5lbnVtZXJhYmxlPSExLCJ3cml0YWJsZSJpbiBlKXtlLndyaXRhYmxlPSExO3JldHVybn1lLnNldHx8KGUuc2V0PSgpPT57dGhyb3cgRXJyb3IoIkNhbiBub3QgcmV3cml0ZSByZWFkLW9ubHkgbWV0aG9kICciK3QrIiciKX0pfX0pfSxTcj0oQSxlKT0+e2xldCB0PXt9LHI9bz0+e28uZm9yRWFjaChpPT57dFtpXT0hMH0pfTtyZXR1cm4gcShBKT9yKEEpOnIoU3RyaW5nKEEpLnNwbGl0KGUpKSx0fSxGcj0oKT0+e30sVXI9KEEsZSk9PihBPStBLE51bWJlci5pc0Zpbml0ZShBKT9BOmUpLEdBPSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsTGU9IjAxMjM0NTY3ODkiLEtlPXtESUdJVDpMZSxBTFBIQTpHQSxBTFBIQV9ESUdJVDpHQStHQS50b1VwcGVyQ2FzZSgpK0xlfSxOcj0oQT0xNixlPUtlLkFMUEhBX0RJR0lUKT0+e2xldCB0PSIiLHtsZW5ndGg6cn09ZTtmb3IoO0EtLTspdCs9ZVtNYXRoLnJhbmRvbSgpKnJ8MF07cmV0dXJuIHR9O2Z1bmN0aW9uIE1yKEEpe3JldHVybiEhKEEmJlUoQS5hcHBlbmQpJiZBW1N5bWJvbC50b1N0cmluZ1RhZ109PT0iRm9ybURhdGEiJiZBW1N5bWJvbC5pdGVyYXRvcl0pfXZhciBPcj1BPT57bGV0IGU9bmV3IEFycmF5KDEwKSx0PShyLG8pPT57aWYoUUEocikpe2lmKGUuaW5kZXhPZihyKT49MClyZXR1cm47aWYoISgidG9KU09OImluIHIpKXtlW29dPXI7bGV0IGk9cShyKT9bXTp7fTtyZXR1cm4gckEociwobixnKT0+e2xldCBmPXQobixvKzEpOyF0QShmKSYmKGlbZ109Zil9KSxlW29dPXZvaWQgMCxpfX1yZXR1cm4gcn07cmV0dXJuIHQoQSwwKX0sV3I9TygiQXN5bmNGdW5jdGlvbiIpLFByPUE9PkEmJihRQShBKXx8VShBKSkmJlUoQS50aGVuKSYmVShBLmNhdGNoKSxsPXtpc0FycmF5OnEsaXNBcnJheUJ1ZmZlcjp4ZSxpc0J1ZmZlcjppcixpc0Zvcm1EYXRhOnVyLGlzQXJyYXlCdWZmZXJWaWV3Om9yLGlzU3RyaW5nOm5yLGlzTnVtYmVyOlRlLGlzQm9vbGVhbjpzcixpc09iamVjdDpRQSxpc1BsYWluT2JqZWN0OmNBLGlzVW5kZWZpbmVkOnRBLGlzRGF0ZTphcixpc0ZpbGU6SXIsaXNCbG9iOmdyLGlzUmVnRXhwOlJyLGlzRnVuY3Rpb246VSxpc1N0cmVhbTpCcixpc1VSTFNlYXJjaFBhcmFtczpDcixpc1R5cGVkQXJyYXk6aHIsaXNGaWxlTGlzdDpscixmb3JFYWNoOnJBLG1lcmdlOkxBLGV4dGVuZDpjcix0cmltOmZyLHN0cmlwQk9NOnByLGluaGVyaXRzOkVyLHRvRmxhdE9iamVjdDpRcixraW5kT2Y6cEEsa2luZE9mVGVzdDpPLGVuZHNXaXRoOm1yLHRvQXJyYXk6ZHIsZm9yRWFjaEVudHJ5OnlyLG1hdGNoQWxsOndyLGlzSFRNTEZvcm06RHIsaGFzT3duUHJvcGVydHk6R2UsaGFzT3duUHJvcDpHZSxyZWR1Y2VEZXNjcmlwdG9yczpxZSxmcmVlemVNZXRob2RzOmtyLHRvT2JqZWN0U2V0OlNyLHRvQ2FtZWxDYXNlOmJyLG5vb3A6RnIsdG9GaW5pdGVOdW1iZXI6VXIsZmluZEtleTpKZSxnbG9iYWw6SGUsaXNDb250ZXh0RGVmaW5lZDpZZSxBTFBIQUJFVDpLZSxnZW5lcmF0ZVN0cmluZzpOcixpc1NwZWNDb21wbGlhbnRGb3JtOk1yLHRvSlNPTk9iamVjdDpPcixpc0FzeW5jRm46V3IsaXNUaGVuYWJsZTpQcn07ZnVuY3Rpb24gSyhBLGUsdCxyLG8pe0Vycm9yLmNhbGwodGhpcyksRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U/RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcyx0aGlzLmNvbnN0cnVjdG9yKTp0aGlzLnN0YWNrPW5ldyBFcnJvcigpLnN0YWNrLHRoaXMubWVzc2FnZT1BLHRoaXMubmFtZT0iQXhpb3NFcnJvciIsZSYmKHRoaXMuY29kZT1lKSx0JiYodGhpcy5jb25maWc9dCksciYmKHRoaXMucmVxdWVzdD1yKSxvJiYodGhpcy5yZXNwb25zZT1vKX1sLmluaGVyaXRzKEssRXJyb3Ise3RvSlNPTjpmdW5jdGlvbigpe3JldHVybnttZXNzYWdlOnRoaXMubWVzc2FnZSxuYW1lOnRoaXMubmFtZSxkZXNjcmlwdGlvbjp0aGlzLmRlc2NyaXB0aW9uLG51bWJlcjp0aGlzLm51bWJlcixmaWxlTmFtZTp0aGlzLmZpbGVOYW1lLGxpbmVOdW1iZXI6dGhpcy5saW5lTnVtYmVyLGNvbHVtbk51bWJlcjp0aGlzLmNvbHVtbk51bWJlcixzdGFjazp0aGlzLnN0YWNrLGNvbmZpZzpsLnRvSlNPTk9iamVjdCh0aGlzLmNvbmZpZyksY29kZTp0aGlzLmNvZGUsc3RhdHVzOnRoaXMucmVzcG9uc2UmJnRoaXMucmVzcG9uc2Uuc3RhdHVzP3RoaXMucmVzcG9uc2Uuc3RhdHVzOm51bGx9fX0pO3ZhciBqZT1LLnByb3RvdHlwZSx2ZT17fTtbIkVSUl9CQURfT1BUSU9OX1ZBTFVFIiwiRVJSX0JBRF9PUFRJT04iLCJFQ09OTkFCT1JURUQiLCJFVElNRURPVVQiLCJFUlJfTkVUV09SSyIsIkVSUl9GUl9UT09fTUFOWV9SRURJUkVDVFMiLCJFUlJfREVQUkVDQVRFRCIsIkVSUl9CQURfUkVTUE9OU0UiLCJFUlJfQkFEX1JFUVVFU1QiLCJFUlJfQ0FOQ0VMRUQiLCJFUlJfTk9UX1NVUFBPUlQiLCJFUlJfSU5WQUxJRF9VUkwiXS5mb3JFYWNoKEE9Pnt2ZVtBXT17dmFsdWU6QX19KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhLLHZlKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoamUsImlzQXhpb3NFcnJvciIse3ZhbHVlOiEwfSk7Sy5mcm9tPShBLGUsdCxyLG8saSk9PntsZXQgbj1PYmplY3QuY3JlYXRlKGplKTtyZXR1cm4gbC50b0ZsYXRPYmplY3QoQSxuLGZ1bmN0aW9uKGYpe3JldHVybiBmIT09RXJyb3IucHJvdG90eXBlfSxnPT5nIT09ImlzQXhpb3NFcnJvciIpLEsuY2FsbChuLEEubWVzc2FnZSxlLHQscixvKSxuLmNhdXNlPUEsbi5uYW1lPUEubmFtZSxpJiZPYmplY3QuYXNzaWduKG4saSksbn07dmFyIHk9Szt2YXIgbUE9bnVsbDtmdW5jdGlvbiBUQShBKXtyZXR1cm4gbC5pc1BsYWluT2JqZWN0KEEpfHxsLmlzQXJyYXkoQSl9ZnVuY3Rpb24gemUoQSl7cmV0dXJuIGwuZW5kc1dpdGgoQSwiW10iKT9BLnNsaWNlKDAsLTIpOkF9ZnVuY3Rpb24gX2UoQSxlLHQpe3JldHVybiBBP0EuY29uY2F0KGUpLm1hcChmdW5jdGlvbihvLGkpe3JldHVybiBvPXplKG8pLCF0JiZpPyJbIitvKyJdIjpvfSkuam9pbih0PyIuIjoiIik6ZX1mdW5jdGlvbiBHcihBKXtyZXR1cm4gbC5pc0FycmF5KEEpJiYhQS5zb21lKFRBKX12YXIgTHI9bC50b0ZsYXRPYmplY3QobCx7fSxudWxsLGZ1bmN0aW9uKGUpe3JldHVybi9eaXNbQS1aXS8udGVzdChlKX0pO2Z1bmN0aW9uIHhyKEEsZSx0KXtpZighbC5pc09iamVjdChBKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ0YXJnZXQgbXVzdCBiZSBhbiBvYmplY3QiKTtlPWV8fG5ldyhtQXx8Rm9ybURhdGEpLHQ9bC50b0ZsYXRPYmplY3QodCx7bWV0YVRva2VuczohMCxkb3RzOiExLGluZGV4ZXM6ITF9LCExLGZ1bmN0aW9uKHAsRSl7cmV0dXJuIWwuaXNVbmRlZmluZWQoRVtwXSl9KTtsZXQgcj10Lm1ldGFUb2tlbnMsbz10LnZpc2l0b3J8fHMsaT10LmRvdHMsbj10LmluZGV4ZXMsZj0odC5CbG9ifHx0eXBlb2YgQmxvYjwidSImJkJsb2IpJiZsLmlzU3BlY0NvbXBsaWFudEZvcm0oZSk7aWYoIWwuaXNGdW5jdGlvbihvKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ2aXNpdG9yIG11c3QgYmUgYSBmdW5jdGlvbiIpO2Z1bmN0aW9uIEIodSl7aWYodT09PW51bGwpcmV0dXJuIiI7aWYobC5pc0RhdGUodSkpcmV0dXJuIHUudG9JU09TdHJpbmcoKTtpZighZiYmbC5pc0Jsb2IodSkpdGhyb3cgbmV3IHkoIkJsb2IgaXMgbm90IHN1cHBvcnRlZC4gVXNlIGEgQnVmZmVyIGluc3RlYWQuIik7cmV0dXJuIGwuaXNBcnJheUJ1ZmZlcih1KXx8bC5pc1R5cGVkQXJyYXkodSk/ZiYmdHlwZW9mIEJsb2I9PSJmdW5jdGlvbiI/bmV3IEJsb2IoW3VdKTpCdWZmZXIuZnJvbSh1KTp1fWZ1bmN0aW9uIHModSxwLEUpe2xldCB3PXU7aWYodSYmIUUmJnR5cGVvZiB1PT0ib2JqZWN0Iil7aWYobC5lbmRzV2l0aChwLCJ7fSIpKXA9cj9wOnAuc2xpY2UoMCwtMiksdT1KU09OLnN0cmluZ2lmeSh1KTtlbHNlIGlmKGwuaXNBcnJheSh1KSYmR3IodSl8fChsLmlzRmlsZUxpc3QodSl8fGwuZW5kc1dpdGgocCwiW10iKSkmJih3PWwudG9BcnJheSh1KSkpcmV0dXJuIHA9emUocCksdy5mb3JFYWNoKGZ1bmN0aW9uKE0sTHQpeyEobC5pc1VuZGVmaW5lZChNKXx8TT09PW51bGwpJiZlLmFwcGVuZChuPT09ITA/X2UoW3BdLEx0LGkpOm49PT1udWxsP3A6cCsiW10iLEIoTSkpfSksITF9cmV0dXJuIFRBKHUpPyEwOihlLmFwcGVuZChfZShFLHAsaSksQih1KSksITEpfWxldCBhPVtdLGM9T2JqZWN0LmFzc2lnbihMcix7ZGVmYXVsdFZpc2l0b3I6cyxjb252ZXJ0VmFsdWU6Qixpc1Zpc2l0YWJsZTpUQX0pO2Z1bmN0aW9uIEkodSxwKXtpZighbC5pc1VuZGVmaW5lZCh1KSl7aWYoYS5pbmRleE9mKHUpIT09LTEpdGhyb3cgRXJyb3IoIkNpcmN1bGFyIHJlZmVyZW5jZSBkZXRlY3RlZCBpbiAiK3Auam9pbigiLiIpKTthLnB1c2godSksbC5mb3JFYWNoKHUsZnVuY3Rpb24odyxOKXsoIShsLmlzVW5kZWZpbmVkKHcpfHx3PT09bnVsbCkmJm8uY2FsbChlLHcsbC5pc1N0cmluZyhOKT9OLnRyaW0oKTpOLHAsYykpPT09ITAmJkkodyxwP3AuY29uY2F0KE4pOltOXSl9KSxhLnBvcCgpfX1pZighbC5pc09iamVjdChBKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJkYXRhIG11c3QgYmUgYW4gb2JqZWN0Iik7cmV0dXJuIEkoQSksZX12YXIgRz14cjtmdW5jdGlvbiBWZShBKXtsZXQgZT17IiEiOiIlMjEiLCInIjoiJTI3IiwiKCI6IiUyOCIsIikiOiIlMjkiLCJ+IjoiJTdFIiwiJTIwIjoiKyIsIiUwMCI6IlwwIn07cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChBKS5yZXBsYWNlKC9bIScoKX5dfCUyMHwlMDAvZyxmdW5jdGlvbihyKXtyZXR1cm4gZVtyXX0pfWZ1bmN0aW9uIFplKEEsZSl7dGhpcy5fcGFpcnM9W10sQSYmRyhBLHRoaXMsZSl9dmFyIFhlPVplLnByb3RvdHlwZTtYZS5hcHBlbmQ9ZnVuY3Rpb24oZSx0KXt0aGlzLl9wYWlycy5wdXNoKFtlLHRdKX07WGUudG9TdHJpbmc9ZnVuY3Rpb24oZSl7bGV0IHQ9ZT9mdW5jdGlvbihyKXtyZXR1cm4gZS5jYWxsKHRoaXMscixWZSl9OlZlO3JldHVybiB0aGlzLl9wYWlycy5tYXAoZnVuY3Rpb24obyl7cmV0dXJuIHQob1swXSkrIj0iK3Qob1sxXSl9LCIiKS5qb2luKCImIil9O3ZhciBkQT1aZTtmdW5jdGlvbiBUcihBKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEEpLnJlcGxhY2UoLyUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNC9nLCIkIikucmVwbGFjZSgvJTJDL2dpLCIsIikucmVwbGFjZSgvJTIwL2csIisiKS5yZXBsYWNlKC8lNUIvZ2ksIlsiKS5yZXBsYWNlKC8lNUQvZ2ksIl0iKX1mdW5jdGlvbiBpQShBLGUsdCl7aWYoIWUpcmV0dXJuIEE7bGV0IHI9dCYmdC5lbmNvZGV8fFRyLG89dCYmdC5zZXJpYWxpemUsaTtpZihvP2k9byhlLHQpOmk9bC5pc1VSTFNlYXJjaFBhcmFtcyhlKT9lLnRvU3RyaW5nKCk6bmV3IGRBKGUsdCkudG9TdHJpbmcociksaSl7bGV0IG49QS5pbmRleE9mKCIjIik7biE9PS0xJiYoQT1BLnNsaWNlKDAsbikpLEErPShBLmluZGV4T2YoIj8iKT09PS0xPyI/IjoiJiIpK2l9cmV0dXJuIEF9dmFyIEpBPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5oYW5kbGVycz1bXX11c2UoZSx0LHIpe3JldHVybiB0aGlzLmhhbmRsZXJzLnB1c2goe2Z1bGZpbGxlZDplLHJlamVjdGVkOnQsc3luY2hyb25vdXM6cj9yLnN5bmNocm9ub3VzOiExLHJ1bldoZW46cj9yLnJ1bldoZW46bnVsbH0pLHRoaXMuaGFuZGxlcnMubGVuZ3RoLTF9ZWplY3QoZSl7dGhpcy5oYW5kbGVyc1tlXSYmKHRoaXMuaGFuZGxlcnNbZV09bnVsbCl9Y2xlYXIoKXt0aGlzLmhhbmRsZXJzJiYodGhpcy5oYW5kbGVycz1bXSl9Zm9yRWFjaChlKXtsLmZvckVhY2godGhpcy5oYW5kbGVycyxmdW5jdGlvbihyKXtyIT09bnVsbCYmZShyKX0pfX0sSEE9SkE7dmFyIGhBPXtzaWxlbnRKU09OUGFyc2luZzohMCxmb3JjZWRKU09OUGFyc2luZzohMCxjbGFyaWZ5VGltZW91dEVycm9yOiExfTt2YXIgJGU9dHlwZW9mIFVSTFNlYXJjaFBhcmFtczwidSI/VVJMU2VhcmNoUGFyYW1zOmRBO3ZhciBBdD10eXBlb2YgRm9ybURhdGE8InUiP0Zvcm1EYXRhOm51bGw7dmFyIGV0PXR5cGVvZiBCbG9iPCJ1Ij9CbG9iOm51bGw7dmFyIHR0PXtpc0Jyb3dzZXI6ITAsY2xhc3Nlczp7VVJMU2VhcmNoUGFyYW1zOiRlLEZvcm1EYXRhOkF0LEJsb2I6ZXR9LHByb3RvY29sczpbImh0dHAiLCJodHRwcyIsImZpbGUiLCJibG9iIiwidXJsIiwiZGF0YSJdfTt2YXIgWUE9e307VHQoWUEse2hhc0Jyb3dzZXJFbnY6KCk9PnJ0LGhhc1N0YW5kYXJkQnJvd3NlckVudjooKT0+SnIsaGFzU3RhbmRhcmRCcm93c2VyV2ViV29ya2VyRW52OigpPT5Icn0pO3ZhciBydD10eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9mIGRvY3VtZW50PCJ1IixKcj0oQT0+cnQmJlsiUmVhY3ROYXRpdmUiLCJOYXRpdmVTY3JpcHQiLCJOUyJdLmluZGV4T2YoQSk8MCkodHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvci5wcm9kdWN0KSxIcj10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGU8InUiJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnR5cGVvZiBzZWxmLmltcG9ydFNjcmlwdHM9PSJmdW5jdGlvbiI7dmFyIFI9ey4uLllBLC4uLnR0fTtmdW5jdGlvbiBxQShBLGUpe3JldHVybiBHKEEsbmV3IFIuY2xhc3Nlcy5VUkxTZWFyY2hQYXJhbXMsT2JqZWN0LmFzc2lnbih7dmlzaXRvcjpmdW5jdGlvbih0LHIsbyxpKXtyZXR1cm4gUi5pc05vZGUmJmwuaXNCdWZmZXIodCk/KHRoaXMuYXBwZW5kKHIsdC50b1N0cmluZygiYmFzZTY0IikpLCExKTppLmRlZmF1bHRWaXNpdG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LGUpKX1mdW5jdGlvbiBZcihBKXtyZXR1cm4gbC5tYXRjaEFsbCgvXHcrfFxbKFx3KildL2csQSkubWFwKGU9PmVbMF09PT0iW10iPyIiOmVbMV18fGVbMF0pfWZ1bmN0aW9uIHFyKEEpe2xldCBlPXt9LHQ9T2JqZWN0LmtleXMoQSkscixvPXQubGVuZ3RoLGk7Zm9yKHI9MDtyPG87cisrKWk9dFtyXSxlW2ldPUFbaV07cmV0dXJuIGV9ZnVuY3Rpb24gS3IoQSl7ZnVuY3Rpb24gZSh0LHIsbyxpKXtsZXQgbj10W2krK10sZz1OdW1iZXIuaXNGaW5pdGUoK24pLGY9aT49dC5sZW5ndGg7cmV0dXJuIG49IW4mJmwuaXNBcnJheShvKT9vLmxlbmd0aDpuLGY/KGwuaGFzT3duUHJvcChvLG4pP29bbl09W29bbl0scl06b1tuXT1yLCFnKTooKCFvW25dfHwhbC5pc09iamVjdChvW25dKSkmJihvW25dPVtdKSxlKHQscixvW25dLGkpJiZsLmlzQXJyYXkob1tuXSkmJihvW25dPXFyKG9bbl0pKSwhZyl9aWYobC5pc0Zvcm1EYXRhKEEpJiZsLmlzRnVuY3Rpb24oQS5lbnRyaWVzKSl7bGV0IHQ9e307cmV0dXJuIGwuZm9yRWFjaEVudHJ5KEEsKHIsbyk9PntlKFlyKHIpLG8sdCwwKX0pLHR9cmV0dXJuIG51bGx9dmFyIHlBPUtyO2Z1bmN0aW9uIGpyKEEsZSx0KXtpZihsLmlzU3RyaW5nKEEpKXRyeXtyZXR1cm4oZXx8SlNPTi5wYXJzZSkoQSksbC50cmltKEEpfWNhdGNoKHIpe2lmKHIubmFtZSE9PSJTeW50YXhFcnJvciIpdGhyb3cgcn1yZXR1cm4odHx8SlNPTi5zdHJpbmdpZnkpKEEpfXZhciBLQT17dHJhbnNpdGlvbmFsOmhBLGFkYXB0ZXI6WyJ4aHIiLCJodHRwIl0sdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24oZSx0KXtsZXQgcj10LmdldENvbnRlbnRUeXBlKCl8fCIiLG89ci5pbmRleE9mKCJhcHBsaWNhdGlvbi9qc29uIik+LTEsaT1sLmlzT2JqZWN0KGUpO2lmKGkmJmwuaXNIVE1MRm9ybShlKSYmKGU9bmV3IEZvcm1EYXRhKGUpKSxsLmlzRm9ybURhdGEoZSkpcmV0dXJuIG8mJm8/SlNPTi5zdHJpbmdpZnkoeUEoZSkpOmU7aWYobC5pc0FycmF5QnVmZmVyKGUpfHxsLmlzQnVmZmVyKGUpfHxsLmlzU3RyZWFtKGUpfHxsLmlzRmlsZShlKXx8bC5pc0Jsb2IoZSkpcmV0dXJuIGU7aWYobC5pc0FycmF5QnVmZmVyVmlldyhlKSlyZXR1cm4gZS5idWZmZXI7aWYobC5pc1VSTFNlYXJjaFBhcmFtcyhlKSlyZXR1cm4gdC5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiLCExKSxlLnRvU3RyaW5nKCk7bGV0IGc7aWYoaSl7aWYoci5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKT4tMSlyZXR1cm4gcUEoZSx0aGlzLmZvcm1TZXJpYWxpemVyKS50b1N0cmluZygpO2lmKChnPWwuaXNGaWxlTGlzdChlKSl8fHIuaW5kZXhPZigibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpPi0xKXtsZXQgZj10aGlzLmVudiYmdGhpcy5lbnYuRm9ybURhdGE7cmV0dXJuIEcoZz97ImZpbGVzW10iOmV9OmUsZiYmbmV3IGYsdGhpcy5mb3JtU2VyaWFsaXplcil9fXJldHVybiBpfHxvPyh0LnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi9qc29uIiwhMSksanIoZSkpOmV9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24oZSl7bGV0IHQ9dGhpcy50cmFuc2l0aW9uYWx8fEtBLnRyYW5zaXRpb25hbCxyPXQmJnQuZm9yY2VkSlNPTlBhcnNpbmcsbz10aGlzLnJlc3BvbnNlVHlwZT09PSJqc29uIjtpZihlJiZsLmlzU3RyaW5nKGUpJiYociYmIXRoaXMucmVzcG9uc2VUeXBlfHxvKSl7bGV0IG49ISh0JiZ0LnNpbGVudEpTT05QYXJzaW5nKSYmbzt0cnl7cmV0dXJuIEpTT04ucGFyc2UoZSl9Y2F0Y2goZyl7aWYobil0aHJvdyBnLm5hbWU9PT0iU3ludGF4RXJyb3IiP3kuZnJvbShnLHkuRVJSX0JBRF9SRVNQT05TRSx0aGlzLG51bGwsdGhpcy5yZXNwb25zZSk6Z319cmV0dXJuIGV9XSx0aW1lb3V0OjAseHNyZkNvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLHhzcmZIZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4iLG1heENvbnRlbnRMZW5ndGg6LTEsbWF4Qm9keUxlbmd0aDotMSxlbnY6e0Zvcm1EYXRhOlIuY2xhc3Nlcy5Gb3JtRGF0YSxCbG9iOlIuY2xhc3Nlcy5CbG9ifSx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihlKXtyZXR1cm4gZT49MjAwJiZlPDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiIsIkNvbnRlbnQtVHlwZSI6dm9pZCAwfX19O2wuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giXSxBPT57S0EuaGVhZGVyc1tBXT17fX0pO3ZhciBqPUtBO3ZhciB2cj1sLnRvT2JqZWN0U2V0KFsiYWdlIiwiYXV0aG9yaXphdGlvbiIsImNvbnRlbnQtbGVuZ3RoIiwiY29udGVudC10eXBlIiwiZXRhZyIsImV4cGlyZXMiLCJmcm9tIiwiaG9zdCIsImlmLW1vZGlmaWVkLXNpbmNlIiwiaWYtdW5tb2RpZmllZC1zaW5jZSIsImxhc3QtbW9kaWZpZWQiLCJsb2NhdGlvbiIsIm1heC1mb3J3YXJkcyIsInByb3h5LWF1dGhvcml6YXRpb24iLCJyZWZlcmVyIiwicmV0cnktYWZ0ZXIiLCJ1c2VyLWFnZW50Il0pLGl0PUE9PntsZXQgZT17fSx0LHIsbztyZXR1cm4gQSYmQS5zcGxpdChgCmApLmZvckVhY2goZnVuY3Rpb24obil7bz1uLmluZGV4T2YoIjoiKSx0PW4uc3Vic3RyaW5nKDAsbykudHJpbSgpLnRvTG93ZXJDYXNlKCkscj1uLnN1YnN0cmluZyhvKzEpLnRyaW0oKSwhKCF0fHxlW3RdJiZ2clt0XSkmJih0PT09InNldC1jb29raWUiP2VbdF0/ZVt0XS5wdXNoKHIpOmVbdF09W3JdOmVbdF09ZVt0XT9lW3RdKyIsICIrcjpyKX0pLGV9O3ZhciBvdD1TeW1ib2woImludGVybmFscyIpO2Z1bmN0aW9uIG9BKEEpe3JldHVybiBBJiZTdHJpbmcoQSkudHJpbSgpLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gd0EoQSl7cmV0dXJuIEE9PT0hMXx8QT09bnVsbD9BOmwuaXNBcnJheShBKT9BLm1hcCh3QSk6U3RyaW5nKEEpfWZ1bmN0aW9uIF9yKEEpe2xldCBlPU9iamVjdC5jcmVhdGUobnVsbCksdD0vKFteXHMsOz1dKylccyooPzo9XHMqKFteLDtdKykpPy9nLHI7Zm9yKDtyPXQuZXhlYyhBKTspZVtyWzFdXT1yWzJdO3JldHVybiBlfXZhciB6cj1BPT4vXlstX2EtekEtWjAtOV5gfH4sISMkJSYnKisuXSskLy50ZXN0KEEudHJpbSgpKTtmdW5jdGlvbiBqQShBLGUsdCxyLG8pe2lmKGwuaXNGdW5jdGlvbihyKSlyZXR1cm4gci5jYWxsKHRoaXMsZSx0KTtpZihvJiYoZT10KSwhIWwuaXNTdHJpbmcoZSkpe2lmKGwuaXNTdHJpbmcocikpcmV0dXJuIGUuaW5kZXhPZihyKSE9PS0xO2lmKGwuaXNSZWdFeHAocikpcmV0dXJuIHIudGVzdChlKX19ZnVuY3Rpb24gVnIoQSl7cmV0dXJuIEEudHJpbSgpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvKFthLXpcZF0pKFx3KikvZywoZSx0LHIpPT50LnRvVXBwZXJDYXNlKCkrcil9ZnVuY3Rpb24gWnIoQSxlKXtsZXQgdD1sLnRvQ2FtZWxDYXNlKCIgIitlKTtbImdldCIsInNldCIsImhhcyJdLmZvckVhY2gocj0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLHIrdCx7dmFsdWU6ZnVuY3Rpb24obyxpLG4pe3JldHVybiB0aGlzW3JdLmNhbGwodGhpcyxlLG8saSxuKX0sY29uZmlndXJhYmxlOiEwfSl9KX12YXIgdj1jbGFzc3tjb25zdHJ1Y3RvcihlKXtlJiZ0aGlzLnNldChlKX1zZXQoZSx0LHIpe2xldCBvPXRoaXM7ZnVuY3Rpb24gaShnLGYsQil7bGV0IHM9b0EoZik7aWYoIXMpdGhyb3cgbmV3IEVycm9yKCJoZWFkZXIgbmFtZSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZyIpO2xldCBhPWwuZmluZEtleShvLHMpOyghYXx8b1thXT09PXZvaWQgMHx8Qj09PSEwfHxCPT09dm9pZCAwJiZvW2FdIT09ITEpJiYob1thfHxmXT13QShnKSl9bGV0IG49KGcsZik9PmwuZm9yRWFjaChnLChCLHMpPT5pKEIscyxmKSk7cmV0dXJuIGwuaXNQbGFpbk9iamVjdChlKXx8ZSBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3I/bihlLHQpOmwuaXNTdHJpbmcoZSkmJihlPWUudHJpbSgpKSYmIXpyKGUpP24oaXQoZSksdCk6ZSE9bnVsbCYmaSh0LGUsciksdGhpc31nZXQoZSx0KXtpZihlPW9BKGUpLGUpe2xldCByPWwuZmluZEtleSh0aGlzLGUpO2lmKHIpe2xldCBvPXRoaXNbcl07aWYoIXQpcmV0dXJuIG87aWYodD09PSEwKXJldHVybiBfcihvKTtpZihsLmlzRnVuY3Rpb24odCkpcmV0dXJuIHQuY2FsbCh0aGlzLG8scik7aWYobC5pc1JlZ0V4cCh0KSlyZXR1cm4gdC5leGVjKG8pO3Rocm93IG5ldyBUeXBlRXJyb3IoInBhcnNlciBtdXN0IGJlIGJvb2xlYW58cmVnZXhwfGZ1bmN0aW9uIil9fX1oYXMoZSx0KXtpZihlPW9BKGUpLGUpe2xldCByPWwuZmluZEtleSh0aGlzLGUpO3JldHVybiEhKHImJnRoaXNbcl0hPT12b2lkIDAmJighdHx8akEodGhpcyx0aGlzW3JdLHIsdCkpKX1yZXR1cm4hMX1kZWxldGUoZSx0KXtsZXQgcj10aGlzLG89ITE7ZnVuY3Rpb24gaShuKXtpZihuPW9BKG4pLG4pe2xldCBnPWwuZmluZEtleShyLG4pO2cmJighdHx8akEocixyW2ddLGcsdCkpJiYoZGVsZXRlIHJbZ10sbz0hMCl9fXJldHVybiBsLmlzQXJyYXkoZSk/ZS5mb3JFYWNoKGkpOmkoZSksb31jbGVhcihlKXtsZXQgdD1PYmplY3Qua2V5cyh0aGlzKSxyPXQubGVuZ3RoLG89ITE7Zm9yKDtyLS07KXtsZXQgaT10W3JdOyghZXx8akEodGhpcyx0aGlzW2ldLGksZSwhMCkpJiYoZGVsZXRlIHRoaXNbaV0sbz0hMCl9cmV0dXJuIG99bm9ybWFsaXplKGUpe2xldCB0PXRoaXMscj17fTtyZXR1cm4gbC5mb3JFYWNoKHRoaXMsKG8saSk9PntsZXQgbj1sLmZpbmRLZXkocixpKTtpZihuKXt0W25dPXdBKG8pLGRlbGV0ZSB0W2ldO3JldHVybn1sZXQgZz1lP1ZyKGkpOlN0cmluZyhpKS50cmltKCk7ZyE9PWkmJmRlbGV0ZSB0W2ldLHRbZ109d0EobykscltnXT0hMH0pLHRoaXN9Y29uY2F0KC4uLmUpe3JldHVybiB0aGlzLmNvbnN0cnVjdG9yLmNvbmNhdCh0aGlzLC4uLmUpfXRvSlNPTihlKXtsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBsLmZvckVhY2godGhpcywocixvKT0+e3IhPW51bGwmJnIhPT0hMSYmKHRbb109ZSYmbC5pc0FycmF5KHIpP3Iuam9pbigiLCAiKTpyKX0pLHR9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSlbU3ltYm9sLml0ZXJhdG9yXSgpfXRvU3RyaW5nKCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMudG9KU09OKCkpLm1hcCgoW2UsdF0pPT5lKyI6ICIrdCkuam9pbihgCmApfWdldFtTeW1ib2wudG9TdHJpbmdUYWddKCl7cmV0dXJuIkF4aW9zSGVhZGVycyJ9c3RhdGljIGZyb20oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0aGlzP2U6bmV3IHRoaXMoZSl9c3RhdGljIGNvbmNhdChlLC4uLnQpe2xldCByPW5ldyB0aGlzKGUpO3JldHVybiB0LmZvckVhY2gobz0+ci5zZXQobykpLHJ9c3RhdGljIGFjY2Vzc29yKGUpe2xldCByPSh0aGlzW290XT10aGlzW290XT17YWNjZXNzb3JzOnt9fSkuYWNjZXNzb3JzLG89dGhpcy5wcm90b3R5cGU7ZnVuY3Rpb24gaShuKXtsZXQgZz1vQShuKTtyW2ddfHwoWnIobyxuKSxyW2ddPSEwKX1yZXR1cm4gbC5pc0FycmF5KGUpP2UuZm9yRWFjaChpKTppKGUpLHRoaXN9fTt2LmFjY2Vzc29yKFsiQ29udGVudC1UeXBlIiwiQ29udGVudC1MZW5ndGgiLCJBY2NlcHQiLCJBY2NlcHQtRW5jb2RpbmciLCJVc2VyLUFnZW50IiwiQXV0aG9yaXphdGlvbiJdKTtsLnJlZHVjZURlc2NyaXB0b3JzKHYucHJvdG90eXBlLCh7dmFsdWU6QX0sZSk9PntsZXQgdD1lWzBdLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKTtyZXR1cm57Z2V0OigpPT5BLHNldChyKXt0aGlzW3RdPXJ9fX0pO2wuZnJlZXplTWV0aG9kcyh2KTt2YXIgaz12O2Z1bmN0aW9uIG5BKEEsZSl7bGV0IHQ9dGhpc3x8aixyPWV8fHQsbz1rLmZyb20oci5oZWFkZXJzKSxpPXIuZGF0YTtyZXR1cm4gbC5mb3JFYWNoKEEsZnVuY3Rpb24oZyl7aT1nLmNhbGwodCxpLG8ubm9ybWFsaXplKCksZT9lLnN0YXR1czp2b2lkIDApfSksby5ub3JtYWxpemUoKSxpfWZ1bmN0aW9uIHNBKEEpe3JldHVybiEhKEEmJkEuX19DQU5DRUxfXyl9ZnVuY3Rpb24gbnQoQSxlLHQpe3kuY2FsbCh0aGlzLEE/PyJjYW5jZWxlZCIseS5FUlJfQ0FOQ0VMRUQsZSx0KSx0aGlzLm5hbWU9IkNhbmNlbGVkRXJyb3IifWwuaW5oZXJpdHMobnQseSx7X19DQU5DRUxfXzohMH0pO3ZhciBMPW50O2Z1bmN0aW9uIHZBKEEsZSx0KXtsZXQgcj10LmNvbmZpZy52YWxpZGF0ZVN0YXR1czshdC5zdGF0dXN8fCFyfHxyKHQuc3RhdHVzKT9BKHQpOmUobmV3IHkoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIit0LnN0YXR1cyxbeS5FUlJfQkFEX1JFUVVFU1QseS5FUlJfQkFEX1JFU1BPTlNFXVtNYXRoLmZsb29yKHQuc3RhdHVzLzEwMCktNF0sdC5jb25maWcsdC5yZXF1ZXN0LHQpKX12YXIgc3Q9Ui5oYXNTdGFuZGFyZEJyb3dzZXJFbnY/e3dyaXRlKEEsZSx0LHIsbyxpKXtsZXQgbj1bQSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGUpXTtsLmlzTnVtYmVyKHQpJiZuLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZSh0KS50b0dNVFN0cmluZygpKSxsLmlzU3RyaW5nKHIpJiZuLnB1c2goInBhdGg9IityKSxsLmlzU3RyaW5nKG8pJiZuLnB1c2goImRvbWFpbj0iK28pLGk9PT0hMCYmbi5wdXNoKCJzZWN1cmUiKSxkb2N1bWVudC5jb29raWU9bi5qb2luKCI7ICIpfSxyZWFkKEEpe2xldCBlPWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCIoXnw7XFxzKikoIitBKyIpPShbXjtdKikiKSk7cmV0dXJuIGU/ZGVjb2RlVVJJQ29tcG9uZW50KGVbM10pOm51bGx9LHJlbW92ZShBKXt0aGlzLndyaXRlKEEsIiIsRGF0ZS5ub3coKS04NjRlNSl9fTp7d3JpdGUoKXt9LHJlYWQoKXtyZXR1cm4gbnVsbH0scmVtb3ZlKCl7fX07ZnVuY3Rpb24gX0EoQSl7cmV0dXJuL14oW2Etel1bYS16XGQrXC0uXSo6KT9cL1wvL2kudGVzdChBKX1mdW5jdGlvbiB6QShBLGUpe3JldHVybiBlP0EucmVwbGFjZSgvXC8rJC8sIiIpKyIvIitlLnJlcGxhY2UoL15cLysvLCIiKTpBfWZ1bmN0aW9uIGFBKEEsZSl7cmV0dXJuIEEmJiFfQShlKT96QShBLGUpOmV9dmFyIGF0PVIuaGFzU3RhbmRhcmRCcm93c2VyRW52P2Z1bmN0aW9uKCl7bGV0IGU9Lyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSx0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxyO2Z1bmN0aW9uIG8oaSl7bGV0IG49aTtyZXR1cm4gZSYmKHQuc2V0QXR0cmlidXRlKCJocmVmIixuKSxuPXQuaHJlZiksdC5zZXRBdHRyaWJ1dGUoImhyZWYiLG4pLHtocmVmOnQuaHJlZixwcm90b2NvbDp0LnByb3RvY29sP3QucHJvdG9jb2wucmVwbGFjZSgvOiQvLCIiKToiIixob3N0OnQuaG9zdCxzZWFyY2g6dC5zZWFyY2g/dC5zZWFyY2gucmVwbGFjZSgvXlw/LywiIik6IiIsaGFzaDp0Lmhhc2g/dC5oYXNoLnJlcGxhY2UoL14jLywiIik6IiIsaG9zdG5hbWU6dC5ob3N0bmFtZSxwb3J0OnQucG9ydCxwYXRobmFtZTp0LnBhdGhuYW1lLmNoYXJBdCgwKT09PSIvIj90LnBhdGhuYW1lOiIvIit0LnBhdGhuYW1lfX1yZXR1cm4gcj1vKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxmdW5jdGlvbihuKXtsZXQgZz1sLmlzU3RyaW5nKG4pP28obik6bjtyZXR1cm4gZy5wcm90b2NvbD09PXIucHJvdG9jb2wmJmcuaG9zdD09PXIuaG9zdH19KCk6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hMH19KCk7ZnVuY3Rpb24gVkEoQSl7bGV0IGU9L14oWy0rXHddezEsMjV9KSg6P1wvXC98OikvLmV4ZWMoQSk7cmV0dXJuIGUmJmVbMV18fCIifWZ1bmN0aW9uIFhyKEEsZSl7QT1BfHwxMDtsZXQgdD1uZXcgQXJyYXkoQSkscj1uZXcgQXJyYXkoQSksbz0wLGk9MCxuO3JldHVybiBlPWUhPT12b2lkIDA/ZToxZTMsZnVuY3Rpb24oZil7bGV0IEI9RGF0ZS5ub3coKSxzPXJbaV07bnx8KG49QiksdFtvXT1mLHJbb109QjtsZXQgYT1pLGM9MDtmb3IoO2EhPT1vOyljKz10W2ErK10sYT1hJUE7aWYobz0obysxKSVBLG89PT1pJiYoaT0oaSsxKSVBKSxCLW48ZSlyZXR1cm47bGV0IEk9cyYmQi1zO3JldHVybiBJP01hdGgucm91bmQoYyoxZTMvSSk6dm9pZCAwfX12YXIgSXQ9WHI7ZnVuY3Rpb24gZ3QoQSxlKXtsZXQgdD0wLHI9SXQoNTAsMjUwKTtyZXR1cm4gbz0+e2xldCBpPW8ubG9hZGVkLG49by5sZW5ndGhDb21wdXRhYmxlP28udG90YWw6dm9pZCAwLGc9aS10LGY9cihnKSxCPWk8PW47dD1pO2xldCBzPXtsb2FkZWQ6aSx0b3RhbDpuLHByb2dyZXNzOm4/aS9uOnZvaWQgMCxieXRlczpnLHJhdGU6Znx8dm9pZCAwLGVzdGltYXRlZDpmJiZuJiZCPyhuLWkpL2Y6dm9pZCAwLGV2ZW50Om99O3NbZT8iZG93bmxvYWQiOiJ1cGxvYWQiXT0hMCxBKHMpfX12YXIgJHI9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0PCJ1IixsdD0kciYmZnVuY3Rpb24oQSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQscil7bGV0IG89QS5kYXRhLGk9ay5mcm9tKEEuaGVhZGVycykubm9ybWFsaXplKCkse3Jlc3BvbnNlVHlwZTpuLHdpdGhYU1JGVG9rZW46Z309QSxmO2Z1bmN0aW9uIEIoKXtBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKGYpLEEuc2lnbmFsJiZBLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsZil9bGV0IHM7aWYobC5pc0Zvcm1EYXRhKG8pKXtpZihSLmhhc1N0YW5kYXJkQnJvd3NlckVudnx8Ui5oYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnYpaS5zZXRDb250ZW50VHlwZSghMSk7ZWxzZSBpZigocz1pLmdldENvbnRlbnRUeXBlKCkpIT09ITEpe2xldFtwLC4uLkVdPXM/cy5zcGxpdCgiOyIpLm1hcCh3PT53LnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pOltdO2kuc2V0Q29udGVudFR5cGUoW3B8fCJtdWx0aXBhcnQvZm9ybS1kYXRhIiwuLi5FXS5qb2luKCI7ICIpKX19bGV0IGE9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKEEuYXV0aCl7bGV0IHA9QS5hdXRoLnVzZXJuYW1lfHwiIixFPUEuYXV0aC5wYXNzd29yZD91bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoQS5hdXRoLnBhc3N3b3JkKSk6IiI7aS5zZXQoIkF1dGhvcml6YXRpb24iLCJCYXNpYyAiK2J0b2EocCsiOiIrRSkpfWxldCBjPWFBKEEuYmFzZVVSTCxBLnVybCk7YS5vcGVuKEEubWV0aG9kLnRvVXBwZXJDYXNlKCksaUEoYyxBLnBhcmFtcyxBLnBhcmFtc1NlcmlhbGl6ZXIpLCEwKSxhLnRpbWVvdXQ9QS50aW1lb3V0O2Z1bmN0aW9uIEkoKXtpZighYSlyZXR1cm47bGV0IHA9ay5mcm9tKCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiaW4gYSYmYS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSksdz17ZGF0YTohbnx8bj09PSJ0ZXh0Inx8bj09PSJqc29uIj9hLnJlc3BvbnNlVGV4dDphLnJlc3BvbnNlLHN0YXR1czphLnN0YXR1cyxzdGF0dXNUZXh0OmEuc3RhdHVzVGV4dCxoZWFkZXJzOnAsY29uZmlnOkEscmVxdWVzdDphfTt2QShmdW5jdGlvbihNKXt0KE0pLEIoKX0sZnVuY3Rpb24oTSl7cihNKSxCKCl9LHcpLGE9bnVsbH1pZigib25sb2FkZW5kImluIGE/YS5vbmxvYWRlbmQ9STphLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpeyFhfHxhLnJlYWR5U3RhdGUhPT00fHxhLnN0YXR1cz09PTAmJiEoYS5yZXNwb25zZVVSTCYmYS5yZXNwb25zZVVSTC5pbmRleE9mKCJmaWxlOiIpPT09MCl8fHNldFRpbWVvdXQoSSl9LGEub25hYm9ydD1mdW5jdGlvbigpe2EmJihyKG5ldyB5KCJSZXF1ZXN0IGFib3J0ZWQiLHkuRUNPTk5BQk9SVEVELEEsYSkpLGE9bnVsbCl9LGEub25lcnJvcj1mdW5jdGlvbigpe3IobmV3IHkoIk5ldHdvcmsgRXJyb3IiLHkuRVJSX05FVFdPUkssQSxhKSksYT1udWxsfSxhLm9udGltZW91dD1mdW5jdGlvbigpe2xldCBFPUEudGltZW91dD8idGltZW91dCBvZiAiK0EudGltZW91dCsibXMgZXhjZWVkZWQiOiJ0aW1lb3V0IGV4Y2VlZGVkIix3PUEudHJhbnNpdGlvbmFsfHxoQTtBLnRpbWVvdXRFcnJvck1lc3NhZ2UmJihFPUEudGltZW91dEVycm9yTWVzc2FnZSkscihuZXcgeShFLHcuY2xhcmlmeVRpbWVvdXRFcnJvcj95LkVUSU1FRE9VVDp5LkVDT05OQUJPUlRFRCxBLGEpKSxhPW51bGx9LFIuaGFzU3RhbmRhcmRCcm93c2VyRW52JiYoZyYmbC5pc0Z1bmN0aW9uKGcpJiYoZz1nKEEpKSxnfHxnIT09ITEmJmF0KGMpKSl7bGV0IHA9QS54c3JmSGVhZGVyTmFtZSYmQS54c3JmQ29va2llTmFtZSYmc3QucmVhZChBLnhzcmZDb29raWVOYW1lKTtwJiZpLnNldChBLnhzcmZIZWFkZXJOYW1lLHApfW89PT12b2lkIDAmJmkuc2V0Q29udGVudFR5cGUobnVsbCksInNldFJlcXVlc3RIZWFkZXIiaW4gYSYmbC5mb3JFYWNoKGkudG9KU09OKCksZnVuY3Rpb24oRSx3KXthLnNldFJlcXVlc3RIZWFkZXIodyxFKX0pLGwuaXNVbmRlZmluZWQoQS53aXRoQ3JlZGVudGlhbHMpfHwoYS53aXRoQ3JlZGVudGlhbHM9ISFBLndpdGhDcmVkZW50aWFscyksbiYmbiE9PSJqc29uIiYmKGEucmVzcG9uc2VUeXBlPUEucmVzcG9uc2VUeXBlKSx0eXBlb2YgQS5vbkRvd25sb2FkUHJvZ3Jlc3M9PSJmdW5jdGlvbiImJmEuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGd0KEEub25Eb3dubG9hZFByb2dyZXNzLCEwKSksdHlwZW9mIEEub25VcGxvYWRQcm9ncmVzcz09ImZ1bmN0aW9uIiYmYS51cGxvYWQmJmEudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixndChBLm9uVXBsb2FkUHJvZ3Jlc3MpKSwoQS5jYW5jZWxUb2tlbnx8QS5zaWduYWwpJiYoZj1wPT57YSYmKHIoIXB8fHAudHlwZT9uZXcgTChudWxsLEEsYSk6cCksYS5hYm9ydCgpLGE9bnVsbCl9LEEuY2FuY2VsVG9rZW4mJkEuY2FuY2VsVG9rZW4uc3Vic2NyaWJlKGYpLEEuc2lnbmFsJiYoQS5zaWduYWwuYWJvcnRlZD9mKCk6QS5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGYpKSk7bGV0IHU9VkEoYyk7aWYodSYmUi5wcm90b2NvbHMuaW5kZXhPZih1KT09PS0xKXtyKG5ldyB5KCJVbnN1cHBvcnRlZCBwcm90b2NvbCAiK3UrIjoiLHkuRVJSX0JBRF9SRVFVRVNULEEpKTtyZXR1cm59YS5zZW5kKG98fG51bGwpfSl9O3ZhciBaQT17aHR0cDptQSx4aHI6bHR9O2wuZm9yRWFjaChaQSwoQSxlKT0+e2lmKEEpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoQSwibmFtZSIse3ZhbHVlOmV9KX1jYXRjaHt9T2JqZWN0LmRlZmluZVByb3BlcnR5KEEsImFkYXB0ZXJOYW1lIix7dmFsdWU6ZX0pfX0pO3ZhciBCdD1BPT5gLSAke0F9YCxBaT1BPT5sLmlzRnVuY3Rpb24oQSl8fEE9PT1udWxsfHxBPT09ITEsREE9e2dldEFkYXB0ZXI6QT0+e0E9bC5pc0FycmF5KEEpP0E6W0FdO2xldHtsZW5ndGg6ZX09QSx0LHIsbz17fTtmb3IobGV0IGk9MDtpPGU7aSsrKXt0PUFbaV07bGV0IG47aWYocj10LCFBaSh0KSYmKHI9WkFbKG49U3RyaW5nKHQpKS50b0xvd2VyQ2FzZSgpXSxyPT09dm9pZCAwKSl0aHJvdyBuZXcgeShgVW5rbm93biBhZGFwdGVyICcke259J2ApO2lmKHIpYnJlYWs7b1tufHwiIyIraV09cn1pZighcil7bGV0IGk9T2JqZWN0LmVudHJpZXMobykubWFwKChbZyxmXSk9PmBhZGFwdGVyICR7Z30gYCsoZj09PSExPyJpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBlbnZpcm9ubWVudCI6ImlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGJ1aWxkIikpLG49ZT9pLmxlbmd0aD4xP2BzaW5jZSA6CmAraS5tYXAoQnQpLmpvaW4oYApgKToiICIrQnQoaVswXSk6ImFzIG5vIGFkYXB0ZXIgc3BlY2lmaWVkIjt0aHJvdyBuZXcgeSgiVGhlcmUgaXMgbm8gc3VpdGFibGUgYWRhcHRlciB0byBkaXNwYXRjaCB0aGUgcmVxdWVzdCAiK24sIkVSUl9OT1RfU1VQUE9SVCIpfXJldHVybiByfSxhZGFwdGVyczpaQX07ZnVuY3Rpb24gWEEoQSl7aWYoQS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCksQS5zaWduYWwmJkEuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IEwobnVsbCxBKX1mdW5jdGlvbiBiQShBKXtyZXR1cm4gWEEoQSksQS5oZWFkZXJzPWsuZnJvbShBLmhlYWRlcnMpLEEuZGF0YT1uQS5jYWxsKEEsQS50cmFuc2Zvcm1SZXF1ZXN0KSxbInBvc3QiLCJwdXQiLCJwYXRjaCJdLmluZGV4T2YoQS5tZXRob2QpIT09LTEmJkEuaGVhZGVycy5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiwhMSksREEuZ2V0QWRhcHRlcihBLmFkYXB0ZXJ8fGouYWRhcHRlcikoQSkudGhlbihmdW5jdGlvbihyKXtyZXR1cm4gWEEoQSksci5kYXRhPW5BLmNhbGwoQSxBLnRyYW5zZm9ybVJlc3BvbnNlLHIpLHIuaGVhZGVycz1rLmZyb20oci5oZWFkZXJzKSxyfSxmdW5jdGlvbihyKXtyZXR1cm4gc0Eocil8fChYQShBKSxyJiZyLnJlc3BvbnNlJiYoci5yZXNwb25zZS5kYXRhPW5BLmNhbGwoQSxBLnRyYW5zZm9ybVJlc3BvbnNlLHIucmVzcG9uc2UpLHIucmVzcG9uc2UuaGVhZGVycz1rLmZyb20oci5yZXNwb25zZS5oZWFkZXJzKSkpLFByb21pc2UucmVqZWN0KHIpfSl9dmFyIHV0PUE9PkEgaW5zdGFuY2VvZiBrP0EudG9KU09OKCk6QTtmdW5jdGlvbiBXKEEsZSl7ZT1lfHx7fTtsZXQgdD17fTtmdW5jdGlvbiByKEIscyxhKXtyZXR1cm4gbC5pc1BsYWluT2JqZWN0KEIpJiZsLmlzUGxhaW5PYmplY3Qocyk/bC5tZXJnZS5jYWxsKHtjYXNlbGVzczphfSxCLHMpOmwuaXNQbGFpbk9iamVjdChzKT9sLm1lcmdlKHt9LHMpOmwuaXNBcnJheShzKT9zLnNsaWNlKCk6c31mdW5jdGlvbiBvKEIscyxhKXtpZihsLmlzVW5kZWZpbmVkKHMpKXtpZighbC5pc1VuZGVmaW5lZChCKSlyZXR1cm4gcih2b2lkIDAsQixhKX1lbHNlIHJldHVybiByKEIscyxhKX1mdW5jdGlvbiBpKEIscyl7aWYoIWwuaXNVbmRlZmluZWQocykpcmV0dXJuIHIodm9pZCAwLHMpfWZ1bmN0aW9uIG4oQixzKXtpZihsLmlzVW5kZWZpbmVkKHMpKXtpZighbC5pc1VuZGVmaW5lZChCKSlyZXR1cm4gcih2b2lkIDAsQil9ZWxzZSByZXR1cm4gcih2b2lkIDAscyl9ZnVuY3Rpb24gZyhCLHMsYSl7aWYoYSBpbiBlKXJldHVybiByKEIscyk7aWYoYSBpbiBBKXJldHVybiByKHZvaWQgMCxCKX1sZXQgZj17dXJsOmksbWV0aG9kOmksZGF0YTppLGJhc2VVUkw6bix0cmFuc2Zvcm1SZXF1ZXN0Om4sdHJhbnNmb3JtUmVzcG9uc2U6bixwYXJhbXNTZXJpYWxpemVyOm4sdGltZW91dDpuLHRpbWVvdXRNZXNzYWdlOm4sd2l0aENyZWRlbnRpYWxzOm4sd2l0aFhTUkZUb2tlbjpuLGFkYXB0ZXI6bixyZXNwb25zZVR5cGU6bix4c3JmQ29va2llTmFtZTpuLHhzcmZIZWFkZXJOYW1lOm4sb25VcGxvYWRQcm9ncmVzczpuLG9uRG93bmxvYWRQcm9ncmVzczpuLGRlY29tcHJlc3M6bixtYXhDb250ZW50TGVuZ3RoOm4sbWF4Qm9keUxlbmd0aDpuLGJlZm9yZVJlZGlyZWN0Om4sdHJhbnNwb3J0Om4saHR0cEFnZW50Om4saHR0cHNBZ2VudDpuLGNhbmNlbFRva2VuOm4sc29ja2V0UGF0aDpuLHJlc3BvbnNlRW5jb2Rpbmc6bix2YWxpZGF0ZVN0YXR1czpnLGhlYWRlcnM6KEIscyk9Pm8odXQoQiksdXQocyksITApfTtyZXR1cm4gbC5mb3JFYWNoKE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sQSxlKSksZnVuY3Rpb24ocyl7bGV0IGE9ZltzXXx8byxjPWEoQVtzXSxlW3NdLHMpO2wuaXNVbmRlZmluZWQoYykmJmEhPT1nfHwodFtzXT1jKX0pLHR9dmFyIFJBPSIxLjYuMiI7dmFyICRBPXt9O1sib2JqZWN0IiwiYm9vbGVhbiIsIm51bWJlciIsImZ1bmN0aW9uIiwic3RyaW5nIiwic3ltYm9sIl0uZm9yRWFjaCgoQSxlKT0+eyRBW0FdPWZ1bmN0aW9uKHIpe3JldHVybiB0eXBlb2Ygcj09PUF8fCJhIisoZTwxPyJuICI6IiAiKStBfX0pO3ZhciBDdD17fTskQS50cmFuc2l0aW9uYWw9ZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIG8oaSxuKXtyZXR1cm4iW0F4aW9zIHYiK1JBKyJdIFRyYW5zaXRpb25hbCBvcHRpb24gJyIraSsiJyIrbisocj8iLiAiK3I6IiIpfXJldHVybihpLG4sZyk9PntpZihlPT09ITEpdGhyb3cgbmV3IHkobyhuLCIgaGFzIGJlZW4gcmVtb3ZlZCIrKHQ/IiBpbiAiK3Q6IiIpKSx5LkVSUl9ERVBSRUNBVEVEKTtyZXR1cm4gdCYmIUN0W25dJiYoQ3Rbbl09ITAsY29uc29sZS53YXJuKG8obiwiIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdiIrdCsiIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlIikpKSxlP2UoaSxuLGcpOiEwfX07ZnVuY3Rpb24gZWkoQSxlLHQpe2lmKHR5cGVvZiBBIT0ib2JqZWN0Iil0aHJvdyBuZXcgeSgib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIseS5FUlJfQkFEX09QVElPTl9WQUxVRSk7bGV0IHI9T2JqZWN0LmtleXMoQSksbz1yLmxlbmd0aDtmb3IoO28tLSA+MDspe2xldCBpPXJbb10sbj1lW2ldO2lmKG4pe2xldCBnPUFbaV0sZj1nPT09dm9pZCAwfHxuKGcsaSxBKTtpZihmIT09ITApdGhyb3cgbmV3IHkoIm9wdGlvbiAiK2krIiBtdXN0IGJlICIrZix5LkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtjb250aW51ZX1pZih0IT09ITApdGhyb3cgbmV3IHkoIlVua25vd24gb3B0aW9uICIraSx5LkVSUl9CQURfT1BUSU9OKX19dmFyIGtBPXthc3NlcnRPcHRpb25zOmVpLHZhbGlkYXRvcnM6JEF9O3ZhciB4PWtBLnZhbGlkYXRvcnMsXz1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmRlZmF1bHRzPWUsdGhpcy5pbnRlcmNlcHRvcnM9e3JlcXVlc3Q6bmV3IEhBLHJlc3BvbnNlOm5ldyBIQX19cmVxdWVzdChlLHQpe3R5cGVvZiBlPT0ic3RyaW5nIj8odD10fHx7fSx0LnVybD1lKTp0PWV8fHt9LHQ9Vyh0aGlzLmRlZmF1bHRzLHQpO2xldHt0cmFuc2l0aW9uYWw6cixwYXJhbXNTZXJpYWxpemVyOm8saGVhZGVyczppfT10O3IhPT12b2lkIDAmJmtBLmFzc2VydE9wdGlvbnMocix7c2lsZW50SlNPTlBhcnNpbmc6eC50cmFuc2l0aW9uYWwoeC5ib29sZWFuKSxmb3JjZWRKU09OUGFyc2luZzp4LnRyYW5zaXRpb25hbCh4LmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6eC50cmFuc2l0aW9uYWwoeC5ib29sZWFuKX0sITEpLG8hPW51bGwmJihsLmlzRnVuY3Rpb24obyk/dC5wYXJhbXNTZXJpYWxpemVyPXtzZXJpYWxpemU6b306a0EuYXNzZXJ0T3B0aW9ucyhvLHtlbmNvZGU6eC5mdW5jdGlvbixzZXJpYWxpemU6eC5mdW5jdGlvbn0sITApKSx0Lm1ldGhvZD0odC5tZXRob2R8fHRoaXMuZGVmYXVsdHMubWV0aG9kfHwiZ2V0IikudG9Mb3dlckNhc2UoKTtsZXQgbj1pJiZsLm1lcmdlKGkuY29tbW9uLGlbdC5tZXRob2RdKTtpJiZsLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwicG9zdCIsInB1dCIsInBhdGNoIiwiY29tbW9uIl0sdT0+e2RlbGV0ZSBpW3VdfSksdC5oZWFkZXJzPWsuY29uY2F0KG4saSk7bGV0IGc9W10sZj0hMDt0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goZnVuY3Rpb24ocCl7dHlwZW9mIHAucnVuV2hlbj09ImZ1bmN0aW9uIiYmcC5ydW5XaGVuKHQpPT09ITF8fChmPWYmJnAuc3luY2hyb25vdXMsZy51bnNoaWZ0KHAuZnVsZmlsbGVkLHAucmVqZWN0ZWQpKX0pO2xldCBCPVtdO3RoaXMuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLmZvckVhY2goZnVuY3Rpb24ocCl7Qi5wdXNoKHAuZnVsZmlsbGVkLHAucmVqZWN0ZWQpfSk7bGV0IHMsYT0wLGM7aWYoIWYpe2xldCB1PVtiQS5iaW5kKHRoaXMpLHZvaWQgMF07Zm9yKHUudW5zaGlmdC5hcHBseSh1LGcpLHUucHVzaC5hcHBseSh1LEIpLGM9dS5sZW5ndGgscz1Qcm9taXNlLnJlc29sdmUodCk7YTxjOylzPXMudGhlbih1W2ErK10sdVthKytdKTtyZXR1cm4gc31jPWcubGVuZ3RoO2xldCBJPXQ7Zm9yKGE9MDthPGM7KXtsZXQgdT1nW2ErK10scD1nW2ErK107dHJ5e0k9dShJKX1jYXRjaChFKXtwLmNhbGwodGhpcyxFKTticmVha319dHJ5e3M9YkEuY2FsbCh0aGlzLEkpfWNhdGNoKHUpe3JldHVybiBQcm9taXNlLnJlamVjdCh1KX1mb3IoYT0wLGM9Qi5sZW5ndGg7YTxjOylzPXMudGhlbihCW2ErK10sQlthKytdKTtyZXR1cm4gc31nZXRVcmkoZSl7ZT1XKHRoaXMuZGVmYXVsdHMsZSk7bGV0IHQ9YUEoZS5iYXNlVVJMLGUudXJsKTtyZXR1cm4gaUEodCxlLnBhcmFtcyxlLnBhcmFtc1NlcmlhbGl6ZXIpfX07bC5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSxmdW5jdGlvbihlKXtfLnByb3RvdHlwZVtlXT1mdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLnJlcXVlc3QoVyhyfHx7fSx7bWV0aG9kOmUsdXJsOnQsZGF0YToocnx8e30pLmRhdGF9KSl9fSk7bC5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyKXtyZXR1cm4gZnVuY3Rpb24oaSxuLGcpe3JldHVybiB0aGlzLnJlcXVlc3QoVyhnfHx7fSx7bWV0aG9kOmUsaGVhZGVyczpyP3siQ29udGVudC1UeXBlIjoibXVsdGlwYXJ0L2Zvcm0tZGF0YSJ9Ont9LHVybDppLGRhdGE6bn0pKX19Xy5wcm90b3R5cGVbZV09dCgpLF8ucHJvdG90eXBlW2UrIkZvcm0iXT10KCEwKX0pO3ZhciBJQT1fO3ZhciBBZT1jbGFzcyBBe2NvbnN0cnVjdG9yKGUpe2lmKHR5cGVvZiBlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoImV4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4iKTtsZXQgdDt0aGlzLnByb21pc2U9bmV3IFByb21pc2UoZnVuY3Rpb24oaSl7dD1pfSk7bGV0IHI9dGhpczt0aGlzLnByb21pc2UudGhlbihvPT57aWYoIXIuX2xpc3RlbmVycylyZXR1cm47bGV0IGk9ci5fbGlzdGVuZXJzLmxlbmd0aDtmb3IoO2ktLSA+MDspci5fbGlzdGVuZXJzW2ldKG8pO3IuX2xpc3RlbmVycz1udWxsfSksdGhpcy5wcm9taXNlLnRoZW49bz0+e2xldCBpLG49bmV3IFByb21pc2UoZz0+e3Iuc3Vic2NyaWJlKGcpLGk9Z30pLnRoZW4obyk7cmV0dXJuIG4uY2FuY2VsPWZ1bmN0aW9uKCl7ci51bnN1YnNjcmliZShpKX0sbn0sZShmdW5jdGlvbihpLG4sZyl7ci5yZWFzb258fChyLnJlYXNvbj1uZXcgTChpLG4sZyksdChyLnJlYXNvbikpfSl9dGhyb3dJZlJlcXVlc3RlZCgpe2lmKHRoaXMucmVhc29uKXRocm93IHRoaXMucmVhc29ufXN1YnNjcmliZShlKXtpZih0aGlzLnJlYXNvbil7ZSh0aGlzLnJlYXNvbik7cmV0dXJufXRoaXMuX2xpc3RlbmVycz90aGlzLl9saXN0ZW5lcnMucHVzaChlKTp0aGlzLl9saXN0ZW5lcnM9W2VdfXVuc3Vic2NyaWJlKGUpe2lmKCF0aGlzLl9saXN0ZW5lcnMpcmV0dXJuO2xldCB0PXRoaXMuX2xpc3RlbmVycy5pbmRleE9mKGUpO3QhPT0tMSYmdGhpcy5fbGlzdGVuZXJzLnNwbGljZSh0LDEpfXN0YXRpYyBzb3VyY2UoKXtsZXQgZTtyZXR1cm57dG9rZW46bmV3IEEoZnVuY3Rpb24obyl7ZT1vfSksY2FuY2VsOmV9fX0sZnQ9QWU7ZnVuY3Rpb24gZWUoQSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBBLmFwcGx5KG51bGwsdCl9fWZ1bmN0aW9uIHRlKEEpe3JldHVybiBsLmlzT2JqZWN0KEEpJiZBLmlzQXhpb3NFcnJvcj09PSEwfXZhciByZT17Q29udGludWU6MTAwLFN3aXRjaGluZ1Byb3RvY29sczoxMDEsUHJvY2Vzc2luZzoxMDIsRWFybHlIaW50czoxMDMsT2s6MjAwLENyZWF0ZWQ6MjAxLEFjY2VwdGVkOjIwMixOb25BdXRob3JpdGF0aXZlSW5mb3JtYXRpb246MjAzLE5vQ29udGVudDoyMDQsUmVzZXRDb250ZW50OjIwNSxQYXJ0aWFsQ29udGVudDoyMDYsTXVsdGlTdGF0dXM6MjA3LEFscmVhZHlSZXBvcnRlZDoyMDgsSW1Vc2VkOjIyNixNdWx0aXBsZUNob2ljZXM6MzAwLE1vdmVkUGVybWFuZW50bHk6MzAxLEZvdW5kOjMwMixTZWVPdGhlcjozMDMsTm90TW9kaWZpZWQ6MzA0LFVzZVByb3h5OjMwNSxVbnVzZWQ6MzA2LFRlbXBvcmFyeVJlZGlyZWN0OjMwNyxQZXJtYW5lbnRSZWRpcmVjdDozMDgsQmFkUmVxdWVzdDo0MDAsVW5hdXRob3JpemVkOjQwMSxQYXltZW50UmVxdWlyZWQ6NDAyLEZvcmJpZGRlbjo0MDMsTm90Rm91bmQ6NDA0LE1ldGhvZE5vdEFsbG93ZWQ6NDA1LE5vdEFjY2VwdGFibGU6NDA2LFByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZDo0MDcsUmVxdWVzdFRpbWVvdXQ6NDA4LENvbmZsaWN0OjQwOSxHb25lOjQxMCxMZW5ndGhSZXF1aXJlZDo0MTEsUHJlY29uZGl0aW9uRmFpbGVkOjQxMixQYXlsb2FkVG9vTGFyZ2U6NDEzLFVyaVRvb0xvbmc6NDE0LFVuc3VwcG9ydGVkTWVkaWFUeXBlOjQxNSxSYW5nZU5vdFNhdGlzZmlhYmxlOjQxNixFeHBlY3RhdGlvbkZhaWxlZDo0MTcsSW1BVGVhcG90OjQxOCxNaXNkaXJlY3RlZFJlcXVlc3Q6NDIxLFVucHJvY2Vzc2FibGVFbnRpdHk6NDIyLExvY2tlZDo0MjMsRmFpbGVkRGVwZW5kZW5jeTo0MjQsVG9vRWFybHk6NDI1LFVwZ3JhZGVSZXF1aXJlZDo0MjYsUHJlY29uZGl0aW9uUmVxdWlyZWQ6NDI4LFRvb01hbnlSZXF1ZXN0czo0MjksUmVxdWVzdEhlYWRlckZpZWxkc1Rvb0xhcmdlOjQzMSxVbmF2YWlsYWJsZUZvckxlZ2FsUmVhc29uczo0NTEsSW50ZXJuYWxTZXJ2ZXJFcnJvcjo1MDAsTm90SW1wbGVtZW50ZWQ6NTAxLEJhZEdhdGV3YXk6NTAyLFNlcnZpY2VVbmF2YWlsYWJsZTo1MDMsR2F0ZXdheVRpbWVvdXQ6NTA0LEh0dHBWZXJzaW9uTm90U3VwcG9ydGVkOjUwNSxWYXJpYW50QWxzb05lZ290aWF0ZXM6NTA2LEluc3VmZmljaWVudFN0b3JhZ2U6NTA3LExvb3BEZXRlY3RlZDo1MDgsTm90RXh0ZW5kZWQ6NTEwLE5ldHdvcmtBdXRoZW50aWNhdGlvblJlcXVpcmVkOjUxMX07T2JqZWN0LmVudHJpZXMocmUpLmZvckVhY2goKFtBLGVdKT0+e3JlW2VdPUF9KTt2YXIgY3Q9cmU7ZnVuY3Rpb24gcHQoQSl7bGV0IGU9bmV3IElBKEEpLHQ9ZUEoSUEucHJvdG90eXBlLnJlcXVlc3QsZSk7cmV0dXJuIGwuZXh0ZW5kKHQsSUEucHJvdG90eXBlLGUse2FsbE93bktleXM6ITB9KSxsLmV4dGVuZCh0LGUsbnVsbCx7YWxsT3duS2V5czohMH0pLHQuY3JlYXRlPWZ1bmN0aW9uKG8pe3JldHVybiBwdChXKEEsbykpfSx0fXZhciBEPXB0KGopO0QuQXhpb3M9SUE7RC5DYW5jZWxlZEVycm9yPUw7RC5DYW5jZWxUb2tlbj1mdDtELmlzQ2FuY2VsPXNBO0QuVkVSU0lPTj1SQTtELnRvRm9ybURhdGE9RztELkF4aW9zRXJyb3I9eTtELkNhbmNlbD1ELkNhbmNlbGVkRXJyb3I7RC5hbGw9ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKGUpfTtELnNwcmVhZD1lZTtELmlzQXhpb3NFcnJvcj10ZTtELm1lcmdlQ29uZmlnPVc7RC5BeGlvc0hlYWRlcnM9aztELmZvcm1Ub0pTT049QT0+eUEobC5pc0hUTUxGb3JtKEEpP25ldyBGb3JtRGF0YShBKTpBKTtELmdldEFkYXB0ZXI9REEuZ2V0QWRhcHRlcjtELkh0dHBTdGF0dXNDb2RlPWN0O0QuZGVmYXVsdD1EO3ZhciB6PUQ7dmFye0F4aW9zOktzLEF4aW9zRXJyb3I6anMsQ2FuY2VsZWRFcnJvcjp2cyxpc0NhbmNlbDpfcyxDYW5jZWxUb2tlbjp6cyxWRVJTSU9OOlZzLGFsbDpacyxDYW5jZWw6WHMsaXNBeGlvc0Vycm9yOiRzLHNwcmVhZDpBYSx0b0Zvcm1EYXRhOmVhLEF4aW9zSGVhZGVyczp0YSxIdHRwU3RhdHVzQ29kZTpyYSxmb3JtVG9KU09OOmlhLGdldEFkYXB0ZXI6b2EsbWVyZ2VDb25maWc6bmF9PXo7YXN5bmMgZnVuY3Rpb24gdGkoQSxlKXtsZXQgdD1BLHI9bnVsbDtpZih0PT09bnVsbClyPW5ldyBXb3JrZXIobmV3IFVSTCgiLi93ZWItd29ya2Vycy9pdGstd2FzbS1waXBlbGluZS53b3JrZXIuanMiLGltcG9ydC5tZXRhLnVybCkse3R5cGU6Im1vZHVsZSJ9KTtlbHNlIGlmKHQuc3RhcnRzV2l0aCgiaHR0cCIpKXtsZXQgbz1hd2FpdCB6LmdldCh0LHtyZXNwb25zZVR5cGU6ImJsb2IiLHBhcmFtczplfSksaT1VUkwuY3JlYXRlT2JqZWN0VVJMKG8uZGF0YSk7cj1uZXcgV29ya2VyKGkse3R5cGU6Im1vZHVsZSJ9KX1lbHNlIHI9bmV3IFdvcmtlcih0LHt0eXBlOiJtb2R1bGUifSk7cmV0dXJuIHJ9dmFyIGdBPXRpO2Z1bmN0aW9uIEV0KEEpe2xldCBlPVdBKEEpLHQ9QTtyZXR1cm4gdC50ZXJtaW5hdGVkPSExLHQud29ya2VyUHJveHk9ZSx0Lm9yaWdpbmFsVGVybWluYXRlPXQudGVybWluYXRlLHQudGVybWluYXRlPSgpPT57dC50ZXJtaW5hdGVkPSEwLHQud29ya2VyUHJveHlbT0FdKCksdC5vcmlnaW5hbFRlcm1pbmF0ZSgpfSx7d29ya2VyUHJveHk6ZSx3b3JrZXI6dH19YXN5bmMgZnVuY3Rpb24gcmkoQSxlLHQpe2xldCByO2lmKEEhPW51bGwpe2xldCBpPUE7cmV0dXJuIGkud29ya2VyUHJveHkhPT12b2lkIDA/KHI9aS53b3JrZXJQcm94eSx7d29ya2VyUHJveHk6cix3b3JrZXI6aX0pOkV0KEEpfWxldCBvPWF3YWl0IGdBKGUsdCk7cmV0dXJuIEV0KG8pfXZhciBRdD1yaTthc3luYyBmdW5jdGlvbiBpaShBLGUsdCl7bGV0IHI9InVua25vd24iO3R5cGVvZiBBIT0ic3RyaW5nIj9yPUEuaHJlZjpBLnN0YXJ0c1dpdGgoImh0dHAiKT9yPUE6cj10eXBlb2YgZTwidSI/YCR7ZX0vJHtBfWA6QSxyLmVuZHNXaXRoKCIuanMiKSYmKHI9ci5zdWJzdHJpbmcoMCxyLmxlbmd0aC0zKSksci5lbmRzV2l0aCgiLndhc20iKSYmKHI9ci5zdWJzdHJpbmcoMCxyLmxlbmd0aC01KSk7bGV0IG89YCR7cn0ud2FzbWAsbj0oYXdhaXQgei5nZXQobyx7cmVzcG9uc2VUeXBlOiJhcnJheWJ1ZmZlciIscGFyYW1zOnR9KSkuZGF0YTtyZXR1cm4oYXdhaXQgaW1wb3J0KGAke3J9LmpzYCkpLmRlZmF1bHQoe3dhc21CaW5hcnk6bn0pfXZhciBtdD1paTt2YXIgZHQ9YXN5bmMoKT0+V2ViQXNzZW1ibHkudmFsaWRhdGUobmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsNSwxLDk2LDAsMSwxMjMsMywyLDEsMCwxMCwxMCwxLDgsMCw2NSwwLDI1MywxNSwyNTMsOTgsMTFdKSk7dmFyIHd0PXR5cGVvZiBnbG9iYWxUaGlzLlNoYXJlZEFycmF5QnVmZmVyPT0iZnVuY3Rpb24iLGh0PW5ldyBUZXh0RW5jb2Rlcix5dD1uZXcgVGV4dERlY29kZXIoInV0Zi04Iik7ZnVuY3Rpb24gb2koQSxlKXtsZXQgdD17ZmxhZ3M6InIiLGVuY29kaW5nOiJiaW5hcnkifSxyPUEuZnNfb3BlbihlLHQuZmxhZ3MpLGk9QS5mc19zdGF0KGUpLnNpemUsbj1udWxsO3d0P249bmV3IFNoYXJlZEFycmF5QnVmZmVyKGkpOm49bmV3IEFycmF5QnVmZmVyKGkpO2xldCBnPW5ldyBVaW50OEFycmF5KG4pO3JldHVybiBBLmZzX3JlYWQocixnLDAsaSwwKSxBLmZzX2Nsb3NlKHIpLGd9ZnVuY3Rpb24gRHQoQSxlLHQpe2xldCByPW51bGw7d3Q/cj1uZXcgU2hhcmVkQXJyYXlCdWZmZXIodCk6cj1uZXcgQXJyYXlCdWZmZXIodCk7bGV0IG89bmV3IFVpbnQ4QXJyYXkociksaT1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsZSx0KTtyZXR1cm4gby5zZXQoaSksb31mdW5jdGlvbiBiKEEsZSx0LHIpe2xldCBvPTA7cmV0dXJuIGUhPT1udWxsJiYobz1BLmNjYWxsKCJpdGtfd2FzbV9pbnB1dF9hcnJheV9hbGxvYyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCx0LHIsZS5idWZmZXIuYnl0ZUxlbmd0aF0pLEEuSEVBUFU4LnNldChuZXcgVWludDhBcnJheShlLmJ1ZmZlciksbykpLG99ZnVuY3Rpb24gVihBLGUsdCl7bGV0IHI9SlNPTi5zdHJpbmdpZnkoZSksbz1BLmNjYWxsKCJpdGtfd2FzbV9pbnB1dF9qc29uX2FsbG9jIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHQsci5sZW5ndGhdKTtBLndyaXRlQXNjaWlUb01lbW9yeShyLG8sITEpfWZ1bmN0aW9uIEYoQSxlLHQscil7bGV0IG89QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsZSx0XSksaT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxlLHRdKSxuPUR0KEEsbyxpKTtyZXR1cm4gUChyLG4uYnVmZmVyKX1mdW5jdGlvbiBpZShBLGUpe2xldCB0PUEuY2NhbGwoIml0a193YXNtX291dHB1dF9qc29uX2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIl0sWzAsZV0pLHI9QS5Bc2NpaVRvU3RyaW5nKHQpO3JldHVybiBKU09OLnBhcnNlKHIpfWZ1bmN0aW9uIG5pKEEsZSx0LHIpe3IhPW51bGwmJnIubGVuZ3RoPjAmJnIuZm9yRWFjaChmdW5jdGlvbihCLHMpe3N3aXRjaChCLnR5cGUpe2Nhc2UgQy5UZXh0U3RyZWFtOntsZXQgYT1odC5lbmNvZGUoQi5kYXRhLmRhdGEpLGM9YihBLGEscywwKSxJPXtzaXplOmEuYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2N9YH07VihBLEkscyk7YnJlYWt9Y2FzZSBDLkpzb25Db21wYXRpYmxlOntsZXQgYT1odC5lbmNvZGUoSlNPTi5zdHJpbmdpZnkoQi5kYXRhKSksYz1iKEEsYSxzLDApLEk9e3NpemU6YS5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gfTtWKEEsSSxzKTticmVha31jYXNlIEMuQmluYXJ5U3RyZWFtOntsZXQgYT1CLmRhdGEuZGF0YSxjPWIoQSxhLHMsMCksST17c2l6ZTphLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWB9O1YoQSxJLHMpO2JyZWFrfWNhc2UgQy5UZXh0RmlsZTp7QS5mc193cml0ZUZpbGUoQi5kYXRhLnBhdGgsQi5kYXRhLmRhdGEpO2JyZWFrfWNhc2UgQy5CaW5hcnlGaWxlOntBLmZzX3dyaXRlRmlsZShCLmRhdGEucGF0aCxCLmRhdGEuZGF0YSk7YnJlYWt9Y2FzZSBDLkltYWdlOntsZXQgYT1CLmRhdGEsYz1iKEEsYS5kYXRhLHMsMCksST1iKEEsYS5kaXJlY3Rpb24scywxKSx1PXR5cGVvZiBhLm1ldGFkYXRhPy5lbnRyaWVzPCJ1Ij9KU09OLnN0cmluZ2lmeShBcnJheS5mcm9tKGEubWV0YWRhdGEuZW50cmllcygpKSk6IltdIixwPXtpbWFnZVR5cGU6YS5pbWFnZVR5cGUsbmFtZTphLm5hbWUsb3JpZ2luOmEub3JpZ2luLHNwYWNpbmc6YS5zcGFjaW5nLGRpcmVjdGlvbjpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0l9YCxzaXplOmEuc2l6ZSxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gLG1ldGFkYXRhOnV9O1YoQSxwLHMpO2JyZWFrfWNhc2UgQy5NZXNoOntsZXQgYT1CLmRhdGEsYz1iKEEsYS5wb2ludHMscywwKSxJPWIoQSxhLmNlbGxzLHMsMSksdT1iKEEsYS5wb2ludERhdGEscywyKSxwPWIoQSxhLmNlbGxEYXRhLHMsMyksRT17bWVzaFR5cGU6YS5tZXNoVHlwZSxuYW1lOmEubmFtZSxudW1iZXJPZlBvaW50czphLm51bWJlck9mUG9pbnRzLHBvaW50czpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2N9YCxudW1iZXJPZkNlbGxzOmEubnVtYmVyT2ZDZWxscyxjZWxsczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke0l9YCxjZWxsQnVmZmVyU2l6ZTphLmNlbGxCdWZmZXJTaXplLG51bWJlck9mUG9pbnRQaXhlbHM6YS5udW1iZXJPZlBvaW50UGl4ZWxzLHBvaW50RGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke3V9YCxudW1iZXJPZkNlbGxQaXhlbHM6YS5udW1iZXJPZkNlbGxQaXhlbHMsY2VsbERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtwfWB9O1YoQSxFLHMpO2JyZWFrfWNhc2UgQy5Qb2x5RGF0YTp7bGV0IGE9Qi5kYXRhLGM9YihBLGEucG9pbnRzLHMsMCksST1iKEEsYS52ZXJ0aWNlcyxzLDEpLHU9YihBLGEubGluZXMscywyKSxwPWIoQSxhLnBvbHlnb25zLHMsMyksRT1iKEEsYS50cmlhbmdsZVN0cmlwcyxzLDQpLHc9YihBLGEucG9pbnREYXRhLHMsNSksTj1iKEEsYS5wb2ludERhdGEscyw2KSxNPXtwb2x5RGF0YVR5cGU6YS5wb2x5RGF0YVR5cGUsbmFtZTphLm5hbWUsbnVtYmVyT2ZQb2ludHM6YS5udW1iZXJPZlBvaW50cyxwb2ludHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWAsdmVydGljZXNCdWZmZXJTaXplOmEudmVydGljZXNCdWZmZXJTaXplLHZlcnRpY2VzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7SX1gLGxpbmVzQnVmZmVyU2l6ZTphLmxpbmVzQnVmZmVyU2l6ZSxsaW5lczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke3V9YCxwb2x5Z29uc0J1ZmZlclNpemU6YS5wb2x5Z29uc0J1ZmZlclNpemUscG9seWdvbnM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtwfWAsdHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplOmEudHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplLHRyaWFuZ2xlU3RyaXBzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7RX1gLG51bWJlck9mUG9pbnRQaXhlbHM6YS5udW1iZXJPZlBvaW50UGl4ZWxzLHBvaW50RGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke3d9YCxudW1iZXJPZkNlbGxQaXhlbHM6YS5udW1iZXJPZkNlbGxQaXhlbHMsY2VsbERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtOfWB9O1YoQSxNLHMpO2JyZWFrfWRlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuc3VwcG9ydGVkIGlucHV0IEludGVyZmFjZVR5cGUiKX19KSxBLnJlc2V0TW9kdWxlU3Rkb3V0KCksQS5yZXNldE1vZHVsZVN0ZGVycigpO2xldCBvPUEuc3RhY2tTYXZlKCksaT0wO3RyeXtpPUEuY2FsbE1haW4oZS5zbGljZSgpKX1jYXRjaChCKXt0aHJvdyB0eXBlb2YgQj09Im51bWJlciImJihjb25zb2xlLmxvZygiRXhjZXB0aW9uIHdoaWxlIHJ1bm5pbmcgcGlwZWxpbmU6IiksY29uc29sZS5sb2coInN0ZG91dDoiLEEuZ2V0TW9kdWxlU3Rkb3V0KCkpLGNvbnNvbGUuZXJyb3IoInN0ZGVycjoiLEEuZ2V0TW9kdWxlU3RkZXJyKCkpLHR5cGVvZiBBLmdldEV4Y2VwdGlvbk1lc3NhZ2U8InUiP2NvbnNvbGUuZXJyb3IoImV4Y2VwdGlvbjoiLEEuZ2V0RXhjZXB0aW9uTWVzc2FnZShCKSk6Y29uc29sZS5lcnJvcigiQnVpbGQgbW9kdWxlIGluIERlYnVnIG1vZGUgZm9yIGV4Y2VwdGlvbiBtZXNzYWdlIGluZm9ybWF0aW9uLiIpKSxCfWZpbmFsbHl7QS5zdGFja1Jlc3RvcmUobyl9bGV0IG49QS5nZXRNb2R1bGVTdGRvdXQoKSxnPUEuZ2V0TW9kdWxlU3RkZXJyKCksZj1bXTtyZXR1cm4gdCE9bnVsbCYmdC5sZW5ndGg+MCYmaT09PTAmJnQuZm9yRWFjaChmdW5jdGlvbihCLHMpe2xldCBhPW51bGw7c3dpdGNoKEIudHlwZSl7Y2FzZSBDLlRleHRTdHJlYW06e2xldCBJPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHMsMF0pLHU9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAscywwXSkscD1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsSSx1KTthPXtkYXRhOnl0LmRlY29kZShwKX07YnJlYWt9Y2FzZSBDLkpzb25Db21wYXRpYmxlOntsZXQgST1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxzLDBdKSx1PUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHMsMF0pLHA9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLEksdSk7YT1KU09OLnBhcnNlKHl0LmRlY29kZShwKSk7YnJlYWt9Y2FzZSBDLkJpbmFyeVN0cmVhbTp7bGV0IEk9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAscywwXSksdT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxzLDBdKTthPXtkYXRhOkR0KEEsSSx1KX07YnJlYWt9Y2FzZSBDLlRleHRGaWxlOnthPXtwYXRoOkIuZGF0YS5wYXRoLGRhdGE6QS5mc19yZWFkRmlsZShCLmRhdGEucGF0aCx7ZW5jb2Rpbmc6InV0ZjgifSl9O2JyZWFrfWNhc2UgQy5CaW5hcnlGaWxlOnthPXtwYXRoOkIuZGF0YS5wYXRoLGRhdGE6b2koQSxCLmRhdGEucGF0aCl9O2JyZWFrfWNhc2UgQy5JbWFnZTp7bGV0IEk9aWUoQSxzKTtJLmRhdGE9RihBLHMsMCxJLmltYWdlVHlwZS5jb21wb25lbnRUeXBlKSxJLmRpcmVjdGlvbj1GKEEscywxLEguRmxvYXQ2NCksSS5tZXRhZGF0YT1uZXcgTWFwKEkubWV0YWRhdGEpLGE9STticmVha31jYXNlIEMuTWVzaDp7bGV0IEk9aWUoQSxzKTtJLm51bWJlck9mUG9pbnRzPjA/SS5wb2ludHM9RihBLHMsMCxJLm1lc2hUeXBlLnBvaW50Q29tcG9uZW50VHlwZSk6SS5wb2ludHM9UChJLm1lc2hUeXBlLnBvaW50Q29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEkubnVtYmVyT2ZDZWxscz4wP0kuY2VsbHM9RihBLHMsMSxJLm1lc2hUeXBlLmNlbGxDb21wb25lbnRUeXBlKTpJLmNlbGxzPVAoSS5tZXNoVHlwZS5jZWxsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEkubnVtYmVyT2ZQb2ludFBpeGVscz4wP0kucG9pbnREYXRhPUYoQSxzLDIsSS5tZXNoVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSk6SS5wb2ludERhdGE9UChJLm1lc2hUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksSS5udW1iZXJPZkNlbGxQaXhlbHM+MD9JLmNlbGxEYXRhPUYoQSxzLDMsSS5tZXNoVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlKTpJLmNlbGxEYXRhPVAoSS5tZXNoVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksYT1JO2JyZWFrfWNhc2UgQy5Qb2x5RGF0YTp7bGV0IEk9aWUoQSxzKTtJLm51bWJlck9mUG9pbnRzPjA/SS5wb2ludHM9RihBLHMsMCxILkZsb2F0MzIpOkkucG9pbnRzPW5ldyBGbG9hdDMyQXJyYXksSS52ZXJ0aWNlc0J1ZmZlclNpemU+MD9JLnZlcnRpY2VzPUYoQSxzLDEsUy5VSW50MzIpOkkudmVydGljZXM9bmV3IFVpbnQzMkFycmF5LEkubGluZXNCdWZmZXJTaXplPjA/SS5saW5lcz1GKEEscywyLFMuVUludDMyKTpJLmxpbmVzPW5ldyBVaW50MzJBcnJheSxJLnBvbHlnb25zQnVmZmVyU2l6ZT4wP0kucG9seWdvbnM9RihBLHMsMyxTLlVJbnQzMik6SS5wb2x5Z29ucz1uZXcgVWludDMyQXJyYXksSS50cmlhbmdsZVN0cmlwc0J1ZmZlclNpemU+MD9JLnRyaWFuZ2xlU3RyaXBzPUYoQSxzLDQsUy5VSW50MzIpOkkudHJpYW5nbGVTdHJpcHM9bmV3IFVpbnQzMkFycmF5LEkubnVtYmVyT2ZQb2ludFBpeGVscz4wP0kucG9pbnREYXRhPUYoQSxzLDUsSS5wb2x5RGF0YVR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUpOkkucG9pbnREYXRhPVAoSS5wb2x5RGF0YVR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxJLm51bWJlck9mQ2VsbFBpeGVscz4wP0kuY2VsbERhdGE9RihBLHMsNixJLnBvbHlEYXRhVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlKTpJLmNlbGxEYXRhPVAoSS5wb2x5RGF0YVR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLGE9STticmVha31kZWZhdWx0OnRocm93IEVycm9yKCJVbnN1cHBvcnRlZCBvdXRwdXQgSW50ZXJmYWNlVHlwZSIpfWxldCBjPXt0eXBlOkIudHlwZSxkYXRhOmF9O2YucHVzaChjKX0pLHtyZXR1cm5WYWx1ZTppLHN0ZG91dDpuLHN0ZGVycjpnLG91dHB1dHM6Zn19dmFyIGJ0PW5pO3ZhciBzaT10eXBlb2YgZ2xvYmFsVGhpcy5TaGFyZWRBcnJheUJ1ZmZlcjwidSI7ZnVuY3Rpb24gYWkoQSxlKXtpZihBPT1udWxsKXJldHVybltdO2xldCB0PVtdO2ZvcihsZXQgcj0wO3I8QS5sZW5ndGg7cisrKXtsZXQgbz1JaShBW3JdLGUpO28hPT1udWxsJiZ0LnB1c2gobyl9cmV0dXJuIHR9ZnVuY3Rpb24gSWkoQSxlKXtpZihBPT1udWxsKXJldHVybiBudWxsO2xldCB0PW51bGw7cmV0dXJuIEEuYnVmZmVyIT09dm9pZCAwP3Q9QS5idWZmZXI6QS5ieXRlTGVuZ3RoIT09dm9pZCAwJiYodD1BKSxzaSYmdCBpbnN0YW5jZW9mIFNoYXJlZEFycmF5QnVmZmVyP251bGw6ZT90OnQuc2xpY2UoMCl9dmFyIFJ0PWFpO2Z1bmN0aW9uIGdpKEEpe3JldHVybltBLmRhdGEsQS5kaXJlY3Rpb25dfXZhciBrdD1naTtmdW5jdGlvbiBsaShBKXtyZXR1cm5bQS5wb2ludHMsQS5wb2ludERhdGEsQS5jZWxscyxBLmNlbGxEYXRhXX12YXIgU3Q9bGk7ZnVuY3Rpb24gQmkoQSl7cmV0dXJuW0EucG9pbnRzLEEudmVydGljZXMsQS5saW5lcyxBLnBvbHlnb25zLEEudHJpYW5nbGVTdHJpcHMsQS5wb2ludERhdGEsQS5jZWxsRGF0YV19dmFyIEZ0PUJpO3ZhciB1aTtmdW5jdGlvbiBTQSgpe3JldHVybiB1aX12YXIgQ2k7ZnVuY3Rpb24gVXQoKXtyZXR1cm4gQ2l9dmFyIGZpO2Z1bmN0aW9uIEZBKCl7cmV0dXJuIGZpfXZhciBvZT1uZXcgTWFwO2Z1bmN0aW9uIGNpKCl7bGV0IEE9RkEoKTtyZXR1cm4gdHlwZW9mIEE+InUiJiYoQT1udWxsKSxBfWZ1bmN0aW9uIE50KCl7bGV0IEE9U0EoKTtyZXR1cm4gdHlwZW9mIEE+InUiJiYoQT1uZXcgVVJMKCIvcGlwZWxpbmVzIixkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4pLmhyZWYpLEF9ZnVuY3Rpb24gVUEoKXtsZXQgQT1VdCgpO3JldHVybiB0eXBlb2YgQT4idSImJihBPXt9KSxBfWFzeW5jIGZ1bmN0aW9uIHBpKEEsZSx0KXtsZXQgcj1BLG89QTtpZih0eXBlb2YgQSE9InN0cmluZyImJihyPW5ldyBVUkwoQS5ocmVmKSxvPXIuaHJlZiksb2UuaGFzKG8pKXJldHVybiBvZS5nZXQobyk7e2xldCBpPWF3YWl0IG10KEEsZT8udG9TdHJpbmcoKT8/TnQoKSx0Pz9VQSgpKTtyZXR1cm4gb2Uuc2V0KG8saSksaX19YXN5bmMgZnVuY3Rpb24gRWkoQSxlLHQscixvKXtpZighYXdhaXQgZHQoKSl7bGV0IEU9IldlYkFzc2VtYmx5IFNJTUQgc3VwcG9ydCBpcyByZXF1aXJlZCAtLSBwbGVhc2UgdXBkYXRlIHlvdXIgYnJvd3Nlci4iO3Rocm93IGFsZXJ0KEUpLG5ldyBFcnJvcihFKX1sZXQgaT1vPy53ZWJXb3JrZXI/P251bGw7aWYoaT09PSExKXtsZXQgRT1hd2FpdCBwaShBLnRvU3RyaW5nKCksbz8ucGlwZWxpbmVCYXNlVXJsLG8/LnBpcGVsaW5lUXVlcnlQYXJhbXM/P1VBKCkpO3JldHVybiBidChFLGUsdCxyKX1sZXQgbj1pLGc9bz8ucGlwZWxpbmVXb3JrZXJVcmw/P2NpKCksZj10eXBlb2YgZyE9InN0cmluZyImJnR5cGVvZiBnPy5ocmVmPCJ1Ij9nLmhyZWY6Zyx7d29ya2VyUHJveHk6Qix3b3JrZXI6c309YXdhaXQgUXQobixmLG8/LnBpcGVsaW5lUXVlcnlQYXJhbXM/P1VBKCkpO249cztsZXQgYT1bXTtyIT1udWxsJiZyLmxlbmd0aD4wJiZyLmZvckVhY2goZnVuY3Rpb24oRSl7aWYoRS50eXBlPT09Qy5CaW5hcnlTdHJlYW0pe2xldCB3PUUuZGF0YS5kYXRhO2EucHVzaCh3KX1lbHNlIGlmKEUudHlwZT09PUMuQmluYXJ5RmlsZSl7bGV0IHc9RS5kYXRhLmRhdGE7YS5wdXNoKHcpfWVsc2UgaWYoRS50eXBlPT09Qy5JbWFnZSl7bGV0IHc9RS5kYXRhO3cuZGF0YSE9PW51bGwmJmEucHVzaCguLi5rdCh3KSl9ZWxzZSBpZihFLnR5cGU9PT1DLk1lc2gpe2xldCB3PUUuZGF0YTthLnB1c2goLi4uU3QodykpfWVsc2UgaWYoRS50eXBlPT09Qy5Qb2x5RGF0YSl7bGV0IHc9RS5kYXRhO2EucHVzaCguLi5GdCh3KSl9fSk7bGV0IGM9bz8ucGlwZWxpbmVCYXNlVXJsPz9OdCgpLEk9dHlwZW9mIGMhPSJzdHJpbmciJiZ0eXBlb2YgYz8uaHJlZjwidSI/Yy5ocmVmOmMsdT1yIT1udWxsP1BBKHIsUnQoYSxvPy5ub0NvcHkpKTpudWxsLHA9YXdhaXQgQi5ydW5QaXBlbGluZShBLnRvU3RyaW5nKCksSSxlLHQsdSxvPy5waXBlbGluZVF1ZXJ5UGFyYW1zPz9VQSgpKTtyZXR1cm57cmV0dXJuVmFsdWU6cC5yZXR1cm5WYWx1ZSxzdGRvdXQ6cC5zdGRvdXQsc3RkZXJyOnAuc3RkZXJyLG91dHB1dHM6cC5vdXRwdXRzLHdlYldvcmtlcjpufX12YXIgbT1FaTt2YXIgUWk9bnVsbDtmdW5jdGlvbiBNdCgpe3JldHVybiBRaX12YXIgbWk9bmV3IE1hcChbXSksWj1taTt2YXIgZGk9IjEuMS4xIixPdD1kaTt2YXIgbmUsaGk9YGh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQGl0ay13YXNtL21lc2gtaW9AJHtPdH0vZGlzdC9waXBlbGluZXNgO2Z1bmN0aW9uIFhhKEEpe25lPUF9ZnVuY3Rpb24gZCgpe2lmKHR5cGVvZiBuZTwidSIpcmV0dXJuIG5lO2xldCBBPVNBKCk7cmV0dXJuIHR5cGVvZiBBPCJ1Ij9BOmhpfXZhciBzZSx5aT1udWxsO2Z1bmN0aW9uIFd0KEEpe3NlPUF9ZnVuY3Rpb24gUSgpe2lmKHR5cGVvZiBzZTwidSIpcmV0dXJuIHNlO2xldCBBPUZBKCk7cmV0dXJuIHR5cGVvZiBBPCJ1Ij9BOnlpfXZhciBYPW51bGw7YXN5bmMgZnVuY3Rpb24gUHQoKXtsZXQgQT1RKCksZT10eXBlb2YgQSE9InN0cmluZyImJnR5cGVvZiBBPy5ocmVmPCJ1Ij9BLmhyZWY6QTtYPWF3YWl0IGdBKGUpfWZ1bmN0aW9uIG9JKEEpe1g9QX1hc3luYyBmdW5jdGlvbiBoKCl7aWYoWCE9PW51bGwpcmV0dXJuIFgudGVybWluYXRlZCYmYXdhaXQgUHQoKSxYO2xldCBBPU10KCk7cmV0dXJuIEEhPT1udWxsP0E6KGF3YWl0IFB0KCksWCl9YXN5bmMgZnVuY3Rpb24gd2koQSxlPXt9KXtsZXQgdD1be3R5cGU6Qy5Kc29uQ29tcGF0aWJsZX0se3R5cGU6Qy5NZXNofV0scj1BO2lmKEEgaW5zdGFuY2VvZiBGaWxlKXtsZXQgRT1hd2FpdCBBLmFycmF5QnVmZmVyKCk7cj17cGF0aDpBLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShFKX19bGV0IG89W3t0eXBlOkMuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLGUuaW5mb3JtYXRpb25Pbmx5JiZlLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgQj0idnRrLXBvbHktZGF0YS1yZWFkLW1lc2giLHM9ZT8ud2ViV29ya2VyO3M9PT12b2lkIDAmJihzPWF3YWl0IGgoKSk7bGV0e3dlYldvcmtlcjphLHJldHVyblZhbHVlOmMsc3RkZXJyOkksb3V0cHV0czp1fT1hd2FpdCBtKEIsaSx0LG8se3BpcGVsaW5lQmFzZVVybDpkKCkscGlwZWxpbmVXb3JrZXJVcmw6USgpLHdlYldvcmtlcjpzLG5vQ29weTplPy5ub0NvcHl9KTtpZihjIT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOmEsY291bGRSZWFkOnVbMF0/LmRhdGEsbWVzaDp1WzFdPy5kYXRhfX12YXIgYWU9d2k7YXN5bmMgZnVuY3Rpb24gRGkoQSxlLHQ9e30pe2xldCByPVt7dHlwZTpDLkpzb25Db21wYXRpYmxlfSx7dHlwZTpDLkJpbmFyeUZpbGUsZGF0YTp7cGF0aDplLGRhdGE6bmV3IFVpbnQ4QXJyYXl9fV0sbz1be3R5cGU6Qy5NZXNoLGRhdGE6QX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9ZTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIiksdC5iaW5hcnlGaWxlVHlwZSYmdC5iaW5hcnlGaWxlVHlwZSYmaS5wdXNoKCItLWJpbmFyeS1maWxlLXR5cGUiKTtsZXQgQj0idnRrLXBvbHktZGF0YS13cml0ZS1tZXNoIixzPXQ/LndlYldvcmtlcjtzPT09dm9pZCAwJiYocz1hd2FpdCBoKCkpO2xldHt3ZWJXb3JrZXI6YSxyZXR1cm5WYWx1ZTpjLHN0ZGVycjpJLG91dHB1dHM6dX09YXdhaXQgbShCLGkscixvLHtwaXBlbGluZUJhc2VVcmw6ZCgpLHBpcGVsaW5lV29ya2VyVXJsOlEoKSx3ZWJXb3JrZXI6cyxub0NvcHk6dD8ubm9Db3B5fSk7aWYoYyE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjphLGNvdWxkV3JpdGU6dVswXT8uZGF0YSxzZXJpYWxpemVkTWVzaDp1WzFdPy5kYXRhfX12YXIgSWU9RGk7YXN5bmMgZnVuY3Rpb24gYmkoQSxlPXt9KXtsZXQgdD1be3R5cGU6Qy5Kc29uQ29tcGF0aWJsZX0se3R5cGU6Qy5NZXNofV0scj1BO2lmKEEgaW5zdGFuY2VvZiBGaWxlKXtsZXQgRT1hd2FpdCBBLmFycmF5QnVmZmVyKCk7cj17cGF0aDpBLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShFKX19bGV0IG89W3t0eXBlOkMuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLGUuaW5mb3JtYXRpb25Pbmx5JiZlLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgQj0ib2JqLXJlYWQtbWVzaCIscz1lPy53ZWJXb3JrZXI7cz09PXZvaWQgMCYmKHM9YXdhaXQgaCgpKTtsZXR7d2ViV29ya2VyOmEscmV0dXJuVmFsdWU6YyxzdGRlcnI6SSxvdXRwdXRzOnV9PWF3YWl0IG0oQixpLHQsbyx7cGlwZWxpbmVCYXNlVXJsOmQoKSxwaXBlbGluZVdvcmtlclVybDpRKCksd2ViV29ya2VyOnMsbm9Db3B5OmU/Lm5vQ29weX0pO2lmKGMhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6YSxjb3VsZFJlYWQ6dVswXT8uZGF0YSxtZXNoOnVbMV0/LmRhdGF9fXZhciBnZT1iaTthc3luYyBmdW5jdGlvbiBSaShBLGUsdD17fSl7bGV0IHI9W3t0eXBlOkMuSnNvbkNvbXBhdGlibGV9LHt0eXBlOkMuQmluYXJ5RmlsZSxkYXRhOntwYXRoOmUsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpDLk1lc2gsZGF0YTpBfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1lO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKSx0LmJpbmFyeUZpbGVUeXBlJiZ0LmJpbmFyeUZpbGVUeXBlJiZpLnB1c2goIi0tYmluYXJ5LWZpbGUtdHlwZSIpO2xldCBCPSJvYmotd3JpdGUtbWVzaCIscz10Py53ZWJXb3JrZXI7cz09PXZvaWQgMCYmKHM9YXdhaXQgaCgpKTtsZXR7d2ViV29ya2VyOmEscmV0dXJuVmFsdWU6YyxzdGRlcnI6SSxvdXRwdXRzOnV9PWF3YWl0IG0oQixpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOmQoKSxwaXBlbGluZVdvcmtlclVybDpRKCksd2ViV29ya2VyOnMsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKGMhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6YSxjb3VsZFdyaXRlOnVbMF0/LmRhdGEsc2VyaWFsaXplZE1lc2g6dVsxXT8uZGF0YX19dmFyIGxlPVJpO2FzeW5jIGZ1bmN0aW9uIGtpKEEsZT17fSl7bGV0IHQ9W3t0eXBlOkMuSnNvbkNvbXBhdGlibGV9LHt0eXBlOkMuTWVzaH1dLHI9QTtpZihBIGluc3RhbmNlb2YgRmlsZSl7bGV0IEU9YXdhaXQgQS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6QS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoRSl9fWxldCBvPVt7dHlwZTpDLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxuPXIucGF0aDtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj0iMSI7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxlLmluZm9ybWF0aW9uT25seSYmZS5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5Iik7bGV0IEI9InN0bC1yZWFkLW1lc2giLHM9ZT8ud2ViV29ya2VyO3M9PT12b2lkIDAmJihzPWF3YWl0IGgoKSk7bGV0e3dlYldvcmtlcjphLHJldHVyblZhbHVlOmMsc3RkZXJyOkksb3V0cHV0czp1fT1hd2FpdCBtKEIsaSx0LG8se3BpcGVsaW5lQmFzZVVybDpkKCkscGlwZWxpbmVXb3JrZXJVcmw6USgpLHdlYldvcmtlcjpzLG5vQ29weTplPy5ub0NvcHl9KTtpZihjIT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOmEsY291bGRSZWFkOnVbMF0/LmRhdGEsbWVzaDp1WzFdPy5kYXRhfX12YXIgQmU9a2k7YXN5bmMgZnVuY3Rpb24gU2koQSxlLHQ9e30pe2xldCByPVt7dHlwZTpDLkpzb25Db21wYXRpYmxlfSx7dHlwZTpDLkJpbmFyeUZpbGUsZGF0YTp7cGF0aDplLGRhdGE6bmV3IFVpbnQ4QXJyYXl9fV0sbz1be3R5cGU6Qy5NZXNoLGRhdGE6QX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9ZTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIiksdC5iaW5hcnlGaWxlVHlwZSYmdC5iaW5hcnlGaWxlVHlwZSYmaS5wdXNoKCItLWJpbmFyeS1maWxlLXR5cGUiKTtsZXQgQj0ic3RsLXdyaXRlLW1lc2giLHM9dD8ud2ViV29ya2VyO3M9PT12b2lkIDAmJihzPWF3YWl0IGgoKSk7bGV0e3dlYldvcmtlcjphLHJldHVyblZhbHVlOmMsc3RkZXJyOkksb3V0cHV0czp1fT1hd2FpdCBtKEIsaSxyLG8se3BpcGVsaW5lQmFzZVVybDpkKCkscGlwZWxpbmVXb3JrZXJVcmw6USgpLHdlYldvcmtlcjpzLG5vQ29weTp0Py5ub0NvcHl9KTtpZihjIT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOmEsY291bGRXcml0ZTp1WzBdPy5kYXRhLHNlcmlhbGl6ZWRNZXNoOnVbMV0/LmRhdGF9fXZhciB1ZT1TaTthc3luYyBmdW5jdGlvbiBGaShBLGU9e30pe2xldCB0PVt7dHlwZTpDLkpzb25Db21wYXRpYmxlfSx7dHlwZTpDLk1lc2h9XSxyPUE7aWYoQSBpbnN0YW5jZW9mIEZpbGUpe2xldCBFPWF3YWl0IEEuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOkEubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KEUpfX1sZXQgbz1be3R5cGU6Qy5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksZS5pbmZvcm1hdGlvbk9ubHkmJmUuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBCPSJvZmYtcmVhZC1tZXNoIixzPWU/LndlYldvcmtlcjtzPT09dm9pZCAwJiYocz1hd2FpdCBoKCkpO2xldHt3ZWJXb3JrZXI6YSxyZXR1cm5WYWx1ZTpjLHN0ZGVycjpJLG91dHB1dHM6dX09YXdhaXQgbShCLGksdCxvLHtwaXBlbGluZUJhc2VVcmw6ZCgpLHBpcGVsaW5lV29ya2VyVXJsOlEoKSx3ZWJXb3JrZXI6cyxub0NvcHk6ZT8ubm9Db3B5fSk7aWYoYyE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjphLGNvdWxkUmVhZDp1WzBdPy5kYXRhLG1lc2g6dVsxXT8uZGF0YX19dmFyIENlPUZpO2FzeW5jIGZ1bmN0aW9uIFVpKEEsZSx0PXt9KXtsZXQgcj1be3R5cGU6Qy5Kc29uQ29tcGF0aWJsZX0se3R5cGU6Qy5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6ZSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOkMuTWVzaCxkYXRhOkF9XSxpPVtdLG49IjAiO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPWU7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSx0LmluZm9ybWF0aW9uT25seSYmdC5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5IiksdC51c2VDb21wcmVzc2lvbiYmdC51c2VDb21wcmVzc2lvbiYmaS5wdXNoKCItLXVzZS1jb21wcmVzc2lvbiIpLHQuYmluYXJ5RmlsZVR5cGUmJnQuYmluYXJ5RmlsZVR5cGUmJmkucHVzaCgiLS1iaW5hcnktZmlsZS10eXBlIik7bGV0IEI9Im9mZi13cml0ZS1tZXNoIixzPXQ/LndlYldvcmtlcjtzPT09dm9pZCAwJiYocz1hd2FpdCBoKCkpO2xldHt3ZWJXb3JrZXI6YSxyZXR1cm5WYWx1ZTpjLHN0ZGVycjpJLG91dHB1dHM6dX09YXdhaXQgbShCLGkscixvLHtwaXBlbGluZUJhc2VVcmw6ZCgpLHBpcGVsaW5lV29ya2VyVXJsOlEoKSx3ZWJXb3JrZXI6cyxub0NvcHk6dD8ubm9Db3B5fSk7aWYoYyE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjphLGNvdWxkV3JpdGU6dVswXT8uZGF0YSxzZXJpYWxpemVkTWVzaDp1WzFdPy5kYXRhfX12YXIgZmU9VWk7YXN5bmMgZnVuY3Rpb24gTmkoQSxlPXt9KXtsZXQgdD1be3R5cGU6Qy5Kc29uQ29tcGF0aWJsZX0se3R5cGU6Qy5NZXNofV0scj1BO2lmKEEgaW5zdGFuY2VvZiBGaWxlKXtsZXQgRT1hd2FpdCBBLmFycmF5QnVmZmVyKCk7cj17cGF0aDpBLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShFKX19bGV0IG89W3t0eXBlOkMuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLGUuaW5mb3JtYXRpb25Pbmx5JiZlLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgQj0id2FzbS1yZWFkLW1lc2giLHM9ZT8ud2ViV29ya2VyO3M9PT12b2lkIDAmJihzPWF3YWl0IGgoKSk7bGV0e3dlYldvcmtlcjphLHJldHVyblZhbHVlOmMsc3RkZXJyOkksb3V0cHV0czp1fT1hd2FpdCBtKEIsaSx0LG8se3BpcGVsaW5lQmFzZVVybDpkKCkscGlwZWxpbmVXb3JrZXJVcmw6USgpLHdlYldvcmtlcjpzLG5vQ29weTplPy5ub0NvcHl9KTtpZihjIT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOmEsY291bGRSZWFkOnVbMF0/LmRhdGEsbWVzaDp1WzFdPy5kYXRhfX12YXIgY2U9Tmk7YXN5bmMgZnVuY3Rpb24gTWkoQSxlLHQ9e30pe2xldCByPVt7dHlwZTpDLkpzb25Db21wYXRpYmxlfSx7dHlwZTpDLkJpbmFyeUZpbGUsZGF0YTp7cGF0aDplLGRhdGE6bmV3IFVpbnQ4QXJyYXl9fV0sbz1be3R5cGU6Qy5NZXNoLGRhdGE6QX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9ZTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIiksdC5iaW5hcnlGaWxlVHlwZSYmdC5iaW5hcnlGaWxlVHlwZSYmaS5wdXNoKCItLWJpbmFyeS1maWxlLXR5cGUiKTtsZXQgQj0id2FzbS13cml0ZS1tZXNoIixzPXQ/LndlYldvcmtlcjtzPT09dm9pZCAwJiYocz1hd2FpdCBoKCkpO2xldHt3ZWJXb3JrZXI6YSxyZXR1cm5WYWx1ZTpjLHN0ZGVycjpJLG91dHB1dHM6dX09YXdhaXQgbShCLGkscixvLHtwaXBlbGluZUJhc2VVcmw6ZCgpLHBpcGVsaW5lV29ya2VyVXJsOlEoKSx3ZWJXb3JrZXI6cyxub0NvcHk6dD8ubm9Db3B5fSk7aWYoYyE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjphLGNvdWxkV3JpdGU6dVswXT8uZGF0YSxzZXJpYWxpemVkTWVzaDp1WzFdPy5kYXRhfX12YXIgcGU9TWk7YXN5bmMgZnVuY3Rpb24gT2koQSxlPXt9KXtsZXQgdD1be3R5cGU6Qy5Kc29uQ29tcGF0aWJsZX0se3R5cGU6Qy5NZXNofV0scj1BO2lmKEEgaW5zdGFuY2VvZiBGaWxlKXtsZXQgRT1hd2FpdCBBLmFycmF5QnVmZmVyKCk7cj17cGF0aDpBLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShFKX19bGV0IG89W3t0eXBlOkMuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLGUuaW5mb3JtYXRpb25Pbmx5JiZlLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgQj0id2FzbS16c3RkLXJlYWQtbWVzaCIscz1lPy53ZWJXb3JrZXI7cz09PXZvaWQgMCYmKHM9YXdhaXQgaCgpKTtsZXR7d2ViV29ya2VyOmEscmV0dXJuVmFsdWU6YyxzdGRlcnI6SSxvdXRwdXRzOnV9PWF3YWl0IG0oQixpLHQsbyx7cGlwZWxpbmVCYXNlVXJsOmQoKSxwaXBlbGluZVdvcmtlclVybDpRKCksd2ViV29ya2VyOnMsbm9Db3B5OmU/Lm5vQ29weX0pO2lmKGMhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6YSxjb3VsZFJlYWQ6dVswXT8uZGF0YSxtZXNoOnVbMV0/LmRhdGF9fXZhciBFZT1PaTthc3luYyBmdW5jdGlvbiBXaShBLGUsdD17fSl7bGV0IHI9W3t0eXBlOkMuSnNvbkNvbXBhdGlibGV9LHt0eXBlOkMuQmluYXJ5RmlsZSxkYXRhOntwYXRoOmUsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpDLk1lc2gsZGF0YTpBfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1lO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKSx0LmJpbmFyeUZpbGVUeXBlJiZ0LmJpbmFyeUZpbGVUeXBlJiZpLnB1c2goIi0tYmluYXJ5LWZpbGUtdHlwZSIpO2xldCBCPSJ3YXNtLXpzdGQtd3JpdGUtbWVzaCIscz10Py53ZWJXb3JrZXI7cz09PXZvaWQgMCYmKHM9YXdhaXQgaCgpKTtsZXR7d2ViV29ya2VyOmEscmV0dXJuVmFsdWU6YyxzdGRlcnI6SSxvdXRwdXRzOnV9PWF3YWl0IG0oQixpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOmQoKSxwaXBlbGluZVdvcmtlclVybDpRKCksd2ViV29ya2VyOnMsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKGMhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6YSxjb3VsZFdyaXRlOnVbMF0/LmRhdGEsc2VyaWFsaXplZE1lc2g6dVsxXT8uZGF0YX19dmFyIFFlPVdpO2FzeW5jIGZ1bmN0aW9uIFBpKEEsZT17fSl7bGV0IHQ9W3t0eXBlOkMuSnNvbkNvbXBhdGlibGV9LHt0eXBlOkMuTWVzaH1dLHI9QTtpZihBIGluc3RhbmNlb2YgRmlsZSl7bGV0IEU9YXdhaXQgQS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6QS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoRSl9fWxldCBvPVt7dHlwZTpDLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxuPXIucGF0aDtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj0iMSI7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxlLmluZm9ybWF0aW9uT25seSYmZS5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5Iik7bGV0IEI9InN3Yy1yZWFkLW1lc2giLHM9ZT8ud2ViV29ya2VyO3M9PT12b2lkIDAmJihzPWF3YWl0IGgoKSk7bGV0e3dlYldvcmtlcjphLHJldHVyblZhbHVlOmMsc3RkZXJyOkksb3V0cHV0czp1fT1hd2FpdCBtKEIsaSx0LG8se3BpcGVsaW5lQmFzZVVybDpkKCkscGlwZWxpbmVXb3JrZXJVcmw6USgpLHdlYldvcmtlcjpzLG5vQ29weTplPy5ub0NvcHl9KTtpZihjIT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOmEsY291bGRSZWFkOnVbMF0/LmRhdGEsbWVzaDp1WzFdPy5kYXRhfX12YXIgbWU9UGk7YXN5bmMgZnVuY3Rpb24gR2koQSxlLHQ9e30pe2xldCByPVt7dHlwZTpDLkpzb25Db21wYXRpYmxlfSx7dHlwZTpDLkJpbmFyeUZpbGUsZGF0YTp7cGF0aDplLGRhdGE6bmV3IFVpbnQ4QXJyYXl9fV0sbz1be3R5cGU6Qy5NZXNoLGRhdGE6QX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9ZTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIiksdC5iaW5hcnlGaWxlVHlwZSYmdC5iaW5hcnlGaWxlVHlwZSYmaS5wdXNoKCItLWJpbmFyeS1maWxlLXR5cGUiKTtsZXQgQj0ic3djLXdyaXRlLW1lc2giLHM9dD8ud2ViV29ya2VyO3M9PT12b2lkIDAmJihzPWF3YWl0IGgoKSk7bGV0e3dlYldvcmtlcjphLHJldHVyblZhbHVlOmMsc3RkZXJyOkksb3V0cHV0czp1fT1hd2FpdCBtKEIsaSxyLG8se3BpcGVsaW5lQmFzZVVybDpkKCkscGlwZWxpbmVXb3JrZXJVcmw6USgpLHdlYldvcmtlcjpzLG5vQ29weTp0Py5ub0NvcHl9KTtpZihjIT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOmEsY291bGRXcml0ZTp1WzBdPy5kYXRhLHNlcmlhbGl6ZWRNZXNoOnVbMV0/LmRhdGF9fXZhciBkZT1HaTthc3luYyBmdW5jdGlvbiBMaShBLGU9e30pe2xldCB0PVt7dHlwZTpDLkpzb25Db21wYXRpYmxlfSx7dHlwZTpDLk1lc2h9XSxyPUE7aWYoQSBpbnN0YW5jZW9mIEZpbGUpe2xldCBFPWF3YWl0IEEuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOkEubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KEUpfX1sZXQgbz1be3R5cGU6Qy5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksZS5pbmZvcm1hdGlvbk9ubHkmJmUuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBCPSJieXUtcmVhZC1tZXNoIixzPWU/LndlYldvcmtlcjtzPT09dm9pZCAwJiYocz1hd2FpdCBoKCkpO2xldHt3ZWJXb3JrZXI6YSxyZXR1cm5WYWx1ZTpjLHN0ZGVycjpJLG91dHB1dHM6dX09YXdhaXQgbShCLGksdCxvLHtwaXBlbGluZUJhc2VVcmw6ZCgpLHBpcGVsaW5lV29ya2VyVXJsOlEoKSx3ZWJXb3JrZXI6cyxub0NvcHk6ZT8ubm9Db3B5fSk7aWYoYyE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjphLGNvdWxkUmVhZDp1WzBdPy5kYXRhLG1lc2g6dVsxXT8uZGF0YX19dmFyIGhlPUxpO2FzeW5jIGZ1bmN0aW9uIHhpKEEsZSx0PXt9KXtsZXQgcj1be3R5cGU6Qy5Kc29uQ29tcGF0aWJsZX0se3R5cGU6Qy5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6ZSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOkMuTWVzaCxkYXRhOkF9XSxpPVtdLG49IjAiO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPWU7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSx0LmluZm9ybWF0aW9uT25seSYmdC5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5IiksdC51c2VDb21wcmVzc2lvbiYmdC51c2VDb21wcmVzc2lvbiYmaS5wdXNoKCItLXVzZS1jb21wcmVzc2lvbiIpLHQuYmluYXJ5RmlsZVR5cGUmJnQuYmluYXJ5RmlsZVR5cGUmJmkucHVzaCgiLS1iaW5hcnktZmlsZS10eXBlIik7bGV0IEI9ImJ5dS13cml0ZS1tZXNoIixzPXQ/LndlYldvcmtlcjtzPT09dm9pZCAwJiYocz1hd2FpdCBoKCkpO2xldHt3ZWJXb3JrZXI6YSxyZXR1cm5WYWx1ZTpjLHN0ZGVycjpJLG91dHB1dHM6dX09YXdhaXQgbShCLGkscixvLHtwaXBlbGluZUJhc2VVcmw6ZCgpLHBpcGVsaW5lV29ya2VyVXJsOlEoKSx3ZWJXb3JrZXI6cyxub0NvcHk6dD8ubm9Db3B5fSk7aWYoYyE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjphLGNvdWxkV3JpdGU6dVswXT8uZGF0YSxzZXJpYWxpemVkTWVzaDp1WzFdPy5kYXRhfX12YXIgeWU9eGk7YXN5bmMgZnVuY3Rpb24gVGkoQSxlPXt9KXtsZXQgdD1be3R5cGU6Qy5Kc29uQ29tcGF0aWJsZX0se3R5cGU6Qy5NZXNofV0scj1BO2lmKEEgaW5zdGFuY2VvZiBGaWxlKXtsZXQgRT1hd2FpdCBBLmFycmF5QnVmZmVyKCk7cj17cGF0aDpBLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShFKX19bGV0IG89W3t0eXBlOkMuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLGUuaW5mb3JtYXRpb25Pbmx5JiZlLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgQj0iZnJlZS1zdXJmZXItYXNjaWktcmVhZC1tZXNoIixzPWU/LndlYldvcmtlcjtzPT09dm9pZCAwJiYocz1hd2FpdCBoKCkpO2xldHt3ZWJXb3JrZXI6YSxyZXR1cm5WYWx1ZTpjLHN0ZGVycjpJLG91dHB1dHM6dX09YXdhaXQgbShCLGksdCxvLHtwaXBlbGluZUJhc2VVcmw6ZCgpLHBpcGVsaW5lV29ya2VyVXJsOlEoKSx3ZWJXb3JrZXI6cyxub0NvcHk6ZT8ubm9Db3B5fSk7aWYoYyE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjphLGNvdWxkUmVhZDp1WzBdPy5kYXRhLG1lc2g6dVsxXT8uZGF0YX19dmFyIHdlPVRpO2FzeW5jIGZ1bmN0aW9uIEppKEEsZSx0PXt9KXtsZXQgcj1be3R5cGU6Qy5Kc29uQ29tcGF0aWJsZX0se3R5cGU6Qy5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6ZSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOkMuTWVzaCxkYXRhOkF9XSxpPVtdLG49IjAiO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPWU7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSx0LmluZm9ybWF0aW9uT25seSYmdC5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5IiksdC51c2VDb21wcmVzc2lvbiYmdC51c2VDb21wcmVzc2lvbiYmaS5wdXNoKCItLXVzZS1jb21wcmVzc2lvbiIpLHQuYmluYXJ5RmlsZVR5cGUmJnQuYmluYXJ5RmlsZVR5cGUmJmkucHVzaCgiLS1iaW5hcnktZmlsZS10eXBlIik7bGV0IEI9ImZyZWUtc3VyZmVyLWFzY2lpLXdyaXRlLW1lc2giLHM9dD8ud2ViV29ya2VyO3M9PT12b2lkIDAmJihzPWF3YWl0IGgoKSk7bGV0e3dlYldvcmtlcjphLHJldHVyblZhbHVlOmMsc3RkZXJyOkksb3V0cHV0czp1fT1hd2FpdCBtKEIsaSxyLG8se3BpcGVsaW5lQmFzZVVybDpkKCkscGlwZWxpbmVXb3JrZXJVcmw6USgpLHdlYldvcmtlcjpzLG5vQ29weTp0Py5ub0NvcHl9KTtpZihjIT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOmEsY291bGRXcml0ZTp1WzBdPy5kYXRhLHNlcmlhbGl6ZWRNZXNoOnVbMV0/LmRhdGF9fXZhciBEZT1KaTthc3luYyBmdW5jdGlvbiBIaShBLGU9e30pe2xldCB0PVt7dHlwZTpDLkpzb25Db21wYXRpYmxlfSx7dHlwZTpDLk1lc2h9XSxyPUE7aWYoQSBpbnN0YW5jZW9mIEZpbGUpe2xldCBFPWF3YWl0IEEuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOkEubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KEUpfX1sZXQgbz1be3R5cGU6Qy5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksZS5pbmZvcm1hdGlvbk9ubHkmJmUuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBCPSJmcmVlLXN1cmZlci1iaW5hcnktcmVhZC1tZXNoIixzPWU/LndlYldvcmtlcjtzPT09dm9pZCAwJiYocz1hd2FpdCBoKCkpO2xldHt3ZWJXb3JrZXI6YSxyZXR1cm5WYWx1ZTpjLHN0ZGVycjpJLG91dHB1dHM6dX09YXdhaXQgbShCLGksdCxvLHtwaXBlbGluZUJhc2VVcmw6ZCgpLHBpcGVsaW5lV29ya2VyVXJsOlEoKSx3ZWJXb3JrZXI6cyxub0NvcHk6ZT8ubm9Db3B5fSk7aWYoYyE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjphLGNvdWxkUmVhZDp1WzBdPy5kYXRhLG1lc2g6dVsxXT8uZGF0YX19dmFyIGJlPUhpO2FzeW5jIGZ1bmN0aW9uIFlpKEEsZSx0PXt9KXtsZXQgcj1be3R5cGU6Qy5Kc29uQ29tcGF0aWJsZX0se3R5cGU6Qy5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6ZSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOkMuTWVzaCxkYXRhOkF9XSxpPVtdLG49IjAiO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPWU7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSx0LmluZm9ybWF0aW9uT25seSYmdC5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5IiksdC51c2VDb21wcmVzc2lvbiYmdC51c2VDb21wcmVzc2lvbiYmaS5wdXNoKCItLXVzZS1jb21wcmVzc2lvbiIpLHQuYmluYXJ5RmlsZVR5cGUmJnQuYmluYXJ5RmlsZVR5cGUmJmkucHVzaCgiLS1iaW5hcnktZmlsZS10eXBlIik7bGV0IEI9ImZyZWUtc3VyZmVyLWJpbmFyeS13cml0ZS1tZXNoIixzPXQ/LndlYldvcmtlcjtzPT09dm9pZCAwJiYocz1hd2FpdCBoKCkpO2xldHt3ZWJXb3JrZXI6YSxyZXR1cm5WYWx1ZTpjLHN0ZGVycjpJLG91dHB1dHM6dX09YXdhaXQgbShCLGkscixvLHtwaXBlbGluZUJhc2VVcmw6ZCgpLHBpcGVsaW5lV29ya2VyVXJsOlEoKSx3ZWJXb3JrZXI6cyxub0NvcHk6dD8ubm9Db3B5fSk7aWYoYyE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjphLGNvdWxkV3JpdGU6dVswXT8uZGF0YSxzZXJpYWxpemVkTWVzaDp1WzFdPy5kYXRhfX12YXIgUmU9WWk7dmFyIHFpPW5ldyBNYXAoW1sidnRrIixbYWUsSWVdXSxbIm9iaiIsW2dlLGxlXV0sWyJzdGwiLFtCZSx1ZV1dLFsib2ZmIixbQ2UsZmVdXSxbIndhc20iLFtjZSxwZV1dLFsid2FzbS16c3QiLFtFZSxRZV1dLFsic3djIixbbWUsZGVdXSxbImJ5dSIsW2hlLHllXV0sWyJmcmVlLXN1cmZlci1hc2NpaSIsW3dlLERlXV0sWyJmcmVlLXN1cmZlci1iaW5hcnkiLFtiZSxSZV1dXSksJD1xaTthc3luYyBmdW5jdGlvbiBLaShBLGU9e30pe2xldCB0PUEudHlwZT8/IiIscj1BLm5hbWU/P0EucGF0aD8/ImZpbGVOYW1lIixvPUFBKHIpLnRvTG93ZXJDYXNlKCksaT1lPy53ZWJXb3JrZXIsbj1BO2lmKEEgaW5zdGFuY2VvZiBCbG9iKXtsZXQgST1hd2FpdCBBLmFycmF5QnVmZmVyKCk7bj17cGF0aDpBLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShJKX19bGV0IGc9bnVsbDtpZih0JiZaLmhhcyh0KSlnPVouZ2V0KHQpO2Vsc2UgaWYoVC5oYXMobykpZz1ULmdldChvKTtlbHNlIGZvcihsZXQgSSBvZiAkLnZhbHVlcygpKWlmKElbMF0hPT1udWxsKXtsZXR7d2ViV29ya2VyOnUsY291bGRSZWFkOnAsbWVzaDpFfT1hd2FpdCBJWzBdKHtwYXRoOm4ucGF0aCxkYXRhOm4uZGF0YS5zbGljZSgpfSx7aW5mb3JtYXRpb25Pbmx5OmUuaW5mb3JtYXRpb25Pbmx5LHdlYldvcmtlcjppLG5vQ29weTplPy5ub0NvcHl9KTtpZihpPXUscClyZXR1cm57d2ViV29ya2VyOmksbWVzaDpFfX1pZighZyl0aHJvdyBFcnJvcigiQ291bGQgbm90IGZpbmQgSU8gZm9yOiAiK3IpO2xldCBCPSQuZ2V0KGcpWzBdLHt3ZWJXb3JrZXI6cyxjb3VsZFJlYWQ6YSxtZXNoOmN9PWF3YWl0IEIobix7aW5mb3JtYXRpb25Pbmx5OmUuaW5mb3JtYXRpb25Pbmx5LHdlYldvcmtlcjppLG5vQ29weTplPy5ub0NvcHl9KTtpZihpPXMsIWEpdGhyb3cgRXJyb3IoIkNvdWxkIG5vdCByZWFkOiAiK3IpO3JldHVybnt3ZWJXb3JrZXI6aSxtZXNoOmN9fXZhciBqaT1LaTthc3luYyBmdW5jdGlvbiB2aShBLGUsdD17fSl7bGV0IHI9QSxvPXQubWltZVR5cGUsaT1BQShlKS50b0xvd2VyQ2FzZSgpLG49dC53ZWJXb3JrZXIsZz1udWxsO2lmKHR5cGVvZiBvPCJ1IiYmWi5oYXMobykpZz1aLmdldChvKTtlbHNlIGlmKFQuaGFzKGkpKWc9VC5nZXQoaSk7ZWxzZSBmb3IobGV0IHUgb2YgJC52YWx1ZXMoKSlpZih1WzFdIT09bnVsbCl7bGV0e3dlYldvcmtlcjpwLGNvdWxkV3JpdGU6RSxzZXJpYWxpemVkTWVzaDp3fT1hd2FpdCB1WzFdKHIsZSx0KTtpZihuPXAsRSlyZXR1cm57d2ViV29ya2VyOm4sc2VyaWFsaXplZE1lc2g6d319aWYoIWcpdGhyb3cgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIElPIGZvcjogIitlKTtsZXQgQj0kLmdldChnKVsxXSx7d2ViV29ya2VyOnMsY291bGRXcml0ZTphLHNlcmlhbGl6ZWRNZXNoOmN9PWF3YWl0IEIocixlLHQpO2lmKG49cywhYSl0aHJvdyBFcnJvcigiQ291bGQgbm90IHdyaXRlOiAiK2UpO3JldHVybnt3ZWJXb3JrZXI6bixzZXJpYWxpemVkTWVzaDpjfX12YXIgX2k9dmk7dmFyIEd0PSdkYXRhOnRleHQvamF2YXNjcmlwdDtjaGFyc2V0PXV0Zi04LHZhciB0dD1PYmplY3QuZGVmaW5lUHJvcGVydHk7dmFyIGV0PShBLEkpPT57Zm9yKHZhciB0IGluIEkpdHQoQSx0LHtnZXQ6SVt0XSxlbnVtZXJhYmxlOiEwfSl9O3ZhciB2QT1TeW1ib2woIkNvbWxpbmsucHJveHkiKSxndD1TeW1ib2woIkNvbWxpbmsuZW5kcG9pbnQiKSxydD1TeW1ib2woIkNvbWxpbmsucmVsZWFzZVByb3h5IiksbUE9U3ltYm9sKCJDb21saW5rLmZpbmFsaXplciIpLGVBPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSwkQT1BPT50eXBlb2YgQT09Im9iamVjdCImJkEhPT1udWxsfHx0eXBlb2YgQT09ImZ1bmN0aW9uIixpdD17Y2FuSGFuZGxlOkE9PiRBKEEpJiZBW3ZBXSxzZXJpYWxpemUoQSl7bGV0e3BvcnQxOkkscG9ydDI6dH09bmV3IE1lc3NhZ2VDaGFubmVsO3JldHVybiBvQShBLEkpLFt0LFt0XV19LGRlc2VyaWFsaXplKEEpe3JldHVybiBBLnN0YXJ0KCksc3QoQSl9fSxvdD17Y2FuSGFuZGxlOkE9PiRBKEEpJiZlQSBpbiBBLHNlcmlhbGl6ZSh7dmFsdWU6QX0pe2xldCBJO3JldHVybiBBIGluc3RhbmNlb2YgRXJyb3I/ST17aXNFcnJvcjohMCx2YWx1ZTp7bWVzc2FnZTpBLm1lc3NhZ2UsbmFtZTpBLm5hbWUsc3RhY2s6QS5zdGFja319Okk9e2lzRXJyb3I6ITEsdmFsdWU6QX0sW0ksW11dfSxkZXNlcmlhbGl6ZShBKXt0aHJvdyBBLmlzRXJyb3I/T2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoQS52YWx1ZS5tZXNzYWdlKSxBLnZhbHVlKTpBLnZhbHVlfX0sQUk9bmV3IE1hcChbWyJwcm94eSIsaXRdLFsidGhyb3ciLG90XV0pO2Z1bmN0aW9uIEJ0KEEsSSl7Zm9yKGxldCB0IG9mIEEpaWYoST09PXR8fHQ9PT0iKiJ8fHQgaW5zdGFuY2VvZiBSZWdFeHAmJnQudGVzdChJKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBvQShBLEk9Z2xvYmFsVGhpcyx0PVsiKiJdKXtJLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uIGUoZyl7aWYoIWd8fCFnLmRhdGEpcmV0dXJuO2lmKCFCdCh0LGcub3JpZ2luKSl7Y29uc29sZS53YXJuKGBJbnZhbGlkIG9yaWdpbiBcJyR7Zy5vcmlnaW59XCcgZm9yIGNvbWxpbmsgcHJveHlgKTtyZXR1cm59bGV0e2lkOnIsdHlwZTppLHBhdGg6c309T2JqZWN0LmFzc2lnbih7cGF0aDpbXX0sZy5kYXRhKSxhPShnLmRhdGEuYXJndW1lbnRMaXN0fHxbXSkubWFwKGIpLG47dHJ5e2xldCBDPXMuc2xpY2UoMCwtMSkucmVkdWNlKChmLFEpPT5mW1FdLEEpLG89cy5yZWR1Y2UoKGYsUSk9PmZbUV0sQSk7c3dpdGNoKGkpe2Nhc2UiR0VUIjpuPW87YnJlYWs7Y2FzZSJTRVQiOkNbcy5zbGljZSgtMSlbMF1dPWIoZy5kYXRhLnZhbHVlKSxuPSEwO2JyZWFrO2Nhc2UiQVBQTFkiOm49by5hcHBseShDLGEpO2JyZWFrO2Nhc2UiQ09OU1RSVUNUIjp7bGV0IGY9bmV3IG8oLi4uYSk7bj1hdChmKX1icmVhaztjYXNlIkVORFBPSU5UIjp7bGV0e3BvcnQxOmYscG9ydDI6UX09bmV3IE1lc3NhZ2VDaGFubmVsO29BKEEsUSksbj1TQShmLFtmXSl9YnJlYWs7Y2FzZSJSRUxFQVNFIjpuPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2goQyl7bj17dmFsdWU6QyxbZUFdOjB9fVByb21pc2UucmVzb2x2ZShuKS5jYXRjaChDPT4oe3ZhbHVlOkMsW2VBXTowfSkpLnRoZW4oQz0+e2xldFtvLGZdPWlBKEMpO0kucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG8pLHtpZDpyfSksZiksaT09PSJSRUxFQVNFIiYmKEkucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZSksSUkoSSksbUEgaW4gQSYmdHlwZW9mIEFbbUFdPT0iZnVuY3Rpb24iJiZBW21BXSgpKX0pLmNhdGNoKEM9PntsZXRbbyxmXT1pQSh7dmFsdWU6bmV3IFR5cGVFcnJvcigiVW5zZXJpYWxpemFibGUgcmV0dXJuIHZhbHVlIiksW2VBXTowfSk7SS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbykse2lkOnJ9KSxmKX0pfSksSS5zdGFydCYmSS5zdGFydCgpfWZ1bmN0aW9uIEN0KEEpe3JldHVybiBBLmNvbnN0cnVjdG9yLm5hbWU9PT0iTWVzc2FnZVBvcnQifWZ1bmN0aW9uIElJKEEpe0N0KEEpJiZBLmNsb3NlKCl9ZnVuY3Rpb24gc3QoQSxJKXtyZXR1cm4gcEEoQSxbXSxJKX1mdW5jdGlvbiB0QShBKXtpZihBKXRocm93IG5ldyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIil9ZnVuY3Rpb24gdEkoQSl7cmV0dXJuIE0oQSx7dHlwZToiUkVMRUFTRSJ9KS50aGVuKCgpPT57SUkoQSl9KX12YXIgZ0E9bmV3IFdlYWtNYXAsckE9IkZpbmFsaXphdGlvblJlZ2lzdHJ5ImluIGdsb2JhbFRoaXMmJm5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeShBPT57bGV0IEk9KGdBLmdldChBKXx8MCktMTtnQS5zZXQoQSxJKSxJPT09MCYmdEkoQSl9KTtmdW5jdGlvbiBRdChBLEkpe2xldCB0PShnQS5nZXQoSSl8fDApKzE7Z0Euc2V0KEksdCksckEmJnJBLnJlZ2lzdGVyKEEsSSxBKX1mdW5jdGlvbiBudChBKXtyQSYmckEudW5yZWdpc3RlcihBKX1mdW5jdGlvbiBwQShBLEk9W10sdD1mdW5jdGlvbigpe30pe2xldCBlPSExLGc9bmV3IFByb3h5KHQse2dldChyLGkpe2lmKHRBKGUpLGk9PT1ydClyZXR1cm4oKT0+e250KGcpLHRJKEEpLGU9ITB9O2lmKGk9PT0idGhlbiIpe2lmKEkubGVuZ3RoPT09MClyZXR1cm57dGhlbjooKT0+Z307bGV0IHM9TShBLHt0eXBlOiJHRVQiLHBhdGg6SS5tYXAoYT0+YS50b1N0cmluZygpKX0pLnRoZW4oYik7cmV0dXJuIHMudGhlbi5iaW5kKHMpfXJldHVybiBwQShBLFsuLi5JLGldKX0sc2V0KHIsaSxzKXt0QShlKTtsZXRbYSxuXT1pQShzKTtyZXR1cm4gTShBLHt0eXBlOiJTRVQiLHBhdGg6Wy4uLkksaV0ubWFwKEM9PkMudG9TdHJpbmcoKSksdmFsdWU6YX0sbikudGhlbihiKX0sYXBwbHkocixpLHMpe3RBKGUpO2xldCBhPUlbSS5sZW5ndGgtMV07aWYoYT09PWd0KXJldHVybiBNKEEse3R5cGU6IkVORFBPSU5UIn0pLnRoZW4oYik7aWYoYT09PSJiaW5kIilyZXR1cm4gcEEoQSxJLnNsaWNlKDAsLTEpKTtsZXRbbixDXT1fQShzKTtyZXR1cm4gTShBLHt0eXBlOiJBUFBMWSIscGF0aDpJLm1hcChvPT5vLnRvU3RyaW5nKCkpLGFyZ3VtZW50TGlzdDpufSxDKS50aGVuKGIpfSxjb25zdHJ1Y3QocixpKXt0QShlKTtsZXRbcyxhXT1fQShpKTtyZXR1cm4gTShBLHt0eXBlOiJDT05TVFJVQ1QiLHBhdGg6SS5tYXAobj0+bi50b1N0cmluZygpKSxhcmd1bWVudExpc3Q6c30sYSkudGhlbihiKX19KTtyZXR1cm4gUXQoZyxBKSxnfWZ1bmN0aW9uIEV0KEEpe3JldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLEEpfWZ1bmN0aW9uIF9BKEEpe2xldCBJPUEubWFwKGlBKTtyZXR1cm5bSS5tYXAodD0+dFswXSksRXQoSS5tYXAodD0+dFsxXSkpXX12YXIgZUk9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gU0EoQSxJKXtyZXR1cm4gZUkuc2V0KEEsSSksQX1mdW5jdGlvbiBhdChBKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihBLHtbdkFdOiEwfSl9ZnVuY3Rpb24gaUEoQSl7Zm9yKGxldFtJLHRdb2YgQUkpaWYodC5jYW5IYW5kbGUoQSkpe2xldFtlLGddPXQuc2VyaWFsaXplKEEpO3JldHVyblt7dHlwZToiSEFORExFUiIsbmFtZTpJLHZhbHVlOmV9LGddfXJldHVyblt7dHlwZToiUkFXIix2YWx1ZTpBfSxlSS5nZXQoQSl8fFtdXX1mdW5jdGlvbiBiKEEpe3N3aXRjaChBLnR5cGUpe2Nhc2UiSEFORExFUiI6cmV0dXJuIEFJLmdldChBLm5hbWUpLmRlc2VyaWFsaXplKEEudmFsdWUpO2Nhc2UiUkFXIjpyZXR1cm4gQS52YWx1ZX19ZnVuY3Rpb24gTShBLEksdCl7cmV0dXJuIG5ldyBQcm9taXNlKGU9PntsZXQgZz1jdCgpO0EuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gcihpKXshaS5kYXRhfHwhaS5kYXRhLmlkfHxpLmRhdGEuaWQhPT1nfHwoQS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixyKSxlKGkuZGF0YSkpfSksQS5zdGFydCYmQS5zdGFydCgpLEEucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbih7aWQ6Z30sSSksdCl9KX1mdW5jdGlvbiBjdCgpe3JldHVybiBuZXcgQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCk9Pk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKS5qb2luKCItIil9ZnVuY3Rpb24gVyhBLEkpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBBLmFwcGx5KEksYXJndW1lbnRzKX19dmFye3RvU3RyaW5nOmZ0fT1PYmplY3QucHJvdG90eXBlLHtnZXRQcm90b3R5cGVPZjpOQX09T2JqZWN0LENBPShBPT5JPT57bGV0IHQ9ZnQuY2FsbChJKTtyZXR1cm4gQVt0XXx8KEFbdF09dC5zbGljZSg4LC0xKS50b0xvd2VyQ2FzZSgpKX0pKE9iamVjdC5jcmVhdGUobnVsbCkpLFU9QT0+KEE9QS50b0xvd2VyQ2FzZSgpLEk9PkNBKEkpPT09QSksc0E9QT0+ST0+dHlwZW9mIEk9PT1BLHtpc0FycmF5OnF9PUFycmF5LFo9c0EoInVuZGVmaW5lZCIpO2Z1bmN0aW9uIGx0KEEpe3JldHVybiBBIT09bnVsbCYmIVooQSkmJkEuY29uc3RydWN0b3IhPT1udWxsJiYhWihBLmNvbnN0cnVjdG9yKSYmRihBLmNvbnN0cnVjdG9yLmlzQnVmZmVyKSYmQS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihBKX12YXIgb0k9VSgiQXJyYXlCdWZmZXIiKTtmdW5jdGlvbiBEdChBKXtsZXQgSTtyZXR1cm4gdHlwZW9mIEFycmF5QnVmZmVyPCJ1IiYmQXJyYXlCdWZmZXIuaXNWaWV3P0k9QXJyYXlCdWZmZXIuaXNWaWV3KEEpOkk9QSYmQS5idWZmZXImJm9JKEEuYnVmZmVyKSxJfXZhciB1dD1zQSgic3RyaW5nIiksRj1zQSgiZnVuY3Rpb24iKSxCST1zQSgibnVtYmVyIiksUUE9QT0+QSE9PW51bGwmJnR5cGVvZiBBPT0ib2JqZWN0IixodD1BPT5BPT09ITB8fEE9PT0hMSxCQT1BPT57aWYoQ0EoQSkhPT0ib2JqZWN0IilyZXR1cm4hMTtsZXQgST1OQShBKTtyZXR1cm4oST09PW51bGx8fEk9PT1PYmplY3QucHJvdG90eXBlfHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoSSk9PT1udWxsKSYmIShTeW1ib2wudG9TdHJpbmdUYWcgaW4gQSkmJiEoU3ltYm9sLml0ZXJhdG9yIGluIEEpfSxkdD1VKCJEYXRlIikseXQ9VSgiRmlsZSIpLHd0PVUoIkJsb2IiKSxtdD1VKCJGaWxlTGlzdCIpLHB0PUE9PlFBKEEpJiZGKEEucGlwZSksU3Q9QT0+e2xldCBJO3JldHVybiBBJiYodHlwZW9mIEZvcm1EYXRhPT0iZnVuY3Rpb24iJiZBIGluc3RhbmNlb2YgRm9ybURhdGF8fEYoQS5hcHBlbmQpJiYoKEk9Q0EoQSkpPT09ImZvcm1kYXRhInx8ST09PSJvYmplY3QiJiZGKEEudG9TdHJpbmcpJiZBLnRvU3RyaW5nKCk9PT0iW29iamVjdCBGb3JtRGF0YV0iKSl9LEZ0PVUoIlVSTFNlYXJjaFBhcmFtcyIpLFJ0PUE9PkEudHJpbT9BLnRyaW0oKTpBLnJlcGxhY2UoL15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nLCIiKTtmdW5jdGlvbiBWKEEsSSx7YWxsT3duS2V5czp0PSExfT17fSl7aWYoQT09PW51bGx8fHR5cGVvZiBBPiJ1IilyZXR1cm47bGV0IGUsZztpZih0eXBlb2YgQSE9Im9iamVjdCImJihBPVtBXSkscShBKSlmb3IoZT0wLGc9QS5sZW5ndGg7ZTxnO2UrKylJLmNhbGwobnVsbCxBW2VdLGUsQSk7ZWxzZXtsZXQgcj10P09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEEpOk9iamVjdC5rZXlzKEEpLGk9ci5sZW5ndGgscztmb3IoZT0wO2U8aTtlKyspcz1yW2VdLEkuY2FsbChudWxsLEFbc10scyxBKX19ZnVuY3Rpb24gQ0koQSxJKXtJPUkudG9Mb3dlckNhc2UoKTtsZXQgdD1PYmplY3Qua2V5cyhBKSxlPXQubGVuZ3RoLGc7Zm9yKDtlLS0gPjA7KWlmKGc9dFtlXSxJPT09Zy50b0xvd2VyQ2FzZSgpKXJldHVybiBnO3JldHVybiBudWxsfXZhciBzST10eXBlb2YgZ2xvYmFsVGhpczwidSI/Z2xvYmFsVGhpczp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6Z2xvYmFsLFFJPUE9PiFaKEEpJiZBIT09c0k7ZnVuY3Rpb24gUkEoKXtsZXR7Y2FzZWxlc3M6QX09UUkodGhpcykmJnRoaXN8fHt9LEk9e30sdD0oZSxnKT0+e2xldCByPUEmJkNJKEksZyl8fGc7QkEoSVtyXSkmJkJBKGUpP0lbcl09UkEoSVtyXSxlKTpCQShlKT9JW3JdPVJBKHt9LGUpOnEoZSk/SVtyXT1lLnNsaWNlKCk6SVtyXT1lfTtmb3IobGV0IGU9MCxnPWFyZ3VtZW50cy5sZW5ndGg7ZTxnO2UrKylhcmd1bWVudHNbZV0mJlYoYXJndW1lbnRzW2VdLHQpO3JldHVybiBJfXZhciBOdD0oQSxJLHQse2FsbE93bktleXM6ZX09e30pPT4oVihJLChnLHIpPT57dCYmRihnKT9BW3JdPVcoZyx0KTpBW3JdPWd9LHthbGxPd25LZXlzOmV9KSxBKSxVdD1BPT4oQS5jaGFyQ29kZUF0KDApPT09NjUyNzkmJihBPUEuc2xpY2UoMSkpLEEpLEd0PShBLEksdCxlKT0+e0EucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoSS5wcm90b3R5cGUsZSksQS5wcm90b3R5cGUuY29uc3RydWN0b3I9QSxPYmplY3QuZGVmaW5lUHJvcGVydHkoQSwic3VwZXIiLHt2YWx1ZTpJLnByb3RvdHlwZX0pLHQmJk9iamVjdC5hc3NpZ24oQS5wcm90b3R5cGUsdCl9LGt0PShBLEksdCxlKT0+e2xldCBnLHIsaSxzPXt9O2lmKEk9SXx8e30sQT09bnVsbClyZXR1cm4gSTtkb3tmb3IoZz1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhBKSxyPWcubGVuZ3RoO3ItLSA+MDspaT1nW3JdLCghZXx8ZShpLEEsSSkpJiYhc1tpXSYmKElbaV09QVtpXSxzW2ldPSEwKTtBPXQhPT0hMSYmTkEoQSl9d2hpbGUoQSYmKCF0fHx0KEEsSSkpJiZBIT09T2JqZWN0LnByb3RvdHlwZSk7cmV0dXJuIEl9LEx0PShBLEksdCk9PntBPVN0cmluZyhBKSwodD09PXZvaWQgMHx8dD5BLmxlbmd0aCkmJih0PUEubGVuZ3RoKSx0LT1JLmxlbmd0aDtsZXQgZT1BLmluZGV4T2YoSSx0KTtyZXR1cm4gZSE9PS0xJiZlPT09dH0sSnQ9QT0+e2lmKCFBKXJldHVybiBudWxsO2lmKHEoQSkpcmV0dXJuIEE7bGV0IEk9QS5sZW5ndGg7aWYoIUJJKEkpKXJldHVybiBudWxsO2xldCB0PW5ldyBBcnJheShJKTtmb3IoO0ktLSA+MDspdFtJXT1BW0ldO3JldHVybiB0fSxIdD0oQT0+ST0+QSYmSSBpbnN0YW5jZW9mIEEpKHR5cGVvZiBVaW50OEFycmF5PCJ1IiYmTkEoVWludDhBcnJheSkpLFl0PShBLEkpPT57bGV0IGU9KEEmJkFbU3ltYm9sLml0ZXJhdG9yXSkuY2FsbChBKSxnO2Zvcig7KGc9ZS5uZXh0KCkpJiYhZy5kb25lOyl7bGV0IHI9Zy52YWx1ZTtJLmNhbGwoQSxyWzBdLHJbMV0pfX0sYnQ9KEEsSSk9PntsZXQgdCxlPVtdO2Zvcig7KHQ9QS5leGVjKEkpKSE9PW51bGw7KWUucHVzaCh0KTtyZXR1cm4gZX0sTXQ9VSgiSFRNTEZvcm1FbGVtZW50IikscXQ9QT0+QS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1stX1xcc10oW2EtelxcZF0pKFxcdyopL2csZnVuY3Rpb24odCxlLGcpe3JldHVybiBlLnRvVXBwZXJDYXNlKCkrZ30pLHJJPSgoe2hhc093blByb3BlcnR5OkF9KT0+KEksdCk9PkEuY2FsbChJLHQpKShPYmplY3QucHJvdG90eXBlKSxLdD1VKCJSZWdFeHAiKSxuST0oQSxJKT0+e2xldCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKEEpLGU9e307Vih0LChnLHIpPT57bGV0IGk7KGk9SShnLHIsQSkpIT09ITEmJihlW3JdPWl8fGcpfSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQSxlKX0sT3Q9QT0+e25JKEEsKEksdCk9PntpZihGKEEpJiZbImFyZ3VtZW50cyIsImNhbGxlciIsImNhbGxlZSJdLmluZGV4T2YodCkhPT0tMSlyZXR1cm4hMTtsZXQgZT1BW3RdO2lmKEYoZSkpe2lmKEkuZW51bWVyYWJsZT0hMSwid3JpdGFibGUiaW4gSSl7SS53cml0YWJsZT0hMTtyZXR1cm59SS5zZXR8fChJLnNldD0oKT0+e3Rocm93IEVycm9yKCJDYW4gbm90IHJld3JpdGUgcmVhZC1vbmx5IG1ldGhvZCBcJyIrdCsiXCciKX0pfX0pfSxUdD0oQSxJKT0+e2xldCB0PXt9LGU9Zz0+e2cuZm9yRWFjaChyPT57dFtyXT0hMH0pfTtyZXR1cm4gcShBKT9lKEEpOmUoU3RyaW5nKEEpLnNwbGl0KEkpKSx0fSx4dD0oKT0+e30sUHQ9KEEsSSk9PihBPStBLE51bWJlci5pc0Zpbml0ZShBKT9BOkkpLEZBPSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsaUk9IjAxMjM0NTY3ODkiLEVJPXtESUdJVDppSSxBTFBIQTpGQSxBTFBIQV9ESUdJVDpGQStGQS50b1VwcGVyQ2FzZSgpK2lJfSxqdD0oQT0xNixJPUVJLkFMUEhBX0RJR0lUKT0+e2xldCB0PSIiLHtsZW5ndGg6ZX09STtmb3IoO0EtLTspdCs9SVtNYXRoLnJhbmRvbSgpKmV8MF07cmV0dXJuIHR9O2Z1bmN0aW9uIFd0KEEpe3JldHVybiEhKEEmJkYoQS5hcHBlbmQpJiZBW1N5bWJvbC50b1N0cmluZ1RhZ109PT0iRm9ybURhdGEiJiZBW1N5bWJvbC5pdGVyYXRvcl0pfXZhciBadD1BPT57bGV0IEk9bmV3IEFycmF5KDEwKSx0PShlLGcpPT57aWYoUUEoZSkpe2lmKEkuaW5kZXhPZihlKT49MClyZXR1cm47aWYoISgidG9KU09OImluIGUpKXtJW2ddPWU7bGV0IHI9cShlKT9bXTp7fTtyZXR1cm4gVihlLChpLHMpPT57bGV0IGE9dChpLGcrMSk7IVooYSkmJihyW3NdPWEpfSksSVtnXT12b2lkIDAscn19cmV0dXJuIGV9O3JldHVybiB0KEEsMCl9LFZ0PVUoIkFzeW5jRnVuY3Rpb24iKSxYdD1BPT5BJiYoUUEoQSl8fEYoQSkpJiZGKEEudGhlbikmJkYoQS5jYXRjaCksQj17aXNBcnJheTpxLGlzQXJyYXlCdWZmZXI6b0ksaXNCdWZmZXI6bHQsaXNGb3JtRGF0YTpTdCxpc0FycmF5QnVmZmVyVmlldzpEdCxpc1N0cmluZzp1dCxpc051bWJlcjpCSSxpc0Jvb2xlYW46aHQsaXNPYmplY3Q6UUEsaXNQbGFpbk9iamVjdDpCQSxpc1VuZGVmaW5lZDpaLGlzRGF0ZTpkdCxpc0ZpbGU6eXQsaXNCbG9iOnd0LGlzUmVnRXhwOkt0LGlzRnVuY3Rpb246Rixpc1N0cmVhbTpwdCxpc1VSTFNlYXJjaFBhcmFtczpGdCxpc1R5cGVkQXJyYXk6SHQsaXNGaWxlTGlzdDptdCxmb3JFYWNoOlYsbWVyZ2U6UkEsZXh0ZW5kOk50LHRyaW06UnQsc3RyaXBCT006VXQsaW5oZXJpdHM6R3QsdG9GbGF0T2JqZWN0Omt0LGtpbmRPZjpDQSxraW5kT2ZUZXN0OlUsZW5kc1dpdGg6THQsdG9BcnJheTpKdCxmb3JFYWNoRW50cnk6WXQsbWF0Y2hBbGw6YnQsaXNIVE1MRm9ybTpNdCxoYXNPd25Qcm9wZXJ0eTpySSxoYXNPd25Qcm9wOnJJLHJlZHVjZURlc2NyaXB0b3JzOm5JLGZyZWV6ZU1ldGhvZHM6T3QsdG9PYmplY3RTZXQ6VHQsdG9DYW1lbENhc2U6cXQsbm9vcDp4dCx0b0Zpbml0ZU51bWJlcjpQdCxmaW5kS2V5OkNJLGdsb2JhbDpzSSxpc0NvbnRleHREZWZpbmVkOlFJLEFMUEhBQkVUOkVJLGdlbmVyYXRlU3RyaW5nOmp0LGlzU3BlY0NvbXBsaWFudEZvcm06V3QsdG9KU09OT2JqZWN0Olp0LGlzQXN5bmNGbjpWdCxpc1RoZW5hYmxlOlh0fTtmdW5jdGlvbiBLKEEsSSx0LGUsZyl7RXJyb3IuY2FsbCh0aGlzKSxFcnJvci5jYXB0dXJlU3RhY2tUcmFjZT9FcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLHRoaXMuY29uc3RydWN0b3IpOnRoaXMuc3RhY2s9bmV3IEVycm9yKCkuc3RhY2ssdGhpcy5tZXNzYWdlPUEsdGhpcy5uYW1lPSJBeGlvc0Vycm9yIixJJiYodGhpcy5jb2RlPUkpLHQmJih0aGlzLmNvbmZpZz10KSxlJiYodGhpcy5yZXF1ZXN0PWUpLGcmJih0aGlzLnJlc3BvbnNlPWcpfUIuaW5oZXJpdHMoSyxFcnJvcix7dG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOkIudG9KU09OT2JqZWN0KHRoaXMuY29uZmlnKSxjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5yZXNwb25zZSYmdGhpcy5yZXNwb25zZS5zdGF0dXM/dGhpcy5yZXNwb25zZS5zdGF0dXM6bnVsbH19fSk7dmFyIGFJPUsucHJvdG90eXBlLGNJPXt9O1siRVJSX0JBRF9PUFRJT05fVkFMVUUiLCJFUlJfQkFEX09QVElPTiIsIkVDT05OQUJPUlRFRCIsIkVUSU1FRE9VVCIsIkVSUl9ORVRXT1JLIiwiRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUyIsIkVSUl9ERVBSRUNBVEVEIiwiRVJSX0JBRF9SRVNQT05TRSIsIkVSUl9CQURfUkVRVUVTVCIsIkVSUl9DQU5DRUxFRCIsIkVSUl9OT1RfU1VQUE9SVCIsIkVSUl9JTlZBTElEX1VSTCJdLmZvckVhY2goQT0+e2NJW0FdPXt2YWx1ZTpBfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEssY0kpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhSSwiaXNBeGlvc0Vycm9yIix7dmFsdWU6ITB9KTtLLmZyb209KEEsSSx0LGUsZyxyKT0+e2xldCBpPU9iamVjdC5jcmVhdGUoYUkpO3JldHVybiBCLnRvRmxhdE9iamVjdChBLGksZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT1FcnJvci5wcm90b3R5cGV9LHM9PnMhPT0iaXNBeGlvc0Vycm9yIiksSy5jYWxsKGksQS5tZXNzYWdlLEksdCxlLGcpLGkuY2F1c2U9QSxpLm5hbWU9QS5uYW1lLHImJk9iamVjdC5hc3NpZ24oaSxyKSxpfTt2YXIgbD1LO3ZhciBuQT1udWxsO2Z1bmN0aW9uIFVBKEEpe3JldHVybiBCLmlzUGxhaW5PYmplY3QoQSl8fEIuaXNBcnJheShBKX1mdW5jdGlvbiBsSShBKXtyZXR1cm4gQi5lbmRzV2l0aChBLCJbXSIpP0Euc2xpY2UoMCwtMik6QX1mdW5jdGlvbiBmSShBLEksdCl7cmV0dXJuIEE/QS5jb25jYXQoSSkubWFwKGZ1bmN0aW9uKGcscil7cmV0dXJuIGc9bEkoZyksIXQmJnI/IlsiK2crIl0iOmd9KS5qb2luKHQ/Ii4iOiIiKTpJfWZ1bmN0aW9uIHp0KEEpe3JldHVybiBCLmlzQXJyYXkoQSkmJiFBLnNvbWUoVUEpfXZhciBfdD1CLnRvRmxhdE9iamVjdChCLHt9LG51bGwsZnVuY3Rpb24oSSl7cmV0dXJuL15pc1tBLVpdLy50ZXN0KEkpfSk7ZnVuY3Rpb24gdnQoQSxJLHQpe2lmKCFCLmlzT2JqZWN0KEEpKXRocm93IG5ldyBUeXBlRXJyb3IoInRhcmdldCBtdXN0IGJlIGFuIG9iamVjdCIpO0k9SXx8bmV3KG5BfHxGb3JtRGF0YSksdD1CLnRvRmxhdE9iamVjdCh0LHttZXRhVG9rZW5zOiEwLGRvdHM6ITEsaW5kZXhlczohMX0sITEsZnVuY3Rpb24oYyx1KXtyZXR1cm4hQi5pc1VuZGVmaW5lZCh1W2NdKX0pO2xldCBlPXQubWV0YVRva2VucyxnPXQudmlzaXRvcnx8QyxyPXQuZG90cyxpPXQuaW5kZXhlcyxhPSh0LkJsb2J8fHR5cGVvZiBCbG9iPCJ1IiYmQmxvYikmJkIuaXNTcGVjQ29tcGxpYW50Rm9ybShJKTtpZighQi5pc0Z1bmN0aW9uKGcpKXRocm93IG5ldyBUeXBlRXJyb3IoInZpc2l0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uIik7ZnVuY3Rpb24gbihFKXtpZihFPT09bnVsbClyZXR1cm4iIjtpZihCLmlzRGF0ZShFKSlyZXR1cm4gRS50b0lTT1N0cmluZygpO2lmKCFhJiZCLmlzQmxvYihFKSl0aHJvdyBuZXcgbCgiQmxvYiBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgYSBCdWZmZXIgaW5zdGVhZC4iKTtyZXR1cm4gQi5pc0FycmF5QnVmZmVyKEUpfHxCLmlzVHlwZWRBcnJheShFKT9hJiZ0eXBlb2YgQmxvYj09ImZ1bmN0aW9uIj9uZXcgQmxvYihbRV0pOkJ1ZmZlci5mcm9tKEUpOkV9ZnVuY3Rpb24gQyhFLGMsdSl7bGV0IGQ9RTtpZihFJiYhdSYmdHlwZW9mIEU9PSJvYmplY3QiKXtpZihCLmVuZHNXaXRoKGMsInt9IikpYz1lP2M6Yy5zbGljZSgwLC0yKSxFPUpTT04uc3RyaW5naWZ5KEUpO2Vsc2UgaWYoQi5pc0FycmF5KEUpJiZ6dChFKXx8KEIuaXNGaWxlTGlzdChFKXx8Qi5lbmRzV2l0aChjLCJbXSIpKSYmKGQ9Qi50b0FycmF5KEUpKSlyZXR1cm4gYz1sSShjKSxkLmZvckVhY2goZnVuY3Rpb24oTixJdCl7IShCLmlzVW5kZWZpbmVkKE4pfHxOPT09bnVsbCkmJkkuYXBwZW5kKGk9PT0hMD9mSShbY10sSXQscik6aT09PW51bGw/YzpjKyJbXSIsbihOKSl9KSwhMX1yZXR1cm4gVUEoRSk/ITA6KEkuYXBwZW5kKGZJKHUsYyxyKSxuKEUpKSwhMSl9bGV0IG89W10sZj1PYmplY3QuYXNzaWduKF90LHtkZWZhdWx0VmlzaXRvcjpDLGNvbnZlcnRWYWx1ZTpuLGlzVmlzaXRhYmxlOlVBfSk7ZnVuY3Rpb24gUShFLGMpe2lmKCFCLmlzVW5kZWZpbmVkKEUpKXtpZihvLmluZGV4T2YoRSkhPT0tMSl0aHJvdyBFcnJvcigiQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGluICIrYy5qb2luKCIuIikpO28ucHVzaChFKSxCLmZvckVhY2goRSxmdW5jdGlvbihkLFIpeyghKEIuaXNVbmRlZmluZWQoZCl8fGQ9PT1udWxsKSYmZy5jYWxsKEksZCxCLmlzU3RyaW5nKFIpP1IudHJpbSgpOlIsYyxmKSk9PT0hMCYmUShkLGM/Yy5jb25jYXQoUik6W1JdKX0pLG8ucG9wKCl9fWlmKCFCLmlzT2JqZWN0KEEpKXRocm93IG5ldyBUeXBlRXJyb3IoImRhdGEgbXVzdCBiZSBhbiBvYmplY3QiKTtyZXR1cm4gUShBKSxJfXZhciBMPXZ0O2Z1bmN0aW9uIERJKEEpe2xldCBJPXsiISI6IiUyNTIxIiwiXCciOiIlMjUyNyIsIigiOiIlMjUyOCIsIikiOiIlMjUyOSIsIn4iOiIlMjU3RSIsIiUyNTIwIjoiKyIsIiUyNTAwIjoiXFwwIn07cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChBKS5yZXBsYWNlKC9bIVwnKCl+XXwlMjUyMHwlMjUwMC9nLGZ1bmN0aW9uKGUpe3JldHVybiBJW2VdfSl9ZnVuY3Rpb24gdUkoQSxJKXt0aGlzLl9wYWlycz1bXSxBJiZMKEEsdGhpcyxJKX12YXIgaEk9dUkucHJvdG90eXBlO2hJLmFwcGVuZD1mdW5jdGlvbihJLHQpe3RoaXMuX3BhaXJzLnB1c2goW0ksdF0pfTtoSS50b1N0cmluZz1mdW5jdGlvbihJKXtsZXQgdD1JP2Z1bmN0aW9uKGUpe3JldHVybiBJLmNhbGwodGhpcyxlLERJKX06REk7cmV0dXJuIHRoaXMuX3BhaXJzLm1hcChmdW5jdGlvbihnKXtyZXR1cm4gdChnWzBdKSsiPSIrdChnWzFdKX0sIiIpLmpvaW4oIiYiKX07dmFyIEVBPXVJO2Z1bmN0aW9uICR0KEEpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoQSkucmVwbGFjZSgvJTI1M0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjUyNC9nLCIkIikucmVwbGFjZSgvJTI1MkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjUyMC9nLCIrIikucmVwbGFjZSgvJTI1NUIvZ2ksIlsiKS5yZXBsYWNlKC8lMjU1RC9naSwiXSIpfWZ1bmN0aW9uIFgoQSxJLHQpe2lmKCFJKXJldHVybiBBO2xldCBlPXQmJnQuZW5jb2RlfHwkdCxnPXQmJnQuc2VyaWFsaXplLHI7aWYoZz9yPWcoSSx0KTpyPUIuaXNVUkxTZWFyY2hQYXJhbXMoSSk/SS50b1N0cmluZygpOm5ldyBFQShJLHQpLnRvU3RyaW5nKGUpLHIpe2xldCBpPUEuaW5kZXhPZigiJTIzIik7aSE9PS0xJiYoQT1BLnNsaWNlKDAsaSkpLEErPShBLmluZGV4T2YoIj8iKT09PS0xPyI/IjoiJiIpK3J9cmV0dXJuIEF9dmFyIEdBPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5oYW5kbGVycz1bXX11c2UoSSx0LGUpe3JldHVybiB0aGlzLmhhbmRsZXJzLnB1c2goe2Z1bGZpbGxlZDpJLHJlamVjdGVkOnQsc3luY2hyb25vdXM6ZT9lLnN5bmNocm9ub3VzOiExLHJ1bldoZW46ZT9lLnJ1bldoZW46bnVsbH0pLHRoaXMuaGFuZGxlcnMubGVuZ3RoLTF9ZWplY3QoSSl7dGhpcy5oYW5kbGVyc1tJXSYmKHRoaXMuaGFuZGxlcnNbSV09bnVsbCl9Y2xlYXIoKXt0aGlzLmhhbmRsZXJzJiYodGhpcy5oYW5kbGVycz1bXSl9Zm9yRWFjaChJKXtCLmZvckVhY2godGhpcy5oYW5kbGVycyxmdW5jdGlvbihlKXtlIT09bnVsbCYmSShlKX0pfX0sa0E9R0E7dmFyIGFBPXtzaWxlbnRKU09OUGFyc2luZzohMCxmb3JjZWRKU09OUGFyc2luZzohMCxjbGFyaWZ5VGltZW91dEVycm9yOiExfTt2YXIgZEk9dHlwZW9mIFVSTFNlYXJjaFBhcmFtczwidSI/VVJMU2VhcmNoUGFyYW1zOkVBO3ZhciB5ST10eXBlb2YgRm9ybURhdGE8InUiP0Zvcm1EYXRhOm51bGw7dmFyIHdJPXR5cGVvZiBCbG9iPCJ1Ij9CbG9iOm51bGw7dmFyIG1JPXtpc0Jyb3dzZXI6ITAsY2xhc3Nlczp7VVJMU2VhcmNoUGFyYW1zOmRJLEZvcm1EYXRhOnlJLEJsb2I6d0l9LHByb3RvY29sczpbImh0dHAiLCJodHRwcyIsImZpbGUiLCJibG9iIiwidXJsIiwiZGF0YSJdfTt2YXIgTEE9e307ZXQoTEEse2hhc0Jyb3dzZXJFbnY6KCk9PnBJLGhhc1N0YW5kYXJkQnJvd3NlckVudjooKT0+QWUsaGFzU3RhbmRhcmRCcm93c2VyV2ViV29ya2VyRW52OigpPT5JZX0pO3ZhciBwST10eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9mIGRvY3VtZW50PCJ1IixBZT0oQT0+cEkmJlsiUmVhY3ROYXRpdmUiLCJOYXRpdmVTY3JpcHQiLCJOUyJdLmluZGV4T2YoQSk8MCkodHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvci5wcm9kdWN0KSxJZT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGU8InUiJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnR5cGVvZiBzZWxmLmltcG9ydFNjcmlwdHM9PSJmdW5jdGlvbiI7dmFyIHc9ey4uLkxBLC4uLm1JfTtmdW5jdGlvbiBKQShBLEkpe3JldHVybiBMKEEsbmV3IHcuY2xhc3Nlcy5VUkxTZWFyY2hQYXJhbXMsT2JqZWN0LmFzc2lnbih7dmlzaXRvcjpmdW5jdGlvbih0LGUsZyxyKXtyZXR1cm4gdy5pc05vZGUmJkIuaXNCdWZmZXIodCk/KHRoaXMuYXBwZW5kKGUsdC50b1N0cmluZygiYmFzZTY0IikpLCExKTpyLmRlZmF1bHRWaXNpdG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LEkpKX1mdW5jdGlvbiB0ZShBKXtyZXR1cm4gQi5tYXRjaEFsbCgvXFx3K3xcXFsoXFx3KildL2csQSkubWFwKEk9PklbMF09PT0iW10iPyIiOklbMV18fElbMF0pfWZ1bmN0aW9uIGVlKEEpe2xldCBJPXt9LHQ9T2JqZWN0LmtleXMoQSksZSxnPXQubGVuZ3RoLHI7Zm9yKGU9MDtlPGc7ZSsrKXI9dFtlXSxJW3JdPUFbcl07cmV0dXJuIEl9ZnVuY3Rpb24gZ2UoQSl7ZnVuY3Rpb24gSSh0LGUsZyxyKXtsZXQgaT10W3IrK10scz1OdW1iZXIuaXNGaW5pdGUoK2kpLGE9cj49dC5sZW5ndGg7cmV0dXJuIGk9IWkmJkIuaXNBcnJheShnKT9nLmxlbmd0aDppLGE/KEIuaGFzT3duUHJvcChnLGkpP2dbaV09W2dbaV0sZV06Z1tpXT1lLCFzKTooKCFnW2ldfHwhQi5pc09iamVjdChnW2ldKSkmJihnW2ldPVtdKSxJKHQsZSxnW2ldLHIpJiZCLmlzQXJyYXkoZ1tpXSkmJihnW2ldPWVlKGdbaV0pKSwhcyl9aWYoQi5pc0Zvcm1EYXRhKEEpJiZCLmlzRnVuY3Rpb24oQS5lbnRyaWVzKSl7bGV0IHQ9e307cmV0dXJuIEIuZm9yRWFjaEVudHJ5KEEsKGUsZyk9PntJKHRlKGUpLGcsdCwwKX0pLHR9cmV0dXJuIG51bGx9dmFyIGNBPWdlO2Z1bmN0aW9uIHJlKEEsSSx0KXtpZihCLmlzU3RyaW5nKEEpKXRyeXtyZXR1cm4oSXx8SlNPTi5wYXJzZSkoQSksQi50cmltKEEpfWNhdGNoKGUpe2lmKGUubmFtZSE9PSJTeW50YXhFcnJvciIpdGhyb3cgZX1yZXR1cm4odHx8SlNPTi5zdHJpbmdpZnkpKEEpfXZhciBIQT17dHJhbnNpdGlvbmFsOmFBLGFkYXB0ZXI6WyJ4aHIiLCJodHRwIl0sdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24oSSx0KXtsZXQgZT10LmdldENvbnRlbnRUeXBlKCl8fCIiLGc9ZS5pbmRleE9mKCJhcHBsaWNhdGlvbi9qc29uIik+LTEscj1CLmlzT2JqZWN0KEkpO2lmKHImJkIuaXNIVE1MRm9ybShJKSYmKEk9bmV3IEZvcm1EYXRhKEkpKSxCLmlzRm9ybURhdGEoSSkpcmV0dXJuIGcmJmc/SlNPTi5zdHJpbmdpZnkoY0EoSSkpOkk7aWYoQi5pc0FycmF5QnVmZmVyKEkpfHxCLmlzQnVmZmVyKEkpfHxCLmlzU3RyZWFtKEkpfHxCLmlzRmlsZShJKXx8Qi5pc0Jsb2IoSSkpcmV0dXJuIEk7aWYoQi5pc0FycmF5QnVmZmVyVmlldyhJKSlyZXR1cm4gSS5idWZmZXI7aWYoQi5pc1VSTFNlYXJjaFBhcmFtcyhJKSlyZXR1cm4gdC5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiLCExKSxJLnRvU3RyaW5nKCk7bGV0IHM7aWYocil7aWYoZS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKT4tMSlyZXR1cm4gSkEoSSx0aGlzLmZvcm1TZXJpYWxpemVyKS50b1N0cmluZygpO2lmKChzPUIuaXNGaWxlTGlzdChJKSl8fGUuaW5kZXhPZigibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpPi0xKXtsZXQgYT10aGlzLmVudiYmdGhpcy5lbnYuRm9ybURhdGE7cmV0dXJuIEwocz97ImZpbGVzW10iOkl9OkksYSYmbmV3IGEsdGhpcy5mb3JtU2VyaWFsaXplcil9fXJldHVybiByfHxnPyh0LnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi9qc29uIiwhMSkscmUoSSkpOkl9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24oSSl7bGV0IHQ9dGhpcy50cmFuc2l0aW9uYWx8fEhBLnRyYW5zaXRpb25hbCxlPXQmJnQuZm9yY2VkSlNPTlBhcnNpbmcsZz10aGlzLnJlc3BvbnNlVHlwZT09PSJqc29uIjtpZihJJiZCLmlzU3RyaW5nKEkpJiYoZSYmIXRoaXMucmVzcG9uc2VUeXBlfHxnKSl7bGV0IGk9ISh0JiZ0LnNpbGVudEpTT05QYXJzaW5nKSYmZzt0cnl7cmV0dXJuIEpTT04ucGFyc2UoSSl9Y2F0Y2gocyl7aWYoaSl0aHJvdyBzLm5hbWU9PT0iU3ludGF4RXJyb3IiP2wuZnJvbShzLGwuRVJSX0JBRF9SRVNQT05TRSx0aGlzLG51bGwsdGhpcy5yZXNwb25zZSk6c319cmV0dXJuIEl9XSx0aW1lb3V0OjAseHNyZkNvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLHhzcmZIZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4iLG1heENvbnRlbnRMZW5ndGg6LTEsbWF4Qm9keUxlbmd0aDotMSxlbnY6e0Zvcm1EYXRhOncuY2xhc3Nlcy5Gb3JtRGF0YSxCbG9iOncuY2xhc3Nlcy5CbG9ifSx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihJKXtyZXR1cm4gST49MjAwJiZJPDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiIsIkNvbnRlbnQtVHlwZSI6dm9pZCAwfX19O0IuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giXSxBPT57SEEuaGVhZGVyc1tBXT17fX0pO3ZhciBPPUhBO3ZhciBpZT1CLnRvT2JqZWN0U2V0KFsiYWdlIiwiYXV0aG9yaXphdGlvbiIsImNvbnRlbnQtbGVuZ3RoIiwiY29udGVudC10eXBlIiwiZXRhZyIsImV4cGlyZXMiLCJmcm9tIiwiaG9zdCIsImlmLW1vZGlmaWVkLXNpbmNlIiwiaWYtdW5tb2RpZmllZC1zaW5jZSIsImxhc3QtbW9kaWZpZWQiLCJsb2NhdGlvbiIsIm1heC1mb3J3YXJkcyIsInByb3h5LWF1dGhvcml6YXRpb24iLCJyZWZlcmVyIiwicmV0cnktYWZ0ZXIiLCJ1c2VyLWFnZW50Il0pLFNJPUE9PntsZXQgST17fSx0LGUsZztyZXR1cm4gQSYmQS5zcGxpdChgJTBBYCkuZm9yRWFjaChmdW5jdGlvbihpKXtnPWkuaW5kZXhPZigiOiIpLHQ9aS5zdWJzdHJpbmcoMCxnKS50cmltKCkudG9Mb3dlckNhc2UoKSxlPWkuc3Vic3RyaW5nKGcrMSkudHJpbSgpLCEoIXR8fElbdF0mJmllW3RdKSYmKHQ9PT0ic2V0LWNvb2tpZSI/SVt0XT9JW3RdLnB1c2goZSk6SVt0XT1bZV06SVt0XT1JW3RdP0lbdF0rIiwgIitlOmUpfSksSX07dmFyIEZJPVN5bWJvbCgiaW50ZXJuYWxzIik7ZnVuY3Rpb24geihBKXtyZXR1cm4gQSYmU3RyaW5nKEEpLnRyaW0oKS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIGZBKEEpe3JldHVybiBBPT09ITF8fEE9PW51bGw/QTpCLmlzQXJyYXkoQSk/QS5tYXAoZkEpOlN0cmluZyhBKX1mdW5jdGlvbiBvZShBKXtsZXQgST1PYmplY3QuY3JlYXRlKG51bGwpLHQ9LyhbXlxccyw7PV0rKVxccyooPzo9XFxzKihbXiw7XSspKT8vZyxlO2Zvcig7ZT10LmV4ZWMoQSk7KUlbZVsxXV09ZVsyXTtyZXR1cm4gSX12YXIgQmU9QT0+L15bLV9hLXpBLVowLTleYHx+LCElMjMkJSZcJyorLl0rJC8udGVzdChBLnRyaW0oKSk7ZnVuY3Rpb24gWUEoQSxJLHQsZSxnKXtpZihCLmlzRnVuY3Rpb24oZSkpcmV0dXJuIGUuY2FsbCh0aGlzLEksdCk7aWYoZyYmKEk9dCksISFCLmlzU3RyaW5nKEkpKXtpZihCLmlzU3RyaW5nKGUpKXJldHVybiBJLmluZGV4T2YoZSkhPT0tMTtpZihCLmlzUmVnRXhwKGUpKXJldHVybiBlLnRlc3QoSSl9fWZ1bmN0aW9uIENlKEEpe3JldHVybiBBLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLyhbYS16XFxkXSkoXFx3KikvZywoSSx0LGUpPT50LnRvVXBwZXJDYXNlKCkrZSl9ZnVuY3Rpb24gc2UoQSxJKXtsZXQgdD1CLnRvQ2FtZWxDYXNlKCIgIitJKTtbImdldCIsInNldCIsImhhcyJdLmZvckVhY2goZT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLGUrdCx7dmFsdWU6ZnVuY3Rpb24oZyxyLGkpe3JldHVybiB0aGlzW2VdLmNhbGwodGhpcyxJLGcscixpKX0sY29uZmlndXJhYmxlOiEwfSl9KX12YXIgVD1jbGFzc3tjb25zdHJ1Y3RvcihJKXtJJiZ0aGlzLnNldChJKX1zZXQoSSx0LGUpe2xldCBnPXRoaXM7ZnVuY3Rpb24gcihzLGEsbil7bGV0IEM9eihhKTtpZighQyl0aHJvdyBuZXcgRXJyb3IoImhlYWRlciBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nIik7bGV0IG89Qi5maW5kS2V5KGcsQyk7KCFvfHxnW29dPT09dm9pZCAwfHxuPT09ITB8fG49PT12b2lkIDAmJmdbb10hPT0hMSkmJihnW298fGFdPWZBKHMpKX1sZXQgaT0ocyxhKT0+Qi5mb3JFYWNoKHMsKG4sQyk9PnIobixDLGEpKTtyZXR1cm4gQi5pc1BsYWluT2JqZWN0KEkpfHxJIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9pKEksdCk6Qi5pc1N0cmluZyhJKSYmKEk9SS50cmltKCkpJiYhQmUoSSk/aShTSShJKSx0KTpJIT1udWxsJiZyKHQsSSxlKSx0aGlzfWdldChJLHQpe2lmKEk9eihJKSxJKXtsZXQgZT1CLmZpbmRLZXkodGhpcyxJKTtpZihlKXtsZXQgZz10aGlzW2VdO2lmKCF0KXJldHVybiBnO2lmKHQ9PT0hMClyZXR1cm4gb2UoZyk7aWYoQi5pc0Z1bmN0aW9uKHQpKXJldHVybiB0LmNhbGwodGhpcyxnLGUpO2lmKEIuaXNSZWdFeHAodCkpcmV0dXJuIHQuZXhlYyhnKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJwYXJzZXIgbXVzdCBiZSBib29sZWFufHJlZ2V4cHxmdW5jdGlvbiIpfX19aGFzKEksdCl7aWYoST16KEkpLEkpe2xldCBlPUIuZmluZEtleSh0aGlzLEkpO3JldHVybiEhKGUmJnRoaXNbZV0hPT12b2lkIDAmJighdHx8WUEodGhpcyx0aGlzW2VdLGUsdCkpKX1yZXR1cm4hMX1kZWxldGUoSSx0KXtsZXQgZT10aGlzLGc9ITE7ZnVuY3Rpb24gcihpKXtpZihpPXooaSksaSl7bGV0IHM9Qi5maW5kS2V5KGUsaSk7cyYmKCF0fHxZQShlLGVbc10scyx0KSkmJihkZWxldGUgZVtzXSxnPSEwKX19cmV0dXJuIEIuaXNBcnJheShJKT9JLmZvckVhY2gocik6cihJKSxnfWNsZWFyKEkpe2xldCB0PU9iamVjdC5rZXlzKHRoaXMpLGU9dC5sZW5ndGgsZz0hMTtmb3IoO2UtLTspe2xldCByPXRbZV07KCFJfHxZQSh0aGlzLHRoaXNbcl0scixJLCEwKSkmJihkZWxldGUgdGhpc1tyXSxnPSEwKX1yZXR1cm4gZ31ub3JtYWxpemUoSSl7bGV0IHQ9dGhpcyxlPXt9O3JldHVybiBCLmZvckVhY2godGhpcywoZyxyKT0+e2xldCBpPUIuZmluZEtleShlLHIpO2lmKGkpe3RbaV09ZkEoZyksZGVsZXRlIHRbcl07cmV0dXJufWxldCBzPUk/Q2Uocik6U3RyaW5nKHIpLnRyaW0oKTtzIT09ciYmZGVsZXRlIHRbcl0sdFtzXT1mQShnKSxlW3NdPSEwfSksdGhpc31jb25jYXQoLi4uSSl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY29uY2F0KHRoaXMsLi4uSSl9dG9KU09OKEkpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIEIuZm9yRWFjaCh0aGlzLChlLGcpPT57ZSE9bnVsbCYmZSE9PSExJiYodFtnXT1JJiZCLmlzQXJyYXkoZSk/ZS5qb2luKCIsICIpOmUpfSksdH1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKVtTeW1ib2wuaXRlcmF0b3JdKCl9dG9TdHJpbmcoKXtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSkubWFwKChbSSx0XSk9PkkrIjogIit0KS5qb2luKGAlMEFgKX1nZXRbU3ltYm9sLnRvU3RyaW5nVGFnXSgpe3JldHVybiJBeGlvc0hlYWRlcnMifXN0YXRpYyBmcm9tKEkpe3JldHVybiBJIGluc3RhbmNlb2YgdGhpcz9JOm5ldyB0aGlzKEkpfXN0YXRpYyBjb25jYXQoSSwuLi50KXtsZXQgZT1uZXcgdGhpcyhJKTtyZXR1cm4gdC5mb3JFYWNoKGc9PmUuc2V0KGcpKSxlfXN0YXRpYyBhY2Nlc3NvcihJKXtsZXQgZT0odGhpc1tGSV09dGhpc1tGSV09e2FjY2Vzc29yczp7fX0pLmFjY2Vzc29ycyxnPXRoaXMucHJvdG90eXBlO2Z1bmN0aW9uIHIoaSl7bGV0IHM9eihpKTtlW3NdfHwoc2UoZyxpKSxlW3NdPSEwKX1yZXR1cm4gQi5pc0FycmF5KEkpP0kuZm9yRWFjaChyKTpyKEkpLHRoaXN9fTtULmFjY2Vzc29yKFsiQ29udGVudC1UeXBlIiwiQ29udGVudC1MZW5ndGgiLCJBY2NlcHQiLCJBY2NlcHQtRW5jb2RpbmciLCJVc2VyLUFnZW50IiwiQXV0aG9yaXphdGlvbiJdKTtCLnJlZHVjZURlc2NyaXB0b3JzKFQucHJvdG90eXBlLCh7dmFsdWU6QX0sSSk9PntsZXQgdD1JWzBdLnRvVXBwZXJDYXNlKCkrSS5zbGljZSgxKTtyZXR1cm57Z2V0OigpPT5BLHNldChlKXt0aGlzW3RdPWV9fX0pO0IuZnJlZXplTWV0aG9kcyhUKTt2YXIgbT1UO2Z1bmN0aW9uIF8oQSxJKXtsZXQgdD10aGlzfHxPLGU9SXx8dCxnPW0uZnJvbShlLmhlYWRlcnMpLHI9ZS5kYXRhO3JldHVybiBCLmZvckVhY2goQSxmdW5jdGlvbihzKXtyPXMuY2FsbCh0LHIsZy5ub3JtYWxpemUoKSxJP0kuc3RhdHVzOnZvaWQgMCl9KSxnLm5vcm1hbGl6ZSgpLHJ9ZnVuY3Rpb24gdihBKXtyZXR1cm4hIShBJiZBLl9fQ0FOQ0VMX18pfWZ1bmN0aW9uIFJJKEEsSSx0KXtsLmNhbGwodGhpcyxBPz8iY2FuY2VsZWQiLGwuRVJSX0NBTkNFTEVELEksdCksdGhpcy5uYW1lPSJDYW5jZWxlZEVycm9yIn1CLmluaGVyaXRzKFJJLGwse19fQ0FOQ0VMX186ITB9KTt2YXIgSj1SSTtmdW5jdGlvbiBiQShBLEksdCl7bGV0IGU9dC5jb25maWcudmFsaWRhdGVTdGF0dXM7IXQuc3RhdHVzfHwhZXx8ZSh0LnN0YXR1cyk/QSh0KTpJKG5ldyBsKCJSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICIrdC5zdGF0dXMsW2wuRVJSX0JBRF9SRVFVRVNULGwuRVJSX0JBRF9SRVNQT05TRV1bTWF0aC5mbG9vcih0LnN0YXR1cy8xMDApLTRdLHQuY29uZmlnLHQucmVxdWVzdCx0KSl9dmFyIE5JPXcuaGFzU3RhbmRhcmRCcm93c2VyRW52P3t3cml0ZShBLEksdCxlLGcscil7bGV0IGk9W0ErIj0iK2VuY29kZVVSSUNvbXBvbmVudChJKV07Qi5pc051bWJlcih0KSYmaS5wdXNoKCJleHBpcmVzPSIrbmV3IERhdGUodCkudG9HTVRTdHJpbmcoKSksQi5pc1N0cmluZyhlKSYmaS5wdXNoKCJwYXRoPSIrZSksQi5pc1N0cmluZyhnKSYmaS5wdXNoKCJkb21haW49IitnKSxyPT09ITAmJmkucHVzaCgic2VjdXJlIiksZG9jdW1lbnQuY29va2llPWkuam9pbigiOyAiKX0scmVhZChBKXtsZXQgST1kb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgiKF58O1xcXFxzKikoIitBKyIpPShbXjtdKikiKSk7cmV0dXJuIEk/ZGVjb2RlVVJJQ29tcG9uZW50KElbM10pOm51bGx9LHJlbW92ZShBKXt0aGlzLndyaXRlKEEsIiIsRGF0ZS5ub3coKS04NjRlNSl9fTp7d3JpdGUoKXt9LHJlYWQoKXtyZXR1cm4gbnVsbH0scmVtb3ZlKCl7fX07ZnVuY3Rpb24gTUEoQSl7cmV0dXJuL14oW2Etel1bYS16XFxkK1xcLS5dKjopP1xcL1xcLy9pLnRlc3QoQSl9ZnVuY3Rpb24gcUEoQSxJKXtyZXR1cm4gST9BLnJlcGxhY2UoL1xcLyskLywiIikrIi8iK0kucmVwbGFjZSgvXlxcLysvLCIiKTpBfWZ1bmN0aW9uICQoQSxJKXtyZXR1cm4gQSYmIU1BKEkpP3FBKEEsSSk6SX12YXIgVUk9dy5oYXNTdGFuZGFyZEJyb3dzZXJFbnY/ZnVuY3Rpb24oKXtsZXQgST0vKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpLGU7ZnVuY3Rpb24gZyhyKXtsZXQgaT1yO3JldHVybiBJJiYodC5zZXRBdHRyaWJ1dGUoImhyZWYiLGkpLGk9dC5ocmVmKSx0LnNldEF0dHJpYnV0ZSgiaHJlZiIsaSkse2hyZWY6dC5ocmVmLHByb3RvY29sOnQucHJvdG9jb2w/dC5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6dC5ob3N0LHNlYXJjaDp0LnNlYXJjaD90LnNlYXJjaC5yZXBsYWNlKC9eXFw/LywiIik6IiIsaGFzaDp0Lmhhc2g/dC5oYXNoLnJlcGxhY2UoL14lMjMvLCIiKToiIixob3N0bmFtZTp0Lmhvc3RuYW1lLHBvcnQ6dC5wb3J0LHBhdGhuYW1lOnQucGF0aG5hbWUuY2hhckF0KDApPT09Ii8iP3QucGF0aG5hbWU6Ii8iK3QucGF0aG5hbWV9fXJldHVybiBlPWcod2luZG93LmxvY2F0aW9uLmhyZWYpLGZ1bmN0aW9uKGkpe2xldCBzPUIuaXNTdHJpbmcoaSk/ZyhpKTppO3JldHVybiBzLnByb3RvY29sPT09ZS5wcm90b2NvbCYmcy5ob3N0PT09ZS5ob3N0fX0oKTpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiEwfX0oKTtmdW5jdGlvbiBLQShBKXtsZXQgST0vXihbLStcXHddezEsMjV9KSg6P1xcL1xcL3w6KS8uZXhlYyhBKTtyZXR1cm4gSSYmSVsxXXx8IiJ9ZnVuY3Rpb24gUWUoQSxJKXtBPUF8fDEwO2xldCB0PW5ldyBBcnJheShBKSxlPW5ldyBBcnJheShBKSxnPTAscj0wLGk7cmV0dXJuIEk9SSE9PXZvaWQgMD9JOjFlMyxmdW5jdGlvbihhKXtsZXQgbj1EYXRlLm5vdygpLEM9ZVtyXTtpfHwoaT1uKSx0W2ddPWEsZVtnXT1uO2xldCBvPXIsZj0wO2Zvcig7byE9PWc7KWYrPXRbbysrXSxvPW8lQTtpZihnPShnKzEpJUEsZz09PXImJihyPShyKzEpJUEpLG4taTxJKXJldHVybjtsZXQgUT1DJiZuLUM7cmV0dXJuIFE/TWF0aC5yb3VuZChmKjFlMy9RKTp2b2lkIDB9fXZhciBHST1RZTtmdW5jdGlvbiBrSShBLEkpe2xldCB0PTAsZT1HSSg1MCwyNTApO3JldHVybiBnPT57bGV0IHI9Zy5sb2FkZWQsaT1nLmxlbmd0aENvbXB1dGFibGU/Zy50b3RhbDp2b2lkIDAscz1yLXQsYT1lKHMpLG49cjw9aTt0PXI7bGV0IEM9e2xvYWRlZDpyLHRvdGFsOmkscHJvZ3Jlc3M6aT9yL2k6dm9pZCAwLGJ5dGVzOnMscmF0ZTphfHx2b2lkIDAsZXN0aW1hdGVkOmEmJmkmJm4/KGktcikvYTp2b2lkIDAsZXZlbnQ6Z307Q1tJPyJkb3dubG9hZCI6InVwbG9hZCJdPSEwLEEoQyl9fXZhciBuZT10eXBlb2YgWE1MSHR0cFJlcXVlc3Q8InUiLExJPW5lJiZmdW5jdGlvbihBKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odCxlKXtsZXQgZz1BLmRhdGEscj1tLmZyb20oQS5oZWFkZXJzKS5ub3JtYWxpemUoKSx7cmVzcG9uc2VUeXBlOmksd2l0aFhTUkZUb2tlbjpzfT1BLGE7ZnVuY3Rpb24gbigpe0EuY2FuY2VsVG9rZW4mJkEuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUoYSksQS5zaWduYWwmJkEuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixhKX1sZXQgQztpZihCLmlzRm9ybURhdGEoZykpe2lmKHcuaGFzU3RhbmRhcmRCcm93c2VyRW52fHx3Lmhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudilyLnNldENvbnRlbnRUeXBlKCExKTtlbHNlIGlmKChDPXIuZ2V0Q29udGVudFR5cGUoKSkhPT0hMSl7bGV0W2MsLi4udV09Qz9DLnNwbGl0KCI7IikubWFwKGQ9PmQudHJpbSgpKS5maWx0ZXIoQm9vbGVhbik6W107ci5zZXRDb250ZW50VHlwZShbY3x8Im11bHRpcGFydC9mb3JtLWRhdGEiLC4uLnVdLmpvaW4oIjsgIikpfX1sZXQgbz1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoQS5hdXRoKXtsZXQgYz1BLmF1dGgudXNlcm5hbWV8fCIiLHU9QS5hdXRoLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChBLmF1dGgucGFzc3dvcmQpKToiIjtyLnNldCgiQXV0aG9yaXphdGlvbiIsIkJhc2ljICIrYnRvYShjKyI6Iit1KSl9bGV0IGY9JChBLmJhc2VVUkwsQS51cmwpO28ub3BlbihBLm1ldGhvZC50b1VwcGVyQ2FzZSgpLFgoZixBLnBhcmFtcyxBLnBhcmFtc1NlcmlhbGl6ZXIpLCEwKSxvLnRpbWVvdXQ9QS50aW1lb3V0O2Z1bmN0aW9uIFEoKXtpZighbylyZXR1cm47bGV0IGM9bS5mcm9tKCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiaW4gbyYmby5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSksZD17ZGF0YTohaXx8aT09PSJ0ZXh0Inx8aT09PSJqc29uIj9vLnJlc3BvbnNlVGV4dDpvLnJlc3BvbnNlLHN0YXR1czpvLnN0YXR1cyxzdGF0dXNUZXh0Om8uc3RhdHVzVGV4dCxoZWFkZXJzOmMsY29uZmlnOkEscmVxdWVzdDpvfTtiQShmdW5jdGlvbihOKXt0KE4pLG4oKX0sZnVuY3Rpb24oTil7ZShOKSxuKCl9LGQpLG89bnVsbH1pZigib25sb2FkZW5kImluIG8/by5vbmxvYWRlbmQ9UTpvLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpeyFvfHxvLnJlYWR5U3RhdGUhPT00fHxvLnN0YXR1cz09PTAmJiEoby5yZXNwb25zZVVSTCYmby5yZXNwb25zZVVSTC5pbmRleE9mKCJmaWxlOiIpPT09MCl8fHNldFRpbWVvdXQoUSl9LG8ub25hYm9ydD1mdW5jdGlvbigpe28mJihlKG5ldyBsKCJSZXF1ZXN0IGFib3J0ZWQiLGwuRUNPTk5BQk9SVEVELEEsbykpLG89bnVsbCl9LG8ub25lcnJvcj1mdW5jdGlvbigpe2UobmV3IGwoIk5ldHdvcmsgRXJyb3IiLGwuRVJSX05FVFdPUkssQSxvKSksbz1udWxsfSxvLm9udGltZW91dD1mdW5jdGlvbigpe2xldCB1PUEudGltZW91dD8idGltZW91dCBvZiAiK0EudGltZW91dCsibXMgZXhjZWVkZWQiOiJ0aW1lb3V0IGV4Y2VlZGVkIixkPUEudHJhbnNpdGlvbmFsfHxhQTtBLnRpbWVvdXRFcnJvck1lc3NhZ2UmJih1PUEudGltZW91dEVycm9yTWVzc2FnZSksZShuZXcgbCh1LGQuY2xhcmlmeVRpbWVvdXRFcnJvcj9sLkVUSU1FRE9VVDpsLkVDT05OQUJPUlRFRCxBLG8pKSxvPW51bGx9LHcuaGFzU3RhbmRhcmRCcm93c2VyRW52JiYocyYmQi5pc0Z1bmN0aW9uKHMpJiYocz1zKEEpKSxzfHxzIT09ITEmJlVJKGYpKSl7bGV0IGM9QS54c3JmSGVhZGVyTmFtZSYmQS54c3JmQ29va2llTmFtZSYmTkkucmVhZChBLnhzcmZDb29raWVOYW1lKTtjJiZyLnNldChBLnhzcmZIZWFkZXJOYW1lLGMpfWc9PT12b2lkIDAmJnIuc2V0Q29udGVudFR5cGUobnVsbCksInNldFJlcXVlc3RIZWFkZXIiaW4gbyYmQi5mb3JFYWNoKHIudG9KU09OKCksZnVuY3Rpb24odSxkKXtvLnNldFJlcXVlc3RIZWFkZXIoZCx1KX0pLEIuaXNVbmRlZmluZWQoQS53aXRoQ3JlZGVudGlhbHMpfHwoby53aXRoQ3JlZGVudGlhbHM9ISFBLndpdGhDcmVkZW50aWFscyksaSYmaSE9PSJqc29uIiYmKG8ucmVzcG9uc2VUeXBlPUEucmVzcG9uc2VUeXBlKSx0eXBlb2YgQS5vbkRvd25sb2FkUHJvZ3Jlc3M9PSJmdW5jdGlvbiImJm8uYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGtJKEEub25Eb3dubG9hZFByb2dyZXNzLCEwKSksdHlwZW9mIEEub25VcGxvYWRQcm9ncmVzcz09ImZ1bmN0aW9uIiYmby51cGxvYWQmJm8udXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixrSShBLm9uVXBsb2FkUHJvZ3Jlc3MpKSwoQS5jYW5jZWxUb2tlbnx8QS5zaWduYWwpJiYoYT1jPT57byYmKGUoIWN8fGMudHlwZT9uZXcgSihudWxsLEEsbyk6Yyksby5hYm9ydCgpLG89bnVsbCl9LEEuY2FuY2VsVG9rZW4mJkEuY2FuY2VsVG9rZW4uc3Vic2NyaWJlKGEpLEEuc2lnbmFsJiYoQS5zaWduYWwuYWJvcnRlZD9hKCk6QS5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGEpKSk7bGV0IEU9S0EoZik7aWYoRSYmdy5wcm90b2NvbHMuaW5kZXhPZihFKT09PS0xKXtlKG5ldyBsKCJVbnN1cHBvcnRlZCBwcm90b2NvbCAiK0UrIjoiLGwuRVJSX0JBRF9SRVFVRVNULEEpKTtyZXR1cm59by5zZW5kKGd8fG51bGwpfSl9O3ZhciBPQT17aHR0cDpuQSx4aHI6TEl9O0IuZm9yRWFjaChPQSwoQSxJKT0+e2lmKEEpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoQSwibmFtZSIse3ZhbHVlOkl9KX1jYXRjaHt9T2JqZWN0LmRlZmluZVByb3BlcnR5KEEsImFkYXB0ZXJOYW1lIix7dmFsdWU6SX0pfX0pO3ZhciBKST1BPT5gLSAke0F9YCxFZT1BPT5CLmlzRnVuY3Rpb24oQSl8fEE9PT1udWxsfHxBPT09ITEsbEE9e2dldEFkYXB0ZXI6QT0+e0E9Qi5pc0FycmF5KEEpP0E6W0FdO2xldHtsZW5ndGg6SX09QSx0LGUsZz17fTtmb3IobGV0IHI9MDtyPEk7cisrKXt0PUFbcl07bGV0IGk7aWYoZT10LCFFZSh0KSYmKGU9T0FbKGk9U3RyaW5nKHQpKS50b0xvd2VyQ2FzZSgpXSxlPT09dm9pZCAwKSl0aHJvdyBuZXcgbChgVW5rbm93biBhZGFwdGVyIFwnJHtpfVwnYCk7aWYoZSlicmVhaztnW2l8fCIlMjMiK3JdPWV9aWYoIWUpe2xldCByPU9iamVjdC5lbnRyaWVzKGcpLm1hcCgoW3MsYV0pPT5gYWRhcHRlciAke3N9IGArKGE9PT0hMT8iaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZW52aXJvbm1lbnQiOiJpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBidWlsZCIpKSxpPUk/ci5sZW5ndGg+MT9gc2luY2UgOiUwQWArci5tYXAoSkkpLmpvaW4oYCUwQWApOiIgIitKSShyWzBdKToiYXMgbm8gYWRhcHRlciBzcGVjaWZpZWQiO3Rocm93IG5ldyBsKCJUaGVyZSBpcyBubyBzdWl0YWJsZSBhZGFwdGVyIHRvIGRpc3BhdGNoIHRoZSByZXF1ZXN0ICIraSwiRVJSX05PVF9TVVBQT1JUIil9cmV0dXJuIGV9LGFkYXB0ZXJzOk9BfTtmdW5jdGlvbiBUQShBKXtpZihBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxBLnNpZ25hbCYmQS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgSihudWxsLEEpfWZ1bmN0aW9uIERBKEEpe3JldHVybiBUQShBKSxBLmhlYWRlcnM9bS5mcm9tKEEuaGVhZGVycyksQS5kYXRhPV8uY2FsbChBLEEudHJhbnNmb3JtUmVxdWVzdCksWyJwb3N0IiwicHV0IiwicGF0Y2giXS5pbmRleE9mKEEubWV0aG9kKSE9PS0xJiZBLmhlYWRlcnMuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsITEpLGxBLmdldEFkYXB0ZXIoQS5hZGFwdGVyfHxPLmFkYXB0ZXIpKEEpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIFRBKEEpLGUuZGF0YT1fLmNhbGwoQSxBLnRyYW5zZm9ybVJlc3BvbnNlLGUpLGUuaGVhZGVycz1tLmZyb20oZS5oZWFkZXJzKSxlfSxmdW5jdGlvbihlKXtyZXR1cm4gdihlKXx8KFRBKEEpLGUmJmUucmVzcG9uc2UmJihlLnJlc3BvbnNlLmRhdGE9Xy5jYWxsKEEsQS50cmFuc2Zvcm1SZXNwb25zZSxlLnJlc3BvbnNlKSxlLnJlc3BvbnNlLmhlYWRlcnM9bS5mcm9tKGUucmVzcG9uc2UuaGVhZGVycykpKSxQcm9taXNlLnJlamVjdChlKX0pfXZhciBIST1BPT5BIGluc3RhbmNlb2YgbT9BLnRvSlNPTigpOkE7ZnVuY3Rpb24gRyhBLEkpe0k9SXx8e307bGV0IHQ9e307ZnVuY3Rpb24gZShuLEMsbyl7cmV0dXJuIEIuaXNQbGFpbk9iamVjdChuKSYmQi5pc1BsYWluT2JqZWN0KEMpP0IubWVyZ2UuY2FsbCh7Y2FzZWxlc3M6b30sbixDKTpCLmlzUGxhaW5PYmplY3QoQyk/Qi5tZXJnZSh7fSxDKTpCLmlzQXJyYXkoQyk/Qy5zbGljZSgpOkN9ZnVuY3Rpb24gZyhuLEMsbyl7aWYoQi5pc1VuZGVmaW5lZChDKSl7aWYoIUIuaXNVbmRlZmluZWQobikpcmV0dXJuIGUodm9pZCAwLG4sbyl9ZWxzZSByZXR1cm4gZShuLEMsbyl9ZnVuY3Rpb24gcihuLEMpe2lmKCFCLmlzVW5kZWZpbmVkKEMpKXJldHVybiBlKHZvaWQgMCxDKX1mdW5jdGlvbiBpKG4sQyl7aWYoQi5pc1VuZGVmaW5lZChDKSl7aWYoIUIuaXNVbmRlZmluZWQobikpcmV0dXJuIGUodm9pZCAwLG4pfWVsc2UgcmV0dXJuIGUodm9pZCAwLEMpfWZ1bmN0aW9uIHMobixDLG8pe2lmKG8gaW4gSSlyZXR1cm4gZShuLEMpO2lmKG8gaW4gQSlyZXR1cm4gZSh2b2lkIDAsbil9bGV0IGE9e3VybDpyLG1ldGhvZDpyLGRhdGE6cixiYXNlVVJMOmksdHJhbnNmb3JtUmVxdWVzdDppLHRyYW5zZm9ybVJlc3BvbnNlOmkscGFyYW1zU2VyaWFsaXplcjppLHRpbWVvdXQ6aSx0aW1lb3V0TWVzc2FnZTppLHdpdGhDcmVkZW50aWFsczppLHdpdGhYU1JGVG9rZW46aSxhZGFwdGVyOmkscmVzcG9uc2VUeXBlOmkseHNyZkNvb2tpZU5hbWU6aSx4c3JmSGVhZGVyTmFtZTppLG9uVXBsb2FkUHJvZ3Jlc3M6aSxvbkRvd25sb2FkUHJvZ3Jlc3M6aSxkZWNvbXByZXNzOmksbWF4Q29udGVudExlbmd0aDppLG1heEJvZHlMZW5ndGg6aSxiZWZvcmVSZWRpcmVjdDppLHRyYW5zcG9ydDppLGh0dHBBZ2VudDppLGh0dHBzQWdlbnQ6aSxjYW5jZWxUb2tlbjppLHNvY2tldFBhdGg6aSxyZXNwb25zZUVuY29kaW5nOmksdmFsaWRhdGVTdGF0dXM6cyxoZWFkZXJzOihuLEMpPT5nKEhJKG4pLEhJKEMpLCEwKX07cmV0dXJuIEIuZm9yRWFjaChPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LEEsSSkpLGZ1bmN0aW9uKEMpe2xldCBvPWFbQ118fGcsZj1vKEFbQ10sSVtDXSxDKTtCLmlzVW5kZWZpbmVkKGYpJiZvIT09c3x8KHRbQ109Zil9KSx0fXZhciB1QT0iMS42LjIiO3ZhciB4QT17fTtbIm9iamVjdCIsImJvb2xlYW4iLCJudW1iZXIiLCJmdW5jdGlvbiIsInN0cmluZyIsInN5bWJvbCJdLmZvckVhY2goKEEsSSk9Pnt4QVtBXT1mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PT1BfHwiYSIrKEk8MT8ibiAiOiIgIikrQX19KTt2YXIgWUk9e307eEEudHJhbnNpdGlvbmFsPWZ1bmN0aW9uKEksdCxlKXtmdW5jdGlvbiBnKHIsaSl7cmV0dXJuIltBeGlvcyB2Iit1QSsiXSBUcmFuc2l0aW9uYWwgb3B0aW9uIFwnIityKyJcJyIraSsoZT8iLiAiK2U6IiIpfXJldHVybihyLGkscyk9PntpZihJPT09ITEpdGhyb3cgbmV3IGwoZyhpLCIgaGFzIGJlZW4gcmVtb3ZlZCIrKHQ/IiBpbiAiK3Q6IiIpKSxsLkVSUl9ERVBSRUNBVEVEKTtyZXR1cm4gdCYmIVlJW2ldJiYoWUlbaV09ITAsY29uc29sZS53YXJuKGcoaSwiIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdiIrdCsiIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlIikpKSxJP0kocixpLHMpOiEwfX07ZnVuY3Rpb24gYWUoQSxJLHQpe2lmKHR5cGVvZiBBIT0ib2JqZWN0Iil0aHJvdyBuZXcgbCgib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIsbC5FUlJfQkFEX09QVElPTl9WQUxVRSk7bGV0IGU9T2JqZWN0LmtleXMoQSksZz1lLmxlbmd0aDtmb3IoO2ctLSA+MDspe2xldCByPWVbZ10saT1JW3JdO2lmKGkpe2xldCBzPUFbcl0sYT1zPT09dm9pZCAwfHxpKHMscixBKTtpZihhIT09ITApdGhyb3cgbmV3IGwoIm9wdGlvbiAiK3IrIiBtdXN0IGJlICIrYSxsLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtjb250aW51ZX1pZih0IT09ITApdGhyb3cgbmV3IGwoIlVua25vd24gb3B0aW9uICIrcixsLkVSUl9CQURfT1BUSU9OKX19dmFyIGhBPXthc3NlcnRPcHRpb25zOmFlLHZhbGlkYXRvcnM6eEF9O3ZhciBIPWhBLnZhbGlkYXRvcnMseD1jbGFzc3tjb25zdHJ1Y3RvcihJKXt0aGlzLmRlZmF1bHRzPUksdGhpcy5pbnRlcmNlcHRvcnM9e3JlcXVlc3Q6bmV3IGtBLHJlc3BvbnNlOm5ldyBrQX19cmVxdWVzdChJLHQpe3R5cGVvZiBJPT0ic3RyaW5nIj8odD10fHx7fSx0LnVybD1JKTp0PUl8fHt9LHQ9Ryh0aGlzLmRlZmF1bHRzLHQpO2xldHt0cmFuc2l0aW9uYWw6ZSxwYXJhbXNTZXJpYWxpemVyOmcsaGVhZGVyczpyfT10O2UhPT12b2lkIDAmJmhBLmFzc2VydE9wdGlvbnMoZSx7c2lsZW50SlNPTlBhcnNpbmc6SC50cmFuc2l0aW9uYWwoSC5ib29sZWFuKSxmb3JjZWRKU09OUGFyc2luZzpILnRyYW5zaXRpb25hbChILmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6SC50cmFuc2l0aW9uYWwoSC5ib29sZWFuKX0sITEpLGchPW51bGwmJihCLmlzRnVuY3Rpb24oZyk/dC5wYXJhbXNTZXJpYWxpemVyPXtzZXJpYWxpemU6Z306aEEuYXNzZXJ0T3B0aW9ucyhnLHtlbmNvZGU6SC5mdW5jdGlvbixzZXJpYWxpemU6SC5mdW5jdGlvbn0sITApKSx0Lm1ldGhvZD0odC5tZXRob2R8fHRoaXMuZGVmYXVsdHMubWV0aG9kfHwiZ2V0IikudG9Mb3dlckNhc2UoKTtsZXQgaT1yJiZCLm1lcmdlKHIuY29tbW9uLHJbdC5tZXRob2RdKTtyJiZCLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwicG9zdCIsInB1dCIsInBhdGNoIiwiY29tbW9uIl0sRT0+e2RlbGV0ZSByW0VdfSksdC5oZWFkZXJzPW0uY29uY2F0KGkscik7bGV0IHM9W10sYT0hMDt0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goZnVuY3Rpb24oYyl7dHlwZW9mIGMucnVuV2hlbj09ImZ1bmN0aW9uIiYmYy5ydW5XaGVuKHQpPT09ITF8fChhPWEmJmMuc3luY2hyb25vdXMscy51bnNoaWZ0KGMuZnVsZmlsbGVkLGMucmVqZWN0ZWQpKX0pO2xldCBuPVtdO3RoaXMuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLmZvckVhY2goZnVuY3Rpb24oYyl7bi5wdXNoKGMuZnVsZmlsbGVkLGMucmVqZWN0ZWQpfSk7bGV0IEMsbz0wLGY7aWYoIWEpe2xldCBFPVtEQS5iaW5kKHRoaXMpLHZvaWQgMF07Zm9yKEUudW5zaGlmdC5hcHBseShFLHMpLEUucHVzaC5hcHBseShFLG4pLGY9RS5sZW5ndGgsQz1Qcm9taXNlLnJlc29sdmUodCk7bzxmOylDPUMudGhlbihFW28rK10sRVtvKytdKTtyZXR1cm4gQ31mPXMubGVuZ3RoO2xldCBRPXQ7Zm9yKG89MDtvPGY7KXtsZXQgRT1zW28rK10sYz1zW28rK107dHJ5e1E9RShRKX1jYXRjaCh1KXtjLmNhbGwodGhpcyx1KTticmVha319dHJ5e0M9REEuY2FsbCh0aGlzLFEpfWNhdGNoKEUpe3JldHVybiBQcm9taXNlLnJlamVjdChFKX1mb3Iobz0wLGY9bi5sZW5ndGg7bzxmOylDPUMudGhlbihuW28rK10sbltvKytdKTtyZXR1cm4gQ31nZXRVcmkoSSl7ST1HKHRoaXMuZGVmYXVsdHMsSSk7bGV0IHQ9JChJLmJhc2VVUkwsSS51cmwpO3JldHVybiBYKHQsSS5wYXJhbXMsSS5wYXJhbXNTZXJpYWxpemVyKX19O0IuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJvcHRpb25zIl0sZnVuY3Rpb24oSSl7eC5wcm90b3R5cGVbSV09ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KEcoZXx8e30se21ldGhvZDpJLHVybDp0LGRhdGE6KGV8fHt9KS5kYXRhfSkpfX0pO0IuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLGZ1bmN0aW9uKEkpe2Z1bmN0aW9uIHQoZSl7cmV0dXJuIGZ1bmN0aW9uKHIsaSxzKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KEcoc3x8e30se21ldGhvZDpJLGhlYWRlcnM6ZT97IkNvbnRlbnQtVHlwZSI6Im11bHRpcGFydC9mb3JtLWRhdGEifTp7fSx1cmw6cixkYXRhOml9KSl9fXgucHJvdG90eXBlW0ldPXQoKSx4LnByb3RvdHlwZVtJKyJGb3JtIl09dCghMCl9KTt2YXIgQUE9eDt2YXIgUEE9Y2xhc3MgQXtjb25zdHJ1Y3RvcihJKXtpZih0eXBlb2YgSSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJleGVjdXRvciBtdXN0IGJlIGEgZnVuY3Rpb24uIik7bGV0IHQ7dGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpe3Q9cn0pO2xldCBlPXRoaXM7dGhpcy5wcm9taXNlLnRoZW4oZz0+e2lmKCFlLl9saXN0ZW5lcnMpcmV0dXJuO2xldCByPWUuX2xpc3RlbmVycy5sZW5ndGg7Zm9yKDtyLS0gPjA7KWUuX2xpc3RlbmVyc1tyXShnKTtlLl9saXN0ZW5lcnM9bnVsbH0pLHRoaXMucHJvbWlzZS50aGVuPWc9PntsZXQgcixpPW5ldyBQcm9taXNlKHM9PntlLnN1YnNjcmliZShzKSxyPXN9KS50aGVuKGcpO3JldHVybiBpLmNhbmNlbD1mdW5jdGlvbigpe2UudW5zdWJzY3JpYmUocil9LGl9LEkoZnVuY3Rpb24ocixpLHMpe2UucmVhc29ufHwoZS5yZWFzb249bmV3IEoocixpLHMpLHQoZS5yZWFzb24pKX0pfXRocm93SWZSZXF1ZXN0ZWQoKXtpZih0aGlzLnJlYXNvbil0aHJvdyB0aGlzLnJlYXNvbn1zdWJzY3JpYmUoSSl7aWYodGhpcy5yZWFzb24pe0kodGhpcy5yZWFzb24pO3JldHVybn10aGlzLl9saXN0ZW5lcnM/dGhpcy5fbGlzdGVuZXJzLnB1c2goSSk6dGhpcy5fbGlzdGVuZXJzPVtJXX11bnN1YnNjcmliZShJKXtpZighdGhpcy5fbGlzdGVuZXJzKXJldHVybjtsZXQgdD10aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihJKTt0IT09LTEmJnRoaXMuX2xpc3RlbmVycy5zcGxpY2UodCwxKX1zdGF0aWMgc291cmNlKCl7bGV0IEk7cmV0dXJue3Rva2VuOm5ldyBBKGZ1bmN0aW9uKGcpe0k9Z30pLGNhbmNlbDpJfX19LGJJPVBBO2Z1bmN0aW9uIGpBKEEpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gQS5hcHBseShudWxsLHQpfX1mdW5jdGlvbiBXQShBKXtyZXR1cm4gQi5pc09iamVjdChBKSYmQS5pc0F4aW9zRXJyb3I9PT0hMH12YXIgWkE9e0NvbnRpbnVlOjEwMCxTd2l0Y2hpbmdQcm90b2NvbHM6MTAxLFByb2Nlc3Npbmc6MTAyLEVhcmx5SGludHM6MTAzLE9rOjIwMCxDcmVhdGVkOjIwMSxBY2NlcHRlZDoyMDIsTm9uQXV0aG9yaXRhdGl2ZUluZm9ybWF0aW9uOjIwMyxOb0NvbnRlbnQ6MjA0LFJlc2V0Q29udGVudDoyMDUsUGFydGlhbENvbnRlbnQ6MjA2LE11bHRpU3RhdHVzOjIwNyxBbHJlYWR5UmVwb3J0ZWQ6MjA4LEltVXNlZDoyMjYsTXVsdGlwbGVDaG9pY2VzOjMwMCxNb3ZlZFBlcm1hbmVudGx5OjMwMSxGb3VuZDozMDIsU2VlT3RoZXI6MzAzLE5vdE1vZGlmaWVkOjMwNCxVc2VQcm94eTozMDUsVW51c2VkOjMwNixUZW1wb3JhcnlSZWRpcmVjdDozMDcsUGVybWFuZW50UmVkaXJlY3Q6MzA4LEJhZFJlcXVlc3Q6NDAwLFVuYXV0aG9yaXplZDo0MDEsUGF5bWVudFJlcXVpcmVkOjQwMixGb3JiaWRkZW46NDAzLE5vdEZvdW5kOjQwNCxNZXRob2ROb3RBbGxvd2VkOjQwNSxOb3RBY2NlcHRhYmxlOjQwNixQcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6NDA3LFJlcXVlc3RUaW1lb3V0OjQwOCxDb25mbGljdDo0MDksR29uZTo0MTAsTGVuZ3RoUmVxdWlyZWQ6NDExLFByZWNvbmRpdGlvbkZhaWxlZDo0MTIsUGF5bG9hZFRvb0xhcmdlOjQxMyxVcmlUb29Mb25nOjQxNCxVbnN1cHBvcnRlZE1lZGlhVHlwZTo0MTUsUmFuZ2VOb3RTYXRpc2ZpYWJsZTo0MTYsRXhwZWN0YXRpb25GYWlsZWQ6NDE3LEltQVRlYXBvdDo0MTgsTWlzZGlyZWN0ZWRSZXF1ZXN0OjQyMSxVbnByb2Nlc3NhYmxlRW50aXR5OjQyMixMb2NrZWQ6NDIzLEZhaWxlZERlcGVuZGVuY3k6NDI0LFRvb0Vhcmx5OjQyNSxVcGdyYWRlUmVxdWlyZWQ6NDI2LFByZWNvbmRpdGlvblJlcXVpcmVkOjQyOCxUb29NYW55UmVxdWVzdHM6NDI5LFJlcXVlc3RIZWFkZXJGaWVsZHNUb29MYXJnZTo0MzEsVW5hdmFpbGFibGVGb3JMZWdhbFJlYXNvbnM6NDUxLEludGVybmFsU2VydmVyRXJyb3I6NTAwLE5vdEltcGxlbWVudGVkOjUwMSxCYWRHYXRld2F5OjUwMixTZXJ2aWNlVW5hdmFpbGFibGU6NTAzLEdhdGV3YXlUaW1lb3V0OjUwNCxIdHRwVmVyc2lvbk5vdFN1cHBvcnRlZDo1MDUsVmFyaWFudEFsc29OZWdvdGlhdGVzOjUwNixJbnN1ZmZpY2llbnRTdG9yYWdlOjUwNyxMb29wRGV0ZWN0ZWQ6NTA4LE5vdEV4dGVuZGVkOjUxMCxOZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZDo1MTF9O09iamVjdC5lbnRyaWVzKFpBKS5mb3JFYWNoKChbQSxJXSk9PntaQVtJXT1BfSk7dmFyIE1JPVpBO2Z1bmN0aW9uIHFJKEEpe2xldCBJPW5ldyBBQShBKSx0PVcoQUEucHJvdG90eXBlLnJlcXVlc3QsSSk7cmV0dXJuIEIuZXh0ZW5kKHQsQUEucHJvdG90eXBlLEkse2FsbE93bktleXM6ITB9KSxCLmV4dGVuZCh0LEksbnVsbCx7YWxsT3duS2V5czohMH0pLHQuY3JlYXRlPWZ1bmN0aW9uKGcpe3JldHVybiBxSShHKEEsZykpfSx0fXZhciBoPXFJKE8pO2guQXhpb3M9QUE7aC5DYW5jZWxlZEVycm9yPUo7aC5DYW5jZWxUb2tlbj1iSTtoLmlzQ2FuY2VsPXY7aC5WRVJTSU9OPXVBO2gudG9Gb3JtRGF0YT1MO2guQXhpb3NFcnJvcj1sO2guQ2FuY2VsPWguQ2FuY2VsZWRFcnJvcjtoLmFsbD1mdW5jdGlvbihJKXtyZXR1cm4gUHJvbWlzZS5hbGwoSSl9O2guc3ByZWFkPWpBO2guaXNBeGlvc0Vycm9yPVdBO2gubWVyZ2VDb25maWc9RztoLkF4aW9zSGVhZGVycz1tO2guZm9ybVRvSlNPTj1BPT5jQShCLmlzSFRNTEZvcm0oQSk/bmV3IEZvcm1EYXRhKEEpOkEpO2guZ2V0QWRhcHRlcj1sQS5nZXRBZGFwdGVyO2guSHR0cFN0YXR1c0NvZGU9TUk7aC5kZWZhdWx0PWg7dmFyIGRBPWg7dmFye0F4aW9zOm9pLEF4aW9zRXJyb3I6QmksQ2FuY2VsZWRFcnJvcjpDaSxpc0NhbmNlbDpzaSxDYW5jZWxUb2tlbjpRaSxWRVJTSU9OOm5pLGFsbDpFaSxDYW5jZWw6YWksaXNBeGlvc0Vycm9yOmNpLHNwcmVhZDpmaSx0b0Zvcm1EYXRhOmxpLEF4aW9zSGVhZGVyczpEaSxIdHRwU3RhdHVzQ29kZTp1aSxmb3JtVG9KU09OOmhpLGdldEFkYXB0ZXI6ZGksbWVyZ2VDb25maWc6eWl9PWRBO3ZhciBJQSxrLFhBLFZBPXtlbnY6e2Vtc2NyaXB0ZW5fbm90aWZ5X21lbW9yeV9ncm93dGg6ZnVuY3Rpb24oQSl7WEE9bmV3IFVpbnQ4QXJyYXkoay5leHBvcnRzLm1lbW9yeS5idWZmZXIpfX19LHlBPWNsYXNze2luaXQoKXtyZXR1cm4gSUF8fCh0eXBlb2YgZmV0Y2g8InUiP0lBPWZldGNoKCJkYXRhOmFwcGxpY2F0aW9uL3dhc207YmFzZTY0LCIrS0kpLnRoZW4oST0+SS5hcnJheUJ1ZmZlcigpKS50aGVuKEk9PldlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKEksVkEpKS50aGVuKHRoaXMuX2luaXQpOklBPVdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKEJ1ZmZlci5mcm9tKEtJLCJiYXNlNjQiKSxWQSkudGhlbih0aGlzLl9pbml0KSxJQSl9X2luaXQoSSl7az1JLmluc3RhbmNlLFZBLmVudi5lbXNjcmlwdGVuX25vdGlmeV9tZW1vcnlfZ3Jvd3RoKDApfWRlY29kZShJLHQ9MCl7aWYoIWspdGhyb3cgbmV3IEVycm9yKCJaU1RERGVjb2RlcjogQXdhaXQgLmluaXQoKSBiZWZvcmUgZGVjb2RpbmcuIik7bGV0IGU9SS5ieXRlTGVuZ3RoLGc9ay5leHBvcnRzLm1hbGxvYyhlKTtYQS5zZXQoSSxnKSx0PXR8fE51bWJlcihrLmV4cG9ydHMuWlNURF9maW5kRGVjb21wcmVzc2VkU2l6ZShnLGUpKTtsZXQgcj1rLmV4cG9ydHMubWFsbG9jKHQpLGk9ay5leHBvcnRzLlpTVERfZGVjb21wcmVzcyhyLHQsZyxlKSxzPVhBLnNsaWNlKHIscitpKTtyZXR1cm4gay5leHBvcnRzLmZyZWUoZyksay5leHBvcnRzLmZyZWUociksc319LEtJPSJBR0Z6YlFFQUFBQUJiZzVnQTM5L2Z3Ri9ZQUYvQVg5Z0FuOS9BR0FCZndCZ0JYOS9mMzkvQVg5Z0EzOS9md0JnQkg5L2YzOEJmMkFBQVg5Z0FuOS9BWDlnQjM5L2YzOS9mMzhCZjJBQ2YzOEJmbUFJZjM5L2YzOS9mMzhCZjJBRmYzOS9mMzhBWUE1L2YzOS9mMzkvZjM5L2YzOS9md0YvQWljQkEyVnVkaDlsYlhOamNtbHdkR1Z1WDI1dmRHbG1lVjl0WlcxdmNubGZaM0p2ZDNSb0FBTURJeUlIQUFBQkFRTUhBd0VBQ1FRQUJRRUlDQUVGQmdRRUJBTUdBQUFLQUFVTERBMEdCQVVCY0FFQkFRVUhBUUdBQW9DQUFnWUlBWDhCUVlDakJBc0hyZ0VMQm0xbGJXOXllUUlBQm0xaGJHeHZZd0FGQkdaeVpXVUFCZ3hhVTFSRVgybHpSWEp5YjNJQUVobGFVMVJFWDJacGJtUkVaV052YlhCeVpYTnpaV1JUYVhwbEFCd1BXbE5VUkY5a1pXTnZiWEJ5WlhOekFDSVpYMTlwYm1ScGNtVmpkRjltZFc1amRHbHZibDkwWVdKc1pRRUFFRjlmWlhKeWJtOWZiRzlqWVhScGIyNEFBUWx6ZEdGamExTmhkbVVBQnd4emRHRmphMUpsYzNSdmNtVUFDQXB6ZEdGamEwRnNiRzlqQUFrS2kvSUJJZ1VBUVlRZkN6TUJBWDhnQWdSQUlBQWhBd05BSUFNZ0FTMEFBRG9BQUNBRFFRRnFJUU1nQVVFQmFpRUJJQUpCQVdzaUFnMEFDd3NnQUFzcEFRRi9JQUlFUUNBQUlRTURRQ0FESUFFNkFBQWdBMEVCYWlFRElBSkJBV3NpQWcwQUN3c2dBQXRzQVFKL1FZQWZLQUlBSWdFZ0FFRUhha0Y0Y1NJQ2FpRUFBa0FnQWtFQUlBQWdBVTBiRFFBZ0FEOEFRUkIwU3dSQUlBQS9BRUVRZEd0Qi8vOERha0VRZGtBQVFYOUdCSDlCQUFWQkFCQUFRUUVMUlEwQkMwR0FIeUFBTmdJQUlBRVBDMEdFSDBFd05nSUFRWDhMdVNjQkMzOGpBRUVRYXlJS0pBQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUJCOUFGTkJFQkJpQjhvQWdBaUJrRVFJQUJCQzJwQmVIRWdBRUVMU1JzaUJVRURkaUlBZGlJQlFRTnhCRUFDUUNBQlFYOXpRUUZ4SUFCcUlnSkJBM1FpQVVHd0gyb2lBQ0FCUWJnZmFpZ0NBQ0lCS0FJSUlnUkdCRUJCaUI4Z0JrRitJQUozY1RZQ0FBd0JDeUFFSUFBMkFnd2dBQ0FFTmdJSUN5QUJRUWhxSVFBZ0FTQUNRUU4wSWdKQkEzSTJBZ1FnQVNBQ2FpSUJJQUVvQWdSQkFYSTJBZ1FNRHdzZ0JVR1FIeWdDQUNJSFRRMEJJQUVFUUFKQVFRSWdBSFFpQWtFQUlBSnJjaUFCSUFCMGNXZ2lBVUVEZENJQVFiQWZhaUlDSUFCQnVCOXFLQUlBSWdBb0FnZ2lCRVlFUUVHSUh5QUdRWDRnQVhkeElnWTJBZ0FNQVFzZ0JDQUNOZ0lNSUFJZ0JEWUNDQXNnQUNBRlFRTnlOZ0lFSUFBZ0JXb2lDQ0FCUVFOMElnRWdCV3NpQkVFQmNqWUNCQ0FBSUFGcUlBUTJBZ0FnQndSQUlBZEJlSEZCc0I5cUlRRkJuQjhvQWdBaEFnSi9JQVpCQVNBSFFRTjJkQ0lEY1VVRVFFR0lIeUFESUFaeU5nSUFJQUVNQVFzZ0FTZ0NDQXNoQXlBQklBSTJBZ2dnQXlBQ05nSU1JQUlnQVRZQ0RDQUNJQU0yQWdnTElBQkJDR29oQUVHY0h5QUlOZ0lBUVpBZklBUTJBZ0FNRHd0QmpCOG9BZ0FpQzBVTkFTQUxhRUVDZEVHNElXb29BZ0FpQWlnQ0JFRjRjU0FGYXlFRElBSWhBUU5BQWtBZ0FTZ0NFQ0lBUlFSQUlBRW9BaFFpQUVVTkFRc2dBQ2dDQkVGNGNTQUZheUlCSUFNZ0FTQURTU0lCR3lFRElBQWdBaUFCR3lFQ0lBQWhBUXdCQ3dzZ0FpZ0NHQ0VKSUFJZ0FpZ0NEQ0lFUndSQVFaZ2ZLQUlBR2lBQ0tBSUlJZ0FnQkRZQ0RDQUVJQUEyQWdnTURnc2dBa0VVYWlJQktBSUFJZ0JGQkVBZ0FpZ0NFQ0lBUlEwRElBSkJFR29oQVFzRFFDQUJJUWdnQUNJRVFSUnFJZ0VvQWdBaUFBMEFJQVJCRUdvaEFTQUVLQUlRSWdBTkFBc2dDRUVBTmdJQURBMExRWDhoQlNBQVFiOS9TdzBBSUFCQkMyb2lBRUY0Y1NFRlFZd2ZLQUlBSWdoRkRRQkJBQ0FGYXlFREFrQUNRQUpBQW45QkFDQUZRWUFDU1EwQUdrRWZJQVZCLy8vL0Iwc05BQm9nQlVFbUlBQkJDSFpuSWdCcmRrRUJjU0FBUVFGMGEwRSthZ3NpQjBFQ2RFRzRJV29vQWdBaUFVVUVRRUVBSVFBTUFRdEJBQ0VBSUFWQkdTQUhRUUYyYTBFQUlBZEJIMGNiZENFQ0EwQUNRQ0FCS0FJRVFYaHhJQVZySWdZZ0EwOE5BQ0FCSVFRZ0JpSUREUUJCQUNFRElBRWhBQXdEQ3lBQUlBRW9BaFFpQmlBR0lBRWdBa0VkZGtFRWNXb29BaEFpQVVZYklBQWdCaHNoQUNBQ1FRRjBJUUlnQVEwQUN3c2dBQ0FFY2tVRVFFRUFJUVJCQWlBSGRDSUFRUUFnQUd0eUlBaHhJZ0JGRFFNZ0FHaEJBblJCdUNGcUtBSUFJUUFMSUFCRkRRRUxBMEFnQUNnQ0JFRjRjU0FGYXlJQ0lBTkpJUUVnQWlBRElBRWJJUU1nQUNBRUlBRWJJUVFnQUNnQ0VDSUJCSDhnQVFVZ0FDZ0NGQXNpQUEwQUN3c2dCRVVOQUNBRFFaQWZLQUlBSUFWclR3MEFJQVFvQWhnaEJ5QUVJQVFvQWd3aUFrY0VRRUdZSHlnQ0FCb2dCQ2dDQ0NJQUlBSTJBZ3dnQWlBQU5nSUlEQXdMSUFSQkZHb2lBU2dDQUNJQVJRUkFJQVFvQWhBaUFFVU5BeUFFUVJCcUlRRUxBMEFnQVNFR0lBQWlBa0VVYWlJQktBSUFJZ0FOQUNBQ1FSQnFJUUVnQWlnQ0VDSUFEUUFMSUFaQkFEWUNBQXdMQ3lBRlFaQWZLQUlBSWdSTkJFQkJuQjhvQWdBaEFBSkFJQVFnQldzaUFVRVFUd1JBSUFBZ0JXb2lBaUFCUVFGeU5nSUVJQUFnQkdvZ0FUWUNBQ0FBSUFWQkEzSTJBZ1FNQVFzZ0FDQUVRUU55TmdJRUlBQWdCR29pQVNBQktBSUVRUUZ5TmdJRVFRQWhBa0VBSVFFTFFaQWZJQUUyQWdCQm5COGdBallDQUNBQVFRaHFJUUFNRFFzZ0JVR1VIeWdDQUNJQ1NRUkFRWlFmSUFJZ0JXc2lBVFlDQUVHZ0gwR2dIeWdDQUNJQUlBVnFJZ0kyQWdBZ0FpQUJRUUZ5TmdJRUlBQWdCVUVEY2pZQ0JDQUFRUWhxSVFBTURRdEJBQ0VBSUFWQkwyb2lBd0ovUWVBaUtBSUFCRUJCNkNJb0FnQU1BUXRCN0NKQ2Z6Y0NBRUhrSWtLQW9JQ0FnSUFFTndJQVFlQWlJQXBCREdwQmNIRkIyS3JWcWdWek5nSUFRZlFpUVFBMkFnQkJ4Q0pCQURZQ0FFR0FJQXNpQVdvaUJrRUFJQUZySWdoeElnRWdCVTBOREVIQUlpZ0NBQ0lFQkVCQnVDSW9BZ0FpQnlBQmFpSUpJQWROSUFRZ0NVbHlEUTBMQWtCQnhDSXRBQUJCQkhGRkJFQUNRQUpBQWtBQ1FFR2dIeWdDQUNJRUJFQkJ5Q0loQUFOQUlBUWdBQ2dDQUNJSFR3UkFJQWNnQUNnQ0JHb2dCRXNOQXdzZ0FDZ0NDQ0lBRFFBTEMwRUFFQVFpQWtGL1JnMERJQUVoQmtIa0lpZ0NBQ0lBUVFGcklnUWdBbkVFUUNBQklBSnJJQUlnQkdwQkFDQUFhM0ZxSVFZTElBVWdCazhOQTBIQUlpZ0NBQ0lBQkVCQnVDSW9BZ0FpQkNBR2FpSUlJQVJOSUFBZ0NFbHlEUVFMSUFZUUJDSUFJQUpIRFFFTUJRc2dCaUFDYXlBSWNTSUdFQVFpQWlBQUtBSUFJQUFvQWdScVJnMEJJQUloQUFzZ0FFRi9SZzBCSUFWQk1Hb2dCazBFUUNBQUlRSU1CQXRCNkNJb0FnQWlBaUFESUFacmFrRUFJQUpyY1NJQ0VBUkJmMFlOQVNBQ0lBWnFJUVlnQUNFQ0RBTUxJQUpCZjBjTkFndEJ4Q0pCeENJb0FnQkJCSEkyQWdBTElBRVFCQ0lDUVg5R1FRQVFCQ0lBUVg5R2NpQUFJQUpOY2cwRklBQWdBbXNpQmlBRlFTaHFUUTBGQzBHNElrRzRJaWdDQUNBR2FpSUFOZ0lBUWJ3aUtBSUFJQUJKQkVCQnZDSWdBRFlDQUFzQ1FFR2dIeWdDQUNJREJFQkJ5Q0loQUFOQUlBSWdBQ2dDQUNJQklBQW9BZ1FpQkdwR0RRSWdBQ2dDQ0NJQURRQUxEQVFMUVpnZktBSUFJZ0JCQUNBQUlBSk5HMFVFUUVHWUh5QUNOZ0lBQzBFQUlRQkJ6Q0lnQmpZQ0FFSElJaUFDTmdJQVFhZ2ZRWDgyQWdCQnJCOUI0Q0lvQWdBMkFnQkIxQ0pCQURZQ0FBTkFJQUJCQTNRaUFVRzRIMm9nQVVHd0gyb2lCRFlDQUNBQlFid2ZhaUFFTmdJQUlBQkJBV29pQUVFZ1J3MEFDMEdVSHlBR1FTaHJJZ0JCZUNBQ2EwRUhjU0lCYXlJRU5nSUFRYUFmSUFFZ0Ftb2lBVFlDQUNBQklBUkJBWEkyQWdRZ0FDQUNha0VvTmdJRVFhUWZRZkFpS0FJQU5nSUFEQVFMSUFJZ0EwMGdBU0FEUzNJTkFpQUFLQUlNUVFoeERRSWdBQ0FFSUFacU5nSUVRYUFmSUFOQmVDQURhMEVIY1NJQWFpSUJOZ0lBUVpRZlFaUWZLQUlBSUFacUlnSWdBR3NpQURZQ0FDQUJJQUJCQVhJMkFnUWdBaUFEYWtFb05nSUVRYVFmUWZBaUtBSUFOZ0lBREFNTFFRQWhCQXdLQzBFQUlRSU1DQXRCbUI4b0FnQWdBa3NFUUVHWUh5QUNOZ0lBQ3lBQ0lBWnFJUUZCeUNJaEFBSkFBa0FDUUFOQUlBRWdBQ2dDQUVjRVFDQUFLQUlJSWdBTkFRd0NDd3NnQUMwQURFRUljVVVOQVF0QnlDSWhBQU5BSUFNZ0FDZ0NBQ0lCVHdSQUlBRWdBQ2dDQkdvaUJDQURTdzBEQ3lBQUtBSUlJUUFNQUFzQUN5QUFJQUkyQWdBZ0FDQUFLQUlFSUFacU5nSUVJQUpCZUNBQ2EwRUhjV29pQnlBRlFRTnlOZ0lFSUFGQmVDQUJhMEVIY1dvaUJpQUZJQWRxSWdWcklRQWdBeUFHUmdSQVFhQWZJQVUyQWdCQmxCOUJsQjhvQWdBZ0FHb2lBRFlDQUNBRklBQkJBWEkyQWdRTUNBdEJuQjhvQWdBZ0JrWUVRRUdjSHlBRk5nSUFRWkFmUVpBZktBSUFJQUJxSWdBMkFnQWdCU0FBUVFGeU5nSUVJQUFnQldvZ0FEWUNBQXdJQ3lBR0tBSUVJZ05CQTNGQkFVY05CaUFEUVhoeElRa2dBMEgvQVUwRVFDQUdLQUlNSWdFZ0JpZ0NDQ0lDUmdSQVFZZ2ZRWWdmS0FJQVFYNGdBMEVEZG5keE5nSUFEQWNMSUFJZ0FUWUNEQ0FCSUFJMkFnZ01CZ3NnQmlnQ0dDRUlJQVlnQmlnQ0RDSUNSd1JBSUFZb0FnZ2lBU0FDTmdJTUlBSWdBVFlDQ0F3RkN5QUdRUlJxSWdFb0FnQWlBMFVFUUNBR0tBSVFJZ05GRFFRZ0JrRVFhaUVCQ3dOQUlBRWhCQ0FESWdKQkZHb2lBU2dDQUNJRERRQWdBa0VRYWlFQklBSW9BaEFpQXcwQUN5QUVRUUEyQWdBTUJBdEJsQjhnQmtFb2F5SUFRWGdnQW10QkIzRWlBV3NpQ0RZQ0FFR2dIeUFCSUFKcUlnRTJBZ0FnQVNBSVFRRnlOZ0lFSUFBZ0FtcEJLRFlDQkVHa0gwSHdJaWdDQURZQ0FDQURJQVJCSnlBRWEwRUhjV3BCTDJzaUFDQUFJQU5CRUdwSkd5SUJRUnMyQWdRZ0FVSFFJaWtDQURjQ0VDQUJRY2dpS1FJQU53SUlRZEFpSUFGQkNHbzJBZ0JCekNJZ0JqWUNBRUhJSWlBQ05nSUFRZFFpUVFBMkFnQWdBVUVZYWlFQUEwQWdBRUVITmdJRUlBQkJDR29nQUVFRWFpRUFJQVJKRFFBTElBRWdBMFlOQUNBQklBRW9BZ1JCZm5FMkFnUWdBeUFCSUFOcklnSkJBWEkyQWdRZ0FTQUNOZ0lBSUFKQi93Rk5CRUFnQWtGNGNVR3dIMm9oQUFKL1FZZ2ZLQUlBSWdGQkFTQUNRUU4yZENJQ2NVVUVRRUdJSHlBQklBSnlOZ0lBSUFBTUFRc2dBQ2dDQ0FzaEFTQUFJQU0yQWdnZ0FTQUROZ0lNSUFNZ0FEWUNEQ0FESUFFMkFnZ01BUXRCSHlFQUlBSkIvLy8vQjAwRVFDQUNRU1lnQWtFSWRtY2lBR3QyUVFGeElBQkJBWFJyUVQ1cUlRQUxJQU1nQURZQ0hDQURRZ0EzQWhBZ0FFRUNkRUc0SVdvaEFRSkFBa0JCakI4b0FnQWlCRUVCSUFCMElnWnhSUVJBUVl3ZklBUWdCbkkyQWdBZ0FTQUROZ0lBREFFTElBSkJHU0FBUVFGMmEwRUFJQUJCSDBjYmRDRUFJQUVvQWdBaEJBTkFJQVFpQVNnQ0JFRjRjU0FDUmcwQ0lBQkJIWFloQkNBQVFRRjBJUUFnQVNBRVFRUnhhaUlHS0FJUUlnUU5BQXNnQmlBRE5nSVFDeUFESUFFMkFoZ2dBeUFETmdJTUlBTWdBellDQ0F3QkN5QUJLQUlJSWdBZ0F6WUNEQ0FCSUFNMkFnZ2dBMEVBTmdJWUlBTWdBVFlDRENBRElBQTJBZ2dMUVpRZktBSUFJZ0FnQlUwTkFFR1VIeUFBSUFWcklnRTJBZ0JCb0I5Qm9COG9BZ0FpQUNBRmFpSUNOZ0lBSUFJZ0FVRUJjallDQkNBQUlBVkJBM0kyQWdRZ0FFRUlhaUVBREFnTFFZUWZRVEEyQWdCQkFDRUFEQWNMUVFBaEFnc2dDRVVOQUFKQUlBWW9BaHdpQVVFQ2RFRzRJV29pQkNnQ0FDQUdSZ1JBSUFRZ0FqWUNBQ0FDRFFGQmpCOUJqQjhvQWdCQmZpQUJkM0UyQWdBTUFnc2dDRUVRUVJRZ0NDZ0NFQ0FHUmh0cUlBSTJBZ0FnQWtVTkFRc2dBaUFJTmdJWUlBWW9BaEFpQVFSQUlBSWdBVFlDRUNBQklBSTJBaGdMSUFZb0FoUWlBVVVOQUNBQ0lBRTJBaFFnQVNBQ05nSVlDeUFBSUFscUlRQWdCaUFKYWlJR0tBSUVJUU1MSUFZZ0EwRitjVFlDQkNBRklBQkJBWEkyQWdRZ0FDQUZhaUFBTmdJQUlBQkIvd0ZOQkVBZ0FFRjRjVUd3SDJvaEFRSi9RWWdmS0FJQUlnSkJBU0FBUVFOMmRDSUFjVVVFUUVHSUh5QUFJQUp5TmdJQUlBRU1BUXNnQVNnQ0NBc2hBQ0FCSUFVMkFnZ2dBQ0FGTmdJTUlBVWdBVFlDRENBRklBQTJBZ2dNQVF0Qkh5RURJQUJCLy8vL0IwMEVRQ0FBUVNZZ0FFRUlkbWNpQVd0MlFRRnhJQUZCQVhSclFUNXFJUU1MSUFVZ0F6WUNIQ0FGUWdBM0FoQWdBMEVDZEVHNElXb2hBUUpBQWtCQmpCOG9BZ0FpQWtFQklBTjBJZ1J4UlFSQVFZd2ZJQUlnQkhJMkFnQWdBU0FGTmdJQURBRUxJQUJCR1NBRFFRRjJhMEVBSUFOQkgwY2JkQ0VESUFFb0FnQWhBZ05BSUFJaUFTZ0NCRUY0Y1NBQVJnMENJQU5CSFhZaEFpQURRUUYwSVFNZ0FTQUNRUVJ4YWlJRUtBSVFJZ0lOQUFzZ0JDQUZOZ0lRQ3lBRklBRTJBaGdnQlNBRk5nSU1JQVVnQlRZQ0NBd0JDeUFCS0FJSUlnQWdCVFlDRENBQklBVTJBZ2dnQlVFQU5nSVlJQVVnQVRZQ0RDQUZJQUEyQWdnTElBZEJDR29oQUF3Q0N3SkFJQWRGRFFBQ1FDQUVLQUljSWdCQkFuUkJ1Q0ZxSWdFb0FnQWdCRVlFUUNBQklBSTJBZ0FnQWcwQlFZd2ZJQWhCZmlBQWQzRWlDRFlDQUF3Q0N5QUhRUkJCRkNBSEtBSVFJQVJHRzJvZ0FqWUNBQ0FDUlEwQkN5QUNJQWMyQWhnZ0JDZ0NFQ0lBQkVBZ0FpQUFOZ0lRSUFBZ0FqWUNHQXNnQkNnQ0ZDSUFSUTBBSUFJZ0FEWUNGQ0FBSUFJMkFoZ0xBa0FnQTBFUFRRUkFJQVFnQXlBRmFpSUFRUU55TmdJRUlBQWdCR29pQUNBQUtBSUVRUUZ5TmdJRURBRUxJQVFnQlVFRGNqWUNCQ0FFSUFWcUlnSWdBMEVCY2pZQ0JDQUNJQU5xSUFNMkFnQWdBMEgvQVUwRVFDQURRWGh4UWJBZmFpRUFBbjlCaUI4b0FnQWlBVUVCSUFOQkEzWjBJZ054UlFSQVFZZ2ZJQUVnQTNJMkFnQWdBQXdCQ3lBQUtBSUlDeUVCSUFBZ0FqWUNDQ0FCSUFJMkFnd2dBaUFBTmdJTUlBSWdBVFlDQ0F3QkMwRWZJUUFnQTBILy8vOEhUUVJBSUFOQkppQURRUWgyWnlJQWEzWkJBWEVnQUVFQmRHdEJQbW9oQUFzZ0FpQUFOZ0ljSUFKQ0FEY0NFQ0FBUVFKMFFiZ2hhaUVCQWtBQ1FDQUlRUUVnQUhRaUJuRkZCRUJCakI4Z0JpQUljallDQUNBQklBSTJBZ0FNQVFzZ0EwRVpJQUJCQVhaclFRQWdBRUVmUnh0MElRQWdBU2dDQUNFRkEwQWdCU0lCS0FJRVFYaHhJQU5HRFFJZ0FFRWRkaUVHSUFCQkFYUWhBQ0FCSUFaQkJIRnFJZ1lvQWhBaUJRMEFDeUFHSUFJMkFoQUxJQUlnQVRZQ0dDQUNJQUkyQWd3Z0FpQUNOZ0lJREFFTElBRW9BZ2dpQUNBQ05nSU1JQUVnQWpZQ0NDQUNRUUEyQWhnZ0FpQUJOZ0lNSUFJZ0FEWUNDQXNnQkVFSWFpRUFEQUVMQWtBZ0NVVU5BQUpBSUFJb0Fod2lBRUVDZEVHNElXb2lBU2dDQUNBQ1JnUkFJQUVnQkRZQ0FDQUVEUUZCakI4Z0MwRitJQUIzY1RZQ0FBd0NDeUFKUVJCQkZDQUpLQUlRSUFKR0cyb2dCRFlDQUNBRVJRMEJDeUFFSUFrMkFoZ2dBaWdDRUNJQUJFQWdCQ0FBTmdJUUlBQWdCRFlDR0FzZ0FpZ0NGQ0lBUlEwQUlBUWdBRFlDRkNBQUlBUTJBaGdMQWtBZ0EwRVBUUVJBSUFJZ0F5QUZhaUlBUVFOeU5nSUVJQUFnQW1vaUFDQUFLQUlFUVFGeU5nSUVEQUVMSUFJZ0JVRURjallDQkNBQ0lBVnFJZ1FnQTBFQmNqWUNCQ0FESUFScUlBTTJBZ0FnQndSQUlBZEJlSEZCc0I5cUlRQkJuQjhvQWdBaEFRSi9RUUVnQjBFRGRuUWlCU0FHY1VVRVFFR0lIeUFGSUFaeU5nSUFJQUFNQVFzZ0FDZ0NDQXNoQmlBQUlBRTJBZ2dnQmlBQk5nSU1JQUVnQURZQ0RDQUJJQVkyQWdnTFFad2ZJQVEyQWdCQmtCOGdBellDQUFzZ0FrRUlhaUVBQ3lBS1FSQnFKQUFnQUF2U0N3RUhmd0pBSUFCRkRRQWdBRUVJYXlJQ0lBQkJCR3NvQWdBaUFVRjRjU0lBYWlFRkFrQWdBVUVCY1EwQUlBRkJBM0ZGRFFFZ0FpQUNLQUlBSWdGcklnSkJtQjhvQWdCSkRRRWdBQ0FCYWlFQUFrQUNRRUdjSHlnQ0FDQUNSd1JBSUFGQi93Rk5CRUFnQVVFRGRpRUVJQUlvQWd3aUFTQUNLQUlJSWdOR0JFQkJpQjlCaUI4b0FnQkJmaUFFZDNFMkFnQU1CUXNnQXlBQk5nSU1JQUVnQXpZQ0NBd0VDeUFDS0FJWUlRWWdBaUFDS0FJTUlnRkhCRUFnQWlnQ0NDSURJQUUyQWd3Z0FTQUROZ0lJREFNTElBSkJGR29pQkNnQ0FDSURSUVJBSUFJb0FoQWlBMFVOQWlBQ1FSQnFJUVFMQTBBZ0JDRUhJQU1pQVVFVWFpSUVLQUlBSWdNTkFDQUJRUkJxSVFRZ0FTZ0NFQ0lERFFBTElBZEJBRFlDQUF3Q0N5QUZLQUlFSWdGQkEzRkJBMGNOQWtHUUh5QUFOZ0lBSUFVZ0FVRitjVFlDQkNBQ0lBQkJBWEkyQWdRZ0JTQUFOZ0lBRHd0QkFDRUJDeUFHUlEwQUFrQWdBaWdDSENJRFFRSjBRYmdoYWlJRUtBSUFJQUpHQkVBZ0JDQUJOZ0lBSUFFTkFVR01IMEdNSHlnQ0FFRitJQU4zY1RZQ0FBd0NDeUFHUVJCQkZDQUdLQUlRSUFKR0cyb2dBVFlDQUNBQlJRMEJDeUFCSUFZMkFoZ2dBaWdDRUNJREJFQWdBU0FETmdJUUlBTWdBVFlDR0FzZ0FpZ0NGQ0lEUlEwQUlBRWdBellDRkNBRElBRTJBaGdMSUFJZ0JVOE5BQ0FGS0FJRUlnRkJBWEZGRFFBQ1FBSkFBa0FDUUNBQlFRSnhSUVJBUWFBZktBSUFJQVZHQkVCQm9COGdBallDQUVHVUgwR1VIeWdDQUNBQWFpSUFOZ0lBSUFJZ0FFRUJjallDQkNBQ1Fad2ZLQUlBUncwR1FaQWZRUUEyQWdCQm5COUJBRFlDQUE4TFFad2ZLQUlBSUFWR0JFQkJuQjhnQWpZQ0FFR1FIMEdRSHlnQ0FDQUFhaUlBTmdJQUlBSWdBRUVCY2pZQ0JDQUFJQUpxSUFBMkFnQVBDeUFCUVhoeElBQnFJUUFnQVVIL0FVMEVRQ0FCUVFOMklRUWdCU2dDRENJQklBVW9BZ2dpQTBZRVFFR0lIMEdJSHlnQ0FFRitJQVIzY1RZQ0FBd0ZDeUFESUFFMkFnd2dBU0FETmdJSURBUUxJQVVvQWhnaEJpQUZJQVVvQWd3aUFVY0VRRUdZSHlnQ0FCb2dCU2dDQ0NJRElBRTJBZ3dnQVNBRE5nSUlEQU1MSUFWQkZHb2lCQ2dDQUNJRFJRUkFJQVVvQWhBaUEwVU5BaUFGUVJCcUlRUUxBMEFnQkNFSElBTWlBVUVVYWlJRUtBSUFJZ01OQUNBQlFSQnFJUVFnQVNnQ0VDSUREUUFMSUFkQkFEWUNBQXdDQ3lBRklBRkJmbkUyQWdRZ0FpQUFRUUZ5TmdJRUlBQWdBbW9nQURZQ0FBd0RDMEVBSVFFTElBWkZEUUFDUUNBRktBSWNJZ05CQW5SQnVDRnFJZ1FvQWdBZ0JVWUVRQ0FFSUFFMkFnQWdBUTBCUVl3ZlFZd2ZLQUlBUVg0Z0EzZHhOZ0lBREFJTElBWkJFRUVVSUFZb0FoQWdCVVliYWlBQk5nSUFJQUZGRFFFTElBRWdCallDR0NBRktBSVFJZ01FUUNBQklBTTJBaEFnQXlBQk5nSVlDeUFGS0FJVUlnTkZEUUFnQVNBRE5nSVVJQU1nQVRZQ0dBc2dBaUFBUVFGeU5nSUVJQUFnQW1vZ0FEWUNBQ0FDUVp3ZktBSUFSdzBBUVpBZklBQTJBZ0FQQ3lBQVFmOEJUUVJBSUFCQmVIRkJzQjlxSVFFQ2YwR0lIeWdDQUNJRFFRRWdBRUVEZG5RaUFIRkZCRUJCaUI4Z0FDQURjallDQUNBQkRBRUxJQUVvQWdnTElRQWdBU0FDTmdJSUlBQWdBallDRENBQ0lBRTJBZ3dnQWlBQU5nSUlEd3RCSHlFRElBQkIvLy8vQjAwRVFDQUFRU1lnQUVFSWRtY2lBV3QyUVFGeElBRkJBWFJyUVQ1cUlRTUxJQUlnQXpZQ0hDQUNRZ0EzQWhBZ0EwRUNkRUc0SVdvaEFRSkFBa0FDUUVHTUh5Z0NBQ0lFUVFFZ0EzUWlCM0ZGQkVCQmpCOGdCQ0FIY2pZQ0FDQUJJQUkyQWdBZ0FpQUJOZ0lZREFFTElBQkJHU0FEUVFGMmEwRUFJQU5CSDBjYmRDRURJQUVvQWdBaEFRTkFJQUVpQkNnQ0JFRjRjU0FBUmcwQ0lBTkJIWFloQVNBRFFRRjBJUU1nQkNBQlFRUnhhaUlIUVJCcUtBSUFJZ0VOQUFzZ0J5QUNOZ0lRSUFJZ0JEWUNHQXNnQWlBQ05nSU1JQUlnQWpZQ0NBd0JDeUFFS0FJSUlnQWdBallDRENBRUlBSTJBZ2dnQWtFQU5nSVlJQUlnQkRZQ0RDQUNJQUEyQWdnTFFhZ2ZRYWdmS0FJQVFRRnJJZ0JCZnlBQUd6WUNBQXNMQkFBakFBc0dBQ0FBSkFBTEVBQWpBQ0FBYTBGd2NTSUFKQUFnQUF0S0FRRi9JQUFnQVVrRVFDQUFJQUVnQWhBQ0R3c2dBZ1JBSUFBZ0Ftb2hBeUFCSUFKcUlRRURRQ0FEUVFGcklnTWdBVUVCYXlJQkxRQUFPZ0FBSUFKQkFXc2lBZzBBQ3dzZ0FBdjlEZ0lSZndGK0l3QkJNR3NpQnlRQVFiaC9JUWdDUUNBRlJRMEFJQVFzQUFBaUNVSC9BWEVoQ3dKQUlBbEJBRWdFUUNBTFFmNEFhMEVCZGlJR0lBVlBEUUpCYkNFSUlBdEIvd0JySWd0Qi93RkxEUUlnQkVFQmFpRUlRUUFoQlFOQUlBVWdDMDhFUUNBTElRZ2dCaUVMREFNRklBQWdCV29nQ0NBRlFRRjJhaUlFTFFBQVFRUjJPZ0FBSUFBZ0JVRUJjbW9nQkMwQUFFRVBjVG9BQUNBRlFRSnFJUVVNQVFzQUN3QUxJQVVnQzAwTkFTQUhRZjhCTmdJRUlBWWdCMEVFYWlBSFFRaHFJQVJCQVdvaURpQUxFQXdpQkVHSWYwc0VRQ0FFSVFnTUFndEJWQ0VJSUFjb0FnZ2lFRUVHU3cwQklBY29BZ1FpRVVFQmRDSUpRUUpxclVJQklCQ3RoaUlZUVFFZ0VIUWlEVUVCYWlJRnJVSUNobng4UWd0OFF2ei8vLy8vLy8vLy93Q0RRdVFDVmcwQlFWSWhDQ0FSUWY4QlN3MEJJQTFCZjNOQkFuUkI1QUpxclNBUlFRRnFJaFZCQVhTdElCaDhRZ2g4VkEwQklBc2dCR3NoRmlBRUlBNXFJUmNnQmtHQUJHb2lFaUFGUVFKMGFpSVJJQWxxUVFKcUlRNGdCa0dFQkdvaEUwR0FnQUlnRUhSQkVIWWhDVUVBSVFWQkFTRVBJQTFCQVdzaUZDRUtBMEFnQlNBVlJrVUVRQUpBSUFZZ0JVRUJkQ0lJYWk4QkFDSUVRZi8vQTBZRVFDQVRJQXBCQW5ScUlBVTZBQUlnQ2tFQmF5RUtRUUVoQkF3QkN5QVBRUUFnQ1NBRXdVb2JJUThMSUFnZ0VXb2dCRHNCQUNBRlFRRnFJUVVNQVFzTElBWWdEenNCZ2dRZ0JpQVFPd0dBQkFKQUlBb2dGRVlFUUNBTlFRTjJJUWhDQUNFWVFRQWhEd05BSUF3Z0ZVWUVRQ0FJSUExQkFYWnFRUU5xSWdsQkFYUWhDRUVBSVFSQkFDRUtBMEJCQUNFRklBb2dEVThOQkFOQUlBVkJBa1pGQkVBZ0V5QUZJQWxzSUFScUlCUnhRUUowYWlBT0lBVWdDbXBxTFFBQU9nQUNJQVZCQVdvaEJRd0JDd3NnQ2tFQ2FpRUtJQVFnQ0dvZ0ZIRWhCQXdBQ3dBRklBWWdERUVCZEdvdUFRQWhDU0FPSUE5cUlnUWdHRGNBQUVFSUlRVURRQ0FGSUFsT1JRUkFJQVFnQldvZ0dEY0FBQ0FGUVFocUlRVU1BUXNMSUJoQ2dZS0VpSkNnd0lBQmZDRVlJQXhCQVdvaERDQUpJQTlxSVE4TUFRc0FDd0FMSUExQkEzWWdEVUVCZG1wQkEyb2hDRUVBSVFVRFFDQU1JQlZHUlFSQVFRQWhDU0FHSUF4QkFYUnFMZ0VBSWdSQkFDQUVRUUJLR3lFRUEwQWdCQ0FKUmtVRVFDQVRJQVZCQW5ScUlBdzZBQUlEUUNBRklBaHFJQlJ4SWdVZ0Nrc05BQXNnQ1VFQmFpRUpEQUVMQ3lBTVFRRnFJUXdNQVFzTFFYOGhDQ0FGRFFJTElCQkJBV29oQ0VFQUlRVURRQ0FGSUExR1JRUkFJQkVnRXlBRlFRSjBhaUlPTFFBQ1FRRjBhaUlFSUFRdkFRQWlDVUVCYWpzQkFDQU9JQWdnQ1dkQllITnFJZ1E2QUFNZ0RpQUpJQVIwSUExck93RUFJQVZCQVdvaEJRd0JDd3NDUUFKQUlBWXZBWUlFQkVBZ0IwRWNhaUlFSUJjZ0ZoQU5JZ2hCaUg5TERRSWdCMEVVYWlBRUlCSVFEaUFIUVF4cUlBUWdFaEFPUVFBaEJRTkFJQWRCSEdvaUJCQVBJQVZCK3dGTGNnMENJQUFnQldvaUJpQUhRUlJxSUFRUUVEb0FBQ0FHSUFkQkRHb2dCQkFRT2dBQklBVkJBbkloQkNBSFFSeHFFQThFUUNBRUlRVU1Bd1VnQUNBRWFpQUhRUlJxSUFkQkhHb2lCQkFRT2dBQUlBWWdCMEVNYWlBRUVCQTZBQU1nQlVFRWFpRUZEQUVMQUFzQUN5QUhRUnhxSWdRZ0Z5QVdFQTBpQ0VHSWYwc05BU0FIUVJScUlBUWdFaEFPSUFkQkRHb2dCQ0FTRUE1QkFDRUZBMEFnQjBFY2FpSUVFQThnQlVIN0FVdHlSUVJBSUFBZ0JXb2lCaUFIUVJScUlBUVFFVG9BQUNBR0lBZEJER29nQkJBUk9nQUJJQVZCQW5JaEJDQUhRUnhxRUE4RVFDQUVJUVVGSUFBZ0JHb2dCMEVVYWlBSFFSeHFJZ1FRRVRvQUFDQUdJQWRCREdvZ0JCQVJPZ0FESUFWQkJHb2hCUXdDQ3dzTEFuOERRRUc2ZnlFSUlBVkIvUUZMRFFNZ0FDQUZhaUlHSUFkQkZHb2dCMEVjYWlJSkVCRTZBQUFnQmtFQmFpRUVJQWtRRDBFRFJnUkFJQWRCREdvaENFRUNEQUlMSUFWQi9BRkxEUU1nQmlBSFFReHFJQWRCSEdvaUJCQVJPZ0FCSUFWQkFtb2hCU0FFRUE5QkEwY05BQXNnQUNBRmFpRUVJQWRCRkdvaENFRURDeUFFSUFnZ0IwRWNhaEFST2dBQUlBWnFJQUJySVFnTUFRc0Nmd05BUWJwL0lRZ2dCVUg5QVVzTkFpQUFJQVZxSWdZZ0IwRVVhaUFIUVJ4cUlna1FFRG9BQUNBR1FRRnFJUVFnQ1JBUFFRTkdCRUFnQjBFTWFpRUlRUUlNQWdzZ0JVSDhBVXNOQWlBR0lBZEJER29nQjBFY2FpSUVFQkE2QUFFZ0JVRUNhaUVGSUFRUUQwRURSdzBBQ3lBQUlBVnFJUVFnQjBFVWFpRUlRUU1MSUFRZ0NDQUhRUnhxRUJBNkFBQWdCbW9nQUdzaENBc2dDRUdJZjBzTkFRc2dDQ0VFUVFBaEJTQUJRUUJCTkJBRElRbEJBQ0VLQTBBZ0JDQUZSd1JBSUFBZ0JXb2lCaTBBQUNJQlFRdExCRUJCYkNFSURBTUZJQWtnQVVFQ2RHb2lBU0FCS0FJQVFRRnFOZ0lBSUFWQkFXb2hCVUVCSUFZdEFBQjBRUUYxSUFwcUlRb01BZ3NBQ3d0QmJDRUlJQXBGRFFBZ0NtY2lCVUVmY3lJQlFRdExEUUFnQTBFZ0lBVnJOZ0lBUVFGQkFpQUJkQ0FLYXlJRFowRWZjeUlCZENBRFJ3MEFJQUFnQkdvZ0FVRUJhaUlBT2dBQUlBa2dBRUVDZEdvaUFDQUFLQUlBUVFGcU5nSUFJQWtvQWdRaUFFRUNTU0FBUVFGeGNnMEFJQUlnQkVFQmFqWUNBQ0FMUVFGcUlRZ0xJQWRCTUdva0FDQUlDNkFGQVF4L0l3QkJFR3NpRENRQUFuOGdCRUVIVFFSQUlBeENBRGNEQ0NBTVFRaHFJZ1VnQXlBRUVBSWFRV3dnQUNBQklBSWdCVUVJRUF3aUFDQUFJQVJMR3lBQUlBQkJpWDlKR3d3QkN5QUFRUUFnQVNnQ0FFRUJhaUlOUVFGMEVBTWhEMEZVSUFNb0FBQWlCa0VQY1NJQVFRcExEUUFhSUFJZ0FFRUZhallDQUNBRElBUnFJZ0pCQkdzaEJ5QUNRUWRySVFzZ0FFRUdhaUVPUVFRaEFpQUdRUVIySVFWQklDQUFkQ0lJUVFGeUlRbEJBQ0VBUVFFaEJpQURJUVFEUUFKQUlBWkJBWEZGQkVBRFFDQUZRWDl6UVlDQWdJQjRjbWdpQmtFWVNVVUVRQ0FBUVNScUlRQWdCQ0FMVFFSL0lBUkJBMm9GSUFRZ0MydEJBM1FnQW1wQkgzRWhBaUFIQ3lJRUtBQUFJQUoySVFVTUFRc0xJQUlnQmtFZWNTSUtha0VDYWlFQ0lBWkJBWFpCQTJ3Z0FHb2dCU0FLZGtFRGNXb2lBQ0FOVHcwQkFuOGdCQ0FMU3lBQ1FRTjJJQVJxSWdVZ0IwdHhSUVJBSUFKQkIzRWhBaUFGREFFTElBUWdCMnRCQTNRZ0FtcEJIM0VoQWlBSEN5SUVLQUFBSUFKMklRVUxJQVVnQ0VFQmEzRWlCaUFJUVFGMFFRRnJJZ29nQ1dzaUVFa0VmeUFPUVFGckJTQUZJQXB4SWdVZ0VFRUFJQVVnQ0U0YmF5RUdJQTRMSVFVZ0R5QUFRUUYwYWlBR1FRRnJJZ283QVFBZ0FFRUJhaUVBSUFJZ0JXb2hBaUFJUVFFZ0Jtc2dDaUFHUVFCS0d5QUphaUlKU2dSQUlBbEJBa2dOQVVFZ0lBbG5JZ1ZySVE1QkFTQUZRUjl6ZENFSUN5QUFJQTFQRFFBZ0NrRUFSeUVHQW44Z0JDQUxTeUFDUVFOMUlBUnFJZ1VnQjB0eFJRUkFJQUpCQjNFaEFpQUZEQUVMSUFJZ0JDQUhhMEVEZEdwQkgzRWhBaUFIQ3lJRUtBQUFJQUoySVFVTUFRc0xRV3dnQ1VFQlJ3MEFHa0ZRSUFBZ0RVc05BQnBCYkNBQ1FTQktEUUFhSUFFZ0FFRUJhellDQUNBRUlBSkJCMnBCQTNWcUlBTnJDeUFNUVJCcUpBQUw4Z0VCQVg4Z0FrVUVRQ0FBUWdBM0FnQWdBRUVBTmdJUUlBQkNBRGNDQ0VHNGZ3OExJQUFnQVRZQ0RDQUFJQUZCQkdvMkFoQWdBa0VFVHdSQUlBQWdBU0FDYWlJQlFRUnJJZ00yQWdnZ0FDQURLQUFBTmdJQUlBRkJBV3N0QUFBaUFRUkFJQUFnQVdkQkYyczJBZ1FnQWc4TElBQkJBRFlDQkVGL0R3c2dBQ0FCTmdJSUlBQWdBUzBBQUNJRE5nSUFBa0FDUUFKQUlBSkJBbXNPQWdFQUFnc2dBQ0FCTFFBQ1FSQjBJQU55SWdNMkFnQUxJQUFnQVMwQUFVRUlkQ0FEYWpZQ0FBc2dBU0FDYWtFQmF5MEFBQ0lCUlFSQUlBQkJBRFlDQkVGc0R3c2dBQ0FCWnlBQ1FRTjBhMEVKYWpZQ0JDQUNDMFFCQW44Z0FTQUNMd0VBSWdNZ0FTZ0NCR29pQkRZQ0JDQUFJQU5CQW5SQm9CMXFLQUlBSUFFb0FnQkJBQ0FFYTNaeE5nSUFJQUVRRHhvZ0FDQUNRUVJxTmdJRUM1OEJBUVIvUVFNaEFTQUFLQUlFSWdKQklFMEVRQ0FBS0FJSUlnRWdBQ2dDRUU4RVFDQUFJQUpCQjNFMkFnUWdBQ0FCSUFKQkEzWnJJZ0kyQWdnZ0FDQUNLQUFBTmdJQVFRQVBDeUFBS0FJTUlnTWdBVVlFUUVFQlFRSWdBa0VnU1JzUEN5QUFJQUVnQVNBRGF5QUNRUU4ySWdRZ0FTQUVheUFEU1NJQkd5SURheUlFTmdJSUlBQWdBaUFEUVFOMGF6WUNCQ0FBSUFRb0FBQTJBZ0FMSUFFTFNBRUVmeUFBS0FJRUlBQW9BZ0JCQW5ScUlnSXRBQUlnQWk4QkFDRUVJQUVnQVNnQ0JDSUZJQUl0QUFNaUFtbzJBZ1FnQUNBRUlBRW9BZ0FnQlhSQkFDQUNhM1pxTmdJQUMxSUJCSDhnQUNnQ0JDQUFLQUlBUVFKMGFpSUNMUUFDSUFJdkFRQWhCQ0FCSUFJdEFBTWlBaUFCS0FJRWFpSUZOZ0lFSUFBZ0JDQUNRUUowUWFBZGFpZ0NBQ0FCS0FJQVFRQWdCV3QyY1dvMkFnQUxDQUFnQUVHSWYwc0xHZ0FnQUFSQUlBRUVRQ0FDSUFBZ0FSRUNBQThMSUFBUUJnc0xwZ2dDRFg4QmZpTUFRUkJySWdra0FDQUpRUUEyQWd3Z0NVRUFOZ0lJQW44Q1FDQURRZWdKYWlBRElBbEJDR29nQ1VFTWFpQUJJQUlnQTBHQUFXb1FDeUlQUVloL1N3MEFRVlFnQ1NnQ0RDSUVJQUFvQWdBaUFVSC9BWEZCQVdwTERRRWFJQUJCQkdvaEN5QUFJQUZCLzRHQWVIRWdCRUVRZEVHQWdQd0hjWEkyQWdCQmZ5QUVJQVJCQUVnYlFRRnFJUUJCQUNFQklBa29BZ2doQlVFQUlRSURRQ0FBSUFKR0JFQWdCVUVEYXlFQlFRQWhBQU5BQWtCQkFDRUNJQUFnQVU0RVFBTkFJQUFnQlU0TkFpQURJQUFnQTJwQjZBbHFMUUFBUVFKMGFrRkFheUlCSUFFb0FnQWlBVUVCYWpZQ0FDQUJJQU5xSUFBNkFPZ0hJQUJCQVdvaEFBd0FDd0FGQTBBZ0FrRUVSa1VFUUNBRElBTWdBQ0FDYWlJSGFrSG9DV290QUFCQkFuUnFRVUJySWdnZ0NDZ0NBQ0lJUVFGcU5nSUFJQU1nQ0dvZ0J6b0E2QWNnQWtFQmFpRUNEQUVMQ3lBQVFRUnFJUUFNQWdzQUN3c2dCRUVCYWlFT0lBTW9BZ0FoQjBFQUlRQkJBU0VJQTBBZ0NDQU9SZzBESUE0Z0NHc2hCQ0FESUFoQkFuUnFLQUlBSVFVQ1FBSkFBa0FDUUFKQUFrQkJBU0FJZEVFQmRTSU5RUUZyRGdnQUFRUUNCQVFFQXdRTFFRQWhBaUFGUVFBZ0JVRUFTaHNoQmlBQUlRRURRQ0FDSUFaR0RRVWdBeUFDSUFkcWFpMEE2QWNoQ2lBTElBRkJBWFJxSWd3Z0JEb0FBU0FNSUFvNkFBQWdBa0VCYWlFQ0lBRkJBV29oQVF3QUN3QUxRUUFoQWlBRlFRQWdCVUVBU2hzaENpQUFJUUVEUUNBQ0lBcEdEUVFnQ3lBQlFRRjBhaUlHSUFNZ0FpQUhhbW90QU9nSElndzZBQUlnQmlBRU9nQUJJQVlnRERvQUFDQUdJQVE2QUFNZ0FrRUJhaUVDSUFGQkFtb2hBUXdBQ3dBTFFRQWhBaUFGUVFBZ0JVRUFTaHNoQmlBRVFRaDBRWUQrQTNFaEJDQUFJUUVEUUNBQ0lBWkdEUU1nQ3lBQlFRRjBhaUFFSUFNZ0FpQUhhbW90QU9nSGNxMUNnWUNFZ0pDQXdBQitOd0FBSUFKQkFXb2hBaUFCUVFScUlRRU1BQXNBQzBFQUlRSWdCVUVBSUFWQkFFb2JJUVlnQkVFSWRFR0EvZ054SVFRZ0FDRUJBMEFnQWlBR1JnMENJQXNnQVVFQmRHb2lDaUFFSUFNZ0FpQUhhbW90QU9nSGNxMUNnWUNFZ0pDQXdBQitJaEUzQUFnZ0NpQVJOd0FBSUFKQkFXb2hBaUFCUVFocUlRRU1BQXNBQzBFQUlRRWdCVUVBSUFWQkFFb2JJUW9nQkVFSWRFR0EvZ054SVF3Z0FDRUVBMEFnQVNBS1JnMEJJQXNnQkVFQmRHb2hFQ0FNSUFNZ0FTQUhhbW90QU9nSGNxMUNnWUNFZ0pDQXdBQitJUkZCQUNFQ0EwQWdBaUFOVGtVRVFDQVFJQUpCQVhScUlnWWdFVGNBR0NBR0lCRTNBQkFnQmlBUk53QUlJQVlnRVRjQUFDQUNRUkJxSVFJTUFRc0xJQUZCQVdvaEFTQUVJQTFxSVFRTUFBc0FDeUFJUVFGcUlRZ2dCU0FIYWlFSElBVWdEV3dnQUdvaEFBd0FDd0FGSUFNZ0FrRUNkR29pQjBGQWF5QUJOZ0lBSUFKQkFXb2hBaUFIS0FJQUlBRnFJUUVNQVFzQUN3QUxJQThMSUFsQkVHb2tBQXZ5QWdFR2Z5TUFRU0JySWdVa0FDQUVLQUlBSVFZZ0JVRU1haUFDSUFNUURTSURRWWgvVFFSQUlBUkJCR29oQWlBQUlBRnFJZ2xCQTJzaEJFRUFJQVpCRUhaclFSOXhJUU1EUUNBRlFReHFFQThnQUNBRVQzSkZCRUFnQWlBRktBSU1JZ1lnQlNnQ0VDSUhkQ0FEZGtFQmRHb2lDQzBBQVNFS0lBQWdDQzBBQURvQUFDQUNJQVlnQnlBS2FpSUdkQ0FEZGtFQmRHb2lCeTBBQUNFSUlBVWdCaUFITFFBQmFqWUNFQ0FBSUFnNkFBRWdBRUVDYWlFQURBRUxDd05BSUFWQkRHb1FEeUVISUFVb0Fnd2hCaUFGS0FJUUlRUWdBQ0FKVHlBSGNrVUVRQ0FDSUFZZ0JIUWdBM1pCQVhScUlnWXRBQUFoQnlBRklBUWdCaTBBQVdvMkFoQWdBQ0FIT2dBQUlBQkJBV29oQUF3QkN3c0RRQ0FBSUFsUFJRUkFJQUlnQmlBRWRDQURka0VCZEdvaUJ5MEFBU0VJSUFBZ0J5MEFBRG9BQUNBQVFRRnFJUUFnQkNBSWFpRUVEQUVMQzBGc1FXd2dBU0FGS0FJVUlBVW9BaGhIR3lBRVFTQkhHeUVEQ3lBRlFTQnFKQUFnQXd2UEZBRWpmeU1BUWRBQWF5SUZKQUJCYkNFSkFrQWdBMEVLU1EwQUFrQWdBeUFDTHdBRUlnY2dBaThBQUNJSUlBSXZBQUlpRFdwcVFRWnFJZ3hKRFFBZ0JDOEJBaUVHSUFWQlBHb2dBa0VHYWlJQ0lBZ1FEU0lKUVloL1N3MEJJQVZCS0dvZ0FpQUlhaUlDSUEwUURTSUpRWWgvU3cwQklBVkJGR29nQWlBTmFpSUNJQWNRRFNJSlFZaC9TdzBCSUFVZ0FpQUhhaUFESUF4ckVBMGlDVUdJZjBzTkFTQUVRUVJxSVFvZ0FDQUJhaUlmUVFOcklTQkJBQ0FHYTBFZmNTRUxJQVVvQWdnaEVTQUZLQUljSVJJZ0JTZ0NNQ0VUSUFVb0FrUWhGQ0FGS0FJRUlRa2dCU2dDR0NFTklBVW9BaXdoRENBRktBSkFJUVlnQlNnQ0VDRWhJQVVvQWlRaElpQUZLQUk0SVNNZ0JTZ0NUQ0VrSUFVb0FnQWhGU0FGS0FJVUlSWWdCU2dDS0NFWElBVW9BandoR0VFQklROGdBQ0FCUVFOcVFRSjJJZ1JxSWdNZ0JHb2lBaUFFYWlJWklRUWdBaUVJSUFNaEJ3TkFJQTlCQVhGRklBUWdJRTl5UlFSQUlBQWdDaUFZSUFaMElBdDJRUUowYWlJT0x3RUFPd0FBSUE0dEFBSWhHaUFPTFFBRElSQWdCeUFLSUJjZ0RIUWdDM1pCQW5ScUlnNHZBUUE3QUFBZ0RpMEFBaUViSUE0dEFBTWhEeUFJSUFvZ0ZpQU5kQ0FMZGtFQ2RHb2lEaThCQURzQUFDQU9MUUFDSVJ3Z0RpMEFBeUVkSUFRZ0NpQVZJQWwwSUF0MlFRSjBhaUlPTHdFQU93QUFJQTR0QUFJaEhpQU9MUUFESVE0Z0FDQVFhaUlsSUFvZ0dDQUdJQnBxSWdaMElBdDJRUUowYWlJUUx3RUFPd0FBSUJBdEFBSWdFQzBBQXlFbUlBY2dEMm9pSnlBS0lCY2dEQ0FiYWlJYWRDQUxka0VDZEdvaUJ5OEJBRHNBQUNBSExRQUNJUXdnQnkwQUF5RVFJQWdnSFdvaUd5QUtJQllnRFNBY2FpSVBkQ0FMZGtFQ2RHb2lDQzhCQURzQUFDQUlMUUFDSVEwZ0NDMEFBeUVjSUFRZ0Rtb2lIU0FLSUJVZ0NTQWVhaUlPZENBTGRrRUNkR29pQ1M4QkFEc0FBQ0FHYWlFQVFRTWhCd0ovSUJRZ0pFa0VRQ0FBSVFaQkF3d0JDeUFBUVFkeElRWWdGQ0FBUVFOMmF5SVVLQUFBSVJoQkFBc2dDUzBBQXlFZUlBa3RBQUloQ0NBTUlCcHFJUUFnRXlBalNRUi9JQUFGSUJNZ0FFRURkbXNpRXlnQUFDRVhRUUFoQnlBQVFRZHhDeUVNSUEwZ0Qyb2hBQ0FIY2lFSlFRTWhEd0ovSUJJZ0lra0VRQ0FBSVExQkF3d0JDeUFBUVFkeElRMGdFaUFBUVFOMmF5SVNLQUFBSVJaQkFBc2dDQ0FPYWlFQUlBbHlJQkVnSVVrRWZ5QUFCU0FSSUFCQkEzWnJJaEVvQUFBaEZVRUFJUThnQUVFSGNRc2hDU0FsSUNacUlRQWdFQ0FuYWlFSElCc2dIR29oQ0NBZElCNXFJUVFnRDNKRklROE1BUXNMSUFVZ0REWUNMQ0FGSUFZMkFrQWdCU0FOTmdJWUlBVWdDVFlDQkNBRklCUTJBa1FnQlNBVE5nSXdJQVVnRWpZQ0hDQUZJQkUyQWdnZ0JTQVlOZ0k4SUFVZ0Z6WUNLQ0FGSUJZMkFoUWdCU0FWTmdJQUlBSWdCMGtnQUNBRFMzSU5BRUZzSVFrZ0NDQVpTdzBCSUFOQkEyc2hDUU5BSUFWQlBHb1FEMFVnQUNBSlNYRUVRQ0FBSUFvZ0JTZ0NQQ0lOSUFVb0FrQWlESFFnQzNaQkFuUnFJZzR2QVFBN0FBQWdBQ0FPTFFBRGFpSUdJQW9nRFNBTUlBNHRBQUpxSWdCMElBdDJRUUowYWlJTUx3RUFPd0FBSUFVZ0FDQU1MUUFDYWpZQ1FDQUdJQXd0QUFOcUlRQU1BUVVnQTBFQ2F5RU1BMEFnQlVFOGFoQVBJUVlnQlNnQ1BDRU5JQVVvQWtBaENTQUFJQXhMSUFaeVJRUkFJQUFnQ2lBTklBbDBJQXQyUVFKMGFpSUdMd0VBT3dBQUlBVWdDU0FHTFFBQ2FqWUNRQ0FBSUFZdEFBTnFJUUFNQVFzTEEwQWdBQ0FNUzBVRVFDQUFJQW9nRFNBSmRDQUxka0VDZEdvaUJpOEJBRHNBQUNBQUlBWXRBQU5xSVFBZ0NTQUdMUUFDYWlFSkRBRUxDd0pBSUFBZ0EwOE5BQ0FBSUFvZ0RTQUpkQ0FMZGlJQVFRSjBhaUlETFFBQU9nQUFJQU10QUFOQkFVWUVRQ0FKSUFNdEFBSnFJUWtNQVFzZ0NVRWZTdzBBUVNBZ0NTQUtJQUJCQW5ScUxRQUNhaUlBSUFCQklFOGJJUWtMSUFKQkEyc2hEQU5BSUFWQktHb1FEMFVnQnlBTVNYRUVRQ0FISUFvZ0JTZ0NLQ0lHSUFVb0Fpd2lBSFFnQzNaQkFuUnFJZzB2QVFBN0FBQWdCeUFOTFFBRGFpSURJQW9nQmlBQUlBMHRBQUpxSWdCMElBdDJRUUowYWlJR0x3RUFPd0FBSUFVZ0FDQUdMUUFDYWpZQ0xDQURJQVl0QUFOcUlRY01BUVVnQWtFQ2F5RUdBMEFnQlVFb2FoQVBJUU1nQlNnQ0tDRU1JQVVvQWl3aEFDQUdJQWRKSUFOeVJRUkFJQWNnQ2lBTUlBQjBJQXQyUVFKMGFpSURMd0VBT3dBQUlBVWdBQ0FETFFBQ2FqWUNMQ0FISUFNdEFBTnFJUWNNQVFzTEEwQWdCaUFIU1VVRVFDQUhJQW9nRENBQWRDQUxka0VDZEdvaUF5OEJBRHNBQUNBSElBTXRBQU5xSVFjZ0FDQURMUUFDYWlFQURBRUxDd0pBSUFJZ0IwME5BQ0FISUFvZ0RDQUFkQ0FMZGlJQ1FRSjBhaUlETFFBQU9nQUFJQU10QUFOQkFVWUVRQ0FBSUFNdEFBSnFJUUFNQVFzZ0FFRWZTdzBBUVNBZ0FDQUtJQUpCQW5ScUxRQUNhaUlBSUFCQklFOGJJUUFMSUJsQkEyc2hEQU5BSUFWQkZHb1FEMFVnQ0NBTVNYRUVRQ0FJSUFvZ0JTZ0NGQ0lHSUFVb0FoZ2lBblFnQzNaQkFuUnFJZzB2QVFBN0FBQWdDQ0FOTFFBRGFpSURJQW9nQmlBQ0lBMHRBQUpxSWdKMElBdDJRUUowYWlJR0x3RUFPd0FBSUFVZ0FpQUdMUUFDYWpZQ0dDQURJQVl0QUFOcUlRZ01BUVVnR1VFQ2F5RURBMEFnQlVFVWFoQVBJUUlnQlNnQ0ZDRUdJQVVvQWhnaEJ5QURJQWhKSUFKeVJRUkFJQWdnQ2lBR0lBZDBJQXQyUVFKMGFpSUNMd0VBT3dBQUlBVWdCeUFDTFFBQ2FqWUNHQ0FJSUFJdEFBTnFJUWdNQVFzTEEwQWdBeUFJU1VVRVFDQUlJQW9nQmlBSGRDQUxka0VDZEdvaUFpOEJBRHNBQUNBSUlBSXRBQU5xSVFnZ0J5QUNMUUFDYWlFSERBRUxDd0pBSUFnZ0dVOE5BQ0FJSUFvZ0JpQUhkQ0FMZGlJQ1FRSjBhaUlETFFBQU9nQUFJQU10QUFOQkFVWUVRQ0FISUFNdEFBSnFJUWNNQVFzZ0IwRWZTdzBBUVNBZ0J5QUtJQUpCQW5ScUxRQUNhaUlDSUFKQklFOGJJUWNMQTBBZ0JSQVBSU0FFSUNCSmNRUkFJQVFnQ2lBRktBSUFJZ1lnQlNnQ0JDSUNkQ0FMZGtFQ2RHb2lEQzhCQURzQUFDQUVJQXd0QUFOcUlnTWdDaUFHSUFJZ0RDMEFBbW9pQW5RZ0MzWkJBblJxSWdRdkFRQTdBQUFnQlNBQ0lBUXRBQUpxTmdJRUlBTWdCQzBBQTJvaEJBd0JCU0FmUVFKcklRTURRQ0FGRUE4aEFpQUZLQUlBSVFZZ0JTZ0NCQ0VJSUFNZ0JFa2dBbkpGQkVBZ0JDQUtJQVlnQ0hRZ0MzWkJBblJxSWdJdkFRQTdBQUFnQlNBSUlBSXRBQUpxTmdJRUlBUWdBaTBBQTJvaEJBd0JDd3NEUUNBRElBUkpSUVJBSUFRZ0NpQUdJQWgwSUF0MlFRSjBhaUlDTHdFQU93QUFJQVFnQWkwQUEyb2hCQ0FJSUFJdEFBSnFJUWdNQVFzTEFrQWdCQ0FmVHcwQUlBUWdDaUFHSUFoMElBdDJJZ0pCQW5ScUlnTXRBQUE2QUFBZ0F5MEFBMEVCUmdSQUlBZ2dBeTBBQW1vaENBd0JDeUFJUVI5TERRQkJJQ0FJSUFvZ0FrRUNkR290QUFKcUlnSWdBa0VnVHhzaENBdEJiRUZzUVd4QmJFRnNRV3hCYkVGc0lBRWdDRUVnUnhzZ0JTZ0NDQ0FGS0FJTVJ4c2dCMEVnUnhzZ0JTZ0NIQ0FGS0FJZ1J4c2dBRUVnUnhzZ0JTZ0NNQ0FGS0FJMFJ4c2dDVUVnUnhzZ0JTZ0NSQ0FGS0FKSVJ4c2hDUXdKQ3dBTEFBc0FDd0FMQUFzQUN3QUxBQXRCYkNFSkN5QUZRZEFBYWlRQUlBa0w3QkFCSG44akFFSFFBR3NpQlNRQVFXd2hDUUpBSUFOQkNra05BQUpBSUFNZ0FpOEFCQ0lHSUFJdkFBQWlCeUFDTHdBQ0lnaHFha0VHYWlJT1NRMEFJQVF2QVFJaER5QUZRVHhxSUFKQkJtb2lBaUFIRUEwaUNVR0lmMHNOQVNBRlFTaHFJQUlnQjJvaUFpQUlFQTBpQ1VHSWYwc05BU0FGUVJScUlBSWdDR29pQWlBR0VBMGlDVUdJZjBzTkFTQUZJQUlnQm1vZ0F5QU9heEFOSWdsQmlIOUxEUUVnQkVFRWFpRUtJQUFnQVdvaUhFRURheUVkUVFBZ0QydEJIM0VoQ3lBRktBSUlJUkVnQlNnQ0hDRVNJQVVvQWpBaEV5QUZLQUpFSVJRZ0JTZ0NCQ0VKSUFVb0FoZ2hCaUFGS0FJc0lRY2dCU2dDUUNFSUlBVW9BaEFoSGlBRktBSWtJUjhnQlNnQ09DRWdJQVVvQWt3aElTQUZLQUlBSVJVZ0JTZ0NGQ0VXSUFVb0FpZ2hGeUFGS0FJOElSaEJBU0VOSUFBZ0FVRURha0VDZGlJQ2FpSU9JQUpxSWc4Z0Ftb2lHU0VFSUE4aEFpQU9JUU1EUUNBTlJTQUVJQjFQY2tVRVFDQUtJQmdnQ0hRZ0MzWkJBWFJxSWd3dEFBRWhEU0FBSUF3dEFBQTZBQUFnQ2lBWElBZDBJQXQyUVFGMGFpSU1MUUFCSVJBZ0F5QU1MUUFBT2dBQUlBb2dGaUFHZENBTGRrRUJkR29pREMwQUFTRWFJQUlnREMwQUFEb0FBQ0FLSUJVZ0NYUWdDM1pCQVhScUlnd3RBQUVoR3lBRUlBd3RBQUE2QUFBZ0NpQVlJQWdnRFdvaUNIUWdDM1pCQVhScUlnd3RBQUVoRFNBQUlBd3RBQUE2QUFFZ0NpQVhJQWNnRUdvaUIzUWdDM1pCQVhScUlnd3RBQUVoRUNBRElBd3RBQUE2QUFFZ0NpQVdJQVlnR21vaURIUWdDM1pCQVhScUlnWXRBQUVoR2lBQ0lBWXRBQUE2QUFFZ0NpQVZJQWtnRzJvaUczUWdDM1pCQVhScUlna3RBQUVoSWlBRUlBa3RBQUE2QUFFZ0NDQU5haUVHUVFNaENRSi9JQlFnSVVrRVFFRURJUTBnQmd3QkN5QVVJQVpCQTNackloUW9BQUFoR0VFQUlRMGdCa0VIY1FzaENDQUhJQkJxSVFZZ0V5QWdTUVIvSUFZRklCTWdCa0VEZG1zaUV5Z0FBQ0VYUVFBaENTQUdRUWR4Q3lFSElBd2dHbW9oRENBSklBMXlJUkJCQXlFTkFuOGdFaUFmU1FSQUlBd2hCa0VEREFFTElBeEJCM0VoQmlBU0lBeEJBM1pySWhJb0FBQWhGa0VBQ3lBYklDSnFJUXdnRUhJaEVDQVJJQjVKQkg4Z0RBVWdFU0FNUVFOMmF5SVJLQUFBSVJWQkFDRU5JQXhCQjNFTElRa2dCRUVDYWlFRUlBSkJBbW9oQWlBRFFRSnFJUU1nQUVFQ2FpRUFJQTBnRUhKRklRME1BUXNMSUFVZ0J6WUNMQ0FGSUFnMkFrQWdCU0FHTmdJWUlBVWdDVFlDQkNBRklCUTJBa1FnQlNBVE5nSXdJQVVnRWpZQ0hDQUZJQkUyQWdnZ0JTQVlOZ0k4SUFVZ0Z6WUNLQ0FGSUJZMkFoUWdCU0FWTmdJQUlBQWdEa3NnQXlBUFMzSU5BRUZzSVFrZ0FpQVpTdzBCSUE1QkEyc2hDUU5BSUFWQlBHb1FEeUFBSUFsUGNrVUVRQ0FLSUFVb0Fqd2lCaUFGS0FKQUlnZDBJQXQyUVFGMGFpSUlMUUFCSVF3Z0FDQUlMUUFBT2dBQUlBb2dCaUFISUF4cUlnWjBJQXQyUVFGMGFpSUhMUUFBSVFnZ0JTQUdJQWN0QUFGcU5nSkFJQUFnQ0RvQUFTQUFRUUpxSVFBTUFRc0xBMEFnQlVFOGFoQVBJUWNnQlNnQ1BDRUdJQVVvQWtBaENTQUFJQTVQSUFkeVJRUkFJQW9nQmlBSmRDQUxka0VCZEdvaUJpMEFBQ0VISUFVZ0NTQUdMUUFCYWpZQ1FDQUFJQWM2QUFBZ0FFRUJhaUVBREFFTEN3TkFJQUFnRGs5RkJFQWdDaUFHSUFsMElBdDJRUUYwYWlJSExRQUJJQUFnQnkwQUFEb0FBQ0FBUVFGcUlRQWdDV29oQ1F3QkN3c2dEMEVEYXlFQUEwQWdCVUVvYWhBUElBQWdBMDF5UlFSQUlBb2dCU2dDS0NJR0lBVW9BaXdpQjNRZ0MzWkJBWFJxSWdndEFBRWhEaUFESUFndEFBQTZBQUFnQ2lBR0lBY2dEbW9pQm5RZ0MzWkJBWFJxSWdjdEFBQWhDQ0FGSUFZZ0J5MEFBV28yQWl3Z0F5QUlPZ0FCSUFOQkFtb2hBd3dCQ3dzRFFDQUZRU2hxRUE4aEJ5QUZLQUlvSVFZZ0JTZ0NMQ0VBSUFNZ0QwOGdCM0pGQkVBZ0NpQUdJQUIwSUF0MlFRRjBhaUlHTFFBQUlRY2dCU0FBSUFZdEFBRnFOZ0lzSUFNZ0J6b0FBQ0FEUVFGcUlRTU1BUXNMQTBBZ0F5QVBUMFVFUUNBS0lBWWdBSFFnQzNaQkFYUnFJZ2N0QUFFaENDQURJQWN0QUFBNkFBQWdBMEVCYWlFRElBQWdDR29oQUF3QkN3c2dHVUVEYXlFREEwQWdCVUVVYWhBUElBSWdBMDl5UlFSQUlBb2dCU2dDRkNJR0lBVW9BaGdpQjNRZ0MzWkJBWFJxSWdndEFBRWhEaUFDSUFndEFBQTZBQUFnQ2lBR0lBY2dEbW9pQm5RZ0MzWkJBWFJxSWdjdEFBQWhDQ0FGSUFZZ0J5MEFBV28yQWhnZ0FpQUlPZ0FCSUFKQkFtb2hBZ3dCQ3dzRFFDQUZRUlJxRUE4aEJ5QUZLQUlVSVFZZ0JTZ0NHQ0VESUFJZ0dVOGdCM0pGQkVBZ0NpQUdJQU4wSUF0MlFRRjBhaUlHTFFBQUlRY2dCU0FESUFZdEFBRnFOZ0lZSUFJZ0J6b0FBQ0FDUVFGcUlRSU1BUXNMQTBBZ0FpQVpUMFVFUUNBS0lBWWdBM1FnQzNaQkFYUnFJZ2N0QUFFaENDQUNJQWN0QUFBNkFBQWdBa0VCYWlFQ0lBTWdDR29oQXd3QkN3c0RRQ0FGRUE4Z0JDQWRUM0pGQkVBZ0NpQUZLQUlBSWdJZ0JTZ0NCQ0lHZENBTGRrRUJkR29pQnkwQUFTRUlJQVFnQnkwQUFEb0FBQ0FLSUFJZ0JpQUlhaUlDZENBTGRrRUJkR29pQmkwQUFDRUhJQVVnQWlBR0xRQUJhallDQkNBRUlBYzZBQUVnQkVFQ2FpRUVEQUVMQ3dOQUlBVVFEeUVISUFVb0FnQWhCaUFGS0FJRUlRSWdCQ0FjVHlBSGNrVUVRQ0FLSUFZZ0FuUWdDM1pCQVhScUlnWXRBQUFoQnlBRklBSWdCaTBBQVdvMkFnUWdCQ0FIT2dBQUlBUkJBV29oQkF3QkN3c0RRQ0FFSUJ4UFJRUkFJQW9nQmlBQ2RDQUxka0VCZEdvaUJ5MEFBU0VJSUFRZ0J5MEFBRG9BQUNBRVFRRnFJUVFnQWlBSWFpRUNEQUVMQzBGc1FXeEJiRUZzUVd4QmJFRnNRV3dnQVNBQ1FTQkhHeUFGS0FJSUlBVW9BZ3hIR3lBRFFTQkhHeUFGS0FJY0lBVW9BaUJIR3lBQVFTQkhHeUFGS0FJd0lBVW9BalJIR3lBSlFTQkhHeUFGS0FKRUlBVW9Ba2hIR3lFSkRBRUxRV3doQ1FzZ0JVSFFBR29rQUNBSkMxZ0JBMzhDUUNBQUtBS1E2d0VpQVVVTkFDQUJLQUlBSUFGQnROVUJhaWdDQUNJQ0lBRkJ1TlVCYWlnQ0FDSURFQk1nQWdSQUlBTWdBU0FDRVFJQURBRUxJQUVRQmdzZ0FFRUFOZ0tnNndFZ0FFSUFOd09RNndFTDZRTUNCSDhDZmlBQVFRQkJLQkFESVFRZ0FrRUJRUVVnQXhzaUFFa0VRQ0FBRHdzZ0FVVUVRRUYvRHd0QkFTRUdBa0FDUUNBRFFRRkdEUUFnQXlFR0lBRW9BQUFpQlVHbzZyNXBSZzBBUVhZaEF5QUZRWEJ4UWREVXRNSUJSdzBCUVFnaEF5QUNRUWhKRFFFZ0FUVUFCQ0VJSUFSQkFUWUNGQ0FFSUFnM0F3QkJBQThMSUFFZ0FpQUdFQm9pQXlBQ1N3MEFJQVFnQXpZQ0dFRnlJUU1nQUNBQmFpSUZRUUZyTFFBQUlnSkJDSEVOQUNBQ1FTQnhJZ1pGQkVCQmNDRURJQVV0QUFBaUJVR25BVXNOQVNBRlFRZHhyVUlCSUFWQkEzWkJDbXF0aGlJSVFnT0lmaUFJZkNFSklBQkJBV29oQUFzZ0FrRUdkaUVGSUFKQkFuWkJBQ0VEQWtBQ1FBSkFBa0FnQWtFRGNVRUJhdzREQUFFQ0F3c2dBQ0FCYWkwQUFDRURJQUJCQVdvaEFBd0NDeUFBSUFGcUx3QUFJUU1nQUVFQ2FpRUFEQUVMSUFBZ0FXb29BQUFoQXlBQVFRUnFJUUFMUVFGeElRSUNmZ0pBQWtBQ1FBSkFJQVZCQVdzT0F3RUNBd0FMUW44Z0JrVU5BeG9nQUNBQmFqRUFBQXdEQ3lBQUlBRnFNd0FBUW9BQ2ZBd0NDeUFBSUFGcU5RQUFEQUVMSUFBZ0FXb3BBQUFMSVFnZ0JDQUNOZ0lnSUFRZ0F6WUNIQ0FFSUFnM0F3QkJBQ0VESUFSQkFEWUNGQ0FFSUFnZ0NTQUdHeUlJTndNSUlBUkNnSUFJSUFnZ0NFS0FnQWhhR3o0Q0VBc2dBd3RmQVFGL1FiaC9JUU1nQVVFQlFRVWdBaHNpQWs4RWZ5QUFJQUpxUVFGckxRQUFJZ0JCQTNGQkFuUkJvQjVxS0FJQUlBSnFJQUJCQkhaQkRIRkJzQjVxS0FJQWFpQUFRU0J4SWdGRmFpQUJRUVYySUFCQndBQkpjV29GUWJoL0N3c01BQ0FBSUFFZ0FrRUFFQmtMbHdNQ0JYOENmaU1BUVVCcUlnUWtBQUpBQTBBZ0FVRUZUd1JBQWtBZ0FDZ0FBRUZ3Y1VIUTFMVENBVVlFUUVKK0lRY2dBVUVJU1EwRUlBQW9BQVFpQWtGM1N3MEVJQUpCQ0dvaUF5QUJTdzBFSUFKQmdYOUpEUUVNQkFzZ0JFRVlhaUFBSUFFUUd5RUNRbjRnQkNrREdFSUFJQVFvQWl4QkFVY2JJQUliSWdkQ2ZWWU5BeUFISUFoOElnZ2dCMVJDZmlFSERRTUNRQUpBSUFGQkNFa05BQ0FBS0FBQVFYQnhRZERVdE1JQlJ3MEFJQUFvQUFRaUFrRjNTdzBGUWJoL0lBSkJDR29pQWlBQklBSkpHeUVEREFFTElBUkJHR29nQUNBQkVCc2lBa0dJZjBzRVFDQUNJUU1NQVF0QnVIOGhBeUFDRFFBZ0FTQUVLQUl3SWdKcklRVWdBQ0FDYWlFR0EwQWdCaUFGSUFSQkRHb1FIU0lEUVloL1N3MEJJQU5CQTJvaUFpQUZTd1JBUWJoL0lRTU1BZ3NnQlNBQ2F5RUZJQUlnQm1vaEJpQUVLQUlRUlEwQUN5QUVLQUk0Qkg5QnVIOGhBeUFGUVFSSkRRRWdCa0VFYWdVZ0Jnc2dBR3NoQXdzZ0EwR0lmMHNOQXdzZ0FTQURheUVCSUFBZ0Eyb2hBQXdCQ3d0Q2ZpQUlJQUViSVFjTElBUkJRR3NrQUNBSEMyUUJBWDlCdUg4aEF3SkFJQUZCQTBrTkFDQUFMUUFDSVFFZ0FpQUFMd0FBSWdCQkFYRTJBZ1FnQWlBQVFRRjJRUU54SWdNMkFnQWdBaUFBSUFGQkVIUnlRUU4ySWdBMkFnZ0NRQUpBSUFOQkFXc09Bd0lCQUFFTFFXd1BDeUFBSVFNTElBTUxSQUVDZnlBQklBSW9BZ1FpQXlBQktBSUVhaUlFTmdJRUlBQWdBMEVDZEVHZ0hXb29BZ0FnQVNnQ0FFRUFJQVJyZG5FMkFnQWdBUkFQR2lBQUlBSkJDR28yQWdRTHpnRUJCbjlCdW44aENnSkFJQUlvQWdRaUNDQUNLQUlBSWdscUlnMGdBU0FBYTBzTkFFRnNJUW9nQ1NBRUlBTW9BZ0FpQzJ0TERRQWdBQ0FKYWlJRUlBSW9BZ2dpREdzaEFpQUFJQUZCSUdzaUFDQUxJQWxCQUJBZ0lBTWdDU0FMYWpZQ0FBSkFBa0FnQkNBRmF5QU1Ud1JBSUFJaEJRd0JDeUFNSUFRZ0JtdExEUUlnQnlBSElBSWdCV3NpQW1vaUFTQUlhazhFUUNBRUlBRWdDQkFLR2d3Q0N5QUNJQWhxSVFnZ0JDQUJRUUFnQW1zUUNpQUNheUVFQ3lBRUlBQWdCU0FJUVFFUUlBc2dEU0VLQ3lBS0M4Y0VBUUovSUFBZ0Eyb2hCZ0pBSUFOQkIwd0VRQU5BSUFBZ0JrOE5BaUFBSUFJdEFBQTZBQUFnQUVFQmFpRUFJQUpCQVdvaEFnd0FDd0FMSUFSQkFVWUVRQUpBSUFBZ0Ftc2lCVUVIVFFSQUlBQWdBaTBBQURvQUFDQUFJQUl0QUFFNkFBRWdBQ0FDTFFBQ09nQUNJQUFnQWkwQUF6b0FBeUFBSUFJZ0JVRUNkQ0lGUWNBZWFpZ0NBR29pQWlnQUFEWUFCQ0FDSUFWQjRCNXFLQUlBYXlFQ0RBRUxJQUFnQWlrQUFEY0FBQXNnQWtFSWFpRUNJQUJCQ0dvaEFBc2dBU0FHVHdSQUlBQWdBMm9oQVNBRVFRRkhJQUFnQW10QkQwcHlSUVJBQTBBZ0FDQUNLUUFBTndBQUlBSkJDR29oQWlBQVFRaHFJZ0FnQVVrTkFBd0RDd0FMSUFBZ0Fpa0FBRGNBQUNBQUlBSXBBQWczQUFnZ0EwRVJTUTBCSUFCQkVHb2hBQU5BSUFBZ0Fpa0FFRGNBQUNBQUlBSXBBQmczQUFnZ0FDQUNLUUFnTndBUUlBQWdBaWtBS0RjQUdDQUNRU0JxSVFJZ0FFRWdhaUlBSUFGSkRRQUxEQUVMQWtBZ0FDQUJTd1JBSUFBaEFRd0JDeUFCSUFCcklRVUNRQ0FFUVFGSElBQWdBbXRCRDBweVJRUkFJQUloQXdOQUlBQWdBeWtBQURjQUFDQURRUWhxSVFNZ0FFRUlhaUlBSUFGSkRRQUxEQUVMSUFBZ0Fpa0FBRGNBQUNBQUlBSXBBQWczQUFnZ0JVRVJTQTBBSUFCQkVHb2hBQ0FDSVFNRFFDQUFJQU1wQUJBM0FBQWdBQ0FES1FBWU53QUlJQUFnQXlrQUlEY0FFQ0FBSUFNcEFDZzNBQmdnQTBFZ2FpRURJQUJCSUdvaUFDQUJTUTBBQ3dzZ0FpQUZhaUVDQ3dOQUlBRWdCazhOQVNBQklBSXRBQUE2QUFBZ0FVRUJhaUVCSUFKQkFXb2hBZ3dBQ3dBTEM2NEhBZ1YvQVg0akFFR0FBV3NpRVNRQUlCRWdBellDZkVGL0lROENRQUpBQWtBQ1FBSkFJQUlPQkFFQUF3SUVDeUFHUlFSQVFiaC9JUThNQkF0QmJDRVBJQVV0QUFBaUFpQURTdzBESUFnZ0FrRUNkQ0lDYWlnQ0FDRURJQUlnQjJvb0FnQWhBaUFBUVFBNkFBc2dBRUlBTndJQUlBQWdBallDRENBQUlBTTZBQW9nQUVFQU93RUlJQUVnQURZQ0FFRUJJUThNQXdzZ0FTQUpOZ0lBUVFBaER3d0NDeUFLUlFSQVFXd2hEd3dDQzBFQUlROGdDMFVnREVFWlNISU5BVUVJSUFSMFFRaHFJUUJCQUNFREEwQWdBQ0FEVFEwQ0lBTkJRR3NoQXd3QUN3QUxRV3doRHlBUklCRkIvQUJxSUJGQitBQnFJQVVnQmhBTUlnTkJpSDlMRFFBZ0VTZ0NlQ0lDSUFSTERRQWdFU2dDZkVFQmFpRUpJQUJCQ0dvaEMwR0FnQUlnQW5SQkVIVWhCVUVCSVJCQkFTQUNkQ0lQUVFGcklnb2hFZ05BSUFrZ0RrY0VRQUpBSUJFZ0RrRUJkQ0lFYWk4QkFDSU1RZi8vQTBZRVFDQUxJQkpCQTNScUlBNDJBZ1FnRWtFQmF5RVNRUUVoREF3QkN5QVFRUUFnQlNBTXdVb2JJUkFMSUFRZ0RXb2dERHNCQUNBT1FRRnFJUTRNQVFzTElBQWdBallDQkNBQUlCQTJBZ0FDUUNBS0lCSkdCRUFnRFVIcUFHb2hCa0VBSVJCQkFDRU1BMEFnQ1NBUVJnUkFJQTlCQTNZZ0QwRUJkbXBCQTJvaUJVRUJkQ0VFUVFBaERFRUFJUklEUUVFQUlRNGdEeUFTVFEwRUEwQWdEa0VDUndSQUlBc2dCU0FPYkNBTWFpQUtjVUVEZEdvZ0JpQU9JQkpxYWkwQUFEWUNCQ0FPUVFGcUlRNE1BUXNMSUJKQkFtb2hFaUFFSUF4cUlBcHhJUXdNQUFzQUJTQVJJQkJCQVhScUxnRUFJUVVnQmlBTWFpSUVJQk0zQUFCQkNDRU9BMEFnQlNBT1NnUkFJQVFnRG1vZ0V6Y0FBQ0FPUVFocUlRNE1BUXNMSUJOQ2dZS0VpSkNnd0lBQmZDRVRJQkJCQVdvaEVDQUZJQXhxSVF3TUFRc0FDd0FMSUE5QkEzWWdEMEVCZG1wQkEyb2hCVUVBSVJCQkFDRU9BMEFnQ1NBUVJnMEJRUUFoRENBUklCQkJBWFJxTGdFQUlnUkJBQ0FFUVFCS0d5RUVBMEFnQkNBTVJ3UkFJQXNnRGtFRGRHb2dFRFlDQkFOQUlBVWdEbW9nQ25FaURpQVNTdzBBQ3lBTVFRRnFJUXdNQVFzTElCQkJBV29oRUF3QUN3QUxJQUpCQVdvaEJVRUFJUXdEUUNBTUlBOUhCRUFnRFNBTElBeEJBM1JxSWdrb0FnUWlCRUVCZEdvaUFpQUNMd0VBSWdaQkFXbzdBUUFnQ1NBRklBWm5RV0J6YWlJQ09nQURJQWtnQmlBQ2RDQVBhenNCQUNBSklBZ2dCRUVDZENJQ2FpZ0NBRG9BQWlBSklBSWdCMm9vQWdBMkFnUWdERUVCYWlFTURBRUxDeUFCSUFBMkFnQWdBeUVQQ3lBUlFZQUJhaVFBSUE4TDdWb0NPMzhHZmlNQVFlQUJheUlFSkFBQ1FFR3c3QWtRQlNJRlJRUkFRVUFoQnd3QkN5QUZRZ0EzQXZUcUFTQUZRUUEyQXNUckFTQUZRUUEyQXJUckFTQUZRZ0EzQXB6ckFTQUZRUUEyQXJqcEFTQUZRUUEyQXF6c0NTQUZRZ0EzQXRUckFTQUZRZ0EzQXF6ckFTQUZRZ0EzQTRqckFTQUZRZ0EzQXVUcUFTQUZRZ0EzQXVUckFTQUZRWUdBZ01BQU5nSzg2d0VnQlVJQU53S2s2d0VnQlVIODZnRnFRUUEyQWdBZ0JVR1E2d0ZxUWdBM0F3QWdCUkFZSUFWQnJOVUJhaUVVSUFWQitPc0JhaUVjSUFWQnNPb0JhaUVpSUFWQm9EQnFJU29nQlVHWUlHb2hLeUFGUWFqUUFHb2hIaUFGUVJCcUlTd2dCVUVJYWlFb0lBVkJCR29oTFNBRlFjRHBBV29oS1NBRlFZanJBV29nQkVHVUFXb2hMeUFFUVl3QmFpRXdJQVJCaEFGcUlURWdCRUhjQUdvaE1pQUVRZFFBYWlFeklBUkJ6QUJxSVRRZ0FDRWRBa0FDUUFKQUFrQUNRQU5BUVFGQkJTQUZLQUxrNmdFYklRWUNRQU5BSUFNZ0Jra05BU0FDS0FBQVFYQnhRZERVdE1JQlJnUkFRYmgvSVFjZ0EwRUlTUTBJSUFJb0FBUWlEa0YzU3dSQVFYSWhCd3dKQ3lBRElBNUJDR29pQ1VrTkNDQU9RWUIvU3dSQUlBa2hCd3dKQ3lBRElBbHJJUU1nQWlBSmFpRUNEQUVMQ3lBRlFnQTNBcXpwQVNBRlFnQTNBK2pwQVNBRlFRQTJBcGpyQVNBRlFnQTNBNERxQVNBRlFnTTNBL2pwQVNBRlFiVHBBV3BDQURjQ0FDQUZRZkRwQVdwQ0FEY0RBQ0FGUWFqUUFHb2lDVUdNZ0lEZ0FEWUNBQ0FGUWF6UUFXcEI0QklwQWdBM0FnQWdCVUcwMEFGcVFlZ1NLQUlBTmdJQUlBVWdCVUVRYWpZQ0FDQUZJQVZCb0RCcU5nSUVJQVVnQlVHWUlHbzJBZ2dnQlNBSk5nSU1JQVZCQVVFRklBVW9BdVRxQVJzMkFyenBBUUpBSUFGRkRRQWdCU2dDck9rQklna2dIVVlOQUNBRklBazJBcmpwQVNBRklCMDJBcXpwQVNBRktBS3c2UUVoRGlBRklCMDJBckRwQVNBRklCMGdEaUFKYTJvMkFyVHBBUXRCdUg4aENTQURRUVZCQ1NBRktBTGs2Z0VpQmh0SkRRVWdBa0VCUVFVZ0Joc2dCaEFhSWc1QmlIOUxCRUFnRGlFSkRBVUxJQU1nRGtFRGFra05CU0FwSUFJZ0RpQUdFQmtpQmtHSWYwc0VRQ0FHSVFrTUJRc2dCZzBGQWtBQ1FDQUZLQUtvNndGQkFVY05BQ0FGS0FLazZ3RWlDVVVOQUNBRktBS1U2d0ZGRFFBZ0NTZ0NCRUVCYXlJSElBVW9BdHpwQVNJS3JVS0hsYSt2bUxiZW01NS9ma0xKejlteThlVzY2aWVGUWhlSlFzL1cwNzdTeDZ2WlFuNUMrZlBkOFpuMm1hc1dmQ0kvUWlHSUlEK0ZRcy9XMDc3U3g2dlpRbjRpUDBJZGlDQS9oVUw1ODkzeG1mYVpxeForSWo5Q0lJZ2dQNFduY1NFR0lBa29BZ0FoRlFOQVFRQWhDQUpBSUJVZ0JrRUNkR29vQWdBaUNVVU5BQ0FKS0FJSVFRaEpEUUFnQ1NnQ0JDSVNLQUFBUWJmSXd1RitSdzBBSUJJb0FBUWhDQXNnQ0NBS1J3UkFJQVlnQjNGQkFXb2hCaUFJRFFFTEN5QUpSUTBBSUFVUUdDQUZRWDgyQXFEckFTQUZJQWsyQXBUckFTQUZJQVVvQXR6cEFTSUlOZ0tZNndFTUFRc2dCU2dDM09rQklRZ0xBa0FnQ0VVTkFDQUZLQUtZNndFZ0NFWU5BRUZnSVFrTUJnc0NRQ0FGS0FMZzZRRUVRQ0FGSUFVb0F1anFBU0lKUlRZQzdPb0JJQWtOQVNBRlF2bnEwTkRueWFIazRRQTNBNmpxQVNBRlFnQTNBNkRxQVNBRlFzL1cwNzdTeDZ2WlFqY0RtT29CSUFWQzF1dUM3dXI5aWZYZ0FEY0RrT29CSUFWQ0FEY0RpT29CSUNKQkFFRW9FQU1hREFFTElBVkJBRFlDN09vQkN5QUJJQjFxSVNVZ0JTQUZLUVBvNlFFZ0RxMThOd1BvNlFFZ0F5QU9heUVESUFJZ0Rtb2hBaUFkSVE0RFFDQUNJQU1nQkVFc2FoQWRJaFZCaUg5TEJFQWdGU0VKREFZTElBTkJBMnNpTlNBVlNRMEVJQUpCQTJvaEcwRnNJUWtDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUVLQUlzRGdNQ0FRQVZDeUFWUWYvL0Iwc05FeUFWUVFOSkRSSWdCU2tEeU9rQklUOENRQUpBSUJzdEFBQWlDVUVEY1NJYVFRRnJEZ01HQVFBSEN5QUZLQUtBNmdFTkFFRmlJUWtNRlFzZ0ZVRUZTUTBTSUJzb0FBQWhBd0ovQWtBQ1FBSkFJQWxCQW5aQkEzRWlDVUVDYXc0Q0FRSUFDeUFKUVFCSElRY2dBMEVFZGtIL0IzRWhDMEVESVFZZ0EwRU9ka0gvQjNFTUFndEJCQ0VHSUFOQkJIWkIvLzhBY1NFTFFRRWhCeUFEUVJKMkRBRUxJQU5CQkhaQi8vOFBjU0lMUVlDQUNFc05FMEVCSVFkQkJTRUdJQUl0QUFkQkNuUWdBMEVXZG5JTElnZ2dCbW9pQ1NBVlN3MFNBa0FnQzBHQkJra05BQ0FGS0FLYzZ3RkZEUUJCQUNFREEwQWdBMEdEZ0FGTERRRWdBMEZBYXlFRERBQUxBQXNnQmlBYmFpRVBJQnBCQTBjTkJpQUZLQUlNSWdJdEFBRkJDSFFoQXlBSERRY2dBMFVOQ0NBRVFmQUFhaUFQSUFnUURTSURRWWgvU3cwSklBSkJCR29oQmlBTElCeHFJaEpCQTJzaENrRUFJQUl2QVFKclFSOXhJUWNnSENFREEwQWdCRUh3QUdvUUQwVWdBeUFLU1hFRVFDQURJQVlnQkNnQ2NDSUlJQVFvQW5RaUQzUWdCM1pCQW5ScUlnSXZBUUE3QUFBZ0F5QUNMUUFEYWlJRElBWWdDQ0FQSUFJdEFBSnFJZ2gwSUFkMlFRSjBhaUlDTHdFQU93QUFJQVFnQ0NBQ0xRQUNhallDZENBRElBSXRBQU5xSVFNTUFRVWdFa0VDYXlFSUEwQWdCRUh3QUdvUUR5RVBJQVFvQW5BaENpQUVLQUowSVFJZ0F5QUlTeUFQY2tVRVFDQURJQVlnQ2lBQ2RDQUhka0VDZEdvaUNpOEJBRHNBQUNBRUlBSWdDaTBBQW1vMkFuUWdBeUFLTFFBRGFpRUREQUVMQ3dOQUlBTWdDRTBFUUNBRElBWWdDaUFDZENBSGRrRUNkR29pRHk4QkFEc0FBQ0FESUE4dEFBTnFJUU1nQWlBUExRQUNhaUVDREFFTEN3SkFJQU1nRWs4TkFDQURJQVlnQ2lBQ2RDQUhka0VDZEdvaUF5MEFBRG9BQUNBRExRQURRUUZHQkVBZ0FpQURMUUFDYWlFQ0RBRUxJQUpCSDBzTkFFRWdJQUlnQXkwQUFtb2lBaUFDUVNCUEd5RUNDMEZzUVd3Z0N5QUVLQUo0SUFRb0FueEhHeUFDUVNCSEd5RUREQXNMQUFzQUN5QUVLQUkwSWdJZ0pTQU9hMHNOQ2lBT1JRUkFRUUFoQ1NBQ0RRSU1EZ3NnRGlBYkxRQUFJQUlRQXhvZ0FpRUpEQXdMSUJVZ0pTQU9hMHNOQ1NBT0RRRkJBQ0VKSUJWRkRRd0xRYlovSVFrTUVRc2dEaUFiSUJVUUFob2dGU0VKREFvTElCd2dHd0ovQWtBQ1FBSkFJQWxCQW5aQkEzRkJBV3NPQXdFQUFnQUxJQWxCQTNZaEEwRUJEQUlMSUJzdkFBQkJCSFloQTBFQ0RBRUxJQlZCQkVrTkRpQUNMd0FESUFJdEFBVkJFSFJ5SWdKQmo0Q0FBVXNORGlBQ1FRUjJJUU5CQXdzaUFtb3RBQUFnQTBFZ2FoQURJUWtnQlNBRE5nS0E2d0VnQlNBSk5nTHc2Z0VnQWtFQmFpRUpEQVVMSUJVQ2Z3SkFBa0FDUUNBSlFRSjJRUU54UVFGckRnTUJBQUlBQ3lBSlFRTjJJUU5CQVF3Q0N5QWJMd0FBUVFSMklRTkJBZ3dCQ3lBQ0x3QURJQUl0QUFWQkVIUnlRUVIySVFOQkF3c2lBaUFEYWlJSlFTQnFTUVJBSUFrZ0ZVc05EU0FjSUFJZ0cyb2dBeEFDSVFJZ0JTQUROZ0tBNndFZ0JTQUNOZ0x3NmdFZ0FpQURhaUlDUWdBM0FCZ2dBa0lBTndBUUlBSkNBRGNBQ0NBQ1FnQTNBQUFNQlFzZ0JTQUROZ0tBNndFZ0JTQUNJQnRxTmdMdzZnRU1CQXNnQjBVRVFDQWVJQThnQ0NBVUVCUWlBa0dJZjBzZ0FpQUlUM0lORENBY0lBc2dBaUFQYWlBSUlBSnJJQjRRRlNFRERBTUxJQXRGSUFoRmNnMExJQXRCQ0hZaUF5QUlJQXRKQkg4Z0NFRUVkQ0FMYmdWQkR3dEJHR3dpQWtHTUNHb29BZ0JzSUFKQmlBaHFLQUlBYWlJR1FRTjJJQVpxSUFKQmdBaHFLQUlBSUFKQmhBaHFLQUlBSUFOc2Fra0VRQ01BUVJCckloQWtBQ0FlS0FJQUlRTWdGRUh3QkdwQkFFSHNBQkFESVFaQlZDRUNBa0FnQTBIL0FYRWlERUVNU3cwQUFrQWdGRUhjQ1dvZ0JpQVFRUWhxSUJCQkRHb2dEeUFJSUJSQjNBdHFJaGNRQ3lJU1FZaC9TdzBBSUJBb0Fnd2lCaUFNU3cwQklCUkJxQVZxSVEwZ0ZFR2tCV29oTmlBZVFRUnFJUkVnQTBHQWdJQjRjU0UzSUFaQkFXb2lFeUVDSUFZaEF3TkFJQUlpQjBFQmF5RUNJQU1pQ2tFQmF5RURJQlFnQ2tFQ2RHb29BdkFFUlEwQUMwRUJJQWNnQjBFQlRSc2hGa0VBSVFkQkFTRUNBMEFnQWlBV1J3UkFJQlFnQWtFQ2RDSURhaWdDOEFRaEdDQURJQTFxSUFjMkFnQWdBa0VCYWlFQ0lBY2dHR29oQnd3QkN3c2dEU0FITmdJQVFRQWhBaUFRS0FJSUlRTURRQ0FDSUFOSEJFQWdEU0FDSUJScVFkd0phaTBBQUNJWVFRSjBhaUlaSUJrb0FnQWlHVUVCYWpZQ0FDQVVJQmxCQVhScUloa2dHRG9BM1FVZ0dTQUNPZ0RjQlNBQ1FRRnFJUUlNQVFzTFFRQWhBeUFOUVFBMkFnQWdEQ0FHUVg5emFpRUdRUUVoQWdOQUlBSWdGa2NFUUNBVUlBSkJBblJxSWcwZ0F6WUNBQ0FOS0FMd0JDQUNJQVpxZENBRGFpRURJQUpCQVdvaEFnd0JDd3NnRENBVElBcHJJZ1pyUVFGcUlRb2dCaUVEQTBBZ0F5QUtTUVJBSUJRZ0EwRTBiR29oRFVFQklRSURRQ0FDSUJaSEJFQWdEU0FDUVFKMEloaHFJQlFnR0dvb0FnQWdBM1kyQWdBZ0FrRUJhaUVDREFFTEN5QURRUUZxSVFNTUFRc0xJQmNnRkVFMEVBSWhPQ0FVUVpBTWFpRTVJQk1nREdzaE9pQVVRZHdGYWlFWFFRQWhDZ05BQWtBQ1FDQUhJQXBIQkVCQkFTQU1JQk1nRnlBS1FRRjBhaUlDTFFBQklnMXJJZ05ySWhoMElSa2dBaTBBQUNFV0lEZ2dEVUVDZEdvaUh5Z0NBQ0VDSUFZZ0dFMEVRQ0EyUVFFZ0F5QTZhaUlOSUExQkFVd2JJaUJCQW5RaUpHb29BZ0FoRFNBNUlCUWdBMEUwYkdwQk5CQUNJU0VnRFVFQmRDRW1JQkVnQWtFQ2RHb2hJeUFnUVFGTkRRSWdBMEVRZEVHQWdQd0hjU0FXY2tHQWdJQUljaUVnSUNFZ0pHb29BZ0FoSkVFQUlRSURRQ0FDSUNSR0RRTWdJeUFDUVFKMGFpQWdOZ0VBSUFKQkFXb2hBZ3dBQ3dBTElBSWdBaUFaYWlJTklBSWdEVXNiSVEwZ0EwRVFkRUdBZ1B3SGNTQVdja0dBZ0lBSWNpRURBMEFnQWlBTlJnMERJQkVnQWtFQ2RHb2dBellCQUNBQ1FRRnFJUUlNQUFzQUN5QWVJQXhCRUhRZ04zSWdESEpCZ0FKeU5nSUFEQU1MSUFjZ0RXc2hKQ0FYSUNacUlTWkJBQ0VOQTBBZ0RTQWtSZzBCUVFFZ0dDQVRJQ1lnRFVFQmRHb2lKeTBBQVNJQ2F5STdhM1FpUENBaElBSkJBblJxSWlBb0FnQWlBbW9oUFNBRElEdHFRUkIwUVlDQS9BZHhJQ2N0QUFCQkNIUnlJQlp5UVlDQWdCQnlJU2NEUUNBaklBSkJBblJxSUNjMkFRQWdBa0VCYWlJQ0lEMUpEUUFMSUNBZ0lDZ0NBQ0E4YWpZQ0FDQU5RUUZxSVEwTUFBc0FDeUFmSUI4b0FnQWdHV28yQWdBZ0NrRUJhaUVLREFBTEFBc2dFaUVDQ3lBUVFSQnFKQUFnQWtHSWYwc2dBaUFJVDNJTkRDQWNJQXNnQWlBUGFpQUlJQUpySUI0UUZpRUREQU1MSUI0Z0R5QUlJQlFRRkNJQ1FZaC9TeUFDSUFoUGNnMExJQndnQ3lBQ0lBOXFJQWdnQW1zZ0hoQVhJUU1NQWdzZ0F3UkFJQndnQ3lBUElBZ2dBaEFXSVFNTUFnc2dIQ0FMSUE4Z0NDQUNFQmNoQXd3QkN5QWNJQXNnRHlBSUlBSVFGU0VEQ3lBRFFZaC9TdzBJSUFVZ0N6WUNnT3NCSUFVZ0hEWUM4T29CSUFWQkFUWUNnT29CSUJwQkFrWUVRQ0FGSUI0MkFnd0xJQXNnSEdvaUFrSUFOd0FBSUFKQ0FEY0FHQ0FDUWdBM0FCQWdBa0lBTndBSUlBbEJpSDlMRFFvTElBa2dGVVlOQ0NBVklBbHJJUVlnQlNnQ25Pc0JJUW9DUUNBSklCdHFJZ010QUFBaUQwVUVRRUVCSVFKQkFDRVBRYmgvSVFrZ0JrRUJSZzBCREFzTEFuOGdBMEVCYWlBUHdDSUNRUUJPRFFBYUlBSkJmMFlFUUNBR1FRTklEUXNnQXk4QUFVR0EvZ0ZxSVE4Z0EwRURhZ3dCQ3lBR1FRSklEUW9nQXkwQUFTQVBRUWgwY2tHQWdBSnJJUThnQTBFQ2Fnc2hFa0c0ZnlFSklCSkJBV29pQWlBVklCdHFJZ2RMRFFvZ0xDQUZJQkl0QUFBaUVrRUdka0VqUVFrZ0FpQUhJQUpyUWNBUVFkQVJRZkFTSUFVb0FvVHFBU0FLSUE4Z0ZCQWhJZ2xCaUg5TERRZ2dLeUFvSUJKQkJIWkJBM0ZCSDBFSUlBSWdDV29pQWlBSElBSnJRWUFMUVlBTVFZQVhJQVVvQW9UcUFTQUZLQUtjNndFZ0R5QVVFQ0VpQ0VHSWYwc05DRUZzSVFrZ0tpQXRJQkpCQW5aQkEzRkJORUVKSUFJZ0NHb2lBaUFISUFKclFZQU5RZUFPUVpBWklBVW9Bb1RxQVNBRktBS2M2d0VnRHlBVUVDRWlCMEdJZjBzTkNpQUNJQWRxSUFOcklnSWhDU0FDUVloL1N3MEtDeUFPSUE5QkFFeHlEUUVMUWJwL0lRa01DQXNnSlNBT2F5RUpJQVlnQW1zaEJpQUNJQU5xSVFjQ1FBSkFBa0FnQ2tVRVFDQVBRUWxJSUFVcEE4anBBVUtCZ0lBSVZISU5BaUFvS0FJQUlnSkJDR29oRWlBQ0tBSUVJUXBCQUNFRFFRQWhBZ05BSUFNZ0NuWkZCRUFnQWlBU0lBTkJBM1JxTFFBQ1FSWkxhaUVDSUFOQkFXb2hBd3dCQ3dzZ0JVRUFOZ0tjNndFZ0FrRUlJQXByZEVFVVR3MEJEQU1MSUFWQkFEWUNuT3NCQ3lBRUlBVW9BdkRxQVNJRE5nTGNBU0FKSUE1cUlSWWdBeUFGS0FLQTZ3RnFJUmNDUUNBUFJRUkFJQTRoQnd3QkN5QUZLQUs0NlFFaEdpQUZLQUswNlFFaEdDQUZLQUt3NlFFaEVpQUZRUUUyQW9UcUFVRUFJUU1EUUNBRFFRTkhCRUFnQkNBRFFRSjBJZ0pxSUFJZ0JXcEJyTkFCYWlnQ0FEWUNaQ0FEUVFGcUlRTU1BUXNMUVd3aENTQUVRVGhxSWdJZ0J5QUdFQTFCaUg5TERRTkJDQ0FQSUE5QkNFNGJJUjhnTkNBQ0lBVW9BZ0FRSGlBeklBSWdCU2dDQ0JBZUlESWdBaUFGS0FJRUVCNGdEaUFTYXlFWlFRQWhDQU5BSUFSQk9Hb1FEMEVEUmlBSUlCOU9ja1VFUUNBRUtBSlFJQVFvQWt4QkEzUnFLUUlBSWtDbklnZEJFSFlpRVVIL0FYRWhDeUFFS0FKZ0lBUW9BbHhCQTNScUtRSUFJa0duSWd4QkVIWWlJVUgvQVhFaEVDQUVLQUpZSUFRb0FsUkJBM1JxS1FJQUlrSkNJSWluSVFZZ1FVSWdpQ0JBUWlDSXB5RURBa0FnUWtJUWlLY2lDa0gvQVhFaUFrRUNUd1JBQWtBZ0FrRVpTU0EvUW9HQWdCQlVja1VFUUNBRVFTQWdCQ2dDUENJS2F5SU5JQUlnQWlBTlN4c2lFeUFLYWpZQ1BDQUdJQVFvQWpnZ0NuUkJBQ0FUYTNZZ0FpQVRheUlUZEdvaENpQUVRVGhxRUE4YUlBSWdEVTBOQVNBRUlBUW9BandpQWlBVGFqWUNQQ0FFS0FJNElBSjBRUUFnRTJ0MklBcHFJUW9NQVFzZ0JDQUNJQVFvQWp3aURXbzJBandnQkNnQ09DQU5kRUVBSUFwcmRpQUdhaUVLSUFSQk9Hb1FEeG9MSUFRcEFtUWhSQ0FFSUFvMkFtUWdCQ0JFTndKb0RBRUxBa0FnQWtVRVFDQURCRUFnQkNnQ1pDRUtEQU1MSUFRb0FtZ2hDZ3dCQ3lBRUlBUW9BandpQWtFQmFqWUNQQUovSUFZZ0EwVnFJQVFvQWpnZ0FuUkJIM1pxSWdKQkEwWUVRQ0FFS0FKa1FRRnJEQUVMSUFKQkFuUWdCR29vQW1RTElnWkZJQVpxSVFvZ0FrRUJSd1JBSUFRZ0JDZ0NhRFlDYkFzTElBUWdCQ2dDWkRZQ2FDQUVJQW8yQW1RTHB5RUNJRUZDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NQQ0lHSUJCcU5nSThJQVFvQWpnZ0JuUkJBQ0FoYTNZZ0Ftb2hBZ3NnQ3lBUWFrRVVUd1JBSUFSQk9Hb1FEeG9MSUVCQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDUENJR0lBdHFOZ0k4SUFRb0FqZ2dCblJCQUNBUmEzWWdBMm9oQXdzZ0JFRTRhaEFQR2lBRUlBUW9BamdpQmtFQUlBZEJHSFlpQ3lBRUtBSThhaUlRYTNZZ0MwRUNkRUdnSFdvb0FnQnhJQWRCLy84RGNXbzJBa3dnQkNBUUlBeEJHSFlpQjJvaUN6WUNQQ0FFSUFkQkFuUkJvQjFxS0FJQUlBWkJBQ0FMYTNaeElBeEIvLzhEY1dvMkFsd2dCRUU0YWhBUEdpQUVJRUtuSWdaQkdIWWlCeUFFS0FJOGFpSUxOZ0k4SUFRZ0IwRUNkRUdnSFdvb0FnQWdCQ2dDT0VFQUlBdHJkbkVnQmtILy93TnhhallDVkNBRVFmQUFhaUFJUVF4c2FpSUdJQW8yQWdnZ0JpQUNOZ0lFSUFZZ0F6WUNBQ0FJUVFGcUlRZ2dBeUFaYWlBQ2FpRVpEQUVMQ3lBSUlCOUlEUU1nRmtFZ2F5RWhJQTRoQndOQUlBUkJPR29RRDBFRFJpQUlJQTlPY2tVRVFDQUVLQUpRSUFRb0FreEJBM1JxS1FJQUlrQ25JZ1pCRUhZaUkwSC9BWEVoQ2lBRUtBSmdJQVFvQWx4QkEzUnFLUUlBSWtHbklnMUJFSFlpSUVIL0FYRWhFeUFFS0FKWUlBUW9BbFJCQTNScUtRSUFJa0pDSUlpbklRTWdRVUlnaUNCQVFpQ0lweUVMQWtBZ1FrSVFpS2NpREVIL0FYRWlBa0VDVHdSQUFrQWdBa0VaU1NBL1FvR0FnQkJVY2tVRVFDQUVRU0FnQkNnQ1BDSU1heUlSSUFJZ0FpQVJTeHNpRUNBTWFqWUNQQ0FESUFRb0FqZ2dESFJCQUNBUWEzWWdBaUFRYXlJTWRHb2hFQ0FFUVRocUVBOGFJQUlnRVUwTkFTQUVJQVFvQWp3aUFpQU1hallDUENBRUtBSTRJQUowUVFBZ0RHdDJJQkJxSVJBTUFRc2dCQ0FDSUFRb0Fqd2lFR28yQWp3Z0JDZ0NPQ0FRZEVFQUlBeHJkaUFEYWlFUUlBUkJPR29RRHhvTElBUXBBbVFoUkNBRUlCQTJBbVFnQkNCRU53Sm9EQUVMQWtBZ0FrVUVRQ0FMQkVBZ0JDZ0NaQ0VRREFNTElBUW9BbWdoRUF3QkN5QUVJQVFvQWp3aUFrRUJhallDUEFKL0lBTWdDMFZxSUFRb0FqZ2dBblJCSDNacUlnSkJBMFlFUUNBRUtBSmtRUUZyREFFTElBSkJBblFnQkdvb0FtUUxJZ05GSUFOcUlSQWdBa0VCUndSQUlBUWdCQ2dDYURZQ2JBc0xJQVFnQkNnQ1pEWUNhQ0FFSUJBMkFtUUxweUVNSUVGQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDUENJQ0lCTnFOZ0k4SUFRb0FqZ2dBblJCQUNBZ2EzWWdER29oREFzZ0NpQVRha0VVVHdSQUlBUkJPR29RRHhvTElFQkNnSUQ4QjROUVJRUkFJQVFnQkNnQ1BDSUNJQXBxTmdJOElBUW9BamdnQW5SQkFDQWphM1lnQzJvaEN3c2dCRUU0YWhBUEdpQUVJQVFvQWpnaUFrRUFJQVpCR0hZaUF5QUVLQUk4YWlJS2EzWWdBMEVDZEVHZ0hXb29BZ0J4SUFaQi8vOERjV28yQWt3Z0JDQUtJQTFCR0hZaUEyb2lCallDUENBRUlBTkJBblJCb0IxcUtBSUFJQUpCQUNBR2EzWnhJQTFCLy84RGNXbzJBbHdnQkVFNGFoQVBHaUFFSUVLbklnSkJHSFlpQXlBRUtBSThhaUlHTmdJOElBUWdBMEVDZEVHZ0hXb29BZ0FnQkNnQ09FRUFJQVpyZG5FZ0FrSC8vd054YWpZQ1ZBSkFBa0FDUUNBRUtBTGNBU0lESUFSQjhBQnFJQWhCQjNGQkRHeHFJaE1vQWdBaUVXb2lJeUFYU3cwQUlBY2dFeWdDQkNJTklCRnFJZ3BxSUNGTERRQWdDa0VnYWlBV0lBZHJUUTBCQ3lBRUlCTW9BZ2cyQWhnZ0JDQVRLUUlBTndNUUlBY2dGaUFFUVJCcUlBUkIzQUZxSUJjZ0VpQVlJQm9RSHlFS0RBRUxJQWNnRVdvaEFpQVRLQUlJSVFZZ0J5QURLUUFBTndBQUlBY2dBeWtBQ0RjQUNBSkFJQkZCRVVrTkFDQUhJQU1wQUJBM0FCQWdCeUFES1FBWU53QVlJQkZCRUd0QkVVZ05BQ0FEUVJCcUlRTWdCMEVnYWlFUkEwQWdFU0FES1FBUU53QUFJQkVnQXlrQUdEY0FDQ0FSSUFNcEFDQTNBQkFnRVNBREtRQW9Od0FZSUFOQklHb2hBeUFSUVNCcUloRWdBa2tOQUFzTElBSWdCbXNoQXlBRUlDTTJBdHdCSUFJZ0Vtc2dCa2tFUUNBR0lBSWdHR3RMRFFjZ0dpQWFJQU1nRW1zaUEyb2lFU0FOYWs4RVFDQUNJQkVnRFJBS0dnd0NDeUFESUExcUlRMGdBaUFSUVFBZ0Eyc1FDaUFEYXlFQ0lCSWhBd3NnQmtFUVR3UkFJQUlnQXlrQUFEY0FBQ0FDSUFNcEFBZzNBQWdnRFVFUlNBMEJJQUlnRFdvaEJpQUNRUkJxSVFJRFFDQUNJQU1wQUJBM0FBQWdBaUFES1FBWU53QUlJQUlnQXlrQUlEY0FFQ0FDSUFNcEFDZzNBQmdnQTBFZ2FpRURJQUpCSUdvaUFpQUdTUTBBQ3d3QkN3SkFJQVpCQjAwRVFDQUNJQU10QUFBNkFBQWdBaUFETFFBQk9nQUJJQUlnQXkwQUFqb0FBaUFDSUFNdEFBTTZBQU1nQWlBRElBWkJBblFpQmtIQUhtb29BZ0JxSWdNb0FBQTJBQVFnQXlBR1FlQWVhaWdDQUdzaEF3d0JDeUFDSUFNcEFBQTNBQUFMSUExQkNVa05BQ0FDSUExcUlSRWdBa0VJYWlJR0lBTkJDR29pQTJ0QkQwd0VRQU5BSUFZZ0F5a0FBRGNBQUNBRFFRaHFJUU1nQmtFSWFpSUdJQkZKRFFBTUFnc0FDeUFHSUFNcEFBQTNBQUFnQmlBREtRQUlOd0FJSUExQkdVZ05BQ0FDUVJocUlRSURRQ0FDSUFNcEFCQTNBQUFnQWlBREtRQVlOd0FJSUFJZ0F5a0FJRGNBRUNBQ0lBTXBBQ2czQUJnZ0EwRWdhaUVESUFKQklHb2lBaUFSU1EwQUN3c2dDa0dJZjBzRVFDQUtJUWtNQmdVZ0V5QVFOZ0lJSUJNZ0REWUNCQ0FUSUFzMkFnQWdDRUVCYWlFSUlBY2dDbW9oQnlBTElCbHFJQXhxSVJrTUFnc0FDd3NnQ0NBUFNBMERJQWdnSDJzaEJnTkFBa0FnQmlBUFRnUkFRUUFoQXdOQUlBTkJBMFlOQWlBRklBTkJBblFpQW1wQnJOQUJhaUFDSUFScUtBSmtOZ0lBSUFOQkFXb2hBd3dBQ3dBTEFrQUNRQUpBSUFRb0F0d0JJZ01nQkVId0FHb2dCa0VIY1VFTWJHb2lDQ2dDQUNJTWFpSVFJQmRMRFFBZ0J5QUlLQUlFSWdzZ0RHb2lDbW9nSVVzTkFDQUtRU0JxSUJZZ0IydE5EUUVMSUFRZ0NDZ0NDRFlDS0NBRUlBZ3BBZ0EzQXlBZ0J5QVdJQVJCSUdvZ0JFSGNBV29nRnlBU0lCZ2dHaEFmSVFvTUFRc2dCeUFNYWlFQ0lBZ29BZ2doQ0NBSElBTXBBQUEzQUFBZ0J5QURLUUFJTndBSUFrQWdERUVSU1EwQUlBY2dBeWtBRURjQUVDQUhJQU1wQUJnM0FCZ2dERUVRYTBFUlNBMEFJQU5CRUdvaEF5QUhRU0JxSVF3RFFDQU1JQU1wQUJBM0FBQWdEQ0FES1FBWU53QUlJQXdnQXlrQUlEY0FFQ0FNSUFNcEFDZzNBQmdnQTBFZ2FpRURJQXhCSUdvaURDQUNTUTBBQ3dzZ0FpQUlheUVESUFRZ0VEWUMzQUVnQWlBU2F5QUlTUVJBSUFnZ0FpQVlhMHNOQnlBYUlCb2dBeUFTYXlJRGFpSU1JQXRxVHdSQUlBSWdEQ0FMRUFvYURBSUxJQU1nQzJvaEN5QUNJQXhCQUNBRGF4QUtJQU5ySVFJZ0VpRURDeUFJUVJCUEJFQWdBaUFES1FBQU53QUFJQUlnQXlrQUNEY0FDQ0FMUVJGSURRRWdBaUFMYWlFSUlBSkJFR29oQWdOQUlBSWdBeWtBRURjQUFDQUNJQU1wQUJnM0FBZ2dBaUFES1FBZ053QVFJQUlnQXlrQUtEY0FHQ0FEUVNCcUlRTWdBa0VnYWlJQ0lBaEpEUUFMREFFTEFrQWdDRUVIVFFSQUlBSWdBeTBBQURvQUFDQUNJQU10QUFFNkFBRWdBaUFETFFBQ09nQUNJQUlnQXkwQUF6b0FBeUFDSUFNZ0NFRUNkQ0lJUWNBZWFpZ0NBR29pQXlnQUFEWUFCQ0FESUFoQjRCNXFLQUlBYXlFRERBRUxJQUlnQXlrQUFEY0FBQXNnQzBFSlNRMEFJQUlnQzJvaERDQUNRUWhxSWdnZ0EwRUlhaUlEYTBFUFRBUkFBMEFnQ0NBREtRQUFOd0FBSUFOQkNHb2hBeUFJUVFocUlnZ2dERWtOQUF3Q0N3QUxJQWdnQXlrQUFEY0FBQ0FJSUFNcEFBZzNBQWdnQzBFWlNBMEFJQUpCR0dvaEFnTkFJQUlnQXlrQUVEY0FBQ0FDSUFNcEFCZzNBQWdnQWlBREtRQWdOd0FRSUFJZ0F5a0FLRGNBR0NBRFFTQnFJUU1nQWtFZ2FpSUNJQXhKRFFBTEN5QUtRWWgvU3dSQUlBb2hDUXdHQlNBR1FRRnFJUVlnQnlBS2FpRUhEQUlMQUFzTElBUW9BdHdCSVFNTFFicC9JUWtnRnlBRGF5SUNJQllnQjJ0TERRSWdCd1IvSUFjZ0F5QUNFQUlnQW1vRlFRQUxJQTVySVFrTUFnc2dCVUVBTmdLYzZ3RUxJQVFnQlNnQzhPb0JJZ00yQXR3QklBa2dEbW9oRENBRElBVW9Bb0RyQVdvaEVBSkFJQTlGQkVBZ0RpRUdEQUVMSUFVb0FyanBBU0VOSUFVb0FyVHBBU0VUSUFVb0FyRHBBU0VTSUFWQkFUWUNoT29CUVFBaEF3TkFJQU5CQTBjRVFDQUVJQU5CQW5RaUFtb2dBaUFGYWtHczBBRnFLQUlBTmdLY0FTQURRUUZxSVFNTUFRc0xRV3doQ1NBRVFmQUFhaUlDSUFjZ0JoQU5RWWgvU3cwQklERWdBaUFGS0FJQUVCNGdNQ0FDSUFVb0FnZ1FIaUF2SUFJZ0JTZ0NCQkFlSUF4QklHc2hHQ0FPSVFZRFFDQUVLQUtJQVNBRUtBS0VBVUVEZEdvcEFnQWlRS2NpQ2tFUWRpSVpRZjhCY1NFTElBUW9BcGdCSUFRb0FwUUJRUU4wYWlrQ0FDSkJweUlXUVJCMkloOUIvd0Z4SVJvZ0JDZ0NrQUVnQkNnQ2pBRkJBM1JxS1FJQUlrSkNJSWluSVFjZ1FVSWdpQ0JBUWlDSXB5RURBa0FnUWtJUWlLY2lDRUgvQVhFaUFrRUNUd1JBQWtBZ0FrRVpTU0EvUW9HQWdCQlVja1VFUUNBRVFTQWdCQ2dDZENJSWF5SVJJQUlnQWlBUlN4c2lGeUFJYWpZQ2RDQUhJQVFvQW5BZ0NIUkJBQ0FYYTNZZ0FpQVhheUlYZEdvaENDQUVRZkFBYWhBUEdpQUNJQkZORFFFZ0JDQUVLQUowSWdJZ0YybzJBblFnQkNnQ2NDQUNkRUVBSUJkcmRpQUlhaUVJREFFTElBUWdBaUFFS0FKMEloRnFOZ0owSUFRb0FuQWdFWFJCQUNBSWEzWWdCMm9oQ0NBRVFmQUFhaEFQR2dzZ0JDa0NuQUVoUkNBRUlBZzJBcHdCSUFRZ1JEY0NvQUVNQVFzQ1FDQUNSUVJBSUFNRVFDQUVLQUtjQVNFSURBTUxJQVFvQXFBQklRZ01BUXNnQkNBRUtBSjBJZ0pCQVdvMkFuUUNmeUFISUFORmFpQUVLQUp3SUFKMFFSOTJhaUlDUVFOR0JFQWdCQ2dDbkFGQkFXc01BUXNnQWtFQ2RDQUVhaWdDbkFFTElnZEZJQWRxSVFnZ0FrRUJSd1JBSUFRZ0JDZ0NvQUUyQXFRQkN3c2dCQ0FFS0FLY0FUWUNvQUVnQkNBSU5nS2NBUXVuSVFJZ1FVS0FnUHdIZzFCRkJFQWdCQ0FFS0FKMElnY2dHbW8yQW5RZ0JDZ0NjQ0FIZEVFQUlCOXJkaUFDYWlFQ0N5QUxJQnBxUVJSUEJFQWdCRUh3QUdvUUR4b0xJRUJDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NkQ0lISUF0cU5nSjBJQVFvQW5BZ0IzUkJBQ0FaYTNZZ0Eyb2hBd3NnQkVId0FHb1FEeG9nQkNBRUtBSndJZ2RCQUNBS1FSaDJJZ3NnQkNnQ2RHb2lHbXQySUF0QkFuUkJvQjFxS0FJQWNTQUtRZi8vQTNGcU5nS0VBU0FFSUJvZ0ZrRVlkaUlLYWlJTE5nSjBJQVFnQ2tFQ2RFR2dIV29vQWdBZ0IwRUFJQXRyZG5FZ0ZrSC8vd054YWpZQ2xBRWdCRUh3QUdvUUR4b2dCQ0JDcHlJSFFSaDJJZ29nQkNnQ2RHb2lDellDZENBRUlBcEJBblJCb0IxcUtBSUFJQVFvQW5CQkFDQUxhM1p4SUFkQi8vOERjV28yQW93QklBUWdBellDT0NBRUlBSTJBandnQkNBSU5nSkFBa0FDUUFKQUlBUW9BdHdCSWdzZ0Eyb2lGaUFRU3cwQUlBWWdBaUFEYWlJS2FpQVlTdzBBSUFwQklHb2dEQ0FHYTAwTkFRc2dCQ0FFUVVCcktBSUFOZ0lJSUFRZ0JDa0RPRGNEQUNBR0lBd2dCQ0FFUWR3QmFpQVFJQklnRXlBTkVCOGhDZ3dCQ3lBRElBWnFJUWNnQmlBTEtRQUFOd0FBSUFZZ0N5a0FDRGNBQ0FKQUlBTkJFVWtOQUNBR0lBc3BBQkEzQUJBZ0JpQUxLUUFZTndBWUlBTkJFR3RCRVVnTkFDQUxRUkJxSVFNZ0JrRWdhaUVMQTBBZ0N5QURLUUFRTndBQUlBc2dBeWtBR0RjQUNDQUxJQU1wQUNBM0FCQWdDeUFES1FBb053QVlJQU5CSUdvaEF5QUxRU0JxSWdzZ0Iwa05BQXNMSUFjZ0NHc2hBeUFFSUJZMkF0d0JJQWNnRW1zZ0NFa0VRQ0FJSUFjZ0UydExEUVFnRFNBTklBTWdFbXNpQTJvaUN5QUNhazhFUUNBSElBc2dBaEFLR2d3Q0N5QUhJQXRCQUNBRGF4QUtJQVFnQWlBRGFpSUNOZ0k4SUFOcklRY2dFaUVEQ3lBSVFSQlBCRUFnQnlBREtRQUFOd0FBSUFjZ0F5a0FDRGNBQ0NBQ1FSRklEUUVnQWlBSGFpRUlJQWRCRUdvaEFnTkFJQUlnQXlrQUVEY0FBQ0FDSUFNcEFCZzNBQWdnQWlBREtRQWdOd0FRSUFJZ0F5a0FLRGNBR0NBRFFTQnFJUU1nQWtFZ2FpSUNJQWhKRFFBTERBRUxBa0FnQ0VFSFRRUkFJQWNnQXkwQUFEb0FBQ0FISUFNdEFBRTZBQUVnQnlBRExRQUNPZ0FDSUFjZ0F5MEFBem9BQXlBSElBTWdDRUVDZENJSVFjQWVhaWdDQUdvaUF5Z0FBRFlBQkNBRElBaEI0QjVxS0FJQWF5RUREQUVMSUFjZ0F5a0FBRGNBQUFzZ0FrRUpTUTBBSUFJZ0Iyb2hDeUFIUVFocUlnZ2dBMEVJYWlJRGEwRVBUQVJBQTBBZ0NDQURLUUFBTndBQUlBTkJDR29oQXlBSVFRaHFJZ2dnQzBrTkFBd0NDd0FMSUFnZ0F5a0FBRGNBQUNBSUlBTXBBQWczQUFnZ0FrRVpTQTBBSUFkQkdHb2hBZ05BSUFJZ0F5a0FFRGNBQUNBQ0lBTXBBQmczQUFnZ0FpQURLUUFnTndBUUlBSWdBeWtBS0RjQUdDQURRU0JxSVFNZ0FrRWdhaUlDSUF0SkRRQUxDeUFLUVloL1N3UkFJQW9oQ1F3REN5QUdJQXBxSVFZZ0JFSHdBR29RRHlFRElBOUJBV3NpRHcwQUMwRUFJUUlnQTBFQ1NRMEJBMEFnQWtFRFJ3UkFJQVVnQWtFQ2RDSURha0dzMEFGcUlBTWdCR29vQXB3Qk5nSUFJQUpCQVdvaEFnd0JDd3NnQkNnQzNBRWhBd3RCdW44aENTQVFJQU5ySWdJZ0RDQUdhMHNOQUNBR0JIOGdCaUFESUFJUUFpQUNhZ1ZCQUFzZ0Rtc2hDUXNnQ1VHSWYwc05CZ3NDUUNBRktBTHM2Z0ZGRFFBZ0JTQUZLUU9JNmdFZ0NhMThOd09JNmdFQ1FDQUZLQUxRNmdFaUFpQUphaUlJUVI5TkJFQWdEa1VOQVNBQ0lDSnFJQTRnQ1JBQ0dpQUZLQUxRNmdFZ0NXb2hDQXdCQ3lBT0lRTWdBZ1JBSUFJZ0ltb2dBMEVnSUFKckVBSWFJQVVvQXREcUFTRUNJQVZCQURZQzBPb0JJQVVnQlNrRGtPb0JJQVVwQUxEcUFVTFAxdE8rMHNlcjJVSitmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZqY0RrT29CSUFVZ0JTa0RtT29CSUFVcEFManFBVUxQMXRPKzBzZXIyVUorZkVJZmlVS0hsYSt2bUxiZW01NS9mamNEbU9vQklBVWdCU2tEb09vQklBVXBBTURxQVVMUDF0Tyswc2VyMlVKK2ZFSWZpVUtIbGErdm1MYmVtNTUvZmpjRG9Pb0JJQVVnQlNrRHFPb0JJQVVwQU1qcUFVTFAxdE8rMHNlcjJVSitmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZqY0RxT29CSUFNZ0FtdEJJR29oQXdzZ0NTQU9haUlDSUFOQklHcFBCRUFnQWtFZ2F5RUdJQVVwQTZqcUFTRS9JQVVwQTZEcUFTRkFJQVVwQTVqcUFTRkJJQVVwQTVEcUFTRkNBMEFnQXlrQUdFTFAxdE8rMHNlcjJVSitJRDk4UWgrSlFvZVZyNitZdHQ2Ym5uOStJVDhnQXlrQUVFTFAxdE8rMHNlcjJVSitJRUI4UWgrSlFvZVZyNitZdHQ2Ym5uOStJVUFnQXlrQUNFTFAxdE8rMHNlcjJVSitJRUY4UWgrSlFvZVZyNitZdHQ2Ym5uOStJVUVnQXlrQUFFTFAxdE8rMHNlcjJVSitJRUo4UWgrSlFvZVZyNitZdHQ2Ym5uOStJVUlnQTBFZ2FpSURJQVpORFFBTElBVWdQemNEcU9vQklBVWdRRGNEb09vQklBVWdRVGNEbU9vQklBVWdRamNEa09vQkN5QUNJQU5ORFFFZ0lpQURJQUlnQTJzaUNCQUNHZ3NnQlNBSU5nTFE2Z0VMSURVZ0ZXc2hBeUFWSUJ0cUlRSWdDU0FPYWlFT0lBUW9BakJGRFFBTElDa3BBd0FpUDBKL1VTQS9JQTRnSFd1c1VYSkZCRUJCYkNFSkRBWUxJQVVvQXVEcEFRUkFRV29oQ1NBRFFRUkpEUVlnQlNnQzZPb0JSUVJBSUNJZ0JTZ0MwT29CYWlFS0FuNGdCU2tEaU9vQklqOUNJRm9FUUNBRktRT1k2Z0VpUUVJSGlTQUZLUU9RNmdFaVFVSUJpWHdnQlNrRG9Pb0JJa0pDRElsOElBVXBBNmpxQVNKRFFoS0pmQ0JCUXMvVzA3N1N4NnZaUW41Q0g0bENoNVd2cjVpMjNwdWVmMzZGUW9lVnI2K1l0dDZibm45K1FwMmp0ZXFEc1kySytnQjlJRUJDejliVHZ0TEhxOWxDZmtJZmlVS0hsYSt2bUxiZW01NS9mb1ZDaDVXdnI1aTIzcHVlZjM1Q25hTzE2b094allyNkFIMGdRa0xQMXRPKzBzZXIyVUorUWgrSlFvZVZyNitZdHQ2Ym5uOStoVUtIbGErdm1MYmVtNTUvZmtLZG83WHFnN0dOaXZvQWZTQkRRcy9XMDc3U3g2dlpRbjVDSDRsQ2g1V3ZyNWkyM3B1ZWYzNkZRb2VWcjYrWXR0NmJubjkrUXAyanRlcURzWTJLK2dCOURBRUxJQVVwQTZEcUFVTEZ6OW15OGVXNjZpZDhDeUEvZkNFL0lDSWhCZ05BSUFvZ0JrRUlhaUlIVHdSQUlBWXBBQUJDejliVHZ0TEhxOWxDZmtJZmlVS0hsYSt2bUxiZW01NS9maUEvaFVJYmlVS0hsYSt2bUxiZW01NS9ma0tkbzdYcWc3R05pdm9BZlNFL0lBY2hCZ3dCQ3dzQ1FDQUtJQVpCQkdvaUNFa0VRQ0FHSVFnTUFRc2dCalVBQUVLSGxhK3ZtTGJlbTU1L2ZpQS9oVUlYaVVMUDF0Tyswc2VyMlVKK1F2bnozZkdaOXBtckZud2hQd3NEUUNBSUlBcEpCRUFnQ0RFQUFFTEZ6OW15OGVXNjZpZCtJRCtGUWd1SlFvZVZyNitZdHQ2Ym5uOStJVDhnQ0VFQmFpRUlEQUVMQ3lBQ0tBQUFJRDlDSVlnZ1A0VkN6OWJUdnRMSHE5bENmaUkvUWgySUlEK0ZRdm56M2ZHWjlwbXJGbjRpUDBJZ2lDQS9oYWRIRFFjTElBTkJCR3NoQXlBQ1FRUnFJUUlMSUE0Z0hXc2lDVUdKZjA4TkJDQUJJQWxySVFFZ0NTQWRhaUVkUVFFaFBnd0JDd3RCdUg4aEJ5QUREUVFnSFNBQWF5RUhEQVFMUVd3aENRd0JDMEc0ZnlFSkMwRzRmeUVISUFsQmRrWWdQbkVOQVFzZ0NTRUhDeWdDQUEwQUlBVkIvT29CYWlnQ0FDRUJJQVZCK09vQmFpZ0NBQ0VBSUFVUUdDQUZLQUt3NndFZ0FDQUJFQk1nQlVFQU5nS3c2d0VnQlNnQ3BPc0JJZ0lFUUFKQUFrQUNRQUpBSUFJb0FnQWlBd1JBSUFCRkRRSWdBU0FESUFBUkFnQU1BUXNnQUVVTkFnc2dBU0FDSUFBUkFnQU1BZ3NnQXhBR0N5QUNFQVlMSUFWQkFEWUNwT3NCQ3lBQUJFQWdBU0FGSUFBUkFnQU1BUXNnQlJBR0N5QUVRZUFCYWlRQUlBY0xDNmdWQ1FCQmlBZ0xEUUVBQUFBQkFBQUFBZ0FBQUFJQVFhQUlDN01HQVFBQUFBRUFBQUFDQUFBQUFnQUFBQ1lBQUFDQ0FBQUFJUVVBQUVvQUFBQm5DQUFBSmdBQUFNQUJBQUNBQUFBQVNRVUFBRW9BQUFDK0NBQUFLUUFBQUN3Q0FBQ0FBQUFBU1FVQUFFb0FBQUMrQ0FBQUx3QUFBTW9DQUFDQUFBQUFpZ1VBQUVvQUFBQ0VDUUFBTlFBQUFITURBQUNBQUFBQW5RVUFBRW9BQUFDZ0NRQUFQUUFBQUlFREFBQ0FBQUFBNndVQUFFc0FBQUErQ2dBQVJBQUFBSjREQUFDQUFBQUFUUVlBQUVzQUFBQ3FDZ0FBU3dBQUFMTURBQUNBQUFBQXdRWUFBRTBBQUFBZkRRQUFUUUFBQUZNRUFBQ0FBQUFBSXdnQUFGRUFBQUNtRHdBQVZBQUFBSmtFQUFDQUFBQUFTd2tBQUZjQUFBQ3hFZ0FBV0FBQUFOb0VBQUNBQUFBQWJ3a0FBRjBBQUFBakZBQUFWQUFBQUVVRkFBQ0FBQUFBVkFvQUFHb0FBQUNNRkFBQWFnQUFBSzhGQUFDQUFBQUFkZ2tBQUh3QUFBQk9FQUFBZkFBQUFOSUNBQUNBQUFBQVl3Y0FBSkVBQUFDUUJ3QUFrZ0FBQUFBQUFBQUJBQUFBQVFBQUFBVUFBQUFOQUFBQUhRQUFBRDBBQUFCOUFBQUEvUUFBQVAwQkFBRDlBd0FBL1FjQUFQMFBBQUQ5SHdBQS9UOEFBUDEvQUFEOS93QUEvZjhCQVAzL0F3RDkvd2NBL2Y4UEFQMy9Id0Q5L3o4QS9mOS9BUDMvL3dEOS8vOEIvZi8vQS8zLy93ZjkvLzhQL2YvL0gvMy8vei85Ly85L0FBQUFBQUVBQUFBQ0FBQUFBd0FBQUFRQUFBQUZBQUFBQmdBQUFBY0FBQUFJQUFBQUNRQUFBQW9BQUFBTEFBQUFEQUFBQUEwQUFBQU9BQUFBRHdBQUFCQUFBQUFSQUFBQUVnQUFBQk1BQUFBVUFBQUFGUUFBQUJZQUFBQVhBQUFBR0FBQUFCa0FBQUFhQUFBQUd3QUFBQndBQUFBZEFBQUFIZ0FBQUI4QUFBQURBQUFBQkFBQUFBVUFBQUFHQUFBQUJ3QUFBQWdBQUFBSkFBQUFDZ0FBQUFzQUFBQU1BQUFBRFFBQUFBNEFBQUFQQUFBQUVBQUFBQkVBQUFBU0FBQUFFd0FBQUJRQUFBQVZBQUFBRmdBQUFCY0FBQUFZQUFBQUdRQUFBQm9BQUFBYkFBQUFIQUFBQUIwQUFBQWVBQUFBSHdBQUFDQUFBQUFoQUFBQUlnQUFBQ01BQUFBbEFBQUFKd0FBQUNrQUFBQXJBQUFBTHdBQUFETUFBQUE3QUFBQVF3QUFBRk1BQUFCakFBQUFnd0FBQUFNQkFBQURBZ0FBQXdRQUFBTUlBQUFERUFBQUF5QUFBQU5BQUFBRGdBQUFBd0FCQUVIZ0R3dFJBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFDQUFBQUF3QUFBQU1BQUFBRUFBQUFCQUFBQUFVQUFBQUhBQUFBQ0FBQUFBa0FBQUFLQUFBQUN3QUFBQXdBQUFBTkFBQUFEZ0FBQUE4QUFBQVFBRUhFRUF1TEFRRUFBQUFDQUFBQUF3QUFBQVFBQUFBRkFBQUFCZ0FBQUFjQUFBQUlBQUFBQ1FBQUFBb0FBQUFMQUFBQURBQUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQVNBQUFBRkFBQUFCWUFBQUFZQUFBQUhBQUFBQ0FBQUFBb0FBQUFNQUFBQUVBQUFBQ0FBQUFBQUFFQUFBQUNBQUFBQkFBQUFBZ0FBQUFRQUFBQUlBQUFBRUFBQUFDQUFBQUFBQUVBUVpBU0MrWUVBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFDQUFBQUF3QUFBQU1BQUFBRUFBQUFCZ0FBQUFjQUFBQUlBQUFBQ1FBQUFBb0FBQUFMQUFBQURBQUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQUJBQUFBQkFBQUFBZ0FBQUFBQUFBQUFRQUJBUVlBQUFBQUFBQUVBQUFBQUJBQUFBUUFBQUFBSUFBQUJRRUFBQUFBQUFBRkF3QUFBQUFBQUFVRUFBQUFBQUFBQlFZQUFBQUFBQUFGQndBQUFBQUFBQVVKQUFBQUFBQUFCUW9BQUFBQUFBQUZEQUFBQUFBQUFBWU9BQUFBQUFBQkJSQUFBQUFBQUFFRkZBQUFBQUFBQVFVV0FBQUFBQUFDQlJ3QUFBQUFBQU1GSUFBQUFBQUFCQVV3QUFBQUlBQUdCVUFBQUFBQUFBY0ZnQUFBQUFBQUNBWUFBUUFBQUFBS0JnQUVBQUFBQUF3R0FCQUFBQ0FBQUFRQUFBQUFBQUFBQkFFQUFBQUFBQUFGQWdBQUFDQUFBQVVFQUFBQUFBQUFCUVVBQUFBZ0FBQUZCd0FBQUFBQUFBVUlBQUFBSUFBQUJRb0FBQUFBQUFBRkN3QUFBQUFBQUFZTkFBQUFJQUFCQlJBQUFBQUFBQUVGRWdBQUFDQUFBUVVXQUFBQUFBQUNCUmdBQUFBZ0FBTUZJQUFBQUFBQUF3VW9BQUFBQUFBR0JFQUFBQUFRQUFZRVFBQUFBQ0FBQndXQUFBQUFBQUFKQmdBQ0FBQUFBQXNHQUFnQUFEQUFBQVFBQUFBQUVBQUFCQUVBQUFBZ0FBQUZBZ0FBQUNBQUFBVURBQUFBSUFBQUJRVUFBQUFnQUFBRkJnQUFBQ0FBQUFVSUFBQUFJQUFBQlFrQUFBQWdBQUFGQ3dBQUFDQUFBQVVNQUFBQUFBQUFCZzhBQUFBZ0FBRUZFZ0FBQUNBQUFRVVVBQUFBSUFBQ0JSZ0FBQUFnQUFJRkhBQUFBQ0FBQXdVb0FBQUFJQUFFQlRBQUFBQUFBQkFHQUFBQkFBQUFEd1lBZ0FBQUFBQU9CZ0JBQUFBQUFBMEdBQ0FBUVlBWEM0Y0NBUUFCQVFVQUFBQUFBQUFGQUFBQUFBQUFCZ1E5QUFBQUFBQUpCZjBCQUFBQUFBOEYvWDhBQUFBQUZRWDkveDhBQUFBREJRVUFBQUFBQUFjRWZRQUFBQUFBREFYOUR3QUFBQUFTQmYzL0F3QUFBQmNGL2Y5L0FBQUFCUVVkQUFBQUFBQUlCUDBBQUFBQUFBNEYvVDhBQUFBQUZBWDkvdzhBQUFBQ0JRRUFBQUFRQUFjRWZRQUFBQUFBQ3dYOUJ3QUFBQUFSQmYzL0FRQUFBQllGL2Y4L0FBQUFCQVVOQUFBQUVBQUlCUDBBQUFBQUFBMEYvUjhBQUFBQUV3WDkvd2NBQUFBQkJRRUFBQUFRQUFZRVBRQUFBQUFBQ2dYOUF3QUFBQUFRQmYzL0FBQUFBQndGL2YvL0R3QUFHd1g5Ly84SEFBQWFCZjMvL3dNQUFCa0YvZi8vQVFBQUdBWDkvLzhBUVpBWkM0WUVBUUFCQVFZQUFBQUFBQUFHQXdBQUFBQUFBQVFFQUFBQUlBQUFCUVVBQUFBQUFBQUZCZ0FBQUFBQUFBVUlBQUFBQUFBQUJRa0FBQUFBQUFBRkN3QUFBQUFBQUFZTkFBQUFBQUFBQmhBQUFBQUFBQUFHRXdBQUFBQUFBQVlXQUFBQUFBQUFCaGtBQUFBQUFBQUdIQUFBQUFBQUFBWWZBQUFBQUFBQUJpSUFBQUFBQUFFR0pRQUFBQUFBQVFZcEFBQUFBQUFDQmk4QUFBQUFBQU1HT3dBQUFBQUFCQVpUQUFBQUFBQUhCb01BQUFBQUFBa0dBd0lBQUJBQUFBUUVBQUFBQUFBQUJBVUFBQUFnQUFBRkJnQUFBQUFBQUFVSEFBQUFJQUFBQlFrQUFBQUFBQUFGQ2dBQUFBQUFBQVlNQUFBQUFBQUFCZzhBQUFBQUFBQUdFZ0FBQUFBQUFBWVZBQUFBQUFBQUJoZ0FBQUFBQUFBR0d3QUFBQUFBQUFZZUFBQUFBQUFBQmlFQUFBQUFBQUVHSXdBQUFBQUFBUVluQUFBQUFBQUNCaXNBQUFBQUFBTUdNd0FBQUFBQUJBWkRBQUFBQUFBRkJtTUFBQUFBQUFnR0F3RUFBQ0FBQUFRRUFBQUFNQUFBQkFRQUFBQVFBQUFFQlFBQUFDQUFBQVVIQUFBQUlBQUFCUWdBQUFBZ0FBQUZDZ0FBQUNBQUFBVUxBQUFBQUFBQUJnNEFBQUFBQUFBR0VRQUFBQUFBQUFZVUFBQUFBQUFBQmhjQUFBQUFBQUFHR2dBQUFBQUFBQVlkQUFBQUFBQUFCaUFBQUFBQUFCQUdBd0FCQUFBQUR3WURnQUFBQUFBT0JnTkFBQUFBQUEwR0F5QUFBQUFBREFZREVBQUFBQUFMQmdNSUFBQUFBQW9HQXdRQVFhUWRDOWtCQVFBQUFBTUFBQUFIQUFBQUR3QUFBQjhBQUFBL0FBQUFmd0FBQVA4QUFBRC9BUUFBL3dNQUFQOEhBQUQvRHdBQS94OEFBUDgvQUFEL2Z3QUEvLzhBQVAvL0FRRC8vd01BLy84SEFQLy9Ed0QvL3g4QS8vOC9BUC8vZndELy8vOEEvLy8vQWYvLy93UC8vLzhILy8vL0QvLy8veC8vLy84Ly8vLy9md0FBQUFBQkFBQUFBZ0FBQUFRQUFBQUFBQUFBQWdBQUFBUUFBQUFJQUFBQUFBQUFBQUVBQUFBQ0FBQUFBUUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQWdBQUFBSEFBQUFDQUFBQUFrQUFBQUtBQUFBQ3dCQmdCOExBNEFSQVE9PSI7dmFyIE9JPW5ldyB5QSxUST0hMTthc3luYyBmdW5jdGlvbiBjZShBLEksdCl7bGV0IGU9bnVsbDt0eXBlb2YgQSE9InN0cmluZyI/ZT1BLmhyZWY6QS5zdGFydHNXaXRoKCJodHRwIik/ZT1BOmU9YCR7SX0vJHtBfWAsZS5lbmRzV2l0aCgiLmpzIikmJihlPWUuc3Vic3RyaW5nKDAsZS5sZW5ndGgtMykpLGUuZW5kc1dpdGgoIi53YXNtIikmJihlPWUuc3Vic3RyaW5nKDAsZS5sZW5ndGgtNSkpO2xldCBnPWAke2V9Lndhc21gLHI9YXdhaXQgZEEuZ2V0KGAke2d9LnpzdGAse3Jlc3BvbnNlVHlwZToiYXJyYXlidWZmZXIiLHBhcmFtczp0fSk7VEl8fChhd2FpdCBPSS5pbml0KCksVEk9ITApO2xldCBzPU9JLmRlY29kZShuZXcgVWludDhBcnJheShyLmRhdGEpKS5idWZmZXI7cmV0dXJuKGF3YWl0IGltcG9ydChgJHtlfS5qc2ApKS5kZWZhdWx0KHt3YXNtQmluYXJ5OnN9KX12YXIgeEk9Y2U7dmFyIHdBPW5ldyBNYXA7YXN5bmMgZnVuY3Rpb24gZmUoQSxJLHQpe2xldCBlPUEsZz1BLHI9bnVsbDtyZXR1cm4gdHlwZW9mIEEhPSJzdHJpbmciJiYoZT1uZXcgVVJMKEEuaHJlZiksZz1lLmhyZWYpLHdBLmhhcyhnKT9yPWF3YWl0IHdBLmdldChnKTood0Euc2V0KGcseEkoZSxJLHQpKSxyPWF3YWl0IHdBLmdldChnKSkscn12YXIgUEk9ZmU7dmFyIGxlPXtUZXh0RmlsZToiVGV4dEZpbGUiLEJpbmFyeUZpbGU6IkJpbmFyeUZpbGUiLFRleHRTdHJlYW06IlRleHRTdHJlYW0iLEJpbmFyeVN0cmVhbToiQmluYXJ5U3RyZWFtIixJbWFnZToiSW1hZ2UiLE1lc2g6Ik1lc2giLFBvbHlEYXRhOiJQb2x5RGF0YSIsSnNvbkNvbXBhdGlibGU6Ikpzb25Db21wYXRpYmxlIn0sRD1sZTt2YXIgRGU9e0ludDg6ImludDgiLFVJbnQ4OiJ1aW50OCIsSW50MTY6ImludDE2IixVSW50MTY6InVpbnQxNiIsSW50MzI6ImludDMyIixVSW50MzI6InVpbnQzMiIsSW50NjQ6ImludDY0IixVSW50NjQ6InVpbnQ2NCIsU2l6ZVZhbHVlVHlwZToidWludDY0IixJZGVudGlmaWVyVHlwZToidWludDY0IixJbmRleFZhbHVlVHlwZToiaW50NjQiLE9mZnNldFZhbHVlVHlwZToiaW50NjQifSxwPURlO3ZhciB1ZT17RmxvYXQzMjoiZmxvYXQzMiIsRmxvYXQ2NDoiZmxvYXQ2NCIsU3BhY2VQcmVjaXNpb25UeXBlOiJmbG9hdDY0In0sUD11ZTtmdW5jdGlvbiBoZShBLEkpe2xldCB0PW51bGw7c3dpdGNoKEEpe2Nhc2UgcC5VSW50ODp7dD1uZXcgVWludDhBcnJheShJKTticmVha31jYXNlIHAuSW50ODp7dD1uZXcgSW50OEFycmF5KEkpO2JyZWFrfWNhc2UgcC5VSW50MTY6e3Q9bmV3IFVpbnQxNkFycmF5KEkpO2JyZWFrfWNhc2UgcC5JbnQxNjp7dD1uZXcgSW50MTZBcnJheShJKTticmVha31jYXNlIHAuVUludDMyOnt0PW5ldyBVaW50MzJBcnJheShJKTticmVha31jYXNlIHAuSW50MzI6e3Q9bmV3IEludDMyQXJyYXkoSSk7YnJlYWt9Y2FzZSBwLlVJbnQ2NDp7dHlwZW9mIGdsb2JhbFRoaXMuQmlnVWludDY0QXJyYXk9PSJmdW5jdGlvbiI/dD1uZXcgQmlnVWludDY0QXJyYXkoSSk6dD1uZXcgVWludDhBcnJheShJKTticmVha31jYXNlIHAuSW50NjQ6e3R5cGVvZiBnbG9iYWxUaGlzLkJpZ0ludDY0QXJyYXk9PSJmdW5jdGlvbiI/dD1uZXcgQmlnSW50NjRBcnJheShJKTp0PW5ldyBVaW50OEFycmF5KEkpO2JyZWFrfWNhc2UgUC5GbG9hdDMyOnt0PW5ldyBGbG9hdDMyQXJyYXkoSSk7YnJlYWt9Y2FzZSBQLkZsb2F0NjQ6e3Q9bmV3IEZsb2F0NjRBcnJheShJKTticmVha31jYXNlIm51bGwiOnt0PW51bGw7YnJlYWt9Y2FzZSBudWxsOnt0PW51bGw7YnJlYWt9ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlR5cGUgaXMgbm90IHN1cHBvcnRlZCBhcyBhIFR5cGVkQXJyYXkiKX1yZXR1cm4gdH12YXIgWT1oZTt2YXIgWkk9dHlwZW9mIGdsb2JhbFRoaXMuU2hhcmVkQXJyYXlCdWZmZXI9PSJmdW5jdGlvbiIsakk9bmV3IFRleHRFbmNvZGVyLFdJPW5ldyBUZXh0RGVjb2RlcigidXRmLTgiKTtmdW5jdGlvbiBkZShBLEkpe2xldCB0PXtmbGFnczoiciIsZW5jb2Rpbmc6ImJpbmFyeSJ9LGU9QS5mc19vcGVuKEksdC5mbGFncykscj1BLmZzX3N0YXQoSSkuc2l6ZSxpPW51bGw7Wkk/aT1uZXcgU2hhcmVkQXJyYXlCdWZmZXIocik6aT1uZXcgQXJyYXlCdWZmZXIocik7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoaSk7cmV0dXJuIEEuZnNfcmVhZChlLHMsMCxyLDApLEEuZnNfY2xvc2UoZSksc31mdW5jdGlvbiBWSShBLEksdCl7bGV0IGU9bnVsbDtaST9lPW5ldyBTaGFyZWRBcnJheUJ1ZmZlcih0KTplPW5ldyBBcnJheUJ1ZmZlcih0KTtsZXQgZz1uZXcgVWludDhBcnJheShlKSxyPW5ldyBVaW50OEFycmF5KEEuSEVBUFU4LmJ1ZmZlcixJLHQpO3JldHVybiBnLnNldChyKSxnfWZ1bmN0aW9uIHkoQSxJLHQsZSl7bGV0IGc9MDtyZXR1cm4gSSE9PW51bGwmJihnPUEuY2NhbGwoIml0a193YXNtX2lucHV0X2FycmF5X2FsbG9jIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHQsZSxJLmJ1ZmZlci5ieXRlTGVuZ3RoXSksQS5IRUFQVTguc2V0KG5ldyBVaW50OEFycmF5KEkuYnVmZmVyKSxnKSksZ31mdW5jdGlvbiBqKEEsSSx0KXtsZXQgZT1KU09OLnN0cmluZ2lmeShJKSxnPUEuY2NhbGwoIml0a193YXNtX2lucHV0X2pzb25fYWxsb2MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsdCxlLmxlbmd0aF0pO0Eud3JpdGVBc2NpaVRvTWVtb3J5KGUsZywhMSl9ZnVuY3Rpb24gUyhBLEksdCxlKXtsZXQgZz1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxJLHRdKSxyPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEksdF0pLGk9VkkoQSxnLHIpO3JldHVybiBZKGUsaS5idWZmZXIpfWZ1bmN0aW9uIHpBKEEsSSl7bGV0IHQ9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2pzb25fYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiXSxbMCxJXSksZT1BLkFzY2lpVG9TdHJpbmcodCk7cmV0dXJuIEpTT04ucGFyc2UoZSl9ZnVuY3Rpb24geWUoQSxJLHQsZSl7ZSE9bnVsbCYmZS5sZW5ndGg+MCYmZS5mb3JFYWNoKGZ1bmN0aW9uKG4sQyl7c3dpdGNoKG4udHlwZSl7Y2FzZSBELlRleHRTdHJlYW06e2xldCBvPWpJLmVuY29kZShuLmRhdGEuZGF0YSksZj15KEEsbyxDLDApLFE9e3NpemU6by5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gfTtqKEEsUSxDKTticmVha31jYXNlIEQuSnNvbkNvbXBhdGlibGU6e2xldCBvPWpJLmVuY29kZShKU09OLnN0cmluZ2lmeShuLmRhdGEpKSxmPXkoQSxvLEMsMCksUT17c2l6ZTpvLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWB9O2ooQSxRLEMpO2JyZWFrfWNhc2UgRC5CaW5hcnlTdHJlYW06e2xldCBvPW4uZGF0YS5kYXRhLGY9eShBLG8sQywwKSxRPXtzaXplOm8uYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YH07aihBLFEsQyk7YnJlYWt9Y2FzZSBELlRleHRGaWxlOntBLmZzX3dyaXRlRmlsZShuLmRhdGEucGF0aCxuLmRhdGEuZGF0YSk7YnJlYWt9Y2FzZSBELkJpbmFyeUZpbGU6e0EuZnNfd3JpdGVGaWxlKG4uZGF0YS5wYXRoLG4uZGF0YS5kYXRhKTticmVha31jYXNlIEQuSW1hZ2U6e2xldCBvPW4uZGF0YSxmPXkoQSxvLmRhdGEsQywwKSxRPXkoQSxvLmRpcmVjdGlvbixDLDEpLEU9dHlwZW9mIG8ubWV0YWRhdGE/LmVudHJpZXM8InUiP0pTT04uc3RyaW5naWZ5KEFycmF5LmZyb20oby5tZXRhZGF0YS5lbnRyaWVzKCkpKToiW10iLGM9e2ltYWdlVHlwZTpvLmltYWdlVHlwZSxuYW1lOm8ubmFtZSxvcmlnaW46by5vcmlnaW4sc3BhY2luZzpvLnNwYWNpbmcsZGlyZWN0aW9uOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7UX1gLHNpemU6by5zaXplLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWAsbWV0YWRhdGE6RX07aihBLGMsQyk7YnJlYWt9Y2FzZSBELk1lc2g6e2xldCBvPW4uZGF0YSxmPXkoQSxvLnBvaW50cyxDLDApLFE9eShBLG8uY2VsbHMsQywxKSxFPXkoQSxvLnBvaW50RGF0YSxDLDIpLGM9eShBLG8uY2VsbERhdGEsQywzKSx1PXttZXNoVHlwZTpvLm1lc2hUeXBlLG5hbWU6by5uYW1lLG51bWJlck9mUG9pbnRzOm8ubnVtYmVyT2ZQb2ludHMscG9pbnRzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gLG51bWJlck9mQ2VsbHM6by5udW1iZXJPZkNlbGxzLGNlbGxzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7UX1gLGNlbGxCdWZmZXJTaXplOm8uY2VsbEJ1ZmZlclNpemUsbnVtYmVyT2ZQb2ludFBpeGVsczpvLm51bWJlck9mUG9pbnRQaXhlbHMscG9pbnREYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7RX1gLG51bWJlck9mQ2VsbFBpeGVsczpvLm51bWJlck9mQ2VsbFBpeGVscyxjZWxsRGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2N9YH07aihBLHUsQyk7YnJlYWt9Y2FzZSBELlBvbHlEYXRhOntsZXQgbz1uLmRhdGEsZj15KEEsby5wb2ludHMsQywwKSxRPXkoQSxvLnZlcnRpY2VzLEMsMSksRT15KEEsby5saW5lcyxDLDIpLGM9eShBLG8ucG9seWdvbnMsQywzKSx1PXkoQSxvLnRyaWFuZ2xlU3RyaXBzLEMsNCksZD15KEEsby5wb2ludERhdGEsQyw1KSxSPXkoQSxvLnBvaW50RGF0YSxDLDYpLE49e3BvbHlEYXRhVHlwZTpvLnBvbHlEYXRhVHlwZSxuYW1lOm8ubmFtZSxudW1iZXJPZlBvaW50czpvLm51bWJlck9mUG9pbnRzLHBvaW50czpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YCx2ZXJ0aWNlc0J1ZmZlclNpemU6by52ZXJ0aWNlc0J1ZmZlclNpemUsdmVydGljZXM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWAsbGluZXNCdWZmZXJTaXplOm8ubGluZXNCdWZmZXJTaXplLGxpbmVzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7RX1gLHBvbHlnb25zQnVmZmVyU2l6ZTpvLnBvbHlnb25zQnVmZmVyU2l6ZSxwb2x5Z29uczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2N9YCx0cmlhbmdsZVN0cmlwc0J1ZmZlclNpemU6by50cmlhbmdsZVN0cmlwc0J1ZmZlclNpemUsdHJpYW5nbGVTdHJpcHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHt1fWAsbnVtYmVyT2ZQb2ludFBpeGVsczpvLm51bWJlck9mUG9pbnRQaXhlbHMscG9pbnREYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7ZH1gLG51bWJlck9mQ2VsbFBpeGVsczpvLm51bWJlck9mQ2VsbFBpeGVscyxjZWxsRGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1J9YH07aihBLE4sQyk7YnJlYWt9ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5zdXBwb3J0ZWQgaW5wdXQgSW50ZXJmYWNlVHlwZSIpfX0pLEEucmVzZXRNb2R1bGVTdGRvdXQoKSxBLnJlc2V0TW9kdWxlU3RkZXJyKCk7bGV0IGc9QS5zdGFja1NhdmUoKSxyPTA7dHJ5e3I9QS5jYWxsTWFpbihJLnNsaWNlKCkpfWNhdGNoKG4pe3Rocm93IHR5cGVvZiBuPT0ibnVtYmVyIiYmKGNvbnNvbGUubG9nKCJFeGNlcHRpb24gd2hpbGUgcnVubmluZyBwaXBlbGluZToiKSxjb25zb2xlLmxvZygic3Rkb3V0OiIsQS5nZXRNb2R1bGVTdGRvdXQoKSksY29uc29sZS5lcnJvcigic3RkZXJyOiIsQS5nZXRNb2R1bGVTdGRlcnIoKSksdHlwZW9mIEEuZ2V0RXhjZXB0aW9uTWVzc2FnZTwidSI/Y29uc29sZS5lcnJvcigiZXhjZXB0aW9uOiIsQS5nZXRFeGNlcHRpb25NZXNzYWdlKG4pKTpjb25zb2xlLmVycm9yKCJCdWlsZCBtb2R1bGUgaW4gRGVidWcgbW9kZSBmb3IgZXhjZXB0aW9uIG1lc3NhZ2UgaW5mb3JtYXRpb24uIikpLG59ZmluYWxseXtBLnN0YWNrUmVzdG9yZShnKX1sZXQgaT1BLmdldE1vZHVsZVN0ZG91dCgpLHM9QS5nZXRNb2R1bGVTdGRlcnIoKSxhPVtdO3JldHVybiB0IT1udWxsJiZ0Lmxlbmd0aD4wJiZyPT09MCYmdC5mb3JFYWNoKGZ1bmN0aW9uKG4sQyl7bGV0IG89bnVsbDtzd2l0Y2gobi50eXBlKXtjYXNlIEQuVGV4dFN0cmVhbTp7bGV0IFE9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQywwXSksRT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxDLDBdKSxjPW5ldyBVaW50OEFycmF5KEEuSEVBUFU4LmJ1ZmZlcixRLEUpO289e2RhdGE6V0kuZGVjb2RlKGMpfTticmVha31jYXNlIEQuSnNvbkNvbXBhdGlibGU6e2xldCBRPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEMsMF0pLEU9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQywwXSksYz1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsUSxFKTtvPUpTT04ucGFyc2UoV0kuZGVjb2RlKGMpKTticmVha31jYXNlIEQuQmluYXJ5U3RyZWFtOntsZXQgUT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxDLDBdKSxFPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEMsMF0pO289e2RhdGE6VkkoQSxRLEUpfTticmVha31jYXNlIEQuVGV4dEZpbGU6e289e3BhdGg6bi5kYXRhLnBhdGgsZGF0YTpBLmZzX3JlYWRGaWxlKG4uZGF0YS5wYXRoLHtlbmNvZGluZzoidXRmOCJ9KX07YnJlYWt9Y2FzZSBELkJpbmFyeUZpbGU6e289e3BhdGg6bi5kYXRhLnBhdGgsZGF0YTpkZShBLG4uZGF0YS5wYXRoKX07YnJlYWt9Y2FzZSBELkltYWdlOntsZXQgUT16QShBLEMpO1EuZGF0YT1TKEEsQywwLFEuaW1hZ2VUeXBlLmNvbXBvbmVudFR5cGUpLFEuZGlyZWN0aW9uPVMoQSxDLDEsUC5GbG9hdDY0KSxRLm1ldGFkYXRhPW5ldyBNYXAoUS5tZXRhZGF0YSksbz1RO2JyZWFrfWNhc2UgRC5NZXNoOntsZXQgUT16QShBLEMpO1EubnVtYmVyT2ZQb2ludHM+MD9RLnBvaW50cz1TKEEsQywwLFEubWVzaFR5cGUucG9pbnRDb21wb25lbnRUeXBlKTpRLnBvaW50cz1ZKFEubWVzaFR5cGUucG9pbnRDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksUS5udW1iZXJPZkNlbGxzPjA/US5jZWxscz1TKEEsQywxLFEubWVzaFR5cGUuY2VsbENvbXBvbmVudFR5cGUpOlEuY2VsbHM9WShRLm1lc2hUeXBlLmNlbGxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksUS5udW1iZXJPZlBvaW50UGl4ZWxzPjA/US5wb2ludERhdGE9UyhBLEMsMixRLm1lc2hUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlKTpRLnBvaW50RGF0YT1ZKFEubWVzaFR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxRLm51bWJlck9mQ2VsbFBpeGVscz4wP1EuY2VsbERhdGE9UyhBLEMsMyxRLm1lc2hUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUpOlEuY2VsbERhdGE9WShRLm1lc2hUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxvPVE7YnJlYWt9Y2FzZSBELlBvbHlEYXRhOntsZXQgUT16QShBLEMpO1EubnVtYmVyT2ZQb2ludHM+MD9RLnBvaW50cz1TKEEsQywwLFAuRmxvYXQzMik6US5wb2ludHM9bmV3IEZsb2F0MzJBcnJheSxRLnZlcnRpY2VzQnVmZmVyU2l6ZT4wP1EudmVydGljZXM9UyhBLEMsMSxwLlVJbnQzMik6US52ZXJ0aWNlcz1uZXcgVWludDMyQXJyYXksUS5saW5lc0J1ZmZlclNpemU+MD9RLmxpbmVzPVMoQSxDLDIscC5VSW50MzIpOlEubGluZXM9bmV3IFVpbnQzMkFycmF5LFEucG9seWdvbnNCdWZmZXJTaXplPjA/US5wb2x5Z29ucz1TKEEsQywzLHAuVUludDMyKTpRLnBvbHlnb25zPW5ldyBVaW50MzJBcnJheSxRLnRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZT4wP1EudHJpYW5nbGVTdHJpcHM9UyhBLEMsNCxwLlVJbnQzMik6US50cmlhbmdsZVN0cmlwcz1uZXcgVWludDMyQXJyYXksUS5udW1iZXJPZlBvaW50UGl4ZWxzPjA/US5wb2ludERhdGE9UyhBLEMsNSxRLnBvbHlEYXRhVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSk6US5wb2ludERhdGE9WShRLnBvbHlEYXRhVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLFEubnVtYmVyT2ZDZWxsUGl4ZWxzPjA/US5jZWxsRGF0YT1TKEEsQyw2LFEucG9seURhdGFUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUpOlEuY2VsbERhdGE9WShRLnBvbHlEYXRhVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksbz1RO2JyZWFrfWRlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuc3VwcG9ydGVkIG91dHB1dCBJbnRlcmZhY2VUeXBlIil9bGV0IGY9e3R5cGU6bi50eXBlLGRhdGE6b307YS5wdXNoKGYpfSkse3JldHVyblZhbHVlOnIsc3Rkb3V0Omksc3RkZXJyOnMsb3V0cHV0czphfX12YXIgWEk9eWU7dmFyIHdlPXR5cGVvZiBnbG9iYWxUaGlzLlNoYXJlZEFycmF5QnVmZmVyPCJ1IjtmdW5jdGlvbiBtZShBLEkpe2lmKEE9PW51bGwpcmV0dXJuW107bGV0IHQ9W107Zm9yKGxldCBlPTA7ZTxBLmxlbmd0aDtlKyspe2xldCBnPXBlKEFbZV0sSSk7ZyE9PW51bGwmJnQucHVzaChnKX1yZXR1cm4gdH1mdW5jdGlvbiBwZShBLEkpe2lmKEE9PW51bGwpcmV0dXJuIG51bGw7bGV0IHQ9bnVsbDtyZXR1cm4gQS5idWZmZXIhPT12b2lkIDA/dD1BLmJ1ZmZlcjpBLmJ5dGVMZW5ndGghPT12b2lkIDAmJih0PUEpLHdlJiZ0IGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXI/bnVsbDpJP3Q6dC5zbGljZSgwKX12YXIgekk9bWU7ZnVuY3Rpb24gU2UoQSl7cmV0dXJuW0EuZGF0YSxBLmRpcmVjdGlvbl19dmFyIF9JPVNlO2Z1bmN0aW9uIEZlKEEpe3JldHVybltBLnBvaW50cyxBLnBvaW50RGF0YSxBLmNlbGxzLEEuY2VsbERhdGFdfXZhciB2ST1GZTtmdW5jdGlvbiBSZShBKXtyZXR1cm5bQS5wb2ludHMsQS52ZXJ0aWNlcyxBLmxpbmVzLEEucG9seWdvbnMsQS50cmlhbmdsZVN0cmlwcyxBLnBvaW50RGF0YSxBLmNlbGxEYXRhXX12YXIgJEk9UmU7YXN5bmMgZnVuY3Rpb24gTmUoQSxJLHQsZSl7bGV0IGc9WEkoQSxJLHQsZSkscj1bXTtyZXR1cm4gZy5vdXRwdXRzLmZvckVhY2goZnVuY3Rpb24oaSl7aWYoaS50eXBlPT09RC5CaW5hcnlTdHJlYW18fGkudHlwZT09PUQuQmluYXJ5RmlsZSl7bGV0IHM9aS5kYXRhO3IucHVzaChzKX1lbHNlIGlmKGkudHlwZT09PUQuSW1hZ2Upe2xldCBzPWkuZGF0YTtyLnB1c2goLi4uX0kocykpfWVsc2UgaWYoaS50eXBlPT09RC5NZXNoKXtsZXQgcz1pLmRhdGE7ci5wdXNoKC4uLnZJKHMpKX1lbHNlIGlmKGkudHlwZT09PUQuUG9seURhdGEpe2xldCBzPWkuZGF0YTtyLnB1c2goLi4uJEkocykpfX0pLFNBKGcsekkociwhMCkpfXZhciBBdD1OZTt2YXIgVWU9e3J1blBpcGVsaW5lOmFzeW5jIGZ1bmN0aW9uKEEsSSx0LGUsZyxyKXtsZXQgaT1hd2FpdCBQSShBLEkscik7cmV0dXJuIGF3YWl0IEF0KGksdCxlLGcpfX07b0EoVWUpOyUwQS8qISBCdW5kbGVkIGxpY2Vuc2UgaW5mb3JtYXRpb246JTBBJTBBY29tbGluay9kaXN0L2VzbS9jb21saW5rLm1qczolMEEgICgqKiUwQSAgICogQGxpY2Vuc2UlMEEgICAqIENvcHlyaWdodCAyMDE5IEdvb2dsZSBMTEMlMEEgICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wJTBBICAgKiklMEEqLyUwQSc7V3QoR3QpO2V4cG9ydHtoZSBhcyBieXVSZWFkTWVzaCx5ZSBhcyBieXVXcml0ZU1lc2gsVCBhcyBleHRlbnNpb25Ub01lc2hJbyx3ZSBhcyBmcmVlU3VyZmVyQXNjaWlSZWFkTWVzaCxEZSBhcyBmcmVlU3VyZmVyQXNjaWlXcml0ZU1lc2gsYmUgYXMgZnJlZVN1cmZlckJpbmFyeVJlYWRNZXNoLFJlIGFzIGZyZWVTdXJmZXJCaW5hcnlXcml0ZU1lc2gsaCBhcyBnZXREZWZhdWx0V2ViV29ya2VyLFEgYXMgZ2V0UGlwZWxpbmVXb3JrZXJVcmwsZCBhcyBnZXRQaXBlbGluZXNCYXNlVXJsLGdlIGFzIG9ialJlYWRNZXNoLGxlIGFzIG9ialdyaXRlTWVzaCxDZSBhcyBvZmZSZWFkTWVzaCxmZSBhcyBvZmZXcml0ZU1lc2gsamkgYXMgcmVhZE1lc2gsb0kgYXMgc2V0RGVmYXVsdFdlYldvcmtlcixXdCBhcyBzZXRQaXBlbGluZVdvcmtlclVybCxYYSBhcyBzZXRQaXBlbGluZXNCYXNlVXJsLEJlIGFzIHN0bFJlYWRNZXNoLHVlIGFzIHN0bFdyaXRlTWVzaCxtZSBhcyBzd2NSZWFkTWVzaCxkZSBhcyBzd2NXcml0ZU1lc2gsYWUgYXMgdnRrUG9seURhdGFSZWFkTWVzaCxJZSBhcyB2dGtQb2x5RGF0YVdyaXRlTWVzaCxjZSBhcyB3YXNtUmVhZE1lc2gscGUgYXMgd2FzbVdyaXRlTWVzaCxFZSBhcyB3YXNtWnN0ZFJlYWRNZXNoLFFlIGFzIHdhc21ac3RkV3JpdGVNZXNoLF9pIGFzIHdyaXRlTWVzaH07Ci8qISBCdW5kbGVkIGxpY2Vuc2UgaW5mb3JtYXRpb246Cgpjb21saW5rL2Rpc3QvZXNtL2NvbWxpbmsubWpzOgogICgqKgogICAqIEBsaWNlbnNlCiAgICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIExMQwogICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wCiAgICopCiovCg==""" +default_js_module = """data:text/javascript;base64,dmFyIHh0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgVHQ9KEEsZSk9Pntmb3IodmFyIHQgaW4gZSl4dChBLHQse2dldDplW3RdLGVudW1lcmFibGU6ITB9KX07dmFyIEp0PW5ldyBNYXAoW1sidnRrIiwidnRrIl0sWyJieXUiLCJieXUiXSxbImZzYSIsImZyZWUtc3VyZmVyLWFzY2lpIl0sWyJmc2IiLCJmcmVlLXN1cmZlci1iaW5hcnkiXSxbIm9iaiIsIm9iaiJdLFsib2ZmIiwib2ZmIl0sWyJzdGwiLCJzdGwiXSxbInN3YyIsInN3YyJdLFsiaXdtIiwid2FzbSJdLFsiaXdtLmNib3IiLCJ3YXNtIl0sWyJpd20uY2Jvci56c3QiLCJ3YXNtLXpzdGQiXV0pLFQ9SnQ7dmFyIEh0PXtJbnQ4OiJpbnQ4IixVSW50ODoidWludDgiLEludDE2OiJpbnQxNiIsVUludDE2OiJ1aW50MTYiLEludDMyOiJpbnQzMiIsVUludDMyOiJ1aW50MzIiLEludDY0OiJpbnQ2NCIsVUludDY0OiJ1aW50NjQiLFNpemVWYWx1ZVR5cGU6InVpbnQ2NCIsSWRlbnRpZmllclR5cGU6InVpbnQ2NCIsSW5kZXhWYWx1ZVR5cGU6ImludDY0IixPZmZzZXRWYWx1ZVR5cGU6ImludDY0In0sUz1IdDt2YXIgWXQ9e0Zsb2F0MzI6ImZsb2F0MzIiLEZsb2F0NjQ6ImZsb2F0NjQiLFNwYWNlUHJlY2lzaW9uVHlwZToiZmxvYXQ2NCJ9LEg9WXQ7ZnVuY3Rpb24gcXQoQSxlKXtsZXQgdD1udWxsO3N3aXRjaChBKXtjYXNlIFMuVUludDg6e3Q9bmV3IFVpbnQ4QXJyYXkoZSk7YnJlYWt9Y2FzZSBTLkludDg6e3Q9bmV3IEludDhBcnJheShlKTticmVha31jYXNlIFMuVUludDE2Ont0PW5ldyBVaW50MTZBcnJheShlKTticmVha31jYXNlIFMuSW50MTY6e3Q9bmV3IEludDE2QXJyYXkoZSk7YnJlYWt9Y2FzZSBTLlVJbnQzMjp7dD1uZXcgVWludDMyQXJyYXkoZSk7YnJlYWt9Y2FzZSBTLkludDMyOnt0PW5ldyBJbnQzMkFycmF5KGUpO2JyZWFrfWNhc2UgUy5VSW50NjQ6e3R5cGVvZiBnbG9iYWxUaGlzLkJpZ1VpbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ1VpbnQ2NEFycmF5KGUpOnQ9bmV3IFVpbnQ4QXJyYXkoZSk7YnJlYWt9Y2FzZSBTLkludDY0Ont0eXBlb2YgZ2xvYmFsVGhpcy5CaWdJbnQ2NEFycmF5PT0iZnVuY3Rpb24iP3Q9bmV3IEJpZ0ludDY0QXJyYXkoZSk6dD1uZXcgVWludDhBcnJheShlKTticmVha31jYXNlIEguRmxvYXQzMjp7dD1uZXcgRmxvYXQzMkFycmF5KGUpO2JyZWFrfWNhc2UgSC5GbG9hdDY0Ont0PW5ldyBGbG9hdDY0QXJyYXkoZSk7YnJlYWt9Y2FzZSJudWxsIjp7dD1udWxsO2JyZWFrfWNhc2UgbnVsbDp7dD1udWxsO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJUeXBlIGlzIG5vdCBzdXBwb3J0ZWQgYXMgYSBUeXBlZEFycmF5Iil9cmV0dXJuIHR9dmFyIFA9cXQ7ZnVuY3Rpb24gS3QoQSl7bGV0IGU9QS5zbGljZSgoQS5sYXN0SW5kZXhPZigiLiIpLTE+Pj4wKSsyKTtpZihlLnRvTG93ZXJDYXNlKCk9PT0iZ3oiKXtsZXQgdD1BLnNsaWNlKDAsLTMpLmxhc3RJbmRleE9mKCIuIik7ZT1BLnNsaWNlKCh0LTE+Pj4wKSsyKX1lbHNlIGlmKGUudG9Mb3dlckNhc2UoKT09PSJjYm9yIil7bGV0IHQ9QS5zbGljZSgwLC01KS5sYXN0SW5kZXhPZigiLiIpO2U9QS5zbGljZSgodC0xPj4+MCkrMil9ZWxzZSBpZihlLnRvTG93ZXJDYXNlKCk9PT0ienN0Iil7bGV0IHQ9QS5zbGljZSgwLC0xMCkubGFzdEluZGV4T2YoIi4iKTtlPUEuc2xpY2UoKHQtMT4+PjApKzIpfWVsc2UgaWYoZS50b0xvd2VyQ2FzZSgpPT09InppcCIpe2xldCB0PUEuc2xpY2UoMCwtNCkubGFzdEluZGV4T2YoIi4iKTtlPUEuc2xpY2UoKHQtMT4+PjApKzIpfXJldHVybiBlfXZhciBBQT1LdDt2YXIganQ9e1RleHRGaWxlOiJUZXh0RmlsZSIsQmluYXJ5RmlsZToiQmluYXJ5RmlsZSIsVGV4dFN0cmVhbToiVGV4dFN0cmVhbSIsQmluYXJ5U3RyZWFtOiJCaW5hcnlTdHJlYW0iLEltYWdlOiJJbWFnZSIsTWVzaDoiTWVzaCIsUG9seURhdGE6IlBvbHlEYXRhIixKc29uQ29tcGF0aWJsZToiSnNvbkNvbXBhdGlibGUifSxDPWp0O3ZhciBTZT1TeW1ib2woIkNvbWxpbmsucHJveHkiKSx2dD1TeW1ib2woIkNvbWxpbmsuZW5kcG9pbnQiKSxPQT1TeW1ib2woIkNvbWxpbmsucmVsZWFzZVByb3h5IiksTkE9U3ltYm9sKCJDb21saW5rLmZpbmFsaXplciIpLEJBPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSxGZT1BPT50eXBlb2YgQT09Im9iamVjdCImJkEhPT1udWxsfHx0eXBlb2YgQT09ImZ1bmN0aW9uIixfdD17Y2FuSGFuZGxlOkE9PkZlKEEpJiZBW1NlXSxzZXJpYWxpemUoQSl7bGV0e3BvcnQxOmUscG9ydDI6dH09bmV3IE1lc3NhZ2VDaGFubmVsO3JldHVybiBOZShBLGUpLFt0LFt0XV19LGRlc2VyaWFsaXplKEEpe3JldHVybiBBLnN0YXJ0KCksV0EoQSl9fSx6dD17Y2FuSGFuZGxlOkE9PkZlKEEpJiZCQSBpbiBBLHNlcmlhbGl6ZSh7dmFsdWU6QX0pe2xldCBlO3JldHVybiBBIGluc3RhbmNlb2YgRXJyb3I/ZT17aXNFcnJvcjohMCx2YWx1ZTp7bWVzc2FnZTpBLm1lc3NhZ2UsbmFtZTpBLm5hbWUsc3RhY2s6QS5zdGFja319OmU9e2lzRXJyb3I6ITEsdmFsdWU6QX0sW2UsW11dfSxkZXNlcmlhbGl6ZShBKXt0aHJvdyBBLmlzRXJyb3I/T2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoQS52YWx1ZS5tZXNzYWdlKSxBLnZhbHVlKTpBLnZhbHVlfX0sVWU9bmV3IE1hcChbWyJwcm94eSIsX3RdLFsidGhyb3ciLHp0XV0pO2Z1bmN0aW9uIFZ0KEEsZSl7Zm9yKGxldCB0IG9mIEEpaWYoZT09PXR8fHQ9PT0iKiJ8fHQgaW5zdGFuY2VvZiBSZWdFeHAmJnQudGVzdChlKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBOZShBLGU9Z2xvYmFsVGhpcyx0PVsiKiJdKXtlLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uIHIobyl7aWYoIW98fCFvLmRhdGEpcmV0dXJuO2lmKCFWdCh0LG8ub3JpZ2luKSl7Y29uc29sZS53YXJuKGBJbnZhbGlkIG9yaWdpbiAnJHtvLm9yaWdpbn0nIGZvciBjb21saW5rIHByb3h5YCk7cmV0dXJufWxldHtpZDppLHR5cGU6bixwYXRoOmd9PU9iamVjdC5hc3NpZ24oe3BhdGg6W119LG8uZGF0YSksZj0oby5kYXRhLmFyZ3VtZW50TGlzdHx8W10pLm1hcChKKSxCO3RyeXtsZXQgcz1nLnNsaWNlKDAsLTEpLnJlZHVjZSgoYyxJKT0+Y1tJXSxBKSxhPWcucmVkdWNlKChjLEkpPT5jW0ldLEEpO3N3aXRjaChuKXtjYXNlIkdFVCI6Qj1hO2JyZWFrO2Nhc2UiU0VUIjpzW2cuc2xpY2UoLTEpWzBdXT1KKG8uZGF0YS52YWx1ZSksQj0hMDticmVhaztjYXNlIkFQUExZIjpCPWEuYXBwbHkocyxmKTticmVhaztjYXNlIkNPTlNUUlVDVCI6e2xldCBjPW5ldyBhKC4uLmYpO0I9ZXIoYyl9YnJlYWs7Y2FzZSJFTkRQT0lOVCI6e2xldHtwb3J0MTpjLHBvcnQyOkl9PW5ldyBNZXNzYWdlQ2hhbm5lbDtOZShBLEkpLEI9UEEoYyxbY10pfWJyZWFrO2Nhc2UiUkVMRUFTRSI6Qj12b2lkIDA7YnJlYWs7ZGVmYXVsdDpyZXR1cm59fWNhdGNoKHMpe0I9e3ZhbHVlOnMsW0JBXTowfX1Qcm9taXNlLnJlc29sdmUoQikuY2F0Y2gocz0+KHt2YWx1ZTpzLFtCQV06MH0pKS50aGVuKHM9PntsZXRbYSxjXT1mQShzKTtlLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhKSx7aWQ6aX0pLGMpLG49PT0iUkVMRUFTRSImJihlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHIpLE1lKGUpLE5BIGluIEEmJnR5cGVvZiBBW05BXT09ImZ1bmN0aW9uIiYmQVtOQV0oKSl9KS5jYXRjaChzPT57bGV0W2EsY109ZkEoe3ZhbHVlOm5ldyBUeXBlRXJyb3IoIlVuc2VyaWFsaXphYmxlIHJldHVybiB2YWx1ZSIpLFtCQV06MH0pO2UucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGEpLHtpZDppfSksYyl9KX0pLGUuc3RhcnQmJmUuc3RhcnQoKX1mdW5jdGlvbiBadChBKXtyZXR1cm4gQS5jb25zdHJ1Y3Rvci5uYW1lPT09Ik1lc3NhZ2VQb3J0In1mdW5jdGlvbiBNZShBKXtadChBKSYmQS5jbG9zZSgpfWZ1bmN0aW9uIFdBKEEsZSl7cmV0dXJuIE1BKEEsW10sZSl9ZnVuY3Rpb24gbEEoQSl7aWYoQSl0aHJvdyBuZXcgRXJyb3IoIlByb3h5IGhhcyBiZWVuIHJlbGVhc2VkIGFuZCBpcyBub3QgdXNlYWJsZSIpfWZ1bmN0aW9uIE9lKEEpe3JldHVybiBZKEEse3R5cGU6IlJFTEVBU0UifSkudGhlbigoKT0+e01lKEEpfSl9dmFyIHVBPW5ldyBXZWFrTWFwLENBPSJGaW5hbGl6YXRpb25SZWdpc3RyeSJpbiBnbG9iYWxUaGlzJiZuZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoQT0+e2xldCBlPSh1QS5nZXQoQSl8fDApLTE7dUEuc2V0KEEsZSksZT09PTAmJk9lKEEpfSk7ZnVuY3Rpb24gWHQoQSxlKXtsZXQgdD0odUEuZ2V0KGUpfHwwKSsxO3VBLnNldChlLHQpLENBJiZDQS5yZWdpc3RlcihBLGUsQSl9ZnVuY3Rpb24gJHQoQSl7Q0EmJkNBLnVucmVnaXN0ZXIoQSl9ZnVuY3Rpb24gTUEoQSxlPVtdLHQ9ZnVuY3Rpb24oKXt9KXtsZXQgcj0hMSxvPW5ldyBQcm94eSh0LHtnZXQoaSxuKXtpZihsQShyKSxuPT09T0EpcmV0dXJuKCk9PnskdChvKSxPZShBKSxyPSEwfTtpZihuPT09InRoZW4iKXtpZihlLmxlbmd0aD09PTApcmV0dXJue3RoZW46KCk9Pm99O2xldCBnPVkoQSx7dHlwZToiR0VUIixwYXRoOmUubWFwKGY9PmYudG9TdHJpbmcoKSl9KS50aGVuKEopO3JldHVybiBnLnRoZW4uYmluZChnKX1yZXR1cm4gTUEoQSxbLi4uZSxuXSl9LHNldChpLG4sZyl7bEEocik7bGV0W2YsQl09ZkEoZyk7cmV0dXJuIFkoQSx7dHlwZToiU0VUIixwYXRoOlsuLi5lLG5dLm1hcChzPT5zLnRvU3RyaW5nKCkpLHZhbHVlOmZ9LEIpLnRoZW4oSil9LGFwcGx5KGksbixnKXtsQShyKTtsZXQgZj1lW2UubGVuZ3RoLTFdO2lmKGY9PT12dClyZXR1cm4gWShBLHt0eXBlOiJFTkRQT0lOVCJ9KS50aGVuKEopO2lmKGY9PT0iYmluZCIpcmV0dXJuIE1BKEEsZS5zbGljZSgwLC0xKSk7bGV0W0Isc109a2UoZyk7cmV0dXJuIFkoQSx7dHlwZToiQVBQTFkiLHBhdGg6ZS5tYXAoYT0+YS50b1N0cmluZygpKSxhcmd1bWVudExpc3Q6Qn0scykudGhlbihKKX0sY29uc3RydWN0KGksbil7bEEocik7bGV0W2csZl09a2Uobik7cmV0dXJuIFkoQSx7dHlwZToiQ09OU1RSVUNUIixwYXRoOmUubWFwKEI9PkIudG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omd9LGYpLnRoZW4oSil9fSk7cmV0dXJuIFh0KG8sQSksb31mdW5jdGlvbiBBcihBKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxBKX1mdW5jdGlvbiBrZShBKXtsZXQgZT1BLm1hcChmQSk7cmV0dXJuW2UubWFwKHQ9PnRbMF0pLEFyKGUubWFwKHQ9PnRbMV0pKV19dmFyIFdlPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIFBBKEEsZSl7cmV0dXJuIFdlLnNldChBLGUpLEF9ZnVuY3Rpb24gZXIoQSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oQSx7W1NlXTohMH0pfWZ1bmN0aW9uIGZBKEEpe2ZvcihsZXRbZSx0XW9mIFVlKWlmKHQuY2FuSGFuZGxlKEEpKXtsZXRbcixvXT10LnNlcmlhbGl6ZShBKTtyZXR1cm5be3R5cGU6IkhBTkRMRVIiLG5hbWU6ZSx2YWx1ZTpyfSxvXX1yZXR1cm5be3R5cGU6IlJBVyIsdmFsdWU6QX0sV2UuZ2V0KEEpfHxbXV19ZnVuY3Rpb24gSihBKXtzd2l0Y2goQS50eXBlKXtjYXNlIkhBTkRMRVIiOnJldHVybiBVZS5nZXQoQS5uYW1lKS5kZXNlcmlhbGl6ZShBLnZhbHVlKTtjYXNlIlJBVyI6cmV0dXJuIEEudmFsdWV9fWZ1bmN0aW9uIFkoQSxlLHQpe3JldHVybiBuZXcgUHJvbWlzZShyPT57bGV0IG89dHIoKTtBLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uIGkobil7IW4uZGF0YXx8IW4uZGF0YS5pZHx8bi5kYXRhLmlkIT09b3x8KEEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsaSkscihuLmRhdGEpKX0pLEEuc3RhcnQmJkEuc3RhcnQoKSxBLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oe2lkOm99LGUpLHQpfSl9ZnVuY3Rpb24gdHIoKXtyZXR1cm4gbmV3IEFycmF5KDQpLmZpbGwoMCkubWFwKCgpPT5NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLnRvU3RyaW5nKDE2KSkuam9pbigiLSIpfWZ1bmN0aW9uIGVBKEEsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEEuYXBwbHkoZSxhcmd1bWVudHMpfX12YXJ7dG9TdHJpbmc6cnJ9PU9iamVjdC5wcm90b3R5cGUse2dldFByb3RvdHlwZU9mOnhBfT1PYmplY3QscEE9KEE9PmU9PntsZXQgdD1yci5jYWxsKGUpO3JldHVybiBBW3RdfHwoQVt0XT10LnNsaWNlKDgsLTEpLnRvTG93ZXJDYXNlKCkpfSkoT2JqZWN0LmNyZWF0ZShudWxsKSksTz1BPT4oQT1BLnRvTG93ZXJDYXNlKCksZT0+cEEoZSk9PT1BKSxFQT1BPT5lPT50eXBlb2YgZT09PUEse2lzQXJyYXk6cX09QXJyYXksdEE9RUEoInVuZGVmaW5lZCIpO2Z1bmN0aW9uIGlyKEEpe3JldHVybiBBIT09bnVsbCYmIXRBKEEpJiZBLmNvbnN0cnVjdG9yIT09bnVsbCYmIXRBKEEuY29uc3RydWN0b3IpJiZVKEEuY29uc3RydWN0b3IuaXNCdWZmZXIpJiZBLmNvbnN0cnVjdG9yLmlzQnVmZmVyKEEpfXZhciB4ZT1PKCJBcnJheUJ1ZmZlciIpO2Z1bmN0aW9uIG9yKEEpe2xldCBlO3JldHVybiB0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZBcnJheUJ1ZmZlci5pc1ZpZXc/ZT1BcnJheUJ1ZmZlci5pc1ZpZXcoQSk6ZT1BJiZBLmJ1ZmZlciYmeGUoQS5idWZmZXIpLGV9dmFyIG5yPUVBKCJzdHJpbmciKSxVPUVBKCJmdW5jdGlvbiIpLFRlPUVBKCJudW1iZXIiKSxRQT1BPT5BIT09bnVsbCYmdHlwZW9mIEE9PSJvYmplY3QiLHNyPUE9PkE9PT0hMHx8QT09PSExLGNBPUE9PntpZihwQShBKSE9PSJvYmplY3QiKXJldHVybiExO2xldCBlPXhBKEEpO3JldHVybihlPT09bnVsbHx8ZT09PU9iamVjdC5wcm90b3R5cGV8fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PW51bGwpJiYhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBBKSYmIShTeW1ib2wuaXRlcmF0b3IgaW4gQSl9LGFyPU8oIkRhdGUiKSxJcj1PKCJGaWxlIiksZ3I9TygiQmxvYiIpLGxyPU8oIkZpbGVMaXN0IiksQnI9QT0+UUEoQSkmJlUoQS5waXBlKSx1cj1BPT57bGV0IGU7cmV0dXJuIEEmJih0eXBlb2YgRm9ybURhdGE9PSJmdW5jdGlvbiImJkEgaW5zdGFuY2VvZiBGb3JtRGF0YXx8VShBLmFwcGVuZCkmJigoZT1wQShBKSk9PT0iZm9ybWRhdGEifHxlPT09Im9iamVjdCImJlUoQS50b1N0cmluZykmJkEudG9TdHJpbmcoKT09PSJbb2JqZWN0IEZvcm1EYXRhXSIpKX0sQ3I9TygiVVJMU2VhcmNoUGFyYW1zIiksZnI9QT0+QS50cmltP0EudHJpbSgpOkEucmVwbGFjZSgvXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csIiIpO2Z1bmN0aW9uIHJBKEEsZSx7YWxsT3duS2V5czp0PSExfT17fSl7aWYoQT09PW51bGx8fHR5cGVvZiBBPiJ1IilyZXR1cm47bGV0IHIsbztpZih0eXBlb2YgQSE9Im9iamVjdCImJihBPVtBXSkscShBKSlmb3Iocj0wLG89QS5sZW5ndGg7cjxvO3IrKyllLmNhbGwobnVsbCxBW3JdLHIsQSk7ZWxzZXtsZXQgaT10P09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEEpOk9iamVjdC5rZXlzKEEpLG49aS5sZW5ndGgsZztmb3Iocj0wO3I8bjtyKyspZz1pW3JdLGUuY2FsbChudWxsLEFbZ10sZyxBKX19ZnVuY3Rpb24gSmUoQSxlKXtlPWUudG9Mb3dlckNhc2UoKTtsZXQgdD1PYmplY3Qua2V5cyhBKSxyPXQubGVuZ3RoLG87Zm9yKDtyLS0gPjA7KWlmKG89dFtyXSxlPT09by50b0xvd2VyQ2FzZSgpKXJldHVybiBvO3JldHVybiBudWxsfXZhciBIZT10eXBlb2YgZ2xvYmFsVGhpczwidSI/Z2xvYmFsVGhpczp0eXBlb2Ygc2VsZjwidSI/c2VsZjp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6Z2xvYmFsLFllPUE9PiF0QShBKSYmQSE9PUhlO2Z1bmN0aW9uIExBKCl7bGV0e2Nhc2VsZXNzOkF9PVllKHRoaXMpJiZ0aGlzfHx7fSxlPXt9LHQ9KHIsbyk9PntsZXQgaT1BJiZKZShlLG8pfHxvO2NBKGVbaV0pJiZjQShyKT9lW2ldPUxBKGVbaV0scik6Y0Eocik/ZVtpXT1MQSh7fSxyKTpxKHIpP2VbaV09ci5zbGljZSgpOmVbaV09cn07Zm9yKGxldCByPTAsbz1hcmd1bWVudHMubGVuZ3RoO3I8bztyKyspYXJndW1lbnRzW3JdJiZyQShhcmd1bWVudHNbcl0sdCk7cmV0dXJuIGV9dmFyIGNyPShBLGUsdCx7YWxsT3duS2V5czpyfT17fSk9PihyQShlLChvLGkpPT57dCYmVShvKT9BW2ldPWVBKG8sdCk6QVtpXT1vfSx7YWxsT3duS2V5czpyfSksQSkscHI9QT0+KEEuY2hhckNvZGVBdCgwKT09PTY1Mjc5JiYoQT1BLnNsaWNlKDEpKSxBKSxFcj0oQSxlLHQscik9PntBLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlLHIpLEEucHJvdG90eXBlLmNvbnN0cnVjdG9yPUEsT2JqZWN0LmRlZmluZVByb3BlcnR5KEEsInN1cGVyIix7dmFsdWU6ZS5wcm90b3R5cGV9KSx0JiZPYmplY3QuYXNzaWduKEEucHJvdG90eXBlLHQpfSxRcj0oQSxlLHQscik9PntsZXQgbyxpLG4sZz17fTtpZihlPWV8fHt9LEE9PW51bGwpcmV0dXJuIGU7ZG97Zm9yKG89T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoQSksaT1vLmxlbmd0aDtpLS0gPjA7KW49b1tpXSwoIXJ8fHIobixBLGUpKSYmIWdbbl0mJihlW25dPUFbbl0sZ1tuXT0hMCk7QT10IT09ITEmJnhBKEEpfXdoaWxlKEEmJighdHx8dChBLGUpKSYmQSE9PU9iamVjdC5wcm90b3R5cGUpO3JldHVybiBlfSxtcj0oQSxlLHQpPT57QT1TdHJpbmcoQSksKHQ9PT12b2lkIDB8fHQ+QS5sZW5ndGgpJiYodD1BLmxlbmd0aCksdC09ZS5sZW5ndGg7bGV0IHI9QS5pbmRleE9mKGUsdCk7cmV0dXJuIHIhPT0tMSYmcj09PXR9LGRyPUE9PntpZighQSlyZXR1cm4gbnVsbDtpZihxKEEpKXJldHVybiBBO2xldCBlPUEubGVuZ3RoO2lmKCFUZShlKSlyZXR1cm4gbnVsbDtsZXQgdD1uZXcgQXJyYXkoZSk7Zm9yKDtlLS0gPjA7KXRbZV09QVtlXTtyZXR1cm4gdH0saHI9KEE9PmU9PkEmJmUgaW5zdGFuY2VvZiBBKSh0eXBlb2YgVWludDhBcnJheTwidSImJnhBKFVpbnQ4QXJyYXkpKSx5cj0oQSxlKT0+e2xldCByPShBJiZBW1N5bWJvbC5pdGVyYXRvcl0pLmNhbGwoQSksbztmb3IoOyhvPXIubmV4dCgpKSYmIW8uZG9uZTspe2xldCBpPW8udmFsdWU7ZS5jYWxsKEEsaVswXSxpWzFdKX19LHdyPShBLGUpPT57bGV0IHQscj1bXTtmb3IoOyh0PUEuZXhlYyhlKSkhPT1udWxsOylyLnB1c2godCk7cmV0dXJuIHJ9LERyPU8oIkhUTUxGb3JtRWxlbWVudCIpLGJyPUE9PkEudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bLV9cc10oW2EtelxkXSkoXHcqKS9nLGZ1bmN0aW9uKHQscixvKXtyZXR1cm4gci50b1VwcGVyQ2FzZSgpK299KSxHZT0oKHtoYXNPd25Qcm9wZXJ0eTpBfSk9PihlLHQpPT5BLmNhbGwoZSx0KSkoT2JqZWN0LnByb3RvdHlwZSksUnI9TygiUmVnRXhwIikscWU9KEEsZSk9PntsZXQgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhBKSxyPXt9O3JBKHQsKG8saSk9PntsZXQgbjsobj1lKG8saSxBKSkhPT0hMSYmKHJbaV09bnx8byl9KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhBLHIpfSxrcj1BPT57cWUoQSwoZSx0KT0+e2lmKFUoQSkmJlsiYXJndW1lbnRzIiwiY2FsbGVyIiwiY2FsbGVlIl0uaW5kZXhPZih0KSE9PS0xKXJldHVybiExO2xldCByPUFbdF07aWYoVShyKSl7aWYoZS5lbnVtZXJhYmxlPSExLCJ3cml0YWJsZSJpbiBlKXtlLndyaXRhYmxlPSExO3JldHVybn1lLnNldHx8KGUuc2V0PSgpPT57dGhyb3cgRXJyb3IoIkNhbiBub3QgcmV3cml0ZSByZWFkLW9ubHkgbWV0aG9kICciK3QrIiciKX0pfX0pfSxTcj0oQSxlKT0+e2xldCB0PXt9LHI9bz0+e28uZm9yRWFjaChpPT57dFtpXT0hMH0pfTtyZXR1cm4gcShBKT9yKEEpOnIoU3RyaW5nKEEpLnNwbGl0KGUpKSx0fSxGcj0oKT0+e30sVXI9KEEsZSk9PihBPStBLE51bWJlci5pc0Zpbml0ZShBKT9BOmUpLEdBPSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsTGU9IjAxMjM0NTY3ODkiLEtlPXtESUdJVDpMZSxBTFBIQTpHQSxBTFBIQV9ESUdJVDpHQStHQS50b1VwcGVyQ2FzZSgpK0xlfSxOcj0oQT0xNixlPUtlLkFMUEhBX0RJR0lUKT0+e2xldCB0PSIiLHtsZW5ndGg6cn09ZTtmb3IoO0EtLTspdCs9ZVtNYXRoLnJhbmRvbSgpKnJ8MF07cmV0dXJuIHR9O2Z1bmN0aW9uIE1yKEEpe3JldHVybiEhKEEmJlUoQS5hcHBlbmQpJiZBW1N5bWJvbC50b1N0cmluZ1RhZ109PT0iRm9ybURhdGEiJiZBW1N5bWJvbC5pdGVyYXRvcl0pfXZhciBPcj1BPT57bGV0IGU9bmV3IEFycmF5KDEwKSx0PShyLG8pPT57aWYoUUEocikpe2lmKGUuaW5kZXhPZihyKT49MClyZXR1cm47aWYoISgidG9KU09OImluIHIpKXtlW29dPXI7bGV0IGk9cShyKT9bXTp7fTtyZXR1cm4gckEociwobixnKT0+e2xldCBmPXQobixvKzEpOyF0QShmKSYmKGlbZ109Zil9KSxlW29dPXZvaWQgMCxpfX1yZXR1cm4gcn07cmV0dXJuIHQoQSwwKX0sV3I9TygiQXN5bmNGdW5jdGlvbiIpLFByPUE9PkEmJihRQShBKXx8VShBKSkmJlUoQS50aGVuKSYmVShBLmNhdGNoKSxsPXtpc0FycmF5OnEsaXNBcnJheUJ1ZmZlcjp4ZSxpc0J1ZmZlcjppcixpc0Zvcm1EYXRhOnVyLGlzQXJyYXlCdWZmZXJWaWV3Om9yLGlzU3RyaW5nOm5yLGlzTnVtYmVyOlRlLGlzQm9vbGVhbjpzcixpc09iamVjdDpRQSxpc1BsYWluT2JqZWN0OmNBLGlzVW5kZWZpbmVkOnRBLGlzRGF0ZTphcixpc0ZpbGU6SXIsaXNCbG9iOmdyLGlzUmVnRXhwOlJyLGlzRnVuY3Rpb246VSxpc1N0cmVhbTpCcixpc1VSTFNlYXJjaFBhcmFtczpDcixpc1R5cGVkQXJyYXk6aHIsaXNGaWxlTGlzdDpscixmb3JFYWNoOnJBLG1lcmdlOkxBLGV4dGVuZDpjcix0cmltOmZyLHN0cmlwQk9NOnByLGluaGVyaXRzOkVyLHRvRmxhdE9iamVjdDpRcixraW5kT2Y6cEEsa2luZE9mVGVzdDpPLGVuZHNXaXRoOm1yLHRvQXJyYXk6ZHIsZm9yRWFjaEVudHJ5OnlyLG1hdGNoQWxsOndyLGlzSFRNTEZvcm06RHIsaGFzT3duUHJvcGVydHk6R2UsaGFzT3duUHJvcDpHZSxyZWR1Y2VEZXNjcmlwdG9yczpxZSxmcmVlemVNZXRob2RzOmtyLHRvT2JqZWN0U2V0OlNyLHRvQ2FtZWxDYXNlOmJyLG5vb3A6RnIsdG9GaW5pdGVOdW1iZXI6VXIsZmluZEtleTpKZSxnbG9iYWw6SGUsaXNDb250ZXh0RGVmaW5lZDpZZSxBTFBIQUJFVDpLZSxnZW5lcmF0ZVN0cmluZzpOcixpc1NwZWNDb21wbGlhbnRGb3JtOk1yLHRvSlNPTk9iamVjdDpPcixpc0FzeW5jRm46V3IsaXNUaGVuYWJsZTpQcn07ZnVuY3Rpb24gSyhBLGUsdCxyLG8pe0Vycm9yLmNhbGwodGhpcyksRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U/RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcyx0aGlzLmNvbnN0cnVjdG9yKTp0aGlzLnN0YWNrPW5ldyBFcnJvcigpLnN0YWNrLHRoaXMubWVzc2FnZT1BLHRoaXMubmFtZT0iQXhpb3NFcnJvciIsZSYmKHRoaXMuY29kZT1lKSx0JiYodGhpcy5jb25maWc9dCksciYmKHRoaXMucmVxdWVzdD1yKSxvJiYodGhpcy5yZXNwb25zZT1vKX1sLmluaGVyaXRzKEssRXJyb3Ise3RvSlNPTjpmdW5jdGlvbigpe3JldHVybnttZXNzYWdlOnRoaXMubWVzc2FnZSxuYW1lOnRoaXMubmFtZSxkZXNjcmlwdGlvbjp0aGlzLmRlc2NyaXB0aW9uLG51bWJlcjp0aGlzLm51bWJlcixmaWxlTmFtZTp0aGlzLmZpbGVOYW1lLGxpbmVOdW1iZXI6dGhpcy5saW5lTnVtYmVyLGNvbHVtbk51bWJlcjp0aGlzLmNvbHVtbk51bWJlcixzdGFjazp0aGlzLnN0YWNrLGNvbmZpZzpsLnRvSlNPTk9iamVjdCh0aGlzLmNvbmZpZyksY29kZTp0aGlzLmNvZGUsc3RhdHVzOnRoaXMucmVzcG9uc2UmJnRoaXMucmVzcG9uc2Uuc3RhdHVzP3RoaXMucmVzcG9uc2Uuc3RhdHVzOm51bGx9fX0pO3ZhciBqZT1LLnByb3RvdHlwZSx2ZT17fTtbIkVSUl9CQURfT1BUSU9OX1ZBTFVFIiwiRVJSX0JBRF9PUFRJT04iLCJFQ09OTkFCT1JURUQiLCJFVElNRURPVVQiLCJFUlJfTkVUV09SSyIsIkVSUl9GUl9UT09fTUFOWV9SRURJUkVDVFMiLCJFUlJfREVQUkVDQVRFRCIsIkVSUl9CQURfUkVTUE9OU0UiLCJFUlJfQkFEX1JFUVVFU1QiLCJFUlJfQ0FOQ0VMRUQiLCJFUlJfTk9UX1NVUFBPUlQiLCJFUlJfSU5WQUxJRF9VUkwiXS5mb3JFYWNoKEE9Pnt2ZVtBXT17dmFsdWU6QX19KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhLLHZlKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoamUsImlzQXhpb3NFcnJvciIse3ZhbHVlOiEwfSk7Sy5mcm9tPShBLGUsdCxyLG8saSk9PntsZXQgbj1PYmplY3QuY3JlYXRlKGplKTtyZXR1cm4gbC50b0ZsYXRPYmplY3QoQSxuLGZ1bmN0aW9uKGYpe3JldHVybiBmIT09RXJyb3IucHJvdG90eXBlfSxnPT5nIT09ImlzQXhpb3NFcnJvciIpLEsuY2FsbChuLEEubWVzc2FnZSxlLHQscixvKSxuLmNhdXNlPUEsbi5uYW1lPUEubmFtZSxpJiZPYmplY3QuYXNzaWduKG4saSksbn07dmFyIHk9Szt2YXIgbUE9bnVsbDtmdW5jdGlvbiBUQShBKXtyZXR1cm4gbC5pc1BsYWluT2JqZWN0KEEpfHxsLmlzQXJyYXkoQSl9ZnVuY3Rpb24gemUoQSl7cmV0dXJuIGwuZW5kc1dpdGgoQSwiW10iKT9BLnNsaWNlKDAsLTIpOkF9ZnVuY3Rpb24gX2UoQSxlLHQpe3JldHVybiBBP0EuY29uY2F0KGUpLm1hcChmdW5jdGlvbihvLGkpe3JldHVybiBvPXplKG8pLCF0JiZpPyJbIitvKyJdIjpvfSkuam9pbih0PyIuIjoiIik6ZX1mdW5jdGlvbiBHcihBKXtyZXR1cm4gbC5pc0FycmF5KEEpJiYhQS5zb21lKFRBKX12YXIgTHI9bC50b0ZsYXRPYmplY3QobCx7fSxudWxsLGZ1bmN0aW9uKGUpe3JldHVybi9eaXNbQS1aXS8udGVzdChlKX0pO2Z1bmN0aW9uIHhyKEEsZSx0KXtpZighbC5pc09iamVjdChBKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ0YXJnZXQgbXVzdCBiZSBhbiBvYmplY3QiKTtlPWV8fG5ldyhtQXx8Rm9ybURhdGEpLHQ9bC50b0ZsYXRPYmplY3QodCx7bWV0YVRva2VuczohMCxkb3RzOiExLGluZGV4ZXM6ITF9LCExLGZ1bmN0aW9uKHAsRSl7cmV0dXJuIWwuaXNVbmRlZmluZWQoRVtwXSl9KTtsZXQgcj10Lm1ldGFUb2tlbnMsbz10LnZpc2l0b3J8fHMsaT10LmRvdHMsbj10LmluZGV4ZXMsZj0odC5CbG9ifHx0eXBlb2YgQmxvYjwidSImJkJsb2IpJiZsLmlzU3BlY0NvbXBsaWFudEZvcm0oZSk7aWYoIWwuaXNGdW5jdGlvbihvKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ2aXNpdG9yIG11c3QgYmUgYSBmdW5jdGlvbiIpO2Z1bmN0aW9uIEIodSl7aWYodT09PW51bGwpcmV0dXJuIiI7aWYobC5pc0RhdGUodSkpcmV0dXJuIHUudG9JU09TdHJpbmcoKTtpZighZiYmbC5pc0Jsb2IodSkpdGhyb3cgbmV3IHkoIkJsb2IgaXMgbm90IHN1cHBvcnRlZC4gVXNlIGEgQnVmZmVyIGluc3RlYWQuIik7cmV0dXJuIGwuaXNBcnJheUJ1ZmZlcih1KXx8bC5pc1R5cGVkQXJyYXkodSk/ZiYmdHlwZW9mIEJsb2I9PSJmdW5jdGlvbiI/bmV3IEJsb2IoW3VdKTpCdWZmZXIuZnJvbSh1KTp1fWZ1bmN0aW9uIHModSxwLEUpe2xldCB3PXU7aWYodSYmIUUmJnR5cGVvZiB1PT0ib2JqZWN0Iil7aWYobC5lbmRzV2l0aChwLCJ7fSIpKXA9cj9wOnAuc2xpY2UoMCwtMiksdT1KU09OLnN0cmluZ2lmeSh1KTtlbHNlIGlmKGwuaXNBcnJheSh1KSYmR3IodSl8fChsLmlzRmlsZUxpc3QodSl8fGwuZW5kc1dpdGgocCwiW10iKSkmJih3PWwudG9BcnJheSh1KSkpcmV0dXJuIHA9emUocCksdy5mb3JFYWNoKGZ1bmN0aW9uKE0sTHQpeyEobC5pc1VuZGVmaW5lZChNKXx8TT09PW51bGwpJiZlLmFwcGVuZChuPT09ITA/X2UoW3BdLEx0LGkpOm49PT1udWxsP3A6cCsiW10iLEIoTSkpfSksITF9cmV0dXJuIFRBKHUpPyEwOihlLmFwcGVuZChfZShFLHAsaSksQih1KSksITEpfWxldCBhPVtdLGM9T2JqZWN0LmFzc2lnbihMcix7ZGVmYXVsdFZpc2l0b3I6cyxjb252ZXJ0VmFsdWU6Qixpc1Zpc2l0YWJsZTpUQX0pO2Z1bmN0aW9uIEkodSxwKXtpZighbC5pc1VuZGVmaW5lZCh1KSl7aWYoYS5pbmRleE9mKHUpIT09LTEpdGhyb3cgRXJyb3IoIkNpcmN1bGFyIHJlZmVyZW5jZSBkZXRlY3RlZCBpbiAiK3Auam9pbigiLiIpKTthLnB1c2godSksbC5mb3JFYWNoKHUsZnVuY3Rpb24odyxOKXsoIShsLmlzVW5kZWZpbmVkKHcpfHx3PT09bnVsbCkmJm8uY2FsbChlLHcsbC5pc1N0cmluZyhOKT9OLnRyaW0oKTpOLHAsYykpPT09ITAmJkkodyxwP3AuY29uY2F0KE4pOltOXSl9KSxhLnBvcCgpfX1pZighbC5pc09iamVjdChBKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJkYXRhIG11c3QgYmUgYW4gb2JqZWN0Iik7cmV0dXJuIEkoQSksZX12YXIgRz14cjtmdW5jdGlvbiBWZShBKXtsZXQgZT17IiEiOiIlMjEiLCInIjoiJTI3IiwiKCI6IiUyOCIsIikiOiIlMjkiLCJ+IjoiJTdFIiwiJTIwIjoiKyIsIiUwMCI6IlwwIn07cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChBKS5yZXBsYWNlKC9bIScoKX5dfCUyMHwlMDAvZyxmdW5jdGlvbihyKXtyZXR1cm4gZVtyXX0pfWZ1bmN0aW9uIFplKEEsZSl7dGhpcy5fcGFpcnM9W10sQSYmRyhBLHRoaXMsZSl9dmFyIFhlPVplLnByb3RvdHlwZTtYZS5hcHBlbmQ9ZnVuY3Rpb24oZSx0KXt0aGlzLl9wYWlycy5wdXNoKFtlLHRdKX07WGUudG9TdHJpbmc9ZnVuY3Rpb24oZSl7bGV0IHQ9ZT9mdW5jdGlvbihyKXtyZXR1cm4gZS5jYWxsKHRoaXMscixWZSl9OlZlO3JldHVybiB0aGlzLl9wYWlycy5tYXAoZnVuY3Rpb24obyl7cmV0dXJuIHQob1swXSkrIj0iK3Qob1sxXSl9LCIiKS5qb2luKCImIil9O3ZhciBkQT1aZTtmdW5jdGlvbiBUcihBKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEEpLnJlcGxhY2UoLyUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNC9nLCIkIikucmVwbGFjZSgvJTJDL2dpLCIsIikucmVwbGFjZSgvJTIwL2csIisiKS5yZXBsYWNlKC8lNUIvZ2ksIlsiKS5yZXBsYWNlKC8lNUQvZ2ksIl0iKX1mdW5jdGlvbiBpQShBLGUsdCl7aWYoIWUpcmV0dXJuIEE7bGV0IHI9dCYmdC5lbmNvZGV8fFRyLG89dCYmdC5zZXJpYWxpemUsaTtpZihvP2k9byhlLHQpOmk9bC5pc1VSTFNlYXJjaFBhcmFtcyhlKT9lLnRvU3RyaW5nKCk6bmV3IGRBKGUsdCkudG9TdHJpbmcociksaSl7bGV0IG49QS5pbmRleE9mKCIjIik7biE9PS0xJiYoQT1BLnNsaWNlKDAsbikpLEErPShBLmluZGV4T2YoIj8iKT09PS0xPyI/IjoiJiIpK2l9cmV0dXJuIEF9dmFyIEpBPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5oYW5kbGVycz1bXX11c2UoZSx0LHIpe3JldHVybiB0aGlzLmhhbmRsZXJzLnB1c2goe2Z1bGZpbGxlZDplLHJlamVjdGVkOnQsc3luY2hyb25vdXM6cj9yLnN5bmNocm9ub3VzOiExLHJ1bldoZW46cj9yLnJ1bldoZW46bnVsbH0pLHRoaXMuaGFuZGxlcnMubGVuZ3RoLTF9ZWplY3QoZSl7dGhpcy5oYW5kbGVyc1tlXSYmKHRoaXMuaGFuZGxlcnNbZV09bnVsbCl9Y2xlYXIoKXt0aGlzLmhhbmRsZXJzJiYodGhpcy5oYW5kbGVycz1bXSl9Zm9yRWFjaChlKXtsLmZvckVhY2godGhpcy5oYW5kbGVycyxmdW5jdGlvbihyKXtyIT09bnVsbCYmZShyKX0pfX0sSEE9SkE7dmFyIGhBPXtzaWxlbnRKU09OUGFyc2luZzohMCxmb3JjZWRKU09OUGFyc2luZzohMCxjbGFyaWZ5VGltZW91dEVycm9yOiExfTt2YXIgJGU9dHlwZW9mIFVSTFNlYXJjaFBhcmFtczwidSI/VVJMU2VhcmNoUGFyYW1zOmRBO3ZhciBBdD10eXBlb2YgRm9ybURhdGE8InUiP0Zvcm1EYXRhOm51bGw7dmFyIGV0PXR5cGVvZiBCbG9iPCJ1Ij9CbG9iOm51bGw7dmFyIHR0PXtpc0Jyb3dzZXI6ITAsY2xhc3Nlczp7VVJMU2VhcmNoUGFyYW1zOiRlLEZvcm1EYXRhOkF0LEJsb2I6ZXR9LHByb3RvY29sczpbImh0dHAiLCJodHRwcyIsImZpbGUiLCJibG9iIiwidXJsIiwiZGF0YSJdfTt2YXIgWUE9e307VHQoWUEse2hhc0Jyb3dzZXJFbnY6KCk9PnJ0LGhhc1N0YW5kYXJkQnJvd3NlckVudjooKT0+SnIsaGFzU3RhbmRhcmRCcm93c2VyV2ViV29ya2VyRW52OigpPT5Icn0pO3ZhciBydD10eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9mIGRvY3VtZW50PCJ1IixKcj0oQT0+cnQmJlsiUmVhY3ROYXRpdmUiLCJOYXRpdmVTY3JpcHQiLCJOUyJdLmluZGV4T2YoQSk8MCkodHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvci5wcm9kdWN0KSxIcj10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGU8InUiJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnR5cGVvZiBzZWxmLmltcG9ydFNjcmlwdHM9PSJmdW5jdGlvbiI7dmFyIFI9ey4uLllBLC4uLnR0fTtmdW5jdGlvbiBxQShBLGUpe3JldHVybiBHKEEsbmV3IFIuY2xhc3Nlcy5VUkxTZWFyY2hQYXJhbXMsT2JqZWN0LmFzc2lnbih7dmlzaXRvcjpmdW5jdGlvbih0LHIsbyxpKXtyZXR1cm4gUi5pc05vZGUmJmwuaXNCdWZmZXIodCk/KHRoaXMuYXBwZW5kKHIsdC50b1N0cmluZygiYmFzZTY0IikpLCExKTppLmRlZmF1bHRWaXNpdG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LGUpKX1mdW5jdGlvbiBZcihBKXtyZXR1cm4gbC5tYXRjaEFsbCgvXHcrfFxbKFx3KildL2csQSkubWFwKGU9PmVbMF09PT0iW10iPyIiOmVbMV18fGVbMF0pfWZ1bmN0aW9uIHFyKEEpe2xldCBlPXt9LHQ9T2JqZWN0LmtleXMoQSkscixvPXQubGVuZ3RoLGk7Zm9yKHI9MDtyPG87cisrKWk9dFtyXSxlW2ldPUFbaV07cmV0dXJuIGV9ZnVuY3Rpb24gS3IoQSl7ZnVuY3Rpb24gZSh0LHIsbyxpKXtsZXQgbj10W2krK10sZz1OdW1iZXIuaXNGaW5pdGUoK24pLGY9aT49dC5sZW5ndGg7cmV0dXJuIG49IW4mJmwuaXNBcnJheShvKT9vLmxlbmd0aDpuLGY/KGwuaGFzT3duUHJvcChvLG4pP29bbl09W29bbl0scl06b1tuXT1yLCFnKTooKCFvW25dfHwhbC5pc09iamVjdChvW25dKSkmJihvW25dPVtdKSxlKHQscixvW25dLGkpJiZsLmlzQXJyYXkob1tuXSkmJihvW25dPXFyKG9bbl0pKSwhZyl9aWYobC5pc0Zvcm1EYXRhKEEpJiZsLmlzRnVuY3Rpb24oQS5lbnRyaWVzKSl7bGV0IHQ9e307cmV0dXJuIGwuZm9yRWFjaEVudHJ5KEEsKHIsbyk9PntlKFlyKHIpLG8sdCwwKX0pLHR9cmV0dXJuIG51bGx9dmFyIHlBPUtyO2Z1bmN0aW9uIGpyKEEsZSx0KXtpZihsLmlzU3RyaW5nKEEpKXRyeXtyZXR1cm4oZXx8SlNPTi5wYXJzZSkoQSksbC50cmltKEEpfWNhdGNoKHIpe2lmKHIubmFtZSE9PSJTeW50YXhFcnJvciIpdGhyb3cgcn1yZXR1cm4odHx8SlNPTi5zdHJpbmdpZnkpKEEpfXZhciBLQT17dHJhbnNpdGlvbmFsOmhBLGFkYXB0ZXI6WyJ4aHIiLCJodHRwIl0sdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24oZSx0KXtsZXQgcj10LmdldENvbnRlbnRUeXBlKCl8fCIiLG89ci5pbmRleE9mKCJhcHBsaWNhdGlvbi9qc29uIik+LTEsaT1sLmlzT2JqZWN0KGUpO2lmKGkmJmwuaXNIVE1MRm9ybShlKSYmKGU9bmV3IEZvcm1EYXRhKGUpKSxsLmlzRm9ybURhdGEoZSkpcmV0dXJuIG8mJm8/SlNPTi5zdHJpbmdpZnkoeUEoZSkpOmU7aWYobC5pc0FycmF5QnVmZmVyKGUpfHxsLmlzQnVmZmVyKGUpfHxsLmlzU3RyZWFtKGUpfHxsLmlzRmlsZShlKXx8bC5pc0Jsb2IoZSkpcmV0dXJuIGU7aWYobC5pc0FycmF5QnVmZmVyVmlldyhlKSlyZXR1cm4gZS5idWZmZXI7aWYobC5pc1VSTFNlYXJjaFBhcmFtcyhlKSlyZXR1cm4gdC5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiLCExKSxlLnRvU3RyaW5nKCk7bGV0IGc7aWYoaSl7aWYoci5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKT4tMSlyZXR1cm4gcUEoZSx0aGlzLmZvcm1TZXJpYWxpemVyKS50b1N0cmluZygpO2lmKChnPWwuaXNGaWxlTGlzdChlKSl8fHIuaW5kZXhPZigibXVsdGlwYXJ0L2Zvcm0tZGF0YSIpPi0xKXtsZXQgZj10aGlzLmVudiYmdGhpcy5lbnYuRm9ybURhdGE7cmV0dXJuIEcoZz97ImZpbGVzW10iOmV9OmUsZiYmbmV3IGYsdGhpcy5mb3JtU2VyaWFsaXplcil9fXJldHVybiBpfHxvPyh0LnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi9qc29uIiwhMSksanIoZSkpOmV9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24oZSl7bGV0IHQ9dGhpcy50cmFuc2l0aW9uYWx8fEtBLnRyYW5zaXRpb25hbCxyPXQmJnQuZm9yY2VkSlNPTlBhcnNpbmcsbz10aGlzLnJlc3BvbnNlVHlwZT09PSJqc29uIjtpZihlJiZsLmlzU3RyaW5nKGUpJiYociYmIXRoaXMucmVzcG9uc2VUeXBlfHxvKSl7bGV0IG49ISh0JiZ0LnNpbGVudEpTT05QYXJzaW5nKSYmbzt0cnl7cmV0dXJuIEpTT04ucGFyc2UoZSl9Y2F0Y2goZyl7aWYobil0aHJvdyBnLm5hbWU9PT0iU3ludGF4RXJyb3IiP3kuZnJvbShnLHkuRVJSX0JBRF9SRVNQT05TRSx0aGlzLG51bGwsdGhpcy5yZXNwb25zZSk6Z319cmV0dXJuIGV9XSx0aW1lb3V0OjAseHNyZkNvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLHhzcmZIZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4iLG1heENvbnRlbnRMZW5ndGg6LTEsbWF4Qm9keUxlbmd0aDotMSxlbnY6e0Zvcm1EYXRhOlIuY2xhc3Nlcy5Gb3JtRGF0YSxCbG9iOlIuY2xhc3Nlcy5CbG9ifSx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihlKXtyZXR1cm4gZT49MjAwJiZlPDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiIsIkNvbnRlbnQtVHlwZSI6dm9pZCAwfX19O2wuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giXSxBPT57S0EuaGVhZGVyc1tBXT17fX0pO3ZhciBqPUtBO3ZhciB2cj1sLnRvT2JqZWN0U2V0KFsiYWdlIiwiYXV0aG9yaXphdGlvbiIsImNvbnRlbnQtbGVuZ3RoIiwiY29udGVudC10eXBlIiwiZXRhZyIsImV4cGlyZXMiLCJmcm9tIiwiaG9zdCIsImlmLW1vZGlmaWVkLXNpbmNlIiwiaWYtdW5tb2RpZmllZC1zaW5jZSIsImxhc3QtbW9kaWZpZWQiLCJsb2NhdGlvbiIsIm1heC1mb3J3YXJkcyIsInByb3h5LWF1dGhvcml6YXRpb24iLCJyZWZlcmVyIiwicmV0cnktYWZ0ZXIiLCJ1c2VyLWFnZW50Il0pLGl0PUE9PntsZXQgZT17fSx0LHIsbztyZXR1cm4gQSYmQS5zcGxpdChgCmApLmZvckVhY2goZnVuY3Rpb24obil7bz1uLmluZGV4T2YoIjoiKSx0PW4uc3Vic3RyaW5nKDAsbykudHJpbSgpLnRvTG93ZXJDYXNlKCkscj1uLnN1YnN0cmluZyhvKzEpLnRyaW0oKSwhKCF0fHxlW3RdJiZ2clt0XSkmJih0PT09InNldC1jb29raWUiP2VbdF0/ZVt0XS5wdXNoKHIpOmVbdF09W3JdOmVbdF09ZVt0XT9lW3RdKyIsICIrcjpyKX0pLGV9O3ZhciBvdD1TeW1ib2woImludGVybmFscyIpO2Z1bmN0aW9uIG9BKEEpe3JldHVybiBBJiZTdHJpbmcoQSkudHJpbSgpLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gd0EoQSl7cmV0dXJuIEE9PT0hMXx8QT09bnVsbD9BOmwuaXNBcnJheShBKT9BLm1hcCh3QSk6U3RyaW5nKEEpfWZ1bmN0aW9uIF9yKEEpe2xldCBlPU9iamVjdC5jcmVhdGUobnVsbCksdD0vKFteXHMsOz1dKylccyooPzo9XHMqKFteLDtdKykpPy9nLHI7Zm9yKDtyPXQuZXhlYyhBKTspZVtyWzFdXT1yWzJdO3JldHVybiBlfXZhciB6cj1BPT4vXlstX2EtekEtWjAtOV5gfH4sISMkJSYnKisuXSskLy50ZXN0KEEudHJpbSgpKTtmdW5jdGlvbiBqQShBLGUsdCxyLG8pe2lmKGwuaXNGdW5jdGlvbihyKSlyZXR1cm4gci5jYWxsKHRoaXMsZSx0KTtpZihvJiYoZT10KSwhIWwuaXNTdHJpbmcoZSkpe2lmKGwuaXNTdHJpbmcocikpcmV0dXJuIGUuaW5kZXhPZihyKSE9PS0xO2lmKGwuaXNSZWdFeHAocikpcmV0dXJuIHIudGVzdChlKX19ZnVuY3Rpb24gVnIoQSl7cmV0dXJuIEEudHJpbSgpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvKFthLXpcZF0pKFx3KikvZywoZSx0LHIpPT50LnRvVXBwZXJDYXNlKCkrcil9ZnVuY3Rpb24gWnIoQSxlKXtsZXQgdD1sLnRvQ2FtZWxDYXNlKCIgIitlKTtbImdldCIsInNldCIsImhhcyJdLmZvckVhY2gocj0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLHIrdCx7dmFsdWU6ZnVuY3Rpb24obyxpLG4pe3JldHVybiB0aGlzW3JdLmNhbGwodGhpcyxlLG8saSxuKX0sY29uZmlndXJhYmxlOiEwfSl9KX12YXIgdj1jbGFzc3tjb25zdHJ1Y3RvcihlKXtlJiZ0aGlzLnNldChlKX1zZXQoZSx0LHIpe2xldCBvPXRoaXM7ZnVuY3Rpb24gaShnLGYsQil7bGV0IHM9b0EoZik7aWYoIXMpdGhyb3cgbmV3IEVycm9yKCJoZWFkZXIgbmFtZSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZyIpO2xldCBhPWwuZmluZEtleShvLHMpOyghYXx8b1thXT09PXZvaWQgMHx8Qj09PSEwfHxCPT09dm9pZCAwJiZvW2FdIT09ITEpJiYob1thfHxmXT13QShnKSl9bGV0IG49KGcsZik9PmwuZm9yRWFjaChnLChCLHMpPT5pKEIscyxmKSk7cmV0dXJuIGwuaXNQbGFpbk9iamVjdChlKXx8ZSBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3I/bihlLHQpOmwuaXNTdHJpbmcoZSkmJihlPWUudHJpbSgpKSYmIXpyKGUpP24oaXQoZSksdCk6ZSE9bnVsbCYmaSh0LGUsciksdGhpc31nZXQoZSx0KXtpZihlPW9BKGUpLGUpe2xldCByPWwuZmluZEtleSh0aGlzLGUpO2lmKHIpe2xldCBvPXRoaXNbcl07aWYoIXQpcmV0dXJuIG87aWYodD09PSEwKXJldHVybiBfcihvKTtpZihsLmlzRnVuY3Rpb24odCkpcmV0dXJuIHQuY2FsbCh0aGlzLG8scik7aWYobC5pc1JlZ0V4cCh0KSlyZXR1cm4gdC5leGVjKG8pO3Rocm93IG5ldyBUeXBlRXJyb3IoInBhcnNlciBtdXN0IGJlIGJvb2xlYW58cmVnZXhwfGZ1bmN0aW9uIil9fX1oYXMoZSx0KXtpZihlPW9BKGUpLGUpe2xldCByPWwuZmluZEtleSh0aGlzLGUpO3JldHVybiEhKHImJnRoaXNbcl0hPT12b2lkIDAmJighdHx8akEodGhpcyx0aGlzW3JdLHIsdCkpKX1yZXR1cm4hMX1kZWxldGUoZSx0KXtsZXQgcj10aGlzLG89ITE7ZnVuY3Rpb24gaShuKXtpZihuPW9BKG4pLG4pe2xldCBnPWwuZmluZEtleShyLG4pO2cmJighdHx8akEocixyW2ddLGcsdCkpJiYoZGVsZXRlIHJbZ10sbz0hMCl9fXJldHVybiBsLmlzQXJyYXkoZSk/ZS5mb3JFYWNoKGkpOmkoZSksb31jbGVhcihlKXtsZXQgdD1PYmplY3Qua2V5cyh0aGlzKSxyPXQubGVuZ3RoLG89ITE7Zm9yKDtyLS07KXtsZXQgaT10W3JdOyghZXx8akEodGhpcyx0aGlzW2ldLGksZSwhMCkpJiYoZGVsZXRlIHRoaXNbaV0sbz0hMCl9cmV0dXJuIG99bm9ybWFsaXplKGUpe2xldCB0PXRoaXMscj17fTtyZXR1cm4gbC5mb3JFYWNoKHRoaXMsKG8saSk9PntsZXQgbj1sLmZpbmRLZXkocixpKTtpZihuKXt0W25dPXdBKG8pLGRlbGV0ZSB0W2ldO3JldHVybn1sZXQgZz1lP1ZyKGkpOlN0cmluZyhpKS50cmltKCk7ZyE9PWkmJmRlbGV0ZSB0W2ldLHRbZ109d0EobykscltnXT0hMH0pLHRoaXN9Y29uY2F0KC4uLmUpe3JldHVybiB0aGlzLmNvbnN0cnVjdG9yLmNvbmNhdCh0aGlzLC4uLmUpfXRvSlNPTihlKXtsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBsLmZvckVhY2godGhpcywocixvKT0+e3IhPW51bGwmJnIhPT0hMSYmKHRbb109ZSYmbC5pc0FycmF5KHIpP3Iuam9pbigiLCAiKTpyKX0pLHR9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSlbU3ltYm9sLml0ZXJhdG9yXSgpfXRvU3RyaW5nKCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMudG9KU09OKCkpLm1hcCgoW2UsdF0pPT5lKyI6ICIrdCkuam9pbihgCmApfWdldFtTeW1ib2wudG9TdHJpbmdUYWddKCl7cmV0dXJuIkF4aW9zSGVhZGVycyJ9c3RhdGljIGZyb20oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0aGlzP2U6bmV3IHRoaXMoZSl9c3RhdGljIGNvbmNhdChlLC4uLnQpe2xldCByPW5ldyB0aGlzKGUpO3JldHVybiB0LmZvckVhY2gobz0+ci5zZXQobykpLHJ9c3RhdGljIGFjY2Vzc29yKGUpe2xldCByPSh0aGlzW290XT10aGlzW290XT17YWNjZXNzb3JzOnt9fSkuYWNjZXNzb3JzLG89dGhpcy5wcm90b3R5cGU7ZnVuY3Rpb24gaShuKXtsZXQgZz1vQShuKTtyW2ddfHwoWnIobyxuKSxyW2ddPSEwKX1yZXR1cm4gbC5pc0FycmF5KGUpP2UuZm9yRWFjaChpKTppKGUpLHRoaXN9fTt2LmFjY2Vzc29yKFsiQ29udGVudC1UeXBlIiwiQ29udGVudC1MZW5ndGgiLCJBY2NlcHQiLCJBY2NlcHQtRW5jb2RpbmciLCJVc2VyLUFnZW50IiwiQXV0aG9yaXphdGlvbiJdKTtsLnJlZHVjZURlc2NyaXB0b3JzKHYucHJvdG90eXBlLCh7dmFsdWU6QX0sZSk9PntsZXQgdD1lWzBdLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKTtyZXR1cm57Z2V0OigpPT5BLHNldChyKXt0aGlzW3RdPXJ9fX0pO2wuZnJlZXplTWV0aG9kcyh2KTt2YXIgaz12O2Z1bmN0aW9uIG5BKEEsZSl7bGV0IHQ9dGhpc3x8aixyPWV8fHQsbz1rLmZyb20oci5oZWFkZXJzKSxpPXIuZGF0YTtyZXR1cm4gbC5mb3JFYWNoKEEsZnVuY3Rpb24oZyl7aT1nLmNhbGwodCxpLG8ubm9ybWFsaXplKCksZT9lLnN0YXR1czp2b2lkIDApfSksby5ub3JtYWxpemUoKSxpfWZ1bmN0aW9uIHNBKEEpe3JldHVybiEhKEEmJkEuX19DQU5DRUxfXyl9ZnVuY3Rpb24gbnQoQSxlLHQpe3kuY2FsbCh0aGlzLEE/PyJjYW5jZWxlZCIseS5FUlJfQ0FOQ0VMRUQsZSx0KSx0aGlzLm5hbWU9IkNhbmNlbGVkRXJyb3IifWwuaW5oZXJpdHMobnQseSx7X19DQU5DRUxfXzohMH0pO3ZhciBMPW50O2Z1bmN0aW9uIHZBKEEsZSx0KXtsZXQgcj10LmNvbmZpZy52YWxpZGF0ZVN0YXR1czshdC5zdGF0dXN8fCFyfHxyKHQuc3RhdHVzKT9BKHQpOmUobmV3IHkoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIit0LnN0YXR1cyxbeS5FUlJfQkFEX1JFUVVFU1QseS5FUlJfQkFEX1JFU1BPTlNFXVtNYXRoLmZsb29yKHQuc3RhdHVzLzEwMCktNF0sdC5jb25maWcsdC5yZXF1ZXN0LHQpKX12YXIgc3Q9Ui5oYXNTdGFuZGFyZEJyb3dzZXJFbnY/e3dyaXRlKEEsZSx0LHIsbyxpKXtsZXQgbj1bQSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGUpXTtsLmlzTnVtYmVyKHQpJiZuLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZSh0KS50b0dNVFN0cmluZygpKSxsLmlzU3RyaW5nKHIpJiZuLnB1c2goInBhdGg9IityKSxsLmlzU3RyaW5nKG8pJiZuLnB1c2goImRvbWFpbj0iK28pLGk9PT0hMCYmbi5wdXNoKCJzZWN1cmUiKSxkb2N1bWVudC5jb29raWU9bi5qb2luKCI7ICIpfSxyZWFkKEEpe2xldCBlPWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCIoXnw7XFxzKikoIitBKyIpPShbXjtdKikiKSk7cmV0dXJuIGU/ZGVjb2RlVVJJQ29tcG9uZW50KGVbM10pOm51bGx9LHJlbW92ZShBKXt0aGlzLndyaXRlKEEsIiIsRGF0ZS5ub3coKS04NjRlNSl9fTp7d3JpdGUoKXt9LHJlYWQoKXtyZXR1cm4gbnVsbH0scmVtb3ZlKCl7fX07ZnVuY3Rpb24gX0EoQSl7cmV0dXJuL14oW2Etel1bYS16XGQrXC0uXSo6KT9cL1wvL2kudGVzdChBKX1mdW5jdGlvbiB6QShBLGUpe3JldHVybiBlP0EucmVwbGFjZSgvXC8rJC8sIiIpKyIvIitlLnJlcGxhY2UoL15cLysvLCIiKTpBfWZ1bmN0aW9uIGFBKEEsZSl7cmV0dXJuIEEmJiFfQShlKT96QShBLGUpOmV9dmFyIGF0PVIuaGFzU3RhbmRhcmRCcm93c2VyRW52P2Z1bmN0aW9uKCl7bGV0IGU9Lyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSx0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxyO2Z1bmN0aW9uIG8oaSl7bGV0IG49aTtyZXR1cm4gZSYmKHQuc2V0QXR0cmlidXRlKCJocmVmIixuKSxuPXQuaHJlZiksdC5zZXRBdHRyaWJ1dGUoImhyZWYiLG4pLHtocmVmOnQuaHJlZixwcm90b2NvbDp0LnByb3RvY29sP3QucHJvdG9jb2wucmVwbGFjZSgvOiQvLCIiKToiIixob3N0OnQuaG9zdCxzZWFyY2g6dC5zZWFyY2g/dC5zZWFyY2gucmVwbGFjZSgvXlw/LywiIik6IiIsaGFzaDp0Lmhhc2g/dC5oYXNoLnJlcGxhY2UoL14jLywiIik6IiIsaG9zdG5hbWU6dC5ob3N0bmFtZSxwb3J0OnQucG9ydCxwYXRobmFtZTp0LnBhdGhuYW1lLmNoYXJBdCgwKT09PSIvIj90LnBhdGhuYW1lOiIvIit0LnBhdGhuYW1lfX1yZXR1cm4gcj1vKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxmdW5jdGlvbihuKXtsZXQgZz1sLmlzU3RyaW5nKG4pP28obik6bjtyZXR1cm4gZy5wcm90b2NvbD09PXIucHJvdG9jb2wmJmcuaG9zdD09PXIuaG9zdH19KCk6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hMH19KCk7ZnVuY3Rpb24gVkEoQSl7bGV0IGU9L14oWy0rXHddezEsMjV9KSg6P1wvXC98OikvLmV4ZWMoQSk7cmV0dXJuIGUmJmVbMV18fCIifWZ1bmN0aW9uIFhyKEEsZSl7QT1BfHwxMDtsZXQgdD1uZXcgQXJyYXkoQSkscj1uZXcgQXJyYXkoQSksbz0wLGk9MCxuO3JldHVybiBlPWUhPT12b2lkIDA/ZToxZTMsZnVuY3Rpb24oZil7bGV0IEI9RGF0ZS5ub3coKSxzPXJbaV07bnx8KG49QiksdFtvXT1mLHJbb109QjtsZXQgYT1pLGM9MDtmb3IoO2EhPT1vOyljKz10W2ErK10sYT1hJUE7aWYobz0obysxKSVBLG89PT1pJiYoaT0oaSsxKSVBKSxCLW48ZSlyZXR1cm47bGV0IEk9cyYmQi1zO3JldHVybiBJP01hdGgucm91bmQoYyoxZTMvSSk6dm9pZCAwfX12YXIgSXQ9WHI7ZnVuY3Rpb24gZ3QoQSxlKXtsZXQgdD0wLHI9SXQoNTAsMjUwKTtyZXR1cm4gbz0+e2xldCBpPW8ubG9hZGVkLG49by5sZW5ndGhDb21wdXRhYmxlP28udG90YWw6dm9pZCAwLGc9aS10LGY9cihnKSxCPWk8PW47dD1pO2xldCBzPXtsb2FkZWQ6aSx0b3RhbDpuLHByb2dyZXNzOm4/aS9uOnZvaWQgMCxieXRlczpnLHJhdGU6Znx8dm9pZCAwLGVzdGltYXRlZDpmJiZuJiZCPyhuLWkpL2Y6dm9pZCAwLGV2ZW50Om99O3NbZT8iZG93bmxvYWQiOiJ1cGxvYWQiXT0hMCxBKHMpfX12YXIgJHI9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0PCJ1IixsdD0kciYmZnVuY3Rpb24oQSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQscil7bGV0IG89QS5kYXRhLGk9ay5mcm9tKEEuaGVhZGVycykubm9ybWFsaXplKCkse3Jlc3BvbnNlVHlwZTpuLHdpdGhYU1JGVG9rZW46Z309QSxmO2Z1bmN0aW9uIEIoKXtBLmNhbmNlbFRva2VuJiZBLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKGYpLEEuc2lnbmFsJiZBLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsZil9bGV0IHM7aWYobC5pc0Zvcm1EYXRhKG8pKXtpZihSLmhhc1N0YW5kYXJkQnJvd3NlckVudnx8Ui5oYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnYpaS5zZXRDb250ZW50VHlwZSghMSk7ZWxzZSBpZigocz1pLmdldENvbnRlbnRUeXBlKCkpIT09ITEpe2xldFtwLC4uLkVdPXM/cy5zcGxpdCgiOyIpLm1hcCh3PT53LnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pOltdO2kuc2V0Q29udGVudFR5cGUoW3B8fCJtdWx0aXBhcnQvZm9ybS1kYXRhIiwuLi5FXS5qb2luKCI7ICIpKX19bGV0IGE9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKEEuYXV0aCl7bGV0IHA9QS5hdXRoLnVzZXJuYW1lfHwiIixFPUEuYXV0aC5wYXNzd29yZD91bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoQS5hdXRoLnBhc3N3b3JkKSk6IiI7aS5zZXQoIkF1dGhvcml6YXRpb24iLCJCYXNpYyAiK2J0b2EocCsiOiIrRSkpfWxldCBjPWFBKEEuYmFzZVVSTCxBLnVybCk7YS5vcGVuKEEubWV0aG9kLnRvVXBwZXJDYXNlKCksaUEoYyxBLnBhcmFtcyxBLnBhcmFtc1NlcmlhbGl6ZXIpLCEwKSxhLnRpbWVvdXQ9QS50aW1lb3V0O2Z1bmN0aW9uIEkoKXtpZighYSlyZXR1cm47bGV0IHA9ay5mcm9tKCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiaW4gYSYmYS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSksdz17ZGF0YTohbnx8bj09PSJ0ZXh0Inx8bj09PSJqc29uIj9hLnJlc3BvbnNlVGV4dDphLnJlc3BvbnNlLHN0YXR1czphLnN0YXR1cyxzdGF0dXNUZXh0OmEuc3RhdHVzVGV4dCxoZWFkZXJzOnAsY29uZmlnOkEscmVxdWVzdDphfTt2QShmdW5jdGlvbihNKXt0KE0pLEIoKX0sZnVuY3Rpb24oTSl7cihNKSxCKCl9LHcpLGE9bnVsbH1pZigib25sb2FkZW5kImluIGE/YS5vbmxvYWRlbmQ9STphLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpeyFhfHxhLnJlYWR5U3RhdGUhPT00fHxhLnN0YXR1cz09PTAmJiEoYS5yZXNwb25zZVVSTCYmYS5yZXNwb25zZVVSTC5pbmRleE9mKCJmaWxlOiIpPT09MCl8fHNldFRpbWVvdXQoSSl9LGEub25hYm9ydD1mdW5jdGlvbigpe2EmJihyKG5ldyB5KCJSZXF1ZXN0IGFib3J0ZWQiLHkuRUNPTk5BQk9SVEVELEEsYSkpLGE9bnVsbCl9LGEub25lcnJvcj1mdW5jdGlvbigpe3IobmV3IHkoIk5ldHdvcmsgRXJyb3IiLHkuRVJSX05FVFdPUkssQSxhKSksYT1udWxsfSxhLm9udGltZW91dD1mdW5jdGlvbigpe2xldCBFPUEudGltZW91dD8idGltZW91dCBvZiAiK0EudGltZW91dCsibXMgZXhjZWVkZWQiOiJ0aW1lb3V0IGV4Y2VlZGVkIix3PUEudHJhbnNpdGlvbmFsfHxoQTtBLnRpbWVvdXRFcnJvck1lc3NhZ2UmJihFPUEudGltZW91dEVycm9yTWVzc2FnZSkscihuZXcgeShFLHcuY2xhcmlmeVRpbWVvdXRFcnJvcj95LkVUSU1FRE9VVDp5LkVDT05OQUJPUlRFRCxBLGEpKSxhPW51bGx9LFIuaGFzU3RhbmRhcmRCcm93c2VyRW52JiYoZyYmbC5pc0Z1bmN0aW9uKGcpJiYoZz1nKEEpKSxnfHxnIT09ITEmJmF0KGMpKSl7bGV0IHA9QS54c3JmSGVhZGVyTmFtZSYmQS54c3JmQ29va2llTmFtZSYmc3QucmVhZChBLnhzcmZDb29raWVOYW1lKTtwJiZpLnNldChBLnhzcmZIZWFkZXJOYW1lLHApfW89PT12b2lkIDAmJmkuc2V0Q29udGVudFR5cGUobnVsbCksInNldFJlcXVlc3RIZWFkZXIiaW4gYSYmbC5mb3JFYWNoKGkudG9KU09OKCksZnVuY3Rpb24oRSx3KXthLnNldFJlcXVlc3RIZWFkZXIodyxFKX0pLGwuaXNVbmRlZmluZWQoQS53aXRoQ3JlZGVudGlhbHMpfHwoYS53aXRoQ3JlZGVudGlhbHM9ISFBLndpdGhDcmVkZW50aWFscyksbiYmbiE9PSJqc29uIiYmKGEucmVzcG9uc2VUeXBlPUEucmVzcG9uc2VUeXBlKSx0eXBlb2YgQS5vbkRvd25sb2FkUHJvZ3Jlc3M9PSJmdW5jdGlvbiImJmEuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGd0KEEub25Eb3dubG9hZFByb2dyZXNzLCEwKSksdHlwZW9mIEEub25VcGxvYWRQcm9ncmVzcz09ImZ1bmN0aW9uIiYmYS51cGxvYWQmJmEudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixndChBLm9uVXBsb2FkUHJvZ3Jlc3MpKSwoQS5jYW5jZWxUb2tlbnx8QS5zaWduYWwpJiYoZj1wPT57YSYmKHIoIXB8fHAudHlwZT9uZXcgTChudWxsLEEsYSk6cCksYS5hYm9ydCgpLGE9bnVsbCl9LEEuY2FuY2VsVG9rZW4mJkEuY2FuY2VsVG9rZW4uc3Vic2NyaWJlKGYpLEEuc2lnbmFsJiYoQS5zaWduYWwuYWJvcnRlZD9mKCk6QS5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGYpKSk7bGV0IHU9VkEoYyk7aWYodSYmUi5wcm90b2NvbHMuaW5kZXhPZih1KT09PS0xKXtyKG5ldyB5KCJVbnN1cHBvcnRlZCBwcm90b2NvbCAiK3UrIjoiLHkuRVJSX0JBRF9SRVFVRVNULEEpKTtyZXR1cm59YS5zZW5kKG98fG51bGwpfSl9O3ZhciBaQT17aHR0cDptQSx4aHI6bHR9O2wuZm9yRWFjaChaQSwoQSxlKT0+e2lmKEEpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoQSwibmFtZSIse3ZhbHVlOmV9KX1jYXRjaHt9T2JqZWN0LmRlZmluZVByb3BlcnR5KEEsImFkYXB0ZXJOYW1lIix7dmFsdWU6ZX0pfX0pO3ZhciBCdD1BPT5gLSAke0F9YCxBaT1BPT5sLmlzRnVuY3Rpb24oQSl8fEE9PT1udWxsfHxBPT09ITEsREE9e2dldEFkYXB0ZXI6QT0+e0E9bC5pc0FycmF5KEEpP0E6W0FdO2xldHtsZW5ndGg6ZX09QSx0LHIsbz17fTtmb3IobGV0IGk9MDtpPGU7aSsrKXt0PUFbaV07bGV0IG47aWYocj10LCFBaSh0KSYmKHI9WkFbKG49U3RyaW5nKHQpKS50b0xvd2VyQ2FzZSgpXSxyPT09dm9pZCAwKSl0aHJvdyBuZXcgeShgVW5rbm93biBhZGFwdGVyICcke259J2ApO2lmKHIpYnJlYWs7b1tufHwiIyIraV09cn1pZighcil7bGV0IGk9T2JqZWN0LmVudHJpZXMobykubWFwKChbZyxmXSk9PmBhZGFwdGVyICR7Z30gYCsoZj09PSExPyJpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBlbnZpcm9ubWVudCI6ImlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGJ1aWxkIikpLG49ZT9pLmxlbmd0aD4xP2BzaW5jZSA6CmAraS5tYXAoQnQpLmpvaW4oYApgKToiICIrQnQoaVswXSk6ImFzIG5vIGFkYXB0ZXIgc3BlY2lmaWVkIjt0aHJvdyBuZXcgeSgiVGhlcmUgaXMgbm8gc3VpdGFibGUgYWRhcHRlciB0byBkaXNwYXRjaCB0aGUgcmVxdWVzdCAiK24sIkVSUl9OT1RfU1VQUE9SVCIpfXJldHVybiByfSxhZGFwdGVyczpaQX07ZnVuY3Rpb24gWEEoQSl7aWYoQS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCksQS5zaWduYWwmJkEuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IEwobnVsbCxBKX1mdW5jdGlvbiBiQShBKXtyZXR1cm4gWEEoQSksQS5oZWFkZXJzPWsuZnJvbShBLmhlYWRlcnMpLEEuZGF0YT1uQS5jYWxsKEEsQS50cmFuc2Zvcm1SZXF1ZXN0KSxbInBvc3QiLCJwdXQiLCJwYXRjaCJdLmluZGV4T2YoQS5tZXRob2QpIT09LTEmJkEuaGVhZGVycy5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiwhMSksREEuZ2V0QWRhcHRlcihBLmFkYXB0ZXJ8fGouYWRhcHRlcikoQSkudGhlbihmdW5jdGlvbihyKXtyZXR1cm4gWEEoQSksci5kYXRhPW5BLmNhbGwoQSxBLnRyYW5zZm9ybVJlc3BvbnNlLHIpLHIuaGVhZGVycz1rLmZyb20oci5oZWFkZXJzKSxyfSxmdW5jdGlvbihyKXtyZXR1cm4gc0Eocil8fChYQShBKSxyJiZyLnJlc3BvbnNlJiYoci5yZXNwb25zZS5kYXRhPW5BLmNhbGwoQSxBLnRyYW5zZm9ybVJlc3BvbnNlLHIucmVzcG9uc2UpLHIucmVzcG9uc2UuaGVhZGVycz1rLmZyb20oci5yZXNwb25zZS5oZWFkZXJzKSkpLFByb21pc2UucmVqZWN0KHIpfSl9dmFyIHV0PUE9PkEgaW5zdGFuY2VvZiBrP0EudG9KU09OKCk6QTtmdW5jdGlvbiBXKEEsZSl7ZT1lfHx7fTtsZXQgdD17fTtmdW5jdGlvbiByKEIscyxhKXtyZXR1cm4gbC5pc1BsYWluT2JqZWN0KEIpJiZsLmlzUGxhaW5PYmplY3Qocyk/bC5tZXJnZS5jYWxsKHtjYXNlbGVzczphfSxCLHMpOmwuaXNQbGFpbk9iamVjdChzKT9sLm1lcmdlKHt9LHMpOmwuaXNBcnJheShzKT9zLnNsaWNlKCk6c31mdW5jdGlvbiBvKEIscyxhKXtpZihsLmlzVW5kZWZpbmVkKHMpKXtpZighbC5pc1VuZGVmaW5lZChCKSlyZXR1cm4gcih2b2lkIDAsQixhKX1lbHNlIHJldHVybiByKEIscyxhKX1mdW5jdGlvbiBpKEIscyl7aWYoIWwuaXNVbmRlZmluZWQocykpcmV0dXJuIHIodm9pZCAwLHMpfWZ1bmN0aW9uIG4oQixzKXtpZihsLmlzVW5kZWZpbmVkKHMpKXtpZighbC5pc1VuZGVmaW5lZChCKSlyZXR1cm4gcih2b2lkIDAsQil9ZWxzZSByZXR1cm4gcih2b2lkIDAscyl9ZnVuY3Rpb24gZyhCLHMsYSl7aWYoYSBpbiBlKXJldHVybiByKEIscyk7aWYoYSBpbiBBKXJldHVybiByKHZvaWQgMCxCKX1sZXQgZj17dXJsOmksbWV0aG9kOmksZGF0YTppLGJhc2VVUkw6bix0cmFuc2Zvcm1SZXF1ZXN0Om4sdHJhbnNmb3JtUmVzcG9uc2U6bixwYXJhbXNTZXJpYWxpemVyOm4sdGltZW91dDpuLHRpbWVvdXRNZXNzYWdlOm4sd2l0aENyZWRlbnRpYWxzOm4sd2l0aFhTUkZUb2tlbjpuLGFkYXB0ZXI6bixyZXNwb25zZVR5cGU6bix4c3JmQ29va2llTmFtZTpuLHhzcmZIZWFkZXJOYW1lOm4sb25VcGxvYWRQcm9ncmVzczpuLG9uRG93bmxvYWRQcm9ncmVzczpuLGRlY29tcHJlc3M6bixtYXhDb250ZW50TGVuZ3RoOm4sbWF4Qm9keUxlbmd0aDpuLGJlZm9yZVJlZGlyZWN0Om4sdHJhbnNwb3J0Om4saHR0cEFnZW50Om4saHR0cHNBZ2VudDpuLGNhbmNlbFRva2VuOm4sc29ja2V0UGF0aDpuLHJlc3BvbnNlRW5jb2Rpbmc6bix2YWxpZGF0ZVN0YXR1czpnLGhlYWRlcnM6KEIscyk9Pm8odXQoQiksdXQocyksITApfTtyZXR1cm4gbC5mb3JFYWNoKE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sQSxlKSksZnVuY3Rpb24ocyl7bGV0IGE9ZltzXXx8byxjPWEoQVtzXSxlW3NdLHMpO2wuaXNVbmRlZmluZWQoYykmJmEhPT1nfHwodFtzXT1jKX0pLHR9dmFyIFJBPSIxLjYuMiI7dmFyICRBPXt9O1sib2JqZWN0IiwiYm9vbGVhbiIsIm51bWJlciIsImZ1bmN0aW9uIiwic3RyaW5nIiwic3ltYm9sIl0uZm9yRWFjaCgoQSxlKT0+eyRBW0FdPWZ1bmN0aW9uKHIpe3JldHVybiB0eXBlb2Ygcj09PUF8fCJhIisoZTwxPyJuICI6IiAiKStBfX0pO3ZhciBDdD17fTskQS50cmFuc2l0aW9uYWw9ZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIG8oaSxuKXtyZXR1cm4iW0F4aW9zIHYiK1JBKyJdIFRyYW5zaXRpb25hbCBvcHRpb24gJyIraSsiJyIrbisocj8iLiAiK3I6IiIpfXJldHVybihpLG4sZyk9PntpZihlPT09ITEpdGhyb3cgbmV3IHkobyhuLCIgaGFzIGJlZW4gcmVtb3ZlZCIrKHQ/IiBpbiAiK3Q6IiIpKSx5LkVSUl9ERVBSRUNBVEVEKTtyZXR1cm4gdCYmIUN0W25dJiYoQ3Rbbl09ITAsY29uc29sZS53YXJuKG8obiwiIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdiIrdCsiIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlIikpKSxlP2UoaSxuLGcpOiEwfX07ZnVuY3Rpb24gZWkoQSxlLHQpe2lmKHR5cGVvZiBBIT0ib2JqZWN0Iil0aHJvdyBuZXcgeSgib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIseS5FUlJfQkFEX09QVElPTl9WQUxVRSk7bGV0IHI9T2JqZWN0LmtleXMoQSksbz1yLmxlbmd0aDtmb3IoO28tLSA+MDspe2xldCBpPXJbb10sbj1lW2ldO2lmKG4pe2xldCBnPUFbaV0sZj1nPT09dm9pZCAwfHxuKGcsaSxBKTtpZihmIT09ITApdGhyb3cgbmV3IHkoIm9wdGlvbiAiK2krIiBtdXN0IGJlICIrZix5LkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtjb250aW51ZX1pZih0IT09ITApdGhyb3cgbmV3IHkoIlVua25vd24gb3B0aW9uICIraSx5LkVSUl9CQURfT1BUSU9OKX19dmFyIGtBPXthc3NlcnRPcHRpb25zOmVpLHZhbGlkYXRvcnM6JEF9O3ZhciB4PWtBLnZhbGlkYXRvcnMsXz1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmRlZmF1bHRzPWUsdGhpcy5pbnRlcmNlcHRvcnM9e3JlcXVlc3Q6bmV3IEhBLHJlc3BvbnNlOm5ldyBIQX19cmVxdWVzdChlLHQpe3R5cGVvZiBlPT0ic3RyaW5nIj8odD10fHx7fSx0LnVybD1lKTp0PWV8fHt9LHQ9Vyh0aGlzLmRlZmF1bHRzLHQpO2xldHt0cmFuc2l0aW9uYWw6cixwYXJhbXNTZXJpYWxpemVyOm8saGVhZGVyczppfT10O3IhPT12b2lkIDAmJmtBLmFzc2VydE9wdGlvbnMocix7c2lsZW50SlNPTlBhcnNpbmc6eC50cmFuc2l0aW9uYWwoeC5ib29sZWFuKSxmb3JjZWRKU09OUGFyc2luZzp4LnRyYW5zaXRpb25hbCh4LmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6eC50cmFuc2l0aW9uYWwoeC5ib29sZWFuKX0sITEpLG8hPW51bGwmJihsLmlzRnVuY3Rpb24obyk/dC5wYXJhbXNTZXJpYWxpemVyPXtzZXJpYWxpemU6b306a0EuYXNzZXJ0T3B0aW9ucyhvLHtlbmNvZGU6eC5mdW5jdGlvbixzZXJpYWxpemU6eC5mdW5jdGlvbn0sITApKSx0Lm1ldGhvZD0odC5tZXRob2R8fHRoaXMuZGVmYXVsdHMubWV0aG9kfHwiZ2V0IikudG9Mb3dlckNhc2UoKTtsZXQgbj1pJiZsLm1lcmdlKGkuY29tbW9uLGlbdC5tZXRob2RdKTtpJiZsLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwicG9zdCIsInB1dCIsInBhdGNoIiwiY29tbW9uIl0sdT0+e2RlbGV0ZSBpW3VdfSksdC5oZWFkZXJzPWsuY29uY2F0KG4saSk7bGV0IGc9W10sZj0hMDt0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goZnVuY3Rpb24ocCl7dHlwZW9mIHAucnVuV2hlbj09ImZ1bmN0aW9uIiYmcC5ydW5XaGVuKHQpPT09ITF8fChmPWYmJnAuc3luY2hyb25vdXMsZy51bnNoaWZ0KHAuZnVsZmlsbGVkLHAucmVqZWN0ZWQpKX0pO2xldCBCPVtdO3RoaXMuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLmZvckVhY2goZnVuY3Rpb24ocCl7Qi5wdXNoKHAuZnVsZmlsbGVkLHAucmVqZWN0ZWQpfSk7bGV0IHMsYT0wLGM7aWYoIWYpe2xldCB1PVtiQS5iaW5kKHRoaXMpLHZvaWQgMF07Zm9yKHUudW5zaGlmdC5hcHBseSh1LGcpLHUucHVzaC5hcHBseSh1LEIpLGM9dS5sZW5ndGgscz1Qcm9taXNlLnJlc29sdmUodCk7YTxjOylzPXMudGhlbih1W2ErK10sdVthKytdKTtyZXR1cm4gc31jPWcubGVuZ3RoO2xldCBJPXQ7Zm9yKGE9MDthPGM7KXtsZXQgdT1nW2ErK10scD1nW2ErK107dHJ5e0k9dShJKX1jYXRjaChFKXtwLmNhbGwodGhpcyxFKTticmVha319dHJ5e3M9YkEuY2FsbCh0aGlzLEkpfWNhdGNoKHUpe3JldHVybiBQcm9taXNlLnJlamVjdCh1KX1mb3IoYT0wLGM9Qi5sZW5ndGg7YTxjOylzPXMudGhlbihCW2ErK10sQlthKytdKTtyZXR1cm4gc31nZXRVcmkoZSl7ZT1XKHRoaXMuZGVmYXVsdHMsZSk7bGV0IHQ9YUEoZS5iYXNlVVJMLGUudXJsKTtyZXR1cm4gaUEodCxlLnBhcmFtcyxlLnBhcmFtc1NlcmlhbGl6ZXIpfX07bC5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSxmdW5jdGlvbihlKXtfLnByb3RvdHlwZVtlXT1mdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLnJlcXVlc3QoVyhyfHx7fSx7bWV0aG9kOmUsdXJsOnQsZGF0YToocnx8e30pLmRhdGF9KSl9fSk7bC5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChyKXtyZXR1cm4gZnVuY3Rpb24oaSxuLGcpe3JldHVybiB0aGlzLnJlcXVlc3QoVyhnfHx7fSx7bWV0aG9kOmUsaGVhZGVyczpyP3siQ29udGVudC1UeXBlIjoibXVsdGlwYXJ0L2Zvcm0tZGF0YSJ9Ont9LHVybDppLGRhdGE6bn0pKX19Xy5wcm90b3R5cGVbZV09dCgpLF8ucHJvdG90eXBlW2UrIkZvcm0iXT10KCEwKX0pO3ZhciBJQT1fO3ZhciBBZT1jbGFzcyBBe2NvbnN0cnVjdG9yKGUpe2lmKHR5cGVvZiBlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoImV4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4iKTtsZXQgdDt0aGlzLnByb21pc2U9bmV3IFByb21pc2UoZnVuY3Rpb24oaSl7dD1pfSk7bGV0IHI9dGhpczt0aGlzLnByb21pc2UudGhlbihvPT57aWYoIXIuX2xpc3RlbmVycylyZXR1cm47bGV0IGk9ci5fbGlzdGVuZXJzLmxlbmd0aDtmb3IoO2ktLSA+MDspci5fbGlzdGVuZXJzW2ldKG8pO3IuX2xpc3RlbmVycz1udWxsfSksdGhpcy5wcm9taXNlLnRoZW49bz0+e2xldCBpLG49bmV3IFByb21pc2UoZz0+e3Iuc3Vic2NyaWJlKGcpLGk9Z30pLnRoZW4obyk7cmV0dXJuIG4uY2FuY2VsPWZ1bmN0aW9uKCl7ci51bnN1YnNjcmliZShpKX0sbn0sZShmdW5jdGlvbihpLG4sZyl7ci5yZWFzb258fChyLnJlYXNvbj1uZXcgTChpLG4sZyksdChyLnJlYXNvbikpfSl9dGhyb3dJZlJlcXVlc3RlZCgpe2lmKHRoaXMucmVhc29uKXRocm93IHRoaXMucmVhc29ufXN1YnNjcmliZShlKXtpZih0aGlzLnJlYXNvbil7ZSh0aGlzLnJlYXNvbik7cmV0dXJufXRoaXMuX2xpc3RlbmVycz90aGlzLl9saXN0ZW5lcnMucHVzaChlKTp0aGlzLl9saXN0ZW5lcnM9W2VdfXVuc3Vic2NyaWJlKGUpe2lmKCF0aGlzLl9saXN0ZW5lcnMpcmV0dXJuO2xldCB0PXRoaXMuX2xpc3RlbmVycy5pbmRleE9mKGUpO3QhPT0tMSYmdGhpcy5fbGlzdGVuZXJzLnNwbGljZSh0LDEpfXN0YXRpYyBzb3VyY2UoKXtsZXQgZTtyZXR1cm57dG9rZW46bmV3IEEoZnVuY3Rpb24obyl7ZT1vfSksY2FuY2VsOmV9fX0sZnQ9QWU7ZnVuY3Rpb24gZWUoQSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBBLmFwcGx5KG51bGwsdCl9fWZ1bmN0aW9uIHRlKEEpe3JldHVybiBsLmlzT2JqZWN0KEEpJiZBLmlzQXhpb3NFcnJvcj09PSEwfXZhciByZT17Q29udGludWU6MTAwLFN3aXRjaGluZ1Byb3RvY29sczoxMDEsUHJvY2Vzc2luZzoxMDIsRWFybHlIaW50czoxMDMsT2s6MjAwLENyZWF0ZWQ6MjAxLEFjY2VwdGVkOjIwMixOb25BdXRob3JpdGF0aXZlSW5mb3JtYXRpb246MjAzLE5vQ29udGVudDoyMDQsUmVzZXRDb250ZW50OjIwNSxQYXJ0aWFsQ29udGVudDoyMDYsTXVsdGlTdGF0dXM6MjA3LEFscmVhZHlSZXBvcnRlZDoyMDgsSW1Vc2VkOjIyNixNdWx0aXBsZUNob2ljZXM6MzAwLE1vdmVkUGVybWFuZW50bHk6MzAxLEZvdW5kOjMwMixTZWVPdGhlcjozMDMsTm90TW9kaWZpZWQ6MzA0LFVzZVByb3h5OjMwNSxVbnVzZWQ6MzA2LFRlbXBvcmFyeVJlZGlyZWN0OjMwNyxQZXJtYW5lbnRSZWRpcmVjdDozMDgsQmFkUmVxdWVzdDo0MDAsVW5hdXRob3JpemVkOjQwMSxQYXltZW50UmVxdWlyZWQ6NDAyLEZvcmJpZGRlbjo0MDMsTm90Rm91bmQ6NDA0LE1ldGhvZE5vdEFsbG93ZWQ6NDA1LE5vdEFjY2VwdGFibGU6NDA2LFByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZDo0MDcsUmVxdWVzdFRpbWVvdXQ6NDA4LENvbmZsaWN0OjQwOSxHb25lOjQxMCxMZW5ndGhSZXF1aXJlZDo0MTEsUHJlY29uZGl0aW9uRmFpbGVkOjQxMixQYXlsb2FkVG9vTGFyZ2U6NDEzLFVyaVRvb0xvbmc6NDE0LFVuc3VwcG9ydGVkTWVkaWFUeXBlOjQxNSxSYW5nZU5vdFNhdGlzZmlhYmxlOjQxNixFeHBlY3RhdGlvbkZhaWxlZDo0MTcsSW1BVGVhcG90OjQxOCxNaXNkaXJlY3RlZFJlcXVlc3Q6NDIxLFVucHJvY2Vzc2FibGVFbnRpdHk6NDIyLExvY2tlZDo0MjMsRmFpbGVkRGVwZW5kZW5jeTo0MjQsVG9vRWFybHk6NDI1LFVwZ3JhZGVSZXF1aXJlZDo0MjYsUHJlY29uZGl0aW9uUmVxdWlyZWQ6NDI4LFRvb01hbnlSZXF1ZXN0czo0MjksUmVxdWVzdEhlYWRlckZpZWxkc1Rvb0xhcmdlOjQzMSxVbmF2YWlsYWJsZUZvckxlZ2FsUmVhc29uczo0NTEsSW50ZXJuYWxTZXJ2ZXJFcnJvcjo1MDAsTm90SW1wbGVtZW50ZWQ6NTAxLEJhZEdhdGV3YXk6NTAyLFNlcnZpY2VVbmF2YWlsYWJsZTo1MDMsR2F0ZXdheVRpbWVvdXQ6NTA0LEh0dHBWZXJzaW9uTm90U3VwcG9ydGVkOjUwNSxWYXJpYW50QWxzb05lZ290aWF0ZXM6NTA2LEluc3VmZmljaWVudFN0b3JhZ2U6NTA3LExvb3BEZXRlY3RlZDo1MDgsTm90RXh0ZW5kZWQ6NTEwLE5ldHdvcmtBdXRoZW50aWNhdGlvblJlcXVpcmVkOjUxMX07T2JqZWN0LmVudHJpZXMocmUpLmZvckVhY2goKFtBLGVdKT0+e3JlW2VdPUF9KTt2YXIgY3Q9cmU7ZnVuY3Rpb24gcHQoQSl7bGV0IGU9bmV3IElBKEEpLHQ9ZUEoSUEucHJvdG90eXBlLnJlcXVlc3QsZSk7cmV0dXJuIGwuZXh0ZW5kKHQsSUEucHJvdG90eXBlLGUse2FsbE93bktleXM6ITB9KSxsLmV4dGVuZCh0LGUsbnVsbCx7YWxsT3duS2V5czohMH0pLHQuY3JlYXRlPWZ1bmN0aW9uKG8pe3JldHVybiBwdChXKEEsbykpfSx0fXZhciBEPXB0KGopO0QuQXhpb3M9SUE7RC5DYW5jZWxlZEVycm9yPUw7RC5DYW5jZWxUb2tlbj1mdDtELmlzQ2FuY2VsPXNBO0QuVkVSU0lPTj1SQTtELnRvRm9ybURhdGE9RztELkF4aW9zRXJyb3I9eTtELkNhbmNlbD1ELkNhbmNlbGVkRXJyb3I7RC5hbGw9ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKGUpfTtELnNwcmVhZD1lZTtELmlzQXhpb3NFcnJvcj10ZTtELm1lcmdlQ29uZmlnPVc7RC5BeGlvc0hlYWRlcnM9aztELmZvcm1Ub0pTT049QT0+eUEobC5pc0hUTUxGb3JtKEEpP25ldyBGb3JtRGF0YShBKTpBKTtELmdldEFkYXB0ZXI9REEuZ2V0QWRhcHRlcjtELkh0dHBTdGF0dXNDb2RlPWN0O0QuZGVmYXVsdD1EO3ZhciB6PUQ7dmFye0F4aW9zOktzLEF4aW9zRXJyb3I6anMsQ2FuY2VsZWRFcnJvcjp2cyxpc0NhbmNlbDpfcyxDYW5jZWxUb2tlbjp6cyxWRVJTSU9OOlZzLGFsbDpacyxDYW5jZWw6WHMsaXNBeGlvc0Vycm9yOiRzLHNwcmVhZDpBYSx0b0Zvcm1EYXRhOmVhLEF4aW9zSGVhZGVyczp0YSxIdHRwU3RhdHVzQ29kZTpyYSxmb3JtVG9KU09OOmlhLGdldEFkYXB0ZXI6b2EsbWVyZ2VDb25maWc6bmF9PXo7YXN5bmMgZnVuY3Rpb24gdGkoQSxlKXtsZXQgdD1BLHI9bnVsbDtpZih0PT1udWxsKXI9bmV3IFdvcmtlcihuZXcgVVJMKCIuL3dlYi13b3JrZXJzL2l0ay13YXNtLXBpcGVsaW5lLndvcmtlci5qcyIsaW1wb3J0Lm1ldGEudXJsKSx7dHlwZToibW9kdWxlIn0pO2Vsc2UgaWYodC5zdGFydHNXaXRoKCJodHRwIikpe2xldCBvPWF3YWl0IHouZ2V0KHQse3Jlc3BvbnNlVHlwZToiYmxvYiIscGFyYW1zOmV9KSxpPVVSTC5jcmVhdGVPYmplY3RVUkwoby5kYXRhKTtyPW5ldyBXb3JrZXIoaSx7dHlwZToibW9kdWxlIn0pfWVsc2Ugcj1uZXcgV29ya2VyKHQse3R5cGU6Im1vZHVsZSJ9KTtyZXR1cm4gcn12YXIgZ0E9dGk7ZnVuY3Rpb24gRXQoQSl7bGV0IGU9V0EoQSksdD1BO3JldHVybiB0LnRlcm1pbmF0ZWQ9ITEsdC53b3JrZXJQcm94eT1lLHQub3JpZ2luYWxUZXJtaW5hdGU9dC50ZXJtaW5hdGUsdC50ZXJtaW5hdGU9KCk9Pnt0LnRlcm1pbmF0ZWQ9ITAsdC53b3JrZXJQcm94eVtPQV0oKSx0Lm9yaWdpbmFsVGVybWluYXRlKCl9LHt3b3JrZXJQcm94eTplLHdvcmtlcjp0fX1hc3luYyBmdW5jdGlvbiByaShBLGUsdCl7bGV0IHI7aWYoQSE9bnVsbCl7bGV0IGk9QTtyZXR1cm4gaS53b3JrZXJQcm94eSE9PXZvaWQgMD8ocj1pLndvcmtlclByb3h5LHt3b3JrZXJQcm94eTpyLHdvcmtlcjppfSk6RXQoQSl9bGV0IG89YXdhaXQgZ0EoZSx0KTtyZXR1cm4gRXQobyl9dmFyIFF0PXJpO2FzeW5jIGZ1bmN0aW9uIGlpKEEsZSx0KXtsZXQgcj0idW5rbm93biI7dHlwZW9mIEEhPSJzdHJpbmciP3I9QS5ocmVmOkEuc3RhcnRzV2l0aCgiaHR0cCIpP3I9QTpyPXR5cGVvZiBlPCJ1Ij9gJHtlfS8ke0F9YDpBLHIuZW5kc1dpdGgoIi5qcyIpJiYocj1yLnN1YnN0cmluZygwLHIubGVuZ3RoLTMpKSxyLmVuZHNXaXRoKCIud2FzbSIpJiYocj1yLnN1YnN0cmluZygwLHIubGVuZ3RoLTUpKTtsZXQgbz1gJHtyfS53YXNtYCxuPShhd2FpdCB6LmdldChvLHtyZXNwb25zZVR5cGU6ImFycmF5YnVmZmVyIixwYXJhbXM6dH0pKS5kYXRhO3JldHVybihhd2FpdCBpbXBvcnQoYCR7cn0uanNgKSkuZGVmYXVsdCh7d2FzbUJpbmFyeTpufSl9dmFyIG10PWlpO3ZhciBkdD1hc3luYygpPT5XZWJBc3NlbWJseS52YWxpZGF0ZShuZXcgVWludDhBcnJheShbMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw1LDEsOTYsMCwxLDEyMywzLDIsMSwwLDEwLDEwLDEsOCwwLDY1LDAsMjUzLDE1LDI1Myw5OCwxMV0pKTt2YXIgd3Q9dHlwZW9mIGdsb2JhbFRoaXMuU2hhcmVkQXJyYXlCdWZmZXI9PSJmdW5jdGlvbiIsaHQ9bmV3IFRleHRFbmNvZGVyLHl0PW5ldyBUZXh0RGVjb2RlcigidXRmLTgiKTtmdW5jdGlvbiBvaShBLGUpe2xldCB0PXtmbGFnczoiciIsZW5jb2Rpbmc6ImJpbmFyeSJ9LHI9QS5mc19vcGVuKGUsdC5mbGFncyksaT1BLmZzX3N0YXQoZSkuc2l6ZSxuPW51bGw7d3Q/bj1uZXcgU2hhcmVkQXJyYXlCdWZmZXIoaSk6bj1uZXcgQXJyYXlCdWZmZXIoaSk7bGV0IGc9bmV3IFVpbnQ4QXJyYXkobik7cmV0dXJuIEEuZnNfcmVhZChyLGcsMCxpLDApLEEuZnNfY2xvc2UociksZ31mdW5jdGlvbiBEdChBLGUsdCl7bGV0IHI9bnVsbDt3dD9yPW5ldyBTaGFyZWRBcnJheUJ1ZmZlcih0KTpyPW5ldyBBcnJheUJ1ZmZlcih0KTtsZXQgbz1uZXcgVWludDhBcnJheShyKSxpPW5ldyBVaW50OEFycmF5KEEuSEVBUFU4LmJ1ZmZlcixlLHQpO3JldHVybiBvLnNldChpKSxvfWZ1bmN0aW9uIGIoQSxlLHQscil7bGV0IG89MDtyZXR1cm4gZSE9PW51bGwmJihvPUEuY2NhbGwoIml0a193YXNtX2lucHV0X2FycmF5X2FsbG9jIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHQscixlLmJ1ZmZlci5ieXRlTGVuZ3RoXSksQS5IRUFQVTguc2V0KG5ldyBVaW50OEFycmF5KGUuYnVmZmVyKSxvKSksb31mdW5jdGlvbiBWKEEsZSx0KXtsZXQgcj1KU09OLnN0cmluZ2lmeShlKSxvPUEuY2NhbGwoIml0a193YXNtX2lucHV0X2pzb25fYWxsb2MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsdCxyLmxlbmd0aF0pO0Eud3JpdGVBc2NpaVRvTWVtb3J5KHIsbywhMSl9ZnVuY3Rpb24gRihBLGUsdCxyKXtsZXQgbz1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxlLHRdKSxpPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLGUsdF0pLG49RHQoQSxvLGkpO3JldHVybiBQKHIsbi5idWZmZXIpfWZ1bmN0aW9uIGllKEEsZSl7bGV0IHQ9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2pzb25fYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiXSxbMCxlXSkscj1BLkFzY2lpVG9TdHJpbmcodCk7cmV0dXJuIEpTT04ucGFyc2Uocil9ZnVuY3Rpb24gbmkoQSxlLHQscil7ciE9bnVsbCYmci5sZW5ndGg+MCYmci5mb3JFYWNoKGZ1bmN0aW9uKEIscyl7c3dpdGNoKEIudHlwZSl7Y2FzZSBDLlRleHRTdHJlYW06e2xldCBhPWh0LmVuY29kZShCLmRhdGEuZGF0YSksYz1iKEEsYSxzLDApLEk9e3NpemU6YS5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gfTtWKEEsSSxzKTticmVha31jYXNlIEMuSnNvbkNvbXBhdGlibGU6e2xldCBhPWh0LmVuY29kZShKU09OLnN0cmluZ2lmeShCLmRhdGEpKSxjPWIoQSxhLHMsMCksST17c2l6ZTphLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWB9O1YoQSxJLHMpO2JyZWFrfWNhc2UgQy5CaW5hcnlTdHJlYW06e2xldCBhPUIuZGF0YS5kYXRhLGM9YihBLGEscywwKSxJPXtzaXplOmEuYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2N9YH07VihBLEkscyk7YnJlYWt9Y2FzZSBDLlRleHRGaWxlOntBLmZzX3dyaXRlRmlsZShCLmRhdGEucGF0aCxCLmRhdGEuZGF0YSk7YnJlYWt9Y2FzZSBDLkJpbmFyeUZpbGU6e0EuZnNfd3JpdGVGaWxlKEIuZGF0YS5wYXRoLEIuZGF0YS5kYXRhKTticmVha31jYXNlIEMuSW1hZ2U6e2xldCBhPUIuZGF0YSxjPWIoQSxhLmRhdGEscywwKSxJPWIoQSxhLmRpcmVjdGlvbixzLDEpLHU9dHlwZW9mIGEubWV0YWRhdGE/LmVudHJpZXM8InUiP0pTT04uc3RyaW5naWZ5KEFycmF5LmZyb20oYS5tZXRhZGF0YS5lbnRyaWVzKCkpKToiW10iLHA9e2ltYWdlVHlwZTphLmltYWdlVHlwZSxuYW1lOmEubmFtZSxvcmlnaW46YS5vcmlnaW4sc3BhY2luZzphLnNwYWNpbmcsZGlyZWN0aW9uOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7SX1gLHNpemU6YS5zaXplLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtjfWAsbWV0YWRhdGE6dX07VihBLHAscyk7YnJlYWt9Y2FzZSBDLk1lc2g6e2xldCBhPUIuZGF0YSxjPWIoQSxhLnBvaW50cyxzLDApLEk9YihBLGEuY2VsbHMscywxKSx1PWIoQSxhLnBvaW50RGF0YSxzLDIpLHA9YihBLGEuY2VsbERhdGEscywzKSxFPXttZXNoVHlwZTphLm1lc2hUeXBlLG5hbWU6YS5uYW1lLG51bWJlck9mUG9pbnRzOmEubnVtYmVyT2ZQb2ludHMscG9pbnRzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gLG51bWJlck9mQ2VsbHM6YS5udW1iZXJPZkNlbGxzLGNlbGxzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7SX1gLGNlbGxCdWZmZXJTaXplOmEuY2VsbEJ1ZmZlclNpemUsbnVtYmVyT2ZQb2ludFBpeGVsczphLm51bWJlck9mUG9pbnRQaXhlbHMscG9pbnREYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7dX1gLG51bWJlck9mQ2VsbFBpeGVsczphLm51bWJlck9mQ2VsbFBpeGVscyxjZWxsRGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke3B9YH07VihBLEUscyk7YnJlYWt9Y2FzZSBDLlBvbHlEYXRhOntsZXQgYT1CLmRhdGEsYz1iKEEsYS5wb2ludHMscywwKSxJPWIoQSxhLnZlcnRpY2VzLHMsMSksdT1iKEEsYS5saW5lcyxzLDIpLHA9YihBLGEucG9seWdvbnMscywzKSxFPWIoQSxhLnRyaWFuZ2xlU3RyaXBzLHMsNCksdz1iKEEsYS5wb2ludERhdGEscyw1KSxOPWIoQSxhLnBvaW50RGF0YSxzLDYpLE09e3BvbHlEYXRhVHlwZTphLnBvbHlEYXRhVHlwZSxuYW1lOmEubmFtZSxudW1iZXJPZlBvaW50czphLm51bWJlck9mUG9pbnRzLHBvaW50czpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2N9YCx2ZXJ0aWNlc0J1ZmZlclNpemU6YS52ZXJ0aWNlc0J1ZmZlclNpemUsdmVydGljZXM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtJfWAsbGluZXNCdWZmZXJTaXplOmEubGluZXNCdWZmZXJTaXplLGxpbmVzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7dX1gLHBvbHlnb25zQnVmZmVyU2l6ZTphLnBvbHlnb25zQnVmZmVyU2l6ZSxwb2x5Z29uczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke3B9YCx0cmlhbmdsZVN0cmlwc0J1ZmZlclNpemU6YS50cmlhbmdsZVN0cmlwc0J1ZmZlclNpemUsdHJpYW5nbGVTdHJpcHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtFfWAsbnVtYmVyT2ZQb2ludFBpeGVsczphLm51bWJlck9mUG9pbnRQaXhlbHMscG9pbnREYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7d31gLG51bWJlck9mQ2VsbFBpeGVsczphLm51bWJlck9mQ2VsbFBpeGVscyxjZWxsRGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke059YH07VihBLE0scyk7YnJlYWt9ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5zdXBwb3J0ZWQgaW5wdXQgSW50ZXJmYWNlVHlwZSIpfX0pLEEucmVzZXRNb2R1bGVTdGRvdXQoKSxBLnJlc2V0TW9kdWxlU3RkZXJyKCk7bGV0IG89QS5zdGFja1NhdmUoKSxpPTA7dHJ5e2k9QS5jYWxsTWFpbihlLnNsaWNlKCkpfWNhdGNoKEIpe3Rocm93IHR5cGVvZiBCPT0ibnVtYmVyIiYmKGNvbnNvbGUubG9nKCJFeGNlcHRpb24gd2hpbGUgcnVubmluZyBwaXBlbGluZToiKSxjb25zb2xlLmxvZygic3Rkb3V0OiIsQS5nZXRNb2R1bGVTdGRvdXQoKSksY29uc29sZS5lcnJvcigic3RkZXJyOiIsQS5nZXRNb2R1bGVTdGRlcnIoKSksdHlwZW9mIEEuZ2V0RXhjZXB0aW9uTWVzc2FnZTwidSI/Y29uc29sZS5lcnJvcigiZXhjZXB0aW9uOiIsQS5nZXRFeGNlcHRpb25NZXNzYWdlKEIpKTpjb25zb2xlLmVycm9yKCJCdWlsZCBtb2R1bGUgaW4gRGVidWcgbW9kZSBmb3IgZXhjZXB0aW9uIG1lc3NhZ2UgaW5mb3JtYXRpb24uIikpLEJ9ZmluYWxseXtBLnN0YWNrUmVzdG9yZShvKX1sZXQgbj1BLmdldE1vZHVsZVN0ZG91dCgpLGc9QS5nZXRNb2R1bGVTdGRlcnIoKSxmPVtdO3JldHVybiB0IT1udWxsJiZ0Lmxlbmd0aD4wJiZpPT09MCYmdC5mb3JFYWNoKGZ1bmN0aW9uKEIscyl7bGV0IGE9bnVsbDtzd2l0Y2goQi50eXBlKXtjYXNlIEMuVGV4dFN0cmVhbTp7bGV0IEk9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAscywwXSksdT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxzLDBdKSxwPW5ldyBVaW50OEFycmF5KEEuSEVBUFU4LmJ1ZmZlcixJLHUpO2E9e2RhdGE6eXQuZGVjb2RlKHApfTticmVha31jYXNlIEMuSnNvbkNvbXBhdGlibGU6e2xldCBJPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHMsMF0pLHU9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAscywwXSkscD1uZXcgVWludDhBcnJheShBLkhFQVBVOC5idWZmZXIsSSx1KTthPUpTT04ucGFyc2UoeXQuZGVjb2RlKHApKTticmVha31jYXNlIEMuQmluYXJ5U3RyZWFtOntsZXQgST1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxzLDBdKSx1PUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLHMsMF0pO2E9e2RhdGE6RHQoQSxJLHUpfTticmVha31jYXNlIEMuVGV4dEZpbGU6e2E9e3BhdGg6Qi5kYXRhLnBhdGgsZGF0YTpBLmZzX3JlYWRGaWxlKEIuZGF0YS5wYXRoLHtlbmNvZGluZzoidXRmOCJ9KX07YnJlYWt9Y2FzZSBDLkJpbmFyeUZpbGU6e2E9e3BhdGg6Qi5kYXRhLnBhdGgsZGF0YTpvaShBLEIuZGF0YS5wYXRoKX07YnJlYWt9Y2FzZSBDLkltYWdlOntsZXQgST1pZShBLHMpO0kuZGF0YT1GKEEscywwLEkuaW1hZ2VUeXBlLmNvbXBvbmVudFR5cGUpLEkuZGlyZWN0aW9uPUYoQSxzLDEsSC5GbG9hdDY0KSxJLm1ldGFkYXRhPW5ldyBNYXAoSS5tZXRhZGF0YSksYT1JO2JyZWFrfWNhc2UgQy5NZXNoOntsZXQgST1pZShBLHMpO0kubnVtYmVyT2ZQb2ludHM+MD9JLnBvaW50cz1GKEEscywwLEkubWVzaFR5cGUucG9pbnRDb21wb25lbnRUeXBlKTpJLnBvaW50cz1QKEkubWVzaFR5cGUucG9pbnRDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksSS5udW1iZXJPZkNlbGxzPjA/SS5jZWxscz1GKEEscywxLEkubWVzaFR5cGUuY2VsbENvbXBvbmVudFR5cGUpOkkuY2VsbHM9UChJLm1lc2hUeXBlLmNlbGxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksSS5udW1iZXJPZlBvaW50UGl4ZWxzPjA/SS5wb2ludERhdGE9RihBLHMsMixJLm1lc2hUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlKTpJLnBvaW50RGF0YT1QKEkubWVzaFR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxJLm51bWJlck9mQ2VsbFBpeGVscz4wP0kuY2VsbERhdGE9RihBLHMsMyxJLm1lc2hUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUpOkkuY2VsbERhdGE9UChJLm1lc2hUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxhPUk7YnJlYWt9Y2FzZSBDLlBvbHlEYXRhOntsZXQgST1pZShBLHMpO0kubnVtYmVyT2ZQb2ludHM+MD9JLnBvaW50cz1GKEEscywwLEguRmxvYXQzMik6SS5wb2ludHM9bmV3IEZsb2F0MzJBcnJheSxJLnZlcnRpY2VzQnVmZmVyU2l6ZT4wP0kudmVydGljZXM9RihBLHMsMSxTLlVJbnQzMik6SS52ZXJ0aWNlcz1uZXcgVWludDMyQXJyYXksSS5saW5lc0J1ZmZlclNpemU+MD9JLmxpbmVzPUYoQSxzLDIsUy5VSW50MzIpOkkubGluZXM9bmV3IFVpbnQzMkFycmF5LEkucG9seWdvbnNCdWZmZXJTaXplPjA/SS5wb2x5Z29ucz1GKEEscywzLFMuVUludDMyKTpJLnBvbHlnb25zPW5ldyBVaW50MzJBcnJheSxJLnRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZT4wP0kudHJpYW5nbGVTdHJpcHM9RihBLHMsNCxTLlVJbnQzMik6SS50cmlhbmdsZVN0cmlwcz1uZXcgVWludDMyQXJyYXksSS5udW1iZXJPZlBvaW50UGl4ZWxzPjA/SS5wb2ludERhdGE9RihBLHMsNSxJLnBvbHlEYXRhVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSk6SS5wb2ludERhdGE9UChJLnBvbHlEYXRhVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLEkubnVtYmVyT2ZDZWxsUGl4ZWxzPjA/SS5jZWxsRGF0YT1GKEEscyw2LEkucG9seURhdGFUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUpOkkuY2VsbERhdGE9UChJLnBvbHlEYXRhVHlwZS5jZWxsUGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksYT1JO2JyZWFrfWRlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuc3VwcG9ydGVkIG91dHB1dCBJbnRlcmZhY2VUeXBlIil9bGV0IGM9e3R5cGU6Qi50eXBlLGRhdGE6YX07Zi5wdXNoKGMpfSkse3JldHVyblZhbHVlOmksc3Rkb3V0Om4sc3RkZXJyOmcsb3V0cHV0czpmfX12YXIgYnQ9bmk7dmFyIHNpPXR5cGVvZiBnbG9iYWxUaGlzLlNoYXJlZEFycmF5QnVmZmVyPCJ1IjtmdW5jdGlvbiBhaShBLGUpe2lmKEE9PW51bGwpcmV0dXJuW107bGV0IHQ9W107Zm9yKGxldCByPTA7cjxBLmxlbmd0aDtyKyspe2xldCBvPUlpKEFbcl0sZSk7byE9PW51bGwmJnQucHVzaChvKX1yZXR1cm4gdH1mdW5jdGlvbiBJaShBLGUpe2lmKEE9PW51bGwpcmV0dXJuIG51bGw7bGV0IHQ9bnVsbDtyZXR1cm4gQS5idWZmZXIhPT12b2lkIDA/dD1BLmJ1ZmZlcjpBLmJ5dGVMZW5ndGghPT12b2lkIDAmJih0PUEpLHNpJiZ0IGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXI/bnVsbDplP3Q6dC5zbGljZSgwKX12YXIgUnQ9YWk7ZnVuY3Rpb24gZ2koQSl7cmV0dXJuW0EuZGF0YSxBLmRpcmVjdGlvbl19dmFyIGt0PWdpO2Z1bmN0aW9uIGxpKEEpe3JldHVybltBLnBvaW50cyxBLnBvaW50RGF0YSxBLmNlbGxzLEEuY2VsbERhdGFdfXZhciBTdD1saTtmdW5jdGlvbiBCaShBKXtyZXR1cm5bQS5wb2ludHMsQS52ZXJ0aWNlcyxBLmxpbmVzLEEucG9seWdvbnMsQS50cmlhbmdsZVN0cmlwcyxBLnBvaW50RGF0YSxBLmNlbGxEYXRhXX12YXIgRnQ9Qmk7dmFyIHVpO2Z1bmN0aW9uIFNBKCl7cmV0dXJuIHVpfXZhciBDaTtmdW5jdGlvbiBVdCgpe3JldHVybiBDaX12YXIgZmk7ZnVuY3Rpb24gRkEoKXtyZXR1cm4gZml9dmFyIG9lPW5ldyBNYXA7ZnVuY3Rpb24gY2koKXtsZXQgQT1GQSgpO3JldHVybiB0eXBlb2YgQT4idSImJihBPW51bGwpLEF9ZnVuY3Rpb24gTnQoKXtsZXQgQT1TQSgpO3JldHVybiB0eXBlb2YgQT4idSImJihBPW5ldyBVUkwoIi9waXBlbGluZXMiLGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbikuaHJlZiksQX1mdW5jdGlvbiBVQSgpe2xldCBBPVV0KCk7cmV0dXJuIHR5cGVvZiBBPiJ1IiYmKEE9e30pLEF9YXN5bmMgZnVuY3Rpb24gcGkoQSxlLHQpe2xldCByPUEsbz1BO2lmKHR5cGVvZiBBIT0ic3RyaW5nIiYmKHI9bmV3IFVSTChBLmhyZWYpLG89ci5ocmVmKSxvZS5oYXMobykpcmV0dXJuIG9lLmdldChvKTt7bGV0IGk9YXdhaXQgbXQoQSxlPy50b1N0cmluZygpPz9OdCgpLHQ/P1VBKCkpO3JldHVybiBvZS5zZXQobyxpKSxpfX1hc3luYyBmdW5jdGlvbiBFaShBLGUsdCxyLG8pe2lmKCFhd2FpdCBkdCgpKXtsZXQgRT0iV2ViQXNzZW1ibHkgU0lNRCBzdXBwb3J0IGlzIHJlcXVpcmVkIC0tIHBsZWFzZSB1cGRhdGUgeW91ciBicm93c2VyLiI7dGhyb3cgYWxlcnQoRSksbmV3IEVycm9yKEUpfWxldCBpPW8/LndlYldvcmtlcj8/bnVsbDtpZihpPT09ITEpe2xldCBFPWF3YWl0IHBpKEEudG9TdHJpbmcoKSxvPy5waXBlbGluZUJhc2VVcmwsbz8ucGlwZWxpbmVRdWVyeVBhcmFtcz8/VUEoKSk7cmV0dXJuIGJ0KEUsZSx0LHIpfWxldCBuPWksZz1vPy5waXBlbGluZVdvcmtlclVybD8/Y2koKSxmPXR5cGVvZiBnIT0ic3RyaW5nIiYmdHlwZW9mIGc/LmhyZWY8InUiP2cuaHJlZjpnLHt3b3JrZXJQcm94eTpCLHdvcmtlcjpzfT1hd2FpdCBRdChuLGYsbz8ucGlwZWxpbmVRdWVyeVBhcmFtcz8/VUEoKSk7bj1zO2xldCBhPVtdO3IhPW51bGwmJnIubGVuZ3RoPjAmJnIuZm9yRWFjaChmdW5jdGlvbihFKXtpZihFLnR5cGU9PT1DLkJpbmFyeVN0cmVhbSl7bGV0IHc9RS5kYXRhLmRhdGE7YS5wdXNoKHcpfWVsc2UgaWYoRS50eXBlPT09Qy5CaW5hcnlGaWxlKXtsZXQgdz1FLmRhdGEuZGF0YTthLnB1c2godyl9ZWxzZSBpZihFLnR5cGU9PT1DLkltYWdlKXtsZXQgdz1FLmRhdGE7dy5kYXRhIT09bnVsbCYmYS5wdXNoKC4uLmt0KHcpKX1lbHNlIGlmKEUudHlwZT09PUMuTWVzaCl7bGV0IHc9RS5kYXRhO2EucHVzaCguLi5TdCh3KSl9ZWxzZSBpZihFLnR5cGU9PT1DLlBvbHlEYXRhKXtsZXQgdz1FLmRhdGE7YS5wdXNoKC4uLkZ0KHcpKX19KTtsZXQgYz1vPy5waXBlbGluZUJhc2VVcmw/P050KCksST10eXBlb2YgYyE9InN0cmluZyImJnR5cGVvZiBjPy5ocmVmPCJ1Ij9jLmhyZWY6Yyx1PXIhPW51bGw/UEEocixSdChhLG8/Lm5vQ29weSkpOm51bGwscD1hd2FpdCBCLnJ1blBpcGVsaW5lKEEudG9TdHJpbmcoKSxJLGUsdCx1LG8/LnBpcGVsaW5lUXVlcnlQYXJhbXM/P1VBKCkpO3JldHVybntyZXR1cm5WYWx1ZTpwLnJldHVyblZhbHVlLHN0ZG91dDpwLnN0ZG91dCxzdGRlcnI6cC5zdGRlcnIsb3V0cHV0czpwLm91dHB1dHMsd2ViV29ya2VyOm59fXZhciBtPUVpO3ZhciBRaT1udWxsO2Z1bmN0aW9uIE10KCl7cmV0dXJuIFFpfXZhciBtaT1uZXcgTWFwKFtdKSxaPW1pO3ZhciBkaT0iMS4xLjEiLE90PWRpO3ZhciBuZSxoaT1gaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9AaXRrLXdhc20vbWVzaC1pb0Ake090fS9kaXN0L3BpcGVsaW5lc2A7ZnVuY3Rpb24gWGEoQSl7bmU9QX1mdW5jdGlvbiBkKCl7aWYodHlwZW9mIG5lPCJ1IilyZXR1cm4gbmU7bGV0IEE9U0EoKTtyZXR1cm4gdHlwZW9mIEE8InUiP0E6aGl9dmFyIHNlLHlpPW51bGw7ZnVuY3Rpb24gV3QoQSl7c2U9QX1mdW5jdGlvbiBRKCl7aWYodHlwZW9mIHNlPCJ1IilyZXR1cm4gc2U7bGV0IEE9RkEoKTtyZXR1cm4gdHlwZW9mIEE8InUiP0E6eWl9dmFyIFg9bnVsbDthc3luYyBmdW5jdGlvbiBQdCgpe2xldCBBPVEoKSxlPXR5cGVvZiBBIT0ic3RyaW5nIiYmdHlwZW9mIEE/LmhyZWY8InUiP0EuaHJlZjpBO1g9YXdhaXQgZ0EoZSl9ZnVuY3Rpb24gb0koQSl7WD1BfWFzeW5jIGZ1bmN0aW9uIGgoKXtpZihYIT09bnVsbClyZXR1cm4gWC50ZXJtaW5hdGVkJiZhd2FpdCBQdCgpLFg7bGV0IEE9TXQoKTtyZXR1cm4gQSE9PW51bGw/QTooYXdhaXQgUHQoKSxYKX1hc3luYyBmdW5jdGlvbiB3aShBLGU9e30pe2xldCB0PVt7dHlwZTpDLkpzb25Db21wYXRpYmxlfSx7dHlwZTpDLk1lc2h9XSxyPUE7aWYoQSBpbnN0YW5jZW9mIEZpbGUpe2xldCBFPWF3YWl0IEEuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOkEubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KEUpfX1sZXQgbz1be3R5cGU6Qy5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksZS5pbmZvcm1hdGlvbk9ubHkmJmUuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBCPSJ2dGstcG9seS1kYXRhLXJlYWQtbWVzaCIscz1lPy53ZWJXb3JrZXI7cz09PXZvaWQgMCYmKHM9YXdhaXQgaCgpKTtsZXR7d2ViV29ya2VyOmEscmV0dXJuVmFsdWU6YyxzdGRlcnI6SSxvdXRwdXRzOnV9PWF3YWl0IG0oQixpLHQsbyx7cGlwZWxpbmVCYXNlVXJsOmQoKSxwaXBlbGluZVdvcmtlclVybDpRKCksd2ViV29ya2VyOnMsbm9Db3B5OmU/Lm5vQ29weX0pO2lmKGMhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6YSxjb3VsZFJlYWQ6dVswXT8uZGF0YSxtZXNoOnVbMV0/LmRhdGF9fXZhciBhZT13aTthc3luYyBmdW5jdGlvbiBEaShBLGUsdD17fSl7bGV0IHI9W3t0eXBlOkMuSnNvbkNvbXBhdGlibGV9LHt0eXBlOkMuQmluYXJ5RmlsZSxkYXRhOntwYXRoOmUsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpDLk1lc2gsZGF0YTpBfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1lO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKSx0LmJpbmFyeUZpbGVUeXBlJiZ0LmJpbmFyeUZpbGVUeXBlJiZpLnB1c2goIi0tYmluYXJ5LWZpbGUtdHlwZSIpO2xldCBCPSJ2dGstcG9seS1kYXRhLXdyaXRlLW1lc2giLHM9dD8ud2ViV29ya2VyO3M9PT12b2lkIDAmJihzPWF3YWl0IGgoKSk7bGV0e3dlYldvcmtlcjphLHJldHVyblZhbHVlOmMsc3RkZXJyOkksb3V0cHV0czp1fT1hd2FpdCBtKEIsaSxyLG8se3BpcGVsaW5lQmFzZVVybDpkKCkscGlwZWxpbmVXb3JrZXJVcmw6USgpLHdlYldvcmtlcjpzLG5vQ29weTp0Py5ub0NvcHl9KTtpZihjIT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOmEsY291bGRXcml0ZTp1WzBdPy5kYXRhLHNlcmlhbGl6ZWRNZXNoOnVbMV0/LmRhdGF9fXZhciBJZT1EaTthc3luYyBmdW5jdGlvbiBiaShBLGU9e30pe2xldCB0PVt7dHlwZTpDLkpzb25Db21wYXRpYmxlfSx7dHlwZTpDLk1lc2h9XSxyPUE7aWYoQSBpbnN0YW5jZW9mIEZpbGUpe2xldCBFPWF3YWl0IEEuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOkEubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KEUpfX1sZXQgbz1be3R5cGU6Qy5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksZS5pbmZvcm1hdGlvbk9ubHkmJmUuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBCPSJvYmotcmVhZC1tZXNoIixzPWU/LndlYldvcmtlcjtzPT09dm9pZCAwJiYocz1hd2FpdCBoKCkpO2xldHt3ZWJXb3JrZXI6YSxyZXR1cm5WYWx1ZTpjLHN0ZGVycjpJLG91dHB1dHM6dX09YXdhaXQgbShCLGksdCxvLHtwaXBlbGluZUJhc2VVcmw6ZCgpLHBpcGVsaW5lV29ya2VyVXJsOlEoKSx3ZWJXb3JrZXI6cyxub0NvcHk6ZT8ubm9Db3B5fSk7aWYoYyE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjphLGNvdWxkUmVhZDp1WzBdPy5kYXRhLG1lc2g6dVsxXT8uZGF0YX19dmFyIGdlPWJpO2FzeW5jIGZ1bmN0aW9uIFJpKEEsZSx0PXt9KXtsZXQgcj1be3R5cGU6Qy5Kc29uQ29tcGF0aWJsZX0se3R5cGU6Qy5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6ZSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOkMuTWVzaCxkYXRhOkF9XSxpPVtdLG49IjAiO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPWU7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSx0LmluZm9ybWF0aW9uT25seSYmdC5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5IiksdC51c2VDb21wcmVzc2lvbiYmdC51c2VDb21wcmVzc2lvbiYmaS5wdXNoKCItLXVzZS1jb21wcmVzc2lvbiIpLHQuYmluYXJ5RmlsZVR5cGUmJnQuYmluYXJ5RmlsZVR5cGUmJmkucHVzaCgiLS1iaW5hcnktZmlsZS10eXBlIik7bGV0IEI9Im9iai13cml0ZS1tZXNoIixzPXQ/LndlYldvcmtlcjtzPT09dm9pZCAwJiYocz1hd2FpdCBoKCkpO2xldHt3ZWJXb3JrZXI6YSxyZXR1cm5WYWx1ZTpjLHN0ZGVycjpJLG91dHB1dHM6dX09YXdhaXQgbShCLGkscixvLHtwaXBlbGluZUJhc2VVcmw6ZCgpLHBpcGVsaW5lV29ya2VyVXJsOlEoKSx3ZWJXb3JrZXI6cyxub0NvcHk6dD8ubm9Db3B5fSk7aWYoYyE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjphLGNvdWxkV3JpdGU6dVswXT8uZGF0YSxzZXJpYWxpemVkTWVzaDp1WzFdPy5kYXRhfX12YXIgbGU9Umk7YXN5bmMgZnVuY3Rpb24ga2koQSxlPXt9KXtsZXQgdD1be3R5cGU6Qy5Kc29uQ29tcGF0aWJsZX0se3R5cGU6Qy5NZXNofV0scj1BO2lmKEEgaW5zdGFuY2VvZiBGaWxlKXtsZXQgRT1hd2FpdCBBLmFycmF5QnVmZmVyKCk7cj17cGF0aDpBLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShFKX19bGV0IG89W3t0eXBlOkMuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLGUuaW5mb3JtYXRpb25Pbmx5JiZlLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgQj0ic3RsLXJlYWQtbWVzaCIscz1lPy53ZWJXb3JrZXI7cz09PXZvaWQgMCYmKHM9YXdhaXQgaCgpKTtsZXR7d2ViV29ya2VyOmEscmV0dXJuVmFsdWU6YyxzdGRlcnI6SSxvdXRwdXRzOnV9PWF3YWl0IG0oQixpLHQsbyx7cGlwZWxpbmVCYXNlVXJsOmQoKSxwaXBlbGluZVdvcmtlclVybDpRKCksd2ViV29ya2VyOnMsbm9Db3B5OmU/Lm5vQ29weX0pO2lmKGMhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6YSxjb3VsZFJlYWQ6dVswXT8uZGF0YSxtZXNoOnVbMV0/LmRhdGF9fXZhciBCZT1raTthc3luYyBmdW5jdGlvbiBTaShBLGUsdD17fSl7bGV0IHI9W3t0eXBlOkMuSnNvbkNvbXBhdGlibGV9LHt0eXBlOkMuQmluYXJ5RmlsZSxkYXRhOntwYXRoOmUsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpDLk1lc2gsZGF0YTpBfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1lO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKSx0LmJpbmFyeUZpbGVUeXBlJiZ0LmJpbmFyeUZpbGVUeXBlJiZpLnB1c2goIi0tYmluYXJ5LWZpbGUtdHlwZSIpO2xldCBCPSJzdGwtd3JpdGUtbWVzaCIscz10Py53ZWJXb3JrZXI7cz09PXZvaWQgMCYmKHM9YXdhaXQgaCgpKTtsZXR7d2ViV29ya2VyOmEscmV0dXJuVmFsdWU6YyxzdGRlcnI6SSxvdXRwdXRzOnV9PWF3YWl0IG0oQixpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOmQoKSxwaXBlbGluZVdvcmtlclVybDpRKCksd2ViV29ya2VyOnMsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKGMhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6YSxjb3VsZFdyaXRlOnVbMF0/LmRhdGEsc2VyaWFsaXplZE1lc2g6dVsxXT8uZGF0YX19dmFyIHVlPVNpO2FzeW5jIGZ1bmN0aW9uIEZpKEEsZT17fSl7bGV0IHQ9W3t0eXBlOkMuSnNvbkNvbXBhdGlibGV9LHt0eXBlOkMuTWVzaH1dLHI9QTtpZihBIGluc3RhbmNlb2YgRmlsZSl7bGV0IEU9YXdhaXQgQS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6QS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoRSl9fWxldCBvPVt7dHlwZTpDLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxuPXIucGF0aDtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj0iMSI7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxlLmluZm9ybWF0aW9uT25seSYmZS5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5Iik7bGV0IEI9Im9mZi1yZWFkLW1lc2giLHM9ZT8ud2ViV29ya2VyO3M9PT12b2lkIDAmJihzPWF3YWl0IGgoKSk7bGV0e3dlYldvcmtlcjphLHJldHVyblZhbHVlOmMsc3RkZXJyOkksb3V0cHV0czp1fT1hd2FpdCBtKEIsaSx0LG8se3BpcGVsaW5lQmFzZVVybDpkKCkscGlwZWxpbmVXb3JrZXJVcmw6USgpLHdlYldvcmtlcjpzLG5vQ29weTplPy5ub0NvcHl9KTtpZihjIT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOmEsY291bGRSZWFkOnVbMF0/LmRhdGEsbWVzaDp1WzFdPy5kYXRhfX12YXIgQ2U9Rmk7YXN5bmMgZnVuY3Rpb24gVWkoQSxlLHQ9e30pe2xldCByPVt7dHlwZTpDLkpzb25Db21wYXRpYmxlfSx7dHlwZTpDLkJpbmFyeUZpbGUsZGF0YTp7cGF0aDplLGRhdGE6bmV3IFVpbnQ4QXJyYXl9fV0sbz1be3R5cGU6Qy5NZXNoLGRhdGE6QX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9ZTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIiksdC5iaW5hcnlGaWxlVHlwZSYmdC5iaW5hcnlGaWxlVHlwZSYmaS5wdXNoKCItLWJpbmFyeS1maWxlLXR5cGUiKTtsZXQgQj0ib2ZmLXdyaXRlLW1lc2giLHM9dD8ud2ViV29ya2VyO3M9PT12b2lkIDAmJihzPWF3YWl0IGgoKSk7bGV0e3dlYldvcmtlcjphLHJldHVyblZhbHVlOmMsc3RkZXJyOkksb3V0cHV0czp1fT1hd2FpdCBtKEIsaSxyLG8se3BpcGVsaW5lQmFzZVVybDpkKCkscGlwZWxpbmVXb3JrZXJVcmw6USgpLHdlYldvcmtlcjpzLG5vQ29weTp0Py5ub0NvcHl9KTtpZihjIT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOmEsY291bGRXcml0ZTp1WzBdPy5kYXRhLHNlcmlhbGl6ZWRNZXNoOnVbMV0/LmRhdGF9fXZhciBmZT1VaTthc3luYyBmdW5jdGlvbiBOaShBLGU9e30pe2xldCB0PVt7dHlwZTpDLkpzb25Db21wYXRpYmxlfSx7dHlwZTpDLk1lc2h9XSxyPUE7aWYoQSBpbnN0YW5jZW9mIEZpbGUpe2xldCBFPWF3YWl0IEEuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOkEubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KEUpfX1sZXQgbz1be3R5cGU6Qy5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksZS5pbmZvcm1hdGlvbk9ubHkmJmUuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBCPSJ3YXNtLXJlYWQtbWVzaCIscz1lPy53ZWJXb3JrZXI7cz09PXZvaWQgMCYmKHM9YXdhaXQgaCgpKTtsZXR7d2ViV29ya2VyOmEscmV0dXJuVmFsdWU6YyxzdGRlcnI6SSxvdXRwdXRzOnV9PWF3YWl0IG0oQixpLHQsbyx7cGlwZWxpbmVCYXNlVXJsOmQoKSxwaXBlbGluZVdvcmtlclVybDpRKCksd2ViV29ya2VyOnMsbm9Db3B5OmU/Lm5vQ29weX0pO2lmKGMhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6YSxjb3VsZFJlYWQ6dVswXT8uZGF0YSxtZXNoOnVbMV0/LmRhdGF9fXZhciBjZT1OaTthc3luYyBmdW5jdGlvbiBNaShBLGUsdD17fSl7bGV0IHI9W3t0eXBlOkMuSnNvbkNvbXBhdGlibGV9LHt0eXBlOkMuQmluYXJ5RmlsZSxkYXRhOntwYXRoOmUsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpDLk1lc2gsZGF0YTpBfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1lO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKSx0LmJpbmFyeUZpbGVUeXBlJiZ0LmJpbmFyeUZpbGVUeXBlJiZpLnB1c2goIi0tYmluYXJ5LWZpbGUtdHlwZSIpO2xldCBCPSJ3YXNtLXdyaXRlLW1lc2giLHM9dD8ud2ViV29ya2VyO3M9PT12b2lkIDAmJihzPWF3YWl0IGgoKSk7bGV0e3dlYldvcmtlcjphLHJldHVyblZhbHVlOmMsc3RkZXJyOkksb3V0cHV0czp1fT1hd2FpdCBtKEIsaSxyLG8se3BpcGVsaW5lQmFzZVVybDpkKCkscGlwZWxpbmVXb3JrZXJVcmw6USgpLHdlYldvcmtlcjpzLG5vQ29weTp0Py5ub0NvcHl9KTtpZihjIT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOmEsY291bGRXcml0ZTp1WzBdPy5kYXRhLHNlcmlhbGl6ZWRNZXNoOnVbMV0/LmRhdGF9fXZhciBwZT1NaTthc3luYyBmdW5jdGlvbiBPaShBLGU9e30pe2xldCB0PVt7dHlwZTpDLkpzb25Db21wYXRpYmxlfSx7dHlwZTpDLk1lc2h9XSxyPUE7aWYoQSBpbnN0YW5jZW9mIEZpbGUpe2xldCBFPWF3YWl0IEEuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOkEubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KEUpfX1sZXQgbz1be3R5cGU6Qy5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksZS5pbmZvcm1hdGlvbk9ubHkmJmUuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBCPSJ3YXNtLXpzdGQtcmVhZC1tZXNoIixzPWU/LndlYldvcmtlcjtzPT09dm9pZCAwJiYocz1hd2FpdCBoKCkpO2xldHt3ZWJXb3JrZXI6YSxyZXR1cm5WYWx1ZTpjLHN0ZGVycjpJLG91dHB1dHM6dX09YXdhaXQgbShCLGksdCxvLHtwaXBlbGluZUJhc2VVcmw6ZCgpLHBpcGVsaW5lV29ya2VyVXJsOlEoKSx3ZWJXb3JrZXI6cyxub0NvcHk6ZT8ubm9Db3B5fSk7aWYoYyE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjphLGNvdWxkUmVhZDp1WzBdPy5kYXRhLG1lc2g6dVsxXT8uZGF0YX19dmFyIEVlPU9pO2FzeW5jIGZ1bmN0aW9uIFdpKEEsZSx0PXt9KXtsZXQgcj1be3R5cGU6Qy5Kc29uQ29tcGF0aWJsZX0se3R5cGU6Qy5CaW5hcnlGaWxlLGRhdGE6e3BhdGg6ZSxkYXRhOm5ldyBVaW50OEFycmF5fX1dLG89W3t0eXBlOkMuTWVzaCxkYXRhOkF9XSxpPVtdLG49IjAiO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPWU7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSx0LmluZm9ybWF0aW9uT25seSYmdC5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5IiksdC51c2VDb21wcmVzc2lvbiYmdC51c2VDb21wcmVzc2lvbiYmaS5wdXNoKCItLXVzZS1jb21wcmVzc2lvbiIpLHQuYmluYXJ5RmlsZVR5cGUmJnQuYmluYXJ5RmlsZVR5cGUmJmkucHVzaCgiLS1iaW5hcnktZmlsZS10eXBlIik7bGV0IEI9Indhc20tenN0ZC13cml0ZS1tZXNoIixzPXQ/LndlYldvcmtlcjtzPT09dm9pZCAwJiYocz1hd2FpdCBoKCkpO2xldHt3ZWJXb3JrZXI6YSxyZXR1cm5WYWx1ZTpjLHN0ZGVycjpJLG91dHB1dHM6dX09YXdhaXQgbShCLGkscixvLHtwaXBlbGluZUJhc2VVcmw6ZCgpLHBpcGVsaW5lV29ya2VyVXJsOlEoKSx3ZWJXb3JrZXI6cyxub0NvcHk6dD8ubm9Db3B5fSk7aWYoYyE9PTAmJkkhPT0iIil0aHJvdyBuZXcgRXJyb3IoSSk7cmV0dXJue3dlYldvcmtlcjphLGNvdWxkV3JpdGU6dVswXT8uZGF0YSxzZXJpYWxpemVkTWVzaDp1WzFdPy5kYXRhfX12YXIgUWU9V2k7YXN5bmMgZnVuY3Rpb24gUGkoQSxlPXt9KXtsZXQgdD1be3R5cGU6Qy5Kc29uQ29tcGF0aWJsZX0se3R5cGU6Qy5NZXNofV0scj1BO2lmKEEgaW5zdGFuY2VvZiBGaWxlKXtsZXQgRT1hd2FpdCBBLmFycmF5QnVmZmVyKCk7cj17cGF0aDpBLm5hbWUsZGF0YTpuZXcgVWludDhBcnJheShFKX19bGV0IG89W3t0eXBlOkMuQmluYXJ5RmlsZSxkYXRhOnJ9XSxpPVtdLG49ci5wYXRoO2kucHVzaChuKTtsZXQgZz0iMCI7aS5wdXNoKGcpO2xldCBmPSIxIjtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLGUuaW5mb3JtYXRpb25Pbmx5JiZlLmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKTtsZXQgQj0ic3djLXJlYWQtbWVzaCIscz1lPy53ZWJXb3JrZXI7cz09PXZvaWQgMCYmKHM9YXdhaXQgaCgpKTtsZXR7d2ViV29ya2VyOmEscmV0dXJuVmFsdWU6YyxzdGRlcnI6SSxvdXRwdXRzOnV9PWF3YWl0IG0oQixpLHQsbyx7cGlwZWxpbmVCYXNlVXJsOmQoKSxwaXBlbGluZVdvcmtlclVybDpRKCksd2ViV29ya2VyOnMsbm9Db3B5OmU/Lm5vQ29weX0pO2lmKGMhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6YSxjb3VsZFJlYWQ6dVswXT8uZGF0YSxtZXNoOnVbMV0/LmRhdGF9fXZhciBtZT1QaTthc3luYyBmdW5jdGlvbiBHaShBLGUsdD17fSl7bGV0IHI9W3t0eXBlOkMuSnNvbkNvbXBhdGlibGV9LHt0eXBlOkMuQmluYXJ5RmlsZSxkYXRhOntwYXRoOmUsZGF0YTpuZXcgVWludDhBcnJheX19XSxvPVt7dHlwZTpDLk1lc2gsZGF0YTpBfV0saT1bXSxuPSIwIjtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj1lO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksdC5pbmZvcm1hdGlvbk9ubHkmJnQuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpLHQudXNlQ29tcHJlc3Npb24mJnQudXNlQ29tcHJlc3Npb24mJmkucHVzaCgiLS11c2UtY29tcHJlc3Npb24iKSx0LmJpbmFyeUZpbGVUeXBlJiZ0LmJpbmFyeUZpbGVUeXBlJiZpLnB1c2goIi0tYmluYXJ5LWZpbGUtdHlwZSIpO2xldCBCPSJzd2Mtd3JpdGUtbWVzaCIscz10Py53ZWJXb3JrZXI7cz09PXZvaWQgMCYmKHM9YXdhaXQgaCgpKTtsZXR7d2ViV29ya2VyOmEscmV0dXJuVmFsdWU6YyxzdGRlcnI6SSxvdXRwdXRzOnV9PWF3YWl0IG0oQixpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOmQoKSxwaXBlbGluZVdvcmtlclVybDpRKCksd2ViV29ya2VyOnMsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKGMhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6YSxjb3VsZFdyaXRlOnVbMF0/LmRhdGEsc2VyaWFsaXplZE1lc2g6dVsxXT8uZGF0YX19dmFyIGRlPUdpO2FzeW5jIGZ1bmN0aW9uIExpKEEsZT17fSl7bGV0IHQ9W3t0eXBlOkMuSnNvbkNvbXBhdGlibGV9LHt0eXBlOkMuTWVzaH1dLHI9QTtpZihBIGluc3RhbmNlb2YgRmlsZSl7bGV0IEU9YXdhaXQgQS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6QS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoRSl9fWxldCBvPVt7dHlwZTpDLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxuPXIucGF0aDtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj0iMSI7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxlLmluZm9ybWF0aW9uT25seSYmZS5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5Iik7bGV0IEI9ImJ5dS1yZWFkLW1lc2giLHM9ZT8ud2ViV29ya2VyO3M9PT12b2lkIDAmJihzPWF3YWl0IGgoKSk7bGV0e3dlYldvcmtlcjphLHJldHVyblZhbHVlOmMsc3RkZXJyOkksb3V0cHV0czp1fT1hd2FpdCBtKEIsaSx0LG8se3BpcGVsaW5lQmFzZVVybDpkKCkscGlwZWxpbmVXb3JrZXJVcmw6USgpLHdlYldvcmtlcjpzLG5vQ29weTplPy5ub0NvcHl9KTtpZihjIT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOmEsY291bGRSZWFkOnVbMF0/LmRhdGEsbWVzaDp1WzFdPy5kYXRhfX12YXIgaGU9TGk7YXN5bmMgZnVuY3Rpb24geGkoQSxlLHQ9e30pe2xldCByPVt7dHlwZTpDLkpzb25Db21wYXRpYmxlfSx7dHlwZTpDLkJpbmFyeUZpbGUsZGF0YTp7cGF0aDplLGRhdGE6bmV3IFVpbnQ4QXJyYXl9fV0sbz1be3R5cGU6Qy5NZXNoLGRhdGE6QX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9ZTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIiksdC5iaW5hcnlGaWxlVHlwZSYmdC5iaW5hcnlGaWxlVHlwZSYmaS5wdXNoKCItLWJpbmFyeS1maWxlLXR5cGUiKTtsZXQgQj0iYnl1LXdyaXRlLW1lc2giLHM9dD8ud2ViV29ya2VyO3M9PT12b2lkIDAmJihzPWF3YWl0IGgoKSk7bGV0e3dlYldvcmtlcjphLHJldHVyblZhbHVlOmMsc3RkZXJyOkksb3V0cHV0czp1fT1hd2FpdCBtKEIsaSxyLG8se3BpcGVsaW5lQmFzZVVybDpkKCkscGlwZWxpbmVXb3JrZXJVcmw6USgpLHdlYldvcmtlcjpzLG5vQ29weTp0Py5ub0NvcHl9KTtpZihjIT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOmEsY291bGRXcml0ZTp1WzBdPy5kYXRhLHNlcmlhbGl6ZWRNZXNoOnVbMV0/LmRhdGF9fXZhciB5ZT14aTthc3luYyBmdW5jdGlvbiBUaShBLGU9e30pe2xldCB0PVt7dHlwZTpDLkpzb25Db21wYXRpYmxlfSx7dHlwZTpDLk1lc2h9XSxyPUE7aWYoQSBpbnN0YW5jZW9mIEZpbGUpe2xldCBFPWF3YWl0IEEuYXJyYXlCdWZmZXIoKTtyPXtwYXRoOkEubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KEUpfX1sZXQgbz1be3R5cGU6Qy5CaW5hcnlGaWxlLGRhdGE6cn1dLGk9W10sbj1yLnBhdGg7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9IjEiO2kucHVzaChmKSxpLnB1c2goIi0tbWVtb3J5LWlvIiksZS5pbmZvcm1hdGlvbk9ubHkmJmUuaW5mb3JtYXRpb25Pbmx5JiZpLnB1c2goIi0taW5mb3JtYXRpb24tb25seSIpO2xldCBCPSJmcmVlLXN1cmZlci1hc2NpaS1yZWFkLW1lc2giLHM9ZT8ud2ViV29ya2VyO3M9PT12b2lkIDAmJihzPWF3YWl0IGgoKSk7bGV0e3dlYldvcmtlcjphLHJldHVyblZhbHVlOmMsc3RkZXJyOkksb3V0cHV0czp1fT1hd2FpdCBtKEIsaSx0LG8se3BpcGVsaW5lQmFzZVVybDpkKCkscGlwZWxpbmVXb3JrZXJVcmw6USgpLHdlYldvcmtlcjpzLG5vQ29weTplPy5ub0NvcHl9KTtpZihjIT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOmEsY291bGRSZWFkOnVbMF0/LmRhdGEsbWVzaDp1WzFdPy5kYXRhfX12YXIgd2U9VGk7YXN5bmMgZnVuY3Rpb24gSmkoQSxlLHQ9e30pe2xldCByPVt7dHlwZTpDLkpzb25Db21wYXRpYmxlfSx7dHlwZTpDLkJpbmFyeUZpbGUsZGF0YTp7cGF0aDplLGRhdGE6bmV3IFVpbnQ4QXJyYXl9fV0sbz1be3R5cGU6Qy5NZXNoLGRhdGE6QX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9ZTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIiksdC5iaW5hcnlGaWxlVHlwZSYmdC5iaW5hcnlGaWxlVHlwZSYmaS5wdXNoKCItLWJpbmFyeS1maWxlLXR5cGUiKTtsZXQgQj0iZnJlZS1zdXJmZXItYXNjaWktd3JpdGUtbWVzaCIscz10Py53ZWJXb3JrZXI7cz09PXZvaWQgMCYmKHM9YXdhaXQgaCgpKTtsZXR7d2ViV29ya2VyOmEscmV0dXJuVmFsdWU6YyxzdGRlcnI6SSxvdXRwdXRzOnV9PWF3YWl0IG0oQixpLHIsbyx7cGlwZWxpbmVCYXNlVXJsOmQoKSxwaXBlbGluZVdvcmtlclVybDpRKCksd2ViV29ya2VyOnMsbm9Db3B5OnQ/Lm5vQ29weX0pO2lmKGMhPT0wJiZJIT09IiIpdGhyb3cgbmV3IEVycm9yKEkpO3JldHVybnt3ZWJXb3JrZXI6YSxjb3VsZFdyaXRlOnVbMF0/LmRhdGEsc2VyaWFsaXplZE1lc2g6dVsxXT8uZGF0YX19dmFyIERlPUppO2FzeW5jIGZ1bmN0aW9uIEhpKEEsZT17fSl7bGV0IHQ9W3t0eXBlOkMuSnNvbkNvbXBhdGlibGV9LHt0eXBlOkMuTWVzaH1dLHI9QTtpZihBIGluc3RhbmNlb2YgRmlsZSl7bGV0IEU9YXdhaXQgQS5hcnJheUJ1ZmZlcigpO3I9e3BhdGg6QS5uYW1lLGRhdGE6bmV3IFVpbnQ4QXJyYXkoRSl9fWxldCBvPVt7dHlwZTpDLkJpbmFyeUZpbGUsZGF0YTpyfV0saT1bXSxuPXIucGF0aDtpLnB1c2gobik7bGV0IGc9IjAiO2kucHVzaChnKTtsZXQgZj0iMSI7aS5wdXNoKGYpLGkucHVzaCgiLS1tZW1vcnktaW8iKSxlLmluZm9ybWF0aW9uT25seSYmZS5pbmZvcm1hdGlvbk9ubHkmJmkucHVzaCgiLS1pbmZvcm1hdGlvbi1vbmx5Iik7bGV0IEI9ImZyZWUtc3VyZmVyLWJpbmFyeS1yZWFkLW1lc2giLHM9ZT8ud2ViV29ya2VyO3M9PT12b2lkIDAmJihzPWF3YWl0IGgoKSk7bGV0e3dlYldvcmtlcjphLHJldHVyblZhbHVlOmMsc3RkZXJyOkksb3V0cHV0czp1fT1hd2FpdCBtKEIsaSx0LG8se3BpcGVsaW5lQmFzZVVybDpkKCkscGlwZWxpbmVXb3JrZXJVcmw6USgpLHdlYldvcmtlcjpzLG5vQ29weTplPy5ub0NvcHl9KTtpZihjIT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOmEsY291bGRSZWFkOnVbMF0/LmRhdGEsbWVzaDp1WzFdPy5kYXRhfX12YXIgYmU9SGk7YXN5bmMgZnVuY3Rpb24gWWkoQSxlLHQ9e30pe2xldCByPVt7dHlwZTpDLkpzb25Db21wYXRpYmxlfSx7dHlwZTpDLkJpbmFyeUZpbGUsZGF0YTp7cGF0aDplLGRhdGE6bmV3IFVpbnQ4QXJyYXl9fV0sbz1be3R5cGU6Qy5NZXNoLGRhdGE6QX1dLGk9W10sbj0iMCI7aS5wdXNoKG4pO2xldCBnPSIwIjtpLnB1c2goZyk7bGV0IGY9ZTtpLnB1c2goZiksaS5wdXNoKCItLW1lbW9yeS1pbyIpLHQuaW5mb3JtYXRpb25Pbmx5JiZ0LmluZm9ybWF0aW9uT25seSYmaS5wdXNoKCItLWluZm9ybWF0aW9uLW9ubHkiKSx0LnVzZUNvbXByZXNzaW9uJiZ0LnVzZUNvbXByZXNzaW9uJiZpLnB1c2goIi0tdXNlLWNvbXByZXNzaW9uIiksdC5iaW5hcnlGaWxlVHlwZSYmdC5iaW5hcnlGaWxlVHlwZSYmaS5wdXNoKCItLWJpbmFyeS1maWxlLXR5cGUiKTtsZXQgQj0iZnJlZS1zdXJmZXItYmluYXJ5LXdyaXRlLW1lc2giLHM9dD8ud2ViV29ya2VyO3M9PT12b2lkIDAmJihzPWF3YWl0IGgoKSk7bGV0e3dlYldvcmtlcjphLHJldHVyblZhbHVlOmMsc3RkZXJyOkksb3V0cHV0czp1fT1hd2FpdCBtKEIsaSxyLG8se3BpcGVsaW5lQmFzZVVybDpkKCkscGlwZWxpbmVXb3JrZXJVcmw6USgpLHdlYldvcmtlcjpzLG5vQ29weTp0Py5ub0NvcHl9KTtpZihjIT09MCYmSSE9PSIiKXRocm93IG5ldyBFcnJvcihJKTtyZXR1cm57d2ViV29ya2VyOmEsY291bGRXcml0ZTp1WzBdPy5kYXRhLHNlcmlhbGl6ZWRNZXNoOnVbMV0/LmRhdGF9fXZhciBSZT1ZaTt2YXIgcWk9bmV3IE1hcChbWyJ2dGsiLFthZSxJZV1dLFsib2JqIixbZ2UsbGVdXSxbInN0bCIsW0JlLHVlXV0sWyJvZmYiLFtDZSxmZV1dLFsid2FzbSIsW2NlLHBlXV0sWyJ3YXNtLXpzdCIsW0VlLFFlXV0sWyJzd2MiLFttZSxkZV1dLFsiYnl1IixbaGUseWVdXSxbImZyZWUtc3VyZmVyLWFzY2lpIixbd2UsRGVdXSxbImZyZWUtc3VyZmVyLWJpbmFyeSIsW2JlLFJlXV1dKSwkPXFpO2FzeW5jIGZ1bmN0aW9uIEtpKEEsZT17fSl7bGV0IHQ9QS50eXBlPz8iIixyPUEubmFtZT8/QS5wYXRoPz8iZmlsZU5hbWUiLG89QUEocikudG9Mb3dlckNhc2UoKSxpPWU/LndlYldvcmtlcixuPUE7aWYoQSBpbnN0YW5jZW9mIEJsb2Ipe2xldCBJPWF3YWl0IEEuYXJyYXlCdWZmZXIoKTtuPXtwYXRoOkEubmFtZSxkYXRhOm5ldyBVaW50OEFycmF5KEkpfX1sZXQgZz1udWxsO2lmKHQmJlouaGFzKHQpKWc9Wi5nZXQodCk7ZWxzZSBpZihULmhhcyhvKSlnPVQuZ2V0KG8pO2Vsc2UgZm9yKGxldCBJIG9mICQudmFsdWVzKCkpaWYoSVswXSE9PW51bGwpe2xldHt3ZWJXb3JrZXI6dSxjb3VsZFJlYWQ6cCxtZXNoOkV9PWF3YWl0IElbMF0oe3BhdGg6bi5wYXRoLGRhdGE6bi5kYXRhLnNsaWNlKCl9LHtpbmZvcm1hdGlvbk9ubHk6ZS5pbmZvcm1hdGlvbk9ubHksd2ViV29ya2VyOmksbm9Db3B5OmU/Lm5vQ29weX0pO2lmKGk9dSxwKXJldHVybnt3ZWJXb3JrZXI6aSxtZXNoOkV9fWlmKCFnKXRocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCBJTyBmb3I6ICIrcik7bGV0IEI9JC5nZXQoZylbMF0se3dlYldvcmtlcjpzLGNvdWxkUmVhZDphLG1lc2g6Y309YXdhaXQgQihuLHtpbmZvcm1hdGlvbk9ubHk6ZS5pbmZvcm1hdGlvbk9ubHksd2ViV29ya2VyOmksbm9Db3B5OmU/Lm5vQ29weX0pO2lmKGk9cywhYSl0aHJvdyBFcnJvcigiQ291bGQgbm90IHJlYWQ6ICIrcik7cmV0dXJue3dlYldvcmtlcjppLG1lc2g6Y319dmFyIGppPUtpO2FzeW5jIGZ1bmN0aW9uIHZpKEEsZSx0PXt9KXtsZXQgcj1BLG89dC5taW1lVHlwZSxpPUFBKGUpLnRvTG93ZXJDYXNlKCksbj10LndlYldvcmtlcixnPW51bGw7aWYodHlwZW9mIG88InUiJiZaLmhhcyhvKSlnPVouZ2V0KG8pO2Vsc2UgaWYoVC5oYXMoaSkpZz1ULmdldChpKTtlbHNlIGZvcihsZXQgdSBvZiAkLnZhbHVlcygpKWlmKHVbMV0hPT1udWxsKXtsZXR7d2ViV29ya2VyOnAsY291bGRXcml0ZTpFLHNlcmlhbGl6ZWRNZXNoOnd9PWF3YWl0IHVbMV0ocixlLHQpO2lmKG49cCxFKXJldHVybnt3ZWJXb3JrZXI6bixzZXJpYWxpemVkTWVzaDp3fX1pZighZyl0aHJvdyBFcnJvcigiQ291bGQgbm90IGZpbmQgSU8gZm9yOiAiK2UpO2xldCBCPSQuZ2V0KGcpWzFdLHt3ZWJXb3JrZXI6cyxjb3VsZFdyaXRlOmEsc2VyaWFsaXplZE1lc2g6Y309YXdhaXQgQihyLGUsdCk7aWYobj1zLCFhKXRocm93IEVycm9yKCJDb3VsZCBub3Qgd3JpdGU6ICIrZSk7cmV0dXJue3dlYldvcmtlcjpuLHNlcmlhbGl6ZWRNZXNoOmN9fXZhciBfaT12aTt2YXIgR3Q9J2RhdGE6dGV4dC9qYXZhc2NyaXB0O2NoYXJzZXQ9dXRmLTgsdmFyIHR0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgZXQ9KEEsSSk9Pntmb3IodmFyIHQgaW4gSSl0dChBLHQse2dldDpJW3RdLGVudW1lcmFibGU6ITB9KX07dmFyIHZBPVN5bWJvbCgiQ29tbGluay5wcm94eSIpLGd0PVN5bWJvbCgiQ29tbGluay5lbmRwb2ludCIpLHJ0PVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSxtQT1TeW1ib2woIkNvbWxpbmsuZmluYWxpemVyIiksZUE9U3ltYm9sKCJDb21saW5rLnRocm93biIpLCRBPUE9PnR5cGVvZiBBPT0ib2JqZWN0IiYmQSE9PW51bGx8fHR5cGVvZiBBPT0iZnVuY3Rpb24iLGl0PXtjYW5IYW5kbGU6QT0+JEEoQSkmJkFbdkFdLHNlcmlhbGl6ZShBKXtsZXR7cG9ydDE6SSxwb3J0Mjp0fT1uZXcgTWVzc2FnZUNoYW5uZWw7cmV0dXJuIG9BKEEsSSksW3QsW3RdXX0sZGVzZXJpYWxpemUoQSl7cmV0dXJuIEEuc3RhcnQoKSxzdChBKX19LG90PXtjYW5IYW5kbGU6QT0+JEEoQSkmJmVBIGluIEEsc2VyaWFsaXplKHt2YWx1ZTpBfSl7bGV0IEk7cmV0dXJuIEEgaW5zdGFuY2VvZiBFcnJvcj9JPXtpc0Vycm9yOiEwLHZhbHVlOnttZXNzYWdlOkEubWVzc2FnZSxuYW1lOkEubmFtZSxzdGFjazpBLnN0YWNrfX06ST17aXNFcnJvcjohMSx2YWx1ZTpBfSxbSSxbXV19LGRlc2VyaWFsaXplKEEpe3Rocm93IEEuaXNFcnJvcj9PYmplY3QuYXNzaWduKG5ldyBFcnJvcihBLnZhbHVlLm1lc3NhZ2UpLEEudmFsdWUpOkEudmFsdWV9fSxBST1uZXcgTWFwKFtbInByb3h5IixpdF0sWyJ0aHJvdyIsb3RdXSk7ZnVuY3Rpb24gQnQoQSxJKXtmb3IobGV0IHQgb2YgQSlpZihJPT09dHx8dD09PSIqInx8dCBpbnN0YW5jZW9mIFJlZ0V4cCYmdC50ZXN0KEkpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIG9BKEEsST1nbG9iYWxUaGlzLHQ9WyIqIl0pe0kuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gZShnKXtpZighZ3x8IWcuZGF0YSlyZXR1cm47aWYoIUJ0KHQsZy5vcmlnaW4pKXtjb25zb2xlLndhcm4oYEludmFsaWQgb3JpZ2luIFwnJHtnLm9yaWdpbn1cJyBmb3IgY29tbGluayBwcm94eWApO3JldHVybn1sZXR7aWQ6cix0eXBlOmkscGF0aDpzfT1PYmplY3QuYXNzaWduKHtwYXRoOltdfSxnLmRhdGEpLGE9KGcuZGF0YS5hcmd1bWVudExpc3R8fFtdKS5tYXAoYiksbjt0cnl7bGV0IEM9cy5zbGljZSgwLC0xKS5yZWR1Y2UoKGYsUSk9PmZbUV0sQSksbz1zLnJlZHVjZSgoZixRKT0+ZltRXSxBKTtzd2l0Y2goaSl7Y2FzZSJHRVQiOm49bzticmVhaztjYXNlIlNFVCI6Q1tzLnNsaWNlKC0xKVswXV09YihnLmRhdGEudmFsdWUpLG49ITA7YnJlYWs7Y2FzZSJBUFBMWSI6bj1vLmFwcGx5KEMsYSk7YnJlYWs7Y2FzZSJDT05TVFJVQ1QiOntsZXQgZj1uZXcgbyguLi5hKTtuPWF0KGYpfWJyZWFrO2Nhc2UiRU5EUE9JTlQiOntsZXR7cG9ydDE6Zixwb3J0MjpRfT1uZXcgTWVzc2FnZUNoYW5uZWw7b0EoQSxRKSxuPVNBKGYsW2ZdKX1icmVhaztjYXNlIlJFTEVBU0UiOm49dm9pZCAwO2JyZWFrO2RlZmF1bHQ6cmV0dXJufX1jYXRjaChDKXtuPXt2YWx1ZTpDLFtlQV06MH19UHJvbWlzZS5yZXNvbHZlKG4pLmNhdGNoKEM9Pih7dmFsdWU6QyxbZUFdOjB9KSkudGhlbihDPT57bGV0W28sZl09aUEoQyk7SS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbykse2lkOnJ9KSxmKSxpPT09IlJFTEVBU0UiJiYoSS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixlKSxJSShJKSxtQSBpbiBBJiZ0eXBlb2YgQVttQV09PSJmdW5jdGlvbiImJkFbbUFdKCkpfSkuY2F0Y2goQz0+e2xldFtvLGZdPWlBKHt2YWx1ZTpuZXcgVHlwZUVycm9yKCJVbnNlcmlhbGl6YWJsZSByZXR1cm4gdmFsdWUiKSxbZUFdOjB9KTtJLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSx7aWQ6cn0pLGYpfSl9KSxJLnN0YXJ0JiZJLnN0YXJ0KCl9ZnVuY3Rpb24gQ3QoQSl7cmV0dXJuIEEuY29uc3RydWN0b3IubmFtZT09PSJNZXNzYWdlUG9ydCJ9ZnVuY3Rpb24gSUkoQSl7Q3QoQSkmJkEuY2xvc2UoKX1mdW5jdGlvbiBzdChBLEkpe3JldHVybiBwQShBLFtdLEkpfWZ1bmN0aW9uIHRBKEEpe2lmKEEpdGhyb3cgbmV3IEVycm9yKCJQcm94eSBoYXMgYmVlbiByZWxlYXNlZCBhbmQgaXMgbm90IHVzZWFibGUiKX1mdW5jdGlvbiB0SShBKXtyZXR1cm4gTShBLHt0eXBlOiJSRUxFQVNFIn0pLnRoZW4oKCk9PntJSShBKX0pfXZhciBnQT1uZXcgV2Vha01hcCxyQT0iRmluYWxpemF0aW9uUmVnaXN0cnkiaW4gZ2xvYmFsVGhpcyYmbmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KEE9PntsZXQgST0oZ0EuZ2V0KEEpfHwwKS0xO2dBLnNldChBLEkpLEk9PT0wJiZ0SShBKX0pO2Z1bmN0aW9uIFF0KEEsSSl7bGV0IHQ9KGdBLmdldChJKXx8MCkrMTtnQS5zZXQoSSx0KSxyQSYmckEucmVnaXN0ZXIoQSxJLEEpfWZ1bmN0aW9uIG50KEEpe3JBJiZyQS51bnJlZ2lzdGVyKEEpfWZ1bmN0aW9uIHBBKEEsST1bXSx0PWZ1bmN0aW9uKCl7fSl7bGV0IGU9ITEsZz1uZXcgUHJveHkodCx7Z2V0KHIsaSl7aWYodEEoZSksaT09PXJ0KXJldHVybigpPT57bnQoZyksdEkoQSksZT0hMH07aWYoaT09PSJ0aGVuIil7aWYoSS5sZW5ndGg9PT0wKXJldHVybnt0aGVuOigpPT5nfTtsZXQgcz1NKEEse3R5cGU6IkdFVCIscGF0aDpJLm1hcChhPT5hLnRvU3RyaW5nKCkpfSkudGhlbihiKTtyZXR1cm4gcy50aGVuLmJpbmQocyl9cmV0dXJuIHBBKEEsWy4uLkksaV0pfSxzZXQocixpLHMpe3RBKGUpO2xldFthLG5dPWlBKHMpO3JldHVybiBNKEEse3R5cGU6IlNFVCIscGF0aDpbLi4uSSxpXS5tYXAoQz0+Qy50b1N0cmluZygpKSx2YWx1ZTphfSxuKS50aGVuKGIpfSxhcHBseShyLGkscyl7dEEoZSk7bGV0IGE9SVtJLmxlbmd0aC0xXTtpZihhPT09Z3QpcmV0dXJuIE0oQSx7dHlwZToiRU5EUE9JTlQifSkudGhlbihiKTtpZihhPT09ImJpbmQiKXJldHVybiBwQShBLEkuc2xpY2UoMCwtMSkpO2xldFtuLENdPV9BKHMpO3JldHVybiBNKEEse3R5cGU6IkFQUExZIixwYXRoOkkubWFwKG89Pm8udG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Om59LEMpLnRoZW4oYil9LGNvbnN0cnVjdChyLGkpe3RBKGUpO2xldFtzLGFdPV9BKGkpO3JldHVybiBNKEEse3R5cGU6IkNPTlNUUlVDVCIscGF0aDpJLm1hcChuPT5uLnRvU3RyaW5nKCkpLGFyZ3VtZW50TGlzdDpzfSxhKS50aGVuKGIpfX0pO3JldHVybiBRdChnLEEpLGd9ZnVuY3Rpb24gRXQoQSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sQSl9ZnVuY3Rpb24gX0EoQSl7bGV0IEk9QS5tYXAoaUEpO3JldHVybltJLm1hcCh0PT50WzBdKSxFdChJLm1hcCh0PT50WzFdKSldfXZhciBlST1uZXcgV2Vha01hcDtmdW5jdGlvbiBTQShBLEkpe3JldHVybiBlSS5zZXQoQSxJKSxBfWZ1bmN0aW9uIGF0KEEpe3JldHVybiBPYmplY3QuYXNzaWduKEEse1t2QV06ITB9KX1mdW5jdGlvbiBpQShBKXtmb3IobGV0W0ksdF1vZiBBSSlpZih0LmNhbkhhbmRsZShBKSl7bGV0W2UsZ109dC5zZXJpYWxpemUoQSk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOkksdmFsdWU6ZX0sZ119cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOkF9LGVJLmdldChBKXx8W11dfWZ1bmN0aW9uIGIoQSl7c3dpdGNoKEEudHlwZSl7Y2FzZSJIQU5ETEVSIjpyZXR1cm4gQUkuZ2V0KEEubmFtZSkuZGVzZXJpYWxpemUoQS52YWx1ZSk7Y2FzZSJSQVciOnJldHVybiBBLnZhbHVlfX1mdW5jdGlvbiBNKEEsSSx0KXtyZXR1cm4gbmV3IFByb21pc2UoZT0+e2xldCBnPWN0KCk7QS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiByKGkpeyFpLmRhdGF8fCFpLmRhdGEuaWR8fGkuZGF0YS5pZCE9PWd8fChBLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHIpLGUoaS5kYXRhKSl9KSxBLnN0YXJ0JiZBLnN0YXJ0KCksQS5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKHtpZDpnfSxJKSx0KX0pfWZ1bmN0aW9uIGN0KCl7cmV0dXJuIG5ldyBBcnJheSg0KS5maWxsKDApLm1hcCgoKT0+TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKk51bWJlci5NQVhfU0FGRV9JTlRFR0VSKS50b1N0cmluZygxNikpLmpvaW4oIi0iKX1mdW5jdGlvbiBXKEEsSSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEEuYXBwbHkoSSxhcmd1bWVudHMpfX12YXJ7dG9TdHJpbmc6ZnR9PU9iamVjdC5wcm90b3R5cGUse2dldFByb3RvdHlwZU9mOk5BfT1PYmplY3QsQ0E9KEE9Pkk9PntsZXQgdD1mdC5jYWxsKEkpO3JldHVybiBBW3RdfHwoQVt0XT10LnNsaWNlKDgsLTEpLnRvTG93ZXJDYXNlKCkpfSkoT2JqZWN0LmNyZWF0ZShudWxsKSksVT1BPT4oQT1BLnRvTG93ZXJDYXNlKCksST0+Q0EoSSk9PT1BKSxzQT1BPT5JPT50eXBlb2YgST09PUEse2lzQXJyYXk6cX09QXJyYXksWj1zQSgidW5kZWZpbmVkIik7ZnVuY3Rpb24gbHQoQSl7cmV0dXJuIEEhPT1udWxsJiYhWihBKSYmQS5jb25zdHJ1Y3RvciE9PW51bGwmJiFaKEEuY29uc3RydWN0b3IpJiZGKEEuY29uc3RydWN0b3IuaXNCdWZmZXIpJiZBLmNvbnN0cnVjdG9yLmlzQnVmZmVyKEEpfXZhciBvST1VKCJBcnJheUJ1ZmZlciIpO2Z1bmN0aW9uIER0KEEpe2xldCBJO3JldHVybiB0eXBlb2YgQXJyYXlCdWZmZXI8InUiJiZBcnJheUJ1ZmZlci5pc1ZpZXc/ST1BcnJheUJ1ZmZlci5pc1ZpZXcoQSk6ST1BJiZBLmJ1ZmZlciYmb0koQS5idWZmZXIpLEl9dmFyIHV0PXNBKCJzdHJpbmciKSxGPXNBKCJmdW5jdGlvbiIpLEJJPXNBKCJudW1iZXIiKSxRQT1BPT5BIT09bnVsbCYmdHlwZW9mIEE9PSJvYmplY3QiLGh0PUE9PkE9PT0hMHx8QT09PSExLEJBPUE9PntpZihDQShBKSE9PSJvYmplY3QiKXJldHVybiExO2xldCBJPU5BKEEpO3JldHVybihJPT09bnVsbHx8ST09PU9iamVjdC5wcm90b3R5cGV8fE9iamVjdC5nZXRQcm90b3R5cGVPZihJKT09PW51bGwpJiYhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBBKSYmIShTeW1ib2wuaXRlcmF0b3IgaW4gQSl9LGR0PVUoIkRhdGUiKSx5dD1VKCJGaWxlIiksd3Q9VSgiQmxvYiIpLG10PVUoIkZpbGVMaXN0IikscHQ9QT0+UUEoQSkmJkYoQS5waXBlKSxTdD1BPT57bGV0IEk7cmV0dXJuIEEmJih0eXBlb2YgRm9ybURhdGE9PSJmdW5jdGlvbiImJkEgaW5zdGFuY2VvZiBGb3JtRGF0YXx8RihBLmFwcGVuZCkmJigoST1DQShBKSk9PT0iZm9ybWRhdGEifHxJPT09Im9iamVjdCImJkYoQS50b1N0cmluZykmJkEudG9TdHJpbmcoKT09PSJbb2JqZWN0IEZvcm1EYXRhXSIpKX0sRnQ9VSgiVVJMU2VhcmNoUGFyYW1zIiksUnQ9QT0+QS50cmltP0EudHJpbSgpOkEucmVwbGFjZSgvXltcXHNcXHVGRUZGXFx4QTBdK3xbXFxzXFx1RkVGRlxceEEwXSskL2csIiIpO2Z1bmN0aW9uIFYoQSxJLHthbGxPd25LZXlzOnQ9ITF9PXt9KXtpZihBPT09bnVsbHx8dHlwZW9mIEE+InUiKXJldHVybjtsZXQgZSxnO2lmKHR5cGVvZiBBIT0ib2JqZWN0IiYmKEE9W0FdKSxxKEEpKWZvcihlPTAsZz1BLmxlbmd0aDtlPGc7ZSsrKUkuY2FsbChudWxsLEFbZV0sZSxBKTtlbHNle2xldCByPXQ/T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoQSk6T2JqZWN0LmtleXMoQSksaT1yLmxlbmd0aCxzO2ZvcihlPTA7ZTxpO2UrKylzPXJbZV0sSS5jYWxsKG51bGwsQVtzXSxzLEEpfX1mdW5jdGlvbiBDSShBLEkpe0k9SS50b0xvd2VyQ2FzZSgpO2xldCB0PU9iamVjdC5rZXlzKEEpLGU9dC5sZW5ndGgsZztmb3IoO2UtLSA+MDspaWYoZz10W2VdLEk9PT1nLnRvTG93ZXJDYXNlKCkpcmV0dXJuIGc7cmV0dXJuIG51bGx9dmFyIHNJPXR5cGVvZiBnbG9iYWxUaGlzPCJ1Ij9nbG9iYWxUaGlzOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdzpnbG9iYWwsUUk9QT0+IVooQSkmJkEhPT1zSTtmdW5jdGlvbiBSQSgpe2xldHtjYXNlbGVzczpBfT1RSSh0aGlzKSYmdGhpc3x8e30sST17fSx0PShlLGcpPT57bGV0IHI9QSYmQ0koSSxnKXx8ZztCQShJW3JdKSYmQkEoZSk/SVtyXT1SQShJW3JdLGUpOkJBKGUpP0lbcl09UkEoe30sZSk6cShlKT9JW3JdPWUuc2xpY2UoKTpJW3JdPWV9O2ZvcihsZXQgZT0wLGc9YXJndW1lbnRzLmxlbmd0aDtlPGc7ZSsrKWFyZ3VtZW50c1tlXSYmVihhcmd1bWVudHNbZV0sdCk7cmV0dXJuIEl9dmFyIE50PShBLEksdCx7YWxsT3duS2V5czplfT17fSk9PihWKEksKGcscik9Pnt0JiZGKGcpP0Fbcl09VyhnLHQpOkFbcl09Z30se2FsbE93bktleXM6ZX0pLEEpLFV0PUE9PihBLmNoYXJDb2RlQXQoMCk9PT02NTI3OSYmKEE9QS5zbGljZSgxKSksQSksR3Q9KEEsSSx0LGUpPT57QS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShJLnByb3RvdHlwZSxlKSxBLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1BLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJzdXBlciIse3ZhbHVlOkkucHJvdG90eXBlfSksdCYmT2JqZWN0LmFzc2lnbihBLnByb3RvdHlwZSx0KX0sa3Q9KEEsSSx0LGUpPT57bGV0IGcscixpLHM9e307aWYoST1JfHx7fSxBPT1udWxsKXJldHVybiBJO2Rve2ZvcihnPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEEpLHI9Zy5sZW5ndGg7ci0tID4wOylpPWdbcl0sKCFlfHxlKGksQSxJKSkmJiFzW2ldJiYoSVtpXT1BW2ldLHNbaV09ITApO0E9dCE9PSExJiZOQShBKX13aGlsZShBJiYoIXR8fHQoQSxJKSkmJkEhPT1PYmplY3QucHJvdG90eXBlKTtyZXR1cm4gSX0sTHQ9KEEsSSx0KT0+e0E9U3RyaW5nKEEpLCh0PT09dm9pZCAwfHx0PkEubGVuZ3RoKSYmKHQ9QS5sZW5ndGgpLHQtPUkubGVuZ3RoO2xldCBlPUEuaW5kZXhPZihJLHQpO3JldHVybiBlIT09LTEmJmU9PT10fSxKdD1BPT57aWYoIUEpcmV0dXJuIG51bGw7aWYocShBKSlyZXR1cm4gQTtsZXQgST1BLmxlbmd0aDtpZighQkkoSSkpcmV0dXJuIG51bGw7bGV0IHQ9bmV3IEFycmF5KEkpO2Zvcig7SS0tID4wOyl0W0ldPUFbSV07cmV0dXJuIHR9LEh0PShBPT5JPT5BJiZJIGluc3RhbmNlb2YgQSkodHlwZW9mIFVpbnQ4QXJyYXk8InUiJiZOQShVaW50OEFycmF5KSksWXQ9KEEsSSk9PntsZXQgZT0oQSYmQVtTeW1ib2wuaXRlcmF0b3JdKS5jYWxsKEEpLGc7Zm9yKDsoZz1lLm5leHQoKSkmJiFnLmRvbmU7KXtsZXQgcj1nLnZhbHVlO0kuY2FsbChBLHJbMF0sclsxXSl9fSxidD0oQSxJKT0+e2xldCB0LGU9W107Zm9yKDsodD1BLmV4ZWMoSSkpIT09bnVsbDspZS5wdXNoKHQpO3JldHVybiBlfSxNdD1VKCJIVE1MRm9ybUVsZW1lbnQiKSxxdD1BPT5BLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWy1fXFxzXShbYS16XFxkXSkoXFx3KikvZyxmdW5jdGlvbih0LGUsZyl7cmV0dXJuIGUudG9VcHBlckNhc2UoKStnfSksckk9KCh7aGFzT3duUHJvcGVydHk6QX0pPT4oSSx0KT0+QS5jYWxsKEksdCkpKE9iamVjdC5wcm90b3R5cGUpLEt0PVUoIlJlZ0V4cCIpLG5JPShBLEkpPT57bGV0IHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoQSksZT17fTtWKHQsKGcscik9PntsZXQgaTsoaT1JKGcscixBKSkhPT0hMSYmKGVbcl09aXx8Zyl9KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhBLGUpfSxPdD1BPT57bkkoQSwoSSx0KT0+e2lmKEYoQSkmJlsiYXJndW1lbnRzIiwiY2FsbGVyIiwiY2FsbGVlIl0uaW5kZXhPZih0KSE9PS0xKXJldHVybiExO2xldCBlPUFbdF07aWYoRihlKSl7aWYoSS5lbnVtZXJhYmxlPSExLCJ3cml0YWJsZSJpbiBJKXtJLndyaXRhYmxlPSExO3JldHVybn1JLnNldHx8KEkuc2V0PSgpPT57dGhyb3cgRXJyb3IoIkNhbiBub3QgcmV3cml0ZSByZWFkLW9ubHkgbWV0aG9kIFwnIit0KyJcJyIpfSl9fSl9LFR0PShBLEkpPT57bGV0IHQ9e30sZT1nPT57Zy5mb3JFYWNoKHI9Pnt0W3JdPSEwfSl9O3JldHVybiBxKEEpP2UoQSk6ZShTdHJpbmcoQSkuc3BsaXQoSSkpLHR9LHh0PSgpPT57fSxQdD0oQSxJKT0+KEE9K0EsTnVtYmVyLmlzRmluaXRlKEEpP0E6SSksRkE9ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IixpST0iMDEyMzQ1Njc4OSIsRUk9e0RJR0lUOmlJLEFMUEhBOkZBLEFMUEhBX0RJR0lUOkZBK0ZBLnRvVXBwZXJDYXNlKCkraUl9LGp0PShBPTE2LEk9RUkuQUxQSEFfRElHSVQpPT57bGV0IHQ9IiIse2xlbmd0aDplfT1JO2Zvcig7QS0tOyl0Kz1JW01hdGgucmFuZG9tKCkqZXwwXTtyZXR1cm4gdH07ZnVuY3Rpb24gV3QoQSl7cmV0dXJuISEoQSYmRihBLmFwcGVuZCkmJkFbU3ltYm9sLnRvU3RyaW5nVGFnXT09PSJGb3JtRGF0YSImJkFbU3ltYm9sLml0ZXJhdG9yXSl9dmFyIFp0PUE9PntsZXQgST1uZXcgQXJyYXkoMTApLHQ9KGUsZyk9PntpZihRQShlKSl7aWYoSS5pbmRleE9mKGUpPj0wKXJldHVybjtpZighKCJ0b0pTT04iaW4gZSkpe0lbZ109ZTtsZXQgcj1xKGUpP1tdOnt9O3JldHVybiBWKGUsKGkscyk9PntsZXQgYT10KGksZysxKTshWihhKSYmKHJbc109YSl9KSxJW2ddPXZvaWQgMCxyfX1yZXR1cm4gZX07cmV0dXJuIHQoQSwwKX0sVnQ9VSgiQXN5bmNGdW5jdGlvbiIpLFh0PUE9PkEmJihRQShBKXx8RihBKSkmJkYoQS50aGVuKSYmRihBLmNhdGNoKSxCPXtpc0FycmF5OnEsaXNBcnJheUJ1ZmZlcjpvSSxpc0J1ZmZlcjpsdCxpc0Zvcm1EYXRhOlN0LGlzQXJyYXlCdWZmZXJWaWV3OkR0LGlzU3RyaW5nOnV0LGlzTnVtYmVyOkJJLGlzQm9vbGVhbjpodCxpc09iamVjdDpRQSxpc1BsYWluT2JqZWN0OkJBLGlzVW5kZWZpbmVkOlosaXNEYXRlOmR0LGlzRmlsZTp5dCxpc0Jsb2I6d3QsaXNSZWdFeHA6S3QsaXNGdW5jdGlvbjpGLGlzU3RyZWFtOnB0LGlzVVJMU2VhcmNoUGFyYW1zOkZ0LGlzVHlwZWRBcnJheTpIdCxpc0ZpbGVMaXN0Om10LGZvckVhY2g6VixtZXJnZTpSQSxleHRlbmQ6TnQsdHJpbTpSdCxzdHJpcEJPTTpVdCxpbmhlcml0czpHdCx0b0ZsYXRPYmplY3Q6a3Qsa2luZE9mOkNBLGtpbmRPZlRlc3Q6VSxlbmRzV2l0aDpMdCx0b0FycmF5Okp0LGZvckVhY2hFbnRyeTpZdCxtYXRjaEFsbDpidCxpc0hUTUxGb3JtOk10LGhhc093blByb3BlcnR5OnJJLGhhc093blByb3A6ckkscmVkdWNlRGVzY3JpcHRvcnM6bkksZnJlZXplTWV0aG9kczpPdCx0b09iamVjdFNldDpUdCx0b0NhbWVsQ2FzZTpxdCxub29wOnh0LHRvRmluaXRlTnVtYmVyOlB0LGZpbmRLZXk6Q0ksZ2xvYmFsOnNJLGlzQ29udGV4dERlZmluZWQ6UUksQUxQSEFCRVQ6RUksZ2VuZXJhdGVTdHJpbmc6anQsaXNTcGVjQ29tcGxpYW50Rm9ybTpXdCx0b0pTT05PYmplY3Q6WnQsaXNBc3luY0ZuOlZ0LGlzVGhlbmFibGU6WHR9O2Z1bmN0aW9uIEsoQSxJLHQsZSxnKXtFcnJvci5jYWxsKHRoaXMpLEVycm9yLmNhcHR1cmVTdGFja1RyYWNlP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsdGhpcy5jb25zdHJ1Y3Rvcik6dGhpcy5zdGFjaz1uZXcgRXJyb3IoKS5zdGFjayx0aGlzLm1lc3NhZ2U9QSx0aGlzLm5hbWU9IkF4aW9zRXJyb3IiLEkmJih0aGlzLmNvZGU9SSksdCYmKHRoaXMuY29uZmlnPXQpLGUmJih0aGlzLnJlcXVlc3Q9ZSksZyYmKHRoaXMucmVzcG9uc2U9Zyl9Qi5pbmhlcml0cyhLLEVycm9yLHt0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm57bWVzc2FnZTp0aGlzLm1lc3NhZ2UsbmFtZTp0aGlzLm5hbWUsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbixudW1iZXI6dGhpcy5udW1iZXIsZmlsZU5hbWU6dGhpcy5maWxlTmFtZSxsaW5lTnVtYmVyOnRoaXMubGluZU51bWJlcixjb2x1bW5OdW1iZXI6dGhpcy5jb2x1bW5OdW1iZXIsc3RhY2s6dGhpcy5zdGFjayxjb25maWc6Qi50b0pTT05PYmplY3QodGhpcy5jb25maWcpLGNvZGU6dGhpcy5jb2RlLHN0YXR1czp0aGlzLnJlc3BvbnNlJiZ0aGlzLnJlc3BvbnNlLnN0YXR1cz90aGlzLnJlc3BvbnNlLnN0YXR1czpudWxsfX19KTt2YXIgYUk9Sy5wcm90b3R5cGUsY0k9e307WyJFUlJfQkFEX09QVElPTl9WQUxVRSIsIkVSUl9CQURfT1BUSU9OIiwiRUNPTk5BQk9SVEVEIiwiRVRJTUVET1VUIiwiRVJSX05FVFdPUksiLCJFUlJfRlJfVE9PX01BTllfUkVESVJFQ1RTIiwiRVJSX0RFUFJFQ0FURUQiLCJFUlJfQkFEX1JFU1BPTlNFIiwiRVJSX0JBRF9SRVFVRVNUIiwiRVJSX0NBTkNFTEVEIiwiRVJSX05PVF9TVVBQT1JUIiwiRVJSX0lOVkFMSURfVVJMIl0uZm9yRWFjaChBPT57Y0lbQV09e3ZhbHVlOkF9fSk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoSyxjSSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGFJLCJpc0F4aW9zRXJyb3IiLHt2YWx1ZTohMH0pO0suZnJvbT0oQSxJLHQsZSxnLHIpPT57bGV0IGk9T2JqZWN0LmNyZWF0ZShhSSk7cmV0dXJuIEIudG9GbGF0T2JqZWN0KEEsaSxmdW5jdGlvbihhKXtyZXR1cm4gYSE9PUVycm9yLnByb3RvdHlwZX0scz0+cyE9PSJpc0F4aW9zRXJyb3IiKSxLLmNhbGwoaSxBLm1lc3NhZ2UsSSx0LGUsZyksaS5jYXVzZT1BLGkubmFtZT1BLm5hbWUsciYmT2JqZWN0LmFzc2lnbihpLHIpLGl9O3ZhciBsPUs7dmFyIG5BPW51bGw7ZnVuY3Rpb24gVUEoQSl7cmV0dXJuIEIuaXNQbGFpbk9iamVjdChBKXx8Qi5pc0FycmF5KEEpfWZ1bmN0aW9uIGxJKEEpe3JldHVybiBCLmVuZHNXaXRoKEEsIltdIik/QS5zbGljZSgwLC0yKTpBfWZ1bmN0aW9uIGZJKEEsSSx0KXtyZXR1cm4gQT9BLmNvbmNhdChJKS5tYXAoZnVuY3Rpb24oZyxyKXtyZXR1cm4gZz1sSShnKSwhdCYmcj8iWyIrZysiXSI6Z30pLmpvaW4odD8iLiI6IiIpOkl9ZnVuY3Rpb24genQoQSl7cmV0dXJuIEIuaXNBcnJheShBKSYmIUEuc29tZShVQSl9dmFyIF90PUIudG9GbGF0T2JqZWN0KEIse30sbnVsbCxmdW5jdGlvbihJKXtyZXR1cm4vXmlzW0EtWl0vLnRlc3QoSSl9KTtmdW5jdGlvbiB2dChBLEksdCl7aWYoIUIuaXNPYmplY3QoQSkpdGhyb3cgbmV3IFR5cGVFcnJvcigidGFyZ2V0IG11c3QgYmUgYW4gb2JqZWN0Iik7ST1JfHxuZXcobkF8fEZvcm1EYXRhKSx0PUIudG9GbGF0T2JqZWN0KHQse21ldGFUb2tlbnM6ITAsZG90czohMSxpbmRleGVzOiExfSwhMSxmdW5jdGlvbihjLHUpe3JldHVybiFCLmlzVW5kZWZpbmVkKHVbY10pfSk7bGV0IGU9dC5tZXRhVG9rZW5zLGc9dC52aXNpdG9yfHxDLHI9dC5kb3RzLGk9dC5pbmRleGVzLGE9KHQuQmxvYnx8dHlwZW9mIEJsb2I8InUiJiZCbG9iKSYmQi5pc1NwZWNDb21wbGlhbnRGb3JtKEkpO2lmKCFCLmlzRnVuY3Rpb24oZykpdGhyb3cgbmV3IFR5cGVFcnJvcigidmlzaXRvciBtdXN0IGJlIGEgZnVuY3Rpb24iKTtmdW5jdGlvbiBuKEUpe2lmKEU9PT1udWxsKXJldHVybiIiO2lmKEIuaXNEYXRlKEUpKXJldHVybiBFLnRvSVNPU3RyaW5nKCk7aWYoIWEmJkIuaXNCbG9iKEUpKXRocm93IG5ldyBsKCJCbG9iIGlzIG5vdCBzdXBwb3J0ZWQuIFVzZSBhIEJ1ZmZlciBpbnN0ZWFkLiIpO3JldHVybiBCLmlzQXJyYXlCdWZmZXIoRSl8fEIuaXNUeXBlZEFycmF5KEUpP2EmJnR5cGVvZiBCbG9iPT0iZnVuY3Rpb24iP25ldyBCbG9iKFtFXSk6QnVmZmVyLmZyb20oRSk6RX1mdW5jdGlvbiBDKEUsYyx1KXtsZXQgZD1FO2lmKEUmJiF1JiZ0eXBlb2YgRT09Im9iamVjdCIpe2lmKEIuZW5kc1dpdGgoYywie30iKSljPWU/YzpjLnNsaWNlKDAsLTIpLEU9SlNPTi5zdHJpbmdpZnkoRSk7ZWxzZSBpZihCLmlzQXJyYXkoRSkmJnp0KEUpfHwoQi5pc0ZpbGVMaXN0KEUpfHxCLmVuZHNXaXRoKGMsIltdIikpJiYoZD1CLnRvQXJyYXkoRSkpKXJldHVybiBjPWxJKGMpLGQuZm9yRWFjaChmdW5jdGlvbihOLEl0KXshKEIuaXNVbmRlZmluZWQoTil8fE49PT1udWxsKSYmSS5hcHBlbmQoaT09PSEwP2ZJKFtjXSxJdCxyKTppPT09bnVsbD9jOmMrIltdIixuKE4pKX0pLCExfXJldHVybiBVQShFKT8hMDooSS5hcHBlbmQoZkkodSxjLHIpLG4oRSkpLCExKX1sZXQgbz1bXSxmPU9iamVjdC5hc3NpZ24oX3Qse2RlZmF1bHRWaXNpdG9yOkMsY29udmVydFZhbHVlOm4saXNWaXNpdGFibGU6VUF9KTtmdW5jdGlvbiBRKEUsYyl7aWYoIUIuaXNVbmRlZmluZWQoRSkpe2lmKG8uaW5kZXhPZihFKSE9PS0xKXRocm93IEVycm9yKCJDaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQgaW4gIitjLmpvaW4oIi4iKSk7by5wdXNoKEUpLEIuZm9yRWFjaChFLGZ1bmN0aW9uKGQsUil7KCEoQi5pc1VuZGVmaW5lZChkKXx8ZD09PW51bGwpJiZnLmNhbGwoSSxkLEIuaXNTdHJpbmcoUik/Ui50cmltKCk6UixjLGYpKT09PSEwJiZRKGQsYz9jLmNvbmNhdChSKTpbUl0pfSksby5wb3AoKX19aWYoIUIuaXNPYmplY3QoQSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiZGF0YSBtdXN0IGJlIGFuIG9iamVjdCIpO3JldHVybiBRKEEpLEl9dmFyIEw9dnQ7ZnVuY3Rpb24gREkoQSl7bGV0IEk9eyIhIjoiJTI1MjEiLCJcJyI6IiUyNTI3IiwiKCI6IiUyNTI4IiwiKSI6IiUyNTI5IiwifiI6IiUyNTdFIiwiJTI1MjAiOiIrIiwiJTI1MDAiOiJcXDAifTtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEEpLnJlcGxhY2UoL1shXCcoKX5dfCUyNTIwfCUyNTAwL2csZnVuY3Rpb24oZSl7cmV0dXJuIElbZV19KX1mdW5jdGlvbiB1SShBLEkpe3RoaXMuX3BhaXJzPVtdLEEmJkwoQSx0aGlzLEkpfXZhciBoST11SS5wcm90b3R5cGU7aEkuYXBwZW5kPWZ1bmN0aW9uKEksdCl7dGhpcy5fcGFpcnMucHVzaChbSSx0XSl9O2hJLnRvU3RyaW5nPWZ1bmN0aW9uKEkpe2xldCB0PUk/ZnVuY3Rpb24oZSl7cmV0dXJuIEkuY2FsbCh0aGlzLGUsREkpfTpESTtyZXR1cm4gdGhpcy5fcGFpcnMubWFwKGZ1bmN0aW9uKGcpe3JldHVybiB0KGdbMF0pKyI9Iit0KGdbMV0pfSwiIikuam9pbigiJiIpfTt2YXIgRUE9dUk7ZnVuY3Rpb24gJHQoQSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChBKS5yZXBsYWNlKC8lMjUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNTI0L2csIiQiKS5yZXBsYWNlKC8lMjUyQy9naSwiLCIpLnJlcGxhY2UoLyUyNTIwL2csIisiKS5yZXBsYWNlKC8lMjU1Qi9naSwiWyIpLnJlcGxhY2UoLyUyNTVEL2dpLCJdIil9ZnVuY3Rpb24gWChBLEksdCl7aWYoIUkpcmV0dXJuIEE7bGV0IGU9dCYmdC5lbmNvZGV8fCR0LGc9dCYmdC5zZXJpYWxpemUscjtpZihnP3I9ZyhJLHQpOnI9Qi5pc1VSTFNlYXJjaFBhcmFtcyhJKT9JLnRvU3RyaW5nKCk6bmV3IEVBKEksdCkudG9TdHJpbmcoZSkscil7bGV0IGk9QS5pbmRleE9mKCIlMjMiKTtpIT09LTEmJihBPUEuc2xpY2UoMCxpKSksQSs9KEEuaW5kZXhPZigiPyIpPT09LTE/Ij8iOiImIikrcn1yZXR1cm4gQX12YXIgR0E9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmhhbmRsZXJzPVtdfXVzZShJLHQsZSl7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOkkscmVqZWN0ZWQ6dCxzeW5jaHJvbm91czplP2Uuc3luY2hyb25vdXM6ITEscnVuV2hlbjplP2UucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX1lamVjdChJKXt0aGlzLmhhbmRsZXJzW0ldJiYodGhpcy5oYW5kbGVyc1tJXT1udWxsKX1jbGVhcigpe3RoaXMuaGFuZGxlcnMmJih0aGlzLmhhbmRsZXJzPVtdKX1mb3JFYWNoKEkpe0IuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLGZ1bmN0aW9uKGUpe2UhPT1udWxsJiZJKGUpfSl9fSxrQT1HQTt2YXIgYUE9e3NpbGVudEpTT05QYXJzaW5nOiEwLGZvcmNlZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9O3ZhciBkST10eXBlb2YgVVJMU2VhcmNoUGFyYW1zPCJ1Ij9VUkxTZWFyY2hQYXJhbXM6RUE7dmFyIHlJPXR5cGVvZiBGb3JtRGF0YTwidSI/Rm9ybURhdGE6bnVsbDt2YXIgd0k9dHlwZW9mIEJsb2I8InUiP0Jsb2I6bnVsbDt2YXIgbUk9e2lzQnJvd3NlcjohMCxjbGFzc2VzOntVUkxTZWFyY2hQYXJhbXM6ZEksRm9ybURhdGE6eUksQmxvYjp3SX0scHJvdG9jb2xzOlsiaHR0cCIsImh0dHBzIiwiZmlsZSIsImJsb2IiLCJ1cmwiLCJkYXRhIl19O3ZhciBMQT17fTtldChMQSx7aGFzQnJvd3NlckVudjooKT0+cEksaGFzU3RhbmRhcmRCcm93c2VyRW52OigpPT5BZSxoYXNTdGFuZGFyZEJyb3dzZXJXZWJXb3JrZXJFbnY6KCk9PkllfSk7dmFyIHBJPXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2YgZG9jdW1lbnQ8InUiLEFlPShBPT5wSSYmWyJSZWFjdE5hdGl2ZSIsIk5hdGl2ZVNjcmlwdCIsIk5TIl0uaW5kZXhPZihBKTwwKSh0eXBlb2YgbmF2aWdhdG9yPCJ1IiYmbmF2aWdhdG9yLnByb2R1Y3QpLEllPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZTwidSImJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSYmdHlwZW9mIHNlbGYuaW1wb3J0U2NyaXB0cz09ImZ1bmN0aW9uIjt2YXIgdz17Li4uTEEsLi4ubUl9O2Z1bmN0aW9uIEpBKEEsSSl7cmV0dXJuIEwoQSxuZXcgdy5jbGFzc2VzLlVSTFNlYXJjaFBhcmFtcyxPYmplY3QuYXNzaWduKHt2aXNpdG9yOmZ1bmN0aW9uKHQsZSxnLHIpe3JldHVybiB3LmlzTm9kZSYmQi5pc0J1ZmZlcih0KT8odGhpcy5hcHBlbmQoZSx0LnRvU3RyaW5nKCJiYXNlNjQiKSksITEpOnIuZGVmYXVsdFZpc2l0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sSSkpfWZ1bmN0aW9uIHRlKEEpe3JldHVybiBCLm1hdGNoQWxsKC9cXHcrfFxcWyhcXHcqKV0vZyxBKS5tYXAoST0+SVswXT09PSJbXSI/IiI6SVsxXXx8SVswXSl9ZnVuY3Rpb24gZWUoQSl7bGV0IEk9e30sdD1PYmplY3Qua2V5cyhBKSxlLGc9dC5sZW5ndGgscjtmb3IoZT0wO2U8ZztlKyspcj10W2VdLElbcl09QVtyXTtyZXR1cm4gSX1mdW5jdGlvbiBnZShBKXtmdW5jdGlvbiBJKHQsZSxnLHIpe2xldCBpPXRbcisrXSxzPU51bWJlci5pc0Zpbml0ZSgraSksYT1yPj10Lmxlbmd0aDtyZXR1cm4gaT0haSYmQi5pc0FycmF5KGcpP2cubGVuZ3RoOmksYT8oQi5oYXNPd25Qcm9wKGcsaSk/Z1tpXT1bZ1tpXSxlXTpnW2ldPWUsIXMpOigoIWdbaV18fCFCLmlzT2JqZWN0KGdbaV0pKSYmKGdbaV09W10pLEkodCxlLGdbaV0scikmJkIuaXNBcnJheShnW2ldKSYmKGdbaV09ZWUoZ1tpXSkpLCFzKX1pZihCLmlzRm9ybURhdGEoQSkmJkIuaXNGdW5jdGlvbihBLmVudHJpZXMpKXtsZXQgdD17fTtyZXR1cm4gQi5mb3JFYWNoRW50cnkoQSwoZSxnKT0+e0kodGUoZSksZyx0LDApfSksdH1yZXR1cm4gbnVsbH12YXIgY0E9Z2U7ZnVuY3Rpb24gcmUoQSxJLHQpe2lmKEIuaXNTdHJpbmcoQSkpdHJ5e3JldHVybihJfHxKU09OLnBhcnNlKShBKSxCLnRyaW0oQSl9Y2F0Y2goZSl7aWYoZS5uYW1lIT09IlN5bnRheEVycm9yIil0aHJvdyBlfXJldHVybih0fHxKU09OLnN0cmluZ2lmeSkoQSl9dmFyIEhBPXt0cmFuc2l0aW9uYWw6YUEsYWRhcHRlcjpbInhociIsImh0dHAiXSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbihJLHQpe2xldCBlPXQuZ2V0Q29udGVudFR5cGUoKXx8IiIsZz1lLmluZGV4T2YoImFwcGxpY2F0aW9uL2pzb24iKT4tMSxyPUIuaXNPYmplY3QoSSk7aWYociYmQi5pc0hUTUxGb3JtKEkpJiYoST1uZXcgRm9ybURhdGEoSSkpLEIuaXNGb3JtRGF0YShJKSlyZXR1cm4gZyYmZz9KU09OLnN0cmluZ2lmeShjQShJKSk6STtpZihCLmlzQXJyYXlCdWZmZXIoSSl8fEIuaXNCdWZmZXIoSSl8fEIuaXNTdHJlYW0oSSl8fEIuaXNGaWxlKEkpfHxCLmlzQmxvYihJKSlyZXR1cm4gSTtpZihCLmlzQXJyYXlCdWZmZXJWaWV3KEkpKXJldHVybiBJLmJ1ZmZlcjtpZihCLmlzVVJMU2VhcmNoUGFyYW1zKEkpKXJldHVybiB0LnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIsITEpLEkudG9TdHJpbmcoKTtsZXQgcztpZihyKXtpZihlLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpPi0xKXJldHVybiBKQShJLHRoaXMuZm9ybVNlcmlhbGl6ZXIpLnRvU3RyaW5nKCk7aWYoKHM9Qi5pc0ZpbGVMaXN0KEkpKXx8ZS5pbmRleE9mKCJtdWx0aXBhcnQvZm9ybS1kYXRhIik+LTEpe2xldCBhPXRoaXMuZW52JiZ0aGlzLmVudi5Gb3JtRGF0YTtyZXR1cm4gTChzP3siZmlsZXNbXSI6SX06SSxhJiZuZXcgYSx0aGlzLmZvcm1TZXJpYWxpemVyKX19cmV0dXJuIHJ8fGc/KHQuc2V0Q29udGVudFR5cGUoImFwcGxpY2F0aW9uL2pzb24iLCExKSxyZShJKSk6SX1dLHRyYW5zZm9ybVJlc3BvbnNlOltmdW5jdGlvbihJKXtsZXQgdD10aGlzLnRyYW5zaXRpb25hbHx8SEEudHJhbnNpdGlvbmFsLGU9dCYmdC5mb3JjZWRKU09OUGFyc2luZyxnPXRoaXMucmVzcG9uc2VUeXBlPT09Impzb24iO2lmKEkmJkIuaXNTdHJpbmcoSSkmJihlJiYhdGhpcy5yZXNwb25zZVR5cGV8fGcpKXtsZXQgaT0hKHQmJnQuc2lsZW50SlNPTlBhcnNpbmcpJiZnO3RyeXtyZXR1cm4gSlNPTi5wYXJzZShJKX1jYXRjaChzKXtpZihpKXRocm93IHMubmFtZT09PSJTeW50YXhFcnJvciI/bC5mcm9tKHMsbC5FUlJfQkFEX1JFU1BPTlNFLHRoaXMsbnVsbCx0aGlzLnJlc3BvbnNlKTpzfX1yZXR1cm4gSX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSxtYXhCb2R5TGVuZ3RoOi0xLGVudjp7Rm9ybURhdGE6dy5jbGFzc2VzLkZvcm1EYXRhLEJsb2I6dy5jbGFzc2VzLkJsb2J9LHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKEkpe3JldHVybiBJPj0yMDAmJkk8MzAwfSxoZWFkZXJzOntjb21tb246e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIiwiQ29udGVudC1UeXBlIjp2b2lkIDB9fX07Qi5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCJdLEE9PntIQS5oZWFkZXJzW0FdPXt9fSk7dmFyIE89SEE7dmFyIGllPUIudG9PYmplY3RTZXQoWyJhZ2UiLCJhdXRob3JpemF0aW9uIiwiY29udGVudC1sZW5ndGgiLCJjb250ZW50LXR5cGUiLCJldGFnIiwiZXhwaXJlcyIsImZyb20iLCJob3N0IiwiaWYtbW9kaWZpZWQtc2luY2UiLCJpZi11bm1vZGlmaWVkLXNpbmNlIiwibGFzdC1tb2RpZmllZCIsImxvY2F0aW9uIiwibWF4LWZvcndhcmRzIiwicHJveHktYXV0aG9yaXphdGlvbiIsInJlZmVyZXIiLCJyZXRyeS1hZnRlciIsInVzZXItYWdlbnQiXSksU0k9QT0+e2xldCBJPXt9LHQsZSxnO3JldHVybiBBJiZBLnNwbGl0KGAlMEFgKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe2c9aS5pbmRleE9mKCI6IiksdD1pLnN1YnN0cmluZygwLGcpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLGU9aS5zdWJzdHJpbmcoZysxKS50cmltKCksISghdHx8SVt0XSYmaWVbdF0pJiYodD09PSJzZXQtY29va2llIj9JW3RdP0lbdF0ucHVzaChlKTpJW3RdPVtlXTpJW3RdPUlbdF0/SVt0XSsiLCAiK2U6ZSl9KSxJfTt2YXIgRkk9U3ltYm9sKCJpbnRlcm5hbHMiKTtmdW5jdGlvbiB6KEEpe3JldHVybiBBJiZTdHJpbmcoQSkudHJpbSgpLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gZkEoQSl7cmV0dXJuIEE9PT0hMXx8QT09bnVsbD9BOkIuaXNBcnJheShBKT9BLm1hcChmQSk6U3RyaW5nKEEpfWZ1bmN0aW9uIG9lKEEpe2xldCBJPU9iamVjdC5jcmVhdGUobnVsbCksdD0vKFteXFxzLDs9XSspXFxzKig/Oj1cXHMqKFteLDtdKykpPy9nLGU7Zm9yKDtlPXQuZXhlYyhBKTspSVtlWzFdXT1lWzJdO3JldHVybiBJfXZhciBCZT1BPT4vXlstX2EtekEtWjAtOV5gfH4sISUyMyQlJlwnKisuXSskLy50ZXN0KEEudHJpbSgpKTtmdW5jdGlvbiBZQShBLEksdCxlLGcpe2lmKEIuaXNGdW5jdGlvbihlKSlyZXR1cm4gZS5jYWxsKHRoaXMsSSx0KTtpZihnJiYoST10KSwhIUIuaXNTdHJpbmcoSSkpe2lmKEIuaXNTdHJpbmcoZSkpcmV0dXJuIEkuaW5kZXhPZihlKSE9PS0xO2lmKEIuaXNSZWdFeHAoZSkpcmV0dXJuIGUudGVzdChJKX19ZnVuY3Rpb24gQ2UoQSl7cmV0dXJuIEEudHJpbSgpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvKFthLXpcXGRdKShcXHcqKS9nLChJLHQsZSk9PnQudG9VcHBlckNhc2UoKStlKX1mdW5jdGlvbiBzZShBLEkpe2xldCB0PUIudG9DYW1lbENhc2UoIiAiK0kpO1siZ2V0Iiwic2V0IiwiaGFzIl0uZm9yRWFjaChlPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KEEsZSt0LHt2YWx1ZTpmdW5jdGlvbihnLHIsaSl7cmV0dXJuIHRoaXNbZV0uY2FsbCh0aGlzLEksZyxyLGkpfSxjb25maWd1cmFibGU6ITB9KX0pfXZhciBUPWNsYXNze2NvbnN0cnVjdG9yKEkpe0kmJnRoaXMuc2V0KEkpfXNldChJLHQsZSl7bGV0IGc9dGhpcztmdW5jdGlvbiByKHMsYSxuKXtsZXQgQz16KGEpO2lmKCFDKXRocm93IG5ldyBFcnJvcigiaGVhZGVyIG5hbWUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmciKTtsZXQgbz1CLmZpbmRLZXkoZyxDKTsoIW98fGdbb109PT12b2lkIDB8fG49PT0hMHx8bj09PXZvaWQgMCYmZ1tvXSE9PSExKSYmKGdbb3x8YV09ZkEocykpfWxldCBpPShzLGEpPT5CLmZvckVhY2gocywobixDKT0+cihuLEMsYSkpO3JldHVybiBCLmlzUGxhaW5PYmplY3QoSSl8fEkgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yP2koSSx0KTpCLmlzU3RyaW5nKEkpJiYoST1JLnRyaW0oKSkmJiFCZShJKT9pKFNJKEkpLHQpOkkhPW51bGwmJnIodCxJLGUpLHRoaXN9Z2V0KEksdCl7aWYoST16KEkpLEkpe2xldCBlPUIuZmluZEtleSh0aGlzLEkpO2lmKGUpe2xldCBnPXRoaXNbZV07aWYoIXQpcmV0dXJuIGc7aWYodD09PSEwKXJldHVybiBvZShnKTtpZihCLmlzRnVuY3Rpb24odCkpcmV0dXJuIHQuY2FsbCh0aGlzLGcsZSk7aWYoQi5pc1JlZ0V4cCh0KSlyZXR1cm4gdC5leGVjKGcpO3Rocm93IG5ldyBUeXBlRXJyb3IoInBhcnNlciBtdXN0IGJlIGJvb2xlYW58cmVnZXhwfGZ1bmN0aW9uIil9fX1oYXMoSSx0KXtpZihJPXooSSksSSl7bGV0IGU9Qi5maW5kS2V5KHRoaXMsSSk7cmV0dXJuISEoZSYmdGhpc1tlXSE9PXZvaWQgMCYmKCF0fHxZQSh0aGlzLHRoaXNbZV0sZSx0KSkpfXJldHVybiExfWRlbGV0ZShJLHQpe2xldCBlPXRoaXMsZz0hMTtmdW5jdGlvbiByKGkpe2lmKGk9eihpKSxpKXtsZXQgcz1CLmZpbmRLZXkoZSxpKTtzJiYoIXR8fFlBKGUsZVtzXSxzLHQpKSYmKGRlbGV0ZSBlW3NdLGc9ITApfX1yZXR1cm4gQi5pc0FycmF5KEkpP0kuZm9yRWFjaChyKTpyKEkpLGd9Y2xlYXIoSSl7bGV0IHQ9T2JqZWN0LmtleXModGhpcyksZT10Lmxlbmd0aCxnPSExO2Zvcig7ZS0tOyl7bGV0IHI9dFtlXTsoIUl8fFlBKHRoaXMsdGhpc1tyXSxyLEksITApKSYmKGRlbGV0ZSB0aGlzW3JdLGc9ITApfXJldHVybiBnfW5vcm1hbGl6ZShJKXtsZXQgdD10aGlzLGU9e307cmV0dXJuIEIuZm9yRWFjaCh0aGlzLChnLHIpPT57bGV0IGk9Qi5maW5kS2V5KGUscik7aWYoaSl7dFtpXT1mQShnKSxkZWxldGUgdFtyXTtyZXR1cm59bGV0IHM9ST9DZShyKTpTdHJpbmcocikudHJpbSgpO3MhPT1yJiZkZWxldGUgdFtyXSx0W3NdPWZBKGcpLGVbc109ITB9KSx0aGlzfWNvbmNhdCguLi5JKXtyZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5jb25jYXQodGhpcywuLi5JKX10b0pTT04oSSl7bGV0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gQi5mb3JFYWNoKHRoaXMsKGUsZyk9PntlIT1udWxsJiZlIT09ITEmJih0W2ddPUkmJkIuaXNBcnJheShlKT9lLmpvaW4oIiwgIik6ZSl9KSx0fVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMudG9KU09OKCkpW1N5bWJvbC5pdGVyYXRvcl0oKX10b1N0cmluZygpe3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKS5tYXAoKFtJLHRdKT0+SSsiOiAiK3QpLmpvaW4oYCUwQWApfWdldFtTeW1ib2wudG9TdHJpbmdUYWddKCl7cmV0dXJuIkF4aW9zSGVhZGVycyJ9c3RhdGljIGZyb20oSSl7cmV0dXJuIEkgaW5zdGFuY2VvZiB0aGlzP0k6bmV3IHRoaXMoSSl9c3RhdGljIGNvbmNhdChJLC4uLnQpe2xldCBlPW5ldyB0aGlzKEkpO3JldHVybiB0LmZvckVhY2goZz0+ZS5zZXQoZykpLGV9c3RhdGljIGFjY2Vzc29yKEkpe2xldCBlPSh0aGlzW0ZJXT10aGlzW0ZJXT17YWNjZXNzb3JzOnt9fSkuYWNjZXNzb3JzLGc9dGhpcy5wcm90b3R5cGU7ZnVuY3Rpb24gcihpKXtsZXQgcz16KGkpO2Vbc118fChzZShnLGkpLGVbc109ITApfXJldHVybiBCLmlzQXJyYXkoSSk/SS5mb3JFYWNoKHIpOnIoSSksdGhpc319O1QuYWNjZXNzb3IoWyJDb250ZW50LVR5cGUiLCJDb250ZW50LUxlbmd0aCIsIkFjY2VwdCIsIkFjY2VwdC1FbmNvZGluZyIsIlVzZXItQWdlbnQiLCJBdXRob3JpemF0aW9uIl0pO0IucmVkdWNlRGVzY3JpcHRvcnMoVC5wcm90b3R5cGUsKHt2YWx1ZTpBfSxJKT0+e2xldCB0PUlbMF0udG9VcHBlckNhc2UoKStJLnNsaWNlKDEpO3JldHVybntnZXQ6KCk9PkEsc2V0KGUpe3RoaXNbdF09ZX19fSk7Qi5mcmVlemVNZXRob2RzKFQpO3ZhciBtPVQ7ZnVuY3Rpb24gXyhBLEkpe2xldCB0PXRoaXN8fE8sZT1JfHx0LGc9bS5mcm9tKGUuaGVhZGVycykscj1lLmRhdGE7cmV0dXJuIEIuZm9yRWFjaChBLGZ1bmN0aW9uKHMpe3I9cy5jYWxsKHQscixnLm5vcm1hbGl6ZSgpLEk/SS5zdGF0dXM6dm9pZCAwKX0pLGcubm9ybWFsaXplKCkscn1mdW5jdGlvbiB2KEEpe3JldHVybiEhKEEmJkEuX19DQU5DRUxfXyl9ZnVuY3Rpb24gUkkoQSxJLHQpe2wuY2FsbCh0aGlzLEE/PyJjYW5jZWxlZCIsbC5FUlJfQ0FOQ0VMRUQsSSx0KSx0aGlzLm5hbWU9IkNhbmNlbGVkRXJyb3IifUIuaW5oZXJpdHMoUkksbCx7X19DQU5DRUxfXzohMH0pO3ZhciBKPVJJO2Z1bmN0aW9uIGJBKEEsSSx0KXtsZXQgZT10LmNvbmZpZy52YWxpZGF0ZVN0YXR1czshdC5zdGF0dXN8fCFlfHxlKHQuc3RhdHVzKT9BKHQpOkkobmV3IGwoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIit0LnN0YXR1cyxbbC5FUlJfQkFEX1JFUVVFU1QsbC5FUlJfQkFEX1JFU1BPTlNFXVtNYXRoLmZsb29yKHQuc3RhdHVzLzEwMCktNF0sdC5jb25maWcsdC5yZXF1ZXN0LHQpKX12YXIgTkk9dy5oYXNTdGFuZGFyZEJyb3dzZXJFbnY/e3dyaXRlKEEsSSx0LGUsZyxyKXtsZXQgaT1bQSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KEkpXTtCLmlzTnVtYmVyKHQpJiZpLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZSh0KS50b0dNVFN0cmluZygpKSxCLmlzU3RyaW5nKGUpJiZpLnB1c2goInBhdGg9IitlKSxCLmlzU3RyaW5nKGcpJiZpLnB1c2goImRvbWFpbj0iK2cpLHI9PT0hMCYmaS5wdXNoKCJzZWN1cmUiKSxkb2N1bWVudC5jb29raWU9aS5qb2luKCI7ICIpfSxyZWFkKEEpe2xldCBJPWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCIoXnw7XFxcXHMqKSgiK0ErIik9KFteO10qKSIpKTtyZXR1cm4gST9kZWNvZGVVUklDb21wb25lbnQoSVszXSk6bnVsbH0scmVtb3ZlKEEpe3RoaXMud3JpdGUoQSwiIixEYXRlLm5vdygpLTg2NGU1KX19Ont3cml0ZSgpe30scmVhZCgpe3JldHVybiBudWxsfSxyZW1vdmUoKXt9fTtmdW5jdGlvbiBNQShBKXtyZXR1cm4vXihbYS16XVthLXpcXGQrXFwtLl0qOik/XFwvXFwvL2kudGVzdChBKX1mdW5jdGlvbiBxQShBLEkpe3JldHVybiBJP0EucmVwbGFjZSgvXFwvKyQvLCIiKSsiLyIrSS5yZXBsYWNlKC9eXFwvKy8sIiIpOkF9ZnVuY3Rpb24gJChBLEkpe3JldHVybiBBJiYhTUEoSSk/cUEoQSxJKTpJfXZhciBVST13Lmhhc1N0YW5kYXJkQnJvd3NlckVudj9mdW5jdGlvbigpe2xldCBJPS8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIiksZTtmdW5jdGlvbiBnKHIpe2xldCBpPXI7cmV0dXJuIEkmJih0LnNldEF0dHJpYnV0ZSgiaHJlZiIsaSksaT10LmhyZWYpLHQuc2V0QXR0cmlidXRlKCJocmVmIixpKSx7aHJlZjp0LmhyZWYscHJvdG9jb2w6dC5wcm90b2NvbD90LnByb3RvY29sLnJlcGxhY2UoLzokLywiIik6IiIsaG9zdDp0Lmhvc3Qsc2VhcmNoOnQuc2VhcmNoP3Quc2VhcmNoLnJlcGxhY2UoL15cXD8vLCIiKToiIixoYXNoOnQuaGFzaD90Lmhhc2gucmVwbGFjZSgvXiUyMy8sIiIpOiIiLGhvc3RuYW1lOnQuaG9zdG5hbWUscG9ydDp0LnBvcnQscGF0aG5hbWU6dC5wYXRobmFtZS5jaGFyQXQoMCk9PT0iLyI/dC5wYXRobmFtZToiLyIrdC5wYXRobmFtZX19cmV0dXJuIGU9Zyh3aW5kb3cubG9jYXRpb24uaHJlZiksZnVuY3Rpb24oaSl7bGV0IHM9Qi5pc1N0cmluZyhpKT9nKGkpOmk7cmV0dXJuIHMucHJvdG9jb2w9PT1lLnByb3RvY29sJiZzLmhvc3Q9PT1lLmhvc3R9fSgpOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuITB9fSgpO2Z1bmN0aW9uIEtBKEEpe2xldCBJPS9eKFstK1xcd117MSwyNX0pKDo/XFwvXFwvfDopLy5leGVjKEEpO3JldHVybiBJJiZJWzFdfHwiIn1mdW5jdGlvbiBRZShBLEkpe0E9QXx8MTA7bGV0IHQ9bmV3IEFycmF5KEEpLGU9bmV3IEFycmF5KEEpLGc9MCxyPTAsaTtyZXR1cm4gST1JIT09dm9pZCAwP0k6MWUzLGZ1bmN0aW9uKGEpe2xldCBuPURhdGUubm93KCksQz1lW3JdO2l8fChpPW4pLHRbZ109YSxlW2ddPW47bGV0IG89cixmPTA7Zm9yKDtvIT09ZzspZis9dFtvKytdLG89byVBO2lmKGc9KGcrMSklQSxnPT09ciYmKHI9KHIrMSklQSksbi1pPEkpcmV0dXJuO2xldCBRPUMmJm4tQztyZXR1cm4gUT9NYXRoLnJvdW5kKGYqMWUzL1EpOnZvaWQgMH19dmFyIEdJPVFlO2Z1bmN0aW9uIGtJKEEsSSl7bGV0IHQ9MCxlPUdJKDUwLDI1MCk7cmV0dXJuIGc9PntsZXQgcj1nLmxvYWRlZCxpPWcubGVuZ3RoQ29tcHV0YWJsZT9nLnRvdGFsOnZvaWQgMCxzPXItdCxhPWUocyksbj1yPD1pO3Q9cjtsZXQgQz17bG9hZGVkOnIsdG90YWw6aSxwcm9ncmVzczppP3IvaTp2b2lkIDAsYnl0ZXM6cyxyYXRlOmF8fHZvaWQgMCxlc3RpbWF0ZWQ6YSYmaSYmbj8oaS1yKS9hOnZvaWQgMCxldmVudDpnfTtDW0k/ImRvd25sb2FkIjoidXBsb2FkIl09ITAsQShDKX19dmFyIG5lPXR5cGVvZiBYTUxIdHRwUmVxdWVzdDwidSIsTEk9bmUmJmZ1bmN0aW9uKEEpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0LGUpe2xldCBnPUEuZGF0YSxyPW0uZnJvbShBLmhlYWRlcnMpLm5vcm1hbGl6ZSgpLHtyZXNwb25zZVR5cGU6aSx3aXRoWFNSRlRva2VuOnN9PUEsYTtmdW5jdGlvbiBuKCl7QS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi51bnN1YnNjcmliZShhKSxBLnNpZ25hbCYmQS5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGEpfWxldCBDO2lmKEIuaXNGb3JtRGF0YShnKSl7aWYody5oYXNTdGFuZGFyZEJyb3dzZXJFbnZ8fHcuaGFzU3RhbmRhcmRCcm93c2VyV2ViV29ya2VyRW52KXIuc2V0Q29udGVudFR5cGUoITEpO2Vsc2UgaWYoKEM9ci5nZXRDb250ZW50VHlwZSgpKSE9PSExKXtsZXRbYywuLi51XT1DP0Muc3BsaXQoIjsiKS5tYXAoZD0+ZC50cmltKCkpLmZpbHRlcihCb29sZWFuKTpbXTtyLnNldENvbnRlbnRUeXBlKFtjfHwibXVsdGlwYXJ0L2Zvcm0tZGF0YSIsLi4udV0uam9pbigiOyAiKSl9fWxldCBvPW5ldyBYTUxIdHRwUmVxdWVzdDtpZihBLmF1dGgpe2xldCBjPUEuYXV0aC51c2VybmFtZXx8IiIsdT1BLmF1dGgucGFzc3dvcmQ/dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEEuYXV0aC5wYXNzd29yZCkpOiIiO3Iuc2V0KCJBdXRob3JpemF0aW9uIiwiQmFzaWMgIitidG9hKGMrIjoiK3UpKX1sZXQgZj0kKEEuYmFzZVVSTCxBLnVybCk7by5vcGVuKEEubWV0aG9kLnRvVXBwZXJDYXNlKCksWChmLEEucGFyYW1zLEEucGFyYW1zU2VyaWFsaXplciksITApLG8udGltZW91dD1BLnRpbWVvdXQ7ZnVuY3Rpb24gUSgpe2lmKCFvKXJldHVybjtsZXQgYz1tLmZyb20oImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiBvJiZvLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSxkPXtkYXRhOiFpfHxpPT09InRleHQifHxpPT09Impzb24iP28ucmVzcG9uc2VUZXh0Om8ucmVzcG9uc2Usc3RhdHVzOm8uc3RhdHVzLHN0YXR1c1RleHQ6by5zdGF0dXNUZXh0LGhlYWRlcnM6Yyxjb25maWc6QSxyZXF1ZXN0Om99O2JBKGZ1bmN0aW9uKE4pe3QoTiksbigpfSxmdW5jdGlvbihOKXtlKE4pLG4oKX0sZCksbz1udWxsfWlmKCJvbmxvYWRlbmQiaW4gbz9vLm9ubG9hZGVuZD1ROm8ub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7IW98fG8ucmVhZHlTdGF0ZSE9PTR8fG8uc3RhdHVzPT09MCYmIShvLnJlc3BvbnNlVVJMJiZvLnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6Iik9PT0wKXx8c2V0VGltZW91dChRKX0sby5vbmFib3J0PWZ1bmN0aW9uKCl7byYmKGUobmV3IGwoIlJlcXVlc3QgYWJvcnRlZCIsbC5FQ09OTkFCT1JURUQsQSxvKSksbz1udWxsKX0sby5vbmVycm9yPWZ1bmN0aW9uKCl7ZShuZXcgbCgiTmV0d29yayBFcnJvciIsbC5FUlJfTkVUV09SSyxBLG8pKSxvPW51bGx9LG8ub250aW1lb3V0PWZ1bmN0aW9uKCl7bGV0IHU9QS50aW1lb3V0PyJ0aW1lb3V0IG9mICIrQS50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiLGQ9QS50cmFuc2l0aW9uYWx8fGFBO0EudGltZW91dEVycm9yTWVzc2FnZSYmKHU9QS50aW1lb3V0RXJyb3JNZXNzYWdlKSxlKG5ldyBsKHUsZC5jbGFyaWZ5VGltZW91dEVycm9yP2wuRVRJTUVET1VUOmwuRUNPTk5BQk9SVEVELEEsbykpLG89bnVsbH0sdy5oYXNTdGFuZGFyZEJyb3dzZXJFbnYmJihzJiZCLmlzRnVuY3Rpb24ocykmJihzPXMoQSkpLHN8fHMhPT0hMSYmVUkoZikpKXtsZXQgYz1BLnhzcmZIZWFkZXJOYW1lJiZBLnhzcmZDb29raWVOYW1lJiZOSS5yZWFkKEEueHNyZkNvb2tpZU5hbWUpO2MmJnIuc2V0KEEueHNyZkhlYWRlck5hbWUsYyl9Zz09PXZvaWQgMCYmci5zZXRDb250ZW50VHlwZShudWxsKSwic2V0UmVxdWVzdEhlYWRlciJpbiBvJiZCLmZvckVhY2goci50b0pTT04oKSxmdW5jdGlvbih1LGQpe28uc2V0UmVxdWVzdEhlYWRlcihkLHUpfSksQi5pc1VuZGVmaW5lZChBLndpdGhDcmVkZW50aWFscyl8fChvLndpdGhDcmVkZW50aWFscz0hIUEud2l0aENyZWRlbnRpYWxzKSxpJiZpIT09Impzb24iJiYoby5yZXNwb25zZVR5cGU9QS5yZXNwb25zZVR5cGUpLHR5cGVvZiBBLm9uRG93bmxvYWRQcm9ncmVzcz09ImZ1bmN0aW9uIiYmby5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsa0koQS5vbkRvd25sb2FkUHJvZ3Jlc3MsITApKSx0eXBlb2YgQS5vblVwbG9hZFByb2dyZXNzPT0iZnVuY3Rpb24iJiZvLnVwbG9hZCYmby51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGtJKEEub25VcGxvYWRQcm9ncmVzcykpLChBLmNhbmNlbFRva2VufHxBLnNpZ25hbCkmJihhPWM9PntvJiYoZSghY3x8Yy50eXBlP25ldyBKKG51bGwsQSxvKTpjKSxvLmFib3J0KCksbz1udWxsKX0sQS5jYW5jZWxUb2tlbiYmQS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUoYSksQS5zaWduYWwmJihBLnNpZ25hbC5hYm9ydGVkP2EoKTpBLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsYSkpKTtsZXQgRT1LQShmKTtpZihFJiZ3LnByb3RvY29scy5pbmRleE9mKEUpPT09LTEpe2UobmV3IGwoIlVuc3VwcG9ydGVkIHByb3RvY29sICIrRSsiOiIsbC5FUlJfQkFEX1JFUVVFU1QsQSkpO3JldHVybn1vLnNlbmQoZ3x8bnVsbCl9KX07dmFyIE9BPXtodHRwOm5BLHhocjpMSX07Qi5mb3JFYWNoKE9BLChBLEkpPT57aWYoQSl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLCJuYW1lIix7dmFsdWU6SX0pfWNhdGNoe31PYmplY3QuZGVmaW5lUHJvcGVydHkoQSwiYWRhcHRlck5hbWUiLHt2YWx1ZTpJfSl9fSk7dmFyIEpJPUE9PmAtICR7QX1gLEVlPUE9PkIuaXNGdW5jdGlvbihBKXx8QT09PW51bGx8fEE9PT0hMSxsQT17Z2V0QWRhcHRlcjpBPT57QT1CLmlzQXJyYXkoQSk/QTpbQV07bGV0e2xlbmd0aDpJfT1BLHQsZSxnPXt9O2ZvcihsZXQgcj0wO3I8STtyKyspe3Q9QVtyXTtsZXQgaTtpZihlPXQsIUVlKHQpJiYoZT1PQVsoaT1TdHJpbmcodCkpLnRvTG93ZXJDYXNlKCldLGU9PT12b2lkIDApKXRocm93IG5ldyBsKGBVbmtub3duIGFkYXB0ZXIgXCcke2l9XCdgKTtpZihlKWJyZWFrO2dbaXx8IiUyMyIrcl09ZX1pZighZSl7bGV0IHI9T2JqZWN0LmVudHJpZXMoZykubWFwKChbcyxhXSk9PmBhZGFwdGVyICR7c30gYCsoYT09PSExPyJpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBlbnZpcm9ubWVudCI6ImlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGJ1aWxkIikpLGk9ST9yLmxlbmd0aD4xP2BzaW5jZSA6JTBBYCtyLm1hcChKSSkuam9pbihgJTBBYCk6IiAiK0pJKHJbMF0pOiJhcyBubyBhZGFwdGVyIHNwZWNpZmllZCI7dGhyb3cgbmV3IGwoIlRoZXJlIGlzIG5vIHN1aXRhYmxlIGFkYXB0ZXIgdG8gZGlzcGF0Y2ggdGhlIHJlcXVlc3QgIitpLCJFUlJfTk9UX1NVUFBPUlQiKX1yZXR1cm4gZX0sYWRhcHRlcnM6T0F9O2Z1bmN0aW9uIFRBKEEpe2lmKEEuY2FuY2VsVG9rZW4mJkEuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpLEEuc2lnbmFsJiZBLnNpZ25hbC5hYm9ydGVkKXRocm93IG5ldyBKKG51bGwsQSl9ZnVuY3Rpb24gREEoQSl7cmV0dXJuIFRBKEEpLEEuaGVhZGVycz1tLmZyb20oQS5oZWFkZXJzKSxBLmRhdGE9Xy5jYWxsKEEsQS50cmFuc2Zvcm1SZXF1ZXN0KSxbInBvc3QiLCJwdXQiLCJwYXRjaCJdLmluZGV4T2YoQS5tZXRob2QpIT09LTEmJkEuaGVhZGVycy5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiwhMSksbEEuZ2V0QWRhcHRlcihBLmFkYXB0ZXJ8fE8uYWRhcHRlcikoQSkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gVEEoQSksZS5kYXRhPV8uY2FsbChBLEEudHJhbnNmb3JtUmVzcG9uc2UsZSksZS5oZWFkZXJzPW0uZnJvbShlLmhlYWRlcnMpLGV9LGZ1bmN0aW9uKGUpe3JldHVybiB2KGUpfHwoVEEoQSksZSYmZS5yZXNwb25zZSYmKGUucmVzcG9uc2UuZGF0YT1fLmNhbGwoQSxBLnRyYW5zZm9ybVJlc3BvbnNlLGUucmVzcG9uc2UpLGUucmVzcG9uc2UuaGVhZGVycz1tLmZyb20oZS5yZXNwb25zZS5oZWFkZXJzKSkpLFByb21pc2UucmVqZWN0KGUpfSl9dmFyIEhJPUE9PkEgaW5zdGFuY2VvZiBtP0EudG9KU09OKCk6QTtmdW5jdGlvbiBHKEEsSSl7ST1JfHx7fTtsZXQgdD17fTtmdW5jdGlvbiBlKG4sQyxvKXtyZXR1cm4gQi5pc1BsYWluT2JqZWN0KG4pJiZCLmlzUGxhaW5PYmplY3QoQyk/Qi5tZXJnZS5jYWxsKHtjYXNlbGVzczpvfSxuLEMpOkIuaXNQbGFpbk9iamVjdChDKT9CLm1lcmdlKHt9LEMpOkIuaXNBcnJheShDKT9DLnNsaWNlKCk6Q31mdW5jdGlvbiBnKG4sQyxvKXtpZihCLmlzVW5kZWZpbmVkKEMpKXtpZighQi5pc1VuZGVmaW5lZChuKSlyZXR1cm4gZSh2b2lkIDAsbixvKX1lbHNlIHJldHVybiBlKG4sQyxvKX1mdW5jdGlvbiByKG4sQyl7aWYoIUIuaXNVbmRlZmluZWQoQykpcmV0dXJuIGUodm9pZCAwLEMpfWZ1bmN0aW9uIGkobixDKXtpZihCLmlzVW5kZWZpbmVkKEMpKXtpZighQi5pc1VuZGVmaW5lZChuKSlyZXR1cm4gZSh2b2lkIDAsbil9ZWxzZSByZXR1cm4gZSh2b2lkIDAsQyl9ZnVuY3Rpb24gcyhuLEMsbyl7aWYobyBpbiBJKXJldHVybiBlKG4sQyk7aWYobyBpbiBBKXJldHVybiBlKHZvaWQgMCxuKX1sZXQgYT17dXJsOnIsbWV0aG9kOnIsZGF0YTpyLGJhc2VVUkw6aSx0cmFuc2Zvcm1SZXF1ZXN0OmksdHJhbnNmb3JtUmVzcG9uc2U6aSxwYXJhbXNTZXJpYWxpemVyOmksdGltZW91dDppLHRpbWVvdXRNZXNzYWdlOmksd2l0aENyZWRlbnRpYWxzOmksd2l0aFhTUkZUb2tlbjppLGFkYXB0ZXI6aSxyZXNwb25zZVR5cGU6aSx4c3JmQ29va2llTmFtZTppLHhzcmZIZWFkZXJOYW1lOmksb25VcGxvYWRQcm9ncmVzczppLG9uRG93bmxvYWRQcm9ncmVzczppLGRlY29tcHJlc3M6aSxtYXhDb250ZW50TGVuZ3RoOmksbWF4Qm9keUxlbmd0aDppLGJlZm9yZVJlZGlyZWN0OmksdHJhbnNwb3J0OmksaHR0cEFnZW50OmksaHR0cHNBZ2VudDppLGNhbmNlbFRva2VuOmksc29ja2V0UGF0aDppLHJlc3BvbnNlRW5jb2Rpbmc6aSx2YWxpZGF0ZVN0YXR1czpzLGhlYWRlcnM6KG4sQyk9PmcoSEkobiksSEkoQyksITApfTtyZXR1cm4gQi5mb3JFYWNoKE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sQSxJKSksZnVuY3Rpb24oQyl7bGV0IG89YVtDXXx8ZyxmPW8oQVtDXSxJW0NdLEMpO0IuaXNVbmRlZmluZWQoZikmJm8hPT1zfHwodFtDXT1mKX0pLHR9dmFyIHVBPSIxLjYuMiI7dmFyIHhBPXt9O1sib2JqZWN0IiwiYm9vbGVhbiIsIm51bWJlciIsImZ1bmN0aW9uIiwic3RyaW5nIiwic3ltYm9sIl0uZm9yRWFjaCgoQSxJKT0+e3hBW0FdPWZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09PUF8fCJhIisoSTwxPyJuICI6IiAiKStBfX0pO3ZhciBZST17fTt4QS50cmFuc2l0aW9uYWw9ZnVuY3Rpb24oSSx0LGUpe2Z1bmN0aW9uIGcocixpKXtyZXR1cm4iW0F4aW9zIHYiK3VBKyJdIFRyYW5zaXRpb25hbCBvcHRpb24gXCciK3IrIlwnIitpKyhlPyIuICIrZToiIil9cmV0dXJuKHIsaSxzKT0+e2lmKEk9PT0hMSl0aHJvdyBuZXcgbChnKGksIiBoYXMgYmVlbiByZW1vdmVkIisodD8iIGluICIrdDoiIikpLGwuRVJSX0RFUFJFQ0FURUQpO3JldHVybiB0JiYhWUlbaV0mJihZSVtpXT0hMCxjb25zb2xlLndhcm4oZyhpLCIgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2Iit0KyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLEk/SShyLGkscyk6ITB9fTtmdW5jdGlvbiBhZShBLEksdCl7aWYodHlwZW9mIEEhPSJvYmplY3QiKXRocm93IG5ldyBsKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0IixsLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtsZXQgZT1PYmplY3Qua2V5cyhBKSxnPWUubGVuZ3RoO2Zvcig7Zy0tID4wOyl7bGV0IHI9ZVtnXSxpPUlbcl07aWYoaSl7bGV0IHM9QVtyXSxhPXM9PT12b2lkIDB8fGkocyxyLEEpO2lmKGEhPT0hMCl0aHJvdyBuZXcgbCgib3B0aW9uICIrcisiIG11c3QgYmUgIithLGwuRVJSX0JBRF9PUFRJT05fVkFMVUUpO2NvbnRpbnVlfWlmKHQhPT0hMCl0aHJvdyBuZXcgbCgiVW5rbm93biBvcHRpb24gIityLGwuRVJSX0JBRF9PUFRJT04pfX12YXIgaEE9e2Fzc2VydE9wdGlvbnM6YWUsdmFsaWRhdG9yczp4QX07dmFyIEg9aEEudmFsaWRhdG9ycyx4PWNsYXNze2NvbnN0cnVjdG9yKEkpe3RoaXMuZGVmYXVsdHM9SSx0aGlzLmludGVyY2VwdG9ycz17cmVxdWVzdDpuZXcga0EscmVzcG9uc2U6bmV3IGtBfX1yZXF1ZXN0KEksdCl7dHlwZW9mIEk9PSJzdHJpbmciPyh0PXR8fHt9LHQudXJsPUkpOnQ9SXx8e30sdD1HKHRoaXMuZGVmYXVsdHMsdCk7bGV0e3RyYW5zaXRpb25hbDplLHBhcmFtc1NlcmlhbGl6ZXI6ZyxoZWFkZXJzOnJ9PXQ7ZSE9PXZvaWQgMCYmaEEuYXNzZXJ0T3B0aW9ucyhlLHtzaWxlbnRKU09OUGFyc2luZzpILnRyYW5zaXRpb25hbChILmJvb2xlYW4pLGZvcmNlZEpTT05QYXJzaW5nOkgudHJhbnNpdGlvbmFsKEguYm9vbGVhbiksY2xhcmlmeVRpbWVvdXRFcnJvcjpILnRyYW5zaXRpb25hbChILmJvb2xlYW4pfSwhMSksZyE9bnVsbCYmKEIuaXNGdW5jdGlvbihnKT90LnBhcmFtc1NlcmlhbGl6ZXI9e3NlcmlhbGl6ZTpnfTpoQS5hc3NlcnRPcHRpb25zKGcse2VuY29kZTpILmZ1bmN0aW9uLHNlcmlhbGl6ZTpILmZ1bmN0aW9ufSwhMCkpLHQubWV0aG9kPSh0Lm1ldGhvZHx8dGhpcy5kZWZhdWx0cy5tZXRob2R8fCJnZXQiKS50b0xvd2VyQ2FzZSgpO2xldCBpPXImJkIubWVyZ2Uoci5jb21tb24sclt0Lm1ldGhvZF0pO3ImJkIuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSxFPT57ZGVsZXRlIHJbRV19KSx0LmhlYWRlcnM9bS5jb25jYXQoaSxyKTtsZXQgcz1bXSxhPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbihjKXt0eXBlb2YgYy5ydW5XaGVuPT0iZnVuY3Rpb24iJiZjLnJ1bldoZW4odCk9PT0hMXx8KGE9YSYmYy5zeW5jaHJvbm91cyxzLnVuc2hpZnQoYy5mdWxmaWxsZWQsYy5yZWplY3RlZCkpfSk7bGV0IG49W107dGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbihjKXtuLnB1c2goYy5mdWxmaWxsZWQsYy5yZWplY3RlZCl9KTtsZXQgQyxvPTAsZjtpZighYSl7bGV0IEU9W0RBLmJpbmQodGhpcyksdm9pZCAwXTtmb3IoRS51bnNoaWZ0LmFwcGx5KEUscyksRS5wdXNoLmFwcGx5KEUsbiksZj1FLmxlbmd0aCxDPVByb21pc2UucmVzb2x2ZSh0KTtvPGY7KUM9Qy50aGVuKEVbbysrXSxFW28rK10pO3JldHVybiBDfWY9cy5sZW5ndGg7bGV0IFE9dDtmb3Iobz0wO288Zjspe2xldCBFPXNbbysrXSxjPXNbbysrXTt0cnl7UT1FKFEpfWNhdGNoKHUpe2MuY2FsbCh0aGlzLHUpO2JyZWFrfX10cnl7Qz1EQS5jYWxsKHRoaXMsUSl9Y2F0Y2goRSl7cmV0dXJuIFByb21pc2UucmVqZWN0KEUpfWZvcihvPTAsZj1uLmxlbmd0aDtvPGY7KUM9Qy50aGVuKG5bbysrXSxuW28rK10pO3JldHVybiBDfWdldFVyaShJKXtJPUcodGhpcy5kZWZhdWx0cyxJKTtsZXQgdD0kKEkuYmFzZVVSTCxJLnVybCk7cmV0dXJuIFgodCxJLnBhcmFtcyxJLnBhcmFtc1NlcmlhbGl6ZXIpfX07Qi5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSxmdW5jdGlvbihJKXt4LnByb3RvdHlwZVtJXT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnJlcXVlc3QoRyhlfHx7fSx7bWV0aG9kOkksdXJsOnQsZGF0YTooZXx8e30pLmRhdGF9KSl9fSk7Qi5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sZnVuY3Rpb24oSSl7ZnVuY3Rpb24gdChlKXtyZXR1cm4gZnVuY3Rpb24ocixpLHMpe3JldHVybiB0aGlzLnJlcXVlc3QoRyhzfHx7fSx7bWV0aG9kOkksaGVhZGVyczplP3siQ29udGVudC1UeXBlIjoibXVsdGlwYXJ0L2Zvcm0tZGF0YSJ9Ont9LHVybDpyLGRhdGE6aX0pKX19eC5wcm90b3R5cGVbSV09dCgpLHgucHJvdG90eXBlW0krIkZvcm0iXT10KCEwKX0pO3ZhciBBQT14O3ZhciBQQT1jbGFzcyBBe2NvbnN0cnVjdG9yKEkpe2lmKHR5cGVvZiBJIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoImV4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4iKTtsZXQgdDt0aGlzLnByb21pc2U9bmV3IFByb21pc2UoZnVuY3Rpb24ocil7dD1yfSk7bGV0IGU9dGhpczt0aGlzLnByb21pc2UudGhlbihnPT57aWYoIWUuX2xpc3RlbmVycylyZXR1cm47bGV0IHI9ZS5fbGlzdGVuZXJzLmxlbmd0aDtmb3IoO3ItLSA+MDspZS5fbGlzdGVuZXJzW3JdKGcpO2UuX2xpc3RlbmVycz1udWxsfSksdGhpcy5wcm9taXNlLnRoZW49Zz0+e2xldCByLGk9bmV3IFByb21pc2Uocz0+e2Uuc3Vic2NyaWJlKHMpLHI9c30pLnRoZW4oZyk7cmV0dXJuIGkuY2FuY2VsPWZ1bmN0aW9uKCl7ZS51bnN1YnNjcmliZShyKX0saX0sSShmdW5jdGlvbihyLGkscyl7ZS5yZWFzb258fChlLnJlYXNvbj1uZXcgSihyLGkscyksdChlLnJlYXNvbikpfSl9dGhyb3dJZlJlcXVlc3RlZCgpe2lmKHRoaXMucmVhc29uKXRocm93IHRoaXMucmVhc29ufXN1YnNjcmliZShJKXtpZih0aGlzLnJlYXNvbil7SSh0aGlzLnJlYXNvbik7cmV0dXJufXRoaXMuX2xpc3RlbmVycz90aGlzLl9saXN0ZW5lcnMucHVzaChJKTp0aGlzLl9saXN0ZW5lcnM9W0ldfXVuc3Vic2NyaWJlKEkpe2lmKCF0aGlzLl9saXN0ZW5lcnMpcmV0dXJuO2xldCB0PXRoaXMuX2xpc3RlbmVycy5pbmRleE9mKEkpO3QhPT0tMSYmdGhpcy5fbGlzdGVuZXJzLnNwbGljZSh0LDEpfXN0YXRpYyBzb3VyY2UoKXtsZXQgSTtyZXR1cm57dG9rZW46bmV3IEEoZnVuY3Rpb24oZyl7ST1nfSksY2FuY2VsOkl9fX0sYkk9UEE7ZnVuY3Rpb24gakEoQSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBBLmFwcGx5KG51bGwsdCl9fWZ1bmN0aW9uIFdBKEEpe3JldHVybiBCLmlzT2JqZWN0KEEpJiZBLmlzQXhpb3NFcnJvcj09PSEwfXZhciBaQT17Q29udGludWU6MTAwLFN3aXRjaGluZ1Byb3RvY29sczoxMDEsUHJvY2Vzc2luZzoxMDIsRWFybHlIaW50czoxMDMsT2s6MjAwLENyZWF0ZWQ6MjAxLEFjY2VwdGVkOjIwMixOb25BdXRob3JpdGF0aXZlSW5mb3JtYXRpb246MjAzLE5vQ29udGVudDoyMDQsUmVzZXRDb250ZW50OjIwNSxQYXJ0aWFsQ29udGVudDoyMDYsTXVsdGlTdGF0dXM6MjA3LEFscmVhZHlSZXBvcnRlZDoyMDgsSW1Vc2VkOjIyNixNdWx0aXBsZUNob2ljZXM6MzAwLE1vdmVkUGVybWFuZW50bHk6MzAxLEZvdW5kOjMwMixTZWVPdGhlcjozMDMsTm90TW9kaWZpZWQ6MzA0LFVzZVByb3h5OjMwNSxVbnVzZWQ6MzA2LFRlbXBvcmFyeVJlZGlyZWN0OjMwNyxQZXJtYW5lbnRSZWRpcmVjdDozMDgsQmFkUmVxdWVzdDo0MDAsVW5hdXRob3JpemVkOjQwMSxQYXltZW50UmVxdWlyZWQ6NDAyLEZvcmJpZGRlbjo0MDMsTm90Rm91bmQ6NDA0LE1ldGhvZE5vdEFsbG93ZWQ6NDA1LE5vdEFjY2VwdGFibGU6NDA2LFByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZDo0MDcsUmVxdWVzdFRpbWVvdXQ6NDA4LENvbmZsaWN0OjQwOSxHb25lOjQxMCxMZW5ndGhSZXF1aXJlZDo0MTEsUHJlY29uZGl0aW9uRmFpbGVkOjQxMixQYXlsb2FkVG9vTGFyZ2U6NDEzLFVyaVRvb0xvbmc6NDE0LFVuc3VwcG9ydGVkTWVkaWFUeXBlOjQxNSxSYW5nZU5vdFNhdGlzZmlhYmxlOjQxNixFeHBlY3RhdGlvbkZhaWxlZDo0MTcsSW1BVGVhcG90OjQxOCxNaXNkaXJlY3RlZFJlcXVlc3Q6NDIxLFVucHJvY2Vzc2FibGVFbnRpdHk6NDIyLExvY2tlZDo0MjMsRmFpbGVkRGVwZW5kZW5jeTo0MjQsVG9vRWFybHk6NDI1LFVwZ3JhZGVSZXF1aXJlZDo0MjYsUHJlY29uZGl0aW9uUmVxdWlyZWQ6NDI4LFRvb01hbnlSZXF1ZXN0czo0MjksUmVxdWVzdEhlYWRlckZpZWxkc1Rvb0xhcmdlOjQzMSxVbmF2YWlsYWJsZUZvckxlZ2FsUmVhc29uczo0NTEsSW50ZXJuYWxTZXJ2ZXJFcnJvcjo1MDAsTm90SW1wbGVtZW50ZWQ6NTAxLEJhZEdhdGV3YXk6NTAyLFNlcnZpY2VVbmF2YWlsYWJsZTo1MDMsR2F0ZXdheVRpbWVvdXQ6NTA0LEh0dHBWZXJzaW9uTm90U3VwcG9ydGVkOjUwNSxWYXJpYW50QWxzb05lZ290aWF0ZXM6NTA2LEluc3VmZmljaWVudFN0b3JhZ2U6NTA3LExvb3BEZXRlY3RlZDo1MDgsTm90RXh0ZW5kZWQ6NTEwLE5ldHdvcmtBdXRoZW50aWNhdGlvblJlcXVpcmVkOjUxMX07T2JqZWN0LmVudHJpZXMoWkEpLmZvckVhY2goKFtBLEldKT0+e1pBW0ldPUF9KTt2YXIgTUk9WkE7ZnVuY3Rpb24gcUkoQSl7bGV0IEk9bmV3IEFBKEEpLHQ9VyhBQS5wcm90b3R5cGUucmVxdWVzdCxJKTtyZXR1cm4gQi5leHRlbmQodCxBQS5wcm90b3R5cGUsSSx7YWxsT3duS2V5czohMH0pLEIuZXh0ZW5kKHQsSSxudWxsLHthbGxPd25LZXlzOiEwfSksdC5jcmVhdGU9ZnVuY3Rpb24oZyl7cmV0dXJuIHFJKEcoQSxnKSl9LHR9dmFyIGg9cUkoTyk7aC5BeGlvcz1BQTtoLkNhbmNlbGVkRXJyb3I9SjtoLkNhbmNlbFRva2VuPWJJO2guaXNDYW5jZWw9djtoLlZFUlNJT049dUE7aC50b0Zvcm1EYXRhPUw7aC5BeGlvc0Vycm9yPWw7aC5DYW5jZWw9aC5DYW5jZWxlZEVycm9yO2guYWxsPWZ1bmN0aW9uKEkpe3JldHVybiBQcm9taXNlLmFsbChJKX07aC5zcHJlYWQ9akE7aC5pc0F4aW9zRXJyb3I9V0E7aC5tZXJnZUNvbmZpZz1HO2guQXhpb3NIZWFkZXJzPW07aC5mb3JtVG9KU09OPUE9PmNBKEIuaXNIVE1MRm9ybShBKT9uZXcgRm9ybURhdGEoQSk6QSk7aC5nZXRBZGFwdGVyPWxBLmdldEFkYXB0ZXI7aC5IdHRwU3RhdHVzQ29kZT1NSTtoLmRlZmF1bHQ9aDt2YXIgZEE9aDt2YXJ7QXhpb3M6b2ksQXhpb3NFcnJvcjpCaSxDYW5jZWxlZEVycm9yOkNpLGlzQ2FuY2VsOnNpLENhbmNlbFRva2VuOlFpLFZFUlNJT046bmksYWxsOkVpLENhbmNlbDphaSxpc0F4aW9zRXJyb3I6Y2ksc3ByZWFkOmZpLHRvRm9ybURhdGE6bGksQXhpb3NIZWFkZXJzOkRpLEh0dHBTdGF0dXNDb2RlOnVpLGZvcm1Ub0pTT046aGksZ2V0QWRhcHRlcjpkaSxtZXJnZUNvbmZpZzp5aX09ZEE7dmFyIElBLGssWEEsVkE9e2Vudjp7ZW1zY3JpcHRlbl9ub3RpZnlfbWVtb3J5X2dyb3d0aDpmdW5jdGlvbihBKXtYQT1uZXcgVWludDhBcnJheShrLmV4cG9ydHMubWVtb3J5LmJ1ZmZlcil9fX0seUE9Y2xhc3N7aW5pdCgpe3JldHVybiBJQXx8KHR5cGVvZiBmZXRjaDwidSI/SUE9ZmV0Y2goImRhdGE6YXBwbGljYXRpb24vd2FzbTtiYXNlNjQsIitLSSkudGhlbihJPT5JLmFycmF5QnVmZmVyKCkpLnRoZW4oST0+V2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoSSxWQSkpLnRoZW4odGhpcy5faW5pdCk6SUE9V2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoQnVmZmVyLmZyb20oS0ksImJhc2U2NCIpLFZBKS50aGVuKHRoaXMuX2luaXQpLElBKX1faW5pdChJKXtrPUkuaW5zdGFuY2UsVkEuZW52LmVtc2NyaXB0ZW5fbm90aWZ5X21lbW9yeV9ncm93dGgoMCl9ZGVjb2RlKEksdD0wKXtpZighayl0aHJvdyBuZXcgRXJyb3IoIlpTVEREZWNvZGVyOiBBd2FpdCAuaW5pdCgpIGJlZm9yZSBkZWNvZGluZy4iKTtsZXQgZT1JLmJ5dGVMZW5ndGgsZz1rLmV4cG9ydHMubWFsbG9jKGUpO1hBLnNldChJLGcpLHQ9dHx8TnVtYmVyKGsuZXhwb3J0cy5aU1REX2ZpbmREZWNvbXByZXNzZWRTaXplKGcsZSkpO2xldCByPWsuZXhwb3J0cy5tYWxsb2ModCksaT1rLmV4cG9ydHMuWlNURF9kZWNvbXByZXNzKHIsdCxnLGUpLHM9WEEuc2xpY2UocixyK2kpO3JldHVybiBrLmV4cG9ydHMuZnJlZShnKSxrLmV4cG9ydHMuZnJlZShyKSxzfX0sS0k9IkFHRnpiUUVBQUFBQmJnNWdBMzkvZndGL1lBRi9BWDlnQW45L0FHQUJmd0JnQlg5L2YzOS9BWDlnQTM5L2Z3QmdCSDkvZjM4QmYyQUFBWDlnQW45L0FYOWdCMzkvZjM5L2YzOEJmMkFDZjM4QmZtQUlmMzkvZjM5L2YzOEJmMkFGZjM5L2YzOEFZQTUvZjM5L2YzOS9mMzkvZjM5L2Z3Ri9BaWNCQTJWdWRoOWxiWE5qY21sd2RHVnVYMjV2ZEdsbWVWOXRaVzF2Y25sZlozSnZkM1JvQUFNREl5SUhBQUFCQVFNSEF3RUFDUVFBQlFFSUNBRUZCZ1FFQkFNR0FBQUtBQVVMREEwR0JBVUJjQUVCQVFVSEFRR0FBb0NBQWdZSUFYOEJRWUNqQkFzSHJnRUxCbTFsYlc5eWVRSUFCbTFoYkd4dll3QUZCR1p5WldVQUJneGFVMVJFWDJselJYSnliM0lBRWhsYVUxUkVYMlpwYm1SRVpXTnZiWEJ5WlhOelpXUlRhWHBsQUJ3UFdsTlVSRjlrWldOdmJYQnlaWE56QUNJWlgxOXBibVJwY21WamRGOW1kVzVqZEdsdmJsOTBZV0pzWlFFQUVGOWZaWEp5Ym05ZmJHOWpZWFJwYjI0QUFRbHpkR0ZqYTFOaGRtVUFCd3h6ZEdGamExSmxjM1J2Y21VQUNBcHpkR0ZqYTBGc2JHOWpBQWtLaS9JQklnVUFRWVFmQ3pNQkFYOGdBZ1JBSUFBaEF3TkFJQU1nQVMwQUFEb0FBQ0FEUVFGcUlRTWdBVUVCYWlFQklBSkJBV3NpQWcwQUN3c2dBQXNwQVFGL0lBSUVRQ0FBSVFNRFFDQURJQUU2QUFBZ0EwRUJhaUVESUFKQkFXc2lBZzBBQ3dzZ0FBdHNBUUovUVlBZktBSUFJZ0VnQUVFSGFrRjRjU0lDYWlFQUFrQWdBa0VBSUFBZ0FVMGJEUUFnQUQ4QVFSQjBTd1JBSUFBL0FFRVFkR3RCLy84RGFrRVFka0FBUVg5R0JIOUJBQVZCQUJBQVFRRUxSUTBCQzBHQUh5QUFOZ0lBSUFFUEMwR0VIMEV3TmdJQVFYOEx1U2NCQzM4akFFRVFheUlLSkFBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUlBQkI5QUZOQkVCQmlCOG9BZ0FpQmtFUUlBQkJDMnBCZUhFZ0FFRUxTUnNpQlVFRGRpSUFkaUlCUVFOeEJFQUNRQ0FCUVg5elFRRnhJQUJxSWdKQkEzUWlBVUd3SDJvaUFDQUJRYmdmYWlnQ0FDSUJLQUlJSWdSR0JFQkJpQjhnQmtGK0lBSjNjVFlDQUF3QkN5QUVJQUEyQWd3Z0FDQUVOZ0lJQ3lBQlFRaHFJUUFnQVNBQ1FRTjBJZ0pCQTNJMkFnUWdBU0FDYWlJQklBRW9BZ1JCQVhJMkFnUU1Ed3NnQlVHUUh5Z0NBQ0lIVFEwQklBRUVRQUpBUVFJZ0FIUWlBa0VBSUFKcmNpQUJJQUIwY1dnaUFVRURkQ0lBUWJBZmFpSUNJQUJCdUI5cUtBSUFJZ0FvQWdnaUJFWUVRRUdJSHlBR1FYNGdBWGR4SWdZMkFnQU1BUXNnQkNBQ05nSU1JQUlnQkRZQ0NBc2dBQ0FGUVFOeU5nSUVJQUFnQldvaUNDQUJRUU4wSWdFZ0JXc2lCRUVCY2pZQ0JDQUFJQUZxSUFRMkFnQWdCd1JBSUFkQmVIRkJzQjlxSVFGQm5COG9BZ0FoQWdKL0lBWkJBU0FIUVFOMmRDSURjVVVFUUVHSUh5QURJQVp5TmdJQUlBRU1BUXNnQVNnQ0NBc2hBeUFCSUFJMkFnZ2dBeUFDTmdJTUlBSWdBVFlDRENBQ0lBTTJBZ2dMSUFCQkNHb2hBRUdjSHlBSU5nSUFRWkFmSUFRMkFnQU1Ed3RCakI4b0FnQWlDMFVOQVNBTGFFRUNkRUc0SVdvb0FnQWlBaWdDQkVGNGNTQUZheUVESUFJaEFRTkFBa0FnQVNnQ0VDSUFSUVJBSUFFb0FoUWlBRVVOQVFzZ0FDZ0NCRUY0Y1NBRmF5SUJJQU1nQVNBRFNTSUJHeUVESUFBZ0FpQUJHeUVDSUFBaEFRd0JDd3NnQWlnQ0dDRUpJQUlnQWlnQ0RDSUVSd1JBUVpnZktBSUFHaUFDS0FJSUlnQWdCRFlDRENBRUlBQTJBZ2dNRGdzZ0FrRVVhaUlCS0FJQUlnQkZCRUFnQWlnQ0VDSUFSUTBESUFKQkVHb2hBUXNEUUNBQklRZ2dBQ0lFUVJScUlnRW9BZ0FpQUEwQUlBUkJFR29oQVNBRUtBSVFJZ0FOQUFzZ0NFRUFOZ0lBREEwTFFYOGhCU0FBUWI5L1N3MEFJQUJCQzJvaUFFRjRjU0VGUVl3ZktBSUFJZ2hGRFFCQkFDQUZheUVEQWtBQ1FBSkFBbjlCQUNBRlFZQUNTUTBBR2tFZklBVkIvLy8vQjBzTkFCb2dCVUVtSUFCQkNIWm5JZ0JyZGtFQmNTQUFRUUYwYTBFK2Fnc2lCMEVDZEVHNElXb29BZ0FpQVVVRVFFRUFJUUFNQVF0QkFDRUFJQVZCR1NBSFFRRjJhMEVBSUFkQkgwY2JkQ0VDQTBBQ1FDQUJLQUlFUVhoeElBVnJJZ1lnQTA4TkFDQUJJUVFnQmlJRERRQkJBQ0VESUFFaEFBd0RDeUFBSUFFb0FoUWlCaUFHSUFFZ0FrRWRka0VFY1dvb0FoQWlBVVliSUFBZ0Joc2hBQ0FDUVFGMElRSWdBUTBBQ3dzZ0FDQUVja1VFUUVFQUlRUkJBaUFIZENJQVFRQWdBR3R5SUFoeElnQkZEUU1nQUdoQkFuUkJ1Q0ZxS0FJQUlRQUxJQUJGRFFFTEEwQWdBQ2dDQkVGNGNTQUZheUlDSUFOSklRRWdBaUFESUFFYklRTWdBQ0FFSUFFYklRUWdBQ2dDRUNJQkJIOGdBUVVnQUNnQ0ZBc2lBQTBBQ3dzZ0JFVU5BQ0FEUVpBZktBSUFJQVZyVHcwQUlBUW9BaGdoQnlBRUlBUW9BZ3dpQWtjRVFFR1lIeWdDQUJvZ0JDZ0NDQ0lBSUFJMkFnd2dBaUFBTmdJSURBd0xJQVJCRkdvaUFTZ0NBQ0lBUlFSQUlBUW9BaEFpQUVVTkF5QUVRUkJxSVFFTEEwQWdBU0VHSUFBaUFrRVVhaUlCS0FJQUlnQU5BQ0FDUVJCcUlRRWdBaWdDRUNJQURRQUxJQVpCQURZQ0FBd0xDeUFGUVpBZktBSUFJZ1JOQkVCQm5COG9BZ0FoQUFKQUlBUWdCV3NpQVVFUVR3UkFJQUFnQldvaUFpQUJRUUZ5TmdJRUlBQWdCR29nQVRZQ0FDQUFJQVZCQTNJMkFnUU1BUXNnQUNBRVFRTnlOZ0lFSUFBZ0JHb2lBU0FCS0FJRVFRRnlOZ0lFUVFBaEFrRUFJUUVMUVpBZklBRTJBZ0JCbkI4Z0FqWUNBQ0FBUVFocUlRQU1EUXNnQlVHVUh5Z0NBQ0lDU1FSQVFaUWZJQUlnQldzaUFUWUNBRUdnSDBHZ0h5Z0NBQ0lBSUFWcUlnSTJBZ0FnQWlBQlFRRnlOZ0lFSUFBZ0JVRURjallDQkNBQVFRaHFJUUFNRFF0QkFDRUFJQVZCTDJvaUF3Si9RZUFpS0FJQUJFQkI2Q0lvQWdBTUFRdEI3Q0pDZnpjQ0FFSGtJa0tBb0lDQWdJQUVOd0lBUWVBaUlBcEJER3BCY0hGQjJLclZxZ1Z6TmdJQVFmUWlRUUEyQWdCQnhDSkJBRFlDQUVHQUlBc2lBV29pQmtFQUlBRnJJZ2h4SWdFZ0JVME5ERUhBSWlnQ0FDSUVCRUJCdUNJb0FnQWlCeUFCYWlJSklBZE5JQVFnQ1VseURRMExBa0JCeENJdEFBQkJCSEZGQkVBQ1FBSkFBa0FDUUVHZ0h5Z0NBQ0lFQkVCQnlDSWhBQU5BSUFRZ0FDZ0NBQ0lIVHdSQUlBY2dBQ2dDQkdvZ0JFc05Bd3NnQUNnQ0NDSUFEUUFMQzBFQUVBUWlBa0YvUmcwRElBRWhCa0hrSWlnQ0FDSUFRUUZySWdRZ0FuRUVRQ0FCSUFKcklBSWdCR3BCQUNBQWEzRnFJUVlMSUFVZ0JrOE5BMEhBSWlnQ0FDSUFCRUJCdUNJb0FnQWlCQ0FHYWlJSUlBUk5JQUFnQ0VseURRUUxJQVlRQkNJQUlBSkhEUUVNQlFzZ0JpQUNheUFJY1NJR0VBUWlBaUFBS0FJQUlBQW9BZ1JxUmcwQklBSWhBQXNnQUVGL1JnMEJJQVZCTUdvZ0JrMEVRQ0FBSVFJTUJBdEI2Q0lvQWdBaUFpQURJQVpyYWtFQUlBSnJjU0lDRUFSQmYwWU5BU0FDSUFacUlRWWdBQ0VDREFNTElBSkJmMGNOQWd0QnhDSkJ4Q0lvQWdCQkJISTJBZ0FMSUFFUUJDSUNRWDlHUVFBUUJDSUFRWDlHY2lBQUlBSk5jZzBGSUFBZ0Ftc2lCaUFGUVNocVRRMEZDMEc0SWtHNElpZ0NBQ0FHYWlJQU5nSUFRYndpS0FJQUlBQkpCRUJCdkNJZ0FEWUNBQXNDUUVHZ0h5Z0NBQ0lEQkVCQnlDSWhBQU5BSUFJZ0FDZ0NBQ0lCSUFBb0FnUWlCR3BHRFFJZ0FDZ0NDQ0lBRFFBTERBUUxRWmdmS0FJQUlnQkJBQ0FBSUFKTkcwVUVRRUdZSHlBQ05nSUFDMEVBSVFCQnpDSWdCallDQUVISUlpQUNOZ0lBUWFnZlFYODJBZ0JCckI5QjRDSW9BZ0EyQWdCQjFDSkJBRFlDQUFOQUlBQkJBM1FpQVVHNEgyb2dBVUd3SDJvaUJEWUNBQ0FCUWJ3ZmFpQUVOZ0lBSUFCQkFXb2lBRUVnUncwQUMwR1VIeUFHUVNocklnQkJlQ0FDYTBFSGNTSUJheUlFTmdJQVFhQWZJQUVnQW1vaUFUWUNBQ0FCSUFSQkFYSTJBZ1FnQUNBQ2FrRW9OZ0lFUWFRZlFmQWlLQUlBTmdJQURBUUxJQUlnQTAwZ0FTQURTM0lOQWlBQUtBSU1RUWh4RFFJZ0FDQUVJQVpxTmdJRVFhQWZJQU5CZUNBRGEwRUhjU0lBYWlJQk5nSUFRWlFmUVpRZktBSUFJQVpxSWdJZ0FHc2lBRFlDQUNBQklBQkJBWEkyQWdRZ0FpQURha0VvTmdJRVFhUWZRZkFpS0FJQU5nSUFEQU1MUVFBaEJBd0tDMEVBSVFJTUNBdEJtQjhvQWdBZ0Frc0VRRUdZSHlBQ05nSUFDeUFDSUFacUlRRkJ5Q0loQUFKQUFrQUNRQU5BSUFFZ0FDZ0NBRWNFUUNBQUtBSUlJZ0FOQVF3Q0N3c2dBQzBBREVFSWNVVU5BUXRCeUNJaEFBTkFJQU1nQUNnQ0FDSUJUd1JBSUFFZ0FDZ0NCR29pQkNBRFN3MERDeUFBS0FJSUlRQU1BQXNBQ3lBQUlBSTJBZ0FnQUNBQUtBSUVJQVpxTmdJRUlBSkJlQ0FDYTBFSGNXb2lCeUFGUVFOeU5nSUVJQUZCZUNBQmEwRUhjV29pQmlBRklBZHFJZ1ZySVFBZ0F5QUdSZ1JBUWFBZklBVTJBZ0JCbEI5QmxCOG9BZ0FnQUdvaUFEWUNBQ0FGSUFCQkFYSTJBZ1FNQ0F0Qm5COG9BZ0FnQmtZRVFFR2NIeUFGTmdJQVFaQWZRWkFmS0FJQUlBQnFJZ0EyQWdBZ0JTQUFRUUZ5TmdJRUlBQWdCV29nQURZQ0FBd0lDeUFHS0FJRUlnTkJBM0ZCQVVjTkJpQURRWGh4SVFrZ0EwSC9BVTBFUUNBR0tBSU1JZ0VnQmlnQ0NDSUNSZ1JBUVlnZlFZZ2ZLQUlBUVg0Z0EwRURkbmR4TmdJQURBY0xJQUlnQVRZQ0RDQUJJQUkyQWdnTUJnc2dCaWdDR0NFSUlBWWdCaWdDRENJQ1J3UkFJQVlvQWdnaUFTQUNOZ0lNSUFJZ0FUWUNDQXdGQ3lBR1FSUnFJZ0VvQWdBaUEwVUVRQ0FHS0FJUUlnTkZEUVFnQmtFUWFpRUJDd05BSUFFaEJDQURJZ0pCRkdvaUFTZ0NBQ0lERFFBZ0FrRVFhaUVCSUFJb0FoQWlBdzBBQ3lBRVFRQTJBZ0FNQkF0QmxCOGdCa0VvYXlJQVFYZ2dBbXRCQjNFaUFXc2lDRFlDQUVHZ0h5QUJJQUpxSWdFMkFnQWdBU0FJUVFGeU5nSUVJQUFnQW1wQktEWUNCRUdrSDBId0lpZ0NBRFlDQUNBRElBUkJKeUFFYTBFSGNXcEJMMnNpQUNBQUlBTkJFR3BKR3lJQlFSczJBZ1FnQVVIUUlpa0NBRGNDRUNBQlFjZ2lLUUlBTndJSVFkQWlJQUZCQ0dvMkFnQkJ6Q0lnQmpZQ0FFSElJaUFDTmdJQVFkUWlRUUEyQWdBZ0FVRVlhaUVBQTBBZ0FFRUhOZ0lFSUFCQkNHb2dBRUVFYWlFQUlBUkpEUUFMSUFFZ0EwWU5BQ0FCSUFFb0FnUkJmbkUyQWdRZ0F5QUJJQU5ySWdKQkFYSTJBZ1FnQVNBQ05nSUFJQUpCL3dGTkJFQWdBa0Y0Y1VHd0gyb2hBQUovUVlnZktBSUFJZ0ZCQVNBQ1FRTjJkQ0lDY1VVRVFFR0lIeUFCSUFKeU5nSUFJQUFNQVFzZ0FDZ0NDQXNoQVNBQUlBTTJBZ2dnQVNBRE5nSU1JQU1nQURZQ0RDQURJQUUyQWdnTUFRdEJIeUVBSUFKQi8vLy9CMDBFUUNBQ1FTWWdBa0VJZG1jaUFHdDJRUUZ4SUFCQkFYUnJRVDVxSVFBTElBTWdBRFlDSENBRFFnQTNBaEFnQUVFQ2RFRzRJV29oQVFKQUFrQkJqQjhvQWdBaUJFRUJJQUIwSWdaeFJRUkFRWXdmSUFRZ0JuSTJBZ0FnQVNBRE5nSUFEQUVMSUFKQkdTQUFRUUYyYTBFQUlBQkJIMGNiZENFQUlBRW9BZ0FoQkFOQUlBUWlBU2dDQkVGNGNTQUNSZzBDSUFCQkhYWWhCQ0FBUVFGMElRQWdBU0FFUVFSeGFpSUdLQUlRSWdRTkFBc2dCaUFETmdJUUN5QURJQUUyQWhnZ0F5QUROZ0lNSUFNZ0F6WUNDQXdCQ3lBQktBSUlJZ0FnQXpZQ0RDQUJJQU0yQWdnZ0EwRUFOZ0lZSUFNZ0FUWUNEQ0FESUFBMkFnZ0xRWlFmS0FJQUlnQWdCVTBOQUVHVUh5QUFJQVZySWdFMkFnQkJvQjlCb0I4b0FnQWlBQ0FGYWlJQ05nSUFJQUlnQVVFQmNqWUNCQ0FBSUFWQkEzSTJBZ1FnQUVFSWFpRUFEQWdMUVlRZlFUQTJBZ0JCQUNFQURBY0xRUUFoQWdzZ0NFVU5BQUpBSUFZb0Fod2lBVUVDZEVHNElXb2lCQ2dDQUNBR1JnUkFJQVFnQWpZQ0FDQUNEUUZCakI5QmpCOG9BZ0JCZmlBQmQzRTJBZ0FNQWdzZ0NFRVFRUlFnQ0NnQ0VDQUdSaHRxSUFJMkFnQWdBa1VOQVFzZ0FpQUlOZ0lZSUFZb0FoQWlBUVJBSUFJZ0FUWUNFQ0FCSUFJMkFoZ0xJQVlvQWhRaUFVVU5BQ0FDSUFFMkFoUWdBU0FDTmdJWUN5QUFJQWxxSVFBZ0JpQUphaUlHS0FJRUlRTUxJQVlnQTBGK2NUWUNCQ0FGSUFCQkFYSTJBZ1FnQUNBRmFpQUFOZ0lBSUFCQi93Rk5CRUFnQUVGNGNVR3dIMm9oQVFKL1FZZ2ZLQUlBSWdKQkFTQUFRUU4yZENJQWNVVUVRRUdJSHlBQUlBSnlOZ0lBSUFFTUFRc2dBU2dDQ0FzaEFDQUJJQVUyQWdnZ0FDQUZOZ0lNSUFVZ0FUWUNEQ0FGSUFBMkFnZ01BUXRCSHlFRElBQkIvLy8vQjAwRVFDQUFRU1lnQUVFSWRtY2lBV3QyUVFGeElBRkJBWFJyUVQ1cUlRTUxJQVVnQXpZQ0hDQUZRZ0EzQWhBZ0EwRUNkRUc0SVdvaEFRSkFBa0JCakI4b0FnQWlBa0VCSUFOMElnUnhSUVJBUVl3ZklBSWdCSEkyQWdBZ0FTQUZOZ0lBREFFTElBQkJHU0FEUVFGMmEwRUFJQU5CSDBjYmRDRURJQUVvQWdBaEFnTkFJQUlpQVNnQ0JFRjRjU0FBUmcwQ0lBTkJIWFloQWlBRFFRRjBJUU1nQVNBQ1FRUnhhaUlFS0FJUUlnSU5BQXNnQkNBRk5nSVFDeUFGSUFFMkFoZ2dCU0FGTmdJTUlBVWdCVFlDQ0F3QkN5QUJLQUlJSWdBZ0JUWUNEQ0FCSUFVMkFnZ2dCVUVBTmdJWUlBVWdBVFlDRENBRklBQTJBZ2dMSUFkQkNHb2hBQXdDQ3dKQUlBZEZEUUFDUUNBRUtBSWNJZ0JCQW5SQnVDRnFJZ0VvQWdBZ0JFWUVRQ0FCSUFJMkFnQWdBZzBCUVl3ZklBaEJmaUFBZDNFaUNEWUNBQXdDQ3lBSFFSQkJGQ0FIS0FJUUlBUkdHMm9nQWpZQ0FDQUNSUTBCQ3lBQ0lBYzJBaGdnQkNnQ0VDSUFCRUFnQWlBQU5nSVFJQUFnQWpZQ0dBc2dCQ2dDRkNJQVJRMEFJQUlnQURZQ0ZDQUFJQUkyQWhnTEFrQWdBMEVQVFFSQUlBUWdBeUFGYWlJQVFRTnlOZ0lFSUFBZ0JHb2lBQ0FBS0FJRVFRRnlOZ0lFREFFTElBUWdCVUVEY2pZQ0JDQUVJQVZxSWdJZ0EwRUJjallDQkNBQ0lBTnFJQU0yQWdBZ0EwSC9BVTBFUUNBRFFYaHhRYkFmYWlFQUFuOUJpQjhvQWdBaUFVRUJJQU5CQTNaMElnTnhSUVJBUVlnZklBRWdBM0kyQWdBZ0FBd0JDeUFBS0FJSUN5RUJJQUFnQWpZQ0NDQUJJQUkyQWd3Z0FpQUFOZ0lNSUFJZ0FUWUNDQXdCQzBFZklRQWdBMEgvLy84SFRRUkFJQU5CSmlBRFFRaDJaeUlBYTNaQkFYRWdBRUVCZEd0QlBtb2hBQXNnQWlBQU5nSWNJQUpDQURjQ0VDQUFRUUowUWJnaGFpRUJBa0FDUUNBSVFRRWdBSFFpQm5GRkJFQkJqQjhnQmlBSWNqWUNBQ0FCSUFJMkFnQU1BUXNnQTBFWklBQkJBWFpyUVFBZ0FFRWZSeHQwSVFBZ0FTZ0NBQ0VGQTBBZ0JTSUJLQUlFUVhoeElBTkdEUUlnQUVFZGRpRUdJQUJCQVhRaEFDQUJJQVpCQkhGcUlnWW9BaEFpQlEwQUN5QUdJQUkyQWhBTElBSWdBVFlDR0NBQ0lBSTJBZ3dnQWlBQ05nSUlEQUVMSUFFb0FnZ2lBQ0FDTmdJTUlBRWdBallDQ0NBQ1FRQTJBaGdnQWlBQk5nSU1JQUlnQURZQ0NBc2dCRUVJYWlFQURBRUxBa0FnQ1VVTkFBSkFJQUlvQWh3aUFFRUNkRUc0SVdvaUFTZ0NBQ0FDUmdSQUlBRWdCRFlDQUNBRURRRkJqQjhnQzBGK0lBQjNjVFlDQUF3Q0N5QUpRUkJCRkNBSktBSVFJQUpHRzJvZ0JEWUNBQ0FFUlEwQkN5QUVJQWsyQWhnZ0FpZ0NFQ0lBQkVBZ0JDQUFOZ0lRSUFBZ0JEWUNHQXNnQWlnQ0ZDSUFSUTBBSUFRZ0FEWUNGQ0FBSUFRMkFoZ0xBa0FnQTBFUFRRUkFJQUlnQXlBRmFpSUFRUU55TmdJRUlBQWdBbW9pQUNBQUtBSUVRUUZ5TmdJRURBRUxJQUlnQlVFRGNqWUNCQ0FDSUFWcUlnUWdBMEVCY2pZQ0JDQURJQVJxSUFNMkFnQWdCd1JBSUFkQmVIRkJzQjlxSVFCQm5COG9BZ0FoQVFKL1FRRWdCMEVEZG5RaUJTQUdjVVVFUUVHSUh5QUZJQVp5TmdJQUlBQU1BUXNnQUNnQ0NBc2hCaUFBSUFFMkFnZ2dCaUFCTmdJTUlBRWdBRFlDRENBQklBWTJBZ2dMUVp3ZklBUTJBZ0JCa0I4Z0F6WUNBQXNnQWtFSWFpRUFDeUFLUVJCcUpBQWdBQXZTQ3dFSGZ3SkFJQUJGRFFBZ0FFRUlheUlDSUFCQkJHc29BZ0FpQVVGNGNTSUFhaUVGQWtBZ0FVRUJjUTBBSUFGQkEzRkZEUUVnQWlBQ0tBSUFJZ0ZySWdKQm1COG9BZ0JKRFFFZ0FDQUJhaUVBQWtBQ1FFR2NIeWdDQUNBQ1J3UkFJQUZCL3dGTkJFQWdBVUVEZGlFRUlBSW9BZ3dpQVNBQ0tBSUlJZ05HQkVCQmlCOUJpQjhvQWdCQmZpQUVkM0UyQWdBTUJRc2dBeUFCTmdJTUlBRWdBellDQ0F3RUN5QUNLQUlZSVFZZ0FpQUNLQUlNSWdGSEJFQWdBaWdDQ0NJRElBRTJBZ3dnQVNBRE5nSUlEQU1MSUFKQkZHb2lCQ2dDQUNJRFJRUkFJQUlvQWhBaUEwVU5BaUFDUVJCcUlRUUxBMEFnQkNFSElBTWlBVUVVYWlJRUtBSUFJZ01OQUNBQlFSQnFJUVFnQVNnQ0VDSUREUUFMSUFkQkFEWUNBQXdDQ3lBRktBSUVJZ0ZCQTNGQkEwY05Ba0dRSHlBQU5nSUFJQVVnQVVGK2NUWUNCQ0FDSUFCQkFYSTJBZ1FnQlNBQU5nSUFEd3RCQUNFQkN5QUdSUTBBQWtBZ0FpZ0NIQ0lEUVFKMFFiZ2hhaUlFS0FJQUlBSkdCRUFnQkNBQk5nSUFJQUVOQVVHTUgwR01IeWdDQUVGK0lBTjNjVFlDQUF3Q0N5QUdRUkJCRkNBR0tBSVFJQUpHRzJvZ0FUWUNBQ0FCUlEwQkN5QUJJQVkyQWhnZ0FpZ0NFQ0lEQkVBZ0FTQUROZ0lRSUFNZ0FUWUNHQXNnQWlnQ0ZDSURSUTBBSUFFZ0F6WUNGQ0FESUFFMkFoZ0xJQUlnQlU4TkFDQUZLQUlFSWdGQkFYRkZEUUFDUUFKQUFrQUNRQ0FCUVFKeFJRUkFRYUFmS0FJQUlBVkdCRUJCb0I4Z0FqWUNBRUdVSDBHVUh5Z0NBQ0FBYWlJQU5nSUFJQUlnQUVFQmNqWUNCQ0FDUVp3ZktBSUFSdzBHUVpBZlFRQTJBZ0JCbkI5QkFEWUNBQThMUVp3ZktBSUFJQVZHQkVCQm5COGdBallDQUVHUUgwR1FIeWdDQUNBQWFpSUFOZ0lBSUFJZ0FFRUJjallDQkNBQUlBSnFJQUEyQWdBUEN5QUJRWGh4SUFCcUlRQWdBVUgvQVUwRVFDQUJRUU4ySVFRZ0JTZ0NEQ0lCSUFVb0FnZ2lBMFlFUUVHSUgwR0lIeWdDQUVGK0lBUjNjVFlDQUF3RkN5QURJQUUyQWd3Z0FTQUROZ0lJREFRTElBVW9BaGdoQmlBRklBVW9BZ3dpQVVjRVFFR1lIeWdDQUJvZ0JTZ0NDQ0lESUFFMkFnd2dBU0FETmdJSURBTUxJQVZCRkdvaUJDZ0NBQ0lEUlFSQUlBVW9BaEFpQTBVTkFpQUZRUkJxSVFRTEEwQWdCQ0VISUFNaUFVRVVhaUlFS0FJQUlnTU5BQ0FCUVJCcUlRUWdBU2dDRUNJRERRQUxJQWRCQURZQ0FBd0NDeUFGSUFGQmZuRTJBZ1FnQWlBQVFRRnlOZ0lFSUFBZ0Ftb2dBRFlDQUF3REMwRUFJUUVMSUFaRkRRQUNRQ0FGS0FJY0lnTkJBblJCdUNGcUlnUW9BZ0FnQlVZRVFDQUVJQUUyQWdBZ0FRMEJRWXdmUVl3ZktBSUFRWDRnQTNkeE5nSUFEQUlMSUFaQkVFRVVJQVlvQWhBZ0JVWWJhaUFCTmdJQUlBRkZEUUVMSUFFZ0JqWUNHQ0FGS0FJUUlnTUVRQ0FCSUFNMkFoQWdBeUFCTmdJWUN5QUZLQUlVSWdORkRRQWdBU0FETmdJVUlBTWdBVFlDR0FzZ0FpQUFRUUZ5TmdJRUlBQWdBbW9nQURZQ0FDQUNRWndmS0FJQVJ3MEFRWkFmSUFBMkFnQVBDeUFBUWY4QlRRUkFJQUJCZUhGQnNCOXFJUUVDZjBHSUh5Z0NBQ0lEUVFFZ0FFRURkblFpQUhGRkJFQkJpQjhnQUNBRGNqWUNBQ0FCREFFTElBRW9BZ2dMSVFBZ0FTQUNOZ0lJSUFBZ0FqWUNEQ0FDSUFFMkFnd2dBaUFBTmdJSUR3dEJIeUVESUFCQi8vLy9CMDBFUUNBQVFTWWdBRUVJZG1jaUFXdDJRUUZ4SUFGQkFYUnJRVDVxSVFNTElBSWdBellDSENBQ1FnQTNBaEFnQTBFQ2RFRzRJV29oQVFKQUFrQUNRRUdNSHlnQ0FDSUVRUUVnQTNRaUIzRkZCRUJCakI4Z0JDQUhjallDQUNBQklBSTJBZ0FnQWlBQk5nSVlEQUVMSUFCQkdTQURRUUYyYTBFQUlBTkJIMGNiZENFRElBRW9BZ0FoQVFOQUlBRWlCQ2dDQkVGNGNTQUFSZzBDSUFOQkhYWWhBU0FEUVFGMElRTWdCQ0FCUVFSeGFpSUhRUkJxS0FJQUlnRU5BQXNnQnlBQ05nSVFJQUlnQkRZQ0dBc2dBaUFDTmdJTUlBSWdBallDQ0F3QkN5QUVLQUlJSWdBZ0FqWUNEQ0FFSUFJMkFnZ2dBa0VBTmdJWUlBSWdCRFlDRENBQ0lBQTJBZ2dMUWFnZlFhZ2ZLQUlBUVFGcklnQkJmeUFBR3pZQ0FBc0xCQUFqQUFzR0FDQUFKQUFMRUFBakFDQUFhMEZ3Y1NJQUpBQWdBQXRLQVFGL0lBQWdBVWtFUUNBQUlBRWdBaEFDRHdzZ0FnUkFJQUFnQW1vaEF5QUJJQUpxSVFFRFFDQURRUUZySWdNZ0FVRUJheUlCTFFBQU9nQUFJQUpCQVdzaUFnMEFDd3NnQUF2OURnSVJmd0YrSXdCQk1Hc2lCeVFBUWJoL0lRZ0NRQ0FGUlEwQUlBUXNBQUFpQ1VIL0FYRWhDd0pBSUFsQkFFZ0VRQ0FMUWY0QWEwRUJkaUlHSUFWUERRSkJiQ0VJSUF0Qi93QnJJZ3RCL3dGTERRSWdCRUVCYWlFSVFRQWhCUU5BSUFVZ0MwOEVRQ0FMSVFnZ0JpRUxEQU1GSUFBZ0JXb2dDQ0FGUVFGMmFpSUVMUUFBUVFSMk9nQUFJQUFnQlVFQmNtb2dCQzBBQUVFUGNUb0FBQ0FGUVFKcUlRVU1BUXNBQ3dBTElBVWdDMDBOQVNBSFFmOEJOZ0lFSUFZZ0IwRUVhaUFIUVFocUlBUkJBV29pRGlBTEVBd2lCRUdJZjBzRVFDQUVJUWdNQWd0QlZDRUlJQWNvQWdnaUVFRUdTdzBCSUFjb0FnUWlFVUVCZENJSlFRSnFyVUlCSUJDdGhpSVlRUUVnRUhRaURVRUJhaUlGclVJQ2hueDhRZ3Q4UXZ6Ly8vLy8vLy8vL3dDRFF1UUNWZzBCUVZJaENDQVJRZjhCU3cwQklBMUJmM05CQW5SQjVBSnFyU0FSUVFGcUloVkJBWFN0SUJoOFFnaDhWQTBCSUFzZ0JHc2hGaUFFSUE1cUlSY2dCa0dBQkdvaUVpQUZRUUowYWlJUklBbHFRUUpxSVE0Z0JrR0VCR29oRTBHQWdBSWdFSFJCRUhZaENVRUFJUVZCQVNFUElBMUJBV3NpRkNFS0EwQWdCU0FWUmtVRVFBSkFJQVlnQlVFQmRDSUlhaThCQUNJRVFmLy9BMFlFUUNBVElBcEJBblJxSUFVNkFBSWdDa0VCYXlFS1FRRWhCQXdCQ3lBUFFRQWdDU0FFd1VvYklROExJQWdnRVdvZ0JEc0JBQ0FGUVFGcUlRVU1BUXNMSUFZZ0R6c0JnZ1FnQmlBUU93R0FCQUpBSUFvZ0ZFWUVRQ0FOUVFOMklRaENBQ0VZUVFBaER3TkFJQXdnRlVZRVFDQUlJQTFCQVhacVFRTnFJZ2xCQVhRaENFRUFJUVJCQUNFS0EwQkJBQ0VGSUFvZ0RVOE5CQU5BSUFWQkFrWkZCRUFnRXlBRklBbHNJQVJxSUJSeFFRSjBhaUFPSUFVZ0NtcHFMUUFBT2dBQ0lBVkJBV29oQlF3QkN3c2dDa0VDYWlFS0lBUWdDR29nRkhFaEJBd0FDd0FGSUFZZ0RFRUJkR291QVFBaENTQU9JQTlxSWdRZ0dEY0FBRUVJSVFVRFFDQUZJQWxPUlFSQUlBUWdCV29nR0RjQUFDQUZRUWhxSVFVTUFRc0xJQmhDZ1lLRWlKQ2d3SUFCZkNFWUlBeEJBV29oRENBSklBOXFJUThNQVFzQUN3QUxJQTFCQTNZZ0RVRUJkbXBCQTJvaENFRUFJUVVEUUNBTUlCVkdSUVJBUVFBaENTQUdJQXhCQVhScUxnRUFJZ1JCQUNBRVFRQktHeUVFQTBBZ0JDQUpSa1VFUUNBVElBVkJBblJxSUF3NkFBSURRQ0FGSUFocUlCUnhJZ1VnQ2tzTkFBc2dDVUVCYWlFSkRBRUxDeUFNUVFGcUlRd01BUXNMUVg4aENDQUZEUUlMSUJCQkFXb2hDRUVBSVFVRFFDQUZJQTFHUlFSQUlCRWdFeUFGUVFKMGFpSU9MUUFDUVFGMGFpSUVJQVF2QVFBaUNVRUJhanNCQUNBT0lBZ2dDV2RCWUhOcUlnUTZBQU1nRGlBSklBUjBJQTFyT3dFQUlBVkJBV29oQlF3QkN3c0NRQUpBSUFZdkFZSUVCRUFnQjBFY2FpSUVJQmNnRmhBTklnaEJpSDlMRFFJZ0IwRVVhaUFFSUJJUURpQUhRUXhxSUFRZ0VoQU9RUUFoQlFOQUlBZEJIR29pQkJBUElBVkIrd0ZMY2cwQ0lBQWdCV29pQmlBSFFSUnFJQVFRRURvQUFDQUdJQWRCREdvZ0JCQVFPZ0FCSUFWQkFuSWhCQ0FIUVJ4cUVBOEVRQ0FFSVFVTUF3VWdBQ0FFYWlBSFFSUnFJQWRCSEdvaUJCQVFPZ0FBSUFZZ0IwRU1haUFFRUJBNkFBTWdCVUVFYWlFRkRBRUxBQXNBQ3lBSFFSeHFJZ1FnRnlBV0VBMGlDRUdJZjBzTkFTQUhRUlJxSUFRZ0VoQU9JQWRCREdvZ0JDQVNFQTVCQUNFRkEwQWdCMEVjYWlJRUVBOGdCVUg3QVV0eVJRUkFJQUFnQldvaUJpQUhRUlJxSUFRUUVUb0FBQ0FHSUFkQkRHb2dCQkFST2dBQklBVkJBbkloQkNBSFFSeHFFQThFUUNBRUlRVUZJQUFnQkdvZ0IwRVVhaUFIUVJ4cUlnUVFFVG9BQUNBR0lBZEJER29nQkJBUk9nQURJQVZCQkdvaEJRd0NDd3NMQW44RFFFRzZmeUVJSUFWQi9RRkxEUU1nQUNBRmFpSUdJQWRCRkdvZ0IwRWNhaUlKRUJFNkFBQWdCa0VCYWlFRUlBa1FEMEVEUmdSQUlBZEJER29oQ0VFQ0RBSUxJQVZCL0FGTERRTWdCaUFIUVF4cUlBZEJIR29pQkJBUk9nQUJJQVZCQW1vaEJTQUVFQTlCQTBjTkFBc2dBQ0FGYWlFRUlBZEJGR29oQ0VFREN5QUVJQWdnQjBFY2FoQVJPZ0FBSUFacUlBQnJJUWdNQVFzQ2Z3TkFRYnAvSVFnZ0JVSDlBVXNOQWlBQUlBVnFJZ1lnQjBFVWFpQUhRUnhxSWdrUUVEb0FBQ0FHUVFGcUlRUWdDUkFQUVFOR0JFQWdCMEVNYWlFSVFRSU1BZ3NnQlVIOEFVc05BaUFHSUFkQkRHb2dCMEVjYWlJRUVCQTZBQUVnQlVFQ2FpRUZJQVFRRDBFRFJ3MEFDeUFBSUFWcUlRUWdCMEVVYWlFSVFRTUxJQVFnQ0NBSFFSeHFFQkE2QUFBZ0Jtb2dBR3NoQ0FzZ0NFR0lmMHNOQVFzZ0NDRUVRUUFoQlNBQlFRQkJOQkFESVFsQkFDRUtBMEFnQkNBRlJ3UkFJQUFnQldvaUJpMEFBQ0lCUVF0TEJFQkJiQ0VJREFNRklBa2dBVUVDZEdvaUFTQUJLQUlBUVFGcU5nSUFJQVZCQVdvaEJVRUJJQVl0QUFCMFFRRjFJQXBxSVFvTUFnc0FDd3RCYkNFSUlBcEZEUUFnQ21jaUJVRWZjeUlCUVF0TERRQWdBMEVnSUFWck5nSUFRUUZCQWlBQmRDQUtheUlEWjBFZmN5SUJkQ0FEUncwQUlBQWdCR29nQVVFQmFpSUFPZ0FBSUFrZ0FFRUNkR29pQUNBQUtBSUFRUUZxTmdJQUlBa29BZ1FpQUVFQ1NTQUFRUUZ4Y2cwQUlBSWdCRUVCYWpZQ0FDQUxRUUZxSVFnTElBZEJNR29rQUNBSUM2QUZBUXgvSXdCQkVHc2lEQ1FBQW44Z0JFRUhUUVJBSUF4Q0FEY0RDQ0FNUVFocUlnVWdBeUFFRUFJYVFXd2dBQ0FCSUFJZ0JVRUlFQXdpQUNBQUlBUkxHeUFBSUFCQmlYOUpHd3dCQ3lBQVFRQWdBU2dDQUVFQmFpSU5RUUYwRUFNaEQwRlVJQU1vQUFBaUJrRVBjU0lBUVFwTERRQWFJQUlnQUVFRmFqWUNBQ0FESUFScUlnSkJCR3NoQnlBQ1FRZHJJUXNnQUVFR2FpRU9RUVFoQWlBR1FRUjJJUVZCSUNBQWRDSUlRUUZ5SVFsQkFDRUFRUUVoQmlBRElRUURRQUpBSUFaQkFYRkZCRUFEUUNBRlFYOXpRWUNBZ0lCNGNtZ2lCa0VZU1VVRVFDQUFRU1JxSVFBZ0JDQUxUUVIvSUFSQkEyb0ZJQVFnQzJ0QkEzUWdBbXBCSDNFaEFpQUhDeUlFS0FBQUlBSjJJUVVNQVFzTElBSWdCa0VlY1NJS2FrRUNhaUVDSUFaQkFYWkJBMndnQUdvZ0JTQUtka0VEY1dvaUFDQU5UdzBCQW44Z0JDQUxTeUFDUVFOMklBUnFJZ1VnQjB0eFJRUkFJQUpCQjNFaEFpQUZEQUVMSUFRZ0IydEJBM1FnQW1wQkgzRWhBaUFIQ3lJRUtBQUFJQUoySVFVTElBVWdDRUVCYTNFaUJpQUlRUUYwUVFGcklnb2dDV3NpRUVrRWZ5QU9RUUZyQlNBRklBcHhJZ1VnRUVFQUlBVWdDRTRiYXlFR0lBNExJUVVnRHlBQVFRRjBhaUFHUVFGcklnbzdBUUFnQUVFQmFpRUFJQUlnQldvaEFpQUlRUUVnQm1zZ0NpQUdRUUJLR3lBSmFpSUpTZ1JBSUFsQkFrZ05BVUVnSUFsbklnVnJJUTVCQVNBRlFSOXpkQ0VJQ3lBQUlBMVBEUUFnQ2tFQVJ5RUdBbjhnQkNBTFN5QUNRUU4xSUFScUlnVWdCMHR4UlFSQUlBSkJCM0VoQWlBRkRBRUxJQUlnQkNBSGEwRURkR3BCSDNFaEFpQUhDeUlFS0FBQUlBSjJJUVVNQVFzTFFXd2dDVUVCUncwQUdrRlFJQUFnRFVzTkFCcEJiQ0FDUVNCS0RRQWFJQUVnQUVFQmF6WUNBQ0FFSUFKQkIycEJBM1ZxSUFOckN5QU1RUkJxSkFBTDhnRUJBWDhnQWtVRVFDQUFRZ0EzQWdBZ0FFRUFOZ0lRSUFCQ0FEY0NDRUc0Znc4TElBQWdBVFlDRENBQUlBRkJCR28yQWhBZ0FrRUVUd1JBSUFBZ0FTQUNhaUlCUVFScklnTTJBZ2dnQUNBREtBQUFOZ0lBSUFGQkFXc3RBQUFpQVFSQUlBQWdBV2RCRjJzMkFnUWdBZzhMSUFCQkFEWUNCRUYvRHdzZ0FDQUJOZ0lJSUFBZ0FTMEFBQ0lETmdJQUFrQUNRQUpBSUFKQkFtc09BZ0VBQWdzZ0FDQUJMUUFDUVJCMElBTnlJZ00yQWdBTElBQWdBUzBBQVVFSWRDQURhallDQUFzZ0FTQUNha0VCYXkwQUFDSUJSUVJBSUFCQkFEWUNCRUZzRHdzZ0FDQUJaeUFDUVFOMGEwRUphallDQkNBQ0MwUUJBbjhnQVNBQ0x3RUFJZ01nQVNnQ0JHb2lCRFlDQkNBQUlBTkJBblJCb0IxcUtBSUFJQUVvQWdCQkFDQUVhM1p4TmdJQUlBRVFEeG9nQUNBQ1FRUnFOZ0lFQzU4QkFRUi9RUU1oQVNBQUtBSUVJZ0pCSUUwRVFDQUFLQUlJSWdFZ0FDZ0NFRThFUUNBQUlBSkJCM0UyQWdRZ0FDQUJJQUpCQTNacklnSTJBZ2dnQUNBQ0tBQUFOZ0lBUVFBUEN5QUFLQUlNSWdNZ0FVWUVRRUVCUVFJZ0FrRWdTUnNQQ3lBQUlBRWdBU0FEYXlBQ1FRTjJJZ1FnQVNBRWF5QURTU0lCR3lJRGF5SUVOZ0lJSUFBZ0FpQURRUU4wYXpZQ0JDQUFJQVFvQUFBMkFnQUxJQUVMU0FFRWZ5QUFLQUlFSUFBb0FnQkJBblJxSWdJdEFBSWdBaThCQUNFRUlBRWdBU2dDQkNJRklBSXRBQU1pQW1vMkFnUWdBQ0FFSUFFb0FnQWdCWFJCQUNBQ2EzWnFOZ0lBQzFJQkJIOGdBQ2dDQkNBQUtBSUFRUUowYWlJQ0xRQUNJQUl2QVFBaEJDQUJJQUl0QUFNaUFpQUJLQUlFYWlJRk5nSUVJQUFnQkNBQ1FRSjBRYUFkYWlnQ0FDQUJLQUlBUVFBZ0JXdDJjV28yQWdBTENBQWdBRUdJZjBzTEdnQWdBQVJBSUFFRVFDQUNJQUFnQVJFQ0FBOExJQUFRQmdzTHBnZ0NEWDhCZmlNQVFSQnJJZ2trQUNBSlFRQTJBZ3dnQ1VFQU5nSUlBbjhDUUNBRFFlZ0phaUFESUFsQkNHb2dDVUVNYWlBQklBSWdBMEdBQVdvUUN5SVBRWWgvU3cwQVFWUWdDU2dDRENJRUlBQW9BZ0FpQVVIL0FYRkJBV3BMRFFFYUlBQkJCR29oQ3lBQUlBRkIvNEdBZUhFZ0JFRVFkRUdBZ1B3SGNYSTJBZ0JCZnlBRUlBUkJBRWdiUVFGcUlRQkJBQ0VCSUFrb0FnZ2hCVUVBSVFJRFFDQUFJQUpHQkVBZ0JVRURheUVCUVFBaEFBTkFBa0JCQUNFQ0lBQWdBVTRFUUFOQUlBQWdCVTROQWlBRElBQWdBMnBCNkFscUxRQUFRUUowYWtGQWF5SUJJQUVvQWdBaUFVRUJhallDQUNBQklBTnFJQUE2QU9nSElBQkJBV29oQUF3QUN3QUZBMEFnQWtFRVJrVUVRQ0FESUFNZ0FDQUNhaUlIYWtIb0NXb3RBQUJCQW5ScVFVQnJJZ2dnQ0NnQ0FDSUlRUUZxTmdJQUlBTWdDR29nQnpvQTZBY2dBa0VCYWlFQ0RBRUxDeUFBUVFScUlRQU1BZ3NBQ3dzZ0JFRUJhaUVPSUFNb0FnQWhCMEVBSVFCQkFTRUlBMEFnQ0NBT1JnMERJQTRnQ0dzaEJDQURJQWhCQW5ScUtBSUFJUVVDUUFKQUFrQUNRQUpBQWtCQkFTQUlkRUVCZFNJTlFRRnJEZ2dBQVFRQ0JBUUVBd1FMUVFBaEFpQUZRUUFnQlVFQVNoc2hCaUFBSVFFRFFDQUNJQVpHRFFVZ0F5QUNJQWRxYWkwQTZBY2hDaUFMSUFGQkFYUnFJZ3dnQkRvQUFTQU1JQW82QUFBZ0FrRUJhaUVDSUFGQkFXb2hBUXdBQ3dBTFFRQWhBaUFGUVFBZ0JVRUFTaHNoQ2lBQUlRRURRQ0FDSUFwR0RRUWdDeUFCUVFGMGFpSUdJQU1nQWlBSGFtb3RBT2dISWd3NkFBSWdCaUFFT2dBQklBWWdERG9BQUNBR0lBUTZBQU1nQWtFQmFpRUNJQUZCQW1vaEFRd0FDd0FMUVFBaEFpQUZRUUFnQlVFQVNoc2hCaUFFUVFoMFFZRCtBM0VoQkNBQUlRRURRQ0FDSUFaR0RRTWdDeUFCUVFGMGFpQUVJQU1nQWlBSGFtb3RBT2dIY3ExQ2dZQ0VnSkNBd0FCK053QUFJQUpCQVdvaEFpQUJRUVJxSVFFTUFBc0FDMEVBSVFJZ0JVRUFJQVZCQUVvYklRWWdCRUVJZEVHQS9nTnhJUVFnQUNFQkEwQWdBaUFHUmcwQ0lBc2dBVUVCZEdvaUNpQUVJQU1nQWlBSGFtb3RBT2dIY3ExQ2dZQ0VnSkNBd0FCK0loRTNBQWdnQ2lBUk53QUFJQUpCQVdvaEFpQUJRUWhxSVFFTUFBc0FDMEVBSVFFZ0JVRUFJQVZCQUVvYklRb2dCRUVJZEVHQS9nTnhJUXdnQUNFRUEwQWdBU0FLUmcwQklBc2dCRUVCZEdvaEVDQU1JQU1nQVNBSGFtb3RBT2dIY3ExQ2dZQ0VnSkNBd0FCK0lSRkJBQ0VDQTBBZ0FpQU5Ua1VFUUNBUUlBSkJBWFJxSWdZZ0VUY0FHQ0FHSUJFM0FCQWdCaUFSTndBSUlBWWdFVGNBQUNBQ1FSQnFJUUlNQVFzTElBRkJBV29oQVNBRUlBMXFJUVFNQUFzQUN5QUlRUUZxSVFnZ0JTQUhhaUVISUFVZ0RXd2dBR29oQUF3QUN3QUZJQU1nQWtFQ2RHb2lCMEZBYXlBQk5nSUFJQUpCQVdvaEFpQUhLQUlBSUFGcUlRRU1BUXNBQ3dBTElBOExJQWxCRUdva0FBdnlBZ0VHZnlNQVFTQnJJZ1VrQUNBRUtBSUFJUVlnQlVFTWFpQUNJQU1RRFNJRFFZaC9UUVJBSUFSQkJHb2hBaUFBSUFGcUlnbEJBMnNoQkVFQUlBWkJFSFpyUVI5eElRTURRQ0FGUVF4cUVBOGdBQ0FFVDNKRkJFQWdBaUFGS0FJTUlnWWdCU2dDRUNJSGRDQURka0VCZEdvaUNDMEFBU0VLSUFBZ0NDMEFBRG9BQUNBQ0lBWWdCeUFLYWlJR2RDQURka0VCZEdvaUJ5MEFBQ0VJSUFVZ0JpQUhMUUFCYWpZQ0VDQUFJQWc2QUFFZ0FFRUNhaUVBREFFTEN3TkFJQVZCREdvUUR5RUhJQVVvQWd3aEJpQUZLQUlRSVFRZ0FDQUpUeUFIY2tVRVFDQUNJQVlnQkhRZ0EzWkJBWFJxSWdZdEFBQWhCeUFGSUFRZ0JpMEFBV28yQWhBZ0FDQUhPZ0FBSUFCQkFXb2hBQXdCQ3dzRFFDQUFJQWxQUlFSQUlBSWdCaUFFZENBRGRrRUJkR29pQnkwQUFTRUlJQUFnQnkwQUFEb0FBQ0FBUVFGcUlRQWdCQ0FJYWlFRURBRUxDMEZzUVd3Z0FTQUZLQUlVSUFVb0FoaEhHeUFFUVNCSEd5RURDeUFGUVNCcUpBQWdBd3ZQRkFFamZ5TUFRZEFBYXlJRkpBQkJiQ0VKQWtBZ0EwRUtTUTBBQWtBZ0F5QUNMd0FFSWdjZ0FpOEFBQ0lJSUFJdkFBSWlEV3BxUVFacUlneEpEUUFnQkM4QkFpRUdJQVZCUEdvZ0FrRUdhaUlDSUFnUURTSUpRWWgvU3cwQklBVkJLR29nQWlBSWFpSUNJQTBRRFNJSlFZaC9TdzBCSUFWQkZHb2dBaUFOYWlJQ0lBY1FEU0lKUVloL1N3MEJJQVVnQWlBSGFpQURJQXhyRUEwaUNVR0lmMHNOQVNBRVFRUnFJUW9nQUNBQmFpSWZRUU5ySVNCQkFDQUdhMEVmY1NFTElBVW9BZ2doRVNBRktBSWNJUklnQlNnQ01DRVRJQVVvQWtRaEZDQUZLQUlFSVFrZ0JTZ0NHQ0VOSUFVb0Fpd2hEQ0FGS0FKQUlRWWdCU2dDRUNFaElBVW9BaVFoSWlBRktBSTRJU01nQlNnQ1RDRWtJQVVvQWdBaEZTQUZLQUlVSVJZZ0JTZ0NLQ0VYSUFVb0Fqd2hHRUVCSVE4Z0FDQUJRUU5xUVFKMklnUnFJZ01nQkdvaUFpQUVhaUlaSVFRZ0FpRUlJQU1oQndOQUlBOUJBWEZGSUFRZ0lFOXlSUVJBSUFBZ0NpQVlJQVowSUF0MlFRSjBhaUlPTHdFQU93QUFJQTR0QUFJaEdpQU9MUUFESVJBZ0J5QUtJQmNnREhRZ0MzWkJBblJxSWc0dkFRQTdBQUFnRGkwQUFpRWJJQTR0QUFNaER5QUlJQW9nRmlBTmRDQUxka0VDZEdvaURpOEJBRHNBQUNBT0xRQUNJUndnRGkwQUF5RWRJQVFnQ2lBVklBbDBJQXQyUVFKMGFpSU9Md0VBT3dBQUlBNHRBQUloSGlBT0xRQURJUTRnQUNBUWFpSWxJQW9nR0NBR0lCcHFJZ1owSUF0MlFRSjBhaUlRTHdFQU93QUFJQkF0QUFJZ0VDMEFBeUVtSUFjZ0Qyb2lKeUFLSUJjZ0RDQWJhaUlhZENBTGRrRUNkR29pQnk4QkFEc0FBQ0FITFFBQ0lRd2dCeTBBQXlFUUlBZ2dIV29pR3lBS0lCWWdEU0FjYWlJUGRDQUxka0VDZEdvaUNDOEJBRHNBQUNBSUxRQUNJUTBnQ0MwQUF5RWNJQVFnRG1vaUhTQUtJQlVnQ1NBZWFpSU9kQ0FMZGtFQ2RHb2lDUzhCQURzQUFDQUdhaUVBUVFNaEJ3Si9JQlFnSkVrRVFDQUFJUVpCQXd3QkN5QUFRUWR4SVFZZ0ZDQUFRUU4yYXlJVUtBQUFJUmhCQUFzZ0NTMEFBeUVlSUFrdEFBSWhDQ0FNSUJwcUlRQWdFeUFqU1FSL0lBQUZJQk1nQUVFRGRtc2lFeWdBQUNFWFFRQWhCeUFBUVFkeEN5RU1JQTBnRDJvaEFDQUhjaUVKUVFNaER3Si9JQklnSWtrRVFDQUFJUTFCQXd3QkN5QUFRUWR4SVEwZ0VpQUFRUU4yYXlJU0tBQUFJUlpCQUFzZ0NDQU9haUVBSUFseUlCRWdJVWtFZnlBQUJTQVJJQUJCQTNackloRW9BQUFoRlVFQUlROGdBRUVIY1FzaENTQWxJQ1pxSVFBZ0VDQW5haUVISUJzZ0hHb2hDQ0FkSUI1cUlRUWdEM0pGSVE4TUFRc0xJQVVnRERZQ0xDQUZJQVkyQWtBZ0JTQU5OZ0lZSUFVZ0NUWUNCQ0FGSUJRMkFrUWdCU0FUTmdJd0lBVWdFallDSENBRklCRTJBZ2dnQlNBWU5nSThJQVVnRnpZQ0tDQUZJQlkyQWhRZ0JTQVZOZ0lBSUFJZ0Iwa2dBQ0FEUzNJTkFFRnNJUWtnQ0NBWlN3MEJJQU5CQTJzaENRTkFJQVZCUEdvUUQwVWdBQ0FKU1hFRVFDQUFJQW9nQlNnQ1BDSU5JQVVvQWtBaURIUWdDM1pCQW5ScUlnNHZBUUE3QUFBZ0FDQU9MUUFEYWlJR0lBb2dEU0FNSUE0dEFBSnFJZ0IwSUF0MlFRSjBhaUlNTHdFQU93QUFJQVVnQUNBTUxRQUNhallDUUNBR0lBd3RBQU5xSVFBTUFRVWdBMEVDYXlFTUEwQWdCVUU4YWhBUElRWWdCU2dDUENFTklBVW9Ba0FoQ1NBQUlBeExJQVp5UlFSQUlBQWdDaUFOSUFsMElBdDJRUUowYWlJR0x3RUFPd0FBSUFVZ0NTQUdMUUFDYWpZQ1FDQUFJQVl0QUFOcUlRQU1BUXNMQTBBZ0FDQU1TMFVFUUNBQUlBb2dEU0FKZENBTGRrRUNkR29pQmk4QkFEc0FBQ0FBSUFZdEFBTnFJUUFnQ1NBR0xRQUNhaUVKREFFTEN3SkFJQUFnQTA4TkFDQUFJQW9nRFNBSmRDQUxkaUlBUVFKMGFpSURMUUFBT2dBQUlBTXRBQU5CQVVZRVFDQUpJQU10QUFKcUlRa01BUXNnQ1VFZlN3MEFRU0FnQ1NBS0lBQkJBblJxTFFBQ2FpSUFJQUJCSUU4YklRa0xJQUpCQTJzaERBTkFJQVZCS0dvUUQwVWdCeUFNU1hFRVFDQUhJQW9nQlNnQ0tDSUdJQVVvQWl3aUFIUWdDM1pCQW5ScUlnMHZBUUE3QUFBZ0J5QU5MUUFEYWlJRElBb2dCaUFBSUEwdEFBSnFJZ0IwSUF0MlFRSjBhaUlHTHdFQU93QUFJQVVnQUNBR0xRQUNhallDTENBRElBWXRBQU5xSVFjTUFRVWdBa0VDYXlFR0EwQWdCVUVvYWhBUElRTWdCU2dDS0NFTUlBVW9BaXdoQUNBR0lBZEpJQU55UlFSQUlBY2dDaUFNSUFCMElBdDJRUUowYWlJREx3RUFPd0FBSUFVZ0FDQURMUUFDYWpZQ0xDQUhJQU10QUFOcUlRY01BUXNMQTBBZ0JpQUhTVVVFUUNBSElBb2dEQ0FBZENBTGRrRUNkR29pQXk4QkFEc0FBQ0FISUFNdEFBTnFJUWNnQUNBRExRQUNhaUVBREFFTEN3SkFJQUlnQjAwTkFDQUhJQW9nRENBQWRDQUxkaUlDUVFKMGFpSURMUUFBT2dBQUlBTXRBQU5CQVVZRVFDQUFJQU10QUFKcUlRQU1BUXNnQUVFZlN3MEFRU0FnQUNBS0lBSkJBblJxTFFBQ2FpSUFJQUJCSUU4YklRQUxJQmxCQTJzaERBTkFJQVZCRkdvUUQwVWdDQ0FNU1hFRVFDQUlJQW9nQlNnQ0ZDSUdJQVVvQWhnaUFuUWdDM1pCQW5ScUlnMHZBUUE3QUFBZ0NDQU5MUUFEYWlJRElBb2dCaUFDSUEwdEFBSnFJZ0owSUF0MlFRSjBhaUlHTHdFQU93QUFJQVVnQWlBR0xRQUNhallDR0NBRElBWXRBQU5xSVFnTUFRVWdHVUVDYXlFREEwQWdCVUVVYWhBUElRSWdCU2dDRkNFR0lBVW9BaGdoQnlBRElBaEpJQUp5UlFSQUlBZ2dDaUFHSUFkMElBdDJRUUowYWlJQ0x3RUFPd0FBSUFVZ0J5QUNMUUFDYWpZQ0dDQUlJQUl0QUFOcUlRZ01BUXNMQTBBZ0F5QUlTVVVFUUNBSUlBb2dCaUFIZENBTGRrRUNkR29pQWk4QkFEc0FBQ0FJSUFJdEFBTnFJUWdnQnlBQ0xRQUNhaUVIREFFTEN3SkFJQWdnR1U4TkFDQUlJQW9nQmlBSGRDQUxkaUlDUVFKMGFpSURMUUFBT2dBQUlBTXRBQU5CQVVZRVFDQUhJQU10QUFKcUlRY01BUXNnQjBFZlN3MEFRU0FnQnlBS0lBSkJBblJxTFFBQ2FpSUNJQUpCSUU4YklRY0xBMEFnQlJBUFJTQUVJQ0JKY1FSQUlBUWdDaUFGS0FJQUlnWWdCU2dDQkNJQ2RDQUxka0VDZEdvaURDOEJBRHNBQUNBRUlBd3RBQU5xSWdNZ0NpQUdJQUlnREMwQUFtb2lBblFnQzNaQkFuUnFJZ1F2QVFBN0FBQWdCU0FDSUFRdEFBSnFOZ0lFSUFNZ0JDMEFBMm9oQkF3QkJTQWZRUUpySVFNRFFDQUZFQThoQWlBRktBSUFJUVlnQlNnQ0JDRUlJQU1nQkVrZ0FuSkZCRUFnQkNBS0lBWWdDSFFnQzNaQkFuUnFJZ0l2QVFBN0FBQWdCU0FJSUFJdEFBSnFOZ0lFSUFRZ0FpMEFBMm9oQkF3QkN3c0RRQ0FESUFSSlJRUkFJQVFnQ2lBR0lBaDBJQXQyUVFKMGFpSUNMd0VBT3dBQUlBUWdBaTBBQTJvaEJDQUlJQUl0QUFKcUlRZ01BUXNMQWtBZ0JDQWZUdzBBSUFRZ0NpQUdJQWgwSUF0MklnSkJBblJxSWdNdEFBQTZBQUFnQXkwQUEwRUJSZ1JBSUFnZ0F5MEFBbW9oQ0F3QkN5QUlRUjlMRFFCQklDQUlJQW9nQWtFQ2RHb3RBQUpxSWdJZ0FrRWdUeHNoQ0F0QmJFRnNRV3hCYkVGc1FXeEJiRUZzSUFFZ0NFRWdSeHNnQlNnQ0NDQUZLQUlNUnhzZ0IwRWdSeHNnQlNnQ0hDQUZLQUlnUnhzZ0FFRWdSeHNnQlNnQ01DQUZLQUkwUnhzZ0NVRWdSeHNnQlNnQ1JDQUZLQUpJUnhzaENRd0pDd0FMQUFzQUN3QUxBQXNBQ3dBTEFBdEJiQ0VKQ3lBRlFkQUFhaVFBSUFrTDdCQUJIbjhqQUVIUUFHc2lCU1FBUVd3aENRSkFJQU5CQ2trTkFBSkFJQU1nQWk4QUJDSUdJQUl2QUFBaUJ5QUNMd0FDSWdocWFrRUdhaUlPU1EwQUlBUXZBUUloRHlBRlFUeHFJQUpCQm1vaUFpQUhFQTBpQ1VHSWYwc05BU0FGUVNocUlBSWdCMm9pQWlBSUVBMGlDVUdJZjBzTkFTQUZRUlJxSUFJZ0NHb2lBaUFHRUEwaUNVR0lmMHNOQVNBRklBSWdCbW9nQXlBT2F4QU5JZ2xCaUg5TERRRWdCRUVFYWlFS0lBQWdBV29pSEVFRGF5RWRRUUFnRDJ0QkgzRWhDeUFGS0FJSUlSRWdCU2dDSENFU0lBVW9BakFoRXlBRktBSkVJUlFnQlNnQ0JDRUpJQVVvQWhnaEJpQUZLQUlzSVFjZ0JTZ0NRQ0VJSUFVb0FoQWhIaUFGS0FJa0lSOGdCU2dDT0NFZ0lBVW9Ba3doSVNBRktBSUFJUlVnQlNnQ0ZDRVdJQVVvQWlnaEZ5QUZLQUk4SVJoQkFTRU5JQUFnQVVFRGFrRUNkaUlDYWlJT0lBSnFJZzhnQW1vaUdTRUVJQThoQWlBT0lRTURRQ0FOUlNBRUlCMVBja1VFUUNBS0lCZ2dDSFFnQzNaQkFYUnFJZ3d0QUFFaERTQUFJQXd0QUFBNkFBQWdDaUFYSUFkMElBdDJRUUYwYWlJTUxRQUJJUkFnQXlBTUxRQUFPZ0FBSUFvZ0ZpQUdkQ0FMZGtFQmRHb2lEQzBBQVNFYUlBSWdEQzBBQURvQUFDQUtJQlVnQ1hRZ0MzWkJBWFJxSWd3dEFBRWhHeUFFSUF3dEFBQTZBQUFnQ2lBWUlBZ2dEV29pQ0hRZ0MzWkJBWFJxSWd3dEFBRWhEU0FBSUF3dEFBQTZBQUVnQ2lBWElBY2dFR29pQjNRZ0MzWkJBWFJxSWd3dEFBRWhFQ0FESUF3dEFBQTZBQUVnQ2lBV0lBWWdHbW9pREhRZ0MzWkJBWFJxSWdZdEFBRWhHaUFDSUFZdEFBQTZBQUVnQ2lBVklBa2dHMm9pRzNRZ0MzWkJBWFJxSWdrdEFBRWhJaUFFSUFrdEFBQTZBQUVnQ0NBTmFpRUdRUU1oQ1FKL0lCUWdJVWtFUUVFRElRMGdCZ3dCQ3lBVUlBWkJBM1pySWhRb0FBQWhHRUVBSVEwZ0JrRUhjUXNoQ0NBSElCQnFJUVlnRXlBZ1NRUi9JQVlGSUJNZ0JrRURkbXNpRXlnQUFDRVhRUUFoQ1NBR1FRZHhDeUVISUF3Z0dtb2hEQ0FKSUExeUlSQkJBeUVOQW44Z0VpQWZTUVJBSUF3aEJrRUREQUVMSUF4QkIzRWhCaUFTSUF4QkEzWnJJaElvQUFBaEZrRUFDeUFiSUNKcUlRd2dFSEloRUNBUklCNUpCSDhnREFVZ0VTQU1RUU4yYXlJUktBQUFJUlZCQUNFTklBeEJCM0VMSVFrZ0JFRUNhaUVFSUFKQkFtb2hBaUFEUVFKcUlRTWdBRUVDYWlFQUlBMGdFSEpGSVEwTUFRc0xJQVVnQnpZQ0xDQUZJQWcyQWtBZ0JTQUdOZ0lZSUFVZ0NUWUNCQ0FGSUJRMkFrUWdCU0FUTmdJd0lBVWdFallDSENBRklCRTJBZ2dnQlNBWU5nSThJQVVnRnpZQ0tDQUZJQlkyQWhRZ0JTQVZOZ0lBSUFBZ0Rrc2dBeUFQUzNJTkFFRnNJUWtnQWlBWlN3MEJJQTVCQTJzaENRTkFJQVZCUEdvUUR5QUFJQWxQY2tVRVFDQUtJQVVvQWp3aUJpQUZLQUpBSWdkMElBdDJRUUYwYWlJSUxRQUJJUXdnQUNBSUxRQUFPZ0FBSUFvZ0JpQUhJQXhxSWdaMElBdDJRUUYwYWlJSExRQUFJUWdnQlNBR0lBY3RBQUZxTmdKQUlBQWdDRG9BQVNBQVFRSnFJUUFNQVFzTEEwQWdCVUU4YWhBUElRY2dCU2dDUENFR0lBVW9Ba0FoQ1NBQUlBNVBJQWR5UlFSQUlBb2dCaUFKZENBTGRrRUJkR29pQmkwQUFDRUhJQVVnQ1NBR0xRQUJhallDUUNBQUlBYzZBQUFnQUVFQmFpRUFEQUVMQ3dOQUlBQWdEazlGQkVBZ0NpQUdJQWwwSUF0MlFRRjBhaUlITFFBQklBQWdCeTBBQURvQUFDQUFRUUZxSVFBZ0NXb2hDUXdCQ3dzZ0QwRURheUVBQTBBZ0JVRW9haEFQSUFBZ0EwMXlSUVJBSUFvZ0JTZ0NLQ0lHSUFVb0Fpd2lCM1FnQzNaQkFYUnFJZ2d0QUFFaERpQURJQWd0QUFBNkFBQWdDaUFHSUFjZ0Rtb2lCblFnQzNaQkFYUnFJZ2N0QUFBaENDQUZJQVlnQnkwQUFXbzJBaXdnQXlBSU9nQUJJQU5CQW1vaEF3d0JDd3NEUUNBRlFTaHFFQThoQnlBRktBSW9JUVlnQlNnQ0xDRUFJQU1nRDA4Z0IzSkZCRUFnQ2lBR0lBQjBJQXQyUVFGMGFpSUdMUUFBSVFjZ0JTQUFJQVl0QUFGcU5nSXNJQU1nQnpvQUFDQURRUUZxSVFNTUFRc0xBMEFnQXlBUFQwVUVRQ0FLSUFZZ0FIUWdDM1pCQVhScUlnY3RBQUVoQ0NBRElBY3RBQUE2QUFBZ0EwRUJhaUVESUFBZ0NHb2hBQXdCQ3dzZ0dVRURheUVEQTBBZ0JVRVVhaEFQSUFJZ0EwOXlSUVJBSUFvZ0JTZ0NGQ0lHSUFVb0FoZ2lCM1FnQzNaQkFYUnFJZ2d0QUFFaERpQUNJQWd0QUFBNkFBQWdDaUFHSUFjZ0Rtb2lCblFnQzNaQkFYUnFJZ2N0QUFBaENDQUZJQVlnQnkwQUFXbzJBaGdnQWlBSU9nQUJJQUpCQW1vaEFnd0JDd3NEUUNBRlFSUnFFQThoQnlBRktBSVVJUVlnQlNnQ0dDRURJQUlnR1U4Z0IzSkZCRUFnQ2lBR0lBTjBJQXQyUVFGMGFpSUdMUUFBSVFjZ0JTQURJQVl0QUFGcU5nSVlJQUlnQnpvQUFDQUNRUUZxSVFJTUFRc0xBMEFnQWlBWlQwVUVRQ0FLSUFZZ0EzUWdDM1pCQVhScUlnY3RBQUVoQ0NBQ0lBY3RBQUE2QUFBZ0FrRUJhaUVDSUFNZ0NHb2hBd3dCQ3dzRFFDQUZFQThnQkNBZFQzSkZCRUFnQ2lBRktBSUFJZ0lnQlNnQ0JDSUdkQ0FMZGtFQmRHb2lCeTBBQVNFSUlBUWdCeTBBQURvQUFDQUtJQUlnQmlBSWFpSUNkQ0FMZGtFQmRHb2lCaTBBQUNFSElBVWdBaUFHTFFBQmFqWUNCQ0FFSUFjNkFBRWdCRUVDYWlFRURBRUxDd05BSUFVUUR5RUhJQVVvQWdBaEJpQUZLQUlFSVFJZ0JDQWNUeUFIY2tVRVFDQUtJQVlnQW5RZ0MzWkJBWFJxSWdZdEFBQWhCeUFGSUFJZ0JpMEFBV28yQWdRZ0JDQUhPZ0FBSUFSQkFXb2hCQXdCQ3dzRFFDQUVJQnhQUlFSQUlBb2dCaUFDZENBTGRrRUJkR29pQnkwQUFTRUlJQVFnQnkwQUFEb0FBQ0FFUVFGcUlRUWdBaUFJYWlFQ0RBRUxDMEZzUVd4QmJFRnNRV3hCYkVGc1FXd2dBU0FDUVNCSEd5QUZLQUlJSUFVb0FneEhHeUFEUVNCSEd5QUZLQUljSUFVb0FpQkhHeUFBUVNCSEd5QUZLQUl3SUFVb0FqUkhHeUFKUVNCSEd5QUZLQUpFSUFVb0FraEhHeUVKREFFTFFXd2hDUXNnQlVIUUFHb2tBQ0FKQzFnQkEzOENRQ0FBS0FLUTZ3RWlBVVVOQUNBQktBSUFJQUZCdE5VQmFpZ0NBQ0lDSUFGQnVOVUJhaWdDQUNJREVCTWdBZ1JBSUFNZ0FTQUNFUUlBREFFTElBRVFCZ3NnQUVFQU5nS2c2d0VnQUVJQU53T1E2d0VMNlFNQ0JIOENmaUFBUVFCQktCQURJUVFnQWtFQlFRVWdBeHNpQUVrRVFDQUFEd3NnQVVVRVFFRi9Ed3RCQVNFR0FrQUNRQ0FEUVFGR0RRQWdBeUVHSUFFb0FBQWlCVUdvNnI1cFJnMEFRWFloQXlBRlFYQnhRZERVdE1JQlJ3MEJRUWdoQXlBQ1FRaEpEUUVnQVRVQUJDRUlJQVJCQVRZQ0ZDQUVJQWczQXdCQkFBOExJQUVnQWlBR0VCb2lBeUFDU3cwQUlBUWdBellDR0VGeUlRTWdBQ0FCYWlJRlFRRnJMUUFBSWdKQkNIRU5BQ0FDUVNCeElnWkZCRUJCY0NFRElBVXRBQUFpQlVHbkFVc05BU0FGUVFkeHJVSUJJQVZCQTNaQkNtcXRoaUlJUWdPSWZpQUlmQ0VKSUFCQkFXb2hBQXNnQWtFR2RpRUZJQUpCQW5aQkFDRURBa0FDUUFKQUFrQWdBa0VEY1VFQmF3NERBQUVDQXdzZ0FDQUJhaTBBQUNFRElBQkJBV29oQUF3Q0N5QUFJQUZxTHdBQUlRTWdBRUVDYWlFQURBRUxJQUFnQVdvb0FBQWhBeUFBUVFScUlRQUxRUUZ4SVFJQ2ZnSkFBa0FDUUFKQUlBVkJBV3NPQXdFQ0F3QUxRbjhnQmtVTkF4b2dBQ0FCYWpFQUFBd0RDeUFBSUFGcU13QUFRb0FDZkF3Q0N5QUFJQUZxTlFBQURBRUxJQUFnQVdvcEFBQUxJUWdnQkNBQ05nSWdJQVFnQXpZQ0hDQUVJQWczQXdCQkFDRURJQVJCQURZQ0ZDQUVJQWdnQ1NBR0d5SUlOd01JSUFSQ2dJQUlJQWdnQ0VLQWdBaGFHejRDRUFzZ0F3dGZBUUYvUWJoL0lRTWdBVUVCUVFVZ0Foc2lBazhFZnlBQUlBSnFRUUZyTFFBQUlnQkJBM0ZCQW5SQm9CNXFLQUlBSUFKcUlBQkJCSFpCREhGQnNCNXFLQUlBYWlBQVFTQnhJZ0ZGYWlBQlFRVjJJQUJCd0FCSmNXb0ZRYmgvQ3dzTUFDQUFJQUVnQWtFQUVCa0xsd01DQlg4Q2ZpTUFRVUJxSWdRa0FBSkFBMEFnQVVFRlR3UkFBa0FnQUNnQUFFRndjVUhRMUxUQ0FVWUVRRUorSVFjZ0FVRUlTUTBFSUFBb0FBUWlBa0YzU3cwRUlBSkJDR29pQXlBQlN3MEVJQUpCZ1g5SkRRRU1CQXNnQkVFWWFpQUFJQUVRR3lFQ1FuNGdCQ2tER0VJQUlBUW9BaXhCQVVjYklBSWJJZ2RDZlZZTkF5QUhJQWg4SWdnZ0IxUkNmaUVIRFFNQ1FBSkFJQUZCQ0VrTkFDQUFLQUFBUVhCeFFkRFV0TUlCUncwQUlBQW9BQVFpQWtGM1N3MEZRYmgvSUFKQkNHb2lBaUFCSUFKSkd5RUREQUVMSUFSQkdHb2dBQ0FCRUJzaUFrR0lmMHNFUUNBQ0lRTU1BUXRCdUg4aEF5QUNEUUFnQVNBRUtBSXdJZ0pySVFVZ0FDQUNhaUVHQTBBZ0JpQUZJQVJCREdvUUhTSURRWWgvU3cwQklBTkJBMm9pQWlBRlN3UkFRYmgvSVFNTUFnc2dCU0FDYXlFRklBSWdCbW9oQmlBRUtBSVFSUTBBQ3lBRUtBSTRCSDlCdUg4aEF5QUZRUVJKRFFFZ0JrRUVhZ1VnQmdzZ0FHc2hBd3NnQTBHSWYwc05Bd3NnQVNBRGF5RUJJQUFnQTJvaEFBd0JDd3RDZmlBSUlBRWJJUWNMSUFSQlFHc2tBQ0FIQzJRQkFYOUJ1SDhoQXdKQUlBRkJBMGtOQUNBQUxRQUNJUUVnQWlBQUx3QUFJZ0JCQVhFMkFnUWdBaUFBUVFGMlFRTnhJZ00yQWdBZ0FpQUFJQUZCRUhSeVFRTjJJZ0EyQWdnQ1FBSkFJQU5CQVdzT0F3SUJBQUVMUVd3UEN5QUFJUU1MSUFNTFJBRUNmeUFCSUFJb0FnUWlBeUFCS0FJRWFpSUVOZ0lFSUFBZ0EwRUNkRUdnSFdvb0FnQWdBU2dDQUVFQUlBUnJkbkUyQWdBZ0FSQVBHaUFBSUFKQkNHbzJBZ1FMemdFQkJuOUJ1bjhoQ2dKQUlBSW9BZ1FpQ0NBQ0tBSUFJZ2xxSWcwZ0FTQUFhMHNOQUVGc0lRb2dDU0FFSUFNb0FnQWlDMnRMRFFBZ0FDQUphaUlFSUFJb0FnZ2lER3NoQWlBQUlBRkJJR3NpQUNBTElBbEJBQkFnSUFNZ0NTQUxhallDQUFKQUFrQWdCQ0FGYXlBTVR3UkFJQUloQlF3QkN5QU1JQVFnQm10TERRSWdCeUFISUFJZ0JXc2lBbW9pQVNBSWFrOEVRQ0FFSUFFZ0NCQUtHZ3dDQ3lBQ0lBaHFJUWdnQkNBQlFRQWdBbXNRQ2lBQ2F5RUVDeUFFSUFBZ0JTQUlRUUVRSUFzZ0RTRUtDeUFLQzhjRUFRSi9JQUFnQTJvaEJnSkFJQU5CQjB3RVFBTkFJQUFnQms4TkFpQUFJQUl0QUFBNkFBQWdBRUVCYWlFQUlBSkJBV29oQWd3QUN3QUxJQVJCQVVZRVFBSkFJQUFnQW1zaUJVRUhUUVJBSUFBZ0FpMEFBRG9BQUNBQUlBSXRBQUU2QUFFZ0FDQUNMUUFDT2dBQ0lBQWdBaTBBQXpvQUF5QUFJQUlnQlVFQ2RDSUZRY0FlYWlnQ0FHb2lBaWdBQURZQUJDQUNJQVZCNEI1cUtBSUFheUVDREFFTElBQWdBaWtBQURjQUFBc2dBa0VJYWlFQ0lBQkJDR29oQUFzZ0FTQUdUd1JBSUFBZ0Eyb2hBU0FFUVFGSElBQWdBbXRCRDBweVJRUkFBMEFnQUNBQ0tRQUFOd0FBSUFKQkNHb2hBaUFBUVFocUlnQWdBVWtOQUF3REN3QUxJQUFnQWlrQUFEY0FBQ0FBSUFJcEFBZzNBQWdnQTBFUlNRMEJJQUJCRUdvaEFBTkFJQUFnQWlrQUVEY0FBQ0FBSUFJcEFCZzNBQWdnQUNBQ0tRQWdOd0FRSUFBZ0Fpa0FLRGNBR0NBQ1FTQnFJUUlnQUVFZ2FpSUFJQUZKRFFBTERBRUxBa0FnQUNBQlN3UkFJQUFoQVF3QkN5QUJJQUJySVFVQ1FDQUVRUUZISUFBZ0FtdEJEMHB5UlFSQUlBSWhBd05BSUFBZ0F5a0FBRGNBQUNBRFFRaHFJUU1nQUVFSWFpSUFJQUZKRFFBTERBRUxJQUFnQWlrQUFEY0FBQ0FBSUFJcEFBZzNBQWdnQlVFUlNBMEFJQUJCRUdvaEFDQUNJUU1EUUNBQUlBTXBBQkEzQUFBZ0FDQURLUUFZTndBSUlBQWdBeWtBSURjQUVDQUFJQU1wQUNnM0FCZ2dBMEVnYWlFRElBQkJJR29pQUNBQlNRMEFDd3NnQWlBRmFpRUNDd05BSUFFZ0JrOE5BU0FCSUFJdEFBQTZBQUFnQVVFQmFpRUJJQUpCQVdvaEFnd0FDd0FMQzY0SEFnVi9BWDRqQUVHQUFXc2lFU1FBSUJFZ0F6WUNmRUYvSVE4Q1FBSkFBa0FDUUFKQUlBSU9CQUVBQXdJRUN5QUdSUVJBUWJoL0lROE1CQXRCYkNFUElBVXRBQUFpQWlBRFN3MERJQWdnQWtFQ2RDSUNhaWdDQUNFRElBSWdCMm9vQWdBaEFpQUFRUUE2QUFzZ0FFSUFOd0lBSUFBZ0FqWUNEQ0FBSUFNNkFBb2dBRUVBT3dFSUlBRWdBRFlDQUVFQklROE1Bd3NnQVNBSk5nSUFRUUFoRHd3Q0N5QUtSUVJBUVd3aER3d0NDMEVBSVE4Z0MwVWdERUVaU0hJTkFVRUlJQVIwUVFocUlRQkJBQ0VEQTBBZ0FDQURUUTBDSUFOQlFHc2hBd3dBQ3dBTFFXd2hEeUFSSUJGQi9BQnFJQkZCK0FCcUlBVWdCaEFNSWdOQmlIOUxEUUFnRVNnQ2VDSUNJQVJMRFFBZ0VTZ0NmRUVCYWlFSklBQkJDR29oQzBHQWdBSWdBblJCRUhVaEJVRUJJUkJCQVNBQ2RDSVBRUUZySWdvaEVnTkFJQWtnRGtjRVFBSkFJQkVnRGtFQmRDSUVhaThCQUNJTVFmLy9BMFlFUUNBTElCSkJBM1JxSUE0MkFnUWdFa0VCYXlFU1FRRWhEQXdCQ3lBUVFRQWdCU0FNd1VvYklSQUxJQVFnRFdvZ0REc0JBQ0FPUVFGcUlRNE1BUXNMSUFBZ0FqWUNCQ0FBSUJBMkFnQUNRQ0FLSUJKR0JFQWdEVUhxQUdvaEJrRUFJUkJCQUNFTUEwQWdDU0FRUmdSQUlBOUJBM1lnRDBFQmRtcEJBMm9pQlVFQmRDRUVRUUFoREVFQUlSSURRRUVBSVE0Z0R5QVNUUTBFQTBBZ0RrRUNSd1JBSUFzZ0JTQU9iQ0FNYWlBS2NVRURkR29nQmlBT0lCSnFhaTBBQURZQ0JDQU9RUUZxSVE0TUFRc0xJQkpCQW1vaEVpQUVJQXhxSUFweElRd01BQXNBQlNBUklCQkJBWFJxTGdFQUlRVWdCaUFNYWlJRUlCTTNBQUJCQ0NFT0EwQWdCU0FPU2dSQUlBUWdEbW9nRXpjQUFDQU9RUWhxSVE0TUFRc0xJQk5DZ1lLRWlKQ2d3SUFCZkNFVElCQkJBV29oRUNBRklBeHFJUXdNQVFzQUN3QUxJQTlCQTNZZ0QwRUJkbXBCQTJvaEJVRUFJUkJCQUNFT0EwQWdDU0FRUmcwQlFRQWhEQ0FSSUJCQkFYUnFMZ0VBSWdSQkFDQUVRUUJLR3lFRUEwQWdCQ0FNUndSQUlBc2dEa0VEZEdvZ0VEWUNCQU5BSUFVZ0Rtb2dDbkVpRGlBU1N3MEFDeUFNUVFGcUlRd01BUXNMSUJCQkFXb2hFQXdBQ3dBTElBSkJBV29oQlVFQUlRd0RRQ0FNSUE5SEJFQWdEU0FMSUF4QkEzUnFJZ2tvQWdRaUJFRUJkR29pQWlBQ0x3RUFJZ1pCQVdvN0FRQWdDU0FGSUFablFXQnphaUlDT2dBRElBa2dCaUFDZENBUGF6c0JBQ0FKSUFnZ0JFRUNkQ0lDYWlnQ0FEb0FBaUFKSUFJZ0Iyb29BZ0EyQWdRZ0RFRUJhaUVNREFFTEN5QUJJQUEyQWdBZ0F5RVBDeUFSUVlBQmFpUUFJQThMN1ZvQ08zOEdmaU1BUWVBQmF5SUVKQUFDUUVHdzdBa1FCU0lGUlFSQVFVQWhCd3dCQ3lBRlFnQTNBdlRxQVNBRlFRQTJBc1RyQVNBRlFRQTJBclRyQVNBRlFnQTNBcHpyQVNBRlFRQTJBcmpwQVNBRlFRQTJBcXpzQ1NBRlFnQTNBdFRyQVNBRlFnQTNBcXpyQVNBRlFnQTNBNGpyQVNBRlFnQTNBdVRxQVNBRlFnQTNBdVRyQVNBRlFZR0FnTUFBTmdLODZ3RWdCVUlBTndLazZ3RWdCVUg4NmdGcVFRQTJBZ0FnQlVHUTZ3RnFRZ0EzQXdBZ0JSQVlJQVZCck5VQmFpRVVJQVZCK09zQmFpRWNJQVZCc09vQmFpRWlJQVZCb0RCcUlTb2dCVUdZSUdvaEt5QUZRYWpRQUdvaEhpQUZRUkJxSVN3Z0JVRUlhaUVvSUFWQkJHb2hMU0FGUWNEcEFXb2hLU0FGUVlqckFXb2dCRUdVQVdvaEx5QUVRWXdCYWlFd0lBUkJoQUZxSVRFZ0JFSGNBR29oTWlBRVFkUUFhaUV6SUFSQnpBQnFJVFFnQUNFZEFrQUNRQUpBQWtBQ1FBTkFRUUZCQlNBRktBTGs2Z0ViSVFZQ1FBTkFJQU1nQmtrTkFTQUNLQUFBUVhCeFFkRFV0TUlCUmdSQVFiaC9JUWNnQTBFSVNRMElJQUlvQUFRaURrRjNTd1JBUVhJaEJ3d0pDeUFESUE1QkNHb2lDVWtOQ0NBT1FZQi9Td1JBSUFraEJ3d0pDeUFESUFscklRTWdBaUFKYWlFQ0RBRUxDeUFGUWdBM0FxenBBU0FGUWdBM0EranBBU0FGUVFBMkFwanJBU0FGUWdBM0E0RHFBU0FGUWdNM0EvanBBU0FGUWJUcEFXcENBRGNDQUNBRlFmRHBBV3BDQURjREFDQUZRYWpRQUdvaUNVR01nSURnQURZQ0FDQUZRYXpRQVdwQjRCSXBBZ0EzQWdBZ0JVRzAwQUZxUWVnU0tBSUFOZ0lBSUFVZ0JVRVFhallDQUNBRklBVkJvREJxTmdJRUlBVWdCVUdZSUdvMkFnZ2dCU0FKTmdJTUlBVkJBVUVGSUFVb0F1VHFBUnMyQXJ6cEFRSkFJQUZGRFFBZ0JTZ0NyT2tCSWdrZ0hVWU5BQ0FGSUFrMkFyanBBU0FGSUIwMkFxenBBU0FGS0FLdzZRRWhEaUFGSUIwMkFyRHBBU0FGSUIwZ0RpQUphMm8yQXJUcEFRdEJ1SDhoQ1NBRFFRVkJDU0FGS0FMazZnRWlCaHRKRFFVZ0FrRUJRUVVnQmhzZ0JoQWFJZzVCaUg5TEJFQWdEaUVKREFVTElBTWdEa0VEYWtrTkJTQXBJQUlnRGlBR0VCa2lCa0dJZjBzRVFDQUdJUWtNQlFzZ0JnMEZBa0FDUUNBRktBS282d0ZCQVVjTkFDQUZLQUtrNndFaUNVVU5BQ0FGS0FLVTZ3RkZEUUFnQ1NnQ0JFRUJheUlISUFVb0F0enBBU0lLclVLSGxhK3ZtTGJlbTU1L2ZrTEp6OW15OGVXNjZpZUZRaGVKUXMvVzA3N1N4NnZaUW41QytmUGQ4Wm4ybWFzV2ZDSS9RaUdJSUQrRlFzL1cwNzdTeDZ2WlFuNGlQMElkaUNBL2hVTDU4OTN4bWZhWnF4WitJajlDSUlnZ1A0V25jU0VHSUFrb0FnQWhGUU5BUVFBaENBSkFJQlVnQmtFQ2RHb29BZ0FpQ1VVTkFDQUpLQUlJUVFoSkRRQWdDU2dDQkNJU0tBQUFRYmZJd3VGK1J3MEFJQklvQUFRaENBc2dDQ0FLUndSQUlBWWdCM0ZCQVdvaEJpQUlEUUVMQ3lBSlJRMEFJQVVRR0NBRlFYODJBcURyQVNBRklBazJBcFRyQVNBRklBVW9BdHpwQVNJSU5nS1k2d0VNQVFzZ0JTZ0MzT2tCSVFnTEFrQWdDRVVOQUNBRktBS1k2d0VnQ0VZTkFFRmdJUWtNQmdzQ1FDQUZLQUxnNlFFRVFDQUZJQVVvQXVqcUFTSUpSVFlDN09vQklBa05BU0FGUXZucTBORG55YUhrNFFBM0E2anFBU0FGUWdBM0E2RHFBU0FGUXMvVzA3N1N4NnZaUWpjRG1Pb0JJQVZDMXV1Qzd1cjlpZlhnQURjRGtPb0JJQVZDQURjRGlPb0JJQ0pCQUVFb0VBTWFEQUVMSUFWQkFEWUM3T29CQ3lBQklCMXFJU1VnQlNBRktRUG82UUVnRHExOE53UG82UUVnQXlBT2F5RURJQUlnRG1vaEFpQWRJUTREUUNBQ0lBTWdCRUVzYWhBZEloVkJpSDlMQkVBZ0ZTRUpEQVlMSUFOQkEyc2lOU0FWU1EwRUlBSkJBMm9oRzBGc0lRa0NRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBRUtBSXNEZ01DQVFBVkN5QVZRZi8vQjBzTkV5QVZRUU5KRFJJZ0JTa0R5T2tCSVQ4Q1FBSkFJQnN0QUFBaUNVRURjU0lhUVFGckRnTUdBUUFIQ3lBRktBS0E2Z0VOQUVGaUlRa01GUXNnRlVFRlNRMFNJQnNvQUFBaEF3Si9Ba0FDUUFKQUlBbEJBblpCQTNFaUNVRUNhdzRDQVFJQUN5QUpRUUJISVFjZ0EwRUVka0gvQjNFaEMwRURJUVlnQTBFT2RrSC9CM0VNQWd0QkJDRUdJQU5CQkhaQi8vOEFjU0VMUVFFaEJ5QURRUkoyREFFTElBTkJCSFpCLy84UGNTSUxRWUNBQ0VzTkUwRUJJUWRCQlNFR0lBSXRBQWRCQ25RZ0EwRVdkbklMSWdnZ0Jtb2lDU0FWU3cwU0FrQWdDMEdCQmtrTkFDQUZLQUtjNndGRkRRQkJBQ0VEQTBBZ0EwR0RnQUZMRFFFZ0EwRkFheUVEREFBTEFBc2dCaUFiYWlFUElCcEJBMGNOQmlBRktBSU1JZ0l0QUFGQkNIUWhBeUFIRFFjZ0EwVU5DQ0FFUWZBQWFpQVBJQWdRRFNJRFFZaC9TdzBKSUFKQkJHb2hCaUFMSUJ4cUloSkJBMnNoQ2tFQUlBSXZBUUpyUVI5eElRY2dIQ0VEQTBBZ0JFSHdBR29RRDBVZ0F5QUtTWEVFUUNBRElBWWdCQ2dDY0NJSUlBUW9BblFpRDNRZ0IzWkJBblJxSWdJdkFRQTdBQUFnQXlBQ0xRQURhaUlESUFZZ0NDQVBJQUl0QUFKcUlnaDBJQWQyUVFKMGFpSUNMd0VBT3dBQUlBUWdDQ0FDTFFBQ2FqWUNkQ0FESUFJdEFBTnFJUU1NQVFVZ0VrRUNheUVJQTBBZ0JFSHdBR29RRHlFUElBUW9BbkFoQ2lBRUtBSjBJUUlnQXlBSVN5QVBja1VFUUNBRElBWWdDaUFDZENBSGRrRUNkR29pQ2k4QkFEc0FBQ0FFSUFJZ0NpMEFBbW8yQW5RZ0F5QUtMUUFEYWlFRERBRUxDd05BSUFNZ0NFMEVRQ0FESUFZZ0NpQUNkQ0FIZGtFQ2RHb2lEeThCQURzQUFDQURJQTh0QUFOcUlRTWdBaUFQTFFBQ2FpRUNEQUVMQ3dKQUlBTWdFazhOQUNBRElBWWdDaUFDZENBSGRrRUNkR29pQXkwQUFEb0FBQ0FETFFBRFFRRkdCRUFnQWlBRExRQUNhaUVDREFFTElBSkJIMHNOQUVFZ0lBSWdBeTBBQW1vaUFpQUNRU0JQR3lFQ0MwRnNRV3dnQ3lBRUtBSjRJQVFvQW54SEd5QUNRU0JIR3lFRERBc0xBQXNBQ3lBRUtBSTBJZ0lnSlNBT2Ewc05DaUFPUlFSQVFRQWhDU0FDRFFJTURnc2dEaUFiTFFBQUlBSVFBeG9nQWlFSkRBd0xJQlVnSlNBT2Ewc05DU0FPRFFGQkFDRUpJQlZGRFF3TFFiWi9JUWtNRVFzZ0RpQWJJQlVRQWhvZ0ZTRUpEQW9MSUJ3Z0d3Si9Ba0FDUUFKQUlBbEJBblpCQTNGQkFXc09Bd0VBQWdBTElBbEJBM1loQTBFQkRBSUxJQnN2QUFCQkJIWWhBMEVDREFFTElCVkJCRWtORGlBQ0x3QURJQUl0QUFWQkVIUnlJZ0pCajRDQUFVc05EaUFDUVFSMklRTkJBd3NpQW1vdEFBQWdBMEVnYWhBRElRa2dCU0FETmdLQTZ3RWdCU0FKTmdMdzZnRWdBa0VCYWlFSkRBVUxJQlVDZndKQUFrQUNRQ0FKUVFKMlFRTnhRUUZyRGdNQkFBSUFDeUFKUVFOMklRTkJBUXdDQ3lBYkx3QUFRUVIySVFOQkFnd0JDeUFDTHdBRElBSXRBQVZCRUhSeVFRUjJJUU5CQXdzaUFpQURhaUlKUVNCcVNRUkFJQWtnRlVzTkRTQWNJQUlnRzJvZ0F4QUNJUUlnQlNBRE5nS0E2d0VnQlNBQ05nTHc2Z0VnQWlBRGFpSUNRZ0EzQUJnZ0FrSUFOd0FRSUFKQ0FEY0FDQ0FDUWdBM0FBQU1CUXNnQlNBRE5nS0E2d0VnQlNBQ0lCdHFOZ0x3NmdFTUJBc2dCMFVFUUNBZUlBOGdDQ0FVRUJRaUFrR0lmMHNnQWlBSVQzSU5EQ0FjSUFzZ0FpQVBhaUFJSUFKcklCNFFGU0VEREFNTElBdEZJQWhGY2cwTElBdEJDSFlpQXlBSUlBdEpCSDhnQ0VFRWRDQUxiZ1ZCRHd0QkdHd2lBa0dNQ0dvb0FnQnNJQUpCaUFocUtBSUFhaUlHUVFOMklBWnFJQUpCZ0FocUtBSUFJQUpCaEFocUtBSUFJQU5zYWtrRVFDTUFRUkJySWhBa0FDQWVLQUlBSVFNZ0ZFSHdCR3BCQUVIc0FCQURJUVpCVkNFQ0FrQWdBMEgvQVhFaURFRU1TdzBBQWtBZ0ZFSGNDV29nQmlBUVFRaHFJQkJCREdvZ0R5QUlJQlJCM0F0cUloY1FDeUlTUVloL1N3MEFJQkFvQWd3aUJpQU1TdzBCSUJSQnFBVnFJUTBnRkVHa0JXb2hOaUFlUVFScUlSRWdBMEdBZ0lCNGNTRTNJQVpCQVdvaUV5RUNJQVloQXdOQUlBSWlCMEVCYXlFQ0lBTWlDa0VCYXlFRElCUWdDa0VDZEdvb0F2QUVSUTBBQzBFQklBY2dCMEVCVFJzaEZrRUFJUWRCQVNFQ0EwQWdBaUFXUndSQUlCUWdBa0VDZENJRGFpZ0M4QVFoR0NBRElBMXFJQWMyQWdBZ0FrRUJhaUVDSUFjZ0dHb2hCd3dCQ3dzZ0RTQUhOZ0lBUVFBaEFpQVFLQUlJSVFNRFFDQUNJQU5IQkVBZ0RTQUNJQlJxUWR3SmFpMEFBQ0lZUVFKMGFpSVpJQmtvQWdBaUdVRUJhallDQUNBVUlCbEJBWFJxSWhrZ0dEb0EzUVVnR1NBQ09nRGNCU0FDUVFGcUlRSU1BUXNMUVFBaEF5QU5RUUEyQWdBZ0RDQUdRWDl6YWlFR1FRRWhBZ05BSUFJZ0ZrY0VRQ0FVSUFKQkFuUnFJZzBnQXpZQ0FDQU5LQUx3QkNBQ0lBWnFkQ0FEYWlFRElBSkJBV29oQWd3QkN3c2dEQ0FUSUFwcklnWnJRUUZxSVFvZ0JpRURBMEFnQXlBS1NRUkFJQlFnQTBFMGJHb2hEVUVCSVFJRFFDQUNJQlpIQkVBZ0RTQUNRUUowSWhocUlCUWdHR29vQWdBZ0EzWTJBZ0FnQWtFQmFpRUNEQUVMQ3lBRFFRRnFJUU1NQVFzTElCY2dGRUUwRUFJaE9DQVVRWkFNYWlFNUlCTWdER3NoT2lBVVFkd0ZhaUVYUVFBaENnTkFBa0FDUUNBSElBcEhCRUJCQVNBTUlCTWdGeUFLUVFGMGFpSUNMUUFCSWcxcklnTnJJaGgwSVJrZ0FpMEFBQ0VXSURnZ0RVRUNkR29pSHlnQ0FDRUNJQVlnR0UwRVFDQTJRUUVnQXlBNmFpSU5JQTFCQVV3YklpQkJBblFpSkdvb0FnQWhEU0E1SUJRZ0EwRTBiR3BCTkJBQ0lTRWdEVUVCZENFbUlCRWdBa0VDZEdvaEl5QWdRUUZORFFJZ0EwRVFkRUdBZ1B3SGNTQVdja0dBZ0lBSWNpRWdJQ0VnSkdvb0FnQWhKRUVBSVFJRFFDQUNJQ1JHRFFNZ0l5QUNRUUowYWlBZ05nRUFJQUpCQVdvaEFnd0FDd0FMSUFJZ0FpQVphaUlOSUFJZ0RVc2JJUTBnQTBFUWRFR0FnUHdIY1NBV2NrR0FnSUFJY2lFREEwQWdBaUFOUmcwRElCRWdBa0VDZEdvZ0F6WUJBQ0FDUVFGcUlRSU1BQXNBQ3lBZUlBeEJFSFFnTjNJZ0RISkJnQUp5TmdJQURBTUxJQWNnRFdzaEpDQVhJQ1pxSVNaQkFDRU5BMEFnRFNBa1JnMEJRUUVnR0NBVElDWWdEVUVCZEdvaUp5MEFBU0lDYXlJN2EzUWlQQ0FoSUFKQkFuUnFJaUFvQWdBaUFtb2hQU0FESUR0cVFSQjBRWUNBL0FkeElDY3RBQUJCQ0hSeUlCWnlRWUNBZ0JCeUlTY0RRQ0FqSUFKQkFuUnFJQ2MyQVFBZ0FrRUJhaUlDSUQxSkRRQUxJQ0FnSUNnQ0FDQThhallDQUNBTlFRRnFJUTBNQUFzQUN5QWZJQjhvQWdBZ0dXbzJBZ0FnQ2tFQmFpRUtEQUFMQUFzZ0VpRUNDeUFRUVJCcUpBQWdBa0dJZjBzZ0FpQUlUM0lORENBY0lBc2dBaUFQYWlBSUlBSnJJQjRRRmlFRERBTUxJQjRnRHlBSUlCUVFGQ0lDUVloL1N5QUNJQWhQY2cwTElCd2dDeUFDSUE5cUlBZ2dBbXNnSGhBWElRTU1BZ3NnQXdSQUlCd2dDeUFQSUFnZ0FoQVdJUU1NQWdzZ0hDQUxJQThnQ0NBQ0VCY2hBd3dCQ3lBY0lBc2dEeUFJSUFJUUZTRURDeUFEUVloL1N3MElJQVVnQ3pZQ2dPc0JJQVVnSERZQzhPb0JJQVZCQVRZQ2dPb0JJQnBCQWtZRVFDQUZJQjQyQWd3TElBc2dIR29pQWtJQU53QUFJQUpDQURjQUdDQUNRZ0EzQUJBZ0FrSUFOd0FJSUFsQmlIOUxEUW9MSUFrZ0ZVWU5DQ0FWSUFscklRWWdCU2dDbk9zQklRb0NRQ0FKSUJ0cUlnTXRBQUFpRDBVRVFFRUJJUUpCQUNFUFFiaC9JUWtnQmtFQlJnMEJEQXNMQW44Z0EwRUJhaUFQd0NJQ1FRQk9EUUFhSUFKQmYwWUVRQ0FHUVFOSURRc2dBeThBQVVHQS9nRnFJUThnQTBFRGFnd0JDeUFHUVFKSURRb2dBeTBBQVNBUFFRaDBja0dBZ0FKcklROGdBMEVDYWdzaEVrRzRmeUVKSUJKQkFXb2lBaUFWSUJ0cUlnZExEUW9nTENBRklCSXRBQUFpRWtFR2RrRWpRUWtnQWlBSElBSnJRY0FRUWRBUlFmQVNJQVVvQW9UcUFTQUtJQThnRkJBaElnbEJpSDlMRFFnZ0t5QW9JQkpCQkhaQkEzRkJIMEVJSUFJZ0NXb2lBaUFISUFKclFZQUxRWUFNUVlBWElBVW9Bb1RxQVNBRktBS2M2d0VnRHlBVUVDRWlDRUdJZjBzTkNFRnNJUWtnS2lBdElCSkJBblpCQTNGQk5FRUpJQUlnQ0dvaUFpQUhJQUpyUVlBTlFlQU9RWkFaSUFVb0FvVHFBU0FGS0FLYzZ3RWdEeUFVRUNFaUIwR0lmMHNOQ2lBQ0lBZHFJQU5ySWdJaENTQUNRWWgvU3cwS0N5QU9JQTlCQUV4eURRRUxRYnAvSVFrTUNBc2dKU0FPYXlFSklBWWdBbXNoQmlBQ0lBTnFJUWNDUUFKQUFrQWdDa1VFUUNBUFFRbElJQVVwQThqcEFVS0JnSUFJVkhJTkFpQW9LQUlBSWdKQkNHb2hFaUFDS0FJRUlRcEJBQ0VEUVFBaEFnTkFJQU1nQ25aRkJFQWdBaUFTSUFOQkEzUnFMUUFDUVJaTGFpRUNJQU5CQVdvaEF3d0JDd3NnQlVFQU5nS2M2d0VnQWtFSUlBcHJkRUVVVHcwQkRBTUxJQVZCQURZQ25Pc0JDeUFFSUFVb0F2RHFBU0lETmdMY0FTQUpJQTVxSVJZZ0F5QUZLQUtBNndGcUlSY0NRQ0FQUlFSQUlBNGhCd3dCQ3lBRktBSzQ2UUVoR2lBRktBSzA2UUVoR0NBRktBS3c2UUVoRWlBRlFRRTJBb1RxQVVFQUlRTURRQ0FEUVFOSEJFQWdCQ0FEUVFKMElnSnFJQUlnQldwQnJOQUJhaWdDQURZQ1pDQURRUUZxSVFNTUFRc0xRV3doQ1NBRVFUaHFJZ0lnQnlBR0VBMUJpSDlMRFFOQkNDQVBJQTlCQ0U0YklSOGdOQ0FDSUFVb0FnQVFIaUF6SUFJZ0JTZ0NDQkFlSURJZ0FpQUZLQUlFRUI0Z0RpQVNheUVaUVFBaENBTkFJQVJCT0dvUUQwRURSaUFJSUI5T2NrVUVRQ0FFS0FKUUlBUW9Ba3hCQTNScUtRSUFJa0NuSWdkQkVIWWlFVUgvQVhFaEN5QUVLQUpnSUFRb0FseEJBM1JxS1FJQUlrR25JZ3hCRUhZaUlVSC9BWEVoRUNBRUtBSllJQVFvQWxSQkEzUnFLUUlBSWtKQ0lJaW5JUVlnUVVJZ2lDQkFRaUNJcHlFREFrQWdRa0lRaUtjaUNrSC9BWEVpQWtFQ1R3UkFBa0FnQWtFWlNTQS9Rb0dBZ0JCVWNrVUVRQ0FFUVNBZ0JDZ0NQQ0lLYXlJTklBSWdBaUFOU3hzaUV5QUthallDUENBR0lBUW9BamdnQ25SQkFDQVRhM1lnQWlBVGF5SVRkR29oQ2lBRVFUaHFFQThhSUFJZ0RVME5BU0FFSUFRb0Fqd2lBaUFUYWpZQ1BDQUVLQUk0SUFKMFFRQWdFMnQySUFwcUlRb01BUXNnQkNBQ0lBUW9BandpRFdvMkFqd2dCQ2dDT0NBTmRFRUFJQXByZGlBR2FpRUtJQVJCT0dvUUR4b0xJQVFwQW1RaFJDQUVJQW8yQW1RZ0JDQkVOd0pvREFFTEFrQWdBa1VFUUNBREJFQWdCQ2dDWkNFS0RBTUxJQVFvQW1naENnd0JDeUFFSUFRb0Fqd2lBa0VCYWpZQ1BBSi9JQVlnQTBWcUlBUW9BamdnQW5SQkgzWnFJZ0pCQTBZRVFDQUVLQUprUVFGckRBRUxJQUpCQW5RZ0JHb29BbVFMSWdaRklBWnFJUW9nQWtFQlJ3UkFJQVFnQkNnQ2FEWUNiQXNMSUFRZ0JDZ0NaRFlDYUNBRUlBbzJBbVFMcHlFQ0lFRkNnSUQ4QjROUVJRUkFJQVFnQkNnQ1BDSUdJQkJxTmdJOElBUW9BamdnQm5SQkFDQWhhM1lnQW1vaEFnc2dDeUFRYWtFVVR3UkFJQVJCT0dvUUR4b0xJRUJDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NQQ0lHSUF0cU5nSThJQVFvQWpnZ0JuUkJBQ0FSYTNZZ0Eyb2hBd3NnQkVFNGFoQVBHaUFFSUFRb0FqZ2lCa0VBSUFkQkdIWWlDeUFFS0FJOGFpSVFhM1lnQzBFQ2RFR2dIV29vQWdCeElBZEIvLzhEY1dvMkFrd2dCQ0FRSUF4QkdIWWlCMm9pQ3pZQ1BDQUVJQWRCQW5SQm9CMXFLQUlBSUFaQkFDQUxhM1p4SUF4Qi8vOERjV28yQWx3Z0JFRTRhaEFQR2lBRUlFS25JZ1pCR0hZaUJ5QUVLQUk4YWlJTE5nSThJQVFnQjBFQ2RFR2dIV29vQWdBZ0JDZ0NPRUVBSUF0cmRuRWdCa0gvL3dOeGFqWUNWQ0FFUWZBQWFpQUlRUXhzYWlJR0lBbzJBZ2dnQmlBQ05nSUVJQVlnQXpZQ0FDQUlRUUZxSVFnZ0F5QVphaUFDYWlFWkRBRUxDeUFJSUI5SURRTWdGa0VnYXlFaElBNGhCd05BSUFSQk9Hb1FEMEVEUmlBSUlBOU9ja1VFUUNBRUtBSlFJQVFvQWt4QkEzUnFLUUlBSWtDbklnWkJFSFlpSTBIL0FYRWhDaUFFS0FKZ0lBUW9BbHhCQTNScUtRSUFJa0duSWcxQkVIWWlJRUgvQVhFaEV5QUVLQUpZSUFRb0FsUkJBM1JxS1FJQUlrSkNJSWluSVFNZ1FVSWdpQ0JBUWlDSXB5RUxBa0FnUWtJUWlLY2lERUgvQVhFaUFrRUNUd1JBQWtBZ0FrRVpTU0EvUW9HQWdCQlVja1VFUUNBRVFTQWdCQ2dDUENJTWF5SVJJQUlnQWlBUlN4c2lFQ0FNYWpZQ1BDQURJQVFvQWpnZ0RIUkJBQ0FRYTNZZ0FpQVFheUlNZEdvaEVDQUVRVGhxRUE4YUlBSWdFVTBOQVNBRUlBUW9BandpQWlBTWFqWUNQQ0FFS0FJNElBSjBRUUFnREd0MklCQnFJUkFNQVFzZ0JDQUNJQVFvQWp3aUVHbzJBandnQkNnQ09DQVFkRUVBSUF4cmRpQURhaUVRSUFSQk9Hb1FEeG9MSUFRcEFtUWhSQ0FFSUJBMkFtUWdCQ0JFTndKb0RBRUxBa0FnQWtVRVFDQUxCRUFnQkNnQ1pDRVFEQU1MSUFRb0FtZ2hFQXdCQ3lBRUlBUW9BandpQWtFQmFqWUNQQUovSUFNZ0MwVnFJQVFvQWpnZ0FuUkJIM1pxSWdKQkEwWUVRQ0FFS0FKa1FRRnJEQUVMSUFKQkFuUWdCR29vQW1RTElnTkZJQU5xSVJBZ0FrRUJSd1JBSUFRZ0JDZ0NhRFlDYkFzTElBUWdCQ2dDWkRZQ2FDQUVJQkEyQW1RTHB5RU1JRUZDZ0lEOEI0TlFSUVJBSUFRZ0JDZ0NQQ0lDSUJOcU5nSThJQVFvQWpnZ0FuUkJBQ0FnYTNZZ0RHb2hEQXNnQ2lBVGFrRVVUd1JBSUFSQk9Hb1FEeG9MSUVCQ2dJRDhCNE5RUlFSQUlBUWdCQ2dDUENJQ0lBcHFOZ0k4SUFRb0FqZ2dBblJCQUNBamEzWWdDMm9oQ3dzZ0JFRTRhaEFQR2lBRUlBUW9BamdpQWtFQUlBWkJHSFlpQXlBRUtBSThhaUlLYTNZZ0EwRUNkRUdnSFdvb0FnQnhJQVpCLy84RGNXbzJBa3dnQkNBS0lBMUJHSFlpQTJvaUJqWUNQQ0FFSUFOQkFuUkJvQjFxS0FJQUlBSkJBQ0FHYTNaeElBMUIvLzhEY1dvMkFsd2dCRUU0YWhBUEdpQUVJRUtuSWdKQkdIWWlBeUFFS0FJOGFpSUdOZ0k4SUFRZ0EwRUNkRUdnSFdvb0FnQWdCQ2dDT0VFQUlBWnJkbkVnQWtILy93TnhhallDVkFKQUFrQUNRQ0FFS0FMY0FTSURJQVJCOEFCcUlBaEJCM0ZCREd4cUloTW9BZ0FpRVdvaUl5QVhTdzBBSUFjZ0V5Z0NCQ0lOSUJGcUlncHFJQ0ZMRFFBZ0NrRWdhaUFXSUFkclRRMEJDeUFFSUJNb0FnZzJBaGdnQkNBVEtRSUFOd01RSUFjZ0ZpQUVRUkJxSUFSQjNBRnFJQmNnRWlBWUlCb1FIeUVLREFFTElBY2dFV29oQWlBVEtBSUlJUVlnQnlBREtRQUFOd0FBSUFjZ0F5a0FDRGNBQ0FKQUlCRkJFVWtOQUNBSElBTXBBQkEzQUJBZ0J5QURLUUFZTndBWUlCRkJFR3RCRVVnTkFDQURRUkJxSVFNZ0IwRWdhaUVSQTBBZ0VTQURLUUFRTndBQUlCRWdBeWtBR0RjQUNDQVJJQU1wQUNBM0FCQWdFU0FES1FBb053QVlJQU5CSUdvaEF5QVJRU0JxSWhFZ0Fra05BQXNMSUFJZ0Jtc2hBeUFFSUNNMkF0d0JJQUlnRW1zZ0Jra0VRQ0FHSUFJZ0dHdExEUWNnR2lBYUlBTWdFbXNpQTJvaUVTQU5hazhFUUNBQ0lCRWdEUkFLR2d3Q0N5QURJQTFxSVEwZ0FpQVJRUUFnQTJzUUNpQURheUVDSUJJaEF3c2dCa0VRVHdSQUlBSWdBeWtBQURjQUFDQUNJQU1wQUFnM0FBZ2dEVUVSU0EwQklBSWdEV29oQmlBQ1FSQnFJUUlEUUNBQ0lBTXBBQkEzQUFBZ0FpQURLUUFZTndBSUlBSWdBeWtBSURjQUVDQUNJQU1wQUNnM0FCZ2dBMEVnYWlFRElBSkJJR29pQWlBR1NRMEFDd3dCQ3dKQUlBWkJCMDBFUUNBQ0lBTXRBQUE2QUFBZ0FpQURMUUFCT2dBQklBSWdBeTBBQWpvQUFpQUNJQU10QUFNNkFBTWdBaUFESUFaQkFuUWlCa0hBSG1vb0FnQnFJZ01vQUFBMkFBUWdBeUFHUWVBZWFpZ0NBR3NoQXd3QkN5QUNJQU1wQUFBM0FBQUxJQTFCQ1VrTkFDQUNJQTFxSVJFZ0FrRUlhaUlHSUFOQkNHb2lBMnRCRDB3RVFBTkFJQVlnQXlrQUFEY0FBQ0FEUVFocUlRTWdCa0VJYWlJR0lCRkpEUUFNQWdzQUN5QUdJQU1wQUFBM0FBQWdCaUFES1FBSU53QUlJQTFCR1VnTkFDQUNRUmhxSVFJRFFDQUNJQU1wQUJBM0FBQWdBaUFES1FBWU53QUlJQUlnQXlrQUlEY0FFQ0FDSUFNcEFDZzNBQmdnQTBFZ2FpRURJQUpCSUdvaUFpQVJTUTBBQ3dzZ0NrR0lmMHNFUUNBS0lRa01CZ1VnRXlBUU5nSUlJQk1nRERZQ0JDQVRJQXMyQWdBZ0NFRUJhaUVJSUFjZ0Ntb2hCeUFMSUJscUlBeHFJUmtNQWdzQUN3c2dDQ0FQU0EwRElBZ2dIMnNoQmdOQUFrQWdCaUFQVGdSQVFRQWhBd05BSUFOQkEwWU5BaUFGSUFOQkFuUWlBbXBCck5BQmFpQUNJQVJxS0FKa05nSUFJQU5CQVdvaEF3d0FDd0FMQWtBQ1FBSkFJQVFvQXR3QklnTWdCRUh3QUdvZ0JrRUhjVUVNYkdvaUNDZ0NBQ0lNYWlJUUlCZExEUUFnQnlBSUtBSUVJZ3NnREdvaUNtb2dJVXNOQUNBS1FTQnFJQllnQjJ0TkRRRUxJQVFnQ0NnQ0NEWUNLQ0FFSUFncEFnQTNBeUFnQnlBV0lBUkJJR29nQkVIY0FXb2dGeUFTSUJnZ0doQWZJUW9NQVFzZ0J5QU1haUVDSUFnb0FnZ2hDQ0FISUFNcEFBQTNBQUFnQnlBREtRQUlOd0FJQWtBZ0RFRVJTUTBBSUFjZ0F5a0FFRGNBRUNBSElBTXBBQmczQUJnZ0RFRVFhMEVSU0EwQUlBTkJFR29oQXlBSFFTQnFJUXdEUUNBTUlBTXBBQkEzQUFBZ0RDQURLUUFZTndBSUlBd2dBeWtBSURjQUVDQU1JQU1wQUNnM0FCZ2dBMEVnYWlFRElBeEJJR29pRENBQ1NRMEFDd3NnQWlBSWF5RURJQVFnRURZQzNBRWdBaUFTYXlBSVNRUkFJQWdnQWlBWWEwc05CeUFhSUJvZ0F5QVNheUlEYWlJTUlBdHFUd1JBSUFJZ0RDQUxFQW9hREFJTElBTWdDMm9oQ3lBQ0lBeEJBQ0FEYXhBS0lBTnJJUUlnRWlFREN5QUlRUkJQQkVBZ0FpQURLUUFBTndBQUlBSWdBeWtBQ0RjQUNDQUxRUkZJRFFFZ0FpQUxhaUVJSUFKQkVHb2hBZ05BSUFJZ0F5a0FFRGNBQUNBQ0lBTXBBQmczQUFnZ0FpQURLUUFnTndBUUlBSWdBeWtBS0RjQUdDQURRU0JxSVFNZ0FrRWdhaUlDSUFoSkRRQUxEQUVMQWtBZ0NFRUhUUVJBSUFJZ0F5MEFBRG9BQUNBQ0lBTXRBQUU2QUFFZ0FpQURMUUFDT2dBQ0lBSWdBeTBBQXpvQUF5QUNJQU1nQ0VFQ2RDSUlRY0FlYWlnQ0FHb2lBeWdBQURZQUJDQURJQWhCNEI1cUtBSUFheUVEREFFTElBSWdBeWtBQURjQUFBc2dDMEVKU1EwQUlBSWdDMm9oRENBQ1FRaHFJZ2dnQTBFSWFpSURhMEVQVEFSQUEwQWdDQ0FES1FBQU53QUFJQU5CQ0dvaEF5QUlRUWhxSWdnZ0RFa05BQXdDQ3dBTElBZ2dBeWtBQURjQUFDQUlJQU1wQUFnM0FBZ2dDMEVaU0EwQUlBSkJHR29oQWdOQUlBSWdBeWtBRURjQUFDQUNJQU1wQUJnM0FBZ2dBaUFES1FBZ053QVFJQUlnQXlrQUtEY0FHQ0FEUVNCcUlRTWdBa0VnYWlJQ0lBeEpEUUFMQ3lBS1FZaC9Td1JBSUFvaENRd0dCU0FHUVFGcUlRWWdCeUFLYWlFSERBSUxBQXNMSUFRb0F0d0JJUU1MUWJwL0lRa2dGeUFEYXlJQ0lCWWdCMnRMRFFJZ0J3Ui9JQWNnQXlBQ0VBSWdBbW9GUVFBTElBNXJJUWtNQWdzZ0JVRUFOZ0tjNndFTElBUWdCU2dDOE9vQklnTTJBdHdCSUFrZ0Rtb2hEQ0FESUFVb0FvRHJBV29oRUFKQUlBOUZCRUFnRGlFR0RBRUxJQVVvQXJqcEFTRU5JQVVvQXJUcEFTRVRJQVVvQXJEcEFTRVNJQVZCQVRZQ2hPb0JRUUFoQXdOQUlBTkJBMGNFUUNBRUlBTkJBblFpQW1vZ0FpQUZha0dzMEFGcUtBSUFOZ0tjQVNBRFFRRnFJUU1NQVFzTFFXd2hDU0FFUWZBQWFpSUNJQWNnQmhBTlFZaC9TdzBCSURFZ0FpQUZLQUlBRUI0Z01DQUNJQVVvQWdnUUhpQXZJQUlnQlNnQ0JCQWVJQXhCSUdzaEdDQU9JUVlEUUNBRUtBS0lBU0FFS0FLRUFVRURkR29wQWdBaVFLY2lDa0VRZGlJWlFmOEJjU0VMSUFRb0FwZ0JJQVFvQXBRQlFRTjBhaWtDQUNKQnB5SVdRUkIySWg5Qi93RnhJUm9nQkNnQ2tBRWdCQ2dDakFGQkEzUnFLUUlBSWtKQ0lJaW5JUWNnUVVJZ2lDQkFRaUNJcHlFREFrQWdRa0lRaUtjaUNFSC9BWEVpQWtFQ1R3UkFBa0FnQWtFWlNTQS9Rb0dBZ0JCVWNrVUVRQ0FFUVNBZ0JDZ0NkQ0lJYXlJUklBSWdBaUFSU3hzaUZ5QUlhallDZENBSElBUW9BbkFnQ0hSQkFDQVhhM1lnQWlBWGF5SVhkR29oQ0NBRVFmQUFhaEFQR2lBQ0lCRk5EUUVnQkNBRUtBSjBJZ0lnRjJvMkFuUWdCQ2dDY0NBQ2RFRUFJQmRyZGlBSWFpRUlEQUVMSUFRZ0FpQUVLQUowSWhGcU5nSjBJQVFvQW5BZ0VYUkJBQ0FJYTNZZ0Iyb2hDQ0FFUWZBQWFoQVBHZ3NnQkNrQ25BRWhSQ0FFSUFnMkFwd0JJQVFnUkRjQ29BRU1BUXNDUUNBQ1JRUkFJQU1FUUNBRUtBS2NBU0VJREFNTElBUW9BcUFCSVFnTUFRc2dCQ0FFS0FKMElnSkJBV28yQW5RQ2Z5QUhJQU5GYWlBRUtBSndJQUowUVI5MmFpSUNRUU5HQkVBZ0JDZ0NuQUZCQVdzTUFRc2dBa0VDZENBRWFpZ0NuQUVMSWdkRklBZHFJUWdnQWtFQlJ3UkFJQVFnQkNnQ29BRTJBcVFCQ3dzZ0JDQUVLQUtjQVRZQ29BRWdCQ0FJTmdLY0FRdW5JUUlnUVVLQWdQd0hnMUJGQkVBZ0JDQUVLQUowSWdjZ0dtbzJBblFnQkNnQ2NDQUhkRUVBSUI5cmRpQUNhaUVDQ3lBTElCcHFRUlJQQkVBZ0JFSHdBR29RRHhvTElFQkNnSUQ4QjROUVJRUkFJQVFnQkNnQ2RDSUhJQXRxTmdKMElBUW9BbkFnQjNSQkFDQVphM1lnQTJvaEF3c2dCRUh3QUdvUUR4b2dCQ0FFS0FKd0lnZEJBQ0FLUVJoMklnc2dCQ2dDZEdvaUdtdDJJQXRCQW5SQm9CMXFLQUlBY1NBS1FmLy9BM0ZxTmdLRUFTQUVJQm9nRmtFWWRpSUthaUlMTmdKMElBUWdDa0VDZEVHZ0hXb29BZ0FnQjBFQUlBdHJkbkVnRmtILy93TnhhallDbEFFZ0JFSHdBR29RRHhvZ0JDQkNweUlIUVJoMklnb2dCQ2dDZEdvaUN6WUNkQ0FFSUFwQkFuUkJvQjFxS0FJQUlBUW9BbkJCQUNBTGEzWnhJQWRCLy84RGNXbzJBb3dCSUFRZ0F6WUNPQ0FFSUFJMkFqd2dCQ0FJTmdKQUFrQUNRQUpBSUFRb0F0d0JJZ3NnQTJvaUZpQVFTdzBBSUFZZ0FpQURhaUlLYWlBWVN3MEFJQXBCSUdvZ0RDQUdhMDBOQVFzZ0JDQUVRVUJyS0FJQU5nSUlJQVFnQkNrRE9EY0RBQ0FHSUF3Z0JDQUVRZHdCYWlBUUlCSWdFeUFORUI4aENnd0JDeUFESUFacUlRY2dCaUFMS1FBQU53QUFJQVlnQ3lrQUNEY0FDQUpBSUFOQkVVa05BQ0FHSUFzcEFCQTNBQkFnQmlBTEtRQVlOd0FZSUFOQkVHdEJFVWdOQUNBTFFSQnFJUU1nQmtFZ2FpRUxBMEFnQ3lBREtRQVFOd0FBSUFzZ0F5a0FHRGNBQ0NBTElBTXBBQ0EzQUJBZ0N5QURLUUFvTndBWUlBTkJJR29oQXlBTFFTQnFJZ3NnQjBrTkFBc0xJQWNnQ0dzaEF5QUVJQlkyQXR3QklBY2dFbXNnQ0VrRVFDQUlJQWNnRTJ0TERRUWdEU0FOSUFNZ0Vtc2lBMm9pQ3lBQ2FrOEVRQ0FISUFzZ0FoQUtHZ3dDQ3lBSElBdEJBQ0FEYXhBS0lBUWdBaUFEYWlJQ05nSThJQU5ySVFjZ0VpRURDeUFJUVJCUEJFQWdCeUFES1FBQU53QUFJQWNnQXlrQUNEY0FDQ0FDUVJGSURRRWdBaUFIYWlFSUlBZEJFR29oQWdOQUlBSWdBeWtBRURjQUFDQUNJQU1wQUJnM0FBZ2dBaUFES1FBZ053QVFJQUlnQXlrQUtEY0FHQ0FEUVNCcUlRTWdBa0VnYWlJQ0lBaEpEUUFMREFFTEFrQWdDRUVIVFFSQUlBY2dBeTBBQURvQUFDQUhJQU10QUFFNkFBRWdCeUFETFFBQ09nQUNJQWNnQXkwQUF6b0FBeUFISUFNZ0NFRUNkQ0lJUWNBZWFpZ0NBR29pQXlnQUFEWUFCQ0FESUFoQjRCNXFLQUlBYXlFRERBRUxJQWNnQXlrQUFEY0FBQXNnQWtFSlNRMEFJQUlnQjJvaEN5QUhRUWhxSWdnZ0EwRUlhaUlEYTBFUFRBUkFBMEFnQ0NBREtRQUFOd0FBSUFOQkNHb2hBeUFJUVFocUlnZ2dDMGtOQUF3Q0N3QUxJQWdnQXlrQUFEY0FBQ0FJSUFNcEFBZzNBQWdnQWtFWlNBMEFJQWRCR0dvaEFnTkFJQUlnQXlrQUVEY0FBQ0FDSUFNcEFCZzNBQWdnQWlBREtRQWdOd0FRSUFJZ0F5a0FLRGNBR0NBRFFTQnFJUU1nQWtFZ2FpSUNJQXRKRFFBTEN5QUtRWWgvU3dSQUlBb2hDUXdEQ3lBR0lBcHFJUVlnQkVId0FHb1FEeUVESUE5QkFXc2lEdzBBQzBFQUlRSWdBMEVDU1EwQkEwQWdBa0VEUndSQUlBVWdBa0VDZENJRGFrR3MwQUZxSUFNZ0JHb29BcHdCTmdJQUlBSkJBV29oQWd3QkN3c2dCQ2dDM0FFaEF3dEJ1bjhoQ1NBUUlBTnJJZ0lnRENBR2Ewc05BQ0FHQkg4Z0JpQURJQUlRQWlBQ2FnVkJBQXNnRG1zaENRc2dDVUdJZjBzTkJnc0NRQ0FGS0FMczZnRkZEUUFnQlNBRktRT0k2Z0VnQ2ExOE53T0k2Z0VDUUNBRktBTFE2Z0VpQWlBSmFpSUlRUjlOQkVBZ0RrVU5BU0FDSUNKcUlBNGdDUkFDR2lBRktBTFE2Z0VnQ1dvaENBd0JDeUFPSVFNZ0FnUkFJQUlnSW1vZ0EwRWdJQUpyRUFJYUlBVW9BdERxQVNFQ0lBVkJBRFlDME9vQklBVWdCU2tEa09vQklBVXBBTERxQVVMUDF0Tyswc2VyMlVKK2ZFSWZpVUtIbGErdm1MYmVtNTUvZmpjRGtPb0JJQVVnQlNrRG1Pb0JJQVVwQUxqcUFVTFAxdE8rMHNlcjJVSitmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZqY0RtT29CSUFVZ0JTa0RvT29CSUFVcEFNRHFBVUxQMXRPKzBzZXIyVUorZkVJZmlVS0hsYSt2bUxiZW01NS9mamNEb09vQklBVWdCU2tEcU9vQklBVXBBTWpxQVVMUDF0Tyswc2VyMlVKK2ZFSWZpVUtIbGErdm1MYmVtNTUvZmpjRHFPb0JJQU1nQW10QklHb2hBd3NnQ1NBT2FpSUNJQU5CSUdwUEJFQWdBa0VnYXlFR0lBVXBBNmpxQVNFL0lBVXBBNkRxQVNGQUlBVXBBNWpxQVNGQklBVXBBNURxQVNGQ0EwQWdBeWtBR0VMUDF0Tyswc2VyMlVKK0lEOThRaCtKUW9lVnI2K1l0dDZibm45K0lUOGdBeWtBRUVMUDF0Tyswc2VyMlVKK0lFQjhRaCtKUW9lVnI2K1l0dDZibm45K0lVQWdBeWtBQ0VMUDF0Tyswc2VyMlVKK0lFRjhRaCtKUW9lVnI2K1l0dDZibm45K0lVRWdBeWtBQUVMUDF0Tyswc2VyMlVKK0lFSjhRaCtKUW9lVnI2K1l0dDZibm45K0lVSWdBMEVnYWlJRElBWk5EUUFMSUFVZ1B6Y0RxT29CSUFVZ1FEY0RvT29CSUFVZ1FUY0RtT29CSUFVZ1FqY0RrT29CQ3lBQ0lBTk5EUUVnSWlBRElBSWdBMnNpQ0JBQ0dnc2dCU0FJTmdMUTZnRUxJRFVnRldzaEF5QVZJQnRxSVFJZ0NTQU9haUVPSUFRb0FqQkZEUUFMSUNrcEF3QWlQMEovVVNBL0lBNGdIV3VzVVhKRkJFQkJiQ0VKREFZTElBVW9BdURwQVFSQVFXb2hDU0FEUVFSSkRRWWdCU2dDNk9vQlJRUkFJQ0lnQlNnQzBPb0JhaUVLQW40Z0JTa0RpT29CSWo5Q0lGb0VRQ0FGS1FPWTZnRWlRRUlIaVNBRktRT1E2Z0VpUVVJQmlYd2dCU2tEb09vQklrSkNESWw4SUFVcEE2anFBU0pEUWhLSmZDQkJRcy9XMDc3U3g2dlpRbjVDSDRsQ2g1V3ZyNWkyM3B1ZWYzNkZRb2VWcjYrWXR0NmJubjkrUXAyanRlcURzWTJLK2dCOUlFQkN6OWJUdnRMSHE5bENma0lmaVVLSGxhK3ZtTGJlbTU1L2ZvVkNoNVd2cjVpMjNwdWVmMzVDbmFPMTZvT3hqWXI2QUgwZ1FrTFAxdE8rMHNlcjJVSitRaCtKUW9lVnI2K1l0dDZibm45K2hVS0hsYSt2bUxiZW01NS9ma0tkbzdYcWc3R05pdm9BZlNCRFFzL1cwNzdTeDZ2WlFuNUNINGxDaDVXdnI1aTIzcHVlZjM2RlFvZVZyNitZdHQ2Ym5uOStRcDJqdGVxRHNZMksrZ0I5REFFTElBVXBBNkRxQVVMRno5bXk4ZVc2NmlkOEN5QS9mQ0UvSUNJaEJnTkFJQW9nQmtFSWFpSUhUd1JBSUFZcEFBQkN6OWJUdnRMSHE5bENma0lmaVVLSGxhK3ZtTGJlbTU1L2ZpQS9oVUliaVVLSGxhK3ZtTGJlbTU1L2ZrS2RvN1hxZzdHTml2b0FmU0UvSUFjaEJnd0JDd3NDUUNBS0lBWkJCR29pQ0VrRVFDQUdJUWdNQVFzZ0JqVUFBRUtIbGErdm1MYmVtNTUvZmlBL2hVSVhpVUxQMXRPKzBzZXIyVUorUXZuejNmR1o5cG1yRm53aFB3c0RRQ0FJSUFwSkJFQWdDREVBQUVMRno5bXk4ZVc2NmlkK0lEK0ZRZ3VKUW9lVnI2K1l0dDZibm45K0lUOGdDRUVCYWlFSURBRUxDeUFDS0FBQUlEOUNJWWdnUDRWQ3o5YlR2dExIcTlsQ2ZpSS9RaDJJSUQrRlF2bnozZkdaOXBtckZuNGlQMElnaUNBL2hhZEhEUWNMSUFOQkJHc2hBeUFDUVFScUlRSUxJQTRnSFdzaUNVR0pmMDhOQkNBQklBbHJJUUVnQ1NBZGFpRWRRUUVoUGd3QkN3dEJ1SDhoQnlBRERRUWdIU0FBYXlFSERBUUxRV3doQ1F3QkMwRzRmeUVKQzBHNGZ5RUhJQWxCZGtZZ1BuRU5BUXNnQ1NFSEN5Z0NBQTBBSUFWQi9Pb0JhaWdDQUNFQklBVkIrT29CYWlnQ0FDRUFJQVVRR0NBRktBS3c2d0VnQUNBQkVCTWdCVUVBTmdLdzZ3RWdCU2dDcE9zQklnSUVRQUpBQWtBQ1FBSkFJQUlvQWdBaUF3UkFJQUJGRFFJZ0FTQURJQUFSQWdBTUFRc2dBRVVOQWdzZ0FTQUNJQUFSQWdBTUFnc2dBeEFHQ3lBQ0VBWUxJQVZCQURZQ3BPc0JDeUFBQkVBZ0FTQUZJQUFSQWdBTUFRc2dCUkFHQ3lBRVFlQUJhaVFBSUFjTEM2Z1ZDUUJCaUFnTERRRUFBQUFCQUFBQUFnQUFBQUlBUWFBSUM3TUdBUUFBQUFFQUFBQUNBQUFBQWdBQUFDWUFBQUNDQUFBQUlRVUFBRW9BQUFCbkNBQUFKZ0FBQU1BQkFBQ0FBQUFBU1FVQUFFb0FBQUMrQ0FBQUtRQUFBQ3dDQUFDQUFBQUFTUVVBQUVvQUFBQytDQUFBTHdBQUFNb0NBQUNBQUFBQWlnVUFBRW9BQUFDRUNRQUFOUUFBQUhNREFBQ0FBQUFBblFVQUFFb0FBQUNnQ1FBQVBRQUFBSUVEQUFDQUFBQUE2d1VBQUVzQUFBQStDZ0FBUkFBQUFKNERBQUNBQUFBQVRRWUFBRXNBQUFDcUNnQUFTd0FBQUxNREFBQ0FBQUFBd1FZQUFFMEFBQUFmRFFBQVRRQUFBRk1FQUFDQUFBQUFJd2dBQUZFQUFBQ21Ed0FBVkFBQUFKa0VBQUNBQUFBQVN3a0FBRmNBQUFDeEVnQUFXQUFBQU5vRUFBQ0FBQUFBYndrQUFGMEFBQUFqRkFBQVZBQUFBRVVGQUFDQUFBQUFWQW9BQUdvQUFBQ01GQUFBYWdBQUFLOEZBQUNBQUFBQWRna0FBSHdBQUFCT0VBQUFmQUFBQU5JQ0FBQ0FBQUFBWXdjQUFKRUFBQUNRQndBQWtnQUFBQUFBQUFBQkFBQUFBUUFBQUFVQUFBQU5BQUFBSFFBQUFEMEFBQUI5QUFBQS9RQUFBUDBCQUFEOUF3QUEvUWNBQVAwUEFBRDlId0FBL1Q4QUFQMS9BQUQ5L3dBQS9mOEJBUDMvQXdEOS93Y0EvZjhQQVAzL0h3RDkvejhBL2Y5L0FQMy8vd0Q5Ly84Qi9mLy9BLzMvL3dmOS8vOFAvZi8vSC8zLy96LzkvLzkvQUFBQUFBRUFBQUFDQUFBQUF3QUFBQVFBQUFBRkFBQUFCZ0FBQUFjQUFBQUlBQUFBQ1FBQUFBb0FBQUFMQUFBQURBQUFBQTBBQUFBT0FBQUFEd0FBQUJBQUFBQVJBQUFBRWdBQUFCTUFBQUFVQUFBQUZRQUFBQllBQUFBWEFBQUFHQUFBQUJrQUFBQWFBQUFBR3dBQUFCd0FBQUFkQUFBQUhnQUFBQjhBQUFBREFBQUFCQUFBQUFVQUFBQUdBQUFBQndBQUFBZ0FBQUFKQUFBQUNnQUFBQXNBQUFBTUFBQUFEUUFBQUE0QUFBQVBBQUFBRUFBQUFCRUFBQUFTQUFBQUV3QUFBQlFBQUFBVkFBQUFGZ0FBQUJjQUFBQVlBQUFBR1FBQUFCb0FBQUFiQUFBQUhBQUFBQjBBQUFBZUFBQUFId0FBQUNBQUFBQWhBQUFBSWdBQUFDTUFBQUFsQUFBQUp3QUFBQ2tBQUFBckFBQUFMd0FBQURNQUFBQTdBQUFBUXdBQUFGTUFBQUJqQUFBQWd3QUFBQU1CQUFBREFnQUFBd1FBQUFNSUFBQURFQUFBQXlBQUFBTkFBQUFEZ0FBQUF3QUJBRUhnRHd0UkFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQXdBQUFBTUFBQUFFQUFBQUJBQUFBQVVBQUFBSEFBQUFDQUFBQUFrQUFBQUtBQUFBQ3dBQUFBd0FBQUFOQUFBQURnQUFBQThBQUFBUUFFSEVFQXVMQVFFQUFBQUNBQUFBQXdBQUFBUUFBQUFGQUFBQUJnQUFBQWNBQUFBSUFBQUFDUUFBQUFvQUFBQUxBQUFBREFBQUFBMEFBQUFPQUFBQUR3QUFBQkFBQUFBU0FBQUFGQUFBQUJZQUFBQVlBQUFBSEFBQUFDQUFBQUFvQUFBQU1BQUFBRUFBQUFDQUFBQUFBQUVBQUFBQ0FBQUFCQUFBQUFnQUFBQVFBQUFBSUFBQUFFQUFBQUNBQUFBQUFBRUFRWkFTQytZRUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQXdBQUFBTUFBQUFFQUFBQUJnQUFBQWNBQUFBSUFBQUFDUUFBQUFvQUFBQUxBQUFBREFBQUFBMEFBQUFPQUFBQUR3QUFBQkFBQUFBQkFBQUFCQUFBQUFnQUFBQUFBQUFBQVFBQkFRWUFBQUFBQUFBRUFBQUFBQkFBQUFRQUFBQUFJQUFBQlFFQUFBQUFBQUFGQXdBQUFBQUFBQVVFQUFBQUFBQUFCUVlBQUFBQUFBQUZCd0FBQUFBQUFBVUpBQUFBQUFBQUJRb0FBQUFBQUFBRkRBQUFBQUFBQUFZT0FBQUFBQUFCQlJBQUFBQUFBQUVGRkFBQUFBQUFBUVVXQUFBQUFBQUNCUndBQUFBQUFBTUZJQUFBQUFBQUJBVXdBQUFBSUFBR0JVQUFBQUFBQUFjRmdBQUFBQUFBQ0FZQUFRQUFBQUFLQmdBRUFBQUFBQXdHQUJBQUFDQUFBQVFBQUFBQUFBQUFCQUVBQUFBQUFBQUZBZ0FBQUNBQUFBVUVBQUFBQUFBQUJRVUFBQUFnQUFBRkJ3QUFBQUFBQUFVSUFBQUFJQUFBQlFvQUFBQUFBQUFGQ3dBQUFBQUFBQVlOQUFBQUlBQUJCUkFBQUFBQUFBRUZFZ0FBQUNBQUFRVVdBQUFBQUFBQ0JSZ0FBQUFnQUFNRklBQUFBQUFBQXdVb0FBQUFBQUFHQkVBQUFBQVFBQVlFUUFBQUFDQUFCd1dBQUFBQUFBQUpCZ0FDQUFBQUFBc0dBQWdBQURBQUFBUUFBQUFBRUFBQUJBRUFBQUFnQUFBRkFnQUFBQ0FBQUFVREFBQUFJQUFBQlFVQUFBQWdBQUFGQmdBQUFDQUFBQVVJQUFBQUlBQUFCUWtBQUFBZ0FBQUZDd0FBQUNBQUFBVU1BQUFBQUFBQUJnOEFBQUFnQUFFRkVnQUFBQ0FBQVFVVUFBQUFJQUFDQlJnQUFBQWdBQUlGSEFBQUFDQUFBd1VvQUFBQUlBQUVCVEFBQUFBQUFCQUdBQUFCQUFBQUR3WUFnQUFBQUFBT0JnQkFBQUFBQUEwR0FDQUFRWUFYQzRjQ0FRQUJBUVVBQUFBQUFBQUZBQUFBQUFBQUJnUTlBQUFBQUFBSkJmMEJBQUFBQUE4Ri9YOEFBQUFBRlFYOS94OEFBQUFEQlFVQUFBQUFBQWNFZlFBQUFBQUFEQVg5RHdBQUFBQVNCZjMvQXdBQUFCY0YvZjkvQUFBQUJRVWRBQUFBQUFBSUJQMEFBQUFBQUE0Ri9UOEFBQUFBRkFYOS93OEFBQUFDQlFFQUFBQVFBQWNFZlFBQUFBQUFDd1g5QndBQUFBQVJCZjMvQVFBQUFCWUYvZjgvQUFBQUJBVU5BQUFBRUFBSUJQMEFBQUFBQUEwRi9SOEFBQUFBRXdYOS93Y0FBQUFCQlFFQUFBQVFBQVlFUFFBQUFBQUFDZ1g5QXdBQUFBQVFCZjMvQUFBQUFCd0YvZi8vRHdBQUd3WDkvLzhIQUFBYUJmMy8vd01BQUJrRi9mLy9BUUFBR0FYOS8vOEFRWkFaQzRZRUFRQUJBUVlBQUFBQUFBQUdBd0FBQUFBQUFBUUVBQUFBSUFBQUJRVUFBQUFBQUFBRkJnQUFBQUFBQUFVSUFBQUFBQUFBQlFrQUFBQUFBQUFGQ3dBQUFBQUFBQVlOQUFBQUFBQUFCaEFBQUFBQUFBQUdFd0FBQUFBQUFBWVdBQUFBQUFBQUJoa0FBQUFBQUFBR0hBQUFBQUFBQUFZZkFBQUFBQUFBQmlJQUFBQUFBQUVHSlFBQUFBQUFBUVlwQUFBQUFBQUNCaThBQUFBQUFBTUdPd0FBQUFBQUJBWlRBQUFBQUFBSEJvTUFBQUFBQUFrR0F3SUFBQkFBQUFRRUFBQUFBQUFBQkFVQUFBQWdBQUFGQmdBQUFBQUFBQVVIQUFBQUlBQUFCUWtBQUFBQUFBQUZDZ0FBQUFBQUFBWU1BQUFBQUFBQUJnOEFBQUFBQUFBR0VnQUFBQUFBQUFZVkFBQUFBQUFBQmhnQUFBQUFBQUFHR3dBQUFBQUFBQVllQUFBQUFBQUFCaUVBQUFBQUFBRUdJd0FBQUFBQUFRWW5BQUFBQUFBQ0Jpc0FBQUFBQUFNR013QUFBQUFBQkFaREFBQUFBQUFGQm1NQUFBQUFBQWdHQXdFQUFDQUFBQVFFQUFBQU1BQUFCQVFBQUFBUUFBQUVCUUFBQUNBQUFBVUhBQUFBSUFBQUJRZ0FBQUFnQUFBRkNnQUFBQ0FBQUFVTEFBQUFBQUFBQmc0QUFBQUFBQUFHRVFBQUFBQUFBQVlVQUFBQUFBQUFCaGNBQUFBQUFBQUdHZ0FBQUFBQUFBWWRBQUFBQUFBQUJpQUFBQUFBQUJBR0F3QUJBQUFBRHdZRGdBQUFBQUFPQmdOQUFBQUFBQTBHQXlBQUFBQUFEQVlERUFBQUFBQUxCZ01JQUFBQUFBb0dBd1FBUWFRZEM5a0JBUUFBQUFNQUFBQUhBQUFBRHdBQUFCOEFBQUEvQUFBQWZ3QUFBUDhBQUFEL0FRQUEvd01BQVA4SEFBRC9Ed0FBL3g4QUFQOC9BQUQvZndBQS8vOEFBUC8vQVFELy93TUEvLzhIQVAvL0R3RC8veDhBLy84L0FQLy9md0QvLy84QS8vLy9BZi8vL3dQLy8vOEgvLy8vRC8vLy94Ly8vLzgvLy8vL2Z3QUFBQUFCQUFBQUFnQUFBQVFBQUFBQUFBQUFBZ0FBQUFRQUFBQUlBQUFBQUFBQUFBRUFBQUFDQUFBQUFRQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBZ0FBQUFIQUFBQUNBQUFBQWtBQUFBS0FBQUFDd0JCZ0I4TEE0QVJBUT09Ijt2YXIgT0k9bmV3IHlBLFRJPSExO2FzeW5jIGZ1bmN0aW9uIGNlKEEsSSx0KXtsZXQgZT1udWxsO3R5cGVvZiBBIT0ic3RyaW5nIj9lPUEuaHJlZjpBLnN0YXJ0c1dpdGgoImh0dHAiKT9lPUE6ZT1gJHtJfS8ke0F9YCxlLmVuZHNXaXRoKCIuanMiKSYmKGU9ZS5zdWJzdHJpbmcoMCxlLmxlbmd0aC0zKSksZS5lbmRzV2l0aCgiLndhc20iKSYmKGU9ZS5zdWJzdHJpbmcoMCxlLmxlbmd0aC01KSk7bGV0IGc9YCR7ZX0ud2FzbWAscj1hd2FpdCBkQS5nZXQoYCR7Z30uenN0YCx7cmVzcG9uc2VUeXBlOiJhcnJheWJ1ZmZlciIscGFyYW1zOnR9KTtUSXx8KGF3YWl0IE9JLmluaXQoKSxUST0hMCk7bGV0IHM9T0kuZGVjb2RlKG5ldyBVaW50OEFycmF5KHIuZGF0YSkpLmJ1ZmZlcjtyZXR1cm4oYXdhaXQgaW1wb3J0KGAke2V9LmpzYCkpLmRlZmF1bHQoe3dhc21CaW5hcnk6c30pfXZhciB4ST1jZTt2YXIgd0E9bmV3IE1hcDthc3luYyBmdW5jdGlvbiBmZShBLEksdCl7bGV0IGU9QSxnPUEscj1udWxsO3JldHVybiB0eXBlb2YgQSE9InN0cmluZyImJihlPW5ldyBVUkwoQS5ocmVmKSxnPWUuaHJlZiksd0EuaGFzKGcpP3I9YXdhaXQgd0EuZ2V0KGcpOih3QS5zZXQoZyx4SShlLEksdCkpLHI9YXdhaXQgd0EuZ2V0KGcpKSxyfXZhciBQST1mZTt2YXIgbGU9e1RleHRGaWxlOiJUZXh0RmlsZSIsQmluYXJ5RmlsZToiQmluYXJ5RmlsZSIsVGV4dFN0cmVhbToiVGV4dFN0cmVhbSIsQmluYXJ5U3RyZWFtOiJCaW5hcnlTdHJlYW0iLEltYWdlOiJJbWFnZSIsTWVzaDoiTWVzaCIsUG9seURhdGE6IlBvbHlEYXRhIixKc29uQ29tcGF0aWJsZToiSnNvbkNvbXBhdGlibGUifSxEPWxlO3ZhciBEZT17SW50ODoiaW50OCIsVUludDg6InVpbnQ4IixJbnQxNjoiaW50MTYiLFVJbnQxNjoidWludDE2IixJbnQzMjoiaW50MzIiLFVJbnQzMjoidWludDMyIixJbnQ2NDoiaW50NjQiLFVJbnQ2NDoidWludDY0IixTaXplVmFsdWVUeXBlOiJ1aW50NjQiLElkZW50aWZpZXJUeXBlOiJ1aW50NjQiLEluZGV4VmFsdWVUeXBlOiJpbnQ2NCIsT2Zmc2V0VmFsdWVUeXBlOiJpbnQ2NCJ9LHA9RGU7dmFyIHVlPXtGbG9hdDMyOiJmbG9hdDMyIixGbG9hdDY0OiJmbG9hdDY0IixTcGFjZVByZWNpc2lvblR5cGU6ImZsb2F0NjQifSxQPXVlO2Z1bmN0aW9uIGhlKEEsSSl7bGV0IHQ9bnVsbDtzd2l0Y2goQSl7Y2FzZSBwLlVJbnQ4Ont0PW5ldyBVaW50OEFycmF5KEkpO2JyZWFrfWNhc2UgcC5JbnQ4Ont0PW5ldyBJbnQ4QXJyYXkoSSk7YnJlYWt9Y2FzZSBwLlVJbnQxNjp7dD1uZXcgVWludDE2QXJyYXkoSSk7YnJlYWt9Y2FzZSBwLkludDE2Ont0PW5ldyBJbnQxNkFycmF5KEkpO2JyZWFrfWNhc2UgcC5VSW50MzI6e3Q9bmV3IFVpbnQzMkFycmF5KEkpO2JyZWFrfWNhc2UgcC5JbnQzMjp7dD1uZXcgSW50MzJBcnJheShJKTticmVha31jYXNlIHAuVUludDY0Ont0eXBlb2YgZ2xvYmFsVGhpcy5CaWdVaW50NjRBcnJheT09ImZ1bmN0aW9uIj90PW5ldyBCaWdVaW50NjRBcnJheShJKTp0PW5ldyBVaW50OEFycmF5KEkpO2JyZWFrfWNhc2UgcC5JbnQ2NDp7dHlwZW9mIGdsb2JhbFRoaXMuQmlnSW50NjRBcnJheT09ImZ1bmN0aW9uIj90PW5ldyBCaWdJbnQ2NEFycmF5KEkpOnQ9bmV3IFVpbnQ4QXJyYXkoSSk7YnJlYWt9Y2FzZSBQLkZsb2F0MzI6e3Q9bmV3IEZsb2F0MzJBcnJheShJKTticmVha31jYXNlIFAuRmxvYXQ2NDp7dD1uZXcgRmxvYXQ2NEFycmF5KEkpO2JyZWFrfWNhc2UibnVsbCI6e3Q9bnVsbDticmVha31jYXNlIG51bGw6e3Q9bnVsbDticmVha31kZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVHlwZSBpcyBub3Qgc3VwcG9ydGVkIGFzIGEgVHlwZWRBcnJheSIpfXJldHVybiB0fXZhciBZPWhlO3ZhciBaST10eXBlb2YgZ2xvYmFsVGhpcy5TaGFyZWRBcnJheUJ1ZmZlcj09ImZ1bmN0aW9uIixqST1uZXcgVGV4dEVuY29kZXIsV0k9bmV3IFRleHREZWNvZGVyKCJ1dGYtOCIpO2Z1bmN0aW9uIGRlKEEsSSl7bGV0IHQ9e2ZsYWdzOiJyIixlbmNvZGluZzoiYmluYXJ5In0sZT1BLmZzX29wZW4oSSx0LmZsYWdzKSxyPUEuZnNfc3RhdChJKS5zaXplLGk9bnVsbDtaST9pPW5ldyBTaGFyZWRBcnJheUJ1ZmZlcihyKTppPW5ldyBBcnJheUJ1ZmZlcihyKTtsZXQgcz1uZXcgVWludDhBcnJheShpKTtyZXR1cm4gQS5mc19yZWFkKGUscywwLHIsMCksQS5mc19jbG9zZShlKSxzfWZ1bmN0aW9uIFZJKEEsSSx0KXtsZXQgZT1udWxsO1pJP2U9bmV3IFNoYXJlZEFycmF5QnVmZmVyKHQpOmU9bmV3IEFycmF5QnVmZmVyKHQpO2xldCBnPW5ldyBVaW50OEFycmF5KGUpLHI9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLEksdCk7cmV0dXJuIGcuc2V0KHIpLGd9ZnVuY3Rpb24geShBLEksdCxlKXtsZXQgZz0wO3JldHVybiBJIT09bnVsbCYmKGc9QS5jY2FsbCgiaXRrX3dhc21faW5wdXRfYXJyYXlfYWxsb2MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsdCxlLEkuYnVmZmVyLmJ5dGVMZW5ndGhdKSxBLkhFQVBVOC5zZXQobmV3IFVpbnQ4QXJyYXkoSS5idWZmZXIpLGcpKSxnfWZ1bmN0aW9uIGooQSxJLHQpe2xldCBlPUpTT04uc3RyaW5naWZ5KEkpLGc9QS5jY2FsbCgiaXRrX3dhc21faW5wdXRfanNvbl9hbGxvYyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCx0LGUubGVuZ3RoXSk7QS53cml0ZUFzY2lpVG9NZW1vcnkoZSxnLCExKX1mdW5jdGlvbiBTKEEsSSx0LGUpe2xldCBnPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEksdF0pLHI9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsSSx0XSksaT1WSShBLGcscik7cmV0dXJuIFkoZSxpLmJ1ZmZlcil9ZnVuY3Rpb24gekEoQSxJKXtsZXQgdD1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfanNvbl9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciJdLFswLEldKSxlPUEuQXNjaWlUb1N0cmluZyh0KTtyZXR1cm4gSlNPTi5wYXJzZShlKX1mdW5jdGlvbiB5ZShBLEksdCxlKXtlIT1udWxsJiZlLmxlbmd0aD4wJiZlLmZvckVhY2goZnVuY3Rpb24obixDKXtzd2l0Y2gobi50eXBlKXtjYXNlIEQuVGV4dFN0cmVhbTp7bGV0IG89akkuZW5jb2RlKG4uZGF0YS5kYXRhKSxmPXkoQSxvLEMsMCksUT17c2l6ZTpvLmJ1ZmZlci5ieXRlTGVuZ3RoLGRhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWB9O2ooQSxRLEMpO2JyZWFrfWNhc2UgRC5Kc29uQ29tcGF0aWJsZTp7bGV0IG89akkuZW5jb2RlKEpTT04uc3RyaW5naWZ5KG4uZGF0YSkpLGY9eShBLG8sQywwKSxRPXtzaXplOm8uYnVmZmVyLmJ5dGVMZW5ndGgsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YH07aihBLFEsQyk7YnJlYWt9Y2FzZSBELkJpbmFyeVN0cmVhbTp7bGV0IG89bi5kYXRhLmRhdGEsZj15KEEsbyxDLDApLFE9e3NpemU6by5idWZmZXIuYnl0ZUxlbmd0aCxkYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gfTtqKEEsUSxDKTticmVha31jYXNlIEQuVGV4dEZpbGU6e0EuZnNfd3JpdGVGaWxlKG4uZGF0YS5wYXRoLG4uZGF0YS5kYXRhKTticmVha31jYXNlIEQuQmluYXJ5RmlsZTp7QS5mc193cml0ZUZpbGUobi5kYXRhLnBhdGgsbi5kYXRhLmRhdGEpO2JyZWFrfWNhc2UgRC5JbWFnZTp7bGV0IG89bi5kYXRhLGY9eShBLG8uZGF0YSxDLDApLFE9eShBLG8uZGlyZWN0aW9uLEMsMSksRT10eXBlb2Ygby5tZXRhZGF0YT8uZW50cmllczwidSI/SlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbShvLm1ldGFkYXRhLmVudHJpZXMoKSkpOiJbXSIsYz17aW1hZ2VUeXBlOm8uaW1hZ2VUeXBlLG5hbWU6by5uYW1lLG9yaWdpbjpvLm9yaWdpbixzcGFjaW5nOm8uc3BhY2luZyxkaXJlY3Rpb246YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWAsc2l6ZTpvLnNpemUsZGF0YTpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke2Z9YCxtZXRhZGF0YTpFfTtqKEEsYyxDKTticmVha31jYXNlIEQuTWVzaDp7bGV0IG89bi5kYXRhLGY9eShBLG8ucG9pbnRzLEMsMCksUT15KEEsby5jZWxscyxDLDEpLEU9eShBLG8ucG9pbnREYXRhLEMsMiksYz15KEEsby5jZWxsRGF0YSxDLDMpLHU9e21lc2hUeXBlOm8ubWVzaFR5cGUsbmFtZTpvLm5hbWUsbnVtYmVyT2ZQb2ludHM6by5udW1iZXJPZlBvaW50cyxwb2ludHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtmfWAsbnVtYmVyT2ZDZWxsczpvLm51bWJlck9mQ2VsbHMsY2VsbHM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtRfWAsY2VsbEJ1ZmZlclNpemU6by5jZWxsQnVmZmVyU2l6ZSxudW1iZXJPZlBvaW50UGl4ZWxzOm8ubnVtYmVyT2ZQb2ludFBpeGVscyxwb2ludERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtFfWAsbnVtYmVyT2ZDZWxsUGl4ZWxzOm8ubnVtYmVyT2ZDZWxsUGl4ZWxzLGNlbGxEYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gfTtqKEEsdSxDKTticmVha31jYXNlIEQuUG9seURhdGE6e2xldCBvPW4uZGF0YSxmPXkoQSxvLnBvaW50cyxDLDApLFE9eShBLG8udmVydGljZXMsQywxKSxFPXkoQSxvLmxpbmVzLEMsMiksYz15KEEsby5wb2x5Z29ucyxDLDMpLHU9eShBLG8udHJpYW5nbGVTdHJpcHMsQyw0KSxkPXkoQSxvLnBvaW50RGF0YSxDLDUpLFI9eShBLG8ucG9pbnREYXRhLEMsNiksTj17cG9seURhdGFUeXBlOm8ucG9seURhdGFUeXBlLG5hbWU6by5uYW1lLG51bWJlck9mUG9pbnRzOm8ubnVtYmVyT2ZQb2ludHMscG9pbnRzOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Zn1gLHZlcnRpY2VzQnVmZmVyU2l6ZTpvLnZlcnRpY2VzQnVmZmVyU2l6ZSx2ZXJ0aWNlczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke1F9YCxsaW5lc0J1ZmZlclNpemU6by5saW5lc0J1ZmZlclNpemUsbGluZXM6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtFfWAscG9seWdvbnNCdWZmZXJTaXplOm8ucG9seWdvbnNCdWZmZXJTaXplLHBvbHlnb25zOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Y31gLHRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZTpvLnRyaWFuZ2xlU3RyaXBzQnVmZmVyU2l6ZSx0cmlhbmdsZVN0cmlwczpgZGF0YTphcHBsaWNhdGlvbi92bmQuaXRrLmFkZHJlc3MsMDoke3V9YCxudW1iZXJPZlBvaW50UGl4ZWxzOm8ubnVtYmVyT2ZQb2ludFBpeGVscyxwb2ludERhdGE6YGRhdGE6YXBwbGljYXRpb24vdm5kLml0ay5hZGRyZXNzLDA6JHtkfWAsbnVtYmVyT2ZDZWxsUGl4ZWxzOm8ubnVtYmVyT2ZDZWxsUGl4ZWxzLGNlbGxEYXRhOmBkYXRhOmFwcGxpY2F0aW9uL3ZuZC5pdGsuYWRkcmVzcywwOiR7Un1gfTtqKEEsTixDKTticmVha31kZWZhdWx0OnRocm93IEVycm9yKCJVbnN1cHBvcnRlZCBpbnB1dCBJbnRlcmZhY2VUeXBlIil9fSksQS5yZXNldE1vZHVsZVN0ZG91dCgpLEEucmVzZXRNb2R1bGVTdGRlcnIoKTtsZXQgZz1BLnN0YWNrU2F2ZSgpLHI9MDt0cnl7cj1BLmNhbGxNYWluKEkuc2xpY2UoKSl9Y2F0Y2gobil7dGhyb3cgdHlwZW9mIG49PSJudW1iZXIiJiYoY29uc29sZS5sb2coIkV4Y2VwdGlvbiB3aGlsZSBydW5uaW5nIHBpcGVsaW5lOiIpLGNvbnNvbGUubG9nKCJzdGRvdXQ6IixBLmdldE1vZHVsZVN0ZG91dCgpKSxjb25zb2xlLmVycm9yKCJzdGRlcnI6IixBLmdldE1vZHVsZVN0ZGVycigpKSx0eXBlb2YgQS5nZXRFeGNlcHRpb25NZXNzYWdlPCJ1Ij9jb25zb2xlLmVycm9yKCJleGNlcHRpb246IixBLmdldEV4Y2VwdGlvbk1lc3NhZ2UobikpOmNvbnNvbGUuZXJyb3IoIkJ1aWxkIG1vZHVsZSBpbiBEZWJ1ZyBtb2RlIGZvciBleGNlcHRpb24gbWVzc2FnZSBpbmZvcm1hdGlvbi4iKSksbn1maW5hbGx5e0Euc3RhY2tSZXN0b3JlKGcpfWxldCBpPUEuZ2V0TW9kdWxlU3Rkb3V0KCkscz1BLmdldE1vZHVsZVN0ZGVycigpLGE9W107cmV0dXJuIHQhPW51bGwmJnQubGVuZ3RoPjAmJnI9PT0wJiZ0LmZvckVhY2goZnVuY3Rpb24obixDKXtsZXQgbz1udWxsO3N3aXRjaChuLnR5cGUpe2Nhc2UgRC5UZXh0U3RyZWFtOntsZXQgUT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfYWRkcmVzcyIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxDLDBdKSxFPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9zaXplIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEMsMF0pLGM9bmV3IFVpbnQ4QXJyYXkoQS5IRUFQVTguYnVmZmVyLFEsRSk7bz17ZGF0YTpXSS5kZWNvZGUoYyl9O2JyZWFrfWNhc2UgRC5Kc29uQ29tcGF0aWJsZTp7bGV0IFE9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X2FkZHJlc3MiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQywwXSksRT1BLmNjYWxsKCJpdGtfd2FzbV9vdXRwdXRfYXJyYXlfc2l6ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXSxbMCxDLDBdKSxjPW5ldyBVaW50OEFycmF5KEEuSEVBUFU4LmJ1ZmZlcixRLEUpO289SlNPTi5wYXJzZShXSS5kZWNvZGUoYykpO2JyZWFrfWNhc2UgRC5CaW5hcnlTdHJlYW06e2xldCBRPUEuY2NhbGwoIml0a193YXNtX291dHB1dF9hcnJheV9hZGRyZXNzIiwibnVtYmVyIixbIm51bWJlciIsIm51bWJlciIsIm51bWJlciJdLFswLEMsMF0pLEU9QS5jY2FsbCgiaXRrX3dhc21fb3V0cHV0X2FycmF5X3NpemUiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl0sWzAsQywwXSk7bz17ZGF0YTpWSShBLFEsRSl9O2JyZWFrfWNhc2UgRC5UZXh0RmlsZTp7bz17cGF0aDpuLmRhdGEucGF0aCxkYXRhOkEuZnNfcmVhZEZpbGUobi5kYXRhLnBhdGgse2VuY29kaW5nOiJ1dGY4In0pfTticmVha31jYXNlIEQuQmluYXJ5RmlsZTp7bz17cGF0aDpuLmRhdGEucGF0aCxkYXRhOmRlKEEsbi5kYXRhLnBhdGgpfTticmVha31jYXNlIEQuSW1hZ2U6e2xldCBRPXpBKEEsQyk7US5kYXRhPVMoQSxDLDAsUS5pbWFnZVR5cGUuY29tcG9uZW50VHlwZSksUS5kaXJlY3Rpb249UyhBLEMsMSxQLkZsb2F0NjQpLFEubWV0YWRhdGE9bmV3IE1hcChRLm1ldGFkYXRhKSxvPVE7YnJlYWt9Y2FzZSBELk1lc2g6e2xldCBRPXpBKEEsQyk7US5udW1iZXJPZlBvaW50cz4wP1EucG9pbnRzPVMoQSxDLDAsUS5tZXNoVHlwZS5wb2ludENvbXBvbmVudFR5cGUpOlEucG9pbnRzPVkoUS5tZXNoVHlwZS5wb2ludENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxRLm51bWJlck9mQ2VsbHM+MD9RLmNlbGxzPVMoQSxDLDEsUS5tZXNoVHlwZS5jZWxsQ29tcG9uZW50VHlwZSk6US5jZWxscz1ZKFEubWVzaFR5cGUuY2VsbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxRLm51bWJlck9mUG9pbnRQaXhlbHM+MD9RLnBvaW50RGF0YT1TKEEsQywyLFEubWVzaFR5cGUucG9pbnRQaXhlbENvbXBvbmVudFR5cGUpOlEucG9pbnREYXRhPVkoUS5tZXNoVHlwZS5wb2ludFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLFEubnVtYmVyT2ZDZWxsUGl4ZWxzPjA/US5jZWxsRGF0YT1TKEEsQywzLFEubWVzaFR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSk6US5jZWxsRGF0YT1ZKFEubWVzaFR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSxuZXcgQXJyYXlCdWZmZXIoMCkpLG89UTticmVha31jYXNlIEQuUG9seURhdGE6e2xldCBRPXpBKEEsQyk7US5udW1iZXJPZlBvaW50cz4wP1EucG9pbnRzPVMoQSxDLDAsUC5GbG9hdDMyKTpRLnBvaW50cz1uZXcgRmxvYXQzMkFycmF5LFEudmVydGljZXNCdWZmZXJTaXplPjA/US52ZXJ0aWNlcz1TKEEsQywxLHAuVUludDMyKTpRLnZlcnRpY2VzPW5ldyBVaW50MzJBcnJheSxRLmxpbmVzQnVmZmVyU2l6ZT4wP1EubGluZXM9UyhBLEMsMixwLlVJbnQzMik6US5saW5lcz1uZXcgVWludDMyQXJyYXksUS5wb2x5Z29uc0J1ZmZlclNpemU+MD9RLnBvbHlnb25zPVMoQSxDLDMscC5VSW50MzIpOlEucG9seWdvbnM9bmV3IFVpbnQzMkFycmF5LFEudHJpYW5nbGVTdHJpcHNCdWZmZXJTaXplPjA/US50cmlhbmdsZVN0cmlwcz1TKEEsQyw0LHAuVUludDMyKTpRLnRyaWFuZ2xlU3RyaXBzPW5ldyBVaW50MzJBcnJheSxRLm51bWJlck9mUG9pbnRQaXhlbHM+MD9RLnBvaW50RGF0YT1TKEEsQyw1LFEucG9seURhdGFUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlKTpRLnBvaW50RGF0YT1ZKFEucG9seURhdGFUeXBlLnBvaW50UGl4ZWxDb21wb25lbnRUeXBlLG5ldyBBcnJheUJ1ZmZlcigwKSksUS5udW1iZXJPZkNlbGxQaXhlbHM+MD9RLmNlbGxEYXRhPVMoQSxDLDYsUS5wb2x5RGF0YVR5cGUuY2VsbFBpeGVsQ29tcG9uZW50VHlwZSk6US5jZWxsRGF0YT1ZKFEucG9seURhdGFUeXBlLmNlbGxQaXhlbENvbXBvbmVudFR5cGUsbmV3IEFycmF5QnVmZmVyKDApKSxvPVE7YnJlYWt9ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5zdXBwb3J0ZWQgb3V0cHV0IEludGVyZmFjZVR5cGUiKX1sZXQgZj17dHlwZTpuLnR5cGUsZGF0YTpvfTthLnB1c2goZil9KSx7cmV0dXJuVmFsdWU6cixzdGRvdXQ6aSxzdGRlcnI6cyxvdXRwdXRzOmF9fXZhciBYST15ZTt2YXIgd2U9dHlwZW9mIGdsb2JhbFRoaXMuU2hhcmVkQXJyYXlCdWZmZXI8InUiO2Z1bmN0aW9uIG1lKEEsSSl7aWYoQT09bnVsbClyZXR1cm5bXTtsZXQgdD1bXTtmb3IobGV0IGU9MDtlPEEubGVuZ3RoO2UrKyl7bGV0IGc9cGUoQVtlXSxJKTtnIT09bnVsbCYmdC5wdXNoKGcpfXJldHVybiB0fWZ1bmN0aW9uIHBlKEEsSSl7aWYoQT09bnVsbClyZXR1cm4gbnVsbDtsZXQgdD1udWxsO3JldHVybiBBLmJ1ZmZlciE9PXZvaWQgMD90PUEuYnVmZmVyOkEuYnl0ZUxlbmd0aCE9PXZvaWQgMCYmKHQ9QSksd2UmJnQgaW5zdGFuY2VvZiBTaGFyZWRBcnJheUJ1ZmZlcj9udWxsOkk/dDp0LnNsaWNlKDApfXZhciB6ST1tZTtmdW5jdGlvbiBTZShBKXtyZXR1cm5bQS5kYXRhLEEuZGlyZWN0aW9uXX12YXIgX0k9U2U7ZnVuY3Rpb24gRmUoQSl7cmV0dXJuW0EucG9pbnRzLEEucG9pbnREYXRhLEEuY2VsbHMsQS5jZWxsRGF0YV19dmFyIHZJPUZlO2Z1bmN0aW9uIFJlKEEpe3JldHVybltBLnBvaW50cyxBLnZlcnRpY2VzLEEubGluZXMsQS5wb2x5Z29ucyxBLnRyaWFuZ2xlU3RyaXBzLEEucG9pbnREYXRhLEEuY2VsbERhdGFdfXZhciAkST1SZTthc3luYyBmdW5jdGlvbiBOZShBLEksdCxlKXtsZXQgZz1YSShBLEksdCxlKSxyPVtdO3JldHVybiBnLm91dHB1dHMuZm9yRWFjaChmdW5jdGlvbihpKXtpZihpLnR5cGU9PT1ELkJpbmFyeVN0cmVhbXx8aS50eXBlPT09RC5CaW5hcnlGaWxlKXtsZXQgcz1pLmRhdGE7ci5wdXNoKHMpfWVsc2UgaWYoaS50eXBlPT09RC5JbWFnZSl7bGV0IHM9aS5kYXRhO3IucHVzaCguLi5fSShzKSl9ZWxzZSBpZihpLnR5cGU9PT1ELk1lc2gpe2xldCBzPWkuZGF0YTtyLnB1c2goLi4udkkocykpfWVsc2UgaWYoaS50eXBlPT09RC5Qb2x5RGF0YSl7bGV0IHM9aS5kYXRhO3IucHVzaCguLi4kSShzKSl9fSksU0EoZyx6SShyLCEwKSl9dmFyIEF0PU5lO3ZhciBVZT17cnVuUGlwZWxpbmU6YXN5bmMgZnVuY3Rpb24oQSxJLHQsZSxnLHIpe2xldCBpPWF3YWl0IFBJKEEsSSxyKTtyZXR1cm4gYXdhaXQgQXQoaSx0LGUsZyl9fTtvQShVZSk7JTBBLyohIEJ1bmRsZWQgbGljZW5zZSBpbmZvcm1hdGlvbjolMEElMEFjb21saW5rL2Rpc3QvZXNtL2NvbWxpbmsubWpzOiUwQSAgKCoqJTBBICAgKiBAbGljZW5zZSUwQSAgICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIExMQyUwQSAgICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAlMEEgICAqKSUwQSovJTBBJztXdChHdCk7ZXhwb3J0e2hlIGFzIGJ5dVJlYWRNZXNoLHllIGFzIGJ5dVdyaXRlTWVzaCxUIGFzIGV4dGVuc2lvblRvTWVzaElvLHdlIGFzIGZyZWVTdXJmZXJBc2NpaVJlYWRNZXNoLERlIGFzIGZyZWVTdXJmZXJBc2NpaVdyaXRlTWVzaCxiZSBhcyBmcmVlU3VyZmVyQmluYXJ5UmVhZE1lc2gsUmUgYXMgZnJlZVN1cmZlckJpbmFyeVdyaXRlTWVzaCxoIGFzIGdldERlZmF1bHRXZWJXb3JrZXIsUSBhcyBnZXRQaXBlbGluZVdvcmtlclVybCxkIGFzIGdldFBpcGVsaW5lc0Jhc2VVcmwsZ2UgYXMgb2JqUmVhZE1lc2gsbGUgYXMgb2JqV3JpdGVNZXNoLENlIGFzIG9mZlJlYWRNZXNoLGZlIGFzIG9mZldyaXRlTWVzaCxqaSBhcyByZWFkTWVzaCxvSSBhcyBzZXREZWZhdWx0V2ViV29ya2VyLFd0IGFzIHNldFBpcGVsaW5lV29ya2VyVXJsLFhhIGFzIHNldFBpcGVsaW5lc0Jhc2VVcmwsQmUgYXMgc3RsUmVhZE1lc2gsdWUgYXMgc3RsV3JpdGVNZXNoLG1lIGFzIHN3Y1JlYWRNZXNoLGRlIGFzIHN3Y1dyaXRlTWVzaCxhZSBhcyB2dGtQb2x5RGF0YVJlYWRNZXNoLEllIGFzIHZ0a1BvbHlEYXRhV3JpdGVNZXNoLGNlIGFzIHdhc21SZWFkTWVzaCxwZSBhcyB3YXNtV3JpdGVNZXNoLEVlIGFzIHdhc21ac3RkUmVhZE1lc2gsUWUgYXMgd2FzbVpzdGRXcml0ZU1lc2gsX2kgYXMgd3JpdGVNZXNofTsKLyohIEJ1bmRsZWQgbGljZW5zZSBpbmZvcm1hdGlvbjoKCmNvbWxpbmsvZGlzdC9lc20vY29tbGluay5tanM6CiAgKCoqCiAgICogQGxpY2Vuc2UKICAgKiBDb3B5cmlnaHQgMjAxOSBHb29nbGUgTExDCiAgICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKICAgKikKKi8K""" default_config = JsPackageConfig(default_js_module) js_package = JsPackage(default_config)