Content-Type: multipart/related; start=; boundary=----------4U30QjLS4eCboJMb6SvxMv Content-Location: http://teplice.naseadresa.cz/cz/s176-detail-zpravy/Regionalni-zpravodajstvi/c793-Zpravy/n17477-Rusky-kosmonaut-je-dnes-v-Teplicich Subject: =?utf-8?Q?Rusk=C3=BD=20kosmonaut=20je=20dnes=20v=20Teplic=C3=ADch=20|=20teplice.naseadresa.cz?= MIME-Version: 1.0 ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=n17477-Rusky-kosmonaut-je-dnes-v-Teplicich.htm Content-Type: text/html; charset=utf-8; name=n17477-Rusky-kosmonaut-je-dnes-v-Teplicich.htm Content-ID: Content-Location: http://teplice.naseadresa.cz/cz/s176-detail-zpravy/Regionalni-zpravodajstvi/c793-Zpravy/n17477-Rusky-kosmonaut-je-dnes-v-Teplicich Content-Transfer-Encoding: Quoted-Printable = = Rusk=C3=BD kosmonaut je dnes v Teplic=C3=ADch | teplice.naseadre= sa.cz = = = =
3D"Reklama"
 
= =
Galerie: Rusk=C3=BD kosmonaut je dnes v = Teplic=C3=ADch = po=C4=8Det fotek 25 =

= = =
 
=

Po=C5=A1lete n=C3=A1m V=C3=A1=C5=A1 te= xt:
= =   Vlo=C5=BE vlastn=C3=AD text  

  
  
= =
3D= =3D"arrow" 3D"a=
velikost textu
Teplice
7.10.2009 13:37:09
Autor: = = Gabriela Hauptvogelov=C3=A1=
=
=
Do Teplic dnes p=C5=99ijel rusk=C3=BD kosmonaut Pavel Vladimirovi=C4= =8D Vinogradov. Dopoledne besedoval se studenty teplick=C3=A9ho gymn=C3=A1= zia. Ti si pro n=C4=9Bj na za=C4=8D=C3=A1tek p=C5=99ipravili malou preze= ntaci a po=C5=BE=C3=A1dali ho, aby ji s=C3=A1m okomentoval. On s=C3=A1m = pak vypr=C3=A1v=C4=9Bl o vesm=C3=ADrn=C3=A9m v=C3=BDzkumu, p=C5=99ivezl = aktu=C3=A1ln=C3=AD fotografie z vesm=C3=ADru a odpov=C3=ADdal na dotazy = student=C5=AF.

Vinogradov p=C5=99ijel do Teplic u p=C5=99=C3=AD= le=C5=BEitosti prob=C3=ADhaj=C3=ADc=C3=ADho Community Day ASE XXII Plane= tary Congress v Praze. Pavel Vinogradov je =C3=BA=C4=8Dastn=C3=ADkem dvo= u kosmick=C3=BDch let=C5=AF. V roce 1997 let=C4=9Bl se Sojuzem TM-26 na = stanici Mir a v roce 2006 se Sojuzem TMA-8 na stanici ISS. Cekem str=C3=A1= vil ve vesm=C3=ADru 380 dn=C3=AD 16 hodin a 18 minut. Student=C5=AFm p=C5= =99edstavil sou=C4=8Dasn=C3=BD v=C3=BDvoj let=C5=AF do vesm=C3=ADru, hov= o=C5=99il tak=C3=A9 o sv=C3=A9 dosavadn=C3=AD pr=C3=A1ci. Nechyb=C4=9Bly= ani aktu=C3=A1ln=C3=AD fotografie ze =C5=BEivota na orbit=C3=A1ln=C3=AD= stanici. Studenti tak vid=C4=9Bli, jak kosmonauti ve=C4=8De=C5=99=C3=AD= anebo v dresu obl=C3=ADben=C3=A9ho hokejov=C3=A9ho dru=C5=BEstva fand=C3= =AD p=C5=99i utk=C3=A1n=C3=AD NHL. Vinogradov p=C5=99ivezl tak=C3=A9 sn=C3= =ADmky ji=C5=BEn=C3=AD Evropy a Severn=C3=AD Afriky nebo hurik=C3=A1nu t= ak, jak jsou vid=C4=9Bt z kosmu.

V=C5=A1ichni se b=C4=9Bhem = besed tak=C3=A9 dov=C4=9Bd=C4=9Bli, =C5=BEe ofici=C3=A1ln=C3=ADm jazykem= je sice angli=C4=8Dtina, ale kosmonauti r=C5=AFzn=C3=BDch n=C3=A1rodnos= t=C3=AD se mezi sebou dorozum=C3=ADvaj=C3=AD zvl=C3=A1=C5=A1tn=C3=ADm ja= zykem slo=C5=BEen=C3=BDm z angli=C4=8Dtiny, francouz=C5=A1tiny a ru=C5=A1= tiny. =E2=80=9EAmeri=C4=8Dt=C3=AD kosmonauti nav=C3=ADc um=C4=9Bj=C3=AD = velmi dob=C5=99e rusky a naopak,=E2=80=9C dodal kosmonaut.

St= udenti se ptali tak=C3=A9 na j=C3=ADdlo nebo na to, jak na vesm=C3=ADrn=C3= =A9 stanici funguje z=C3=A1chod. Pr=C3=A1v=C4=9B tato ot=C3=A1zka vzbudi= la velk=C3=A9 pobaven=C3=AD. =E2=80=9ENa Zemi norm=C3=A1ln=C4=9B splachu= jeme a voda te=C4=8De d=C3=ADky gravitaci dol=C5=AF. Na ISS m=C3=A1me po= dobn=C3=A9 z=C3=A1chody, i kdy=C5=BE funguj=C3=AD trochu jinak. A mo=C4=8D= se d=C3=ADky chemick=C3=A9mu procesu p=C5=99em=C4=9Bn=C3=AD ve vodu, kt= erou pak norm=C3=A1ln=C4=9B pou=C5=BE=C3=ADv=C3=A1me,=E2=80=9C vysv=C4=9B= tlil Pavel Vinogradov.

Dostat se do vesm=C3=ADru vy=C5=BEadu= je podle Vinogradova roky studia, p=C5=99es 200 zkou=C5=A1ek a d=C5=AFkl= adnou p=C5=99=C3=ADpravu. I d=C3=ADky n=C3=AD nem=C3=A1 p=C5=99ed letem = do kosmu strach. =E2=80=9EJednomu letu p=C5=99edch=C3=A1z=C3=AD i n=C4=9B= kolik let p=C5=99=C3=ADprav, tak=C5=BEe nen=C3=AD =C4=8Deho se b=C3=A1t,= =E2=80=9C odpov=C4=9Bd=C4=9Bl na studentsk=C3=BD dotaz Vinogradov. A pro= =C4=8D se cht=C4=9Bl st=C3=A1t pr=C3=A1v=C4=9B kosmonautem? =E2=80=9ENen= =C3=AD jin=C3=A1 lep=C5=A1=C3=AD profese ne=C5=BE kosmonaut. A cht=C4=9B= l jsem vid=C4=9Bt Zemi z v=C3=BD=C5=A1ky,=E2=80=9C =C5=99ekl. Po skon=C4= =8Den=C3=AD besedy sklidil rusk=C3=BD kosmonaut obrovsk=C3=BD aplaus.
Pavel Vladimirovi=C4=8D Vinogradov p=C5=99ijel do Teplic se svo= u =C5=BEenou Irinou Valentinovnou a dcerou Jekaterinou. Odpoledne ho =C4= =8Dek=C3=A1 proch=C3=A1zka po m=C4=9Bst=C4=9B i n=C3=A1v=C5=A1t=C4=9Bva = l=C3=A1zn=C3=AD.




=
=
3D"bubble" diskuze = (0) 
| = =
 
| = = | =
  
  
 
=  
= = =
 
 
= =

Diskutujte (0 p=C5=99=C3=ADsp=C4=9Bvk=C5=AF) = Z=C3=A1vazn=C3=A1= pravidla pro diskuse

 
=

Vlo=C5=BEte nov=C3=BD p=C5=99=C3=ADsp=C4=9Bvek
3D"povinn=C3=A9"
   
3D"povinn=C3=A9"
   
3D"povinn=C3=A9"
=    
3D"povinn=C3=A9"
 
 
 
 
 
=
3D"povinn=C3=A9"
   
 
Vlo=C5=BEen=C3=BD diskusn=C3=AD p=C5=99=C3=ADsp=C4= =9Bvek mus=C3=AD respektovat  Z=C3=A1vazn=C3= =A1 pravidla pro diskuse
=

3D= =
=
 
=
= = = = =
Reklama
 
 
 
  
Reklama
 
 
=
  
= =

EU a Ji=C5=BEn=C3=AD Ko= rea podepsaly dohodu o voln=C3=A9m obchodu

BRUSEL
Autor: Agenturn=C3= =AD zpravodajstv=C3=AD 15.10.2009 16:18:20=
Z=C5=99ejm=C4=9B nejd=C5=AFle=C5=BEit=C4=9Bj=C5= =A1=C3=AD dohodu o voln=C3=A9m obchodu, kter=C3=A1 kdy byla uzav=C5=99en= a mezi Evropskou uni=C3=AD a t=C5=99et=C3=AD zem=C3=AD, podepsala ve =C4= =8Dtvrtek komisa=C5=99ka EU pro obchod Catherine Ashtonov=C3=A1 a korejs= k=C3=BD ministr obchodu Kim Jong-hoon. Informoval o tom Martin Sta=C5=A1= ek, mluv=C4=8D=C3=AD =C4=8Desk=C3=A9ho zastoupen=C3=AD Evropsk=C3=A9 kom= ise.
v=C3=ADce informac=C3=AD = dal=C5=A1=C3=AD =C4=8D= l=C3=A1nky 
 =  

 =  
Reklama
 
 
  
= = =
Nejdiskutovan=C4=9Bj=C5=A1=C3= =AD =C4=8Dl=C3=A1nky
 
 
  
=
Vyberte ti=C5=A1t=C4=9Bn=C3=BD t=C3=BDden=C3=ADk: 3D"T=C3=BDden=C3=AD=
=

PARTNE=C5=98I PROJEKTU:

3DATEX      &n= bsp;         3D"World        3DTicketstream       &nb= sp; 3D"Studiomed   &nbs= p; =

NA=C5=A0E DAL=C5=A0=C3=8D PROJEKTY: www.futuroom.cz= www.junioroom.czwww.futuroompublishing.cz=

 
Copyright =C2=A9 PPF 2009, v=C5=A1echna pr=C3=A1va vyhrazena. Pou=C5=BE= =C3=ADv=C3=A1me agenturn=C3=AD syst=C3=A9m Mediafax. Publikov=C3=A1n=C3=AD= nebo =C5=A1=C3=AD=C5=99en=C3=AD obsahu ze serveru naseadresa.cz a v=C5= =A1ech souvisej=C3=ADc=C3=ADch dom=C3=A9n, je bez p=C3=ADsemn=C3=A9ho so= uhlasu PPF Media a.s. zak=C3=A1z=C3=A1no.
Vyrobeno v Cyber Stream Technology s.r.o.
=
Nastav NASEADRESA.cz jako = domovskou adresu
= =
= = = = Nov=C3=BD u=C5=BEivatel?

P=C5=99ihl=C3=A1=C5=A1en=C3=AD

=
   
teplice.naseadresa.cz 3D"teplice.naseadresa.cz"

teplice.





=
 
Dnes je =C4=8Dtvrtek 15. 10. 2009,<= /div>
sv=C3=A1tek m=C3=A1 Tereza 
Dne=C5=A1n=C3=AD horoskop zde
   
3D"Google"
3D"|" =
   
3D"|"
   
=C4=8Cj" class=3D"buttonGreyBg" = onclick=3D"javascript:sendForm4Translation('en','cs',false)" /> Aj" class=3D"buttonGreyBg" = onclick=3D"javascript:sendForm4Translation('cs','en',false)" /> v=C3=ADce jaz= yk=C5=AF
 
=
 
=
=3D"Reklama"
 
------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=favicon.ico Content-Type: image/x-icon; name=favicon.ico Content-Location: http://teplice.naseadresa.cz/favicon.ico Content-Transfer-Encoding: Base64 AAABAAIAEBAAAAEAIABoBAAAJgAAACAgAAABACAAqBAAAI4EAAAoAAAAEAAAACAA AAABACAAAAAAAAAEAAASCwAAEgsAAAAAAAAAAAAA2cu//7KUff+zln//s5Z//7OW f/+zln//sJJ//9nLwP/m3dX/sZR//7KWf/+zln//s5Z//7OWf/+ylX7/wquZ/6+Q eP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2EmAP+0mIL/zbus/2QqAP9mLQD/Zy4A/2cu AP9nLgD/Zy4A/35OJ/+zln//Zy4A/2cuAP9nLgD/Zy4A/2cuAP9hJgD/tJiC/827 rP9kKgD/Zi0A/2cuAP9nLgD/Zy4A/2cuAP+FWDP/s5Z//2cuAP9nLgD/Zy4A/2cu AP9nLgD/YSYA/7SYgv/Nu6z/ZCoA/2YtAP9nLgD/Zy4A/2cuAP9nLgD/hVgz/7OW f/9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2EmAP+0mIL/zbus/2QqAP9mLQD/Zy4A/2cu AP9nLgD/Zy4A/4VYM/+zln//Zy4A/2cuAP9nLgD/Zy4A/2cuAP9hJgD/tJiC/827 rP9kKgD/Zi0A/2cuAP9nLgD/Zy4A/2cuAP+FWDP/rpB//14hAP9eIQD/XiEA/14h AP9dIQD/VxkA/7CSev/Kt6f/Wx0A/10gAP9eIQD/XiEA/14hAP9eIQD/fk0z/825 p/+cdFD/nHRQ/5x0UP+cdFD/nHRQ/5hvUP/Ou6n/3tLJ/5lzV/+bdVf/m3VX/5t1 V/+bdVf/m3VX/6+Ref/v8v//3+X//9/l///f5f//3+X//9/l///e5P//7/P///f0 7v/m3dX/5t3W/+bd1v/n3db/593W/+fd1v/r5N7/o6f3/0dQ8P9HUPD/R1Dw/0dQ 8P9GUPD/P0rv/6Or///PuZ//ZSsB/2cuAf9nLwH/Zy8B/2cvAf9nLwH/hVk0/6Kn 9/9FT/D/RU/w/0VP8P9FT/D/RU/w/z5I7/+iqv//z7me/2MpAP9lLAD/Zi0A/2Yt AP9mLQD/Zi0A/4VXM/+ip/f/RlDw/0ZQ8P9GUPD/RlDw/0ZQ8P8/Se//oqr//8+5 n/9kKgD/Zi0A/2cuAP9nLgD/Zy4A/2cuAP+FWDP/oqf3/0ZQ8P9GUPD/RlDw/0ZQ 8P9GUPD/P0nv/6Kq///PuZ//ZCoA/2YtAP9nLgD/Zy4A/2cuAP9nLgD/hVgz/6Kn 9/9GUPD/RlDw/0ZQ8P9GUPD/RlDw/z9J7/+iqv//z7mf/2QqAP9mLQD/Zy4A/2cu AP9nLgD/Zy4A/4VYM/+gpff/RlDw/0ZQ8P9GUPD/RlDw/0ZQ8P8/Se//oqr//8+5 n/9kKgD/Zi0A/2cuAP9nLgD/Zy4A/2cuAP+CUy3/tbn5/2Zu8/9rc/P/a3Pz/2tz 8/9rc/P/ZW3y/7W7///Zx7L/g1Uz/4VXM/+FWDP/hVgz/4VYM/+EVTD/nXlb/wAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAASCwAAEgsAAAAA AAAAAAAA2cu//9nLv/+ylH3/spR9/7OWf/+zln//s5Z//7OWf/+zln//s5Z//7OW f/+zln//sJJ//7CSf//Zy8D/2cvA/+bd1f/m3dX/sZR//7GUf/+yln//spZ//7OW f/+zln//s5Z//7OWf/+zln//s5Z//7KVfv+ylX7/wquZ/8Krmf/Zy7//2cu//7KU ff+ylH3/s5Z//7OWf/+zln//s5Z//7OWf/+zln//s5Z//7OWf/+wkn//sJJ//9nL wP/Zy8D/5t3V/+bd1f+xlH//sZR//7KWf/+yln//s5Z//7OWf/+zln//s5Z//7OW f/+zln//spV+/7KVfv/Cq5n/wquZ/6+QeP+vkHj/Zy4A/2cuAP9nLgD/Zy4A/2cu AP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2EmAP9hJgD/tJiC/7SYgv/Nu6z/zbus/2Qq AP9kKgD/Zi0A/2YtAP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/35O J/9+Tif/r5B4/6+QeP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cu AP9nLgD/YSYA/2EmAP+0mIL/tJiC/827rP/Nu6z/ZCoA/2QqAP9mLQD/Zi0A/2cu AP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9nLgD/fk4n/35OJ/+zln//s5Z//2cu AP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9hJgD/YSYA/7SY gv+0mIL/zbus/827rP9kKgD/ZCoA/2YtAP9mLQD/Zy4A/2cuAP9nLgD/Zy4A/2cu AP9nLgD/Zy4A/2cuAP+FWDP/hVgz/7OWf/+zln//Zy4A/2cuAP9nLgD/Zy4A/2cu AP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2EmAP9hJgD/tJiC/7SYgv/Nu6z/zbus/2Qq AP9kKgD/Zi0A/2YtAP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/4VY M/+FWDP/s5Z//7OWf/9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cu AP9nLgD/YSYA/2EmAP+0mIL/tJiC/827rP/Nu6z/ZCoA/2QqAP9mLQD/Zi0A/2cu AP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9nLgD/hVgz/4VYM/+zln//s5Z//2cu AP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9hJgD/YSYA/7SY gv+0mIL/zbus/827rP9kKgD/ZCoA/2YtAP9mLQD/Zy4A/2cuAP9nLgD/Zy4A/2cu AP9nLgD/Zy4A/2cuAP+FWDP/hVgz/7OWf/+zln//Zy4A/2cuAP9nLgD/Zy4A/2cu AP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2EmAP9hJgD/tJiC/7SYgv/Nu6z/zbus/2Qq AP9kKgD/Zi0A/2YtAP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/4VY M/+FWDP/s5Z//7OWf/9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cu AP9nLgD/YSYA/2EmAP+0mIL/tJiC/827rP/Nu6z/ZCoA/2QqAP9mLQD/Zi0A/2cu AP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9nLgD/hVgz/4VYM/+zln//s5Z//2cu AP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9hJgD/YSYA/7SY gv+0mIL/zbus/827rP9kKgD/ZCoA/2YtAP9mLQD/Zy4A/2cuAP9nLgD/Zy4A/2cu AP9nLgD/Zy4A/2cuAP+FWDP/hVgz/7OWf/+zln//Zy4A/2cuAP9nLgD/Zy4A/2cu AP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2EmAP9hJgD/tJiC/7SYgv/Nu6z/zbus/2Qq AP9kKgD/Zi0A/2YtAP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/4VY M/+FWDP/rpB//66Qf/9eIQD/XiEA/14hAP9eIQD/XiEA/14hAP9eIQD/XiEA/10h AP9dIQD/VxkA/1cZAP+wknr/sJJ6/8q3p//Kt6f/Wx0A/1sdAP9dIAD/XSAA/14h AP9eIQD/XiEA/14hAP9eIQD/XiEA/14hAP9eIQD/fk0z/35NM/+ukH//rpB//14h AP9eIQD/XiEA/14hAP9eIQD/XiEA/14hAP9eIQD/XSEA/10hAP9XGQD/VxkA/7CS ev+wknr/yren/8q3p/9bHQD/Wx0A/10gAP9dIAD/XiEA/14hAP9eIQD/XiEA/14h AP9eIQD/XiEA/14hAP9+TTP/fk0z/825p//Nuaf/nHRQ/5x0UP+cdFD/nHRQ/5x0 UP+cdFD/nHRQ/5x0UP+cdFD/nHRQ/5hvUP+Yb1D/zrup/867qf/e0sn/3tLJ/5lz V/+Zc1f/m3VX/5t1V/+bdVf/m3VX/5t1V/+bdVf/m3VX/5t1V/+bdVf/m3VX/6+R ef+vkXn/zbmn/825p/+cdFD/nHRQ/5x0UP+cdFD/nHRQ/5x0UP+cdFD/nHRQ/5x0 UP+cdFD/mG9Q/5hvUP/Ou6n/zrup/97Syf/e0sn/mXNX/5lzV/+bdVf/m3VX/5t1 V/+bdVf/m3VX/5t1V/+bdVf/m3VX/5t1V/+bdVf/r5F5/6+Ref/v8v//7/L//9/l ///f5f//3+X//9/l///f5f//3+X//9/l///f5f//3+X//9/l///e5P//3uT//+/z ///v8///9/Tu//f07v/m3dX/5t3V/+bd1v/m3db/5t3W/+bd1v/n3db/593W/+fd 1v/n3db/593W/+fd1v/r5N7/6+Te/+/y///v8v//3+X//9/l///f5f//3+X//9/l ///f5f//3+X//9/l///f5f//3+X//97k///e5P//7/P//+/z///39O7/9/Tu/+bd 1f/m3dX/5t3W/+bd1v/m3db/5t3W/+fd1v/n3db/593W/+fd1v/n3db/593W/+vk 3v/r5N7/o6f3/6On9/9HUPD/R1Dw/0dQ8P9HUPD/R1Dw/0dQ8P9HUPD/R1Dw/0ZQ 8P9GUPD/P0rv/z9K7/+jq///o6v//8+5n//PuZ//ZSsB/2UrAf9nLgH/Zy4B/2cv Af9nLwH/Zy8B/2cvAf9nLwH/Zy8B/2cvAf9nLwH/hVk0/4VZNP+jp/f/o6f3/0dQ 8P9HUPD/R1Dw/0dQ8P9HUPD/R1Dw/0dQ8P9HUPD/RlDw/0ZQ8P8/Su//P0rv/6Or //+jq///z7mf/8+5n/9lKwH/ZSsB/2cuAf9nLgH/Zy8B/2cvAf9nLwH/Zy8B/2cv Af9nLwH/Zy8B/2cvAf+FWTT/hVk0/6Kn9/+ip/f/RU/w/0VP8P9FT/D/RU/w/0VP 8P9FT/D/RU/w/0VP8P9FT/D/RU/w/z5I7/8+SO//oqr//6Kq///PuZ7/z7me/2Mp AP9jKQD/ZSwA/2UsAP9mLQD/Zi0A/2YtAP9mLQD/Zi0A/2YtAP9mLQD/Zi0A/4VX M/+FVzP/oqf3/6Kn9/9FT/D/RU/w/0VP8P9FT/D/RU/w/0VP8P9FT/D/RU/w/0VP 8P9FT/D/Pkjv/z5I7/+iqv//oqr//8+5nv/PuZ7/YykA/2MpAP9lLAD/ZSwA/2Yt AP9mLQD/Zi0A/2YtAP9mLQD/Zi0A/2YtAP9mLQD/hVcz/4VXM/+ip/f/oqf3/0ZQ 8P9GUPD/RlDw/0ZQ8P9GUPD/RlDw/0ZQ8P9GUPD/RlDw/0ZQ8P8/Se//P0nv/6Kq //+iqv//z7mf/8+5n/9kKgD/ZCoA/2YtAP9mLQD/Zy4A/2cuAP9nLgD/Zy4A/2cu AP9nLgD/Zy4A/2cuAP+FWDP/hVgz/6Kn9/+ip/f/RlDw/0ZQ8P9GUPD/RlDw/0ZQ 8P9GUPD/RlDw/0ZQ8P9GUPD/RlDw/z9J7/8/Se//oqr//6Kq///PuZ//z7mf/2Qq AP9kKgD/Zi0A/2YtAP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/4VY M/+FWDP/oqf3/6Kn9/9GUPD/RlDw/0ZQ8P9GUPD/RlDw/0ZQ8P9GUPD/RlDw/0ZQ 8P9GUPD/P0nv/z9J7/+iqv//oqr//8+5n//PuZ//ZCoA/2QqAP9mLQD/Zi0A/2cu AP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9nLgD/hVgz/4VYM/+ip/f/oqf3/0ZQ 8P9GUPD/RlDw/0ZQ8P9GUPD/RlDw/0ZQ8P9GUPD/RlDw/0ZQ8P8/Se//P0nv/6Kq //+iqv//z7mf/8+5n/9kKgD/ZCoA/2YtAP9mLQD/Zy4A/2cuAP9nLgD/Zy4A/2cu AP9nLgD/Zy4A/2cuAP+FWDP/hVgz/6Kn9/+ip/f/RlDw/0ZQ8P9GUPD/RlDw/0ZQ 8P9GUPD/RlDw/0ZQ8P9GUPD/RlDw/z9J7/8/Se//oqr//6Kq///PuZ//z7mf/2Qq AP9kKgD/Zi0A/2YtAP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/4VY M/+FWDP/oqf3/6Kn9/9GUPD/RlDw/0ZQ8P9GUPD/RlDw/0ZQ8P9GUPD/RlDw/0ZQ 8P9GUPD/P0nv/z9J7/+iqv//oqr//8+5n//PuZ//ZCoA/2QqAP9mLQD/Zi0A/2cu AP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9nLgD/hVgz/4VYM/+gpff/oKX3/0ZQ 8P9GUPD/RlDw/0ZQ8P9GUPD/RlDw/0ZQ8P9GUPD/RlDw/0ZQ8P8/Se//P0nv/6Kq //+iqv//z7mf/8+5n/9kKgD/ZCoA/2YtAP9mLQD/Zy4A/2cuAP9nLgD/Zy4A/2cu AP9nLgD/Zy4A/2cuAP+CUy3/glMt/6Cl9/+gpff/RlDw/0ZQ8P9GUPD/RlDw/0ZQ 8P9GUPD/RlDw/0ZQ8P9GUPD/RlDw/z9J7/8/Se//oqr//6Kq///PuZ//z7mf/2Qq AP9kKgD/Zi0A/2YtAP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/2cuAP9nLgD/Zy4A/4JT Lf+CUy3/tbn5/7W5+f9mbvP/Zm7z/2tz8/9rc/P/a3Pz/2tz8/9rc/P/a3Pz/2tz 8/9rc/P/ZW3y/2Vt8v+1u///tbv//9nHsv/Zx7L/g1Uz/4NVM/+FVzP/hVcz/4VY M/+FWDP/hVgz/4VYM/+FWDP/hVgz/4RVMP+EVTD/nXlb/515W/+1ufn/tbn5/2Zu 8/9mbvP/a3Pz/2tz8/9rc/P/a3Pz/2tz8/9rc/P/a3Pz/2tz8/9lbfL/ZW3y/7W7 //+1u///2cey/9nHsv+DVTP/g1Uz/4VXM/+FVzP/hVgz/4VYM/+FWDP/hVgz/4VY M/+FWDP/hFUw/4RVMP+deVv/nXlb/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: text/css Content-Location: http://www.google.com/uds/css/gsearch.css Content-Transfer-Encoding: 8bit /** Copyright 2005 Google Inc. All rights reserved. */ /* the GSearchControl CSS Classes * .gsc-control : the primary class of the control */ .gsc-control { width: 300px; } .gsc-control div { position: static; } .gsc-control-cse { width: 100%; font-family: Arial, sans-serif; font-size : 13px; } .gsc-control-cse div { position: static; } /* control inputs * .gsc-search-box : the container that hosts the text input area * .gsc-input : the text input area * .gsc-keeper : the save link below savable results */ form.gsc-search-box { font-size: 13px; margin-top : 0px; margin-right : 0px; margin-bottom : 4px; margin-left : 0px; width: 100%; } /* * This table contains the input element as well as the search button * Note that the search button column is fixed width, designed to hold the * button div's background image */ table.gsc-search-box { border-style : none; border-width : 0px; border-spacing : 0px 0px; width : 100%; margin-bottom : 2px; } table.gsc-search-box td { vertical-align : middle; } table.gsc-search-box td.gsc-input { padding-right : 2px; } td.gsc-search-button { width : 1%; } td.gsc-clear-button { width : 14px; } /** * undo common generic table rules * that tend to impact branding */ table.gsc-branding td, table.gsc-branding { margin: 0 0 0 0; padding: 0 0 0 0; border : none; } table.gsc-branding { border-style : none; border-width : 0px; border-spacing : 0px 0px; width : 100%; } .gsc-branding-text { color : #676767; } td.gsc-branding-text { vertical-align : top; } td.gsc-branding-text div.gsc-branding-text { padding-bottom : 2px; text-align : right; font-size : 11px; margin-right : 2px; } div.gsc-branding-youtube td.gsc-branding-text { vertical-align : middle; } td.gsc-branding-img-noclear { width : 51px; vertical-align : bottom; } td.gsc-branding-img { width : 65px; vertical-align : bottom; } div.gsc-branding-youtube td.gsc-branding-img-noclear { width : 55px; } div.gsc-branding-youtube td.gsc-branding-img { width : 69px; } table.gsc-branding-vertical td.gsc-branding-text div.gsc-branding-text { margin-right : 0px; text-align : center; } table.gsc-branding-vertical td.gsc-branding-img-noclear { text-align : center; } div.gsc-branding-img, div.gsc-branding-img-noclear, img.gsc-branding-img, img.gsc-branding-img-noclear { padding-top : 1px; } img.gsc-branding-img, img.gsc-branding-img-noclear { margin : 0 0 0 0; padding-right : 0; padding-left : 0; padding-bottom : 0; border : none; display : inline; } a.gsc-branding-clickable { cursor : pointer; } input.gsc-search-button { margin-left : 2px; } div.gsc-clear-button { display : inline; text-align : right; margin-left : 4px; margin-right : 4px; padding-left : 10px; background-repeat: no-repeat; background-position: center center; background-image: url('/uds/css/clear.gif'); cursor : pointer; } /* * Given that this is sitting in a variable width tabel cell, the idea is * for it to consume the entire cell. The adjacent cell contains the search * button and that is a fixed width cell. */ input.gsc-input { padding-left : 2px; border-style : solid; border-width : 1px; border-color : #BCCDF0; width : 99%; } .gsc-keeper { color: #3366cc; text-decoration: underline; font-size: 13px; cursor: pointer; font-weight: normal; padding-left: 16px; background-repeat: no-repeat; background-position: 1px 3px; background-image: url('/uds/css/blue_check.gif'); } /* each section of results has a results header table * .gsc-resultsHeader : the header itseld * td.twiddleRegionCell : the section that controls twiddleing of the section to expand/collapse * td.configLabelCell : the twiddler that controls active configuration of a searcher (used in GlocalSearch) * .gsc-twiddle : the twiddle image, note, this is a div that wraps gsc-title so that standard image replacement is feasible * .gsc-twiddle-closed : class added to gsc-twiddle when the twiddler is in the closed state * .gsc-twiddle-opened : class added to gsc-twiddle when the twiddler is in the opened state * .gsc-title : the section's title (e.g., Web Results, etc.) * .gsc-stats : contains the result counts * .gsc-stats */ .gsc-resultsHeader { width : 100%; border-bottom : 1px solid #e9e9e9; margin-bottom : 4px; clear : both; } .gsc-resultsHeader td.gsc-twiddleRegionCell{ width: 75%; } .gsc-resultsHeader td.gsc-configLabelCell{ text-align: right; width: 75%; } /* * note that the next three classes are all joined together * to implement the twiddle image. apps can substitute in their * own images but will need to account for the image size here * as well as in the left padding of the title element * * Note: uds provides the following images that work with the geometry/padding defined below * to use these images simply over-ride the.gsc-twiddle-opened/-closed class and specify an alternate image * or use an image of your own design */ .gsc-resultsHeader .gsc-twiddle{ margin-top: 4px; display: inline; cursor: pointer; background-repeat: no-repeat; background-position: 0px 2px; } .gsc-resultsHeader td.gsc-twiddle-closed div.gsc-twiddle{ background-image: url('/uds/css/arrow_close.gif'); } .gsc-resultsHeader td.gsc-twiddle-opened div.gsc-twiddle{ background-image: url('/uds/css/arrow_open.gif'); } .gsc-resultsHeader .gsc-title{ color: #676767; margin-right: 10px; padding-left: 14px; display: inline; } .gsc-resultsHeader .gsc-stats { color: #676767; font-size: 11px; font-weight: normal; display : inline; } .gsc-resultsHeader td.gsc-twiddle-opened .gsc-stats { display : none; } /* * .gsc-results-selector : box surrounding individual selectors for 1, more, or all results * .gsc-result-selector : an individual selector * .gsc-one-result : single result selector * .gsc-more-results : more (4) results selector * .gsc-all-results : all results (8) selector */ .gsc-results-selector { display : inline; } .gsc-resultsHeader td.gsc-twiddle-closed .gsc-results-selector { display : none; } .gsc-result-selector { cursor : pointer; display : inline; font-size : 13px; padding-left : 13px; background-repeat: no-repeat; background-position: center left; } /* default mode is dark */ .gsc-one-result { background-image: url('/uds/css/one-complex-dark.gif'); } .gsc-more-results { background-image: url('/uds/css/more-complex-dark.gif'); } .gsc-all-results { background-image: url('/uds/css/all-complex-dark.gif'); padding-right : 1px; } /* active mode is light */ .gsc-one-result-active .gsc-one-result { background-image: url('/uds/css/one-complex-light-blue.gif'); } .gsc-more-results-active .gsc-more-results { background-image: url('/uds/css/more-complex-light-blue.gif'); } .gsc-all-results-active .gsc-all-results { background-image: url('/uds/css/all-complex-light-blue.gif'); } .gsc-resultsHeader .gsc-configLabel{ color: #676767; display: inline; font-size: 11px; cursor: pointer; } .gsc-resultsHeader td.gsc-configLabelCell span.gsc-twiddle-closed { padding-right: 12px; background-repeat: no-repeat; background-position: center center; background-image: url('/uds/css/settings.gif'); } /* tabbed mode of search control * .gsc-tabsArea : the box containing all of the tabs * .gsc-tabsAreaInvisible : same as above, but this is the state when search has been cleared * .gsc-tabHeader : an individual tab * .gsc-tabHeader.gsc-tabhActive : the active tab * .gsc-tabHeader.gsc-tabhInactive : an inactive tab * .gsc-tabData : the data area/box containg results and header data for each tab * .gsc-tabData.gsc-tabdActive : the data area for the active tab * .gsc-tabData.gsc-tabdInactive : the data area for inactive tabs */ .gsc-tabsArea { clear: both; margin-top: 6px; } .gsc-tabsArea .gs-spacer { font-size : 1px; margin-right : 0px; overflow : hidden; } .gsc-tabsArea .gs-spacer-opera { margin-right : 0px; } .gsc-tabsAreaInvisible { display : none; } .gsc-tabHeader { display: inline; cursor: pointer; padding-left: 6px; padding-right: 6px; margin-right: 2px; } .gsc-tabHeader.gsc-tabhActive { border-left: 1px solid #e9e9e9; border-right: 1px solid #e9e9e9; border-top: 2px solid #ff9900; color: black; } .gsc-tabHeader.gsc-tabhInactive { border-left: 1px solid #e9e9e9; border-right: 1px solid #e9e9e9; border-top: 2px solid #e9e9e9; background: #e9e9e9; color: #676767; } .gsc-tabData.gsc-tabdActive { display: block; } .gsc-tabData.gsc-tabdInactive { display: none; } /* tab specific results header supression * - no twiddle, tabbed mode runs in full expand mode * - no title * - no stats */ .gsc-tabData .gsc-resultsHeader .gsc-title { display: none; } .gsc-tabData .gsc-resultsHeader .gsc-stats { display: none; } .gsc-tabData .gsc-resultsHeader .gsc-results-selector { display : none; } /* the results for each section * .gsc-resultsbox-{visible,invisible} : a complete-collection of results including headers * .gsc-results : the collection of results for a given searcher * .gsc-result : a generic result within the control. each result has this class, as well as .gsc-xxxResult where xxx is web, image, local, blog, etc. */ .gsc-resultsbox-visible { display : block; } .gsc-resultsbox-invisible { display : none; } .gsc-results { padding-bottom: 2px; width : 99%; } .gsc-result { margin-bottom: 10px; } .gsc-result .gs-title { height: 1.4em; overflow: hidden; } /* specialized, result type specific, fine grained controls */ .gsc-result div.gs-watermark { display: none; } /* Ads */ .gsc-results .gsc-result img.gs-ad-marker { display: none; } .gsc-wrapper { position : relative; display : block; } .gsc-adBlock { position : relative; display : block; margin-top : 6px; margin-bottom : 4px; padding-bottom : 2px; background : #FFF8DD none repeat scroll 0 0; } .gsc-adBlock h2 { float : right; margin : 3px 5px 0; font-weight : normal; font-size : .9em; color : #676767; } .gsc-adBlock .gsc-ad { padding-left : 8px; padding-top : 5px; padding-right : 3px; } .gsc-adBlock .gsc-ad a { font-weight : bolder; color : #0000CC; line-height : 1.4em; } .gsc-adBlock .gsc-ad cite { font-style : normal; color : green; } .gsc-adBlock .gsc-ad span { padding-left : 8px; } .gsc-adBlockInvisible { display : none; } .gsc-adBlockVertical { position : relative; display : block; float : right; width : 30%; border-left : 1px solid #C9D7F1; } .gsc-thinWrapper { width : 69%; float : left; overflow : hidden; } .gsc-adBlockVerticalInvisible { display : none; } .gsc-adBlockVertical h2 { text-align : center; font-weight : normal; font-size : .9em; color : #676767; margin-top : 6px; } .gsc-adBlockVertical .gsc-ad { padding-left : 8px; padding-top : 5px; } .gsc-adBlockVertical .gsc-ad a { font-weight : bolder; color : #0000CC; line-height : 1.4em; } .gsc-adBlockVertical .gsc-ad cite { font-style : normal; color : green; display : block; } .gsc-adBlockVertical .gsc-ad span { } .gsc-ad-preview { background-image: url('http://www.google.com/images/preview.gif'); } /* Standard configuration div/form */ div.gsc-config { border: 1px solid #e9e9e9; margin-top: 0px; margin-bottom: 10px; padding-top : 2px; padding-left : 6px; padding-right : 6px; padding-bottom : 6px; } form.gsc-config { margin-bottom : 0px; } .gsc-configSetting { margin-top : 6px; } .gsc-configSetting_Label { color: #676767; } .gsc-configSettingInput { color: #676767; border: 1px solid #e9e9e9; width: 75%; } .gsc-configSettingCheckbox { color: #676767; margin-right: 6px; } .gsc-configSettingCheckboxLabel { display : inline; color: #676767; } div.gsc-configSettingSubmit { margin-top : 8px; text-align : right; } input.gsc-configSettingSubmit { display: inline; font-size: 11px; cursor: pointer; } /* Image Search */ .gsc-imageResult { float: left; margin-bottom: 1em; margin-right: 20px; } .gs-imageResult { width: 114px; /* default width + 1px border */ overflow : hidden; } .gs-imageResult .gs-image-box { height: 86px; /* default height + 1px border */ position : relative; } /* note, left edge is auto-set by search control */ .gs-imageResult .gs-image-box img.gs-image { position : absolute; bottom : 0px; } .gs-imageResult .gs-text-box { text-align: center; overflow : hidden; height: 4em; } .gs-imageResult .gs-snippet { overflow : hidden; line-height: 1em; cursor : pointer; white-space : nowrap; } .gs-imageResult .gs-visibleUrl { cursor : pointer; overflow : hidden; line-height: 1.3em; height: 1.3em; } .gs-imageResult .gs-size { color: #6f6f6f; } /* Video Search * - single line title */ .gsc-videoResult .gs-videoResult .gs-title { line-height: 1.3em; height: 1.3em; overflow: hidden; } .gsc-videoResult .gs-videoResult .gs-snippet { line-height: 1.3em; max-height: 2.6em; overflow: hidden; } /* trailing more link at the bottom of * a collection of results */ .gsc-imageResult .gsc-trailing-more-results { clear : both; } .gsc-results .gsc-trailing-more-results { margin-bottom : 10px; } .gsc-results .gsc-trailing-more-results, .gsc-results .gsc-trailing-more-results * { color: #0000cc; text-decoration: underline; } /* trailing cursor section */ .gsc-imageResult .gsc-cursor-box { clear : both; } .gsc-results .gsc-cursor-box .gsc-trailing-more-results { margin-bottom : 0px; display : inline; } .gsc-results .gsc-cursor { display : inline; } .gsc-results .gsc-cursor-box { margin-bottom : 10px; } .gsc-results .gsc-cursor-box .gsc-cursor-page { cursor : pointer; color : #000000; text-decoration: underline; margin-right : 8px; display : inline; } .gsc-results .gsc-cursor-box .gsc-cursor-current-page { color : #A90A08; font-weight : bold; text-decoration: none; } /*** End of Control, Begin Results ***/ /* generic, cross cutting result style * - in the form of .gs-result .gs-xxx where xxx is the generic style * .gs-title : typically the first line of a result, typically a link, image results over ride this, since for image results, the image is the link * .gs-divider : typically seperates results from ads * .gs-visibleUrl : typically the last line of a result, displayed in green. sometimes a link (like in blog search) * .gs-clusterUrl : for news, and other similar services, this is a cluster of additional results * img.gs-image : an actial image in a result * .gs-phone : a phone number * .gs-address : an address (includes street, city, region, country) * .gs-streetAddress : a street (including #) * .gs-city : a city * .gs-region : a region (zip code, area, etc.) * .gs-country : a country * .gs-snippet : snippetized content * .gs-watermark : indicator that user selected this result * .gs-metadata : generic metadata, e.g., * .gs-image-box : generic container for a result's image (within a table) * .gs-text-box : generic container for a result's text content (within a table). Note that this class, and image-box are only used in video */ .gs-result .gs-title, .gs-result .gs-title * { color: #0000cc; text-decoration: underline; } .gs-divider { padding-bottom: 8px; text-align: center; color: #676767; } .gs-result a.gs-visibleUrl, .gs-result .gs-visibleUrl { color: #008000; text-decoration: none; } /* relative and absolute dates, note, news/books inlines these */ .gs-relativePublishedDate, .gs-publishedDate { color: #6f6f6f; text-decoration: none; } .gs-result a.gs-clusterUrl, .gs-result .gs-clusterUrl { color: #008000; text-decoration: underline; cursor: pointer; } .gs-newsResult .gs-publisher { color: #6f6f6f; display : inline; text-decoration: none; } /* * For news results there are two dates... * The relative date is visible while in the * search control and the published date * is visible when clipped. Why? It doesn't * make sense to say 4 hours ago for a clipped * result... */ /* establish the base style */ .gs-newsResult .gs-relativePublishedDate, .gs-newsResult .gs-publishedDate { display : inline; margin-left : 4px; } /* base styling for relative date is none */ .gs-blogResult .gs-relativePublishedDate, .gs-newsResult .gs-relativePublishedDate { display : none; } /* suppress publishedDate while in the control */ .gsc-blogResult .gs-blogResult .gs-publishedDate, .gsc-newsResult .gs-newsResult .gs-publishedDate { display : none; } /* enable relativePublishedDate while in the control */ .gsc-blogResult .gs-blogResult .gs-relativePublishedDate, .gsc-newsResult .gs-newsResult .gs-relativePublishedDate { display : inline; } .gs-newsResult .gs-location { color: #6f6f6f; display : inline; text-decoration: none; } .gs-promotion { padding-top : 5px; } .gs-promotion a { font-weight : bold; font-size: 14px; } .gs-promotion-image { margin-right : 10px; } .gs-promotion-image-td { vertical-align : top; } .gs-promotion table { border : none; border-style : none; border-width : 0px; border-spacing : 0px 0px; margin: 0 0 0 0; padding: 0 0 0 0; } .gs-promotion table a { font-weight : normal; font-size: 13px; padding-right : 5px; } .gs-result img.gs-image { vertical-align : middle; border : 1px solid #0000cc; } .gs-result div.gs-phone {} .gs-result .gs-directions, .gs-result .gs-directions * { color: #7777cc; font-weight: normal; text-decoration : underline; cursor : pointer; } .gs-secondary-link, .gs-secondary-link * { color: #7777cc; font-weight: normal; text-decoration : underline; cursor : pointer; } /* wrapper around user supplied to/from mode directions * normally this is disabled by default, and gs-directions is enabled * apps can easily switch this by setting display:block on the rule below, * and display:none on the rule above * e.g., add these two rules to switch local results into * alternate style driving directions * .gs-localResult .gs-directions-to-from { display : block; } * .gs-localResult .gs-directions { display : none; } */ .gs-result .gs-directions-to-from { display : none; margin-top : 4px; } .gs-result .gs-directions-to-from .gs-label { display : inline; margin-right : 4px; } .gs-result .gs-directions-to-from div.gs-secondary-link { display : inline; } .gs-result .gs-directions-to-from .gs-spacer { display : inline; margin-right : 3px; margin-left : 3px; } .gs-videoResult a.gs-publisher, .gs-videoResult .gs-publisher { color: #008000; text-decoration: none; } .gs-result a { cursor: pointer; } .gs-result .gs-address { } .gs-result .gs-snippet { } .gs-no-results-result .gs-snippet, .gs-error-result .gs-snippet { padding : 5px; margin : 5px; border : 1px solid rgb(255,204,51); background-color : rgb(255,244,194); } .gs-result .gs-watermark{ font-size: 10px; color: #7777cc; } div.gs-results-attribution { text-align : center; margin-bottom : 4px; } div.gs-results-attribution, div.gs-results-attribution * { font-size : 10px; color : #676767; text-decoration : none; } div.gs-results-attribution a { color: #0000cc; cursor : pointer; } div.gs-results-attribution a:hover { text-decoration : underline; } .gs-result .gs-metadata{ color: #676767; } /* searcher specific styling for * - web ad * - web * - local * - image (none) * - blog (none) * - video (none) */ /* webAd search specific over rides * .gs-ad-marker : disabled in control, but on in green to indicate clipped result is an ad */ .gs-localAd img.gs-ad-marker, .gs-webAd img.gs-ad-marker { padding-left: 4px; } /* default is to not show long mode visible urls * apps should selectively enable this while disabling * div.gs-visibleUrl-short */ .gs-webResult div.gs-visibleUrl-long { width : 100%; overflow : hidden; display : none; } /* local search specific over rides * - city, region displayed inline * - country supressed * - small font size for info window's */ .gs-localAd div.gs-address * { color : #676767; } .gs-localAd div.gs-street { display: inline; } div.gs-city { display: inline; } div.gs-region { display: inline; } div.gs-country { display: none; } div.gs-infoWindow * { font-size: 11px; } /* video search specific over rides * - align the table data * - default image width garuntee * - appropriate cell seperation */ /* todo(markl): workaround until gre in gmail fixes his styles */ .gs-videoResult * { font-size: 13px; } /* .gs-videoResult td .gs-image { vertical-align : middle; } .gs-videoResult td.gs-image-box { background-color : #000000; }*/ .gs-videoResult td div.gs-image-box { width : 110px; height : 78px; } .gs-videoResult td div.gs-text-box { vertical-align: top; margin-left: 4px; } /* book search specific over rides * - default image width garuntee * - appropriate cell seperation */ div.gs-book-image-box td, .gs-bookResult td { vertical-align : top; } div.gs-book-image-box, div.gs-book-image-box div { position : static; text-align : start; } div.gs-book-image-box { width : 75px; height : 90px; } .gs-bookResult td div.gs-text-box { vertical-align: top; margin-left: 4px; } div.gs-book-image-box img { border-spacing : 0px 0px; border : none; } div.gs-book-image-box div.gs-row-1 { line-height : 7px; } div.gs-book-image-box img.gs-pages { height : 7px; width : 45px; } div.gs-book-image-box img.gs-page-edge { height : 7px; width : 11px; } div.gs-book-image-box div.gs-row-2 { } div.gs-book-image-box img.gs-image { height : 80px; border : 1px solid #a0a0a0; } .gs-bookResult .gs-author { display : inline; color: #6f6f6f; } .gs-bookResult .gs-publishedDate { display : inline; } .gs-bookResult .gs-pageCount { display : inline; color: #6f6f6f; margin-left : 4px; } .gs-bookResult .gs-id {} /* book search specific over rides * - default image width garuntee * - appropriate cell seperation */ .gs-patentResult td { vertical-align : top; } .gs-patentResult .gs-patent-number, .gs-patentResult .gs-publishedDate, .gs-patentResult .gs-author { display:inline; } .gs-patentResult .gs-image-box { padding-right : 8px; } .gs-patentResult img.gs-image { border : 1px solid #7777cc; } ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: text/css Content-Location: http://www.google.com/uds/solutions/localsearch/gmlocalsearch.css Content-Transfer-Encoding: 8bit .gmls { width: 250px; } .gmls-app { width : 100%; font-family: arial, sans-serif; font-size : 12px; border : 1px solid #979797; } .gmls-app table { width : 100%; border-collapse : collapse; } .gmls-app td { vertical-align : top; border : none; padding : 0px; } .gmls-search-form { padding-top : 2px; padding-bottom : 2px; padding-left : 2px; padding-right : 2px; margin-bottom: 0px; background-color : #FFFFFF; } .gmls-search-form-withclear { background-image : url('img/google-logo.png'); background-repeat : no-repeat; background-position : center left; padding-left : 57px; height : 23px; } .gmls-search-form table.gsc-search-box, .gmls-search-form form.gsc-search-box { margin : 0px; padding : 0px; } .gmls-search-form table.gsc-branding { display : none; } .gmls-search-form form.gsc-search-box input.gsc-input { padding : 1px; } .gmls-search-form-idle form.gsc-search-box input.gsc-input { color : #676767; } .gmls-search-form-active form.gsc-search-box input.gsc-input { color : #000000; } /* style buttons */ .gmls-search-form input.gsc-search-button { background-color : #ffffff; border-width : 1px; border-style : solid; } .gmls-search-form-idle input.gsc-search-button { color : #676767; border-color : #676767; } .gmls-search-form-active input.gsc-search-button { color : #000000; border-color : #000000; } .gmls-search-form div.gsc-clear-button { margin-left : 0px; margin-right : 0px; padding-left : 24px; font-size : 20px; background-image : url('img/clear-button.png'); background-repeat : no-repeat; background-position : center right; } .gmls-search-form td.gsc-clear-button { width : 30px; height : 23px; } .gmls-prev-next-active { margin-left : 0px; display : block; text-align : center; width : 100%; } .gmls-prev-next-center { width : 50px; vertical-align : middle; margin-left : auto; margin-right : auto; } .gmls-idle .gmls-prevNext, .gmls-prev-next-idle { display : none; } .gmls-prev { display : inline; cursor : pointer; padding-right : 8px; margin-right : 4px; background-repeat: no-repeat; background-position: right 2px; } .gmls-next { display : inline; cursor : pointer; padding-left : 8px; margin-left : 4px; background-repeat: no-repeat; background-position: left 2px; } .gmls-prev-idle { background-image : url('img/prev-idle.gif'); } .gmls-prev-active { background-image : url('img/prev-active.gif'); } .gmls-next-idle { background-image : url('img/next-idle.gif'); } .gmls-next-active { background-image : url('img/next-active.gif'); } .gmls-app-full-mode .gmls-prev-next { display : none; } .gmls-idle .gmls-attribution { display : none; } .gmls-active .gmls-attribution { display : block; } .gmls-attribution div.gs-results-attribution { margin-top : 2px; margin-bottom : 2px; } .gmls-app .gs-watermark { display : none; } .gmls-app .gs-result a.gs-secondary-link { color : #7777cc; } .gmls-app .gmls-result-wrapper, .gmls-app .gs-result { padding-bottom : 0px; } .gmls-app div.gs-directions { display : none; } .gmls-app div.gs-directions-to-from { display : block; } .gmls-results-popup { } .gmls-idle .gmls-results-popup { display : none; } .gmls-active .gmls-results-popup { display : block; } .gmls-results-list { font-family : arial; font-size : 12px; background-color : #FFFFFF; opacity : 0.9; -moz-opacity : 0.9; filter:alpha(opacity=90); } .gmls-external-results .gmls-results-list { opacity : 1; -moz-opacity : 1; filter:alpha(opacity=100); } .gmls-app-full-mode .gmls-results-list div.gmls-results-table { margin-bottom : 4px; } .gmls-results-list .gmls-result-list-item { margin-top : 1px; margin-bottom : 1px; padding-right : 2px; padding-left : 1px; cursor : pointer; height : 16px; font-size : 12px; overflow : hidden; } .gmls-results-list .gmls-results-table, .gmls-results-list table.gmls-results-controls { padding : 0px; border-width: 0px; border-style: none; border-spacing: 0px; border-collapse: collapse; } .gmls-app-full-mode .gmls-results-list div.gmls-results-controls { } .gmls-app-compact-mode .gmls-results-list div.gmls-results-controls { margin-top : 1px; margin-bottom : 1px; } .gmls-results-controls td { vertical-align : top; font-size: 12px; background-color: #EEEEEE; } .gmls-results-controls td.gmls-more-results { text-align : left; } .gml-results-controls td.gmls-clear-results { text-align : right; } .gmls-results-list div.gmls-clear-results, .gmls-results-list a.gmls-more-results { color: #7777cc; text-decoration : underline; cursor : pointer; text-align : right; } .gmls-results-list .gmls-result-list-item .gmls-result-list-item-key { color : #000000; font-weight : bold; display : inline; margin-right : 4px; } .gmls-results-list .gmls-result-list-item .gmls-result-list-item-key-keymode { display : inline; cursor : pointer; margin-left : 2px; padding-left : 12px; background-repeat: no-repeat; background-position: left center; } .gmls-result-list-item-key-A { background-image : url('img/label_red_A.png'); } .gmls-result-list-item-key-kml-A { background-image : url('img/label_blue_A.png'); } .gmls-result-list-item-key-B { background-image : url('img/label_red_B.png'); } .gmls-result-list-item-key-kml-B { background-image : url('img/label_blue_B.png'); } .gmls-result-list-item-key-C { background-image : url('img/label_red_C.png'); } .gmls-result-list-item-key-kml-C { background-image : url('img/label_blue_C.png'); } .gmls-result-list-item-key-D { background-image : url('img/label_red_D.png'); } .gmls-result-list-item-key-kml-D { background-image : url('img/label_blue_D.png'); } .gmls-result-list-item-key-E { background-image : url('img/label_red_E.png'); } .gmls-result-list-item-key-kml-E { background-image : url('img/label_blue_E.png'); } .gmls-result-list-item-key-F { background-image : url('img/label_red_F.png'); } .gmls-result-list-item-key-kml-F { background-image : url('img/label_blue_F.png'); } .gmls-result-list-item-key-G { background-image : url('img/label_red_G.png'); } .gmls-result-list-item-key-kml-G { background-image : url('img/label_blue_G.png'); } .gmls-result-list-item-key-H { background-image : url('img/label_red_H.png'); } .gmls-result-list-item-key-kml-H { background-image : url('img/label_blue_H.png'); } .gmls-result-list-item-key-I { background-image : url('img/label_red_I.png'); } .gmls-result-list-item-key-kml-I { background-image : url('img/label_blue_I.png'); } .gmls-result-list-item-key-J { background-image : url('img/label_red_J.png'); } .gmls-result-list-item-key-kml-J { background-image : url('img/label_blue_J.png'); } .gmls-results-list .gmls-result-list-item .gs-title { color : #0000cc; text-decoration : underline; display : inline; } .gmls-results-list div.gmls-selected { background-color : rgb(238, 238, 238); } .gmls-results-list .gmls-result-list-item .gs-street { color : #676767; text-decoration : none; display : inline; overflow : hidden; } .gmls-results-list .gmls-selected .gs-street { color : #000000; } .gmls-result-list-item .gmls-result-list-item-warning-symbol { color : red; font-weight : bold; display : inline; margin-right : 4px; } .gmls-results-list .gmls-result-list-item-warning-text { color : #000000; font-weight : bold; display : inline; } .gmls-result-wrapper { font-family: arial, sans-serif; font-size : 12px; } .gmls-result-wrapper .gs-result .gs-watermark { display : none; } .gmls-result-wrapper .gs-result .gs-directions { display : none; } .gmls-result-wrapper .gs-result .gs-directions-to-from { display : block; } .gmls-no-results-table { width : 100%; vertical-align : middle; } .gmls-clear-results-cell { text-align : right; } .gmls-no-results-label { text-align : left; font-size : 12px; color: rgb(103, 103, 103); } /* Ads Box Formats */ /* inline: positioned inside ads results */ .gmls-ads-box-234x60_as { width : 234px; height : 64px; position : relative; display : none; } .gmls-ads-box-234x60_as .gmls_inline_ads { top : 0px; left : 8px; } /* strip: across top */ .gmls-ads-box-468x15_0ads_al { width : 468px; height : 15px; display : none; } .gmls-ads-box-468x15_0ads_al .gmls_inline_ads { top : 4px; left : 80px; } /* skyscraper lower right */ .gmls-ads-box-120x600_as { width : 120px; height : 600px; display : none; } .gmls-ads-box-120x600_as .gmls_inline_ads { bottom : 1.4em; right : 2px; } /* wide_skyscraper lower right */ .gmls-ads-box-160x600_as { width : 160px; height : 600px; display : none; } .gmls-ads-box-160x600_as .gmls_inline_ads { bottom : 1.4em; right : 2px; } /* button: lower right */ .gmls-ads-box-125x125_as { width : 125px; height : 125px; display : none; } .gmls-ads-box-125x125_as .gmls_inline_ads { bottom : 1.4em; right : 2px; } /* vertical_banner: lower right */ .gmls-ads-box-120x240_as { width : 120px; height : 240px; display : none; } .gmls-ads-box-120x240_as .gmls_inline_ads { bottom : 1.4em; right : 2px; } /* links_120x90: lower right */ .gmls-ads-box-120x90_0ads_al { width : 120px; height : 90px; display : none; } .gmls-ads-box-120x90_0ads_al .gmls_inline_ads { bottom : 1.4em; right : 2px; } ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=jsapi.js Content-Type: text/javascript; charset=utf-8; name=jsapi.js Content-Location: http://www.google.com/jsapi Content-Transfer-Encoding: Quoted-Printable if (!window['google']) { window['google'] =3D {}; } if (!window['google']['loader']) { window['google']['loader'] =3D {}; google.loader.ServiceBase =3D 'http://www.google.com/uds'; google.loader.GoogleApisBase =3D 'http://ajax.googleapis.com/ajax'; google.loader.ApiKey =3D 'notsupplied'; google.loader.KeyVerified =3D true; google.loader.LoadFailure =3D false; google.loader.Secure =3D false; google.loader.GoogleLocale =3D 'www.google.com'; google.loader.ClientLocation =3D null; google.loader.AdditionalParams =3D ''; google.loader.OriginalAppPath =3D 'http://teplice.naseadresa.cz/cz/s176-= detail-zpravy/Regionalni-zpravodajstvi/c793-Zpravy/n17477-Rusky-kosmonau= t-je-dnes-v-Teplicich'; (function() {var e=3Dtrue,f=3Dnull,g=3Dfalse,h=3DencodeURIComponent,j=3D= window,k=3Dgoogle,m=3Dundefined,o=3Ddocument;function p(a,b){return a.lo= ad=3Db}var q=3D"push",s=3D"length",t=3D"prototype",u=3D"setTimeout",v=3D= "replace",w=3D"charAt",x=3D"loader",y=3D"substring",z=3D"ServiceBase",A=3D= "name",B=3D"getTime",C=3D"join",D=3D"toLowerCase";function E(a){if(a in = F)return F[a];return F[a]=3Dnavigator.userAgent[D]().indexOf(a)!=3D-1}va= r F=3D{};function G(a,b){var c=3Dfunction(){};c.prototype=3Db[t];a.L=3Db= [t];a.prototype=3Dnew c} function H(a,b){var c=3Da.w||[];c=3Dc.concat(Array[t].slice.call(argumen= ts,2));if(typeof a.r!=3D"undefined")b=3Da.r;if(typeof a.q!=3D"undefined"= )a=3Da.q;var d=3Dfunction(){var i=3Dc.concat(Array[t].slice.call(argumen= ts));return a.apply(b,i)};d.w=3Dc;d.r=3Db;d.q=3Da;return d}function I(a)= {a=3Dnew Error(a);a.toString=3Dfunction(){return this.message};return a}= function J(a,b){a=3Da.split(/\./);for(var c=3Dj,d=3D0;d2)throw I("Module: '"+r+"' not found!");else if(typeof n[1]!=3D= "undefined"){d=3Dn[0];c.packages=3Dc.packages||[];c.packages[q](n[1])}}i= f(a instanceof Array||a&&typeof a=3D=3D"object"&&typeof a[C]=3D=3D"funct= ion"&&typeof a.reverse=3D=3D"function")for(var l=3D0;l<\/script>");else(E("safari")= ||E("konqueror"))&&j[u](S,10)}P[q](a)} k[x].F=3Dfunction(){var a=3Dj.event.srcElement;if(a.readyState=3D=3D"com= plete"){a.onreadystatechange=3Df;a.parentNode.removeChild(a);Q()}};L("go= ogle.loader.domReady",k[x].F);var da=3D{loaded:e,complete:e};function S(= ){if(da[o.readyState])Q();else P[s]>0&&j[u](S,10)}function Q(){for(var a= =3D0;a<\/scri= pt>');else a=3D=3D"css"&&o.write('')}; L("google.loader.writeLoadTag",k[x].d);k[x].H=3Dfunction(a){N=3Da};L("go= ogle.loader.rfm",k[x].H);k[x].J=3Dfunction(a){for(var b in a)if(typeof b= =3D=3D"string"&&b&&b[w](0)=3D=3D":"&&!M[b])M[b]=3Dnew T(b[y](1),a[b])};L= ("google.loader.rpl",k[x].J);k[x].I=3Dfunction(a){if((a=3Da.specs)&&a[s]= )for(var b=3D0;b=3D0;r--){var n=3Dc[r];= d&&i.z(n);if(this.b[":"+n]){c.splice(r,1);d&&this.b[":"+n][q](i)}else l[= q](n)}if(c[s]){if(b&&b.packages)b.packages=3Dc.sort()[C](",");if(!b&&N["= :"+this.a]!=3Df&&N[":"+this.a].versions[":"+a]!=3Df&&!k[x].AdditionalPar= ams&&this.j){a=3DN[":"+this.a];k[this.a]=3Dk[this.a]||{};for(var R in a.= properties)if(R&&R[w](0)=3D=3D":")k[this.a][R[y](1)]=3Da.properties[R];k= [x].d("script",k[x][z]+a.path+ a.js,d);a.css&&k[x].d("css",k[x][z]+a.path+a.css,d)}else if(!b||!b.autol= oaded)k[x].d("script",this.f(a,b),d);if(this.j){this.j=3Dg;this.c=3D(new= Date)[B]();if(this.c%100!=3D1)this.c=3D-1}for(r=3D0;r5?0:15000)}},ga=3Df= unction(){if(Z[s]){$(k[x][z]+"/stats?"+Z[C]("&")+"&nc=3D"+(new Date)[B](= )+"_"+((new Date)[B]()-fa));Z.length=3D0}},$=3Dfunction(a){var b=3Dnew I= mage, c=3Dha++;ia[c]=3Db;b.onload=3Db.onerror=3Dfunction(){delete ia[c]};b.src= =3Da;b=3Df},ia=3D{},ha=3D0;J("google.loader.recordStat",X);J("google.loa= der.createImageForLogging",$); }) ();google.loader.rm({"specs":[{"name":"books","baseSpec":{"uri":"http= ://books.google.com/books/api.js","ssl":null,"key":{"string":"key"},"ver= sion":{"string":"v"},"deferred":true,"params":{"callback":{"string":"cal= lback"},"language":{"string":"hl"}}}},"feeds",{"name":"friendconnect","b= aseSpec":{"uri":"http://www.google.com/friendconnect/script/friendconnec= t.js","ssl":null,"key":{"string":"key"},"version":{"string":"v"},"deferr= ed":false,"params":{}}},"spreadsheets","gdata","visualization",{"name":"= sharing","baseSpec":{"uri":"http://www.google.com/s2/sharing/js","ssl":n= ull,"key":{"string":"key"},"version":{"string":"v"},"deferred":false,"pa= rams":{"language":{"string":"hl"}}}},"search",{"name":"maps","baseSpec":= {"uri":"http://maps.google.com/maps?file\u003dgoogleapi","ssl":"https://= maps-api-ssl.google.com/maps?file\u003dgoogleapi","key":{"string":"key"}= ,"version":{"string":"v"},"deferred":true,"params":{"callback":{"regex":= "callback\u003d$1\u0026async\u003d2"},"language":{"string":"hl"}}},"cust= omSpecs":[{"uri":"http://maps.google.com/maps/api/js","ssl":null,"key":{= "string":"key"},"version":{"string":"v"},"deferred":true,"params":{"call= back":{"string":"callback"},"language":{"string":"hl"}},"pattern":"^(3|3= ..*)$"}]},"annotations_v2","language","earth",{"name":"annotations","bas= eSpec":{"uri":"http://www.google.com/reviews/scripts/annotations_bootstr= ap.js","ssl":null,"key":{"string":"key"},"version":{"string":"v"},"defer= red":true,"params":{"callback":{"string":"callback"},"language":{"string= ":"hl"},"country":{"string":"gl"}}}},"ads","elements"]}); google.loader.rfm({":feeds":{"versions":{":1":"1",":1.0":"1"},"path":"/a= pi/feeds/1.0/2b19448abd05de43867c45d5295a9a4f/","js":"default+cs.I.js","= css":"default.css","properties":{":JSHash":"2b19448abd05de43867c45d5295a= 9a4f",":Version":"1.0"}},":search":{"versions":{":1":"1",":1.0":"1"},"pa= th":"/api/search/1.0/c951604dac58865d8c6d3a3c875d5397/","js":"default+cs= .I.js","css":"default.css","properties":{":JSHash":"c951604dac58865d8c6d= 3a3c875d5397",":NoOldNames":false,":Version":"1.0"}},":language":{"versi= ons":{":1":"1",":1.0":"1"},"path":"/api/language/1.0/ea98162c994f78133b5= a86d5035af686/","js":"default+cs.I.js","properties":{":JSHash":"ea98162c= 994f78133b5a86d5035af686",":Version":"1.0"}},":spreadsheets":{"versions"= :{":0":"1",":0.2":"1"},"path":"/api/spreadsheets/0.2/626554c678ff5791897= 04ea83fe72774/","js":"default.I.js","properties":{":JSHash":"626554c678f= f579189704ea83fe72774",":Version":"0.2"}},":earth":{"versions":{":1":"1"= ,":1.0":"1"},"path":"/api/earth/1.0/56ce34c6d009ea6795ba3ac23670c3ee/","= js":"default.I.js","properties":{":JSHash":"56ce34c6d009ea6795ba3ac23670= c3ee",":Version":"1.0"}},":annotations":{"versions":{":1":"1",":1.0":"1"= },"path":"/api/annotations/1.0/f193f28356b091de48b6f9ae0de94a0a/","js":"= default+cs.I.js","properties":{":JSHash":"f193f28356b091de48b6f9ae0de94a= 0a",":Version":"1.0"}}}); google.loader.rpl({":scriptaculous":{"versions":{":1.8.2":{"uncompressed= ":"scriptaculous.js","compressed":"scriptaculous.js"},":1.8.1":{"uncompr= essed":"scriptaculous.js","compressed":"scriptaculous.js"}},"aliases":{"= :1.8":"1.8.2",":1":"1.8.2"}},":yui":{"versions":{":2.6.0":{"uncompressed= ":"build/yuiloader/yuiloader.js","compressed":"build/yuiloader/yuiloader= -min.js"},":2.7.0":{"uncompressed":"build/yuiloader/yuiloader.js","compr= essed":"build/yuiloader/yuiloader-min.js"},":2.8.0r4":{"uncompressed":"b= uild/yuiloader/yuiloader.js","compressed":"build/yuiloader/yuiloader-min= .js"}},"aliases":{":2":"2.8.0r4",":2.7":"2.7.0",":2.6":"2.6.0",":2.8":"2= .8.0r4",":2.8.0":"2.8.0r4"}},":swfobject":{"versions":{":2.1":{"uncompre= ssed":"swfobject_src.js","compressed":"swfobject.js"},":2.2":{"uncompres= sed":"swfobject_src.js","compressed":"swfobject.js"}},"aliases":{":2":"2= .2"}},":ext-core":{"versions":{":3.0.0":{"uncompressed":"ext-core-debug.= js","compressed":"ext-core.js"}},"aliases":{":3":"3.0.0",":3.0":"3.0.0"}= },":mootools":{"versions":{":1.2.3":{"uncompressed":"mootools.js","compr= essed":"mootools-yui-compressed.js"},":1.2.1":{"uncompressed":"mootools.= js","compressed":"mootools-yui-compressed.js"},":1.2.2":{"uncompressed":= "mootools.js","compressed":"mootools-yui-compressed.js"},":1.11":{"uncom= pressed":"mootools.js","compressed":"mootools-yui-compressed.js"}},"alia= ses":{":1":"1.11"}},":jqueryui":{"versions":{":1.7.2":{"uncompressed":"j= query-ui.js","compressed":"jquery-ui.min.js"},":1.6.0":{"uncompressed":"= jquery-ui.js","compressed":"jquery-ui.min.js"},":1.7.0":{"uncompressed":= "jquery-ui.js","compressed":"jquery-ui.min.js"},":1.7.1":{"uncompressed"= :"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.5.3":{"uncompressed= ":"jquery-ui.js","compressed":"jquery-ui.min.js"},":1.5.2":{"uncompresse= d":"jquery-ui.js","compressed":"jquery-ui.min.js"}},"aliases":{":1.7":"1= .7.2",":1":"1.7.2",":1.6":"1.6.0",":1.5":"1.5.3"}},":chrome-frame":{"ver= sions":{":1.0.0":{"uncompressed":"CFInstall.js","compressed":"CFInstall.= min.js"}},"aliases":{":1":"1.0.0",":1.0":"1.0.0"}},":prototype":{"versio= ns":{":1.6.0.2":{"uncompressed":"prototype.js","compressed":"prototype.j= s"},":1.6.1.0":{"uncompressed":"prototype.js","compressed":"prototype.js= "},":1.6.0.3":{"uncompressed":"prototype.js","compressed":"prototype.js"= }},"aliases":{":1.6.1":"1.6.1.0",":1":"1.6.1.0",":1.6":"1.6.1.0",":1.6.0= ":"1.6.0.3"}},":jquery":{"versions":{":1.2.3":{"uncompressed":"jquery.js= ","compressed":"jquery.min.js"},":1.3.1":{"uncompressed":"jquery.js","co= mpressed":"jquery.min.js"},":1.3.0":{"uncompressed":"jquery.js","compres= sed":"jquery.min.js"},":1.3.2":{"uncompressed":"jquery.js","compressed":= "jquery.min.js"},":1.2.6":{"uncompressed":"jquery.js","compressed":"jque= ry.min.js"}},"aliases":{":1":"1.3.2",":1.3":"1.3.2",":1.2":"1.2.6"}},":d= ojo":{"versions":{":1.2.3":{"uncompressed":"dojo/dojo.xd.js.uncompressed= .js","compressed":"dojo/dojo.xd.js"},":1.3.1":{"uncompressed":"dojo/dojo= .xd.js.uncompressed.js","compressed":"dojo/dojo.xd.js"},":1.1.1":{"uncom= pressed":"dojo/dojo.xd.js.uncompressed.js","compressed":"dojo/dojo.xd.js= "},":1.3.0":{"uncompressed":"dojo/dojo.xd.js.uncompressed.js","compresse= d":"dojo/dojo.xd.js"},":1.3.2":{"uncompressed":"dojo/dojo.xd.js.uncompre= ssed.js","compressed":"dojo/dojo.xd.js"},":1.2.0":{"uncompressed":"dojo/= dojo.xd.js.uncompressed.js","compressed":"dojo/dojo.xd.js"}},"aliases":{= ":1":"1.3.2",":1.3":"1.3.2",":1.2":"1.2.3",":1.1":"1.1.1"}}}); } ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=framework.js Content-Type: application/x-javascript; charset=utf-8; name=framework.js Content-Location: http://teplice.naseadresa.cz/0000-Global/js/framework.js Content-Transfer-Encoding: Base64 77u/Ly8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vIE1ldGhvZHMgZm9y IHdvcmtpbmcgd2l0aCB3aW5kb3dzDQovLyAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKg0KDQovLyBPcGVuaW5nIG5ldyB3aW5kb3cuIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24g b3Blbldpbih1cmwsIHRhcmdldCwgcHJvcGVydGllcykNCnsNCglyZXR1cm4gd2lu ZG93Lm9wZW4odXJsLHRhcmdldCxwcm9wZXJ0aWVzKQ0KfQ0KDQovLyBPcGVuaW5n IG5ldyB3aW5kb3cgd2l0aG91dCB0b29sYmFycyBhbmQgd2l0aCBleHRlbmRlZCBz ZXR0aW5ncy4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gb3BlbldpbmRvdyhVUkwsIFdp ZHRoLCBIZWlnaHQsIFNjcm9sbEJhcnMpDQp7DQogICAgcmV0dXJuIG9wZW5XaW4o VVJMLCAiX2JsYW5rIiwgInRvb2xiYXI9MCxtZW51YmFyPTAsbG9jYXRpb249bm8s ZGlyZWN0b3JpZXM9bm8sc2Nyb2xsYmFycz0iKyAoU2Nyb2xsQmFycyAhPSBudWxs ID8gU2Nyb2xsQmFycyA6ICJ5ZXMiKSArIixyZXNpemFibGU9eWVzLHN0YXR1cz1u byx3aWR0aD0iICsgV2lkdGggKyAiLGhlaWdodD0iICsgSGVpZ2h0ICsgIix0b3A9 ODAsbGVmdD04MCIpOw0KfQ0KDQovLyBPcGVuaW5nIG5ldyB3aW5kb3dzIHdpdGgg Z2FsbGVyeSBpbWFnZXMgd2l0aCBhdXRvbWF0aWMgc2V0dGluZ3Mgb2Ygd2luZG93 IHNpemUgYnkgaW1hZ2UgcmVhbCBzaXplLiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KZnVuY3Rpb24gb3BlbldpbmRvdzRHYWxsZXJ5KEltYWdlRmlsZU5hbWUpDQp7 DQoJb3BlbldpbmRvdygiL2ZpbGVzL2dhbGxlcnkuaHRtbD9maWxlbmFtZT0iK0ZJ TEVfU0VSVkVSK0ltYWdlRmlsZU5hbWUsMTAwLDEwMCwibm8iKTsNCn0NCg0KLy8g ZnVuY3Rpb24gZm9yIHNob3dpbmcgYmFubmVyIHByZXZpZXcNCmZ1bmN0aW9uIHNo b3dCYW5uZXJQcmV2aWV3KGJhbm5lckhUTUwpDQp7DQoJdmFyIGJhbm5lcldpbiA9 IG9wZW5XaW4oIiIsICJfYmxhbmsiLCAidG9vbGJhcj0wLG1lbnViYXI9MCxsb2Nh dGlvbj1ubyxkaXJlY3Rvcmllcz1ubyxzY3JvbGxiYXJzPXllcyxyZXNpemFibGU9 eWVzLHN0YXR1cz1ubyx3aWR0aD02MDAsaGVpZ2h0PTQwMCx0b3A9ODAsbGVmdD04 MCIpOw0KCWJhbm5lcldpbi5kb2N1bWVudC53cml0ZSgiPGh0bWw+PGhlYWQ+PHRp dGxlPk7DoWhsZWQgbmEgYmFubmVyPC90aXRsZT48L2hlYWQ+PGJvZHk+IitiYW5u ZXJIVE1MKyI8L2JvZHk+PC9odG1sPiIpOw0KfQ0KDQovLyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKg0KLy8gTWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIHNvY2lh bCB3ZWJzaXRlcw0KLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCg0KLy8g QWRkaW5nIGFjdHVhbCBVUkwgdG8gR09PR0xFIGJvb2ttYXJrcyBzeXN0ZW0uIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIGFkZDJnb29nbGVC b29rbWFya3MoKQ0Kew0KCW9wZW5XaW4oJ2h0dHA6Ly93d3cuZ29vZ2xlLmNvbS9i b29rbWFya3MvbWFyaz9vcD1hZGQmYW1wO2JrbWs9Jyt3aW5kb3cubG9jYXRpb24r JyZhbXA7dGl0bGU9Jytkb2N1bWVudC50aXRsZSwnX2JsYW5rJywnJyk7DQp9DQoN Ci8vIEFkZGluZyBhY3R1YWwgVVJMIHRvIE15U3BhY2UgYm9va21hcmtzIHN5c3Rl bS4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBhZGQybXlT cGFjZUJvb2ttYXJrcygpDQp7DQoJb3BlbldpbignaHR0cDovL3d3dy5teXNwYWNl LmNvbS9Nb2R1bGVzL1Bvc3RUby9QYWdlcy8/dD0nK2RvY3VtZW50LnRpdGxlKycm YW1wO2M9Jyt3aW5kb3cubG9jYXRpb24sJ19ibGFuaycsJycpOw0KfQ0KDQovLyBB ZGRpbmcgYWN0dWFsIFVSTCB0byBGYWNlYm9vayBib29rbWFya3Mgc3lzdGVtLiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gYWRkMmZhY2Vib29r Qm9va21hcmtzKCkNCnsNCglvcGVuV2luKCdodHRwOi8vd3d3LmZhY2Vib29rLmNv bS9zaGFyZS5waHA/dT0nK3dpbmRvdy5sb2NhdGlvbisnJmFtcDt0PScrZG9jdW1l bnQudGl0bGUsJ19ibGFuaycsJycpOw0KfQ0KDQovLyBBZGRpbmcgYWN0dWFsIFVS TCB0byBUd2l0dGVyIGJvb2ttYXJrcyBzeXN0ZW0uIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KZnVuY3Rpb24gYWRkMnR3aXR0ZXJCb29rbWFya3MoKQ0Kew0K CW9wZW5XaW4oJ2h0dHA6Ly90d2l0dGVyLmNvbS9ob21lP3N0YXR1cz0nKyBkb2N1 bWVudC50aXRsZSArJyAnKyB3aW5kb3cubG9jYXRpb24sJ19ibGFuaycsJycpOw0K fQ0KDQovLyBBZGRpbmcgYWN0dWFsIFVSTCB0byBMaW5rdWouY3ogYm9va21hcmtz IHN5c3RlbS4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBh ZGQybGlua3VqQm9va21hcmtzKCkNCnsNCglvcGVuV2luKCdodHRwOi8vbGlua3Vq LmN6Lz9pZD1saW5rdWomdXJsPScgKyBlbmNvZGVVUklDb21wb25lbnQoZG9jdW1l bnQuVVJMKSArICcmYW1wO3RpdGxlPScgKyBlbmNvZGVVUklDb21wb25lbnQoZG9j dW1lbnQudGl0bGUpLCdfYmxhbmsnLCcnKTsNCn0NCg0KLy8gQWRkaW5nIGFjdHVh bCBVUkwgdG8gVG9wY2xhbmt5LmN6IGJvb2ttYXJrcyBzeXN0ZW0uIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gYWRkMnRvcENsYW5reUJvb2tt YXJrcygpDQp7DQoJb3BlbldpbignaHR0cDovL3d3dy50b3BjbGFua3kuY3ovcHJp ZGF0P3VybD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGRvY3VtZW50LlVSTCkgKyAn JmFtcDt0aXRsZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGRvY3VtZW50LnRpdGxl KSwnX2JsYW5rJywnJyk7DQp9DQoNCi8vIEFkZGluZyBhY3R1YWwgVVJMIHRvIFZ5 YnJhbGkuc21lLnNrIGJvb2ttYXJrcyBzeXN0ZW0uIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KZnVuY3Rpb24gYWRkMnZ5YnJhbGlTbWVCb29rbWFya3MoKQ0K ew0KCW9wZW5XaW4oJ2h0dHA6Ly92eWJyYWxpLnNtZS5zay9zdWJtaXQucGhwP3Vy bD0nK2VuY29kZVVSSUNvbXBvbmVudChsb2NhdGlvbi5ocmVmKSwnX2JsYW5rJywn Jyk7DQp9DQoNCmZ1bmN0aW9uIGFkZDJ0b3BPZGthenlCb29rbWFya3MoKQ0Kew0K CW9wZW5XaW4oJ2h0dHA6Ly93d3cudG9wb2RrYXp5LmN6L3N1Ym1pdC5waHA/dXJs PScgKyBlbmNvZGVVUklDb21wb25lbnQoZG9jdW1lbnQuVVJMKSwnX2JsYW5rJywn Jyk7DQp9DQoNCi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLyBHZW5l cmFsIG1ldGhvZHMNCi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoNCi8v IE9wZW5zIHNwZWNpYWwgdGhpY2tib3ggd2luZG93IHdpdGggZXh0ZW5kZWQgcHJv cGVydGllcy4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyAtIGNhcHRpb24gICAgICAg ICAgICAgOiBTdHJpbmcgIC0gY2FwdGlvbiBvZiB0aGUgaW1hZ2UNCi8vIC0gdXJs ICAgICAgICAgICAgICAgICA6IFN0cmluZyAgLSBVUkwgb2YgdGhlIGltYWdlDQov LyAtIGltYWdlR3JvdXAgICAgICAgICAgOiBTdHJpbmcgIC0gbmFtZSBvZiBpbWFn ZSBncm91cA0KLy8gLSBhdXRvbWF0aWNGaWxlU2VydmVyIDogQm9vbGVhbiAtIGl0 IGl0IGlzIHRydWUsIHRoZXJlIGlzIGFkZGVkIHBhdGggZnJvbSBnbG9iYWwgdmFy aWFibGUgRklMRV9TRVJWRVINCmZ1bmN0aW9uIG9wZW5UaGljQm94KGNhcHRpb24s IHVybCwgaW1hZ2VHcm91cCwgYXV0b21hdGljRmlsZVNlcnZlcikNCnsNCiAgICB2 YXIgZmluYWxVcmwgPSB1cmw7DQogICAgaWYgKChET0NVTUVOVF9GSUxFX1NFUlZF UiAhPSBudWxsKSAmJiAoYXV0b21hdGljRmlsZVNlcnZlcikgJiYgKHVybC5sZW5n dGggPiAwKSkNCiAgICB7DQogICAgICAgIGZpbmFsVXJsID0gRE9DVU1FTlRfRklM RV9TRVJWRVIgKyBmaW5hbFVybDsNCiAgICB9DQogICAgdGJfc2hvdyhjYXB0aW9u LCBmaW5hbFVybCwgaW1hZ2VHcm91cCk7DQp9DQoNCi8vICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqDQovLyBTZXR0aW5nIHByb3BlcnRpZXMgb2Ygb2JqZWN0cw0K Ly8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCg0KLy8gZGlzYWJsZXMgaW5w dXQNCmZ1bmN0aW9uIHNldElucHV0RGlzYWJsZWRCeUlkKGVsZW1lbnRJZCkNCnsN Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpLmRpc2FibGVkID0g dHJ1ZTsNCn0NCg0KLy8gZW5hYmxlcyBpbnB1dA0KZnVuY3Rpb24gc2V0SW5wdXRF bmFibGVkQnlJZChlbGVtZW50SWQpDQp7DQoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoZWxlbWVudElkKS5kaXNhYmxlZCA9IGZhbHNlOw0KfQ0KDQovLyBkaXNhYmxl cyBpbnB1dA0KZnVuY3Rpb24gc2V0SW5wdXREaXNhYmxlZEJ5T2JqZWN0KGVsZW1l bnQpDQp7DQoJZWxlbWVudC5kaXNhYmxlZCA9IHRydWU7DQp9DQoNCi8vIGVuYWJs ZXMgaW5wdXQNCmZ1bmN0aW9uIHNldElucHV0RW5hYmxlZEJ5T2JqZWN0KGVsZW1l bnQpDQp7DQoJZWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOw0KfQ0KDQovLyAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKg0KLy8gV29yayB3aXRoIFNFTEVDVCBlbGVt ZW50IE9QVElPTlMNCi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoNCi8v IHJlbW92aW5nIGFsbCBpdGVtcyBmcm9tIHNlbGVjdA0KZnVuY3Rpb24gY2xlYXJT ZWxlY3Qoc2VsZWN0SWQpDQp7DQogICAgdmFyIHNlbGVjdFRvQ2xlYXIgPSBkb2N1 bWVudC5nZXRFbGVtZW50QnlJZChzZWxlY3RJZCk7DQogICAgd2hpbGUgKHNlbGVj dFRvQ2xlYXIub3B0aW9ucy5sZW5ndGggPiAwKSB7DQogICAgICAgIHJlbW92ZVNl bGVjdEl0ZW0oc2VsZWN0SWQsIHNlbGVjdFRvQ2xlYXIub3B0aW9ucy5sZW5ndGgg LSAxKTsNCiAgICB9DQp9DQoNCi8vIGdldHRpbmcgdmFsdWUgb2Ygc2VsZWN0ZWQg aXRlbSBpbiBzZWxlY3QNCmZ1bmN0aW9uIGdldFNlbGVjdFNlbGVjdGVkVmFsdWUo c2VsZWN0SWQpDQp7DQogICAgdmFyIHJlc3VsdCA9IG51bGw7DQogICAgdmFyIHNl bGVjdE9iaiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlbGVjdElkKTsNCiAg ICBmb3IgKHZhciBpID0gc2VsZWN0T2JqLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0t KSB7DQogICAgICAgIGlmIChzZWxlY3RPYmoub3B0aW9uc1tpXS5zZWxlY3RlZCkg ew0KICAgICAgICAgICAgcmVzdWx0ID0gc2VsZWN0T2JqLm9wdGlvbnNbaV0udmFs dWU7DQogICAgICAgIH0NCiAgICB9DQogICAgcmV0dXJuIHJlc3VsdDsNCn0NCg0K Ly8gZ2V0dGluZyB0ZXh0IG9mIHNlbGVjdGVkIGl0ZW0gaW4gc2VsZWN0DQpmdW5j dGlvbiBnZXRTZWxlY3RTZWxlY3RlZFRleHQoc2VsZWN0SWQpDQp7DQogICAgdmFy IHJlc3VsdCA9IG51bGw7DQogICAgdmFyIHNlbGVjdE9iaiA9IGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKHNlbGVjdElkKTsNCiAgICBmb3IgKHZhciBpID0gc2VsZWN0 T2JqLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7DQogICAgICAgIGlmIChzZWxl Y3RPYmoub3B0aW9uc1tpXS5zZWxlY3RlZCkgew0KICAgICAgICAgICAgcmVzdWx0 ID0gc2VsZWN0T2JqLm9wdGlvbnNbaV0udGV4dDsNCiAgICAgICAgfQ0KICAgIH0N CiAgICByZXR1cm4gcmVzdWx0Ow0KfQ0KDQovLyByZW1vdmluZyBpdGVtIGluIHNl bGVjdA0KZnVuY3Rpb24gcmVtb3ZlU2VsZWN0SXRlbShzZWxlY3RJZCwgaW5kZXgp DQp7DQogICAgdmFyIHNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlbGVj dElkKTsNCiAgICBzZWwucmVtb3ZlKGluZGV4KTsNCn0NCg0KLy8gaW5zZXJ0aW5n IGl0ZW0gaW50byBzZWxlY3QNCmZ1bmN0aW9uIGluc2VydFNlbGVjdEl0ZW0oc2Vs ZWN0SWQsIG5ld1RleHQsIG5ld1ZhbHVlKQ0Kew0KICAgIHZhciBuZXdPcHRpb24g PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTsNCiAgICBuZXdPcHRp b24udGV4dCA9IG5ld1RleHQ7DQogICAgbmV3T3B0aW9uLnZhbHVlID0gbmV3VmFs dWU7DQogICAgdmFyIHNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlbGVj dElkKTsNCiAgDQogICAgdHJ5IHsNCiAgICAgICAgc2VsLmFkZChuZXdPcHRpb24s IG51bGwpOyAvLyBzdGFuZGFyZHMgY29tcGxpYW50OyBkb2Vzbid0IHdvcmsgaW4g SUUNCiAgICB9IGNhdGNoKGV4KSB7DQogICAgICAgIHNlbC5hZGQobmV3T3B0aW9u KTsgICAgICAgLy8gSUUgb25seQ0KICAgIH0NCn0NCg0KLy8gKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioNCi8vIFdvcmsgd2l0aCBVUkwNCi8vICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqDQoNCi8vIHZyYXRpIG5hemV2IHN0cmFua3kNCmZ1bmN0 aW9uIFJldHVyblBhZ2VOYW1lKCkgew0KCXF1ZXJ5ID0gd2luZG93LmxvY2F0aW9u LmhyZWYudG9Mb3dlckNhc2UoKTsNCglxdWVyeSA9IHF1ZXJ5LnN1YnN0cihxdWVy eS5sYXN0SW5kZXhPZigiLyIpKzEpOw0KCXF1ZXJ5ID0gcXVlcnkuc3Vic3RyKDAs IHF1ZXJ5LmluZGV4T2YoIi5hc3B4IikpOw0KCXJldHVybiBxdWVyeTsNCn0NCg0K Ly8gdnJhdGkgZGFub3UgcHJvbWVubm91IHogR0VUDQpmdW5jdGlvbiBSZXR1cm5H RVRWYXJpYWJsZVZhbHVlKFNlYXJjaGVkVmFyaWFibGUpIHsNCglxdWVyeSA9IHdp bmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpOw0KCXZhciB2YXJzID0g cXVlcnkuc3BsaXQoIiYiKTsNCglmb3IgKGkgPSAwOyBpIDwgdmFycy5sZW5ndGg7 IGkrKykgew0KCQl2YXIgcGFpciA9IHZhcnNbaV0uc3BsaXQoIj0iKTsNCgkJaWYg KHBhaXJbMF0gPT0gU2VhcmNoZWRWYXJpYWJsZSkgew0KCQkJcmV0dXJuIHBhaXJb MV07DQoJCX0NCgl9DQoJcmV0dXJuICcnOw0KfQ0KDQovLyBSZXR1cm4gYWN0dWFs IGRvbWFpbiBuYW1lLiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gR2V0VXJsQmFzZSgpDQp7DQogICAgdmFy IHJlc3VsdCA9IHdpbmRvdy5sb2NhdGlvbi50b1N0cmluZygpLnJlcGxhY2UoImh0 dHA6Ly8iLCAiIik7DQogICAgcmVzdWx0ID0gcmVzdWx0LnN1YnN0cigwLCByZXN1 bHQuaW5kZXhPZigiLyIpKTsNCiAgICByZXR1cm4gcmVzdWx0Ow0KfQ0KDQovLyAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8gR1BTIGNvbnZlcnNpb25zDQov LyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KDQovLyBjb252ZXJzaW9uIGZy b20gR1BTIGludG8gDQpmdW5jdGlvbiBHZXRHUFNfTGF0TG9uKHZhbHVlKQ0Kew0K CXdoaWxlICh2YWx1ZS5pbmRleE9mKCIgIikgPiAtMSkNCgl7DQoJCXZhbHVlID0g dmFsdWUucmVwbGFjZSgiICIsICIiKTsNCgl9DQoJDQoJdmFyIHZhbDRsYXQgPSB2 YWx1ZS5zcGxpdCgiLCIpWzBdOw0KCXZhciBsYXRISCA9IHBhcnNlRmxvYXQodmFs NGxhdC5zcGxpdChTdHJpbmcuZnJvbUNoYXJDb2RlKDE3NikpWzBdKTsNCgl2YXIg bGF0TU0gPSBwYXJzZUZsb2F0KHZhbDRsYXQuc3BsaXQoIiciKVswXS5zcGxpdChT dHJpbmcuZnJvbUNoYXJDb2RlKDE3NikpWzFdKTsNCgl2YXIgbGF0U1MgPSBwYXJz ZUZsb2F0KHZhbDRsYXQuc3BsaXQoIiciKVsxXS5yZXBsYWNlKCJcIiIsIiIpKTsN CgkvL2FsZXJ0KHZhbDRsYXQgKyI6ICAgIisgbGF0SEggKyAiLCIgKyBsYXRNTSAr ICIsIiArIGxhdFNTKTsNCgkNCgkNCgl2YXIgdmFsNGxvbiA9IHZhbHVlLnNwbGl0 KCIsIilbMV07DQoJdmFyIGxvbkhIID0gcGFyc2VGbG9hdCh2YWw0bG9uLnNwbGl0 KFN0cmluZy5mcm9tQ2hhckNvZGUoMTc2KSlbMF0pOw0KCXZhciBsb25NTSA9IHBh cnNlRmxvYXQodmFsNGxvbi5zcGxpdCgiJyIpWzBdLnNwbGl0KFN0cmluZy5mcm9t Q2hhckNvZGUoMTc2KSlbMV0pOw0KCXZhciBsb25TUyA9IHBhcnNlRmxvYXQodmFs NGxvbi5zcGxpdCgiJyIpWzFdLnJlcGxhY2UoIlwiIiwiIikpOw0KCS8vYWxlcnQo dmFsNGxvbiArIjogICAiKyBsb25ISCArICIsIiArIGxvbk1NICsgIiwiICsgbG9u U1MpOw0KCQ0KCXZhciBsYXQgPSAwOw0KCXZhciBsb24gPSAwOw0KCQ0KICAgIHRy eQ0KCXsgICAgICAgICAgIA0KCQlsYXQgPSBsYXRTUyAvIDYwLjA7DQoJCWxhdCA9 IChsYXQgKyBsYXRNTSkgLyA2MC4wOw0KCQlsYXQgPSBsYXQgKyBsYXRISDsNCiAg ICAgICAgICAgICAgICANCgkJbG9uID0gbG9uU1MgLyA2MC4wOw0KICAgICAgICBs b24gPSAobG9uICsgbG9uTU0pIC8gNjAuMDsNCiAgICAgICAgbG9uID0gbG9uICsg bG9uSEg7DQogICAgfQ0KICAgIGNhdGNoIChleGNlcHRpb24pIHt9DQogICAgDQog ICAgcmV0dXJuIGxhdC50b1N0cmluZygpICsiOyIrIGxvbi50b1N0cmluZygpOw0K fQ0KDQpmdW5jdGlvbiBHZXRHUFNfRGVnKHZhbHVlKQ0Kew0KCXZhbHVlID0gdmFs dWUudG9TdHJpbmcoKS5yZXBsYWNlKCIgIiwiIikucmVwbGFjZSgiKCIsIiIpLnJl cGxhY2UoIikiLCIiKTsNCgl2YXIgdmFsdWUxID0gIiIsIHZhbHVlMiA9ICIiOw0K CXZhciBoaCA9IDAsIG1tID0gMCwgc3MgPSAwLCBhY3R1YWwgPSAwOw0KCXZhciBo aDEgPSAwLCBtbTEgPSAwLCBzczEgPSAwLCBhY3R1YWwxID0gMDsNCglhY3R1YWwg PSBwYXJzZUZsb2F0KHZhbHVlLnNwbGl0KCIsIilbMF0pOw0KCWFjdHVhbDEgPSBw YXJzZUZsb2F0KHZhbHVlLnNwbGl0KCIsIilbMV0pOw0KCQkJCQkJDQoJaGggPSBw YXJzZUludChhY3R1YWwpOw0KCXZhciByZW1haW5kZXIgPSBhY3R1YWwgLSAoaGgg KiAxLjApOw0KCW1tID0gcmVtYWluZGVyICogNjAuMDsNCgl2YXIgcmVtYWluZGVy MiA9IG1tIC0gKHBhcnNlSW50KG1tKSoxLjApOw0KCXNzID0gTWF0aC5yb3VuZChy ZW1haW5kZXIyICogNjAuMCAqIDEwMDAuMCkgLyAxMDAwLjA7DQoJbW0gPSBwYXJz ZUludChtbSk7DQoJCQkJCQkNCgl2YXIgaGgxID0gcGFyc2VJbnQoYWN0dWFsMSk7 DQoJcmVtYWluZGVyID0gYWN0dWFsMSAtIChoaDEgKiAxLjApOw0KCW1tMSA9IHJl bWFpbmRlciAqIDYwLjA7DQoJcmVtYWluZGVyMiA9IG1tMSAtIChwYXJzZUludCht bTEpKjEuMCk7DQoJc3MxID0gTWF0aC5yb3VuZChyZW1haW5kZXIyICogNjAuMCAq IDEwMDAuMCkgLyAxMDAwLjA7DQoJbW0xID0gcGFyc2VJbnQobW0xKTsNCgkJCQkJ CQ0KCXJldHVybiBoaCArU3RyaW5nLmZyb21DaGFyQ29kZSgxNzYpKyBtbSArJ1wn Jysgc3MgKyciTiAnICsgaGgxICtTdHJpbmcuZnJvbUNoYXJDb2RlKDE3NikrIG1t MSArJ1wnJysgc3MxICsnIkUnOw0KfQ0KDQovLyAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKg0KLy8gT3BlbmluZyBleHRlcm5hbCBtYXAgd2luZG93cw0KLy8gKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioNCg0KZnVuY3Rpb24gb3BlbkdQU1dpbmRv dyhncHNQb3NpdGlvbiwgdGl0bGUsIGxpbmssIGljb24pDQp7DQogICAgdmFyIGdw c0NlbnRlciA9IEdldEdQU19MYXRMb24oZ3BzUG9zaXRpb24pOw0KICAgIHZhciBp Y29uSW1nID0gKGljb24gPT0gbnVsbCA/ICIiIDogaWNvbikucmVwbGFjZSgiLiIs Ii0iKTsNCiAgICB2YXIgdGl0bGVGaW5hbCA9IGVzY2FwZSgodGl0bGUgPT0gbnVs bCA/ICIiIDogdGl0bGUpLnJlcGxhY2UoIi4iLCIgIikpOw0KICAgIGlmICh0aXRs ZUZpbmFsLmxlbmd0aCA+IDEwKSB0aXRsZUZpbmFsID0gIiI7DQogICAgDQogICAg dmFyIHdpbiA9IHdpbmRvdy5vcGVuKCJodHRwOi8vIitHZXRVcmxCYXNlKCkrIi9j ei9zMjExMyIrDQogICAgICAgICIvbG9uIisocGFyc2VGbG9hdChncHNDZW50ZXIu c3BsaXQoIjsiKVsxXSkpLnRvU3RyaW5nKCkucmVwbGFjZSgiLiIsIi0iKS5yZXBs YWNlKCIsIiwiLSIpKw0KICAgICAgICAiL2xhdCIrKHBhcnNlRmxvYXQoZ3BzQ2Vu dGVyLnNwbGl0KCI7IilbMF0pKS50b1N0cmluZygpLnJlcGxhY2UoIi4iLCItIiku cmVwbGFjZSgiLCIsIi0iKSsNCiAgICAgICAgIi9pY29uMS0iK2ljb25JbWcrIi90 aXRsZTEtIit0aXRsZUZpbmFsDQogICAgICAgICwgIl9ibGFuayIsICJ0b29sYmFy PTAsbWVudWJhcj0wLGxvY2F0aW9uPW5vLGRpcmVjdG9yaWVzPW5vLHNjcm9sbGJh cnM9bm8scmVzaXphYmxlPW5vLHN0YXR1cz1ubyx3aWR0aD00MDAsaGVpZ2h0PTQw MCx0b3A9ODAsbGVmdD04MCIpOw0KfQ0KDQpmdW5jdGlvbiBvcGVuR1BTV2luZG93 NENlbnRyYWxXZWIoZ3BzUG9zaXRpb24sIHRpdGxlLCBsaW5rLCBpY29uKQ0Kew0K ICAgIHZhciBncHNDZW50ZXIgPSBHZXRHUFNfTGF0TG9uKGdwc1Bvc2l0aW9uKTsN CiAgICB2YXIgaWNvbkltZyA9IChpY29uID09IG51bGwgPyAiIiA6IGljb24pLnJl cGxhY2UoIi4iLCItIik7DQogICAgdmFyIHRpdGxlRmluYWwgPSBlc2NhcGUoKHRp dGxlID09IG51bGwgPyAiIiA6IHRpdGxlKS5yZXBsYWNlKCIuIiwiICIpKTsNCiAg ICB0aXRsZUZpbmFsID0gZXNjYXBlKCIiKTsNCiAgICANCiAgICB2YXIgd2luID0g d2luZG93Lm9wZW4oImh0dHA6Ly8iK0dldFVybEJhc2UoKSsiL2N6L3MyMTE1IisN CiAgICAgICAgIi9sb24iKyhwYXJzZUZsb2F0KGdwc0NlbnRlci5zcGxpdCgiOyIp WzFdKSkudG9TdHJpbmcoKS5yZXBsYWNlKCIuIiwiLSIpLnJlcGxhY2UoIiwiLCIt IikrDQogICAgICAgICIvbGF0IisocGFyc2VGbG9hdChncHNDZW50ZXIuc3BsaXQo IjsiKVswXSkpLnRvU3RyaW5nKCkucmVwbGFjZSgiLiIsIi0iKS5yZXBsYWNlKCIs IiwiLSIpKw0KICAgICAgICAiL2ljb24xLSIraWNvbkltZysiL3RpdGxlMS0iK3Rp dGxlRmluYWwNCiAgICAgICAgLCAiX2JsYW5rIiwgInRvb2xiYXI9MCxtZW51YmFy PTAsbG9jYXRpb249bm8sZGlyZWN0b3JpZXM9bm8sc2Nyb2xsYmFycz1ubyxyZXNp emFibGU9bm8sc3RhdHVzPW5vLHdpZHRoPTQwMCxoZWlnaHQ9NDAwLHRvcD04MCxs ZWZ0PTgwIik7DQp9DQoNCi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQov LyBXb3JraW5nIHdpdGggZXZlbnRzDQovLyAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKg0KDQpmdW5jdGlvbiBhZGRFdmVudChvYmosIGV2ZW50LCBmdW5jdCkgeyAg DQoJaWYgKG9iai5hdHRhY2hFdmVudCkNCgl7IC8vSUUgIA0KCQlvYmpbJ2UnICsg ZXZlbnQgKyBmdW5jdF0gPSBmdW5jdDsgIA0KCQlvYmpbJ3gnICsgZXZlbnQgKyBm dW5jdF0gPSBmdW5jdGlvbigpIHsgIA0KCQkJb2JqWydlJyArIGV2ZW50ICsgZnVu Y3RdKHdpbmRvdy5ldmVudCk7ICANCiAgICAgICAgfSAgDQoJCW9iai5hdHRhY2hF dmVudCgnb24nICsgZXZlbnQsIG9ialsneCcgKyBldmVudCArIGZ1bmN0XSk7ICAN Cgl9DQoJZWxzZQ0KCXsgLy8gb3RoZXIgYnJvd3NlciAgDQoJCW9iai5hZGRFdmVu dExpc3RlbmVyKGV2ZW50LCBmdW5jdCwgZmFsc2UpOw0KCX0NCn0g ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=ajax.js Content-Type: application/x-javascript; name=ajax.js Content-Location: http://teplice.naseadresa.cz/0000-Global/js/ajax.js Content-Transfer-Encoding: Base64 Ly8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vIE9iamVjdCBmb3IgZ2V0 dGluZyBkYXRhIGJ5IEFKQVgNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQovLyAtIGxvYWRlck9iamVjdElkICAgICAgICAgIDogSFRNTEVsZW1lbnQgSWQg KFN0cmluZykgLSBJZCBvZiBlbGVtZW50IGZvciBzaG93aW5nIGxvYWRpbmcgbWVz c2FnZXMgKG11c3QgYmUgRElWIG9yIFNQQU4pDQovLyAtIGxvYWRpbmdIVE1MICAg ICAgICAgICAgIDogU3RyaW5nICAgICAgICAgICAgICAgICAgLSBIVE1MIHRvIHNo b3cgd2hlbiBsb2FkaW5nIGlzIHN0YXJ0ZWQ7IGZvciBsb2FkaW5nIG1vcmUgZmls ZXMNCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVzZSBbQUNUVUFMX0RFU0NdIHJlcGxhY2VtZW50IG1hcmsN Ci8vIC0gYWZ0ZXJMb2FkSFRNTCAgICAgICAgICAgOiBTdHJpbmcgICAgICAgICAg ICAgICAgICAtIEhUTUwgdG8gc2hvdyBhZnRlciBkYXRhIGFyZSBsb2FkZWQNCi8v IC0gZXJyb3JPYmplY3RJZCAgICAgICAgICAgOiBIVE1MRWxlbWVudCBJZCAoU3Ry aW5nKSAtIElkIG9mIGVsZW1lbnQgZm9yIHNob3dpbmcgZXJyb3IgbWVzc2FnZXMg KG11c3QgYmUgRElWIG9yIFNQQU4pDQovLyAtIGdlbmVyYWxFcnJvckhUTUwgICAg ICAgIDogU3RyaW5nICAgICAgICAgICAgICAgICAgLSB0ZXh0IG9mIGdlbmVyYWwg ZXJyb3IsIHdoZW4gQUpBWCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHdlYiBicm93c2Vy DQovLyAtIHJldHJlaXZpbmdEYXRhRXJyb3JIVE1MIDogU3RyaW5nICAgICAgICAg ICAgICAgICAgLSB0ZXh0IG9mIGVycm9yIHdoZW4gdGhlcmUgaXMgcHJvYmxlbSBv ZiBkYXRhIHRyYW5zZmVyIGZyb20gc2VydmVyDQovLyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKg0KZnVuY3Rpb24gQWpheERhdGFSZWFkZXIobG9hZGVyT2JqZWN0 SWQsIGxvYWRpbmdIVE1MLCBhZnRlckxvYWRIVE1MLCBlcnJvck9iamVjdElkLCBn ZW5lcmFsRXJyb3JIVE1MLCByZXRyZWl2aW5nRGF0YUVycm9ySFRNTCkNCnsNCiAg ICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQogICAgLy8gQVRUUklCVVRFUyAtIHdvcmtpbmcgd2l0aCBkYXRhDQog ICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KICAgIA0KICAgIC8vIHZhcmlhYmxlIGZvciBnZW5lcmFsIEFKQVgg b2JqZWN0DQogICAgdmFyIHhtbGh0dHAgPSBudWxsOw0KDQogICAgLy8gYXJyYXlz IGZvciBzdG9yYWdlIG9mIHJlc3VsdCBkYXRhDQogICAgdmFyIHJlc3VsdHNYTUwg PSBuZXcgQXJyYXkoKTsNCiAgICB2YXIgcmVzdWx0c1RleHQgPSBuZXcgQXJyYXko KTsNCiAgICANCiAgICAvLyB2YXJpYWJsZXMgZm9yIGxhc3RseSBsb2FkZWQgZGF0 YQ0KICAgIHZhciBsYXN0UmVzdWx0WE1MID0gbnVsbDsNCiAgICB2YXIgbGFzdFJl c3VsdFRleHQgPSAiIjsNCg0KICAgIC8vIGluZGljYXRvcnMgb2YgYWN0dWFsIG9i amVjdCBzdGF0ZQ0KICAgIHZhciByZXN1bHRSZWFkeSA9IGZhbHNlOw0KICAgIHZh ciBsb2FkaW5nRGF0YSA9IGZhbHNlOw0KICAgIA0KICAgIC8vIGFycmF5IGZvciBr ZWVwaW5nIGxvYWRpbmcgZnJvbnQNCiAgICB2YXIgbG9hZGluZ0Zyb250ID0gbmV3 IEFycmF5KCk7DQogICAgDQogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIC8vIEFUVFJJQlVURVMgLSBm b3Igd29ya2luZyBsb2FkaW5nDQogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIA0KICAgIC8vIG1lc3Nh Z2VzIGZvciBsb2FkaW5nDQogICAgdmFyIGxvYWRpbmdNZXNzYWdlID0gbG9hZGlu Z0hUTUw7DQogICAgdmFyIGFmdGVyTG9hZE1lc3NhZ2UgPSBhZnRlckxvYWRIVE1M Ow0KICAgIA0KICAgIC8vIG9iamVjdCBmb3Igc2hvd2luZyBtZXNzYWdlcw0KICAg IHZhciBsb2FkZXJPYmplY3QgPSAobG9hZGVyT2JqZWN0SWQgIT0gbnVsbCA/IGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKGxvYWRlck9iamVjdElkKSA6IG51bGwpOw0K ICAgIA0KICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCiAgICAvLyBBVFRSSUJVVEVTIC0gZm9yIHdvcmtpbmcg d2l0aCBlcnJvcnMNCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgDQogICAgLy8gZGVmYXVsdCBlcnJv ciBtZXNzYWdlcw0KICAgIHZhciBkZWZhdWx0R2VuZXJhbEVycm9yTWVzc2FnZSA9 ICJZb3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBYTUxIVFRQLiI7DQogICAg dmFyIGRlZmF1bHRSZXRyZWl2aW5nRGF0YUVycm9yTWVzc2FnZSA9ICJQcm9ibGVt IHJldHJpZXZpbmcgWE1MIGRhdGEuIjsNCiAgICANCiAgICAvLyB2YXJpYWJsZXMg Zm9yIGN1c3RvbSBlcnJvciBtZXNzYWdlcw0KICAgIHZhciBnZW5lcmFsRXJyb3JN ZXNzYWdlID0gZ2VuZXJhbEVycm9ySFRNTDsNCiAgICB2YXIgcmV0cmVpdmluZ0Rh dGFFcnJvck1lc3NhZ2UgPSByZXRyZWl2aW5nRGF0YUVycm9ySFRNTDsNCiAgICAN CiAgICAvLyBvYmplY3QgZm9yIHNob3dpbmcgZXJyb3JzDQogICAgdmFyIGVycm9y T2JqZWN0ID0gKGVycm9yT2JqZWN0SWQgIT0gbnVsbCA/IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKGVycm9yT2JqZWN0SWQpIDogbnVsbCk7DQoNCiAgICAvLyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQog ICAgLy8gR0VORVJBTCBNRVRIT0RTIEFORCBPQkpFQ1RTIEZPUiBEQVRBIFRSQU5T RkVSDQogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KDQogICAgLy8gUHVibGljIG1ldGhvZCBmb3IgZ2V0dGlu ZyBkYXRhIGZyb20gVVJMLiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIC8vICAgICAtIFRoaXMgbWV0 aG9kIHdvcmtzIHdpdGggb25lIGl0ZW0gZGF0YSBpbiBmaW5hbCByZXN1bHQuDQog ICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KICAgIC8vIC0gdXJsICAgICAgICAgICAgICAgICAgICAgICAgICA6 IFN0cmluZyAtIGZ1bGwgVVJMIGxvY2F0aW9uIG9mIGRhdGEgdG8gbG9hZA0KICAg IC8vIC0gbWV0aG9kMkV4ZWN1dGUgICAgICAgICAgICAgICA6IFN0cmluZyAtIGZ1 bGwgc3RyaW5nIGNhbGwgb2YgbWV0aG9kIHRoYXQgc2hvdWxkIGJlIGV4ZWN1dGVk IA0KICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFmdGVyIGRhdGEgYXJlIGxvYWRlZDsgZm9yIHJlcGxhY2VtZW50IG9mIGxv YWRlZCBkYXRhDQogICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdXNlcyBbRGF0YVhNTF0gYW5kIFtEYXRhVGV4dF0NCiAgICAv LyAtIGxvYWRpbmdEZXNjcmlwdGlvbiAgICAgICAgICAgOiBTdHJpbmcgLSBkZXNj cmlwdGlvbiBvZiBsb2FkaW5nIGZvciBjb25jcmV0ZSBpdGVtDQogICAgLy8gLSBh ZnRlckxvYWREZXNjcmlwdGlvbiAgICAgICAgIDogU3RyaW5nIC0gcmVzdWx0IHRl eHQgZm9yIGNvbmNyZXRlIGl0ZW0NCiAgICAvLyAtIHNwZWNpYWxPYmplY3RJZDRM b2FkaW5nVGV4dHMgOiBTdHJpbmcgLSBzcGVjaWFsIG9iamVjdCBmb3Igc2hvd2lu ZyBtZXNzYWdlcyBvZiBsb2FkaW5nIG9mDQogICAgLy8gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uY3JldGUgaXRlbQ0KICAgIC8v IC0gc3BlY2lhbE9iamVjdElkNEVycm9yVGV4dHMgICA6IFN0cmluZyAtIHNwZWNp YWwgb2JqZWN0IGZvciBzaG93aW5nIGVycm9yIG1lc3NhZ2VzIG9mIGxvYWRpbmcN CiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvZiBjb25jcmV0ZSBpdGVtDQogICAgZnVuY3Rpb24gZ2V0RGF0YUJ5SXRlbSh1 cmwsIG1ldGhvZDJFeGVjdXRlLCBub2RlTmFtZSwgbG9hZGluZ0Rlc2NyaXB0aW9u LCBhZnRlckxvYWREZXNjcmlwdGlvbiwgDQogICAgICAgIHNwZWNpYWxPYmplY3RJ ZDRMb2FkaW5nVGV4dHMsIHNwZWNpYWxPYmplY3RJZDRFcnJvclRleHRzLCBtZXRo b2QyRXhlY3V0ZTROb0l0ZW1zKQ0KICAgIHsNCiAgICAgICAgdmFyIG1ldGhvZE5h bWUgPSAiIjsNCiAgICAgICAgdmFyIG1ldGhvZEFkZGl0aXZlUGFyYW1zID0gIiI7 DQogICAgICAgIA0KICAgICAgICBtZXRob2ROYW1lID0gbWV0aG9kMkV4ZWN1dGUu c3BsaXQoInwiKVswXTsNCiAgICAgICAgaWYgKG1ldGhvZDJFeGVjdXRlLnNwbGl0 KCJ8IikubGVuZ3RoID09IDIpDQogICAgICAgICAgICAgbWV0aG9kQWRkaXRpdmVQ YXJhbXMgPSBtZXRob2QyRXhlY3V0ZS5zcGxpdCgifCIpWzFdOw0KDQogICAgICAg IGdldERhdGFCeUl0ZW1zKHVybCwgInJlYWRYTUxSZXN1bHRzKFtEYXRhWE1MXSwg JyIrbm9kZU5hbWUrIicsICciK21ldGhvZE5hbWUrIihbREFUQV0sW0lOREVYXSxb Q09VTlRdLFtBVFRSSUJVVEVTXSIrbWV0aG9kQWRkaXRpdmVQYXJhbXMrIik7JyIr DQogICAgICAgICAgICAoKG1ldGhvZDJFeGVjdXRlNE5vSXRlbXMgIT0gIiIpICYm IChtZXRob2QyRXhlY3V0ZTROb0l0ZW1zICE9IG51bGwpID8gIiwnIittZXRob2Qy RXhlY3V0ZTROb0l0ZW1zICsgIiciIDogIiIpKyIpOyIsIA0KICAgICAgICAgICAg bG9hZGluZ0Rlc2NyaXB0aW9uLCBhZnRlckxvYWREZXNjcmlwdGlvbiwgDQogICAg ICAgICAgICBzcGVjaWFsT2JqZWN0SWQ0TG9hZGluZ1RleHRzLCBzcGVjaWFsT2Jq ZWN0SWQ0RXJyb3JUZXh0cywgbWV0aG9kMkV4ZWN1dGU0Tm9JdGVtcyk7DQogICAg fQ0KICAgIHRoaXMuZ2V0RGF0YUJ5SXRlbSA9IGdldERhdGFCeUl0ZW07DQoNCiAg ICAvLyBQdWJsaWMgbWV0aG9kIGZvciBnZXR0aW5nIGRhdGEgZnJvbSBVUkwuIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQogICAgLy8gICAgIC0gVGhpcyBtZXRob2Qgd29ya3Mgd2l0aCBhbGwg aXRlbXMgZGF0YSBpbiBmaW5hbCByZXN1bHQuDQogICAgLy8gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIC8vIC0g dXJsICAgICAgICAgICAgICAgICAgICAgICAgICA6IFN0cmluZyAtIGZ1bGwgVVJM IGxvY2F0aW9uIG9mIGRhdGEgdG8gbG9hZA0KICAgIC8vIC0gbWV0aG9kMkV4ZWN1 dGUgICAgICAgICAgICAgICA6IFN0cmluZyAtIGZ1bGwgc3RyaW5nIGNhbGwgb2Yg bWV0aG9kIHRoYXQgc2hvdWxkIGJlIGV4ZWN1dGVkIA0KICAgIC8vICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyIGRhdGEgYXJl IGxvYWRlZDsgZm9yIHJlcGxhY2VtZW50IG9mIGxvYWRlZCBkYXRhDQogICAgLy8g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcyBb RGF0YVhNTF0gYW5kIFtEYXRhVGV4dF0NCiAgICAvLyAtIGxvYWRpbmdEZXNjcmlw dGlvbiAgICAgICAgICAgOiBTdHJpbmcgLSBkZXNjcmlwdGlvbiBvZiBsb2FkaW5n IGZvciBjb25jcmV0ZSBpdGVtDQogICAgLy8gLSBhZnRlckxvYWREZXNjcmlwdGlv biAgICAgICAgIDogU3RyaW5nIC0gcmVzdWx0IHRleHQgZm9yIGNvbmNyZXRlIGl0 ZW0NCiAgICAvLyAtIHNwZWNpYWxPYmplY3RJZDRMb2FkaW5nVGV4dHMgOiBTdHJp bmcgLSBzcGVjaWFsIG9iamVjdCBmb3Igc2hvd2luZyBtZXNzYWdlcyBvZiBsb2Fk aW5nIG9mDQogICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uY3JldGUgaXRlbQ0KICAgIC8vIC0gc3BlY2lhbE9iamVjdElk NEVycm9yVGV4dHMgICA6IFN0cmluZyAtIHNwZWNpYWwgb2JqZWN0IGZvciBzaG93 aW5nIGVycm9yIG1lc3NhZ2VzIG9mIGxvYWRpbmcNCiAgICAvLyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBjb25jcmV0ZSBpdGVt DQogICAgZnVuY3Rpb24gZ2V0RGF0YUJ5SXRlbXModXJsLCBtZXRob2QyRXhlY3V0 ZSwgbG9hZGluZ0Rlc2NyaXB0aW9uLCBhZnRlckxvYWREZXNjcmlwdGlvbiwgDQog ICAgICAgIHNwZWNpYWxPYmplY3RJZDRMb2FkaW5nVGV4dHMsIHNwZWNpYWxPYmpl Y3RJZDRFcnJvclRleHRzLCBtZXRob2QyRXhlY3V0ZTROb0l0ZW1zKQ0KICAgIHsN CiAgICAgICAgLy8gYWRkaW5nIG5ldyBpdGVtIHRvIGZyb250DQogICAgICAgIGlm ICh1cmwgIT0gbnVsbCkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHVybCAh PSAiIikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAvLyBjcmVhdGlu ZyBuZXcgZnJvbnQgaXRlbQ0KICAgICAgICAgICAgICAgIHZhciBuZXdGcm9udEl0 ZW0gPSBuZXcgTG9hZGluZ0Zyb250SXRlbSh1cmwsIG1ldGhvZDJFeGVjdXRlLCBs b2FkaW5nRGVzY3JpcHRpb24sIA0KICAgICAgICAgICAgICAgICAgICBhZnRlckxv YWREZXNjcmlwdGlvbiwgc3BlY2lhbE9iamVjdElkNExvYWRpbmdUZXh0cywgc3Bl Y2lhbE9iamVjdElkNEVycm9yVGV4dHMsIA0KICAgICAgICAgICAgICAgICAgICBt ZXRob2QyRXhlY3V0ZTROb0l0ZW1zKTsNCiAgICAgICAgICAgICAgICAvLyBhZGRp bmcgaXRlbSBpbnRvIGZyb250DQogICAgICAgICAgICAgICAgbG9hZGluZ0Zyb250 W2xvYWRpbmdGcm9udC5sZW5ndGhdID0gbmV3RnJvbnRJdGVtOw0KICAgICAgICAg ICAgfQ0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAvLyB3b3JrIHdpdGgg Y29uY3JldGUgZGF0YSBsb2FkaW5nDQogICAgICAgIGlmICghbG9hZGluZ0RhdGEp DQogICAgICAgIHsNCiAgICAgICAgICAgIC8vIGlmIHRoZXJlIGFyZSBubyBkYXRh IHRvIGxvYWQsIGV4aXQgbG9hZGluZyBtZXRob2QNCiAgICAgICAgICAgIGlmIChs b2FkaW5nRnJvbnQubGVuZ3RoID09IDApDQogICAgICAgICAgICAgICAgcmV0dXJu Ow0KICAgICAgICANCiAgICAgICAgICAgIC8vIHNldHRpbmcgaW5kaWNhdGlvbiBw YXJhbWV0ZXJzIGludG8gbG9hZGluZyBzdGF0ZQ0KICAgICAgICAgICAgbG9hZGlu Z0RhdGEgPSB0cnVlOw0KICAgICAgICAgICAgcmVzdWx0UmVhZHkgPSBmYWxzZTsN Cg0KICAgICAgICAgICAgLy8gc2V0dGluZyByaWdodCBvYmplY3QgYWNjb3JkaW5n IHRvIHdlYiBicm93c2VyDQogICAgICAgICAgICBpZiAod2luZG93LlhNTEh0dHBS ZXF1ZXN0KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIC8vIGNvZGUg Zm9yIE1vemlsbGEsIGV0Yy4NCiAgICAgICAgICAgICAgICB4bWxodHRwID0gbmV3 IFhNTEh0dHBSZXF1ZXN0KCk7DQogICAgICAgICAgICB9IA0KICAgICAgICAgICAg ZWxzZSANCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAvLyBjb2RlIGZv ciBNUyBJbnRlcm5ldCBFeHBsb3Jlcg0KICAgICAgICAgICAgICAgIHRyeQ0KICAg ICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgeG1saHR0cCA9IG5l dyBBY3RpdmVYT2JqZWN0KCJNc3htbDIuWE1MSFRUUCIpOw0KICAgICAgICAgICAg ICAgIH0NCiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyb3IpDQogICAgICAgICAg ICAgICAgew0KICAgICAgICAgICAgICAgICAgICB4bWxodHRwID0gbmV3IEFjdGl2 ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIik7ICAgICAgICAgICAgICAgICAg ICANCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAg ICAgIGlmICh4bWxodHRwICE9IG51bGwpIA0KICAgICAgICAgICAgew0KICAgICAg ICAgICAgICAgIC8vIHNldHRpbmcgdGhlIGFjdGlvbiBhZnRlciByZWNlaXZpbmcg ZGF0YQ0KICAgICAgICAgICAgICAgIHhtbGh0dHAub25yZWFkeXN0YXRlY2hhbmdl ID0gZnVuY3Rpb24oKQ0KICAgICAgICAgICAgICAgIHsgDQogICAgICAgICAgICAg ICAgICAgIGlmICh4bWxodHRwLnJlYWR5U3RhdGUgPT0gNCkgIC8vIGNoZWNrIGlm IHJlY2VpdmluZyBhY3Rpb24gaXMgY29tcGxldGVkDQogICAgICAgICAgICAgICAg ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHhtbGh0dHAuc3RhdHVz ID09IDIwMCkgLy8gY2hlY2sgaWYgdGhlcmUgaXMgbm90IGFueSBlcnJvcg0KICAg ICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8vIHdvcmsgd2l0aCByZWNlaXZlZCBkYXRhIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8vIGFkZGluZyBsb2FkZWQgZGF0YSBpbnRvIGZpZWxk cw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4bWxSZXNwb25zZSA9 IG51bGw7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sUmVzcG9uc2Ug PSBsb2FkX3htbF9jb250ZW50X3N0cmluZyh4bWxodHRwLnJlc3BvbnNlVGV4dCk7 DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHhtbGh0dHAucmVzcG9u c2VYTUwgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeQ0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB4bWxSZXNwb25zZSA9IGxvYWRfeG1sX2NvbnRlbnRfc3RyaW5n KHhtbGh0dHAucmVzcG9uc2VUZXh0KTsNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9DQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHhtbFJlc3BvbnNlID0geG1saHR0cC5yZXNwb25zZVhNTDsN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVzdWx0c1hNTFtyZXN1bHRzWE1MLmxlbmd0aF0gPSB4bWxS ZXNwb25zZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzVGV4 dFtyZXN1bHRzVGV4dC5sZW5ndGhdID0geG1saHR0cC5yZXNwb25zZVRleHQ7DQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgLy8gYWRkaW5nIGRhdGEgaW50byB2YXJpYWJsZXMgZm9yIGxhc3Rs eSBsb2FkZWQgZGF0YQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RS ZXN1bHRYTUwgPSB4bWxSZXNwb25zZTsNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsYXN0UmVzdWx0VGV4dCA9IHhtbGh0dHAucmVzcG9uc2VUZXh0Ow0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIGNoYW5naW5nIGluZGljYXRvcnMNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXN1bHRSZWFkeSA9IHRydWU7DQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgbG9hZGluZ0RhdGEgPSBmYWxzZTsNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBy dW5uaW5nIG1ldGhvZCBmb3IgbG9hZGVkIGRhdGENCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiAobG9hZGluZ0Zyb250WzBdLmdldE1ldGhvZCgpLmluZGV4 T2YoIltEYXRhVGV4dF0iKSA+IC0xKQ0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChsb2Fk aW5nRnJvbnRbMF0uZ2V0TWV0aG9kKCkudG9TdHJpbmcoKS5yZXBsYWNlKCJbRGF0 YVRleHRdIixyZW1vdmVOZXdMaW5lcyhsYXN0UmVzdWx0VGV4dC5yZXBsYWNlKCdc XCcsJ1xcXFwnKSkpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZXZhbChsb2FkaW5nRnJvbnRbMF0uZ2V0TWV0aG9kKCkudG9TdHJpbmcoKS5yZXBs YWNlKCJbRGF0YVhNTF0iLCJsYXN0UmVzdWx0WE1MIikpOw0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtZXNzYWdlIGxvYWRpbmcg c3RhcnRlZA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dNZXNzYWdl KGxvYWRpbmdGcm9udFswXS5nZXRBZnRlckxvYWREZXNjcmlwdGlvbigpLCBhZnRl ckxvYWRNZXNzYWdlLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGxvYWRpbmdGcm9udFswXS5nZXRMb2FkaW5nVGV4dHNPYmooKSAhPSBudWxsID8g bG9hZGluZ0Zyb250WzBdLmdldExvYWRpbmdUZXh0c09iaigpIDogbG9hZGVyT2Jq ZWN0KSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgLy8gcmVtb3Zpbmcgbm93IGNvbXBsZXRseSB3b3Jr ZWQgb3V0IGl0ZW0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5n RnJvbnQuc3BsaWNlKDAsMSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhlY3V0aW5nIG5leHQg bG9hZGluZyBhY2NvcmRpbmcgdG8gdGhlIGxvYWRpbmcgZnJvbnQNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAobG9hZGluZ0Zyb250Lmxlbmd0aCA+IDAp DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnZXREYXRhQnlJdGVtcygpOw0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmQgb2Ygd29yayB3aXRo IHJlY2VpdmVkIGRhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICAgICAgICAgICAgICAg ICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAg ICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAv LyBlcnJvciBtZXNzYWdlIHdoZW4gd2UgYXJlIG5vdCBhYmxlIHRvIHRyYW5zZmVy IGRhdGENCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TWVzc2FnZShy ZXRyZWl2aW5nRGF0YUVycm9yTWVzc2FnZSwgZGVmYXVsdFJldHJlaXZpbmdEYXRh RXJyb3JNZXNzYWdlLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZXJyb3JPYmplY3QpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAg ICAgICANCiAgICAgICAgICAgICAgICAvLyBtZXNzYWdlIGxvYWRpbmcgc3RhcnRl ZA0KICAgICAgICAgICAgICAgIHNob3dNZXNzYWdlKGxvYWRpbmdGcm9udFswXS5n ZXRMb2FkaW5nRGVzY3JpcHRpb24oKSwgbG9hZGluZ01lc3NhZ2UsIA0KICAgICAg ICAgICAgICAgICAgICAobG9hZGluZ0Zyb250WzBdLmdldExvYWRpbmdUZXh0c09i aigpICE9IG51bGwgPyBsb2FkaW5nRnJvbnRbMF0uZ2V0TG9hZGluZ1RleHRzT2Jq KCkgOiBsb2FkZXJPYmplY3QpKTsNCiAgICAgICAgICAgICAgICAgICAgDQogICAg ICAgICAgICAgICAgLy8gc3RhcnQgZGF0YSB0cmFuc2Zlcg0KICAgICAgICAgICAg ICAgIHhtbGh0dHAub3BlbigiR0VUIiwgbG9hZGluZ0Zyb250WzBdLmdldFVybCgp LCB0cnVlKTsgLy8rIChsb2FkaW5nRnJvbnRbMF0uZ2V0VXJsKCkuaW5kZXhPZigi PyIpID4gLTEgPyAiJiIgOiAiPyIpICsgDQogICAgICAgICAgICAgICAgICAgIC8v ImRzYXNma2l1Z2JnYWR3cXRydXpvenM9IiArIE1hdGgucmFuZG9tKCkudG9TdHJp bmcoKSwgdHJ1ZSk7DQogICAgICAgICAgICAgICAgeG1saHR0cC5zZW5kKG51bGwp Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAg ew0KICAgICAgICAgICAgICAgIC8vIGdlbmVyYWwgZXJyb3IgbWVzc2FnZSB3aGVu IHRoZSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgZ2VuZXJhbCBBSkFYIG9iamVj dA0KICAgICAgICAgICAgICAgIHNob3dNZXNzYWdlKGdlbmVyYWxFcnJvck1lc3Nh Z2UsIGRlZmF1bHRHZW5lcmFsRXJyb3JNZXNzYWdlLCBlcnJvck9iamVjdCk7DQog ICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgdGhpcy5nZXREYXRh QnlJdGVtcyA9IGdldERhdGFCeUl0ZW1zOw0KICAgIA0KICAgIC8vIENvbnZlcnRz IHB1cmUgU3RyaW5nIGludG8gcGFyc2VhYmxlIFhNTCBvYmplY3QuIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIAlm dW5jdGlvbiBsb2FkX3htbF9jb250ZW50X3N0cmluZyh4bWxEYXRhKSB7DQoJCWlm ICh3aW5kb3cuQWN0aXZlWE9iamVjdCkgew0KCQkJLy9mb3IgSUUNCgkJCXhtbERv Yz1uZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTERPTSIpOw0KCQkJeG1s RG9jLmFzeW5jPSJmYWxzZSI7DQoJCQl4bWxEb2MubG9hZFhNTCh4bWxEYXRhKTsN CgkJCXJldHVybiB4bWxEb2M7DQoJCX0gZWxzZSBpZiAoZG9jdW1lbnQuaW1wbGVt ZW50YXRpb24gJiYgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1l bnQpIHsNCgkJCS8vZm9yIE1vemlsYQ0KCQkJcGFyc2VyPW5ldyBET01QYXJzZXIo KTsNCgkJCXhtbERvYz1wYXJzZXIucGFyc2VGcm9tU3RyaW5nKHhtbERhdGEsInRl eHQveG1sIik7DQoJCQlyZXR1cm4geG1sRG9jOw0KCQl9DQoJfQ0KCQ0KCS8vIFJl bW92ZXMgYWxsIGxpbmUgZW5kcyBmcm9tIHRoZSB0ZXh0LiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N CglmdW5jdGlvbiByZW1vdmVOZXdMaW5lcyh0ZXh0KQ0KCXsNCgkgICAgdmFyIHJl c3VsdCA9IHRleHQ7DQoJICAgIHdoaWxlIChyZXN1bHQuaW5kZXhPZigiXG4iKSA+ IC0xKQ0KCSAgICB7DQoJICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZSgi XG4iLCAiICIpOw0KCSAgICB9DQoJICAgIHJldHVybiByZXN1bHQ7DQoJfQ0KDQog ICAgDQogICAgLy8gTWV0aG9kIGZvciBzaG93aW5nIG1lc3NhZ2UuIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KICAgIC8vIC0gYWN0dWFsTWVzc2FnZSAgOiBTdHJpbmcg ICAgICAgICAgICAgICAgLSBhY3R1YWwgbWVzc2FnZSB0byBzaG93IC0gbm90IG9i bGlnYXRlZA0KICAgIC8vIC0gZGVmYXVsdE1lc3NhZ2UgOiBTdHJpbmcgICAgICAg ICAgICAgICAgLSBkZWZhdWx0IG1lc3NhZ2UgdG8gc2hvdyAtIG9ibGlnYXRlZA0K ICAgIC8vIC0gb2JqZWN0NE1lc3NhZ2UgOiBIVE1MRWxlbWVudCByZWZlcmVuY2Ug LSBIVE1MIGVsZW1lbnQgZm9yIHZpZXdpbmcgbWVzc2FnZSAtIG5vdCBvYmxpZ2F0 ZWQNCiAgICBmdW5jdGlvbiBzaG93TWVzc2FnZShhY3R1YWxNZXNzYWdlLCBkZWZh dWx0TWVzc2FnZSwgb2JqZWN0NE1lc3NhZ2UpDQogICAgew0KICAgICAgICBpZiAo YWN0dWFsTWVzc2FnZSA9PSBudWxsKQ0KICAgICAgICB7DQogICAgICAgICAgICBp ZiAob2JqZWN0NE1lc3NhZ2UgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAg ICAgICAgICAgICAvL2lmIChkZWZhdWx0TWVzc2FnZSAhPSBudWxsKSBhbGVydChk ZWZhdWx0TWVzc2FnZSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNl DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgb2JqZWN0NE1lc3NhZ2Uu aW5uZXJIVE1MID0gZGVmYXVsdE1lc3NhZ2U7DQogICAgICAgICAgICB9DQogICAg ICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAo YWN0dWFsTWVzc2FnZSAhPSAiIikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAg ICAgICBpZiAob2JqZWN0NE1lc3NhZ2UgPT0gbnVsbCkNCiAgICAgICAgICAgICAg ICB7DQogICAgICAgICAgICAgICAgICAgIC8vaWYgKGFjdHVhbE1lc3NhZ2UgIT0g bnVsbCkgYWxlcnQoYWN0dWFsTWVzc2FnZSk7DQogICAgICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAg ICAgICAgICAgICAgIG9iamVjdDRNZXNzYWdlLmlubmVySFRNTCA9IGFjdHVhbE1l c3NhZ2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAg ICB9DQogICAgfQ0KICAgIA0KICAgIC8vIE1ldGhvZCBmb3IgcmVhZGluZyBkYXRh IGZyb20gdGhlIFhNTCBvYmplY3QuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICAvLyAtIHhtbERhdGEgICAg ICAgIDogWG1sRGF0YU9iamVjdCAtIG9iamVjdCB3aXRoIGRhdGEgdG8gcmVhZA0K ICAgIC8vIC0gbWV0aG9kMkV4ZWN1dGUgOiBTdHJpbmcgICAgICAgIC0gc3RyaW5n IGNvbW1hbmQgZm9yIGV4ZWN1dGlvbiBvZiBtZXRob2QgdG8gd29ya2VkIG91dCBv bmUgaXRlbQ0KICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPT4gZm9yIGFjdHVhbCBpdGVtIGlzIHVzZWQgdHJhbnNsYXRpb24gbWFyayBb REFUQV0NCiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ID0+IGZvciBhY3R1YWwgaW5kZXggaXMgdXNlZCB0cmFuc2xhdGlvbiBtYXJrIFtJ TkRFWF0NCiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ID0+IGZvciBjb3VudCBvZiBpdGVtcyBpcyB1c2VkIHRyYW5zbGF0aW9uIG1hcmsg W0NPVU5UXQ0KICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPT4gZm9yIGF0dHJpYnV0ZSB2YWx1ZXMgaW4gZmllbGQgYnkgYXR0cmlidXRl cyBuYW1lcyBbQVRUUklCVVRFU10NCiAgICBmdW5jdGlvbiByZWFkWE1MUmVzdWx0 cyh4bWxEYXRhLCBjZW50cmFsSXRlbXNOYW1lLCBtZXRob2QyRXhlY3V0ZSwgbWV0 aG9kMkV4ZWN1dGU0Tm9JdGVtcykNCiAgICB7DQogICAgICAgIC8vYWxlcnQoKG5l dyBYTUxTZXJpYWxpemVyKCkpLnNlcmlhbGl6ZVRvU3RyaW5nKHhtbERhdGEpKTsN CiAgICAgICAgdmFyIGl0ZW1zID0geG1sRGF0YS5nZXRFbGVtZW50c0J5VGFnTmFt ZShjZW50cmFsSXRlbXNOYW1lKTsNCiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA+ IDApDQogICAgICAgIHsNCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg aXRlbXMubGVuZ3RoOyBpKyspDQogICAgICAgICAgICB7DQogICAgICAgICAgICAg ICAgdmFyIGF0dHJpYnV0ZXMgPSBuZXcgQXJyYXkoKTsNCiAgICAgICAgICAgICAg ICBmb3IgKHZhciB5ID0gMDsgeSA8IGl0ZW1zW2ldLmF0dHJpYnV0ZXMubGVuZ3Ro OyB5KyspDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBh dHRyaWJ1dGVzW2l0ZW1zW2ldLmF0dHJpYnV0ZXNbeV0ubmFtZV0gPSBpdGVtc1tp XS5hdHRyaWJ1dGVzW3ldLm5vZGVWYWx1ZTsNCiAgICAgICAgICAgICAgICB9DQog ICAgICAgICAgICAgICAgZXZhbChtZXRob2QyRXhlY3V0ZS5yZXBsYWNlKCJbREFU QV0iLCAiaXRlbXNbaV0iKS5yZXBsYWNlKCJbSU5ERVhdIiwiaSIpLnJlcGxhY2Uo IltDT1VOVF0iLCJpdGVtcy5sZW5ndGgiKS5yZXBsYWNlKCJbQVRUUklCVVRFU10i LCJhdHRyaWJ1dGVzIikpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAg ICAgIGVsc2UNCiAgICAgICAgew0KCQkJLy8gaWYgdGhlcmUgYXJlIG5vIHJlY29y ZHMgYW5kIG1ldGhvZCBmb3Igbm8tcmVjb3JkcyByZWFjdGlvbiBpcyBkZWZpbmVk LCBldmFsIHRoZSBtZXRob2QNCiAgICAgICAgICAgIGlmICgobWV0aG9kMkV4ZWN1 dGU0Tm9JdGVtcyAhPSBudWxsKSAmJiAobWV0aG9kMkV4ZWN1dGU0Tm9JdGVtcyAh PSAiIikpDQoJCQl7DQoJCQkJZXZhbChtZXRob2QyRXhlY3V0ZTROb0l0ZW1zKTsN CgkJCX0NCiAgICAgICAgfQ0KICAgIH0NCiAgICANCn0NCg0KLy8gKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioNCi8vIE9iamVjdCBmb3Igc3RvcmFnZSBvZiBkYXRh IGZvciBvbmUgaXRlbSBpbiBBSkFYIGxvYWRpbmcgZnJvbnQuDQovLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gLSBpdGVtVXJsICAgICAgICAgICAgICAg ICAgOiBTdHJpbmcgLSBmdWxsIFVSTCBsb2NhdGlvbiBvZiBkYXRhIHRvIGxvYWQN Ci8vIC0gaXRlbU1ldGhvZCAgICAgICAgICAgICAgIDogU3RyaW5nIC0gbWV0aG9k IHRvIGV4ZWN1dGUgYWZ0ZXIgc3VjZXNzZnVsIGxvYWRpbmcNCi8vIC0gaXRlbUxv YWRpbmdEZXNjcmlwdGlvbiAgIDogU3RyaW5nIC0gbG9hZGluZyBkZXNjcmlwdGlv bg0KLy8gLSBpdGVtQWZ0ZXJMb2FkRGVzY3JpcHRpb24gOiBTdHJpbmcgLSB0ZXh0 IHRvIHNob3cgYWZ0ZXIgbG9hZGluZw0KLy8gLSBpdGVtTG9hZGluZ1RleHRzT2Jq SWQgICAgOiBTdHJpbmcgLSBJZCBvZiBIVE1MIGVsZW1lbnQgZm9yIHZpZXdpbmcg b2YgbG9hZGluZyB0ZXh0cw0KLy8gLSBpdGVtRXJyb3JUZXh0c09iaklkICAgICAg OiBTdHJpbmcgLSBJZCBvZiBIVE1MIGVsZW1lbnQgZm9yIHZpZXdpbmcgb2YgZXJy b3IgdGV4dHMNCi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpmdW5jdGlv biBMb2FkaW5nRnJvbnRJdGVtKGl0ZW1VcmwsIGl0ZW1NZXRob2QsIGl0ZW1Mb2Fk aW5nRGVzY3JpcHRpb24sIGl0ZW1BZnRlckxvYWREZXNjcmlwdGlvbiwgaXRlbUxv YWRpbmdUZXh0c09iaklkLCANCiAgICBpdGVtRXJyb3JUZXh0c09iaklkLCBpdGVt TWV0aG9kNE5vSXRlbXMpDQp7DQogICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIC8vIEFUVFJJQlVURVMN CiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQoNCiAgICAvLyBhdHRyaWJ1dGVzDQogICAgdmFyIHVybCA9ICIi Ow0KICAgIHZhciBtZXRob2QgPSAiIjsNCiAgICB2YXIgbWV0aG9kNE5vSXRlbXMg PSAiIjsNCiAgICB2YXIgbG9hZGluZ0Rlc2NyaXB0aW9uID0gbnVsbDsNCiAgICB2 YXIgYWZ0ZXJMb2FkRGVzY3JpcHRpb24gPSBudWxsOw0KICAgIA0KICAgIHZhciBs b2FkaW5nVGV4dHNPYmogPSBudWxsOw0KICAgIHZhciBlcnJvclRleHRzT2JqID0g bnVsbDsNCiAgICANCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgLy8gQVRUUklCVVRFUyAtIGZpbGxp bmcgZnJvbSB0aGUgY29uc3RydWN0b3INCiAgICAvLyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgdGhpcy51cmwg PSAoaXRlbVVybCAhPSBudWxsID8gaXRlbVVybCA6IHRoaXMudXJsKTsNCiAgICB0 aGlzLm1ldGhvZCA9IChpdGVtTWV0aG9kICE9IG51bGwgPyBpdGVtTWV0aG9kIDog dGhpcy5tZXRob2QpOw0KICAgIHRoaXMubWV0aG9kNE5vSXRlbXMgPSAoaXRlbU1l dGhvZDROb0l0ZW1zICE9IG51bGwgPyBpdGVtTWV0aG9kNE5vSXRlbXMgOiB0aGlz Lm1ldGhvZDROb0l0ZW1zKTsNCiAgICB0aGlzLmxvYWRpbmdEZXNjcmlwdGlvbiA9 IChpdGVtTG9hZGluZ0Rlc2NyaXB0aW9uICE9IG51bGwgPyBpdGVtTG9hZGluZ0Rl c2NyaXB0aW9uIDogbG9hZGluZ0Rlc2NyaXB0aW9uKTsNCiAgICB0aGlzLmFmdGVy TG9hZERlc2NyaXB0aW9uID0gKGl0ZW1BZnRlckxvYWREZXNjcmlwdGlvbiAhPSBu dWxsID8gaXRlbUFmdGVyTG9hZERlc2NyaXB0aW9uIDogYWZ0ZXJMb2FkRGVzY3Jp cHRpb24pOw0KICAgIA0KICAgIHRoaXMubG9hZGluZ1RleHRzT2JqID0gKGl0ZW1M b2FkaW5nVGV4dHNPYmpJZCAhPSBudWxsID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoaXRlbUxvYWRpbmdUZXh0c09iaklkKSA6IGxvYWRpbmdUZXh0c09iaik7DQog ICAgdGhpcy5lcnJvclRleHRzT2JqID0gKGl0ZW1FcnJvclRleHRzT2JqSWQgIT0g bnVsbCA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGl0ZW1FcnJvclRleHRzT2Jq SWQpIDogZXJyb3JUZXh0c09iaik7DQogICAgDQogICAgLy8gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIC8vIE1F VEhPRFMgRk9SIEdFVFRJTkcgREFUQQ0KICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICANCiAgICAvLyBS ZXR1cm5zIHVybCBhdHRyaWJ1dGUuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQogICAgZnVuY3Rpb24gZ2V0VXJsKCkNCiAgICB7DQogICAgICAgIHJldHVybiB0 aGlzLnVybDsNCiAgICB9DQogICAgdGhpcy5nZXRVcmwgPSBnZXRVcmw7DQogICAg DQogICAgLy8gUmV0dXJucyBtZXRob2QgYXR0cmlidXRlLiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KICAgIGZ1bmN0aW9uIGdldE1ldGhvZCgpDQogICAgew0KICAg ICAgICByZXR1cm4gdGhpcy5tZXRob2Q7DQogICAgfQ0KICAgIHRoaXMuZ2V0TWV0 aG9kID0gZ2V0TWV0aG9kOw0KICAgIA0KICAgIC8vIFJldHVybnMgbWV0aG9kIHRv IGV4ZWN1dGUgd2hlbiB0aGVyZSBhcmUgbm8gbG9hZGVkIGl0ZW1zLiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICBmdW5jdGlvbiBn ZXRNZXRob2Q0Tm9JdGVtcygpDQogICAgew0KICAgICAgICByZXR1cm4gdGhpcy5t ZXRob2Q7DQogICAgfQ0KICAgIHRoaXMuZ2V0TWV0aG9kNE5vSXRlbXMgPSBnZXRN ZXRob2Q0Tm9JdGVtczsNCiAgICANCiAgICAvLyBSZXR1cm5zIGxvYWRpbmcgZGVz Y3JpcHRpb24gYXR0cmlidXRlLiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgZnVuY3Rpb24gZ2V0 TG9hZGluZ0Rlc2NyaXB0aW9uKCkNCiAgICB7DQogICAgICAgIHJldHVybiB0aGlz LmxvYWRpbmdEZXNjcmlwdGlvbjsNCiAgICB9DQogICAgdGhpcy5nZXRMb2FkaW5n RGVzY3JpcHRpb24gPSBnZXRMb2FkaW5nRGVzY3JpcHRpb247DQogICAgDQogICAg Ly8gUmV0dXJucyBhZnRlciBsb2FkIGRlc2NyaXB0aW9uLiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KICAgIGZ1bmN0aW9uIGdldEFmdGVyTG9hZERlc2NyaXB0aW9uKCkNCiAg ICB7DQogICAgICAgIHJldHVybiB0aGlzLmFmdGVyTG9hZERlc2NyaXB0aW9uOw0K ICAgIH0NCiAgICB0aGlzLmdldEFmdGVyTG9hZERlc2NyaXB0aW9uID0gZ2V0QWZ0 ZXJMb2FkRGVzY3JpcHRpb247DQogICAgDQogICAgLy8gUmV0dXJucyBvYmplY3Qg Zm9yIHNob3dpbmcgbG9hZGluZyB0ZXh0cy4gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIGZ1bmN0aW9u IGdldExvYWRpbmdUZXh0c09iaigpDQogICAgew0KICAgICAgICByZXR1cm4gdGhp cy5sb2FkaW5nVGV4dHNPYmo7DQogICAgfQ0KICAgIHRoaXMuZ2V0TG9hZGluZ1Rl eHRzT2JqID0gZ2V0TG9hZGluZ1RleHRzT2JqOw0KICAgIA0KICAgIC8vIFJldHVy bnMgb2JqZWN0IGZvciBzaG93aW5nIGVycm9yIHRleHRzLiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAg ICBmdW5jdGlvbiBnZXRFcnJvclRleHRzT2JqKCkNCiAgICB7DQogICAgICAgIHJl dHVybiB0aGlzLmVycm9yVGV4dHNPYmo7DQogICAgfQ0KICAgIHRoaXMuZ2V0RXJy b3JUZXh0c09iaiA9IGdldEVycm9yVGV4dHNPYmo7DQogICAgDQogICAgLy8gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K ICAgIC8vIE1FVEhPRFMgRk9SIFNFVFRJTkcgREFUQQ0KICAgIC8vIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICAN CiAgICAvLyBTZXRzIHVybCBhdHRyaWJ1dGUuIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQogICAgLy8gLSB2YWx1ZSA6IFN0cmluZyAtIG5ldyBVUkwNCiAg ICBmdW5jdGlvbiBzZXRVcmwodmFsdWUpDQogICAgew0KICAgICAgICB0aGlzLnVy bCA9IHZhbHVlOw0KICAgIH0NCiAgICB0aGlzLnNldFVybCA9IHNldFVybDsNCiAg ICANCiAgICAvLyBTZXRzIG1ldGhvZCBhdHRyaWJ1dGUuIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQogICAgLy8gLSB2YWx1ZSA6IFN0cmluZyAtIG5ldyBtZXRo b2QNCiAgICBmdW5jdGlvbiBzZXRNZXRob2QodmFsdWUpDQogICAgew0KICAgICAg ICB0aGlzLm1ldGhvZCA9IHZhbHVlOw0KICAgIH0NCiAgICB0aGlzLnNldE1ldGhv ZCA9IHNldE1ldGhvZDsNCiAgICANCiAgICAvLyBTZXRzIG1ldGhvZCBhdHRyaWJ1 dGUuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgLy8gLSB2YWx1ZSA6 IFN0cmluZyAtIG5ldyBtZXRob2QNCiAgICBmdW5jdGlvbiBzZXRNZXRob2Q0Tm9J dGVtcyh2YWx1ZSkNCiAgICB7DQogICAgICAgIHRoaXMubWV0aG9kNE5vSXRlbXMg PSB2YWx1ZTsNCiAgICB9DQogICAgdGhpcy5zZXRNZXRob2Q0Tm9JdGVtcyA9IHNl dE1ldGhvZDROb0l0ZW1zOw0KICAgIA0KICAgIC8vIFNldHMgbG9hZGluZyBkZXNj cmlwdGlvbiBhdHRyaWJ1dGUuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICAvLyAtIHZhbHVl IDogU3RyaW5nIC0gbmV3IGxvYWRpbmcgZGVzY3JpcHRpb24NCiAgICBmdW5jdGlv biBzZXRMb2FkaW5nRGVzY3JpcHRpb24odmFsdWUpDQogICAgew0KICAgICAgICB0 aGlzLmxvYWRpbmdEZXNjcmlwdGlvbiA9IHZhbHVlOw0KICAgIH0NCiAgICB0aGlz LnNldExvYWRpbmdEZXNjcmlwdGlvbiA9IHNldExvYWRpbmdEZXNjcmlwdGlvbjsN CiAgICANCiAgICAvLyBTZXRzIGFmdGVyIGxvYWQgZGVzY3JpcHRpb24uIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQogICAgLy8gLSB2YWx1ZSA6IFN0cmluZyAtIG5ldyBh ZnRlciBsb2FkIGRlc2NyaXB0aW9uDQogICAgZnVuY3Rpb24gc2V0QWZ0ZXJMb2Fk RGVzY3JpcHRpb24odmFsdWUpDQogICAgew0KICAgICAgICB0aGlzLmFmdGVyTG9h ZERlc2NyaXB0aW9uID0gdmFsdWU7DQogICAgfQ0KICAgIHRoaXMuc2V0QWZ0ZXJM b2FkRGVzY3JpcHRpb24gPSBzZXRBZnRlckxvYWREZXNjcmlwdGlvbjsNCiAgICAN CiAgICAvLyBTZXRzIG9iamVjdCBmb3Igc2hvd2luZyBsb2FkaW5nIHRleHRzLiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQogICAgLy8gLSB2YWx1ZSA6IEhUTUxFbGVtZW50IHJlZmVyZW5j ZSAtIG5ldyBvYmplY3QgZm9yIHNob3dpbmcgbG9hZGluZyB0ZXh0cw0KICAgIGZ1 bmN0aW9uIHNldExvYWRpbmdUZXh0c09iaih2YWx1ZSkNCiAgICB7DQogICAgICAg IHRoaXMubG9hZGluZ1RleHRzT2JqID0gdmFsdWU7DQogICAgfQ0KICAgIHRoaXMu c2V0TG9hZGluZ1RleHRzT2JqID0gc2V0TG9hZGluZ1RleHRzT2JqOw0KICAgIA0K ICAgIC8vIFNldHMgb2JqZWN0IGZvciBzaG93aW5nIGVycm9yIHRleHRzLiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCiAgICAvLyAtIHZhbHVlIDogSFRNTEVsZW1lbnQgcmVmZXJlbmNl IC0gbmV3IG9iamVjdCBmb3Igc2hvd2luZyBlcnJvciB0ZXh0cw0KICAgIGZ1bmN0 aW9uIHNldEVycm9yVGV4dHNPYmoodmFsdWUpDQogICAgew0KICAgICAgICB0aGlz LmVycm9yVGV4dHNPYmogPSB2YWx1ZTsNCiAgICB9DQogICAgdGhpcy5zZXRFcnJv clRleHRzT2JqID0gc2V0RXJyb3JUZXh0c09iajsNCiAgICANCn0NCg0KDQo= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=sport-leaguesData.js Content-Type: application/x-javascript; name=sport-leaguesData.js Content-Location: http://teplice.naseadresa.cz/0000-Global/js/sport-leaguesData.js Content-Transfer-Encoding: Base64 dmFyIHBpcGVDYWNoZSA9IDMwMDsNCnZhciBwaXBlV2VpZ2h0ID0gMzA7DQp2YXIg Z2xvYmFsU3lzdGVtVVJMID0gJ3Z5c2xlZGt5Lm5hc2VhZHJlc2EuY3onOw0KdmFy IHJlZ2lvbmFsU3lzdGVtVVJMID0gd2luZG93LmxvY2F0aW9uLnRvU3RyaW5nKCku cmVwbGFjZSgiaHR0cDovLyIsIiIpLnN1YnN0cigwLHdpbmRvdy5sb2NhdGlvbi50 b1N0cmluZygpLnJlcGxhY2UoImh0dHA6Ly8iLCIiKS5pbmRleE9mKCIvIikpOw0K DQp2YXIgcGFnaW5nID0gbmV3IEFycmF5KCk7DQpwYWdpbmdbMF0gPSAwOw0KDQpm dW5jdGlvbiBzZXRDb29raWUoY29va2llTmFtZSxjb29raWVWYWx1ZSxuRGF5cykg ew0KIHZhciB0b2RheSA9IG5ldyBEYXRlKCk7DQogdmFyIGV4cGlyZSA9IG5ldyBE YXRlKCk7DQogaWYgKG5EYXlzPT1udWxsIHx8IG5EYXlzPT0wKSBuRGF5cz0xOw0K IGV4cGlyZS5zZXRUaW1lKHRvZGF5LmdldFRpbWUoKSArIDM2MDAwMDAqMjQqbkRh eXMpOw0KIGRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZU5hbWUrIj0iK2VzY2FwZShj b29raWVWYWx1ZSkNCiAgICAgICAgICAgICAgICAgKyAiO2V4cGlyZXM9IitleHBp cmUudG9HTVRTdHJpbmcoKTsNCn0NCmZ1bmN0aW9uIGdldENvb2tpZShjX25hbWUp DQp7DQppZiAoZG9jdW1lbnQuY29va2llLmxlbmd0aD4wKQ0KICB7DQogIGNfc3Rh cnQ9ZG9jdW1lbnQuY29va2llLmluZGV4T2YoY19uYW1lICsgIj0iKTsNCiAgaWYg KGNfc3RhcnQhPS0xKQ0KICAgIHsNCiAgICBjX3N0YXJ0PWNfc3RhcnQgKyBjX25h bWUubGVuZ3RoKzE7DQogICAgY19lbmQ9ZG9jdW1lbnQuY29va2llLmluZGV4T2Yo IjsiLGNfc3RhcnQpOw0KICAgIGlmIChjX2VuZD09LTEpIGNfZW5kPWRvY3VtZW50 LmNvb2tpZS5sZW5ndGg7DQogICAgcmV0dXJuIHVuZXNjYXBlKGRvY3VtZW50LmNv b2tpZS5zdWJzdHJpbmcoY19zdGFydCxjX2VuZCkpOw0KICAgIH0NCiAgfQ0KcmV0 dXJuICIiOw0KfQ0KLyoNCiAqIEdlbmVyYXRlcyBhbiB1cmwgYmFzZWQgb24gcGFy YW1ldGVycyANCiAqIEBwYXJhbSB0ZW1wbGF0ZSB8IHRlbXBsYXRlIHRvIGNhbGwg aW4gdXJsDQogKiBAcGFyYW0gbGVhZ3VlIHwgbGVhZ3VlSWQgdG8gY2FsbCBpbiB1 cmwNCiAqIEBwYXJhbSB0ZWFtIHwgdGVhbUlkIHRvIGNhbGwgaW4gdXJsDQogKiBA cmV0dXJuIGxpbmsgfCB0aGUgdXJsIGFkZHJlc3MNCiAqDQogKi8NCg0KZnVuY3Rp b24gZ2VuZXJhdGVVUkwodGVtcGxhdGUsIGxlYWd1ZSwgbGVhZ3VlTmFtZSwgdGVh bSwgdGVhbU5hbWUpDQp7DQoJdmFyIGRhc2ggPSAvLS0rL2c7DQoJaWYobGVhZ3Vl ID09IG51bGwgfHwgbGVhZ3VlID09ICJ1bmRlZmluZWQiKQ0KCXsNCgkJbGVhZ3Vl VVJJID0gIiI7DQoJfSBlbHNlIHsgDQoJCWlmKGxlYWd1ZU5hbWU9PW51bGwgfHwg bGVhZ3VlTmFtZSA9PSAidW5kZWZpbmVkIikNCgkJew0KCQkJLy9pZihlY2hvTGVh Z3VlTmFtZUJ5SWQobGVhZ3VlKT09IiIpIHtnZXRMZWFndWVOYW1lQnlJZChsZWFn dWUpO30NCgkJCWxlYWd1ZVVSSSA9ICIvYXQiK2xlYWd1ZSsiLSIrc3RydHIoZWNo b0xlYWd1ZU5hbWVCeUlkKGxlYWd1ZSksICLBxMjHz8nMy83S09bYio3a2dzdjuHk 6Ofv6ezr7fLz9vianfr5/P2eIC4iLCAiQUFDQ0RFRUVJTk9PUlNUVVVVWVphYWNj ZGVlZWlub29yc3R1dXV5ei0tIikucmVwbGFjZShkYXNoLCItIik7CQkNCgkJfSBl bHNlIHsNCgkJDQoJCQlsZWFndWVVUkkgPSAiL2F0IitsZWFndWUrIi0iK3N0cnRy KGxlYWd1ZU5hbWUsICLBxMjHz8nMy83S09bYio3a2dzdjuHk6Ofv6ezr7fLz9via nfr5/P2eIC4iLCAiQUFDQ0RFRUVJTk9PUlNUVVVVWVphYWNjZGVlZWlub29yc3R1 dXV5ei0tIikucmVwbGFjZShkYXNoLCItIik7CQkNCgkJfQkJDQoJfQ0KCWlmKHRl YW0gPT0gbnVsbCB8fCB0ZWFtID09ICJ1bmRlZmluZWQiKQ0KCXsNCgkJdGVhbVVS SSA9ICIiOw0KCX0gZWxzZSB7IA0KCQlpZih0ZWFtTmFtZT09bnVsbCB8fCB0ZWFt TmFtZSA9PSAidW5kZWZpbmVkIikNCgkJew0KCQkJLy9pZihlY2hvVGVhbU5hbWVC eUlkKHRlYW0pPT0iIikge2dldFRlYW1OYW1lQnlJZCh0ZWFtKTt9DQoJCQl0ZWFt VVJJID0gIi94Iit0ZWFtKyItIitzdHJ0cihlY2hvVGVhbU5hbWVCeUlkKHRlYW0p LCAiwcTIx8/JzMvN0tPW2IqN2tnc3Y7h5Ojn7+ns6+3y8/b4mp36+fz9niAuIiwg IkFBQ0NERUVFSU5PT1JTVFVVVVlaYWFjY2RlZWVpbm9vcnN0dXV1eXotLSIpLnJl cGxhY2UoZGFzaCwiLSIpOwkJDQoJCX0gZWxzZSB7DQoJCQl0ZWFtVVJJID0gIi94 Iit0ZWFtKyItIitzdHJ0cih0ZWFtTmFtZSwgIsHEyMfPyczLzdLT1tiKjdrZ3N2O 4eTo5+/p7Ovt8vP2+Jqd+vn8/Z4gLiIsICJBQUNDREVFRUlOT09SU1RVVVVZWmFh Y2NkZWVlaW5vb3JzdHV1dXl6LS0iKS5yZXBsYWNlKGRhc2gsIi0iKTsJCQ0KCQl9 DQoJfQ0KDQoJc3dpdGNoKHRlbXBsYXRlKQ0KCXsNCgkJY2FzZSAiNDM3MSI6DQoJ CQl0ZW1wbGF0ZSs9Ii1ha3R1YWxuaS12eXNsZWRreSI7DQoJCWJyZWFrOw0KCQlj YXNlICI0MzgxIjoNCgkJCXRlbXBsYXRlKz0iLWthcnR5IjsNCgkJYnJlYWs7DQoJ CWNhc2UgIjQzODMiOg0KCQkJdGVtcGxhdGUrPSItc2V6bmFtLXR5bXUiOw0KCQli cmVhazsNCgkJY2FzZSAiNDM4NyI6DQoJCQl0ZW1wbGF0ZSs9Ii1kZXRhaWwtdHlt dSI7DQoJCWJyZWFrOw0KCQljYXNlICI0NDI1IjoNCgkJCXRlbXBsYXRlKz0iLXZz ZWNobnktbGlneSI7DQoJCWJyZWFrOw0KCQljYXNlICI0NDI3IjoNCgkJCXRlbXBs YXRlKz0iLWxvcy1zb3V0ZXplIjsNCgkJYnJlYWs7DQoJCWNhc2UgIjQ0MjgiOg0K CQkJdGVtcGxhdGUrPSItdnlzbGVka3kta29sLXNvdXRlemUiOw0KCQlicmVhazsN CgkJY2FzZSAiNDQzMCI6DQoJCQl0ZW1wbGF0ZSs9Ii1zdHJlbGNpIjsNCgkJYnJl YWs7DQoJCWNhc2UgIjQ0NjAiOg0KCQkJdGVtcGxhdGUrPSItb2JqZWRuYXZrYS12 eXNsZWRrdSI7DQoJCWJyZWFrOw0KCQlkZWZhdWx0Og0KCQkJdGVtcGxhdGUrPSIt dnlzbGVka292eS1zZXJ2aXMiOw0KCX0NCg0KCQ0KCXZhciBVUkwgPSAnaHR0cDov LycrZ2xvYmFsU3lzdGVtVVJMKycvY3ovcycrdGVtcGxhdGUrbGVhZ3VlVVJJK3Rl YW1VUkk7DQoJcmV0dXJuIFVSTDsNCn0NCg0KLyogVGVzdHMgaWYgc29tZSBmdW5j dGlvbiBhdHRyaWJ1dGUgZ2l2ZW4gaXMgbnVsbCBvciBlbXB0eSBhbmQgZ2VuZXJh dGVzIHNpbmdsZSBVUkwgYWRkcmVzcyBwYXJhbWV0ZXIgZGl2aWRlZCBieSAnZGl2 aWRlcicgcGFyYW0NCiAqIEBwYXJhbSBhdHRyIHwgdGhlIGF0dHJpYnV0ZSBvZiBm dW5jdGlvbg0KICogQHBhcmFtIGF0dHJOYW1lIHwgcGFyYW1ldGVyIG5hbWUgdXNl ZCBpbiBmdXJ0aGVyIFVSTA0KICogQHBhcmFtIGRpdmlkZXIgfCBkaXZpZGVyIHRv IHVzZSBpbiBVUkwgYWRkcmVzcyAoZS5nLiBhbXBlcnNhbmQgb3IgcXVlc3Rpb24g bWFyaykNCiAqDQogKi8gDQpmdW5jdGlvbiB0ZXN0QXR0ck51bGwoYXR0cixhdHRy TmFtZSxkaXZpZGVyKSB7DQoJdmFyIHRlc3Q7DQoJaWYoYXR0ciA9PSBudWxsIHx8 IGF0dHIgPT0gInVuZGVmaW5lZCIpIHsNCgkJdGVzdCA9IGZhbHNlOw0KCQlyZXR1 cm4gIiI7DQoJfQ0KCWVsc2UNCgkJdGVzdCA9IHRydWU7CQkJCQkJDQoJdmFyIHJl dCA9IGRpdmlkZXIgKyAoICh0ZXN0ID09IHRydWUpPyAoYXR0ck5hbWUgKyAiPSIg KyBhdHRyKSA6ICIiICk7CQ0KCXJldHVybiByZXQ7DQp9DQoNCmZ1bmN0aW9uIGdl bmVyYXRlU2lkZUJveENvdW50cnlMZWFndWVzIChmaWx0ZXIsIGVsZW1lbnRUb0V4 cG9ydCkgew0KCWNvbnRlbnRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVs ZW1lbnRUb0V4cG9ydCk7DQoJbG9hZFNwb3J0TGVhZ3VlcyhmaWx0ZXIsbnVsbCxu dWxsLG51bGwsY29udGVudEVsLmlkLHRydWUsIiIpOw0KfQ0KLy9UT0RPOiBva29t ZW50b3ZhdCB2c2V0a3kgbWV0b2R5DQpmdW5jdGlvbiBnZW5lcmF0ZVNwb3J0TGVh Z3VlczAwMyAoZmlsdGVyQWN0aXZlLCBmaWx0ZXIsIGZpbHRlcjIsbGVhZ3VlVHlw ZSkgew0KCWNvbnRlbnRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcG9y dExlYWd1ZU1haW5Db250ZW50Iik7DQoJaWYoZmlsdGVyQWN0aXZlKSB7IA0KDQoJ CW91dHB1dFRlbXBsYXRlID0JJzxkaXYgY2xhc3M9ImNvbG9yZWRQYW5lbDAzIj4n ICsNCgkJCQkJCQkJJwk8ZGl2IGNsYXNzPSJ0b3BDb3JuZXJzIj48c3BhbiBjbGFz cz0ibGVmdCI+Jm5ic3A7PC9zcGFuPjxzcGFuIGNsYXNzPSJyaWdodCI+Jm5ic3A7 PC9zcGFuPjwvZGl2PicgKw0KCQkJCQkJCQknCTxoMz5WeWJyYW7pIHNvdXTsnmU6 PC9oMz4nICsgDQoJCQkJCQkJCScJPGRpdiBjbGFzcz0iYm90dG9tQ29ybmVycyI+ PHNwYW4gY2xhc3M9ImxlZnQiPiZuYnNwOzwvc3Bhbj48c3BhbiBjbGFzcz0icmln aHQiPiZuYnNwOzwvc3Bhbj48L2Rpdj4nICsNCgkJCQkJCQknPC9kaXY+JyArDQoJ CQkJCQkJJzxkaXYgaWQ9ImZpbHRlclNlbGVjdGVkTGVhZ3VlcyI+PC9kaXY+JzsN CgkJY29udGVudEVsLmlubmVySFRNTCA9IG91dHB1dFRlbXBsYXRlOw0KCQkNCgkJ Ly9hbGVydCgiZjEgPSAiK2ZpbHRlcik7DQoJCS8vYWxlcnQoImYyID0gIitmaWx0 ZXIyKTsNCgkJdmFyIGYgPSAiMzoiK2ZpbHRlcjI7DQoJCWlmKGZpbHRlcjIgPT0g bnVsbCB8fCBmaWx0ZXIyID09ICJ1bmRlZmluZWQiIHx8IGZpbHRlcjIgPT0gIiIp DQoJCQlmID0gIjI6IitmaWx0ZXI7DQoJCS8qDQoJCXZhciBmID0gIjI6IitmaWx0 ZXI7DQoJCWlmKGZpbHRlciA9PSBudWxsIHx8IGZpbHRlciA9PSAidW5kZWZpbmVk IiB8fCBmaWx0ZXIgPT0gIiIpDQoJCQlmID0gIjM6IitmaWx0ZXIyOw0KCQkqLw0K CQkvL2FsZXJ0KGZpbHRlcik7DQoJCS8vYWxlcnQoZmlsdGVyMik7DQoJCQ0KCQll bDEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlsdGVyU2VsZWN0ZWRMZWFn dWVzIik7DQoJCWlmKGVsMSAgIT0gbnVsbCkNCgkJCWxvYWRTcG9ydExlYWd1ZXMo ZixudWxsLG51bGwsbnVsbCxlbDEuaWQpOw0KCQkNCgkJDQoJfSBlbHNlIHsNCgkg ICAgc3dpdGNoIChsZWFndWVUeXBlKXsNCgkgICAgICAgIGNhc2UgIjEiOgkJCQ0K CQkgICAgICAgIG91dHB1dFRlbXBsYXRlID0JJzxkaXYgY2xhc3M9ImNvbG9yZWRQ YW5lbDAzIj4nICsNCgkJICAgICAgICAJCQkJCScJPGRpdiBjbGFzcz0idG9wQ29y bmVycyI+PHNwYW4gY2xhc3M9ImxlZnQiPiZuYnNwOzwvc3Bhbj48c3BhbiBjbGFz cz0icmlnaHQiPiZuYnNwOzwvc3Bhbj48L2Rpdj4nICsNCgkJCQkJCQkJCScJPGgz PkNlbG9zdOF0bu0gc291dOyeZTwvaDM+JyArIA0KCQkJCQkJCQkJJwk8ZGl2IGNs YXNzPSJib3R0b21Db3JuZXJzIj48c3BhbiBjbGFzcz0ibGVmdCI+Jm5ic3A7PC9z cGFuPjxzcGFuIGNsYXNzPSJyaWdodCI+Jm5ic3A7PC9zcGFuPjwvZGl2PicgKw0K CQkJCQkJCQkJJzwvZGl2PicgKw0KCQkJCQkJCSAgICAgICAgJzxkaXYgaWQ9ImNv dW50cnlXaWRlTGVhZ3VlcyI+PC9kaXY+JzsNCgkJCQljb250ZW50RWwuaW5uZXJI VE1MID0gb3V0cHV0VGVtcGxhdGU7DQoJCQkgICAgDQoJCQkgICAgZWwxID0gZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvdW50cnlXaWRlTGVhZ3VlcyIpOw0KCQkg ICAgICAgIGlmKGVsMSAgIT0gbnVsbCkNCgkJCSAgICAgICAgbG9hZFNwb3J0TGVh Z3VlcygiMSIsbnVsbCxudWxsLG51bGwsZWwxLmlkKTsgICANCgkJCSAgICBicmVh azsNCgkJCWNhc2UgIjIiOg0KCQkJICAgIG91dHB1dFRlbXBsYXRlID0JJzxkaXYg Y2xhc3M9ImNvbG9yZWRQYW5lbDAzIj4nICsNCgkJCQkJCQkJCScJPGRpdiBjbGFz cz0idG9wQ29ybmVycyI+PHNwYW4gY2xhc3M9ImxlZnQiPiZuYnNwOzwvc3Bhbj48 c3BhbiBjbGFzcz0icmlnaHQiPiZuYnNwOzwvc3Bhbj48L2Rpdj4nICsNCgkJCQkJ CQkJCScJPGgzPktyYWpza+kgc291dOyeZTwvaDM+JyArIA0KCQkJCQkJCQkJJwk8 ZGl2IGNsYXNzPSJib3R0b21Db3JuZXJzIj48c3BhbiBjbGFzcz0ibGVmdCI+Jm5i c3A7PC9zcGFuPjxzcGFuIGNsYXNzPSJyaWdodCI+Jm5ic3A7PC9zcGFuPjwvZGl2 PicgKw0KCQkJCQkJCQkJJzwvZGl2PicgKw0KCQkJCQkJCSAgICAgICAgJzxkaXYg aWQ9ImRpc3RyaWN0V2lkZUxlYWd1ZXMiPjwvZGl2Pic7DQoJCSAgICAgICAgY29u dGVudEVsLmlubmVySFRNTCA9IG91dHB1dFRlbXBsYXRlOw0KCQkgICAgICAgIA0K CQkgICAgICAgIGVsMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXN0cmlj dFdpZGVMZWFndWVzIik7DQoJCSAgICAgICAgaWYoZWwxICAhPSBudWxsKQ0KCQkJ ICAgICAgICBsb2FkU3BvcnRMZWFndWVzKGZpbHRlcixudWxsLG51bGwsbnVsbCxl bDEuaWQpOwkJDQoJCSAgICAgICAgYnJlYWs7DQoJCSAgICBjYXNlICIzIjoNCgkJ ICAgICAgICBvdXRwdXRUZW1wbGF0ZSA9CSc8ZGl2IGNsYXNzPSJjb2xvcmVkUGFu ZWwwMyI+JyArDQoJCQkJCQkJCQknCTxkaXYgY2xhc3M9InRvcENvcm5lcnMiPjxz cGFuIGNsYXNzPSJsZWZ0Ij4mbmJzcDs8L3NwYW4+PHNwYW4gY2xhc3M9InJpZ2h0 Ij4mbmJzcDs8L3NwYW4+PC9kaXY+JyArDQoJCQkJCQkJCQknCTxoMz5Pa3Jlc27t IHNvdXTsnmU8L2gzPicgKyANCgkJCQkJCQkJCScJPGRpdiBjbGFzcz0iYm90dG9t Q29ybmVycyI+PHNwYW4gY2xhc3M9ImxlZnQiPiZuYnNwOzwvc3Bhbj48c3BhbiBj bGFzcz0icmlnaHQiPiZuYnNwOzwvc3Bhbj48L2Rpdj4nICsNCgkJCQkJCQkJCSc8 L2Rpdj4nICsNCgkJCQkJCQkgICAgICAgICc8ZGl2IGlkPSJjYW50b25XaWRlTGVh Z3VlcyI+PC9kaXY+JzsNCgkJICAgICAgICBjb250ZW50RWwuaW5uZXJIVE1MID0g b3V0cHV0VGVtcGxhdGU7DQoJCSAgICAgICAgZWwxID0gZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoImNhbnRvbldpZGVMZWFndWVzIik7DQoJCSAgICAgICAgaWYoZWwx ICAhPSBudWxsKQ0KCQkJICAgICAgICBsb2FkU3BvcnRMZWFndWVzKGZpbHRlcjIs bnVsbCxudWxsLG51bGwsZWwxLmlkKTsNCgkJICAgICAgICBicmVhazsNCgkJICAg IGRlZmF1bHQ6DQoJCSAgICAgICAgb3V0cHV0VGVtcGxhdGUgPQknPGRpdiBjbGFz cz0iY29sb3JlZFBhbmVsMDMiPicgKw0KCQkJCQkJCQkJJwk8ZGl2IGNsYXNzPSJ0 b3BDb3JuZXJzIj48c3BhbiBjbGFzcz0ibGVmdCI+Jm5ic3A7PC9zcGFuPjxzcGFu IGNsYXNzPSJyaWdodCI+Jm5ic3A7PC9zcGFuPjwvZGl2PicgKw0KCQkJCQkJCQkJ Jwk8aDM+Q2Vsb3N04XRu7SBzb3V07J5lPC9oMz4nICsgDQoJCQkJCQkJCQknCTxk aXYgY2xhc3M9ImJvdHRvbUNvcm5lcnMiPjxzcGFuIGNsYXNzPSJsZWZ0Ij4mbmJz cDs8L3NwYW4+PHNwYW4gY2xhc3M9InJpZ2h0Ij4mbmJzcDs8L3NwYW4+PC9kaXY+ JyArDQoJCQkJCQkJCQknPC9kaXY+JyArDQoJCQkJCQkJICAgICAgICAnPGRpdiBp ZD0iY291bnRyeVdpZGVMZWFndWVzIj48L2Rpdj4nICsNCgkJCQkJCQkgICAgICAg ICc8ZGl2IGNsYXNzPSJkb3R0ZWRMaW5lIj48L2Rpdj4nICsNCgkJCQkJCQkgICAg ICAgICc8ZGl2IGNsYXNzPSJjb2xvcmVkUGFuZWwwMyI+JyArDQoJCQkJCQkJCQkn CTxkaXYgY2xhc3M9InRvcENvcm5lcnMiPjxzcGFuIGNsYXNzPSJsZWZ0Ij4mbmJz cDs8L3NwYW4+PHNwYW4gY2xhc3M9InJpZ2h0Ij4mbmJzcDs8L3NwYW4+PC9kaXY+ JyArDQoJCQkJCQkJCQknCTxoMz5LcmFqc2vpIHNvdXTsnmU8L2gzPicgKyANCgkJ CQkJCQkJCScJPGRpdiBjbGFzcz0iYm90dG9tQ29ybmVycyI+PHNwYW4gY2xhc3M9 ImxlZnQiPiZuYnNwOzwvc3Bhbj48c3BhbiBjbGFzcz0icmlnaHQiPiZuYnNwOzwv c3Bhbj48L2Rpdj4nICsNCgkJCQkJCQkJCSc8L2Rpdj4nICsNCgkJCQkJCQkgICAg ICAgICc8ZGl2IGlkPSJkaXN0cmljdFdpZGVMZWFndWVzIj48L2Rpdj4nICsNCgkJ CQkJCQkgICAgICAgICc8ZGl2IGNsYXNzPSJkb3R0ZWRMaW5lIj48L2Rpdj4nICsN CgkJCQkJCQkgICAgICAgICc8ZGl2IGNsYXNzPSJjb2xvcmVkUGFuZWwwMyI+JyAr DQoJCQkJCQkJCQknCTxkaXYgY2xhc3M9InRvcENvcm5lcnMiPjxzcGFuIGNsYXNz PSJsZWZ0Ij4mbmJzcDs8L3NwYW4+PHNwYW4gY2xhc3M9InJpZ2h0Ij4mbmJzcDs8 L3NwYW4+PC9kaXY+JyArDQoJCQkJCQkJCQknCTxoMz5Pa3Jlc27tIHNvdXTsnmU8 L2gzPicgKyANCgkJCQkJCQkJCScJPGRpdiBjbGFzcz0iYm90dG9tQ29ybmVycyI+ PHNwYW4gY2xhc3M9ImxlZnQiPiZuYnNwOzwvc3Bhbj48c3BhbiBjbGFzcz0icmln aHQiPiZuYnNwOzwvc3Bhbj48L2Rpdj4nICsNCgkJCQkJCQkJCSc8L2Rpdj4nICsN CgkJCQkJCQkgICAgICAgICc8ZGl2IGlkPSJjYW50b25XaWRlTGVhZ3VlcyI+PC9k aXY+JzsNCgkJICAgICAgICBjb250ZW50RWwuaW5uZXJIVE1MID0gb3V0cHV0VGVt cGxhdGU7DQoJCSAgICAgICAgDQoJCSAgICAgICAgZWwxID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoImNvdW50cnlXaWRlTGVhZ3VlcyIpOw0KCQkgICAgICAgIC8v CWFsZXJ0KGVsMS5pZCk7DQoJCSAgICAgICAgaWYoZWwxICAhPSBudWxsKQ0KCQkJ ICAgICAgICBsb2FkU3BvcnRMZWFndWVzKCIxIixudWxsLG51bGwsbnVsbCxlbDEu aWQpOw0KICAgICAgICAJCQ0KICAgICAgICAJCWVsMSA9IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCJkaXN0cmljdFdpZGVMZWFndWVzIik7DQoJCSAgICAgICAgLy8J YWxlcnQoZWwxLmlkKTsNCgkJICAgICAgICBpZihlbDEgICE9IG51bGwpDQoJCSAg ICAgICAgICAgIGxvYWRTcG9ydExlYWd1ZXMoZmlsdGVyLG51bGwsbnVsbCxudWxs LGVsMS5pZCk7DQoJCSAgICAgICAgDQoJCSAgICAgICAgZWwxID0gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoImNhbnRvbldpZGVMZWFndWVzIik7DQoJCSAgICAgICAg Ly8JYWxlcnQoZWwxLmlkKTsNCgkJICAgICAgICBpZihlbDEgICE9IG51bGwpDQoJ CSAgICAgICAgICAgIGxvYWRTcG9ydExlYWd1ZXMoZmlsdGVyMixudWxsLG51bGws bnVsbCxlbDEuaWQpOw0KCQkgICAgICAgIGJyZWFrOw0KCQl9DQoJfQkNCn0NCg0K ZnVuY3Rpb24gZ2VuZXJhdGVMZWFndWVEZXRhaWwwMDQgKGxlYWd1ZUlkLCBsZWFn dWVOYW1lKSB7CQ0KCWNvbnRlbnRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCJzcG9ydExlYWd1ZU1haW5Db250ZW50Iik7DQoJaWYobGVhZ3VlSWQgPT0gbnVs bCB8fCBsZWFndWVJZCA9PSAidW5kZWZpbmVkIikgew0KCQkvL1RPRE86IGFrbyBz YSB0byBzcHJhdmEgYWsgbmV6YWRhbWUgSUQgbGlneSBbeG1sIHNhIG5ldnlnZW5l cnVqZV0NCgl9IGVsc2UgewkJDQoJDQoJCWNvbnRlbnRFbC5pbm5lckhUTUwgKz0n PGRpdiBpZD0ic3BvcnRMZWFndWVEZXRhaWwiPicgKyANCgkJCQkJCQknCTxkaXYg aWQ9ImxlYWd1ZVRoaXNSb3VuZFRhYmxlIj48L2Rpdj4nICsgDQoJCQkJCQkJJwk8 YSBjbGFzcz0iYWxsSW5mb0xpbmsiIGhyZWY9IicrZ2VuZXJhdGVVUkwoIjQ0Mjgi LGxlYWd1ZUlkLGxlYWd1ZU5hbWUsbnVsbCxudWxsKSsnIj52/XNsZWRreSBw+GVk Y2jhemVq7WPtY2gga29sPC9hPicgKw0KCQkJCQkJCScJPGRpdiBjbGFzcz0iZG90 dGVkTGluZSI+PC9kaXY+JyArDQoJCQkJCQkJJwk8ZGl2IGlkPSJ0aGlzTGVhZ3Vl UmVzdWx0c1RhYmxlIj48L2Rpdj4nICsJDQoJCQkJCQkJJwk8YSBjbGFzcz0iYWxs SW5mb0xpbmsiIGhyZWY9IicrZ2VuZXJhdGVVUkwoIjQ0MjgiLGxlYWd1ZUlkLGxl YWd1ZU5hbWUsbnVsbCxudWxsKSsnIj52/XNsZWRreSB2mmVjaCBvZGVocmFu/WNo IGtvbDwvYT4nICsNCgkJCQkJCQknCTxkaXYgY2xhc3M9ImRvdHRlZExpbmUiPjwv ZGl2PicgKwkJCQkNCgkJCQkJCQknCTxkaXYgaWQ9InRoaXNMZWFndWVTaG9vdGVy c1RhYmxlIj48L2Rpdj4nICsJDQoJCQkJCQkJJwk8ZGl2IGlkPSJsZWFndWVOZXh0 Um91bmRUYWJsZSI+PC9kaXY+JyArDQoJCQkJCQkJJwk8ZGl2IGNsYXNzPSJkb3R0 ZWRMaW5lIj48L2Rpdj4nICsNCgkJCQkJCQknPC9kaXY+JzsNCgkJCQkJCQkJCQ0K CQkNCgkJLy9lbDEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BvcnRMZWFn dWVEZXRhaWwiKTsNCgkJLy9pZihlbDEgIT0gbnVsbCkNCgkJbG9hZFRlcm1zT3JS ZXN1bHRzKGxlYWd1ZUlkLCIxIiwxLCIyIixudWxsLG51bGwsImxlYWd1ZVRoaXNS b3VuZFRhYmxlIixmYWxzZSwgZmFsc2UsIGZhbHNlKTsNCgkJbG9hZFJlc3VsdFRh YmxlKGxlYWd1ZUlkLCIxIiwxLG51bGwsInRoaXNMZWFndWVSZXN1bHRzVGFibGUi LG51bGwpOw0KCQlsb2FkU2hvb3RlcnMoImwiK2xlYWd1ZUlkLCIxIiwxLG51bGws bnVsbCxudWxsLG51bGwsInRoaXNMZWFndWVTaG9vdGVyc1RhYmxlIixmYWxzZSxm YWxzZSk7CQ0KCQlsb2FkVGVybXNPclJlc3VsdHMobGVhZ3VlSWQrIjowIiwiMSIs MSwiMiIsbnVsbCxudWxsLCJsZWFndWVOZXh0Um91bmRUYWJsZSIsdHJ1ZSwgZmFs c2UsIGZhbHNlKTsJDQoJfQ0KfQ0KDQpmdW5jdGlvbiBnZW5lcmF0ZUxlYWd1ZVJv dW5kVGVybXMwMDUgKGxlYWd1ZUlkLGxlYWd1ZU5hbWUpew0KCWNvbnRlbnRFbCA9 IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcG9ydExlYWd1ZU1haW5Db250ZW50 Iik7DQoJDQoJaWYobGVhZ3VlSWQgPT0gbnVsbCB8fCBsZWFndWVJZCA9PSAidW5k ZWZpbmVkIikgew0KCQkvL1RPRE86IGFrbyBzYSB0byBzcHJhdmEgYWsgbmV6YWRh bWUgSUQgbGlneSBbeG1sIHNhIG5ldnlnZW5lcnVqZV0NCgl9IGVsc2UgewkJCQkN CgkJDQoJCWNvbnRlbnRFbC5pbm5lckhUTUwgKz0JJzxkaXYgaWQ9ImxlYWd1ZVJv dW5kVGVybXMiPicgKyANCgkJCQkJCQkJJzwvZGl2Pic7CQkNCgkJZWwxID0gZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxlYWd1ZVJvdW5kVGVybXMiKTsJCQkJDQoJ CWlmKGVsMSAhPSBudWxsKSB7DQoJCQlsb2FkVGVybXNPclJlc3VsdHMobGVhZ3Vl SWQrIjotMyIsIjEiLDEsIjIiLG51bGwsbnVsbCwibGVhZ3VlUm91bmRUZXJtcyIs dHJ1ZSwgZmFsc2UsIHRydWUpOw0KCQl9DQoJfQ0KCQ0KfQ0KDQpmdW5jdGlvbiBn ZW5lcmF0ZUxlYWd1ZVJvdW5kUmVzdWx0czAwNiAobGVhZ3VlSWQpIHsNCgljb250 ZW50RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3BvcnRMZWFndWVNYWlu Q29udGVudCIpOw0KCWlmKGxlYWd1ZUlkID09IG51bGwgfHwgbGVhZ3VlSWQgPT0g InVuZGVmaW5lZCIpIHsNCgkJLy9UT0RPOiBha28gc2EgdG8gc3ByYXZhIGFrIG5l emFkYW1lIElEIGxpZ3kgW3htbCBzYSBuZXZ5Z2VuZXJ1amVdDQoJfSBlbHNlIHsN CgkJb3V0cHV0VGVtcGxhdGUgPQknPGRpdiBpZD0ibGVhZ3VlUm91bmRSZXN1bHRz Ij4nICsgDQoJCQkJCQkJJzwvZGl2Pic7DQoJCWNvbnRlbnRFbC5pbm5lckhUTUwg PSBvdXRwdXRUZW1wbGF0ZTsNCgkJZWwxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoImxlYWd1ZVJvdW5kUmVzdWx0cyIpOw0KCQlpZihlbDEgIT0gbnVsbCkNCgkJ CWxvYWRUZXJtc09yUmVzdWx0cyhsZWFndWVJZCsiOi0yIiwiMSIsMSwiMiIsbnVs bCwiMSIsImxlYWd1ZVJvdW5kUmVzdWx0cyIsZmFsc2UsIGZhbHNlLCB0cnVlKTsJ CQ0KCX0JDQp9DQoNCmZ1bmN0aW9uIGdlbmVyYXRlTGVhZ3VlU2hvb3RlcnNUYWJs ZXMwMDcgKGxlYWd1ZUlkLGxlYWd1ZVRlYW1zKSB7CQ0KCWNvbnRlbnRFbCA9IGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcG9ydExlYWd1ZU1haW5Db250ZW50Iik7 DQoJDQoJaWYobGVhZ3VlSWQgPT0gbnVsbCB8fCBsZWFndWVJZCA9PSAidW5kZWZp bmVkIikgew0KCQkvL1RPRE86IGFrbyBzYSB0byBzcHJhdmEgYWsgbmV6YWRhbWUg SUQgbGlneSBbeG1sIHNhIG5ldnlnZW5lcnVqZV0NCgl9IGVsc2Ugew0KCQlvdXRw dXRUZW1wbGF0ZSA9CSc8ZGl2IGlkPSJsZWFndWVTaG9vdGVyc1RhYmxlcyI+JyAr IA0KCQkJCQkJCScJPGRpdiBpZD0iYWxsTGVhZ3VlU2hvb3RlcnNUYWJsZSI+PC9k aXY+JyArIA0KCQkJCQkJCScJPGRpdiBpZD0ic2luZ2xlVGVhbVNob290ZXJzVGFi bGVzIj48L2Rpdj4nICsNCgkJCQkJCQknPC9kaXY+JzsNCgkJY29udGVudEVsLmlu bmVySFRNTCA9IG91dHB1dFRlbXBsYXRlOw0KCQkNCgkJZWwxID0gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoImxlYWd1ZVNob290ZXJzVGFibGVzIik7DQoJCWlmKGVs MSAhPSBudWxsKQ0KCQkJbG9hZFNob290ZXJzKCJsIitsZWFndWVJZCwiMSIsMSwi MjAiLG51bGwsbnVsbCxudWxsLCJhbGxMZWFndWVTaG9vdGVyc1RhYmxlIixmYWxz ZSxmYWxzZSk7DQoJCWxvYWRTaG9vdGVycyhsZWFndWVUZWFtcywiMSIsMSxudWxs LG51bGwsbnVsbCxudWxsLCJzaW5nbGVUZWFtU2hvb3RlcnNUYWJsZXMiLHRydWUs ZmFsc2UpOwkJCQkJCQ0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGVhZ3Vl U2hvb3RlcnNUYWJsZXMiKS5pbm5lckhUTUwgKz0gJzxkaXYgY2xhc3M9ImNsZWFy Ij48L2Rpdj4nOw0KCX0JDQp9DQoNCmZ1bmN0aW9uIGdlbmVyYXRlRmFpclBsYXkw MDggKGxlYWd1ZUlkKSB7DQogICAgICAgICANCgljb250ZW50RWwgPSBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgic3BvcnRMZWFndWVNYWluQ29udGVudCIpOw0KCWlm KGxlYWd1ZUlkID09IG51bGwgfHwgbGVhZ3VlSWQgPT0gInVuZGVmaW5lZCIpIHsN CgkJLy9UT0RPOiBha28gc2EgdG8gc3ByYXZhIGFrIG5lemFkYW1lIElEIGxpZ3kg W3htbCBzYSBuZXZ5Z2VuZXJ1amVdDQoJfSBlbHNlIHsNCgkJb3V0cHV0VGVtcGxh dGUgPQknPGRpdiBpZD0ibGVhZ3VlRmFpclBsYXkiPicgKyANCgkJCQkJCQknCTxk aXYgY2xhc3M9ImNvbG9yZWRQYW5lbDAzIj4nICsNCgkJCQkJCQknCQk8ZGl2IGNs YXNzPSJ0b3BDb3JuZXJzIj48c3BhbiBjbGFzcz0ibGVmdCI+Jm5ic3A7PC9zcGFu PjxzcGFuIGNsYXNzPSJyaWdodCI+Jm5ic3A7PC9zcGFuPjwvZGl2PicgKw0KCQkJ CQkJCScJCTxoMz5UYWJ1bGthIGZhaXIgcGxheSAtIOhlcnZlbukga2FydHk8L2gz PicgKyANCgkJCQkJCQknCQk8ZGl2IGNsYXNzPSJib3R0b21Db3JuZXJzIj48c3Bh biBjbGFzcz0ibGVmdCI+Jm5ic3A7PC9zcGFuPjxzcGFuIGNsYXNzPSJyaWdodCI+ Jm5ic3A7PC9zcGFuPjwvZGl2PicgKw0KCQkJCQkJCScJPC9kaXY+JyArDQoJCQkJ CQkJJwk8ZGl2IGlkPSJsZWFndWVSZWRDYXJkcyI+PC9kaXY+JyArDQoJCQkJCQkJ Jwk8ZGl2IGNsYXNzPSJkb3R0ZWRMaW5lIj4mbmJzcDs8L2Rpdj4nICsNCgkJCQkJ CQknCTxkaXYgY2xhc3M9ImNvbG9yZWRQYW5lbDAzIj4nICsNCgkJCQkJCQknCQk8 ZGl2IGNsYXNzPSJ0b3BDb3JuZXJzIj48c3BhbiBjbGFzcz0ibGVmdCI+Jm5ic3A7 PC9zcGFuPjxzcGFuIGNsYXNzPSJyaWdodCI+Jm5ic3A7PC9zcGFuPjwvZGl2Picg Kw0KCQkJCQkJCScJCTxoMz5UYWJ1bGthIGZhaXIgcGxheSAtIJ5sdXTpIGthcnR5 PC9oMz4nICsgDQoJCQkJCQkJJwkJPGRpdiBjbGFzcz0iYm90dG9tQ29ybmVycyI+ PHNwYW4gY2xhc3M9ImxlZnQiPiZuYnNwOzwvc3Bhbj48c3BhbiBjbGFzcz0icmln aHQiPiZuYnNwOzwvc3Bhbj48L2Rpdj4nICsNCgkJCQkJCQknCTwvZGl2PicgKw0K CQkJCQkJCScJPGRpdiBpZD0ibGVhZ3VlWWVsbG93Q2FyZHMiPjwvZGl2PicgKw0K CQkJCQkJCScJPGRpdiBjbGFzcz0iZG90dGVkTGluZSI+Jm5ic3A7PC9kaXY+JyAr DQoJCQkJCQkJJwk8ZGl2IGNsYXNzPSJjb2xvcmVkUGFuZWwwMyI+JyArDQoJCQkJ CQkJJwkJPGRpdiBjbGFzcz0idG9wQ29ybmVycyI+PHNwYW4gY2xhc3M9ImxlZnQi PiZuYnNwOzwvc3Bhbj48c3BhbiBjbGFzcz0icmlnaHQiPiZuYnNwOzwvc3Bhbj48 L2Rpdj4nICsNCgkJCQkJCQknCQk8aDMgaWQ9ImZhaXJQbGF5JytsZWFndWVJZCsn Ij5UYWJ1bGt5IG9iZHKeZW79Y2gga2FyZXQgdmUgdpplY2ggdP1tZWNoIC0gPHNw YW4gaWQ9InRoaXNMZWFndWVOYW1lJytsZWFndWVJZCsnIj4nK3RoaXNMZWFndWVH bG9iYWxOYW1lKyc8L3NwYW4+PC9oMz4nICsgDQoJCQkJCQkJJwkJPGRpdiBjbGFz cz0iYm90dG9tQ29ybmVycyI+PHNwYW4gY2xhc3M9ImxlZnQiPiZuYnNwOzwvc3Bh bj48c3BhbiBjbGFzcz0icmlnaHQiPiZuYnNwOzwvc3Bhbj48L2Rpdj4nICsNCgkJ CQkJCQknCTwvZGl2PicgKw0KCQkJCQkJCScJPGRpdiBpZD0ibGVhZ3VlQ29tcGxl dGVDYXJkcyI+PC9kaXY+JyArDQoJCQkJCQkJJzwvZGl2Pic7CQkgDQogICAgICAg ICAgICANCgkJY29udGVudEVsLmlubmVySFRNTCA9IG91dHB1dFRlbXBsYXRlOwkJ DQoJCQ0KCQlsb2FkQ2FyZHNUYWJsZSgibCIrbGVhZ3VlSWQrIjpyIiwxLDEwLG51 bGwsMCxudWxsLCJsZWFndWVSZWRDYXJkcyIsbnVsbCk7DQoJCWxvYWRDYXJkc1Rh YmxlKCJsIitsZWFndWVJZCsiOnkiLDEsMTAsbnVsbCwwLG51bGwsImxlYWd1ZVll bGxvd0NhcmRzIixudWxsKTsNCgkJbG9hZFRlYW1UYWJsZShsZWFndWVJZCwwLG51 bGwsImxlYWd1ZUNvbXBsZXRlQ2FyZHMiKTsJCQkJCQkNCgl9CQ0KfQ0KDQpmdW5j dGlvbiBnZW5lcmF0ZVRlYW1zSW5MZWFndWUwMDkgKGxlYWd1ZUlkKSB7DQoJY29u dGVudEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwb3J0TGVhZ3VlTWFp bkNvbnRlbnQiKTsNCglpZihsZWFndWVJZCA9PSBudWxsIHx8IGxlYWd1ZUlkID09 ICJ1bmRlZmluZWQiKSB7DQoJCS8vVE9ETzogYWtvIHNhIHRvIHNwcmF2YSBhayBu ZXphZGFtZSBJRCBsaWd5IFt4bWwgc2EgbmV2eWdlbmVydWplXQ0KCX0gZWxzZSB7 CQkNCgkJDQoJCW91dHB1dFRlbXBsYXRlID0JJzxkaXYgaWQ9ImxlYWd1ZVRlYW1z TGlzdCI+JyArIA0KCQkJCQkJCScJPGRpdiBjbGFzcz0iY29sb3JlZFBhbmVsMDMi PicgKw0KCQkJCQkJCScJCTxkaXYgY2xhc3M9InRvcENvcm5lcnMiPjxzcGFuIGNs YXNzPSJsZWZ0Ij4mbmJzcDs8L3NwYW4+PHNwYW4gY2xhc3M9InJpZ2h0Ij4mbmJz cDs8L3NwYW4+PC9kaXY+JyArDQoJCQkJCQkJJwkJPGgzIGlkPSJ0ZWFtTGlzdCcr bGVhZ3VlSWQrJyI+U2V6bmFtIHT9bfkgdiBzb3V07J5pIC0gPHNwYW4gaWQ9Imxl YWd1ZVRpdGxlSGVhZGluZycrbGVhZ3VlSWQrJyI+Jyt0aGlzTGVhZ3VlR2xvYmFs TmFtZSsnPC9zcGFuPjwvaDM+JyArIA0KCQkJCQkJCScJCTxkaXYgY2xhc3M9ImJv dHRvbUNvcm5lcnMiPjxzcGFuIGNsYXNzPSJsZWZ0Ij4mbmJzcDs8L3NwYW4+PHNw YW4gY2xhc3M9InJpZ2h0Ij4mbmJzcDs8L3NwYW4+PC9kaXY+JyArDQoJCQkJCQkJ Jwk8L2Rpdj4nICsNCgkJCQkJCQknCTxkaXYgaWQ9ImxlYWd1ZVRlYW1zVGFibGUi PjwvZGl2PicgKw0KCQkJCQkJCSc8L2Rpdj4nOwkJCQkJCQkNCgkJCQkJCQkNCgkJ Y29udGVudEVsLmlubmVySFRNTCA9IG91dHB1dFRlbXBsYXRlOw0KCQkNCgkJZWwx ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxlYWd1ZVRlYW1zVGFibGUiKTsN CgkJaWYoZWwxICE9IG51bGwpDQoJCQlsb2FkVGVhbVRhYmxlKGxlYWd1ZUlkLG51 bGwsbnVsbCwibGVhZ3VlVGVhbXNUYWJsZSIsIjQzODMiKTsJCQkJCQkJCQ0KCX0J DQp9DQoNCmZ1bmN0aW9uIGdlbmVyYXRlVGVhbURldGFpbDAxMCAodGVhbUlkLGxl YWd1ZUlkLGxlYWd1ZU5hbWUsdGVhbU5hbWUpIHsNCgljb250ZW50RWwgPSBkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCgic3BvcnRMZWFndWVNYWluQ29udGVudCIpOw0K CWlmKHRlYW1JZCA9PSBudWxsIHx8IHRlYW1JZCA9PSAidW5kZWZpbmVkIikgew0K CQkvL1RPRE86IGFrbyBzYSB0byBzcHJhdmEgYWsgbmV6YWRhbWUgSUQgdGVhbXUg W3htbCBzYSBuZXZ5Z2VuZXJ1amVdDQoJfSBlbHNlIHsJCQ0KCQl2YXIgdGhpc0xl YWd1ZUdsb2JhbElkID0gbGVhZ3VlSWQ7CQ0KDQoJCW91dHB1dFRlbXBsYXRlID0J JzxkaXYgaWQ9ImxlYWd1ZVRlYW1zRGV0YWlsIj4nICsgDQoJCQkJCQkJJwk8ZGl2 IGlkPSJ0aGlzVGVhbVJhbmtpbmciPjwvZGl2PicgKwkNCgkJCQkJCQknICAgPGEg Y2xhc3M9ImFsbEluZm9MaW5rIiBocmVmPSInICsgZ2VuZXJhdGVVUkwoIjQ0Mjgi LGxlYWd1ZUlkLGxlYWd1ZU5hbWUsbnVsbCxudWxsKSArICciPnb9c2xlZGt5IHaa ZWNoIG9kZWhyYW79Y2gga29sPC9hPicgKyAJCQkJCQkNCgkJCQkJCQknCTxhIGNs YXNzPSJhbGxJbmZvTGluayIgaHJlZj0iJyArIGdlbmVyYXRlVVJMKCI0MzcxIixs ZWFndWVJZCxsZWFndWVOYW1lLG51bGwsbnVsbCkgKyAnIj56b2JyYXppdCBha3R1 4Wxu7SB2/XNsZWRreSBjZWzpIHNvdXTsnmU8L2E+JyArIA0KCQkJCQkJCScJPGEg Y2xhc3M9InVzZXJBY3Rpb24iIGhyZWY9IicrZ2VuZXJhdGVVUkwoIjQ0NjAiLCBs ZWFndWVJZCxsZWFndWVOYW1lLHRlYW1JZCx0ZWFtTmFtZSkrJyI+JyArIA0KCQkJ CQkJCScJCTxzcGFuIGNsYXNzPSJ1c2VyQWN0aW9uTGVmdCI+IDwvc3Bhbj4nICsg DQoJCQkJCQkJJwkJPHNwYW4gY2xhc3M9InVzZXJBY3Rpb25NaWRkbGUiPlbdU0xF REtZIE3JSE8gVN1NVSBOQSBNT0JJTCA8L3NwYW4+JyArIA0KCQkJCQkJCScJCTxz cGFuIGNsYXNzPSJ1c2VyQWN0aW9uUmlnaHQgYWRkVGV4dCI+IDwvc3Bhbj4nICsg DQoJCQkJCQkJJwk8L2E+JyArIA0KCQkJCQkJCScJPGRpdiBjbGFzcz0iZG90dGVk TGluZSI+PC9kaXY+CScgKyANCgkJCQkJCQknCTxkaXYgY2xhc3M9ImNvbG9yZWRQ YW5lbDAzIj4nICsNCgkJCQkJCQknCQk8ZGl2IGNsYXNzPSJ0b3BDb3JuZXJzIj48 c3BhbiBjbGFzcz0ibGVmdCI+Jm5ic3A7PC9zcGFuPjxzcGFuIGNsYXNzPSJyaWdo dCI+Jm5ic3A7PC9zcGFuPjwvZGl2PicgKw0KCQkJCQkJCScJCTxoMyBpZD0ibWF0 Y2hMaXN0Jyt0ZWFtSWQrJyI+UPhlaGxlZCB64XBhc/kgLSAnK3RlYW1OYW1lKyc8 L2gzPicgKyANCgkJCQkJCQknCQk8ZGl2IGNsYXNzPSJib3R0b21Db3JuZXJzIj48 c3BhbiBjbGFzcz0ibGVmdCI+Jm5ic3A7PC9zcGFuPjxzcGFuIGNsYXNzPSJyaWdo dCI+Jm5ic3A7PC9zcGFuPjwvZGl2PicgKw0KCQkJCQkJCScJPC9kaXY+JyArDQoJ CQkJCQkJJwk8ZGl2IGlkPSJ0ZWFtUHJvZ3JhbW1lIj48L2Rpdj4nICsNCgkJCQkJ CQknCTxhIGNsYXNzPSJ1c2VyQWN0aW9uIiBocmVmPSInK2dlbmVyYXRlVVJMKCI0 NDYwIiwgbGVhZ3VlSWQsbGVhZ3VlTmFtZSx0ZWFtSWQsdGVhbU5hbWUpKyciPicg KyANCgkJCQkJCQknCQk8c3BhbiBjbGFzcz0idXNlckFjdGlvbkxlZnQiPiA8L3Nw YW4+JyArIA0KCQkJCQkJCScJCTxzcGFuIGNsYXNzPSJ1c2VyQWN0aW9uTWlkZGxl Ij5W3VNMRURLWSBNyUhPIFTdTVUgTkEgTU9CSUwgPC9zcGFuPicgKyANCgkJCQkJ CQknCQk8c3BhbiBjbGFzcz0idXNlckFjdGlvblJpZ2h0IGFkZFRleHQiPiA8L3Nw YW4+JyArIA0KCQkJCQkJCScJPC9hPicgKyANCgkJCQkJCQknCTxkaXYgY2xhc3M9 ImRvdHRlZExpbmUiPiZuYnNwOzwvZGl2PicgKyANCgkJCQkJCQknCTxhIG5hbWU9 ImxjYXJkcyI+Jm5ic3A8L2E+JyArDQoJCQkJCQkJJwk8ZGl2IGNsYXNzPSJsZWZ0 Ij4nICsgDQoJCQkJCQkJJwkJPGRpdiBjbGFzcz0iY29sb3JlZFBhbmVsMDMiPicg Kw0KCQkJCQkJCScJCQk8ZGl2IGNsYXNzPSJ0b3BDb3JuZXJzIj48c3BhbiBjbGFz cz0ibGVmdCI+Jm5ic3A7PC9zcGFuPjxzcGFuIGNsYXNzPSJyaWdodCI+Jm5ic3A7 PC9zcGFuPjwvZGl2PicgKw0KCQkJCQkJCScJCQk8aDMgY2xhc3M9ImhhbGZTaXpl Ij5UYWJ1bGthIGZhaXIgcGxheSAtIJ5sdXTpIGthcnR5PC9oMz4nICsgDQoJCQkJ CQkJJwkJCTxkaXYgY2xhc3M9ImJvdHRvbUNvcm5lcnMiPjxzcGFuIGNsYXNzPSJs ZWZ0Ij4mbmJzcDs8L3NwYW4+PHNwYW4gY2xhc3M9InJpZ2h0Ij4mbmJzcDs8L3Nw YW4+PC9kaXY+JyArDQoJCQkJCQkJJwkJPC9kaXY+JyArDQoJCQkJCQkJJwkJPGRp diBpZD0idGhpc1RlYW1ZZWxsb3dDYXJkcyI+PC9kaXY+JyArCQkJCQkJCQ0KCQkJ CQkJCScJPC9kaXY+JyArIAkJCQkJCQkNCgkJCQkJCQknCTxkaXYgY2xhc3M9InJp Z2h0Ij4nICsgDQoJCQkJCQkJJwkJPGRpdiBjbGFzcz0iY29sb3JlZFBhbmVsMDMi PicgKw0KCQkJCQkJCScJCQk8ZGl2IGNsYXNzPSJ0b3BDb3JuZXJzIj48c3BhbiBj bGFzcz0ibGVmdCI+Jm5ic3A7PC9zcGFuPjxzcGFuIGNsYXNzPSJyaWdodCI+Jm5i c3A7PC9zcGFuPjwvZGl2PicgKw0KCQkJCQkJCScJCQk8aDMgY2xhc3M9ImhhbGZT aXplIj5UYWJ1bGthIGZhaXIgcGxheSAtIOhlcnZlbukga2FydHk8L2gzPicgKyAN CgkJCQkJCQknCQkJPGRpdiBjbGFzcz0iYm90dG9tQ29ybmVycyI+PHNwYW4gY2xh c3M9ImxlZnQiPiZuYnNwOzwvc3Bhbj48c3BhbiBjbGFzcz0icmlnaHQiPiZuYnNw Ozwvc3Bhbj48L2Rpdj4nICsNCgkJCQkJCQknCQk8L2Rpdj4nICsNCgkJCQkJCQkn CQk8ZGl2IGlkPSJ0aGlzVGVhbVJlZENhcmRzIj48L2Rpdj4nICsNCgkJCQkJCQkn CTwvZGl2PicgKyANCgkJCQkJCQknCTxkaXYgY2xhc3M9ImNsZWFyIj48L2Rpdj4n ICsNCgkJCQkJCQknCTxkaXYgY2xhc3M9ImRvdHRlZExpbmUiPiZuYnNwOzwvZGl2 PicgKyANCgkJCQkJCQknCTxkaXYgaWQ9InRlYW1TaG9vdGVyc1RhYmxlIj48L2Rp dj4nICsgDQoJCQkJCQkJJwk8ZGl2IGNsYXNzPSJkb3R0ZWRMaW5lIj4mbmJzcDs8 L2Rpdj4nICsgCQkJCQkJCQ0KCQkJCQkJCSc8L2Rpdj4nOw0KCQkJCQkJCQ0KCQlj b250ZW50RWwuaW5uZXJIVE1MID0gb3V0cHV0VGVtcGxhdGU7DQoNCgkJbG9hZFJl c3VsdFRhYmxlKGxlYWd1ZUlkKyI6Iit0ZWFtSWQsIjEiLDEsbnVsbCwidGhpc1Rl YW1SYW5raW5nIix0ZWFtSWQpOw0KCQlsb2FkVGVhbVByb2dyYW1tZVRhYmxlKGxl YWd1ZUlkKyI6Iit0ZWFtSWQsIjEiLG51bGwsInRlYW1Qcm9ncmFtbWUiLGxlYWd1 ZUlkKTsNCgkJbG9hZENhcmRzVGFibGUoInQiK3RlYW1JZCsiOnkiLDEsMTAsbnVs bCwwLG51bGwsInRoaXNUZWFtWWVsbG93Q2FyZHMiLCI0Mzg3Iik7DQoJCWxvYWRD YXJkc1RhYmxlKCJ0Iit0ZWFtSWQrIjpyIiwxLDEwLG51bGwsMCxudWxsLCJ0aGlz VGVhbVJlZENhcmRzIiwiNDM4NyIpOwkNCgkJbG9hZFNob290ZXJzKCJ0Iit0ZWFt SWQsMSwxLG51bGwsbnVsbCxudWxsLG51bGwsInRlYW1TaG9vdGVyc1RhYmxlIix0 cnVlLGZhbHNlKTsNCgl9CQ0KfQ0KDQovLyBsb2FkcyBzcG9ydCBsZWFndWVzIGZy b20gZXh0ZXJuYWwgc2NyaXB0IGRlcGVuZGluZyBvbiB0aGUgYXR0cmlidXRlcyBn aXZlbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyAtIGZpbHRlcgkJ CQkJLSBsZWFndWUgdHlwZSBmaWx0ZXIgKDAvMS8yLzMpDQovLyAtIHNlYXNvbgkJ CQkJLSBzZWFzb24gZmlsdGVyIChzZWFzb24gaWQpDQovLyAtIG9yZGVyCQkJCQkt IG9yZGVyaW5nICgwLzEpDQovLyAtIHBhZ2UJCQkJCS0gcGFnaW5nIGZpbHRlcg0K Ly8gLSBlbGVtZW50VG9FeHBvcnRUb0lkICAgICAgLSBpZCBvZiB0aGUgZWxlbWVu dCB0byBleHBvcnQgaHRtbCBvdXRwdXQgdG8NCmZ1bmN0aW9uIGxvYWRTcG9ydExl YWd1ZXMoZmlsdGVyLCBzZWFzb24sIG9yZGVyLCBwYWdlLCBlbGVtZW50VG9FeHBv cnRUb0lkLCBpc0JveCkNCnsNCiAgICB2YXIgc3BvcnRMZWFndWVSZWFkZXIgPSBu ZXcgQWpheERhdGFSZWFkZXIoKTsNCiAgICANCiAgICAvLyBNZXRob2QgZm9yIGV4 ZWN1dGlvbiBvZiBnZXR0aW5nIGRhdGEgYW5kIHdpdGggc2V0dGluZ3Mgb2YgZmlu YWwgDQogICAgLy8gZGVmaW5pdGlvbjogZ2V0RGF0YUJ5SXRlbSgNCiAgICAvLyAg ICB1cmwgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhIHNvdXJjZSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIG9ibGlnYXRvcnld LCANCiAgICAvLyAgICBtZXRob2QyRXhlY3V0ZSAgICAgICAgICAgICAgIFtzaW5n bGUgc3RyaW5nIG1ldGhvZCBuYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAt IG9ibGlnYXRvcnldLCANCiAgICAvLyAgICB4bWxOb2RlTmFtZSAgICAgICAgICAg ICAgICAgIFtjZW50cmFsIG5hbWUgb2Ygbm9kZSB3aXRoIGRhdGEgYXR0cmlidXRl cyAgICAgICAgICAtIG9ibGlnYXRvcnldLCANCiAgICAvLyAgICBsb2FkaW5nRGVz Y3JpcHRpb24gICAgICAgICAgIFtjdXN0b20gdGV4dCBmb3IgbG9hZGluZyBkZXNj cmlwdGlvbiAgICAgICAgICAgICAgICAtIG9wdGlvbmFsXSwNCiAgICAvLyAgICBh ZnRlckxvYWREZXNjcmlwdGlvbiAgICAgICAgIFtjdXN0b20gdGV4dCB0byBzaG93 IGFmdGVyIGxvYWRpbmcgICAgICAgICAgICAgICAgICAtIG9wdGlvbmFsXSwgDQog ICAgLy8gICAgc3BlY2lhbE9iamVjdElkNExvYWRpbmdUZXh0cyBbSFRNTCBlbGVt ZW50IElkIC0gZm9yIHNob3dpbmcgY3VzdG9tIGxvYWRpbmcgdGV4dHMgLSBvcHRp b25hbF0sDQogICAgLy8gICAgc3BlY2lhbE9iamVjdElkNEVycm9yVGV4dHMgICBb SFRNTCBlbGVtZW50IElkIC0gZm9yIHNob3dpbmcgY3VzdG9tIGVycm9yIHRleHRz ICAgLSBvcHRpb25hbF0NCiAgICAvLyAgICApDQogICAgdmFyIHBpcGVVUkwgPSAi aHR0cDovL3Nwb3J0cmVzdWx0cy5waHlzdGVyLmNvbS9BUEkvR2V0TGVhZ3Vlcy5w aHA/biIgKyANCgkJCQl0ZXN0QXR0ck51bGwoZmlsdGVyLCJmaWx0ZXIiLCIlMjYi KSArIA0KCQkJCXRlc3RBdHRyTnVsbChzZWFzb24sInNlYXNvbiIsIiUyNiIpCSsN CgkJCQl0ZXN0QXR0ck51bGwob3JkZXIsIm9yZGVyIiwiJTI2IikgKwkJCQ0KCQkJ CXRlc3RBdHRyTnVsbChwYWdlLCJwYWdlIiwiJTI2Iik7DQogICAgLy9hbGVydChw aXBlVVJMKTsNCgkvL2FsZXJ0KGVsZW1lbnRUb0V4cG9ydFRvSWQuaWQpOw0KCWlm KGlzQm94ID09ICJ0cnVlIiB8fCBpc0JveCA9PSB0cnVlKQ0KCQlzcG9ydExlYWd1 ZVJlYWRlci5nZXREYXRhQnlJdGVtKCIvcGlwZS5hc2h4P2NhY2hlPSIrcGlwZUNh Y2hlKyImd2VpZ2h0PSIrcGlwZVdlaWdodCsiJnR5cGU9dGV4dC94bWwmVVJMPSIg KyBwaXBlVVJMLCAiZ2V0TGVhZ3VlU2lkZUJveEl0ZW18LFwiIitlbGVtZW50VG9F eHBvcnRUb0lkKyJcIiIsICJmIixudWxsLG51bGwsbnVsbCxudWxsKTsgICAgICAg ICANCgllbHNlDQoJCXNwb3J0TGVhZ3VlUmVhZGVyLmdldERhdGFCeUl0ZW0oJy9w aXBlLmFzaHg/Y2FjaGU9JytwaXBlQ2FjaGUrJyZ3ZWlnaHQ9JytwaXBlV2VpZ2h0 KycmdHlwZT10ZXh0L3htbCZVUkw9JyArIHBpcGVVUkwsICdnZXRMZWFndWVJdGVt fCwiJytlbGVtZW50VG9FeHBvcnRUb0lkKyciJywgJ2YnLG51bGwsbnVsbCxudWxs LG51bGwpOyAgICAgICAgIA0KfQ0KZnVuY3Rpb24gZ2V0TGVhZ3VlU2lkZUJveEl0 ZW0gKHhtbERhdGFJdGVtLCBhY3R1YWxJdGVtSW5kZXgsIGl0ZW1zQ291bnQsIGF0 dHJpYnV0ZXMsIGVsZW1lbnRUb0V4cG9ydFRvSWQpIHsNCgl2YXIgaHRtbFRlbXBs YXRlID0gJyc7DQoJdmFyIG9iaiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVs ZW1lbnRUb0V4cG9ydFRvSWQpOw0KCXZhciBjaGlsZENvdW50ID0gYXR0cmlidXRl c1siY291bnQiXTsNCglpZihlbGVtZW50VG9FeHBvcnRUb0lkID09ICJib3hDb3Vu dHJ5TGVhZ3VlcyIpDQoJew0KCQl2YXIgaj1jaGlsZENvdW50Ow0KCX0gZWxzZSB7 DQoJCXZhciBqPTM7DQoJfQ0KCQ0KCWZvcih2YXIgaSA9IDA7IGkgPCBqOyBpKysp IHsgDQoJCXZhciBsZWFndWVJZCA9IHhtbERhdGFJdGVtLmNoaWxkTm9kZXNbaV0u Z2V0QXR0cmlidXRlKCJpIik7DQoJCXZhciBsZWFndWVOYW1lID0geG1sRGF0YUl0 ZW0uY2hpbGROb2Rlc1tpXS5nZXRBdHRyaWJ1dGUoIm4iKTsNCgkJDQoJCWh0bWxU ZW1wbGF0ZSArPSAnPGxpPjxhIGhyZWY9IicrZ2VuZXJhdGVVUkwoIjQzNzEiLGxl YWd1ZUlkLGxlYWd1ZU5hbWUsbnVsbCxudWxsKSArJyI+JytsZWFndWVOYW1lKyc8 L2E+PC9saT4nOw0KCX0NCgkNCglvYmouaW5uZXJIVE1MICs9IGh0bWxUZW1wbGF0 ZTsNCn0NCi8vIGxvYWRzIHNpbmdsZSBzcG9ydCBsZWFndWUgdGFibGUgZnJvbSB4 bWwgZmlsZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQovLyAtIHhtbERhdGFJdGVtICAgICAtIG9uZSBYTUwg bm9kZSBvYmplY3QNCi8vIC0gYWN0dWFsSXRlbUluZGV4IC0gaW5kZXggb2YgYWN0 dWFsIGl0ZW0gaW4gWE1MIHJlc3VsdA0KLy8gLSBpdGVtc0NvdW50ICAgICAgLSBj b3VudCBvZiBhbGwgWE1MIHJlc3VsdHMNCi8vIC0gYXR0cmlidXRlcyAgICAgIC0g YXJyYXkgd2l0aCBzdHJpbmcgaW5kZXhlZCBhdHRyaWJ1dGUgaXRlbXMNCmZ1bmN0 aW9uIGdldExlYWd1ZUl0ZW0oeG1sRGF0YUl0ZW0sIGFjdHVhbEl0ZW1JbmRleCwg aXRlbXNDb3VudCwgYXR0cmlidXRlcywgZWxlbWVudFRvRXhwb3J0VG9JZCkgew0K CS8vYWxlcnQoZWxlbWVudFRvRXhwb3J0VG9JZCk7DQoJdmFyIG9iaiA9IGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRUb0V4cG9ydFRvSWQpOw0KCXZhciBj aGlsZENvdW50ID0gYXR0cmlidXRlc1siY291bnQiXTsNCgl2YXIgbG9jYXRpb25O YW1lID0geG1sRGF0YUl0ZW0uZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoIm4iKS5z cGxpdCgiIC0gIilbMF07DQoJbG9jYXRpb25OYW1lID0gbG9jYXRpb25OYW1lLnN1 YnN0cmluZyhsb2NhdGlvbk5hbWUuaW5kZXhPZigiICIpLGxvY2F0aW9uTmFtZS5s ZW5ndGgpOw0KCXZhciBodG1sVGVtcGxhdGUgPSAnJzsNCgkNCglodG1sVGVtcGxh dGUgKz0gJzx0YWJsZSBjbGFzcz0ic3BvcnRMZWFndWVUYWJsZSIgY2VsbHNwYWNp bmc9IjAiPicgKw0KCQkJCQkJCScgIDx0aGVhZD4nICsNCgkJCQkJCQknCTx0cj4n ICsNCgkJCQkJCQknCQk8dGggY2xhc3M9Im5vQ2VudGVyIHdpZHRoMjUiIGNvbHNw YW49IjYiPicrbG9jYXRpb25OYW1lKyc8L3RoPicgKw0KCQkJCQkJCScJIDwvdHI+ CScgKwkJCQkJCQkJCQ0KCQkJCQkJCScJPC90aGVhZD4nICsJCQkJCQkJDQoJCQkJ CQkJJwk8dGJvZHk+JzsNCgkJCQ0KCWZvcih2YXIgaSA9IDA7IGkgPCBjaGlsZENv dW50OyBpKyspIHsNCgkJdmFyIGxlYWd1ZUlkID0geG1sRGF0YUl0ZW0uY2hpbGRO b2Rlc1tpXS5nZXRBdHRyaWJ1dGUoImkiKTsNCgkJdmFyIGxlYWd1ZU5hbWUgPSB4 bWxEYXRhSXRlbS5jaGlsZE5vZGVzW2ldLmdldEF0dHJpYnV0ZSgibiIpLnNwbGl0 KCIgLSAiKVsxXTsNCgkJaWYoeG1sRGF0YUl0ZW0uY2hpbGROb2Rlc1tpXS5nZXRB dHRyaWJ1dGUoIm4iKS5zcGxpdCgiIC0gIikubGVuZ3RoID4gMikNCgkJew0KCQkJ Zm9yKHZhciBqPTI7aiE9eG1sRGF0YUl0ZW0uY2hpbGROb2Rlc1tpXS5nZXRBdHRy aWJ1dGUoIm4iKS5zcGxpdCgiIC0gIikubGVuZ3RoO2krKykNCgkJCXsNCgkJCQls ZWFndWVOYW1lKz0iIC0gIit4bWxEYXRhSXRlbS5jaGlsZE5vZGVzW2ldLmdldEF0 dHJpYnV0ZSgibiIpLnNwbGl0KCIgLSAiKVtqXTsNCgkJCX0NCgkJfQ0KCQlodG1s VGVtcGxhdGUgKz0gJzx0ciAnICsgKChpJTI9PTApPycnOidjbGFzcz0ib2RkIicp ICsgJz4nICsNCgkJCQkJCSAnCTx0ZCBjbGFzcz0ibm9DZW50ZXIgd2lkdGgyNSI+ PGEgY2xhc3M9InNwZWNpYWxMaW5rIiBocmVmPSInICtnZW5lcmF0ZVVSTCgiNDM3 MSIsbGVhZ3VlSWQsbGVhZ3VlTmFtZSxudWxsLG51bGwpICsgJyI+JyArIGxlYWd1 ZU5hbWUgKyAnPC9hPjwvdGQ+JyArDQoJCQkJCQkgJwk8dGQ+PGEgaHJlZj0iJyAr Z2VuZXJhdGVVUkwoIjQzNzEiLGxlYWd1ZUlkLGxlYWd1ZU5hbWUsbnVsbCxudWxs KSArICciPmFrdHXhbG7tIHb9c2xlZGt5PC9hPjwvdGQ+JyArIA0KCQkJCQkJICcJ PHRkPjxhIGhyZWY9IicgK2dlbmVyYXRlVVJMKCI0MzgzIixsZWFndWVJZCxsZWFn dWVOYW1lLG51bGwsbnVsbCkgKyAnIj5zZXpuYW0gdP1t+TwvYT48L3RkPicgKw0K CQkJCQkJICcJPHRkPjxhIGhyZWY9IicgK2dlbmVyYXRlVVJMKCI0NDI3IixsZWFn dWVJZCxsZWFndWVOYW1lLG51bGwsbnVsbCkgKyAnIj5sb3Mgc291dOyeZTwvYT48 L3RkPicgKw0KCQkJCQkJICcJPHRkPjxhIGhyZWY9IicgK2dlbmVyYXRlVVJMKCI0 NDMwIixsZWFndWVJZCxsZWFndWVOYW1lLG51bGwsbnVsbCkgKyAnIj5zdPhlbGNp PC9hPjwvdGQ+JyArDQoJCQkJCQkgJwk8dGQ+PGEgaHJlZj0iJyArZ2VuZXJhdGVV UkwoIjQzODEiLGxlYWd1ZUlkLGxlYWd1ZU5hbWUsbnVsbCxudWxsKSArICciPmth cnR5PC9hPjwvdGQ+JyArDQoJCQkJCQkgJzwvdHI+JzsNCgl9CQkJDQoJaHRtbFRl bXBsYXRlICs9CQknCTwvdGJvZHk+JyArIA0KCQkJCQkJJzwvdGFibGU+JzsNCgkN CglvYmouaW5uZXJIVE1MICs9IGh0bWxUZW1wbGF0ZTsNCn0NCg0KZnVuY3Rpb24g bG9hZFJlc3VsdFRhYmxlKGxlYWd1ZSx0ZWFtbmFtZSxsZWFndWVuYW1lLHNlYXNv bixlbGVtZW50VG9FeHBvcnRUb0lkLHRlYW1JRCxib3gpDQp7DQogICAgdmFyIHJl c3VsdFRhYmxlUmVhZGVyID0gbmV3IEFqYXhEYXRhUmVhZGVyKCk7DQoNCiAgICAv LyBNZXRob2QgZm9yIGV4ZWN1dGlvbiBvZiBnZXR0aW5nIGRhdGEgYW5kIHdpdGgg c2V0dGluZ3Mgb2YgZmluYWwNCiAgICAvLyBkZWZpbml0aW9uOiBnZXREYXRhQnlJ dGVtKA0KICAgIC8vICAgIHVybCAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rh dGEgc291cmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0gb2JsaWdhdG9yeV0sDQogICAgLy8gICAgbWV0aG9kMkV4ZWN1dGUgICAgICAg ICAgICAgICBbc2luZ2xlIHN0cmluZyBtZXRob2QgbmFtZSAgICAgICAgICAgICAg ICAgICAgICAgICAgLSBvYmxpZ2F0b3J5XSwNCiAgICAvLyAgICB4bWxOb2RlTmFt ZSAgICAgICAgICAgICAgICAgIFtjZW50cmFsIG5hbWUgb2Ygbm9kZSB3aXRoIGRh dGEgYXR0cmlidXRlcyAgICAgICAgICAtIG9ibGlnYXRvcnldLA0KICAgIC8vICAg IGxvYWRpbmdEZXNjcmlwdGlvbiAgICAgICAgICAgW2N1c3RvbSB0ZXh0IGZvciBs b2FkaW5nIGRlc2NyaXB0aW9uICAgICAgICAgICAgICAgIC0gb3B0aW9uYWxdLA0K ICAgIC8vICAgIGFmdGVyTG9hZERlc2NyaXB0aW9uICAgICAgICAgW2N1c3RvbSB0 ZXh0IHRvIHNob3cgYWZ0ZXIgbG9hZGluZyAgICAgICAgICAgICAgICAgIC0gb3B0 aW9uYWxdLA0KICAgIC8vICAgIHNwZWNpYWxPYmplY3RJZDRMb2FkaW5nVGV4dHMg W0hUTUwgZWxlbWVudCBJZCAtIGZvciBzaG93aW5nIGN1c3RvbSBsb2FkaW5nIHRl eHRzIC0gb3B0aW9uYWxdLA0KICAgIC8vICAgIHNwZWNpYWxPYmplY3RJZDRFcnJv clRleHRzICAgW0hUTUwgZWxlbWVudCBJZCAtIGZvciBzaG93aW5nIGN1c3RvbSBl cnJvciB0ZXh0cyAgIC0gb3B0aW9uYWxdDQogICAgLy8gICAgKQ0KICAgIHZhciBw aXBlVVJMID0gImh0dHA6Ly9zcG9ydHJlc3VsdHMucGh5c3Rlci5jb20vQVBJL0dl dFJlc3VsdFRhYmxlLnBocD9oIiArDQoJCQkJdGVzdEF0dHJOdWxsKGxlYWd1ZSwi bGVhZ3VlIiwiJTI2IikgKw0KCQkJCXRlc3RBdHRyTnVsbCh0ZWFtbmFtZSwidGVh bW5hbWUiLCIlMjYiKQkrDQoJCQkJdGVzdEF0dHJOdWxsKGxlYWd1ZW5hbWUsImxl YWd1ZW5hbWUiLCIlMjYiKQkrDQoJCQkJdGVzdEF0dHJOdWxsKHNlYXNvbiwic2Vh c29uIiwiJTI2Iik7DQoJLy9hbGVydChwaXBlVVJMKTsNCgkvL3M0MzcxIC0gcHJv dmFkaSBzZSAyeC4gViBJRSB2IG9wYWNuZW0gcG9yYWRpLCBuZXogdmUgRkYuDQoJ cmVzdWx0VGFibGVSZWFkZXIuZ2V0RGF0YUJ5SXRlbSgiL3BpcGUuYXNoeD9jYWNo ZT0iK3BpcGVDYWNoZSsiJndlaWdodD0iK3BpcGVXZWlnaHQrIiZ0eXBlPXRleHQv eG1sJlVSTD0iICsgcGlwZVVSTCwgJ2dldFJlc3VsdFRhYmxlSXRlbXwsIicrZWxl bWVudFRvRXhwb3J0VG9JZCsnIiwiJyt0ZWFtSUQrJyIsIicrYm94KyciJywgJ2Yn KTsNCn0NCg0KZnVuY3Rpb24gZ2V0UmVzdWx0VGFibGVJdGVtKHhtbERhdGFJdGVt LCBhY3R1YWxJdGVtSW5kZXgsIGl0ZW1zQ291bnQsIGF0dHJpYnV0ZXMsIGVsZW1l bnRUb0V4cG9ydFRvSWQsIHRlYW1JRCwgYm94KSB7DQoJLy9hbGVydCgiaGkiKTsv LyB2IElFIHNlIG5ldnlwaXNlLg0KCXZhciBvYmogPSBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZChlbGVtZW50VG9FeHBvcnRUb0lkKTsNCgl2YXIgY291bnQgPSB4bWxE YXRhSXRlbS5jaGlsZE5vZGVzLmxlbmd0aDsNCgl2YXIgaHRtbFRlbXBsYXRlID0g Jyc7DQoJdmFyIGxlYWd1ZUlkID0geG1sRGF0YUl0ZW0uZ2V0QXR0cmlidXRlKCJp Iik7DQoJdmFyIGxlYWd1ZU5hbWUgPSB4bWxEYXRhSXRlbS5nZXRBdHRyaWJ1dGUo Im4iKTsJDQoJaWYoYm94ID09ICJ0cnVlIikNCgl7CQkNCgkJCQkNCgkJaHRtbFRl bXBsYXRlICs9CSc8aDQ+PGEgaHJlZj0iJytnZW5lcmF0ZVVSTCgiNDM3MSIsbGVh Z3VlSWQsbGVhZ3VlTmFtZSxudWxsLG51bGwpKyciPjxzcGFuIGlkPSJyZXN1bHRC b3hMZWFndWVOYW1lJytsZWFndWVJZCsnIj4nK2xlYWd1ZU5hbWUrJzwvc3Bhbj48 L2E+PC9oND4nICsJCQ0KCQkJCQkJJzx0YWJsZSBjbGFzcz0ic3BvcnRMZWFndWVU YWJsZSIgY2VsbHNwYWNpbmc9IjAiPicgKyANCgkJCQkJCScJPHRoZWFkPicgKyAN CgkJCQkJCScJCTx0cj4nICsgDQoJCQkJCQknCQkJPHRoIGNsYXNzPSJub0NlbnRl ciB3aWR0aDYwIj5U/W08L3RoPicgKw0KCQkJCQkJJwkJCTx0aD5aPC90aD4nICsg DQoJCQkJCQknCQkJPHRoPlY8L3RoPicgKw0KCQkJCQkJJwkJCTx0aD5QPC90aD4n ICsgDQoJCQkJCQknCQkJPHRoPkI8L3RoPicgKw0KCQkJCQkJJwkJPC90cj4nICsN CgkJCQkJCScJPC90aGVhZD4nICsNCgkJCQkJCScJPHRib2R5Pic7DQoJfSBlbHNl IHsNCgkJaHRtbFRlbXBsYXRlICs9ICc8ZGl2IGNsYXNzPSJjb2xvcmVkUGFuZWww MyI+JyArDQoJCQkJCQknCTxkaXYgY2xhc3M9InRvcENvcm5lcnMiPjxzcGFuIGNs YXNzPSJsZWZ0Ij4mbmJzcDs8L3NwYW4+PHNwYW4gY2xhc3M9InJpZ2h0Ij4mbmJz cDs8L3NwYW4+PC9kaXY+JyArDQoJCQkJCQknCTxoMz5UYWJ1bGthIHb9c2xlZGv5 PC9oMz4nICsgDQoJCQkJCQknCTxkaXYgY2xhc3M9ImJvdHRvbUNvcm5lcnMiPjxz cGFuIGNsYXNzPSJsZWZ0Ij4mbmJzcDs8L3NwYW4+PHNwYW4gY2xhc3M9InJpZ2h0 Ij4mbmJzcDs8L3NwYW4+PC9kaXY+JyArDQoJCQkJCQknPC9kaXY+JyArDQoJCQkJ CQknPHRhYmxlIGNsYXNzPSJzcG9ydExlYWd1ZVRhYmxlIiBjZWxsc3BhY2luZz0i MCI+JyArIA0KCQkJCQkJJwk8dGhlYWQ+JyArIA0KCQkJCQkJJwkJPHRyPicgKyAN CgkJCQkJCScJCQk8dGggY2xhc3M9Im5vQ2VudGVyIj5Qb/hhZO08L3RoPicgKyAN CgkJCQkJCScJCQk8dGggY2xhc3M9Im5vQ2VudGVyIj5U/W08L3RoPicgKyANCgkJ CQkJCScJCQk8dGg+WuFwYXM8L3RoPicgKyANCgkJCQkJCScJCQk8dGg+Vv1ocnk8 L3RoPicgKyANCgkJCQkJCScJCQk8dGg+UmVt7Xp5PC90aD4nICsgDQoJCQkJCQkn CQkJPHRoPlByb2hyeTwvdGg+JyArIA0KCQkJCQkJJwkJCTx0aD5Ta/NyZTwvdGg+ JyArIA0KCQkJCQkJJwkJCTx0aD5Cb2R5PC90aD4nICsgDQoJCQkJCQknCQk8L3Ry PicgKyANCgkJCQkJCScJPC90aGVhZD4nICsgDQoJCQkJCQknCTx0Ym9keT4nOwkJ CQkJCQ0KCX0JCQ0KCQkNCglmb3IodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykg ew0KCQl2YXIgcG9zaXRpb24gPSB4bWxEYXRhSXRlbS5jaGlsZE5vZGVzW2ldLmdl dEF0dHJpYnV0ZSgibnIiKTsNCgkJdmFyIHRlYW1JZCA9IHhtbERhdGFJdGVtLmNo aWxkTm9kZXNbaV0uZ2V0QXR0cmlidXRlKCJpIik7DQoJCXZhciB0ZWFtTmFtZSA9 IHhtbERhdGFJdGVtLmNoaWxkTm9kZXNbaV0uZ2V0QXR0cmlidXRlKCJuIik7DQoJ CXZhcgltYXRjaGVzID0geG1sRGF0YUl0ZW0uY2hpbGROb2Rlc1tpXS5nZXRBdHRy aWJ1dGUoImMiKTsNCgkJdmFyCXdpbk1hdGNoZXMgPSB4bWxEYXRhSXRlbS5jaGls ZE5vZGVzW2ldLmdldEF0dHJpYnV0ZSgidyIpOw0KCQl2YXIJbG9zZU1hdGNoZXMg PSB4bWxEYXRhSXRlbS5jaGlsZE5vZGVzW2ldLmdldEF0dHJpYnV0ZSgibCIpOw0K CQl2YXIJZHJhd01hdGNoZXMgPSB4bWxEYXRhSXRlbS5jaGlsZE5vZGVzW2ldLmdl dEF0dHJpYnV0ZSgiZCIpOw0KCQl2YXIJc2NvcmUgPSB4bWxEYXRhSXRlbS5jaGls ZE5vZGVzW2ldLmdldEF0dHJpYnV0ZSgicyIpOw0KCQl2YXIJcG9pbnRzID0geG1s RGF0YUl0ZW0uY2hpbGROb2Rlc1tpXS5nZXRBdHRyaWJ1dGUoInAiKTsJCQ0KCQkN CgkJaWYoYm94ID09ICJ0cnVlIikNCgkJew0KCQkJaWYodGVhbUlEPT0idW5kZWZp bmVkIiB8fCB0ZWFtSUQgPT0gIm51bGwiIHx8IHRlYW1JRD09eG1sRGF0YUl0ZW0u Y2hpbGROb2Rlc1tpXS5nZXRBdHRyaWJ1dGUoImkiKSkNCgkJCXsJCQkNCgkJCQlo dG1sVGVtcGxhdGUgKz0gJzx0ciAnICsgKCgoaSsxKSUyPT0wKT8nJzonY2xhc3M9 Im9kZCInKSArICc+JyArDQoJCQkJCQkgJwk8dGQgY2xhc3M9Im5vQ2VudGVyIHdp ZHRoNjAiPjxhIGhyZWY9IicgKyBnZW5lcmF0ZVVSTCgiNDM4NyIsbGVhZ3VlSWQs bGVhZ3VlTmFtZSx0ZWFtSWQsdGVhbU5hbWUpICsgJyI+JyArIHRlYW1OYW1lICsg JzwvYT48L3RkPicgKw0KCQkJCQkJICcJPHRkPicgKyBtYXRjaGVzICsgJzwvdGQ+ JyArDQoJCQkJCQkgJwk8dGQ+JyArIHdpbk1hdGNoZXMgKyAnPC90ZD4nICsNCgkJ CQkJCSAnCTx0ZD4nICsgbG9zZU1hdGNoZXMgKyAnPC90ZD4nICsNCgkJCQkJCSAn CTx0ZD4nICsgcG9pbnRzICsgJzwvdGQ+JyArDQoJCQkJCQkgJzwvdHI+JzsNCgkJ CX0NCgkJfSBlbHNlIHsJCQ0KCQkJaWYodGVhbUlEPT0idW5kZWZpbmVkIiB8fCB0 ZWFtSUQgPT0gIm51bGwiIHx8IHRlYW1JRD09eG1sRGF0YUl0ZW0uY2hpbGROb2Rl c1tpXS5nZXRBdHRyaWJ1dGUoImkiKSkNCgkJCXsJCQkNCgkJCQlodG1sVGVtcGxh dGUgKz0gJzx0ciAnICsgKCgoaSsxKSUyPT0wKT8nJzonY2xhc3M9Im9kZCInKSAr ICc+JyArDQoJCQkJCQkgJwk8dGQgY2xhc3M9Im5vQ2VudGVyIj4nICsgcG9zaXRp b24gKyAnPC90ZD4nICsNCgkJCQkJCSAnCTx0ZCBjbGFzcz0ibm9DZW50ZXIiPjxh IGhyZWY9IicgKyBnZW5lcmF0ZVVSTCgiNDM4NyIsbGVhZ3VlSWQsbGVhZ3VlTmFt ZSx0ZWFtSWQsdGVhbU5hbWUpICsgJyI+JyArIHRlYW1OYW1lICsgJzwvYT48L3Rk PicgKw0KCQkJCQkJICcJPHRkPicgKyBtYXRjaGVzICsgJzwvdGQ+JyArDQoJCQkJ CQkgJwk8dGQ+JyArIHdpbk1hdGNoZXMgKyAnPC90ZD4nICsNCgkJCQkJCSAnCTx0 ZD4nICsgZHJhd01hdGNoZXMgKyAnPC90ZD4nICsNCgkJCQkJCSAnCTx0ZD4nICsg bG9zZU1hdGNoZXMgKyAnPC90ZD4nICsNCgkJCQkJCSAnCTx0ZD4nICsgc2NvcmUg KyAnPC90ZD4nICsNCgkJCQkJCSAnCTx0ZD4nICsgcG9pbnRzICsgJzwvdGQ+JyAr DQoJCQkJCQkgJzwvdHI+JzsNCgkJCX0NCgkJfQkNCgl9DQoJCQ0KCWh0bWxUZW1w bGF0ZSArPQknPC90Ym9keT4nICsNCgkJCQkJJzwvdGFibGU+JzsJCQ0KCQ0KDQoJ dmFyIG5ld2RpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KCW5l d2Rpdi5pbm5lckhUTUwgKz0gaHRtbFRlbXBsYXRlOwkNCglvYmouYXBwZW5kQ2hp bGQobmV3ZGl2KTsNCiAgICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5zcGxpdCgi IyIpWzFdPT0ibGNhcmRzIikNCiAgICB7DQogICAgICAgIGRvY3VtZW50LmxvY2F0 aW9uLmhyZWY9ZG9jdW1lbnQubG9jYXRpb24uaHJlZjsNCiAgICB9CQ0KfQ0KDQov L25hY2l0YSBzdHJlbGNvdiBwb2RsYSBmaWx0cmENCi8vYXRyaWJ1dCBzaW5nbGVU ZWFtVGFibGUgamUgdHlwdSBib29sIGEgem5hY2ksIGNpIHByaXNsdWNoYSBvYnNh aCB0YWJ1bGt5IGplZG5lbXUgdHltdSBbdHJ1ZV0sIGFsZWJvIG5pZSBbZmFsc2Vd IA0KZnVuY3Rpb24gbG9hZFNob290ZXJzKGZpbHRlciwgdGVhbW5hbWUsIGxlYWd1 ZW5hbWUsIGNvdW50LCBzZWFzb24sIG9yZGVyLCBwYWdlLCBlbGVtZW50VG9FeHBv cnRUb0lkLCBzaW5nbGVUZWFtVGFibGUsIGlzQm94KQ0KeyAgCQkJDQoJdGVhbW5h bWUgPSAiMSI7CS8vY2hjZW1lIHZ6ZHkgYWogbmF6b3YgdGVhbXUNCgkNCiAgICB2 YXIgc2hvb3RlclRhYmxlUmVhZGVyID0gbmV3IEFqYXhEYXRhUmVhZGVyKCk7DQog ICAgDQogICAgLy8gTWV0aG9kIGZvciBleGVjdXRpb24gb2YgZ2V0dGluZyBkYXRh IGFuZCB3aXRoIHNldHRpbmdzIG9mIGZpbmFsIA0KICAgIC8vIGRlZmluaXRpb246 IGdldERhdGFCeUl0ZW0oDQogICAgLy8gICAgdXJsICAgICAgICAgICAgICAgICAg ICAgICAgICBbZGF0YSBzb3VyY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLSBvYmxpZ2F0b3J5XSwgDQogICAgLy8gICAgbWV0aG9kMkV4 ZWN1dGUgICAgICAgICAgICAgICBbc2luZ2xlIHN0cmluZyBtZXRob2QgbmFtZSAg ICAgICAgICAgICAgICAgICAgICAgICAgLSBvYmxpZ2F0b3J5XSwgDQogICAgLy8g ICAgeG1sTm9kZU5hbWUgICAgICAgICAgICAgICAgICBbY2VudHJhbCBuYW1lIG9m IG5vZGUgd2l0aCBkYXRhIGF0dHJpYnV0ZXMgICAgICAgICAgLSBvYmxpZ2F0b3J5 XSwgDQogICAgLy8gICAgbG9hZGluZ0Rlc2NyaXB0aW9uICAgICAgICAgICBbY3Vz dG9tIHRleHQgZm9yIGxvYWRpbmcgZGVzY3JpcHRpb24gICAgICAgICAgICAgICAg LSBvcHRpb25hbF0sDQogICAgLy8gICAgYWZ0ZXJMb2FkRGVzY3JpcHRpb24gICAg ICAgICBbY3VzdG9tIHRleHQgdG8gc2hvdyBhZnRlciBsb2FkaW5nICAgICAgICAg ICAgICAgICAgLSBvcHRpb25hbF0sIA0KICAgIC8vICAgIHNwZWNpYWxPYmplY3RJ ZDRMb2FkaW5nVGV4dHMgW0hUTUwgZWxlbWVudCBJZCAtIGZvciBzaG93aW5nIGN1 c3RvbSBsb2FkaW5nIHRleHRzIC0gb3B0aW9uYWxdLA0KICAgIC8vICAgIHNwZWNp YWxPYmplY3RJZDRFcnJvclRleHRzICAgW0hUTUwgZWxlbWVudCBJZCAtIGZvciBz aG93aW5nIGN1c3RvbSBlcnJvciB0ZXh0cyAgIC0gb3B0aW9uYWxdDQogICAgLy8g ICAgKQ0KICAgIHZhciBwaXBlVVJMID0gImh0dHA6Ly9zcG9ydHJlc3VsdHMucGh5 c3Rlci5jb20vQVBJL0dldFNob290ZXJzVGFibGUucGhwP24iICsgDQoJCQkJdGVz dEF0dHJOdWxsKGZpbHRlciwiZmlsdGVyIiwiJTI2IikgKyANCgkJCQl0ZXN0QXR0 ck51bGwodGVhbW5hbWUsInRlYW1uYW1lIiwiJTI2IikgKyANCgkJCQl0ZXN0QXR0 ck51bGwobGVhZ3VlbmFtZSwibGVhZ3VlbmFtZSIsIiUyNiIpICsNCgkJCQl0ZXN0 QXR0ck51bGwoY291bnQsImNvdW50IiwiJTI2IikgKyANCgkJCQl0ZXN0QXR0ck51 bGwoc2Vhc29uLCJzZWFzb24iLCIlMjYiKQkrDQoJCQkJdGVzdEF0dHJOdWxsKG9y ZGVyLCJvcmRlciIsIiUyNiIpICsNCgkJCQl0ZXN0QXR0ck51bGwocGFnZSwicGFn ZSIsIiUyNiIpOw0KICAgIC8vYWxlcnQocGlwZVVSTCk7DQoJLy9hbGVydChlbGVt ZW50VG9FeHBvcnRUb0lkLmlkKTsJDQogICAgc2hvb3RlclRhYmxlUmVhZGVyLmdl dERhdGFCeUl0ZW0oIi9waXBlLmFzaHg/Y2FjaGU9IitwaXBlQ2FjaGUrIiZ3ZWln aHQ9IitwaXBlV2VpZ2h0KyImdHlwZT10ZXh0L3htbCZVUkw9IiArIHBpcGVVUkws ICJnZXRTaG9vdGVySXRlbXwsXCIiK2VsZW1lbnRUb0V4cG9ydFRvSWQrIlwiLFwi IitzaW5nbGVUZWFtVGFibGUrIlwiLFwiIitpc0JveCsiXCIiLCAiZiIpOyAgICAg ICAgICAgDQp9DQoNCnZhciBzaG9vdGVyc0l0ZW1Db3VudGVyID0gMDsNCg0KZnVu Y3Rpb24gZ2V0U2hvb3Rlckl0ZW0oeG1sRGF0YUl0ZW0sIGFjdHVhbEl0ZW1JbmRl eCwgaXRlbXNDb3VudCwgYXR0cmlidXRlcywgZWxlbWVudFRvRXhwb3J0VG9JZCwg c2luZ2xlVGVhbVRhYmxlLCBpc0JveCkgewkJDQoJdmFyIG9iaiA9IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRUb0V4cG9ydFRvSWQpOw0KCXZhciBjaGls ZENvdW50ID0geG1sRGF0YUl0ZW0uY2hpbGROb2Rlcy5sZW5ndGg7CQ0KCWlmKGNo aWxkQ291bnQgPT0gMCAmJiAoc2luZ2xlVGVhbVRhYmxlID09ICJ0cnVlIiAmJiBp c0JveCAhPSAidHJ1ZSIpKQ0KCQlyZXR1cm47DQoJaWYoYWN0dWFsSXRlbUluZGV4 ID09IDApDQoJCXNob290ZXJzSXRlbUNvdW50ZXIgPSAwOw0KCXZhciBmaXJzdENo aWxkID0geG1sRGF0YUl0ZW0uY2hpbGROb2Rlc1swXTsJDQoJaWYoc2luZ2xlVGVh bVRhYmxlID09ICJ0cnVlIiAmJiBpc0JveCAhPSAidHJ1ZSIpDQoJCXZhciBsZWFn dWVJZCA9IHRoaXNMZWFndWVHbG9iYWxJZDsgLy90aGlzTGVhZ3VlR2xvYmFsSWQg amUgZGVmaW5vdmFuZSB2IHNhYmxvbmUgNDQzMA0KCWVsc2UNCgkJdmFyIGxlYWd1 ZUlkID0geG1sRGF0YUl0ZW0uZ2V0QXR0cmlidXRlKCJpIikuc3Vic3RyaW5nKDEp Ow0KCXZhciBsZWFndWVOYW1lID0geG1sRGF0YUl0ZW0uZ2V0QXR0cmlidXRlKCJu Iik7DQoNCgl2YXIgaHRtbFRlbXBsYXRlID0gJyc7DQoJdmFyIGhlYWRpbmdUZXh0 ID0gJ1RhYnVsa2Egc3T4ZWxj+Sc7IC8vVE9ETzogem1lbml0IHRleHQgbmEga29u c3RhbnR1DQoJCQ0KCXZhciBmaXJzdCA9IHRydWU7CQ0KCWZvcih2YXIgaSA9IDA7 IGkgPCBjaGlsZENvdW50OyBpKyspIHsJDQoJCXNob290ZXJSYW5rID0geG1sRGF0 YUl0ZW0uY2hpbGROb2Rlc1tpXS5nZXRBdHRyaWJ1dGUoIm5yIik7DQoJCXNob290 ZXJOYW1lID0geG1sRGF0YUl0ZW0uY2hpbGROb2Rlc1tpXS5nZXRBdHRyaWJ1dGUo InNuIikgKyAnICcgKyB4bWxEYXRhSXRlbS5jaGlsZE5vZGVzW2ldLmdldEF0dHJp YnV0ZSgiZm4iKTsNCgkJc2hvb3RlclRlYW1JZCA9IHhtbERhdGFJdGVtLmNoaWxk Tm9kZXNbaV0uZ2V0QXR0cmlidXRlKCJ0aSIpOw0KCQlzaG9vdGVyVGVhbU5hbWUg PSB4bWxEYXRhSXRlbS5jaGlsZE5vZGVzW2ldLmdldEF0dHJpYnV0ZSgidG4iKTsN CgkJc2hvb3RlckdvYWxzID0geG1sRGF0YUl0ZW0uY2hpbGROb2Rlc1tpXS5nZXRB dHRyaWJ1dGUoImciKTsJCQkNCgkJaWYoZmlyc3QpDQoJCXsNCgkJCWZpcnN0ID0g ZmFsc2U7DQoJCQlpZihzaW5nbGVUZWFtVGFibGUgPT0gInRydWUiKSB7DQoJCQkJ aGVhZGluZ1RleHQgKz0gIiAtICIgKyBzaG9vdGVyVGVhbU5hbWU7DQoJCQkJaHRt bFRlbXBsYXRlICs9IChzaG9vdGVyc0l0ZW1Db3VudGVyICUgMiA+IDApPyc8ZGl2 IGNsYXNzPSJyaWdodCI+JzonPGRpdiBjbGFzcz0ibGVmdCI+JzsJCQ0KCQkJCS8v aWYobGVhZ3VlSWQuY2hhckF0KDApICE9ICJsIikgew0KCQkJCQkvL2ZUZWFtSWQg PSB4bWxEYXRhSXRlbS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgidGkiKTsJCQkN CgkJCQkJLy9mVGVhbU5hbWUgPSB4bWxEYXRhSXRlbS5maXJzdENoaWxkLmdldEF0 dHJpYnV0ZSgidG4iKTsNCgkJCQkJLy9oZWFkaW5nVGV4dCA9ICc8YSBocmVmPSIn ICsgZ2VuZXJhdGVVUkwoIjQzODciLGxlYWd1ZUlkLGZUZWFtSWQpICsgJyI+Jytm VGVhbU5hbWUrJzwvYT4nOw0KCQkJCS8vfQ0KCQkJfSBlbHNlIHsNCgkJCQloZWFk aW5nVGV4dCArPSAnIC0gdpplY2hueSB0/W15JzsgLy9UT0RPOiB6bWVuaXQgdGV4 dCBuYSBrb25zdGFudHUNCgkJCX0JDQoJCQkNCgkJCQ0KCQkJaWYoaXNCb3ggPT0g InRydWUiKSB7CQkJCQkNCgkJCQloZWFkaW5nVGV4dCA9ICc8YSBocmVmPSInICsg Z2VuZXJhdGVVUkwoIjQzNzEiLGxlYWd1ZUlkLGxlYWd1ZU5hbWUsbnVsbCxudWxs KSArICciIGlkPSJzaG9vdGVyQm94VGFibGUnK2xlYWd1ZUlkKyciPicrbGVhZ3Vl TmFtZSsnPC9hPic7DQoJCQkJdGFibGVIZWFkaW5nID0gJzxoND4nICsgaGVhZGlu Z1RleHQgKyAnPC9oND4nOw0KCQkJfSBlbHNlIHsJCQ0KCQkJCXRhYmxlSGVhZGlu ZyA9CSc8ZGl2IGNsYXNzPSJjb2xvcmVkUGFuZWwwMyI+JyArDQoJCQkJCQkJCScJ PGRpdiBjbGFzcz0idG9wQ29ybmVycyI+PHNwYW4gY2xhc3M9ImxlZnQiPiZuYnNw Ozwvc3Bhbj48c3BhbiBjbGFzcz0icmlnaHQiPiZuYnNwOzwvc3Bhbj48L2Rpdj4n ICsNCgkJCQkJCQkJJwk8aDMnICsgKHNpbmdsZVRlYW1UYWJsZSA9PSAidHJ1ZSIg PycgY2xhc3M9ImhhbGZTaXplIj4nOic+JykgKyBoZWFkaW5nVGV4dCArICc8L2gz PicgKyANCgkJCQkJCQkJJwk8ZGl2IGNsYXNzPSJib3R0b21Db3JuZXJzIj48c3Bh biBjbGFzcz0ibGVmdCI+Jm5ic3A7PC9zcGFuPjxzcGFuIGNsYXNzPSJyaWdodCI+ Jm5ic3A7PC9zcGFuPjwvZGl2PicgKw0KCQkJCQkJCQknPC9kaXY+JzsNCgkJCX0N CgkJCQkNCgkJCQkJDQoJCQlodG1sVGVtcGxhdGUgKz0JCXRhYmxlSGVhZGluZyAr DQoJCQkJCQkJCSc8dGFibGUgY2xhc3M9InNwb3J0TGVhZ3VlVGFibGUnKyhzaW5n bGVUZWFtVGFibGUgPT0gInRydWUiPycgaGFsZlNpemUnOicnKSsnIiBjZWxsc3Bh Y2luZz0iMCI+JyArIA0KCQkJCQkJCQknCTx0aGVhZD4nICsgDQoJCQkJCQkJCScJ CTx0cj4nICsgDQoJCQkJCQkJCShpc0JveCA9PSAidHJ1ZSI/Jyc6Jzx0aCBjbGFz cz0ibm9DZW50ZXIgc21hbGxDZWxsIj5Qb/guPC90aD4nKSArIC8vVE9ETzogem1l bml0IHRleHQgbmEga29uc3RhbnR1IHpvIHNreWxsYQkNCgkJCQkJCQkJJwkJCTx0 aCBjbGFzcz0ibm9DZW50ZXIgd2lkdGgzNSI+Sm3pbm88L3RoPicgKyANCgkJCQkJ CQkJCQkJKHNpbmdsZVRlYW1UYWJsZSE9InRydWUiPyc8dGggY2xhc3M9Im5vQ2Vu dGVyIHdpZHRoMzUiPlT9bTwvdGg+JzonJykgKyANCgkJCQkJCQkJJwkJCTx0aCBj bGFzcz0ic21hbGxDZWxsIj5CcmFua3k8L3RoPicgKw0KCQkJCQkJCQknCQk8L3Ry PicgKw0KCQkJCQkJCQknCTwvdGhlYWQ+JyArDQoJCQkJCQkJCScJPHRib2R5Pic7 DQoJCX0NCg0KCQlodG1sVGVtcGxhdGUgKz0gJzx0ciAnICsgKChpJTI9PTApPycn OidjbGFzcz0ib2RkIicpICsgJz4nICsNCgkJCQkJCSAoaXNCb3ggPT0gInRydWUi PycnOic8dGQgY2xhc3M9Im5vQ2VudGVyIj4nICsgIHNob290ZXJSYW5rICsgJy4n ICsgJzwvdGQ+JykgKw0KCQkJCQkJICcJPHRkIGNsYXNzPSJub0NlbnRlciB3aWR0 aDI1Ij4nICsgc2hvb3Rlck5hbWUgKyAnPC90ZD4nICsgIA0KCQkJCQkJCShzaW5n bGVUZWFtVGFibGUhPSJ0cnVlIj8nPHRkIGNsYXNzPSJub0NlbnRlciB3aWR0aDI1 Ij48YSBocmVmPSInICsgZ2VuZXJhdGVVUkwoIjQzODciLGxlYWd1ZUlkLGxlYWd1 ZU5hbWUsc2hvb3RlclRlYW1JZCxzaG9vdGVyVGVhbU5hbWUpICsgJyI+JyArIHNo b290ZXJUZWFtTmFtZSArICc8L2E+PC90ZD4nOicnKSArDQoJCQkJCQkgJwk8dGQ+ JyArIHNob290ZXJHb2FscyArICc8L3RkPicgKwkJCQkJCSANCgkJCQkJCSAnPC90 cj4nOwkNCgl9CQ0KCQkNCglodG1sVGVtcGxhdGUgKz0JCSc8L3Rib2R5PicgKyAN CgkJCQkJCSc8L3RhYmxlPic7CQ0KCQkJCQkJDQoJaWYoc2luZ2xlVGVhbVRhYmxl PT0idHJ1ZSIpIHsNCgkJaHRtbFRlbXBsYXRlICs9ICc8L2Rpdj4nKyhzaG9vdGVy c0l0ZW1Db3VudGVyICUgMiA+IDA/JzxkaXYgY2xhc3M9ImRvdHRlZExpbmUiPjwv ZGl2Pic6JycpOwkJDQoJfSBlbHNlIHsNCgkJaHRtbFRlbXBsYXRlICs9ICc8ZGl2 IGNsYXNzPSJkb3R0ZWRMaW5lIj48L2Rpdj4nOw0KCX0NCgkJDQoJdmFyIG5ld2Rp diA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KCQ0KCWlmICgoYWN0 dWFsSXRlbUluZGV4ID09IDEwKSAmJiAodHlwZW9mKHJldHVybkFkdikgPT0gJ2Z1 bmN0aW9uJykpew0KICAgICAgICAgbmV3ZGl2LmlubmVySFRNTCArPSByZXR1cm5B ZHYoKTsNCiAgICAgICAgIG5ld2Rpdi5pbm5lckhUTUwgKz0gJzxkaXYgY2xhc3M9 ImRvdHRlZExpbmUiPjwvZGl2Pic7DQogICAgfQ0KCS8vYWxlcnQoaHRtbFRlbXBs YXRlKTsNCgluZXdkaXYuaW5uZXJIVE1MICs9IGh0bWxUZW1wbGF0ZTsJDQoJb2Jq LmFwcGVuZENoaWxkKG5ld2Rpdik7CQ0KCQ0KCXNob290ZXJzSXRlbUNvdW50ZXIr KzsJDQoJCQkJDQp9DQoNCi8vIGxvYWRzIHNwb3J0IGxlYWd1ZXMgZnJvbSBleHRl cm5hbCBzY3JpcHQgZGVwZW5kaW5nIG9uIHRoZSBhdHRyaWJ1dGVzIGdpdmVuIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIC0gZmlsdGVyCQkJCQktIGxl YWd1ZSB0eXBlIGZpbHRlciAoMC8xLzIvMykNCi8vIC0gc2Vhc29uCQkJCQktIHNl YXNvbiBmaWx0ZXIgKHNlYXNvbiBpZCkNCi8vIC0gb3JkZXIJCQkJCS0gb3JkZXJp bmcgKDAvMSkNCi8vIC0gcGFnZQkJCQkJLSBwYWdpbmcgZmlsdGVyDQovLyAtIGVs ZW1lbnRUb0V4cG9ydFRvSWQgICAgICAtIGlkIG9mIHRoZSBlbGVtZW50IHRvIGV4 cG9ydCBodG1sIG91dHB1dCB0bw0KZnVuY3Rpb24gbG9hZFRlcm1zT3JSZXN1bHRz KGxlYWd1ZSwgdGVhbW5hbWUsIGxlYWd1ZW5hbWUsIHdhbnRzaG9ydCwgc2Vhc29u LCBvcmRlciwgZWxlbWVudFRvRXhwb3J0VG9JZCwgaVdhbnRUZXJtcywgYm94LCBh bGxSZXN1bHRzKQ0KeyAgCQkJCQ0KICAgIHZhciB0ZXJtc09yUmVzdWx0c1JlYWRl ciA9IG5ldyBBamF4RGF0YVJlYWRlcigpOw0KICAgIA0KICAgIC8vIE1ldGhvZCBm b3IgZXhlY3V0aW9uIG9mIGdldHRpbmcgZGF0YSBhbmQgd2l0aCBzZXR0aW5ncyBv ZiBmaW5hbCANCiAgICAvLyBkZWZpbml0aW9uOiBnZXREYXRhQnlJdGVtKA0KICAg IC8vICAgIHVybCAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGEgc291cmNl ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gb2JsaWdh dG9yeV0sIA0KICAgIC8vICAgIG1ldGhvZDJFeGVjdXRlICAgICAgICAgICAgICAg W3NpbmdsZSBzdHJpbmcgbWV0aG9kIG5hbWUgICAgICAgICAgICAgICAgICAgICAg ICAgIC0gb2JsaWdhdG9yeV0sIA0KICAgIC8vICAgIHhtbE5vZGVOYW1lICAgICAg ICAgICAgICAgICAgW2NlbnRyYWwgbmFtZSBvZiBub2RlIHdpdGggZGF0YSBhdHRy aWJ1dGVzICAgICAgICAgIC0gb2JsaWdhdG9yeV0sIA0KICAgIC8vICAgIGxvYWRp bmdEZXNjcmlwdGlvbiAgICAgICAgICAgW2N1c3RvbSB0ZXh0IGZvciBsb2FkaW5n IGRlc2NyaXB0aW9uICAgICAgICAgICAgICAgIC0gb3B0aW9uYWxdLA0KICAgIC8v ICAgIGFmdGVyTG9hZERlc2NyaXB0aW9uICAgICAgICAgW2N1c3RvbSB0ZXh0IHRv IHNob3cgYWZ0ZXIgbG9hZGluZyAgICAgICAgICAgICAgICAgIC0gb3B0aW9uYWxd LCANCiAgICAvLyAgICBzcGVjaWFsT2JqZWN0SWQ0TG9hZGluZ1RleHRzIFtIVE1M IGVsZW1lbnQgSWQgLSBmb3Igc2hvd2luZyBjdXN0b20gbG9hZGluZyB0ZXh0cyAt IG9wdGlvbmFsXSwNCiAgICAvLyAgICBzcGVjaWFsT2JqZWN0SWQ0RXJyb3JUZXh0 cyAgIFtIVE1MIGVsZW1lbnQgSWQgLSBmb3Igc2hvd2luZyBjdXN0b20gZXJyb3Ig dGV4dHMgICAtIG9wdGlvbmFsXQ0KICAgIC8vICAgICkNCiAgICB2YXIgcGlwZVVS TCA9ICJodHRwOi8vc3BvcnRyZXN1bHRzLnBoeXN0ZXIuY29tL0FQSS9HZXRSb3Vu ZFJlc3VsdC5waHA/biIgKyANCgkJCQl0ZXN0QXR0ck51bGwobGVhZ3VlLCJsZWFn dWUiLCIlMjYiKSArIA0KCQkJCXRlc3RBdHRyTnVsbCh0ZWFtbmFtZSwidGVhbW5h bWUiLCIlMjYiKQkrDQoJCQkJdGVzdEF0dHJOdWxsKGxlYWd1ZW5hbWUsImxlYWd1 ZW5hbWUiLCIlMjYiKSArDQoJCQkJdGVzdEF0dHJOdWxsKHdhbnRzaG9ydCwic2hv cnQiLCIlMjYiKSArDQoJCQkJdGVzdEF0dHJOdWxsKHNlYXNvbiwic2Vhc29uIiwi JTI2IikgKw0KCQkJCXRlc3RBdHRyTnVsbChvcmRlciwib3JkZXIiLCIlMjYiKTsN CgkvL2FsZXJ0KHBpcGVVUkwpOw0KCS8vYWxlcnQoZWxlbWVudFRvRXhwb3J0VG9J ZCk7DQoJLy9hbGVydCgiL3BpcGUuYXNoeD90eXBlPXRleHQveG1sJlVSTD0iICsg cGlwZVVSTCwgImdldFRlcm1PclJlc3VsdEl0ZW18LFwiIitlbGVtZW50VG9FeHBv cnRUb0lkKyJcIixcIiIraVdhbnRUZXJtcysiXCIsXCIiK2JveCsiXCIiKTsNCiAg ICB0ZXJtc09yUmVzdWx0c1JlYWRlci5nZXREYXRhQnlJdGVtKCIvcGlwZS5hc2h4 P3R5cGU9dGV4dC94bWwmVVJMPSIgKyBwaXBlVVJMLCAiZ2V0VGVybU9yUmVzdWx0 SXRlbXwsXCIiK2VsZW1lbnRUb0V4cG9ydFRvSWQrIlwiLFwiIitpV2FudFRlcm1z KyJcIixcIiIrYm94KyJcIixcIiIrYWxsUmVzdWx0cysiXCIiLCAiZiIpOw0KfQ0K DQovLyBsb2FkcyBzaW5nbGUgbGVhZ3VlIHJvdW5kIHRhYmxlIGZyb20geG1sIGZp bGUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KLy8gLSB4bWxEYXRhSXRlbSAgICAgLSBvbmUgWE1MIG5vZGUg b2JqZWN0DQovLyAtIGFjdHVhbEl0ZW1JbmRleCAtIGluZGV4IG9mIGFjdHVhbCBp dGVtIGluIFhNTCByZXN1bHQNCi8vIC0gaXRlbXNDb3VudCAgICAgIC0gY291bnQg b2YgYWxsIFhNTCByZXN1bHRzDQovLyAtIGF0dHJpYnV0ZXMgICAgICAtIGFycmF5 IHdpdGggc3RyaW5nIGluZGV4ZWQgYXR0cmlidXRlIGl0ZW1zDQpmdW5jdGlvbiBn ZXRUZXJtT3JSZXN1bHRJdGVtKHhtbERhdGFJdGVtLCBhY3R1YWxJdGVtSW5kZXgs IGl0ZW1zQ291bnQsIGF0dHJpYnV0ZXMsIGVsZW1lbnRUb0V4cG9ydFRvSWQsIGlX YW50VGVybXMsIGJveCwgYWxsUmVzdWx0cykgew0KCS8vYWxlcnQoeG1sRGF0YUl0 ZW0pOw0KCQ0KCXZhciBvYmogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVt ZW50VG9FeHBvcnRUb0lkKTsNCgl2YXIgY2hpbGRDb3VudCA9IHhtbERhdGFJdGVt LmNoaWxkTm9kZXMubGVuZ3RoOw0KCXZhciBodG1sVGVtcGxhdGUgPSAnJzsNCgl2 YXIgdGVybXNPclJlc3VsdHMgPSAnJzsNCgl2YXIgbGVhZ3VlSWQgPSB4bWxEYXRh SXRlbS5nZXRBdHRyaWJ1dGUoImkiKTsJDQoJdmFyIGxlYWd1ZU5hbWUgPSB4bWxE YXRhSXRlbS5nZXRBdHRyaWJ1dGUoIm4iKTsNCgl2YXIgcm91bmQgPSB4bWxEYXRh SXRlbS5nZXRBdHRyaWJ1dGUoInIiKTsNCgkNCgkvL2FrIGNoY2VtZSB0ZXJtaW55 IHN1dGF6ZSBhbGVibyB2eXNsZWRreSBrb2xhICh0ZWRhIG5hc2xlZHVqdWNlIGFs ZWJvIHByZWRvc2xlKQ0KCS8vVE9ETzogc3ByZXNuaXQga29tZW50YXINCglpZihp V2FudFRlcm1zID09ICJ0cnVlIikgew0KCQl0ZXJtc09yUmVzdWx0cyA9ICLIYXMi OyAvL1RPRE86IHptZW5pdCB0ZXh0IG5hIGtvbnN0YW50dSB6byBza3lsbGENCgl9 IGVsc2Ugew0KCQl0ZXJtc09yUmVzdWx0cyA9ICJW/XNsZWRlayI7IC8vVE9ETzog em1lbml0IHRleHQgbmEga29uc3RhbnR1IHpvIHNreWxsYQ0KCX0JDQoJDQoJCQkN CgkNCglpZihib3ggPT0gInRydWUiKSB7CQkJCQ0KCQlodG1sVGVtcGxhdGUgKz0J JzxoND48YSBocmVmPSInK2dlbmVyYXRlVVJMKCI0MzcxIixsZWFndWVJZCxsZWFn dWVOYW1lLG51bGwsbnVsbCkrJyI+PHNwYW4gaWQ9InJvdW5kUmVzdWx0Qm94TGVh Z3VlTmFtZScrbGVhZ3VlSWQrJyI+JytsZWFndWVOYW1lKyc8L3NwYW4+PC9hPiAt ICcgKyBhdHRyaWJ1dGVzWyJyIl0gKyAnLiBLb2xvPC9oND4nICsgLy9UT0RPOiB6 bWVuaXQgdGV4dCBuYSBrb25zdGFudHUgem8gc2t5bGxhDQoJCQkJCQkvL1RPRE86 IHppc3RpdCBkYXR1bSBrb2xhIChBS08/KQ0KCQkJCQkJJzx0YWJsZSBjbGFzcz0i c3BvcnRMZWFndWVUYWJsZSIgY2VsbHNwYWNpbmc9IjAiPicgKyANCgkJCQkJCScJ PHRoZWFkPicgKyANCgkJCQkJCScJCTx0cj4nICsgDQoJCQkJCQknCQkJPHRoIGNs YXNzPSJub0NlbnRlciI+RG9t4WPtPC90aD4nICsNCgkJCQkJCScJCQk8dGggY2xh c3M9Im5vQ2VudGVyIj5Ib3N06TwvdGg+JyArIA0KCQkJCQkJJwkJCTx0aCBjbGFz cz0ic21hbGxDZWxsIj5W/XNsZWRlazwvdGg+JyArDQoJCQkJCQknCQk8L3RyPicg Kw0KCQkJCQkJJwk8L3RoZWFkPicgKw0KCQkJCQkJJwk8dGJvZHk+JzsJCQkJCQkJ CQkJCQkJCQ0KCQkNCgl9IGVsc2Ugew0KCQl2YXIgaGVhZGVyVGV4dCA9IGF0dHJp YnV0ZXNbInIiXSArICcuIEtvbG8nOw0KCQlpZiAoZWxlbWVudFRvRXhwb3J0VG9J ZD09ImxlYWd1ZVRoaXNSb3VuZFRhYmxlIikgDQoJCXsNCgkJCWhlYWRlclRleHQg PSAiVv1zbGVka3kgYWt0deFsbu1obyBrb2xhIC0gIiArIGhlYWRlclRleHQ7DQoJ CX0gDQoJCWVsc2UgaWYoZWxlbWVudFRvRXhwb3J0VG9JZD09ImxlYWd1ZU5leHRS b3VuZFRhYmxlIikgDQoJCXsNCgkJCWhlYWRlclRleHQgPSAiTmFkY2jhemVq7WPt IGtvbG8gLSAiICsgaGVhZGVyVGV4dDsNCgkJfQ0KCQlodG1sVGVtcGxhdGUgKz0J JzxkaXYgY2xhc3M9ImNvbG9yZWRQYW5lbDAzIj4nICsNCgkJCQkJCScJPGRpdiBj bGFzcz0idG9wQ29ybmVycyI+PHNwYW4gY2xhc3M9ImxlZnQiPiZuYnNwOzwvc3Bh bj48c3BhbiBjbGFzcz0icmlnaHQiPiZuYnNwOzwvc3Bhbj48L2Rpdj4nICsNCgkJ CQkJCScJPGgzPicgKyBoZWFkZXJUZXh0ICsgJzwvaDM+JyArIA0KCQkJCQkJJwk8 ZGl2IGNsYXNzPSJib3R0b21Db3JuZXJzIj48c3BhbiBjbGFzcz0ibGVmdCI+Jm5i c3A7PC9zcGFuPjxzcGFuIGNsYXNzPSJyaWdodCI+Jm5ic3A7PC9zcGFuPjwvZGl2 PicgKw0KCQkJCQkJJzwvZGl2PicgKw0KCQkJCQkJJzx0YWJsZSBjbGFzcz0ic3Bv cnRMZWFndWVUYWJsZSIgY2VsbHNwYWNpbmc9IjAiPicgKyANCgkJCQkJCScJPHRo ZWFkPicgKyANCgkJCQkJCScJCTx0cj4nICsgDQoJCQkJCQknCQkJPHRoIGNsYXNz PSJub0NlbnRlciI+WuFwYXM8L3RoPicgKw0KCQkJCQkJJwkJCTx0aCBjbGFzcz0i bm9DZW50ZXIgd2lkdGgyNSI+RG9t4WPtPC90aD4nICsgDQoJCQkJCQknCQkJPHRo IGNsYXNzPSJub0NlbnRlciB3aWR0aDI1Ij5Ib3N06TwvdGg+JyArDQoJCQkJCQkn CQkJPHRoPicgKyB0ZXJtc09yUmVzdWx0cyArICAnPC90aD4nICsNCgkJCQkJCScJ CTwvdHI+JyArDQoJCQkJCQknCTwvdGhlYWQ+JyArDQoJCQkJCQknCTx0Ym9keT4n Ow0KCX0NCgkJCQkJCQ0KCWZvcih2YXIgaSA9IDA7IGkgPCBjaGlsZENvdW50OyBp KyspIHsNCgkJaG9tZVRlYW1OYW1lID0geG1sRGF0YUl0ZW0uY2hpbGROb2Rlc1tp XS5nZXRBdHRyaWJ1dGUoImhuIik7DQoJCWhvbWVUZWFtSWQgPSB4bWxEYXRhSXRl bS5jaGlsZE5vZGVzW2ldLmdldEF0dHJpYnV0ZSgiaCIpOw0KCQl2aXNpdG9yVGVh bU5hbWUgPSB4bWxEYXRhSXRlbS5jaGlsZE5vZGVzW2ldLmdldEF0dHJpYnV0ZSgi dm4iKTsNCgkJdmlzaXRvclRlYW1JZCA9IHhtbERhdGFJdGVtLmNoaWxkTm9kZXNb aV0uZ2V0QXR0cmlidXRlKCJ2Iik7DQoJCW1hdGNoVGVybU9yUmVzdWx0ID0geG1s RGF0YUl0ZW0uY2hpbGROb2Rlc1tpXS5nZXRBdHRyaWJ1dGUoInIiKTsNCgkJbWF0 Y2hDb2RlID0geG1sRGF0YUl0ZW0uY2hpbGROb2Rlc1tpXS5nZXRBdHRyaWJ1dGUo ImMiKTsNCgkJDQoJCWlmKGJveCA9PSAidHJ1ZSIpIHsJDQoJCQlodG1sVGVtcGxh dGUgKz0gJzx0ciAnICsgKChpJTI9PTApPycnOidjbGFzcz0ib2RkIicpICsgJz4n ICsNCgkJCQkJCQknCTx0ZCBjbGFzcz0ibm9DZW50ZXIiPjxhIGhyZWY9IicgKyBn ZW5lcmF0ZVVSTCgiNDM4NyIsbGVhZ3VlSWQsbGVhZ3VlTmFtZSxob21lVGVhbUlk LGhvbWVUZWFtTmFtZSkgKyAnIj4nICsgaG9tZVRlYW1OYW1lICsgJzwvYT48L3Rk PicgKyAgDQoJCQkJCQkJJwk8dGQgY2xhc3M9Im5vQ2VudGVyIj48YSBocmVmPSIn ICsgZ2VuZXJhdGVVUkwoIjQzODciLGxlYWd1ZUlkLGxlYWd1ZU5hbWUsdmlzaXRv clRlYW1JZCx2aXNpdG9yVGVhbU5hbWUpICsgJyI+JyArIHZpc2l0b3JUZWFtTmFt ZSArICc8L2E+PC90ZD4nICsgIA0KCQkJCQkJCScJPHRkPicgKyBtYXRjaFRlcm1P clJlc3VsdCArICc8L3RkPicgKwkJCQkJCSANCgkJCQkJCQknPC90cj4nOwkJCQ0K CQl9IGVsc2Ugew0KCQkNCgkJCWh0bWxUZW1wbGF0ZSArPSAnPHRyICcgKyAoKGkl Mj09MCk/Jyc6J2NsYXNzPSJvZGQiJykgKyAnPicgKw0KCQkJCQkJCSAnCTx0ZCBj bGFzcz0ibm9DZW50ZXIiPicgKyAgKG1hdGNoQ29kZS50b1N0cmluZygpLmluZGV4 T2YoIm5lbmkiKSA+IC0xID8gIiZuYnNwOyIgOiBtYXRjaENvZGUpICsgJzwvdGQ+ JyArDQoJCQkJCQkJICcJPHRkIGNsYXNzPSJub0NlbnRlciB3aWR0aDM1Ij48YSBo cmVmPSInICsgZ2VuZXJhdGVVUkwoIjQzODciLGxlYWd1ZUlkLGxlYWd1ZU5hbWUs aG9tZVRlYW1JZCxob21lVGVhbU5hbWUpICsgJyI+JyArIGhvbWVUZWFtTmFtZSAr ICc8L2E+PC90ZD4nICsgIA0KCQkJCQkJCSAnCTx0ZCBjbGFzcz0ibm9DZW50ZXIg d2lkdGgzNSI+PGEgaHJlZj0iJyArIGdlbmVyYXRlVVJMKCI0Mzg3IixsZWFndWVJ ZCxsZWFndWVOYW1lLHZpc2l0b3JUZWFtSWQsdmlzaXRvclRlYW1OYW1lKSArICci PicgKyB2aXNpdG9yVGVhbU5hbWUgKyAnPC9hPjwvdGQ+JyArICANCgkJCQkJCQkg Jwk8dGQ+JyArIG1hdGNoVGVybU9yUmVzdWx0ICsgJzwvdGQ+JyArCQkJCQkJIA0K CQkJCQkJCSAnPC90cj4nOwkNCgkJfQ0KCQkNCgl9DQoJCQ0KCWh0bWxUZW1wbGF0 ZSArPSAnCTwvdGJvZHk+JyArIA0KCQkJCQknPC90YWJsZT4nOwkNCgkJCQkJDQoJ aWYoZWxlbWVudFRvRXhwb3J0VG9JZD09ImxlYWd1ZU5leHRSb3VuZFRhYmxlIikg DQoJew0KCQlodG1sVGVtcGxhdGUgKz0JCScJPGEgY2xhc3M9ImFsbEluZm9MaW5r IiBocmVmPSInK2dlbmVyYXRlVVJMKCI0NDI3IixsZWFndWVJZCxsZWFndWVOYW1l LG51bGwsbnVsbCkrJyI+TG9zIHNvdXTsnmUgbmEgZGFsmu0ga29sYTwvYT4nICsN CgkJCQkJCQknCTxhIGNsYXNzPSJ1c2VyQWN0aW9uIiBocmVmPSInK2dlbmVyYXRl VVJMKCI0NDYwIixsZWFndWVJZCxsZWFndWVOYW1lLG51bGwsbnVsbCkrJy9rb2xv Jytyb3VuZCsnIj4nICsNCgkJCQkJCQknCQk8c3BhbiBjbGFzcz0idXNlckFjdGlv bkxlZnQiPiZuYnNwOzwvc3Bhbj4nICsNCgkJCQkJCQknCQk8c3BhbiBjbGFzcz0i dXNlckFjdGlvbk1pZGRsZSI+Vt1TTEVES1kgUNjNilTNSE8gS09MQSBOQSBNT0JJ TDwvc3Bhbj4nICsNCgkJCQkJCQknCQk8c3BhbiBjbGFzcz0idXNlckFjdGlvblJp Z2h0IGFkZFRleHQiPiZuYnNwOzwvc3Bhbj4nICsNCgkJCQkJCQknCTwvYT4nOw0K CX0NCglpZihhbGxSZXN1bHRzID09ICJmYWxzZSIpDQoJew0KCQlkb2N1bWVudC5n ZXRFbGVtZW50QnlJZChlbGVtZW50VG9FeHBvcnRUb0lkKS5pbm5lckhUTUw9aHRt bFRlbXBsYXRlOw0KCX0gZWxzZSB7DQoJCWlmICgoYWN0dWFsSXRlbUluZGV4JTUp ID09IDApew0KCQkgICAgaWYgKChhY3R1YWxJdGVtSW5kZXglMTApICE9IDApew0K CQkgICAgICAgIHBhZ2luZ1twYWdpbmcubGVuZ3RoXSA9IHJldHVybkFkdigpOw0K CQkgICAgfQ0KCQkgICAgcGFnaW5nW3BhZ2luZy5sZW5ndGhdID0gIjxkaXY+Iito dG1sVGVtcGxhdGUrIjwvZGl2PiI7DQoJCX1lbHNlew0KCQkgICAgaWYgKHBhZ2lu Zy5sZW5ndGggPT0gMSkgcGFnaW5nW3BhZ2luZy5sZW5ndGhdID0gIjxkaXY+Iito dG1sVGVtcGxhdGUrIjwvZGl2PiI7DQoJCSAgICBlbHNlIHBhZ2luZ1socGFnaW5n Lmxlbmd0aC0xKV0gKz0gIjxkaXY+IitodG1sVGVtcGxhdGUrIjwvZGl2PiI7DQoJ CX0NCgkJaWYgKChhY3R1YWxJdGVtSW5kZXgrMSkgPT0gaXRlbXNDb3VudCl7DQoJ CSAgICBTQi5hY3R1YWxpemUocGFnaW5nKTsNCgkJICAgIHByaW50UGFnZSgxLGVs ZW1lbnRUb0V4cG9ydFRvSWQpOw0KCQl9DQoJfQ0KfQ0KDQpmdW5jdGlvbiBsb2Fk VGVhbVRhYmxlKGxlYWd1ZSxvcmRlcixzZWFzb24sZWxlbWVudFRvRXhwb3J0VG9J ZCx0ZW1wbGF0ZSkNCnsNCiAgICB2YXIgcmVzdWx0VGVhbVRhYmxlUmVhZGVyID0g bmV3IEFqYXhEYXRhUmVhZGVyKCk7DQoNCiAgICAvLyBNZXRob2QgZm9yIGV4ZWN1 dGlvbiBvZiBnZXR0aW5nIGRhdGEgYW5kIHdpdGggc2V0dGluZ3Mgb2YgZmluYWwN CiAgICAvLyBkZWZpbml0aW9uOiBnZXREYXRhQnlJdGVtKA0KICAgIC8vICAgIHVy bCAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGEgc291cmNlICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gb2JsaWdhdG9yeV0sDQog ICAgLy8gICAgbWV0aG9kMkV4ZWN1dGUgICAgICAgICAgICAgICBbc2luZ2xlIHN0 cmluZyBtZXRob2QgbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgLSBvYmxp Z2F0b3J5XSwNCiAgICAvLyAgICB4bWxOb2RlTmFtZSAgICAgICAgICAgICAgICAg IFtjZW50cmFsIG5hbWUgb2Ygbm9kZSB3aXRoIGRhdGEgYXR0cmlidXRlcyAgICAg ICAgICAtIG9ibGlnYXRvcnldLA0KICAgIC8vICAgIGxvYWRpbmdEZXNjcmlwdGlv biAgICAgICAgICAgW2N1c3RvbSB0ZXh0IGZvciBsb2FkaW5nIGRlc2NyaXB0aW9u ICAgICAgICAgICAgICAgIC0gb3B0aW9uYWxdLA0KICAgIC8vICAgIGFmdGVyTG9h ZERlc2NyaXB0aW9uICAgICAgICAgW2N1c3RvbSB0ZXh0IHRvIHNob3cgYWZ0ZXIg bG9hZGluZyAgICAgICAgICAgICAgICAgIC0gb3B0aW9uYWxdLA0KICAgIC8vICAg IHNwZWNpYWxPYmplY3RJZDRMb2FkaW5nVGV4dHMgW0hUTUwgZWxlbWVudCBJZCAt IGZvciBzaG93aW5nIGN1c3RvbSBsb2FkaW5nIHRleHRzIC0gb3B0aW9uYWxdLA0K ICAgIC8vICAgIHNwZWNpYWxPYmplY3RJZDRFcnJvclRleHRzICAgW0hUTUwgZWxl bWVudCBJZCAtIGZvciBzaG93aW5nIGN1c3RvbSBlcnJvciB0ZXh0cyAgIC0gb3B0 aW9uYWxdDQogICAgLy8gICAgKQ0KICAgIHZhciBwaXBlVVJMID0gImh0dHA6Ly9z cG9ydHJlc3VsdHMucGh5c3Rlci5jb20vQVBJL0dldFRlYW1zSW5MZWFndWUucGhw PyIgKw0KCQkJCXRlc3RBdHRyTnVsbChsZWFndWUsImxlYWd1ZSIsIiIpICsNCgkJ CQl0ZXN0QXR0ck51bGwob3JkZXIsIm9yZGVyIiwiJTI2IikJKw0KCQkJCXRlc3RB dHRyTnVsbCgxLCJsZWFndWVuYW1lIiwiJTI2IikJKw0KCQkJCXRlc3RBdHRyTnVs bChzZWFzb24sInNlYXNvbiIsIiUyNiIpOw0KICAgIHJlc3VsdFRlYW1UYWJsZVJl YWRlci5nZXREYXRhQnlJdGVtKCcvcGlwZS5hc2h4P2NhY2hlPScrcGlwZUNhY2hl Kycmd2VpZ2h0PScrcGlwZVdlaWdodCsnJnR5cGU9dGV4dC94bWwmVVJMPScgKyBw aXBlVVJMLCAnZ2V0VGVhbVRhYmxlSXRlbXwsIicrZWxlbWVudFRvRXhwb3J0VG9J ZCsnIiwiJyt0ZW1wbGF0ZSsnIicsICdmJyk7DQp9DQoNCmZ1bmN0aW9uIGdldFRl YW1UYWJsZUl0ZW0oeG1sRGF0YUl0ZW0sIGFjdHVhbEl0ZW1JbmRleCwgaXRlbXND b3VudCwgYXR0cmlidXRlcywgZWxlbWVudFRvRXhwb3J0VG9JZCwgdGVtcGxhdGUp IHsNCgl2YXIgb2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudFRv RXhwb3J0VG9JZCk7DQoJdmFyIGNvdW50ID0geG1sRGF0YUl0ZW0uY2hpbGROb2Rl cy5sZW5ndGg7CQ0KCXZhciBsZWFndWVJZCA9IHhtbERhdGFJdGVtLmdldEF0dHJp YnV0ZSgiaSIpOw0KCXZhciBsZWFndWVOYW1lID0geG1sRGF0YUl0ZW0uZ2V0QXR0 cmlidXRlKCJuIik7CQ0KCXZhciBodG1sVGVtcGxhdGUgPSAnJzsNCgkNCgkJCQ0K CWlmKHBhcnNlSW50KHRlbXBsYXRlKT09NDM4MykgewkNCgkgICAgaHRtbFRlbXBs YXRlICs9CSc8dGFibGUgY2xhc3M9InNwb3J0TGVhZ3VlVGFibGUiIGNlbGxzcGFj aW5nPSIwIj4nICsgDQoJCSAgICAJCQknCTx0aGVhZD4nICsgDQoJCQkgICAgCQkn CQk8dHI+JyArIA0KCQkJCSAgICAJJwkJCTx0aCBjbGFzcz0ibm9DZW50ZXIgc21h bGxDZWxsIj5Qb/guPC90aD4nICsNCgkJCQkJICAgICcJCQk8dGggY2xhc3M9Im5v Q2VudGVyIj5U/W08L3RoPicgKyANCgkJCQkJICAgICcJCQk8dGg+PC90aD4nICsN CgkJCQkJICAgIC8vJwkJCTx0aD48L3RoPicgKw0KCQkJCQkgICAgJwkJPC90cj4n ICsNCgkJCQkJICAgICcJPC90aGVhZD4nICsNCgkJCQkJICAgICcJPHRib2R5Pic7 DQoJfWVsc2V7DQoJICAgIGh0bWxUZW1wbGF0ZSArPQknPHRhYmxlIGNsYXNzPSJz cG9ydExlYWd1ZVRhYmxlIiBjZWxsc3BhY2luZz0iMCI+JyArIA0KCQkgICAgCQkJ Jwk8dGhlYWQ+JyArIA0KCQkJICAgIAkJJwkJPHRyPicgKyANCiAgICAJCQkJCS8v JwkJCTx0aCBjbGFzcz0ibm9DZW50ZXIgc21hbGxDZWxsIj5Qb/guPC90aD4nICsN CgkgICAgCQkJCScJCQk8dGggY2xhc3M9Im5vQ2VudGVyIj5U/W08L3RoPicgKyAN CgkJICAgIAkJCScJCQk8dGg+6GVydmVu6SAvIJ5sdXTpIGthcnR5PC90aD4nICsN CgkJCSAgICAJCS8vJwkJCTx0aD48L3RoPicgKw0KCQkJCSAgICAJJwkJPC90cj4n ICsNCgkJCQkJICAgICcJPC90aGVhZD4nICsNCgkJCQkJICAgICcJPHRib2R5Pic7 DQoJfQkJCQkJCQkJCQkJCQkJCQkJDQoJDQoJZm9yKHZhciBpID0gMDsgaSA8IGNv dW50OyBpKyspIHsNCgkJdmFyIHRlYW1JZCA9IHhtbERhdGFJdGVtLmNoaWxkTm9k ZXNbaV0uZ2V0QXR0cmlidXRlKCJpIik7DQoJCXZhcgl0ZWFtTmFtZSA9IHhtbERh dGFJdGVtLmNoaWxkTm9kZXNbaV0uZ2V0QXR0cmlidXRlKCJuIik7DQoJCWlmKHBh cnNlSW50KHRlbXBsYXRlKT09NDM4Mykgew0KCQkJaHRtbFRlbXBsYXRlICs9ICc8 dHIgJyArICgoKGkrMSklMj09MCk/Jyc6J2NsYXNzPSJvZGQiJykgKyAnPicgKw0K CQkJCQkJCScJPHRkIGNsYXNzPSJub0NlbnRlciI+JyArIChpKzEpICsgJzwvdGQ+ JyArDQoJCQkJCQkJJwk8dGQgY2xhc3M9Im5vQ2VudGVyIj48YSBocmVmPSInICsg Z2VuZXJhdGVVUkwoIjQzODciLGxlYWd1ZUlkLGxlYWd1ZU5hbWUsdGVhbUlkLHRl YW1OYW1lKSArICciPicgKyB0ZWFtTmFtZSArICc8L2E+PC90ZD4nICsNCgkJCQkJ CQknCTx0ZD48YSBocmVmPSInICsgZ2VuZXJhdGVVUkwoIjQzODciLGxlYWd1ZUlk LGxlYWd1ZU5hbWUsdGVhbUlkLHRlYW1OYW1lKSArICciPnpvYnJheml0IGluZm9y bWFjZSBvIHT9bXU8L2E+PC90ZD4nICsNCgkJCQkJCQknPC90cj4nOwkJDQoJCX0g ZWxzZSB7DQoJCQlodG1sVGVtcGxhdGUgKz0gJzx0ciAnICsgKCgoaSsxKSUyPT0w KT8nJzonY2xhc3M9Im9kZCInKSArICc+JyArDQoJCQkJCQkJLy8nCTx0ZCBjbGFz cz0ibm9DZW50ZXIiPicgKyAoaSsxKSArICc8L3RkPicgKw0KCQkJCQkJCScJPHRk IGNsYXNzPSJub0NlbnRlciI+JyArIHRlYW1OYW1lICsgJzwvdGQ+JyArDQoJCQkJ CQkJJwk8dGQ+PGEgaHJlZj0iJyArIGdlbmVyYXRlVVJMKCI0Mzg3IixsZWFndWVJ ZCxsZWFndWVOYW1lLHRlYW1JZCx0ZWFtTmFtZSkgKyAnLyNsY2FyZHMiPnpvYnJh eml0IHRhYnVsa3Ugb2Jkcp5lbv1jaCBrYXJldCB2IHRvbXRvIHT9bXU8L2E+PC90 ZD4nICsNCgkJCQkJCQkvLycJPHRkPjxhIGhyZWY9IicgKyBnZW5lcmF0ZVVSTCgi NDM4NyIsbGVhZ3VlSWQsdGVhbUlkKSArICcvI2xjYXJkcyI+em9icmF6aXQgZGV0 YWlsIHT9bXU8L2E+PC90ZD4nICsNCgkJCQkJCQknPC90cj4nOw0KCQl9DQoJfQ0K CQ0KCWh0bWxUZW1wbGF0ZSArPSAnCTwvdGJvZHk+JyArIA0KCQkJCQknPC90YWJs ZT4nOwkNCgkNCgl2YXIgbmV3ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi ZGl2Iik7DQoJbmV3ZGl2LmlubmVySFRNTCArPSBodG1sVGVtcGxhdGU7CQ0KCW9i ai5hcHBlbmRDaGlsZChuZXdkaXYpOwkNCgkNCn0NCg0KZnVuY3Rpb24gbG9hZENh cmRzVGFibGUoZmlsdGVyLHRlYW1uYW1lLGNvdW50LHNlYXNvbixvcmRlcixwYWdl LGVsZW1lbnRUb0V4cG9ydFRvSWQsdGVtcGxhdGUpDQp7CQ0KICAgIHZhciByZXN1 bHRDYXJkVGFibGVSZWFkZXIgPSBuZXcgQWpheERhdGFSZWFkZXIoKTsNCg0KICAg IC8vIE1ldGhvZCBmb3IgZXhlY3V0aW9uIG9mIGdldHRpbmcgZGF0YSBhbmQgd2l0 aCBzZXR0aW5ncyBvZiBmaW5hbA0KICAgIC8vIGRlZmluaXRpb246IGdldERhdGFC eUl0ZW0oDQogICAgLy8gICAgdXJsICAgICAgICAgICAgICAgICAgICAgICAgICBb ZGF0YSBzb3VyY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLSBvYmxpZ2F0b3J5XSwNCiAgICAvLyAgICBtZXRob2QyRXhlY3V0ZSAgICAg ICAgICAgICAgIFtzaW5nbGUgc3RyaW5nIG1ldGhvZCBuYW1lICAgICAgICAgICAg ICAgICAgICAgICAgICAtIG9ibGlnYXRvcnldLA0KICAgIC8vICAgIHhtbE5vZGVO YW1lICAgICAgICAgICAgICAgICAgW2NlbnRyYWwgbmFtZSBvZiBub2RlIHdpdGgg ZGF0YSBhdHRyaWJ1dGVzICAgICAgICAgIC0gb2JsaWdhdG9yeV0sDQogICAgLy8g ICAgbG9hZGluZ0Rlc2NyaXB0aW9uICAgICAgICAgICBbY3VzdG9tIHRleHQgZm9y IGxvYWRpbmcgZGVzY3JpcHRpb24gICAgICAgICAgICAgICAgLSBvcHRpb25hbF0s DQogICAgLy8gICAgYWZ0ZXJMb2FkRGVzY3JpcHRpb24gICAgICAgICBbY3VzdG9t IHRleHQgdG8gc2hvdyBhZnRlciBsb2FkaW5nICAgICAgICAgICAgICAgICAgLSBv cHRpb25hbF0sDQogICAgLy8gICAgc3BlY2lhbE9iamVjdElkNExvYWRpbmdUZXh0 cyBbSFRNTCBlbGVtZW50IElkIC0gZm9yIHNob3dpbmcgY3VzdG9tIGxvYWRpbmcg dGV4dHMgLSBvcHRpb25hbF0sDQogICAgLy8gICAgc3BlY2lhbE9iamVjdElkNEVy cm9yVGV4dHMgICBbSFRNTCBlbGVtZW50IElkIC0gZm9yIHNob3dpbmcgY3VzdG9t IGVycm9yIHRleHRzICAgLSBvcHRpb25hbF0NCiAgICAvLyAgICApDQogICAgdmFy IHBpcGVVUkwgPSAiaHR0cDovL3Nwb3J0cmVzdWx0cy5waHlzdGVyLmNvbS9BUEkv R2V0Q2FyZHMucGhwPyIgKw0KCQkJCXRlc3RBdHRyTnVsbChmaWx0ZXIsImZpbHRl ciIsIiIpICsNCgkJCQl0ZXN0QXR0ck51bGwodGVhbW5hbWUsInRlYW1uYW1lIiwi JTI2IikJKw0KCQkJCXRlc3RBdHRyTnVsbChjb3VudCwiY291bnQiLCIlMjYiKSAr DQoJCQkJdGVzdEF0dHJOdWxsKHNlYXNvbiwic2Vhc29uIiwiJTI2IikJKw0KCQkJ CXRlc3RBdHRyTnVsbChvcmRlciwib3JkZXIiLCIlMjYiKSArDQoJCQkJdGVzdEF0 dHJOdWxsKHBhZ2UsInBhZ2UiLCIlMjYiKTsNCgkNCgkvL2FsZXJ0KHBpcGVVUkwp OwkJCQ0KCQ0KICAgIHJlc3VsdENhcmRUYWJsZVJlYWRlci5nZXREYXRhQnlJdGVt KCcvcGlwZS5hc2h4P2NhY2hlPScrcGlwZUNhY2hlKycmd2VpZ2h0PScrcGlwZVdl aWdodCsnJnR5cGU9dGV4dC94bWwmVVJMPScgKyBwaXBlVVJMLCAnZ2V0Q2FyZFJl c3VsdEl0ZW18LCInK2VsZW1lbnRUb0V4cG9ydFRvSWQrJyIsIicrdGVtcGxhdGUr JyInLCAnZicpOw0KfQ0KDQpmdW5jdGlvbiBnZXRDYXJkUmVzdWx0SXRlbSh4bWxE YXRhSXRlbSwgYWN0dWFsSXRlbUluZGV4LCBpdGVtc0NvdW50LCBhdHRyaWJ1dGVz LCBlbGVtZW50VG9FeHBvcnRUb0lkLCB0ZW1wbGF0ZSkgew0KCXZhciBvYmogPSBk b2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50VG9FeHBvcnRUb0lkKTsNCgl2 YXIgY291bnQgPSB4bWxEYXRhSXRlbS5jaGlsZE5vZGVzLmxlbmd0aDsNCgl2YXIg bGVhZ3VlSWQgPSB4bWxEYXRhSXRlbS5nZXRBdHRyaWJ1dGUoImxpIik7CQkNCgl2 YXIgaHRtbFRlbXBsYXRlID0gJyc7DQoJDQoJDQoJaWYocGFyc2VJbnQodGVtcGxh dGUpPT00Mzg3KSB7DQoJCWh0bWxUZW1wbGF0ZSArPSAnPHRhYmxlIGNsYXNzPSJz cG9ydExlYWd1ZVRhYmxlIGhhbGZTaXplIiBjZWxsc3BhY2luZz0iMCI+JyArIA0K CQkJCQkJJwk8dGhlYWQ+JyArIA0KCQkJCQkJJwkJPHRyPicgKyANCgkJCQkJCScJ CQk8dGggY2xhc3M9Im5vQ2VudGVyIHNtYWxsQ2VsbCI+UG/4YWTtPC90aD4nICsg DQoJCQkJCQknCQkJPHRoIGNsYXNzPSJub0NlbnRlciI+Sm3pbm8gaHLh6GU8L3Ro PicgKyANCgkJCQkJCScJCQk8dGg+S2FydHk8L3RoPicgKyANCgkJCQkJCScJCTwv dHI+JyArIA0KCQkJCQkJJwk8L3RoZWFkPicgKyANCgkJCQkJCScJPHRib2R5Pic7 DQoJfSBlbHNlIHsNCiANCgkJaHRtbFRlbXBsYXRlICs9CSc8dGFibGUgY2xhc3M9 InNwb3J0TGVhZ3VlVGFibGUiIGNlbGxzcGFjaW5nPSIwIj4nICsNCgkJCQkJCScJ PHRoZWFkPicgKw0KCQkJCQkJJwkJPHRyPicgKw0KCQkJCQkJJwkJCTx0aCBjbGFz cz0ibm9DZW50ZXIiPlBv+GFk7TwvdGg+JyArDQoJCQkJCQknCQkJPHRoIGNsYXNz PSJub0NlbnRlciB3aWR0aDI1Ij5KbelubzwvdGg+JyArDQoJCQkJCQknCQkJPHRo IGNsYXNzPSJub0NlbnRlciB3aWR0aDI1Ij5U/W08L3RoPicgKw0KCQkJCQkJJwkJ CTx0aD5LYXJ0eTwvdGg+JyArCQkJCQ0KCQkJCQkJJwkJPC90cj4JJyArCQkJCQkJ CQkJDQoJCQkJCQknCTwvdGhlYWQ+JyArDQoJCQkJCQknCTx0Ym9keT4nOw0KCX0N CgkNCgkNCglmb3IodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewkJCQ0KCQl2 YXIgcGxheWVyTmFtZSA9IHhtbERhdGFJdGVtLmNoaWxkTm9kZXNbaV0uZ2V0QXR0 cmlidXRlKCJmbiIpICsgIiAiICsgeG1sRGF0YUl0ZW0uY2hpbGROb2Rlc1tpXS5n ZXRBdHRyaWJ1dGUoInNuIik7DQoJCXZhcgl0ZWFtTmFtZSA9IHhtbERhdGFJdGVt LmNoaWxkTm9kZXNbaV0uZ2V0QXR0cmlidXRlKCJ0biIpOw0KCQl2YXIgdGVhbUlk ID0geG1sRGF0YUl0ZW0uY2hpbGROb2Rlc1tpXS5nZXRBdHRyaWJ1dGUoInRpIik7 DQoJCXZhcgljYXJkTnVtYmVyID0geG1sRGF0YUl0ZW0uY2hpbGROb2Rlc1tpXS5n ZXRBdHRyaWJ1dGUoImMiKTsNCgkJaWYocGFyc2VJbnQodGVtcGxhdGUpPT00Mzg3 KSB7DQoJCQlodG1sVGVtcGxhdGUgKz0gJzx0ciAnICsgKCgoaSsxKSUyPT0wKT8n JzonY2xhc3M9Im9kZCInKSArICc+JyArDQoJCQkJCQkgJwk8dGQgY2xhc3M9Im5v Q2VudGVyIj4nICsgKGkrMSkgKyAnPC90ZD4nICsNCgkJCQkJCSAnCTx0ZCBjbGFz cz0ibm9DZW50ZXIiPicgKyBwbGF5ZXJOYW1lICsgJzwvdGQ+JyArDQoJCQkJCQkg Jwk8dGQgY2xhc3M9InJlZCI+JyArIGNhcmROdW1iZXIgKyAnPC90ZD4nICsNCgkJ CQkJCSAnPC90cj4nOw0KCQl9IGVsc2Ugew0KCQkJaHRtbFRlbXBsYXRlICs9ICc8 dHIgJyArICgoKGkrMSklMj09MCk/Jyc6J2NsYXNzPSJvZGQiJykgKyAnPicgKw0K CQkJCQkJICcJPHRkIGNsYXNzPSJub0NlbnRlciI+JyArIChpKzEpICsgJzwvdGQ+ JyArDQoJCQkJCQkgJwk8dGQgY2xhc3M9Im5vQ2VudGVyIj4nICsgcGxheWVyTmFt ZSArICc8L3RkPicgKw0KCQkJCQkJICcJPHRkIGNsYXNzPSJub0NlbnRlciI+PGEg aHJlZj0iJyArIGdlbmVyYXRlVVJMKCI0Mzg3IixsZWFndWVJZCxudWxsLHRlYW1J ZCx0ZWFtTmFtZSkgKyAnIj4nICsgdGVhbU5hbWUgKyAnPC9hPjwvdGQ+JyArDQoJ CQkJCQkgJwk8dGQgY2xhc3M9InJlZCI+JyArIGNhcmROdW1iZXIgKyAnPC90ZD4n ICsNCgkJCQkJCSAnPC90cj4nOw0KCQl9DQoJfQ0KCQ0KCWh0bWxUZW1wbGF0ZSAr PSAnCTwvdGJvZHk+JyArDQoJCQkJCSc8L3RhYmxlPic7DQoJCQkJCQ0KCXZhciBu ZXdkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCgluZXdkaXYu aW5uZXJIVE1MICs9IGh0bWxUZW1wbGF0ZTsJDQoJb2JqLmFwcGVuZENoaWxkKG5l d2Rpdik7DQoJaWYod2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoIiMiKVsxXT09 ImxjYXJkcyIpDQogICAgew0KICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVm PWRvY3VtZW50LmxvY2F0aW9uLmhyZWY7DQogICAgfQ0KfQ0KDQoNCmZ1bmN0aW9u IGxvYWRUZWFtUHJvZ3JhbW1lVGFibGUodGVhbSx0ZWFtbmFtZSxzZWFzb24sZWxl bWVudFRvRXhwb3J0VG9JZCwgbGVhZ3VlSWQpDQp7DQogICAgdmFyIHJlc3VsdFBy b2dyYW1tZVRhYmxlUmVhZGVyID0gbmV3IEFqYXhEYXRhUmVhZGVyKCk7DQoNCiAg ICAvLyBNZXRob2QgZm9yIGV4ZWN1dGlvbiBvZiBnZXR0aW5nIGRhdGEgYW5kIHdp dGggc2V0dGluZ3Mgb2YgZmluYWwNCiAgICAvLyBkZWZpbml0aW9uOiBnZXREYXRh QnlJdGVtKA0KICAgIC8vICAgIHVybCAgICAgICAgICAgICAgICAgICAgICAgICAg W2RhdGEgc291cmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0gb2JsaWdhdG9yeV0sDQogICAgLy8gICAgbWV0aG9kMkV4ZWN1dGUgICAg ICAgICAgICAgICBbc2luZ2xlIHN0cmluZyBtZXRob2QgbmFtZSAgICAgICAgICAg ICAgICAgICAgICAgICAgLSBvYmxpZ2F0b3J5XSwNCiAgICAvLyAgICB4bWxOb2Rl TmFtZSAgICAgICAgICAgICAgICAgIFtjZW50cmFsIG5hbWUgb2Ygbm9kZSB3aXRo IGRhdGEgYXR0cmlidXRlcyAgICAgICAgICAtIG9ibGlnYXRvcnldLA0KICAgIC8v ICAgIGxvYWRpbmdEZXNjcmlwdGlvbiAgICAgICAgICAgW2N1c3RvbSB0ZXh0IGZv ciBsb2FkaW5nIGRlc2NyaXB0aW9uICAgICAgICAgICAgICAgIC0gb3B0aW9uYWxd LA0KICAgIC8vICAgIGFmdGVyTG9hZERlc2NyaXB0aW9uICAgICAgICAgW2N1c3Rv bSB0ZXh0IHRvIHNob3cgYWZ0ZXIgbG9hZGluZyAgICAgICAgICAgICAgICAgIC0g b3B0aW9uYWxdLA0KICAgIC8vICAgIHNwZWNpYWxPYmplY3RJZDRMb2FkaW5nVGV4 dHMgW0hUTUwgZWxlbWVudCBJZCAtIGZvciBzaG93aW5nIGN1c3RvbSBsb2FkaW5n IHRleHRzIC0gb3B0aW9uYWxdLA0KICAgIC8vICAgIHNwZWNpYWxPYmplY3RJZDRF cnJvclRleHRzICAgW0hUTUwgZWxlbWVudCBJZCAtIGZvciBzaG93aW5nIGN1c3Rv bSBlcnJvciB0ZXh0cyAgIC0gb3B0aW9uYWxdDQogICAgLy8gICAgKQ0KICAgIHZh ciBwaXBlVVJMID0gImh0dHA6Ly9zcG9ydHJlc3VsdHMucGh5c3Rlci5jb20vQVBJ L0dldFRlYW1Qcm9ncmFtLnBocD8iICsNCgkJCQl0ZXN0QXR0ck51bGwodGVhbSwi dGVhbSIsIiIpICsNCgkJCQl0ZXN0QXR0ck51bGwodGVhbW5hbWUsInRlYW1uYW1l IiwiJTI2IikJKw0KCQkJCXRlc3RBdHRyTnVsbChzZWFzb24sInNlYXNvbiIsIiUy NiIpOw0KCS8vYWxlcnQocGlwZVVSTCk7DQoJLy9hbGVydCgnZ2V0UHJvZ3JhbW1l UmVzdWx0SXRlbXwsIicrZWxlbWVudFRvRXhwb3J0VG9JZCsnIiwiJytsZWFndWVJ ZCsnIicpOw0KICAgIHJlc3VsdFByb2dyYW1tZVRhYmxlUmVhZGVyLmdldERhdGFC eUl0ZW0oJy9waXBlLmFzaHg/Y2FjaGU9JytwaXBlQ2FjaGUrJyZ3ZWlnaHQ9Jytw aXBlV2VpZ2h0KycmdHlwZT10ZXh0L3htbCZVUkw9JyArIHBpcGVVUkwsICdnZXRQ cm9ncmFtbWVSZXN1bHRJdGVtfCwiJytlbGVtZW50VG9FeHBvcnRUb0lkKyciLCIn K2xlYWd1ZUlkKyciJywnZicpOw0KfQ0KDQpmdW5jdGlvbiBnZXRQcm9ncmFtbWVS ZXN1bHRJdGVtKHhtbERhdGFJdGVtLCBhY3R1YWxJdGVtSW5kZXgsIGl0ZW1zQ291 bnQsIGF0dHJpYnV0ZXMsIGVsZW1lbnRUb0V4cG9ydFRvSWQsIGxlYWd1ZUlkKSB7 DQoJdmFyIG9iaiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRUb0V4 cG9ydFRvSWQpOw0KCXZhciBjb3VudCA9IHhtbERhdGFJdGVtLmNoaWxkTm9kZXMu bGVuZ3RoOw0KCXZhciBodG1sVGVtcGxhdGUgPSAiIjsNCgkNCglodG1sVGVtcGxh dGUgKz0gJzx0YWJsZSBjbGFzcz0ic3BvcnRMZWFndWVUYWJsZSIgY2VsbHNwYWNp bmc9IjAiPicgKyANCgkJCQkJCQknCQk8dGhlYWQ+JyArIA0KCQkJCQkJCScJCQk8 dHI+JyArIA0KCQkJCQkJCScJCQkJPHRoIGNsYXNzPSJub0NlbnRlciI+S29sbzwv dGg+JyArIA0KCQkJCQkJCScJCQkJPHRoIGNsYXNzPSJub0NlbnRlciB3aWR0aDI1 Ij5Tb3VwZfg8L3RoPicgKyANCgkJCQkJCQknCQkJCTx0aD5I+GmadOw8L3RoPicg KyANCgkJCQkJCQknCQkJCTx0aD5EYXR1bSBhIOhhczwvdGg+JyArIA0KCQkJCQkJ CScJCQkJPHRoPlb9c2xlZGVrPC90aD4nICsgDQoJCQkJCQkJJwkJCTwvdHI+JyAr IA0KCQkJCQkJCScJCTwvdGhlYWQ+JyArIA0KCQkJCQkJCScJCTx0Ym9keT4nOwkJ CQkJCQkNCg0KCWZvcih2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7DQoJCXZh ciByb3VuZE51bWJlciA9IHhtbERhdGFJdGVtLmNoaWxkTm9kZXNbaV0uZ2V0QXR0 cmlidXRlKCJybiIpOw0KCQl2YXIJdGVhbU5hbWUgPSB4bWxEYXRhSXRlbS5jaGls ZE5vZGVzW2ldLmdldEF0dHJpYnV0ZSgibiIpOw0KCQl2YXIJdGVhbUlkID0geG1s RGF0YUl0ZW0uY2hpbGROb2Rlc1tpXS5nZXRBdHRyaWJ1dGUoImkiKTsNCgkJdmFy CWRhdGUgPSB4bWxEYXRhSXRlbS5jaGlsZE5vZGVzW2ldLmdldEF0dHJpYnV0ZSgi ZCIpOw0KCQlkYXRlID0gZGF0ZS5zdWJzdHIoMCwxNik7DQoJCWlmIChkYXRlID09 ICIiKSBkYXRlID0gInBvZGxlIGhs4Zplbmt5IjsNCgkJdmFyCXJlc3VsdCA9IHht bERhdGFJdGVtLmNoaWxkTm9kZXNbaV0uZ2V0QXR0cmlidXRlKCJyIik7DQoJCXZh ciBmaWVsZCA9ICgoeG1sRGF0YUl0ZW0uY2hpbGROb2Rlc1tpXS5nZXRBdHRyaWJ1 dGUoInAiKT09IlYiKT8gIlZlbmt1IiA6ICJEb21hIiApOwkNCgkJaHRtbFRlbXBs YXRlICs9ICc8dHIgJyArICgoaSsxKSUyPT0wPycnOidjbGFzcz0ib2RkIicpICsg Jz4nICsNCgkJCQkJCSAnCTx0ZCBjbGFzcz0ibm9DZW50ZXIiPicgKyByb3VuZE51 bWJlciArICc8L3RkPicgKw0KCQkJCQkJICcJPHRkIGNsYXNzPSJub0NlbnRlciI+ PGEgaHJlZj0iJyArIGdlbmVyYXRlVVJMKCI0Mzg3IixsZWFndWVJZCxudWxsLHRl YW1JZCx0ZWFtTmFtZSkgKyAnIj4nICsgdGVhbU5hbWUgKyAnPC9hPjwvdGQ+JyAr DQoJCQkJCQkgJwk8dGQ+JyArIGZpZWxkICsgJzwvdGQ+JyArDQoJCQkJCQkgJwk8 dGQ+JyArIGRhdGUgKyAnPC90ZD4nICsNCgkJCQkJCSAnCTx0ZD4nICsgKChmaWVs ZD09IlZlbmt1Iik/cmV2ZXJzZShyZXN1bHQpOnJlc3VsdCkgKyAnPC90ZD4nICsN CgkJCQkJCSAnPC90cj4nOw0KCX0NCgkNCglodG1sVGVtcGxhdGUgKz0gJwk8L3Ri b2R5PicgKyANCgkJCQkJJzwvdGFibGU+JzsNCgkNCgl2YXIgbmV3ZGl2ID0gZG9j dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQoJbmV3ZGl2LmlubmVySFRNTCAr PSBodG1sVGVtcGxhdGU7CQ0KCW9iai5hcHBlbmRDaGlsZChuZXdkaXYpOwkNCiAg ICBpZih3aW5kb3cubG9jYXRpb24uaHJlZi5zcGxpdCgiIyIpWzFdPT0ibGNhcmRz IikNCiAgICB7DQogICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWY9ZG9jdW1l bnQubG9jYXRpb24uaHJlZjsNCiAgICB9DQp9DQoNCg0KDQovKg0KZnVuY3Rpb24g YWpheFJlcXVlc3QoKXsNCiB2YXIgYWN0aXZleG1vZGVzPVsiTXN4bWwyLlhNTEhU VFAiLCAiTWljcm9zb2Z0LlhNTEhUVFAiXSAvL2FjdGl2ZVggdmVyc2lvbnMgdG8g Y2hlY2sgZm9yIGluIElFDQogaWYgKHdpbmRvdy5BY3RpdmVYT2JqZWN0KXsgLy9U ZXN0IGZvciBzdXBwb3J0IGZvciBBY3RpdmVYT2JqZWN0IGluIElFIGZpcnN0IChh cyBYTUxIdHRwUmVxdWVzdCBpbiBJRTcgaXMgYnJva2VuKQ0KICBmb3IgKHZhciBp PTA7IGk8YWN0aXZleG1vZGVzLmxlbmd0aDsgaSsrKXsNCiAgIHRyeXsNCiAgICBy ZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoYWN0aXZleG1vZGVzW2ldKQ0KICAgfQ0K ICAgY2F0Y2goZSl7DQogICAgLy9zdXBwcmVzcyBlcnJvcg0KICAgfQ0KICB9DQog fQ0KIGVsc2UgaWYgKHdpbmRvdy5YTUxIdHRwUmVxdWVzdCkgLy8gaWYgTW96aWxs YSwgU2FmYXJpIGV0Yw0KICByZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0KCkNCiBl bHNlDQogIHJldHVybiBmYWxzZQ0KfQ0KZnVuY3Rpb24gZWNob0xlYWd1ZU5hbWVC eUlkKElkKSB7DQoJaWYoIHJlZ2lvbmFsU3lzdGVtVVJMID09IGdsb2JhbFN5c3Rl bVVSTCApIHsNCgkJCXZhciB0ZW1wbGF0ZSA9ICI0NDE4IjsNCgkJfSBlbHNlIHsN CgkJCXZhciB0ZW1wbGF0ZSA9ICI0NDYzIjsNCgkJfQ0KICAgIHBpcGVVUkwgPSAn aHR0cDovLycrcmVnaW9uYWxTeXN0ZW1VUkwrJy9jei9zJyt0ZW1wbGF0ZSsnL2xl YWd1ZScrSWQ7DQogICAgcmV0ID0gZ2V0Q29va2llKCJsZWFndWUiK0lkKyJOYW1l Iik7DQoJdmFyIG15Z2V0cmVxdWVzdD1uZXcgYWpheFJlcXVlc3QoKTsNCglteWdl dHJlcXVlc3Qub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7DQoJIGlmICht eWdldHJlcXVlc3QucmVhZHlTdGF0ZT09NCl7DQoJICBpZiAobXlnZXRyZXF1ZXN0 LnN0YXR1cz09MjAwIHx8IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0 dHAiKT09LTEpew0KCSAgIHNldENvb2tpZSgibGVhZ3VlIitJZCsiTmFtZSIsbXln ZXRyZXF1ZXN0LnJlc3BvbnNlVGV4dC5zcGxpdCgiIyIpWzFdLDEpOwkgICANCgkg ICByZXQgPSBnZXRDb29raWUoImxlYWd1ZSIrSWQrIk5hbWUiKTsNCgkgIH0NCgkg IGVsc2V7DQoJICAgYWxlcnQoIkFuIGVycm9yIGhhcyBvY2N1cmVkIG1ha2luZyB0 aGUgcmVxdWVzdCIpOw0KCSAgfQ0KCSB9DQoJfQkNCglteWdldHJlcXVlc3Qub3Bl bigiR0VUIiwgJy9waXBlLmFzaHg/dHlwZT10ZXh0L3htbCZVUkw9JytwaXBlVVJM LCB0cnVlKTsNCglteWdldHJlcXVlc3Quc2VuZChudWxsKTsNCglyZXQgPSBnZXRD b29raWUoImxlYWd1ZSIrSWQrIk5hbWUiKTsNCglyZXR1cm4gcmV0Ow0KfQ0KZnVu Y3Rpb24gZ2V0TGVhZ3VlTmFtZUJ5SWQoSWQpIHsNCglyZXR1cm47DQp9Ki8NCi8v ZnVuY3Rpb24gZm9yIGdlbmVyYXRlIExlYWd1ZSBOYW1lIGZyb20gbGVhZ3VlIElE DQoNCmZ1bmN0aW9uIGVjaG9MZWFndWVOYW1lQnlJZChJZCkgew0KCXJldHVybiBn ZXRDb29raWUoImxlYWd1ZSIrSWQrIk5hbWUiKTsNCn0NCmZ1bmN0aW9uIGdldExl YWd1ZU5hbWVCeUlkKElkLGVsZW1lbnROYW1lKQ0KewkJDQoJaWYoIHJlZ2lvbmFs U3lzdGVtVVJMID09IGdsb2JhbFN5c3RlbVVSTCApIHsNCgkJCXZhciB0ZW1wbGF0 ZSA9ICI0NDE4IjsNCgkJfSBlbHNlIHsNCgkJCXZhciB0ZW1wbGF0ZSA9ICI0NDYz IjsNCgkJfQ0KICAgIHZhciBhamF4UmVhZGVyNFVzZXJCZW5lZml0cyA9IG5ldyBB amF4RGF0YVJlYWRlcigpOw0KICAgIHBpcGVVUkwgPSAnaHR0cDovLycrcmVnaW9u YWxTeXN0ZW1VUkwrJy9jei9zJyt0ZW1wbGF0ZSsnL2xlYWd1ZScrSWQ7DQogICAg YWpheFJlYWRlcjRVc2VyQmVuZWZpdHMuZ2V0RGF0YUJ5SXRlbSgnL3BpcGUuYXNo eD90eXBlPXRleHQveG1sJlVSTD0nK3BpcGVVUkwsICdnZXRMZWFndWVOYW1lfCwi JytJZCsnIiwiJytlbGVtZW50TmFtZSsnIicsJ2xlYWd1ZScpOw0KfQ0KZnVuY3Rp b24gZ2V0TGVhZ3VlTmFtZSh4bWxEYXRhSXRlbSwgYWN0dWFsSXRlbUluZGV4LCBp dGVtc0NvdW50LCBhdHRyaWJ1dGVzLCBJZCwgZWxlbWVudE5hbWUpDQp7CQ0KCS8v YWxlcnQoZWxlbWVudE5hbWUpOw0KCS8vaWYoZWxlbWVudE5hbWUgIT0gbnVsbCkg eyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50TmFtZSkuaW5uZXJIVE1M ICs9IGF0dHJpYnV0ZXNbIm5hbWUiXS5zcGxpdCgiIyIpWzFdOyB9DQoJc2V0Q29v a2llKCJsZWFndWUiK0lkKyJOYW1lIixhdHRyaWJ1dGVzWyJuYW1lIl0uc3BsaXQo IiMiKVsxXSwxKTsJDQp9DQoNCg0KLy9mdW5jdGlvbiBmb3IgZ2VuZXJhdGUgVGVh bSBOYW1lIGZyb20gVGVhbSBJRA0KZnVuY3Rpb24gZWNob1RlYW1OYW1lQnlJZChJ ZCkgew0KCXJldHVybiBnZXRDb29raWUoInRlYW0iK0lkKyJOYW1lIik7DQp9DQoN CmZ1bmN0aW9uIGdldFRlYW1OYW1lQnlJZChJZCkNCnsgIA0KICAgIHZhciBhamF4 UmVhZGVyNFVzZXJCZW5lZml0cyA9IG5ldyBBamF4RGF0YVJlYWRlcigpOw0KICAg IHBpcGVVUkwgPSAnaHR0cDovLycrcmVnaW9uYWxTeXN0ZW1VUkwrJy9jei9zNDQx NC90ZWFtJytJZDsgICAgDQogICAgYWpheFJlYWRlcjRVc2VyQmVuZWZpdHMuZ2V0 RGF0YUJ5SXRlbSgnL3BpcGUuYXNoeD90eXBlPXRleHQveG1sJlVSTD0nK3BpcGVV UkwsICdnZXRUZWFtTmFtZXwsIicrSWQrJyInLCd0ZWFtJyk7DQp9DQoNCmZ1bmN0 aW9uIGdldFRlYW1OYW1lKHhtbERhdGFJdGVtLCBhY3R1YWxJdGVtSW5kZXgsIGl0 ZW1zQ291bnQsIGF0dHJpYnV0ZXMsIElkKQ0Kew0KCS8vZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoZWxlbWVudCkuaW5uZXJIVE1MICs9IGF0dHJpYnV0ZXNbIm5hbWUi XTsNCglzZXRDb29raWUoInRlYW0iK0lkKyJOYW1lIixhdHRyaWJ1dGVzWyJuYW1l Il0sMSk7CQ0KfSANCg0KLy9mdW5jdGlvbiBmb3IgcmV2ZXJzZSBzdHJpbmcNCmZ1 bmN0aW9uIHJldmVyc2UgKHN0cmluZykNCnsNCglzcGxpdGV4dCA9IHN0cmluZy5z cGxpdCgiIik7DQoJcmV2ZXJ0ZXh0ID0gc3BsaXRleHQucmV2ZXJzZSgpOw0KCXJl dmVyc2VkID0gcmV2ZXJ0ZXh0LmpvaW4oIiIpOw0KCXJldHVybiByZXZlcnNlZDsN Cn0NCg0KLy8gVHJhbnNsYXRlcyBjaGFyYWN0ZXJzIGluIHN0ciB1c2luZyBnaXZl biB0cmFuc2xhdGlvbiB0YWJsZXMgDQpmdW5jdGlvbiBzdHJ0ciAoc3RyLCBmcm9t LCB0bykgew0KIA0KICAgIHZhciBmciA9ICcnLCBpID0gMCwgaiA9IDAsIGxlblN0 ciA9IDAsIGxlbkZyb20gPSAwOw0KICAgIHZhciB0bXBGcm9tID0gW107DQogICAg dmFyIHRtcFRvICAgPSBbXTsNCiAgICB2YXIgcmV0ID0gJyc7DQogICAgdmFyIG1h dGNoID0gZmFsc2U7DQogDQogICAgLy8gUmVjZWl2ZWQgcmVwbGFjZV9wYWlycz8N CiAgICAvLyBDb252ZXJ0IHRvIG5vcm1hbCBmcm9tLT50byBjaGFycw0KICAgIGlm ICh0eXBlb2YgZnJvbSA9PT0gJ29iamVjdCcpIHsNCiAgICAgICAgdGhpcy5rcnNv cnQoZnJvbSk7DQogICAgICAgIGZvciAoZnIgaW4gZnJvbSkgew0KICAgICAgICAg ICAgdG1wRnJvbS5wdXNoKGZyKTsNCiAgICAgICAgICAgIHRtcFRvLnB1c2goZnJv bVtmcl0pOw0KICAgICAgICB9DQogDQogICAgICAgIGZyb20gPSB0bXBGcm9tOw0K ICAgICAgICB0byAgID0gdG1wVG87DQogICAgfQ0KICAgIA0KICAgIC8vIFdhbGsg dGhyb3VnaCBzdWJqZWN0IGFuZCByZXBsYWNlIGNoYXJzIHdoZW4gbmVlZGVkDQog ICAgbGVuU3RyICA9IHN0ci5sZW5ndGg7DQogICAgbGVuRnJvbSA9IGZyb20ubGVu Z3RoOw0KICAgIGZvciAoaSA9IDA7IGkgPCBsZW5TdHI7IGkrKykgew0KICAgICAg ICBtYXRjaCA9IGZhbHNlOw0KICAgICAgICBmb3IgKGogPSAwOyBqIDwgbGVuRnJv bTsgaisrKSB7DQoNCiAgICAgICAgICAgIGlmIChzdHIuc3Vic3RyKGksIDEpID09 IGZyb20uc3Vic3RyKGosMSkpIHsNCiAgICAgICAgICAgICAgICBtYXRjaCA9IHRy dWU7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9DQogICAg ICAgIH0NCiAgICAgICAgDQogICAgICAgIGlmIChmYWxzZSAhPT0gbWF0Y2gpIHsN CiAgICAgICAgICAgIHJldCArPSB0by5zdWJzdHIoaiwxKTsNCiAgICAgICAgfSBl bHNlIHsNCiAgICAgICAgICAgIHJldCArPSBzdHIuc3Vic3RyKGksMSk7DQogICAg ICAgIH0NCiAgICB9DQogDQogICAgcmV0dXJuIHJldDsNCn0= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=logs.js Content-Type: application/x-javascript; name=logs.js Content-Location: http://teplice.naseadresa.cz/0000-Global/js/logs.js Content-Transfer-Encoding: Base64 Ly8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQovLyBGdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBsb2dz IG9mIGNvbW11bml0eSBhbmQgdXNlcg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoNCi8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8v IFByZWRlZmluZWQgdmFyaWFibGVzIGZvciBnbG9iYWwgdXNhZ2UNCi8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0K Ly8gaG93IG1hbnkgbG9ncyBzaG91bGQgYmUgc2hvd2VkDQp2YXIgY291bnRPZkxv Z3MyU2hvd0RlZmF1bHQgPSAxMDsNCg0KLy8gZGVmYXVsdCBsb2FkaW5nIG1lc3Nh Z2VzDQp2YXIgbG9hZGluZ0hUTUwgPSAiPGltZyBzcmM9XCJpbWFnZXMvbG9hZGVy LmdpZlwiIGFsdD1cIkxvYWRpbmcuLi5cIiAvPiI7DQp2YXIgYWZ0ZXJMb2FkSFRN TCA9ICI8c3BhbiBzdHlsZT1cImNvbG9yOmJsdWU7XCI+RGF0YSB3ZXJlIGxvYWRl ZC48L3NwYW4+IjsNCiAgIA0KLy8gZGVmYXVsdCBlcnJvciBtZXNzYWdlcw0KdmFy IGdlbmVyYWxFcnJvckhUTUwgPSAiPHNwYW4gc3R5bGU9XCJjb2xvcjpyZWQ7XCI+ WW91cidzIHdlYiBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgWE1MIEhUVFAgSmF2 YVNjcmlwdCBvYmplY3QuPC9zcGFuPiI7DQp2YXIgcmV0cmVpdmluZ0RhdGFFcnJv ckhUTUwgPSAiPHNwYW4gc3R5bGU9XCJjb2xvcjpyZWQ7XCI+U2VydmVyIGlzIG5v dCByZXNwb25kaW5nLiBQbGVhc2UgY2hlY2sgdGhhdCB5b3VyIGRhdGEgc291cmNl IGlzIG9rLjwvc3Bhbj4iOw0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBPYmplY3RzDQovLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCi8v IE9iamVjdCBmb3Igc3RvcmFnZSBvZiBkYXRhIGZvciBvbmUgbG9nIGl0ZW0uIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCmZ1bmN0aW9uIGxvZ3NJdGVtKHN0YXR1cywgY29udGVudCwgZGF0ZVRpbWUs IG9yZGVyKQ0Kew0KICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzOw0KICAgIHRoaXMu Y29udGVudCA9IGNvbnRlbnQ7DQogICAgdGhpcy5kYXRlVGltZSA9IGRhdGVUaW1l Ow0KICAgIHRoaXMub3JkZXIgPSBvcmRlcjsNCn0NCg0KLy8gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gR2VuZXJh bCBmdW5jdGlvbnMNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCg0KZnVuY3Rpb24gc2hvd0xvZ3MoZGF0YUFycmF5 LCB0YXJnZXRFbGVtZW50LCB0YXJnZXRFbGVtZW50UGFyZW50LCBjb3VudE9mTG9n czJTaG93LCBub0l0ZW1zVGV4dCkNCnsNCiAgICBpZiAoKGRhdGFBcnJheSAhPSBu dWxsKSAmJiAodGFyZ2V0RWxlbWVudCAhPSBudWxsKSkNCiAgICB7DQogICAgICAg IGlmIChkYXRhQXJyYXkubGVuZ3RoID09IDApDQogICAgICAgIHsNCiAgICAgICAg ICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgLy8gc29y dGluZyByZXN1bHRzDQogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YUFy cmF5Lmxlbmd0aDsgaSsrKQ0KICAgICAgICB7DQogICAgICAgICAgICBmb3IgKHZh ciB5ID0gaTsgeSA8IGRhdGFBcnJheS5sZW5ndGg7IHkrKykNCiAgICAgICAgICAg IHsNCiAgICAgICAgICAgICAgICBpZiAocGFyc2VGbG9hdChkYXRhQXJyYXlbeV0u b3JkZXIucmVwbGFjZSgiLCIsIi4iKSkgPiBwYXJzZUZsb2F0KGRhdGFBcnJheVtp XS5vcmRlci5yZXBsYWNlKCIsIiwiLiIpKSkNCiAgICAgICAgICAgICAgICB7DQog ICAgICAgICAgICAgICAgICAgIHZhciBjb3B5QnVmZmVyID0gZGF0YUFycmF5W3ld Ow0KICAgICAgICAgICAgICAgICAgICBkYXRhQXJyYXlbeV0gPSBkYXRhQXJyYXlb aV07DQogICAgICAgICAgICAgICAgICAgIGRhdGFBcnJheVtpXSA9IGNvcHlCdWZm ZXI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9 DQogICAgICAgIA0KICAgICAgICAvLyBjb3VudGluZyBob3cgbWFueSByZXN1bHRz IGhhdmUgdG8gYmUgc2hvd2VkDQogICAgICAgIHZhciBjbnQgPSBkYXRhQXJyYXku bGVuZ3RoOw0KICAgICAgICBpZiAoKGNvdW50T2ZMb2dzMlNob3cgPT0gbnVsbCkg fHwgKGNvdW50T2ZMb2dzMlNob3cgPCAxKSkNCiAgICAgICAgew0KICAgICAgICAg ICAgY291bnRPZkxvZ3MyU2hvdyA9IGNvdW50T2ZMb2dzMlNob3dEZWZhdWx0Ow0K ICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBpZiAoY250ID4gY291bnRPZkxv Z3MyU2hvdykNCiAgICAgICAgICAgIGNudCA9IGNvdW50T2ZMb2dzMlNob3c7DQog ICAgDQogICAgICAgIC8vIHdyaXRpbmcgcmVzdWx0cw0KICAgICAgICB0YXJnZXRF bGVtZW50LmlubmVySFRNTCA9ICIiOw0KICAgICAgICB2YXIgcmVzdWx0VGV4dCA9 ICI8dWw+IjsNCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjbnQ7IGkrKykN CiAgICAgICAgew0KICAgICAgICAgICAgcmVzdWx0VGV4dCArPSAiPGxpIGNsYXNz PVwiIisgZGF0YUFycmF5W2ldLnN0YXR1cyArIlwiPiIrDQogICAgICAgICAgICAg ICAgIjxzcGFuIGNsYXNzPVwibGVmdFwiPiIrIGRhdGFBcnJheVtpXS5jb250ZW50 ICsiPC9zcGFuPiIrDQogICAgICAgICAgICAgICAgIjxzcGFuIGNsYXNzPVwicmln aHRcIj4iKyBkYXRhQXJyYXlbaV0uZGF0ZVRpbWUgKyI8L3NwYW4+IisNCiAgICAg ICAgICAgICAgICAiPC9saT4iOw0KICAgICAgICB9DQogICAgICAgIHJlc3VsdFRl eHQgKz0gIjwvdWw+IjsNCiAgICAgICAgdGFyZ2V0RWxlbWVudC5pbm5lckhUTUwg PSByZXN1bHRUZXh0Ow0KICAgICAgICB0YXJnZXRFbGVtZW50LnN0eWxlLmRpc3Bs YXkgPSAiYmxvY2siOw0KICAgICAgICB0YXJnZXRFbGVtZW50UGFyZW50LnN0eWxl LmRpc3BsYXkgPSAiYmxvY2siOw0KICAgIH0NCn0NCg0KLy8gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gR2V0dGlu ZyBiZW5lZml0cyBjb3VudCBvZiBvbmUgVVNFUg0KLy8gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQovLyBNZXRob2Qg Zm9yIGxvYWRpbmcgYW5kIHNob3dpbmcgdXNlciBsb2dzLiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQovLyAtIHVzZXJJZCAgICAgICAgICAgOiBTdHJpbmcgLSBJZCBvZiBzcGVjaWZp YyB1c2VyDQovLyAtIHN5c3RlbUlkICAgICAgICAgOiBTdHJpbmcgLSBJZCBvZiBz cGVjaWZpYyBzeXN0ZW0NCi8vIC0gcmVzdWx0c0VsZW1lbnRJZCA6IFN0cmluZyAt IElkIG9mIEhUTUwgZWxlbWVudCBmb3IgZGlzcGxheWluZyB0aGUgcmVzdWx0cw0K Ly8gLSBsb2FkaW5nRWxlbWVudElkIDogU3RyaW5nIC0gSWQgb2YgSFRNTCBlbGVt ZW50IGZvciBzaG93aW5nIGxvYWRpbmcgaW5mbw0KLy8gLSBlcnJvckVsZW1lbnRJ ZCAgIDogU3RyaW5nIC0gSWQgb2YgSFRNTCBlbGVtZW50IGZvciBzaG93aW5nIGVy cm9yIGluZm8NCmZ1bmN0aW9uIGxvYWRVc2VyQmVuZWZpdHNDb3VudCh1c2VySWQp DQp7ICANCiAgICB2YXIgYWpheFJlYWRlcjRVc2VyQmVuZWZpdHMgPSBuZXcgQWph eERhdGFSZWFkZXIoKTsNCiAgICANCiAgICAvLyBNZXRob2QgZm9yIGV4ZWN1dGlv biBvZiBnZXR0aW5nIGRhdGEgYW5kIHdpdGggc2V0dGluZ3Mgb2YgZmluYWwgDQog ICAgLy8gZGVmaW5pdGlvbjogZ2V0RGF0YUJ5SXRlbSgNCiAgICAvLyAgICB1cmwg ICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhIHNvdXJjZSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIG9ibGlnYXRvcnldLCANCiAg ICAvLyAgICBtZXRob2QyRXhlY3V0ZSAgICAgICAgICAgICAgIFtzaW5nbGUgc3Ry aW5nIG1ldGhvZCBuYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAtIG9ibGln YXRvcnldLCANCiAgICAvLyAgICB4bWxOb2RlTmFtZSAgICAgICAgICAgICAgICAg IFtjZW50cmFsIG5hbWUgb2Ygbm9kZSB3aXRoIGRhdGEgYXR0cmlidXRlcyAgICAg ICAgICAtIG9ibGlnYXRvcnldLCANCiAgICAvLyAgICBsb2FkaW5nRGVzY3JpcHRp b24gICAgICAgICAgIFtjdXN0b20gdGV4dCBmb3IgbG9hZGluZyBkZXNjcmlwdGlv biAgICAgICAgICAgICAgICAtIG9wdGlvbmFsXSwNCiAgICAvLyAgICBhZnRlckxv YWREZXNjcmlwdGlvbiAgICAgICAgIFtjdXN0b20gdGV4dCB0byBzaG93IGFmdGVy IGxvYWRpbmcgICAgICAgICAgICAgICAgICAtIG9wdGlvbmFsXSwgDQogICAgLy8g ICAgc3BlY2lhbE9iamVjdElkNExvYWRpbmdUZXh0cyBbSFRNTCBlbGVtZW50IElk IC0gZm9yIHNob3dpbmcgY3VzdG9tIGxvYWRpbmcgdGV4dHMgLSBvcHRpb25hbF0s DQogICAgLy8gICAgc3BlY2lhbE9iamVjdElkNEVycm9yVGV4dHMgICBbSFRNTCBl bGVtZW50IElkIC0gZm9yIHNob3dpbmcgY3VzdG9tIGVycm9yIHRleHRzICAgLSBv cHRpb25hbF0NCiAgICAvLyAgICApDQogICAgYWpheFJlYWRlcjRVc2VyQmVuZWZp dHMuZ2V0RGF0YUJ5SXRlbSgiaHR0cDovLyIrIEdldFVybEJhc2UoKSArIi9jb25u ZWN0b3IvY29ubmVjdG9yTkEuYXNweD9maWxlPXVzZXJfYXJ0aWNsZXMtY291bnQm dXNlcmlkPSIrdXNlcklkLCAiaW5jcmVhc2VCZW5lZml0c0NvdW50IiwgIml0ZW0i KTsNCiAgICBhamF4UmVhZGVyNFVzZXJCZW5lZml0cy5nZXREYXRhQnlJdGVtKCJo dHRwOi8vIisgR2V0VXJsQmFzZSgpICsiL2Nvbm5lY3Rvci9jb25uZWN0b3JOQS5h c3B4P2ZpbGU9dXNlcl9jb21tdW5pdHktYXJ0aWNsZXMtY291bnQmdXNlcmlkPSIr dXNlcklkLCAiaW5jcmVhc2VCZW5lZml0c0NvdW50IiwgIml0ZW0iKTsNCiAgICBh amF4UmVhZGVyNFVzZXJCZW5lZml0cy5nZXREYXRhQnlJdGVtKCJodHRwOi8vIisg R2V0VXJsQmFzZSgpICsiL2Nvbm5lY3Rvci9jb25uZWN0b3JOQS5hc3B4P2ZpbGU9 dXNlcl9kaXNjdXNzaW9uLWFydGljbGVzLWNvdW50JnVzZXJpZD0iK3VzZXJJZCwg ImluY3JlYXNlQmVuZWZpdHNDb3VudCIsICJpdGVtIik7DQp9DQoNCi8vIE1ldGhv ZCBmb3IgbG9hZGluZyB1c2VyIGxvZ3MgZm9yIGFydmVydHMuIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8v IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCi8vIC0geG1sRGF0YUl0ZW0gICAgIC0gb25lIFhNTCBub2RlIG9iamVjdA0K Ly8gLSBhY3R1YWxJdGVtSW5kZXggLSBpbmRleCBvZiBhY3R1YWwgaXRlbSBpbiBY TUwgcmVzdWx0DQovLyAtIGl0ZW1zQ291bnQgICAgICAtIGNvdW50IG9mIGFsbCBY TUwgcmVzdWx0cw0KLy8gLSBhdHRyaWJ1dGVzICAgICAgLSBhcnJheSB3aXRoIHN0 cmluZyBpbmRleGVkIGF0dHJpYnV0ZSBpdGVtcw0KZnVuY3Rpb24gaW5jcmVhc2VC ZW5lZml0c0NvdW50KHhtbERhdGFJdGVtLCBhY3R1YWxJdGVtSW5kZXgsIGl0ZW1z Q291bnQsIGF0dHJpYnV0ZXMpDQp7DQogICAgdmFyIG9iaiA9IGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCJob21lcGFnZVVzZXJfIisgYXR0cmlidXRlc1sidXNlcl9p ZCJdICsiX2FydGljbGVzQ291bnQiKTsNCiAgICBvYmouaW5uZXJIVE1MID0gKHBh cnNlSW50KG9iai5pbm5lckhUTUwpICsgcGFyc2VJbnQoYXR0cmlidXRlc1siY291 bnQiXSkpLnRvU3RyaW5nKCk7DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIEZ1bmN0aW9ucyBmb3Ig d29ya2luZyB3aXRoIGxvZ3Mgb2Ygc29tZSBVU0VSDQovLyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCi8vIGdsb2Jh bCB2YXJpYWJsZSB3aXRoIHJlZmVyZW5jZSB0byBvYmplY3QgZm9yIHVzZXIgbG9n cw0KdmFyIGxvZ3NVc2VyX3Jlc3VsdEVsZW1lbnQgPSBudWxsOw0KdmFyIGxvZ3NV c2VyX3Jlc3VsdEVsZW1lbnRQYXJlbnQgPSBudWxsOw0KdmFyIGxvZ3NVc2VyX2xv Z2luTmFtZSA9ICIiOw0KdmFyIGxvZ3NfSXNDZW50cmFsID0gZmFsc2U7DQoNCnZh ciBsb2dzVXNlcl9jb3VudE9mTG9nczJTaG93ID0gMTA7DQoNCi8vIGFycmF5IHdp dGggdXNlciBsb2dzDQp2YXIgbG9nc1VzZXIgPSBuZXcgQXJyYXkoKTsNCg0KLy8g TWV0aG9kIGZvciBsb2FkaW5nIGFuZCBzaG93aW5nIHVzZXIgbG9ncy4gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KLy8gLSB1c2VySWQgICAgICAgICAgIDogU3RyaW5nIC0gSWQgb2Yg c3BlY2lmaWMgdXNlcg0KLy8gLSBzeXN0ZW1JZCAgICAgICAgIDogU3RyaW5nIC0g SWQgb2Ygc3BlY2lmaWMgc3lzdGVtDQovLyAtIHJlc3VsdHNFbGVtZW50SWQgOiBT dHJpbmcgLSBJZCBvZiBIVE1MIGVsZW1lbnQgZm9yIGRpc3BsYXlpbmcgdGhlIHJl c3VsdHMNCi8vIC0gbG9hZGluZ0VsZW1lbnRJZCA6IFN0cmluZyAtIElkIG9mIEhU TUwgZWxlbWVudCBmb3Igc2hvd2luZyBsb2FkaW5nIGluZm8NCi8vIC0gZXJyb3JF bGVtZW50SWQgICA6IFN0cmluZyAtIElkIG9mIEhUTUwgZWxlbWVudCBmb3Igc2hv d2luZyBlcnJvciBpbmZvDQpmdW5jdGlvbiBsb2FkTG9nczRVc2VyKHVzZXJJZCwg dXNlcl9sb2dpbk5hbWUsIHN5c3RlbUlkLCByZXN1bHRzRWxlbWVudElkLCBsb2Fk aW5nRWxlbWVudElkLCBlcnJvckVsZW1lbnRJZCwgY291bnRPZkxvZ3MyU2hvdywg bWV0aG9kMkV4ZWN1dGU0Tm9JdGVtcykNCnsNCiAgICBsb2dzVXNlcl9yZXN1bHRF bGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocmVzdWx0c0VsZW1lbnRJ ZCk7DQogICAgbG9nc1VzZXJfcmVzdWx0RWxlbWVudFBhcmVudCA9IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKHJlc3VsdHNFbGVtZW50SWQgKyAiUGFyZW50Iik7DQog ICAgbG9nc1VzZXJfbG9naW5OYW1lID0gdXNlcl9sb2dpbk5hbWU7DQogICAgbG9n c1VzZXJfY291bnRPZkxvZ3MyU2hvdyA9IChjb3VudE9mTG9nczJTaG93ID09IG51 bGwgPyBsb2dzVXNlcl9jb3VudE9mTG9nczJTaG93IDogY291bnRPZkxvZ3MyU2hv dyk7DQogICAgDQogICAgaWYgKHBhcnNlSW50KHN5c3RlbUlkKSA9PSAxMSkNCiAg ICB7DQogICAgICAgIGxvZ3NfSXNDZW50cmFsID0gdHJ1ZTsNCiAgICB9DQoNCiAg ICB2YXIgYWpheFJlYWRlciA9IG5ldyBBamF4RGF0YVJlYWRlcihsb2FkaW5nRWxl bWVudElkLCBsb2FkaW5nSFRNTCwgYWZ0ZXJMb2FkSFRNTCwgZXJyb3JFbGVtZW50 SWQsIGdlbmVyYWxFcnJvckhUTUwsIHJldHJlaXZpbmdEYXRhRXJyb3JIVE1MKTsN CiAgIA0KICAgIC8vIE1ldGhvZCBmb3IgZXhlY3V0aW9uIG9mIGdldHRpbmcgZGF0 YSBhbmQgd2l0aCBzZXR0aW5ncyBvZiBmaW5hbCANCiAgICAvLyBkZWZpbml0aW9u OiBnZXREYXRhQnlJdGVtKA0KICAgIC8vICAgIHVybCAgICAgICAgICAgICAgICAg ICAgICAgICAgW2RhdGEgc291cmNlICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0gb2JsaWdhdG9yeV0sIA0KICAgIC8vICAgIG1ldGhvZDJF eGVjdXRlICAgICAgICAgICAgICAgW3NpbmdsZSBzdHJpbmcgbWV0aG9kIG5hbWUg ICAgICAgICAgICAgICAgICAgICAgICAgIC0gb2JsaWdhdG9yeV0sIA0KICAgIC8v ICAgIHhtbE5vZGVOYW1lICAgICAgICAgICAgICAgICAgW2NlbnRyYWwgbmFtZSBv ZiBub2RlIHdpdGggZGF0YSBhdHRyaWJ1dGVzICAgICAgICAgIC0gb2JsaWdhdG9y eV0sIA0KICAgIC8vICAgIGxvYWRpbmdEZXNjcmlwdGlvbiAgICAgICAgICAgW2N1 c3RvbSB0ZXh0IGZvciBsb2FkaW5nIGRlc2NyaXB0aW9uICAgICAgICAgICAgICAg IC0gb3B0aW9uYWxdLA0KICAgIC8vICAgIGFmdGVyTG9hZERlc2NyaXB0aW9uICAg ICAgICAgW2N1c3RvbSB0ZXh0IHRvIHNob3cgYWZ0ZXIgbG9hZGluZyAgICAgICAg ICAgICAgICAgIC0gb3B0aW9uYWxdLCANCiAgICAvLyAgICBzcGVjaWFsT2JqZWN0 SWQ0TG9hZGluZ1RleHRzIFtIVE1MIGVsZW1lbnQgSWQgLSBmb3Igc2hvd2luZyBj dXN0b20gbG9hZGluZyB0ZXh0cyAtIG9wdGlvbmFsXSwNCiAgICAvLyAgICBzcGVj aWFsT2JqZWN0SWQ0RXJyb3JUZXh0cyAgIFtIVE1MIGVsZW1lbnQgSWQgLSBmb3Ig c2hvd2luZyBjdXN0b20gZXJyb3IgdGV4dHMgICAtIG9wdGlvbmFsXQ0KICAgIC8v ICAgICkNCg0KICAgIGFqYXhSZWFkZXIuZ2V0RGF0YUJ5SXRlbSgiaHR0cDovLyIr IEdldFVybEJhc2UoKSArIi9jb25uZWN0b3IvY29ubmVjdG9yTkEuYXNweD9maWxl PWxvZ3MtdXNlcl9hZHZlcnRzJnN5c3RlbWlkPSIrc3lzdGVtSWQrIiZjcmVhdGVk Ynk9Iit1c2VySWQsICJsb2dzVXNlcl9hZHZlcnRzIiwgIml0ZW0iLCBudWxsLCBu dWxsLCBudWxsLCBudWxsKTsNCiAgICBhamF4UmVhZGVyLmdldERhdGFCeUl0ZW0o Imh0dHA6Ly8iKyBHZXRVcmxCYXNlKCkgKyIvY29ubmVjdG9yL2Nvbm5lY3Rvck5B LmFzcHg/ZmlsZT1sb2dzLXVzZXJfYXJ0aWNsZXMmc3lzdGVtaWQ9IitzeXN0ZW1J ZCsiJmNyZWF0ZWRieT0iK3VzZXJJZCwgImxvZ3NVc2VyX2FydGljbGVzIiwgIml0 ZW0iLCBudWxsLCBudWxsLCBudWxsLCBudWxsKTsNCiAgICBhamF4UmVhZGVyLmdl dERhdGFCeUl0ZW0oImh0dHA6Ly8iKyBHZXRVcmxCYXNlKCkgKyIvY29ubmVjdG9y L2Nvbm5lY3Rvck5BLmFzcHg/ZmlsZT1sb2dzLXVzZXJfY29tbXVuaXRpZXMmc3lz dGVtaWQ9IitzeXN0ZW1JZCsiJmNyZWF0ZWRieT0iK3VzZXJJZCwgImxvZ3NVc2Vy X2NvbW11bml0aWVzIiwgIml0ZW0iLCBudWxsLCBudWxsLCBudWxsLCBudWxsKTsN CiAgICBhamF4UmVhZGVyLmdldERhdGFCeUl0ZW0oImh0dHA6Ly8iKyBHZXRVcmxC YXNlKCkgKyIvY29ubmVjdG9yL2Nvbm5lY3Rvck5BLmFzcHg/ZmlsZT1sb2dzLXVz ZXJfY29tbXVuaXR5LWFydGljbGVzJnN5c3RlbWlkPSIrc3lzdGVtSWQrIiZjcmVh dGVkYnk9Iit1c2VySWQsICJsb2dzVXNlcl9jb21tdW5pdHlBcnRpY2xlcyIsICJp dGVtIiwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCk7DQogICAgYWpheFJlYWRlci5n ZXREYXRhQnlJdGVtKCJodHRwOi8vIisgR2V0VXJsQmFzZSgpICsiL2Nvbm5lY3Rv ci9jb25uZWN0b3JOQS5hc3B4P2ZpbGU9bG9ncy11c2VyX2NvbW11bml0eS1jYXRl Z29yaWVzJnN5c3RlbWlkPSIrc3lzdGVtSWQrIiZjcmVhdGVkYnk9Iit1c2VySWQs ICJsb2dzVXNlcl9jb21tdW5pdHlDYXRlZ29yaWVzIiwgIml0ZW0iLCBudWxsLCBu dWxsLCBudWxsLCBudWxsKTsNCiAgICBhamF4UmVhZGVyLmdldERhdGFCeUl0ZW0o Imh0dHA6Ly8iKyBHZXRVcmxCYXNlKCkgKyIvY29ubmVjdG9yL2Nvbm5lY3Rvck5B LmFzcHg/ZmlsZT1sb2dzLXVzZXJfY29tbXVuaXR5LXR5cGVzJnN5c3RlbWlkPSIr c3lzdGVtSWQrIiZjcmVhdGVkYnk9Iit1c2VySWQsICJsb2dzVXNlcl9jb21tdW5p dHlUeXBlcyIsICJpdGVtIiwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCk7DQogICAg YWpheFJlYWRlci5nZXREYXRhQnlJdGVtKCJodHRwOi8vIisgR2V0VXJsQmFzZSgp ICsiL2Nvbm5lY3Rvci9jb25uZWN0b3JOQS5hc3B4P2ZpbGU9bG9ncy11c2VyX2Rp c2N1c3Npb24tYXJ0aWNsZXMmc3lzdGVtaWQ9IitzeXN0ZW1JZCsiJmNyZWF0ZWRi eT0iK3VzZXJJZCwgImxvZ3NVc2VyX2Rpc2N1c3Npb25BcnRpY2xlcyIsICJpdGVt IiwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbWV0aG9kMkV4ZWN1dGU0Tm9JdGVt cyk7DQp9DQoNCi8vIE1ldGhvZCBmb3IgbG9hZGluZyBhbmQgc2hvd2luZyB1c2Vy IGxvZ3MuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIC0gdXNlcklkICAgICAgICAgICA6IFN0 cmluZyAtIElkIG9mIHNwZWNpZmljIHVzZXINCi8vIC0gc3lzdGVtSWQgICAgICAg ICA6IFN0cmluZyAtIElkIG9mIHNwZWNpZmljIHN5c3RlbQ0KLy8gLSByZXN1bHRz RWxlbWVudElkIDogU3RyaW5nIC0gSWQgb2YgSFRNTCBlbGVtZW50IGZvciBkaXNw bGF5aW5nIHRoZSByZXN1bHRzDQovLyAtIGxvYWRpbmdFbGVtZW50SWQgOiBTdHJp bmcgLSBJZCBvZiBIVE1MIGVsZW1lbnQgZm9yIHNob3dpbmcgbG9hZGluZyBpbmZv DQovLyAtIGVycm9yRWxlbWVudElkICAgOiBTdHJpbmcgLSBJZCBvZiBIVE1MIGVs ZW1lbnQgZm9yIHNob3dpbmcgZXJyb3IgaW5mbw0KZnVuY3Rpb24gbG9hZExvZ3M0 RnJpZW5kcyhmcmllbmRzLCB1c2VyX2xvZ2luTmFtZSwgc3lzdGVtSWQsIHJlc3Vs dHNFbGVtZW50SWQsIGxvYWRpbmdFbGVtZW50SWQsIGVycm9yRWxlbWVudElkLCBj b3VudE9mTG9nczJTaG93LCBtZXRob2QyRXhlY3V0ZTROb0l0ZW1zKQ0Kew0KICAg IGxvZ3NVc2VyX3Jlc3VsdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZChyZXN1bHRzRWxlbWVudElkKTsNCiAgICBsb2dzVXNlcl9yZXN1bHRFbGVtZW50 UGFyZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocmVzdWx0c0VsZW1lbnRJ ZCArICJQYXJlbnQiKTsNCiAgICBsb2dzVXNlcl9jb3VudE9mTG9nczJTaG93ID0g KGNvdW50T2ZMb2dzMlNob3cgPT0gbnVsbCA/IGxvZ3NVc2VyX2NvdW50T2ZMb2dz MlNob3cgOiBjb3VudE9mTG9nczJTaG93KTsNCiAgICBsb2dzVXNlcl9mcmllbmRz ID0gZnJpZW5kczsNCiAgICANCiAgICBpZiAocGFyc2VJbnQoc3lzdGVtSWQpID09 IDExKQ0KICAgIHsNCiAgICAgICAgbG9nc19Jc0NlbnRyYWwgPSB0cnVlOw0KICAg IH0NCg0KICAgIHZhciBhamF4UmVhZGVyID0gbmV3IEFqYXhEYXRhUmVhZGVyKGxv YWRpbmdFbGVtZW50SWQsIGxvYWRpbmdIVE1MLCBhZnRlckxvYWRIVE1MLCBlcnJv ckVsZW1lbnRJZCwgZ2VuZXJhbEVycm9ySFRNTCwgcmV0cmVpdmluZ0RhdGFFcnJv ckhUTUwpOw0KICAgDQogICAgLy8gTWV0aG9kIGZvciBleGVjdXRpb24gb2YgZ2V0 dGluZyBkYXRhIGFuZCB3aXRoIHNldHRpbmdzIG9mIGZpbmFsIA0KICAgIC8vIGRl ZmluaXRpb246IGdldERhdGFCeUl0ZW0oDQogICAgLy8gICAgdXJsICAgICAgICAg ICAgICAgICAgICAgICAgICBbZGF0YSBzb3VyY2UgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLSBvYmxpZ2F0b3J5XSwgDQogICAgLy8gICAg bWV0aG9kMkV4ZWN1dGUgICAgICAgICAgICAgICBbc2luZ2xlIHN0cmluZyBtZXRo b2QgbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgLSBvYmxpZ2F0b3J5XSwg DQogICAgLy8gICAgeG1sTm9kZU5hbWUgICAgICAgICAgICAgICAgICBbY2VudHJh bCBuYW1lIG9mIG5vZGUgd2l0aCBkYXRhIGF0dHJpYnV0ZXMgICAgICAgICAgLSBv YmxpZ2F0b3J5XSwgDQogICAgLy8gICAgbG9hZGluZ0Rlc2NyaXB0aW9uICAgICAg ICAgICBbY3VzdG9tIHRleHQgZm9yIGxvYWRpbmcgZGVzY3JpcHRpb24gICAgICAg ICAgICAgICAgLSBvcHRpb25hbF0sDQogICAgLy8gICAgYWZ0ZXJMb2FkRGVzY3Jp cHRpb24gICAgICAgICBbY3VzdG9tIHRleHQgdG8gc2hvdyBhZnRlciBsb2FkaW5n ICAgICAgICAgICAgICAgICAgLSBvcHRpb25hbF0sIA0KICAgIC8vICAgIHNwZWNp YWxPYmplY3RJZDRMb2FkaW5nVGV4dHMgW0hUTUwgZWxlbWVudCBJZCAtIGZvciBz aG93aW5nIGN1c3RvbSBsb2FkaW5nIHRleHRzIC0gb3B0aW9uYWxdLA0KICAgIC8v ICAgIHNwZWNpYWxPYmplY3RJZDRFcnJvclRleHRzICAgW0hUTUwgZWxlbWVudCBJ ZCAtIGZvciBzaG93aW5nIGN1c3RvbSBlcnJvciB0ZXh0cyAgIC0gb3B0aW9uYWxd DQogICAgLy8gICAgKQ0KDQogICAgZm9yKGMgPSAwO2MgPCBsb2dzVXNlcl9mcmll bmRzLmxlbmd0aDsgYysrKXsNCiAgICAgICAgbG9nc1VzZXJfbG9naW5OYW1lID0g dXNlcl9sb2dpbk5hbWVbY107DQogICAgICAgIGFqYXhSZWFkZXIuZ2V0RGF0YUJ5 SXRlbSgiaHR0cDovLyIrIEdldFVybEJhc2UoKSArIi9jb25uZWN0b3IvY29ubmVj dG9yTkEuYXNweD9maWxlPWxvZ3MtdXNlcl9hZHZlcnRzJnN5c3RlbWlkPSIrc3lz dGVtSWQrIiZjcmVhdGVkYnk9Iitsb2dzVXNlcl9mcmllbmRzW2NdLCAibG9nc1Vz ZXJfYWR2ZXJ0c3wsXCIiK3VzZXJfbG9naW5OYW1lW2NdKyJcIiIsICJpdGVtIiwg bnVsbCwgbnVsbCwgbnVsbCwgbnVsbCk7DQogICAgICAgIGFqYXhSZWFkZXIuZ2V0 RGF0YUJ5SXRlbSgiaHR0cDovLyIrIEdldFVybEJhc2UoKSArIi9jb25uZWN0b3Iv Y29ubmVjdG9yTkEuYXNweD9maWxlPWxvZ3MtdXNlcl9hcnRpY2xlcyZzeXN0ZW1p ZD0iK3N5c3RlbUlkKyImY3JlYXRlZGJ5PSIrbG9nc1VzZXJfZnJpZW5kc1tjXSwg ImxvZ3NVc2VyX2FydGljbGVzfCxcIiIrdXNlcl9sb2dpbk5hbWVbY10rIlwiIiwg Iml0ZW0iLCBudWxsLCBudWxsLCBudWxsLCBudWxsKTsNCiAgICAgICAgYWpheFJl YWRlci5nZXREYXRhQnlJdGVtKCJodHRwOi8vIisgR2V0VXJsQmFzZSgpICsiL2Nv bm5lY3Rvci9jb25uZWN0b3JOQS5hc3B4P2ZpbGU9bG9ncy11c2VyX2NvbW11bml0 aWVzJnN5c3RlbWlkPSIrc3lzdGVtSWQrIiZjcmVhdGVkYnk9Iitsb2dzVXNlcl9m cmllbmRzW2NdLCAibG9nc1VzZXJfY29tbXVuaXRpZXN8LFwiIit1c2VyX2xvZ2lu TmFtZVtjXSsiXCIiLCAiaXRlbSIsIG51bGwsIG51bGwsIG51bGwsIG51bGwpOw0K ICAgICAgICBhamF4UmVhZGVyLmdldERhdGFCeUl0ZW0oImh0dHA6Ly8iKyBHZXRV cmxCYXNlKCkgKyIvY29ubmVjdG9yL2Nvbm5lY3Rvck5BLmFzcHg/ZmlsZT1sb2dz LXVzZXJfY29tbXVuaXR5LWFydGljbGVzJnN5c3RlbWlkPSIrc3lzdGVtSWQrIiZj cmVhdGVkYnk9Iitsb2dzVXNlcl9mcmllbmRzW2NdLCAibG9nc1VzZXJfY29tbXVu aXR5QXJ0aWNsZXN8LFwiIit1c2VyX2xvZ2luTmFtZVtjXSsiXCIiLCAiaXRlbSIs IG51bGwsIG51bGwsIG51bGwsIG51bGwpOw0KICAgICAgICBhamF4UmVhZGVyLmdl dERhdGFCeUl0ZW0oImh0dHA6Ly8iKyBHZXRVcmxCYXNlKCkgKyIvY29ubmVjdG9y L2Nvbm5lY3Rvck5BLmFzcHg/ZmlsZT1sb2dzLXVzZXJfY29tbXVuaXR5LWNhdGVn b3JpZXMmc3lzdGVtaWQ9IitzeXN0ZW1JZCsiJmNyZWF0ZWRieT0iK2xvZ3NVc2Vy X2ZyaWVuZHNbY10sICJsb2dzVXNlcl9jb21tdW5pdHlDYXRlZ29yaWVzfCxcIiIr dXNlcl9sb2dpbk5hbWVbY10rIlwiIiwgIml0ZW0iLCBudWxsLCBudWxsLCBudWxs LCBudWxsKTsNCiAgICAgICAgYWpheFJlYWRlci5nZXREYXRhQnlJdGVtKCJodHRw Oi8vIisgR2V0VXJsQmFzZSgpICsiL2Nvbm5lY3Rvci9jb25uZWN0b3JOQS5hc3B4 P2ZpbGU9bG9ncy11c2VyX2NvbW11bml0eS10eXBlcyZzeXN0ZW1pZD0iK3N5c3Rl bUlkKyImY3JlYXRlZGJ5PSIrbG9nc1VzZXJfZnJpZW5kc1tjXSwgImxvZ3NVc2Vy X2NvbW11bml0eVR5cGVzfCxcIiIrdXNlcl9sb2dpbk5hbWVbY10rIlwiIiwgIml0 ZW0iLCBudWxsLCBudWxsLCBudWxsLCBudWxsKTsNCiAgICAgICAgYWpheFJlYWRl ci5nZXREYXRhQnlJdGVtKCJodHRwOi8vIisgR2V0VXJsQmFzZSgpICsiL2Nvbm5l Y3Rvci9jb25uZWN0b3JOQS5hc3B4P2ZpbGU9bG9ncy11c2VyX2Rpc2N1c3Npb24t YXJ0aWNsZXMmc3lzdGVtaWQ9IitzeXN0ZW1JZCsiJmNyZWF0ZWRieT0iK2xvZ3NV c2VyX2ZyaWVuZHNbY10sICJsb2dzVXNlcl9kaXNjdXNzaW9uQXJ0aWNsZXN8LFwi Iit1c2VyX2xvZ2luTmFtZVtjXSsiXCIiLCAiaXRlbSIsIG51bGwsIG51bGwsIG51 bGwsIG51bGwpOw0KICAgIH0NCiAgIA0KfQ0KDQoNCi8vIE1ldGhvZCBmb3IgbG9h ZGluZyB1c2VyIGxvZ3MgZm9yIGFydmVydHMuIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIC0g eG1sRGF0YUl0ZW0gICAgIC0gb25lIFhNTCBub2RlIG9iamVjdA0KLy8gLSBhY3R1 YWxJdGVtSW5kZXggLSBpbmRleCBvZiBhY3R1YWwgaXRlbSBpbiBYTUwgcmVzdWx0 DQovLyAtIGl0ZW1zQ291bnQgICAgICAtIGNvdW50IG9mIGFsbCBYTUwgcmVzdWx0 cw0KLy8gLSBhdHRyaWJ1dGVzICAgICAgLSBhcnJheSB3aXRoIHN0cmluZyBpbmRl eGVkIGF0dHJpYnV0ZSBpdGVtcw0KZnVuY3Rpb24gbG9nc1VzZXJfYWR2ZXJ0cyh4 bWxEYXRhSXRlbSwgYWN0dWFsSXRlbUluZGV4LCBpdGVtc0NvdW50LCBhdHRyaWJ1 dGVzLCB1c2VyTmFtZSkNCnsNCiAgICB2YXIgbG9nc1VzZXJfbmFtZSA9ICIiOw0K ICAgIGlmICgodXNlck5hbWUgIT0gbnVsbCkgJiYgKHVzZXJOYW1lICE9ICIiKSkN CiAgICB7DQogICAgICAgIGxvZ3NVc2VyX25hbWUgPSB1c2VyTmFtZTsNCiAgICB9 ZWxzZXsNCiAgICAgICAgbG9nc1VzZXJfbmFtZSA9IGxvZ3NVc2VyX2xvZ2luTmFt ZTsNCiAgICB9DQoNCiAgICB2YXIgbmV3SXRlbSA9IG5ldyBsb2dzSXRlbSgNCiAg ICAgICAgImFkZCIsIA0KICAgICAgICBsb2dzVXNlcl9uYW1lICsgIiB2bG/Fvmls IG5vdsO9IGluemVyw6F0IDxhIGhyZWY9XCIvY3ovczE1OS8iICsgDQogICAgICAg ICAgICAocGFyc2VJbnQoYXR0cmlidXRlc1siY2F0ZWdvcnlfaWQiXSkgPiAtMSA/ ICJjIiArIGF0dHJpYnV0ZXNbImNhdGVnb3J5X2lkIl0gKyAiLyIgOiAiIikgKyAi aSIgKyBhdHRyaWJ1dGVzWyJpZCJdICsNCiAgICAgICAgICAgICJcIj5cIiIgKyBh dHRyaWJ1dGVzWyJuYW1lIl0gKyAiXCI8L2E+IiArIA0KICAgICAgICAgICAgKHBh cnNlSW50KGF0dHJpYnV0ZXNbImNhdGVnb3J5X2lkIl0pID4gLTENCiAgICAgICAg ICAgICAgICA/ICIgZG8ga2F0ZWdvcmllIDxhIGhyZWY9XCIvY3ovczIxNi9jIiAr IGF0dHJpYnV0ZXNbImNhdGVnb3J5X2lkIl0gKyAiXCI+XCIiICsgYXR0cmlidXRl c1siY2F0ZWdvcnlfbmFtZSJdICsgIlwiPC9hPiIgDQogICAgICAgICAgICAgICAg OiAiIiApLCANCiAgICAgICAgYXR0cmlidXRlc1siZGF0ZSJdLA0KICAgICAgICBh dHRyaWJ1dGVzWyJvcmRlciJdDQogICAgKTsNCiAgICBsb2dzVXNlcltsb2dzVXNl ci5sZW5ndGhdID0gbmV3SXRlbTsNCn0NCg0KLy8gTWV0aG9kIGZvciBsb2FkaW5n IHVzZXIgbG9ncyBmb3IgYXJ0aWNsZXMuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gLSB4bWxE YXRhSXRlbSAgICAgLSBvbmUgWE1MIG5vZGUgb2JqZWN0DQovLyAtIGFjdHVhbEl0 ZW1JbmRleCAtIGluZGV4IG9mIGFjdHVhbCBpdGVtIGluIFhNTCByZXN1bHQNCi8v IC0gaXRlbXNDb3VudCAgICAgIC0gY291bnQgb2YgYWxsIFhNTCByZXN1bHRzDQov LyAtIGF0dHJpYnV0ZXMgICAgICAtIGFycmF5IHdpdGggc3RyaW5nIGluZGV4ZWQg YXR0cmlidXRlIGl0ZW1zDQpmdW5jdGlvbiBsb2dzVXNlcl9hcnRpY2xlcyh4bWxE YXRhSXRlbSwgYWN0dWFsSXRlbUluZGV4LCBpdGVtc0NvdW50LCBhdHRyaWJ1dGVz LCB1c2VyTmFtZSwgdXNlck5hbWUpDQp7DQogICAgdmFyIGxvZ3NVc2VyX25hbWUg PSAiIjsNCiAgICBpZiAoKHVzZXJOYW1lICE9IG51bGwpICYmICh1c2VyTmFtZSAh PSAiIikpDQogICAgew0KICAgICAgICBsb2dzVXNlcl9uYW1lID0gdXNlck5hbWU7 DQogICAgfWVsc2V7DQogICAgICAgIGxvZ3NVc2VyX25hbWUgPSBsb2dzVXNlcl9s b2dpbk5hbWU7DQogICAgfQ0KICAgICAgICANCg0KICAgIHZhciBjYXRlZ29yeVNJ ZCA9ICI0MDIiOw0KICAgIGlmIChsb2dzX0lzQ2VudHJhbCkNCiAgICB7DQogICAg ICAgIHN3aXRjaCAocGFyc2VJbnQoYXR0cmlidXRlc1siY2F0ZWdvcnlfaWQiXSkp DQogICAgICAgIHsNCiAgICAgICAgICAgIGNhc2UgOTE3OiAvLyBsemltZXRyDQog ICAgICAgICAgICAgICAgY2F0ZWdvcnlTSWQgPSAiMTU0MiI7DQogICAgICAgICAg ICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlIDEwODY6IC8vIHNsaWJvbWVy DQogICAgICAgICAgICAgICAgY2F0ZWdvcnlTSWQgPSAiMTU0MyI7DQogICAgICAg ICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAg ICAgICAgIGNhdGVnb3J5U0lkID0gIjQzNCI7IA0KICAgICAgICAgICAgICAgIGJy ZWFrOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgdmFyIG5ld0l0ZW0gPSBuZXcg bG9nc0l0ZW0oDQogICAgICAgICJhZGQiLCANCiAgICAgICAgbG9nc1VzZXJfbmFt ZSArICIgbmFwc2FsIMSNbMOhbmVrIDxhIGhyZWY9XCIvY3ovcyIrKHBhcnNlSW50 KGF0dHJpYnV0ZXNbImNhdGVnb3J5X2lkIl0pID09IDgzMCA/ICIyMDEiIDogKGxv Z3NfSXNDZW50cmFsID8gIjM0NyIgOiAiMTc2IikpKyIvIiArIA0KICAgICAgICAg ICAgKHBhcnNlSW50KGF0dHJpYnV0ZXNbImNhdGVnb3J5X2lkIl0pID4gLTEgPyAi YyIgKyBhdHRyaWJ1dGVzWyJjYXRlZ29yeV9pZCJdICsgIi8iIDogIiIpICsgIm4i ICsgYXR0cmlidXRlc1siaWQiXSArDQogICAgICAgICAgICAiXCI+XCIiICsgYXR0 cmlidXRlc1sibmFtZSJdICsgIlwiPC9hPiIgKyANCiAgICAgICAgICAgIChwYXJz ZUludChhdHRyaWJ1dGVzWyJjYXRlZ29yeV9pZCJdKSA+IC0xDQogICAgICAgICAg ICAgICAgPyAiIGRvIHJ1YnJpa3kgPGEgaHJlZj1cIi9jei9zIitjYXRlZ29yeVNJ ZCsiL2MiICsgYXR0cmlidXRlc1siY2F0ZWdvcnlfaWQiXSArICJcIj5cIiIgKyBh dHRyaWJ1dGVzWyJjYXRlZ29yeV9uYW1lIl0gKyAiXCI8L2E+IiANCiAgICAgICAg ICAgICAgICA6ICIiICksIA0KICAgICAgICBhdHRyaWJ1dGVzWyJkYXRlIl0sDQog ICAgICAgIGF0dHJpYnV0ZXNbIm9yZGVyIl0NCiAgICApOw0KICAgIGxvZ3NVc2Vy W2xvZ3NVc2VyLmxlbmd0aF0gPSBuZXdJdGVtOw0KfQ0KDQovLyBNZXRob2QgZm9y IGxvYWRpbmcgdXNlciBsb2dzIGZvciBjb21tdW5pdGllcy4gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQov LyAtIHhtbERhdGFJdGVtICAgICAtIG9uZSBYTUwgbm9kZSBvYmplY3QNCi8vIC0g YWN0dWFsSXRlbUluZGV4IC0gaW5kZXggb2YgYWN0dWFsIGl0ZW0gaW4gWE1MIHJl c3VsdA0KLy8gLSBpdGVtc0NvdW50ICAgICAgLSBjb3VudCBvZiBhbGwgWE1MIHJl c3VsdHMNCi8vIC0gYXR0cmlidXRlcyAgICAgIC0gYXJyYXkgd2l0aCBzdHJpbmcg aW5kZXhlZCBhdHRyaWJ1dGUgaXRlbXMNCmZ1bmN0aW9uIGxvZ3NVc2VyX2NvbW11 bml0aWVzKHhtbERhdGFJdGVtLCBhY3R1YWxJdGVtSW5kZXgsIGl0ZW1zQ291bnQs IGF0dHJpYnV0ZXMsIHVzZXJOYW1lKQ0Kew0KICAgIHZhciBsb2dzVXNlcl9uYW1l ID0gIiI7DQogICAgaWYgKCh1c2VyTmFtZSAhPSBudWxsKSAmJiAodXNlck5hbWUg IT0gIiIpKQ0KICAgIHsNCiAgICAgICAgbG9nc1VzZXJfbmFtZSA9IHVzZXJOYW1l Ow0KICAgIH1lbHNlew0KICAgICAgICBsb2dzVXNlcl9uYW1lID0gbG9nc1VzZXJf bG9naW5OYW1lOw0KICAgIH0NCg0KICAgIHZhciBuZXdJdGVtID0gbmV3IGxvZ3NJ dGVtKA0KICAgICAgICAib2siLCANCiAgICAgICAgbG9nc1VzZXJfbmFtZSArICIg emFsb8W+aWwga29tdW5pdHUgPGEgaHJlZj1cIi9jei9zIisgKGxvZ3NfSXNDZW50 cmFsID8gIjMxNTMiIDogIjI1NSIpICsgKGxvZ3NfSXNDZW50cmFsID8gIiIgOiAi L2M4MjkiKSArIi9jeSIgKyBhdHRyaWJ1dGVzWyJpZCJdICsNCiAgICAgICAgICAg ICJcIj5cIiIgKyBhdHRyaWJ1dGVzWyJuYW1lIl0gKyAiXCI8L2E+IiArIA0KICAg ICAgICAgICAgKHBhcnNlSW50KGF0dHJpYnV0ZXNbInR5cGVfaWQiXSkgPiAtMQ0K ICAgICAgICAgICAgICAgID8gIiB0eXB1IDxhIGhyZWY9XCIvY3ovcyIrIChsb2dz X0lzQ2VudHJhbCA/ICIxNDgyIiA6ICI1MDEiKSArIChsb2dzX0lzQ2VudHJhbCA/ ICIiIDogIi9jODI5IikgKyIvcCIgKyBhdHRyaWJ1dGVzWyJ0eXBlX2lkIl0gKyAi XCI+XCIiICsgYXR0cmlidXRlc1sidHlwZV9uYW1lIl0gKyAiXCI8L2E+IiANCiAg ICAgICAgICAgICAgICA6ICIiICksIA0KICAgICAgICBhdHRyaWJ1dGVzWyJkYXRl Il0sDQogICAgICAgIGF0dHJpYnV0ZXNbIm9yZGVyIl0NCiAgICApOw0KICAgIGxv Z3NVc2VyW2xvZ3NVc2VyLmxlbmd0aF0gPSBuZXdJdGVtOw0KfQ0KDQoNCi8vIE1l dGhvZCBmb3IgbG9hZGluZyB1c2VyIGxvZ3MgZm9yIGNvbW11bml0eSBhcnRpY2xl cy4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCi8vIC0geG1sRGF0YUl0ZW0gICAgIC0gb25lIFhNTCBub2RlIG9iamVj dA0KLy8gLSBhY3R1YWxJdGVtSW5kZXggLSBpbmRleCBvZiBhY3R1YWwgaXRlbSBp biBYTUwgcmVzdWx0DQovLyAtIGl0ZW1zQ291bnQgICAgICAtIGNvdW50IG9mIGFs bCBYTUwgcmVzdWx0cw0KLy8gLSBhdHRyaWJ1dGVzICAgICAgLSBhcnJheSB3aXRo IHN0cmluZyBpbmRleGVkIGF0dHJpYnV0ZSBpdGVtcw0KZnVuY3Rpb24gbG9nc1Vz ZXJfY29tbXVuaXR5QXJ0aWNsZXMoeG1sRGF0YUl0ZW0sIGFjdHVhbEl0ZW1JbmRl eCwgaXRlbXNDb3VudCwgYXR0cmlidXRlcywgdXNlck5hbWUpDQp7DQogICAgdmFy IGxvZ3NVc2VyX25hbWUgPSAiIjsNCiAgICBpZiAoKHVzZXJOYW1lICE9IG51bGwp ICYmICh1c2VyTmFtZSAhPSAiIikpDQogICAgew0KICAgICAgICBsb2dzVXNlcl9u YW1lID0gdXNlck5hbWU7DQogICAgfWVsc2V7DQogICAgICAgIGxvZ3NVc2VyX25h bWUgPSBsb2dzVXNlcl9sb2dpbk5hbWU7DQogICAgfQ0KDQogICAgdmFyIG5ld0l0 ZW0gPSBuZXcgbG9nc0l0ZW0oDQogICAgICAgICJhZGQiLCANCiAgICAgICAgbG9n c1VzZXJfbmFtZSArICIgbmFwc2FsIMSNbMOhbmVrIDxhIGhyZWY9XCIvY3ovcyIr KGxvZ3NfSXNDZW50cmFsID8gIjMyMjkiIDogIjI1OSIpKyAobG9nc19Jc0NlbnRy YWwgPyAiIiA6ICIvYzgyOSIpICsiLyIgKyANCiAgICAgICAgICAgIChwYXJzZUlu dChhdHRyaWJ1dGVzWyJjb21tdW5pdHlfaWQiXSkgPiAtMSA/ICJjeSIgKyBhdHRy aWJ1dGVzWyJjb21tdW5pdHlfaWQiXSArICIvIiA6ICIiKSArICJjbWEiICsgYXR0 cmlidXRlc1siaWQiXSArDQogICAgICAgICAgICAiXCI+XCIiICsgYXR0cmlidXRl c1sibmFtZSJdICsgIlwiPC9hPiIgKyANCiAgICAgICAgICAgIChwYXJzZUludChh dHRyaWJ1dGVzWyJjb21tdW5pdHlfaWQiXSkgPiAtMQ0KICAgICAgICAgICAgICAg ID8gIiB2IGtvbXVuaXTEmyA8YSBocmVmPVwiL2N6L3MiKyAobG9nc19Jc0NlbnRy YWwgPyAiMzE1MyIgOiAiMjU1IikgKyAobG9nc19Jc0NlbnRyYWwgPyAiIiA6ICIv YzgyOSIpICsiL2N5IiArIGF0dHJpYnV0ZXNbImNvbW11bml0eV9pZCJdICsgIlwi PlwiIiArIGF0dHJpYnV0ZXNbImNvbW11bml0eV9uYW1lIl0gKyAiXCI8L2E+IiAN CiAgICAgICAgICAgICAgICA6ICIiICksIA0KICAgICAgICBhdHRyaWJ1dGVzWyJk YXRlIl0sDQogICAgICAgIGF0dHJpYnV0ZXNbIm9yZGVyIl0NCiAgICApOw0KICAg IGxvZ3NVc2VyW2xvZ3NVc2VyLmxlbmd0aF0gPSBuZXdJdGVtOw0KfQ0KDQovLyBN ZXRob2QgZm9yIGxvYWRpbmcgdXNlciBsb2dzIGZvciBjb21tdW5pdHkgY2F0ZWdv cmllcy4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQovLyAtIHhtbERhdGFJdGVtICAgICAtIG9uZSBYTUwgbm9kZSBvYmpl Y3QNCi8vIC0gYWN0dWFsSXRlbUluZGV4IC0gaW5kZXggb2YgYWN0dWFsIGl0ZW0g aW4gWE1MIHJlc3VsdA0KLy8gLSBpdGVtc0NvdW50ICAgICAgLSBjb3VudCBvZiBh bGwgWE1MIHJlc3VsdHMNCi8vIC0gYXR0cmlidXRlcyAgICAgIC0gYXJyYXkgd2l0 aCBzdHJpbmcgaW5kZXhlZCBhdHRyaWJ1dGUgaXRlbXMNCmZ1bmN0aW9uIGxvZ3NV c2VyX2NvbW11bml0eUNhdGVnb3JpZXMoeG1sRGF0YUl0ZW0sIGFjdHVhbEl0ZW1J bmRleCwgaXRlbXNDb3VudCwgYXR0cmlidXRlcywgdXNlck5hbWUpDQp7DQogICAg dmFyIGxvZ3NVc2VyX25hbWUgPSAiIjsNCiAgICBpZiAoKHVzZXJOYW1lICE9IG51 bGwpICYmICh1c2VyTmFtZSAhPSAiIikpDQogICAgew0KICAgICAgICBsb2dzVXNl cl9uYW1lID0gdXNlck5hbWU7DQogICAgfWVsc2V7DQogICAgICAgIGxvZ3NVc2Vy X25hbWUgPSBsb2dzVXNlcl9sb2dpbk5hbWU7DQogICAgfQ0KDQogICAgdmFyIG5l d0l0ZW0gPSBuZXcgbG9nc0l0ZW0oDQogICAgICAgICJhZGQiLCANCiAgICAgICAg bG9nc1VzZXJfbmFtZSArICIgdnl0dm/FmWlsIGthdGVnb3JpaSA8YSBocmVmPVwi L2N6L3MiKyAobG9nc19Jc0NlbnRyYWwgPyAiMzIxOCIgOiAiMjU4IikgKyAobG9n c19Jc0NlbnRyYWwgPyAiIiA6ICIvYzgyOSIpICsiLyIgKyANCiAgICAgICAgICAg IChwYXJzZUludChhdHRyaWJ1dGVzWyJjb21tdW5pdHlfaWQiXSkgPiAtMSA/ICJj eSIgKyBhdHRyaWJ1dGVzWyJjb21tdW5pdHlfaWQiXSArICIvIiA6ICIiKSArICJj YyIgKyBhdHRyaWJ1dGVzWyJpZCJdICsNCiAgICAgICAgICAgICJcIj5cIiIgKyBh dHRyaWJ1dGVzWyJuYW1lIl0gKyAiXCI8L2E+IiArIA0KICAgICAgICAgICAgKHBh cnNlSW50KGF0dHJpYnV0ZXNbImNvbW11bml0eV9pZCJdKSA+IC0xDQogICAgICAg ICAgICAgICAgPyAiIHYga29tdW5pdMSbIDxhIGhyZWY9XCIvY3ovcyIrIChsb2dz X0lzQ2VudHJhbCA/ICIzMTUzIiA6ICIyNTUiKSArIChsb2dzX0lzQ2VudHJhbCA/ ICIiIDogIi9jODI5IikgKyIvY3kiICsgYXR0cmlidXRlc1siY29tbXVuaXR5X2lk Il0gKyAiXCI+XCIiICsgYXR0cmlidXRlc1siY29tbXVuaXR5X25hbWUiXSArICJc IjwvYT4iIA0KICAgICAgICAgICAgICAgIDogIiIgKSwgDQogICAgICAgIGF0dHJp YnV0ZXNbImRhdGUiXSwNCiAgICAgICAgYXR0cmlidXRlc1sib3JkZXIiXQ0KICAg ICk7DQogICAgbG9nc1VzZXJbbG9nc1VzZXIubGVuZ3RoXSA9IG5ld0l0ZW07DQp9 DQoNCi8vIE1ldGhvZCBmb3IgbG9hZGluZyB1c2VyIGxvZ3MgZm9yIGNvbW11bml0 eSB0eXBlcy4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCi8vIC0geG1sRGF0YUl0ZW0gICAgIC0gb25lIFhNTCBu b2RlIG9iamVjdA0KLy8gLSBhY3R1YWxJdGVtSW5kZXggLSBpbmRleCBvZiBhY3R1 YWwgaXRlbSBpbiBYTUwgcmVzdWx0DQovLyAtIGl0ZW1zQ291bnQgICAgICAtIGNv dW50IG9mIGFsbCBYTUwgcmVzdWx0cw0KLy8gLSBhdHRyaWJ1dGVzICAgICAgLSBh cnJheSB3aXRoIHN0cmluZyBpbmRleGVkIGF0dHJpYnV0ZSBpdGVtcw0KZnVuY3Rp b24gbG9nc1VzZXJfY29tbXVuaXR5VHlwZXMoeG1sRGF0YUl0ZW0sIGFjdHVhbEl0 ZW1JbmRleCwgaXRlbXNDb3VudCwgYXR0cmlidXRlcywgdXNlck5hbWUpDQp7DQog ICAgdmFyIGxvZ3NVc2VyX25hbWUgPSAiIjsNCiAgICBpZiAoKHVzZXJOYW1lICE9 IG51bGwpICYmICh1c2VyTmFtZSAhPSAiIikpDQogICAgew0KICAgICAgICBsb2dz VXNlcl9uYW1lID0gdXNlck5hbWU7DQogICAgfWVsc2V7DQogICAgICAgIGxvZ3NV c2VyX25hbWUgPSBsb2dzVXNlcl9sb2dpbk5hbWU7DQogICAgfQ0KDQogICAgdmFy IG5ld0l0ZW0gPSBuZXcgbG9nc0l0ZW0oDQogICAgICAgICJhZGQiLCANCiAgICAg ICAgbG9nc1VzZXJfbmFtZSArICIgdnl0dm/FmWlsIHR5cCBrb211bml0eSA8YSBo cmVmPVwiL2N6L3MiKyAobG9nc19Jc0NlbnRyYWwgPyAiMTQ4MiIgOiAiNTAxIikg KyAobG9nc19Jc0NlbnRyYWwgPyAiIiA6ICIvYzgyOSIpICsiL3AiICsgYXR0cmli dXRlc1siaWQiXSArICJcIj5cIiIgKyBhdHRyaWJ1dGVzWyJuYW1lIl0gKyAiXCI8 L2E+IiwgDQogICAgICAgIGF0dHJpYnV0ZXNbImRhdGUiXSwNCiAgICAgICAgYXR0 cmlidXRlc1sib3JkZXIiXQ0KICAgICk7DQogICAgbG9nc1VzZXJbbG9nc1VzZXIu bGVuZ3RoXSA9IG5ld0l0ZW07DQp9DQoNCi8vIE1ldGhvZCBmb3IgbG9hZGluZyB1 c2VyIGxvZ3MgZm9yIGRpc2N1c3Npb24gYXJ0aWNsZXMuIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIC0geG1sRGF0 YUl0ZW0gICAgIC0gb25lIFhNTCBub2RlIG9iamVjdA0KLy8gLSBhY3R1YWxJdGVt SW5kZXggLSBpbmRleCBvZiBhY3R1YWwgaXRlbSBpbiBYTUwgcmVzdWx0DQovLyAt IGl0ZW1zQ291bnQgICAgICAtIGNvdW50IG9mIGFsbCBYTUwgcmVzdWx0cw0KLy8g LSBhdHRyaWJ1dGVzICAgICAgLSBhcnJheSB3aXRoIHN0cmluZyBpbmRleGVkIGF0 dHJpYnV0ZSBpdGVtcw0KZnVuY3Rpb24gbG9nc1VzZXJfZGlzY3Vzc2lvbkFydGlj bGVzKHhtbERhdGFJdGVtLCBhY3R1YWxJdGVtSW5kZXgsIGl0ZW1zQ291bnQsIGF0 dHJpYnV0ZXMsIHVzZXJOYW1lKQ0Kew0KICAgIHZhciBsb2dzVXNlcl9uYW1lID0g IiI7DQogICAgaWYgKCh1c2VyTmFtZSAhPSBudWxsKSAmJiAodXNlck5hbWUgIT0g IiIpKQ0KICAgIHsNCiAgICAgICAgbG9nc1VzZXJfbmFtZSA9IHVzZXJOYW1lOw0K ICAgIH1lbHNlew0KICAgICAgICBsb2dzVXNlcl9uYW1lID0gbG9nc1VzZXJfbG9n aW5OYW1lOw0KICAgIH0NCg0KICAgIHZhciBuZXdJdGVtID0gbmV3IGxvZ3NJdGVt KA0KICAgICAgICAocGFyc2VJbnQoYXR0cmlidXRlc1sicGFyZW50X2FydGljbGVf aWQiXSkgPiAtMSA/ICJyZXBseSIgOiAiYWRkIiksIA0KICAgICAgICBsb2dzVXNl cl9uYW1lICsgKHBhcnNlSW50KGF0dHJpYnV0ZXNbInBhcmVudF9hcnRpY2xlX2lk Il0pID4gLTEgPyAiIHJlYWdvdmFsIG5hIHDFmcOtc3DEm3ZlayAiIDogIiB2eXR2 b8WZaWwgcMWZw61zcMSbdmVrICIpICsgDQogICAgICAgICAgICAiPGEgaHJlZj1c Ii9jei9zIisgKGxvZ3NfSXNDZW50cmFsID8gIjEzOTgiIDogIjIyOSIpICsiL2Ii ICsgKHBhcnNlSW50KGF0dHJpYnV0ZXNbInBhcmVudF9hcnRpY2xlX2lkIl0pID4g LTEgPyBhdHRyaWJ1dGVzWyJwYXJlbnRfYXJ0aWNsZV9pZCJdIDogYXR0cmlidXRl c1siaWQiXSkgKyAiXCI+XCIiICsgDQogICAgICAgICAgICAocGFyc2VJbnQoYXR0 cmlidXRlc1sicGFyZW50X2FydGljbGVfaWQiXSkgPiAtMSA/IGF0dHJpYnV0ZXNb InBhcmVudF9hcnRpY2xlX3N1YmplY3QiXSA6IGF0dHJpYnV0ZXNbIm5hbWUiXSkg KyAiXCI8L2E+IiArIA0KICAgICAgICAgICAgKHBhcnNlSW50KGF0dHJpYnV0ZXNb ImRpc2N1c3Npb25faWQiXSkgPiAtMQ0KICAgICAgICAgICAgICAgID8gIiBkbyBk aXNrdXplIDxhIGhyZWY9XCIvY3ovcyIrIChsb2dzX0lzQ2VudHJhbCA/ICIxMzgy IiA6ICIyMjQiKSArIi9hIiArIGF0dHJpYnV0ZXNbImRpc2N1c3Npb25faWQiXSAr ICJcIj5cIiIgKyBhdHRyaWJ1dGVzWyJkaXNjdXNzaW9uX3N1YmplY3QiXSArICJc IjwvYT4iIA0KICAgICAgICAgICAgICAgIDogIiIgKSwgDQogICAgICAgIGF0dHJp YnV0ZXNbImRhdGUiXSwNCiAgICAgICAgYXR0cmlidXRlc1sib3JkZXIiXQ0KICAg ICk7DQogICAgbG9nc1VzZXJbbG9nc1VzZXIubGVuZ3RoXSA9IG5ld0l0ZW07DQog ICAgDQogICAgLy8gc2hvd2luZyBmaW5hbCBsb2dzDQogICAgc2hvd0xvZ3MobG9n c1VzZXIsIGxvZ3NVc2VyX3Jlc3VsdEVsZW1lbnQsIGxvZ3NVc2VyX3Jlc3VsdEVs ZW1lbnRQYXJlbnQsIGxvZ3NVc2VyX2NvdW50T2ZMb2dzMlNob3cpOw0KfQ0KDQov LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQovLyBGdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBsb2dzIG9mIHNvbWUg Q09NTVVOSVRZDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQoNCi8vIGdsb2JhbCB2YXJpYWJsZSB3aXRoIHJlZmVy ZW5jZSB0byBvYmplY3QgZm9yIHVzZXIgbG9ncw0KdmFyIGxvZ3NDb21tdW5pdHlf cmVzdWx0RWxlbWVudCA9IG51bGw7DQp2YXIgbG9nc0NvbW11bml0eV9yZXN1bHRF bGVtZW50UGFyZW50ID0gbnVsbDsNCg0KLy8gYXJyYXkgd2l0aCB1c2VyIGxvZ3MN CnZhciBsb2dzQ29tbXVuaXR5ID0gbmV3IEFycmF5KCk7DQoNCi8vIE1ldGhvZCBm b3IgbG9hZGluZyBhbmQgc2hvd2luZyB1c2VyIGxvZ3MuIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N Ci8vIC0gdXNlcklkICAgICAgICAgICA6IFN0cmluZyAtIElkIG9mIHNwZWNpZmlj IHVzZXINCi8vIC0gc3lzdGVtSWQgICAgICAgICA6IFN0cmluZyAtIElkIG9mIHNw ZWNpZmljIHN5c3RlbQ0KLy8gLSByZXN1bHRzRWxlbWVudElkIDogU3RyaW5nIC0g SWQgb2YgSFRNTCBlbGVtZW50IGZvciBkaXNwbGF5aW5nIHRoZSByZXN1bHRzDQov LyAtIGxvYWRpbmdFbGVtZW50SWQgOiBTdHJpbmcgLSBJZCBvZiBIVE1MIGVsZW1l bnQgZm9yIHNob3dpbmcgbG9hZGluZyBpbmZvDQovLyAtIGVycm9yRWxlbWVudElk ICAgOiBTdHJpbmcgLSBJZCBvZiBIVE1MIGVsZW1lbnQgZm9yIHNob3dpbmcgZXJy b3IgaW5mbw0KZnVuY3Rpb24gbG9hZExvZ3M0Q29tbXVuaXR5KGNvbW11bml0eUlk LCBzeXN0ZW1JZCwgcmVzdWx0c0VsZW1lbnRJZCwgbG9hZGluZ0VsZW1lbnRJZCwg ZXJyb3JFbGVtZW50SWQpDQp7DQogICAgbG9nc0NvbW11bml0eV9yZXN1bHRFbGVt ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocmVzdWx0c0VsZW1lbnRJZCk7 DQogICAgbG9nc0NvbW11bml0eV9yZXN1bHRFbGVtZW50UGFyZW50ID0gZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQocmVzdWx0c0VsZW1lbnRJZCArICJQYXJlbnQiKTsN Cg0KICAgIHZhciBhamF4UmVhZGVyID0gbmV3IEFqYXhEYXRhUmVhZGVyKGxvYWRp bmdFbGVtZW50SWQsIGxvYWRpbmdIVE1MLCBhZnRlckxvYWRIVE1MLCBlcnJvckVs ZW1lbnRJZCwgZ2VuZXJhbEVycm9ySFRNTCwgcmV0cmVpdmluZ0RhdGFFcnJvckhU TUwpOw0KICAgIA0KICAgIGlmIChwYXJzZUludChzeXN0ZW1JZCkgPT0gMTEpDQog ICAgew0KICAgICAgICBsb2dzX0lzQ2VudHJhbCA9IHRydWU7DQogICAgfQ0KICAg DQogICAgLy8gTWV0aG9kIGZvciBleGVjdXRpb24gb2YgZ2V0dGluZyBkYXRhIGFu ZCB3aXRoIHNldHRpbmdzIG9mIGZpbmFsIA0KICAgIC8vIGRlZmluaXRpb246IGdl dERhdGFCeUl0ZW0oDQogICAgLy8gICAgdXJsICAgICAgICAgICAgICAgICAgICAg ICAgICBbZGF0YSBzb3VyY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLSBvYmxpZ2F0b3J5XSwgDQogICAgLy8gICAgbWV0aG9kMkV4ZWN1 dGUgICAgICAgICAgICAgICBbc2luZ2xlIHN0cmluZyBtZXRob2QgbmFtZSAgICAg ICAgICAgICAgICAgICAgICAgICAgLSBvYmxpZ2F0b3J5XSwgDQogICAgLy8gICAg eG1sTm9kZU5hbWUgICAgICAgICAgICAgICAgICBbY2VudHJhbCBuYW1lIG9mIG5v ZGUgd2l0aCBkYXRhIGF0dHJpYnV0ZXMgICAgICAgICAgLSBvYmxpZ2F0b3J5XSwg DQogICAgLy8gICAgbG9hZGluZ0Rlc2NyaXB0aW9uICAgICAgICAgICBbY3VzdG9t IHRleHQgZm9yIGxvYWRpbmcgZGVzY3JpcHRpb24gICAgICAgICAgICAgICAgLSBv cHRpb25hbF0sDQogICAgLy8gICAgYWZ0ZXJMb2FkRGVzY3JpcHRpb24gICAgICAg ICBbY3VzdG9tIHRleHQgdG8gc2hvdyBhZnRlciBsb2FkaW5nICAgICAgICAgICAg ICAgICAgLSBvcHRpb25hbF0sIA0KICAgIC8vICAgIHNwZWNpYWxPYmplY3RJZDRM b2FkaW5nVGV4dHMgW0hUTUwgZWxlbWVudCBJZCAtIGZvciBzaG93aW5nIGN1c3Rv bSBsb2FkaW5nIHRleHRzIC0gb3B0aW9uYWxdLA0KICAgIC8vICAgIHNwZWNpYWxP YmplY3RJZDRFcnJvclRleHRzICAgW0hUTUwgZWxlbWVudCBJZCAtIGZvciBzaG93 aW5nIGN1c3RvbSBlcnJvciB0ZXh0cyAgIC0gb3B0aW9uYWxdDQogICAgLy8gICAg KQ0KICAgIGFqYXhSZWFkZXIuZ2V0RGF0YUJ5SXRlbSgiaHR0cDovLyIrIEdldFVy bEJhc2UoKSArIi9jb25uZWN0b3IvY29ubmVjdG9yTkEuYXNweD9maWxlPWxvZ3Mt Y29tbXVuaXR5X3JlZ2lzdGVyZWQtdXNlcnMmc3lzdGVtaWQ9IitzeXN0ZW1JZCsi JmNvbW11bml0eWlkPSIrY29tbXVuaXR5SWQsICJsb2dzQ29tbXVuaXR5X3JlZ2lz dGVyZWRVc2VycyIsICJpdGVtIik7DQogICAgYWpheFJlYWRlci5nZXREYXRhQnlJ dGVtKCJodHRwOi8vIisgR2V0VXJsQmFzZSgpICsiL2Nvbm5lY3Rvci9jb25uZWN0 b3JOQS5hc3B4P2ZpbGU9bG9ncy1jb21tdW5pdHlfY2F0ZWdvcmllcyZzeXN0ZW1p ZD0iK3N5c3RlbUlkKyImY29tbXVuaXR5aWQ9Iitjb21tdW5pdHlJZCwgImxvZ3ND b21tdW5pdHlfY2F0ZWdvcmllcyIsICJpdGVtIik7DQogICAgYWpheFJlYWRlci5n ZXREYXRhQnlJdGVtKCJodHRwOi8vIisgR2V0VXJsQmFzZSgpICsiL2Nvbm5lY3Rv ci9jb25uZWN0b3JOQS5hc3B4P2ZpbGU9bG9ncy1jb21tdW5pdHlfYmxvY2tlZC11 c2VycyZzeXN0ZW1pZD0iK3N5c3RlbUlkKyImY29tbXVuaXR5aWQ9Iitjb21tdW5p dHlJZCwgImxvZ3NDb21tdW5pdHlfYmxvY2tlZFVzZXJzIiwgIml0ZW0iKTsNCiAg ICBhamF4UmVhZGVyLmdldERhdGFCeUl0ZW0oImh0dHA6Ly8iKyBHZXRVcmxCYXNl KCkgKyIvY29ubmVjdG9yL2Nvbm5lY3Rvck5BLmFzcHg/ZmlsZT1sb2dzLWNvbW11 bml0eV9hcnRpY2xlcyZzeXN0ZW1pZD0iK3N5c3RlbUlkKyImY29tbXVuaXR5aWQ9 Iitjb21tdW5pdHlJZCwgImxvZ3NDb21tdW5pdHlfYXJ0aWNsZXMiLCAiaXRlbSIp Ow0KICAgIGFqYXhSZWFkZXIuZ2V0RGF0YUJ5SXRlbSgiaHR0cDovLyIrIEdldFVy bEJhc2UoKSArIi9jb25uZWN0b3IvY29ubmVjdG9yTkEuYXNweD9maWxlPWxvZ3Mt Y29tbXVuaXR5X2Rpc2N1c3Npb24tYXJ0aWNsZXMmZGJvLldTX0Rpc2N1c3Npb25B cnRpY2xlLlN5c3RlbUlkPSIrc3lzdGVtSWQrIiZkYm8uRGlzY3Vzc2lvbkFzc2ln bm1lbnQuU3lzdGVtSWQ9IitzeXN0ZW1JZCsiJmRiby5EaXNjdXNzaW9uQXNzaWdu bWVudC5Gb3JlaWduS2V5SWQ9Iitjb21tdW5pdHlJZCwgImxvZ3NDb21tdW5pdHlf ZGlzY3Vzc2lvbkFydGljbGVzIiwgIml0ZW0iKTsNCn0NCg0KLy8gTWV0aG9kIGZv ciBsb2FkaW5nIHVzZXIgbG9ncyBmb3IgY29tbXVuaXR5IGFydGljbGVzLiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K Ly8gLSB4bWxEYXRhSXRlbSAgICAgLSBvbmUgWE1MIG5vZGUgb2JqZWN0DQovLyAt IGFjdHVhbEl0ZW1JbmRleCAtIGluZGV4IG9mIGFjdHVhbCBpdGVtIGluIFhNTCBy ZXN1bHQNCi8vIC0gaXRlbXNDb3VudCAgICAgIC0gY291bnQgb2YgYWxsIFhNTCBy ZXN1bHRzDQovLyAtIGF0dHJpYnV0ZXMgICAgICAtIGFycmF5IHdpdGggc3RyaW5n IGluZGV4ZWQgYXR0cmlidXRlIGl0ZW1zDQpmdW5jdGlvbiBsb2dzQ29tbXVuaXR5 X3JlZ2lzdGVyZWRVc2Vycyh4bWxEYXRhSXRlbSwgYWN0dWFsSXRlbUluZGV4LCBp dGVtc0NvdW50LCBhdHRyaWJ1dGVzKQ0Kew0KICAgIHZhciBuZXdJdGVtID0gbmV3 IGxvZ3NJdGVtKA0KICAgICAgICAib2siLCANCiAgICAgICAgImJ5bCBwxZlpamF0 IG5vdsO9IMSNbGVuICIgKyANCiAgICAgICAgICAgIChwYXJzZUludChhdHRyaWJ1 dGVzWyJ1c2VyX2lkIl0pID4gLTEgPyAiPGEgaHJlZj1cIi9jei9zIisgKGxvZ3Nf SXNDZW50cmFsID8gIjE0MTAiIDogIjIxMyIpICsiL3UiKyBhdHRyaWJ1dGVzWyJ1 c2VyX2lkIl0gKyJcIiBjbGFzcz1cIm5pY2tuYW1lXCI+IisgYXR0cmlidXRlc1si bG9naW5uYW1lIl0gKyI8L2E+IiA6ICJhbm9ueW1uw60gdcW+aXZhdGVsIiksIA0K ICAgICAgICBhdHRyaWJ1dGVzWyJkYXRlIl0sDQogICAgICAgIGF0dHJpYnV0ZXNb Im9yZGVyIl0NCiAgICApOw0KICAgIGxvZ3NDb21tdW5pdHlbbG9nc0NvbW11bml0 eS5sZW5ndGhdID0gbmV3SXRlbTsNCn0NCg0KLy8gTWV0aG9kIGZvciBsb2FkaW5n IHVzZXIgbG9ncyBmb3IgY29tbXVuaXR5IGFydGljbGVzLiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gLSB4bWxE YXRhSXRlbSAgICAgLSBvbmUgWE1MIG5vZGUgb2JqZWN0DQovLyAtIGFjdHVhbEl0 ZW1JbmRleCAtIGluZGV4IG9mIGFjdHVhbCBpdGVtIGluIFhNTCByZXN1bHQNCi8v IC0gaXRlbXNDb3VudCAgICAgIC0gY291bnQgb2YgYWxsIFhNTCByZXN1bHRzDQov LyAtIGF0dHJpYnV0ZXMgICAgICAtIGFycmF5IHdpdGggc3RyaW5nIGluZGV4ZWQg YXR0cmlidXRlIGl0ZW1zDQpmdW5jdGlvbiBsb2dzQ29tbXVuaXR5X2Jsb2NrZWRV c2Vycyh4bWxEYXRhSXRlbSwgYWN0dWFsSXRlbUluZGV4LCBpdGVtc0NvdW50LCBh dHRyaWJ1dGVzKQ0Kew0KICAgIHZhciBuZXdJdGVtID0gbmV3IGxvZ3NJdGVtKA0K ICAgICAgICAiYWRkIiwgDQogICAgICAgICLEjWxlbiAiICsgDQogICAgICAgICAg ICAocGFyc2VJbnQoYXR0cmlidXRlc1sidXNlcl9pZCJdKSA+IC0xID8gIjxhIGhy ZWY9XCIvY3ovcyIrIChsb2dzX0lzQ2VudHJhbCA/ICIxNDEwIiA6ICIyMTMiKSAr Ii91IisgYXR0cmlidXRlc1sidXNlcl9pZCJdICsiXCIgY2xhc3M9XCJuaWNrbmFt ZVwiPiIrIGF0dHJpYnV0ZXNbImxvZ2lubmFtZSJdICsiPC9hPiIgOiAiYW5vbnlt bsOtIHXFvml2YXRlbCIpICsgDQogICAgICAgICAgICAiIGJ5bCB6YWJsb2tvdsOh biIsIA0KICAgICAgICBhdHRyaWJ1dGVzWyJkYXRlIl0sDQogICAgICAgIGF0dHJp YnV0ZXNbIm9yZGVyIl0NCiAgICApOw0KICAgIGxvZ3NDb21tdW5pdHlbbG9nc0Nv bW11bml0eS5sZW5ndGhdID0gbmV3SXRlbTsNCn0NCg0KLy8gTWV0aG9kIGZvciBs b2FkaW5nIHVzZXIgbG9ncyBmb3IgY29tbXVuaXR5IGFydGljbGVzLiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8g LSB4bWxEYXRhSXRlbSAgICAgLSBvbmUgWE1MIG5vZGUgb2JqZWN0DQovLyAtIGFj dHVhbEl0ZW1JbmRleCAtIGluZGV4IG9mIGFjdHVhbCBpdGVtIGluIFhNTCByZXN1 bHQNCi8vIC0gaXRlbXNDb3VudCAgICAgIC0gY291bnQgb2YgYWxsIFhNTCByZXN1 bHRzDQovLyAtIGF0dHJpYnV0ZXMgICAgICAtIGFycmF5IHdpdGggc3RyaW5nIGlu ZGV4ZWQgYXR0cmlidXRlIGl0ZW1zDQpmdW5jdGlvbiBsb2dzQ29tbXVuaXR5X2Fy dGljbGVzKHhtbERhdGFJdGVtLCBhY3R1YWxJdGVtSW5kZXgsIGl0ZW1zQ291bnQs IGF0dHJpYnV0ZXMpDQp7DQogICAgdmFyIG5ld0l0ZW0gPSBuZXcgbG9nc0l0ZW0o DQogICAgICAgICJhZGQiLCANCiAgICAgICAgKHBhcnNlSW50KGF0dHJpYnV0ZXNb InVzZXJfaWQiXSkgPiAtMSA/ICI8YSBocmVmPVwiL2N6L3MiKyAobG9nc19Jc0Nl bnRyYWwgPyAiMTQxMCIgOiAiMjEzIikgKyIvdSIrIGF0dHJpYnV0ZXNbInVzZXJf aWQiXSArIlwiIGNsYXNzPVwibmlja25hbWVcIj4iKyBhdHRyaWJ1dGVzWyJ1c2Vy X2xvZ2lubmFtZSJdICsiPC9hPiIgOiAiYW5vbnltbsOtIHXFvml2YXRlbCIpICsg DQogICAgICAgICAgICAiIG5hcHNhbCDEjWzDoW5layA8YSBocmVmPVwiL2N6L3Mi Kyhsb2dzX0lzQ2VudHJhbCA/ICIzMjI5IiA6ICIyNTkiKSsgKGxvZ3NfSXNDZW50 cmFsID8gIiIgOiAiL2M4MjkiKSArICIvIiArIA0KICAgICAgICAgICAgKHBhcnNl SW50KGF0dHJpYnV0ZXNbImNvbW11bml0eV9pZCJdKSA+IC0xID8gImN5IiArIGF0 dHJpYnV0ZXNbImNvbW11bml0eV9pZCJdICsgIi8iIDogIiIpICsgImNtYSIgKyBh dHRyaWJ1dGVzWyJhcnRpY2xlX2lkIl0gKw0KICAgICAgICAgICAgIlwiPlwiIiAr IGF0dHJpYnV0ZXNbIm5hbWUiXSArICJcIjwvYT4iLCANCiAgICAgICAgYXR0cmli dXRlc1siZGF0ZSJdLA0KICAgICAgICBhdHRyaWJ1dGVzWyJvcmRlciJdDQogICAg KTsNCiAgICBsb2dzQ29tbXVuaXR5W2xvZ3NDb21tdW5pdHkubGVuZ3RoXSA9IG5l d0l0ZW07DQp9DQoNCi8vIE1ldGhvZCBmb3IgbG9hZGluZyB1c2VyIGxvZ3MgZm9y IGNvbW11bml0eSBjYXRlZ29yaWVzLiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIC0geG1sRGF0YUl0ZW0gICAgIC0g b25lIFhNTCBub2RlIG9iamVjdA0KLy8gLSBhY3R1YWxJdGVtSW5kZXggLSBpbmRl eCBvZiBhY3R1YWwgaXRlbSBpbiBYTUwgcmVzdWx0DQovLyAtIGl0ZW1zQ291bnQg ICAgICAtIGNvdW50IG9mIGFsbCBYTUwgcmVzdWx0cw0KLy8gLSBhdHRyaWJ1dGVz ICAgICAgLSBhcnJheSB3aXRoIHN0cmluZyBpbmRleGVkIGF0dHJpYnV0ZSBpdGVt cw0KZnVuY3Rpb24gbG9nc0NvbW11bml0eV9jYXRlZ29yaWVzKHhtbERhdGFJdGVt LCBhY3R1YWxJdGVtSW5kZXgsIGl0ZW1zQ291bnQsIGF0dHJpYnV0ZXMpDQp7DQog ICAgdmFyIG5ld0l0ZW0gPSBuZXcgbG9nc0l0ZW0oDQogICAgICAgICJhZGQiLCAN CiAgICAgICAgKHBhcnNlSW50KGF0dHJpYnV0ZXNbInVzZXJfaWQiXSkgPiAtMSA/ ICI8YSBocmVmPVwiL2N6L3MiKyAobG9nc19Jc0NlbnRyYWwgPyAiMTQxMCIgOiAi MjEzIikgKyIvdSIrIGF0dHJpYnV0ZXNbInVzZXJfaWQiXSArIlwiIGNsYXNzPVwi bmlja25hbWVcIj4iKyBhdHRyaWJ1dGVzWyJ1c2VyX2xvZ2lubmFtZSJdICsiPC9h PiIgOiAiYW5vbnltbsOtIHXFvml2YXRlbCIpICsgDQogICAgICAgICAgICAiIHZ5 dHZvxZlpbCBrYXRlZ29yaWkgPGEgaHJlZj1cIi9jei9zIisgKGxvZ3NfSXNDZW50 cmFsID8gIjMyMTgiIDogIjI1OCIpICsgKGxvZ3NfSXNDZW50cmFsID8gIi8iIDog Ii9jODI5LyIpICsNCiAgICAgICAgICAgIChwYXJzZUludChhdHRyaWJ1dGVzWyJj b21tdW5pdHlfaWQiXSkgPiAtMSA/ICJjeSIgKyBhdHRyaWJ1dGVzWyJjb21tdW5p dHlfaWQiXSArICIvIiA6ICIiKSArICJjYyIgKyBhdHRyaWJ1dGVzWyJjYXRlZ29y eV9pZCJdICsNCiAgICAgICAgICAgICJcIj5cIiIgKyBhdHRyaWJ1dGVzWyJuYW1l Il0gKyAiXCI8L2E+IiwgDQogICAgICAgIGF0dHJpYnV0ZXNbImRhdGUiXSwNCiAg ICAgICAgYXR0cmlidXRlc1sib3JkZXIiXQ0KICAgICk7DQogICAgbG9nc0NvbW11 bml0eVtsb2dzQ29tbXVuaXR5Lmxlbmd0aF0gPSBuZXdJdGVtOw0KfQ0KDQovLyBN ZXRob2QgZm9yIGxvYWRpbmcgdXNlciBsb2dzIGZvciBkaXNjdXNzaW9uIGFydGlj bGVzLiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQovLyAtIHhtbERhdGFJdGVtICAgICAtIG9uZSBYTUwgbm9kZSBvYmpl Y3QNCi8vIC0gYWN0dWFsSXRlbUluZGV4IC0gaW5kZXggb2YgYWN0dWFsIGl0ZW0g aW4gWE1MIHJlc3VsdA0KLy8gLSBpdGVtc0NvdW50ICAgICAgLSBjb3VudCBvZiBh bGwgWE1MIHJlc3VsdHMNCi8vIC0gYXR0cmlidXRlcyAgICAgIC0gYXJyYXkgd2l0 aCBzdHJpbmcgaW5kZXhlZCBhdHRyaWJ1dGUgaXRlbXMNCmZ1bmN0aW9uIGxvZ3ND b21tdW5pdHlfZGlzY3Vzc2lvbkFydGljbGVzKHhtbERhdGFJdGVtLCBhY3R1YWxJ dGVtSW5kZXgsIGl0ZW1zQ291bnQsIGF0dHJpYnV0ZXMpDQp7DQogICAgdmFyIG5l d0l0ZW0gPSBuZXcgbG9nc0l0ZW0oDQogICAgICAgIChwYXJzZUludChhdHRyaWJ1 dGVzWyJwYXJlbnRfYXJ0aWNsZV9pZCJdKSA+IC0xID8gInJlcGx5IiA6ICJhZGQi KSwgDQogICAgICAgIChwYXJzZUludChhdHRyaWJ1dGVzWyJ1c2VyX2lkIl0pID4g LTEgPyAiPGEgaHJlZj1cIi9jei9zIisgKGxvZ3NfSXNDZW50cmFsID8gIjE0MTAi IDogIjIxMyIpICsiL3UiKyBhdHRyaWJ1dGVzWyJ1c2VyX2lkIl0gKyJcIiBjbGFz cz1cIm5pY2tuYW1lXCI+IisgYXR0cmlidXRlc1sidXNlcl9sb2dpbm5hbWUiXSAr IjwvYT4iIDogImFub255bW7DrSB1xb5pdmF0ZWwiKSArIA0KICAgICAgICAgICAg KHBhcnNlSW50KGF0dHJpYnV0ZXNbInBhcmVudF9hcnRpY2xlX2lkIl0pID4gLTEg PyAiIHJlYWdvdmFsIG5hIHDFmcOtc3DEm3ZlayAiIDogIiB2eXR2b8WZaWwgcMWZ w61zcMSbdmVrICIpICsgDQogICAgICAgICAgICAiPGEgaHJlZj1cIi9jei9zIiAr ICAobG9nc19Jc0NlbnRyYWwgPyAiMTM5OCIgOiAiMjI5IikgKyAiL2IiICsgKHBh cnNlSW50KGF0dHJpYnV0ZXNbInBhcmVudF9hcnRpY2xlX2lkIl0pID4gLTEgPyBh dHRyaWJ1dGVzWyJwYXJlbnRfYXJ0aWNsZV9pZCJdIDogYXR0cmlidXRlc1siaWQi XSkgKyAiL2N5IisgYXR0cmlidXRlc1siY29tbXVuaXR5X2lkIl0gKyJcIj5cIiIg KyANCiAgICAgICAgICAgIChwYXJzZUludChhdHRyaWJ1dGVzWyJwYXJlbnRfYXJ0 aWNsZV9pZCJdKSA+IC0xID8gYXR0cmlidXRlc1sicGFyZW50X2FydGljbGVfc3Vi amVjdCJdIDogYXR0cmlidXRlc1sibmFtZSJdKSArICJcIjwvYT4iICsgDQogICAg ICAgICAgICAocGFyc2VJbnQoYXR0cmlidXRlc1siZGlzY3Vzc2lvbl9pZCJdKSA+ IC0xDQogICAgICAgICAgICAgICAgPyAiIGRvIGRpc2t1emUgPGEgaHJlZj1cIi9j ei9zIiArIChsb2dzX0lzQ2VudHJhbCA/ICIxMzgyIiA6ICIyMjQiKSArICIvYSIg KyBhdHRyaWJ1dGVzWyJkaXNjdXNzaW9uX2lkIl0gKyAiL2N5IisgYXR0cmlidXRl c1siY29tbXVuaXR5X2lkIl0gKyJcIj5cIiIgKyBhdHRyaWJ1dGVzWyJkaXNjdXNz aW9uX3N1YmplY3QiXSArICJcIjwvYT4iIA0KICAgICAgICAgICAgICAgIDogIiIg KSwgDQogICAgICAgIGF0dHJpYnV0ZXNbImRhdGUiXSwNCiAgICAgICAgYXR0cmli dXRlc1sib3JkZXIiXQ0KICAgICk7DQogICAgbG9nc0NvbW11bml0eVtsb2dzQ29t bXVuaXR5Lmxlbmd0aF0gPSBuZXdJdGVtOw0KICAgIC8vIHNob3dpbmcgZmluYWwg bG9ncw0KICAgIHNob3dMb2dzKGxvZ3NDb21tdW5pdHksIGxvZ3NDb21tdW5pdHlf cmVzdWx0RWxlbWVudCwgbG9nc0NvbW11bml0eV9yZXN1bHRFbGVtZW50UGFyZW50 KTsNCn0NCg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=flash_implementation.js Content-Type: application/x-javascript; charset=utf-8; name=flash_implementation.js Content-Location: http://teplice.naseadresa.cz/0000-Global/js/flash_implementation.js Content-Transfer-Encoding: Base64 77u/dmFyIGZsYXNoU3JjXzAxID0gIi9maWxlcy9mbGFzaC9jbG9ja18wMi5zd2Yi Ow0KdmFyIGZsYXNoU3JjXzAyID0gIi9maWxlcy9mbGFzaC9mbGFzaF9nYWxsZXJ5 XzE2LnN3ZiI7CQkvLyBfMDM7DQp2YXIgZmxhc2hTcmNfMDMgPSAiL2ZpbGVzL2Zs YXNoL2ZsYXNoX2dhbGxlcnlfMTYuc3dmIjsJCS8vIF9saW5lOw0KdmFyIGZsYXNo U3JjXzA0ID0gIi9maWxlcy9mbGFzaC8wMl9zbGlkZXNob3dfMDhfNTkwLnN3ZiI7 DQp2YXIgZmxhc2hTcmNfMDUgPSAiL2ZpbGVzL2ZsYXNoLzAyX3NsaWRlc2hvd18w OC5zd2YiOw0KdmFyIGZsYXNoU3JjXzA2ID0gIi9maWxlcy9mbGFzaC9mbGFzaF92 aWRlb18yMS5zd2YiOwkJLy8gZmxhc2hfdmlkZW9fMjIuc3dmDQp2YXIgZmxhc2hT cmNfMDcgPSAiL2ZpbGVzL2ZsYXNoL3NtYWxsX3NsaWRlc2hvd18wMS5zd2YiOw0K dmFyIGZsYXNoU3JjXzA4ID0gIi9maWxlcy9mbGFzaC9mcmF0aW5nXzEyLnN3ZiI7 DQp2YXIgZmxhc2hTcmNfMDkgPSAiL2ZpbGVzL2ZsYXNoL3NsaWJvbWV0cl8wOC5z d2YiOwkJLy8JIi9maWxlcy9mbGFzaC9zbGlib21ldHJfMTQweDEwM18wMS5zd2Yi Ow0KdmFyIGZsYXNoU3JjXzEwID0gIi9maWxlcy9mbGFzaC9zbGlib21ldHJfMDgu c3dmIjsJCS8vCSIvZmlsZXMvZmxhc2gvc2xpYm9tZXRyXzIxMHgxNjBfMDEuc3dm IjsNCnZhciBmbGFzaFNyY18xMSA9ICIvZmlsZXMvZmxhc2gvbHppbWV0cl8wOC5z d2YiOwkJLy8JIi9maWxlcy9mbGFzaC9semltZXRyXzE0MHgxMDNfMDEuc3dmIjsN CnZhciBmbGFzaFNyY18xMiA9ICIvZmlsZXMvZmxhc2gvbHppbWV0cl8wOC5zd2Yi OwkJLy8JIi9maWxlcy9mbGFzaC9semltZXRyXzIxMHgxNjAuc3dmIjsNCnZhciBm bGFzaFNyY18xMyA9ICIvZmlsZXMvZmxhc2gvZnV0dXJvb21fZ2FsbGVyeS5zd2Yi Ow0KDQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PSBjbG9jayBpbiB0aGUgdG9wIHJpZ2h0IG9uIHRoZSBwYWdlcyAo dGFtcGxhdGU6IF9jb250ZW50X2FmdGVyIHNpZD05NSkgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8NCg0KZnVuY3Rp b24gY2xvY2tUb3BSaWdodFBhZ2VzKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKXsN Cgl2YXIgc2NyVyA9IDY5OwkJCQkJLy8gxaHDrcWZa2EgaG9kaW4gLSBzY2hvZG7D oSBzIGRlZmluaWPDrSBTV0ZPYmplY3Q7DQoJdmFyIHNjckggPSA2OTsJCQkJCS8v IHbDvcWha2EgaG9kaW4gLSBzY2hvZG7DoSBzIGRlZmluaWPDrSBTV0ZPYmplY3Q7 DQoNCgl2YXIgc28gPSBuZXcgU1dGT2JqZWN0KGZsYXNoU3JjXzAxLCAiY2xvY2tf Zmxhc2giLHNjclcsIHNjckgsICI4IiwgIiNGRkZGRkYiKTsNCglzby5hZGRWYXJp YWJsZSgid21vZGUiLCAidHJhbnNwYXJlbnQiKTsNCglzby5hZGRWYXJpYWJsZSgi c2NyVyIsIHNjclcpOwkNCglzby5hZGRWYXJpYWJsZSgic2NySCIsIHNjckgpOw0K CXNvLmFkZFZhcmlhYmxlKCJIb3Vyc1RpbWUiLGhvdXJzKTsNCglzby5hZGRWYXJp YWJsZSgiTWludXRlc1RpbWUiLG1pbnV0ZXMpOw0KCXNvLmFkZFZhcmlhYmxlKCJT ZWNvbmRzVGltZSIsc2Vjb25kcyk7DQoJc28ud3JpdGUoImNsb2NrX2ZsYXNoIik7 DQp9Ow0KDQoNCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09IGRldGFpbCBhcnRpY2xlIGdhbGxlcnkgKHRlbXBsYXRl OiAwMl9tdWx0aW1lZGlhX2RldGFpbCBzaWQ9MTAwNykgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8NCg0KZnVuY3Rp b24gZGV0YWlsQXJ0aWNsZUdhbGxlcnkoZmlsZVBhdGgsIHhtbFNyYywgc3RhcnRJ bWFnZSwgdmlzaXRVcmwsIHZpc2l0VGFyZ2V0KXsNCgl2YXIgc2NyVyA9IDU5MjsJ CQkJCS8vIMWhw63FmWthIGdhbGVyaWUgLSBzY2hvZG7DoSBzIGRlZmluaWPDrSBT V0ZPYmplY3Q7DQoJdmFyIHNjckggPSA0MDA7CQkJCQkvLyB2w73FoWthIGdhbGVy aWUgLSBzY2hvZG7DoSBzIGRlZmluaWPDrSBTV0ZPYmplY3Q7DQoNCgl2YXIgc29i ID0gbmV3IFNXRk9iamVjdChmbGFzaFNyY18wMiwgImdhbGxlcnlfZGV0YWlsIixz Y3JXLCBzY3JILCAiOCIsICIjRkZGRkZGIik7DQoJc29iLmFkZFZhcmlhYmxlKCJ3 bW9kZSIsICJ0cmFuc3BhcmVudCIpOw0KCXNvYi5hZGRWYXJpYWJsZSgic2VwIiwg InwiKTsNCglzb2IuYWRkVmFyaWFibGUoInNlcDEiLCAifHh8Iik7DQoJc29iLmFk ZFZhcmlhYmxlKCJzZXAyIiwgInwiKTsNCg0KLy8Jc29iLmFkZFZhcmlhYmxlKCJ2 aXNpYmxlRGV0YWlsIiwgdHJ1ZSk7DQovLwlzb2IuYWRkVmFyaWFibGUoInZpc2li bGVEZXNjcmlwdGlvbiIsIHRydWUpOw0KLy8Jc29iLmFkZFZhcmlhYmxlKCJ2aXNp YmxlVGh1bWJuYWlscyIsIHRydWUpOw0KDQoJc29iLmFkZFZhcmlhYmxlKCJzY3JX Iiwgc2NyVyk7CQkJCQ0KCXNvYi5hZGRWYXJpYWJsZSgic2NySCIsIHNjckgpOw0K CXNvYi5hZGRWYXJpYWJsZSgic3RhcnRJbWFnZSIsIHN0YXJ0SW1hZ2UpOwkJCS8v IGlkIHbDvWNob3rDrWhvIG9icsOhemt1DQoNCglzb2IuYWRkVmFyaWFibGUoIm5h dkJvcmRUb3AiLCAiOTk5OTk5fDF8ZG90cyIpOwkJCS8vIGJhcnZhLCDFocOtxZlr YSBhIHN0eWwgcsOhbWXEjWt1IG5hZCBuYXZpZ2Fjw607DQoJc29iLmFkZFZhcmlh YmxlKCJuYXZCb3JkQm90IiwgIjk5OTk5OXwxfGRvdHMiKTsJCQkvLyBiYXJ2YSwg xaHDrcWZa2EgYSBzdHlsIHLDoW1lxI1rdSBwb2QgbmF2aWdhY8OtOw0KCXNvYi5h ZGRWYXJpYWJsZSgibmF2UGFkZGluZyIsIDN8NSk7CQkJCS8vIG9kc2F6ZW7DrSBv YnNhaHUgbmF2aWdhY2Ugb2Qgb2tyYWplIC0gWHxZOw0KDQoJc29iLmFkZFZhcmlh YmxlKCJ0aHVtVyIsIDEwMCk7CQkJCQkvLyDFocOtxZlrYSBuw6FobGVkdSBvYnLD oXprdTsNCglzb2IuYWRkVmFyaWFibGUoInRodW1IIiwgNzUpOwkJCQkJLy8gdsO9 xaFrYSBuw6FobGVkdSBvYnLDoXprdTsNCglzb2IuYWRkVmFyaWFibGUoInRodW1C VyIsIDEpOwkJCQkJLy8gdmVsaWtvc3QgcsOhbWXEjWt1IGtvbGVtIG7DoWhsZWR1 IG9icsOhemt1Ow0KCXNvYi5hZGRWYXJpYWJsZSgidGh1bUJDIiwgImQ5ZDlkOSIp OwkJCQkJLy8gYmFydmEgcsOhbWXEjWt1IGtvbGVtIG7DoWhsZWR1IG9icsOhemt1 Ow0KCXNvYi5hZGRWYXJpYWJsZSgidGh1bURYIiwgNSk7CQkJCQkvLyB2emTDoWxl bm9zdCBtZXppIG7DoWhsZWR5Ow0KDQoJc29iLmFkZFZhcmlhYmxlKCJyZXBsYWNl SW1hZ2UiLCAidmlkZW98dGh1bWJzL3ZpZGVvLmpwZ3xkZXRhaWwvdmlkZW8uanBn fHh8ZmlsZXx0aHVtYnMvZmlsZS5qcGd8ZGV0YWlsL2ZpbGUuanBnIik7CS8vIG5h aHJhemVuaSBjaHliZWppY2ljaCBvYnJhemt1DQoNCglzb2IuYWRkVmFyaWFibGUo InZpc2l0VXJsIiwgImh0dHA6Ly8iICsgR2V0VXJsQmFzZSgpICsgdmlzaXRVcmwp OwkvLyAiaHR0cDovLyIgKyBHZXRVcmxCYXNlKCkgKyAiL2N6L3MyNzQzIik7CS8v IG5lcG92aW5uZSAtIGFkcmVzYSBwcm8gb2Rlc2lsYW5pIG5hdnN0ZXZ5IGRva3Vt ZW50dTsNCglzb2IuYWRkVmFyaWFibGUoInZpc2l0VGFyZ2V0IiwgdmlzaXRUYXJn ZXQpOwkJCQkJCQkJCQkvLyBwb3Zpbm5lIC0gaWQgZnJhbXUga2FtIHNlIG1hIHN0 cmFua2Egb3RldmlyYXQ7DQoJc29iLmFkZFZhcmlhYmxlKCJ2aXNpdEZpcnN0Iiwg ZmFsc2UpOwkJCQkJLy8gbmVwb3Zpbm5lIHByZWRkZWZpbm92YW5vICJmYWxzZSIJ CXRydWUvZmFsc2UgLSBvZGVzbGUvbmVvZGVzbGUgaSBuYXZzdGV2dSBwcnZuaWhv IHpvYnJhemVuZWhvIGRva3VtZW50dTsNCg0KCXNvYi5hZGRWYXJpYWJsZSgicHJl bG9hZFByb3RlY3QiLCJwcmVsb2FkcHJvdGVjdD0iK01hdGgucm91bmQoTWF0aC5y YW5kb20oKSoxMDAwMCkpOwkvLyBuZXBvdmlubmUgLSB2eWdlbmVydWplIG5haG9k bmUgY2lzbG8sIGt0ZXJlIHNlIHByaWRhIG5hIGtvbmVjIHByaSB2b2xhbmkga29u ZWt0b3J1Ow0KDQoJc29iLmFkZFZhcmlhYmxlKCJmaWxlUGF0aCIsIGZpbGVQYXRo KTsNCglzb2IuYWRkVmFyaWFibGUoInhtbF9zcmMiLCB4bWxTcmMpOw0KCXNvYi53 cml0ZSgiZ2FsbGVyeV9kZXRhaWwiKTsNCn07DQoNCi8qID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IGRldGFpbCBhcnRp Y2xlIGxpbmUgZ2FsbGVyeSAodGVtcGxhdGU6IDAyX211bHRpbWVkaWFfZGV0YWls IHNpZD0xMDA3KSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PSAqLw0KDQpmdW5jdGlvbiBkZXRhaWxBcnRpY2xlTGluZUdh bGxlcnkoZmlsZVBhdGgsIHhtbFNyYywgc3RhcnRJbWFnZSwgdmlzaXRVcmwsIHZp c2l0VGFyZ2V0KXsNCgl2YXIgc2NyVyA9IDU5MjsJCQkJCS8vIMWhw63FmWthIGdh bGVyaWUgLSBzY2hvZG7DoSBzIGRlZmluaWPDrSBTV0ZPYmplY3Q7DQoJdmFyIHNj ckggPSA5MzsJCQkJCS8vIHbDvcWha2EgZ2FsZXJpZSAtIHNjaG9kbsOhIHMgZGVm aW5pY8OtIFNXRk9iamVjdDsNCg0KCXZhciBzb2IgPSBuZXcgU1dGT2JqZWN0KGZs YXNoU3JjXzAzLCAibGluZV9nYWxsZXJ5X2RldGFpbCIsc2NyVywgc2NySCwgIjgi LCAiI0ZGRkZGRiIpOw0KCXNvYi5hZGRWYXJpYWJsZSgid21vZGUiLCAidHJhbnNw YXJlbnQiKTsNCglzb2IuYWRkVmFyaWFibGUoInNlcDEiLCAifHh8Iik7DQoJc29i LmFkZFZhcmlhYmxlKCJzZXAyIiwgInwiKTsNCg0KCXNvYi5hZGRWYXJpYWJsZSgi dmlzaWJsZURldGFpbCIsIGZhbHNlKTsNCglzb2IuYWRkVmFyaWFibGUoInZpc2li bGVEZXNjcmlwdGlvbiIsIGZhbHNlKTsNCi8vCXNvYi5hZGRWYXJpYWJsZSgidmlz aWJsZVRodW1ibmFpbHMiLCB0cnVlKTsNCg0KCXNvYi5hZGRWYXJpYWJsZSgic2Ny VyIsIHNjclcpOwkJCQkNCglzb2IuYWRkVmFyaWFibGUoInNjckgiLCBzY3JIKTsN Cglzb2IuYWRkVmFyaWFibGUoInN0YXJ0SW1hZ2UiLCBzdGFydEltYWdlKTsJCQkv LyBpZCB2w71jaG96w61obyBvYnLDoXprdQ0KDQoJc29iLmFkZFZhcmlhYmxlKCJu YXZCb3JkVG9wIiwgIjk5OTk5OXwxfGRvdHMiKTsJCQkvLyBiYXJ2YSwgxaHDrcWZ a2EgYSBzdHlsIHLDoW1lxI1rdSBuYWQgbmF2aWdhY8OtOw0KCXNvYi5hZGRWYXJp YWJsZSgibmF2Qm9yZEJvdCIsICI5OTk5OTl8MXxkb3RzIik7CQkJLy8gYmFydmEs IMWhw63FmWthIGEgc3R5bCByw6FtZcSNa3UgcG9kIG5hdmlnYWPDrTsNCglzb2Iu YWRkVmFyaWFibGUoIm5hdlBhZGRpbmciLCAzfDUpOwkJCQkvLyBvZHNhemVuw60g b2JzYWh1IG5hdmlnYWNlIG9kIG9rcmFqZSAtIFh8WTsNCg0KCXNvYi5hZGRWYXJp YWJsZSgidGh1bVciLCAxMDApOwkJCQkJLy8gxaHDrcWZa2EgbsOhaGxlZHUgb2Jy w6F6a3U7DQoJc29iLmFkZFZhcmlhYmxlKCJ0aHVtSCIsIDc1KTsJCQkJCS8vIHbD vcWha2EgbsOhaGxlZHUgb2Jyw6F6a3U7DQoJc29iLmFkZFZhcmlhYmxlKCJ0aHVt QlciLCAxKTsJCQkJCS8vIHZlbGlrb3N0IHLDoW1lxI1rdSBrb2xlbSBuw6FobGVk dSBvYnLDoXprdTsNCglzb2IuYWRkVmFyaWFibGUoInRodW1CQyIsICJkOWQ5ZDki KTsJCQkJCS8vIGJhcnZhIHLDoW1lxI1rdSBrb2xlbSBuw6FobGVkdSBvYnLDoXpr dTsNCglzb2IuYWRkVmFyaWFibGUoInRodW1EWCIsIDUpOwkJCQkJLy8gdnpkw6Fs ZW5vc3QgbWV6aSBuw6FobGVkeTsNCg0KCXNvYi5hZGRWYXJpYWJsZSgicmVwbGFj ZUltYWdlIiwgInZpZGVvfHRodW1icy92aWRlby5qcGd8ZGV0YWlsL3ZpZGVvLmpw Z3x4fGZpbGV8dGh1bWJzL2ZpbGUuanBnfGRldGFpbC9maWxlLmpwZyIpOwkvLyBu YWhyYXplbmkgY2h5YmVqaWNpY2ggb2JyYXprdQ0KDQoNCglzb2IuYWRkVmFyaWFi bGUoInZpc2l0VXJsIiwgImh0dHA6Ly8iICsgR2V0VXJsQmFzZSgpICsgdmlzaXRV cmwpOwkvLyAiaHR0cDovLyIgKyBHZXRVcmxCYXNlKCkgKyAiL2N6L3MyNzQzIik7 CS8vIG5lcG92aW5uZSAtIGFkcmVzYSBwcm8gb2Rlc2lsYW5pIG5hdnN0ZXZ5IGRv a3VtZW50dTsNCglzb2IuYWRkVmFyaWFibGUoInZpc2l0VGFyZ2V0IiwgdmlzaXRU YXJnZXQpOwkJCQkJCQkJCQkvLyBwb3Zpbm5lIC0gaWQgZnJhbXUga2FtIHNlIG1h IHN0cmFua2Egb3RldmlyYXQ7DQoJc29iLmFkZFZhcmlhYmxlKCJ2aXNpdEZpcnN0 IiwgZmFsc2UpOwkJCQkJLy8gbmVwb3Zpbm5lIHByZWRkZWZpbm92YW5vICJmYWxz ZSIJCXRydWUvZmFsc2UgLSBvZGVzbGUvbmVvZGVzbGUgaSBuYXZzdGV2dSBwcnZu aWhvIHpvYnJhemVuZWhvIGRva3VtZW50dTsNCg0KCXNvYi5hZGRWYXJpYWJsZSgi cHJlbG9hZFByb3RlY3QiLCJwcmVsb2FkcHJvdGVjdD0iK01hdGgucm91bmQoTWF0 aC5yYW5kb20oKSoxMDAwMCkpOwkvLyBuZXBvdmlubmUgLSB2eWdlbmVydWplIG5h aG9kbmUgY2lzbG8sIGt0ZXJlIHNlIHByaWRhIG5hIGtvbmVjIHByaSB2b2xhbmkg a29uZWt0b3J1Ow0KDQoJc29iLmFkZFZhcmlhYmxlKCJmaWxlUGF0aCIsIGZpbGVQ YXRoKTsNCglzb2IuYWRkVmFyaWFibGUoInhtbF9zcmMiLCB4bWxTcmMpOw0KCXNv Yi53cml0ZSgibGluZV9nYWxsZXJ5X2RldGFpbCIpOw0KfTsNCg0KLyogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gZGV0 YWlsIGFydGljbGUgbGluZSBnYWxsZXJ5IC0gZm9yIHNob3dpbmcgbGlzdCBvZiBp bWFnZXMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09ICovDQoNCmZ1bmN0aW9uIGRldGFpbEFydGlj bGVMaW5lR2FsbGVyeTRTaG93aW5nQ29uY3JldGVJbWFnZXMoZmlsZVBhdGgsIHht bFNyYywgc3RhcnRJbWFnZSwgdmlzaXRVcmwsIHZpc2l0VGFyZ2V0KXsNCgl2YXIg c2NyVyA9IDU5MjsJCQkJCS8vIMWhw63FmWthIGdhbGVyaWUgLSBzY2hvZG7DoSBz IGRlZmluaWPDrSBTV0ZPYmplY3Q7DQoJdmFyIHNjckggPSA5MzsJCQkJCS8vIHbD vcWha2EgZ2FsZXJpZSAtIHNjaG9kbsOhIHMgZGVmaW5pY8OtIFNXRk9iamVjdDsN Cg0KCXZhciBzb2IgPSBuZXcgU1dGT2JqZWN0KGZsYXNoU3JjXzAzLCAiZ2FsbGVy eV9pbWFnZV9mbGFzaExpbmUiLHNjclcsIHNjckgsICI4IiwgIiNGRkZGRkYiKTsN Cglzb2IuYWRkVmFyaWFibGUoIndtb2RlIiwgInRyYW5zcGFyZW50Iik7DQoJc29i LmFkZFZhcmlhYmxlKCJzZXAxIiwgInx4fCIpOw0KCXNvYi5hZGRWYXJpYWJsZSgi c2VwMiIsICJ8Iik7DQoNCglzb2IuYWRkVmFyaWFibGUoInZpc2libGVEZXRhaWwi LCBmYWxzZSk7DQoJc29iLmFkZFZhcmlhYmxlKCJ2aXNpYmxlRGVzY3JpcHRpb24i LCBmYWxzZSk7DQovLwlzb2IuYWRkVmFyaWFibGUoInZpc2libGVUaHVtYm5haWxz IiwgdHJ1ZSk7DQoNCglzb2IuYWRkVmFyaWFibGUoInNjclciLCBzY3JXKTsJCQkJ DQoJc29iLmFkZFZhcmlhYmxlKCJzY3JIIiwgc2NySCk7DQoJc29iLmFkZFZhcmlh YmxlKCJzdGFydEltYWdlIiwgc3RhcnRJbWFnZSk7CQkJLy8gaWQgdsO9Y2hvesOt aG8gb2Jyw6F6a3UNCg0KCXNvYi5hZGRWYXJpYWJsZSgibmF2Qm9yZFRvcCIsICI5 OTk5OTl8MXxkb3RzIik7CQkJLy8gYmFydmEsIMWhw63FmWthIGEgc3R5bCByw6Ft ZcSNa3UgbmFkIG5hdmlnYWPDrTsNCglzb2IuYWRkVmFyaWFibGUoIm5hdkJvcmRC b3QiLCAiOTk5OTk5fDF8ZG90cyIpOwkJCS8vIGJhcnZhLCDFocOtxZlrYSBhIHN0 eWwgcsOhbWXEjWt1IHBvZCBuYXZpZ2Fjw607DQoJc29iLmFkZFZhcmlhYmxlKCJu YXZQYWRkaW5nIiwgM3w1KTsJCQkJLy8gb2RzYXplbsOtIG9ic2FodSBuYXZpZ2Fj ZSBvZCBva3JhamUgLSBYfFk7DQoNCglzb2IuYWRkVmFyaWFibGUoInRodW1XIiwg MTAwKTsJCQkJCS8vIMWhw63FmWthIG7DoWhsZWR1IG9icsOhemt1Ow0KCXNvYi5h ZGRWYXJpYWJsZSgidGh1bUgiLCA3NSk7CQkJCQkvLyB2w73FoWthIG7DoWhsZWR1 IG9icsOhemt1Ow0KCXNvYi5hZGRWYXJpYWJsZSgidGh1bUJXIiwgMSk7CQkJCQkv LyB2ZWxpa29zdCByw6FtZcSNa3Uga29sZW0gbsOhaGxlZHUgb2Jyw6F6a3U7DQoJ c29iLmFkZFZhcmlhYmxlKCJ0aHVtQkMiLCAiZDlkOWQ5Iik7CQkJCQkvLyBiYXJ2 YSByw6FtZcSNa3Uga29sZW0gbsOhaGxlZHUgb2Jyw6F6a3U7DQoJc29iLmFkZFZh cmlhYmxlKCJ0aHVtRFgiLCA1KTsJCQkJCS8vIHZ6ZMOhbGVub3N0IG1lemkgbsOh aGxlZHk7DQoNCglzb2IuYWRkVmFyaWFibGUoInJlcGxhY2VJbWFnZSIsICJ2aWRl b3x0aHVtYnMvdmlkZW8uanBnfGRldGFpbC92aWRlby5qcGd8eHxmaWxlfHRodW1i cy9maWxlLmpwZ3xkZXRhaWwvZmlsZS5qcGciKTsJLy8gbmFocmF6ZW5pIGNoeWJl amljaWNoIG9icmF6a3UNCg0KCXNvYi5hZGRWYXJpYWJsZSgidmlzaXRVcmwiLCAi aHR0cDovLyIgKyBHZXRVcmxCYXNlKCkgKyB2aXNpdFVybCk7CS8vICJodHRwOi8v IiArIEdldFVybEJhc2UoKSArICIvY3ovczI3NDMiKTsJLy8gbmVwb3Zpbm5lIC0g YWRyZXNhIHBybyBvZGVzaWxhbmkgbmF2c3RldnkgZG9rdW1lbnR1Ow0KCXNvYi5h ZGRWYXJpYWJsZSgidmlzaXRUYXJnZXQiLCB2aXNpdFRhcmdldCk7CQkJCQkJCQkJ CS8vIHBvdmlubmUgLSBpZCBmcmFtdSBrYW0gc2UgbWEgc3RyYW5rYSBvdGV2aXJh dDsNCglzb2IuYWRkVmFyaWFibGUoInZpc2l0Rmlyc3QiLCBmYWxzZSk7CQkJCS8v IG5lcG92aW5uZSBwcmVkZGVmaW5vdmFubyAiZmFsc2UiCQl0cnVlL2ZhbHNlIC0g b2Rlc2xlL25lb2Rlc2xlIGkgbmF2c3RldnUgcHJ2bmlobyB6b2JyYXplbmVobyBk b2t1bWVudHU7DQoNCglzb2IuYWRkVmFyaWFibGUoInByZWxvYWRQcm90ZWN0Iiwi cHJlbG9hZHByb3RlY3Q9IitNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkqMTAwMDAp KTsJLy8gbmVwb3Zpbm5lIC0gdnlnZW5lcnVqZSBuYWhvZG5lIGNpc2xvLCBrdGVy ZSBzZSBwcmlkYSBuYSBrb25lYyBwcmkgdm9sYW5pIGtvbmVrdG9ydTsNCg0KCXNv Yi5hZGRWYXJpYWJsZSgiZmlsZVBhdGgiLCBmaWxlUGF0aCk7DQoJc29iLmFkZFZh cmlhYmxlKCJ4bWxfc3JjIiwgeG1sU3JjKTsNCglzb2Iud3JpdGUoImdhbGxlcnlf aW1hZ2VfZmxhc2hMaW5lIik7DQp9Ow0KDQp2YXIgZ2FsbGVyeUxlbnNJY29uRmls ZU5hbWUgPSBHTE9CQUxfRklMRV9TRVJWRVIgKyAiaW1hZ2VzL3BsdXMtc21hbGwu Z2lmIjsNCnZhciBnYWxsZXJ5TGVuc0ljb25JbWFnZSA9IG5ldyBJbWFnZSgpOw0K Z2FsbGVyeUxlbnNJY29uSW1hZ2Uuc3JjID0gZ2FsbGVyeUxlbnNJY29uRmlsZU5h bWU7DQp2YXIgZ2FsbGVyeUxlbnNJY29uSW1hZ2VMb2FkZWQgPSBmYWxzZTsNCnZh ciBnYWxsZXJ5TGVuc0ljb25JbWFnZVBhcmVudEVsZW1lbnRPcmlnaW5hbENvbnRl bnQgPSAiIjsNCg0KZnVuY3Rpb24gcGxhY2VMZW5zSWNvbk9uVGhlSW1hZ2UoaW1h Z2VFbGVtZW50SWQsIGxpbmtFbGVtZW50SWQsIGxpbmtFbGVtZW50UGFyZW50SWQp DQp7ICAgIA0KICAgIHZhciBpbWdFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KGltYWdlRWxlbWVudElkKTsNCiAgICB2YXIgbGlua0VsID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQobGlua0VsZW1lbnRJZCk7DQogICAgdmFyIGxpbmtQYXJlbnRF bCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGxpbmtFbGVtZW50UGFyZW50SWQp Ow0KICAgIGdhbGxlcnlMZW5zSWNvbkltYWdlTG9hZGVkID0gZmFsc2U7DQoNCiAg ICB2YXIgaW1nID0gbmV3IEltYWdlKCk7DQogICAgaW1nLm9ubG9hZCA9IGZ1bmN0 aW9uICgpIHsNCiAgICAgICAgdmFyIGltYWdlSG9yaXpvbnRhbENlbnRlciA9IE1h dGgucm91bmQoKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGxpbmtFbGVtZW50UGFy ZW50SWQpLm9mZnNldFdpZHRoIC0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaW1h Z2VFbGVtZW50SWQpLm9mZnNldFdpZHRoKSAvIDIpOw0KICAgICAgICB2YXIgaW1h Z2VWZXJ0aWNhbENlbnRlciA9IE1hdGgucm91bmQoKGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKGxpbmtFbGVtZW50UGFyZW50SWQpLm9mZnNldEhlaWdodCAtIGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKGltYWdlRWxlbWVudElkKS5vZmZzZXRIZWlnaHQp IC8gMik7DQoNCiAgICAgICAgLy9pbWFnZUhvcml6b250YWxDZW50ZXIgPSAoaW1h Z2VIb3Jpem9udGFsQ2VudGVyID49IDAgPyBpbWFnZUhvcml6b250YWxDZW50ZXIg OiAwKTsNCiAgICAgICAgLy9pbWFnZVZlcnRpY2FsQ2VudGVyID0gKGltYWdlVmVy dGljYWxDZW50ZXIgPj0gMCA/IGltYWdlVmVydGljYWxDZW50ZXIgOiAwKTsNCg0K ICAgICAgICB2YXIgaWNvbkhUTUwgPSAiPGEgaHJlZj1cIiIrbGlua0VsLmhyZWYr IlwiIHN0eWxlPVwicG9zaXRpb246YWJzb2x1dGU7dG9wOiIrKGltYWdlVmVydGlj YWxDZW50ZXIgKyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpbWFnZUVsZW1lbnRJ ZCkub2Zmc2V0SGVpZ2h0IC0gNSAtIGdhbGxlcnlMZW5zSWNvbkltYWdlLmhlaWdo dCkrInB4O2xlZnQ6IisgDQogICAgICAgICAgICAoaW1hZ2VIb3Jpem9udGFsQ2Vu dGVyICsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaW1hZ2VFbGVtZW50SWQpLm9m ZnNldFdpZHRoIC0gNSAtIGdhbGxlcnlMZW5zSWNvbkltYWdlLndpZHRoKSArInB4 O3otaW5kZXg6OTk7XCI+PGltZyBzcmM9XCIiKyBnYWxsZXJ5TGVuc0ljb25GaWxl TmFtZSArIlwiIGFsdD1cIlp2xJt0xaFpdFwiIHRpdGxlPVwiWnbEm3TFoWl0XCIg Lz48L2E+IjsNCiAgICAgICAgZ2FsbGVyeUxlbnNJY29uSW1hZ2VQYXJlbnRFbGVt ZW50T3JpZ2luYWxDb250ZW50ID0gbGlua1BhcmVudEVsLmlubmVySFRNTDsNCiAg ICAgICAgbGlua1BhcmVudEVsLmlubmVySFRNTCA9IGxpbmtQYXJlbnRFbC5pbm5l ckhUTUwgKyBpY29uSFRNTDsNCiAgICAgICAgDQogICAgICAgIGdhbGxlcnlMZW5z SWNvbkltYWdlTG9hZGVkID0gdHJ1ZTsNCiAgICB9DQogICAgaW1nLnNyYyA9IGlt Z0VsLnNyYzsNCiAgICANCiAgICB3aW5kb3cuc2V0VGltZW91dCgiY2hlY2tQbGFj ZUxlbnNJY29uT25UaGVJbWFnZTR0aW1pbmcoJyIraW1hZ2VFbGVtZW50SWQrIics JyIrbGlua0VsZW1lbnRJZCsiJywnIitsaW5rRWxlbWVudFBhcmVudElkKyInKTsi LCAyMDApOw0KfQ0KDQpmdW5jdGlvbiBjaGVja1BsYWNlTGVuc0ljb25PblRoZUlt YWdlNHRpbWluZyhpbWFnZUVsZW1lbnRJZCwgbGlua0VsZW1lbnRJZCwgbGlua0Vs ZW1lbnRQYXJlbnRJZCkNCnsNCiAgICBpZiAoZ2FsbGVyeUxlbnNJY29uSW1hZ2VM b2FkZWQpDQogICAgew0KICAgICAgICBjaGVja1BsYWNlTGVuc0ljb25PblRoZUlt YWdlKGltYWdlRWxlbWVudElkLCBsaW5rRWxlbWVudElkLCBsaW5rRWxlbWVudFBh cmVudElkKTsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAgcGxhY2VM ZW5zSWNvbk9uVGhlSW1hZ2UoaW1hZ2VFbGVtZW50SWQsIGxpbmtFbGVtZW50SWQs IGxpbmtFbGVtZW50UGFyZW50SWQpOw0KICAgIH0NCn0NCg0KZnVuY3Rpb24gY2hl Y2tQbGFjZUxlbnNJY29uT25UaGVJbWFnZShpbWFnZUVsZW1lbnRJZCwgbGlua0Vs ZW1lbnRJZCwgbGlua0VsZW1lbnRQYXJlbnRJZCkNCnsNCiAgICB2YXIgaW1nRWwg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpbWFnZUVsZW1lbnRJZCk7DQogICAg dmFyIGxpbmtFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGxpbmtFbGVtZW50 SWQpOw0KICAgIHZhciBsaW5rUGFyZW50RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50 QnlJZChsaW5rRWxlbWVudFBhcmVudElkKTsNCg0KICAgIHZhciBpbWFnZUhvcml6 b250YWxDZW50ZXIgPSBNYXRoLnJvdW5kKChkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZChsaW5rRWxlbWVudFBhcmVudElkKS5vZmZzZXRXaWR0aCAtIGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKGltYWdlRWxlbWVudElkKS5vZmZzZXRXaWR0aCkgLyAyKTsN CiAgICB2YXIgaW1hZ2VWZXJ0aWNhbENlbnRlciA9IE1hdGgucm91bmQoKGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKGxpbmtFbGVtZW50UGFyZW50SWQpLm9mZnNldEhl aWdodCAtIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGltYWdlRWxlbWVudElkKS5v ZmZzZXRIZWlnaHQpIC8gMik7DQoNCiAgICAvL2ltYWdlSG9yaXpvbnRhbENlbnRl ciA9IChpbWFnZUhvcml6b250YWxDZW50ZXIgPj0gMCA/IGltYWdlSG9yaXpvbnRh bENlbnRlciA6IDApOw0KICAgIC8vaW1hZ2VWZXJ0aWNhbENlbnRlciA9IChpbWFn ZVZlcnRpY2FsQ2VudGVyID49IDAgPyBpbWFnZVZlcnRpY2FsQ2VudGVyIDogMCk7 DQoNCiAgICB2YXIgaWNvbkhUTUwgPSAiPGEgaHJlZj1cIiIrbGlua0VsLmhyZWYr IlwiIHN0eWxlPVwicG9zaXRpb246YWJzb2x1dGU7dG9wOiIrKGltYWdlVmVydGlj YWxDZW50ZXIgKyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpbWFnZUVsZW1lbnRJ ZCkub2Zmc2V0SGVpZ2h0IC0gNSAtIGdhbGxlcnlMZW5zSWNvbkltYWdlLmhlaWdo dCkrInB4O2xlZnQ6IisgDQogICAgICAgIChpbWFnZUhvcml6b250YWxDZW50ZXIg KyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpbWFnZUVsZW1lbnRJZCkub2Zmc2V0 V2lkdGggLSA1IC0gZ2FsbGVyeUxlbnNJY29uSW1hZ2Uud2lkdGgpICsicHg7ei1p bmRleDo5OTtcIj48aW1nIHNyYz1cIiIrIGdhbGxlcnlMZW5zSWNvbkZpbGVOYW1l ICsiXCIgYWx0PVwiWnbEm3TFoWl0XCIgdGl0bGU9XCJadsSbdMWhaXRcIiAvPjwv YT4iOw0KICAgIGxpbmtQYXJlbnRFbC5pbm5lckhUTUwgPSBnYWxsZXJ5TGVuc0lj b25JbWFnZVBhcmVudEVsZW1lbnRPcmlnaW5hbENvbnRlbnQgKyBpY29uSFRNTDsN Cn0NCg0KDQovLyBHZXRpbmcgb2Zmc2V0IHRvcCBwb3NpdGlvbiBvZiBvYmplY3Qg dG8gbGVmdCB0b3Agd2luZG93IGNvcm5lci4NCmZ1bmN0aW9uIGdldE9mZnNldFRv cChvYmplY3QpDQp7DQogICAgdmFyIG9mZlRvcCA9IG9iamVjdC5vZmZzZXRUb3A7 DQogICAgaWYgKG9iamVjdC5vZmZzZXRQYXJlbnQgIT0gbnVsbCkNCiAgICB7DQog ICAgICAgIG9mZlRvcCArPSBnZXRPZmZzZXRUb3Aob2JqZWN0Lm9mZnNldFBhcmVu dCk7DQogICAgfQ0KICAgIHJldHVybiBvZmZUb3A7DQp9DQoNCi8vIEdldGluZyBv ZmZzZXQgbGVmdCBwb3NpdGlvbiBvZiBvYmplY3QgdG8gbGVmdCB0b3Agd2luZG93 IGNvcm5lci4NCmZ1bmN0aW9uIGdldE9mZnNldExlZnQob2JqZWN0KQ0Kew0KICAg IHZhciBvZmZMZWZ0ID0gb2JqZWN0Lm9mZnNldExlZnQ7DQogICAgaWYgKG9iamVj dC5vZmZzZXRQYXJlbnQgIT0gbnVsbCkNCiAgICB7DQogICAgICAgIG9mZkxlZnQg Kz0gZ2V0T2Zmc2V0TGVmdChvYmplY3Qub2Zmc2V0UGFyZW50KTsNCiAgICB9DQog ICAgcmV0dXJuIG9mZkxlZnQ7DQp9DQoNCi8vIGZ1bmN0aW9uIGZvciBzaG93aW5n IGRldGFpbCBvZiBjb25jcmV0ZSBpbWFnZSBpbiB0aGUgZ2FsbGVyeQ0KZnVuY3Rp b24gc2hvd0dhbGxlcnlJbWFnZURldGFpbChpbWFnZVVybCwgbmFtZSwgZGVzY3Jp cHRpb24pDQp7DQogICAgdmFyIGJpZ0ltYWdlT2JqID0gZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoImdhbGxlcnlfaW1hZ2UiKTsNCiAgICB2YXIgaW1hZ2VVcmxXaXRo b3V0RXh0ID0gaW1hZ2VVcmwuc3Vic3RyKDAsIGltYWdlVXJsLmxlbmd0aCAtIDQp Ow0KICAgIHZhciByZXN1bHRDb250ZW50ID0gDQoJCSI8dGFibGUgc3R5bGU9XCJi YWNrZ3JvdW5kOm5vbmU7d2lkdGg6NTkycHg7aGVpZ2h0OjQyMHB4O292ZXJmbG93 OmhpZGRlbjt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9u OnJlbGF0aXZlO1wiIGNlbGxwYWRkaW5nPVwiMFwiIGNlbGxzcGFjaW5nPVwiMFwi PiIrDQoJCSI8dHI+PHRkIHZhbGlnbj1cIm1pZGRsZVwiIHN0eWxlPVwidGV4dC1h bGlnbjpjZW50ZXI7d2lkdGg6NTkycHg7aGVpZ2h0OjQyMHB4O1wiIGlkPVwiYWN0 dWFsR2FsbGVyeUltYWdlTGlua1BhcmVudFwiPiIrDQoJCSIJPGEgaHJlZj1cImph dmFzY3JpcHQ6b3BlblRoaWNCb3goJyIrbmFtZSsiJywnIitpbWFnZVVybFdpdGhv dXRFeHQrIl84MDB4NjAwLmpwZyIrIicsbnVsbCx0cnVlKTtcIiBpZD1cImFjdHVh bEdhbGxlcnlJbWFnZUxpbmtcIj4iKw0KCQkiCQk8aW1nIHNyYz1cIiIrRE9DVU1F TlRfRklMRV9TRVJWRVIraW1hZ2VVcmxXaXRob3V0RXh0KyJfNTYweDQyMC5qcGci KyJcIiBhbHQ9XCIiK25hbWUrIlwiIHRpdGxlPVwiIituYW1lKyJcIiBpZD1cImFj dHVhbEdhbGxlcnlJbWFnZVwiIC8+IisNCgkJIgk8L2E+IisNCgkJIjwvdGQ+PC90 cj4iKw0KCQkiPC90YWJsZT4iOw0KICAgIGlmIChkZXNjcmlwdGlvbi5yZXBsYWNl KCI8cD48L3A+IiwiIikucmVwbGFjZSgiICIsIiIpLmxlbmd0aCA+IDApDQogICAg ew0KICAgICAgICByZXN1bHRDb250ZW50ICs9ICI8cCBzdHlsZT1cInBhZGRpbmct dG9wOiAxMHB4OyBwYWRkaW5nLWJvdHRvbTogMTBweDt0ZXh0LWFsaWduOmNlbnRl cjtcIj4iK2Rlc2NyaXB0aW9uKyI8L3A+IjsNCiAgICB9DQogICAgZWxzZQ0KICAg IHsNCiAgICAgICAgcmVzdWx0Q29udGVudCArPSAiPHAgc3R5bGU9XCJwYWRkaW5n LXRvcDogMTBweDsgcGFkZGluZy1ib3R0b206IDEwcHg7dGV4dC1hbGlnbjpjZW50 ZXI7XCI+IituYW1lKyI8L3A+IjsNCiAgICB9DQogICAgDQogICAgYmlnSW1hZ2VP YmouaW5uZXJIVE1MID0gcmVzdWx0Q29udGVudDsNCiAgICB2YXIgaW1nID0gbmV3 IEltYWdlKCk7DQogICAgDQogICAgLy9pbWcub25sb2FkID0gZnVuY3Rpb24gKCkg eyBwbGFjZUxlbnNJY29uT25UaGVJbWFnZSgiYWN0dWFsR2FsbGVyeUltYWdlIiwi YWN0dWFsR2FsbGVyeUltYWdlTGluayIsImFjdHVhbEdhbGxlcnlJbWFnZUxpbmtQ YXJlbnQiKSB9Ow0KICAgIGltZy5zcmMgPSBET0NVTUVOVF9GSUxFX1NFUlZFUitp bWFnZVVybFdpdGhvdXRFeHQrIl81NjB4NDIwLmpwZyI7DQogICAgLy9pbWcub25s b2FkID0gZnVuY3Rpb24gKCkgeyBwbGFjZUxlbnNJY29uT25UaGVJbWFnZSgiYWN0 dWFsR2FsbGVyeUltYWdlIiwiYWN0dWFsR2FsbGVyeUltYWdlTGluayIsImFjdHVh bEdhbGxlcnlJbWFnZUxpbmtQYXJlbnQiKSB9Ow0KCQ0KCWlmIChkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgiYm94XzJfYWR2ZXJ0aXNlbWVudF8yNGlmcmFtZV9pZnJh bWUiKSAhPSBudWxsKQ0KCXsNCgkgICAgdmFyIGFkdmVydDEgPSBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgiYm94XzJfYWR2ZXJ0aXNlbWVudF8yNGlmcmFtZV9pZnJh bWUiKTsNCgkgICAgYWR2ZXJ0MS5jb250ZW50V2luZG93LmxvY2F0aW9uLnJlbG9h ZCh0cnVlKTsNCgl9DQoJDQoJaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0 ZXh0QWR2ZXJ0NGlmcmFtZV9pZnJhbWUiKSAhPSBudWxsKQ0KCXsNCgkgICAgdmFy IGFkdmVydDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dEFkdmVydDRp ZnJhbWVfaWZyYW1lIik7DQoJICAgIGFkdmVydDIuY29udGVudFdpbmRvdy5sb2Nh dGlvbi5yZWxvYWQodHJ1ZSk7DQogICAgfQ0KCQ0KICAgIGlmIChkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgiZ29vZ2xlX2Fkc19mcmFtZTEiKSAhPSBudWxsKQ0KICAg IHsNCiAgICAgICAgdmFyIGdvb2dsZUFkc2Vuc2UgPSBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgiZ29vZ2xlX2Fkc19mcmFtZTEiKTsNCgkgICAgZ29vZ2xlQWRzZW5z ZS5jb250ZW50V2luZG93LmxvY2F0aW9uID0gZ29vZ2xlQWRzZW5zZS5jb250ZW50 V2luZG93LmxvY2F0aW9uOw0KICAgIH0NCn0NCg0KLyogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gaG9tZXBhZ2UgYXJ0 aWNsZSBnYWxsZXJ5ICh0ZW1wbGF0ZTogaG9tZV9tYWluTmV3X2l0ZW0gc2lkPTQz MikgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0gKi8NCg0KZnVuY3Rpb24gaG9tZUFydGljbGVHYWxsZXJ5KGZpbGVQYXRo LCB4bWxTcmMsIHN0YXJ0SW1hZ2UsIHZpc2l0VXJsLCB2aXNpdFRhcmdldCl7DQoJ dmFyIHNjclcgPSAzMjA7CQkJCQkJLy8gxaHDrcWZa2EgZ2FsZXJpZSAtIHNjaG9k bsOhIHMgZGVmaW5pY8OtIFNXRk9iamVjdDsNCgl2YXIgc2NySCA9IDI4NTsJCQkJ CQkvLyB2w73FoWthIGdhbGVyaWUgLSBzY2hvZG7DoSBzIGRlZmluaWPDrSBTV0ZP YmplY3Q7DQoNCgl2YXIgc28gPSBuZXcgU1dGT2JqZWN0KGZsYXNoU3JjXzAyLCAi Zmxhc2hfZ2FsbGVyeSIsc2NyVywgc2NySCwgIjgiLCAiI0ZGRkZGRiIpOw0KCXNv LmFkZFZhcmlhYmxlKCJ3bW9kZSIsICJ0cmFuc3BhcmVudCIpOw0KDQoJc28uYWRk VmFyaWFibGUoInNlcCIsICJ8Iik7DQoJc28uYWRkVmFyaWFibGUoInNlcDEiLCAi fHh8Iik7DQoJc28uYWRkVmFyaWFibGUoInNlcDIiLCAifCIpOw0KDQovLwlzby5h ZGRWYXJpYWJsZSgidmlzaWJsZURldGFpbCIsIHRydWUpOw0KLy8Jc28uYWRkVmFy aWFibGUoInZpc2libGVEZXNjcmlwdGlvbiIsIHRydWUpOw0KLy8Jc28uYWRkVmFy aWFibGUoInZpc2libGVUaHVtYm5haWxzIiwgdHJ1ZSk7DQoNCglzby5hZGRWYXJp YWJsZSgic2NyVyIsIHNjclcpOw0KCXNvLmFkZFZhcmlhYmxlKCJzY3JIIiwgc2Ny SCk7DQoJc28uYWRkVmFyaWFibGUoInN0YXJ0SW1hZ2UiLCBzdGFydEltYWdlKTsJ CQkJLy8gaWQgdsO9Y2hvesOtaG8gb2Jyw6F6a3UNCg0KCXNvLmFkZFZhcmlhYmxl KCJ0aHVtVyIsIDQwKTsJCQkJCQkvLyDFocOtxZlrYSBuw6FobGVkdSBvYnLDoXpr dTsNCglzby5hZGRWYXJpYWJsZSgidGh1bUgiLCAzMCk7CQkJCQkJLy8gdsO9xaFr YSBuw6FobGVkdSBvYnLDoXprdTsNCglzby5hZGRWYXJpYWJsZSgidGh1bUJXIiwg MSk7CQkJCQkJLy8gdmVsaWtvc3QgcsOhbWXEjWt1IGtvbGVtIG7DoWhsZWR1IG9i csOhemt1Ow0KCXNvLmFkZFZhcmlhYmxlKCJ0aHVtQkMiLCAiZDlkOWQ5Iik7CQkJ CQkvLyBiYXJ2YSByw6FtZcSNa3Uga29sZW0gbsOhaGxlZHUgb2Jyw6F6a3U7DQoJ c28uYWRkVmFyaWFibGUoInRodW1EWCIsIDUpOwkJCQkJCS8vIHZ6ZMOhbGVub3N0 IG1lemkgbsOhaGxlZHk7DQoNCglzby5hZGRWYXJpYWJsZSgibmF2UGFkZGluZyIs IDN8NSk7CQkJCQkvLyBvZHNhemVuw60gb2JzYWh1IG5hdmlnYWNlIG9kIG9rcmFq ZSAtIFh8WTsNCg0KCXNvLmFkZFZhcmlhYmxlKCJyZXBsYWNlSW1hZ2UiLCAidmlk ZW98dGh1bWJzL3ZpZGVvLmpwZ3xkZXRhaWwvdmlkZW8uanBnfHh8ZmlsZXx0aHVt YnMvZmlsZS5qcGd8ZGV0YWlsL2ZpbGUuanBnIik7CS8vIG5haHJhemVuaSBjaHli ZWppY2ljaCBvYnJhemt1DQoNCg0KCXNvLmFkZFZhcmlhYmxlKCJ2aXNpdFVybCIs ICJodHRwOi8vIiArIEdldFVybEJhc2UoKSArIHZpc2l0VXJsKTsJLy8gImh0dHA6 Ly8iICsgR2V0VXJsQmFzZSgpICsgIi9jei9zMjc0MyIpOwkvLyBuZXBvdmlubmUg LSBhZHJlc2EgcHJvIG9kZXNpbGFuaSBuYXZzdGV2eSBkb2t1bWVudHU7DQoJc28u YWRkVmFyaWFibGUoInZpc2l0VGFyZ2V0IiwgdmlzaXRUYXJnZXQpOwkJCQkJCQkJ CQkvLyBwb3Zpbm5lIC0gaWQgZnJhbXUga2FtIHNlIG1hIHN0cmFua2Egb3Rldmly YXQ7DQoJc28uYWRkVmFyaWFibGUoInZpc2l0Rmlyc3QiLCBmYWxzZSk7CQkJCQkv LyBuZXBvdmlubmUgcHJlZGRlZmlub3Zhbm8gImZhbHNlIgkJdHJ1ZS9mYWxzZSAt IG9kZXNsZS9uZW9kZXNsZSBpIG5hdnN0ZXZ1IHBydm5paG8gem9icmF6ZW5laG8g ZG9rdW1lbnR1Ow0KDQoJc28uYWRkVmFyaWFibGUoInByZWxvYWRQcm90ZWN0Iiwi cHJlbG9hZHByb3RlY3Q9IitNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkqMTAwMDAp KTsJLy8gbmVwb3Zpbm5lIC0gdnlnZW5lcnVqZSBuYWhvZG5lIGNpc2xvLCBrdGVy ZSBzZSBwcmlkYSBuYSBrb25lYyBwcmkgdm9sYW5pIGtvbmVrdG9ydTsNCg0KCXNv LmFkZFZhcmlhYmxlKCJmaWxlUGF0aCIsIGZpbGVQYXRoKTsNCglzby5hZGRWYXJp YWJsZSgieG1sX3NyYyIsIHhtbFNyYyk7DQoJc28ud3JpdGUoImZsYXNoX2dhbGxl cnkiKTsNCn07DQoNCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09IGhvbWVwYWdlIGFydGljbGUgZ2FsbGVyeSB3aXRo b3V0IHRodW1ibmFpbHMgKHRlbXBsYXRlOiBob21lX21haW5OZXdfaXRlbSBzaWQ9 NDMyKSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PSAqLw0KDQpmdW5jdGlvbiBob21lQXJ0aWNsZUdhbGxlcnlOb1RodW1i bmFpbChmaWxlUGF0aCwgeG1sU3JjLCBzdGFydEltYWdlLCB2aXNpdFVybCwgdmlz aXRUYXJnZXQpew0KCXZhciBzY3JXID0gMzIwOwkJCQkJCS8vIMWhw63FmWthIGdh bGVyaWUgLSBzY2hvZG7DoSBzIGRlZmluaWPDrSBTV0ZPYmplY3Q7DQoJdmFyIHNj ckggPSAyMDU7CQkJCQkJLy8gdsO9xaFrYSBnYWxlcmllIC0gc2Nob2Ruw6EgcyBk ZWZpbmljw60gU1dGT2JqZWN0Ow0KDQoJdmFyIHNvID0gbmV3IFNXRk9iamVjdChm bGFzaFNyY18wMiwgImZsYXNoX2dhbGxlcnkiLHNjclcsIHNjckgsICI4IiwgIiNG RkZGRkYiKTsNCglzby5hZGRWYXJpYWJsZSgid21vZGUiLCAidHJhbnNwYXJlbnQi KTsNCg0KCXNvLmFkZFZhcmlhYmxlKCJzZXAiLCAifCIpOw0KCXNvLmFkZFZhcmlh YmxlKCJzZXAxIiwgInx4fCIpOw0KCXNvLmFkZFZhcmlhYmxlKCJzZXAyIiwgInwi KTsNCg0KLy8Jc28uYWRkVmFyaWFibGUoInZpc2libGVEZXRhaWwiLCB0cnVlKTsN Ci8vCXNvLmFkZFZhcmlhYmxlKCJ2aXNpYmxlRGVzY3JpcHRpb24iLCB0cnVlKTsN Cglzby5hZGRWYXJpYWJsZSgidmlzaWJsZVRodW1ibmFpbHMiLCBmYWxzZSk7DQoN Cglzby5hZGRWYXJpYWJsZSgic2NyVyIsIHNjclcpOw0KCXNvLmFkZFZhcmlhYmxl KCJzY3JIIiwgc2NySCk7DQoJc28uYWRkVmFyaWFibGUoInN0YXJ0SW1hZ2UiLCBz dGFydEltYWdlKTsJCQkJLy8gaWQgdsO9Y2hvesOtaG8gb2Jyw6F6a3UNCg0KCXNv LmFkZFZhcmlhYmxlKCJ0aHVtVyIsIDQwKTsJCQkJCQkvLyDFocOtxZlrYSBuw6Fo bGVkdSBvYnLDoXprdTsNCglzby5hZGRWYXJpYWJsZSgidGh1bUgiLCAzMCk7CQkJ CQkJLy8gdsO9xaFrYSBuw6FobGVkdSBvYnLDoXprdTsNCglzby5hZGRWYXJpYWJs ZSgidGh1bUJXIiwgMSk7CQkJCQkJLy8gdmVsaWtvc3QgcsOhbWXEjWt1IGtvbGVt IG7DoWhsZWR1IG9icsOhemt1Ow0KCXNvLmFkZFZhcmlhYmxlKCJ0aHVtQkMiLCAi ZDlkOWQ5Iik7CQkJCQkvLyBiYXJ2YSByw6FtZcSNa3Uga29sZW0gbsOhaGxlZHUg b2Jyw6F6a3U7DQoJc28uYWRkVmFyaWFibGUoInRodW1EWCIsIDUpOwkJCQkJCS8v IHZ6ZMOhbGVub3N0IG1lemkgbsOhaGxlZHk7DQoNCglzby5hZGRWYXJpYWJsZSgi bmF2UGFkZGluZyIsIDN8NSk7CQkJCQkvLyBvZHNhemVuw60gb2JzYWh1IG5hdmln YWNlIG9kIG9rcmFqZSAtIFh8WTsNCg0KCXNvLmFkZFZhcmlhYmxlKCJyZXBsYWNl SW1hZ2UiLCAidmlkZW98dGh1bWJzL3ZpZGVvLmpwZ3xkZXRhaWwvdmlkZW8uanBn fHh8ZmlsZXx0aHVtYnMvZmlsZS5qcGd8ZGV0YWlsL2ZpbGUuanBnIik7CS8vIG5h aHJhemVuaSBjaHliZWppY2ljaCBvYnJhemt1DQoNCg0KCXNvLmFkZFZhcmlhYmxl KCJ2aXNpdFVybCIsICJodHRwOi8vIiArIEdldFVybEJhc2UoKSArIHZpc2l0VXJs KTsJLy8gImh0dHA6Ly8iICsgR2V0VXJsQmFzZSgpICsgIi9jei9zMjc0MyIpOwkv LyBuZXBvdmlubmUgLSBhZHJlc2EgcHJvIG9kZXNpbGFuaSBuYXZzdGV2eSBkb2t1 bWVudHU7DQoJc28uYWRkVmFyaWFibGUoInZpc2l0VGFyZ2V0IiwgdmlzaXRUYXJn ZXQpOwkJCQkJCQkJCQkvLyBwb3Zpbm5lIC0gaWQgZnJhbXUga2FtIHNlIG1hIHN0 cmFua2Egb3RldmlyYXQ7DQoJc28uYWRkVmFyaWFibGUoInZpc2l0Rmlyc3QiLCBm YWxzZSk7CQkJCQkvLyBuZXBvdmlubmUgcHJlZGRlZmlub3Zhbm8gImZhbHNlIgkJ dHJ1ZS9mYWxzZSAtIG9kZXNsZS9uZW9kZXNsZSBpIG5hdnN0ZXZ1IHBydm5paG8g em9icmF6ZW5laG8gZG9rdW1lbnR1Ow0KDQoJc28uYWRkVmFyaWFibGUoInByZWxv YWRQcm90ZWN0IiwicHJlbG9hZHByb3RlY3Q9IitNYXRoLnJvdW5kKE1hdGgucmFu ZG9tKCkqMTAwMDApKTsJLy8gbmVwb3Zpbm5lIC0gdnlnZW5lcnVqZSBuYWhvZG5l IGNpc2xvLCBrdGVyZSBzZSBwcmlkYSBuYSBrb25lYyBwcmkgdm9sYW5pIGtvbmVr dG9ydTsNCg0KCXNvLmFkZFZhcmlhYmxlKCJmaWxlUGF0aCIsIGZpbGVQYXRoKTsN Cglzby5hZGRWYXJpYWJsZSgieG1sX3NyYyIsIHhtbFNyYyk7DQoJc28ud3JpdGUo ImZsYXNoX2dhbGxlcnkiKTsNCn07DQoNCg0KDQovKiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSB1c2VyIGRldGFpbCBt dWx0aW1lZGlhIGJveCAodGVtcGxhdGU6IGluZGV4X3BwXzAxIHNpZD0yMTMpID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ICovDQoNCmZ1bmN0aW9uIG11bHRpbWVkaWFCb3hVc2VyRGV0YWlsKGZpbGVQYXRo LCB4bWxTcmMpew0KCXZhciBzY3JXID0gNTgwOwkJCQkvLyDFocOtxZlrYSBnYWxl cmllIC0gc2Nob2Ruw6EgcyBkZWZpbmljw60gU1dGT2JqZWN0Ow0KCXZhciBzY3JI ID0gMTUwOwkJCQkvLyB2w73FoWthIGdhbGVyaWUgLSBzY2hvZG7DoSBzIGRlZmlu aWPDrSBTV0ZPYmplY3Q7DQoNCgl2YXIgc28gPSBuZXcgU1dGT2JqZWN0KGZsYXNo U3JjXzA0LCAibXVsdGltZWRpYWxfMmJveCIsc2NyVywgc2NySCwgIjgiLCAiI0ZG RkZGRiIpOw0KCXNvLmFkZFZhcmlhYmxlKCJ3bW9kZSIsICJ0cmFuc3BhcmVudCIp Ow0KDQoJc28uYWRkVmFyaWFibGUoInNjclciLCBzY3JXKTsNCglzby5hZGRWYXJp YWJsZSgic2NySCIsIHNjckgpOw0KCXNvLmFkZFZhcmlhYmxlKCJxdWFsaXR5Iiwi aGlnaCIpOw0KCXNvLmFkZFZhcmlhYmxlKCJiZ2NvbG9yIiwiI2ZmZmZmZiIpOw0K DQoJc28uYWRkVmFyaWFibGUoInNlcDEiLCAifHh8Iik7DQoJc28uYWRkVmFyaWFi bGUoInNlcDIiLCAifCIpOw0KDQoJc28uYWRkVmFyaWFibGUoImJhY2tDb2xvcjEi LCAiNTU1NTU1Iik7DQoJc28uYWRkVmFyaWFibGUoImJhY2tDb2xvcjIiLCAiMjEy MTIxIik7DQoJc28uYWRkVmFyaWFibGUoInRoZW1lQ29sb3IiLCAiMDA3MmJjIik7 DQoJc28uYWRkVmFyaWFibGUoInBpY1RleHQiLCAidGV4dCBwaWN0dXJlIik7DQoJ c28uYWRkVmFyaWFibGUoImZpbGVQYXRoIiwgZmlsZVBhdGgpOw0KDQoJc28uYWRk VmFyaWFibGUoInhtbEZpbGUiLHhtbFNyYyk7DQoJc28ud3JpdGUoIm11bHRpbWVk aWFsXzJib3giKTsNCn0NCg0KDQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PSBob21lcGFnZSBtdWx0aW1lZGlhIGJv eCAodGVtcGxhdGU6IGluZGV4X3N3XzAxIHNpZD0xNjkpID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCmZ1bmN0 aW9uIG11bHRpbWVkaWFCb3hIb21lcGFnZShmaWxlUGF0aCwgeG1sU3JjKXsNCgl2 YXIgc2NyVyA9IDk5OTsJCQkJLy8gxaHDrcWZa2EgZ2FsZXJpZSAtIHNjaG9kbsOh IHMgZGVmaW5pY8OtIFNXRk9iamVjdDsNCgl2YXIgc2NySCA9IDE1MDsJCQkJLy8g dsO9xaFrYSBnYWxlcmllIC0gc2Nob2Ruw6EgcyBkZWZpbmljw60gU1dGT2JqZWN0 Ow0KDQoJdmFyIHNvID0gbmV3IFNXRk9iamVjdChmbGFzaFNyY18wNSwgIm11bHRp bWVkaWFsX2JveCIsc2NyVywgc2NySCwgIjgiLCAiI0ZGRkZGRiIpOw0KCXNvLmFk ZFZhcmlhYmxlKCJ3bW9kZSIsICJ0cmFuc3BhcmVudCIpOw0KDQoJc28uYWRkVmFy aWFibGUoInNjclciLCBzY3JXKTsNCglzby5hZGRWYXJpYWJsZSgic2NySCIsIHNj ckgpOw0KCXNvLmFkZFZhcmlhYmxlKCJxdWFsaXR5IiwiaGlnaCIpOw0KCXNvLmFk ZFZhcmlhYmxlKCJiZ2NvbG9yIiwiI2ZmZmZmZiIpOw0KDQoJc28uYWRkVmFyaWFi bGUoInNlcDEiLCAifHh8Iik7DQoJc28uYWRkVmFyaWFibGUoInNlcDIiLCAifCIp Ow0KDQoJc28uYWRkVmFyaWFibGUoImJhY2tDb2xvcjEiLCAiNTU1NTU1Iik7DQoJ c28uYWRkVmFyaWFibGUoImJhY2tDb2xvcjIiLCAiMjEyMTIxIik7DQoJc28uYWRk VmFyaWFibGUoInRoZW1lQ29sb3IiLCAiMDA3MmJjIik7DQoJc28uYWRkVmFyaWFi bGUoInBpY1RleHQiLCAidGV4dCBwaWN0dXJlIik7DQoJc28uYWRkVmFyaWFibGUo ImZpbGVQYXRoIiwgZmlsZVBhdGgpOw0KDQoJc28uYWRkVmFyaWFibGUoInhtbEZp bGUiLHhtbFNyYyk7DQoJc28ud3JpdGUoIm11bHRpbWVkaWFsX2JveCIpOw0KfTsN Cg0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0gZGV0YWlsIGFydGljbGUgdmlkZW8gZ2FsbGVyeSAodGVtcGxhdGU6 IDAyX211bHRpbWVkaWFfZGV0YWlsIHNpZD0xMDA3KSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0KDQpmdW5jdGlv biBkZXRhaWxBcnRpY2xlVmlkZW9HYWxsZXJ5KGZpbGVQYXRoLCB4bWxTcmMsIHZp c2l0VXJsLCB2aXNpdFRhcmdldCl7DQoJdmFyIGZsYXNoV2lkdGggPSA1NjA7CQkJ CQkvLyDFocOtxZlrYSBnYWxlcmllIC0gc2Nob2Ruw6EgcyBkZWZpbmljw60gU1dG T2JqZWN0Ow0KCXZhciBmbGFzaEhlaWdodCA9IDQyMDsJCQkJCS8vIHbDvcWha2Eg Z2FsZXJpZSAtIHNjaG9kbsOhIHMgZGVmaW5pY8OtIFNXRk9iamVjdDsNCg0KCXZh ciBmbGFzaFdpZHRoID0gNTYwOwkJCQkJLy8gLSBzaXJrYSBmbGFzaCBvYmpla3R1 DQoJdmFyIGZsYXNoSGVpZ2h0ID0gNDIwOwkJCQkJLy8gLSB2eXNrYSBmbGFzaCBv Ympla3R1DQoNCgl2YXIgaHYgPSBuZXcgU1dGT2JqZWN0KGZsYXNoU3JjXzA2LCAi dnBsYXllciIsZmxhc2hXaWR0aCwgZmxhc2hIZWlnaHQsICI4IiwgIiNGRkZGRkYi KTsNCglodi5hZGRWYXJpYWJsZSgiYWxsb3dGdWxsU2NyZWVuIiwgdHJ1ZSk7DQoN Cglodi5hZGRWYXJpYWJsZSgid21vZGUiLCAidHJhbnNwYXJlbnQiKTsNCglodi5h ZGRWYXJpYWJsZSgic2NyVyIsZmxhc2hXaWR0aCk7DQoJaHYuYWRkVmFyaWFibGUo InNjckgiLGZsYXNoSGVpZ2h0KTsNCg0KCWh2LmFkZFZhcmlhYmxlKCJzZXAxIiwg Inx4fCIpOwkJCQkvLyBwb3Zpbm5lIC0gcHJlZGRlZmlub3Zhbm8gfHh8CQlzZXBh cmF0b3IgcHJ2bmkgdXJvdm5lOw0KCWh2LmFkZFZhcmlhYmxlKCJzZXAyIiwgInwi KTsJCQkJLy8gcG92aW5uZSAtIHByZWRkZWZpbm92YW5vIHwJCXNlcGFyYXRvciBk cnVoZSB1cm92bmU7DQoNCglodi5hZGRWYXJpYWJsZSgidGh1bWJzVmlzaWJsZSIs IGZhbHNlKTsJCQkvLyBuZXBvdmlubmUgLSBwcmVkZGVmaW5vdmFubyB0cnVlCXpv YnJhem92YXQgbmFobGVkeTsNCglodi5hZGRWYXJpYWJsZSgibmF2aVZpc2libGUi LCBmYWxzZSk7CQkJLy8gbmVwb3Zpbm5lIC0gcHJlZGRlZmlub3Zhbm8gdHJ1ZQl6 b2JyYXpvdmF0IGRvbG5pIG5hdmlnYWNpOw0KCWh2LmFkZFZhcmlhYmxlKCJuYXZp VmlkZW9WaXNpYmxlIiwgdHJ1ZSk7CQkvLyBuZXBvdmlubmUgLSBwcmVkZGVmaW5v dmFubyB0cnVlCXpvYnJhem92YXQgbmF2aWdhdmkgayBwcmVocmF2YW5pOw0KDQoJ aHYuYWRkVmFyaWFibGUoIm1haW5QYWRkaW5nIiwgIjB8MCIpOwkJCS8vIG5lcG92 aW5uZSAtIHByZWRkZWZpbm92YW5vIHRydWUJb2RzYXplbmkgb2Qgb2tyYWplIHN0 cmFua3k7DQoNCglodi5hZGRWYXJpYWJsZSgiYmlnU2NhbGFibGUiLCB0cnVlKTsJ CQkvLyBuZXBvdmlubmUgLSBwcmVkZGVmaW5vdmFubyB0cnVlCXByaXpwdXNvYm92 YXQgdmVsaWtvc3Q7DQoJaHYuYWRkVmFyaWFibGUoImJpZ1Byb3BvcmNpb25hbCIs IHRydWUpOwkJLy8gbmVwb3Zpbm5lIC0gcHJlZGRlZmlub3Zhbm8gdHJ1ZQl6YWNo b3ZhdmF0IHByb3BvcmNlOw0KDQoJaHYuYWRkVmFyaWFibGUoImJpZ0JXIiwgMSk7 CQkJCS8vIG5lcG92aW5uZSAtIHByZWRkZWZpbm92YW5vIDEJCXRsb3VzdGthIHJh bWVjZWsgb2tvbG8gZGV0YWlsdTsNCg0KCWh2LmFkZFZhcmlhYmxlKCJiaWdXIiwg MzAwKTsJCQkJLy8gbmVwb3Zpbm5lCQkJCXNpcmthIGRldGFpbHU7DQoJaHYuYWRk VmFyaWFibGUoImJpZ0giLCAyMjUpOwkJCQkvLyBuZXBvdmlubmUJCQkJdnlza2Eg ZGV0YWlsdTsNCg0KCWh2LmFkZFZhcmlhYmxlKCJiaWdCQyIsICJkZGRkZGQiKTsJ CQkvLyBuZXBvdmlubmUgLSBwcmVkZGVmaW5vdmFubyBEREREREQJYmFydmEgcmVt ZWNrdSBva29sbyBkZXRhaWx1Ow0KCWh2LmFkZFZhcmlhYmxlKCJiaWdQYWRkaW5n IiwgIjB8MCIpOwkJCS8vIG5lcG92aW5uZSAtIHByZWRkZWZpbm92YW5vIDB8MAlv ZHNhemVuaSBkZXRhbHUgb2Qgb2tyYWplIHN0cmFua3kgLSBwcmljaXRhIHNlIGsg b2RzYXplbmkgc3RyYW5reTsNCg0KLy8JaHYuYWRkVmFyaWFibGUoInRodW1XIiwg MTEyKTsJCQkJLy8gbmVwb3Zpbm5lIC0gcHJlZGRlZmlub3Zhbm8gMTEyCXNpcmth IG5haGxlZHU7DQovLwlodi5hZGRWYXJpYWJsZSgidGh1bUgiLCA4NCk7CQkJCS8v IG5lcG92aW5uZSAtIHByZWRkZWZpbm92YW5vIDg0CXZ5c2thIG5haGxlZHU7DQov Lwlodi5hZGRWYXJpYWJsZSgidGh1bUJXIiwgMSk7CQkJCS8vIG5lcG92aW5uZSAt IHByZWRkZWZpbm92YW5vIDEJCXRsb3VzdGthIHJhbWVja3Ugb2tvbG8gbmFobGVk dTsNCi8vCWh2LmFkZFZhcmlhYmxlKCJ0aHVtQkMiLCAiZDlkOWQ5Iik7CQkJLy8g bmVwb3Zpbm5lIC0gcHJlZGRlZmlub3Zhbm8gRDlEOUQ5CWJhcnZhIHJhbWVja3Ug b2tvbG8gbmFobGVkdTsNCi8vCWh2LmFkZFZhcmlhYmxlKCJ0aHVtTWFyZ2luIiwg IjEwfDUiKTsJCQkvLyBuZXBvdmlubmUgLSBwcmVkZGVmaW5vdmFubyAxMHw1CW9k c2F5ZW5pIG1lemkgbmFobGVkeTsNCi8vCWh2LmFkZFZhcmlhYmxlKCJ0aHVtQ29s dW1ucyIsIDIpOwkJCS8vIG5lcG92aW5uZSAtIHByZWRkZWZpbm92YW5vIDIJCXBv Y2V0IHNsb3VwY3UgbmFobGVkdTsNCg0KCWh2LmFkZFZhcmlhYmxlKCJ2aWRlb0Zy YW1lUmF0ZSIsIDEyKTsJCQkvLyBuZXBvdmlubmUgLSBwcmVkZGVmaW5vdmFubyAx MglmcmFtZXJhdGUgdmlkZWE7DQoNCglodi5hZGRWYXJpYWJsZSgiZmlsZVBhdGgi LCBmaWxlUGF0aCk7CQkJCS8vIG5lcG92aW5uZSAtIHByZWRkZWZpbm92YW5vICIi CWNlc3RhIGsgYWRyZXNhcmkgc291Ym9ydTsNCi8vCWh2LmFkZFZhcmlhYmxlKCJ0 ZXh0QyIsICI5YTlhOWEiKTsJCQkvLyBuZXBvdmlubmUgLSBwcmVkZGVmaW5vdmFu byA5QTlBOUEJYmFydmEgdGV4dHUgdiBuYXZpZ2FjaQ0KDQovLwlodi5hZGRWYXJp YWJsZSgiYWN0QyIsICIwMDZGQzUiKTsJCQkvLyBuZXBvdmlubmUgLSBwcmVkZGVm aW5vdmFubyAwMDZGQzUJYmFydmEgYWt0aXZuaWNoIHBydmt1Ow0KLy8JaHYuYWRk VmFyaWFibGUoImFyckMiLCAiQkZCRkJGIik7CQkJLy8gbmVwb3Zpbm5lIC0gcHJl ZGRlZmlub3Zhbm8gQkZCRkJGCWJhcnZhIHNpcGVrIG5lYWt0aXZuaWNoOw0KDQov Lwlodi5hZGRWYXJpYWJsZSgibmF2UGFkZGluZyIsIDcpOwkJCS8vIG5lcG92aW5u ZSAtIHByZWRkZWZpbm92YW5vIDcJCW9kc2F6ZW5pIHBydmt1IHYgbmF2aWdhY25p bSBwcnVodTsNCg0KLy8JaHYuYWRkVmFyaWFibGUoImFyckJnckMiLCAiRkZGRkZG fEQ0RDRENHwxMDAiKTsJCS8vIG5lcG92aW5uZSAJCQkJYmFydmEgcG96YWRpIHNp cGVrOw0KLy8JaHYuYWRkVmFyaWFibGUoIm5hdkJnckMiLCAiRURFREVEfDgwIik7 CQkJLy8gbmVwb3Zpbm5lIAkJCQlCYXJ2YSBwb3phZGkgbmF2aWdhY25paG8gcHJ1 aHU7DQoNCi8vCWh2LmFkZFZhcmlhYmxlKCJuYXZCb3JkVG9wIiwgIjk5OTk5OXwx fGRvdHMiKTsJCS8vIG5lcG92aW5uZQkJCQliYXJ2YSBhIHN0eWwgaG9ybmlobyBv cmFtb3ZhbmkgbmF2aWdhY2U7DQovLwlodi5hZGRWYXJpYWJsZSgibmF2Qm9yZEJv dCIsICI5OTk5OTl8MXxkb3RzIik7CQkvLyBuZXBvdmlubmUJCQkJYmFydmEgYSBz dHlsIGRvbG5paG8gb3JhbW92YW5pIG5hdmlnYWNlOw0KDQovLwlodi5hZGRWYXJp YWJsZSgiaG92ZXJQcm9wIiwgImZmZmZlMXwxfDAwMDAwMHwwMDAwMDB8MTF8MiIp OwkvLyBuZXBvdmlubmUJCQliYXJ2eSBob3ZlciByYW1lY2t1Ow0KLy8JaHYuYWRk VmFyaWFibGUoImhvdmVyVGV4dFByZXYiLCAicMWZZWRjaG96w60iKTsJCQkvLyBu ZXBvdmlubmUJCQlob3ZlciB0ZXh0IGsgbGV2ZSBzaXBjZTsNCi8vCWh2LmFkZFZh cmlhYmxlKCJob3ZlclRleHROZXh0IiwgIm7DoXNsZWR1asOtY8OtIik7CQkJLy8g bmVwb3Zpbm5lCQkJaG92ZXIgdGV4dCBrIHByYXZlIHNpcGNlOw0KDQoJaHYuYWRk VmFyaWFibGUoInNsaWRlc2hvd05hdmlCYWNrZ3JvdW5kIiwgIkZGRkZGRnx4fDY1 Iik7CS8vIG5lcG92aW5uZSAtIHByZWRkZWZpbm92YW5vCQliYXJ2YSBwb3phZGkg bmF2aWdhY2UgayBwcmVocmF2YW5pOw0KCWh2LmFkZFZhcmlhYmxlKCJzbGlkZXNo b3dOYXZpQm9yZGVyIiwgIkZGMDAwMHwxfDB8MHwwIik7CS8vIG5lcG92aW5uZSAt IHByZWRkZWZpbm92YW5vCQlvcmFtb3ZhbmkgbmF2aWdhY2UgayBwcmVocmF2YW5p Ow0KCWh2LmFkZFZhcmlhYmxlKCJzbGlkZXNob3dOYXZpUGFkZGluZyIsICI1fDUi KTsJCQkvLyBuZXBvdmlubmUgLSBwcmVkZGVmaW5vdmFubwkJb2RzYXphc2VuaSBw cnZrdSB2IG5hdmlnYWNpIGsgcHJlaHJhdmFuaTsNCglodi5hZGRWYXJpYWJsZSgi c2xpZGVzaG93TmF2aUxpbmVIZWlnaHQiLCA4KTsJCQkvLyBuZXBvdmlubmUgLSBw cmVkZGVmaW5vdmFubwkJdnlza2EgcHJ2a3UgbmF2aWthY2UgayBwcmVocmF2YW5p IC0gemF0aW0gbmVmdW5rY25pOw0KCWh2LmFkZFZhcmlhYmxlKCJzbGlkZXNob3dO YXZpQ29sb3JzIiwgIkNDQ0NDQ3xFRUVFRUV8MDA2RkM1Iik7CS8vIG5lcG92aW5u ZSAtIHByZWRkZWZpbm92YW5vCQliYXJ2eSBwcnZrdSBuYXZpZ2FjZTsNCg0KCWh2 LmFkZFZhcmlhYmxlKCJzbGlkZXNob3dNaW5pbWFsVGltZSIsIDE1MDApOwkJCS8v IG5lcG92aW5uZSAtIHByZWRkZWZpbm92YW5vIDE1MDAJbWluaW1hbG5pIGNhcyBw byBrdGVyeSBzZSBidWRlIHNuaW1layB6b2JyYXpvdmF0Ow0KCWh2LmFkZFZhcmlh YmxlKCJzdGFydEFmdGVyQ2xpY2siLCB0cnVlKTsJCQkvLyBuZXBvdmlubmUgLSBw cmVkZGVmaW5vdmFubyB0cnVlCXVyY3VqZSB6ZGEgc2UgbWEgcHJlemVudGFjZSBz cHVzdGl0IGF6IHBvIGtsaWt1IG5lYm8gbmU7DQoNCglodi5hZGRWYXJpYWJsZSgi c2xpZGVzaG93Vm9sdW1lTWF4IiwgMjAwKTsJCQkvLyBuZXBvdmlubmUgLSBwcmVk ZGVmaW5vdmFubyAyMDAJbWF4aW1hbG5pIGhvZG5vdGEgaGxhc2l0b3N0aSB2ICU7 DQoJaHYuYWRkVmFyaWFibGUoInNsaWRlc2hvd1ZvbHVtZU1pbiIsIDApOwkJCS8v IG5lcG92aW5uZSAtIHByZWRkZWZpbm92YW5vIDAJCW1pbmltYWxuaSBob2Rub3Rh IGhsYXNpdG9zdGkgdiAlOw0KCWh2LmFkZFZhcmlhYmxlKCJzbGlkZXNob3dWb2x1 bWVTdGFydCIsIDEwMCk7CQkJLy8gbmVwb3Zpbm5lIC0gcHJlZGRlZmlub3Zhbm8g MTAwCXZ5Y2hvemkgaG9ub3RhIGhsYXNpdG9zdGkgdiAlOw0KDQoJaHYuYWRkVmFy aWFibGUoInZpc2l0VXJsIiwgImh0dHA6Ly8iICsgR2V0VXJsQmFzZSgpICsgdmlz aXRVcmwpOwkvLyAiaHR0cDovLyIgKyBHZXRVcmxCYXNlKCkgKyAiL2N6L3MyNzQz Iik7CS8vIG5lcG92aW5uZSAtIGFkcmVzYSBwcm8gb2Rlc2lsYW5pIG5hdnN0ZXZ5 IGRva3VtZW50dTsNCglodi5hZGRWYXJpYWJsZSgidmlzaXRUYXJnZXQiLCB2aXNp dFRhcmdldCk7CQkJCQkJCQkJCS8vIHBvdmlubmUgLSBpZCBmcmFtdSBrYW0gc2Ug bWEgc3RyYW5rYSBvdGV2aXJhdDsNCglodi5hZGRWYXJpYWJsZSgidmlzaXRGaXJz dCIsIGZhbHNlKTsJCQkJLy8gbmVwb3Zpbm5lIHByZWRkZWZpbm92YW5vICJmYWxz ZSIJCXRydWUvZmFsc2UgLSBvZGVzbGUvbmVvZGVzbGUgaSBuYXZzdGV2dSBwcnZu aWhvIHpvYnJhemVuZWhvIGRva3VtZW50dTsNCg0KCWh2LmFkZFZhcmlhYmxlKCJw cmVsb2FkUHJvdGVjdCIsInByZWxvYWRwcm90ZWN0PSIrTWF0aC5yb3VuZChNYXRo LnJhbmRvbSgpKjEwMDAwKSk7CS8vIG5lcG92aW5uZSAtIHZ5Z2VuZXJ1amUgbmFo b2RuZSBjaXNsbywga3RlcmUgc2UgcHJpZGEgbmEga29uZWMgcHJpIHZvbGFuaSBr b25la3RvcnU7DQoNCglodi5hZGRWYXJpYWJsZSgieG1sX3NyYyIsIHhtbFNyYyk7 CQkJLy8gcG92aW5uZSAJCQkJY2VzdGEgayBYTUwgc291Ym9ydSAtIHR5cHx4fGNl c3RhOw0KDQoJaHYud3JpdGUoInZpZGVvX2dhbGxlcnlfZGV0YWlsIik7DQp9DQoN Cg0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PSBTVEFSVDogU01BTEwgU0xJREUgU0hPVyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0K ZnVuY3Rpb24gc21hbGxTbGlkZVNob3coaHRtbE9iamVjdElkLCBmaWxlUGF0aCwg eG1sU3JjLCBzdGFydEltYWdlKXsNCgl2YXIgc2NyVyA9IDIxODsJCQkJCS8vIMWh w63FmWthIGdhbGVyaWUgLSBzY2hvZG7DoSBzIGRlZmluaWPDrSBTV0ZPYmplY3Q7 DQoJdmFyIHNjckggPSAxNDg7CQkJCQkvLyB2w73FoWthIGdhbGVyaWUgLSBzY2hv ZG7DoSBzIGRlZmluaWPDrSBTV0ZPYmplY3Q7DQoNCgl2YXIgc3MgPSBuZXcgU1dG T2JqZWN0KGZsYXNoU3JjXzA3LCAic21hbGxfc2xpZGVfc2hvdyIsc2NyVywgc2Ny SCwgIjgiLCAiI0ZGRkZGRiIpOw0KCXNzLmFkZFZhcmlhYmxlKCJ3bW9kZSIsICJ0 cmFuc3BhcmVudCIpOw0KCXNzLmFkZFZhcmlhYmxlKCJzZXAiLCAifCIpOw0KCXNz LmFkZFZhcmlhYmxlKCJzY3JXIiwgc2NyVyk7DQoJc3MuYWRkVmFyaWFibGUoInNj ckgiLCBzY3JIKTsNCg0KCXNzLmFkZFZhcmlhYmxlKCJmaWxlUGF0aCIsIGZpbGVQ YXRoKTsNCglzcy5hZGRWYXJpYWJsZSgieG1sX3NyYyIsIHhtbFNyYyk7DQoJc3Mu d3JpdGUoaHRtbE9iamVjdElkKTsNCn07DQoNCi8qID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0g U1RBUlQ6IEdMT0JBTCBWQVJJQUJMRVMgRk9SIFJBVElOR1MgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0gKi8NCg0KdmFyIHJhdGluZ0FsZXJ0T2sgPSAi VmHFoWUgaGxhc292w6Fuw60gc2UgemRhxZlpbG8uIETEm2t1amVtZSI7DQp2YXIg cmF0aW5nQWxlcnRBZ2FpbiA9ICJWYcWhZSBobGFzb3bDoW7DrSBzZSBuZXpkYcWZ aWxvLiBQcm9zw61tIHprdXN0ZSBobGFzb3bDoW7DrSBvcGFrb3ZhdC4gRMSba3Vq ZW1lIjsNCnZhciByYXRpbmdBbGVydEZhaWwgPSAiVsOhxaEgaGxhcyBwcm8gdGVu dG8gxI1sw6FuZWsgYnlsIGppxb4gemF6bmFtZW7DoW4uIjsNCg0KLyogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PSBTVEFSVDogUkFUSU5HIEZPUiBVU0VSUyA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0KZnVuY3Rpb24gZmxh c2hSYXRpbmcyVXNlcihmaWxlUGF0aCwgZmt0aWQsIGZraWQsIHJpZCl7DQoJdmFy IGZsYXNoV2lkdGggPSAyODc7CQkJCQkJLy8gxaHDrcWZa2EgaG9kbm9jZW7DrSAt IHNjaG9kbsOhIHMgZGVmaW5pY8OtIFNXRk9iamVjdDsNCgl2YXIgZmxhc2hIZWln aHQgPSAyNDsJCQkJCQkvLyB2w73FoWthIGhvZG5vY2Vuw60gLSBzY2hvZG7DoSBz IGRlZmluaWPDrSBTV0ZPYmplY3Q7DQoNCgl2YXIgcmEgPSBuZXcgU1dGT2JqZWN0 KGZsYXNoU3JjXzA4LCAicmF0aW5nIixmbGFzaFdpZHRoLCBmbGFzaEhlaWdodCwg IjgiLCAiI0ZGRkZGRiIpOw0KCXJhLmFkZFZhcmlhYmxlKCJ3bW9kZSIsICJ0cmFu c3BhcmVudCIpOw0KCXJhLmFkZFZhcmlhYmxlKCJzZXAxIiwgInx4fCIpOwkJCQkJ Ly8gc2VwYXLDoXJvdCBwcm8gcMWZZXZvZCDFmWV0xJt6Y292w71jaCBwcm9txJtu bsO9Y2ggbmEgcG9sZTsNCglyYS5hZGRWYXJpYWJsZSgic2VwMiIsICJ8Iik7CQkJ CQkvLyBzZXBhcsOhcm90IHBybyBwxZlldm9kIMWZZXTEm3pjb3bDvWNoIHByb23E m25uw71jaCBuYSBwb2xlOw0KCXJhLmFkZFZhcmlhYmxlKCJzY3JXIiwgZmxhc2hX aWR0aCk7DQoJcmEuYWRkVmFyaWFibGUoInNjckgiLCBmbGFzaEhlaWdodCk7DQoN CglyYS5hZGRWYXJpYWJsZSgicGFkZGluZyIsICIxOHw2Iik7CQkJCS8vIG5lcG92 aW5uw6kgdsO9Y2hvesOtIGhvZG5vdGEgNCAtIG9kc2F6ZW7DrSBvZCBva3JhamUg Zmxhc2ggb2JqZWt0dTsNCg0KCXJhLmFkZFZhcmlhYmxlKCJhc3Nlc3NlbWVudE1p biIsIDApOwkJCQkvLyBwb3Zpbm7DqSAtIG1pbmltw6FsbsOtIGhvZG5vdGEgaG9k bm9jZW5pOw0KCXJhLmFkZFZhcmlhYmxlKCJhc3Nlc3NlbWVudE1heCIsIDEwKTsJ CQkJLy8gcG92aW5uw6kgLSBtYXhpbcOhbG7DrSBob2Rub3RhIGhvZG5vY2VuaTsN Cg0KCXJhLmFkZFZhcmlhYmxlKCJhc3Nlc3NlbWVudCIsIDApOwkJCQkvLyBwb3Zp bm7DqSAtIGFrdHXDoWxuw60gaG9kbm90YSBob2Rub2Nlbmk7DQoNCglyYS5hZGRW YXJpYWJsZSgiZGVjaW1hbFBsYWNlcyIsIDApOwkJCQkvLyBuZXBvdmlubsOpIHbD vWNob3rDrSAwIC0gcG/EjWV0IGRlc2V0aW5uecO9Y2ggbcOtc3Q7DQoNCi8vCXJh LmFkZFZhcmlhYmxlKCJiZ3JDIiwgIkZGRkZGRnxDQ0NDQ0N8eHw1MCIpOwkJCS8v IG5lcG92aW5uw6kgLSBiYXJ2YSBwb3phZMOtIChuYXDFmS4gRkZGRkZGfENDQ0ND Q3x4fDUwIC0gdmVydGlrw6FsbsOtIHDFmWVjaG9kIHogYmFydnkgRkZGRkZGIGRv IENDQ0NDQyBzIDUwJSBuZXByxa9obGVkbm9zdMOtKTsNCglyYS5hZGRWYXJpYWJs ZSgiY29sQXNzZXNZZXMiLCAiMDE3MWJjfHh8MTAwIik7CQkJLy8gcG92aW5uw6kg LSBiYXJ2YSh5KSBzbG91cGNlIGhvZG5vY2Vuw60gdiBiYXJldm5vc3RpIHpsZXZh IGRvIHByYXZhIChuYXDFmS4gRkYwMDAwfEZGQ0MwMHwwMERDMDB8eHwxMDAgLSBw xZllY2hvZCB6IGJhcnZ5IEZGMDAwMCBwxZllcyBiYXJ2dSBGRkNDMDAgZG8gYmFy dnkgMDBEQzAwIHMgbmVwcsWvaGxlZG5vc3TDrSAxMDAlKTsNCglyYS5hZGRWYXJp YWJsZSgiY29sQXNzZXNObyIsICI5NDk0OTR8eHwxMDAiKTsJCQkvLyBwb3Zpbm7D qSAtIGJhcnZhKHkpIHNsb3VwY2UgaG9kbm9jZW7DrSB2IGJhcmV2bm9zdGkgemxl dmEgZG8gcHJhdmEgKG5hcMWZLiBGRjAwMDB8RkZDQzAwfDAwREMwMHx4fDEwMCAt IHDFmWVjaG9kIHogYmFydnkgRkYwMDAwIHDFmWVzIGJhcnZ1IEZGQ0MwMCBkbyBi YXJ2eSAwMERDMDAgcyBuZXByxa9obGVkbm9zdMOtIDMwJSk7DQoNCi8vCXJhLmFk ZFZhcmlhYmxlKCJhc3Nlc1NoYXBlIiwgInNoYXBlLnN3ZiIpOwkJCS8vIG5lcG92 aW5uw6kgLSBtb8W+bm8gbmFocsOhdCB2bGFzdG7DrSB0dmFyIHN5bWJvbHUgaG9k bm9jZW7DrTsNCglyYS5hZGRWYXJpYWJsZSgiYXNzZXNOdW1iZXIiLCAxMCk7CQkJ CS8vIHBvdmlubsOpIC0gcG/EjWV0IHN5bWJvbMWvIGhvZG5vY2Vuw607DQoNCi8v CXJhLmFkZFZhcmlhYmxlKCJzZXRBc3NlcyIsIHRydWUpOwkJCQkvLyBuZXBvdmlu bsOpIHbDvWNob3rDrSB0cnVlIC0gcG92b2xlbsOtL3phbWV6ZW7DrSBwcm92w6Fk xJt0IGhvZG5vY2Vuw607DQovLwlyYS5hZGRWYXJpYWJsZSgiYXNzZXNUZXh0Iiwg dHJ1ZSk7CQkJCS8vIG5lcG92aW5uw6kgdsO9Y2hvesOtIHRydWUgLSBwb3ZvbGVu w60vemFtZXplbsOtIHRleHRvdsOpaG8gem9icmF6ZW7DrSBob2Rub3R5IGhvZG5v Y2Vuw607DQoJcmEuYWRkVmFyaWFibGUoImFzc2VzVGV4dFBvc2l0aW9uIiwgImxl ZnQiKTsJCQkvLyBuZXBvdmlubsOpIHbDvWNob3rDrSBsZWZ0IC0gcG96aWNlIHRl eHR1IGhvZG5vY2Vuw607DQoJcmEuYWRkVmFyaWFibGUoImFzc2VzVGV4dEFsaWdu IiwgImxlZnQiKTsJCQkvLyBuZXBvdmlubsOpIHbDvWNob3rDrSByaWdodCAtIHph cm92bsOhbsOtIHRleHR1IGhvZG5vY2Vuw607DQoJcmEuYWRkVmFyaWFibGUoImFz c2VzVGV4dFNoYXBlRGlzdCIsIDE0KTsJCQkvLyBuZXBvdmlubsOpIHbDvWNob3rD rSA1IC0gb2RzYXplbsOtIHRleHR1IGhvZG5vY2Vuw60gb2Qgc3ltYm9sxa8gaG9k bm9jZW7DrTsNCg0KCXJhLmFkZFZhcmlhYmxlKCJhc3Nlc1RleHRTaXplIiwgMTEp OwkJCQkvLyBuZXBvdmluw6kgdsO9Y2hvesOtIDEyIC0gdmVsaWtvc3QgcMOtc21h IHRleHR1IGhvZG5vY2Vuw607DQoJcmEuYWRkVmFyaWFibGUoImFzc2VzVGV4dENv bG9yIiwgIjQwNzFiOCIpOwkJCS8vIG5lcG92aW5uw6kgdsO9Y2hvesOtIGM0YzRj NCAtIGJhcnZhIHRleHR1IGhvZG5vY2Vuw607DQoJcmEuYWRkVmFyaWFibGUoImFz c2VzVGV4dEJlZm9yZSIsIiIpOwkJCQkvLyBuZXBvdmlubsOpIHbDvWNob3rDrSAo IC0gem5hayBwxZllZCB0ZXh0b3ZvdSBob2Rub3RvdSBob2Rub2NlbsOtOw0KCXJh LmFkZFZhcmlhYmxlKCJhc3Nlc1RleHRBZnRlciIsICIiKTsJCQkvLyBuZXBvdmlu bsOpIHbDvWNob3rDrSApIC0gem5hayB6YSB0ZXh0b3ZvdSBob2Rub3RvdSBob2Ru b2NlbsOtOw0KDQoJcmEuYWRkVmFyaWFibGUoInJlcGxhY2VBc1BlcmNlbnRTeW1i b2xUZXh0IiwgImFzc2VzVGV4dEJlZm9yZXxwcm9jfHh8YXNzZXNUZXh0QWZ0ZXJ8 cHJvYyIpOw0KDQoJdmFyIHJhdGluZ0FsZXJ0RmFpbFVzZXIgPSAiVsOhxaEgaGxh cyBwcm8gdG9ob3RvIHXFvml2YXRlbGUgYnlsIGppxb4gemF6bmFtZW7DoW4uIjsN CgkNCglyYS5hZGRWYXJpYWJsZSgicmF0aW5nQWxlcnQxIiwgcmF0aW5nQWxlcnRP ayk7DQoJcmEuYWRkVmFyaWFibGUoInJhdGluZ0FsZXJ0MiIsIHJhdGluZ0FsZXJ0 RmFpbFVzZXIpOw0KCXJhLmFkZFZhcmlhYmxlKCJyYXRpbmdBbGVydDMiLCByYXRp bmdBbGVydEFnYWluKTsNCg0KCXJhLmFkZFZhcmlhYmxlKCJmaWxlUGF0aCIsICJo dHRwOi8vIiArIEdldFVybEJhc2UoKSk7CS8vZmlsZVBhdGg7DQoJcmEuYWRkVmFy aWFibGUoImZrdGlkIiwgZmt0aWQpOw0KCXJhLmFkZFZhcmlhYmxlKCJma2lkIiwg ZmtpZCk7DQoJcmEuYWRkVmFyaWFibGUoInJpZCIsIHJpZCk7DQoNCglyYS53cml0 ZSgicmF0aW5nRmwiKTsNCn07DQoNCi8qID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gU1RBUlQ6 IFJBVElORyBGT1IgT1RIRVIgT0JKRUNUUyA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PSAqLw0KZnVuY3Rpb24gZmxhc2hSYXRpbmco ZmlsZVBhdGgsIGZrdGlkLCBma2lkLCByaWQpew0KCXZhciBmbGFzaFdpZHRoID0g MTAwOwkJCQkJCS8vIMWhw63FmWthIGhvZG5vY2Vuw60gLSBzY2hvZG7DoSBzIGRl ZmluaWPDrSBTV0ZPYmplY3Q7DQoJdmFyIGZsYXNoSGVpZ2h0ID0gMTg7CQkJCQkJ Ly8gdsO9xaFrYSBob2Rub2NlbsOtIC0gc2Nob2Ruw6EgcyBkZWZpbmljw60gU1dG T2JqZWN0Ow0KDQoJdmFyIHJhID0gbmV3IFNXRk9iamVjdChmbGFzaFNyY18wOCwg InJhdGluZyIsZmxhc2hXaWR0aCwgZmxhc2hIZWlnaHQsICI4IiwgIiNGRkZGRkYi KTsNCglyYS5hZGRWYXJpYWJsZSgid21vZGUiLCAidHJhbnNwYXJlbnQiKTsNCgly YS5hZGRWYXJpYWJsZSgic2VwMSIsICJ8eHwiKTsJCQkJCS8vIHNlcGFyw6Fyb3Qg cHJvIHDFmWV2b2QgxZlldMSbemNvdsO9Y2ggcHJvbcSbbm7DvWNoIG5hIHBvbGU7 DQoJcmEuYWRkVmFyaWFibGUoInNlcDIiLCAifCIpOwkJCQkJLy8gc2VwYXLDoXJv dCBwcm8gcMWZZXZvZCDFmWV0xJt6Y292w71jaCBwcm9txJtubsO9Y2ggbmEgcG9s ZTsNCglyYS5hZGRWYXJpYWJsZSgic2NyVyIsIGZsYXNoV2lkdGgpOw0KCXJhLmFk ZFZhcmlhYmxlKCJzY3JIIiwgZmxhc2hIZWlnaHQpOw0KDQoJcmEuYWRkVmFyaWFi bGUoInBhZGRpbmciLCAiNHwzIik7CQkJCS8vIG5lcG92aW5uw6kgdsO9Y2hvesOt IGhvZG5vdGEgNCAtIG9kc2F6ZW7DrSBvZCBva3JhamUgZmxhc2ggb2JqZWt0dTsN Cg0KCXJhLmFkZFZhcmlhYmxlKCJhc3Nlc3NlbWVudE1pbiIsIDApOwkJCQkvLyBw b3Zpbm7DqSAtIG1pbmltw6FsbsOtIGhvZG5vdGEgaG9kbm9jZW5pOw0KCXJhLmFk ZFZhcmlhYmxlKCJhc3Nlc3NlbWVudE1heCIsIDUpOwkJCQkvLyBwb3Zpbm7DqSAt IG1heGltw6FsbsOtIGhvZG5vdGEgaG9kbm9jZW5pOw0KDQoJcmEuYWRkVmFyaWFi bGUoImFzc2Vzc2VtZW50IiwgMCk7CQkJCS8vIHBvdmlubsOpIC0gYWt0dcOhbG7D rSBob2Rub3RhIGhvZG5vY2VuaTsNCg0KCXJhLmFkZFZhcmlhYmxlKCJkZWNpbWFs UGxhY2VzIiwgMCk7CQkJCS8vIG5lcG92aW5uw6kgdsO9Y2hvesOtIDAgLSBwb8SN ZXQgZGVzZXRpbm55w71jaCBtw61zdDsNCg0KLy8JcmEuYWRkVmFyaWFibGUoImJn ckMiLCAiRkYwMDAwfHh8NTAiKTsJCQkvLyBuZXBvdmlubsOpIC0gYmFydmEgcG96 YWTDrSAobmFwxZkuIEZGRkZGRnxDQ0NDQ0N8eHw1MCAtIHZlcnRpa8OhbG7DrSBw xZllY2hvZCB6IGJhcnZ5IEZGRkZGRiBkbyBDQ0NDQ0MgcyA1MCUgbmVwcsWvaGxl ZG5vc3TDrSk7DQoJcmEuYWRkVmFyaWFibGUoImNvbEFzc2VzWWVzIiwgIjAxNzFi Y3x4fDEwMCIpOwkJCS8vIHBvdmlubsOpIC0gYmFydmEoeSkgc2xvdXBjZSBob2Ru b2NlbsOtIHYgYmFyZXZub3N0aSB6bGV2YSBkbyBwcmF2YSAobmFwxZkuIEZGMDAw MHxGRkNDMDB8MDBEQzAwfHh8MTAwIC0gcMWZZWNob2QgeiBiYXJ2eSBGRjAwMDAg cMWZZXMgYmFydnUgRkZDQzAwIGRvIGJhcnZ5IDAwREMwMCBzIG5lcHLFr2hsZWRu b3N0w60gMTAwJSk7DQoJcmEuYWRkVmFyaWFibGUoImNvbEFzc2VzTm8iLCAiOTQ5 NDk0fHh8MTAwIik7CQkJLy8gcG92aW5uw6kgLSBiYXJ2YSh5KSBzbG91cGNlIGhv ZG5vY2Vuw60gdiBiYXJldm5vc3RpIHpsZXZhIGRvIHByYXZhIChuYXDFmS4gRkYw MDAwfEZGQ0MwMHwwMERDMDB8eHwxMDAgLSBwxZllY2hvZCB6IGJhcnZ5IEZGMDAw MCBwxZllcyBiYXJ2dSBGRkNDMDAgZG8gYmFydnkgMDBEQzAwIHMgbmVwcsWvaGxl ZG5vc3TDrSAzMCUpOw0KDQovLwlyYS5hZGRWYXJpYWJsZSgiYXNzZXNTaGFwZSIs ICJzaGFwZS5zd2YiKTsJCQkvLyBuZXBvdmlubsOpIC0gbW/Fvm5vIG5haHLDoXQg dmxhc3Ruw60gdHZhciBzeW1ib2x1IGhvZG5vY2Vuw607DQoJcmEuYWRkVmFyaWFi bGUoImFzc2VzTnVtYmVyIiwgNSk7CQkJCS8vIHBvdmlubsOpIC0gcG/EjWV0IHN5 bWJvbMWvIGhvZG5vY2Vuw607DQoNCi8vCXJhLmFkZFZhcmlhYmxlKCJzZXRBc3Nl cyIsIHRydWUpOwkJCQkvLyBuZXBvdmlubsOpIHbDvWNob3rDrSB0cnVlIC0gcG92 b2xlbsOtL3phbWV6ZW7DrSBwcm92w6FkxJt0IGhvZG5vY2Vuw607DQovLwlyYS5h ZGRWYXJpYWJsZSgiYXNzZXNUZXh0IiwgdHJ1ZSk7CQkJCS8vIG5lcG92aW5uw6kg dsO9Y2hvesOtIHRydWUgLSBwb3ZvbGVuw60vemFtZXplbsOtIHRleHRvdsOpaG8g em9icmF6ZW7DrSBob2Rub3R5IGhvZG5vY2Vuw607DQoJcmEuYWRkVmFyaWFibGUo ImFzc2VzVGV4dFBvc2l0aW9uIiwgImxlZnQiKTsJCQkvLyBuZXBvdmlubsOpIHbD vWNob3rDrSBsZWZ0IC0gcG96aWNlIHRleHR1IGhvZG5vY2Vuw607DQoJcmEuYWRk VmFyaWFibGUoImFzc2VzVGV4dEFsaWduIiwgImxlZnQiKTsJCQkvLyBuZXBvdmlu bsOpIHbDvWNob3rDrSByaWdodCAtIHphcm92bsOhbsOtIHRleHR1IGhvZG5vY2Vu w607DQovLwlyYS5hZGRWYXJpYWJsZSgiYXNzZXNUZXh0U2hhcGVEaXN0IiwgMTQp OwkJCS8vIG5lcG92aW5uw6kgdsO9Y2hvesOtIDUgLSBvZHNhemVuw60gdGV4dHUg aG9kbm9jZW7DrSBvZCBzeW1ib2zFryBob2Rub2NlbsOtOw0KDQoJcmEuYWRkVmFy aWFibGUoImFzc2VzVGV4dFNpemUiLCAxMSk7CQkJCS8vIG5lcG92aW7DqSB2w71j aG96w60gMTIgLSB2ZWxpa29zdCBww61zbWEgdGV4dHUgaG9kbm9jZW7DrTsNCgly YS5hZGRWYXJpYWJsZSgiYXNzZXNUZXh0Q29sb3IiLCAiNDA3MWI4Iik7CQkJLy8g bmVwb3Zpbm7DqSB2w71jaG96w60gYzRjNGM0IC0gYmFydmEgdGV4dHUgaG9kbm9j ZW7DrTsNCglyYS5hZGRWYXJpYWJsZSgiYXNzZXNUZXh0QmVmb3JlIiwiIik7CQkJ CS8vIG5lcG92aW5uw6kgdsO9Y2hvesOtICggLSB6bmFrIHDFmWVkIHRleHRvdm91 IGhvZG5vdG91IGhvZG5vY2Vuw607DQoJcmEuYWRkVmFyaWFibGUoImFzc2VzVGV4 dEFmdGVyIiwgIiIpOwkJCS8vIG5lcG92aW5uw6kgdsO9Y2hvesOtICkgLSB6bmFr IHphIHRleHRvdm91IGhvZG5vdG91IGhvZG5vY2Vuw607DQoNCglyYS5hZGRWYXJp YWJsZSgicmVwbGFjZUFzUGVyY2VudFN5bWJvbFRleHQiLCAiYXNzZXNUZXh0QmVm b3JlfHByb2N8eHxhc3Nlc1RleHRBZnRlcnxwcm9jIik7DQoNCglyYS5hZGRWYXJp YWJsZSgicmF0aW5nQWxlcnQxIiwgcmF0aW5nQWxlcnRPayk7DQoJcmEuYWRkVmFy aWFibGUoInJhdGluZ0FsZXJ0MiIsIHJhdGluZ0FsZXJ0RmFpbCk7DQoJcmEuYWRk VmFyaWFibGUoInJhdGluZ0FsZXJ0MyIsIHJhdGluZ0FsZXJ0QWdhaW4pOw0KDQoJ cmEuYWRkVmFyaWFibGUoImZpbGVQYXRoIiwgImh0dHA6Ly8iICsgR2V0VXJsQmFz ZSgpKTsJLy9maWxlUGF0aDsNCglyYS5hZGRWYXJpYWJsZSgiZmt0aWQiLCBma3Rp ZCk7DQoJcmEuYWRkVmFyaWFibGUoImZraWQiLCBma2lkKTsNCglyYS5hZGRWYXJp YWJsZSgicmlkIiwgcmlkKTsNCg0KCXJhLndyaXRlKCJyYXRpbmdGbCIpOw0KfTsN Cg0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PSBTVEFSVDogUkFUSU5HIEZPUiBHQU1FUyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0K ZnVuY3Rpb24gZmxhc2hSYXRpbmcyR2FtZXMoZmlsZVBhdGgsIGZrdGlkLCBma2lk LCByaWQpew0KCXZhciBmbGFzaFdpZHRoID0gODA7CQkJCQkJLy8gxaHDrcWZa2Eg aG9kbm9jZW7DrSAtIHNjaG9kbsOhIHMgZGVmaW5pY8OtIFNXRk9iamVjdDsNCgl2 YXIgZmxhc2hIZWlnaHQgPSAxODsJCQkJCQkvLyB2w73FoWthIGhvZG5vY2Vuw60g LSBzY2hvZG7DoSBzIGRlZmluaWPDrSBTV0ZPYmplY3Q7DQoNCgl2YXIgcmEgPSBu ZXcgU1dGT2JqZWN0KGZsYXNoU3JjXzA4LCAicmF0aW5nIixmbGFzaFdpZHRoLCBm bGFzaEhlaWdodCwgIjgiLCAiI0ZGRkZGRiIpOw0KCXJhLmFkZFZhcmlhYmxlKCJ3 bW9kZSIsICJ0cmFuc3BhcmVudCIpOw0KCXJhLmFkZFZhcmlhYmxlKCJzZXAxIiwg Inx4fCIpOwkJCQkJLy8gc2VwYXLDoXJvdCBwcm8gcMWZZXZvZCDFmWV0xJt6Y292 w71jaCBwcm9txJtubsO9Y2ggbmEgcG9sZTsNCglyYS5hZGRWYXJpYWJsZSgic2Vw MiIsICJ8Iik7CQkJCQkvLyBzZXBhcsOhcm90IHBybyBwxZlldm9kIMWZZXTEm3pj b3bDvWNoIHByb23Em25uw71jaCBuYSBwb2xlOw0KCXJhLmFkZFZhcmlhYmxlKCJz Y3JXIiwgZmxhc2hXaWR0aCk7DQoJcmEuYWRkVmFyaWFibGUoInNjckgiLCBmbGFz aEhlaWdodCk7DQoNCglyYS5hZGRWYXJpYWJsZSgicGFkZGluZyIsICI0fDQiKTsJ CQkJLy8gbmVwb3Zpbm7DqSB2w71jaG96w60gaG9kbm90YSA0IC0gb2RzYXplbsOt IG9kIG9rcmFqZSBmbGFzaCBvYmpla3R1Ow0KDQoJcmEuYWRkVmFyaWFibGUoImFz c2Vzc2VtZW50TWluIiwgMCk7CQkJCS8vIHBvdmlubsOpIC0gbWluaW3DoWxuw60g aG9kbm90YSBob2Rub2Nlbmk7DQoJcmEuYWRkVmFyaWFibGUoImFzc2Vzc2VtZW50 TWF4IiwgNSk7CQkJCS8vIHBvdmlubsOpIC0gbWF4aW3DoWxuw60gaG9kbm90YSBo b2Rub2Nlbmk7DQoNCglyYS5hZGRWYXJpYWJsZSgiYXNzZXNzZW1lbnQiLCAwKTsJ CQkJLy8gcG92aW5uw6kgLSBha3R1w6FsbsOtIGhvZG5vdGEgaG9kbm9jZW5pOw0K DQoJcmEuYWRkVmFyaWFibGUoImRlY2ltYWxQbGFjZXMiLCAwKTsJCQkJLy8gbmVw b3Zpbm7DqSB2w71jaG96w60gMCAtIHBvxI1ldCBkZXNldGlubnnDvWNoIG3DrXN0 Ow0KDQovLwlyYS5hZGRWYXJpYWJsZSgiYmdyQyIsICJGRjAwMDB8eHw1MCIpOwkJ CS8vIG5lcG92aW5uw6kgLSBiYXJ2YSBwb3phZMOtIChuYXDFmS4gRkZGRkZGfEND Q0NDQ3x4fDUwIC0gdmVydGlrw6FsbsOtIHDFmWVjaG9kIHogYmFydnkgRkZGRkZG IGRvIENDQ0NDQyBzIDUwJSBuZXByxa9obGVkbm9zdMOtKTsNCglyYS5hZGRWYXJp YWJsZSgiY29sQXNzZXNZZXMiLCAiMDE3MWJjfHh8MTAwIik7CQkJLy8gcG92aW5u w6kgLSBiYXJ2YSh5KSBzbG91cGNlIGhvZG5vY2Vuw60gdiBiYXJldm5vc3RpIHps ZXZhIGRvIHByYXZhIChuYXDFmS4gRkYwMDAwfEZGQ0MwMHwwMERDMDB8eHwxMDAg LSBwxZllY2hvZCB6IGJhcnZ5IEZGMDAwMCBwxZllcyBiYXJ2dSBGRkNDMDAgZG8g YmFydnkgMDBEQzAwIHMgbmVwcsWvaGxlZG5vc3TDrSAxMDAlKTsNCglyYS5hZGRW YXJpYWJsZSgiY29sQXNzZXNObyIsICI5NDk0OTR8eHwxMDAiKTsJCQkvLyBwb3Zp bm7DqSAtIGJhcnZhKHkpIHNsb3VwY2UgaG9kbm9jZW7DrSB2IGJhcmV2bm9zdGkg emxldmEgZG8gcHJhdmEgKG5hcMWZLiBGRjAwMDB8RkZDQzAwfDAwREMwMHx4fDEw MCAtIHDFmWVjaG9kIHogYmFydnkgRkYwMDAwIHDFmWVzIGJhcnZ1IEZGQ0MwMCBk byBiYXJ2eSAwMERDMDAgcyBuZXByxa9obGVkbm9zdMOtIDMwJSk7DQoNCi8vCXJh LmFkZFZhcmlhYmxlKCJhc3Nlc1NoYXBlIiwgInNoYXBlLnN3ZiIpOwkJCS8vIG5l cG92aW5uw6kgLSBtb8W+bm8gbmFocsOhdCB2bGFzdG7DrSB0dmFyIHN5bWJvbHUg aG9kbm9jZW7DrTsNCglyYS5hZGRWYXJpYWJsZSgiYXNzZXNOdW1iZXIiLCA1KTsJ CQkJLy8gcG92aW5uw6kgLSBwb8SNZXQgc3ltYm9sxa8gaG9kbm9jZW7DrTsNCg0K Ly8JcmEuYWRkVmFyaWFibGUoInNldEFzc2VzIiwgdHJ1ZSk7CQkJCS8vIG5lcG92 aW5uw6kgdsO9Y2hvesOtIHRydWUgLSBwb3ZvbGVuw60vemFtZXplbsOtIHByb3bD oWTEm3QgaG9kbm9jZW7DrTsNCi8vCXJhLmFkZFZhcmlhYmxlKCJhc3Nlc1RleHQi LCB0cnVlKTsJCQkJLy8gbmVwb3Zpbm7DqSB2w71jaG96w60gdHJ1ZSAtIHBvdm9s ZW7DrS96YW1lemVuw60gdGV4dG92w6lobyB6b2JyYXplbsOtIGhvZG5vdHkgaG9k bm9jZW7DrTsNCglyYS5hZGRWYXJpYWJsZSgiYXNzZXNUZXh0UG9zaXRpb24iLCAi bGVmdCIpOwkJCS8vIG5lcG92aW5uw6kgdsO9Y2hvesOtIGxlZnQgLSBwb3ppY2Ug dGV4dHUgaG9kbm9jZW7DrTsNCglyYS5hZGRWYXJpYWJsZSgiYXNzZXNUZXh0QWxp Z24iLCAibGVmdCIpOwkJCS8vIG5lcG92aW5uw6kgdsO9Y2hvesOtIHJpZ2h0IC0g emFyb3Zuw6Fuw60gdGV4dHUgaG9kbm9jZW7DrTsNCglyYS5hZGRWYXJpYWJsZSgi YXNzZXNUZXh0U2hhcGVEaXN0IiwgMCk7CQkJLy8gbmVwb3Zpbm7DqSB2w71jaG96 w60gNSAtIG9kc2F6ZW7DrSB0ZXh0dSBob2Rub2NlbsOtIG9kIHN5bWJvbMWvIGhv ZG5vY2Vuw607DQoNCglyYS5hZGRWYXJpYWJsZSgiYXNzZXNUZXh0U2l6ZSIsIDEx KTsJCQkJLy8gbmVwb3ZpbsOpIHbDvWNob3rDrSAxMiAtIHZlbGlrb3N0IHDDrXNt YSB0ZXh0dSBob2Rub2NlbsOtOw0KCXJhLmFkZFZhcmlhYmxlKCJhc3Nlc1RleHRD b2xvciIsICI0MDcxYjgiKTsJCQkvLyBuZXBvdmlubsOpIHbDvWNob3rDrSBjNGM0 YzQgLSBiYXJ2YSB0ZXh0dSBob2Rub2NlbsOtOw0KCXJhLmFkZFZhcmlhYmxlKCJh c3Nlc1RleHRCZWZvcmUiLCIiKTsJCQkJLy8gbmVwb3Zpbm7DqSB2w71jaG96w60g KCAtIHpuYWsgcMWZZWQgdGV4dG92b3UgaG9kbm90b3UgaG9kbm9jZW7DrTsNCgly YS5hZGRWYXJpYWJsZSgiYXNzZXNUZXh0QWZ0ZXIiLCAiIik7CQkJLy8gbmVwb3Zp bm7DqSB2w71jaG96w60gKSAtIHpuYWsgemEgdGV4dG92b3UgaG9kbm90b3UgaG9k bm9jZW7DrTsNCg0KCXJhLmFkZFZhcmlhYmxlKCJyZXBsYWNlQXNQZXJjZW50U3lt Ym9sVGV4dCIsICJhc3Nlc1RleHRCZWZvcmV8cHJvY3x4fGFzc2VzVGV4dEFmdGVy fHByb2MiKTsNCgkNCgl2YXIgcmF0aW5nQWxlcnRGYWlsR2FtZSA9ICJWw6HFoSBo bGFzIHBybyB0dXRvIGhydSBieWwgamnFviB6YXpuYW1lbsOhbi4iOw0KDQoJcmEu YWRkVmFyaWFibGUoInJhdGluZ0FsZXJ0MSIsIHJhdGluZ0FsZXJ0T2spOw0KCXJh LmFkZFZhcmlhYmxlKCJyYXRpbmdBbGVydDIiLCByYXRpbmdBbGVydEZhaWxHYW1l KTsNCglyYS5hZGRWYXJpYWJsZSgicmF0aW5nQWxlcnQzIiwgcmF0aW5nQWxlcnRB Z2Fpbik7DQoNCglyYS5hZGRWYXJpYWJsZSgiZmlsZVBhdGgiLCAiaHR0cDovLyIg KyBHZXRVcmxCYXNlKCkpOwkvL2ZpbGVQYXRoOw0KCXJhLmFkZFZhcmlhYmxlKCJm a3RpZCIsIGZrdGlkKTsNCglyYS5hZGRWYXJpYWJsZSgiZmtpZCIsIGZraWQpOw0K CXJhLmFkZFZhcmlhYmxlKCJyaWQiLCByaWQpOw0KDQoJcmEud3JpdGUoInJhdGlu Z0ZsIik7DQp9Ow0KDQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IFNUQVJUOiBSQVRJTkcg Rk9SIEdBTUVTIExJU1RTID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ICovDQpmdW5jdGlvbiBmbGFzaFJhdGluZzJHYW1lc0xpc3Qo ZmlsZVBhdGgsIGZrdGlkLCBma2lkLCByaWQsIHNvdXJjZSl7DQoJdmFyIGZsYXNo V2lkdGggPSA4MDsJCQkJCQkvLyDFocOtxZlrYSBob2Rub2NlbsOtIC0gc2Nob2Ru w6EgcyBkZWZpbmljw60gU1dGT2JqZWN0Ow0KCXZhciBmbGFzaEhlaWdodCA9IDE4 OwkJCQkJCS8vIHbDvcWha2EgaG9kbm9jZW7DrSAtIHNjaG9kbsOhIHMgZGVmaW5p Y8OtIFNXRk9iamVjdDsNCg0KCXZhciByYSA9IG5ldyBTV0ZPYmplY3QoZmxhc2hT cmNfMDgsICJyYXRpbmciLGZsYXNoV2lkdGgsIGZsYXNoSGVpZ2h0LCAiOCIsICIj RkZGRkZGIik7DQoJcmEuYWRkVmFyaWFibGUoIndtb2RlIiwgInRyYW5zcGFyZW50 Iik7DQoJcmEuYWRkVmFyaWFibGUoInNlcDEiLCAifHh8Iik7CQkJCQkvLyBzZXBh csOhcm90IHBybyBwxZlldm9kIMWZZXTEm3pjb3bDvWNoIHByb23Em25uw71jaCBu YSBwb2xlOw0KCXJhLmFkZFZhcmlhYmxlKCJzZXAyIiwgInwiKTsJCQkJCS8vIHNl cGFyw6Fyb3QgcHJvIHDFmWV2b2QgxZlldMSbemNvdsO9Y2ggcHJvbcSbbm7DvWNo IG5hIHBvbGU7DQoJcmEuYWRkVmFyaWFibGUoInNjclciLCBmbGFzaFdpZHRoKTsN CglyYS5hZGRWYXJpYWJsZSgic2NySCIsIGZsYXNoSGVpZ2h0KTsNCg0KCXJhLmFk ZFZhcmlhYmxlKCJwYWRkaW5nIiwgIjR8NCIpOwkJCQkvLyBuZXBvdmlubsOpIHbD vWNob3rDrSBob2Rub3RhIDQgLSBvZHNhemVuw60gb2Qgb2tyYWplIGZsYXNoIG9i amVrdHU7DQoNCglyYS5hZGRWYXJpYWJsZSgiYXNzZXNzZW1lbnRNaW4iLCAwKTsJ CQkJLy8gcG92aW5uw6kgLSBtaW5pbcOhbG7DrSBob2Rub3RhIGhvZG5vY2VuaTsN CglyYS5hZGRWYXJpYWJsZSgiYXNzZXNzZW1lbnRNYXgiLCA1KTsJCQkJLy8gcG92 aW5uw6kgLSBtYXhpbcOhbG7DrSBob2Rub3RhIGhvZG5vY2VuaTsNCg0KCXJhLmFk ZFZhcmlhYmxlKCJhc3Nlc3NlbWVudCIsIDApOwkJCQkvLyBwb3Zpbm7DqSAtIGFr dHXDoWxuw60gaG9kbm90YSBob2Rub2Nlbmk7DQoNCglyYS5hZGRWYXJpYWJsZSgi ZGVjaW1hbFBsYWNlcyIsIDApOwkJCQkvLyBuZXBvdmlubsOpIHbDvWNob3rDrSAw IC0gcG/EjWV0IGRlc2V0aW5uecO9Y2ggbcOtc3Q7DQoNCi8vCXJhLmFkZFZhcmlh YmxlKCJiZ3JDIiwgIkZGMDAwMHx4fDUwIik7CQkJLy8gbmVwb3Zpbm7DqSAtIGJh cnZhIHBvemFkw60gKG5hcMWZLiBGRkZGRkZ8Q0NDQ0NDfHh8NTAgLSB2ZXJ0aWvD oWxuw60gcMWZZWNob2QgeiBiYXJ2eSBGRkZGRkYgZG8gQ0NDQ0NDIHMgNTAlIG5l cHLFr2hsZWRub3N0w60pOw0KCXJhLmFkZFZhcmlhYmxlKCJjb2xBc3Nlc1llcyIs ICIwMTcxYmN8eHwxMDAiKTsJCQkvLyBwb3Zpbm7DqSAtIGJhcnZhKHkpIHNsb3Vw Y2UgaG9kbm9jZW7DrSB2IGJhcmV2bm9zdGkgemxldmEgZG8gcHJhdmEgKG5hcMWZ LiBGRjAwMDB8RkZDQzAwfDAwREMwMHx4fDEwMCAtIHDFmWVjaG9kIHogYmFydnkg RkYwMDAwIHDFmWVzIGJhcnZ1IEZGQ0MwMCBkbyBiYXJ2eSAwMERDMDAgcyBuZXBy xa9obGVkbm9zdMOtIDEwMCUpOw0KCXJhLmFkZFZhcmlhYmxlKCJjb2xBc3Nlc05v IiwgIjk0OTQ5NHx4fDEwMCIpOwkJCS8vIHBvdmlubsOpIC0gYmFydmEoeSkgc2xv dXBjZSBob2Rub2NlbsOtIHYgYmFyZXZub3N0aSB6bGV2YSBkbyBwcmF2YSAobmFw xZkuIEZGMDAwMHxGRkNDMDB8MDBEQzAwfHh8MTAwIC0gcMWZZWNob2QgeiBiYXJ2 eSBGRjAwMDAgcMWZZXMgYmFydnUgRkZDQzAwIGRvIGJhcnZ5IDAwREMwMCBzIG5l cHLFr2hsZWRub3N0w60gMzAlKTsNCg0KLy8JcmEuYWRkVmFyaWFibGUoImFzc2Vz U2hhcGUiLCAic2hhcGUuc3dmIik7CQkJLy8gbmVwb3Zpbm7DqSAtIG1vxb5ubyBu YWhyw6F0IHZsYXN0bsOtIHR2YXIgc3ltYm9sdSBob2Rub2NlbsOtOw0KCXJhLmFk ZFZhcmlhYmxlKCJhc3Nlc051bWJlciIsIDUpOwkJCQkvLyBwb3Zpbm7DqSAtIHBv xI1ldCBzeW1ib2zFryBob2Rub2NlbsOtOw0KDQovLwlyYS5hZGRWYXJpYWJsZSgi c2V0QXNzZXMiLCB0cnVlKTsJCQkJLy8gbmVwb3Zpbm7DqSB2w71jaG96w60gdHJ1 ZSAtIHBvdm9sZW7DrS96YW1lemVuw60gcHJvdsOhZMSbdCBob2Rub2NlbsOtOw0K Ly8JcmEuYWRkVmFyaWFibGUoImFzc2VzVGV4dCIsIHRydWUpOwkJCQkvLyBuZXBv dmlubsOpIHbDvWNob3rDrSB0cnVlIC0gcG92b2xlbsOtL3phbWV6ZW7DrSB0ZXh0 b3bDqWhvIHpvYnJhemVuw60gaG9kbm90eSBob2Rub2NlbsOtOw0KCXJhLmFkZFZh cmlhYmxlKCJhc3Nlc1RleHRQb3NpdGlvbiIsICJsZWZ0Iik7CQkJLy8gbmVwb3Zp bm7DqSB2w71jaG96w60gbGVmdCAtIHBvemljZSB0ZXh0dSBob2Rub2NlbsOtOw0K CXJhLmFkZFZhcmlhYmxlKCJhc3Nlc1RleHRBbGlnbiIsICJsZWZ0Iik7CQkJLy8g bmVwb3Zpbm7DqSB2w71jaG96w60gcmlnaHQgLSB6YXJvdm7DoW7DrSB0ZXh0dSBo b2Rub2NlbsOtOw0KCXJhLmFkZFZhcmlhYmxlKCJhc3Nlc1RleHRTaGFwZURpc3Qi LCAwKTsJCQkvLyBuZXBvdmlubsOpIHbDvWNob3rDrSA1IC0gb2RzYXplbsOtIHRl eHR1IGhvZG5vY2Vuw60gb2Qgc3ltYm9sxa8gaG9kbm9jZW7DrTsNCg0KCXJhLmFk ZFZhcmlhYmxlKCJhc3Nlc1RleHRTaXplIiwgMTEpOwkJCQkvLyBuZXBvdmluw6kg dsO9Y2hvesOtIDEyIC0gdmVsaWtvc3QgcMOtc21hIHRleHR1IGhvZG5vY2Vuw607 DQoJcmEuYWRkVmFyaWFibGUoImFzc2VzVGV4dENvbG9yIiwgIjQwNzFiOCIpOwkJ CS8vIG5lcG92aW5uw6kgdsO9Y2hvesOtIGM0YzRjNCAtIGJhcnZhIHRleHR1IGhv ZG5vY2Vuw607DQoJcmEuYWRkVmFyaWFibGUoImFzc2VzVGV4dEJlZm9yZSIsIiIp OwkJCQkvLyBuZXBvdmlubsOpIHbDvWNob3rDrSAoIC0gem5hayBwxZllZCB0ZXh0 b3ZvdSBob2Rub3RvdSBob2Rub2NlbsOtOw0KCXJhLmFkZFZhcmlhYmxlKCJhc3Nl c1RleHRBZnRlciIsICIiKTsJCQkvLyBuZXBvdmlubsOpIHbDvWNob3rDrSApIC0g em5hayB6YSB0ZXh0b3ZvdSBob2Rub3RvdSBob2Rub2NlbsOtOw0KDQoJcmEuYWRk VmFyaWFibGUoInJlcGxhY2VBc1BlcmNlbnRTeW1ib2xUZXh0IiwgImFzc2VzVGV4 dEJlZm9yZXxwcm9jfHh8YXNzZXNUZXh0QWZ0ZXJ8cHJvYyIpOw0KDQoJdmFyIHJh dGluZ0FsZXJ0RmFpbEdhbWUgPSAiVsOhxaEgaGxhcyBwcm8gdHV0byBocnUgYnls IGppxb4gemF6bmFtZW7DoW4uIjsNCgkNCglyYS5hZGRWYXJpYWJsZSgicmF0aW5n QWxlcnQxIiwgcmF0aW5nQWxlcnRPayk7DQoJcmEuYWRkVmFyaWFibGUoInJhdGlu Z0FsZXJ0MiIsIHJhdGluZ0FsZXJ0RmFpbEdhbWUpOw0KCXJhLmFkZFZhcmlhYmxl KCJyYXRpbmdBbGVydDMiLCByYXRpbmdBbGVydEFnYWluKTsNCg0KCXJhLmFkZFZh cmlhYmxlKCJmaWxlUGF0aCIsICJodHRwOi8vIiArIEdldFVybEJhc2UoKSk7CS8v ZmlsZVBhdGg7DQoJcmEuYWRkVmFyaWFibGUoImZrdGlkIiwgZmt0aWQpOw0KCXJh LmFkZFZhcmlhYmxlKCJma2lkIiwgZmtpZCk7DQoJcmEuYWRkVmFyaWFibGUoInJp ZCIsIHJpZCk7DQoNCglyYS53cml0ZShzb3VyY2UpOw0KfTsNCg0KLyogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PSBTVEFSVDogUkFUSU5HIEZPUiBMSVNUUyA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0KZnVuY3Rpb24gZmxh c2hSYXRpbmcyTGlzdChmaWxlUGF0aCwgZmt0aWQsIGZraWQsIHJpZCwgc291cmNl KXsNCgl2YXIgZmxhc2hXaWR0aCA9IDEwMDsJCQkJCQkvLyDFocOtxZlrYSBob2Ru b2NlbsOtIC0gc2Nob2Ruw6EgcyBkZWZpbmljw60gU1dGT2JqZWN0Ow0KCXZhciBm bGFzaEhlaWdodCA9IDE4OwkJCQkJCS8vIHbDvcWha2EgaG9kbm9jZW7DrSAtIHNj aG9kbsOhIHMgZGVmaW5pY8OtIFNXRk9iamVjdDsNCg0KCXZhciByYSA9IG5ldyBT V0ZPYmplY3QoZmxhc2hTcmNfMDgsICJyYXRpbmciLGZsYXNoV2lkdGgsIGZsYXNo SGVpZ2h0LCAiOCIsICIjRkZGRkZGIik7DQoJcmEuYWRkVmFyaWFibGUoIndtb2Rl IiwgInRyYW5zcGFyZW50Iik7DQoJcmEuYWRkVmFyaWFibGUoInNlcDEiLCAifHh8 Iik7CQkJCQkvLyBzZXBhcsOhcm90IHBybyBwxZlldm9kIMWZZXTEm3pjb3bDvWNo IHByb23Em25uw71jaCBuYSBwb2xlOw0KCXJhLmFkZFZhcmlhYmxlKCJzZXAyIiwg InwiKTsJCQkJCS8vIHNlcGFyw6Fyb3QgcHJvIHDFmWV2b2QgxZlldMSbemNvdsO9 Y2ggcHJvbcSbbm7DvWNoIG5hIHBvbGU7DQoJcmEuYWRkVmFyaWFibGUoInNjclci LCBmbGFzaFdpZHRoKTsNCglyYS5hZGRWYXJpYWJsZSgic2NySCIsIGZsYXNoSGVp Z2h0KTsNCg0KCXJhLmFkZFZhcmlhYmxlKCJwYWRkaW5nIiwgIjR8MyIpOwkJCQkv LyBuZXBvdmlubsOpIHbDvWNob3rDrSBob2Rub3RhIDQgLSBvZHNhemVuw60gb2Qg b2tyYWplIGZsYXNoIG9iamVrdHU7DQoNCglyYS5hZGRWYXJpYWJsZSgiYXNzZXNz ZW1lbnRNaW4iLCAwKTsJCQkJLy8gcG92aW5uw6kgLSBtaW5pbcOhbG7DrSBob2Ru b3RhIGhvZG5vY2VuaTsNCglyYS5hZGRWYXJpYWJsZSgiYXNzZXNzZW1lbnRNYXgi LCA1KTsJCQkJLy8gcG92aW5uw6kgLSBtYXhpbcOhbG7DrSBob2Rub3RhIGhvZG5v Y2VuaTsNCg0KCXJhLmFkZFZhcmlhYmxlKCJhc3Nlc3NlbWVudCIsIDApOwkJCQkv LyBwb3Zpbm7DqSAtIGFrdHXDoWxuw60gaG9kbm90YSBob2Rub2Nlbmk7DQoNCgly YS5hZGRWYXJpYWJsZSgiZGVjaW1hbFBsYWNlcyIsIDApOwkJCQkvLyBuZXBvdmlu bsOpIHbDvWNob3rDrSAwIC0gcG/EjWV0IGRlc2V0aW5uecO9Y2ggbcOtc3Q7DQoN Ci8vCXJhLmFkZFZhcmlhYmxlKCJiZ3JDIiwgIkZGMDAwMHx4fDUwIik7CQkJLy8g bmVwb3Zpbm7DqSAtIGJhcnZhIHBvemFkw60gKG5hcMWZLiBGRkZGRkZ8Q0NDQ0ND fHh8NTAgLSB2ZXJ0aWvDoWxuw60gcMWZZWNob2QgeiBiYXJ2eSBGRkZGRkYgZG8g Q0NDQ0NDIHMgNTAlIG5lcHLFr2hsZWRub3N0w60pOw0KCXJhLmFkZFZhcmlhYmxl KCJjb2xBc3Nlc1llcyIsICIwMTcxYmN8eHwxMDAiKTsJCQkvLyBwb3Zpbm7DqSAt IGJhcnZhKHkpIHNsb3VwY2UgaG9kbm9jZW7DrSB2IGJhcmV2bm9zdGkgemxldmEg ZG8gcHJhdmEgKG5hcMWZLiBGRjAwMDB8RkZDQzAwfDAwREMwMHx4fDEwMCAtIHDF mWVjaG9kIHogYmFydnkgRkYwMDAwIHDFmWVzIGJhcnZ1IEZGQ0MwMCBkbyBiYXJ2 eSAwMERDMDAgcyBuZXByxa9obGVkbm9zdMOtIDEwMCUpOw0KCXJhLmFkZFZhcmlh YmxlKCJjb2xBc3Nlc05vIiwgIjk0OTQ5NHx4fDEwMCIpOwkJCS8vIHBvdmlubsOp IC0gYmFydmEoeSkgc2xvdXBjZSBob2Rub2NlbsOtIHYgYmFyZXZub3N0aSB6bGV2 YSBkbyBwcmF2YSAobmFwxZkuIEZGMDAwMHxGRkNDMDB8MDBEQzAwfHh8MTAwIC0g cMWZZWNob2QgeiBiYXJ2eSBGRjAwMDAgcMWZZXMgYmFydnUgRkZDQzAwIGRvIGJh cnZ5IDAwREMwMCBzIG5lcHLFr2hsZWRub3N0w60gMzAlKTsNCg0KLy8JcmEuYWRk VmFyaWFibGUoImFzc2VzU2hhcGUiLCAic2hhcGUuc3dmIik7CQkJLy8gbmVwb3Zp bm7DqSAtIG1vxb5ubyBuYWhyw6F0IHZsYXN0bsOtIHR2YXIgc3ltYm9sdSBob2Ru b2NlbsOtOw0KCXJhLmFkZFZhcmlhYmxlKCJhc3Nlc051bWJlciIsIDUpOwkJCQkv LyBwb3Zpbm7DqSAtIHBvxI1ldCBzeW1ib2zFryBob2Rub2NlbsOtOw0KDQovLwly YS5hZGRWYXJpYWJsZSgic2V0QXNzZXMiLCB0cnVlKTsJCQkJLy8gbmVwb3Zpbm7D qSB2w71jaG96w60gdHJ1ZSAtIHBvdm9sZW7DrS96YW1lemVuw60gcHJvdsOhZMSb dCBob2Rub2NlbsOtOw0KLy8JcmEuYWRkVmFyaWFibGUoImFzc2VzVGV4dCIsIHRy dWUpOwkJCQkvLyBuZXBvdmlubsOpIHbDvWNob3rDrSB0cnVlIC0gcG92b2xlbsOt L3phbWV6ZW7DrSB0ZXh0b3bDqWhvIHpvYnJhemVuw60gaG9kbm90eSBob2Rub2Nl bsOtOw0KCXJhLmFkZFZhcmlhYmxlKCJhc3Nlc1RleHRQb3NpdGlvbiIsICJsZWZ0 Iik7CQkJLy8gbmVwb3Zpbm7DqSB2w71jaG96w60gbGVmdCAtIHBvemljZSB0ZXh0 dSBob2Rub2NlbsOtOw0KCXJhLmFkZFZhcmlhYmxlKCJhc3Nlc1RleHRBbGlnbiIs ICJsZWZ0Iik7CQkJLy8gbmVwb3Zpbm7DqSB2w71jaG96w60gcmlnaHQgLSB6YXJv dm7DoW7DrSB0ZXh0dSBob2Rub2NlbsOtOw0KLy8JcmEuYWRkVmFyaWFibGUoImFz c2VzVGV4dFNoYXBlRGlzdCIsIDE0KTsJCQkvLyBuZXBvdmlubsOpIHbDvWNob3rD rSA1IC0gb2RzYXplbsOtIHRleHR1IGhvZG5vY2Vuw60gb2Qgc3ltYm9sxa8gaG9k bm9jZW7DrTsNCg0KCXJhLmFkZFZhcmlhYmxlKCJhc3Nlc1RleHRTaXplIiwgMTEp OwkJCQkvLyBuZXBvdmluw6kgdsO9Y2hvesOtIDEyIC0gdmVsaWtvc3QgcMOtc21h IHRleHR1IGhvZG5vY2Vuw607DQoJcmEuYWRkVmFyaWFibGUoImFzc2VzVGV4dENv bG9yIiwgIjQwNzFiOCIpOwkJCS8vIG5lcG92aW5uw6kgdsO9Y2hvesOtIGM0YzRj NCAtIGJhcnZhIHRleHR1IGhvZG5vY2Vuw607DQoJcmEuYWRkVmFyaWFibGUoImFz c2VzVGV4dEJlZm9yZSIsIiIpOwkJCQkvLyBuZXBvdmlubsOpIHbDvWNob3rDrSAo IC0gem5hayBwxZllZCB0ZXh0b3ZvdSBob2Rub3RvdSBob2Rub2NlbsOtOw0KCXJh LmFkZFZhcmlhYmxlKCJhc3Nlc1RleHRBZnRlciIsICIiKTsJCQkvLyBuZXBvdmlu bsOpIHbDvWNob3rDrSApIC0gem5hayB6YSB0ZXh0b3ZvdSBob2Rub3RvdSBob2Ru b2NlbsOtOw0KDQoJcmEuYWRkVmFyaWFibGUoInJlcGxhY2VBc1BlcmNlbnRTeW1i b2xUZXh0IiwgImFzc2VzVGV4dEJlZm9yZXxwcm9jfHh8YXNzZXNUZXh0QWZ0ZXJ8 cHJvYyIpOw0KDQoJcmEuYWRkVmFyaWFibGUoInJhdGluZ0FsZXJ0MSIsIHJhdGlu Z0FsZXJ0T2spOw0KCXJhLmFkZFZhcmlhYmxlKCJyYXRpbmdBbGVydDIiLCByYXRp bmdBbGVydEZhaWwpOw0KCXJhLmFkZFZhcmlhYmxlKCJyYXRpbmdBbGVydDMiLCBy YXRpbmdBbGVydEFnYWluKTsNCg0KCXJhLmFkZFZhcmlhYmxlKCJmaWxlUGF0aCIs ICJodHRwOi8vIiArIEdldFVybEJhc2UoKSk7CS8vZmlsZVBhdGg7DQoJcmEuYWRk VmFyaWFibGUoImZrdGlkIiwgZmt0aWQpOw0KCXJhLmFkZFZhcmlhYmxlKCJma2lk IiwgZmtpZCk7DQoJcmEuYWRkVmFyaWFibGUoInJpZCIsIHJpZCk7DQoNCglyYS53 cml0ZShzb3VyY2UpOw0KfTsNCg0KLyogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBTVEFSVDog UkFUSU5HIEZPUiBMSVNUUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PSAqLw0KZnVuY3Rpb24gZmxhc2hSYXRpbmcyTXVsdGltZWRp YShmaWxlUGF0aCwgZmt0aWQsIGZraWQsIHJpZCl7DQoJdmFyIGZsYXNoV2lkdGgg PSA1MDsJCQkJCQkvLyDFocOtxZlrYSBob2Rub2NlbsOtIC0gc2Nob2Ruw6EgcyBk ZWZpbmljw60gU1dGT2JqZWN0Ow0KCXZhciBmbGFzaEhlaWdodCA9IDE4OwkJIAkJ CQkvLyB2w73FoWthIGhvZG5vY2Vuw60gLSBzY2hvZG7DoSBzIGRlZmluaWPDrSBT V0ZPYmplY3Q7DQoNCgl2YXIgcmEgPSBuZXcgU1dGT2JqZWN0KGZsYXNoU3JjXzA4 LCAicmF0aW5nIixmbGFzaFdpZHRoLCBmbGFzaEhlaWdodCwgIjgiLCAiI0ZGRkZG RiIpOw0KCXJhLmFkZFZhcmlhYmxlKCJ3bW9kZSIsICJ0cmFuc3BhcmVudCIpOw0K CXJhLmFkZFZhcmlhYmxlKCJzZXAxIiwgInx4fCIpOwkJCQkJLy8gc2VwYXLDoXJv dCBwcm8gcMWZZXZvZCDFmWV0xJt6Y292w71jaCBwcm9txJtubsO9Y2ggbmEgcG9s ZTsNCglyYS5hZGRWYXJpYWJsZSgic2VwMiIsICJ8Iik7CQkJCQkvLyBzZXBhcsOh cm90IHBybyBwxZlldm9kIMWZZXTEm3pjb3bDvWNoIHByb23Em25uw71jaCBuYSBw b2xlOw0KCXJhLmFkZFZhcmlhYmxlKCJzY3JXIiwgZmxhc2hXaWR0aCk7DQoJcmEu YWRkVmFyaWFibGUoInNjckgiLCBmbGFzaEhlaWdodCk7DQoNCglyYS5hZGRWYXJp YWJsZSgicGFkZGluZyIsICIwfDMiKTsJCQkJLy8gbmVwb3Zpbm7DqSB2w71jaG96 w60gaG9kbm90YSA0IC0gb2RzYXplbsOtIG9kIG9rcmFqZSBmbGFzaCBvYmpla3R1 Ow0KDQoJcmEuYWRkVmFyaWFibGUoImFzc2Vzc2VtZW50TWluIiwgMCk7CQkJCS8v IHBvdmlubsOpIC0gbWluaW3DoWxuw60gaG9kbm90YSBob2Rub2Nlbmk7DQoJcmEu YWRkVmFyaWFibGUoImFzc2Vzc2VtZW50TWF4IiwgNSk7CQkJCS8vIHBvdmlubsOp IC0gbWF4aW3DoWxuw60gaG9kbm90YSBob2Rub2Nlbmk7DQoNCglyYS5hZGRWYXJp YWJsZSgiYXNzZXNzZW1lbnQiLCAwKTsJCQkJLy8gcG92aW5uw6kgLSBha3R1w6Fs bsOtIGhvZG5vdGEgaG9kbm9jZW5pOw0KDQoJcmEuYWRkVmFyaWFibGUoImRlY2lt YWxQbGFjZXMiLCAwKTsJCQkJLy8gbmVwb3Zpbm7DqSB2w71jaG96w60gMCAtIHBv xI1ldCBkZXNldGlubnnDvWNoIG3DrXN0Ow0KDQovLwlyYS5hZGRWYXJpYWJsZSgi YmdyQyIsICJGRjAwMDB8eHw1MCIpOwkJCS8vIG5lcG92aW5uw6kgLSBiYXJ2YSBw b3phZMOtIChuYXDFmS4gRkZGRkZGfENDQ0NDQ3x4fDUwIC0gdmVydGlrw6FsbsOt IHDFmWVjaG9kIHogYmFydnkgRkZGRkZGIGRvIENDQ0NDQyBzIDUwJSBuZXByxa9o bGVkbm9zdMOtKTsNCglyYS5hZGRWYXJpYWJsZSgiY29sQXNzZXNZZXMiLCAiMDE3 MWJjfHh8MTAwIik7CQkJLy8gcG92aW5uw6kgLSBiYXJ2YSh5KSBzbG91cGNlIGhv ZG5vY2Vuw60gdiBiYXJldm5vc3RpIHpsZXZhIGRvIHByYXZhIChuYXDFmS4gRkYw MDAwfEZGQ0MwMHwwMERDMDB8eHwxMDAgLSBwxZllY2hvZCB6IGJhcnZ5IEZGMDAw MCBwxZllcyBiYXJ2dSBGRkNDMDAgZG8gYmFydnkgMDBEQzAwIHMgbmVwcsWvaGxl ZG5vc3TDrSAxMDAlKTsNCglyYS5hZGRWYXJpYWJsZSgiY29sQXNzZXNObyIsICI5 NDk0OTR8eHwxMDAiKTsJCQkvLyBwb3Zpbm7DqSAtIGJhcnZhKHkpIHNsb3VwY2Ug aG9kbm9jZW7DrSB2IGJhcmV2bm9zdGkgemxldmEgZG8gcHJhdmEgKG5hcMWZLiBG RjAwMDB8RkZDQzAwfDAwREMwMHx4fDEwMCAtIHDFmWVjaG9kIHogYmFydnkgRkYw MDAwIHDFmWVzIGJhcnZ1IEZGQ0MwMCBkbyBiYXJ2eSAwMERDMDAgcyBuZXByxa9o bGVkbm9zdMOtIDMwJSk7DQoNCi8vCXJhLmFkZFZhcmlhYmxlKCJhc3Nlc1NoYXBl IiwgInNoYXBlLnN3ZiIpOwkJCS8vIG5lcG92aW5uw6kgLSBtb8W+bm8gbmFocsOh dCB2bGFzdG7DrSB0dmFyIHN5bWJvbHUgaG9kbm9jZW7DrTsNCglyYS5hZGRWYXJp YWJsZSgiYXNzZXNOdW1iZXIiLCA1KTsJCQkJLy8gcG92aW5uw6kgLSBwb8SNZXQg c3ltYm9sxa8gaG9kbm9jZW7DrTsNCg0KLy8JcmEuYWRkVmFyaWFibGUoInNldEFz c2VzIiwgdHJ1ZSk7CQkJCS8vIG5lcG92aW5uw6kgdsO9Y2hvesOtIHRydWUgLSBw b3ZvbGVuw60vemFtZXplbsOtIHByb3bDoWTEm3QgaG9kbm9jZW7DrTsNCi8vCXJh LmFkZFZhcmlhYmxlKCJhc3Nlc1RleHQiLCB0cnVlKTsJCQkJLy8gbmVwb3Zpbm7D qSB2w71jaG96w60gdHJ1ZSAtIHBvdm9sZW7DrS96YW1lemVuw60gdGV4dG92w6lo byB6b2JyYXplbsOtIGhvZG5vdHkgaG9kbm9jZW7DrTsNCglyYS5hZGRWYXJpYWJs ZSgiYXNzZXNUZXh0UG9zaXRpb24iLCAibGVmdCIpOwkJCS8vIG5lcG92aW5uw6kg dsO9Y2hvesOtIGxlZnQgLSBwb3ppY2UgdGV4dHUgaG9kbm9jZW7DrTsNCglyYS5h ZGRWYXJpYWJsZSgiYXNzZXNUZXh0QWxpZ24iLCAibGVmdCIpOwkJCS8vIG5lcG92 aW5uw6kgdsO9Y2hvesOtIHJpZ2h0IC0gemFyb3Zuw6Fuw60gdGV4dHUgaG9kbm9j ZW7DrTsNCglyYS5hZGRWYXJpYWJsZSgiYXNzZXNUZXh0U2hhcGVEaXN0IiwgMik7 CQkJLy8gbmVwb3Zpbm7DqSB2w71jaG96w60gNSAtIG9kc2F6ZW7DrSB0ZXh0dSBo b2Rub2NlbsOtIG9kIHN5bWJvbMWvIGhvZG5vY2Vuw607DQoNCglyYS5hZGRWYXJp YWJsZSgiYXNzZXNUZXh0U2l6ZSIsIDExKTsJCQkJLy8gbmVwb3ZpbsOpIHbDvWNo b3rDrSAxMiAtIHZlbGlrb3N0IHDDrXNtYSB0ZXh0dSBob2Rub2NlbsOtOw0KCXJh LmFkZFZhcmlhYmxlKCJhc3Nlc1RleHRDb2xvciIsICI0MDcxYjgiKTsJCQkvLyBu ZXBvdmlubsOpIHbDvWNob3rDrSBjNGM0YzQgLSBiYXJ2YSB0ZXh0dSBob2Rub2Nl bsOtOw0KCXJhLmFkZFZhcmlhYmxlKCJhc3Nlc1RleHRCZWZvcmUiLCIiKTsJCQkJ Ly8gbmVwb3Zpbm7DqSB2w71jaG96w60gKCAtIHpuYWsgcMWZZWQgdGV4dG92b3Ug aG9kbm90b3UgaG9kbm9jZW7DrTsNCglyYS5hZGRWYXJpYWJsZSgiYXNzZXNUZXh0 QWZ0ZXIiLCAiIik7CQkJLy8gbmVwb3Zpbm7DqSB2w71jaG96w60gKSAtIHpuYWsg emEgdGV4dG92b3UgaG9kbm90b3UgaG9kbm9jZW7DrTsNCg0KCXJhLmFkZFZhcmlh YmxlKCJyZXBsYWNlQXNQZXJjZW50U3ltYm9sVGV4dCIsICJhc3Nlc1RleHRCZWZv cmV8cHJvY3x4fGFzc2VzVGV4dEFmdGVyfHByb2MiKTsNCgkNCgl2YXIgcmF0aW5n QWxlcnRGYWlsR2FsbGVyeSA9ICJWw6HFoSBobGFzIHBybyB0dXRvIGdhbGVyaWkg YnlsIGppxb4gemF6bmFtZW7DoW4uIjsNCg0KCXJhLmFkZFZhcmlhYmxlKCJyYXRp bmdBbGVydDEiLCByYXRpbmdBbGVydE9rKTsNCglyYS5hZGRWYXJpYWJsZSgicmF0 aW5nQWxlcnQyIiwgcmF0aW5nQWxlcnRGYWlsR2FsbGVyeSk7DQoJcmEuYWRkVmFy aWFibGUoInJhdGluZ0FsZXJ0MyIsIHJhdGluZ0FsZXJ0QWdhaW4pOw0KDQoJcmEu YWRkVmFyaWFibGUoImZpbGVQYXRoIiwgImh0dHA6Ly8iICsgR2V0VXJsQmFzZSgp KTsJLy9maWxlUGF0aDsNCglyYS5hZGRWYXJpYWJsZSgiZmt0aWQiLCBma3RpZCk7 DQoJcmEuYWRkVmFyaWFibGUoImZraWQiLCBma2lkKTsNCglyYS5hZGRWYXJpYWJs ZSgicmlkIiwgcmlkKTsNCg0KCXJhLndyaXRlKCJyYXRpbmdGbCIpOw0KfTsNCg0K LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PSBTVEFSVDogUkFUSU5HIEZPUiBMSVNUUyA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0KDQpm dW5jdGlvbiBmbGFzaFJhdGluZzJBbmtldChmaWxlUGF0aCwgZmt0aWQsIGZraWQs IHJpZCwgc291cmNlKXsNCgl2YXIgZmxhc2hXaWR0aCA9IDE0MDsJCQkJCQkvLyDF ocOtxZlrYSBob2Rub2NlbsOtIC0gc2Nob2Ruw6EgcyBkZWZpbmljw60gU1dGT2Jq ZWN0Ow0KCXZhciBmbGFzaEhlaWdodCA9IDY1OwkJCQkJCS8vIHbDvcWha2EgaG9k bm9jZW7DrSAtIHNjaG9kbsOhIHMgZGVmaW5pY8OtIFNXRk9iamVjdDsNCg0KCXZh ciByYSA9IG5ldyBTV0ZPYmplY3QoZmxhc2hTcmNfMDgsICJyYXRpbmciLGZsYXNo V2lkdGgsIGZsYXNoSGVpZ2h0LCAiOCIsICIjRkZGRkZGIik7DQoJcmEuYWRkVmFy aWFibGUoIndtb2RlIiwgInRyYW5zcGFyZW50Iik7DQoJcmEuYWRkVmFyaWFibGUo InNlcDEiLCAifHh8Iik7CQkJCQkvLyBzZXBhcsOhcm90IHBybyBwxZlldm9kIMWZ ZXTEm3pjb3bDvWNoIHByb23Em25uw71jaCBuYSBwb2xlOw0KCXJhLmFkZFZhcmlh YmxlKCJzZXAyIiwgInwiKTsJCQkJCS8vIHNlcGFyw6Fyb3QgcHJvIHDFmWV2b2Qg xZlldMSbemNvdsO9Y2ggcHJvbcSbbm7DvWNoIG5hIHBvbGU7DQoJcmEuYWRkVmFy aWFibGUoInNjclciLCBmbGFzaFdpZHRoKTsNCglyYS5hZGRWYXJpYWJsZSgic2Ny SCIsIGZsYXNoSGVpZ2h0KTsNCg0KCXJhLmFkZFZhcmlhYmxlKCJwYWRkaW5nIiwg IjR8MyIpOwkJCQkvLyBuZXBvdmlubsOpIHbDvWNob3rDrSBob2Rub3RhIDQgLSBv ZHNhemVuw60gb2Qgb2tyYWplIGZsYXNoIG9iamVrdHU7DQoNCglyYS5hZGRWYXJp YWJsZSgiYXNzZXNzZW1lbnRNaW4iLCAwKTsJCQkJLy8gcG92aW5uw6kgLSBtaW5p bcOhbG7DrSBob2Rub3RhIGhvZG5vY2VuaTsNCglyYS5hZGRWYXJpYWJsZSgiYXNz ZXNzZW1lbnRNYXgiLCA1KTsJCQkJLy8gcG92aW5uw6kgLSBtYXhpbcOhbG7DrSBo b2Rub3RhIGhvZG5vY2VuaTsNCg0KCXJhLmFkZFZhcmlhYmxlKCJhc3Nlc3NlbWVu dCIsIDApOwkJCQkvLyBwb3Zpbm7DqSAtIGFrdHXDoWxuw60gaG9kbm90YSBob2Ru b2Nlbmk7DQoNCglyYS5hZGRWYXJpYWJsZSgiZGVjaW1hbFBsYWNlcyIsIDApOwkJ CQkvLyBuZXBvdmlubsOpIHbDvWNob3rDrSAwIC0gcG/EjWV0IGRlc2V0aW5uecO9 Y2ggbcOtc3Q7DQoNCi8vCXJhLmFkZFZhcmlhYmxlKCJiZ3JDIiwgIkZGMDAwMHx4 fDUwIik7CQkJLy8gbmVwb3Zpbm7DqSAtIGJhcnZhIHBvemFkw60gKG5hcMWZLiBG RkZGRkZ8Q0NDQ0NDfHh8NTAgLSB2ZXJ0aWvDoWxuw60gcMWZZWNob2QgeiBiYXJ2 eSBGRkZGRkYgZG8gQ0NDQ0NDIHMgNTAlIG5lcHLFr2hsZWRub3N0w60pOw0KCXJh LmFkZFZhcmlhYmxlKCJjb2xBc3Nlc1llcyIsICIwMTcxYmN8eHwxMDAiKTsJCQkv LyBwb3Zpbm7DqSAtIGJhcnZhKHkpIHNsb3VwY2UgaG9kbm9jZW7DrSB2IGJhcmV2 bm9zdGkgemxldmEgZG8gcHJhdmEgKG5hcMWZLiBGRjAwMDB8RkZDQzAwfDAwREMw MHx4fDEwMCAtIHDFmWVjaG9kIHogYmFydnkgRkYwMDAwIHDFmWVzIGJhcnZ1IEZG Q0MwMCBkbyBiYXJ2eSAwMERDMDAgcyBuZXByxa9obGVkbm9zdMOtIDEwMCUpOw0K CXJhLmFkZFZhcmlhYmxlKCJjb2xBc3Nlc05vIiwgIjk0OTQ5NHx4fDEwMCIpOwkJ CS8vIHBvdmlubsOpIC0gYmFydmEoeSkgc2xvdXBjZSBob2Rub2NlbsOtIHYgYmFy ZXZub3N0aSB6bGV2YSBkbyBwcmF2YSAobmFwxZkuIEZGMDAwMHxGRkNDMDB8MDBE QzAwfHh8MTAwIC0gcMWZZWNob2QgeiBiYXJ2eSBGRjAwMDAgcMWZZXMgYmFydnUg RkZDQzAwIGRvIGJhcnZ5IDAwREMwMCBzIG5lcHLFr2hsZWRub3N0w60gMzAlKTsN Cg0KLy8JcmEuYWRkVmFyaWFibGUoImFzc2VzU2hhcGUiLCAic2hhcGUuc3dmIik7 CQkJLy8gbmVwb3Zpbm7DqSAtIG1vxb5ubyBuYWhyw6F0IHZsYXN0bsOtIHR2YXIg c3ltYm9sdSBob2Rub2NlbsOtOw0KCXJhLmFkZFZhcmlhYmxlKCJhc3Nlc051bWJl ciIsIDUpOwkJCQkvLyBwb3Zpbm7DqSAtIHBvxI1ldCBzeW1ib2zFryBob2Rub2Nl bsOtOw0KDQovLwlyYS5hZGRWYXJpYWJsZSgic2V0QXNzZXMiLCB0cnVlKTsJCQkJ Ly8gbmVwb3Zpbm7DqSB2w71jaG96w60gdHJ1ZSAtIHBvdm9sZW7DrS96YW1lemVu w60gcHJvdsOhZMSbdCBob2Rub2NlbsOtOw0KLy8JcmEuYWRkVmFyaWFibGUoImFz c2VzVGV4dCIsIHRydWUpOwkJCQkvLyBuZXBvdmlubsOpIHbDvWNob3rDrSB0cnVl IC0gcG92b2xlbsOtL3phbWV6ZW7DrSB0ZXh0b3bDqWhvIHpvYnJhemVuw60gaG9k bm90eSBob2Rub2NlbsOtOw0KCXJhLmFkZFZhcmlhYmxlKCJhc3Nlc1RleHRQb3Np dGlvbiIsICJsZWZ0Iik7CQkJLy8gbmVwb3Zpbm7DqSB2w71jaG96w60gbGVmdCAt IHBvemljZSB0ZXh0dSBob2Rub2NlbsOtOw0KCXJhLmFkZFZhcmlhYmxlKCJhc3Nl c1RleHRBbGlnbiIsICJsZWZ0Iik7CQkJLy8gbmVwb3Zpbm7DqSB2w71jaG96w60g cmlnaHQgLSB6YXJvdm7DoW7DrSB0ZXh0dSBob2Rub2NlbsOtOw0KLy8JcmEuYWRk VmFyaWFibGUoImFzc2VzVGV4dFNoYXBlRGlzdCIsIDE0KTsJCQkvLyBuZXBvdmlu bsOpIHbDvWNob3rDrSA1IC0gb2RzYXplbsOtIHRleHR1IGhvZG5vY2Vuw60gb2Qg c3ltYm9sxa8gaG9kbm9jZW7DrTsNCg0KCXJhLmFkZFZhcmlhYmxlKCJhc3Nlc1Rl eHRTaXplIiwgMTEpOwkJCQkvLyBuZXBvdmluw6kgdsO9Y2hvesOtIDEyIC0gdmVs aWtvc3QgcMOtc21hIHRleHR1IGhvZG5vY2Vuw607DQoJcmEuYWRkVmFyaWFibGUo ImFzc2VzVGV4dENvbG9yIiwgIjQwNzFiOCIpOwkJCS8vIG5lcG92aW5uw6kgdsO9 Y2hvesOtIGM0YzRjNCAtIGJhcnZhIHRleHR1IGhvZG5vY2Vuw607DQoJcmEuYWRk VmFyaWFibGUoImFzc2VzVGV4dEJlZm9yZSIsIiIpOwkJCQkvLyBuZXBvdmlubsOp IHbDvWNob3rDrSAoIC0gem5hayBwxZllZCB0ZXh0b3ZvdSBob2Rub3RvdSBob2Ru b2NlbsOtOw0KCXJhLmFkZFZhcmlhYmxlKCJhc3Nlc1RleHRBZnRlciIsICIiKTsJ CQkvLyBuZXBvdmlubsOpIHbDvWNob3rDrSApIC0gem5hayB6YSB0ZXh0b3ZvdSBo b2Rub3RvdSBob2Rub2NlbsOtOw0KDQoJcmEuYWRkVmFyaWFibGUoInJlcGxhY2VB c1BlcmNlbnRTeW1ib2xUZXh0IiwgImFzc2VzVGV4dEJlZm9yZXxwcm9jfHh8YXNz ZXNUZXh0QWZ0ZXJ8cHJvYyIpOw0KDQoJcmEuYWRkVmFyaWFibGUoInJhdGluZ0Fs ZXJ0MSIsIHJhdGluZ0FsZXJ0T2spOw0KCXJhLmFkZFZhcmlhYmxlKCJyYXRpbmdB bGVydDIiLCByYXRpbmdBbGVydEZhaWwpOw0KCXJhLmFkZFZhcmlhYmxlKCJyYXRp bmdBbGVydDMiLCByYXRpbmdBbGVydEFnYWluKTsNCg0KCXJhLmFkZFZhcmlhYmxl KCJ0ZXh0QXJvdW5kU2l6ZSIsIDkpOw0KCXJhLmFkZFZhcmlhYmxlKCJ0ZXh0QXJv dW5kQ29sb3IiLCAiNmE2YTZhIik7DQoJcmEuYWRkVmFyaWFibGUoInRleHRPdmVy QXNzZXMiLCAiT2hvZG5vxaV0ZSB0dXRvIGZvdG9ncmFmaWk6ICIpOw0KCXJhLmFk ZFZhcmlhYmxlKCJ0ZXh0VW5kZXJBdmVyYWdlIiwgIlByxa9txJtybsOpIGhvZG5v Y2Vuw606ICIpOw0KCXJhLmFkZFZhcmlhYmxlKCJhdmVyYWdlRGVjaW1hbFBsYWNl cyIsIDIpOw0KCXJhLmFkZFZhcmlhYmxlKCJ0ZXh0VW5kZXJUb3RhbENvdW50Iiwg IkNlbGtvdsO9IHBvxI1ldCBob2Rub2NlbsOtOiAiKTsNCg0KCXJhLmFkZFZhcmlh YmxlKCJmaWxlUGF0aCIsICJodHRwOi8vIiArIEdldFVybEJhc2UoKSk7CS8vZmls ZVBhdGg7DQoJcmEuYWRkVmFyaWFibGUoImZrdGlkIiwgZmt0aWQpOw0KCXJhLmFk ZFZhcmlhYmxlKCJma2lkIiwgZmtpZCk7DQoJcmEuYWRkVmFyaWFibGUoInJpZCIs IHJpZCk7DQoNCglyYS53cml0ZShzb3VyY2UpOw0KfTsNCg0KLyogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gcHJvbWlz ZSBiYXIgb24gY2VudHJhbCB3ZWIgSFAgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8NCg0KZnVuY3Rpb24gcHJvbWlz ZUJhckhQKGltYWdlLCB5ZXMsIGVsZW1lbnRJZFRvUGxhY2VJbil7DQoJdmFyIHJh bmRvbWVyID0gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKjEwMDApOw0KDQoJdmFy IHNjclcgPSAxNDA7CQkJCQkvLyDFocOtxZlrYSAtIHNjaG9kbsOhIHMgZGVmaW5p Y8OtIFNXRk9iamVjdDsNCgl2YXIgc2NySCA9IDEwMzsJCQkJCS8vIHbDvcWha2Eg LSBzY2hvZG7DoSBzIGRlZmluaWPDrSBTV0ZPYmplY3Q7DQoNCgl2YXIgcHIgPSBu ZXcgU1dGT2JqZWN0KGZsYXNoU3JjXzA5LCAic2xpYm9tZXRyRmwiK3JhbmRvbWVy LCBzY3JXLCBzY3JILCAiOCIsICIjRkZGRkZGIik7DQoJcHIuYWRkVmFyaWFibGUo Indtb2RlIiwgInRyYW5zcGFyZW50Iik7DQoNCglwci5hZGRWYXJpYWJsZSgic2Ny VyIsIHNjclcpOw0KCXByLmFkZFZhcmlhYmxlKCJzY3JIIiwgc2NySCk7DQoNCglw ci5hZGRWYXJpYWJsZSgiQW5vUmF0ZSIsIHllcyk7DQoJcHIuYWRkVmFyaWFibGUo IkltYWdlIiwgaW1hZ2UpOw0KDQoJcHIud3JpdGUoZWxlbWVudElkVG9QbGFjZUlu KTsNCn07DQoNCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09IHRydWUgb3IgbGllIG1ldGVyIG9uIGNlbnRyYWwgd2Vi IEhQID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ICovDQoNCmZ1bmN0aW9uIHRydWVPckxpZUhQKGltYWdlLCB5ZXMsIGVs ZW1lbnRJZFRvUGxhY2VJbil7DQoJdmFyIHJhbmRvbWVyID0gTWF0aC5yb3VuZChN YXRoLnJhbmRvbSgpKjEwMDApOw0KDQoJdmFyIHNjclcgPSAxNDA7CQkJCQkvLyDF ocOtxZlrYSAtIHNjaG9kbsOhIHMgZGVmaW5pY8OtIFNXRk9iamVjdDsNCgl2YXIg c2NySCA9IDEwMzsJCQkJCS8vIHbDvcWha2EgLSBzY2hvZG7DoSBzIGRlZmluaWPD rSBTV0ZPYmplY3Q7DQoNCgl2YXIgbGkgPSBuZXcgU1dGT2JqZWN0KGZsYXNoU3Jj XzExKyI/UmF0aW5nPSIrIHllcyArIiZJbWFnZT0iICsgaW1hZ2UsICJsemltZXRy RmwiK3JhbmRvbWVyICwgc2NyVywgc2NySCwgIjgiLCAiI0ZGRkZGRiIpOw0KCWxp LmFkZFZhcmlhYmxlKCJ3bW9kZSIsICJ0cmFuc3BhcmVudCIpOw0KCWxpLmFkZFZh cmlhYmxlKCJzY3JXIiwgc2NyVyk7DQoJbGkuYWRkVmFyaWFibGUoInNjckgiLCBz Y3JIKTsNCglsaS53cml0ZShlbGVtZW50SWRUb1BsYWNlSW4pOw0KfTsNCg0KLyog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0gcHJvbWlzZSBiYXIgb24gY2VudHJhbCB3ZWIgSFAgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8NCg0KZnVuY3Rp b24gcHJvbWlzZUJhckFydGljbGVEZXRhaWwoaW1hZ2UsIHllcywgZWxlbWVudElk VG9QbGFjZUluKXsNCgl2YXIgcmFuZG9tZXIgPSBNYXRoLnJvdW5kKE1hdGgucmFu ZG9tKCkqMTAwMCk7DQoNCgl2YXIgc2NyVyA9IDIxMDsJCQkJCS8vIMWhw63FmWth IC0gc2Nob2Ruw6EgcyBkZWZpbmljw60gU1dGT2JqZWN0Ow0KCXZhciBzY3JIID0g MTYwOwkJCQkJLy8gdsO9xaFrYSAtIHNjaG9kbsOhIHMgZGVmaW5pY8OtIFNXRk9i amVjdDsNCg0KCXZhciBwciA9IG5ldyBTV0ZPYmplY3QoZmxhc2hTcmNfMTAsICJz bGlib21ldHJGbCIrcmFuZG9tZXIgLCBzY3JXLCBzY3JILCAiOCIsICIjRkZGRkZG Iik7DQoJcHIuYWRkVmFyaWFibGUoIndtb2RlIiwgInRyYW5zcGFyZW50Iik7DQoN Cglwci5hZGRWYXJpYWJsZSgic2NyVyIsIHNjclcpOw0KCXByLmFkZFZhcmlhYmxl KCJzY3JIIiwgc2NySCk7DQoNCglwci5hZGRWYXJpYWJsZSgiQW5vUmF0ZSIsIHll cyk7DQoJcHIuYWRkVmFyaWFibGUoIkltYWdlIiwgaW1hZ2UpOw0KCXByLmFkZFZh cmlhYmxlKCJCYWNrZ3JvdW5kIiwgIjB4RjJGMkYyIik7DQoNCglwci53cml0ZShl bGVtZW50SWRUb1BsYWNlSW4pOw0KfTsNCg0KLyogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gdHJ1ZSBvciBsaWUgbWV0 ZXIgb24gY2VudHJhbCB3ZWIgSFAgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0gKi8NCg0KZnVuY3Rpb24gdHJ1ZU9yTGll QXJ0aWNsZURldGFpbChpbWFnZSwgeWVzLCBlbGVtZW50SWRUb1BsYWNlSW4pew0K CXZhciByYW5kb21lciA9IE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSoxMDAwKTsN Cg0KCXZhciBzY3JXID0gMjEwOwkJCQkJLy8gxaHDrcWZa2EgLSBzY2hvZG7DoSBz IGRlZmluaWPDrSBTV0ZPYmplY3Q7DQoJdmFyIHNjckggPSAxNjA7CQkJCQkvLyB2 w73FoWthIC0gc2Nob2Ruw6EgcyBkZWZpbmljw60gU1dGT2JqZWN0Ow0KDQoJdmFy IGxpID0gbmV3IFNXRk9iamVjdChmbGFzaFNyY18xMisiP1JhdGluZz0iKyB5ZXMg KyImSW1hZ2U9IiArIGltYWdlKyImQmFja2dyb3VuZD0weEYyRjJGMiIsICJsemlt ZXRyRmwiK3JhbmRvbWVyICwgc2NyVywgc2NySCwgIjgiLCAiI0ZGRkZGRiIpOw0K CWxpLmFkZFZhcmlhYmxlKCJ3bW9kZSIsICJ0cmFuc3BhcmVudCIpOw0KCWxpLmFk ZFZhcmlhYmxlKCJzY3JXIiwgc2NyVyk7DQoJbGkuYWRkVmFyaWFibGUoInNjckgi LCBzY3JIKTsNCglsaS5hZGRWYXJpYWJsZSgiYmFja2dyb3VuZCIsICIweEYyRjJG MiIpOw0KCQ0KCWxpLndyaXRlKGVsZW1lbnRJZFRvUGxhY2VJbik7DQp9Ow0KDQpm dW5jdGlvbiBmdXR1cm9vbUFydGljbGVWaWRlbyhmaWxlUGF0aCwgeG1sU3JjLCB2 aXNpdFVybCwgdmlzaXRUYXJnZXQpew0KCXZhciBmbGFzaFdpZHRoID0gNTYwOwkJ CQkJLy8gxaHDrcWZa2EgZ2FsZXJpZSAtIHNjaG9kbsOhIHMgZGVmaW5pY8OtIFNX Rk9iamVjdDsNCgl2YXIgZmxhc2hIZWlnaHQgPSA0MjA7CQkJCQkvLyB2w73FoWth IGdhbGVyaWUgLSBzY2hvZG7DoSBzIGRlZmluaWPDrSBTV0ZPYmplY3Q7DQoNCgl2 YXIgZmxhc2hXaWR0aCA9IDU2MDsJCQkJCS8vIC0gc2lya2EgZmxhc2ggb2JqZWt0 dQ0KCXZhciBmbGFzaEhlaWdodCA9IDQyMDsJCQkJCS8vIC0gdnlza2EgZmxhc2gg b2JqZWt0dQ0KCQ0KCWFsZXJ0KGZpbGVQYXRoKTsNCglhbGVydCh4bWxTcmMpOw0K DQoJdmFyIGh2ID0gbmV3IFNXRk9iamVjdChmbGFzaFNyY18wNiwgInZwbGF5ZXIi LGZsYXNoV2lkdGgsIGZsYXNoSGVpZ2h0LCAiOCIsICIjRkZGRkZGIik7DQoJaHYu YWRkVmFyaWFibGUoImFsbG93RnVsbFNjcmVlbiIsIHRydWUpOw0KDQoJaHYuYWRk VmFyaWFibGUoIndtb2RlIiwgInRyYW5zcGFyZW50Iik7DQoJaHYuYWRkVmFyaWFi bGUoInNjclciLGZsYXNoV2lkdGgpOw0KCWh2LmFkZFZhcmlhYmxlKCJzY3JIIixm bGFzaEhlaWdodCk7DQoNCglodi5hZGRWYXJpYWJsZSgic2VwMSIsICJ8eHwiKTsJ CQkJLy8gcG92aW5uZSAtIHByZWRkZWZpbm92YW5vIHx4fAkJc2VwYXJhdG9yIHBy dm5pIHVyb3ZuZTsNCglodi5hZGRWYXJpYWJsZSgic2VwMiIsICJ8Iik7CQkJCS8v IHBvdmlubmUgLSBwcmVkZGVmaW5vdmFubyB8CQlzZXBhcmF0b3IgZHJ1aGUgdXJv dm5lOw0KDQoJaHYuYWRkVmFyaWFibGUoInRodW1ic1Zpc2libGUiLCBmYWxzZSk7 CQkJLy8gbmVwb3Zpbm5lIC0gcHJlZGRlZmlub3Zhbm8gdHJ1ZQl6b2JyYXpvdmF0 IG5haGxlZHk7DQoJaHYuYWRkVmFyaWFibGUoIm5hdmlWaXNpYmxlIiwgZmFsc2Up OwkJCS8vIG5lcG92aW5uZSAtIHByZWRkZWZpbm92YW5vIHRydWUJem9icmF6b3Zh dCBkb2xuaSBuYXZpZ2FjaTsNCglodi5hZGRWYXJpYWJsZSgibmF2aVZpZGVvVmlz aWJsZSIsIHRydWUpOwkJLy8gbmVwb3Zpbm5lIC0gcHJlZGRlZmlub3Zhbm8gdHJ1 ZQl6b2JyYXpvdmF0IG5hdmlnYXZpIGsgcHJlaHJhdmFuaTsNCg0KCWh2LmFkZFZh cmlhYmxlKCJtYWluUGFkZGluZyIsICIwfDAiKTsJCQkvLyBuZXBvdmlubmUgLSBw cmVkZGVmaW5vdmFubyB0cnVlCW9kc2F6ZW5pIG9kIG9rcmFqZSBzdHJhbmt5Ow0K DQoJaHYuYWRkVmFyaWFibGUoImJpZ1NjYWxhYmxlIiwgdHJ1ZSk7CQkJLy8gbmVw b3Zpbm5lIC0gcHJlZGRlZmlub3Zhbm8gdHJ1ZQlwcml6cHVzb2JvdmF0IHZlbGlr b3N0Ow0KCWh2LmFkZFZhcmlhYmxlKCJiaWdQcm9wb3JjaW9uYWwiLCB0cnVlKTsJ CS8vIG5lcG92aW5uZSAtIHByZWRkZWZpbm92YW5vIHRydWUJemFjaG92YXZhdCBw cm9wb3JjZTsNCg0KCWh2LmFkZFZhcmlhYmxlKCJiaWdCVyIsIDEpOwkJCQkvLyBu ZXBvdmlubmUgLSBwcmVkZGVmaW5vdmFubyAxCQl0bG91c3RrYSByYW1lY2VrIG9r b2xvIGRldGFpbHU7DQoNCglodi5hZGRWYXJpYWJsZSgiYmlnVyIsIDMwMCk7CQkJ CS8vIG5lcG92aW5uZQkJCQlzaXJrYSBkZXRhaWx1Ow0KCWh2LmFkZFZhcmlhYmxl KCJiaWdIIiwgMjI1KTsJCQkJLy8gbmVwb3Zpbm5lCQkJCXZ5c2thIGRldGFpbHU7 DQoNCglodi5hZGRWYXJpYWJsZSgiYmlnQkMiLCAiZGRkZGRkIik7CQkJLy8gbmVw b3Zpbm5lIC0gcHJlZGRlZmlub3Zhbm8gRERERERECWJhcnZhIHJlbWVja3Ugb2tv bG8gZGV0YWlsdTsNCglodi5hZGRWYXJpYWJsZSgiYmlnUGFkZGluZyIsICIwfDAi KTsJCQkvLyBuZXBvdmlubmUgLSBwcmVkZGVmaW5vdmFubyAwfDAJb2RzYXplbmkg ZGV0YWx1IG9kIG9rcmFqZSBzdHJhbmt5IC0gcHJpY2l0YSBzZSBrIG9kc2F6ZW5p IHN0cmFua3k7DQoNCg0KCWh2LmFkZFZhcmlhYmxlKCJ2aWRlb0ZyYW1lUmF0ZSIs IDEyKTsJCQkvLyBuZXBvdmlubmUgLSBwcmVkZGVmaW5vdmFubyAxMglmcmFtZXJh dGUgdmlkZWE7DQoNCglodi5hZGRWYXJpYWJsZSgiZmlsZVBhdGgiLCBmaWxlUGF0 aCk7CQkJCS8vIG5lcG92aW5uZSAtIHByZWRkZWZpbm92YW5vICIiCWNlc3RhIGsg YWRyZXNhcmkgc291Ym9ydTsNCg0KCWh2LmFkZFZhcmlhYmxlKCJzbGlkZXNob3dO YXZpQmFja2dyb3VuZCIsICJGRkZGRkZ8eHw2NSIpOwkvLyBuZXBvdmlubmUgLSBw cmVkZGVmaW5vdmFubwkJYmFydmEgcG96YWRpIG5hdmlnYWNlIGsgcHJlaHJhdmFu aTsNCglodi5hZGRWYXJpYWJsZSgic2xpZGVzaG93TmF2aUJvcmRlciIsICJGRjAw MDB8MXwwfDB8MCIpOwkvLyBuZXBvdmlubmUgLSBwcmVkZGVmaW5vdmFubwkJb3Jh bW92YW5pIG5hdmlnYWNlIGsgcHJlaHJhdmFuaTsNCglodi5hZGRWYXJpYWJsZSgi c2xpZGVzaG93TmF2aVBhZGRpbmciLCAiNXw1Iik7CQkJLy8gbmVwb3Zpbm5lIC0g cHJlZGRlZmlub3Zhbm8JCW9kc2F6YXNlbmkgcHJ2a3UgdiBuYXZpZ2FjaSBrIHBy ZWhyYXZhbmk7DQoJaHYuYWRkVmFyaWFibGUoInNsaWRlc2hvd05hdmlMaW5lSGVp Z2h0IiwgOCk7CQkJLy8gbmVwb3Zpbm5lIC0gcHJlZGRlZmlub3Zhbm8JCXZ5c2th IHBydmt1IG5hdmlrYWNlIGsgcHJlaHJhdmFuaSAtIHphdGltIG5lZnVua2NuaTsN Cglodi5hZGRWYXJpYWJsZSgic2xpZGVzaG93TmF2aUNvbG9ycyIsICJDQ0NDQ0N8 RUVFRUVFfDAwNkZDNSIpOwkvLyBuZXBvdmlubmUgLSBwcmVkZGVmaW5vdmFubwkJ YmFydnkgcHJ2a3UgbmF2aWdhY2U7DQoNCglodi5hZGRWYXJpYWJsZSgic2xpZGVz aG93TWluaW1hbFRpbWUiLCAxNTAwKTsJCQkvLyBuZXBvdmlubmUgLSBwcmVkZGVm aW5vdmFubyAxNTAwCW1pbmltYWxuaSBjYXMgcG8ga3Rlcnkgc2UgYnVkZSBzbmlt ZWsgem9icmF6b3ZhdDsNCglodi5hZGRWYXJpYWJsZSgic3RhcnRBZnRlckNsaWNr IiwgdHJ1ZSk7CQkJLy8gbmVwb3Zpbm5lIC0gcHJlZGRlZmlub3Zhbm8gdHJ1ZQl1 cmN1amUgemRhIHNlIG1hIHByZXplbnRhY2Ugc3B1c3RpdCBheiBwbyBrbGlrdSBu ZWJvIG5lOw0KDQoJaHYuYWRkVmFyaWFibGUoInNsaWRlc2hvd1ZvbHVtZU1heCIs IDIwMCk7CQkJLy8gbmVwb3Zpbm5lIC0gcHJlZGRlZmlub3Zhbm8gMjAwCW1heGlt YWxuaSBob2Rub3RhIGhsYXNpdG9zdGkgdiAlOw0KCWh2LmFkZFZhcmlhYmxlKCJz bGlkZXNob3dWb2x1bWVNaW4iLCAwKTsJCQkvLyBuZXBvdmlubmUgLSBwcmVkZGVm aW5vdmFubyAwCQltaW5pbWFsbmkgaG9kbm90YSBobGFzaXRvc3RpIHYgJTsNCglo di5hZGRWYXJpYWJsZSgic2xpZGVzaG93Vm9sdW1lU3RhcnQiLCAxMDApOwkJCS8v IG5lcG92aW5uZSAtIHByZWRkZWZpbm92YW5vIDEwMAl2eWNob3ppIGhvbm90YSBo bGFzaXRvc3RpIHYgJTsNCg0KCWh2LmFkZFZhcmlhYmxlKCJ2aXNpdFVybCIsICJo dHRwOi8vIiArIEdldFVybEJhc2UoKSArIHZpc2l0VXJsKTsJLy8gImh0dHA6Ly8i ICsgR2V0VXJsQmFzZSgpICsgIi9jei9zMjc0MyIpOwkvLyBuZXBvdmlubmUgLSBh ZHJlc2EgcHJvIG9kZXNpbGFuaSBuYXZzdGV2eSBkb2t1bWVudHU7DQoJaHYuYWRk VmFyaWFibGUoInZpc2l0VGFyZ2V0IiwgdmlzaXRUYXJnZXQpOwkJCQkJCQkJCQkv LyBwb3Zpbm5lIC0gaWQgZnJhbXUga2FtIHNlIG1hIHN0cmFua2Egb3RldmlyYXQ7 DQoJaHYuYWRkVmFyaWFibGUoInZpc2l0Rmlyc3QiLCBmYWxzZSk7CQkJCS8vIG5l cG92aW5uZSBwcmVkZGVmaW5vdmFubyAiZmFsc2UiCQl0cnVlL2ZhbHNlIC0gb2Rl c2xlL25lb2Rlc2xlIGkgbmF2c3RldnUgcHJ2bmlobyB6b2JyYXplbmVobyBkb2t1 bWVudHU7DQoNCglodi5hZGRWYXJpYWJsZSgicHJlbG9hZFByb3RlY3QiLCJwcmVs b2FkcHJvdGVjdD0iK01hdGgucm91bmQoTWF0aC5yYW5kb20oKSoxMDAwMCkpOwkv LyBuZXBvdmlubmUgLSB2eWdlbmVydWplIG5haG9kbmUgY2lzbG8sIGt0ZXJlIHNl IHByaWRhIG5hIGtvbmVjIHByaSB2b2xhbmkga29uZWt0b3J1Ow0KDQoJaHYuYWRk VmFyaWFibGUoInhtbF9zcmMiLCB4bWxTcmMpOwkJLy8gcG92aW5uZSAJCQkJY2Vz dGEgayBYTUwgc291Ym9ydSAtIHR5cHx4fGNlc3RhOw0KDQoJaHYud3JpdGUoImZs YXNoRnV0dXIiKTsNCn0NCg0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0gZnV0dXJvb206IG1wMyBwbGF5ZXIgPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0g Ki8NCg0KZnVuY3Rpb24gZnV0RGV0YWlsTXVsdGltZWRpYUF1ZGlvKGZpbGVQYXRo LCB4bWxTcmMsIHZpc2l0VXJsLCB2aXNpdFRhcmdldCl7DQoJdmFyIGZsYXNoV2lk dGggPSAyMDA7CQkJCQkvLyDFocOtxZlrYSBnYWxlcmllIC0gc2Nob2Ruw6EgcyBk ZWZpbmljw60gU1dGT2JqZWN0Ow0KCXZhciBmbGFzaEhlaWdodCA9IDE5OwkJCQkJ Ly8gdsO9xaFrYSBnYWxlcmllIC0gc2Nob2Ruw6EgcyBkZWZpbmljw60gU1dGT2Jq ZWN0Ow0KDQoJdmFyIG1wID0gbmV3IFNXRk9iamVjdChmbGFzaFNyY18wNiwgIm1w M3BsYXllciIsZmxhc2hXaWR0aCwgZmxhc2hIZWlnaHQsICI4IiwgIiNGRkZGRkYi KTsNCg0KCW1wLmFkZFZhcmlhYmxlKCJhbGxvd0Z1bGxTY3JlZW4iLCB0cnVlKTsN Cg0KCW1wLmFkZFZhcmlhYmxlKCJ3bW9kZSIsICJ0cmFuc3BhcmVudCIpOw0KCW1w LmFkZFZhcmlhYmxlKCJzY3JXIixmbGFzaFdpZHRoKTsNCgltcC5hZGRWYXJpYWJs ZSgic2NySCIsZmxhc2hIZWlnaHQpOw0KDQoJbXAuYWRkVmFyaWFibGUoInNlcDEi LCAifHh8Iik7CQkJCS8vIHBvdmlubmUgLSBwcmVkZGVmaW5vdmFubyB8eHwJCXNl cGFyYXRvciBwcnZuaSB1cm92bmU7DQoJbXAuYWRkVmFyaWFibGUoInNlcDIiLCAi fCIpOwkJCQkvLyBwb3Zpbm5lIC0gcHJlZGRlZmlub3Zhbm8gfAkJc2VwYXJhdG9y IGRydWhlIHVyb3ZuZTsNCg0KCW1wLmFkZFZhcmlhYmxlKCJ0aHVtYnNWaXNpYmxl IiwgZmFsc2UpOwkJCS8vIG5lcG92aW5uZSAtIHByZWRkZWZpbm92YW5vIHRydWUJ em9icmF6b3ZhdCBuYWhsZWR5Ow0KCW1wLmFkZFZhcmlhYmxlKCJuYXZpVmlzaWJs ZSIsIGZhbHNlKTsJCQkvLyBuZXBvdmlubmUgLSBwcmVkZGVmaW5vdmFubyB0cnVl CXpvYnJhem92YXQgZG9sbmkgbmF2aWdhY2k7DQoJbXAuYWRkVmFyaWFibGUoIm5h dmlWaWRlb1Zpc2libGUiLCB0cnVlKTsJCS8vIG5lcG92aW5uZSAtIHByZWRkZWZp bm92YW5vIHRydWUJem9icmF6b3ZhdCBuYXZpZ2F2aSBrIHByZWhyYXZhbmk7DQoJ bXAuYWRkVmFyaWFibGUoIm5hdmlGdWxsc2NyZWVuZXJWaXNpYmxlIiwgZmFsc2Up OwkvLyBuZXBvdmlubmUgLSBwcmVkZGVmaW5vdmFubyB0cnVlCXpvYnJhem92YXQg aWtvbnUgZnVsbHNjcmVlbiB2IG5hdmlnYWNuaSBsaXN0ZQ0KDQoJbXAuYWRkVmFy aWFibGUoIm1haW5QYWRkaW5nIiwgIjB8MCIpOwkJCS8vIG5lcG92aW5uZSAtIHBy ZWRkZWZpbm92YW5vIHRydWUJb2RzYXplbmkgb2Qgb2tyYWplIHN0cmFua3k7DQoN CgltcC5hZGRWYXJpYWJsZSgiYmlnQlciLCAwKTsJCQkJLy8gbmVwb3Zpbm5lIC0g cHJlZGRlZmlub3Zhbm8gMQkJdGxvdXN0a2EgcmFtZWNlayBva29sbyBkZXRhaWx1 Ow0KDQoJbXAuYWRkVmFyaWFibGUoImZpbGVQYXRoIiwgZmlsZVBhdGgpOwkJCQkv LyBuZXBvdmlubmUgLSBwcmVkZGVmaW5vdmFubyAiIgljZXN0YSBrIGFkcmVzYXJp IHNvdWJvcnU7DQoNCgltcC5hZGRWYXJpYWJsZSgic2xpZGVzaG93TmF2aUJhY2tn cm91bmQiLCAiRkZGRkZGfHh8NjUiKTsJLy8gbmVwb3Zpbm5lIC0gcHJlZGRlZmlu b3Zhbm8JCWJhcnZhIHBvemFkaSBuYXZpZ2FjZSBrIHByZWhyYXZhbmk7DQoJbXAu YWRkVmFyaWFibGUoInNsaWRlc2hvd05hdmlCb3JkZXIiLCAiRkYwMDAwfDF8MHww fDAiKTsJLy8gbmVwb3Zpbm5lIC0gcHJlZGRlZmlub3Zhbm8JCW9yYW1vdmFuaSBu YXZpZ2FjZSBrIHByZWhyYXZhbmk7DQoJbXAuYWRkVmFyaWFibGUoInNsaWRlc2hv d05hdmlQYWRkaW5nIiwgIjV8NSIpOwkJCS8vIG5lcG92aW5uZSAtIHByZWRkZWZp bm92YW5vCQlvZHNhemFzZW5pIHBydmt1IHYgbmF2aWdhY2kgayBwcmVocmF2YW5p Ow0KCW1wLmFkZFZhcmlhYmxlKCJzbGlkZXNob3dOYXZpTGluZUhlaWdodCIsIDgp OwkJCS8vIG5lcG92aW5uZSAtIHByZWRkZWZpbm92YW5vCQl2eXNrYSBwcnZrdSBu YXZpa2FjZSBrIHByZWhyYXZhbmkgLSB6YXRpbSBuZWZ1bmtjbmk7DQoJbXAuYWRk VmFyaWFibGUoInNsaWRlc2hvd05hdmlDb2xvcnMiLCAiQ0NDQ0NDfEVFRUVFRXww MDZGQzUiKTsJLy8gbmVwb3Zpbm5lIC0gcHJlZGRlZmlub3Zhbm8JCWJhcnZ5IHBy dmt1IG5hdmlnYWNlOw0KDQoJbXAuYWRkVmFyaWFibGUoInN0YXJ0QWZ0ZXJDbGlj ayIsIHRydWUpOwkJCS8vIG5lcG92aW5uZSAtIHByZWRkZWZpbm92YW5vIHRydWUJ dXJjdWplIHpkYSBzZSBtYSBwcmV6ZW50YWNlIHNwdXN0aXQgYXogcG8ga2xpa3Ug bmVibyBuZTsNCg0KCW1wLmFkZFZhcmlhYmxlKCJzbGlkZXNob3dWb2x1bWVNYXgi LCAyMDApOwkJCS8vIG5lcG92aW5uZSAtIHByZWRkZWZpbm92YW5vIDIwMAltYXhp bWFsbmkgaG9kbm90YSBobGFzaXRvc3RpIHYgJTsNCgltcC5hZGRWYXJpYWJsZSgi c2xpZGVzaG93Vm9sdW1lTWluIiwgMCk7CQkJLy8gbmVwb3Zpbm5lIC0gcHJlZGRl Zmlub3Zhbm8gMAkJbWluaW1hbG5pIGhvZG5vdGEgaGxhc2l0b3N0aSB2ICU7DQoJ bXAuYWRkVmFyaWFibGUoInNsaWRlc2hvd1ZvbHVtZVN0YXJ0IiwgMTAwKTsJCQkv LyBuZXBvdmlubmUgLSBwcmVkZGVmaW5vdmFubyAxMDAJdnljaG96aSBob25vdGEg aGxhc2l0b3N0aSB2ICU7DQoNCgltcC5hZGRWYXJpYWJsZSgidmlzaXRVcmwiLCAi aHR0cDovLyIgKyBHZXRVcmxCYXNlKCkgKyB2aXNpdFVybCk7CS8vICJodHRwOi8v IiArIEdldFVybEJhc2UoKSArICIvY3ovczI3NDMiKTsJLy8gbmVwb3Zpbm5lIC0g YWRyZXNhIHBybyBvZGVzaWxhbmkgbmF2c3RldnkgZG9rdW1lbnR1Ow0KCW1wLmFk ZFZhcmlhYmxlKCJ2aXNpdFRhcmdldCIsIHZpc2l0VGFyZ2V0KTsJCQkJCQkJCQkJ Ly8gcG92aW5uZSAtIGlkIGZyYW11IGthbSBzZSBtYSBzdHJhbmthIG90ZXZpcmF0 Ow0KCW1wLmFkZFZhcmlhYmxlKCJ2aXNpdEZpcnN0IiwgZmFsc2UpOwkJCQkvLyBu ZXBvdmlubmUgcHJlZGRlZmlub3Zhbm8gImZhbHNlIgkJdHJ1ZS9mYWxzZSAtIG9k ZXNsZS9uZW9kZXNsZSBpIG5hdnN0ZXZ1IHBydm5paG8gem9icmF6ZW5laG8gZG9r dW1lbnR1Ow0KDQoJbXAuYWRkVmFyaWFibGUoInByZWxvYWRQcm90ZWN0IiwicHJl bG9hZHByb3RlY3Q9IitNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkqMTAwMDApKTsJ Ly8gbmVwb3Zpbm5lIC0gdnlnZW5lcnVqZSBuYWhvZG5lIGNpc2xvLCBrdGVyZSBz ZSBwcmlkYSBuYSBrb25lYyBwcmkgdm9sYW5pIGtvbmVrdG9ydTsNCg0KCW1wLmFk ZFZhcmlhYmxlKCJ4bWxfc3JjIiwgeG1sU3JjKTsJCQkvLyBwb3Zpbm5lIAkJCQlj ZXN0YSBrIFhNTCBzb3Vib3J1IC0gdHlwfHh8Y2VzdGE7DQoNCgltcC53cml0ZSgi YXVkaW9fZGV0YWlsX3BsYXllciIpOw0KfQ0KDQoNCg0KLyogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gZnV0dXJvb206 IG11bHRpbWVkaWEgYm94IGZvciBnYWxsZXJpZXMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8NCg0KZnVuY3Rpb24g ZnV0TXVsdGltZWRpYUJveChwYXRoVG9YbWwsIGVsZW1lbnRJZFRvUGxhY2VJbikN CnsNCgl2YXIgcmFuZG9tZXIgPSBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkqMTAw MCk7DQoNCgl2YXIgc2NyVyA9IDY5NTsJCQkJCS8vIMWhw63FmWthIC0gc2Nob2Ru w6EgcyBkZWZpbmljw60gU1dGT2JqZWN0Ow0KCXZhciBzY3JIID0gMjMwOwkJCQkJ Ly8gdsO9xaFrYSAtIHNjaG9kbsOhIHMgZGVmaW5pY8OtIFNXRk9iamVjdDsNCg0K CXZhciBwciA9IG5ldyBTV0ZPYmplY3QoZmxhc2hTcmNfMTMsICJmdXRNdWx0aW1l ZGlhQm94XyIrIHJhbmRvbWVyICwgc2NyVywgc2NySCwgIjgiLCAiI0ZGRkZGRiIp Ow0KCXByLmFkZFZhcmlhYmxlKCJ3bW9kZSIsICJ0cmFuc3BhcmVudCIpOw0KDQoJ cHIuYWRkVmFyaWFibGUoInNjclciLCBzY3JXKTsNCglwci5hZGRWYXJpYWJsZSgi c2NySCIsIHNjckgpOw0KDQoJcHIuYWRkVmFyaWFibGUoIlBhdGhUb1htbCIsIHBh dGhUb1htbCk7DQoNCglwci53cml0ZShlbGVtZW50SWRUb1BsYWNlSW4pOw0KfQ0K DQovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PSBuYXNlYWRyZXNhOiBtYXAgb2YgcmVnaW9ucyBIUCA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLw0KDQpm dW5jdGlvbiBuYV9tYXBfb2ZfcmVnaW9ucyhteV9zdGF0dXMpDQp7DQoJdmFyIHNj clcgPSA5OTY7CQkJCQkvLyDFocOtxZlrYSAtIHNjaG9kbsOhIHMgZGVmaW5pY8Ot IFNXRk9iamVjdDsNCgl2YXIgc2NySCA9IDM0NTsJCQkJCS8vIHbDvcWha2EgLSBz Y2hvZG7DoSBzIGRlZmluaWPDrSBTV0ZPYmplY3Q7DQoNCgl2YXIgcm0gPSBuZXcg U1dGT2JqZWN0KCIvZmlsZXMvZmxhc2gvbWFwX29mX3JlZ2lvbnNfMDEuc3dmIiwg InJlZ2lvbnNfbWFwIiAsIHNjclcsIHNjckgsICI4IiwgIiNGRkZGRkYiKTsNCgly bS5hZGRWYXJpYWJsZSgid21vZGUiLCAidHJhbnNwYXJlbnQiKTsNCg0KCXJtLmFk ZFZhcmlhYmxlKCJjYWxsX2Z1bmN0aW9uIiwgIm5hX21hcF9yZXNpemUiKTsNCg0K CXZhciBteV9zdGF0dXMgPSBnZXRDb29raWUoJ25hX2hwX3N0YXR1cycpOw0KDQoJ cm0uYWRkVmFyaWFibGUoInNldGNvb2tpZXNfZnVuY3Rpb24iLCAibWFwX3NldGNv b2tpZSIpOw0KCXJtLmFkZFZhcmlhYmxlKCJteV9zdGF0dXMiLCBteV9zdGF0dXMp OwkNCg0KCXJtLmFkZFZhcmlhYmxlKCJzY3JXIiwgc2NyVyk7DQoJcm0uYWRkVmFy aWFibGUoInNjckgiLCBzY3JIKTsNCg0KCXJtLmFkZFZhcmlhYmxlKCJteV9zdGF0 dXMiLCBteV9zdGF0dXMpOw0KDQoJcm0uYWRkVmFyaWFibGUoInRleHRfY2xvc2Vf bWFwIiwgInNrcsO9dCBtYXB1ICZndDsmZ3Q7Iik7DQoNCglybS5hZGRWYXJpYWJs ZSgidGV4dF9zMV8xIiwgIkFrdHXDoWxuw60gaW5mb3JtYWNlIGEgenByw6F2eSB6 IFZhxaFlaG8gcmVnaW9udSEiKTsNCglybS5hZGRWYXJpYWJsZSgidGV4dF9zMV8y IiwgInpvYnJheml0IHNlem5hbSB2xaFlY2ggcmVnaW9uxa8gJmd0OyZndDsiKTsN Cg0KCXJtLmFkZFZhcmlhYmxlKCJ0ZXh0XzEiLCAiVnliZXJ0ZSBzaSBzdsOpIHdl Ym92w6kgc3Ryw6Fua3kgYWt0dcOhbG7DrSBpbmZvcm1hY2UgYSB6cHLDoXZ5IHDF mcOtbW8geiBWYcWhZWhvIHJlZ2lvbnUhIik7DQoJcm0uYWRkVmFyaWFibGUoInRl eHRfbW9yZV9pbmZvIiwgIlbDrWNlIGluZm9ybWFjw60gJmd0OyZndDsmZ3Q7Iik7 DQoNCglybS5hZGRWYXJpYWJsZSgidGV4dF8yIiwgIlZ5YmVydGUgc2kgc3ZvamUg cmVnaW9uw6FsbsOtIHN0csOhbmt5OiIpOw0KCXJtLmFkZFZhcmlhYmxlKCJ0ZXh0 XzMiLCAiTmHFoWUgZGFsxaHDrSBwcm9qZWt0eToiKTsNCglybS5hZGRWYXJpYWJs ZSgidGV4dF80IiwgIjx1PjxhIGhyZWY9J2h0dHA6Ly93d3cuZnV0dXJvb20uY3on IHRhcmdldD0nX2JsYW5rJz53d3cuZnV0dXJvb20uY3o8L2E+PGJyLz48YSBocmVm PSdodHRwOi8vd3d3Lmp1bmlvcm9vbS5jeicgdGFyZ2V0PSdfYmxhbmsnPnd3dy5q dW5pb3Jvb20uY3o8L2E+PGJyLz48YSBocmVmPSdodHRwOi8vd3d3LmZ1dHVyb29t cHVibGlzaGluZy5jeicgdGFyZ2V0PSdfYmxhbmsnPnd3dy5mdXR1cm9vbXB1Ymxp c2hpbmcuY3o8L2E+PGJyLz48YSBocmVmPSdodHRwOi8vd3d3LnBvbGl0aWtvbWVy LmN6JyB0YXJnZXQ9J19ibGFuayc+d3d3LnBvbGl0aWtvbWVyLmN6PC9hPjxici8+ PGEgaHJlZj0naHR0cDovL3d3dy52aXp1YWxuZS5jeicgdGFyZ2V0PSdfYmxhbmsn Pnd3dy52aXp1YWxuZS5jejwvYT48L3U+Iik7DQoNCglybS5hZGRWYXJpYWJsZSgi Y2xvc2VyX2tyYWoiLCAiWnDEm3QgbmEgbWFwdSBjZWzDqSDEjFIiKTsNCglybS5h ZGRWYXJpYWJsZSgiY2xvc2VyX29rcmVzIiwgIlpwxJt0IG5hIG1hcHUga3JhamUi KTsNCg0KCXJtLmFkZFZhcmlhYmxlKCJzcmNfbWFwIiwgIi9maWxlcy9mbGFzaC9t YXBhX2NyLnN3ZiIpOw0KCXJtLmFkZFZhcmlhYmxlKCJzcmNfeG1sIiwgIi9maWxl cy9mbGFzaC9tYXBfb2ZfcmVnaW9ucy54bWwiKTsNCg0KDQoJcm0ud3JpdGUoIm1h cF9vZl9yZWdpb25zIik7DQp9DQoNCmZ1bmN0aW9uIG5hX21hcF9yZXNpemUoZmlu YWxfaGVpZ2h0LCBzdGF0dXMpew0KCXZhciBteWRhdGUgPSBuZXcgRGF0ZSgpCQkJ Ly9HZXQgdGhlIGN1cnJlbnQgdGltZSBhbmQgZGF0ZTsNCgl2YXIgc2V0ZGF0ZSA9 IG15ZGF0ZS5nZXRUaW1lKCk7CQkvL0dldCB0aGUgbWlsbGlzZWNvbmRzIHNpbmNl IEphbiAxLCAxOTcwOw0KCXNldGRhdGUgKz0gMzY1KjI0KjM2MDAqMTAwMDsJCS8v ZXhwaXJlcyBpbiAxIHllYXIobWlsbGlzZWNvbmRzKTsNCglteWRhdGUuc2V0VGlt ZShzZXRkYXRlKTsNCg0KCXZhciBteWRvbWFpbiA9IGRvY3VtZW50LmRvbWFpbjsN CglteWRvbWFpbiA9IG15ZG9tYWluLnN1YnN0cihteWRvbWFpbi5pbmRleE9mKCIu bmFzZWFkcmVzYSIpKTsNCg0KCWRvY3VtZW50LmNvb2tpZSA9ICJuYV9ocF9zdGF0 dXM9IitzdGF0dXMrIjsgZXhwaXJlcz0iK215ZGF0ZS50b0dNVFN0cmluZygpKyI7 IHBhdGg9LzsgZG9tYWluPSIrbXlkb21haW47DQoJR2V0T2JqKCJtYXBfb2ZfcmVn aW9ucyIpLnN0eWxlLmhlaWdodCA9IGZpbmFsX2hlaWdodCsicHgiOw0KfQ0KDQoN Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSov ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=general.js Content-Type: application/x-javascript; name=general.js Content-Location: http://teplice.naseadresa.cz/0000-Global/js/general.js Content-Transfer-Encoding: Base64 Ly8gVXNlZCBmdW5jdGlvbnMgLSBsYXllcnMsIG9iamVjdHMsIGV0Yw0KLy8gQ29w eXJpZ2h0IChDKSAyMDA0IEN5YmVyIFN0cmVhbSBUZWNobm9sb2d5IHMuci5vLg0K DQpmdW5jdGlvbiBicm93c2VyQ2hlY2soKSB7DQoJdGhpcy52ZXIgPSBuYXZpZ2F0 b3IuYXBwVmVyc2lvbjsNCgl0aGlzLmFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2Vu dC50b0xvd2VyQ2FzZSgpOw0KCXRoaXMuZG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQ/MTowDQoJDQoJdGhpcy5vcDUgPSAodGhpcy5hZ2VudC5pbmRleE9mKCJv cGVyYSA1Iik+LTEgfHwgdGhpcy5hZ2VudC5pbmRleE9mKCJvcGVyYS81Iik+LTEp ICYmIHdpbmRvdy5vcGVyYSANCgl0aGlzLm9wNiA9ICh0aGlzLmFnZW50LmluZGV4 T2YoIm9wZXJhIDYiKT4tMSB8fCB0aGlzLmFnZW50LmluZGV4T2YoIm9wZXJhLzYi KT4tMSkgJiYgd2luZG93Lm9wZXJhICAgDQoJdGhpcy5vcDcgPSAodGhpcy5hZ2Vu dC5pbmRleE9mKCJvcGVyYSA3Iik+LTEgfHwgdGhpcy5hZ2VudC5pbmRleE9mKCJv cGVyYS83Iik+LTEpICYmIHdpbmRvdy5vcGVyYSAgIA0KCXRoaXMub3AgPSAodGhp cy5vcDUgfHwgdGhpcy5vcDYgfHwgdGhpcy5vcDcpOw0KCXRoaXMuaWU1ID0gKHRo aXMuYWdlbnQuaW5kZXhPZigibXNpZSA1Iik+LTEgJiYgIXRoaXMub3A1ICYmICF0 aGlzLm9wNik7DQoJdGhpcy5pZTU1ID0gKHRoaXMuaWU1ICYmIHRoaXMuYWdlbnQu aW5kZXhPZigibXNpZSA1LjUiKT4tMSk7DQoJdGhpcy5pZTYgPSAodGhpcy5hZ2Vu dC5pbmRleE9mKCJtc2llIDYiKT4tMSAmJiAhdGhpcy5vcDUgJiYgIXRoaXMub3A2 KTsNCgl0aGlzLmllNCA9ICh0aGlzLmFnZW50LmluZGV4T2YoIm1zaWUiKT4tMSAm JiBkb2N1bWVudC5hbGwgJiYhdGhpcy5vcDUgJiYhdGhpcy5vcDYgJiYhdGhpcy5p ZTUmJiF0aGlzLmllNik7DQoJdGhpcy5pZSA9ICh0aGlzLmllNCB8fCB0aGlzLmll NSB8fCB0aGlzLmllNik7DQoJdGhpcy5tYWMgPSAodGhpcy5hZ2VudC5pbmRleE9m KCJtYWMiKT4tMSk7DQoJdGhpcy5uczYgPSAodGhpcy5hZ2VudC5pbmRleE9mKCJn ZWNrbyIpPi0xIHx8IHdpbmRvdy5zaWRlYmFyKTsNCgl0aGlzLm5zNCA9ICghdGhp cy5kb20gJiYgZG9jdW1lbnQubGF5ZXJzKT8xOjA7DQoJdGhpcy5ucyA9ICh0aGlz Lm5zNCB8fCB0aGlzLm5zNik7DQoJdGhpcy5idyA9ICh0aGlzLmllNiB8fCB0aGlz LmllNSB8fCB0aGlzLmllNCB8fCB0aGlzLm5zNCB8fCB0aGlzLm5zNiB8fCB0aGlz Lm9wNSB8fCB0aGlzLm9wNiB8fCB0aGlzLm9wNyk7DQoJdGhpcy51c2Vkb20gPSB0 aGlzLm5zNjsgLy9Vc2UgZG9tIGNyZWF0aW9uDQoJdGhpcy5yZXVzZSA9IHRoaXMu aWUgfHwgdGhpcy51c2Vkb207IC8vUmV1c2UgbGF5ZXJzDQoJdGhpcy5weCA9IHRo aXMuZG9tJiYhdGhpcy5vcDU/InB4IjoiIjsNCgkNCglyZXR1cm4gdGhpczsNCn0N Cg0KLy8gY2hlY2sgYnJvd3Nlcg0KYncgPSBuZXcgYnJvd3NlckNoZWNrKCk7DQp2 YXIgYnJvd3NlciA9IGJ3LmJ3Ow0KdmFyIElFYnJvd3NlciA9IGJ3LmllOw0KdmFy IE5TYnJvd3NlciA9IGJ3Lm5zOw0KDQovKiBmdW5jdGlvbiBmb3Igb25sb2FkIGV2 ZW50ICovDQpmdW5jdGlvbiBGT25Mb2FkKCkNCnsNCiAgbG9hZCgpOw0KCS8vIGNo ZWNrIGlmIGV4aXN0IGZ1bmN0aW9uDQoJaWYgKHR5cGVvZihTaG93RXJyb3IpID09 ICdmdW5jdGlvbicpDQoJCVNob3dFcnJvcigpOw0KCWlmICh0eXBlb2YocGxhY2VG bGFzaCkgPT0gJ2Z1bmN0aW9uJykNCgkJcGxhY2VGbGFzaCgpOw0KfQ0KDQpmdW5j dGlvbiBJZk51bGwoc3RyKSB7DQoJaWYgKHN0ciA9PSAnJyB8fCBzdHIgPT0gbnVs bCkNCgkJcmV0dXJuIHRydWU7DQoJZWxzZQ0KCQlyZXR1cm4gZmFsc2U7DQp9DQoN Ci8vIGRlZmluZSB1c2VkIGZ1bmN0aW9ucw0KZnVuY3Rpb24gaXNTdHJFbXB0eShz dHJGaWVsZCkgew0KCWZvciAodmFyIGludExvb3AgPSAwOyBpbnRMb29wIDwgc3Ry RmllbGQubGVuZ3RoOyBpbnRMb29wKyspDQoJCWlmIChzdHJGaWVsZC5jaGFyQXQo aW50TG9vcCkgIT0gIiAiKSANCgkJCXJldHVybiBmYWxzZTsNCglyZXR1cm4gdHJ1 ZTsNCn0NCg0KZnVuY3Rpb24gRlJlc2V0KHNGb3JtKQ0Kew0KCXZhciBvRm9ybSA9 IEdldEZvcm0oc0Zvcm0pOw0KCWlmIChvRm9ybSkNCgkJb0Zvcm0ucmVzZXQoKTsN Cn0NCgkJDQpmdW5jdGlvbiBHZXRPYmoobmFtZSkgew0KCWlmIChOU2Jyb3dzZXIp IHsNCgkJaWYgKGJ3Lm5zNikgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KG5hbWUpOw0KCQkJZWxzZSByZXR1cm4gZG9jdW1lbnQubGF5ZXJzW25hbWVdOw0K CX0gZWxzZSB7DQoJCXJldHVybiAoYncuaWU0P2RvY3VtZW50LmFsbChuYW1lKTpk b2N1bWVudC5nZXRFbGVtZW50QnlJZChuYW1lKSk7DQoJfQ0KfQ0KDQpmdW5jdGlv biBHZXRPYmpJbkZyYW1lKG5hbWVGcmFtZSwgbmFtZSkgew0KCXZhciBvYmpGcmFt ZSA9IEdldE9iamVjdEZyYW1lKG5hbWVGcmFtZSk7DQoJaWYgKG9iakZyYW1lKQ0K CXsNCgkJaWYgKE5TYnJvd3Nlcikgew0KCQkJaWYgKGJ3Lm5zNikgcmV0dXJuIG9i akZyYW1lLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5hbWUpOw0KCQkJCWVsc2Ug cmV0dXJuIG9iakZyYW1lLmRvY3VtZW50LmxheWVyc1tuYW1lXTsNCgkJfSBlbHNl IHsNCgkJCWlmIChidy5pZTQpDQoJCQkJcmV0dXJuIG9iakZyYW1lLmRvY3VtZW50 LmFsbChuYW1lKTsNCgkJCWVsc2UJDQoJCQkJcmV0dXJuIG9iakZyYW1lLmRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKG5hbWUpOw0KCQl9DQoJfQ0KfQ0KDQpmdW5jdGlv biBHZXRPYmpzKG5hbWUpIHsNCglpZiAoTlNicm93c2VyKSB7DQoJCWlmIChidy5u czYpIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZShuYW1lKTsNCgkJ CWVsc2UgcmV0dXJuIGRvY3VtZW50LmxheWVyc1tuYW1lXTsNCgl9IGVsc2Ugew0K CQlyZXR1cm4gKGJ3LmllND9kb2N1bWVudC5hbGwobmFtZSk6ZG9jdW1lbnQuZ2V0 RWxlbWVudHNCeU5hbWUobmFtZSkpOw0KCX0NCn0NCg0KZnVuY3Rpb24gR2V0T2Jq ZWN0RnJhbWUobmFtZSkgew0KCS8vIG5hY3Rlbmkgb2JqZWt0dSB6IGZyYW1lDQoJ dmFyIG9iakZyYW1lID0gZG9jdW1lbnQuZnJhbWVzKG5hbWUpOw0KCXJldHVybiBv YmpGcmFtZTsNCn0NCg0KZnVuY3Rpb24gR2V0T2JqU3R5bGUob2JqKSB7DQoJaWYg KE5TYnJvd3Nlcikgew0KCQlpZiAoYncubnM2KSByZXR1cm4gb2JqLnN0eWxlOw0K CQkJZWxzZSByZXR1cm4gb2JqOw0KCX0gZWxzZSB7DQoJCXJldHVybiBvYmouc3R5 bGU7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBHZXRGb3JtKG9iaikgew0KCXZhciBvRm9y bTsNCglpZiAoTlNicm93c2VyKSB7DQoJCW9Gb3JtID0gZXZhbCgnZG9jdW1lbnQu JytvYmopOw0KCX0NCgllbHNlIHsNCgkJb0Zvcm0gPSBkb2N1bWVudC5mb3Jtc1tv YmpdOw0KCX0NCglyZXR1cm4gb0Zvcm0NCn0NCg0KdmFyIGlOYW1lMkNsb3NlID0g IiI7DQp2YXIgYkF1dG9IaWRlID0gdHJ1ZTsNCmZ1bmN0aW9uIG9uKG5hbWUsdHh0 KSB7DQoJaWYgKGJyb3dzZXIpIHsNCgkJdmFyIG5hbWVYID0gbmFtZSArICdhJw0K CQlkb2N1bWVudC5pbWFnZXNbbmFtZV0uc3JjPWV2YWwobmFtZVgpLnNyYzsNCgkJ d2luZG93LnN0YXR1cyA9IHR4dDsNCgkJZG9jdW1lbnQucHJhdmRhID0gdHJ1ZTsN Cgl9DQp9DQoNCmZ1bmN0aW9uIG9mZihuYW1lKSB7DQoJaWYgKGJyb3dzZXIpIHsN CgkJZG9jdW1lbnQuaW1hZ2VzW25hbWVdLnNyYz1ldmFsKG5hbWUpLnNyYzsNCgkg IAl3aW5kb3cuc3RhdHVzID0gIiAiOw0KCQlkb2N1bWVudC5wcmF2ZGEgPSB0cnVl Ow0KCX0NCn0NCg0KZnVuY3Rpb24gUmVkZWZpbmVUYWcySHRtbChzdHIpIHsNCgl2 YXIgc3RyUmV0ID0gIiI7DQoJc3RyUmV0ID0gc3RyLnJlcGxhY2UoLzwvZywgIiZs dDsiKTsNCglzdHJSZXQgPSBzdHJSZXQucmVwbGFjZSgvPi9nLCAiJmd0OyIpOw0K CXN0clJldCA9IHN0clJldC5yZXBsYWNlKC8iL2csICImcXVvdDsiKTsNCglzdHJS ZXQgPSBzdHJSZXQucmVwbGFjZSgvXFwvZywgIiYjNDc7Iik7DQoJc3RyUmV0ID0g c3RyUmV0LnJlcGxhY2UoL1wvL2csICImIzkyOyIpOw0KCXN0clJldCA9IHN0clJl dC5yZXBsYWNlKC9cJy9nLCAiXFwnIik7DQoJcmV0dXJuIHN0clJldDsNCn0NCg0K ZnVuY3Rpb24gUmVkZWZpbmVVcmxTdHJpbmcoc3RyKSB7DQoJdmFyIHN0clJldCA9 ICIiOw0KCXN0clJldCA9IHN0ci5yZXBsYWNlKC8mL2csICIlMjYiKTsNCglzdHJS ZXQgPSBzdHJSZXQucmVwbGFjZSgvIC9nLCAiJTIwIik7DQoJc3RyUmV0ID0gc3Ry UmV0LnJlcGxhY2UoL1w/L2csICIlM0YiKTsNCgkNCglyZXR1cm4gc3RyUmV0Ow0K fQ0KDQpmdW5jdGlvbiBNZXJnZVVybFJlcXVlc3Qoc1VybCwgc1NVcmwpIHsNCglp ZiAoc1NVcmwgIT0gJycgJiYgc1NVcmwgIT0gJ1tzdXJsXScpIHsNCgkJaWYgKHNV cmwuaW5kZXhPZignPycpID09IC0xICYmIHNTVXJsLmluZGV4T2YoJz8nKSA9PSAt MSkgew0KCQkJLy8gbmVleGlzdHVqZSA/IC0gZG9wbG5pIHNlDQoJCQl2YXIgc0Nv bmQgPSAnPyc7DQoJCX0gZWxzZSB7DQoJCQkvLyBleGlzdHVqZSA/IC0gZG9wbG5p IHNlIHBvdXplICYNCgkJCXZhciBzQ29uZCA9ICcmJzsNCgkJCWlmIChzU1VybC5p bmRleE9mKCc/JykgIT0gLTEpIHsNCgkJCQl2YXIgc0NvbmQgPSAnJzsNCgkJCQlp ZiAoc1VybC5pbmRleE9mKCc/JykgIT0gLTEpIHsNCgkJCQkJLy8gamUgbnV0bmUg b2RzdHJhbmVuaSA/IHogcmV0ZXpjZSBzZWMudXJsDQoJCQkJCXNTVXJsID0gc1NV cmwucmVwbGFjZSgnPycsICcmJyk7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKHNTVXJs LmluZGV4T2YoJyYnKSAhPSAxICYmIHNVcmwuaW5kZXhPZignPycpPT0oc1VybC5s ZW5ndGgtMSkpIHZhciBzQ29uZCA9ICcnOw0KCQl9DQoJCXZhciBzQ29tcGxldGVV cmwgPSBzVXJsK3NDb25kK3NTVXJsOw0KCX0gZWxzZQ0KCQl2YXIgc0NvbXBsZXRl VXJsID0gc1VybDsNCgkvLyB2cmFjZW5pIGhvZG5vdHkNCglyZXR1cm4gc0NvbXBs ZXRlVXJsDQp9DQoNCmZ1bmN0aW9uIEdlbmVyYXRlVGltZVN0YW1wKCkgew0KCXZh ciBkID0gbmV3IERhdGUoKTsNCgl2YXIgcyA9IGQuZ2V0RnVsbFllYXIoKSsnJytk LmdldE1vbnRoKCkrJycrZC5nZXREYXkoKSsnJytkLmdldEhvdXJzKCkrJycrZC5n ZXRNaW51dGVzKCkrJycrZC5nZXRTZWNvbmRzKCkrJycrZC5nZXRNaWxsaXNlY29u ZHMoKTsNCglyZXR1cm4gczsNCn0NCg0KZnVuY3Rpb24gUmV0dXJuTW9kYWxPcGVu KHNDb21wbGV0ZVVybCwgc1RhcmdldCwgc1Byb3BlcnR5LCBzVGl0bGVJZCkgew0K CS8vIHVwcmF2aSBzZSBrb21wbGV0bmkgc3RyaW5nIHRhayBhYnkgYnlsbyBtb3pu ZSBwYWsgZGFub3Ugc3RyYW5rdQ0KCS8vIGplZG5vem5hY25lIG90ZXZyaXQgcG9t b2NpIGlmcmFtZSAtIGplIHRvIGt2dWxpIHNwcmF2bmVtdSBvZGVzaWxhbmkNCgkv LyBob2Rub3QgcG9tb2NpIG1vZGFsIG9rbmENCglzQ29tcGxldGVVcmwgPSBSZWRl ZmluZVVybFN0cmluZyhzQ29tcGxldGVVcmwpOw0KCXZhciBzdHJNb2RhbCA9IHN0 ckJhc2UgKydmb3Jtcy9tb2RhbC5hc3B4P3VybD0nKyBzQ29tcGxldGVVcmwgKycm dGl0bGVpZD0nKyBzVGl0bGVJZCArJyZ0aW1lc3RhbXA9JytHZW5lcmF0ZVRpbWVT dGFtcCgpOw0KCS8vIHByb3ZlZGUgc2Ugb3RldnJlbmkgb2tuYQ0KCXZhciBuZXdW YWx1ZSA9IHdpbmRvdy5zaG93TW9kYWxEaWFsb2coc3RyTW9kYWwsIHNUYXJnZXQs IHNQcm9wZXJ0eSk7DQoJLy8gdnJhY2VuaSBob2Rub3R5DQoJcmV0dXJuIG5ld1Zh bHVlOw0KfQ0KDQoNCmZ1bmN0aW9uIE1vZGFsT3BlbihzVXJsLCBzVGFyZ2V0LCBz UHJvcGVydHksIHNUaXRsZUlkLCBzU1VybCkgew0KCS8vIGRlZmlub3ZhbmkgY2Vs a292ZWhvIHVybA0KCWlmICh0eXBlb2Yoc1NVcmwpICE9ICd1bmRlZmluZWQnKSB7 DQoJCXZhciBzQ29tcGxldGVVcmwgPSBNZXJnZVVybFJlcXVlc3Qoc1VybCwgc1NV cmwpDQoJfSBlbHNlDQoJCXZhciBzQ29tcGxldGVVcmwgPSBzVXJsOw0KCQ0KCS8v IHZyYWNlbmkgaG9kbm90eQ0KCXZhciBuZXdWYWx1ZSA9IFJldHVybk1vZGFsT3Bl bihzQ29tcGxldGVVcmwsIHNUYXJnZXQsIHNQcm9wZXJ0eSwgc1RpdGxlSWQpDQoJ DQoJaWYgKCFJZk51bGwobmV3VmFsdWUpKSB7DQoJCS8vIHJlZnJlc2ggZGFuZWhv IG9rbmENCgkJc3dpdGNoIChuZXdWYWx1ZSkgew0KCQkJY2FzZSAiMCI6DQoJCQlj YXNlIDA6DQoJCQkJLy8gbmljIHNlIG5lcHJvdmVkZQ0KCQkJCWJyZWFrOw0KCQkJ Y2FzZSAiMSI6DQoJCQljYXNlIDE6DQoJCQkJLy8gcmVmcmVzaCBva25hDQoJCQkJ ZG9jdW1lbnQubG9jYXRpb24ucmVsb2FkKCk7DQoJCQkJYnJlYWs7DQoJCQljYXNl ICIyIjoNCgkJCWNhc2UgMjoNCgkJCQkvLyBwcm92ZWRlIHNlIGRvcGxuZW5pIHNl YXJjaD0xIGRvIHBhcmFtZXRydSBzdHJhbmt5DQoJCQkJdmFyIHNBY3RVcmwgPSBk b2N1bWVudC5sb2NhdGlvbi5ocmVmOw0KCQkJCWlmIChzQWN0VXJsLmluZGV4T2Yo Jz8nKSA9PSAtMSkgew0KCQkJCQlzQWN0VXJsICs9ICI/c2VhcmNoPTEiOw0KCQkJ CX0gZWxzZSB7DQoJCQkJCXNBY3RVcmwgKz0gIiZzZWFyY2g9MSI7DQoJCQkJfQ0K CQkJCWRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBzQWN0VXJsOw0KCQkJCWJyZWFr Ow0KCQkJY2FzZSAiMyI6DQoJCQljYXNlIDM6DQoJCQkJLy8gbmljIHNlIG5lcHJv dmVkZQ0KCQkJCWJyZWFrOw0KCQkJZGVmYXVsdDoNCgkJCQkvLyBrbGFzaWNrZSB6 b2JyYXplbmkgc3RyYW5reSAtIGRsZSBkZWZpbm92YW5laG8gdXJsDQoJCQkJZG9j dW1lbnQubG9jYXRpb24uaHJlZiA9IG5ld1ZhbHVlOw0KCQkJCWJyZWFrDQoJCX0N Cgl9DQp9DQoNCmZ1bmN0aW9uIENvbmZpcm1EZWxldGUoc0Vycm9yLCBvYmopDQp7 DQoJaWYgKG9iaikNCgl7DQoJCXZhciBzQnRuTmFtZSA9IG9iai5uYW1lOw0KCQl2 YXIgYSA9IHdpbmRvdy5jb25maXJtKHNFcnJvcik7DQoJCWlmIChhKSB7DQoJCQlf X2RvUG9zdEJhY2soc0J0bk5hbWUsJycpOw0KCQl9DQoJCWVsc2Ugew0KCQkJcmV0 dXJuIGZhbHNlOw0KCQl9DQoJfQ0KCWVsc2UNCgkJcmV0dXJuIGZhbHNlOw0KfQ0K DQpmdW5jdGlvbiBVcGxvYWRGaWxlKGFEaXIsIHNOYW1lKQ0Kew0KCXZhciB1cmwg PSBzdHJCYXNlUmVmICsnZm9ybXMvZmlsZXVwbG9hZC5hc3B4P3JldHVybj0xJmRp cj0nK2FEaXI7DQoJdmFyIG5ld1ZhbHVlID0gUmV0dXJuTW9kYWxPcGVuKHVybCwg J19ibGFuaycsICdkaWFsb2dIZWlnaHQ6MTY1cHg7ZGlhbG9nV2lkdGg6NDIzcHg7 Y2VudGVyOnllcztoZWxwOm5vO3Njcm9sbDpubztyZXNpemFibGU6bm87c3RhdHVz Om5vJywgJzEwMjknKTsNCgkvLyB6aXNrYW5pIG9iamVrdHUNCgl2YXIgb2JqID0g R2V0T2JqKHNOYW1lKTsNCglpZiAodHlwZW9mKG5ld1ZhbHVlKSA9PSAndW5kZWZp bmVkJykNCgkJcmV0dXJuOw0KCWlmIChvYmogJiYgbmV3VmFsdWUhPScnICYmIG5l d1ZhbHVlIT0nMScpDQoJCW9iai52YWx1ZSA9IG5ld1ZhbHVlOw0KfQ0KDQpmdW5j dGlvbiBTaG93SGlkZGVuRmluZEZvcm0oKQ0Kew0KCXZhciBvYmpGRm9ybSA9IEdl dE9iaignZGl2Rm9ybUZpbmQnKTsNCglpZiAob2JqRkZvcm0pDQoJew0KCQlpZiAo b2JqRkZvcm0uc3R5bGUuZGlzcGxheSA9PSAibm9uZSIpDQoJCQlvYmpGRm9ybS5z dHlsZS5kaXNwbGF5ID0gIiI7DQoJCWVsc2UNCgkJCW9iakZGb3JtLnN0eWxlLmRp c3BsYXkgPSAibm9uZSI7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBHZXRTZWxlY3RlZEl0 ZW1Gcm9tU2VsZWN0KG9iaikNCnsNCglpZiAob2JqKSB7DQoJCWlmIChvYmoubGVu Z3RoID4gMCkgew0KCQkJdmFyIGlJbmRleCA9IG9iai5zZWxlY3RlZEluZGV4Ow0K CQkJaWYgKGlJbmRleCA+IC0xKQ0KCQkJCXJldHVybiBvYmpbaUluZGV4XTsNCgkJ fQ0KCX0NCn0NCg0KZnVuY3Rpb24gR2V0VmFsdWVGcm9tU2VsZWN0KG9iaikNCnsN Cgl2YXIgb2JqID0gR2V0U2VsZWN0ZWRJdGVtRnJvbVNlbGVjdChvYmopOw0KCWlm IChvYmopDQoJCXJldHVybiBvYmoudmFsdWU7DQoJcmV0dXJuICIiOw0KfQ0KDQpm dW5jdGlvbiBHZXRUZXh0RnJvbVNlbGVjdChvYmopDQp7DQoJdmFyIG9iaiA9IEdl dFNlbGVjdGVkSXRlbUZyb21TZWxlY3Qob2JqKTsNCglpZiAob2JqKQ0KCQlyZXR1 cm4gb2JqLnRleHQ7DQoJcmV0dXJuICIiOw0KfQ0KDQpmdW5jdGlvbiBTZXRJbnB1 dEZyb21TZWxlY3QoaW5wdXROYW1lLCBzZWxlY3ROYW1lLCB0ZXh0KQ0Kew0KCXZh ciBvYmpJbnAgPSBHZXRPYmooaW5wdXROYW1lKTsNCgl2YXIgb2JqU2VsID0gR2V0 T2JqKHNlbGVjdE5hbWUpOw0KCWlmIChvYmpJbnAgJiYgb2JqU2VsKQ0KCXsNCgkJ dmFyIHZhbCA9ICcnOw0KCQl2YXIgdmFsSSA9IEdldFZhbHVlRnJvbVNlbGVjdChv YmpTZWwpDQoJCWlmICh0ZXh0KSB2YWwgPSAodmFsST4tMT9HZXRUZXh0RnJvbVNl bGVjdChvYmpTZWwpOicnKTsNCgkJCWVsc2UgdmFsID0gdmFsSTsNCgkJLy8gc2V0 IHZhbHVlDQoJCW9iaklucC52YWx1ZSA9IHZhbDsNCgl9DQp9DQoNCmZ1bmN0aW9u IEdldFJlcGxhY2VkQ2hhckZvck51bWJlcigpDQp7DQoJdmFyIG9OdW0gPSBuZXcg TnVtYmVyKDAsMSk7DQoJaWYgKG9OdW0gPT0gMCkNCgkJcmV0dXJuICIuIjsNCgll bHNlDQoJCXJldHVybiAiLCI7DQp9DQp2YXIgc1JlcGxhY2VkTnVtYmVyQ2hhciA9 IEdldFJlcGxhY2VkQ2hhckZvck51bWJlcigpOw0KDQpmdW5jdGlvbiBSZXR1cm5G bG9hdCh2YWx1ZSkNCnsNCglpZiAodmFsdWUgIT0gIiIpDQoJew0KCQlpZiAoc1Jl cGxhY2VkTnVtYmVyQ2hhciA9PSAnLicpDQoJCQl2YWx1ZSA9IHZhbHVlLnJlcGxh Y2UoJywnLCAnLicpOw0KCQllbHNlDQoJCQl2YWx1ZSA9IHZhbHVlLnJlcGxhY2Uo Jy4nLCAnLCcpOw0KCQlyZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZSk7DQoJfQ0KCXJl dHVybiAwOw0KfQ0KDQpmdW5jdGlvbiBSb3VuZE51bWJlcihudW0pDQp7DQoJcmV0 dXJuIFJvdW5kTnVtYmVyQ250KG51bSwgMTAwKTsNCn0NCg0KZnVuY3Rpb24gUm91 bmROdW1iZXJDbnQobnVtLCBjbnQpDQp7DQoJdmFyIG9OdW0gPSBuZXcgTnVtYmVy KG51bSk7DQoJcmV0dXJuIE1hdGgucm91bmQob051bSpjbnQpL2NudDsNCn0NCg0K ZnVuY3Rpb24gUm91bmREUEgoZHBoKQ0Kew0KCXZhciBpRHBoID0gcGFyc2VJbnQo ZHBoKTsNCgl2YXIgaU51bSA9IChkcGggLyAoMTAwK2lEcGgpKTsNCgl2YXIgc051 bSA9IGlOdW0udG9TdHJpbmcoKS5zdWJzdHJpbmcoMCw2KTsNCglyZXR1cm4gcGFy c2VGbG9hdChzTnVtKTsNCn0NCg0KLy8gemlza2FuaSBpbmRleHUgdiBwb2xpDQpm dW5jdGlvbiBHZXRJbmRleDRBcnJheShuYW1lKQ0Kew0KCWlmIChhcnJSZWxhdGlv bi5sZW5ndGggPiAwKQ0KCQlmb3IgKGkgPSAwOyBpIDwgYXJyUmVsYXRpb24ubGVu Z3RoOyBpKyspDQoJCXsNCgkJCXZhciBzTmFtZSA9IGFyclJlbGF0aW9uW2ldWzBd Ow0KCQkJaWYgKHNOYW1lID09IG5hbWUpIA0KCQkJew0KCQkJCXJldHVybiBpOw0K CQkJfQ0KCQl9DQoJcmV0dXJuIC0xOw0KfQ0KDQovLyB6aXNrYW5pIHphem5hbXUN CmZ1bmN0aW9uIEdldFZhbHVlNEFycmF5KG5hbWUpDQp7DQoJdmFyIGkgPSBHZXRJ bmRleDRBcnJheShuYW1lKTsNCgkNCgkvLyB2cmFjZW5pIGhvZG5vdHkNCglpZiAo aSA9PSAtMSkNCgkJcmV0dXJuIG51bGw7DQoJZWxzZQ0KCQlyZXR1cm4gYXJyUmVs YXRpb25baV1bMV07DQp9DQoNCi8vIG5hc3RhdmVuaSBob2Rub3R5IHBybyBjb21i bw0KZnVuY3Rpb24gU2VsZWN0VmFsdWVJbkNvbWJvKG9iaiwgdmFsdWUpDQp7DQoJ aWYgKG9iaikNCgl7DQoJCWZvcih2YXIgaSA9IDA7IGkgPCBvYmoub3B0aW9ucy5s ZW5ndGg7IGkrKykgeyANCgkJCW9iai5vcHRpb25zW2ldLnNlbGVjdGVkID0gZmFs c2U7DQoJCQlpZiAob2JqLm9wdGlvbnNbaV0udmFsdWUgPT0gdmFsdWUpIHsNCgkJ CQlvYmoub3B0aW9uc1tpXS5zZWxlY3RlZCA9IHRydWU7DQoJCQl9DQoJCX0NCgl9 DQp9DQoNCi8vIHZsb3plbmkgemF6bmFtdQ0KZnVuY3Rpb24gU2V0VmFsdWUyQXJy YXkobmFtZSwgdmFsdWUpDQp7DQoJdmFyIGkgPSBHZXRJbmRleDRBcnJheShuYW1l KTsNCglpZiAoaSA9PSAtMSkNCgl7DQoJCS8vIHZsb3plbmkgaG9kbm90eQ0KCQl2 YXIgX2l0ZW0gPSBuZXcgQXJyYXkoMSk7DQoJCV9pdGVtWzBdID0gbmFtZTsNCgkJ X2l0ZW1bMV0gPSB2YWx1ZTsNCgkJYXJyUmVsYXRpb24ucHVzaChfaXRlbSk7DQoJ fQ0KCWVsc2UNCgl7DQoJCWFyclJlbGF0aW9uW2ldWzFdID0gdmFsdWU7DQoJfQ0K fQ0KDQovL2NyZWF0ZSBwb3AgdXAgd2luZG93ICh3aXRob3V0IGFueXRoaW5nKQ0K ZnVuY3Rpb24gcG9wVXBXaW5kb3coVVJMLCB3aWR0aFdpbmRvdywgaGVpZ2h0V2lu ZG93KSB7DQoJZGF5ID0gbmV3IERhdGUoKTsNCglpZCA9IGRheS5nZXRUaW1lKCk7 DQoJcG9zaXRpb25MZWZ0ID0gKChzY3JlZW4ud2lkdGggLSB3aWR0aFdpbmRvdykg LyAyKTsNCglwb3NpdGlvblRvcCA9ICgoc2NyZWVuLmhlaWdodCAtIGhlaWdodFdp bmRvdykgLyAyKTsNCglldmFsKCJwYWdlIiArIGlkICsgIiA9IHdpbmRvdy5vcGVu KFVSTCwgJyIgKyBpZCArICInLCAndG9vbGJhcj0wLHNjcm9sbGJhcnM9MCxsb2Nh dGlvbj0wLHN0YXR1c2Jhcj0wLG1lbnViYXI9MCxyZXNpemFibGU9MCx3aWR0aD0i KyB3aWR0aFdpbmRvdyArIixoZWlnaHQ9IisgaGVpZ2h0V2luZG93ICsiLGxlZnQ9 IisgcG9zaXRpb25MZWZ0ICsiLHRvcD0iKyBwb3NpdGlvblRvcCArIicpOyIpOw0K fQ0KDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQovKiBmcm9tIGNzdFdlYnNpdGUg ZGlyZWN0bHkgKi8NCg0KLy8gb24ga2V5IGRvd24gZnVuY3Rpb24NCmZ1bmN0aW9u IGV2ZW50X29ua2V5ZG93bigpDQp7DQoJc3dpdGNoIChldmVudC5rZXlDb2RlKQ0K CXsNCgkJY2FzZSAxMzoJLy9lbnRlcg0KCQl7DQoJCQkvLyBub3cgZ2V0IGluZm8g YWJvdXQgZmluZCBmb3JtIGlmIGV4aXN0IGFuZCBpZiBpcyBvcGVuZWQNCgkJCS8v IGlmIHllcyB0aGVuIGNsaWNrIG9uIHRoZSBidXR0b24gaW4gZmluZCBmb3JtDQoJ CQkvLyAxLiBnZXQgZmluZCBmb3JtIG9iamVjdA0KCQkJdmFyIGZvcm1PYmogPSBH ZXRPYmooJ2RpdkZvcm1GaW5kJyk7DQoJCQlpZiAoIWZvcm1PYmopDQoJCQkJYnJl YWs7DQoJCQkJDQoJCQlpZiAoZm9ybU9iai5zdHlsZS5kaXNwbGF5ID09ICIiKQ0K CQkJewkNCgkJCQlfX2RvUG9zdEJhY2soJ2J0bkZpbmQnLCAnJyk7DQoJCQl9DQoJ CQlicmVhazsNCgkJfQ0KCX0NCn0NCg0KLy8gY29udHJvbCBlbnRlcg0KdmFyIGJ0 blNlbmRGb3JtID0gdHJ1ZTsNCmZ1bmN0aW9uIGV2ZW50X2VudGVyKGV2ZW50LCBi dG5OYW1lKQ0Kew0KCXN3aXRjaCAoZXZlbnQua2V5Q29kZSkNCgl7DQoJCWNhc2Ug MTM6DQoJCXsNCgkJCS8vIHNlbmQgZm9ybQ0KCQkJYnRuU2VuZEZvcm0gPSBmYWxz ZTsNCgkJCWlmIChidG5OYW1lICE9ICcnKQ0KCQkJCV9fZG9Qb3N0QmFjayhidG5O YW1lLCAnJyk7DQoJCQlicmVhazsNCgkJfQ0KCX0NCn0NCg0KLy8gY2hlY2sgZXZl bnQNCmZ1bmN0aW9uIENoZWNrRXZlbnQoKQ0Kew0KCXJldHVybiBmYWxzZTsNCn0N Cg0KZnVuY3Rpb24gU2VuZExvZ2luKHNQYWdlVXJsKSB7DQoJdmFyIHRoZWZvcm0g PSBHZXRGb3JtKCdsb2dpbmZvcm0nKTsNCglpZiAodGhlZm9ybSkNCgl7DQoJCXZh ciBvYmpVc3IgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdMb2dpbkZv cm1fVXNlck5hbWUnKTsNCgkJdmFyIG9ialBzdyA9IHRoaXMuZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ0xvZ2luRm9ybV9QYXNzd29yZCcpOw0KCQlpZiAob2JqVXNy ICYmIG9ialBzdykNCgkJew0KCQkJdGhlZm9ybVtzVXNyTl0udmFsdWUgPSBvYmpV c3IudmFsdWUNCgkJCXRoZWZvcm1bc1Bzd05dLnZhbHVlID0gb2JqUHN3LnZhbHVl DQoJCQlpZiAodHlwZW9mKHNQYWdlVXJsKSAhPSAndW5kZWZpbmVkJykNCgkJCQl0 aGVmb3JtLlBhZ2VVcmwudmFsdWUgPSBzUGFnZVVybDsNCgkJCXRoZWZvcm0uc3Vi bWl0KCk7DQoJCX0NCgl9DQp9DQoNCnZhciBzTGFzdE5hbWUgPSAiIjsNCnZhciBz TGFzdFBhc3MgPSAiIjsNCmZ1bmN0aW9uIENsZWFyT25DbGljayhvYmopDQp7DQoJ aWYgKG9iaikNCgl7DQoJCWlmIChvYmoubmFtZSA9PSAnTG9naW5Gb3JtX1VzZXJO YW1lJykNCgkJCXNMYXN0TmFtZSA9IG9iai52YWx1ZTsNCgkJZWxzZQ0KCQkJc0xh c3RQYXNzID0gb2JqLnZhbHVlOw0KCQkJDQoJCW9iai52YWx1ZSA9ICcnOw0KCX0N Cn0NCg0KZnVuY3Rpb24gRmlsbE9mZkNsaWNrKG9iaikNCnsNCglpZiAob2JqKQ0K CXsNCgkJaWYgKG9iai52YWx1ZSA9PSAnJykNCgkJew0KCQkJaWYgKG9iai5uYW1l ID09ICdMb2dpbkZvcm1fVXNlck5hbWUnKQ0KCQkJCW9iai52YWx1ZSA9IHNMYXN0 TmFtZTsNCgkJCWVsc2UNCgkJCQlvYmoudmFsdWUgPSBzTGFzdFBhc3M7DQoJCX0N Cgl9DQp9DQoNCmZ1bmN0aW9uIE9wZW5DYWxlbmRhcihzT2JqLCBzVHlwZSkgew0K CXZhciBvYmo7DQoJaWYgKHR5cGVvZihzT2JqKT09J29iamVjdCcpDQoJCW9iaiA9 IHNPYmo7DQoJZWxzZQ0KCQlvYmogPSBHZXRPYmooc09iaik7DQoJCQ0KCWlmIChv YmogJiYgSUVicm93c2VyKSB7DQoJCXZhciB1cmwgPSBzdHJCYXNlUmVmICsnZm9y bXMvY2FsZW5kYXIuYXNweD90eXBlPScrc1R5cGUrJyZ2YWw9JytvYmoudmFsdWU7 DQoJCXZhciByZXRWYWx1ZSA9IFJldHVybk1vZGFsT3Blbih1cmwsJ19ibGFuaycs J2RpYWxvZ0hlaWdodDoyMzVweDtkaWFsb2dXaWR0aDoyMDZweDtjZW50ZXI6eWVz O2hlbHA6bm87c2Nyb2xsOm5vO3Jlc2l6YWJsZTpubztzdGF0dXM6bm8nLCAnMTAy NycpOw0KCQlpZiAodHlwZW9mKHJldFZhbHVlKSE9J3VuZGVmaW5lZCcpIHsNCgkJ CS8vIGNoYW5nZSByZXR1cm4gdmFsdWUNCgkJCXZhciBhVmFsID0gb2JqLnZhbHVl LnNwbGl0KCcgJyk7DQoJCQlpZiAob2JqLnZhbHVlICE9JycgJiYgYVZhbFsxXSE9 JycgJiYgdHlwZW9mKGFWYWxbMV0pIT0gJ3VuZGVmaW5lZCcpIHsNCgkJCQlvYmou dmFsdWUgPSByZXRWYWx1ZSArJyAnKyBhVmFsWzFdOw0KCQkJfSBlbHNlIHsNCgkJ CQl2YXIgYWN0ID0gbmV3IERhdGUoKTsNCgkJCQlvYmoudmFsdWUgPSByZXRWYWx1 ZTsNCgkJCX0NCgkJfQ0KCX0NCn0NCg0KZnVuY3Rpb24gT3BlbkxvZ2luKG9wZW4p IHsNCgkvLyBvcGVuIGxvZ29uIHdpbmRvdw0KCXdpbmRvdy5vcGVuKHN0ckJhc2VS ZWYgKydmb3Jtcy9sb2dvbi5hc3B4JywgJycsICdoZWlnaHQ9MTYwLHdpZHRoPTI4 MCxzdGF0dXM9bm8sdG9vbGJhcj1ubyxtZW51YmFyPW5vLGxvY2F0aW9uPW5vLHJl c2l6YWJsZT1ubyxyZXNpemFibGU9bm8sY2VudGVyPXllcyx0b3A9MzAwLGxlZnQ9 MzAwJyk7DQp9DQoNCmZ1bmN0aW9uIE9wZW5PbmVTdG9yZVN0YXR1cyh1cmwpIHsN CgkvLyBvcGVuIHN0b3JlIHN0YXR1cyB3aXRoIG9uZSBpdGVtDQoJd2luZG93Lm9w ZW4odXJsLCAnc3RvcmV3aW4nLCAnd2lkdGg9NjUwLGhlaWdodD0xMDUsdG9vbGJh cj0wLHRvcD0zMDAsbGVmdD0xNzAsc2Nyb2xsYmFycz0wJyk7DQp9DQoNCmZ1bmN0 aW9uIE9wZW5TdG9yZVN0YXR1cyh1cmwpIHsNCgkvLyBvcGVuIHN0b3JlIHN0YXR1 cw0KCXdpbmRvdy5vcGVuKHVybCwgJ3N0b3Jld2luJywgJ3dpZHRoPTY1MCxoZWln aHQ9MjAwLHRvb2xiYXI9MCx0b3A9MzAwLGxlZnQ9MTcwLHNjcm9sbGJhcnM9MScp Ow0KfQ0KDQoNCmZ1bmN0aW9uIGZybWZvY3VzKG9iaiwgdHh0KSB7KG9iai52YWx1 ZT09dHh0KT9vYmoudmFsdWU9Jyc6b2JqLnNlbGVjdCgpO30NCmZ1bmN0aW9uIGZy bWJsdXIob2JqLCB0eHQpIHsob2JqLnZhbHVlPT0nJyk/b2JqLnZhbHVlPXR4dDpv YmoudmFsdWU9b2JqLnZhbHVlO30NCg0KCQkJCQkJDQpmdW5jdGlvbiBDaGFuZ2VD YXJ0KG9iaklkLCBpZCwgcGlkLCBnaWQsIHJldCwgYlVzZSkNCnsNCgl2YXIgc1Vy bCA9IHNDaGFuZ2VVcmw7DQoJdmFyIGdpZFIgPSAtMTsNCglpZiAodHlwZW9mKGdp ZCkgIT0gJ3VuZGVmaW5lZCcpDQoJCWdpZFIgPSBnaWQ7DQoJdmFyIGJVc2VkID0g MDsNCglpZiAodHlwZW9mKGJVc2UpICE9ICd1bmRlZmluZWQnKQ0KCQliVXNlZCA9 IGJVc2U7DQoJdmFyIHJldFIgPSAwOw0KCWlmICh0eXBlb2YoZ2lkKSAhPSAndW5k ZWZpbmVkJykNCgkJcmV0UiA9IHJldDsNCgkJDQoJaWYgKHNVcmwgIT0gJycpDQoJ ew0KCQl2YXIgb2JqSW5wID0gR2V0T2JqKG9iaklkKTsNCgkJaWYgKG9iaklucCkN CgkJew0KCQkJaWYgKG9iaklucC52YWx1ZSA9PSAiIikgb2JqSW5wLnZhbHVlID0g IjEiOw0KCQkJc1VybCArPSAiJmNudD0iKyBvYmpJbnAudmFsdWUgKyImcGlkPSIr IHBpZCArIiZ0aWQ9IisgaWQgKyImZ2lkPSIrIGdpZFIgKyImYnVzZWQ9IisgYlVz ZWQgKyImcmV0PSIrIHJldFI7DQoJCQlkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0g c1VybDsJCQkJCQ0KCQl9DQoJfQ0KfQ0KDQpmdW5jdGlvbiBEZWxldGVGcm9tQ2Fy dChpZCwgcGlkLCBnaWQsIHJldCwgYlVzZSkNCnsNCgl2YXIgc1VybCA9IHNEZWxl dGVVcmw7DQoJdmFyIGdpZFIgPSAtMTsNCglpZiAodHlwZW9mKGdpZCkgIT0gJ3Vu ZGVmaW5lZCcpDQoJCWdpZFIgPSBnaWQ7DQoJdmFyIGJVc2VkID0gMDsNCglpZiAo dHlwZW9mKGJVc2UpICE9ICd1bmRlZmluZWQnKQ0KCQliVXNlZCA9IGJVc2U7DQoJ dmFyIHJldFIgPSAwOw0KCWlmICh0eXBlb2YoZ2lkKSAhPSAndW5kZWZpbmVkJykN CgkJcmV0UiA9IHJldDsNCgkJDQoJaWYgKHNVcmwgIT0gJycpDQoJew0KCQlzVXJs ICs9ICImcGlkPSIrIHBpZCArIiZ0aWQ9IisgaWQgKyImZ2lkPSIrIGdpZFIgKyIm YnVzZWQ9IisgYlVzZWQgKyImcmV0PSIrIHJldFI7DQoJCWRvY3VtZW50LmxvY2F0 aW9uLmhyZWYgPSBzVXJsOwkJCQkNCgl9DQp9DQoNCmZ1bmN0aW9uIEZpdFBpYygp IA0Kew0KCXZhciBhcnJUZW1wPXNlbGYubG9jYXRpb24uaHJlZi5zcGxpdCgiPyIp Ow0KCXZhciBwaWNVcmwgPSAoKGFyclRlbXAubGVuZ3RoPjApP2FyclRlbXBbMV06 IiIpLnNwbGl0KCI9IilbMV07DQoJdmFyIE5TID0gKG5hdmlnYXRvci5hcHBOYW1l PT0iTmV0c2NhcGUiKT90cnVlOmZhbHNlOw0KCWlXaWR0aCA9IChOUyk/d2luZG93 LmlubmVyV2lkdGg6ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRo Ow0KCWlIZWlnaHQgPSAoTlMpP3dpbmRvdy5pbm5lckhlaWdodDpkb2N1bWVudC5k b2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0Ow0KCQ0KCWlXaWR0aCA9IGRvY3Vt ZW50LmltYWdlc1swXS53aWR0aCAtIGlXaWR0aDsNCglpSGVpZ2h0ID0gZG9jdW1l bnQuaW1hZ2VzWzBdLmhlaWdodCAtIGlIZWlnaHQ7DQoJDQoJd2luZG93LnJlc2l6 ZUJ5KGlXaWR0aCs0MCwgaUhlaWdodCs4MCk7DQoJc2VsZi5mb2N1cygpOw0KfTsN Cg0KDQovKg0KKiBhYUxlcnQgdjEuMA0KKiBieSBDeWJlciBTdHJlYW0gVGVjaG5v bG9neSBzLnIuby4NCiovDQpmdW5jdGlvbiBhTGVydChtZXNzYWdlLCBidXR0b25z LCBvcHRpb25zKSB7DQoJdGhpcy5tZXNzYWdlXyA9IG1lc3NhZ2U7DQoJdGhpcy5i dXR0b25zXyA9IGJ1dHRvbnM7DQoJdGhpcy5kZWZhdWx0QnV0dG9uXyA9IG9wdGlv bnMuZGVmYXVsdEJ1dHRvbiB8fCB0aGlzLmJ1dHRvbnNfWzBdOw0KCXRoaXMuaWNv bl8gPSBvcHRpb25zLmljb24gfHwgbnVsbDsNCn0NCg0KYUxlcnQucHJvdG90eXBl LmRpc3BsYXkgPSBmdW5jdGlvbigpIHsNCgl2YXIgYm9keSA9IGRvY3VtZW50Lmdl dEVsZW1lbnRzQnlUYWdOYW1lICgnQk9EWScpWzBdOw0KCXZhciBwYWdlU2Nyb2xs ID0gZ2V0UGFnZVNjcm9sbCgpOw0KCXZhciBwYWdlU2l6ZSA9IGdldFBhZ2VTaXpl KCk7DQoNCgkvL2NyZWF0ZSB0aGUgb3ZlcmxheSBpZiBuZWNlc3NhcnkNCgl2YXIg b3ZlcmxheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsZXJ0T3ZlcmxheScp Ow0KCWlmKCFvdmVybGF5KSB7DQoJCXZhciBvdmVybGF5ID0gZG9jdW1lbnQuY3Jl YXRlRWxlbWVudCgiZGl2Iik7DQoJCW92ZXJsYXkuc2V0QXR0cmlidXRlKCdpZCcs J2xlcnRPdmVybGF5Jyk7DQoJCW92ZXJsYXkuc3R5bGUuZGlzcGxheSA9ICdub25l JzsNCgkJYm9keS5hcHBlbmRDaGlsZChvdmVybGF5KTsNCgl9DQoNCgkvL3Bvc2l0 aW9uIGFuZCBzaG93IHRoZSBvdmVybGF5DQoJb3ZlcmxheS5zdHlsZS5oZWlnaHQ9 cGFnZVNpemVbMV0rJ3B4JzsNCglvdmVybGF5LnN0eWxlLmRpc3BsYXk9J2Jsb2Nr JzsNCg0KCS8vY3JlYXRlIHRoZSBjb250YWluZXIgaWYgbmVjZXNzYXJ5DQoJdmFy IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsZXJ0Q29udGFp bmVyJyk7DQoJaWYoIWNvbnRhaW5lcikgew0KCQl2YXIgY29udGFpbmVyID0gZG9j dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQoJCWNvbnRhaW5lci5zZXRBdHRy aWJ1dGUoJ2lkJywnbGVydENvbnRhaW5lcicpOw0KCQljb250YWluZXIuc3R5bGUu ZGlzcGxheSA9ICdub25lJzsNCgkJYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIp Ow0KCX0NCg0KCS8vcG9zaXRpb24gYW5kIHNob3cgdGhlIGNvbnRhaW5lcg0KCS8v Y29udGFpbmVyLnN0eWxlLnRvcCA9ICggcGFnZVNjcm9sbFsxXSArIChwYWdlU2l6 ZVszXSAvIDUpKSArICdweCc7DQoJY29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAn YmxvY2snOw0KDQoJLy9jcmVhdGUgdGhlIHdpbmRvdw0KCXZhciB3aW4gPSBkb2N1 bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsNCgl3aW4uc2V0QXR0cmlidXRlKCdp ZCcsJ2xlcnRXaW5kb3cnKTsNCg0KCS8vY3JlYXRlIHRoZSBvcHRpb25hbCBpY29u DQoJaWYodGhpcy5pY29uXyAhPSBudWxsKSB7DQoJCXZhciBpY29uID0gZG9jdW1l bnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7DQoJCWljb24uc2V0QXR0cmlidXRlKCdz cmMnLHRoaXMuaWNvbl8pOw0KCQlpY29uLnNldEF0dHJpYnV0ZSgnaWQnLCdsZXJ0 SWNvbicpOw0KCQlpY29uLnNldEF0dHJpYnV0ZSgnYWx0JywnJyk7DQoJCXdpbi5h cHBlbmRDaGlsZChpY29uKTsNCgl9DQoNCgkvL2NyZWF0ZSB0aGUgbWVzc2FnZSBz cGFjZQ0KCXZhciBtZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcp Ow0KCW1lc3NhZ2Uuc2V0QXR0cmlidXRlKCdpZCcsJ2xlcnRNZXNzYWdlJyk7DQoJ bWVzc2FnZS5pbm5lckhUTUwgPSB0aGlzLm1lc3NhZ2VfOw0KCXdpbi5hcHBlbmRD aGlsZChtZXNzYWdlKTsNCg0KCS8vY3JlYXRlIHRoZSBidXR0b24gc3BhY2UNCgl2 YXIgYnV0dG9ucyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOw0KCWJ1 dHRvbnMuc2V0QXR0cmlidXRlKCdpZCcsJ2xlcnRCdXR0b25zJyk7DQoNCgl2YXIg b2xkS2V5RG93biA9IGRvY3VtZW50Lm9ua2V5ZG93bjsNCg0KCS8vYWRkIGVhY2gg YnV0dG9uDQoJZm9yKGkgaW4gdGhpcy5idXR0b25zXykgew0KCQl2YXIgYnV0dG9u ID0gdGhpcy5idXR0b25zX1tpXTsNCgkJaWYoYnV0dG9uLmdldERvbSkgew0KCQkJ dmFyIGRvbUJ1dHRvbiA9IGJ1dHRvbi5nZXREb20oZnVuY3Rpb24oKSB7DQoJCQkJ Y29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQoJCQkJb3ZlcmxheS5z dHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KCQkJCWRvY3VtZW50Lm9ua2V5ZG93bj1v bGRLZXlEb3duOw0KCQkJCWNvbnRhaW5lci5pbm5lckhUTUwgPSAnJzsNCgkJCQli dXR0b24ub25jbGlja187DQoJCQl9LHRoaXMuZGVmYXVsdEJ1dHRvbl8pOw0KCQkJ YnV0dG9ucy5hcHBlbmRDaGlsZChkb21CdXR0b24pOw0KCQl9DQoJfQ0KCXdpbi5h cHBlbmRDaGlsZChidXR0b25zKTsNCg0KCWRvY3VtZW50Lm9ua2V5ZG93biA9IHRo aXMua2V5Ym9hcmRDb250cm9sczsNCg0KCS8vYXBwZW5kIHRoZSB3aW5kb3cNCglj b250YWluZXIuYXBwZW5kQ2hpbGQod2luKTsNCn0NCg0KYUxlcnQucHJvdG90eXBl LmtleWJvYXJkQ29udHJvbHMgPSBmdW5jdGlvbihlKSB7DQoJaWYgKGUgPT0gbnVs bCkgeyBrZXljb2RlID0gZXZlbnQua2V5Q29kZTsgfSAvLyBpZQ0KCWVsc2UgeyBr ZXljb2RlID0gZS53aGljaDsgfSAvLyBtb3ppbGxhDQoJaWYoa2V5Y29kZT09MTMp IHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xlcnREZWZhdWx0QnV0dG9uJyku b25jbGljaygpOyB9DQp9DQoNCmZ1bmN0aW9uIGFMZXJ0QnV0dG9uKGxhYmVsLCBl dmVudCwgb3B0aW9ucykgew0KCXRoaXMubGFiZWxfID0gbGFiZWw7DQoJdGhpcy5v bmNsaWNrXyA9IGV2ZW50Ow0KCXRoaXMuZXZlbnRDbGljayA9IGZ1bmN0aW9uKCkg e307DQp9DQoNCmFMZXJ0QnV0dG9uLnByb3RvdHlwZS5nZXREb20gPSBmdW5jdGlv bihldmVudENsZWFudXAsZGVmYXVsdEJ1dHRvbikgew0KCXZhciBidXR0b24gPSBk b2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7DQoJYnV0dG9uLnNldEF0dHJpYnV0 ZSgnaHJlZicsJyMnKTsNCglidXR0b24uY2xhc3NOYW1lID0gJ2xlcnRCdXR0b24n Ow0KCWlmKHRoaXMgPT0gZGVmYXVsdEJ1dHRvbikgYnV0dG9uLnNldEF0dHJpYnV0 ZSgnaWQnLCdsZXJ0RGVmYXVsdEJ1dHRvbicpOw0KCWJ1dHRvbi5pbm5lckhUTUwg PSAnICcrdGhpcy5sYWJlbF87DQoNCgl2YXIgZXZlbnRPbmNsaWNrID0gIHRoaXMu b25jbGlja187DQoJYnV0dG9uLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsNCgkJZXZl bnRDbGVhbnVwKCk7DQoJCWV2ZW50T25jbGljaygpOw0KCX0NCgl0aGlzLmV2ZW50 Q2xpY2sgPSBidXR0b24ub25jbGljazsNCglyZXR1cm4gYnV0dG9uOw0KfQ0KDQov Lw0KLy8gZ2V0UGFnZVNjcm9sbCgpDQovLyBSZXR1cm5zIGFycmF5IHdpdGggeCx5 IHBhZ2Ugc2Nyb2xsIHZhbHVlcy4NCi8vIENvcmUgY29kZSBmcm9tIC0gcXVpcmtz bW9kZS5vcmcNCmZ1bmN0aW9uIGdldFBhZ2VTY3JvbGwoKXsNCg0KCXZhciB5U2Ny b2xsOw0KDQoJaWYgKHNlbGYucGFnZVlPZmZzZXQpIHsNCgkJeVNjcm9sbCA9IHNl bGYucGFnZVlPZmZzZXQ7DQoJfSBlbHNlIGlmIChkb2N1bWVudC5kb2N1bWVudEVs ZW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCl7CSAv LyBFeHBsb3JlciA2IFN0cmljdA0KCQl5U2Nyb2xsID0gZG9jdW1lbnQuZG9jdW1l bnRFbGVtZW50LnNjcm9sbFRvcDsNCgl9IGVsc2UgaWYgKGRvY3VtZW50LmJvZHkp IHsvLyBhbGwgb3RoZXIgRXhwbG9yZXJzDQoJCXlTY3JvbGwgPSBkb2N1bWVudC5i b2R5LnNjcm9sbFRvcDsNCgl9DQoNCglhcnJheVBhZ2VTY3JvbGwgPSBuZXcgQXJy YXkoJycseVNjcm9sbCkNCglyZXR1cm4gYXJyYXlQYWdlU2Nyb2xsOw0KfQ0KDQov LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQovLw0KLy8g Z2V0UGFnZVNpemUoKQ0KLy8gUmV0dXJucyBhcnJheSB3aXRoIHBhZ2Ugd2lkdGgs IGhlaWdodCBhbmQgd2luZG93IHdpZHRoLCBoZWlnaHQNCi8vIENvcmUgY29kZSBm cm9tIC0gcXVpcmtzbW9kZS5vcmcNCi8vIEVkaXQgZm9yIEZpcmVmb3ggYnkgcEhh ZXoNCi8vDQpmdW5jdGlvbiBnZXRQYWdlU2l6ZSgpew0KDQoJdmFyIHhTY3JvbGws IHlTY3JvbGw7DQoNCglpZiAod2luZG93LmlubmVySGVpZ2h0ICYmIHdpbmRvdy5z Y3JvbGxNYXhZKSB7DQoJCXhTY3JvbGwgPSBkb2N1bWVudC5ib2R5LnNjcm9sbFdp ZHRoOw0KCQl5U2Nyb2xsID0gd2luZG93LmlubmVySGVpZ2h0ICsgd2luZG93LnNj cm9sbE1heFk7DQoJfSBlbHNlIGlmIChkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdo dCA+IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0KXsgLy8gYWxsIGJ1dCBFeHBs b3JlciBNYWMNCgkJeFNjcm9sbCA9IGRvY3VtZW50LmJvZHkuc2Nyb2xsV2lkdGg7 DQoJCXlTY3JvbGwgPSBkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodDsNCgl9IGVs c2UgeyAvLyBFeHBsb3JlciBNYWMuLi53b3VsZCBhbHNvIHdvcmsgaW4gRXhwbG9y ZXIgNiBTdHJpY3QsIE1vemlsbGEgYW5kIFNhZmFyaQ0KCQl4U2Nyb2xsID0gZG9j dW1lbnQuYm9keS5vZmZzZXRXaWR0aDsNCgkJeVNjcm9sbCA9IGRvY3VtZW50LmJv ZHkub2Zmc2V0SGVpZ2h0Ow0KCX0NCg0KCXZhciB3aW5kb3dXaWR0aCwgd2luZG93 SGVpZ2h0Ow0KCWlmIChzZWxmLmlubmVySGVpZ2h0KSB7CS8vIGFsbCBleGNlcHQg RXhwbG9yZXINCgkJd2luZG93V2lkdGggPSBzZWxmLmlubmVyV2lkdGg7DQoJCXdp bmRvd0hlaWdodCA9IHNlbGYuaW5uZXJIZWlnaHQ7DQoJfSBlbHNlIGlmIChkb2N1 bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50 LmNsaWVudEhlaWdodCkgeyAvLyBFeHBsb3JlciA2IFN0cmljdCBNb2RlDQoJCXdp bmRvd1dpZHRoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRo Ow0KCQl3aW5kb3dIZWlnaHQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xp ZW50SGVpZ2h0Ow0KCX0gZWxzZSBpZiAoZG9jdW1lbnQuYm9keSkgeyAvLyBvdGhl ciBFeHBsb3JlcnMNCgkJd2luZG93V2lkdGggPSBkb2N1bWVudC5ib2R5LmNsaWVu dFdpZHRoOw0KCQl3aW5kb3dIZWlnaHQgPSBkb2N1bWVudC5ib2R5LmNsaWVudEhl aWdodDsNCgl9DQoNCgkvLyBmb3Igc21hbGwgcGFnZXMgd2l0aCB0b3RhbCBoZWln aHQgbGVzcyB0aGVuIGhlaWdodCBvZiB0aGUgdmlld3BvcnQNCglpZih5U2Nyb2xs IDwgd2luZG93SGVpZ2h0KXsNCgkJcGFnZUhlaWdodCA9IHdpbmRvd0hlaWdodDsN Cgl9IGVsc2Ugew0KCQlwYWdlSGVpZ2h0ID0geVNjcm9sbDsNCgl9DQoNCgkvLyBm b3Igc21hbGwgcGFnZXMgd2l0aCB0b3RhbCB3aWR0aCBsZXNzIHRoZW4gd2lkdGgg b2YgdGhlIHZpZXdwb3J0DQoJaWYoeFNjcm9sbCA8IHdpbmRvd1dpZHRoKXsNCgkJ cGFnZVdpZHRoID0gd2luZG93V2lkdGg7DQoJfSBlbHNlIHsNCgkJcGFnZVdpZHRo ID0geFNjcm9sbDsNCgl9DQoNCglhcnJheVBhZ2VTaXplID0gbmV3IEFycmF5KHBh Z2VXaWR0aCxwYWdlSGVpZ2h0LHdpbmRvd1dpZHRoLHdpbmRvd0hlaWdodCkNCgly ZXR1cm4gYXJyYXlQYWdlU2l6ZTsNCn0NCg0KDQovKiBmdW5jdGlvbnMgZm9yIGNy ZWF0ZSBhTGVydCBhbmQgbWFrZSBhY3Rpb24gKi8NCi8qICAtLSBkcm9wIGNhcnQg Ki8NCmZ1bmN0aW9uIERyb3BDYXJ0KHRZZXMsIHRObywgdFF1ZXN0aW9uKSB7DQoJ dmFyIHllcyA9IG5ldyBhTGVydEJ1dHRvbih0WWVzLCBmdW5jdGlvbigpIHsNCgkJ CWRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBzdHJCYXNlUmVmICsnZm9ybXMvc2F2 ZWNhcnQuYXNweD9hY3Rpb249ZGVsZXRlYWxsJzsNCgl9KTsNCg0KCXZhciBubyA9 IG5ldyBhTGVydEJ1dHRvbih0Tm8sIGZ1bmN0aW9uKCkgew0KCQkJICAgICAgICAg ICAgICAgDQoJfSk7DQoNCgl2YXIgbWVzc2FnZSA9IHRRdWVzdGlvbjsNCgl2YXIg ZHJvcENhcnRBTGVydCA9IG5ldyBhTGVydCgNCgkJbWVzc2FnZSwNCgkJW3llcyxu b10sDQoJCXsNCgkJCWljb246IHJvb3RJbWFnZSArJ2FsZXJ0L2RpYWxvZy13YXJu aW5nLmdpZicsDQoJCQkJZGVmYXVsdEJ1dHRvbjpubw0KCQl9KTsNCg0KCWRyb3BD YXJ0QUxlcnQuZGlzcGxheSgpOw0KfQ0KDQovKiAgLS0gbG9nb3V0ICovDQpmdW5j dGlvbiBMb2dvdXRVc2VyKHRDYW5jZWwsIHRMZWF2ZSwgdEVtcHR5LCB0T3JkZXIs IHRRdWVzdGlvbiwgdFF1ZXN0aW9uTG9nb3V0LCB0WWVzKSB7DQoJdmFyIGNhcnQg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FydElkJyk7DQoJdmFyIGJMb2dv dXQgPSBmYWxzZTsNCglpZiAoIWJDYXJ0RnVsbCkNCgkJYkxvZ291dCA9IHRydWU7 DQoJDQoJdmFyIGxlYXZlID0gbmV3IGFMZXJ0QnV0dG9uKHRMZWF2ZSwgZnVuY3Rp b24oKSB7DQoJCWRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBzdHJCYXNlUmVmICsn Zm9ybXMvbG9nb3V0LmFzcHgnOw0KCX0pOw0KDQoJdmFyIGVtcHR5ID0gbmV3IGFM ZXJ0QnV0dG9uKHRFbXB0eSwgZnVuY3Rpb24oKSB7DQoJCWRvY3VtZW50LmxvY2F0 aW9uLmhyZWYgPSBzQ2FydERlbGV0ZUFsbFVybDsNCgl9KTsNCg0KCXZhciBvcmRl ciA9IG5ldyBhTGVydEJ1dHRvbih0T3JkZXIsIGZ1bmN0aW9uKCkgew0KCQlkb2N1 bWVudC5sb2NhdGlvbi5ocmVmID0gc0NhcnREZXRhaWxVcmw7DQoJfSk7DQoNCgl2 YXIgY2FuY2VsID0gbmV3IGFMZXJ0QnV0dG9uKHRDYW5jZWwsIGZ1bmN0aW9uKCkg ew0KCX0pOw0KDQoJdmFyIG1lc3NhZ2UgPSB0UXVlc3Rpb247DQoJaWYgKGJMb2dv dXQpDQoJew0KCQlpZiAodHlwZW9mKHRRdWVzdGlvbkxvZ291dCkgIT0gJ3VuZGVm aW5lZCcpDQoJCQltZXNzYWdlID0gdFF1ZXN0aW9uTG9nb3V0Ow0KCQlpZiAodHlw ZW9mKHRZZXMpICE9ICd1bmRlZmluZWQnKQ0KCQkJbGVhdmUubGFiZWxfID0gdFll czsNCgl9DQoJDQoJaWYgKGJMb2dvdXQpDQoJew0KCQl2YXIgbG9nb3V0QUxlcnQg PSBuZXcgYUxlcnQoDQoJCQltZXNzYWdlLA0KCQkJW2xlYXZlLGNhbmNlbF0sDQoJ CQl7DQoJCQkJaWNvbjogcm9vdEltYWdlICsnYWxlcnQvZGlhbG9nLXdhcm5pbmcu Z2lmJw0KCQkJfSk7DQoJfQ0KCWVsc2UNCgl7DQoJCXZhciBsb2dvdXRBTGVydCA9 IG5ldyBhTGVydCgNCgkJCW1lc3NhZ2UsDQoJCQlbb3JkZXIsZW1wdHksbGVhdmUs Y2FuY2VsXSwNCgkJCXsNCgkJCQlpY29uOiByb290SW1hZ2UgKydhbGVydC9kaWFs b2ctd2FybmluZy5naWYnDQoJCQl9KTsNCgl9DQoJbG9nb3V0QUxlcnQuZGlzcGxh eSgpOw0KfQ0KDQovKiAgLS0gbG9naW4gKi8NCmZ1bmN0aW9uIExvZ2luQUxlcnQo dExlYXZlLCB0RW1wdHksIHRPcmRlciwgdFF1ZXN0aW9uKSB7DQoJdmFyIGxlYXZl ID0gbmV3IGFMZXJ0QnV0dG9uKHRMZWF2ZSwgZnVuY3Rpb24oKSB7DQoJfSk7DQoN Cgl2YXIgZW1wdHkgPSBuZXcgYUxlcnRCdXR0b24odEVtcHR5LCBmdW5jdGlvbigp IHsNCgkJZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IHN0ckJhc2VSZWYgKydmb3Jt cy9zYXZlY2FydC5hc3B4P2FjdGlvbj1kZWxldGVhbGwnOw0KCX0pOw0KDQoJdmFy IG9yZGVyID0gbmV3IGFMZXJ0QnV0dG9uKHRPcmRlciwgZnVuY3Rpb24oKSB7DQoJ CWRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBzQ2FydERldGFpbFVybDsNCgl9KTsN Cg0KCXZhciBtZXNzYWdlID0gdFF1ZXN0aW9uOw0KCXZhciBsb2dpbkFMZXJ0ID0g bmV3IGFMZXJ0KA0KCQltZXNzYWdlLA0KCQlbb3JkZXIsZW1wdHksbGVhdmVdLA0K CQl7DQoJCQlpY29uOiByb290SW1hZ2UgKydhbGVydC9kaWFsb2ctd2FybmluZy5n aWYnDQoJCX0pOw0KDQoJbG9naW5BTGVydC5kaXNwbGF5KCk7DQp9DQoNCi8qIGZp bmRpbmcgZnVuY3Rpb25zICovDQpmdW5jdGlvbiBTZWxlY3RGaW5kRm9ybSgpIHsN CglpZiAoYXJyYXlGb3VuZGVkVmFsdWVzKQ0KCQlmb3IodmFyIGkgPSAwOyBpIDwg YXJyYXlGb3VuZGVkVmFsdWVzLmxlbmd0aDsgaSsrKSB7IA0KCQkJdmFyIHNOYW1l ID0gYXJyYXlGb3VuZGVkVmFsdWVzW2ldWzBdOw0KCQkJdmFyIHNWYWx1ZSA9IGFy cmF5Rm91bmRlZFZhbHVlc1tpXVsxXTsNCgkJCXZhciBvYmogPSBHZXRPYmooc05h bWUpOw0KCQkJaWYgKG9iaikgDQoJCQkJc3dpdGNoIChvYmoudHlwZSkgew0KCQkJ CQljYXNlICJzZWxlY3Qtb25lIjoNCgkJCQkJCVNlbGVjdFZhbHVlSW5Db21ibyhv YmosIHNWYWx1ZSk7DQoJCQkJCQlicmVhazsNCgkJCQkJY2FzZSAidGV4dCI6DQoJ CQkJCWNhc2UgImhpZGRlbiI6DQoJCQkJCQlvYmoudmFsdWUgPSBzVmFsdWU7DQoJ CQkJCQlicmVhazsNCgkJCQkJY2FzZSAiY2hlY2tib3giOg0KCQkJCQkJb2JqLmNo ZWNrZWQgPSB0cnVlOw0KCQkJCQlkZWZhdWx0Og0KCQkJCQkJYnJlYWs7DQoJCQkJ fQ0KCQl9DQp9DQoNCi8vIHJlc2V0IGZ1bmN0aW9uDQpmdW5jdGlvbiBSZXNldEZp bmRGb3JtKCkgew0KCUZSZXNldCgnTWFpbkZvcm0nKTsNCn0NCg0KDQpmdW5jdGlv biBTZW5kTWFpbkZvcm0oc2VuZCwgaWQpDQp7DQoJaWYgKHNlbmQgPT0gdHJ1ZSkN Cgl7DQoJCV9fZG9Qb3N0QmFjayhpZCwgJycpOw0KCX0NCgllbHNlDQoJCXJldHVy biBmYWxzZTsNCn0NCg0KLyogZmluZGluZyBmdW5jdGlvbnMgKi8NCmZ1bmN0aW9u IFNlbmREZXRlcm1pbmF0aW9uKEJ1dHRvbk5hbWUpIHsNCglpZiAodHlwZW9mKGFy ckRldGVybWluYXRpb25JbnB1dHMpID09ICd1bmRlZmluZWQnKQ0KCQlyZXR1cm47 DQoJaWYgKHR5cGVvZihpRGV0ZXJtaW5hdGlvbklkKSA9PSAndW5kZWZpbmVkJykN CgkJcmV0dXJuOw0KCQ0KCS8vIGdldCBkZXRlcm0uIGlucHV0cw0KCXZhciBhRGV0 cyA9IGFyckRldGVybWluYXRpb25JbnB1dHMuc3BsaXQoJywnKTsNCgl2YXIgc0xp bmsgPSAiIjsNCglmb3IgKHZhciBpID0gMDsgaSA8IGFEZXRzLmxlbmd0aDsgaSsr KSB7IA0KCQl2YXIgc05hbWUgPSBhRGV0c1tpXTsNCgkJdmFyIG9iaiA9IEdldE9i aihzTmFtZSk7DQoJCXZhciBzVmFsdWUgPSAiIjsNCgkJaWYgKG9iaikgDQoJCQlz d2l0Y2ggKG9iai50eXBlKSB7DQoJCQkJY2FzZSAic2VsZWN0LW9uZSI6DQoJCQkJ CXNWYWx1ZSA9IEdldFZhbHVlRnJvbVNlbGVjdChvYmopDQoJCQkJCWJyZWFrOw0K CQkJCWNhc2UgInRleHQiOg0KCQkJCWNhc2UgImhpZGRlbiI6DQoJCQkJCXNWYWx1 ZSA9IG9iai52YWx1ZTsNCgkJCQkJYnJlYWs7DQoJCQkJZGVmYXVsdDoNCgkJCQkJ YnJlYWs7DQoJCQl9DQoJCQkNCgkJLy8gc2V0IGxpbmsNCgkJc0xpbmsgKz0gIiYi KyBzTmFtZSArIj0iKyBzVmFsdWU7DQoJfQ0KCS8vIHNldCBsaW5rDQoJc0xpbmsg PSBzRGV0ZXJtaW5hdGlvblVybCArIiZpZD0iKyBpRGV0ZXJtaW5hdGlvbklkICsi JmJ0bj0iKyBCdXR0b25OYW1lICsgc0xpbms7DQoJZG9jdW1lbnQubG9jYXRpb24u aHJlZiA9IHNMaW5rOw0KfQ0KDQpmdW5jdGlvbiBHZXRBcnJheUZyb21JbnB1dHMo bmFtZSwgYXJyKQ0Kew0KCXZhciBzcyA9ICcnOw0KCXZhciB0YWJzID0gZG9jdW1l bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0Jyk7DQoJZm9yICh2YXIgaT0w OyBpIDwgdGFicy5sZW5ndGg7IGkrKykNCgl7DQoJCXZhciB0YWIgPSB0YWJzW2ld Ow0KCQl2YXIgdGFiTmFtZSA9IHRhYi5uYW1lOw0KCQlzcyArPSAnfCcrIHRhYk5h bWUgKydcbic7DQoJCQ0KCQlpZiAodGFiTmFtZS5pbmRleE9mKG5hbWUpID4gMCkN CgkJCWFyclthcnIubGVuZ3RoXSA9IHRhYk5hbWU7DQoJfQ0KCQ0KCS8vIHJldHVy biBhcnJheQ0KCXJldHVybiBhcnI7DQp9DQoNCmZ1bmN0aW9uIERpc2FibGVJbnB1 dHNJbkFycmF5KGFyciwgZGlzLCB2Q29sb3IsIGRDb2xvciwgY2hlY2spDQp7DQoJ Zm9yICh2YXIgaT0wOyBpIDwgYXJyLmxlbmd0aDsgaSsrKQ0KCXsNCgkJdmFyIG5h bWUgPSBhcnJbaV07DQoJCXZhciBvYmogPSBHZXRPYmoobmFtZSk7DQoJCURpc2Fi bGVJbnB1dChvYmosIGRpcywgJycsIHZDb2xvciwgZENvbG9yLCBjaGVjayk7DQoJ fQ0KfQ0KDQpmdW5jdGlvbiBGaWxsSW5wdXRzSW5BcnJheShhcnIsIHZhbHVlKQ0K ew0KCWZvciAodmFyIGk9MDsgaSA8IGFyci5sZW5ndGg7IGkrKykNCgl7DQoJCXZh ciBuYW1lID0gYXJyW2ldOw0KCQl2YXIgb2JqID0gR2V0T2JqKG5hbWUpOw0KCQlp ZiAob2JqKQ0KCQl7DQoJCQlvYmoudmFsdWUgPSB2YWx1ZTsNCgkJfQ0KCX0NCn0N Cg0KZnVuY3Rpb24gRGlzYWJsZUlucHV0KG9iaiwgZGlzLCB2YWx1ZSwgdkNvbG9y LCBkQ29sb3IsIGNoZWNrKQ0Kew0KCXZhciBiQ2hlY2sgPSBmYWxzZTsNCglpZiAo dHlwZW9mKGNoZWNrKSAhPSAndW5kZWZpbmVkJykNCgkJYkNoZWNrID0gY2hlY2s7 DQoJDQoJaWYgKG9iaikNCgkJaWYgKGRpcykNCgkJew0KCQkJdmFyIGJCbG9jayA9 IHRydWU7DQoJCQlpZiAoYkNoZWNrKQ0KCQkJCWlmIChvYmoudmFsdWUgIT0gJycp DQoJCQkJCWJCbG9jayA9IGZhbHNlOw0KCQkJDQoJCQlpZiAoYkJsb2NrKQ0KCQkJ ew0KCQkJCW9iai52YWx1ZSA9ICcnOw0KCQkJCW9iai5kaXNhYmxlZCA9IHRydWU7 DQoJCQkJb2JqLnN0eWxlLmJhY2tncm91bmQgPSBkQ29sb3I7DQoJCQl9DQoJCX0N CgkJZWxzZQ0KCQl7DQoJCQlvYmoudmFsdWUgPSB2YWx1ZTsNCgkJCW9iai5kaXNh YmxlZCA9IGZhbHNlOw0KCQkJb2JqLnN0eWxlLmJhY2tncm91bmQgPSB2Q29sb3I7 DQoJCX0NCn0NCg0KZnVuY3Rpb24gRmlsbElucHV0SW5BcnJheShhcnIsIG9ialZh bHVlTmFtZSwgb2JqLCBpbmRleCwgdkNvbG9yLCBkQ29sb3IpDQp7DQoJLy8gZ2V0 IHZhbHVlDQoJdmFyIG9ialZhbHVlID0gR2V0T2JqKG9ialZhbHVlTmFtZSk7DQoJ dmFyIHZhbCA9ICcnOw0KCWlmIChvYmpWYWx1ZSkNCgkJdmFsID0gb2JqVmFsdWUu dmFsdWU7DQoJLy8gZmluZCByaWdodCBvYmoNCglmb3IgKHZhciBpPTA7IGkgPCBh cnIubGVuZ3RoOyBpKyspDQoJew0KCQl2YXIgbmFtZSA9IGFycltpXTsNCgkJdmFy IG9iaklucCA9IEdldE9iaihuYW1lKTsNCgkJaWYgKG9iaklucCkNCgkJew0KCQkJ dmFyIHNJbmQgPSAiXyIrIGluZGV4Ow0KCQkJdmFyIHNOYW0gPSBvYmpJbnAubmFt ZS5zdWJzdHJpbmcob2JqLm5hbWUubGFzdEluZGV4T2YoJ18nKSk7DQoJCQlpZiAo c05hbSA9PSBzSW5kKQ0KCQkJew0KCQkJCURpc2FibGVJbnB1dChvYmpJbnAsICFv YmouY2hlY2tlZCwgdmFsLCB2Q29sb3IsIGRDb2xvcik7DQoJCQl9DQoJCX0NCgl9 DQp9DQoNCmZ1bmN0aW9uIFNldFRyYW5zZmVyKGFyciwgaW5wTmFtZSkNCnsNCgl2 YXIgb2JqcyA9IEdldE9ianMoaW5wTmFtZSk7DQoJdmFyIF9hcnIgPSBhcnIuc3Bs aXQoJywnKTsNCglmb3IgKHZhciBpPTA7IGkgPCBvYmpzLmxlbmd0aDsgaSsrKQ0K CXsNCgkJdmFyIGlucCA9IG9ianNbaV07DQoJCXZhciBpbnBJZCA9IGlucC5pZDsN CgkJaW5wLmRpc2FibGVkID0gdHJ1ZTsNCgkJDQoJCWlmIChfYXJyLmxlbmd0aCA+ IDApDQoJCXsNCgkJCWZvciAodmFyIHg9MDsgeCA8IF9hcnIubGVuZ3RoOyB4Kysp DQoJCQl7DQoJCQkJdmFyIHZhbCA9IF9hcnJbeF07DQoJCQkJaWYgKHZhbCA9PSBp bnAudmFsdWUpDQoJCQkJCWlucC5kaXNhYmxlZCA9IGZhbHNlOw0KCQkJfQ0KCQl9 DQoJCQ0KCQlpZiAoaW5wLmRpc2FibGVkID09IHRydWUgJiYgaW5wLmNoZWNrZWQg PT0gdHJ1ZSkNCgkJCWlucC5jaGVja2VkID0gZmFsc2U7DQoJfQ0KfQ0KDQpvbGRT ZWwgPSBuZXcgQXJyYXkoKTsNCg0KZnVuY3Rpb24gc2VsQWxsRmNlKGlucHV0c05h bWUsY2hhbmdlck5hbWUsSWQsc3RhcnRObyxlbmRObykgew0KCWNoYW5nZXIgPSBH ZXRPYmooY2hhbmdlck5hbWUrSWQpOw0KCWlmKGNoYW5nZXIuY2hlY2tlZCl7DQoJ CWlmKG9sZFNlbFtJZF0gPT0gdW5kZWZpbmVkKXsNCgkJCW9sZFNlbFtJZF0gPSBu ZXcgQXJyYXkoKTsNCgkJCWZvcihjaD1zdGFydE5vO2NoPD1lbmRObztjaCsrKXsN CgkJCQlhY2g9R2V0T2JqKGlucHV0c05hbWUrSWQrY2gpOw0KCQkJCWlmKGFjaCAh PSBudWxsKXtvbGRTZWxbSWRdW29sZFNlbFtJZF0ubGVuZ3RoXSA9IG5ldyBBcnJh eShhY2gpO30NCgkJCX0NCg0KCQl9DQoJCWZvcihjaD0wO2NoPG9sZFNlbFtJZF0u bGVuZ3RoO2NoKyspew0KCQkJb2xkU2VsW0lkXVtjaF1bMV0gPSBvbGRTZWxbSWRd W2NoXVswXS5jaGVja2VkOw0KCQkJb2xkU2VsW0lkXVtjaF1bMF0uY2hlY2tlZCA9 IHRydWU7DQoJCX0NCgl9IGVsc2Ugew0KCQlpZihvbGRTZWxbSWRdICE9IHVuZGVm aW5lZCl7DQoJCQlmb3IoY2g9MDtjaDxvbGRTZWxbSWRdLmxlbmd0aDtjaCsrKXtp ZihvbGRTZWxbSWRdW2NoXVswXS5jaGVja2VkKW9sZFNlbFtJZF1bY2hdWzBdLmNo ZWNrZWQgPSBvbGRTZWxbSWRdW2NoXVsxXTt9DQoJCX0gZWxzZSB7DQoJCQlvbGRT ZWxbSWRdID0gbmV3IEFycmF5KCk7DQoJCQlmb3IoY2g9c3RhcnRObztjaDw9ZW5k Tm87Y2grKyl7DQoJCQkJYWNoPUdldE9iaihpbnB1dHNOYW1lK0lkK2NoKTsNCgkJ CQlpZihhY2ggIT0gbnVsbCl7b2xkU2VsW0lkXVtvbGRTZWxbSWRdLmxlbmd0aF0g PSBuZXcgQXJyYXkoYWNoKTt9DQoJCQl9DQoJCQlmb3IoY2g9MDtjaDxvbGRTZWxb SWRdLmxlbmd0aDtjaCsrKXsNCgkJCQlvbGRTZWxbSWRdW2NoXVsxXSA9IG9sZFNl bFtJZF1bY2hdWzBdLmNoZWNrZWQ7DQoJCQkJb2xkU2VsW0lkXVtjaF1bMF0uY2hl Y2tlZCA9IGZhbHNlOw0KCQkJfQ0KCQl9DQoJfQ0KfQ0KDQp2YXIgTXlDb29raWUg PSB7DQogICAgV3JpdGU6ZnVuY3Rpb24obmFtZSx2YWx1ZSxkYXlzKSB7DQogICAg ICAgIHZhciBEID0gbmV3IERhdGUoKTsNCiAgICAgICAgRC5zZXRUaW1lKEQuZ2V0 VGltZSgpKzg2NDAwMDAwKmRheXMpDQogICAgICAgIGRvY3VtZW50LmNvb2tpZSA9 IGVzY2FwZShuYW1lKSsiPSIrZXNjYXBlKHZhbHVlKSsNCiAgICAgICAgICAgICgo ZGF5cyA9PSBudWxsKT8iIjooIjtleHBpcmVzPSIrRC50b0dNVFN0cmluZygpKSkg KyAiO3BhdGg9LyINCiAgICAgICAgcmV0dXJuICh0aGlzLlJlYWQobmFtZSkgPT0g dmFsdWUpOw0KICAgIH0sDQogICAgUmVhZDpmdW5jdGlvbihuYW1lKSB7DQogICAg ICAgIHZhciBFTj1lc2NhcGUobmFtZSkNCiAgICAgICAgdmFyIEY9JyAnK2RvY3Vt ZW50LmNvb2tpZSsnOycsIFM9Ri5pbmRleE9mKCcgJytFTik7DQogICAgICAgIHJl dHVybiBTPT0tMSA/IG51bGwgOiB1bmVzY2FwZSggICAgIEYuc3Vic3RyaW5nKEVO PVMrRU4ubGVuZ3RoKzIsRi5pbmRleE9mKCc7JyxFTikpICAgICk7DQogICAgfQ0K fQ== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=jquery.js Content-Type: application/x-javascript; name=jquery.js Content-Location: http://teplice.naseadresa.cz/0000-Global/js/jquery.js Content-Transfer-Encoding: Base64 KGZ1bmN0aW9uKCl7DQovKg0KICogalF1ZXJ5IDEuMi42IC0gTmV3IFdhdmUgSmF2 YXNjcmlwdA0KICoNCiAqIENvcHlyaWdodCAoYykgMjAwOCBKb2huIFJlc2lnIChq cXVlcnkuY29tKQ0KICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIChNSVQt TElDRU5TRS50eHQpDQogKiBhbmQgR1BMIChHUEwtTElDRU5TRS50eHQpIGxpY2Vu c2VzLg0KICoNCiAqICREYXRlOiAyMDA4LTA1LTI0IDE0OjIyOjE3IC0wNDAwIChT YXQsIDI0IE1heSAyMDA4KSAkDQogKiAkUmV2OiA1Njg1ICQNCiAqLw0KDQovLyBN YXAgb3ZlciBqUXVlcnkgaW4gY2FzZSBvZiBvdmVyd3JpdGUNCnZhciBfalF1ZXJ5 ID0gd2luZG93LmpRdWVyeSwNCi8vIE1hcCBvdmVyIHRoZSAkIGluIGNhc2Ugb2Yg b3ZlcndyaXRlDQoJXyQgPSB3aW5kb3cuJDsNCg0KdmFyIGpRdWVyeSA9IHdpbmRv dy5qUXVlcnkgPSB3aW5kb3cuJCA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4 dCApIHsNCgkvLyBUaGUgalF1ZXJ5IG9iamVjdCBpcyBhY3R1YWxseSBqdXN0IHRo ZSBpbml0IGNvbnN0cnVjdG9yICdlbmhhbmNlZCcNCglyZXR1cm4gbmV3IGpRdWVy eS5mbi5pbml0KCBzZWxlY3RvciwgY29udGV4dCApOw0KfTsNCg0KLy8gQSBzaW1w bGUgd2F5IHRvIGNoZWNrIGZvciBIVE1MIHN0cmluZ3Mgb3IgSUQgc3RyaW5ncw0K Ly8gKGJvdGggb2Ygd2hpY2ggd2Ugb3B0aW1pemUgZm9yKQ0KdmFyIHF1aWNrRXhw ciA9IC9eW148XSooPCgufFxzKSs+KVtePl0qJHxeIyhcdyspJC8sDQoNCi8vIElz IGl0IGEgc2ltcGxlIHNlbGVjdG9yDQoJaXNTaW1wbGUgPSAvXi5bXjojXFtcLl0q JC8sDQoNCi8vIFdpbGwgc3BlZWQgdXAgcmVmZXJlbmNlcyB0byB1bmRlZmluZWQs IGFuZCBhbGxvd3MgbXVuZ2luZyBpdHMgbmFtZS4NCgl1bmRlZmluZWQ7DQoNCmpR dWVyeS5mbiA9IGpRdWVyeS5wcm90b3R5cGUgPSB7DQoJaW5pdDogZnVuY3Rpb24o IHNlbGVjdG9yLCBjb250ZXh0ICkgew0KCQkvLyBNYWtlIHN1cmUgdGhhdCBhIHNl bGVjdGlvbiB3YXMgcHJvdmlkZWQNCgkJc2VsZWN0b3IgPSBzZWxlY3RvciB8fCBk b2N1bWVudDsNCg0KCQkvLyBIYW5kbGUgJChET01FbGVtZW50KQ0KCQlpZiAoIHNl bGVjdG9yLm5vZGVUeXBlICkgew0KCQkJdGhpc1swXSA9IHNlbGVjdG9yOw0KCQkJ dGhpcy5sZW5ndGggPSAxOw0KCQkJcmV0dXJuIHRoaXM7DQoJCX0NCgkJLy8gSGFu ZGxlIEhUTUwgc3RyaW5ncw0KCQlpZiAoIHR5cGVvZiBzZWxlY3RvciA9PSAic3Ry aW5nIiApIHsNCgkJCS8vIEFyZSB3ZSBkZWFsaW5nIHdpdGggSFRNTCBzdHJpbmcg b3IgYW4gSUQ/DQoJCQl2YXIgbWF0Y2ggPSBxdWlja0V4cHIuZXhlYyggc2VsZWN0 b3IgKTsNCg0KCQkJLy8gVmVyaWZ5IGEgbWF0Y2gsIGFuZCB0aGF0IG5vIGNvbnRl eHQgd2FzIHNwZWNpZmllZCBmb3IgI2lkDQoJCQlpZiAoIG1hdGNoICYmIChtYXRj aFsxXSB8fCAhY29udGV4dCkgKSB7DQoNCgkJCQkvLyBIQU5ETEU6ICQoaHRtbCkg LT4gJChhcnJheSkNCgkJCQlpZiAoIG1hdGNoWzFdICkNCgkJCQkJc2VsZWN0b3Ig PSBqUXVlcnkuY2xlYW4oIFsgbWF0Y2hbMV0gXSwgY29udGV4dCApOw0KDQoJCQkJ Ly8gSEFORExFOiAkKCIjaWQiKQ0KCQkJCWVsc2Ugew0KCQkJCQl2YXIgZWxlbSA9 IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCBtYXRjaFszXSApOw0KDQoJCQkJCS8v IE1ha2Ugc3VyZSBhbiBlbGVtZW50IHdhcyBsb2NhdGVkDQoJCQkJCWlmICggZWxl bSApew0KCQkJCQkJLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIElFIGFuZCBPcGVy YSByZXR1cm4gaXRlbXMNCgkJCQkJCS8vIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRA0K CQkJCQkJaWYgKCBlbGVtLmlkICE9IG1hdGNoWzNdICkNCgkJCQkJCQlyZXR1cm4g alF1ZXJ5KCkuZmluZCggc2VsZWN0b3IgKTsNCg0KCQkJCQkJLy8gT3RoZXJ3aXNl LCB3ZSBpbmplY3QgdGhlIGVsZW1lbnQgZGlyZWN0bHkgaW50byB0aGUgalF1ZXJ5 IG9iamVjdA0KCQkJCQkJcmV0dXJuIGpRdWVyeSggZWxlbSApOw0KCQkJCQl9DQoJ CQkJCXNlbGVjdG9yID0gW107DQoJCQkJfQ0KDQoJCQkvLyBIQU5ETEU6ICQoZXhw ciwgW2NvbnRleHRdKQ0KCQkJLy8gKHdoaWNoIGlzIGp1c3QgZXF1aXZhbGVudCB0 bzogJChjb250ZW50KS5maW5kKGV4cHIpDQoJCQl9IGVsc2UNCgkJCQlyZXR1cm4g alF1ZXJ5KCBjb250ZXh0ICkuZmluZCggc2VsZWN0b3IgKTsNCg0KCQkvLyBIQU5E TEU6ICQoZnVuY3Rpb24pDQoJCS8vIFNob3J0Y3V0IGZvciBkb2N1bWVudCByZWFk eQ0KCQl9IGVsc2UgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggc2VsZWN0b3IgKSAp DQoJCQlyZXR1cm4galF1ZXJ5KCBkb2N1bWVudCApWyBqUXVlcnkuZm4ucmVhZHkg PyAicmVhZHkiIDogImxvYWQiIF0oIHNlbGVjdG9yICk7DQoNCgkJcmV0dXJuIHRo aXMuc2V0QXJyYXkoalF1ZXJ5Lm1ha2VBcnJheShzZWxlY3RvcikpOw0KCX0sDQoN CgkvLyBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIGpRdWVyeSBiZWluZyB1c2VkDQoJ anF1ZXJ5OiAiMS4yLjYiLA0KDQoJLy8gVGhlIG51bWJlciBvZiBlbGVtZW50cyBj b250YWluZWQgaW4gdGhlIG1hdGNoZWQgZWxlbWVudCBzZXQNCglzaXplOiBmdW5j dGlvbigpIHsNCgkJcmV0dXJuIHRoaXMubGVuZ3RoOw0KCX0sDQoNCgkvLyBUaGUg bnVtYmVyIG9mIGVsZW1lbnRzIGNvbnRhaW5lZCBpbiB0aGUgbWF0Y2hlZCBlbGVt ZW50IHNldA0KCWxlbmd0aDogMCwNCg0KCS8vIEdldCB0aGUgTnRoIGVsZW1lbnQg aW4gdGhlIG1hdGNoZWQgZWxlbWVudCBzZXQgT1INCgkvLyBHZXQgdGhlIHdob2xl IG1hdGNoZWQgZWxlbWVudCBzZXQgYXMgYSBjbGVhbiBhcnJheQ0KCWdldDogZnVu Y3Rpb24oIG51bSApIHsNCgkJcmV0dXJuIG51bSA9PSB1bmRlZmluZWQgPw0KDQoJ CQkvLyBSZXR1cm4gYSAnY2xlYW4nIGFycmF5DQoJCQlqUXVlcnkubWFrZUFycmF5 KCB0aGlzICkgOg0KDQoJCQkvLyBSZXR1cm4ganVzdCB0aGUgb2JqZWN0DQoJCQl0 aGlzWyBudW0gXTsNCgl9LA0KDQoJLy8gVGFrZSBhbiBhcnJheSBvZiBlbGVtZW50 cyBhbmQgcHVzaCBpdCBvbnRvIHRoZSBzdGFjaw0KCS8vIChyZXR1cm5pbmcgdGhl IG5ldyBtYXRjaGVkIGVsZW1lbnQgc2V0KQ0KCXB1c2hTdGFjazogZnVuY3Rpb24o IGVsZW1zICkgew0KCQkvLyBCdWlsZCBhIG5ldyBqUXVlcnkgbWF0Y2hlZCBlbGVt ZW50IHNldA0KCQl2YXIgcmV0ID0galF1ZXJ5KCBlbGVtcyApOw0KDQoJCS8vIEFk ZCB0aGUgb2xkIG9iamVjdCBvbnRvIHRoZSBzdGFjayAoYXMgYSByZWZlcmVuY2Up DQoJCXJldC5wcmV2T2JqZWN0ID0gdGhpczsNCg0KCQkvLyBSZXR1cm4gdGhlIG5l d2x5LWZvcm1lZCBlbGVtZW50IHNldA0KCQlyZXR1cm4gcmV0Ow0KCX0sDQoNCgkv LyBGb3JjZSB0aGUgY3VycmVudCBtYXRjaGVkIHNldCBvZiBlbGVtZW50cyB0byBi ZWNvbWUNCgkvLyB0aGUgc3BlY2lmaWVkIGFycmF5IG9mIGVsZW1lbnRzIChkZXN0 cm95aW5nIHRoZSBzdGFjayBpbiB0aGUgcHJvY2VzcykNCgkvLyBZb3Ugc2hvdWxk IHVzZSBwdXNoU3RhY2soKSBpbiBvcmRlciB0byBkbyB0aGlzLCBidXQgbWFpbnRh aW4gdGhlIHN0YWNrDQoJc2V0QXJyYXk6IGZ1bmN0aW9uKCBlbGVtcyApIHsNCgkJ Ly8gUmVzZXR0aW5nIHRoZSBsZW5ndGggdG8gMCwgdGhlbiB1c2luZyB0aGUgbmF0 aXZlIEFycmF5IHB1c2gNCgkJLy8gaXMgYSBzdXBlci1mYXN0IHdheSB0byBwb3B1 bGF0ZSBhbiBvYmplY3Qgd2l0aCBhcnJheS1saWtlIHByb3BlcnRpZXMNCgkJdGhp cy5sZW5ndGggPSAwOw0KCQlBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSggdGhp cywgZWxlbXMgKTsNCg0KCQlyZXR1cm4gdGhpczsNCgl9LA0KDQoJLy8gRXhlY3V0 ZSBhIGNhbGxiYWNrIGZvciBldmVyeSBlbGVtZW50IGluIHRoZSBtYXRjaGVkIHNl dC4NCgkvLyAoWW91IGNhbiBzZWVkIHRoZSBhcmd1bWVudHMgd2l0aCBhbiBhcnJh eSBvZiBhcmdzLCBidXQgdGhpcyBpcw0KCS8vIG9ubHkgdXNlZCBpbnRlcm5hbGx5 LikNCgllYWNoOiBmdW5jdGlvbiggY2FsbGJhY2ssIGFyZ3MgKSB7DQoJCXJldHVy biBqUXVlcnkuZWFjaCggdGhpcywgY2FsbGJhY2ssIGFyZ3MgKTsNCgl9LA0KDQoJ Ly8gRGV0ZXJtaW5lIHRoZSBwb3NpdGlvbiBvZiBhbiBlbGVtZW50IHdpdGhpbg0K CS8vIHRoZSBtYXRjaGVkIHNldCBvZiBlbGVtZW50cw0KCWluZGV4OiBmdW5jdGlv biggZWxlbSApIHsNCgkJdmFyIHJldCA9IC0xOw0KDQoJCS8vIExvY2F0ZSB0aGUg cG9zaXRpb24gb2YgdGhlIGRlc2lyZWQgZWxlbWVudA0KCQlyZXR1cm4galF1ZXJ5 LmluQXJyYXkoDQoJCQkvLyBJZiBpdCByZWNlaXZlcyBhIGpRdWVyeSBvYmplY3Qs IHRoZSBmaXJzdCBlbGVtZW50IGlzIHVzZWQNCgkJCWVsZW0gJiYgZWxlbS5qcXVl cnkgPyBlbGVtWzBdIDogZWxlbQ0KCQksIHRoaXMgKTsNCgl9LA0KDQoJYXR0cjog ZnVuY3Rpb24oIG5hbWUsIHZhbHVlLCB0eXBlICkgew0KCQl2YXIgb3B0aW9ucyA9 IG5hbWU7DQoNCgkJLy8gTG9vayBmb3IgdGhlIGNhc2Ugd2hlcmUgd2UncmUgYWNj ZXNzaW5nIGEgc3R5bGUgdmFsdWUNCgkJaWYgKCBuYW1lLmNvbnN0cnVjdG9yID09 IFN0cmluZyApDQoJCQlpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgKQ0KCQkJCXJl dHVybiB0aGlzWzBdICYmIGpRdWVyeVsgdHlwZSB8fCAiYXR0ciIgXSggdGhpc1sw XSwgbmFtZSApOw0KDQoJCQllbHNlIHsNCgkJCQlvcHRpb25zID0ge307DQoJCQkJ b3B0aW9uc1sgbmFtZSBdID0gdmFsdWU7DQoJCQl9DQoNCgkJLy8gQ2hlY2sgdG8g c2VlIGlmIHdlJ3JlIHNldHRpbmcgc3R5bGUgdmFsdWVzDQoJCXJldHVybiB0aGlz LmVhY2goZnVuY3Rpb24oaSl7DQoJCQkvLyBTZXQgYWxsIHRoZSBzdHlsZXMNCgkJ CWZvciAoIG5hbWUgaW4gb3B0aW9ucyApDQoJCQkJalF1ZXJ5LmF0dHIoDQoJCQkJ CXR5cGUgPw0KCQkJCQkJdGhpcy5zdHlsZSA6DQoJCQkJCQl0aGlzLA0KCQkJCQlu YW1lLCBqUXVlcnkucHJvcCggdGhpcywgb3B0aW9uc1sgbmFtZSBdLCB0eXBlLCBp LCBuYW1lICkNCgkJCQkpOw0KCQl9KTsNCgl9LA0KDQoJY3NzOiBmdW5jdGlvbigg a2V5LCB2YWx1ZSApIHsNCgkJLy8gaWdub3JlIG5lZ2F0aXZlIHdpZHRoIGFuZCBo ZWlnaHQgdmFsdWVzDQoJCWlmICggKGtleSA9PSAnd2lkdGgnIHx8IGtleSA9PSAn aGVpZ2h0JykgJiYgcGFyc2VGbG9hdCh2YWx1ZSkgPCAwICkNCgkJCXZhbHVlID0g dW5kZWZpbmVkOw0KCQlyZXR1cm4gdGhpcy5hdHRyKCBrZXksIHZhbHVlLCAiY3Vy Q1NTIiApOw0KCX0sDQoNCgl0ZXh0OiBmdW5jdGlvbiggdGV4dCApIHsNCgkJaWYg KCB0eXBlb2YgdGV4dCAhPSAib2JqZWN0IiAmJiB0ZXh0ICE9IG51bGwgKQ0KCQkJ cmV0dXJuIHRoaXMuZW1wdHkoKS5hcHBlbmQoICh0aGlzWzBdICYmIHRoaXNbMF0u b3duZXJEb2N1bWVudCB8fCBkb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUoIHRleHQg KSApOw0KDQoJCXZhciByZXQgPSAiIjsNCg0KCQlqUXVlcnkuZWFjaCggdGV4dCB8 fCB0aGlzLCBmdW5jdGlvbigpew0KCQkJalF1ZXJ5LmVhY2goIHRoaXMuY2hpbGRO b2RlcywgZnVuY3Rpb24oKXsNCgkJCQlpZiAoIHRoaXMubm9kZVR5cGUgIT0gOCAp DQoJCQkJCXJldCArPSB0aGlzLm5vZGVUeXBlICE9IDEgPw0KCQkJCQkJdGhpcy5u b2RlVmFsdWUgOg0KCQkJCQkJalF1ZXJ5LmZuLnRleHQoIFsgdGhpcyBdICk7DQoJ CQl9KTsNCgkJfSk7DQoNCgkJcmV0dXJuIHJldDsNCgl9LA0KDQoJd3JhcEFsbDog ZnVuY3Rpb24oIGh0bWwgKSB7DQoJCWlmICggdGhpc1swXSApDQoJCQkvLyBUaGUg ZWxlbWVudHMgdG8gd3JhcCB0aGUgdGFyZ2V0IGFyb3VuZA0KCQkJalF1ZXJ5KCBo dG1sLCB0aGlzWzBdLm93bmVyRG9jdW1lbnQgKQ0KCQkJCS5jbG9uZSgpDQoJCQkJ Lmluc2VydEJlZm9yZSggdGhpc1swXSApDQoJCQkJLm1hcChmdW5jdGlvbigpew0K CQkJCQl2YXIgZWxlbSA9IHRoaXM7DQoNCgkJCQkJd2hpbGUgKCBlbGVtLmZpcnN0 Q2hpbGQgKQ0KCQkJCQkJZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsNCg0KCQkJCQly ZXR1cm4gZWxlbTsNCgkJCQl9KQ0KCQkJCS5hcHBlbmQodGhpcyk7DQoNCgkJcmV0 dXJuIHRoaXM7DQoJfSwNCg0KCXdyYXBJbm5lcjogZnVuY3Rpb24oIGh0bWwgKSB7 DQoJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXsNCgkJCWpRdWVyeSggdGhp cyApLmNvbnRlbnRzKCkud3JhcEFsbCggaHRtbCApOw0KCQl9KTsNCgl9LA0KDQoJ d3JhcDogZnVuY3Rpb24oIGh0bWwgKSB7DQoJCXJldHVybiB0aGlzLmVhY2goZnVu Y3Rpb24oKXsNCgkJCWpRdWVyeSggdGhpcyApLndyYXBBbGwoIGh0bWwgKTsNCgkJ fSk7DQoJfSwNCg0KCWFwcGVuZDogZnVuY3Rpb24oKSB7DQoJCXJldHVybiB0aGlz LmRvbU1hbmlwKGFyZ3VtZW50cywgdHJ1ZSwgZmFsc2UsIGZ1bmN0aW9uKGVsZW0p ew0KCQkJaWYgKHRoaXMubm9kZVR5cGUgPT0gMSkNCgkJCQl0aGlzLmFwcGVuZENo aWxkKCBlbGVtICk7DQoJCX0pOw0KCX0sDQoNCglwcmVwZW5kOiBmdW5jdGlvbigp IHsNCgkJcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCB0cnVlLCB0cnVl LCBmdW5jdGlvbihlbGVtKXsNCgkJCWlmICh0aGlzLm5vZGVUeXBlID09IDEpDQoJ CQkJdGhpcy5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMuZmlyc3RDaGlsZCApOw0K CQl9KTsNCgl9LA0KDQoJYmVmb3JlOiBmdW5jdGlvbigpIHsNCgkJcmV0dXJuIHRo aXMuZG9tTWFuaXAoYXJndW1lbnRzLCBmYWxzZSwgZmFsc2UsIGZ1bmN0aW9uKGVs ZW0pew0KCQkJdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhp cyApOw0KCQl9KTsNCgl9LA0KDQoJYWZ0ZXI6IGZ1bmN0aW9uKCkgew0KCQlyZXR1 cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsIGZhbHNlLCB0cnVlLCBmdW5jdGlv bihlbGVtKXsNCgkJCXRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0s IHRoaXMubmV4dFNpYmxpbmcgKTsNCgkJfSk7DQoJfSwNCg0KCWVuZDogZnVuY3Rp b24oKSB7DQoJCXJldHVybiB0aGlzLnByZXZPYmplY3QgfHwgalF1ZXJ5KCBbXSAp Ow0KCX0sDQoNCglmaW5kOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7DQoJCXZhciBl bGVtcyA9IGpRdWVyeS5tYXAodGhpcywgZnVuY3Rpb24oZWxlbSl7DQoJCQlyZXR1 cm4galF1ZXJ5LmZpbmQoIHNlbGVjdG9yLCBlbGVtICk7DQoJCX0pOw0KDQoJCXJl dHVybiB0aGlzLnB1c2hTdGFjayggL1teKz5dIFteKz5dLy50ZXN0KCBzZWxlY3Rv ciApIHx8IHNlbGVjdG9yLmluZGV4T2YoIi4uIikgPiAtMSA/DQoJCQlqUXVlcnku dW5pcXVlKCBlbGVtcyApIDoNCgkJCWVsZW1zICk7DQoJfSwNCg0KCWNsb25lOiBm dW5jdGlvbiggZXZlbnRzICkgew0KCQkvLyBEbyB0aGUgY2xvbmUNCgkJdmFyIHJl dCA9IHRoaXMubWFwKGZ1bmN0aW9uKCl7DQoJCQlpZiAoIGpRdWVyeS5icm93c2Vy Lm1zaWUgJiYgIWpRdWVyeS5pc1hNTERvYyh0aGlzKSApIHsNCgkJCQkvLyBJRSBj b3BpZXMgZXZlbnRzIGJvdW5kIHZpYSBhdHRhY2hFdmVudCB3aGVuDQoJCQkJLy8g dXNpbmcgY2xvbmVOb2RlLiBDYWxsaW5nIGRldGFjaEV2ZW50IG9uIHRoZQ0KCQkJ CS8vIGNsb25lIHdpbGwgYWxzbyByZW1vdmUgdGhlIGV2ZW50cyBmcm9tIHRoZSBv cmlnbmFsDQoJCQkJLy8gSW4gb3JkZXIgdG8gZ2V0IGFyb3VuZCB0aGlzLCB3ZSB1 c2UgaW5uZXJIVE1MLg0KCQkJCS8vIFVuZm9ydHVuYXRlbHksIHRoaXMgbWVhbnMg c29tZSBtb2RpZmljYXRpb25zIHRvDQoJCQkJLy8gYXR0cmlidXRlcyBpbiBJRSB0 aGF0IGFyZSBhY3R1YWxseSBvbmx5IHN0b3JlZA0KCQkJCS8vIGFzIHByb3BlcnRp ZXMgd2lsbCBub3QgYmUgY29waWVkIChzdWNoIGFzIHRoZQ0KCQkJCS8vIHRoZSBu YW1lIGF0dHJpYnV0ZSBvbiBhbiBpbnB1dCkuDQoJCQkJdmFyIGNsb25lID0gdGhp cy5jbG9uZU5vZGUodHJ1ZSksDQoJCQkJCWNvbnRhaW5lciA9IGRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoImRpdiIpOw0KCQkJCWNvbnRhaW5lci5hcHBlbmRDaGlsZChj bG9uZSk7DQoJCQkJcmV0dXJuIGpRdWVyeS5jbGVhbihbY29udGFpbmVyLmlubmVy SFRNTF0pWzBdOw0KCQkJfSBlbHNlDQoJCQkJcmV0dXJuIHRoaXMuY2xvbmVOb2Rl KHRydWUpOw0KCQl9KTsNCg0KCQkvLyBOZWVkIHRvIHNldCB0aGUgZXhwYW5kbyB0 byBudWxsIG9uIHRoZSBjbG9uZWQgc2V0IGlmIGl0IGV4aXN0cw0KCQkvLyByZW1v dmVEYXRhIGRvZXNuJ3Qgd29yayBoZXJlLCBJRSByZW1vdmVzIGl0IGZyb20gdGhl IG9yaWdpbmFsIGFzIHdlbGwNCgkJLy8gdGhpcyBpcyBwcmltYXJpbHkgZm9yIElF IGJ1dCB0aGUgZGF0YSBleHBhbmRvIHNob3VsZG4ndCBiZSBjb3BpZWQgb3ZlciBp biBhbnkgYnJvd3Nlcg0KCQl2YXIgY2xvbmUgPSByZXQuZmluZCgiKiIpLmFuZFNl bGYoKS5lYWNoKGZ1bmN0aW9uKCl7DQoJCQlpZiAoIHRoaXNbIGV4cGFuZG8gXSAh PSB1bmRlZmluZWQgKQ0KCQkJCXRoaXNbIGV4cGFuZG8gXSA9IG51bGw7DQoJCX0p Ow0KDQoJCS8vIENvcHkgdGhlIGV2ZW50cyBmcm9tIHRoZSBvcmlnaW5hbCB0byB0 aGUgY2xvbmUNCgkJaWYgKCBldmVudHMgPT09IHRydWUgKQ0KCQkJdGhpcy5maW5k KCIqIikuYW5kU2VsZigpLmVhY2goZnVuY3Rpb24oaSl7DQoJCQkJaWYgKHRoaXMu bm9kZVR5cGUgPT0gMykNCgkJCQkJcmV0dXJuOw0KCQkJCXZhciBldmVudHMgPSBq UXVlcnkuZGF0YSggdGhpcywgImV2ZW50cyIgKTsNCg0KCQkJCWZvciAoIHZhciB0 eXBlIGluIGV2ZW50cyApDQoJCQkJCWZvciAoIHZhciBoYW5kbGVyIGluIGV2ZW50 c1sgdHlwZSBdICkNCgkJCQkJCWpRdWVyeS5ldmVudC5hZGQoIGNsb25lWyBpIF0s IHR5cGUsIGV2ZW50c1sgdHlwZSBdWyBoYW5kbGVyIF0sIGV2ZW50c1sgdHlwZSBd WyBoYW5kbGVyIF0uZGF0YSApOw0KCQkJfSk7DQoNCgkJLy8gUmV0dXJuIHRoZSBj bG9uZWQgc2V0DQoJCXJldHVybiByZXQ7DQoJfSwNCg0KCWZpbHRlcjogZnVuY3Rp b24oIHNlbGVjdG9yICkgew0KCQlyZXR1cm4gdGhpcy5wdXNoU3RhY2soDQoJCQlq UXVlcnkuaXNGdW5jdGlvbiggc2VsZWN0b3IgKSAmJg0KCQkJalF1ZXJ5LmdyZXAo dGhpcywgZnVuY3Rpb24oZWxlbSwgaSl7DQoJCQkJcmV0dXJuIHNlbGVjdG9yLmNh bGwoIGVsZW0sIGkgKTsNCgkJCX0pIHx8DQoNCgkJCWpRdWVyeS5tdWx0aUZpbHRl ciggc2VsZWN0b3IsIHRoaXMgKSApOw0KCX0sDQoNCglub3Q6IGZ1bmN0aW9uKCBz ZWxlY3RvciApIHsNCgkJaWYgKCBzZWxlY3Rvci5jb25zdHJ1Y3RvciA9PSBTdHJp bmcgKQ0KCQkJLy8gdGVzdCBzcGVjaWFsIGNhc2Ugd2hlcmUganVzdCBvbmUgc2Vs ZWN0b3IgaXMgcGFzc2VkIGluDQoJCQlpZiAoIGlzU2ltcGxlLnRlc3QoIHNlbGVj dG9yICkgKQ0KCQkJCXJldHVybiB0aGlzLnB1c2hTdGFjayggalF1ZXJ5Lm11bHRp RmlsdGVyKCBzZWxlY3RvciwgdGhpcywgdHJ1ZSApICk7DQoJCQllbHNlDQoJCQkJ c2VsZWN0b3IgPSBqUXVlcnkubXVsdGlGaWx0ZXIoIHNlbGVjdG9yLCB0aGlzICk7 DQoNCgkJdmFyIGlzQXJyYXlMaWtlID0gc2VsZWN0b3IubGVuZ3RoICYmIHNlbGVj dG9yW3NlbGVjdG9yLmxlbmd0aCAtIDFdICE9PSB1bmRlZmluZWQgJiYgIXNlbGVj dG9yLm5vZGVUeXBlOw0KCQlyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKSB7 DQoJCQlyZXR1cm4gaXNBcnJheUxpa2UgPyBqUXVlcnkuaW5BcnJheSggdGhpcywg c2VsZWN0b3IgKSA8IDAgOiB0aGlzICE9IHNlbGVjdG9yOw0KCQl9KTsNCgl9LA0K DQoJYWRkOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7DQoJCXJldHVybiB0aGlzLnB1 c2hTdGFjayggalF1ZXJ5LnVuaXF1ZSggalF1ZXJ5Lm1lcmdlKA0KCQkJdGhpcy5n ZXQoKSwNCgkJCXR5cGVvZiBzZWxlY3RvciA9PSAnc3RyaW5nJyA/DQoJCQkJalF1 ZXJ5KCBzZWxlY3RvciApIDoNCgkJCQlqUXVlcnkubWFrZUFycmF5KCBzZWxlY3Rv ciApDQoJCSkpKTsNCgl9LA0KDQoJaXM6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsN CgkJcmV0dXJuICEhc2VsZWN0b3IgJiYgalF1ZXJ5Lm11bHRpRmlsdGVyKCBzZWxl Y3RvciwgdGhpcyApLmxlbmd0aCA+IDA7DQoJfSwNCg0KCWhhc0NsYXNzOiBmdW5j dGlvbiggc2VsZWN0b3IgKSB7DQoJCXJldHVybiB0aGlzLmlzKCAiLiIgKyBzZWxl Y3RvciApOw0KCX0sDQoNCgl2YWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHsNCgkJaWYg KCB2YWx1ZSA9PSB1bmRlZmluZWQgKSB7DQoNCgkJCWlmICggdGhpcy5sZW5ndGgg KSB7DQoJCQkJdmFyIGVsZW0gPSB0aGlzWzBdOw0KDQoJCQkJLy8gV2UgbmVlZCB0 byBoYW5kbGUgc2VsZWN0IGJveGVzIHNwZWNpYWwNCgkJCQlpZiAoIGpRdWVyeS5u b2RlTmFtZSggZWxlbSwgInNlbGVjdCIgKSApIHsNCgkJCQkJdmFyIGluZGV4ID0g ZWxlbS5zZWxlY3RlZEluZGV4LA0KCQkJCQkJdmFsdWVzID0gW10sDQoJCQkJCQlv cHRpb25zID0gZWxlbS5vcHRpb25zLA0KCQkJCQkJb25lID0gZWxlbS50eXBlID09 ICJzZWxlY3Qtb25lIjsNCg0KCQkJCQkvLyBOb3RoaW5nIHdhcyBzZWxlY3RlZA0K CQkJCQlpZiAoIGluZGV4IDwgMCApDQoJCQkJCQlyZXR1cm4gbnVsbDsNCg0KCQkJ CQkvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBzZWxlY3RlZCBvcHRpb25zDQoJCQkJ CWZvciAoIHZhciBpID0gb25lID8gaW5kZXggOiAwLCBtYXggPSBvbmUgPyBpbmRl eCArIDEgOiBvcHRpb25zLmxlbmd0aDsgaSA8IG1heDsgaSsrICkgew0KCQkJCQkJ dmFyIG9wdGlvbiA9IG9wdGlvbnNbIGkgXTsNCg0KCQkJCQkJaWYgKCBvcHRpb24u c2VsZWN0ZWQgKSB7DQoJCQkJCQkJLy8gR2V0IHRoZSBzcGVjaWZjIHZhbHVlIGZv ciB0aGUgb3B0aW9uDQoJCQkJCQkJdmFsdWUgPSBqUXVlcnkuYnJvd3Nlci5tc2ll ICYmICFvcHRpb24uYXR0cmlidXRlcy52YWx1ZS5zcGVjaWZpZWQgPyBvcHRpb24u dGV4dCA6IG9wdGlvbi52YWx1ZTsNCg0KCQkJCQkJCS8vIFdlIGRvbid0IG5lZWQg YW4gYXJyYXkgZm9yIG9uZSBzZWxlY3RzDQoJCQkJCQkJaWYgKCBvbmUgKQ0KCQkJ CQkJCQlyZXR1cm4gdmFsdWU7DQoNCgkJCQkJCQkvLyBNdWx0aS1TZWxlY3RzIHJl dHVybiBhbiBhcnJheQ0KCQkJCQkJCXZhbHVlcy5wdXNoKCB2YWx1ZSApOw0KCQkJ CQkJfQ0KCQkJCQl9DQoNCgkJCQkJcmV0dXJuIHZhbHVlczsNCg0KCQkJCS8vIEV2 ZXJ5dGhpbmcgZWxzZSwgd2UganVzdCBncmFiIHRoZSB2YWx1ZQ0KCQkJCX0gZWxz ZQ0KCQkJCQlyZXR1cm4gKHRoaXNbMF0udmFsdWUgfHwgIiIpLnJlcGxhY2UoL1xy L2csICIiKTsNCg0KCQkJfQ0KDQoJCQlyZXR1cm4gdW5kZWZpbmVkOw0KCQl9DQoN CgkJaWYoIHZhbHVlLmNvbnN0cnVjdG9yID09IE51bWJlciApDQoJCQl2YWx1ZSAr PSAnJzsNCg0KCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7DQoJCQlpZiAo IHRoaXMubm9kZVR5cGUgIT0gMSApDQoJCQkJcmV0dXJuOw0KDQoJCQlpZiAoIHZh bHVlLmNvbnN0cnVjdG9yID09IEFycmF5ICYmIC9yYWRpb3xjaGVja2JveC8udGVz dCggdGhpcy50eXBlICkgKQ0KCQkJCXRoaXMuY2hlY2tlZCA9IChqUXVlcnkuaW5B cnJheSh0aGlzLnZhbHVlLCB2YWx1ZSkgPj0gMCB8fA0KCQkJCQlqUXVlcnkuaW5B cnJheSh0aGlzLm5hbWUsIHZhbHVlKSA+PSAwKTsNCg0KCQkJZWxzZSBpZiAoIGpR dWVyeS5ub2RlTmFtZSggdGhpcywgInNlbGVjdCIgKSApIHsNCgkJCQl2YXIgdmFs dWVzID0galF1ZXJ5Lm1ha2VBcnJheSh2YWx1ZSk7DQoNCgkJCQlqUXVlcnkoICJv cHRpb24iLCB0aGlzICkuZWFjaChmdW5jdGlvbigpew0KCQkJCQl0aGlzLnNlbGVj dGVkID0gKGpRdWVyeS5pbkFycmF5KCB0aGlzLnZhbHVlLCB2YWx1ZXMgKSA+PSAw IHx8DQoJCQkJCQlqUXVlcnkuaW5BcnJheSggdGhpcy50ZXh0LCB2YWx1ZXMgKSA+ PSAwKTsNCgkJCQl9KTsNCg0KCQkJCWlmICggIXZhbHVlcy5sZW5ndGggKQ0KCQkJ CQl0aGlzLnNlbGVjdGVkSW5kZXggPSAtMTsNCg0KCQkJfSBlbHNlDQoJCQkJdGhp cy52YWx1ZSA9IHZhbHVlOw0KCQl9KTsNCgl9LA0KDQoJaHRtbDogZnVuY3Rpb24o IHZhbHVlICkgew0KCQlyZXR1cm4gdmFsdWUgPT0gdW5kZWZpbmVkID8NCgkJCSh0 aGlzWzBdID8NCgkJCQl0aGlzWzBdLmlubmVySFRNTCA6DQoJCQkJbnVsbCkgOg0K CQkJdGhpcy5lbXB0eSgpLmFwcGVuZCggdmFsdWUgKTsNCgl9LA0KDQoJcmVwbGFj ZVdpdGg6IGZ1bmN0aW9uKCB2YWx1ZSApIHsNCgkJcmV0dXJuIHRoaXMuYWZ0ZXIo IHZhbHVlICkucmVtb3ZlKCk7DQoJfSwNCg0KCWVxOiBmdW5jdGlvbiggaSApIHsN CgkJcmV0dXJuIHRoaXMuc2xpY2UoIGksIGkgKyAxICk7DQoJfSwNCg0KCXNsaWNl OiBmdW5jdGlvbigpIHsNCgkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBBcnJheS5w cm90b3R5cGUuc2xpY2UuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApICk7DQoJfSwN Cg0KCW1hcDogZnVuY3Rpb24oIGNhbGxiYWNrICkgew0KCQlyZXR1cm4gdGhpcy5w dXNoU3RhY2soIGpRdWVyeS5tYXAodGhpcywgZnVuY3Rpb24oZWxlbSwgaSl7DQoJ CQlyZXR1cm4gY2FsbGJhY2suY2FsbCggZWxlbSwgaSwgZWxlbSApOw0KCQl9KSk7 DQoJfSwNCg0KCWFuZFNlbGY6IGZ1bmN0aW9uKCkgew0KCQlyZXR1cm4gdGhpcy5h ZGQoIHRoaXMucHJldk9iamVjdCApOw0KCX0sDQoNCglkYXRhOiBmdW5jdGlvbigg a2V5LCB2YWx1ZSApew0KCQl2YXIgcGFydHMgPSBrZXkuc3BsaXQoIi4iKTsNCgkJ cGFydHNbMV0gPSBwYXJ0c1sxXSA/ICIuIiArIHBhcnRzWzFdIDogIiI7DQoNCgkJ aWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgew0KCQkJdmFyIGRhdGEgPSB0aGlz LnRyaWdnZXJIYW5kbGVyKCJnZXREYXRhIiArIHBhcnRzWzFdICsgIiEiLCBbcGFy dHNbMF1dKTsNCg0KCQkJaWYgKCBkYXRhID09PSB1bmRlZmluZWQgJiYgdGhpcy5s ZW5ndGggKQ0KCQkJCWRhdGEgPSBqUXVlcnkuZGF0YSggdGhpc1swXSwga2V5ICk7 DQoNCgkJCXJldHVybiBkYXRhID09PSB1bmRlZmluZWQgJiYgcGFydHNbMV0gPw0K CQkJCXRoaXMuZGF0YSggcGFydHNbMF0gKSA6DQoJCQkJZGF0YTsNCgkJfSBlbHNl DQoJCQlyZXR1cm4gdGhpcy50cmlnZ2VyKCJzZXREYXRhIiArIHBhcnRzWzFdICsg IiEiLCBbcGFydHNbMF0sIHZhbHVlXSkuZWFjaChmdW5jdGlvbigpew0KCQkJCWpR dWVyeS5kYXRhKCB0aGlzLCBrZXksIHZhbHVlICk7DQoJCQl9KTsNCgl9LA0KDQoJ cmVtb3ZlRGF0YTogZnVuY3Rpb24oIGtleSApew0KCQlyZXR1cm4gdGhpcy5lYWNo KGZ1bmN0aW9uKCl7DQoJCQlqUXVlcnkucmVtb3ZlRGF0YSggdGhpcywga2V5ICk7 DQoJCX0pOw0KCX0sDQoNCglkb21NYW5pcDogZnVuY3Rpb24oIGFyZ3MsIHRhYmxl LCByZXZlcnNlLCBjYWxsYmFjayApIHsNCgkJdmFyIGNsb25lID0gdGhpcy5sZW5n dGggPiAxLCBlbGVtczsNCg0KCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7 DQoJCQlpZiAoICFlbGVtcyApIHsNCgkJCQllbGVtcyA9IGpRdWVyeS5jbGVhbigg YXJncywgdGhpcy5vd25lckRvY3VtZW50ICk7DQoNCgkJCQlpZiAoIHJldmVyc2Ug KQ0KCQkJCQllbGVtcy5yZXZlcnNlKCk7DQoJCQl9DQoNCgkJCXZhciBvYmogPSB0 aGlzOw0KDQoJCQlpZiAoIHRhYmxlICYmIGpRdWVyeS5ub2RlTmFtZSggdGhpcywg InRhYmxlIiApICYmIGpRdWVyeS5ub2RlTmFtZSggZWxlbXNbMF0sICJ0ciIgKSAp DQoJCQkJb2JqID0gdGhpcy5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVsw XSB8fCB0aGlzLmFwcGVuZENoaWxkKCB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRl RWxlbWVudCgidGJvZHkiKSApOw0KDQoJCQl2YXIgc2NyaXB0cyA9IGpRdWVyeSgg W10gKTsNCg0KCQkJalF1ZXJ5LmVhY2goZWxlbXMsIGZ1bmN0aW9uKCl7DQoJCQkJ dmFyIGVsZW0gPSBjbG9uZSA/DQoJCQkJCWpRdWVyeSggdGhpcyApLmNsb25lKCB0 cnVlIClbMF0gOg0KCQkJCQl0aGlzOw0KDQoJCQkJLy8gZXhlY3V0ZSBhbGwgc2Ny aXB0cyBhZnRlciB0aGUgZWxlbWVudHMgaGF2ZSBiZWVuIGluamVjdGVkDQoJCQkJ aWYgKCBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJzY3JpcHQiICkgKQ0KCQkJCQlz Y3JpcHRzID0gc2NyaXB0cy5hZGQoIGVsZW0gKTsNCgkJCQllbHNlIHsNCgkJCQkJ Ly8gUmVtb3ZlIGFueSBpbm5lciBzY3JpcHRzIGZvciBsYXRlciBldmFsdWF0aW9u DQoJCQkJCWlmICggZWxlbS5ub2RlVHlwZSA9PSAxICkNCgkJCQkJCXNjcmlwdHMg PSBzY3JpcHRzLmFkZCggalF1ZXJ5KCAic2NyaXB0IiwgZWxlbSApLnJlbW92ZSgp ICk7DQoNCgkJCQkJLy8gSW5qZWN0IHRoZSBlbGVtZW50cyBpbnRvIHRoZSBkb2N1 bWVudA0KCQkJCQljYWxsYmFjay5jYWxsKCBvYmosIGVsZW0gKTsNCgkJCQl9DQoJ CQl9KTsNCg0KCQkJc2NyaXB0cy5lYWNoKCBldmFsU2NyaXB0ICk7DQoJCX0pOw0K CX0NCn07DQoNCi8vIEdpdmUgdGhlIGluaXQgZnVuY3Rpb24gdGhlIGpRdWVyeSBw cm90b3R5cGUgZm9yIGxhdGVyIGluc3RhbnRpYXRpb24NCmpRdWVyeS5mbi5pbml0 LnByb3RvdHlwZSA9IGpRdWVyeS5mbjsNCg0KZnVuY3Rpb24gZXZhbFNjcmlwdCgg aSwgZWxlbSApIHsNCglpZiAoIGVsZW0uc3JjICkNCgkJalF1ZXJ5LmFqYXgoew0K CQkJdXJsOiBlbGVtLnNyYywNCgkJCWFzeW5jOiBmYWxzZSwNCgkJCWRhdGFUeXBl OiAic2NyaXB0Ig0KCQl9KTsNCg0KCWVsc2UNCgkJalF1ZXJ5Lmdsb2JhbEV2YWwo IGVsZW0udGV4dCB8fCBlbGVtLnRleHRDb250ZW50IHx8IGVsZW0uaW5uZXJIVE1M IHx8ICIiICk7DQoNCglpZiAoIGVsZW0ucGFyZW50Tm9kZSApDQoJCWVsZW0ucGFy ZW50Tm9kZS5yZW1vdmVDaGlsZCggZWxlbSApOw0KfQ0KDQpmdW5jdGlvbiBub3co KXsNCglyZXR1cm4gK25ldyBEYXRlOw0KfQ0KDQpqUXVlcnkuZXh0ZW5kID0galF1 ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkgew0KCS8vIGNvcHkgcmVmZXJlbmNl IHRvIHRhcmdldCBvYmplY3QNCgl2YXIgdGFyZ2V0ID0gYXJndW1lbnRzWzBdIHx8 IHt9LCBpID0gMSwgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCwgZGVlcCA9IGZh bHNlLCBvcHRpb25zOw0KDQoJLy8gSGFuZGxlIGEgZGVlcCBjb3B5IHNpdHVhdGlv bg0KCWlmICggdGFyZ2V0LmNvbnN0cnVjdG9yID09IEJvb2xlYW4gKSB7DQoJCWRl ZXAgPSB0YXJnZXQ7DQoJCXRhcmdldCA9IGFyZ3VtZW50c1sxXSB8fCB7fTsNCgkJ Ly8gc2tpcCB0aGUgYm9vbGVhbiBhbmQgdGhlIHRhcmdldA0KCQlpID0gMjsNCgl9 DQoNCgkvLyBIYW5kbGUgY2FzZSB3aGVuIHRhcmdldCBpcyBhIHN0cmluZyBvciBz b21ldGhpbmcgKHBvc3NpYmxlIGluIGRlZXAgY29weSkNCglpZiAoIHR5cGVvZiB0 YXJnZXQgIT0gIm9iamVjdCIgJiYgdHlwZW9mIHRhcmdldCAhPSAiZnVuY3Rpb24i ICkNCgkJdGFyZ2V0ID0ge307DQoNCgkvLyBleHRlbmQgalF1ZXJ5IGl0c2VsZiBp ZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBwYXNzZWQNCglpZiAoIGxlbmd0aCA9PSBp ICkgew0KCQl0YXJnZXQgPSB0aGlzOw0KCQktLWk7DQoJfQ0KDQoJZm9yICggOyBp IDwgbGVuZ3RoOyBpKysgKQ0KCQkvLyBPbmx5IGRlYWwgd2l0aCBub24tbnVsbC91 bmRlZmluZWQgdmFsdWVzDQoJCWlmICggKG9wdGlvbnMgPSBhcmd1bWVudHNbIGkg XSkgIT0gbnVsbCApDQoJCQkvLyBFeHRlbmQgdGhlIGJhc2Ugb2JqZWN0DQoJCQlm b3IgKCB2YXIgbmFtZSBpbiBvcHRpb25zICkgew0KCQkJCXZhciBzcmMgPSB0YXJn ZXRbIG5hbWUgXSwgY29weSA9IG9wdGlvbnNbIG5hbWUgXTsNCg0KCQkJCS8vIFBy ZXZlbnQgbmV2ZXItZW5kaW5nIGxvb3ANCgkJCQlpZiAoIHRhcmdldCA9PT0gY29w eSApDQoJCQkJCWNvbnRpbnVlOw0KDQoJCQkJLy8gUmVjdXJzZSBpZiB3ZSdyZSBt ZXJnaW5nIG9iamVjdCB2YWx1ZXMNCgkJCQlpZiAoIGRlZXAgJiYgY29weSAmJiB0 eXBlb2YgY29weSA9PSAib2JqZWN0IiAmJiAhY29weS5ub2RlVHlwZSApDQoJCQkJ CXRhcmdldFsgbmFtZSBdID0galF1ZXJ5LmV4dGVuZCggZGVlcCwgDQoJCQkJCQkv LyBOZXZlciBtb3ZlIG9yaWdpbmFsIG9iamVjdHMsIGNsb25lIHRoZW0NCgkJCQkJ CXNyYyB8fCAoIGNvcHkubGVuZ3RoICE9IG51bGwgPyBbIF0gOiB7IH0gKQ0KCQkJ CQksIGNvcHkgKTsNCg0KCQkJCS8vIERvbid0IGJyaW5nIGluIHVuZGVmaW5lZCB2 YWx1ZXMNCgkJCQllbHNlIGlmICggY29weSAhPT0gdW5kZWZpbmVkICkNCgkJCQkJ dGFyZ2V0WyBuYW1lIF0gPSBjb3B5Ow0KDQoJCQl9DQoNCgkvLyBSZXR1cm4gdGhl IG1vZGlmaWVkIG9iamVjdA0KCXJldHVybiB0YXJnZXQ7DQp9Ow0KDQp2YXIgZXhw YW5kbyA9ICJqUXVlcnkiICsgbm93KCksIHV1aWQgPSAwLCB3aW5kb3dEYXRhID0g e30sDQoJLy8gZXhjbHVkZSB0aGUgZm9sbG93aW5nIGNzcyBwcm9wZXJ0aWVzIHRv IGFkZCBweA0KCWV4Y2x1ZGUgPSAvei0/aW5kZXh8Zm9udC0/d2VpZ2h0fG9wYWNp dHl8em9vbXxsaW5lLT9oZWlnaHQvaSwNCgkvLyBjYWNoZSBkZWZhdWx0Vmlldw0K CWRlZmF1bHRWaWV3ID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwge307DQoNCmpR dWVyeS5leHRlbmQoew0KCW5vQ29uZmxpY3Q6IGZ1bmN0aW9uKCBkZWVwICkgew0K CQl3aW5kb3cuJCA9IF8kOw0KDQoJCWlmICggZGVlcCApDQoJCQl3aW5kb3cualF1 ZXJ5ID0gX2pRdWVyeTsNCg0KCQlyZXR1cm4galF1ZXJ5Ow0KCX0sDQoNCgkvLyBT ZWUgdGVzdC91bml0L2NvcmUuanMgZm9yIGRldGFpbHMgY29uY2VybmluZyB0aGlz IGZ1bmN0aW9uLg0KCWlzRnVuY3Rpb246IGZ1bmN0aW9uKCBmbiApIHsNCgkJcmV0 dXJuICEhZm4gJiYgdHlwZW9mIGZuICE9ICJzdHJpbmciICYmICFmbi5ub2RlTmFt ZSAmJg0KCQkJZm4uY29uc3RydWN0b3IgIT0gQXJyYXkgJiYgL15bXHNbXT9mdW5j dGlvbi8udGVzdCggZm4gKyAiIiApOw0KCX0sDQoNCgkvLyBjaGVjayBpZiBhbiBl bGVtZW50IGlzIGluIGEgKG9yIGlzIGFuKSBYTUwgZG9jdW1lbnQNCglpc1hNTERv YzogZnVuY3Rpb24oIGVsZW0gKSB7DQoJCXJldHVybiBlbGVtLmRvY3VtZW50RWxl bWVudCAmJiAhZWxlbS5ib2R5IHx8DQoJCQllbGVtLnRhZ05hbWUgJiYgZWxlbS5v d25lckRvY3VtZW50ICYmICFlbGVtLm93bmVyRG9jdW1lbnQuYm9keTsNCgl9LA0K DQoJLy8gRXZhbHVsYXRlcyBhIHNjcmlwdCBpbiBhIGdsb2JhbCBjb250ZXh0DQoJ Z2xvYmFsRXZhbDogZnVuY3Rpb24oIGRhdGEgKSB7DQoJCWRhdGEgPSBqUXVlcnku dHJpbSggZGF0YSApOw0KDQoJCWlmICggZGF0YSApIHsNCgkJCS8vIEluc3BpcmVk IGJ5IGNvZGUgYnkgQW5kcmVhIEdpYW1tYXJjaGkNCgkJCS8vIGh0dHA6Ly93ZWJy ZWZsZWN0aW9uLmJsb2dzcG90LmNvbS8yMDA3LzA4L2dsb2JhbC1zY29wZS1ldmFs dWF0aW9uLWFuZC1kb20uaHRtbA0KCQkJdmFyIGhlYWQgPSBkb2N1bWVudC5nZXRF bGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdIHx8IGRvY3VtZW50LmRvY3VtZW50 RWxlbWVudCwNCgkJCQlzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz Y3JpcHQiKTsNCg0KCQkJc2NyaXB0LnR5cGUgPSAidGV4dC9qYXZhc2NyaXB0IjsN CgkJCWlmICggalF1ZXJ5LmJyb3dzZXIubXNpZSApDQoJCQkJc2NyaXB0LnRleHQg PSBkYXRhOw0KCQkJZWxzZQ0KCQkJCXNjcmlwdC5hcHBlbmRDaGlsZCggZG9jdW1l bnQuY3JlYXRlVGV4dE5vZGUoIGRhdGEgKSApOw0KDQoJCQkvLyBVc2UgaW5zZXJ0 QmVmb3JlIGluc3RlYWQgb2YgYXBwZW5kQ2hpbGQgIHRvIGNpcmN1bXZlbnQgYW4g SUU2IGJ1Zy4NCgkJCS8vIFRoaXMgYXJpc2VzIHdoZW4gYSBiYXNlIG5vZGUgaXMg dXNlZCAoIzI3MDkpLg0KCQkJaGVhZC5pbnNlcnRCZWZvcmUoIHNjcmlwdCwgaGVh ZC5maXJzdENoaWxkICk7DQoJCQloZWFkLnJlbW92ZUNoaWxkKCBzY3JpcHQgKTsN CgkJfQ0KCX0sDQoNCglub2RlTmFtZTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7 DQoJCXJldHVybiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9VcHBl ckNhc2UoKSA9PSBuYW1lLnRvVXBwZXJDYXNlKCk7DQoJfSwNCg0KCWNhY2hlOiB7 fSwNCg0KCWRhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBkYXRhICkgew0KCQll bGVtID0gZWxlbSA9PSB3aW5kb3cgPw0KCQkJd2luZG93RGF0YSA6DQoJCQllbGVt Ow0KDQoJCXZhciBpZCA9IGVsZW1bIGV4cGFuZG8gXTsNCg0KCQkvLyBDb21wdXRl IGEgdW5pcXVlIElEIGZvciB0aGUgZWxlbWVudA0KCQlpZiAoICFpZCApDQoJCQlp ZCA9IGVsZW1bIGV4cGFuZG8gXSA9ICsrdXVpZDsNCg0KCQkvLyBPbmx5IGdlbmVy YXRlIHRoZSBkYXRhIGNhY2hlIGlmIHdlJ3JlDQoJCS8vIHRyeWluZyB0byBhY2Nl c3Mgb3IgbWFuaXB1bGF0ZSBpdA0KCQlpZiAoIG5hbWUgJiYgIWpRdWVyeS5jYWNo ZVsgaWQgXSApDQoJCQlqUXVlcnkuY2FjaGVbIGlkIF0gPSB7fTsNCg0KCQkvLyBQ cmV2ZW50IG92ZXJyaWRpbmcgdGhlIG5hbWVkIGNhY2hlIHdpdGggdW5kZWZpbmVk IHZhbHVlcw0KCQlpZiAoIGRhdGEgIT09IHVuZGVmaW5lZCApDQoJCQlqUXVlcnku Y2FjaGVbIGlkIF1bIG5hbWUgXSA9IGRhdGE7DQoNCgkJLy8gUmV0dXJuIHRoZSBu YW1lZCBjYWNoZSBkYXRhLCBvciB0aGUgSUQgZm9yIHRoZSBlbGVtZW50DQoJCXJl dHVybiBuYW1lID8NCgkJCWpRdWVyeS5jYWNoZVsgaWQgXVsgbmFtZSBdIDoNCgkJ CWlkOw0KCX0sDQoNCglyZW1vdmVEYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSAp IHsNCgkJZWxlbSA9IGVsZW0gPT0gd2luZG93ID8NCgkJCXdpbmRvd0RhdGEgOg0K CQkJZWxlbTsNCg0KCQl2YXIgaWQgPSBlbGVtWyBleHBhbmRvIF07DQoNCgkJLy8g SWYgd2Ugd2FudCB0byByZW1vdmUgYSBzcGVjaWZpYyBzZWN0aW9uIG9mIHRoZSBl bGVtZW50J3MgZGF0YQ0KCQlpZiAoIG5hbWUgKSB7DQoJCQlpZiAoIGpRdWVyeS5j YWNoZVsgaWQgXSApIHsNCgkJCQkvLyBSZW1vdmUgdGhlIHNlY3Rpb24gb2YgY2Fj aGUgZGF0YQ0KCQkJCWRlbGV0ZSBqUXVlcnkuY2FjaGVbIGlkIF1bIG5hbWUgXTsN Cg0KCQkJCS8vIElmIHdlJ3ZlIHJlbW92ZWQgYWxsIHRoZSBkYXRhLCByZW1vdmUg dGhlIGVsZW1lbnQncyBjYWNoZQ0KCQkJCW5hbWUgPSAiIjsNCg0KCQkJCWZvciAo IG5hbWUgaW4galF1ZXJ5LmNhY2hlWyBpZCBdICkNCgkJCQkJYnJlYWs7DQoNCgkJ CQlpZiAoICFuYW1lICkNCgkJCQkJalF1ZXJ5LnJlbW92ZURhdGEoIGVsZW0gKTsN CgkJCX0NCg0KCQkvLyBPdGhlcndpc2UsIHdlIHdhbnQgdG8gcmVtb3ZlIGFsbCBv ZiB0aGUgZWxlbWVudCdzIGRhdGENCgkJfSBlbHNlIHsNCgkJCS8vIENsZWFuIHVw IHRoZSBlbGVtZW50IGV4cGFuZG8NCgkJCXRyeSB7DQoJCQkJZGVsZXRlIGVsZW1b IGV4cGFuZG8gXTsNCgkJCX0gY2F0Y2goZSl7DQoJCQkJLy8gSUUgaGFzIHRyb3Vi bGUgZGlyZWN0bHkgcmVtb3ZpbmcgdGhlIGV4cGFuZG8NCgkJCQkvLyBidXQgaXQn cyBvayB3aXRoIHVzaW5nIHJlbW92ZUF0dHJpYnV0ZQ0KCQkJCWlmICggZWxlbS5y ZW1vdmVBdHRyaWJ1dGUgKQ0KCQkJCQllbGVtLnJlbW92ZUF0dHJpYnV0ZSggZXhw YW5kbyApOw0KCQkJfQ0KDQoJCQkvLyBDb21wbGV0ZWx5IHJlbW92ZSB0aGUgZGF0 YSBjYWNoZQ0KCQkJZGVsZXRlIGpRdWVyeS5jYWNoZVsgaWQgXTsNCgkJfQ0KCX0s DQoNCgkvLyBhcmdzIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5DQoJZWFjaDog ZnVuY3Rpb24oIG9iamVjdCwgY2FsbGJhY2ssIGFyZ3MgKSB7DQoJCXZhciBuYW1l LCBpID0gMCwgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDsNCg0KCQlpZiAoIGFyZ3Mg KSB7DQoJCQlpZiAoIGxlbmd0aCA9PSB1bmRlZmluZWQgKSB7DQoJCQkJZm9yICgg bmFtZSBpbiBvYmplY3QgKQ0KCQkJCQlpZiAoIGNhbGxiYWNrLmFwcGx5KCBvYmpl Y3RbIG5hbWUgXSwgYXJncyApID09PSBmYWxzZSApDQoJCQkJCQlicmVhazsNCgkJ CX0gZWxzZQ0KCQkJCWZvciAoIDsgaSA8IGxlbmd0aDsgKQ0KCQkJCQlpZiAoIGNh bGxiYWNrLmFwcGx5KCBvYmplY3RbIGkrKyBdLCBhcmdzICkgPT09IGZhbHNlICkN CgkJCQkJCWJyZWFrOw0KDQoJCS8vIEEgc3BlY2lhbCwgZmFzdCwgY2FzZSBmb3Ig dGhlIG1vc3QgY29tbW9uIHVzZSBvZiBlYWNoDQoJCX0gZWxzZSB7DQoJCQlpZiAo IGxlbmd0aCA9PSB1bmRlZmluZWQgKSB7DQoJCQkJZm9yICggbmFtZSBpbiBvYmpl Y3QgKQ0KCQkJCQlpZiAoIGNhbGxiYWNrLmNhbGwoIG9iamVjdFsgbmFtZSBdLCBu YW1lLCBvYmplY3RbIG5hbWUgXSApID09PSBmYWxzZSApDQoJCQkJCQlicmVhazsN CgkJCX0gZWxzZQ0KCQkJCWZvciAoIHZhciB2YWx1ZSA9IG9iamVjdFswXTsNCgkJ CQkJaSA8IGxlbmd0aCAmJiBjYWxsYmFjay5jYWxsKCB2YWx1ZSwgaSwgdmFsdWUg KSAhPT0gZmFsc2U7IHZhbHVlID0gb2JqZWN0WysraV0gKXt9DQoJCX0NCg0KCQly ZXR1cm4gb2JqZWN0Ow0KCX0sDQoNCglwcm9wOiBmdW5jdGlvbiggZWxlbSwgdmFs dWUsIHR5cGUsIGksIG5hbWUgKSB7DQoJCS8vIEhhbmRsZSBleGVjdXRhYmxlIGZ1 bmN0aW9ucw0KCQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApICkNCgkJ CXZhbHVlID0gdmFsdWUuY2FsbCggZWxlbSwgaSApOw0KDQoJCS8vIEhhbmRsZSBw YXNzaW5nIGluIGEgbnVtYmVyIHRvIGEgQ1NTIHByb3BlcnR5DQoJCXJldHVybiB2 YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvciA9PSBOdW1iZXIgJiYgdHlwZSA9PSAi Y3VyQ1NTIiAmJiAhZXhjbHVkZS50ZXN0KCBuYW1lICkgPw0KCQkJdmFsdWUgKyAi cHgiIDoNCgkJCXZhbHVlOw0KCX0sDQoNCgljbGFzc05hbWU6IHsNCgkJLy8gaW50 ZXJuYWwgb25seSwgdXNlIGFkZENsYXNzKCJjbGFzcyIpDQoJCWFkZDogZnVuY3Rp b24oIGVsZW0sIGNsYXNzTmFtZXMgKSB7DQoJCQlqUXVlcnkuZWFjaCgoY2xhc3NO YW1lcyB8fCAiIikuc3BsaXQoL1xzKy8pLCBmdW5jdGlvbihpLCBjbGFzc05hbWUp ew0KCQkJCWlmICggZWxlbS5ub2RlVHlwZSA9PSAxICYmICFqUXVlcnkuY2xhc3NO YW1lLmhhcyggZWxlbS5jbGFzc05hbWUsIGNsYXNzTmFtZSApICkNCgkJCQkJZWxl bS5jbGFzc05hbWUgKz0gKGVsZW0uY2xhc3NOYW1lID8gIiAiIDogIiIpICsgY2xh c3NOYW1lOw0KCQkJfSk7DQoJCX0sDQoNCgkJLy8gaW50ZXJuYWwgb25seSwgdXNl IHJlbW92ZUNsYXNzKCJjbGFzcyIpDQoJCXJlbW92ZTogZnVuY3Rpb24oIGVsZW0s IGNsYXNzTmFtZXMgKSB7DQoJCQlpZiAoZWxlbS5ub2RlVHlwZSA9PSAxKQ0KCQkJ CWVsZW0uY2xhc3NOYW1lID0gY2xhc3NOYW1lcyAhPSB1bmRlZmluZWQgPw0KCQkJ CQlqUXVlcnkuZ3JlcChlbGVtLmNsYXNzTmFtZS5zcGxpdCgvXHMrLyksIGZ1bmN0 aW9uKGNsYXNzTmFtZSl7DQoJCQkJCQlyZXR1cm4gIWpRdWVyeS5jbGFzc05hbWUu aGFzKCBjbGFzc05hbWVzLCBjbGFzc05hbWUgKTsNCgkJCQkJfSkuam9pbigiICIp IDoNCgkJCQkJIiI7DQoJCX0sDQoNCgkJLy8gaW50ZXJuYWwgb25seSwgdXNlIGhh c0NsYXNzKCJjbGFzcyIpDQoJCWhhczogZnVuY3Rpb24oIGVsZW0sIGNsYXNzTmFt ZSApIHsNCgkJCXJldHVybiBqUXVlcnkuaW5BcnJheSggY2xhc3NOYW1lLCAoZWxl bS5jbGFzc05hbWUgfHwgZWxlbSkudG9TdHJpbmcoKS5zcGxpdCgvXHMrLykgKSA+ IC0xOw0KCQl9DQoJfSwNCg0KCS8vIEEgbWV0aG9kIGZvciBxdWlja2x5IHN3YXBw aW5nIGluL291dCBDU1MgcHJvcGVydGllcyB0byBnZXQgY29ycmVjdCBjYWxjdWxh dGlvbnMNCglzd2FwOiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgY2FsbGJhY2sg KSB7DQoJCXZhciBvbGQgPSB7fTsNCgkJLy8gUmVtZW1iZXIgdGhlIG9sZCB2YWx1 ZXMsIGFuZCBpbnNlcnQgdGhlIG5ldyBvbmVzDQoJCWZvciAoIHZhciBuYW1lIGlu IG9wdGlvbnMgKSB7DQoJCQlvbGRbIG5hbWUgXSA9IGVsZW0uc3R5bGVbIG5hbWUg XTsNCgkJCWVsZW0uc3R5bGVbIG5hbWUgXSA9IG9wdGlvbnNbIG5hbWUgXTsNCgkJ fQ0KDQoJCWNhbGxiYWNrLmNhbGwoIGVsZW0gKTsNCg0KCQkvLyBSZXZlcnQgdGhl IG9sZCB2YWx1ZXMNCgkJZm9yICggdmFyIG5hbWUgaW4gb3B0aW9ucyApDQoJCQll bGVtLnN0eWxlWyBuYW1lIF0gPSBvbGRbIG5hbWUgXTsNCgl9LA0KDQoJY3NzOiBm dW5jdGlvbiggZWxlbSwgbmFtZSwgZm9yY2UgKSB7DQoJCWlmICggbmFtZSA9PSAi d2lkdGgiIHx8IG5hbWUgPT0gImhlaWdodCIgKSB7DQoJCQl2YXIgdmFsLCBwcm9w cyA9IHsgcG9zaXRpb246ICJhYnNvbHV0ZSIsIHZpc2liaWxpdHk6ICJoaWRkZW4i LCBkaXNwbGF5OiJibG9jayIgfSwgd2hpY2ggPSBuYW1lID09ICJ3aWR0aCIgPyBb ICJMZWZ0IiwgIlJpZ2h0IiBdIDogWyAiVG9wIiwgIkJvdHRvbSIgXTsNCg0KCQkJ ZnVuY3Rpb24gZ2V0V0goKSB7DQoJCQkJdmFsID0gbmFtZSA9PSAid2lkdGgiID8g ZWxlbS5vZmZzZXRXaWR0aCA6IGVsZW0ub2Zmc2V0SGVpZ2h0Ow0KCQkJCXZhciBw YWRkaW5nID0gMCwgYm9yZGVyID0gMDsNCgkJCQlqUXVlcnkuZWFjaCggd2hpY2gs IGZ1bmN0aW9uKCkgew0KCQkJCQlwYWRkaW5nICs9IHBhcnNlRmxvYXQoalF1ZXJ5 LmN1ckNTUyggZWxlbSwgInBhZGRpbmciICsgdGhpcywgdHJ1ZSkpIHx8IDA7DQoJ CQkJCWJvcmRlciArPSBwYXJzZUZsb2F0KGpRdWVyeS5jdXJDU1MoIGVsZW0sICJi b3JkZXIiICsgdGhpcyArICJXaWR0aCIsIHRydWUpKSB8fCAwOw0KCQkJCX0pOw0K CQkJCXZhbCAtPSBNYXRoLnJvdW5kKHBhZGRpbmcgKyBib3JkZXIpOw0KCQkJfQ0K DQoJCQlpZiAoIGpRdWVyeShlbGVtKS5pcygiOnZpc2libGUiKSApDQoJCQkJZ2V0 V0goKTsNCgkJCWVsc2UNCgkJCQlqUXVlcnkuc3dhcCggZWxlbSwgcHJvcHMsIGdl dFdIICk7DQoNCgkJCXJldHVybiBNYXRoLm1heCgwLCB2YWwpOw0KCQl9DQoNCgkJ cmV0dXJuIGpRdWVyeS5jdXJDU1MoIGVsZW0sIG5hbWUsIGZvcmNlICk7DQoJfSwN Cg0KCWN1ckNTUzogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGZvcmNlICkgew0KCQl2 YXIgcmV0LCBzdHlsZSA9IGVsZW0uc3R5bGU7DQoNCgkJLy8gQSBoZWxwZXIgbWV0 aG9kIGZvciBkZXRlcm1pbmluZyBpZiBhbiBlbGVtZW50J3MgdmFsdWVzIGFyZSBi cm9rZW4NCgkJZnVuY3Rpb24gY29sb3IoIGVsZW0gKSB7DQoJCQlpZiAoICFqUXVl cnkuYnJvd3Nlci5zYWZhcmkgKQ0KCQkJCXJldHVybiBmYWxzZTsNCg0KCQkJLy8g ZGVmYXVsdFZpZXcgaXMgY2FjaGVkDQoJCQl2YXIgcmV0ID0gZGVmYXVsdFZpZXcu Z2V0Q29tcHV0ZWRTdHlsZSggZWxlbSwgbnVsbCApOw0KCQkJcmV0dXJuICFyZXQg fHwgcmV0LmdldFByb3BlcnR5VmFsdWUoImNvbG9yIikgPT0gIiI7DQoJCX0NCg0K CQkvLyBXZSBuZWVkIHRvIGhhbmRsZSBvcGFjaXR5IHNwZWNpYWwgaW4gSUUNCgkJ aWYgKCBuYW1lID09ICJvcGFjaXR5IiAmJiBqUXVlcnkuYnJvd3Nlci5tc2llICkg ew0KCQkJcmV0ID0galF1ZXJ5LmF0dHIoIHN0eWxlLCAib3BhY2l0eSIgKTsNCg0K CQkJcmV0dXJuIHJldCA9PSAiIiA/DQoJCQkJIjEiIDoNCgkJCQlyZXQ7DQoJCX0N CgkJLy8gT3BlcmEgc29tZXRpbWVzIHdpbGwgZ2l2ZSB0aGUgd3JvbmcgZGlzcGxh eSBhbnN3ZXIsIHRoaXMgZml4ZXMgaXQsIHNlZSAjMjAzNw0KCQlpZiAoIGpRdWVy eS5icm93c2VyLm9wZXJhICYmIG5hbWUgPT0gImRpc3BsYXkiICkgew0KCQkJdmFy IHNhdmUgPSBzdHlsZS5vdXRsaW5lOw0KCQkJc3R5bGUub3V0bGluZSA9ICIwIHNv bGlkIGJsYWNrIjsNCgkJCXN0eWxlLm91dGxpbmUgPSBzYXZlOw0KCQl9DQoNCgkJ Ly8gTWFrZSBzdXJlIHdlJ3JlIHVzaW5nIHRoZSByaWdodCBuYW1lIGZvciBnZXR0 aW5nIHRoZSBmbG9hdCB2YWx1ZQ0KCQlpZiAoIG5hbWUubWF0Y2goIC9mbG9hdC9p ICkgKQ0KCQkJbmFtZSA9IHN0eWxlRmxvYXQ7DQoNCgkJaWYgKCAhZm9yY2UgJiYg c3R5bGUgJiYgc3R5bGVbIG5hbWUgXSApDQoJCQlyZXQgPSBzdHlsZVsgbmFtZSBd Ow0KDQoJCWVsc2UgaWYgKCBkZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlICkg ew0KDQoJCQkvLyBPbmx5ICJmbG9hdCIgaXMgbmVlZGVkIGhlcmUNCgkJCWlmICgg bmFtZS5tYXRjaCggL2Zsb2F0L2kgKSApDQoJCQkJbmFtZSA9ICJmbG9hdCI7DQoN CgkJCW5hbWUgPSBuYW1lLnJlcGxhY2UoIC8oW0EtWl0pL2csICItJDEiICkudG9M b3dlckNhc2UoKTsNCg0KCQkJdmFyIGNvbXB1dGVkU3R5bGUgPSBkZWZhdWx0Vmll dy5nZXRDb21wdXRlZFN0eWxlKCBlbGVtLCBudWxsICk7DQoNCgkJCWlmICggY29t cHV0ZWRTdHlsZSAmJiAhY29sb3IoIGVsZW0gKSApDQoJCQkJcmV0ID0gY29tcHV0 ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCBuYW1lICk7DQoNCgkJCS8vIElmIHRo ZSBlbGVtZW50IGlzbid0IHJlcG9ydGluZyBpdHMgdmFsdWVzIHByb3Blcmx5IGlu IFNhZmFyaQ0KCQkJLy8gdGhlbiBzb21lIGRpc3BsYXk6IG5vbmUgZWxlbWVudHMg YXJlIGludm9sdmVkDQoJCQllbHNlIHsNCgkJCQl2YXIgc3dhcCA9IFtdLCBzdGFj ayA9IFtdLCBhID0gZWxlbSwgaSA9IDA7DQoNCgkJCQkvLyBMb2NhdGUgYWxsIG9m IHRoZSBwYXJlbnQgZGlzcGxheTogbm9uZSBlbGVtZW50cw0KCQkJCWZvciAoIDsg YSAmJiBjb2xvcihhKTsgYSA9IGEucGFyZW50Tm9kZSApDQoJCQkJCXN0YWNrLnVu c2hpZnQoYSk7DQoNCgkJCQkvLyBHbyB0aHJvdWdoIGFuZCBtYWtlIHRoZW0gdmlz aWJsZSwgYnV0IGluIHJldmVyc2UNCgkJCQkvLyAoSXQgd291bGQgYmUgYmV0dGVy IGlmIHdlIGtuZXcgdGhlIGV4YWN0IGRpc3BsYXkgdHlwZSB0aGF0IHRoZXkgaGFk KQ0KCQkJCWZvciAoIDsgaSA8IHN0YWNrLmxlbmd0aDsgaSsrICkNCgkJCQkJaWYg KCBjb2xvciggc3RhY2tbIGkgXSApICkgew0KCQkJCQkJc3dhcFsgaSBdID0gc3Rh Y2tbIGkgXS5zdHlsZS5kaXNwbGF5Ow0KCQkJCQkJc3RhY2tbIGkgXS5zdHlsZS5k aXNwbGF5ID0gImJsb2NrIjsNCgkJCQkJfQ0KDQoJCQkJLy8gU2luY2Ugd2UgZmxp cCB0aGUgZGlzcGxheSBzdHlsZSwgd2UgaGF2ZSB0byBoYW5kbGUgdGhhdA0KCQkJ CS8vIG9uZSBzcGVjaWFsLCBvdGhlcndpc2UgZ2V0IHRoZSB2YWx1ZQ0KCQkJCXJl dCA9IG5hbWUgPT0gImRpc3BsYXkiICYmIHN3YXBbIHN0YWNrLmxlbmd0aCAtIDEg XSAhPSBudWxsID8NCgkJCQkJIm5vbmUiIDoNCgkJCQkJKCBjb21wdXRlZFN0eWxl ICYmIGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSggbmFtZSApICkgfHwg IiI7DQoNCgkJCQkvLyBGaW5hbGx5LCByZXZlcnQgdGhlIGRpc3BsYXkgc3R5bGVz IGJhY2sNCgkJCQlmb3IgKCBpID0gMDsgaSA8IHN3YXAubGVuZ3RoOyBpKysgKQ0K CQkJCQlpZiAoIHN3YXBbIGkgXSAhPSBudWxsICkNCgkJCQkJCXN0YWNrWyBpIF0u c3R5bGUuZGlzcGxheSA9IHN3YXBbIGkgXTsNCgkJCX0NCg0KCQkJLy8gV2Ugc2hv dWxkIGFsd2F5cyBnZXQgYSBudW1iZXIgYmFjayBmcm9tIG9wYWNpdHkNCgkJCWlm ICggbmFtZSA9PSAib3BhY2l0eSIgJiYgcmV0ID09ICIiICkNCgkJCQlyZXQgPSAi MSI7DQoNCgkJfSBlbHNlIGlmICggZWxlbS5jdXJyZW50U3R5bGUgKSB7DQoJCQl2 YXIgY2FtZWxDYXNlID0gbmFtZS5yZXBsYWNlKC9cLShcdykvZywgZnVuY3Rpb24o YWxsLCBsZXR0ZXIpew0KCQkJCXJldHVybiBsZXR0ZXIudG9VcHBlckNhc2UoKTsN CgkJCX0pOw0KDQoJCQlyZXQgPSBlbGVtLmN1cnJlbnRTdHlsZVsgbmFtZSBdIHx8 IGVsZW0uY3VycmVudFN0eWxlWyBjYW1lbENhc2UgXTsNCg0KCQkJLy8gRnJvbSB0 aGUgYXdlc29tZSBoYWNrIGJ5IERlYW4gRWR3YXJkcw0KCQkJLy8gaHR0cDovL2Vy aWsuZWFlLm5ldC9hcmNoaXZlcy8yMDA3LzA3LzI3LzE4LjU0LjE1LyNjb21tZW50 LTEwMjI5MQ0KDQoJCQkvLyBJZiB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGEgcmVn dWxhciBwaXhlbCBudW1iZXINCgkJCS8vIGJ1dCBhIG51bWJlciB0aGF0IGhhcyBh IHdlaXJkIGVuZGluZywgd2UgbmVlZCB0byBjb252ZXJ0IGl0IHRvIHBpeGVscw0K CQkJaWYgKCAhL15cZCsocHgpPyQvaS50ZXN0KCByZXQgKSAmJiAvXlxkLy50ZXN0 KCByZXQgKSApIHsNCgkJCQkvLyBSZW1lbWJlciB0aGUgb3JpZ2luYWwgdmFsdWVz DQoJCQkJdmFyIGxlZnQgPSBzdHlsZS5sZWZ0LCByc0xlZnQgPSBlbGVtLnJ1bnRp bWVTdHlsZS5sZWZ0Ow0KDQoJCQkJLy8gUHV0IGluIHRoZSBuZXcgdmFsdWVzIHRv IGdldCBhIGNvbXB1dGVkIHZhbHVlIG91dA0KCQkJCWVsZW0ucnVudGltZVN0eWxl LmxlZnQgPSBlbGVtLmN1cnJlbnRTdHlsZS5sZWZ0Ow0KCQkJCXN0eWxlLmxlZnQg PSByZXQgfHwgMDsNCgkJCQlyZXQgPSBzdHlsZS5waXhlbExlZnQgKyAicHgiOw0K DQoJCQkJLy8gUmV2ZXJ0IHRoZSBjaGFuZ2VkIHZhbHVlcw0KCQkJCXN0eWxlLmxl ZnQgPSBsZWZ0Ow0KCQkJCWVsZW0ucnVudGltZVN0eWxlLmxlZnQgPSByc0xlZnQ7 DQoJCQl9DQoJCX0NCg0KCQlyZXR1cm4gcmV0Ow0KCX0sDQoNCgljbGVhbjogZnVu Y3Rpb24oIGVsZW1zLCBjb250ZXh0ICkgew0KCQl2YXIgcmV0ID0gW107DQoJCWNv bnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50Ow0KCQkvLyAhY29udGV4dC5jcmVh dGVFbGVtZW50IGZhaWxzIGluIElFIHdpdGggYW4gZXJyb3IgYnV0IHJldHVybnMg dHlwZW9mICdvYmplY3QnDQoJCWlmICh0eXBlb2YgY29udGV4dC5jcmVhdGVFbGVt ZW50ID09ICd1bmRlZmluZWQnKQ0KCQkJY29udGV4dCA9IGNvbnRleHQub3duZXJE b2N1bWVudCB8fCBjb250ZXh0WzBdICYmIGNvbnRleHRbMF0ub3duZXJEb2N1bWVu dCB8fCBkb2N1bWVudDsNCg0KCQlqUXVlcnkuZWFjaChlbGVtcywgZnVuY3Rpb24o aSwgZWxlbSl7DQoJCQlpZiAoICFlbGVtICkNCgkJCQlyZXR1cm47DQoNCgkJCWlm ICggZWxlbS5jb25zdHJ1Y3RvciA9PSBOdW1iZXIgKQ0KCQkJCWVsZW0gKz0gJyc7 DQoNCgkJCS8vIENvbnZlcnQgaHRtbCBzdHJpbmcgaW50byBET00gbm9kZXMNCgkJ CWlmICggdHlwZW9mIGVsZW0gPT0gInN0cmluZyIgKSB7DQoJCQkJLy8gRml4ICJY SFRNTCItc3R5bGUgdGFncyBpbiBhbGwgYnJvd3NlcnMNCgkJCQllbGVtID0gZWxl bS5yZXBsYWNlKC8oPChcdyspW14+XSo/KVwvPi9nLCBmdW5jdGlvbihhbGwsIGZy b250LCB0YWcpew0KCQkJCQlyZXR1cm4gdGFnLm1hdGNoKC9eKGFiYnJ8YnJ8Y29s fGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW18aHJ8YXJlYXxlbWJlZCkkL2kpID8N CgkJCQkJCWFsbCA6DQoJCQkJCQlmcm9udCArICI+PC8iICsgdGFnICsgIj4iOw0K CQkJCX0pOw0KDQoJCQkJLy8gVHJpbSB3aGl0ZXNwYWNlLCBvdGhlcndpc2UgaW5k ZXhPZiB3b24ndCB3b3JrIGFzIGV4cGVjdGVkDQoJCQkJdmFyIHRhZ3MgPSBqUXVl cnkudHJpbSggZWxlbSApLnRvTG93ZXJDYXNlKCksIGRpdiA9IGNvbnRleHQuY3Jl YXRlRWxlbWVudCgiZGl2Iik7DQoNCgkJCQl2YXIgd3JhcCA9DQoJCQkJCS8vIG9w dGlvbiBvciBvcHRncm91cA0KCQkJCQkhdGFncy5pbmRleE9mKCI8b3B0IikgJiYN CgkJCQkJWyAxLCAiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsICI8L3Nl bGVjdD4iIF0gfHwNCg0KCQkJCQkhdGFncy5pbmRleE9mKCI8bGVnIikgJiYNCgkJ CQkJWyAxLCAiPGZpZWxkc2V0PiIsICI8L2ZpZWxkc2V0PiIgXSB8fA0KDQoJCQkJ CXRhZ3MubWF0Y2goL148KHRoZWFkfHRib2R5fHRmb290fGNvbGd8Y2FwKS8pICYm DQoJCQkJCVsgMSwgIjx0YWJsZT4iLCAiPC90YWJsZT4iIF0gfHwNCg0KCQkJCQkh dGFncy5pbmRleE9mKCI8dHIiKSAmJg0KCQkJCQlbIDIsICI8dGFibGU+PHRib2R5 PiIsICI8L3Rib2R5PjwvdGFibGU+IiBdIHx8DQoNCgkJCQkgCS8vIDx0aGVhZD4g bWF0Y2hlZCBhYm92ZQ0KCQkJCQkoIXRhZ3MuaW5kZXhPZigiPHRkIikgfHwgIXRh Z3MuaW5kZXhPZigiPHRoIikpICYmDQoJCQkJCVsgMywgIjx0YWJsZT48dGJvZHk+ PHRyPiIsICI8L3RyPjwvdGJvZHk+PC90YWJsZT4iIF0gfHwNCg0KCQkJCQkhdGFn cy5pbmRleE9mKCI8Y29sIikgJiYNCgkJCQkJWyAyLCAiPHRhYmxlPjx0Ym9keT48 L3Rib2R5Pjxjb2xncm91cD4iLCAiPC9jb2xncm91cD48L3RhYmxlPiIgXSB8fA0K DQoJCQkJCS8vIElFIGNhbid0IHNlcmlhbGl6ZSA8bGluaz4gYW5kIDxzY3JpcHQ+ IHRhZ3Mgbm9ybWFsbHkNCgkJCQkJalF1ZXJ5LmJyb3dzZXIubXNpZSAmJg0KCQkJ CQlbIDEsICJkaXY8ZGl2PiIsICI8L2Rpdj4iIF0gfHwNCg0KCQkJCQlbIDAsICIi LCAiIiBdOw0KDQoJCQkJLy8gR28gdG8gaHRtbCBhbmQgYmFjaywgdGhlbiBwZWVs IG9mZiBleHRyYSB3cmFwcGVycw0KCQkJCWRpdi5pbm5lckhUTUwgPSB3cmFwWzFd ICsgZWxlbSArIHdyYXBbMl07DQoNCgkJCQkvLyBNb3ZlIHRvIHRoZSByaWdodCBk ZXB0aA0KCQkJCXdoaWxlICggd3JhcFswXS0tICkNCgkJCQkJZGl2ID0gZGl2Lmxh c3RDaGlsZDsNCg0KCQkJCS8vIFJlbW92ZSBJRSdzIGF1dG9pbnNlcnRlZCA8dGJv ZHk+IGZyb20gdGFibGUgZnJhZ21lbnRzDQoJCQkJaWYgKCBqUXVlcnkuYnJvd3Nl ci5tc2llICkgew0KDQoJCQkJCS8vIFN0cmluZyB3YXMgYSA8dGFibGU+LCAqbWF5 KiBoYXZlIHNwdXJpb3VzIDx0Ym9keT4NCgkJCQkJdmFyIHRib2R5ID0gIXRhZ3Mu aW5kZXhPZigiPHRhYmxlIikgJiYgdGFncy5pbmRleE9mKCI8dGJvZHkiKSA8IDAg Pw0KCQkJCQkJZGl2LmZpcnN0Q2hpbGQgJiYgZGl2LmZpcnN0Q2hpbGQuY2hpbGRO b2RlcyA6DQoNCgkJCQkJCS8vIFN0cmluZyB3YXMgYSBiYXJlIDx0aGVhZD4gb3Ig PHRmb290Pg0KCQkJCQkJd3JhcFsxXSA9PSAiPHRhYmxlPiIgJiYgdGFncy5pbmRl eE9mKCI8dGJvZHkiKSA8IDAgPw0KCQkJCQkJCWRpdi5jaGlsZE5vZGVzIDoNCgkJ CQkJCQlbXTsNCg0KCQkJCQlmb3IgKCB2YXIgaiA9IHRib2R5Lmxlbmd0aCAtIDE7 IGogPj0gMCA7IC0taiApDQoJCQkJCQlpZiAoIGpRdWVyeS5ub2RlTmFtZSggdGJv ZHlbIGogXSwgInRib2R5IiApICYmICF0Ym9keVsgaiBdLmNoaWxkTm9kZXMubGVu Z3RoICkNCgkJCQkJCQl0Ym9keVsgaiBdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQo IHRib2R5WyBqIF0gKTsNCg0KCQkJCQkvLyBJRSBjb21wbGV0ZWx5IGtpbGxzIGxl YWRpbmcgd2hpdGVzcGFjZSB3aGVuIGlubmVySFRNTCBpcyB1c2VkDQoJCQkJCWlm ICggL15ccy8udGVzdCggZWxlbSApICkNCgkJCQkJCWRpdi5pbnNlcnRCZWZvcmUo IGNvbnRleHQuY3JlYXRlVGV4dE5vZGUoIGVsZW0ubWF0Y2goL15ccyovKVswXSAp LCBkaXYuZmlyc3RDaGlsZCApOw0KDQoJCQkJfQ0KDQoJCQkJZWxlbSA9IGpRdWVy eS5tYWtlQXJyYXkoIGRpdi5jaGlsZE5vZGVzICk7DQoJCQl9DQoNCgkJCWlmICgg ZWxlbS5sZW5ndGggPT09IDAgJiYgKCFqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJm b3JtIiApICYmICFqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJzZWxlY3QiICkpICkN CgkJCQlyZXR1cm47DQoNCgkJCWlmICggZWxlbVswXSA9PSB1bmRlZmluZWQgfHwg alF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAiZm9ybSIgKSB8fCBlbGVtLm9wdGlvbnMg KQ0KCQkJCXJldC5wdXNoKCBlbGVtICk7DQoNCgkJCWVsc2UNCgkJCQlyZXQgPSBq UXVlcnkubWVyZ2UoIHJldCwgZWxlbSApOw0KDQoJCX0pOw0KDQoJCXJldHVybiBy ZXQ7DQoJfSwNCg0KCWF0dHI6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSAp IHsNCgkJLy8gZG9uJ3Qgc2V0IGF0dHJpYnV0ZXMgb24gdGV4dCBhbmQgY29tbWVu dCBub2Rlcw0KCQlpZiAoIWVsZW0gfHwgZWxlbS5ub2RlVHlwZSA9PSAzIHx8IGVs ZW0ubm9kZVR5cGUgPT0gOCkNCgkJCXJldHVybiB1bmRlZmluZWQ7DQoNCgkJdmFy IG5vdHhtbCA9ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSwNCgkJCS8vIFdoZXRo ZXIgd2UgYXJlIHNldHRpbmcgKG9yIGdldHRpbmcpDQoJCQlzZXQgPSB2YWx1ZSAh PT0gdW5kZWZpbmVkLA0KCQkJbXNpZSA9IGpRdWVyeS5icm93c2VyLm1zaWU7DQoN CgkJLy8gVHJ5IHRvIG5vcm1hbGl6ZS9maXggdGhlIG5hbWUNCgkJbmFtZSA9IG5v dHhtbCAmJiBqUXVlcnkucHJvcHNbIG5hbWUgXSB8fCBuYW1lOw0KDQoJCS8vIE9u bHkgZG8gYWxsIHRoZSBmb2xsb3dpbmcgaWYgdGhpcyBpcyBhIG5vZGUgKGZhc3Rl ciBmb3Igc3R5bGUpDQoJCS8vIElFIGVsZW0uZ2V0QXR0cmlidXRlIHBhc3NlcyBl dmVuIGZvciBzdHlsZQ0KCQlpZiAoIGVsZW0udGFnTmFtZSApIHsNCg0KCQkJLy8g VGhlc2UgYXR0cmlidXRlcyByZXF1aXJlIHNwZWNpYWwgdHJlYXRtZW50DQoJCQl2 YXIgc3BlY2lhbCA9IC9ocmVmfHNyY3xzdHlsZS8udGVzdCggbmFtZSApOw0KDQoJ CQkvLyBTYWZhcmkgbWlzLXJlcG9ydHMgdGhlIGRlZmF1bHQgc2VsZWN0ZWQgcHJv cGVydHkgb2YgYSBoaWRkZW4gb3B0aW9uDQoJCQkvLyBBY2Nlc3NpbmcgdGhlIHBh cmVudCdzIHNlbGVjdGVkSW5kZXggcHJvcGVydHkgZml4ZXMgaXQNCgkJCWlmICgg bmFtZSA9PSAic2VsZWN0ZWQiICYmIGpRdWVyeS5icm93c2VyLnNhZmFyaSApDQoJ CQkJZWxlbS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7DQoNCgkJCS8vIElmIGFw cGxpY2FibGUsIGFjY2VzcyB0aGUgYXR0cmlidXRlIHZpYSB0aGUgRE9NIDAgd2F5 DQoJCQlpZiAoIG5hbWUgaW4gZWxlbSAmJiBub3R4bWwgJiYgIXNwZWNpYWwgKSB7 DQoJCQkJaWYgKCBzZXQgKXsNCgkJCQkJLy8gV2UgY2FuJ3QgYWxsb3cgdGhlIHR5 cGUgcHJvcGVydHkgdG8gYmUgY2hhbmdlZCAoc2luY2UgaXQgY2F1c2VzIHByb2Js ZW1zIGluIElFKQ0KCQkJCQlpZiAoIG5hbWUgPT0gInR5cGUiICYmIGpRdWVyeS5u b2RlTmFtZSggZWxlbSwgImlucHV0IiApICYmIGVsZW0ucGFyZW50Tm9kZSApDQoJ CQkJCQl0aHJvdyAidHlwZSBwcm9wZXJ0eSBjYW4ndCBiZSBjaGFuZ2VkIjsNCg0K CQkJCQllbGVtWyBuYW1lIF0gPSB2YWx1ZTsNCgkJCQl9DQoNCgkJCQkvLyBicm93 c2VycyBpbmRleCBlbGVtZW50cyBieSBpZC9uYW1lIG9uIGZvcm1zLCBnaXZlIHBy aW9yaXR5IHRvIGF0dHJpYnV0ZXMuDQoJCQkJaWYoIGpRdWVyeS5ub2RlTmFtZSgg ZWxlbSwgImZvcm0iICkgJiYgZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpICkN CgkJCQkJcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApLm5vZGVW YWx1ZTsNCg0KCQkJCXJldHVybiBlbGVtWyBuYW1lIF07DQoJCQl9DQoNCgkJCWlm ICggbXNpZSAmJiBub3R4bWwgJiYgIG5hbWUgPT0gInN0eWxlIiApDQoJCQkJcmV0 dXJuIGpRdWVyeS5hdHRyKCBlbGVtLnN0eWxlLCAiY3NzVGV4dCIsIHZhbHVlICk7 DQoNCgkJCWlmICggc2V0ICkNCgkJCQkvLyBjb252ZXJ0IHRoZSB2YWx1ZSB0byBh IHN0cmluZyAoYWxsIGJyb3dzZXJzIGRvIHRoaXMgYnV0IElFKSBzZWUgIzEwNzAN CgkJCQllbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgIiIgKyB2YWx1ZSApOw0KDQoJ CQl2YXIgYXR0ciA9IG1zaWUgJiYgbm90eG1sICYmIHNwZWNpYWwNCgkJCQkJLy8g U29tZSBhdHRyaWJ1dGVzIHJlcXVpcmUgYSBzcGVjaWFsIGNhbGwgb24gSUUNCgkJ CQkJPyBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSwgMiApDQoJCQkJCTogZWxlbS5n ZXRBdHRyaWJ1dGUoIG5hbWUgKTsNCg0KCQkJLy8gTm9uLWV4aXN0ZW50IGF0dHJp YnV0ZXMgcmV0dXJuIG51bGwsIHdlIG5vcm1hbGl6ZSB0byB1bmRlZmluZWQNCgkJ CXJldHVybiBhdHRyID09PSBudWxsID8gdW5kZWZpbmVkIDogYXR0cjsNCgkJfQ0K DQoJCS8vIGVsZW0gaXMgYWN0dWFsbHkgZWxlbS5zdHlsZSAuLi4gc2V0IHRoZSBz dHlsZQ0KDQoJCS8vIElFIHVzZXMgZmlsdGVycyBmb3Igb3BhY2l0eQ0KCQlpZiAo IG1zaWUgJiYgbmFtZSA9PSAib3BhY2l0eSIgKSB7DQoJCQlpZiAoIHNldCApIHsN CgkJCQkvLyBJRSBoYXMgdHJvdWJsZSB3aXRoIG9wYWNpdHkgaWYgaXQgZG9lcyBu b3QgaGF2ZSBsYXlvdXQNCgkJCQkvLyBGb3JjZSBpdCBieSBzZXR0aW5nIHRoZSB6 b29tIGxldmVsDQoJCQkJZWxlbS56b29tID0gMTsNCg0KCQkJCS8vIFNldCB0aGUg YWxwaGEgZmlsdGVyIHRvIHNldCB0aGUgb3BhY2l0eQ0KCQkJCWVsZW0uZmlsdGVy ID0gKGVsZW0uZmlsdGVyIHx8ICIiKS5yZXBsYWNlKCAvYWxwaGFcKFteKV0qXCkv LCAiIiApICsNCgkJCQkJKHBhcnNlSW50KCB2YWx1ZSApICsgJycgPT0gIk5hTiIg PyAiIiA6ICJhbHBoYShvcGFjaXR5PSIgKyB2YWx1ZSAqIDEwMCArICIpIik7DQoJ CQl9DQoNCgkJCXJldHVybiBlbGVtLmZpbHRlciAmJiBlbGVtLmZpbHRlci5pbmRl eE9mKCJvcGFjaXR5PSIpID49IDAgPw0KCQkJCShwYXJzZUZsb2F0KCBlbGVtLmZp bHRlci5tYXRjaCgvb3BhY2l0eT0oW14pXSopLylbMV0gKSAvIDEwMCkgKyAnJzoN CgkJCQkiIjsNCgkJfQ0KDQoJCW5hbWUgPSBuYW1lLnJlcGxhY2UoLy0oW2Etel0p L2lnLCBmdW5jdGlvbihhbGwsIGxldHRlcil7DQoJCQlyZXR1cm4gbGV0dGVyLnRv VXBwZXJDYXNlKCk7DQoJCX0pOw0KDQoJCWlmICggc2V0ICkNCgkJCWVsZW1bIG5h bWUgXSA9IHZhbHVlOw0KDQoJCXJldHVybiBlbGVtWyBuYW1lIF07DQoJfSwNCg0K CXRyaW06IGZ1bmN0aW9uKCB0ZXh0ICkgew0KCQlyZXR1cm4gKHRleHQgfHwgIiIp LnJlcGxhY2UoIC9eXHMrfFxzKyQvZywgIiIgKTsNCgl9LA0KDQoJbWFrZUFycmF5 OiBmdW5jdGlvbiggYXJyYXkgKSB7DQoJCXZhciByZXQgPSBbXTsNCg0KCQlpZigg YXJyYXkgIT0gbnVsbCApew0KCQkJdmFyIGkgPSBhcnJheS5sZW5ndGg7DQoJCQkv L3RoZSB3aW5kb3csIHN0cmluZ3MgYW5kIGZ1bmN0aW9ucyBhbHNvIGhhdmUgJ2xl bmd0aCcNCgkJCWlmKCBpID09IG51bGwgfHwgYXJyYXkuc3BsaXQgfHwgYXJyYXku c2V0SW50ZXJ2YWwgfHwgYXJyYXkuY2FsbCApDQoJCQkJcmV0WzBdID0gYXJyYXk7 DQoJCQllbHNlDQoJCQkJd2hpbGUoIGkgKQ0KCQkJCQlyZXRbLS1pXSA9IGFycmF5 W2ldOw0KCQl9DQoNCgkJcmV0dXJuIHJldDsNCgl9LA0KDQoJaW5BcnJheTogZnVu Y3Rpb24oIGVsZW0sIGFycmF5ICkgew0KCQlmb3IgKCB2YXIgaSA9IDAsIGxlbmd0 aCA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrICkNCgkJLy8gVXNlID09 PSBiZWNhdXNlIG9uIElFLCB3aW5kb3cgPT0gZG9jdW1lbnQNCgkJCWlmICggYXJy YXlbIGkgXSA9PT0gZWxlbSApDQoJCQkJcmV0dXJuIGk7DQoNCgkJcmV0dXJuIC0x Ow0KCX0sDQoNCgltZXJnZTogZnVuY3Rpb24oIGZpcnN0LCBzZWNvbmQgKSB7DQoJ CS8vIFdlIGhhdmUgdG8gbG9vcCB0aGlzIHdheSBiZWNhdXNlIElFICYgT3BlcmEg b3ZlcndyaXRlIHRoZSBsZW5ndGgNCgkJLy8gZXhwYW5kbyBvZiBnZXRFbGVtZW50 c0J5VGFnTmFtZQ0KCQl2YXIgaSA9IDAsIGVsZW0sIHBvcyA9IGZpcnN0Lmxlbmd0 aDsNCgkJLy8gQWxzbywgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgY29y cmVjdCBlbGVtZW50cyBhcmUgYmVpbmcgcmV0dXJuZWQNCgkJLy8gKElFIHJldHVy bnMgY29tbWVudCBub2RlcyBpbiBhICcqJyBxdWVyeSkNCgkJaWYgKCBqUXVlcnku YnJvd3Nlci5tc2llICkgew0KCQkJd2hpbGUgKCBlbGVtID0gc2Vjb25kWyBpKysg XSApDQoJCQkJaWYgKCBlbGVtLm5vZGVUeXBlICE9IDggKQ0KCQkJCQlmaXJzdFsg cG9zKysgXSA9IGVsZW07DQoNCgkJfSBlbHNlDQoJCQl3aGlsZSAoIGVsZW0gPSBz ZWNvbmRbIGkrKyBdICkNCgkJCQlmaXJzdFsgcG9zKysgXSA9IGVsZW07DQoNCgkJ cmV0dXJuIGZpcnN0Ow0KCX0sDQoNCgl1bmlxdWU6IGZ1bmN0aW9uKCBhcnJheSAp IHsNCgkJdmFyIHJldCA9IFtdLCBkb25lID0ge307DQoNCgkJdHJ5IHsNCg0KCQkJ Zm9yICggdmFyIGkgPSAwLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7IGkgPCBsZW5n dGg7IGkrKyApIHsNCgkJCQl2YXIgaWQgPSBqUXVlcnkuZGF0YSggYXJyYXlbIGkg XSApOw0KDQoJCQkJaWYgKCAhZG9uZVsgaWQgXSApIHsNCgkJCQkJZG9uZVsgaWQg XSA9IHRydWU7DQoJCQkJCXJldC5wdXNoKCBhcnJheVsgaSBdICk7DQoJCQkJfQ0K CQkJfQ0KDQoJCX0gY2F0Y2goIGUgKSB7DQoJCQlyZXQgPSBhcnJheTsNCgkJfQ0K DQoJCXJldHVybiByZXQ7DQoJfSwNCg0KCWdyZXA6IGZ1bmN0aW9uKCBlbGVtcywg Y2FsbGJhY2ssIGludiApIHsNCgkJdmFyIHJldCA9IFtdOw0KDQoJCS8vIEdvIHRo cm91Z2ggdGhlIGFycmF5LCBvbmx5IHNhdmluZyB0aGUgaXRlbXMNCgkJLy8gdGhh dCBwYXNzIHRoZSB2YWxpZGF0b3IgZnVuY3Rpb24NCgkJZm9yICggdmFyIGkgPSAw LCBsZW5ndGggPSBlbGVtcy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKyApDQoJCQlp ZiAoICFpbnYgIT0gIWNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpICkgKQ0KCQkJCXJl dC5wdXNoKCBlbGVtc1sgaSBdICk7DQoNCgkJcmV0dXJuIHJldDsNCgl9LA0KDQoJ bWFwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrICkgew0KCQl2YXIgcmV0ID0g W107DQoNCgkJLy8gR28gdGhyb3VnaCB0aGUgYXJyYXksIHRyYW5zbGF0aW5nIGVh Y2ggb2YgdGhlIGl0ZW1zIHRvIHRoZWlyDQoJCS8vIG5ldyB2YWx1ZSAob3IgdmFs dWVzKS4NCgkJZm9yICggdmFyIGkgPSAwLCBsZW5ndGggPSBlbGVtcy5sZW5ndGg7 IGkgPCBsZW5ndGg7IGkrKyApIHsNCgkJCXZhciB2YWx1ZSA9IGNhbGxiYWNrKCBl bGVtc1sgaSBdLCBpICk7DQoNCgkJCWlmICggdmFsdWUgIT0gbnVsbCApDQoJCQkJ cmV0WyByZXQubGVuZ3RoIF0gPSB2YWx1ZTsNCgkJfQ0KDQoJCXJldHVybiByZXQu Y29uY2F0LmFwcGx5KCBbXSwgcmV0ICk7DQoJfQ0KfSk7DQoNCnZhciB1c2VyQWdl bnQgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7DQoNCi8vIEZp Z3VyZSBvdXQgd2hhdCBicm93c2VyIGlzIGJlaW5nIHVzZWQNCmpRdWVyeS5icm93 c2VyID0gew0KCXZlcnNpb246ICh1c2VyQWdlbnQubWF0Y2goIC8uKyg/OnJ2fGl0 fHJhfGllKVtcLzogXShbXGQuXSspLyApIHx8IFtdKVsxXSwNCglzYWZhcmk6IC93 ZWJraXQvLnRlc3QoIHVzZXJBZ2VudCApLA0KCW9wZXJhOiAvb3BlcmEvLnRlc3Qo IHVzZXJBZ2VudCApLA0KCW1zaWU6IC9tc2llLy50ZXN0KCB1c2VyQWdlbnQgKSAm JiAhL29wZXJhLy50ZXN0KCB1c2VyQWdlbnQgKSwNCgltb3ppbGxhOiAvbW96aWxs YS8udGVzdCggdXNlckFnZW50ICkgJiYgIS8oY29tcGF0aWJsZXx3ZWJraXQpLy50 ZXN0KCB1c2VyQWdlbnQgKQ0KfTsNCg0KdmFyIHN0eWxlRmxvYXQgPSBqUXVlcnku YnJvd3Nlci5tc2llID8NCgkic3R5bGVGbG9hdCIgOg0KCSJjc3NGbG9hdCI7DQoN CmpRdWVyeS5leHRlbmQoew0KCS8vIENoZWNrIHRvIHNlZSBpZiB0aGUgVzNDIGJv eCBtb2RlbCBpcyBiZWluZyB1c2VkDQoJYm94TW9kZWw6ICFqUXVlcnkuYnJvd3Nl ci5tc2llIHx8IGRvY3VtZW50LmNvbXBhdE1vZGUgPT0gIkNTUzFDb21wYXQiLA0K DQoJcHJvcHM6IHsNCgkJImZvciI6ICJodG1sRm9yIiwNCgkJImNsYXNzIjogImNs YXNzTmFtZSIsDQoJCSJmbG9hdCI6IHN0eWxlRmxvYXQsDQoJCWNzc0Zsb2F0OiBz dHlsZUZsb2F0LA0KCQlzdHlsZUZsb2F0OiBzdHlsZUZsb2F0LA0KCQlyZWFkb25s eTogInJlYWRPbmx5IiwNCgkJbWF4bGVuZ3RoOiAibWF4TGVuZ3RoIiwNCgkJY2Vs bHNwYWNpbmc6ICJjZWxsU3BhY2luZyINCgl9DQp9KTsNCg0KalF1ZXJ5LmVhY2go ew0KCXBhcmVudDogZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGVsZW0ucGFyZW50Tm9k ZTt9LA0KCXBhcmVudHM6IGZ1bmN0aW9uKGVsZW0pe3JldHVybiBqUXVlcnkuZGly KGVsZW0sInBhcmVudE5vZGUiKTt9LA0KCW5leHQ6IGZ1bmN0aW9uKGVsZW0pe3Jl dHVybiBqUXVlcnkubnRoKGVsZW0sMiwibmV4dFNpYmxpbmciKTt9LA0KCXByZXY6 IGZ1bmN0aW9uKGVsZW0pe3JldHVybiBqUXVlcnkubnRoKGVsZW0sMiwicHJldmlv dXNTaWJsaW5nIik7fSwNCgluZXh0QWxsOiBmdW5jdGlvbihlbGVtKXtyZXR1cm4g alF1ZXJ5LmRpcihlbGVtLCJuZXh0U2libGluZyIpO30sDQoJcHJldkFsbDogZnVu Y3Rpb24oZWxlbSl7cmV0dXJuIGpRdWVyeS5kaXIoZWxlbSwicHJldmlvdXNTaWJs aW5nIik7fSwNCglzaWJsaW5nczogZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGpRdWVy eS5zaWJsaW5nKGVsZW0ucGFyZW50Tm9kZS5maXJzdENoaWxkLGVsZW0pO30sDQoJ Y2hpbGRyZW46IGZ1bmN0aW9uKGVsZW0pe3JldHVybiBqUXVlcnkuc2libGluZyhl bGVtLmZpcnN0Q2hpbGQpO30sDQoJY29udGVudHM6IGZ1bmN0aW9uKGVsZW0pe3Jl dHVybiBqUXVlcnkubm9kZU5hbWUoZWxlbSwiaWZyYW1lIik/ZWxlbS5jb250ZW50 RG9jdW1lbnR8fGVsZW0uY29udGVudFdpbmRvdy5kb2N1bWVudDpqUXVlcnkubWFr ZUFycmF5KGVsZW0uY2hpbGROb2Rlcyk7fQ0KfSwgZnVuY3Rpb24obmFtZSwgZm4p ew0KCWpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHNlbGVjdG9yICkgew0K CQl2YXIgcmV0ID0galF1ZXJ5Lm1hcCggdGhpcywgZm4gKTsNCg0KCQlpZiAoIHNl bGVjdG9yICYmIHR5cGVvZiBzZWxlY3RvciA9PSAic3RyaW5nIiApDQoJCQlyZXQg PSBqUXVlcnkubXVsdGlGaWx0ZXIoIHNlbGVjdG9yLCByZXQgKTsNCg0KCQlyZXR1 cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeS51bmlxdWUoIHJldCApICk7DQoJfTsN Cn0pOw0KDQpqUXVlcnkuZWFjaCh7DQoJYXBwZW5kVG86ICJhcHBlbmQiLA0KCXBy ZXBlbmRUbzogInByZXBlbmQiLA0KCWluc2VydEJlZm9yZTogImJlZm9yZSIsDQoJ aW5zZXJ0QWZ0ZXI6ICJhZnRlciIsDQoJcmVwbGFjZUFsbDogInJlcGxhY2VXaXRo Ig0KfSwgZnVuY3Rpb24obmFtZSwgb3JpZ2luYWwpew0KCWpRdWVyeS5mblsgbmFt ZSBdID0gZnVuY3Rpb24oKSB7DQoJCXZhciBhcmdzID0gYXJndW1lbnRzOw0KDQoJ CXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXsNCgkJCWZvciAoIHZhciBpID0g MCwgbGVuZ3RoID0gYXJncy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKyApDQoJCQkJ alF1ZXJ5KCBhcmdzWyBpIF0gKVsgb3JpZ2luYWwgXSggdGhpcyApOw0KCQl9KTsN Cgl9Ow0KfSk7DQoNCmpRdWVyeS5lYWNoKHsNCglyZW1vdmVBdHRyOiBmdW5jdGlv biggbmFtZSApIHsNCgkJalF1ZXJ5LmF0dHIoIHRoaXMsIG5hbWUsICIiICk7DQoJ CWlmICh0aGlzLm5vZGVUeXBlID09IDEpDQoJCQl0aGlzLnJlbW92ZUF0dHJpYnV0 ZSggbmFtZSApOw0KCX0sDQoNCglhZGRDbGFzczogZnVuY3Rpb24oIGNsYXNzTmFt ZXMgKSB7DQoJCWpRdWVyeS5jbGFzc05hbWUuYWRkKCB0aGlzLCBjbGFzc05hbWVz ICk7DQoJfSwNCg0KCXJlbW92ZUNsYXNzOiBmdW5jdGlvbiggY2xhc3NOYW1lcyAp IHsNCgkJalF1ZXJ5LmNsYXNzTmFtZS5yZW1vdmUoIHRoaXMsIGNsYXNzTmFtZXMg KTsNCgl9LA0KDQoJdG9nZ2xlQ2xhc3M6IGZ1bmN0aW9uKCBjbGFzc05hbWVzICkg ew0KCQlqUXVlcnkuY2xhc3NOYW1lWyBqUXVlcnkuY2xhc3NOYW1lLmhhcyggdGhp cywgY2xhc3NOYW1lcyApID8gInJlbW92ZSIgOiAiYWRkIiBdKCB0aGlzLCBjbGFz c05hbWVzICk7DQoJfSwNCg0KCXJlbW92ZTogZnVuY3Rpb24oIHNlbGVjdG9yICkg ew0KCQlpZiAoICFzZWxlY3RvciB8fCBqUXVlcnkuZmlsdGVyKCBzZWxlY3Rvciwg WyB0aGlzIF0gKS5yLmxlbmd0aCApIHsNCgkJCS8vIFByZXZlbnQgbWVtb3J5IGxl YWtzDQoJCQlqUXVlcnkoICIqIiwgdGhpcyApLmFkZCh0aGlzKS5lYWNoKGZ1bmN0 aW9uKCl7DQoJCQkJalF1ZXJ5LmV2ZW50LnJlbW92ZSh0aGlzKTsNCgkJCQlqUXVl cnkucmVtb3ZlRGF0YSh0aGlzKTsNCgkJCX0pOw0KCQkJaWYgKHRoaXMucGFyZW50 Tm9kZSkNCgkJCQl0aGlzLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHRoaXMgKTsN CgkJfQ0KCX0sDQoNCgllbXB0eTogZnVuY3Rpb24oKSB7DQoJCS8vIFJlbW92ZSBl bGVtZW50IG5vZGVzIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrcw0KCQlqUXVlcnko ICI+KiIsIHRoaXMgKS5yZW1vdmUoKTsNCg0KCQkvLyBSZW1vdmUgYW55IHJlbWFp bmluZyBub2Rlcw0KCQl3aGlsZSAoIHRoaXMuZmlyc3RDaGlsZCApDQoJCQl0aGlz LnJlbW92ZUNoaWxkKCB0aGlzLmZpcnN0Q2hpbGQgKTsNCgl9DQp9LCBmdW5jdGlv bihuYW1lLCBmbil7DQoJalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbigpew0K CQlyZXR1cm4gdGhpcy5lYWNoKCBmbiwgYXJndW1lbnRzICk7DQoJfTsNCn0pOw0K DQpqUXVlcnkuZWFjaChbICJIZWlnaHQiLCAiV2lkdGgiIF0sIGZ1bmN0aW9uKGks IG5hbWUpew0KCXZhciB0eXBlID0gbmFtZS50b0xvd2VyQ2FzZSgpOw0KDQoJalF1 ZXJ5LmZuWyB0eXBlIF0gPSBmdW5jdGlvbiggc2l6ZSApIHsNCgkJLy8gR2V0IHdp bmRvdyB3aWR0aCBvciBoZWlnaHQNCgkJcmV0dXJuIHRoaXNbMF0gPT0gd2luZG93 ID8NCgkJCS8vIE9wZXJhIHJlcG9ydHMgZG9jdW1lbnQuYm9keS5jbGllbnRbV2lk dGgvSGVpZ2h0XSBwcm9wZXJseSBpbiBib3RoIHF1aXJrcyBhbmQgc3RhbmRhcmRz DQoJCQlqUXVlcnkuYnJvd3Nlci5vcGVyYSAmJiBkb2N1bWVudC5ib2R5WyAiY2xp ZW50IiArIG5hbWUgXSB8fA0KDQoJCQkvLyBTYWZhcmkgcmVwb3J0cyBpbm5lcltX aWR0aC9IZWlnaHRdIGp1c3QgZmluZSAoTW96aWxsYSBhbmQgT3BlcmEgaW5jbHVk ZSBzY3JvbGwgYmFyIHdpZHRocykNCgkJCWpRdWVyeS5icm93c2VyLnNhZmFyaSAm JiB3aW5kb3dbICJpbm5lciIgKyBuYW1lIF0gfHwNCg0KCQkJLy8gRXZlcnlvbmUg ZWxzZSB1c2UgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50IG9yIGRvY3VtZW50LmJv ZHkgZGVwZW5kaW5nIG9uIFF1aXJrcyB2cyBTdGFuZGFyZHMgbW9kZQ0KCQkJZG9j dW1lbnQuY29tcGF0TW9kZSA9PSAiQ1NTMUNvbXBhdCIgJiYgZG9jdW1lbnQuZG9j dW1lbnRFbGVtZW50WyAiY2xpZW50IiArIG5hbWUgXSB8fCBkb2N1bWVudC5ib2R5 WyAiY2xpZW50IiArIG5hbWUgXSA6DQoNCgkJCS8vIEdldCBkb2N1bWVudCB3aWR0 aCBvciBoZWlnaHQNCgkJCXRoaXNbMF0gPT0gZG9jdW1lbnQgPw0KCQkJCS8vIEVp dGhlciBzY3JvbGxbV2lkdGgvSGVpZ2h0XSBvciBvZmZzZXRbV2lkdGgvSGVpZ2h0 XSwgd2hpY2hldmVyIGlzIGdyZWF0ZXINCgkJCQlNYXRoLm1heCgNCgkJCQkJTWF0 aC5tYXgoZG9jdW1lbnQuYm9keVsic2Nyb2xsIiArIG5hbWVdLCBkb2N1bWVudC5k b2N1bWVudEVsZW1lbnRbInNjcm9sbCIgKyBuYW1lXSksDQoJCQkJCU1hdGgubWF4 KGRvY3VtZW50LmJvZHlbIm9mZnNldCIgKyBuYW1lXSwgZG9jdW1lbnQuZG9jdW1l bnRFbGVtZW50WyJvZmZzZXQiICsgbmFtZV0pDQoJCQkJKSA6DQoNCgkJCQkvLyBH ZXQgb3Igc2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudA0KCQkJCXNp emUgPT0gdW5kZWZpbmVkID8NCgkJCQkJLy8gR2V0IHdpZHRoIG9yIGhlaWdodCBv biB0aGUgZWxlbWVudA0KCQkJCQkodGhpcy5sZW5ndGggPyBqUXVlcnkuY3NzKCB0 aGlzWzBdLCB0eXBlICkgOiBudWxsKSA6DQoNCgkJCQkJLy8gU2V0IHRoZSB3aWR0 aCBvciBoZWlnaHQgb24gdGhlIGVsZW1lbnQgKGRlZmF1bHQgdG8gcGl4ZWxzIGlm IHZhbHVlIGlzIHVuaXRsZXNzKQ0KCQkJCQl0aGlzLmNzcyggdHlwZSwgc2l6ZS5j b25zdHJ1Y3RvciA9PSBTdHJpbmcgPyBzaXplIDogc2l6ZSArICJweCIgKTsNCgl9 Ow0KfSk7DQoNCi8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRoZSBkaW1lbnNp b25zIGFuZCBvZmZzZXQgbW9kdWxlcw0KZnVuY3Rpb24gbnVtKGVsZW0sIHByb3Ap IHsNCglyZXR1cm4gZWxlbVswXSAmJiBwYXJzZUludCggalF1ZXJ5LmN1ckNTUyhl bGVtWzBdLCBwcm9wLCB0cnVlKSwgMTAgKSB8fCAwOw0KfXZhciBjaGFycyA9IGpR dWVyeS5icm93c2VyLnNhZmFyaSAmJiBwYXJzZUludChqUXVlcnkuYnJvd3Nlci52 ZXJzaW9uKSA8IDQxNyA/DQoJCSIoPzpbXFx3Kl8tXXxcXFxcLikiIDoNCgkJIig/ OltcXHdcdTAxMjgtXHVGRkZGKl8tXXxcXFxcLikiLA0KCXF1aWNrQ2hpbGQgPSBu ZXcgUmVnRXhwKCJePlxccyooIiArIGNoYXJzICsgIispIiksDQoJcXVpY2tJRCA9 IG5ldyBSZWdFeHAoIl4oIiArIGNoYXJzICsgIispKCMpKCIgKyBjaGFycyArICIr KSIpLA0KCXF1aWNrQ2xhc3MgPSBuZXcgUmVnRXhwKCJeKFsjLl0/KSgiICsgY2hh cnMgKyAiKikiKTsNCg0KalF1ZXJ5LmV4dGVuZCh7DQoJZXhwcjogew0KCQkiIjog ZnVuY3Rpb24oYSxpLG0pe3JldHVybiBtWzJdPT0iKiJ8fGpRdWVyeS5ub2RlTmFt ZShhLG1bMl0pO30sDQoJCSIjIjogZnVuY3Rpb24oYSxpLG0pe3JldHVybiBhLmdl dEF0dHJpYnV0ZSgiaWQiKT09bVsyXTt9LA0KCQkiOiI6IHsNCgkJCS8vIFBvc2l0 aW9uIENoZWNrcw0KCQkJbHQ6IGZ1bmN0aW9uKGEsaSxtKXtyZXR1cm4gaTxtWzNd LTA7fSwNCgkJCWd0OiBmdW5jdGlvbihhLGksbSl7cmV0dXJuIGk+bVszXS0wO30s DQoJCQludGg6IGZ1bmN0aW9uKGEsaSxtKXtyZXR1cm4gbVszXS0wPT1pO30sDQoJ CQllcTogZnVuY3Rpb24oYSxpLG0pe3JldHVybiBtWzNdLTA9PWk7fSwNCgkJCWZp cnN0OiBmdW5jdGlvbihhLGkpe3JldHVybiBpPT0wO30sDQoJCQlsYXN0OiBmdW5j dGlvbihhLGksbSxyKXtyZXR1cm4gaT09ci5sZW5ndGgtMTt9LA0KCQkJZXZlbjog ZnVuY3Rpb24oYSxpKXtyZXR1cm4gaSUyPT0wO30sDQoJCQlvZGQ6IGZ1bmN0aW9u KGEsaSl7cmV0dXJuIGklMjt9LA0KDQoJCQkvLyBDaGlsZCBDaGVja3MNCgkJCSJm aXJzdC1jaGlsZCI6IGZ1bmN0aW9uKGEpe3JldHVybiBhLnBhcmVudE5vZGUuZ2V0 RWxlbWVudHNCeVRhZ05hbWUoIioiKVswXT09YTt9LA0KCQkJImxhc3QtY2hpbGQi OiBmdW5jdGlvbihhKXtyZXR1cm4galF1ZXJ5Lm50aChhLnBhcmVudE5vZGUubGFz dENoaWxkLDEsInByZXZpb3VzU2libGluZyIpPT1hO30sDQoJCQkib25seS1jaGls ZCI6IGZ1bmN0aW9uKGEpe3JldHVybiAhalF1ZXJ5Lm50aChhLnBhcmVudE5vZGUu bGFzdENoaWxkLDIsInByZXZpb3VzU2libGluZyIpO30sDQoNCgkJCS8vIFBhcmVu dCBDaGVja3MNCgkJCXBhcmVudDogZnVuY3Rpb24oYSl7cmV0dXJuIGEuZmlyc3RD aGlsZDt9LA0KCQkJZW1wdHk6IGZ1bmN0aW9uKGEpe3JldHVybiAhYS5maXJzdENo aWxkO30sDQoNCgkJCS8vIFRleHQgQ2hlY2sNCgkJCWNvbnRhaW5zOiBmdW5jdGlv bihhLGksbSl7cmV0dXJuIChhLnRleHRDb250ZW50fHxhLmlubmVyVGV4dHx8alF1 ZXJ5KGEpLnRleHQoKXx8IiIpLmluZGV4T2YobVszXSk+PTA7fSwNCg0KCQkJLy8g VmlzaWJpbGl0eQ0KCQkJdmlzaWJsZTogZnVuY3Rpb24oYSl7cmV0dXJuICJoaWRk ZW4iIT1hLnR5cGUmJmpRdWVyeS5jc3MoYSwiZGlzcGxheSIpIT0ibm9uZSImJmpR dWVyeS5jc3MoYSwidmlzaWJpbGl0eSIpIT0iaGlkZGVuIjt9LA0KCQkJaGlkZGVu OiBmdW5jdGlvbihhKXtyZXR1cm4gImhpZGRlbiI9PWEudHlwZXx8alF1ZXJ5LmNz cyhhLCJkaXNwbGF5Iik9PSJub25lInx8alF1ZXJ5LmNzcyhhLCJ2aXNpYmlsaXR5 Iik9PSJoaWRkZW4iO30sDQoNCgkJCS8vIEZvcm0gYXR0cmlidXRlcw0KCQkJZW5h YmxlZDogZnVuY3Rpb24oYSl7cmV0dXJuICFhLmRpc2FibGVkO30sDQoJCQlkaXNh YmxlZDogZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ7fSwNCgkJCWNoZWNr ZWQ6IGZ1bmN0aW9uKGEpe3JldHVybiBhLmNoZWNrZWQ7fSwNCgkJCXNlbGVjdGVk OiBmdW5jdGlvbihhKXtyZXR1cm4gYS5zZWxlY3RlZHx8alF1ZXJ5LmF0dHIoYSwi c2VsZWN0ZWQiKTt9LA0KDQoJCQkvLyBGb3JtIGVsZW1lbnRzDQoJCQl0ZXh0OiBm dW5jdGlvbihhKXtyZXR1cm4gInRleHQiPT1hLnR5cGU7fSwNCgkJCXJhZGlvOiBm dW5jdGlvbihhKXtyZXR1cm4gInJhZGlvIj09YS50eXBlO30sDQoJCQljaGVja2Jv eDogZnVuY3Rpb24oYSl7cmV0dXJuICJjaGVja2JveCI9PWEudHlwZTt9LA0KCQkJ ZmlsZTogZnVuY3Rpb24oYSl7cmV0dXJuICJmaWxlIj09YS50eXBlO30sDQoJCQlw YXNzd29yZDogZnVuY3Rpb24oYSl7cmV0dXJuICJwYXNzd29yZCI9PWEudHlwZTt9 LA0KCQkJc3VibWl0OiBmdW5jdGlvbihhKXtyZXR1cm4gInN1Ym1pdCI9PWEudHlw ZTt9LA0KCQkJaW1hZ2U6IGZ1bmN0aW9uKGEpe3JldHVybiAiaW1hZ2UiPT1hLnR5 cGU7fSwNCgkJCXJlc2V0OiBmdW5jdGlvbihhKXtyZXR1cm4gInJlc2V0Ij09YS50 eXBlO30sDQoJCQlidXR0b246IGZ1bmN0aW9uKGEpe3JldHVybiAiYnV0dG9uIj09 YS50eXBlfHxqUXVlcnkubm9kZU5hbWUoYSwiYnV0dG9uIik7fSwNCgkJCWlucHV0 OiBmdW5jdGlvbihhKXtyZXR1cm4gL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0 b24vaS50ZXN0KGEubm9kZU5hbWUpO30sDQoNCgkJCS8vIDpoYXMoKQ0KCQkJaGFz OiBmdW5jdGlvbihhLGksbSl7cmV0dXJuIGpRdWVyeS5maW5kKG1bM10sYSkubGVu Z3RoO30sDQoNCgkJCS8vIDpoZWFkZXINCgkJCWhlYWRlcjogZnVuY3Rpb24oYSl7 cmV0dXJuIC9oXGQvaS50ZXN0KGEubm9kZU5hbWUpO30sDQoNCgkJCS8vIDphbmlt YXRlZA0KCQkJYW5pbWF0ZWQ6IGZ1bmN0aW9uKGEpe3JldHVybiBqUXVlcnkuZ3Jl cChqUXVlcnkudGltZXJzLGZ1bmN0aW9uKGZuKXtyZXR1cm4gYT09Zm4uZWxlbTt9 KS5sZW5ndGg7fQ0KCQl9DQoJfSwNCg0KCS8vIFRoZSByZWd1bGFyIGV4cHJlc3Np b25zIHRoYXQgcG93ZXIgdGhlIHBhcnNpbmcgZW5naW5lDQoJcGFyc2U6IFsNCgkJ Ly8gTWF0Y2g6IFtAdmFsdWU9J3Rlc3QnXSwgW0Bmb29dDQoJCS9eKFxbKSAqQD8o W1x3LV0rKSAqKFshKiRefj1dKikgKignPyI/KSguKj8pXDQgKlxdLywNCg0KCQkv LyBNYXRjaDogOmNvbnRhaW5zKCdmb28nKQ0KCQkvXig6KShbXHctXSspXCgiPyc/ KC4qPyhcKC4qP1wpKT9bXihdKj8pIj8nP1wpLywNCg0KCQkvLyBNYXRjaDogOmV2 ZW4sIDpsYXN0LWNoaWxkLCAjaWQsIC5jbGFzcw0KCQluZXcgUmVnRXhwKCJeKFs6 LiNdKikoIiArIGNoYXJzICsgIispIikNCgldLA0KDQoJbXVsdGlGaWx0ZXI6IGZ1 bmN0aW9uKCBleHByLCBlbGVtcywgbm90ICkgew0KCQl2YXIgb2xkLCBjdXIgPSBb XTsNCg0KCQl3aGlsZSAoIGV4cHIgJiYgZXhwciAhPSBvbGQgKSB7DQoJCQlvbGQg PSBleHByOw0KCQkJdmFyIGYgPSBqUXVlcnkuZmlsdGVyKCBleHByLCBlbGVtcywg bm90ICk7DQoJCQlleHByID0gZi50LnJlcGxhY2UoL15ccyosXHMqLywgIiIgKTsN CgkJCWN1ciA9IG5vdCA/IGVsZW1zID0gZi5yIDogalF1ZXJ5Lm1lcmdlKCBjdXIs IGYuciApOw0KCQl9DQoNCgkJcmV0dXJuIGN1cjsNCgl9LA0KDQoJZmluZDogZnVu Y3Rpb24oIHQsIGNvbnRleHQgKSB7DQoJCS8vIFF1aWNrbHkgaGFuZGxlIG5vbi1z dHJpbmcgZXhwcmVzc2lvbnMNCgkJaWYgKCB0eXBlb2YgdCAhPSAic3RyaW5nIiAp DQoJCQlyZXR1cm4gWyB0IF07DQoNCgkJLy8gY2hlY2sgdG8gbWFrZSBzdXJlIGNv bnRleHQgaXMgYSBET00gZWxlbWVudCBvciBhIGRvY3VtZW50DQoJCWlmICggY29u dGV4dCAmJiBjb250ZXh0Lm5vZGVUeXBlICE9IDEgJiYgY29udGV4dC5ub2RlVHlw ZSAhPSA5KQ0KCQkJcmV0dXJuIFsgXTsNCg0KCQkvLyBTZXQgdGhlIGNvcnJlY3Qg Y29udGV4dCAoaWYgbm9uZSBpcyBwcm92aWRlZCkNCgkJY29udGV4dCA9IGNvbnRl eHQgfHwgZG9jdW1lbnQ7DQoNCgkJLy8gSW5pdGlhbGl6ZSB0aGUgc2VhcmNoDQoJ CXZhciByZXQgPSBbY29udGV4dF0sIGRvbmUgPSBbXSwgbGFzdCwgbm9kZU5hbWU7 DQoNCgkJLy8gQ29udGludWUgd2hpbGUgYSBzZWxlY3RvciBleHByZXNzaW9uIGV4 aXN0cywgYW5kIHdoaWxlDQoJCS8vIHdlJ3JlIG5vIGxvbmdlciBsb29waW5nIHVw b24gb3Vyc2VsdmVzDQoJCXdoaWxlICggdCAmJiBsYXN0ICE9IHQgKSB7DQoJCQl2 YXIgciA9IFtdOw0KCQkJbGFzdCA9IHQ7DQoNCgkJCXQgPSBqUXVlcnkudHJpbSh0 KTsNCg0KCQkJdmFyIGZvdW5kVG9rZW4gPSBmYWxzZSwNCg0KCQkJLy8gQW4gYXR0 ZW1wdCBhdCBzcGVlZGluZyB1cCBjaGlsZCBzZWxlY3RvcnMgdGhhdA0KCQkJLy8g cG9pbnQgdG8gYSBzcGVjaWZpYyBlbGVtZW50IHRhZw0KCQkJCXJlID0gcXVpY2tD aGlsZCwNCg0KCQkJCW0gPSByZS5leGVjKHQpOw0KDQoJCQlpZiAoIG0gKSB7DQoJ CQkJbm9kZU5hbWUgPSBtWzFdLnRvVXBwZXJDYXNlKCk7DQoNCgkJCQkvLyBQZXJm b3JtIG91ciBvd24gaXRlcmF0aW9uIGFuZCBmaWx0ZXINCgkJCQlmb3IgKCB2YXIg aSA9IDA7IHJldFtpXTsgaSsrICkNCgkJCQkJZm9yICggdmFyIGMgPSByZXRbaV0u Zmlyc3RDaGlsZDsgYzsgYyA9IGMubmV4dFNpYmxpbmcgKQ0KCQkJCQkJaWYgKCBj Lm5vZGVUeXBlID09IDEgJiYgKG5vZGVOYW1lID09ICIqIiB8fCBjLm5vZGVOYW1l LnRvVXBwZXJDYXNlKCkgPT0gbm9kZU5hbWUpICkNCgkJCQkJCQlyLnB1c2goIGMg KTsNCg0KCQkJCXJldCA9IHI7DQoJCQkJdCA9IHQucmVwbGFjZSggcmUsICIiICk7 DQoJCQkJaWYgKCB0LmluZGV4T2YoIiAiKSA9PSAwICkgY29udGludWU7DQoJCQkJ Zm91bmRUb2tlbiA9IHRydWU7DQoJCQl9IGVsc2Ugew0KCQkJCXJlID0gL14oWz4r fl0pXHMqKFx3KikvaTsNCg0KCQkJCWlmICggKG0gPSByZS5leGVjKHQpKSAhPSBu dWxsICkgew0KCQkJCQlyID0gW107DQoNCgkJCQkJdmFyIG1lcmdlID0ge307DQoJ CQkJCW5vZGVOYW1lID0gbVsyXS50b1VwcGVyQ2FzZSgpOw0KCQkJCQltID0gbVsx XTsNCg0KCQkJCQlmb3IgKCB2YXIgaiA9IDAsIHJsID0gcmV0Lmxlbmd0aDsgaiA8 IHJsOyBqKysgKSB7DQoJCQkJCQl2YXIgbiA9IG0gPT0gIn4iIHx8IG0gPT0gIisi ID8gcmV0W2pdLm5leHRTaWJsaW5nIDogcmV0W2pdLmZpcnN0Q2hpbGQ7DQoJCQkJ CQlmb3IgKCA7IG47IG4gPSBuLm5leHRTaWJsaW5nICkNCgkJCQkJCQlpZiAoIG4u bm9kZVR5cGUgPT0gMSApIHsNCgkJCQkJCQkJdmFyIGlkID0galF1ZXJ5LmRhdGEo bik7DQoNCgkJCQkJCQkJaWYgKCBtID09ICJ+IiAmJiBtZXJnZVtpZF0gKSBicmVh azsNCg0KCQkJCQkJCQlpZiAoIW5vZGVOYW1lIHx8IG4ubm9kZU5hbWUudG9VcHBl ckNhc2UoKSA9PSBub2RlTmFtZSApIHsNCgkJCQkJCQkJCWlmICggbSA9PSAifiIg KSBtZXJnZVtpZF0gPSB0cnVlOw0KCQkJCQkJCQkJci5wdXNoKCBuICk7DQoJCQkJ CQkJCX0NCg0KCQkJCQkJCQlpZiAoIG0gPT0gIisiICkgYnJlYWs7DQoJCQkJCQkJ fQ0KCQkJCQl9DQoNCgkJCQkJcmV0ID0gcjsNCg0KCQkJCQkvLyBBbmQgcmVtb3Zl IHRoZSB0b2tlbg0KCQkJCQl0ID0galF1ZXJ5LnRyaW0oIHQucmVwbGFjZSggcmUs ICIiICkgKTsNCgkJCQkJZm91bmRUb2tlbiA9IHRydWU7DQoJCQkJfQ0KCQkJfQ0K DQoJCQkvLyBTZWUgaWYgdGhlcmUncyBzdGlsbCBhbiBleHByZXNzaW9uLCBhbmQg dGhhdCB3ZSBoYXZlbid0IGFscmVhZHkNCgkJCS8vIG1hdGNoZWQgYSB0b2tlbg0K CQkJaWYgKCB0ICYmICFmb3VuZFRva2VuICkgew0KCQkJCS8vIEhhbmRsZSBtdWx0 aXBsZSBleHByZXNzaW9ucw0KCQkJCWlmICggIXQuaW5kZXhPZigiLCIpICkgew0K CQkJCQkvLyBDbGVhbiB0aGUgcmVzdWx0IHNldA0KCQkJCQlpZiAoIGNvbnRleHQg PT0gcmV0WzBdICkgcmV0LnNoaWZ0KCk7DQoNCgkJCQkJLy8gTWVyZ2UgdGhlIHJl c3VsdCBzZXRzDQoJCQkJCWRvbmUgPSBqUXVlcnkubWVyZ2UoIGRvbmUsIHJldCAp Ow0KDQoJCQkJCS8vIFJlc2V0IHRoZSBjb250ZXh0DQoJCQkJCXIgPSByZXQgPSBb Y29udGV4dF07DQoNCgkJCQkJLy8gVG91Y2ggdXAgdGhlIHNlbGVjdG9yIHN0cmlu Zw0KCQkJCQl0ID0gIiAiICsgdC5zdWJzdHIoMSx0Lmxlbmd0aCk7DQoNCgkJCQl9 IGVsc2Ugew0KCQkJCQkvLyBPcHRpbWl6ZSBmb3IgdGhlIGNhc2Ugbm9kZU5hbWUj aWROYW1lDQoJCQkJCXZhciByZTIgPSBxdWlja0lEOw0KCQkJCQl2YXIgbSA9IHJl Mi5leGVjKHQpOw0KDQoJCQkJCS8vIFJlLW9yZ2FuaXplIHRoZSByZXN1bHRzLCBz byB0aGF0IHRoZXkncmUgY29uc2lzdGVudA0KCQkJCQlpZiAoIG0gKSB7DQoJCQkJ CQltID0gWyAwLCBtWzJdLCBtWzNdLCBtWzFdIF07DQoNCgkJCQkJfSBlbHNlIHsN CgkJCQkJCS8vIE90aGVyd2lzZSwgZG8gYSB0cmFkaXRpb25hbCBmaWx0ZXIgY2hl Y2sgZm9yDQoJCQkJCQkvLyBJRCwgY2xhc3MsIGFuZCBlbGVtZW50IHNlbGVjdG9y cw0KCQkJCQkJcmUyID0gcXVpY2tDbGFzczsNCgkJCQkJCW0gPSByZTIuZXhlYyh0 KTsNCgkJCQkJfQ0KDQoJCQkJCW1bMl0gPSBtWzJdLnJlcGxhY2UoL1xcL2csICIi KTsNCg0KCQkJCQl2YXIgZWxlbSA9IHJldFtyZXQubGVuZ3RoLTFdOw0KDQoJCQkJ CS8vIFRyeSB0byBkbyBhIGdsb2JhbCBzZWFyY2ggYnkgSUQsIHdoZXJlIHdlIGNh bg0KCQkJCQlpZiAoIG1bMV0gPT0gIiMiICYmIGVsZW0gJiYgZWxlbS5nZXRFbGVt ZW50QnlJZCAmJiAhalF1ZXJ5LmlzWE1MRG9jKGVsZW0pICkgew0KCQkJCQkJLy8g T3B0aW1pemF0aW9uIGZvciBIVE1MIGRvY3VtZW50IGNhc2UNCgkJCQkJCXZhciBv aWQgPSBlbGVtLmdldEVsZW1lbnRCeUlkKG1bMl0pOw0KDQoJCQkJCQkvLyBEbyBh IHF1aWNrIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIHRoZSBhY3R1YWwgSUQg YXR0cmlidXRlDQoJCQkJCQkvLyB0byBhdm9pZCBzZWxlY3RpbmcgYnkgdGhlIG5h bWUgYXR0cmlidXRlIGluIElFDQoJCQkJCQkvLyBhbHNvIGNoZWNrIHRvIGluc3Vy ZSBpZCBpcyBhIHN0cmluZyB0byBhdm9pZCBzZWxlY3RpbmcgYW4gZWxlbWVudCB3 aXRoIHRoZSBuYW1lIG9mICdpZCcgaW5zaWRlIGEgZm9ybQ0KCQkJCQkJaWYgKCAo alF1ZXJ5LmJyb3dzZXIubXNpZXx8alF1ZXJ5LmJyb3dzZXIub3BlcmEpICYmIG9p ZCAmJiB0eXBlb2Ygb2lkLmlkID09ICJzdHJpbmciICYmIG9pZC5pZCAhPSBtWzJd ICkNCgkJCQkJCQlvaWQgPSBqUXVlcnkoJ1tAaWQ9IicrbVsyXSsnIl0nLCBlbGVt KVswXTsNCg0KCQkJCQkJLy8gRG8gYSBxdWljayBjaGVjayBmb3Igbm9kZSBuYW1l ICh3aGVyZSBhcHBsaWNhYmxlKSBzbw0KCQkJCQkJLy8gdGhhdCBkaXYjZm9vIHNl YXJjaGVzIHdpbGwgYmUgcmVhbGx5IGZhc3QNCgkJCQkJCXJldCA9IHIgPSBvaWQg JiYgKCFtWzNdIHx8IGpRdWVyeS5ub2RlTmFtZShvaWQsIG1bM10pKSA/IFtvaWRd IDogW107DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkvLyBXZSBuZWVkIHRvIGZpbmQg YWxsIGRlc2NlbmRhbnQgZWxlbWVudHMNCgkJCQkJCWZvciAoIHZhciBpID0gMDsg cmV0W2ldOyBpKysgKSB7DQoJCQkJCQkJLy8gR3JhYiB0aGUgdGFnIG5hbWUgYmVp bmcgc2VhcmNoZWQgZm9yDQoJCQkJCQkJdmFyIHRhZyA9IG1bMV0gPT0gIiMiICYm IG1bM10gPyBtWzNdIDogbVsxXSAhPSAiIiB8fCBtWzBdID09ICIiID8gIioiIDog bVsyXTsNCg0KCQkJCQkJCS8vIEhhbmRsZSBJRTcgYmVpbmcgcmVhbGx5IGR1bWIg YWJvdXQgPG9iamVjdD5zDQoJCQkJCQkJaWYgKCB0YWcgPT0gIioiICYmIHJldFtp XS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09ICJvYmplY3QiICkNCgkJCQkJCQkJ dGFnID0gInBhcmFtIjsNCg0KCQkJCQkJCXIgPSBqUXVlcnkubWVyZ2UoIHIsIHJl dFtpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnICkpOw0KCQkJCQkJfQ0KDQoJ CQkJCQkvLyBJdCdzIGZhc3RlciB0byBmaWx0ZXIgYnkgY2xhc3MgYW5kIGJlIGRv bmUgd2l0aCBpdA0KCQkJCQkJaWYgKCBtWzFdID09ICIuIiApDQoJCQkJCQkJciA9 IGpRdWVyeS5jbGFzc0ZpbHRlciggciwgbVsyXSApOw0KDQoJCQkJCQkvLyBTYW1l IHdpdGggSUQgZmlsdGVyaW5nDQoJCQkJCQlpZiAoIG1bMV0gPT0gIiMiICkgew0K CQkJCQkJCXZhciB0bXAgPSBbXTsNCg0KCQkJCQkJCS8vIFRyeSB0byBmaW5kIHRo ZSBlbGVtZW50IHdpdGggdGhlIElEDQoJCQkJCQkJZm9yICggdmFyIGkgPSAwOyBy W2ldOyBpKysgKQ0KCQkJCQkJCQlpZiAoIHJbaV0uZ2V0QXR0cmlidXRlKCJpZCIp ID09IG1bMl0gKSB7DQoJCQkJCQkJCQl0bXAgPSBbIHJbaV0gXTsNCgkJCQkJCQkJ CWJyZWFrOw0KCQkJCQkJCQl9DQoNCgkJCQkJCQlyID0gdG1wOw0KCQkJCQkJfQ0K DQoJCQkJCQlyZXQgPSByOw0KCQkJCQl9DQoNCgkJCQkJdCA9IHQucmVwbGFjZSgg cmUyLCAiIiApOw0KCQkJCX0NCg0KCQkJfQ0KDQoJCQkvLyBJZiBhIHNlbGVjdG9y IHN0cmluZyBzdGlsbCBleGlzdHMNCgkJCWlmICggdCApIHsNCgkJCQkvLyBBdHRl bXB0IHRvIGZpbHRlciBpdA0KCQkJCXZhciB2YWwgPSBqUXVlcnkuZmlsdGVyKHQs cik7DQoJCQkJcmV0ID0gciA9IHZhbC5yOw0KCQkJCXQgPSBqUXVlcnkudHJpbSh2 YWwudCk7DQoJCQl9DQoJCX0NCg0KCQkvLyBBbiBlcnJvciBvY2N1cnJlZCB3aXRo IHRoZSBzZWxlY3RvcjsNCgkJLy8ganVzdCByZXR1cm4gYW4gZW1wdHkgc2V0IGlu c3RlYWQNCgkJaWYgKCB0ICkNCgkJCXJldCA9IFtdOw0KDQoJCS8vIFJlbW92ZSB0 aGUgcm9vdCBjb250ZXh0DQoJCWlmICggcmV0ICYmIGNvbnRleHQgPT0gcmV0WzBd ICkNCgkJCXJldC5zaGlmdCgpOw0KDQoJCS8vIEFuZCBjb21iaW5lIHRoZSByZXN1 bHRzDQoJCWRvbmUgPSBqUXVlcnkubWVyZ2UoIGRvbmUsIHJldCApOw0KDQoJCXJl dHVybiBkb25lOw0KCX0sDQoNCgljbGFzc0ZpbHRlcjogZnVuY3Rpb24ocixtLG5v dCl7DQoJCW0gPSAiICIgKyBtICsgIiAiOw0KCQl2YXIgdG1wID0gW107DQoJCWZv ciAoIHZhciBpID0gMDsgcltpXTsgaSsrICkgew0KCQkJdmFyIHBhc3MgPSAoIiAi ICsgcltpXS5jbGFzc05hbWUgKyAiICIpLmluZGV4T2YoIG0gKSA+PSAwOw0KCQkJ aWYgKCAhbm90ICYmIHBhc3MgfHwgbm90ICYmICFwYXNzICkNCgkJCQl0bXAucHVz aCggcltpXSApOw0KCQl9DQoJCXJldHVybiB0bXA7DQoJfSwNCg0KCWZpbHRlcjog ZnVuY3Rpb24odCxyLG5vdCkgew0KCQl2YXIgbGFzdDsNCg0KCQkvLyBMb29rIGZv ciBjb21tb24gZmlsdGVyIGV4cHJlc3Npb25zDQoJCXdoaWxlICggdCAmJiB0ICE9 IGxhc3QgKSB7DQoJCQlsYXN0ID0gdDsNCg0KCQkJdmFyIHAgPSBqUXVlcnkucGFy c2UsIG07DQoNCgkJCWZvciAoIHZhciBpID0gMDsgcFtpXTsgaSsrICkgew0KCQkJ CW0gPSBwW2ldLmV4ZWMoIHQgKTsNCg0KCQkJCWlmICggbSApIHsNCgkJCQkJLy8g UmVtb3ZlIHdoYXQgd2UganVzdCBtYXRjaGVkDQoJCQkJCXQgPSB0LnN1YnN0cmlu ZyggbVswXS5sZW5ndGggKTsNCg0KCQkJCQltWzJdID0gbVsyXS5yZXBsYWNlKC9c XC9nLCAiIik7DQoJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCX0NCg0KCQkJaWYgKCAh bSApDQoJCQkJYnJlYWs7DQoNCgkJCS8vIDpub3QoKSBpcyBhIHNwZWNpYWwgY2Fz ZSB0aGF0IGNhbiBiZSBvcHRpbWl6ZWQgYnkNCgkJCS8vIGtlZXBpbmcgaXQgb3V0 IG9mIHRoZSBleHByZXNzaW9uIGxpc3QNCgkJCWlmICggbVsxXSA9PSAiOiIgJiYg bVsyXSA9PSAibm90IiApDQoJCQkJLy8gb3B0aW1pemUgaWYgb25seSBvbmUgc2Vs ZWN0b3IgZm91bmQgKG1vc3QgY29tbW9uIGNhc2UpDQoJCQkJciA9IGlzU2ltcGxl LnRlc3QoIG1bM10gKSA/DQoJCQkJCWpRdWVyeS5maWx0ZXIobVszXSwgciwgdHJ1 ZSkuciA6DQoJCQkJCWpRdWVyeSggciApLm5vdCggbVszXSApOw0KDQoJCQkvLyBX ZSBjYW4gZ2V0IGEgYmlnIHNwZWVkIGJvb3N0IGJ5IGZpbHRlcmluZyBieSBjbGFz cyBoZXJlDQoJCQllbHNlIGlmICggbVsxXSA9PSAiLiIgKQ0KCQkJCXIgPSBqUXVl cnkuY2xhc3NGaWx0ZXIociwgbVsyXSwgbm90KTsNCg0KCQkJZWxzZSBpZiAoIG1b MV0gPT0gIlsiICkgew0KCQkJCXZhciB0bXAgPSBbXSwgdHlwZSA9IG1bM107DQoN CgkJCQlmb3IgKCB2YXIgaSA9IDAsIHJsID0gci5sZW5ndGg7IGkgPCBybDsgaSsr ICkgew0KCQkJCQl2YXIgYSA9IHJbaV0sIHogPSBhWyBqUXVlcnkucHJvcHNbbVsy XV0gfHwgbVsyXSBdOw0KDQoJCQkJCWlmICggeiA9PSBudWxsIHx8IC9ocmVmfHNy Y3xzZWxlY3RlZC8udGVzdChtWzJdKSApDQoJCQkJCQl6ID0galF1ZXJ5LmF0dHIo YSxtWzJdKSB8fCAnJzsNCg0KCQkJCQlpZiAoICh0eXBlID09ICIiICYmICEheiB8 fA0KCQkJCQkJIHR5cGUgPT0gIj0iICYmIHogPT0gbVs1XSB8fA0KCQkJCQkJIHR5 cGUgPT0gIiE9IiAmJiB6ICE9IG1bNV0gfHwNCgkJCQkJCSB0eXBlID09ICJePSIg JiYgeiAmJiAhei5pbmRleE9mKG1bNV0pIHx8DQoJCQkJCQkgdHlwZSA9PSAiJD0i ICYmIHouc3Vic3RyKHoubGVuZ3RoIC0gbVs1XS5sZW5ndGgpID09IG1bNV0gfHwN CgkJCQkJCSAodHlwZSA9PSAiKj0iIHx8IHR5cGUgPT0gIn49IikgJiYgei5pbmRl eE9mKG1bNV0pID49IDApIF4gbm90ICkNCgkJCQkJCQl0bXAucHVzaCggYSApOw0K CQkJCX0NCg0KCQkJCXIgPSB0bXA7DQoNCgkJCS8vIFdlIGNhbiBnZXQgYSBzcGVl ZCBib29zdCBieSBoYW5kbGluZyBudGgtY2hpbGQgaGVyZQ0KCQkJfSBlbHNlIGlm ICggbVsxXSA9PSAiOiIgJiYgbVsyXSA9PSAibnRoLWNoaWxkIiApIHsNCgkJCQl2 YXIgbWVyZ2UgPSB7fSwgdG1wID0gW10sDQoJCQkJCS8vIHBhcnNlIGVxdWF0aW9u cyBsaWtlICdldmVuJywgJ29kZCcsICc1JywgJzJuJywgJzNuKzInLCAnNG4tMScs ICctbis2Jw0KCQkJCQl0ZXN0ID0gLygtPykoXGQqKW4oKD86XCt8LSk/XGQqKS8u ZXhlYygNCgkJCQkJCW1bM10gPT0gImV2ZW4iICYmICIybiIgfHwgbVszXSA9PSAi b2RkIiAmJiAiMm4rMSIgfHwNCgkJCQkJCSEvXEQvLnRlc3QobVszXSkgJiYgIjBu KyIgKyBtWzNdIHx8IG1bM10pLA0KCQkJCQkvLyBjYWxjdWxhdGUgdGhlIG51bWJl cnMgKGZpcnN0KW4rKGxhc3QpIGluY2x1ZGluZyBpZiB0aGV5IGFyZSBuZWdhdGl2 ZQ0KCQkJCQlmaXJzdCA9ICh0ZXN0WzFdICsgKHRlc3RbMl0gfHwgMSkpIC0gMCwg bGFzdCA9IHRlc3RbM10gLSAwOw0KDQoJCQkJLy8gbG9vcCB0aHJvdWdoIGFsbCB0 aGUgZWxlbWVudHMgbGVmdCBpbiB0aGUgalF1ZXJ5IG9iamVjdA0KCQkJCWZvciAo IHZhciBpID0gMCwgcmwgPSByLmxlbmd0aDsgaSA8IHJsOyBpKysgKSB7DQoJCQkJ CXZhciBub2RlID0gcltpXSwgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZSwg aWQgPSBqUXVlcnkuZGF0YShwYXJlbnROb2RlKTsNCg0KCQkJCQlpZiAoICFtZXJn ZVtpZF0gKSB7DQoJCQkJCQl2YXIgYyA9IDE7DQoNCgkJCQkJCWZvciAoIHZhciBu ID0gcGFyZW50Tm9kZS5maXJzdENoaWxkOyBuOyBuID0gbi5uZXh0U2libGluZyAp DQoJCQkJCQkJaWYgKCBuLm5vZGVUeXBlID09IDEgKQ0KCQkJCQkJCQluLm5vZGVJ bmRleCA9IGMrKzsNCg0KCQkJCQkJbWVyZ2VbaWRdID0gdHJ1ZTsNCgkJCQkJfQ0K DQoJCQkJCXZhciBhZGQgPSBmYWxzZTsNCg0KCQkJCQlpZiAoIGZpcnN0ID09IDAg KSB7DQoJCQkJCQlpZiAoIG5vZGUubm9kZUluZGV4ID09IGxhc3QgKQ0KCQkJCQkJ CWFkZCA9IHRydWU7DQoJCQkJCX0gZWxzZSBpZiAoIChub2RlLm5vZGVJbmRleCAt IGxhc3QpICUgZmlyc3QgPT0gMCAmJiAobm9kZS5ub2RlSW5kZXggLSBsYXN0KSAv IGZpcnN0ID49IDAgKQ0KCQkJCQkJYWRkID0gdHJ1ZTsNCg0KCQkJCQlpZiAoIGFk ZCBeIG5vdCApDQoJCQkJCQl0bXAucHVzaCggbm9kZSApOw0KCQkJCX0NCg0KCQkJ CXIgPSB0bXA7DQoNCgkJCS8vIE90aGVyd2lzZSwgZmluZCB0aGUgZXhwcmVzc2lv biB0byBleGVjdXRlDQoJCQl9IGVsc2Ugew0KCQkJCXZhciBmbiA9IGpRdWVyeS5l eHByWyBtWzFdIF07DQoJCQkJaWYgKCB0eXBlb2YgZm4gPT0gIm9iamVjdCIgKQ0K CQkJCQlmbiA9IGZuWyBtWzJdIF07DQoNCgkJCQlpZiAoIHR5cGVvZiBmbiA9PSAi c3RyaW5nIiApDQoJCQkJCWZuID0gZXZhbCgiZmFsc2V8fGZ1bmN0aW9uKGEsaSl7 cmV0dXJuICIgKyBmbiArICI7fSIpOw0KDQoJCQkJLy8gRXhlY3V0ZSBpdCBhZ2Fp bnN0IHRoZSBjdXJyZW50IGZpbHRlcg0KCQkJCXIgPSBqUXVlcnkuZ3JlcCggciwg ZnVuY3Rpb24oZWxlbSwgaSl7DQoJCQkJCXJldHVybiBmbihlbGVtLCBpLCBtLCBy KTsNCgkJCQl9LCBub3QgKTsNCgkJCX0NCgkJfQ0KDQoJCS8vIFJldHVybiBhbiBh cnJheSBvZiBmaWx0ZXJlZCBlbGVtZW50cyAocikNCgkJLy8gYW5kIHRoZSBtb2Rp ZmllZCBleHByZXNzaW9uIHN0cmluZyAodCkNCgkJcmV0dXJuIHsgcjogciwgdDog dCB9Ow0KCX0sDQoNCglkaXI6IGZ1bmN0aW9uKCBlbGVtLCBkaXIgKXsNCgkJdmFy IG1hdGNoZWQgPSBbXSwNCgkJCWN1ciA9IGVsZW1bZGlyXTsNCgkJd2hpbGUgKCBj dXIgJiYgY3VyICE9IGRvY3VtZW50ICkgew0KCQkJaWYgKCBjdXIubm9kZVR5cGUg PT0gMSApDQoJCQkJbWF0Y2hlZC5wdXNoKCBjdXIgKTsNCgkJCWN1ciA9IGN1cltk aXJdOw0KCQl9DQoJCXJldHVybiBtYXRjaGVkOw0KCX0sDQoNCgludGg6IGZ1bmN0 aW9uKGN1cixyZXN1bHQsZGlyLGVsZW0pew0KCQlyZXN1bHQgPSByZXN1bHQgfHwg MTsNCgkJdmFyIG51bSA9IDA7DQoNCgkJZm9yICggOyBjdXI7IGN1ciA9IGN1cltk aXJdICkNCgkJCWlmICggY3VyLm5vZGVUeXBlID09IDEgJiYgKytudW0gPT0gcmVz dWx0ICkNCgkJCQlicmVhazsNCg0KCQlyZXR1cm4gY3VyOw0KCX0sDQoNCglzaWJs aW5nOiBmdW5jdGlvbiggbiwgZWxlbSApIHsNCgkJdmFyIHIgPSBbXTsNCg0KCQlm b3IgKCA7IG47IG4gPSBuLm5leHRTaWJsaW5nICkgew0KCQkJaWYgKCBuLm5vZGVU eXBlID09IDEgJiYgbiAhPSBlbGVtICkNCgkJCQlyLnB1c2goIG4gKTsNCgkJfQ0K DQoJCXJldHVybiByOw0KCX0NCn0pOw0KLyoNCiAqIEEgbnVtYmVyIG9mIGhlbHBl ciBmdW5jdGlvbnMgdXNlZCBmb3IgbWFuYWdpbmcgZXZlbnRzLg0KICogTWFueSBv ZiB0aGUgaWRlYXMgYmVoaW5kIHRoaXMgY29kZSBvcmlnbmF0ZWQgZnJvbQ0KICog RGVhbiBFZHdhcmRzJyBhZGRFdmVudCBsaWJyYXJ5Lg0KICovDQpqUXVlcnkuZXZl bnQgPSB7DQoNCgkvLyBCaW5kIGFuIGV2ZW50IHRvIGFuIGVsZW1lbnQNCgkvLyBP cmlnaW5hbCBieSBEZWFuIEVkd2FyZHMNCglhZGQ6IGZ1bmN0aW9uKGVsZW0sIHR5 cGVzLCBoYW5kbGVyLCBkYXRhKSB7DQoJCWlmICggZWxlbS5ub2RlVHlwZSA9PSAz IHx8IGVsZW0ubm9kZVR5cGUgPT0gOCApDQoJCQlyZXR1cm47DQoNCgkJLy8gRm9y IHdoYXRldmVyIHJlYXNvbiwgSUUgaGFzIHRyb3VibGUgcGFzc2luZyB0aGUgd2lu ZG93IG9iamVjdA0KCQkvLyBhcm91bmQsIGNhdXNpbmcgaXQgdG8gYmUgY2xvbmVk IGluIHRoZSBwcm9jZXNzDQoJCWlmICggalF1ZXJ5LmJyb3dzZXIubXNpZSAmJiBl bGVtLnNldEludGVydmFsICkNCgkJCWVsZW0gPSB3aW5kb3c7DQoNCgkJLy8gTWFr ZSBzdXJlIHRoYXQgdGhlIGZ1bmN0aW9uIGJlaW5nIGV4ZWN1dGVkIGhhcyBhIHVu aXF1ZSBJRA0KCQlpZiAoICFoYW5kbGVyLmd1aWQgKQ0KCQkJaGFuZGxlci5ndWlk ID0gdGhpcy5ndWlkKys7DQoNCgkJLy8gaWYgZGF0YSBpcyBwYXNzZWQsIGJpbmQg dG8gaGFuZGxlcg0KCQlpZiggZGF0YSAhPSB1bmRlZmluZWQgKSB7DQoJCQkvLyBD cmVhdGUgdGVtcG9yYXJ5IGZ1bmN0aW9uIHBvaW50ZXIgdG8gb3JpZ2luYWwgaGFu ZGxlcg0KCQkJdmFyIGZuID0gaGFuZGxlcjsNCg0KCQkJLy8gQ3JlYXRlIHVuaXF1 ZSBoYW5kbGVyIGZ1bmN0aW9uLCB3cmFwcGVkIGFyb3VuZCBvcmlnaW5hbCBoYW5k bGVyDQoJCQloYW5kbGVyID0gdGhpcy5wcm94eSggZm4sIGZ1bmN0aW9uKCkgew0K CQkJCS8vIFBhc3MgYXJndW1lbnRzIGFuZCBjb250ZXh0IHRvIG9yaWdpbmFsIGhh bmRsZXINCgkJCQlyZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTsNCgkJ CX0pOw0KDQoJCQkvLyBTdG9yZSBkYXRhIGluIHVuaXF1ZSBoYW5kbGVyDQoJCQlo YW5kbGVyLmRhdGEgPSBkYXRhOw0KCQl9DQoNCgkJLy8gSW5pdCB0aGUgZWxlbWVu dCdzIGV2ZW50IHN0cnVjdHVyZQ0KCQl2YXIgZXZlbnRzID0galF1ZXJ5LmRhdGEo ZWxlbSwgImV2ZW50cyIpIHx8IGpRdWVyeS5kYXRhKGVsZW0sICJldmVudHMiLCB7 fSksDQoJCQloYW5kbGUgPSBqUXVlcnkuZGF0YShlbGVtLCAiaGFuZGxlIikgfHwg alF1ZXJ5LmRhdGEoZWxlbSwgImhhbmRsZSIsIGZ1bmN0aW9uKCl7DQoJCQkJLy8g SGFuZGxlIHRoZSBzZWNvbmQgZXZlbnQgb2YgYSB0cmlnZ2VyIGFuZCB3aGVuDQoJ CQkJLy8gYW4gZXZlbnQgaXMgY2FsbGVkIGFmdGVyIGEgcGFnZSBoYXMgdW5sb2Fk ZWQNCgkJCQlpZiAoIHR5cGVvZiBqUXVlcnkgIT0gInVuZGVmaW5lZCIgJiYgIWpR dWVyeS5ldmVudC50cmlnZ2VyZWQgKQ0KCQkJCQlyZXR1cm4galF1ZXJ5LmV2ZW50 LmhhbmRsZS5hcHBseShhcmd1bWVudHMuY2FsbGVlLmVsZW0sIGFyZ3VtZW50cyk7 DQoJCQl9KTsNCgkJLy8gQWRkIGVsZW0gYXMgYSBwcm9wZXJ0eSBvZiB0aGUgaGFu ZGxlIGZ1bmN0aW9uDQoJCS8vIFRoaXMgaXMgdG8gcHJldmVudCBhIG1lbW9yeSBs ZWFrIHdpdGggbm9uLW5hdGl2ZQ0KCQkvLyBldmVudCBpbiBJRS4NCgkJaGFuZGxl LmVsZW0gPSBlbGVtOw0KDQoJCS8vIEhhbmRsZSBtdWx0aXBsZSBldmVudHMgc2Vw YXJhdGVkIGJ5IGEgc3BhY2UNCgkJLy8galF1ZXJ5KC4uLikuYmluZCgibW91c2Vv dmVyIG1vdXNlb3V0IiwgZm4pOw0KCQlqUXVlcnkuZWFjaCh0eXBlcy5zcGxpdCgv XHMrLyksIGZ1bmN0aW9uKGluZGV4LCB0eXBlKSB7DQoJCQkvLyBOYW1lc3BhY2Vk IGV2ZW50IGhhbmRsZXJzDQoJCQl2YXIgcGFydHMgPSB0eXBlLnNwbGl0KCIuIik7 DQoJCQl0eXBlID0gcGFydHNbMF07DQoJCQloYW5kbGVyLnR5cGUgPSBwYXJ0c1sx XTsNCg0KCQkJLy8gR2V0IHRoZSBjdXJyZW50IGxpc3Qgb2YgZnVuY3Rpb25zIGJv dW5kIHRvIHRoaXMgZXZlbnQNCgkJCXZhciBoYW5kbGVycyA9IGV2ZW50c1t0eXBl XTsNCg0KCQkJLy8gSW5pdCB0aGUgZXZlbnQgaGFuZGxlciBxdWV1ZQ0KCQkJaWYg KCFoYW5kbGVycykgew0KCQkJCWhhbmRsZXJzID0gZXZlbnRzW3R5cGVdID0ge307 DQoNCgkJCQkvLyBDaGVjayBmb3IgYSBzcGVjaWFsIGV2ZW50IGhhbmRsZXINCgkJ CQkvLyBPbmx5IHVzZSBhZGRFdmVudExpc3RlbmVyL2F0dGFjaEV2ZW50IGlmIHRo ZSBzcGVjaWFsDQoJCQkJLy8gZXZlbnRzIGhhbmRsZXIgcmV0dXJucyBmYWxzZQ0K CQkJCWlmICggIWpRdWVyeS5ldmVudC5zcGVjaWFsW3R5cGVdIHx8IGpRdWVyeS5l dmVudC5zcGVjaWFsW3R5cGVdLnNldHVwLmNhbGwoZWxlbSkgPT09IGZhbHNlICkg ew0KCQkJCQkvLyBCaW5kIHRoZSBnbG9iYWwgZXZlbnQgaGFuZGxlciB0byB0aGUg ZWxlbWVudA0KCQkJCQlpZiAoZWxlbS5hZGRFdmVudExpc3RlbmVyKQ0KCQkJCQkJ ZWxlbS5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGhhbmRsZSwgZmFsc2UpOw0KCQkJ CQllbHNlIGlmIChlbGVtLmF0dGFjaEV2ZW50KQ0KCQkJCQkJZWxlbS5hdHRhY2hF dmVudCgib24iICsgdHlwZSwgaGFuZGxlKTsNCgkJCQl9DQoJCQl9DQoNCgkJCS8v IEFkZCB0aGUgZnVuY3Rpb24gdG8gdGhlIGVsZW1lbnQncyBoYW5kbGVyIGxpc3QN CgkJCWhhbmRsZXJzW2hhbmRsZXIuZ3VpZF0gPSBoYW5kbGVyOw0KDQoJCQkvLyBL ZWVwIHRyYWNrIG9mIHdoaWNoIGV2ZW50cyBoYXZlIGJlZW4gdXNlZCwgZm9yIGds b2JhbCB0cmlnZ2VyaW5nDQoJCQlqUXVlcnkuZXZlbnQuZ2xvYmFsW3R5cGVdID0g dHJ1ZTsNCgkJfSk7DQoNCgkJLy8gTnVsbGlmeSBlbGVtIHRvIHByZXZlbnQgbWVt b3J5IGxlYWtzIGluIElFDQoJCWVsZW0gPSBudWxsOw0KCX0sDQoNCglndWlkOiAx LA0KCWdsb2JhbDoge30sDQoNCgkvLyBEZXRhY2ggYW4gZXZlbnQgb3Igc2V0IG9m IGV2ZW50cyBmcm9tIGFuIGVsZW1lbnQNCglyZW1vdmU6IGZ1bmN0aW9uKGVsZW0s IHR5cGVzLCBoYW5kbGVyKSB7DQoJCS8vIGRvbid0IGRvIGV2ZW50cyBvbiB0ZXh0 IGFuZCBjb21tZW50IG5vZGVzDQoJCWlmICggZWxlbS5ub2RlVHlwZSA9PSAzIHx8 IGVsZW0ubm9kZVR5cGUgPT0gOCApDQoJCQlyZXR1cm47DQoNCgkJdmFyIGV2ZW50 cyA9IGpRdWVyeS5kYXRhKGVsZW0sICJldmVudHMiKSwgcmV0LCBpbmRleDsNCg0K CQlpZiAoIGV2ZW50cyApIHsNCgkJCS8vIFVuYmluZCBhbGwgZXZlbnRzIGZvciB0 aGUgZWxlbWVudA0KCQkJaWYgKCB0eXBlcyA9PSB1bmRlZmluZWQgfHwgKHR5cGVv ZiB0eXBlcyA9PSAic3RyaW5nIiAmJiB0eXBlcy5jaGFyQXQoMCkgPT0gIi4iKSAp DQoJCQkJZm9yICggdmFyIHR5cGUgaW4gZXZlbnRzICkNCgkJCQkJdGhpcy5yZW1v dmUoIGVsZW0sIHR5cGUgKyAodHlwZXMgfHwgIiIpICk7DQoJCQllbHNlIHsNCgkJ CQkvLyB0eXBlcyBpcyBhY3R1YWxseSBhbiBldmVudCBvYmplY3QgaGVyZQ0KCQkJ CWlmICggdHlwZXMudHlwZSApIHsNCgkJCQkJaGFuZGxlciA9IHR5cGVzLmhhbmRs ZXI7DQoJCQkJCXR5cGVzID0gdHlwZXMudHlwZTsNCgkJCQl9DQoNCgkJCQkvLyBI YW5kbGUgbXVsdGlwbGUgZXZlbnRzIHNlcGVyYXRlZCBieSBhIHNwYWNlDQoJCQkJ Ly8galF1ZXJ5KC4uLikudW5iaW5kKCJtb3VzZW92ZXIgbW91c2VvdXQiLCBmbik7 DQoJCQkJalF1ZXJ5LmVhY2godHlwZXMuc3BsaXQoL1xzKy8pLCBmdW5jdGlvbihp bmRleCwgdHlwZSl7DQoJCQkJCS8vIE5hbWVzcGFjZWQgZXZlbnQgaGFuZGxlcnMN CgkJCQkJdmFyIHBhcnRzID0gdHlwZS5zcGxpdCgiLiIpOw0KCQkJCQl0eXBlID0g cGFydHNbMF07DQoNCgkJCQkJaWYgKCBldmVudHNbdHlwZV0gKSB7DQoJCQkJCQkv LyByZW1vdmUgdGhlIGdpdmVuIGhhbmRsZXIgZm9yIHRoZSBnaXZlbiB0eXBlDQoJ CQkJCQlpZiAoIGhhbmRsZXIgKQ0KCQkJCQkJCWRlbGV0ZSBldmVudHNbdHlwZV1b aGFuZGxlci5ndWlkXTsNCg0KCQkJCQkJLy8gcmVtb3ZlIGFsbCBoYW5kbGVycyBm b3IgdGhlIGdpdmVuIHR5cGUNCgkJCQkJCWVsc2UNCgkJCQkJCQlmb3IgKCBoYW5k bGVyIGluIGV2ZW50c1t0eXBlXSApDQoJCQkJCQkJCS8vIEhhbmRsZSB0aGUgcmVt b3ZhbCBvZiBuYW1lc3BhY2VkIGV2ZW50cw0KCQkJCQkJCQlpZiAoICFwYXJ0c1sx XSB8fCBldmVudHNbdHlwZV1baGFuZGxlcl0udHlwZSA9PSBwYXJ0c1sxXSApDQoJ CQkJCQkJCQlkZWxldGUgZXZlbnRzW3R5cGVdW2hhbmRsZXJdOw0KDQoJCQkJCQkv LyByZW1vdmUgZ2VuZXJpYyBldmVudCBoYW5kbGVyIGlmIG5vIG1vcmUgaGFuZGxl cnMgZXhpc3QNCgkJCQkJCWZvciAoIHJldCBpbiBldmVudHNbdHlwZV0gKSBicmVh azsNCgkJCQkJCWlmICggIXJldCApIHsNCgkJCQkJCQlpZiAoICFqUXVlcnkuZXZl bnQuc3BlY2lhbFt0eXBlXSB8fCBqUXVlcnkuZXZlbnQuc3BlY2lhbFt0eXBlXS50 ZWFyZG93bi5jYWxsKGVsZW0pID09PSBmYWxzZSApIHsNCgkJCQkJCQkJaWYgKGVs ZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lcikNCgkJCQkJCQkJCWVsZW0ucmVtb3ZlRXZl bnRMaXN0ZW5lcih0eXBlLCBqUXVlcnkuZGF0YShlbGVtLCAiaGFuZGxlIiksIGZh bHNlKTsNCgkJCQkJCQkJZWxzZSBpZiAoZWxlbS5kZXRhY2hFdmVudCkNCgkJCQkJ CQkJCWVsZW0uZGV0YWNoRXZlbnQoIm9uIiArIHR5cGUsIGpRdWVyeS5kYXRhKGVs ZW0sICJoYW5kbGUiKSk7DQoJCQkJCQkJfQ0KCQkJCQkJCXJldCA9IG51bGw7DQoJ CQkJCQkJZGVsZXRlIGV2ZW50c1t0eXBlXTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJ CX0pOw0KCQkJfQ0KDQoJCQkvLyBSZW1vdmUgdGhlIGV4cGFuZG8gaWYgaXQncyBu byBsb25nZXIgdXNlZA0KCQkJZm9yICggcmV0IGluIGV2ZW50cyApIGJyZWFrOw0K CQkJaWYgKCAhcmV0ICkgew0KCQkJCXZhciBoYW5kbGUgPSBqUXVlcnkuZGF0YSgg ZWxlbSwgImhhbmRsZSIgKTsNCgkJCQlpZiAoIGhhbmRsZSApIGhhbmRsZS5lbGVt ID0gbnVsbDsNCgkJCQlqUXVlcnkucmVtb3ZlRGF0YSggZWxlbSwgImV2ZW50cyIg KTsNCgkJCQlqUXVlcnkucmVtb3ZlRGF0YSggZWxlbSwgImhhbmRsZSIgKTsNCgkJ CX0NCgkJfQ0KCX0sDQoNCgl0cmlnZ2VyOiBmdW5jdGlvbih0eXBlLCBkYXRhLCBl bGVtLCBkb25hdGl2ZSwgZXh0cmEpIHsNCgkJLy8gQ2xvbmUgdGhlIGluY29taW5n IGRhdGEsIGlmIGFueQ0KCQlkYXRhID0galF1ZXJ5Lm1ha2VBcnJheShkYXRhKTsN Cg0KCQlpZiAoIHR5cGUuaW5kZXhPZigiISIpID49IDAgKSB7DQoJCQl0eXBlID0g dHlwZS5zbGljZSgwLCAtMSk7DQoJCQl2YXIgZXhjbHVzaXZlID0gdHJ1ZTsNCgkJ fQ0KDQoJCS8vIEhhbmRsZSBhIGdsb2JhbCB0cmlnZ2VyDQoJCWlmICggIWVsZW0g KSB7DQoJCQkvLyBPbmx5IHRyaWdnZXIgaWYgd2UndmUgZXZlciBib3VuZCBhbiBl dmVudCBmb3IgaXQNCgkJCWlmICggdGhpcy5nbG9iYWxbdHlwZV0gKQ0KCQkJCWpR dWVyeSgiKiIpLmFkZChbd2luZG93LCBkb2N1bWVudF0pLnRyaWdnZXIodHlwZSwg ZGF0YSk7DQoNCgkJLy8gSGFuZGxlIHRyaWdnZXJpbmcgYSBzaW5nbGUgZWxlbWVu dA0KCQl9IGVsc2Ugew0KCQkJLy8gZG9uJ3QgZG8gZXZlbnRzIG9uIHRleHQgYW5k IGNvbW1lbnQgbm9kZXMNCgkJCWlmICggZWxlbS5ub2RlVHlwZSA9PSAzIHx8IGVs ZW0ubm9kZVR5cGUgPT0gOCApDQoJCQkJcmV0dXJuIHVuZGVmaW5lZDsNCg0KCQkJ dmFyIHZhbCwgcmV0LCBmbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKCBlbGVtWyB0eXBl IF0gfHwgbnVsbCApLA0KCQkJCS8vIENoZWNrIHRvIHNlZSBpZiB3ZSBuZWVkIHRv IHByb3ZpZGUgYSBmYWtlIGV2ZW50LCBvciBub3QNCgkJCQlldmVudCA9ICFkYXRh WzBdIHx8ICFkYXRhWzBdLnByZXZlbnREZWZhdWx0Ow0KDQoJCQkvLyBQYXNzIGFs b25nIGEgZmFrZSBldmVudA0KCQkJaWYgKCBldmVudCApIHsNCgkJCQlkYXRhLnVu c2hpZnQoew0KCQkJCQl0eXBlOiB0eXBlLA0KCQkJCQl0YXJnZXQ6IGVsZW0sDQoJ CQkJCXByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpe30sDQoJCQkJCXN0b3BQcm9w YWdhdGlvbjogZnVuY3Rpb24oKXt9LA0KCQkJCQl0aW1lU3RhbXA6IG5vdygpDQoJ CQkJfSk7DQoJCQkJZGF0YVswXVtleHBhbmRvXSA9IHRydWU7IC8vIG5vIG5lZWQg dG8gZml4IGZha2UgZXZlbnQNCgkJCX0NCg0KCQkJLy8gRW5mb3JjZSB0aGUgcmln aHQgdHJpZ2dlciB0eXBlDQoJCQlkYXRhWzBdLnR5cGUgPSB0eXBlOw0KCQkJaWYg KCBleGNsdXNpdmUgKQ0KCQkJCWRhdGFbMF0uZXhjbHVzaXZlID0gdHJ1ZTsNCg0K CQkJLy8gVHJpZ2dlciB0aGUgZXZlbnQsIGl0IGlzIGFzc3VtZWQgdGhhdCAiaGFu ZGxlIiBpcyBhIGZ1bmN0aW9uDQoJCQl2YXIgaGFuZGxlID0galF1ZXJ5LmRhdGEo ZWxlbSwgImhhbmRsZSIpOw0KCQkJaWYgKCBoYW5kbGUgKQ0KCQkJCXZhbCA9IGhh bmRsZS5hcHBseSggZWxlbSwgZGF0YSApOw0KDQoJCQkvLyBIYW5kbGUgdHJpZ2dl cmluZyBuYXRpdmUgLm9uZm9vIGhhbmRsZXJzIChhbmQgb24gbGlua3Mgc2luY2Ug d2UgZG9uJ3QgY2FsbCAuY2xpY2soKSBmb3IgbGlua3MpDQoJCQlpZiAoICghZm4g fHwgKGpRdWVyeS5ub2RlTmFtZShlbGVtLCAnYScpICYmIHR5cGUgPT0gImNsaWNr IikpICYmIGVsZW1bIm9uIit0eXBlXSAmJiBlbGVtWyJvbiIrdHlwZV0uYXBwbHko IGVsZW0sIGRhdGEgKSA9PT0gZmFsc2UgKQ0KCQkJCXZhbCA9IGZhbHNlOw0KDQoJ CQkvLyBFeHRyYSBmdW5jdGlvbnMgZG9uJ3QgZ2V0IHRoZSBjdXN0b20gZXZlbnQg b2JqZWN0DQoJCQlpZiAoIGV2ZW50ICkNCgkJCQlkYXRhLnNoaWZ0KCk7DQoNCgkJ CS8vIEhhbmRsZSB0cmlnZ2VyaW5nIG9mIGV4dHJhIGZ1bmN0aW9uDQoJCQlpZiAo IGV4dHJhICYmIGpRdWVyeS5pc0Z1bmN0aW9uKCBleHRyYSApICkgew0KCQkJCS8v IGNhbGwgdGhlIGV4dHJhIGZ1bmN0aW9uIGFuZCB0YWNrIHRoZSBjdXJyZW50IHJl dHVybiB2YWx1ZSBvbiB0aGUgZW5kIGZvciBwb3NzaWJsZSBpbnNwZWN0aW9uDQoJ CQkJcmV0ID0gZXh0cmEuYXBwbHkoIGVsZW0sIHZhbCA9PSBudWxsID8gZGF0YSA6 IGRhdGEuY29uY2F0KCB2YWwgKSApOw0KCQkJCS8vIGlmIGFueXRoaW5nIGlzIHJl dHVybmVkLCBnaXZlIGl0IHByZWNlZGVuY2UgYW5kIGhhdmUgaXQgb3ZlcndyaXRl IHRoZSBwcmV2aW91cyB2YWx1ZQ0KCQkJCWlmIChyZXQgIT09IHVuZGVmaW5lZCkN CgkJCQkJdmFsID0gcmV0Ow0KCQkJfQ0KDQoJCQkvLyBUcmlnZ2VyIHRoZSBuYXRp dmUgZXZlbnRzIChleGNlcHQgZm9yIGNsaWNrcyBvbiBsaW5rcykNCgkJCWlmICgg Zm4gJiYgZG9uYXRpdmUgIT09IGZhbHNlICYmIHZhbCAhPT0gZmFsc2UgJiYgIShq UXVlcnkubm9kZU5hbWUoZWxlbSwgJ2EnKSAmJiB0eXBlID09ICJjbGljayIpICkg ew0KCQkJCXRoaXMudHJpZ2dlcmVkID0gdHJ1ZTsNCgkJCQl0cnkgew0KCQkJCQll bGVtWyB0eXBlIF0oKTsNCgkJCQkvLyBwcmV2ZW50IElFIGZyb20gdGhyb3dpbmcg YW4gZXJyb3IgZm9yIHNvbWUgaGlkZGVuIGVsZW1lbnRzDQoJCQkJfSBjYXRjaCAo ZSkge30NCgkJCX0NCg0KCQkJdGhpcy50cmlnZ2VyZWQgPSBmYWxzZTsNCgkJfQ0K DQoJCXJldHVybiB2YWw7DQoJfSwNCg0KCWhhbmRsZTogZnVuY3Rpb24oZXZlbnQp IHsNCgkJLy8gcmV0dXJuZWQgdW5kZWZpbmVkIG9yIGZhbHNlDQoJCXZhciB2YWws IHJldCwgbmFtZXNwYWNlLCBhbGwsIGhhbmRsZXJzOw0KDQoJCWV2ZW50ID0gYXJn dW1lbnRzWzBdID0galF1ZXJ5LmV2ZW50LmZpeCggZXZlbnQgfHwgd2luZG93LmV2 ZW50ICk7DQoNCgkJLy8gTmFtZXNwYWNlZCBldmVudCBoYW5kbGVycw0KCQluYW1l c3BhY2UgPSBldmVudC50eXBlLnNwbGl0KCIuIik7DQoJCWV2ZW50LnR5cGUgPSBu YW1lc3BhY2VbMF07DQoJCW5hbWVzcGFjZSA9IG5hbWVzcGFjZVsxXTsNCgkJLy8g Q2FjaGUgdGhpcyBub3csIGFsbCA9IHRydWUgbWVhbnMsIGFueSBoYW5kbGVyDQoJ CWFsbCA9ICFuYW1lc3BhY2UgJiYgIWV2ZW50LmV4Y2x1c2l2ZTsNCg0KCQloYW5k bGVycyA9ICggalF1ZXJ5LmRhdGEodGhpcywgImV2ZW50cyIpIHx8IHt9IClbZXZl bnQudHlwZV07DQoNCgkJZm9yICggdmFyIGogaW4gaGFuZGxlcnMgKSB7DQoJCQl2 YXIgaGFuZGxlciA9IGhhbmRsZXJzW2pdOw0KDQoJCQkvLyBGaWx0ZXIgdGhlIGZ1 bmN0aW9ucyBieSBjbGFzcw0KCQkJaWYgKCBhbGwgfHwgaGFuZGxlci50eXBlID09 IG5hbWVzcGFjZSApIHsNCgkJCQkvLyBQYXNzIGluIGEgcmVmZXJlbmNlIHRvIHRo ZSBoYW5kbGVyIGZ1bmN0aW9uIGl0c2VsZg0KCQkJCS8vIFNvIHRoYXQgd2UgY2Fu IGxhdGVyIHJlbW92ZSBpdA0KCQkJCWV2ZW50LmhhbmRsZXIgPSBoYW5kbGVyOw0K CQkJCWV2ZW50LmRhdGEgPSBoYW5kbGVyLmRhdGE7DQoNCgkJCQlyZXQgPSBoYW5k bGVyLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTsNCg0KCQkJCWlmICggdmFsICE9 PSBmYWxzZSApDQoJCQkJCXZhbCA9IHJldDsNCg0KCQkJCWlmICggcmV0ID09PSBm YWxzZSApIHsNCgkJCQkJZXZlbnQucHJldmVudERlZmF1bHQoKTsNCgkJCQkJZXZl bnQuc3RvcFByb3BhZ2F0aW9uKCk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJcmV0 dXJuIHZhbDsNCgl9LA0KDQoJZml4OiBmdW5jdGlvbihldmVudCkgew0KCQlpZiAo IGV2ZW50W2V4cGFuZG9dID09IHRydWUgKQ0KCQkJcmV0dXJuIGV2ZW50Ow0KDQoJ CS8vIHN0b3JlIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgZXZlbnQgb2JqZWN0DQoJ CS8vIGFuZCAiY2xvbmUiIHRvIHNldCByZWFkLW9ubHkgcHJvcGVydGllcw0KCQl2 YXIgb3JpZ2luYWxFdmVudCA9IGV2ZW50Ow0KCQlldmVudCA9IHsgb3JpZ2luYWxF dmVudDogb3JpZ2luYWxFdmVudCB9Ow0KCQl2YXIgcHJvcHMgPSAiYWx0S2V5IGF0 dHJDaGFuZ2UgYXR0ck5hbWUgYnViYmxlcyBidXR0b24gY2FuY2VsYWJsZSBjaGFy Q29kZSBjbGllbnRYIGNsaWVudFkgY3RybEtleSBjdXJyZW50VGFyZ2V0IGRhdGEg ZGV0YWlsIGV2ZW50UGhhc2UgZnJvbUVsZW1lbnQgaGFuZGxlciBrZXlDb2RlIG1l dGFLZXkgbmV3VmFsdWUgb3JpZ2luYWxUYXJnZXQgcGFnZVggcGFnZVkgcHJldlZh bHVlIHJlbGF0ZWROb2RlIHJlbGF0ZWRUYXJnZXQgc2NyZWVuWCBzY3JlZW5ZIHNo aWZ0S2V5IHNyY0VsZW1lbnQgdGFyZ2V0IHRpbWVTdGFtcCB0b0VsZW1lbnQgdHlw ZSB2aWV3IHdoZWVsRGVsdGEgd2hpY2giLnNwbGl0KCIgIik7DQoJCWZvciAoIHZh ciBpPXByb3BzLmxlbmd0aDsgaTsgaS0tICkNCgkJCWV2ZW50WyBwcm9wc1tpXSBd ID0gb3JpZ2luYWxFdmVudFsgcHJvcHNbaV0gXTsNCg0KCQkvLyBNYXJrIGl0IGFz IGZpeGVkDQoJCWV2ZW50W2V4cGFuZG9dID0gdHJ1ZTsNCg0KCQkvLyBhZGQgcHJl dmVudERlZmF1bHQgYW5kIHN0b3BQcm9wYWdhdGlvbiBzaW5jZQ0KCQkvLyB0aGV5 IHdpbGwgbm90IHdvcmsgb24gdGhlIGNsb25lDQoJCWV2ZW50LnByZXZlbnREZWZh dWx0ID0gZnVuY3Rpb24oKSB7DQoJCQkvLyBpZiBwcmV2ZW50RGVmYXVsdCBleGlz dHMgcnVuIGl0IG9uIHRoZSBvcmlnaW5hbCBldmVudA0KCQkJaWYgKG9yaWdpbmFs RXZlbnQucHJldmVudERlZmF1bHQpDQoJCQkJb3JpZ2luYWxFdmVudC5wcmV2ZW50 RGVmYXVsdCgpOw0KCQkJLy8gb3RoZXJ3aXNlIHNldCB0aGUgcmV0dXJuVmFsdWUg cHJvcGVydHkgb2YgdGhlIG9yaWdpbmFsIGV2ZW50IHRvIGZhbHNlIChJRSkNCgkJ CW9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWUgPSBmYWxzZTsNCgkJfTsNCgkJZXZl bnQuc3RvcFByb3BhZ2F0aW9uID0gZnVuY3Rpb24oKSB7DQoJCQkvLyBpZiBzdG9w UHJvcGFnYXRpb24gZXhpc3RzIHJ1biBpdCBvbiB0aGUgb3JpZ2luYWwgZXZlbnQN CgkJCWlmIChvcmlnaW5hbEV2ZW50LnN0b3BQcm9wYWdhdGlvbikNCgkJCQlvcmln aW5hbEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOw0KCQkJLy8gb3RoZXJ3aXNlIHNl dCB0aGUgY2FuY2VsQnViYmxlIHByb3BlcnR5IG9mIHRoZSBvcmlnaW5hbCBldmVu dCB0byB0cnVlIChJRSkNCgkJCW9yaWdpbmFsRXZlbnQuY2FuY2VsQnViYmxlID0g dHJ1ZTsNCgkJfTsNCg0KCQkvLyBGaXggdGltZVN0YW1wDQoJCWV2ZW50LnRpbWVT dGFtcCA9IGV2ZW50LnRpbWVTdGFtcCB8fCBub3coKTsNCg0KCQkvLyBGaXggdGFy Z2V0IHByb3BlcnR5LCBpZiBuZWNlc3NhcnkNCgkJaWYgKCAhZXZlbnQudGFyZ2V0 ICkNCgkJCWV2ZW50LnRhcmdldCA9IGV2ZW50LnNyY0VsZW1lbnQgfHwgZG9jdW1l bnQ7IC8vIEZpeGVzICMxOTI1IHdoZXJlIHNyY0VsZW1lbnQgbWlnaHQgbm90IGJl IGRlZmluZWQgZWl0aGVyDQoNCgkJLy8gY2hlY2sgaWYgdGFyZ2V0IGlzIGEgdGV4 dG5vZGUgKHNhZmFyaSkNCgkJaWYgKCBldmVudC50YXJnZXQubm9kZVR5cGUgPT0g MyApDQoJCQlldmVudC50YXJnZXQgPSBldmVudC50YXJnZXQucGFyZW50Tm9kZTsN Cg0KCQkvLyBBZGQgcmVsYXRlZFRhcmdldCwgaWYgbmVjZXNzYXJ5DQoJCWlmICgg IWV2ZW50LnJlbGF0ZWRUYXJnZXQgJiYgZXZlbnQuZnJvbUVsZW1lbnQgKQ0KCQkJ ZXZlbnQucmVsYXRlZFRhcmdldCA9IGV2ZW50LmZyb21FbGVtZW50ID09IGV2ZW50 LnRhcmdldCA/IGV2ZW50LnRvRWxlbWVudCA6IGV2ZW50LmZyb21FbGVtZW50Ow0K DQoJCS8vIENhbGN1bGF0ZSBwYWdlWC9ZIGlmIG1pc3NpbmcgYW5kIGNsaWVudFgv WSBhdmFpbGFibGUNCgkJaWYgKCBldmVudC5wYWdlWCA9PSBudWxsICYmIGV2ZW50 LmNsaWVudFggIT0gbnVsbCApIHsNCgkJCXZhciBkb2MgPSBkb2N1bWVudC5kb2N1 bWVudEVsZW1lbnQsIGJvZHkgPSBkb2N1bWVudC5ib2R5Ow0KCQkJZXZlbnQucGFn ZVggPSBldmVudC5jbGllbnRYICsgKGRvYyAmJiBkb2Muc2Nyb2xsTGVmdCB8fCBi b2R5ICYmIGJvZHkuc2Nyb2xsTGVmdCB8fCAwKSAtIChkb2MuY2xpZW50TGVmdCB8 fCAwKTsNCgkJCWV2ZW50LnBhZ2VZID0gZXZlbnQuY2xpZW50WSArIChkb2MgJiYg ZG9jLnNjcm9sbFRvcCB8fCBib2R5ICYmIGJvZHkuc2Nyb2xsVG9wIHx8IDApIC0g KGRvYy5jbGllbnRUb3AgfHwgMCk7DQoJCX0NCg0KCQkvLyBBZGQgd2hpY2ggZm9y IGtleSBldmVudHMNCgkJaWYgKCAhZXZlbnQud2hpY2ggJiYgKChldmVudC5jaGFy Q29kZSB8fCBldmVudC5jaGFyQ29kZSA9PT0gMCkgPyBldmVudC5jaGFyQ29kZSA6 IGV2ZW50LmtleUNvZGUpICkNCgkJCWV2ZW50LndoaWNoID0gZXZlbnQuY2hhckNv ZGUgfHwgZXZlbnQua2V5Q29kZTsNCg0KCQkvLyBBZGQgbWV0YUtleSB0byBub24t TWFjIGJyb3dzZXJzICh1c2UgY3RybCBmb3IgUEMncyBhbmQgTWV0YSBmb3IgTWFj cykNCgkJaWYgKCAhZXZlbnQubWV0YUtleSAmJiBldmVudC5jdHJsS2V5ICkNCgkJ CWV2ZW50Lm1ldGFLZXkgPSBldmVudC5jdHJsS2V5Ow0KDQoJCS8vIEFkZCB3aGlj aCBmb3IgY2xpY2s6IDEgPT0gbGVmdDsgMiA9PSBtaWRkbGU7IDMgPT0gcmlnaHQN CgkJLy8gTm90ZTogYnV0dG9uIGlzIG5vdCBub3JtYWxpemVkLCBzbyBkb24ndCB1 c2UgaXQNCgkJaWYgKCAhZXZlbnQud2hpY2ggJiYgZXZlbnQuYnV0dG9uICkNCgkJ CWV2ZW50LndoaWNoID0gKGV2ZW50LmJ1dHRvbiAmIDEgPyAxIDogKCBldmVudC5i dXR0b24gJiAyID8gMyA6ICggZXZlbnQuYnV0dG9uICYgNCA/IDIgOiAwICkgKSk7 DQoNCgkJcmV0dXJuIGV2ZW50Ow0KCX0sDQoNCglwcm94eTogZnVuY3Rpb24oIGZu LCBwcm94eSApew0KCQkvLyBTZXQgdGhlIGd1aWQgb2YgdW5pcXVlIGhhbmRsZXIg dG8gdGhlIHNhbWUgb2Ygb3JpZ2luYWwgaGFuZGxlciwgc28gaXQgY2FuIGJlIHJl bW92ZWQNCgkJcHJveHkuZ3VpZCA9IGZuLmd1aWQgPSBmbi5ndWlkIHx8IHByb3h5 Lmd1aWQgfHwgdGhpcy5ndWlkKys7DQoJCS8vIFNvIHByb3h5IGNhbiBiZSBkZWNs YXJlZCBhcyBhbiBhcmd1bWVudA0KCQlyZXR1cm4gcHJveHk7DQoJfSwNCg0KCXNw ZWNpYWw6IHsNCgkJcmVhZHk6IHsNCgkJCXNldHVwOiBmdW5jdGlvbigpIHsNCgkJ CQkvLyBNYWtlIHN1cmUgdGhlIHJlYWR5IGV2ZW50IGlzIHNldHVwDQoJCQkJYmlu ZFJlYWR5KCk7DQoJCQkJcmV0dXJuOw0KCQkJfSwNCg0KCQkJdGVhcmRvd246IGZ1 bmN0aW9uKCkgeyByZXR1cm47IH0NCgkJfSwNCg0KCQltb3VzZWVudGVyOiB7DQoJ CQlzZXR1cDogZnVuY3Rpb24oKSB7DQoJCQkJaWYgKCBqUXVlcnkuYnJvd3Nlci5t c2llICkgcmV0dXJuIGZhbHNlOw0KCQkJCWpRdWVyeSh0aGlzKS5iaW5kKCJtb3Vz ZW92ZXIiLCBqUXVlcnkuZXZlbnQuc3BlY2lhbC5tb3VzZWVudGVyLmhhbmRsZXIp Ow0KCQkJCXJldHVybiB0cnVlOw0KCQkJfSwNCg0KCQkJdGVhcmRvd246IGZ1bmN0 aW9uKCkgew0KCQkJCWlmICggalF1ZXJ5LmJyb3dzZXIubXNpZSApIHJldHVybiBm YWxzZTsNCgkJCQlqUXVlcnkodGhpcykudW5iaW5kKCJtb3VzZW92ZXIiLCBqUXVl cnkuZXZlbnQuc3BlY2lhbC5tb3VzZWVudGVyLmhhbmRsZXIpOw0KCQkJCXJldHVy biB0cnVlOw0KCQkJfSwNCg0KCQkJaGFuZGxlcjogZnVuY3Rpb24oZXZlbnQpIHsN CgkJCQkvLyBJZiB3ZSBhY3R1YWxseSBqdXN0IG1vdXNlZCBvbiB0byBhIHN1Yi1l bGVtZW50LCBpZ25vcmUgaXQNCgkJCQlpZiAoIHdpdGhpbkVsZW1lbnQoZXZlbnQs IHRoaXMpICkgcmV0dXJuIHRydWU7DQoJCQkJLy8gRXhlY3V0ZSB0aGUgcmlnaHQg aGFuZGxlcnMgYnkgc2V0dGluZyB0aGUgZXZlbnQgdHlwZSB0byBtb3VzZWVudGVy DQoJCQkJZXZlbnQudHlwZSA9ICJtb3VzZWVudGVyIjsNCgkJCQlyZXR1cm4galF1 ZXJ5LmV2ZW50LmhhbmRsZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOw0KCQkJfQ0K CQl9LA0KDQoJCW1vdXNlbGVhdmU6IHsNCgkJCXNldHVwOiBmdW5jdGlvbigpIHsN CgkJCQlpZiAoIGpRdWVyeS5icm93c2VyLm1zaWUgKSByZXR1cm4gZmFsc2U7DQoJ CQkJalF1ZXJ5KHRoaXMpLmJpbmQoIm1vdXNlb3V0IiwgalF1ZXJ5LmV2ZW50LnNw ZWNpYWwubW91c2VsZWF2ZS5oYW5kbGVyKTsNCgkJCQlyZXR1cm4gdHJ1ZTsNCgkJ CX0sDQoNCgkJCXRlYXJkb3duOiBmdW5jdGlvbigpIHsNCgkJCQlpZiAoIGpRdWVy eS5icm93c2VyLm1zaWUgKSByZXR1cm4gZmFsc2U7DQoJCQkJalF1ZXJ5KHRoaXMp LnVuYmluZCgibW91c2VvdXQiLCBqUXVlcnkuZXZlbnQuc3BlY2lhbC5tb3VzZWxl YXZlLmhhbmRsZXIpOw0KCQkJCXJldHVybiB0cnVlOw0KCQkJfSwNCg0KCQkJaGFu ZGxlcjogZnVuY3Rpb24oZXZlbnQpIHsNCgkJCQkvLyBJZiB3ZSBhY3R1YWxseSBq dXN0IG1vdXNlZCBvbiB0byBhIHN1Yi1lbGVtZW50LCBpZ25vcmUgaXQNCgkJCQlp ZiAoIHdpdGhpbkVsZW1lbnQoZXZlbnQsIHRoaXMpICkgcmV0dXJuIHRydWU7DQoJ CQkJLy8gRXhlY3V0ZSB0aGUgcmlnaHQgaGFuZGxlcnMgYnkgc2V0dGluZyB0aGUg ZXZlbnQgdHlwZSB0byBtb3VzZWxlYXZlDQoJCQkJZXZlbnQudHlwZSA9ICJtb3Vz ZWxlYXZlIjsNCgkJCQlyZXR1cm4galF1ZXJ5LmV2ZW50LmhhbmRsZS5hcHBseSh0 aGlzLCBhcmd1bWVudHMpOw0KCQkJfQ0KCQl9DQoJfQ0KfTsNCg0KalF1ZXJ5LmZu LmV4dGVuZCh7DQoJYmluZDogZnVuY3Rpb24oIHR5cGUsIGRhdGEsIGZuICkgew0K CQlyZXR1cm4gdHlwZSA9PSAidW5sb2FkIiA/IHRoaXMub25lKHR5cGUsIGRhdGEs IGZuKSA6IHRoaXMuZWFjaChmdW5jdGlvbigpew0KCQkJalF1ZXJ5LmV2ZW50LmFk ZCggdGhpcywgdHlwZSwgZm4gfHwgZGF0YSwgZm4gJiYgZGF0YSApOw0KCQl9KTsN Cgl9LA0KDQoJb25lOiBmdW5jdGlvbiggdHlwZSwgZGF0YSwgZm4gKSB7DQoJCXZh ciBvbmUgPSBqUXVlcnkuZXZlbnQucHJveHkoIGZuIHx8IGRhdGEsIGZ1bmN0aW9u KGV2ZW50KSB7DQoJCQlqUXVlcnkodGhpcykudW5iaW5kKGV2ZW50LCBvbmUpOw0K CQkJcmV0dXJuIChmbiB8fCBkYXRhKS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7 DQoJCX0pOw0KCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7DQoJCQlqUXVl cnkuZXZlbnQuYWRkKCB0aGlzLCB0eXBlLCBvbmUsIGZuICYmIGRhdGEpOw0KCQl9 KTsNCgl9LA0KDQoJdW5iaW5kOiBmdW5jdGlvbiggdHlwZSwgZm4gKSB7DQoJCXJl dHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXsNCgkJCWpRdWVyeS5ldmVudC5yZW1v dmUoIHRoaXMsIHR5cGUsIGZuICk7DQoJCX0pOw0KCX0sDQoNCgl0cmlnZ2VyOiBm dW5jdGlvbiggdHlwZSwgZGF0YSwgZm4gKSB7DQoJCXJldHVybiB0aGlzLmVhY2go ZnVuY3Rpb24oKXsNCgkJCWpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRh LCB0aGlzLCB0cnVlLCBmbiApOw0KCQl9KTsNCgl9LA0KDQoJdHJpZ2dlckhhbmRs ZXI6IGZ1bmN0aW9uKCB0eXBlLCBkYXRhLCBmbiApIHsNCgkJcmV0dXJuIHRoaXNb MF0gJiYgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoIHR5cGUsIGRhdGEsIHRoaXNbMF0s IGZhbHNlLCBmbiApOw0KCX0sDQoNCgl0b2dnbGU6IGZ1bmN0aW9uKCBmbiApIHsN CgkJLy8gU2F2ZSByZWZlcmVuY2UgdG8gYXJndW1lbnRzIGZvciBhY2Nlc3MgaW4g Y2xvc3VyZQ0KCQl2YXIgYXJncyA9IGFyZ3VtZW50cywgaSA9IDE7DQoNCgkJLy8g bGluayBhbGwgdGhlIGZ1bmN0aW9ucywgc28gYW55IG9mIHRoZW0gY2FuIHVuYmlu ZCB0aGlzIGNsaWNrIGhhbmRsZXINCgkJd2hpbGUoIGkgPCBhcmdzLmxlbmd0aCAp DQoJCQlqUXVlcnkuZXZlbnQucHJveHkoIGZuLCBhcmdzW2krK10gKTsNCg0KCQly ZXR1cm4gdGhpcy5jbGljayggalF1ZXJ5LmV2ZW50LnByb3h5KCBmbiwgZnVuY3Rp b24oZXZlbnQpIHsNCgkJCS8vIEZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb24gdG8g ZXhlY3V0ZQ0KCQkJdGhpcy5sYXN0VG9nZ2xlID0gKCB0aGlzLmxhc3RUb2dnbGUg fHwgMCApICUgaTsNCg0KCQkJLy8gTWFrZSBzdXJlIHRoYXQgY2xpY2tzIHN0b3AN CgkJCWV2ZW50LnByZXZlbnREZWZhdWx0KCk7DQoNCgkJCS8vIGFuZCBleGVjdXRl IHRoZSBmdW5jdGlvbg0KCQkJcmV0dXJuIGFyZ3NbIHRoaXMubGFzdFRvZ2dsZSsr IF0uYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApIHx8IGZhbHNlOw0KCQl9KSk7DQoJ fSwNCg0KCWhvdmVyOiBmdW5jdGlvbihmbk92ZXIsIGZuT3V0KSB7DQoJCXJldHVy biB0aGlzLmJpbmQoJ21vdXNlZW50ZXInLCBmbk92ZXIpLmJpbmQoJ21vdXNlbGVh dmUnLCBmbk91dCk7DQoJfSwNCg0KCXJlYWR5OiBmdW5jdGlvbihmbikgew0KCQkv LyBBdHRhY2ggdGhlIGxpc3RlbmVycw0KCQliaW5kUmVhZHkoKTsNCg0KCQkvLyBJ ZiB0aGUgRE9NIGlzIGFscmVhZHkgcmVhZHkNCgkJaWYgKCBqUXVlcnkuaXNSZWFk eSApDQoJCQkvLyBFeGVjdXRlIHRoZSBmdW5jdGlvbiBpbW1lZGlhdGVseQ0KCQkJ Zm4uY2FsbCggZG9jdW1lbnQsIGpRdWVyeSApOw0KDQoJCS8vIE90aGVyd2lzZSwg cmVtZW1iZXIgdGhlIGZ1bmN0aW9uIGZvciBsYXRlcg0KCQllbHNlDQoJCQkvLyBB ZGQgdGhlIGZ1bmN0aW9uIHRvIHRoZSB3YWl0IGxpc3QNCgkJCWpRdWVyeS5yZWFk eUxpc3QucHVzaCggZnVuY3Rpb24oKSB7IHJldHVybiBmbi5jYWxsKHRoaXMsIGpR dWVyeSk7IH0gKTsNCg0KCQlyZXR1cm4gdGhpczsNCgl9DQp9KTsNCg0KalF1ZXJ5 LmV4dGVuZCh7DQoJaXNSZWFkeTogZmFsc2UsDQoJcmVhZHlMaXN0OiBbXSwNCgkv LyBIYW5kbGUgd2hlbiB0aGUgRE9NIGlzIHJlYWR5DQoJcmVhZHk6IGZ1bmN0aW9u KCkgew0KCQkvLyBNYWtlIHN1cmUgdGhhdCB0aGUgRE9NIGlzIG5vdCBhbHJlYWR5 IGxvYWRlZA0KCQlpZiAoICFqUXVlcnkuaXNSZWFkeSApIHsNCgkJCS8vIFJlbWVt YmVyIHRoYXQgdGhlIERPTSBpcyByZWFkeQ0KCQkJalF1ZXJ5LmlzUmVhZHkgPSB0 cnVlOw0KDQoJCQkvLyBJZiB0aGVyZSBhcmUgZnVuY3Rpb25zIGJvdW5kLCB0byBl eGVjdXRlDQoJCQlpZiAoIGpRdWVyeS5yZWFkeUxpc3QgKSB7DQoJCQkJLy8gRXhl Y3V0ZSBhbGwgb2YgdGhlbQ0KCQkJCWpRdWVyeS5lYWNoKCBqUXVlcnkucmVhZHlM aXN0LCBmdW5jdGlvbigpew0KCQkJCQl0aGlzLmNhbGwoIGRvY3VtZW50ICk7DQoJ CQkJfSk7DQoNCgkJCQkvLyBSZXNldCB0aGUgbGlzdCBvZiBmdW5jdGlvbnMNCgkJ CQlqUXVlcnkucmVhZHlMaXN0ID0gbnVsbDsNCgkJCX0NCg0KCQkJLy8gVHJpZ2dl ciBhbnkgYm91bmQgcmVhZHkgZXZlbnRzDQoJCQlqUXVlcnkoZG9jdW1lbnQpLnRy aWdnZXJIYW5kbGVyKCJyZWFkeSIpOw0KCQl9DQoJfQ0KfSk7DQoNCnZhciByZWFk eUJvdW5kID0gZmFsc2U7DQoNCmZ1bmN0aW9uIGJpbmRSZWFkeSgpew0KCWlmICgg cmVhZHlCb3VuZCApIHJldHVybjsNCglyZWFkeUJvdW5kID0gdHJ1ZTsNCg0KCS8v IE1vemlsbGEsIE9wZXJhIChzZWUgZnVydGhlciBiZWxvdyBmb3IgaXQpIGFuZCB3 ZWJraXQgbmlnaHRsaWVzIGN1cnJlbnRseSBzdXBwb3J0IHRoaXMgZXZlbnQNCglp ZiAoIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIgJiYgIWpRdWVyeS5icm93c2Vy Lm9wZXJhKQ0KCQkvLyBVc2UgdGhlIGhhbmR5IGV2ZW50IGNhbGxiYWNrDQoJCWRv Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoICJET01Db250ZW50TG9hZGVkIiwgalF1 ZXJ5LnJlYWR5LCBmYWxzZSApOw0KDQoJLy8gSWYgSUUgaXMgdXNlZCBhbmQgaXMg bm90IGluIGEgZnJhbWUNCgkvLyBDb250aW51YWxseSBjaGVjayB0byBzZWUgaWYg dGhlIGRvY3VtZW50IGlzIHJlYWR5DQoJaWYgKCBqUXVlcnkuYnJvd3Nlci5tc2ll ICYmIHdpbmRvdyA9PSB0b3AgKSAoZnVuY3Rpb24oKXsNCgkJaWYgKGpRdWVyeS5p c1JlYWR5KSByZXR1cm47DQoJCXRyeSB7DQoJCQkvLyBJZiBJRSBpcyB1c2VkLCB1 c2UgdGhlIHRyaWNrIGJ5IERpZWdvIFBlcmluaQ0KCQkJLy8gaHR0cDovL2phdmFz Y3JpcHQubndib3guY29tL0lFQ29udGVudExvYWRlZC8NCgkJCWRvY3VtZW50LmRv Y3VtZW50RWxlbWVudC5kb1Njcm9sbCgibGVmdCIpOw0KCQl9IGNhdGNoKCBlcnJv ciApIHsNCgkJCXNldFRpbWVvdXQoIGFyZ3VtZW50cy5jYWxsZWUsIDAgKTsNCgkJ CXJldHVybjsNCgkJfQ0KCQkvLyBhbmQgZXhlY3V0ZSBhbnkgd2FpdGluZyBmdW5j dGlvbnMNCgkJalF1ZXJ5LnJlYWR5KCk7DQoJfSkoKTsNCg0KCWlmICggalF1ZXJ5 LmJyb3dzZXIub3BlcmEgKQ0KCQlkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCAi RE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uICgpIHsNCgkJCWlmIChqUXVlcnku aXNSZWFkeSkgcmV0dXJuOw0KCQkJZm9yICh2YXIgaSA9IDA7IGkgPCBkb2N1bWVu dC5zdHlsZVNoZWV0cy5sZW5ndGg7IGkrKykNCgkJCQlpZiAoZG9jdW1lbnQuc3R5 bGVTaGVldHNbaV0uZGlzYWJsZWQpIHsNCgkJCQkJc2V0VGltZW91dCggYXJndW1l bnRzLmNhbGxlZSwgMCApOw0KCQkJCQlyZXR1cm47DQoJCQkJfQ0KCQkJLy8gYW5k IGV4ZWN1dGUgYW55IHdhaXRpbmcgZnVuY3Rpb25zDQoJCQlqUXVlcnkucmVhZHko KTsNCgkJfSwgZmFsc2UpOw0KDQoJaWYgKCBqUXVlcnkuYnJvd3Nlci5zYWZhcmkg KSB7DQoJCXZhciBudW1TdHlsZXM7DQoJCShmdW5jdGlvbigpew0KCQkJaWYgKGpR dWVyeS5pc1JlYWR5KSByZXR1cm47DQoJCQlpZiAoIGRvY3VtZW50LnJlYWR5U3Rh dGUgIT0gImxvYWRlZCIgJiYgZG9jdW1lbnQucmVhZHlTdGF0ZSAhPSAiY29tcGxl dGUiICkgew0KCQkJCXNldFRpbWVvdXQoIGFyZ3VtZW50cy5jYWxsZWUsIDAgKTsN CgkJCQlyZXR1cm47DQoJCQl9DQoJCQlpZiAoIG51bVN0eWxlcyA9PT0gdW5kZWZp bmVkICkNCgkJCQludW1TdHlsZXMgPSBqUXVlcnkoInN0eWxlLCBsaW5rW3JlbD1z dHlsZXNoZWV0XSIpLmxlbmd0aDsNCgkJCWlmICggZG9jdW1lbnQuc3R5bGVTaGVl dHMubGVuZ3RoICE9IG51bVN0eWxlcyApIHsNCgkJCQlzZXRUaW1lb3V0KCBhcmd1 bWVudHMuY2FsbGVlLCAwICk7DQoJCQkJcmV0dXJuOw0KCQkJfQ0KCQkJLy8gYW5k IGV4ZWN1dGUgYW55IHdhaXRpbmcgZnVuY3Rpb25zDQoJCQlqUXVlcnkucmVhZHko KTsNCgkJfSkoKTsNCgl9DQoNCgkvLyBBIGZhbGxiYWNrIHRvIHdpbmRvdy5vbmxv YWQsIHRoYXQgd2lsbCBhbHdheXMgd29yaw0KCWpRdWVyeS5ldmVudC5hZGQoIHdp bmRvdywgImxvYWQiLCBqUXVlcnkucmVhZHkgKTsNCn0NCg0KalF1ZXJ5LmVhY2go ICgiYmx1cixmb2N1cyxsb2FkLHJlc2l6ZSxzY3JvbGwsdW5sb2FkLGNsaWNrLGRi bGNsaWNrLCIgKw0KCSJtb3VzZWRvd24sbW91c2V1cCxtb3VzZW1vdmUsbW91c2Vv dmVyLG1vdXNlb3V0LGNoYW5nZSxzZWxlY3QsIiArDQoJInN1Ym1pdCxrZXlkb3du LGtleXByZXNzLGtleXVwLGVycm9yIikuc3BsaXQoIiwiKSwgZnVuY3Rpb24oaSwg bmFtZSl7DQoNCgkvLyBIYW5kbGUgZXZlbnQgYmluZGluZw0KCWpRdWVyeS5mbltu YW1lXSA9IGZ1bmN0aW9uKGZuKXsNCgkJcmV0dXJuIGZuID8gdGhpcy5iaW5kKG5h bWUsIGZuKSA6IHRoaXMudHJpZ2dlcihuYW1lKTsNCgl9Ow0KfSk7DQoNCi8vIENo ZWNrcyBpZiBhbiBldmVudCBoYXBwZW5lZCBvbiBhbiBlbGVtZW50IHdpdGhpbiBh bm90aGVyIGVsZW1lbnQNCi8vIFVzZWQgaW4galF1ZXJ5LmV2ZW50LnNwZWNpYWwu bW91c2VlbnRlciBhbmQgbW91c2VsZWF2ZSBoYW5kbGVycw0KdmFyIHdpdGhpbkVs ZW1lbnQgPSBmdW5jdGlvbihldmVudCwgZWxlbSkgew0KCS8vIENoZWNrIGlmIG1v dXNlKG92ZXJ8b3V0KSBhcmUgc3RpbGwgd2l0aGluIHRoZSBzYW1lIHBhcmVudCBl bGVtZW50DQoJdmFyIHBhcmVudCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQ7DQoJLy8g VHJhdmVyc2UgdXAgdGhlIHRyZWUNCgl3aGlsZSAoIHBhcmVudCAmJiBwYXJlbnQg IT0gZWxlbSApIHRyeSB7IHBhcmVudCA9IHBhcmVudC5wYXJlbnROb2RlOyB9IGNh dGNoKGVycm9yKSB7IHBhcmVudCA9IGVsZW07IH0NCgkvLyBSZXR1cm4gdHJ1ZSBp ZiB3ZSBhY3R1YWxseSBqdXN0IG1vdXNlZCBvbiB0byBhIHN1Yi1lbGVtZW50DQoJ cmV0dXJuIHBhcmVudCA9PSBlbGVtOw0KfTsNCg0KLy8gUHJldmVudCBtZW1vcnkg bGVha3MgaW4gSUUNCi8vIEFuZCBwcmV2ZW50IGVycm9ycyBvbiByZWZyZXNoIHdp dGggZXZlbnRzIGxpa2UgbW91c2VvdmVyIGluIG90aGVyIGJyb3dzZXJzDQovLyBX aW5kb3cgaXNuJ3QgaW5jbHVkZWQgc28gYXMgbm90IHRvIHVuYmluZCBleGlzdGlu ZyB1bmxvYWQgZXZlbnRzDQpqUXVlcnkod2luZG93KS5iaW5kKCJ1bmxvYWQiLCBm dW5jdGlvbigpIHsNCglqUXVlcnkoIioiKS5hZGQoZG9jdW1lbnQpLnVuYmluZCgp Ow0KfSk7DQpqUXVlcnkuZm4uZXh0ZW5kKHsNCgkvLyBLZWVwIGEgY29weSBvZiB0 aGUgb2xkIGxvYWQNCglfbG9hZDogalF1ZXJ5LmZuLmxvYWQsDQoNCglsb2FkOiBm dW5jdGlvbiggdXJsLCBwYXJhbXMsIGNhbGxiYWNrICkgew0KCQlpZiAoIHR5cGVv ZiB1cmwgIT0gJ3N0cmluZycgKQ0KCQkJcmV0dXJuIHRoaXMuX2xvYWQoIHVybCAp Ow0KDQoJCXZhciBvZmYgPSB1cmwuaW5kZXhPZigiICIpOw0KCQlpZiAoIG9mZiA+ PSAwICkgew0KCQkJdmFyIHNlbGVjdG9yID0gdXJsLnNsaWNlKG9mZiwgdXJsLmxl bmd0aCk7DQoJCQl1cmwgPSB1cmwuc2xpY2UoMCwgb2ZmKTsNCgkJfQ0KDQoJCWNh bGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24oKXt9Ow0KDQoJCS8vIERlZmF1 bHQgdG8gYSBHRVQgcmVxdWVzdA0KCQl2YXIgdHlwZSA9ICJHRVQiOw0KDQoJCS8v IElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIHdhcyBwcm92aWRlZA0KCQlpZiAoIHBh cmFtcyApDQoJCQkvLyBJZiBpdCdzIGEgZnVuY3Rpb24NCgkJCWlmICggalF1ZXJ5 LmlzRnVuY3Rpb24oIHBhcmFtcyApICkgew0KCQkJCS8vIFdlIGFzc3VtZSB0aGF0 IGl0J3MgdGhlIGNhbGxiYWNrDQoJCQkJY2FsbGJhY2sgPSBwYXJhbXM7DQoJCQkJ cGFyYW1zID0gbnVsbDsNCg0KCQkJLy8gT3RoZXJ3aXNlLCBidWlsZCBhIHBhcmFt IHN0cmluZw0KCQkJfSBlbHNlIHsNCgkJCQlwYXJhbXMgPSBqUXVlcnkucGFyYW0o IHBhcmFtcyApOw0KCQkJCXR5cGUgPSAiUE9TVCI7DQoJCQl9DQoNCgkJdmFyIHNl bGYgPSB0aGlzOw0KDQoJCS8vIFJlcXVlc3QgdGhlIHJlbW90ZSBkb2N1bWVudA0K CQlqUXVlcnkuYWpheCh7DQoJCQl1cmw6IHVybCwNCgkJCXR5cGU6IHR5cGUsDQoJ CQlkYXRhVHlwZTogImh0bWwiLA0KCQkJZGF0YTogcGFyYW1zLA0KCQkJY29tcGxl dGU6IGZ1bmN0aW9uKHJlcywgc3RhdHVzKXsNCgkJCQkvLyBJZiBzdWNjZXNzZnVs LCBpbmplY3QgdGhlIEhUTUwgaW50byBhbGwgdGhlIG1hdGNoZWQgZWxlbWVudHMN CgkJCQlpZiAoIHN0YXR1cyA9PSAic3VjY2VzcyIgfHwgc3RhdHVzID09ICJub3Rt b2RpZmllZCIgKQ0KCQkJCQkvLyBTZWUgaWYgYSBzZWxlY3RvciB3YXMgc3BlY2lm aWVkDQoJCQkJCXNlbGYuaHRtbCggc2VsZWN0b3IgPw0KCQkJCQkJLy8gQ3JlYXRl IGEgZHVtbXkgZGl2IHRvIGhvbGQgdGhlIHJlc3VsdHMNCgkJCQkJCWpRdWVyeSgi PGRpdi8+IikNCgkJCQkJCQkvLyBpbmplY3QgdGhlIGNvbnRlbnRzIG9mIHRoZSBk b2N1bWVudCBpbiwgcmVtb3ZpbmcgdGhlIHNjcmlwdHMNCgkJCQkJCQkvLyB0byBh dm9pZCBhbnkgJ1Blcm1pc3Npb24gRGVuaWVkJyBlcnJvcnMgaW4gSUUNCgkJCQkJ CQkuYXBwZW5kKHJlcy5yZXNwb25zZVRleHQucmVwbGFjZSgvPHNjcmlwdCgufFxz KSo/XC9zY3JpcHQ+L2csICIiKSkNCg0KCQkJCQkJCS8vIExvY2F0ZSB0aGUgc3Bl Y2lmaWVkIGVsZW1lbnRzDQoJCQkJCQkJLmZpbmQoc2VsZWN0b3IpIDoNCg0KCQkJ CQkJLy8gSWYgbm90LCBqdXN0IGluamVjdCB0aGUgZnVsbCByZXN1bHQNCgkJCQkJ CXJlcy5yZXNwb25zZVRleHQgKTsNCg0KCQkJCXNlbGYuZWFjaCggY2FsbGJhY2ss IFtyZXMucmVzcG9uc2VUZXh0LCBzdGF0dXMsIHJlc10gKTsNCgkJCX0NCgkJfSk7 DQoJCXJldHVybiB0aGlzOw0KCX0sDQoNCglzZXJpYWxpemU6IGZ1bmN0aW9uKCkg ew0KCQlyZXR1cm4galF1ZXJ5LnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSk7 DQoJfSwNCglzZXJpYWxpemVBcnJheTogZnVuY3Rpb24oKSB7DQoJCXJldHVybiB0 aGlzLm1hcChmdW5jdGlvbigpew0KCQkJcmV0dXJuIGpRdWVyeS5ub2RlTmFtZSh0 aGlzLCAiZm9ybSIpID8NCgkJCQlqUXVlcnkubWFrZUFycmF5KHRoaXMuZWxlbWVu dHMpIDogdGhpczsNCgkJfSkNCgkJLmZpbHRlcihmdW5jdGlvbigpew0KCQkJcmV0 dXJuIHRoaXMubmFtZSAmJiAhdGhpcy5kaXNhYmxlZCAmJg0KCQkJCSh0aGlzLmNo ZWNrZWQgfHwgL3NlbGVjdHx0ZXh0YXJlYS9pLnRlc3QodGhpcy5ub2RlTmFtZSkg fHwNCgkJCQkJL3RleHR8aGlkZGVufHBhc3N3b3JkL2kudGVzdCh0aGlzLnR5cGUp KTsNCgkJfSkNCgkJLm1hcChmdW5jdGlvbihpLCBlbGVtKXsNCgkJCXZhciB2YWwg PSBqUXVlcnkodGhpcykudmFsKCk7DQoJCQlyZXR1cm4gdmFsID09IG51bGwgPyBu dWxsIDoNCgkJCQl2YWwuY29uc3RydWN0b3IgPT0gQXJyYXkgPw0KCQkJCQlqUXVl cnkubWFwKCB2YWwsIGZ1bmN0aW9uKHZhbCwgaSl7DQoJCQkJCQlyZXR1cm4ge25h bWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbH07DQoJCQkJCX0pIDoNCgkJCQkJe25h bWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbH07DQoJCX0pLmdldCgpOw0KCX0NCn0p Ow0KDQovLyBBdHRhY2ggYSBidW5jaCBvZiBmdW5jdGlvbnMgZm9yIGhhbmRsaW5n IGNvbW1vbiBBSkFYIGV2ZW50cw0KalF1ZXJ5LmVhY2goICJhamF4U3RhcnQsYWph eFN0b3AsYWpheENvbXBsZXRlLGFqYXhFcnJvcixhamF4U3VjY2VzcyxhamF4U2Vu ZCIuc3BsaXQoIiwiKSwgZnVuY3Rpb24oaSxvKXsNCglqUXVlcnkuZm5bb10gPSBm dW5jdGlvbihmKXsNCgkJcmV0dXJuIHRoaXMuYmluZChvLCBmKTsNCgl9Ow0KfSk7 DQoNCnZhciBqc2MgPSBub3coKTsNCg0KalF1ZXJ5LmV4dGVuZCh7DQoJZ2V0OiBm dW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjaywgdHlwZSApIHsNCgkJLy8gc2hp ZnQgYXJndW1lbnRzIGlmIGRhdGEgYXJndW1lbnQgd2FzIG9tbWl0ZWQNCgkJaWYg KCBqUXVlcnkuaXNGdW5jdGlvbiggZGF0YSApICkgew0KCQkJY2FsbGJhY2sgPSBk YXRhOw0KCQkJZGF0YSA9IG51bGw7DQoJCX0NCg0KCQlyZXR1cm4galF1ZXJ5LmFq YXgoew0KCQkJdHlwZTogIkdFVCIsDQoJCQl1cmw6IHVybCwNCgkJCWRhdGE6IGRh dGEsDQoJCQlzdWNjZXNzOiBjYWxsYmFjaywNCgkJCWRhdGFUeXBlOiB0eXBlDQoJ CX0pOw0KCX0sDQoNCglnZXRTY3JpcHQ6IGZ1bmN0aW9uKCB1cmwsIGNhbGxiYWNr ICkgew0KCQlyZXR1cm4galF1ZXJ5LmdldCh1cmwsIG51bGwsIGNhbGxiYWNrLCAi c2NyaXB0Iik7DQoJfSwNCg0KCWdldEpTT046IGZ1bmN0aW9uKCB1cmwsIGRhdGEs IGNhbGxiYWNrICkgew0KCQlyZXR1cm4galF1ZXJ5LmdldCh1cmwsIGRhdGEsIGNh bGxiYWNrLCAianNvbiIpOw0KCX0sDQoNCglwb3N0OiBmdW5jdGlvbiggdXJsLCBk YXRhLCBjYWxsYmFjaywgdHlwZSApIHsNCgkJaWYgKCBqUXVlcnkuaXNGdW5jdGlv biggZGF0YSApICkgew0KCQkJY2FsbGJhY2sgPSBkYXRhOw0KCQkJZGF0YSA9IHt9 Ow0KCQl9DQoNCgkJcmV0dXJuIGpRdWVyeS5hamF4KHsNCgkJCXR5cGU6ICJQT1NU IiwNCgkJCXVybDogdXJsLA0KCQkJZGF0YTogZGF0YSwNCgkJCXN1Y2Nlc3M6IGNh bGxiYWNrLA0KCQkJZGF0YVR5cGU6IHR5cGUNCgkJfSk7DQoJfSwNCg0KCWFqYXhT ZXR1cDogZnVuY3Rpb24oIHNldHRpbmdzICkgew0KCQlqUXVlcnkuZXh0ZW5kKCBq UXVlcnkuYWpheFNldHRpbmdzLCBzZXR0aW5ncyApOw0KCX0sDQoNCglhamF4U2V0 dGluZ3M6IHsNCgkJdXJsOiBsb2NhdGlvbi5ocmVmLA0KCQlnbG9iYWw6IHRydWUs DQoJCXR5cGU6ICJHRVQiLA0KCQl0aW1lb3V0OiAwLA0KCQljb250ZW50VHlwZTog ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsDQoJCXByb2Nlc3NE YXRhOiB0cnVlLA0KCQlhc3luYzogdHJ1ZSwNCgkJZGF0YTogbnVsbCwNCgkJdXNl cm5hbWU6IG51bGwsDQoJCXBhc3N3b3JkOiBudWxsLA0KCQlhY2NlcHRzOiB7DQoJ CQl4bWw6ICJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIiwNCgkJCWh0bWw6ICJ0 ZXh0L2h0bWwiLA0KCQkJc2NyaXB0OiAidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNh dGlvbi9qYXZhc2NyaXB0IiwNCgkJCWpzb246ICJhcHBsaWNhdGlvbi9qc29uLCB0 ZXh0L2phdmFzY3JpcHQiLA0KCQkJdGV4dDogInRleHQvcGxhaW4iLA0KCQkJX2Rl ZmF1bHQ6ICIqLyoiDQoJCX0NCgl9LA0KDQoJLy8gTGFzdC1Nb2RpZmllZCBoZWFk ZXIgY2FjaGUgZm9yIG5leHQgcmVxdWVzdA0KCWxhc3RNb2RpZmllZDoge30sDQoN CglhamF4OiBmdW5jdGlvbiggcyApIHsNCgkJLy8gRXh0ZW5kIHRoZSBzZXR0aW5n cywgYnV0IHJlLWV4dGVuZCAncycgc28gdGhhdCBpdCBjYW4gYmUNCgkJLy8gY2hl Y2tlZCBhZ2FpbiBsYXRlciAoaW4gdGhlIHRlc3Qgc3VpdGUsIHNwZWNpZmljYWxs eSkNCgkJcyA9IGpRdWVyeS5leHRlbmQodHJ1ZSwgcywgalF1ZXJ5LmV4dGVuZCh0 cnVlLCB7fSwgalF1ZXJ5LmFqYXhTZXR0aW5ncywgcykpOw0KDQoJCXZhciBqc29u cCwganNyZSA9IC89XD8oJnwkKS9nLCBzdGF0dXMsIGRhdGEsDQoJCQl0eXBlID0g cy50eXBlLnRvVXBwZXJDYXNlKCk7DQoNCgkJLy8gY29udmVydCBkYXRhIGlmIG5v dCBhbHJlYWR5IGEgc3RyaW5nDQoJCWlmICggcy5kYXRhICYmIHMucHJvY2Vzc0Rh dGEgJiYgdHlwZW9mIHMuZGF0YSAhPSAic3RyaW5nIiApDQoJCQlzLmRhdGEgPSBq UXVlcnkucGFyYW0ocy5kYXRhKTsNCg0KCQkvLyBIYW5kbGUgSlNPTlAgUGFyYW1l dGVyIENhbGxiYWNrcw0KCQlpZiAoIHMuZGF0YVR5cGUgPT0gImpzb25wIiApIHsN CgkJCWlmICggdHlwZSA9PSAiR0VUIiApIHsNCgkJCQlpZiAoICFzLnVybC5tYXRj aChqc3JlKSApDQoJCQkJCXMudXJsICs9IChzLnVybC5tYXRjaCgvXD8vKSA/ICIm IiA6ICI/IikgKyAocy5qc29ucCB8fCAiY2FsbGJhY2siKSArICI9PyI7DQoJCQl9 IGVsc2UgaWYgKCAhcy5kYXRhIHx8ICFzLmRhdGEubWF0Y2goanNyZSkgKQ0KCQkJ CXMuZGF0YSA9IChzLmRhdGEgPyBzLmRhdGEgKyAiJiIgOiAiIikgKyAocy5qc29u cCB8fCAiY2FsbGJhY2siKSArICI9PyI7DQoJCQlzLmRhdGFUeXBlID0gImpzb24i Ow0KCQl9DQoNCgkJLy8gQnVpbGQgdGVtcG9yYXJ5IEpTT05QIGZ1bmN0aW9uDQoJ CWlmICggcy5kYXRhVHlwZSA9PSAianNvbiIgJiYgKHMuZGF0YSAmJiBzLmRhdGEu bWF0Y2goanNyZSkgfHwgcy51cmwubWF0Y2goanNyZSkpICkgew0KCQkJanNvbnAg PSAianNvbnAiICsganNjKys7DQoNCgkJCS8vIFJlcGxhY2UgdGhlID0/IHNlcXVl bmNlIGJvdGggaW4gdGhlIHF1ZXJ5IHN0cmluZyBhbmQgdGhlIGRhdGENCgkJCWlm ICggcy5kYXRhICkNCgkJCQlzLmRhdGEgPSAocy5kYXRhICsgIiIpLnJlcGxhY2Uo anNyZSwgIj0iICsganNvbnAgKyAiJDEiKTsNCgkJCXMudXJsID0gcy51cmwucmVw bGFjZShqc3JlLCAiPSIgKyBqc29ucCArICIkMSIpOw0KDQoJCQkvLyBXZSBuZWVk IHRvIG1ha2Ugc3VyZQ0KCQkJLy8gdGhhdCBhIEpTT05QIHN0eWxlIHJlc3BvbnNl IGlzIGV4ZWN1dGVkIHByb3Blcmx5DQoJCQlzLmRhdGFUeXBlID0gInNjcmlwdCI7 DQoNCgkJCS8vIEhhbmRsZSBKU09OUC1zdHlsZSBsb2FkaW5nDQoJCQl3aW5kb3db IGpzb25wIF0gPSBmdW5jdGlvbih0bXApew0KCQkJCWRhdGEgPSB0bXA7DQoJCQkJ c3VjY2VzcygpOw0KCQkJCWNvbXBsZXRlKCk7DQoJCQkJLy8gR2FyYmFnZSBjb2xs ZWN0DQoJCQkJd2luZG93WyBqc29ucCBdID0gdW5kZWZpbmVkOw0KCQkJCXRyeXsg ZGVsZXRlIHdpbmRvd1sganNvbnAgXTsgfSBjYXRjaChlKXt9DQoJCQkJaWYgKCBo ZWFkICkNCgkJCQkJaGVhZC5yZW1vdmVDaGlsZCggc2NyaXB0ICk7DQoJCQl9Ow0K CQl9DQoNCgkJaWYgKCBzLmRhdGFUeXBlID09ICJzY3JpcHQiICYmIHMuY2FjaGUg PT0gbnVsbCApDQoJCQlzLmNhY2hlID0gZmFsc2U7DQoNCgkJaWYgKCBzLmNhY2hl ID09PSBmYWxzZSAmJiB0eXBlID09ICJHRVQiICkgew0KCQkJdmFyIHRzID0gbm93 KCk7DQoJCQkvLyB0cnkgcmVwbGFjaW5nIF89IGlmIGl0IGlzIHRoZXJlDQoJCQl2 YXIgcmV0ID0gcy51cmwucmVwbGFjZSgvKFw/fCYpXz0uKj8oJnwkKS8sICIkMV89 IiArIHRzICsgIiQyIik7DQoJCQkvLyBpZiBub3RoaW5nIHdhcyByZXBsYWNlZCwg YWRkIHRpbWVzdGFtcCB0byB0aGUgZW5kDQoJCQlzLnVybCA9IHJldCArICgocmV0 ID09IHMudXJsKSA/IChzLnVybC5tYXRjaCgvXD8vKSA/ICImIiA6ICI/IikgKyAi Xz0iICsgdHMgOiAiIik7DQoJCX0NCg0KCQkvLyBJZiBkYXRhIGlzIGF2YWlsYWJs ZSwgYXBwZW5kIGRhdGEgdG8gdXJsIGZvciBnZXQgcmVxdWVzdHMNCgkJaWYgKCBz LmRhdGEgJiYgdHlwZSA9PSAiR0VUIiApIHsNCgkJCXMudXJsICs9IChzLnVybC5t YXRjaCgvXD8vKSA/ICImIiA6ICI/IikgKyBzLmRhdGE7DQoNCgkJCS8vIElFIGxp a2VzIHRvIHNlbmQgYm90aCBnZXQgYW5kIHBvc3QgZGF0YSwgcHJldmVudCB0aGlz DQoJCQlzLmRhdGEgPSBudWxsOw0KCQl9DQoNCgkJLy8gV2F0Y2ggZm9yIGEgbmV3 IHNldCBvZiByZXF1ZXN0cw0KCQlpZiAoIHMuZ2xvYmFsICYmICEgalF1ZXJ5LmFj dGl2ZSsrICkNCgkJCWpRdWVyeS5ldmVudC50cmlnZ2VyKCAiYWpheFN0YXJ0IiAp Ow0KDQoJCS8vIE1hdGNoZXMgYW4gYWJzb2x1dGUgVVJMLCBhbmQgc2F2ZXMgdGhl IGRvbWFpbg0KCQl2YXIgcmVtb3RlID0gL14oPzpcdys6KT9cL1wvKFteXC8/I10r KS87DQoNCgkJLy8gSWYgd2UncmUgcmVxdWVzdGluZyBhIHJlbW90ZSBkb2N1bWVu dA0KCQkvLyBhbmQgdHJ5aW5nIHRvIGxvYWQgSlNPTiBvciBTY3JpcHQgd2l0aCBh IEdFVA0KCQlpZiAoIHMuZGF0YVR5cGUgPT0gInNjcmlwdCIgJiYgdHlwZSA9PSAi R0VUIg0KCQkJCSYmIHJlbW90ZS50ZXN0KHMudXJsKSAmJiByZW1vdGUuZXhlYyhz LnVybClbMV0gIT0gbG9jYXRpb24uaG9zdCApew0KCQkJdmFyIGhlYWQgPSBkb2N1 bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdOw0KCQkJdmFyIHNj cmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOw0KCQkJc2Ny aXB0LnNyYyA9IHMudXJsOw0KCQkJaWYgKHMuc2NyaXB0Q2hhcnNldCkNCgkJCQlz Y3JpcHQuY2hhcnNldCA9IHMuc2NyaXB0Q2hhcnNldDsNCg0KCQkJLy8gSGFuZGxl IFNjcmlwdCBsb2FkaW5nDQoJCQlpZiAoICFqc29ucCApIHsNCgkJCQl2YXIgZG9u ZSA9IGZhbHNlOw0KDQoJCQkJLy8gQXR0YWNoIGhhbmRsZXJzIGZvciBhbGwgYnJv d3NlcnMNCgkJCQlzY3JpcHQub25sb2FkID0gc2NyaXB0Lm9ucmVhZHlzdGF0ZWNo YW5nZSA9IGZ1bmN0aW9uKCl7DQoJCQkJCWlmICggIWRvbmUgJiYgKCF0aGlzLnJl YWR5U3RhdGUgfHwNCgkJCQkJCQl0aGlzLnJlYWR5U3RhdGUgPT0gImxvYWRlZCIg fHwgdGhpcy5yZWFkeVN0YXRlID09ICJjb21wbGV0ZSIpICkgew0KCQkJCQkJZG9u ZSA9IHRydWU7DQoJCQkJCQlzdWNjZXNzKCk7DQoJCQkJCQljb21wbGV0ZSgpOw0K CQkJCQkJaGVhZC5yZW1vdmVDaGlsZCggc2NyaXB0ICk7DQoJCQkJCX0NCgkJCQl9 Ow0KCQkJfQ0KDQoJCQloZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7DQoNCgkJCS8v IFdlIGhhbmRsZSBldmVyeXRoaW5nIHVzaW5nIHRoZSBzY3JpcHQgZWxlbWVudCBp bmplY3Rpb24NCgkJCXJldHVybiB1bmRlZmluZWQ7DQoJCX0NCg0KCQl2YXIgcmVx dWVzdERvbmUgPSBmYWxzZTsNCg0KCQkvLyBDcmVhdGUgdGhlIHJlcXVlc3Qgb2Jq ZWN0OyBNaWNyb3NvZnQgZmFpbGVkIHRvIHByb3Blcmx5DQoJCS8vIGltcGxlbWVu dCB0aGUgWE1MSHR0cFJlcXVlc3QgaW4gSUU3LCBzbyB3ZSB1c2UgdGhlIEFjdGl2 ZVhPYmplY3Qgd2hlbiBpdCBpcyBhdmFpbGFibGUNCgkJdmFyIHhociA9IHdpbmRv dy5BY3RpdmVYT2JqZWN0ID8gbmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5Y TUxIVFRQIikgOiBuZXcgWE1MSHR0cFJlcXVlc3QoKTsNCg0KCQkvLyBPcGVuIHRo ZSBzb2NrZXQNCgkJLy8gUGFzc2luZyBudWxsIHVzZXJuYW1lLCBnZW5lcmF0ZXMg YSBsb2dpbiBwb3B1cCBvbiBPcGVyYSAoIzI4NjUpDQoJCWlmKCBzLnVzZXJuYW1l ICkNCgkJCXhoci5vcGVuKHR5cGUsIHMudXJsLCBzLmFzeW5jLCBzLnVzZXJuYW1l LCBzLnBhc3N3b3JkKTsNCgkJZWxzZQ0KCQkJeGhyLm9wZW4odHlwZSwgcy51cmws IHMuYXN5bmMpOw0KDQoJCS8vIE5lZWQgYW4gZXh0cmEgdHJ5L2NhdGNoIGZvciBj cm9zcyBkb21haW4gcmVxdWVzdHMgaW4gRmlyZWZveCAzDQoJCXRyeSB7DQoJCQkv LyBTZXQgdGhlIGNvcnJlY3QgaGVhZGVyLCBpZiBkYXRhIGlzIGJlaW5nIHNlbnQN CgkJCWlmICggcy5kYXRhICkNCgkJCQl4aHIuc2V0UmVxdWVzdEhlYWRlcigiQ29u dGVudC1UeXBlIiwgcy5jb250ZW50VHlwZSk7DQoNCgkJCS8vIFNldCB0aGUgSWYt TW9kaWZpZWQtU2luY2UgaGVhZGVyLCBpZiBpZk1vZGlmaWVkIG1vZGUuDQoJCQlp ZiAoIHMuaWZNb2RpZmllZCApDQoJCQkJeGhyLnNldFJlcXVlc3RIZWFkZXIoIklm LU1vZGlmaWVkLVNpbmNlIiwNCgkJCQkJalF1ZXJ5Lmxhc3RNb2RpZmllZFtzLnVy bF0gfHwgIlRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIiApOw0KDQoJCQkv LyBTZXQgaGVhZGVyIHNvIHRoZSBjYWxsZWQgc2NyaXB0IGtub3dzIHRoYXQgaXQn cyBhbiBYTUxIdHRwUmVxdWVzdA0KCQkJeGhyLnNldFJlcXVlc3RIZWFkZXIoIlgt UmVxdWVzdGVkLVdpdGgiLCAiWE1MSHR0cFJlcXVlc3QiKTsNCg0KCQkJLy8gU2V0 IHRoZSBBY2NlcHRzIGhlYWRlciBmb3IgdGhlIHNlcnZlciwgZGVwZW5kaW5nIG9u IHRoZSBkYXRhVHlwZQ0KCQkJeGhyLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIs IHMuZGF0YVR5cGUgJiYgcy5hY2NlcHRzWyBzLmRhdGFUeXBlIF0gPw0KCQkJCXMu YWNjZXB0c1sgcy5kYXRhVHlwZSBdICsgIiwgKi8qIiA6DQoJCQkJcy5hY2NlcHRz Ll9kZWZhdWx0ICk7DQoJCX0gY2F0Y2goZSl7fQ0KDQoJCS8vIEFsbG93IGN1c3Rv bSBoZWFkZXJzL21pbWV0eXBlcw0KCQlpZiAoIHMuYmVmb3JlU2VuZCAmJiBzLmJl Zm9yZVNlbmQoeGhyLCBzKSA9PT0gZmFsc2UgKSB7DQoJCQkvLyBjbGVhbnVwIGFj dGl2ZSByZXF1ZXN0IGNvdW50ZXINCgkJCXMuZ2xvYmFsICYmIGpRdWVyeS5hY3Rp dmUtLTsNCgkJCS8vIGNsb3NlIG9wZW5kZWQgc29ja2V0DQoJCQl4aHIuYWJvcnQo KTsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCWlmICggcy5nbG9iYWwgKQ0K CQkJalF1ZXJ5LmV2ZW50LnRyaWdnZXIoImFqYXhTZW5kIiwgW3hociwgc10pOw0K DQoJCS8vIFdhaXQgZm9yIGEgcmVzcG9uc2UgdG8gY29tZSBiYWNrDQoJCXZhciBv bnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbihpc1RpbWVvdXQpew0KCQkJLy8g VGhlIHRyYW5zZmVyIGlzIGNvbXBsZXRlIGFuZCB0aGUgZGF0YSBpcyBhdmFpbGFi bGUsIG9yIHRoZSByZXF1ZXN0IHRpbWVkIG91dA0KCQkJaWYgKCAhcmVxdWVzdERv bmUgJiYgeGhyICYmICh4aHIucmVhZHlTdGF0ZSA9PSA0IHx8IGlzVGltZW91dCA9 PSAidGltZW91dCIpICkgew0KCQkJCXJlcXVlc3REb25lID0gdHJ1ZTsNCg0KCQkJ CS8vIGNsZWFyIHBvbGwgaW50ZXJ2YWwNCgkJCQlpZiAoaXZhbCkgew0KCQkJCQlj bGVhckludGVydmFsKGl2YWwpOw0KCQkJCQlpdmFsID0gbnVsbDsNCgkJCQl9DQoN CgkJCQlzdGF0dXMgPSBpc1RpbWVvdXQgPT0gInRpbWVvdXQiICYmICJ0aW1lb3V0 IiB8fA0KCQkJCQkhalF1ZXJ5Lmh0dHBTdWNjZXNzKCB4aHIgKSAmJiAiZXJyb3Ii IHx8DQoJCQkJCXMuaWZNb2RpZmllZCAmJiBqUXVlcnkuaHR0cE5vdE1vZGlmaWVk KCB4aHIsIHMudXJsICkgJiYgIm5vdG1vZGlmaWVkIiB8fA0KCQkJCQkic3VjY2Vz cyI7DQoNCgkJCQlpZiAoIHN0YXR1cyA9PSAic3VjY2VzcyIgKSB7DQoJCQkJCS8v IFdhdGNoIGZvciwgYW5kIGNhdGNoLCBYTUwgZG9jdW1lbnQgcGFyc2UgZXJyb3Jz DQoJCQkJCXRyeSB7DQoJCQkJCQkvLyBwcm9jZXNzIHRoZSBkYXRhIChydW5zIHRo ZSB4bWwgdGhyb3VnaCBodHRwRGF0YSByZWdhcmRsZXNzIG9mIGNhbGxiYWNrKQ0K CQkJCQkJZGF0YSA9IGpRdWVyeS5odHRwRGF0YSggeGhyLCBzLmRhdGFUeXBlLCBz LmRhdGFGaWx0ZXIgKTsNCgkJCQkJfSBjYXRjaChlKSB7DQoJCQkJCQlzdGF0dXMg PSAicGFyc2VyZXJyb3IiOw0KCQkJCQl9DQoJCQkJfQ0KDQoJCQkJLy8gTWFrZSBz dXJlIHRoYXQgdGhlIHJlcXVlc3Qgd2FzIHN1Y2Nlc3NmdWwgb3Igbm90bW9kaWZp ZWQNCgkJCQlpZiAoIHN0YXR1cyA9PSAic3VjY2VzcyIgKSB7DQoJCQkJCS8vIENh Y2hlIExhc3QtTW9kaWZpZWQgaGVhZGVyLCBpZiBpZk1vZGlmaWVkIG1vZGUuDQoJ CQkJCXZhciBtb2RSZXM7DQoJCQkJCXRyeSB7DQoJCQkJCQltb2RSZXMgPSB4aHIu Z2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKTsNCgkJCQkJfSBjYXRj aChlKSB7fSAvLyBzd2FsbG93IGV4Y2VwdGlvbiB0aHJvd24gYnkgRkYgaWYgaGVh ZGVyIGlzIG5vdCBhdmFpbGFibGUNCg0KCQkJCQlpZiAoIHMuaWZNb2RpZmllZCAm JiBtb2RSZXMgKQ0KCQkJCQkJalF1ZXJ5Lmxhc3RNb2RpZmllZFtzLnVybF0gPSBt b2RSZXM7DQoNCgkJCQkJLy8gSlNPTlAgaGFuZGxlcyBpdHMgb3duIHN1Y2Nlc3Mg Y2FsbGJhY2sNCgkJCQkJaWYgKCAhanNvbnAgKQ0KCQkJCQkJc3VjY2VzcygpOw0K CQkJCX0gZWxzZQ0KCQkJCQlqUXVlcnkuaGFuZGxlRXJyb3IocywgeGhyLCBzdGF0 dXMpOw0KDQoJCQkJLy8gRmlyZSB0aGUgY29tcGxldGUgaGFuZGxlcnMNCgkJCQlj b21wbGV0ZSgpOw0KDQoJCQkJLy8gU3RvcCBtZW1vcnkgbGVha3MNCgkJCQlpZiAo IHMuYXN5bmMgKQ0KCQkJCQl4aHIgPSBudWxsOw0KCQkJfQ0KCQl9Ow0KDQoJCWlm ICggcy5hc3luYyApIHsNCgkJCS8vIGRvbid0IGF0dGFjaCB0aGUgaGFuZGxlciB0 byB0aGUgcmVxdWVzdCwganVzdCBwb2xsIGl0IGluc3RlYWQNCgkJCXZhciBpdmFs ID0gc2V0SW50ZXJ2YWwob25yZWFkeXN0YXRlY2hhbmdlLCAxMyk7DQoNCgkJCS8v IFRpbWVvdXQgY2hlY2tlcg0KCQkJaWYgKCBzLnRpbWVvdXQgPiAwICkNCgkJCQlz ZXRUaW1lb3V0KGZ1bmN0aW9uKCl7DQoJCQkJCS8vIENoZWNrIHRvIHNlZSBpZiB0 aGUgcmVxdWVzdCBpcyBzdGlsbCBoYXBwZW5pbmcNCgkJCQkJaWYgKCB4aHIgKSB7 DQoJCQkJCQkvLyBDYW5jZWwgdGhlIHJlcXVlc3QNCgkJCQkJCXhoci5hYm9ydCgp Ow0KDQoJCQkJCQlpZiggIXJlcXVlc3REb25lICkNCgkJCQkJCQlvbnJlYWR5c3Rh dGVjaGFuZ2UoICJ0aW1lb3V0IiApOw0KCQkJCQl9DQoJCQkJfSwgcy50aW1lb3V0 KTsNCgkJfQ0KDQoJCS8vIFNlbmQgdGhlIGRhdGENCgkJdHJ5IHsNCgkJCXhoci5z ZW5kKHMuZGF0YSk7DQoJCX0gY2F0Y2goZSkgew0KCQkJalF1ZXJ5LmhhbmRsZUVy cm9yKHMsIHhociwgbnVsbCwgZSk7DQoJCX0NCg0KCQkvLyBmaXJlZm94IDEuNSBk b2Vzbid0IGZpcmUgc3RhdGVjaGFuZ2UgZm9yIHN5bmMgcmVxdWVzdHMNCgkJaWYg KCAhcy5hc3luYyApDQoJCQlvbnJlYWR5c3RhdGVjaGFuZ2UoKTsNCg0KCQlmdW5j dGlvbiBzdWNjZXNzKCl7DQoJCQkvLyBJZiBhIGxvY2FsIGNhbGxiYWNrIHdhcyBz cGVjaWZpZWQsIGZpcmUgaXQgYW5kIHBhc3MgaXQgdGhlIGRhdGENCgkJCWlmICgg cy5zdWNjZXNzICkNCgkJCQlzLnN1Y2Nlc3MoIGRhdGEsIHN0YXR1cyApOw0KDQoJ CQkvLyBGaXJlIHRoZSBnbG9iYWwgY2FsbGJhY2sNCgkJCWlmICggcy5nbG9iYWwg KQ0KCQkJCWpRdWVyeS5ldmVudC50cmlnZ2VyKCAiYWpheFN1Y2Nlc3MiLCBbeGhy LCBzXSApOw0KCQl9DQoNCgkJZnVuY3Rpb24gY29tcGxldGUoKXsNCgkJCS8vIFBy b2Nlc3MgcmVzdWx0DQoJCQlpZiAoIHMuY29tcGxldGUgKQ0KCQkJCXMuY29tcGxl dGUoeGhyLCBzdGF0dXMpOw0KDQoJCQkvLyBUaGUgcmVxdWVzdCB3YXMgY29tcGxl dGVkDQoJCQlpZiAoIHMuZ2xvYmFsICkNCgkJCQlqUXVlcnkuZXZlbnQudHJpZ2dl ciggImFqYXhDb21wbGV0ZSIsIFt4aHIsIHNdICk7DQoNCgkJCS8vIEhhbmRsZSB0 aGUgZ2xvYmFsIEFKQVggY291bnRlcg0KCQkJaWYgKCBzLmdsb2JhbCAmJiAhIC0t alF1ZXJ5LmFjdGl2ZSApDQoJCQkJalF1ZXJ5LmV2ZW50LnRyaWdnZXIoICJhamF4 U3RvcCIgKTsNCgkJfQ0KDQoJCS8vIHJldHVybiBYTUxIdHRwUmVxdWVzdCB0byBh bGxvdyBhYm9ydGluZyB0aGUgcmVxdWVzdCBldGMuDQoJCXJldHVybiB4aHI7DQoJ fSwNCg0KCWhhbmRsZUVycm9yOiBmdW5jdGlvbiggcywgeGhyLCBzdGF0dXMsIGUg KSB7DQoJCS8vIElmIGEgbG9jYWwgY2FsbGJhY2sgd2FzIHNwZWNpZmllZCwgZmly ZSBpdA0KCQlpZiAoIHMuZXJyb3IgKSBzLmVycm9yKCB4aHIsIHN0YXR1cywgZSAp Ow0KDQoJCS8vIEZpcmUgdGhlIGdsb2JhbCBjYWxsYmFjaw0KCQlpZiAoIHMuZ2xv YmFsICkNCgkJCWpRdWVyeS5ldmVudC50cmlnZ2VyKCAiYWpheEVycm9yIiwgW3ho ciwgcywgZV0gKTsNCgl9LA0KDQoJLy8gQ291bnRlciBmb3IgaG9sZGluZyB0aGUg bnVtYmVyIG9mIGFjdGl2ZSBxdWVyaWVzDQoJYWN0aXZlOiAwLA0KDQoJLy8gRGV0 ZXJtaW5lcyBpZiBhbiBYTUxIdHRwUmVxdWVzdCB3YXMgc3VjY2Vzc2Z1bCBvciBu b3QNCglodHRwU3VjY2VzczogZnVuY3Rpb24oIHhociApIHsNCgkJdHJ5IHsNCgkJ CS8vIElFIGVycm9yIHNvbWV0aW1lcyByZXR1cm5zIDEyMjMgd2hlbiBpdCBzaG91 bGQgYmUgMjA0IHNvIHRyZWF0IGl0IGFzIHN1Y2Nlc3MsIHNlZSAjMTQ1MA0KCQkJ cmV0dXJuICF4aHIuc3RhdHVzICYmIGxvY2F0aW9uLnByb3RvY29sID09ICJmaWxl OiIgfHwNCgkJCQkoIHhoci5zdGF0dXMgPj0gMjAwICYmIHhoci5zdGF0dXMgPCAz MDAgKSB8fCB4aHIuc3RhdHVzID09IDMwNCB8fCB4aHIuc3RhdHVzID09IDEyMjMg fHwNCgkJCQlqUXVlcnkuYnJvd3Nlci5zYWZhcmkgJiYgeGhyLnN0YXR1cyA9PSB1 bmRlZmluZWQ7DQoJCX0gY2F0Y2goZSl7fQ0KCQlyZXR1cm4gZmFsc2U7DQoJfSwN Cg0KCS8vIERldGVybWluZXMgaWYgYW4gWE1MSHR0cFJlcXVlc3QgcmV0dXJucyBO b3RNb2RpZmllZA0KCWh0dHBOb3RNb2RpZmllZDogZnVuY3Rpb24oIHhociwgdXJs ICkgew0KCQl0cnkgew0KCQkJdmFyIHhoclJlcyA9IHhoci5nZXRSZXNwb25zZUhl YWRlcigiTGFzdC1Nb2RpZmllZCIpOw0KDQoJCQkvLyBGaXJlZm94IGFsd2F5cyBy ZXR1cm5zIDIwMC4gY2hlY2sgTGFzdC1Nb2RpZmllZCBkYXRlDQoJCQlyZXR1cm4g eGhyLnN0YXR1cyA9PSAzMDQgfHwgeGhyUmVzID09IGpRdWVyeS5sYXN0TW9kaWZp ZWRbdXJsXSB8fA0KCQkJCWpRdWVyeS5icm93c2VyLnNhZmFyaSAmJiB4aHIuc3Rh dHVzID09IHVuZGVmaW5lZDsNCgkJfSBjYXRjaChlKXt9DQoJCXJldHVybiBmYWxz ZTsNCgl9LA0KDQoJaHR0cERhdGE6IGZ1bmN0aW9uKCB4aHIsIHR5cGUsIGZpbHRl ciApIHsNCgkJdmFyIGN0ID0geGhyLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50 LXR5cGUiKSwNCgkJCXhtbCA9IHR5cGUgPT0gInhtbCIgfHwgIXR5cGUgJiYgY3Qg JiYgY3QuaW5kZXhPZigieG1sIikgPj0gMCwNCgkJCWRhdGEgPSB4bWwgPyB4aHIu cmVzcG9uc2VYTUwgOiB4aHIucmVzcG9uc2VUZXh0Ow0KDQoJCWlmICggeG1sICYm IGRhdGEuZG9jdW1lbnRFbGVtZW50LnRhZ05hbWUgPT0gInBhcnNlcmVycm9yIiAp DQoJCQl0aHJvdyAicGFyc2VyZXJyb3IiOw0KCQkJDQoJCS8vIEFsbG93IGEgcHJl LWZpbHRlcmluZyBmdW5jdGlvbiB0byBzYW5pdGl6ZSB0aGUgcmVzcG9uc2UNCgkJ aWYoIGZpbHRlciApDQoJCQlkYXRhID0gZmlsdGVyKCBkYXRhLCB0eXBlICk7DQoN CgkJLy8gSWYgdGhlIHR5cGUgaXMgInNjcmlwdCIsIGV2YWwgaXQgaW4gZ2xvYmFs IGNvbnRleHQNCgkJaWYgKCB0eXBlID09ICJzY3JpcHQiICkNCgkJCWpRdWVyeS5n bG9iYWxFdmFsKCBkYXRhICk7DQoNCgkJLy8gR2V0IHRoZSBKYXZhU2NyaXB0IG9i amVjdCwgaWYgSlNPTiBpcyB1c2VkLg0KCQlpZiAoIHR5cGUgPT0gImpzb24iICkN CgkJCWRhdGEgPSBldmFsKCIoIiArIGRhdGEgKyAiKSIpOw0KDQoJCXJldHVybiBk YXRhOw0KCX0sDQoNCgkvLyBTZXJpYWxpemUgYW4gYXJyYXkgb2YgZm9ybSBlbGVt ZW50cyBvciBhIHNldCBvZg0KCS8vIGtleS92YWx1ZXMgaW50byBhIHF1ZXJ5IHN0 cmluZw0KCXBhcmFtOiBmdW5jdGlvbiggYSApIHsNCgkJdmFyIHMgPSBbXTsNCg0K CQkvLyBJZiBhbiBhcnJheSB3YXMgcGFzc2VkIGluLCBhc3N1bWUgdGhhdCBpdCBp cyBhbiBhcnJheQ0KCQkvLyBvZiBmb3JtIGVsZW1lbnRzDQoJCWlmICggYS5jb25z dHJ1Y3RvciA9PSBBcnJheSB8fCBhLmpxdWVyeSApDQoJCQkvLyBTZXJpYWxpemUg dGhlIGZvcm0gZWxlbWVudHMNCgkJCWpRdWVyeS5lYWNoKCBhLCBmdW5jdGlvbigp ew0KCQkJCXMucHVzaCggZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMubmFtZSkgKyAi PSIgKyBlbmNvZGVVUklDb21wb25lbnQoIHRoaXMudmFsdWUgKSApOw0KCQkJfSk7 DQoNCgkJLy8gT3RoZXJ3aXNlLCBhc3N1bWUgdGhhdCBpdCdzIGFuIG9iamVjdCBv ZiBrZXkvdmFsdWUgcGFpcnMNCgkJZWxzZQ0KCQkJLy8gU2VyaWFsaXplIHRoZSBr ZXkvdmFsdWVzDQoJCQlmb3IgKCB2YXIgaiBpbiBhICkNCgkJCQkvLyBJZiB0aGUg dmFsdWUgaXMgYW4gYXJyYXkgdGhlbiB0aGUga2V5IG5hbWVzIG5lZWQgdG8gYmUg cmVwZWF0ZWQNCgkJCQlpZiAoIGFbal0gJiYgYVtqXS5jb25zdHJ1Y3RvciA9PSBB cnJheSApDQoJCQkJCWpRdWVyeS5lYWNoKCBhW2pdLCBmdW5jdGlvbigpew0KCQkJ CQkJcy5wdXNoKCBlbmNvZGVVUklDb21wb25lbnQoaikgKyAiPSIgKyBlbmNvZGVV UklDb21wb25lbnQoIHRoaXMgKSApOw0KCQkJCQl9KTsNCgkJCQllbHNlDQoJCQkJ CXMucHVzaCggZW5jb2RlVVJJQ29tcG9uZW50KGopICsgIj0iICsgZW5jb2RlVVJJ Q29tcG9uZW50KCBqUXVlcnkuaXNGdW5jdGlvbihhW2pdKSA/IGFbal0oKSA6IGFb al0gKSApOw0KDQoJCS8vIFJldHVybiB0aGUgcmVzdWx0aW5nIHNlcmlhbGl6YXRp b24NCgkJcmV0dXJuIHMuam9pbigiJiIpLnJlcGxhY2UoLyUyMC9nLCAiKyIpOw0K CX0NCg0KfSk7DQpqUXVlcnkuZm4uZXh0ZW5kKHsNCglzaG93OiBmdW5jdGlvbihz cGVlZCxjYWxsYmFjayl7DQoJCXJldHVybiBzcGVlZCA/DQoJCQl0aGlzLmFuaW1h dGUoew0KCQkJCWhlaWdodDogInNob3ciLCB3aWR0aDogInNob3ciLCBvcGFjaXR5 OiAic2hvdyINCgkJCX0sIHNwZWVkLCBjYWxsYmFjaykgOg0KDQoJCQl0aGlzLmZp bHRlcigiOmhpZGRlbiIpLmVhY2goZnVuY3Rpb24oKXsNCgkJCQl0aGlzLnN0eWxl LmRpc3BsYXkgPSB0aGlzLm9sZGJsb2NrIHx8ICIiOw0KCQkJCWlmICggalF1ZXJ5 LmNzcyh0aGlzLCJkaXNwbGF5IikgPT0gIm5vbmUiICkgew0KCQkJCQl2YXIgZWxl bSA9IGpRdWVyeSgiPCIgKyB0aGlzLnRhZ05hbWUgKyAiIC8+IikuYXBwZW5kVG8o ImJvZHkiKTsNCgkJCQkJdGhpcy5zdHlsZS5kaXNwbGF5ID0gZWxlbS5jc3MoImRp c3BsYXkiKTsNCgkJCQkJLy8gaGFuZGxlIGFuIGVkZ2UgY29uZGl0aW9uIHdoZXJl IGNzcyBpcyAtIGRpdiB7IGRpc3BsYXk6bm9uZTsgfSBvciBzaW1pbGFyDQoJCQkJ CWlmICh0aGlzLnN0eWxlLmRpc3BsYXkgPT0gIm5vbmUiKQ0KCQkJCQkJdGhpcy5z dHlsZS5kaXNwbGF5ID0gImJsb2NrIjsNCgkJCQkJZWxlbS5yZW1vdmUoKTsNCgkJ CQl9DQoJCQl9KS5lbmQoKTsNCgl9LA0KDQoJaGlkZTogZnVuY3Rpb24oc3BlZWQs Y2FsbGJhY2spew0KCQlyZXR1cm4gc3BlZWQgPw0KCQkJdGhpcy5hbmltYXRlKHsN CgkJCQloZWlnaHQ6ICJoaWRlIiwgd2lkdGg6ICJoaWRlIiwgb3BhY2l0eTogImhp ZGUiDQoJCQl9LCBzcGVlZCwgY2FsbGJhY2spIDoNCg0KCQkJdGhpcy5maWx0ZXIo Ijp2aXNpYmxlIikuZWFjaChmdW5jdGlvbigpew0KCQkJCXRoaXMub2xkYmxvY2sg PSB0aGlzLm9sZGJsb2NrIHx8IGpRdWVyeS5jc3ModGhpcywiZGlzcGxheSIpOw0K CQkJCXRoaXMuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCgkJCX0pLmVuZCgpOw0K CX0sDQoNCgkvLyBTYXZlIHRoZSBvbGQgdG9nZ2xlIGZ1bmN0aW9uDQoJX3RvZ2ds ZTogalF1ZXJ5LmZuLnRvZ2dsZSwNCg0KCXRvZ2dsZTogZnVuY3Rpb24oIGZuLCBm bjIgKXsNCgkJcmV0dXJuIGpRdWVyeS5pc0Z1bmN0aW9uKGZuKSAmJiBqUXVlcnku aXNGdW5jdGlvbihmbjIpID8NCgkJCXRoaXMuX3RvZ2dsZS5hcHBseSggdGhpcywg YXJndW1lbnRzICkgOg0KCQkJZm4gPw0KCQkJCXRoaXMuYW5pbWF0ZSh7DQoJCQkJ CWhlaWdodDogInRvZ2dsZSIsIHdpZHRoOiAidG9nZ2xlIiwgb3BhY2l0eTogInRv Z2dsZSINCgkJCQl9LCBmbiwgZm4yKSA6DQoJCQkJdGhpcy5lYWNoKGZ1bmN0aW9u KCl7DQoJCQkJCWpRdWVyeSh0aGlzKVsgalF1ZXJ5KHRoaXMpLmlzKCI6aGlkZGVu IikgPyAic2hvdyIgOiAiaGlkZSIgXSgpOw0KCQkJCX0pOw0KCX0sDQoNCglzbGlk ZURvd246IGZ1bmN0aW9uKHNwZWVkLGNhbGxiYWNrKXsNCgkJcmV0dXJuIHRoaXMu YW5pbWF0ZSh7aGVpZ2h0OiAic2hvdyJ9LCBzcGVlZCwgY2FsbGJhY2spOw0KCX0s DQoNCglzbGlkZVVwOiBmdW5jdGlvbihzcGVlZCxjYWxsYmFjayl7DQoJCXJldHVy biB0aGlzLmFuaW1hdGUoe2hlaWdodDogImhpZGUifSwgc3BlZWQsIGNhbGxiYWNr KTsNCgl9LA0KDQoJc2xpZGVUb2dnbGU6IGZ1bmN0aW9uKHNwZWVkLCBjYWxsYmFj ayl7DQoJCXJldHVybiB0aGlzLmFuaW1hdGUoe2hlaWdodDogInRvZ2dsZSJ9LCBz cGVlZCwgY2FsbGJhY2spOw0KCX0sDQoNCglmYWRlSW46IGZ1bmN0aW9uKHNwZWVk LCBjYWxsYmFjayl7DQoJCXJldHVybiB0aGlzLmFuaW1hdGUoe29wYWNpdHk6ICJz aG93In0sIHNwZWVkLCBjYWxsYmFjayk7DQoJfSwNCg0KCWZhZGVPdXQ6IGZ1bmN0 aW9uKHNwZWVkLCBjYWxsYmFjayl7DQoJCXJldHVybiB0aGlzLmFuaW1hdGUoe29w YWNpdHk6ICJoaWRlIn0sIHNwZWVkLCBjYWxsYmFjayk7DQoJfSwNCg0KCWZhZGVU bzogZnVuY3Rpb24oc3BlZWQsdG8sY2FsbGJhY2spew0KCQlyZXR1cm4gdGhpcy5h bmltYXRlKHtvcGFjaXR5OiB0b30sIHNwZWVkLCBjYWxsYmFjayk7DQoJfSwNCg0K CWFuaW1hdGU6IGZ1bmN0aW9uKCBwcm9wLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFj ayApIHsNCgkJdmFyIG9wdGFsbCA9IGpRdWVyeS5zcGVlZChzcGVlZCwgZWFzaW5n LCBjYWxsYmFjayk7DQoNCgkJcmV0dXJuIHRoaXNbIG9wdGFsbC5xdWV1ZSA9PT0g ZmFsc2UgPyAiZWFjaCIgOiAicXVldWUiIF0oZnVuY3Rpb24oKXsNCgkJCWlmICgg dGhpcy5ub2RlVHlwZSAhPSAxKQ0KCQkJCXJldHVybiBmYWxzZTsNCg0KCQkJdmFy IG9wdCA9IGpRdWVyeS5leHRlbmQoe30sIG9wdGFsbCksIHAsDQoJCQkJaGlkZGVu ID0galF1ZXJ5KHRoaXMpLmlzKCI6aGlkZGVuIiksIHNlbGYgPSB0aGlzOw0KDQoJ CQlmb3IgKCBwIGluIHByb3AgKSB7DQoJCQkJaWYgKCBwcm9wW3BdID09ICJoaWRl IiAmJiBoaWRkZW4gfHwgcHJvcFtwXSA9PSAic2hvdyIgJiYgIWhpZGRlbiApDQoJ CQkJCXJldHVybiBvcHQuY29tcGxldGUuY2FsbCh0aGlzKTsNCg0KCQkJCWlmICgg cCA9PSAiaGVpZ2h0IiB8fCBwID09ICJ3aWR0aCIgKSB7DQoJCQkJCS8vIFN0b3Jl IGRpc3BsYXkgcHJvcGVydHkNCgkJCQkJb3B0LmRpc3BsYXkgPSBqUXVlcnkuY3Nz KHRoaXMsICJkaXNwbGF5Iik7DQoNCgkJCQkJLy8gTWFrZSBzdXJlIHRoYXQgbm90 aGluZyBzbmVha3Mgb3V0DQoJCQkJCW9wdC5vdmVyZmxvdyA9IHRoaXMuc3R5bGUu b3ZlcmZsb3c7DQoJCQkJfQ0KCQkJfQ0KDQoJCQlpZiAoIG9wdC5vdmVyZmxvdyAh PSBudWxsICkNCgkJCQl0aGlzLnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7DQoN CgkJCW9wdC5jdXJBbmltID0galF1ZXJ5LmV4dGVuZCh7fSwgcHJvcCk7DQoNCgkJ CWpRdWVyeS5lYWNoKCBwcm9wLCBmdW5jdGlvbihuYW1lLCB2YWwpew0KCQkJCXZh ciBlID0gbmV3IGpRdWVyeS5meCggc2VsZiwgb3B0LCBuYW1lICk7DQoNCgkJCQlp ZiAoIC90b2dnbGV8c2hvd3xoaWRlLy50ZXN0KHZhbCkgKQ0KCQkJCQllWyB2YWwg PT0gInRvZ2dsZSIgPyBoaWRkZW4gPyAic2hvdyIgOiAiaGlkZSIgOiB2YWwgXSgg cHJvcCApOw0KCQkJCWVsc2Ugew0KCQkJCQl2YXIgcGFydHMgPSB2YWwudG9TdHJp bmcoKS5tYXRjaCgvXihbKy1dPSk/KFtcZCstLl0rKSguKikkLyksDQoJCQkJCQlz dGFydCA9IGUuY3VyKHRydWUpIHx8IDA7DQoNCgkJCQkJaWYgKCBwYXJ0cyApIHsN CgkJCQkJCXZhciBlbmQgPSBwYXJzZUZsb2F0KHBhcnRzWzJdKSwNCgkJCQkJCQl1 bml0ID0gcGFydHNbM10gfHwgInB4IjsNCg0KCQkJCQkJLy8gV2UgbmVlZCB0byBj b21wdXRlIHN0YXJ0aW5nIHZhbHVlDQoJCQkJCQlpZiAoIHVuaXQgIT0gInB4IiAp IHsNCgkJCQkJCQlzZWxmLnN0eWxlWyBuYW1lIF0gPSAoZW5kIHx8IDEpICsgdW5p dDsNCgkJCQkJCQlzdGFydCA9ICgoZW5kIHx8IDEpIC8gZS5jdXIodHJ1ZSkpICog c3RhcnQ7DQoJCQkJCQkJc2VsZi5zdHlsZVsgbmFtZSBdID0gc3RhcnQgKyB1bml0 Ow0KCQkJCQkJfQ0KDQoJCQkJCQkvLyBJZiBhICs9Ly09IHRva2VuIHdhcyBwcm92 aWRlZCwgd2UncmUgZG9pbmcgYSByZWxhdGl2ZSBhbmltYXRpb24NCgkJCQkJCWlm ICggcGFydHNbMV0gKQ0KCQkJCQkJCWVuZCA9ICgocGFydHNbMV0gPT0gIi09IiA/ IC0xIDogMSkgKiBlbmQpICsgc3RhcnQ7DQoNCgkJCQkJCWUuY3VzdG9tKCBzdGFy dCwgZW5kLCB1bml0ICk7DQoJCQkJCX0gZWxzZQ0KCQkJCQkJZS5jdXN0b20oIHN0 YXJ0LCB2YWwsICIiICk7DQoJCQkJfQ0KCQkJfSk7DQoNCgkJCS8vIEZvciBKUyBz dHJpY3QgY29tcGxpYW5jZQ0KCQkJcmV0dXJuIHRydWU7DQoJCX0pOw0KCX0sDQoN CglxdWV1ZTogZnVuY3Rpb24odHlwZSwgZm4pew0KCQlpZiAoIGpRdWVyeS5pc0Z1 bmN0aW9uKHR5cGUpIHx8ICggdHlwZSAmJiB0eXBlLmNvbnN0cnVjdG9yID09IEFy cmF5ICkpIHsNCgkJCWZuID0gdHlwZTsNCgkJCXR5cGUgPSAiZngiOw0KCQl9DQoN CgkJaWYgKCAhdHlwZSB8fCAodHlwZW9mIHR5cGUgPT0gInN0cmluZyIgJiYgIWZu KSApDQoJCQlyZXR1cm4gcXVldWUoIHRoaXNbMF0sIHR5cGUgKTsNCg0KCQlyZXR1 cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7DQoJCQlpZiAoIGZuLmNvbnN0cnVjdG9y ID09IEFycmF5ICkNCgkJCQlxdWV1ZSh0aGlzLCB0eXBlLCBmbik7DQoJCQllbHNl IHsNCgkJCQlxdWV1ZSh0aGlzLCB0eXBlKS5wdXNoKCBmbiApOw0KDQoJCQkJaWYg KCBxdWV1ZSh0aGlzLCB0eXBlKS5sZW5ndGggPT0gMSApDQoJCQkJCWZuLmNhbGwo dGhpcyk7DQoJCQl9DQoJCX0pOw0KCX0sDQoNCglzdG9wOiBmdW5jdGlvbihjbGVh clF1ZXVlLCBnb3RvRW5kKXsNCgkJdmFyIHRpbWVycyA9IGpRdWVyeS50aW1lcnM7 DQoNCgkJaWYgKGNsZWFyUXVldWUpDQoJCQl0aGlzLnF1ZXVlKFtdKTsNCg0KCQl0 aGlzLmVhY2goZnVuY3Rpb24oKXsNCgkJCS8vIGdvIGluIHJldmVyc2Ugb3JkZXIg c28gYW55dGhpbmcgYWRkZWQgdG8gdGhlIHF1ZXVlIGR1cmluZyB0aGUgbG9vcCBp cyBpZ25vcmVkDQoJCQlmb3IgKCB2YXIgaSA9IHRpbWVycy5sZW5ndGggLSAxOyBp ID49IDA7IGktLSApDQoJCQkJaWYgKCB0aW1lcnNbaV0uZWxlbSA9PSB0aGlzICkg ew0KCQkJCQlpZiAoZ290b0VuZCkNCgkJCQkJCS8vIGZvcmNlIHRoZSBuZXh0IHN0 ZXAgdG8gYmUgdGhlIGxhc3QNCgkJCQkJCXRpbWVyc1tpXSh0cnVlKTsNCgkJCQkJ dGltZXJzLnNwbGljZShpLCAxKTsNCgkJCQl9DQoJCX0pOw0KDQoJCS8vIHN0YXJ0 IHRoZSBuZXh0IGluIHRoZSBxdWV1ZSBpZiB0aGUgbGFzdCBzdGVwIHdhc24ndCBm b3JjZWQNCgkJaWYgKCFnb3RvRW5kKQ0KCQkJdGhpcy5kZXF1ZXVlKCk7DQoNCgkJ cmV0dXJuIHRoaXM7DQoJfQ0KDQp9KTsNCg0KdmFyIHF1ZXVlID0gZnVuY3Rpb24o IGVsZW0sIHR5cGUsIGFycmF5ICkgew0KCWlmICggZWxlbSApew0KDQoJCXR5cGUg PSB0eXBlIHx8ICJmeCI7DQoNCgkJdmFyIHEgPSBqUXVlcnkuZGF0YSggZWxlbSwg dHlwZSArICJxdWV1ZSIgKTsNCg0KCQlpZiAoICFxIHx8IGFycmF5ICkNCgkJCXEg PSBqUXVlcnkuZGF0YSggZWxlbSwgdHlwZSArICJxdWV1ZSIsIGpRdWVyeS5tYWtl QXJyYXkoYXJyYXkpICk7DQoNCgl9DQoJcmV0dXJuIHE7DQp9Ow0KDQpqUXVlcnku Zm4uZGVxdWV1ZSA9IGZ1bmN0aW9uKHR5cGUpew0KCXR5cGUgPSB0eXBlIHx8ICJm eCI7DQoNCglyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7DQoJCXZhciBxID0g cXVldWUodGhpcywgdHlwZSk7DQoNCgkJcS5zaGlmdCgpOw0KDQoJCWlmICggcS5s ZW5ndGggKQ0KCQkJcVswXS5jYWxsKCB0aGlzICk7DQoJfSk7DQp9Ow0KDQpqUXVl cnkuZXh0ZW5kKHsNCg0KCXNwZWVkOiBmdW5jdGlvbihzcGVlZCwgZWFzaW5nLCBm bikgew0KCQl2YXIgb3B0ID0gc3BlZWQgJiYgc3BlZWQuY29uc3RydWN0b3IgPT0g T2JqZWN0ID8gc3BlZWQgOiB7DQoJCQljb21wbGV0ZTogZm4gfHwgIWZuICYmIGVh c2luZyB8fA0KCQkJCWpRdWVyeS5pc0Z1bmN0aW9uKCBzcGVlZCApICYmIHNwZWVk LA0KCQkJZHVyYXRpb246IHNwZWVkLA0KCQkJZWFzaW5nOiBmbiAmJiBlYXNpbmcg fHwgZWFzaW5nICYmIGVhc2luZy5jb25zdHJ1Y3RvciAhPSBGdW5jdGlvbiAmJiBl YXNpbmcNCgkJfTsNCg0KCQlvcHQuZHVyYXRpb24gPSAob3B0LmR1cmF0aW9uICYm IG9wdC5kdXJhdGlvbi5jb25zdHJ1Y3RvciA9PSBOdW1iZXIgPw0KCQkJb3B0LmR1 cmF0aW9uIDoNCgkJCWpRdWVyeS5meC5zcGVlZHNbb3B0LmR1cmF0aW9uXSkgfHwg alF1ZXJ5LmZ4LnNwZWVkcy5kZWY7DQoNCgkJLy8gUXVldWVpbmcNCgkJb3B0Lm9s ZCA9IG9wdC5jb21wbGV0ZTsNCgkJb3B0LmNvbXBsZXRlID0gZnVuY3Rpb24oKXsN CgkJCWlmICggb3B0LnF1ZXVlICE9PSBmYWxzZSApDQoJCQkJalF1ZXJ5KHRoaXMp LmRlcXVldWUoKTsNCgkJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIG9wdC5vbGQg KSApDQoJCQkJb3B0Lm9sZC5jYWxsKCB0aGlzICk7DQoJCX07DQoNCgkJcmV0dXJu IG9wdDsNCgl9LA0KDQoJZWFzaW5nOiB7DQoJCWxpbmVhcjogZnVuY3Rpb24oIHAs IG4sIGZpcnN0TnVtLCBkaWZmICkgew0KCQkJcmV0dXJuIGZpcnN0TnVtICsgZGlm ZiAqIHA7DQoJCX0sDQoJCXN3aW5nOiBmdW5jdGlvbiggcCwgbiwgZmlyc3ROdW0s IGRpZmYgKSB7DQoJCQlyZXR1cm4gKCgtTWF0aC5jb3MocCpNYXRoLlBJKS8yKSAr IDAuNSkgKiBkaWZmICsgZmlyc3ROdW07DQoJCX0NCgl9LA0KDQoJdGltZXJzOiBb XSwNCgl0aW1lcklkOiBudWxsLA0KDQoJZng6IGZ1bmN0aW9uKCBlbGVtLCBvcHRp b25zLCBwcm9wICl7DQoJCXRoaXMub3B0aW9ucyA9IG9wdGlvbnM7DQoJCXRoaXMu ZWxlbSA9IGVsZW07DQoJCXRoaXMucHJvcCA9IHByb3A7DQoNCgkJaWYgKCAhb3B0 aW9ucy5vcmlnICkNCgkJCW9wdGlvbnMub3JpZyA9IHt9Ow0KCX0NCg0KfSk7DQoN CmpRdWVyeS5meC5wcm90b3R5cGUgPSB7DQoNCgkvLyBTaW1wbGUgZnVuY3Rpb24g Zm9yIHNldHRpbmcgYSBzdHlsZSB2YWx1ZQ0KCXVwZGF0ZTogZnVuY3Rpb24oKXsN CgkJaWYgKCB0aGlzLm9wdGlvbnMuc3RlcCApDQoJCQl0aGlzLm9wdGlvbnMuc3Rl cC5jYWxsKCB0aGlzLmVsZW0sIHRoaXMubm93LCB0aGlzICk7DQoNCgkJKGpRdWVy eS5meC5zdGVwW3RoaXMucHJvcF0gfHwgalF1ZXJ5LmZ4LnN0ZXAuX2RlZmF1bHQp KCB0aGlzICk7DQoNCgkJLy8gU2V0IGRpc3BsYXkgcHJvcGVydHkgdG8gYmxvY2sg Zm9yIGhlaWdodC93aWR0aCBhbmltYXRpb25zDQoJCWlmICggdGhpcy5wcm9wID09 ICJoZWlnaHQiIHx8IHRoaXMucHJvcCA9PSAid2lkdGgiICkNCgkJCXRoaXMuZWxl bS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsNCgl9LA0KDQoJLy8gR2V0IHRoZSBj dXJyZW50IHNpemUNCgljdXI6IGZ1bmN0aW9uKGZvcmNlKXsNCgkJaWYgKCB0aGlz LmVsZW1bdGhpcy5wcm9wXSAhPSBudWxsICYmIHRoaXMuZWxlbS5zdHlsZVt0aGlz LnByb3BdID09IG51bGwgKQ0KCQkJcmV0dXJuIHRoaXMuZWxlbVsgdGhpcy5wcm9w IF07DQoNCgkJdmFyIHIgPSBwYXJzZUZsb2F0KGpRdWVyeS5jc3ModGhpcy5lbGVt LCB0aGlzLnByb3AsIGZvcmNlKSk7DQoJCXJldHVybiByICYmIHIgPiAtMTAwMDAg PyByIDogcGFyc2VGbG9hdChqUXVlcnkuY3VyQ1NTKHRoaXMuZWxlbSwgdGhpcy5w cm9wKSkgfHwgMDsNCgl9LA0KDQoJLy8gU3RhcnQgYW4gYW5pbWF0aW9uIGZyb20g b25lIG51bWJlciB0byBhbm90aGVyDQoJY3VzdG9tOiBmdW5jdGlvbihmcm9tLCB0 bywgdW5pdCl7DQoJCXRoaXMuc3RhcnRUaW1lID0gbm93KCk7DQoJCXRoaXMuc3Rh cnQgPSBmcm9tOw0KCQl0aGlzLmVuZCA9IHRvOw0KCQl0aGlzLnVuaXQgPSB1bml0 IHx8IHRoaXMudW5pdCB8fCAicHgiOw0KCQl0aGlzLm5vdyA9IHRoaXMuc3RhcnQ7 DQoJCXRoaXMucG9zID0gdGhpcy5zdGF0ZSA9IDA7DQoJCXRoaXMudXBkYXRlKCk7 DQoNCgkJdmFyIHNlbGYgPSB0aGlzOw0KCQlmdW5jdGlvbiB0KGdvdG9FbmQpew0K CQkJcmV0dXJuIHNlbGYuc3RlcChnb3RvRW5kKTsNCgkJfQ0KDQoJCXQuZWxlbSA9 IHRoaXMuZWxlbTsNCg0KCQlqUXVlcnkudGltZXJzLnB1c2godCk7DQoNCgkJaWYg KCBqUXVlcnkudGltZXJJZCA9PSBudWxsICkgew0KCQkJalF1ZXJ5LnRpbWVySWQg PSBzZXRJbnRlcnZhbChmdW5jdGlvbigpew0KCQkJCXZhciB0aW1lcnMgPSBqUXVl cnkudGltZXJzOw0KDQoJCQkJZm9yICggdmFyIGkgPSAwOyBpIDwgdGltZXJzLmxl bmd0aDsgaSsrICkNCgkJCQkJaWYgKCAhdGltZXJzW2ldKCkgKQ0KCQkJCQkJdGlt ZXJzLnNwbGljZShpLS0sIDEpOw0KDQoJCQkJaWYgKCAhdGltZXJzLmxlbmd0aCAp IHsNCgkJCQkJY2xlYXJJbnRlcnZhbCggalF1ZXJ5LnRpbWVySWQgKTsNCgkJCQkJ alF1ZXJ5LnRpbWVySWQgPSBudWxsOw0KCQkJCX0NCgkJCX0sIDEzKTsNCgkJfQ0K CX0sDQoNCgkvLyBTaW1wbGUgJ3Nob3cnIGZ1bmN0aW9uDQoJc2hvdzogZnVuY3Rp b24oKXsNCgkJLy8gUmVtZW1iZXIgd2hlcmUgd2Ugc3RhcnRlZCwgc28gdGhhdCB3 ZSBjYW4gZ28gYmFjayB0byBpdCBsYXRlcg0KCQl0aGlzLm9wdGlvbnMub3JpZ1t0 aGlzLnByb3BdID0galF1ZXJ5LmF0dHIoIHRoaXMuZWxlbS5zdHlsZSwgdGhpcy5w cm9wICk7DQoJCXRoaXMub3B0aW9ucy5zaG93ID0gdHJ1ZTsNCg0KCQkvLyBCZWdp biB0aGUgYW5pbWF0aW9uDQoJCXRoaXMuY3VzdG9tKDAsIHRoaXMuY3VyKCkpOw0K DQoJCS8vIE1ha2Ugc3VyZSB0aGF0IHdlIHN0YXJ0IGF0IGEgc21hbGwgd2lkdGgv aGVpZ2h0IHRvIGF2b2lkIGFueQ0KCQkvLyBmbGFzaCBvZiBjb250ZW50DQoJCWlm ICggdGhpcy5wcm9wID09ICJ3aWR0aCIgfHwgdGhpcy5wcm9wID09ICJoZWlnaHQi ICkNCgkJCXRoaXMuZWxlbS5zdHlsZVt0aGlzLnByb3BdID0gIjFweCI7DQoNCgkJ Ly8gU3RhcnQgYnkgc2hvd2luZyB0aGUgZWxlbWVudA0KCQlqUXVlcnkodGhpcy5l bGVtKS5zaG93KCk7DQoJfSwNCg0KCS8vIFNpbXBsZSAnaGlkZScgZnVuY3Rpb24N CgloaWRlOiBmdW5jdGlvbigpew0KCQkvLyBSZW1lbWJlciB3aGVyZSB3ZSBzdGFy dGVkLCBzbyB0aGF0IHdlIGNhbiBnbyBiYWNrIHRvIGl0IGxhdGVyDQoJCXRoaXMu b3B0aW9ucy5vcmlnW3RoaXMucHJvcF0gPSBqUXVlcnkuYXR0ciggdGhpcy5lbGVt LnN0eWxlLCB0aGlzLnByb3AgKTsNCgkJdGhpcy5vcHRpb25zLmhpZGUgPSB0cnVl Ow0KDQoJCS8vIEJlZ2luIHRoZSBhbmltYXRpb24NCgkJdGhpcy5jdXN0b20odGhp cy5jdXIoKSwgMCk7DQoJfSwNCg0KCS8vIEVhY2ggc3RlcCBvZiBhbiBhbmltYXRp b24NCglzdGVwOiBmdW5jdGlvbihnb3RvRW5kKXsNCgkJdmFyIHQgPSBub3coKTsN Cg0KCQlpZiAoIGdvdG9FbmQgfHwgdCA+IHRoaXMub3B0aW9ucy5kdXJhdGlvbiAr IHRoaXMuc3RhcnRUaW1lICkgew0KCQkJdGhpcy5ub3cgPSB0aGlzLmVuZDsNCgkJ CXRoaXMucG9zID0gdGhpcy5zdGF0ZSA9IDE7DQoJCQl0aGlzLnVwZGF0ZSgpOw0K DQoJCQl0aGlzLm9wdGlvbnMuY3VyQW5pbVsgdGhpcy5wcm9wIF0gPSB0cnVlOw0K DQoJCQl2YXIgZG9uZSA9IHRydWU7DQoJCQlmb3IgKCB2YXIgaSBpbiB0aGlzLm9w dGlvbnMuY3VyQW5pbSApDQoJCQkJaWYgKCB0aGlzLm9wdGlvbnMuY3VyQW5pbVtp XSAhPT0gdHJ1ZSApDQoJCQkJCWRvbmUgPSBmYWxzZTsNCg0KCQkJaWYgKCBkb25l ICkgew0KCQkJCWlmICggdGhpcy5vcHRpb25zLmRpc3BsYXkgIT0gbnVsbCApIHsN CgkJCQkJLy8gUmVzZXQgdGhlIG92ZXJmbG93DQoJCQkJCXRoaXMuZWxlbS5zdHls ZS5vdmVyZmxvdyA9IHRoaXMub3B0aW9ucy5vdmVyZmxvdzsNCg0KCQkJCQkvLyBS ZXNldCB0aGUgZGlzcGxheQ0KCQkJCQl0aGlzLmVsZW0uc3R5bGUuZGlzcGxheSA9 IHRoaXMub3B0aW9ucy5kaXNwbGF5Ow0KCQkJCQlpZiAoIGpRdWVyeS5jc3ModGhp cy5lbGVtLCAiZGlzcGxheSIpID09ICJub25lIiApDQoJCQkJCQl0aGlzLmVsZW0u c3R5bGUuZGlzcGxheSA9ICJibG9jayI7DQoJCQkJfQ0KDQoJCQkJLy8gSGlkZSB0 aGUgZWxlbWVudCBpZiB0aGUgImhpZGUiIG9wZXJhdGlvbiB3YXMgZG9uZQ0KCQkJ CWlmICggdGhpcy5vcHRpb25zLmhpZGUgKQ0KCQkJCQl0aGlzLmVsZW0uc3R5bGUu ZGlzcGxheSA9ICJub25lIjsNCg0KCQkJCS8vIFJlc2V0IHRoZSBwcm9wZXJ0aWVz LCBpZiB0aGUgaXRlbSBoYXMgYmVlbiBoaWRkZW4gb3Igc2hvd24NCgkJCQlpZiAo IHRoaXMub3B0aW9ucy5oaWRlIHx8IHRoaXMub3B0aW9ucy5zaG93ICkNCgkJCQkJ Zm9yICggdmFyIHAgaW4gdGhpcy5vcHRpb25zLmN1ckFuaW0gKQ0KCQkJCQkJalF1 ZXJ5LmF0dHIodGhpcy5lbGVtLnN0eWxlLCBwLCB0aGlzLm9wdGlvbnMub3JpZ1tw XSk7DQoJCQl9DQoNCgkJCWlmICggZG9uZSApDQoJCQkJLy8gRXhlY3V0ZSB0aGUg Y29tcGxldGUgZnVuY3Rpb24NCgkJCQl0aGlzLm9wdGlvbnMuY29tcGxldGUuY2Fs bCggdGhpcy5lbGVtICk7DQoNCgkJCXJldHVybiBmYWxzZTsNCgkJfSBlbHNlIHsN CgkJCXZhciBuID0gdCAtIHRoaXMuc3RhcnRUaW1lOw0KCQkJdGhpcy5zdGF0ZSA9 IG4gLyB0aGlzLm9wdGlvbnMuZHVyYXRpb247DQoNCgkJCS8vIFBlcmZvcm0gdGhl IGVhc2luZyBmdW5jdGlvbiwgZGVmYXVsdHMgdG8gc3dpbmcNCgkJCXRoaXMucG9z ID0galF1ZXJ5LmVhc2luZ1t0aGlzLm9wdGlvbnMuZWFzaW5nIHx8IChqUXVlcnku ZWFzaW5nLnN3aW5nID8gInN3aW5nIiA6ICJsaW5lYXIiKV0odGhpcy5zdGF0ZSwg biwgMCwgMSwgdGhpcy5vcHRpb25zLmR1cmF0aW9uKTsNCgkJCXRoaXMubm93ID0g dGhpcy5zdGFydCArICgodGhpcy5lbmQgLSB0aGlzLnN0YXJ0KSAqIHRoaXMucG9z KTsNCg0KCQkJLy8gUGVyZm9ybSB0aGUgbmV4dCBzdGVwIG9mIHRoZSBhbmltYXRp b24NCgkJCXRoaXMudXBkYXRlKCk7DQoJCX0NCg0KCQlyZXR1cm4gdHJ1ZTsNCgl9 DQoNCn07DQoNCmpRdWVyeS5leHRlbmQoIGpRdWVyeS5meCwgew0KCXNwZWVkczp7 DQoJCXNsb3c6IDYwMCwNCiAJCWZhc3Q6IDIwMCwNCiAJCS8vIERlZmF1bHQgc3Bl ZWQNCiAJCWRlZjogNDAwDQoJfSwNCglzdGVwOiB7DQoJCXNjcm9sbExlZnQ6IGZ1 bmN0aW9uKGZ4KXsNCgkJCWZ4LmVsZW0uc2Nyb2xsTGVmdCA9IGZ4Lm5vdzsNCgkJ fSwNCg0KCQlzY3JvbGxUb3A6IGZ1bmN0aW9uKGZ4KXsNCgkJCWZ4LmVsZW0uc2Ny b2xsVG9wID0gZngubm93Ow0KCQl9LA0KDQoJCW9wYWNpdHk6IGZ1bmN0aW9uKGZ4 KXsNCgkJCWpRdWVyeS5hdHRyKGZ4LmVsZW0uc3R5bGUsICJvcGFjaXR5IiwgZngu bm93KTsNCgkJfSwNCg0KCQlfZGVmYXVsdDogZnVuY3Rpb24oZngpew0KCQkJZngu ZWxlbS5zdHlsZVsgZngucHJvcCBdID0gZngubm93ICsgZngudW5pdDsNCgkJfQ0K CX0NCn0pOw0KLy8gVGhlIE9mZnNldCBNZXRob2QNCi8vIE9yaWdpbmFsbHkgQnkg QnJhbmRvbiBBYXJvbiwgcGFydCBvZiB0aGUgRGltZW5zaW9uIFBsdWdpbg0KLy8g aHR0cDovL2pxdWVyeS5jb20vcGx1Z2lucy9wcm9qZWN0L2RpbWVuc2lvbnMNCmpR dWVyeS5mbi5vZmZzZXQgPSBmdW5jdGlvbigpIHsNCgl2YXIgbGVmdCA9IDAsIHRv cCA9IDAsIGVsZW0gPSB0aGlzWzBdLCByZXN1bHRzOw0KDQoJaWYgKCBlbGVtICkg d2l0aCAoIGpRdWVyeS5icm93c2VyICkgew0KCQl2YXIgcGFyZW50ICAgICAgID0g ZWxlbS5wYXJlbnROb2RlLA0KCQkgICAgb2Zmc2V0Q2hpbGQgID0gZWxlbSwNCgkJ ICAgIG9mZnNldFBhcmVudCA9IGVsZW0ub2Zmc2V0UGFyZW50LA0KCQkgICAgZG9j ICAgICAgICAgID0gZWxlbS5vd25lckRvY3VtZW50LA0KCQkgICAgc2FmYXJpMiAg ICAgID0gc2FmYXJpICYmIHBhcnNlSW50KHZlcnNpb24pIDwgNTIyICYmICEvYWRv YmVhaXIvaS50ZXN0KHVzZXJBZ2VudCksDQoJCSAgICBjc3MgICAgICAgICAgPSBq UXVlcnkuY3VyQ1NTLA0KCQkgICAgZml4ZWQgICAgICAgID0gY3NzKGVsZW0sICJw b3NpdGlvbiIpID09ICJmaXhlZCI7DQoNCgkJLy8gVXNlIGdldEJvdW5kaW5nQ2xp ZW50UmVjdCBpZiBhdmFpbGFibGUNCgkJaWYgKCBlbGVtLmdldEJvdW5kaW5nQ2xp ZW50UmVjdCApIHsNCgkJCXZhciBib3ggPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50 UmVjdCgpOw0KDQoJCQkvLyBBZGQgdGhlIGRvY3VtZW50IHNjcm9sbCBvZmZzZXRz DQoJCQlhZGQoYm94LmxlZnQgKyBNYXRoLm1heChkb2MuZG9jdW1lbnRFbGVtZW50 LnNjcm9sbExlZnQsIGRvYy5ib2R5LnNjcm9sbExlZnQpLA0KCQkJCWJveC50b3Ag ICsgTWF0aC5tYXgoZG9jLmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AsICBkb2Mu Ym9keS5zY3JvbGxUb3ApKTsNCg0KCQkJLy8gSUUgYWRkcyB0aGUgSFRNTCBlbGVt ZW50J3MgYm9yZGVyLCBieSBkZWZhdWx0IGl0IGlzIG1lZGl1bSB3aGljaCBpcyAy cHgNCgkJCS8vIElFIDYgYW5kIDcgcXVpcmtzIG1vZGUgdGhlIGJvcmRlciB3aWR0 aCBpcyBvdmVyd3JpdGFibGUgYnkgdGhlIGZvbGxvd2luZyBjc3MgaHRtbCB7IGJv cmRlcjogMDsgfQ0KCQkJLy8gSUUgNyBzdGFuZGFyZHMgbW9kZSwgdGhlIGJvcmRl ciBpcyBhbHdheXMgMnB4DQoJCQkvLyBUaGlzIGJvcmRlci9vZmZzZXQgaXMgdHlw aWNhbGx5IHJlcHJlc2VudGVkIGJ5IHRoZSBjbGllbnRMZWZ0IGFuZCBjbGllbnRU b3AgcHJvcGVydGllcw0KCQkJLy8gSG93ZXZlciwgaW4gSUU2IGFuZCA3IHF1aXJr cyBtb2RlIHRoZSBjbGllbnRMZWZ0IGFuZCBjbGllbnRUb3AgcHJvcGVydGllcyBh cmUgbm90IHVwZGF0ZWQgd2hlbiBvdmVyd3JpdGluZyBpdCB2aWEgQ1NTDQoJCQkv LyBUaGVyZWZvcmUgdGhpcyBtZXRob2Qgd2lsbCBiZSBvZmYgYnkgMnB4IGluIElF IHdoaWxlIGluIHF1aXJrc21vZGUNCgkJCWFkZCggLWRvYy5kb2N1bWVudEVsZW1l bnQuY2xpZW50TGVmdCwgLWRvYy5kb2N1bWVudEVsZW1lbnQuY2xpZW50VG9wICk7 DQoNCgkJLy8gT3RoZXJ3aXNlIGxvb3AgdGhyb3VnaCB0aGUgb2Zmc2V0UGFyZW50 cyBhbmQgcGFyZW50Tm9kZXMNCgkJfSBlbHNlIHsNCg0KCQkJLy8gSW5pdGlhbCBl bGVtZW50IG9mZnNldHMNCgkJCWFkZCggZWxlbS5vZmZzZXRMZWZ0LCBlbGVtLm9m ZnNldFRvcCApOw0KDQoJCQkvLyBHZXQgcGFyZW50IG9mZnNldHMNCgkJCXdoaWxl ICggb2Zmc2V0UGFyZW50ICkgew0KCQkJCS8vIEFkZCBvZmZzZXRQYXJlbnQgb2Zm c2V0cw0KCQkJCWFkZCggb2Zmc2V0UGFyZW50Lm9mZnNldExlZnQsIG9mZnNldFBh cmVudC5vZmZzZXRUb3AgKTsNCg0KCQkJCS8vIE1vemlsbGEgYW5kIFNhZmFyaSA+ IDIgZG9lcyBub3QgaW5jbHVkZSB0aGUgYm9yZGVyIG9uIG9mZnNldCBwYXJlbnRz DQoJCQkJLy8gSG93ZXZlciBNb3ppbGxhIGFkZHMgdGhlIGJvcmRlciBmb3IgdGFi bGUgb3IgdGFibGUgY2VsbHMNCgkJCQlpZiAoIG1vemlsbGEgJiYgIS9edChhYmxl fGR8aCkkL2kudGVzdChvZmZzZXRQYXJlbnQudGFnTmFtZSkgfHwgc2FmYXJpICYm ICFzYWZhcmkyICkNCgkJCQkJYm9yZGVyKCBvZmZzZXRQYXJlbnQgKTsNCg0KCQkJ CS8vIEFkZCB0aGUgZG9jdW1lbnQgc2Nyb2xsIG9mZnNldHMgaWYgcG9zaXRpb24g aXMgZml4ZWQgb24gYW55IG9mZnNldFBhcmVudA0KCQkJCWlmICggIWZpeGVkICYm IGNzcyhvZmZzZXRQYXJlbnQsICJwb3NpdGlvbiIpID09ICJmaXhlZCIgKQ0KCQkJ CQlmaXhlZCA9IHRydWU7DQoNCgkJCQkvLyBTZXQgb2Zmc2V0Q2hpbGQgdG8gcHJl dmlvdXMgb2Zmc2V0UGFyZW50IHVubGVzcyBpdCBpcyB0aGUgYm9keSBlbGVtZW50 DQoJCQkJb2Zmc2V0Q2hpbGQgID0gL15ib2R5JC9pLnRlc3Qob2Zmc2V0UGFyZW50 LnRhZ05hbWUpID8gb2Zmc2V0Q2hpbGQgOiBvZmZzZXRQYXJlbnQ7DQoJCQkJLy8g R2V0IG5leHQgb2Zmc2V0UGFyZW50DQoJCQkJb2Zmc2V0UGFyZW50ID0gb2Zmc2V0 UGFyZW50Lm9mZnNldFBhcmVudDsNCgkJCX0NCg0KCQkJLy8gR2V0IHBhcmVudCBz Y3JvbGwgb2Zmc2V0cw0KCQkJd2hpbGUgKCBwYXJlbnQgJiYgcGFyZW50LnRhZ05h bWUgJiYgIS9eYm9keXxodG1sJC9pLnRlc3QocGFyZW50LnRhZ05hbWUpICkgew0K CQkJCS8vIFJlbW92ZSBwYXJlbnQgc2Nyb2xsIFVOTEVTUyB0aGF0IHBhcmVudCBp cyBpbmxpbmUgb3IgYSB0YWJsZSB0byB3b3JrIGFyb3VuZCBPcGVyYSBpbmxpbmUv dGFibGUgc2Nyb2xsTGVmdC9Ub3AgYnVnDQoJCQkJaWYgKCAhL15pbmxpbmV8dGFi bGUuKiQvaS50ZXN0KGNzcyhwYXJlbnQsICJkaXNwbGF5IikpICkNCgkJCQkJLy8g U3VidHJhY3QgcGFyZW50IHNjcm9sbCBvZmZzZXRzDQoJCQkJCWFkZCggLXBhcmVu dC5zY3JvbGxMZWZ0LCAtcGFyZW50LnNjcm9sbFRvcCApOw0KDQoJCQkJLy8gTW96 aWxsYSBkb2VzIG5vdCBhZGQgdGhlIGJvcmRlciBmb3IgYSBwYXJlbnQgdGhhdCBo YXMgb3ZlcmZsb3cgIT0gdmlzaWJsZQ0KCQkJCWlmICggbW96aWxsYSAmJiBjc3Mo cGFyZW50LCAib3ZlcmZsb3ciKSAhPSAidmlzaWJsZSIgKQ0KCQkJCQlib3JkZXIo IHBhcmVudCApOw0KDQoJCQkJLy8gR2V0IG5leHQgcGFyZW50DQoJCQkJcGFyZW50 ID0gcGFyZW50LnBhcmVudE5vZGU7DQoJCQl9DQoNCgkJCS8vIFNhZmFyaSA8PSAy IGRvdWJsZXMgYm9keSBvZmZzZXRzIHdpdGggYSBmaXhlZCBwb3NpdGlvbiBlbGVt ZW50L29mZnNldFBhcmVudCBvciBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgb2Zmc2V0 Q2hpbGQNCgkJCS8vIE1vemlsbGEgZG91YmxlcyBib2R5IG9mZnNldHMgd2l0aCBh IG5vbi1hYnNvbHV0ZWx5IHBvc2l0aW9uZWQgb2Zmc2V0Q2hpbGQNCgkJCWlmICgg KHNhZmFyaTIgJiYgKGZpeGVkIHx8IGNzcyhvZmZzZXRDaGlsZCwgInBvc2l0aW9u IikgPT0gImFic29sdXRlIikpIHx8DQoJCQkJKG1vemlsbGEgJiYgY3NzKG9mZnNl dENoaWxkLCAicG9zaXRpb24iKSAhPSAiYWJzb2x1dGUiKSApDQoJCQkJCWFkZCgg LWRvYy5ib2R5Lm9mZnNldExlZnQsIC1kb2MuYm9keS5vZmZzZXRUb3AgKTsNCg0K CQkJLy8gQWRkIHRoZSBkb2N1bWVudCBzY3JvbGwgb2Zmc2V0cyBpZiBwb3NpdGlv biBpcyBmaXhlZA0KCQkJaWYgKCBmaXhlZCApDQoJCQkJYWRkKE1hdGgubWF4KGRv Yy5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCwgZG9jLmJvZHkuc2Nyb2xsTGVm dCksDQoJCQkJCU1hdGgubWF4KGRvYy5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9w LCAgZG9jLmJvZHkuc2Nyb2xsVG9wKSk7DQoJCX0NCg0KCQkvLyBSZXR1cm4gYW4g b2JqZWN0IHdpdGggdG9wIGFuZCBsZWZ0IHByb3BlcnRpZXMNCgkJcmVzdWx0cyA9 IHsgdG9wOiB0b3AsIGxlZnQ6IGxlZnQgfTsNCgl9DQoNCglmdW5jdGlvbiBib3Jk ZXIoZWxlbSkgew0KCQlhZGQoIGpRdWVyeS5jdXJDU1MoZWxlbSwgImJvcmRlckxl ZnRXaWR0aCIsIHRydWUpLCBqUXVlcnkuY3VyQ1NTKGVsZW0sICJib3JkZXJUb3BX aWR0aCIsIHRydWUpICk7DQoJfQ0KDQoJZnVuY3Rpb24gYWRkKGwsIHQpIHsNCgkJ bGVmdCArPSBwYXJzZUludChsLCAxMCkgfHwgMDsNCgkJdG9wICs9IHBhcnNlSW50 KHQsIDEwKSB8fCAwOw0KCX0NCg0KCXJldHVybiByZXN1bHRzOw0KfTsNCg0KDQpq UXVlcnkuZm4uZXh0ZW5kKHsNCglwb3NpdGlvbjogZnVuY3Rpb24oKSB7DQoJCXZh ciBsZWZ0ID0gMCwgdG9wID0gMCwgcmVzdWx0czsNCg0KCQlpZiAoIHRoaXNbMF0g KSB7DQoJCQkvLyBHZXQgKnJlYWwqIG9mZnNldFBhcmVudA0KCQkJdmFyIG9mZnNl dFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50KCksDQoNCgkJCS8vIEdldCBjb3Jy ZWN0IG9mZnNldHMNCgkJCW9mZnNldCAgICAgICA9IHRoaXMub2Zmc2V0KCksDQoJ CQlwYXJlbnRPZmZzZXQgPSAvXmJvZHl8aHRtbCQvaS50ZXN0KG9mZnNldFBhcmVu dFswXS50YWdOYW1lKSA/IHsgdG9wOiAwLCBsZWZ0OiAwIH0gOiBvZmZzZXRQYXJl bnQub2Zmc2V0KCk7DQoNCgkJCS8vIFN1YnRyYWN0IGVsZW1lbnQgbWFyZ2lucw0K CQkJLy8gbm90ZTogd2hlbiBhbiBlbGVtZW50IGhhcyBtYXJnaW46IGF1dG8gdGhl IG9mZnNldExlZnQgYW5kIG1hcmdpbkxlZnQgDQoJCQkvLyBhcmUgdGhlIHNhbWUg aW4gU2FmYXJpIGNhdXNpbmcgb2Zmc2V0LmxlZnQgdG8gaW5jb3JyZWN0bHkgYmUg MA0KCQkJb2Zmc2V0LnRvcCAgLT0gbnVtKCB0aGlzLCAnbWFyZ2luVG9wJyApOw0K CQkJb2Zmc2V0LmxlZnQgLT0gbnVtKCB0aGlzLCAnbWFyZ2luTGVmdCcgKTsNCg0K CQkJLy8gQWRkIG9mZnNldFBhcmVudCBib3JkZXJzDQoJCQlwYXJlbnRPZmZzZXQu dG9wICArPSBudW0oIG9mZnNldFBhcmVudCwgJ2JvcmRlclRvcFdpZHRoJyApOw0K CQkJcGFyZW50T2Zmc2V0LmxlZnQgKz0gbnVtKCBvZmZzZXRQYXJlbnQsICdib3Jk ZXJMZWZ0V2lkdGgnICk7DQoNCgkJCS8vIFN1YnRyYWN0IHRoZSB0d28gb2Zmc2V0 cw0KCQkJcmVzdWx0cyA9IHsNCgkJCQl0b3A6ICBvZmZzZXQudG9wICAtIHBhcmVu dE9mZnNldC50b3AsDQoJCQkJbGVmdDogb2Zmc2V0LmxlZnQgLSBwYXJlbnRPZmZz ZXQubGVmdA0KCQkJfTsNCgkJfQ0KDQoJCXJldHVybiByZXN1bHRzOw0KCX0sDQoN CglvZmZzZXRQYXJlbnQ6IGZ1bmN0aW9uKCkgew0KCQl2YXIgb2Zmc2V0UGFyZW50 ID0gdGhpc1swXS5vZmZzZXRQYXJlbnQ7DQoJCXdoaWxlICggb2Zmc2V0UGFyZW50 ICYmICghL15ib2R5fGh0bWwkL2kudGVzdChvZmZzZXRQYXJlbnQudGFnTmFtZSkg JiYgalF1ZXJ5LmNzcyhvZmZzZXRQYXJlbnQsICdwb3NpdGlvbicpID09ICdzdGF0 aWMnKSApDQoJCQlvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0UGFy ZW50Ow0KCQlyZXR1cm4galF1ZXJ5KG9mZnNldFBhcmVudCk7DQoJfQ0KfSk7DQoN Cg0KLy8gQ3JlYXRlIHNjcm9sbExlZnQgYW5kIHNjcm9sbFRvcCBtZXRob2RzDQpq UXVlcnkuZWFjaCggWydMZWZ0JywgJ1RvcCddLCBmdW5jdGlvbihpLCBuYW1lKSB7 DQoJdmFyIG1ldGhvZCA9ICdzY3JvbGwnICsgbmFtZTsNCgkNCglqUXVlcnkuZm5b IG1ldGhvZCBdID0gZnVuY3Rpb24odmFsKSB7DQoJCWlmICghdGhpc1swXSkgcmV0 dXJuOw0KDQoJCXJldHVybiB2YWwgIT0gdW5kZWZpbmVkID8NCg0KCQkJLy8gU2V0 IHRoZSBzY3JvbGwgb2Zmc2V0DQoJCQl0aGlzLmVhY2goZnVuY3Rpb24oKSB7DQoJ CQkJdGhpcyA9PSB3aW5kb3cgfHwgdGhpcyA9PSBkb2N1bWVudCA/DQoJCQkJCXdp bmRvdy5zY3JvbGxUbygNCgkJCQkJCSFpID8gdmFsIDogalF1ZXJ5KHdpbmRvdyku c2Nyb2xsTGVmdCgpLA0KCQkJCQkJIGkgPyB2YWwgOiBqUXVlcnkod2luZG93KS5z Y3JvbGxUb3AoKQ0KCQkJCQkpIDoNCgkJCQkJdGhpc1sgbWV0aG9kIF0gPSB2YWw7 DQoJCQl9KSA6DQoNCgkJCS8vIFJldHVybiB0aGUgc2Nyb2xsIG9mZnNldA0KCQkJ dGhpc1swXSA9PSB3aW5kb3cgfHwgdGhpc1swXSA9PSBkb2N1bWVudCA/DQoJCQkJ c2VsZlsgaSA/ICdwYWdlWU9mZnNldCcgOiAncGFnZVhPZmZzZXQnIF0gfHwNCgkJ CQkJalF1ZXJ5LmJveE1vZGVsICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsg bWV0aG9kIF0gfHwNCgkJCQkJZG9jdW1lbnQuYm9keVsgbWV0aG9kIF0gOg0KCQkJ CXRoaXNbMF1bIG1ldGhvZCBdOw0KCX07DQp9KTsNCi8vIENyZWF0ZSBpbm5lckhl aWdodCwgaW5uZXJXaWR0aCwgb3V0ZXJIZWlnaHQgYW5kIG91dGVyV2lkdGggbWV0 aG9kcw0KalF1ZXJ5LmVhY2goWyAiSGVpZ2h0IiwgIldpZHRoIiBdLCBmdW5jdGlv bihpLCBuYW1lKXsNCg0KCXZhciB0bCA9IGkgPyAiTGVmdCIgIDogIlRvcCIsICAv LyB0b3Agb3IgbGVmdA0KCQliciA9IGkgPyAiUmlnaHQiIDogIkJvdHRvbSI7IC8v IGJvdHRvbSBvciByaWdodA0KDQoJLy8gaW5uZXJIZWlnaHQgYW5kIGlubmVyV2lk dGgNCglqUXVlcnkuZm5bImlubmVyIiArIG5hbWVdID0gZnVuY3Rpb24oKXsNCgkJ cmV0dXJuIHRoaXNbIG5hbWUudG9Mb3dlckNhc2UoKSBdKCkgKw0KCQkJbnVtKHRo aXMsICJwYWRkaW5nIiArIHRsKSArDQoJCQludW0odGhpcywgInBhZGRpbmciICsg YnIpOw0KCX07DQoNCgkvLyBvdXRlckhlaWdodCBhbmQgb3V0ZXJXaWR0aA0KCWpR dWVyeS5mblsib3V0ZXIiICsgbmFtZV0gPSBmdW5jdGlvbihtYXJnaW4pIHsNCgkJ cmV0dXJuIHRoaXNbImlubmVyIiArIG5hbWVdKCkgKw0KCQkJbnVtKHRoaXMsICJi b3JkZXIiICsgdGwgKyAiV2lkdGgiKSArDQoJCQludW0odGhpcywgImJvcmRlciIg KyBiciArICJXaWR0aCIpICsNCgkJCShtYXJnaW4gPw0KCQkJCW51bSh0aGlzLCAi bWFyZ2luIiArIHRsKSArIG51bSh0aGlzLCAibWFyZ2luIiArIGJyKSA6IDApOw0K CX07DQoNCn0pO30pKCk7DQo= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=scripts.js Content-Type: application/x-javascript; name=scripts.js Content-Location: http://teplice.naseadresa.cz/0000-Global/js/scripts.js Content-Transfer-Encoding: Base64 dmFyIGZvbnRTaXplID0gMTAwOw0KdmFyIG1heEZvbnRTaXplID0gMTUwOw0KdmFy IG1pbkZvbnRTaXplID0gMTAwOw0KDQpmdW5jdGlvbiBIaWRlRWxlbWVudChlbGVt ZW50SWQpDQp7DQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElk KS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KfQ0KDQpmdW5jdGlvbiBTaG93RWxl bWVudChlbGVtZW50SWQpDQp7DQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo ZWxlbWVudElkKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsNCn0NCg0KZnVuY3Rp b24gU2hvd09ySGlkZUVsZW1lbnQoZWxlbWVudElkKQ0Kew0KICAgIHZhciBvYmog PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOw0KICAgIGlmIChv Ymouc3R5bGUuZGlzcGxheS50b0xvd2VyQ2FzZSgpID09ICJub25lIikNCiAgICB7 DQogICAgICAgIG9iai5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsNCiAgICB9DQog ICAgZWxzZQ0KICAgIHsNCiAgICAgICAgb2JqLnN0eWxlLmRpc3BsYXkgPSAibm9u ZSI7DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBTaG93T3JIaWRlRWxlbWVudE5vTG93 ZXIoZWxlbWVudElkKQ0Kew0KICAgIHZhciBvYmogPSBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZChlbGVtZW50SWQpOw0KICAgIGlmIChvYmouc3R5bGUuZGlzcGxheSA9 PSAibm9uZSIpDQogICAgew0KICAgICAgICBvYmouc3R5bGUuZGlzcGxheSA9ICJi bG9jayI7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgIG9iai5zdHls ZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgIH0NCn0NCg0KZnVuY3Rpb24gU2hvd09y SGlkZUVsZW1lbnRXaXRoVGl0bGUoZWxlbWVudElkLHRpdGxlSWQsdGl0bGVTaG93 LHRpdGxlSGlkZSkNCnsNCgl2YXIgb2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoZWxlbWVudElkKTsNCgl2YXIgdGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50 QnlJZCh0aXRsZUlkKTsNCg0KCWlmIChvYmouc3R5bGUuZGlzcGxheS50b0xvd2Vy Q2FzZSgpID09ICJub25lIikNCiAgICB7DQogICAgICAgIG9iai5zdHlsZS5kaXNw bGF5ID0gImJsb2NrIjsNCgkJdGl0bGUuaW5uZXJIVE1MID0gdGl0bGVTaG93Ow0K ICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAgICBvYmouc3R5bGUuZGlzcGxh eSA9ICJub25lIjsNCgkJdGl0bGUuaW5uZXJIVE1MID0gdGl0bGVIaWRlOw0KICAg IH0NCn0NCg0KZnVuY3Rpb24gU2hvd09ySGlkZVRhYmxlKGVsZW1lbnRJZEZpcnN0 LCBlbGVtZW50SWRTZWNvbmQpDQp7DQogICAgdmFyIG9iaiA9IGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKGVsZW1lbnRJZEZpcnN0KTsNCiAgICB2YXIgb2JqMiA9IGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZFNlY29uZCk7DQogICAgb2Jq LnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOw0KICAgIG9iajIuc3R5bGUuZGlzcGxh eSA9ICJub25lIjsNCg0KfQ0KDQpmdW5jdGlvbiBTaG93T3JIaWRlRXh0ZW5kZWRT ZWFyY2goZWxlbWVudElkKQ0Kew0KCXZhciBvYmogPSBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZChlbGVtZW50SWQpOw0KCWlmIChvYmouc3R5bGUudmlzaWJpbGl0eS50 b0xvd2VyQ2FzZSgpID09ICdoaWRkZW4nKQ0KCXsNCgkJb2JqLnN0eWxlLnZpc2li aWxpdHkgPSAndmlzaWJsZSc7DQoJCW9iai5zdHlsZS5wb3NpdGlvbiA9ICdyZWxh dGl2ZSc7DQoJfQ0KCWVsc2UNCgl7DQoJCW9iai5zdHlsZS52aXNpYmlsaXR5ID0g J2hpZGRlbic7DQoJCW9iai5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7DQoJ fQ0KfQ0KDQpmdW5jdGlvbiBDbGVhcklucHV0VmFsdWUoZWxlbWVudElkKQ0Kew0K ICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7 DQoNCglpZiAoKGVsLnRpdGxlID09ICIiKSAmJiAoZWwudmFsdWUgIT0gIiIpKQ0K CXsNCgkJZWwudGl0bGUgPSBlbC52YWx1ZTsNCgkJZWwudmFsdWUgPSAiIjsNCgl9 DQp9DQoNCmZ1bmN0aW9uIHNldElucHV0VmFsdWUoZWxlbWVudElkKQ0Kew0KCXZh ciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7DQoJDQoJ aWYgKChlbC52YWx1ZSA9PSAiIikgJiYgKGVsLnRpdGxlICE9ICIiKSkNCgl7DQoJ CWVsLnZhbHVlID0gZWwudGl0bGU7DQoJCWVsLnRpdGxlID0gIiI7DQoJfQ0KfQ0K DQpmdW5jdGlvbiBjaGFuZ2VTaXplRm9udChlbCxtZXRob2QpDQp7DQoJdmFyIG9i aiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsKTsNCgl2YXIgc2V0U2l6ZSA9 IDA7DQoJDQoJc3dpdGNoKG1ldGhvZCkNCgl7DQoJCWNhc2UgIisiOg0KCQkJaWYg KGZvbnRTaXplICE9IG1heEZvbnRTaXplKQ0KCQkJew0KCQkJCXNldFNpemUgPSA1 Ow0KCQkJfQ0KCQkJZm9udFNpemUgKz0gc2V0U2l6ZTsNCgkJCWJyZWFrOw0KCQlj YXNlICItIjoNCgkJCWlmIChmb250U2l6ZSAhPSBtaW5Gb250U2l6ZSkNCgkJCXsN CgkJCQlzZXRTaXplID0gNTsNCgkJCX0NCgkJCWZvbnRTaXplIC09IHNldFNpemU7 DQoJCQlicmVhazsNCgkJY2FzZSAiPSI6DQoJCQlmb250U2l6ZSA9IGZvbnRTaXpl Ow0KCQkJYnJlYWs7DQoJCWRlZmF1bHQ6DQoJCQlmb250U2l6ZSA9IGZvbnRTaXpl Ow0KCX0NCgkNCglvYmouc3R5bGUuZm9udFNpemUgPSBmb250U2l6ZSArICIlIjsN Cn0NCg0KLy8gZnVuY3Rpb24gZm9yIHN3aXRjaCB0YWJsZXMgd2l0aCBjbGFzcyBh Y3RpdmUNCi8vIEBwYXJhbXMJZmlyc3QgcGFyYW1ldGVyIGlzIHRoZSB2aXNpYmxl IGVsZW1lbnQsIG5leHQgcGFyYW1ldGVycyBkZWZpbmUgdGhlIGhpZGRlbiBlbGVt ZW50cywgdGhlIGxhc3QgcGFyYW1ldGVyIGlzIG51bWJlciBhbmQgc2V0IGFjdGl2 ZSBjbGFzcw0KZnVuY3Rpb24gc3dpdGNoRWxlbWVudHNXaXRoQ2xhc3MoKQ0Kew0K CWZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKQ0KCXsN CgkJdmFyIGxhc3QgPSBmYWxzZTsNCgkJdmFyIGluZGV4Ow0KCQkNCgkJdmFyIG9u ZUJ1dHRvbiA9IG5ldyBBcnJheSgiYWN0aXZlIiwiIiwiIik7DQoJCXZhciB0d29C dXR0b24gPSBuZXcgQXJyYXkoIiIsImFjdGl2ZSIsIiIpOw0KCQl2YXIgdGhyZWVC dXR0b24gPSBuZXcgQXJyYXkoIiIsIiIsImFjdGl2ZSIpOw0KCQkNCgkJdmFyIGJ1 dHRvbkFycmF5ID0gbmV3IEFycmF5KCJvbmVCdXR0b24iLCJ0d29CdXR0b24iLCJ0 aHJlZUJ1dHRvbiIpOw0KCQkNCgkJaWYgKGkgPT0gMCkNCgkJew0KCQkJZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoYXJndW1lbnRzW2ldKS5zdHlsZS5kaXNwbGF5ID0g ImJsb2NrIjsNCgkJfQ0KCQllbHNlIGlmIChpID09IGFyZ3VtZW50cy5sZW5ndGgt MSkNCgkJew0KCQkJbGFzdCA9IHRydWU7DQoJCQlpZiAoYXJndW1lbnRzW2ldICE9 IE5hTikNCgkJCQlpbmRleCA9IGFyZ3VtZW50c1tpXTsNCgkJCWVsc2UNCgkJCQlp bmRleCA9IDE7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQlkb2N1bWVudC5nZXRFbGVt ZW50QnlJZChhcmd1bWVudHNbaV0pLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7DQoJ CX0NCgkJDQoJCWlmIChsYXN0KQ0KCQl7DQoJCQlzd2l0Y2goaW5kZXgpDQoJCQl7 DQoJCQkJY2FzZSAxOg0KCQkJCQlmb3IgKHZhciB4ID0gMDsgeCA8IGJ1dHRvbkFy cmF5Lmxlbmd0aDsgeCsrKQ0KCQkJCQl7DQoJCQkJCQlkb2N1bWVudC5nZXRFbGVt ZW50QnlJZChidXR0b25BcnJheVt4XSkuY2xhc3NOYW1lID0gb25lQnV0dG9uW3hd Ow0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgMjoNCgkJCQkJZm9yICh2 YXIgeCA9IDA7IHggPCBidXR0b25BcnJheS5sZW5ndGg7IHgrKykNCgkJCQkJew0K CQkJCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYnV0dG9uQXJyYXlbeF0pLmNs YXNzTmFtZSA9IHR3b0J1dHRvblt4XTsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJ CQljYXNlIDM6DQoJCQkJCWZvciAodmFyIHggPSAwOyB4IDwgYnV0dG9uQXJyYXku bGVuZ3RoOyB4KyspDQoJCQkJCXsNCgkJCQkJCWRvY3VtZW50LmdldEVsZW1lbnRC eUlkKGJ1dHRvbkFycmF5W3hdKS5jbGFzc05hbWUgPSB0aHJlZUJ1dHRvblt4XTsN CgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQlkZWZhdWx0Og0KCQkJCQlmb3IgKHZh ciB4ID0gMDsgeCA8IGJ1dHRvbkFycmF5Lmxlbmd0aDsgeCsrKQ0KCQkJCQl7DQoJ CQkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChidXR0b25BcnJheVt4XSkuY2xh c3NOYW1lID0gb25lQnV0dG9uW3hdOw0KCQkJCQl9DQoJCQl9DQoJCX0NCgl9DQp9 DQoNCi8vIGZ1bmN0aW9uIGZvciBzd2l0Y2ggdGFibGVzIHdpdGhvdXQgY2xhc3Mg YWN0aXZlDQovLyBAcGFyYW1zCWZpcnN0IHBhcmFtZXRlciBpcyB0aGUgdmlzaWJs ZSBlbGVtZW50LCBvdGhlciBwYXJhbWV0ZXJzIGRlZmluZSB0aGUgaGlkZGVuIGVs ZW1lbnRzDQpmdW5jdGlvbiBzd2l0Y2hFbGVtZW50cygpDQp7DQoJZm9yICh2YXIg aSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspDQoJew0KCQlpZiAoaSA9 PSAwKQ0KCQl7DQoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhcmd1bWVudHNb aV0pLnN0eWxlLmRpc3BsYXkgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYXJn dW1lbnRzW2ldKS5zdHlsZS5kaXNwbGF5ID09ICJibG9jayIgPyAibm9uZSIgOiAi YmxvY2siKTsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCWRvY3VtZW50LmdldEVsZW1l bnRCeUlkKGFyZ3VtZW50c1tpXSkuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCgkJ fQ0KCX0NCn0NCg0KLy8gY3JlYXRlIGNvb2tpZXMgd2l0Y2ggdHJhbnNsYXRlIGRh dGENCmZ1bmN0aW9uIHF1aWNrVHJhbnNsYXRlKGZyb20sdG8sdXJsKQ0Kew0KCXF1 aWNrVHJhbnNsYXRlRGVsZXRlKCk7DQoJDQoJdmFyIHRleHQgPSBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgic2VhcmNoSW5wdXQzIikudmFsdWU7DQoJDQoJTXlDb29r aWUuV3JpdGUoImZyb21MYW5ndWFnZSIsZnJvbSwxKTsNCglNeUNvb2tpZS5Xcml0 ZSgidG9MYW5ndWFnZSIsdG8sMSk7DQoJTXlDb29raWUuV3JpdGUoInRyYW5zbGF0 ZSIsdGV4dCwxKTsNCg0KCXdpbmRvdy5sb2NhdGlvbiA9ICJodHRwOi8vIiArIEdl dFVybEJhc2UoKSArIHVybDsNCn0NCg0KLy8gaWYgZXhpc3RzIGNvb2tpZXMgd2l0 aCB0cmFuc2xhdGUgZGF0YQ0KZnVuY3Rpb24gcXVpY2tUcmFuc2xhdGVSZWFkKCkN CnsNCgl2YXIgZnJvbSA9IE15Q29va2llLlJlYWQoImZyb21MYW5ndWFnZSIpOw0K CXZhciB0byA9IE15Q29va2llLlJlYWQoInRvTGFuZ3VhZ2UiKTsNCgl2YXIgdGV4 dCA9IE15Q29va2llLlJlYWQoInRyYW5zbGF0ZSIpOw0KCQ0KCS8vIGlmIHRleHQg Zm9yIHRyYW5zbGF0aW9uIGlzIG5vdCBpbiB0aGUgY29va2llcywgd2UgdHJ5IHRv IGxvYWQgaXQgZnJvbSB0aGUgc2Vzc2lvbiBnbG9iYWwgdmFyaWFibGVzDQoJaWYg KCh0ZXh0ID09IG51bGwpIHx8ICh0ZXh0ID09ICIiKSkNCgl7DQoJICAgIGlmICh0 cmFuc2xhdGVTZXNzaW9uX2Zyb20gIT0gbnVsbCkgZnJvbSA9IHRyYW5zbGF0ZVNl c3Npb25fZnJvbTsNCgkgICAgaWYgKHRyYW5zbGF0ZVNlc3Npb25fdG8gIT0gbnVs bCkgdG8gPSB0cmFuc2xhdGVTZXNzaW9uX3RvOw0KCSAgICBpZiAodHJhbnNsYXRl U2Vzc2lvbl90ZXh0ICE9IG51bGwpIHRleHQgPSB0cmFuc2xhdGVTZXNzaW9uX3Rl eHQ7DQoJfQ0KCQ0KCWlmICgoZnJvbSAhPSBudWxsKSAmJiAodG8gIT0gbnVsbCkg JiYgKHRleHQgIT0gbnVsbCkpDQoJCXJldHVybiB0cnVlOw0KCWVsc2UNCgkJcmV0 dXJuIGZhbHNlOw0KfQ0KDQovLyBsb2FkIGNvb2tpZXMgYW5kIHRyYW5zbGF0ZQ0K ZnVuY3Rpb24gcXVpY2tUcmFuc2xhdGVMb2FkKCkNCnsNCgl2YXIgZnJvbUxhbmd1 YWdlID0gTXlDb29raWUuUmVhZCgiZnJvbUxhbmd1YWdlIik7DQoJdmFyIHRvTGFu Z3VhZ2UgPSBNeUNvb2tpZS5SZWFkKCJ0b0xhbmd1YWdlIik7DQoJdmFyIHRleHQg PSBNeUNvb2tpZS5SZWFkKCJ0cmFuc2xhdGUiKTsNCgkNCgkvLyBpZiB0ZXh0IGZv ciB0cmFuc2xhdGlvbiBpcyBub3QgaW4gdGhlIGNvb2tpZXMsIHdlIHRyeSB0byBs b2FkIGl0IGZyb20gdGhlIHNlc3Npb24gZ2xvYmFsIHZhcmlhYmxlcw0KCWlmICgo dGV4dCA9PSBudWxsKSB8fCAodGV4dCA9PSAiIikpDQoJew0KCSAgICBpZiAodHJh bnNsYXRlU2Vzc2lvbl9mcm9tICE9IG51bGwpIGZyb21MYW5ndWFnZSA9IHRyYW5z bGF0ZVNlc3Npb25fZnJvbTsNCgkgICAgaWYgKHRyYW5zbGF0ZVNlc3Npb25fdG8g IT0gbnVsbCkgdG9MYW5ndWFnZSA9IHRyYW5zbGF0ZVNlc3Npb25fdG87DQoJICAg IGlmICh0cmFuc2xhdGVTZXNzaW9uX3RleHQgIT0gbnVsbCkgdGV4dCA9IHRyYW5z bGF0ZVNlc3Npb25fdGV4dDsNCgl9DQoJDQoJdmFyIHRleHQydHJhbnNsYXRlID0g ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHQydHJhbnNsYXRlIik7DQoJdGV4 dDJ0cmFuc2xhdGUuaW5uZXJIVE1MID0gdGV4dDsNCgkNCglpZiAoKGZyb21MYW5n dWFnZSA9PSAiZW4iKSB8fCAoZnJvbUxhbmd1YWdlICE9ICJjcyIpKQ0KCXsNCgkJ d2luZG93LnNldFRpbWVvdXQoInRyYW5zbGF0b3Iuc3dpdGNoTGFuZ3VhZ2VzKCki LDEwMCk7DQoJfQ0KCQkNCgl3aW5kb3cuc2V0VGltZW91dCgidHJhbnNsYXRvci50 cmFuc2xhdGUodHJhbnNsYXRvcikiLDEwMDApOw0KCQ0KCXdpbmRvdy5zZXRUaW1l b3V0KCJxdWlja1RyYW5zbGF0ZURlbGV0ZSgpIiwxMTAwKTsNCn0NCg0KLy8gZGVs ZXRlIGFsbCBjb29raWVzIGZvciB0cmFuc2xhdGUNCmZ1bmN0aW9uIHF1aWNrVHJh bnNsYXRlRGVsZXRlKCkNCnsNCglkb2N1bWVudC5jb29raWUgPSBlc2NhcGUoImZy b21MYW5ndWFnZSIpICsgIj0iICsgTXlDb29raWUuUmVhZChlc2NhcGUoImZyb21M YW5ndWFnZSIpKSArICI7cGF0aD0vO2V4cGlyZXM9VGh1LCAwMS1KYW4tMTk3MCAw MDowMDowMSBHTVQ7IjsNCglkb2N1bWVudC5jb29raWUgPSBlc2NhcGUoInRvTGFu Z3VhZ2UiKSArICI9IiArIE15Q29va2llLlJlYWQoZXNjYXBlKCJ0b0xhbmd1YWdl IikpICsgIjtwYXRoPS87ZXhwaXJlcz1UaHUsIDAxLUphbi0xOTcwIDAwOjAwOjAx IEdNVDsiOw0KCWRvY3VtZW50LmNvb2tpZSA9IGVzY2FwZSgidHJhbnNsYXRlIikg KyAiPSIgKyBNeUNvb2tpZS5SZWFkKGVzY2FwZSgidHJhbnNsYXRlIikpICsgIjtw YXRoPS87ZXhwaXJlcz1UaHUsIDAxLUphbi0xOTcwIDAwOjAwOjAxIEdNVDsiOw0K fQ0KDQovLyBkZWxldGUgY29va2llDQpmdW5jdGlvbiBkZWxldGVDb29raWUobmFt ZSkNCnsNCgl2YXIgY29va2llTmFtZSA9IGVzY2FwZShuYW1lKTsNCglkb2N1bWVu dC5jb29raWUgPSBjb29raWVOYW1lICsgIj0iICsgTXlDb29raWUuUmVhZChjb29r aWVOYW1lKSArICI7cGF0aD0vO2V4cGlyZXM9VGh1LCAwMS1KYW4tMTk3MCAwMDow MDowMSBHTVQ7IjsNCn0NCg0KLy8gZnVuY3Rpb24gZm9yIGFkZCBwYWdlIHRvIGZh dm9yaXRlcw0KZnVuY3Rpb24gQWRkVG9GYXZvcml0ZXMob2JqLCB0aXRsZSwgdXJs KQ0KewkNCgl2YXIga2l0TmFtZSA9ICJhcHBsZXdlYmtpdC8iOw0KCXZhciB0ZW1w U3RyID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpOw0KCXZhciBw b3MgPSB0ZW1wU3RyLmluZGV4T2Yoa2l0TmFtZSk7DQoJdmFyIGlzQXBwbGVXZWJr aXQgPSAocG9zICE9IC0xKTsNCgkNCglpZiAod2luZG93LnNpZGViYXIpLy8gTW96 aWxsYSBGaXJlZm94DQoJew0KCQl3aW5kb3cuc2lkZWJhci5hZGRQYW5lbCh0aXRs ZSwgdXJsLCIiKTsNCgkJcmV0dXJuIGZhbHNlOw0KCX0NCgllbHNlIGlmICh3aW5k b3cuZXh0ZXJuYWwpLy8gSUUNCgl7DQoJCXdpbmRvdy5leHRlcm5hbC5BZGRGYXZv cml0ZSggdXJsLCB0aXRsZSk7DQoJCXJldHVybiBmYWxzZTsNCgl9DQoJZWxzZSBp ZiAod2luZG93Lm9wZXJhICYmIHdpbmRvdy5wcmludCkvL09wZXJhDQoJew0KCQlv Ymouc2V0QXR0cmlidXRlKCdocmVmJyx1cmwpOw0KCQlvYmouc2V0QXR0cmlidXRl KCd0aXRsZScsdGl0bGUpOw0KCQlvYmouc2V0QXR0cmlidXRlKCdyZWwnLCdzaWRl YmFyJyk7DQoJCW9iai5jbGljaygpOw0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KCWVs c2UgaWYgKGlzQXBwbGVXZWJraXQpDQoJew0KCQl2YXIgaW5mb3JtYXRpb24gPSB3 aW5kb3cub3BlbigiIiwiX2JsYW5rIiwid2lkdGg9NTAwLGhlaWdodD0yNTAsc2Ny b2xsYmFycz0xIik7DQoJCWluZm9ybWF0aW9uLmRvY3VtZW50LndyaXRlKCI8aHRt bD48aGVhZD48dGl0bGU+UMWZaWTDoW7DrSBuYXNlYWRyZXNhLmN6IGRvIG9ibMOt YmVuw71jaCBwb2xvxb5lazwvdGl0bGU+PC9oZWFkPjxib2R5PiIpOw0KCQlpbmZv cm1hdGlvbi5kb2N1bWVudC53cml0ZSgiPGgxPlDFmWlkw6Fuw60gbmFzZWFkcmVz YS5jeiBkbyBvYmzDrWJlbsO9Y2ggcG9sb8W+ZWs8L2gxPiIpOw0KCQlpbmZvcm1h dGlvbi5kb2N1bWVudC53cml0ZSgiPHA+UHJvIHDFmWlkw6Fuw60gcG9ydMOhbHUg bmFzZWFkcmVzYS5jeiwgemF2xZlldGUgdG90byBva25vIGEgc3Rpc2tuxJt0ZSBr bMOhdmVzb3ZvdSB6a3JhdGt1IENUUkwrRCAiICsNCgkJCQkJCQkJICAgInBvdMOp IGtsaWtuxJt0ZSBuYSB0bGHEjcOtdGtvIFwiQ3JlYXRlIEJvb2ttYXJrXCIuPGJy IC8+VsOhxaEgdMO9bSBuYXNlYWRyZXNhLmN6PC9wPiIpOw0KCQlpbmZvcm1hdGlv bi5kb2N1bWVudC53cml0ZSgiPGRpdiBhbGlnbj1cImNlbnRlclwiPjxmb3JtPjxp bnB1dCB0eXBlPVwiYnV0dG9uXCIgdmFsdWU9XCJaYXbFmcOtdCBva25vXCIgb25D bGljaz1cIndpbmRvdy5jbG9zZSgpXCI+PC9mb3JtPjwvZGl2PiIpOw0KCQlpbmZv cm1hdGlvbi5kb2N1bWVudC53cml0ZSgiPC9ib2R5PjwvaHRtbD4iKTsNCgl9DQp9 DQoNCmZ1bmN0aW9uIFNldEFzSG9tZXBhZ2Uoc291cmNlKQ0Kew0KCWlmIChkb2N1 bWVudC5hbGwpDQoJew0KCSAgICAvLyBmb3IgSW50ZXJuZXQgRXhwbG9yZXINCgkg ICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc291cmNlKTsNCgkJ ZWwuc3R5bGUuYmVoYXZpb3IgPSAndXJsKCNkZWZhdWx0I2hvbWVwYWdlKSc7DQoJ CWVsLnNldEhvbWVQYWdlKCdodHRwOi8vJyArIEdldFVybEJhc2UoKSk7DQoJfQ0K CWVsc2UNCgl7DQoJCXZhciBpbmZvID0gd2luZG93Lm9wZW4oIiIsIl9ibGFuayIs IndpZHRoPTY2MCxoZWlnaHQ9NDcwLHNjcm9sbGJhcnM9MSIpOw0KCQlpbmZvLmRv Y3VtZW50LndyaXRlKCI8aHRtbD48aGVhZD48dGl0bGU+TmFzdGF2ZW7DrSBuYXNl YWRyZXNhLmN6IGpha28gZG9tb3Zza291IGFkcmVzdTwvdGl0bGU+PC9oZWFkPjxi b2R5IHN0eWxlPVwiZm9udC1mYW1pbHk6QXJpYWw7Zm9udC1zaXplOjgwJTtcIj5c biIrDQoJCSI8aDEgc3R5bGU9XCJjb2xvcjojZjA1MDQ2O2ZvbnQtc2l6ZToxOHB4 O2ZvbnQtZmFtaWx5OmFyaWFsLHZlcmRhbmEsdGFob21hO1wiPk5hc3RhdmVuw60g IitHZXRVcmxCYXNlKCkrIiBqYWtvIGRvbW92c2tvdSBhZHJlc3U8L2gxPlxuIisN CgkJDQoJCSI8aDIgc3R5bGU9XCJjb2xvcjojMDAyRTY3O2ZvbnQtc2l6ZToxNXB4 O2ZvbnQtZmFtaWx5OmFyaWFsLHZlcmRhbmEsdGFob21hO1wiPkZpcmVmb3g8L2gy PiIrDQoJCSI8cD5Qcm8gcMWZaWTDoW7DrSBwb3J0w6FsdSBuYXNlYWRyZXNhLmN6 IGpha28gZG9tb3Zza291IGFkcmVzdSBzdGlza27Em3RlIHRsYcSNw610a28gPHN0 cm9uZz5Ow6FzdHJvamU8L3N0cm9uZz4gdiBwYW5lbHUgbsOhc3Ryb2rFryBhIHBv dMOpIHZvbGJ1IDxzdHJvbmc+TW/Fvm5vc3RpPC9zdHJvbmc+LlxuIisNCgkJIjxw Pk90ZXbFmWUgc2UgVsOhbSBuYWLDrWRrYSwga2RlIHYgcG9saSA8c3Ryb25nPkRv bW92c2vDoSBzdHLDoW5rYTwvc3Ryb25nPiBuYXBpxaF0ZSBhZHJlc3UgPHN0cm9u Zz4iK0dldFVybEJhc2UoKSsiPC9zdHJvbmc+LjwvcD48YnIgLz5cbiIrDQoJCQ0K CQkiPGgyIHN0eWxlPVwiY29sb3I6IzAwMkU2Nztmb250LXNpemU6MTVweDtmb250 LWZhbWlseTphcmlhbCx2ZXJkYW5hLHRhaG9tYTtcIj5PcGVyYTwvaDI+IisNCgkJ IjxwPlBybyBwxZlpZMOhbsOtIHBvcnTDoWx1IG5hc2VhZHJlc2EuY3ogamFrbyBk b21vdnNrb3UgYWRyZXN1IHN0aXNrbsSbdGUgdGxhxI3DrXRrbyA8c3Ryb25nPk7D oXN0cm9qZTwvc3Ryb25nPiB2IHBhbmVsdSBuw6FzdHJvasWvIGEgcG90w6kgdm9s YnUgPHN0cm9uZz5OYXN0YXZlbsOtPC9zdHJvbmc+LlxuIisNCgkJIjxwPk90ZXbF mWUgc2UgVsOhbSBuYWLDrWRrYSwga2RlIHYgcG9saSA8c3Ryb25nPkRvbW92c2vD oSBzdHLDoW5rYTwvc3Ryb25nPiBuYXBpxaF0ZSBhZHJlc3UgPHN0cm9uZz4iK0dl dFVybEJhc2UoKSsiPC9zdHJvbmc+LjwvcD48YnIgLz5cbiIrDQoJCQ0KCQkiPGgy IHN0eWxlPVwiY29sb3I6IzAwMkU2Nztmb250LXNpemU6MTVweDtmb250LWZhbWls eTphcmlhbCx2ZXJkYW5hLHRhaG9tYTtcIj5Hb29nbGUgQ2hyb21lPC9oMj4iKw0K CQkiPHA+UHJvIHDFmWlkw6Fuw60gcG9ydMOhbHUgbmFzZWFkcmVzYS5jeiBqYWtv IGRvbW92c2tvdSBhZHJlc3Ugc3Rpc2tuxJt0ZSB0bGHEjcOtdGtvIDxzdHJvbmc+ UMWZaXpwxa9zb2JlbsOtIGEgb3Zsw6Fkw6Fuw60gR29vZ2xlIENocm9tZTwvc3Ry b25nPiwgbmFwcmF2byB2IHBhbmVsdSBuw6FzdHJvasWvIGEgcG90w6kgdm9sYnUg PHN0cm9uZz5Nb8W+bm9zdGk8L3N0cm9uZz4uXG4iKw0KCQkiPHA+T3RldsWZZSBz ZSBWw6FtIG5hYsOtZGthLCBrZGUgdiBwb2xpIDxzdHJvbmc+RG9tb3Zza8OhIHN0 csOhbmthPC9zdHJvbmc+IG5hcGnFoXRlIGFkcmVzdSA8c3Ryb25nPiIrR2V0VXJs QmFzZSgpKyI8L3N0cm9uZz4uPC9wPjxiciAvPlxuIisNCgkJDQoJCSI8ZGl2IGFs aWduPVwiY2VudGVyXCI+PGZvcm0+PGlucHV0IHR5cGU9XCJidXR0b25cIiB2YWx1 ZT1cIlphdsWZw610IG9rbm9cIiBvbkNsaWNrPVwid2luZG93LmNsb3NlKClcIj48 L2Zvcm0+PC9kaXY+XG4iKw0KCQkiPC9ib2R5PjwvaHRtbD4iKTsNCgl9DQp9DQoN Ci8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLy8g UFJPRFVDVCBERVRBSUwgLSBNT1ZJTkcgSU1BR0VTIElOIExJU1QNCi8vID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQp2YXIgY2FuTW92 ZVRvcCA9IGZhbHNlOw0KdmFyIGNhbk1vdmVCb3R0b20gPSBmYWxzZTsNCnZhciBt b3ZpbmdQYXJ0ID0gNTsNCnZhciBtb3ZpbmdTcGVlZCA9IDEwMDsNCg0KZnVuY3Rp b24gU3RhcnRNb3ZlVG9wKGVsZW1lbnRJZCwgcGFyZW50SGVpZ2h0KSB7DQogICAg Y2FuTW92ZVRvcCA9IHRydWU7DQogICAgTW92ZVRvcChlbGVtZW50SWQsIHBhcmVu dEhlaWdodCk7DQp9DQoNCmZ1bmN0aW9uIE1vdmVUb3AoZWxlbWVudElkLCBwYXJl bnRIZWlnaHRTdHJpbmcpIHsNCiAgICBpZiAoY2FuTW92ZVRvcCkNCiAgICB7DQog ICAgICAgIHZhciBvYmogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50 SWQpOw0KICAgICAgICB2YXIgdG9wUG9zID0gMDsNCiAgICAgICAgdmFyIGhlaWdo dCA9IG9iai5vZmZzZXRIZWlnaHQ7DQogICAgICAgIHZhciBwYXJlbnRIZWlnaHQg PSBwYXJzZUludChwYXJlbnRIZWlnaHRTdHJpbmcpOw0KICAgICAgICBpZiAoKG9i ai5zdHlsZS50b3AgIT0gbnVsbCkgJiYgKG9iai5zdHlsZS50b3AgIT0gIiIpKQ0K ICAgICAgICB7DQogICAgICAgICAgICB0b3BQb3MgPSBwYXJzZUludChvYmouc3R5 bGUudG9wLnJlcGxhY2UoInB4IiwiIikucmVwbGFjZSgiICIsIiIpKTsNCiAgICAg ICAgfQ0KICAgICAgICBpZiAoLXRvcFBvcyA8IChoZWlnaHQgLSBwYXJlbnRIZWln aHQpKQ0KICAgICAgICB7DQogICAgICAgICAgICB0b3BQb3MgLT0gbW92aW5nUGFy dDsNCiAgICAgICAgICAgIG9iai5zdHlsZS50b3AgPSB0b3BQb3MgKyJweCI7DQog ICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgiTW92ZVRvcCgnIitlbGVtZW50 SWQrIicsICciK3BhcmVudEhlaWdodFN0cmluZysiJyk7IiwgbW92aW5nU3BlZWQp Ow0KICAgICAgICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgew0KICAgICAgICAg ICAgY2FuTW92ZVRvcCA9IGZhbHNlOw0KICAgICAgICB9DQogICAgfQ0KfQ0KDQpm dW5jdGlvbiBTdG9wTW92ZVRvcChlbGVtZW50SWQpIHsNCiAgICBjYW5Nb3ZlVG9w ID0gZmFsc2U7DQp9DQoNCmZ1bmN0aW9uIFN0YXJ0TW92ZUJvdHRvbShlbGVtZW50 SWQsIHBhcmVudEhlaWdodCkgew0KICAgIGNhbk1vdmVCb3R0b20gPSB0cnVlOw0K ICAgIE1vdmVCb3R0b20oZWxlbWVudElkLCBwYXJlbnRIZWlnaHQpOw0KfQ0KDQpm dW5jdGlvbiBNb3ZlQm90dG9tKGVsZW1lbnRJZCwgcGFyZW50SGVpZ2h0U3RyaW5n KSB7DQogICAgaWYgKGNhbk1vdmVCb3R0b20pDQogICAgew0KICAgICAgICB2YXIg b2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTsNCiAgICAg ICAgdmFyIHRvcFBvcyA9IDA7DQogICAgICAgIHZhciBoZWlnaHQgPSBvYmoub2Zm c2V0SGVpZ2h0Ow0KICAgICAgICB2YXIgcGFyZW50SGVpZ2h0ID0gcGFyc2VJbnQo cGFyZW50SGVpZ2h0U3RyaW5nKTsNCiAgICAgICAgaWYgKChvYmouc3R5bGUudG9w ICE9IG51bGwpICYmIChvYmouc3R5bGUudG9wICE9ICIiKSkNCiAgICAgICAgew0K ICAgICAgICAgICAgdG9wUG9zID0gcGFyc2VJbnQob2JqLnN0eWxlLnRvcC5yZXBs YWNlKCJweCIsIiIpLnJlcGxhY2UoIiAiLCIiKSk7DQogICAgICAgIH0NCiAgICAg ICAgaWYgKHRvcFBvcyA8IDApDQogICAgICAgIHsNCiAgICAgICAgICAgIHRvcFBv cyArPSBtb3ZpbmdQYXJ0Ow0KICAgICAgICAgICAgb2JqLnN0eWxlLnRvcCA9IHRv cFBvcyArInB4IjsNCiAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCJNb3Zl Qm90dG9tKCciK2VsZW1lbnRJZCsiJywgJyIrcGFyZW50SGVpZ2h0U3RyaW5nKyIn KTsiLCBtb3ZpbmdTcGVlZCk7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAg ICAgICB7DQogICAgICAgICAgICBjYW5Nb3ZlQm90dG9tID0gZmFsc2U7DQogICAg ICAgIH0NCiAgICB9DQp9DQoNCmZ1bmN0aW9uIFN0b3BNb3ZlQm90dG9tKGVsZW1l bnRJZCkgew0KICAgIGNhbk1vdmVCb3R0b20gPSBmYWxzZTsNCn0NCg0KLy8gVW5p dmVyemFsIG1ldGhvZCBmb3IgYWRkIGV2ZW50DQpmdW5jdGlvbiBhZGRFdmVudChv YmosIGV2ZW50LCBmdW5jdCkgew0KICBpZiAob2JqLmF0dGFjaEV2ZW50KSB7IC8v SUUNCiAgICBvYmpbJ2UnICsgZXZlbnQgKyBmdW5jdF0gPSBmdW5jdDsNCiAgICBv YmpbJ3gnICsgZXZlbnQgKyBmdW5jdF0gPSBmdW5jdGlvbigpIHsNCiAgICAgICAg ICBvYmpbJ2UnICsgZXZlbnQgKyBmdW5jdF0od2luZG93LmV2ZW50KTsNCiAgICAg ICAgfQ0KICAgIG9iai5hdHRhY2hFdmVudCgnb24nICsgZXZlbnQsIG9ialsneCcg KyBldmVudCArIGZ1bmN0XSk7DQogIH0gZWxzZSAvLyBvdGhlciBicm93c2VyDQog ICAgb2JqLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGZ1bmN0LCBmYWxzZSk7DQp9 DQoNCi8vIE1ldGhvZCBmb3Igd29yayB3aXRoIGNvb2tpZXMgYWRuIGNlbnRyYWwg bmV3cyBtZXNzYWdlDQpmdW5jdGlvbiBIaWRlQW5kU2F2ZVRvQ29va2llKGVsZW1l bnRUeXBlLCBhcnRpY2xlSWQpDQp7DQoJTXlDb29raWUuV3JpdGUoImNlbnRyYWxO ZXdzIiArIGFydGljbGVJZC50b1N0cmluZygpLCAic2F2ZWQiLCAxKTsNCglpZiAo ZWxlbWVudFR5cGUgPT0gMSkNCgl7DQoJICAgIGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCJjZW50cmFsTmV3c1BhbmVsIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsN Cgl9DQoJZWxzZQ0KCXsNCgkgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNl bnRyYWxOZXdzUGFuZWxQcm9tcHQiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0K CX0NCn0NCg0KZnVuY3Rpb24gU2hvd09ySGlkZUNlbnRyYWxNZXNzYWdlcygpDQp7 DQogICAgdmFyIGNvb2tpZVZhbHVlID0gIiI7DQogICAgaWYgKGNlbnRyYWxOZXdz SXRlbUlkID4gLTEpDQogICAgew0KICAgICAgICB2YXIgY29va2llVmFsdWUgPSBN eUNvb2tpZS5SZWFkKCJjZW50cmFsTmV3cyIgKyBjZW50cmFsTmV3c0l0ZW1JZC50 b1N0cmluZygpKTsNCiAgICAgICAgaWYgKChjb29raWVWYWx1ZSA9PSBudWxsKSB8 fCAoY29va2llVmFsdWUgPT0gIiIpKQ0KICAgICAgICB7DQogICAgICAgICAgICBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2VudHJhbE5ld3NQYW5lbCIpLnN0eWxl LmRpc3BsYXkgPSAiYmxvY2siOw0KICAgICAgICB9DQogICAgICAgIGVsc2UgaWYg KGNlbnRyYWxOZXdzUHJvbXB0SXRlbUlkID4gLTEpDQogICAgICAgIHsNCiAgICAg ICAgICAgIGNvb2tpZVZhbHVlID0gTXlDb29raWUuUmVhZCgiY2VudHJhbE5ld3Mi ICsgY2VudHJhbE5ld3NQcm9tcHRJdGVtSWQudG9TdHJpbmcoKSk7DQogICAgICAg ICAgICBpZiAoKGNvb2tpZVZhbHVlID09IG51bGwpIHx8IChjb29raWVWYWx1ZSA9 PSAiIikpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoImNlbnRyYWxOZXdzUGFuZWxQcm9tcHQiKS5zdHlsZS5k aXNwbGF5ID0gImJsb2NrIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAg IH0NCiAgICBlbHNlIGlmIChjZW50cmFsTmV3c1Byb21wdEl0ZW1JZCA+IC0xKQ0K ICAgIHsNCiAgICAgICAgdmFyIGNvb2tpZVZhbHVlID0gTXlDb29raWUuUmVhZCgi Y2VudHJhbE5ld3MiICsgY2VudHJhbE5ld3NQcm9tcHRJdGVtSWQudG9TdHJpbmco KSk7DQogICAgICAgIGlmICgoY29va2llVmFsdWUgPT0gbnVsbCkgfHwgKGNvb2tp ZVZhbHVlID09ICIiKSkNCiAgICAgICAgew0KICAgICAgICAgICAgZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoImNlbnRyYWxOZXdzUGFuZWxQcm9tcHQiKS5zdHlsZS5k aXNwbGF5ID0gImJsb2NrIjsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg0KZnVuY3Rp b24gYWRkRXZlbnQob2JqLCBldmVudCwgZnVuY3QpIHsgIA0KICBpZiAob2JqLmF0 dGFjaEV2ZW50KSB7IC8vSUUgIA0KICAgIG9ialsnZScgKyBldmVudCArIGZ1bmN0 XSA9IGZ1bmN0OyAgDQogICAgb2JqWyd4JyArIGV2ZW50ICsgZnVuY3RdID0gZnVu Y3Rpb24oKSB7ICANCiAgICAgICAgICBvYmpbJ2UnICsgZXZlbnQgKyBmdW5jdF0o d2luZG93LmV2ZW50KTsgIA0KICAgICAgICB9ICANCiAgICBvYmouYXR0YWNoRXZl bnQoJ29uJyArIGV2ZW50LCBvYmpbJ3gnICsgZXZlbnQgKyBmdW5jdF0pOyAgDQog IH0gZWxzZSAvLyBvdGhlciBicm93c2VyICANCiAgICBvYmouYWRkRXZlbnRMaXN0 ZW5lcihldmVudCwgZnVuY3QsIGZhbHNlKTsgIA0KfQ0KDQovKiBmdW5jdGlvbiBm b3IgYWRkIGZpbGUgaW5wdXRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PSovDQoNCmZ1bmN0aW9uIHNob3dOZXh0KGVsKQ0Kew0KCXZh ciBwcmVmaXg7DQoJdmFyIG5hbWU7DQoJdmFyIHNpemUgPSAwOw0KCXZhciBpbnB1 dENvdW50ID0gMDsNCgl2YXIgaW5wdXRWYWx1ZSA9ICIiOw0KCQ0KCXZhciBzb3Vy Y2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbCk7DQoJLy8gYXJyYXkgb2Yg ZmlsZSBpbnB1dHMNCgl2YXIgaW5wdXRBY3R1YWwgPSBzb3VyY2UuZ2V0RWxlbWVu dHNCeVRhZ05hbWUoImlucHV0Iik7DQoNCglpZiAoaW5wdXRBY3R1YWwgIT0gbnVs bCkNCgl7DQoJCXByZWZpeCA9IGlucHV0QWN0dWFsW2lucHV0QWN0dWFsLmxlbmd0 aC0xXS5pZC5zcGxpdCgiXyIpWzBdOw0KCQluYW1lID0gaW5wdXRBY3R1YWxbaW5w dXRBY3R1YWwubGVuZ3RoLTFdLmlkLnNwbGl0KCJfIilbMV07DQoJCWlucHV0Q291 bnQgPSBpbnB1dEFjdHVhbFtpbnB1dEFjdHVhbC5sZW5ndGgtMV0uaWQuc3BsaXQo Il8iKVsyXTsNCgkJc2l6ZSA9IGlucHV0QWN0dWFsW2lucHV0QWN0dWFsLmxlbmd0 aC0xXS5zaXplOw0KCQlpbnB1dFZhbHVlID0gaW5wdXRBY3R1YWxbaW5wdXRBY3R1 YWwubGVuZ3RoLTFdLnZhbHVlOw0KCX0NCgkNCglpZiAoaW5wdXRWYWx1ZSAhPSAi IikNCgl7DQoJCS8vIG5hbWUgZm9yIGZpbGUgaW5wdXRzDQoJCXZhciBpbnB1dE5h bWUgPSBwcmVmaXggKyAiXyIgKyBuYW1lOw0KDQoJCWlmICgoaW5wdXRDb3VudCA9 PSBOYU4pIHx8IChpbnB1dENvdW50ID09IG51bGwpIHx8IChpbnB1dENvdW50ID09 ICIiKSB8fCAoaW5wdXRDb3VudCA9PSAidW5kZWZpbmVkIikpDQoJCXsNCgkJCWlu cHV0Q291bnQgPSAxOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJKytpbnB1dENvdW50 Ow0KCQl9DQoNCgkJdmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi aW5wdXQiKTsNCgkJdmFyIGJyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIi KTsNCgkJaW5wdXQuc2V0QXR0cmlidXRlKCJuYW1lIiwgaW5wdXROYW1lICsgIl8i ICsgaW5wdXRDb3VudCk7DQoJCWlucHV0LnNldEF0dHJpYnV0ZSgiaWQiLCBpbnB1 dE5hbWUgKyAiXyIgKyBpbnB1dENvdW50KTsNCgkJaW5wdXQuc2V0QXR0cmlidXRl KCJ0eXBlIiwgImZpbGUiKTsNCgkJaWYgKHNpemUudG9TdHJpbmcoKSAhPSAiMCIp DQoJCXsNCgkJCWlucHV0LnNldEF0dHJpYnV0ZSgic2l6ZSIsIHNpemUpOw0KCQl9 DQoJCS8vaW5wdXQuc2V0QXR0cmlidXRlKCJvbmNoYW5nZSIsImphdmFzY3JpcHQ6 c2hvd05leHQoJyIgKyBlbCArICInLCciICsgcHJlZml4ICsgIicsJyIgKyBuYW1l ICsgIicpIik7DQoJCQ0KCQlhZGRFdmVudChpbnB1dCwiY2hhbmdlIixmdW5jdGlv bigpDQoJCXsNCgkJCXNob3dOZXh0KGVsKTsNCgkJfSk7DQoNCgkJc291cmNlLmFw cGVuZENoaWxkKGlucHV0KTsNCgkJc291cmNlLmFwcGVuZENoaWxkKGJyKTsNCgl9 DQp9DQoNCi8qIGZ1bmN0aW9uIGZvciBhZGQgZmlsZSBpbnB1dHMgd2l0aCBldmVu dHM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0K DQpmdW5jdGlvbiBzaG93TmV4dFdpdGhFdmVudChlbCkNCnsNCgl2YXIgcHJlZml4 Ow0KCXZhciBuYW1lOw0KCXZhciBzaXplID0gMDsNCgl2YXIgaW5wdXRDb3VudCA9 IDA7DQoJdmFyIGlucHV0VmFsdWUgPSAiIjsNCgkNCgl2YXIgc291cmNlID0gZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWwpOw0KCS8vIGFycmF5IG9mIGZpbGUgaW5w dXRzDQoJdmFyIGlucHV0QWN0dWFsID0gc291cmNlLmdldEVsZW1lbnRzQnlUYWdO YW1lKCJpbnB1dCIpOw0KDQoJaWYgKGlucHV0QWN0dWFsICE9IG51bGwpDQoJew0K CQlwcmVmaXggPSBpbnB1dEFjdHVhbFtpbnB1dEFjdHVhbC5sZW5ndGgtMV0uaWQu c3BsaXQoIl8iKVswXTsNCgkJbmFtZSA9IGlucHV0QWN0dWFsW2lucHV0QWN0dWFs Lmxlbmd0aC0xXS5pZC5zcGxpdCgiXyIpWzFdOw0KCQlpbnB1dENvdW50ID0gaW5w dXRBY3R1YWxbaW5wdXRBY3R1YWwubGVuZ3RoLTFdLmlkLnNwbGl0KCJfIilbMl07 DQoJCXNpemUgPSBpbnB1dEFjdHVhbFtpbnB1dEFjdHVhbC5sZW5ndGgtMV0uc2l6 ZTsNCgkJaW5wdXRWYWx1ZSA9IGlucHV0QWN0dWFsW2lucHV0QWN0dWFsLmxlbmd0 aC0xXS52YWx1ZTsNCgl9DQoJDQoJaWYgKGlucHV0VmFsdWUgIT0gIiIpDQoJew0K CQkvLyBuYW1lIGZvciBmaWxlIGlucHV0cw0KCQl2YXIgaW5wdXROYW1lID0gcHJl Zml4ICsgIl8iICsgbmFtZTsNCg0KCQlpZiAoKGlucHV0Q291bnQgPT0gTmFOKSB8 fCAoaW5wdXRDb3VudCA9PSBudWxsKSB8fCAoaW5wdXRDb3VudCA9PSAiIikgfHwg KGlucHV0Q291bnQgPT0gInVuZGVmaW5lZCIpKQ0KCQl7DQoJCQlpbnB1dENvdW50 ID0gMTsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSsraW5wdXRDb3VudDsNCgkJfQ0K DQoJCXZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7 DQoJCXZhciBiciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIik7DQoJCWlu cHV0LnNldEF0dHJpYnV0ZSgibmFtZSIsIGlucHV0TmFtZSArICJfIiArIGlucHV0 Q291bnQpOw0KCQlpbnB1dC5zZXRBdHRyaWJ1dGUoImlkIiwgaW5wdXROYW1lICsg Il8iICsgaW5wdXRDb3VudCk7DQoJCWlucHV0LnNldEF0dHJpYnV0ZSgidHlwZSIs ICJmaWxlIik7DQoJCWlmIChzaXplLnRvU3RyaW5nKCkgIT0gIjAiKQ0KCQl7DQoJ CQlpbnB1dC5zZXRBdHRyaWJ1dGUoInNpemUiLCBzaXplKTsNCgkJfQ0KCQkvL2lu cHV0LnNldEF0dHJpYnV0ZSgib25jaGFuZ2UiLCJqYXZhc2NyaXB0OnNob3dOZXh0 KCciICsgZWwgKyAiJywnIiArIHByZWZpeCArICInLCciICsgbmFtZSArICInKSIp Ow0KCQkNCgkJYWRkRXZlbnQoaW5wdXQsIm1vdXNlZG93biIsZnVuY3Rpb24oKQ0K CQl7DQoJCQlzaG93TmV4dChlbCk7DQoJCX0pOw0KCQlhZGRFdmVudChpbnB1dCwi Y2hhbmdlIixmdW5jdGlvbigpDQoJCXsNCgkJCUNoZWNrRXh0ZW5zaW9uKHRoaXMp Ow0KCQl9KTsNCg0KCQlzb3VyY2UuYXBwZW5kQ2hpbGQoaW5wdXQpOw0KCQlzb3Vy Y2UuYXBwZW5kQ2hpbGQoYnIpOw0KCX0NCn0NCg0KZnVuY3Rpb24gc2hvd0xvZ2lu SWZyYW1lQW5kU2V0Q29va2llKGlmcmFtZVVybCxyZWRpcmVjdFVybCxzaG93RWxl bWVudCxmb3JtSWQpDQp7DQoJaWYgKChyZWRpcmVjdFVybCAhPSBudWxsKSAmJiAo cmVkaXJlY3RVcmwubGVuZ3RoID4gMSkpDQoJew0KCQlNeUNvb2tpZS5Xcml0ZSgi UmVkaXJlY3RVcmxBZnRlckxvZ2luIixyZWRpcmVjdFVybCwxKTsNCgl9DQoJDQoJ aWYgKChzaG93RWxlbWVudCAhPSBudWxsKSAmJiAoc2hvd0VsZW1lbnQubGVuZ3Ro ID4gMSkpDQoJew0KCQlNeUNvb2tpZS5Xcml0ZSgiU2hvd0VsZW1lbnRBZnRlckxv Z2luIixzaG93RWxlbWVudCwxKTsNCgl9DQoJDQoJaWYgKGZvcm1JZCAhPSBudWxs KQ0KCXsNCgkJTXlDb29raWUuV3JpdGUoImZvcm1TdWJtaXRBZnRlckxvZ2luIixm b3JtSWQsMSk7DQoJfQ0KCQ0KCWlmIChpZnJhbWVVcmwudG9Mb3dlckNhc2UoKS5p bmRleE9mKCJodHRwOi8vIikgPT0gLTEpDQoJew0KCQl0Yl9zaG93KCJQxZlpaGxh xaF0ZSBzZSBwcm9zw61tIiwiaHR0cDovLyIgKyBHZXRVcmxCYXNlKCkgKyBpZnJh bWVVcmwgKyAiP1RCX2lmcmFtZT10cnVlJmhlaWdodD0zMDAmd2lkdGg9NTY1Iik7 DQoJfQ0KCWVsc2UNCgl7DQoJCXRiX3Nob3coIlDFmWlobGHFoXRlIHNlIHByb3PD rW0iLGlmcmFtZVVybCArICI/VEJfaWZyYW1lPXRydWUmaGVpZ2h0PTMwMCZ3aWR0 aD01NjUiKTsNCgl9DQp9DQoNCmZ1bmN0aW9uIHNob3dJZnJhbWVBbmRTZXRDb29r aWUoaWZyYW1lVXJsLHJlZGlyZWN0VXJsLHNob3dFbGVtZW50LGZvcm1JZCxoZWFk VGV4dCkNCnsNCglpZiAoKHJlZGlyZWN0VXJsICE9IG51bGwpICYmIChyZWRpcmVj dFVybC5sZW5ndGggPiAxKSkNCgl7DQoJCU15Q29va2llLldyaXRlKCJSZWRpcmVj dFVybEFmdGVyTG9naW4iLHJlZGlyZWN0VXJsLDEpOw0KCX0NCgkNCglpZiAoKHNo b3dFbGVtZW50ICE9IG51bGwpICYmIChzaG93RWxlbWVudC5sZW5ndGggPiAxKSkN Cgl7DQoJCU15Q29va2llLldyaXRlKCJTaG93RWxlbWVudEFmdGVyTG9naW4iLHNo b3dFbGVtZW50LDEpOw0KCX0NCgkNCglpZiAoZm9ybUlkICE9IG51bGwpDQoJew0K CQlNeUNvb2tpZS5Xcml0ZSgiZm9ybVN1Ym1pdEFmdGVyTG9naW4iLGZvcm1JZCwx KTsNCgl9DQoJDQoJaWYgKGlmcmFtZVVybC50b0xvd2VyQ2FzZSgpLmluZGV4T2Yo Imh0dHA6Ly8iKSA9PSAtMSkNCgl7DQoJCXRiX3Nob3coaGVhZFRleHQsImh0dHA6 Ly8iICsgR2V0VXJsQmFzZSgpICsgaWZyYW1lVXJsICsgIj9UQl9pZnJhbWU9dHJ1 ZSZoZWlnaHQ9MzAwJndpZHRoPTU2NSIpOw0KCX0NCgllbHNlDQoJew0KCQl0Yl9z aG93KGhlYWRUZXh0LGlmcmFtZVVybCArICI/VEJfaWZyYW1lPXRydWUmaGVpZ2h0 PTMwMCZ3aWR0aD01NjUiKTsNCgl9DQp9DQoNCmZ1bmN0aW9uIHNob3dNb2RhbElm cmFtZShpZnJhbWVVcmwsaGVhZGVyLHdpZHRoLGhlaWdodCkNCnsNCgloZWlnaHQg PSAoaGVpZ2h0ICE9IHVuZGVmaW5lZCA/IGhlaWdodCA6IDMwMCk7DQoJd2lkdGgg PSAod2lkdGggIT0gdW5kZWZpbmVkID8gd2lkdGggOiA1NjUpOw0KCQ0KCWlmIChp ZnJhbWVVcmwudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJodHRwOi8vIikgPT0gLTEp DQoJew0KCQl0Yl9zaG93KGhlYWRlciwiaHR0cDovLyIgKyBHZXRVcmxCYXNlKCkg KyBpZnJhbWVVcmwgKyAiP1RCX2lmcmFtZT10cnVlJmhlaWdodD0iICsgaGVpZ2h0 ICsgIiZ3aWR0aD0gIiArIHdpZHRoKTsNCgl9DQoJZWxzZQ0KCXsNCgkJdGJfc2hv dyhoZWFkZXIsaWZyYW1lVXJsICsgIj9UQl9pZnJhbWU9dHJ1ZSZoZWlnaHQ9MzAw JndpZHRoPTU2NSIpOw0KCX0NCn0NCg0KZnVuY3Rpb24gc2VhcmNoVXNlclBhZ2Uo aWZyYW1lVXJsLHJlZGlyZWN0VXJsKQ0Kew0KCWlmICgocmVkaXJlY3RVcmwgIT0g bnVsbCkgJiYgKHJlZGlyZWN0VXJsLmxlbmd0aCA+IDEpKQ0KCXsNCgkJTXlDb29r aWUuV3JpdGUoIlJlZGlyZWN0VXJsQWZ0ZXJMb2dpbiIscmVkaXJlY3RVcmwsMSk7 DQoJfQ0KCQ0KCWlmIChpZnJhbWVVcmwudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJo dHRwOi8vIikgPT0gLTEpDQoJew0KCQl0Yl9zaG93KCJWeWhsZWRhbsOtIHXFvml2 YXRlbMOpIiwiaHR0cDovLyIgKyBHZXRVcmxCYXNlKCkgKyBpZnJhbWVVcmwgKyAi P1RCX2lmcmFtZT10cnVlJmhlaWdodD01OTAmd2lkdGg9NTUyIik7DQoJfQ0KCWVs c2UNCgl7DQoJCXRiX3Nob3coIlZ5aGxlZGFuw60gdcW+aXZhdGVsw6kiLGlmcmFt ZVVybCArICI/VEJfaWZyYW1lPXRydWUmaGVpZ2h0PTU0MCZ3aWR0aD01NTIiKTsN Cgl9DQp9DQoNCmZ1bmN0aW9uIGlzQ29va2llRXhpc3QobmFtZSkNCnsJDQoJdmFy IGNvb2tpZSA9IE15Q29va2llLlJlYWQobmFtZSk7DQoJDQoJaWYgKGNvb2tpZSAh PSBudWxsKQ0KCQlyZXR1cm4gdHJ1ZTsNCgllbHNlDQoJCXJldHVybiBmYWxzZTsN Cn0NCg0KZnVuY3Rpb24gbG9hZFBhZ2VWaWV3KG9iaix1cmwpDQp7DQoJdmFyIGVs ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob2JqKTsNCgllbC5zcmMgPSB1cmw7 DQp9DQoNCi8qIGZ1bmN0aW9ucyBmb3Igb3BlcmF0ZSB3aXRoIGNvb2tpZXMgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQoNCmZ1 bmN0aW9uIGNyZWF0ZUNvb2tpZShuYW1lLHZhbHVlLGRheXMpIHsNCglpZiAoZGF5 cykgew0KCQl2YXIgZGF0ZSA9IG5ldyBEYXRlKCk7DQoJCWRhdGUuc2V0VGltZShk YXRlLmdldFRpbWUoKSsoZGF5cyoyNCo2MCo2MCoxMDAwKSk7DQoJCXZhciBleHBp cmVzID0gIjsgZXhwaXJlcz0iK2RhdGUudG9HTVRTdHJpbmcoKTsNCgl9DQoJZWxz ZSB2YXIgZXhwaXJlcyA9ICIiOw0KCWRvY3VtZW50LmNvb2tpZSA9IG5hbWUrIj0i K3ZhbHVlK2V4cGlyZXMrIjsgcGF0aD0vIjsNCn0NCg0KZnVuY3Rpb24gcmVhZENv b2tpZShuYW1lKSB7DQoJdmFyIG5hbWVFUSA9IG5hbWUgKyAiPSI7DQoJdmFyIGNh ID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7Jyk7DQoJZm9yKHZhciBpPTA7aSA8 IGNhLmxlbmd0aDtpKyspIHsNCgkJdmFyIGMgPSBjYVtpXTsNCgkJd2hpbGUgKGMu Y2hhckF0KDApPT0nICcpIGMgPSBjLnN1YnN0cmluZygxLGMubGVuZ3RoKTsNCgkJ aWYgKGMuaW5kZXhPZihuYW1lRVEpID09IDApIHJldHVybiBjLnN1YnN0cmluZyhu YW1lRVEubGVuZ3RoLGMubGVuZ3RoKTsNCgl9DQoJcmV0dXJuIG51bGw7DQp9DQo= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=translator-ajax.js Content-Type: application/x-javascript; name=translator-ajax.js Content-Location: http://teplice.naseadresa.cz/0000-Global/js/translator-ajax.js Content-Transfer-Encoding: Base64 Ly8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vIEFKQVggZnVuY3Rpb25z DQovLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KDQp2YXIgeG1saHR0cCA9 IG51bGw7DQoNCnZhciBhamF4UmVzdWx0c1hNTCA9IG51bGw7DQp2YXIgYWpheFJl c3VsdHNUZXh0ID0gIiI7DQp2YXIgYWpheFJlcXVlc3RNZXRob2QgPSAiR0VUIjsN Cg0KdmFyIGFqYXhSZXN1bHRSZWFkeSA9IGZhbHNlOw0KdmFyIGFqYXhMb2FkaW5n RGF0YSA9IGZhbHNlOw0KDQpmdW5jdGlvbiBBamF4VHJhbnNmZXIodXJsKQ0Kew0K ICAgIGFqYXhMb2FkaW5nRGF0YSA9IHRydWU7DQogICAgYWpheFJlc3VsdFJlYWR5 ID0gZmFsc2U7DQogICAgYWpheFJlc3VsdHNYTUwgPSBudWxsOw0KICAgIGFqYXhS ZXN1bHRzVGV4dCA9ICIiOw0KDQogICAgLy8gc2V0dGluZyByaWdodCBvYmplY3Qg YWNjb3JkaW5nIHRvIHdlYiBicm93c2VyDQogICAgaWYgKHdpbmRvdy5YTUxIdHRw UmVxdWVzdCkNCiAgICB7DQogICAgICAgIHhtbGh0dHAgPSBuZXcgWE1MSHR0cFJl cXVlc3QoKTsgLy8gY29kZSBmb3IgTW96aWxsYSwgZXRjLg0KICAgIH0gDQogICAg ZWxzZSANCiAgICB7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICB4bWxodHRw ID0gbmV3IEFjdGl2ZVhPYmplY3QoIk1zeG1sMi5YTUxIVFRQIik7DQogICAgICAg IH0gY2F0Y2ggKGVycm9yKSB7DQogICAgICAgICAgICB4bWxodHRwID0gbmV3IEFj dGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIik7DQogICAgICAgIH0NCiAg ICB9DQoNCiAgICBpZiAoeG1saHR0cCAhPSBudWxsKSANCiAgICB7DQogICAgICAg IC8vIHNldHRpbmcgdGhlIGFjdGlvbiBhZnRlciByZWNlaXZpbmcgZGF0YQ0KICAg ICAgICB4bWxodHRwLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkNCiAg ICAgICAgeyANCiAgICAgICAgICAgIGlmICh4bWxodHRwLnJlYWR5U3RhdGUgPT0g NCkgIC8vIGNoZWNrIGlmIHJlY2VpdmluZyBhY3Rpb24gaXMgY29tcGxldGVkDQog ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYoeG1saHR0cC5zdGF0dXMg PT0gMjAwKSAvLyBjaGVjayBpZiB0aGVyZSBpcyBub3QgYW55IGVycm9yDQogICAg ICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAvLyAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioNCiAgICAgICAgICAgICAgICAgICAgLy8gd29y ayB3aXRoIHJlY2VpdmVkIGRhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgICAgICAgICAgICAgICAg IGFqYXhSZXN1bHRzWE1MID0geG1saHR0cC5yZXNwb25zZVhNTDsNCiAgICAgICAg ICAgICAgICAgICAgYWpheFJlc3VsdHNUZXh0ID0geG1saHR0cC5yZXNwb25zZVRl eHQ7DQogICAgICAgICAgICAgICAgICAgIGFqYXhSZXN1bHRSZWFkeSA9IHRydWU7 DQogICAgICAgICAgICAgICAgICAgIGFqYXhMb2FkaW5nRGF0YSA9IGZhbHNlOw0K ICAgICAgICAgICAgICAgICAgICAvLyBlbmQgb2Ygd29yayB3aXRoIHJlY2VpdmVk IGRhdGEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCiAgICAgICAgICAgICAgICAgICAgLy8gKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg IGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIC8v YWxlcnQoIlByb2JsZW0gcmV0cmlldmluZyBYTUwgZGF0YS4iKTsNCiAgICAgICAg ICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH07DQoJCXhtbGh0dHAu b3BlbihhamF4UmVxdWVzdE1ldGhvZCwgdXJsICsgKHVybC5pbmRleE9mKCI/Iikg PiAtMT8iJiI6Ij8iKSArImRzYXNma2l1Z2JnYWR3cXRydXpvenM9IiArIE1hdGgu cmFuZG9tKCkudG9TdHJpbmcoKSwgdHJ1ZSk7DQogICAgICAgIHhtbGh0dHAuc2Vu ZChudWxsKTsNCiAgICB9DQogICAgZWxzZSBhbGVydCgiWW91ciBicm93c2VyIGRv ZXMgbm90IHN1cHBvcnQgWE1MSFRUUC4iKTsNCn0NCg0KLy8gKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioNCi8vIExPQUQgWE1MIERBVEENCi8vICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqDQoNCg0KdmFyIGZyb21MYW5ndWFnZTsNCnZhciB0b0xh bmd1YWdlOw0KDQpmdW5jdGlvbiBnZXRMYW5ndWFnZUZyb20oZnJvbSkNCnsNCglm cm9tTGFuZ3VhZ2UgPSBmcm9tOw0KfQ0KDQpmdW5jdGlvbiBnZXRMYW5ndWFnZVRv KHRvKQ0Kew0KCXRvTGFuZ3VhZ2UgPSB0bzsNCn0NCg0KZnVuY3Rpb24gTG9hZERh dGEoKQ0Kew0KICAgIGlmICghYWpheExvYWRpbmdEYXRhKQ0KICAgIHsNCiAgICAg ICAgQWpheFRyYW5zZmVyKCJodHRwOi8vIiArIEdldFVybEJhc2UoKSArICIvZmls ZXMvZGF0YS90cmFuc2xhdG9yLnhtbCIpOw0KICAgICAgICBMb2FkRGF0YVByb2Nl c3MoKTsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAgd2luZG93LnNl dFRpbWVvdXQoIkxvYWREYXRhKCk7IiwgMTApOw0KICAgIH0NCn0NCg0KZnVuY3Rp b24gTG9hZERhdGFQcm9jZXNzKCkNCnsNCiAgICBpZiAoIWFqYXhSZXN1bHRSZWFk eSkNCiAgICB7DQogICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCJMb2FkRGF0YVBy b2Nlc3MoKTsiLCAxMCk7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7CQ0KCQkvL2dl dHRpbmcgZGF0YQ0KCQl2YXIgdHJhbnNsYXRvciA9IGFqYXhSZXN1bHRzWE1MLmdl dEVsZW1lbnRzQnlUYWdOYW1lKCJ0cmFuc2xhdG9yIik7DQoJCXZhciB2YWx1ZSA9 IG5ldyBBcnJheSgpOw0KCQl2YXIgdGV4dCA9IG5ldyBBcnJheSgpOw0KCQkNCgkJ ZGVsT3B0cyhmcm9tTGFuZ3VhZ2UpOw0KCQlkZWxPcHRzKHRvTGFuZ3VhZ2UpOw0K CQkNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCB0cmFuc2xhdG9yLmxlbmd0aDsgaSsr KQ0KCQl7DQoJCQl2YXIgZGVmYXVsdExhbmd1YWdlRnJvbSA9IHRyYW5zbGF0b3Jb aV0uYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oImRlZmF1bHRfZnJvbSIpLm5vZGVW YWx1ZTsNCgkJCXZhciBkZWZhdWx0TGFuZ3VhZ2VUbyA9IHRyYW5zbGF0b3JbaV0u YXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oImRlZmF1bHRfdG8iKS5ub2RlVmFsdWU7 DQoNCgkJCXZhciBpdGVtcyA9IGFqYXhSZXN1bHRzWE1MLmdldEVsZW1lbnRzQnlU YWdOYW1lKCJpdGVtIik7DQoJCQkNCgkJCWZvciAodmFyIHkgPSAwOyB5IDwgaXRl bXMubGVuZ3RoOyB5KyspDQoJCQl7DQoJCQkJdmFsdWUucHVzaChpdGVtc1t5XS5h dHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidmFsdWUiKS5ub2RlVmFsdWUpOw0KCQkJ CXRleHQucHVzaChpdGVtc1t5XS5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgidGV4 dCIpLm5vZGVWYWx1ZSk7DQoJCQl9DQoJCX0NCgkJDQoJCXNvcnRPcHRzKGZyb21M YW5ndWFnZSx0ZXh0LHZhbHVlLGRlZmF1bHRMYW5ndWFnZUZyb20pOw0KCQlzb3J0 T3B0cyh0b0xhbmd1YWdlLHRleHQsdmFsdWUsZGVmYXVsdExhbmd1YWdlVG8pOw0K DQogICAgICAgIGFqYXhSZXN1bHRSZWFkeSA9IGZhbHNlOw0KICAgICAgICBhamF4 TG9hZGluZ0RhdGEgPSBmYWxzZTsNCg0KICAgIH0NCn0NCg0KZnVuY3Rpb24gc29y dE9wdHMoc291cmNlLHRleHQsdmFsdWUsc2VsZWN0ZWQpDQp7CQ0KCXZhciByZXN1 bHQgPSBuZXcgQXJyYXkoKTsNCglmb3IgKHZhciBpID0gMDsgaSA8IHRleHQubGVu Z3RoOyBpKyspDQoJew0KCQlyZXN1bHQucHVzaCh0ZXh0W2ldICsgIj0iICsgdmFs dWVbaV0pOw0KCX0NCglyZXN1bHQuc29ydCgpOw0KCQ0KCXZhciBsYXN0ID0gcmVz dWx0W3Jlc3VsdC5sZW5ndGgtMV0uc3BsaXQoIj0iKVswXTsNCgl2YXIgaW5kZXgg PSAwOw0KCWZvciAodmFyIGwgaW4gcmVzdWx0KQ0KCXsNCgkJdmFyIHZhbHVlU29y dCA9IHJlc3VsdFtsXS5zcGxpdCgiPSIpWzFdOw0KCQl2YXIgdGV4dFNvcnQgPSBy ZXN1bHRbbF0uc3BsaXQoIj0iKVswXTsNCgkJYWRkT3B0cyhzb3VyY2UsdGV4dFNv cnQsdmFsdWVTb3J0LHNlbGVjdGVkLGxhc3QsaW5kZXgpOw0KCQlpbmRleCsrOw0K CX0NCn0NCg0KdmFyIHNtYXphdCA9IHRydWU7DQp2YXIgb3Bha292YXQgPSB0cnVl Ow0KDQpmdW5jdGlvbiBhZGRPcHRzKHNvdXJjZSx0ZXh0LHZhbHVlLHNlbGVjdGVk LGxhc3QsaW5kZXgpDQp7DQoJdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoc291cmNlKTsNCgl2YXIgcGFyZW50ID0gZWwucGFyZW50Tm9kZTsNCgl2YXIg dWwgPSBwYXJlbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInVsIik7DQoJdmFyIG9w dGlvbnMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsNCglvcHRp b25zLnRleHQgPSB0ZXh0Ow0KCW9wdGlvbnMudmFsdWUgPSB2YWx1ZTsNCgl2YXIg ZGVmYXVsdExhbmd1YWdlOw0KCWlmICh2YWx1ZSA9PSBzZWxlY3RlZCkNCgl7DQoJ CW9wdGlvbnMuc2VsZWN0ZWQgPSB0cnVlOw0KCQlkZWZhdWx0TGFuZ3VhZ2UgPSB0 ZXh0Ow0KCX0NCgllbC5vcHRpb25zLmFkZChvcHRpb25zKTsNCglpZiAobGFzdCA9 PSB0ZXh0KQ0KCQlvcGFrb3ZhdCA9IHRydWU7DQoJaWYgKHNtYXphdCkgew0KCQlk ZWxMaXN0cyh1bFswXSk7DQoJfQ0KCWFkZExpc3RzKHNvdXJjZSx0ZXh0LGRlZmF1 bHRMYW5ndWFnZSxsYXN0LGluZGV4KTsNCn0NCg0KZnVuY3Rpb24gYWRkTGlzdHMo c291cmNlLHRleHQsc2VsZWN0ZWQsbGFzdCxpbmRleCkNCnsNCgl2YXIgb2JqID0g ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc291cmNlKTsNCgl2YXIgb3B0cyA9IG9i ai5vcHRpb25zOw0KCXZhciBwYXJlbnQgPSBvYmoucGFyZW50Tm9kZTsNCgl2YXIg dWwgPSBwYXJlbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInVsIik7DQoJdmFyIGFj dHVhbCA9IHBhcmVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic3Ryb25nIik7DQoJ Zm9yICh2YXIgaSA9IDA7IGkgPCB1bC5sZW5ndGg7IGkrKykNCgl7DQoJCXZhciBs aSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7DQoJCXZhciB0eHQgPSBk b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KTsNCgkJbGkuYXBwZW5kQ2hpbGQo dHh0KTsNCgkJbGkuc2VsZWN0SUQgPSBvYmouaWQ7DQoJCWxpLnNlbEluZGV4ID0g b3B0c1tpbmRleF0uaW5kZXg7DQoJCWxpLm9uY2xpY2sgPSBmdW5jdGlvbigpDQoJ CXsNCgkJCXNlbGVjdE1lKHRoaXMpOw0KCQkJdWxbMF0uc3R5bGUuZGlzcGxheSA9 ICJub25lIjsNCgkJCXVsWzBdLnN0eWxlLnpJbmRleCA9IDA7DQoJCQl1bFswXS5w YXJlbnROb2RlLnN0eWxlLnpJbmRleCA9IDA7DQoJCX0NCgkJdWxbaV0uYXBwZW5k Q2hpbGQobGkpOw0KCQlpZiAodGV4dCA9PSBzZWxlY3RlZCkNCgkJew0KCQkJbGku Y2xhc3NOYW1lID0gJ3NlbGVjdGVkJzsNCgkJCWFjdHVhbFswXS5pbm5lckhUTUwg PSB0ZXh0Ow0KCQl9DQoJCWlmICh3aW5kb3cuYXR0YWNoRXZlbnQpDQoJCXsNCgkJ CWxpLm9ubW91c2VvdmVyID0gZnVuY3Rpb24oKQ0KCQkJew0KCQkJCXRoaXMuY2xh c3NOYW1lICs9ICcgaG92ZXInOw0KCQkJfQ0KCQkJbGkub25tb3VzZW91dCA9IGZ1 bmN0aW9uKCkNCgkJCXsNCgkJCQl0aGlzLmNsYXNzTmFtZSA9IHRoaXMuY2xhc3NO YW1lLnJlcGxhY2UobmV3IFJlZ0V4cCgiIGhvdmVyXFxiIiksICcnKTsNCgkJCX0N CgkJfQ0KCQlzbWF6YXQgPSBmYWxzZTsNCgkJaWYgKGxhc3QgPT0gdGV4dCkNCgkJ ew0KCQkJaWYgKG9wYWtvdmF0ID09IHRydWUpDQoJCQl7DQoJCQkJc21hemF0ID0g dHJ1ZTsNCgkJCX0NCgkJfQ0KCQlvcGFrb3ZhdCA9IGZhbHNlOw0KCX0NCn0NCg0K ZnVuY3Rpb24gZGVsTGlzdHMoc291cmNlKQ0Kew0KCXdoaWxlKHNvdXJjZS5oYXND aGlsZE5vZGVzKCkpDQoJew0KCQlzb3VyY2UucmVtb3ZlQ2hpbGQoc291cmNlLmxh c3RDaGlsZCk7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBkZWxPcHRzKHNvdXJjZSkNCnsN Cgl2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzb3VyY2UpOw0KCXZh ciBvcHRzID0gZWwub3B0aW9uczsNCglmb3IgKHZhciBpID0gMDsgaSA8IG9wdHMu bGVuZ3RoOyBpKyspDQoJew0KCQlpZiAob3B0c1tpXS52YWx1ZSA9PSAiIikNCgkJ ew0KCQkJZWwucmVtb3ZlQ2hpbGQob3B0c1tpXSk7DQoJCX0NCgl9DQp9 ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=google-translator.js Content-Type: application/x-javascript; charset=utf-8; name=google-translator.js Content-Location: http://teplice.naseadresa.cz/0000-Global/js/google-translator.js Content-Transfer-Encoding: Base64 77u/Ly8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vIEZvcm0gdHJhbnNs YXRpb24gY2xhc3MNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyAt IHNvdXJjZUVsZW1lbnRJZCAgICAgICAgICAgICAgICAgOiBzdHJpbmcgIC0gSUQg b2YgdGV4dCB0byBiZSB0cmFuc2xhdGVkDQovLyAtIHJlc3VsdEVsZW1lbnRJZCAg ICAgICAgICAgICAJIDogc3RyaW5nICAtIElEIG9mIGVsZW1lbnQgd2hlcmUgaXMg cmVzdWx0IG9mIHRyYW5zbGF0ZQ0KLy8gLSBsb2FkZXJFbGVtZW50SWQgICAgICAg ICAgCQkgOiBzdHJpbmcgIC0gSUQgb2YgZWxlbWVudCB3aGVyZSBpcyBpbmZvIG9m IHRyYW5zbGF0ZQ0KLy8gLSBsYW5ndWFnZUZyb21FbGVtZW50SWQgICAgICAgICAg IDogc3RyaW5nICAtIElEIG9mIHNlbGVjdCB3aGVyZSB0aGUgbGFuZ3VhZ2VzIGZy b20gdHJhbnNsYXRlDQovLyAtIGxhbmd1YWdlVG9FbGVtZW50SWQgICAgICAgICAg CSA6IHN0cmluZyAgLSBJRCBvZiBzZWxlY3Qgd2hlcmUgdGhlIGxhbmd1YWdlcyB0 byB0cmFuc2xhdGUNCi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpmdW5j dGlvbiBHb29nbGVUcmFuc2xhdG9yKHNvdXJjZUVsZW1lbnRJZCwgcmVzdWx0RWxl bWVudElkLCBsb2FkZXJFbGVtZW50SWQsIGxhbmd1YWdlRnJvbUVsZW1lbnRJZCwg bGFuZ3VhZ2VUb0VsZW1lbnRJZCkNCnsNCgkNCgkvLyBwcm9wZXJ0aWVzDQoJdGhp cy5vcHRpb25zID0gDQoJew0KCQlzb3VyY2UgOiBudWxsLA0KCQlyZXN1bHQgOiBu dWxsLA0KCQlsb2FkZXIgOiBudWxsLA0KCQlsYW5ndWFnZUZyb21TZWxlY3QgOiBu dWxsLA0KCQlsYW5ndWFnZVRvU2VsZWN0IDogbnVsbA0KCX0NCgkNCgkvLyBzZXR0 aW5nIHByb3BlcnRpZXMgZnJvbSB0aGUgY29uc3RydWN0b3INCgl0aGlzLm9wdGlv bnMuc291cmNlID0gKHNvdXJjZUVsZW1lbnRJZCAhPSBudWxsID8gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoc291cmNlRWxlbWVudElkKSA6IG51bGwpOw0KCXRoaXMu b3B0aW9ucy5yZXN1bHQgPSAocmVzdWx0RWxlbWVudElkICE9IG51bGwgPyBkb2N1 bWVudC5nZXRFbGVtZW50QnlJZChyZXN1bHRFbGVtZW50SWQpIDogbnVsbCk7DQoJ dGhpcy5vcHRpb25zLmxvYWRlciA9IChsb2FkZXJFbGVtZW50SWQgIT0gbnVsbCA/ IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGxvYWRlckVsZW1lbnRJZCkgOiBudWxs KTsNCgl0aGlzLm9wdGlvbnMubGFuZ3VhZ2VGcm9tU2VsZWN0ID0gKGxhbmd1YWdl RnJvbUVsZW1lbnRJZCAhPSBudWxsID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo bGFuZ3VhZ2VGcm9tRWxlbWVudElkKSA6IG51bGwpOw0KCXRoaXMub3B0aW9ucy5s YW5ndWFnZVRvU2VsZWN0ID0gKGxhbmd1YWdlVG9FbGVtZW50SWQgIT0gbnVsbCA/ IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGxhbmd1YWdlVG9FbGVtZW50SWQpIDog bnVsbCk7DQoJDQoJdGhpcy5vcHRpb25zLmxvYWRlci5zdHlsZS5kaXNwbGF5ID0g Im5vbmUiOw0KCXRoaXMub3B0aW9ucy5yZXN1bHQuc3R5bGUuZGlzcGxheSA9ICJu b25lIjsNCgkNCgkvLyBtZXRob2RzIHB1YmxpYyBpZGVudGlmaWNhdGlvbg0KCXRo aXMudHJhbnNsYXRlID0gdHJhbnNsYXRlOw0KCXRoaXMuc3dpdGNoTGFuZ3VhZ2Vz ID0gc3dpdGNoTGFuZ3VhZ2VzOw0KCXRoaXMuZmlsbExhbmd1YWdlcyA9IGZpbGxM YW5ndWFnZXM7DQoJdGhpcy5zd2l0Y2hMYW5ndWFnZXNMaSA9IHN3aXRjaExhbmd1 YWdlc0xpOw0KCQ0KCS8vIGdsb2JhbCB2YXJpYWJsZXMNCgl2YXIgbGFuZ3VhZ2Vz QXJyYXkgPSBuZXcgQXJyYXkoKTsNCgl2YXIgbGFuZ3VhZ2VzU2hvcnRjdXRzQXJy YXkgPSBuZXcgQXJyYXkoKTsNCgl2YXIgaW5kZXggPSAwOw0KCQkNCgkvLyBmaWxs IHNlbGVjdHMNCglmdW5jdGlvbiBmaWxsTGFuZ3VhZ2VzKCkNCgl7DQoJCWdldExh bmd1YWdlRnJvbShsYW5ndWFnZUZyb21FbGVtZW50SWQpOw0KCQlnZXRMYW5ndWFn ZVRvKGxhbmd1YWdlVG9FbGVtZW50SWQpOw0KCQlMb2FkRGF0YSgpOw0KCQkNCgkJ dmFyIGlzX2Nvb2tpZSA9IHF1aWNrVHJhbnNsYXRlUmVhZCgpOw0KCQlpZiAoaXNf Y29va2llID09IHRydWUpDQoJCXsNCgkJCXF1aWNrVHJhbnNsYXRlTG9hZCgpOw0K CQl9DQoJfQ0KCQ0KCS8vIHRyYW5zbGF0ZXMgdGV4dCBieSBzZXR0aW5ncw0KCWZ1 bmN0aW9uIHRyYW5zbGF0ZShvYmplY3RJbnN0YW5jZSkNCgl7DQoJCXRoaXMub3B0 aW9ucy5sb2FkZXIuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7DQoJCXRoaXMub3B0 aW9ucy5sb2FkZXIuaW5uZXJIVE1MID0gIjxzdHJvbmc+cMWZZWtsw6Fkw6FtLi4u PC9zdHJvbmc+IjsNCgkJZ29vZ2xlLmxhbmd1YWdlLnRyYW5zbGF0ZSh0aGlzLm9w dGlvbnMuc291cmNlLnZhbHVlLCB0aGlzLm9wdGlvbnMubGFuZ3VhZ2VGcm9tU2Vs ZWN0LnZhbHVlLCB0aGlzLm9wdGlvbnMubGFuZ3VhZ2VUb1NlbGVjdC52YWx1ZSwg ZnVuY3Rpb24ocmVzdWx0KQ0KCQl7DQoJCQlpZiAoIXJlc3VsdC5lcnJvcikNCgkJ CXsNCgkJCQlvYmplY3RJbnN0YW5jZS5vcHRpb25zLnJlc3VsdC5pbm5lckhUTUwg PSByZXN1bHQudHJhbnNsYXRpb247DQoJCQl9DQoJCQlpZiAocmVzdWx0KQ0KCQkJ ew0KCQkJCW9iamVjdEluc3RhbmNlLm9wdGlvbnMubG9hZGVyLmlubmVySFRNTCA9 ICI8c3BhbiBjbGFzcz1cImJsdWVcIj5QxZlla2xhZDogPC9zcGFuPjxzcGFuIGNs YXNzPVwiZ3JleVwiPiIgKyANCgkJCQkJb2JqZWN0SW5zdGFuY2Uub3B0aW9ucy5s YW5ndWFnZUZyb21TZWxlY3Qub3B0aW9uc1tvYmplY3RJbnN0YW5jZS5vcHRpb25z Lmxhbmd1YWdlRnJvbVNlbGVjdC5zZWxlY3RlZEluZGV4XS50ZXh0ICsNCgkJCQkJ IiAmcmFxdW87ICIgKyBvYmplY3RJbnN0YW5jZS5vcHRpb25zLmxhbmd1YWdlVG9T ZWxlY3Qub3B0aW9uc1tvYmplY3RJbnN0YW5jZS5vcHRpb25zLmxhbmd1YWdlVG9T ZWxlY3Quc2VsZWN0ZWRJbmRleF0udGV4dCArICI8L3NwYW4+IjsNCgkJCQlvYmpl Y3RJbnN0YW5jZS5vcHRpb25zLnJlc3VsdC5zdHlsZS5kaXNwbGF5ID0gImJsb2Nr IjsNCgkJCX0NCgkJfSk7DQoJfQ0KDQoJLy8gc3dpdGNoZXMgbGFuZ3VhZ2VzIGlu IHNlbGVjdHMNCglmdW5jdGlvbiBzd2l0Y2hMYW5ndWFnZXMoKQ0KCXsNCgkJdmFy IGxpTGFuZ3VhZ2VGcm9tID0gc3dpdGNoTGFuZ3VhZ2VzTGkobGFuZ3VhZ2VGcm9t RWxlbWVudElkKTsNCgkJdmFyIGxpTGFuZ3VhZ2VUbyA9IHN3aXRjaExhbmd1YWdl c0xpKGxhbmd1YWdlVG9FbGVtZW50SWQpOw0KCQkNCgkJdmFyIGZyb21WYWx1ZSA9 IHRoaXMub3B0aW9ucy5sYW5ndWFnZUZyb21TZWxlY3QudmFsdWU7DQoJCWxpTGFu Z3VhZ2VUby5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMubGFuZ3VhZ2VGcm9tU2Vs ZWN0Lm9wdGlvbnNbdGhpcy5vcHRpb25zLmxhbmd1YWdlRnJvbVNlbGVjdC5zZWxl Y3RlZEluZGV4XS50ZXh0Ow0KCQl0aGlzLm9wdGlvbnMubGFuZ3VhZ2VGcm9tU2Vs ZWN0LnZhbHVlID0gdGhpcy5vcHRpb25zLmxhbmd1YWdlVG9TZWxlY3QudmFsdWU7 DQoJCWxpTGFuZ3VhZ2VGcm9tLmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5sYW5n dWFnZVRvU2VsZWN0Lm9wdGlvbnNbdGhpcy5vcHRpb25zLmxhbmd1YWdlVG9TZWxl Y3Quc2VsZWN0ZWRJbmRleF0udGV4dDsNCgkJdGhpcy5vcHRpb25zLmxhbmd1YWdl VG9TZWxlY3QudmFsdWUgPSBmcm9tVmFsdWU7DQoJfQ0KCQ0KCS8vIHN3aXRjaGVz IGxhbmd1YWdlcyBpbiBsaQ0KCWZ1bmN0aW9uIHN3aXRjaExhbmd1YWdlc0xpKG9i aikNCgl7DQoJCXZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo b2JqKTsNCgkJdmFyIHBhcmVudE9iaiA9IGVsZW1lbnQucGFyZW50Tm9kZTsNCgkJ dmFyIHN0cm9uZyA9IHBhcmVudE9iai5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc3Ry b25nJyk7DQoJCWZvciAodmFyIGkgPSAwOyBpIDwgc3Ryb25nLmxlbmd0aDsgaSsr KQ0KCQl7DQoJCQlyZXR1cm4gc3Ryb25nW2ldOw0KCQl9DQoJfQ0KCQ0KfQ0K ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=swfobject_source.js Content-Type: application/x-javascript; name=swfobject_source.js Content-Location: http://teplice.naseadresa.cz/0000-Global/js/swfobject_source.js Content-Transfer-Encoding: Base64 Ly8gRmxhc2ggUGxheWVyIFZlcnNpb24gRGV0ZWN0aW9uIC0gUmV2IDEuNg0KLy8g RGV0ZWN0IENsaWVudCBCcm93c2VyIHR5cGUNCi8vIENvcHlyaWdodChjKSAyMDA1 LTIwMDYgQWRvYmUgTWFjcm9tZWRpYSBTb2Z0d2FyZSwgTExDLiBBbGwgcmlnaHRz IHJlc2VydmVkLg0KDQp2YXIgaXNJRSAgPSAobmF2aWdhdG9yLmFwcFZlcnNpb24u aW5kZXhPZigiTVNJRSIpICE9IC0xKSA/IHRydWUgOiBmYWxzZTsNCnZhciBpc1dp biA9IChuYXZpZ2F0b3IuYXBwVmVyc2lvbi50b0xvd2VyQ2FzZSgpLmluZGV4T2Yo IndpbiIpICE9IC0xKSA/IHRydWUgOiBmYWxzZTsNCnZhciBpc09wZXJhID0gKG5h dmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiT3BlcmEiKSAhPSAtMSkgPyB0cnVl IDogZmFsc2U7DQoNCmZ1bmN0aW9uIElFVmVyc2lvbigpDQp7DQoJdmFyIHZlcjsN Cgl2YXIgYXg7DQoJdmFyIGU7DQoNCgkJCXRyeSB7CWF4ID0gbmV3IEFjdGl2ZVhP YmplY3QoIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoLjciKTsJCXZlciA9 IGF4LkdldFZhcmlhYmxlKCIkdmVyc2lvbiIpOwkJCQkJCQkJCQkJCX0gY2F0Y2gg KGUpIHt9DQoJaWYgKCF2ZXIpewl0cnkgewlheCA9IG5ldyBBY3RpdmVYT2JqZWN0 KCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaC42Iik7CQl2ZXIgPSAiV0lO IDYsMCwyMSwwIjsJCQlheC5BbGxvd1NjcmlwdEFjY2VzcyA9ICJhbHdheXMiOwl2 ZXIgPSBheC5HZXRWYXJpYWJsZSgiJHZlcnNpb24iKTsJCX0gY2F0Y2ggKGUpIHt9 fQ0KCWlmICghdmVyKXsJdHJ5IHsJYXggPSBuZXcgQWN0aXZlWE9iamVjdCgiU2hv Y2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2guMyIpOwkJdmVyID0gYXguR2V0VmFy aWFibGUoIiR2ZXJzaW9uIik7CQkJCQkJCQkJCQkJfSBjYXRjaCAoZSkge319DQoJ aWYgKCF2ZXIpewl0cnkgewlheCA9IG5ldyBBY3RpdmVYT2JqZWN0KCJTaG9ja3dh dmVGbGFzaC5TaG9ja3dhdmVGbGFzaC4zIik7CQl2ZXIgPSAiV0lOIDMsMCwxOCww IjsJCQkJCQkJCQkJCQkJCX0gY2F0Y2ggKGUpIHt9fQ0KCWlmICghdmVyKXsJdHJ5 IHsJYXggPSBuZXcgQWN0aXZlWE9iamVjdCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3 YXZlRmxhc2giKTsJCXZlciA9ICJXSU4gMiwwLDAsMTEiOwkJCX0gY2F0Y2ggKGll KSB7CQkJCXZlciA9IC0xOwl9fQ0KCQ0KCXJldHVybiB2ZXI7DQp9DQoNCmZ1bmN0 aW9uIEdldFN3ZlZlcigpew0KCXZhciBmbHBWZXIgPSAtMTsNCgkNCglpZiAobmF2 aWdhdG9yLnBsdWdpbnMgIT0gbnVsbCAmJiBuYXZpZ2F0b3IucGx1Z2lucy5sZW5n dGggPiAwKSB7DQoJCWlmIChuYXZpZ2F0b3IucGx1Z2luc1siU2hvY2t3YXZlIEZs YXNoIl0gfHwgbmF2aWdhdG9yLnBsdWdpbnNbIlNob2Nrd2F2ZSBGbGFzaCAyLjAi XSkgew0KCQkJdmFyIHN3VmVyMiA9IG5hdmlnYXRvci5wbHVnaW5zWyJTaG9ja3dh dmUgRmxhc2ggMi4wIl0gPyAiIDIuMCIgOiAiIjsNCgkJCXZhciBmbERlcyA9IG5h dmlnYXRvci5wbHVnaW5zWyJTaG9ja3dhdmUgRmxhc2giICsgc3dWZXIyXS5kZXNj cmlwdGlvbjsNCgkJCXZhciBkZXNjQXJyYXkgPSBmbERlcy5zcGxpdCgiICIpOw0K CQkJdmFyIE1hakFycmF5ID0gZGVzY0FycmF5WzJdLnNwbGl0KCIuIik7CQkJDQoJ CQl2YXIgdmVyTWFqID0gTWFqQXJyYXlbMF07DQoJCQl2YXIgdmVyTWluID0gTWFq QXJyYXlbMV07DQoJCQl2YXIgdmVyUmV2ID0gZGVzY0FycmF5WzNdOw0KCQkJaWYg KHZlclJldiA9PSAiIikgewkJCXZlclJldiA9IGRlc2NBcnJheVs0XTsJfQ0KCQkJ aWYgKHZlclJldlswXSA9PSAiZCIpIHsJCQl2ZXJSZXYgPSB2ZXJSZXYuc3Vic3Ry aW5nKDEpOw0KCQkJfSBlbHNlIGlmICh2ZXJSZXZbMF0gPT0gInIiKSB7CQl2ZXJS ZXYgPSB2ZXJSZXYuc3Vic3RyaW5nKDEpOw0KCQkJCWlmICh2ZXJSZXYuaW5kZXhP ZigiZCIpID4gMCkgewl2ZXJSZXYgPSB2ZXJSZXYuc3Vic3RyaW5nKDAsIHZlclJl di5pbmRleE9mKCJkIikpOwl9DQoJCQl9DQoJCQl2YXIgZmxwVmVyID0gdmVyTWFq ICsgIi4iICsgdmVyTWluICsgIi4iICsgdmVyUmV2Ow0KCQl9DQoJfQ0KCWVsc2Ug aWYgKG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJ3 ZWJ0di8yLjYiKSAhPSAtMSkgZmxwVmVyID0gNDsNCgllbHNlIGlmIChuYXZpZ2F0 b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigid2VidHYvMi41Iikg IT0gLTEpIGZscFZlciA9IDM7DQoJZWxzZSBpZiAobmF2aWdhdG9yLnVzZXJBZ2Vu dC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIndlYnR2IikgIT0gLTEpIGZscFZlciA9 IDI7DQoJZWxzZSBpZiAoIGlzSUUgJiYgaXNXaW4gJiYgIWlzT3BlcmEgKSB7CWZs cFZlciA9IElFVmVyc2lvbigpOwl9DQoJcmV0dXJuIGZscFZlcjsNCn0NCg0KZnVu Y3Rpb24gRGV0RmxWZXIocmVxTWFqLCByZXFNaW4sIHJlcVJldikgew0KCXZlclN0 ciA9IEdldFN3ZlZlcigpOw0KCWlmICh2ZXJTdHIgPT0gLTEgKSB7DQoJCXJldHVy biBmYWxzZTsNCgl9IGVsc2UgaWYgKHZlclN0ciAhPSAwKSB7DQoJCWlmKGlzSUUg JiYgaXNXaW4gJiYgIWlzT3BlcmEpIHsNCgkJCXRBciAgICAgICAgPSB2ZXJTdHIu c3BsaXQoIiAiKTsNCgkJCXRTdCAgICAgICAgPSB0QXJbMV07DQoJCQl2ZXJBciAg ICAgID0gdFN0LnNwbGl0KCIsIik7DQoJCX0gZWxzZSB7DQoJCQl2ZXJBciAgICAg ID0gdmVyU3RyLnNwbGl0KCIuIik7DQoJCX0NCgkJdmFyIHZlck1haiAgICAgID0g dmVyQXJbMF07DQoJCXZhciB2ZXJNaW4gICAgICA9IHZlckFyWzFdOw0KCQl2YXIg dmVyUmV2CT0gdmVyQXJbMl07DQoNCgkJaWYgKHZlck1haiA+IHBhcnNlRmxvYXQo cmVxTWFqKSkgewkJCQkJCQkJCQkJCQlyZXR1cm4gdHJ1ZTsNCgkJfSBlbHNlIGlm ICh2ZXJNYWogPT0gcGFyc2VGbG9hdChyZXFNYWopKSB7CWlmICh2ZXJNaW4gPiBw YXJzZUZsb2F0KHJlcU1pbikpCQkJCQkJCXJldHVybiB0cnVlOw0KCQkJCQkJCQll bHNlIGlmICh2ZXJNaW4gPT0gcGFyc2VGbG9hdChyZXFNaW4pKSB7CWlmICh2ZXJS ZXYgPj0gcGFyc2VGbG9hdChyZXFSZXYpKQlyZXR1cm4gdHJ1ZTsJfX0NCgkJCQkJ CQkJCQkJCQkJCQkJCQlyZXR1cm4gZmFsc2U7DQoJfQ0KfQ0KDQoNCi8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCg0KDQovKioNCiAqIFNXRk9iamVjdCB2MS40LjQ6IEZsYXNoIFBsYXllciBk ZXRlY3Rpb24gYW5kIGVtYmVkIC0gaHR0cDovL2Jsb2cuZGVjb25jZXB0LmNvbS9z d2ZvYmplY3QvDQogKg0KICogU1dGT2JqZWN0IGlzIChjKSAyMDA2IEdlb2ZmIFN0 ZWFybnMgYW5kIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZToNCiAq IGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2Uu cGhwDQogKg0KICogKipTV0ZPYmplY3QgaXMgdGhlIFNXRiBlbWJlZCBzY3JpcHQg Zm9ybWVybHkga25vd24gYXMgRmxhc2hPYmplY3QuIFRoZSBuYW1lIHdhcyBjaGFu Z2VkIGZvcg0KICogICBsZWdhbCByZWFzb25zLg0KICovDQppZih0eXBlb2YgZGVj b25jZXB0PT0idW5kZWZpbmVkIil7dmFyIGRlY29uY2VwdD1uZXcgT2JqZWN0KCk7 fQ0KaWYodHlwZW9mIGRlY29uY2VwdC51dGlsPT0idW5kZWZpbmVkIil7ZGVjb25j ZXB0LnV0aWw9bmV3IE9iamVjdCgpO30NCmlmKHR5cGVvZiBkZWNvbmNlcHQuU1dG T2JqZWN0VXRpbD09InVuZGVmaW5lZCIpe2RlY29uY2VwdC5TV0ZPYmplY3RVdGls PW5ldyBPYmplY3QoKTt9DQoNCmRlY29uY2VwdC5TV0ZPYmplY3Q9ZnVuY3Rpb24o XzEsaWQsdyxoLF81LGMsXzcsXzgsXzksX2EsX2Ipew0KCWlmKCFkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCl7cmV0dXJuO30NCgl0aGlzLkRFVEVDVF9LRVk9X2I/X2I6 ImRldGVjdGZsYXNoIjsNCgl0aGlzLnNraXBEZXRlY3Q9ZGVjb25jZXB0LnV0aWwu Z2V0UmVxdWVzdFBhcmFtZXRlcih0aGlzLkRFVEVDVF9LRVkpOw0KCXRoaXMucGFy YW1zPW5ldyBPYmplY3QoKTsNCgl0aGlzLnZhcmlhYmxlcz1uZXcgT2JqZWN0KCk7 DQoJdGhpcy5hdHRyaWJ1dGVzPW5ldyBBcnJheSgpOw0KCWlmKF8xKXt0aGlzLnNl dEF0dHJpYnV0ZSgic3dmIixfMSk7fQ0KCWlmKGlkKXt0aGlzLnNldEF0dHJpYnV0 ZSgiaWQiLGlkKTt9DQoJaWYodyl7dGhpcy5zZXRBdHRyaWJ1dGUoIndpZHRoIix3 KTt9DQoJaWYoaCl7dGhpcy5zZXRBdHRyaWJ1dGUoImhlaWdodCIsaCk7fQ0KCWlm KF81KXt0aGlzLnNldEF0dHJpYnV0ZSgidmVyc2lvbiIsbmV3IGRlY29uY2VwdC5Q bGF5ZXJWZXJzaW9uKF81LnRvU3RyaW5nKCkuc3BsaXQoIi4iKSkpO30NCgl0aGlz Lmluc3RhbGxlZFZlcj1kZWNvbmNlcHQuU1dGT2JqZWN0VXRpbC5nZXRQbGF5ZXJW ZXJzaW9uKCk7DQoJaWYoYyl7dGhpcy5hZGRQYXJhbSgiYmdjb2xvciIsYyk7fQ0K CXZhciBxPV84P184OiJoaWdoIjsNCgl0aGlzLmFkZFBhcmFtKCJxdWFsaXR5Iixx KTsNCgl0aGlzLmFkZFBhcmFtKCJ3bW9kZSIsInRyYW5zcGFyZW50Iik7DQoJdGhp cy5hZGRQYXJhbSgibWVudSIsZmFsc2UpOw0KCXRoaXMuc2V0QXR0cmlidXRlKCJ1 c2VFeHByZXNzSW5zdGFsbCIsXzcpOw0KCXRoaXMuc2V0QXR0cmlidXRlKCJkb0V4 cHJlc3NJbnN0YWxsIixmYWxzZSk7DQoJdmFyIF9kPShfOSk/Xzk6d2luZG93Lmxv Y2F0aW9uOw0KCXRoaXMuc2V0QXR0cmlidXRlKCJ4aVJlZGlyZWN0VXJsIixfZCk7 DQoJdGhpcy5zZXRBdHRyaWJ1dGUoInJlZGlyZWN0VXJsIiwiIik7DQoJaWYoX2Ep e3RoaXMuc2V0QXR0cmlidXRlKCJyZWRpcmVjdFVybCIsX2EpO30NCn07DQoNCg0K dmFyIGlubmVydEVtYmVkRnVsbFNjcmVlbiA9ICIiOw0KdmFyIGlubmVydFBhcmFt RnVsbFNjcmVlbiA9ICIiOw0KDQpkZWNvbmNlcHQuU1dGT2JqZWN0LnByb3RvdHlw ZT17DQoJc2V0QXR0cmlidXRlOmZ1bmN0aW9uKF9lLF9mKXsJdGhpcy5hdHRyaWJ1 dGVzW19lXT1fZjt9LA0KCWdldEF0dHJpYnV0ZTpmdW5jdGlvbihfMTApewlyZXR1 cm4gdGhpcy5hdHRyaWJ1dGVzW18xMF07fSwNCglhZGRQYXJhbTpmdW5jdGlvbihf MTEsXzEyKXsJdGhpcy5wYXJhbXNbXzExXT1fMTI7fSwNCglnZXRQYXJhbXM6ZnVu Y3Rpb24oKXsJCXJldHVybiB0aGlzLnBhcmFtczt9LA0KCWFkZFZhcmlhYmxlOmZ1 bmN0aW9uKF8xMyxfMTQpewl0aGlzLnZhcmlhYmxlc1tfMTNdPV8xNDt9LA0KCWdl dFZhcmlhYmxlOmZ1bmN0aW9uKF8xNSl7CXJldHVybiB0aGlzLnZhcmlhYmxlc1tf MTVdO30sDQoJZ2V0VmFyaWFibGVzOmZ1bmN0aW9uKCl7CXJldHVybiB0aGlzLnZh cmlhYmxlczt9LA0KCWdldFZhcmlhYmxlUGFpcnM6ZnVuY3Rpb24oKXsNCgkJdmFy IF8xNj1uZXcgQXJyYXkoKTsNCgkJdmFyIGtleTsNCgkJdmFyIF8xOD10aGlzLmdl dFZhcmlhYmxlcygpOw0KCQlmb3Ioa2V5IGluIF8xOCl7DQoJCQlpZihba2V5XSA9 PSAiYWxsb3dGdWxsU2NyZWVuIil7DQoJCQkJaW5uZXJ0RW1iZWRGdWxsU2NyZWVu ID0gW2tleV0rIj1cIiIrXzE4W2tleV0rIlwiICI7DQoJCQkJaW5uZXJ0UGFyYW1G dWxsU2NyZWVuID0gIjxwYXJhbSBuYW1lPVwiIitba2V5XSsiXCIgdmFsdWU9XCIi K18xOFtrZXldKyJcIiAvPiI7DQoJCQl9IGVsc2Ugew0KDQoJCQkJXzE2LnB1c2go a2V5KyI9IitfMThba2V5XSk7DQoJCQl9DQoJCX0NCgkJcmV0dXJuIF8xNjsNCgl9 LA0KCWdldFNXRkhUTUw6ZnVuY3Rpb24oKXsNCgkJdmFyIF8xOT0iIjsNCgkJaWYo bmF2aWdhdG9yLnBsdWdpbnMmJm5hdmlnYXRvci5taW1lVHlwZXMmJm5hdmlnYXRv ci5taW1lVHlwZXMubGVuZ3RoKXsNCgkJCWlmKHRoaXMuZ2V0QXR0cmlidXRlKCJk b0V4cHJlc3NJbnN0YWxsIikpew0KCQkJCXRoaXMuYWRkVmFyaWFibGUoIk1NcGxh eWVyVHlwZSIsIlBsdWdJbiIpOw0KCQkJfQ0KDQoJCQlfMTk9IjxlbWJlZCB0eXBl PVwiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2hcIiBzcmM9XCIiK3RoaXMu Z2V0QXR0cmlidXRlKCJzd2YiKSsiXCIgd2lkdGg9XCIiK3RoaXMuZ2V0QXR0cmli dXRlKCJ3aWR0aCIpKyJcIiBoZWlnaHQ9XCIiK3RoaXMuZ2V0QXR0cmlidXRlKCJo ZWlnaHQiKSsiXCIiOw0KCQkJXzE5Kz0iIGlkPVwiIit0aGlzLmdldEF0dHJpYnV0 ZSgiaWQiKSsiXCIgbmFtZT1cIiIrdGhpcy5nZXRBdHRyaWJ1dGUoImlkIikrIlwi ICI7DQoNCgkJCXZhciBfMWE9dGhpcy5nZXRQYXJhbXMoKTsNCgkJCWZvcih2YXIg a2V5IGluIF8xYSl7CV8xOSs9W2tleV0rIj1cIiIrXzFhW2tleV0rIlwiICI7fQ0K CQkJdmFyIF8xYz10aGlzLmdldFZhcmlhYmxlUGFpcnMoKS5qb2luKCImIik7DQoN CgkJCV8xOSs9aW5uZXJ0RW1iZWRGdWxsU2NyZWVuOw0KDQoJCQlpZihfMWMubGVu Z3RoPjApewlfMTkrPSJmbGFzaHZhcnM9XCIiK18xYysiXCIiO30NCg0KCQkJXzE5 Kz0iLz4iOw0KDQoJCX1lbHNlew0KCQkJaWYodGhpcy5nZXRBdHRyaWJ1dGUoImRv RXhwcmVzc0luc3RhbGwiKSl7dGhpcy5hZGRWYXJpYWJsZSgiTU1wbGF5ZXJUeXBl IiwiQWN0aXZlWCIpO30NCg0KDQoJCQlfMTk9IjxvYmplY3QgaWQ9XCIiK3RoaXMu Z2V0QXR0cmlidXRlKCJpZCIpKyJcIiBjbGFzc2lkPVwiY2xzaWQ6RDI3Q0RCNkUt QUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwXCIgd2lkdGg9XCIiK3RoaXMuZ2V0 QXR0cmlidXRlKCJ3aWR0aCIpKyJcIiBoZWlnaHQ9XCIiK3RoaXMuZ2V0QXR0cmli dXRlKCJoZWlnaHQiKSsiXCI+IjsNCgkJCV8xOSs9IjxwYXJhbSBuYW1lPVwibW92 aWVcIiB2YWx1ZT1cIiIrdGhpcy5nZXRBdHRyaWJ1dGUoInN3ZiIpKyJcIiAvPiI7 DQoNCgkJCXZhciBfMWQ9dGhpcy5nZXRQYXJhbXMoKTsNCgkJCWZvcih2YXIga2V5 IGluIF8xZCl7CV8xOSs9IjxwYXJhbSBuYW1lPVwiIitrZXkrIlwiIHZhbHVlPVwi IitfMWRba2V5XSsiXCIgLz4iO30NCgkJCXZhciBfMWY9dGhpcy5nZXRWYXJpYWJs ZVBhaXJzKCkuam9pbigiJiIpOw0KDQoJCQlfMTkrPWlubmVydFBhcmFtRnVsbFNj cmVlbjsNCg0KCQkJaWYoXzFmLmxlbmd0aD4wKXsNCg0KCQkJCV8xOSs9IjxwYXJh bSBuYW1lPVwiZmxhc2h2YXJzXCIgdmFsdWU9XCIiK18xZisiXCIgLz4iOw0KCQkJ fQ0KDQoJCQlfMTkrPSI8L29iamVjdD4iOw0KDQoJCX0NCgkJcmV0dXJuIF8xOTsN Cgl9LA0KCXdyaXRlOmZ1bmN0aW9uKF8yMCl7DQoJCWlmKHRoaXMuZ2V0QXR0cmli dXRlKCJ1c2VFeHByZXNzSW5zdGFsbCIpKXsNCgkJCXZhciBfMjE9bmV3IGRlY29u Y2VwdC5QbGF5ZXJWZXJzaW9uKFs2LDAsNjVdKTsNCgkJCWlmKHRoaXMuaW5zdGFs bGVkVmVyLnZlcnNpb25Jc1ZhbGlkKF8yMSkmJiF0aGlzLmluc3RhbGxlZFZlci52 ZXJzaW9uSXNWYWxpZCh0aGlzLmdldEF0dHJpYnV0ZSgidmVyc2lvbiIpKSl7DQoJ CQkJdGhpcy5zZXRBdHRyaWJ1dGUoImRvRXhwcmVzc0luc3RhbGwiLHRydWUpOw0K CQkJCXRoaXMuYWRkVmFyaWFibGUoIk1NcmVkaXJlY3RVUkwiLGVzY2FwZSh0aGlz LmdldEF0dHJpYnV0ZSgieGlSZWRpcmVjdFVybCIpKSk7DQoJCQkJZG9jdW1lbnQu dGl0bGU9ZG9jdW1lbnQudGl0bGUuc2xpY2UoMCw0NykrIiAtIEZsYXNoIFBsYXll ciBJbnN0YWxsYXRpb24iOw0KCQkJCXRoaXMuYWRkVmFyaWFibGUoIk1NZG9jdGl0 bGUiLGRvY3VtZW50LnRpdGxlKTsNCgkJCX0NCgkJfQ0KCQlpZih0aGlzLnNraXBE ZXRlY3R8fHRoaXMuZ2V0QXR0cmlidXRlKCJkb0V4cHJlc3NJbnN0YWxsIil8fHRo aXMuaW5zdGFsbGVkVmVyLnZlcnNpb25Jc1ZhbGlkKHRoaXMuZ2V0QXR0cmlidXRl KCJ2ZXJzaW9uIikpKXsNCgkJCXZhciBuPSh0eXBlb2YgXzIwPT0ic3RyaW5nIik/ ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXzIwKTpfMjA7DQoJCQluLmlubmVySFRN TD10aGlzLmdldFNXRkhUTUwoKTtyZXR1cm4gdHJ1ZTsNCgkJfWVsc2V7DQoJCQlp Zih0aGlzLmdldEF0dHJpYnV0ZSgicmVkaXJlY3RVcmwiKSE9IiIpew0KCQkJCWRv Y3VtZW50LmxvY2F0aW9uLnJlcGxhY2UodGhpcy5nZXRBdHRyaWJ1dGUoInJlZGly ZWN0VXJsIikpOw0KCQkJfQ0KCQl9DQoJCXJldHVybiBmYWxzZTsNCgl9DQp9Ow0K DQpkZWNvbmNlcHQuU1dGT2JqZWN0VXRpbC5nZXRQbGF5ZXJWZXJzaW9uPWZ1bmN0 aW9uKCl7DQoJdmFyIF8yMz1uZXcgZGVjb25jZXB0LlBsYXllclZlcnNpb24oWzAs MCwwXSk7DQoJaWYobmF2aWdhdG9yLnBsdWdpbnMmJm5hdmlnYXRvci5taW1lVHlw ZXMubGVuZ3RoKXsNCgkJdmFyIHg9bmF2aWdhdG9yLnBsdWdpbnNbIlNob2Nrd2F2 ZSBGbGFzaCJdOw0KCQlpZih4JiZ4LmRlc2NyaXB0aW9uKXsNCg0KCQkJXzIzPW5l dyBkZWNvbmNlcHQuUGxheWVyVmVyc2lvbih4LmRlc2NyaXB0aW9uLnJlcGxhY2Uo LyhbYS16QS1aXXxccykrLywiIikucmVwbGFjZSgvKFxzK3J8XHMrYlswLTldKykv LCIuIikuc3BsaXQoIi4iKSk7DQoNCgkJfQ0KCX1lbHNlew0KCQl0cnl7dmFyIGF4 bz1uZXcgQWN0aXZlWE9iamVjdCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxh c2guNyIpO30NCgkJY2F0Y2goZSl7dHJ5ew0KCQkJdmFyIGF4bz1uZXcgQWN0aXZl WE9iamVjdCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2guNiIpOw0KDQoJ CQlfMjM9bmV3IGRlY29uY2VwdC5QbGF5ZXJWZXJzaW9uKFs2LDAsMjFdKTtheG8u QWxsb3dTY3JpcHRBY2Nlc3M9ImFsd2F5cyI7fQ0KDQoJCQljYXRjaChlKXtpZihf MjMubWFqb3I9PTYpe3JldHVybiBfMjM7fX0NCgkJCXRyeXtheG89bmV3IEFjdGl2 ZVhPYmplY3QoIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoIik7fQ0KCQkJ Y2F0Y2goZSl7fX1pZihheG8hPW51bGwpew0KDQoJCQkJXzIzPW5ldyBkZWNvbmNl cHQuUGxheWVyVmVyc2lvbihheG8uR2V0VmFyaWFibGUoIiR2ZXJzaW9uIikuc3Bs aXQoIiAiKVsxXS5zcGxpdCgiLCIpKTsNCgkJCX0NCgkJfQ0KCXJldHVybiBfMjM7 DQp9Ow0KDQpkZWNvbmNlcHQuUGxheWVyVmVyc2lvbj1mdW5jdGlvbihfMjcpew0K CXRoaXMubWFqb3I9XzI3WzBdIT1udWxsP3BhcnNlSW50KF8yN1swXSk6MDsNCgl0 aGlzLm1pbm9yPV8yN1sxXSE9bnVsbD9wYXJzZUludChfMjdbMV0pOjA7DQoJdGhp cy5yZXY9XzI3WzJdIT1udWxsP3BhcnNlSW50KF8yN1syXSk6MDsNCn07DQoNCmRl Y29uY2VwdC5QbGF5ZXJWZXJzaW9uLnByb3RvdHlwZS52ZXJzaW9uSXNWYWxpZD1m dW5jdGlvbihmdil7DQoJaWYodGhpcy5tYWpvcjxmdi5tYWpvcil7cmV0dXJuIGZh bHNlO30NCglpZih0aGlzLm1ham9yPmZ2Lm1ham9yKXtyZXR1cm4gdHJ1ZTt9DQoJ aWYodGhpcy5taW5vcjxmdi5taW5vcil7cmV0dXJuIGZhbHNlO30NCglpZih0aGlz Lm1pbm9yPmZ2Lm1pbm9yKXtyZXR1cm4gdHJ1ZTt9DQoJaWYodGhpcy5yZXY8ZnYu cmV2KXsNCgkJcmV0dXJuIGZhbHNlOw0KCX0NCglyZXR1cm4gdHJ1ZTsNCn07DQoN CmRlY29uY2VwdC51dGlsPXtnZXRSZXF1ZXN0UGFyYW1ldGVyOmZ1bmN0aW9uKF8y OSl7DQoJdmFyIHE9ZG9jdW1lbnQubG9jYXRpb24uc2VhcmNofHxkb2N1bWVudC5s b2NhdGlvbi5oYXNoOw0KCWlmKHEpew0KCQl2YXIgXzJiPXEuc3Vic3RyaW5nKDEp LnNwbGl0KCImIik7DQoJCWZvcih2YXIgaT0wO2k8XzJiLmxlbmd0aDtpKyspew0K CQkJaWYoXzJiW2ldLnN1YnN0cmluZygwLF8yYltpXS5pbmRleE9mKCI9IikpPT1f Mjkpew0KCQkJCXJldHVybiBfMmJbaV0uc3Vic3RyaW5nKChfMmJbaV0uaW5kZXhP ZigiPSIpKzEpKTsNCgkJCX0NCgkJfQ0KCX0NCglyZXR1cm4gIiI7DQp9fTsNCg0K ZGVjb25jZXB0LlNXRk9iamVjdFV0aWwuY2xlYW51cFNXRnM9ZnVuY3Rpb24oKXsN CglpZih3aW5kb3cub3BlcmF8fCFkb2N1bWVudC5hbGwpe3JldHVybjt9DQoJdmFy IF8yZD1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiT0JKRUNUIik7DQoJ Zm9yKHZhciBpPTA7aTxfMmQubGVuZ3RoO2krKyl7DQoJCV8yZFtpXS5zdHlsZS5k aXNwbGF5PSJub25lIjsNCgkJZm9yKHZhciB4IGluIF8yZFtpXSl7DQoJCQlpZih0 eXBlb2YgXzJkW2ldW3hdPT0iZnVuY3Rpb24iKXtfMmRbaV1beF09ZnVuY3Rpb24o KXt9O30NCgkJfQ0KCX0NCn07DQoNCmRlY29uY2VwdC5TV0ZPYmplY3RVdGlsLnBy ZXBVbmxvYWQ9ZnVuY3Rpb24oKXsNCglfX2ZsYXNoX3VubG9hZEhhbmRsZXI9ZnVu Y3Rpb24oKXt9Ow0KCV9fZmxhc2hfc2F2ZWRVbmxvYWRIYW5kbGVyPWZ1bmN0aW9u KCl7fTsNCglpZih0eXBlb2Ygd2luZG93Lm9udW5sb2FkPT0iZnVuY3Rpb24iKXsN CgkJdmFyIF8zMD13aW5kb3cub251bmxvYWQ7DQoJCXdpbmRvdy5vbnVubG9hZD1m dW5jdGlvbigpew0KCQkJZGVjb25jZXB0LlNXRk9iamVjdFV0aWwuY2xlYW51cFNX RnMoKTtfMzAoKTsNCgkJfTsNCgl9ZWxzZXsNCgkJd2luZG93Lm9udW5sb2FkPWRl Y29uY2VwdC5TV0ZPYmplY3RVdGlsLmNsZWFudXBTV0ZzOw0KCX0NCn07DQoNCmlm KHR5cGVvZiB3aW5kb3cub25iZWZvcmV1bmxvYWQ9PSJmdW5jdGlvbiIpew0KCXZh ciBvbGRCZWZvcmVVbmxvYWQ9d2luZG93Lm9uYmVmb3JldW5sb2FkOw0KCXdpbmRv dy5vbmJlZm9yZXVubG9hZD1mdW5jdGlvbigpew0KCQlkZWNvbmNlcHQuU1dGT2Jq ZWN0VXRpbC5wcmVwVW5sb2FkKCk7DQoJCW9sZEJlZm9yZVVubG9hZCgpOw0KCX07 DQp9ZWxzZXsNCgl3aW5kb3cub25iZWZvcmV1bmxvYWQ9ZGVjb25jZXB0LlNXRk9i amVjdFV0aWwucHJlcFVubG9hZDsNCn0NCg0KaWYoQXJyYXkucHJvdG90eXBlLnB1 c2g9PW51bGwpew0KCUFycmF5LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKF8zMSl7 DQoJCXRoaXNbdGhpcy5sZW5ndGhdPV8zMTsNCgkJcmV0dXJuIHRoaXMubGVuZ3Ro Ow0KCX07DQp9DQoNCnZhciBnZXRRdWVyeVBhcmFtVmFsdWU9ZGVjb25jZXB0LnV0 aWwuZ2V0UmVxdWVzdFBhcmFtZXRlcjsNCnZhciBGbGFzaE9iamVjdD1kZWNvbmNl cHQuU1dGT2JqZWN0Ow0KdmFyIFNXRk9iamVjdD1kZWNvbmNlcHQuU1dGT2JqZWN0 Ow== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=select.js Content-Type: application/x-javascript; name=select.js Content-Location: http://teplice.naseadresa.cz/0000-Global/js/select.js Content-Transfer-Encoding: Base64 Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8gZ2xvYmFsIHZh cmlhYmxlcw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KDQp2 YXIgaGlkZSA9IGZhbHNlOw0KdmFyIHNlbGVjdE92ZXJyaXRlWkluZGV4XzAgPSAw Ow0KdmFyIHNlbGVjdE92ZXJyaXRlWkluZGV4XzEgPSAxOw0KDQovLyBsb2FkIGZ1 bmN0aW9uIGxvYWRTZWxlY3QNCmFkZEV2ZW50KHdpbmRvdywnbG9hZCcsbG9hZFNl bGVjdCk7DQoNCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8v IGZ1bmN0aW9uIGZvciBkZWxldGUgb2xkIHNlbGVjdCByZXBsYWNpbmcNCi8vKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCg0KZnVuY3Rpb24gZGVsZXRl T2xkU2VsZWN0cygpDQp7DQoJdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRz QnlUYWdOYW1lKCdkaXYnKTsNCglmb3IgKHZhciBpID0gMDsgaSA8IGRpdi5sZW5n dGg7IGkrKykNCgl7DQoJCWlmIChkaXZbaV0uY2xhc3NOYW1lPT0ic2VsZWN0UmVw bGFjZW1lbnQiKQ0KCQl7DQoJCQl2YXIgcGFyZW50PWRpdltpXS5wYXJlbnROb2Rl Ow0KCQkJcGFyZW50LnJlbW92ZUNoaWxkKGRpdltpXSk7DQoJCX0NCgl9DQp9DQoN Cg0KDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLyBmdW5j dGlvbiBmb3IgcmVwbGFjZSBzZWxlY3QNCi8vKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioNCg0KZnVuY3Rpb24gbG9hZFNlbGVjdCgpDQp7DQoJdHJ5DQoJ ew0KCSAgICAvLyhkb2N1bWVudC5hbGwgJiYgIXdpbmRvdy5wcmludCkgPyBudWxs IDogc2V0Rm9ybSgpOw0KCSAgICBzZXRGb3JtKCk7DQoNCgkgICAgdmFyIGJvZHkg PSBkb2N1bWVudC5ib2R5Ow0KCSAgICB2YXIgdWwgPSBkb2N1bWVudC5nZXRFbGVt ZW50c0J5VGFnTmFtZSgndWwnKTsNCgkgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5n ZXRFbGVtZW50c0J5VGFnTmFtZSgnc3BhbicpOw0KICAgIAkNCgkgICAgLy9mdW5j dGlvbiBmb3IgaGlkZSBlbGVtZW50cyBsaQ0KCSAgICBib2R5Lm9uY2xpY2sgPSBm dW5jdGlvbigpIHsNCgkJICAgIC8vZGVsYXkgMW1zIHRoYW4gc2V0IHZhcmlhYmxl IGhpZGUgYW5kIGFsbG93IHRoZSBoaWRlIGVsZW1lbnRzIGxpDQoJCSAgICB3aW5k b3cuc2V0VGltZW91dCgnY2xvc2VTZWwoKScsIDEpOw0KDQoJCSAgICBpZiAoaGlk ZSA9PSB0cnVlKSB7DQoJCQkgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1bC5sZW5n dGg7IGkrKykgew0KCQkJCSAgICBpZiAodWxbaV0uaWQgPT0gJ3NlbGVjdE9wZW4n KSB7DQoJCQkJCSAgICB1bFtpXS5pZCA9ICcnOw0KCQkJCQkgICAgdWxbaV0uc3R5 bGUuZGlzcGxheSA9ICdub25lJzsNCgkJCQkJICAgIHVsW2ldLnN0eWxlLnpJbmRl eCA9IHNlbGVjdE92ZXJyaXRlWkluZGV4XzA7DQoJCQkJCSAgICB1bFtpXS5wYXJl bnROb2RlLnN0eWxlLnpJbmRleCA9IHNlbGVjdE92ZXJyaXRlWkluZGV4XzA7DQoJ CQkJCSAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHNwYW4ubGVuZ3RoOyB4KyspIHsN CgkJCQkJCSAgICBpZiAoc3Bhblt4XS5jbGFzc05hbWUgPT0gJ3NlbGVjdFJpZ2h0 QXJyb3cnKSB7DQoJCQkJCQkJICAgIHNwYW5beF0uc3R5bGUuekluZGV4ID0gc2Vs ZWN0T3ZlcnJpdGVaSW5kZXhfMTsNCgkJCQkJCSAgICB9DQoJCQkJCSAgICB9DQoJ CQkJICAgIH0NCgkJCSAgICB9DQoJCSAgICB9DQoJCSAgICBlbHNlIHsNCgkJCSAg ICBmb3IgKHZhciB5ID0gMDsgeSA8IHVsLmxlbmd0aDsgeSsrKSB7DQoJCQkJICAg IGlmICh1bFt5XS5pZCA9PSAnc2VsZWN0T3BlbicpIHsNCgkJCQkJICAgIHVsW3ld LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOw0KCQkJCQkgICAgdWxbeV0uc3R5bGUu ekluZGV4ID0gc2VsZWN0T3ZlcnJpdGVaSW5kZXhfMTsNCgkJCQkJICAgIHVsW3ld LnBhcmVudE5vZGUuc3R5bGUuekluZGV4ID0gc2VsZWN0T3ZlcnJpdGVaSW5kZXhf MTsNCgkJCQkJICAgIHVsW3ldLnN0eWxlLndpZHRoID0gdWxbeV0ucGFyZW50Tm9k ZS5vZmZzZXRXaWR0aCAtIDEgKyAncHgnOw0KCQkJCQkgICAgaWYgKHVsW3ldLm9m ZnNldEhlaWdodCA+IDE1MCkgew0KCQkJCQkJICAgIHVsW3ldLnN0eWxlLmhlaWdo dCA9ICcxNTBweCc7DQoJCQkJCSAgICB9DQoJCQkJCSAgICBmb3IgKHZhciB6ID0g MDsgeiA8IHNwYW4ubGVuZ3RoOyB6KyspIHsNCgkJCQkJCSAgICBpZiAoc3Bhblt6 XS5jbGFzc05hbWUgPT0gJ3NlbGVjdFJpZ2h0QXJyb3cnKSB7DQoJCQkJCQkJICAg IHNwYW5bel0uc3R5bGUuekluZGV4ID0gc2VsZWN0T3ZlcnJpdGVaSW5kZXhfMDsN CgkJCQkJCSAgICB9DQoJCQkJCSAgICB9DQoJCQkJICAgIH0NCgkJCSAgICB9DQoJ CSAgICB9DQoJICAgIH0NCgl9IGNhdGNoIChlcnJvcikge30NCn0NCg0KDQovLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovL3NlYXJjaCBhbGwgc2Vs ZWN0cyBvbiBwYWdlIGFuZCBjYWxsIGZ1bmN0aW9uIHNlbGVjdFJlcGxhY2VtZW50 DQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoNCmZ1bmN0aW9u IHNldEZvcm0oKQ0Kew0KICAgIHRyeQ0KICAgIHsNCgkgICAgdmFyIHMgPSBkb2N1 bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0Jyk7DQoJICAgIGZvciAo dmFyIGkgPSAwOyBpIDwgcy5sZW5ndGg7IGkrKykNCgkgICAgew0KCQkgICAgc2Vs ZWN0UmVwbGFjZW1lbnQoc1tpXSk7DQoJICAgIH0NCgl9IGNhdGNoIChlcnJvcikg e30NCn0NCg0KDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQov LyBmdW5jdGlvbiBmb3IgcmVwbGFjZSBzZWxlY3QNCi8vKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioNCg0KZnVuY3Rpb24gc2VsZWN0UmVwbGFjZW1lbnQo b2JqKQ0Kew0KICAgIGlmIChvYmogPT0gbnVsbCkNCiAgICAgICAgcmV0dXJuOw0K DQoJLy8gaGlkZSBzZWxlY3QNCglvYmouY2xhc3NOYW1lICs9ICcgcmVwbGFjZWQn Ow0KCW9iai5zdHlsZS5kaXNwYXkgPSAnbm9uZSc7DQoJb2JqLnN0eWxlLnBvc2l0 aW9uID0gImFic29sdXRlIjsNCglvYmouc3R5bGUubGVmdCA9ICItNTAwMHB4IjsN CglvYmouc3R5bGUudG9wID0gIi01MDAwcHgiOw0KCW9iai5zdHlsZS56SW5kZXgg PSAiLTUwMDAiOw0KCW9iai5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7DQoJ Ly8gaWYgc2VsZWN0IGlzIG5vdCBkaXNhYmxlZCB0aGVuIGNyZWF0ZSBkaXYgd2l0 aCB1bCBhbmQgc3Ryb25nIGVsc2UgY3JlYXRlIGVsZW1lbnQgcGFyYWdyYXBoIHdp dGggdGV4dCBuZWFrdGl2bu0NCgkNCglpZiAoIW9iai5kaXNhYmxlZCkgew0KCSAg ICAvLyBjcmVhdGUgZWxlbWVudHMNCgkgICAgdmFyIHBhcmVudCA9IGRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOw0KCSAgICB2YXIgc3BhbiA9IGRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsNCgkgICAgdmFyIHVsID0gZG9jdW1lbnQu Y3JlYXRlRWxlbWVudCgndWwnKTsNCgkgICAgdmFyIGFjdHVhbCA9IGRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoJ3N0cm9uZycpOw0KCSAgICBwYXJlbnQuc3R5bGUueklu ZGV4ID0gc2VsZWN0T3ZlcnJpdGVaSW5kZXhfMDsNCgkgICAgcGFyZW50LmNsYXNz TmFtZSA9ICdzZWxlY3RSZXBsYWNlbWVudCc7DQoJICAgIHVsLmNsYXNzTmFtZSA9 ICd1bFJlcGxhY2VtZW50JzsNCgkgICAgc3Bhbi5jbGFzc05hbWUgPSAnc2VsZWN0 UmlnaHRBcnJvdyc7DQoJICAgIHZhciBvcHRzID0gb2JqLm9wdGlvbnM7DQoJICAg IC8vc2VhcmNoIHNlbGVjdGVkIGl0ZW1zDQoJICAgIGZvciAodmFyIGkgPSAwOyBp IDwgb3B0cy5sZW5ndGg7IGkrKykNCgkgICAgew0KCQkgICAgdmFyIHNlbGVjdGVk T3B0Ow0KCQkgICAgaWYgKG9wdHNbaV0uc2VsZWN0ZWQpDQoJCSAgICB7DQoJCQkg ICAgc2VsZWN0ZWRPcHQgPSBpOw0KCQkJICAgIGJyZWFrOw0KCQkgICAgfSBlbHNl DQoJCSAgICB7DQoJCQkgICAgc2VsZWN0ZWRPcHQgPSAwOw0KCQkgICAgfQ0KCSAg ICB9DQoJICAgIC8vY3JlYXRlIGVsZW1lbnRzIGxpDQoJICAgIGZvciAodmFyIGkg PSAwOyBpIDwgb3B0cy5sZW5ndGg7IGkrKykNCgkgICAgew0KCQkgICAgdmFyIGxp ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsNCgkJICAgIHZhciB0eHQg PSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShvcHRzW2ldLnRleHQpOw0KCQkgICAg bGkuYXBwZW5kQ2hpbGQodHh0KTsNCgkJICAgIGxpLnNlbEluZGV4ID0gb3B0c1tp XS5pbmRleDsNCgkJICAgIGxpLnNlbGVjdElEID0gb2JqLmlkOw0KCQkgICAgbGku b25jbGljayA9IGZ1bmN0aW9uKCkNCgkJICAgIHsNCgkJCSAgICBzZWxlY3RNZSh0 aGlzLCBvYmopOw0KCQkJICAgIHVsLnBhcmVudE5vZGUuc3R5bGUuekluZGV4ID0g c2VsZWN0T3ZlcnJpdGVaSW5kZXhfMDsNCgkJCSAgICB1bC5zdHlsZS5kaXNwbGF5 ID0gJ25vbmUnOw0KCQkJICAgIHNwYW4uc3R5bGUuekluZGV4ID0gc2VsZWN0T3Zl cnJpdGVaSW5kZXhfMDsNCgkJICAgIH0NCgkJICAgIGlmIChpID09IHNlbGVjdGVk T3B0KQ0KCQkgICAgew0KCQkJICAgIGFjdHVhbC5pbm5lckhUTUwgPSBsaS5pbm5l ckhUTUw7DQoJCQkgICAgbGkuY2xhc3NOYW1lID0gJ3NlbGVjdGVkJzsNCgkJCSAg ICBsaS5vbmNsaWNrID0gZnVuY3Rpb24oKQ0KCQkJICAgIHsNCgkJCQkgICAgdWwu aWQgPSAnc2VsZWN0T3Blbic7DQoJCQkJICAgIHRoaXMub25jbGljayA9IGZ1bmN0 aW9uKCkNCgkJCQkgICAgew0KCQkJCQkgICAgc2VsZWN0TWUodGhpcywgb2JqKTsN CgkJCQkJICAgIHVsLnBhcmVudE5vZGUuc3R5bGUuekluZGV4ID0gc2VsZWN0T3Zl cnJpdGVaSW5kZXhfMDsNCgkJCQkJICAgIHVsLnN0eWxlLnpJbmRleCA9IHNlbGVj dE92ZXJyaXRlWkluZGV4XzA7DQoJCQkJCSAgICBzcGFuLnN0eWxlLnpJbmRleCA9 IHNlbGVjdE92ZXJyaXRlWkluZGV4XzE7DQoJCQkJICAgIH0NCgkJCSAgICB9DQoJ CQkgICAgYWN0dWFsLm9uY2xpY2sgPSBmdW5jdGlvbigpDQoJCQkgICAgew0KCQkJ CSAgICB1bC5pZCA9ICdzZWxlY3RPcGVuJzsNCgkJCSAgICB9DQoJCQkgICAgc3Bh bi5vbmNsaWNrID0gZnVuY3Rpb24oKQ0KCQkJICAgIHsNCgkJCQkgICAgdWwuaWQg PSAnc2VsZWN0T3Blbic7DQoJCQkgICAgfQ0KCQkJICAgIHNwYW4ub25tb3VzZW92 ZXIgPSBmdW5jdGlvbigpDQoJCQkgICAgew0KCQkJCSAgICBhY3R1YWwuY2xhc3NO YW1lID0gJ2hvdmVyJzsNCgkJCSAgICB9DQoJCQkgICAgc3Bhbi5vbm1vdXNlb3V0 ID0gZnVuY3Rpb24oKQ0KCQkJICAgIHsNCgkJCQkgICAgYWN0dWFsLmNsYXNzTmFt ZSA9IGFjdHVhbC5jbGFzc05hbWUucmVwbGFjZShuZXcgUmVnRXhwKCJob3Zlclxc YiIpLCAnJyk7DQoJCQkgICAgfQ0KCQkgICAgfQ0KCQkgICAgLy9hZGQgaG92ZXIg ZWZlY3QgZm9yIElFDQoJCSAgICBpZiAod2luZG93LmF0dGFjaEV2ZW50KQ0KCQkg ICAgew0KCQkJICAgIGxpLm9ubW91c2VvdmVyID0gZnVuY3Rpb24oKQ0KCQkJICAg IHsNCgkJCQkgICAgdGhpcy5jbGFzc05hbWUgKz0gJyBob3Zlcic7DQoJCQkgICAg fQ0KCQkJICAgIGFjdHVhbC5vbm1vdXNlb3ZlciA9IGZ1bmN0aW9uKCkNCgkJCSAg ICB7DQoJCQkJICAgIHRoaXMuY2xhc3NOYW1lICs9ICcgaG92ZXInOw0KCQkJICAg IH0NCgkJCSAgICBsaS5vbm1vdXNlb3V0ID0gZnVuY3Rpb24oKQ0KCQkJICAgIHsN CgkJCQkgICAgdGhpcy5jbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZS5yZXBsYWNl KG5ldyBSZWdFeHAoIiBob3ZlclxcYiIpLCAnJyk7DQoJCQkgICAgfQ0KCQkJICAg IGFjdHVhbC5vbm1vdXNlb3V0ID0gZnVuY3Rpb24oKQ0KCQkJICAgIHsNCgkJCQkg ICAgdGhpcy5jbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZS5yZXBsYWNlKG5ldyBS ZWdFeHAoIiBob3ZlclxcYiIpLCAnJyk7DQoJCQkgICAgfQ0KCQkgICAgfQ0KCQkg ICAgdWwuYXBwZW5kQ2hpbGQobGkpOw0KCQkgICAgcGFyZW50LmFwcGVuZENoaWxk KGFjdHVhbCk7DQoJCSAgICBwYXJlbnQuYXBwZW5kQ2hpbGQodWwpOw0KCQkgICAg cGFyZW50LmFwcGVuZENoaWxkKHNwYW4pOw0KCQl9DQoJfQ0KCWVsc2UNCgl7DQoJ CXZhciBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsNCgkJ dmFyIHBhcmFncmFwaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsNCgkJ cGFyZW50LmNsYXNzTmFtZSA9ICJzZWxlY3RSZXBsYWNlbWVudCI7DQoJCXBhcmFn cmFwaC5jbGFzc05hbWUgPSAiZGlzYWJsZVNlbGVjdGVkIjsNCgkJcGFyYWdyYXBo LmlubmVySFRNTCA9ICJOZWFrdGl2biZpYWN1dGU7IjsNCgkJcGFyZW50LmFwcGVu ZENoaWxkKHBhcmFncmFwaCk7DQoJfQ0KCS8vYXNzaWduZWQgdG8gcGFyZW50IGVs ZW1lbnQgY3JlYXRlIGVsZW1lbnRzDQoJb2JqLnBhcmVudE5vZGUuYXBwZW5kQ2hp bGQocGFyZW50KTsNCn0NCg0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKg0KLy8gc2VsZWN0IGVsZW1lbnQgbGkNCi8vKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioNCg0KZnVuY3Rpb24gc2VsZWN0TWUob2JqLCBzZWxlY3RP YmplY3QpDQp7DQoJdmFyIGxpcyA9IG9iai5wYXJlbnROb2RlLmdldEVsZW1lbnRz QnlUYWdOYW1lKCdsaScpOw0KCXZhciBwYXJlbnRVbCA9IG9iai5wYXJlbnROb2Rl Ow0KCXZhciBwYXJlbnREaXYgPSBwYXJlbnRVbC5wYXJlbnROb2RlOw0KCXZhciBh Y3R1YWwgPSBwYXJlbnREaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3N0cm9uZycp Ow0KCWZvciAodmFyIGkgPSAwOyBpIDwgbGlzLmxlbmd0aDsgaSsrKQ0KCXsNCgkJ aWYgKGxpc1tpXSAhPSBvYmopDQoJCXsNCgkJCWxpc1tpXS5jbGFzc05hbWU9Jyc7 DQoJCQlsaXNbaV0ub25jbGljayA9IGZ1bmN0aW9uKCkNCgkJCXsNCgkJCQlzZWxl Y3RNZSh0aGlzLCBzZWxlY3RPYmplY3QpOw0KCQkJCW9iai5wYXJlbnROb2RlLmlk ID0gJ3NlbGVjdE9wZW4nOw0KCQkJCXZhciBwYXJlbnQgPSBvYmoucGFyZW50Tm9k ZTsNCgkJCQlwYXJlbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCgkJCQlwYXJl bnQucGFyZW50Tm9kZS5zdHlsZS56SW5kZXggPSBzZWxlY3RPdmVycml0ZVpJbmRl eF8wOw0KCQkJCWFjdHVhbFswXS5zdHlsZS56SW5kZXggPSBzZWxlY3RPdmVycml0 ZVpJbmRleF8xOw0KCQkJfQ0KCQl9DQoJCWVsc2UNCgkJew0KCQkJc2V0VmFsKG9i ai5zZWxlY3RJRCwgb2JqLnNlbEluZGV4KTsNCgkJCW9iai5jbGFzc05hbWUgPSAn c2VsZWN0ZWQnOw0KCQkJYWN0dWFsWzBdLmlubmVySFRNTCA9IG9iai5pbm5lckhU TUw7DQoJCQlvYmoucGFyZW50Tm9kZS5pZCA9ICcnOw0KDQoJCQlpZiAoc2VsZWN0 T2JqZWN0ICE9IHVuZGVmaW5lZCkNCgkJCXsNCgkJCQkvLyBzZWxlY3Rpb24gaW4g dGhlIHBhcmVudCBvYmplY3QNCgkJCQlzZWxlY3RPYmplY3QudmFsdWUgPSBzZWxl Y3RPYmplY3RbaV07DQoJCQkJc2VsZWN0T2JqZWN0W2ldLnNlbGVjdGVkID0gdHJ1 ZTsNCg0KCQkJCS8vIGV4ZWN1dGluZyBvbmNoYW5nZSBldmVudA0KCQkJCWlmICgo c2VsZWN0T2JqZWN0Lm9uY2hhbmdlICE9IG51bGwpICYmIChzZWxlY3RPYmplY3Qu b25jaGFuZ2UgIT0gIiIpKQ0KCQkJCXsNCgkJCQkJdHJ5IHsNCgkJCQkJCXZhciBl dmVudDJFeGVjdXRlID0gc2VsZWN0T2JqZWN0Lm9uY2hhbmdlLnRvU3RyaW5nKCk7 DQoJCQkJCQlldmVudDJFeGVjdXRlID0gZXZlbnQyRXhlY3V0ZS5yZXBsYWNlKCJm dW5jdGlvbiBhbm9ueW1vdXMoKSIsICIiKS5yZXBsYWNlKCJ7XG4iLCAiIikucmVw bGFjZSgiXG57IiwgIiIpLnJlcGxhY2UoImZ1bmN0aW9uIChldmVudCl7IiwgIiIp LnJlcGxhY2UoIjt9IiwgIjsiKTsNCgkJCQkJCWV2ZW50MkV4ZWN1dGUgPSBldmVu dDJFeGVjdXRlLnJlcGxhY2UoIlxufSIsICIiKS5yZXBsYWNlKCJmdW5jdGlvbiBv bmNoYW5nZShldmVudCkgeyIpLnJlcGxhY2UoImZ1bmN0aW9uIG9uY2hhbmdlKGV2 ZW50KSIsICIiKS5yZXBsYWNlKCJmdW5jdGlvbiBvbmNoYW5nZSgpIiwgIiIpOw0K CQkJCQkJZXZhbChldmVudDJFeGVjdXRlKTsNCgkJCQkJfSBjYXRjaCAoZXJyb3Ip IHsgYWxlcnQoZXJyb3IpOyB9DQoJCQkJfQ0KCQkJfQ0KDQoJCQlvYmoub25jbGlj ayA9IGZ1bmN0aW9uKCkNCgkJCXsNCgkJCQlvYmoucGFyZW50Tm9kZS5pZCA9ICdz ZWxlY3RPcGVuJzsNCgkJCQl0aGlzLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsNCgkJ CQkJc2VsZWN0TWUodGhpcywgc2VsZWN0T2JqZWN0KTsNCgkJCQkJb2JqLnBhcmVu dE5vZGUuaWQgPSAnc2VsZWN0T3Blbic7DQoJCQkJCXZhciBwYXJlbnQgPSBvYmou cGFyZW50Tm9kZTsNCgkJCQkJcGFyZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7 DQoJCQkJCXBhcmVudC5wYXJlbnROb2RlLnN0eWxlLnpJbmRleCA9IHNlbGVjdE92 ZXJyaXRlWkluZGV4XzA7DQoJCQkJCWFjdHVhbFswXS5zdHlsZS56SW5kZXggPSBz ZWxlY3RPdmVycml0ZVpJbmRleF8xOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCn0N Cg0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy9zZXQgc2Vs ZWN0IGl0ZW0gYnkgc2VsZWN0ZWQgZWxlbWVudCBsaQ0KLy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKg0KDQpmdW5jdGlvbiBzZXRWYWwob2JqSUQsIHNl bEluZGV4KQ0Kew0KCXZhciBvYmogPSBnZXRFbChvYmpJRCk7DQoJb2JqLnNlbGVj dGVkSW5kZXggPSBzZWxJbmRleDsNCn0NCg0KLy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKg0KLy8gZnVuY3Rpb24gZm9yIGRlbGV0ZSBlbGVtZW50DQov LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoNCmZ1bmN0aW9uIGRl bEVsKHNvdXJjZSkNCnsNCgl3aGlsZShzb3VyY2UuaGFzQ2hpbGROb2RlcygpKQ0K CXsNCgkJc291cmNlLnJlbW92ZUNoaWxkKHNvdXJjZS5sYXN0Q2hpbGQpOw0KCX0N Cn0NCg0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8gZnVu Y3Rpb24gZm9yIHNlbGVjdCBvcHRpb25zDQovLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqDQoNCmZ1bmN0aW9uIHNldE9wdGlvbihlbCxpKQ0Kew0KCXZh ciBpID0gaSArIDE7DQoJdmFyIG9iaiA9IGdldEVsKGVsKTsNCglvYmouc2VsZWN0 ZWRJbmRleCA9IGk7DQoJDQoJdmFyIG9wdHMgPSBvYmoub3B0aW9uczsNCgl2YXIg cGFyZW50ID0gb2JqLnBhcmVudE5vZGU7DQoJdmFyIHN0cm9uZyA9IHBhcmVudC5n ZXRFbGVtZW50c0J5VGFnTmFtZSgnc3Ryb25nJyk7DQoJZm9yICh2YXIgeCA9IDA7 IHggPCBvcHRzLmxlbmd0aDsgeCsrKQ0KCXsNCgkJaWYgKHggPT0gaSkgew0KCQkJ Zm9yICh2YXIgeSA9IDAgOyB5IDwgc3Ryb25nLmxlbmd0aDsgeSsrKQ0KCQkJew0K CQkJCXN0cm9uZ1t5XS5pbm5lckhUTUwgPSBvYmoub3B0aW9uc1t4XS50ZXh0Ow0K CQkJfQ0KCQl9DQoJfQ0KfQ0KDQpmdW5jdGlvbiBjbG9zZVNlbCgpDQp7DQoJaGlk ZSA9IGZhbHNlOw0KDQoJdmFyIHVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh Z05hbWUoJ3VsJyk7DQoJdmFyIHVscyA9IG5ldyBBcnJheSgpOw0KCWZvciAodmFy IGkgPSAwOyBpIDwgdWwubGVuZ3RoOyBpKyspDQoJew0KCQlpZiAodWxbaV0uY2xh c3NOYW1lID09ICd1bFJlcGxhY2VtZW50JykNCgkJew0KCQkJdWxzLnB1c2godWxb aV0pOw0KCQl9DQoJfQ0KCWZvciAodmFyIHkgPSAwOyB5IDwgdWxzLmxlbmd0aDsg eSsrKQ0KCXsNCgkJaWYgKHVsc1t5XS5pZCA9PSAnc2VsZWN0T3BlbicpDQoJCXsN CgkJCWhpZGUgPSB0cnVlOw0KCQl9DQoJfQ0KfQ0KDQovLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqDQovLyBmdW5jdGlvbiBmb3IgZ2V0RWxlbWVudEJ5 SWQNCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCg0KZnVuY3Rp b24gZ2V0RWwoZWwpDQp7DQoJb2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo ZWwpOw0KCWlmIChvYmogIT0gbnVsbCkNCgkJcmV0dXJuIG9iajsNCn0= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=thickbox.js Content-Type: application/x-javascript; charset=utf-8; name=thickbox.js Content-Location: http://teplice.naseadresa.cz/0000-Global/js/thickbox.js Content-Transfer-Encoding: Base64 77u/LyoKICogVGhpY2tib3ggMy4xIC0gT25lIEJveCBUbyBSdWxlIFRoZW0gQWxs LgogKiBCeSBDb2R5IExpbmRsZXkgKGh0dHA6Ly93d3cuY29keWxpbmRsZXkuY29t KQogKiBDb3B5cmlnaHQgKGMpIDIwMDcgY29keSBsaW5kbGV5CiAqIExpY2Vuc2Vk IHVuZGVyIHRoZSBNSVQgTGljZW5zZTogaHR0cDovL3d3dy5vcGVuc291cmNlLm9y Zy9saWNlbnNlcy9taXQtbGljZW5zZS5waHAKKi8KCQkgIAp2YXIgdGJfcGF0aFRv SW1hZ2UgPSBHTE9CQUxfRklMRV9TRVJWRVIgKyAiaW1hZ2VzL2xvYWRpbmdBbmlt YXRpb24uZ2lmIjsKCi8qISEhISEhISEhISEhISEhISEgZWRpdCBiZWxvdyB0aGlz IGxpbmUgYXQgeW91ciBvd24gcmlzayAhISEhISEhISEhISEhISEhISEhISEhISov CgovL29uIHBhZ2UgbG9hZCBjYWxsIHRiX2luaXQKJChkb2N1bWVudCkucmVhZHko ZnVuY3Rpb24oKXsgICAKCXRiX2luaXQoJ2EudGhpY2tib3gsIGFyZWEudGhpY2ti b3gsIGlucHV0LnRoaWNrYm94Jyk7Ly9wYXNzIHdoZXJlIHRvIGFwcGx5IHRoaWNr Ym94CglpbWdMb2FkZXIgPSBuZXcgSW1hZ2UoKTsvLyBwcmVsb2FkIGltYWdlCglp bWdMb2FkZXIuc3JjID0gdGJfcGF0aFRvSW1hZ2U7Cn0pOwoKLy9hZGQgdGhpY2ti b3ggdG8gaHJlZiAmIGFyZWEgZWxlbWVudHMgdGhhdCBoYXZlIGEgY2xhc3Mgb2Yg LnRoaWNrYm94CmZ1bmN0aW9uIHRiX2luaXQoZG9tQ2h1bmspewoJJChkb21DaHVu aykuY2xpY2soZnVuY3Rpb24oKXsKCXZhciB0ID0gdGhpcy50aXRsZSB8fCB0aGlz Lm5hbWUgfHwgbnVsbDsKCXZhciBhID0gdGhpcy5ocmVmIHx8IHRoaXMuYWx0OwoJ dmFyIGcgPSB0aGlzLnJlbCB8fCBmYWxzZTsKCXRiX3Nob3codCxhLGcpOwoJdGhp cy5ibHVyKCk7CglyZXR1cm4gZmFsc2U7Cgl9KTsKfQoKZnVuY3Rpb24gdGJfc2hv dyhjYXB0aW9uLCB1cmwsIGltYWdlR3JvdXApIHsvL2Z1bmN0aW9uIGNhbGxlZCB3 aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiBhIHRoaWNrYm94IGxpbmsKCgl0cnkgewoJ CWlmICh0eXBlb2YgZG9jdW1lbnQuYm9keS5zdHlsZS5tYXhIZWlnaHQgPT09ICJ1 bmRlZmluZWQiKSB7Ly9pZiBJRSA2CgkJCSQoImJvZHkiLCJodG1sIikuY3NzKHto ZWlnaHQ6ICIxMDAlIiwgd2lkdGg6ICIxMDAlIn0pOwoJCQkkKCJodG1sIikuY3Nz KCJvdmVyZmxvdyIsImhpZGRlbiIpOwoJCQlpZiAoZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoIlRCX0hpZGVTZWxlY3QiKSA9PT0gbnVsbCkgey8vaWZyYW1lIHRvIGhp ZGUgc2VsZWN0IGVsZW1lbnRzIGluIGllNgoJCQkJJCgiYm9keSIpLmFwcGVuZCgi PGlmcmFtZSBpZD0nVEJfSGlkZVNlbGVjdCc+PC9pZnJhbWU+PGRpdiBpZD0nVEJf b3ZlcmxheSc+PC9kaXY+PGRpdiBpZD0nVEJfd2luZG93Jz48L2Rpdj4iKTsKCQkJ CSQoIiNUQl9vdmVybGF5IikuY2xpY2sodGJfcmVtb3ZlKTsKCQkJfQoJCX1lbHNl ey8vYWxsIG90aGVycwoJCQlpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiVEJf b3ZlcmxheSIpID09PSBudWxsKXsKCQkJCSQoImJvZHkiKS5hcHBlbmQoIjxkaXYg aWQ9J1RCX292ZXJsYXknPjwvZGl2PjxkaXYgaWQ9J1RCX3dpbmRvdyc+PC9kaXY+ Iik7CgkJCQkkKCIjVEJfb3ZlcmxheSIpLmNsaWNrKHRiX3JlbW92ZSk7CgkJCX0K CQl9CgkJCgkJaWYodGJfZGV0ZWN0TWFjWEZGKCkpewoJCQkkKCIjVEJfb3Zlcmxh eSIpLmFkZENsYXNzKCJUQl9vdmVybGF5TWFjRkZCR0hhY2siKTsvL3VzZSBwbmcg b3ZlcmxheSBzbyBoaWRlIGZsYXNoCgkJfWVsc2V7CgkJCSQoIiNUQl9vdmVybGF5 IikuYWRkQ2xhc3MoIlRCX292ZXJsYXlCRyIpOy8vdXNlIGJhY2tncm91bmQgYW5k IG9wYWNpdHkKCQl9CgkJCgkJaWYoY2FwdGlvbj09PW51bGwpe2NhcHRpb249IiI7 fQoJCSQoImJvZHkiKS5hcHBlbmQoIjxkaXYgaWQ9J1RCX2xvYWQnPjxpbWcgc3Jj PSciK2ltZ0xvYWRlci5zcmMrIicgLz48L2Rpdj4iKTsvL2FkZCBsb2FkZXIgdG8g dGhlIHBhZ2UKCQkkKCcjVEJfbG9hZCcpLnNob3coKTsvL3Nob3cgbG9hZGVyCgkJ CgkJdmFyIGJhc2VVUkw7CgkgICBpZih1cmwuaW5kZXhPZigiPyIpIT09LTEpeyAv L2ZmIHRoZXJlIGlzIGEgcXVlcnkgc3RyaW5nIGludm9sdmVkCgkJCWJhc2VVUkwg PSB1cmwuc3Vic3RyKDAsIHVybC5pbmRleE9mKCI/IikpOwoJICAgfWVsc2V7IAoJ ICAgCQliYXNlVVJMID0gdXJsOwoJICAgfQoJICAgCgkgICB2YXIgdXJsU3RyaW5n ID0gL1wuanBnJHxcLmpwZWckfFwucG5nJHxcLmdpZiR8XC5ibXAkLzsKCSAgIHZh ciB1cmxUeXBlID0gYmFzZVVSTC50b0xvd2VyQ2FzZSgpLm1hdGNoKHVybFN0cmlu Zyk7CgoJCWlmKHVybFR5cGUgPT0gJy5qcGcnIHx8IHVybFR5cGUgPT0gJy5qcGVn JyB8fCB1cmxUeXBlID09ICcucG5nJyB8fCB1cmxUeXBlID09ICcuZ2lmJyB8fCB1 cmxUeXBlID09ICcuYm1wJyl7Ly9jb2RlIHRvIHNob3cgaW1hZ2VzCgkJCQkKCQkJ VEJfUHJldkNhcHRpb24gPSAiIjsKCQkJVEJfUHJldlVSTCA9ICIiOwoJCQlUQl9Q cmV2SFRNTCA9ICIiOwoJCQlUQl9OZXh0Q2FwdGlvbiA9ICIiOwoJCQlUQl9OZXh0 VVJMID0gIiI7CgkJCVRCX05leHRIVE1MID0gIiI7CgkJCVRCX2ltYWdlQ291bnQg PSAiIjsKCQkJVEJfRm91bmRVUkwgPSBmYWxzZTsKCQkJaWYoaW1hZ2VHcm91cCl7 CgkJCQlUQl9UZW1wQXJyYXkgPSAkKCJhW0ByZWw9IitpbWFnZUdyb3VwKyJdIiku Z2V0KCk7CgkJCQlmb3IgKFRCX0NvdW50ZXIgPSAwOyAoKFRCX0NvdW50ZXIgPCBU Ql9UZW1wQXJyYXkubGVuZ3RoKSAmJiAoVEJfTmV4dEhUTUwgPT09ICIiKSk7IFRC X0NvdW50ZXIrKykgewoJCQkJCXZhciB1cmxUeXBlVGVtcCA9IFRCX1RlbXBBcnJh eVtUQl9Db3VudGVyXS5ocmVmLnRvTG93ZXJDYXNlKCkubWF0Y2godXJsU3RyaW5n KTsKCQkJCQkJaWYgKCEoVEJfVGVtcEFycmF5W1RCX0NvdW50ZXJdLmhyZWYgPT0g dXJsKSkgewkJCQkJCQoJCQkJCQkJaWYgKFRCX0ZvdW5kVVJMKSB7CgkJCQkJCQkJ VEJfTmV4dENhcHRpb24gPSBUQl9UZW1wQXJyYXlbVEJfQ291bnRlcl0udGl0bGU7 CgkJCQkJCQkJVEJfTmV4dFVSTCA9IFRCX1RlbXBBcnJheVtUQl9Db3VudGVyXS5o cmVmOwoJCQkJCQkJCVRCX05leHRIVE1MID0gIjxzcGFuIGlkPSdUQl9uZXh0Jz4m bmJzcDsmbmJzcDs8YSBocmVmPScjJz5EYWzFocOtICZndDs8L2E+PC9zcGFuPiI7 CgkJCQkJCQl9IGVsc2UgewoJCQkJCQkJCVRCX1ByZXZDYXB0aW9uID0gVEJfVGVt cEFycmF5W1RCX0NvdW50ZXJdLnRpdGxlOwoJCQkJCQkJCVRCX1ByZXZVUkwgPSBU Ql9UZW1wQXJyYXlbVEJfQ291bnRlcl0uaHJlZjsKCQkJCQkJCQlUQl9QcmV2SFRN TCA9ICI8c3BhbiBpZD0nVEJfcHJldic+Jm5ic3A7Jm5ic3A7PGEgaHJlZj0nIyc+ Jmx0OyBQxZllZGNob3rDrTwvYT48L3NwYW4+IjsKCQkJCQkJCX0KCQkJCQkJfSBl bHNlIHsKCQkJCQkJCVRCX0ZvdW5kVVJMID0gdHJ1ZTsKCQkJCQkJCVRCX2ltYWdl Q291bnQgPSAiT2Jyw6F6ZWsgIiArIChUQl9Db3VudGVyICsgMSkgKyIgb2YgIisg KFRCX1RlbXBBcnJheS5sZW5ndGgpOwkJCQkJCQkJCQkJCgkJCQkJCX0KCQkJCX0K CQkJfQoJCQlpZiAoKFRCX05leHRIVE1MID09ICIiKSAmJiAoVEJfUHJldkhUTUwg IT0gIiIpKSBUQl9OZXh0SFRNTCA9ICI8c3Bhbj4mbmJzcDsmbmJzcDtEYWzFocOt ICZndDs8L3NwYW4+IjsKCQkJaWYgKChUQl9QcmV2SFRNTCA9PSAiIikgJiYgKFRC X05leHRIVE1MICE9ICIiKSkgVEJfUHJldkhUTUwgPSAiPHNwYW4+Jm5ic3A7Jm5i c3A7Jmx0OyBQxZllZGNob3rDrTwvc3Bhbj4iOwoKCQkJaW1nUHJlbG9hZGVyID0g bmV3IEltYWdlKCk7CgkJCWltZ1ByZWxvYWRlci5vbmxvYWQgPSBmdW5jdGlvbigp ewkJCgkJCWltZ1ByZWxvYWRlci5vbmxvYWQgPSBudWxsOwoJCQkJCgkJCS8vIFJl c2l6aW5nIGxhcmdlIGltYWdlcyAtIG9yZ2luYWwgYnkgQ2hyaXN0aWFuIE1vbnRv eWEgZWRpdGVkIGJ5IG1lLgoJCQl2YXIgcGFnZXNpemUgPSB0Yl9nZXRQYWdlU2l6 ZSgpOwoJCQl2YXIgeCA9IHBhZ2VzaXplWzBdIC0gMTUwOwoJCQl2YXIgeSA9IHBh Z2VzaXplWzFdIC0gMTUwOwoJCQl2YXIgaW1hZ2VXaWR0aCA9IGltZ1ByZWxvYWRl ci53aWR0aDsKCQkJdmFyIGltYWdlSGVpZ2h0ID0gaW1nUHJlbG9hZGVyLmhlaWdo dDsKCQkJaWYgKGltYWdlV2lkdGggPiB4KSB7CgkJCQlpbWFnZUhlaWdodCA9IGlt YWdlSGVpZ2h0ICogKHggLyBpbWFnZVdpZHRoKTsgCgkJCQlpbWFnZVdpZHRoID0g eDsgCgkJCQlpZiAoaW1hZ2VIZWlnaHQgPiB5KSB7IAoJCQkJCWltYWdlV2lkdGgg PSBpbWFnZVdpZHRoICogKHkgLyBpbWFnZUhlaWdodCk7IAoJCQkJCWltYWdlSGVp Z2h0ID0geTsgCgkJCQl9CgkJCX0gZWxzZSBpZiAoaW1hZ2VIZWlnaHQgPiB5KSB7 IAoJCQkJaW1hZ2VXaWR0aCA9IGltYWdlV2lkdGggKiAoeSAvIGltYWdlSGVpZ2h0 KTsgCgkJCQlpbWFnZUhlaWdodCA9IHk7IAoJCQkJaWYgKGltYWdlV2lkdGggPiB4 KSB7IAoJCQkJCWltYWdlSGVpZ2h0ID0gaW1hZ2VIZWlnaHQgKiAoeCAvIGltYWdl V2lkdGgpOyAKCQkJCQlpbWFnZVdpZHRoID0geDsKCQkJCX0KCQkJfQoJCQkvLyBF bmQgUmVzaXppbmcKCQkJCgkJCS8vIG5hc3RhdmVuaSB2ZWxpa29zdGkgb2tuYSB0 aGlja2JveHUKCQkJLy9UQl9XSURUSCA9IGltYWdlV2lkdGggKyAzMDsKCQkJLy9U Ql9IRUlHSFQgPSBpbWFnZUhlaWdodCArIDYwOwoJCQlUQl9XSURUSCA9IDg1MDsK CQkJVEJfSEVJR0hUID0gaW1hZ2VIZWlnaHQgKyA4MDsKCQkJJCgiI1RCX3dpbmRv dyIpLmFwcGVuZCgiIisKCQkJICAgICI8dGFibGUgc3R5bGU9XCJiYWNrZ3JvdW5k Om5vbmU7d2lkdGg6ODIwcHg7aGVpZ2h0OiIraW1hZ2VIZWlnaHQrInB4O21hcmdp bjowIGF1dG87ZGlzcGxheTpibG9jaztvdmVyZmxvdzpoaWRkZW47dGV4dC1hbGln bjpjZW50ZXI7XCIgY2VsbHBhZGRpbmc9XCIwXCIgY2VsbHNwYWNpbmc9XCIwXCI+ IisKCQkJICAgICI8dHI+PHRkIHZhbGlnbj1cImNlbnRlclwiIHN0eWxlPVwidGV4 dC1hbGlnbjpjZW50ZXI7d2lkdGg6ODIwcHg7aGVpZ2h0OiIraW1hZ2VIZWlnaHQr InB4O3BhZGRpbmc6IDEwcHggMDtcIj4iKwoJCQkgICAgICAgICI8YSBocmVmPScn IGlkPSdUQl9JbWFnZU9mZicgdGl0bGU9J0Nsb3NlJyBzdHlsZT0ndGV4dC1hbGln bjpjZW50ZXI7Jz48aW1nIGlkPSdUQl9JbWFnZScgc3JjPSciK3VybCsiJyB3aWR0 aD0nIitpbWFnZVdpZHRoKyInIGhlaWdodD0nIitpbWFnZUhlaWdodCsiJyBhbHQ9 JyIrY2FwdGlvbisiJyBzdHlsZT0nd2lkdGg6IitpbWFnZVdpZHRoKyI7IG1hcmdp bjogMCBhdXRvOycgLz48L2E+IisKCQkJICAgICI8L3RkPjwvdHI+IisKCQkJICAg ICI8L3RhYmxlPiIrCgkJCSAgICAiPGRpdiBpZD0nVEJfY2FwdGlvbic+IitjYXB0 aW9uKyI8ZGl2IGlkPSdUQl9zZWNvbmRMaW5lJz4iICsgVEJfaW1hZ2VDb3VudCAr IFRCX1ByZXZIVE1MICsgVEJfTmV4dEhUTUwgKyAiPC9kaXY+PC9kaXY+PGRpdiBp ZD0nVEJfY2xvc2VXaW5kb3cnPjxhIGhyZWY9JyMnIGlkPSdUQl9jbG9zZVdpbmRv d0J1dHRvbicgdGl0bGU9J1phdsWZw610Jz56YXbFmcOtdDwvYT4gbmVibyBzdGlz a27Em3RlIGtsw6F2ZXN1IEVzYzwvZGl2PiIpOyAJCQoJCQkKCQkJJCgiI1RCX2Ns b3NlV2luZG93QnV0dG9uIikuY2xpY2sodGJfcmVtb3ZlKTsKCQkJCgkJCWlmICgh KFRCX1ByZXZIVE1MID09PSAiIikpIHsKCQkJCWZ1bmN0aW9uIGdvUHJldigpewoJ CQkJCWlmKCQoZG9jdW1lbnQpLnVuYmluZCgiY2xpY2siLGdvUHJldikpeyQoZG9j dW1lbnQpLnVuYmluZCgiY2xpY2siLGdvUHJldik7fQoJCQkJCSQoIiNUQl93aW5k b3ciKS5yZW1vdmUoKTsKCQkJCQkkKCJib2R5IikuYXBwZW5kKCI8ZGl2IGlkPSdU Ql93aW5kb3cnPjwvZGl2PiIpOwoJCQkJCXRiX3Nob3coVEJfUHJldkNhcHRpb24s IFRCX1ByZXZVUkwsIGltYWdlR3JvdXApOwoJCQkJCXJldHVybiBmYWxzZTsJCgkJ CQl9CgkJCQkkKCIjVEJfcHJldiIpLmNsaWNrKGdvUHJldik7CgkJCX0KCQkJCgkJ CWlmICghKFRCX05leHRIVE1MID09PSAiIikpIHsJCQoJCQkJZnVuY3Rpb24gZ29O ZXh0KCl7CgkJCQkJJCgiI1RCX3dpbmRvdyIpLnJlbW92ZSgpOwoJCQkJCSQoImJv ZHkiKS5hcHBlbmQoIjxkaXYgaWQ9J1RCX3dpbmRvdyc+PC9kaXY+Iik7CgkJCQkJ dGJfc2hvdyhUQl9OZXh0Q2FwdGlvbiwgVEJfTmV4dFVSTCwgaW1hZ2VHcm91cCk7 CQkJCQoJCQkJCXJldHVybiBmYWxzZTsJCgkJCQl9CgkJCQkkKCIjVEJfbmV4dCIp LmNsaWNrKGdvTmV4dCk7CgkJCQkKCQkJfQoKCQkJZG9jdW1lbnQub25rZXlkb3du ID0gZnVuY3Rpb24oZSl7IAkKCQkJCWlmIChlID09IG51bGwpIHsgLy8gaWUKCQkJ CQlrZXljb2RlID0gZXZlbnQua2V5Q29kZTsKCQkJCX0gZWxzZSB7IC8vIG1vemls bGEKCQkJCQlrZXljb2RlID0gZS53aGljaDsKCQkJCX0KCQkJCWlmKGtleWNvZGUg PT0gMjcpeyAvLyBjbG9zZQoJCQkJCXRiX3JlbW92ZSgpOwoJCQkJfSBlbHNlIGlm KGtleWNvZGUgPT0gMTkwKXsgLy8gZGlzcGxheSBwcmV2aW91cyBpbWFnZQoJCQkJ CWlmKCEoVEJfTmV4dEhUTUwgPT0gIiIpKXsKCQkJCQkJZG9jdW1lbnQub25rZXlk b3duID0gIiI7CgkJCQkJCWdvTmV4dCgpOwoJCQkJCX0KCQkJCX0gZWxzZSBpZihr ZXljb2RlID09IDE4OCl7IC8vIGRpc3BsYXkgbmV4dCBpbWFnZQoJCQkJCWlmKCEo VEJfUHJldkhUTUwgPT0gIiIpKXsKCQkJCQkJZG9jdW1lbnQub25rZXlkb3duID0g IiI7CgkJCQkJCWdvUHJldigpOwoJCQkJCX0KCQkJCX0JCgkJCX07CgkJCQoJCQl0 Yl9wb3NpdGlvbigpOwoJCQkkKCIjVEJfbG9hZCIpLnJlbW92ZSgpOwoJCQkkKCIj VEJfSW1hZ2VPZmYiKS5jbGljayh0Yl9yZW1vdmUpOwoJCQkkKCIjVEJfd2luZG93 IikuY3NzKHtkaXNwbGF5OiJibG9jayJ9KTsgLy9mb3Igc2FmYXJpIHVzaW5nIGNz cyBpbnN0ZWFkIG9mIHNob3cKCQkJfTsKCQkJCgkJCWltZ1ByZWxvYWRlci5zcmMg PSB1cmw7CgkJfWVsc2V7Ly9jb2RlIHRvIHNob3cgaHRtbAoJCQkKCQkJdmFyIHF1 ZXJ5U3RyaW5nID0gdXJsLnJlcGxhY2UoL15bXlw/XStcPz8vLCcnKTsKCQkJdmFy IHBhcmFtcyA9IHRiX3BhcnNlUXVlcnkoIHF1ZXJ5U3RyaW5nICk7CgoJCQlUQl9X SURUSCA9IChwYXJhbXNbJ3dpZHRoJ10qMSkgKyAzMCB8fCA2MzA7IC8vZGVmYXVs dHMgdG8gNjMwIGlmIG5vIHBhcmFtYXRlcnMgd2VyZSBhZGRlZCB0byBVUkwKCQkJ VEJfSEVJR0hUID0gKHBhcmFtc1snaGVpZ2h0J10qMSkgKyA0MCB8fCA0NDA7IC8v ZGVmYXVsdHMgdG8gNDQwIGlmIG5vIHBhcmFtYXRlcnMgd2VyZSBhZGRlZCB0byBV UkwKCQkJYWpheENvbnRlbnRXID0gVEJfV0lEVEggLSAzMDsKCQkJYWpheENvbnRl bnRIID0gVEJfSEVJR0hUIC0gNDU7CgkJCQoJCQlpZih1cmwuaW5kZXhPZignVEJf aWZyYW1lJykgIT0gLTEpey8vIGVpdGhlciBpZnJhbWUgb3IgYWpheCB3aW5kb3cJ CQoJCQkJCXVybE5vUXVlcnkgPSB1cmwuc3BsaXQoJ1RCXycpOwoJCQkJCSQoIiNU Ql9pZnJhbWVDb250ZW50IikucmVtb3ZlKCk7CgkJCQkJaWYocGFyYW1zWydtb2Rh bCddICE9ICJ0cnVlIil7Ly9pZnJhbWUgbm8gbW9kYWwKCQkJCQkJJCgiI1RCX3dp bmRvdyIpLmFwcGVuZCgiPGRpdiBpZD0nVEJfdGl0bGUnPjxkaXYgaWQ9J1RCX2Fq YXhXaW5kb3dUaXRsZSc+IitjYXB0aW9uKyI8L2Rpdj48ZGl2IGlkPSdUQl9jbG9z ZUFqYXhXaW5kb3cnPjxhIGhyZWY9JyMnIGlkPSdUQl9jbG9zZVdpbmRvd0J1dHRv bicgdGl0bGU9J1phdsWZw610Jz56YXbFmcOtdDwvYT4gbmVibyBzdGlza27Em3Rl IGtsw6F2ZXN1IEVzYzwvZGl2PjwvZGl2PjxpZnJhbWUgZnJhbWVib3JkZXI9JzAn IGhzcGFjZT0nMCcgc3JjPSciK3VybE5vUXVlcnlbMF0rIicgaWQ9J1RCX2lmcmFt ZUNvbnRlbnQnIG5hbWU9J1RCX2lmcmFtZUNvbnRlbnQiK01hdGgucm91bmQoTWF0 aC5yYW5kb20oKSoxMDAwKSsiJyBvbmxvYWQ9J3RiX3Nob3dJZnJhbWUoKScgc3R5 bGU9J3dpZHRoOiIrKGFqYXhDb250ZW50VyArIDI5KSsicHg7aGVpZ2h0OiIrKGFq YXhDb250ZW50SCArIDE3KSsicHg7JyA+IDwvaWZyYW1lPiIpOwoJCQkJCX1lbHNl ey8vaWZyYW1lIG1vZGFsCgkJCQkJJCgiI1RCX292ZXJsYXkiKS51bmJpbmQoKTsK CQkJCQkJJCgiI1RCX3dpbmRvdyIpLmFwcGVuZCgiPGlmcmFtZSBmcmFtZWJvcmRl cj0nMCcgaHNwYWNlPScwJyBzcmM9JyIrdXJsTm9RdWVyeVswXSsiJyBpZD0nVEJf aWZyYW1lQ29udGVudCcgbmFtZT0nVEJfaWZyYW1lQ29udGVudCIrTWF0aC5yb3Vu ZChNYXRoLnJhbmRvbSgpKjEwMDApKyInIG9ubG9hZD0ndGJfc2hvd0lmcmFtZSgp JyBzdHlsZT0nd2lkdGg6IisoYWpheENvbnRlbnRXICsgMjkpKyJweDtoZWlnaHQ6 IisoYWpheENvbnRlbnRIICsgMTcpKyJweDsnPiA8L2lmcmFtZT4iKTsKCQkJCQl9 CgkJCX1lbHNley8vIG5vdCBhbiBpZnJhbWUsIGFqYXgKCQkJCQlpZigkKCIjVEJf d2luZG93IikuY3NzKCJkaXNwbGF5IikgIT0gImJsb2NrIil7CgkJCQkJCWlmKHBh cmFtc1snbW9kYWwnXSAhPSAidHJ1ZSIpey8vYWpheCBubyBtb2RhbAoJCQkJCQkk KCIjVEJfd2luZG93IikuYXBwZW5kKCI8ZGl2IGlkPSdUQl90aXRsZSc+PGRpdiBp ZD0nVEJfYWpheFdpbmRvd1RpdGxlJz4iK2NhcHRpb24rIjwvZGl2PjxkaXYgaWQ9 J1RCX2Nsb3NlQWpheFdpbmRvdyc+PGEgaHJlZj0nIycgaWQ9J1RCX2Nsb3NlV2lu ZG93QnV0dG9uJz56YXbFmcOtdDwvYT4gbmVibyBzdGlza27Em3RlIGtsw6F2ZXN1 IEVzYzwvZGl2PjwvZGl2PjxkaXYgaWQ9J1RCX2FqYXhDb250ZW50JyBzdHlsZT0n d2lkdGg6IithamF4Q29udGVudFcrInB4O2hlaWdodDoiK2FqYXhDb250ZW50SCsi cHgnPjwvZGl2PiIpOwoJCQkJCQl9ZWxzZXsvL2FqYXggbW9kYWwKCQkJCQkJJCgi I1RCX292ZXJsYXkiKS51bmJpbmQoKTsKCQkJCQkJJCgiI1RCX3dpbmRvdyIpLmFw cGVuZCgiPGRpdiBpZD0nVEJfYWpheENvbnRlbnQnIGNsYXNzPSdUQl9tb2RhbCcg c3R5bGU9J3dpZHRoOiIrYWpheENvbnRlbnRXKyJweDtoZWlnaHQ6IithamF4Q29u dGVudEgrInB4Oyc+PC9kaXY+Iik7CQoJCQkJCQl9CgkJCQkJfWVsc2V7Ly90aGlz IG1lYW5zIHRoZSB3aW5kb3cgaXMgYWxyZWFkeSB1cCwgd2UgYXJlIGp1c3QgbG9h ZGluZyBuZXcgY29udGVudCB2aWEgYWpheAoJCQkJCQkkKCIjVEJfYWpheENvbnRl bnQiKVswXS5zdHlsZS53aWR0aCA9IGFqYXhDb250ZW50VyArInB4IjsKCQkJCQkJ JCgiI1RCX2FqYXhDb250ZW50IilbMF0uc3R5bGUuaGVpZ2h0ID0gYWpheENvbnRl bnRIICsicHgiOwoJCQkJCQkkKCIjVEJfYWpheENvbnRlbnQiKVswXS5zY3JvbGxU b3AgPSAwOwoJCQkJCQkkKCIjVEJfYWpheFdpbmRvd1RpdGxlIikuaHRtbChjYXB0 aW9uKTsKCQkJCQl9CgkJCX0KCQkJCQkKCQkJJCgiI1RCX2Nsb3NlV2luZG93QnV0 dG9uIikuY2xpY2sodGJfcmVtb3ZlKTsKCQkJCgkJCQlpZih1cmwuaW5kZXhPZign VEJfaW5saW5lJykgIT0gLTEpewkKCQkJCQkkKCIjVEJfYWpheENvbnRlbnQiKS5h cHBlbmQoJCgnIycgKyBwYXJhbXNbJ2lubGluZUlkJ10pLmNoaWxkcmVuKCkpOwoJ CQkJCSQoIiNUQl93aW5kb3ciKS51bmxvYWQoZnVuY3Rpb24gKCkgewoJCQkJCQkk KCcjJyArIHBhcmFtc1snaW5saW5lSWQnXSkuYXBwZW5kKCAkKCIjVEJfYWpheENv bnRlbnQiKS5jaGlsZHJlbigpICk7IC8vIG1vdmUgZWxlbWVudHMgYmFjayB3aGVu IHlvdSdyZSBmaW5pc2hlZAoJCQkJCX0pOwoJCQkJCXRiX3Bvc2l0aW9uKCk7CgkJ CQkJJCgiI1RCX2xvYWQiKS5yZW1vdmUoKTsKCQkJCQkkKCIjVEJfd2luZG93Iiku Y3NzKHtkaXNwbGF5OiJibG9jayJ9KTsgCgkJCQl9ZWxzZSBpZih1cmwuaW5kZXhP ZignVEJfaWZyYW1lJykgIT0gLTEpewoJCQkJCXRiX3Bvc2l0aW9uKCk7CgkJCQkJ aWYoJC5icm93c2VyLnNhZmFyaSl7Ly9zYWZhcmkgbmVlZHMgaGVscCBiZWNhdXNl IGl0IHdpbGwgbm90IGZpcmUgaWZyYW1lIG9ubG9hZAoJCQkJCQkkKCIjVEJfbG9h ZCIpLnJlbW92ZSgpOwoJCQkJCQkkKCIjVEJfd2luZG93IikuY3NzKHtkaXNwbGF5 OiJibG9jayJ9KTsKCQkJCQl9CgkJCQl9ZWxzZXsKCQkJCQkkKCIjVEJfYWpheENv bnRlbnQiKS5sb2FkKHVybCArPSAiJnJhbmRvbT0iICsgKG5ldyBEYXRlKCkuZ2V0 VGltZSgpKSxmdW5jdGlvbigpey8vdG8gZG8gYSBwb3N0IGNoYW5nZSB0aGlzIGxv YWQgbWV0aG9kCgkJCQkJCXRiX3Bvc2l0aW9uKCk7CgkJCQkJCSQoIiNUQl9sb2Fk IikucmVtb3ZlKCk7CgkJCQkJCXRiX2luaXQoIiNUQl9hamF4Q29udGVudCBhLnRo aWNrYm94Iik7CgkJCQkJCSQoIiNUQl93aW5kb3ciKS5jc3Moe2Rpc3BsYXk6ImJs b2NrIn0pOwoJCQkJCX0pOwoJCQkJfQoJCQkKCQl9CgoJCWlmKCFwYXJhbXNbJ21v ZGFsJ10pewoJCQlkb2N1bWVudC5vbmtleXVwID0gZnVuY3Rpb24oZSl7IAkKCQkJ CWlmIChlID09IG51bGwpIHsgLy8gaWUKCQkJCQlrZXljb2RlID0gZXZlbnQua2V5 Q29kZTsKCQkJCX0gZWxzZSB7IC8vIG1vemlsbGEKCQkJCQlrZXljb2RlID0gZS53 aGljaDsKCQkJCX0KCQkJCWlmKGtleWNvZGUgPT0gMjcpeyAvLyBjbG9zZQoJCQkJ CXRiX3JlbW92ZSgpOwoJCQkJfQkKCQkJfTsKCQl9CgkJCgl9IGNhdGNoKGUpIHsK CQkvL25vdGhpbmcgaGVyZQoJfQp9CgovL2hlbHBlciBmdW5jdGlvbnMgYmVsb3cK ZnVuY3Rpb24gdGJfc2hvd0lmcmFtZSgpewoJJCgiI1RCX2xvYWQiKS5yZW1vdmUo KTsKCSQoIiNUQl93aW5kb3ciKS5jc3Moe2Rpc3BsYXk6ImJsb2NrIn0pOwp9Cgpm dW5jdGlvbiB0Yl9yZW1vdmUoKSB7CiAJJCgiI1RCX2ltYWdlT2ZmIikudW5iaW5k KCJjbGljayIpOwoJJCgiI1RCX2Nsb3NlV2luZG93QnV0dG9uIikudW5iaW5kKCJj bGljayIpOwoJJCgiI1RCX3dpbmRvdyIpLmZhZGVPdXQoImZhc3QiLGZ1bmN0aW9u KCl7JCgnI1RCX3dpbmRvdywjVEJfb3ZlcmxheSwjVEJfSGlkZVNlbGVjdCcpLnRy aWdnZXIoInVubG9hZCIpLnVuYmluZCgpLnJlbW92ZSgpO30pOwoJJCgiI1RCX2xv YWQiKS5yZW1vdmUoKTsKCWlmICh0eXBlb2YgZG9jdW1lbnQuYm9keS5zdHlsZS5t YXhIZWlnaHQgPT0gInVuZGVmaW5lZCIpIHsvL2lmIElFIDYKCQkkKCJib2R5Iiwi aHRtbCIpLmNzcyh7aGVpZ2h0OiAiYXV0byIsIHdpZHRoOiAiYXV0byJ9KTsKCQkk KCJodG1sIikuY3NzKCJvdmVyZmxvdyIsIiIpOwoJfQoJZG9jdW1lbnQub25rZXlk b3duID0gIiI7Cglkb2N1bWVudC5vbmtleXVwID0gIiI7CglyZXR1cm4gZmFsc2U7 Cn0KCmZ1bmN0aW9uIHRiX3Bvc2l0aW9uKCkgewogICAgJCgiI1RCX3dpbmRvdyIp LmNzcyh7bWFyZ2luTGVmdDogJy0nICsgcGFyc2VJbnQoKFRCX1dJRFRIIC8gMiks MTApICsgJ3B4Jywgd2lkdGg6IFRCX1dJRFRIICsgJ3B4JywgaGVpZ2h0OiBUQl9I RUlHSFQgKyAncHgnfSk7CglpZiAoICEoalF1ZXJ5LmJyb3dzZXIubXNpZSAmJiBq UXVlcnkuYnJvd3Nlci52ZXJzaW9uIDwgNykpIHsgLy8gdGFrZSBhd2F5IElFNgoJ CSQoIiNUQl93aW5kb3ciKS5jc3Moe21hcmdpblRvcDogJy0nICsgcGFyc2VJbnQo KFRCX0hFSUdIVCAvIDIpLDEwKSArICdweCd9KTsKCX0KfQoKZnVuY3Rpb24gdGJf cGFyc2VRdWVyeSAoIHF1ZXJ5ICkgewogICB2YXIgUGFyYW1zID0ge307CiAgIGlm ICggISBxdWVyeSApIHtyZXR1cm4gUGFyYW1zO30vLyByZXR1cm4gZW1wdHkgb2Jq ZWN0CiAgIHZhciBQYWlycyA9IHF1ZXJ5LnNwbGl0KC9bOyZdLyk7CiAgIGZvciAo IHZhciBpID0gMDsgaSA8IFBhaXJzLmxlbmd0aDsgaSsrICkgewogICAgICB2YXIg S2V5VmFsID0gUGFpcnNbaV0uc3BsaXQoJz0nKTsKICAgICAgaWYgKCAhIEtleVZh bCB8fCBLZXlWYWwubGVuZ3RoICE9IDIgKSB7Y29udGludWU7fQogICAgICB2YXIg a2V5ID0gdW5lc2NhcGUoIEtleVZhbFswXSApOwogICAgICB2YXIgdmFsID0gdW5l c2NhcGUoIEtleVZhbFsxXSApOwogICAgICB2YWwgPSB2YWwucmVwbGFjZSgvXCsv ZywgJyAnKTsKICAgICAgUGFyYW1zW2tleV0gPSB2YWw7CiAgIH0KICAgcmV0dXJu IFBhcmFtczsKfQoKZnVuY3Rpb24gdGJfZ2V0UGFnZVNpemUoKXsKCXZhciBkZSA9 IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKCXZhciB3ID0gd2luZG93LmlubmVy V2lkdGggfHwgc2VsZi5pbm5lcldpZHRoIHx8IChkZSYmZGUuY2xpZW50V2lkdGgp IHx8IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7Cgl2YXIgaCA9IHdpbmRvdy5p bm5lckhlaWdodCB8fCBzZWxmLmlubmVySGVpZ2h0IHx8IChkZSYmZGUuY2xpZW50 SGVpZ2h0KSB8fCBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodDsKCWFycmF5UGFn ZVNpemUgPSBbdyxoXTsKCXJldHVybiBhcnJheVBhZ2VTaXplOwp9CgpmdW5jdGlv biB0Yl9kZXRlY3RNYWNYRkYoKSB7CiAgdmFyIHVzZXJBZ2VudCA9IG5hdmlnYXRv ci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTsKICBpZiAodXNlckFnZW50LmluZGV4 T2YoJ21hYycpICE9IC0xICYmIHVzZXJBZ2VudC5pbmRleE9mKCdmaXJlZm94Jykh PS0xKSB7CiAgICByZXR1cm4gdHJ1ZTsKICB9Cn0KCg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=calendar.js Content-Type: application/x-javascript; name=calendar.js Content-Location: http://teplice.naseadresa.cz/0000-Global/js/calendar.js Content-Transfer-Encoding: Base64 Ly8gQ0FMRU5EQVIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQ2FsZW5kYXIgPSBmdW5jdGlv biAoZmlyc3REYXlPZldlZWssIGRhdGVTdHIsIG9uU2VsZWN0ZWQsIG9uQ2xvc2Up IHsNCgkvLyBtZW1iZXIgdmFyaWFibGVzDQoJdGhpcy5hY3RpdmVEaXYgPSBudWxs Ow0KCXRoaXMuY3VycmVudERhdGVFbCA9IG51bGw7DQoJdGhpcy5nZXREYXRlU3Rh dHVzID0gbnVsbDsNCgl0aGlzLmdldERhdGVUb29sVGlwID0gbnVsbDsNCgl0aGlz LmdldERhdGVUZXh0ID0gbnVsbDsNCgl0aGlzLnRpbWVvdXQgPSBudWxsOw0KCXRo aXMub25TZWxlY3RlZCA9IG9uU2VsZWN0ZWQgfHwgbnVsbDsNCgl0aGlzLm9uQ2xv c2UgPSBvbkNsb3NlIHx8IG51bGw7DQoJdGhpcy5kcmFnZ2luZyA9IGZhbHNlOw0K CXRoaXMuaGlkZGVuID0gZmFsc2U7DQoJdGhpcy5taW5ZZWFyID0gMTk3MDsNCgl0 aGlzLm1heFllYXIgPSAyMDUwOw0KCXRoaXMuZGF0ZUZvcm1hdCA9IENhbGVuZGFy Ll9UVFsiREVGX0RBVEVfRk9STUFUIl07DQoJdGhpcy50dERhdGVGb3JtYXQgPSBD YWxlbmRhci5fVFRbIlRUX0RBVEVfRk9STUFUIl07DQoJdGhpcy5pc1BvcHVwID0g dHJ1ZTsNCgl0aGlzLndlZWtOdW1iZXJzID0gdHJ1ZTsNCgl0aGlzLmZpcnN0RGF5 T2ZXZWVrID0gdHlwZW9mIGZpcnN0RGF5T2ZXZWVrID09ICJudW1iZXIiID8gZmly c3REYXlPZldlZWsgOiBDYWxlbmRhci5fRkQ7IC8vIDAgZm9yIFN1bmRheSwgMSBm b3IgTW9uZGF5LCBldGMuDQoJdGhpcy5zaG93c090aGVyTW9udGhzID0gZmFsc2U7 DQoJdGhpcy5kYXRlU3RyID0gZGF0ZVN0cjsNCgl0aGlzLmFyX2RheXMgPSBudWxs Ow0KCXRoaXMuc2hvd3NUaW1lID0gZmFsc2U7DQoJdGhpcy50aW1lMjQgPSB0cnVl Ow0KCXRoaXMueWVhclN0ZXAgPSAyOw0KCXRoaXMuaGlsaXRlVG9kYXkgPSB0cnVl Ow0KCXRoaXMubXVsdGlwbGUgPSBudWxsOw0KCS8vIEhUTUwgZWxlbWVudHMNCgl0 aGlzLnRhYmxlID0gbnVsbDsNCgl0aGlzLmVsZW1lbnQgPSBudWxsOw0KCXRoaXMu dGJvZHkgPSBudWxsOw0KCXRoaXMuZmlyc3RkYXluYW1lID0gbnVsbDsNCgkvLyBD b21ibyBib3hlcw0KCXRoaXMubW9udGhzQ29tYm8gPSBudWxsOw0KCXRoaXMueWVh cnNDb21ibyA9IG51bGw7DQoJdGhpcy5oaWxpdGVkTW9udGggPSBudWxsOw0KCXRo aXMuYWN0aXZlTW9udGggPSBudWxsOw0KCXRoaXMuaGlsaXRlZFllYXIgPSBudWxs Ow0KCXRoaXMuYWN0aXZlWWVhciA9IG51bGw7DQoJLy8gSW5mb3JtYXRpb24NCgl0 aGlzLmRhdGVDbGlja2VkID0gZmFsc2U7DQoNCgkvLyBvbmUtdGltZSBpbml0aWFs aXphdGlvbnMNCglpZiAodHlwZW9mIENhbGVuZGFyLl9TRE4gPT0gInVuZGVmaW5l ZCIpIHsNCgkJLy8gdGFibGUgb2Ygc2hvcnQgZGF5IG5hbWVzDQoJCWlmICh0eXBl b2YgQ2FsZW5kYXIuX1NETl9sZW4gPT0gInVuZGVmaW5lZCIpDQoJCQlDYWxlbmRh ci5fU0ROX2xlbiA9IDM7DQoJCXZhciBhciA9IG5ldyBBcnJheSgpOw0KCQlmb3Ig KHZhciBpID0gODsgaSA+IDA7KSB7DQoJCQlhclstLWldID0gQ2FsZW5kYXIuX0RO W2ldLnN1YnN0cigwLCBDYWxlbmRhci5fU0ROX2xlbik7DQoJCX0NCgkJQ2FsZW5k YXIuX1NETiA9IGFyOw0KCQkvLyB0YWJsZSBvZiBzaG9ydCBtb250aCBuYW1lcw0K CQlpZiAodHlwZW9mIENhbGVuZGFyLl9TTU5fbGVuID09ICJ1bmRlZmluZWQiKQ0K CQkJQ2FsZW5kYXIuX1NNTl9sZW4gPSAzOw0KCQlhciA9IG5ldyBBcnJheSgpOw0K CQlmb3IgKHZhciBpID0gMTI7IGkgPiAwOykgew0KCQkJYXJbLS1pXSA9IENhbGVu ZGFyLl9NTltpXS5zdWJzdHIoMCwgQ2FsZW5kYXIuX1NNTl9sZW4pOw0KCQl9DQoJ CUNhbGVuZGFyLl9TTU4gPSBhcjsNCgl9DQp9Ow0KDQovLyAqKiBjb25zdGFudHMN Cg0KLy8vICJzdGF0aWMiLCBuZWVkZWQgZm9yIGV2ZW50IGhhbmRsZXJzLg0KQ2Fs ZW5kYXIuX0MgPSBudWxsOw0KDQovLy8gZGV0ZWN0IGEgc3BlY2lhbCBjYXNlIG9m ICJ3ZWIgYnJvd3NlciINCkNhbGVuZGFyLmlzX2llID0gKCAvbXNpZS9pLnRlc3Qo bmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYNCgkJICAgIS9vcGVyYS9pLnRlc3QobmF2 aWdhdG9yLnVzZXJBZ2VudCkgKTsNCg0KQ2FsZW5kYXIuaXNfaWU1ID0gKCBDYWxl bmRhci5pc19pZSAmJiAvbXNpZSA1XC4wL2kudGVzdChuYXZpZ2F0b3IudXNlckFn ZW50KSApOw0KDQovLy8gZGV0ZWN0IE9wZXJhIGJyb3dzZXINCkNhbGVuZGFyLmlz X29wZXJhID0gL29wZXJhL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsNCg0K Ly8vIGRldGVjdCBLSFRNTC1iYXNlZCBicm93c2Vycw0KQ2FsZW5kYXIuaXNfa2h0 bWwgPSAvS29ucXVlcm9yfFNhZmFyaXxLSFRNTC9pLnRlc3QobmF2aWdhdG9yLnVz ZXJBZ2VudCk7DQoNCi8vIEJFR0lOOiBVVElMSVRZIEZVTkNUSU9OUzsgYmV3YXJl IHRoYXQgdGhlc2UgbWlnaHQgYmUgbW92ZWQgaW50byBhIHNlcGFyYXRlDQovLyAg ICAgICAgbGlicmFyeSwgYXQgc29tZSBwb2ludC4NCg0KQ2FsZW5kYXIuZ2V0QWJz b2x1dGVQb3MgPSBmdW5jdGlvbihlbCkgew0KCXZhciBTTCA9IDAsIFNUID0gMDsN Cgl2YXIgaXNfZGl2ID0gL15kaXYkL2kudGVzdChlbC50YWdOYW1lKTsNCglpZiAo aXNfZGl2ICYmIGVsLnNjcm9sbExlZnQpDQoJCVNMID0gZWwuc2Nyb2xsTGVmdDsN CglpZiAoaXNfZGl2ICYmIGVsLnNjcm9sbFRvcCkNCgkJU1QgPSBlbC5zY3JvbGxU b3A7DQoJdmFyIHIgPSB7IHg6IGVsLm9mZnNldExlZnQgLSBTTCwgeTogZWwub2Zm c2V0VG9wIC0gU1QgfTsNCglpZiAoZWwub2Zmc2V0UGFyZW50KSB7DQoJCXZhciB0 bXAgPSB0aGlzLmdldEFic29sdXRlUG9zKGVsLm9mZnNldFBhcmVudCk7DQoJCXIu eCArPSB0bXAueDsNCgkJci55ICs9IHRtcC55Ow0KCX0NCglyZXR1cm4gcjsNCn07 DQoNCkNhbGVuZGFyLmlzUmVsYXRlZCA9IGZ1bmN0aW9uIChlbCwgZXZ0KSB7DQoJ dmFyIHJlbGF0ZWQgPSBldnQucmVsYXRlZFRhcmdldDsNCglpZiAoIXJlbGF0ZWQp IHsNCgkJdmFyIHR5cGUgPSBldnQudHlwZTsNCgkJaWYgKHR5cGUgPT0gIm1vdXNl b3ZlciIpIHsNCgkJCXJlbGF0ZWQgPSBldnQuZnJvbUVsZW1lbnQ7DQoJCX0gZWxz ZSBpZiAodHlwZSA9PSAibW91c2VvdXQiKSB7DQoJCQlyZWxhdGVkID0gZXZ0LnRv RWxlbWVudDsNCgkJfQ0KCX0NCgl3aGlsZSAocmVsYXRlZCkgew0KCQlpZiAocmVs YXRlZCA9PSBlbCkgew0KCQkJcmV0dXJuIHRydWU7DQoJCX0NCgkJcmVsYXRlZCA9 IHJlbGF0ZWQucGFyZW50Tm9kZTsNCgl9DQoJcmV0dXJuIGZhbHNlOw0KfTsNCg0K Q2FsZW5kYXIucmVtb3ZlQ2xhc3MgPSBmdW5jdGlvbihlbCwgY2xhc3NOYW1lKSB7 DQoJaWYgKCEoZWwgJiYgZWwuY2xhc3NOYW1lKSkgew0KCQlyZXR1cm47DQoJfQ0K CXZhciBjbHMgPSBlbC5jbGFzc05hbWUuc3BsaXQoIiAiKTsNCgl2YXIgYXIgPSBu ZXcgQXJyYXkoKTsNCglmb3IgKHZhciBpID0gY2xzLmxlbmd0aDsgaSA+IDA7KSB7 DQoJCWlmIChjbHNbLS1pXSAhPSBjbGFzc05hbWUpIHsNCgkJCWFyW2FyLmxlbmd0 aF0gPSBjbHNbaV07DQoJCX0NCgl9DQoJZWwuY2xhc3NOYW1lID0gYXIuam9pbigi ICIpOw0KfTsNCg0KQ2FsZW5kYXIuYWRkQ2xhc3MgPSBmdW5jdGlvbihlbCwgY2xh c3NOYW1lKSB7DQoJQ2FsZW5kYXIucmVtb3ZlQ2xhc3MoZWwsIGNsYXNzTmFtZSk7 DQoJZWwuY2xhc3NOYW1lICs9ICIgIiArIGNsYXNzTmFtZTsNCn07DQoNCi8vIEZJ WE1FOiB0aGUgZm9sbG93aW5nIDIgZnVuY3Rpb25zIHRvdGFsbHkgc3VjaywgYXJl IHVzZWxlc3MgYW5kIHNob3VsZCBiZSByZXBsYWNlZCBpbW1lZGlhdGVseS4NCkNh bGVuZGFyLmdldEVsZW1lbnQgPSBmdW5jdGlvbihldikgew0KCXZhciBmID0gQ2Fs ZW5kYXIuaXNfaWUgPyB3aW5kb3cuZXZlbnQuc3JjRWxlbWVudCA6IGV2LmN1cnJl bnRUYXJnZXQ7DQoJd2hpbGUgKGYubm9kZVR5cGUgIT0gMSB8fCAvXmRpdiQvaS50 ZXN0KGYudGFnTmFtZSkpDQoJCWYgPSBmLnBhcmVudE5vZGU7DQoJcmV0dXJuIGY7 DQp9Ow0KDQpDYWxlbmRhci5nZXRUYXJnZXRFbGVtZW50ID0gZnVuY3Rpb24oZXYp IHsNCgl2YXIgZiA9IENhbGVuZGFyLmlzX2llID8gd2luZG93LmV2ZW50LnNyY0Vs ZW1lbnQgOiBldi50YXJnZXQ7DQoJd2hpbGUgKGYubm9kZVR5cGUgIT0gMSkNCgkJ ZiA9IGYucGFyZW50Tm9kZTsNCglyZXR1cm4gZjsNCn07DQoNCkNhbGVuZGFyLnN0 b3BFdmVudCA9IGZ1bmN0aW9uKGV2KSB7DQoJZXYgfHwgKGV2ID0gd2luZG93LmV2 ZW50KTsNCglpZiAoQ2FsZW5kYXIuaXNfaWUpIHsNCgkJZXYuY2FuY2VsQnViYmxl ID0gdHJ1ZTsNCgkJZXYucmV0dXJuVmFsdWUgPSBmYWxzZTsNCgl9IGVsc2Ugew0K CQlldi5wcmV2ZW50RGVmYXVsdCgpOw0KCQlldi5zdG9wUHJvcGFnYXRpb24oKTsN Cgl9DQoJcmV0dXJuIGZhbHNlOw0KfTsNCg0KQ2FsZW5kYXIuYWRkRXZlbnQgPSBm dW5jdGlvbihlbCwgZXZuYW1lLCBmdW5jKSB7DQoJaWYgKGVsLmF0dGFjaEV2ZW50 KSB7IC8vIElFDQoJCWVsLmF0dGFjaEV2ZW50KCJvbiIgKyBldm5hbWUsIGZ1bmMp Ow0KCX0gZWxzZSBpZiAoZWwuYWRkRXZlbnRMaXN0ZW5lcikgeyAvLyBHZWNrbyAv IFczQw0KCQllbC5hZGRFdmVudExpc3RlbmVyKGV2bmFtZSwgZnVuYywgdHJ1ZSk7 DQoJfSBlbHNlIHsNCgkJZWxbIm9uIiArIGV2bmFtZV0gPSBmdW5jOw0KCX0NCn07 DQoNCkNhbGVuZGFyLnJlbW92ZUV2ZW50ID0gZnVuY3Rpb24oZWwsIGV2bmFtZSwg ZnVuYykgew0KCWlmIChlbC5kZXRhY2hFdmVudCkgeyAvLyBJRQ0KCQllbC5kZXRh Y2hFdmVudCgib24iICsgZXZuYW1lLCBmdW5jKTsNCgl9IGVsc2UgaWYgKGVsLnJl bW92ZUV2ZW50TGlzdGVuZXIpIHsgLy8gR2Vja28gLyBXM0MNCgkJZWwucmVtb3Zl RXZlbnRMaXN0ZW5lcihldm5hbWUsIGZ1bmMsIHRydWUpOw0KCX0gZWxzZSB7DQoJ CWVsWyJvbiIgKyBldm5hbWVdID0gbnVsbDsNCgl9DQp9Ow0KDQpDYWxlbmRhci5j cmVhdGVFbGVtZW50ID0gZnVuY3Rpb24odHlwZSwgcGFyZW50KSB7DQoJdmFyIGVs ID0gbnVsbDsNCglpZiAoZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKSB7DQoJCS8v IHVzZSB0aGUgWEhUTUwgbmFtZXNwYWNlOyBJRSB3b24ndCBub3JtYWxseSBnZXQg aGVyZSB1bmxlc3MNCgkJLy8gX3RoZXlfICJmaXgiIHRoZSBET00yIGltcGxlbWVu dGF0aW9uLg0KCQllbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov L3d3dy53My5vcmcvMTk5OS94aHRtbCIsIHR5cGUpOw0KCX0gZWxzZSB7DQoJCWVs ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0eXBlKTsNCgl9DQoJaWYgKHR5cGVv ZiBwYXJlbnQgIT0gInVuZGVmaW5lZCIpIHsNCgkJcGFyZW50LmFwcGVuZENoaWxk KGVsKTsNCgl9DQoJcmV0dXJuIGVsOw0KfTsNCg0KLy8gRU5EOiBVVElMSVRZIEZV TkNUSU9OUw0KDQovLyBCRUdJTjogQ0FMRU5EQVIgU1RBVElDIEZVTkNUSU9OUw0K DQovKiogSW50ZXJuYWwgLS0gYWRkcyBhIHNldCBvZiBldmVudHMgdG8gbWFrZSBz b21lIGVsZW1lbnQgYmVoYXZlIGxpa2UgYSBidXR0b24uICovDQpDYWxlbmRhci5f YWRkX2V2cyA9IGZ1bmN0aW9uKGVsKSB7DQoJd2l0aCAoQ2FsZW5kYXIpIHsNCgkJ YWRkRXZlbnQoZWwsICJtb3VzZW92ZXIiLCBkYXlNb3VzZU92ZXIpOw0KCQlhZGRF dmVudChlbCwgIm1vdXNlZG93biIsIGRheU1vdXNlRG93bik7DQoJCWFkZEV2ZW50 KGVsLCAibW91c2VvdXQiLCBkYXlNb3VzZU91dCk7DQoJCWlmIChpc19pZSkgew0K CQkJYWRkRXZlbnQoZWwsICJkYmxjbGljayIsIGRheU1vdXNlRGJsQ2xpY2spOw0K CQkJZWwuc2V0QXR0cmlidXRlKCJ1bnNlbGVjdGFibGUiLCB0cnVlKTsNCgkJfQ0K CX0NCn07DQoNCkNhbGVuZGFyLmZpbmRNb250aCA9IGZ1bmN0aW9uKGVsKSB7DQoJ aWYgKHR5cGVvZiBlbC5tb250aCAhPSAidW5kZWZpbmVkIikgew0KCQlyZXR1cm4g ZWw7DQoJfSBlbHNlIGlmICh0eXBlb2YgZWwucGFyZW50Tm9kZS5tb250aCAhPSAi dW5kZWZpbmVkIikgew0KCQlyZXR1cm4gZWwucGFyZW50Tm9kZTsNCgl9DQoJcmV0 dXJuIG51bGw7DQp9Ow0KDQpDYWxlbmRhci5maW5kWWVhciA9IGZ1bmN0aW9uKGVs KSB7DQoJaWYgKHR5cGVvZiBlbC55ZWFyICE9ICJ1bmRlZmluZWQiKSB7DQoJCXJl dHVybiBlbDsNCgl9IGVsc2UgaWYgKHR5cGVvZiBlbC5wYXJlbnROb2RlLnllYXIg IT0gInVuZGVmaW5lZCIpIHsNCgkJcmV0dXJuIGVsLnBhcmVudE5vZGU7DQoJfQ0K CXJldHVybiBudWxsOw0KfTsNCg0KQ2FsZW5kYXIuc2hvd01vbnRoc0NvbWJvID0g ZnVuY3Rpb24gKCkgew0KCXZhciBjYWwgPSBDYWxlbmRhci5fQzsNCglpZiAoIWNh bCkgew0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KCXZhciBjYWwgPSBjYWw7DQoJdmFy IGNkID0gY2FsLmFjdGl2ZURpdjsNCgl2YXIgbWMgPSBjYWwubW9udGhzQ29tYm87 DQoJaWYgKGNhbC5oaWxpdGVkTW9udGgpIHsNCgkJQ2FsZW5kYXIucmVtb3ZlQ2xh c3MoY2FsLmhpbGl0ZWRNb250aCwgImhpbGl0ZSIpOw0KCX0NCglpZiAoY2FsLmFj dGl2ZU1vbnRoKSB7DQoJCUNhbGVuZGFyLnJlbW92ZUNsYXNzKGNhbC5hY3RpdmVN b250aCwgImFjdGl2ZSIpOw0KCX0NCgl2YXIgbW9uID0gY2FsLm1vbnRoc0NvbWJv LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaXYiKVtjYWwuZGF0ZS5nZXRNb250aCgp XTsNCglDYWxlbmRhci5hZGRDbGFzcyhtb24sICJhY3RpdmUiKTsNCgljYWwuYWN0 aXZlTW9udGggPSBtb247DQoJdmFyIHMgPSBtYy5zdHlsZTsNCglzLmRpc3BsYXkg PSAiYmxvY2siOw0KCWlmIChjZC5uYXZ0eXBlIDwgMCkNCgkJcy5sZWZ0ID0gY2Qu b2Zmc2V0TGVmdCArICJweCI7DQoJZWxzZSB7DQoJCXZhciBtY3cgPSBtYy5vZmZz ZXRXaWR0aDsNCgkJaWYgKHR5cGVvZiBtY3cgPT0gInVuZGVmaW5lZCIpDQoJCQkv LyBLb25xdWVyb3IgYnJhaW4tZGVhZCB0ZWNobmlxdWVzDQoJCQltY3cgPSA1MDsN CgkJcy5sZWZ0ID0gKGNkLm9mZnNldExlZnQgKyBjZC5vZmZzZXRXaWR0aCAtIG1j dykgKyAicHgiOw0KCX0NCglzLnRvcCA9IChjZC5vZmZzZXRUb3AgKyBjZC5vZmZz ZXRIZWlnaHQpICsgInB4IjsNCn07DQoNCkNhbGVuZGFyLnNob3dZZWFyc0NvbWJv ID0gZnVuY3Rpb24gKGZ3ZCkgew0KCXZhciBjYWwgPSBDYWxlbmRhci5fQzsNCglp ZiAoIWNhbCkgew0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KCXZhciBjYWwgPSBjYWw7 DQoJdmFyIGNkID0gY2FsLmFjdGl2ZURpdjsNCgl2YXIgeWMgPSBjYWwueWVhcnND b21ibzsNCglpZiAoY2FsLmhpbGl0ZWRZZWFyKSB7DQoJCUNhbGVuZGFyLnJlbW92 ZUNsYXNzKGNhbC5oaWxpdGVkWWVhciwgImhpbGl0ZSIpOw0KCX0NCglpZiAoY2Fs LmFjdGl2ZVllYXIpIHsNCgkJQ2FsZW5kYXIucmVtb3ZlQ2xhc3MoY2FsLmFjdGl2 ZVllYXIsICJhY3RpdmUiKTsNCgl9DQoJY2FsLmFjdGl2ZVllYXIgPSBudWxsOw0K CXZhciBZID0gY2FsLmRhdGUuZ2V0RnVsbFllYXIoKSArIChmd2QgPyAxIDogLTEp Ow0KCXZhciB5ciA9IHljLmZpcnN0Q2hpbGQ7DQoJdmFyIHNob3cgPSBmYWxzZTsN Cglmb3IgKHZhciBpID0gMTI7IGkgPiAwOyAtLWkpIHsNCgkJaWYgKFkgPj0gY2Fs Lm1pblllYXIgJiYgWSA8PSBjYWwubWF4WWVhcikgew0KCQkJeXIuaW5uZXJIVE1M ID0gWTsNCgkJCXlyLnllYXIgPSBZOw0KCQkJeXIuc3R5bGUuZGlzcGxheSA9ICJi bG9jayI7DQoJCQlzaG93ID0gdHJ1ZTsNCgkJfSBlbHNlIHsNCgkJCXlyLnN0eWxl LmRpc3BsYXkgPSAibm9uZSI7DQoJCX0NCgkJeXIgPSB5ci5uZXh0U2libGluZzsN CgkJWSArPSBmd2QgPyBjYWwueWVhclN0ZXAgOiAtY2FsLnllYXJTdGVwOw0KCX0N CglpZiAoc2hvdykgew0KCQl2YXIgcyA9IHljLnN0eWxlOw0KCQlzLmRpc3BsYXkg PSAiYmxvY2siOw0KCQlpZiAoY2QubmF2dHlwZSA8IDApDQoJCQlzLmxlZnQgPSBj ZC5vZmZzZXRMZWZ0ICsgInB4IjsNCgkJZWxzZSB7DQoJCQl2YXIgeWN3ID0geWMu b2Zmc2V0V2lkdGg7DQoJCQlpZiAodHlwZW9mIHljdyA9PSAidW5kZWZpbmVkIikN CgkJCQkvLyBLb25xdWVyb3IgYnJhaW4tZGVhZCB0ZWNobmlxdWVzDQoJCQkJeWN3 ID0gNTA7DQoJCQlzLmxlZnQgPSAoY2Qub2Zmc2V0TGVmdCArIGNkLm9mZnNldFdp ZHRoIC0geWN3KSArICJweCI7DQoJCX0NCgkJcy50b3AgPSAoY2Qub2Zmc2V0VG9w ICsgY2Qub2Zmc2V0SGVpZ2h0KSArICJweCI7DQoJfQ0KfTsNCg0KLy8gZXZlbnQg aGFuZGxlcnMNCg0KQ2FsZW5kYXIudGFibGVNb3VzZVVwID0gZnVuY3Rpb24oZXYp IHsNCgl2YXIgY2FsID0gQ2FsZW5kYXIuX0M7DQoJaWYgKCFjYWwpIHsNCgkJcmV0 dXJuIGZhbHNlOw0KCX0NCglpZiAoY2FsLnRpbWVvdXQpIHsNCgkJY2xlYXJUaW1l b3V0KGNhbC50aW1lb3V0KTsNCgl9DQoJdmFyIGVsID0gY2FsLmFjdGl2ZURpdjsN CglpZiAoIWVsKSB7DQoJCXJldHVybiBmYWxzZTsNCgl9DQoJdmFyIHRhcmdldCA9 IENhbGVuZGFyLmdldFRhcmdldEVsZW1lbnQoZXYpOw0KCWV2IHx8IChldiA9IHdp bmRvdy5ldmVudCk7DQoJQ2FsZW5kYXIucmVtb3ZlQ2xhc3MoZWwsICJhY3RpdmUi KTsNCglpZiAodGFyZ2V0ID09IGVsIHx8IHRhcmdldC5wYXJlbnROb2RlID09IGVs KSB7DQoJCUNhbGVuZGFyLmNlbGxDbGljayhlbCwgZXYpOw0KCX0NCgl2YXIgbW9u ID0gQ2FsZW5kYXIuZmluZE1vbnRoKHRhcmdldCk7DQoJdmFyIGRhdGUgPSBudWxs Ow0KCWlmIChtb24pIHsNCgkJZGF0ZSA9IG5ldyBEYXRlKGNhbC5kYXRlKTsNCgkJ aWYgKG1vbi5tb250aCAhPSBkYXRlLmdldE1vbnRoKCkpIHsNCgkJCWRhdGUuc2V0 TW9udGgobW9uLm1vbnRoKTsNCgkJCWNhbC5zZXREYXRlKGRhdGUpOw0KCQkJY2Fs LmRhdGVDbGlja2VkID0gZmFsc2U7DQoJCQljYWwuY2FsbEhhbmRsZXIoKTsNCgkJ fQ0KCX0gZWxzZSB7DQoJCXZhciB5ZWFyID0gQ2FsZW5kYXIuZmluZFllYXIodGFy Z2V0KTsNCgkJaWYgKHllYXIpIHsNCgkJCWRhdGUgPSBuZXcgRGF0ZShjYWwuZGF0 ZSk7DQoJCQlpZiAoeWVhci55ZWFyICE9IGRhdGUuZ2V0RnVsbFllYXIoKSkgew0K CQkJCWRhdGUuc2V0RnVsbFllYXIoeWVhci55ZWFyKTsNCgkJCQljYWwuc2V0RGF0 ZShkYXRlKTsNCgkJCQljYWwuZGF0ZUNsaWNrZWQgPSBmYWxzZTsNCgkJCQljYWwu Y2FsbEhhbmRsZXIoKTsNCgkJCX0NCgkJfQ0KCX0NCgl3aXRoIChDYWxlbmRhcikg ew0KCQlyZW1vdmVFdmVudChkb2N1bWVudCwgIm1vdXNldXAiLCB0YWJsZU1vdXNl VXApOw0KCQlyZW1vdmVFdmVudChkb2N1bWVudCwgIm1vdXNlb3ZlciIsIHRhYmxl TW91c2VPdmVyKTsNCgkJcmVtb3ZlRXZlbnQoZG9jdW1lbnQsICJtb3VzZW1vdmUi LCB0YWJsZU1vdXNlT3Zlcik7DQoJCWNhbC5faGlkZUNvbWJvcygpOw0KCQlfQyA9 IG51bGw7DQoJCXJldHVybiBzdG9wRXZlbnQoZXYpOw0KCX0NCn07DQoNCkNhbGVu ZGFyLnRhYmxlTW91c2VPdmVyID0gZnVuY3Rpb24gKGV2KSB7DQoJdmFyIGNhbCA9 IENhbGVuZGFyLl9DOw0KCWlmICghY2FsKSB7DQoJCXJldHVybjsNCgl9DQoJdmFy IGVsID0gY2FsLmFjdGl2ZURpdjsNCgl2YXIgdGFyZ2V0ID0gQ2FsZW5kYXIuZ2V0 VGFyZ2V0RWxlbWVudChldik7DQoJaWYgKHRhcmdldCA9PSBlbCB8fCB0YXJnZXQu cGFyZW50Tm9kZSA9PSBlbCkgew0KCQlDYWxlbmRhci5hZGRDbGFzcyhlbCwgImhp bGl0ZSBhY3RpdmUiKTsNCgkJQ2FsZW5kYXIuYWRkQ2xhc3MoZWwucGFyZW50Tm9k ZSwgInJvd2hpbGl0ZSIpOw0KCX0gZWxzZSB7DQoJCWlmICh0eXBlb2YgZWwubmF2 dHlwZSA9PSAidW5kZWZpbmVkIiB8fCAoZWwubmF2dHlwZSAhPSA1MCAmJiAoZWwu bmF2dHlwZSA9PSAwIHx8IE1hdGguYWJzKGVsLm5hdnR5cGUpID4gMikpKQ0KCQkJ Q2FsZW5kYXIucmVtb3ZlQ2xhc3MoZWwsICJhY3RpdmUiKTsNCgkJQ2FsZW5kYXIu cmVtb3ZlQ2xhc3MoZWwsICJoaWxpdGUiKTsNCgkJQ2FsZW5kYXIucmVtb3ZlQ2xh c3MoZWwucGFyZW50Tm9kZSwgInJvd2hpbGl0ZSIpOw0KCX0NCglldiB8fCAoZXYg PSB3aW5kb3cuZXZlbnQpOw0KCWlmIChlbC5uYXZ0eXBlID09IDUwICYmIHRhcmdl dCAhPSBlbCkgew0KCQl2YXIgcG9zID0gQ2FsZW5kYXIuZ2V0QWJzb2x1dGVQb3Mo ZWwpOw0KCQl2YXIgdyA9IGVsLm9mZnNldFdpZHRoOw0KCQl2YXIgeCA9IGV2LmNs aWVudFg7DQoJCXZhciBkeDsNCgkJdmFyIGRlY3JlYXNlID0gdHJ1ZTsNCgkJaWYg KHggPiBwb3MueCArIHcpIHsNCgkJCWR4ID0geCAtIHBvcy54IC0gdzsNCgkJCWRl Y3JlYXNlID0gZmFsc2U7DQoJCX0gZWxzZQ0KCQkJZHggPSBwb3MueCAtIHg7DQoN CgkJaWYgKGR4IDwgMCkgZHggPSAwOw0KCQl2YXIgcmFuZ2UgPSBlbC5fcmFuZ2U7 DQoJCXZhciBjdXJyZW50ID0gZWwuX2N1cnJlbnQ7DQoJCXZhciBjb3VudCA9IE1h dGguZmxvb3IoZHggLyAxMCkgJSByYW5nZS5sZW5ndGg7DQoJCWZvciAodmFyIGkg PSByYW5nZS5sZW5ndGg7IC0taSA+PSAwOykNCgkJCWlmIChyYW5nZVtpXSA9PSBj dXJyZW50KQ0KCQkJCWJyZWFrOw0KCQl3aGlsZSAoY291bnQtLSA+IDApDQoJCQlp ZiAoZGVjcmVhc2UpIHsNCgkJCQlpZiAoLS1pIDwgMCkNCgkJCQkJaSA9IHJhbmdl Lmxlbmd0aCAtIDE7DQoJCQl9IGVsc2UgaWYgKCArK2kgPj0gcmFuZ2UubGVuZ3Ro ICkNCgkJCQlpID0gMDsNCgkJdmFyIG5ld3ZhbCA9IHJhbmdlW2ldOw0KCQllbC5p bm5lckhUTUwgPSBuZXd2YWw7DQoNCgkJY2FsLm9uVXBkYXRlVGltZSgpOw0KCX0N Cgl2YXIgbW9uID0gQ2FsZW5kYXIuZmluZE1vbnRoKHRhcmdldCk7DQoJaWYgKG1v bikgew0KCQlpZiAobW9uLm1vbnRoICE9IGNhbC5kYXRlLmdldE1vbnRoKCkpIHsN CgkJCWlmIChjYWwuaGlsaXRlZE1vbnRoKSB7DQoJCQkJQ2FsZW5kYXIucmVtb3Zl Q2xhc3MoY2FsLmhpbGl0ZWRNb250aCwgImhpbGl0ZSIpOw0KCQkJfQ0KCQkJQ2Fs ZW5kYXIuYWRkQ2xhc3MobW9uLCAiaGlsaXRlIik7DQoJCQljYWwuaGlsaXRlZE1v bnRoID0gbW9uOw0KCQl9IGVsc2UgaWYgKGNhbC5oaWxpdGVkTW9udGgpIHsNCgkJ CUNhbGVuZGFyLnJlbW92ZUNsYXNzKGNhbC5oaWxpdGVkTW9udGgsICJoaWxpdGUi KTsNCgkJfQ0KCX0gZWxzZSB7DQoJCWlmIChjYWwuaGlsaXRlZE1vbnRoKSB7DQoJ CQlDYWxlbmRhci5yZW1vdmVDbGFzcyhjYWwuaGlsaXRlZE1vbnRoLCAiaGlsaXRl Iik7DQoJCX0NCgkJdmFyIHllYXIgPSBDYWxlbmRhci5maW5kWWVhcih0YXJnZXQp Ow0KCQlpZiAoeWVhcikgew0KCQkJaWYgKHllYXIueWVhciAhPSBjYWwuZGF0ZS5n ZXRGdWxsWWVhcigpKSB7DQoJCQkJaWYgKGNhbC5oaWxpdGVkWWVhcikgew0KCQkJ CQlDYWxlbmRhci5yZW1vdmVDbGFzcyhjYWwuaGlsaXRlZFllYXIsICJoaWxpdGUi KTsNCgkJCQl9DQoJCQkJQ2FsZW5kYXIuYWRkQ2xhc3MoeWVhciwgImhpbGl0ZSIp Ow0KCQkJCWNhbC5oaWxpdGVkWWVhciA9IHllYXI7DQoJCQl9IGVsc2UgaWYgKGNh bC5oaWxpdGVkWWVhcikgew0KCQkJCUNhbGVuZGFyLnJlbW92ZUNsYXNzKGNhbC5o aWxpdGVkWWVhciwgImhpbGl0ZSIpOw0KCQkJfQ0KCQl9IGVsc2UgaWYgKGNhbC5o aWxpdGVkWWVhcikgew0KCQkJQ2FsZW5kYXIucmVtb3ZlQ2xhc3MoY2FsLmhpbGl0 ZWRZZWFyLCAiaGlsaXRlIik7DQoJCX0NCgl9DQoJcmV0dXJuIENhbGVuZGFyLnN0 b3BFdmVudChldik7DQp9Ow0KDQpDYWxlbmRhci50YWJsZU1vdXNlRG93biA9IGZ1 bmN0aW9uIChldikgew0KCWlmIChDYWxlbmRhci5nZXRUYXJnZXRFbGVtZW50KGV2 KSA9PSBDYWxlbmRhci5nZXRFbGVtZW50KGV2KSkgew0KCQlyZXR1cm4gQ2FsZW5k YXIuc3RvcEV2ZW50KGV2KTsNCgl9DQp9Ow0KDQpDYWxlbmRhci5jYWxEcmFnSXQg PSBmdW5jdGlvbiAoZXYpIHsNCgl2YXIgY2FsID0gQ2FsZW5kYXIuX0M7DQoJaWYg KCEoY2FsICYmIGNhbC5kcmFnZ2luZykpIHsNCgkJcmV0dXJuIGZhbHNlOw0KCX0N Cgl2YXIgcG9zWDsNCgl2YXIgcG9zWTsNCglpZiAoQ2FsZW5kYXIuaXNfaWUpIHsN CgkJcG9zWSA9IHdpbmRvdy5ldmVudC5jbGllbnRZICsgZG9jdW1lbnQuYm9keS5z Y3JvbGxUb3A7DQoJCXBvc1ggPSB3aW5kb3cuZXZlbnQuY2xpZW50WCArIGRvY3Vt ZW50LmJvZHkuc2Nyb2xsTGVmdDsNCgl9IGVsc2Ugew0KCQlwb3NYID0gZXYucGFn ZVg7DQoJCXBvc1kgPSBldi5wYWdlWTsNCgl9DQoJY2FsLmhpZGVTaG93Q292ZXJl ZCgpOw0KCXZhciBzdCA9IGNhbC5lbGVtZW50LnN0eWxlOw0KCXN0LmxlZnQgPSAo cG9zWCAtIGNhbC54T2ZmcykgKyAicHgiOw0KCXN0LnRvcCA9IChwb3NZIC0gY2Fs LnlPZmZzKSArICJweCI7DQoJcmV0dXJuIENhbGVuZGFyLnN0b3BFdmVudChldik7 DQp9Ow0KDQpDYWxlbmRhci5jYWxEcmFnRW5kID0gZnVuY3Rpb24gKGV2KSB7DQoJ dmFyIGNhbCA9IENhbGVuZGFyLl9DOw0KCWlmICghY2FsKSB7DQoJCXJldHVybiBm YWxzZTsNCgl9DQoJY2FsLmRyYWdnaW5nID0gZmFsc2U7DQoJd2l0aCAoQ2FsZW5k YXIpIHsNCgkJcmVtb3ZlRXZlbnQoZG9jdW1lbnQsICJtb3VzZW1vdmUiLCBjYWxE cmFnSXQpOw0KCQlyZW1vdmVFdmVudChkb2N1bWVudCwgIm1vdXNldXAiLCBjYWxE cmFnRW5kKTsNCgkJdGFibGVNb3VzZVVwKGV2KTsNCgl9DQoJY2FsLmhpZGVTaG93 Q292ZXJlZCgpOw0KfTsNCg0KQ2FsZW5kYXIuZGF5TW91c2VEb3duID0gZnVuY3Rp b24oZXYpIHsNCgl2YXIgZWwgPSBDYWxlbmRhci5nZXRFbGVtZW50KGV2KTsNCglp ZiAoZWwuZGlzYWJsZWQpIHsNCgkJcmV0dXJuIGZhbHNlOw0KCX0NCgl2YXIgY2Fs ID0gZWwuY2FsZW5kYXI7DQoJY2FsLmFjdGl2ZURpdiA9IGVsOw0KCUNhbGVuZGFy Ll9DID0gY2FsOw0KCWlmIChlbC5uYXZ0eXBlICE9IDMwMCkgd2l0aCAoQ2FsZW5k YXIpIHsNCgkJaWYgKGVsLm5hdnR5cGUgPT0gNTApIHsNCgkJCWVsLl9jdXJyZW50 ID0gZWwuaW5uZXJIVE1MOw0KCQkJYWRkRXZlbnQoZG9jdW1lbnQsICJtb3VzZW1v dmUiLCB0YWJsZU1vdXNlT3Zlcik7DQoJCX0gZWxzZQ0KCQkJYWRkRXZlbnQoZG9j dW1lbnQsIENhbGVuZGFyLmlzX2llNSA/ICJtb3VzZW1vdmUiIDogIm1vdXNlb3Zl ciIsIHRhYmxlTW91c2VPdmVyKTsNCgkJYWRkQ2xhc3MoZWwsICJoaWxpdGUgYWN0 aXZlIik7DQoJCWFkZEV2ZW50KGRvY3VtZW50LCAibW91c2V1cCIsIHRhYmxlTW91 c2VVcCk7DQoJfSBlbHNlIGlmIChjYWwuaXNQb3B1cCkgew0KCQljYWwuX2RyYWdT dGFydChldik7DQoJfQ0KCWlmIChlbC5uYXZ0eXBlID09IC0xIHx8IGVsLm5hdnR5 cGUgPT0gMSkgew0KCQlpZiAoY2FsLnRpbWVvdXQpIGNsZWFyVGltZW91dChjYWwu dGltZW91dCk7DQoJCWNhbC50aW1lb3V0ID0gc2V0VGltZW91dCgiQ2FsZW5kYXIu c2hvd01vbnRoc0NvbWJvKCkiLCAyNTApOw0KCX0gZWxzZSBpZiAoZWwubmF2dHlw ZSA9PSAtMiB8fCBlbC5uYXZ0eXBlID09IDIpIHsNCgkJaWYgKGNhbC50aW1lb3V0 KSBjbGVhclRpbWVvdXQoY2FsLnRpbWVvdXQpOw0KCQljYWwudGltZW91dCA9IHNl dFRpbWVvdXQoKGVsLm5hdnR5cGUgPiAwKSA/ICJDYWxlbmRhci5zaG93WWVhcnND b21ibyh0cnVlKSIgOiAiQ2FsZW5kYXIuc2hvd1llYXJzQ29tYm8oZmFsc2UpIiwg MjUwKTsNCgl9IGVsc2Ugew0KCQljYWwudGltZW91dCA9IG51bGw7DQoJfQ0KCXJl dHVybiBDYWxlbmRhci5zdG9wRXZlbnQoZXYpOw0KfTsNCg0KQ2FsZW5kYXIuZGF5 TW91c2VEYmxDbGljayA9IGZ1bmN0aW9uKGV2KSB7DQoJQ2FsZW5kYXIuY2VsbENs aWNrKENhbGVuZGFyLmdldEVsZW1lbnQoZXYpLCBldiB8fCB3aW5kb3cuZXZlbnQp Ow0KCWlmIChDYWxlbmRhci5pc19pZSkgew0KCQlkb2N1bWVudC5zZWxlY3Rpb24u ZW1wdHkoKTsNCgl9DQp9Ow0KDQpDYWxlbmRhci5kYXlNb3VzZU92ZXIgPSBmdW5j dGlvbihldikgew0KCXZhciBlbCA9IENhbGVuZGFyLmdldEVsZW1lbnQoZXYpOw0K CWlmIChDYWxlbmRhci5pc1JlbGF0ZWQoZWwsIGV2KSB8fCBDYWxlbmRhci5fQyB8 fCBlbC5kaXNhYmxlZCkgew0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KCWlmIChlbC50 dGlwKSB7DQoJCWlmIChlbC50dGlwLnN1YnN0cigwLCAxKSA9PSAiXyIpIHsNCgkJ CWVsLnR0aXAgPSBlbC5jYWxkYXRlLnByaW50KGVsLmNhbGVuZGFyLnR0RGF0ZUZv cm1hdCkgKyBlbC50dGlwLnN1YnN0cigxKTsNCgkJfQ0KCQllbC5jYWxlbmRhci50 b29sdGlwcy5pbm5lckhUTUwgPSBlbC50dGlwOw0KCX0NCglpZiAoZWwubmF2dHlw ZSAhPSAzMDApIHsNCgkJQ2FsZW5kYXIuYWRkQ2xhc3MoZWwsICJoaWxpdGUiKTsN CgkJaWYgKGVsLmNhbGRhdGUpIHsNCgkJCUNhbGVuZGFyLmFkZENsYXNzKGVsLnBh cmVudE5vZGUsICJyb3doaWxpdGUiKTsNCgkJfQ0KCX0NCglyZXR1cm4gQ2FsZW5k YXIuc3RvcEV2ZW50KGV2KTsNCn07DQoNCkNhbGVuZGFyLmRheU1vdXNlT3V0ID0g ZnVuY3Rpb24oZXYpIHsNCgl3aXRoIChDYWxlbmRhcikgew0KCQl2YXIgZWwgPSBn ZXRFbGVtZW50KGV2KTsNCgkJaWYgKGlzUmVsYXRlZChlbCwgZXYpIHx8IF9DIHx8 IGVsLmRpc2FibGVkKQ0KCQkJcmV0dXJuIGZhbHNlOw0KCQlyZW1vdmVDbGFzcyhl bCwgImhpbGl0ZSIpOw0KCQlpZiAoZWwuY2FsZGF0ZSkNCgkJCXJlbW92ZUNsYXNz KGVsLnBhcmVudE5vZGUsICJyb3doaWxpdGUiKTsNCgkJaWYgKGVsLmNhbGVuZGFy KQ0KCQkJZWwuY2FsZW5kYXIudG9vbHRpcHMuaW5uZXJIVE1MID0gX1RUWyJTRUxf REFURSJdOw0KCQlyZXR1cm4gc3RvcEV2ZW50KGV2KTsNCgl9DQp9Ow0KDQovKioN CiAqICBBIGdlbmVyaWMgImNsaWNrIiBoYW5kbGVyIDopIGhhbmRsZXMgYWxsIHR5 cGVzIG9mIGJ1dHRvbnMgZGVmaW5lZCBpbiB0aGlzDQogKiAgY2FsZW5kYXIuDQog Ki8NCkNhbGVuZGFyLmNlbGxDbGljayA9IGZ1bmN0aW9uKGVsLCBldikgew0KCXZh ciBjYWwgPSBlbC5jYWxlbmRhcjsNCgl2YXIgY2xvc2luZyA9IGZhbHNlOw0KCXZh ciBuZXdkYXRlID0gZmFsc2U7DQoJdmFyIGRhdGUgPSBudWxsOw0KCWlmICh0eXBl b2YgZWwubmF2dHlwZSA9PSAidW5kZWZpbmVkIikgew0KCQlpZiAoY2FsLmN1cnJl bnREYXRlRWwpIHsNCgkJCUNhbGVuZGFyLnJlbW92ZUNsYXNzKGNhbC5jdXJyZW50 RGF0ZUVsLCAic2VsZWN0ZWQiKTsNCgkJCUNhbGVuZGFyLmFkZENsYXNzKGVsLCAi c2VsZWN0ZWQiKTsNCgkJCWNsb3NpbmcgPSAoY2FsLmN1cnJlbnREYXRlRWwgPT0g ZWwpOw0KCQkJaWYgKCFjbG9zaW5nKSB7DQoJCQkJY2FsLmN1cnJlbnREYXRlRWwg PSBlbDsNCgkJCX0NCgkJfQ0KCQljYWwuZGF0ZS5zZXREYXRlT25seShlbC5jYWxk YXRlKTsNCgkJZGF0ZSA9IGNhbC5kYXRlOw0KCQl2YXIgb3RoZXJfbW9udGggPSAh KGNhbC5kYXRlQ2xpY2tlZCA9ICFlbC5vdGhlck1vbnRoKTsNCgkJaWYgKCFvdGhl cl9tb250aCAmJiAhY2FsLmN1cnJlbnREYXRlRWwpDQoJCQljYWwuX3RvZ2dsZU11 bHRpcGxlRGF0ZShuZXcgRGF0ZShkYXRlKSk7DQoJCWVsc2UNCgkJCW5ld2RhdGUg PSAhZWwuZGlzYWJsZWQ7DQoJCS8vIGEgZGF0ZSB3YXMgY2xpY2tlZA0KCQlpZiAo b3RoZXJfbW9udGgpDQoJCQljYWwuX2luaXQoY2FsLmZpcnN0RGF5T2ZXZWVrLCBk YXRlKTsNCgl9IGVsc2Ugew0KCQlpZiAoZWwubmF2dHlwZSA9PSAyMDApIHsNCgkJ CUNhbGVuZGFyLnJlbW92ZUNsYXNzKGVsLCAiaGlsaXRlIik7DQoJCQljYWwuY2Fs bENsb3NlSGFuZGxlcigpOw0KCQkJcmV0dXJuOw0KCQl9DQoJCWRhdGUgPSBuZXcg RGF0ZShjYWwuZGF0ZSk7DQoJCWlmIChlbC5uYXZ0eXBlID09IDApDQoJCQlkYXRl LnNldERhdGVPbmx5KG5ldyBEYXRlKCkpOyAvLyBUT0RBWQ0KCQkvLyB1bmxlc3Mg InRvZGF5IiB3YXMgY2xpY2tlZCwgd2UgYXNzdW1lIG5vIGRhdGUgd2FzIGNsaWNr ZWQgc28NCgkJLy8gdGhlIHNlbGVjdGVkIGhhbmRsZXIgd2lsbCBrbm93IG5vdCB0 byBjbG9zZSB0aGUgY2FsZW5hciB3aGVuDQoJCS8vIGluIHNpbmdsZS1jbGljayBt b2RlLg0KCQkvLyBjYWwuZGF0ZUNsaWNrZWQgPSAoZWwubmF2dHlwZSA9PSAwKTsN CgkJY2FsLmRhdGVDbGlja2VkID0gZmFsc2U7DQoJCXZhciB5ZWFyID0gZGF0ZS5n ZXRGdWxsWWVhcigpOw0KCQl2YXIgbW9uID0gZGF0ZS5nZXRNb250aCgpOw0KCQlm dW5jdGlvbiBzZXRNb250aChtKSB7DQoJCQl2YXIgZGF5ID0gZGF0ZS5nZXREYXRl KCk7DQoJCQl2YXIgbWF4ID0gZGF0ZS5nZXRNb250aERheXMobSk7DQoJCQlpZiAo ZGF5ID4gbWF4KSB7DQoJCQkJZGF0ZS5zZXREYXRlKG1heCk7DQoJCQl9DQoJCQlk YXRlLnNldE1vbnRoKG0pOw0KCQl9Ow0KCQlzd2l0Y2ggKGVsLm5hdnR5cGUpIHsN CgkJICAgIGNhc2UgNDAwOg0KCQkJQ2FsZW5kYXIucmVtb3ZlQ2xhc3MoZWwsICJo aWxpdGUiKTsNCgkJCXZhciB0ZXh0ID0gQ2FsZW5kYXIuX1RUWyJBQk9VVCJdOw0K CQkJaWYgKHR5cGVvZiB0ZXh0ICE9ICJ1bmRlZmluZWQiKSB7DQoJCQkJdGV4dCAr PSBjYWwuc2hvd3NUaW1lID8gQ2FsZW5kYXIuX1RUWyJBQk9VVF9USU1FIl0gOiAi IjsNCgkJCX0gZWxzZSB7DQoJCQkJLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIHJl bW92ZWQgYXMgc29vbiBhcyBsYW5nIGZpbGVzIGdldCB1cGRhdGVkIQ0KCQkJCXRl eHQgPSAiSGVscCBhbmQgYWJvdXQgYm94IHRleHQgaXMgbm90IHRyYW5zbGF0ZWQg aW50byB0aGlzIGxhbmd1YWdlLlxuIiArDQoJCQkJCSJJZiB5b3Uga25vdyB0aGlz IGxhbmd1YWdlIGFuZCB5b3UgZmVlbCBnZW5lcm91cyBwbGVhc2UgdXBkYXRlXG4i ICsNCgkJCQkJInRoZSBjb3JyZXNwb25kaW5nIGZpbGUgaW4gXCJsYW5nXCIgc3Vi ZGlyIHRvIG1hdGNoIGNhbGVuZGFyLWVuLmpzXG4iICsNCgkJCQkJImFuZCBzZW5k IGl0IGJhY2sgdG8gPG1paGFpX2Jhem9uQHlhaG9vLmNvbT4gdG8gZ2V0IGl0IGlu dG8gdGhlIGRpc3RyaWJ1dGlvbiAgOy0pXG5cbiIgKw0KCQkJCQkiVGhhbmsgeW91 IVxuIiArDQoJCQkJCSJodHRwOi8vZHluYXJjaC5jb20vbWlzaG9vL2NhbGVuZGFy LmVwbFxuIjsNCgkJCX0NCgkJCWFsZXJ0KHRleHQpOw0KCQkJcmV0dXJuOw0KCQkg ICAgY2FzZSAtMjoNCgkJCWlmICh5ZWFyID4gY2FsLm1pblllYXIpIHsNCgkJCQlk YXRlLnNldEZ1bGxZZWFyKHllYXIgLSAxKTsNCgkJCX0NCgkJCWJyZWFrOw0KCQkg ICAgY2FzZSAtMToNCgkJCWlmIChtb24gPiAwKSB7DQoJCQkJc2V0TW9udGgobW9u IC0gMSk7DQoJCQl9IGVsc2UgaWYgKHllYXItLSA+IGNhbC5taW5ZZWFyKSB7DQoJ CQkJZGF0ZS5zZXRGdWxsWWVhcih5ZWFyKTsNCgkJCQlzZXRNb250aCgxMSk7DQoJ CQl9DQoJCQlicmVhazsNCgkJICAgIGNhc2UgMToNCgkJCWlmIChtb24gPCAxMSkg ew0KCQkJCXNldE1vbnRoKG1vbiArIDEpOw0KCQkJfSBlbHNlIGlmICh5ZWFyIDwg Y2FsLm1heFllYXIpIHsNCgkJCQlkYXRlLnNldEZ1bGxZZWFyKHllYXIgKyAxKTsN CgkJCQlzZXRNb250aCgwKTsNCgkJCX0NCgkJCWJyZWFrOw0KCQkgICAgY2FzZSAy Og0KCQkJaWYgKHllYXIgPCBjYWwubWF4WWVhcikgew0KCQkJCWRhdGUuc2V0RnVs bFllYXIoeWVhciArIDEpOw0KCQkJfQ0KCQkJYnJlYWs7DQoJCSAgICBjYXNlIDEw MDoNCgkJCWNhbC5zZXRGaXJzdERheU9mV2VlayhlbC5mZG93KTsNCgkJCXJldHVy bjsNCgkJICAgIGNhc2UgNTA6DQoJCQl2YXIgcmFuZ2UgPSBlbC5fcmFuZ2U7DQoJ CQl2YXIgY3VycmVudCA9IGVsLmlubmVySFRNTDsNCgkJCWZvciAodmFyIGkgPSBy YW5nZS5sZW5ndGg7IC0taSA+PSAwOykNCgkJCQlpZiAocmFuZ2VbaV0gPT0gY3Vy cmVudCkNCgkJCQkJYnJlYWs7DQoJCQlpZiAoZXYgJiYgZXYuc2hpZnRLZXkpIHsN CgkJCQlpZiAoLS1pIDwgMCkNCgkJCQkJaSA9IHJhbmdlLmxlbmd0aCAtIDE7DQoJ CQl9IGVsc2UgaWYgKCArK2kgPj0gcmFuZ2UubGVuZ3RoICkNCgkJCQlpID0gMDsN CgkJCXZhciBuZXd2YWwgPSByYW5nZVtpXTsNCgkJCWVsLmlubmVySFRNTCA9IG5l d3ZhbDsNCgkJCWNhbC5vblVwZGF0ZVRpbWUoKTsNCgkJCXJldHVybjsNCgkJICAg IGNhc2UgMDoNCgkJCS8vIFRPREFZIHdpbGwgYnJpbmcgdXMgaGVyZQ0KCQkJaWYg KCh0eXBlb2YgY2FsLmdldERhdGVTdGF0dXMgPT0gImZ1bmN0aW9uIikgJiYNCgkJ CSAgICBjYWwuZ2V0RGF0ZVN0YXR1cyhkYXRlLCBkYXRlLmdldEZ1bGxZZWFyKCks IGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpKSB7DQoJCQkJcmV0dXJu IGZhbHNlOw0KCQkJfQ0KCQkJYnJlYWs7DQoJCX0NCgkJaWYgKCFkYXRlLmVxdWFs c1RvKGNhbC5kYXRlKSkgew0KCQkJY2FsLnNldERhdGUoZGF0ZSk7DQoJCQluZXdk YXRlID0gdHJ1ZTsNCgkJfSBlbHNlIGlmIChlbC5uYXZ0eXBlID09IDApDQoJCQlu ZXdkYXRlID0gY2xvc2luZyA9IHRydWU7DQoJfQ0KCWlmIChuZXdkYXRlKSB7DQoJ CWV2ICYmIGNhbC5jYWxsSGFuZGxlcigpOw0KCX0NCglpZiAoY2xvc2luZykgew0K CQlDYWxlbmRhci5yZW1vdmVDbGFzcyhlbCwgImhpbGl0ZSIpOw0KCQlldiAmJiBj YWwuY2FsbENsb3NlSGFuZGxlcigpOw0KCX0NCn07DQoNCi8vIEVORDogQ0FMRU5E QVIgU1RBVElDIEZVTkNUSU9OUw0KDQovLyBCRUdJTjogQ0FMRU5EQVIgT0JKRUNU IEZVTkNUSU9OUw0KDQovKioNCiAqICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgdGhl IGNhbGVuZGFyIGluc2lkZSB0aGUgZ2l2ZW4gcGFyZW50LiAgSWYgX3BhciBpcw0K ICogIG51bGwgdGhhbiBpdCBjcmVhdGVzIGEgcG9wdXAgY2FsZW5kYXIgaW5zaWRl IHRoZSBCT0RZIGVsZW1lbnQuICBJZiBfcGFyIGlzDQogKiAgYW4gZWxlbWVudCwg YmUgaXQgQk9EWSwgdGhlbiBpdCBjcmVhdGVzIGEgbm9uLXBvcHVwIGNhbGVuZGFy IChzdGlsbA0KICogIGhpZGRlbikuICBTb21lIHByb3BlcnRpZXMgbmVlZCB0byBi ZSBzZXQgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4NCiAqLw0KQ2FsZW5k YXIucHJvdG90eXBlLmNyZWF0ZSA9IGZ1bmN0aW9uIChfcGFyKSB7DQoJdmFyIHBh cmVudCA9IG51bGw7DQoJaWYgKCEgX3Bhcikgew0KCQkvLyBkZWZhdWx0IHBhcmVu dCBpcyB0aGUgZG9jdW1lbnQgYm9keSwgaW4gd2hpY2ggY2FzZSB3ZSBjcmVhdGUN CgkJLy8gYSBwb3B1cCBjYWxlbmRhci4NCgkJcGFyZW50ID0gZG9jdW1lbnQuZ2V0 RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXTsNCgkJdGhpcy5pc1BvcHVwID0g dHJ1ZTsNCgl9IGVsc2Ugew0KCQlwYXJlbnQgPSBfcGFyOw0KCQl0aGlzLmlzUG9w dXAgPSBmYWxzZTsNCgl9DQoJdGhpcy5kYXRlID0gdGhpcy5kYXRlU3RyID8gbmV3 IERhdGUodGhpcy5kYXRlU3RyKSA6IG5ldyBEYXRlKCk7DQoNCgl2YXIgdGFibGUg PSBDYWxlbmRhci5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOw0KCXRoaXMudGFibGUg PSB0YWJsZTsNCgl0YWJsZS5jZWxsU3BhY2luZyA9IDA7DQoJdGFibGUuY2VsbFBh ZGRpbmcgPSAwOw0KCXRhYmxlLmNhbGVuZGFyID0gdGhpczsNCglDYWxlbmRhci5h ZGRFdmVudCh0YWJsZSwgIm1vdXNlZG93biIsIENhbGVuZGFyLnRhYmxlTW91c2VE b3duKTsNCg0KCXZhciBkaXYgPSBDYWxlbmRhci5jcmVhdGVFbGVtZW50KCJkaXYi KTsNCgl0aGlzLmVsZW1lbnQgPSBkaXY7DQoJZGl2LmNsYXNzTmFtZSA9ICJjYWxl bmRhciI7DQoJaWYgKHRoaXMuaXNQb3B1cCkgew0KCQlkaXYuc3R5bGUucG9zaXRp b24gPSAiYWJzb2x1dGUiOw0KCQlkaXYuc3R5bGUuZGlzcGxheSA9ICJub25lIjsN Cgl9DQoJZGl2LmFwcGVuZENoaWxkKHRhYmxlKTsNCg0KCXZhciB0aGVhZCA9IENh bGVuZGFyLmNyZWF0ZUVsZW1lbnQoInRoZWFkIiwgdGFibGUpOw0KCXZhciBjZWxs ID0gbnVsbDsNCgl2YXIgcm93ID0gbnVsbDsNCg0KCXZhciBjYWwgPSB0aGlzOw0K CXZhciBoaCA9IGZ1bmN0aW9uICh0ZXh0LCBjcywgbmF2dHlwZSkgew0KCQljZWxs ID0gQ2FsZW5kYXIuY3JlYXRlRWxlbWVudCgidGQiLCByb3cpOw0KCQljZWxsLmNv bFNwYW4gPSBjczsNCgkJY2VsbC5jbGFzc05hbWUgPSAiYnV0dG9uIjsNCgkJaWYg KG5hdnR5cGUgIT0gMCAmJiBNYXRoLmFicyhuYXZ0eXBlKSA8PSAyKQ0KCQkJY2Vs bC5jbGFzc05hbWUgKz0gIiBuYXYiOw0KCQlDYWxlbmRhci5fYWRkX2V2cyhjZWxs KTsNCgkJY2VsbC5jYWxlbmRhciA9IGNhbDsNCgkJY2VsbC5uYXZ0eXBlID0gbmF2 dHlwZTsNCgkJY2VsbC5pbm5lckhUTUwgPSAiPGRpdiB1bnNlbGVjdGFibGU9J29u Jz4iICsgdGV4dCArICI8L2Rpdj4iOw0KCQlyZXR1cm4gY2VsbDsNCgl9Ow0KDQoJ cm93ID0gQ2FsZW5kYXIuY3JlYXRlRWxlbWVudCgidHIiLCB0aGVhZCk7DQoJdmFy IHRpdGxlX2xlbmd0aCA9IDY7DQoJKHRoaXMuaXNQb3B1cCkgJiYgLS10aXRsZV9s ZW5ndGg7DQoJKHRoaXMud2Vla051bWJlcnMpICYmICsrdGl0bGVfbGVuZ3RoOw0K DQoJaGgoIj8iLCAxLCA0MDApLnR0aXAgPSBDYWxlbmRhci5fVFRbIklORk8iXTsN Cgl0aGlzLnRpdGxlID0gaGgoIiIsIHRpdGxlX2xlbmd0aCwgMzAwKTsNCgl0aGlz LnRpdGxlLmNsYXNzTmFtZSA9ICJ0aXRsZSI7DQoJaWYgKHRoaXMuaXNQb3B1cCkg ew0KCQl0aGlzLnRpdGxlLnR0aXAgPSBDYWxlbmRhci5fVFRbIkRSQUdfVE9fTU9W RSJdOw0KCQl0aGlzLnRpdGxlLnN0eWxlLmN1cnNvciA9ICJtb3ZlIjsNCgkJaGgo IiYjeDAwZDc7IiwgMSwgMjAwKS50dGlwID0gQ2FsZW5kYXIuX1RUWyJDTE9TRSJd Ow0KCX0NCg0KCXJvdyA9IENhbGVuZGFyLmNyZWF0ZUVsZW1lbnQoInRyIiwgdGhl YWQpOw0KCXJvdy5jbGFzc05hbWUgPSAiaGVhZHJvdyI7DQoNCgl0aGlzLl9uYXZf cHkgPSBoaCgiJiN4MDBhYjsiLCAxLCAtMik7DQoJdGhpcy5fbmF2X3B5LnR0aXAg PSBDYWxlbmRhci5fVFRbIlBSRVZfWUVBUiJdOw0KDQoJdGhpcy5fbmF2X3BtID0g aGgoIiYjeDIwMzk7IiwgMSwgLTEpOw0KCXRoaXMuX25hdl9wbS50dGlwID0gQ2Fs ZW5kYXIuX1RUWyJQUkVWX01PTlRIIl07DQoNCgl0aGlzLl9uYXZfbm93ID0gaGgo Q2FsZW5kYXIuX1RUWyJUT0RBWSJdLCB0aGlzLndlZWtOdW1iZXJzID8gNCA6IDMs IDApOw0KCXRoaXMuX25hdl9ub3cudHRpcCA9IENhbGVuZGFyLl9UVFsiR09fVE9E QVkiXTsNCg0KCXRoaXMuX25hdl9ubSA9IGhoKCImI3gyMDNhOyIsIDEsIDEpOw0K CXRoaXMuX25hdl9ubS50dGlwID0gQ2FsZW5kYXIuX1RUWyJORVhUX01PTlRIIl07 DQoNCgl0aGlzLl9uYXZfbnkgPSBoaCgiJiN4MDBiYjsiLCAxLCAyKTsNCgl0aGlz Ll9uYXZfbnkudHRpcCA9IENhbGVuZGFyLl9UVFsiTkVYVF9ZRUFSIl07DQoNCgkv LyBkYXkgbmFtZXMNCglyb3cgPSBDYWxlbmRhci5jcmVhdGVFbGVtZW50KCJ0ciIs IHRoZWFkKTsNCglyb3cuY2xhc3NOYW1lID0gImRheW5hbWVzIjsNCglpZiAodGhp cy53ZWVrTnVtYmVycykgew0KCQljZWxsID0gQ2FsZW5kYXIuY3JlYXRlRWxlbWVu dCgidGQiLCByb3cpOw0KCQljZWxsLmNsYXNzTmFtZSA9ICJuYW1lIHduIjsNCgkJ Y2VsbC5pbm5lckhUTUwgPSBDYWxlbmRhci5fVFRbIldLIl07DQoJfQ0KCWZvciAo dmFyIGkgPSA3OyBpID4gMDsgLS1pKSB7DQoJCWNlbGwgPSBDYWxlbmRhci5jcmVh dGVFbGVtZW50KCJ0ZCIsIHJvdyk7DQoJCWlmICghaSkgew0KCQkJY2VsbC5uYXZ0 eXBlID0gMTAwOw0KCQkJY2VsbC5jYWxlbmRhciA9IHRoaXM7DQoJCQlDYWxlbmRh ci5fYWRkX2V2cyhjZWxsKTsNCgkJfQ0KCX0NCgl0aGlzLmZpcnN0ZGF5bmFtZSA9 ICh0aGlzLndlZWtOdW1iZXJzKSA/IHJvdy5maXJzdENoaWxkLm5leHRTaWJsaW5n IDogcm93LmZpcnN0Q2hpbGQ7DQoJdGhpcy5fZGlzcGxheVdlZWtkYXlzKCk7DQoN Cgl2YXIgdGJvZHkgPSBDYWxlbmRhci5jcmVhdGVFbGVtZW50KCJ0Ym9keSIsIHRh YmxlKTsNCgl0aGlzLnRib2R5ID0gdGJvZHk7DQoNCglmb3IgKGkgPSA2OyBpID4g MDsgLS1pKSB7DQoJCXJvdyA9IENhbGVuZGFyLmNyZWF0ZUVsZW1lbnQoInRyIiwg dGJvZHkpOw0KCQlpZiAodGhpcy53ZWVrTnVtYmVycykgew0KCQkJY2VsbCA9IENh bGVuZGFyLmNyZWF0ZUVsZW1lbnQoInRkIiwgcm93KTsNCgkJfQ0KCQlmb3IgKHZh ciBqID0gNzsgaiA+IDA7IC0taikgew0KCQkJY2VsbCA9IENhbGVuZGFyLmNyZWF0 ZUVsZW1lbnQoInRkIiwgcm93KTsNCgkJCWNlbGwuY2FsZW5kYXIgPSB0aGlzOw0K CQkJQ2FsZW5kYXIuX2FkZF9ldnMoY2VsbCk7DQoJCX0NCgl9DQoNCglpZiAodGhp cy5zaG93c1RpbWUpIHsNCgkJcm93ID0gQ2FsZW5kYXIuY3JlYXRlRWxlbWVudCgi dHIiLCB0Ym9keSk7DQoJCXJvdy5jbGFzc05hbWUgPSAidGltZSI7DQoNCgkJY2Vs bCA9IENhbGVuZGFyLmNyZWF0ZUVsZW1lbnQoInRkIiwgcm93KTsNCgkJY2VsbC5j bGFzc05hbWUgPSAidGltZSI7DQoJCWNlbGwuY29sU3BhbiA9IDI7DQoJCWNlbGwu aW5uZXJIVE1MID0gQ2FsZW5kYXIuX1RUWyJUSU1FIl0gfHwgIiZuYnNwOyI7DQoN CgkJY2VsbCA9IENhbGVuZGFyLmNyZWF0ZUVsZW1lbnQoInRkIiwgcm93KTsNCgkJ Y2VsbC5jbGFzc05hbWUgPSAidGltZSI7DQoJCWNlbGwuY29sU3BhbiA9IHRoaXMu d2Vla051bWJlcnMgPyA0IDogMzsNCg0KCQkoZnVuY3Rpb24oKXsNCgkJCWZ1bmN0 aW9uIG1ha2VUaW1lUGFydChjbGFzc05hbWUsIGluaXQsIHJhbmdlX3N0YXJ0LCBy YW5nZV9lbmQpIHsNCgkJCQl2YXIgcGFydCA9IENhbGVuZGFyLmNyZWF0ZUVsZW1l bnQoInNwYW4iLCBjZWxsKTsNCgkJCQlwYXJ0LmNsYXNzTmFtZSA9IGNsYXNzTmFt ZTsNCgkJCQlwYXJ0LmlubmVySFRNTCA9IGluaXQ7DQoJCQkJcGFydC5jYWxlbmRh ciA9IGNhbDsNCgkJCQlwYXJ0LnR0aXAgPSBDYWxlbmRhci5fVFRbIlRJTUVfUEFS VCJdOw0KCQkJCXBhcnQubmF2dHlwZSA9IDUwOw0KCQkJCXBhcnQuX3JhbmdlID0g W107DQoJCQkJaWYgKHR5cGVvZiByYW5nZV9zdGFydCAhPSAibnVtYmVyIikNCgkJ CQkJcGFydC5fcmFuZ2UgPSByYW5nZV9zdGFydDsNCgkJCQllbHNlIHsNCgkJCQkJ Zm9yICh2YXIgaSA9IHJhbmdlX3N0YXJ0OyBpIDw9IHJhbmdlX2VuZDsgKytpKSB7 DQoJCQkJCQl2YXIgdHh0Ow0KCQkJCQkJaWYgKGkgPCAxMCAmJiByYW5nZV9lbmQg Pj0gMTApIHR4dCA9ICcwJyArIGk7DQoJCQkJCQllbHNlIHR4dCA9ICcnICsgaTsN CgkJCQkJCXBhcnQuX3JhbmdlW3BhcnQuX3JhbmdlLmxlbmd0aF0gPSB0eHQ7DQoJ CQkJCX0NCgkJCQl9DQoJCQkJQ2FsZW5kYXIuX2FkZF9ldnMocGFydCk7DQoJCQkJ cmV0dXJuIHBhcnQ7DQoJCQl9Ow0KCQkJdmFyIGhycyA9IGNhbC5kYXRlLmdldEhv dXJzKCk7DQoJCQl2YXIgbWlucyA9IGNhbC5kYXRlLmdldE1pbnV0ZXMoKTsNCgkJ CXZhciB0MTIgPSAhY2FsLnRpbWUyNDsNCgkJCXZhciBwbSA9IChocnMgPiAxMik7 DQoJCQlpZiAodDEyICYmIHBtKSBocnMgLT0gMTI7DQoJCQl2YXIgSCA9IG1ha2VU aW1lUGFydCgiaG91ciIsIGhycywgdDEyID8gMSA6IDAsIHQxMiA/IDEyIDogMjMp Ow0KCQkJdmFyIHNwYW4gPSBDYWxlbmRhci5jcmVhdGVFbGVtZW50KCJzcGFuIiwg Y2VsbCk7DQoJCQlzcGFuLmlubmVySFRNTCA9ICI6IjsNCgkJCXNwYW4uY2xhc3NO YW1lID0gImNvbG9uIjsNCgkJCXZhciBNID0gbWFrZVRpbWVQYXJ0KCJtaW51dGUi LCBtaW5zLCAwLCA1OSk7DQoJCQl2YXIgQVAgPSBudWxsOw0KCQkJY2VsbCA9IENh bGVuZGFyLmNyZWF0ZUVsZW1lbnQoInRkIiwgcm93KTsNCgkJCWNlbGwuY2xhc3NO YW1lID0gInRpbWUiOw0KCQkJY2VsbC5jb2xTcGFuID0gMjsNCgkJCWlmICh0MTIp DQoJCQkJQVAgPSBtYWtlVGltZVBhcnQoImFtcG0iLCBwbSA/ICJwbSIgOiAiYW0i LCBbImFtIiwgInBtIl0pOw0KCQkJZWxzZQ0KCQkJCWNlbGwuaW5uZXJIVE1MID0g IiZuYnNwOyI7DQoNCgkJCWNhbC5vblNldFRpbWUgPSBmdW5jdGlvbigpIHsNCgkJ CQl2YXIgcG0sIGhycyA9IHRoaXMuZGF0ZS5nZXRIb3VycygpLA0KCQkJCQltaW5z ID0gdGhpcy5kYXRlLmdldE1pbnV0ZXMoKTsNCgkJCQlpZiAodDEyKSB7DQoJCQkJ CXBtID0gKGhycyA+PSAxMik7DQoJCQkJCWlmIChwbSkgaHJzIC09IDEyOw0KCQkJ CQlpZiAoaHJzID09IDApIGhycyA9IDEyOw0KCQkJCQlBUC5pbm5lckhUTUwgPSBw bSA/ICJwbSIgOiAiYW0iOw0KCQkJCX0NCgkJCQlILmlubmVySFRNTCA9IChocnMg PCAxMCkgPyAoIjAiICsgaHJzKSA6IGhyczsNCgkJCQlNLmlubmVySFRNTCA9ICht aW5zIDwgMTApID8gKCIwIiArIG1pbnMpIDogbWluczsNCgkJCX07DQoNCgkJCWNh bC5vblVwZGF0ZVRpbWUgPSBmdW5jdGlvbigpIHsNCgkJCQl2YXIgZGF0ZSA9IHRo aXMuZGF0ZTsNCgkJCQl2YXIgaCA9IHBhcnNlSW50KEguaW5uZXJIVE1MLCAxMCk7 DQoJCQkJaWYgKHQxMikgew0KCQkJCQlpZiAoL3BtL2kudGVzdChBUC5pbm5lckhU TUwpICYmIGggPCAxMikNCgkJCQkJCWggKz0gMTI7DQoJCQkJCWVsc2UgaWYgKC9h bS9pLnRlc3QoQVAuaW5uZXJIVE1MKSAmJiBoID09IDEyKQ0KCQkJCQkJaCA9IDA7 DQoJCQkJfQ0KCQkJCXZhciBkID0gZGF0ZS5nZXREYXRlKCk7DQoJCQkJdmFyIG0g PSBkYXRlLmdldE1vbnRoKCk7DQoJCQkJdmFyIHkgPSBkYXRlLmdldEZ1bGxZZWFy KCk7DQoJCQkJZGF0ZS5zZXRIb3VycyhoKTsNCgkJCQlkYXRlLnNldE1pbnV0ZXMo cGFyc2VJbnQoTS5pbm5lckhUTUwsIDEwKSk7DQoJCQkJZGF0ZS5zZXRGdWxsWWVh cih5KTsNCgkJCQlkYXRlLnNldE1vbnRoKG0pOw0KCQkJCWRhdGUuc2V0RGF0ZShk KTsNCgkJCQl0aGlzLmRhdGVDbGlja2VkID0gZmFsc2U7DQoJCQkJdGhpcy5jYWxs SGFuZGxlcigpOw0KCQkJfTsNCgkJfSkoKTsNCgl9IGVsc2Ugew0KCQl0aGlzLm9u U2V0VGltZSA9IHRoaXMub25VcGRhdGVUaW1lID0gZnVuY3Rpb24oKSB7fTsNCgl9 DQoNCgl2YXIgdGZvb3QgPSBDYWxlbmRhci5jcmVhdGVFbGVtZW50KCJ0Zm9vdCIs IHRhYmxlKTsNCg0KCXJvdyA9IENhbGVuZGFyLmNyZWF0ZUVsZW1lbnQoInRyIiwg dGZvb3QpOw0KCXJvdy5jbGFzc05hbWUgPSAiZm9vdHJvdyI7DQoNCgljZWxsID0g aGgoQ2FsZW5kYXIuX1RUWyJTRUxfREFURSJdLCB0aGlzLndlZWtOdW1iZXJzID8g OCA6IDcsIDMwMCk7DQoJY2VsbC5jbGFzc05hbWUgPSAidHRpcCI7DQoJaWYgKHRo aXMuaXNQb3B1cCkgew0KCQljZWxsLnR0aXAgPSBDYWxlbmRhci5fVFRbIkRSQUdf VE9fTU9WRSJdOw0KCQljZWxsLnN0eWxlLmN1cnNvciA9ICJtb3ZlIjsNCgl9DQoJ dGhpcy50b29sdGlwcyA9IGNlbGw7DQoNCglkaXYgPSBDYWxlbmRhci5jcmVhdGVF bGVtZW50KCJkaXYiLCB0aGlzLmVsZW1lbnQpOw0KCXRoaXMubW9udGhzQ29tYm8g PSBkaXY7DQoJZGl2LmNsYXNzTmFtZSA9ICJjb21ibyI7DQoJZm9yIChpID0gMDsg aSA8IENhbGVuZGFyLl9NTi5sZW5ndGg7ICsraSkgew0KCQl2YXIgbW4gPSBDYWxl bmRhci5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCgkJbW4uY2xhc3NOYW1lID0gQ2Fs ZW5kYXIuaXNfaWUgPyAibGFiZWwtSUVmaXgiIDogImxhYmVsIjsNCgkJbW4ubW9u dGggPSBpOw0KCQltbi5pbm5lckhUTUwgPSBDYWxlbmRhci5fU01OW2ldOw0KCQlk aXYuYXBwZW5kQ2hpbGQobW4pOw0KCX0NCg0KCWRpdiA9IENhbGVuZGFyLmNyZWF0 ZUVsZW1lbnQoImRpdiIsIHRoaXMuZWxlbWVudCk7DQoJdGhpcy55ZWFyc0NvbWJv ID0gZGl2Ow0KCWRpdi5jbGFzc05hbWUgPSAiY29tYm8iOw0KCWZvciAoaSA9IDEy OyBpID4gMDsgLS1pKSB7DQoJCXZhciB5ciA9IENhbGVuZGFyLmNyZWF0ZUVsZW1l bnQoImRpdiIpOw0KCQl5ci5jbGFzc05hbWUgPSBDYWxlbmRhci5pc19pZSA/ICJs YWJlbC1JRWZpeCIgOiAibGFiZWwiOw0KCQlkaXYuYXBwZW5kQ2hpbGQoeXIpOw0K CX0NCg0KCXRoaXMuX2luaXQodGhpcy5maXJzdERheU9mV2VlaywgdGhpcy5kYXRl KTsNCglwYXJlbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTsNCn07DQoNCi8q KiBrZXlib2FyZCBuYXZpZ2F0aW9uLCBvbmx5IGZvciBwb3B1cCBjYWxlbmRhcnMg Ki8NCkNhbGVuZGFyLl9rZXlFdmVudCA9IGZ1bmN0aW9uKGV2KSB7DQoJdmFyIGNh bCA9IHdpbmRvdy5fZHluYXJjaF9wb3B1cENhbGVuZGFyOw0KCWlmICghY2FsIHx8 IGNhbC5tdWx0aXBsZSkNCgkJcmV0dXJuIGZhbHNlOw0KCShDYWxlbmRhci5pc19p ZSkgJiYgKGV2ID0gd2luZG93LmV2ZW50KTsNCgl2YXIgYWN0ID0gKENhbGVuZGFy LmlzX2llIHx8IGV2LnR5cGUgPT0gImtleXByZXNzIiksDQoJCUsgPSBldi5rZXlD b2RlOw0KCWlmIChldi5jdHJsS2V5KSB7DQoJCXN3aXRjaCAoSykgew0KCQkgICAg Y2FzZSAzNzogLy8gS0VZIGxlZnQNCgkJCWFjdCAmJiBDYWxlbmRhci5jZWxsQ2xp Y2soY2FsLl9uYXZfcG0pOw0KCQkJYnJlYWs7DQoJCSAgICBjYXNlIDM4OiAvLyBL RVkgdXANCgkJCWFjdCAmJiBDYWxlbmRhci5jZWxsQ2xpY2soY2FsLl9uYXZfcHkp Ow0KCQkJYnJlYWs7DQoJCSAgICBjYXNlIDM5OiAvLyBLRVkgcmlnaHQNCgkJCWFj dCAmJiBDYWxlbmRhci5jZWxsQ2xpY2soY2FsLl9uYXZfbm0pOw0KCQkJYnJlYWs7 DQoJCSAgICBjYXNlIDQwOiAvLyBLRVkgZG93bg0KCQkJYWN0ICYmIENhbGVuZGFy LmNlbGxDbGljayhjYWwuX25hdl9ueSk7DQoJCQlicmVhazsNCgkJICAgIGRlZmF1 bHQ6DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgl9IGVsc2Ugc3dpdGNoIChLKSB7 DQoJICAgIGNhc2UgMzI6IC8vIEtFWSBzcGFjZSAobm93KQ0KCQlDYWxlbmRhci5j ZWxsQ2xpY2soY2FsLl9uYXZfbm93KTsNCgkJYnJlYWs7DQoJICAgIGNhc2UgMjc6 IC8vIEtFWSBlc2MNCgkJYWN0ICYmIGNhbC5jYWxsQ2xvc2VIYW5kbGVyKCk7DQoJ CWJyZWFrOw0KCSAgICBjYXNlIDM3OiAvLyBLRVkgbGVmdA0KCSAgICBjYXNlIDM4 OiAvLyBLRVkgdXANCgkgICAgY2FzZSAzOTogLy8gS0VZIHJpZ2h0DQoJICAgIGNh c2UgNDA6IC8vIEtFWSBkb3duDQoJCWlmIChhY3QpIHsNCgkJCXZhciBwcmV2LCB4 LCB5LCBuZSwgZWwsIHN0ZXA7DQoJCQlwcmV2ID0gSyA9PSAzNyB8fCBLID09IDM4 Ow0KCQkJc3RlcCA9IChLID09IDM3IHx8IEsgPT0gMzkpID8gMSA6IDc7DQoJCQlm dW5jdGlvbiBzZXRWYXJzKCkgew0KCQkJCWVsID0gY2FsLmN1cnJlbnREYXRlRWw7 DQoJCQkJdmFyIHAgPSBlbC5wb3M7DQoJCQkJeCA9IHAgJiAxNTsNCgkJCQl5ID0g cCA+PiA0Ow0KCQkJCW5lID0gY2FsLmFyX2RheXNbeV1beF07DQoJCQl9O3NldFZh cnMoKTsNCgkJCWZ1bmN0aW9uIHByZXZNb250aCgpIHsNCgkJCQl2YXIgZGF0ZSA9 IG5ldyBEYXRlKGNhbC5kYXRlKTsNCgkJCQlkYXRlLnNldERhdGUoZGF0ZS5nZXRE YXRlKCkgLSBzdGVwKTsNCgkJCQljYWwuc2V0RGF0ZShkYXRlKTsNCgkJCX07DQoJ CQlmdW5jdGlvbiBuZXh0TW9udGgoKSB7DQoJCQkJdmFyIGRhdGUgPSBuZXcgRGF0 ZShjYWwuZGF0ZSk7DQoJCQkJZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsg c3RlcCk7DQoJCQkJY2FsLnNldERhdGUoZGF0ZSk7DQoJCQl9Ow0KCQkJd2hpbGUg KDEpIHsNCgkJCQlzd2l0Y2ggKEspIHsNCgkJCQkgICAgY2FzZSAzNzogLy8gS0VZ IGxlZnQNCgkJCQkJaWYgKC0teCA+PSAwKQ0KCQkJCQkJbmUgPSBjYWwuYXJfZGF5 c1t5XVt4XTsNCgkJCQkJZWxzZSB7DQoJCQkJCQl4ID0gNjsNCgkJCQkJCUsgPSAz ODsNCgkJCQkJCWNvbnRpbnVlOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCSAg ICBjYXNlIDM4OiAvLyBLRVkgdXANCgkJCQkJaWYgKC0teSA+PSAwKQ0KCQkJCQkJ bmUgPSBjYWwuYXJfZGF5c1t5XVt4XTsNCgkJCQkJZWxzZSB7DQoJCQkJCQlwcmV2 TW9udGgoKTsNCgkJCQkJCXNldFZhcnMoKTsNCgkJCQkJfQ0KCQkJCQlicmVhazsN CgkJCQkgICAgY2FzZSAzOTogLy8gS0VZIHJpZ2h0DQoJCQkJCWlmICgrK3ggPCA3 KQ0KCQkJCQkJbmUgPSBjYWwuYXJfZGF5c1t5XVt4XTsNCgkJCQkJZWxzZSB7DQoJ CQkJCQl4ID0gMDsNCgkJCQkJCUsgPSA0MDsNCgkJCQkJCWNvbnRpbnVlOw0KCQkJ CQl9DQoJCQkJCWJyZWFrOw0KCQkJCSAgICBjYXNlIDQwOiAvLyBLRVkgZG93bg0K CQkJCQlpZiAoKyt5IDwgY2FsLmFyX2RheXMubGVuZ3RoKQ0KCQkJCQkJbmUgPSBj YWwuYXJfZGF5c1t5XVt4XTsNCgkJCQkJZWxzZSB7DQoJCQkJCQluZXh0TW9udGgo KTsNCgkJCQkJCXNldFZhcnMoKTsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQl9 DQoJCQkJYnJlYWs7DQoJCQl9DQoJCQlpZiAobmUpIHsNCgkJCQlpZiAoIW5lLmRp c2FibGVkKQ0KCQkJCQlDYWxlbmRhci5jZWxsQ2xpY2sobmUpOw0KCQkJCWVsc2Ug aWYgKHByZXYpDQoJCQkJCXByZXZNb250aCgpOw0KCQkJCWVsc2UNCgkJCQkJbmV4 dE1vbnRoKCk7DQoJCQl9DQoJCX0NCgkJYnJlYWs7DQoJICAgIGNhc2UgMTM6IC8v IEtFWSBlbnRlcg0KCQlpZiAoYWN0KQ0KCQkJQ2FsZW5kYXIuY2VsbENsaWNrKGNh bC5jdXJyZW50RGF0ZUVsLCBldik7DQoJCWJyZWFrOw0KCSAgICBkZWZhdWx0Og0K CQlyZXR1cm4gZmFsc2U7DQoJfQ0KCXJldHVybiBDYWxlbmRhci5zdG9wRXZlbnQo ZXYpOw0KfTsNCg0KLyoqDQogKiAgKFJFKUluaXRpYWxpemVzIHRoZSBjYWxlbmRh ciB0byB0aGUgZ2l2ZW4gZGF0ZSBhbmQgZmlyc3REYXlPZldlZWsNCiAqLw0KQ2Fs ZW5kYXIucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gKGZpcnN0RGF5T2ZXZWVr LCBkYXRlKSB7DQoJdmFyIHRvZGF5ID0gbmV3IERhdGUoKSwNCgkJVFkgPSB0b2Rh eS5nZXRGdWxsWWVhcigpLA0KCQlUTSA9IHRvZGF5LmdldE1vbnRoKCksDQoJCVRE ID0gdG9kYXkuZ2V0RGF0ZSgpOw0KCXRoaXMudGFibGUuc3R5bGUudmlzaWJpbGl0 eSA9ICJoaWRkZW4iOw0KCXZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpOw0K CWlmICh5ZWFyIDwgdGhpcy5taW5ZZWFyKSB7DQoJCXllYXIgPSB0aGlzLm1pblll YXI7DQoJCWRhdGUuc2V0RnVsbFllYXIoeWVhcik7DQoJfSBlbHNlIGlmICh5ZWFy ID4gdGhpcy5tYXhZZWFyKSB7DQoJCXllYXIgPSB0aGlzLm1heFllYXI7DQoJCWRh dGUuc2V0RnVsbFllYXIoeWVhcik7DQoJfQ0KCXRoaXMuZmlyc3REYXlPZldlZWsg PSBmaXJzdERheU9mV2VlazsNCgl0aGlzLmRhdGUgPSBuZXcgRGF0ZShkYXRlKTsN Cgl2YXIgbW9udGggPSBkYXRlLmdldE1vbnRoKCk7DQoJdmFyIG1kYXkgPSBkYXRl LmdldERhdGUoKTsNCgl2YXIgbm9fZGF5cyA9IGRhdGUuZ2V0TW9udGhEYXlzKCk7 DQoNCgkvLyBjYWxlbmRhciB2b29kb28gZm9yIGNvbXB1dGluZyB0aGUgZmlyc3Qg ZGF5IHRoYXQgd291bGQgYWN0dWFsbHkgYmUNCgkvLyBkaXNwbGF5ZWQgaW4gdGhl IGNhbGVuZGFyLCBldmVuIGlmIGl0J3MgZnJvbSB0aGUgcHJldmlvdXMgbW9udGgu DQoJLy8gV0FSTklORzogdGhpcyBpcyBtYWdpYy4gOy0pDQoJZGF0ZS5zZXREYXRl KDEpOw0KCXZhciBkYXkxID0gKGRhdGUuZ2V0RGF5KCkgLSB0aGlzLmZpcnN0RGF5 T2ZXZWVrKSAlIDc7DQoJaWYgKGRheTEgPCAwKQ0KCQlkYXkxICs9IDc7DQoJZGF0 ZS5zZXREYXRlKC1kYXkxKTsNCglkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkg KyAxKTsNCg0KCXZhciByb3cgPSB0aGlzLnRib2R5LmZpcnN0Q2hpbGQ7DQoJdmFy IE1OID0gQ2FsZW5kYXIuX1NNTlttb250aF07DQoJdmFyIGFyX2RheXMgPSB0aGlz LmFyX2RheXMgPSBuZXcgQXJyYXkoKTsNCgl2YXIgd2Vla2VuZCA9IENhbGVuZGFy Ll9UVFsiV0VFS0VORCJdOw0KCXZhciBkYXRlcyA9IHRoaXMubXVsdGlwbGUgPyAo dGhpcy5kYXRlc0NlbGxzID0ge30pIDogbnVsbDsNCglmb3IgKHZhciBpID0gMDsg aSA8IDY7ICsraSwgcm93ID0gcm93Lm5leHRTaWJsaW5nKSB7DQoJCXZhciBjZWxs ID0gcm93LmZpcnN0Q2hpbGQ7DQoJCWlmICh0aGlzLndlZWtOdW1iZXJzKSB7DQoJ CQljZWxsLmNsYXNzTmFtZSA9ICJkYXkgd24iOw0KCQkJY2VsbC5pbm5lckhUTUwg PSBkYXRlLmdldFdlZWtOdW1iZXIoKTsNCgkJCWNlbGwgPSBjZWxsLm5leHRTaWJs aW5nOw0KCQl9DQoJCXJvdy5jbGFzc05hbWUgPSAiZGF5c3JvdyI7DQoJCXZhciBo YXNkYXlzID0gZmFsc2UsIGlkYXksIGRwb3MgPSBhcl9kYXlzW2ldID0gW107DQoJ CWZvciAodmFyIGogPSAwOyBqIDwgNzsgKytqLCBjZWxsID0gY2VsbC5uZXh0U2li bGluZywgZGF0ZS5zZXREYXRlKGlkYXkgKyAxKSkgew0KCQkJaWRheSA9IGRhdGUu Z2V0RGF0ZSgpOw0KCQkJdmFyIHdkYXkgPSBkYXRlLmdldERheSgpOw0KCQkJY2Vs bC5jbGFzc05hbWUgPSAiZGF5IjsNCgkJCWNlbGwucG9zID0gaSA8PCA0IHwgajsN CgkJCWRwb3Nbal0gPSBjZWxsOw0KCQkJdmFyIGN1cnJlbnRfbW9udGggPSAoZGF0 ZS5nZXRNb250aCgpID09IG1vbnRoKTsNCgkJCWlmICghY3VycmVudF9tb250aCkg ew0KCQkJCWlmICh0aGlzLnNob3dzT3RoZXJNb250aHMpIHsNCgkJCQkJY2VsbC5j bGFzc05hbWUgKz0gIiBvdGhlcm1vbnRoIjsNCgkJCQkJY2VsbC5vdGhlck1vbnRo ID0gdHJ1ZTsNCgkJCQl9IGVsc2Ugew0KCQkJCQljZWxsLmNsYXNzTmFtZSA9ICJl bXB0eWNlbGwiOw0KCQkJCQljZWxsLmlubmVySFRNTCA9ICImbmJzcDsiOw0KCQkJ CQljZWxsLmRpc2FibGVkID0gdHJ1ZTsNCgkJCQkJY29udGludWU7DQoJCQkJfQ0K CQkJfSBlbHNlIHsNCgkJCQljZWxsLm90aGVyTW9udGggPSBmYWxzZTsNCgkJCQlo YXNkYXlzID0gdHJ1ZTsNCgkJCX0NCgkJCWNlbGwuZGlzYWJsZWQgPSBmYWxzZTsN CgkJCWNlbGwuaW5uZXJIVE1MID0gdGhpcy5nZXREYXRlVGV4dCA/IHRoaXMuZ2V0 RGF0ZVRleHQoZGF0ZSwgaWRheSkgOiBpZGF5Ow0KCQkJaWYgKGRhdGVzKQ0KCQkJ CWRhdGVzW2RhdGUucHJpbnQoIiVZJW0lZCIpXSA9IGNlbGw7DQoJCQlpZiAodGhp cy5nZXREYXRlU3RhdHVzKSB7DQoJCQkJdmFyIHN0YXR1cyA9IHRoaXMuZ2V0RGF0 ZVN0YXR1cyhkYXRlLCB5ZWFyLCBtb250aCwgaWRheSk7DQoJCQkJaWYgKHRoaXMu Z2V0RGF0ZVRvb2xUaXApIHsNCgkJCQkJdmFyIHRvb2xUaXAgPSB0aGlzLmdldERh dGVUb29sVGlwKGRhdGUsIHllYXIsIG1vbnRoLCBpZGF5KTsNCgkJCQkJaWYgKHRv b2xUaXApDQoJCQkJCQljZWxsLnRpdGxlID0gdG9vbFRpcDsNCgkJCQl9DQoJCQkJ aWYgKHN0YXR1cyA9PT0gdHJ1ZSkgew0KCQkJCQljZWxsLmNsYXNzTmFtZSArPSAi IGRpc2FibGVkIjsNCgkJCQkJY2VsbC5kaXNhYmxlZCA9IHRydWU7DQoJCQkJfSBl bHNlIHsNCgkJCQkJaWYgKC9kaXNhYmxlZC9pLnRlc3Qoc3RhdHVzKSkNCgkJCQkJ CWNlbGwuZGlzYWJsZWQgPSB0cnVlOw0KCQkJCQljZWxsLmNsYXNzTmFtZSArPSAi ICIgKyBzdGF0dXM7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKCFjZWxsLmRpc2FibGVk KSB7DQoJCQkJY2VsbC5jYWxkYXRlID0gbmV3IERhdGUoZGF0ZSk7DQoJCQkJY2Vs bC50dGlwID0gIl8iOw0KCQkJCWlmICghdGhpcy5tdWx0aXBsZSAmJiBjdXJyZW50 X21vbnRoDQoJCQkJICAgICYmIGlkYXkgPT0gbWRheSAmJiB0aGlzLmhpbGl0ZVRv ZGF5KSB7DQoJCQkJCWNlbGwuY2xhc3NOYW1lICs9ICIgc2VsZWN0ZWQiOw0KCQkJ CQl0aGlzLmN1cnJlbnREYXRlRWwgPSBjZWxsOw0KCQkJCX0NCgkJCQlpZiAoZGF0 ZS5nZXRGdWxsWWVhcigpID09IFRZICYmDQoJCQkJICAgIGRhdGUuZ2V0TW9udGgo KSA9PSBUTSAmJg0KCQkJCSAgICBpZGF5ID09IFREKSB7DQoJCQkJCWNlbGwuY2xh c3NOYW1lICs9ICIgdG9kYXkiOw0KCQkJCQljZWxsLnR0aXAgKz0gQ2FsZW5kYXIu X1RUWyJQQVJUX1RPREFZIl07DQoJCQkJfQ0KCQkJCWlmICh3ZWVrZW5kLmluZGV4 T2Yod2RheS50b1N0cmluZygpKSAhPSAtMSkNCgkJCQkJY2VsbC5jbGFzc05hbWUg Kz0gY2VsbC5vdGhlck1vbnRoID8gIiBvd2Vla2VuZCIgOiAiIHdlZWtlbmQiOw0K CQkJfQ0KCQl9DQoJCWlmICghKGhhc2RheXMgfHwgdGhpcy5zaG93c090aGVyTW9u dGhzKSkNCgkJCXJvdy5jbGFzc05hbWUgPSAiZW1wdHlyb3ciOw0KCX0NCgl0aGlz LnRpdGxlLmlubmVySFRNTCA9IENhbGVuZGFyLl9NTlttb250aF0gKyAiLCAiICsg eWVhcjsNCgl0aGlzLm9uU2V0VGltZSgpOw0KCXRoaXMudGFibGUuc3R5bGUudmlz aWJpbGl0eSA9ICJ2aXNpYmxlIjsNCgl0aGlzLl9pbml0TXVsdGlwbGVEYXRlcygp Ow0KCS8vIFBST0ZJTEUNCgkvLyB0aGlzLnRvb2x0aXBzLmlubmVySFRNTCA9ICJH ZW5lcmF0ZWQgaW4gIiArICgobmV3IERhdGUoKSkgLSB0b2RheSkgKyAiIG1zIjsN Cn07DQoNCkNhbGVuZGFyLnByb3RvdHlwZS5faW5pdE11bHRpcGxlRGF0ZXMgPSBm dW5jdGlvbigpIHsNCglpZiAodGhpcy5tdWx0aXBsZSkgew0KCQlmb3IgKHZhciBp IGluIHRoaXMubXVsdGlwbGUpIHsNCgkJCXZhciBjZWxsID0gdGhpcy5kYXRlc0Nl bGxzW2ldOw0KCQkJdmFyIGQgPSB0aGlzLm11bHRpcGxlW2ldOw0KCQkJaWYgKCFk KQ0KCQkJCWNvbnRpbnVlOw0KCQkJaWYgKGNlbGwpDQoJCQkJY2VsbC5jbGFzc05h bWUgKz0gIiBzZWxlY3RlZCI7DQoJCX0NCgl9DQp9Ow0KDQpDYWxlbmRhci5wcm90 b3R5cGUuX3RvZ2dsZU11bHRpcGxlRGF0ZSA9IGZ1bmN0aW9uKGRhdGUpIHsNCglp ZiAodGhpcy5tdWx0aXBsZSkgew0KCQl2YXIgZHMgPSBkYXRlLnByaW50KCIlWSVt JWQiKTsNCgkJdmFyIGNlbGwgPSB0aGlzLmRhdGVzQ2VsbHNbZHNdOw0KCQlpZiAo Y2VsbCkgew0KCQkJdmFyIGQgPSB0aGlzLm11bHRpcGxlW2RzXTsNCgkJCWlmICgh ZCkgew0KCQkJCUNhbGVuZGFyLmFkZENsYXNzKGNlbGwsICJzZWxlY3RlZCIpOw0K CQkJCXRoaXMubXVsdGlwbGVbZHNdID0gZGF0ZTsNCgkJCX0gZWxzZSB7DQoJCQkJ Q2FsZW5kYXIucmVtb3ZlQ2xhc3MoY2VsbCwgInNlbGVjdGVkIik7DQoJCQkJZGVs ZXRlIHRoaXMubXVsdGlwbGVbZHNdOw0KCQkJfQ0KCQl9DQoJfQ0KfTsNCg0KQ2Fs ZW5kYXIucHJvdG90eXBlLnNldERhdGVUb29sVGlwSGFuZGxlciA9IGZ1bmN0aW9u ICh1bmFyeUZ1bmN0aW9uKSB7DQoJdGhpcy5nZXREYXRlVG9vbFRpcCA9IHVuYXJ5 RnVuY3Rpb247DQp9Ow0KDQovKioNCiAqICBDYWxscyBfaW5pdCBmdW5jdGlvbiBh Ym92ZSBmb3IgZ29pbmcgdG8gYSBjZXJ0YWluIGRhdGUgKGJ1dCBvbmx5IGlmIHRo ZQ0KICogIGRhdGUgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGN1cnJlbnRseSBzZWxl Y3RlZCBvbmUpLg0KICovDQpDYWxlbmRhci5wcm90b3R5cGUuc2V0RGF0ZSA9IGZ1 bmN0aW9uIChkYXRlKSB7DQoJaWYgKCFkYXRlLmVxdWFsc1RvKHRoaXMuZGF0ZSkp IHsNCgkJdGhpcy5faW5pdCh0aGlzLmZpcnN0RGF5T2ZXZWVrLCBkYXRlKTsNCgl9 DQp9Ow0KDQovKioNCiAqICBSZWZyZXNoZXMgdGhlIGNhbGVuZGFyLiAgVXNlZnVs IGlmIHRoZSAiZGlzYWJsZWRIYW5kbGVyIiBmdW5jdGlvbiBpcw0KICogIGR5bmFt aWMsIG1lYW5pbmcgdGhhdCB0aGUgbGlzdCBvZiBkaXNhYmxlZCBkYXRlIGNhbiBj aGFuZ2UgYXQgcnVudGltZS4NCiAqICBKdXN0ICogY2FsbCB0aGlzIGZ1bmN0aW9u IGlmIHlvdSB0aGluayB0aGF0IHRoZSBsaXN0IG9mIGRpc2FibGVkIGRhdGVzDQog KiAgc2hvdWxkICogY2hhbmdlLg0KICovDQpDYWxlbmRhci5wcm90b3R5cGUucmVm cmVzaCA9IGZ1bmN0aW9uICgpIHsNCgl0aGlzLl9pbml0KHRoaXMuZmlyc3REYXlP ZldlZWssIHRoaXMuZGF0ZSk7DQp9Ow0KDQovKiogTW9kaWZpZXMgdGhlICJmaXJz dERheU9mV2VlayIgcGFyYW1ldGVyIChwYXNzIDAgZm9yIFN5bmRheSwgMSBmb3Ig TW9uZGF5LCBldGMuKS4gKi8NCkNhbGVuZGFyLnByb3RvdHlwZS5zZXRGaXJzdERh eU9mV2VlayA9IGZ1bmN0aW9uIChmaXJzdERheU9mV2Vlaykgew0KCXRoaXMuX2lu aXQoZmlyc3REYXlPZldlZWssIHRoaXMuZGF0ZSk7DQoJdGhpcy5fZGlzcGxheVdl ZWtkYXlzKCk7DQp9Ow0KDQovKioNCiAqICBBbGxvd3MgY3VzdG9taXphdGlvbiBv ZiB3aGF0IGRhdGVzIGFyZSBlbmFibGVkLiAgVGhlICJ1bmFyeUZ1bmN0aW9uIg0K ICogIHBhcmFtZXRlciBtdXN0IGJlIGEgZnVuY3Rpb24gb2JqZWN0IHRoYXQgcmVj ZWl2ZXMgdGhlIGRhdGUgKGFzIGEgSlMgRGF0ZQ0KICogIG9iamVjdCkgYW5kIHJl dHVybnMgYSBib29sZWFuIHZhbHVlLiAgSWYgdGhlIHJldHVybmVkIHZhbHVlIGlz IHRydWUgdGhlbg0KICogIHRoZSBwYXNzZWQgZGF0ZSB3aWxsIGJlIG1hcmtlZCBh cyBkaXNhYmxlZC4NCiAqLw0KQ2FsZW5kYXIucHJvdG90eXBlLnNldERhdGVTdGF0 dXNIYW5kbGVyID0gQ2FsZW5kYXIucHJvdG90eXBlLnNldERpc2FibGVkSGFuZGxl ciA9IGZ1bmN0aW9uICh1bmFyeUZ1bmN0aW9uKSB7DQoJdGhpcy5nZXREYXRlU3Rh dHVzID0gdW5hcnlGdW5jdGlvbjsNCn07DQoNCi8qKiBDdXN0b21pemF0aW9uIG9m IGFsbG93ZWQgeWVhciByYW5nZSBmb3IgdGhlIGNhbGVuZGFyLiAqLw0KQ2FsZW5k YXIucHJvdG90eXBlLnNldFJhbmdlID0gZnVuY3Rpb24gKGEsIHopIHsNCgl0aGlz Lm1pblllYXIgPSBhOw0KCXRoaXMubWF4WWVhciA9IHo7DQp9Ow0KDQovKiogQ2Fs bHMgdGhlIGZpcnN0IHVzZXIgaGFuZGxlciAoc2VsZWN0ZWRIYW5kbGVyKS4gKi8N CkNhbGVuZGFyLnByb3RvdHlwZS5jYWxsSGFuZGxlciA9IGZ1bmN0aW9uICgpIHsN CglpZiAodGhpcy5vblNlbGVjdGVkKSB7DQoJCXRoaXMub25TZWxlY3RlZCh0aGlz LCB0aGlzLmRhdGUucHJpbnQodGhpcy5kYXRlRm9ybWF0KSk7DQoJfQ0KfTsNCg0K LyoqIENhbGxzIHRoZSBzZWNvbmQgdXNlciBoYW5kbGVyIChjbG9zZUhhbmRsZXIp LiAqLw0KQ2FsZW5kYXIucHJvdG90eXBlLmNhbGxDbG9zZUhhbmRsZXIgPSBmdW5j dGlvbiAoKSB7DQoJaWYgKHRoaXMub25DbG9zZSkgew0KCQl0aGlzLm9uQ2xvc2Uo dGhpcyk7DQoJfQ0KCXRoaXMuaGlkZVNob3dDb3ZlcmVkKCk7DQp9Ow0KDQovKiog UmVtb3ZlcyB0aGUgY2FsZW5kYXIgb2JqZWN0IGZyb20gdGhlIERPTSB0cmVlIGFu ZCBkZXN0cm95cyBpdC4gKi8NCkNhbGVuZGFyLnByb3RvdHlwZS5kZXN0cm95ID0g ZnVuY3Rpb24gKCkgew0KCXZhciBlbCA9IHRoaXMuZWxlbWVudC5wYXJlbnROb2Rl Ow0KCWVsLnJlbW92ZUNoaWxkKHRoaXMuZWxlbWVudCk7DQoJQ2FsZW5kYXIuX0Mg PSBudWxsOw0KCXdpbmRvdy5fZHluYXJjaF9wb3B1cENhbGVuZGFyID0gbnVsbDsN Cn07DQoNCi8qKg0KICogIE1vdmVzIHRoZSBjYWxlbmRhciBlbGVtZW50IHRvIGEg ZGlmZmVyZW50IHNlY3Rpb24gaW4gdGhlIERPTSB0cmVlIChjaGFuZ2VzDQogKiAg aXRzIHBhcmVudCkuDQogKi8NCkNhbGVuZGFyLnByb3RvdHlwZS5yZXBhcmVudCA9 IGZ1bmN0aW9uIChuZXdfcGFyZW50KSB7DQoJdmFyIGVsID0gdGhpcy5lbGVtZW50 Ow0KCWVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWwpOw0KCW5ld19wYXJlbnQu YXBwZW5kQ2hpbGQoZWwpOw0KfTsNCg0KLy8gVGhpcyBnZXRzIGNhbGxlZCB3aGVu IHRoZSB1c2VyIHByZXNzZXMgYSBtb3VzZSBidXR0b24gYW55d2hlcmUgaW4gdGhl DQovLyBkb2N1bWVudCwgaWYgdGhlIGNhbGVuZGFyIGlzIHNob3duLiAgSWYgdGhl IGNsaWNrIHdhcyBvdXRzaWRlIHRoZSBvcGVuDQovLyBjYWxlbmRhciB0aGlzIGZ1 bmN0aW9uIGNsb3NlcyBpdC4NCkNhbGVuZGFyLl9jaGVja0NhbGVuZGFyID0gZnVu Y3Rpb24oZXYpIHsNCgl2YXIgY2FsZW5kYXIgPSB3aW5kb3cuX2R5bmFyY2hfcG9w dXBDYWxlbmRhcjsNCglpZiAoIWNhbGVuZGFyKSB7DQoJCXJldHVybiBmYWxzZTsN Cgl9DQoJdmFyIGVsID0gQ2FsZW5kYXIuaXNfaWUgPyBDYWxlbmRhci5nZXRFbGVt ZW50KGV2KSA6IENhbGVuZGFyLmdldFRhcmdldEVsZW1lbnQoZXYpOw0KCWZvciAo OyBlbCAhPSBudWxsICYmIGVsICE9IGNhbGVuZGFyLmVsZW1lbnQ7IGVsID0gZWwu cGFyZW50Tm9kZSk7DQoJaWYgKGVsID09IG51bGwpIHsNCgkJLy8gY2FsbHMgY2xv c2VIYW5kbGVyIHdoaWNoIHNob3VsZCBoaWRlIHRoZSBjYWxlbmRhci4NCgkJd2lu ZG93Ll9keW5hcmNoX3BvcHVwQ2FsZW5kYXIuY2FsbENsb3NlSGFuZGxlcigpOw0K CQlyZXR1cm4gQ2FsZW5kYXIuc3RvcEV2ZW50KGV2KTsNCgl9DQp9Ow0KDQovKiog U2hvd3MgdGhlIGNhbGVuZGFyLiAqLw0KQ2FsZW5kYXIucHJvdG90eXBlLnNob3cg PSBmdW5jdGlvbiAoKSB7DQoJdmFyIHJvd3MgPSB0aGlzLnRhYmxlLmdldEVsZW1l bnRzQnlUYWdOYW1lKCJ0ciIpOw0KCWZvciAodmFyIGkgPSByb3dzLmxlbmd0aDsg aSA+IDA7KSB7DQoJCXZhciByb3cgPSByb3dzWy0taV07DQoJCUNhbGVuZGFyLnJl bW92ZUNsYXNzKHJvdywgInJvd2hpbGl0ZSIpOw0KCQl2YXIgY2VsbHMgPSByb3cu Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIik7DQoJCWZvciAodmFyIGogPSBjZWxs cy5sZW5ndGg7IGogPiAwOykgew0KCQkJdmFyIGNlbGwgPSBjZWxsc1stLWpdOw0K CQkJQ2FsZW5kYXIucmVtb3ZlQ2xhc3MoY2VsbCwgImhpbGl0ZSIpOw0KCQkJQ2Fs ZW5kYXIucmVtb3ZlQ2xhc3MoY2VsbCwgImFjdGl2ZSIpOw0KCQl9DQoJfQ0KCXRo aXMuZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsNCgl0aGlzLmhpZGRl biA9IGZhbHNlOw0KCWlmICh0aGlzLmlzUG9wdXApIHsNCgkJd2luZG93Ll9keW5h cmNoX3BvcHVwQ2FsZW5kYXIgPSB0aGlzOw0KCQlDYWxlbmRhci5hZGRFdmVudChk b2N1bWVudCwgImtleWRvd24iLCBDYWxlbmRhci5fa2V5RXZlbnQpOw0KCQlDYWxl bmRhci5hZGRFdmVudChkb2N1bWVudCwgImtleXByZXNzIiwgQ2FsZW5kYXIuX2tl eUV2ZW50KTsNCgkJQ2FsZW5kYXIuYWRkRXZlbnQoZG9jdW1lbnQsICJtb3VzZWRv d24iLCBDYWxlbmRhci5fY2hlY2tDYWxlbmRhcik7DQoJfQ0KCXRoaXMuaGlkZVNo b3dDb3ZlcmVkKCk7DQp9Ow0KDQovKioNCiAqICBIaWRlcyB0aGUgY2FsZW5kYXIu ICBBbHNvIHJlbW92ZXMgYW55ICJoaWxpdGUiIGZyb20gdGhlIGNsYXNzIG9mIGFu eSBURA0KICogIGVsZW1lbnQuDQogKi8NCkNhbGVuZGFyLnByb3RvdHlwZS5oaWRl ID0gZnVuY3Rpb24gKCkgew0KCWlmICh0aGlzLmlzUG9wdXApIHsNCgkJQ2FsZW5k YXIucmVtb3ZlRXZlbnQoZG9jdW1lbnQsICJrZXlkb3duIiwgQ2FsZW5kYXIuX2tl eUV2ZW50KTsNCgkJQ2FsZW5kYXIucmVtb3ZlRXZlbnQoZG9jdW1lbnQsICJrZXlw cmVzcyIsIENhbGVuZGFyLl9rZXlFdmVudCk7DQoJCUNhbGVuZGFyLnJlbW92ZUV2 ZW50KGRvY3VtZW50LCAibW91c2Vkb3duIiwgQ2FsZW5kYXIuX2NoZWNrQ2FsZW5k YXIpOw0KCX0NCgl0aGlzLmVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICJub25lIjsN Cgl0aGlzLmhpZGRlbiA9IHRydWU7DQoJdGhpcy5oaWRlU2hvd0NvdmVyZWQoKTsN Cn07DQoNCi8qKg0KICogIFNob3dzIHRoZSBjYWxlbmRhciBhdCBhIGdpdmVuIGFi c29sdXRlIHBvc2l0aW9uIChiZXdhcmUgdGhhdCwgZGVwZW5kaW5nIG9uDQogKiAg dGhlIGNhbGVuZGFyIGVsZW1lbnQgc3R5bGUgLS0gcG9zaXRpb24gcHJvcGVydHkg LS0gdGhpcyBtaWdodCBiZSByZWxhdGl2ZQ0KICogIHRvIHRoZSBwYXJlbnQncyBj b250YWluaW5nIHJlY3RhbmdsZSkuDQogKi8NCkNhbGVuZGFyLnByb3RvdHlwZS5z aG93QXQgPSBmdW5jdGlvbiAoeCwgeSkgew0KCXZhciBzID0gdGhpcy5lbGVtZW50 LnN0eWxlOw0KCXMubGVmdCA9IHggKyAicHgiOw0KCXMudG9wID0geSArICJweCI7 DQoJdGhpcy5zaG93KCk7DQp9Ow0KDQovKiogU2hvd3MgdGhlIGNhbGVuZGFyIG5l YXIgYSBnaXZlbiBlbGVtZW50LiAqLw0KQ2FsZW5kYXIucHJvdG90eXBlLnNob3dB dEVsZW1lbnQgPSBmdW5jdGlvbiAoZWwsIG9wdHMpIHsNCgl2YXIgc2VsZiA9IHRo aXM7DQoJdmFyIHAgPSBDYWxlbmRhci5nZXRBYnNvbHV0ZVBvcyhlbCk7DQoJaWYg KCFvcHRzIHx8IHR5cGVvZiBvcHRzICE9ICJzdHJpbmciKSB7DQoJCXRoaXMuc2hv d0F0KHAueCwgcC55ICsgZWwub2Zmc2V0SGVpZ2h0KTsNCgkJcmV0dXJuIHRydWU7 DQoJfQ0KCWZ1bmN0aW9uIGZpeFBvc2l0aW9uKGJveCkgew0KCQlpZiAoYm94Lngg PCAwKQ0KCQkJYm94LnggPSAwOw0KCQlpZiAoYm94LnkgPCAwKQ0KCQkJYm94Lnkg PSAwOw0KCQl2YXIgY3AgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsN CgkJdmFyIHMgPSBjcC5zdHlsZTsNCgkJcy5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7 DQoJCXMucmlnaHQgPSBzLmJvdHRvbSA9IHMud2lkdGggPSBzLmhlaWdodCA9ICIw cHgiOw0KCQlkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNwKTsNCgkJdmFyIGJy ID0gQ2FsZW5kYXIuZ2V0QWJzb2x1dGVQb3MoY3ApOw0KCQlkb2N1bWVudC5ib2R5 LnJlbW92ZUNoaWxkKGNwKTsNCgkJaWYgKENhbGVuZGFyLmlzX2llKSB7DQoJCQli ci55ICs9IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wOw0KCQkJYnIueCArPSBkb2N1 bWVudC5ib2R5LnNjcm9sbExlZnQ7DQoJCX0gZWxzZSB7DQoJCQlici55ICs9IHdp bmRvdy5zY3JvbGxZOw0KCQkJYnIueCArPSB3aW5kb3cuc2Nyb2xsWDsNCgkJfQ0K CQl2YXIgdG1wID0gYm94LnggKyBib3gud2lkdGggLSBici54Ow0KCQlpZiAodG1w ID4gMCkgYm94LnggLT0gdG1wOw0KCQl0bXAgPSBib3gueSArIGJveC5oZWlnaHQg LSBici55Ow0KCQlpZiAodG1wID4gMCkgYm94LnkgLT0gdG1wOw0KCX07DQoJdGhp cy5lbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOw0KCUNhbGVuZGFyLmNv bnRpbnVhdGlvbl9mb3JfdGhlX2Z1Y2tpbmdfa2h0bWxfYnJvd3NlciA9IGZ1bmN0 aW9uKCkgew0KCQl2YXIgdyA9IHNlbGYuZWxlbWVudC5vZmZzZXRXaWR0aDsNCgkJ dmFyIGggPSBzZWxmLmVsZW1lbnQub2Zmc2V0SGVpZ2h0Ow0KCQlzZWxmLmVsZW1l bnQuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCgkJdmFyIHZhbGlnbiA9IG9wdHMu c3Vic3RyKDAsIDEpOw0KCQl2YXIgaGFsaWduID0gImwiOw0KCQlpZiAob3B0cy5s ZW5ndGggPiAxKSB7DQoJCQloYWxpZ24gPSBvcHRzLnN1YnN0cigxLCAxKTsNCgkJ fQ0KCQkvLyB2ZXJ0aWNhbCBhbGlnbm1lbnQNCgkJc3dpdGNoICh2YWxpZ24pIHsN CgkJICAgIGNhc2UgIlQiOiBwLnkgLT0gaDsgYnJlYWs7DQoJCSAgICBjYXNlICJC IjogcC55ICs9IGVsLm9mZnNldEhlaWdodDsgYnJlYWs7DQoJCSAgICBjYXNlICJD IjogcC55ICs9IChlbC5vZmZzZXRIZWlnaHQgLSBoKSAvIDI7IGJyZWFrOw0KCQkg ICAgY2FzZSAidCI6IHAueSArPSBlbC5vZmZzZXRIZWlnaHQgLSBoOyBicmVhazsN CgkJICAgIGNhc2UgImIiOiBicmVhazsgLy8gYWxyZWFkeSB0aGVyZQ0KCQl9DQoJ CS8vIGhvcml6b250YWwgYWxpZ25tZW50DQoJCXN3aXRjaCAoaGFsaWduKSB7DQoJ CSAgICBjYXNlICJMIjogcC54IC09IHc7IGJyZWFrOw0KCQkgICAgY2FzZSAiUiI6 IHAueCArPSBlbC5vZmZzZXRXaWR0aDsgYnJlYWs7DQoJCSAgICBjYXNlICJDIjog cC54ICs9IChlbC5vZmZzZXRXaWR0aCAtIHcpIC8gMjsgYnJlYWs7DQoJCSAgICBj YXNlICJsIjogcC54ICs9IGVsLm9mZnNldFdpZHRoIC0gdzsgYnJlYWs7DQoJCSAg ICBjYXNlICJyIjogYnJlYWs7IC8vIGFscmVhZHkgdGhlcmUNCgkJfQ0KCQlwLndp ZHRoID0gdzsNCgkJcC5oZWlnaHQgPSBoICsgNDA7DQoJCXNlbGYubW9udGhzQ29t Ym8uc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCgkJZml4UG9zaXRpb24ocCk7DQoJ CXNlbGYuc2hvd0F0KHAueCwgcC55KTsNCgl9Ow0KCWlmIChDYWxlbmRhci5pc19r aHRtbCkNCgkJc2V0VGltZW91dCgiQ2FsZW5kYXIuY29udGludWF0aW9uX2Zvcl90 aGVfZnVja2luZ19raHRtbF9icm93c2VyKCkiLCAxMCk7DQoJZWxzZQ0KCQlDYWxl bmRhci5jb250aW51YXRpb25fZm9yX3RoZV9mdWNraW5nX2todG1sX2Jyb3dzZXIo KTsNCn07DQoNCi8qKiBDdXN0b21pemVzIHRoZSBkYXRlIGZvcm1hdC4gKi8NCkNh bGVuZGFyLnByb3RvdHlwZS5zZXREYXRlRm9ybWF0ID0gZnVuY3Rpb24gKHN0cikg ew0KCXRoaXMuZGF0ZUZvcm1hdCA9IHN0cjsNCn07DQoNCi8qKiBDdXN0b21pemVz IHRoZSB0b29sdGlwIGRhdGUgZm9ybWF0LiAqLw0KQ2FsZW5kYXIucHJvdG90eXBl LnNldFR0RGF0ZUZvcm1hdCA9IGZ1bmN0aW9uIChzdHIpIHsNCgl0aGlzLnR0RGF0 ZUZvcm1hdCA9IHN0cjsNCn07DQoNCi8qKg0KICogIFRyaWVzIHRvIGlkZW50aWZ5 IHRoZSBkYXRlIHJlcHJlc2VudGVkIGluIGEgc3RyaW5nLiAgSWYgc3VjY2Vzc2Z1 bCBpdCBhbHNvDQogKiAgY2FsbHMgdGhpcy5zZXREYXRlIHdoaWNoIG1vdmVzIHRo ZSBjYWxlbmRhciB0byB0aGUgZ2l2ZW4gZGF0ZS4NCiAqLw0KQ2FsZW5kYXIucHJv dG90eXBlLnBhcnNlRGF0ZSA9IGZ1bmN0aW9uKHN0ciwgZm10KSB7DQoJaWYgKCFm bXQpDQoJCWZtdCA9IHRoaXMuZGF0ZUZvcm1hdDsNCgl0aGlzLnNldERhdGUoRGF0 ZS5wYXJzZURhdGUoc3RyLCBmbXQpKTsNCn07DQoNCkNhbGVuZGFyLnByb3RvdHlw ZS5oaWRlU2hvd0NvdmVyZWQgPSBmdW5jdGlvbiAoKSB7DQoJaWYgKCFDYWxlbmRh ci5pc19pZSAmJiAhQ2FsZW5kYXIuaXNfb3BlcmEpDQoJCXJldHVybjsNCglmdW5j dGlvbiBnZXRWaXNpYihvYmopew0KCQl2YXIgdmFsdWUgPSBvYmouc3R5bGUudmlz aWJpbGl0eTsNCgkJaWYgKCF2YWx1ZSkgew0KCQkJaWYgKGRvY3VtZW50LmRlZmF1 bHRWaWV3ICYmIHR5cGVvZiAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0 ZWRTdHlsZSkgPT0gImZ1bmN0aW9uIikgeyAvLyBHZWNrbywgVzNDDQoJCQkJaWYg KCFDYWxlbmRhci5pc19raHRtbCkNCgkJCQkJdmFsdWUgPSBkb2N1bWVudC5kZWZh dWx0Vmlldy4NCgkJCQkJCWdldENvbXB1dGVkU3R5bGUob2JqLCAiIikuZ2V0UHJv cGVydHlWYWx1ZSgidmlzaWJpbGl0eSIpOw0KCQkJCWVsc2UNCgkJCQkJdmFsdWUg PSAnJzsNCgkJCX0gZWxzZSBpZiAob2JqLmN1cnJlbnRTdHlsZSkgeyAvLyBJRQ0K CQkJCXZhbHVlID0gb2JqLmN1cnJlbnRTdHlsZS52aXNpYmlsaXR5Ow0KCQkJfSBl bHNlDQoJCQkJdmFsdWUgPSAnJzsNCgkJfQ0KCQlyZXR1cm4gdmFsdWU7DQoJfTsN Cg0KCXZhciB0YWdzID0gbmV3IEFycmF5KCJhcHBsZXQiLCAiaWZyYW1lIiwgInNl bGVjdCIpOw0KCXZhciBlbCA9IHRoaXMuZWxlbWVudDsNCg0KCXZhciBwID0gQ2Fs ZW5kYXIuZ2V0QWJzb2x1dGVQb3MoZWwpOw0KCXZhciBFWDEgPSBwLng7DQoJdmFy IEVYMiA9IGVsLm9mZnNldFdpZHRoICsgRVgxOw0KCXZhciBFWTEgPSBwLnk7DQoJ dmFyIEVZMiA9IGVsLm9mZnNldEhlaWdodCArIEVZMTsNCg0KCWZvciAodmFyIGsg PSB0YWdzLmxlbmd0aDsgayA+IDA7ICkgew0KCQl2YXIgYXIgPSBkb2N1bWVudC5n ZXRFbGVtZW50c0J5VGFnTmFtZSh0YWdzWy0ta10pOw0KCQl2YXIgY2MgPSBudWxs Ow0KDQoJCWZvciAodmFyIGkgPSBhci5sZW5ndGg7IGkgPiAwOykgew0KCQkJY2Mg PSBhclstLWldOw0KDQoJCQlwID0gQ2FsZW5kYXIuZ2V0QWJzb2x1dGVQb3MoY2Mp Ow0KCQkJdmFyIENYMSA9IHAueDsNCgkJCXZhciBDWDIgPSBjYy5vZmZzZXRXaWR0 aCArIENYMTsNCgkJCXZhciBDWTEgPSBwLnk7DQoJCQl2YXIgQ1kyID0gY2Mub2Zm c2V0SGVpZ2h0ICsgQ1kxOw0KDQoJCQlpZiAodGhpcy5oaWRkZW4gfHwgKENYMSA+ IEVYMikgfHwgKENYMiA8IEVYMSkgfHwgKENZMSA+IEVZMikgfHwgKENZMiA8IEVZ MSkpIHsNCgkJCQlpZiAoIWNjLl9fbXNoX3NhdmVfdmlzaWJpbGl0eSkgew0KCQkJ CQljYy5fX21zaF9zYXZlX3Zpc2liaWxpdHkgPSBnZXRWaXNpYihjYyk7DQoJCQkJ fQ0KCQkJCWNjLnN0eWxlLnZpc2liaWxpdHkgPSBjYy5fX21zaF9zYXZlX3Zpc2li aWxpdHk7DQoJCQl9IGVsc2Ugew0KCQkJCWlmICghY2MuX19tc2hfc2F2ZV92aXNp YmlsaXR5KSB7DQoJCQkJCWNjLl9fbXNoX3NhdmVfdmlzaWJpbGl0eSA9IGdldFZp c2liKGNjKTsNCgkJCQl9DQoJCQkJY2Muc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRk ZW4iOw0KCQkJfQ0KCQl9DQoJfQ0KfTsNCg0KLyoqIEludGVybmFsIGZ1bmN0aW9u OyBpdCBkaXNwbGF5cyB0aGUgYmFyIHdpdGggdGhlIG5hbWVzIG9mIHRoZSB3ZWVr ZGF5LiAqLw0KQ2FsZW5kYXIucHJvdG90eXBlLl9kaXNwbGF5V2Vla2RheXMgPSBm dW5jdGlvbiAoKSB7DQoJdmFyIGZkb3cgPSB0aGlzLmZpcnN0RGF5T2ZXZWVrOw0K CXZhciBjZWxsID0gdGhpcy5maXJzdGRheW5hbWU7DQoJdmFyIHdlZWtlbmQgPSBD YWxlbmRhci5fVFRbIldFRUtFTkQiXTsNCglmb3IgKHZhciBpID0gMDsgaSA8IDc7 ICsraSkgew0KCQljZWxsLmNsYXNzTmFtZSA9ICJkYXkgbmFtZSI7DQoJCXZhciBy ZWFsZGF5ID0gKGkgKyBmZG93KSAlIDc7DQoJCWlmIChpKSB7DQoJCQljZWxsLnR0 aXAgPSBDYWxlbmRhci5fVFRbIkRBWV9GSVJTVCJdLnJlcGxhY2UoIiVzIiwgQ2Fs ZW5kYXIuX0ROW3JlYWxkYXldKTsNCgkJCWNlbGwubmF2dHlwZSA9IDEwMDsNCgkJ CWNlbGwuY2FsZW5kYXIgPSB0aGlzOw0KCQkJY2VsbC5mZG93ID0gcmVhbGRheTsN CgkJCUNhbGVuZGFyLl9hZGRfZXZzKGNlbGwpOw0KCQl9DQoJCWlmICh3ZWVrZW5k LmluZGV4T2YocmVhbGRheS50b1N0cmluZygpKSAhPSAtMSkgew0KCQkJQ2FsZW5k YXIuYWRkQ2xhc3MoY2VsbCwgIndlZWtlbmQiKTsNCgkJfQ0KCQljZWxsLmlubmVy SFRNTCA9IENhbGVuZGFyLl9TRE5bKGkgKyBmZG93KSAlIDddOw0KCQljZWxsID0g Y2VsbC5uZXh0U2libGluZzsNCgl9DQp9Ow0KDQovKiogSW50ZXJuYWwgZnVuY3Rp b24uICBIaWRlcyBhbGwgY29tYm8gYm94ZXMgdGhhdCBtaWdodCBiZSBkaXNwbGF5 ZWQuICovDQpDYWxlbmRhci5wcm90b3R5cGUuX2hpZGVDb21ib3MgPSBmdW5jdGlv biAoKSB7DQoJdGhpcy5tb250aHNDb21iby5zdHlsZS5kaXNwbGF5ID0gIm5vbmUi Ow0KCXRoaXMueWVhcnNDb21iby5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KfTsN Cg0KLyoqIEludGVybmFsIGZ1bmN0aW9uLiAgU3RhcnRzIGRyYWdnaW5nIHRoZSBl bGVtZW50LiAqLw0KQ2FsZW5kYXIucHJvdG90eXBlLl9kcmFnU3RhcnQgPSBmdW5j dGlvbiAoZXYpIHsNCglpZiAodGhpcy5kcmFnZ2luZykgew0KCQlyZXR1cm47DQoJ fQ0KCXRoaXMuZHJhZ2dpbmcgPSB0cnVlOw0KCXZhciBwb3NYOw0KCXZhciBwb3NZ Ow0KCWlmIChDYWxlbmRhci5pc19pZSkgew0KCQlwb3NZID0gd2luZG93LmV2ZW50 LmNsaWVudFkgKyBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcDsNCgkJcG9zWCA9IHdp bmRvdy5ldmVudC5jbGllbnRYICsgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0Ow0K CX0gZWxzZSB7DQoJCXBvc1kgPSBldi5jbGllbnRZICsgd2luZG93LnNjcm9sbFk7 DQoJCXBvc1ggPSBldi5jbGllbnRYICsgd2luZG93LnNjcm9sbFg7DQoJfQ0KCXZh ciBzdCA9IHRoaXMuZWxlbWVudC5zdHlsZTsNCgl0aGlzLnhPZmZzID0gcG9zWCAt IHBhcnNlSW50KHN0LmxlZnQpOw0KCXRoaXMueU9mZnMgPSBwb3NZIC0gcGFyc2VJ bnQoc3QudG9wKTsNCgl3aXRoIChDYWxlbmRhcikgew0KCQlhZGRFdmVudChkb2N1 bWVudCwgIm1vdXNlbW92ZSIsIGNhbERyYWdJdCk7DQoJCWFkZEV2ZW50KGRvY3Vt ZW50LCAibW91c2V1cCIsIGNhbERyYWdFbmQpOw0KCX0NCn07DQoNCi8vIEJFR0lO OiBEQVRFIE9CSkVDVCBQQVRDSEVTDQoNCi8qKiBBZGRzIHRoZSBudW1iZXIgb2Yg ZGF5cyBhcnJheSB0byB0aGUgRGF0ZSBvYmplY3QuICovDQpEYXRlLl9NRCA9IG5l dyBBcnJheSgzMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMSk7DQoN Ci8qKiBDb25zdGFudHMgdXNlZCBmb3IgdGltZSBjb21wdXRhdGlvbnMgKi8NCkRh dGUuU0VDT05EID0gMTAwMCAvKiBtaWxsaXNlY29uZHMgKi87DQpEYXRlLk1JTlVU RSA9IDYwICogRGF0ZS5TRUNPTkQ7DQpEYXRlLkhPVVIgICA9IDYwICogRGF0ZS5N SU5VVEU7DQpEYXRlLkRBWSAgICA9IDI0ICogRGF0ZS5IT1VSOw0KRGF0ZS5XRUVL ICAgPSAgNyAqIERhdGUuREFZOw0KDQpEYXRlLnBhcnNlRGF0ZSA9IGZ1bmN0aW9u KHN0ciwgZm10KSB7DQoJdmFyIHRvZGF5ID0gbmV3IERhdGUoKTsNCgl2YXIgeSA9 IDA7DQoJdmFyIG0gPSAtMTsNCgl2YXIgZCA9IDA7DQoJdmFyIGEgPSBzdHIuc3Bs aXQoL1xXKy8pOw0KCXZhciBiID0gZm10Lm1hdGNoKC8lLi9nKTsNCgl2YXIgaSA9 IDAsIGogPSAwOw0KCXZhciBociA9IDA7DQoJdmFyIG1pbiA9IDA7DQoJZm9yIChp ID0gMDsgaSA8IGEubGVuZ3RoOyArK2kpIHsNCgkJaWYgKCFhW2ldKQ0KCQkJY29u dGludWU7DQoJCXN3aXRjaCAoYltpXSkgew0KCQkgICAgY2FzZSAiJWQiOg0KCQkg ICAgY2FzZSAiJWUiOg0KCQkJZCA9IHBhcnNlSW50KGFbaV0sIDEwKTsNCgkJCWJy ZWFrOw0KDQoJCSAgICBjYXNlICIlbSI6DQoJCQltID0gcGFyc2VJbnQoYVtpXSwg MTApIC0gMTsNCgkJCWJyZWFrOw0KDQoJCSAgICBjYXNlICIlWSI6DQoJCSAgICBj YXNlICIleSI6DQoJCQl5ID0gcGFyc2VJbnQoYVtpXSwgMTApOw0KCQkJKHkgPCAx MDApICYmICh5ICs9ICh5ID4gMjkpID8gMTkwMCA6IDIwMDApOw0KCQkJYnJlYWs7 DQoNCgkJICAgIGNhc2UgIiViIjoNCgkJICAgIGNhc2UgIiVCIjoNCgkJCWZvciAo aiA9IDA7IGogPCAxMjsgKytqKSB7DQoJCQkJaWYgKENhbGVuZGFyLl9NTltqXS5z dWJzdHIoMCwgYVtpXS5sZW5ndGgpLnRvTG93ZXJDYXNlKCkgPT0gYVtpXS50b0xv d2VyQ2FzZSgpKSB7IG0gPSBqOyBicmVhazsgfQ0KCQkJfQ0KCQkJYnJlYWs7DQoN CgkJICAgIGNhc2UgIiVIIjoNCgkJICAgIGNhc2UgIiVJIjoNCgkJICAgIGNhc2Ug IiVrIjoNCgkJICAgIGNhc2UgIiVsIjoNCgkJCWhyID0gcGFyc2VJbnQoYVtpXSwg MTApOw0KCQkJYnJlYWs7DQoNCgkJICAgIGNhc2UgIiVQIjoNCgkJICAgIGNhc2Ug IiVwIjoNCgkJCWlmICgvcG0vaS50ZXN0KGFbaV0pICYmIGhyIDwgMTIpDQoJCQkJ aHIgKz0gMTI7DQoJCQllbHNlIGlmICgvYW0vaS50ZXN0KGFbaV0pICYmIGhyID49 IDEyKQ0KCQkJCWhyIC09IDEyOw0KCQkJYnJlYWs7DQoNCgkJICAgIGNhc2UgIiVN IjoNCgkJCW1pbiA9IHBhcnNlSW50KGFbaV0sIDEwKTsNCgkJCWJyZWFrOw0KCQl9 DQoJfQ0KCWlmIChpc05hTih5KSkgeSA9IHRvZGF5LmdldEZ1bGxZZWFyKCk7DQoJ aWYgKGlzTmFOKG0pKSBtID0gdG9kYXkuZ2V0TW9udGgoKTsNCglpZiAoaXNOYU4o ZCkpIGQgPSB0b2RheS5nZXREYXRlKCk7DQoJaWYgKGlzTmFOKGhyKSkgaHIgPSB0 b2RheS5nZXRIb3VycygpOw0KCWlmIChpc05hTihtaW4pKSBtaW4gPSB0b2RheS5n ZXRNaW51dGVzKCk7DQoJaWYgKHkgIT0gMCAmJiBtICE9IC0xICYmIGQgIT0gMCkN CgkJcmV0dXJuIG5ldyBEYXRlKHksIG0sIGQsIGhyLCBtaW4sIDApOw0KCXkgPSAw OyBtID0gLTE7IGQgPSAwOw0KCWZvciAoaSA9IDA7IGkgPCBhLmxlbmd0aDsgKytp KSB7DQoJCWlmIChhW2ldLnNlYXJjaCgvW2EtekEtWl0rLykgIT0gLTEpIHsNCgkJ CXZhciB0ID0gLTE7DQoJCQlmb3IgKGogPSAwOyBqIDwgMTI7ICsraikgew0KCQkJ CWlmIChDYWxlbmRhci5fTU5bal0uc3Vic3RyKDAsIGFbaV0ubGVuZ3RoKS50b0xv d2VyQ2FzZSgpID09IGFbaV0udG9Mb3dlckNhc2UoKSkgeyB0ID0gajsgYnJlYWs7 IH0NCgkJCX0NCgkJCWlmICh0ICE9IC0xKSB7DQoJCQkJaWYgKG0gIT0gLTEpIHsN CgkJCQkJZCA9IG0rMTsNCgkJCQl9DQoJCQkJbSA9IHQ7DQoJCQl9DQoJCX0gZWxz ZSBpZiAocGFyc2VJbnQoYVtpXSwgMTApIDw9IDEyICYmIG0gPT0gLTEpIHsNCgkJ CW0gPSBhW2ldLTE7DQoJCX0gZWxzZSBpZiAocGFyc2VJbnQoYVtpXSwgMTApID4g MzEgJiYgeSA9PSAwKSB7DQoJCQl5ID0gcGFyc2VJbnQoYVtpXSwgMTApOw0KCQkJ KHkgPCAxMDApICYmICh5ICs9ICh5ID4gMjkpID8gMTkwMCA6IDIwMDApOw0KCQl9 IGVsc2UgaWYgKGQgPT0gMCkgew0KCQkJZCA9IGFbaV07DQoJCX0NCgl9DQoJaWYg KHkgPT0gMCkNCgkJeSA9IHRvZGF5LmdldEZ1bGxZZWFyKCk7DQoJaWYgKG0gIT0g LTEgJiYgZCAhPSAwKQ0KCQlyZXR1cm4gbmV3IERhdGUoeSwgbSwgZCwgaHIsIG1p biwgMCk7DQoJcmV0dXJuIHRvZGF5Ow0KfTsNCg0KLyoqIFJldHVybnMgdGhlIG51 bWJlciBvZiBkYXlzIGluIHRoZSBjdXJyZW50IG1vbnRoICovDQpEYXRlLnByb3Rv dHlwZS5nZXRNb250aERheXMgPSBmdW5jdGlvbihtb250aCkgew0KCXZhciB5ZWFy ID0gdGhpcy5nZXRGdWxsWWVhcigpOw0KCWlmICh0eXBlb2YgbW9udGggPT0gInVu ZGVmaW5lZCIpIHsNCgkJbW9udGggPSB0aGlzLmdldE1vbnRoKCk7DQoJfQ0KCWlm ICgoKDAgPT0gKHllYXIlNCkpICYmICggKDAgIT0gKHllYXIlMTAwKSkgfHwgKDAg PT0gKHllYXIlNDAwKSkpKSAmJiBtb250aCA9PSAxKSB7DQoJCXJldHVybiAyOTsN Cgl9IGVsc2Ugew0KCQlyZXR1cm4gRGF0ZS5fTURbbW9udGhdOw0KCX0NCn07DQoN Ci8qKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF5IGluIHRoZSB5ZWFyLiAqLw0K RGF0ZS5wcm90b3R5cGUuZ2V0RGF5T2ZZZWFyID0gZnVuY3Rpb24oKSB7DQoJdmFy IG5vdyA9IG5ldyBEYXRlKHRoaXMuZ2V0RnVsbFllYXIoKSwgdGhpcy5nZXRNb250 aCgpLCB0aGlzLmdldERhdGUoKSwgMCwgMCwgMCk7DQoJdmFyIHRoZW4gPSBuZXcg RGF0ZSh0aGlzLmdldEZ1bGxZZWFyKCksIDAsIDAsIDAsIDAsIDApOw0KCXZhciB0 aW1lID0gbm93IC0gdGhlbjsNCglyZXR1cm4gTWF0aC5mbG9vcih0aW1lIC8gRGF0 ZS5EQVkpOw0KfTsNCg0KLyoqIFJldHVybnMgdGhlIG51bWJlciBvZiB0aGUgd2Vl ayBpbiB5ZWFyLCBhcyBkZWZpbmVkIGluIElTTyA4NjAxLiAqLw0KRGF0ZS5wcm90 b3R5cGUuZ2V0V2Vla051bWJlciA9IGZ1bmN0aW9uKCkgew0KCXZhciBkID0gbmV3 IERhdGUodGhpcy5nZXRGdWxsWWVhcigpLCB0aGlzLmdldE1vbnRoKCksIHRoaXMu Z2V0RGF0ZSgpLCAwLCAwLCAwKTsNCgl2YXIgRG9XID0gZC5nZXREYXkoKTsNCglk LnNldERhdGUoZC5nZXREYXRlKCkgLSAoRG9XICsgNikgJSA3ICsgMyk7IC8vIE5l YXJlc3QgVGh1DQoJdmFyIG1zID0gZC52YWx1ZU9mKCk7IC8vIEdNVA0KCWQuc2V0 TW9udGgoMCk7DQoJZC5zZXREYXRlKDQpOyAvLyBUaHUgaW4gV2VlayAxDQoJcmV0 dXJuIE1hdGgucm91bmQoKG1zIC0gZC52YWx1ZU9mKCkpIC8gKDcgKiA4NjRlNSkp ICsgMTsNCn07DQoNCi8qKiBDaGVja3MgZGF0ZSBhbmQgdGltZSBlcXVhbGl0eSAq Lw0KRGF0ZS5wcm90b3R5cGUuZXF1YWxzVG8gPSBmdW5jdGlvbihkYXRlKSB7DQoJ cmV0dXJuICgodGhpcy5nZXRGdWxsWWVhcigpID09IGRhdGUuZ2V0RnVsbFllYXIo KSkgJiYNCgkJKHRoaXMuZ2V0TW9udGgoKSA9PSBkYXRlLmdldE1vbnRoKCkpICYm DQoJCSh0aGlzLmdldERhdGUoKSA9PSBkYXRlLmdldERhdGUoKSkgJiYNCgkJKHRo aXMuZ2V0SG91cnMoKSA9PSBkYXRlLmdldEhvdXJzKCkpICYmDQoJCSh0aGlzLmdl dE1pbnV0ZXMoKSA9PSBkYXRlLmdldE1pbnV0ZXMoKSkpOw0KfTsNCg0KLyoqIFNl dCBvbmx5IHRoZSB5ZWFyLCBtb250aCwgZGF0ZSBwYXJ0cyAoa2VlcCBleGlzdGlu ZyB0aW1lKSAqLw0KRGF0ZS5wcm90b3R5cGUuc2V0RGF0ZU9ubHkgPSBmdW5jdGlv bihkYXRlKSB7DQoJdmFyIHRtcCA9IG5ldyBEYXRlKGRhdGUpOw0KCXRoaXMuc2V0 RGF0ZSgxKTsNCgl0aGlzLnNldEZ1bGxZZWFyKHRtcC5nZXRGdWxsWWVhcigpKTsN Cgl0aGlzLnNldE1vbnRoKHRtcC5nZXRNb250aCgpKTsNCgl0aGlzLnNldERhdGUo dG1wLmdldERhdGUoKSk7DQp9Ow0KDQovKiogUHJpbnRzIHRoZSBkYXRlIGluIGEg c3RyaW5nIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gZm9ybWF0LiAqLw0KRGF0ZS5w cm90b3R5cGUucHJpbnQgPSBmdW5jdGlvbiAoc3RyKSB7DQoJdmFyIG0gPSB0aGlz LmdldE1vbnRoKCk7DQoJdmFyIGQgPSB0aGlzLmdldERhdGUoKTsNCgl2YXIgeSA9 IHRoaXMuZ2V0RnVsbFllYXIoKTsNCgl2YXIgd24gPSB0aGlzLmdldFdlZWtOdW1i ZXIoKTsNCgl2YXIgdyA9IHRoaXMuZ2V0RGF5KCk7DQoJdmFyIHMgPSB7fTsNCgl2 YXIgaHIgPSB0aGlzLmdldEhvdXJzKCk7DQoJdmFyIHBtID0gKGhyID49IDEyKTsN Cgl2YXIgaXIgPSAocG0pID8gKGhyIC0gMTIpIDogaHI7DQoJdmFyIGR5ID0gdGhp cy5nZXREYXlPZlllYXIoKTsNCglpZiAoaXIgPT0gMCkNCgkJaXIgPSAxMjsNCgl2 YXIgbWluID0gdGhpcy5nZXRNaW51dGVzKCk7DQoJdmFyIHNlYyA9IHRoaXMuZ2V0 U2Vjb25kcygpOw0KCXNbIiVhIl0gPSBDYWxlbmRhci5fU0ROW3ddOyAvLyBhYmJy ZXZpYXRlZCB3ZWVrZGF5IG5hbWUgW0ZJWE1FOiBJMThOXQ0KCXNbIiVBIl0gPSBD YWxlbmRhci5fRE5bd107IC8vIGZ1bGwgd2Vla2RheSBuYW1lDQoJc1siJWIiXSA9 IENhbGVuZGFyLl9TTU5bbV07IC8vIGFiYnJldmlhdGVkIG1vbnRoIG5hbWUgW0ZJ WE1FOiBJMThOXQ0KCXNbIiVCIl0gPSBDYWxlbmRhci5fTU5bbV07IC8vIGZ1bGwg bW9udGggbmFtZQ0KCS8vIEZJWE1FOiAlYyA6IHByZWZlcnJlZCBkYXRlIGFuZCB0 aW1lIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgY3VycmVudCBsb2NhbGUNCglzWyIl QyJdID0gMSArIE1hdGguZmxvb3IoeSAvIDEwMCk7IC8vIHRoZSBjZW50dXJ5IG51 bWJlcg0KCXNbIiVkIl0gPSAoZCA8IDEwKSA/ICgiMCIgKyBkKSA6IGQ7IC8vIHRo ZSBkYXkgb2YgdGhlIG1vbnRoIChyYW5nZSAwMSB0byAzMSkNCglzWyIlZSJdID0g ZDsgLy8gdGhlIGRheSBvZiB0aGUgbW9udGggKHJhbmdlIDEgdG8gMzEpDQoJLy8g RklYTUU6ICVEIDogYW1lcmljYW4gZGF0ZSBzdHlsZTogJW0vJWQvJXkNCgkvLyBG SVhNRTogJUUsICVGLCAlRywgJWcsICVoIChtYW4gc3RyZnRpbWUpDQoJc1siJUgi XSA9IChociA8IDEwKSA/ICgiMCIgKyBocikgOiBocjsgLy8gaG91ciwgcmFuZ2Ug MDAgdG8gMjMgKDI0aCBmb3JtYXQpDQoJc1siJUkiXSA9IChpciA8IDEwKSA/ICgi MCIgKyBpcikgOiBpcjsgLy8gaG91ciwgcmFuZ2UgMDEgdG8gMTIgKDEyaCBmb3Jt YXQpDQoJc1siJWoiXSA9IChkeSA8IDEwMCkgPyAoKGR5IDwgMTApID8gKCIwMCIg KyBkeSkgOiAoIjAiICsgZHkpKSA6IGR5OyAvLyBkYXkgb2YgdGhlIHllYXIgKHJh bmdlIDAwMSB0byAzNjYpDQoJc1siJWsiXSA9IGhyOwkJLy8gaG91ciwgcmFuZ2Ug MCB0byAyMyAoMjRoIGZvcm1hdCkNCglzWyIlbCJdID0gaXI7CQkvLyBob3VyLCBy YW5nZSAxIHRvIDEyICgxMmggZm9ybWF0KQ0KCXNbIiVtIl0gPSAobSA8IDkpID8g KCIwIiArICgxK20pKSA6ICgxK20pOyAvLyBtb250aCwgcmFuZ2UgMDEgdG8gMTIN CglzWyIlTSJdID0gKG1pbiA8IDEwKSA/ICgiMCIgKyBtaW4pIDogbWluOyAvLyBt aW51dGUsIHJhbmdlIDAwIHRvIDU5DQoJc1siJW4iXSA9ICJcbiI7CQkvLyBhIG5l d2xpbmUgY2hhcmFjdGVyDQoJc1siJXAiXSA9IHBtID8gIlBNIiA6ICJBTSI7DQoJ c1siJVAiXSA9IHBtID8gInBtIiA6ICJhbSI7DQoJLy8gRklYTUU6ICVyIDogdGhl IHRpbWUgaW4gYW0vcG0gbm90YXRpb24gJUk6JU06JVMgJXANCgkvLyBGSVhNRTog JVIgOiB0aGUgdGltZSBpbiAyNC1ob3VyIG5vdGF0aW9uICVIOiVNDQoJc1siJXMi XSA9IE1hdGguZmxvb3IodGhpcy5nZXRUaW1lKCkgLyAxMDAwKTsNCglzWyIlUyJd ID0gKHNlYyA8IDEwKSA/ICgiMCIgKyBzZWMpIDogc2VjOyAvLyBzZWNvbmRzLCBy YW5nZSAwMCB0byA1OQ0KCXNbIiV0Il0gPSAiXHQiOwkJLy8gYSB0YWIgY2hhcmFj dGVyDQoJLy8gRklYTUU6ICVUIDogdGhlIHRpbWUgaW4gMjQtaG91ciBub3RhdGlv biAoJUg6JU06JVMpDQoJc1siJVUiXSA9IHNbIiVXIl0gPSBzWyIlViJdID0gKHdu IDwgMTApID8gKCIwIiArIHduKSA6IHduOw0KCXNbIiV1Il0gPSB3ICsgMTsJLy8g dGhlIGRheSBvZiB0aGUgd2VlayAocmFuZ2UgMSB0byA3LCAxID0gTU9OKQ0KCXNb IiV3Il0gPSB3OwkJLy8gdGhlIGRheSBvZiB0aGUgd2VlayAocmFuZ2UgMCB0byA2 LCAwID0gU1VOKQ0KCS8vIEZJWE1FOiAleCA6IHByZWZlcnJlZCBkYXRlIHJlcHJl c2VudGF0aW9uIGZvciB0aGUgY3VycmVudCBsb2NhbGUgd2l0aG91dCB0aGUgdGlt ZQ0KCS8vIEZJWE1FOiAlWCA6IHByZWZlcnJlZCB0aW1lIHJlcHJlc2VudGF0aW9u IGZvciB0aGUgY3VycmVudCBsb2NhbGUgd2l0aG91dCB0aGUgZGF0ZQ0KCXNbIiV5 Il0gPSAoJycgKyB5KS5zdWJzdHIoMiwgMik7IC8vIHllYXIgd2l0aG91dCB0aGUg Y2VudHVyeSAocmFuZ2UgMDAgdG8gOTkpDQoJc1siJVkiXSA9IHk7CQkvLyB5ZWFy IHdpdGggdGhlIGNlbnR1cnkNCglzWyIlJSJdID0gIiUiOwkJLy8gYSBsaXRlcmFs ICclJyBjaGFyYWN0ZXINCg0KCXZhciByZSA9IC8lLi9nOw0KCWlmICghQ2FsZW5k YXIuaXNfaWU1ICYmICFDYWxlbmRhci5pc19raHRtbCkNCgkJcmV0dXJuIHN0ci5y ZXBsYWNlKHJlLCBmdW5jdGlvbiAocGFyKSB7IHJldHVybiBzW3Bhcl0gfHwgcGFy OyB9KTsNCg0KCXZhciBhID0gc3RyLm1hdGNoKHJlKTsNCglmb3IgKHZhciBpID0g MDsgaSA8IGEubGVuZ3RoOyBpKyspIHsNCgkJdmFyIHRtcCA9IHNbYVtpXV07DQoJ CWlmICh0bXApIHsNCgkJCXJlID0gbmV3IFJlZ0V4cChhW2ldLCAnZycpOw0KCQkJ c3RyID0gc3RyLnJlcGxhY2UocmUsIHRtcCk7DQoJCX0NCgl9DQoNCglyZXR1cm4g c3RyOw0KfTsNCg0KRGF0ZS5wcm90b3R5cGUuX19tc2hfb2xkU2V0RnVsbFllYXIg PSBEYXRlLnByb3RvdHlwZS5zZXRGdWxsWWVhcjsNCkRhdGUucHJvdG90eXBlLnNl dEZ1bGxZZWFyID0gZnVuY3Rpb24oeSkgew0KCXZhciBkID0gbmV3IERhdGUodGhp cyk7DQoJZC5fX21zaF9vbGRTZXRGdWxsWWVhcih5KTsNCglpZiAoZC5nZXRNb250 aCgpICE9IHRoaXMuZ2V0TW9udGgoKSkNCgkJdGhpcy5zZXREYXRlKDI4KTsNCgl0 aGlzLl9fbXNoX29sZFNldEZ1bGxZZWFyKHkpOw0KfTsNCg0KLy8gRU5EOiBEQVRF IE9CSkVDVCBQQVRDSEVTDQoNCg0KLy8gZ2xvYmFsIG9iamVjdCB0aGF0IHJlbWVt YmVycyB0aGUgY2FsZW5kYXINCndpbmRvdy5fZHluYXJjaF9wb3B1cENhbGVuZGFy ID0gbnVsbDsNCg0KQ2FsZW5kYXIuc2V0dXAgPSBmdW5jdGlvbiAocGFyYW1zKSB7 DQoJZnVuY3Rpb24gcGFyYW1fZGVmYXVsdChwbmFtZSwgZGVmKSB7IGlmICh0eXBl b2YgcGFyYW1zW3BuYW1lXSA9PSAidW5kZWZpbmVkIikgeyBwYXJhbXNbcG5hbWVd ID0gZGVmOyB9IH07DQoNCglwYXJhbV9kZWZhdWx0KCJpbnB1dEZpZWxkIiwgICAg IG51bGwpOw0KCXBhcmFtX2RlZmF1bHQoImRpc3BsYXlBcmVhIiwgICAgbnVsbCk7 DQoJcGFyYW1fZGVmYXVsdCgiYnV0dG9uIiwgICAgICAgICBudWxsKTsNCglwYXJh bV9kZWZhdWx0KCJldmVudE5hbWUiLCAgICAgICJjbGljayIpOw0KCXBhcmFtX2Rl ZmF1bHQoImlmRm9ybWF0IiwgICAgICAgIiVZLyVtLyVkIik7DQoJcGFyYW1fZGVm YXVsdCgiZGFGb3JtYXQiLCAgICAgICAiJVkvJW0vJWQiKTsNCglwYXJhbV9kZWZh dWx0KCJzaW5nbGVDbGljayIsICAgIHRydWUpOw0KCXBhcmFtX2RlZmF1bHQoImRp c2FibGVGdW5jIiwgICAgbnVsbCk7DQoJcGFyYW1fZGVmYXVsdCgiZGF0ZVN0YXR1 c0Z1bmMiLCBwYXJhbXNbImRpc2FibGVGdW5jIl0pOwkvLyB0YWtlcyBwcmVjZWRl bmNlIGlmIGJvdGggYXJlIGRlZmluZWQNCglwYXJhbV9kZWZhdWx0KCJkYXRlVGV4 dCIsICAgICAgIG51bGwpOw0KCXBhcmFtX2RlZmF1bHQoImZpcnN0RGF5IiwgICAg ICAgbnVsbCk7DQoJcGFyYW1fZGVmYXVsdCgiYWxpZ24iLCAgICAgICAgICAiQnIi KTsNCglwYXJhbV9kZWZhdWx0KCJyYW5nZSIsICAgICAgICAgIFsxOTAwLCAyOTk5 XSk7DQoJcGFyYW1fZGVmYXVsdCgid2Vla051bWJlcnMiLCAgICB0cnVlKTsNCglw YXJhbV9kZWZhdWx0KCJmbGF0IiwgICAgICAgICAgIG51bGwpOw0KCXBhcmFtX2Rl ZmF1bHQoImZsYXRDYWxsYmFjayIsICAgbnVsbCk7DQoJcGFyYW1fZGVmYXVsdCgi b25TZWxlY3QiLCAgICAgICBudWxsKTsNCglwYXJhbV9kZWZhdWx0KCJvbkNsb3Nl IiwgICAgICAgIG51bGwpOw0KCXBhcmFtX2RlZmF1bHQoIm9uVXBkYXRlIiwgICAg ICAgbnVsbCk7DQoJcGFyYW1fZGVmYXVsdCgiZGF0ZSIsICAgICAgICAgICBudWxs KTsNCglwYXJhbV9kZWZhdWx0KCJzaG93c1RpbWUiLCAgICAgIGZhbHNlKTsNCglw YXJhbV9kZWZhdWx0KCJ0aW1lRm9ybWF0IiwgICAgICIyNCIpOw0KCXBhcmFtX2Rl ZmF1bHQoImVsZWN0cmljIiwgICAgICAgdHJ1ZSk7DQoJcGFyYW1fZGVmYXVsdCgi c3RlcCIsICAgICAgICAgICAyKTsNCglwYXJhbV9kZWZhdWx0KCJwb3NpdGlvbiIs ICAgICAgIG51bGwpOw0KCXBhcmFtX2RlZmF1bHQoImNhY2hlIiwgICAgICAgICAg ZmFsc2UpOw0KCXBhcmFtX2RlZmF1bHQoInNob3dPdGhlcnMiLCAgICAgZmFsc2Up Ow0KCXBhcmFtX2RlZmF1bHQoIm11bHRpcGxlIiwgICAgICAgbnVsbCk7DQoNCgl2 YXIgdG1wID0gWyJpbnB1dEZpZWxkIiwgImRpc3BsYXlBcmVhIiwgImJ1dHRvbiJd Ow0KCWZvciAodmFyIGkgaW4gdG1wKSB7DQoJCWlmICh0eXBlb2YgcGFyYW1zW3Rt cFtpXV0gPT0gInN0cmluZyIpIHsNCgkJCXBhcmFtc1t0bXBbaV1dID0gZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQocGFyYW1zW3RtcFtpXV0pOw0KCQl9DQoJfQ0KCWlm ICghKHBhcmFtcy5mbGF0IHx8IHBhcmFtcy5tdWx0aXBsZSB8fCBwYXJhbXMuaW5w dXRGaWVsZCB8fCBwYXJhbXMuZGlzcGxheUFyZWEgfHwgcGFyYW1zLmJ1dHRvbikp IHsNCgkJYWxlcnQoIkNhbGVuZGFyLnNldHVwOlxuICBOb3RoaW5nIHRvIHNldHVw IChubyBmaWVsZHMgZm91bmQpLiAgUGxlYXNlIGNoZWNrIHlvdXIgY29kZSIpOw0K CQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJZnVuY3Rpb24gb25TZWxlY3QoY2FsKSB7 DQoJCXZhciBwID0gY2FsLnBhcmFtczsNCgkJdmFyIHVwZGF0ZSA9IChjYWwuZGF0 ZUNsaWNrZWQgfHwgcC5lbGVjdHJpYyk7DQoJCWlmICh1cGRhdGUgJiYgcC5pbnB1 dEZpZWxkKSB7DQoJCQlwLmlucHV0RmllbGQudmFsdWUgPSBjYWwuZGF0ZS5wcmlu dChwLmlmRm9ybWF0KTsNCgkJCWlmICh0eXBlb2YgcC5pbnB1dEZpZWxkLm9uY2hh bmdlID09ICJmdW5jdGlvbiIpDQoJCQkJcC5pbnB1dEZpZWxkLm9uY2hhbmdlKCk7 DQoJCX0NCgkJaWYgKHVwZGF0ZSAmJiBwLmRpc3BsYXlBcmVhKQ0KCQkJcC5kaXNw bGF5QXJlYS5pbm5lckhUTUwgPSBjYWwuZGF0ZS5wcmludChwLmRhRm9ybWF0KTsN CgkJaWYgKHVwZGF0ZSAmJiB0eXBlb2YgcC5vblVwZGF0ZSA9PSAiZnVuY3Rpb24i KQ0KCQkJcC5vblVwZGF0ZShjYWwpOw0KCQlpZiAodXBkYXRlICYmIHAuZmxhdCkg ew0KCQkJaWYgKHR5cGVvZiBwLmZsYXRDYWxsYmFjayA9PSAiZnVuY3Rpb24iKQ0K CQkJCXAuZmxhdENhbGxiYWNrKGNhbCk7DQoJCX0NCgkJaWYgKHVwZGF0ZSAmJiBw LnNpbmdsZUNsaWNrICYmIGNhbC5kYXRlQ2xpY2tlZCkNCgkJCWNhbC5jYWxsQ2xv c2VIYW5kbGVyKCk7DQoJfTsNCg0KCWlmIChwYXJhbXMuZmxhdCAhPSBudWxsKSB7 DQoJCWlmICh0eXBlb2YgcGFyYW1zLmZsYXQgPT0gInN0cmluZyIpDQoJCQlwYXJh bXMuZmxhdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBhcmFtcy5mbGF0KTsN CgkJaWYgKCFwYXJhbXMuZmxhdCkgew0KCQkJYWxlcnQoIkNhbGVuZGFyLnNldHVw OlxuICBGbGF0IHNwZWNpZmllZCBidXQgY2FuJ3QgZmluZCBwYXJlbnQuIik7DQoJ CQlyZXR1cm4gZmFsc2U7DQoJCX0NCgkJdmFyIGNhbCA9IG5ldyBDYWxlbmRhcihw YXJhbXMuZmlyc3REYXksIHBhcmFtcy5kYXRlLCBwYXJhbXMub25TZWxlY3QgfHwg b25TZWxlY3QpOw0KCQljYWwuc2hvd3NPdGhlck1vbnRocyA9IHBhcmFtcy5zaG93 T3RoZXJzOw0KCQljYWwuc2hvd3NUaW1lID0gcGFyYW1zLnNob3dzVGltZTsNCgkJ Y2FsLnRpbWUyNCA9IChwYXJhbXMudGltZUZvcm1hdCA9PSAiMjQiKTsNCgkJY2Fs LnBhcmFtcyA9IHBhcmFtczsNCgkJY2FsLndlZWtOdW1iZXJzID0gcGFyYW1zLndl ZWtOdW1iZXJzOw0KCQljYWwuc2V0UmFuZ2UocGFyYW1zLnJhbmdlWzBdLCBwYXJh bXMucmFuZ2VbMV0pOw0KCQljYWwuc2V0RGF0ZVN0YXR1c0hhbmRsZXIocGFyYW1z LmRhdGVTdGF0dXNGdW5jKTsNCgkJY2FsLmdldERhdGVUZXh0ID0gcGFyYW1zLmRh dGVUZXh0Ow0KCQlpZiAocGFyYW1zLmlmRm9ybWF0KSB7DQoJCQljYWwuc2V0RGF0 ZUZvcm1hdChwYXJhbXMuaWZGb3JtYXQpOw0KCQl9DQoJCWlmIChwYXJhbXMuaW5w dXRGaWVsZCAmJiB0eXBlb2YgcGFyYW1zLmlucHV0RmllbGQudmFsdWUgPT0gInN0 cmluZyIpIHsNCgkJCWNhbC5wYXJzZURhdGUocGFyYW1zLmlucHV0RmllbGQudmFs dWUpOw0KCQl9DQoJCWNhbC5jcmVhdGUocGFyYW1zLmZsYXQpOw0KCQljYWwuc2hv dygpOw0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJdmFyIHRyaWdnZXJFbCA9IHBh cmFtcy5idXR0b24gfHwgcGFyYW1zLmRpc3BsYXlBcmVhIHx8IHBhcmFtcy5pbnB1 dEZpZWxkOw0KCXRyaWdnZXJFbFsib24iICsgcGFyYW1zLmV2ZW50TmFtZV0gPSBm dW5jdGlvbigpIHsNCgkJdmFyIGRhdGVFbCA9IHBhcmFtcy5pbnB1dEZpZWxkIHx8 IHBhcmFtcy5kaXNwbGF5QXJlYTsNCgkJdmFyIGRhdGVGbXQgPSBwYXJhbXMuaW5w dXRGaWVsZCA/IHBhcmFtcy5pZkZvcm1hdCA6IHBhcmFtcy5kYUZvcm1hdDsNCgkJ dmFyIG11c3RDcmVhdGUgPSBmYWxzZTsNCgkJdmFyIGNhbCA9IHdpbmRvdy5jYWxl bmRhcjsNCgkJaWYgKGRhdGVFbCkNCgkJCXBhcmFtcy5kYXRlID0gRGF0ZS5wYXJz ZURhdGUoZGF0ZUVsLnZhbHVlIHx8IGRhdGVFbC5pbm5lckhUTUwsIGRhdGVGbXQp Ow0KCQlpZiAoIShjYWwgJiYgcGFyYW1zLmNhY2hlKSkgew0KCQkJd2luZG93LmNh bGVuZGFyID0gY2FsID0gbmV3IENhbGVuZGFyKHBhcmFtcy5maXJzdERheSwNCgkJ CQkJCQkgICAgIHBhcmFtcy5kYXRlLA0KCQkJCQkJCSAgICAgcGFyYW1zLm9uU2Vs ZWN0IHx8IG9uU2VsZWN0LA0KCQkJCQkJCSAgICAgcGFyYW1zLm9uQ2xvc2UgfHwg ZnVuY3Rpb24oY2FsKSB7IGNhbC5oaWRlKCk7IH0pOw0KCQkJY2FsLnNob3dzVGlt ZSA9IHBhcmFtcy5zaG93c1RpbWU7DQoJCQljYWwudGltZTI0ID0gKHBhcmFtcy50 aW1lRm9ybWF0ID09ICIyNCIpOw0KCQkJY2FsLndlZWtOdW1iZXJzID0gcGFyYW1z LndlZWtOdW1iZXJzOw0KCQkJbXVzdENyZWF0ZSA9IHRydWU7DQoJCX0gZWxzZSB7 DQoJCQlpZiAocGFyYW1zLmRhdGUpDQoJCQkJY2FsLnNldERhdGUocGFyYW1zLmRh dGUpOw0KCQkJY2FsLmhpZGUoKTsNCgkJfQ0KCQlpZiAocGFyYW1zLm11bHRpcGxl KSB7DQoJCQljYWwubXVsdGlwbGUgPSB7fTsNCgkJCWZvciAodmFyIGkgPSBwYXJh bXMubXVsdGlwbGUubGVuZ3RoOyAtLWkgPj0gMDspIHsNCgkJCQl2YXIgZCA9IHBh cmFtcy5tdWx0aXBsZVtpXTsNCgkJCQl2YXIgZHMgPSBkLnByaW50KCIlWSVtJWQi KTsNCgkJCQljYWwubXVsdGlwbGVbZHNdID0gZDsNCgkJCX0NCgkJfQ0KCQljYWwu c2hvd3NPdGhlck1vbnRocyA9IHBhcmFtcy5zaG93T3RoZXJzOw0KCQljYWwueWVh clN0ZXAgPSBwYXJhbXMuc3RlcDsNCgkJY2FsLnNldFJhbmdlKHBhcmFtcy5yYW5n ZVswXSwgcGFyYW1zLnJhbmdlWzFdKTsNCgkJY2FsLnBhcmFtcyA9IHBhcmFtczsN CgkJY2FsLnNldERhdGVTdGF0dXNIYW5kbGVyKHBhcmFtcy5kYXRlU3RhdHVzRnVu Yyk7DQoJCWNhbC5nZXREYXRlVGV4dCA9IHBhcmFtcy5kYXRlVGV4dDsNCgkJY2Fs LnNldERhdGVGb3JtYXQoZGF0ZUZtdCk7DQoJCWlmIChtdXN0Q3JlYXRlKQ0KCQkJ Y2FsLmNyZWF0ZSgpOw0KCQljYWwucmVmcmVzaCgpOw0KCQlpZiAoIXBhcmFtcy5w b3NpdGlvbikNCgkJCWNhbC5zaG93QXRFbGVtZW50KHBhcmFtcy5idXR0b24gfHwg cGFyYW1zLmRpc3BsYXlBcmVhIHx8IHBhcmFtcy5pbnB1dEZpZWxkLCBwYXJhbXMu YWxpZ24pOw0KCQllbHNlDQoJCQljYWwuc2hvd0F0KHBhcmFtcy5wb3NpdGlvblsw XSwgcGFyYW1zLnBvc2l0aW9uWzFdKTsNCgkJcmV0dXJuIGZhbHNlOw0KCX07DQoN CglyZXR1cm4gY2FsOw0KfTs= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/forms/textbox-grey-middle.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAEAAAAWCAMAAAA2GAaYAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxQTFRF1NfY09bY9vb2////0il0VQAA ABNJREFUeNpiYGBgZGAmCjIBBBgABQQAPaN4aEgAAAAASUVORK5CYII= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/forms/textbox-blue-middle.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAEAAAAbCAMAAACKhhVGAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxQTFRF9fv+4eTlzNPX////Ja25ZwAA ABNJREFUeNpiYGJgZGAmETIABBgACCMATPBwakoAAAAASUVORK5CYII= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/forms/textbox-blue-left.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAgAAAAbCAMAAAB2kz6MAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpQTFRFtry/ub/C7PT59fv+0tndvsTI 8Pj93ubqv8TG8fn92+Ln/f397vf82t3e7PX69Pb3zNPX4OLjvMHE6vL3ztbZ0tXX 3+Pl2t3f0trevcTH9fX2ztXZ6/T52ODlusDD7/Hy9PX1+vr65/D1z9PV7fb73+Hj ztLU/v7+197i/P3+zdTY4ePk7/j9////OJ481AAAAGhJREFUeNqsxkcCgkAQBdEm CEhQQJSgGIgy/L7/9RykuQG1qUdYutQx6ZmK0qtGUxrzyATz4FXMGpnx5gUP6vkP /xmssFteofIN8z64bygSgRsJukGA70cQ3gQ4vQRwzgLAmgTA8SfAADsgIR/abdn5 AAAAAElFTkSuQmCC ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/forms/textbox-blue-right.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAgAAAAbCAMAAAB2kz6MAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEhQTFRF9Pr+8Pj98fn97fb78/r93eXp 3+Pl4OLj7vf88/r+0NTW+/3++/3/+v3+9/v+197i9Pf49/z+7/Lz8vn9+vr69fr+ 7/j9////TQ/o/QAAAFFJREFUeNqsz8cNwDAMQ1G5pDi92dx/0wCSmAmi0zsJ/NKl pifDtI8K4OmTAbiCAwcBIWYCkSiEEPUnfA8zERwrZ9yOzaeeVrFk7arRSl8BBgA4 6RGiEsCErgAAAABJRU5ErkJggg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/forms/textarea-blue-top.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAIAAAAJCAMAAAAvrw3VAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxQTFRF09bYxsrN2ODk////t4xLWQAA ABVJREFUeNpiYGJiYGRgYGbGRAABBgACUQAwHuePfQAAAABJRU5ErkJggg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/forms/textarea-blue-content.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAkAAAACCAMAAAC9iAbhAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9QTFRF2ODlxsvN0tXX1Nvf////X7rz ZwAAABRJREFUeNpiYGBkgQAGZiYoCyDAAAJJAD/6xsH8AAAAAElFTkSuQmCC ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/forms/textarea-blue-bottomLeft.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAMAAADXT/YiAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADZQTFRF2eHlzNHT7fb77vf89fb38/r9 8Pj93eHj0tXX8/X27vDx2Nvd4eru2ODl/P399fv+7/j9////oE6JFQAAADBJREFU eNo8xrcRACAQAzCTM2/2X5aCM6qENc6DWbXgNCJqLH++a8xNI21rZLIrwADS6QS0 l2flDgAAAABJRU5ErkJggg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/forms/textarea-blue-bottomRight.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAMAAADXT/YiAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhQTFRF8Pj9/f7/9/z+8/r9+v3+9fv+ 7/j9////2zyK8AAAACxJREFUeNo8xkkSACAMAjC6gP//sY4WcwrWSHj8Ky/k0WvN Gm9BHUiWri3AAFwyAfVIqfX5AAAAAElFTkSuQmCC ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/forms/textarea-blue-topLeft.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAkAAAAKCAMAAABR24SMAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEhQTFRFxsvNuL3A4eru4urvu8HFvcPG xsrN2eHl9fb30dXWx87SyM/T09bY2Nvd9/j47fb72ODl0tXX5+nq1Nvf2ODktbu+ 7/j9////DDnQVwAAAEJJREFUeNo8xtEWgBAQRdERilKI6f7/nzY0q/NyNj0z2zuN F8drEuWD6wWIdnMDQxtPiHzEp4WDqhBUrf46Va8AAwBJjQbVc1BxTAAAAABJRU5E rkJggg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/forms/textarea-blue-topRight.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAkAAAAKCAMAAABR24SMAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADNQTFRF2ODl4urvy8/S8Pj93uLk9/z+ 9/j48/X28/r9+/z97e/w2ODk7fb79fv+09bY7/j9////EFjpBwAAADJJREFUeNo8 xrcBACAMA7DQa4L/v5YhYE2SFY4Tsyg+ADXvN2CmPzQOyg0OnVOuXAEGAO/aBQBX y+WuAAAAAElFTkSuQmCC ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/forms/button-white.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAFgAAAAVCAMAAAD1jdm0AAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBQTFRF9PPz9/b2xsbG8fDw+fn54+Li 1tXV2tnZ7u3ttbW10dHR5+Xl39/f09PT3dzczs7Ormz/EgAAAJJJREFUeNq01bkB xDAIRNER6BhLlum/20X2lgA/IXvhgFprqQnB3RItlwKHiRJKHw1wdSki6c/VBSzq nw7KWeULk5HyYckGNPKjg9LXu6FtnRjX6zl8r4we6NMyGtCRAneH74w62J+MNrhH RhOcKbCB1jPKgrdAZe74TFBFzGZsZjJ96C+J7zqvSf3GJrvWnwADACcjLiVs1ur1 AAAAAElFTkSuQmCC ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=forms.css Content-Type: text/css; charset=utf-8; name=forms.css Content-Location: http://teplice.naseadresa.cz/0000-Global/styles/forms.css Content-Transfer-Encoding: 8bit /****************************************************************************************/ /* */ /* MojeAdresa.cz website - FORMS ELEMENTS */ /* */ /* Version: 2009-06-18 14:18 */ /* Last changed by: Filip Zadnik */ /* Version: 2009-01-28 12:00 */ /* Last changed by: Josef Vondracek */ /* */ /****************************************************************************************/ /****************************************************************************************/ /* TEXT INPUT - ON GREY BACKGROUND ==================================================== */ .inputGreyBg { width: 258px; height: 22px; background: white url(../images/design/forms/textbox-grey-middle.png) repeat-x 0px 0px; } .inputGreyBg .left, .inputGreyBg .right { width: 9px; height: 22px; display: block; } .inputGreyBg .left { float: left; background: url(../images/design/forms/textbox-grey-left.png) no-repeat 0px 0px; } .inputGreyBg .right { float: right; background: url(../images/design/forms/textbox-grey-right.png) no-repeat 0px 0px; } .inputGreyBg input { width: 234px; height: 18px; padding: 4px 0 0 0; float: left; position: relative; left: 4px; background: transparent; border: none; color: #a7b3bc; } .logoutInput { background:none; border:0; color:#F05046; cursor:pointer; } /* TEXT INPUT - ON LIGHTER GREY BACKGROUND ==================================================== */ .inputLighterGreyBg { width: 194px; height: 22px; background: white url(../images/design/forms/textbox-grey-middle.png) repeat-x 0px 0px; } .inputLighterGreyBg .left, .inputLighterGreyBg .right, .inputLighterGreyBg .leftPart, .inputLighterGreyBg .rightPart { width: 4px; height: 21px; display: block; } .inputLighterGreyBg .left, .inputLighterGreyBg .leftPart { float: left; background: url(../images/design/forms/textbox-lightGrey-left.png) no-repeat 0px 0px; } .inputLighterGreyBg .right, .inputLighterGreyBg .rightPart { float: right; background: url(../images/design/forms/textbox-lightGrey-right.png) no-repeat 0px 0px; } .inputLighterGreyBg input { width: 184px; height: 16px; float: left; margin:3px 0 0 0; position: relative; left: 4px; background: transparent; border: none; color: #000; } /* TEXT INPUT - ON LIGHTER GREY BACKGROUND / DARK BLUE ==================================================== */ .inputDarkBlueBg { width: 184px; height: 22px; background: white url(../images/design/forms/textbox-darkblue-middle.png) repeat-x 0px 0px; } .inputDarkBlueBg .left, .inputDarkBlueBg .right { width: 4px; height: 21px; display: block; } .inputDarkBlueBg .left { float: left; background: url(../images/design/forms/textbox-darkblue-left.png) no-repeat 0px 0px; } .inputDarkBlueBg .right { float: right; background: url(../images/design/forms/textbox-darkblue-right.png) no-repeat 0px 0px; } .inputDarkBlueBg input { width: 164px; height: 14px; padding: 4px 0 4px 0; float: left; position: relative; left: 4px; background: transparent; border: none; color: #a7b3bc; } /* TEXT INPUT - ON BLUE BACKGROUND ==================================================== */ .inputBlueBg { width: 176px; height: 27px; overflow:hidden; background: white url(../images/design/forms/textbox-blue-middle.png) repeat-x 0px 0px; } .inputBlueBg .left, .inputBlueBg .right { width: 8px; height: 27px; display: block; } .inputBlueBg .left { float: left; background: url(../images/design/forms/textbox-blue-left.png) no-repeat 0px 0px; } .inputBlueBg .right { float: right; background: url(../images/design/forms/textbox-blue-right.png) no-repeat 0px 0px; } .inputBlueBg input { width: 154px; height: 14px; padding: 0; float: left; position: relative; left: 2px; top:7px; background: transparent; border: none; color: #000; } /* GREY TEXT INPUT - ON WHITE BACKGROUND ==================================================== */ .inputGreyWhiteBg { width: 36px; height: 15px; overflow:hidden; background: #f7f7f7 url(../images/design/forms/input-grey-on-white-bg.png) repeat-x 0px 0px; } .inputGreyWhiteBg .left { width: 5px; height: 15px; float: left; display: block; background: url(../images/design/forms/input-grey-on-white-bg-left.png) no-repeat 0px 0px; } .inputGreyWhiteBg .right { width: 3px; height: 15px; float: right; display: block; background: url(../images/design/forms/input-grey-on-white-bg-right.png) no-repeat 0px 0px; } .inputGreyWhiteBg input { width: 28px; height: 14px; padding: 0; float: left; position: relative; left: 0px; background: transparent; border: none; color: #000; } /* GREY TEXT INPUT - ON WHITE BACKGROUND ==================================================== */ .inputGreyOnWhiteBg { width: 128px; height: 22px; overflow:hidden; background: #fff url(../images/design/forms/white-input-on-dark-grey-bg.png) repeat-x 0px 0px; } .inputGreyOnWhiteBg .left { width: 6px; height: 22px; float: left; display: block; background: #fff url(../images/design/forms/white-input-on-dark-grey-left.png) no-repeat 0px 0px; } .inputGreyOnWhiteBg .right { width: 4px; height: 22px; float: right; display: block; background: url(../images/design/forms/white-input-on-dark-grey-right.png) no-repeat 0px 0px; } .inputGreyOnWhiteBg input { width: 112px; line-height: 12px; padding: 6px 0 2px 6px; float: left; position: relative; left: 0px; background: transparent; border: none; color: #5B5B5B; } /* TEXTAREA - short ON GREY BACKGROUND ==================================================== */ .textareaGreyBgShort { width:382px; height:45px; background: white url(../images/design/forms/textarea-grey-bcg.png) repeat-x 0px 0px; overflow:hidden; } .textareaGreyBgShort .left, .textareaGreyBgShort .right { width: 9px; height: 45px; display: block; } .textareaGreyBgShort .left { float: left; background: url(../images/design/forms/textarea-grey-left-short.png) no-repeat 0px 0px; } .textareaGreyBgShort .right { float: right; background: url(../images/design/forms/textarea-grey-right-short.png) no-repeat 0px 0px; } .textareaGreyBgShort textarea { width: 364px; height:30px; padding: 7px 0; position: relative; top:1px; float: left; border: none; background: transparent; color: #000; } /* TEXTAREA - ON BLUE BACKGROUND ==================================================== */ .textareaBlueBg { width:100%; height:71px; overflow:hidden; background: white url(../images/design/forms/textarea-bcg.png) repeat-x 0px 0px; } .textareaBlueBg .left, .textareaBlueBg .right { width: 9px; height: 71px; display: block; } .textareaBlueBg .left { float: left; background: url(../images/design/forms/textarea-blue-left.png) no-repeat 0px 0px; } .textareaBlueBg .right { float: right; background: url(../images/design/forms/textarea-blue-right.png) no-repeat 0px 0px; } .textareaBlueBg textarea { width: 452px; height:56px; padding: 7px 0; float: left; position: relative; top:1px; background: transparent; border: none; color: #000; } /* TEXTAREA - universal width, height ON BLUE BACKGROUND ==================================================== */ .textareaBlueBg2 { width:300px; background: white; overflow:hidden; position:relative; } .textareaBlueBg2 .bottom, .textareaBlueBg2 .top { width: 100%; height: 9px; display: block; overflow: hidden; clear: both; } .textareaBlueBg2 .top { background: url(../images/design/forms/textarea-blue-top.png) repeat-x 0px 0px; } .textareaBlueBg2 .content { background: url(../images/design/forms/textarea-blue-content.png) repeat-y 0px 0px; } .textareaBlueBg2 .left, .textareaBlueBg2 .right { width: 9px; height: 71px; display: block; } .textareaBlueBg2 .bottom .left, .textareaBlueBg2 .top .left { width: 9px; height: 9px; display: block; float: left; } .textareaBlueBg2 .bottom .right, .textareaBlueBg2 .top .right { width: 9px; height: 9px; display: block; float: right; } .textareaBlueBg2 .bottom .left { background: url(../images/design/forms/textarea-blue-bottomLeft.png) no-repeat 0px 0px; } .textareaBlueBg2 .bottom .right { background: url(../images/design/forms/textarea-blue-bottomRight.png) no-repeat 0px 0px; } .textareaBlueBg2 .top .left { background: url(../images/design/forms/textarea-blue-topLeft.png) no-repeat 0px 0px; } .textareaBlueBg2 .top .right { background: url(../images/design/forms/textarea-blue-topRight.png) no-repeat 0px 0px; } .textareaBlueBg2 textarea { width: 252px; height:56px; padding: 7px 0; position: relative; top:1px; float: left; border: none; background: transparent; color: #000; } /* TEXTAREA - universal width, height ON GREY BACKGROUND ==================================================== */ .textareaWhiteOnGrey { width:300px; height:568px; background: white; overflow:hidden; position:relative; } .textareaWhiteOnGrey .bottom, .textareaWhiteOnGrey .top { width: 100%; height: 7px; display: block; overflow: hidden; clear: both; } .textareaWhiteOnGrey .top { background: url(../images/design/forms/textarea-white-on-grey-bg.png) repeat-x 0px 0px; } .textareaWhiteOnGrey .content { background: url(../images/design/forms/textarea-white-on-grey-left.png) repeat-y 0px 0px; } .textareaWhiteOnGrey .left, .textareaWhiteOnGrey .right { width: 7px; height: 300px; display: block; } .textareaWhiteOnGrey .bottom .left, .textareaWhiteOnGrey .top .left { width: 7px; height: 7px; display: block; float: left; } .textareaWhiteOnGrey .bottom .right, .textareaWhiteOnGrey .top .right { width: 7px; height: 7px; display: block; float: right; } .textareaWhiteOnGrey .bottom .left { background: url(../images/design/forms/textarea-white-on-grey-bottom-left.png) no-repeat 0px 0px; } .textareaWhiteOnGrey .bottom .right { background: url(../images/design/forms/textarea-white-on-grey-bottom-right.png) no-repeat 0px 0px; } .textareaWhiteOnGrey .top .left { background: url(../images/design/forms/textarea-white-on-grey-top-left.png) no-repeat 0px 0px; } .textareaWhiteOnGrey .top .right { background: url(../images/design/forms/textarea-white-on-grey-top-right.png) no-repeat 0px 0px; } .textareaWhiteOnGrey textarea { width: 282px; height:546px; padding: 7px 0 0 0; position: relative; top:-2px; float: left; border: none; background: transparent; color: #000; } /* TEXTAREA - ON GREY BACKGROUND ==================================================== */ .textareaGrey textarea { width: 310px; height:48px; padding: 0px 0 0px 8px; position: relative; top:6px; border: none; background: transparent; color: #000; margin-bottom:6px; } /* TEXTAREA - ON GREY BACKGROUND ==================================================== */ .textareaGreyBg { width:382px; height:131px; background: white url(../images/design/forms/textarea-grey-bcg.png) repeat-x 0px 0px; overflow:hidden; } .textareaGreyBg .left, .textareaGreyBg .right { width: 9px; height: 131px; display: block; } .textareaGreyBg .left { float: left; background: url(../images/design/forms/textarea-grey-left.png) no-repeat 0px 0px; } .textareaGreyBg .right { float: right; background: url(../images/design/forms/textarea-grey-right.png) no-repeat 0px 0px; } .textareaGreyBg textarea { width: 364px; height:116px; padding: 7px 0; position: relative; top:1px; float: left; border: none; background: transparent; color: #000; } /* TEXTAREA - short ON GREY BACKGROUND ==================================================== */ .textareaGreyBgShort { width:382px; height:45px; background: white url(../images/design/forms/textarea-grey-bcg.png) repeat-x 0px 0px; overflow:hidden; } .textareaGreyBgShort .left, .textareaGreyBgShort .right { width: 9px; height: 45px; display: block; } .textareaGreyBgShort .left { float: left; background: url(../images/design/forms/textarea-grey-left-short.png) no-repeat 0px 0px; } .textareaGreyBgShort .right { float: right; background: url(../images/design/forms/textarea-grey-right-short.png) no-repeat 0px 0px; } .textareaGreyBgShort textarea { width: 364px; height:30px; padding: 7px 0; position: relative; top:1px; float: left; border: none; background: transparent; color: #000; } /* GREY TEXT INPUT - ON WHITE BACKGROUND =================================================== */ .textInputGrey { width: 280px; height: 22px; background: #dcdcdc url(../images/design/forms/greyTextBox_middle.png) repeat-x 0px 0px; } .textInputGrey .left, .textInputGrey .right { width: 7px; height: 22px; display: block; } .textInputGrey .left { float: left; background: url(../images/design/forms/greyTextBox_left.png) no-repeat top left; } .textInputGrey .right { float: right; background: url(../images/design/forms/greyTextBox_right.png) no-repeat top right; } .textInputGrey input { width: 250px; height: 17px; padding: 4px 0 0 0; position: relative; left: 4px; float: left; border: none; background: transparent; color: #000; } /* TEXT INPUT - ON WHITE BACKGROUND =================================================== */ /*** GREY BUTTON ON GREY BG ***************************************************************/ .backButtonGreyBg { width: 91px; height: 22px; line-height:20px; border: none; cursor:pointer; background: #e9e9e9 url(../images/design/forms/back-button.png) no-repeat 0px 0px; color: #0060a0; } /*** GREY BUTTON ON GREY BG (LONGER) ***************************************************************/ .createButtonGreyBg { width: 115px; height: 22px; line-height:20px; border: none; cursor:pointer; background: #e9e9e9 url(../images/design/forms/create-button.png) no-repeat 0px 0px; color: #0060a0; } /*** GREY BUTTON ON BLUE BG ***************************************************************/ .backButtonBlueBg { width: 60px; height: 22px; line-height:20px; border: none; cursor:pointer; background: #e9e9e9 url(../images/design/forms/back-button-blue-bg.png) no-repeat 0px 0px; color: #0060a0; } /*** GREY BUTTON ON BLUE BG (LONGER) ***************************************************************/ .createButtonBlueBg { width: 116px; height: 22px; line-height:20px; border: none; cursor:pointer; background: #e9e9e9 url(../images/design/forms/create-button-blue-bg.png) no-repeat 0px 0px; color: #0060a0; } /*** GREY BUTTON ON BLUE BG ***************************************************************/ .sendButtonBlueBg { width: 130px; height: 22px; line-height:20px; border: none; cursor:pointer; background: #e9e9e9 url(../images/design/forms/send-button-blue-bg.png) no-repeat 0px 0px; color: #0060a0; } /*** GREY BUTTON ON GREY BG (LONGEST) ***************************************************************/ .saveButtonGreyBg { width: 139px; height: 22px; line-height:20px; border: none; cursor:pointer; background: #e9e9e9 url(../images/design/forms/save-button.png) no-repeat 0px 0px; color: #0060a0; } /*** GREY BUTTON ON GREY BG (LO-LONGEST) ***************************************************************/ .deleteButtonGreyBg { width: 168px; height: 22px; line-height:20px; border: none; cursor:pointer; background: #e9e9e9 url(../images/design/forms/delete-grey-button.png) no-repeat 0px 0px; color: #0060a0; } /*** GREY BUTTON ON GREY BG (LO-LO-LONGEST) ***************************************************************/ .authorizeButtonGreyBg { width: 225px; height: 22px; line-height:20px; border: none; cursor:pointer; background: #e9e9e9 url(../images/design/forms/authorize-button.png) no-repeat 0px 0px; color: #0060a0; } /* BUTTON - ON GREY BACKGROUND ======================================================== */ .buttonGreyBg { width: 88px; height: 21px; border: none; cursor:pointer; background: #e7e5e5 url(../images/design/forms/button-grey.png) no-repeat 0px 0px; color: #284583; } /* GREY BUTTON - ON GREY BACKGROUND WITH GREY BORDER =================================== */ .buttonGreyBgGreyBorder { width: 54px; height: 23px; border: none; cursor:pointer; background: #e7e5e5 url(../images/design/forms/grey-on-dark-grey-search-button.png) no-repeat 0px 0px; color: #1070b6; } /* GREY BUTTON - ON GREY BACKGROUND WITH GREY BORDER - LONG =========================== */ .buttonGreyBgGreyBorderLong { width: 128px; height: 22px; border: none; cursor:pointer; background: #e7e5e5 url(../images/design/forms/grey-on-dark-grey-search-button-long.png) no-repeat 0px 0px; color: #1070b6; } /* BUTTON - ON WHITE BACKGROUND ======================================================= */ .buttonWhiteBg { width: 88px; height: 21px; border: none; cursor:pointer; background: #e7e5e5 url(../images/design/forms/button-white.png) no-repeat 0px 0px; color: #284583; } a.buttonWhiteBg { width: 83px; height: 16px; padding:5px 0 0 5px; display:block; text-align:left; border: none; cursor:pointer; background: #e7e5e5 url(../images/design/forms/button-white.png) no-repeat 0px 0px; color: #284583; text-decoration:none; } a.buttonWhiteBgWidest { width: 185px; height: 16px; padding:5px 0 0 5px; display:block; text-align:center; border: none; cursor:pointer; background: #e7e5e5 url(../images/design/forms/button-grey-widest.png) no-repeat 0px 0px; color: #284583; text-decoration:none; } /* LONG BUTTON - ON WHITE BACKGROUND ======================================================= */ .buttonWhiteBgLong { width: 110px; height: 21px; border: none; cursor:pointer; background: #e7e5e5 url(../images/design/forms/button-white-long.png) no-repeat 0px 0px; color: #284583; } /* LONGEST BUTTON - ON WHITE BACKGROUND ======================================================= */ .buttonWhiteBgLongest { width: 130px; height: 21px; line-height:18px; border: none; cursor:pointer; background: #e7e5e5 url(../images/design/forms/button-white-longest.png) no-repeat 0px 0px; color: #284583; } /* WIDE BUTTON - ON WHITE BACKGROUND ======================================================= */ .wideButtonWhiteBg { width: 167px; height: 21px; border: none; cursor:pointer; background: #e7e5e5 url(../images/design/forms/button-grey-long.png) no-repeat 0px 0px; color: #284583; } /* wides BUTTON - ON WHITE BACKGROUND ======================================================= */ .widestButtonWhiteBg { width: 190px; height: 21px; border: none; cursor:pointer; background: #e7e5e5 url(../images/design/forms/button-grey-widest.png) no-repeat 0px 0px; color: #284583; } /* BLUE BUTTON - ON GREY BACKGROUND ======================================================= */ .blueButtonBg { width: 70px; height: 21px; border: none; cursor:pointer; background: #e7e5e5 url(../images/design/forms/button-blue.png) no-repeat 0px 0px; color: #4071b8; font-weight:bold; } /* BLUE BUTTON - ON WHITE BACKGROUND ==================================================== */ .blueButtonWhiteBg { width: 71px; height: 21px; border: none; cursor:pointer; background: #c7cfdd url(../images/design/forms/button-blue-white-bg.png) no-repeat 0px 0px; color: #0b2b54; text-transform:uppercase; font-size:90%; font-weight:normal; } /* GREY QUOTE BUTTON - ON WHITE BACKGROUND ==================================================== */ .quoteButton { width: 88px; height: 21px; border: none; cursor:pointer; background: #e2e1e1 url(../images/design/forms/button-quote.png) no-repeat 0px 0px; color: #1571b9; padding-left:24px; } /* GREY ANSWER BUTTON - ON WHITE BACKGROUND ==================================================== */ .answerButton { width: 88px; height: 21px; border: none; cursor:pointer; background: #e2e1e1 url(../images/design/forms/button-answer.png) no-repeat 0px 0px; color: #1571b9; padding-left:26px; } /* GREY ANSWER BUTTON LONG - ON WHITE BACKGROUND ==================================================== */ .answerButtonLong { width: 135px; height: 21px; border: none; cursor:pointer; background: #e2e1e1 url(../images/design/forms/button-answer-long.png) no-repeat 0px 0px; color: #1571b9; padding-left:26px; } a.answerButtonLong { display:block; line-height:21px; padding-left:45px; width:90px; text-decoration:none; } a.answerButtonLong:hover { text-decoration:underline; } /* GREY SHORT STYLE BUTTON - ON GREY BACKGROUND ==================================================== */ .shortButton { width: 30px; height: 17px; border: none; cursor:pointer; background: #e7e5e5 url(../images/design/forms/button-grey-short.png) no-repeat 0px 0px; color: #0b2b54; } /* GREY NORMAL STYLE BUTTON - ON GREY BACKGROUND ==================================================== */ .normalButton { width: 50px; height: 18px; border: none; cursor:pointer; background: #e7e5e5 url(../images/design/forms/button-grey-normal.png) no-repeat 0px 0px; color: #0b2b54; } /* BLUE E-SHOP BUTTON - ON GREY BACKGROUND ==================================================== */ .blueEshopButton { width: 107px; height: 24px; border: none; cursor:pointer; background: #cfd7e3 url(../images/design/forms/eshop-blue-button.png) no-repeat 0px 0px; color: #1e5fa7; } /* GREY QUOTE BUTTON - ON WHITE BACKGROUND ==================================================== */ .blueEshopButtonLong { width: 169px; height: 25px; border: none; cursor:pointer; background: #cfd7e3 url(../images/design/forms/eshop-blue-button-long.png) no-repeat 0px 0px; color: #1e5fa7; } /* ========================== submit input on white back universal long ========================================================== */ .redInput { height:21px; width:auto; padding:0px; position:relative; background:#b9c5d6 url(../images/design/forms/button-blue-middle.png) top left repeat-x; } .redInput input { background:none; border:none; color:#cb2a30; height:21px; font-size:90%; font-weight:normal; text-transform:uppercase; } .redInput .left { width:11px; height:21px; position:absolute; top:0; left:0; background:#b9c5d6 url(../images/design/forms/button-blue-left.png) top left no-repeat; } .redInput .right { width:8px; height:21px; position:absolute; top:0; right:0; background:#b9c5d6 url(../images/design/forms/button-blue-right.png) top right no-repeat; } /* ========================== submit input on grey back universal long ========================================================== */ .greyInput { height:31px; width:auto; padding:0 10px; line-height:28px; position:relative; text-align:center; background:#b9c5d6 url(../images/design/forms/buttonOnGrey-middle.png) top left repeat-x; } #all.greyInput { width:140px; } .greyInput input { background:none; border:none; color:#006fc5; padding:0; margin:10px 0 0 0; font-size:90%; font-weight:normal; text-transform:uppercase; } .greyInput a { background:none; display:block; border:none; color:#0b2b54; height:21px; font-size:90%; margin:3px 0 0 0px; font-weight:normal; text-transform:uppercase; text-decoration:none; } .greyInput .left { width:10px; height:31px; position:absolute; top:0; left:0; background:#b9c5d6 url(../images/design/forms/buttonOnGrey-left.png) top left no-repeat; } .greyInput .right { width:10px; height:31px; position:absolute; top:0; right:0; background:#b9c5d6 url(../images/design/forms/buttonOnGrey-right.png) top right no-repeat; } /* == DETAIL BUTTON ============================================================= */ .detailButton { width: 96px; height: 24px; border: none; cursor:pointer; background: #4f7cb9 url(../images/design/forms/detail-button.png) no-repeat 0px 0px; color: #fff; font-size:10px; padding-right:36px } /* == CART BUTTON ==================================================================== */ .cartButton { width: 86px; height: 24px; border: none; cursor:pointer; background: #e0e0e0 url(../images/design/forms/cart-button.png) no-repeat 0px 0px; color: #6f6f6f; font-size:10px; padding-right:36px } ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/ul-arrow.gif Content-Transfer-Encoding: Base64 R0lGODlhBAAHAIABANxjLv///yH5BAEAAAEALAAAAAAEAAcAAAIIRA4WaeyrVCgA Ow== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/ul-arrow-blue.gif Content-Transfer-Encoding: Base64 R0lGODlhBAAHAIABAABvxf///yH5BAEAAAEALAAAAAAEAAcAAAIIRA4WaeyrVCgA Ow== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/content-blocks/grey-panel-02-bg.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAMAAAAoyzS7AAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRF8vLyAAAA46bczAAAAAxJREFU eNpiYAAIMAAAAgABT21Z4QAAAABJRU5ErkJggg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/content-blocks/grey-panel-02-bottom-right.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAMAAACecocUAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhQTFRF/f399PT09vb2+fn59fX1+Pj4 ////8vLyvNKkyQAAACpJREFUeNpiYEcABtLYjEhsViQ2A4LNygZnM7HB2cxsUDYL KwOQyQYQYADVeAMgsW0v/QAAAABJRU5ErkJggg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/content-blocks/grey-panel-02-bottom-left.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAMAAACecocUAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhQTFRF/f399PT09vb2+fn59fX1+Pj4 ////8vLyvNKkyQAAACtJREFUeNpiYEcABmLYjEhsViQ2kiIGNlYkNhsTEpuNGYnN xsDKAmIDBBgA1EwDIFOWbqYAAAAASUVORK5CYII= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/content-blocks/grey-panel-02-top-left.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAMAAACecocUAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhQTFRF/f399PT09vb2+fn59fX1+Pj4 ////8vLyvNKkyQAAAC9JREFUeNqUxrkNACAMBMHjMdt/xz4JyThlotExxcbkLi5/ Ug/q4j3aRzt/TwEGAMeMAyC8CZFeAAAAAElFTkSuQmCC ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/content-blocks/grey-panel-02-top-right.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAMAAACecocUAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABhQTFRF/f399PT09vb2+fn59fX1+Pj4 ////8vLyvNKkyQAAAC1JREFUeNqMxrkRACAMBLHjMdt/x3iGZEMUKbRdOS08S2fq lE700ofOz68AAwDIuAMgGxzXrQAAAABJRU5ErkJggg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/content-blocks/advertisment-header-panel-bg.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAMAAAAoyzS7AAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRF2drXAAAA6JAS8AAAAAxJREFU eNpiYAAIMAAAAgABT21Z4QAAAABJRU5ErkJggg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/content-blocks/advertisment-header-panel-bottom-right.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAMAAACecocUAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABtQTFRF5+fl3t7c4ODe2tvY3+Dd3N3a 7+/v8vLy2drXIMIv6wAAAC5JREFUeNpsxjcCACAMAzFTj/+/mIESD9EkraD8xS47 8WEnPv8bvFfuuzi2AAMA8FcDiOXXtwsAAAAASUVORK5CYII= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/content-blocks/advertisment-header-panel-bottom-left.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAMAAACecocUAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABtQTFRF5+fl3t7c4ODe2tvY3+Dd3N3a 7+/v8vLy2drXIMIv6wAAACtJREFUeNpMybkNADAAg0DnxftPnDJQnUT6iz1kjWAf GfvKsGSmDNntE2AA7z0DiFeAloYAAAAASUVORK5CYII= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/content-blocks/advertisment-header-panel-top-left.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAMAAACecocUAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABtQTFRF5+fl3t7c4ODe2tvY3+Dd3N3a 7+/v8vLy2drXIMIv6wAAADBJREFUeNpsxjkOACAMBLHlzPz/xYggSApcWXaog3yV zd+4n/BOfKQTV3pJ5/8lwADiTQOIxucrBQAAAABJRU5ErkJggg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/content-blocks/advertisment-header-panel-top-right.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAMAAACecocUAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABtQTFRF5+fl3t7c4ODe2tvY3+Dd3N3a 7+/v8vLy2drXIMIv6wAAAC1JREFUeNpMxrkNADAMxLDLr/0nNow0YsXAzvtCmzpL h6vjHx0/+tDxSwABBgDjZwOIW7wQNQAAAABJRU5ErkJggg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/content-blocks/extended-info-panel-01-header-right.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAA+gAAAAhCAMAAAB9cnE3AAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGBQTFRF8vLy6Onl4+Pi2NnXycnI8PHt 9PTy7Ozo5OXh8vLv8/Py4eLe8PDu5ubl7u7s9/f24ODc2NjV///+2tvY5ebh7u/q 3d7a1dbT0NHP4uPf/v7+09PR9PTz/v79////9PT0QS5ujAAAAUlJREFUeNrs2M1y gkAQReFGkT8VTVBEmej7v6Uhe1MuZOA251u6oGBOtyXaSlKxgi7qRTvpZF/f7gN7 aFK9b1Avsurw4UUPjIrQAVLPU73/le8vepjbs5hQ+jD1oFBPud5nNt3LT/fwAPXw ws7hO3p49SHTRL3Fvqff+DMO1POvjn/kYfxR4dufegs6zXfkNu0zhVFGBdQTXe6x Vj+xoEn1vkG9KSSWSQpVBlnUi25vlaSsHOnCcz4P0VbUm4HCSk27ErqoF9vVNprq 8S6924B6zhztrCk/Qxf1Ymst15Tk0EW92BpLAHi3tpOm4gRd1IvtYldN2yt0US+2 3o4AvOutBeBdZw0A7zr7AuBdZxcA3nXWA/AutQ6Ad6n9AHAqq1sWHViA0KcDFh3w bfu36DcAru2HRf8G4Fvzu+h3AL4dWHRgAdbpU4ABAOii/BM5J6lgAAAAAElFTkSu QmCC ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/content-blocks/extended-info-panel-01-header-left.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAArwAAAAhCAMAAAAMA4jFAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGBQTFRF9/f28vLx9fX1/f381tfV6Ojn ///++/v6+vv7w8PCzc3LxsbF7/Du9PTyz9DOxMTD4ODe/P374+Ti2NjW8/Tz7e3s zc7My8vJ0dLP3NzaycnHwsLB+vr6+fn5/v79+/v7Xu7VdQAAAUZJREFUeNrs2stu gzAQheEBAi2YkhjicAmQ93/L0lbqrqipyuLA/0lswIzGoyPkBZZl2ewtXdSAFFuy O4bxAcixbI5jxgDJ8M5mTAGa4fURQ4BoeKNfnXdffrr5/eD17z1sVvywXa+t3tH+ LTweI6DIynECJC3HBoYA0fCWywVIChYDkizE1whQZGlUBkCRpWVIAUVWB34ng+hf ZXVa94Aiu9T9CVBk/aXpAEXW9111AwRZ03RFCwhawlu1AyDITqdicIAg67qWKUA1 vIM7A4KsqggvRMN7K9z5DgiyonX5PR/68OYTQIm1g8tdd50BNbaceN3FMwgIhtc5 VzMGiIa3z560vPZ5bWKz4sfoem317va/hHd6rlySzF9V/Qa9blb8QF2vrd7X/i1v nqvnJ598fLKTxE//PofNih+m67XVu9v/uwADAIOnqVNjD+5YAAAAAElFTkSuQmCC ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/content-blocks/extended-info-panel-01-header-separator.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAB8AAAAhCAIAAACuvOezAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjZJREFUeNq0VouSmkAQ3NldxYsG9coq ///f4qP0SAFGeewrvZC6MhdAwDjlg2Khe7Z7ZoB2ux9KqSzLtNbTKoQQRMQGhGOs +XoCNP6stafTKc/ztyqklJzzgRzt6HWcz+c0TZH+fD6fzWbPE/yFjgB6FEXOueVy GQQBNtFA0KrEI3QEDNjv90VRgAAqTSaTrh10MjWg17Hb7W6327wKEIxTicqybFuD DUmSwIDFYgGVRhBISNy2ttlsoDtsMMaEYTjCZ969vFqtttst0OM4Rk/goCObBmWy 7Nax6r9EcPh4PKAn1us1dtC/3eh6vT4sAkAh68Nhr5R+f/cEzZX6L3qaJn2SqIKh UlFj9Q5qgsaC/DxJUfTRa4+ED0zlx+NRqeKeoOsuCNrXoppA8I/zWRuFXntIIEtV DqgBwBMh8ehnlCSxc2G3ybIsikHo+BFChd9DoKdJCo07Gg25q8H9zQj6vH2b/7pc 4iRBo7WNCqmGKPOJTpq0VtNgmufZ5ZLWs+hPYd2ja23GzW5uuBBmIqdFWVyvt8Zp Kq0ZiY4breFWWAkfSuVRnfvisER/j370WOeMtShKSFWUpWMUBNN7A4Du2PgAIHPW ChAwyvMCM+7eYUxgy9hT+MZL4vwOnPP1XR2DoMrdOfZ0eA981h4NJQ7E2gBPyP5H gECjkDiH136MTXzrPan7V5EEjODkUIdEPv2K8lUhn3/hanvncA+fq/0GQ+t52fe1 aqwy7IXoL82ds1fGbwEGALcQMWj/MJMmAAAAAElFTkSuQmCC ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/content-blocks/extended-info-panel-01-bottom-right.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAMAAACecocUAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADNQTFRF6enp7u7u8/Pz/f396urq+fn5 7Ozs9vb26Ojo+vr68fHx+/v78PDw/v7+6+vr/Pz8////uqVanwAAAD5JREFUeNps yjcOACAQA0GTM3f/fy0ZGlyNrAXvFTB+pvpsxHOW1z05LjYck5U8rUysaTzQXgu3 Qii+awIMAMDXBqLFXF1LAAAAAElFTkSuQmCC ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/content-blocks/extended-info-panel-01-bottom-left.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAMAAACecocUAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADNQTFRF6enp7u7u8/Pz/f396urq+fn5 7Ozs9vb26Ojo+vr68fHx+/v78PDw/v7+6+vr/Pz8////uqVanwAAADxJREFUeNpU yjkSACAIBEHA+2T//1oNLCgn6mAItPCiz1vdnNwy3T5dt7zMkKxmjN1TeAYKxxoJ VjgCDAC/8waiHTSIZwAAAABJRU5ErkJggg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/useraction/action-left.gif Content-Transfer-Encoding: Base64 R0lGODlhBQAcALMPAP39/f7+/srKyvT09PHx8dXV1e3t7fv5+fPz8/r4+MbGxv38 /P79/f////n39////yH5BAEAAA8ALAAAAAAFABwAAAQ28MlJ62RHLudeS9zDcN0Y miUpqugabq8Kd/MDsPiJJ8kTAINBI1AQCBoGhbKBIDgb0EVv0ogAADs= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/useraction/action-middle.gif Content-Transfer-Encoding: Base64 R0lGODlhAwAcAKIHAPHx8f79/cbGxsrKyvT09Pr4+Pn39wAAACH5BAEAAAcALAAA AAADABwAAAMTeLpr/jDKSWstmOjBhQcgVgRkAgA7 ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/useraction/actionDark-left.gif Content-Transfer-Encoding: Base64 R0lGODlhBQAcALMAANvc2b+/vsHBwOLi4Pf19crKyufn5ebm5Ofm5dbW1PHw77i4 t9LS0OHh39na1/n39yH5BAAAAAAALAAAAAAFABwAAAQx0MlJqwRGuUbeA53XeCL5 jCRakoN5mIhrtqmpnnZOAqTWMAGBI1goJBbIhYPBZFgoEQA7 ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/useraction/actionDark-right-addPhoto.gif Content-Transfer-Encoding: Base64 R0lGODlhLgAcANUAAAwsVSZNfw8xWyNJeilRhFNvkWSFrBM1YBEzXgCmUc7OzhY5 Zho+bB5DctLS0iBFddfX19/f39vb2+vr6+fn52KBp1h2ml17oIagu2B/pNjY2NbW 1vDw8OLi4vPz85KuzMbGxsrKyvn39////yJHePHx8SVLffr4+P79/RQ3Yxg8afz9 /hxAb5OuzOPj4/Ly8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAuABwAAAb/QI1wSCQmjsWkcslUHkfI pnTqHFkT1KxGxO16RZ7SM0HQEM7otHqd/Lq7x7J1Tq/brWXiey+SfAyAgYKDhB8j AXp8XwEjBgGPkJGSkwaHiYpdJiMVJp2dVp6hop0VIyaXmCIDmwOtq3d1rgOlA6iY JJskuiMfvb6/viO6JKUktnwUDyMZD828Vr90vSPNDxnUIUOpIhMgDSMXDeK8wCPi 44bnF+YhCkLbIREs4Cz15NH19ob56ywuIO8wTQjxggE4BgjvBUOY0BDDdQxegHCw BZOEDRxUjLCgoqPCaR09GgppYYQKDg4ApnIgYcKCjQtifpw2Z1rMBSUXTJCgUpEH txAUKKTYmKLoTGDTiqYomYJChJ58Nihw4eLAxgNYrcKik/VAyQMuOkB90yFehAgI RhRAwLat27dwC4xAcHbiHg8QQmyQwFeAWgGAAwseTFiuAL4gQrjhwFMvhMcQ/GIo QLmy5cuYMYwQ8BgEiIsbHITwDEKBg9OoHQDYypoOANSjSYdop6C27dsKAOjezbu3 b923R88eTry48ePIk8cmzby58+fQo5NOTb269evYrWvZzr27dyVBAAA7 ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/useraction/actionDark-middle.gif Content-Transfer-Encoding: Base64 R0lGODlhAwAcAKIAALm5uO3r69LS0MHAwMrKytna1/n39wAAACH5BAAAAAAALAAA AAADABwAAAMRWLpr/jDKSWsNeGjCgRcgoyQAOw== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/useraction/action-right-addMarriage.gif Content-Transfer-Encoding: Base64 R0lGODlhLgAcANUvAAwsVSZNfw8xWyJHeCNJeilRhFNvkWSFrPHx8SVLfRM1YBEz Xvr4+ACmUc7Ozv79/RY5Zhg8adLS0hxAbyBFddfX19/f39vb2+vr6/Ly8vv7+/v6 +ufn5/z8/GKBp1d1mFh2mlt6nvf394agu/j4+FVylF59omB/pOLi4vPz85KuzMbG xsrKyvn39////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAC8ALAAAAAAuABwAAAb/wJdwSCQ2jsWkcslUHl3I pnTqdFkb1Oyrxe16u09kYUwum8/JrxqMtLrf8Li1UFzbWwzVYc/v+/8qLgFEd2oB LgcBiouMjY4HgoSFXgkuHgmYmG6ZmlacCR4uCZKTXASWBKmnKqwuqi6sgaoEoQSk pQOWA7uwsYG5vr+7oQO3dwwPFC4nFM29vs+xLs0UJ9PGa8gMyibU0cHQ1CbTLkOl HSQpEy4hE+7r4MEu7xMh81ZCkwwaGRkR7BECBvwGTWBAexE6lNtSaIMIBAj+hTA4 MJ4LihEQilg4SQMCDBgguAABoaRJkfJOmgThAgICjoUecJipwMUHBThz4nzmQqfO ww89McC0swEBiqM1b/rMCavnUpxAFaDAd6eohasWFrgosaCr168uvopdUCKsBRLl iBq9wPaCgK0C4sqdS7duWQEXXjLswmDDAwwVAgt+O8KA4cOIEyse4UJABaEvNEju 0EEEhwoSMmvODECOZ88AMlsod9QCZgeoU6tGDaC169ewY7dOLaEci9u4c+vezbt3 bw0uVggfTry48ePIkWdwAbG58+cQM6SYTr269evYXTDYzr27d4Wfw4d/QL68efML tWQJAgA7 ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/useraction/action-right-addBirth.gif Content-Transfer-Encoding: Base64 R0lGODlhLgAcANUvAAwsVSZNfw8xWyJHeCNJeilRhFNvkWSFrPHx8SVLfRM1YBEz Xvr4+ACmUc7Ozv79/RY5Zho+bB5DctLS0hxAbyBFddfX19/f39vb2+vr6/Ly8vv7 +/v6+ufn5/z8/FZ0lmKBp/f394agu/j4+Fp4nO7u7l59omB/pOLi4vPz85KuzMbG xsrKyvn39////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAC8ALAAAAAAuABwAAAb/wJdwSCQ2jsWkcslUHl3I pnTqdFkb1Oyrxe16u09kYUwum8/JrxqMtLrf8Li1UFzbWwzVYc/v+/8qLgFEd2oB LgcBiouMjY4HgoSFXgkuIAmYmZWam5wJIC4JkpNcBJYEqKmoLqmsqqmgBKOkA5YD t7i4LrW5vaADs3cMDxUuJxXIycouys0VJ8zBa8MMEi4mEtna2i7W298m3S5DpB4j KRTXFOvs6y7s7+3s4enjW4UMGxoaES4kEQAD9gtkJZDAgCRcRPBgbxKHECVK9Pt3 0IWKixgNHkwYIUTDQhsQZMgAwR+EkygtZrzoAiXKhBAQfLzzoINNBS4+KNjJU+VK yhc8eX4AmmHmGg4IUCjFqTPozoIsgTpVMFQBCiv3jiK4wPXCgpwLwooV62as2aEL LowYZwcpCgxwMQhwYUCA3bt48+o14EIABplZuTDg8CCDhcOI54owwLix48eQRfS1 UPTFhssePIToYGGC58+eAcgZPRqA5wvjlF7o7KC169etAcieTbu2bdmuJ4xjwbu3 79/AgwsXvsHFiuPIkytfzrx5cw0uEEifTr06Ag0psmvfzr27dxcMwosfT54h6fPn H6hfz569PS1ZggAAOw== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/useraction/action-right-addDeath.gif Content-Transfer-Encoding: Base64 R0lGODlhLgAcANUvAAwsVSZNfw8xWyJHeCNJeilRhFNvkWSFrCVLfREzXvr4+ACm Uc7Ozv79/RQ3YxY5Zhg8aRo+bB5DctLS0hxAbyBFddfX19/f39vb2+vr6/Ly8vv7 +/v6+ufn5/z8/FZ0lmKBp/f394agu/j4+Fp4nO7u7l59omB/pPDw8OLi4pKuzMbG xsrKyvn39////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAC8ALAAAAAAuABwAAAb/wJdwSCQujsWkcslUHl3I pnTqdFkX1Oyrxe16u09kYUwum8/JrxqMtLrf8Li1UFzbWwrVYc/v+/8qLgFEd2oB LgcBiouMjY4HgoSFXgguIAiYmZlump0gLgiSk1wElgSnqKgugamtnwSiowOWA7W2 tqsut7ufA7F3Cg0VLicVxsdvgW7HxycuFb9rwQoSLiYS2NmrKoHcgdnZJi7VQ6Me IxoU1hTs7clv7e3i6i5CkwobGhoRLiQR/wAB5gpIkISLCB7qbSnEIUSJEhD6QZhI kWKuihgNQgihcFK+DBke9HtAsmTJXCZTGnygoWOhBh1iOnDxwYHNmzdz4dz5wYWD uQwu7XDQkKJoApoJkipVmmup054JUlhZuGbohasXjn5wutQNV6VQL4yoJxRFCgxo MQhwYUCA27dw48o14EIAhpZUuSjg0CCDhb+A14owQLiw4cOIRdS1APTFhscePITo YGGC5cuWAcjZvBmA5Qv1il6ozKC06dOlAahezbq1a9WmJ9RjQbu27du4c+vWvcHF it/AgwsfTrx48Zb6kitfzry58+ctFUifTr16Qs7YsTfYzr17d4VasgQBADs= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/useraction/action-right-addDate.gif Content-Transfer-Encoding: Base64 R0lGODlhLgAcANUvAAwsVSZNfw8xWyJHeCNJeilRhFNvkWSFrPHx8SVLfRM1YBEz Xvr4+ACmUc7Ozv79/RQ3YxY5Zhg8aR5DctLS0iBFddfX19/f39vb2+vr6/Ly8vv7 +/v6+ufn5/z8/FZ0lmKBp/f394agu/j4+Fp4nO7u7l59omB/pOLi4vPz85KuzMbG xsrKyvn39////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAC8ALAAAAAAuABwAAAb/wJdwSCQ2jsWkcslUHl3I pnTqdFkb1Oyrxe16u09kYUwum8/JrxqMtLrf8Li1UFzbWwzVYc/v+/8qLgFEd2oB LgcBiouMjY4HgoSFXgkuIAmYmZoulVaamCCckpNcBJYEqKmoVoEuKoGqBKEEo6QD lgO5uW6vr66+ugOhA7V3DA8VLicVzKyBvc++zMwnLhXFa8cMEy4mE9+/0b5u3+Um LtxDpB4jKdze4L2uvPLlE+fcLkKTDBsaGhJckJBAMOC4N/IKSiDhQoIHfVsKcQhR okTAgQrlsGqokKGEEBAnbUCQIUMEgRFSqkz5huXKlAwjIAhZ6EGHmxBcfIDAs2dP zSs+g0L44AJCBpp2OCBAwVSBTgVQo0a1IrWqAqIKUFiJuEbpha8XFuhcQLYsWRdn zaoluuDCCH1Jl2KYi0GACwMC8urdy7evARcCMMzkyoUBhwcZLChebFeEgceQI0ue LAKwhaMvNmj24CFEBwsUQosODUCj6TgAQl/Qx/QCaAewY8uGDaC27du4c9eOTUEf i9/AgwsfTrx48Q0uVihfzry58+fQoWtwgaC69evYEWhIwb279+/gw7tgQL68+fMP T6vX+KC9+/fvIWrJEgQAOw== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/useraction/actionDark-right-addText.gif Content-Transfer-Encoding: Base64 R0lGODlhLgAcANUAAAwsVSZNfw8xWyJHeCNJeilRhFNvkWSFrCVLfRM1YBEzXgCm Uc7OzhY5Zho+bB5DctLS0iBFddfX19/f39vb2+vr6+fn51h2ml17oGGApoagu9jY 2NbW1pizz/Dw8OLi4vPz85KuzMbGxsrKyvn39/////Hx8fr4+P79/RQ3Yxg8afz9 /hxAb5OuzOPj4/Ly8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAuABwAAAb/wI1wSCwujsWkcslUHkvI pnTqLFkX1Cxpy+1uQabnorApmM/otLrobXePZKt8Tq9byUO3fksJHf6AgYKDISUB eXttASUHAY6PkJGSB4aIiV0IjAibnJ2en5QIlpdbBCUZBKmmdiWqrgQZraOkA6cD t7UhuruFJbi/sQOziRYRpxHIxry7JR0lycmxESNCpFsVIg8lGA/d2iHe3b1W4Q8Y JQ8jDBvWJCMTLNss8/HLyyX08+csLiLspBVGvHCwzYFBgiEOKnRQaOE5By9EQLBG gYMHFSUuqNiI0R6vEhw3XgDpAYIIaxAoVGiQsYFLliFeymxQaObIBhUonLwEQoQF uQspMqYYGtQjM6JDR6awMGFnIg4MXLhIkDGBVaohrlr9qDXByAQuPjjV8+HdhAkK ShhQwDatUV0l2rI1EPfsWC8gJIzgQKGvALUCAv99W0hwYLoC+t7d4kHnXgmQJfzV YKAyXcJqLRvQUEIAZBEfKnKAMEKEaQYQUquGAICV6zoAVJc2LWKEOga4c+tmAKC3 79/Ag/fWbbu48ePIkytfXpy28+fQo0uf7ny19evYs2vHnqW79+/gpwQBADs= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=colored-blocks.css Content-Type: text/css; charset=utf-8; name=colored-blocks.css Content-Location: http://teplice.naseadresa.cz/0000-Global/styles/colored-blocks.css Content-Transfer-Encoding: 8bit /****************************************************************************************/ /* */ /* MojeAdresa.cz website - COLORED BLOCKS */ /* */ /* Version: 2009-01-28 12:00 */ /* Last changed by: Josef Vondracek */ /* */ /****************************************************************************************/ /* SETTINGS OF CONTENT ELEMNTS FOR ALL PANELS ========================================= */ .coloredPanel01 .content, .coloredPanel02 .content, .column3Panel .coloredPanel03 .content, .simpleInfoPanel .content, .simpleInfoColoredPanel .content, .extendedInfoPanel .content, .extendedNewsPanel .content, .gradientPanel01 .content { padding: 0 10px; } .gradientPanel01 #groupsContentPanel, .gradientPanel01 #peopleContentPanel, .gradientPanel01 #localDiscussionContentPanel, .gradientPanel01 #neighbouringDiscussionContentPanel { height:auto; } .column1Panel .gradientPanel01 #peopleContentPanel.content { /*height: 220px;*/ } .column1Panel .gradientPanel01 #peopleContentPanel.content #save2session input { color: #dc632e !important; } .column1Panel .gradientPanel01 #advertsContentPanel.content { height: auto; } /*.column1Panel .gradientPanel01 #advertsContentPanel.content .userAction { margin-top:10px; }*/ .column1Panel .gradientPanel01 #groupsContentPanel.content { /*height: 200px;*/ } .gradientPanel01 #groupsContentPanel.content .recordWithImage .infoBlock, #peopleContentPanel.content .recordWithImage .infoBlock { width:200px; float:left; } .gradientPanel01 #groupsContentPanel.content .recordWithImage .image, #peopleContentPanel.content .recordWithImage .image { width:58px; float:left; } .column1Panel .gradientPanel01 #groupsContentPanel.content #save2session input { color: #dc632e !important; } .column1Panel .gradientPanel01 #localDiscussionContentPanel.content { /*height: 250px;*/ } #bottomColumn1LeftPanel .gradientPanel01 #eshopContentPanel.content { /*height: 240px;*/ } .coloredPanel01 .content h2, .coloredPanel02 .content h2, .simpleInfoPanel .content h2, .simpleInfoColoredPanel .content h2, .extendedInfoPanel .content h2, .extendedNewsPanel .content h2, .gradientPanel01 .content h2 { clear: both; color: #005e82; font-size: 210%; font-family: "Arial", "Tahoma", "Verdana"; font-family: Arial, Tahoma, Verdana; font-weight: bold; } .coloredPanel01 .content h4, .coloredPanel02 .content h4, .simpleInfoPanel .content h4, .simpleInfoColoredPanel .content h4, .extendedInfoPanel .content h4, .extendedNewsPanel .content h4, .gradientPanel01 .content h4 { clear: right; color: #002e67; } .coloredPanel01 .content h4 a, .coloredPanel02 .content h4 a, .simpleInfoPanel .content h4 a, .simpleInfoColoredPanel .content h4 a, .extendedInfoPanel .content h4 a, .extendedNewsPanel .content h4 a, .gradientPanel01 .content h4 a { clear: right; color: #005E82; text-decoration: none; } .coloredPanel01 .content h4 a:hover, .coloredPanel02 .content h4 a:hover, .simpleInfoPanel .content h4 a:hover, .simpleInfoColoredPanel .content h4 a:hover, .extendedInfoPanel .content h4 a:hover, .extendedNewsPanel .content h4 a:hover, .gradientPanel01 .content h4 a:hover { clear: right; color: #005E82; text-decoration: underline; } .coloredPanel01 .content h3, .coloredPanel02 .content h3, .simpleInfoPanel .content h3, .simpleInfoColoredPanel .content h3, .extendedInfoPanel .content h3, .extendedNewsPanel .content h3, .gradientPanel01 .content h3 { margin: 0 0 7px 0; color: #002e67; font-family: "Arial", "Tahoma", "Verdana"; font-family: Arial, Tahoma, Verdana; font-size: 150%; } .coloredPanel01 .content .imgFloatLeft, .coloredPanel02 .content .imgFloatLeft, .simpleInfoPanel .content .imgFloatLeft, .simpleInfoColoredPanel .content .imgFloatLeft, .extendedInfoPanel .content .imgFloatLeft, .extendedNewsPanel .content .imgFloatLeft, .gradientPanel01 .content .imgFloatLeft { margin: 0 10px 0 0; float: left; } .coloredPanel01 .content .allInfoLink, .coloredPanel01 .content .allInfoLinkLeft, .coloredPanel02 .content .allInfoLink, .coloredPanel02 .content .allInfoLinkLeft, .coloredPanel03 .content .allInfoLink, .coloredPanel03 .content .allInfoLinkLeft, .coloredPanel21 .content .allInfoLink, .coloredPanel23 .content .allInfoLink, .simpleInfoPanel .content .allInfoLink, .simpleInfoPanel .content .allInfoLinkLeft, .simpleInfoColoredPanel .content .allInfoLink, .simpleInfoColoredPanel .content .allInfoLinkLeft, .extendedInfoPanel .content .allInfoLink, .extendedInfoPanel .content .allInfoLinkLeft, .extendedNewsPanel .content .allInfoLink, .extendedNewsPanel .content .allInfoLinkLeft, .gradientPanel01 .content .allInfoLink, .gradientPanel01 .content .allInfoLinkLeft, .main .allInfoLink, .main .allInfoLinkLeft { float: right; display: block; clear: both; background: transparent; color: #dc632e; text-decoration: underline; } .coloredPanel01 .content .allInfoLink:hover, .coloredPanel01 .content .allInfoLinkLeft:hover, .coloredPanel02 .content .allInfoLink:hover, .coloredPanel02 .content .allInfoLinkLeft:hover, .coloredPanel03 .content .allInfoLink:hover, .coloredPanel03 .content .allInfoLinkLeft:hover, .coloredPanel21 .content .allInfoLink:hover, .coloredPanel23 .content .allInfoLink:hover, .simpleInfoPanel .content .allInfoLink:hover, .simpleInfoPanel .content .allInfoLinkLeft:hover, .simpleInfoColoredPanel .content .allInfoLink:hover, .simpleInfoColoredPanel .content .allInfoLinkLeft:hover, .extendedInfoPanel .content .allInfoLink:hover, .extendedInfoPanel .content .allInfoLinkLeft:hover, .extendedNewsPanel .content .allInfoLink:hover, .extendedNewsPanel .content .allInfoLinkLeft:hover, .gradientPanel01 .content .allInfoLink:hover, .gradientPanel01 .content .allInfoLinkLeft:hover { text-decoration: none; } .coloredPanel01 .content .allInfoLinkLeft, .coloredPanel02 .content .allInfoLinkLeft, .simpleInfoPanel .content .allInfoLinkLeft, .simpleInfoColoredPanel .content .allInfoLinkLeft, .extendedInfoPanel .content .allInfoLinkLeft, .extendedNewsPanel .content .allInfoLinkLeft, .gradientPanel01 .content .allInfoLinkLeft { float: left; } .coloredPanel01 .content .subHeader, .coloredPanel01 .content .nextSubHeader, .coloredPanel02 .content .subHeader, .coloredPanel02 .content .nextSubHeader, .simpleInfoPanel .content .subHeader, .simpleInfoPanel .content .nextSubHeader, .simpleInfoColoredPanel .content .subHeader, .simpleInfoColoredPanel .content .nextSubHeader, .extendedInfoPanel .content .subHeader, .extendedInfoPanel .content .nextSubHeader, .extendedNewsPanel .content .subHeader, .extendedNewsPanel .content .nextSubHeader, .gradientPanel01 .content .subHeader, .gradientPanel01 .content .nextSubHeader { width:320px; margin:0 12px; padding:6px; border-bottom: 1px dotted #c1c1c1; font-size:10px; text-align:left; } .coloredPanel01 .content .nextSubHeader, .coloredPanel02 .content .nextSubHeader, .simpleInfoPanel .content .nextSubHeader, .simpleInfoColoredPanel .content .nextSubHeader, .extendedInfoPanel .content .nextSubHeader, .extendedNewsPanel .content .nextSubHeader, .gradientPanel01 .content .nextSubHeader { margin-top: 8px; } .coloredPanel01 .content .space, .coloredPanel02 .content .space, .simpleInfoPanel .content .space, .simpleInfoColoredPanel .content .space, .extendedInfoPanel .content .space, .extendedNewsPanel .content .space, .gradientPanel01 .content .space { height:6px; line-height:6px; font-size:6px; } .column3Panel .coloredPanel03 .content .subHeader { padding:4px 0 20px 8px; color:#0089d5; font-size:12px; text-align:left; } .extendedInfoPanel .header .rss { float:left; position:relative; left:4px; top:-1px; } .extendedInfoPanel .header .headerWithRss { float:left; } .coloredPanel01 .content ul, .coloredPanel02 .content ul, .simpleInfoPanel .content ul, .simpleInfoColoredPanel .content ul, .extendedInfoPanel .content ul, .extendedNewsPanel .content ul, .column3Panel .coloredPanel03 .content ul, .gradientPanel01 .content ul { padding: 5px 0; list-style: none; } .coloredPanel01 .content ul.ulReplacement, .coloredPanel02 .content ul.ulReplacement, .simpleInfoPanel .content ul.ulReplacement, .simpleInfoColoredPanel .content ul.ulReplacement, .extendedInfoPanel .content ul.ulReplacement, .extendedNewsPanel .content ul.ulReplacement, .column3Panel .coloredPanel03 .content ul.ulReplacement, .gradientPanel01 .content ul.ulReplacement { padding: 0; } .extendedInfoPanel .content ul, .extendedNewsPanel .content ul, .column3Panel .coloredPanel03 .content ul { margin-left:10px; padding-bottom:0; list-style: none; text-align:left; } .extendedInfoPanel .content ul.ulReplacement, .extendedNewsPanel .content ul.ulReplacement, .column3Panel .coloredPanel03 .content ul.ulReplacement { margin: 0; } .coloredPanel01 .content ul li, .coloredPanel02 .content ul li, .simpleInfoPanel .content ul li, .simpleInfoColoredPanel .content ul li, .extendedInfoPanel .content ul li, .extendedNewsPanel .content ul li, .column3Panel .coloredPanel03 .content ul li, .gradientPanel01 .content ul li { padding: 1px 0; } .coloredPanel01 .content ul.ulReplacement li, .coloredPanel02 .content ul.ulReplacement li, .simpleInfoPanel .content ul.ulReplacement li, .simpleInfoColoredPanel .content ul.ulReplacement li, .extendedInfoPanel .content ul.ulReplacement li, .extendedNewsPanel .content ul.ulReplacement li, .column3Panel .coloredPanel03 .content ul.ulReplacement li, .gradientPanel01 .content ul.ulReplacement li { padding: 0 0 0 13px; } .column3Panel .coloredPanel03 .content ul.styled li, .extendedInfoPanel .content ul.styled li, .extendedNewsPanel .content ul.styled li { padding-top:4px; background: url(../images/design/icons/ul-arrow.gif) no-repeat left 7px; } .coloredPanel01 .content ul li a, .coloredPanel02 .content ul li a, .simpleInfoPanel .content ul li a, .simpleInfoColoredPanel .content ul li a, .extendedInfoPanel .content ul li a, .extendedNewsPanel .content ul li a, .column3Panel .coloredPanel03 .content ul li a, .gradientPanel01 .content ul li a { padding: 0 0 0 10px; color: #005E82; font-weight: bold; text-decoration: none; } .coloredPanel01 .content ul li a:hover, .coloredPanel02 .content ul li a:hover, .simpleInfoPanel .content ul li a:hover, .simpleInfoColoredPanel .content ul li a:hover, .extendedInfoPanel .content ul li a:hover, .extendedNewsPanel .content ul li a:hover, .column3Panel .coloredPanel03 .content ul li a:hover, .gradientPanel01 .content ul li a:hover { text-decoration:underline; } .extendedInfoPanel .content a#otherArticles, .extendedNewsPanel .content a#otherArticles { margin-right: 18px; color:#dc632e; font-weight:normal; } .coloredPanel01 .content .arrow a, .coloredPanel02 .content .arrow a, .simpleInfoPanel .content .arrow a, .simpleInfoColoredPanel .content .arrow a, .extendedInfoPanel .content .arrow a, .gradientPanel01 .content .arrow a { background: url(../images/design/icons/ul-arrow.gif) no-repeat left 3px; } .coloredPanel01 .content .arrow a:hover, .coloredPanel02 .content .arrow a:hover, .simpleInfoPanel .content .arrow a:hover, .simpleInfoColoredPanel .content .arrow a:hover, .extendedInfoPanel .content .arrow a:hover, .gradientPanel01 .content .arrow a:hover { text-decoration:underline; } .coloredPanel01 .content .arrowBlue a, .coloredPanel02 .content .arrowBlue a, .simpleInfoPanel .content .arrowBlue a, .simpleInfoColoredPanel .content .arrowBlue a, .extendedInfoPanel .content .arrowBlue a, .gradientPanel01 .content .arrowBlue a { background: url(../images/design/icons/ul-arrow-blue.gif) no-repeat left 3px; } .coloredPanel01 .content .arrowBlue a:hover, .coloredPanel02 .content .arrowBlue a:hover, .simpleInfoPanel .content .arrowBlue a:hover, .simpleInfoColoredPanel .content .arrowBlue a:hover, .extendedInfoPanel .content .arrowBlue a:hover, .gradientPanel01 .content .arrowBlue a:hover { background: url(../images/design/icons/ul-arrow-blue.gif) no-repeat left 3px; } .extendedInfoPanel .content .noLeftMargin .arrow { margin-left: 0px; } .coloredPanel01 .content .dot a, .coloredPanel02 .content .dot a, .simpleInfoPanel .content .dot a, .simpleInfoColoredPanel .content .dot a, .extendedInfoPanel .content .dot a, .gradientPanel01 .content .dot a { background: url(../images/design/icons/ul-dot.gif) no-repeat left 3px; } .extendedInfoPanel .content .bannerAlign { padding-left:50px; } .advertAlign { width:82%; margin:0 auto; } /* ================================================== */ .coloredPanel01 .content .sourcePanel, .coloredPanel02 .content .sourcePanel, .simpleInfoPanel .content .sourcePanel, .simpleInfoColoredPanel .content .sourcePanel, .extendedInfoPanel .content .sourcePanel, .gradientPanel01 .content .sourcePanel { width: auto; padding: 0 0 5px 0; font-size: 90%; font-family: Tahoma, Arial; font-family: "Tahoma", "Arial"; } .coloredPanel01 .content .sourcePanel .place, .coloredPanel02 .content .sourcePanel .place, .simpleInfoPanel .content .sourcePanel .place, .simpleInfoColoredPanel .content .sourcePanel .place, .extendedInfoPanel .content .sourcePanel .place, .gradientPanel01 .content .sourcePanel .place { color: #dc632e; /*font-weight: bold;*/ } .coloredPanel01 .content .sourcePanel .date, .coloredPanel02 .content .sourcePanel .date, .simpleInfoPanel .content .sourcePanel .date, .simpleInfoColoredPanel .content .sourcePanel .date, .extendedInfoPanel .content .sourcePanel .date, .gradientPanel01 .content .sourcePanel .date { color: #767676; } .coloredPanel01 .content .sourcePanel .author, .coloredPanel02 .content .sourcePanel .author, .simpleInfoPanel .content .sourcePanel .author, .simpleInfoColoredPanel .content .sourcePanel .author, .extendedInfoPanel .content .sourcePanel .author, .gradientPanel01 .content .sourcePanel .author { float: right; color: #767676; } .coloredPanel01 .content .sourcePanel .author a, .coloredPanel02 .content .sourcePanel .author a, .simpleInfoPanel .content .sourcePanel .author a, .simpleInfoColoredPanel .content .sourcePanel .author a, .extendedInfoPanel .content .sourcePanel .author a, .gradientPanel01 .content .sourcePanel .author a { color: #767676; text-decoration: underline; } .coloredPanel01 .content .sourcePanel .author a:hover, .coloredPanel02 .content .sourcePanel .author a:hover, .simpleInfoPanel .content .sourcePanel .author a:hover, .simpleInfoColoredPanel .content .sourcePanel .author a:hover, .extendedInfoPanel .content .sourcePanel .author a:hover, .gradientPanel01 .content .sourcePanel .author a:hover { text-decoration: none; } /* ================================================== */ .coloredPanel01 .content .left, .coloredPanel02 .content .left, .simpleInfoPanel .content .left, .simpleInfoColoredPanel .content .left, .extendedInfoPanel .content .left, .gradientPanel01 .content .left { width: 95px; display: block; overflow: hidden; position: relative; } .coloredPanel01 .content .right, .coloredPanel02 .content .right, .simpleInfoPanel .content .right, .simpleInfoColoredPanel .content .right, .extendedInfoPanel .content .right, .gradientPanel01 .content .right { width: 260px; float: right; display: block; overflow: hidden; } /* ================================================== */ .extendedInfoPanel .content .left .topButton, .extendedInfoPanel .content .left .bottomButton { width: 15px; height: 14px; position: absolute; left: 38px; top: 1px; cursor:hand; cursor:pointer; } .extendedInfoPanel .content .left .bottomButton { top: 220px; } .coloredPanel01 .content .menuList, .coloredPanel02 .content .menuList, .simpleInfoPanel .content .menuList, .simpleInfoColoredPanel .content .menuList, .extendedInfoPanel .content .menuList, .gradientPanel01 .content .menuList { list-style: none; font-size: 90%; } .extendedInfoPanel .content .menuList { width: 85px; margin: 0; padding: 5px 0 5px 5px; position: relative; background: #fafafa; } .extendedInfoPanel .content .overflowMask { width: 95px; height: 205px; margin: 15px 0; overflow: hidden; position: relative; } .coloredPanel01 .content .menuList li, .coloredPanel02 .content .menuList li, .simpleInfoPanel .content .menuList li, .simpleInfoColoredPanel .content .menuList li, .extendedInfoPanel .content .menuList li, .gradientPanel01 .content .menuList li { display: block; } .coloredPanel01 .content .menuList li a, .coloredPanel02 .content .menuList li a, .simpleInfoPanel .content .menuList li a, .simpleInfoColoredPanel .content .menuList li a, .extendedInfoPanel .content .menuList li a, .gradientPanel01 .content .menuList li a { padding: 2px 0 2px 0; display: block; background: url(../images/design/separator.png) no-repeat left bottom; color: black; font-weight: normal; text-transform: uppercase; } .coloredPanel01 .content .menuList .selected ul a, .coloredPanel02 .content .menuList .selected ul a, .simpleInfoPanel .content .menuList .selected ul a, .simpleInfoColoredPanel .content .menuList .selected ul a, .extendedInfoPanel .content .menuList .selected ul a, .gradientPanel01 .content .menuList .selected ul a { padding: 1px 0 1px 17px; display: block; background: url(../images/design/icons/ul-dot-small.gif) no-repeat 10px 9px; color: black; text-transform: uppercase; } .coloredPanel01 .content .menuList .selected .actual, .coloredPanel02 .content .menuList .selected .actual, .simpleInfoPanel .content .menuList .selected .actual, .simpleInfoColoredPanel .content .menuList .selected .actual, .extendedInfoPanel .content .menuList .selected .actual, .gradientPanel01 .content .menuList .selected .actual { color: #002e67; font-weight: bold; } .coloredPanel01 .content .menuList .selected .actualSub, .coloredPanel02 .content .menuList .selected .actualSub, .simpleInfoPanel .content .menuList .selected .actualSub, .simpleInfoColoredPanel .content .menuList .selected .actualSub, .extendedInfoPanel .content .menuList .selected .actualSub, .gradientPanel01 .content .menuList .selected .actualSub { color: #002e67; } /* ================================================== */ .coloredPanel01 .content .editFolder, .coloredPanel02 .content .editFolder, .coloredPanel03 .content .editFolder, .simpleInfoPanel .content .editFolder, .simpleInfoColoredPanel .content .editFolder, .extendedInfoPanel .content .editFolder, .gradientPanel01 .content .editFolder { padding: 0px 0px 0px 15px; background: url(../images/design/icons/edit.gif) no-repeat left center; color: #002e67; text-decoration: none; } .coloredPanel01 .content .groupLink, .coloredPanel02 .content .groupLink, .coloredPanel03 .content .groupLink, .simpleInfoPanel .content .groupLink, .simpleInfoColoredPanel .content .groupLink, .extendedInfoPanel .content .groupLink, .gradientPanel01 .content .groupLink { padding: 4px 25px 4px 0; float: right; display: block; clear: both; background: url(../images/design/icons/group.png) no-repeat right center; color: #dc632e; text-decoration: underline; text-align: right; } .coloredPanel01 .content .personLink, .coloredPanel02 .content .personLink, .coloredPanel03 .content .personLink, .simpleInfoPanel .content .personLink, .simpleInfoColoredPanel .content .personLink, .extendedInfoPanel .content .personLink, .gradientPanel01 .content .personLink { padding: 4px 25px 4px 0; float: right; display: block; clear: both; background: url(../images/design/icons/person.png) no-repeat right center; color: #dc632e; text-decoration: underline; text-align: right; } .coloredPanel01 .content .createLink, .coloredPanel02 .content .createLink, .coloredPanel03 .content .createLink, .simpleInfoPanel .content .createLink, .simpleInfoColoredPanel .content .createLink, .extendedInfoPanel .content .createLink, .gradientPanel01 .content .createLink { padding: 6px 25px 2px 0; float: right; display: block; clear: both; background: url(../images/design/icons/new-record.png) no-repeat right top; color: #dc632e; text-decoration: underline; text-align: right; } .coloredPanel01 .content .cartLink, .coloredPanel02 .content .cartLink, .coloredPanel03 .content .cartLink, .simpleInfoPanel .content .cartLink, .simpleInfoColoredPanel .content .cartLink, .extendedInfoPanel .content .cartLink, .gradientPanel01 .content .cartLink { padding: 4px 25px 4px 0; float: right; display: block; clear: both; background: url(../images/design/icons/cart.gif) no-repeat right top; color: #dc632e; text-decoration: underline; text-align: right; } .coloredPanel01 .content .pencilLink, .coloredPanel02 .content .pencilLink, .coloredPanel03 .content .pencilLink, .simpleInfoPanel .content .pencilLink, .simpleInfoColoredPanel .content .pencilLink, .extendedInfoPanel .content .pencilLink, .gradientPanel01 .content .pencilLink { padding: 4px 25px 4px 0; float: right; display: block; clear: both; background: url(../images/design/icons/pencil.png) no-repeat right top; color: #dc632e; text-decoration: underline; text-align: right; } .coloredPanel01 .content .addLink, .coloredPanel02 .content .addLink, .coloredPanel03 .content .addLink, .simpleInfoPanel .content .addLink, .simpleInfoColoredPanel .content .addLink, .extendedInfoPanel .content .addLink, .gradientPanel01 .content .addLink { width: 90%; padding: 1px 25px 1px 0; float: right; display: block; clear: both; background: url(../images/design/icons/add.png) no-repeat right center; color: #dc632e; text-decoration: underline; text-align: right; } .coloredPanel01 .content .detailMessage, .coloredPanel02 .content .detailMessage, .coloredPanel03 .content .detailMessage, .simpleInfoPanel .content .detailMessage, .simpleInfoColoredPanel .content .detailMessage, .extendedInfoPanel .content .detailMessage, .gradientPanel01 .content .detailMessage { padding: 0px 0px 0px 15px; background: url(../images/design/icons/detailMessage.png) no-repeat left center; color: #002e67; text-decoration: none; } .coloredPanel01 .content .answerListIcon, .coloredPanel02 .content .answerListIcon, .coloredPanel03 .content .answerListIcon, .simpleInfoPanel .content .answerListIcon, .simpleInfoColoredPanel .content .answerListIcon, .extendedInfoPanel .content .answerListIcon, .gradientPanel01 .content .answerListIcon { padding: 0px 0px 0px 15px; background: url(../images/design/icons/answer-list.gif) no-repeat left center; color: #002e67; text-decoration: none; } .coloredPanel01 .content .deactivate, .coloredPanel02 .content .deactivate, .coloredPanel03 .content .deactivate, .simpleInfoPanel .content .deactivate, .simpleInfoColoredPanel .content .deactivate, .extendedInfoPanel .content .deactivate, .gradientPanel01 .content .deactivate { padding: 0px 0px 0px 20px; background: url(../images/design/icons/deactivate.gif) no-repeat left center; color: #002e67; text-decoration: none; } .coloredPanel01 .content .deleteAdvertisment, .coloredPanel02 .content .deleteAdvertisment, .coloredPanel03 .content .deleteAdvertisment, .simpleInfoPanel .content .deleteAdvertisment, .simpleInfoColoredPanel .content .deleteAdvertisment, .extendedInfoPanel .content .deleteAdvertisment, .gradientPanel01 .content .deleteAdvertisment { padding: 0px 0px 0px 16px; background: url(../images/design/icons/delete-advertisment.gif) no-repeat left center; color: #002e67; text-decoration: none; } .coloredPanel01 .content .editBanner, .coloredPanel02 .content .editBanner, .coloredPanel03 .content .editBanner, .simpleInfoPanel .content .editBanner, .simpleInfoColoredPanel .content .editBanner, .extendedInfoPanel .content .editBanner, .gradientPanel01 .content .editBanner { padding: 0px 0px 0px 14px; background: url(../images/design/icons/edit-banner.gif) no-repeat left center; color: #002e67; text-decoration: none; } .coloredPanel01 .content .detailBanner, .coloredPanel02 .content .detailBanner, .coloredPanel03 .content .detailBanner, .simpleInfoPanel .content .detailBanner, .simpleInfoColoredPanel .content .detailBanner, .extendedInfoPanel .content .detailBanner, .gradientPanel01 .content .detailBanner { padding: 0px 0px 0px 19px; background: url(../images/design/icons/magnifier.gif) no-repeat left center; color: #002e67; text-decoration: none; } .coloredPanel01 .content .deleteMessage, .coloredPanel02 .content .deleteMessage, .coloredPanel03 .content .deleteMessage, .simpleInfoPanel .content .deleteMessage, .simpleInfoColoredPanel .content .deleteMessage, .extendedInfoPanel .content .deleteMessage, .gradientPanel01 .content .deleteMessage { padding: 0px 0px 0px 20px; background: url(../images/design/icons/deleteMessage.png) no-repeat left center; color: #002e67; text-decoration: none; } .coloredPanel01 .content .detailUser, .coloredPanel02 .content .detailUser, .coloredPanel03 .content .detailUser, .simpleInfoPanel .content .detailUser, .simpleInfoColoredPanel .content .detailUser, .extendedInfoPanel .content .detailUser, .gradientPanel01 .content .detailUser { padding: 0px 0px 0px 15px; background: url(../images/design/icons/detailUser.png) no-repeat left center; color: #002e67; text-decoration: none; } .coloredPanel01 .content .accept, .coloredPanel02 .content .accept, .coloredPanel03 .content .accept, .simpleInfoPanel .content .accept, .simpleInfoColoredPanel .content .accept, .extendedInfoPanel .content .accept, .gradientPanel01 .content .accept { padding: 0px 0px 0px 15px; background: url(../images/design/icons/accept.png) no-repeat left center; color: #002e67; text-decoration: none; } .coloredPanel01 .content .detailGroup, .coloredPanel02 .content .detailGroup, .coloredPanel03 .content .detailGroup, .simpleInfoPanel .content .detailGroup, .simpleInfoColoredPanel .content .detailGroup, .extendedInfoPanel .content .detailGroup, .gradientPanel01 .content .detailGroup { padding: 0px 0px 0px 15px; background: url(../images/design/icons/detailGroup.png) no-repeat left center; color: #002e67; text-decoration: none; } .coloredPanel01 .content .editGroup, .coloredPanel02 .content .editGroup, .coloredPanel03 .content .editGroup, .simpleInfoPanel .content .editGroup, .simpleInfoColoredPanel .content .editGroup, .extendedInfoPanel .content .editGroup, .gradientPanel01 .content .editGroup { padding: 0px 0px 0px 15px; background: url(../images/design/icons/editGroup.png) no-repeat left center; color: #002e67; text-decoration: none; } .coloredPanel01 .content .writeMessage, .coloredPanel02 .content .writeMessage, .coloredPanel03 .content .writeMessage, .simpleInfoPanel .content .writeMessage, .simpleInfoColoredPanel .content .writeMessage, .extendedInfoPanel .content .writeMessage, .gradientPanel01 .content .writeMessage { padding: 0px 0px 0px 25px; background: url(../images/design/icons/writeMessage.png) no-repeat left center; color: #002e67; text-decoration: none; } .coloredPanel01 .content .eraseUser, .coloredPanel02 .content .eraseUser, .coloredPanel03 .content .eraseUser, .simpleInfoPanel .content .eraseUser, .simpleInfoColoredPanel .content .eraseUser, .extendedInfoPanel .content .eraseUser, .gradientPanel01 .content .eraseUser { padding: 0px 0px 0px 25px; background: url(../images/design/icons/eraseUser.png) no-repeat left center; color: #002e67; text-decoration: none; } .coloredPanel01 .content .addUser, .coloredPanel02 .content .addUser, .coloredPanel03 .content .addUser, .simpleInfoPanel .content .addUser, .simpleInfoColoredPanel .content .addUser, .extendedInfoPanel .content .addUser, .gradientPanel01 .content .addUser { /*padding: 0px 0px 0px 25px;*/ background: url(../images/design/icons/addUser.png) no-repeat left center; color: #002e67; text-decoration: none; } .coloredPanel01 .content .document, .coloredPanel02 .content .document, .coloredPanel03 .content .document, .simpleInfoPanel .content .document, .simpleInfoColoredPanel .content .document, .extendedInfoPanel .content .document, .gradientPanel01 .content .document { padding: 0px 0px 0px 15px; background: url(../images/design/icons/document.png) no-repeat left center; color: #002e67; text-decoration: none; } .coloredPanel01 .content .list, .coloredPanel02 .content .list, .coloredPanel03 .content .list, .simpleInfoPanel .content .list, .simpleInfoColoredPanel .content .list, .extendedInfoPanel .content .list, .gradientPanel01 .content .list { padding: 0px 0px 0px 15px; background: url(../images/design/icons/list.png) no-repeat left center; color: #002e67; text-decoration: none; } .coloredPanel01 .content .form, .coloredPanel02 .content .form, .coloredPanel03 .content .form, .simpleInfoPanel .content .form, .simpleInfoColoredPanel .content .form, .extendedInfoPanel .content .form, .gradientPanel01 .content .form { padding: 0px 0px 0px 20px; background: url(../images/design/icons/form.png) no-repeat left center; color: #002e67; text-decoration: none; } .coloredPanel01 .content .unfit, .coloredPanel02 .content .unfit, .coloredPanel03 .content .unfit, .simpleInfoPanel .content .unfit, .simpleInfoColoredPanel .content .unfit, .extendedInfoPanel .content .unfit, .gradientPanel01 .content .unfit { padding: 0px 0px 0px 15px; background: url(../images/design/icons/unfit.png) no-repeat left center; color: #002e67; text-decoration: none; } .coloredPanel01 .content .back, .coloredPanel02 .content .back, .coloredPanel03 .content .back, .simpleInfoPanel .content .back, .simpleInfoColoredPanel .content .back, .extendedInfoPanel .content .back, .gradientPanel01 .content .back { padding: 0px 0px 0px 15px; background: url(../images/design/icons/back.png) no-repeat left center; color: #002e67; text-decoration: none; } .coloredPanel01 .content .rating, .coloredPanel02 .content .rating, .coloredPanel03 .content .rating, .simpleInfoPanel .content .rating, .simpleInfoColoredPanel .content .rating, .extendedInfoPanel .content .rating, .gradientPanel01 .content .rating { padding: 0px 0px 0px 15px; background: url(../images/design/icons/starLight.png) no-repeat left center; color: #002e67; text-decoration: none; } /* ================================================== */ .coloredPanel01 .content .recordWithImage, .coloredPanel02 .content .recordWithImage, .simpleInfoPanel .content .recordWithImage, .simpleInfoColoredPanel .content .recordWithImage, .extendedInfoPanel .content .recordWithImage, .gradientPanel01 .content .recordWithImage, .coloredPanel01 .content .recordWithImageLast, .coloredPanel02 .content .recordWithImageLast, .simpleInfoPanel .content .recordWithImageLast, .simpleInfoColoredPanel .content .recordWithImageLast, .extendedInfoPanel .content .recordWithImageLast, .gradientPanel01 .content .recordWithImageLast { width: 100%; padding: 7px 0; clear: both; border-bottom: 1px dotted #c1c1c1; } .coloredPanel01 .content .recordWithImageLast, .coloredPanel02 .content .recordWithImageLast, .simpleInfoPanel .content .recordWithImageLast, .simpleInfoColoredPanel .content .recordWithImageLast, .extendedInfoPanel .content .recordWithImageLast, .gradientPanel01 .content .recordWithImageLast { border: none; } .coloredPanel01 .content .recordWithImage h4, .coloredPanel02 .content .recordWithImage h4, .simpleInfoPanel .content .recordWithImage h4, .simpleInfoColoredPanel .content .recordWithImage h4, .extendedInfoPanel .content .recordWithImage h4, .gradientPanel01 .content .recordWithImage h4, .coloredPanel01 .content .recordWithImageLast h4, .coloredPanel02 .content .recordWithImageLast h4, .simpleInfoPanel .content .recordWithImageLast h4, .simpleInfoColoredPanel .content .recordWithImageLast h4, .extendedInfoPanel .content .recordWithImageLast h4, .gradientPanel01 .content .recordWithImageLast h4 { padding: 0 0 2px 0; display: block; clear: right; color: #005e82; } .coloredPanel01 .content .recordWithImage h4 a, .coloredPanel02 .content .recordWithImage h4 a, .simpleInfoPanel .content .recordWithImage h4 a, .simpleInfoColoredPanel .content .recordWithImage h4 a, .extendedInfoPanel .content .recordWithImage h4 a, .gradientPanel01 .content .recordWithImage h4 a, .coloredPanel01 .content .recordWithImageLast h4 a, .coloredPanel02 .content .recordWithImageLast h4 a, .simpleInfoPanel .content .recordWithImageLast h4 a, .simpleInfoColoredPanel .content .recordWithImageLast h4 a, .extendedInfoPanel .content .recordWithImageLast h4 a, .gradientPanel01 .content .recordWithImageLast h4 a { color: #005e82; text-decoration: none; } .coloredPanel01 .content .recordWithImage h4 a:hover, .coloredPanel02 .content .recordWithImage h4 a:hover, .simpleInfoPanel .content .recordWithImage h4 a:hover, .simpleInfoColoredPanel .content .recordWithImage h4 a:hover, .extendedInfoPanel .content .recordWithImage h4 a:hover, .gradientPanel01 .content .recordWithImage h4 a:hover, .coloredPanel01 .content .recordWithImageLast h4 a:hover, .coloredPanel02 .content .recordWithImageLast h4 a:hover, .simpleInfoPanel .content .recordWithImageLast h4 a:hover, .simpleInfoColoredPanel .content .recordWithImageLast h4 a:hover, .extendedInfoPanel .content .recordWithImageLast h4 a:hover, .gradientPanel01 .content .recordWithImageLast h4 a:hover { text-decoration: underline; } .simpleInfoPanel .content .recordWithImage p { padding:5px 0; } .coloredPanel01 .content .recordWithImage .infoBlock, .coloredPanel02 .content .recordWithImage .infoBlock, .simpleInfoPanel .content .recordWithImage .infoBlock, .simpleInfoColoredPanel .content .recordWithImage .infoBlock, .extendedInfoPanel .content .recordWithImage .infoBlock, .gradientPanel01 .content .recordWithImage .infoBlock, .coloredPanel01 .content .recordWithImageLast .infoBlock, .coloredPanel02 .content .recordWithImageLast .infoBlock, .simpleInfoPanel .content .recordWithImageLast .infoBlock, .simpleInfoColoredPanel .content .recordWithImageLast .infoBlock, .extendedInfoPanel .content .recordWithImageLast .infoBlock, .gradientPanel01 .content .recordWithImageLast .infoBlock { width: 210px; font-size: 95%; /*font-size: 90%;*/ } .column3Panel #mostReadedBlogs.extendedInfoPanel .content .recordWithImage .infoBlock { width:290px; float:left; } .column3Panel #mostReadedBlogs.extendedInfoPanel .content .recordWithImage .image { width:58px; float:left; overflow:hidden; } .coloredPanel01 .content .recordWithImage .grey, .coloredPanel02 .content .recordWithImage .grey, .simpleInfoPanel .content .recordWithImage .grey, .simpleInfoColoredPanel .content .recordWithImage .grey, .extendedInfoPanel .content .recordWithImage .grey, .gradientPanel01 .content .recordWithImage .grey, .coloredPanel01 .content .recordWithImageLast .grey, .coloredPanel02 .content .recordWithImageLast .grey, .simpleInfoPanel .content .recordWithImageLast .grey, .simpleInfoColoredPanel .content .recordWithImageLast .grey, .extendedInfoPanel .content .recordWithImageLast .grey, .gradientPanel01 .content .recordWithImageLast .grey { padding: 0 0 2px 0; clear: right; color: #767676; font-size: 90%; } .coloredPanel01 .content .recordWithImage .green, .coloredPanel02 .content .recordWithImage .green, .simpleInfoPanel .content .recordWithImage .green, .simpleInfoColoredPanel .content .recordWithImage .green, .extendedInfoPanel .content .recordWithImage .green, .gradientPanel01 .content .recordWithImage .green, .coloredPanel01 .content .recordWithImageLast .green, .coloredPanel02 .content .recordWithImageLast .green, .simpleInfoPanel .content .recordWithImageLast .green, .simpleInfoColoredPanel .content .recordWithImageLast .green, .extendedInfoPanel .content .recordWithImageLast .green, .gradientPanel01 .content .recordWithImageLast .green { color: #73aa37; } .coloredPanel01 .content .recordWithImage .orange, .coloredPanel02 .content .recordWithImage .orange, .simpleInfoPanel .content .recordWithImage .orange, .simpleInfoColoredPanel .content .recordWithImage .orange, .extendedInfoPanel .content .recordWithImage .orange, .gradientPanel01 .content .recordWithImage .orange, .coloredPanel01 .content .recordWithImageLast .orange, .coloredPanel02 .content .recordWithImageLast .orange, .simpleInfoPanel .content .recordWithImageLast .orange, .simpleInfoColoredPanel .content .recordWithImageLast .orange, .extendedInfoPanel .content .recordWithImageLast .orange, .gradientPanel01 .content .recordWithImageLast .orange { color: #dc632e; font-weight: bold; } .coloredPanel01 .content .recordWithImage .lastComment, .coloredPanel02 .content .recordWithImage .lastComment, .simpleInfoPanel .content .recordWithImage .lastComment, .simpleInfoColoredPanel .content .recordWithImage .lastComment, .extendedInfoPanel .content .recordWithImage .lastComment, .gradientPanel01 .content .recordWithImage .lastComment, .coloredPanel01 .content .recordWithImageLast .lastComment, .coloredPanel02 .content .recordWithImageLast .lastComment, .simpleInfoPanel .content .recordWithImageLast .lastComment, .simpleInfoColoredPanel .content .recordWithImageLast .lastComment, .extendedInfoPanel .content .recordWithImageLast .lastComment, .gradientPanel01 .content .recordWithImageLast .lastComment { padding-left: 6px; clear: left; background: url(../images/design/icons/ul-square.gif) no-repeat left 6px; color: #dc632e; } .coloredPanel01 .content .recordWithImage .lastComment:hover, .coloredPanel02 .content .recordWithImage .lastComment:hover, .simpleInfoPanel .content .recordWithImage .lastComment:hover, .simpleInfoColoredPanel .content .recordWithImage .lastComment:hover, .extendedInfoPanel .content .recordWithImage .lastComment:hover, .gradientPanel01 .content .recordWithImage .lastComment:hover, .coloredPanel01 .content .recordWithImageLast .lastComment:hover, .coloredPanel02 .content .recordWithImageLast .lastComment:hover, .simpleInfoPanel .content .recordWithImageLast .lastComment:hover, .simpleInfoColoredPanel .content .recordWithImageLast .lastComment:hover, .extendedInfoPanel .content .recordWithImageLast .lastComment:hover, .gradientPanel01 .content .recordWithImageLast .lastComment:hover { text-decoration:none; } .coloredPanel01 .content .recordWithImage .allPostsLink, .coloredPanel02 .content .recordWithImage .allPostsLink, .simpleInfoPanel .content .recordWithImage .allPostsLink, .simpleInfoColoredPanel .content .recordWithImage .allPostsLink, .extendedInfoPanel .content .recordWithImage .allPostsLink, .gradientPanel01 .content .recordWithImage .allPostsLink, .coloredPanel01 .content .recordWithImageLast .allPostsLink, .coloredPanel02 .content .recordWithImageLast .allPostsLink, .simpleInfoPanel .content .recordWithImageLast .allPostsLink, .simpleInfoColoredPanel .content .recordWithImageLast .allPostsLink, .extendedInfoPanel .content .recordWithImageLast .allPostsLink, .gradientPanel01 .content .recordWithImageLast .allPostsLink { float: right; color: #dc632e; text-decoration: underline; } .coloredPanel01 .content .recordWithImage .allPostsLink:hover, .coloredPanel02 .content .recordWithImage .allPostsLink:hover, .simpleInfoPanel .content .recordWithImage .allPostsLink:hover, .simpleInfoColoredPanel .content .recordWithImage .allPostsLink:hover, .extendedInfoPanel .content .recordWithImage .allPostsLink:hover, .gradientPanel01 .content .recordWithImage .allPostsLink:hover, .coloredPanel01 .content .recordWithImageLast .allPostsLink:hover, .coloredPanel02 .content .recordWithImageLast .allPostsLink:hover, .simpleInfoPanel .content .recordWithImageLast .allPostsLink:hover, .simpleInfoColoredPanel .content .recordWithImageLast .allPostsLink:hover, .extendedInfoPanel .content .recordWithImageLast .allPostsLink:hover, .gradientPanel01 .content .recordWithImageLast .allPostsLink:hover { text-decoration: none; } /* ================================================== */ .coloredPanel01 .content .eshopRecord, .coloredPanel02 .content .eshopRecord, .simpleInfoPanel .content .eshopRecord, .simpleInfoColoredPanel .content .eshopRecord, .extendedInfoPanel .content .eshopRecord, .gradientPanel01 .content .eshopRecord { width: 100%; height: 85px; padding: 5px 0 0 0; } .coloredPanel01 .content .eshopRecord .picture, .coloredPanel02 .content .eshopRecord .picture, .simpleInfoPanel .content .eshopRecord .picture, .simpleInfoColoredPanel .content .eshopRecord .picture, .extendedInfoPanel .content .eshopRecord .picture, .gradientPanel01 .content .eshopRecord .picture { width: 75px; float: left; } .coloredPanel01 .content .eshopRecord .text, .coloredPanel02 .content .eshopRecord .text, .simpleInfoPanel .content .eshopRecord .text, .simpleInfoColoredPanel .content .eshopRecord .text, .extendedInfoPanel .content .eshopRecord .text, .gradientPanel01 .content .eshopRecord .text { width: 70%; height: 65px; float: right; font-size: 95%; /*font-size: 90%;*/ } .column3Panel .coloredPanel01 .content .eshopRecord .text, .column3Panel .coloredPanel02 .content .eshopRecord .text, .column3Panel .simpleInfoPanel .content .eshopRecord .text, .column3Panel .simpleInfoColoredPanel .content .eshopRecord .text, .column3Panel .extendedInfoPanel .content .eshopRecord .text, .column3Panel .gradientPanel01 .content .eshopRecord .text { width: 78%; height: 65px; float: right; font-size: 95%; /*font-size: 90%;*/ } .coloredPanel01 .content .eshopRecord .text h4, .coloredPanel02 .content .eshopRecord .text h4, .simpleInfoPanel .content .eshopRecord .text h4, .simpleInfoColoredPanel .content .eshopRecord .text h4, .extendedInfoPanel .content .eshopRecord .text h4, .gradientPanel01 .content .eshopRecord .text h4 { color: #002e67; font-size: 100%; /*font-size: 110%;*/ } .coloredPanel01 .content .eshopRecord .text h4 a, .coloredPanel02 .content .eshopRecord .text h4 a, .simpleInfoPanel .content .eshopRecord .text h4 a, .simpleInfoColoredPanel .content .eshopRecord .text h4 a, .extendedInfoPanel .content .eshopRecord .text h4 a, .gradientPanel01 .content .eshopRecord .text h4 a { color: #005e82; text-decoration:none; } .coloredPanel01 .content .eshopRecord .text h4 a:hover, .coloredPanel02 .content .eshopRecord .text h4 a:hover, .simpleInfoPanel .content .eshopRecord .text h4 a:hover, .simpleInfoColoredPanel .content .eshopRecord .text h4 a:hover, .extendedInfoPanel .content .eshopRecord .text h4 a:hover, .gradientPanel01 .content .eshopRecord .text h4 a:hover { text-decoration:underline; } .coloredPanel01 .content .eshopRecord .prices, .coloredPanel02 .content .eshopRecord .prices, .simpleInfoPanel .content .eshopRecord .prices, .simpleInfoColoredPanel .content .eshopRecord .prices, .extendedInfoPanel .content .eshopRecord .prices, .gradientPanel01 .content .eshopRecord .prices { width: 70%; float: right; font-size: 95%; /*font-size: 90%;*/ } .column3Panel .coloredPanel01 .content .eshopRecord .prices, .column3Panel .coloredPanel02 .content .eshopRecord .prices, .column3Panel .simpleInfoPanel .content .eshopRecord .prices, .column3Panel .simpleInfoColoredPanel .content .eshopRecord .prices, .column3Panel .extendedInfoPanel .content .eshopRecord .prices, .column3Panel .gradientPanel01 .content .eshopRecord .prices { width: 78%; float: right; font-size: 95%; /*font-size: 90%;*/ } .coloredPanel01 .content .eshopRecord .prices span, .coloredPanel02 .content .eshopRecord .prices span, .simpleInfoPanel .content .eshopRecord .prices span, .simpleInfoColoredPanel .content .eshopRecord .prices span, .extendedInfoPanel .content .eshopRecord .prices span, .gradientPanel01 .content .eshopRecord .prices span { float: left; color: #dc632e; font-weight: bold; } .coloredPanel01 .content .eshopRecord .prices a, .coloredPanel02 .content .eshopRecord .prices a, .simpleInfoPanel .content .eshopRecord .prices a, .simpleInfoColoredPanel .content .eshopRecord .prices a, .extendedInfoPanel .content .eshopRecord .prices a, .gradientPanel01 .content .eshopRecord .prices a { float: right; color: #dc632e; text-decoration: underline; } .coloredPanel01 .content .eshopRecord .prices a:hover, .coloredPanel02 .content .eshopRecord .prices a:hover, .simpleInfoPanel .content .eshopRecord .prices a:hover, .simpleInfoColoredPanel .content .eshopRecord .prices a:hover, .extendedInfoPanel .content .eshopRecord .prices a:hover, .gradientPanel01 .content .eshopRecord .prices a:hover { text-decoration: none; } /* ================================================== */ .coloredPanel01 .content .linksInLine, .coloredPanel02 .content .linksInLine, .simpleInfoPanel .content .linksInLine, .simpleInfoColoredPanel .content .linksInLine, .extendedInfoPanel .content .linksInLine, .gradientPanel01 .content .linksInLine { width: 100%; padding: 5px 0; clear: both; color: #dc632e; font-size: 95%; /*font-size: 90%;*/ } .coloredPanel01 .content .linksInLine a, .coloredPanel02 .content .linksInLine a, .simpleInfoPanel .content .linksInLine a, .simpleInfoColoredPanel .content .linksInLine a, .extendedInfoPanel .content .linksInLine a, .gradientPanel01 .content .linksInLine a { color: #dc632e; text-decoration: underline; } .coloredPanel01 .content .linksInLine a:hover, .coloredPanel02 .content .linksInLine a:hover, .simpleInfoPanel .content .linksInLine a:hover, .simpleInfoColoredPanel .content .linksInLine a:hover, .extendedInfoPanel .content .linksInLine a:hover, .gradientPanel01 .content .linksInLine a:hover { color: #dc632e; text-decoration: none; } /* ================================================== */ .coloredPanel01 .content .leftEqual, .coloredPanel02 .content .leftEqual, .simpleInfoPanel .content .leftEqual, .simpleInfoColoredPanel .content .leftEqual, .extendedInfoPanel .content .leftEqual, .gradientPanel01 .content .leftEqual, .simpleBorderPanel .content .leftEqual { width: 45%; float: left; overflow:hidden; } .coloredPanel01 .content .rightEqual, .coloredPanel02 .content .rightEqual, .simpleInfoPanel .content .rightEqual, .simpleInfoColoredPanel .content .rightEqual, .extendedInfoPanel .content .rightEqual, .gradientPanel01 .content .rightEqual, .simpleBorderPanel .content .rightEqual { width: 45%; float: right; } /* ================================================== */ .coloredPanel01 .content .bigger, .coloredPanel02 .content .bigger, .simpleInfoPanel .content .bigger, .simpleInfoColoredPanel .content .bigger, .extendedInfoPanel .content .bigger, .gradientPanel01 .content .bigger { font-size: 110%; } .coloredPanel01 .content .standardText, .coloredPanel02 .content .standardText, .simpleInfoPanel .content .standardText, .simpleInfoColoredPanel .content .standardText, .extendedInfoPanel .content .standardText, .gradientPanel01 .content .standardText { width: 100%; padding: 5px 0 0 0; font-size: 95%; /* font-size: 90%;*/ } .gradientPanel01 .content .standardText .pencilLink { padding: 40px 0 0 0; } .coloredPanel01 .content .standardText h4, .coloredPanel02 .content .standardText h4, .simpleInfoPanel .content .standardText h4, .simpleInfoColoredPanel .content .standardText h4, .extendedInfoPanel .content .standardText h4, .gradientPanel01 .content .standardText h4 { font-size: 100%; /*font-size: 110%;*/ } .coloredPanel01 .content .standardText h4 a, .coloredPanel02 .content .standardText h4 a, .simpleInfoPanel .content .standardText h4 a, .simpleInfoColoredPanel .content .standardText h4 a, .extendedInfoPanel .content .standardText h4 a, .gradientPanel01 .content .standardText h4 a { color:#005e82; text-align:left; text-decoration:none; float:none; } .coloredPanel01 .content .standardText h4 a:hover, .coloredPanel02 .content .standardText h4 a:hover, .simpleInfoPanel .content .standardText h4 a:hover, .simpleInfoColoredPanel .content .standardText h4 a:hover, .extendedInfoPanel .content .standardText h4 a:hover, .gradientPanel01 .content .standardText h4 a:hover { text-decoration:underline; } .coloredPanel01 .content .standardText a, .coloredPanel02 .content .standardText a, .simpleInfoPanel .content .standardText a, .simpleInfoColoredPanel .content .standardText a, .extendedInfoPanel .content .standardText a, .gradientPanel01 .content .standardText a { /*display: block;*/ clear: both; float: right; color: #dc632e; /*text-align: right;*/ text-decoration: underline; } .gradientPanel01 .content .standardText h4 a { float: none; } .coloredPanel01 .content .standardText a:hover, .coloredPanel02 .content .standardText a:hover, .simpleInfoPanel .content .standardText a:hover, .simpleInfoColoredPanel .content .standardText a:hover, .extendedInfoPanel .content .standardText a:hover, .gradientPanel01 .content .standardText a:hover { text-decoration: none; } /* ================================================== */ .coloredPanel01 .content .dottedLine, .coloredPanel02 .content .dottedLine, .simpleInfoPanel .content .dottedLine, .simpleInfoColoredPanel .content .dottedLine, .extendedInfoPanel .content .dottedLine, .gradientPanel01 .content .dottedLine { width: 100%; height: 1px; display: block; overflow: hidden; border-bottom: 1px dotted #c1c1c1; } .column3Panel .coloredPanel03 .content .dottedLine { width: 90%; height: 1px; margin:10px 0 4px 12px; display: block; overflow: hidden; border-top: 1px dotted #c1c1c1; line-height:1px; font-size:1px; } .coloredPanel01 .content .dottedLineFloatLeft, .coloredPanel02 .content .dottedLineFloatLeft, .simpleInfoPanel .content .dottedLineFloatLeft, .simpleInfoColoredPanel .content .dottedLineFloatLeft, .extendedInfoPanel .content .dottedLineFloatLeft, .gradientPanel01 .content .dottedLineFloatLeft { width: 100%; height: 1px; float: left; border-bottom: 1px dotted #c1c1c1; } .coloredPanel01 .content .dottedLine hr, .coloredPanel02 .content .dottedLine hr, .simpleInfoPanel .content .dottedLine hr, .simpleInfoColoredPanel .content .dottedLine hr, .extendedInfoPanel .content .dottedLine hr, .gradientPanel01 .content .dottedLine hr, .coloredPanel01 .content .dottedLineFloatLeft hr, .coloredPanel02 .content .dottedLineFloatLeft hr, .simpleInfoPanel .content .dottedLineFloatLeft hr, .simpleInfoColoredPanel .content .dottedLineFloatLeft hr, .extendedInfoPanel .content .dottedLineFloatLeft hr, .gradientPanel01 .content .dottedLineFloatLeft hr { display: none; } /* ================================================== */ .coloredPanel01 .content .doubleRecord, .coloredPanel02 .content .doubleRecord, .simpleInfoPanel .content .doubleRecord, .simpleInfoColoredPanel .content .doubleRecord, .extendedInfoPanel .content .doubleRecord, .gradientPanel01 .content .doubleRecord, .paging { width: 100%; padding: 8px 0; clear: both; } .coloredPanel01 .content .doubleRecord .left, .coloredPanel02 .content .doubleRecord .left, .simpleInfoPanel .content .doubleRecord .left, .simpleInfoColoredPanel .content .doubleRecord .left, .extendedInfoPanel .content .doubleRecord .left, .gradientPanel01 .content .doubleRecord .left { width: 48%; float: left; } .coloredPanel01 .content .doubleRecord .right, .coloredPanel02 .content .doubleRecord .right, .simpleInfoPanel .content .doubleRecord .right, .simpleInfoColoredPanel .content .doubleRecord .right, .extendedInfoPanel .content .doubleRecord .right, .gradientPanel01 .content .doubleRecord .right { width: 48%; float: right; } .coloredPanel01 .content .doubleRecord h4, .coloredPanel02 .content .doubleRecord h4, .simpleInfoPanel .content .doubleRecord h4, .simpleInfoColoredPanel .content .doubleRecord h4, .extendedInfoPanel .content .doubleRecord h4, .gradientPanel01 .content .doubleRecord h4 { width: 100%; padding: 0 0 4px 0; display: block; clear: both; } .coloredPanel01 .content .doubleRecord .icon, .coloredPanel02 .content .doubleRecord .icon, .simpleInfoPanel .content .doubleRecord .icon, .simpleInfoColoredPanel .content .doubleRecord .icon, .extendedInfoPanel .content .doubleRecord .icon, .gradientPanel01 .content .doubleRecord .icon { width: 65px; height: 50px; float: left; } .coloredPanel01 .content .doubleRecord .text, .coloredPanel02 .content .doubleRecord .text, .simpleInfoPanel .content .doubleRecord .text, .simpleInfoColoredPanel .content .doubleRecord .text, .extendedInfoPanel .content .doubleRecord .text, .gradientPanel01 .content .doubleRecord .text { font-size: 95%; } .extendedInfoPanel .content .doubleRecord .text img { display:block; } .coloredPanel01 .content .doubleRecord .text .blue, .coloredPanel02 .content .doubleRecord .text .blue, .simpleInfoPanel .content .doubleRecord .text .blue, .simpleInfoColoredPanel .content .doubleRecord .text .blue, .extendedInfoPanel .content .doubleRecord .text .blue, .gradientPanel01 .content .doubleRecord .text .blue { color: #002e67; } .coloredPanel01 .content .doubleRecord .links, .coloredPanel02 .content .doubleRecord .links, .simpleInfoPanel .content .doubleRecord .links, .simpleInfoColoredPanel .content .doubleRecord .links, .extendedInfoPanel .content .doubleRecord .links, .gradientPanel01 .content .doubleRecord .links { padding: 0px 0px 0 0; font-size: 90%; } .coloredPanel01 .content .doubleRecord .links a, .coloredPanel02 .content .doubleRecord .links a, .simpleInfoPanel .content .doubleRecord .links a, .simpleInfoColoredPanel .content .doubleRecord .links a, .extendedInfoPanel .content .doubleRecord .links a, .gradientPanel01 .content .doubleRecord .links a { margin-top: 3px; display: block; } /* === BOX KALENDÁØ 13 =============================================== */ .extendedInfoPanel .content .leftCalendar, .coloredPanel01 .content .leftCalendar, .coloredPanel02 .content .leftCalendar, .simpleInfoPanel .content .leftCalendar, .simpleInfoColoredPanel .content .leftCalendar, .gradientPanel01 .content.leftCalendar, .extendedInfoPanel .content .rightCalendar, .coloredPanel01 .content .rightCalendar, .coloredPanel02 .content .rightCalendar, .simpleInfoPanel .content .rightCalendar, .simpleInfoColoredPanel .content .rightCalendar, .gradientPanel01 .content .rightCalendar { width: 49%; overflow: hidden; } .extendedInfoPanel .content .leftCalendar .coloredPanel03 .content, .coloredPanel01 .content .leftCalendar .coloredPanel03 .content, .coloredPanel02 .content .leftCalendar .coloredPanel03 .content, .simpleInfoPanel .content .leftCalendar .coloredPanel03 .content, .simpleInfoColoredPanel .content .leftCalendar .coloredPanel03 .content, .gradientPanel01 .content .leftCalendar .coloredPanel03 .content { padding: 0; border:medium none; } .extendedInfoPanel .content .leftCalendar table, .coloredPanel01 .content .leftCalendar table, .coloredPanel02 .content .leftCalendar table, .simpleInfoPanel .content .leftCalendar table, .simpleInfoColoredPanel .content .leftCalendar table, .gradientPanel01 .content .leftCalendar table { margin: 0 7px; border-collapse: separate; color: #000000; font-size: 11px;width: 90%; font-weight: normal; } .extendedInfoPanel .content .leftCalendar table.center, .coloredPanel01 .content .leftCalendar table.center, .coloredPanel02 .content .leftCalendar table.center, .simpleInfoPanel .content .leftCalendar table.center, .simpleInfoColoredPanel .content .leftCalendar table.center, .gradientPanel01 .content .leftCalendar table.center { text-align: center; } .extendedInfoPanel .content .leftCalendar table.gray, .coloredPanel01 .content .leftCalendar table.gray, .coloredPanel02 .content .leftCalendar table.gray, .simpleInfoPanel .content .leftCalendar table.gray, .simpleInfoColoredPanel .content .leftCalendar table.gray, .gradientPanel01 .content .leftCalendar table.gray { margin: 3px 7px 0 7px; color: #a7a7a7; text-align: center; } .extendedInfoPanel .content .leftCalendar table.year, .coloredPanel01 .content .leftCalendar table.year, .coloredPanel02 .content .leftCalendar table.year, .simpleInfoPanel .content .leftCalendar table.year, .simpleInfoColoredPanel .content .leftCalendar table.year, .gradientPanel01 .content .leftCalendar table.year { width: 100%; margin:0; background: #efeeee; color: #a7a7a7; } .extendedInfoPanel .content .leftCalendar table td.center, .coloredPanel01 .content .leftCalendar table td.center, .coloredPanel02 .content .leftCalendar table td.center, .simpleInfoPanel .content .leftCalendar table td.center, .simpleInfoColoredPanel .content .leftCalendar table td.center, .gradientPanel01 .content .leftCalendar table td.center { text-align: center; } .extendedInfoPanel .content .leftCalendar table td.blue, .coloredPanel01 .content .leftCalendar table td.blue, .coloredPanel02 .content .leftCalendar table td.blue, .simpleInfoPanel .content .leftCalendar table td.blue, .simpleInfoColoredPanel .content .leftCalendar table td.blue, .gradientPanel01 .content .leftCalendar table td.blue { background: #e5f4fd; } .extendedInfoPanel .content .leftCalendar table td.gray, .coloredPanel01 .content .leftCalendar table td.gray, .coloredPanel02 .content .leftCalendar table td.gray, .simpleInfoPanel .content .leftCalendar table td.gray, .simpleInfoColoredPanel .content .leftCalendar table td.gray, .gradientPanel01 .content .leftCalendar table td.gray { background: #efeeee; color: #002e67; } .extendedInfoPanel .content .leftCalendar table td.blue.bold, .coloredPanel01 .content .leftCalendar table td.blue.bold, .coloredPanel02 .content .leftCalendar table td.blue.bold, .simpleInfoPanel .content .leftCalendar table td.blue.bold, .simpleInfoColoredPanel .content .leftCalendar table td.blue.bold, .gradientPanel01 .content .leftCalendar table td.blue.bold { background: #e5f4fd; font-weight: bold; } .extendedInfoPanel .content .leftCalendar table td img, .coloredPanel01 .content .leftCalendar table td img, .coloredPanel02 .content .leftCalendar table td img, .simpleInfoPanel .content .leftCalendar table td img, .simpleInfoColoredPanel .content.leftCalendar table td img, .gradientPanel01 .content .leftCalendar table td img { margin: 0 0 0 5px; } .extendedInfoPanel .content .leftCalendar table td.rightImg img, .coloredPanel01 .content .leftCalendar table td.rightImg img, .coloredPanel02 .content .leftCalendar table td.rightImg img, .simpleInfoPanel .content .leftCalendar table td.rightImg img, .simpleInfoColoredPanel .content .leftCalendar table td.rightImg img, .gradientPanel01 .content .leftCalendar table td.rightImg img { margin: 0; } .coloredPanel01 .content .leftCalendar .dotedLine, .coloredPanel02 .content .leftCalendar .dotedLine, .simpleInfoPanel .content .leftCalendar .dotedLine, .simpleInfoColoredPanel .content .leftCalendar .dotedLine, .gradientPanel01 .content .leftCalendar .dotedLine, .extendedInfoPanel .content .leftCalendar .dotedLine { width: 100%; height: 1px; margin: 1px 0; padding: 0; display: block; clear: both; overflow: hidden; border-bottom: 1px dotted #c1c1c1; } .extendedInfoPanel .content .rightCalendar, .coloredPanel01 .content .rightCalendar, .coloredPanel02 .content .rightCalendar, .simpleInfoPanel .content .rightCalendar, .simpleInfoColoredPanel .content.rightCalendar , .gradientPanel01 .content .rightCalendar { float: right; } .extendedInfoPanel .content .leftCalendar h3, .coloredPanel01 .content .leftCalendar h3, .coloredPanel02 .content .leftCalendar h3, .simpleInfoPanel .content .leftCalendar h3, .simpleInfoColoredPanel .content .leftCalendar h3, .gradientPanel01 .content .leftCalendar h3, .extendedInfoPanel .content .rightCalendar h3, .coloredPanel01 .content .rightCalendar h3, .coloredPanel02 .content .rightCalendar h3, .simpleInfoPanel .content .rightCalendar h3, .simpleInfoColoredPanel .content .rightCalendar h3, .gradientPanel01 .content .rightCalendar h3 { color: #002e67; font-size: 100%; font-weight: normal; } .extendedInfoPanel .content .rightCalendar h3, .coloredPanel01 .content .rightCalendar h3, .coloredPanel02 .content .rightCalendar h3, .simpleInfoPanel .content .rightCalendar h3, .simpleInfoColoredPanel .content .rightCalendar h3, .gradientPanel01 .content .rightCalendar h3 { margin: 12px 0 10px 0; } .extendedInfoPanel .content .rightCalendar span, .coloredPanel01 .content .rightCalendar span, .coloredPanel02 .content .rightCalendar span, .simpleInfoPanel .content .rightCalendar span, .simpleInfoColoredPanel .content .rightCalendar span, .gradientPanel01 .content .rightCalendar span { background: #e5f4fd; font-weight: normal; } .extendedInfoPanel .content .rightCalendar p, .coloredPanel01 .content .rightCalendar p, .coloredPanel02 .content .rightCalendar p, .simpleInfoPanel .content .rightCalendar p, .simpleInfoColoredPanel .content .rightCalendar p, .gradientPanel01 .content .rightCalendar p { padding: 0 15px 0 0; line-height: 14px; color: #000000; font-weight: normal; } /* =========== coloredPanel03 ========= */ .extendedInfoPanel .leftCalendar .coloredPanel03 { width: auto; position: relative; } #upperContent .column3Panel .leftCalendar .coloredPanel03 { width: 100%; margin-bottom:0; position: relative; } .extendedInfoPanelt .leftCalendar .coloredPanel03 .topCorners, .extendedInfoPanel .leftCalendar .coloredPanel03 .bottomCorners { overflow: hidden; background: none; border: none; } .extendedInfoPanel .leftCalendar .coloredPanel03 .bottomCorners .left { position: static; background: #f9f7f7 url(../images/design/content-blocks/search-panel-bottom-left.png) no-repeat top left; } .extendedInfoPanel .leftCalendar .coloredPanel03 .bottomCorners .right { position: static; background: #F9F7F7 url(../images/design/content-blocks/search-panel-bottom-right.png) no-repeat scroll 0 0; } .extendedInfoPanel .leftCalendar .coloredPanel03 .topCorners .right { position: absolute; top: 0px; right: 0; background: #F9F7F7 url(../images/design/content-blocks/search-panel-top-right.png) no-repeat scroll 0 0; } /* === BOX HOROSKOPY (jak se k sobe hodime?) =============================================== */ .coloredPanel01 .content .search, .coloredPanel02 .content .search, .simpleInfoPanel .content .search, .simpleInfoColoredPanel .content .search, .extendedInfoPanel .content .search, .gradientPanel01 .content .search { color: #000; font-weight: normal; text-align: left; } .coloredPanel01 .content .search select, .coloredPanel02 .content .search select, .simpleInfoPanel .content .search select, .simpleInfoColoredPanel .content .search select, .extendedInfoPanel .content .search select, .gradientPanel01 .content .search select { margin: 0 15px 0 5px; } .coloredPanel01 .content .search p, .coloredPanel02 .content .search p, .simpleInfoPanel .content .search p, .simpleInfoColoredPanel .content .search p, .extendedInfoPanel .content .search p, .gradientPanel01 .content .search p { width: 60%; float: left; color: #747474; font-size: 80%; } /* =========== coloredPanel02 ========= */ .extendedInfoPanel .content .search .coloredPanel02 .topCorners, .extendedInfoPanel .content .search .coloredPanel02 .bottomCorners, .extendedInfoPanel .content .search .coloredPanel02 .content { overflow: hidden; background: none; border: none; } /* === BOX TELEVIZE =============================================== */ .extendedInfoPanel .content .coloredPanel02 { width: 332px; margin: 3px 12px 4px 12px; } .extendedInfoPanel .content .coloredPanel02 .subContent { text-align: left; } .extendedInfoPanel .content .coloredPanel02 .bottomCorners { border: none; } .extendedInfoPanel .content .coloredPanel02 .coloredPanel09 { width: 68px; margin-bottom: 8px; padding: 0; line-height: 10px; text-align: center; } .extendedInfoPanel .content .coloredPanel02 .coloredPanel09 .time { position: relative; top: 4px; z-index: 100; color: #bf1e24; text-align: center; } .extendedInfoPanel .content .coloredPanel02 .tvIcon { position: relative; z-index: 100; } .extendedInfoPanel .content .coloredPanel02 .tvIcon img { position: absolute; top: -9px; left: 290px; } .extendedInfoPanel .content .coloredPanel02 .subContent .left { width: 20%; padding: 1px 0 0 10px; float: left; } .extendedInfoPanel .content .coloredPanel02 .subContent .left a { padding: 14px 0 0 4px; display: block; color: #bf1e24; text-decoration: none; } .extendedInfoPanel .content .coloredPanel02 .subContent .left a:hover { text-decoration: underline; } .extendedInfoPanel #rightAlign .coloredPanel02 { overflow:hidden; } .extendedInfoPanel #rightAlign .coloredPanel02 .bottomCorners { overflow:hidden; } .extendedInfoPanel #rightAlign .coloredPanel02 .bottomCorners .right, .extendedInfoPanel #rightAlign .coloredPanel02 .topCorners .right { position:relative; left:2px; } .extendedInfoPanel .content .coloredPanel02 .subContent .right { width: auto; float: none; padding-left:10px; position: relative; top: -2px; z-index: 100; line-height: 10px; color: #747474; font-size: 10px; font-weight: normal; } .extendedInfoPanel .content .coloredPanel02 .subContent .coloredPanel09 .bottomCorners .right, .extendedInfoPanel .content .coloredPanel02 .subContent .coloredPanel09 .topCorners .right { float: right; padding:0; } .extendedInfoPanel .content .coloredPanel02 .subContent .right h4 { padding-bottom: 4px; line-height: normal; color: #002e67; font-size: 11px; } .extendedInfoPanel .content .coloredPanel02 .bottomCorners .left { left: 0; top: 0; } .extendedInfoPanel .content .coloredPanel02 .bottomCorners .right { left: 0; top: 0; } /* === BOX KONTEXTOVA REKLAMA =============================================== */ .coloredPanel01 .content .context, .coloredPanel02 .content .context, .simpleInfoPanel .content .context, .simpleInfoColoredPanel .content .context, .extendedInfoPanel .content .context, .gradientPanel01 .content .context { padding:8px 5px 2px 7px; } .coloredPanel01 .content .context a, .coloredPanel02 .content .context a, .simpleInfoPanel .content .context a, .simpleInfoColoredPanel .content .context a, .extendedInfoPanel .content .context a, .gradientPanel01 .content .context a { margin:3px 0; display:block; color:#005e82; font-weight:bold; } .coloredPanel01 .content .context .grey, .coloredPanel02 .content .context .grey, .simpleInfoPanel .content .context .grey, .simpleInfoColoredPanel .context .marginLeft .grey, .extendedInfoPanel .content .context .grey, .gradientPanel01 .content .context .grey { color: #767676; } /* === BOX KOMERÈNÍ SDÌLENÍ =============================================== */ .coloredPanel01 .content .commercial, .coloredPanel02 .content .commercial, .simpleInfoPanel .content .commercial, .simpleInfoColoredPanel .content .commercial, .extendedInfoPanel .content .commercial, .gradientPanel01 .content .commercial { padding:8px 5px 2px 7px; } .coloredPanel01 .content .commercial a, .coloredPanel02 .content .commercial a, .simpleInfoPanel .content .commercial a, .simpleInfoColoredPanel .content .commercial a, .extendedInfoPanel .content .commercial a, .gradientPanel01 .content .commercial a { margin:3px 0; color:#767676; text-decoration: underline; } .coloredPanel01 .content .commercial a:hover, .coloredPanel02 .content .commercial a:hover, .simpleInfoPanel .content .commercial a:hover, .simpleInfoColoredPanel .content .commercial a:hover, .extendedInfoPanel .content .commercial a:hover, .gradientPanel01 .content .commercial a:hover { text-decoration: none; } .coloredPanel01 .content .commercial h4 a, .coloredPanel02 .content .commercial h4 a, .simpleInfoPanel .content .commercial h4 a, .simpleInfoColoredPanel .content .commercial h4 a, .extendedInfoPanel .content .commercial h4 a, .gradientPanel01 .content .commercial h4 a { margin:0; color:#005e82; text-decoration: none; } .coloredPanel01 .content .commercial h4 a:hover, .coloredPanel02 .content .commercial h4 a:hover, .simpleInfoPanel .content .commercial h4 a:hover, .simpleInfoColoredPanel .content .commercial h4 a:hover, .extendedInfoPanel .content .commercial h4 a:hover, .gradientPanel01 .content .commercial h4 a:hover { text-decoration: underline; } .coloredPanel01 .content .commercial .floatLeft, .coloredPanel02 .content .commercial .floatLeft, .simpleInfoPanel .content .commercial .floatLeft, .simpleInfoColoredPanel .commercial .marginLeft .floatLeft, .extendedInfoPanel .content .commercial .floatLeft, .gradientPanel01 .content .commercial .floatLeft { float: left; margin-right: 10px; margin-top:2px; } .coloredPanel01 .content .commercial .clear, .coloredPanel02 .content .commercial .clear, .simpleInfoPanel .content .commercial .clear, .simpleInfoColoredPanel .commercial .marginLeft .clear, .extendedInfoPanel .content .commercial .clear, .gradientPanel01 .content .commercial .clear { margin-top:10px; } /* === BOX NEJDISKUTOVANÌJŠÍ ÈLÁNKY 12 =============================================== */ .coloredPanel01 .content .marginLeft, .coloredPanel02 .content .marginLeft, .simpleInfoPanel .content .marginLeft, .simpleInfoColoredPanel .content .marginLeft, .extendedInfoPanel .content .marginLeft, .gradientPanel01 .content .marginLeft { margin-left: 20px; } .coloredPanel01 .content .marginLeft .grey, .coloredPanel02 .content .marginLeft .grey, .simpleInfoPanel .content .marginLeft .grey, .simpleInfoColoredPanel .content .marginLeft .grey, .extendedInfoPanel .content .marginLeft .grey, .gradientPanel01 .content .marginLeft .grey { color: #767676; font-size: 95%; } .coloredPanel01 .content .marginLeft .linksInLine, .coloredPanel02 .content .marginLeft .linksInLine, .simpleInfoPanel .content .marginLeft .linksInLine, .simpleInfoColoredPanel .content .marginLeft .linksInLine, .extendedInfoPanel .content .marginLeft .linksInLine, .gradientPanel01 .content .marginLeft .linksInLine { padding-top: 0px; font-size: 90%; } /* === BOX HOROSKOPY 16 =============================================== */ .coloredPanel01 .content .horoscope, .coloredPanel02 .content .horoscope, .simpleInfoPanel .content .horoscope, .simpleInfoColoredPanel .content .horoscope, .extendedInfoPanel .content .horoscope, .gradientPanel01 .content .horoscope { padding: 10px 25px 5px 25px; } .coloredPanel01 .content .zodiac, .coloredPanel02 .content .zodiac, .simpleInfoPanel .content .zodiac, .simpleInfoColoredPanel .content .zodiac, .extendedInfoPanel .content .zodiac, .gradientPanel01 .content .zodiac { width: 40px; margin: 5px; float: left; position:relative; color: #002e67; font-weight: bold; text-align: center; } .coloredPanel01 .content .zodiac a, .coloredPanel02 .content .zodiac a, .simpleInfoPanel .content .zodiac a, .simpleInfoColoredPanel .content .zodiac a, .extendedInfoPanel .content .zodiac a, .gradientPanel01 .content .zodiac a { color: #002e67; text-decoration: none; } .coloredPanel01 .content .zodiac a:hover *, .coloredPanel02 .content .zodiac a:hover *, .simpleInfoPanel .content .zodiac a:hover *, .simpleInfoColoredPanel .content .zodiac a:hover *, .extendedInfoPanel .content .zodiac a:hover *, .gradientPanel01 .content .zodiac a:hover * { text-decoration: underline; } .coloredPanel01 .content .zodiac img, .coloredPanel02 .content .zodiac img, .simpleInfoPanel .content .zodiac img, .simpleInfoColoredPanel .content .zodiac img, .extendedInfoPanel .content .zodiac img, .gradientPanel01 .content .zodiac img { margin-bottom: 16px; } .coloredPanel01 .content .zodiac span, .coloredPanel02 .content .zodiac span, .simpleInfoPanel .content .zodiac span, .simpleInfoColoredPanel .content .zodiac span, .extendedInfoPanel .content .zodiac span, .gradientPanel01 .content .zodiac span { width:40px; display:block; position:absolute; top:32px; left:0; text-align:center; } /* === BOX TOP SLEVY 30 =============================================== */ .coloredPanel01 .content .sale, .coloredPanel02 .content .sale, .simpleInfoPanel .content .sale, .simpleInfoColoredPanel .content .sale, .extendedInfoPanel .content .sale, .gradientPanel01 .content .sale { width:270px; height:44px;/* 56px */ margin:0 12px; padding:6px 56px 6px 6px; overflow:hidden; background: url(../images/design/sale.png) no-repeat; border-bottom: 1px dotted #c1c1c1; } .coloredPanel01 .content .sale a, .coloredPanel02 .content .sale a, .simpleInfoPanel .content .sale a, .simpleInfoColoredPanel .content .sale a, .extendedInfoPanel .content .sale a, .gradientPanel01 .content .sale a { display: block; clear: right; color: #dc632e; } .coloredPanel01 .content .saleLink, .coloredPanel02 .content .saleLink, .simpleInfoPanel .content .saleLink, .simpleInfoColoredPanel .content .saleLink, .extendedInfoPanel .content .saleLink, .gradientPanel01 .content .saleLink { margin: 15px 13px 0 0; float: right; display: block; clear: both; background: transparent; color: #dc632e; text-decoration: underline; } .coloredPanel01 .content .saleLink:hover, .coloredPanel02 .content .saleLink:hover, .simpleInfoPanel .content .saleLink:hover, .simpleInfoColoredPanel .content .saleLink:hover, .extendedInfoPanel .content .saleLink:hover, .gradientPanel01 .content .saleLink:hover { text-decoration: none; } /* === BOX ANKETA 28 =============================================== */ .coloredPanel01 .content .questionary, .coloredPanel02 .content .questionary, .simpleInfoPanel .content .questionary, .simpleInfoColoredPanel .content .questionary, .extendedInfoPanel .content .questionary, .gradientPanel01 .content .questionary { padding: 5px 5px 5px 15px; } .coloredPanel01 .content .questionary ul, .coloredPanel02 .content .questionary ul, .simpleInfoPanel .content .questionary ul, .simpleInfoColoredPanel .content .questionary ul, .extendedInfoPanel .content .questionary ul, .gradientPanel01 .content .questionary ul { margin: 0 0 15px 0; } .coloredPanel01 .content .questionary a, .coloredPanel02 .content .questionary a, .simpleInfoPanel .content .questionary a, .simpleInfoColoredPanel .content .questionary a, .extendedInfoPanel .content .questionary a, .gradientPanel01 .content .questionary a { color: #dc632e; margin-right: 85px; } /* === BOX NEJOBLÍBENÌJŠÍ HRA 17 =============================================== */ .coloredPanel01 .content .game, .coloredPanel02 .content .game, .simpleInfoPanel .content .game, .simpleInfoColoredPanel .content .game, .extendedInfoPanel .content .game, .gradientPanel01 .content .game { padding-top: 10px; float:none; } .coloredPanel01 .content .game .leftGame, .coloredPanel02 .content .game .leftGame, .simpleInfoPanel .content .game .leftGame, .simpleInfoColoredPanel .content .game .leftGame, .extendedInfoPanel .content .game .leftGame, .gradientPanel01 .content .game .leftGame { width:160px; margin-right: 15px; float: left; } .coloredPanel01 .content .game .leftGame .coloredPanel07 .content .button, .coloredPanel02 .content .game .leftGame .coloredPanel07 .content .button, .simpleInfoPanel .content .game .leftGame .coloredPanel07 .content .button, .simpleInfoColoredPanel .content .game .leftGame .coloredPanel07 .content .button, .extendedInfoPanel .content .game .leftGame .coloredPanel07 .content .button, .gradientPanel01 .content .game .leftGame .coloredPanel07 .content .button { float:left; clear:both; position:relative; } .coloredPanel01 .content .game .leftGame .coloredPanel07 .content .button a , .coloredPanel02 .content .game .leftGame .coloredPanel07 .content .button a , .simpleInfoPanel .content .game .leftGame .coloredPanel07 .content .button a , .simpleInfoColoredPanel .content .game .leftGame .coloredPanel07 .content .button a , .extendedInfoPanel .content .game .leftGame .coloredPanel07 .content .button a , .gradientPanel01 .content .game .leftGame .coloredPanel07 .content .button a { width:42px; height:28px; padding:38px 2px 0 22px; display:block; position:absolute; left:38px; top:129px; background:#F3F3F3 url(../images/design/icons/play4.png) no-repeat scroll left top; color:#002e67; font-size:110%; font-weight:bold; text-decoration:none; } .coloredPanel01 .content .game .leftGame .coloredPanel07, .coloredPanel02 .content .game .leftGame .coloredPanel07, .simpleInfoPanel .content .game .leftGame .coloredPanel07, .simpleInfoColoredPanel .content .game .leftGame .coloredPanel07, .extendedInfoPanel .content .game .leftGame .coloredPanel07, .gradientPanel01 .content .game .leftGame .coloredPanel07 { width:158px; margin:0 0 30px 0; float: none; } .coloredPanel01 .content .game .leftGame .coloredPanel07 .content, .coloredPanel02 .content .game .leftGame .coloredPanel07 .content, .simpleInfoPanel .content .game .leftGame .coloredPanel07 .content, .simpleInfoColoredPanel .content .game .leftGame .coloredPanel07 .content, .extendedInfoPanel .content .game .leftGame .coloredPanel07 .content, .gradientPanel01 .content .game .leftGame .coloredPanel07 .content { height:116px; padding: 0 0px 50px 8px; overflow:visible; } /* =========== coloredPanel07 ========= */ .extendedInfoPanel .content .game .leftGame .coloredPanel07 { float:left; position: relative; } .extendedInfoPanel .content .game .leftGame .coloredPanel07 .topCorners, .extendedInfoPanel .content .game .leftGame .coloredPanel07 .bottomCorners { overflow: hidden; background: none; border: none; } .extendedInfoPanel .content .game .leftGame .coloredPanel07 .bottomCorners .right { position: static; background: #e6e7e7 url(../images/design/content-blocks/grey-game-panel-bottom-right.png) no-repeat 0px 0px; } .extendedInfoPanel .content .game .leftGame .coloredPanel07 .bottomCorners .left { position: static; background: #e6e7e7 url(../images/design/content-blocks/grey-game-panel-bottom-left.png) no-repeat 0px 0px; } .extendedInfoPanel .content .game .leftGame .coloredPanel07 .topCorners .right { position: absolute; right: 0; top: 0px; background: #e6e7e7 url(../images/design/content-blocks/grey-game-panel-top-right.png) no-repeat 0px 0px; } /* ======================================= */ .coloredPanel01 .content .game .rightGame, .coloredPanel02 .content .game .rightGame, .simpleInfoPanel .content .game .rightGame, .simpleInfoColoredPanel .content .game .rightGame, .extendedInfoPanel .content .game .rightGame, .gradientPanel01 .content .game .rightGame { width:160px; margin-left: 10px; float: right; } .coloredPanel01 .content .game .rightGame p, .coloredPanel02 .content .game .rightGame p, .simpleInfoPanel .content .game .rightGame p, .simpleInfoColoredPanel .content .game .rightGame p, .extendedInfoPanel .content .game .rightGame p, .gradientPanel01 .content .game .rightGame p { clear: both; } .coloredPanel01 .content .game .rightGame .blueLeft, .coloredPanel02 .content .game .rightGame .blueLeft, .simpleInfoPanel .content .game .rightGame .blueLeft, .simpleInfoColoredPanel .content .game .rightGame .blueLeft, .extendedInfoPanel .content .game .rightGame .blueLeft, .gradientPanel01 .content .game .rightGame .blueLeft { width:50%; margin: 8px 0 8px 0; float: left; line-height: 150%; color: #005e82; font-weight: bold; } .coloredPanel01 .content .game .rightGame .blackRight, .coloredPanel02 .content .game .rightGame .blackRight, .simpleInfoPanel .content .game .rightGame .blackRight, .simpleInfoColoredPanel .content .game .rightGame .blackRight, .extendedInfoPanel .content .game .rightGame .blackRight, .gradientPanel01 .content .game .rightGame .blackRight { width:50%; margin: 8px 0 8px 0; float: left; line-height: 150%; } .coloredPanel01 .content .game .rightGame .coloredPanel03, .coloredPanel02 .content .game .rightGame .coloredPanel03, .simpleInfoPanel .content .game .rightGame .coloredPanel03, .simpleInfoColoredPanel .content .game .rightGame .coloredPanel03, .extendedInfoPanel .content .game .rightGame .coloredPanel03, .gradientPanel01 .content .game .rightGame .coloredPanel03 { width:100%; color: #002e67; font-weight: bold; text-align: center; } #upperContent .column3Panel .coloredPanel01 .content .game .rightGame .coloredPanel03, #upperContent .column3Panel .coloredPanel02 .content .game .rightGame .coloredPanel03, #upperContent .column3Panel .simpleInfoPanel .content .game .rightGame .coloredPanel03, #upperContent .column3Panel .simpleInfoColoredPanel .content .game .rightGame .coloredPanel03, #upperContent .column3Panel .extendedInfoPanel .content .game .rightGame .coloredPanel03, #upperContent .column3Panel .gradientPanel01 .content .game .rightGame .coloredPanel03 { text-align: center; color: #002e67; font-weight: bold; width:100%; } /* =========== coloredPanel03 ========= */ .extendedInfoPanel .content .game .rightGame .coloredPanel03, .extendedInfoPanel .coloredPanel03 { width: auto; position: relative; } .extendedInfoPanel .content .game .rightGame .coloredPanel03 .topCorners, .extendedInfoPanel .content .game .rightGame .coloredPanel03 .bottomCorners, .extendedInfoPanel .coloredPanel03 .topCorners, .extendedInfoPanel .coloredPanel03 .bottomCorners { overflow: hidden; background: none; border: none; } .extendedInfoPanel .content .game .rightGame .coloredPanel03 .bottomCorners .right, .extendedInfoPanel .coloredPanel03 .bottomCorners .right { position: static; background: #f9f7f7 url(../images/design/content-blocks/search-panel-bottom-right.png) no-repeat 0px 0px; } .extendedInfoPanel .content .game .rightGame .coloredPanel03 .bottomCorners .left, .extendedInfoPanel .coloredPanel03 .bottomCorners .left { position: static; background: #f9f7f7 url(../images/design/content-blocks/search-panel-bottom-left.png) no-repeat 0px 0px; } .extendedInfoPanel .content .game .rightGame .coloredPanel03 .topCorners .right, .extendedInfoPanel .coloredPanel03 .topCorners .right { position: absolute; right: 0; top: 0; background: #f9f7f7 url(../images/design/content-blocks/search-panel-top-right.png) no-repeat 0px 0px; } /* ====================================== */ /* ==================================================================================== */ /* GLOBAL COLORED PANEL WITH BASIC SETTINGS =========================================== */ .coloredPanel01, .coloredPanel02, .gradientPanel01, .coloredPanel33, .coloredPanel36 { width: 340px; padding: 9px 0 0 0; position: relative; } .coloredPanel18 .topCorners { width: 100%; height: 10px !important; display: block; clear: both; overflow: hidden; } .coloredPanel01 .topCorners, .coloredPanel01 .bottomCorners, .coloredPanel02 .topCorners, .coloredPanel02 .bottomCorners, .coloredPanel03 .topCorners, .coloredPanel03 .bottomCorners, .coloredPanel04 .bottomCorners, .coloredPanel05 .bottomCorners, .coloredPanel06 .bottomCorners, .coloredPanel31 .bottomCorners, .coloredPanel31 .bottomCorners, .coloredPanel33 .topCorners, .coloredPanel33 .bottomCorners, .coloredPanel34 .topCorners, .coloredPanel34 .bottomCorners, .coloredPanel36 .topCorners, .coloredPanel36 .bottomCorners, .coloredPanel37 .topCorners, .coloredPanel37 .bottomCorners, .simpleInfoColoredPanel .bottomCorners, .extendedInfoPanel .bottomCorners, .gradientPanel01 .topCorners, .gradientPanel01 .bottomCorners { width: 100%; height: 11px; display: block; clear: both; overflow: hidden; } .coloredPanel03 .topCorners { height:9px; } .coloredPanel07 .topCorners, .coloredPanel07 .bottomCorners, .coloredPanel30 .topCorners, .coloredPanel30 .bottomCorners, .coloredPanel32 .topCorners, .coloredPanel32 .bottomCorners { width: 100%; height: 8px; display: block; clear: both; overflow: hidden; } .coloredPanel09 .topCorners, .coloredPanel09 .bottomCorners, .coloredPanel10 .topCorners, .coloredPanel10 .bottomCorners, .coloredPanel12 .topCorners, .coloredPanel12 .bottomCorners, .programInfoColoredPanel15 .topCorners, .programInfoColoredPanel15 .bottomCorners, .coloredPanel16 .topCorners, .coloredPanel16 .bottomCorners, .coloredPanel17 .topCorners, .coloredPanel17 .bottomCorners, .coloredPanel18 .bottomCorners, .coloredPanel21 .topCorners, .coloredPanel21 .bottomCorners, .coloredPanel23 .topCorners, .coloredPanel23 .bottomCorners, .coloredPanel28 .topCorners, .coloredPanel28 .bottomCorners, .gradientPanel04 .topCorners, .gradientPanel04 .bottomCorners, .gradientPanel05 .topCorners, .simpleBorderPanel .bottomCorners, .simpleBorderPanel .topCorners { width: 100%; height: 7px; display: block; clear: both; overflow: hidden; } .gradientPanel02 .topCorners, .gradientPanel03 .topCorners, .coloredPanel29 .topCorners, .coloredPanel29 .bottomCorners { width: 100%; height: 6px; display: block; clear: both; overflow: hidden; } .textareaGrey .topCorners, .textareaGrey .bottomCorners, .coloredPanel25 .topCorners, .coloredPanel25 .bottomCorners { width: 100%; height: 5px; display: block; clear: both; overflow: hidden; } .eshopMenuPanel .bottomCorners, .coloredPanel20 .topCorners, .coloredPanel20 .bottomCorners, .coloredPanel22 .topCorners, .coloredPanel22 .bottomCorners, .coloredPanel24 .topCorners, .coloredPanel24 .bottomCorners, .coloredPanel27 .topCorners, .coloredPanel27 .bottomCorners, .coloredPanel35 .topCorners, .coloredPanel35 .bottomCorners, .coloredPanel38 .topCorners, .coloredPanel38 .bottomCorners { width: 100%; height: 4px; display: block; clear: both; overflow: hidden; } .coloredPanel11 .topCorners, .coloredPanel11 .bottomCorners, .coloredPanel13 .topCorners, .coloredPanel13 .bottomCorners, .coloredPanel14 .topCorners, .coloredPanel14 .bottomCorners, .coloredPanel19 .topCorners, .coloredPanel19 .bottomCorners, .coloredPanel26 .topCorners, .coloredPanel26 .bottomCorners { width: 100%; height: 3px; display: block; clear: both; overflow: hidden; } .coloredPanel18 .topCorners .left { width: 7px; height: 10px !important; display: block; float: left; } .coloredPanel01 .topCorners .left, .coloredPanel01 .bottomCorners .left, .coloredPanel02 .topCorners .left, .coloredPanel02 .bottomCorners .left, .coloredPanel03 .topCorners .left, .coloredPanel03 .bottomCorners .left, .coloredPanel31 .topCorners .left, .coloredPanel31 .bottomCorners .left, .coloredPanel33 .topCorners .left, .coloredPanel33 .bottomCorners .left, .coloredPanel34 .topCorners .left, .coloredPanel34 .bottomCorners .left, .coloredPanel36 .topCorners .left, .coloredPanel36 .bottomCorners .left, .coloredPanel37 .topCorners .left, .coloredPanel37 .bottomCorners .left, .simpleInfoColoredPanel .bottomCorners .left, .extendedInfoPanel .bottomCorners .left, .gradientPanel01 .topCorners .left, .gradientPanel01 .bottomCorners .left { width: 11px;/*PetrKus 9x9*/ height: 11px; display: block; float: left; } .coloredPanel07 .topCorners .left, .coloredPanel07 .bottomCorners .left, .coloredPanel30 .topCorners .left, .coloredPanel30 .bottomCorners .left, .coloredPanel32 .topCorners .left, .coloredPanel32 .bottomCorners .left { width: 8px; height: 8px; display: block; float: left; } .coloredPanel09 .topCorners .left, .coloredPanel09 .bottomCorners .left, .coloredPanel10 .topCorners .left, .coloredPanel10 .bottomCorners .left, .coloredPanel12 .topCorners .left, .coloredPanel12 .bottomCorners .left, .programInfoColoredPanel15 .topCorners .left, .programInfoColoredPanel15 .bottomCorners .left, .coloredPanel16 .topCorners .left, .coloredPanel16 .bottomCorners .left, .coloredPanel17 .topCorners .left, .coloredPanel17 .bottomCorners .left, .coloredPanel18 .bottomCorners .left, .coloredPanel21 .topCorners .left, .coloredPanel21 .bottomCorners .left, .coloredPanel23 .topCorners .left, .coloredPanel23 .bottomCorners .left, .coloredPanel28 .topCorners .left, .coloredPanel28 .bottomCorners .left, .gradientPanel04 .topCorners .left, .gradientPanel04 .bottomCorners .left, .gradientPanel05 .topCorners .left, .simpleBorderPanel .bottomCorners .left, .simpleBorderPanel .topCorners .left { width: 7px; height: 7px; padding:0 !important; display: block; float: left; } .gradientPanel02 .topCorners .left, .gradientPanel03 .topCorners .left, .coloredPanel29 .topCorners .left, .coloredPanel29 .bottomCorners .left { width: 6px; height: 6px; display: block; float: left; } .textareaGrey .topCorners .left, .textareaGrey .bottomCorners .left, .coloredPanel25 .topCorners .left, .coloredPanel25 .bottomCorners .left { width: 5px; height: 5px; display: block; float: left; } .eshopMenuPanel .bottomCorners .left, .coloredPanel20 .topCorners .left, .coloredPanel20 .bottomCorners .left, .coloredPanel22 .topCorners .left, .coloredPanel22 .bottomCorners .left, .coloredPanel24 .topCorners .left, .coloredPanel24 .bottomCorners .left, .coloredPanel27 .topCorners .left, .coloredPanel27 .bottomCorners .left, .coloredPanel35 .topCorners .left, .coloredPanel35 .bottomCorners .left, .coloredPanel38 .topCorners .left, .coloredPanel38 .bottomCorners .left { width: 4px; height: 4px; display: block; float: left; } .coloredPanel11 .topCorners .left, .coloredPanel11 .bottomCorners .left, .coloredPanel13 .topCorners .left, .coloredPanel13 .bottomCorners .left, .coloredPanel14 .topCorners .left, .coloredPanel14 .bottomCorners .left, .coloredPanel19 .topCorners .left, .coloredPanel19 .bottomCorners .left, .coloredPanel26 .topCorners .left, .coloredPanel26 .bottomCorners .left { width: 3px; height: 3px; display: block; float: left; } .coloredPanel18 .topCorners .right { width: 7px; height: 10px !important; display: block; float: left; } .coloredPanel01 .topCorners .right, .coloredPanel01 .bottomCorners .right, .coloredPanel02 .topCorners .right, .coloredPanel02 .bottomCorners .right, .coloredPanel03 .topCorners .right, .coloredPanel03 .bottomCorners .right, .coloredPanel31 .topCorners .right, .coloredPanel31 .bottomCorners .right, .coloredPanel33 .topCorners .right, .coloredPanel33 .bottomCorners .right, .coloredPanel34 .topCorners .right, .coloredPanel34 .bottomCorners .right, .coloredPanel36 .topCorners .right, .coloredPanel36 .bottomCorners .right, .coloredPanel37 .topCorners .right, .coloredPanel37 .bottomCorners .right, .simpleInfoColoredPanel .bottomCorners .right, .extendedInfoPanel .bottomCorners .right, .gradientPanel01 .topCorners .right, .gradientPanel01 .bottomCorners .right { width: 11px; height: 11px; display: block; float: right; } .coloredPanel07 .topCorners .right, .coloredPanel07 .bottomCorners .right, .coloredPanel30 .topCorners .right, .coloredPanel30 .bottomCorners .right, .coloredPanel32 .topCorners .right, .coloredPanel32 .bottomCorners .right { width: 8px; height: 8px; display: block; float: right; } .coloredPanel09 .topCorners .right, .coloredPanel09 .bottomCorners .right, .coloredPanel10 .topCorners .right, .coloredPanel10 .bottomCorners .right, .coloredPanel12 .topCorners .right, .coloredPanel12 .bottomCorners .right, .programInfoColoredPanel15 .topCorners .right, .programInfoColoredPanel15 .bottomCorners .right, .coloredPanel16 .topCorners .right, .coloredPanel16 .bottomCorners .right, .coloredPanel17 .topCorners .right, .coloredPanel17 .bottomCorners .right, .coloredPanel18 .bottomCorners .right, .coloredPanel21 .topCorners .right, .coloredPanel21 .bottomCorners .right, .coloredPanel23 .topCorners .right, .coloredPanel23 .bottomCorners .right, .coloredPanel28 .topCorners .right, .coloredPanel28 .bottomCorners .right, .gradientPanel04 .topCorners .right, .gradientPanel04 .bottomCorners .right, .gradientPanel05 .topCorners .right, .simpleBorderPanel .bottomCorners .right, .simpleBorderPanel .topCorners .right { width: 7px !important; height: 7px; display: block; float: right; } .gradientPanel02 .topCorners .right, .gradientPanel03 .topCorners .right, .coloredPanel29 .topCorners .right, .coloredPanel29 .bottomCorners .right { width: 6px; height: 6px; display: block; float: right; } .textareaGrey .topCorners .right, .textareaGrey .bottomCorners .right, .coloredPanel25 .topCorners .right, .coloredPanel25 .bottomCorners .right { width: 5px; height: 5px; display: block; float: right; } .eshopMenuPanel .bottomCorners .right, .coloredPanel20 .topCorners .right, .coloredPanel20 .bottomCorners .right, .coloredPanel22 .topCorners .right, .coloredPanel22 .bottomCorners .right, .coloredPanel24 .topCorners .right, .coloredPanel24 .bottomCorners .right, .coloredPanel27 .topCorners .right, .coloredPanel27 .bottomCorners .right, .coloredPanel35 .topCorners .right, .coloredPanel35 .bottomCorners .right, .coloredPanel38 .topCorners .right, .coloredPanel38 .bottomCorners .right { width: 4px; height: 4px; display: block; float: right; } .coloredPanel11 .topCorners .right, .coloredPanel11 .bottomCorners .right, .coloredPanel13 .topCorners .right, .coloredPanel13 .bottomCorners .right, .coloredPanel14 .topCorners .right, .coloredPanel14 .bottomCorners .right, .coloredPanel19 .topCorners .right, .coloredPanel19 .bottomCorners .right, .coloredPanel26 .topCorners .right, .coloredPanel26 .bottomCorners .right { width: 3px; height: 3px; display: block; float: right; } .coloredPanel01 .topCorners, .coloredPanel02 .topCorners, .coloredPanel03 .topCorners, .coloredPanel07 .topCorners, .coloredPanel10 .topCorners, .coloredPanel11 .topCorners, .coloredPanel12 .topCorners, .coloredPanel13 .topCorners, .coloredPanel14 .topCorners, .coloredPanel16 .topCorners, .coloredPanel17 .topCorners, .coloredPanel18 .topCorners, .coloredPanel19 .topCorners, .coloredPanel20 .topCorners, .coloredPanel21 .topCorners, .coloredPanel22 .topCorners, .coloredPanel23 .topCorners, .coloredPanel24 .topCorners, .coloredPanel25 .topCorners, .coloredPanel26 .topCorners, .coloredPanel27 .topCorners, .coloredPanel28 .topCorners, .coloredPanel29 .topCorners, .coloredPanel30 .topCorners, .coloredPanel31 .topCorners, .coloredPanel32 .topCorners, .coloredPanel33 .topCorners, .coloredPanel34 .topCorners, .coloredPanel35 .topCorners, .coloredPanel36 .topCorners, .coloredPanel37 .topCorners, .coloredPanel38 .topCorners, .gradientPanel01 .topCorners, .gradientPanel02 .topCorners, .gradientPanel03 .topCorners, .gradientPanel04 .topCorners, .gradientPanel05 .topCorners, .simpleBorderPanel .topCorners, .textareaGrey .topCorners { position: absolute; top: 0; left: 0; } .programInfoColoredPanel15 .topCorners { position: absolute; top:1px; left:0; } /* COLORED PANEL 01 - GREY ============================================================ */ .coloredPanel01 { background: #f2f2f2 url(../images/design/content-blocks/grey-panel-02-bg.png) no-repeat 0px 0px; } .coloredPanel01 .topCorners, .coloredPanel01 .bottomCorners { background: #f2f2f2; } .coloredPanel01 .bottomCorners .right { background: #f2f2f2 url(../images/design/content-blocks/grey-panel-02-bottom-right.png) no-repeat 0px 0px; } .coloredPanel01 .bottomCorners .left { background: #f2f2f2 url(../images/design/content-blocks/grey-panel-02-bottom-left.png) no-repeat 0px 0px; } .coloredPanel01 .topCorners .left { background: #f2f2f2 url(../images/design/content-blocks/grey-panel-02-top-left.png) no-repeat 0px 0px; } .coloredPanel01 .topCorners .right { background: #f2f2f2 url(../images/design/content-blocks/grey-panel-02-top-right.png) no-repeat 0px 0px; } /* COLORED PANEL 02 - GREY ============================================================ */ .coloredPanel02 { background: #f9f8f8 url(../images/design/content-blocks/grey-panel-03-bg.png) no-repeat 0px 0px !important; } .coloredPanel02 .topCorners, .coloredPanel02 .bottomCorners { background: #f9f8f8 !important; } .coloredPanel02 .bottomCorners .right { background: #f9f8f8 url(../images/design/content-blocks/grey-panel-03-bottom-right.png) no-repeat 0px 0px !important; } .coloredPanel02 .bottomCorners .left { background: #f9f8f8 url(../images/design/content-blocks/grey-panel-03-bottom-left.png) no-repeat 0px 0px !important; } .coloredPanel02 .topCorners .left { background: #f9f8f8 url(../images/design/content-blocks/grey-panel-03-top-left.png) no-repeat 0px 0px !important; } .coloredPanel02 .topCorners .right { background: #f9f8f8 url(../images/design/content-blocks/grey-panel-03-top-right.png) no-repeat 0px 0px !important; } /* COLORED PANEL 03 - WITH GRADIENT COLORS IN TOP PART OF BACKGROUND ================== */ .gradientPanel01 { width: 285px; background: white url(../images/design/content-blocks/gradient-info-panel-01-bg.png) repeat-x 0px 0px; border: 1px solid #e9e9e9; } .gradientPanel01 .topCorners, .gradientPanel01 .bottomCorners { display: block; overflow: visible; } .gradientPanel01 .bottomCorners .right { overflow: visible; position: relative; left: 2px; top: 2px; _top: 5px; background: url(../images/design/content-blocks/gradient-info-panel-01-bottom-right.png) no-repeat 0px 0px; } .gradientPanel01 .bottomCorners .left { overflow: visible; position: relative; left: -2px; top: 2px; _top: 5px; background: url(../images/design/content-blocks/gradient-info-panel-01-bottom-left.png) no-repeat 0px 0px; } .gradientPanel01 .topCorners .left { overflow: visible; position: relative; left: -1px; top: -1px; background: #e9e9e9 url(../images/design/content-blocks/gradient-info-panel-01-top-left.png) no-repeat 0px 0px; } .gradientPanel01 .topCorners .right { overflow: visible; position: relative; left: 1px; top: -1px; background: #e9e9e9 url(../images/design/content-blocks/gradient-info-panel-01-top-right.png) no-repeat 0px 0px; } .gradientPanel01 .header { height: 16px; margin: 0 7px 4px 7px; display: block; overflow: hidden; position: relative; border-bottom: 1px dashed #c5c5c5; } .gradientPanel01 .header span { display: block; position: absolute; left: 5px; top:0px; color: #002e67; font-family: Arial; text-transform: uppercase; } .gradientPanel01 .header a { width: 28px; height: 17px; float: right; display: block; overflow: hidden; position: relative; top: 0px; z-index: 50; background: url(../images/design/controls/info-panel-control.gif) no-repeat 0px 0px; text-decoration: none; } .gradientPanel01 .header span a { width: auto; height: auto; float: none; display: inline; overflow: hidden; position: static; top: 0px; z-index: 0; background: transparent; color:#002e67; text-decoration: none; } .gradientPanel01 .header span a:hover { text-decoration: underline; } .simpleInfoPanel .header span a, .simpleInfoColoredPanel .header span a { width: auto; height: auto; float: none; display: inline; overflow: hidden; position: static; top: 0px; z-index: 0; background: transparent; color:#002e67; text-decoration: none; } .simpleInfoPanel .header span a:hover, .simpleInfoColoredPanel .header span a:hover { text-decoration: underline; } /* COLORED PANEL 03 - GREY ============================================================ */ .coloredPanel03 { padding: 9px 0 0 0; position: relative; background: #f9f7f7 url(../images/design/content-blocks/search-panel-background.png) repeat 0px 0px; } .coloredPanel03 .topCorners, .coloredPanel03 .bottomCorners { background: #f9f7f7 url(../images/design/content-blocks/search-panel-background.png) repeat 0px 0px; } .coloredPanel03 .bottomCorners .right { background: #f9f7f7 url(../images/design/content-blocks/search-panel-bottom-right.png) no-repeat 0px 0px; } .coloredPanel03 .bottomCorners .left { background: #f9f7f7 url(../images/design/content-blocks/search-panel-bottom-left.png) no-repeat 0px 0px; } .coloredPanel03 .topCorners .left { background: #f9f7f7 url(../images/design/content-blocks/search-panel-top-left.png) no-repeat 0px 0px; } .coloredPanel03 .topCorners .right { background: #f9f7f7 url(../images/design/content-blocks/search-panel-top-right.png) no-repeat 0px 0px; } /* COLORED PANEL 04 - BLUE, COLORED PANEL 05 - GREY, COLORED PANEL 06 - WHITE==================================================================================== */ .recordWithImage .bold { font-weight: bold; } .coloredPanel04, .coloredPanel05, .coloredPanel06 { width: 100%; } .coloredPanel04 { background: #DDE5F2; } .coloredPanel05 { background: #E1E1E1; } .coloredPanel06 { background: #ffffff; } .coloredPanel04 .content span.greycolor, .coloredPanel05 .content span.greycolor, .coloredPanel06 .content span.greycolor, { color: #767676; } .coloredPanel04 .content a, .coloredPanel05 .content a, .coloredPanel06 .content a { color: #002e67; text-decoration: none; } /* COLORED PANEL 07 - GREY GAME PANEL ============================================================ */ .coloredPanel07 { padding: 8px 0 0 0; position: relative; background: #e6e7e7 url(../images/design/content-blocks/grey-game-panel-bg.png) repeat 0px 0px; } .coloredPanel07 .topCorners, .coloredPanel07 .bottomCorners { background: #e6e7e7 url(../images/design/content-blocks/grey-game-panel-bg.png); } .coloredPanel07 .bottomCorners .right { background: #e6e7e7 url(../images/design/content-blocks/grey-game-panel-bottom-right.png) no-repeat 0px 0px; } .coloredPanel07 .bottomCorners .left { background: #e6e7e7 url(../images/design/content-blocks/grey-game-panel-bottom-left.png) no-repeat 0px 0px; } .coloredPanel07 .topCorners .left { background: #e6e7e7 url(../images/design/content-blocks/grey-game-panel-top-left.png) no-repeat 0px 0px; } .coloredPanel07 .topCorners .right { background: #e6e7e7 url(../images/design/content-blocks/grey-game-panel-top-right.png) no-repeat 0px 0px; } /* COLORED PANEL 09 - GREY ON LIGHTER GREY ============================================================ */ .coloredPanel09 { position: relative; background: url(../images/design/content-blocks/time-grey-panel-bg.png) repeat 0px 0px; } .coloredPanel09 .topCorners, .coloredPanel09 .bottomCorners { background: url(../images/design/content-blocks/time-grey-panel-bg.png) !important; } .coloredPanel09 .bottomCorners .right { top:0; background: #e7e7e7 url(../images/design/content-blocks/time-grey-panel-bottom-right.png) no-repeat 0px 0px !important; } .coloredPanel09 .bottomCorners .left { top:0; left:0; background: #e7e7e7 url(../images/design/content-blocks/time-grey-panel-bottom-left.png) no-repeat 0px 0px !important; } .coloredPanel09 .topCorners .left { background: #e7e7e7 url(../images/design/content-blocks/time-grey-panel-top-left.png) no-repeat 0px 0px !important; } .coloredPanel09 .topCorners .right { top:0 !important; background: #e7e7e7 url(../images/design/content-blocks/time-grey-panel-top-right.png) no-repeat 0px 0px !important; } /* COLORED PANEL 10 - GREY ON WHITE BG ============================================================ */ .coloredPanel10 { position:relative; background: #f9f9f9 url(../images/design/content-blocks/grey-programme-panel-bg.png) repeat 0px 0px; } .coloredPanel10 .topCorners, .coloredPanel10 .bottomCorners { background: #f9f9f9 url(../images/design/content-blocks/grey-programme-panel-bg.png) repeat 0px 0px; } .coloredPanel10 .bottomCorners .right { background: #f9f9f9 url(../images/design/content-blocks/grey-programme-panel-bottom-right.png) no-repeat 0px 0px; } .coloredPanel10 .bottomCorners .left { background: #f9f9f9 url(../images/design/content-blocks/grey-programme-panel-bottom-left.png) no-repeat 0px 0px; } .coloredPanel10 .topCorners .left { background: #f9f9f9 url(../images/design/content-blocks/grey-programme-panel-top-left.png) no-repeat 0px 0px; } .coloredPanel10 .topCorners .right { background: #f9f9f9 url(../images/design/content-blocks/grey-programme-panel-top-right.png) no-repeat 0px 0px; } /* COLORED PANEL 11 - GREY ON WHITE BG ============================================================ */ .coloredPanel11 { position: relative; background: #faf9f9 url(../images/design/content-blocks/grey-header-panel-bg.png) repeat 0px 0px; } .coloredPanel11 .topCorners, .coloredPanel11 .bottomCorners { background: #faf9f9 url(../images/design/content-blocks/grey-header-panel-bg.png) repeat 0px 0px; } .coloredPanel11 .bottomCorners .right { background: #faf9f9 url(../images/design/content-blocks/grey-header-panel-bottom-right.png) no-repeat 0px 0px; } .coloredPanel11 .bottomCorners .left { background: #faf9f9 url(../images/design/content-blocks/grey-header-panel-bottom-left.png) no-repeat 0px 0px; } .coloredPanel11 .topCorners .left { background: #faf9f9 url(../images/design/content-blocks/grey-header-panel-top-left.png) no-repeat 0px 0px; } .coloredPanel11 .topCorners .right { background: #faf9f9 url(../images/design/content-blocks/grey-header-panel-top-right.png) no-repeat 0px 0px; } /* COLORED PANEL 12 - GREY (SAME LIKE 09) ON WHITE BG ============================================================ */ .coloredPanel12 { position: relative; background: url(../images/design/content-blocks/time-grey-panel-bg.png) repeat 0px 0px; } .coloredPanel12 .topCorners, .coloredPanel12 .bottomCorners { background: url(../images/design/content-blocks/time-grey-panel-bg.png) repeat 0px 0px; } .coloredPanel12 .bottomCorners .right { top:0; background: #e7e7e7 url(../images/design/content-blocks/grey-time-programme-panel-bottom-right.png) no-repeat 0px 0px !important; } .coloredPanel12 .bottomCorners .left { top:0; left:0; background: #e7e7e7 url(../images/design/content-blocks/grey-time-programme-panel-bottom-left.png) no-repeat 0px 0px !important; } .coloredPanel12 .topCorners .left { background: #e7e7e7 url(../images/design/content-blocks/grey-time-programme-panel-top-left.png) no-repeat 0px 0px !important; } .coloredPanel12 .topCorners .right { background: #e7e7e7 url(../images/design/content-blocks/grey-time-programme-panel-top-right.png) no-repeat 0px 0px !important; } /* COLORED PANEL 13 - BLUE ON WHITE BG ============================================================ */ .coloredPanel13 { position:relative; background: #f6fcfe url(../images/design/content-blocks/blue-panel-bg.png) repeat 0px 0px; } .coloredPanel13 .topCorners, .coloredPanel13 .bottomCorners { background: #f6fcfe url(../images/design/content-blocks/blue-panel-bg.png) repeat 0px 0px; } .coloredPanel13 .bottomCorners .right { background: #f6fcfe url(../images/design/content-blocks/blue-panel-bottom-right.png) no-repeat 0px 0px; } .coloredPanel13 .bottomCorners .left { background: #f6fcfe url(../images/design/content-blocks/blue-panel-bottom-left.png) no-repeat 0px 0px; } .coloredPanel13 .topCorners .left { background: #f6fcfe url(../images/design/content-blocks/blue-panel-top-left.png) no-repeat 0px 0px; } .coloredPanel13 .topCorners .right { background: #f6fcfe url(../images/design/content-blocks/blue-panel-top-right.png) no-repeat 0px 0px; } /* COLORED PANEL 14 - SHARP GREY ON WHITE BG ============================================================ */ .coloredPanel14 { position: relative; background: url(../images/design/content-blocks/time-grey-panel-bg.png) repeat 0px 0px; } .coloredPanel14 .topCorners, .coloredPanel14 .bottomCorners { background: url(../images/design/content-blocks/time-grey-panel-bg.png) repeat 0px 0px; } .coloredPanel14 .bottomCorners .right { top:0; background: #e7e7e7 url(../images/design/content-blocks/grey-sharp-programme-panel-bottom-right.png) no-repeat 0px 0px !important; } .coloredPanel14 .bottomCorners .left { top:0; left:0; background: #e7e7e7 url(../images/design/content-blocks/grey-sharp-programme-panel-bottom-left.png) no-repeat 0px 0px !important; } .coloredPanel14 .topCorners .left { background: #e7e7e7 url(../images/design/content-blocks/grey-sharp-programme-panel-top-left.png) no-repeat 0px 0px !important; } .coloredPanel14 .topCorners .right { background: #e7e7e7 url(../images/design/content-blocks/grey-sharp-programme-panel-top-right.png) no-repeat 0px 0px !important; } /* COLORED PANEL 15 UL - GREY ON WHITE BG ============================================================ */ .programInfoColoredPanel15 { width: 128px; position: relative; background: url(../images/design/content-blocks/grey-list-program-panel-bg.png) repeat 0px 0px; } .programInfoColoredPanel15 .topCorners, .programInfoColoredPanel15 .bottomCorners { padding:0; background: url(../images/design/content-blocks/grey-list-program-panel-bg.png) repeat 0px 0px; } .programInfoColoredPanel15 .bottomCorners .right { top:0; background: #f7f8f9 url(../images/design/content-blocks/grey-list-program-panel-bottom-right.png) no-repeat 0px 0px !important; } .programInfoColoredPanel15 .bottomCorners .left { top:0; left:0; background: #f7f8f9 url(../images/design/content-blocks/grey-list-program-panel-bottom-left.png) no-repeat 0px 0px !important; } .programInfoColoredPanel15 .topCorners .left { background: #f7f8f9 url(../images/design/content-blocks/grey-list-program-panel-top-left.png) no-repeat 0px 0px !important; } .programInfoColoredPanel15 .topCorners .right { background: #f7f8f9 url(../images/design/content-blocks/grey-list-program-panel-top-right.png) no-repeat 0px 0px !important; } /* COLORED PANEL 16 - GREY ON WHITE BG ============================================================ */ .coloredPanel16 { position: relative; background: #fafafa url(../images/design/content-blocks/grey-link-program-panel-bg.png) repeat 0px 0px; } .coloredPanel16 .topCorners, .coloredPanel16 .bottomCorners { padding:0; background: #fafafa url(../images/design/content-blocks/grey-link-program-panel-bg.png) repeat 0px 0px; } .coloredPanel16 .bottomCorners .right { top:0; background: #fafafa url(../images/design/content-blocks/grey-link-program-panel-bottom-right.png) no-repeat 0px 0px !important; } .coloredPanel16 .bottomCorners .left { top:0; left:0; background: #fafafa url(../images/design/content-blocks/grey-link-program-panel-bottom-left.png) no-repeat 0px 0px !important; } .coloredPanel16 .topCorners .left { background: #fafafa url(../images/design/content-blocks/grey-link-program-panel-top-left.png) no-repeat 0px 0px !important; } .coloredPanel16 .topCorners .right { background: #fafafa url(../images/design/content-blocks/grey-link-program-panel-top-right.png) no-repeat 0px 0px !important; } /* COLORED PANEL 17 - WHITE ON GREY BG ============================================================ */ .coloredPanel17 { position: relative; background: #f8f8f8 url(../images/design/content-blocks/white-on-grey-panel-bg.png) repeat 0px 0px; } .coloredPanel17 .topCorners, .coloredPanel17 .bottomCorners { padding:0; background: #f8f8f8 url(../images/design/content-blocks/white-on-grey-panel-bg.png) repeat 0px 0px; } .coloredPanel17 .bottomCorners .right { top:0; background: #f8f8f8 url(../images/design/content-blocks/white-on-grey-panel-bottom-right.png) no-repeat 0px 0px !important; } .coloredPanel17 .bottomCorners .left { top:0; left:0; background: #f8f8f8 url(../images/design/content-blocks/white-on-grey-panel-bottom-left.png) no-repeat 0px 0px !important; } .coloredPanel17 .topCorners .left { background: #f8f8f8 url(../images/design/content-blocks/white-on-grey-panel-top-left.png) no-repeat 0px 0px !important; } .coloredPanel17 .topCorners .right { background: #f8f8f8 url(../images/design/content-blocks/white-on-grey-panel-top-right.png) no-repeat 0px 0px !important; } /* COLORED PANEL 18 - GREY ON WHITE BG WITH RED BORDER ============================================================ */ .coloredPanel18 { position: relative; background: #dcdcdc url(../images/design/content-blocks/grey-panel-red-border-bg.png) repeat 0px 0px; } .coloredPanel18 .content { padding:12px 0px 8px 0px; border-left:1px solid #ae2c31; border-right:1px solid #ae2c31; } .coloredPanel18 .topCorners { background: #dcdcdc url(../images/design/content-blocks/grey-panel-red-border-top-bg.png) repeat 0px 0px !important; } .coloredPanel18 .bottomCorners { background: #dcdcdc url(../images/design/content-blocks/grey-panel-red-border-bottom-bg.png) repeat 0px 0px; } .coloredPanel18 .bottomCorners .right { background: #dcdcdc url(../images/design/content-blocks/grey-panel-red-border-bottom-right.png) no-repeat 0px 0px !important; } .coloredPanel18 .bottomCorners .left { background: #dcdcdc url(../images/design/content-blocks/grey-panel-red-border-bottom-left.png) no-repeat 0px 0px !important; } .coloredPanel18 .topCorners .left { background: #dcdcdc url(../images/design/content-blocks/grey-panel-red-border-top-left.png) no-repeat 0px 0px !important; } .coloredPanel18 .topCorners .right { background: #dcdcdc url(../images/design/content-blocks/grey-panel-red-border-top-right.png) no-repeat 0px 0px !important; } /* COLORED PANEL 19 - LIKE COLORED PANEL 03 WITH SHARP CORNERS ================================== */ .coloredPanel19 { position:relative; background: #f9f7f7 url(../images/design/content-blocks/search-panel-background.png) repeat 0px 0px; } .coloredPanel19 .topCorners, .coloredPanel19 .bottomCorners { background: #f9f7f7 url(../images/design/content-blocks/search-panel-background.png) repeat 0px 0px; } .coloredPanel19 .bottomCorners .right { background: #f9f7f7 url(../images/design/content-blocks/grey-sharp-bottom-right.png) no-repeat 0px 0px; } .coloredPanel19 .bottomCorners .left { background: #f9f7f7 url(../images/design/content-blocks/grey-sharp-bottom-left.png) no-repeat 0px 0px; } .coloredPanel19 .topCorners .left { background: #f9f7f7 url(../images/design/content-blocks/grey-sharp-top-left.png) no-repeat 0px 0px; } .coloredPanel19 .topCorners .right { background: #f9f7f7 url(../images/design/content-blocks/grey-sharp-top-right.png) no-repeat 0px 0px; } /************* COLORED PANEL 20 - GREY LIST PROGRAM PANEL *********************************************/ .coloredPanel20 { width:100%; float:left; position: relative; background: url(../images/design/content-blocks/grey-list-program-panel-bg.png) repeat 0px 0px; } .coloredPanel20 .content { padding:4px 0 0 10px; } .coloredPanel20 .topCorners, .coloredPanel20 .bottomCorners { padding:0; background: url(../images/design/content-blocks/grey-list-program-panel-bg.png) repeat 0px 0px; } .coloredPanel20 .bottomCorners .right { top:0; background: #f7f8f9 url(../images/design/content-blocks/light-grey-header-panel-bottom-right.png) no-repeat 0px 0px !important; } .coloredPanel20 .bottomCorners .left { top:0; left:0; background: #f7f8f9 url(../images/design/content-blocks/light-grey-header-panel-bottom-left.png) no-repeat 0px 0px !important; } .coloredPanel20 .topCorners .left { background: #f7f8f9 url(../images/design/content-blocks/light-grey-header-panel-top-left.png) no-repeat 0px 0px !important; } .coloredPanel20 .topCorners .right { background: #f7f8f9 url(../images/design/content-blocks/light-grey-header-panel-top-right.png) no-repeat 0px 0px !important; } /********** COLORED PANEL 21 - GREY ADVERTISING PANEL **************************************************/ .coloredPanel21 { position: relative; background: #f4f4f4 url(../images/design/content-blocks/grey-advertising-panel-bg.png) repeat 0px 0px; } .coloredPanel21 .content { padding:14px 12px 2px 12px; } .coloredPanel21 .topCorners, .coloredPanel21 .bottomCorners { padding:0; background: #f4f4f4 url(../images/design/content-blocks/grey-advertising-panel-bg.png) repeat 0px 0px; } .coloredPanel21 .bottomCorners .right { top:0; background: #f4f4f4 url(../images/design/content-blocks/grey-advertising-panel-bottom-right.png) no-repeat 0px 0px !important; } .coloredPanel21 .bottomCorners .left { top:0; left:0; background: #f4f4f4 url(../images/design/content-blocks/grey-advertising-panel-bottom-left.png) no-repeat 0px 0px !important; } .coloredPanel21 .topCorners .left { background: #f4f4f4 url(../images/design/content-blocks/grey-advertising-panel-top-left.png) no-repeat 0px 0px !important; } .coloredPanel21 .topCorners .right { background: #f4f4f4 url(../images/design/content-blocks/grey-advertising-panel-top-right.png) no-repeat 0px 0px !important; } /************* COLORED PANEL 22 - GREY LIST PROGRAM PANEL ON GREY BG *********************************************/ .coloredPanel22 { position: relative; background: url(../images/design/content-blocks/grey-list-program-panel-bg.png) repeat 0px 0px; } .coloredPanel22 .info { padding:2px 0 0 10px; } .coloredPanel22 .topCorners, .coloredPanel22 .bottomCorners { padding:0; background: url(../images/design/content-blocks/grey-list-program-panel-bg.png) repeat 0px 0px; } .coloredPanel22 .bottomCorners .right { top:0; background: #f7f8f9 url(../images/design/content-blocks/light-grey-footer-panel-bottom-right.png) no-repeat 0px 0px !important; } .coloredPanel22 .bottomCorners .left { top:0; left:0; background: #f7f8f9 url(../images/design/content-blocks/light-grey-footer-panel-bottom-left.png) no-repeat 0px 0px !important; } .coloredPanel22 .topCorners .left { background: #f7f8f9 url(../images/design/content-blocks/light-grey-footer-panel-top-left.png) no-repeat 0px 0px !important; } .coloredPanel22 .topCorners .right { background: #f7f8f9 url(../images/design/content-blocks/light-grey-footer-panel-top-right.png) no-repeat 0px 0px !important; } /********** COLORED PANEL 23 - BLUE ADVERTISING PANEL **************************************************/ .coloredPanel23 { position: relative; background: #eff8fd url(../images/design/content-blocks/blue-advertising-panel-bg.png) repeat 0px 0px; } .coloredPanel23 .content { padding:14px 12px 2px 12px; } .coloredPanel23 .topCorners, .coloredPanel23 .bottomCorners { padding:0; background: #eff8fd url(../images/design/content-blocks/blue-advertising-panel-bg.png) repeat 0px 0px; } .coloredPanel23 .bottomCorners .right { top:0; background: #eff8fd url(../images/design/content-blocks/blue-advertising-panel-bottom-right.png) no-repeat 0px 0px !important; } .coloredPanel23 .bottomCorners .left { top:0; left:0; background: #eff8fd url(../images/design/content-blocks/blue-advertising-panel-bottom-left.png) no-repeat 0px 0px !important; } .coloredPanel23 .topCorners .left { background: #eff8fd url(../images/design/content-blocks/blue-advertising-panel-top-left.png) no-repeat 0px 0px !important; } .coloredPanel23 .topCorners .right { background: #eff8fd url(../images/design/content-blocks/blue-advertising-panel-top-right.png) no-repeat 0px 0px !important; } /************* COLOREd PANEL 24 - GREY LIST PROGRAM PANEL ON BLUE BG *********************************************/ .coloredPanel24 { position: relative; background: #f7f8f9 url(../images/design/content-blocks/grey-list-program-panel-bg.png) repeat 0px 0px; } .coloredPanel24 .info { padding:2px 0 0 10px; } .coloredPanel24 .topCorners, .coloredPanel24 .bottomCorners { padding:0; background: #f7f8f9 url(../images/design/content-blocks/grey-list-program-panel-bg.png) repeat 0px 0px; } .coloredPanel24 .bottomCorners .right { top:0; background: #f7f8f9 url(../images/design/content-blocks/grey-on-blue-footer-panel-bottom-right.png) no-repeat 0px 0px !important; } .coloredPanel24 .bottomCorners .left { top:0; left:0; background: #f7f8f9 url(../images/design/content-blocks/grey-on-blue-footer-panel-bottom-left.png) no-repeat 0px 0px !important; } .coloredPanel24 .topCorners .left { background: #f7f8f9 url(../images/design/content-blocks/grey-on-blue-footer-panel-top-left.png) no-repeat 0px 0px !important; } .coloredPanel24 .topCorners .right { background: #f7f8f9 url(../images/design/content-blocks/grey-on-blue-footer-panel-top-right.png) no-repeat 0px 0px !important; } /* COLORED PANEL 25 BLUE ON GREY BG ******************************************************/ .coloredPanel25 { position:relative; background: #f6fcfe url(../images/design/content-blocks/blue-panel-bg.png) repeat 0px 0px; } .coloredPanel25 .content { padding:12px 0 10px 12px; } .coloredPanel25 .topCorners, .coloredPanel25 .bottomCorners { background: #f6fcfe url(../images/design/content-blocks/blue-panel-bg.png) repeat 0px 0px; } .coloredPanel25 .bottomCorners .right { background: #f6fcfe url(../images/design/content-blocks/blue-header-panel-bottom-right.png) no-repeat 0px 0px; } .coloredPanel25 .bottomCorners .left { background: #f6fcfe url(../images/design/content-blocks/blue-header-panel-bottom-left.png) no-repeat 0px 0px; } .coloredPanel25 .topCorners .left { background: #f6fcfe url(../images/design/content-blocks/blue-header-panel-top-left.png) no-repeat 0px 0px; } .coloredPanel25 .topCorners .right { background: #f6fcfe url(../images/design/content-blocks/blue-header-panel-top-right.png) no-repeat 0px 0px; } /* COLORED PANEL 26 GREY ON WHITE BG ******************************************************/ .coloredPanel26 { position:relative; background: #f5f5f5 url(../images/design/content-blocks/grey-forum-footer-panel-bg.png) repeat 0px 0px; } .coloredPanel26 .content { padding:16px 10px 14px 10px; } .coloredPanel26 .topCorners, .coloredPanel26 .bottomCorners { background: #f5f5f5 url(../images/design/content-blocks/grey-forum-footer-panel-bg.png) repeat 0px 0px; } .coloredPanel26 .bottomCorners .right { background: #fff url(../images/design/content-blocks/grey-forum-footer-panel-bottom-right.png) no-repeat 0px 0px; } .coloredPanel26 .bottomCorners .left { background: #fff url(../images/design/content-blocks/grey-forum-footer-panel-bottom-left.png) no-repeat 0px 0px; } .coloredPanel26 .topCorners .left { background: #fff url(../images/design/content-blocks/grey-forum-footer-panel-top-left.png) no-repeat 0px 0px; } .coloredPanel26 .topCorners .right { background: #fff url(../images/design/content-blocks/grey-forum-footer-panel-top-right.png) no-repeat 0px 0px; } /* COLORED PANEL 27 GREY ON GREY BG ******************************************************/ .coloredPanel27 { position:relative; background: #efefef url(../images/design/content-blocks/grey-emoticon-panel-bg.png) repeat 0px 0px; } .coloredPanel27 .topCorners, .coloredPanel27 .bottomCorners { background: #efefef url(../images/design/content-blocks/grey-emoticon-panel-bg.png) repeat 0px 0px; } .coloredPanel27 .bottomCorners .right { background: #f5f5f5 url(../images/design/content-blocks/grey-emoticon-panel-bottom-right.png) no-repeat 0px 0px; } .coloredPanel27 .bottomCorners .left { background: #f5f5f5 url(../images/design/content-blocks/grey-emoticon-panel-bottom-left.png) no-repeat 0px 0px; } .coloredPanel27 .topCorners .left { background: #f5f5f5 url(../images/design/content-blocks/grey-emoticon-panel-top-left.png) no-repeat 0px 0px; } .coloredPanel27 .topCorners .right { background: #f5f5f5 url(../images/design/content-blocks/grey-emoticon-panel-top-right.png) no-repeat 0px 0px; } /* COLORED PANEL 28 ******************************************************/ .coloredPanel28 { position:relative; background: #f6f6f6 url(../images/design/content-blocks/grey-program-search-panel-bg.png) repeat 0px 0px; } .coloredPanel28 .content { padding:7px 14px 6px 20px; } .coloredPanel28 .topCorners, .coloredPanel28 .bottomCorners { background: #f6f6f6 url(../images/design/content-blocks/grey-program-search-panel-bg.png) repeat 0px 0px; } .coloredPanel28 .bottomCorners .right { background: #fff url(../images/design/content-blocks/grey-program-search-panel-bottom-right.png) no-repeat 0px 0px; } .coloredPanel28 .bottomCorners .left { background: #fff url(../images/design/content-blocks/grey-program-search-panel-bottom-left.png) no-repeat 0px 0px; } .coloredPanel28 .topCorners .left { background: #fff url(../images/design/content-blocks/grey-program-search-panel-top-left.png) no-repeat 0px 0px; } .coloredPanel28 .topCorners .right { background: #fff url(../images/design/content-blocks/grey-program-search-panel-top-right.png) no-repeat 0px 0px; } /* COLORED PANEL 29 ******************************************************/ .coloredPanel29 { position:relative; background: #e3e3e3 url(../images/design/content-blocks/grey-on-grey-panel-bg.png) repeat 0px 0px; } .coloredPanel29 .content { padding:6px 0px 0px 0px; } .coloredPanel29 .topCorners, .coloredPanel29 .bottomCorners { background: #e3e3e3 url(../images/design/content-blocks/grey-on-grey-panel-bg.png) repeat 0px 0px; } .coloredPanel29 .bottomCorners .right { background: #f6f6f6 url(../images/design/content-blocks/grey-on-grey-panel-bottom-right.png) no-repeat 0px 0px; } .coloredPanel29 .bottomCorners .left { background: #f6f6f6 url(../images/design/content-blocks/grey-on-grey-panel-bottom-left.png) no-repeat 0px 0px; } .coloredPanel29 .topCorners .left { background: #f6f6f6 url(../images/design/content-blocks/grey-on-grey-panel-top-left.png) no-repeat 0px 0px; } .coloredPanel29 .topCorners .right { background: #f6f6f6 url(../images/design/content-blocks/grey-on-grey-panel-top-right.png) no-repeat 0px 0px; } /* COLORED PANEL 30 DARK GREY ON WHITE BG ******************************************************/ .coloredPanel30 { position:relative; background: #e9e9e9 url(../images/design/content-blocks/dark-grey-address-panel-bg.png) repeat 0px 0px; } .coloredPanel30 .topCorners, .coloredPanel30 .bottomCorners { background: #e9e9e9 url(../images/design/content-blocks/dark-grey-address-panel-bg.png) repeat 0px 0px; } .coloredPanel30 .bottomCorners .right { background: #fff url(../images/design/content-blocks/dark-grey-address-panel-bottom-right.png) no-repeat 0px 0px; } .coloredPanel30 .bottomCorners .left { background: #fff url(../images/design/content-blocks/dark-grey-address-panel-bottom-left.png) no-repeat 0px 0px; } .coloredPanel30 .topCorners .left { background: #fff url(../images/design/content-blocks/dark-grey-address-panel-top-left.png) no-repeat 0px 0px; } .coloredPanel30 .topCorners .right { background: #fff url(../images/design/content-blocks/dark-grey-address-panel-top-right.png) no-repeat 0px 0px; } /* COLORED PANEL 31 DARK GREY ON GREY BG ******************************************************/ .coloredPanel31 { position:relative; background: #d9dad7 url(../images/design/content-blocks/advertisment-header-panel-bg.png) repeat 0px 0px; } .coloredPanel31 .topCorners, .coloredPanel31 .bottomCorners { background: #d9dad7 url(../images/design/content-blocks/advertisment-header-panel-bg.png) repeat 0px 0px; } .coloredPanel31 .bottomCorners .right { background: #f9f7f7 url(../images/design/content-blocks/advertisment-header-panel-bottom-right.png) no-repeat 0px 0px; } .coloredPanel31 .bottomCorners .left { background: #f9f7f7 url(../images/design/content-blocks/advertisment-header-panel-bottom-left.png) no-repeat 0px 0px; } .coloredPanel31 .topCorners .left { background: #f9f7f7 url(../images/design/content-blocks/advertisment-header-panel-top-left.png) no-repeat 0px 0px; } .coloredPanel31 .topCorners .right { background: #f9f7f7 url(../images/design/content-blocks/advertisment-header-panel-top-right.png) no-repeat 0px 0px; } .coloredPanel03 .coloredPanel31 .bottomCorners .right { background: #f9f7f7 url(../images/design/content-blocks/advertisment-header-panel-bottom-right-bgF9F7F7.png) no-repeat 0px 0px; } .coloredPanel03 .coloredPanel31 .bottomCorners .left { background: #f9f7f7 url(../images/design/content-blocks/advertisment-header-panel-bottom-left-bgF9F7F7.png) no-repeat 0px 0px; } .coloredPanel03 .coloredPanel31 .topCorners .left { background: #f9f7f7 url(../images/design/content-blocks/advertisment-header-panel-top-left-bgF9F7F7.png) no-repeat 0px 0px; } .coloredPanel03 .coloredPanel31 .topCorners .right { background: #f9f7f7 url(../images/design/content-blocks/advertisment-header-panel-top-right-bgF9F7F7.png) no-repeat 0px 0px; } /* COLORED PANEL 32 DARK GREY ON GREY BG ******************************************************/ .coloredPanel32 { position:relative; background: #ebebeb url(../images/design/content-blocks/add-friend-panel-bg.png) repeat 0px 0px; } .coloredPanel32 .topCorners, .coloredPanel32 .bottomCorners { background: #ebebeb url(../images/design/content-blocks/add-friend-panel-bg.png) repeat 0px 0px; } .coloredPanel32 .bottomCorners .right { background: #f9f7f7 url(../images/design/content-blocks/add-friend-panel-bottom-right.png) no-repeat 0px 0px; } .coloredPanel32 .bottomCorners .left { background: #f9f7f7 url(../images/design/content-blocks/add-friend-panel-bottom-left.png) no-repeat 0px 0px; } .coloredPanel32 .topCorners .left { background: #f9f7f7 url(../images/design/content-blocks/add-friend-panel-top-left.png) no-repeat 0px 0px; } .coloredPanel32 .topCorners .right { background: #f9f7f7 url(../images/design/content-blocks/add-friend-panel-top-right.png) no-repeat 0px 0px; } .coloredPanel03 .coloredPanel32 .bottomCorners .right { background: #f9f7f7 url(../images/design/content-blocks/add-friend-panel-bottom-right-bgF9F7F7.png) no-repeat 0px 0px; } .coloredPanel03 .coloredPanel32 .bottomCorners .left { background: #f9f7f7 url(../images/design/content-blocks/add-friend-panel-bottom-left-bgF9F7F7.png) no-repeat 0px 0px; } .coloredPanel03 .coloredPanel32 .topCorners .left { background: #f9f7f7 url(../images/design/content-blocks/add-friend-panel-top-left-bgF9F7F7.png) no-repeat 0px 0px; } .coloredPanel03 .coloredPanel32 .topCorners .right { background: #f9f7f7 url(../images/design/content-blocks/add-friend-panel-top-right-bgF9F7F7.png) no-repeat 0px 0px; } /* COLORED PANEL 33 - ORANGE ============================================================ */ .coloredPanel33 { background: #fdf4e9 url(../images/design/content-blocks/orange-panel-bg.png) repeat 0px 0px; } .coloredPanel33 .topCorners, .coloredPanel33 .bottomCorners { background: #fdf4e9; } .coloredPanel33 .bottomCorners .right { background: #fdf4e9 url(../images/design/content-blocks/orange-panel-bottom-right.png) no-repeat 0px 0px; } .coloredPanel33 .bottomCorners .left { background: #fdf4e9 url(../images/design/content-blocks/orange-panel-bottom-left.png) no-repeat 0px 0px; } .coloredPanel33 .topCorners .left { background: #fdf4e9 url(../images/design/content-blocks/orange-panel-top-left.png) no-repeat 0px 0px; } .coloredPanel33 .topCorners .right { background: #fdf4e9 url(../images/design/content-blocks/orange-panel-top-right.png) no-repeat 0px 0px; } /* COLORED PANEL 34 DARK GREY ON ORANGE BG ******************************************************/ .coloredPanel34 { position:relative; background: #d9dad7 url(../images/design/content-blocks/advertisment-header-panel-bg.png) repeat 0px 0px; } .coloredPanel34 .topCorners, .coloredPanel34 .bottomCorners { background: #d9dad7 url(../images/design/content-blocks/advertisment-header-panel-bg.png) repeat 0px 0px; } .coloredPanel34 .bottomCorners .right { background: #fdf4e9 url(../images/design/content-blocks/grey-on-orange-panel-bottom-right.png) no-repeat 0px 0px; } .coloredPanel34 .bottomCorners .left { background: #fdf4e9 url(../images/design/content-blocks/grey-on-orange-panel-bottom-left.png) no-repeat 0px 0px; } .coloredPanel34 .topCorners .left { background: #fdf4e9 url(../images/design/content-blocks/grey-on-orange-panel-top-left.png) no-repeat 0px 0px; } .coloredPanel34 .topCorners .right { background: #fdf4e9 url(../images/design/content-blocks/grey-on-orange-panel-top-right.png) no-repeat 0px 0px; } /* COLORED PANEL 35 DARK ORANGE ON ORANGE BG ******************************************************/ .coloredPanel35 { position:relative; background: #e7922c url(../images/design/content-blocks/dark-orange-panel-bg.png) repeat 0px 0px; } .coloredPanel35 .topCorners, .coloredPanel35 .bottomCorners { background: #e7922c url(../images/design/content-blocks/dark-orange-panel-bg.png) repeat 0px 0px; } .coloredPanel35 .bottomCorners .right { background: #fdf4e9 url(../images/design/content-blocks/dark-orange-panel-bottom-right.png) no-repeat 0px 0px; } .coloredPanel35 .bottomCorners .left { background: #fdf4e9 url(../images/design/content-blocks/dark-orange-panel-bottom-left.png) no-repeat 0px 0px; } .coloredPanel35 .topCorners .left { background: #fdf4e9 url(../images/design/content-blocks/dark-orange-panel-top-left.png) no-repeat 0px 0px; } .coloredPanel35 .topCorners .right { background: #fdf4e9 url(../images/design/content-blocks/dark-orange-panel-top-right.png) no-repeat 0px 0px; } /* COLORED PANEL 36 - BLUE ============================================================ */ .coloredPanel36 { background: #e5eff2 url(../images/design/content-blocks/blue-article-panel-bg.png) repeat 0px 0px; } .coloredPanel36 .topCorners, .coloredPanel36 .bottomCorners { background: #e5eff2; } .coloredPanel36 .bottomCorners .right { background: #e5eff2 url(../images/design/content-blocks/blue-article-panel-bottom-right.png) no-repeat 0px 0px; } .coloredPanel36 .bottomCorners .left { background: #e5eff2 url(../images/design/content-blocks/blue-article-panel-bottom-left.png) no-repeat 0px 0px; } .coloredPanel36 .topCorners .left { background: #e5eff2 url(../images/design/content-blocks/blue-article-panel-top-left.png) no-repeat 0px 0px; } .coloredPanel36 .topCorners .right { background: #e5eff2 url(../images/design/content-blocks/blue-article-panel-top-right.png) no-repeat 0px 0px; } /* COLORED PANEL 37 DARK GREY ON BLUE BG ******************************************************/ .coloredPanel37 { position:relative; background: #d9dad7 url(../images/design/content-blocks/advertisment-header-panel-bg.png) repeat 0px 0px; } .coloredPanel37 .topCorners, .coloredPanel37 .bottomCorners { background: #d9dad7 url(../images/design/content-blocks/advertisment-header-panel-bg.png) repeat 0px 0px; } .coloredPanel37 .bottomCorners .right { background: #e5eff2 url(../images/design/content-blocks/grey-on-blue-panel-bottom-right.png) no-repeat 0px 0px; } .coloredPanel37 .bottomCorners .left { background: #e5eff2 url(../images/design/content-blocks/grey-on-blue-panel-bottom-left.png) no-repeat 0px 0px; } .coloredPanel37 .topCorners .left { background: #e5eff2 url(../images/design/content-blocks/grey-on-blue-panel-top-left.png) no-repeat 0px 0px; } .coloredPanel37 .topCorners .right { background: #e5eff2 url(../images/design/content-blocks/grey-on-blue-panel-top-right.png) no-repeat 0px 0px; } /* COLORED PANEL 38 DARK BLUE ON BLUE BG ******************************************************/ .coloredPanel38 { position:relative; background: #005e82 url(../images/design/content-blocks/dark-blue-panel-bg.png) repeat 0px 0px; } .coloredPanel38 .topCorners, .coloredPanel38 .bottomCorners { background: #005e82 url(../images/design/content-blocks/dark-blue-panel-bg.png) repeat 0px 0px; } .coloredPanel38 .bottomCorners .right { background: #e5eff2 url(../images/design/content-blocks/dark-blue-panel-bottom-right.png) no-repeat 0px 0px; } .coloredPanel38 .bottomCorners .left { background: #e5eff2 url(../images/design/content-blocks/dark-blue-panel-bottom-left.png) no-repeat 0px 0px; } .coloredPanel38 .topCorners .left { background: #e5eff2 url(../images/design/content-blocks/dark-blue-panel-top-left.png) no-repeat 0px 0px; } .coloredPanel38 .topCorners .right { background: #e5eff2 url(../images/design/content-blocks/dark-blue-panel-top-right.png) no-repeat 0px 0px; } /* GRADIENT PANEL 02 and 03 - WITH GRADIENT COLORS IN TOP PART OF BACKGROUND ================== */ .gradientPanel02, .gradientPanel03 { width: 220px; margin-bottom:6px; position:relative; background: #dcdcdc url(../images/design/content-blocks/eshop-menu-panel-01-bg.png) repeat 0px 0px; } .gradientPanel02 .topCorners, .gradientPanel03 .topCorners { display: block; overflow: visible; background: #dcdcdc url(../images/design/content-blocks/gradient-list-panel-header-bg.png) repeat 0px 0px; } .gradientPanel02 .topCorners .left { background: #dcdcdc url(../images/design/content-blocks/gradient-list-panel-header-left.png) no-repeat 0px 0px; } .gradientPanel02 .topCorners .right { background: #dcdcdc url(../images/design/content-blocks/gradient-list-panel-header-right.png) no-repeat 0px 0px; } .gradientPanel03 .topCorners .left { background: #dcdcdc url(../images/design/content-blocks/gradient-list-panel-03-header-left.png) no-repeat 0px 0px; } .gradientPanel03 .topCorners .right { background: #dcdcdc url(../images/design/content-blocks/gradient-list-panel-03-header-right.png) no-repeat 0px 0px; } /* GRADIENT PANEL 04 - WITH BLUE GRADIENT COLORS IN TOP PART OF BACKGROUND AND GREY PART ON BOTTOM === */ .gradientPanel04 { width: 250px; min-height:180px; margin-bottom:14px; float:left; position:relative; background: white url(../images/design/content-blocks/product-panel-header-bgt.png) repeat-x 0px 7px; border: 1px solid #e9e9e9; border-top:0; } .gradientPanel04 .topCorners { display: block; overflow: visible; background: #7c9ccc url(../images/design/content-blocks/product-panel-top-bg.png) repeat-x 0px 0px; } .gradientPanel04 .bottomCorners { display: block; overflow:visible; background: #dcdcdc url(../images/design/content-blocks/product-panel-bottom-bgt.png) repeat 0px 0px; } .gradientPanel04 .bottomCorners .right { overflow:hidden; position: relative; left: 1px; top: 1px; background: #dcdcdc url(../images/design/content-blocks/product-panel-bottom-right.png) no-repeat 0px 0px; } .gradientPanel04 .bottomCorners .left { overflow:hidden; position: relative; left: -1px; top: 1px; background: #dcdcdc url(../images/design/content-blocks/product-panel-bottom-left.png) no-repeat 0px 0px; } .gradientPanel04 .topCorners .left { overflow: hidden; position: relative; left: -1px; background: #7c9ccc url(../images/design/content-blocks/product-panel-top-left.png) no-repeat 0px 0px; } .gradientPanel04 .topCorners .right { overflow: hidden; position: relative; left: 1px; background: #7c9ccc url(../images/design/content-blocks/product-panel-top-right.png) no-repeat 0px 0px; } /* GRADIENT PANEL 05 - WITH RED GRADIENT COLORS IN TOP PART OF BACKGROUND === */ .gradientPanel05 .header { margin-left:10px; padding:5px 0 3px 0px; overflow:visible; position:relative; z-index:100; color:#fff; font-size:12px; } .gradientPanel05 { width: 220px; margin:4px 0 14px 0; float:left; position:relative; background: #c14e53 url(../images/design/content-blocks/red-gradient-panel-header-bg.png) repeat-x 0px 7px; } .gradientPanel05 .topCorners { display: block; overflow: visible; z-index:10; background: #c14e53 url(../images/design/content-blocks/red-gradient-panel-top-bg.png) repeat-x 0px 0px; } .gradientPanel05 .topCorners .left { overflow: hidden; background: #c14e53 url(../images/design/content-blocks/red-gradient-panel-top-left.png) no-repeat 0px 0px; } .gradientPanel05 .topCorners .right { overflow: hidden; background: #c14e53 url(../images/design/content-blocks/red-gradient-panel-top-right.png) no-repeat 0px 0px; } /* E-SHOP MENU PANEL ======================================================= */ .eshopMenuPanel { width: 200px; float:left; background: #f9f7f7 url(../images/design/content-blocks/eshop-menu-panel-01-bg.png) repeat 0px 0px; } .eshopMenuPanel .bottomCorners { position:relative; top:17px; background: #f9f7f7 url(../images/design/content-blocks/eshop-menu-panel-01-bg.png) repeat 0px 0px; } .eshopMenuPanel .bottomCorners .right { overflow:hidden; position: relative; background: #f9f7f7 url(../images/design/content-blocks/eshop-menu-panel-01-bottom-right.png) no-repeat 0px 0px; } .eshopMenuPanel .bottomCorners .left { overflow:hidden; position: relative; background: #f9f7f7 url(../images/design/content-blocks/eshop-menu-panel-01-bottom-left.png) no-repeat 0px 0px; } /* PAGING ========================================= */ .paging { padding: 10px 0 15px 0; color: #C5C5C5; text-align:center; } .paging a { margin: 0 1px 0 1px; color: #002e67; text-decoration: none; } .paging a:hover { text-decoration: underline; } .paging a.selected, .paging .selected { color: #ca262d; } .paging a.prew, .arrow2 a { margin: 0 13px 0 0; } .paging a.next, .arrow3 a { margin: 0 0 0 13px; } .arrow2, .arrow3 { display:inline; } /* SIMPLE INFORMATION PANEL - GLOBAL SETTINGS ========================================= */ .simpleInfoPanel, .simpleInfoColoredPanel { width: 235px; background: white; } .simpleInfoPanel .header, .simpleInfoColoredPanel .header { width: 100%; height: 18px; clear: both; border-bottom: 1px dashed #c5c5c5; } .simpleInfoPanel .content, .simpleInfoColoredPanel .content { padding-top: 10px; } .simpleInfoPanel .header span, .simpleInfoColoredPanel .header span { padding: 4px 10px 0 10px; display: block; color: #002e67; font-size: 80%; text-transform: uppercase; } .simpleInfoPanel .header a, .simpleInfoColoredPanel .header a { width: 28px; height: 17px; float: right; display: block; overflow: hidden; position: relative; top: 1px; background: #dddddd url(../images/design/controls/info-panel-control.png) no-repeat 0px 0px; } .simpleInfoPanel .header a span, .simpleInfoColoredPanel .header a span { display: none; } /* SIMPLE INFORMATION PANEL COLORED =================================================== */ .simpleInfoColoredPanel .header { background: white; } .simpleInfoColoredPanel .content { background: #e3e0e0 url(../images/design/content-blocks/info-panel-simple-bg.png) repeat-x 0px 0px; } .simpleInfoColoredPanel .bottomCorners { background: #e3e0e0 url(../images/design/content-blocks/info-panel-simple-bg.png) repeat-x 0px bottom; } .simpleInfoColoredPanel .bottomCorners .right { background: #e3e0e0 url(../images/design/content-blocks/info-panel-simple-bottom-right.png) no-repeat 0px 0px; } .simpleInfoColoredPanel .bottomCorners .left { background: #e3e0e0 url(../images/design/content-blocks/info-panel-simple-bottom-left.png) no-repeat 0px 0px; } /* TEXTAREA - WHITE ON GREY BG ****************************************************************/ .textareaGrey { float:left; overflow:hidden; position:relative; background: #fff url(../images/design/forms/textarea-left.png) repeat-y 0px 0px; } .textareaGrey .topCorners { background: #fff url(../images/design/forms/textarea-top.png) repeat-x 0px 0px; } .textareaGrey .bottomCorners { background: #fff; } .textareaGrey .bottomCorners .right { background: #f9f7f7 url(../images/design/forms/textarea-bottom-right.png) no-repeat 0px 0px; } .textareaGrey .bottomCorners .left { background: #f9f7f7 url(../images/design/forms/textarea-bottom-left.png) no-repeat 0px 0px; } .textareaGrey .topCorners .left { background: #f9f7f7 url(../images/design/forms/textarea-top-left.png) no-repeat 0px 0px; } .textareaGrey .topCorners .right { background: #f9f7f7 url(../images/design/forms/textarea-top-right.png) no-repeat 0px 0px; } /* EXTENDED INFORMATION PANEL - BETTER STYLES ========================================= */ .extendedInfoPanel { width: 378px; border-left: 1px solid #E7E7E7; border-right: 1px solid #E7E7E7; border-bottom: 1px solid #E7E7E7; } .extendedInfoPanel .header { width: 100%; height: 33px; display: block; overflow: visible; background: #eeefea url(../images/design/content-blocks/extended-info-panel-01-header-right.png) no-repeat right 0px; position:relative; right:-1px; } .extendedInfoPanel .header .left { height: 27px; padding: 6px 0px 0px 12px; float: left; background: #eeefea url(../images/design/content-blocks/extended-info-panel-01-header-left.png) no-repeat 0px 0px; color: #002e67; text-transform: uppercase; position:relative; left:-2px; } .extendedInfoPanel .header .left a { color: #002e67; text-transform: uppercase; text-decoration: none; } .extendedInfoPanel .header .left a:hover { text-decoration: underline; } .extendedInfoPanel .header .separator { width: 31px; height: 33px; float: left; display: block; overflow: hidden; background: #eeefea url(../images/design/content-blocks/extended-info-panel-01-header-separator.png) no-repeat 0px 0px; position: relative; left:-2px; } .extendedInfoPanel .header .right { padding: 6px 12px 0 0; float: right; } .extendedInfoPanel .header .right a { color: #002e67; text-decoration: underline; } .extendedInfoPanel .header .right a:hover { text-decoration: none; } .extendedInfoPanel .content { position:static; overflow:hidden; } .extendedInfoPanel #rating.content, .extendedInfoPanel #friends.content { _width:355px; } .extendedSearch .coloredPanel03 { overflow:hidden; } .extendedInfoPanel .bottomCorners { display: block; overflow: visible; background: white; border-top: none; } .extendedInfoPanel .bottomCorners .right { position: relative; left: 2px; top: 2px; _top: 5px; overflow:visible; background: url(../images/design/content-blocks/extended-info-panel-01-bottom-right.png) no-repeat 0px 0px; } .extendedInfoPanel .bottomCorners .left { position: relative; left: -2px; top: 2px; _top: 5px; overflow:visible; background: url(../images/design/content-blocks/extended-info-panel-01-bottom-left.png) no-repeat 0px 0px; } /*==================================== logedUser - extendedInfoPanel ==================================================*/ /*#logedUser { padding-top: 19px; position: relative; } #logedUser .header .right img { height: 67px; position: absolute; right: 30px; top: 0; border: 2px solid #FFFFFF; }*/ #logedUser .header { background: #eeefea url(../images/design/content-blocks/extended-info-panel-loged-user-header-right.png) no-repeat right 0px; } #logedUser .header .left { background: #eeefea url(../images/design/content-blocks/extended-info-panel-loged-user-header-left.png) no-repeat 0px 0px; color: #fff; font-size: 120%; font-weight: bold; text-transform: none; } #logedUser .header .right a { color: #002e67; text-decoration: none; } #logedUser .recordWithImage .arrow { margin-left: 0px; font-size: 110%; } #logedUser .recordWithImage { width:auto; padding-left:10px; position:relative; color: #767676; } #logedUser .recordWithImage .orange { font-weight: normal; } /*==================================== logedUser - bottom left panel ==================================================*/ #bottomLeftPanel { width: 550px; margin: 15px; padding: 5px 0 0 0; border-top: 1px solid #002e67; text-align: center; } #bottomLeftPanel a { margin:5px 0 0 8px; color:#002e67; font-size:90%; text-decoration:none; } #bottomLeftPanel a:hover { text-decoration:underline; } /* ==================================== tabs stare ================================================ */ /*.user_tabs { height:27px; margin:10px 0 0 0; padding:0 7% 0 3%; border-bottom:2px solid #002e67; color:#002e67; font-size:100%; } .user_tabs a { color:#002e67; text-decoration:none; } .user_tabs ul { padding:0; } .user_tabs li { float:left; list-style-type:none; } .user_tabs li .left { height:18px; padding:9px 0 0 12px; float:left; display:block; background:#ccc url(../images/design/tabs/noActiveBlueTab_left.png) top left no-repeat; } .user_tabs li .right { height:18px; width:12px; padding:9px 0 0 0px; float:left; display:block; background:#ccc url(../images/design/tabs/noActiveBlueTab_right.png) top right no-repeat; } .user_tabs li.active a .left { background:#002e67 url(../images/design/tabs/activeBlueTab_left.png) top left no-repeat; color:#fff; } .user_tabs li.active a .right { background:#002e67 url(../images/design/tabs/activeBlueTab_right.png) top right no-repeat; color:#fff; }*/ /* ==================================== tabs ================================================ */ .userTab { width:100%; height:35px; margin-top: 10px; background:#F9F7F7; } .userTab .header { width:570px; height:35px; float:left; background:#205693 url(../images/design/tabs/userTab_center1.png) repeat-x scroll 0 0; } .userTab .headerLeft { width:7px; height:35px; float:left; display:block; background:#205693 url(../images/design/tabs/userTab_left1.png) no-repeat scroll 0 0; } .userTab .headerRight { width:7px; height:35px; float:right; display:block; background:#205693 url(../images/design/tabs/userTab_right1.png) no-repeat scroll 0 0; } .userTab .header li { display: inline; list-style-type: none; } .userTab .header li img { float: left; } .userTab .header a, .userTab .header span { height:19px; padding: 9px 20px 0 20px; float:left; display:block; background: url(../images/design/tabs/userTab_separator1.png) no-repeat scroll 0 0; color:#FFFFFF; font-variant: small-caps; text-align:center; text-decoration:none; } .userTab .header a#activ, .userTab .header a.activ, .userTab .header span.active { background: #ececec url(../images/design/tabs/userTab_activ.png) repeat-x 0px 0px; color: #b20014; } .userTab .header a#noBackground, .userTab .header a.noBackground { background: none; } .userTab .header a:hover { text-decoration: underline; } /* =============================== user action link (homepage) ===================================================== */ a.userAction .userActionLeft { width:5px; height:28px; float:left; background:url(../images/design/icons/useraction/action-left.gif) top left no-repeat; } a.userAction .userActionRight { width:46px; height:28px; float:left; background:url(../images/design/icons/useraction/action-right-addPhoto.gif) top left no-repeat; } a.userAction .userActionMiddle { height:20px; padding:8px 0px 0 7px; float:left; background:url(../images/design/icons/useraction/action-middle.gif) top left repeat-x; } a.userAction .userActionMiddle:hover { text-decoration: underline; } a.userAction { float:right; color:#002e67; } /* =============================== user action link (dark background) ===================================================== */ a.userActionDark .userActionLeft { width:5px; height:28px; float:left; text-decoration: none; background:url(../images/design/icons/useraction/actionDark-left.gif) top left no-repeat; } a.userActionDark .userActionRight { width:46px; height:28px; float:left; text-decoration: none; background:url(../images/design/icons/useraction/actionDark-right-addPhoto.gif) top left no-repeat; } a.userActionDark .userActionMiddle { height:20px; /*20*/ padding: 8px 0 0 7px; float:left; background:url(../images/design/icons/useraction/actionDark-middle.gif) top left repeat-x; font-size:11px; } a:hover.userActionDark .userActionMiddle { text-decoration: underline; _text-decoration: none; } a.userAction { float:right; color:#002e67; text-decoration:none; font-size:11px; } /* =============================== user action types ===================================================== */ a.userAction .userActionRight.addGroup { background:url(../images/design/icons/useraction/action-right-addGroup.gif) top left no-repeat; } .content a.userAction .userActionRight.addUser, a.userAction .userActionRight.addUser { background:url(../images/design/icons/useraction/action-right-addUser.gif) top left no-repeat; } a.userAction .userActionRight.addInzert { background:url(../images/design/icons/useraction/action-right-addInzert.gif) top left no-repeat; } a.userAction .userActionRight.addDiscussion { background:url(../images/design/icons/useraction/action-right-addDiscussion.gif) top left no-repeat; } a.userAction .userActionRight.addMarriage { background:url(../images/design/icons/useraction/action-right-addMarriage.gif) top left no-repeat; } a.userAction .userActionRight.addBirth { background:url(../images/design/icons/useraction/action-right-addBirth.gif) top left no-repeat; } a.userAction .userActionRight.addDeath { background:url(../images/design/icons/useraction/action-right-addDeath.gif) top left no-repeat; } a.userAction .userActionRight.addDate { background:url(../images/design/icons/useraction/action-right-addDate.gif) top left no-repeat; } a.userAction .userActionRight.addCulture { background:url(../images/design/icons/useraction/action-right-addCulture.gif) top left no-repeat; } a.userAction .userActionRight.addVideo { background:url(../images/design/icons/useraction/action-right-addVideo.gif) top left no-repeat; } a.userAction .userActionRight.addText { background:url(../images/design/icons/useraction/action-right-addText.gif) top left no-repeat; } a.userAction .userActionRight.buy { background:url(../images/design/icons/useraction/action-right-buy.gif) top left no-repeat; } /* =========================== user action types (dark background) ========================================================= */ a.userActionDark .userActionRight.addVideo { background:url(../images/design/icons/useraction/actionDark-right-addVideo.gif) top left no-repeat; } a.userActionDark .userActionRight.addText { background:url(../images/design/icons/useraction/actionDark-right-addText.gif) top left no-repeat; } /* ==================================================================================== */ /* .links .userAction .userActionMiddle { width:48%; } */ a.userAction2 .userActionLeft { width:11px; height:37px; float:left; background:url(../images/design/icons/userActionLeft.png) top left no-repeat; } a.userAction2 .userActionRight { width:64px; height:37px; float:left; background:url(../images/design/icons/userActionRight.png) top left no-repeat; } a.userAction2 .userActionMiddle { height:21px; padding:16px 10px 0 0; float:left; background:url(../images/design/icons/userActionMiddle.png) top left repeat-x; } a.userAction2 .userActionMiddle:hover { text-decoration: underline; } a.userAction2 { float:right; color:#002e67; } .links .userAction2 { width:100%; } .links .userAction2 .userActionMiddle { width:48%; } /* ==================================================================================== */ .flashInfoPanel { width: 100%; background: white; } .flashInfoPanel .header { width: 100%; height: 18px; clear: both; text-align: left; } .flashInfoPanel .content { padding-top: 10px; } .flashInfoPanel .header span { padding: 4px 10px 0 10px; display: block; color: #002e67; font-size: 80%; text-transform: uppercase; } .flashInfoPanel .header a span, { display: none; } /*-------------------------------------------------------------------------------------*/ h2 a, h3 a { color:#002e67; text-decoration:none; } h2 a:hover, h3 a:hover { text-decoration:underline; } h4 a { margin:0; padding:0; } /*-------------------main user panel------------------------------------------*/ #upperContent .column3Panel .extendedInfoPanel#userPanel .content .coloredPanel03 .content, #upperContent .column3Panel .extendedInfoPanel#userPanel .content .coloredPanel03 .bottomCorners { background:#F9F7F7 url(../images/design/content-blocks/search-panel-background.png) repeat scroll 0 0; border:0; } #upperContent .column3Panel .extendedInfoPanel#userPanel .content .menu .coloredPanel03 .content { padding:0; position:absolute; top:5px; left:10px; line-height:16px; } #upperContent .column3Panel .extendedInfoPanel#userPanel .content .menu .coloredPanel03 { width:130px; margin:0 0 6px; float:left; position:relative; top:0; line-height:6px; } .head { margin-bottom:8px; padding:12px 0 12px; border-bottom:1px dotted #C1C1C1; } .menu { width:100%; margin-top:3px; } .extendedInfoPanel .content .menu .coloredPanel03#userPanel .content h4 { position:relative; z-index:100; color:#636363; font-weight:bold; text-align:left; } .extendedInfoPanel#userPanel .head a { padding-left:35px; color:#CA262D; font-weight:bold; text-decoration:none; } .extendedInfoPanel#userPanel .head span { background-position:13px 0px; } #upperContent .extendedInfoPanel#userPanel .menu .coloredPanel03 .content h4 a { padding-left:40px; color:#636363; background-position:0px 0; } .zpetNaProfil { background:url("../images/design/icons/pp/zpet-na-profil.png") no-repeat; } .pridatDoPratel { background:url("../images/design/icons/pp/pridat-do-pratel.png") no-repeat; } .poslatVzkaz { background:url("../images/design/icons/pp/poslat-vzkaz.png") no-repeat; } .pratele { background:url("../images/design/icons/pp/pratele.png") no-repeat; } .multimedia { background:url("../images/design/icons/pp/multimedia.png") no-repeat; } .komunity { background:url("../images/design/icons/pp/komunity.png") no-repeat; } .blogy { background:url("../images/design/icons/pp/blogy.png") no-repeat; } .zaznamy { background:url("../images/design/icons/pp/zaznamy.png") no-repeat; } .inzeraty { background:url("../images/design/icons/pp/inzeraty.png") no-repeat; } .bannery { background:url("../images/design/icons/pp/bannery.png") no-repeat; } .profil { background:url("../images/design/icons/pp/profil.png") no-repeat 0 3px; } .nastaveni { background:url("../images/design/icons/pp/nastaveni.png") no-repeat; } .vzkazy { background:url("../images/design/icons/pp/vzkazy.png") no-repeat 2px 3px; } .kredity { background:url("../images/design/icons/pp/kredity.png") no-repeat; } .hodnoceni { background:url("../images/design/icons/pp/hodnoceni.png") no-repeat; } .diskuse { background:url("../images/design/icons/pp/diskuse.png") no-repeat; } .souteze { background:url("../images/design/icons/pp/souteze.png") no-repeat; } .ankety { background:url("../images/design/icons/pp/ankety.png") no-repeat; } .nastenka { background:url("../images/design/icons/pp/nastenka.png") no-repeat; } .extendedInfoPanel#userPanel .menu { width: 100%; margin: 0; padding-top:10px; } .extendedInfoPanel#userPanel .head a:hover { text-decoration:underline; } .extendedInfoPanel#userPanel .content { padding:0 0 0 10px; } .extendedInfoPanel#userPanel .content .textRight { width: 200px; margin:4px 6px 0 14px; float:left; display:inline; color:#9B9B9B; } .extendedInfoPanel#userPanel .content .textRight a { color:#9B9B9B; text-decoration:none; } .extendedInfoPanel#userPanel .content .textRight a:hover { text-decoration:underline; } /*---------------------rate user panel------------------------------------*/ #upperContent .column3Panel .extendedInfoPanel .content#rating .coloredPanel03 { width:352px; margin:0 auto 22px auto; position:relative; top:8px; } #upperContent .column3Panel .extendedInfoPanel .content#rating .coloredPanel03 .content, #upperContent .column3Panel .extendedInfoPanel .content#rating .coloredPanel03 .bottomCorners { background:#F9F7F7 url(../images/design/content-blocks/search-panel-background.png) repeat scroll 0 0; border:0; } #upperContent .column3Panel .extendedInfoPanel .content#rating .coloredPanel03 .content .red { color:#CB2A30; } .extendedInfoPanel .content .rateUser a { width:40px; margin-left:20px; display:inline-block; line-height:20px; color:#4071b8; text-decoration:none; } .extendedInfoPanel .content .rateUser a:hover { text-decoration:underline; } /**********************friends***********************************************/ .extendedInfoPanel #friends .recordWithImage h4 { display:inline-block; margin-right:4px; font-size:110%; } .extendedInfoPanel #friends .recordWithImage .imgFloatLeft { float:none; margin:0; } .extendedInfoPanel #friends .recordWithImage h4 a { color:#ae2c31; } .extendedInfoPanel .communityItem, .extendedInfoPanel #friends .recordWithImage { width:96%; padding:4px 14px 0 2px; line-height:18px; border:0; color:#7f8080; } .extendedInfoPanel #friends .recordWithImage { width:44%; float:left; clear:none; text-align:center; } .extendedInfoPanel .communityItem .h4 { margin-bottom:4px; color:#2172b5; font-size:110%; } .extendedInfoPanel .communityItem a, .extendedInfoPanel .footer a { margin-right:15px; float:right; } .extendedInfoPanel .footer { width:100%; padding:14px 0 0 10px; color:black; } .extendedInfoPanel .footer .communityCount { float:left; } /*---------------------search-------------------------------------------------*/ .extendedInfoPanel .extendedSearch { /*padding: 10px 5px;*/ } #page #upperContent .extendedInfoPanel .extendedSearch .coloredPanel03 { width: 100%; margin: 0; } .extendedInfoPanel .extendedSearch .coloredPanel03 .content { border: none; border-top:1px solid #f9f7f7; } .extendedInfoPanel .extendedSearch .coloredPanel03 .content label { margin: 5px 10px 0 0; float: left; } .extendedInfoPanel .extendedSearch .coloredPanel03 .content .inputLighterGreyBg { width: 165px; /* 250px */ float: left; } .extendedInfoPanel .extendedSearch .coloredPanel03 .content .inputLighterGreyBg input { width: 150px; /*235px */ } .extendedInfoPanel .extendedSearch .coloredPanel03 .content .inputLighterGreyBg .left { width: auto; margin: 0; } .extendedInfoPanel .extendedSearch .coloredPanel03 .content .inputLighterGreyBg .right { width: auto; margin: 0; float: right; } .extendedInfoPanel .extendedSearch .coloredPanel03 .content .buttonWhiteBg { margin: 0 5px 0 0; /* 10px 25px 0 0; */ float: right; } .extendedInfoPanel .aRight { margin: 5px 15px 0 0; text-align: right; } /*---------------------end search---------------------------------------------*/ /*---------------------diskuse-------------------------------------------------*/ #page #upperContent .extendedInfoPanel .extendedDiscussion .coloredPanel03 { width: 100%; margin: 0; } .extendedInfoPanel .extendedDiscussion .coloredPanel03 .content { border: none; border-top:1px solid #f9f7f7; line-height:150%; } .extendedInfoPanel .extendedDiscussion .coloredPanel03 .content #save2session input { color: #dc632e !important; cursor: pointer; } .extendedInfoPanel .extendedDiscussion .coloredPanel03 .content .label { float:left; width:60px; margin-bottom:6px; } .extendedInfoPanel .extendedDiscussion .coloredPanel03 .content .relativePosition { float:left; } .extendedInfoPanel .extendedDiscussion .coloredPanel03 .content .labelCaptcha { float:left; width:152px; margin-bottom:6px; } .extendedInfoPanel .extendedDiscussion .coloredPanel03 .content #discussionCheckCode { width:178px; } .extendedInfoPanel .extendedDiscussion .coloredPanel03 .content #discussionCheckCode input { width:163px; } .extendedInfoPanel .extendedDiscussion .coloredPanel03 .content .captchaImage { margin-bottom:6px; } .extendedInfoPanel .extendedDiscussion .coloredPanel03 .content .star { position: absolute; top: 8px; left: -15px; z-index: 20; } .extendedInfoPanel .extendedDiscussion .coloredPanel03 .content .inputLighterGreyBg { float:left; width:273px; margin-bottom:6px; } .extendedInfoPanel .extendedDiscussion .coloredPanel03 .content .inputLighterGreyBg input { width:258px; } .extendedInfoPanel .extendedDiscussion .coloredPanel03 .content .inputLighterGreyBg .left { width: auto; margin: 0; } .extendedInfoPanel .extendedDiscussion .coloredPanel03 .content .inputLighterGreyBg .right { width: auto; margin: 0; float: right; } .extendedInfoPanel .extendedDiscussion .coloredPanel03 .content .buttonWhiteBg { margin: 0 5px 0 0; float: right; } .extendedInfoPanel .extendedDiscussion .contributions { margin:5px 10px; line-height:155%; } .extendedInfoPanel .extendedDiscussion .contributions .time { color: #767676; } .extendedInfoPanel .extendedDiscussion .contributions a, .extendedInfoPanel .extendedDiscussion .contributions .name { color:#ca262d; font-size:110%; font-weight:bold; text-decoration:none; } .extendedInfoPanel .extendedDiscussion .contributions a:hover { text-decoration:underline; } /*---------------------end diskuse---------------------------------------------*/ /*---------------------multimedialni box-------------------------------------------------*/ #page #upperContent .extendedInfoPanel .content#multimedia .floatLeft { float:left; margin:0 5px 5px 0; } #page #upperContent .extendedInfoPanel .content#multimedia .item { padding: 5px 12px; } #page #upperContent .extendedInfoPanel .content#multimedia .floatLeftIcon { float:left; margin: 2px 5px 0 0; } #page #upperContent .extendedInfoPanel .content#multimedia .grey { font-size: 90%; font-family: Tahoma; color: #767676; } #page #upperContent .extendedInfoPanel .content#multimedia a.nickname { color:#ca262d; font-size:110%; font-weight:bold; text-decoration:none; } #page #upperContent .extendedInfoPanel .content#multimedia a:hover.nickname { text-decoration: underline; } /*---------------------end multimedialni box---------------------------------------------*/ /*---------------------eshop cart---------------------------------------------*/ .column3Panel #cart .content { padding:8px 20px 0 27px; } .column3Panel #cart .content a { color:#c26335; } .column3Panel #cart .content table { width:100%; margin:10px 0 4px 0; border-collapse:collapse; color:#005E82; } .column3Panel #cart .content table td, .column3Panel #cart .content table th { border-top:1px dotted #c1c1c1; line-height:23px; } .column3Panel #cart .content table .firstCell { width:10px; } .column3Panel #cart .content table .secondCell { width:100px; text-align:left; } .column3Panel #cart .content table .thirdCell { width:40px; text-align:center; } .column3Panel #cart .content table .fourthCell { width:80px; text-align:center; } .column3Panel #cart .content table .fifthCell { text-align:right; } .column3Panel #cart .content table .sixthCell { width:10px; } .column3Panel #cart .content table tr#solidBlueBorder { border-top:1px solid #4071b8; } .column3Panel #cart .content table tr.grey .firstCell { background: #f9f7f7 url(../images/design/tabs/grey-left.png) no-repeat left top; } .column3Panel #cart .content table tr.grey td, .column3Panel #cart .content table tr.grey th { background: #f9f7f7 url(../images/design/tabs/grey-bg.png) repeat-x left top; } .column3Panel #cart .content table tr.red .sixthCell { background: #f9f7f7 url(../images/design/tabs/red-right.png) no-repeat right top; } .column3Panel #cart .content table tr.red .firstCell { background: #fff6f6 url(../images/design/tabs/red-left.png) no-repeat left top; } .column3Panel #cart .content table tr.red td, .column3Panel #cart .content table tr.red th { background: #fff6f6 url(../images/design/tabs/red-bg.png) repeat-x left top; } .column3Panel #cart .content table tr.red .sixthCell { background: #fff6f6 url(../images/design/tabs/red-right.png) no-repeat right top; } .column3Panel #cart .content .cartDetail { float:right; } /*---------------------eshop menu---------------------------------------------------------*/ .eshopMenuPanel { margin: 1px 0 14px 0; padding-bottom:17px; } .eshopMenuPanel .mainMenu { margin:0; padding:0; list-style:none; } .eshopMenuPanel .mainMenu li { float:left; line-height:24px; } .eshopMenuPanel .mainMenu li.dottedLine { width:180px; margin:1px 0; padding:0 10px; background:#f9f7f7; border-top:1px dotted #c0c0c0; line-height:0px; font-size:0px; } .eshopMenuPanel .mainMenu li a { width:174px; height:24px; padding-left:26px; display:block; background:#f2f2f2; color:#000; text-decoration:none; } .eshopMenuPanel .mainMenu li a:hover { text-decoration:underline; } .eshopMenuPanel .mainMenu li .firstSubMenu { margin-bottom:4px; padding:0; background:#f9f7f7; list-style:none; font-size:11px; } .eshopMenuPanel .mainMenu li .firstSubMenu li { float:left; } .eshopMenuPanel .mainMenu li .firstSubMenu .dottedLine { width:160px; border-top:1px dashed #dfdfdf; line-height:0; } .eshopMenuPanel .mainMenu li .firstSubMenu a.hidden, .eshopMenuPanel .mainMenu li .firstSubMenu a.visible { width:158px; height:20px; padding-left:24px; background:#f9f7f7; } .eshopMenuPanel .mainMenu li .firstSubMenu a.hidden { background: #f9f7f7 url(../images/design/icons/arrow-blue-right.gif) no-repeat 2px 8px; } .eshopMenuPanel .mainMenu li .firstSubMenu a.visible { background: #f9f7f7 url(../images/design/icons/arrow-down.gif) no-repeat 0px 8px; } .eshopMenuPanel .mainMenu li .firstSubMenu .secondSubMenu { list-style:none; background:#f9f7f7; font-size:11px; } .eshopMenuPanel .mainMenu li .firstSubMenu .secondSubMenu li { float:left; } .eshopMenuPanel .mainMenu li .firstSubMenu .secondSubMenu a { width:116px; height:20px; padding-left:42px; border-bottom:1px dashed #dfdfdf; background: #f9f7f7 url(../images/design/icons/arrow-grey-right.gif) no-repeat 30px 8px; } /*** box vpravo - uživatelé komunity *************************************************************************************/ .extendedInfoPanel.content#communityUser { padding: 10px 12px 8px 12px; } .extendedInfoPanel .content#communityUser .record { float: left; margin: 8px; padding: 0; } .extendedInfoPanel .content#communityUser .record a { display: block; color: #ca262d; } /*** box vpravo - poslední èlánky *************************************************************************************/ .extendedInfoPanel .content#lastArticlesContent .dottedLine { margin: 5px 0 5px 0; } .extendedInfoPanel .content#lastArticlesContent a.nickname { color: #ca262d; } .extendedInfoPanel .content#lastArticlesContent .way { clear: both; } .extendedInfoPanel .content#lastArticlesContent .way a { color: #002e67; } /*** box vpravo - poslední èlánky *************************************************************************************/ .extendedInfoPanel .content#lastStoryContent .dottedLine { margin: 5px 0 5px 0; } .extendedInfoPanel .content#lastStoryContent a.nickname { color: #ca262d; } .extendedInfoPanel .content#lastStoryContent .way { clear: both; } .extendedInfoPanel .content#lastStoryContent .way a { color: #002e67; } /*** box vpravo - diskutujte s námi *************************************************************************************/ .extendedInfoPanel #localDiscussionContentPanel.content a.link { color: #ca262d; } /* calendar ******************************************************************/ .calendar { position: relative; display: none; border-top: 2px solid #fff; border-right: 2px solid #000; border-bottom: 2px solid #000; border-left: 2px solid #fff; font-size: 11px; color: #000; cursor: default; background: #c8d0d4; font-family: tahoma,verdana,sans-serif; } .calendar table { border-top: 1px solid #000; border-right: 1px solid #fff; border-bottom: 1px solid #fff; border-left: 1px solid #000; font-size: 11px; color: #000; cursor: default; background: #c8d0d4; font-family: tahoma,verdana,sans-serif; } /* Header part -- contains navigation buttons and day names. */ .calendar .button { /* "<<", "<", ">", ">>" buttons have this class */ text-align: center; padding: 1px; border-top: 1px solid #fff; border-right: 1px solid #000; border-bottom: 1px solid #000; border-left: 1px solid #fff; } .calendar .nav { background: transparent url(menuarrow.gif) no-repeat 100% 100%; } .calendar thead .title { /* This holds the current "month, year" */ font-weight: bold; padding: 1px; border: 1px solid #000; background: #788084; color: #fff; text-align: center; float:none; } .calendar thead .headrow { /* Row containing navigation buttons */ } .calendar thead .daynames { /* Row containing the day names */ } .calendar thead .name { /* Cells containing the day names */ border-bottom: 1px solid #000; padding: 2px; text-align: center; background: #e8f0f4; } .calendar thead .weekend { /* How a weekend day name shows in header */ color: #f00; } .calendar thead .hilite { /* How do the buttons in header appear when hover */ border-top: 2px solid #fff; border-right: 2px solid #000; border-bottom: 2px solid #000; border-left: 2px solid #fff; padding: 0px; background-color: #d8e0e4; } .calendar thead .active { /* Active (pressed) buttons in header */ padding: 2px 0px 0px 2px; border-top: 1px solid #000; border-right: 1px solid #fff; border-bottom: 1px solid #fff; border-left: 1px solid #000; background-color: #b8c0c4; } /* The body part -- contains all the days in month. */ .calendar tbody .day { /* Cells containing month days dates */ width: 2em; text-align: right; padding: 2px 4px 2px 2px; } .calendar tbody .day.othermonth { font-size: 80%; color: #aaa; } .calendar tbody .day.othermonth.oweekend { color: #faa; } .calendar table .wn { padding: 2px 3px 2px 2px; border-right: 1px solid #000; background: #e8f4f0; } .calendar tbody .rowhilite td { background: #d8e4e0; } .calendar tbody .rowhilite td.wn { background: #c8d4d0; } .calendar tbody td.hilite { /* Hovered cells */ padding: 1px 3px 1px 1px; border: 1px solid; border-color: #fff #000 #000 #fff; } .calendar tbody td.active { /* Active (pressed) cells */ padding: 2px 2px 0px 2px; border: 1px solid; border-color: #000 #fff #fff #000; } .calendar tbody td.selected { /* Cell showing selected date */ font-weight: bold; padding: 2px 2px 0px 2px; border: 1px solid; border-color: #000 #fff #fff #000; background: #d8e0e4; } .calendar tbody td.weekend { /* Cells showing weekend days */ color: #f00; } .calendar tbody td.today { /* Cell showing today date */ font-weight: bold; color: #00f; } .calendar tbody .disabled { color: #999; } .calendar tbody .emptycell { /* Empty cells (the best is to hide them) */ visibility: hidden; } .calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */ display: none; } /* The footer part -- status bar and "Close" button */ .calendar tfoot .footrow { /* The in footer (only one right now) */ } .calendar tfoot .ttip { /* Tooltip (status bar) cell */ background: #e8f0f4; padding: 1px; border: 1px solid #000; background: #788084; color: #fff; text-align: center; } .calendar tfoot .hilite { /* Hover style for buttons in footer */ border-top: 1px solid #fff; border-right: 1px solid #000; border-bottom: 1px solid #000; border-left: 1px solid #fff; padding: 1px; background: #d8e0e4; } .calendar tfoot .active { /* Active (pressed) style for buttons in footer */ padding: 2px 0px 0px 2px; border-top: 1px solid #000; border-right: 1px solid #fff; border-bottom: 1px solid #fff; border-left: 1px solid #000; } /* Combo boxes (menus that display months/years for direct selection) */ .calendar .combo { position: absolute; display: none; width: 4em; top: 0px; left: 0px; cursor: default; border-top: 1px solid #fff; border-right: 1px solid #000; border-bottom: 1px solid #000; border-left: 1px solid #fff; background: #d8e0e4; font-size: 90%; padding: 1px; z-index: 100; } .calendar .combo .label, .calendar .combo .label-IEfix { text-align: center; padding: 1px; } .calendar .combo .label-IEfix { width: 4em; } .calendar .combo .active { background: #c8d0d4; padding: 0px; border-top: 1px solid #000; border-right: 1px solid #fff; border-bottom: 1px solid #fff; border-left: 1px solid #000; } .calendar .combo .hilite { background: #048; color: #aef; } .calendar td.time { border-top: 1px solid #000; padding: 1px 0px; text-align: center; background-color: #e8f0f4; } .calendar td.time .hour, .calendar td.time .minute, .calendar td.time .ampm { padding: 0px 3px 0px 4px; border: 1px solid #889; font-weight: bold; background-color: #fff; } .calendar td.time .ampm { text-align: center; } .calendar td.time .colon { padding: 0px 2px 0px 3px; font-weight: bold; } .calendar td.time span.hilite { border-color: #000; background-color: #667; color: #fff; } .calendar td.time span.active { border-color: #f00; background-color: #000; color: #0f0; } ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: text/css; charset=utf-8 Content-Location: http://teplice.naseadresa.cz/0000-Global/styles/print.css Content-Transfer-Encoding: 8bit @media print { #page { width: 100%; margin: 0; padding: 0; float: none; position: relative; } .column4Panel { width: 100%; margin: 0; padding: 0; float: none; } #upperContent { width: 100%; } #headerPanel { width: 100%; height: auto; background: none; } #centralNewsPanel, #centralNewsPanel .leftBlock, #centralNewsPanel h1, #centralNewsPanel a, #bannersPanel, #copyrightPanel, #bottomPanel, #bottomPanel li, #bottomPanel a, #flashGalleryPanel, #findNewspapersPanel, .navigation, .topPanel, .topInfoPanel, .controls, .extendedInfoPanel { display: none; } } ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/global-images/top-banner-back.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAUAAACACAMAAAD0zFO8AAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRF////2dbWb0jIuQAAABZJREFU eNpiYAQBhlFylBw5JBIACDAAwvECd/zM/CAAAAAASUVORK5CYII= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/content-blocks/extended-info-panel-01-top-left.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAMAAACecocUAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADNQTFRF6enp7u7u8/Pz/f396urq+fn5 7Ozs9vb26Ojo+vr68fHx+/v78PDw/v7+6+vr/Pz8////uqVanwAAAD9JREFUeNps yscNACAMA8DQO/H+09JE+OCPT7IJEkOng7LRbpeenQGWtec9TiffcN0Z17pCrNyz XKap/TwEGACrUwait+/++gAAAABJRU5ErkJggg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/content-blocks/extended-info-panel-01-top-right.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAMAAACecocUAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADNQTFRF6enp7u7u8/Pz/f396urq+fn5 7Ozs9vb26Ojo+vr68fHx+/v78PDw/v7+6+vr/Pz8////uqVanwAAADxJREFUeNpU yjcSADAIxEBwztz/X2sXDIxVbSGKsCi1xFUNxDzOVL+kBDN26WbIcWMFd2b3m8yb Pl8BBgCsNwaiiqYw6AAAAABJRU5ErkJggg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/content-blocks/central-news-left.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAMAAABFaP0WAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRFurq6AAAANo43lwAAAA5JREFU eNpiYAABgAADAAAGAAHgQhFOAAAAAElFTkSuQmCC ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/content-blocks/central-news-separator.gif Content-Transfer-Encoding: Base64 R0lGODlhBwAhAKIHALq6utCOitKLhsSmpLu4t7u5ub21tf///yH5BAEAAAcALAAA AAAHACEAAAMtOLcMYOw412ZZ06lMOZCc4AVjyZGnmaGrOrGv68CzDNC3LXJg1ms/ AmZSgTASADs= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/forms/left-select.gif Content-Transfer-Encoding: Base64 R0lGODlh9AEVAMQbANXY2eDj5MTIy9TX2f39/e7v8PHx8fDy8vz8/O7u7sPIyuDi 48nNz/r6+t3g4fT19d/i4/Ly8vX298XJzNTY2c3R0+Ll5vz9/fv7+9rc3uHk5f// //n4+AAAAAAAAAAAACH5BAEAABsALAAAAAD0ARUAAAX/4CaOZGmeaKqubOu+cCzP dG3feK7vfO//p4NmSCwaj8ikcslsOp/QqHRKrVqv2Kx2y+16v+DNZaJYZM7otHrN brvf8Lh8Tq/b7/i8fs/v+/+AgYKDgxsCAgkciouMjY6PkJGSk5SVlpeYmZqbnJ2e n6ChoqOkpaanEhUGp6ytrq+wsbKztLW2t5gQDLi8vb6/wMHCw8SVDgPFycrLzM3O z7IBANDU1dbX2Nm30trd3t/g4drc4uXm5+jprOTq7e7v8Ors8fT19vfJ8/j7/P3+ pfr+CRxIsOCigAYTKlzYDiHDhxAjWrMwTaLFixiTFUCWsaPHj7M2UABJsqRJUBse MEQ4ybKly0ciCDRAgKGmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0YN AQA7 ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/menu/bottom-menu-bg.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAIAAAAkCAMAAACUnRs9AAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADlQTFRFzc3NysrK2trax8fH1NTU3t7e 29vby8vL2NjYyMjI0tLSz8/P1tbWxsbG4ODg0NDQ3d3d4eHhxcXF3BUzoAAAAD1J REFUeNp8zMcNACAMwEDTWyhh/2FhAIR1b7M3qg9jEAJrESPWkjMieE+tzElr3FLC GErBOXrnrr6OAAMAwOcDr2MTXaQAAAAASUVORK5CYII= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/menu/bottom-menu-left.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAkAAAAkCAMAAABsfeDKAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGBQTFRFyMjI0tLSzc3N1tbW9fX15ubm 5eXl4uLi1dXV39/f5OTk2dnZ6Ojo6+vr/v7+ycnJ1NTU29vb2NjYx8fHy8vLz8/P xsbG2traysrK3t7e4ODg0NDQ3d3d4eHh////xcXF7gEOygAAAIBJREFUeNps0M0W giAYhOGxEMSkMv+RD+7/LqXTwKpn9Z5ZDmL2bLs9IYc6m81KLjePkiEvIr96CEvV clJqqKU9oT0IOhD0SOg3Qv8hmDvBvAmmIchJ8AvB3wh2JtidcKA4JkJYCSHR3zK1 hlqqVuxqqalUdGupqJZS33df6RJgAAGYG+oEkhoUAAAAAElFTkSuQmCC ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/menu/bottom-menu-right.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAkAAAAkCAMAAABsfeDKAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGBQTFRFyMjI0tLSzc3N1tbW9fX15ubm 5eXl4uLi1dXV39/f5OTk2dnZ6Ojo6+vr/v7+ycnJ1NTU29vb2NjYx8fHy8vLz8/P xsbG2traysrK3t7e4ODg0NDQ3d3d4eHh////xcXF7gEOygAAAH5JREFUeNp80EsS gyAURNE2IojRJMYv6JP97zJoNTjLGd3qYSOsdfU6Iohdik1dFfVjxxKJK0ued6lU 0uVq4UnDUYWdNHrSWKjBlxqUZPAhg4IMNhJM5PEgj5EsVrJIHAZymGlHoP9lcrW5 VKr6YA2KNZ+vnTFdT4Y33/0JMAAJFBvqIdfJVgAAAABJRU5ErkJggg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/menu/search-left.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAMAAAACh/xsAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABVQTFRF/v7+/v39/Pv7+/r6/f39//// +vn56HeXEwAAACRJREFUeNpiYGGDAAZWOIMZxmCAMVhZYAxWRhiDlZWJjQ0gwAAm RwEuTlbArAAAAABJRU5ErkJggg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/menu/search-right.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAcAAAAICAMAAAAC2hU0AAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABVQTFRF/v7+/v39/Pv7+/r6/f39//// +vn56HeXEwAAACRJREFUeNpiYIMABlSaCUqzQmhGCM3CCqKZGViBNJANAgABBgAn 5wEuVSQragAAAABJRU5ErkJggg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/key.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAMAAADjNjc+AAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9QTFRFx8fH9FBWxsbG////yictN4GU 0gAAAEFJREFUeNpUjsENADEIw9yE/Wc+0qqo51dikAC7Gnlgi1fRhVo1KKbX1mWb P2MEJ4KOwTmqjMwVlpyewPOOPwEGAJfqAc8TwFfZAAAAAElFTkSuQmCC ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/menu/search-panel2.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAA94AAAAyCAMAAACd3fN9AAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBQTFRF8fHxubm5yMjI6Onp6uvrjY2N ////oqKi5OXl2dnZxcXF6+zsvr6+gYGBzs7O6erq4Nve/QAAAR5JREFUeNrs2d1K wzAYgOG0zV+nqfd/t/4xrNbpmBAwe56TsZaF9CsvOVhoT5wte5dufr2y/3JcMsbj Kr9vJJ7d9BAfKzzEz5+7Va/Zxl/2dXzQ7351mODy08CveEvspSBvkDcgb0DegLwB eQPyBnkD8gbuNu+wQU9B3PJG3vKWN/KW98W8Z+hJ3j3znqAneffMG/oStz/GQN6A vAF5A/IG5A3IG+QNyBuQNyBvQN6AvEHegLwBeQPyBuQNyBvkbQggb0DegLwBeQPy BuQN8gb+qVhbaDUaBAxoLmF6NAYY8fQua6ipLiYBw9lKDnkq1SRgtLN7TetL3nly fsNwZ3c65de889zKZhwwjHoqZc3veee8lQaMIpX6FvazAAMA1frU5yYmhAgAAAAA SUVORK5CYII= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/forms/header-input-left.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAYAAAAUCAMAAACZDLzqAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEtQTFRF293et73Atry/ys7Qz9PU/Pz8 wcbIzdHT2Nvc6+3t6Onp4OLjw8jKy8/R2t3e/v7+9/j45Obn/f397u/w7/Dwu8DD tbu+6erq////qBsPhQAAAD1JREFUeNqsxVEWQCAUBNARIqGQZva/0o7XFtyfC5Lr MYLbXpcITkOQwPfUV809/ZHr+dvCY/FKFsusJsAAovcJ5xpgUr0AAAAASUVORK5C YII= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/forms/header-input-right.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAYAAAAUCAMAAACZDLzqAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADZQTFRF4eTl+fr69PX17u/v9vf35ufn 7Ozs4ePj2dze8PHx7e7u6urq0tXW+Pn5ys7Q6erq8fHx////2W7KQgAAADRJREFU eNqszbcRACAMBDCTM8/vvyycvQKVSsmeCYCI1PIgubpCZzAY5yfNyErUyA9cAQYA 6qcHNVQewQ4AAAAASUVORK5CYII= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/forms/header_submit.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAEAAAAAUCAMAAAAKqMsNAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBQTFRF9PPz7ezs9/b28PDw1tXV5ubm tbW1+fj4x8fH3dzc5OPj39/f4uHhzs7O0tLS2dnZ4K6dQQAAAJJJREFUeNqk1FEW wyAIRNEZCamKxP3vtph2A8r9n3f4AmQpn0OlkFCilJPGWoEKVcFB4p1DVNFVRN7C ppjLL0Dyf8TmPoYr0LkKkdgja8/eMYYu3PbORgRMEywCrSe0CMyRMAdsWsIKXC3h isAzE550wGB+JbihZQNWn4Q6oLX66dxrVdDveux2xk/x+5iTXwEGAKelJiWSUIp+ AAAAAElFTkSuQmCC ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/menu/blue-center.gif Content-Transfer-Encoding: Base64 R0lGODlhAQAlAIQaAAAxZgA0aAA2awA4bQA7bwA9cQBAdABDdwBFeQBIfABLfwBP ggBShQBViABYiwBajQBdkABgkwBilQBllzNZgwBnmQBpnABrnQBtnwBuoP////// /////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAB8ALAAAAAAB ACUAAAUaIJWNZIZdVjVJEfQ4DbMoCXIYBTEIAfD9vxAAOw== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/menu/blue-left.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAGwAAAAgCAMAAADAIm3oAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGBQTFRFAAAA/f39ztHTAGCTaIuni6Gx 6+zskLHGAFaJQ3GWusHGGW+bHl6KAGaYN32j3N7fAEt/M1mDADFmAEh8AGmcADRo ADZrADtvADhtAD1xAEN3AEB0AEV5AGudAG2fAG6gBdYXKgAAAOxJREFUeNq810uS gyAQgOGWoXk1Ac04SUyi3P+WAcroXKD7X1BFb75igYUwtIL2E38AjfJbkahhOJci hdm1iGEmFTnMFkFMS2IkiW1yAaxyAcx8rUS0/dsDXLiaKdlgNdExYcTI9s+uSnRi P0zt1jDkdNlHfFgyO2YscWOExjSururEHE+E2fSb3LB9xoZFzDlXq66BHXNaqapV S2FkxyIG1QveHdjIlPMYejp+R3zY6KJGRO0Pq2K/fMXWeO4B3nLVkz3FApheYgHg IhZAXu5S1UeqfkjVnt/+JlT/sbDLn0gdGzJOy5U/+AgwAAfsCpAE5FshAAAAAElF TkSuQmCC ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/menu/blue-center.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAEAAAAlCAMAAAC09nObAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFFQTFRFADtvAGCTAEB0AFqNAE+CADRo M1mDADhtAGKVADFmAFWIAEV5AEt/ADZrAGeZAG2fAFKFAFiLAD1xAEN3AF2QAGmc AGWXAGudAEh8AG6g////kgrRGwAAADVJREFUeNpUwrcNgDAAADDTOyGh8/+hTAzI Vrt/gtNudmhlNoWotyiNLoNVLqExqXSezyvAAFuJAl58YXpLAAAAAElFTkSuQmCC ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/menu/blue-right.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAIUAAAAgCAMAAAAL1UtTAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGBQTFRFWIOnTHKYf5axKV2Ku8nY2ODo i6S9HVSEJmSSLXOf/v7/AEB0AGCTAFqNAFWIADVqAEV5AEt/AGeZAG2fAFKFAFiL AD1xAEN3AF2QAGmcAGWXAGudAEh8AGKVAE+CAG6ginirugAAAIdJREFUeNrM19cV wjAUwFClYT+HXkLH+2/JyRTWnUC/omuJzVhW1MaYDBW1joqKOikqQlFRR0VFr6iA i0DwFgieAsFZIHgJBF+BYCsQPAQyO4HMTSCzF8hcBQZ+AgMngcRHIHEUSNwFErNA xyLQGyrmiUN7fRFUUNpXLJvSumIe+nXZy1+AAQDdlGZPRzGpbwAAAABJRU5ErkJg gg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/menu/grey-center.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAEAAAAlCAMAAAC09nObAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGBQTFRF1tXV6Obm6ejo2tra+vn55uXl 4N/f09PT7+7u8vHx3Nvb1dTU+fj47Orq9fT08O/v3dzc6unp7evr19bW3t7e5OPj 8fDw1NPT9/X14eDg7u3t2NjY+/r6yMjI+Pf30tLSjwuSWQAAAD1JREFUeNoMwocR ggAQALCAgEqVIh3df0v+EqdM7WfVept1XnaDRi+VyMPXFgqTj9IjHEZUFk//cLlu AQYAUcECTnYfg/YAAAAASUVORK5CYII= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/menu/grey-separator.gif Content-Transfer-Encoding: Base64 R0lGODlhAwASAIABAHV1df///yH5BAEAAAEALAAAAAADABIAAAIKjAOnuJfN4Gsz FAA7 ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/menu/menu-active.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAQAAAAlCAMAAABS37jfAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBQTFRFx8fH1NTUzs7O2NjYycnJ1tbW z9DP09PT0NDQzc3NysrK19fX2dnZyMjIxsbGzMzM0JjCjAAAAFFJREFUeNp8xFEO gDAIBNEVSqmF6v1v61rir5PMw8Xwz26V6502htnaxGTFzYqTERGISEdnGKzwMRzO ioMVZrYxWEQgQgMaqlBNkpnIj0eAAQD8DgTyM54yBwAAAABJRU5ErkJggg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/menu/active-arrow.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAUAAAADCAMAAABs6DXKAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRF2traAC9kxK0lrwAAABVJREFU eNpiYAQBBgYwAaQYGAACDAAAewAKiGLoUAAAAABJRU5ErkJggg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/menu/search-panel3.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAA94AAAAyCAIAAAAlYZQYAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYBJREFUeNrs2yGOg1AYRtEWjSUkVGEw g3/oacIeWA5rQrEDUBg8hiXgGRJMR41qGXGOIj/uU1fAvW3bpmluAADAdbqui6wA AAD/gTQHAABpDgAASHMAAJDmAACANAcAAGkOAABIcwAAkOYAAIA0BwAAaQ4AAEhz AACQ5gAAgDQHAABpDgAASHMAAJDmAACANAcAAGkOAABIcwAAkOYAAIA0BwAAaQ4A AEhzAACQ5gAAgDQHAABpDgAASHMAAJDmAACANAcAAGkOAABIcwAAkOYAAIA0BwAA pDkAAEhzAABAmgMAgDQHAACkOQAASHMAAECaAwCANAcAAP6ybZs0BwCA6+V5HlVV ta6rLQAA4CrDMIQQoq+ynKbJHAAAcKGiKKJHlpVleXS6OQAA4PO6rgsh3M7fQOu6 TtP0ONkFAAA+3OVVVRVFcTzf930/r+M49n2f5/nxzkYAAPBW53crIYSzy3+l+Wma pnmel2UxFgAAvEMcx0mSfD+fjyx7vf8IMADBDTZBmqmtIwAAAABJRU5ErkJggg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=design.css Content-Type: text/css; charset=utf-8; name=design.css Content-Location: http://teplice.naseadresa.cz/0000-Global/styles/design.css Content-Transfer-Encoding: 8bit /****************************************************************************************/ /* */ /* MojeAdresa.cz website - GLOBAL DESIGN */ /* */ /* Version: 2009-06-10 09:36 */ /* Last changed by: Petr Kus */ /* Version: 2009-06-09 09:06 */ /* Last changed by: Petr Kus */ /* Version: 2009-06-04 14:41 */ /* Last changed by: Petr Kus */ /* Version: 2009-01-28 12:00 */ /* Last changed by: Michal Pelech */ /* */ /****************************************************************************************/ /*======================================================================================*/ @import url("print.css"); form, ul, li, ol, h1, h2, h3, h4, h5, h6, object, p, body, form, dl, dd, dt { margin: 0; padding: 0; } body { margin: 0 0 40px 0; color: black; font-size: 70%; font-family: "Arial", "Tahoma", "Verdana"; font-family: Arial, Tahoma, Verdana; background: url(../images/global-images/top-banner-back.png) top left repeat-x; } h1, h2, h3, h4, h5, h6, input, select, textarea { font-family: "Arial", "Tahoma", "Verdana"; font-family: Arial, Tahoma, Verdana; font-size: 100%; } img { border: none; } a { cursor: pointer; color:#DC632E; } a:hover { text-decoration: none; } table { font-size: 100% } .clear { width: 100%; height: 1px; display: block; clear: both; overflow: hidden; font-size: 1px; } .clear hr { display: none; } .clearNoHeight { clear: both; } .fontSmaller { font-size: 90%; font-family: "Tahoma", "Arial", "Verdana"; font-family: Tahoma, Arial, Verdana; } .fontBigger { font-size: 110%; font-family: "Arial", "Tahoma", "Verdana"; font-family: Arial, Tahoma, Verdana; } #rightAlign { text-align: right; } #centerAlign { text-align: center; } #otherArticles { float: right; } .noBackBorder { background:none; border:0; } h4.noitem { text-align: center; } .column1Panel #peopleContentPanel h4 a.orange { color:#DC632E; } .column1Panel #peopleContentPanel h4 a.orange:hover { color:#DC632E; } .column4Panel .comments h4 a.orange { color:#DC632E; font-weight:normal; text-decoration:underline; } .column4Panel .comments h4 a.orange:hover { color:#DC632E; text-decoration:none; } /*======================================================================================*/ #page { width: 1000px; margin: 0 0 0 120px; padding: 315px 0 0 0; /*340*/ display: block; overflow: visible; position: relative; font-size: 100%; } #self_promo { padding: 10px 19px 10px 19px; width: 300px; border: 1px solid #E7E7E7; position: relative; } #self_promo a { margin: auto; } .homeAdvertisementText, #upperContent .homeAdvertisementText, #upperContent .column4Panel .homeAdvertisementText { /*margin-left: 10px;*/ padding-bottom: 3px; width: 46px; height: 10px; overflow: hidden; } #self_promo .leftBottomCorner { width: 11px; height: 11px; background: transparent url(../images/design/content-blocks/extended-info-panel-01-bottom-left.png) no-repeat; position: absolute; left: -2px; bottom: -2px; _bottom: -6px; } #self_promo .rightBottomCorner { width: 11px; height: 11px; background: transparent url(../images/design/content-blocks/extended-info-panel-01-bottom-right.png) no-repeat; position: absolute; right: -2px; bottom: -2px; _bottom: -6px; } #self_promo .leftTopCorner { width: 11px; height: 11px; background: transparent url(../images/design/content-blocks/extended-info-panel-01-top-left.png) no-repeat; position: absolute; left: -2px; top: -2px; } #self_promo .rightTopCorner { width: 11px; height: 11px; background: transparent url(../images/design/content-blocks/extended-info-panel-01-top-right.png) no-repeat; position: absolute; right: -2px; top: -2px; } #textAdvertBox .leftBottomCorner { width: 11px; height: 11px; background: transparent url(../images/design/content-blocks/extended-info-panel-01-bottom-left.png) no-repeat; position: absolute; left: -2px; bottom: -2px; _bottom: -5px; } #textAdvertBox .rightBottomCorner { width: 11px; height: 11px; background: transparent url(../images/design/content-blocks/extended-info-panel-01-bottom-right.png) no-repeat; position: absolute; right: -2px; bottom: -2px; _bottom: -5px; } #textAdvertBox .leftTopCorner { width: 11px; height: 11px; background: transparent url(../images/design/content-blocks/extended-info-panel-01-top-left.png) no-repeat; position: absolute; left: -2px; top: -2px; } #textAdvertBox .rightTopCorner { width: 11px; height: 11px; background: transparent url(../images/design/content-blocks/extended-info-panel-01-top-right.png) no-repeat; position: absolute; right: -2px; top: -2px; } #textAdvertBox { width: 468px; padding: 9px; border: 1px solid #E7E7E7; position: relative; z-index: 0; } #textAdvertBox table { margin: 0px auto 0px auto; } #main_page { width: 1260px; display: block; margin:0 auto 0 auto; overflow: hidden; position:relative; } #main_page_right { width:130px; position:absolute; top:130px; left:1130px; } .column3Panel .homeAdvertisement { width: 100%; min-height: 300px; overflow: visible; _overflow: hidden; margin: 0px 0 10px 0; } .column4Panel .homeAdvertisement, .column4Panel .homeAdvertisementText { clear:both; display:block; } .column4Panel .homeAdvertisement { margin:0 0 10px 50px; } .column4Panel .homeAdvertisement table a, .column4Panel .homeAdvertisement table a img { position: relative; z-index: 0; } .column4Panel .homeAdvertisementText { margin:10px 0 0px 50px; } .column4Panel .infoText { margin: 10px 0; padding: 0 10px; } /* ========================= FLASH =========================================================== */ #flashGalleryPanel .ieBugFlash { width:999px; border-top:1px solid #555555; } #clock_flash { width:69px; height:69px; } #flash_gallery { /* width:290px; */ width:320px; /* height:285px;*/ margin:5px 0 5px; } #multimedial_box { width:999px; /*height:150px;*/ margin:10px 0 0px 0px; } #multimedial_box_bottom { width:999px; } #page #multimedial_box_bottom .content { overflow:auto; width:949px; padding:10px 20px 0px 30px; /*margin-top:10px;*/ background:#555555 none repeat scroll 0 0; } #multimedial_box_bottom .content .floatLeft { float:left; } #multimedial_box_bottom .content .floatRight { float:right; } #multimedial_box_bottom .content em { font-size:120%; font-weight:bold; font-style:normal; color:#FFFFFF; line-height:30px; } #multimedial_box_bottom .content strong { float:left; line-height:30px; font-size:160%; font-weight:bold; font-style:normal; color:#FFFFFF; } #multimedial_box_bottom .content .video, #multimedial_box_bottom .content .text { float:left; display:inline; width:170px; } #multimedial_box_bottom .content .foto { float:left; display:inline; width:270px; } #multimedial_box_bottom .content em.space { font-size:100%; font-weight:normal; line-height:30px; color:#DC632E; } #multimedial_box_bottom .bottomCorners { clear:both; display:block; height:8px; overflow:hidden; width:100%; background:#555555 none repeat scroll 0 0; } #multimedial_box_bottom .bottomCorners .left { display:block; float:left; height:8px; width:8px; background:#555555 url(../images/design/content-blocks/dark_grey_left_corner.png) no-repeat scroll 0 0; } #multimedial_box_bottom .bottomCorners .right { display:block; float:right; height:8px; width:8px; background:transparent url(../images/design/content-blocks/dark_grey_right_corner.png) no-repeat scroll 0 0; } #multimedial_box_bottom a.userAction { display:inline; float:left; } a.userAction .leftSide { display:inline; float:left; width:5px; height:28px; margin-left:5px; background:transparent url(../images/design/icons/useraction/action_left_dark.png) top left no-repeat; } a.userAction .userPhoto { display:inline; width:46px; height:28px; float:left; background:transparent url(../images/design/icons/useraction/dark_multiright1.png) top left no-repeat; } a.userAction .userVideo { display:inline; width:46px; height:28px; float:left; background:transparent url(../images/design/icons/useraction/dark_multiright2.png) top left no-repeat; } a.userAction .userText { display:inline; width:46px; height:28px; float:left; background:transparent url(../images/design/icons/useraction/dark_multiright3.png) top left no-repeat; } a.userAction .middleSide { display:inline; height:20px; padding:8px 0px 0 7px; float:left; background:transparent url(../images/design/icons/useraction/action_middle_dark.png) top left repeat-x; } /*======================================================================================*/ #centralNewsPanel, #centralNewsPanelPrompt { width: 1000px; height: 32px; margin: 0; display: block; overflow: hidden; position: relative; background: #FF0000;/*url(../images/design/colored-panels/central-news-right.png)*/ color: #ffffff; font-size: 11px; } #centralNewsPanelPrompt { background: #009900; } #centralNewsPanel h1, #centralNewsPanelPrompt h1 { text-align: center; } #centralNewsPanel h1 a, #centralNewsPanelPrompt h1 a { position: static; font-size: 220%; font-family: "Arial", "Tahoma", "Verdana"; font-family: Arial, Tahoma, Verdana; } #centralNewsPanel a, #centralNewsPanelPrompt a { position: absolute; left: 934px; top: 2px; color: White; text-decoration: none; z-index:50; } #centralNewsPanel a:hover, #centralNewsPanelPrompt a:hover { text-decoration:underline; } #centralNewsPanel .leftBlock, #centralNewsPanelPrompt .leftBlock { width: 200px; height: 32px; float: left; background: #a7a9ac url(../images/design/content-blocks/central-news-left.png); text-align: center; } #centralNewsPanel .leftBlock span, #centralNewsPanelPrompt .leftBlock span { position:relative; top:8px; color:#FF0000; font-size:130%; font-weight:bold; } #centralNewsPanelPrompt .leftBlock span { color: #009900; } #centralNewsPanel .leftBlock .separator, #centralNewsPanelPrompt .leftBlock .separator { width: 7px; height: 56px; float: right; display: block; position: static; background: #FF0000 url(../images/design/content-blocks/central-news-separator.gif) no-repeat 0px 0px; } #centralNewsPanelPrompt .leftBlock .separator { background: #009900 url(../images/design/content-blocks/central-news-separator.gif) no-repeat 0px 0px; } /*=========================== navigation ==========================================================*/ /*.navigation { padding: 5px 0 25px 15px; border-bottom: 1px solid #002e67; } .navigation .back { float: right; } .navigation span { width: 20px; height: 15px; float: left; background: transparent url(../images/design/icons/ul-arrow-blue.gif) no-repeat scroll center 4px; } .navigation a { float: left; color: #dc632e; text-decoration:underline; } .navigation a:hover { text-decoration:none; } .navigation strong { float: left; color: #002e67; font-weight: normal; }*/ .navigation { padding: 3px 15px 11px 15px; border-bottom: 1px solid #002e67; } .navigation .left { width:435px; float:left; } .navigation .left span { width: 20px; height: 15px; float: left; background: transparent url(../images/design/icons/ul-arrow-blue.gif) no-repeat scroll center 4px; } .navigation .left a { float: left; color: #dc632e; text-decoration:underline; } .navigation .left a:hover { text-decoration:none; } .navigation .left strong { width: auto; float: left; color: #002e67; font-weight: normal; white-space: nowrap; } .navigation .right { width:110px; float:right; color: #c1c1c1; font-size:110%; text-align:right; } .navigation .right a { float: none; font-size:90%; text-decoration: underline; } .navigation .right a:hover { float: none; font-size:90%; text-decoration: none; } .navigation .left span.last { width:auto; float: left; background:none; } /********************************* HEADER NAVIGATION *********************************/ .headerNavigation { padding: 18px 26px 37px 12px; border-bottom: 1px dotted #C1C1C1; } .headerNavigation .left { width: 70%; float: left; color: #6A6A6A; font-size: 12px; font-weight: bold; } .headerNavigation .left h2 { width: 578px; margin-bottom: 1px; margin-right: 5px; padding: 22px 0 22px 10px; display: inline; color: #002e67; font-weight: bold; font-size: 130%; } .headerNavigation .right { width: 26%; float: right; text-align: right; } .headerNavigation .right a { color: #dc632e; font-size: 12px; } /*====================================================================================*/ #upperContent { width: 100%; margin: 10px 0 0 0; /*clear: both;*/ z-index:1; } #upperContent .column1Panel { width: 355px; float: left; } #upperContent .column2Panel { width: 240px; float: left; } #upperContent .column3Panel { width:384px; float: right; display: block; overflow: visible; } #upperContent .column4Panel { width: 584px; float: left; } #upperContent .column5Panel { width: 516px; float: left; } #upperContent .column6Panel { width: 200px; float: left; } #upperContent .column7Panel { width: 592px; float: left; } #upperContent .column8Panel { width: 365px; float: left; } /*==============================================*/ #upperContent .column1Panel .coloredPanel01 { margin: 0 0 18px 0; } /*==============================================*/ #upperContent .column2Panel .simpleInfoPanel { margin: 0 0 8px 0; float: left; } /*==============================================*/ #upperContent .column3Panel .extendedInfoPanel .header .left { _width: 180px; min-width: 180px; } #upperContent .column3Panel .coloredPanel03 { width:380px; margin: 0 0 12px 0; } .paddedTen { padding:10px; } /*#upperContent .column3Panel .coloredPanel03,*/ #upperContent .column3Panel .extendedInfoPanel { margin: 0 0 12px 0; _position: relative; _left: 1px; } #upperContent .column3Panel .simpleInfoPanel#bottomMargin, #upperContent .column3Panel .gradientPanel01#bottomMargin, #upperContent .column3Panel .gradientPanel02#bottomMargin, #upperContent .column3Panel .gradientPanel03#bottomMargin, #upperContent .column3Panel .gradientPanel04#bottomMargin, #lowerContent .column2Panel .simpleInfoPanel#bottomMargin, #lowerContent .column2Panel .gradientPanel01#bottomMargin, #lowerContent .column2Panel .gradientPanel02#bottomMargin, #lowerContent .column2Panel .gradientPanel03#bottomMargin, #lowerContent .column2Panel .gradientPanel04#bottomMargin, #lowerContent .column2Panel .extendedInfoPanel#bottomMargin, #upperContent .column3Panel .extendedInfoPanel#bottomMargin, #lowerContent .column3Panel#bottomMargin, #lowerContent .column2Panel#bottomMargin { margin-bottom:90px; } #upperContent .column2Panel#bottomMargin { margin-bottom:90px; } #upperContent #bottomMargin { margin-bottom:90px; } /*======================================================================================*/ #flashGalleryPanel { width: 100%; padding: 0 0 15px 0; clear: both; text-align: center; } /*======================================================================================*/ #lowerContent { width: 100%; clear: both; } #lowerContent .column1Panel { width: 615px; float: left; display: block; overflow: hidden; } #lowerContent .column2Panel { width: 380px; float: right; display: block; overflow: hidden; } #lowerContent .column1LeftPanel { width: 313px; float: left; } #lowerContent .column1RightPanel { float: left; } #lowerContent .column1FullPanel { clear: both; text-align: left; } #lowerContent .column1FullPanel .homeAdvertisement, .column4Panel .column1FullPanel .homeAdvertisement { width:468px; height:300px; overflow:hidden; margin:3px 0 10px 60px; } #lowerContent .column1FullPanel img.homeAdvertisementText, .column4Panel .column1FullPanel img.homeAdvertisementText { margin:0 0 0 60px; } #lowerContent .column1FullPanel #textAdvertBox { margin:0 0 0 50px; } /*==============================================*/ #lowerContent .column1LeftPanel .gradientPanel01, #lowerContent .column1RightPanel .gradientPanel01 { margin-bottom: 5px; } #topColumn1RightPanel .gradientPanel01 .content, #topColumn1LeftPanel .gradientPanel01 .content { /*height: 160px;*/ } #bottomColumn1LeftPanel .gradientPanel01 .content, #bottomColumn1RightPanel .gradientPanel01 .content { /*height: 205px;*/ } /*==============================================*/ #lowerContent .column2Panel .extendedInfoPanel .header .left { width: 130px; } #lowerContent .column2Panel .extendedInfoPanel { margin: 0 0 12px 0; } /*==============================================*/ #lowerContent .column1FullPanel .gradientPanel01 { width: 600px; margin: 10px 0; } /*==============================================*/ #cultureContentPanel span { float: left; display: block; } #cultureContentPanel span.addProgram { width:100%; } #cultureContentPanel .addProgram .userAction { margin: 0 23px 0 0; float:right; } #cultureContentPanel .addProgram .buttonWhiteBg { margin-bottom:13px; margin-right:22px; position:relative; left:0px; top:5px; float:right; } #cultureContentPanel .value .leftSelect, #cultureContentPanel .value .rightSelect { width: 125px; margin: 0 10px 0 0; } #cultureContentPanel .value .leftSelect .calendarButton, #cultureContentPanel .value .rightSelect .calendarButton { margin-left:4px; } #cultureContentPanel .value .leftSelect .inputLighterGreyBg, #cultureContentPanel .value .rightSelect .inputLighterGreyBg { display:inline-block; float:left; width: 105px; background:transparent url(../images/design/forms/left-select.gif) no-repeat scroll left -1px; } #cultureContentPanel .value .selectReplacement { width:264px; } #cultureContentPanel .value .leftSelect .inputLighterGreyBg .rightPart, #cultureContentPanel .value .rightSelect .inputLighterGreyBg .rightPart { float:right; background:url(../images/design/forms/right-select-grey.gif) no-repeat 0 -1px; } #cultureContentPanel .value .leftSelect .inputLighterGreyBg input, #cultureContentPanel .value .rightSelect .inputLighterGreyBg input { width: 90px; color:#5B5B5B; padding-left:4px; } #cultureContentPanel span.spanButton { margin:12px 0 0 0; } #cultureContentPanel .title { width: 70px; color: #002e67; } #cultureContentPanel .firstTitle { width: 100px; color: #002e67; } .liInnerMenu { z-index: 200; } #cultureContentPanel .title span, #cultureContentPanel .firstTitle span { padding-left: 15px; background: url(../images/design/icons/ul-arrow-blue.gif) no-repeat left center; font-weight: bold; } #cultureContentPanel .value { width: 275px; float:left; color: #002e67; } #cultureContentPanel .firstValue { width: 255px; float:left; color: #002e67; } /*#cultureContentPanel span.value div { margin: 0 0 5px 0; }*/ #cultureContentPanel .value img, #cultureContentPanel .firstValue img { float: right; } #cultureContentPanel .value a, #cultureContentPanel .firstValue a { color: #005e82; text-decoration: underline; } #cultureContentPanel .value a:hover, #cultureContentPanel .firstValue a:hover { text-decoration: none; } /*==============================================*/ #cultureContentPanel .program { width: 170px; min-height: 30px; padding: 0 0 10px 0; float: left; display: block; overflow: hidden; } #cultureContentPanel .program .logo { width: 40px; float: left; display: block; overflow: hidden; text-align: center; } #cultureContentPanel .program .time { width: 25px; float: left; color: #767676; } #cultureContentPanel .program .name { width: 100px; float: right; } #cultureContentPanel .program .name span { color: #767676; font-size: 90%; } /*==============================================*/ /*#advertsContentPanel .userAction { margin:10px 0 0 0; }*/ #advertsContentPanel a.userAction { text-decoration:none; } /*==============================================*/ #newspapersRelative { clear: both; position: relative; } #findNewspapersPanel { width: 100%; height: 90px; overflow: visible; position: absolute; /* relative */ clear: both; left:622px; top:-74px; } /*#lowerContent #findNewspapersPanel { left:622px; top:-74px; }*/ #findNewspapersPanel span { /*position: absolute; left: 15px; top: 30px;*/ padding: 30px 8px 0 2px; float: left; color: #002e67; font-weight: bold; font-size: 105%; } #findNewspapersPanel .input { position: absolute; left: 115px; top: 26px; } #findNewspapersPanel .news { position: absolute; left: 260px; top: 0px; } /*======================================================================================*/ #bottomPanel { width: 1000px; height: 36px; margin: 10px 0; display: block; clear: both; overflow: hidden; background: #cfcfcf url(../images/design/menu/bottom-menu-bg.png) repeat-x 0px 0px; } #bottomPanel .leftSide { width: 9px; height: 36px; float: left; display: block; background: #cfcfcf url(../images/design/menu/bottom-menu-left.png) no-repeat 0px 0px; } #bottomPanel .rightSide { width: 9px; height: 36px; float: right; display: block; background: #cfcfcf url(../images/design/menu/bottom-menu-right.png) no-repeat 0px 0px; } #bottomPanel ul { width: 975px; height: 36px; display: block; list-style: none; } #bottomPanel ul li { float: left; position: relative; left: 8px; /*left: 20px;*/ text-align: center; } #bottomPanel ul li a { height: 12px; margin: 0 auto; padding: 4px 0; display: block; overflow: hidden; position: relative; top: 7px; color: Black; text-transform: uppercase; text-decoration: none; } #bottomPanel ul li a:hover { background: #e9e8e8 url(../images/design/menu/bottom-menu-selected-bg.png) repeat-x 0px 0px; } #bottomPanel ul li a span { display: none; } #bottomPanel ul .selected { background: #e9e8e8 url(../images/design/menu/bottom-menu-selected-bg.png) repeat-x 0px 0px; } #bottomPanel ul .selected:hover { text-decoration: none; } #bottomPanel ul .selected span, #bottomPanel ul li a:hover span { width: 10px; height: 20px; display: block; position: relative; top: -4px; } #bottomPanel ul .selected .left, #bottomPanel ul li a:hover .left { float: left; background: #e9e8e8 url(../images/design/menu/bottom-menu-selected-left.png) no-repeat 0px 0px; } #bottomPanel ul .selected .right, #bottomPanel ul li a:hover .right { float: right; background: #e9e8e8 url(../images/design/menu/bottom-menu-selected-right.png) no-repeat 0px 0px; } #bottomPanel .item1, #bottomPanel .item2, #bottomPanel .item5, #bottomPanel .item6, #bottomPanel .item7 { width: 113px; /*width: 126px;*/ } #bottomPanel .item3, #bottomPanel .item4 { width: 200px; } #bottomPanel .item1 a { width: 80px; } #bottomPanel .item2 a { width: 90px; } #bottomPanel .item3 a { width: 150px; } #bottomPanel .item4 a { width: 180px; } #bottomPanel .item5 a { width: 90px; } #bottomPanel .item6 a { width: 90px; } #bottomPanel .item7 a { width: 90px; } /*======================================================================================*/ #copyrightPanel { width: 1000px; } #copyrightPanel span { float: right; } #copyrightPanel span a { color: Black; text-decoration: underline; } #copyrightPanel span a:hover { text-decoration: none; } #copyrightPanel .otherProjects { margin: 5px 0; padding: 0; } #copyrightPanel .otherProjects a { padding: 0 5px; } #copyrightPanel .otherProjects .left { width: 70%; float: left; } #copyrightPanel .otherProjects .right { width: 25%; float: right; text-align: right; } /*======================================================================================*/ #partnersPanel { width: 1000px; } /*======================================================================================*/ #headerPanel { width: 1000px; height: 185px;/*163*/ display: block; overflow: visible; position: absolute; left: 0; top: 126px; /*background: url(../images/global-images/header-bilovice.png) no-repeat 240px 30px;*/ font-size: 11px; z-index:100; } #headerPanel a { color: Black; text-decoration: none; } #headerPanel a:hover { text-decoration: underline; } #headerPanel hr { display: none; } #headerPanel .topPanel { height: 25px; padding: 5px 0 0 0; position: relative; background: #f9f7f7; /*font-weight:bold;*/ } #headerPanel .topPanel a { color:#002065; font-size:11px; /* 95% */ font-weight: normal; } #headerPanel .topPanel a img { margin:0 5px 0 5px; } #headerPanel .topPanel a.fontSmaller img, #headerPanel .topPanel a.fontSmallerArrow img, #headerPanel .topPanel a.fontBiggerArrow img { margin:0; } #headerPanel .topPanel a.fontSmaller img { margin:0 0px 0 5px; } #headerPanel .topPanel a.fontBigger img { margin:0 5px 0 0px; } #headerPanel .topPanel a span.href { text-decoration:underline; color:#002065; line-height:25px; position:relative; top:-3px; } #headerPanel .topPanel a:hover span.href { text-decoration:none; } #headerPanel .topPanel a:hover { text-decoration:none; } #headerPanel .topPanel .homepage { position: absolute; left: 50%; /*top: 9px;*/ top: 8px; } #headerPanel .topPanel a.homepage { text-decoration:underline; } #headerPanel .topPanel a.homepage:hover { text-decoration:none; } #headerPanel .topPanel .bottomCorners { height: 8px; clear: both; position: relative; top: 17px; } #headerPanel .topPanel .bottomCorners .left { width: 8px; height: 7px; position: absolute; left: 0; top: 1px; overflow: hidden; background: transparent url(../images/design/menu/search-left.png) left top no-repeat; } #headerPanel .topPanel .bottomCorners .right { width: 7px; height: 8px; position: absolute; right: 0; top: 0; overflow: hidden; background: transparent url(../images/design/menu/search-right.png) left top no-repeat; } #headerPanel .topPanel span { /*font-weight: bold;*/ color: #f05046; } #headerPanel .userPanel { position: absolute; right: 0; /*top: 7px;*/ top: 8px; text-align: right; } #headerPanel .userPanel p { display: inline; font-size: 11px; } #headerPanel .userPanel a { text-decoration:underline; } #headerPanel .userPanel a:hover { text-decoration:none; } #headerPanel .loginLink { margin: 0 5px 0 0; padding: 1px 25px 1px 0; background: url(../images/design/icons/key.png) no-repeat right center; } #headerPanel .maLogoLink { left:15px; position:absolute; top:50px; } #headerPanel .maLogo { position:absolute; top:19px; } #headerPanel .baseRef { position:absolute; top:92px; left:17px; color:#DC632E; font-size:120%; text-transform:lowercase; text-decoration:underline; } #headerPanel .baseRef:hover { text-decoration:none; } #headerPanel h2 { padding:0; position:absolute; top:41px; left:14px; display:block; } #headerPanel h2 a { color:#F05046; font-family:"verdana","tahoma"; font-size:28px; font-weight:bold; text-transform:uppercase; } #headerPanel h2 a:hover { text-decoration:none; } /*======================================================================================*/ #headerPanel .fulltextSearchPanel { width: 378px; height: 67px; position: absolute; left: 318px; top: 38px; background: #ececec url(../images/design/menu/search-bg.png) repeat 0px 0px; } #headerPanel .fulltextSearchPanel .header { width: 369px; float: left; background: #205693 url(../images/design/menu/search-blue-bg.png) repeat-x 0px 0px; } #headerPanel .fulltextSearchPanel .headerLeft { width: 5px; height: 25px; float: left; display: block; background: #205693 url(../images/design/menu/search-blue-left.png) no-repeat 0px 0px !important; } #headerPanel .fulltextSearchPanel .headerRight { width: 4px; height: 25px; float: right; display: block; background: #205693 url(../images/design/menu/search-blue-right.png) no-repeat 0px 0px !important; border: none !important; } #headerPanel .fulltextSearchPanel .header a { width: 101px; height: 19px; padding-top: 6px; float: left; display: block; color: #fff; text-align: center; font-size: 10px; } #headerPanel .fulltextSearchPanel .header a#actual { background: #ececec url(../images/design/forms/search-button-grey.png) no-repeat 0px 0px; color: #b20014; } #headerPanel .fulltextSearchPanel .bottomCorners { width: 100%; height: 3px; display: block; overflow: hidden; position: absolute; top: 67px; left: 0; background: #ececec url(../images/design/forms/search-bg.png) repeat 0px 0px; } #headerPanel .fulltextSearchPanel .bottomCorners .right { width: 3px; height: 3px; float: right; display: block; background: #ececec url(../images/design/menu/grey-search-bottom-right.png) no-repeat 0px 0px !important; } #headerPanel .fulltextSearchPanel .bottomCorners .left { width: 3px; height: 3px; float: left; display: block; background: #ececec url(../images/design/menu/grey-search-bottom-left.png) no-repeat 0px 0px !important; } #headerPanel .fulltextSearchPanel .inputGreyBg { float: left; position: relative; left: 12px; top: 9px; } #headerPanel .fulltextSearchPanel .inputGreyBg .arrow { width: 14px; height: 8px; float: left; display: block; position: absolute; top: -6px; left: 37px; background: #ececec url(../images/design/forms/grey-arrow.png) no-repeat 0px 0px; line-height: 1px; } #headerPanel .fulltextSearchPanel .buttonGreyBg { position: absolute; left: 278px; top: 34px; } /*======================================================================================*/ #headerPanel .topInfoPanel { width: 240px; height: 75px; position: absolute; right: 0px; top: 37px; background: transparent; } #headerPanel .topInfoPanel p, #headerPanel .topInfoPanel div { font-size: 11px; } #headerPanel .topInfoPanel .horoscope { position: absolute; top: 50px; left: 85px; } #headerPanel .topInfoPanel ul.horoscope li { float:left; list-style-type:none; margin:0 2px 0 0; } #headerPanel .topInfoPanel #clock_flash { width: 69px; height: 69px; } #headerPanel input { font-size: 11px; } /*=============================================================*/ #headerPanel .iconsPanel { position: absolute; left: 15px; top: 5px; } #headerPanel .iconsPanel a { color: #002065; } #headerPanel .iconsPanel .home, #headerPanel .iconsPanel .fontSmaller, #headerPanel .iconsPanel .fontSmallerArrow, #headerPanel .iconsPanel .fontBiggerArrow, #headerPanel .iconsPanel .fontBigger, #headerPanel .iconsPanel .email, #headerPanel .iconsPanel .print { position: relative; } #headerPanel .iconsPanel .home { top: 0px; /*top: 1px;*/ } #headerPanel .iconsPanel .fontSmaller { top: 0px; } #headerPanel .iconsPanel .fontSmallerArrow { top: -2px; } #headerPanel .iconsPanel .fontBiggerArrow { top: -2px; } #headerPanel .iconsPanel .fontBigger { top: 0px; } #headerPanel .iconsPanel .email { top: 0px; } #headerPanel .iconsPanel .print { top: 0px; } /*=============================================================*/ #headerPanel .topInfoPanel .date { position: absolute; left: 80px; top: 05px; text-align: center; } #headerPanel .topInfoPanel .date span { color: #f05046; font-weight: bold; } #headerPanel .topInfoPanel .nameDayPanel { position: absolute; left: 80px; top: 20px; } #headerPanel .topInfoPanel .nameDayPanel span { color: #f05046; font-weight: bold; } #headerPanel .topInfoPanel .horoscopePanel { position: absolute; left: 80px; top: 45px; text-align: center; } #headerPanel .topInfoPanel .horoscopePanel a { color: #DC632E; text-decoration:underline; } #headerPanel .topInfoPanel .horoscopePanel a:hover { color: #DC632E; text-decoration:none; } /*=============================================================*/ #headerPanel .topInfoPanel .horoscopePanel .sign { margin: 0 3px 3px 0; float: left; } /*======================================================================================*/ #headerPanel .controls { width: 100%; height: 77px; /* 100px */ position: absolute; display: block; overflow: visible; left: 0; top: 112px; z-index:300; } #headerPanel .controls #myMenuBackgroundHolder { width: 625px; height: 5px; position: absolute; left: 108px; top: 31px; overflow: hidden; background: #dadada url(../images/design/menu/menu-holder.png) left top no-repeat; z-index: 100; } /*=======================================================================================*/ #headerPanel .searchHeader { width: 970px; height: 36px; margin: 0; padding: 3px 10px 0 10px; position: absolute; left: 5px; top: 32px; overflow: hidden; background: #f9f7f7 url(../images/design/menu/search-panel2.png) left -11px no-repeat; color: #969696; z-index: 100; } #headerPanel .searchHeader .contentHeader { width: 970px; height: 28px; float: left; position: relative; z-index: 0; } #headerPanel .searchHeader .contentHeader .leftHeader { width: 275px; padding: 5px 0 0 0; float: left; position: relative; z-index: 0; } #headerPanel .searchHeader .contentHeader .leftHeader.translate { width:364px; } #headerPanel .searchHeader .contentHeader .leftHeader.search img.separator { margin:0 17px; float:left; } #headerPanel .searchHeader .contentHeader .leftHeader.search { width:322px; } #headerPanel .searchHeader .contentHeader .leftHeader p { padding: 3px 5px 0 0; float: left; } #headerPanel .searchHeader .contentHeader .leftHeader .inputGreyBg { width: 155px; height: 20px; margin: 2px 5px 0 0; position: relative; float: left; z-index: 0; } #headerPanel .searchHeader .contentHeader .leftHeader img { float:left; margin:7px 8px 0 0px; } #headerPanel .searchHeader .contentHeader .leftHeader .inputGreyBg .left, #headerPanel .searchHeader .contentHeader .leftHeader .inputGreyBg .right { width: 4px; height: 20px; } #headerPanel .searchHeader .contentHeader .leftHeader .inputGreyBg .left { background: transparent url(../images/design/forms/header-input-left.png) left top no-repeat; } #headerPanel .searchHeader .contentHeader .leftHeader .inputGreyBg .right { background: transparent url(../images/design/forms/header-input-right.png) right top no-repeat; } #headerPanel .searchHeader .contentHeader .leftHeader .inputGreyBg input { width: 130px; color:#767A7D; } #headerPanel .searchHeader .contentHeader .leftHeader.translate a { color:#767a7d; text-decoration:underline; line-height:25px; display:block; float:left; margin:0 0 0 5px; } #headerPanel .searchHeader .contentHeader .leftHeader.translate a:hover { text-decoration:none; } #headerPanel .searchHeader .contentHeader .leftHeader.translate .inputGreyBg { width: 170px; /* 100 */ } #headerPanel .searchHeader .contentHeader .leftHeader.translate .inputGreyBg input { width: 145px; /* 75 */ color:#767A7D; } #headerPanel .searchHeader .contentHeader .leftHeader.search .inputGreyBg { width: 174px; } #headerPanel .searchHeader .contentHeader .leftHeader.search .inputGreyBg input { width: 150px; color:#767A7D; } #headerPanel .searchHeader .contentHeader .leftHeader div.selectReplacement { width: 38px; margin: 0 0 0 5px; float: left; } #headerPanel .searchHeader .contentHeader .leftHeader .buttonGreyBg { width: 64px; height: 20px; margin: 3px 0 0 0; padding: 0 0 0px 0; float: left; line-height: 18px; position: relative; background: #e1e0e0 url(../images/design/forms/header_submit.png) left top no-repeat; text-transform: uppercase; font-size: 11px; /*90%*/ z-index: 0; } #headerPanel .searchHeader .contentHeader .leftHeader .buttonGreyBg.small { width: 53px; height: 20px; margin: 3px 0 0 0; padding: 0 0 4px 0; float: left; line-height: 18px; position: relative; background: #e1e0e0 url(../images/design/menu/ajcjButton.png) left top no-repeat; text-transform: uppercase; font-size: 11px; /*90%*/ z-index: 0; } #headerPanel .searchHeader .contentHeader .leftHeader p a { color: #dc2b47; } /*======================================================================================*/ /* --MENU /*======================================================================================*/ #headerPanel .menu { width: 1000px; height: 32px; margin: 0; overflow: visible; position: absolute; background: transparent url(../images/design/menu/blue-center.gif) repeat-x center top; text-transform: uppercase; font-size: 11px; z-index: 600; } #headerPanel .menu li { height: 32px; float: left; display: block; position: relative; overflow: visible; list-style: none; text-align: center; /*z-index: 99999;*/ } #headerPanel .menu a { display: block; position: relative; top: 10px; color: #ffffff; /*z-index: 99999;*/ } #headerPanel .menu li a:hover { text-decoration: none; } #headerPanel .menu .liAroundCities { width: 107px; background: #00588B url(../images/design/menu/blue-left.png) no-repeat 0px 0px; } #headerPanel .menu .liAroundCities a { padding-right: 16px; } #headerPanel .menu .liAdverts { width: 161px; padding: 0; text-align: center; background: #00588B url(../images/design/menu/blue-center.png) repeat-x center top; z-index:600; } #headerPanel .menu .liAdverts a { border-right: 1px dotted #ffffff; } #headerPanel .menu .liHelp { width: 105px; padding: 0; float: right; background:#00588B url(../images/design/menu/blue-right.png) no-repeat right 0px; } #headerPanel .menu .liHelp a { padding: 0 10px 0 10px; } #page #headerPanel .menu li.subActive { position: static; } /* here is .hover class for IE6 */ #headerPanel .menu li.liAdverts, #headerPanel .menu .myMenu li, #headerPanel .menu .myMenu .submenu li, #headerPanel .menu .submenu li, #headerPanel .menu .myMenu .submenu li, #headerPanel .menu .submenu li.last, #headerPanel .menu li.liAroundCities, #headerPanel .menu .sub li, #headerPanel .menu .myMenu .sub li { behavior: url(/files/hover.htc); } #headerPanel .menu li.liAroundCities { z-index:600; } /* here is .hover class for IE6 */ #headerPanel .menu li.liAdverts:hover .sub, #headerPanel .menu li.liAdverts.hover .sub { display: block; } /* here is .hover class for IE6 */ #headerPanel .menu .myMenu li:hover .sub, #headerPanel .menu .myMenu li.hover .sub { display: block; } #headerPanel .menu li.liAroundCities:hover .subBig, #headerPanel .menu li.liAroundCities.hover .subBig { display: block; } #headerPanel .menu .myMenu { width: 625px; height: 37px; float: left; display: block; position: relative; top: -2px; background: #e9e8e8 url(../images/design/menu/grey-center.png) repeat-x center 0px; border:1px solid #F1F1F1; z-index: 2; } #headerPanel .menu .myMenu li { padding: 0; position: relative; background: transparent url(../images/design/menu/grey-separator.gif) no-repeat right 11px; z-index: 600; } #headerPanel .menu .myMenu li.item-one, #headerPanel .menu .myMenu li.item-one a { width: 75px;/*120 - 130*/ } #headerPanel .menu .myMenu li.item-two, #headerPanel .menu .myMenu li.item-two a { width: 85px;/*75 - 95*/ } #headerPanel .menu .myMenu li.item-three, #headerPanel .menu .myMenu li.item-three a { width: 75px;/*65 - 85*/ } #headerPanel .menu .myMenu li.item-four, #headerPanel .menu .myMenu li.item-four a { width: 100px; /*95 - 105*/ } #headerPanel .menu .myMenu li.item-five, #headerPanel .menu .myMenu li.item-five a { width: 115px;/*140*/ } #headerPanel .menu .myMenu li.item-six, #headerPanel .menu .myMenu li.item-six a { width: 175px;/*154 - 170*/ background: transparent; } #headerPanel .menu .myMenu li.last { background: none; } #headerPanel .menu .myMenu li a { height: 25px; /*margin: 0 1px 0 0;*/ padding: 13px 0 0 0; float: left; top: -1px; text-align: center; /*z-index: 9999;*/ } #headerPanel .menu .myMenu li a.active { height: 21px; padding: 13px 0 0 0;/*padding: 0 5px 10px 5px;*/ position: relative; left: -1px; background: #cfcfcf url(../images/design/menu/menu-active.png) left 1px repeat-x; z-index: 110; } #headerPanel .menu .myMenu li a.active span { width: 5px; height: 3px; display: block; position: absolute; left: 45%; top: 90%; background: transparent url(../images/design/menu/active-arrow.png) left top no-repeat; } #headerPanel .menu .myMenu a { position: relative; top: 11px; color: #25498d; /*z-index: 9999;*/ } #headerPanel .menu .myMenu .submenu, #headerPanel .menu .submenu { width: 980px; height: 29px; padding: 0 5px; position: absolute; left: -103px; top: 33px; background: #dadada url(../images/design/menu/search-panel3.png) repeat scroll 0 -11px; color: #000000; z-index: 0; } #headerPanel .menu .submenu { left: 5px; top: 32px; } #headerPanel .menu .myMenu .submenu li.first, #headerPanel .menu .submenu li.first { background: transparent url(../images/design/menu/submenu-left.png) left bottom no-repeat; } #headerPanel .menu .myMenu .submenu li, #headerPanel .menu .submenu li { width: auto; height: 29px; padding: 0 10px; position: relative; line-height: 20px; background: none; /*z-index: -1;*/ } #headerPanel .menu .myMenu .submenu li.last, #headerPanel .menu .submenu li.last { width: 6px; float: right; background: transparent url(../images/design/menu/submenu-right.png) right bottom no-repeat; /*z-index: -1;*/ } #headerPanel .menu .myMenu .submenu li a, #headerPanel .menu .submenu li a { width: auto; height: 29px; padding: 0; /*padding: 0 12px 0 12px;*/ border: none; line-height: 36px; /*z-index: -1;*/ } #headerPanel .menu .submenu li a { float: left; top: 0; color: #25498d; overflow: hidden; } #headerPanel .menu .myMenu .submenu li span, #headerPanel .menu .submenu li span { height: 24px; padding: 3px 25px 0 15px; float: left; } #headerPanel .menu .myMenu .submenu li span a, #headerPanel .menu .submenu li span a { padding: 0; float: none; display: inline; color: #dc2b47; } #headerPanel .menu .myMenu .submenu li:hover, #headerPanel .menu .myMenu .submenu li.hover, #headerPanel .menu .submenu li:hover, #headerPanel .menu .submenu li.hover { background: #ffffff; } #headerPanel .menu .myMenu .submenu li a:hover, #headerPanel .menu .submenu li a:hover { color: #dc2b47; text-decoration: none; } #headerPanel .menu .myMenu .submenu li:hover ul, #headerPanel .menu .myMenu .submenu li.hover ul, #headerPanel .menu .submenu li:hover ul, #headerPanel .menu .submenu li.hover ul { display: block; } #headerPanel .menu .myMenu .submenu li.last:hover, #headerPanel .menu .submenu li.last:hover { background: transparent url(../images/design/menu/submenu-right.png) right bottom no-repeat; } #headerPanel .menu .myMenu .submenu li.first:hover, #headerPanel .menu .submenu li.first:hover { background: transparent url(../images/design/menu/submenu-left.png) left bottom no-repeat; } #headerPanel .menu .myMenu .submenu li.first a:hover, #headerPanel .menu .submenu li.first a:hover { text-decoration: underline; } #headerPanel .menu .myMenu .submenu ul, #headerPanel .menu .submenu ul { width: 115px; padding: 0; display: none; position: absolute; top: 28px; left: -1px; background: #ffffff; border: 1px solid #d1d0d0; border-top: none; /*z-index: 999;*/ } #headerPanel .menu .myMenu .submenu ul li, #headerPanel .menu .submenu ul li { height: 1%; padding: 0; margin: 0; float: none; text-align: left; /*z-index: 999;*/ } #headerPanel .menu .myMenu .submenu ul li a, #headerPanel .menu .submenu ul li a { height: auto; margin: 0; padding: 0 0 0 5px; float: none; display: block; line-height: 20px; overflow: hidden; background: #ffffff; color: #2a5ea1; font-weight: bold; font-size: 11px; text-transform: none; text-align: left; /*z-index: 999;*/ } #headerPanel .menu .myMenu .submenu ul li a:hover, #headerPanel .menu .submenu ul li a:hover { color: #dc2b47; } #headerPanel .menu .sub, #headerPanel .menu .myMenu .sub { width: 150px; padding: 5px 0 0 0; display: none; position: absolute; top: 30px; left: -1px; background: #ffffff; border: 1px solid #d1d0d0; border-top: none; z-index: 99999; } #headerPanel .menu .sub { z-index: 99999; } #headerPanel .menu .sub li, #headerPanel .menu .myMenu .sub li { height: 1%; padding: 0; margin: 0; float: none; border: none; text-align: left; background: #ffffff; /*z-index: 99999;*/ } #page #headerPanel .menu .sub li a, #headerPanel .menu .myMenu .sub li a { width: auto; height: auto; margin: 0; padding: 0 0 0 5px; float: none; display: block; line-height: 16px; overflow: hidden; background: #ffffff; border: none; color: #2a5ea1; font-weight: bold; font-size: 11px; text-transform: uppercase; /*z-index: 99999;*/ text-align: left; } #page #headerPanel .menu .sub li.hasSub, #headerPanel .menu .myMenu .sub li.hasSub { position: relative; background: #ffffff; } #page #headerPanel .menu .sub li.hasSub a, #headerPanel .menu .myMenu .sub li.hasSub a { /*background: #ffffff url(../images/design/icons/arrow-right.gif) no-repeat 140px center*/ background: #ffffff; text-transform: uppercase; } #headerPanel .menu .myMenu .sub li:hover .subLevel2, #headerPanel .menu .myMenu .sub li.hover .subLevel2 { visibility: visible; } #page #headerPanel .menu .sub li a:hover, #headerPanel .menu .myMenu .sub li a:hover { color: #dc2b47; } #headerPanel .menu .myMenu .sub .subLevel2 { padding: 0 0 0 15px; /*width: 150px; position: absolute; left: 150px; top: 0; visibility: hidden;*/ background: #ffffff; /*border: 1px solid #d1d0d0;*/ } #headerPanel .menu .myMenu .sub .subLevel2 li { background: #ffffff; } body #page #headerPanel .menu .myMenu li .sub li .subLevel2 li a { margin: 1px 0 0 0; line-height: 12px; background: #ffffff; text-transform: none; } /* .subBig - submenu for arround cities ------------------------------------------------*/ #headerPanel .menu .subBig { width: 155px; height: auto; padding: 0; display: none; position: absolute; top: 30px; left: 15px; background: #ffffff; border: 1px solid #d1d0d0; border-top: none; z-index: 99999; } #headerPanel .menu .subBig ul { width: 150px; padding: 0 5px; float: left; } #headerPanel .menu .subBig ul li { width: auto; height: auto; padding: 3px 0; display: block; float: none; text-align: left; } #headerPanel .menu .subBig ul li a { padding: 0; position: static; color: #2a5ea1; font-weight: bold; text-transform: none; } #headerPanel .menu .subBig ul li a:hover { color: #dc2b47; } a.right01 { display:block; text-align:right; } /*======================================================================================*/ /* END of MENU /*======================================================================================*/ /*======================================================================================*/ #bannersPanel { width: 100%; position: absolute; left: 0; top: 0; /background: url(../images/global-images/top-banner-back.png) top left repeat-x; text-align: left; /*border:20px solid orange;*/ } #bannersPanels * { position: relative; } .bannersIeHack { margin: 7px 0 7px; height:112px; } #bannersPanel a { /*1 width: 750px; height: 112px; /*100 margin: 0 auto; display: block; overflow: hidden; position: relative; background: transparent; /*#979797*/ } #bannersPanel .bannersPanelBanner { height: 126px; width: 750px; overflow: hidden; margin: 0 auto; position:relative; } #bannersPanelContent { width:750px; height:100px; overflow:hidden; position:relative; background: white; } #bannersPanel a img { z-index: 10; } #bannersPanel img.advertisement { margin:3px 0 2px 0; z-index: 50; } #bannersPanel a span { width: 730px; height: 50px; display: block; position: absolute; left: 10px; top: 25px; z-index: 5; color: White; text-align: center; } .advertisementText { position:relative; top:5px; left:12px; } .advertisementImg { width: 250px; height: 250px; margin:10px 30px 30px 30px; } /* ------------------- old -------------------------.coloredPanel01#newspoint .content img.newspoint, .coloredPanel02#newspoint .content img.newspoint{ position: relative; top: -9px; left: -9px; z-index:50; } .extendedInfoPanel#newspoint .content img.newspoint{ margin-bottom:5px; } .extendedInfoPanel#newspoint .content ul.arrow{ margin-left: 0; } .coloredPanel01#newspoint .content img.imgFloatLeft, .coloredPanel02#newspoint .content img.imgFloatLeft, .extendedInfoPanel#newspoint .content img.imgFloatLeft{ margin-right: 20px; } .coloredPanel01#newspoint .content ul.newspointList, .coloredPanel02#newspoint .content ul.newspointList, .extendedInfoPanel#newspoint .content ul.newspointList { list-style-type: square; margin:0; padding:0; } .coloredPanel01#newspoint .content ul.newspointList li, .coloredPanel02#newspoint .content ul.newspointList li, .extendedInfoPanel#newspoint .content ul.newspointList li { margin-bottom: 4px; } */ /* --------- newspoint new ---------------------------- */ .coloredPanel01#newspoint, .coloredPanel02#newspoint, .extendedInfoPanel#newspoint{ position: relative; } .extendedInfoPanel#newspoint .content img.newspoint, .coloredPanel01#newspoint .content img.newspoint, .coloredPanel02#newspoint .content img.newspoint { /* position: absolute; top: 26px; left: 6px;*/ position:relative; top:-4px; z-index:50; float:left; margin-right:10px; } .coloredPanel01#newspoint .content, .coloredPanel02#newspoint .content, .extendedInfoPanel#newspoint .content{ /* padding-top: 45px;*/ margin-top:6px; } .coloredPanel01#newspoint .content ul.arrow, .coloredPanel02#newspoint .content ul.arrow, .extendedInfoPanel#newspoint .content ul.arrow{ margin-left: 0; } .coloredPanel01#newspoint .content img.imgFloatLeft, .coloredPanel02#newspoint .content img.imgFloatLeft, .extendedInfoPanel#newspoint .content img.imgFloatLeft{ margin:0 20px 5px 0; } .coloredPanel01#newspoint .content ul.newspointList, .coloredPanel02#newspoint .content ul.newspointList, .extendedInfoPanel#newspoint .content ul.newspointList { list-style-type: square; margin:0; padding:0; } .coloredPanel01#newspoint .content ul.newspointList li, .coloredPanel02#newspoint .content ul.newspointList li, .extendedInfoPanel#newspoint .content ul.newspointList li { margin-bottom: 4px; } /* FULL LINE ==================================================================== */ .column4Panel .coloredPanel03 .content .fullLine { padding: 2px 10px 2px 0; display: block; overflow: hidden; background: #e9e9e9; border-top: 1px dotted #c1c1c1; border-bottom: 1px dotted #c1c1c1; color: #4071b8; text-align: right; } .column4Panel .coloredPanel03 .content .fullLine a { color: #005e82; text-decoration: none; } .column4Panel .coloredPanel03 .content .fullLine a:hover { color: #002e67; text-decoration: underline; } /* FILES LISTS ======================================================================== */ #filesList { width: 400px; padding: 0 0 0 20px; margin: 10px 0; list-style: none; float: left; clear: right; } #filesList a { text-decoration: none; } #filesList li { width: 420px; height: 15px; padding: 2px 0 2px 20px; clear: right; background: url(../images/design/files-icons/unknown.png) no-repeat 0px 0px; } #filesList .multimedia, #filesList .mpg, #filesList .MPG, #filesList .mpeg, #filesList .MPEG, #filesList .avi, #filesList .AVI, #filesList .mov, #filesList .MOV, #filesList .asfx, #filesList .ASFX, #filesList .divx, #filesList .DIVX, #filesList .wmv, #filesList .WMV, #filesList .vob, #filesList .VOB, #filesList .mod, #filesList .MOD, #filesList .m1v, #filesList .M1V, #filesList .m2v, #filesList .M2V { background: url(../images/design/files-icons/multimedia.png) no-repeat 0px 0px; } #filesList .text, #filesList .txt, #filesList .TXT, #filesList .doc, #filesList .DOC, #filesList .docx, #filesList .DOCX, #filesList .xls, #filesList .XLS, #filesList .csv, #filesList .CSV, #filesList .xlsx, #filesList .XLSX, #filesList .xml, #filesList .XML, #filesList .dat, #filesList .DAT, #filesList .info, #filesList .INFO, #filesList .mht, #filesList .MHT, #filesList .hlp, #filesList .HLP { background: url(../images/design/files-icons/text.png) no-repeat 0px 0px; } #filesList .picture, #filesList .bmp, #filesList .BMP, #filesList .jpg, #filesList .JPG, #filesList .jpeg, #filesList .JPEG, #filesList .gif, #filesList .GIF, #filesList .png, #filesList .PNG, #filesList .raw, #filesList .RAW, #filesList .tiff, #filesList .TIFF, #filesList .cdr, #filesList .CDR, #filesList .psd, #filesList .PSD { background: url(../images/design/files-icons/picture.png) no-repeat 0px 0px; } #filesList .pdf, #filesList .PDF { background: url(../images/design/files-icons/pdf.png) no-repeat 0px 0px; } #filesList .archive, #filesList .rar, #filesList .RAR, #filesList .zip, #filesList .ZIP, #filesList .arj, #filesList .ARJ, #filesList .cab, #filesList .CAB { background: url(../images/design/files-icons/archive.png) no-repeat 0px 0px; } #filesList li .name { float: left; } #filesList li .size { float: right; } .warningText { margin: 10px 0 5px 0; padding: 0 10px; font-weight: bold; text-align: justify; } ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline Content-Type: image/gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/forms/right-select.gif Content-Transfer-Encoding: Base64 R0lGODlhDwAVAMQQAP7+/vr6+tve3/z8/PDx8uLl5vb3+O3v7/v6+uHk5drc3vv7 +/39/QByvP////n4+P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAPABUAAAVMoCOOpAidSaquhXFCSizP inAs0KPv/E44veBuIRQyisEjkqdc6prOY2NKbSR1VesVOy1CtUbnDrokI81FgPiB ADoDAMhiTq8PGI5TCAA7 ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=select.css Content-Type: text/css; charset=utf-8; name=select.css Content-Location: http://teplice.naseadresa.cz/0000-Global/styles/select.css Content-Transfer-Encoding: 8bit .disableSelected { padding: 0 0 0 13px; display: block; overflow: hidden; cursor:default; position: relative; left: 0; top: 4px; font-weight: normal; color:#999999; } /****************************************************************************************/ /* */ /* MojeAdresa.cz website - STYLES FOR SELECT REPLACEMENT */ /* */ /* Version: 2009-03-02 14:00 */ /* Last changed by: Michal Pelech */ /* */ /****************************************************************************************/ /****************************************************************************************/ /* gray style for select ****************************************************************/ div.selectReplacement { width: 220px; height: 22px; margin: 0; padding: 0; position: relative; background: url(../images/design/forms/left-select.gif) left -1px no-repeat; } div.selectReplacement strong { padding: 0 0 0 13px; display: block; overflow: hidden; cursor: pointer; position: relative; left: 0; top: 4px; font-weight: normal; color: #5B5B5B; } div.selectReplacement ul { width: auto; height: auto; margin: 0; padding: 0; display: none; overflow-y: auto; overflow-x: hidden; position: absolute; left: 1px; top: 18px; list-style-type: none; line-height: 15px; border: 1px solid #9a9a9a; background: #F9F8F8; } div.selectReplacement ul li { width: auto; height: auto; margin: 0; padding: 0 0 0 13px; display: none; cursor: pointer; background: #f9f8f8; color: #9a9a9a; } div.selectReplacement ul li.selected div.selectReplacement ul#selectOpen, div.selectReplacement ul#selectOpen li, div.selectReplacement ul#selectOpen li.selected { display: block; } div.selectReplacement ul li:hover, div.selectReplacement ul li.hover, div.selectReplacement strong:hover, div.selectReplacement strong.hover { color: #0072bc; } div.selectReplacement ul#selectOpen li.selected { color: #0072bc; } div.selectReplacement span { width: 15px; height: 20px; margin: 0; padding: 0; display: block; cursor: pointer; position: absolute; right: -3px; top: 0; background: url(../images/design/forms/right-select.gif) right -1px no-repeat; } select.replaced { display: none; } /* white style for select ***************************************************************/ .whiteSelect div.selectReplacement { width: 120px; background: url(../images/design/forms/left-select-white.gif) left top no-repeat; } .whiteSelect div.selectReplacement ul li { background: #ffffff; } .whiteSelect div.selectReplacement span { width: 29px; height: 22px; background: url(../images/design/forms/right-select-white.gif) right top no-repeat; } /* floating selects *********************************************************************/ #page .leftSelect { width: 90px; float: left; } #page .rightSelect { width: 90px; margin: 0 25px 0 0; float: right; display: inline; } #page .leftSelect div.selectReplacement, #page .rightSelect div.selectReplacement { width: 90px; } /* newspapers select ********************************************************************/ #page #findNewspapersPanel div.selectReplacement { width: 105px; margin: 28px 0 0 0; float: left; } ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=tree.css Content-Type: text/css; charset=utf-8; name=tree.css Content-Location: http://teplice.naseadresa.cz/0000-Global/styles/tree.css Content-Transfer-Encoding: 8bit /****************************************************************************************/ /* */ /* MojeAdresa.cz website - STYLES FOR STRUCTURE TREE */ /* */ /* Version: 2009-03-02 11:00 */ /* Last changed by: Michal Pelech */ /* */ /****************************************************************************************/ /****************************************************************************************/ .tree, .bottomButtons { padding:16px 12px 20px 18px; background-color:#f5f5f5; font-size:110%; overflow: hidden; width:968px; position:relative; } .tree a, .tree label { color: #005E82; } .tree .red { padding-left:20px; color:#cb2a30; font-weight:bold; } .tree ul { list-style:none; line-height:24px; } .tree ul li { /*width: 96%;*/ height: 1%; margin: 0; padding: 0 0 0 46px; position: relative; left: -1px; background: #f5f5f5 url(../images/design/controls/first-li.png) 0 -4px no-repeat; } .tree ul li ul { height: 1%; margin: 0 0 -5px 0; position: relative; left: 0; list-style:none; } .tree ul li ul li { width: 97%; padding: 3px 0 0 70px; left: -46px; top: -5px; background: #f5f5f5 url(../images/design/controls/tree-li.png) -1px 10px no-repeat; border-left: 1px solid #c1c1c1; } .tree ul li ul li ul { height: 1%; margin: 0 0 -10px 0; position: relative; } .tree ul li ul li.one { background: #f5f5f5 url(../images/design/controls/tree-li-one.png) -1px 10px no-repeat; } .tree ul li ul li.last { padding-bottom:10px; top: -5px; background: #f5f5f5 url(../images/design/controls/tree-li-last.png) 0 -18px no-repeat; border: none; } .tree ul li ul li ul li { width: auto; margin: 0; padding: 3px 0 0 55px; left: -17px; top: -5px; background: #f5f5f5 url(../images/design/controls/tree-li-li.png) 0 -10px no-repeat; border: none; } .tree ul li ul li ul li.one { background: #f5f5f5 url(../images/design/controls/tree-li-one-first.png) left top no-repeat; } .tree ul li ul li ul li.one.first { background: #f5f5f5 url(../images/design/controls/tree-li-one-first.png) -15px 10px no-repeat; } .tree ul li ul li ul li.sub { padding: 3px 0 0 55px; left: -17px; top: -5px; background: #f5f5f5 url(../images/design/controls/sub-sub-li.png) 0 -485px no-repeat; border: none; } .tree ul li ul li ul li.last { background: #f5f5f5 url(../images/design/controls/tree-li-li-one.png) 0 -10px no-repeat; } .tree ul li ul li ul li ul li { width: 95%; left: 0; } .tree ul li ul li ul li ul li.sub { left: 0; } .tree ul li ul li ul li ul { height: 1%; margin: 0; position: relative; left: -16px; background: #f5f5f5; } .tree ul li ul li ul li ul li ul { height: 1%; margin: 0 0 -5px 0; position: relative; } .tree ul li p { padding-bottom:10px; line-height:14px; font-size:90%; } .tree span.check { float:left; display:block; } .tree ul li input { position:relative; left: -4px; top: 4px; } ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=thickbox.css Content-Type: text/css; name=thickbox.css Content-Location: http://teplice.naseadresa.cz/0000-Global/styles/thickbox.css Content-Transfer-Encoding: 8bit /* ----------------------------------------------------------------------------------------------------------------*/ /* ---------->>> global settings needed for thickbox <<<-----------------------------------------------------------*/ /* ----------------------------------------------------------------------------------------------------------------*/ *{padding: 0; margin: 0;} /* ----------------------------------------------------------------------------------------------------------------*/ /* ---------->>> thickbox specific link and font settings <<<------------------------------------------------------*/ /* ----------------------------------------------------------------------------------------------------------------*/ #TB_window { font: 12px Arial, Helvetica, sans-serif; color: #333333; z-index: 99999999 !important; } #TB_secondLine { font: 10px Arial, Helvetica, sans-serif; color:#666666; } #TB_window a:link {color: #666666;} #TB_window a:visited {color: #666666;} #TB_window a:hover {color: #000;} #TB_window a:active {color: #666666;} #TB_window a:focus{color: #666666;} /* ----------------------------------------------------------------------------------------------------------------*/ /* ---------->>> thickbox settings <<<-----------------------------------------------------------------------------*/ /* ----------------------------------------------------------------------------------------------------------------*/ #TB_overlay { position: fixed; z-index: 9999999 !important; top: 0px; left: 0px; height:100%; width:100%; } .TB_overlayMacFFBGHack {background: url(macFFBgHack.png) repeat;} .TB_overlayBG { background-color:#000; filter:alpha(opacity=75); -moz-opacity: 0.75; opacity: 0.75; } * html #TB_overlay { /* ie6 hack */ position: absolute; height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); } #TB_window { position: fixed; background: #ffffff; z-index: 99999999 !important; color:#000000; display:none; border: 4px solid #525252; text-align:left; top:50%; left:50%; } * html #TB_window { /* ie6 hack */ position: absolute; margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px'); } #TB_window img#TB_Image { display:block; margin: 15px 0 0 15px; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; border-top: 1px solid #666; border-left: 1px solid #666; } #TB_caption{ height:25px; padding:7px 30px 10px 25px; float:left; } #TB_closeWindow{ height:25px; padding:11px 25px 10px 0; float:right; } #TB_closeAjaxWindow{ padding:7px 10px 5px 0; margin-bottom:1px; text-align:right; float:right; } #TB_ajaxWindowTitle{ float:left; padding:7px 0 5px 10px; margin-bottom:1px; } #TB_title{ background-color:#e8e8e8; height:27px; } #TB_ajaxContent{ clear:both; padding:2px 15px 15px 15px; overflow:auto; text-align:left; line-height:1.4em; } #TB_ajaxContent.TB_modal{ padding:15px; } #TB_ajaxContent p{ padding:5px 0px 5px 0px; } #TB_load{ position: fixed; display:none; height:13px; width:208px; z-index: 999999999 !important; /* 103 */ top: 50%; left: 50%; margin: -6px 0 0 -104px; /* -height/2 0 0 -width/2 */ } * html #TB_load { /* ie6 hack */ position: absolute; margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px'); } #TB_HideSelect{ z-index:99; position:fixed; top: 0; left: 0; background-color:#fff; border:none; filter:alpha(opacity=0); -moz-opacity: 0; opacity: 0; height:100%; width:100%; } * html #TB_HideSelect { /* ie6 hack */ position: absolute; height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); } #TB_iframeContent{ clear:both; border:none; margin-bottom:-1px; margin-top:1px; _margin-bottom:1px; } ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=alert.css Content-Type: text/css; name=alert.css Content-Location: http://teplice.naseadresa.cz/0000-Global/styles/alert.css Content-Transfer-Encoding: 8bit #successMessage, #noSuccessMessage { padding: 10px 0; background: #009900; color: #ffffff; font-size: 16px; font-weight: bold; text-align: center; line-height: 100%; cursor: pointer; } #noSuccessMessage { background: #F05046; } #lertOverlay { display: inline; position: absolute; top: 0; left: 0; z-index: 90; width: 100%; height: 500px; /* background-image: url(../images/opacity_bg.gif); background-repeat: repeat; */ /* background-color: #000; filter:alpha(opacity=60); -moz-opacity: 0.6; opacity: 0.6;*/ } #lertContainer{ position: absolute; top: 40px; left: 0; width: 100%; z-index: 100; text-align: center; } #lertWindow { border:1px solid #fe9703; width:40%; margin:0 auto; padding:1px; color: inherit; background:#FFF url(/images/alert/grad.gif) top left repeat-x; } #lertWindow a { line-height: normal; } #lertWindow a:hover { border:1px solid #fe9703; } #lertMessage { /* color: #555555; background-color: inherit; */ font-weight:normal; font-size:11px; font-family: Tahoma, Verdana, serif; clear:right; padding-bottom:15px; width:80%; text-align:left; margin: 11px 0 11px 52px; } #lertIcon { float:left; padding:10px; } #lertButtons { clear:both; text-align:right; margin-bottom:8px; } .lertButton { height:20px; background:white; padding:1px 4px; margin: 0px 5px; border:1px solid #fe9703; color:#fe9703; text-decoration:none; font: normal 11px/10px Verdana, Tahoma, serif; } .lertButton:hover { background:#fde6c3; color: #fe9703; border:1px solid #fe9703; } #lertDefaultButton { font-weight:bold; } ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=style_176.css Content-Type: text/css; charset=utf-8; name=style_176.css Content-Location: http://teplice.naseadresa.cz/0000-Global/styles/style_176.css Content-Transfer-Encoding: 8bit /****************************************************************************************/ /* */ /* MojeAdresa.cz website - STYLES FOR SEARCHING */ /* */ /* Version: 2009-05-28 12:30 */ /* Last changed by: Petr Kus */ /* Version: 2009-03-02 11:00 */ /* Last changed by: Filip Zadnik */ /* */ /****************************************************************************************/ /****************************************************************************************/ /* GLOBAL SETTINGS ==================================================================== */ .headerNavigation { margin:0; } .headerNavigation img { position:relative; top:2px; } .headerNavigation .grey { position: relative; top: -2px; color: #c1c1c1; } #findNewspapersPanel { position: absolute; top: -78px; left: 612px; } /* a.userActionDark .userActionMiddle { width:115px; } */ .comments a.action { color:#DC632E; margin:0 10px 0 0; } .discussions { /*width: 100px; float: left;*/ display:inline; position:relative; top:-5px; } .coloredPanel01 .footer .info div.icons .discussions .grey, .coloredPanel33 .footer .info div.icons .discussions .grey, .coloredPanel36 .footer .info div.icons .discussions .grey { top:0; } #ratingFl { /*width: 100px; float: left;*/ display:inline; } .infoGps { /*width: 90px; float: left;*/ display:inline; position:relative; top:-5px; } .infoEmail { /*width: 125px; float: left;*/ display:inline; position:relative; top:-5px; } .infoPrint { /*width: 80px; float: left; position: relative; top: -3px;*/ display:inline; position:relative; top:-5px; } /* PAGE SETTINGS ==================================================================== */ .coloredPanel35, .coloredPanel38 { width:320px; float:left; margin: 0 0 10px 0; } .coloredPanel01, .coloredPanel33, .coloredPanel36 { width: 584px; margin-top: 3px; overflow: hidden; } .coloredPanel33 .coloredPanel35 .content, .coloredPanel36 .coloredPanel38 .content { padding:4px 3px 0px 3px; color:#fff; text-align:center; font-weight:bold; } .coloredPanel01 .content, .coloredPanel33 .content, .coloredPanel36 .content { padding: 0 16px; } .coloredPanel01 .content h2, .coloredPanel33 .content h2, .coloredPanel36 .content h2 { margin-bottom: 14px; padding:0px; color:#002E67; font-size:210%; } .coloredPanel01 .content .text h2, .coloredPanel33 .content .text h2, .coloredPanel36 .content .text h2 { margin-bottom: 14px; padding:0px; color:#002E67; font-size:180%; } .coloredPanel01 .content .text ul, .coloredPanel33 .content .text ul, .coloredPanel36 .content .text ul { margin-left:0; list-style-image:none; list-style-position:outside; list-style-type:none; padding-bottom:0; padding:5px 0 0 0; text-align:left; } .coloredPanel01 .content .text ul li, .coloredPanel33 .content .text ul li, .coloredPanel36 .content .text ul li { padding:1px 0 1px 10px; position:relative; background:transparent url(../images/design/icons/ul-arrow.gif) no-repeat scroll left 5px; } .coloredPanel01 .content .text ol, .coloredPanel33 .content .text ol, .coloredPanel36 .content .text ol { list-style-position:inside; } .coloredPanel01 .content .text ol li, .coloredPanel33 .content .text ol li, .coloredPanel36 .content .text ol li { margin:0; } .coloredPanel13 .content .infoBlock { padding:10px; } .coloredPanel13 .content .leftContent, .coloredPanel01 .content .leftContent, .coloredPanel33 .content .leftContent, .coloredPanel36 .content .leftContent { width:210px; margin:0 20px 14px 0px; float:left; } .coloredPanel13 .content .gray, .coloredPanel01 .content .gray, .coloredPanel33 .content .gray, .coloredPanel36 .content .gray { padding:8px; position:relative; background:#DEDEDE; } .coloredPanel13 .content .ieBug, .coloredPanel01 .content .ieBug, .coloredPanel33 .content .ieBug, .coloredPanel36 .content .ieBug { font-size:0; } .coloredPanel13 .content .leftContent .gray, .coloredPanel01 .content .leftContent .gray, .coloredPanel33 .content .leftContent .gray, .coloredPanel36 .content .leftContent .gray { width:194px; margin-bottom:4px; padding:8px 8px 4px 8px; float:left; } .coloredPanel01 .content .leftContent .gray .fontSmaller, .coloredPanel33 .content .leftContent .gray .fontSmaller, .coloredPanel36 .content .leftContent .gray .fontSmaller { width:195px; position:relative; } .coloredPanel01 .content .leftContent .gray .magnitifier, .coloredPanel33 .content .leftContent .gray .magnitifier, .coloredPanel36 .content .leftContent .gray .magnitifier { width: 195px; /*float: right;*/ display:block; position: relative; left: 0; top: 0; text-align: right; clear: both; } .coloredPanel01 .content .leftContent .gray .magnitifier img, .coloredPanel33 .content .leftContent .gray .magnitifier img, .coloredPanel36 .content .leftContent .gray .magnitifier img { position:absolute; top:-14px; left:-12px; } .coloredPanel01 .content .leftContent .video, .coloredPanel33 .content .leftContent .video, .coloredPanel36 .content .leftContent .video { padding:5px 0; border-bottom:1px dotted #c1c1c1; } .coloredPanel01 .content .leftContent .video .imgLeft, .coloredPanel33 .content .leftContent .video .imgLeft, .coloredPanel36 .content .leftContent .video .imgLeft { margin:0 8px 0 0; float:left; } .coloredPanel01 .content .leftContent .video .description, .coloredPanel33 .content .leftContent .video .description, .coloredPanel36 .content .leftContent .video .description { width:auto; line-height:16px; } .coloredPanel01 .content .leftContent .video .description a, .coloredPanel33 .content .leftContent .video .description a, .coloredPanel36 .content .leftContent .video .description a { float: none; text-decoration: none; font-weight: normal; color: #000000; } .coloredPanel01 .content .leftContent .video .fontSmaller2 img, .coloredPanel33 .content .leftContent .video .fontSmaller2 img, .coloredPanel36 .content .leftContent .video .fontSmaller2 img { float:left; display:inline; } .coloredPanel01 .content .leftContent .video .description a.blue, .coloredPanel33 .content .leftContent .video .description a.blue, .coloredPanel36 .content .leftContent .video .description a.blue { color:#005E82; } .coloredPanel01 .content .leftContent .coloredPanel31 a.userAction .userActionLeft, .coloredPanel33 .content .leftContent .coloredPanel34 a.userAction .userActionLeft, .coloredPanel36 .content .leftContent .coloredPanel37 a.userAction .userActionLeft { margin-left:18px; } .coloredPanel01 .content .leftContent .coloredPanel31, .coloredPanel33 .content .leftContent .coloredPanel34, .coloredPanel36 .content .leftContent .coloredPanel37 { width:210px; margin-top:12px; float:left; position:realtive; font-size:110%; } .coloredPanel01 .content .leftContent .coloredPanel31 .content, .coloredPanel33 .content .leftContent .coloredPanel34 .content, .coloredPanel36 .content .leftContent .coloredPanel37 .content { margin-top:10px; padding:6px 12px 8px 12px; position:realtive; } .coloredPanel01 .content .leftContent .coloredPanel31 .content a:hover, .coloredPanel33 .content .leftContent .coloredPanel34 .content a:hover, .coloredPanel36 .content .leftContent .coloredPanel37 .content a:hover { text-decoration:underline; } .coloredPanel01 .content .leftContent .coloredPanel31 .content .blue, .coloredPanel33 .content .leftContent .coloredPanel34 .content .blue, .coloredPanel36 .content .leftContent .coloredPanel37 .content .blue { color:#005e82; font-weight:bold; } .coloredPanel01 .content .articleHeader, .coloredPanel33 .content .articleHeader, .coloredPanel36 .content .articleHeader { min-height:56px; width:320px; float:left; } .coloredPanel01 .content .articleHeader a, .coloredPanel33 .content .articleHeader a, .coloredPanel36 .content .articleHeader a { color: #9a9a9a; text-decoration:none; } .coloredPanel01 .content .articleHeader .left, .coloredPanel33 .content .articleHeader .left, .coloredPanel36 .content .articleHeader .left { padding-bottom: 10px; float: left; } .coloredPanel01 .content .articleHeader .right, .coloredPanel33 .content .articleHeader .right, .coloredPanel36 .content .articleHeader .right { float: right; text-align: right; } .coloredPanel01 .content .linksContent, .coloredPanel33 .content .linksContent, .coloredPanel36 .content .linksContent { width: 100%; margin-bottom: 8px; background:#f9f7f7; } .coloredPanel01 .content .links, .coloredPanel33 .content .links, .coloredPanel36 .content .links { margin:0px 0 10px 20px; float: left; } .coloredPanel01 .content .links span, .coloredPanel33 .content .links span, .coloredPanel36 .content .links span { margin-left: 5px; color:#0B2B54; } .coloredPanel01 .footer, .coloredPanel33 .footer, .coloredPanel36 .footer { padding: 14px 0px 6px 0; clear: both; } .coloredPanel01 .footer .info, .coloredPanel33 .footer .info, .coloredPanel36 .footer .info { width: 592px; /*height: 24px;*/ background-color: #f9f8f8; border-top: 1px dotted #c1c1c1; border-bottom: 1px dotted #c1c1c1; line-height: 24px; text-align: center; } .coloredPanel33 .footer .info { background-color: #fcf5eb; } .coloredPanel36 .footer .info { background-color: #e8f0f3; } .coloredPanel01 .footer .info a, .coloredPanel33 .footer .info a, .coloredPanel36 .footer .info a { color: #005e82; } .coloredPanel01 .footer .info a.underline, .coloredPanel33 .footer .info a.underline, .coloredPanel36 .footer .info a.underline { text-decoration: none; } .coloredPanel01 .footer .info .icons, .coloredPanel33 .footer .info .icons, .coloredPanel36 .footer .info .icons { padding: 3px 10px 4px 0px; display: inline-block; line-height: 16px; margin:0 auto; min-width:300px; } .coloredPanel01 .footer .info .icons.down, .coloredPanel33 .footer .info .icons.down, .coloredPanel36 .footer .info .icons.down { position:relative; top:0px; } .coloredPanel01 .footer .info .icons img, .coloredPanel33 .footer .info .icons img, .coloredPanel36 .footer .info .icons img { padding: 0 1px 0 2px; position: relative; } .coloredPanel01 .footer .info div.icons img, .coloredPanel33 .footer .info div.icons img, .coloredPanel36 .footer .info div.icons img { padding: 0 1px 0 2px; position: relative; top: 3px; } .coloredPanel01 .footer .info div.icons .infoPrint img, .coloredPanel33 .footer .info div.icons .infoPrint img, .coloredPanel36 .footer .info div.icons .infoPrint img { top: 5px; } .coloredPanel01 .footer .info .grey, .coloredPanel33 .footer .info .grey, .coloredPanel36 .footer .info .grey { color: #9a9a9a; } .coloredPanel01 .footer .info div.icons .grey, .coloredPanel33 .footer .info div.icons .grey, .coloredPanel36 .footer .info div.icons .grey { /*float: left;*/ display:inline; position:relative; top:-5px; } .coloredPanel01 .footer .info div.icons .grey.notop, .coloredPanel33 .footer .info div.icons .grey.notop, .coloredPanel36 .footer .info div.icons .grey.notop { top:0px; } .coloredPanel01 .footer .info div.icons div .grey, .coloredPanel33 .footer .info div.icons div .grey, .coloredPanel36 .footer .info div.icons div .grey { float: none; } .coloredPanel01 .date, .coloredPanel33 .date, .coloredPanel36 .date { padding-left: 20px; padding-top:2px; float: left; display: inline-block; } .coloredPanel01 .footer .info .date, .coloredPanel33 .footer .info .date, .coloredPanel36 .footer .info .date { width:90px; padding-left: 10px; padding-top:2px; float: left; display: inline-block; color: #005e82; } .coloredPanel01 .footer .inforelated, .coloredPanel33 .footer .inforelated, .coloredPanel36 .footer .inforelated { width: 562px; padding:10px 15px; /*height: 24px;*/ background-color: #f9f8f8; position:relative; right:16px; line-height: 18px; text-align: left; } .coloredPanel01 .footer .inforelated h4, .coloredPanel33 .footer .inforelated h4, .coloredPanel36 .footer .inforelated h4 { color:#000; font-weight:normal; text-transform:uppercase; border-bottom: 1px dotted #c1c1c1; } .coloredPanel01 .footer .inforelated ul li, .coloredPanel33 .footer .inforelated ul li, .coloredPanel36 .footer .inforelated ul li { list-style-position:inside; background:transparent url(../images/design/icons/ul-arrow-blue.gif) no-repeat scroll left 5px; margin:0 0 0 15px; } .coloredPanel01 .footer .inforelated ul li a, .coloredPanel33 .footer .inforelated ul li a, .coloredPanel36 .footer .inforelated ul li a { color:#005E82; font-size:100%; } .text { clear:right; } .text ul li { padding: 0px 25px 0px 0; } .text ol li { padding: 0px 25px 0px 0; } .text p { padding: 5px 0; } .text .articleBody p { padding:5px 0; } .text .articleBody h4 { padding:5px 0; font-size:110%; } /* error ==================================================================== */ .star { position: absolute; top: 8px; left: -15px; z-index: 20; } .error { width: 585px; min-height: 32px; margin-bottom: 1px; padding: 17px 0 18px 0; display: block; border-bottom: 1px dotted #c1c1c1; line-height: 18px; color: #005E82; font-size: 12px; } .error p { margin-left:67px; } .error ul li { margin:0 0 0 75px; list-style:disc; list-style-position:inside; } .error .coloredPanel03 { width:38px; height:36px; margin: 0 30px 0px 0px; padding:0; float: left; margin:0 30px 0 0px; position:relative; left:10px; text-align:center; } .error .coloredPanel03 img { position:relative; top:2px; left:1px; } .error .coloredPanel03 .content { line-height:1px; font-size:1px; padding:5px 0 0 0; } /* --------------------------------------- */ .articleFooter { width: 592px; display: inline-block; background-color: #f9f8f8; border-top: 1px dotted #c1c1c1; border-bottom: 1px dotted #c1c1c1; } .articleFooter a { border: none !important; color: #005e82; text-decoration: none; } .articleFooter .info { width: 99%; height: 24px; line-height: 24px; text-align: center; } .articleFooter .info .options { padding-right: 8px; float: right; display: inline; } .articleFooter .info .options img { padding: 0px 6px 0px 12px; position: relative; top: 3px; } .articleFooter .info .options a { text-decoration: underline; } .articleFooter .info .options a:hover { text-decoration: none; } /* --------------------------------------- */ .articleContent { width:auto; font-size: 110%; } .articleContent .text h4 { margin:5px 0; } .articleContent h5 { font-weight: bold; font-size: 12px; } .articleContent table { width: 552px; padding-left: 24px; position: relative; border:15 px solid green; border-bottom: 1px dotted #c1c1c1; border-collapse: collapse; line-height: 32px; font-size: 12px; } .articleContent table tr { border-top: 1px dotted #c1c1c1; } .articleContent table tr.blue { background-color: #f6fcfe; } .articleContent table tr.brown { background-color: #fbf9f9; } .articleContent table tr.red { background-color: #fef3f3; } .articleContent table th.space { width: 24px; } /* --------------------------------------- */ .coloredPanel02 { width: 592px; padding-top: 19px; text-align: center; } .coloredPanel02 .footer { margin-top: 4px; padding: 6px 24px; background-color: #fdfdfd; font-size: 10px; text-align: left; } /* --------------------------------------- */ .comments h4 { width: 580px; padding: 30px 0 12px 12px; border-bottom: 1px solid #0b2b54; color: #0b2b54; font-size: 12px; font-weight: bold; } .comments a { color: #0b2b54; } .comments .comment { width: 570px; margin: 0 0 1px 0; padding: 10px 9px 15px 13px; background-color: #f4f3f3; } .comments .comment .left { padding-left: 16px; } .comments .comment .photo { height: auto; padding: 4px; float: left; display: block; background: #fff; border: 1px solid #b5bbbe; line-height: 36px; font-size:0; } .comments .comment .commentInfo { padding: 12px 0 0 8px; float: left; color: #dc632e; } .comments .comment .commentInfo .date { color: #b5bbbe; } .comments .comment .commentInfo .blue { color:#0B2B54; } .comments .comment .right { float: right; position: relative; top: 22px; } .comments .comment .commentBlock { width: 569px; } .comments .comment .top { height: 16px; display: block; clear: both; overflow: hidden; background: #fff url(../images/design/content-blocks/comment-top-middle.png) repeat-x bottom left; } .comments .comment .top .left { width: 11px; height: 16px; padding: 0; float: left; background: #fff url(../images/design/content-blocks/comment-top-left.png) no-repeat left top; } .comments .comment .top .arrow { overflow: hidden; background: url(../images/design/content-blocks/comment-top-arrow.png) no-repeat 20px 0; } .comments .comment .top .right { width: 10px; height: 16px; float: right; position: static; background: #fff url(../images/design/content-blocks/comment-top-right.png) no-repeat left top; } .comments .comment .bottom { height: 9px; display: block; overflow: hidden; background: #fff; } .comments .comment .bottom .left { width: 9px; height: 9px; padding: 0; float: left; background: #fff url(../images/design/content-blocks/comment-bottom-left.png) no-repeat left top; } .comments .comment .bottom .right { width: 9px; height: 9px; float: right; position: static; background: #fff url(../images/design/content-blocks/comment-bottom-right.png) no-repeat left top; } .comments .comment .content { padding: 2px 14px; display: block; background: #fff url(../images/design/content-blocks/comment-bcg.png) repeat-y left top; font-size: 11px; } .comments .comment .content h3 { color: #005e82; font-size: 12px; } .comments h4 a { text-decoration: none; } .comments h4 a:hover { text-decoration: none; } .comments h4 a.orange { font-weight:normal; color:#DC632E; text-decoration: underline; } /* --------------------------------------- */ .newComment { width: 546px; margin: 1px 0 1px 0; padding: 26px 22px 4px 24px; background-color: #eff8fd; } .newComment h3 { padding-bottom: 8px; font-size: 12px; } .newComment table { width: 100%; padding: 0; border-collapse: collapse; font-size: 12px; text-align: left; } .newComment table th { width: 98px; height: 30px; padding: 0; font-weight: normal; } .newComment .textareaBlueBg2 .content { padding:0 10px; } .newComment .textareaBlueBg2 { width:448px; } .newComment .textareaBlueBg2 textarea { width:437px; height:70px; padding:0; } .newComment .textareaBlueBg2 textarea#savefaq_Question { height:110px; } .newComment #save2session input { color: #dc632e !important; cursor: pointer; text-decoration: underline; } .newComment #save2session input:hover { text-decoration: none; } #addComment .newComment table td .grey { color:#767676; line-height:25px; } /* --------------------------------------- */ .buttons { padding: 13px 14px 30px 0; text-align: right; } .button { padding-bottom: 8px; float: right; position: relative; top: 4px; } #fgallery { width: 290px; float: left; } .orange { color: #dc632e; font-size:90%; } .inputBlueBg#title { width: 450px; overflow:visible; } .inputBlueBg#title input { width: 434px; } .column4Panel .dottedLine { width: 592px; height: 1px; margin-bottom: 1px; display: block; overflow: hidden; border-bottom: 1px dotted #c1c1c1; font-size: 0; } #margined { margin-top: 20px; margin-bottom: 1px; } #topMargin { margin-top: 8px; } /* --------------------------------------- */ .coloredPanel31 a.userAction { margin:4px 12px 0 0; color:#0b2b54; font-size:100%; } .positionRelative { position:relative; } .newsImg { margin:30px 0 0 40px; } .column4Panel .simpleInfoPanel { width:100%; } .column4Panel .simpleInfoPanel .rightEqual { width:54%; } .column4Panel .simpleInfoPanel .leftEqual { width:240px; } .itemImg { width:240px; } .itemImg .underImg { width:100%; height:28px; background:#dddddd url(../images/design/forms/underImage.gif) top left repeat-x; } .itemImg a { width:auto; height:17px; margin:0 0 0 5px; padding:6px 0 0 25px; display:block; color:#005e82; font-weight:bold; } .itemImg a:hover { text-decoration: underline; } .itemImg a.tv { background:url(../images/design/icons/tv.png) 0 8px no-repeat; } .itemImg a.camera { background:url(../images/design/icons/camera.png) 0 8px no-repeat; } .fontSmaller { line-height:15px; color:#9A9A9A; font-family:Tahoma,Arial,Verdana; font-weight:normal; } .relative { position:relative; } .column4Panel .dottedLine { margin:1px 0 0; clear:both; } .fontSmaller2 { line-height:16px; color:black; font-family:Tahoma,Arial,Verdana; font-weight:normal; font-size:90%; } .iconRelative { margin-right:5px; } .rightLink { text-align:right; } .leftContent .video a { font-weight:bold; } .leftContent a { color:#005e82; text-decoration:none; } .leftContent a:hover { text-decoration:underline; } .leftContent { font-size:90%; } .topMargin { margin-top:10px; } .headerLeft { width:180px; float:left; } .headerRight { float:right; text-align:right; } /* .leftContent .gray .fontSmaller { float:left; } */ .comments { position:relative; } .comments h4 a.userAction { float:right; font-size:93%; font-weight:normal; left:412px; position:absolute; top:22px; } caption { padding:0 10px; text-align:left; font-weight:bold; background:#DEDEDE; } .text td { padding:0 20px; background:#FBF9F9; border-top: 1px dotted #c1c1c1; } .text th { background:#DEDEDE; border-top: 1px dotted #c1c1c1; } #talkPanel.coloredPanel01 { width:100%; padding:4px 0 0 0; } #talkPanel.coloredPanel01 .content { height: 30px; padding: 20px 0 10px 0; color:#005e82; font-weight: bold; font-size: 110%; text-align: center; } /****************************************************************************************/ .coloredPanel01#post { width:100%; } .coloredPanel01#post a.message { height:30px; padding:22px 0 0 230px; display:block; background:url(../images/design/icons/online.png) no-repeat 170px 11px; color:#46a505; font-weight:bold; font-size:110%; } .coloredPanel01#post a.message:hover { text-decoration:underline; } .text ol li { margin-left: 248px; } /* ADD USER PHOTO BOX *********************************************/ #addPhotoBox .coloredPanel03 .content { padding:10px 20px; font-size:110%; } #addPhotoBox .coloredPanel03 .content th { width:160px; text-align:left; font-weight:normal; } #addPhotoBox .coloredPanel03 .content th.warningText { width:530px; } #addPhotoBox .coloredPanel03 .content td { width:370px; } #addPhotoBox .coloredPanel03 .content #smallerSpace a { display:inline; float:left; position:relative; top:10px; } #addPhotoBox .coloredPanel03 .content #smallerSpace .greyInput a { display:inline-block; position:relative; top:0px; left:16px; } #addPhotoBox .coloredPanel03 .content .selectReplacement { width:90px; position:relative; } #addPhotoBox .coloredPanel03 .content .greyInput.save { background-color: #F9F7F7; width:120px; display:inline-block; } #addPhotoBox .coloredPanel03 .content .relativePosition, #addPhotoBox .coloredPanel03 .content .inputLighterGreyBg, #addPhotoBox .coloredPanel03 .content .file { position:relative; } #addPhotoBox .coloredPanel03 .content .uploadBox { padding-bottom:14px; } #addPhotoBox .coloredPanel03 .content .inputLighterGreyBg { width:200px; } #addPhotoBox .coloredPanel03 .content h3 { font-size:12px; padding-bottom:8px; } /* ADD USER VIDEO BOX *********************************************/ #addVideoBox .coloredPanel03 .content { padding:10px 20px; font-size:110%; } #addVideoBox .coloredPanel03 .content th { width:150px; text-align:left; font-weight:normal; } #addVideoBox .coloredPanel03 .content .selectReplacement { width:90px; } #addVideoBox .coloredPanel03 .content .greyInput.save { background-color: #F9F7F7; width:100px; display:inline-block; } #addVideoBox .coloredPanel03 .content .relativePosition, #addVideoBox .coloredPanel03 .content .inputLighterGreyBg, #addVideoBox .coloredPanel03 .content .file { position:relative; } #addVideoBox .coloredPanel03 .content h3 { font-size:12px; padding-bottom:8px; } /* LOGIN SETTINGS ==================================================================== */ .nameLinks { display:inline-block; line-height:1px; height:1px; font-size:1px; float:left; } #user_login_action { width: 594px; height: 270px; position: relative; background: #ffffff; } #user_login_action .buttonWhiteBg { margin: 10px 15px 0 15px; } #user_login_action .star { position: absolute; top: 6px; left: -15px; z-index: 20; } #user_login_action .error { width: 585px; min-height: 32px; margin-bottom: 1px; padding: 2px 0 4px 0; display: block; border-bottom: 1px dotted #c1c1c1; line-height: 18px; color: #005E82; font-size: 12px; } #user_login_action .error ul li { margin:0 0 0 75px; list-style:disc; list-style-position:inside; } #user_login_action .error .coloredPanel03 { width:38px; height:36px; margin: 0 30px 0px 0px; padding:0; float: left; margin:0 30px 0 0px; position:relative; left:10px; top: 0; text-align:center; } #user_login_action .error p.showError { float: left; } #user_login_action .error .coloredPanel03 img { position:relative; top:2px; left:1px; } #user_login_action .error .coloredPanel03 .content { line-height:1px; font-size:1px; } #user_login_action .floatLeft { margin: 0 20px 10px 10px; float: left; } #user_login_action .coloredPanel03 { width: 594px; height: 180px; margin: -90px 0 0 0; position: absolute; left: 0; top: 50%; } #user_login_action .coloredPanel03 .content { padding: 8px 10px 4px 8px; font-size: 11px; } #user_login_action .coloredPanel03 .content a { color: #ff9c00; font-size: 11px; } #user_login_action .coloredPanel03 .content a#blue { color: #0072bc; font-size: 11px; } #user_login_action .coloredPanel03 .content p { color: #9b9b9b; padding: 0 0 14px 20px; } #user_login_action .coloredPanel03 .content center input { padding: 0 14px; position: relative; top: 6px; } #user_login_action .coloredPanel03 .content table { margin: 4px 0 0px 62px; position:relative; border-collapse: collapse; font-size: 11px; text-align: left; } #user_login_action .coloredPanel03 .content table th { width: 180px; padding: 8px 0 8px 0; font-weight: normal; } #user_login_action .coloredPanel03 .content table td select { width: 76px; } #user_login_action .coloredPanel03 .content table td .grey { position: relative; top: 2px; color: #9b9b9b; font-size: 10px; font-family: "Tahoma", "Arial", "Verdana"; font-family: Tahoma, Arial, Verdana; } #user_login_action .coloredPanel03 .content table td input#checkbox { width: auto; margin: 0 5px 0 0; } #user_login_action .registrationLink { position: absolute; left: 370px; bottom: 103px; } #user_login_action .registrationLink form input { background: transparent; border: none; color: #ff9c00; } .extendedInfoPanel .extendedDiscussion .contributions a.allInfoLink { font-weight:normal; color:#DC632E; font-size:95%; text-decoration:underline; } .extendedInfoPanel .extendedDiscussion .contributions a.allInfoLink:hover { text-decoration:none; } /* ERROR ==================================================================== */ #page #upperContent .extendedInfoPanel .extendedDiscussion .error { width: 100%; min-height: 32px; padding: 17px 0 18px; margin-bottom: 1px; display: block; border-bottom: 1px dotted #C1C1C1; line-height: 18px; color: #0b2b54; font-size: 110%; } #page #upperContent .extendedInfoPanel .extendedDiscussion .error .coloredPanel03 { width:38px; height:36px; margin: 0 30px 0px 0px; padding:0; float: left; display:block; position:relative; left:10px; text-align:center; } #page #upperContent .extendedInfoPanel .extendedDiscussion .error .coloredPanel03 img { position:relative; top:2px; left:1px; } #page #upperContent .extendedInfoPanel .extendedDiscussion .error .coloredPanel03 .content { padding:8px 10px 4px 8px; line-height:1px; font-size:1px; } .star { position: absolute; top: 9px; left: -12px; z-index: 20; } .relativePosition { position:relative; } .linkToRegistration { background:transparent; border:none; color:#ff9c00; cursor:pointer; } /************************************** * __TABULKY VYSLEDKU A VYPISU **************************************/ table.sportLeagueTable { border: none; margin-top: 1em; margin-bottom: .5em; width: 100%; } table.sportLeagueTable thead tr { background: #e8e8e6; } table.sportLeagueTable thead th { color: #172a54; font-weight: bold; padding: 7px; padding-left: 12px; text-align: center; } table.sportLeagueTable thead th.smallCell { width: 15%; } table.sportLeagueTable tr { background: #f8f8f7; } table.sportLeagueTable tr.odd { background: #fff; } table.sportLeagueTable td { padding: 3px; padding-left: 12px; text-align: center; } table.sportLeagueTable td.noCenter { text-align: left; } table.sportLeagueTable th.noCenter { text-align: left; } table.sportLeagueTable td.width25 { width: 25% } table.sportLeagueTable td.width35 { width: 35%; } table.sportLeagueTable td.width60, table.sportLeagueTable th.width60 { width: 60%; } table.sportLeagueTable a.specialLink { color: #000; } ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=reklama-popisek.gif Content-Type: image/gif; name=reklama-popisek.gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/reklama-popisek.gif Content-Transfer-Encoding: Base64 R0lGODlhLgAKAIABAImJif///yH5BAEAAAEALAAAAAAuAAoAAAI/jI+py+0OUny0 mnmw3UsHzwGiiEQT+V3qd5IoK73XqZpZmeaaB2Kj+WrZdDOQwocj0mgpJqTkugmJ Ohnn+igAADs= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=P1010511_210x160.jpg Content-Type: image/jpeg; name=P1010511_210x160.jpg Content-Location: http://img.naseadresa.cz/0000-Documents//images/photos/foto-beseda/P1010511_210x160.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQH/wAARCACdANIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6 Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx 8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDw k3NykFtCZUCmOyOxIYBuU2luAZGaJ2Ynn52JJOWJJya5aLUTZeB/j6WFuYlt/DKs hghwGxE8QVxCCokkUCUkdHJYHaK6+5FsDaLDLEWEVkNnkSqCwtbUDPmOy4BIxjAA JxnIx55MD/wr79oi4YxhEu/BcZ8wFo5CYmZomUZIQyMjLjBZkEe4BiK/nuKTw+PT 5qjdD2U+aUbpOVKDfNKVm1NRTnCpF09ZK0o8r/dMul7PG0Ywi1Je83Ky5VCtRUXJ vkknGTSjZJ81rWvp8KeMLky2hxHFh7iE4EVsQQZN6ru2bjkkHJGQccAnjrfAUpbV vD/l/Z1cTohJt4uFe5iXJGzDY+YY75ORg4Hn3iSR5rYIqjidWIUgk4PUHbkrjkg4 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 5YqLVoxslK1kZV38YviVrSEDRbANuIL3F/q9x8h+YjzZZiD9043bvmIIweT6T4/v 5734T/C551xcy3fiKe7EeXUTf6MrLG55wvTa2ScnJYDFRv4etktZx9nEahmZRHxh hH8u0kkblPJGRkbiRyKzPGs3l/Df4awbm/1viSUF0KszG5t1ZchQrbSBgqFyGwVG AD42Pre0w65pJJVZc75ZS9rzYKvKFK85OpOUZ01ONTlklJTjKXvtP3MipTjj1KdS 3NSj7kIQUlLlc4OKhF8ytGfM27RV4yTvePjumvGb+4IkMYViMP1fAQZB5JyfbpwD xXxr8VNOkXxRrNwMskmoSupI+XacJgr1GAuWBJHB5619eWMm/UZAApfkrljvPz55 Xd8wIwv3eNx5BOT8j/EO9juPEutQpMrNFqd3EV6BdkjKUKnJUcHjBG3kHHWuDlCG PzCFoxbwdCXKocvs5e0pXUpJyerWkG7J3avc6uNVfL8NHmWuIUnGSipzkoTTavad 4pu8Wk25Xeq5XoeGdT/sCW2l2C48420HlxqMhprY28ZDFdoVHmLsGVt20qOOT5Lr H+jRagmNvm3MPmrtB8wRyhlVhhmwpw+VZQzAAkjBr0lNXbSbeO6eK1uZItqolzGs yIXtzEsiqcgSQhi8LjlJAjj5lXHEX2pR3WnXlu9mJ3vbiBhcbS1zbrasr4t5BxGJ i2y4DA71RAAME197hGp1KtSMLc8IRUlO93SnNtShFJJXqOSfvc8pS15Yxk/zTFXU adNuT5ZU3Z3SXupKbk+Vu+/2r/y8zaL8PiTR4LaGMTkbExhLVlKttAx94AbjwMcD tkGq1z4v0xBkrcvwfu26EuMHAwXXAI5znJ4yO1ceLKeRT5VlesoBCkugIKkc/dG4 HB9CPwqnJZ3SHa1pJk8MryKCuRjA/HuPTsK2jgqCu3z6tXXtOVXa01pqK1absnut rMJY+ryKMYwTUYx5lDTRKNk27a8ttXra6200tR8V6ZeMiw21yhiJ3B40RTg8HCyN 15znk4PHcYM+uWl7iERTod6nexAXAJyFHLYJOMZzkc+z30kowlFiP3h+YyXBPUcf LuAAHXjkd6nt9Pi3K32fThk5DvPnHzD1cBiCMgZ+90PXOtOhSp8vLFq3LbmqOTV9 t27py1S2uk+5zTxdWrFwk0k/iSgtEuWKdknr2au36WHlJkJXyZF2krtdHDrjjaww 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 2k17Pb+BXgZFnlCGN72CdJbdx5jb5XS3gjYFikjAbq/OT4ufsZfGv4caFpPiqCGw 8S6B4jmuU0W0sLoReLLgW4MxVfDU2Ly/ZbbbO0mmtdqYisqoI2Vj4OOyjOaDdZYi VXDNtOpQc+WFtbOEo05w5Yq8uVThG75pvSRph80yrEv2ChGGI0Xsaq5ZuTStZtyi 3JPRO0o/FyQacV80fDf4PXvxI8ceHfCHhuze91LVdTtI33zi5S0shcwi8vZoLmbZ PBaw7pZoSknmIpV0MZdl/Xvxf+x3+zz4g8qy1fwtYaR4mg08DVNS0jTbbwnBqGo2 qLFJc2OhaHejSPKvZk3mCxltHieXakjhN1fmb+y58RvCnwx+LUk3j/xN4w8DX81t LoVjdaJpv2s2Oo30ywm28R6LMst7cW0rMI4rePTbmSK7MdwFR40z+8Ef7IH7Qnjf 4cWvij4ZeJPCXjuXW4r27TwZ4qnOmeOdY0i2kijk1u10Ix6NdWzLfxTK5tYIr6CS Pc8aJLHu+q4dy9YihKnOlLG1J8rqJ3qypwi0+fli5Siuri0nPlajNNuJ5OaYuNHE RUa0MJCNJKk01GdSrNuVROpLmhONOMKd4uMVzNuUlG7fytafsqfsywWttBP8Ofg6 08NvDFM17qvxgS8aWONUkN2kUs0a3JcEzrHNKiy7wksigOSvRm+FH7WFizWTfBrV C1mTasf7f8Vpk258onZJpMki5KfdeSR16M7sCxK97+zaS0WGw6Wlk8LiLpe5o9N+ /m/U4PreYOz+tQ1s9Y0r/Y7Vrfdpp6ny/wCC7pPOt42dmYxQLxlhkxQ4JYjlRuHL HIIKnLcBniHUo7Twf4+WaceTP4ltXHH3fs8NuxJ5xg9ACTtYnBxjGZF4n+HHh9hJ Fr96WWOAKsbRzBmESIwysJYrzxs4K4xzxXi/xd+JfhW38B+JdP03W5ptS17WLSa0 We2eNY4HMaXMO8xoqsscbOHbG7zCgA+Svwyhho4mdLDUqlKdXE4zBxuppwhThioT rVKcuVyXKouTvCLaSs0ovm/XsLUxOWVfr+Koyo0aeHliWqvLzSlBwnGjD95N0vaO KjGaSak3FN86Z8keNteGta/cXILG3jC29ou7OYIiwMmcnaZZN7nrjIXtmuQWTIYg MVIAbHIyAMANx6jIxhvTioJpHlkV1ZX8wcuORnP97OD7kjHU4OMh/Cqd2Bg9u+Qc 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 FHkGWeGwtdwIgG34b8BftvaD4jtIJ9evGttShhe4vPOmKokUKl7i4klDRp5aAh5n b5Vz8zBea8i8efHX4WfGXx1Ff+FnvdVgvLVLTVLx9Au7jTtQOivBHqN1pdwyFtVT SLK5in1GOziuJjZIGtY7ll8s/fcbcYYLOchq4PKaNTnrYjD1qilUhz1KMZSlKmqV OM1BynGErT933G23ytrxuEOFcVkWeUsbmtfDckcLiKVKpCMqnsa1SdH95K8Lpype 0opKnNL2jVoJJn6h+G/Fnhq91UaZ4V+JOi2uqypE/wBmtvEWjzSrFeFliupLETzx XkLSD5GW3dCyheCCa9W1PwDrWva3EbldWk1qCxm1Ua94UhlnivDDAbq4vLqO1cS2 zvD5k92kAkt8sQsRG2Mfif4i+EHwV1++j1iHUPBmtvamNrfU9CttZt7i2khYZtfL hGiXmnzwzKyuLiCNtyAooyWHSaD8bvHPwY/tCy8JeOfFum2uoWUmnubfUtX1d4LS e2NvI1i+o6pfy6dcLESsUtuySRZDLtYZH4pQrQr1afNTqRp2ftlJSjVThZtJTpRU atO7T1jOF3JLS0v2l1MLKCr06866aap1IUa0FOMrQu5uHLBxbjonKEulpav9NvEU SXenarKNB0/VRpej66j+M9Ce2is7i3j0+6s5YdTsVaN1vo7nbEzQL8zl/OtoXjZq /In4VzL4S/Z6XW0KyXGo+Pda0ufzLaW8jZJdEk0xkS0Uq4ltrWRXjuBmGCcxSSFl jCV2vwTsf+EaMreCPE2v3UfjW28Q3N14duvFOo6w813dR3R1G71rR5b6a5tb64UT 3VvI1qySFvt0shZRXaaL4H0vwv8ADC38LXEWuaTbtr2q6uviBYXvDdSajFPY3Flb ziOCOJ7FoonunmYfK4BjaUAL72T1YVKdanCNb34141akqVWcIzqTw1OnzSpwd2mk qtnK75bSktT47PFhlj6Nak/bSozwaUZyim4whmEqzjCU5N87lCKSgoSXtrUuWEr/ ANDfi1pNd/Zs+AWjy+Bzp/8Awh/wfZtSvNS0d7HUtRg1aDUNVuZNSvLCQxw28Utv bXEP2e82iO4+RoXZ0X+MX9urwvpi/HnWbmC20d21DTYbmV9GvZdRtSw1TWIFzPcX N3IZESFYpUaQbTHxCgILf2o/H7xTH4S/Zu/Z3vND8W6rBZeN/gXNYatcQXI1K5f+ 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 /lXY/9k= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=PA074913_100x75.jpg Content-Type: image/jpeg; name=PA074913_100x75.jpg Content-Location: http://img.naseadresa.cz/0000-Documents//images/photos/091007-TP-kosmonaut/PA074913_100x75.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQH/wAARCABLAGQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6 Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx 8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD8 qfDcyW/2WLy4irQ2i58iFiAIISCWaP5jwMltzcnJ5r5i1O8ZNW1mJVj2yXd6MGCI 4P2yQ4AWMgE5OcHAU+2a9/0aVg1tkkfurXaR3IhQ87uBx8uO2ASMAV8+Xlq0es6q zbyWmv5EjJBwXuZ97cnncGzuHQcrjGK/mdKKnNu17R3SvK0rf0v6f9BYNN/DorQ6 tJXv06rTT5bo7nwdckzxW58nJY7g0MOcnAGQYxjufVmz6YP1v4V/5D8wX7OJP+Ee uX8pre35T+xLty23yiSDtZCwPJAGBxj5E8EwA3Zk28kusgJ3kbCoXDdcrnGQcg5J OeK+zPCUIbxLcO0aZHhq+KyAHJI8O3xTBzkbSBj+HOeMCvk82cfrcHbVJXsl8fPT 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 7rw2Injvm1zxVq9/pemaFounWTFLXTYrq9jCXmYhLBFczX8lzdRWyon8sfx1/bV8 YfGT9piz/aE03wb4Q+GviOz0vTtLfR/CMl1MPEGkwQ3djeyeKru52yanqWq2E93p d7dG2gjhtYrSKGMmzt3FcdeCL4TwGMy2rmlWpnmKxWaxy2MZ0J4Stw/CpQ/savWo yg6+Hq5hCGMo4mcqvJSfNGlT5sO6lfz/AAI+lO/Fags0yfJKWB4RpZZwzTzudSlj Fj6PG1WhXrcYZXhsaq0MHjMHk1SWUrC0oYV4ipSqe0xVflxqw2G/Yv49Q3vws/YL t/jdo3iTUoNc1vStc8MRwzy6cLLSJNJ8RaXYeHIdIjNnDczXkmo+JNav1We9uXtr lvPt02K8Y+Uf+CP3/BOjXv8AgoH8fdP8YeO7LVb39n/4b+ILSX4o69e38k02r+IL m1lv9I8Hae989xK15ekxavrM4je3ttOijSYyS6lAjcH+1r+1f4T+LX7Cfwe+Dfhb T9UtNU0z4mya/qtzd3GmG01CG8F9eyaNDbpN/aaXWjaibQX0rWywkRJcK5ikiLe3 f8Eef+Cr3gv/AIJm6n8RvBvxn8PeINe+CPxS/srxJqF54L06PWPGHhbx74a028sd JvdM0O7vLG31rSvElrcJpGrWz39rNZS2ul6okksNtd278vhhgcJh8FTr4xNypYXL cDjHiXO+Gr5flWEw1bAylVTnGlh8XHEqVKLdKMpTULU2j7fj6vmE8VmEcG9cTjcw xuB9g4uOIweOzKviKONpQpy9n7XEYWdKUajUas1GnKonOKP6A/it8C/hnY/Hb4of ss/D340zaZ8RP2d/g1oHxu0TQte0Aalo+seHvFsupaPrOheIINHe6v8AUPEdtpGm 6O1v/YlhC8Fv4gtYxayHUpVh/nl/as/a6034L+O/hxa/DXSvgD4ksNd8HeKPH+q3 Fpb+IL3SLjWre/vfDun+E0vdOs5Nc07xHEmkyXenWwntvDtve6vqejayy3OnvPHl +Efjb8eP28/2+vjx+0J4E8P/ABB0zxZ440bxPNpek+CEvL7UfA3w2sdAn0zwnp2u f2Vd2a3UNtZaNoFpq80c0kb6veX9/Y29xNHbRV8U/tcfDnTPDXxW8DaNe2z+Gl1L 4b+BPEmuXUmmkLY3fjO81XX9V1M6dYLHLePYNqcolSBI57q4tJo4VV2QV9quBchn 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 nKps5U8Hh4czVtXNV4u/K7L3NG3ZX1fdGnjJwvTrRgrXvKpUne/L9lwskr6Lmb/v M+edQtfDjtsvdW1TJ3Ai68QaXAV2hyCi28Mk65MbKR5q/N8iksybuLu08PzzLBZx 3Go8kbm1XWrxgV3ALmzbPzEZV3KjDLldpxX1zF4a8PW9q7W+h6VAdzcw2FtHnYCV yEjUHaQCMg4IB6gV454omkga48lhHsZCuxUXGTtPReQRxg5Htmvo8qxMsY39Wo8k IpW9piFFJt2TUIYWb3/6faWW/TyMdUqYeyrVeaUutOjG9vc+1OqrWb/k2073+cNU tIEuHS18IxByxHmTabJIZRuO192oz8kqfXLc5GOTzt5YazaEGDQtKs85ZZJYdOiI BBJwYY7kqOUIUsON2RgDPq9xJJPqMMcsjuj7yylmAJ+Y84IOM8kZwTjjgVq6npli vh3xBcCAGaK309I5GeV2RWvVB27nIBK/KWxuK/KTjivraNadOipud5L3VHlq2cly 68/1mLUf+3H00018KdZ1a3slGSvyuU+emnyya+yqDbd7Ozna66nhSJ4nh3KdTsLf LBhFHcSFVDIp48u2VR9AOPeitqaJDIcg/KFUfMwwAowOCPzPNFSsdiGk3KF3Zv8A dp9urbfR7t9C/Y0VZNTe2vMlo+V7JJLS+1lrp5f/2Q== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=image-icon.gif Content-Type: image/gif; name=image-icon.gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/image-icon.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQAJEAAPHx8ePj4wsrVPLy8iH5BAAAAAAALAAAAAAQABAAAAIvnI+p u+IPkwC0Vocm3CKDeUWHFgABl50f140ni7lwbAjBjeP0MD/ICwswhsSisQAAOw== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=a-small.gif Content-Type: image/gif; name=a-small.gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/a-small.gif Content-Transfer-Encoding: Base64 R0lGODlhCAAKAJECAMfHxxdSkf///wAAACH5BAEAAAIALAAAAAAIAAoAAAIWlAGm wbkQnInxTcdyaoiJ+oAXoghIAQA7 ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=arrow-left.gif Content-Type: image/gif; name=arrow-left.gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/arrow-left.gif Content-Transfer-Encoding: Base64 R0lGODlhBQAIAJEDAMfHx8bGxhdSkf///yH5BAEAAAMALAAAAAAFAAgAAAIOnAUn MeLgHIupLdMYDgUAOw== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=arrow-right.gif Content-Type: image/gif; name=arrow-right.gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/arrow-right.gif Content-Transfer-Encoding: Base64 R0lGODlhBQAIAJEDAMfHx8bGxhdSkf///yH5BAEAAAMALAAAAAAFAAgAAAINFIZi qacaXhgwTXRRAQA7 ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=a-big.gif Content-Type: image/gif; name=a-big.gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/a-big.gif Content-Transfer-Encoding: Base64 R0lGODlhDAANAJECAMbGxhdSkf///wAAACH5BAEAAAIALAAAAAAMAA0AAAIjlB0A xxK+GoLSvRRZQvls2AWfGIrmZykKyJUR6i2kNK+NWgAAOw== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=bubble.gif Content-Type: image/gif; name=bubble.gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/bubble.gif Content-Transfer-Encoding: Base64 R0lGODlhDwALAJEDAMLCwgsrVP///////yH5BAEAAAMALAAAAAAPAAsAAAIl3IKp YCcPY2AhWjjrtXlz6j0TcyiIgJAGwLaJ2sRGKtczbDdqAQA7 ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=map.gif Content-Type: image/gif; name=map.gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/map.gif Content-Transfer-Encoding: Base64 R0lGODlhEAANALMNAKmsr7a3t1JxmKaprbCxs5ecolRUVFRzmgsrVBIyWykoKLGy tLm5uf///wAAAAAAACH5BAEAAA0ALAAAAAAQAA0AAARKsKXZqr0VpXMS/trmfRcS jqRlIkK1KISSNsLBLEshpwzH3AvD63L72X4/nMGiWCCfyGFlAIVKG8KoE7mzGAwA gEGhCAS6GDLzEgEAOw== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=print.gif Content-Type: image/gif; name=print.gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/print.gif Content-Transfer-Encoding: Base64 R0lGODlhEwAPAKIEAMfHx8bGxv///xdSkf///wAAAAAAAAAAACH5BAEAAAQALAAA AAATAA8AAAM/SDrcziouQasdQc7XBNbEYI1epokcU4IiWX2nl65Rag9A6O5ly4+4 2y3Q8rmKgOKvGCAKOQpAMyAFWK1TaiYBADs= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=google.png Content-Type: image/png; name=google.png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/google.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhQTFRFAY86/Pv88bMRlbXUBns59wEB HY5M6dOe6LRPi66mA1e7XIzE2+Xs9OzXvNXX2AcDA2LH1qsyLXG4piYQLVSW6Ovm 46oKTHesztvoxTQx301L+fPs7PL4+sIHC0udIFqk7cV8SKds4dPP6/Lrqcq36+79 0eHe////iKfPnAAAAKZJREFUeNpUyu0SgiAUhOFzhBQJw49EzRSzcu//DkNsmmn/ vc8stdz7WWAc7GlfS4xOl6XBGvtkCVyXpRbg2x+cgQg2AITegQfbNDaAwb3W+oJc UphsyAvchfn2Pj93OXD5NXk/zwZt+oPrtTv3wPNxpCTxRpFlI/grhKJyiasKbPEg iatkmianwOkBhUv2VcypDB0eKsqCl4yjdVyUUhlvR68fAQYAmFkNMrlBbpAAAAAA SUVORK5CYII= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=facebook.png Content-Type: image/png; name=facebook.png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/facebook.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABVQTFRFYHirYXmsRWKe6+70bYS0//// O1mYGN64UQAAADxJREFUeNpiYGRDAowMbCgAzmVgZmVF4gJ5yFwQBxeXFQzgXGag VmZmIvXCuUwsEMDKCiSY0LmoXgAIMAC9lQQabUIiXQAAAABJRU5ErkJggg== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=myspace.png Content-Type: image/png; name=myspace.png Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/myspace.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2Fy ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEhQTFRF3d3dM2ZmZpmZmZmZZjOZ//vw MwCZAAB3AACAADOh8PDwzP//mczMzMz/MzNmM2bMZpnMM2aZmZnMZmaZMzOZADNm ////ADOZkBALpgAAAJdJREFUeNo8jlsSxCAIBDX7hEQjCs79b7oQUzuWH7bNFGm+ 5pxcEnMz3Ximycdjb2a9g4y6gwTrH4U0gDA4zb2iZ2BsX/iXAx6SioyyS4Wyg0HQ TaR7q1/vON0kIjQF6rGMeHvM73EZdwI/3TDTP4P6Hlxk6ZGcfG/Wpd+GJ5vZe/UG 4Di8uknC4Bgba6ZeRsDzKjb9CTAA8G8Rq3xokX0AAAAASUVORK5CYII= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=twitter.gif Content-Type: image/gif; name=twitter.gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/twitter.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQALMPANbV0by5tdz0/vn9/7Xo/aKgnJWTkN/e24rb/Ono58bEvfT0 83vX/HPU/P///////yH5BAEAAA8ALAAAAAAQABAAAARM8Mnn3Ly4asydaE3FXQ4D Elp1ZGaDps5CtmDdDA4wlbbNOIEdrYcLSngumGV2ghkyiJoy4+hJl5IEsvczHh0E qwB4UShTo4ISoJBEAAA7 ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=topclanky.gif Content-Type: image/gif; name=topclanky.gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/topclanky.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQALMAAKXFSOfx8oygV6PJF5e3MLDCgm+IJ9Hdw6TKJKzWHKzSNKzO JPz+/KzSLKzOLKzSJCH5BAAAAAAALAAAAAAQABAAAASXsDn3lmspKfUS4lbTPA1i Ks5QUgipLAlRAEAyKMjyOMmjDLHDgZBYKBoWnhExAAQCAt1nIelsZAyGgFAaSUZG wCF7EHA+Es6tkM0KeLcFAKERtxll4AY4IIzvDAVEKhpYDAGHWQGCPTEFiIhtkDMf dgcFApkCQgFlPwQCBqIEpKGioiooBAgjHSUfBBc4AyQOLT8eMA8AEQA7 ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=vybrali-sme.gif Content-Type: image/gif; name=vybrali-sme.gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/vybrali-sme.gif Content-Transfer-Encoding: Base64 R0lGODlhDwAPALMNAMne/+Tu/3as/6DF/3it/6PH/6HD+/Glpa666ay87NcAAP// /x54/////wAAAAAAACH5BAEAAA0ALAAAAAAPAA8AAAQ3sMl2VGI441mt1lLnfZs4 kub5KWx7kQwiz0a2wPBy40QBBLodSTD4BYUaojEIUwJ1OA00aqNGIwA7 ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=topodkazy.gif Content-Type: image/gif; name=topodkazy.gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/topodkazy.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQALMAANXl/Jm7/Gye/Hqn/MTX/K7J/Dh8/EyH/Imx/FeO/PT4/ESC /GSa/DR2/Cx2/Pz+/CH5BAAAAAAALAAAAAAQABAAAAR/sDnXBAizjWDozMDzCA4i Yhm1iE9hKCLhfQYLMKz8HYsTPgQBa+DBKQa4x2ABAxgMvYJIsUgwKAwOAyYIDCUf x0tUSLAQDgaBkNCwCg6v4mBiMeoPhoQ3YE0HMCgTBzB+QAcHYBJShiJ6YTWNZB4S ZpItYRQIAAQFAgkBAC5gEQA7 ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=linkuj.gif Content-Type: image/gif; name=linkuj.gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/linkuj.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQALMAAIG75GOt3lql3pzO74zF5vf3/8PZ75TF5rXW5ubv92ut3qXO 5u/39////1ql1lKl3iH5BAAAAAAALAAAAAAQABAAAARr8MmnWGtruj3lus2gbY60 GRejlA/XVZfhdhMBHi3dIVcSzBoJKtRidQSURCOxEgA5AAuCxDJKAIUGoKhALLZU bAHgCARsDcaXq2Qk3BZQYloagO7pxWFFIiwWXlJgRSQdCwOFDk5UG4tUAREAOw== ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=required.gif Content-Type: image/gif; name=required.gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/required.gif Content-Transfer-Encoding: Base64 R0lGODlhBwAHAIAAAPn39wByvCH5BAAAAAAALAAAAAAHAAcAAAIMDIxwe4GuWHtm 1YQKADs= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=captcha.jpeg Content-Type: image/jpeg; name=captcha.jpeg Content-Location: http://teplice.naseadresa.cz/captcha.ashx?633912205068117935 Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkS Ew8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJ CQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjL/wAARCAAyALQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEA AAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6 Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx 8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE xcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3 S8TUGuLM2c1vHCsubpZYyzPHtPCEEYOccnNYfivWpNGv9DZjfR2kl0VuJLaNXTGx jiTIJC98j0rZ1PTf7Q0i9sY7q4tGuo2T7RA5EkZYY3KexFc9rWqp4G8GQW7X1rf3 kESRxjVr9IGuQCAzFm6nnNAHX1jalYa3ca/pV1Y6ulrptuX+22hgDG4yPlwx5XHt WXN8S/BUUWLjxNpe4jDCG5EgB74K/wA6wbv4veA7GCFbLxIT5CNshW3mkEnBChmK E8HnrmgD0uiqGi6imr6FYajHIkiXNukodAQp3KDwDyB9ayvHHjCDwP4dOsXFpLdR iVYzHEwB+bPPNAGxq0F7daRdwaddizvZImWC4KBxG5HDbT1wax49cg8P2+maNr2t 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 ooA//9k= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=rss.gif Content-Type: image/gif; name=rss.gif Content-Location: http://teplice.naseadresa.cz/0000-Global/images/design/icons/rss.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQALMPAPzHlfz17vu9h/uLLvzXqf27dP7bt/25ZPp3GfqgV/7m0v7+ /vuwfv///+hpFv///yH5BAEAAA8ALAAAAAAQABAAAASH8LlJa5Uk663BJIcACEdp lsQHLE2zBERhFsZXKMHCNgFQ/DVH7FcAGFiLkSBoKGRGPwUvkfA4DITWizFIBBqE gdVwICiQXAFPPAEM3gNp4M1KCCYCRII7+DIQUgJ3DgIJLHlZAAiJgwyGDXlqigCQ DBN/ewiafwgDf5YODKKjpKQOEhapEw8RADs= ------------4U30QjLS4eCboJMb6SvxMv Content-Disposition: inline; filename=show_ads.js Content-Type: text/javascript; charset=UTF-8; name=show_ads.js Content-Location: http://pagead2.googlesyndication.com/pagead/show_ads.js Content-Transfer-Encoding: Quoted-Printable (function(){var g=3Dtrue,h=3Dnull,j=3Dfalse,aa=3D(new Date).getTime(),k=3D= function(a){var b=3D(new Date).getTime()-aa;b=3D"&dtd=3D"+(b<1000?b:"M")= ;return a+b};var l=3Dthis,ba=3Dfunction(a,b,c){a=3Da.split(".");c=3Dc||l= ;!(a[0]in c)&&c.execScript&&c.execScript("var "+a[0]);for(var d;a.length= &&(d=3Da.shift());)if(!a.length&&b!=3D=3Dundefined)c[d]=3Db;else c=3Dc[d= ]?c[d]:(c[d]=3D{})},n=3Dfunction(a){var b=3Dtypeof a;if(b=3D=3D"object")= if(a){if(a instanceof Array||!(a instanceof Object)&&Object.prototype.to= String.call(a)=3D=3D"[object Array]"||typeof a.length=3D=3D"number"&&typ= eof a.splice!=3D"undefined"&&typeof a.propertyIsEnumerable!=3D"undefined= "&&!a.propertyIsEnumerable("splice"))return"array"; if(!(a instanceof Object)&&(Object.prototype.toString.call(a)=3D=3D"[obj= ect Function]"||typeof a.call!=3D"undefined"&&typeof a.propertyIsEnumera= ble!=3D"undefined"&&!a.propertyIsEnumerable("call")))return"function"}el= se return"null";else if(b=3D=3D"function"&&typeof a.call=3D=3D"undefined= ")return"object";return b},o=3Dfunction(a){return n(a)=3D=3D"array"},ca=3D= function(a){var b=3Dn(a);return b=3D=3D"array"||b=3D=3D"object"&&typeof = a.length=3D=3D"number"},p=3Dfunction(a){return typeof a=3D=3D"string"},d= a=3Dfunction(a){a=3Dn(a);return a=3D=3D"object"|| a=3D=3D"array"||a=3D=3D"function"};Math.floor(Math.random()*2147483648).= toString(36); var ea=3Dfunction(a){var b=3Dn(a);if(b=3D=3D"object"||b=3D=3D"array"){if= (a.clone)return a.clone.call(a);b=3Db=3D=3D"array"?[]:{};for(var c in a)= b[c]=3Dea(a[c]);return b}return a},fa=3Dfunction(a,b){var c=3Db||l;if(ar= guments.length>2){var d=3DArray.prototype.slice.call(arguments,2);return= function(){var e=3DArray.prototype.slice.call(arguments);Array.prototyp= e.unshift.apply(e,d);return a.apply(c,e)}}else return function(){return = a.apply(c,arguments)}},ga=3DDate.now||function(){return(new Date).getTim= e()},q=3Dfunction(a,b,c){ba(a, b,c)};var ha=3Dfunction(a,b,c){if(a.forEach)a.forEach(b,c);else if(Array= .forEach)Array.forEach(a,b,c);else for(var d=3Da.length,e=3Dp(a)?a.split= (""):a,f=3D0;f")!=3D-1)a=3Da.replace(na,">");if(a.indexOf('"')!=3D-1)a=3Da.repla= ce(oa,""");return a}},la=3D/&/g,ma=3D//g,oa=3D/\"/g,pa=3D= /[&<>\"]/,ta=3Dfunction(a){if(u(a,"&"))return"document"in l&&!u(a,"<")? ra(a):sa(a);return a},ra=3Dfunction(a){var b=3Dl.document.createElement(= "a");b.innerHTML=3Da;b.normalize&&b.normalize();a=3Db.firstChild.nodeVal= ue;b.innerHTML=3D"";return a},sa=3Dfunction(a){return a.replace(/&([^;]+= );/g,function(b,c){switch(c){case "amp":return"&";case "lt":return"<";ca= se "gt":return">";case "quot":return'"';default:if(c.charAt(0)=3D=3D"#")= {c=3DNumber("0"+c.substr(1));if(!isNaN(c))return String.fromCharCode(c)}= return b}})},ua=3Dfunction(a,b){for(var c=3Db.length,d=3D0;db)return 1;return 0};ga();var v,xa,w,ya,za,Aa,Ba,Ca,= Da,Ea,Fa=3Dfunction(){return l.navigator?l.navigator.userAgent:h},x=3Dfu= nction(){return l.navigator},Ga=3Dfunction(){Aa=3Dza=3Dya=3Dw=3Dxa=3Dv=3D= j;var a;if(a=3DFa()){var b=3Dx();v=3Da.indexOf("Opera")=3D=3D0;xa=3D!v&&= a.indexOf("MSIE")!=3D-1;ya=3D(w=3D!v&&a.indexOf("WebKit")!=3D-1)&&a.inde= xOf("Mobile")!=3D-1;Aa=3D(za=3D!v&&!w&&b.product=3D=3D"Gecko")&&b.vendor= =3D=3D"Camino"}};Ga(); var y=3Dv,z=3Dxa,Ha=3Dza,C=3Dw,Ia=3Dya,Ja=3Dfunction(){var a=3Dx();retur= n a&&a.platform||""},Ka=3DJa(),La=3Dfunction(){Ba=3Du(Ka,"Mac");Ca=3Du(K= a,"Win");Da=3Du(Ka,"Linux");Ea=3D!!x()&&u(x().appVersion||"","X11")};La(= ); var Ma=3DBa,Na=3DCa,Oa=3DDa,Pa=3Dfunction(){var a=3D"",b;if(y&&l.opera){= a=3Dl.opera.version;a=3Dtypeof a=3D=3D"function"?a():a}else{if(Ha)b=3D/r= v\:([^\);]+)(\)|;)/;else if(z)b=3D/MSIE\s+([^\);]+)(\)|;)/;else if(C)b=3D= /WebKit\/(\S+)/;if(b)a=3D(a=3Db.exec(Fa()))?a[1]:""}return a},Qa=3DPa(),= Ra=3D{},D=3Dfunction(a){return Ra[a]||(Ra[a]=3Dwa(Qa,a)>=3D0)};var E;var= Sa=3Dfunction(a){return p(a)?document.getElementById(a):a},Ta=3DSa,Va=3D= function(a,b){ja(b,function(c,d){if(d=3D=3D"style")a.style.cssText=3Dc;e= lse if(d=3D=3D"class")a.className=3Dc;else if(d=3D=3D"for")a.htmlFor=3Dc= ;else if(d in Ua)a.setAttribute(Ua[d],c);else a[d]=3Dc})},Ua=3D{cellpadd= ing:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",rowspan:"r= owSpan",valign:"vAlign",height:"height",width:"width",usemap:"useMap",fr= ameborder:"frameBorder",type:"type"},Wa=3Dfunction(a){var b=3Da.document= ;if(C&&!D("500")&&!Ia){if(typeof a.innerHeight=3D=3D "undefined")a=3Dwindow;b=3Da.innerHeight;var c=3Da.document.documentElem= ent.scrollHeight;if(a=3D=3Da.top)if(c");c=3Dc.join("")}var e=3Da.createElement(c);if(d= )if(p(d))e.className=3Dd;else Va(e,d);if(b.length>2){function f(i){if(i)= e.appendChild(p(i)?a.createTextNode(i):i)}for(d=3D2;d0)?ha($a(c)?ia(c):c,f):f(c)}}return e},a= b=3Dfunction(a,b){a.appendChild(b)},bb=3Dfunction(a){return a&&a.parentN= ode?a.parentNode.removeChild(a):h},cb=3Dfunction(a,b){var c=3Db.parentNo= de;c&&c.replaceChild(a, b)},db=3DC&&D("522"),eb=3Dfunction(a,b){if(typeof a.contains!=3D"undefin= ed"&&!db&&b.nodeType=3D=3D1)return a=3D=3Db||a.contains(b);if(typeof a.c= ompareDocumentPosition!=3D"undefined")return a=3D=3Db||Boolean(a.compare= DocumentPosition(b)&16);for(;b&&a!=3Db;)b=3Db.parentNode;return b=3D=3Da= },F=3Dfunction(a){return a.nodeType=3D=3D9?a:a.ownerDocument||a.document= },$a=3Dfunction(a){if(a&&typeof a.length=3D=3D"number")if(da(a))return t= ypeof a.item=3D=3D"function"||typeof a.item=3D=3D"string";else if(n(a)=3D= =3D"function")return typeof a.item=3D=3D"function";return j}, G=3Dfunction(a){this.a=3Da||l.document||document};G.prototype.createElem= ent=3Dfunction(a){return this.a.createElement(a)};G.prototype.createText= Node=3Dfunction(a){return this.a.createTextNode(a)};G.prototype.n=3Dfunc= tion(){return this.a.compatMode=3D=3D"CSS1Compat"};G.prototype.m=3Dfunct= ion(){return Xa(this.a)};G.prototype.appendChild=3Dab;G.prototype.remove= Node=3Dbb;G.prototype.replaceNode=3Dcb;G.prototype.contains=3Deb;functio= n H(a,b){a=3DparseFloat(a);return isNaN(a)||a>1||a<0?b:a}function I(a,b)= {if(a=3D=3D"true")return g;if(a=3D=3D"false")return j;return b}function = J(a,b){var c=3D/^([\w-]+\.)+[\w-]{2,}(\:[0-9]+)?$/;return c.test(a)?a:b}= ;var fb=3D"pagead2.googlesyndication.com",gb=3D"googleads.g.doubleclick.= net",hb=3D"pubads.g.doubleclick.net",ib=3D"securepubads.g.doubleclick.ne= t",jb=3D"partner.googleadservices.com",K=3DJ("pagead2.googlesyndication.= com",fb),kb=3DJ("googleads.g.doubleclick.net",gb),lb=3DJ("pagead2.google= syndication.com",fb);J("pubads.g.doubleclick.net",hb);J("partner.googlea= dservices.com",jb);J("securepubads.g.doubleclick.net",ib);function L(a){= return typeof encodeURIComponent=3D=3D"function"?encodeURIComponent(a):e= scape(a)}function mb(a,b,c){var d=3Ddocument.createElement("script");d.t= ype=3D"text/javascript";if(b)d.onload=3Db;if(c)d.id=3Dc;d.src=3Da;var e=3D= document.getElementsByTagName("head")[0];if(!e)return j;window.setTimeou= t(function(){e.appendChild(d)},0);return g}function nb(a,b){a.google_ima= ge_requests||(a.google_image_requests=3D[]);var c=3Dnew Image;c.src=3Db;= a.google_image_requests.push(c)} function ob(a){if(a in pb)return pb[a];return pb[a]=3Dnavigator.userAgen= t.toLowerCase().indexOf(a)!=3D-1}var pb=3D{}; function qb(){if(navigator.plugins&&navigator.mimeTypes.length){var a=3D= navigator.plugins["Shockwave Flash"];if(a&&a.description)return a.descri= ption.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s)+r/,".")}else if(navigat= or.userAgent&&navigator.userAgent.indexOf("Windows CE")>=3D0){a=3D3;for(= var b=3D1;b;)try{b=3Dnew ActiveXObject("ShockwaveFlash.ShockwaveFlash."+= (a+1));a++}catch(c){b=3Dh}return a.toString()}else if(ob("msie")&&!windo= w.opera){b=3Dh;try{b=3Dnew ActiveXObject("ShockwaveFlash.ShockwaveFlash.= 7")}catch(d){a=3D 0;try{b=3Dnew ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");a=3D6;b.A= llowScriptAccess=3D"always"}catch(e){if(a=3D=3D6)return a.toString()}try= {b=3Dnew ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(f){}}if(b)= {a=3Db.GetVariable("$version").split(" ")[1];return a.replace(/,/g,".")}= }return"0"}function M(a){var b=3Da.google_ad_format;if(b)return b.indexO= f("_0ads")>0;return a.google_ad_output!=3D"html"&&a.google_num_radlinks>= 0}function N(a){return!!a&&a.indexOf("_sdo")!=3D-1} function O(a,b){var c=3DMath.random();if(c2*d||f>2*c)return j}return g}function yb(a,= b){for(var c in b)a["google_"+c]=3Db[c]} function Ab(a,b){if(!b)return a.URL;return a.referrer}function Bb(a,b){i= f(!b&&a.google_referrer_url=3D=3Dh)return"0";else if(b&&a.google_referre= r_url=3D=3Dh)return"1";else if(!b&&a.google_referrer_url!=3Dh)return"2";= else if(b&&a.google_referrer_url!=3Dh)return"3";return"4"}function Cb(a,= b,c,d){a.page_url=3DAb(c,d);a.page_location=3Dh}function Db(a,b,c,d){a.p= age_url=3Db.google_page_url;a.page_location=3DAb(c,d)||"EMPTY"} function Eb(a,b){var c=3D{},d=3Dxb(a,b,a.google_ad_width,a.google_ad_hei= ght);c.iframing=3DBb(a,d);a.google_page_url?Db(c,a,b,d):Cb(c,a,b,d);c.la= st_modified_time=3Db.URL=3D=3Dc.page_url?Date.parse(b.lastModified)/1000= :h;c.referrer_url=3Dd?a.google_referrer_url:a.google_page_url&&a.google_= referrer_url?a.google_referrer_url:b.referrer;return c}function Fb(a){va= r b=3D{},c=3Da.URL.substring(a.URL.lastIndexOf("http"));b.iframing=3Dh;b= .page_url=3Dc;b.page_location=3Da.URL;b.last_modified_time=3Dh;b.referre= r_url=3Dc;return b} function Gb(a,b){b=3DHb(a,b);yb(a,b)}function Hb(a,b){return a=3Da.googl= e_page_url=3D=3Dh&&Ib[b.domain]?Fb(b):Eb(a,b)}var Ib=3D{};Ib["ad.yieldma= nager.com"]=3Dg;var Jb=3Ddocument,Kb=3DI("false",j),Lb=3DI("false",j),Mb= =3DI("false",j);I("false",j);var P=3Dwindow;var Nb=3Dfunction(a,b,c){b=3D= fa(b,l,a);a=3Dwindow.onerror;window.onerror=3Db;try{c()}catch(d){c=3Dd.t= oString();var e=3D"";if(d.fileName)e=3Dd.fileName;var f=3D-1;if(d.lineNu= mber)f=3Dd.lineNumber;b=3Db(c,e,f);if(!b)throw d;}window.onerror=3Da};q(= "google_protectAndRun",Nb); var Pb=3Dfunction(a,b,c,d){if(Math.random()<0.01){var e=3DJb;a=3D["http:= //",lb,"/pagead/gen_204","?id=3Djserror","&jscb=3D",Kb?1:0,"&jscd=3D",Lb= ?1:0,"&context=3D",L(a),"&msg=3D",L(b),"&file=3D",L(c),"&line=3D",L(d.to= String()),"&url=3D",L(e.URL.substring(0,512)),"&ref=3D",L(e.referrer.sub= string(0,512))];a.push(Ob());nb(P,a.join(""))}return!Mb};q("google_handl= eError",Pb); var Rb=3Dfunction(a){Qb|=3Da},Qb=3D0,Ob=3Dfunction(){var a=3D["&client=3D= ",L(P.google_ad_client),"&format=3D",L(P.google_ad_format),"&slotname=3D= ",L(P.google_ad_slot),"&output=3D",L(P.google_ad_output),"&ad_type=3D",L= (P.google_ad_type)];return a.join("")};var Q=3D"",Ub=3Dfunction(){if(win= dow.google_ad_frameborder=3D=3Dh)window.google_ad_frameborder=3D0;if(win= dow.google_ad_output=3D=3Dh)window.google_ad_output=3D"html";if(N(window= .google_ad_format)){var a=3Dwindow.google_ad_format.match(/^(\d+)x(\d+)_= .*/);if(a){window.google_ad_width=3DparseInt(a[1],10);window.google_ad_h= eight=3DparseInt(a[2],10);window.google_ad_output=3D"html"}}window.googl= e_ad_format=3DSb(window.google_ad_format,window.google_ad_output,window.= google_ad_width,window.google_ad_height,window.google_ad_slot, !!window.google_override_format);Q=3Dwindow.google_ad_client||"";window.= google_ad_client=3DTb(window.google_ad_format,window.google_ad_client);G= b(window,document);if(window.google_num_slots_by_channel=3D=3Dh)window.g= oogle_num_slots_by_channel=3D{};if(window.google_viewed_host_channels=3D= =3Dh)window.google_viewed_host_channels=3D{};if(window.google_num_slots_= by_client=3D=3Dh)window.google_num_slots_by_client=3D{};if(window.google= _prev_ad_formats_by_region=3D=3Dh)window.google_prev_ad_formats_by_regio= n=3D{};if(window.google_prev_ad_slotnames_by_region=3D=3D h)window.google_prev_ad_slotnames_by_region=3D{};if(window.google_correl= ator=3D=3Dh)window.google_correlator=3D(new Date).getTime();if(window.go= ogle_adslot_loaded=3D=3Dh)window.google_adslot_loaded=3D{};if(window.goo= gle_adContentsBySlot=3D=3Dh)window.google_adContentsBySlot=3D{};if(windo= w.google_flash_version=3D=3Dh)window.google_flash_version=3Dqb();if(wind= ow.google_new_domain_checked=3D=3Dh)window.google_new_domain_checked=3D0= ;if(window.google_new_domain_enabled=3D=3Dh)window.google_new_domain_ena= bled=3D0;if(!window.google_num_ad_slots)window.google_num_ad_slots=3D 0;if(!window.google_num_0ad_slots)window.google_num_0ad_slots=3D0;if(!wi= ndow.google_num_sdo_slots)window.google_num_sdo_slots=3D0;window.google_= ad_section=3Dwindow.google_ad_section||window.google_ad_region||"";windo= w.google_country=3Dwindow.google_country||window.google_gl||"";a=3D(new = Date).getTime();if(o(window.google_color_bg))window.google_color_bg=3DR(= window.google_color_bg,a);if(o(window.google_color_text))window.google_c= olor_text=3DR(window.google_color_text,a);if(o(window.google_color_link)= )window.google_color_link=3D R(window.google_color_link,a);if(o(window.google_color_url))window.googl= e_color_url=3DR(window.google_color_url,a);if(o(window.google_color_bord= er))window.google_color_border=3DR(window.google_color_border,a);if(o(wi= ndow.google_color_line))window.google_color_line=3DR(window.google_color= _line,a)},Vb=3Dfunction(a){var b;for(b in tb)a[b]=3Dh;for(b in ub)a[b]=3D= h;for(b in vb)a[b]=3Dh;a.google_container_id=3Dh;a.google_eids=3Dh;a.goo= gle_ad_region=3Dh;a.google_gl=3Dh},R=3Dfunction(a,b){Rb(2);return a[b%a.= length]},Tb=3Dfunction(a, b){if(!b)return"";b=3Db.toLowerCase();return b=3DN(a)?Wb(b):Xb(b)},Xb=3D= function(a){if(a&&a.substring(0,3)!=3D"ca-")a=3D"ca-"+a;return a},Wb=3Df= unction(a){if(a&&a.substring(0,9)!=3D"dist-aff-")a=3D"dist-aff-"+a;retur= n a},Sb=3Dfunction(a,b,c,d,e,f){if(!a&&b=3D=3D"html")a=3Dc+"x"+d;return = a=3DYb(a,e,f)?a.toLowerCase():""},Yb=3Dfunction(a,b,c){if(!a)return j;if= (!b)return g;return c};var S=3Ddocument,T=3Dnavigator,U=3Dwindow; function Zb(){var a=3DS.cookie,b=3DMath.round((new Date).getTime()/1000)= ,c=3DU.google_analytics_domain_name;c=3Dtypeof c=3D=3D"undefined"?$b("au= to"):$b(c);var d=3Da.indexOf("__utma=3D"+c+".")>-1,e=3Da.indexOf("__utmb= =3D"+c)>-1,f=3Da.indexOf("__utmc=3D"+c)>-1,i=3D{},m=3D!!U&&!!U.gaGlobal;= if(d){a=3Da.split("__utma=3D"+c+".")[1].split(";")[0].split(".");i.sid=3D= e&&f?a[3]+"":m&&U.gaGlobal.sid?U.gaGlobal.sid:b+"";i.vid=3Da[0]+"."+a[1]= ;i.from_cookie=3Dg}else{i.sid=3Dm&&U.gaGlobal.sid?U.gaGlobal.sid:b+"";i.= vid=3Dm&&U.gaGlobal.vid?U.gaGlobal.vid: (Math.round(Math.random()*2147483647)^ac()&2147483647)+"."+b;i.from_cook= ie=3Dj}i.dh=3Dc;i.hid=3Dm&&U.gaGlobal.hid?U.gaGlobal.hid:Math.round(Math= .random()*2147483647);return U.gaGlobal=3Di} function ac(){var a=3DS.cookie?S.cookie:"",b=3DU.history.length,c,d=3D[T= .appName,T.version,T.language?T.language:T.browserLanguage,T.platform,T.= userAgent,T.javaEnabled()?1:0].join("");if(U.screen)d+=3DU.screen.width+= "x"+U.screen.height+U.screen.colorDepth;else if(U.java){c=3Djava.awt.Too= lkit.getDefaultToolkit().getScreenSize();d+=3Dc.screen.width+"x"+c.scree= n.height}d+=3Da;d+=3DS.referrer?S.referrer:"";for(a=3Dd.length;b>0;)d+=3D= b--^a++;return bc(d)} function bc(a){var b=3D1,c=3D0,d;if(!(a=3D=3Dundefined||a=3D=3D"")){b=3D= 0;for(d=3Da.length-1;d>=3D0;d--){c=3Da.charCodeAt(d);b=3D(b<<6&268435455= )+c+(c<<14);c=3Db&266338304;b=3Dc!=3D0?b^c>>21:b}}return b}function $b(a= ){if(!a||a=3D=3D""||a=3D=3D"none")return 1;if("auto"=3D=3Da){a=3DS.domai= n;if("www."=3D=3Da.substring(0,4))a=3Da.substring(4,a.length)}return bc(= a.toLowerCase())};var cc=3D{google:1,googlegroups:1,gmail:1,googlemail:1= ,googleimages:1,googleprint:1};function dc(a){a=3Da.google_page_location= ||a.google_page_url;if(!a)return j;a=3Da.toString();if(a.indexOf("http:/= /")=3D=3D0)a=3Da.substring(7,a.length);else if(a.indexOf("https://")=3D=3D= 0)a=3Da.substring(8,a.length);var b=3Da.indexOf("/");if(b=3D=3D-1)b=3Da.= length;a=3Da.substring(0,b);a=3Da.split(".");b=3Dj;if(a.length>=3D3)b=3D= a[a.length-3]in cc;if(a.length>=3D2)b=3Db||a[a.length-2]in cc;return b} function ec(a,b,c){if(dc(a)){a.google_new_domain_checked=3D1;return j}if= (a.google_new_domain_checked=3D=3D0){var d=3DMath.random();if(d<=3Dc){c=3D= "http://"+kb+"/pagead/test_domain.js";d=3D"script";b.write("<"+d+' src=3D= "'+c+'">");a.google_new_domain_checked=3D1;return g}}return j}fu= nction fc(a){if(!dc(a)&&a.google_new_domain_enabled=3D=3D1)return"http:/= /"+kb;return"http://"+lb};document.URL&&(document.URL.indexOf("?google_d= ebug")>0||document.URL.indexOf("&google_debug")>0);var V=3Dfunction(a){t= his.v=3Da;this.g=3D[];this.f=3D0;this.b=3D[];this.r=3D0;this.c=3D[];this= .p=3Dj;this.h=3Dthis.i=3D"";this.o=3Dj};V.prototype.t=3Dfunction(a,b){va= r c=3Dthis.v[b],d=3Dthis.g;this.v[b]=3Dfunction(e){if(e&&e.length>0){var= f=3De.length>1?e[1].url:h;d.push([a,ta(e[0].url),f])}c(e)}};V.prototype= .s=3Dfunction(){this.f++};V.prototype.u=3Dfunction(a){this.b.push(a)};V.= prototype.q=3Dfunction(){if(!this.p){mb("http://"+K+"/pagead/osd.js");th= is.p=3Dg}}; V.prototype.j=3Dfunction(a){if(this.f>0)for(var b=3Ddocument.getElements= ByTagName("iframe"),c=3Dthis.o?"google_ads_iframe_":"google_ads_frame",d= =3D0;d0)for(var c=3Ddoc= ument.getElementsByTagName("a"),d=3Dfunction(A,B){return A.innerHTML.ind= exOf(B)>0},e=3D0;e0){for(var d=3D0= ;da.clientWidth||a.scrollHeight>a.clientHeight||c=3D=3D"fixed"||c=3D=3D= "absolute"))return a}return h},tc=3Dfunction(a){var b,c=3DF(a),d=3DW(a,"= position"),e=3DHa&&c.getBoxObjectFor&&!a.getBoundingClientRect&&d=3D=3D"= absolute"&&(b=3Dc.getBoxObjectFor(a))&&(b.screenX<0|| b.screenY<0),f=3Dnew r(0,0),i=3Dqc(c);if(a=3D=3Di)return f;if(a.getBound= ingClientRect){b=3Drc(a);a=3D(c?new G(F(c)):E||(E=3Dnew G)).m();f.x=3Db.= left+a.x;f.y=3Db.top+a.y}else if(c.getBoxObjectFor&&!e){b=3Dc.getBoxObje= ctFor(a);a=3Dc.getBoxObjectFor(i);f.x=3Db.screenX-a.screenX;f.y=3Db.scre= enY-a.screenY}else{b=3Da;do{f.x+=3Db.offsetLeft;f.y+=3Db.offsetTop;if(b!= =3Da){f.x+=3Db.clientLeft||0;f.y+=3Db.clientTop||0}if(C&&W(b,"position")= =3D=3D"fixed"){f.x+=3Dc.body.scrollLeft;f.y+=3Dc.body.scrollTop;break}b=3D= b.offsetParent}while(b&&b!=3Da);if(y||C&&d=3D=3D"absolute")f.y-=3D c.body.offsetTop;for(b=3Da;(b=3Dsc(b))&&b!=3Dc.body&&b!=3Di;){f.x-=3Db.s= crollLeft;if(!y||b.tagName!=3D"TR")f.y-=3Db.scrollTop}}return f},uc=3Dfu= nction(a,b,c,d){if(/^\d+px?$/.test(b))return parseInt(b,10);else{var e=3D= a.style[c],f=3Da.runtimeStyle[c];a.runtimeStyle[c]=3Da.currentStyle[c];a= .style[c]=3Db;b=3Da.style[d];a.style[c]=3De;a.runtimeStyle[c]=3Df;return= b}},vc=3Dfunction(a){var b=3DF(a),c=3D"";if(b.createTextRange){c=3Db.bo= dy.createTextRange();c.moveToElementText(a);c=3Dc.queryCommandValue("Fon= tName")}if(!c){c=3DW(a,"fontFamily");if(y&& Oa)c=3Dc.replace(/ \[[^\]]*\]/,"")}a=3Dc.split(",");if(a.length>1)c=3Da[= 0];return ua(c,"\"'")},wc=3D/[^\d]+$/,xc=3Dfunction(a){return(a=3Da.matc= h(wc))&&a[0]||h},yc=3D{cm:1,"in":1,mm:1,pc:1,pt:1},zc=3D{em:1,ex:1},Ac=3D= function(a){var b=3DW(a,"fontSize"),c=3Dxc(b);if(b&&"px"=3D=3Dc)return p= arseInt(b,10);if(z)if(c in yc)return uc(a,b,"left","pixelLeft");else if(= a.parentNode&&a.parentNode.nodeType=3D=3D1&&c in zc){a=3Da.parentNode;c=3D= W(a,"fontSize");return uc(a,b=3D=3Dc?"1em":b,"left","pixelLeft")}c=3DZa(= "span",{style:"visibility:hidden;position:absolute;line-height:0;padding= :0;margin:0;border:0;height:1em;"}); ab(a,c);b=3Dc.offsetHeight;bb(c);return b};var X=3D{};function Bc(a){if(= a=3D=3D1)return g;return!X[a]}function Y(a,b){if(a)if(b=3D=3D1)if(X[b])X= [b]+=3D","+a;else X[b]=3Da;else X[b]=3Da}function Cc(){var a=3D[];for(va= r b in X)a.push(X[b]);return a.join(",")}function Dc(a,b){if(a&&a instan= ceof Array)for(var c=3D0;c");a=3Dec(a,b,H("1",0.01));(d=3Dd||a)&&= ob("msie")&&!window.opera?b.write("<"+c+' src=3D"http://'+K+'/pagead/ren= der_ads.js">"):b.write("<"+c+'>google_protectAndRun("ads_core.go= ogle_render_ad", google_handleError, google_render_ad);")}functi= on $(a){return a!=3Dh?'"'+a+'"':'""'} function Hc(a){var b=3D"google_unique_id";if(a[b])++a[b];else a[b]=3D1;r= eturn a[b]}var Ic=3Dfunction(a,b){var c=3Db.slice(-1);c=3Dc=3D=3D"?"||c=3D= =3D"#"?"":"&";b=3D[b];for(var d in a){var e=3Da[d];if(e||e=3D=3D=3D0||e=3D= =3D=3Dj){if(typeof e=3D=3D"boolean")e=3De?1:0;b.push(c,d,"=3D",L(e));c=3D= "&"}}return b.join("")};function Jc(){var a=3Dz&&D("6"),b=3DHa&&D("1.8.1= "),c=3DC&&D("525");if(Na&&(a||b||c))return g;else if(Ma&&(c||b))return g= ;else if(Oa&&b)return g;return j} function Gc(){return(typeof ExpandableAdSlotFactory=3D=3D"function"||typ= eof ExpandableAdSlotFactory=3D=3D"object")&&typeof ExpandableAdSlotFacto= ry.createIframe=3D=3D"function"}function Fc(a,b){if(a.google_allow_expan= dable_ads=3D=3D=3Dj||!b.body||a.google_ad_output!=3D"html"||xb(a,b)||!Kc= (a)||isNaN(a.google_ad_height)||isNaN(a.google_ad_width)||!Jc())return j= ;return g}function Kc(a){var b=3Da.google_ad_format;if(N(b))return j;if(= M(a)&&b!=3D"468x15_0ads_al")return j;return g} function Lc(){var a;if(P.google_ad_output=3D=3D"html"&&!(M(P)||N(P.googl= e_ad_format))&&Bc(0)){a=3D["6083035","6083034"];a=3DO(a,H("0.001",0));Y(= a,0)}return a=3D=3D"6083035"}function Mc(a,b){if((a.google_unique_id||0)= =3D=3D0&&a.google_ad_output=3D=3D"html"&&document.body&&typeof b.body.ge= tBoundingClientRect=3D=3D"function")return O(["36812001","36812002"],H("= 0",0));return""} function Nc(a,b){if((a.google_unique_id||0)!=3D0||N(a.google_ad_format))= return"";var c=3D"";a=3DM(a);if(b=3D=3D"html"||a)c=3DO(["36815001","3681= 5002"],H("0.006",0));if(c=3D=3D""&&(b=3D=3D"js"||a))c=3DO(["36815003","3= 6815004"],H("0.006",0));if(c=3D=3D""&&(b=3D=3D"html"||b=3D=3D"js"))c=3DO= (["36813005","36813006"],H("0.008",0));return c} function Oc(){var a=3Dhc(),b=3Dwindow.google_enable_osd,c=3D"";if(b=3D=3D= =3Dg){c=3D"36813006";Pc(c,a)}else if(b!=3D=3Dj&&Bc(0)){c=3DO(["68120011"= ,"68120021","68120031","68120041"],H("0",0))||Mc(window,document);if(c=3D= =3D""){c=3DNc(window,window.google_ad_output);if(c!=3D"")Pc(c,a);else c=3D= a.getEid()}}return c} function Pc(a,b){var c=3Db.getOsdMode(),d=3D[];switch(a){case "36815004"= :c=3D1;d=3D["js"];break;case "36815002":c=3D1;d=3D["html"];break;case "3= 6813006":c=3D0;d=3D["html","js"];break}d.length>0&&b.setValidAdBlockType= s(d);b.setupOsd(c,a,window.google_correlator)} function Qc(a,b,c,d){var e=3DHc(a);c=3DIc({ifi:e},c);c=3Dc.substring(0,1= 992);c=3Dc.replace(/%\w?$/,"");var f=3D"script";if((a.google_ad_output=3D= =3D"js"||a.google_ad_output=3D=3D"json_html")&&(a.google_ad_request_done= ||a.google_radlink_request_done))b.write("<"+f+' language=3D"JavaScript1= .1" src=3D'+$(k(c))+">");else if(a.google_ad_output=3D=3D"html")= if(Z&&Gc()){b=3Da.google_container_id||d||h;a["google_expandable_ad_slot= "+e]=3DExpandableAdSlotFactory.createIframe("google_ads_frame"+e,k(c),a.= google_ad_width,a.google_ad_height, b)}else{e=3D'