Content-Type: multipart/related; start=; boundary=----------lpcK8kNA4UN1EPii0uGjuD Content-Location: http://vasiltech.nm.ru/files/cd-players/CD-Player-DAC-Transport.htm Subject: =?utf-8?Q?CD-Player-DAC-Transport=20List?= MIME-Version: 1.0 ------------lpcK8kNA4UN1EPii0uGjuD Content-Disposition: inline; filename=CD-Player-DAC-Transport.htm Content-Type: text/html; charset=windows-1251; name=CD-Player-DAC-Transport.htm Content-ID: Content-Location: http://vasiltech.nm.ru/files/cd-players/CD-Player-DAC-Transport.htm Content-Transfer-Encoding: Quoted-Printable CD-Player-DAC-Transport List

CD-Player-= DAC-Transport List

Last Update - 01.10.2009

A |  B |  C |  D |  E |  F |  G |  H |  I |  J |  K |  L |  M |  N |  O |  P |  Q |  R |  S |  T |  U |  V |  W |  X |  Y |  Z

CD-PLAYER

DAC

TRANSPORT

ABBINGDON AMR CD-77

TDA1541A

Sony

ACCUPHASE DAC10

2 x AD1853

It=92s a DAC

ACCUPHASE DAC20

2 x AD1955

It=92s a DAC

ACCUPHASE DC-61

12 x PCM1702 =96 SM5843AP

It=92s a DAC

ACCUPHASE DC-81

8 x ICL8010ACPD =96 2 x SM5801P

It=92s a DAC

ACCUPHASE DC-81L

10 x ICL8010ACPD =96 SM5803AP

It=92s a DAC

ACCUPHASE DC-91

16 x PCM63P-K

It=92s a DAC

ACCUPHASE DC-101

6 x AD1853

It=92s a DAC

ACCUPHASE DC-330

6 x AD1853

It=92s a DAC

ACCUPHASE DC-801

8 x AD1955

It=92s a DAC

ACCUPHASE DP-11

2 x PCM58P-S =96 SM5803AP

Sony KSS-190A

ACCUPHASE DP-55

6 x PCM1702 =96 SM5843AP

Sony KSS-240A

ACCUPHASE DP-55V

2 x AD1853

Sony KSS-240A

ACCUPHASE DP-57

2 x PCM1796 =96 AK4114VQ

Sony KSS-240A

ACCUPHASE DP-60

2 x PCM58P-K =96 SM5803AP

Sony KSS-190A

ACCUPHASE DP-65

8 x PCM1702 =96 SM5843AP

Sony KSS-272A

ACCUPHASE DP-65V

8 x PCM1702 =96 SM5843AS

Sony KSS-272A

ACCUPHASE DP-67

4 x AD1955 =96 AK4114VQ

Sony KSS-240A

ACCUPHASE DP-70

8 x ICL8010ACPD

Sony BU-1C

ACCUPHASE DP-70V

10 x ICL8010ACPD =96 SM5803AP

Sony KSS-190A

ACCUPHASE DP-75

16 x PCM1702 =96 SM5843AP

Sony KSS-272A

ACCUPHASE DP-75V

6 x AD1853

Sony KSS-272A

ACCUPHASE DP-77

4 x AD1853

SACD Sony

ACCUPHASE DP-78

6 x AD1955 =96 AK4114VQ

SACD

ACCUPHASE DP-80

It=92s a Transport =96 CX23035

Sony BU-1C

ACCUPHASE DP-80L

It=92s a Transport =96 CXD1125QZ

Sony KSS-190A

ACCUPHASE DP-85

6 x AD1853

SACD Sony KHM-230AAA

ACCUPHASE DP-90

It=92s a Transport =96 CXD2500BQ

Sony KSS-272A

ACCUPHASE DP-100

It=92s a Transport

SACD Sony KHS-180A

ACCUPHASE DP-400

2 x PCM1796

Sony KSS-213C

ACCUPHASE DP-500

4 x PCM1796

Sony KSS-213CL

ACCUPHASE DP-600

6 x AD1955

SACD Sony KHM-230AAA

ACCUPHASE DP-700

8 x AD1955

SACD Sony KHM-230AAA

ACCUPHASE DP-800

It=92s a Transport

SACD Sony KHM-230AAA

ACOUSTIC RESEARCH CD-04

2 x TDA1540P =96 SAA7030

CDM-2

ACOUSTIC RESEARCH CD-06

TDA1541

CDM-2

ACOUSTIC RESEARCH CD-06SE

TDA1541A

CDM-4

ACOUSTIC RESEARCH CD-07

TDA1541 =96 SAA7220

CDM-4

ACOUSTIC RESEARCH CD-07SE

SAA7350

CDM-4

ACURUS ACD 11

MN66271RA

Panasonic RAE0113Z

ADC CD-250XR

PCM54HP

KSS-123A

ADC CD-350XR

PCM54HP

KSS-123A

ADCOM GCD-575

TDA1541A

KSS-212B

ADCOM GCD-600

TDA1541

KSS

ADCOM GCD-750

4 x PCM1702 =96 PMD100

Panasonic RAE0113Z

ADCOM GDA-600

2 x PCM63P =96 DF1700P =96 CS8412-CP

It=92s a DAC

ADCOM GDA-700

2 x PCM1702 =96 PMD100

It=92s a DAC

ADS CD3

2 x CX20152 =96 CX23034

KSS-121A / KSS-123A

ADVANTAGE CD1

2 x PCM1702 =96 NPC filter

Pioneer Stable Platter PEA1343

AIWA DX-770

CX20017

KSS-121A / KSS-123A

AIWA DX-1000

PCM53JG-V


AIWA DX-1200

PCM53JP-V =96 YM2201F

87-046-260-010

AIWA DX-M45

TDA1541

CDM-4/25

AIWA DX-M75

LC7881

KSS-150A

AIWA XC-002

1 x PCM56P

KSS-150A

AIWA XC-003

1 x PCM56P =96 PD0036

KSS-150A

AIWA XC-004

2 x PCM56P

KSS-150A

AIWA XC-005

2 x PCM58P =96 YM3414

KSS-150A

AIWA XC-007

2 x PCM56P-K =96 CXD1088Q

KSS-151A

AIWA XC-300

TC9237N

KSS-210A

AIWA XC-333

=B5PD6376

KSS-210A

AIWA XC-500

TC9237N

KSS-210A

AIWA XC-777

2 x PCM61P =96 CXD2550

KSS-210B

AIWA XC-950

SAA7350 =96 SM5840BS

KSS-210A / KSS-212A

A&D DP-7000

2 x PCM56P

KSS-151A

A&D DP-9000

2 x PCM56P

KSS-151A

AKAI CD-26

TDA1543A

KSS-210A

AKAI CD-32

PCM56P

KSS-150A

AKAI CD-37

PCM67P

KSS-210A

AKAI CD-52

2 x PCM56P

KSS-150A

AKAI CD-55

2 x AD1856N / PCM56P =96 PD0036

KSS-210A / KSS-150A

AKAI CD-57

PCM67P-J =96 CXD1167Q

KSS-210A

AKAI CD-62

2 x PCM56P =96 YM3414

Sankyo SPM1001 =96 MLP-10-E2

AKAI CD-69

PCM63P =96 SM5813

KSS-150A / KSS-210A

AKAI CD-73

2 x PCM56P

KSS-151A

AKAI CD-79

2 x PCM63P-K =96 SM5813AP

KSS-150A / KSS-210A

AKAI CD-93

2 x PCM56P

KSS-151A

AKAI CD-A7

PCM53JP-V =96 HD61902A

KSS-120A / KSS-123A

AKAI CD-A405

1 x PCM56P

KSS-123A

AKAI CD-D1

2 x TDA1540D =96 SAA7030

HLPL 030010 (Toshiba OPH-31)

AKAI CD-M77

CX20017


AKAI CD-M459

PCM56


AKAI CD-M719

1 x PCM56P

MLP-7

AKAI CD-M839

PCM56


ALBA CD420

PCM54


ALCHEMIST FORSETI APD32A

2 x CS4334 =96 CS8414

Philips

ALCHEMIST FORSETI APD33A

It=92s a Transport

Philips ECO Module

ALCHEMIST FORSETI APD34A

2 x CS4334

It=92s a DAC

ALCHEMIST KRAKEN APD39A

CS4334 =96 CS8414

Philips

ALCHEMIST NEXUS APD32A

2 x TDA1549

CDM 12.1

ALCHEMIST TS-D-1

CS4334 =96 CS8414

It=92s a DAC

ALPINE AD-7100

CX890

Toshiba OPH-31

ALTIS AUDIO CENTAURI

It=92s a Transport

CDM 12 Ind

AMC CD6

SAA7323GP =96 SAA7220P/B

CDM-4/19

AMC CDM7

SAA7323GP

CDM-4/19

AMC CD8A

MN6474

KSS-210A

AMC CD8B

PCM1716

KSS-213

AMC CD8D

2 x PCM1730


AMC CD9

MN6474 =96 CDX1167Q

KSS-210A

AMC CD60

PCM1716


ANTHEM CD1

2 x PCM1702 =96 PMD100

KSK-2000A

APOGEE DA-1000

2 x PCM63P

It=92s a DAC

APRIL MUSIC STELLO CDT200

It=92s a Transport

VAM 1210

APRIL MUSIC STELLO DA100

AKM4395

It=92s a DAC

APRIL MUSIC STELLO DA220

AKM4395

It=92s a DAC

ARAGON D2A

2 x PCM58P-J =96 CXD1144 =96 YM3623B

It=92s a DAC

ARAGON D2A2

2 x PCM63P-J =96 PMD100

It=92s a DAC

ARCAM ALPHA

TDA1541A =96 SAA7220P/B

CDM-4/19

ARCAM ALPHA ONE

PCM1710


ARCAM ALPHA PLUS

TDA1541A =96 SAA7220P/B

CDM-4/19

ARCAM ALPHA 5

TDA1541A =96 SAA7220P/B

CDM-9/44

ARCAM ALPHA 5 PLUS

TDA1541A

CDM-9

ARCAM ALPHA 6

SM5864 =96 SM5840

CDM-9

ARCAM ALPHA 7

PCM1710

Sony CDM14

ARCAM ALPHA 7SE

PCM1716

Sony CDM14

ARCAM ALPHA 8

SM5864AP =96 SM5843

Sony CDM14

ARCAM ALPHA 8SE

SM5864AP =96 PMD100

Sony CDM14

ARCAM ALPHA 9

dCS RingDAC =96 PMD100

KSS-240A

ARCAM DELTA 70.2

TDA1541A-S1 (Single Crown)

CDM-4/11 / CDM-4/31

ARCAM DELTA 70.3

SAA7350

CDM-4

ARCAM DELTA 110

2 x SAA7321


ARCAM DELTA 110.2

2 x PCM67P-J


ARCAM DELTA 170

It=92s a Transport

CDM-1 Mk II

ARCAM DELTA 270

PCM69AP-J =96 YSF210B-D (filter)

CDM-9

ARCAM DELTA BOX 1

TDA1541A =96 SAA7220P/B

It=92s a DAC

ARCAM DELTA BOX 2

TDA1541A

It=92s a DAC

ARCAM DELTA BOX 3

4 x SAA7321

It=92s a DAC

ARCAM DELTA BOX 5

PCM67P-J =96 YM3434 =96 YM3623B

It=92s a DAC

ARCAM DELTA BOX 50

PCM69AP =96 YM3623B

It=92s a DAC

ARCAM DIVA CD72

PCM1716

KSS-213C

ARCAM DIVA CD73T

WM8740

KSS-213C

ARCAM DIVA CD82

2 x WM8740s

KSS-213C

ARCAM DIVA CD92

dCS RingDAC 24bit + PMD200

KSS-213C

ARCAM DIVA CD93

4 x WM8740s


ARCAM DIVA CD192

4 x WM8740s

KSS-213CL

ARCAM FMJ CD17

WM8741


ARCAM FMJ CD23T

dCS RingDAC + HDCD

KSS-213B / KSS-240A

ARCAM FMJ CD33

4 x WM8740 =96 AD1896A

KSS-213

ARCAM FMJ CD36

4 x WM8740 =96 AD1896A

KSS-213

ARCAM FMJ CD37

WM8741

Sanyo

ARISTON CD PLAYER

TDA1541A-S1 (Single Crown)

CDM-4/19

ARISTONA CD1202

2 x TDA1540D =96 SAA7030

CDM-0

ARISTONA CD1204

2 x TDA1540P =96 SAA7030

CDM-1

ASSEMBLAGE DAC-1.5

2 x PCM1702 =96 PMD100 =96 CS8412

It=92s a DAC

ASSEMBLAGE DAC-2

2 x PCM1702 =96 PMD100 =96 CS8412-CP

It=92s a DAC

ASSEMBLAGE DAC-2.6

2 x PCM1704 =96 PMD100 =96 CS8412-CS

It=92s a DAC

ASSEMBLAGE DAC-2.7

2 x PCM1704 =96 PMD200 =96 CS8414-CS

It=92s a DAC

ASSEMBLAGE DAC-3

4 x PCM1704 =96 PMD100 =96 CS8414-CS

It=92s a DAC

ASSEMBLAGE DAC-3.1

4 x PCM1704 =96 PMD200

It=92s a DAC

ATOLL CD 200

PCM1794

VAM 1202/12

AUDIO AERO Capitole

AD1853

Philips CD-Pro 2 (VAM 1254)

AUDIO AERO Capitole Reference

PCM1792 + Anagram S.T.A.R.S.

Philips CD-Pro 2M (VAM 1254)

AUDIO AERO PRESTIGE SACD

PCM1792

SACD

AUDIO AERO PRIMA

PCM1739

VAM 1201

AUDIO AGILE JOCKER=92S CD

SM5872BS

CDM 12

AUDIO ALCHEMY ACD-1

AD1864N


AUDIO ALCHEMY DDE v1.0

SAA7323GP =96 SAA7274P

It=92s a DAC

AUDIO ALCHEMY DDE v1.2

2 x AD1862 =96 PMD100

It=92s a DAC

AUDIO ALCHEMY DDE v2.0

SAA7350GP =96 DF1700P =96 YM3623B

It=92s a DAC

AUDIO ALCHEMY DDE v3.0

2 x AD1862N =96 PMD100 =96 CS8412-CP

It=92s a DAC

AUDIO ALCHEMY D-I-T-B

2 x AD1860 =96 YM3433

It=92s a DAC

AUDIO ALCHEMY DDS III

It=92s a Transport

KSS-240A

AUDIO ALCHEMY DDS PRO

It=92s a Transport

PEA1179 Stable Platter

AUDIO ALCHEMY XDP

TDA1547 =96 SAA7350 =96 DF1700P

It=92s a DAC

AUDIO ANALOGUE MAESTRO

AD1855

KSS-210A

AUDIO ANALOGUE PAGANINI

CS4390

KSS-210A

Audio Crafters Guild X-DAC 3.0

CS4328-CP =96 AD1891JN

It=92s a DAC

AUDIO DYNAMICS CD-2000E

1 x PCM56P-J =96 SM5807EP

CDM 12

AUDIO INNOVATIONS ALTO

PCM1716


AUDIO NOTE CD-1

PCM1710

Sony / Samsung SOH-A1

AUDIO NOTE CD-2

AD1865 =96 SM5843AP

KSS-210 / SOH-A1

AUDIO NOTE CD-2.1x

AD1865N

KSS-213

AUDIO NOTE CD-3

AD1865 =96 SM5843

SOH-A1

AUDIO NOTE CD-3.1x

AD1865N

KSS-213

AUDIO NOTE CDT-ZERO

PCM1710

KSS-212A

AUDIO NOTE DAC-1

PCM63P

It=92s a DAC

AUDIO NOTE DAC-2

PCM63P-J

It=92s a DAC

AUDIO NOTE DAC-3

PCM63P-K

It=92s a DAC

AUDIO NOTE DAC-4

PCM63P-K

It=92s a DAC

AUDIO NOTE DAC-5

AD1862N-J

It=92s a DAC

AUDIO RESEARCH CD1

SAA7341

CDM 12

AUDIO RESEARCH CD2

CS4329-KP

CDM 12.4

AUDIO RESEARCH CD3

CS4396

Philips CD-Pro (VAM 1252)

AUDIO RESEARCH CD3 Mk II

CS4396

Philips CD-Pro 2 (VAM 1254)

AUDIO RESEARCH CD5

PCM1792

Philips CD-Pro 2M (VAM 1254)

AUDIO RESEARCH CD7

CS4396

Philips CD-Pro 2LF (VAM 1254)

AUDIO RESEARCH CD8

PCM1792

Philips CD-Pro 2LF (VAM 1254)

AUDIO RESEARCH CDT1

It=92s a Transport

CDM 12.1

AUDIO RESEARCH DAC1-20

UltraAnalog D20400A =96 SM5803APT

It=92s a DAC

AUDIO RESEARCH DAC2

UltraAnalog D20400A =96 NPC filter

It=92s a DAC

AUDIO RESEARCH DAC3

CS4328-KP =96 CS8412

It=92s a DAC

AUDIO RESEARCH DAC7

PCM1792 =96 PCM2707

It=92s a DAC

AUDIO SYNTHESIS DA-X

1 x D20400A / 2x PCM63P - SM5803APT

It=92s a DAC

AUDIO SYNTHESIS DAX-2

2 x UA D20400A =96 SM5842AP / PMD100

It=92s a DAC

AUDIO SYNTHESIS DAX-Decade

2 x UA D20400A =96 PMD100 - CS8412-CP

It=92s a DAC

AUDIOLAB 8000 CD

CS4329

CDM 12.4

AUDIOLAB 8000 CDM

It=92s a Transport

CDM-9 Pro

AUDIOLAB 8000 CDM II

It=92s a Transport

Philips CD-Pro (VAM 1252)

AUDIOLAB 8000 DAC

TDA1547 =96 SAA7350 =96 SM5843AP

It=92s a DAC

AUDIOLABOR 531

PCM1702

CDM-1 Mk II

AUDIOMECA DAMNATION

It=92s a Transport

CDM 12

AUDIOMECA ELIXIR

SAA7321GP =96 CS8412-CP

It=92s a DAC

AUDIOMECA MEPHISTO

It=92s a Transport

CDM-9/44 / CDM-9 Pro

AUDIOMECA OBSESSION

TDA1305T

CEC-Sanyo SF-P1

AUDIONET ART V2

AKM4395 =96 CS8420

CDM 12.1

AUDIONET ART G2

2 x AD1955 =96 SRC4192

VAM 1202

AURA CD-50

SAA7321GP

CDM-9

AURA CD-100

TDA1305T =96 SAA7345


AUREX XR-V9R

TD6709N


AUREX XR-Z90

CX890

Toshiba OPH-31

AVI SC2000MC

PCM63P =96 DF1700 =96 SAA7310

CDM-9/44 / CDM 12.1

AYON CD-1

CS4398

KSS-213Q

AYON CD-3

CS4398

KSS-213Q

AYRE CX-7

PCM1738 =96 DF1706

DVD-ROM DVS DSL-710A

AYRE D-1

4 x PCM1704 =96 DF1704

DVD

Top

Balanced Audio Tech. VK-D5

4 x PCM63P-K =96 PMD100

CDM 12

Bang & Olufsen Beogram CDX

2 x TDA1540P =96 SAA7030

CDM-1

Bang & Olufsen Beogram CDX2

TDA1541A =96 SAA7220P/B

CDM-2/10

Bang & Olufsen Beogram CD50

PCM53JP-V =96 YM2201F

87-046-260-010

Bang & Olufsen Beogram CD3300

TDA1541

CDM-2/10

Bang & Olufsen Beogram CD5500

TDA1541A =96 SAA7220P/B

CDM-4/11

BEL CANTO CD1

PCM1792

Philips

BEL CANTO DAC 3

PCM1792

It=92s a DAC

BENCHMARK DAC 1

AD1853

It=92s a DAC

BERENDSEN CDP I

CS4390


BERENDSEN CDP II

CS4327


BESTAR CD 900

YM3020 =96 YM3805

Hitachi HOP-M3

BETA LASER ADD 200

2 x TDA1540D =96 SAA7030

HLPL 030010 (Toshiba OPH-31)

BLAUPUNKT CP-2650

PCM54HP =96 YM2601

MLP-3C

BLAUPUNKT CP-2790

LC7881 =96 CXD1135QZ

KSS-210A

BLAUPUNKT CP-2800

PCM53JG-V =96 TM5001 (HD61902H)

Hitachi (DA-1000)

BLAUPUNKT CP-2850

TDA1541 =96 SAA7220P/A

CDM-2/10 / CDM-4/11

BLAUPUNKT CP-2890 Artech

2 x PCM56P =96 SM5807BP

KSS-150A

BLAUPUNKT CP-2950 Artech

PCM54HP =96 YM2601

MLP-3C

BLAUPUNKT CP-2990 Artech

2 x PCM56P-S =96 CXD1088

KSS-152A

BOW TECHNOLOGIES Wizard

TDA1305

CDM 12 Pro

BOW TECHNOLOGIES ZZ-Eight

4 x PCM1702-K =96 PMD100

CDM 12 Pro

BRANDT DAD 001

Hitachi HA16633P / PCM53JG-V

Hitachi (DA-1000)

BRAUN CD2/3

2 x PCM56P-J =96 CXD1135QZ

KSS-152A

BRAUN CD3

2 x CX20152 =96 CX23034

KSS-121A / KSS-123A

BRAUN CD4

2 x PCM56P-J =96 YM3414

KSS-123A

BRAUN CD4/2

2 x PCM61P =96 YM3434

KSS-152A

BROADCAST ENGINEERS D2A

CS4328-KP =96 CS8412-CP

It=92s a DAC

BRYSTON BDA-1

2 x CS4398

It=92s a DAC

BURMESTER 001

4 x PCM1704

Philips CD-Pro (VAM 1252)

BURMESTER 006

2 x PCM1704

Philips VAM 1250

BURMESTER 979

It=92s a Transport

CDM-9 Pro

Top

California Audio Labs Alpha

CS4328-KP =96 CS8412-CP

It=92s a DAC

California Audio Labs Aria Mk III

2 x PCM58P-K

SOAD70A

California Audio Labs CL10

PCM1702 + HDCD


California Audio Labs CL15

PCM1702 + HDCD


California Audio Labs Delta

It=92s a Transport

Panasonic RAE0113Z

California Audio Labs DX-1

MN66271

Panasonic RAE0113Z

California Audio Labs Gamma

PCM1710U =96 CS8412-CP

It=92s a DAC

California Audio Labs Icon

2 x PCM61P =96 SM5813AP

SOAD70A

California Audio Labs Icon Mk II

2 x PCM1702 =96 PMD100

Panasonic RAE0113Z

California Audio Labs Sigma

CS4328 =96 CS8412-CP

It=92s a DAC

California Audio Labs Sigma II

CS4328-KP =96 CS8412-CP

It=92s a DAC

California Audio Labs Tempest

2 x TDA1540 =96 SAA7030

CDM-2

California Audio Labs Tempest II

TDA1541 =96 SAA7220P/A

CDM-4/11

CAMBRIDGE AUDIO azur340c

CS4338


CAMBRIDGE AUDIO azur540c

1 x Wolfson WM8716

Sony KSS-213

CAMBRIDGE AUDIO azur540c v2

1 x Wolfson WM8740

Sanyo SF-P101N

CAMBRIDGE AUDIO azur550c

1 x Wolfson WM8740

Sanyo SF-P101N

CAMBRIDGE AUDIO azur640c

1 x Wolfson WM8740

Sony KSS-213C

CAMBRIDGE AUDIO azur640c v2

2 x Wolfson WM8740

Sanyo SF-P101N

CAMBRIDGE AUDIO azur650c

2 x Wolfson WM8740

Sanyo SF-P101N

CAMBRIDGE AUDIO azur740c

2 x Wolfson WM8740

Sanyo SF-P101N

CAMBRIDGE AUDIO azur840c

2 x AD1955

Sanyo SF-P101N

CAMBRIDGE AUDIO CD1

6 x TDA1540

CDM-1

CAMBRIDGE AUDIO CD2

4 x TDA1541 =96 SAA7220

CDM-2/10

CAMBRIDGE AUDIO CD3

4 x TDA1541A =96 SAA7220P/B

CDM-1 Mk II

CAMBRIDGE AUDIO CD3M

It=92s a Transport

CDM-1 Mk II

CAMBRIDGE AUDIO CD4

TDA1305

Sanyo SF-91

CAMBRIDGE AUDIO CD4SE

CS4327KS

CDM 12

CAMBRIDGE AUDIO CD6

2 x TDA1305T

Sanyo SF-91

CAMBRIDGE AUDIO D300SE

CS4338

Sony

CAMBRIDGE AUDIO D500

CS4327

KSS-213

CAMBRIDGE AUDIO D500SE

CS4391

KSS-213

Cambridge Audio DAC 3

2 x TDA1305T

It=92s a DAC

Cambridge Audio DAC 3 D/A

4 x TDA1541A-S1

It=92s a DAC

Cambridge Audio DACMAGIC 1

2 x TDA1305

It=92s a DAC

Cambridge Audio DACMAGIC 2

2 x TDA1305

It=92s a DAC

Cambridge Audio DISCMAGIC 1

It=92s a Transport =96 CXD1167

Sanyo SF-91

CAMBRIDGE AUDIO S700

SAA7350

It=92s a DAC

CARAT C57

PCM1732U

VAM 1202

CARAT C57 Mk2

PCM1796


CARVER DTL-50

PCM54HP =96 YM2601

MLP-3C

CARVER DTL-100

YM4006 =96 YM2201F-K

MLP-2C

CARVER SD/A 360

SAA7350 =96 YM7121C


CARVER SD/A 450

MN6474


CARVER TL-3100

LC7881-C


CARY AUDIO DESIGN CAD-855

TDA1541A =96 SAA7220P/B

CDM-4/19

CARY AUDIO DESIGN CD-300

2 x PCM63P-K =96 PMD100

Pioneer Stable Platter PEA1030

CARY AUDIO DESIGN CD-301

SM5872


CARY AUDIO DESIGN CD-303

2 x PCM1704U =96 PMD100

VAM 1202/12

CARY AUDIO DESIGN CD 303/200

2 x PCM1704U-K =96 PMD100

VAM 1202

CARY AUDIO DESIGN CD 303/300

2 x PCM1792U

DVD-ROM DVS DSL-710ALT

CARY AUDIO DESIGN CD 306

4 x PCM1794U

SCD-1

CARY AUDIO DESIGN CD-308

PCM1704U + HDCD

CDM 12

CARY AUDIO DESIGN CDP 1

2 x PCM1792

DVD-ROM DVS DSL-710ALT

CASEA CEPHEUS

CS43122 =96 CS8416

It=92s a DAC

CASEA CORONA

CS4390-KP =96 CS8412

It=92s a DAC

CAYIN CD-50T

PCM1732

KSS-213Q

CAYIN CDT-15A

PCM1732

Philips CDM 12.10

CAYIN CDT-17A

2 x PCM1792

Philips VAM 1206

CAYIN CDT-23

PCM1792

KSS-213

CAYIN VENUS CD-10i

PCM1792


C.E.C. 530CDII

Y3015


C.E.C. 540CD / 640CD

LC7880 ?

Sanyo SF-P1

C.E.C. 630CD

PCM56P =96 YM3815

Sanyo SF-86

C.E.C. 680CD

LC7881

Sanyo SF-P1

C.E.C. 780CD

LC7881 =96 YM7121B (filter)

Sanyo SF-P1 / SF-90

C.E.C. 880CD

LC7881 =96 YM7121B (filter)

Sanyo SF-P1 / SF-90

CEC CD2100

TDA1305T

CEC-Sanyo SF-P1 / SF-90

CEC CD3100

TDA1305T / PCM67U

CEC-Sanyo SF-P1 / SF-90

CEC CD3300

PCM1738

CEC-Sanyo SF-P101N

CEC CD3300R

PCM1796

CEC-Sanyo SF-P101N

CEC CD5300

2 x PCM1796

CEC-Sanyo SF-P101N

CEC DA53

2 x PCM1796 + PCM2906

It=92s a DAC

CEC DX1N

2 x PCM1792

It=92s a DAC

CEC DX71 Mk II

2 x SM5865CM

It=92s a DAC

CEC TL0

It=92s a Transport

CEC-Sanyo SF-90

CEC TL1

It=92s a Transport

CEC-Sanyo SF-90

CEC TL2

It=92s a Transport

CEC-Sanyo SF-90

CEC TL51XR

2 x PCM1796

CEC-Sanyo SF-P101N

CEC TL51XZ

SM5865CM

CEC-Sanyo SF-P101N

CEC TL51Z

4 x PCM1704 =96 DF1706

CEC-Sanyo SF-P1

CEC TL51Z Mk II

SM5865CM

CEC-Sanyo SF-P101N

CEC TL53Z

2 x PCM1792


CEC TL5100Z

2 x PCM1702 =96 SM5843AP

CEC-Sanyo SF-P1

CLAIRTONE MODEL 2704

2 x TDA1540D =96 SAA7030

HLPL 030010 (Toshiba OPH-31)

CLASSE AUDIO CDP-1

UltraAnalog D20400 =96 PMD100

CDM 12.4

CLASSE AUDIO CDP-1.5

2 x PCM1704

CEC-Sanyo SF-P

CLASSE AUDIO CDP.3

2 x PCM1702 =96 PMD100

CEC-Sanyo SF-P1

CLASSE AUDIO CDP.5

PCM1702

CDM 12.4

CLASSE AUDIO CDP-10

2 x PCM1738

Philips VAE 1250

CLASSE AUDIO CDP-100

2 x PCM1738 =96 PMD200

Philips VAE 1250 Pro

CLASSE AUDIO CDP-102

1 x CS4398

DVD-ROM TEAC

CLASSE AUDIO CDP-202

2 x PCM1792

DVD-ROM TEAC

CLASSE AUDIO CDP-300

3 x CS4398

DVD-ROM TEAC

CLASSE AUDIO CDP-502

3 x PCM1792

DVD

CLASSE AUDIO CDT-1

It=92s a Transport

CDM 12.4

CLASSE AUDIO DAC-1

2 x UltraAnalog D20400A =96 PMD100

It=92s a DAC

COMBAK REIMYO DAP-777

JVC =96 JCE4315 =96 K2

It=92s a DAC

CONDOR CD950

YM3020


CONSONANCE CD 120

CS4396 / TDA1543

KSS-213

CONSONANCE Droplet CDP5.0

CS4398

KSS-213 / CDM 12

Continental Edison DAD 9370

Hitachi HA16633P / PCM53JG-V

Hitachi (DA-1000)

COPLAND CDA 266

2 x PCM63P =96 PMD100

KSS-240A

COPLAND CDA 277

2 x PCM63P =96 PMD100

VRDS CMK-4 =96 KSS-240A

COPLAND CDA 288

4 x PCM63P-K =96 PMD100

VRDS CMK-4 =96 KSS-240A

COPLAND CDA 289

4 x PCM63P =96 PMD100

KSS-240A

COPLAND CDA 823

AD1853 =96 AD1896A

CD-ROM

COUNTERPOINT DA-10E-AD

2 x AD1862N =96 DF1700P =96 CS8412-CP

It=92s a DAC

COUNTERPOINT DA-10E-BB

PCM69P

It=92s a DAC

COUNTERPOINT DA-10E-CS

CS4328

It=92s a DAC

COUNTERPOINT DA-10E-UA

UltraAnalog D20400

It=92s a DAC

COUNTERPOINT DA-11

It=92s a Transport

CDM 12

CREEK CD42 Mk 2

CS4328


CREEK CD43

CS4390

CDM 14 Sony

CREEK CD43 Mk 2

CS4396

CDM 12

CREEK CD50

CS4396

CDM 12

CREEK CD50 Mk 2

CS4396

DVD-ROM DVS DSL-710A

CREEK CD53

CS4396

CDM 12

CREEK CD60

TDA1541A-S1 =96 SAA7220P/B

CDM-4/14

CREEK DAC 60

2 x PCM63P-K =96 DF1700P =96 YM3623B

It=92s a DAC

CREEK DESTINY

CS4396


CREEK EVO CDP

PCM1738

Philips VAM 1201

CREEK EVOLUTION 2

PCM1796


CROWN AVC-9500

AD1864


CROWN CD2111R

LC7881


CROWN CD-K27R

LC7881 =96 CXD1130Q

KSS-210A

Top

DBX DX 5

2 x PCM56P


DBX DX 900

2 x PCM56P-S =96 SM5804B

KSS-152A

DENON CDR-1000

AD1855

Writer

DENON DA-500

2 x PCM1702-J =96 SM5845AF =96 YM3623B

It=92s a DAC

DENON DA-S1

4 x PCM1702-K =96 SM5843AP

It=92s a DAC

DENON DP-S1

It=92s a Transport

KSS-151A

DENON DAP-2500A

2 x PCM61P =96 SM5813AP =96 YM3623B

It=92s a DAC

DENON DAP-5500

4 x PCM56P-K =96 SM5804D

It=92s a DAC

DENON DCD-7.5

2 x PCM56P-L =96 SM5840CP

KSS-240A

DENON DCD-73M

1 x PCM56P

KSS-150A

DENON DCD-201SA

2 x PCM1702-L


DENON DCD-210

2 x PCM56P-L =96 CXD2551P

KSS-210A

DENON DCD-300

PCM54HP

KSS-123 / KSS-152

DENON DCD-335

PCM1716E

KSS-210A

DENON DCD-425

PCM1712

KSS-210A

DENON DCD-435

PCM1716E

KSS-213

DENON DCD-460

2 x PCM56P-L

KSS-210A

DENON DCD-480

2 x PCM61P-L =96 SM5840AP

KSS-240A

DENON DCD-485

PCM1735

KSS-213

DENON DCD-500

PCM54HP

KSS-123 / KSS-152

DENON DCD-500AE

PCM1791

KSS-213C

DENON DCD-520

2 x PCM56P =96 SM5807FP

KSS-150A

DENON DCD-560

2 x PCM61P-L

KSS-210A

DENON DCD-580

PCM67P

KSS-240A

DENON DCD-590

2 x PCM61P-L =96 SM5840BP

KSS-240A

DENON DCD-595

2 x PCM61P-L =96 SM5841BP

KSS-240A

DENON DCD-600

1 x PCM56P

KSS-152A

DENON DCD-610

1 x PCM56P-L

KSS-210A

DENON DCD-615

2 x PCM61P-L =96 SM5841BP

KSS-240A

DENON DCD-620

2 x PCM56P-L / PCM61P-L =96 SM5818AP

KSS-150A / KSS-210A

DENON DCD-625

2 x PCM61P-L =96 SM5841

KSS-240A

DENON DCD-635

2 x PCM61P-L =96 SM5841BP

KSS-213B

DENON DCD-650F

PCM1700P


DENON DCD-655

2 x PCM1702

KSS-213

DENON DCD-660

2 x PCM61P =96 CXD2551P

KSS-210A

DENON DCD-685

2 x PCM1702

KSS-213

DENON DCD-690

2 x PCM61P-L =96 SM5840BP

KSS-240A

DENON DCD-695

2 x PCM61P-L =96 SM5841BP

KSS-240A

DENON DCD-700

PCM54HP

KSS-123 / KSS-152

DENON DCD-700AE

PCM1791

Sanyo SF-P101N

DENON DCD-715

2 x PCM61P-L =96 SM5841BP

KSS-240A

DENON DCD-725

2 x PCM61P-L

KSS-240A

DENON DCD-735

2 x PCM61P-L =96 SM5845AF

KSS-213B

DENON DCD-755AR

2 x PCM1702 =96 SM5845AF

KSS-213C

DENON DCD-755 II

2 x PCM1702

KSS-213C

DENON DCD-770

2 x PCM61P-L =96 SM5840

KSS-240A

DENON DCD-800

1 x PCM56P =96 SM5807CP

KSS-152A

DENON DCD-810

2 x PCM56P =96 SM5807

KSS-150A

DENON DCD-815

2 x PCM61P

KSS-213

DENON DCD-820

2 x PCM56P

KSS-150A

DENON DCD-825

2 x PCM61P =96 SM5841BP

KSS-240A

DENON DCD-830

2 x PCM56P

KSS-150A

DENON DCD-835

2 x PCM61P-L

Sharp H8147AF

DENON DCD-860

2 x PCM61P

KSS-210A

DENON DCD-890

2 x PCM61P

KSS-240A

DENON DCD-895

2 x PCM61P =96 SM5841AP

KSS-240A

DENON DCD-900

1 x PCM56P-J

KSS-123A

DENON DCD-910

2 x PCM56P =96 SM5807FP / PD0036

KSS-150A

DENON DCD-920

2 x PCM61P =96 SM5818AP

KSS-210A

DENON DCD-960

2 x PCM61P =96 SM5840AP

KSS-150A

DENON DCD-970

2 x PCM61P-J

KSS-240A

DENON DCD-980

2 x PCM61P

KSS-240A

DENON DCD-1000

1 x PCM53JP-V =96 CX23035

KSS-121A / KSS-123A

DENON DCD-1015

2 x PCM61P =96 SM5845AF

KSS-240A

DENON DCD-1100

PCM53JP-V / PCM54HP =96 CX23035

KSS-121A / KSS-123A

DENON DCD-1130

2 x PCM61P =96 SM5840

KSS-150A

DENON DCD-1290

2 x AD1861N-D / PCM61P =96 SM5840AP

KSS-240A

DENON DCD-1300

PCM54HP-J =96 SM5806P

KSS-123A

DENON DCD-1400

2 x PCM56P-J

KSS-152A

DENON DCD-1420

2 x PCM54HP =96 SM5813AP

KSS-150A / KSS-151A

DENON DCD-1450AR

2 x PCM1702-L =96 SM5845AF

Sharp H8147AF

DENON DCD-1460

2 x PCM61P =96 SM5818AP

KSS-150A

DENON DCD-1500

2 x PCM54HP-K =96 2 x SM5801P

KSS-121A / KSS-123A

DENON DCD-1500 Mk II

2 x PCM56P-J =96 SM5807BP

KSS-151A

DENON DCD-1500AE

PCM1791

SACD

DENON DCD-1510

2 x PCM54HP =96 SM5813AP

KSS-150A

DENON DCD-1515AL

2 x PCM61P =96 SM5845AF

KSS-240A

DENON DCD-1520

2 x PCM64P =96 SM5813AP

KSS-151A

DENON DCD-1530

2 x PCM61P =96 SM5818AP

KSS-150A

DENON DCD-1550AR

2 x PCM61P =96 SM5845AF

Sharp H8147AF

DENON DCD-1560

2 x PCM1701P =96 SM5813AP

KSS-151A

DENON DCD-1600

2 x PCM56P-J

KSS-151A

DENON DCD-1610

2 x PCM64P =96 SM5803

KSS-151A

DENON DCD-1630

2 x PCM1701P =96 SM5813AP

KSS-150A

DENON DCD-1650G

4 x AD1862N-Z - SM5840AP - SM5828P

KSS-150A / KSS-210A

DENON DCD-1650GL

4 x AD1862N-Z - SM5841AP - SM5828BP

KSS-150A / KSS-210A

DENON DCD-1650AR

4 x PCM1702 =96 SM5845AF

Sharp H8147AF

DENON DCD-1650SR

4 x PCM1704U


DENON DCD-1650AE

PCM1790 =96 SACD

SACD

DENON DCD-1700

2 x PCM56P-K =96 SM5804D

KSS-123A

DENON DCD-1800

PCM53

Toshiba 4990076001 / 4998008000

DENON DCD-1800R

PCM53JP-V

Toshiba 4990039006 / 4990074003

DENON DCD-1880AR

2 x PCM61P =96 SM5845AF

Sharp H8147AF

DENON DCD-2000

Hitachi HA16633P / PCM53JG-V

Hitachi (DA-1000)

DENON DCD-2000AE

PCM1790 =96 SACD

SACD

DENON DCD-2060

2 x AD1861N-D =96 SM5840AP

KSS-240A

DENON DCD-2560

4 x AD1862N-D - SM5840AP - SM5828P

KSS-151A

DENON DCD-2560GL

4 x AD1862N-Z - SM5841AP - SM5828BP

KSS-150A / KSS-210A

DENON DCD-2700

4 x PCM1702-J =96 SM5845AF

KSS-240A

DENON DCD-2800AL

4 x PCM1702 =96 SM5845AF

Sharp H8147AF

DENON DCD-2880AR

4 x PCM1702 =96 SM5845AF

Sharp H8147AF

DENON DCD-3000

4 x PCM1702-J =96 SM5845AF

KSS-240A

DENON DCD-3300

2 x PCM56P-K =96 SM5804D

KSS-123A

DENON DCD-3500G

2 x PCM64P =96 SM5803AP

KSS-151A

DENON DCD-3500GL

4 x PCM58P-K =96 SM5803AP

KSS-151A

DENON DCD-3500RG

4 x PCM58P-K =96 SM5803AP

KSS-151A

DENON DCD-3520

2 x PCM64P =96 SM5803AP

KSS-151A

DENON DCD-3560

4 x PCM58P-K =96 SM5803AP

KSS-151A

DENON DCD-F100

SM5871AN

KSS-213C

DENON DCD-S1

4 x PCM1702-K

KSS-151A

DENON DCD-S10

4 x PCM1702-J =96 SM5845AF

KSS-240A

DENON DCD-S10 Mk II

4 x PCM1702-J

Sharp H8147AF

DENON DCD-S10 Mk III

4 x PCM1704 + HDCD

Sharp H8147AF

DENON DCD-SA1

2 x PCM1792 =96 SACD

SACD

DENON DCM-270

PCM1716E

KSS-213C

DENON DCM-280

PCM1748


DENON RCD-100

PCM1710


DENON UCD-F1

2 x PCM61

KSS-240A

DENON UCD-F10

2 x PCM61

KSS-240A

DIATONE DP-1000H

2 x PCM56P-S

MLP-4

DIORA CD-502

TDA1543

CDM-4

DIORA CD-504

TDA1311

CDM 12.1

DIORA CD-704

TDA1301 =96 SAA7345

CDM 12.1

DPA BIGGER BIT

TDA1547 (DAC7)

It=92s a DAC

DPA ENLIGHTENMENT DRIVE

It=92s a Transport

CDM12.1

DPA LITTLE BIT

SAA7350 =96 YM3414 =96 YM3623B

It=92s a DAC

DPA PDM 1

SAA7320

It=92s a DAC

DPA PDM 1.2

SAA7322

It=92s a DAC

DPA PDM 1.3

SAA7350

It=92s a DAC

DPA PDM 2

2 x TDA1547 =96 SAA7350

It=92s a DAC

DPA T1

It=92s a Transport

CDM-4/19

DUAL CD20

CX20017

KSS-123A

DUAL CD40

TD6705AP =96 TC9179F


DUAL CD41

CX20017

KSS-123A

DUAL CD100

2 x AD1861N / PCM61P =96 YM3433

KSS-210A

DUAL CD115

MN6471M / MN6474A

KSS-210A

DUAL CD120

Hitachi HA16633P / PCM53JG-V

Hitachi (DA-1000)

DUAL CD130

PCM53JG-V =96 TM5001 (HD61902H)

Hitachi (DA-1000)

DUAL CD135

MN6471M / MN6474A

KSS-210A

DUAL CD1006

LC7881 =96 YM7121

KSS-210A

DUAL CD1016

MN6474

Hitachi HOP-M3

DUAL CD1025

CX20017

KSS-123A ?

DUAL CD1045

2 x AD1856N

KSS-150A

DUAL CD1050

2 x AD1856N

KSS-150A

DUAL CD1080

MN6471 / MN6474

KSS-150A / KSS-210A

DUAL CD3600

YM3020

MLP-9

DUAL CD5070

1 x PCM56P-J =96 CXD1130Q

Sanyo SF-88

DUAL CD5150

TDA1541A =96 SAA7220P/B

CDM-4/19

DUGOOD BOUNDLESS

4 x PCM1702 =96 DF1704

VAM 1201

DUGOOD DAC-3

AK4394VF

It=92s a DAC

DUGOOD GLORY YEAR

TDA1541A =96 SAA7220

VAM 1201

DUGOOD NEW CENTURY

AK4394

Philips

DZU CD482

TDA1543 =96 SAA7220

CDM-4/19

Top

EAD CD-1000

2 x PCM63P-K =96 DF1700P

Pioneer Stable Platter PEA1030

EAD CD-1000 SERIES III

2 x PCM63P-K =96 PMD100

Pioneer Stable Platter PEA1030

EAD DSP-1000 SERIES II

2 x PCM63P-K =96 DF1700P =96 CS8412-CP

It=92s a DAC

EAD DSP-1000 SERIES III

2 x PCM63P-K =96 PMD100

It=92s a DAC

EAD DSP-7000

2 x AD1862N-J =96 SM5813AP

It=92s a DAC

EAD DSP-7000 SERIES II

2 x PCM63P-K =96 DF1700P =96 CS8412-CP

It=92s a DAC

EAD DSP-7000 SERIES III

2 x PCM63P-K =96 PMD100

It=92s a DAC

EAD DSP-9000 PRO

2 x PCM63P-K =96 PMD100 =96 CS8412-CP

It=92s a DAC

EAD T-1000

It=92s a Transport

Pioneer Stable Platter PEA1030

EAD T-7000

It=92s a Transport

Sony KHS-130A

EASTSOUND CD-E3

CS4390

CDM 12

EASTSOUND CD-E5

CS4390-KP

VAM 1202

ELECTROCOMPANIET ECC-1

CS4398

Philips

ELECTROCOMPANIET ECD-1

CS4397 =96 CS8420

It=92s a DAC

EMT 981 PROFESSIONAL

TDA1541A-S1 (Single Crown)

CDM-1 Mk II

EMT 982 PROFESSIONAL

TDA1547 (DAC7)

CDM-9 Pro

ENSEMBLE DICHRONO DRIVE

It=92s a Transport

TEAC VRDS CMK-3

ENSEMBLE DICHRONO HI-DAC

CS4397

It=92s a DAC

ENSEMBLE DIRONDO DRIVE

It=92s a Transport

Philips CD-Pro 2 (VAM 1254)

Entech Number Cruncher 203.2

CS4329-KP =96 CS8412-CP

It=92s a DAC

Entech Number Cruncher 205.2

CS4329-KP =96 CS8412-KP

It=92s a DAC

ESTONIA 001

2 x TDA1540P =96 SAA7030

CDM-2

EXPOSURE CD Player

TDA1545A

CDM 12.4

EXPOSURE CD 2010

PCM1716

KSS-213

EXPOSURE CD 3010

2 x PCM1704

KSS-213

EXPOSURE CD XXII

2 x PCM1704

Sony

EZO FOG STAGE3

AD1853


Top

FISHER AD-800

CX20017 / PCM51JG-V

4 180T00271 (Toshiba OPH-31)

FISHER AD-834

PCM53JG-V =96 YM201F-K


FISHER AD-840

PCM53JP-V =96 YM2201F =96 YM3511F

MLP-1C

FISHER AD-844

PCM53JP-V

MLP-1C

FISHER AD-850

2 x TDA1540D =96 SAA7030

Same as Toshiba OPH-32

FISHER AD-935

LC7881

Sanyo SF-P1

FISHER AD-9020

PCM67P =96 SM5840

KSS-210A

FISHER AD-9030

2 x PCM56P =96 LC7860J =96 PD0050

Sanyo SF-88

FISHER AD-9060

PCM67P =96 SM5840CP

KSS-210A

FISHER AD-M82

LC7880

Sanyo SF-88

FISHER AD-M700

2 x TDA1540D =96 SAA7030

Same as Toshiba OPH-32

FISHER AD-Z1

2 x PCM58P =96 YM3434

Sanyo SF-P1

FISHER DAC-205

PCM56P


FISHER FCD-2600

PCM54HP


FISHER FCD-3500

PCM54HP


Forsell Air Reference Air Bearing

It=92s a Transport

CDM-9 Pro

FUNAI CD 6600

YM3020


Top

GAMUT CD1

CS4390


GAMUT CD3

PCM1792


GRUNDIG CD1 FineArts

SAA7341GP

CDM 12.1

GRUNDIG CD3 FineArts

TDA1547 =96 SAA7350 =96 SM5840AS

CDM 12.1

GRUNDIG CD 23

TDA1549 =96 SAA7345GP

CDM 12.1

GRUNDIG CD 30

2 x TDA1540D =96 M4551 (SAA7030)

CDM-0

GRUNDIG CD 35

2 x TDA1540P =96 SAA7030

CDM-2

GRUNDIG CD 103

LC7881

Sanyo SF-90

GRUNDIG CD 303

TDA1543

CDM-4/19

GRUNDIG CD 360

LC78816 M =96 YM7121C (filter)

Hitachi HOP-M3

GRUNDIG CD 435

LC78816 M =96 YM7121C (filter)

Hitachi HOP-M3

GRUNDIG CD 660

LC7881

Sanyo SF-90

GRUNDIG CD-903 FineArts

TDA1541A =96 SAA7220P/B

CDM-2 / CDM-4

GRUNDIG CD-904 FineArts

SAA7350 =96 YM3433

KSS-210A

GRUNDIG CD-905 FineArts

JVC =96 JCE4302A

JVC OPTIMA-5S

GRUNDIG CD 1000 FineArts

2 x DAC(TDA1547) =96 TDA1307

CDM 12.1

GRUNDIG CD 5200

TDA1543

CDM-4/19

GRUNDIG CD 5500

TDA1543

CDM-4/19

GRUNDIG CD 7500

2 x TDA1540D =96 SAA7030

CDM-0

GRUNDIG CD 7550

2 x TDA1540P =96 SAA7030

CDM-1

GRUNDIG CD 8100

TDA1541

CDM-2/29 / CDM-4/11

GRUNDIG CD 8150

TDA1543

CDM-4/19

GRUNDIG CD 8200

TDA1541

CDM-2/10

GRUNDIG CD 8400

TDA1541 =96 SAA7220P/A

CDM-2/10

GRUNDIG CD 8400 Mk II

TDA1541A =96 SAA7220P/B

CDM-2 / CDM-4

GRUNDIG CD 9000 FineArts

TDA1541A

CDM-2/29 / CDM-4/11

GRUNDIG CD 9009 FineArts

2 x TDA1541A-S1 =96 CXD1244

CDM-1 Mk II

Top

HALCRO EC800

PCM1794

DVD-ROM

HARMAN KARDON HD100

YM3020 =96 M50421P

MLP-7

HARMAN KARDON HD200

YM3020 =96 M50422P

Hitachi HOP-M14

HARMAN KARDON HD300

1 x PCM56P =96 YM3815

MLP-3C

HARMAN KARDON HD500

PCM53JP-V =96 YM2201F-K

KSS-121B / KSS-123A

HARMAN KARDON HD710

MN6474

Samsung SOH-A1

HARMAN KARDON HD720

PCM1710U =96 LC78621

Sanyo SF-P101

HARMAN KARDON HD730

SAA7350 =96 YM3433

KSS-240A

HARMAN KARDON HD740

2 x PCM1702U =96 SM5843AP

Sanyo SF-P101

HARMAN KARDON HD750

PCM1732U

KSS-213C

HARMAN KARDON HD755

PCM1732

KSS-213

HARMAN KARDON HD760

4 x PCM1702-K =96 PMD100

Sanyo

HARMAN KARDON HD800

2 x PCM56P =96 SM5807EP =96 M50422P

Hitachi HOP-M14

HARMAN KARDON HD970

AD1955

DVD-ROM DVS DSL-710A

HARMAN KARDON HD7225

MN6474

KSS-150A / KSS-210A

HARMAN KARDON HD7300

1 x PCM61P =96 M50423FP

KSS-150A

HARMAN KARDON HD7325

MN6474

KSS-150A / KSS-210A

HARMAN KARDON HD7400

1 x PCM61P =96 M50423FP

KSS-150A

HARMAN KARDON HD7425

2 x PCM61P

KSS-210A

HARMAN KARDON HD7450

MN6471M =96 M50423FP

KSS-210A

HARMAN KARDON HD7500

MN6471M =96 M50423FP

KSS-150A

HARMAN KARDON HD7525

4 x PCM61P

KSS-210A

HARMAN KARDON HD7600

MN6471M =96 M50423FP

KSS-150A

HARMAN KARDON HD7600 Mk II

MN6471M =96 M50423FP

KSS-210A

HARMAN KARDON HD7625

4 x PCM61P =96 SM5840

KSS-210A

HARMAN KARDON HD7725

4 x PCM61P-K =96 SM5840CP

KSS-210A

HARMAN KARDON FL8300

SM5871AS =96 CXD2507Q

KSS-210A

HARMAN KARDON FL8350

TDA1305


HARMAN KARDON FL8370

PCM1732


HARMAN KARDON FL8380

PCM1732


HARMAN KARDON FL8400

SM5871AN =96 CXD1167Q

KSS-210A

HARMAN KARDON FL8450

SAA7350GP =96 YM3433

KSS-210A

HARMAN KARDON FL8550

PCM1702


HARMAN KARDON FL8570

PCM61P


HCM ROYAL CDR3030

YM3020


HELIOS MODEL 1S

CS4328

CDM 12.4 - Pro

HELIOS MODEL 2S

CS4328

CDM 12.4 - Pro

HELIOS MODEL 3S

CS4328

CDM 12.4 - Pro

HELIOS STARGATE

CS4328

CDM 12.4 - Pro

HEYBROOK SIGNATURE

PCM67


HI-VI SOUND CD-01

2 x SM5864AP =96 SM5841CS

CDM 12

High Tech GoldLine CX904

YM3020


HITACHI DA-005

1 x PCM54HP-J =96 2 x SM5800P

Hitachi HOP-M3TR

HITACHI DA-006

Hitachi HA12096NT

Hitachi HOP-M14

HITACHI DA-007

Hitachi HA12096 =96 TM6002 (MSM6285)

Hitachi HOP-M14

HITACHI DA-009

Hitachi HA12096NT =96 MSM6285

Hitachi HOP-M14

HITACHI DA-40

1 x PCM56P-L

Hitachi HOP-M3

HITACHI DA-50

1 x PCM56P

Hitachi HOP-M3

HITACHI DA-403

2 x PCM56P-L =96 CXD1088

Hitachi HOP-M3

HITACHI DA-404D

2 x AD1860N

Hitachi HOP-M3

HITACHI DA-800

PCM53JG-V =96 TM5001 (HD61902H)

Hitachi (DA-1000)

HITACHI DA-1000

Hitachi HA16633P / PCM53JG-V

Hitachi (DA-1000)

HITACHI DA-2000

2 x PCM56P =96 YM3433

KSS-210A

HITACHI DA-6000

Hitachi HA12096NT

Hitachi HOP-M14

HONOR TCD-1

1 x AD1865N =96 SM5843AP

KSS-210A

HONOR TCD-2

2 x AD1865N =96 SM5843AP

KSS-210A

HONOR TCD-50

1 x AD1865N =96 SM5843AP

KSS-210A

Top

ICEBERG CDK900PR

LC7881

Samsung SOH-OT4 / KSS-210

INKEL CD-772

AD1852


INKEL CD-7080R

2 x PCM1702-K


INKEL TEMA CD-1

TDA1547

CDM-9 Pro

ITT HIFI 9015

CX20017 / PCM51JG-V

4 180T00271 (Toshiba OPH-31)

ITT HIFI 9515

CX20017

Same as Toshiba OPH-32

ITT HIFI 9615

CX20017

Same as Toshiba OPH-32

Top

JADIS JD-1

It=92s a Transport

CDM-9 Pro

JADIS SYMPHONIA

TDA1545A

Philips VAM 1210

JAS-AUDIO MUSIK 1.2

PCM1732

KSS-213

JAXON ACD-150

LC7880 =96 CXD1130

KSS-210 / Samsung

JOLIDA JD-100A

PCM1716E

CDM 12.1

JVC XL-E900

PCM56P

OPTIMA-3

JVC XL-V1

Hitachi HA16633P / PCM53JG-V

Hitachi (DA-1000) / EGH4021251

JVC XL-V3

PCM53JP


JVC XL-V22

PCM54

OPTIMA-2

JVC XL-V131

LC7881 =96 YM7121B (filter)

OPTIMA-5

JVC XL-V151

JVC =96 JCE4501 =96 CXD2554P (filter)

OPTIMA-5S

JVC XL-V152

JVC =96 JCE4501 =96 CXD2554P (filter)

OPTIMA-5S

JVC XL-V221

LC7881

OPTIMA-5

JVC XL-V242

JVC =96 JCE4501 =96 CXD2554P (filter)

OPTIMA-5S

JVC XL-V250

PCM56

OPTIMA-2

JVC XL-V251

JVC =96 JCE4501 =96 CXD2554P (filter)

OPTIMA-5S

JVC XL-V252

JVC =96 JCE4501 =96 CXD2554P (filter)

OPTIMA-5S

JVC XL-V261

MN35500

OPTIMA-6

JVC XL-V264

MN35500

OPTIMA-6S

JVC XL-V300

PCM53JP

E30368700

JVC XL-V311

MN6471

OPTIMA-4S

JVC XL-V450

PCM56

OPTIMA-2

JVC XL-V464

MN35500

OPTIMA-6S

JVC XL-V550

PCM54HP =96 SM5806P

OPTIMA-2

JVC XL-V1100

2 x PCM54

OPTIMA-1

JVC XL-Z232

MN35503

OPTIMA-6S

JVC XL-Z555

2 x PCM56P =96 SM5807EP =96 YM3613B

OPTIMA-4S

JVC XL-Z1010

2 x PCM56P-J =96 YM3414 =96 YM3613B

OPTIMA-4S

JVC XL-Z1011

JVC =96 JCE4302

OPTIMA-5

JVC XL-Z1050

JVC =96 JCE4501 =96 JCE4300 =96 YM3414

JVC OPTIMA-5S

Top

KAVENT CD831

PCM1732

Philips VAM 1202

KENWOOD DP-CD1

TD6709N


KENWOOD DP-3E

TC9218F


KENWOOD DP-3J

TDA1543 =96 PD0034

KSS-150A

KENWOOD DP-3R

PCM56P

Toshiba TOPH7833

KENWOOD DP-7i

=B5PD6376CX =96 PD0060


KENWOOD DP-7R

It=92s a Transport =96 CXD1125Q

KSS-152A

KENWOOD DP-28

TC9268P =96 LC78681E

Sharp H8136

KENWOOD DP-47

TD6720N =96 CXD1135QZ

KSS-152A

KENWOOD DP-57

TD6720N =96 CXD1135QZ

Toshiba TOPH7833 / KSS-152A

KENWOOD DP-87

TD6720N =96 CXD1135QZ

Toshiba TOPH7833

KENWOOD DP-235

2 x AD1856N / PCM56P =96 YM7121

Sanyo SF-90

KENWOOD DP-460

TD6709N


KENWOOD DP-492

TC9237BN =96 CXD1167Q

KSS-210A

KENWOOD DP-700

TD6705AP

Toshiba OPH-32

KENWOOD DP-730

2 x PCM56P =96 PD0050

KSS-210A

KENWOOD DP-770

CX20152 =96 CX23035


KENWOOD DP-840

TD6705AP

Toshiba TOPH7810

KENWOOD DP-850

CX20152 =96 CX23035

Toshiba TOPH7810

KENWOOD DP-860

1 x PCM56P =96 CXD1130Q

Toshiba TOPH7810 / TOPH7815

KENWOOD DP-880SG

2 x PCM56P =96 CXD1088

Toshiba TOPH7815 / TOPH7833

KENWOOD DP-990D

CX20152 =96 CX23034

Toshiba TOPH7810

KENWOOD DP-990SG

2 x PCM56P-K =96 SM5804D

Kenwood J91-0341-05 / TAOHS-

KENWOOD DP-1000

CX20152 =96 CX23035

MLP-3C

KENWOOD DP-1001

TDA1547 =96 SAA7350GP =96 SM5840CP

KSS-240A

KENWOOD DP-1060

TC9268P =96 LC78681

Sharp H8136A

KENWOOD DP-1080

LC78620E

T25-0051-05

KENWOOD DP-1100

CX20017

Toshiba OPH-32

KENWOOD DP-1100D

CX20152 =96 SM5802B

Kenwood J91-0315-05

KENWOOD DP-1100SG

2 x PCM56P-K =96 SM5804D

Kenwood J91-0341-05 / TAOHS-

KENWOOD DP-1510

2 x PCM56P-L =96 SM5807

KSS-150A / KSS-210A

KENWOOD DP-2000

CX20152 =96 CX23034

MLP-3C

KENWOOD DP-2010

2 x PCM56P-L

KSS-210A

KENWOOD DP-2030

TC9237N

KSS-210A

KENWOOD DP-2060

TC9268P

Sharp H8136

KENWOOD DP-2080

LC78620E (LC78820)

Sharp H8151AF

KENWOOD DP-3000

PCM56P-K


KENWOOD DP-3010

2 x PCM56P-L =96 PD0036

KSS-210A

KENWOOD DP-3030

1 x SM5860 =96 SM5840

KSS-210A

KENWOOD DP-3060

SM5872BS

KSS-240A

KENWOOD DP-3080

SM5864 =96 SM5841

KSS-240A / T25-0010-05

KENWOOD DP-3080 Mk II

Kenwood KAN-03 =96 CXD2507AQ

Sharp KCP1H

KENWOOD DP-3090

Kenwood KAN-03 =96 CXD2507AQ

Sharp KCP1H

KENWOOD DP-3300D

2 x PCM56P-K =96 SM5804B

Kenwood J91-0315-05

KENWOOD DP-4030

1 x SM5860 =96 SM5840

KSS-210A

KENWOOD DP-4090

Kenwood KAN-03 =96 CXD2507AQ

Sharp KCP1H

KENWOOD DP-5010

2 x PCM56P =96 SM5813AP

KSS-210A

KENWOOD DP-5020

2 x PCM1701P =96 SM5818AP

KSS-210A

KENWOOD DP-5030

CXD2552Q =96 SM5840CP =96 SM5827CP

KSS-210A

KENWOOD DP-5040

CXD2552Q

KSS-210A

KENWOOD DP-5050

SAA7350


KENWOOD DP-5060

SM5864AP =96 SM5841AP

KSS-240A

KENWOOD DP-5090

Kenwood KAN-05 =96 SM5843AS1

Sharp KCP1H

KENWOOD DP-6020

2 x PCM1701P =96 SM5818AP

KSS-150A

KENWOOD DP-7010

2 x PCM58P =96 SM5813AP

KSS-150A

KENWOOD DP-7020

2 x PCM1701P =96 SM5813AP

KSS-150A

KENWOOD DP-7030

CXD2552Q =96 SM5840CP =96 SM5827CP

KSS-210A

KENWOOD DP-7040

CXD2552Q =96 SM5840CP

KSS-210A

KENWOOD DP-7050

TDA1547 (DAC7) =96 SM5840CP

KSS-210A

KENWOOD DP-7060

TDA1547 (DAC7) =96 SM5843AP

KSS-240A

KENWOOD DP-7090

8 x PCM1702 =96 SM5843AS1

KSS-213B

KENWOOD DP-8010

2 x PCM58P =96 SM5813AP

DLBA2Z002B / J91-0377-05

KENWOOD DP-8020

2 x PCM1701P =96 SM5813AP

KSS-152 - Magnetic

KENWOOD DP-X9010

It=92s a Transport =96 CXD1125Q

DLBA2Z002B / J91-0377-05

KENWOOD DPF-1010

CXD2587Q

KSS-213C

KENWOOD DPF-1030

LC78620E

Sharp HPC1LX

KENWOOD DPF-2010

CXD2587Q

KSS-213C

KENWOOD DPF-2030

LC78620E

Sharp HPC1LX

KENWOOD DPF-3010

Kenwood KAN-03 =96 CXD2587Q

KSS-213C

KENWOOD DPF-3030

AD1855 =96 KAN06

KSS-213C

KENWOOD DPF-7002

8 x PCM1702 =96 SM5843AS1

KSS-213B

KENWOOD D-S300

Kenwood KAN-03 =96 CXD2507AQ

Sharp KCP1H

KENWOOD L-03DP

CX890

Toshiba OPH-31

KENWOOD L-1000D

2 x CX20152 =96 CXD1144

KSS-152 - Magnetic

KENWOOD L-D1

TDA1547 (DAC7)

Kenwood CDM-21

KENWOOD LVD-Z1

TDA1547 (DAC7)


Kinergetics Research KCD-20

TDA1541A-R1

CDM-2/10 / CDM-4/19

Kinergetics Research KCD-30

TDA1541A

CDM-2/10 / CDM-4

Kinergetics Research KCD-40

4 x AD1860N-K =96 CXD1144

CDM-2/10 / CDM-4/19

Kinergetics Research KCD-55 Ultra

2 x UltraAnalog D20400A

It=92s a DAC

KODAK PCD-5855

SAA7321

CDM-9

KOREA CHINA CD 022

KDA0316LN (Samsung)


KOREA HCD 630

Y3015


KRELL CD-1

CS4328-KP

CDM-1 Mk II

KRELL CD-DSP

2 x PCM61P-J + Motorola DSP

CDM-1 Mk II

KRELL CD-DSP Mk2

2 x PCM61P-K + Motorola DSP

CDM-1 Mk II

KRELL DT-10

It=92s a Transport

CDM-4/36 Pro Metallic

KRELL KAV-250cd

2 x PCM1702 =96 PMD100

C.E.C. =96 Sanyo

KRELL KAV-280cd

4 x PCM1704 =96 DF1704

VAM 1201

KRELL KAV-300cd

2 x PCM1702-K =96 PMD100

VRDS CMK-4 =96 KSS-240A

KRELL KPS 20i

4 x PCM63P-K =96 Motorola XC56002F

CDM-9 Pro ( CDM-9/60 )

KRELL KPS 25s

2 x UltraAnalog D20400A - XC56009F

JVC EXU-901A

KRELL KPS 25sc

4 x PCM1704 =96 XC56009F =96 PMD100

JVC Pro

KRELL KPS 28c

4 x PCM1704K =96 PMD100

TEAC VRDS

KRELL KPS 30i

4 x PCM63P-K =96 PMD100

CDM 12.4

KRELL MD-1

It=92s a Transport =96 SAA7210P

CDM-3

KRELL MD-2

It=92s a Transport =96 SAA7210P

CDM-1 Mk II

KRELL MD-10

It=92s a Transport =96 SAA7210P

CDM-3

KRELL MD-20

It=92s a Transport =96 SAA7210P

CDM-1 Mk II

KRELL SACD STANDARD

3 x PCM1738

Philips 5.2 SACD

KRELL SBP-16X

2 x PCM58P-K + Motorola DSP-56001

It=92s a DAC

KRELL SBP-32X

2 x PCM58P-K + 2 x Motorola XSP56001

It=92s a DAC

KRELL SBP-64X

2 x PCM64P + 4 x Motorola DSP56001

It=92s a DAC

KRELL STUDIO

2 x PCM63P-K + 2 x Motorola DSP56000

It=92s a DAC

KYOCERA DA-01

2 x TDA1540D =96 SAA7030

HLPL 030010 (Toshiba OPH-31)

KYOCERA DA-7cx

CX20152


KYOCERA DA-9cx

2 x PCM56P-S =96 SM5804B

KSS-152A / KSS-123A

KYOCERA DA-310cx

PCM54HP

KSS-152A

KYOCERA DA-410cx

CX20152


KYOCERA DA-710cx

2 x PCM56P-S =96 SM5804B

KSS-152A

KYOCERA DA-910

2 x TDA1540D =96 SAA7030

HLPL 030020

Top

LAVRY DA10

AD1955 =96 AD1896

It=92s a DAC

LECTOR CDP 3T

TDA1541A-S1 (Single Crown)

Philips CDM 12

LECTOR CDP 7T

2 x PCM63P

Philips CDM 12

LECTOR CDP 7TL

2 x PCM1704

Philips CDM 12

LECTOR DIGICODE

TDA1541A-S1 (Single Crown)

It=92s a DAC

LECTOR DIGIDRIVE

It=92s a Transport

CDM-4/19

LINDEMANN 820

PCM1792

SACD Sony KHM-230AAA

LINDEMANN 822

PCM1792

SACD Sony KHM-230AAA

LINN CD12 SONDEK

4 x PCM1702-K =96 PMD100

Philips

LINN GENKI

PCM1732U

Sanyo SF-91 / SF-P101N

LINN IKEMI

PCM1732U

Sanyo SF-91

LINN KARIK

CS4328-KS

Hitachi HOP-M3 / HOP-M3A

LINN MIMIK

CS4328

Hitachi HOP-M3 / Sanyo SF-91

LINN NUMERIK

2 x PCM63P-K =96 DF1700

It=92s a DAC

LINN NUMERIK Mk 3

2 X PCM1702-K

It=92s a DAC

LO=96D DA-403D

2 x PCM56P =96 CXD1088

Hitachi HOP-M3

LO=96D DA-404D

2 x AD1860N

Hitachi HOP-M3

LO=96D DA-505D

2 x PCM61P

KSS-150A

LO=96D DA-703D

2 x PCM56P-J + 2 x PCM56P

Hitachi HOP-M14

LO=96D DAD-003

1 x PCM54HP-J =96 2 x SM5800P

It=92s a DAC

LO=96D DAP-003

It=92s a Transport

Hitachi HOP-M14

LO=96D DAD-800

PCM53JG-V =96 TM5001 (HD61902H)

Hitachi (DA-1000)

LO=96D DAD-1000

Hitachi HA16633P / PCM53JG-V

Hitachi (DA-1000)

LO=96D DAD-3000

PCM53JP-V =96 TM5001 (HD61902H)

Hitachi (DA-1000)

LO=96D DAD-5500

PCM54HP

Hitachi HOP-M14

LOEWE CD9000

2 x TDA1540D =96 SAA7030

CDM-0

LUXMAN D-01

1 x PCM56P-J =96 CXD1135QZ

KSS-152A / DLBA2Z

LUXMAN D-03

CX20017

Toshiba OPH-32

LUXMAN D-007

It=92s a Transport =96 CXD1135QZ

KSS-152A / DLBA2Z

LUXMAN D-90

TD6720N

Toshiba TOPH7833

LUXMAN D-102

TD6709N

Toshiba OPH-32

LUXMAN D-103

TD6705AP

Toshiba TOPH7810

LUXMAN D-103U

2 x PCM1701P

KSS-152A

LUXMAN D-105

TD6705AP

Toshiba OPH-32

LUXMAN D-105U

2 x PCM1701P =96 SM5813AP

KSS-152A

LUXMAN D-107U

2 x AD1860 =96 SM5813AP

KSS-152A

LUXMAN D-109

1 x PCM56P-J

Sony BU-1C

LUXMAN D-111

LC7880 =96 CXD1135QZ

KSS-152A / DLBA2Z

LUXMAN D-112

1 x PCM56


LUXMAN D-113

1 x PCM56P =96 CXD1135QZ

KSS-152A / DLBA2Z

LUXMAN D-113D

It=92s a Transport =96 CXD1125QZ

KSS-152A / DLBA2Z

LUXMAN D-115

1 x PCM56P-J =96 CXD1135QZ

KSS-152A / DLBA2Z

LUXMAN D-322

2 x PCM61P =96 SM5841BP

KSS-240A

LUXMAN D-351

AD1864N

KSS-150A

LUXMAN D-373

AD1864N-J


LUXMAN D-404

TD6705AP

Toshiba TOPH7810

LUXMAN D-405

TD6705AP

Toshiba OPH-32

LUXMAN D-500

2 x PCM1701P =96 SM5813AP

CDM-3

LUXMAN D-500X=92s II

TDA1541A-S1 (Single Crown)

CDM-3

LUXMAN DU-7

CS4392 + NSdap FN1242A


LUXMAN DX-103

Toshiba T1587

Toshiba OPH-32

LUXMAN DX-104

CX890

Toshiba OPH-31

LUXMAN DZ-03

2 x PCM1701P

KSS-152A

LUXMAN DZ-92

LC7881


LUXMAN DZ-111

LC7881C =96 SM5807EP

KSS-152A / DLBA2Z

LUXMAN DZ-112

2 x PCM1701P =96 SM5813AP

KSS-152A

Top

MAGNAVOX CD2000

TDA1543

CDM-4/19

MAGNAVOX CDB262

TDA1543A

CDM-4/19

MAGNAVOX CDB460

TDA1541 =96 SAA7220P/A

CDM-2/10

MAGNAVOX CDB465

TDA1541

CDM-2

MAGNAVOX CDB470

TDA1541 =96 SAA7220P/A

CDM-2

MAGNAVOX CDB471

TDA1541 =96 SAA7220P/A

CDM-2

MAGNAVOX CDB472

TDA1541 =96 SAA7220P/A

CDM-2

MAGNAVOX CDB473

TDA1541 =96 SAA7220P/A

CDM-4/11

MAGNAVOX CDB480

TDA1543

CDM-4/19

MAGNAVOX CDB482

TDA1543 =96 SAA7220P/A

CDM-4/19

MAGNAVOX CDB500

TDA1543

CDM-4/19

MAGNAVOX CDB560

TDA1541 =96 SAA7220P/A

CDM-2

MAGNAVOX CDB600

TDA1543 =96 SAA7220

CDM-4/19

MAGNAVOX CDB650

TDA1541 =96 SAA7220P/A

CDM-2

MAGNAVOX FD1000

2 x TDA1540D =96 M4551 (SAA7030)

CDM-0

MAGNAVOX FD1010

2 x TDA1540D =96 SAA7030

CDM-0

MAGNAVOX FD1040

2 x TDA1540P =96 SAA7030

CDM-1

MAGNAVOX FD1041

2 x TDA1540P =96 SAA7030

CDM-2/10

MAGNAVOX FD1051

2 x TDA1540P =96 SAA7030

CDM-2/10

MAGNAVOX FD2000

2 x TDA1540D =96 SAA7030

CDM-0

MAGNAVOX FD2020

2 x TDA1540D =96 SAA7030

CDM-0

MAGNAVOX FD2040

2 x TDA1540P =96 SAA7030

CDM-1

MAGNAVOX FD2041

2 x TDA1540P =96 SAA7030

CDM-2

MAGNAVOX FD3000

2 x TDA1540D =96 SAA7030

CDM-0

MAGNAVOX FD3030

2 x TDA1540D =96 SAA7030

CDM-0

MAGNAVOX FD3040

2 x TDA1540P =96 SAA7030

CDM-1

MANLEY A TO D CONVERTER

2 x UltraAnalog D20400A

It=92s a DAC

MANLEY DELTA SIGMA DAC

CS4328-KP =96 CS8412

It=92s a DAC

MANLEY JUNIOR 20 Bit DAC

1 x UltraAnalog D20400A

It=92s a DAC

MANLEY Reference 20 Bit DAC

2 x UltraAnalog D20400A =96 SM5803AP

It=92s a DAC

MANLEY WAVE

2 x UltraAnalog D20400A

It=92s a DAC

MANLEY WAVE 24 Bit

2 x PCM1704

It=92s a DAC

MARANTZ CD-5L

1 x TDA1541 =96 SAA7220P/A

CDM-2/10

MARANTZ CD-7

2 x TDA1541A-S2 (Double Crown) + DSP

Philips CD-Pro (VAM 1252)

MARANTZ CD-10

2 x TDA1547 - SAA7350GP - SM5803APT

CDM-4/36 Metallic

MARANTZ CD-11LE

2 x TDA1547 - SAA7350GP - SM5803APT

CDM-4/36 Metallic

MARANTZ CD-11 Mk II

2 x TDA1547

CDM-4/36 Metallic

MARANTZ CD-12

It=92s a Transport

CDM-1

MARANTZ DA-12

TDA1541A-S1 (Double Crown)

It=92s a DAC

MARANTZ CD-14

2 x TDA1547 =96 TDA1307

CDM 12.3

MARANTZ CD-15

2 x TDA1547 =96 SM5803APT =96 SAA7350

CDM-4/36 Metallic

MARANTZ CD-16 / CD-16SE

2 x TDA1547 =96 SM5803APT =96 SAA7350

CDM-4/36 Metallic

MARANTZ CD-16D

2 x TDA1547 =96 TDA1307

VAM 1201

MARANTZ CD-17

1 x TDA1547 =96 SM5841 =96 SAA7350

CDM 12.1

MARANTZ CD-17 Mk II

TDA1547 =96 SM5841 =96 SAA7350

CDM 12.1

MARANTZ CD-17 Mk III

2 x PCM1716E

VAM 1201

MARANTZ CD-19

2 x SM5872BS

CDM 12

MARANTZ CD-23

2 x TDA1547 (DAC7)

CDM-9 Pro

MARANTZ CD-25

2 x TDA1540P =96 SAA7030

CDM-2/10 / CDM-2/29

MARANTZ CD-32

SAA7350 =96 SM5840FP

CDM-4/19

MARANTZ CD-34

2 x TDA1540P =96 SAA7030

CDM-1

MARANTZ CD-36

TDA1543

CDM 12.1

MARANTZ CD-38

TDA1545

CDM 12.1

MARANTZ CD-40

TDA1541A-R1

CDM-4/19

MARANTZ CD-41

2 x SAA7321GP

CDM-4/19

MARANTZ CD-42

SAA7350 =96 SM5840FP

CDM-4/19

MARANTZ CD-42 Mk II

SAA7350 =96 SM5840FP

CDM-4/19

MARANTZ CD-43

1 x SM5872BS

CDM 12.1/05

MARANTZ CD-44

2 x TDA1540

CDM-1

MARANTZ CD-45

2 x TDA1540P =96 SAA7030

CDM-2/29

MARANTZ CD-46

TDA1545A =96 SAA7345GP

CDM 12.1

MARANTZ CD-48

TDA1549

CDM 12.1

MARANTZ CD-50

TDA1541A =96 SAA7220P/B

CDM-4/19 Composite

MARANTZ CD-52

SAA7350GP =96 SM5840FP

CDM-4/19

MARANTZ CD-52 Mk II

SAA7350GP =96 SM5840FP

CDM-4/19

MARANTZ CD-52SE

SAA7350GP

CDM-4/19

MARANTZ CD-53

1 x SM5872BS

CDM 12.1

MARANTZ CD-54

2 x TDA1540D =96 SAA7030

CDM-1

MARANTZ CD-56

TDA1541 =96 SAA7220P/A

CDM-2/10 / CDM-4/25

MARANTZ CD-57

SM5872

CDM 12.1

MARANTZ CD-60

TDA1541A =96 SAA7220P/B

CDM-4/19 Composite

MARANTZ CD-62

SAA7350GP =96 SAA7322

CDM-4/19

MARANTZ CD-63 (Holland Old)

2 x TDA1540D =96 M4551 (SAA7030)

CDM-0

MARANTZ CD-63

1 x SM5872BS

CDM 12.1

MARANTZ CD-63 II

SM5872BS

CDM 12.1

MARANTZ CD-63 Mk II KI

SM5872BS

CDM 12.1

MARANTZ CD-63SE

SM5872BS

CDM 12.1

MARANTZ CD-65

TDA1541 =96 SAA7220P/A

CDM-2

MARANTZ CD-65DX

TDA1541A =96 SAA7220P/B

CDM-2/10 / CDM-4/11

MARANTZ CD-65 Gold

TDA1541-S1 =96 SAA7220P/A

CDM-2

MARANTZ CD65 Mk II

TDA1541A =96 SAA7220P/B

CDM-4/11

MARANTZ CD-67

SM5872

CDM 12.1

MARANTZ CD-67SE

SM5872

CDM 12.1

MARANTZ CD-67 II OSE

SM5872

CDM 12.1

MARANTZ CD-72

SAA7350GP

CDM-4/19

MARANTZ CD-72a

TDA1547

CDM-4

MARANTZ CD-72SE

SAA7350

CDM-4

MARANTZ CD-72 Mk II SE

TDA1547

CDM-4/28

MARANTZ CD-73

2 x TDA1540D =96 SAA7030 (M4551)

CDM-0

MARANTZ CD-74

2 x TDA1540P =96 SAA7030

CDM-1

MARANTZ CD-75

TDA1541 =96 SAA7220

CDM-2/10 / CDM-4/25

MARANTZ CD-75DX

TDA1541A =96 SAA7220P/B

CDM-2/10 / CDM-4/11

MARANTZ CD75 Mk II

TDA1541A =96 SAA7220P/B

CDM-1 Mk II

MARANTZ CD-80

TDA1541A-S1 (Single Crown)

CDM-1 Mk II

MARANTZ CD-84

2 x TDA1540P =96 SAA7030

CDM-1

MARANTZ CD-85

TDA1541A-S1 (Single Crown)

CDM-1 Mk II

MARANTZ CD-94

TDA1541A

CDM-1

MARANTZ CD94 Mk II

2 x TDA1541A-S1 (Single Crown)

CDM-1

MARANTZ CD-95

2 x TDA1541A-S1 + 2 x SAA7220P/B

CDM-1

MARANTZ CD-99SE

2 x TDA1541A-S1 (Single Crown)

CDM-1

MARANTZ CD273

TDA1541

CDM-2

MARANTZ CD583

TDA1541A

CDM-2 / CDM-4

MARANTZ CD650

TDA1541 =96 SAA7220P/A

CDM-2/10 / CDM-4/25

MARANTZ CD873

TDA1541

CDM-2 / CDM-4/11

MARANTZ CD880J

TDA1541A-S1 (Single Crown)

CDM-1 Mk II

MARANTZ CC3000

TDA1545


MARANTZ CD1010

SM5872BS

CDM 12.1 (VAM 1201)

MARANTZ CD1020

SM5872BS

CDM 12.1 (VAM 1201)

MARANTZ CD4000

TDA1545 - SAA7378

CDM 12.1 (VAM 1201)

MARANTZ CD5000

TDA1549 - SAA7378

CDM 12.1 (VAM 1201)

MARANTZ CD5001

CS4392

KSS-213C

MARANTZ CD5001-OSE

CS4392

KSS-213C

MARANTZ CD5400

CS4392

KSS-213C

MARANTZ CD5400-OSE

CS4392

KSS-213C

MARANTZ CD6000

2 x SM5872 - SAA7378

CDM 12.1 (VAM 1201)

MARANTZ CD6000KI

2 x SM5872BS =96 SAA7372

CDM 12.1 (VAM 1201)

MARANTZ CD6000-OSE

2 x SM5872BS =96 SAA7372

VAM 1201

MARANTZ CD6002

CS4398


MARANTZ CD7300

CS4396

VAM 1202

MARANTZ CDA-94

TDA1541A-S1 (Single Crown)

It=92s a DAC

MARANTZ CDV780

TDA1541A


MARANTZ PROJECT D-1

2 x TDA1541A-S2 (Double Crown)

It=92s a DAC

MARANTZ SA-1

4 x DAC7 (TDA1547) =96 TDA1307

CDM-10

MARANTZ SA-7S1

2 x SM5866AS

SACDM-1

MARANTZ SA-11S1 / S2

SM5866AS

SACDM-1

MARANTZ SA-12S1

2 x CS4397

SACD

MARANTZ SA-13S1

CS4397-KS

SACD

MARANTZ SA-14

CS4397

SACD

MARANTZ SA-15S1

CS4397

SACD

MARANTZ SA-17S1

3 x CS4397

SACD

MARANTZ SA7001

CS4397

SACD

MARANTZ SA8001

CS4397

SACD

MARANTZ SA8260

3 x CS4397

SACD Sony KHM-230AAA

MARANTZ SA8400

CS4397

SACD HOP-1200R

MARK LEVINSON No 30

2 x UltraAnalog D20400 =96 SM5803AP

It=92s a DAC

MARK LEVINSON No 30.5

2 x UltraAnalog D20400A =96 PMD100

It=92s a DAC

MARK LEVINSON No 30.6

4 x PCM1704

It=92s a DAC

MARK LEVINSON No 31.5

It=92s a Transport

CDM 12 Ind

MARK LEVINSON No 36

4 x PCM1702-K =96 PMD100 - CS8412-CP

It=92s a DAC

MARK LEVINSON No 37

It=92s a Transport

CDM 12 Ind

MARK LEVINSON No 39

PCM1702 (PCM1704)

CDM 12 Ind

MARK LEVINSON No 360S

4 x PCM1704

It=92s a DAC

MARK LEVINSON No 390S

2 x AD1853

Philips CD-Pro (VAM 1252)

MBL 1521

It=92s a Transport

CDM 12 Ind

MBL 1531

CS4396 =96 CS8414

Philips CD-Pro 2LF (VAM 1254)

MBL 1621

It=92s a Transport

CDM 12 Pro

McCORMACK CD DRIVE

It=92s a Transport

CDM-4/19

McCORMACK DAC-1

CS4328-KP =96 CS8412-CP

It=92s a DAC

McCORMACK PRISM II

TDA1541A-R1 =96 SAA7220P/B

CDM-4/19

McCORMACK SST-1

It=92s a Transport

CDM 12

MCINTOSH MCD201

CS4398

RAYMEDIA RMC RL-S880

MCINTOSH MCD751

It=92s a Transport

VRDS CMK-3 =96 KSS-151A

MCINTOSH MCD7000

2 x TDA1540 =96 SAA7030

CDM-1

MCINTOSH MCD7005

TDA1541A

CDM-2/10

MCINTOSH MCD7007

TDA1541A-S1 (Single Crown)

CDM-1

MCINTOSH MCD7008

2 x PCM1700P =96 SM5840CP

KSS-150A / KSS-210A

MCINTOSH MCD7009

2 x TDA1547 =96 SAA7350 =96 SM5840AP

VRDS CMK-3.2 =96 KSS-151A

MCINTOSH MDA4000

2 x PCM1702 =96 SM5845AF

It=92s a DAC

MERACUS IMAGO

It=92s a Transport

CDM-9 / CDM-9 Pro

MERACUS TANTO

CS4329


MERIDIAN MCD

2 x TDA1540D =96 SAA7030

CDM-1

MERIDIAN MCD-Pro

2 x TDA1540D =96 SAA7030

CDM-1

MERIDIAN 203

2 x SAA7321


MERIDIAN 203 Mk II

TDA1547 (DAC7)


MERIDIAN 206

TDA1541A-S1 (Single Crown)

CDM-4/21

MERIDIAN 206B

TDA1547 (DAC7)

CDM-4/19

MERIDIAN 206 BS

2 x SAA7321 =96 SAA7350

CDM-4/19

MERIDIAN 206 DS

CS4328

CDM-4/19

MERIDIAN 207 (14 Bit)

2 x TDA1540P

CDM-2/10 / CDM-2/29

MERIDIAN 207 (16 Bit)

TDA1541A-S1 (Single Crown)

CDM-4

MERIDIAN 208

2 x SAA7321


MERIDIAN 500

It=92s a Transport

CDM 12

MERIDIAN 506

CS4328-KS - SAA7310

CDM 12.4

MERIDIAN 506.24

CS4390

CDM 12

MERIDIAN 507

CS4390


MERIDIAN 507.24

AD1852JRC

Philips VAL 1250

MERIDIAN 508

CS4329 - SAA7310

CDM 12.3

MERIDIAN 508.24

CS4390

CDM 12.5

MERIDIAN 588

CS4391

VAE 1250 / DSL-710A

MERIDIAN G06

AD1852

DVD-ROM DVS DSL-710A

MERIDIAN G07

AD1852

DVD-ROM DVS DSL-710A

MERIDIAN G08

AD1852

DVD-ROM DVS DSL-710A

METAXAS MASDAC

UltraAnalog D20400

It=92s a DAC

METAXAS MAS PHOS

It=92s a Transport

CDM-9

MHZS CD66

PCM1742

KSS-213Q

MICRO CD-M1

2 x TDA1540D =96 SAA7030

HLPL 030010 (Toshiba OPH-31)

MICRO CD-M2

TDA1541

CDM-1

MICRO CD-M100

TDA1541A

CDM-1

MICROMEGA ARIA

AD1853

VAM 1202

MICROMEGA CD

AD1852

VAM 1202

MICROMEGA CD (2006)

AD1853

KSS-213Q

MICROMEGA CD-SE

AD1853

KSS-213Q

MICROMEGA CD132

AD1853

VAM 1202

MICROMEGA CD132-SE

AD1853

KSS-213Q

MICROMEGA CD F1

It=92s a Transport

CDM-1 Mk II

MICROMEGA DATA

It=92s a Transport

CDM 12

MICROMEGA DIALOG

TDA1547

It=92s a DAC

MICROMEGA DRIVE 1

It=92s a Transport

CDM 12.4

MICROMEGA DRIVE 2

It=92s a Transport

CDM 12.10

MICROMEGA DUO.CD.

It=92s a Transport

CDM-9 Pro

MICROMEGA LEADER

SAA7321GP

CDM-4/19

MICROMEGA LOGIC

SAA7321

CDM

MICROMEGA MICRODAC

SAA7321GP =96 YM3623B

It=92s a DAC

MICROMEGA MICRODRIVE

It=92s a Transport

CDM-9

MICROMEGA MINIUM

TDA1549

CDM 12.2

MICROMEGA PREMIUM18

CS4327

KSS-213C

MICROMEGA SOLO

TDA1547

CDM 12

MICROMEGA STAGE2

SAA7321GP

CDM 12.4

MICROMEGA STAGE4

TDA1305

CDM 12.4

MICROMEGA STAGE5

2 x TDA1305

CDM 12.4

MICROMEGA STAGE6

2 x TDA1305

CDM 12.4

MISSION-Cyrus CD 6S

PCM1738

CDM 12

MISSION-Cyrus CD 7

PCM1716

CDM 12.1

MISSION-Cyrus CD 8x

2 x PCM1738

Philips

MISSION-Cyrus DAC5

TDA1547

It=92s a DAC

MISSION-Cyrus Dacmaster

2 x AD1862N - SM5813APT - CS8412-CP

It=92s a DAC

MISSION-Cyrus dAD1

TDA1311

CDM 12.4

MISSION-Cyrus dAD1.5

TDA1311

CDM 12.1

MISSION-Cyrus dAD3

TDA1305

CDM 12.4

MISSION-Cyrus dAD3Q

AD1861

CDM 12.4

MISSION-Cyrus dAD7

AD1861

CDM-9

MISSION DAD7000

2 x TDA1540

CDM-1

MISSION PCM II

TDA1541A

CDM-4/11

MISSION PCM4000

TDA1541


MISSION PCM7000

TDA1541

CDM-2/10

MITSUBISHI DP-109

PCM56P


MITSUBISHI M-C5100

2 x PCM56P =96 YM3414

Sankyo SPM1001 =96 MLP-10-E2

MONARCHY AUDIO MODEL 18B

2 x AD1860N =96 YM3434

It=92s a DAC

MONARCHY AUDIO MODEL 22B

2 x PCM63P-K =96 SM5813APT

It=92s a DAC

MONARCHY AUDIO MODEL 22C

4 x PCM63P-K =96 DF1704

It=92s a DAC

MONARCHY AUDIO MODEL 24

2 x PCM63P-K =96 DF1704

It=92s a DAC

MONARCHY AUDIO MODEL 33

2 x PCM63P-K =96 SM5813APT

It=92s a DAC

MONRIO MJ PLAYER

CS4397

CD-ROM

MONRIO NAS-DAC

CS4397

VAM 1210

MONRIO TOP-LOADER

CS4390-KP

Philips CD-Pro (VAM 1252)

MONRIO TOP-LOADER 2

CS4390-KP

Philips CD-Pro 2M (VAM 1254)

MUSE MODEL TWO

2 x PCM63P-K =96 DF1700 =96 CS8412

It=92s a DAC

MUSE MODEL TWO PLUS

2 x PCM63P =96 PMD100 =96 CS8412

It=92s a DAC

MUSE MODEL FIVE

It=92s a Transport

CDM 12.4

MUSEATEX BIDAT

TDA1547 =96 SAA7350GP

It=92s a DAC

MUSEATEX MELIOR BITSTREAM

SAA7350GP =96 YM3434 =96 YM3623B

It=92s a DAC

MUSEATEX MELIOR CD-D

CDM-1 Mk II

It=92s a Transport

MUSIC HALL CD-25

PCM1732

CDM 12.10

MUSIC HALL CD25.2

PCM1738

VAM 1202

MUSICAL FIDELITY A2

YDC103


MUSICAL FIDELITY A3 DAC

PCM1738E =96 CS8420

It=92s a DAC

MUSICAL FIDELITY A3.2

PCM1738E

KSS-240A

MUSICAL FIDELITY A3.5

PCM1738

Philips CDM 12

MUSICAL FIDELITY C2

YDC103


MUSICAL FIDELITY CD1

SAA7323GP =96 SAA7220P/B

CDM-4/19

MUSICAL FIDELITY CDT

LC7881 =96 LC7860

Sanyo SF-90

MUSICAL FIDELITY DIGILOG

TDA1541A

It=92s a DAC

MUSICAL FIDELITY E60

YDC103

Sanyo SF-91

MUSICAL FIDELITY E601

YDC103

Sanyo SF-91

MUSICAL FIDELITY E624

PCM1716


MUSICAL FIDELITY FCD

SAA7350

KSS-210A

MUSICAL FIDELITY Nu-Vista 3D

PCM1738

Sony

MUSICAL FIDELITY Tri-Vista

PCM1738


MUSICAL FIDELITY Tri-Vista 21

PCM1792

It=92s a DAC

MUSICAL FIDELITY X-24K

PCM1716

It=92s a DAC

MUSICAL FIDELITY X-RAY

PCM1716

KSS-240A

MUSICAL FIDELITY X-RAY V3

PCM1732

Philips

MYRYAD T-10

CS4327

Sony

MYRYAD T-20

CS4327

Sony

MYRYAD MC100

CXD2565

CDM 14 - Sony

MYRYAD MCD600

CS4396


MYRYAD MXC6000

2 x CS4396

Sony

MYRYAD Z110

CS4391

KSS-213B

Top

NAD 501

SAA7323GP

CDM-4/19

NAD 502

MN6474AM =96 CXD1167Q

KSS-210A

NAD 510

SAA7350

CDM 12.1 / KSS-210A

NAD 512

MN6474 =96 CXD1167Q

KSS-150A / KSS-210A

NAD 514

MN6474 =96 CXD1167Q

KSS-210A / KSS-212A

NAD 520

PCM1710U

Sanyo

NAD 522

PCM1710U

Sanyo SF-P101

NAD 523

SM5874

KSS-210

NAD 524

PCM1716E

Sanyo SF-P

NAD 5000

MN6471M =96 YM3412B =96 CXD1167Q

KSS-210A

NAD 5100

PCM56

MLP-10

NAD 5255

TD6705AP

Toshiba OPH-32

NAD 5320

LC7881 =96 YM3404B

TAOHS-JP1

NAD 5325

LC7881 =96 YM3404B

TAOHS-JP1

NAD 5420

MN6471M

KSS-210A

NAD 5425

MN6471M

KSS-210A

NAD C520

PCM1710U

Sanyo SF-P101

NAD C521

PCM1710U

Sanyo SF-P101

NAD C521BEE

PCM1710U

KSS-213C / KSS-213CL

NAD C525BEE

PCM1710U

KSS-213C / KSS-213CL

NAD C541

PCM1732U

Sanyo SF-P101N

NAD C542

PCM1732U

KSS-213C

NAD S500

CS4390

CDM 12.4

NAGRA DAC

AD1853

It=92s a DAC

NAIM AUDIO CD1

TDA1541

CDM-2

NAIM AUDIO CD2

TDA1541A-S1

CDM-9

NAIM AUDIO CD3

TDA1541A-S1 (Single / Double Crown)

CDM-9

NAIM AUDIO CD3.5

TDA1305

VAM 1205

NAIM AUDIO CD5

TDA1305

CDM 12 / VAM 1205

NAIM AUDIO CD5i

Philips UDA1330ATS

VAM 1202/12

NAIM AUDIO CD5X

PCM1704

VAM 1201

NAIM AUDIO CD555

PCM1704 =96 PMD200

CDM 12 Pro

NAIM AUDIO CDI

TDA1541A-S1 (Single / Double Crown)

CDM-4/27 / CDM-9 Pro

NAIM AUDIO CDS 1

TDA1541A-S1 (Single Crown)

CDM-4/25

NAIM AUDIO CDS II

2 x PCM1702-K

VAM 1205

NAIM AUDIO CDS 3

2 x PCM1704-K

VAM 1250

NAIM AUDIO CDX

2 x PCM1702-K + PMD100

CDM 12 / VAM 1205

NAIM AUDIO CDX2

PCM1704


NAKAMICHI 1000mb/i

2 x PCM1700P-N =96 SM5813APT


NAKAMICHI CD PLAYER 1

2 x PCM1700P-J

KSS-150A / KSS-210A

NAKAMICHI CD PLAYER 2

2 x PCM1700P =96 SM5840CP

KSS-150A / KSS-210A

NAKAMICHI CD PLAYER 3

1 x PCM1700P =96 SM5840CP

KSS-210A

NAKAMICHI CD PLAYER 4

AD1864N =96 SM5840BP

KSS-150A / KSS-210A

NAKAMICHI CDC-3A

TDA1541A =96 CXD1088

Pioneer PWY1009 / PWY1010

NAKAMICHI CDP-2 A/E

TDA1541A =96 CXD1088

KSS-152A

NAKAMICHI DAC-41

2 x PCM1702 =96 SM5841CP =96 YM3623B

It=92s a DAC

NAKAMICHI DAC-100

4 x PCM1700P-K

It=92s a DAC

NAKAMICHI DAC-101

2 x TDA1541A-S1 (Single Crown)

It=92s a DAC

NAKAMICHI DRAGON CD/DAC

4 x PCM1704U-J =96 DF1704E

Sanyo SF-91

NAKAMICHI MB-1

2 x PCM1700P-N =96 SM5813APT

KSS-150A / KSS-210A

NAKAMICHI MB-1S

2 x PCM1700P =96 SM5841CP

Sanyo SF-91

NAKAMICHI MB-2

2 x PCM1700P =96 SM5840CP

KSS-150A / KSS-210A

NAKAMICHI MB-2S

AD1868 =96 SM5841CP

Sanyo SF-91

NAKAMICHI MB-3

1 x PCM1700P =96 SM5840CP

KSS-210A

NAKAMICHI MB-3S

AD1868 =96 SM5841CP

Sanyo SF-91

NAKAMICHI MB-4

LC78840


NAKAMICHI MB-4S

TDA1311A =96 LC78840M

Sanyo SF-91

NAKAMICHI MB-5

LC78840


NAKAMICHI OMS-1

PCM56

KSS-150A

NAKAMICHI OMS-2

1 x PCM54HP


NAKAMICHI OMS-3

1 x PCM54HP-J =96 YM2601F-K

KSS-121A / KSS-123A

NAKAMICHI OMS-4

2 x PCM54HP-J

KSS-123A

NAKAMICHI OMS-5

2 x TDA1540D =96 SAA7030

HLPL 030020 / CA80255A

NAKAMICHI OMS-5 II

PCM54HP =96 SM5804B

KSS-123A

NAKAMICHI OMS-7

2 x TDA1540D =96 SAA7030

HLPL 030020 / CA80255A

NAKAMICHI OMS-7 II

2 x PCM54HP-K =96 SM5804B

KSS-123A

NAKAMICHI OMS-20

TDA1541A =96 CXD1088

KSS-152A

NAKAMICHI OMS-30

1 x PCM54HP-J =96 YM2601F-K

KSS-121A / KSS-123A

NAKAMICHI OMS-50

2 x TDA1540D =96 SAA7030

HLPL 030020 / CA80255A

NAKAMICHI OMS-50 II

PCM54HP =96 SM5804B

KSS-123A

NAKAMICHI OMS-70

2 x TDA1540D =96 SAA7030

HLPL 030020 / CA80255A

NAKAMICHI OMS-70 II

2 x PCM54HP-K =96 SM5804B

KSS-123A

NEC CD-10

2 x TDA1541A-S1 (Single Crown)

KSS-150A

NEC CD-410

PCM54HP

KSS-152A

NEC CD-430

PCM54HP

KSS-150A

NEC CD-509

PCM53JP-V

KSS-121 / KSS-123

NEC CD-600

NEC =B5PC655CA + NEC =B5PD6352CA

KSS-123A

NEC CD-607E

PCM53JP-V =96 YM2201F

KSS-121 / KSS-123

NEC CD-609

PCM53JP-V

KSS-121 / KSS-123

NEC CD-610

PCM54HP =96 =B5PD6350

KSS-123A

NEC CD-620

TDA1541

KSS-150A

NEC CD-705

PCM53JP-V

NEC 79710002 (Toshiba OPH-32)

NEC CD-710

PCM56P-J

KSS-123A

NEC CD-720

TDA1541

KSS-150A

NEC CD-730

2 x TDA1541A

KSS-150A

NEC CD-803

PCM51JG-V + 4 x NEC =B5PD7720

NEC (Same as Toshiba OPH-31)

NEC CD-810

2 x PCM56P-J + NEC =B5PD6352ACA

KSS-123A

NEC CD-816

2 x TDA1541A-S1 (Single Crown)

KSS-150A

NEC CD-830DS

2 x TDA1541A-S1 (Single Crown)

Toshiba TOPH7833

NEC CD-903

4 x PCM56P-K + NEC =B5PD6352ACA

KSS-123A

NESCO HCD-50

CX20152 =96 CX23035

KSS-121A / KSS-123A

NIKKO NCD 100

TD6705AP

Toshiba OPH-32

NORDMENDE SYSTEM 2000

Hitachi HA16633P / PCM53JG-V

Hitachi (DA-1000)

NORDMENDE SYSTEM 2003

PCM53JG-V =96 TM5001 (HD61902H)

Hitachi (DA-1000)

NORH CD-1

PCM1728

CDM 12

NORTH STAR EXTREMO DAC

2 x PCM1792 =96 SM5849BF

It=92s a DAC

NORTH STAR MODEL 192 DAC

CS4396-KS =96 SM5849AF =96 CS8420-CS

It=92s a DAC

NORTH STAR M192 TRANSPORT

It=92s a Transport =96 CS8420 =96 SM5849BF

Philips CD-Pro 2 (VAM 1254)

Top

OMNITRONIC CDP-450

2 x PCM1725

2 x KSS-213

ONIX CD-2

PCM1738

CDM 12

ONIX CD-5

PCM1732U

CDM 12.1

ONIX XCD-99

PCM1732U

CDM 12

ONKYO C-1E Integra

2 x TDA1547 (DAC7) =96 SM5843AP


ONKYO C-1VL

1 x Wolfson WM8740

Sony KSS-213

ONKYO C-1VL-S

2 x Wolfson WM8740


ONKYO C-500X Integra

CX20152 =96 CX23034


ONKYO C-501XD

2 x PCM56P =96 YM3414

KSS-212

ONKYO C-700 Integra

CX20152 =96 CX23034

KSS-121A / KSS-123A

ONKYO C-701A

CXD2589Q

KSS-213C

ONKYO C-701XD Integra

ONKYO 8D-3170-1 (2 x TC9219F)

DLBA2Z001A - Magnetic

ONKYO C-701XG Integra

2 x PCM58P =96 SM5813AP

DLBA2Z001A - Magnetic

ONKYO C-711

SM5872CN

KSS-240A

ONKYO C-725 Integra

2 x SM5864AP =96 SM5843AP

Sanyo SF-P100-S

ONKYO C-733-S

CS4396

KSS-213C

ONKYO C-901FX Integra

2 x SM5860BF - SM5813AP - SM5827CP

NEC SPU3011 - Magnetic

ONKYO C-901XD Integra

2 x PCM58P (ONKYO 8S-3380-1)

DLBA2Z001A - Magnetic

ONKYO C-2001 Integra

2 x OptoConverter 18Bit (PCM58P)

Sony BU-1E

ONKYO DX-5

CX890 / CX20017

Same as Toshiba OPH-31

ONKYO DX-100

1 x TD6705AP

Toshiba OPH-32

ONKYO DX-150

1 x PCM53JP =96 YM2201

TAOHS-MR

ONKYO DX-200 Integra

1 x CX20152 =96 CX23034

KSS-123A

ONKYO DX-220

1 x PCM56P =96 YM3815

KSS-123A

ONKYO DX-300 Integra

1 x CX20017

Toshiba OPH-32 (TAOHS-L)

ONKYO DX-330

1 x PCM56P =96 YM3815

KSS-123A

ONKYO DX-530 Integra

1 x PCM56P =96 CXD1135Q

KSS-152A

ONKYO DX-700

1 x MN6472

KSS-210A

ONKYO DX-701

1 x TC9237BN

KSS-210A

ONKYO DX-702

1 x MN6472

KSS-210A

ONKYO DX-703

1 x SM5861AP =96 YM3433

KSS-210A

ONKYO DX-704

MN6472


ONKYO DX-705

1 x SM5861AP =96 YM3433

KSS-210A

ONKYO DX-706 Integra

2 x SM5861AP =96 SM5813AP

NEC SPU3011 - Magnetic

ONKYO DX-708 Integra

2 x SM5861AP =96 SM5813AP

NEC SPU3011 - Magnetic

ONKYO DX-788F Integra

2 x TDA1547 - SAA7350GP - SM5843AP

NEC SPU3013 - Magnetic

ONKYO DX-1400

2 x PCM61P =96 YM3433

KSS-150A

ONKYO DX-1500

1 x PCM56P-L =96 CXD1130Q

KSS-152A

ONKYO DX-1700

2 x PCM56P-L =96 SM5817AP

KSS-152A

ONKYO DX-1800

2 x AD1860N =96 YM3433

KSS-150A

ONKYO DX-2500

1 x PCM56P-L =96 CXD1135Q

KSS-152A

ONKYO DX-2800

1 x SM5860BF =96 YM3433 =96 SM5827CP

KSS-210A

ONKYO DX-3500

2 x PCM56P-L =96 YM3414

Toshiba TOPH7833-A

ONKYO DX-3700

2 x AD1860N-J =96 SM5813AP

KSS-150A

ONKYO DX-3800 Integra

2 x SM5860BF - SM5813AP - SM5827CP

NEC SPU3011 - Magnetic

ONKYO DX-5500 Integra

ONKYO 8D-3170-1 (2 x TC9219F)

DLBA2Z001A - Magnetic

ONKYO DX-5700 Integra

2 x PCM58P-X =96 SM5813AP

DLBA2Z001A - Magnetic

ONKYO DX-6430

YM3020

9110982

ONKYO DX-6470

PCM56

KSS-152A

ONKYO DX-6520

1 x PCM56P

KSS-152A

ONKYO DX-6530

1 x PCM56P

KSS-152A

ONKYO DX-6540

PCM56P

KSS-152A

ONKYO DX-6550 Integra

ONKYO 8D-3170-1 (2 x TC9219F)

DLBA2Z001A - Magnetic

ONKYO DX-6570 Integra

2 x PCM58P (ONKYO 8S-3380-1)

DLBA2Z001A - Magnetic

ONKYO DX-6620

LC7881

KSS-210A

ONKYO DX-6640

2 x PCM56P =96 SM5817AP

KSS-152A

ONKYO DX-6650

2 x AD1860N-J =96 SM5813AP

KSS-150A

ONKYO DX-6660 Integra

2 x PCM58P

DLBA2Z001B

ONKYO DX-6700

2 x PCM61P =96 YM3433

KSS-150A

ONKYO DX-6720

2 x AD1860


ONKYO DX-6750 Integra

2 x SM5860BF - SM5813AP - SM5827CP

NEC SPU3011 - Magnetic

ONKYO DX-6770 Integra

2 x SM5860BF - SM5813AP - SM5827CP

NEC SPU3011 - Magnetic

ONKYO DX-6800 Integra

2 x SM5860BF - SM5813AP - SM5827CP

NEC SPU3011 - Magnetic

ONKYO DX-6850 Integra

2 x SM5861AP =96 SM5813AP

NEC SPU3011 - Magnetic

ONKYO DX-6870 Integra

2 x SM5861AP =96 SM5813AP

NEC SPU3011 - Magnetic

ONKYO DX-6890 Integra

2 x TDA1547 - SAA7350GP - SM5843AP

NEC SPU3013 - Magnetic

ONKYO DX-6920

1 x SM5861AP - YM3433

KSS-210A

ONKYO DX-6930

1 x SM5861AP - YM3433

KSS-210A

ONKYO DX-6990 Grand Integra

2 x OptoConverter 18Bit (PCM58P)

Sony BU-1E

ONKYO DX-7011

1 x TC9237

KSS-210A

ONKYO DX-7110

1 x SM5872CN

KSS-240A

ONKYO DX-7111

1 x SM5874AM

KSS-213C

ONKYO DX-7210

1 x SM5872CN

KSS-240A

ONKYO DX-7211

1 x SM5874AM

KSS-213C

ONKYO DX-7222

1 x TC9268BP

KSS-213C

ONKYO DX-7310

1 x SM5872CN

KSS-240A

ONKYO DX-7333

1 x TC9268P

KSS-213C

ONKYO DX-7355

1 x WM8716 WolfSon

KSS-213C

ONKYO DX-7500 Integra

2 x (ONKYO 8S-3380-1) =96 YM3414

DLBA2Z001A - Magnetic

ONKYO DX-7510

1 x SM5861AP =96 SM5843AP

KSS-240A

ONKYO DX-7511

1 x SM5872CN

KSS-213C

ONKYO DX-7555

1 x WM8740 WolfSon

KSS-213C / KSS-213CL

ONKYO DX-7711 Integra

2 x SM5864AP =96 SM5843AP

Sanyo SF-P100-S (13 pin)

ONKYO DX-7911 Integra

2 x SM5864AP =96 SM5843AP

Sanyo SF-P100-S (13 pin)

ONKYO DX-F33

PCM56P-L

KSS-152A

ONKYO DX-G10 Grand Integra

2 x OptoConverter 18Bit (PCM58P)

Sony BU-1E

ONKYO DX-M505

1 x SM5861AP =96 YM3433

Pioneer PWY1009 / PWY1010

ORACLE CD 1000/1500

CS4390

CDM 12.4 Pro

ORACLE CD DRIVE

It=92s a Transport

Philips CD-Pro (VAM 1252)

ORELLE CD100

TDA1541

CDM-4

ORELLE CD100SE

TDA1541A-S1 (Single Crown)

CDM-4

Original Electronics CD-2008

PCM1732

VAM 1202

Original Electronics CD-2008F

PCM1792

VAM 12

Original Electronics CD-2008Mk-II

PCM1792 + PCM1732

VAM 12

Original Electronics CD-A6s

CS4390

VAM 1202

Original Electronics CD-A8s

PCM1732

VAM 1202

Original Electronics CD-A8T

PCM1732 =96 SAA7327

VAM 12

Original Electronics CD-A9 II

PCM1792

KSS-213

Original Electronics CD-A9.3

PCM1792

VAM 12

Original Electronics CD-A9.8

PCM1732

VAM 1202

ORPHEUS Orpheus ONE

AD1853

It=92s a DAC

ORPHEUS Orpheus Zero D

It=92s a Transport

Philips CD-Pro 2 (VAM 1254)

ORPHEUS Orpheus Zero P

WM8740 WolfSon

Philips CD-Pro 2 (VAM 1254)

OTTO DAD-03

CX20017 / PCM51JG-V

4 180T00271 (Toshiba OPH-31)

Top

PANASONIC SL-D70

It=92s a Transport

SOAD70A

PANASONIC SL-D6000

PCM55HP

SOALP1200 KM3

PANASONIC SL-PJ324

=B5PD6276 =96 SM5807 =96 MN6625

SOAD70A

PANASONIC SL-PJ325

=B5PD6376 =96 SM5807ES

CDM-4/19

PARASOUND CD M839

PCM56


PARASOUND C/DP-1000

PCM67U

CEC-Sanyo SF-P1

PARASOUND C/DC-1500

PCM67P


PARASOUND C/BD-2000

It=92s a Transport

CEC-Sanyo SF-P1

PARASOUND C/DP-2000

2 x PCM1702 =96 PMD100

C.E.C.

PARASOUND D/AC-800

PCM67P-J =96 SM5813AP =96 YM3623B

It=92s a DAC

PARASOUND D/AC-1000

2 x PCM63P-J - SM5813AP - CS8412-CP

It=92s a DAC

PARASOUND D/AC-1100 HD

4 x PCM63P-J =96 PMD100

It=92s a DAC

PARASOUND D/AC-1500

4 x PCM63P-K - SM5813AP - CS8412-CP

It=92s a DAC

PARASOUND D/AC-1600 HD

4 x PCM63P-K =96 PMD100

It=92s a DAC

PARASOUND D/AC-2000

UltraAnalog D20400A =96 PMD100

It=92s a DAC

PASS LABS D1

PCM63P-K

It=92s a DAC

PATHE MARCONI PM/LA10

Hitachi HA16633P / PCM53JG-V

Hitachi (DA-1000)

PATHE MARCONI PM/LA20

PCM53JG-V =96 TM5001 (HD61902H)

Hitachi (DA-1000)

PATHOS ENDORPHIN

CS4396

Philips CD-Pro 2 (VAM 1254)

PATHOS InTransfer

PCM63P-K

It=92s a DAC

PHASE LINEAR Model 9500

2 x TDA1540D =96 SAA7030

HLPL 030010 (Toshiba OPH-31)

PHASE TECH CT1

It=92s a Transport

JVC EXU-901A

PHILIPS AK 601

TDA1543A =96 M50423FP

CDM-4/19

PHILIPS AK 630

TDA1543A =96 M50423FP

CDM-4/19

PHILIPS AK 640

SAA7341GP

CDM-4/19

PHILIPS CD10

Sony CX20133 =96 CX23035

CDM-2-P

PHILIPS CD-60

TDA1541A =96 SAA7220P/B

CDM-4/19 Composite

PHILIPS CD-80

TDA1541A-S1 (Single Crown)

CDM-1 Mk II

PHILIPS CD-85

TDA1541A-S1 (Single Crown)

CDM-1 Mk II

PHILIPS CD100

2 x TDA1540D =96 M4551 (SAA7030)

CDM-0

PHILIPS CD101

2 x TDA1540D =96 SAA7030

CDM-1

PHILIPS CD104

2 x TDA1540P =96 SAA7030

CDM-1

PHILIPS CD115

TDA1543

CDM-4/19

PHILIPS CD130

TDA1543

CDM-4/19

PHILIPS CD140

TDA1543

CDM-4/19

PHILIPS CD150

2 x TDA1540P =96 SAA7030

CDM-2/10

PHILIPS CD151

2 x TDA1540P =96 SAA7030

CDM-2/10

PHILIPS CD160

TDA1541 =96 SAA7220P/A

CDM-2/10

PHILIPS CD162

SAA7341GP

CDM-4/19

PHILIPS CD163

TDA1545A =96 SAA7345GP

CDM 12.1/05

PHILIPS CD165

TDA1545A =96 SAA7345GP

CDM 12.1/05

PHILIPS CD200

2 x TDA1540D =96 SAA7030 (M4551)

CDM-0

PHILIPS CD202

2 x TDA1540D =96 SAA7030

CDM-0

PHILIPS CD204

2 x TDA1540P =96 SAA7030

CDM-1

PHILIPS CD207

TDA1541 =96 SAA7220P/A =96 TDA1542

CDM-2-P

PHILIPS CD210

TDA1543 =96 SAA7220

CDM-4/19

PHILIPS CD230

TDA1543A =96 M50423FP

CDM-4/19

PHILIPS CD300

2 x TDA1540D =96 SAA7030 (M4551)

CDM-0

PHILIPS CD303

2 x TDA1540D =96 SAA7030

CDM-0

PHILIPS CD304

2 x TDA1540P =96 SAA7030

CDM-1

PHILIPS CD304 Mk II

TDA1541 =96 SAA7220P/A =96 SAA7210P

CDM-1

PHILIPS CD350

2 x TDA1540P =96 SAA7030

CDM-2 / CDM-2/10

PHILIPS CD351

2 x TDA1540P =96 SAA7030

CDM-2

PHILIPS CD360

TDA1541 =96 SAA7220P/A

CDM-2/10 / CDM-2/29

PHILIPS CD371

TDA1541

CDM-2/29 / CDM-4/11

PHILIPS CD372

TDA1541

CDM-2

PHILIPS CD373

TDA1541

CDM-2 / CDM-4/11

PHILIPS CD380

TDA1543

CDM-4/19

PHILIPS CD450

TDA1541 =96 SAA7220P/A

CDM-2

PHILIPS CD460

TDA1541 =96 SAA7220P/A

CDM-2/10 / CDM-4/25

PHILIPS CD465

TDA1541


PHILIPS CD470

TDA1541

CDM-2 / CDM-4/11

PHILIPS CD471

TDA1541

CDM-2 / CDM-4/11

PHILIPS CD472

TDA1541 =96 SAA7220P/A

CDM-4/11

PHILIPS CD473

TDA1541

CDM-2 / CDM-4/11

PHILIPS CD480

TDA1541 / TDA1543 =96 SAA7220

CDM-4/19

PHILIPS CD482

TDA1543 =96 SAA7220P/A

CDM-4/19

PHILIPS CD500

TDA1543

CDM-4/19

PHILIPS CD502

TDA1543

CDM-4/19

PHILIPS CD560

TDA1541 =96 SAA7220P/A

CDM-2/10 / CDM-4/25

PHILIPS CD580

TDA1541


PHILIPS CD581

TDA1541

CDM-4/19

PHILIPS CD582

TDA1541 =96 SAA7220P/A

CDM-4/19

PHILIPS CD584

TDA1541A =96 SAA7220P/B

CDM-4/19

PHILIPS CD586

TDA1541A

CDM-4/20

PHILIPS CD600

TDA1543 =96 SAA7220

CDM-4/19

PHILIPS CD604

TDA1543 =96 M50423FP

CDM-4/19

PHILIPS CD605

SAA7321GP

CDM-4/19

PHILIPS CD610

TDA1543 =96 SAA7220

CDM-4/19

PHILIPS CD614

TDA1543 =96 M50423FP

CDM-4/19

PHILIPS CD615

SAA7321GP

CDM-4/19

PHILIPS CD618

SAA7323

CDM-4/19

PHILIPS CD620

TDA1541A =96 SAA7220P/B

CDM-4/19

PHILIPS CD624

SAA7321GP

CDM-4/19

PHILIPS CD630

TDA1541A =96 SAA7220P/B

CDM-4/19

PHILIPS CD634

SAA7321

CDM-4/19

PHILIPS CD640

TDA1541 =96 SAA7220P/A

CDM-2

PHILIPS CD650

TDA1541 =96 SAA7220P/A =96 SAA7210P

CDM-2/10 / CDM-4/25

PHILIPS CD660

TDA1541 =96 SAA7220P/A

CDM-2 / CDM-4/11

PHILIPS CD670

TDA1541 =96 SAA7220P/A

CDM-2/10 / CDM-4/11

PHILIPS CD680

TDA1541A =96 SAA7220P/B

CDM-2/10 / CDM-4/11

PHILIPS CD690

SAA7341

CDM 12.1

PHILIPS CD692

SAA7341GP

CDM 12

PHILIPS CD710

TDA1545A =96 SAA7345

CDM 12.1

PHILIPS CD713

TDA1545A

VAM 1202

PHILIPS CD720

TDA1545A

CDM 12.1

PHILIPS CD721

TDA1545A

CDM 12

PHILIPS CD722

TDA1545A

VAM 1201

PHILIPS CD723

TDA1545 =96 SAA7378

VAM 1201

PHILIPS CD732

SAA7341

CDM 12.1

PHILIPS CD740

TDA1549T =96 SAA7345GP

CDM 12.1

PHILIPS CD750

SAA7350 =96 SM5840AS =96 SAA7345

CDM 12.1

PHILIPS CD751

TDA1549T =96 SAA7345

CDM 12.1/05

PHILIPS CD753

TDA1549 =96 SAA7378

CDM 12.1 / VAM 1201

PHILIPS CD771

TDA1541 =96 SAA7220P/A

CDM-2 / CDM-4/11

PHILIPS CD780

TDA1541A =96 SAA7220

CDM-4/19

PHILIPS CD782

TDA1541 =96 SAA7220P/A

CDM-2 / CDM-4

PHILIPS CD820

TDA1541A =96 SAA7220P/B

CDM-4/19 Composite

PHILIPS CD824

SAA7321GP

CDM-4/19

PHILIPS CD830

TDA1541A =96 SAA7220P/B

CDM-4/19 Composite

PHILIPS CD834

SAA7321GP

CDM-4/19

PHILIPS CD840

2 x SAA7321GP =96 SAA7220P/B

CDM-4/19

PHILIPS CD850

2 x SAA7321GP =96 SAA7220P/B

CDM-4/19

PHILIPS CD850 Mk II

SAA7350GP =96 SAA7322

CDM-4/19

PHILIPS CD880

TDA1541A-S1 (Single Crown)

CDM-1 Mk II

PHILIPS CD910

SAA7341GP

CDM 12.1/05

PHILIPS CD911

SAA7341GP

CDM 12.1/05

PHILIPS CD920

SAA7341GP

CDM 12.1/05

PHILIPS CD930

SAA7350

CDM-9/44

PHILIPS CD931

SAA7350

CDM-9/65

PHILIPS CD940

SAA7350GP =96 SM5840AS

CDM-9/44

PHILIPS CD950

TDA1547 =96 SAA7350

CDM-9/44

PHILIPS CD951

TDA1547 =96 SAA7350 =96 SAA7310

CDM-9/65

PHILIPS CD960

TDA1541 =96 SAA7220P/A =96 SAA7210P

CDM-1

PHILIPS CDC486

TDA1543

CDM-4/20

PHILIPS CDC745

SAA7341GP

CDM 12.1/05

PHILIPS CDC875

TDA1541A

CDM-4/19

PHILIPS CDD461

TDA1543

CDM-4/19

PHILIPS CDD882

It=92s a Transport =96 SAA7210P

CDM-1 Mk II

PHILIPS CDI-470

TDA1305T

CDM 12

PHILIPS CDI-910

SAA7321GP

CDM-9

PHILIPS CDR950

AD1855


PHILIPS CDV496

TDA1541A =96 SAA7220P/B =96 TDA1542

CDM-10

PHILIPS DAC960

1 x TDA1541A

It=92s a DAC

PHILIPS LHH100M

1 x TDA1547 =96 SM5840

CDM-9

PHILIPS LHH200R

1 x TDA1547 (DAC7)

CDM-9

PHILIPS LHH300

2 x SAA7321GP =96 SAA7220P/B

CDM-4/36 Metallic

PHILIPS LHH300R

1 x TDA1547 (DAC7) =96 SAA7350

CDM-9

PHILIPS LHH500

2 x SAA7321GP =96 SAA7220P/B

CDM-4/36 Metallic

PHILIPS LHH500R

1 x TDA1547 - SAA7350AGP - SM5803AP

CDM-4/36 Metallic

PHILIPS LHH600

TDA1547 (DAC7)

CDM-4/36 Metallic

PHILIPS LHH700

2 x TDA1547 - SAA7350GP - SM5803APT

CDM-4/36 Metallic

PHILIPS LHH800R

1 x TDA1547 - SAA7350GP - SM5803APT

CDM-4/36 Metallic

PHILIPS LHH900R

1 x TDA1547 (DAC7)

CDM-4/36 Metallic

PHILIPS LHH1000

TDA1541A-S1 (Double Crown)

CDM-1

PHILIPS LHH2000

2 x TDA1540P =96 SAA7030

CDM-0 / CDM-1

PINK TRIANGLE CARDINAL

It=92s a Transport

Sanyo SF-91

PINK TRIANGLE CORDINAL

2 x TDA1547

Sanyo SF-91

PINK TRIANGLE DACAPO

SAA7350 =96 DF1700

It=92s a DAC

PINK TRIANGLE NUMERAL

TDA1305T


PINK TRIANGLE ORDINAL

2 x TDA1547

It=92s a DAC

PIONEER CDX-M80

2 x PCM63P =96 SM5813AF

It=92s a DAC

PIONEER CLD-77

1 x PCM56P


PIONEER CLD-99S

2 x PCM56P-J =96 SM5807EP


PIONEER CLD-1500

2 x AD1860N =96 PD0050


PIONEER CLD-1700

PD2026 =96 CXD2500


PIONEER CLD-1950

PD2026B


PIONEER CLD-3030

2 x PCM56P-J =96 SM5807EP


PIONEER DV-717

PE8001A


PIONEER P-D1

PCM52JG-V

Same as Toshiba OPH-31

PIONEER PD-31

2 x PD2026A

PEA1030 / PWY1013 Stable Platter

PIONEER PD-52

2 x PD2028B =96 PD0116A

PEA1030 Stable Platter

PIONEER PD-54

2 x PD2028B =96 PD0116A

PEA1179 / PEA1285 Stable Platter

PIONEER PD-59

PD2029A

PEA1179 Stable Platter

PIONEER PD-65

2 x PD2028B =96 PD0116A

PEA1030 Stable Platter

PIONEER P-D70

CX20017

VWY-061 / VWY-063

PIONEER PD-71

2 x PCM58P-K =96 SM5803AP

PWY1006 - Magnetic

PIONEER PD-73

2 x PCM63P-K

PWY1011 - Magnetic

PIONEER PD-75

2 x PD2028A / B

PWY1004 - Magnetic Stable Platter

PIONEER PD-77

PD2028B

Stable Platter

PIONEER P-D90

CX20017

VWY-061 / VWY-063

PIONEER PD-91

2 x PCM65 =96 YM3414 + PDE023

PWY1004 - Magnetic

PIONEER PD-93

2 x PCM63P-K =96 SM5813AP

PWY1004 - Magnetic

PIONEER PD-95

2 x PD2028A / B

PWY1004 - Magnetic Stable Platter

PIONEER PD-101

PD2026A

PEA1030

PIONEER PD-102

PD2026A

PEA1179

PIONEER PD-103

PD2026B

PEA1179

PIONEER PD-104

PD2026B

PEA1291

PIONEER PD-106

CXD2519Q

PEA1335

PIONEER PD-117

CXD2519Q

PEA1335

PIONEER PD-201

PD2026A

PEA1030

PIONEER PD-202

PD2026A

PEA1179

PIONEER PD-203

PD2026B

PEA1179

PIONEER PD-204

PD2026B

PEA1291

PIONEER PD-206

CXD2519Q

PEA1335

PIONEER PD-217

CXD2519Q

PEA1335

PIONEER PD-306

PD2029A =96 CXD2519Q

PEA1335

PIONEER PD-515

2 x PCM56P-J =96 SM5807EP

PWY1010

PIONEER PD-717

2 x AD1860N-J =96 PD0036

PWY1011 - Magnetic

PIONEER PD-737

2 x PCM58P =96 SM5813AP

PWY1011 - Magnetic

PIONEER PD-2000

2 x PCM58P-K =96 SM5803AP

PWY1006 - Magnetic

PIONEER PD-3000

2 x PCM65

PWY1004 - Magnetic

PIONEER PD-4050

1 x PCM56P-L =96 CXD1130QZ

PWY1010

PIONEER PD-4100

LC7881 =96 PD0034

PWY1009 / PWY1010

PIONEER PD-4500

PCM1700P =96 SM5840BP

PEA1030

PIONEER PD-4550

PCM1700P-L =96 SM5840BP

PEA1030

PIONEER PD-5000

2 x PCM58P-K

PWY1004 - Magnetic

PIONEER PD-5010

CX20152 =96 CX23035

PWY-004

PIONEER PD-5030

CX20152 =96 CX23035

PWY-007

PIONEER PD-5050

1 x PCM56P =96 CXD1130QZ

PWY1010

PIONEER PD-5100

2 x PCM56P =96 PD0034

PWY1010

PIONEER PD-5300

PCM56P-L =96 SM5818AP

PWY1010

PIONEER PD-5500

PCM1700P

PEA1030

PIONEER PD-5700

PD2026A

PEA1030

PIONEER PD-6010

CX20152 =96 CX23035

PWY-004

PIONEER PD-6030

CX20152 =96 CX23035

PWY-007

PIONEER PD-6050

1 x PCM56P-J =96 CXD1135QZ

PWY1010

PIONEER PD-6070

1 x PCM56P-J =96 CXD1135QZ

PWY1010

PIONEER PD-6100

2 x PCM56P

PWY1010

PIONEER PD-6300

2 x PCM61P =96 PD0036

PWY1010

PIONEER PD-6500

PD7007 =96 SM5840AP

PEA1030

PIONEER PD-7010

CX20152

PWY-004

PIONEER PD-7030

CX20152 =96 CX23034

PWY-007

PIONEER PD-7050

2 x PCM56P-J =96 SM5807BP

PWY1010

PIONEER PD-7070

2 x PCM56P-J =96 SM5807EP

PWY1010

PIONEER PD-7100

2 x PCM56P-J =96 PD0036

PWY1011 - Magnetic

PIONEER PD-7300

2 x PCM58P =96 SM5813AP

PWY1011 - Magnetic

PIONEER PD-7500

PD7007 =96 SM5840AP

PEA1030

PIONEER PD-7700

1 x PD2026A

PEA1030 Stable Platter

PIONEER PD-8030

CX20152 =96 CX23034

PWY-004

PIONEER PD-8070

TDA1541

PWY1010

PIONEER PD-8500

2 x PCM63P-J =96 SM5813AP

PWY1011 - Magnetic

PIONEER PD-8700

2 x PD2026A

PEA1030 / PWY1013 Stable Platter

PIONEER PD-9010X

CX20152 =96 CX23034

PWY-004

PIONEER PD-9300

2 x PCM58P-K =96 SM5803AP

PWY1006 - Magnetic

PIONEER PD-9700

2 x PD2028A

PEA1030 Stable Platter

PIONEER PD-D6

2 x PCM1738


PIONEER PD-D9

Wolfson WM8741

SACD

PIONEER PD-F705

PD2029A

PEA1179

PIONEER PD-HL5

PE8001 =96 PD0236AD =96 CXD2507AQ

PEA1335 Stable Platter

PIONEER PD-M6

CX20152

PWY-006

PIONEER PD-M53

PD2026A

PEA1030

PIONEER PD-M59

PD2029A

PEA1179

PIONEER PD-M60

CX20152

PWY-006

PIONEER PD-M70

CX20152

PWY-006

PIONEER PD-M90X

CX20152

PWY-006

PIONEER PD-M400

LC7881 =96 PD0034

PWY1009 / PWY1010

PIONEER PD-M407

PD2026B =96 CXD2519Q

PEA1335

PIONEER PD-M427

PD2026B =96 CXD2519Q

PEA1335

PIONEER PD-M500

LC7881 =96 PD0034

PWY1009 / PWY1010

PIONEER PD-M501

PD2026A

PEA1179

PIONEER PD-M640

PD2026A

PEA1030

PIONEER PD-M650

PD2026A

PEA1030

PIONEER PD-M700

2 x PCM56P-J =96 PD0036

PWY1009 / PWY1010

PIONEER PD-M701

PD2026A

PEA1179

PIONEER PD-M801

PD2026A

PEA1030

PIONEER PD-M900

2 x PCM56P-J =96 PD0036

PWY1009 / PWY1010

PIONEER PD-M901

PD2026A

PEA1030

PIONEER PD-M910

2 x PCM58P-K

PWY1009 / PWY1010

PIONEER PDR-04

AKM4321

Writer

PIONEER PDR-05

2 x PD2028B

Writer =96 Stable Platter

PIONEER PDR-09

2 x PD2028B

Writer =96 Stable Platter

PIONEER PDR-609

PCM1716

Writer

PIONEER PDR-W739

PCM1716

Writer

PIONEER PDR-W839

PCM1716

Writer

PIONEER PD-S06

2 x PCM1702-J =96 PD7009B =96 PD0236AD

PEA1343 Stable Platter

PIONEER PD-S501

PD2026A

PEA1030 Stable Platter

PIONEER PD-S502

PD2026B =96 CXD2500BQ

PEA1179 Stable Platter

PIONEER PD-S503

PD2029A =96 CXD2500BQ

PEA1179 Stable Platter

PIONEER PD-S504

PD2029A =96 CXD2500BQ

PEA1179 Stable Platter

PIONEER PD-S505

PD2029A =96 PD0236AD - CXD2507AQ

PEA1291 Stable Platter

PIONEER PD-S506

PD2029A =96 CXD2507

PEA1335 Stable Platter

PIONEER PD-S507

PE8001A =96 PD0236AM - CXD2507AQ

PEA1335 Stable Platter

PIONEER PD-S601

PD2026A

PEA1030 Stable Platter

PIONEER PD-S602

PD2029A

PEA1179 Stable Platter

PIONEER PD-S603

PD2029A

PEA1179 Stable Platter

PIONEER PD-S604

PD2029A

PEA1179 Stable Platter

PIONEER PD-S605

PD2029A =96 PD0236AD - CXD2507AQ

PEA1291 Stable Platter

PIONEER PD-S701

PD2026A

PEA1030 Stable Platter

PIONEER PD-S702

PD2029A

PEA1179 Stable Platter

PIONEER PD-S703

PD2029A

PEA1179 Stable Platter

PIONEER PD-S705

PD2029A =96 PD0236AD - CXD2507AQ

PEA1291 Stable Platter

PIONEER PD-S707

PE8001A =96 PD0236AD - CXD2507AQ

PEA1335 Stable Platter

PIONEER PD-S801

2 x PD2028B =96 PD0116A

PEA1030 Stable Platter

PIONEER PD-S802

2 x PD2028B =96 PD0116A

PEA1179 / PEA1285 Stable Platter

PIONEER PD-S901

2 x PD2028B =96 PD0116A

PEA1030 Stable Platter

PIONEER PD-S904

2 x PD2028B =96 PD7009A

PEA1179 / PEA1285 Stable Platter

PIONEER PD-T01

PD2026B

PEA1179 Stable Platter

PIONEER PD-T03

PD2026A

PEA1030 Stable Platter

PIONEER PD-T04

2 x PD2028B =96 PD0116A

PEA1179 Stable Platter

PIONEER PD-T05

2 x SAA7350GP =96 SM5840AP

PWY1004 - Magnetic Stable Platter

PIONEER PD-T06

2 x PD2028B

PWY1004 - Magnetic Stable Platter

PIONEER PD-T07

2 x PD2028B

PWY1004 - Magnetic Stable Platter

PIONEER PD-T09

2 x PD2028A / B

PWY1004 - Magnetic Stable Platter

PIONEER PD-UK3

PD2029A

PEA1179 Stable Platter

PIONEER PD-UK5

2 x PD2028B =96 PD0116A

PEA1179 Stable Platter

PIONEER PD-X88

CX20152 =96 CX23035

PWY-007

PIONEER PD-X303

CX20152 =96 CX23035

PWY-004

PIONEER PD-X520

CX20152 =96 CX23035

PWY-007

PIONEER P-DX700

TD6705AP

VWY-061 / VWY-063

PIONEER PD-X707

CX20152 =96 CX23035

PWY-004

PIONEER PD-X737

CX20152 =96 CX23035

PWY-007

PIONEER PD-Z71

LC7881 =96 CXD1135QZ

PWY1010

PIONEER PD-Z82

LC7881 =96 CXD1130Q

PWY1009 / PWY1010

PLINIUS CD-101

2 x PCM1704-J =96 DF1706E

CD-ROM ASUS CD-S520

PMG 8800 E

YM3020


PRIMARE CD21

2 x PCM1738 =96 DIR1703

DVD-ROM DVS DSL-710A

PRIMARE CD31

4 x PCM1704-K =96 DF1704

DVD-ROM DVS DSL-710A

PRIMARE D20

AKM4324

CDM 12.4

PRIMARE D20 Mk II

AKM4324

KSS-213C

PRIMARE D30.2

4 x PCM1702-K =96 DF1704

CDM 12.4

PROCEED CDD

It=92s a Transport

Philips CD-Pro (VAM 1252)

PROCEED CDP

2 x AD1864N-K =96 PMD100

CDM 12 Ind

PROCEED DAP

2 x AD1864N-K =96 PMD100 =96 CS8412-CP

It=92s a DAC

PROCEED MRC100

2 x PCM58P

CDM-1 Mk II

PROCEED PCD

2 x PCM58P =96 SM5813AP

CDM-1 Mk II

PROCEED PCD2

2 x PCM58P =96 SM5813AP

CDM-1 Mk II

PROCEED PCD3

2 x PCM63P

CDM-1 Mk II

PROCEED PDP

2 x PCM58P =96 SM5813APT

It=92s a DAC

PROCEED PDP2

2 x PCM58P =96 SM5813APT =96 YM3623B

It=92s a DAC

PROTON 830R

2 x TDA1540P =96 SAA7030

CDM-2

PROTON AC-300 Mk II

TDA1541A

Philips CDM

PROTON AC-423

LC78820


PROTON AC-424

TDA1311A


PROTON AC-620

TDA1541A

CDM-4

PS AUDIO CD-1

2 x TDA1540P =96 SAA7030

CDM-2

PS AUDIO DIGILINK II

PCM1702 + HDCD

It=92s a DAC

PS AUDIO DIGITAL LINK TWO

2 x AD1860N-K =96 YM3434 - YM3623B

It=92s a DAC

PS AUDIO DIGITAL LINK III

PCM1798 =96 CS8416

It=92s a DAC

PS AUDIO LAMBDA

It=92s a Transport

CDM-9 Pro

PS AUDIO LAMBDA 2

It=92s a Transport

CDM-9 Pro

PS AUDIO REFERENCE LINK II

UA D20400A + 2 x AD1860N-K

It=92s a DAC

PS AUDIO SUPERLINK TWO

2 x AD1860N-K - SM5813APT - YM3623B

It=92s a DAC

PS AUDIO SUPERLINK THREE

2 x PCM63P =96 PMD100

It=92s a DAC

PS AUDIO ULTRALINK

UltraAnalog D20400A =96 SM5803AP

It=92s a DAC

PS AUDIO ULTRALINK TWO

UltraAnalog D20400A =96 PMD100

It=92s a DAC

Top

QUAD 66

TDA1541A =96 SAA7220P/B

CDM-4

QUAD 67

CS4328-KP =96 SAA7310GP

CDM-9/44

QUAD 77

CS4328

CDM 12.4

QUAD 99

CS4396

VAM 1250

Top

RADMOR 5450

TDA1543A

CDM-4/19

RAYSONIC CD128

PCM1732

KSS-213

RAYSONIC CD168

2 x PCM1792

VAM 1202

REALISTIC CD-1000

PCM53JP-V =96 TM5001 (HD61902H)

Hitachi HOP-M14

REGA APOLLO

Wolfson WM8740


REGA JUPITER 2000

Wolfson WM8740

KSS-213

REGA PLANET

PCM1710U

KSS-240A

REGA PLANET 2000

Wolfson WM8716

KSS-213B

REGA SATURN

2 x Wolfson WM8740


RESOLUTION AUDIO Opus 21

4 x PCM1704

DVD-ROM DVS DSL-710A

RESOLUTION AUDIO Quantum

UltraAnalog D20400A + HDCD

It=92s a DAC

RESTEK EPOS

2 x PCM1704-K =96 PMD100

Philips CD-Pro (VAM 1252)

RESTEK RADIANT

1 x PCM56P-J =96 SM5807


REVOX B 126

TDA1541A =96 SAA7220P/B

CDM-1 / CDM-4

REVOX B 225

2 x TDA1540 =96 SAA7030

CDM-0 / CDM-1

REVOX B 226

TDA1541 =96 SAA7220P/A

CDM-1

REVOX B 226 Mk II / Signature

TDA1541A =96 SAA7220P/B

CDM-1

REVOX B 226 S / E

TDA1541A-S1 (Single Crown)

CDM-1 Mk II

REVOX C 221

TDA1305T =96 SAA7350

CDM-4

REVOX E 426

TDA1547 (DAC7) =96 TDA1307

VAM 1205

REVOX H 2

SAA7323GP

CDM-4

ROKSAN ATTESSA DP3P

CS4328


ROKSAN CASPIAN

TDA1305T

Sanyo SF-P1

ROKSAN KANDY KC-1

PCM1716

Sony KSS

ROKSAN KANDY KC-1 Mk III

PCM1730E

Sanyo SF-P101N

ROKSAN ROK-DP1

It=92s a Transport

Sanyo SF-90

ROTEL RCD-02

PCM1732U

KSS-213C

ROTEL RCD-06

PCM1716

KSS-213

ROTEL RCC-955

PCM69


ROTEL RCD-820

TDA1541


ROTEL RCD-850

PCM54HP

MLP-3C

ROTEL RCD-855

TDA1541A =96 SAA7220P/B

CDM-4/19

ROTEL RCD-856BX

SAA7323


ROTEL RCD-865BX

SAA7323

CDM-4

ROTEL RCD-870

2 x TDA1540D =96 SAA7030

HLPL 030010 (Toshiba OPH-31)

ROTEL RCD-940BX

LC78820M =96 LC78840M (filter)

Sanyo SF-P1

ROTEL RCD-945AX

SAA7341GP T

CDM-4

ROTEL RCD-950

TDA1305A

KSS-210A

ROTEL RCD-951

PCM69AP =96 PMD100

KSS-213

ROTEL RCD-955

TDA1541

CDM-4

ROTEL RCD-955AX

TDA1541A =96 SAA7220P/B

CDM-4/19

ROTEL RCD-961

PCM1732U

KSS-213

ROTEL RCD-965BX

SAA7323GP =96 SAA7220P/B

CDM-4/19

ROTEL RCD-970BX

1 x TDA1305T

CDM-9

ROTEL RCD-971

2 x PCM63P =96 PMD100

KSS-213B

ROTEL RCD-975

2 x TDA1305T

CDM-9

ROTEL RCD-990

2 x PCM63P =96 PMD100

CDM-9 Pro

ROTEL RCD-991

2 x PCM63P =96 PMD100

KSS-213B

ROTEL RCD-1070

PCM1732U

KSS-213C

ROTEL RCD-1072

PCM1732

KSS-213C / KSS-213CL

ROTEL RDD-980

It=92s a Transport

CDM-9

ROTEL RDP-980

AK4328-VP =96 CS8412-CP

It=92s a DAC

Top

SABA CD-1015

PCM56P

KSS-123A ?

SABA CDP 380

Hitachi HA16633P / PCM53JG-V

Hitachi (DA-1000)

SABA CDP 480

PCM53JG-V =96 TM5001 (HD61902H)

Hitachi (DA-1000)

SAE D102

2 x TDA1540P =96 SAA7030

CDM-2

SAE D103

TDA1541

CDM-2 / CDM-4

SAMSUNG CD-42

LC7881

Samsung SOH-OT1

SANSUI CD-200

KDA0316 (Samsung)


SANSUI CD-a7

SM5874AM

KSS-210A

SANSUI CD-a317R

2 x MN6474M

KSS-240A

SANSUI CD-a507

2 x PCM1702

KSS-213B

SANSUI CD-a607

2 x PCM1704U =96 PMD100

KSS-213

SANSUI CD-a617DR

MN6474M

KSS-152 - Magnetic

SANSUI CD-a707

1 x PCM54HP-J =96 SM5806P

Sansui S-706HB / 18734900

SANSUI CD-a707i

2 x PCM56P-S =96 CXD1088

KSS-152A

SANSUI CD-a717DR

2 x MN6474M =96 YM7402

KSS-152 - Magnetic

SANSUI CD-a717EXTRA

1 x MN6471M

KSS-152 - Magnetic

SANSUI CD-a907

2 x PCM56P-S =96 SM5804B

Sansui S-706HB / 18734900

SANSUI CD-E910

2 x PCM56P


SANSUI CD-V550

TD6709

KSS-123A

SANSUI CD-V1000

PCM56

KSS-210A

SANSUI CD-X105

YM3020 =96 YM3805

Sanyo

SANSUI CD-X217

MN6474M =96 CXD1167Q

KSS-150A / KSS-210A

SANSUI CD-X301i

LC7881 =96 CXD1135QZ

KSS-210A

SANSUI CD-X311

MN6471M / MN6623 =96 CXD1125QZ

KSS-210A

SANSUI CD-X501i

2 x PCM56P =96 SM5807BP

KSS-150A

SANSUI CD-X510M

LC7881 =96 CXD1135Q

KSS-150A / KSS-210A

SANSUI CD-X701

1 x PCM54HP-J =96 SM5806P

Sansui S-706HB / 18734900

SANSUI CD-X701i

2 x PCM56P-S =96 CXD1088

KSS-152A

SANSUI CD-X711

1 x MN6471M

KSS-152 - Magnetic

SANSUI CD-X901

2 x PCM56P-S =96 SM5804B

Sansui S-706HB / 18734900

SANSUI PC-V300

PCM53JP-V =96 YM2201F =96 YM3511F

MLP-1C

SANSUI PC-V500

2 x TDA1540D =96 SAA7030


SANSUI PC-V1000

2 x TDA1540D =96 SAA7030


SANYO CP 489

LC7881

Sanyo SF-P1

SANYO CP 900

CX20152

Sanyo SF

SANYO CP 6150

CX20152

Sanyo SF

SANYO CP 6155

LC7880

Sanyo SF-86

SANYO CP 7150

LC7880

Sanyo SF-86

SANYO CP 8500

2 x PCM56P-L =96 PD0029

Sanyo SF-88

SANYO DAD 8

CX20017 / PCM51JG-V

4 180T00271 (Toshiba OPH-31)

SANYO DAD M15

2 x TDA1540D =96 SAA7030

Same as Toshiba OPH-32

SCHNEIDER CD 1005

2 x TDA1540P =96 SAA7030

CDM-2/10

SCHNEIDER CD 1104

2 x TDA1540P =96 SAA7030

CDM-1

SCHNEIDER CD 6200 InConcert

PCM56P

KSS-152A

SCHNEIDER CDP7100

Sanyo LC7881M / Hitachi HA12108MP

Sanyo SF-88

SCHNEIDER CDP7101

Sanyo LC7881M / Hitachi HA12108MP

Sanyo SF-88

SCHNEIDER CDP7102

Sanyo LC7881M / Hitachi HA12108MP

Sanyo SF-88

SCHNEIDER CDP7402

1 x PCM56P

KSS-152A

SCHNEIDER CDP7500

CX20133 =96 CX23035

KSS-123A

SCHNEIDER CDP8000

PCM53JG-V


SEG CD200

YM3020


SENCOR S-334

YM3020 =96 YM3805

Hitachi HOP-M14

SENTEC DIANA

2 x PCM63P =96 DF1700P =96 CS8412

It=92s a DAC

SHANLING CD-50

CS4390

CDM 12.10

SHANLING CD100

PCM1738

VAM 12

SHANLING CD300

2 x PCM1794

CDM 12.10

SHANLING CD500

4 x PCM1704U-K =96 SM5847

Philips CD-Pro 2 (VAM 1254)

SHANLING CD-A10T

PCM1732

CDM 12

SHANLING CD-A24

4 x PCM1704 =96 PMD200

CDM 12.10

SHANLING CD-S100

PCM1732

CDM 12.10

SHANLING CD-S100 Mk II

PCM1738

CDM 12.10

SHANLING CD-T80

PCM1738

CDM 12.10

SHANLING CD-T100

4 x PCM1704 =96 PMD200

CDM 12.10

SHANLING CD-T100SE

2 x PCM1792

VAM 1201

SHANLING CD-T150

2 x PCM1794

Philips CD-Pro 2 (VAM 1254)

SHANLING CD-T200

PCM1738 =96 CXD2753 SACD

Sony KHM-280AAA

SHANLING CD-T300

8 x PCM1704-K =96 SM5847AF

Philips CDM-4

SHANLING DAC-1

4 x PCM1704 =96 PMD200 =96 CS8420-CS

It=92s a DAC

SHANLING HDCD-S12

PCM1732

CDM 12.10

SHANLING SCD300 SACD

PCM1792 =96 CXD2753

Sony KHM-280A

SHANLING SCD-S300 SACD

PCM1738

SACD

SHANLING SCD-T200 SACD

PCM1738 =96 CXD2753R

Sony KHM-280A

SHARP DX-3

CX20017

Sharp RCTRH0050AFZZ

SHARP DX-A1

Sharp IR3K16AM


SHARP DX-112

Sharp IR3K16BM


SHARP DX-450

LC7880

Sharp RCTRH8108

SHARP DX-500

CX20017

Sharp RCTRH0051AF

SHARP DX-650

LC7880

Sharp RCTRH8112

SHARP DX-SX1

PCM1716

Sony

SHENG YA CD-S3

PCM1732

CDM 12

SHENG YA CD-S10

PCM1732

CDM 12

SHERWOOD CD-1

TDA1547 =96 SM5813 =96 SAA7350

CDM-9 Pro

SHERWOOD CD-772

AD1852


SHERWOOD CD-880

2 x AD1862

KSS-213C

SHERWOOD CD-980

2 x PCM1702-K


SHERWOOD CD-1060C

=B5PD6372CX =96 SM5807

KSS-210A

SHERWOOD CD-1160R

PCM56


SHERWOOD CD-1192R

YM4113B


SHERWOOD CD-3020

SM5871AN

KSS-210A

SHERWOOD CD-4010R

2 x AD1861

KSS-210A

SHERWOOD CD-4030R

SAA7350BS =96 YM3433


SHERWOOD CD-5090R

CXD2587Q

KSS-213B

SHERWOOD CD-7080R

2 x PCM1702-K


SHERWOOD CDC-2000C

=B5PD6376


SHERWOOD CDC-2010RC

=B5PD6376


SHERWOOD CDP-100

PCM53JP-V =96 YM2201F =96 YM3511F

MLP-1C

SHERWOOD CDP300R

2 x TDA1540P =96 SAA7030

CDM-2

SHERWOOD CDP301R

TDA1541 =96 SAA7220P/A

CDM-2

SHERWOOD CDP310R

2 x TDA1540P =96 SAA7030

CDM-2/10

SIEMENS RW 725

CX20017 / PCM51JG-V

4 180T00271 (Toshiba OPH-31)

SIEMENS RW 726

YM3015


SIGTONE SHEK D1

TDA1543A =96 CS8412-IS

It=92s a DAC

SIGTONE SHEK D2

TDA1545A =96 CS8412-IS

It=92s a DAC

SIMAUDIO MOON ANDROMEDA

PCM1704U-K =96 DF1704

Philips CD-Pro 2 (VAM 1254)

SIMAUDIO MOON ECLIPSE

4 x PCM1704-K =96 DF1704 - PMD100

Philips CD-Pro 2 (VAM 1254)

SIMAUDIO MOON EQUINOX

PCM1730E

Philips L1210

SIMAUDIO MOON NOVA

2 x PCM1704-J =96 DF1704

Philips CD-Pro (VAM 1252)

SIMAUDIO MOON SUPERNOVA

PCM1798

Philips

SONIC FRONTIERS ANTHEM

2 x PCM1702 =96 PMD100

KSK-2000A

SONIC FRONTIERS Processor 3

2 x UltraAnalog D20400A =96 PMD100

It=92s a DAC

SONIC FRONTIERS SFCD-1

UltraAnalog D20400A =96 PMD100

CDM 12.4

SONIC FRONTIERS SFD-1

UltraAnalog D20400A =96 SM5803APT

It=92s a DAC

SONIC FRONTIERS SFD-1 Mk II

UltraAnalog D20400A =96 PMD100

It=92s a DAC

SONIC FRONTIERS SFD-2

2 x UltraAnalog D20400A =96 SM5803AP

It=92s a DAC

SONIC FRONTIERS SFD-2 Mk II

2 x UltraAnalog D20400A =96 PMD100

It=92s a DAC

SONIC FRONTIERS Transdac

2 x PCM1702-J =96 DF1700P

It=92s a DAC

SONIC FRONTIERS Transport 1

It=92s a Transport

CDM 12 Ind

SONIC FRONTIERS Transport 3

It=92s a Transport

Philips CD-Pro (VAM 1252)

SONNETEER BYRON

AKM2496 =96 CS8412-CP

CDM 12.1

SONY CDP-25

PCM54HP

KSS-120C

SONY CDP-35

PCM54HP =96 CX23035

KSS-120C

SONY CDP-38

LC7880

KSS-150A

SONY CDP-40

1 x PCM54HP-J =96 CX23035

KSS-121A / KSS-123A

SONY CDP-45

PCM54HP

KSS-121A

SONY CDP-48

LC7880

KSS-150A

SONY CDP-50

PCM54HP-J

KSS-123

SONY CDP-55

PCM54HP-J

KSS-121A / KSS-123A

SONY CDP-65

PCM54HP-J

KSS-121A / KSS-123A

SONY CDP-68

1 x TDA1541 =96 CXD1088

KSS-150A

SONY CDP-70

CX20017

KSS-122A

SONY CDP-101

CX20017

KSS-100A

SONY CDP-102

CX20152

Sony BU-1

SONY CDP-103

CX20152 =96 CX23034

Sony BU-1C

SONY CDP-111

CX20017

KSS-100A

SONY CDP-195

CXD2552AQ =96 CXD2554P

KSS-240A

SONY CDP-203ES

CX20152 =96 CX23034

KSS-123A

SONY CDP-205ESD

PCM56P-J =96 CX23034

KSS-150A

SONY CDP-207ESD

1 x TDA1541 =96 CXD1088

KSS-150A

SONY CDP-208ESD

2 x PCM56P

KSS-150A

SONY CDP-209ES

CXD2552Q =96 CXD2551P

KSS-240A

SONY CDP-211

CXD2565M =96 CXD2515Q

KSS-240A

SONY CDP-222ES

2 x PCM56P-J =96 CX23034

KSS-151A

SONY CDP-222ESD

1 x TDA1541 =96 CXD1088

KSS-151A

SONY CDP-227ESD (Old ver.)

1 x TDA1541 =96 CXD1088

KSS-151A

SONY CDP-227ESD (New ver.)

2 x TDA1541A-R1 =96 CXD1144

KSS-151A

SONY CDP-228ESD

2 x PCM58P-J =96 CXD1244

KSS-151A

SONY CDP-250

CXD1161P =96 CXD1162

KSS-150A

SONY CDP-255

LC7880

KSS-150A

SONY CDP-270

LC7881

KSS-210A

SONY CDP-291

TDA1543A =96 CXD2554M

KSS-240A

SONY CDP-295

CXD2552AQ =96 CXD2554P

KSS-240A

SONY CDP-297

CXD2561BM C-Pulse =96 CXD2560M

KSS-240A

SONY CDP-301V

TDA1541 =96 CXD1088

KSS-210A

SONY CDP-302ES

CX20152 =96 CX23034

Sony BU-1

SONY CDP-303ES

CX20152 =96 CX23034

Sony BU-1C

SONY CDP-303ESII

CX20152

Sony BU-1C

SONY CDP-307ESD

1 x TDA1541A =96 CXD1088A

KSS-150A

SONY CDP-308ESD

PCM58P =96 CXD1244

KSS-210A

SONY CDP-311

CXD2565M =96 CXD2515Q

KSS-240A

SONY CDP-313

CXD2565M

KSS-213B / KSS-240A

SONY CDP-315

CXD2565M

KSS-240A

SONY CDP-333ES

CXD2562

KSS-240A

SONY CDP-333ESA

1 x CXD2562Q =96 CXD2560M

KSS-272A

SONY CDP-333ESD

1 x TDA1541 =96 CXD1088

Sony BU-1E

SONY CDP-333ESJ

1 x CXD2562Q =96 CXD2567M

KSS-272A

SONY CDP-337ESD

2 x TDA1541A =96 CXD1144

KSS-190A

SONY CDP-338ESD

2 x PCM58P-J =96 CXD1244

KSS-151A

SONY CDP-361

CXD2565

KSS-240A

SONY CDP-390

TDA1543A =96 CXD2551

KSS-210A

SONY CDP-391

TDA1543A =96 CXD2554M

KSS-240A

SONY CDP-395

CXD2552Q =96 CXD1244

KSS-240A

SONY CDP-397

CXD2561BM C-Pulse =96 CXD2560M

KSS-240A

SONY CDP-400

CX20017

KSS-100A

SONY CDP-411

CXD2565M =96 CXD2515Q

KSS-240A

SONY CDP-450

CXD1161P =96 CXD1162

KSS-150A

SONY CDP-470

CXD1161P =96 CXD2550

KSS-210A

SONY CDP-490

2 x PCM56P =96 CXD2554P

KSS-210A

SONY CDP-491

CXD2552AQ =96 CXD2554P

KSS-240A

SONY CDP-497

CXD2561BM C-Pulse =96 CXD2560M

KSS-240A

SONY CDP-501ES

CX20017

KSS-100A

SONY CDP-502ES

CX20152 =96 CX23034

Sony BU-1

SONY CDP-502ES II

2 x PCM53JP-V-K

Sony BU-1C

SONY CDP-505ESD

1 x TDA1541 =96 CXD1088

KSS-151A

SONY CDP-507ESD

2 x TDA1541A-R1 =96 CXD1144

KSS-151A

SONY CDP-508ESD

2 x PCM58P-1 =96 CXD1244

KSS-151A

SONY CDP-510

PCM56P

KSS-210A

SONY CDP-511

CXD2565M =96 CXD2515Q

KSS-240A

SONY CDP-520ES

CX20152

Sony BU-1

SONY CDP-552ESD

CX20152 =96 CX23034

Sony BU-1

SONY CDP-552ESD II

2 x PCM53JP-V-K =96 CX23034

Sony BU-1C

SONY CDP-553ESD

2 x PCM53JP-V-K =96 CX23034

Sony BU-1C

SONY CDP-555ESA

1 x CXD2562Q =96 CXD2560M

KSS-272A

SONY CDP-555ESD

1 x TDA1541A =96 CXD1088Q

Sony BU-1E

SONY CDP-555ESJ

1 x CXD2562Q =96 CXD2567M

KSS-272A

SONY CDP-557ESD

2 x PCM64P =96 CXD1144

KSS-190A

SONY CDP-561

CXD8505Q

KSS-213B

SONY CDP-590

2 x PCM56P =96 CXD2554P

KSS-210A

SONY CDP-591

CXD2552AQ =96 CXD1244

KSS-240A

SONY CDP-597

CXD2561AM C-Pulse =96 CXD2560M

KSS-240A

SONY CDP-605ESD

TDA1541 =96 CXD1088

Sony BU-1E

SONY CDP-608ESD

2 x PCM58P-J =96 CXD1244

KSS-151A

SONY CDP-610ES

CX20017

KSS-100A

SONY CDP-620ES

CX20152 =96 CX23034

Sony BU-1

SONY CDP-620ES II

2 x PCM53JP-V-K

Sony BU-1C

SONY CDP-650ESD

PCM53JP / CX20152=96 CX23034

Sony BU-1

SONY CDP-650ESD II

2 x PCM53JP-V-K =96 CX23034

Sony BU-1C

SONY CDP-670

2 x PCM56P =96 CXD2550

KSS-210A

SONY CDP-690 (Old ver.)

2 x AD1860N =96 CXD2551

KSS-240A

SONY CDP-690 (New ver.)

1 x CXD2552Q =96 CXD2554P

KSS-240A

SONY CDP-701ES

2 x CX890 / CX20017

KSC-100A (Toshiba OPH-31)

SONY CDP-705ESD

1 x TDA1541A =96 CXD1088Q

Sony BU-1E

SONY CDP-707ESD

2 x PCM64P =96 CXD1144

KSS-190A

SONY CDP-710

1 x TDA1541 =96 CXD1088

KSS-150A / KSS-210A

SONY CDP-750

1 x TDA1541 =96 CXD1088

KSS-210A

SONY CDP-770

2 x PCM56P =96 CXD2550

KSS-210A

SONY CDP-771

CXD2552Q =96 CXD1244

KSS-240A

SONY CDP-777ESA

2 x CXD2562Q =96 CXD2560M

KSS-272A

SONY CDP-777ESJ

2 x CXD2562Q

KSS-272A

SONY CDP-790 (Old ver.)

2 x AD1860N-T =96 CXD2551P

KSS-240A

SONY CDP-790 (New ver.)

1 x CXD2552Q =96 CXD2551P

KSS-240A

SONY CDP-791

CXD2552Q =96 CXD1244

KSS-240A

SONY CDP-797

CXD2561AM-1 C-Pulse =96 CXD2560M

KSS-240A

SONY CDP-910

1 x TDA1541 =96 CXD1088

KSS-151A

SONY CDP-911

CXD2562Q =96 CXD2567M

KSS-240A

SONY CDP-915

CXD2562Q

KSS-240A

SONY CDP-950

1 x TDA1541A =96 CXD1088A

KSS-150A / KSS-210A

SONY CDP-970

2 x PCM58P-1 =96 CXD1244

KSS-210A

SONY CDP-990 (Old ver.)

4 x AD1860N-K =96 CXD1244

KSS-240A

SONY CDP-990 (New ver.)

1 x CXD2552Q-3 =96 CXD1244

KSS-240A

SONY CDP-991

CXD2552Q =96 CXD1244

KSS-240A

SONY CDP-2700

2 x AD1860N =96 CXD1244

KSS-240A

SONY CDP-C5M

1 x PCM56P

KSS-210A

SONY CDP-C100

TDA1541A

KSS-210A

SONY CDP-CA70ES

CXD8505BQ + CXA8055M

KSS-213B

SONY CDP-CA80ES

CXD8505BQ + CXA8055M

KSS-213B

SONY CDP-CE315

CXD8567AM

KSS-213B

SONY CDP-CE515

CXD8567AM =96 CXD2545Q

KSS-213BA

SONY CDP-D500

2 x PCM1702-J =96 SM5843

KSS-213B

SONY CDP-M7

PCM1710U

KSS-213B

SONY CDP-M11

CXD2552 =96 CXD2554 (filter)

KSS-240A

SONY CDP-M12

TDA1543

KSS-210A / KSS-240A

SONY CDP-M18

TDA1543A =96 CXD2554P

KSS-240A

SONY CDP-M20

1 x PCM56P =96 CXD1135Q

KSS-150A

SONY CDP-M25

LC7881

KSS-150A

SONY CDP-M30

1 x PCM56P =96 CXD1135Q

KSS-150A

SONY CDP-M31

CXD2552

KSS-240A

SONY CDP-M35

CXD1161 =96 CXD1162

KSS-150A

SONY CDP-M46

CXD2565M =96 CXD2515Q

KSS-240A

SONY CDP-M49

2 x PCM56P

KSS-210A

SONY CDP-M51

CXD2552Q

KSS-240A

SONY CDP-M69

2 x PCM56P

KSS-240A

SONY CDP-M70

PCM56P =96 CXD1088

KSS-210A

SONY CDP-M75

TDA1541 =96 CXD1088

KSS-210A

SONY CDP-M77

PCM56P =96 CXD2550P

KSS-150A

SONY CDP-M79

2 x AD1860N =96 CXD2551P

KSS-240A

SONY CDP-M95

TDA1541 =96 CXD1088

KSS-150A / KSS-210A

SONY CDP-M97

PCM56P =96 CXD2550P

KSS-150A

SONY CDP-MS1

CXD8594 + CXA8042AS

KSS-274A / KSS-240A

SONY CDP-R1

It=92s a Transport =96 CXD1125

KSS-190A

SONY DAS-R1

2 x TDA1541A-S1 =96 CXD1144

It=92s a DAC

SONY CDP-R1A

It=92s a Transport

KSS-151A

SONY DAS-R1A

2 x CXD2552Q - CXD1244 - CXD2900

It=92s a DAC

SONY CDP-R3

2 x CXD2552Q

KSS-151A

SONY CDP-S37

Sanyo LC9600

KSS-211A

SONY CDP-S41

TDA1544 =96 CXD2554P

KSS-240A

SONY CDP-S207

Sanyo LC9600

KSS-211A

SONY CDP-X7ESD

2 x PCM58P-S =96 CXD1244

KSS-190A

SONY CDP-X33ES

1 x CXD2552Q =96 CXD1244

KSS-270A / KSS-151A

SONY CDP-X55ES

CXD2552Q =96 CXD1244

KSS-270A / KSS-151A

SONY CDP-X77ES

2 x CXD2552Q-1 =96 CXD1244

KSS-280A

SONY CDP-X111ES

CXD2552Q =96 CXD1244

KSS-240A

SONY CDP-X202ES

CXD2562Q =96 CXD2567M

KSS-240A

SONY CDP-X222ES

2 x CXD2552Q-3 =96 CXD1244

KSS-240A

SONY CDP-X229ES

CXD2562Q

KSS-240A

SONY CDP-X303ES

1 x CXD2562Q =96 CXD2567M

KSS-272A

SONY CDP-X333ES

2 x CXD2552Q-2 =96 CXD1244

KSS-271A

SONY CDP-X339ES

1 x CXD2562Q =96 CXD2560M

KSS-272A

SONY CDP-X505ES

1 x CXD2562Q =96 CXD2567M

KSS-272A

SONY CDP-X555ES

2 x CXD2552Q-2 =96 CXD1244

KSS-271A

SONY CDP-X559ES

1 x CXD2562Q =96 CXD2560M

KSS-272A

SONY CDP-X707ES

2 x CXD2562Q

KSS-272A

SONY CDP-X777ES

2 x CXD2552BQ =96 CXD1244

KSS-281A

SONY CDP-X779ES

2 x CXD2562Q =96 CXD2560M

KSS-272A

SONY CDP-X900

CXA8042

KSS-313A

SONY CDP-X3000

CXD2562Q + 2 x CXA8042AS

Fixed Pick-Up KSS-213B

SONY CDP-X5000

CXD2562Q + 2 x CXA8042AS

Fixed Pick-Up KSS-274A

SONY CDP-XA1ES

CXD8505Q =96 CXD2515Q

KSS-213B / KSS-240A

SONY CDP-XA2ES

CXD2562Q + 2 x CXA8042S

KSS-213B

SONY CDP-XA3ES

CXD2562Q + 2 x CXA8042S

KSS-240A

SONY CDP-XA5ES

CXD2562Q + 2 x CXA8042S

Fixed Pick-Up KSS-273A

SONY CDP-XA7ES

CXD2562Q + 2 x CXA8042AS

Fixed Pick-Up KSS-273A

SONY CDP-XA20ES

CXD8505BQ + 2 x CXA8042AS

KSS-213B

SONY CDP-XA30ES

CXD2562Q + 2 x CXA8042AS

Fixed Pick-Up KSS-213B

SONY CDP-XA50ES

CXD2562Q + 2 x CXA8042AS

Fixed Pick-Up KSS-273A / B

SONY CDP-XA55ES

CXD8594Q + CXA8042S - CXD8762Q

Fixed Pick-Up KSS-273B

SONY CDP-XA555ES

CXD8762Q - CXD9521Q - CXA8042AS

Fixed Pick-Up KSS-273B

SONY CDP-XB630

CXD8567AM =96 CXA2568M

KSS-213BA

SONY CDP-XB720E

CXD8735N =96 CXA2568M

KSS-213BA

SONY CDP-XB740E

CXD9556Q =96 CXD2585Q

Sony CDM14 =96 KSS-213BA

SONY CDP-XB820

CXD8735N =96 CXA2568M

KSS-213B

SONY CDP-XB920

CXD8735N + CXA8055M


SONY CDP-XB930

CXD8735N - CXA8055M - CXA2568

Fixed Pick-Up KSS-213BA

SONY CDP-XE200

CXD8567AM =96 CXD2545Q

Sony CDM14 =96 KSS-213B

SONY CDP-XE220

CXD2529Q =96 CXA1992AR

Sony CDM14 =96 KSS-213BA

SONY CDP-XE270

CXD2587Q =96 CXA2581N

KSS-213C

SONY CDP-XE300

CXD8567AM =96 CXD2545Q

Sony CDM14 =96 KSS-213B

SONY CDP-XE310

CXD8567

Sony CDM14 =96 KSS-213BA

SONY CDP-XE320

CXD2529Q =96 CXA1992AR

Sony CDM14 =96 KSS-213BA

SONY CDP-XE330

CXD2529Q

Sony CDM14 =96 KSS-213BA

SONY CDP-XE370

CXD2587Q =96 CXA2581N

PXR-104X / KSS-213C

SONY CDP-XE500

CXD8567AM =96 CXD2545Q

Sony CDM14 =96 KSS-213B

SONY CDP-XE510

CXD8567AM =96 CXD2545Q

Sony CDM14 =96 KSS-213B

SONY CDP-XE520

CXD8567AM =96 CXD2585Q

Sony CDM14 =96 KSS-213BA

SONY CDP-XE530

CXD8567AM =96 CXD2585Q

Sony CDM14 =96 KSS-213BA

SONY CDP-XE570

CXD2587Q =96 CXA2581N

PXR-104X (1-796-033-11)

SONY CDP-XE700

CXD8567AM =96 CXD2545Q

Fixed Pick-Up =96 KSS-213B

SONY CDP-XE800

CXD8505BQ

Fixed Pick-Up =96 KSS-213B

SONY CDP-XE900

CXD8505BQ + CXA8055M

Fixed Pick-Up =96 KSS-213B

SONY DAS-702ES

2 x PCM53

It=92s a DAC

SONY DAS-703ES

2 x PCM53JP-I-K =96 CXD1058

It=92s a DAC

SONY SCD-XB790

CXD9709Q


SOUNDSTREAM DAC-1

1 x PCM67P =96 DF1700P =96 YM3623B

It=92s a DAC

SOUNDWAVE CD1100

LC7881


SPECTRAL SDR-1000

2 x TDA1541A-S1 (Single Crown)

CDM-1

SPECTRAL SDR-2000

2 x UltraAnalog D20400A =96 PMD100

It=92s a DAC

SPECTRAL SDR-3000

It=92s a Transport

VRDS CMK-2 =96 KSS-151A

SPECTRAL SDR-4000

2 x AD1853 =96 PMD100

TEAC VRDS

SPHINX MYTH 9

TDA1305

CDM 12

SPHINX PROJECT 32

4 x PCM1704 =96 PMD100

CDM 12.4

STAX CDP QUATTRO

PCM54HP

MLP-3C

STAX CDP QUATTRO II

PCM56P =96 YM3414


STAX DAC-TALENT

2 x PCM63P =96 SM5803

It=92s a DAC

STAX DAC-TALENT BD

4 x PCM1702 =96 SM5843 =96 YM3623B

It=92s a DAC

STAX DAC-X1T

2 x UltraAnalog D20400 =96 SM5803

It=92s a DAC

STUDER A725

2 x TDA1540 =96 SAA7030

CDM-0 / CDM-1

STUDER A727

TDA1541A-S1 (Single Crown)

CDM-1

STUDER A730

TDA1541A-S1 (Double Crown)

CDM-3

STUDER D730

TDA1547 (DAC7) =96 SM5813APT

CDM-4/36 Pro Metallic

STUDER D731

TDA1547 (DAC7) =96 SM5813APT

CDM-4/36 Pro Metallic

STUDER D732

TDA1305T

CDM-4 Pro

SUGDEN CD21

TDA1549T

CDM 12.1

SUGDEN CD21SE

TDA1305

CDM 12

SUGDEN CDT1

TDA1541


SUGDEN MASTER

TDA1549

CDM 12.1

SUGDEN MASTERCLASS

TDA1541A-S1-Crown =96 SAA7220P/B

CDM 12.1

SUGDEN OPTIMA

TDA1543


SUGDEN SDA-1

TDA1541A-S1 (Single Crown)

It=92s a DAC

SUGDEN SDT-1

TDA1541A-S1 (Single Crown)

CDM-9/44

SYLVANIA CD1460

TDA1541

CDM-2

SYLVANIA CD1473

TDA1541 =96 SAA7220P/A

CDM-2

SYLVANIA FDC303

2 x TDA1540D =96 SAA7030

CDM-0

SYLVANIA FDD304

2 x TDA1540P =96 SAA7030

CDM-1

Top

T+A CD1000 AC

TDA1541 =96 SAA7220P/A

CDM-2/29

T+A CD1200R

TDA1547

CDM-9

T+A CD1210R

SM5864AP

CDM 12.3

T+A CD1220R

2 x SM5864AP + 2 x PCM63P-K

CDM 12.4

T+A CD1230R

2 x AD1853

VAM 1250

T+A CD1240R

2 x SM5864AP + 2 x PCM63P-K

VAM 1250

T+A CD1400AC

SM5864

CDM-9 Pro

T+A CD1500R

SM5864AP + PCM1702-K

CDM-9

T+A CD3000R

SM5864AP + PCM1702-K

CDM-9

TAG McLAREN CD20R

CS4329

CDM 12.4

TAG McLAREN F3 CDT20

It=92s a Transport

CDM 12.4

Talk Electronics Thunder 2

CS4390

Sony CDM14 (KSS-213BA)

Talk Electronics Thunder 3

CS4390

Sony CDM14 (KSS-213BA)

TANDBERG TCP 3015A

2 x TDA1540 =96 SAA7030

CDM-2

TANDBERG TCP 3015A 16 bit

TDA1541 =96 SAA7220

CDM-2

TASCAM CD-201

MN6474

KSS-210A

TASCAM CD-301

MN6474M

KSS-210A

TASCAM CD-401

2 x PCM54HP

KSS-151A

TASCAM CD-401 Mk II

SAA7350AGP =96 SM5840AP

KSS-151A

TASCAM CD-501

2 x PCM53JP-V =96 CX23034

MLP-3C

TASCAM CD-701

2 x PCM54HP =96 CXD1162

VRDS CMK-3 =96 KSS-151A

TEAC C-1D

PCM1710U


TEAC CD-5

SAA7350 =96 SM5840AP

KSS-210A

TEAC CD-P1100

TDA1305

Sanyo SF-91

TEAC CD-P1440R

=B5PD63711

Sanyo SF-P101

TEAC CD-P1450

=B5PD63711

Sanyo SF-P101

TEAC CD-P1820

PCM1710


TEAC CD-P3000

MN6474M

KSS-150A / KSS-210A

TEAC CD-P3500

SAA7350

KSS-210A

TEAC CD-P4500

SAA7350GP =96 SM5840AP

KSS-210A

TEAC CD-Z500

2 x TDA1541A =96 PD0050

KSS-150A

TEAC CD-Z5000

2 x TDA1541A =96 PD0050

KSS-210A

TEAC CPD3450SE

YDC103


TEAC D-1 ESOTERIC

2 x PCM64P

It=92s a DAC

TEAC P-1 ESOTERIC

It=92s a Transport

VRDS CMK-4 =96 KSS-151A

TEAC D-01 ESOTERIC

8 x PCM1704

It=92s a DAC

TEAC P-01 ESOTERIC

It=92s a Transport

VRDS-NEO

TEAC D-2 ESOTERIC

4 x PCM1701P-K

It=92s a DAC

TEAC P-2 ESOTERIC

It=92s a Transport

VRDS CMK-3 =96 KSS-151A

TEAC D-3 ESOTERIC

8 x AD1862N-J =96 SM5843AP

It=92s a DAC

TEAC D-03 ESOTERIC

8 x AD1955

It=92s a DAC

TEAC P-03 ESOTERIC

It=92s a Transport

VRDS-NEO

TEAC D-70 ESOTERIC

4 x PCM1704

It=92s a DAC

TEAC P-70 ESOTERIC

It=92s a Transport =96 CXD2545Q

VRDS CMK-3-S =96 KSS-151A

TEAC D-500

2 x TDA1541A-S1 =96 SM5813

It=92s a DAC

TEAC P-500

It=92s a Transport

VRDS CMK-4 =96 KSS-151A

TEAC D-700

4 x AD1862N =96 SM5813APT

It=92s a DAC

TEAC P-700

It=92s a Transport

VRDS CMK-3 =96 KSS-151A

TEAC D-T1

2 x TDA1547 (DAC7) + 2 x SAA7350

It=92s a DAC

TEAC P-2S ESOTERIC

It=92s a Transport =96 CXD1125

VRDS CMK-2 =96 KSS-151A

TEAC P-30 ESOTERIC

It=92s a Transport =96 CXD2500AQ

VRDS CMK-3 =96 KSS-151A

TEAC PD-11

PCM53JP-V =96 YM2201F =96 YM3511F

MLP-1C

TEAC PD-155mk2

Y3015


TEAC PD-160

TC9218F

9A0102660

TEAC PD-175

Y3015


TEAC PD-365

LC7881 =96 YM7121B

Sanyo SF-90

TEAC PD-435

Sanyo LC97000

Sanyo SF-P1 / SF-90

TEAC PD-495

Sanyo LC97000 - LC7866

Sanyo SF-90

TEAC PD-555

Sanyo LC97000 - LC7866

Sanyo SF-90

TEAC PD-H300C

TC9462F

KSS-213

TEAC PD-H500C

PCM69AP =96 SM5841AP

KSS-213

TEAC S-Z1 ESOTERIC

CS4398

VRDS-NEO

TEAC VRDS-7

2 x SAA7350GP =96 SM5840AP

VRDS CMK-4 =96 KSS-240A

TEAC VRDS-8

4 x PCM1702 =96 SM5843AP

VRDS CMK-4.5

TEAC VRDS-9

4 x PCM1702 =96 SM5840

VRDS CMK-4.2

TEAC VRDS-10

2 x TDA1547 =96 SAA7350 =96 SM5840AP

VRDS CMK-3.2 =96 KSS-151A

TEAC VRDS-10SE

2 x TDA1547 + 2 x SAA7350 - SM5840

VRDS CMK-3.2 =96 KSS-151A

TEAC VRDS-20

2 x TDA1547 =96 SAA7350 =96 SM5840

VRDS CMK-3 =96 KSS-151A

TEAC VRDS-25

4 x AD1862N-J - SM5843 - CXD2545

VRDS CMK-3 =96 KSS-151A

TEAC VRDS-25X / XS

4 x AD1862N-J - SM5843 - CXD2545

VRDS CMK-3.2 =96 KSS-151A

TEAC VRDS-50

NSdap FN1241

VRDS CMK-3.2 =96 KSS-151A

TEAC VRDS-T1

It=92s a Transport

VRDS CMK-4 =96 KSS-240A

TEAC X-1 ESOTERIC

4 x AD1862N-J =96 SM5813AP

VRDS CMK-3 =96 KSS-151A

TEAC X-1S ESOTERIC

4 x AD1862N-J =96 SM5813APT

VRDS CMK-2 =96 KSS-151A

TEAC X-01 ESOTERIC

8 x PCM1704 =96 SM5847AF

VRDS-NEO

TEAC X-03 ESOTERIC

4 x PCM1704

VRDS-NEO

TEAC ZD-700

1 x PCM53


TEAC ZD-880

2 x PCM54HP


TEAC ZD-900

2 x PCM54HP

KSS-151A

TEAC ZD-3000

2 x PCM53JP-V =96 CX23034

MLP-3C

TEAC ZD-4000

2 x PCM53JP-V =96 CX23034

MLP-3C

TEAC ZD-5000

2 x PCM53


TEAC ZD-6000

2 x PCM53JP-V =96 CX23034

MLP-3C

TEAC ZD-7000

2 x PCM64P

MLP-3C

TECHNICS SL-P1

PCM53JP-V

SRLP007N01A / SRLP007N03A

TECHNICS SL-P2

PCM53JP-V

SRLP007N01A / SRLP007N03A

TECHNICS SL-P3

PCM53JP-V

SRLP007N01A / SRLP007N03A

TECHNICS SL-P7

AN6806 (Matsushita 16 Bit)

SRLP007N01A / SRLP007N03A

TECHNICS SL-P8

AN6806 (Matsushita 16 Bit)

SRLP007N01A / SRLP007N03A

TECHNICS SL-P10

AN6806 (Matsushita 16 Bit)

Technics SRUD010N01Z

TECHNICS SL-P50

2 x AN6806 / 2 x PCM53JP-V

Technics SRLP007N04A

TECHNICS SL-P75

AN6806 (Matsushita 16 Bit)

SRLP007N01A / SRLP007N03A

TECHNICS SL-P100

1 x PCM54HP

SZZP1084 / SOAD20A

TECHNICS SL-P110

PCM54HP =96 MN6618A (filter)

SOALP1200

TECHNICS SL-P111

PCM55HP

SOALP1200 KM3

TECHNICS SL-P115

PCM54HP =96 MN6618A (filter)

SOALP1200

TECHNICS SL-P120

PCM54HP

SOALP1200

TECHNICS SL-P170

MN6474 =96 MN6625

SOAD70A

TECHNICS SL-P202A

MN6471 =96 MN6625

CDM-4/19

TECHNICS SL-P210

1 x PCM54HP

SOALP1200

TECHNICS SL-P212A

MN6471

CDM-4/19

TECHNICS SL-P220

1 x PCM54HP

SOALP320 / SOAD32A

TECHNICS SL-P250

MN6623 MASH =96 MN6617

SOAD70A

TECHNICS SL-P272A

MN6474

CDM-4/19

TECHNICS SL-P277A

MN6474 =96 MN6625

CDM-4/19

TECHNICS SL-P300

1 x PCM54HP

SZZP1084 / SOAD20A

TECHNICS SL-P310

1 x PCM54HP

SOALP1200

TECHNICS SL-P320

1 x PCM54HP-J

SOALP320 / SOAD32A

TECHNICS SL-P333

MN6623 MASH =96 MN6625

SOAD70A

TECHNICS SL-P350

2 x PCM56P-J =96 YM3404B

SOAD60A

TECHNICS SL-P370

MN6474 =96 MN6625

SOAD70A

TECHNICS SL-P377A

MN6474 =96 MN6625

CDM-4/19

TECHNICS SL-P477A

MN6474 =96 MN6625

CDM-4/19

TECHNICS SL-P500

1 x PCM54HP-K

SZZP1084 / SOAD20A

TECHNICS SL-P520

1 x PCM54HP-J =96 MN6618A (filter)

SOALP1200

TECHNICS SL-P550

2 x PCM56P-J =96 YM3404B

SOAD60A

TECHNICS SL-P555

MN6471 =96 MN6625

SOAD70A

TECHNICS SL-P720

PCM54HP-K =96 MN6618A (filter)

SOALP1200

TECHNICS SL-P770

2 x PCM56P-J + 2 x PCM56P =96 YM3404B

SOAD60A

TECHNICS SL-P777

MN6471 =96 MN6622

SOAD70A

TECHNICS SL-P990

4 x PCM56P-J =96 YM3404B

SOAD60A

TECHNICS SL-P999

4 x PCM56P-J =96 SM5813AP

SOAD70A

TECHNICS SL-P1000

2 x PCM54HP-M =96 MN51005PDN

SOALP320 / SOAD32A

TECHNICS SL-P1200

2 x PCM54HP-M =96 MN51005PON

SOALP1200

TECHNICS SL-P1300

4 x PCM56P-K + 2 x MB671431

SOALP1200

TECHNICS SL-P2000

2 x MN64731 + MASH MN64732

SOAD70A

TECHNICS SL-PA10

It=92s a Transport

SOAD70A

TECHNICS SL-PD687

MN66271RA

RAE0150Z (Panasonic)

TECHNICS SL-PD887

MN662741RH

Panasonic

TECHNICS SL-PD987

MN662712RA

Panasonic

TECHNICS SL-PG3

MN662790RSC

Panasonic

TECHNICS SL-PG4

MN662790RSC

Panasonic

TECHNICS SL-PG5

MN662790RSC

Panasonic

TECHNICS SL-PG350

MN662746

Panasonic RAE0150Z

TECHNICS SL-PG360A

MN662713RG1

CDM 12.1

TECHNICS SL-PG380A

MN662713

CDM 12.1/15

TECHNICS SL-PG400A

MN6474

CDM-4/19

TECHNICS SL-PG440A

MN6474

CDM-4/19

TECHNICS SL-PG450

MN662746

Panasonic RAE0150Z

TECHNICS SL-PG460A

MN662713RG1

CDM 12.1/05

TECHNICS SL-PG480A

MN662713

CDM 12.1/15

TECHNICS SL-PG490

MN662713RG1

RAE1100Z / CDM 12

TECHNICS SL-PG500A

MN6474

CDM-4/19

TECHNICS SL-PG520A

MN6474 =96 MN6626

CDM-4/19

TECHNICS SL-PG540A

MN6474

CDM-4/19

TECHNICS SL-PG580A

MN662713

CDM 12.1/15

TECHNICS SL-PJ1

1 x PCM53JP-V

SRLP007N01A / SRLP007N03A

TECHNICS SL-PJ2

1 x PCM53JP-V

SRLP007N01A / SRLP007N03A

TECHNICS SL-PJ11

PCM54HP-J

SZZP1084 / SOAD20A

TECHNICS SL-PJ20

PCM54HP

SOALP1200

TECHNICS SL-PJ28A

MN6477

CDM-4/19

TECHNICS SL-PJ33

PCM54HP-K

SZZP1084 / SOAD20A

TECHNICS SL-PS7

MN64735 MASH

CDM 12

TECHNICS SL-PS30

MN6474

SOAD70A

TECHNICS SL-PS50

MN6474

SOAD70A

TECHNICS SL-PS70

MN6472 MASH =96 MN6625

SOAD70A

TECHNICS SL-PS670D

MN6474

CDM 12.1

TECHNICS SL-PS700

MN6474

SOAD70A

TECHNICS SL-PS770A

MN64733 + 2 x AN96A08SE2

CDM 12.1

TECHNICS SL-PS770D

MN64733-D + 2 x AN96A08S

CDM 12.1/15 (VAM 1202/12)

TECHNICS SL-PS840

MN64761 MASH

SOAD70A

TECHNICS SL-PS860

2 x AN96A08S

SOAD70A

TECHNICS SL-PS900

MN6476 MASH

SOAD70A

TECHNICS SL-X840

PCM54HP


TECHNICS SL-X845

PCM56P


TECHNICS SL-X970

PCM55HP

SOALP1200 KM3

TECHNICS SL-Z1000

It=92s a Transport

SOAD70A - Metallic

TECHNICS SH-X1000

2 x MN64731 D + PCM56P-J =96 MN64730

It=92s a DAC

TELEFUNKEN CD500

TD6720N

KSS-210A

TELEFUNKEN DP1000

2 x PCM58P

KSS-210A

TELEFUNKEN HS 685

TD6720N

KSS-210A

TELEFUNKEN HS 695

2 x PCM56P =96 YM3433

KSS-210A

TELEFUNKEN HS 810 (ver. 1)

1 x PCM56P

KSS-123A ?

TELEFUNKEN HS 810 (ver. 2)

TD6720N

KSS-150A

TELEFUNKEN HS 820

TD6720N

KSS-210A

TELEFUNKEN HS 885

TD6720N

KSS-150B / KSS-210B

TELEFUNKEN HS 895

2 x PCM56P =96 YM3433

KSS-210A

TELEFUNKEN HS 950

PCM53JG-V =96 TM5001 (HD61902H)

Hitachi (DA-1000)

TENSAI TAD-2000

2 x TDA1540D =96 SAA7030

HLPL 030010 (Toshiba OPH-31)

TESLA MC 900

2 x TDA1540P =96 SAA7030

CDM-1

TESLA MC 901

2 x TDA1540P =96 SAA7030

CDM-2/10

TESLA MC 902

TDA1541 =96 SAA7220P/A

CDM-2/29

TESLA MC 911

TDA1541A =96 SAA7220P/B

CDM-4/25

THETA CHROMA 396 DAC

1 x PCM67P-K =96 CXD1244 / PMD100

It=92s a DAC

THETA COBALT 307 DAC

1 x PCM67P-K =96 CXD1244 =96 CS8412-CP

It=92s a DAC

THETA DATA BASIC

It=92s a Transport

CDM-9/44

THETA DATA BASIC II

It=92s a Transport

CDM-9 Pro

THETA DATA UNIVERSAL

It=92s a Transport =96 SAA7310GP

Sony KHS-130A

THETA DS PRO BASIC

2 x AD1860 / PCM61P-K - Motorola 56001

It=92s a DAC

THETA DS PRO BASIC II

2 x PCM67P + 2 x Motorola 56001

It=92s a DAC

THETA DS PRO BASIC III

4 x PCM1702-K + 2 x Motorola 56001

It=92s a DAC

THETA DS PRO GENERATION II

2 x AD1860 + 2 x Motorola XSP56001

It=92s a DAC

THETA DS PRO GENERATION III

2 x PCM63P-K + 3 x Motorola 56001

It=92s a DAC

THETA DS PRO GENERATION V

2 or 4 x PCM63P-K + 3 x Motorola 56001

It=92s a DAC

THETA DS PRO PRIME

PCM67P =96 Motorola 56001

It=92s a DAC

THETA DS PRO PRIME II

2 x PCM67P-K =96 Motorola 56001

It=92s a DAC

THETA DS PRO PROGENY

1 x PCM67P-K =96 Motorola DSP56001

It=92s a DAC

THETA DIGITAL MILES

2 x PCM67P-J =96 Motorola DSP

Pioneer Stable Platter PEA1343

THETA PEARL

It=92s a Transport

Pioneer Stable Platter PEA1343

THOMSON AD 100

Hitachi HA16633P / PCM53JG-V

Hitachi (DA-1000)

THOMSON LAD 300

TD6720N


THOMSON LAD 440

2 x PCM56P =96 YM3433

KSS-210A

THORENS TDA 2000

2 x TDA1547 =96 TDA1307

It=92s a DAC

THULE AUDIO CD100

CS4303

CDM 12.1

THULE AUDIO DAC200

TDA1547 =96 SAA7350GP =96 SM5813APT

It=92s a DAC

THULE AUDIO Spirit CD100

1 x PCM1716E

CDM 12.4 / KSS-213

THULE AUDIO Spirit CD150B

2 x PCM1716E

CDM 12.4

THULE AUDIO Spirit CD150B Digit

4 x PCM1702-K

CDM 12.4

THULE AUDIO TR200

It=92s a Transport

CDM 12.4

TIMBRE TT-1

CS4328 =96 CS8412-CP

It=92s a DAC

TOSHIBA XR30

TD6705

KSS-123A

TOSHIBA XR40

TD6705AP

Toshiba TOPH7810

TOSHIBA XR-Z50

TD6705AP

Toshiba OPH-32

TOSHIBA XR-Z70

Toshiba T1587

Toshiba OPH-32

TOSHIBA XR-Z90

CX890

Toshiba OPH-31

TRI Triode Supply TR CD1

PCM1702

VAM 1202

TRICHORD GENESIS

PD2029A

Pioneer PEA

Top

UHER UCD-210

LC7882


UHER UCD-410R

MN6471M

Hitachi HOP-M3

UHER X-2

Toshiba T1587

Toshiba OPH-32

ULTECH HDCD-10

2 x PCM1702 =96 PMD100 =96 CS8412-CP

It=92s a DAC

Unison Research UNICO CD

CS4392 =96 CS8414

CD-ROM TEAC CD-552

UNIVERSUM AD2000

2 x TDA1540D =96 SAA7030

HLPL 030010 (Toshiba OPH-31)

UNIVERSUM AD2002

PCM53JP-V =96 YM2201F =96 YM3511F

MLP-1C

UNIVERSUM CD1035

LC7881

KSS-210A

UNIVERSUM CD3002

LC7881


UNIVERSUM CD4315

NEC =B5PD6376CX =96 SM5840

KSS-210A

UNIVERSUM CD4682

PCM56


UNIVERSUM DP2046

PCM53JG-V =96 YM2201F =96 YM3511F

MLP-1C

USHER CD-1

PCM1738

CDM 12.10

USHER CD-7

CS4398

KSS-213Q

USHER CD-100

PCM1732

CDM 12.3

Top

VECTOR RESEARCH VCD-770

PCM54HP

KSS-123A

VICTOR XL-F3

MN35502 =96 JVC JCE4313

OPTIMA-6S

VICTOR XL-M700

1 x PCM54HP =96 YM2601

OPTIMA-20

VICTOR XL-V1-N

MN35502 =96 JVC JCE4313

OPTIMA-6S

VICTOR XL-V440

1 x PCM54HP =96 YM2601

OPTIMA-2

VICTOR XL-V500

PCM53JP-V =96 YM2201F

MLP-1E

VICTOR XL-V1100

2 x PCM54HP

OPTIMA-1

VICTOR XL-Z311

2 x PCM56P-L =96 SM5807EP


VICTOR XL-Z505

JVC =96 JCE4302A

JVC OPTIMA-5S

VICTOR XL-Z511

PCM56P

OPTIMA-3

VICTOR XL-Z521

2 x PCM56P =96 YM3414

OPTIMA-4S

VICTOR XL-Z531

JVC =96 JCE DD-K2-Converter

OPTIMA-4S

VICTOR XL-Z621

2 x PCM56P-J =96 YM3414 =96 YM3613B

OPTIMA-4S

VICTOR XL-Z711

2 x PCM56P-J =96 YM3414 =96 YM3613B

OPTIMA-4S

VICTOR XL-Z900

JVC =96 JCE4501 =96 CXD1244

OPTIMA-4

VINCENT CD-S1.1

PCM1732


VINCENT CD-S3

PCM1732

CDM 12

VINCENT CD-S5

PCM1792

VAM1202/12

VINCENT CD-S6

PCM1732

VAM1202

Top

WADIA 6

4 x AD1864N-K / 4 x PCM63P-K

VRDS CMK-3 =96 KSS-151A

WADIA 7

It=92s a Transport

VRDS CMK-2 =96 KSS-151A

WADIA 8

It=92s a Transport

VRDS CMK-4 =96 KSS-151A

WADIA 12

2 x AD1864N-K / AD1865 =96 DF1700P

It=92s a DAC

WADIA 15

4 x PCM63P-K

It=92s a DAC

WADIA 16

4 x PCM1702-K

VRDS CMK-3 =96 KSS-151A

WADIA 20

It=92s a Transport

VRDS CMK-3 =96 KSS-151A

WADIA 21

4 x PCM1702-K

VRDS CMK-4 =96 KSS-240A

WADIA 23

2 x AD1865N =96 XC3042A

Pioneer Stable Platter PEA1030

WADIA 25

4 x PCM1702

It=92s a DAC

WADIA 27

PCM1702

It=92s a DAC

WADIA 270

It=92s a Transport

VRDS CMK-3.2 =96 KSS-151A

WADIA 301

2 x PCM1704

Pioneer Stable Platter PEA1343

WADIA 302

2 x PCM1704-K

Philips VAE 1250

WADIA 830

4 x PCM1702

Pioneer Stable Platter PEA1343

WADIA 831

PCM1704

Pioneer Stable Platter

WADIA 850

2 x PCM1702-K

VRDS CMK-4-a =96 KSS-240A

WADIA 860

4 x PCM1702

VRDS CMK-3.2 =96 KSS-151A

WADIA 861

4 x PCM1704-K

VRDS CMK-3.2 =96 KSS-151A

WADIA WT2000

It=92s a Transport

VRDS CMK-3 =96 KSS-151A

WADIA WT3200

It=92s a Transport =96 SAA7210P

CDM-1

Top

XINDAK C06

TDA1543

KSS-213Q

XINDAK DAC-5

AD1852

It=92s a DAC

XINDAK SCD 2

PCM1702


XTZ CD-100

AD1955

Sanyo HD650

Top

YAMAHA CD-1

2 x CX890

Same as Toshiba OPH-31

YAMAHA CD-1a

CX20017

Same as Toshiba OPH-31

YAMAHA CD-2

PCM53JP-V =96 YM2201F =96 YM3511F

MLP-1C

YAMAHA CD-3

PCM53JP-V =96 YM2201F-K

MLP-2A

YAMAHA CD-350

PCM54HP

MLP-3C

YAMAHA CD-550

PCM54HP

MLP-3C

YAMAHA CD-750

PCM54HP

MLP-3C

YAMAHA CD-1000

1 x PCM54HP-K =96 YM2601

TAOHS-DG1 / MLP-3C

YAMAHA CD-2000

1 x PCM54HP-K =96 2 x SM5800P

TAOHS-DG1

YAMAHA CD-4050

2 x PCM58P =96 YM3414

TAOHS-JP3

YAMAHA CD-5050

4 x PCM58P-J =96 SM5813AP

TAOHS-HG1 / NX602610

YAMAHA CDC-625

PCM69


YAMAHA CDC-775

YAC514-F =96 MN35511

Sharp

YAMAHA CDV-1070

1 x PCM56P-J


YAMAHA CD-X1

PCM53JP-V =96 YM2201F =96 YM3511F

MLP-1C

YAMAHA CD-X2

YM4006 =96 YM2201F-K

MLP-2C

YAMAHA CD-X3

PCM54HP =96 YM2201


YAMAHA CDX-10

YAC514

KSS-210A

YAMAHA CDX-390

MN35511

KSS-210A

YAMAHA CDX-393

MN66271RA

KSS-213C

YAMAHA CDX-396

MN35511AL

KSS-213C

YAMAHA CDX-397

CS4392

KSS-213C

YAMAHA CDX-400

1 x PCM56P

MLP-7

YAMAHA CDX-410

1 x PCM56P

TAOHS-JP3

YAMAHA CDX-420

2 x PCM56P-L


YAMAHA CDX-450

PCM67P-J

KSS-210A

YAMAHA CDX-470

YDC103

KSS-150A / KSS-210A

YAMAHA CDX-480

MN66271

KSS-150A / KSS-210A

YAMAHA CDX-490

MN66271R

KSS-210A

YAMAHA CDX-493

MN66271RA

KSS-213C

YAMAHA CDX-496

MN35511AL

KSS-213C

YAMAHA CDX-497

CS4392

KSS-213C

YAMAHA CDX-500

1 x PCM56P

MLP-7

YAMAHA CDX-510

PCM56


YAMAHA CDX-520

2 x PCM56P =96 YM3414


YAMAHA CDX-530

2 x PCM61P

KSS-210A

YAMAHA CDX-530E

2 x AD1860N

KSS-150A

YAMAHA CDX-550E

YM7141 (DAC) =96 YM3417E (filter)

KSS-210A

YAMAHA CDX-570

YDC103-F =96 LC9211

KSS-150A / KSS-210A

YAMAHA CDX-580

YAC514

KSS-150A / KSS-210A

YAMAHA CDX-590

YAC514

KSS-210A

YAMAHA CDX-593

YAC514


YAMAHA CDX-596

AD1854JRS

KSS-213C

YAMAHA CDX-600

2 x PCM56P-J =96 YM3414

TAOHS-JP3

YAMAHA CDX-620

2 x PCM58P =96 YM3414

TAOHS-JP3

YAMAHA CDX-630E

TDA1541A =96 CXD1088

KSS-150A

YAMAHA CDX-670

YDC103

KSS-150A / KSS-210A

YAMAHA CDX-700

1 x PCM56P =96 YM3619

MLP-7 / TAOHS-DG1

YAMAHA CDX-710

2 x PCM56P-J =96 YM3414

TAOHS-JP1

YAMAHA CDX-720

2 x YM4111-2 =96 YM3414


YAMAHA CDX-730

2 x PCM61P-J

KSS-150A

YAMAHA CDX-730E

2 x AD1860N-J =96 YM3417D (filter)

KSS-150A

YAMAHA CDX-750E

YM7141 (DAC) =96 YM3417E (filter)

KSS-210A

YAMAHA CDX-800

2 x PCM56P-J =96 YM3414

TAOHS-JP3

YAMAHA CDX-810

2 x PCM56P-J =96 YM3414

TAOHS-JP3

YAMAHA CDX-820

2 x PCM58P =96 YM3414

TAOHS-JP3

YAMAHA CDX-860

YAC507 =96 YM3433

KSS-210A

YAMAHA CDX-870

YDC103

KSS-150A / KSS-210A

YAMAHA CDX-880

YAC514

KSS-150A / KSS-210A

YAMAHA CDX-890

YAC514

KSS-210A

YAMAHA CDX-893

YAC514


YAMAHA CDX-900

2 x PCM56P-J =96 YM3619

MLP-7 / TAOHS-DG1

YAMAHA CDX-910

2 x PCM56P-J =96 YM3414

TAOHS-JP3

YAMAHA CDX-920

2 x PCM58P =96 YM3414

TAOHS-JP3

YAMAHA CDX-930

MN6471M

TAOHS-KP2

YAMAHA CDX-993

YAC514-F =96 CXD2545Q

Sharp KCP1H

YAMAHA CDX-1000

2 x PCM56P-J =96 YM3414 =96 YM3023

TAOHS-JP3

YAMAHA CDX-1020

2 x PCM58P =96 YM3414

TAOHS-JP3

YAMAHA CDX-1030

MN6471M =96 YM7402

TAOHS-KP2

YAMAHA CDX-1050

YAC501-D

TAOHS-KP2

YAMAHA CDX-1060

YAC506-D =96 YM7402

TAOHS-KP2

YAMAHA CDX-1100

2 x PCM56P-K =96 YM3404

MLP-7

YAMAHA CDX-1110

2 x PCM56P-K =96 YM3414

TAOHS-HGI / VE720301

YAMAHA CDX-1120

4 x PCM58P-J =96 SM5813AP

TAOHS-HG1 / NX602610

YAMAHA CDX-2000

2 x PCM56P-K =96 YM3414

MLP-7

YAMAHA CDX-2020

4 x PCM58P-J =96 SM5813AP

TAOHS-HG1 / NX602610

YAMAHA CDX-2200

2 x PCM56P-K =96 YM3404

MLP-7

YAMAHA CDX-5000

2 x PCM56P-K =96 YM3404

MLP-7 / VD190300

YAMAHA CDX-10000

2 x PCM56P-K =96 YM3404-Gold

MLP-7 / VD190300

YAMAHA DX-U1

2 x PCM56P-K =96 YM3404 =96 YM3623B

It=92s a DAC

YAMAHA GT-CD1

2 x YAC507-N =96 YSF210B-D =96 YM3623B

TAOHS-KP2

YAMAHA GT-CD2

2 x YAC507-N =96 YSF210B-D =96 YM3623B

TAOHS-KP2

YAMAMOTO YDA-01

2 x PCM1794-A =96 CS8416

It=92s a DAC

YBA YC201

Wolfson WM8740


YOKO F-420R

PCM56P


Top

ZANDEN MODEL 2000

It=92s a Transport

Philips CD-Pro 2 (VAM 1254)

ZANDEN MODEL 5000

TDA1541A-S2 (Double Crown)

It=92s a DAC


Total 2425 items on the List !

Created by Va= silTech

If you found a mistake,

Please, mail = me.

* Green =96= New items

* Red (Sony) <= b>- not 100% guarantee.

01.10.2009

Minsk, Republic of Belarus

<= img src=3D"http://counters6.pochta.ru/vasiltech.nm.ru/" border=3D"0" alt= =3D"Counter">


Main= Page





 
------------lpcK8kNA4UN1EPii0uGjuD Content-Disposition: inline; filename=image001.jpg Content-Type: image/jpeg; name=image001.jpg Content-Location: http://vasiltech.nm.ru/files/cd-players/CD-Player-DAC-Transport.files/image001.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQEASwBLAAD/4wMOTVNPIFBhbGV0dGUgo83+qtf8r976s878 ttf8t+T5t+r4vN77v9j7wcz5wdL7xtj7x936x+H6x+X6x+v6zdj60Mz10NP40uT6 0uz709360+H61Nj529j43t/53+r64uT549L05Mvw6Nj26d/3ncn+n8v+n8/+odn7 ot76pM/+pNT8pcr+pcz+qM/+qNn7qd76qeP4qtX9rdD+rej3rs39rtT9rtb9rtn9 rt37ruD6ruz2sOT5sdD9s8r7s9r8s9z7s+D6tNX9tNj9teP6teX5tej4ts38tt37 tuD7t9D8t+z3uNX8uNn8utz8ut76ut/7uuH7u+P6u+X6u+j5vNL8vNr8vcj2vdX8 vdf8vdn7vev4ve/4vsv7vs77vtP8vuD6v9z7v977v+T6v+f5wNH6wdb5wdb+wdn7 wdv7wtz6wt77wuD7wuL6wuT7w9H6w9P7xM75xNn6xNv7xOb6xOn6xcj0xcv5xeH6 xtX4xtb8xtf7xtz6xt78xuT7x874x9H6x9P5x9n7x+z6x+76x/L5yNr7yOD7yOL6 ytz6yt76yuT4yuT9yub4yub9yuj6yun6y873y9H5y9T6y9b6y9j7y9r6y+H6ztT5 ztb4ztj5ztr6zt33zt38zuD6z873z9L4z+P4z+P9z+j60Mbv0Mnz0Mv20OH60Ob7 0Or70Oz70eD60tr20t330t390u/609T509b809j80+T60/P61M7y1M/61NH31Nb1 1Nf21Nr81Ob61Oj71d331d381eP61eX61er71ez71tT31tr21uD61uH52N332N38 2eH62s712tH32tT32tb42tf42tr42uP62uX62uf72un62uz72vD72+D63N333N38 3cfv3cvy3df33dr23dr73eH63tX33uP63uX639H139T24M7z4N314N374N/44OH5 4Of64Oz749b149f249r349344+P65NP05OX55c7x5d/45eH55t3258jt6Nb16Nr3 6Ov66eT56ef56t336uH47s7v7tLx7t/38Nj08cjq8eT49N/1/9sAQwALCAgKCAcL CgkKDQwLDREcEhEPDxEiGRoUHCkkKyooJCcnLTJANy0wPTAnJzhMOT1DRUhJSCs2 T1VORlRAR0hF/9sAQwEMDQ0RDxEhEhIhRS4nLkVFRUVFRUVFRUVFRUVFRUVFRUVF RUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVF/8AAEQgAgACAAwEiAAIRAQMR Af/EABgAAQEBAQEAAAAAAAAAAAAAAAIDAQAH/8QALBABAAICAgICAQMDBAMAAAAA AQIRACESMQNBIlFhEzJxgaGxQlKRwWLR8P/EABgBAQEBAQEAAAAAAAAAAAAAAAEC AAME/8QAHxEAAwACAwADAQAAAAAAAAAAAAERITECEkEiUWFx/9oADAMBAAIRAxEA PwD0SBAStSfvB5Q5CPyMUfFEZNqSfvBKUXx+7GlTeez2o4SrJOIylb2Y5R5aB13b nRkt0aO3MIrJa+LtymyeNWEJ4xeKJQVrWUHjIe67DDqUbowMwmRdskdd5Ep15pS/ Q5RRZRO+7M7yVxur5br85Th8fk2/nMEhJXd7QwpD1k6Nfp2lUULkvIKxQQ771lG9 8a4+vVZnK50qj9YpkrjV8iMi4iKF6vK+NCVsTqlrM80RoqS/zQ/nFJeNWD9mNwV1 zUQ8t20rnQ+M7dr6+spDxy68gWd16zePyW1Y+vrHt4V0SyjpcOQjL93r1jSi2667 25MvisndWOc+ObVSKPeTBbii9DNkGlD0/eZyOMmqX7yhIYltelznxxnTYe+8oh50 dCVQOXftxQlGV0nBNZwNIB+bcEYhOojovrR9YSlLDSKyKLFrrrJTiwdceV9fZloz +H/LQYJcYlSVidrgiubiDE/cLr6rO8lkau96ccuiqtezDO2REOzbmtObVWQ6bKNf 5zDU9Xb0536cQv8Abx/OKGy15Pe8dD1S0dPx6ivkr6px8b3fXWCXkA4y1F1hlMib 7Nfz+azJNm5cknCklgW9ppcDOY3re9espUZRBDiH9cPk+SnWtGZG5P0zxu5shfT+ MyXkY+R/TjYaV6ylcaS9dfnC2PQGYzdKeQuiPp/b6cKcGLLUeqrHBvq2nrB5Iykl vyyU/BS9JhLk+wX+mKMuXjBbH6wSGP7e3ZX4xEiMdGl231lk8XXnRkfhuOqfeYNw VCTSa6c2+alaOpXmJx6kUba7wRfOPQ43KPO6A7PePxyZRpikvV4qASJ3tzGTAWMW jv3eTshNp5Jp+scZReJ+PeZGPA+PTlGXtUJdfjAx5rrTpXEEkt7MJyQU1395OUfk vHlfdGV4VGmR8tF4V4lU1in9D1UyHq7oYnTnQJirIKreOIo9MnTecwXatR9X3jSe vovEMm0q/wAU5WUa1VxreSi8Ui6vszoeRZSK36yI3kpZWQeOJEEujYmKEmdrs6Mp xIRFe/f1k+xYS5Hf1WOxxDZeOMt61/fAQ5Sok66HOYMuIKB9GUhCvL8pOi99Y6Ww ixUEOKPHbo1i+MalrlW79ZvklwiUDG9t1WQ8wSaNDsr7wWSXdlZsuQxU33m/OB2B h8RVrovGrP8Af95vwzXJqgn5ZSiV79OPQ8dmv/qwTjxisj3qnBCuIF39uMxga1Ax lK5EpJboxykw41JX3frO+MpU7Tajm1GdMotL9Ys3F9XDHyfHqv8AGLTH5dPX3iYw 1Dj/ABr/ADkpDOPEfu36clKlPkl/RQ4kWVq9DhlxT+caj443d1VfeYeIpT+KrrE0 wU8gSAVPrfeHknxFpH1eHhIkyddbv+2Yz5LxPfGn3mhzS9FzdtWx0H1m/qdRlUXj d/WYqcrAj9rmAEio6+veYtvk1IUhxB5DUtn4zQZTTlR9HeRn85kozo6rrKErLv5J 1g0ax4RzGpCGh3X+czxyk+RjVavWaSYpYV2i/wCM6VKqVrcjV5jK0xnGPGMtv0HR ncDcqRN195PyByk9Unur+sqNQvjf4PeOtCldkrjzVEa2V9/nNXhXb6v7xeRuPya1 /pzJeOjW5evx/GILLNlXk8J18nR0uHhLqNfm8bEj46PX0dYCfLyRItPejMvwlp2h YU8Xu33jhJvkvv77xT5Qdbv2ZwKot/0wF1qneRuoj8TvWCT+nGMQbCyzvKLGV0Xf tcM9x/aSzJgalwr0Fsr7yafp+x3oMcIjNenovOl4qP8Ac99+8ycwd88shgjHlKO/ Rmwjxi392C9OAiyhJmlJ39Y0SJF4tvs7xhyezYrOSyKjV25lSJSH5b6r1nReKkn9 3d+36xj82WhqsNG2oCSMtmq9+84nKExSLXR9Z3AdXs713g3IlLyRRH01ijWKspFG XXbbvrBDS1LfYfWdGUm0qv8AvNiySp1rMRvRRJaP6YP0owlyG0Peb40kutfVYZFL citFYaKhQ5ECLs++sRLVH8byMZK/FA+zGyVskAf3M0ByYDGNGy/bjqjl1rNv4RSv x9YZvV/8ZOzpfUcTtN7TWtGd+tEUY9lIfeQjNkhdH1lnipq7fX3lNTDDs2qmFlQx lYf7lykSosm2sHkieRk38a+vWYpEibA6pxlRNjzoco84BAI72SzITitS/f8Aj23m D8mZodoneaSue1t3X4zeGuTp+V/UAQl7tzu4UiW1feZw5b5fJ6HvOfGEqS+PRebA NvwFcJLVaxQ89ga2aX7ysou1PzkHxgVYqUP/AHgo9lV6g/HJgcpcY73R3mzIyin5 3+ciwY0yT8OVfG+Tikri4ubNZg7xsfGSklDq33hlxmAX/wCLWOUdEW9ejOnGK3KV H19YIW0ZyI1A7d9dZgltmvbe821IMUQN5p8T5obv+MxySwFgz1EsT12ZvEpjZ/Ga SjzukU04Eb9xOuu8x00jhlyY16/vlJwjGHLtrrWSOz5FHdYpwb5aqt5vSG4FC2UZ 7ykmqaOV0p95PjGPKEe/o+8pxYyikUvXeLYR7NfH+oFxKHBEZeSV7IdZvjm/qt38 igvF+oQKS/5d4ZWDOBZRYP2Hu3EQgUrcX7xRCUaQI/2wk0ajEQbqus38Oij2EBjI gnf11if1PFCNUq6/94FZj0SGimspFhXLtOwwZX4Bms+te/5w8UNDR2OVYiAXx/GZ 5o84kol6SsVyVhLXxP/Z ------------lpcK8kNA4UN1EPii0uGjuD Content-Disposition: inline; filename=default.gif Content-Type: image/gif; name=default.gif Content-Location: http://counters6.pochta.ru/vasiltech.nm.ru/ Content-Transfer-Encoding: Base64 R0lGODdhWAAfAKUAAIY2hq13rbaGtnMWc11dcNGz0ZhUmGwJbHkheaBgoMKawv7/ /5JJks+uz+fX5/X//qRopIxAjNvC28mlybyPvODL4IEtgTExScWfxbB7sKhvqIGB jwAAHr+Wv7OAs2YAZv/////MAOvf64w/jHkfebJ/sti/2J9fn+3j7euyDNiZGYwz TLJmM8V/JnkZWQCtACDIMHFdrb3fbgC/CZCj9F3NX98xwL8BAAB8AADtEAB/AAAJ AAGIQAAGXwDX3wCtvywAAAAAWAAfAAAG/sCOcEgsGo/IpHLJTHI6n+gBEYkkrp6s dqu5JhhVCwIRLZvP6LR6zY4+P4PEdk6v0wNfy6DN7/vfcnRdXoSFgXZZGhZ+jI1l b1sGCHuOcGMWEQYJAVqUlWYYIiIjoaOiIiAfJ6IlqqkLH5BZi59sEVlktVEkICQj KL0jIlEmIx8gJqMkJqluUBBZALpsuNNRJSLM2MwfJRgfvL4iGCfNsVC3HhrWanK5 0yUkJybx8x+jUcGnICKwbwNapLE7I8eTLmyjEI7gVWaViBPgzL35kM6DwU9xGJSR M9DaxAPQPAS42GgAJw9lNKDs+MkflCgms4zEeFJjFA8JWOqaGAWB/paZJU9COAAT p85abw5EWGThJ60+CE4C/dDU5lE2+z64pDiL6kkPEfo0lWnwlsCrbYo9QpclLJyv CUiaqejhaRQDHt6hIcqHbyNvZt7gBVvmQCABDTpkyBBAUc8JFSoUEKBHgFsEEhRs ahygMYIEHTBo9rvRwAABFAAIoHTAMlZjWs99YND2DG0KDiRM8AChgMYIkTFAVvAB ge8oERxgMBCAQgEKeCxQ+KKhgAE0ASZ08MAAQIFcB46rYRiYLeEzPpXLrBCgtwMB HjIwKABggHgDDlZaKGC3zHY0ERSwzgcANABeA1b18UY6OaGBQAW7eSCAA7tVIAFv AxzQAAT2/tkEgQMDencWTAh0IAAa81FSIHji8bEVAFk0iJ51eE24mwO+8YWBBwdM sNoAGDhwHYH0lREBBRNMUMBKZsyXy4pSINjIGz4Z5eBxA+A3QQAVZADKiQAk2YAD DrglInIFQIDAARScaNt3UUD5QXgJ8pFUFhCkYZxNGmpkYmEbSoEAAwo4INCZH7RZ hgBuNgkngQZGWacZKVQaQmwTnaSneHR+kEABlAQ4IgQKVHBokR8o4OWcPs4JQQZ7 OBknfz21qIYKK6wVRSB61conlhh0wIABrZbhkwISnCrQpwYYgOQEUxRg3WyPDpAY cxM0wGQaLLRQXpxZDGnGABDQcoBjm28p0EECpMlBgQa5IKCmFBBgQEEECMB6QAAC kGGBBp4cuaMFDOS5Rgq5YvoSQF01Qtpd4bbxcB8Tp+HCpd9GoVKMAPRKsQUh5YUW Ui9RVQceX1Sh8spVJLCxFkM+EIXMH9Bs88w415zzzTrH5jMsPW9l7GCIFD0HuyMj tQEHTDfNwQVQEyD1BlRXbbXUWEN9gdNcd+3112CH7XUQADs= ------------lpcK8kNA4UN1EPii0uGjuD Content-Disposition: inline; filename=autocontext2.js Content-Type: application/x-javascript; charset=windows-1251; name=autocontext2.js Content-Location: http://autocontext.begun.ru/autocontext2.js Content-Transfer-Encoding: Base64 aWYgKHR5cGVvZiBCZWd1biAhPT0gIm9iamVjdCIpewoJdmFyIEJlZ3VuID0ge307 Cn0KCihmdW5jdGlvbigpIHsKaWYgKCFCZWd1bi5BdXRvY29udGV4dCkgewoJdmFy IGVycm9ySGFuZGxlciA9IHdpbmRvdy5vbmVycm9yOwoJd2luZG93Lm9uZXJyb3Ig PSBmdW5jdGlvbiByZWdFcnJvcnMobXNnLCB1cmwsIGxpbmUpIHsKCQlpZiAoZXJy b3JIYW5kbGVyICYmIGVycm9ySGFuZGxlciBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7 CgkJCWVycm9ySGFuZGxlcigpOwoJCX0KCQl2YXIgZGVmYXVsdEVycm9yTG9nZ2Vy ID0gImh0dHA6Ly9hdXRvY29udGV4dC5iZWd1bi5ydS9sb2dfZXJyb3JzPyI7CgkJ aWYgKHVybC5zZWFyY2goL2F1dG9jb250ZXh0L2kpICE9PSAtMSB8fCBtc2cuc2Vh cmNoKC9CZWd1bi9pKSAhPT0gLTEpIHsKCQkJdmFyIGFkZHJlc3MgPSB3aW5kb3cu YmVndW5fZXJyb3JfdXJsP3dpbmRvdy5iZWd1bl9lcnJvcl91cmw6ZGVmYXVsdEVy cm9yTG9nZ2VyOwoJCQl2YXIgcGFkSWQgPSB3aW5kb3cuYmVndW5fYXV0b19wYWQ7 CgkJCXZhciBpbWcgPSAobmV3IEltYWdlKCkpLnNyYyA9IGFkZHJlc3MgKyAiZV9t c2c9IiArIGVuY29kZVVSSUNvbXBvbmVudChtc2cpICsgIiZlX3VybD0iICsKCQkJ CSBlbmNvZGVVUkkodXJsKSArICImZV9saW5lPSIgKyBsaW5lICsKCQkJCSImcGFk X2lkPSIgKyBwYWRJZCArICImbG9jYXRpb249IiArIGVuY29kZVVSSShkb2N1bWVu dC5sb2NhdGlvbik7CgkJfQoJfTsKfQp9KSgpOwoKQmVndW4uZXh0ZW5kID0gZnVu Y3Rpb24oZGVzdGluYXRpb24sIHNvdXJjZSl7Cglmb3IgKHZhciBwcm9wZXJ0eSBp biBzb3VyY2UpewoJCWRlc3RpbmF0aW9uW3Byb3BlcnR5XSA9IHNvdXJjZVtwcm9w ZXJ0eV07Cgl9CglyZXR1cm4gZGVzdGluYXRpb247Cn07CgpCZWd1bi4kID0gZnVu Y3Rpb24oaWQpewoJcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsK fTsKCkJlZ3VuLkRPTV9USU1FT1VUID0gMTsKQmVndW4uU0NSSVBUX1RJTUVPVVQg PSA1MDAwOwpCZWd1bi5SRVZJU0lPTiA9ICckTGFzdENoYW5nZWRSZXZpc2lvbjog MjY1ODkgJCc7CgoKQmVndW4uQnJvd3NlciA9IG5ldyBmdW5jdGlvbigpewoJdmFy IF91YSA9IG5hdmlnYXRvci51c2VyQWdlbnQ7CiAgICB0aGlzLklFID0gISEod2lu ZG93LmF0dGFjaEV2ZW50ICYmIF91YS5pbmRleE9mKCdPcGVyYScpID09PSAtMSk7 CiAgICB0aGlzLk9wZXJhID0gIF91YS5pbmRleE9mKCdPcGVyYScpID4gLTE7CiAg ICB0aGlzLldlYktpdCA9IF91YS5pbmRleE9mKCdBcHBsZVdlYktpdC8nKSA+IC0x OwogICAgdGhpcy5HZWNrbyA9ICBfdWEuaW5kZXhPZignR2Vja28nKSA+IC0xICYm IF91YS5pbmRleE9mKCdLSFRNTCcpID09PSAtMTsKCiAgICB2YXIgdmVyID0gbnVs bDsKICAgIHRoaXMudmVyc2lvbiA9IGZ1bmN0aW9uKCl7CiAgICAgICAgaWYgKHZl ciAhPT0gbnVsbCl7CiAgICAgICAgICAgIHJldHVybiB2ZXI7CiAgICAgICAgfQog ICAgICAgIHJldHVybiB2ZXIgPSBkZXRlY3QoKTsKICAgIH07CiAgICAKICAgIHZh ciBkZXRlY3Q7CiAgICAKICAgIGZ1bmN0aW9uIGNoZWNrKHJlKXsKICAgICAgICBy ZXR1cm4gcmUuZXhlYyhfdWEpWzFdOwogICAgfQogICAgCiAgICBpZiAodGhpcy5J RSl7CiAgICAgICAgZGV0ZWN0ID0gZnVuY3Rpb24oKXsgcmV0dXJuIGNoZWNrKC9N U0lFIChcZCouXGQqKS9naW0pOyB9OwogICAgfSBlbHNlIGlmICh0aGlzLk9wZXJh KXsKICAgICAgICBkZXRlY3QgPSBmdW5jdGlvbigpeyByZXR1cm4gY2hlY2soL09w ZXJhXC8oXGQqXC5cZCopL2dpbSk7IH07CiAgICB9IGVsc2UgaWYgKHRoaXMuV2Vi S2l0KXsKICAgICAgICBkZXRlY3QgPSBmdW5jdGlvbigpeyByZXR1cm4gY2hlY2so L0FwcGxlV2ViS2l0XC8oXGQqXC5cZCopL2dpbSk7IH07CiAgICB9IGVsc2UgaWYg KHRoaXMuR2Vja28pewogICAgICAgIGRldGVjdCA9IGZ1bmN0aW9uKCl7IHJldHVy biBjaGVjaygvRmlyZWZveFwvKFxkKlwuXGQqKS9naW0pOyB9OwogICAgfQogICAg dGhpcy5tb3JlID0gZnVuY3Rpb24obil7CiAgICAgICAgcmV0dXJuIHBhcnNlRmxv YXQodGhpcy52ZXJzaW9uKCkpID4gbjsKICAgIH07CiAgICB0aGlzLmxlc3MgPSBm dW5jdGlvbihuKXsKICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCh0aGlzLnZlcnNp b24oKSkgPCBuOwogICAgfTsKfSgpOwoKaWYgKCFCZWd1bi5VdGlscyl7CglCZWd1 bi5VdGlscyA9IG5ldyBmdW5jdGlvbigpewoJCXZhciBkID0gZG9jdW1lbnQ7CgkJ dmFyIGdldEhlYWQgPSBmdW5jdGlvbigpewoJCQl2YXIgaGVhZCA9IGQuZ2V0RWxl bWVudHNCeVRhZ05hbWUoImhlYWQiKVswXTsKCQkJaWYgKCFoZWFkKXsKCQkJCWhl YWQgPSBkLmNyZWF0ZUVsZW1lbnQoImhlYWQiKTsKCQkJCWQuZG9jdW1lbnRFbGVt ZW50Lmluc2VydEJlZm9yZShoZWFkLCBkLmRvY3VtZW50RWxlbWVudC5maXJzdENo aWxkKTsKCQkJfQoJCQlyZXR1cm4gaGVhZDsKCQl9CgkJdmFyIHNjcmlwdF9jb3Vu dCA9IDA7CgkJdmFyIHN3Zl9jb3VudCA9IDA7CgoJCXRoaXMuaW5jbHVkZVNjcmlw dCA9IGZ1bmN0aW9uKHVybCwgdHlwZSwgY2FsbGJhY2ssIGNhbGxiYWNrX25hbWUs IGNoZWNrX3Zhcil7CgkJCXZhciBJTkNfU0NSSVBUX1BSRUZJWCA9ICdiZWd1bl9q c18nOwoJCQl2YXIgU0NSSVBUX1RZUEUgPSAndGV4dC9qYXZhc2NyaXB0JzsKCQkJ dmFyIHR5cGUgPSB0eXBlIHx8ICd3cml0ZSc7IC8vIGFwcGVuZCBvciB3cml0ZQoJ CQl2YXIgaW5jID0gMDsKCQkJdmFyIHNjcmlwdCA9IG51bGw7CgkJCWlmICh1cmwp ewoJCQkJaWYgKHR5cGUgPT0gJ3dyaXRlJyl7CgkJCQkJc2NyaXB0X2NvdW50Kys7 CgkJCQkJdmFyIGlkID0gSU5DX1NDUklQVF9QUkVGSVggKyBzY3JpcHRfY291bnQ7 CgkJCQkJaWYgKGNoZWNrX3Zhcil7CgkJCQkJCXdpbmRvdy5zZXRUaW1lb3V0KGZ1 bmN0aW9uKCl7CgkJCQkJCQl2YXIgc2NyaXB0cyA9IGQuZ2V0RWxlbWVudHNCeVRh Z05hbWUoInNjcmlwdCIpOwoJCQkJCQkJdmFyIHMgPSBzY3JpcHRzID8gc2NyaXB0 c1tzY3JpcHRzLmxlbmd0aCAtIDFdIDogbnVsbDsKCQkJCQkJCWlmIChzICYmIHdp bmRvd1tjaGVja192YXJdID09PSB1bmRlZmluZWQpewoJCQkJCQkJCXMucGFyZW50 Tm9kZS5yZW1vdmVDaGlsZChzKTsKCQkJCQkJCQlCZWd1bi5VdGlscy5pbmNsdWRl Q291bnRlcihCZWd1bi5BdXRvY29udGV4dC5TdHJpbmdzLnVybHMuc2NyaXB0X3Rp bWVvdXRfY291bnRlciwgeydwYWRfaWQnOiAod2luZG93LmJlZ3VuX2F1dG9fcGFk IHx8ICcnKSwgJ2Jsb2NrX2lkJzogKHdpbmRvdy5iZWd1bl9ibG9ja19pZCB8fCAn Jyl9KTsKCQkJCQkJCX0KCQkJCQkJfSwgQmVndW4uU0NSSVBUX1RJTUVPVVQpOwoJ CQkJCX0KCQkJCQlkLndyaXRlKCc8c2NyJysnaXB0IHR5cGU9IicgKyBTQ1JJUFRf VFlQRSArICciIHNyYz0iJyArIHVybCArICciIGlkPSInICsgaWQgKyAnIj48L3Nj cicrJ2lwdD4nKTsgCgkJCQkJc2NyaXB0ID0gQmVndW4uJChpZCk7CgkJCQl9IGVs c2UgaWYgKHR5cGUgPT0gJ2FwcGVuZCcpewoJCQkJCXNjcmlwdCA9IGQuY3JlYXRl RWxlbWVudCgic2NyaXB0Iik7CgkJCQkJc2NyaXB0LnNyYyA9IHVybDsKCQkJCQlz Y3JpcHQudHlwZSA9IFNDUklQVF9UWVBFOwoJCQkJCXZhciBoZWFkID0gZ2V0SGVh ZCgpOwoJCQkJCWhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKCQkJCX0KCQkJCWlm IChzY3JpcHQgJiYgdHlwZW9mIGNhbGxiYWNrID09ICdmdW5jdGlvbicpewoJCQkJ CXZhciBjYWxsYmFja19maXJlZCA9IGZhbHNlOwoJCQkJCXNjcmlwdC5vbmxvYWQg PSBmdW5jdGlvbigpewoJCQkJCQlpZiAoIWNhbGxiYWNrX2ZpcmVkKXsKCQkJCQkJ CWNhbGxiYWNrKCk7CgkJCQkJCQljYWxsYmFja19maXJlZCA9IHRydWU7CgkJCQkJ CX0KCQkJCQl9OwoJCQkJCXNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5j dGlvbigpewoJCQkJCQlpZiAoY2FsbGJhY2tfZmlyZWQpewoJCQkJCQkJcmV0dXJu OwoJCQkJCQl9CgkJCQkJCXZhciBjaGVja19zdGF0ZW1lbnQgPSAoQmVndW4uQnJv d3Nlci5PcGVyYSA/ICh0aGlzLnJlYWR5U3RhdGUgPT0gImNvbXBsZXRlIikgOiAo dGhpcy5yZWFkeVN0YXRlID09ICJjb21wbGV0ZSIgfHwgdGhpcy5yZWFkeVN0YXRl ID09ICJsb2FkZWQiKSk7CgkJCQkJCWlmIChjaGVja19zdGF0ZW1lbnQpewoJCQkJ CQkJY2FsbGJhY2soKTsKCQkJCQkJCWNhbGxiYWNrX2ZpcmVkID0gdHJ1ZTsKCQkJ CQkJfQoJCQkJCX07CgkJCQl9CgkJCX0KCQl9OwoJCXRoaXMuZXZhbFNjcmlwdCA9 IGZ1bmN0aW9uKGNvZGUpewoJCQl0cnkgewoJCQkJZXZhbChjb2RlKTsKCQkJfSBj YXRjaChlKSB7fQoJCX07CgkJdGhpcy5jaGVja0ZsYXNoID0gZnVuY3Rpb24oKSB7 CgkJCWZvciAodmFyIGk9MztpPDEwO2krKyl7CgkJCQl2YXIgc3RyaW5nID0gJ1No b2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoLicraTsKCQkJCXRyeXsKCQkJCQl2 YXIgb2JqID0gbmV3IEFjdGl2ZVhPYmplY3Qoc3RyaW5nKTsKCQkJCQlpZihvYmop IHsKCQkJCQkJcmV0dXJuIHRydWU7CgkJCQkJfQoJCQkJfSBjYXRjaCAoZSkge30K CQkJfQoJCQlpZihuYXZpZ2F0b3IubWltZVR5cGVzICYmIG5hdmlnYXRvci5taW1l VHlwZXMubGVuZ3RoICYmIG5hdmlnYXRvci5taW1lVHlwZXNbJ2FwcGxpY2F0aW9u L3gtc2hvY2t3YXZlLWZsYXNoJ10gJiYgbmF2aWdhdG9yLm1pbWVUeXBlc1snYXBw bGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gnXS5lbmFibGVkUGx1Z2luKSB7CgkJ CQlyZXR1cm4gdHJ1ZTsKCQkJfSBlbHNlIGlmKG5hdmlnYXRvci5wbHVnaW5zWyJT aG9ja3dhdmUgRmxhc2giXSkgewoJCQkJcmV0dXJuIHRydWU7CgkJCX0gZWxzZSB7 CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9OwoJCXRoaXMucmVmb3JtU1dGRGF0 YSA9IGZ1bmN0aW9uKHVybCl7CgkJCXZhciBwYXJhbXMgPSB1cmwuc3BsaXQoL1w/ Lyk7CgkJCWlmKHBhcmFtc1sxXSAmJiBwYXJhbXNbMV0ubWF0Y2goL3V1aWQvKSkg ewoJCQkJdmFyIGRhdGEgPSBwYXJhbXNbMV0uc3BsaXQoLyYvKTsKCQkJCXZhciBy ZWZvcm1lZF9wYXJhbXMgPSAnJzsKCQkJCWZvcih2YXIgaT0wLCBsPWRhdGEubGVu Z3RoOyBpPGw7IGkrKykgewoJCQkJCXZhciB0bXBfZGF0YSA9IGRhdGFbaV0uc3Bs aXQoLz0vKTsKCQkJCQlpZih0bXBfZGF0YVsxXSkgewoJCQkJCQlyZWZvcm1lZF9w YXJhbXMgKz0gZW5jb2RlVVJJQ29tcG9uZW50KHRtcF9kYXRhWzBdKSArICc6JyAr IGVuY29kZVVSSUNvbXBvbmVudCh0bXBfZGF0YVsxXSk7CgkJCQkJCWlmKGkgIT0g bC0xKSB7CgkJCQkJCQlyZWZvcm1lZF9wYXJhbXMgKz0gJywnOwoJCQkJCQl9CgkJ CQkJfQoJCQkJfQoJCQkJdmFyIHBvc3RiYWNrX3VybCA9IHBhcmFtc1swXS5yZXBs YWNlKCcuc3dmJywgJy54bWwnKTsKCQkJCXVybCA9IHBhcmFtc1swXSArICc/c3lu Y19wYXJhbXM9JyArIHJlZm9ybWVkX3BhcmFtcyArICcmcG9zdGJhY2tfdXJsPScg KyBlbmNvZGVVUklDb21wb25lbnQocG9zdGJhY2tfdXJsKTsKCQkJfQoJCQlyZXR1 cm4gdXJsOwoJCX07CgkJdGhpcy5pbmNsdWRlU1dGID0gZnVuY3Rpb24odXJsKXsK CQkJdXJsID0gdGhpcy5yZWZvcm1TV0ZEYXRhKHVybCk7CgkJCXZhciBJTkNfU1dG X1BSRUZJWCA9ICdiZWd1bl9zd2ZfJzsKCQkJc3dmX2NvdW50Kys7CgkJCXZhciBz d2Zfd3JhcHBlciA9IGQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CgkJCXN3Zl93cmFw cGVyLnN0eWxlLnZpc2FiaWxpdHkgPSAnaGlkZGVuJzsKCQkJc3dmX3dyYXBwZXIu c3R5bGUudG9wID0gJy0xMDAwcHgnOwoJCQlzd2Zfd3JhcHBlci5zdHlsZS5sZWZ0 ID0gJy0xMDAwcHgnOwoJCQlzd2Zfd3JhcHBlci5pbm5lckhUTUwgPQoJCQkJJzxv YmplY3QgaWQ9IicgKyBJTkNfU1dGX1BSRUZJWCArIHN3Zl9jb3VudCArICciIHR5 cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiBkYXRhPSInICsgdXJs ICsgJyIgd2lkdGg9IjEiIGhlaWdodD0iMSI+JyArIAoJCQkJCSc8cGFyYW0gbmFt ZT0ibW92aWUiIHZhbHVlPSInICsgdXJsICsgJyIgLz4nICsgCgkJCQknPC9vYmpl Y3Q+JzsKCQkJZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpICYmIGQuZ2V0 RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXSAmJiBkLmdldEVsZW1lbnRzQnlU YWdOYW1lKCdib2R5JylbMF0uYXBwZW5kQ2hpbGQoc3dmX3dyYXBwZXIpOwoJCX07 CgkJdGhpcy5pbmNsdWRlU3R5bGUgPSBmdW5jdGlvbihjc3NfdGV4dCwgdHlwZSwg aWQpewoJCQl2YXIgdHlwZSA9IHR5cGUgfHwgJ3dyaXRlJzsgLy8gYXBwZW5kIG9y IHdyaXRlCgkJCXZhciBERUZVQUxUX1NUWUxFX0lEID0gJ2JlZ3VuLWRlZmF1bHQt Y3NzJzsKCQkJaWQgPSBpZCB8fCBERUZVQUxUX1NUWUxFX0lEOwoJCQlpZiAoY3Nz X3RleHQpewoJCQkJaWYgKHR5cGUgPT0gJ3dyaXRlJyl7CgkJCQkJZC53cml0ZSgn PHN0eWxlIHR5cGU9InRleHQvY3NzIiBpZD0iJyArIGlkICsgJyI+JyArIGNzc190 ZXh0ICsgJzwvc3R5bGU+Jyk7CgkJCQl9IGVsc2UgaWYgKHR5cGUgPT0gJ2FwcGVu ZCcpewoJCQkJCS8vIElFCgkJCQkJaWYgKGQuY3JlYXRlU3R5bGVTaGVldCl7CgkJ CQkJCXZhciBzdHlsZSA9IG51bGw7CgkJCQkJCXRyeXsKCQkJCQkJCXN0eWxlID0g ZC5jcmVhdGVTdHlsZVNoZWV0KCk7CgkJCQkJCQlzdHlsZS5jc3NUZXh0ICs9IGNz c190ZXh0OwoJCQkJCQl9Y2F0Y2goZSl7CgkJCQkJCQlmb3IgKHZhciBpID0gZC5z dHlsZVNoZWV0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSl7CgkJCQkJCQkJdHJ5 ewoJCQkJCQkJCQlzdHlsZSA9IGQuc3R5bGVTaGVldHNbaV07CgkJCQkJCQkJCXN0 eWxlLmNzc1RleHQgKz0gY3NzX3RleHQ7CgkJCQkJCQkJCWJyZWFrOyAvLyBhY2Nl c3MgZ3JhbnRlZD8gZ2V0IG91dHRhIGhlcmUhCgkJCQkJCQkJfWNhdGNoKGUpewoJ CQkJCQkJCQlzdHlsZSA9IG51bGw7CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQl9 CgkJCQkJfSBlbHNlIHsKCQkJCQkJaWYgKEJlZ3VuLiQoaWQpKXsKCQkJCQkJCUJl Z3VuLiQoaWQpLmlubmVySFRNTCA9IGNzc190ZXh0OwoJCQkJCQl9IGVsc2UgewoJ CQkJCQkJdmFyIHN0eWxlID0gZC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOwoJCQkJ CQkJc3R5bGUuc2V0QXR0cmlidXRlKCJ0eXBlIiwgInRleHQvY3NzIik7CgkJCQkJ CQlzdHlsZS5pZCA9IGlkOwoJCQkJCQkJc3R5bGUuYXBwZW5kQ2hpbGQoZC5jcmVh dGVUZXh0Tm9kZShjc3NfdGV4dCkpOwoJCQkJCQkJZ2V0SGVhZCgpLmFwcGVuZENo aWxkKHN0eWxlKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX07CgkJdGhp cy5pbmNsdWRlQ1NTRmlsZSA9IGZ1bmN0aW9uKHVybCl7CgkJCXZhciBzdHlsZSA9 IGQuY3JlYXRlRWxlbWVudCgibGluayIpOwoJCQlzdHlsZS5zZXRBdHRyaWJ1dGUo InR5cGUiLCAidGV4dC9jc3MiKTsKCQkJc3R5bGUuc2V0QXR0cmlidXRlKCJyZWwi LCAic3R5bGVzaGVldCIpOwoJCQlzdHlsZS5ocmVmID0gdXJsOwoJCQlnZXRIZWFk KCkuYXBwZW5kQ2hpbGQoc3R5bGUpOwoJCX07CgkJdGhpcy5pbmNsdWRlQ291bnRl ciA9IGZ1bmN0aW9uKHNyYywgb2JqKXsKCQkJaWYoIXNyYyB8fCAhb2JqKSB7CgkJ CQlyZXR1cm47CgkJCX0KCQkJKG5ldyBJbWFnZSgpKS5zcmMgPSAobmV3IEJlZ3Vu LlRlbXBsYXRlKHNyYykpLmV2YWx1YXRlKG9iaik7CgkJfTsKCQl0aGlzLnRvUXVl cnkgPSBmdW5jdGlvbihwYXJhbXMpIHsKCQkJdmFyIHJlc3VsdCA9ICcnOwoJCQl2 YXIgYW1wZXJzYW5kID0gJyc7CgkJCXZhciB0b1RhaWwgPSB7CgkJCQkncmVhbF9y ZWZlcic6IGZhbHNlLAoJCQkJJ3JlZic6IGZhbHNlCgkJCX07CgkJCXZhciBrZXk7 CgkJCWZvciAoa2V5IGluIHBhcmFtcykgewoJCQkJaWYgKHBhcmFtc1trZXldICYm IHBhcmFtcy5oYXNPd25Qcm9wZXJ0eSAmJiBwYXJhbXMuaGFzT3duUHJvcGVydHko a2V5KSkgewoJCQkJCWlmICh0eXBlb2YgdG9UYWlsW2tleV0gIT09ICJ1bmRlZmlu ZWQiKSB7CgkJCQkJCXRvVGFpbFtrZXldID0gZW5jb2RlVVJJQ29tcG9uZW50KHBh cmFtc1trZXldKTsKCQkJCQl9IGVsc2UgewoJCQkJCQlyZXN1bHQgKz0gYW1wZXJz YW5kICsga2V5ICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtc1trZXld KTsKCQkJCQkJYW1wZXJzYW5kID0gJyYnOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQlm b3IgKGtleSBpbiB0b1RhaWwpIHsKCQkJCWlmICh0b1RhaWxba2V5XSAmJiB0b1Rh aWwuaGFzT3duUHJvcGVydHkgJiYgdG9UYWlsLmhhc093blByb3BlcnR5KGtleSkp IHsKCQkJCQlyZXN1bHQgKz0gYW1wZXJzYW5kICsga2V5ICsgJz0nICsgdG9UYWls W2tleV07CgkJCQl9CgkJCX0KCQkJcmV0dXJuIHJlc3VsdDsKCQl9OwoJCXRoaXMu dG9KU09OID0gZnVuY3Rpb24ob2JqKXsKCQkJc3dpdGNoICh0eXBlb2Ygb2JqKSB7 CgkJCQljYXNlICdvYmplY3QnOgoJCQkJCWlmIChvYmopIHsKCQkJCQkJdmFyIGxp c3QgPSBbXTsKCQkJCQkJaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5KSB7CgkJCQkJ CWZvciAodmFyIGk9MDtpIDwgb2JqLmxlbmd0aDtpKyspIHsKCQkJCQkJCWxpc3Qu cHVzaCh0aGlzLnRvSlNPTihvYmpbaV0pKTsKCQkJCQkJfQoJCQkJCQlyZXR1cm4g J1snICsgbGlzdC5qb2luKCcsJykgKyAnXSc7CgkJCQkJCX0gZWxzZSB7CgkJCQkJ CQlmb3IgKHZhciBwcm9wIGluIG9iaikgewoJCQkJCQkJCWxpc3QucHVzaCgnIicg KyBwcm9wICsgJyI6JyArIHRoaXMudG9KU09OKG9ialtwcm9wXSkpOwoJCQkJCQkJ fQoJCQkJCQkJcmV0dXJuICd7JyArIGxpc3Quam9pbignLCcpICsgJ30nOwoJCQkJ CQl9CgkJCQkJfSBlbHNlIHsKCQkJCQkJcmV0dXJuICdudWxsJzsKCQkJCQl9CgkJ CQljYXNlICdzdHJpbmcnOgoJCQkJCXJldHVybiAnIicgKyBvYmoucmVwbGFjZSgv KFsiJ10pL2csICdcXCQxJykgKyAnIic7CgkJCQljYXNlICdudW1iZXInOgoJCQkJ CXJldHVybiBvYmo7CgkJCQljYXNlICdib29sZWFuJzoKCQkJCQlyZXR1cm4gbmV3 IFN0cmluZyhvYmopOwoJCQl9CgkJfTsKCQl0aGlzLmluX2FycmF5ID0gZnVuY3Rp b24oYXJyLCB2YWx1ZSl7CgkJCWZvciAodmFyIGkgPSAwLCBsID0gYXJyLmxlbmd0 aDsgaSA8IGw7IGkrKyl7CgkJCQkJaWYgKGFycltpXSA9PSB2YWx1ZSl7CgkJCQkJ CXJldHVybiB0cnVlOwoJCQkJCX0KCQkJfQoJCQlyZXR1cm4gZmFsc2U7CgkJfTsK CQl0aGlzLmluTGlzdCA9IGZ1bmN0aW9uKHN0cmluZywgdmFsdWUpewoJCQl2YXIg YXJyID0gc3RyaW5nICYmIHN0cmluZy50b0xvd2VyQ2FzZSgpLnNwbGl0KCcsJyk7 CgkJCWlmKCFhcnIpIHsKCQkJCXJldHVybiBmYWxzZTsKCQkJfSBlbHNlIHsKCQkJ CXJldHVybiBCZWd1bi5VdGlscy5pbl9hcnJheShhcnIsIHZhbHVlLnRvTG93ZXJD YXNlKCkpOwoJCQl9CgkJfTsKCQl0aGlzLmNvdW50V2luZG93U2l6ZSA9IGZ1bmN0 aW9uKCkgewoJCQl2YXIgdyA9IDAsIGggPSAwOwoJCQlpZiggdHlwZW9mKCB3aW5k b3cuaW5uZXJXaWR0aCApID09ICdudW1iZXInICkgewoJCQkJdyA9IHdpbmRvdy5p bm5lcldpZHRoOwoJCQkJaCA9IHdpbmRvdy5pbm5lckhlaWdodDsKCQkJfSBlbHNl IGlmKCBkLmRvY3VtZW50RWxlbWVudCAmJiAoIGQuZG9jdW1lbnRFbGVtZW50LmNs aWVudFdpZHRoIHx8IGQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCApICkg ewoJCQkJdyA9IGQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoOwoJCQkJaCA9 IGQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDsKCQkJfSBlbHNlIGlmKCBk LmJvZHkgJiYgKCBkLmJvZHkuY2xpZW50V2lkdGggfHwgZC5ib2R5LmNsaWVudEhl aWdodCApICkgewoJCQkJdyA9IGQuYm9keS5jbGllbnRXaWR0aDsKCQkJCWggPSBk LmJvZHkuY2xpZW50SGVpZ2h0OwoJCQl9CgkJCXZhciBvYmogPSB7CgkJCQl3aWR0 aDogdywKCQkJCWhlaWdodDogaAoJCQl9OwoJCQlyZXR1cm4gb2JqOwoJCX07CgkJ dGhpcy5nZXRTY3JvbGxYWSA9IGZ1bmN0aW9uICgpIHsKCQkJdmFyIHggPSAwLCB5 ID0gMDsKCQkJaWYoIHR5cGVvZiggd2luZG93LnBhZ2VZT2Zmc2V0ICkgPT0gJ251 bWJlcicgKSB7CgkJCQl5ID0gd2luZG93LnBhZ2VZT2Zmc2V0OwoJCQkJeCA9IHdp bmRvdy5wYWdlWE9mZnNldDsKCQkJfSBlbHNlIGlmKCBkLmJvZHkgJiYgKCBkLmJv ZHkuc2Nyb2xsTGVmdCB8fCBkLmJvZHkuc2Nyb2xsVG9wICkgKSB7CgkJCQl5ID0g ZC5ib2R5LnNjcm9sbFRvcDsKCQkJCXggPSBkLmJvZHkuc2Nyb2xsTGVmdDsKCQkJ fSBlbHNlIGlmKCBkLmRvY3VtZW50RWxlbWVudCAmJiAoIGQuZG9jdW1lbnRFbGVt ZW50LnNjcm9sbExlZnQgfHwgZC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wICkg KSB7CgkJCQl5ID0gZC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wOwoJCQkJeCA9 IGQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQ7CgkJCX0KCQkJdmFyIG9iaiA9 IHsKCQkJCXg6IHgsCgkJCQl5OiB5CgkJCX07CgkJCXJldHVybiBvYmo7CgkJfTsK CQl0aGlzLmZpbmRQb3MgPSBmdW5jdGlvbihvYmopIHsKCQkJdmFyIGN1cmxlZnQg PSAwOwoJCQl2YXIgY3VydG9wID0gMDsKCQkJaWYgKG9iaiAmJiBvYmoub2Zmc2V0 UGFyZW50KSB7CgkJCQlkbyB7CgkJCQkJY3VybGVmdCArPSBvYmoub2Zmc2V0TGVm dDsKCQkJCQljdXJ0b3AgKz0gb2JqLm9mZnNldFRvcDsKCQkJCX0gd2hpbGUgKG9i aiA9IG9iai5vZmZzZXRQYXJlbnQpOwoJCQkJdmFyIG9iaiA9IHsKCQkJCQlsZWZ0 OiBjdXJsZWZ0LAoJCQkJCXRvcDogY3VydG9wCgkJCQl9CgkJCQlyZXR1cm4gb2Jq OwoJCQl9CgkJfTsKCQl0aGlzLmFkZEV2ZW50ID0gZnVuY3Rpb24gKG9iaixuYW1l LGZ1bmMpIHsKCQkJaWYob2JqLmFkZEV2ZW50TGlzdGVuZXIpIHsKCQkJCW9iai5h ZGRFdmVudExpc3RlbmVyKG5hbWUsIGZ1bmMsIGZhbHNlKTsKCQkJfSBlbHNlIGlm IChvYmouYXR0YWNoRXZlbnQpIHsKCQkJCW9iai5hdHRhY2hFdmVudCgnb24nK25h bWUsIGZ1bmMpOwoJCQl9CgkJfTsKCQl0aGlzLmhhc0NsYXNzTmFtZSA9IGZ1bmN0 aW9uKGVsZW1lbnQsIGNsYXNzTmFtZSkgewoJCQlyZXR1cm4gbmV3IFJlZ0V4cCgi XFxiIiArIGNsYXNzTmFtZSArICJcXGIiKS50ZXN0KGVsZW1lbnQuY2xhc3NOYW1l KTsKCQl9OwoJCXRoaXMuYWRkQ2xhc3NOYW1lID0gZnVuY3Rpb24oZWxlbWVudCwg Y2xhc3NOYW1lKSB7CgkJCWlmICghdGhpcy5oYXNDbGFzc05hbWUoZWxlbWVudCwg Y2xhc3NOYW1lKSkKCQkJZWxlbWVudC5jbGFzc05hbWUgKz0gKGVsZW1lbnQuY2xh c3NOYW1lID8gJyAnIDogJycpICsgY2xhc3NOYW1lOwoJCQkJcmV0dXJuIGVsZW1l bnQ7CgkJfTsKCQl0aGlzLnJlbW92ZUNsYXNzTmFtZSA9IGZ1bmN0aW9uKGVsZW1l bnQsIGNsYXNzTmFtZSkgewoJCQlpZiAodGhpcy5oYXNDbGFzc05hbWUoZWxlbWVu dCxjbGFzc05hbWUpKSB7CgkJCQl2YXIgcmVnID0gbmV3IFJlZ0V4cCgnKFxcc3xe KScrY2xhc3NOYW1lKycoXFxzfCQpJyk7CgkJCQllbGVtZW50LmNsYXNzTmFtZT1l bGVtZW50LmNsYXNzTmFtZS5yZXBsYWNlKHJlZywnICcpOwoJCQl9CgkJfTsKCQl0 aGlzLnRvQ2FtZWxDYXNlID0gZnVuY3Rpb24ocyl7CgkJCWZvcih2YXIgZXhwPS8t KFthLXpdKS87IGV4cC50ZXN0KHMpOyBzPXMucmVwbGFjZShleHAsUmVnRXhwLiQx LnRvVXBwZXJDYXNlKCkpKTsKCQkJcmV0dXJuIHM7CgkJfTsKCQl0aGlzLmdldFN0 eWxlID0gZnVuY3Rpb24oZWwsYSl7CgkJCXZhciBlbCA9IGVsIHx8IEJlZ3VuLiQo ZWwpOyAKCQkJdmFyIHYgPSBudWxsOwoJCQlpZihkLmRlZmF1bHRWaWV3ICYmIGQu ZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSl7CgkJCQl2YXIgY3MgPSBkLmRl ZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsbnVsbCk7CgkJCQlpZihjcyAm JiBjcy5nZXRQcm9wZXJ0eVZhbHVlKSB7CgkJCQkJdiA9IGNzLmdldFByb3BlcnR5 VmFsdWUoYSk7CgkJCQl9CgkJCX0KCQkJaWYoIXYgJiYgZWwuY3VycmVudFN0eWxl KSB7CgkJCQl2ID0gZWwuY3VycmVudFN0eWxlW3RoaXMudG9DYW1lbENhc2UoYSld OwoJCQl9CgkJCXJldHVybiB2OwoJCX07Cgl9KCk7Cn0KQmVndW4uVGVtcGxhdGUg PSBmdW5jdGlvbih0cGwpewoJdmFyIHRwbCA9IHRwbCB8fCAnJzsKCXRoaXMuZ2V0 VHBsID0gZnVuY3Rpb24oKXsKCQlyZXR1cm4gdHBsOwoJfTsKCXRoaXMuZXZhbHVh dGUgPSBmdW5jdGlvbih2YXJzKXsKCQlmb3IgKHZhciBrZXkgaW4gdmFycykgewoJ CQl2YXIgcmUgPSBuZXcgUmVnRXhwKCdcXHtcXHsnICsga2V5ICsgJ1xcfVxcfScs ICdnJyk7CgkJCXRwbCA9IHRwbC5yZXBsYWNlKHJlLCB2YXJzW2tleV0pOwoJCX0K CQkvLyByZW1vdmUgdW51c2VkIHBsYWNlaG9sZGVycwoJCXZhciByZSA9IG5ldyBS ZWdFeHAoJ1xce1xcey4rP1xcfVxcfScsICdnJyk7CgkJdHBsID0gdHBsLnJlcGxh Y2UocmUsICctZm9vJyk7CgoJCXJldHVybiB0cGw7Cgl9Owp9OwoKaWYgKCFCZWd1 bi5BdXRvY29udGV4dCl7CglCZWd1bi5BdXRvY29udGV4dCA9IG5ldyBmdW5jdGlv bigpewoJCXZhciBfdGhpcyA9IHRoaXM7CgkJdGhpcy5kb21fY2hhbmdlID0gZmFs c2U7CgkJdGhpcy5tdWx0aXBsZV9mZWVkID0gdHJ1ZTsKCQl0aGlzLnNjcm9sbGVy cyA9IFtdOwoJCXRoaXMub3B0aW9ucyA9IHsKCQkJbWF4X2Jhbm5lcnNfY291bnQ6 IDUwLAoJCQltYXhfYmxvY2tzX2NvdW50OiAxMCwKCQkJbWF4X3Njcm9sbGVyczog MSwKCQkJbWF4X3Njcm9sbF9iYW5uZXJzOiAxMAoJCX07CgoJCXZhciBNb2R1bGUg PSAoZnVuY3Rpb24oKSB7CgkJCXZhciBleHQgPSBbJ3BwY2FsbCcsJ3Njcm9sbCcs J3JpY2gnLCdhY2NvcmRpb24nLCd0b3AnLCdjYXRhbG9nJ107CgkJCXZhciBsb2Fk ZWQgPSBbXTsKCQkJcmV0dXJuIHsKCQkJCWlzS25vd246IGZ1bmN0aW9uKGxpbmsp IHsKCQkJCQl2YXIgcmVNb2R1bGUgPSAvYXV0b18oLispXC5qcy87CgkJCQkJdmFy IHBhcnNlZCA9IHJlTW9kdWxlLmV4ZWMobGluayk7CgkJCQkJcmV0dXJuIChwYXJz ZWQgIT09IG51bGwpICYmIChwYXJzZWQubGVuZ3RoID09PSAyKSAmJgoJCQkJCQlC ZWd1bi5VdGlscy5pbl9hcnJheShleHQsIHBhcnNlZFsxXSk7CgkJCQl9LAoJCQkJ aXNMb2FkZWQ6IGZ1bmN0aW9uKGxpbmspIHsKCQkJCQlyZXR1cm4gQmVndW4uVXRp bHMuaW5fYXJyYXkobG9hZGVkLCBsaW5rKTsKCQkJCX0sCgkJCQlsb2FkOiBmdW5j dGlvbihsaW5rKSB7CgkJCQkJaWYgKCF0aGlzLmlzS25vd24obGluaykgfHwgIXRo aXMuaXNMb2FkZWQobGluaykpIHsKCQkJCQkJQmVndW4uVXRpbHMuaW5jbHVkZVNj cmlwdChsaW5rLCAnYXBwZW5kJyk7CgkJCQkJCWxvYWRlZC5wdXNoKGxpbmspOwoJ CQkJCX0KCQkJCX0sCgkJCQlnZXROYW1lczogZnVuY3Rpb24od2hhdCkgewoJCQkJ CXN3aXRjaCAod2hhdCkgewoJCQkJCQljYXNlICJsb2FkZWQiOgoJCQkJCQkJcmV0 dXJuIGxvYWRlZC50b1N0cmluZygpOwoJCQkJCQljYXNlICJhbGwiOgoJCQkJCQlk ZWZhdWx0OgoJCQkJCQkJcmV0dXJuIGV4dC50b1N0cmluZygpOwoJCQkJCX0KCQkJ CX0KCQkJfTsKCQl9KSgpOwoKCQl0aGlzLmdldE1vZHVsZXMgPSBNb2R1bGUuZ2V0 TmFtZXM7CgoJCXZhciBCQU5ORVJfNjAweDkwX0JMT0NLX0lEID0gMTsKCQl2YXIg REVGQVVMVF9CTE9DS19KUyA9ICdodHRwOi8vYXV0b2NvbnRleHQuYmVndW4ucnUv YmxvY2tzL3t7cGFkX2lkfX0ue3tibG9ja19pZH19LmpzJzsKCgkJdGhpcy5TdHJp bmdzID0gewoJCQl1cmxzOiB7CgkJCQliZWd1bjogJ2h0dHA6Ly93d3cuYmVndW4u cnUvJywKCQkJCWF1dG9jb250ZXh0OiAnaHR0cDovL2F1dG9jb250ZXh0LmJlZ3Vu LnJ1LycsCgkJCQlkYWVtb246ICdodHRwOi8vYXV0b2NvbnRleHQuYmVndW4ucnUv Y29udGV4dC5qc3A/JywgLy8gdG90YWxseSBuZXcKCQkJCXRodW1iczogJ2h0dHA6 Ly90aHVtYnMuYmVndW4ucnUvJywKCQkJCWJsYW5rOiAnaHR0cDovL2F1dG9jb250 ZXh0LmJlZ3VuLnJ1L2ltZy9ibGFuay5naWYnLAoJCQkJYmxvY2tfanM6IERFRkFV TFRfQkxPQ0tfSlMsIC8vIHRvdGFsbHkgbmV3CgkJCQlibG9ja19jb3VudGVyOiAn aHR0cDovL2F1dG9jb250ZXh0LmJlZ3VuLnJ1L2Jsb2NrY291bnRlcj9wYWRfaWQ9 e3twYWRfaWR9fSZibG9jaz17e2Jsb2NrX2lkfX0nLCAvLyBtdWx0aWJsb2NrCgkJ CQlzY3JpcHRfdGltZW91dF9jb3VudGVyOiAnaHR0cDovL2F1dG9jb250ZXh0LmJl Z3VuLnJ1L2Jsb2NrY291bnRlcj9wYWRfaWQ9e3twYWRfaWR9fSZibG9jaz17e2Js b2NrX2lkfX0mc2NyaXB0X3RpbWVvdXQ9MScsIC8vIHNjcmlwdCBmYWlsZWQKCQkJ CWxvZ19iYW5uZXJzX2NvdW50ZXI6ICdodHRwOi8vYXV0b2NvbnRleHQuYmVndW4u cnUvYmxvY2tjb3VudGVyP2RhdGE9e3tkYXRhfX0mbG9nX3Zpc2liaWxpdHk9MScK CQkJfSwKCQkJc3R1YnM6IHsKCQkJCXBsYWNlX2hlcmU6ICcmIzEwNDQ7JiMxMDcy OyYjMTA5MDsmIzExMDA7ICYjMTA4NjsmIzEwNzM7JiMxMDk4OyYjMTEwMzsmIzEw NzQ7JiMxMDgzOyYjMTA3NzsmIzEwODU7JiMxMDgwOyYjMTA3NzsnLAoJCQkJYWxs X2Jhbm5lcnM6ICcmIzEwNDI7JiMxMDg5OyYjMTA3NzsgJiMxMDg2OyYjMTA3Mzsm IzEwOTg7JiMxMTAzOyYjMTA3NDsmIzEwODM7JiMxMDc3OyYjMTA4NTsmIzEwODA7 JiMxMTAzOycsCgkJCQliZWNvbWVfcGFydG5lcjogJyYjMTA1NzsmIzEwOTA7JiMx MDcyOyYjMTA5MDsmIzExMDA7ICYjMTA4NzsmIzEwNzI7JiMxMDg4OyYjMTA5MDsm IzEwODU7JiMxMDc3OyYjMTA4ODsmIzEwODY7JiMxMDg0OycKCQkJfSwKCQkJY29u dGFjdHM6IHsKCQkJCWNhcmQ6ICcmIzEwNTA7JiMxMDg2OyYjMTA4NTsmIzEwOTA7 JiMxMDcyOyYjMTA4MjsmIzEwOTA7JiMxMDk5OycsCgkJCQlwcGNhbGw6ICcmIzEw NDc7JiMxMDc0OyYjMTA4NjsmIzEwODU7JiMxMDgwOyYjMTA5MDsmIzExMDA7JwoJ CQl9LAoJCQljc3M6IHsKCQkJCXByZWZpeDogJ2JlZ3VuJywKCQkJCWJsb2NrX3By ZWZpeDogJ2JlZ3VuX2Jsb2NrXycsCgkJCQlzY3JvbGxfdGFibGVfcHJlZml4OiAn YmVndW5fYWR2X3RhYmxlXycsCgkJCQlzY3JvbGxfZGl2X3ByZWZpeDogJ2JlZ3Vu X2Fkdl9jb21tb25fJywKCQkJCWNhdGFsb2dfc2VhcmNoX3dyYXBwZXI6ICdiZWd1 bl9jYXRhbG9nX3NlYXJjaF9zcGFuJywKCQkJCWNhdGFsb2dfcmVzdWx0c193cmFw cGVyOiAnYmVndW5fY2F0YWxvZ19yZXN1bHRzX3NwYW4nLAoJCQkJY2F0YWxvZ19j bG91ZF93cmFwcGVyOiAnYmVndW5fY2F0YWxvZ19jbG91ZF9zcGFuJywKCQkJCXRo dW1iOiAnYmVndW5fYWR2X3RodW1iJywKCQkJCWZhdmljb246ICdiZWd1bl9hZHZf ZmF2JywKCQkJCXNjcm9sbDogJ2JlZ3VuX3Njcm9sbCcsCgkJCQlsb2dvX2NvbG9y OiAnIzYyMjY3OCcsCgkJCQl0aHVtYl9kZWZfY29sb3I6ICcjMTE4RjAwJywKCQkJ CXRodW1iX2RlZl9jb2xvcl9ob3ZlcjogJyNGRjAwMDAnCgkJCX0sCgkJCWpzOiB7 CgkJCQliYW5uZXJfb25jbGljazogJ0JlZ3VuLkF1dG9jb250ZXh0LmNsaWNrQmFu bmVyKGV2ZW50LCB0aGlzKScgLy8gbm8gJ3JldHVybicgaGVyZSEKCQkJfQoJCX07 CgoJCXZhciBpc19vcHRpbWl6ZWRfYmxvY2tfbG9hZGluZyA9IGZ1bmN0aW9uKCl7 CgkJCWlmICh3aW5kb3cuYmVndW5fdXJscyAmJiBiZWd1bl91cmxzLmJsb2NrX2pz ICYmIGJlZ3VuX3VybHMuYmxvY2tfanMgIT0gREVGQVVMVF9CTE9DS19KUyl7CgkJ CQlyZXR1cm4gZmFsc2U7CgkJCX0gZWxzZSB7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJ fQoJCX07CgoJCXZhciBPUFRJTUlaRURfQkxPQ0tfTE9BRElORyA9IHdpbmRvdy5v cHRpbWl6ZWRfYmxvY2tfbG9hZGluZyA/IHdpbmRvdy5vcHRpbWl6ZWRfYmxvY2tf bG9hZGluZyA6IGlzX29wdGltaXplZF9ibG9ja19sb2FkaW5nKCk7IAoKCQl2YXIg aXNCRlNBcHBsaWNhYmxlID0gZnVuY3Rpb24oKXsKCQkJcmV0dXJuICh3aW5kb3cu YmVndW5fbXVsdGlwbGVfZmVlZCAhPT0gdW5kZWZpbmVkIHx8IF90aGlzLm11bHRp cGxlX2ZlZWQpICYmICF3aW5kb3cuYmVndW5fYmxvY2tfaWRzOwoJCX07CgoJCWZ1 bmN0aW9uIExvYWRpbmdTdHJhdGVneSgpe307CgkJKGZ1bmN0aW9uKCl7CgkJCUxv YWRpbmdTdHJhdGVneS5nZXRJbnN0YW5jZSA9IGZ1bmN0aW9uKCl7CgkJCQlyZXR1 cm4gaW5zdGFuY2U7CgkJCX07CgkJCQoJCQlMb2FkaW5nU3RyYXRlZ3kucHJvdG90 eXBlID0gewoJCQkJb3B0aW1pemVkOiBPUFRJTUlaRURfQkxPQ0tfTE9BRElORywK CQkJCWxvYWRCbG9jazogZnVuY3Rpb24oYmxvY2tfaWQpe30sCgkJCQlwYXJzZUZl ZWQ6IGZ1bmN0aW9uKCl7fQoJCQl9CgkJCQoJCQkvLyBEZWZhdWx0U3RyYXRlZ3kK CQkJZnVuY3Rpb24gRFMoKXt9OwoJCQlEUy5wcm90b3R5cGUgPSBuZXcgTG9hZGlu Z1N0cmF0ZWd5KCk7CgkJCURTLnByb3RvdHlwZS5sb2FkQmxvY2sgPSBmdW5jdGlv bihibG9ja19pZCl7CgkJCQlpZiAodGhpcy5vcHRpbWl6ZWQpewoJCQkJCXRoaXMu YmxvY2tfaWQgPSBibG9ja19pZDsKCQkJCQlfdGhpcy5yZXF1ZXN0UGFyYW1zLmJs b2NrX2lkID0gYmxvY2tfaWQ7CgkJCQkJaWYgKCFfdGhpcy5pbml0RmVlZExvYWQo KSkgewoJCQkJCQlfdGhpcy5sb2FkRmVlZERvbmUoKTsKCQkJCQl9CgkJCQkJYXJn dW1lbnRzLmNhbGxlZSA9IExvYWRpbmdTdHJhdGVneS5sb2FkQmxvY2s7IC8vIG5v cAoJCQkJfSBlbHNlIHsKCQkJCQlfdGhpcy5yZXF1ZXN0UGFyYW1zLmJsb2NrX2lk ID0gLTE7CgkJCQkJQmVndW4uVXRpbHMuaW5jbHVkZVNjcmlwdCgKCQkJCQkJbmV3 IEJlZ3VuLlRlbXBsYXRlKF90aGlzLlN0cmluZ3MudXJscy5ibG9ja19qcykuZXZh bHVhdGUoeydwYWRfaWQnOiB3aW5kb3cuYmVndW5fYXV0b19wYWQsICdibG9ja19p ZCc6IGJsb2NrX2lkfSksCgkJCQkJCSd3cml0ZScgLy8gb25seSB3cml0ZSEhCgkJ CQkJKTsKCQkJCX0KCQkJfTsKCQkJRFMucHJvdG90eXBlLnBhcnNlRmVlZCA9IGZ1 bmN0aW9uKCl7CgkJCQlfdGhpcy5sb2FkRXh0cmFSZXNvdXJjZXMoKTsKCQkJCWlm ICh0aGlzLm9wdGltaXplZCl7CgkJCQkJdmFyIGZlZWQgPSBfdGhpcy5nZXRGZWVk KCk7CgkJCQkJaWYgKGZlZWQgJiYgZmVlZC5ibG9ja3MgJiYgdGhpcy5ibG9ja19p ZCl7CgkJCQkJCXZhciBibG9jayA9IF90aGlzLkJsb2Nrcy5nZXRCbG9ja0J5SWQo dGhpcy5ibG9ja19pZCwgZmVlZC5ibG9ja3MpOwoJCQkJCQlpZiAoYmxvY2spewoJ CQkJCQkJX3RoaXMuQmxvY2tzLnB1c2goYmxvY2spOwoJCQkJCQl9CgkJCQkJfQkK CQkJCX0gZWxzZSB7CgkJCQkJLy8gbm9wCgkJCQl9CgkJCX07CgoJCQkvLyBFeHRy YUJsb2NrU3RyYXRlZ3kKCQkJZnVuY3Rpb24gRUJTKCl7fTsKCQkJRUJTLnByb3Rv dHlwZSA9IG5ldyBMb2FkaW5nU3RyYXRlZ3koKTsKCQkJRUJTLnByb3RvdHlwZS5w YXJzZUZlZWQgPSBmdW5jdGlvbigpIHsKCQkJCV90aGlzLmxvYWRFeHRyYVJlc291 cmNlcygpOwoJCQl9OwoJCQlFQlMucHJvdG90eXBlLmxvYWRCbG9jayA9IGZ1bmN0 aW9uKGJsb2NrX2lkKXsKCQkJCV90aGlzLnJlcXVlc3RQYXJhbXMuYmxvY2tfaWQg PSAtMTsKCQkJCWlmICh0aGlzLm9wdGltaXplZCl7CgkJCQkJX3RoaXMuQmxvY2tz LnB1c2god2luZG93LmJlZ3VuX2V4dHJhX2Jsb2NrKTsKCQkJCX0gZWxzZSB7CgkJ CQkJX3RoaXMuQmxvY2tzLnB1c2god2luZG93LmJlZ3VuX2V4dHJhX2Jsb2NrKTsK CQkJCX0KCQkJfTsKCgkJCS8vQmFubmVyc0ZldGNoaW5nU3RyYXRlZ3kKCQkJZnVu Y3Rpb24gQkZTKCl7fTsKCQkJQkZTLnByb3RvdHlwZSA9IG5ldyBMb2FkaW5nU3Ry YXRlZ3koKTsKCQkJQkZTLnByb3RvdHlwZS5sb2FkQmxvY2sgPSBmdW5jdGlvbihi bG9ja19pZCl7CgkJCQl2YXIgZmVlZCA9IF90aGlzLmdldEZlZWQoKTsKCQkJCWlm IChmZWVkICYmIGZlZWQuYmxvY2tzKXsKCQkJCQlfdGhpcy5yZXNldEJhbm5lcklu ZGV4KCk7CgkJCQkJdmFyIHNCYW5uZXJzID0gX3RoaXMuZ2V0U2hvd25CYW5uZXJz KCk7CgkJCQkJaWYgKHR5cGVvZiBzQmFubmVycyA9PT0gIm9iamVjdCIpIHsKCQkJ CQkJc0Jhbm5lcnMgPSBzQmFubmVycy50b1N0cmluZygpOwoJCQkJCX0gZWxzZSB7 CgkJCQkJCXNCYW5uZXJzID0gIiI7CgkJCQkJfQoJCQkJCV90aGlzLmZlZWRMb2Fk KHsiYmFubmVyX2ZpbHRlciI6IHNCYW5uZXJzfSk7CgkJCQl9CgoJCQkJaWYgKHRo aXMub3B0aW1pemVkKXsKCQkJCQl0aGlzLmJsb2NrX2lkID0gYmxvY2tfaWQ7CgkJ CQl9IGVsc2UgewoJCQkJCShuZXcgRFMpLmxvYWRCbG9jay5hcHBseSh0aGlzLCBb YmxvY2tfaWRdKTsKCQkJCX0KCQkJfTsKCQkJQkZTLnByb3RvdHlwZS5wYXJzZUZl ZWQgPSBmdW5jdGlvbigpewoJCQkJKG5ldyBEUykucGFyc2VGZWVkLmFwcGx5KHRo aXMpOwoJCQl9OwoKCQkJdmFyIGluc3RhbmNlOwoKCQkJaWYgKHdpbmRvdy5iZWd1 bl9leHRyYV9ibG9jayAhPT0gdW5kZWZpbmVkKXsKCQkJCWluc3RhbmNlID0gbmV3 IEVCUygpOwoJCQl9IGVsc2UgaWYgKGlzQkZTQXBwbGljYWJsZSgpKXsKCQkJCWlu c3RhbmNlID0gbmV3IEJGUygpOwoJCQl9IGVsc2UgewoJCQkJaW5zdGFuY2UgPSBu ZXcgRFMoKTsKCQkJfQoJCX0pKCk7CgkJCgkJdGhpcy5zZXRPcHRpb25zID0gZnVu Y3Rpb24ob3B0aW9ucyl7CgkJCUJlZ3VuLmV4dGVuZChfdGhpcy5vcHRpb25zLCBv cHRpb25zIHx8IHt9KTsKCQl9OwoJCXRoaXMucmVxdWVzdFBhcmFtcyA9IHsKCQkJ InBhZF9pZCI6ICcnLAoJCQkiYmxvY2tfaWQiOiAnJywKCQkJIm4iOiAnJywKCQkJ ImxtdCI6IERhdGUucGFyc2UoZG9jdW1lbnQubGFzdE1vZGlmaWVkKSAvIDEwMDAs CgkJCSJzZW5zZV9tb2RlIjogJ2N1c3RvbScsIC8vIHd0Zj8KCQkJInV0X3NjcmVl bl93aWR0aCI6IHNjcmVlbi53aWR0aCB8fCAwLAoJCQkidXRfc2NyZWVuX2hlaWdo dCI6IHNjcmVlbi5oZWlnaHQgfHwgMCwKCQkJImpzb24iOiAxLCAvLyBmb3IganNv biBmZWVkIQoJCQkianNjYWxsIjogJ2xvYWRGZWVkRG9uZScsIC8vIGNhbGxlZCBh ZnRlciBmZWVkIGxvYWQsIGluIHRoZSBCZWd1bi5BdXRvY29udGV4dCBuYW1lc3Bh Y2UKCQkJInN0b3B3b3JkcyI6IHdpbmRvdy5zdG9wd29yZHMgfHwgJycsCgkJCSJi ZWd1bl9zZWxmX2tleXdvcmRzIjogd2luZG93LmJlZ3VuX3NlbGZfa2V5d29yZHMg fHwgJycsCgkJCSJjb25kaXRpb25faWQiOiB3aW5kb3cuYmVndW5fY29uZGl0aW9u X2lkIHx8ICcnLAoJCQkiZnJtX2xldmVsIjogJycsCgkJCSJmcm1fdG9wIjogJycs CgkJCSJmb3JjZV9qc19saW5rIjogJycsCgkJCSJob29rRGF0YSI6ICcnLAoJCQki cmVmIjogZG9jdW1lbnQucmVmZXJyZXIsCgkJCSJyZWFsX3JlZmVyIjogZG9jdW1l bnQubG9jYXRpb24sCgkJCSJvdmVycmlkZGVuIjogJycsCgkJCSJ2ZXJzaW9uIjog JycsCgkJCSJiYW5uZXJfZmlsdGVyIjogJycKCQl9OwoJCXRoaXMucmVzcG9uc2VQ YXJhbXMgPSB7fTsKCQl0aGlzLnByZXBhcmVSZXF1ZXN0UGFyYW1zID0gZnVuY3Rp b24obmV3VmFsdWVzKXsKCQkJaWYgKHNlbGYucGFyZW50KXsgLy8gby5iZWd1bi5y dQoJCQkJdHJ5eyAKCQkJCQkJdmFyIGV4dHJhX2RhdGEgPSBzZWxmLnBhcmVudC5k b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm90dG9tQmFubmVyRGF0YUlkJykgfHwg bnVsbDsgCgkJCQkJCWlmIChleHRyYV9kYXRhICYmIGV4dHJhX2RhdGEuaW5uZXJI VE1MKXsgCgkJCQkJCV90aGlzLnJlcXVlc3RQYXJhbXMuaG9va0RhdGEgPSBleHRy YV9kYXRhLmlubmVySFRNTDsgCgkJCQkJfSAKCQkJCX1jYXRjaChlKXt9CgkJCX0K CQkJX3RoaXMucmVxdWVzdFBhcmFtcy5uID0gX3RoaXMub3B0aW9ucy5tYXhfYmFu bmVyc19jb3VudDsKCQkJdmFyIHZlcnNpb24gPSBCZWd1bi5SRVZJU0lPTi5yZXBs YWNlKC9cRC9naSwgJycpOwoJCQlfdGhpcy5yZXF1ZXN0UGFyYW1zLnZlcnNpb24g PSB2ZXJzaW9uOwoJCQlpZiAodHlwZW9mKHdpbmRvdy5iZWd1bl9qc19mb3JjZV9s b2FkKSAhPSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuYmVndW5fanNfZm9yY2VfbG9h ZCkgewoJCQkJX3RoaXMucmVxdWVzdFBhcmFtcy5mb3JjZV9qc19saW5rID0gTW9k dWxlLmdldE5hbWVzKCdhbGwnKTsKCQkJfQoJCQl2YXIgZnJhbWVfbGV2ZWwgPSAo ZnVuY3Rpb24oKXsKCQkJCXZhciBsZXZlbCA9IDA7CgkJCQl2YXIgX3BhcmVudCA9 IHNlbGY7CgkJCQl3aGlsZSAoX3BhcmVudCAhPT0gdG9wICYmIGxldmVsIDwgOTk5 KXsKCQkJCQlfcGFyZW50ID0gX3BhcmVudC5wYXJlbnQ7CgkJCQkJbGV2ZWwrKzsK CQkJCX0KCQkJCXJldHVybiBsZXZlbDsKCQkJfSkoKTsKCQkJaWYgKGZyYW1lX2xl dmVsKXsKCQkJCV90aGlzLnJlcXVlc3RQYXJhbXMuZnJtX2xldmVsID0gZnJhbWVf bGV2ZWw7CgkJCQl0cnl7CgkJCQkJX3RoaXMucmVxdWVzdFBhcmFtcy5mcm1fdG9w ID0gdG9wLmxvY2F0aW9uLmhyZWY7CgkJCQl9Y2F0Y2goZSl7CgkJCQkJX3RoaXMu cmVxdWVzdFBhcmFtcy5mcm1fdG9wID0gJ3RvcCBub3QgYWNjZXNzaWJsZSc7CgkJ CQl9CgkJCX0KCQkJaWYgKHdpbmRvdy5iZWd1bl9ibG9ja19pZHMpIHsKCQkJCV90 aGlzLnJlcXVlc3RQYXJhbXMuYmxvY2tfaWQgPSB3aW5kb3cuYmVndW5fYmxvY2tf aWRzLnJlcGxhY2UoL1xzL2csICIiKTsKCQkJfSBlbHNlIHsKCQkJCWlmICh3aW5k b3cuYmVndW5fYmxvY2tfaWQgJiYgaXNCRlNBcHBsaWNhYmxlKCkpIHsKCQkJCQlf dGhpcy5yZXF1ZXN0UGFyYW1zLmJsb2NrX2lkID0gd2luZG93LmJlZ3VuX2Jsb2Nr X2lkOwoJCQkJfQoJCQl9CgkJCWlmICh3aW5kb3cuYmVndW5fcmVxdWVzdF9wYXJh bXMgJiYgd2luZG93LmJlZ3VuX3JlcXVlc3RfcGFyYW1zLmNvbnN0cnVjdG9yID09 PSBPYmplY3QpIHsKCQkJCXdpbmRvdy5iZWd1bl9yZXF1ZXN0X3BhcmFtcy5vdmVy cmlkZGVuID0gMTsKCQkJCUJlZ3VuLmV4dGVuZChfdGhpcy5yZXF1ZXN0UGFyYW1z LCB3aW5kb3cuYmVndW5fcmVxdWVzdF9wYXJhbXMpOwoJCQl9CgkJCWlmIChuZXdW YWx1ZXMpIHsKCQkJCUJlZ3VuLmV4dGVuZChfdGhpcy5yZXF1ZXN0UGFyYW1zLCBu ZXdWYWx1ZXMpOwoJCQl9CgkJCXZhciB0aGVQYWQgPSBfdGhpcy5nZXRQYWQoKTsK CQkJaWYgKHRoZVBhZC5ycSA9PT0gdW5kZWZpbmVkKSB7CgkJCQl0aGVQYWQucnEg PSAwOwoJCQkJdGhlUGFkLnBhZ2VJZCA9IE1hdGguZmxvb3IoMTAwMDAwMDAwMDAw MDAgKiBNYXRoLnJhbmRvbSgpICsgKG5ldyBEYXRlKS52YWx1ZU9mKCkpOwoJCQl9 IGVsc2UgewoJCQkJdGhlUGFkLnJxKys7CgkJCX0KCQkJX3RoaXMucmVxdWVzdFBh cmFtcy5ycSA9ICh0aGVQYWQucnEpLnRvU3RyaW5nKCk7CgkJCV90aGlzLnJlcXVl c3RQYXJhbXMucGFnZV9pZCA9IHRoZVBhZC5wYWdlSWQ7CgkJfTsKCQl0aGlzLmlz RXZlbnRUcmFja2luZ09uID0gZnVuY3Rpb24oKSB7IAoJCQlyZXR1cm4gX3RoaXMu cmVzcG9uc2VQYXJhbXNbInRyYWNrX2V2ZW50cyJdOyAKCQl9OwoJCXRoaXMuaW5p dCA9IGZ1bmN0aW9uKCl7CgkJCV90aGlzLkN1c3RvbWl6YXRpb24uaW5pdCgpOwoJ CQlfdGhpcy5QYWRzLmluaXQoKTsKCQkJX3RoaXMuaW5pdEN1cnJlbnRCbG9jaygp OwoJCX07CgoJCXRoaXMuaW5pdFNjcm9sbEJsb2NrID0gZnVuY3Rpb24oYmxvY2sp ewoJCQlpZiAoQmVndW4uU2Nyb2xsZXIpewoJCQkJdmFyCXNldEhlaWdodCA9IGZ1 bmN0aW9uKGJsb2NrLCBzY3JvbGxfZGl2LCBzY3JvbGxfdGFibGUpewoJCQkJCXZh ciBiYW5uZXJzX2NvdW50ID0gTnVtYmVyKGJsb2NrLm9wdGlvbnMuYmFubmVyc19j b3VudCk7CgkJCQkJdmFyIGhlaWdodCA9IDA7CgkJCQkJZm9yICh2YXIgaSA9IDA7 IGkgPCBiYW5uZXJzX2NvdW50OyBpKyspewoJCQkJCQlpZiAoc2Nyb2xsX3RhYmxl LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0cicpW2ldKXsKCQkJCQkJCXZhciBoID0g c2Nyb2xsX3RhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0cicpW2ldLm9mZnNl dEhlaWdodDsKCQkJCQkJCWhlaWdodCArPSBoOwoJCQkJCQl9CgkJCQkJfQoJCQkJ CXNjcm9sbF9kaXYuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4JzsKCQkJCQlz Y3JvbGxfZGl2LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7CgkJCQl9OwoJCQkJ dmFyCWluaXQgPSBmdW5jdGlvbihibG9jaywgc2Nyb2xsX2Rpdiwgc2Nyb2xsX3Rh YmxlLCBpc19ob3Jpem9udGFsKXsKCQkJCQl2YXIgYmFubmVyc19jb3VudCA9IE51 bWJlcihibG9jay5vcHRpb25zLmJhbm5lcnNfY291bnQpOwoJCQkJCXZhciBiYW5u ZXJzX2NvdW50X2NvZWYgPSBOdW1iZXIoYmxvY2sub3B0aW9ucy5iYW5uZXJzX2Nv dW50X2NvZWYpIHx8IDE7CgkJCQkJKGZ1bmN0aW9uKCkgewoJCQkJCQlpZiAoIXNj cm9sbF9kaXYub2Zmc2V0SGVpZ2h0KSB7CgkJCQkJCQl3aW5kb3cuc2V0VGltZW91 dChhcmd1bWVudHMuY2FsbGVlLCBCZWd1bi5ET01fVElNRU9VVCk7CgkJCQkJCX0K CQkJCQkJdmFyIHNjcm9sbGVyID0gKG5ldyBCZWd1bi5TY3JvbGxlcigKCQkJCQkJ CXNjcm9sbF90YWJsZSwKCQkJCQkJCXsKCQkJCQkJCQloZWlnaHQ6IHNjcm9sbF9k aXYub2Zmc2V0SGVpZ2h0LAoJCQkJCQkJCWJhbm5lcnNfY291bnQ6IGJhbm5lcnNf Y291bnQsCgkJCQkJCQkJYmFubmVyc19jb3VudF9jb2VmOiBiYW5uZXJzX2NvdW50 X2NvZWYsCgkJCQkJCQkJaXNfaG9yaXpvbnRhbDogaXNfaG9yaXpvbnRhbCwKCQkJ CQkJCQlzY3JvbGxfdGltZW91dDogKGJsb2NrICYmIGJsb2NrLm9wdGlvbnMgJiYg YmxvY2sub3B0aW9ucy5qc29uICYmIGJsb2NrLm9wdGlvbnMuanNvbi5zY3JvbGxf dGltZW91dCkgfHwgbnVsbAoJCQkJCQkJfQoJCQkJCQkpKTsKCgkJCQkJCV90aGlz LnNjcm9sbGVycy5wdXNoKHNjcm9sbGVyKTsKCQkJCQkJc2Nyb2xsZXIuc3RhcnQo KTsKCQkJCQl9KSgpOwoJCQkJfTsKCQkJCXZhciBzY3JvbGxfZGl2ID0gQmVndW4u JChfdGhpcy5TdHJpbmdzLmNzcy5zY3JvbGxfZGl2X3ByZWZpeCArIGJsb2NrLmlk KTsKCQkJCXZhciBzY3JvbGxfdGFibGUgPSBCZWd1bi4kKF90aGlzLlN0cmluZ3Mu Y3NzLnNjcm9sbF90YWJsZV9wcmVmaXggKyBibG9jay5pZCk7CgkJCQlpZiAoIWJs b2NrLnNjcm9sbGluZyAmJiBOdW1iZXIoYmxvY2sub3B0aW9ucy51c2Vfc2Nyb2xs KSAmJiBzY3JvbGxfZGl2ICYmIHNjcm9sbF90YWJsZSkgewoJCQkJCWlmKF90aGlz LkJsb2Nrcy5jaGVja1R5cGUoYmxvY2ssICdob3Jpem9udGFsJykgfHwgX3RoaXMu QmxvY2tzLmNoZWNrVHlwZShibG9jaywgJzcyOHg5MCcpIHx8IF90aGlzLkJsb2Nr cy5jaGVja1R5cGUoYmxvY2ssICc0Njh4NjAnKSkgewoJCQkJCQl2YXIgaXNfaG9y aXpvbnRhbCA9IHRydWU7CgkJCQkJfSBlbHNlIHsKCQkJCQkJdmFyIGlzX2hvcml6 b250YWwgPSBmYWxzZTsKCQkJCQl9CgkJCQkJaWYgKF90aGlzLkJsb2Nrcy5jaGVj a1R5cGUoYmxvY2ssICd2ZXJ0aWNhbCcpIHx8IF90aGlzLkJsb2Nrcy5jaGVja1R5 cGUoYmxvY2ssICdmbGF0JykpewoJCQkJCQkoZnVuY3Rpb24oYmxvY2ssIHNjcm9s bF9kaXYsIHNjcm9sbF90YWJsZSwgaXNfaG9yaXpvbnRhbCl7CgkJCQkJCQlpZiAo c2Nyb2xsX3RhYmxlLm9mZnNldEhlaWdodCl7CgkJCQkJCQkJc2V0SGVpZ2h0KGJs b2NrLCBzY3JvbGxfZGl2LCBzY3JvbGxfdGFibGUpOwoJCQkJCQkJCXNjcm9sbF9k aXYuc3R5bGUud2lkdGggPSBzY3JvbGxfZGl2Lm9mZnNldFdpZHRoICsgJ3B4JzsK CQkJCQkJCQlpbml0KGJsb2NrLCBzY3JvbGxfZGl2LCBzY3JvbGxfdGFibGUsIGlz X2hvcml6b250YWwpOwoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQl2YXIgZnVuYyA9 IGFyZ3VtZW50cy5jYWxsZWU7CgkJCQkJCQkJd2luZG93LnNldFRpbWVvdXQoZnVu Y3Rpb24oKXsKCQkJCQkJCQkJZnVuYyhibG9jaywgc2Nyb2xsX2Rpdiwgc2Nyb2xs X3RhYmxlLCBpc19ob3Jpem9udGFsKTsKCQkJCQkJCQl9LCBCZWd1bi5ET01fVElN RU9VVCk7CgkJCQkJCQl9CgkJCQkJCX0pKGJsb2NrLCBzY3JvbGxfZGl2LCBzY3Jv bGxfdGFibGUsIGlzX2hvcml6b250YWwpOwoJCQkJCX0gZWxzZSBpZiAoX3RoaXMu QmxvY2tzLmNoZWNrVHlwZShibG9jaywgJ2hvcml6b250YWwnKSkgewoJCQkJCQko ZnVuY3Rpb24oYmxvY2ssIHNjcm9sbF9kaXYsIHNjcm9sbF90YWJsZSwgaXNfaG9y aXpvbnRhbCl7CgkJCQkJCQlpZiAoc2Nyb2xsX2Rpdi5vZmZzZXRIZWlnaHQpIHsK CQkJCQkJCQlzY3JvbGxfZGl2LnN0eWxlLmhlaWdodCA9IChzY3JvbGxfZGl2Lm9m ZnNldEhlaWdodCAqIDAuNykgKyAncHgnOwoJCQkJCQkJCWluaXQoYmxvY2ssIHNj cm9sbF9kaXYsIHNjcm9sbF90YWJsZSwgaXNfaG9yaXpvbnRhbCk7CgkJCQkJCQl9 IGVsc2UgewoJCQkJCQkJCXZhciBmdW5jID0gYXJndW1lbnRzLmNhbGxlZTsKCQkJ CQkJCQl3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpewoJCQkJCQkJCQlmdW5j KGJsb2NrLCBzY3JvbGxfZGl2LCBzY3JvbGxfdGFibGUsIGlzX2hvcml6b250YWwp OwoJCQkJCQkJCX0sIEJlZ3VuLkRPTV9USU1FT1VUKTsKCQkJCQkJCX0KCQkJCQkJ fSkoYmxvY2ssIHNjcm9sbF9kaXYsIHNjcm9sbF90YWJsZSwgaXNfaG9yaXpvbnRh bCk7CgkJCQkJfSBlbHNlIHsKCQkJCQkJaW5pdChibG9jaywgc2Nyb2xsX2Rpdiwg c2Nyb2xsX3RhYmxlLCBpc19ob3Jpem9udGFsKTsKCQkJCQl9CgkJCQkJYmxvY2su c2Nyb2xsaW5nID0gdHJ1ZTsKCQkJCX0KCQkJfQoJCX07CgkJdGhpcy5pbml0QWNj b3JkaW9uQmxvY2sgPSBmdW5jdGlvbihibG9jayl7CgkJCWlmKCFCZWd1bi5BY2Nv cmRpb24pIHsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCQl2YXIgYWNjb3JkaW9u X2RpdiA9IF90aGlzLkJsb2Nrcy5nZXREb21PYmooYmxvY2suaWQpOwoJCQlpZiAo IWJsb2NrLmlzX2FjY29yZGlvbl9wcm9jZXNzaW5nICYmIE51bWJlcihibG9jay5v cHRpb25zLnVzZV9hY2NvcmRpb24pICYmIGFjY29yZGlvbl9kaXYpewoJCQkJdmFy IGFjY29yZGlvbiA9IChuZXcgQmVndW4uQWNjb3JkaW9uKGFjY29yZGlvbl9kaXYp KTsKCQkJCWFjY29yZGlvbi5pbml0KCk7CgkJCQlibG9jay5pc19hY2NvcmRpb25f cHJvY2Vzc2luZyA9IHRydWU7CgkJCX0KCQl9OwoJCXRoaXMuaW5pdEF1dG9Ub3BC bG9jayA9IGZ1bmN0aW9uKGJsb2NrKXsKCQkJaWYoIUJlZ3VuLmF1dG9Ub3ApIHsK CQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCQl2YXIgYXV0b190b3BfZGl2ID0gX3Ro aXMuQmxvY2tzLmdldERvbU9iaihibG9jay5pZCk7CgkJCWlmICghYmxvY2suaXNf YXV0b190b3BfcHJvY2Vzc2luZyAmJiBfdGhpcy5CbG9ja3MuY2hlY2tUeXBlKGJs b2NrLCAndG9wJykgJiYgYXV0b190b3BfZGl2KXsKCQkJCXZhciBhdXRvX3RvcCA9 IChuZXcgQmVndW4uYXV0b1RvcChhdXRvX3RvcF9kaXYpKTsKCQkJCWF1dG9fdG9w LmluaXQoKTsKCQkJCXZhciBkaXZzID0gYXV0b190b3BfZGl2LmdldEVsZW1lbnRz QnlUYWdOYW1lKCdkaXYnKTsKCQkJCWZvcih2YXIgaT0wLCBsPWRpdnMubGVuZ3Ro OyBpPGw7IGkrKykgewoJCQkJCWlmKEJlZ3VuLlV0aWxzLmhhc0NsYXNzTmFtZShk aXZzW2ldLCAnYmVndW5fY29sbGFwc2FibGUnKSkgewoJCQkJCQl2YXIgYXV0b190 b3BfZGl2X2lubmVyID0gZGl2c1tpXTsKCQkJCQl9CgkJCQl9CgkJCQl2YXIgYm9k eSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JykgJiYgZG9j dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXTsKCQkJCWlmKEJl Z3VuLkJyb3dzZXIgJiYgQmVndW4uQnJvd3Nlci5JRSAmJiAoZG9jdW1lbnQuZG9j dW1lbnRFbGVtZW50IHx8IGJvZHkpKSB7CgkJCQkJYXV0b190b3BfZGl2X2lubmVy LnN0eWxlLndpZHRoID0gKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRX aWR0aCB8fCBib2R5LmNsaWVudFdpZHRoKSArICdweCc7CgkJCQkJd2luZG93Lm9u cmVzaXplID0gZnVuY3Rpb24oKSB7CgkJCQkJCWF1dG9fdG9wX2Rpdl9pbm5lci5z dHlsZS53aWR0aCA9IChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lk dGggfHwgYm9keS5jbGllbnRXaWR0aCkgKyAncHgnOwoJCQkJCX0KCQkJCX0KCQkJ CWJsb2NrLmlzX2F1dG9fdG9wX3Byb2Nlc3NpbmcgPSB0cnVlOwoJCQl9CgkJfTsK CQl0aGlzLmluaXRBdXRvUmljaEJsb2NrID0gZnVuY3Rpb24oYmxvY2spewoJCQlp ZighQmVndW4ucmljaEJsb2NrcykgewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJ CXZhciByaWNoX2Jsb2Nrc19kaXYgPSBfdGhpcy5CbG9ja3MuZ2V0RG9tT2JqKGJs b2NrLmlkKTsKCQkJaWYgKCFibG9jay5pc19yaWNoX2Jsb2Nrc19wcm9jZXNzaW5n ICYmIHJpY2hfYmxvY2tzX2Rpdil7CgkJCQlCZWd1bi5VdGlscy5hZGRDbGFzc05h bWUocmljaF9ibG9ja3NfZGl2LCAnYmVndW5fYXV0b19yaWNoJyk7CgkJCQl2YXIg b3B0aW9ucyA9IHt9OwoJCQkJaWYgKF90aGlzLkJsb2Nrcy5jaGVja1R5cGUoYmxv Y2ssICd2ZXJ0aWNhbCcpKSB7CgkJCQkJb3B0aW9ucyA9IHsKCQkJCQkJaXNfZXF1 YWw6IHRydWUsCgkJCQkJCWltZ193aWR0aF9tYXg6IDEyNSwKCQkJCQkJaW1nX2hl aWdodF9tYXg6IDEyNSwKCQkJCQkJbGVmdF9tYXhfZGVmYXVsdDogMTAsCgkJCQkJ CXRvcF9tYXhfZGVmYXVsdDogLTMwCgkJCQkJfQoJCQkJfSBlbHNlIGlmIChfdGhp cy5CbG9ja3MuY2hlY2tUeXBlKGJsb2NrLCAnNzI4eDkwJykpIHsKCQkJCQlvcHRp b25zID0gewoJCQkJCQlpc19lcXVhbDogdHJ1ZSwKCQkJCQkJaW1nX3dpZHRoX21h eDogOTAsCgkJCQkJCWltZ19oZWlnaHRfbWF4OiA5MCwKCQkJCQkJbGVmdF9tYXhf ZGVmYXVsdDogLTEwLAoJCQkJCQl0b3BfbWF4X2RlZmF1bHQ6IC0xMgoJCQkJCX0K CQkJCX0KCQkJCXZhciByaWNoX2Jsb2NrcyA9IChuZXcgQmVndW4ucmljaEJsb2Nr cyhyaWNoX2Jsb2Nrc19kaXYsIG9wdGlvbnMpKTsKCQkJCXJpY2hfYmxvY2tzLmlu aXQoKTsKCQkJCWJsb2NrLmlzX3JpY2hfYmxvY2tzX3Byb2Nlc3NpbmcgPSB0cnVl OwoJCQl9CgkJfTsKCQl0aGlzLmluaXRBdXRvQ2F0YWxvZ0Jsb2NrID0gZnVuY3Rp b24oYmxvY2spewoJCQlpZighQmVndW4uQ2F0YWxvZykgewoJCQkJcmV0dXJuIGZh bHNlOwoJCQl9CgkJCWlmICghYmxvY2suaXNfY2F0YWxvZ19wcm9jZXNzaW5nKSB7 CgkJCQl2YXIgZmVlZCA9IHRoaXMuZ2V0RmVlZCgpOwoJCQkJdmFyIGNhdGFsb2cg PSAobmV3IEJlZ3VuLkNhdGFsb2coYmxvY2ssIGZlZWQpKTsKCQkJCWNhdGFsb2cu aW5pdCgpOwoJCQkJYmxvY2suaXNfY2F0YWxvZ19wcm9jZXNzaW5nID0gdHJ1ZTsK CQkJfQoJCX07CgkJdGhpcy5yZXNldE1heFNjcm9sbGVycyA9IGZ1bmN0aW9uKCl7 CgkJCV90aGlzLm1heFNjcm9sbGVycyA9IF90aGlzLm9wdGlvbnMubWF4X3Njcm9s bGVyczsKCQl9OwoJCXRoaXMubG9hZEV4dHJhUmVzb3VyY2VzID0gZnVuY3Rpb24o KXsKCQkJaWYgKCFfdGhpcy5nZXRGZWVkKCkpewoJCQkJcmV0dXJuOwoJCQl9CgkJ CXZhciBsaW5rcyA9IF90aGlzLmdldEZlZWQoKS5saW5rczsKCQkJaWYgKGxpbmtz KXsKCQkJCXZhciBpID0gMDsKCQkJCXZhciBsaW5rID0gbnVsbDsKCQkJCXdoaWxl IChsaW5rID0gbGlua3NbaV0pewoJCQkJCXN3aXRjaChsaW5rLnR5cGUpewoJCQkJ CQljYXNlICdqcyc6CgkJCQkJCQlNb2R1bGUubG9hZChsaW5rLnVybCk7CgkJCQkJ CQlicmVhazsgCgkJCQkJCWNhc2UgJ2Nzcyc6CgkJCQkJCQlCZWd1bi5VdGlscy5p bmNsdWRlQ1NTRmlsZShsaW5rLnVybCk7CgkJCQkJCQlicmVhazsgCgkJCQkJCWNh c2UgJ2ltZyc6CgkJCQkJCQkobmV3IEltYWdlKCkpLnNyYyA9IGxpbmsudXJsOwoJ CQkJCQkJYnJlYWs7CgkJCQkJCWNhc2UgJ2ZyYW1lJzoKCQkJCQkJCXZhciB2YXJz ID0ge3VybDogbGluay51cmx9OwoJCQkJCQkJZG9jdW1lbnQud3JpdGUoKG5ldyBC ZWd1bi5UZW1wbGF0ZShfdGhpcy5UcGxzLmdldEhUTUwoJ2xpbmtfaWZyYW1lJykp KS5ldmFsdWF0ZSh2YXJzKSk7CgkJCQkJCQlicmVhazsKCQkJCQkJY2FzZSAnc3dm JzoKCQkJCQkJCXZhciBpc0ZsYXNoSW5zdGFsbGVkID0gQmVndW4uVXRpbHMuY2hl Y2tGbGFzaCgpOwoJCQkJCQkJaWYoaXNGbGFzaEluc3RhbGxlZCkgewoJCQkJCQkJ CXZhciBzd2ZfdXJsID0gbGluay51cmw7CgkJCQkJCQkJQmVndW4uVXRpbHMuYWRk RXZlbnQod2luZG93LCAnbG9hZCcsIGZ1bmN0aW9uKCkgewoJCQkJCQkJCQlCZWd1 bi5VdGlscy5pbmNsdWRlU1dGKHN3Zl91cmwpOwoJCQkJCQkJCX0pOwoJCQkJCQkJ fQoJCQkJCQkJYnJlYWs7CgkJCQkJCWJyZWFrOwoJCQkJCQlkZWZhdWx0OgoJCQkJ CQkJKG5ldyBJbWFnZSgpKS5zcmMgPSBsaW5rLnVybDsKCQkJCQl9CgkJCQkJaSsr OwoJCQkJfQoJCQl9CgkJfQoJCXRoaXMuZHJhdyA9IGZ1bmN0aW9uKCl7CgkJCWlm ICghYXJndW1lbnRzLmNhbGxlZS5ydW4pewoJCQkJX3RoaXMuQmxvY2tzLmluaXQo KTsKCQkJfQoJCQlhcmd1bWVudHMuY2FsbGVlLnJ1biA9IHRydWU7CgkJCV90aGlz LmZpbGxCbG9ja3MoKTsKCQl9OwoJCXRoaXMudXNlQmxvY2tJZERpc3RyID0gZnVu Y3Rpb24oKXsKCQkJcmV0dXJuICEhKF90aGlzLmdldEJhbm5lcignYXV0b2NvbnRl eHQnLCAwKSAmJiBfdGhpcy5nZXRCYW5uZXIoJ2F1dG9jb250ZXh0JywgMClbImJs b2NrX2lkIl0pOwoJCX07CgkJdGhpcy5pbml0Q3VycmVudEJsb2NrID0gZnVuY3Rp b24oKSB7CgkJCWlmICh3aW5kb3cuYmVndW5fYXV0b19wYWQgIT09IHVuZGVmaW5l ZCAmJiB3aW5kb3cuYmVndW5fYXV0b19wYWQgPiAwKSB7CgkJCQlpZiAod2luZG93 LmJlZ3VuX2Jsb2NrX2lkcykgewoJCQkJCWlmIChfdGhpcy5jdXJyZW50SWRJbmRl eCA9PT0gdW5kZWZpbmVkKSB7CgkJCQkJCV90aGlzLmN1cnJlbnRJZEluZGV4ID0g MDsKCQkJCQl9IGVsc2UgewoJCQkJCQlfdGhpcy5jdXJyZW50SWRJbmRleCsrOwoJ CQkJCX0KCQkJCQl2YXIgYmxvY2tJZHMgPSB3aW5kb3cuYmVndW5fYmxvY2tfaWRz LnJlcGxhY2UoL1xzL2csIiIpLnNwbGl0KCIsIik7CgkJCQkJaWYgKGJsb2NrSWRz Lmxlbmd0aCAmJiBibG9ja0lkcy5sZW5ndGggPiBfdGhpcy5jdXJyZW50SWRJbmRl eCkgewoJCQkJCQlfdGhpcy5wcmludEJsb2NrUGxhY2UoYmxvY2tJZHNbX3RoaXMu Y3VycmVudElkSW5kZXhdKTsKCQkJCQkJX3RoaXMucmVxdWVzdFBhcmFtcy5wYWRf aWQgPSB3aW5kb3cuYmVndW5fYXV0b19wYWQ7CgkJCQkJCUxvYWRpbmdTdHJhdGVn eS5nZXRJbnN0YW5jZSgpLmxvYWRCbG9jayhibG9ja0lkc1tfdGhpcy5jdXJyZW50 SWRJbmRleF0pOwoJCQkJCQlfdGhpcy5pbml0RmVlZExvYWQoKTsKCQkJCQl9CgkJ CQl9IGVsc2UgaWYgKHdpbmRvdy5iZWd1bl9ibG9ja19pZCAhPT0gdW5kZWZpbmVk ICYmIHdpbmRvdy5iZWd1bl9ibG9ja19pZCA+IDApIHsKCQkJCQlfdGhpcy5wcmlu dEJsb2NrUGxhY2Uod2luZG93LmJlZ3VuX2Jsb2NrX2lkKTsKCQkJCQlfdGhpcy5y ZXF1ZXN0UGFyYW1zLnBhZF9pZCA9IHdpbmRvdy5iZWd1bl9hdXRvX3BhZDsKCQkJ CQlMb2FkaW5nU3RyYXRlZ3kuZ2V0SW5zdGFuY2UoKS5sb2FkQmxvY2sod2luZG93 LmJlZ3VuX2Jsb2NrX2lkKTsKCQkJCQlfdGhpcy5pbml0RmVlZExvYWQoKTsKCQkJ CX0KCQkJfQoJCX07CgkJdGhpcy5nZXRBY3R1YWxCbG9ja0Jhbm5lcnNDb3VudCA9 IGZ1bmN0aW9uKGJsb2NrKXsKCQkJaWYgKCFibG9jayl7CgkJCQlyZXR1cm4gMDsK CQkJfQoJCQl2YXIgY29lZiA9IE51bWJlcihibG9jay5vcHRpb25zLmJhbm5lcnNf Y291bnRfY29lZikgfHwgMTsKCQkJcmV0dXJuIE51bWJlcihibG9jay5vcHRpb25z LmJhbm5lcnNfY291bnQpICogY29lZjsKCQl9OwoJCXRoaXMuaW5pdEZlZWRMb2Fk ID0gZnVuY3Rpb24oKXsKCQkJaWYgKF90aGlzLmlzRmVlZFN0YXJ0ZWQoKSl7CgkJ CQlyZXR1cm4gZmFsc2U7CgkJCX0KCQkJdmFyIHRvdGFsX2Jhbm5lcnMgPSB3aW5k b3cuYmVndW5fdG90YWxfYmFubmVycyB8fCBfdGhpcy5vcHRpb25zLm1heF9iYW5u ZXJzX2NvdW50IHx8IDA7CgkJCWlmICh0b3RhbF9iYW5uZXJzICYmIHdpbmRvdy5i ZWd1bl9leHRyYV9ibG9jayAhPT0gdW5kZWZpbmVkKSB7CgkJCQlfdGhpcy5zZXRP cHRpb25zKHttYXhfYmFubmVyc19jb3VudDogdG90YWxfYmFubmVyc30pOwoJCQl9 CgkJCWlmIChpc0JGU0FwcGxpY2FibGUoKSB8fCAhX3RoaXMuZ2V0RmVlZCgpKSB7 CgkJCQlfdGhpcy5zZXRGZWVkU3RhcnRlZCgpOwoJCQkJX3RoaXMucHJlcGFyZVJl cXVlc3RQYXJhbXMoKTsKCQkJCUJlZ3VuLlV0aWxzLmluY2x1ZGVTY3JpcHQoCgkJ CQkJKF90aGlzLlN0cmluZ3MudXJscy5kYWVtb24gKyBCZWd1bi5VdGlscy50b1F1 ZXJ5KF90aGlzLnJlcXVlc3RQYXJhbXMpKS5zdWJzdHJpbmcoMCwgMTUyNCkucmVw bGFjZSgvJVswLTlhLWZBLUZdPyQvLCAnJyksCgkJCQkJJ3dyaXRlJywgLy8gb25s eSB3cml0ZSEhCgkJCQkJdW5kZWZpbmVkLCAvLyBjYWxsYmFjayBkb2Vzbid0IHdv cmsgcHJvcGVybHkgaW4gSUUKCQkJCQl1bmRlZmluZWQsCgkJCQkJJ2JlZ3VuQWRz JwoJCQkJKTsKCQkJCXJldHVybiB0cnVlOwoJCQl9CgkJCXJldHVybiBmYWxzZTsK CQl9OwoJCXRoaXMuZmVlZExvYWQgPSBmdW5jdGlvbihwYXJhbXNVcGRhdGUpewoJ CQlfdGhpcy5wcmVwYXJlUmVxdWVzdFBhcmFtcyhwYXJhbXNVcGRhdGUpOwoJCQlC ZWd1bi5VdGlscy5pbmNsdWRlU2NyaXB0KAoJCQkJKF90aGlzLlN0cmluZ3MudXJs cy5kYWVtb24gKyBCZWd1bi5VdGlscy50b1F1ZXJ5KF90aGlzLnJlcXVlc3RQYXJh bXMpKS5zdWJzdHJpbmcoMCwgMTUyNCkucmVwbGFjZSgvJVswLTlhLWZBLUZdPyQv LCAnJyksCgkJCQknd3JpdGUnLCAvLyBvbmx5IHdyaXRlISEKCQkJCXVuZGVmaW5l ZCwgLy8gY2FsbGJhY2sgZG9lc24ndCB3b3JrIHByb3Blcmx5IGluIElFCgkJCQl1 bmRlZmluZWQsCgkJCQknYmVndW5BZHMnCgkJCSk7CgkJCXJldHVybiB0cnVlOwoJ CX07CgkJdGhpcy5nZXRHcmFwaEhUTUwgPSBmdW5jdGlvbihncmFwaF9iYW5uZXIs IGNhbGxiYWNrLCB3aWR0aCwgaGVpZ2h0KXsKCQkJd2lkdGggPSB3aWR0aCB8fCAy NDA7CgkJCWhlaWdodCA9IGhlaWdodCB8fCA0MDA7CgkJCXZhciB0eXBlID0gJ2lt Zyc7CgkJCWlmICgoInN3ZiIgPT0gZ3JhcGhfYmFubmVyLm1pbWUpIHx8ICgiYXBw bGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giID09IGdyYXBoX2Jhbm5lci5taW1l KSl7CgkJCQl0eXBlID0gJ3N3Zic7CgkJCX0gZWxzZSBpZiAoKCJqcyIgPT0gZ3Jh cGhfYmFubmVyLm1pbWUpIHx8ICgiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0IiA9 PSBncmFwaF9iYW5uZXIubWltZSkpewoJCQkJdHlwZSA9ICdqcyc7CgkJCQlCZWd1 bi5VdGlscy5pbmNsdWRlU2NyaXB0KGdyYXBoX2Jhbm5lci5zb3VyY2UsICdhcHBl bmQnLCBjYWxsYmFjayB8fCBudWxsKTsKCQkJfQoJCQl2YXIgdmFycyA9IHsndXJs JzogZ3JhcGhfYmFubmVyLnVybCwgJ3NvdXJjZSc6IGdyYXBoX2Jhbm5lci5zb3Vy Y2UsICd3aWR0aCc6IHdpZHRoLCAnaGVpZ2h0JzogaGVpZ2h0fTsKCQkJcmV0dXJu IChuZXcgQmVndW4uVGVtcGxhdGUoX3RoaXMuVHBscy5nZXRIVE1MKCdzZWFyY2hf YmFubmVyXycgKyB0eXBlKSkpLmV2YWx1YXRlKHZhcnMpOwoJCX07CgkJdGhpcy5p bnNlcnROb25UZXh0QmxvY2sgPSBmdW5jdGlvbihibG9jayl7CgkJCXZhciBmaW5k QmxvY2tzID0gZnVuY3Rpb24oYmxvY2tfaWQsIHR5cGUpewoJCQkJdmFyIGkgPSAw OwoJCQkJdmFyIG9iaiA9IFtdOwoJCQkJdmFyIGJhbm5lciA9IG51bGw7CgkJCQl3 aGlsZSAoYmFubmVyID0gX3RoaXMuZ2V0QmFubmVyKHR5cGUsIGkpKXsKCQkJCQlp ZiAoYmFubmVyLmJsb2NrX2lkID09IGJsb2NrX2lkKXsKCQkJCQkJb2JqW29iai5s ZW5ndGhdID0gYmFubmVyOwoJCQkJCX0KCQkJCQlpKys7CgkJCQl9CgkJCQlyZXR1 cm4gb2JqOwoJCQl9CgkJCXZhciBmaW5kR3JhcGhCbG9ja3MgPSBmdW5jdGlvbih0 eXBlKXsKCQkJCXZhciBpID0gMDsKCQkJCXZhciBvYmogPSBbXTsKCQkJCXZhciBi YW5uZXIgPSBudWxsOwoJCQkJd2hpbGUgKGJhbm5lciA9IF90aGlzLmdldEJhbm5l cih0eXBlLCBpKSl7CgkJCQkJb2JqW29iai5sZW5ndGhdID0gYmFubmVyOwoJCQkJ CWkrKzsKCQkJCX0KCQkJCXJldHVybiBvYmo7CgkJCX0KCQkJLy8gcGF0Y2ggY29k ZSBzZWN0aW9uCgkJCWlmICghYXJndW1lbnRzLmNhbGxlZS5jb2RlX3BhdGNoZWQp ewoJCQkJdmFyIGZlZWQgPSBfdGhpcy5nZXRGZWVkKCk7CgkJCQlpZiAoZmVlZCAm JiBmZWVkLmNvZGUgJiYgZmVlZC5iYW5uZXJzICYmICFmZWVkLmJhbm5lcnMuY29k ZSl7CgkJCQkJZmVlZC5iYW5uZXJzLmNvZGUgPSBmZWVkLmNvZGU7CgkJCQl9CgkJ CQlhcmd1bWVudHMuY2FsbGVlLmNvZGVfcGF0Y2hlZCA9IHRydWU7CgkJCX0KCQkJ dmFyIGJsb2NrX2lkID0gYmxvY2suaWQ7CgkJCXZhciBjb2RlX2Jhbm5lciA9IGZp bmRCbG9ja3MoYmxvY2tfaWQsICdjb2RlJyk7CgkJCXZhciBncmFwaF9iYW5uZXIg PSBmaW5kR3JhcGhCbG9ja3MoJ2dyYXBoJyk7CgkJCWlmKGNvZGVfYmFubmVyKSB7 CgkJCQlmb3IodmFyIGk9MCwgbD1jb2RlX2Jhbm5lci5sZW5ndGg7IGk8bDsgaSsr KSB7CgkJCQkJaWYoY29kZV9iYW5uZXJbaV0uanMgJiYgY29kZV9iYW5uZXJbaV0u anMgIT0nJykgewoJCQkJCQlCZWd1bi5VdGlscy5ldmFsU2NyaXB0KGNvZGVfYmFu bmVyW2ldLmpzKTsKCQkJCQkJX3RoaXMuQmxvY2tzLmRlbChibG9ja19pZCk7CgkJ CQkJfQoJCQkJfQoJCQl9CgkJCXZhciB0eXBlID0gYmxvY2sgJiYgYmxvY2sub3B0 aW9ucyAmJiBibG9jay5vcHRpb25zLmRpbWVuc2lvbnMgJiYgYmxvY2sub3B0aW9u cy5kaW1lbnNpb25zLnR5cGU7CgkJCWlmIChncmFwaF9iYW5uZXIpewoJCQkJZm9y KHZhciBpPTAsIGw9Z3JhcGhfYmFubmVyLmxlbmd0aDsgaTxsOyBpKyspIHsKCQkJ CQlpZihncmFwaF9iYW5uZXJbaV0ubG9hZGVkKSB7CgkJCQkJCWNvbnRpbnVlOwoJ CQkJCX0KCQkJCQlpZihncmFwaF9iYW5uZXJbaV0uYmxvY2tfaWQgJiYgTnVtYmVy KGdyYXBoX2Jhbm5lcltpXS5ibG9ja19pZCkgPT0gQkFOTkVSXzYwMHg5MF9CTE9D S19JRCkgewoJCQkJCQl2YXIgaHRtbCA9IF90aGlzLmdldEdyYXBoSFRNTChncmFw aF9iYW5uZXJbaV0sIG51bGwsIDYwMCwgOTApOwoJCQkJCQlfdGhpcy5kcmF3VG9w R3JhcGhCYW5uZXIoaHRtbCk7CgkJCQkJCWdyYXBoX2Jhbm5lcltpXS5sb2FkZWQg PSB0cnVlOwoJCQkJCX0gZWxzZSBpZihncmFwaF9iYW5uZXJbaV0uYmxvY2tfaWQg PT0gYmxvY2tfaWQgfHwgKCFncmFwaF9iYW5uZXJbaV0uYmxvY2tfaWQgJiYgdHlw ZSAmJiB0eXBlID09ICcyNDB4NDAwJykpIHsKCQkJCQkJdmFyIGh0bWwgPSBfdGhp cy5nZXRHcmFwaEhUTUwoZ3JhcGhfYmFubmVyW2ldKTsKCQkJCQkJdmFyIGJsb2Nr X3BsYWNlID0gX3RoaXMuQmxvY2tzLmdldERvbU9iaihibG9ja19pZCk7CgkJCQkJ CWlmIChodG1sICYmIGJsb2NrX3BsYWNlKXsKCQkJCQkJCWJsb2NrX3BsYWNlLmlu bmVySFRNTCA9IGh0bWw7CgkJCQkJCQlfdGhpcy5CbG9ja3MuZGVsKGJsb2NrX2lk KTsKCQkJCQkJCWdyYXBoX2Jhbm5lcltpXS5sb2FkZWQgPSB0cnVlOwoJCQkJCQkJ cmV0dXJuOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgkJfTsKCQl0aGlzLmRy YXdUb3BHcmFwaEJhbm5lciA9IGZ1bmN0aW9uKGh0bWwpewoJCQl2YXIgYmFubmVy X3dyYXBwZXIgPSBCZWd1bi4kKCdiZWd1bl90b3BfZ3JhcGhfYmFubmVyX3dyYXBw ZXInKTsKCQkJaWYoIWJhbm5lcl93cmFwcGVyKSB7CgkJCQl2YXIgYm8gPSBkb2N1 bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnQk9EWScpOwoJCQkJdmFyIGJhbm5l cl93cmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CgkJCQli YW5uZXJfd3JhcHBlci5pZCA9ICdiZWd1bl90b3BfZ3JhcGhfYmFubmVyX3dyYXBw ZXInOwoJCQkJYm9bMF0uaW5zZXJ0QmVmb3JlKGJhbm5lcl93cmFwcGVyLCBib1sw XS5maXJzdENoaWxkICk7CgkJCX0KCQkJYmFubmVyX3dyYXBwZXIuaW5uZXJIVE1M ID0gKG5ldyBCZWd1bi5UZW1wbGF0ZShfdGhpcy5UcGxzLmdldEhUTUwoJ3RvcF9n cmFwaF9iYW5uZXInKSkpLmV2YWx1YXRlKHsnaHRtbCc6aHRtbH0pCgkJfTsKCQl0 aGlzLnJlbmRlck9sZEJsb2NrID0gZnVuY3Rpb24oKXsKCQkJdmFyIGlzUGFkTmV3 ID0gZnVuY3Rpb24ocGFyYW1zKXsKCQkJCWlmICghcGFyYW1zIHx8ICF3aW5kb3cu YmVndW5fYXV0b19wYWQpIHsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCQly ZXR1cm4gQmVndW4uVXRpbHMuaW5fYXJyYXkocGFyYW1zLnNwbGl0KCcsJyksIHdp bmRvdy5iZWd1bl9hdXRvX3BhZCk7CgkJCX07CgkJCWlmIChfdGhpcy5yZXNwb25z ZVBhcmFtc1snb2xkX2Jsb2NrJ10gIT09IHVuZGVmaW5lZCAmJiBOdW1iZXIoX3Ro aXMucmVzcG9uc2VQYXJhbXNbJ29sZF9ibG9jayddKSAhPSAwICYmIHR5cGVvZiBi ZWd1bkF1dG9SdW4gPT0gJ2Z1bmN0aW9uJyl7CgkJCQl2YXIgZmVlZCA9IF90aGlz LmdldEZlZWQoKTsKCQkJCWlmIChmZWVkICYmIGZlZWQuY29va2llcyAmJiBmZWVk LmNvb2tpZXMuanNfZm9yY2VfbmV3X3BhZHMgJiYgaXNQYWROZXcoZmVlZC5jb29r aWVzLmpzX2ZvcmNlX25ld19wYWRzKSkgewoJCQkJCXJldHVybiBmYWxzZTsKCQkJ CX0KCQkJCWJlZ3VuQXV0b1J1bigpOwoJCQkJcmV0dXJuIHRydWU7CgkJCX0KCQkJ cmV0dXJuIGZhbHNlOwoJCX07CgkJdGhpcy5sb2FkRmVlZERvbmUgPSBmdW5jdGlv bigpewoJCQlfdGhpcy5nZXRQYWQoKS5mZWVkID0gd2luZG93LmJlZ3VuQWRzOwoJ CQlCZWd1bi5leHRlbmQoX3RoaXMucmVzcG9uc2VQYXJhbXMsIF90aGlzLmdldEZl ZWQoKS5wYXJhbXMgfHwge30pOwoJCQlpZiAoIV90aGlzLnJlbmRlck9sZEJsb2Nr KCkpewoJCQkJTG9hZGluZ1N0cmF0ZWd5LmdldEluc3RhbmNlKCkucGFyc2VGZWVk KCk7CgkJCQl2YXIgZmlyc3RfYmxvY2sgPSBfdGhpcy5nZXRCbG9jaygwKSB8fCBu dWxsOwoJCQkJaWYgKGZpcnN0X2Jsb2NrICYmIGZpcnN0X2Jsb2NrLmlkKXsKCQkJ CQlfdGhpcy5pbnNlcnROb25UZXh0QmxvY2soZmlyc3RfYmxvY2spOwoJCQkJfQoJ CQkJX3RoaXMuZHJhdygpOyAvLyBydW4gaW4gYW55IGNhc2UKCQkJfQoJCX07CgkJ dGhpcy5wcmludEJsb2NrUGxhY2UgPSBmdW5jdGlvbihibG9ja19pZCl7CgkJCXZh ciB2YXJzID0ge2lkOiBfdGhpcy5TdHJpbmdzLmNzcy5ibG9ja19wcmVmaXggKyBi bG9ja19pZH07CgkJCWRvY3VtZW50LndyaXRlKChuZXcgQmVndW4uVGVtcGxhdGUo X3RoaXMuVHBscy5nZXRIVE1MKCdibGNrX3BsYWNlJykpKS5ldmFsdWF0ZSh2YXJz KSk7CgkJfTsKCQl0aGlzLnByaW50RGVmYXVsdFN0eWxlID0gZnVuY3Rpb24oKXsK CQkJQmVndW4uVXRpbHMuaW5jbHVkZVN0eWxlKF90aGlzLlRwbHMuZ2V0Q1NTKCdk ZWZhdWx0JyksICd3cml0ZScpOyAvLyAnYXBwZW5kJyBpcyBraWxsaW5nIGllIDYK CQl9OwoJCXZhciBnZXRUYWJsZUNvbG9yID0gZnVuY3Rpb24oYmdjb2xvciwgYmxv Y2tfaWQpIHsKCQkJaWYoIWJnY29sb3IgfHwgYmdjb2xvciA9PSAndHJhbnNwYXJl bnQnKSB7CgkJCQl2YXIgYmxvY2sgPSBfdGhpcy5CbG9ja3MuZ2V0RG9tT2JqKGJs b2NrX2lkKTsKCQkJCXJldHVybiBnZXRCR0NvbG9yKGJsb2NrKTsKCQkJfSBlbHNl IHsKCQkJCXJldHVybiBiZ2NvbG9yOwoJCQl9CgkJfTsKCQl2YXIgZ2V0QkdDb2xv ciA9IGZ1bmN0aW9uKGJsb2NrKSB7CgkJCXZhciBiZ2NvbG9yID0gQmVndW4uVXRp bHMuZ2V0U3R5bGUoYmxvY2ssICdiYWNrZ3JvdW5kLWNvbG9yJyk7CgkJCXdoaWxl KGJnY29sb3IgPT0gJ3RyYW5zcGFyZW50JykgewoJCQkJaWYoYmxvY2subm9kZU5h bWUgPT0gJ0JPRFknKSB7CgkJCQkJdmFyIGJvZHlfYmcgPSBCZWd1bi5VdGlscy5n ZXRTdHlsZShibG9jaywgJ2JhY2tncm91bmQtY29sb3InKTsKCQkJCQlpZihib2R5 X2JnID09ICd0cmFuc3BhcmVudCcpIHsKCQkJCQkJYmdjb2xvciA9ICcjRkZGRkZG JzsKCQkJCQl9IGVsc2UgewoJCQkJCQliZ2NvbG9yID0gQmVndW4uVXRpbHMuZ2V0 U3R5bGUoYmxvY2ssICdiYWNrZ3JvdW5kLWNvbG9yJyk7CgkJCQkJfQoJCQkJCWJy ZWFrOwoJCQkJfQoJCQkJYmxvY2sgPSBibG9jay5wYXJlbnROb2RlOwoJCQkJYmdj b2xvciA9IEJlZ3VuLlV0aWxzLmdldFN0eWxlKGJsb2NrLCAnYmFja2dyb3VuZC1j b2xvcicpOwoJCQl9CgkJCXJldHVybiBiZ2NvbG9yOwoJCX07CgkJdmFyIGdldExv Z29Db2xvciA9IGZ1bmN0aW9uKHN0eWxlcywgYmxvY2tfaWQpewoJCQl2YXIgZGVm YXVsdF9sb2dvX2NvbG9yID0gX3RoaXMuU3RyaW5ncy5jc3MubG9nb19jb2xvcjsK CQkJaWYgKHN0eWxlcy5ibG9jayl7CgkJCQl2YXIgaXNfbG9nb190cmFuc3BhcmVu dCA9IGZhbHNlOwoJCQkJaWYoKHN0eWxlcy5ibG9jay5iYWNrZ3JvdW5kQ29sb3Ig JiYgc3R5bGVzLmJsb2NrLmJhY2tncm91bmRDb2xvci50b0xvd2VyQ2FzZSgpID09 ICd0cmFuc3BhcmVudCcpIHx8ICFzdHlsZXMuYmxvY2suYmFja2dyb3VuZENvbG9y KSB7CgkJCQkJdmFyIGJsb2NrID0gX3RoaXMuQmxvY2tzLmdldERvbU9iaihibG9j a19pZCk7CgkJCQkJdmFyIHRvTnVtYmVycyA9IGZ1bmN0aW9uKHN0cikgewoJCQkJ CQl2YXIgcmV0ID0gW107CgkJCQkJCXN0ci5yZXBsYWNlKC8oLi4pL2csIGZ1bmN0 aW9uKHN0cil7CgkJCQkJCQlyZXQucHVzaCggcGFyc2VJbnQoIHN0ciwgMTYgKSAp OwoJCQkJCQl9KTsKCQkJCQkJcmV0dXJuIHJldDsKCQkJCQl9CgkJCQkJdmFyIGFy ZUNvbG9yc1Rvb0Nsb3NlID0gZnVuY3Rpb24oYzEsIGMyLCBkZWx0YSkgewoJCQkJ CQlmb3IgKHZhciBpPTA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKCQkJ CQkJCWlmICgwID09IGFyZ3VtZW50c1tpXS5pbmRleE9mKCcjJykpIHsKCQkJCQkJ CQlhcmd1bWVudHNbaV0gPSB0b051bWJlcnMoYXJndW1lbnRzW2ldLnNsaWNlKDEp KTsKCQkJCQkJCX0gZWxzZSB7CgkJCQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCQkJ fQoJCQkJCQl9CgkJCQkJCXZhciBkZWx0YSA9IGRlbHRhIHx8IDEwMDsKCQkJCQkJ cmV0dXJuIChNYXRoLnNxcnQoKGMxWzBdLWMyWzBdKSooYzFbMF0tYzJbMF0pICsg KGMxWzFdLWMyWzFdKSooYzFbMV0tYzJbMV0pICsgKGMxWzJdLWMyWzJdKSooYzFb Ml0tYzJbMl0pKSA8IGRlbHRhKTsKCQkJCQl9CgkJCQkJdmFyIGNvbnZlcnRDb2xv ciA9IGZ1bmN0aW9uIChjb2xvcl9zdHJpbmcpIHsgIAoJCQkJCQlpZiAoY29sb3Jf c3RyaW5nLmNoYXJBdCgwKSA9PSAnIycpIHsKCQkJCQkJCWNvbG9yX3N0cmluZyA9 IGNvbG9yX3N0cmluZy5zdWJzdHIoMSw2KTsKCQkJCQkJfQoJCQkJCQljb2xvcl9z dHJpbmcgPSBjb2xvcl9zdHJpbmcucmVwbGFjZSgvIC9nLCcnKTsKCQkJCQkJY29s b3Jfc3RyaW5nID0gY29sb3Jfc3RyaW5nLnRvTG93ZXJDYXNlKCk7CgkJCQkJCXZh ciBzaW1wbGVfY29sb3JzPXthbGljZWJsdWU6J2YwZjhmZicsYW50aXF1ZXdoaXRl OidmYWViZDcnLGFxdWE6JzAwZmZmZicsYXF1YW1hcmluZTonN2ZmZmQ0JyxhenVy ZTonZjBmZmZmJyxiZWlnZTonZjVmNWRjJyxiaXNxdWU6J2ZmZTRjNCcsYmxhY2s6 JzAwMDAwMCcsYmxhbmNoZWRhbG1vbmQ6J2ZmZWJjZCcsYmx1ZTonMDAwMGZmJyxi bHVldmlvbGV0Oic4YTJiZTInLGJyb3duOidhNTJhMmEnLGJ1cmx5d29vZDonZGVi ODg3JyxjYWRldGJsdWU6JzVmOWVhMCcsY2hhcnRyZXVzZTonN2ZmZjAwJyxjaG9j b2xhdGU6J2QyNjkxZScsY29yYWw6J2ZmN2Y1MCcsY29ybmZsb3dlcmJsdWU6JzY0 OTVlZCcsY29ybnNpbGs6J2ZmZjhkYycsY3JpbXNvbjonZGMxNDNjJyxjeWFuOicw MGZmZmYnLGRhcmtibHVlOicwMDAwOGInLGRhcmtjeWFuOicwMDhiOGInLGRhcmtn b2xkZW5yb2Q6J2I4ODYwYicsZGFya2dyYXk6J2E5YTlhOScsZGFya2dyZWVuOicw MDY0MDAnLGRhcmtraGFraTonYmRiNzZiJyxkYXJrbWFnZW50YTonOGIwMDhiJyxk YXJrb2xpdmVncmVlbjonNTU2YjJmJyxkYXJrb3JhbmdlOidmZjhjMDAnLGRhcmtv cmNoaWQ6Jzk5MzJjYycsZGFya3JlZDonOGIwMDAwJyxkYXJrc2FsbW9uOidlOTk2 N2EnLGRhcmtzZWFncmVlbjonOGZiYzhmJyxkYXJrc2xhdGVibHVlOic0ODNkOGIn LGRhcmtzbGF0ZWdyYXk6JzJmNGY0ZicsZGFya3R1cnF1b2lzZTonMDBjZWQxJyxk YXJrdmlvbGV0Oic5NDAwZDMnLGRlZXBwaW5rOidmZjE0OTMnLGRlZXBza3libHVl OicwMGJmZmYnLGRpbWdyYXk6JzY5Njk2OScsZG9kZ2VyYmx1ZTonMWU5MGZmJyxm ZWxkc3BhcjonZDE5Mjc1JyxmaXJlYnJpY2s6J2IyMjIyMicsZmxvcmFsd2hpdGU6 J2ZmZmFmMCcsZm9yZXN0Z3JlZW46JzIyOGIyMicsZnVjaHNpYTonZmYwMGZmJyxn YWluc2Jvcm86J2RjZGNkYycsZ2hvc3R3aGl0ZTonZjhmOGZmJyxnb2xkOidmZmQ3 MDAnLGdvbGRlbnJvZDonZGFhNTIwJyxncmF5Oic4MDgwODAnLGdyZWVuOicwMDgw MDAnLGdyZWVueWVsbG93OidhZGZmMmYnLGhvbmV5ZGV3OidmMGZmZjAnLGhvdHBp bms6J2ZmNjliNCcsaW5kaWFucmVkIDonY2Q1YzVjJyxpbmRpZ28gOic0YjAwODIn LGl2b3J5OidmZmZmZjAnLGtoYWtpOidmMGU2OGMnLGxhdmVuZGVyOidlNmU2ZmEn LGxhdmVuZGVyYmx1c2g6J2ZmZjBmNScsbGF3bmdyZWVuOic3Y2ZjMDAnLGxlbW9u Y2hpZmZvbjonZmZmYWNkJyxsaWdodGJsdWU6J2FkZDhlNicsbGlnaHRjb3JhbDon ZjA4MDgwJyxsaWdodGN5YW46J2UwZmZmZicsbGlnaHRnb2xkZW5yb2R5ZWxsb3c6 J2ZhZmFkMicsbGlnaHRncmV5OidkM2QzZDMnLGxpZ2h0Z3JlZW46JzkwZWU5MCcs bGlnaHRwaW5rOidmZmI2YzEnLGxpZ2h0c2FsbW9uOidmZmEwN2EnLGxpZ2h0c2Vh Z3JlZW46JzIwYjJhYScsbGlnaHRza3libHVlOic4N2NlZmEnLGxpZ2h0c2xhdGVi bHVlOic4NDcwZmYnLGxpZ2h0c2xhdGVncmF5Oic3Nzg4OTknLGxpZ2h0c3RlZWxi bHVlOidiMGM0ZGUnLGxpZ2h0eWVsbG93OidmZmZmZTAnLGxpbWU6JzAwZmYwMCcs bGltZWdyZWVuOiczMmNkMzInLGxpbmVuOidmYWYwZTYnLG1hZ2VudGE6J2ZmMDBm ZicsbWFyb29uOic4MDAwMDAnLG1lZGl1bWFxdWFtYXJpbmU6JzY2Y2RhYScsbWVk aXVtYmx1ZTonMDAwMGNkJyxtZWRpdW1vcmNoaWQ6J2JhNTVkMycsbWVkaXVtcHVy cGxlOic5MzcwZDgnLG1lZGl1bXNlYWdyZWVuOiczY2IzNzEnLG1lZGl1bXNsYXRl Ymx1ZTonN2I2OGVlJyxtZWRpdW1zcHJpbmdncmVlbjonMDBmYTlhJyxtZWRpdW10 dXJxdW9pc2U6JzQ4ZDFjYycsbWVkaXVtdmlvbGV0cmVkOidjNzE1ODUnLG1pZG5p Z2h0Ymx1ZTonMTkxOTcwJyxtaW50Y3JlYW06J2Y1ZmZmYScsbWlzdHlyb3NlOidm ZmU0ZTEnLG1vY2Nhc2luOidmZmU0YjUnLG5hdmFqb3doaXRlOidmZmRlYWQnLG5h dnk6JzAwMDA4MCcsb2xkbGFjZTonZmRmNWU2JyxvbGl2ZTonODA4MDAwJyxvbGl2 ZWRyYWI6JzZiOGUyMycsb3JhbmdlOidmZmE1MDAnLG9yYW5nZXJlZDonZmY0NTAw JyxvcmNoaWQ6J2RhNzBkNicscGFsZWdvbGRlbnJvZDonZWVlOGFhJyxwYWxlZ3Jl ZW46Jzk4ZmI5OCcscGFsZXR1cnF1b2lzZTonYWZlZWVlJyxwYWxldmlvbGV0cmVk OidkODcwOTMnLHBhcGF5YXdoaXA6J2ZmZWZkNScscGVhY2hwdWZmOidmZmRhYjkn LHBlcnU6J2NkODUzZicscGluazonZmZjMGNiJyxwbHVtOidkZGEwZGQnLHBvd2Rl cmJsdWU6J2IwZTBlNicscHVycGxlOic4MDAwODAnLHJlZDonZmYwMDAwJyxyb3N5 YnJvd246J2JjOGY4Zicscm95YWxibHVlOic0MTY5ZTEnLHNhZGRsZWJyb3duOic4 YjQ1MTMnLHNhbG1vbjonZmE4MDcyJyxzYW5keWJyb3duOidmNGE0NjAnLHNlYWdy ZWVuOicyZThiNTcnLHNlYXNoZWxsOidmZmY1ZWUnLHNpZW5uYTonYTA1MjJkJyxz aWx2ZXI6J2MwYzBjMCcsc2t5Ymx1ZTonODdjZWViJyxzbGF0ZWJsdWU6JzZhNWFj ZCcsc2xhdGVncmF5Oic3MDgwOTAnLHNub3c6J2ZmZmFmYScsc3ByaW5nZ3JlZW46 JzAwZmY3Zicsc3RlZWxibHVlOic0NjgyYjQnLHRhbjonZDJiNDhjJyx0ZWFsOicw MDgwODAnLHRoaXN0bGU6J2Q4YmZkOCcsdG9tYXRvOidmZjYzNDcnLHR1cnF1b2lz ZTonNDBlMGQwJyx2aW9sZXQ6J2VlODJlZScsdmlvbGV0cmVkOidkMDIwOTAnLHdo ZWF0OidmNWRlYjMnLHdoaXRlOidmZmZmZmYnLHdoaXRlc21va2U6J2Y1ZjVmNScs eWVsbG93OidmZmZmMDAnLHllbGxvd2dyZWVuOic5YWNkMzInfTsKCQkJCQkJZm9y ICh2YXIga2V5IGluIHNpbXBsZV9jb2xvcnMpIHsKCQkJCQkJCWlmIChjb2xvcl9z dHJpbmcgPT0ga2V5KSB7CgkJCQkJCQkJY29sb3Jfc3RyaW5nID0gc2ltcGxlX2Nv bG9yc1trZXldOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCXZhciBjb2xvcl9kZWZz ID0gWwoJCQkJCQkJewoJCQkJCQkJCXJlOiAvXnJnYlwoKFxkezEsM30pLFxzKihc ZHsxLDN9KSxccyooXGR7MSwzfSlcKSQvLAoJCQkJCQkJCWV4YW1wbGU6IFsncmdi KDEyMywgMjM0LCA0NSknLCAncmdiKDI1NSwyMzQsMjQ1KSddLAoJCQkJCQkJCXBy b2Nlc3M6IGZ1bmN0aW9uIChiaXRzKXsKCQkJCQkJCQkJcmV0dXJuIFsKCQkJCQkJ CQkJCXBhcnNlSW50KGJpdHNbMV0pLAoJCQkJCQkJCQkJcGFyc2VJbnQoYml0c1sy XSksCgkJCQkJCQkJCQlwYXJzZUludChiaXRzWzNdKQoJCQkJCQkJCQldOwoJCQkJ CQkJCX0KCQkJCQkJCX0sCgkJCQkJCQl7CgkJCQkJCQkJcmU6IC9eKFx3ezJ9KShc d3syfSkoXHd7Mn0pJC8sCgkJCQkJCQkJZXhhbXBsZTogWycjMDBmZjAwJywgJzMz NjY5OSddLAoJCQkJCQkJCXByb2Nlc3M6IGZ1bmN0aW9uIChiaXRzKXsKCQkJCQkJ CQkJcmV0dXJuIFsKCQkJCQkJCQkJCXBhcnNlSW50KGJpdHNbMV0sIDE2KSwKCQkJ CQkJCQkJCXBhcnNlSW50KGJpdHNbMl0sIDE2KSwKCQkJCQkJCQkJCXBhcnNlSW50 KGJpdHNbM10sIDE2KQoJCQkJCQkJCQldOwoJCQkJCQkJCX0KCQkJCQkJCX0sCgkJ CQkJCQl7CgkJCQkJCQkJcmU6IC9eKFx3ezF9KShcd3sxfSkoXHd7MX0pJC8sCgkJ CQkJCQkJZXhhbXBsZTogWycjZmIwJywgJ2YwZiddLAoJCQkJCQkJCXByb2Nlc3M6 IGZ1bmN0aW9uIChiaXRzKXsKCQkJCQkJCQkJcmV0dXJuIFsKCQkJCQkJCQkJCXBh cnNlSW50KGJpdHNbMV0gKyBiaXRzWzFdLCAxNiksCgkJCQkJCQkJCQlwYXJzZUlu dChiaXRzWzJdICsgYml0c1syXSwgMTYpLAoJCQkJCQkJCQkJcGFyc2VJbnQoYml0 c1szXSArIGJpdHNbM10sIDE2KQoJCQkJCQkJCQldOwoJCQkJCQkJCX0KCQkJCQkJ CX0KCQkJCQkJXTsKCQkJCQkJZm9yICh2YXIgaSA9IDA7IGkgPCBjb2xvcl9kZWZz Lmxlbmd0aDsgaSsrKSB7CgkJCQkJCQl2YXIgcmUgPSBjb2xvcl9kZWZzW2ldLnJl OwoJCQkJCQkJdmFyIHByb2Nlc3NvciA9IGNvbG9yX2RlZnNbaV0ucHJvY2VzczsK CQkJCQkJCXZhciBiaXRzID0gcmUuZXhlYyhjb2xvcl9zdHJpbmcpOwoJCQkJCQkJ aWYgKGJpdHMpIHsKCQkJCQkJCQljaGFubmVscyA9IHByb2Nlc3NvcihiaXRzKTsK CQkJCQkJCQl0aGlzLnIgPSBjaGFubmVsc1swXTsKCQkJCQkJCQl0aGlzLmcgPSBj aGFubmVsc1sxXTsKCQkJCQkJCQl0aGlzLmIgPSBjaGFubmVsc1syXTsKCQkJCQkJ CQl0aGlzLm9rID0gdHJ1ZTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQl0aGlzLnIg PSAodGhpcy5yIDwgMCB8fCBpc05hTih0aGlzLnIpKSA/IDAgOiAoKHRoaXMuciA+ IDI1NSkgPyAyNTUgOiB0aGlzLnIpOwoJCQkJCQl0aGlzLmcgPSAodGhpcy5nIDwg MCB8fCBpc05hTih0aGlzLmcpKSA/IDAgOiAoKHRoaXMuZyA+IDI1NSkgPyAyNTUg OiB0aGlzLmcpOwoJCQkJCQl0aGlzLmIgPSAodGhpcy5iIDwgMCB8fCBpc05hTih0 aGlzLmIpKSA/IDAgOiAoKHRoaXMuYiA+IDI1NSkgPyAyNTUgOiB0aGlzLmIpOwoK CQkJCQkJdmFyIHIgPSB0aGlzLnIudG9TdHJpbmcoMTYpOwoJCQkJCQl2YXIgZyA9 IHRoaXMuZy50b1N0cmluZygxNik7CgkJCQkJCXZhciBiID0gdGhpcy5iLnRvU3Ry aW5nKDE2KTsKCQkJCQkJaWYgKHIubGVuZ3RoID09IDEpIHIgPSAnMCcgKyByOwoJ CQkJCQlpZiAoZy5sZW5ndGggPT0gMSkgZyA9ICcwJyArIGc7CgkJCQkJCWlmIChi Lmxlbmd0aCA9PSAxKSBiID0gJzAnICsgYjsKCQkJCQkJcmV0dXJuICcjJyArIHIg KyBnICsgYjsKCQkJCQl9CgkJCQkJCgkJCQkJdmFyIGdldFJlYWxCRyA9IGZ1bmN0 aW9uIChiZ2NvbG9yKSB7CgkJCQkJCXZhciB0ZW1wX3N0dWIgPSBkb2N1bWVudC5j cmVhdGVFbGVtZW50KCdkaXYnKTsKCQkJCQkJdGVtcF9zdHViLnN0eWxlLmhlaWdo dCA9ICcwJzsKCQkJCQkJdGVtcF9zdHViLnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRl bic7CgkJCQkJCXRlbXBfc3R1Yi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBiZ2Nv bG9yOwoJCQkJCQlkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRlbXBfc3R1Yik7 CgkJCQkJCXZhciByZWFsX2NvbG9yID0gQmVndW4uVXRpbHMuZ2V0U3R5bGUodGVt cF9zdHViLCAnYmFja2dyb3VuZC1jb2xvcicpOwoJCQkJCQl0ZW1wX3N0dWIucGFy ZW50Tm9kZS5yZW1vdmVDaGlsZCh0ZW1wX3N0dWIpOwoJCQkJCQlyZXR1cm4gcmVh bF9jb2xvcjsKCQkJCQl9CgkJCQkJdmFyIGJnY29sb3IgPSBnZXRCR0NvbG9yKGJs b2NrKTsKCQkJCQl2YXIgdGVtcF9sb2dvX2NvbG9yID0gZ2V0UmVhbEJHKHN0eWxl cy5ibG9jay5ib3JkZXJDb2xvcik7CgkJCQkJYmdjb2xvciA9IGdldFJlYWxCRyhi Z2NvbG9yKTsKCgkJCQkJYmdjb2xvciA9IGNvbnZlcnRDb2xvcihiZ2NvbG9yKTsK CQkJCQl0ZW1wX2xvZ29fY29sb3IgPSBjb252ZXJ0Q29sb3IodGVtcF9sb2dvX2Nv bG9yKTsKCgkJCQkJaWYoYmdjb2xvciA9PSB0ZW1wX2xvZ29fY29sb3IgfHwgYXJl Q29sb3JzVG9vQ2xvc2UoYmdjb2xvciwgdGVtcF9sb2dvX2NvbG9yKSkgewoJCQkJ CQlpc19sb2dvX3RyYW5zcGFyZW50ID0gdHJ1ZTsKCQkJCQl9CgkJCQl9CgkJCQl2 YXIgaXNfZGVmYXVsdF9jb2xvciA9ICgoIXN0eWxlcy5ibG9jay5ib3JkZXJDb2xv ciB8fCBzdHlsZXMuYmxvY2suYm9yZGVyQ29sb3IudG9Mb3dlckNhc2UoKSA9PSAn dHJhbnNwYXJlbnQnKSB8fCAoc3R5bGVzLmJsb2NrLmJhY2tncm91bmRDb2xvciAh PT0gdW5kZWZpbmVkICYmIHN0eWxlcy5ibG9jay5ib3JkZXJDb2xvciAhPT0gdW5k ZWZpbmVkICYmIHN0eWxlcy5ibG9jay5iYWNrZ3JvdW5kQ29sb3IudG9Mb3dlckNh c2UoKSA9PSBzdHlsZXMuYmxvY2suYm9yZGVyQ29sb3IudG9Mb3dlckNhc2UoKSkp OwoJCQkJcmV0dXJuIChpc19kZWZhdWx0X2NvbG9yIHx8IGlzX2xvZ29fdHJhbnNw YXJlbnQpID8gZGVmYXVsdF9sb2dvX2NvbG9yIDogc3R5bGVzLmJsb2NrLmJvcmRl ckNvbG9yOwoJCQl9IGVsc2UgewoJCQkJcmV0dXJuIGRlZmF1bHRfbG9nb19jb2xv cjsKCQkJfQoJCX07CgkJdmFyIHByZXBhcmVDb2xvclN0eWxlcyA9IGZ1bmN0aW9u KHN0eWxlcyl7CgkJCWZ1bmN0aW9uIGNoZWNrQ29sb3JEZWYob2JqLCBwcm9wKXsK CQkJCWlmIChvYmogIT09IG51bGwgJiYgb2JqICE9PSB1bmRlZmluZWQpewoJCQkJ CWlmIChvYmpbcHJvcF0gPT09ICIiKXsKCQkJCQkJb2JqW3Byb3BdID0gInRyYW5z cGFyZW50IjsKCQkJCQl9CgkJCQl9CgkJCX0KCQkJCgkJCWZ1bmN0aW9uIGNoZWNr QmdDb2xvcihvYmopewoJCQkJY2hlY2tDb2xvckRlZihvYmosICJiYWNrZ3JvdW5k Q29sb3IiKTsKCQkJfQoJCQkKCQkJZnVuY3Rpb24gY2hlY2tCb3JkZXJDb2xvcihv YmopewoJCQkJY2hlY2tDb2xvckRlZihvYmosICJib3JkZXJDb2xvciIpOwoJCQl9 CgoJCQlmdW5jdGlvbiBta1RyYW5zcGFyZW50Qm9yZGVyc0ZvcklFKG9iaikgewoJ CQkJaWYgKG9iaiAhPT0gbnVsbCAmJiBvYmogIT09IHVuZGVmaW5lZCAmJiBCZWd1 bi5Ccm93c2VyLklFICYmIEJlZ3VuLkJyb3dzZXIubGVzcyg3KSAmJiBvYmouYm9y ZGVyQ29sb3IgJiYgKG9iai5ib3JkZXJDb2xvci50b0xvd2VyQ2FzZSgpID09ICd0 cmFuc3BhcmVudCcgfHwgb2JqLmJvcmRlckNvbG9yID09ICcnKSl7CgkJCQkJb2Jq LmJvcmRlckNvbG9yID0gInBpbmsiOwoJCQkJCW9iai5maWx0ZXIgPSAiY2hyb21h KGNvbG9yPXBpbmspIjsKCQkJCX0KCQkJfQoKCQkJY2hlY2tCZ0NvbG9yKHN0eWxl cy5ibG9ja19ob3Zlcik7CgkJCWNoZWNrQm9yZGVyQ29sb3Ioc3R5bGVzLmJsb2Nr X2hvdmVyKTsKCQkJCgkJCWNoZWNrQmdDb2xvcihzdHlsZXMuYmxvY2spOwoJCQlj aGVja0JvcmRlckNvbG9yKHN0eWxlcy5ibG9jayk7CgoJCQlta1RyYW5zcGFyZW50 Qm9yZGVyc0ZvcklFKHN0eWxlcy5ibG9jayk7CgkJCW1rVHJhbnNwYXJlbnRCb3Jk ZXJzRm9ySUUoc3R5bGVzLmJsb2NrX2hvdmVyKTsKCQl9OwoJCXRoaXMucHJpbnRC bG9ja1N0eWxlID0gZnVuY3Rpb24oYmxvY2tfaWQsIHN0eWxlcyl7CgkJCXZhciBz dHlsZXMgPSBzdHlsZXMgfHwge307CgkJCXZhciB2YXJzID0ge307CgkJCXZhciBi bG9jayA9IF90aGlzLkJsb2Nrcy5nZXRCbG9ja0J5SWQoYmxvY2tfaWQpOwoJCQlf dGhpcy5DYWxsYmFja3MuZGlzcGF0Y2goJ2Jsb2NrJywgJ3ByZWRyYXcnLCBfdGhp cywgW2Jsb2NrXSk7CgkJCXZhcnMuYmxvY2tfaWQgPSBibG9ja19pZCB8fCAtMTsK CQkJdmFycy5waG9uZV9tYXJnaW5fdG9wID0gMTsgLy8gVE9ETzogY2FsYyBmcm9t IGZvbnQtc2l6ZQoJCQl2YXJzLnBob25lX21hcmdpbl90b3AgPSBzdHlsZXMuZG9t YWluICYmIHN0eWxlcy5kb21haW4uZm9udFNpemUgPyBzdHlsZXMuZG9tYWluLmZv bnRTaXplIC0gOSA6IDE7CgkJCXZhcnMuYmxvY2tfbG9nb19jb2xvciA9IGdldExv Z29Db2xvcihzdHlsZXMsIGJsb2NrX2lkKTsKCQkJcHJlcGFyZUNvbG9yU3R5bGVz KHN0eWxlcyk7CgkJCWlmIChzdHlsZXMuYmxvY2sgJiYgc3R5bGVzLmJsb2NrLmJh Y2tncm91bmRDb2xvcikgewoJCQkJc3R5bGVzLmJsb2NrLmJhY2tncm91bmRDb2xv ciA9IE51bWJlcihibG9jay5vcHRpb25zLnVzZV9zY3JvbGwpID8gZ2V0VGFibGVD b2xvcihzdHlsZXMuYmxvY2suYmFja2dyb3VuZENvbG9yLCBibG9ja19pZCkgOiBz dHlsZXMuYmxvY2suYmFja2dyb3VuZENvbG9yOwoJCQkJdmFyc1sndGFibGU6YmFj a2dyb3VuZENvbG9yJ10gPSBOdW1iZXIoYmxvY2sub3B0aW9ucy51c2Vfc2Nyb2xs KSA/IGdldFRhYmxlQ29sb3Ioc3R5bGVzLmJsb2NrLmJhY2tncm91bmRDb2xvciwg YmxvY2tfaWQpIDogJ3RyYW5zcGFyZW50JzsKCQkJfQoJCQlpZiAoc3R5bGVzLmJs b2NrICYmIHN0eWxlcy5ibG9ja19ob3ZlciAmJiBzdHlsZXMuYmxvY2tfaG92ZXIu YmFja2dyb3VuZENvbG9yICYmIHN0eWxlcy5ibG9ja19ob3Zlci5ib3JkZXJDb2xv cil7CgkJCQlzdHlsZXMuYmxvY2tfaG92ZXIuYmFja2dyb3VuZENvbG9yID0gTnVt YmVyKGJsb2NrLm9wdGlvbnMudXNlX3Njcm9sbCkgPyBnZXRUYWJsZUNvbG9yKHN0 eWxlcy5ibG9ja19ob3Zlci5iYWNrZ3JvdW5kQ29sb3IsIGJsb2NrX2lkKSA6IHN0 eWxlcy5ibG9ja19ob3Zlci5iYWNrZ3JvdW5kQ29sb3I7CgkJCQl2YXJzWyd0YWJs ZV9ob3ZlcjpiYWNrZ3JvdW5kQ29sb3InXSA9IE51bWJlcihibG9jay5vcHRpb25z LnVzZV9zY3JvbGwpID8gZ2V0VGFibGVDb2xvcihzdHlsZXMuYmxvY2tfaG92ZXIu YmFja2dyb3VuZENvbG9yLCBibG9ja19pZCkgOiAndHJhbnNwYXJlbnQnOwoJCQl9 CgkJCWZvciAodmFyIGtleSBpbiBzdHlsZXMpewoJCQkJaWYgKHN0eWxlc1trZXld ICYmIHN0eWxlcy5oYXNPd25Qcm9wZXJ0eSAmJiBzdHlsZXMuaGFzT3duUHJvcGVy dHkoa2V5KSl7CgkJCQkJZm9yICh2YXIga2V5MiBpbiBzdHlsZXNba2V5XSl7CgkJ CQkJCWlmIChzdHlsZXNba2V5XVtrZXkyXSAmJiBzdHlsZXNba2V5XS5oYXNPd25Q cm9wZXJ0eSAmJiBzdHlsZXNba2V5XS5oYXNPd25Qcm9wZXJ0eShrZXkyKSl7CgkJ CQkJCQl2YXJzW2tleSArICc6JyArIGtleTJdID0gdHlwZW9mIHN0eWxlc1trZXld W2tleTJdID09ICdudW1iZXInID8gc3R5bGVzW2tleV1ba2V5Ml0gKyAncHgnIDog c3R5bGVzW2tleV1ba2V5Ml07CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCQkJ dmFyc1sndGh1bWI6YmFja2dyb3VuZENvbG9yJ10gPSB2YXJzWyd0aHVtYjpiYWNr Z3JvdW5kQ29sb3InXSB8fCBfdGhpcy5TdHJpbmdzLmNzcy50aHVtYl9kZWZfY29s b3I7CgkJCXZhciBjc3NfdGV4dCA9IChuZXcgQmVndW4uVGVtcGxhdGUoX3RoaXMu VHBscy5nZXRDU1MoJ2Jsb2NrJykpKS5ldmFsdWF0ZSh2YXJzKTsKCQkJdmFyIGNz c190ZXh0X2Zvcl9pZSA9IChuZXcgQmVndW4uVGVtcGxhdGUoX3RoaXMuVHBscy5n ZXRDU1MoJ2Zvck9wZXJhSUUnKSkpLmV2YWx1YXRlKHZhcnMpOwoJCQlpZihCZWd1 bi5Ccm93c2VyLklFIHx8IEJlZ3VuLkJyb3dzZXIuT3BlcmEpIHsKCQkJCWNzc190 ZXh0ICs9IGNzc190ZXh0X2Zvcl9pZTsKCQkJfQoJCQlCZWd1bi5VdGlscy5pbmNs dWRlU3R5bGUoY3NzX3RleHQsICdhcHBlbmQnLCAnYmVndW4tYmxvY2stY3NzLScg KyBibG9ja19pZCk7IC8vIG5vbi1JRSB3aXRoIGFwcGVuZCEhCgkJfTsKCQl0aGlz LmlzRmVlZFN0YXJ0ZWQgPSBmdW5jdGlvbigpewoJCQlyZXR1cm4gISFfdGhpcy5n ZXRQYWQoKS5mZWVkX3N0YXJ0ZWQ7CgkJfTsKCQl0aGlzLnNldEZlZWRTdGFydGVk ID0gZnVuY3Rpb24oKXsKCQkJX3RoaXMuZ2V0UGFkKCkuZmVlZF9zdGFydGVkID0g dHJ1ZTsKCQl9OwoJCXRoaXMuZ2V0QmFubmVySW5kZXggPSBmdW5jdGlvbigpewoJ CQlyZXR1cm4gX3RoaXMuZ2V0UGFkKCkuYmFubmVyX2luZGV4OwoJCX07CgkJdGhp cy5zZXRCYW5uZXJJbmRleCA9IGZ1bmN0aW9uKGluZGV4KXsKCQkJX3RoaXMuZ2V0 UGFkKCkuYmFubmVyX2luZGV4ID0gaW5kZXg7CgkJfTsKCQl0aGlzLmluY0Jhbm5l ckluZGV4ID0gZnVuY3Rpb24oKXsKCQkJX3RoaXMuc2V0QmFubmVySW5kZXgoX3Ro aXMuZ2V0QmFubmVySW5kZXgoKSArIDEpOwoJCX07CgkJdGhpcy5yZXNldEJhbm5l ckluZGV4ID0gZnVuY3Rpb24oKXsKCQkJX3RoaXMuc2V0QmFubmVySW5kZXgoMCk7 CgkJfTsKCQl0aGlzLnJlZ2lzdGVyU2hvd25CYW5uZXIgPSBmdW5jdGlvbihzaG93 bkJhbm5lcil7CgkJCXZhciBiYW5uZXJJZCA9IHNob3duQmFubmVyICYmIHNob3du QmFubmVyLmJhbm5lcl9pZDsKCQkJaWYgKCFiYW5uZXJJZCkgewoJCQkJcmV0dXJu OwoJCQl9CgkJCWlmICghX3RoaXMuYmFubmVycykgewoJCQkJX3RoaXMuYmFubmVy cyA9IFtiYW5uZXJJZF07CgkJCX0gZWxzZSB7CgkJCQlfdGhpcy5iYW5uZXJzLnB1 c2goYmFubmVySWQpOwoJCQl9CgkJfTsKCQl0aGlzLmdldFNob3duQmFubmVycyA9 IGZ1bmN0aW9uKCl7CgkJCXJldHVybiBfdGhpcy5iYW5uZXJzOwoJCX07CgkJdGhp cy5nZXRQYWQgPSBmdW5jdGlvbihwYWRfaWQpewoJCQlyZXR1cm4gX3RoaXMuUGFk cy5nZXRQYWQocGFkX2lkIHx8IHdpbmRvdy5iZWd1bl9hdXRvX3BhZCk7CgkJfTsK CQl0aGlzLmdldEZlZWQgPSBmdW5jdGlvbigpewoJCQlyZXR1cm4gX3RoaXMuZ2V0 UGFkKCkuZmVlZDsKCQl9OwoJCXRoaXMuZ2V0QmxvY2sgPSBmdW5jdGlvbihpbmRl eCl7CgkJCXJldHVybiBfdGhpcy5nZXRQYWQoKS5ibG9ja3NbaW5kZXhdOwoJCX07 CgkJdGhpcy5nZXRCbG9ja3MgPSBmdW5jdGlvbihwYWRfaWQpewoJCQl2YXIgYmxv Y2tzID0gW107IAoJCQlpZiAocGFkX2lkKXsKCQkJCWJsb2NrcyA9IF90aGlzLmdl dFBhZChwYWRfaWQpLmJsb2NrczsKCQkJfSBlbHNlIHsKCQkJCXZhciBwYWRzID0g X3RoaXMuUGFkcy5nZXRQYWRzKCk7CgkJCQlmb3IodmFyIGk9MCwgbD1wYWRzLmxl bmd0aDsgaTxsOyBpKyspIHsKCQkJCQlmb3IodmFyIGo9MCwgbj1wYWRzW2ldLmJs b2Nrcy5sZW5ndGg7IGo8bjsgaisrKSB7CgkJCQkJCWJsb2Nrcy5wdXNoKHBhZHNb aV0uYmxvY2tzW2pdKTsKCQkJCQl9CgkJCQl9CgkJCX0KCQkJcmV0dXJuIGJsb2Nr czsKCQl9OwoJCXRoaXMuZ2V0QmFubmVyID0gZnVuY3Rpb24odHlwZSwgaW5kZXgs IHBhZF9pZCl7CgkJCXRyeXsKCQkJCXJldHVybiBfdGhpcy5nZXRQYWQocGFkX2lk KS5mZWVkLmJhbm5lcnNbdHlwZV1baW5kZXhdOwoJCQl9IGNhdGNoKGUpewoJCQkJ cmV0dXJuIG51bGw7CgkJCX0KCQl9OwoJCXRoaXMuZ2V0QmFubmVycyA9IGZ1bmN0 aW9uKCl7CgkJCXJldHVybiBfdGhpcy5nZXRGZWVkKCkuYmFubmVyczsKCQl9OwoJ CXRoaXMuZ2V0U3R1YiA9IGZ1bmN0aW9uKHR5cGUpewoJCQlyZXR1cm4gX3RoaXMu Z2V0RmVlZCgpLnN0dWJzW3R5cGVdIHx8IG51bGw7CgkJfTsKCQl0aGlzLmdldFJp Y2hQaWN0dXJlU3JjID0gZnVuY3Rpb24oYmFubmVyKXsKCQkJdmFyIGJhbm5lcl9p ZCA9IGJhbm5lci5iYW5uZXJfaWQgKyAnJzsKCQkJaWYoX3RoaXMuU3RyaW5ncy51 cmxzLnJpY2hfcGljdHVyZV9iaWcgJiYgX3RoaXMuU3RyaW5ncy51cmxzLnJpY2hf cGljdHVyZV9zbWFsbCAmJiBiYW5uZXJfaWQpIHsKCQkJCXZhciBzbWFsbCA9IChu ZXcgQmVndW4uVGVtcGxhdGUoX3RoaXMuU3RyaW5ncy51cmxzLnJpY2hfcGljdHVy ZV9zbWFsbCkpLmV2YWx1YXRlKHtiYW5uZXJfaWQ6IGJhbm5lcl9pZH0pOwoJCQkJ dmFyIGJpZyA9IChuZXcgQmVndW4uVGVtcGxhdGUoX3RoaXMuU3RyaW5ncy51cmxz LnJpY2hfcGljdHVyZV9iaWcpKS5ldmFsdWF0ZSh7YmFubmVyX2lkOiBiYW5uZXJf aWR9KTsKCQkJCXJldHVybiB7CgkJCQkJc21hbGw6IHNtYWxsLAoJCQkJCWJpZzog YmlnCgkJCQl9OwoJCQl9CgkJCXZhciBzcmMgPSBfdGhpcy5yZXNwb25zZVBhcmFt c1sndGh1bWJzX3NyYyddID8gJ2h0dHA6Ly8nICsgX3RoaXMucmVzcG9uc2VQYXJh bXNbJ3RodW1ic19zcmMnXSArICcvJyA6IF90aGlzLlN0cmluZ3MudXJscy50aHVt YnM7CgkJCWlmIChiYW5uZXJfaWQgJiYgYmFubmVyX2lkLmxlbmd0aCA+IDMpewoJ CQkJc3JjICs9ICdyaWNoLyc7CgkJCQlzcmMgKz0gYmFubmVyX2lkLmNoYXJBdChi YW5uZXJfaWQubGVuZ3RoIC0gMik7CgkJCQlzcmMgKz0gJy8nICsgYmFubmVyX2lk LmNoYXJBdChiYW5uZXJfaWQubGVuZ3RoIC0gMSk7CgkJCQlzcmMgKz0gJy8nICsg YmFubmVyX2lkOwoJCQkJdmFyIHNyY19zID0gIHNyYyArICdzJzsKCQkJCXZhciBz cmNfYiA9ICBzcmMgKyAnYic7CgkJCX0gZWxzZSB7CgkJCQl2YXIgc3JjX3MgPSBf dGhpcy5TdHJpbmdzLnVybHMuYmxhbms7CgkJCQl2YXIgc3JjX2IgPSBzcmNfczsK CQkJfQoJCQlpZihiYW5uZXIuaW1hZ2VzICYmIGJhbm5lci5pbWFnZXMucmljaHBy ZXZpZXcpIHsKCQkJCXNyY19zID0gYmFubmVyLmltYWdlcy5yaWNocHJldmlldzsK CQkJfQoJCQlpZihiYW5uZXIuaW1hZ2VzICYmIGJhbm5lci5pbWFnZXMucmljaCkg ewoJCQkJc3JjX2IgPSBiYW5uZXIuaW1hZ2VzLnJpY2g7CgkJCX0KCQkJcmV0dXJu IHsKCQkJCXNtYWxsOiBzcmNfcywKCQkJCWJpZzogc3JjX2IKCQkJfTsKCQl9OwoJ CXRoaXMuZ2V0VGh1bWJTcmMgPSBmdW5jdGlvbihiYW5uZXIsIGZha2UpewoJCQl2 YXIgc3JjID0gX3RoaXMucmVzcG9uc2VQYXJhbXNbJ3RodW1ic19zcmMnXSA/ICdo dHRwOi8vJyArIF90aGlzLnJlc3BvbnNlUGFyYW1zWyd0aHVtYnNfc3JjJ10gKyAn LycgOiBfdGhpcy5TdHJpbmdzLnVybHMudGh1bWJzOwoJCQl2YXIgYmFubmVyX2lk ID0gYmFubmVyLmJhbm5lcl9pZCArICcnOwoJCQlpZiAoYmFubmVyX2lkICYmIGJh bm5lcl9pZC5sZW5ndGggPiAzKXsKCQkJCXZhciB0aGVtYXRpYyA9IGJhbm5lci50 aGVtYXRpY3MgPyAoYmFubmVyLnRoZW1hdGljcy5zcGxpdCgnLCcpWzBdICsgJycp IDogJzEnOwoJCQkJc3JjICs9IGJhbm5lcl9pZC5jaGFyQXQoYmFubmVyX2lkLmxl bmd0aCAtIDIpOwoJCQkJc3JjICs9ICcvJyArIGJhbm5lcl9pZC5jaGFyQXQoYmFu bmVyX2lkLmxlbmd0aCAtIDEpOwoJCQkJc3JjICs9ICcvJyArIGJhbm5lcl9pZCAr ICcuanBnJzsKCQkJCXNyYyArPSAnP3Q9JyArIHRoZW1hdGljICsgJyZyPScgKyBi YW5uZXJfaWQuY2hhckF0KGJhbm5lcl9pZC5sZW5ndGggLSAzKTsKCQkJfSBlbHNl IHsKCQkJCXNyYyA9IHNyYyArICdlbXB0eS5qcGcnOwoJCQl9CgkJCWlmKGJhbm5l ci5pbWFnZXMgJiYgYmFubmVyLmltYWdlcy50aGVtYXRpYykgewoJCQkJc3JjID0g YmFubmVyLmltYWdlcy50aGVtYXRpYzsKCQkJfQoJCQlpZiAoQmVndW4uQnJvd3Nl ci5JRSAmJiBCZWd1bi5Ccm93c2VyLnZlcnNpb24oKSA8PSA2ICYmIGZha2UpIHsK CQkJCXNyYyA9IF90aGlzLlN0cmluZ3MudXJscy5ibGFuazsKCQkJfQoJCQlpZihi YW5uZXIuaW1hZ2VzICYmIGJhbm5lci5pbWFnZXMuc2l0ZXByZXZpZXcpIHsKCQkJ CXNyYyA9IGJhbm5lci5pbWFnZXMuc2l0ZXByZXZpZXc7CgkJCX0KCQkJcmV0dXJu IHNyYzsKCQl9OwoJCXRoaXMuZ2V0RmF2aWNvblNyYyA9IGZ1bmN0aW9uKGJhbm5l cil7CgkJCXZhciBzcmMgPSBfdGhpcy5yZXNwb25zZVBhcmFtc1sndGh1bWJzX3Ny YyddID8gJ2h0dHA6Ly8nICsgX3RoaXMucmVzcG9uc2VQYXJhbXNbJ3RodW1ic19z cmMnXSArICcvJyA6IF90aGlzLlN0cmluZ3MudXJscy50aHVtYnM7CgkJCXZhciBi YW5uZXJfaWQgPSBiYW5uZXIuYmFubmVyX2lkICsgJyc7CgkJCWlmIChiYW5uZXJf aWQgJiYgYmFubmVyX2lkLmxlbmd0aCA+IDMpewoJCQkJc3JjICs9ICdmYXZpY29u Lyc7CgkJCQlzcmMgKz0gYmFubmVyX2lkLmNoYXJBdChiYW5uZXJfaWQubGVuZ3Ro IC0gMik7CgkJCQlzcmMgKz0gJy8nICsgYmFubmVyX2lkLmNoYXJBdChiYW5uZXJf aWQubGVuZ3RoIC0gMSk7CgkJCQlzcmMgKz0gJy8nICsgYmFubmVyX2lkICsgJy5q cGcnOwoJCQl9IGVsc2UgewoJCQkJc3JjID0gX3RoaXMuU3RyaW5ncy51cmxzLmJs YW5rOwoJCQl9CgkJCWlmKGJhbm5lci5pbWFnZXMgJiYgYmFubmVyLmltYWdlcy5m YXZpY29uKSB7CgkJCQlzcmMgPSBiYW5uZXIuaW1hZ2VzLmZhdmljb247CgkJCX0K CQkJcmV0dXJuIHNyYzsKCQl9OwoJCXRoaXMuZ2V0QmFubmVyQ2FyZFBQY2FsbEhU TUwgPSBmdW5jdGlvbihiYW5uZXIsIGJsb2NrKXsKCQkJdmFyIGJhbm5lcl9jb250 YWN0cyA9IFtdOwoJCQl2YXIgY2FyZHNfbW9kZSA9IGJhbm5lclsnY2FyZHNfbW9k ZSddOwoJCQl2YXIgaXNfcHBjYWxsID0gYmFubmVyWydwcGNhbGwnXTsKCQkJdmFy IHZhcnMgPSB7fTsKCQkJZnVuY3Rpb24gX2NhcmQodXNlX3Bob25lKXsKCQkJCXZh cnMuY2FyZF90ZXh0ID0gX3RoaXMuU3RyaW5ncy5jb250YWN0cy5jYXJkOwoJCQkJ dmFycy51cmwgPSBfdGhpcy5hZGRNaXNjMlVSTChibG9jay5vcHRpb25zLm1pc2Nf aWQsIGJhbm5lci5jYXJkKTsKCQkJCXZhcnMucGhvbmUgPSB1c2VfcGhvbmUgPyAo bmV3IEJlZ3VuLlRlbXBsYXRlKF90aGlzLlRwbHMuZ2V0SFRNTCgnYm5ucl9waG9u ZScpKSkuZXZhbHVhdGUodmFycykgOiAnJzsKCQkJCXZhcnMubm9fcGhvbmVfY2xh c3MgPSB1c2VfcGhvbmUgPyAnJyA6ICdiZWd1bl9hZHZfcGhvbmVfbm9faWNvbic7 CgkJCQliYW5uZXJfY29udGFjdHMucHVzaCgobmV3IEJlZ3VuLlRlbXBsYXRlKF90 aGlzLlRwbHMuZ2V0SFRNTCgnYm5ucl9jYXJkJykpKS5ldmFsdWF0ZSh2YXJzKSk7 CgkJCX0KCQkJZnVuY3Rpb24gX3BwY2FsbCh1c2VfcGhvbmUpewoJCQkJdmFycy5w cGNhbGxfdGV4dCA9IF90aGlzLlN0cmluZ3MuY29udGFjdHMucHBjYWxsOwoJCQkJ dmFycy5iYW5uZXJfaW5kZXggPSBfdGhpcy5nZXRCYW5uZXJJbmRleCgpOwoJCQkJ dmFycy5wYWRfaWQgPSB3aW5kb3cuYmVndW5fYXV0b19wYWQgfHwgJyc7CgkJCQl2 YXJzLnBob25lID0gdXNlX3Bob25lID8gKG5ldyBCZWd1bi5UZW1wbGF0ZShfdGhp cy5UcGxzLmdldEhUTUwoJ2JubnJfcGhvbmUnKSkpLmV2YWx1YXRlKHZhcnMpIDog Jyc7CgkJCQliYW5uZXJfY29udGFjdHMucHVzaCgobmV3IEJlZ3VuLlRlbXBsYXRl KF90aGlzLlRwbHMuZ2V0SFRNTCgnYm5ucl9wcGNhbGwnKSkpLmV2YWx1YXRlKHZh cnMpKTsKCQkJfQoJCQlpZiAoY2FyZHNfbW9kZSA9PSAnQ2FyZCcgJiYgaXNfcHBj YWxsID09IGZhbHNlKXsKCQkJCV9jYXJkKHRydWUpOwoJCQl9IGVsc2UgaWYgKGNh cmRzX21vZGUgPT0gJ0NhcmQnICYmIGlzX3BwY2FsbCA9PSB0cnVlKXsKCQkJCV9w cGNhbGwodHJ1ZSk7CgkJCQlfY2FyZChmYWxzZSk7CgkJCX0gZWxzZSBpZiAoY2Fy ZHNfbW9kZSA9PSAnVXJsJyAmJiBpc19wcGNhbGwgPT0gZmFsc2UpewoJCQkJLy8g bm9wCgkJCX0gZWxzZSBpZiAoY2FyZHNfbW9kZSA9PSAnVXJsJyAmJiBpc19wcGNh bGwgPT0gdHJ1ZSl7CgkJCQlfcHBjYWxsKHRydWUpOwoJCQl9IGVsc2UgaWYgKGNh cmRzX21vZGUgPT0gJ0NhcmQsIFVybCcgJiYgaXNfcHBjYWxsID09IGZhbHNlKXsK CQkJCV9jYXJkKHRydWUpOwoJCQl9IGVsc2UgaWYgKGNhcmRzX21vZGUgPT0gJ0Nh cmQsIFVybCcgJiYgaXNfcHBjYWxsID09IHRydWUpewoJCQkJX3BwY2FsbCh0cnVl KTsKCQkJCV9jYXJkKGZhbHNlKTsKCQkJfQoJCQlyZXR1cm4gYmFubmVyX2NvbnRh Y3RzOwoJCX07CgkJdGhpcy5nZXRCYW5uZXJEb21haW5HZW9IVE1MID0gZnVuY3Rp b24oYmFubmVyLCBibG9jayl7CgkJCXZhciBiYW5uZXJfY29udGFjdHMgPSBbXTsK CQkJdmFyIGJhbm5lcl9jb250YWN0c19uYW1lcyA9IFsnZG9tYWluJywgJ2dlbydd OwoJCQl2YXIgaSA9IDA7CgkJCXZhciBiYW5uZXJfY29udGFjdHNfbmFtZSA9IG51 bGw7CgkJCXZhciB2YXJzID0ge307CgkJCXdoaWxlIChiYW5uZXJfY29udGFjdHNf bmFtZSA9IGJhbm5lcl9jb250YWN0c19uYW1lc1tpXSl7CgkJCQl2YXJzW2Jhbm5l cl9jb250YWN0c19uYW1lXSA9IGJhbm5lcltiYW5uZXJfY29udGFjdHNfbmFtZV07 CgkJCQl2YXJzLnN0YXR1cyA9IGJhbm5lci5zdGF0dXM7CgkJCQl2YXJzLnVybCA9 IF90aGlzLmFkZE1pc2MyVVJMKGJsb2NrLm9wdGlvbnMubWlzY19pZCwgYmFubmVy LnVybCk7CgkJCQlpZiAodmFyc1tiYW5uZXJfY29udGFjdHNfbmFtZV0pIGJhbm5l cl9jb250YWN0cy5wdXNoKChuZXcgQmVndW4uVGVtcGxhdGUoX3RoaXMuVHBscy5n ZXRIVE1MKCdibm5yXycgKyBiYW5uZXJfY29udGFjdHNfbmFtZSkpKS5ldmFsdWF0 ZSh2YXJzKSk7CgkJCQlpKys7CgkJCX0KCQkJcmV0dXJuIGJhbm5lcl9jb250YWN0 czsKCQl9OwoJCXRoaXMuYWRkTWlzYzJVUkwgPSBmdW5jdGlvbihtaXNjX2lkLCB1 cmwpewoJCQlyZXR1cm4gKG1pc2NfaWQgPiAwID8gdXJsICsgJyZtaXNjMj0nICsg KE51bWJlcihtaXNjX2lkKSA8PCA4KSA6IHVybCk7CgkJfTsKCQl0aGlzLmNsaWNr QmFubmVyID0gZnVuY3Rpb24oY2xpY2tfZXZlbnQsIG9yaWdfZWxlbSl7CgkJCXZh ciBjbGlja19ldmVudCA9IGNsaWNrX2V2ZW50IHx8IHdpbmRvdy5ldmVudDsKCQkJ aWYgKGNsaWNrX2V2ZW50LmRvbmUpewoJCQkJcmV0dXJuOwoJCQl9CgkJCXZhciBj dXJyX2VsZW0gPSBjbGlja19ldmVudC50YXJnZXQgfHwgY2xpY2tfZXZlbnQuc3Jj RWxlbWVudDsKCQkJdmFyIGlzSW5zaWRlVGFnID0gZnVuY3Rpb24oY2hpbGRfZWxl bSwgcGFyZW50X3RhZyl7CgkJCQl2YXIgY2hpbGRfZWxlbV9wYXJlbnQgPSBjaGls ZF9lbGVtOwoJCQkJZG97CgkJCQkJaWYgKGNoaWxkX2VsZW1fcGFyZW50LnRhZ05h bWUgJiYgY2hpbGRfZWxlbV9wYXJlbnQudGFnTmFtZS50b1VwcGVyQ2FzZSgpID09 IHBhcmVudF90YWcudG9VcHBlckNhc2UoKSl7CgkJCQkJCXJldHVybiB0cnVlOwoJ CQkJCX0KCQkJCX13aGlsZSAoY2hpbGRfZWxlbV9wYXJlbnQgPSBjaGlsZF9lbGVt X3BhcmVudC5wYXJlbnROb2RlKTsKCQkJCXJldHVybiBmYWxzZTsKCQkJfTsKCQkJ aWYgKGN1cnJfZWxlbS50YWdOYW1lLnRvVXBwZXJDYXNlKCkgPT0gJ0EnIHx8IGlz SW5zaWRlVGFnKGN1cnJfZWxlbSwgJ0EnKSl7CgkJCQljbGlja19ldmVudC5kb25l ID0gdHJ1ZTsKCQkJCV90aGlzLkNhbGxiYWNrcy5kaXNwYXRjaCgnYmFubmVyJywg J2NsaWNrJywgY3Vycl9lbGVtKTsKCQkJCWlmICh0aGlzLmlzRXZlbnRUcmFja2lu Z09uKCkpIHsgCgkJCQkJX3RoaXMuY2xpY2tIYW5kbGVyKG9yaWdfZWxlbSkuYXBw bHkoX3RoaXMpOwoJCQkJfQoJCQl9IGVsc2UgaWYgKG9yaWdfZWxlbS5nZXRBdHRy aWJ1dGUoJ191cmwnKSl7CgkJCQl2YXIgYW55TGluayA9IGN1cnJfZWxlbS5nZXRF bGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdOwoJCQkJaWYgKGFueUxpbmsgJiYgYW55 TGluay5jbGljayAhPT0gdW5kZWZpbmVkKSB7CgkJCQkJaWYgKGNsaWNrX2V2ZW50 LnByZXZlbnREZWZhdWx0ICE9PSB1bmRlZmluZWQpIHsKCQkJCQkJY2xpY2tfZXZl bnQucHJldmVudERlZmF1bHQoKTsKCQkJCQl9IGVsc2UgewoJCQkJCQljbGlja19l dmVudC5yZXR1cm5WYWx1ZSA9IGZhbHNlOwoJCQkJCX0KCQkJCQlpZiAoY2xpY2tf ZXZlbnQuc3RvcFByb3BhZ2F0aW9uICE9PSB1bmRlZmluZWQpIHsKCQkJCQkJY2xp Y2tfZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CgkJCQkJfSBlbHNlIHsKCQkJCQkJ Y2xpY2tfZXZlbnQuY2FuY2VsQnViYmxlID0gdHJ1ZTsKCQkJCQl9CgkJCQkJYW55 TGluay5jbGljaygpOwoJCQkJfSBlbHNlIHsKCQkJCQlfdGhpcy5DYWxsYmFja3Mu ZGlzcGF0Y2goJ2Jhbm5lcicsICdjbGljaycsIGN1cnJfZWxlbSk7CgkJCQkJaWYg KHRoaXMuaXNFdmVudFRyYWNraW5nT24oKSkgewoJCQkJCQlfdGhpcy5jbGlja0hh bmRsZXIob3JpZ19lbGVtKS5hcHBseShfdGhpcyk7CgkJCQkJfQoJCQkJCXdpbmRv dy5vcGVuKG9yaWdfZWxlbS5nZXRBdHRyaWJ1dGUoJ191cmwnKSk7CgkJCQl9CgkJ CX0KCQl9OwoJCXRoaXMuZ2V0QmFubmVySFRNTCA9IGZ1bmN0aW9uKGJhbm5lciwg YmxvY2ssIGJsb2NrX2Jhbm5lcl9jb3VudCl7CgkJCWZ1bmN0aW9uIHByZXBhcmVC YW5uZXJNb2RlKGJhbm5lcil7CgkJCQl2YXIgYmFubmVyID0gYmFubmVyIHx8IHt9 OwoJCQkJdmFyIHBvc3NpYmxlX2NhcmRzX21vZGVzID0gWydDYXJkLCBVcmwnLCAn Q2FyZCcsICdVcmwnXTsKCQkJCWlmICgoIWJhbm5lclsnY2FyZHNfbW9kZSddKSB8 fCAhQmVndW4uVXRpbHMuaW5fYXJyYXkocG9zc2libGVfY2FyZHNfbW9kZXMsIGJh bm5lclsnY2FyZHNfbW9kZSddKSl7CgkJCQkJYmFubmVyWydjYXJkc19tb2RlJ10g PSAnQ2FyZCwgVXJsJzsKCQkJCX0KCQkJCWlmICghYmFubmVyWyd1cmwnXSAmJiAh YmFubmVyWydjYXJkJ10pewoJCQkJCXJldHVybiB7fTsKCQkJCX0KCQkJCWlmICgh YmFubmVyWyd1cmwnXSAmJiBiYW5uZXJbJ2NhcmQnXSl7CgkJCQkJYmFubmVyWydj YXJkc19tb2RlJ10gPSAnQ2FyZCc7CgkJCQl9CgkJCQlpZiAoYmFubmVyWyd1cmwn XSAmJiAhYmFubmVyWydjYXJkJ10pewoJCQkJCWJhbm5lclsnY2FyZHNfbW9kZSdd ID0gJ1VybCc7CgkJCQl9CgkJCQlpZiAoYmFubmVyWydjYXJkc19tb2RlJ10gPT0g J0NhcmQnKXsKCQkJCQliYW5uZXJbJ3VybCddID0gYmFubmVyWydjYXJkJ107CgkJ CQl9CgkJCQlyZXR1cm4gYmFubmVyOwoJCQl9CgoJCQl2YXIgYmFubmVyID0gcHJl cGFyZUJhbm5lck1vZGUoYmFubmVyKTsKCQkJaWYgKGJhbm5lcil7CgkJCQlpZihi YW5uZXIuZG9tYWluICYmIGJhbm5lci5kb21haW4ubWF0Y2goLyYjeDQyNjsmI3g0 MzU7JiN4NDNkOyYjeDQzMDs6IC8pKSB7CgkJCQkJYmFubmVyLnN0YXR1cyA9IGJh bm5lci5kb21haW47CgkJCQl9IGVsc2UgaWYgKGJhbm5lci5kb21haW4pIHsKCQkJ CQliYW5uZXIuc3RhdHVzID0gJ2h0dHA6Ly8nICsgYmFubmVyLmRvbWFpbiArICcv JzsKCQkJCX0gZWxzZSB7CgkJCQkJYmFubmVyLmRvbWFpbiA9IGJhbm5lci5zdGF0 dXMgPSAnJzsKCQkJCX0KCQkJCXZhciBiYW5uZXJfY29udGFjdHMgPSBfdGhpcy5n ZXRCYW5uZXJDYXJkUFBjYWxsSFRNTChiYW5uZXIsIGJsb2NrKS5jb25jYXQoX3Ro aXMuZ2V0QmFubmVyRG9tYWluR2VvSFRNTChiYW5uZXIsIGJsb2NrKSk7CgkJCQl2 YXIgdmFycyA9IHt9OwoJCQkJQmVndW4uZXh0ZW5kKHZhcnMsIGJhbm5lcik7CgkJ CQl2YXJzLmNvbnRhY3QgPSBiYW5uZXJfY29udGFjdHMuam9pbihfdGhpcy5UcGxz LmdldEhUTUwoJ2JubnJfZ2x1ZScpKTsKCQkJCXZhcnMudXJsID0gX3RoaXMuYWRk TWlzYzJVUkwoYmxvY2sub3B0aW9ucy5taXNjX2lkLCBiYW5uZXIudXJsKTsKCQkJ CXZhcnMub25jbGljayA9IF90aGlzLlN0cmluZ3MuanMuYmFubmVyX29uY2xpY2s7 CgkJCQl2YXJzLmJsb2NrX2lkID0gYmxvY2suaWQ7CgkJCQl2YXJzLmJhbm5lcl9p ZCA9IGJhbm5lci5iYW5uZXJfaWQ7CgkJCQl2YXJzLmlkID0gYmxvY2tfYmFubmVy X2NvdW50IHx8IDA7CgkJCQl2YXJzLmRlc2NyID0gdmFycy5kZXNjci5yZXBsYWNl KC8oXCx8XC58XD98XCF8XDopKFxTXEQpL2csJyQxICQyJyk7CgkJCQl2YXJzLnRo dW1iID0gTnVtYmVyKGJsb2NrLm9wdGlvbnMuc2hvd190aHVtYm5haWxzKSA/IChu ZXcgQmVndW4uVGVtcGxhdGUoX3RoaXMuVHBscy5nZXRIVE1MKCdibm5yX3RodW1i JykpKS5ldmFsdWF0ZSh7dXJsOiBiYW5uZXIudXJsLCBzcmM6IF90aGlzLmdldFRo dW1iU3JjKGJhbm5lcix0cnVlKSwgCgkJCQkJcG5nZml4OiAoQmVndW4uQnJvd3Nl ci5JRSAmJiBCZWd1bi5Ccm93c2VyLnZlcnNpb24oKSA8PSA2KSA/ICdzdHlsZT0i ZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYUlt YWdlTG9hZGVyKHNyYz1cJycrX3RoaXMuZ2V0VGh1bWJTcmMoYmFubmVyLGZhbHNl KSsnXCcsIHNpemluZ01ldGhvZD1cJ2ltYWdlXCcpO3dpZHRoOjU2cHggIWltcG9y dGFudDsiJyA6ICcnLAoJCQkJCWJnY29sb3I6ICh0eXBlb2YgYmxvY2sub3B0aW9u cy52aXN1YWwudGh1bWIgIT0gJ3VuZGVmaW5lZCcpID8gYmxvY2sub3B0aW9ucy52 aXN1YWwudGh1bWIuYmFja2dyb3VuZENvbG9yIDogX3RoaXMuU3RyaW5ncy5jc3Mu dGh1bWJfZGVmX2NvbG9yLCAKCQkJCQliZ2NvbG9yX2hvdmVyOiAodHlwZW9mIGJs b2NrLm9wdGlvbnMudmlzdWFsLnRodW1iX2hvdmVyICE9ICd1bmRlZmluZWQnKSA/ IGJsb2NrLm9wdGlvbnMudmlzdWFsLnRodW1iX2hvdmVyLmJhY2tncm91bmRDb2xv ciA6IF90aGlzLlN0cmluZ3MuY3NzLnRodW1iX2RlZl9jb2xvcl9ob3Zlcn0pIDog Jyc7CgkJCQl2YXJzLmJhbm5lcl93aWR0aCA9IE1hdGgucm91bmQoMTAwIC8gTnVt YmVyKF90aGlzLmdldEFjdHVhbEJsb2NrQmFubmVyc0NvdW50KGJsb2NrKSkpICsg JyUnOwoJCQkJaWYoX3RoaXMuQmxvY2tzLmNoZWNrVHlwZShibG9jaywgJ3NxdWFy ZScpICYmIGJsb2NrLm9wdGlvbnMuanNvbiAmJiBibG9jay5vcHRpb25zLmpzb24u Y29sKSB7CgkJCQkJdmFycy5iYW5uZXJfd2lkdGggPSBNYXRoLnJvdW5kKDEwMCAv IE51bWJlcihibG9jay5vcHRpb25zLmpzb24uY29sKSkgKyAnJSc7CgkJCQl9CgkJ CQl2YXJzLmNzc19mYXZpY29uID0gKE51bWJlcihibG9jay5vcHRpb25zLnNob3df ZmF2aWNvbnMpICYmICFOdW1iZXIoYmxvY2sub3B0aW9ucy5zaG93X3RodW1ibmFp bHMpKSA/IF90aGlzLlN0cmluZ3MuY3NzLmZhdmljb24gOiAnJzsKCQkJCXZhcnMu ZmF2aWNvbiA9IChOdW1iZXIoYmxvY2sub3B0aW9ucy5zaG93X2Zhdmljb25zKSAm JiAhTnVtYmVyKGJsb2NrLm9wdGlvbnMuc2hvd190aHVtYm5haWxzKSkgPyAnc3R5 bGU9Inpvb206MTtiYWNrZ3JvdW5kLWltYWdlOnVybCgnICsgX3RoaXMuZ2V0RmF2 aWNvblNyYyhiYW5uZXIpICsgJykgIWltcG9ydGFudDsiJyA6ICcnOwoJCQkJaWYo X3RoaXMuY2hlY2tCYW5uZXJWaWV3VHlwZShiYW5uZXIsICdyaWNoJykpIHsKCQkJ CQl2YXIgcGljdHVyZXMgPSBfdGhpcy5nZXRSaWNoUGljdHVyZVNyYyhiYW5uZXIp OwoJCQkJCXZhcnMucGljdHVyZSA9IChuZXcgQmVndW4uVGVtcGxhdGUoX3RoaXMu VHBscy5nZXRIVE1MKCdibm5yX3BpY3R1cmUnKSkpLmV2YWx1YXRlKHtzcmM6IHBp Y3R1cmVzLnNtYWxsLCBiaWdfcGhvdG9fc3JjOiAgcGljdHVyZXMuYmlnLCB1cmw6 IGJhbm5lci51cmx9KTsKCQkJCQl2YXIgaXNfdXNlX3JpY2ggPSAnX3JpY2gnOwoJ CQkJfSBlbHNlIHsKCQkJCQl2YXJzLnBpY3R1cmUgPSB2YXJzLnRodW1iOwoJCQkJ CXZhciBpc191c2VfcmljaCA9ICcnOwoJCQkJfQoJCQkJdmFyIGlzX3VzZV9hY2Nv cmRpb24gPSBOdW1iZXIoYmxvY2sub3B0aW9ucy51c2VfYWNjb3JkaW9uKSA/ICdf dXNlX2FjY29yZGlvbicgOiAnJzsKCQkJCXJldHVybiAobmV3IEJlZ3VuLlRlbXBs YXRlKF90aGlzLlRwbHMuZ2V0SFRNTCgnYmFubmVyXycgKyBibG9jay5vcHRpb25z LmRpbWVuc2lvbnMudHlwZS50b0xvd2VyQ2FzZSgpICsgaXNfdXNlX3JpY2ggKyBp c191c2VfYWNjb3JkaW9uKSkpLmV2YWx1YXRlKHZhcnMpOwoJCQl9IGVsc2UgewoJ CQkJcmV0dXJuICcnOwoJCQl9CgkJfTsKCQl0aGlzLmNoZWNrQmFubmVyVmlld1R5 cGUgPSBmdW5jdGlvbihiYW5uZXIsIHZpZXd0eXBlKSB7CgkJCXJldHVybiBCZWd1 bi5VdGlscy5pbkxpc3QoYmFubmVyLnZpZXdfdHlwZSwgdmlld3R5cGUpOyAKCQl9 OwoJCXRoaXMuZ2V0VGFibGVXaXRoQWRzID0gZnVuY3Rpb24oYmxvY2tJZCkgewoJ CQl2YXIgZ2V0U2luZ2xlVGFibGUgPSBmdW5jdGlvbihpZCkgewoJCQkJdmFyIGVs ZW1lbnQgPSBfdGhpcy5CbG9ja3MuZ2V0RG9tT2JqKGlkKTsKCQkJCWlmICghZWxl bWVudCkgewoJCQkJCXJldHVybiB1bmRlZmluZWQ7CgkJCQl9CgkJCQl2YXIgdGFi bGVzID0gZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGFibGUiKTsKCQkJ CWZvciAodmFyIGkgPSAwOyBpIDwgdGFibGVzLmxlbmd0aDsgaSsrKSB7CgkJCQkJ aWYgKHRhYmxlc1tpXS5jbGFzc05hbWUgJiYgdGFibGVzW2ldLmNsYXNzTmFtZS5p bmRleE9mKCJiZWd1bl9hZHZfdGFibGUiKSA+IC0xKSB7CgkJCQkJCXJldHVybiB0 YWJsZXNbaV07CgkJCQkJfQoJCQkJfQoJCQkJcmV0dXJuIHVuZGVmaW5lZDsKCQkJ fTsKCQkJc3dpdGNoKHR5cGVvZiBibG9ja0lkKSB7CgkJCQljYXNlICJudW1iZXIi OgoJCQkJY2FzZSAic3RyaW5nIjoKCQkJCQlyZXR1cm4gZ2V0U2luZ2xlVGFibGUo YmxvY2tJZCk7CgkJCQlkZWZhdWx0OgoJCQkJCXZhciBibG9ja3MgPSBfdGhpcy5n ZXRCbG9ja3MoKTsKCQkJCQl2YXIgcmVzID0gW107CgkJCQkJZm9yICh2YXIgaSA9 IDA7IGkgPCBibG9ja3MubGVuZ3RoOyBpKyspIHsKCQkJCQkJdmFyIHRibCA9IGdl dFNpbmdsZVRhYmxlKGJsb2Nrc1tpXS5pZCk7CgkJCQkJCWlmICh0YmwpIHsKCQkJ CQkJCXJlcy5wdXNoKHRibCk7CgkJCQkJCX0KCQkJCQl9CgkJCQkJcmV0dXJuIChy ZXMubGVuZ3RoID4gMD9yZXM6dW5kZWZpbmVkKTsKCQkJfQoJCX07CgkJdGhpcy51 cGRhdGVVcmxQYXJhbUluVGQgPSBmdW5jdGlvbih0ZCwgcGFyYW0sIHZhbHVlKSB7 CgkJCXZhciB1cGRhdGVQYXJhbUluTGluayA9IGZ1bmN0aW9uKGxpbmssIHBhcmFt LCB2YWx1ZSkgewoJCQkJdmFyIGhyZWZUZXh0ID0gbGluay5nZXRBdHRyaWJ1dGUo ImhyZWYiKTsKCQkJCXZhciBsaW5rQ29udGVudCA9IGxpbmsuZmlyc3RDaGlsZC5u b2RlVmFsdWU7CgkJCQl2YXIgbmV3SHJlZjsKCQkJCWlmIChocmVmVGV4dC5pbmRl eE9mKCI/IikgPT09IC0xKSB7CgkJCQkJaHJlZlRleHQgPSBocmVmVGV4dCArICI/ YWRkaW5nUGFyYW1zIjsKCQkJCX0KCQkJCWlmIChocmVmVGV4dC5pbmRleE9mKCIm IiArIHBhcmFtICsgIj0iKSA9PT0gLTEpIHsKCQkJCQluZXdIcmVmID0gaHJlZlRl eHQgKyAiJiIgKyBwYXJhbSArICI9IiArIHZhbHVlOwoJCQkJCWxpbmsuc2V0QXR0 cmlidXRlKCJocmVmIiwgbmV3SHJlZik7CgkJCQkJbGluay5maXJzdENoaWxkLm5v ZGVWYWx1ZSA9IGxpbmtDb250ZW50OwoJCQkJCXRkLnNldEF0dHJpYnV0ZSgiX3Vy bCIsIG5ld0hyZWYpOwoJCQkJfSBlbHNlIHsKCQkJCQl2YXIgZmlyc3RQb3NpdGlv biA9IGhyZWZUZXh0LmluZGV4T2YoIiYiICsgcGFyYW0gKyAiPSIpICsgcGFyYW0u bGVuZ3RoICsgMTsKCQkJCQl2YXIgbGFzdFBvc2l0aW9uID0gaHJlZlRleHQuaW5k ZXhPZigiJiIsIGZpcnN0UG9zaXRpb24gKyAxKTsKCQkJCQlpZiAobGFzdFBvc2l0 aW9uID09PSAtMSkgewoJCQkJCQluZXdIcmVmID0gaHJlZlRleHQuc3Vic3RyaW5n KDAsIGZpcnN0UG9zaXRpb24gKyAxKSArIHZhbHVlOwoJCQkJCQlsaW5rLnNldEF0 dHJpYnV0ZSgiaHJlZiIsIG5ld0hyZWYpOwoJCQkJCQlsaW5rLmZpcnN0Q2hpbGQu bm9kZVZhbHVlID0gbGlua0NvbnRlbnQ7CgkJCQkJCXRkLnNldEF0dHJpYnV0ZSgi X3VybCIsIG5ld0hyZWYpOwoJCQkJCX0gZWxzZSB7CgkJCQkJCW5ld0hyZWYgPSBo cmVmVGV4dC5zdWJzdHJpbmcoMCwgZmlyc3RQb3NpdGlvbiArIDEpICsgdmFsdWUg KyBocmVmVGV4dC5zbGljZShsYXN0UG9zaXRpb24pOwoJCQkJCQlsaW5rLnNldEF0 dHJpYnV0ZSgiaHJlZiIsIG5ld0hyZWYpOwoJCQkJCQlsaW5rLmZpcnN0Q2hpbGQu bm9kZVZhbHVlID0gbGlua0NvbnRlbnQ7CgkJCQkJCXRkLnNldEF0dHJpYnV0ZSgi X3VybCIsIG5ld0hyZWYpOwoJCQkJCX0KCQkJCX0KCQkJfTsKCQkJdmFyIGxpbmtz SW5UZCA9IHRkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIik7CgkJCWZvciAodmFy IGkgPSAwLCBsZW4gPSBsaW5rc0luVGQubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsK CQkJCXVwZGF0ZVBhcmFtSW5MaW5rKGxpbmtzSW5UZFtpXSwgcGFyYW0sIHZhbHVl KTsKCQkJfQoJCX07CgkJdGhpcy5nZXRCbG9ja0hUTUwgPSBmdW5jdGlvbihiYW5u ZXJzX2h0bWxfYXJyLCBibG9jayl7CgkJCWlmICghYmFubmVyc19odG1sX2Fycikg cmV0dXJuICcnOwoJCQl2YXIgYmFubmVyc19odG1sID0gYmFubmVyc19odG1sX2Fy ci5qb2luKCcnKTsKCQkJdmFyIHN0dWJfZGlzcGxheSA9IE51bWJlcihfdGhpcy5y ZXNwb25zZVBhcmFtc1snc3R1YiddKSA/ICcnIDogJ25vbmUnOwoJCQlpZihibG9j ay5vcHRpb25zICYmICh0eXBlb2YgYmxvY2sub3B0aW9ucy5qc29uICE9ICd1bmRl ZmluZWQnKSAmJiAodHlwZW9mIGJsb2NrLm9wdGlvbnMuanNvbi5zdHViICE9ICd1 bmRlZmluZWQnKSkgewoJCQkJc3R1Yl9kaXNwbGF5ID0gTnVtYmVyKGJsb2NrLm9w dGlvbnMuanNvbi5zdHViKSA/ICcnIDogJ25vbmUnOwoJCQl9CgkJCXZhciBsb2dv X2Rpc3BsYXkgPSAnJzsKCQkJaWYoYmxvY2sub3B0aW9ucyAmJiAodHlwZW9mIGJs b2NrLm9wdGlvbnMuanNvbiAhPSAndW5kZWZpbmVkJykgJiYgKHR5cGVvZiBibG9j ay5vcHRpb25zLmpzb24ubG9nbyAhPSAndW5kZWZpbmVkJykpIHsKCQkJCWxvZ29f ZGlzcGxheSA9IChOdW1iZXIoYmxvY2sub3B0aW9ucy5qc29uLmxvZ28pKSA/ICcn IDogJ25vbmUnOwoJCQl9CgkJCXZhciBleHRlbmRlZF9ibG9ja19jbGFzcyA9ICcn OwoJCQlpZiAoc3R1Yl9kaXNwbGF5ID09ICdub25lJyAmJiBsb2dvX2Rpc3BsYXkg PT0gJ25vbmUnKSB7CgkJCQlleHRlbmRlZF9ibG9ja19jbGFzcyA9ICdiZWd1bl9l eHRlbmRlZF9ibG9jayc7CgkJCX0gZWxzZSBpZihzdHViX2Rpc3BsYXkgPT0gJ25v bmUnICYmIGxvZ29fZGlzcGxheSA9PSAnJykgewoJCQkJZXh0ZW5kZWRfYmxvY2tf Y2xhc3MgPSAnYmVndW5fZXh0ZW5kZWRfYmxvY2tfd2l0aF9sb2dvJzsKCQkJfQoJ CQkvLyBUT0RPOiBob3cgbWFueSBzdHVicyBhbmQgd2hpY2ggb25lcwoJCQl2YXIg dmFycyA9IHt9OwoJCQl2YXIgYmxvY2tfaG92ZXJfaHRtbCA9ICcnOwoJCQl2YXIg YmxvY2tfb3B0cyA9IGJsb2NrLm9wdGlvbnMudmlzdWFsIHx8IHt9OwoJCQlpZiAo YmxvY2tfb3B0cy5ibG9jayAmJiBibG9ja19vcHRzLmJsb2NrX2hvdmVyICYmIGJs b2NrX29wdHMuYmxvY2tfaG92ZXIuYmFja2dyb3VuZENvbG9yICYmIGJsb2NrX29w dHMuYmxvY2tfaG92ZXIuYm9yZGVyQ29sb3IpewoJCQkJdmFycy5iZ2NvbG9yX292 ZXIgPSBibG9ja19vcHRzLmJsb2NrX2hvdmVyLmJhY2tncm91bmRDb2xvcjsKCQkJ CXZhcnMuYnJkY29sb3Jfb3ZlciA9IGJsb2NrX29wdHMuYmxvY2tfaG92ZXIuYm9y ZGVyQ29sb3I7CgkJCQl2YXJzLmJnY29sb3Jfb3V0ID0gYmxvY2tfb3B0cy5ibG9j ay5iYWNrZ3JvdW5kQ29sb3IgfHwgJ3RyYW5zcGFyZW50JzsKCQkJCXZhcnMuYnJk Y29sb3Jfb3V0ID0gYmxvY2tfb3B0cy5ibG9jay5ib3JkZXJDb2xvciB8fCAndHJh bnNwYXJlbnQnOwoJCQkJdmFycy5ibG9ja19pZCA9IGJsb2NrLmlkOwoJCQkJYmxv Y2tfaG92ZXJfaHRtbCA9IChuZXcgQmVndW4uVGVtcGxhdGUoX3RoaXMuVHBscy5n ZXRIVE1MKCdibGNrX2hvdmVyJykpKS5ldmFsdWF0ZSh2YXJzKTsKCQkJfQoJCQl2 YXJzID0gewoJCQkJYmxvY2tfaWQ6IGJsb2NrLmlkLAoJCQkJYmxvY2tfaG92ZXI6 IGJsb2NrX2hvdmVyX2h0bWwsCgkJCQliYW5uZXJzOiBiYW5uZXJzX2h0bWwsCgkJ CQliYW5uZXJzX2NvdW50OgliYW5uZXJzX2h0bWxfYXJyLmxlbmd0aCwKCQkJCS8v YmVndW5fdXJsX2NvbHNwYW46IDMsCgkJCQlzY3JvbGxfZGl2X2lkOiBfdGhpcy5T dHJpbmdzLmNzcy5zY3JvbGxfZGl2X3ByZWZpeCArIGJsb2NrLmlkLAoJCQkJc2Ny b2xsX3RhYmxlX2lkOiBfdGhpcy5TdHJpbmdzLmNzcy5zY3JvbGxfdGFibGVfcHJl Zml4ICsgYmxvY2suaWQsCgkJCQlibG9ja193aWR0aDogTnVtYmVyKGJsb2NrLm9w dGlvbnMuZGltZW5zaW9ucy53aWR0aCkgPyBOdW1iZXIoYmxvY2sub3B0aW9ucy5k aW1lbnNpb25zLndpZHRoKSArICdweCcgOiAnJywKCQkJCWJsb2NrX3Njcm9sbF9j bGFzczogTnVtYmVyKGJsb2NrLm9wdGlvbnMudXNlX3Njcm9sbCkgPyBfdGhpcy5T dHJpbmdzLmNzcy5zY3JvbGwgOiAnJywKCQkJCWJlZ3VuX3VybDogX3RoaXMuU3Ry aW5ncy51cmxzLmJlZ3VuLAoJCQkJYmVjb21lX3BhcnRuZXJfZGlzcGxheTogc3R1 Yl9kaXNwbGF5LAoJCQkJYmVjb21lX3BhcnRuZXJfdXJsOiBfdGhpcy5nZXRTdHVi KCdiZWNvbWVfcGFydG5lcicpLAoJCQkJYmVjb21lX3BhcnRuZXJfdGV4dDogX3Ro aXMuU3RyaW5ncy5zdHVicy5iZWNvbWVfcGFydG5lciwKCQkJCXBsYWNlX2hlcmVf ZGlzcGxheTogc3R1Yl9kaXNwbGF5LAoJCQkJcGxhY2VfaGVyZV91cmw6IF90aGlz LmdldFN0dWIoJ3BsYWNlX2hlcmUnKSwKCQkJCXBsYWNlX2hlcmVfdGV4dDogX3Ro aXMuU3RyaW5ncy5zdHVicy5wbGFjZV9oZXJlLAoJCQkJYWxsX2Jhbm5lcnNfZGlz cGxheTogc3R1Yl9kaXNwbGF5LAoJCQkJYWxsX2Jhbm5lcnNfdXJsOiBfdGhpcy5n ZXRTdHViKCdhbGxfYmFubmVycycpLAoJCQkJYWxsX2Jhbm5lcnNfdGV4dDogX3Ro aXMuU3RyaW5ncy5zdHVicy5hbGxfYmFubmVycywKCQkJCWNzc190aHVtYm5haWxz OiBOdW1iZXIoYmxvY2sub3B0aW9ucy5zaG93X3RodW1ibmFpbHMpID8gX3RoaXMu U3RyaW5ncy5jc3MudGh1bWIgOiAnJywKCQkJCWxvZ29fZGlzcGxheTogbG9nb19k aXNwbGF5LAoJCQkJZXh0ZW5kZWRfYmxvY2tfY2xhc3M6IGV4dGVuZGVkX2Jsb2Nr X2NsYXNzCgkJCX07CgkJCXZhciBpc191c2VfYWNjb3JkaW9uID0gTnVtYmVyKGJs b2NrLm9wdGlvbnMudXNlX2FjY29yZGlvbikgPyAnX3VzZV9hY2NvcmRpb24nIDog Jyc7CgkJCXJldHVybiAobmV3IEJlZ3VuLlRlbXBsYXRlKF90aGlzLlRwbHMuZ2V0 SFRNTCgnYmxvY2tfJyArIGJsb2NrLm9wdGlvbnMuZGltZW5zaW9ucy50eXBlLnRv TG93ZXJDYXNlKCkgKyBpc191c2VfYWNjb3JkaW9uKSkpLmV2YWx1YXRlKHZhcnMp OwoJCX07CgkJdGhpcy5jbGlja0hhbmRsZXIgPSBmdW5jdGlvbih0YXJnZXRUZCkg ewoJCQlyZXR1cm4gZnVuY3Rpb24oKSB7CgkJCQl2YXIgbm93VGltZSA9IChuZXcg RGF0ZSkudmFsdWVPZigpOwoJCQkJdGhpcy51cGRhdGVVcmxQYXJhbUluVGQodGFy Z2V0VGQsICJjbGlja190aW1lIiwgbm93VGltZSk7CgkJCQl0aGlzLnVwZGF0ZVVy bFBhcmFtSW5UZCh0YXJnZXRUZCwgImZyYW1lX2xldmVsIiwgX3RoaXMucmVxdWVz dFBhcmFtcy5mcm1fbGV2ZWwpOwoJCQl9OwoJCX07CgkJdGhpcy5wcmludEJsb2Nr ID0gZnVuY3Rpb24oYmFubmVyc19odG1sLCBibG9jayl7CgkJCWlmIChiYW5uZXJz X2h0bWwubGVuZ3RoKXsKCQkJCXZhciByZWdFdmVudHMgPSBmdW5jdGlvbigpIHsK CQkJCQlpZiAoIV90aGlzLmlzRXZlbnRUcmFja2luZ09uKCkpIHsKCQkJCQkJcmV0 dXJuIHVuZGVmaW5lZDsKCQkJCQl9CgkJCQkJdmFyIG1vdXNlT3ZlckhhbmRsZXIg PSBmdW5jdGlvbih0YXJnZXRUZCkgewoJCQkJCQlyZXR1cm4gZnVuY3Rpb24oZSkg ewoJCQkJCQkJaWYgKCFlKSB7CgkJCQkJCQkJdmFyIGUgPSB3aW5kb3cuZXZlbnQ7 CgkJCQkJCQl9CgkJCQkJCQl2YXIgcmVsVGFyZ2V0ID0gZS5yZWxhdGVkVGFyZ2V0 IHx8IGUuZnJvbUVsZW1lbnQ7CgkJCQkJCQlpZiAocmVsVGFyZ2V0ID09PSB0YXJn ZXRUZCkgewoJCQkJCQkJCXJldHVybjsKCQkJCQkJCX0KCQkJCQkJCXZhciB0ZEVs ZW1lbnRzID0gdGFyZ2V0VGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKTsKCQkJ CQkJCWZvciAodmFyIGkgPSAwOyBpIDwgdGRFbGVtZW50cy5sZW5ndGg7IGkrKykg ewoJCQkJCQkJCWlmICh0ZEVsZW1lbnRzW2ldID09PSByZWxUYXJnZXQpIHsKCQkJ CQkJCQkJcmV0dXJuOwoJCQkJCQkJCX0KCQkJCQkJCX0KCQkJCQkJCWlmICghYXJn dW1lbnRzLmNhbGxlZS5jb3VudCkgewoJCQkJCQkJCWFyZ3VtZW50cy5jYWxsZWUu Y291bnQgPSAxOwoJCQkJCQkJfQoJCQkJCQkJdmFyIG5vd1RpbWUgPSAobmV3IERh dGUpLnZhbHVlT2YoKTsKCQkJCQkJCV90aGlzLnVwZGF0ZVVybFBhcmFtSW5UZCh0 YXJnZXRUZCwgIm1vdXNlb3Zlcl90aW1lIiwgbm93VGltZSk7CgkJCQkJCQlfdGhp cy51cGRhdGVVcmxQYXJhbUluVGQodGFyZ2V0VGQsICJtb3VzZW92ZXJfY291bnQi LCBhcmd1bWVudHMuY2FsbGVlLmNvdW50KyspOwoJCQkJCQl9OwoJCQkJCX07CgkJ CQkJdmFyIG1vdXNlRG93bkhhbmRsZXIgPSBmdW5jdGlvbih0YXJnZXRUZCkgewoJ CQkJCQlyZXR1cm4gZnVuY3Rpb24oKSB7CgkJCQkJCQl2YXIgbm93VGltZSA9IChu ZXcgRGF0ZSkudmFsdWVPZigpOwoJCQkJCQkJX3RoaXMudXBkYXRlVXJsUGFyYW1J blRkKHRhcmdldFRkLCAibW91c2Vkb3duX3RpbWUiLCBub3dUaW1lKTsKCQkJCQkJ fTsKCQkJCQl9OwoJCQkJCXZhciB0ZHMgPSBfdGhpcy5nZXRUYWJsZVdpdGhBZHMo YmxvY2suaWQpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpOwoJCQkJCXZhciBz aG93VGltZSA9IChuZXcgRGF0ZSkudmFsdWVPZigpOwoJCQkJCWZvciAodmFyIGkg PSAwOyBpIDwgdGRzLmxlbmd0aDsgaSsrKSB7CgkJCQkJCV90aGlzLnVwZGF0ZVVy bFBhcmFtSW5UZCh0ZHNbaV0sICJzaG93X3RpbWUiLCBzaG93VGltZSk7CgkJCQkJ CUJlZ3VuLlV0aWxzLmFkZEV2ZW50KHRkc1tpXSwgIm1vdXNlb3ZlciIsIG1vdXNl T3ZlckhhbmRsZXIodGRzW2ldKSk7CgkJCQkJCUJlZ3VuLlV0aWxzLmFkZEV2ZW50 KHRkc1tpXSwgIm1vdXNlZG93biIsIG1vdXNlRG93bkhhbmRsZXIodGRzW2ldKSk7 CgkJCQkJfQoJCQkJfTsKCQkJCXZhciBlbGVtID0gX3RoaXMuQmxvY2tzLmdldERv bU9iaihibG9jay5pZCk7CgkJCQkvLyBtaWdodCBiZSBhbHNvIG51bGwgaW4gYmFk IGh0bWwgKGFsbCBicm93c2VycyBhcmUgYWZmZWN0ZWQpCgkJCQlpZiAoIWVsZW0p ewoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0KCQkJCXRoaXMuc2V0RXh0cmFCbG9j a1Jlc3BvbnNlUGFyYW1zKGJsb2NrKTsKCQkJCV90aGlzLmRvbV9jaGFuZ2UgPSB0 cnVlOwoJCQkJdmFyIGh0bWwgPSBfdGhpcy5nZXRCbG9ja0hUTUwoYmFubmVyc19o dG1sLCBibG9jayk7CgkJCQl2YXIgc2hvdyA9IHNob3dEZWZhdWx0ID0gZnVuY3Rp b24oZWxlbSwgaHRtbCl7CgkJCQkJZWxlbS5pbm5lckhUTUwgPSBodG1sOwoJCQkJ CV90aGlzLmRvbV9jaGFuZ2UgPSBmYWxzZTsKCQkJCQlyZWdFdmVudHMoKTsKCQkJ CX07CgoJCQkJLy8gZml4IG1vc3QgY29tbW9uIHBhcnRuZXIgbWlzdGFrZXMgZm9y IGllCgkJCQlpZiAoQmVndW4uQnJvd3Nlci5JRSl7CgkJCQkJc2hvdyA9IGZ1bmN0 aW9uKGVsZW0sIGh0bWwpewoJCQkJCQl2YXIgbiA9IGVsZW0uY2xvbmVOb2RlKHRy dWUpOwoJCQkJCQluLmlubmVySFRNTCA9IGh0bWw7CgkJCQkJCWVsZW0ucGFyZW50 Tm9kZS5pbnNlcnRCZWZvcmUobik7CgkJCQkJCWVsZW0ucGFyZW50Tm9kZS5yZW1v dmVDaGlsZChlbGVtKTsKCQkJCQkJX3RoaXMuZG9tX2NoYW5nZSA9IGZhbHNlOwoJ CQkJCQlyZWdFdmVudHMoKTsKCQkJCQl9CgkJCQkJdmFyIGFwcGVuZFRhYmxlQ2Vs bCA9IGZ1bmN0aW9uKHRyLCBlbGVtKXsKCQkJCQkJaWYgKHRyLm9mZnNldEhlaWdo dCl7CgkJCQkJCQl2YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcp OwoJCQkJCQkJdHIuYXBwZW5kQ2hpbGQodGQpOwoJCQkJCQkJdGQuaW5uZXJIVE1M ID0gZWxlbS5vdXRlckhUTUw7CgkJCQkJCQlzaG93KHRkLmZpcnN0Q2hpbGQsIGh0 bWwpOwoJCQkJCQkJZWxlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW0pOwoJ CQkJCQl9IGVsc2UgewoJCQkJCQkJdmFyIGZ1bmMgPSBhcmd1bWVudHMuY2FsbGVl OwoJCQkJCQkJd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXsKCQkJCQkJCQlm dW5jKHRyLCBlbGVtKTsKCQkJCQkJCX0sIEJlZ3VuLkRPTV9USU1FT1VUKTsKCQkJ CQkJfQoJCQkJCX0KCQkJCQl2YXIgcGFyZW50ID0gbnVsbDsKCQkJCQlpZiAoKHBh cmVudCA9IGVsZW0ucGFyZW50Tm9kZSkgJiYgKHBhcmVudC50YWdOYW1lKSAmJiAo QmVndW4uVXRpbHMuaW5fYXJyYXkoWydvbCcsICd1bCcsICdsaSddLCBwYXJlbnQu dGFnTmFtZS50b0xvd2VyQ2FzZSgpKSkpewoJCQkJCQl3aW5kb3cuc2V0VGltZW91 dChmdW5jdGlvbigpewoJCQkJCQkJdmFyIHBhcmVudDIgPSBwYXJlbnQucGFyZW50 Tm9kZTsKCQkJCQkJCXBhcmVudDIuaW5zZXJ0QmVmb3JlKGVsZW0sIHBhcmVudCk7 CgkJCQkJCQlzaG93RGVmYXVsdChlbGVtLCBodG1sKTsKCQkJCQkJfSwgQmVndW4u RE9NX1RJTUVPVVQpOwoJCQkJCX0gZWxzZSBpZiAoKHBhcmVudCkgJiYgKHBhcmVu dCA9IGVsZW0ucGFyZW50Tm9kZS5wYXJlbnROb2RlKSAmJiAocGFyZW50LnRhZ05h bWUpKXsKCQkJCQkJdHJ5ewoJCQkJCQkJc2hvdyhlbGVtLCBodG1sKTsKCQkJCQkJ fWNhdGNoKGUpewoJCQkJCQkJc3dpdGNoIChwYXJlbnQudGFnTmFtZS50b0xvd2Vy Q2FzZSgpKXsKCQkJCQkJCQljYXNlICd0YWJsZSc6CgkJCQkJCQkJCXZhciB0ciA9 IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCQkJCQkJCXdpbmRvdy5z ZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CgkJCQkJCQkJCQlwYXJlbnQubGFzdENoaWxk LmFwcGVuZENoaWxkKHRyKTsgLy8gYXBwZW5kIHRvIChpbXBsaWVkKSB0Ym9keQoJ CQkJCQkJCQkJYXBwZW5kVGFibGVDZWxsKHRyLCBlbGVtKTsKCQkJCQkJCQkJfSwg QmVndW4uRE9NX1RJTUVPVVQpOwoJCQkJCQkJCQlicmVhazsKCQkJCQkJCQljYXNl ICd0cic6CgkJCQkJCQkJCXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CgkJ CQkJCQkJCQlhcHBlbmRUYWJsZUNlbGwocGFyZW50LCBlbGVtKTsKCQkJCQkJCQkJ fSwgQmVndW4uRE9NX1RJTUVPVVQpOwoJCQkJCQkJCQlicmVhazsKCQkJCQkJCQlj YXNlICd0aGVhZCc6CgkJCQkJCQkJY2FzZSAndGJvZHknOgoJCQkJCQkJCWNhc2Ug J3Rmb290JzoKCQkJCQkJCQkJdmFyIHRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu dCgndHInKTsKCQkJCQkJCQkJd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXsK CQkJCQkJCQkJCXBhcmVudC5hcHBlbmRDaGlsZCh0cik7IC8vIGFwcGVuZCB0byB0 aGVhZC90Ym9keS90Zm9vdAoJCQkJCQkJCQkJYXBwZW5kVGFibGVDZWxsKHRyLCBl bGVtKTsKCQkJCQkJCQkJfSwgQmVndW4uRE9NX1RJTUVPVVQpOwoJCQkJCQkJCQli cmVhazsKCQkJCQkJCQlkZWZhdWx0OgoJCQkJCQkJCQlfdGhpcy5kb21fY2hhbmdl ID0gZmFsc2U7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQl9IGVsc2UgewoJCQkJCQl0 cnl7CgkJCQkJCQlzaG93KGVsZW0sIGh0bWwpOwoJCQkJCQl9Y2F0Y2goZSl7CgkJ CQkJCQlfdGhpcy5kb21fY2hhbmdlID0gZmFsc2U7CgkJCQkJCX0KCQkJCQl9CgkJ CQl9IGVsc2UgewoJCQkJCXNob3coZWxlbSwgaHRtbCk7CgkJCQl9CgkJCQlyZXR1 cm4gdHJ1ZTsKCQkJfSBlbHNlIHsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX07 CgkJdGhpcy5oaWRlQmxvY2sgPSBmdW5jdGlvbihibG9ja19pZCl7CgkJCXZhciBl bGVtID0gX3RoaXMuQmxvY2tzLmdldERvbU9iaihibG9ja19pZCk7CgkJCWlmIChl bGVtKXsKCQkJCWVsZW0uaW5uZXJIVE1MID0gJyc7CgkJCX0KCQl9OwoJCXRoaXMu ZmlsbEJsb2NrcyA9IGZ1bmN0aW9uKCl7CgkJCXZhciBpc1ZhbGlkU3F1YXJlQmxv Y2sgPSBmdW5jdGlvbihibG9jaykgewoJCQkJcmV0dXJuIChfdGhpcy5CbG9ja3Mu Y2hlY2tUeXBlKGJsb2NrLCAnc3F1YXJlJykgJiYgYmxvY2sub3B0aW9ucy5qc29u ICYmIGJsb2NrLm9wdGlvbnMuanNvbi5yb3cgJiYgYmxvY2sub3B0aW9ucy5qc29u LmNvbCk7CgkJCX07CgkJCXZhciBibG9jayA9IG51bGw7CgkJCXZhciBibG9ja19p bmRleCA9IDA7CgkJCXZhciBvdXRfb2ZfYmFubmVycyA9IGZhbHNlOwoJCQl2YXIg cGFkID0gX3RoaXMuZ2V0UGFkKCk7CgkJCXdoaWxlICgoYmxvY2sgPSBfdGhpcy5n ZXRCbG9jayhibG9ja19pbmRleCkpICYmICghb3V0X29mX2Jhbm5lcnMpKXsKCQkJ CWlmIChibG9jay5sb2FkZWQgfHwgX3RoaXMuQmxvY2tzLmlzRGVsZXRlZChibG9j aykpewoJCQkJCWJsb2NrX2luZGV4Kys7CgkJCQkJY29udGludWU7CgkJCQl9CgkJ CQlpZihCZWd1bi5VdGlscy5pbkxpc3QoKGJsb2NrLm9wdGlvbnMgJiYgYmxvY2su b3B0aW9ucy5ibG9ja19vcHRpb25zKSwgJ0pTQ2F0YWxvZycpKSB7CgkJCQkJdmFy IGluaXRBdXRvQ2F0YWxvZyA9IGZ1bmN0aW9uKGJsb2NrKSB7CgkJCQkJCWlmICgh QmVndW4uQ2F0YWxvZyB8fCAhQmVndW4uJChfdGhpcy5TdHJpbmdzLmNzcy5jYXRh bG9nX3NlYXJjaF93cmFwcGVyKSB8fCAhQmVndW4uJChfdGhpcy5TdHJpbmdzLmNz cy5jYXRhbG9nX3Jlc3VsdHNfd3JhcHBlcikgfHwgIUJlZ3VuLiQoX3RoaXMuU3Ry aW5ncy5jc3MuY2F0YWxvZ19jbG91ZF93cmFwcGVyKSB8fCBfdGhpcy5kb21fY2hh bmdlKXsKCQkJCQkJCXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewoJCQkJ CQkJCWluaXRBdXRvQ2F0YWxvZyhibG9jayk7CgkJCQkJCQl9LCBCZWd1bi5ET01f VElNRU9VVCk7CgkJCQkJCX0gZWxzZSB7CgkJCQkJCQlfdGhpcy5pbml0QXV0b0Nh dGFsb2dCbG9jayhibG9jayk7CgkJCQkJCX0KCQkJCQl9CgkJCQkJaW5pdEF1dG9D YXRhbG9nKGJsb2NrKTsKCQkJCQlibG9jay5sb2FkZWQgPSB0cnVlOwoJCQkJCWJs b2NrX2luZGV4Kys7CgkJCQkJY29udGludWU7CgkJCQl9CgkJCQl2YXIgYmFubmVy c19odG1sID0gW107CgkJCQl2YXIgYmxvY2tfYmFubmVyX2NvdW50ID0gMDsKCQkJ CXZhciBiYW5uZXIgPSBudWxsOwoJCQkJdGhpcy5zZXRFeHRyYUJsb2NrUmVzcG9u c2VQYXJhbXMoYmxvY2spOwoJCQkJaWYgKE51bWJlcihibG9jay5vcHRpb25zLnVz ZV9zY3JvbGwpICYmIChOdW1iZXIoYmxvY2sub3B0aW9ucy51c2VfYWNjb3JkaW9u KSB8fCBfdGhpcy5CbG9ja3MuY2hlY2tUeXBlKGJsb2NrLCAndG9wJykgfHwgX3Ro aXMuQmxvY2tzLmNoZWNrVHlwZShibG9jaywgJ3JpY2gnKSkpewoJCQkJCWJsb2Nr Lm9wdGlvbnMudXNlX3Njcm9sbCA9IDA7CgkJCQl9CgkJCQlpZiAoX3RoaXMudXNl QmxvY2tJZERpc3RyKCkpewoJCQkJCXZhciBpID0gMDsKCQkJCQl2YXIgYmFubmVy c19jb3VudCA9IF90aGlzLmdldEFjdHVhbEJsb2NrQmFubmVyc0NvdW50KGJsb2Nr KTsKCQkJCQl3aGlsZSAoYmFubmVyID0gX3RoaXMuZ2V0QmFubmVyKCdhdXRvY29u dGV4dCcsIGkpKXsKCQkJCQkJaWYgKGJhbm5lci5ibG9ja19pZCAmJiBiYW5uZXIu YmxvY2tfaWQgPT0gYmxvY2suaWQpewoJCQkJCQkJdmFyIGJhbm5lcl9odG1sID0g Jyc7CgkJCQkJCQlpZiAoaXNWYWxpZFNxdWFyZUJsb2NrKGJsb2NrKSkgewoJCQkJ CQkJCWlmKGJsb2NrX2Jhbm5lcl9jb3VudCAlIE51bWJlcihibG9jay5vcHRpb25z Lmpzb24uY29sKSA9PSAwKSB7CgkJCQkJCQkJCWJhbm5lcl9odG1sICs9ICc8dHI+ JzsKCQkJCQkJCQl9CgkJCQkJCQkJYmFubmVyX2h0bWwgKz0gX3RoaXMuZ2V0QmFu bmVySFRNTChiYW5uZXIsIGJsb2NrLCAoYmxvY2tfYmFubmVyX2NvdW50ICsgMSkp OwoJCQkJCQkJCWlmKChibG9ja19iYW5uZXJfY291bnQgKyAxKSAlIE51bWJlcihi bG9jay5vcHRpb25zLmpzb24uY29sKSA9PSAwKSB7CgkJCQkJCQkJCWJhbm5lcl9o dG1sICs9ICc8L3RyPic7CgkJCQkJCQkJfQoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJ CQliYW5uZXJfaHRtbCA9IF90aGlzLmdldEJhbm5lckhUTUwoYmFubmVyLCBibG9j aywgKGJsb2NrX2Jhbm5lcl9jb3VudCArIDEpKTsKCQkJCQkJCX0KCQkJCQkJCWlm IChiYW5uZXJfaHRtbCl7CgkJCQkJCQkJYmFubmVyc19odG1sLnB1c2goYmFubmVy X2h0bWwpOwoJCQkJCQkJCV90aGlzLkNhbGxiYWNrcy5kaXNwYXRjaCgnYmFubmVy JywgJ2RyYXcnLCBfdGhpcywgW2Jhbm5lcl0pOwoJCQkJCQkJCV90aGlzLnJlZ2lz dGVyU2hvd25CYW5uZXIoYmFubmVyKTsKCQkJCQkJCX0KCQkJCQkJCWJsb2NrX2Jh bm5lcl9jb3VudCsrOwoJCQkJCQl9CgkJCQkJCWkrKzsKCQkJCQl9CgkJCQl9IGVs c2UgewoJCQkJCXZhciBiYW5uZXJzX2NvdW50ID0gX3RoaXMuZ2V0QWN0dWFsQmxv Y2tCYW5uZXJzQ291bnQoYmxvY2spOwoJCQkJCXdoaWxlICgoYmxvY2tfYmFubmVy X2NvdW50IDwgYmFubmVyc19jb3VudCkgJiYgKF90aGlzLmdldEJhbm5lckluZGV4 KCkgPCBfdGhpcy5vcHRpb25zLm1heF9iYW5uZXJzX2NvdW50KSl7CgkJCQkJCWJh bm5lciA9IF90aGlzLmdldEJhbm5lcignYXV0b2NvbnRleHQnLCBfdGhpcy5nZXRC YW5uZXJJbmRleCgpKSB8fCBudWxsOwoJCQkJCQlpZiAoYmFubmVyKXsKCQkJCQkJ CXZhciBiYW5uZXJfaHRtbCA9ICcnOwoJCQkJCQkJaWYgKGlzVmFsaWRTcXVhcmVC bG9jayhibG9jaykpIHsKCQkJCQkJCQlpZihibG9ja19iYW5uZXJfY291bnQgJSBO dW1iZXIoYmxvY2sub3B0aW9ucy5qc29uLmNvbCkgPT0gMCkgewoJCQkJCQkJCQli YW5uZXJfaHRtbCArPSAnPHRyPic7CgkJCQkJCQkJfQoJCQkJCQkJCWJhbm5lcl9o dG1sICs9IF90aGlzLmdldEJhbm5lckhUTUwoYmFubmVyLCBibG9jaywgKGJsb2Nr X2Jhbm5lcl9jb3VudCArIDEpKTsKCQkJCQkJCQlpZigoYmxvY2tfYmFubmVyX2Nv dW50ICsgMSkgJSBOdW1iZXIoYmxvY2sub3B0aW9ucy5qc29uLmNvbCkgPT0gMCkg ewoJCQkJCQkJCQliYW5uZXJfaHRtbCArPSAnPC90cj4nOwoJCQkJCQkJCX0KCQkJ CQkJCX0gZWxzZSB7CgkJCQkJCQkJYmFubmVyX2h0bWwgPSBfdGhpcy5nZXRCYW5u ZXJIVE1MKGJhbm5lciwgYmxvY2ssIChibG9ja19iYW5uZXJfY291bnQgKyAxKSk7 CgkJCQkJCQl9CgkJCQkJCQlpZiAoYmFubmVyX2h0bWwpewoJCQkJCQkJCWJhbm5l cnNfaHRtbC5wdXNoKGJhbm5lcl9odG1sKTsKCQkJCQkJCQlfdGhpcy5DYWxsYmFj a3MuZGlzcGF0Y2goJ2Jhbm5lcicsICdkcmF3JywgX3RoaXMsIFtiYW5uZXJdKTsK CQkJCQkJCQlfdGhpcy5yZWdpc3RlclNob3duQmFubmVyKGJhbm5lcik7CgkJCQkJ CQl9CgkJCQkJCX0gZWxzZSB7CgkJCQkJCQlvdXRfb2ZfYmFubmVycyA9IHRydWU7 CgkJCQkJCQlicmVhazsKCQkJCQkJfQoJCQkJCQlibG9ja19iYW5uZXJfY291bnQr KzsKCQkJCQkJX3RoaXMuaW5jQmFubmVySW5kZXgoKTsKCQkJCQl9CgkJCQl9CgkJ CQlpZihpc1ZhbGlkU3F1YXJlQmxvY2soYmxvY2spICYmIGJsb2NrX2Jhbm5lcl9j b3VudCA8IGJhbm5lcnNfY291bnQgJiYgYmxvY2tfYmFubmVyX2NvdW50ICE9IDAp IHsKCQkJCQlmb3IoYmxvY2tfYmFubmVyX2NvdW50OyBibG9ja19iYW5uZXJfY291 bnQ8YmFubmVyc19jb3VudDsgYmxvY2tfYmFubmVyX2NvdW50KyspIHsKCQkJCQkJ dmFyIGJhbm5lcl9odG1sID0gJyc7CgkJCQkJCWlmKGJsb2NrX2Jhbm5lcl9jb3Vu dCAlIE51bWJlcihibG9jay5vcHRpb25zLmpzb24uY29sKSA9PSAwKSB7CgkJCQkJ CQliYW5uZXJfaHRtbCArPSAnPHRyPic7CgkJCQkJCX0KCQkJCQkJYmFubmVyX2h0 bWwgKz0gJzx0ZD4mbmJzcDs8L3RkPic7CgkJCQkJCWlmKChibG9ja19iYW5uZXJf Y291bnQgKyAxKSAlIE51bWJlcihibG9jay5vcHRpb25zLmpzb24uY29sKSA9PSAw KSB7CgkJCQkJCQliYW5uZXJfaHRtbCArPSAnPC90cj4nOwoJCQkJCQl9CgkJCQkJ CWJhbm5lcnNfaHRtbC5wdXNoKGJhbm5lcl9odG1sKTsKCQkJCQl9CgkJCQl9CgkJ CQlpZiAoX3RoaXMucHJpbnRCbG9jayhiYW5uZXJzX2h0bWwsIGJsb2NrKSl7CgkJ CQkJYmxvY2subG9hZGVkID0gdHJ1ZTsKCQkJCQlfdGhpcy5sb2FkTW9kdWxlcyhi bG9jayk7CgkJCQl9CgkJCQlibG9ja19pbmRleCsrOwoJCQl9CgkJfTsKCQl0aGlz LmxvYWRNb2R1bGVzID0gZnVuY3Rpb24oYmxvY2spIHsKCQkJdmFyIGluaXRFeHRy YU1vZHVsZSA9IGZ1bmN0aW9uKG9iak5hbWUsIGZ1bmMpIHsKCQkJCWlmICghd2lu ZG93LkJlZ3VuW29iak5hbWVdIHx8IF90aGlzLmRvbV9jaGFuZ2UpIHsKCQkJCQl3 aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKCQkJCQkJaW5pdEV4dHJhTW9k dWxlKG9iak5hbWUsIGZ1bmMpOwoJCQkJCX0sIEJlZ3VuLkRPTV9USU1FT1VUKTsK CQkJCX0gZWxzZSB7CgkJCQkJZnVuYyhibG9jayk7CgkJCQl9CgkJCX0KCQkJaWYg KE51bWJlcihibG9jay5vcHRpb25zLnVzZV9zY3JvbGwpKSB7CgkJCQlpbml0RXh0 cmFNb2R1bGUoJ1Njcm9sbGVyJywgX3RoaXMuaW5pdFNjcm9sbEJsb2NrKTsKCQkJ fSBlbHNlIGlmIChOdW1iZXIoYmxvY2sub3B0aW9ucy51c2VfYWNjb3JkaW9uKSkg ewoJCQkJaW5pdEV4dHJhTW9kdWxlKCdBY2NvcmRpb24nLCBfdGhpcy5pbml0QWNj b3JkaW9uQmxvY2spOwoJCQl9IGVsc2UgaWYgKF90aGlzLkJsb2Nrcy5jaGVja1R5 cGUoYmxvY2ssICd0b3AnKSkgewoJCQkJaW5pdEV4dHJhTW9kdWxlKCdhdXRvVG9w JywgX3RoaXMuaW5pdEF1dG9Ub3BCbG9jayk7CgkJCX0gZWxzZSBpZiAoX3RoaXMu QmxvY2tzLmNoZWNrVHlwZShibG9jaywgJ3JpY2gnKSB8fCBfdGhpcy5CbG9ja3Mu Y2hlY2tWaWV3VHlwZShibG9jaywgJ3JpY2gnKSkgewoJCQkJaW5pdEV4dHJhTW9k dWxlKCdyaWNoQmxvY2tzJywgX3RoaXMuaW5pdEF1dG9SaWNoQmxvY2spOwoJCQl9 CgkJfTsKCQl0aGlzLm51bGxHbG9iYWxCbG9ja1BhcmFtcyA9IGZ1bmN0aW9uKCl7 CgkJCXdpbmRvdy5iZWd1bl9ibG9ja19pZCA9IG51bGw7CgkJCXdpbmRvdy5iZWd1 bl9leHRyYV9ibG9jayA9IG51bGw7CgkJfTsKCQl0aGlzLnNldEV4dHJhQmxvY2tS ZXNwb25zZVBhcmFtcyA9IGZ1bmN0aW9uKGJsb2NrKXsKCQkJYmxvY2sub3B0aW9u cy51c2Vfc2Nyb2xsID0gdHlwZW9mIGJsb2NrLm9wdGlvbnMudXNlX3Njcm9sbCAh PSAnbnVtYmVyJyA/IE51bWJlcihfdGhpcy5yZXNwb25zZVBhcmFtc1snYXV0b3Nj cm9sbCddKSA6IGJsb2NrLm9wdGlvbnMudXNlX3Njcm9sbDsKCQkJYmxvY2sub3B0 aW9ucy5zaG93X3RodW1ibmFpbHMgPSB0eXBlb2YgYmxvY2sub3B0aW9ucy5zaG93 X3RodW1ibmFpbHMgIT0gJ251bWJlcicgfHwgaXNOYU4oYmxvY2sub3B0aW9ucy5z aG93X3RodW1ibmFpbHMpID8gTnVtYmVyKF90aGlzLnJlc3BvbnNlUGFyYW1zWyd0 aHVtYnMnXSkgOiBibG9jay5vcHRpb25zLnNob3dfdGh1bWJuYWlsczsKCQl9OwoJ fTsKCQoJKGZ1bmN0aW9uKCl7CgkJdmFyIGFjID0gQmVndW4uQXV0b2NvbnRleHQ7 CgkJCgkJYWMuTW9uaXRvciA9IG5ldyBmdW5jdGlvbigpewoJCQl2YXIgX3RoaXMg PSB0aGlzOwoJCQl0aGlzLmluaXQgPSBmdW5jdGlvbigpIHsKCQkJCUJlZ3VuLlV0 aWxzLmFkZEV2ZW50KHdpbmRvdywgJ2xvYWQnLCBmdW5jdGlvbigpIHsKCQkJCQlf dGhpcy5wcmVwYXJlKCk7CgkJCQl9KTsKCQkJCUJlZ3VuLlV0aWxzLmFkZEV2ZW50 KHdpbmRvdywgJ3VubG9hZCcsIGZ1bmN0aW9uKCkgewoJCQkJCV90aGlzLnNlbmQo KTsKCQkJCX0pOwoJCQkJQmVndW4uVXRpbHMuYWRkRXZlbnQod2luZG93LCAnc2Ny b2xsJywgZnVuY3Rpb24oKSB7CgkJCQkJX3RoaXMuY291bnQoKTsKCQkJCX0pOwoJ CQl9OwoJCQl0aGlzLnByZXBhcmUgPSBmdW5jdGlvbigpIHsKCQkJCXZhciBwYWRz ID0gYWMuUGFkcy5nZXRQYWRzKCk7CgkJCQlmb3IodmFyIG49MCwgbG49cGFkcy5s ZW5ndGg7IG48bG47IG4rKykgewoJCQkJCWZvcih2YXIgaT0wLCBsZW5ndGg9cGFk c1tuXS5ibG9ja3MubGVuZ3RoOyBpPGxlbmd0aDsgaSsrKSB7CgkJCQkJCXZhciBk b21fb2JqID0gYWMuQmxvY2tzLmdldERvbU9iaihwYWRzW25dLmJsb2Nrc1tpXS5p ZCk7CgkJCQkJCWlmIChhYy5CbG9ja3MuaXNEZWxldGVkKHBhZHNbbl0uYmxvY2tz W2ldKSB8fCAhZG9tX29iaikgewoJCQkJCQkJY29udGludWU7CgkJCQkJCX0KCQkJ CQkJcGFkc1tuXS5ibG9ja3NbaV0udW5zZWVuID0gZmFsc2U7CgkJCQkJCXBhZHNb bl0uYmxvY2tzW2ldLmRvbV9vYmogPSBkb21fb2JqOwoJCQkJCQl2YXIgYmFubmVy c19pZCA9IFtdOwoJCQkJCQl2YXIgdGRzID0gZG9tX29iai5nZXRFbGVtZW50c0J5 VGFnTmFtZSgndGQnKTsKCQkJCQkJZm9yICh2YXIgaz0wLCBsPXRkcy5sZW5ndGg7 IGs8bDsgaysrKSB7CgkJCQkJCQlpZih0ZHNba10uZ2V0QXR0cmlidXRlKCdfYmFu bmVyX2lkJykgJiYgdGRzW2tdLmdldEF0dHJpYnV0ZSgnX2Jhbm5lcl9pZCcpIT0n JyAmJiB0eXBlb2YgKHRkc1trXS5nZXRBdHRyaWJ1dGUoJ19iYW5uZXJfaWQnKSkh PXVuZGVmaW5lZCkgewoJCQkJCQkJCWJhbm5lcnNfaWRbYmFubmVyc19pZC5sZW5n dGhdID0gdGRzW2tdLmdldEF0dHJpYnV0ZSgnX2Jhbm5lcl9pZCcpOwoJCQkJCQkJ fQoJCQkJCQl9CgkJCQkJCXBhZHNbbl0uYmxvY2tzW2ldLmJhbm5lcnNfaWQgPSBi YW5uZXJzX2lkLmpvaW4oJywnKTsKCQkJCQl9CgkJCQl9CgkJCQl0aGlzLmNvdW50 KCk7CgkJCX07CgkJCXRoaXMuY291bnQgPSBmdW5jdGlvbigpIHsKCQkJCXZhciBk YXRhID0gW107CgkJCQl2YXIgcGFkcyA9IGFjLlBhZHMuZ2V0UGFkcygpOwoJCQkJ Zm9yKHZhciBuPTAsIGxuPXBhZHMubGVuZ3RoOyBuPGxuOyBuKyspIHsKCQkJCQl2 YXIgdW5zZWVuQmFubmVyc09iaiA9IFtdOwoJCQkJCXZhciBzZWVuQmFubmVyc09i aiA9IFtdOwoJCQkJCWZvcih2YXIgaT0wLCBsPXBhZHNbbl0uYmxvY2tzLmxlbmd0 aDsgaTxsOyBpKyspIHsKCQkJCQkJdmFyIHZpZXdwb3J0aGVpZ2h0ID0gQmVndW4u VXRpbHMuY291bnRXaW5kb3dTaXplKCkuaGVpZ2h0OwoJCQkJCQl2YXIgc2Nyb2xs ZWRPZlkgPSBCZWd1bi5VdGlscy5nZXRTY3JvbGxYWSgpLnk7CgkJCQkJCXZhciBk b21fb2JqID0gcGFkc1tuXS5ibG9ja3NbaV0uZG9tX29iajsKCQkJCQkJaWYgKGRv bV9vYmopewoJCQkJCQkJdmFyIGJsb2NrX3RvcF9wb3MgPSBCZWd1bi5VdGlscy5m aW5kUG9zKGRvbV9vYmopICYmIEJlZ3VuLlV0aWxzLmZpbmRQb3MoZG9tX29iaiku dG9wOwoJCQkJCQkJaWYoYmxvY2tfdG9wX3BvcyA+IHZpZXdwb3J0aGVpZ2h0ICsg c2Nyb2xsZWRPZlkpIHsKCQkJCQkJCQlpZighcGFkc1tuXS5ibG9ja3NbaV0uYWxy ZWFkeVNlZW4pIHsKCQkJCQkJCQkJcGFkc1tuXS5ibG9ja3NbaV0udW5zZWVuID0g dHJ1ZTsKCQkJCQkJCQkJdW5zZWVuQmFubmVyc09ialt1bnNlZW5CYW5uZXJzT2Jq Lmxlbmd0aF0gPSB7CgkJCQkJCQkJCQlpZDogcGFkc1tuXS5ibG9ja3NbaV0uaWQs CgkJCQkJCQkJCQliYW5uZXJzX2lkOiBwYWRzW25dLmJsb2Nrc1tpXS5iYW5uZXJz X2lkCgkJCQkJCQkJCX07CgkJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQkJc2VlbkJh bm5lcnNPYmpbc2VlbkJhbm5lcnNPYmoubGVuZ3RoXSA9IHsKCQkJCQkJCQkJCWlk OiBwYWRzW25dLmJsb2Nrc1tpXS5pZCwKCQkJCQkJCQkJCWJhbm5lcnNfaWQ6IHBh ZHNbbl0uYmxvY2tzW2ldLmJhbm5lcnNfaWQKCQkJCQkJCQkJfTsKCQkJCQkJCQl9 CgkJCQkJCQl9IGVsc2UgewoJCQkJCQkJCXBhZHNbbl0uYmxvY2tzW2ldLnVuc2Vl biA9IGZhbHNlOwoJCQkJCQkJCXNlZW5CYW5uZXJzT2JqW3NlZW5CYW5uZXJzT2Jq Lmxlbmd0aF0gPSB7CgkJCQkJCQkJCWlkOiBwYWRzW25dLmJsb2Nrc1tpXS5pZCwK CQkJCQkJCQkJYmFubmVyc19pZDogcGFkc1tuXS5ibG9ja3NbaV0uYmFubmVyc19p ZAoJCQkJCQkJCX07CgkJCQkJCQkJcGFkc1tuXS5ibG9ja3NbaV0uYWxyZWFkeVNl ZW4gPSB0cnVlOwoJCQkJCQkJCXZhciBibG9ja0FscmVhZHlTZWVuID0gYWMuQmxv Y2tzLmdldEJsb2NrQnlJZChwYWRzW25dLmJsb2Nrc1tpXS5pZCwgdW5zZWVuQmFu bmVyc09iaik7CgkJCQkJCQkJZGVsZXRlIGJsb2NrQWxyZWFkeVNlZW47CgkJCQkJ CQl9CgkJCQkJCX0KCQkJCQl9CgkJCQkJZGF0YVtkYXRhLmxlbmd0aF0gPSB7CgkJ CQkJCXBhZF9pZDogcGFkc1tuXS5wYWRfaWQsCgkJCQkJCXNlZW46IHNlZW5CYW5u ZXJzT2JqLAoJCQkJCQl1bnNlZW46IHVuc2VlbkJhbm5lcnNPYmoKCQkJCQl9CgkJ CQl9CgkJCQl0aGlzLmRhdGEgPSBCZWd1bi5VdGlscy50b0pTT04oZGF0YSk7CgkJ CX07CgkJCXRoaXMuc2VuZCA9IGZ1bmN0aW9uKCkgewoJCQkJdmFyIHNyYyA9IGFj LlN0cmluZ3MudXJscy5sb2dfYmFubmVyc19jb3VudGVyOwoJCQkJQmVndW4uVXRp bHMuaW5jbHVkZUNvdW50ZXIoc3JjLCB7CgkJCQkJZGF0YSA6IHRoaXMuZGF0YQoJ CQkJfSk7CgkJCX07CgkJfQoJCQoJCWFjLlBhZHMgPSBuZXcgZnVuY3Rpb24oKXsK CQkJdmFyIHBhZHMgPSBbXTsKCQkJdGhpcy5pbml0ID0gZnVuY3Rpb24oKXsKCQkJ CWlmICh3aW5kb3cuYmVndW5fYXV0b19wYWQgIT09IHVuZGVmaW5lZCAmJiAhdGhp cy5nZXRQYWQoKSl7CgkJCQkJdGhpcy5wdXNoKHdpbmRvdy5iZWd1bl9hdXRvX3Bh ZCk7CgkJCQl9CgkJCX07CgkJCXRoaXMucHVzaCA9IGZ1bmN0aW9uKHBhZF9pZCl7 CgkJCQlwYWRzW3BhZHMubGVuZ3RoXSA9IHsKCQkJCQlwYWRfaWQ6IHBhZF9pZCwK CQkJCQlmZWVkOiBudWxsLAoJCQkJCWJsb2NrczogW10sCgkJCQkJYmFubmVyX2lu ZGV4OiAwLAoJCQkJCWZlZWRfc3RhcnRlZDogZmFsc2UKCQkJCX0KCQkJfTsKCQkJ dGhpcy5nZXRQYWQgPSBmdW5jdGlvbihwYWRfaWQpewoJCQkJdmFyIHBhZF9pZCA9 IHBhZF9pZCB8fCB3aW5kb3cuYmVndW5fYXV0b19wYWQ7CgkJCQlmb3IodmFyIGk9 MCwgbD1wYWRzLmxlbmd0aDsgaTxsOyBpKyspIHsKCQkJCQlpZihwYWRzW2ldLnBh ZF9pZCA9PSBwYWRfaWQpIHsKCQkJCQkJcmV0dXJuIHBhZHNbaV07CgkJCQkJfQoJ CQkJfQoJCQkJcmV0dXJuIG51bGw7CgkJCX07CgkJCXRoaXMuZ2V0UGFkcyA9IGZ1 bmN0aW9uKCl7CgkJCQlyZXR1cm4gcGFkczsKCQkJfTsKCQl9OwoKCQlhYy5CbG9j a3MgPSBuZXcgZnVuY3Rpb24oKXsKCQkJdGhpcy5pbml0ID0gZnVuY3Rpb24oKXsg CgkJCQlhYy5yZXNldEJhbm5lckluZGV4KCk7IAoJCQkJYWMucmVzZXRNYXhTY3Jv bGxlcnMoKTsgCgkJCX07IAoJCQl0aGlzLnB1c2ggPSBmdW5jdGlvbihlbGVtLCBw YWRfaWQpewoJCQkJaWYgKHdpbmRvdy5iZWd1bl9hdXRvX3BhZCAhPT0gdW5kZWZp bmVkICYmIGVsZW0uaWQpewoJCQkJCXRoaXMubG9hZEJsb2NrQ291bnRlcih3aW5k b3cuYmVndW5fYXV0b19wYWQsIGVsZW0uaWQpOwoJCQkJfQoJCQkJdmFyIGJsb2Nr cyA9IGFjLmdldFBhZChwYWRfaWQpLmJsb2NrczsKCQkJCWJsb2Nrc1tibG9ja3Mu bGVuZ3RoXSA9IGVsZW07CgkJCQlpZiAoZWxlbS5vcHRpb25zICYmIGVsZW0ub3B0 aW9ucy52aXN1YWwpewoJCQkJCWFjLnByaW50QmxvY2tTdHlsZShlbGVtLmlkLCBl bGVtLm9wdGlvbnMudmlzdWFsKTsKCQkJCX0KCQkJCWFjLm51bGxHbG9iYWxCbG9j a1BhcmFtcygpOwoJCQkJaWYgKCFhYy5pc0ZlZWRTdGFydGVkKCkpewoJCQkJCWFj LmluaXRGZWVkTG9hZCgpOwoJCQkJfSBlbHNlIGlmICghIWFjLmdldEZlZWQoKSl7 CgkJCQkJYWMuaW5zZXJ0Tm9uVGV4dEJsb2NrKGVsZW0pOwoJCQkJCWFjLmRyYXco KTsKCQkJCX0KCQkJfTsKCQkJdGhpcy5kZWwgPSBmdW5jdGlvbihibG9ja19pZCwg cGFkX2lkKXsKCQkJCXZhciBibG9jayA9IG51bGw7CgkJCQl2YXIgaSA9IDA7CgkJ CQl2YXIgYmxvY2tzID0gYWMuZ2V0UGFkKHBhZF9pZCkuYmxvY2tzOwoJCQkJd2hp bGUgKGJsb2NrID0gYmxvY2tzW2ldKXsKCQkJCQlpZiAoYmxvY2suaWQgPT0gYmxv Y2tfaWQpewoJCQkJCQlibG9ja3NbaV0uaWQgPSAtMTsKCQkJCQkJYmxvY2tzW2ld Lm9wdGlvbnMuYmFubmVyc19jb3VudCA9IDA7CgkJCQkJCWJyZWFrOwoJCQkJCX0K CQkJCQlpKys7CgkJCQl9CgkJCX07CgkJCXRoaXMuZGVsZXRlQWxsID0gZnVuY3Rp b24ocGFkX2lkKXsKCQkJCXZhciBibG9ja3MgPSBhYy5nZXRQYWQocGFkX2lkKS5i bG9ja3M7CgkJCQl3aGlsZSAoYmxvY2tzLnBvcCgpKXt9OwoJCQl9OwoJCQl0aGlz LmlzRGVsZXRlZCA9IGZ1bmN0aW9uKGJsb2NrKXsKCQkJCWJsb2NrLmlkID09IC0x ICYmIGJsb2NrLm9wdGlvbnMuYmFubmVyc19jb3VudCA9PSAwOwoJCQl9OwoJCQl0 aGlzLnB1c2hBbGwgPSBmdW5jdGlvbihibG9ja3MsIHBhZF9pZCl7CgkJCQl0aGlz LmRlbGV0ZUFsbChwYWRfaWQpOwoJCQkJdGhpcy5pbml0KCk7CgoJCQkJdmFyIGJs b2NrID0gbnVsbDsKCQkJCXZhciBpID0gMDsKCQkJCXdoaWxlIChibG9jayA9IGJs b2Nrc1tpXSl7CgkJCQkJdGhpcy5wdXNoKGJsb2NrKTsKCQkJCQlpKys7CgkJCQl9 CgkJCX07CgkJCXRoaXMubG9hZEJsb2NrQ291bnRlciA9IGZ1bmN0aW9uKHBhZF9p ZCwgYmxvY2tfaWQpewoJCQkJaWYgKHRoaXMubGVuZ3RoID4gMCl7CgkJCQkJQmVn dW4uVXRpbHMuaW5jbHVkZUNvdW50ZXIoYWMuU3RyaW5ncy51cmxzLmJsb2NrX2Nv dW50ZXIsIHsncGFkX2lkJzogcGFkX2lkLCAnYmxvY2tfaWQnOiBibG9ja19pZH0p OwoJCQkJfQoJCQl9OwoJCQl0aGlzLmdldEJsb2NrQnlJZCA9IGZ1bmN0aW9uKGJs b2NrX2lkLCBibG9ja3MsIHBhZF9pZCl7CgkJCQl2YXIgYmxvY2sgPSBudWxsOwoJ CQkJdmFyIGkgPSAwOwoJCQkJYmxvY2tzID0gYmxvY2tzIHx8IGFjLmdldFBhZChw YWRfaWQpLmJsb2NrczsKCQkJCXdoaWxlIChibG9jayA9IGJsb2Nrc1tpXSl7CgkJ CQkJaWYgKGJsb2NrLmlkID09IGJsb2NrX2lkKXsKCQkJCQkJcmV0dXJuIGJsb2Nr OwoJCQkJCQlicmVhazsKCQkJCQl9CgkJCQkJaSsrOwoJCQkJfQoJCQkJcmV0dXJu IG51bGw7CgkJCX07CgkJCXRoaXMuZ2V0RG9tT2JqID0gZnVuY3Rpb24oYmxvY2tf aWQpewoJCQkJcmV0dXJuIEJlZ3VuLiQoYWMuU3RyaW5ncy5jc3MuYmxvY2tfcHJl Zml4ICsgYmxvY2tfaWQpIHx8IG51bGw7CgkJCX07CgkJCXRoaXMuY2hlY2tUeXBl ID0gZnVuY3Rpb24oYmxvY2ssIHR5cGUpIHsKCQkJCXJldHVybiAoYmxvY2sgJiYg YmxvY2sub3B0aW9ucyAmJiBibG9jay5vcHRpb25zLmRpbWVuc2lvbnMgJiYgYmxv Y2sub3B0aW9ucy5kaW1lbnNpb25zLnR5cGUgJiYgYmxvY2sub3B0aW9ucy5kaW1l bnNpb25zLnR5cGUudG9Mb3dlckNhc2UoKSA9PSB0eXBlKTsKCQkJfTsKCQkJdGhp cy5jaGVja1ZpZXdUeXBlID0gZnVuY3Rpb24oYmxvY2ssIHZpZXd0eXBlKSB7CgkJ CQlyZXR1cm4gQmVndW4uVXRpbHMuaW5MaXN0KChibG9jay5vcHRpb25zICYmIGJs b2NrLm9wdGlvbnMudmlld190eXBlKSwgdmlld3R5cGUpOwoJCQl9OwoJCX07CgoJ CWFjLkNhbGxiYWNrcyA9IG5ldyBmdW5jdGlvbigpewoJCQl2YXIgX2NhbGxiYWNr cyA9IHt9OwoJCQl2YXIgX2V4dGVuZCA9IGZ1bmN0aW9uKGRlc3RpbmF0aW9uLCBz b3VyY2UpewoJCQkJZm9yICh2YXIgcHJvcGVydHkgaW4gc291cmNlKXsKCQkJCQlp ZiAodHlwZW9mIHNvdXJjZVtwcm9wZXJ0eV0gPT0gJ29iamVjdCcpewoJCQkJCQl2 YXIgbmV3X29iaiA9IHt9OwoJCQkJCQlmb3IgKHZhciBwcm9wZXJ0eTIgaW4gc291 cmNlW3Byb3BlcnR5XSl7CgkJCQkJCQlpZiAodHlwZW9mIHNvdXJjZVtwcm9wZXJ0 eV1bcHJvcGVydHkyXSA9PSAnZnVuY3Rpb24nKXsKCQkJCQkJCQlpZiAoKGRlc3Rp bmF0aW9uW3Byb3BlcnR5XSAhPT0gdW5kZWZpbmVkKSAmJiAodHlwZW9mIGRlc3Rp bmF0aW9uW3Byb3BlcnR5XVtwcm9wZXJ0eTJdID09ICdmdW5jdGlvbicpKXsKCQkJ CQkJCQkJbmV3X29ialtwcm9wZXJ0eTJdID0gZnVuY3Rpb24ob2xkX2Z1bmMsIG5l d19mdW5jLCBwcm9wZXJ0eTIpewoJCQkJCQkJCQkJcmV0dXJuIGZ1bmN0aW9uKGFy Z3MpewoJCQkJCQkJCQkJCW9sZF9mdW5jLmFwcGx5KHByb3BlcnR5MiA9PSAnY2xp Y2snID8gdGhpcyA6IGFjLCBbYXJnc10pOwoJCQkJCQkJCQkJCW5ld19mdW5jLmFw cGx5KHByb3BlcnR5MiA9PSAnY2xpY2snID8gdGhpcyA6IGFjLCBbYXJnc10pOwoJ CQkJCQkJCQkJfTsKCQkJCQkJCQkJfShkZXN0aW5hdGlvbltwcm9wZXJ0eV1bcHJv cGVydHkyXSwgc291cmNlW3Byb3BlcnR5XVtwcm9wZXJ0eTJdLCBwcm9wZXJ0eTIp OwoJCQkJCQkJCX0gZWxzZSB7CgkJCQkJCQkJCW5ld19vYmpbcHJvcGVydHkyXSA9 IGZ1bmN0aW9uKGZ1bmMsIHByb3BlcnR5Mil7CgkJCQkJCQkJCQlyZXR1cm4gZnVu Y3Rpb24oYXJncyl7CgkJCQkJCQkJCQkJZnVuYy5hcHBseShwcm9wZXJ0eTIgPT0g J2NsaWNrJyA/IHRoaXMgOiBhYywgW2FyZ3NdKTsKCQkJCQkJCQkJCX07CgkJCQkJ CQkJCX0oc291cmNlW3Byb3BlcnR5XVtwcm9wZXJ0eTJdLCBwcm9wZXJ0eTIpOwoJ CQkJCQkJCX0KCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQlkZXN0aW5hdGlvbltwcm9w ZXJ0eV0gPSBuZXdfb2JqOwoJCQkJCX0KCQkJCX0KCQkJCXJldHVybiBkZXN0aW5h dGlvbjsKCQkJfTsKCQkJdGhpcy5yZWdpc3RlciA9IGZ1bmN0aW9uKGNhbGxiYWNr cyl7CgkJCQlfZXh0ZW5kKF9jYWxsYmFja3MsIGNhbGxiYWNrcyk7CgkJCX07CgkJ CXRoaXMuZGlzcGF0Y2ggPSBmdW5jdGlvbihvYmosIG1ldGhvZCwgY29udGV4dF9v YmosIGFyZ3MpewoJCQkJaWYgKF9jYWxsYmFja3Nbb2JqXSAmJiB0eXBlb2YgX2Nh bGxiYWNrc1tvYmpdW21ldGhvZF0gPT0gJ2Z1bmN0aW9uJyl7CgkJCQkJdmFyIGFy Z3MgPSBhcmdzIHx8IFtdOwoJCQkJCV9jYWxsYmFja3Nbb2JqXVttZXRob2RdLmFw cGx5KGNvbnRleHRfb2JqIHx8IHRoaXMsIGFyZ3MpOwoJCQkJfSBlbHNlIHsKCQkJ CQlyZXR1cm4gbnVsbDsKCQkJCX0KCQkJfTsKCQkJdGhpcy5nZXRDYWxsYmFja3Mg PSBmdW5jdGlvbigpewoJCQkJcmV0dXJuIF9jYWxsYmFja3M7CgkJCX0KCQl9OwoK CQlhYy5UcGxzID0gbmV3IGZ1bmN0aW9uKCl7CgkJCXZhciBjc3MgPSB7fTsKCQkJ Y3NzWydkZWZhdWx0J10gPSAnXAouYmVndW5fYWR2ICosIC5iZWd1bl9hZHYgKjps aW5rLCAuYmVndW5fYWR2ICo6dmlzaXRlZCwgLmJlZ3VuX2FkdiAqOmhvdmVyLCAu YmVndW5fYWR2ICo6YWN0aXZlIHtcCmJhY2tncm91bmQ6IG5vbmU7IC8qIG5vICFp bXBvcnRhbnQgZm9yIGhvdmVyICovXApib3JkZXI6IG5vbmU7IC8qIG5vICFpbXBv cnRhbnQgZm9yIGhvdmVyICovXAp3aWR0aDogYXV0bzsgXApoZWlnaHQ6IGF1dG87 IFwKLypoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsqLyAvKiB1c2VkIGZvciBzY3Jv bGxpbmcgKi9cCn1cCic7CgkJCWNzc1snYmxvY2snXSA9ICcuYmVndW5fYWR2ICp7 Y2xlYXI6bm9uZSAhaW1wb3J0YW50O2NvbG9yOiMwMDAgIWltcG9ydGFudDtmbG9h dDpub25lICFpbXBvcnRhbnQ7bWFyZ2luOjAgIWltcG9ydGFudDtwYWRkaW5nOjAg IWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzpub3JtYWwgIWltcG9ydGFudDt3b3Jk LXNwYWNpbmc6bm9ybWFsICFpbXBvcnRhbnQ7ei1pbmRleDphdXRvICFpbXBvcnRh bnQ7Zm9udC1zaXplOjEycHggIWltcG9ydGFudDtmb250Om5vcm1hbCBub3JtYWwg MTJweCBBcmlhbCxzYW5zLXNlcmlmICFpbXBvcnRhbnQ7dGV4dC10cmFuc2Zvcm06 bm9uZSAhaW1wb3J0YW50O2xpc3Qtc3R5bGU6bm9uZSAhaW1wb3J0YW50O3Bvc2l0 aW9uOnN0YXRpYyAhaW1wb3J0YW50O3RleHQtaW5kZW50OjAgIWltcG9ydGFudDt2 aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDt9LmJlZ3VuX2FkdiAuYmVndW5f YWR2X2NvbW1vbiB0ciwuYmVndW5fYWR2IC5iZWd1bl9hZHZfY29tbW9uIHRkLC5i ZWd1bl9hZHYgLmJlZ3VuX2Fkdl9jb21tb24gYSwuYmVndW5fYWR2IC5iZWd1bl9h ZHZfY29tbW9uIGIsLmJlZ3VuX2FkdiAuYmVndW5fYWR2X2NvbW1vbiBkaXYsLmJl Z3VuX2FkdiAuYmVndW5fYWR2X2NvbW1vbiBzcGFuLC5iZWd1bl9hZHYgLmJlZ3Vu X2Fkdl9zeXMgKiwuYmVndW5fYWR2IC5iZWd1bl9hZHZfYWxsICp7YmFja2dyb3Vu ZDpub25lICFpbXBvcnRhbnQ7Ym9yZGVyOm5vbmUgIWltcG9ydGFudDt9I2JlZ3Vu X2Jsb2NrX3t7YmxvY2tfaWR9fXtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O30jYmVn dW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZ7Zm9udDoxMnB4LzE4cHgg QXJpYWwsc2Fucy1zZXJpZiAhaW1wb3J0YW50O2NvbG9yOiMwMDAgIWltcG9ydGFu dDt0ZXh0LWFsaWduOmxlZnQgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7Ymxv Y2tfaWR9fSAuYmVndW5fYWR2IGJ7Zm9udC13ZWlnaHQ6Ym9sZCAhaW1wb3J0YW50 O2Rpc3BsYXk6aW5saW5lICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2Nr X2lkfX0gLmJlZ3VuX2FkdiB0ZHtmb250LXNpemU6MTFweCAhaW1wb3J0YW50O30j YmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHYsI2JlZ3VuX2Jsb2Nr X3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2IHRhYmxlLCNiZWd1bl9ibG9ja197e2Js b2NrX2lkfX0gLmJlZ3VuX2FkdiB0ZCwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19 IC5iZWd1bl9hZHYgZGl2e3BhZGRpbmc6MCAhaW1wb3J0YW50O3RleHQtYWxpZ246 bGVmdCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1 bl9hZHYgdGFibGV7Ym9yZGVyOm5vbmUgIWltcG9ydGFudDtib3JkZXItY29sbGFw c2U6Y29sbGFwc2UgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9 fSAuYmVndW5fYWR2IHRke3ZlcnRpY2FsLWFsaWduOm1pZGRsZSAhaW1wb3J0YW50 O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHYuYmVndW5fYWR2 X2hvciB0ZCwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHYuYmVn dW5fY29sbGFwc2FibGUgdGQsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVn dW5fYWR2X2ZpeF9ob3IgdGR7dmVydGljYWwtYWxpZ246dG9wICFpbXBvcnRhbnQ7 fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9zeXN7d2lkdGg6 MTAwJSAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1 bl9hZHZfc3lzX3NpZ25fdXB7dmVydGljYWwtYWxpZ246bWlkZGxlICFpbXBvcnRh bnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9jZWxsLCNi ZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9hbGx7dGV4dC1hbGln bjpsZWZ0ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJl Z3VuX2Fkdl9idWxsaXR7Y29sb3I6I2FhYSAhaW1wb3J0YW50O30jYmVndW5fYmxv Y2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfdGl0bGUsI2JlZ3VuX2Jsb2NrX3t7 YmxvY2tfaWR9fSAuYmVndW5fYWR2X3RleHR7d2hpdGUtc3BhY2U6bm9ybWFsICFp bXBvcnRhbnQ7ZGlzcGxheTpibG9jayAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tf e3tibG9ja19pZH19IC5iZWd1bl9hZHZfdGl0bGUsI2JlZ3VuX2Jsb2NrX3t7Ymxv Y2tfaWR9fSAuYmVndW5fYWR2X3RpdGxlICp7Zm9udC13ZWlnaHQ6Ym9sZCAhaW1w b3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfc3lz X2xvZ28gZGl2e3ZlcnRpY2FsLWFsaWduOm1pZGRsZSAhaW1wb3J0YW50O30jYmVn dW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfc3lzX2xvZ28gYTpsaW5r LCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9zeXNfbG9nbyBh OnZpc2l0ZWQsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X3N5 c19sb2dvIGE6aG92ZXIsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5f YWR2X3N5c19sb2dvIGE6YWN0aXZle2NvbG9yOnt7YmxvY2tfbG9nb19jb2xvcn19 ICFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmUgIWltcG9ydGFudDtmb250 LXdlaWdodDpib2xkICFpbXBvcnRhbnQ7Zm9udC1zdHlsZTppdGFsaWMgIWltcG9y dGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X3N5c19s b2dvIGF7bWFyZ2luLXRvcDotMXB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197 e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9zeXNfc2lnbl91cCBkaXZ7dGV4dC1hbGln bjpyaWdodCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5i ZWd1bl9hZHZfZXh0IC5iZWd1bl9hZHZfc3lzX2xvZ28sI2JlZ3VuX2Jsb2NrX3t7 YmxvY2tfaWR9fSAuYmVndW5fYWR2X2V4dCAuYmVndW5fYWR2X3N5c19sb2dvICp7 Zm9udC1zaXplOjEzcHggIWltcG9ydGFudDtsaW5lLWhlaWdodDoxN3B4ICFpbXBv cnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9ob3Is I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2hvciAuYmVndW5f YWR2X3RhYmxle3dpZHRoOjEwMCUgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7 YmxvY2tfaWR9fSAuYmVndW5fYWR2X2hvciAuYmVndW5fYWR2X2NlbGwsI2JlZ3Vu X2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fY29sbGFwc2FibGUgLmJlZ3VuX2Fk dl9jZWxsLCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9ob3Ig LmJlZ3VuX2Fkdl9hbGx7cGFkZGluZzowIDE2cHggMCAwICFpbXBvcnRhbnQ7fSNi ZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl92ZXIgLmJlZ3VuX2Fk dl9jZWxsIC5iZWd1bl9hZHZfY2VsbCwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19 IC5iZWd1bl9hZHZfdmVyIC5iZWd1bl9hZHZfYWxse3BhZGRpbmc6NXB4IDJweCA0 cHggNXB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJl Z3VuX2Fkdl9leHQgLmJlZ3VuX2Fkdl9zeXNfbG9nbyBkaXZ7d2lkdGg6My44ZW0g IWltcG9ydGFudDtoZWlnaHQ6Mi43ZXggIWltcG9ydGFudDtsZWZ0Oi00cHggIWlt cG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZSAhaW1wb3J0YW50O3RvcDotMnB4ICFp bXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9l eHQgLmJlZ3VuX2Fkdl90ZXh0e3BhZGRpbmc6MnB4IDAgNHB4IDAgIWltcG9ydGFu dDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2V4dCAuYmVn dW5fYWR2X2NvbnRhY3Qgc3BhbntwYWRkaW5nLXJpZ2h0OjAuMmVtICFpbXBvcnRh bnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdi5iZWd1bl9h ZHZfZXh0LmJlZ3VuX2Fkdl9ob3IgLmJlZ3VuX2Fkdl9zeXNfbG9nbywjYmVndW5f YmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHYuYmVndW5fYWR2X2V4dC5iZWd1 bl9jb2xsYXBzYWJsZSAuYmVndW5fYWR2X3N5c19sb2dve3dpZHRoOjEwMCUgIWlt cG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2V4 dC5iZWd1bl9hZHZfdmVyIC5iZWd1bl9hZHZfc3lzX3NpZ25fdXB7cGFkZGluZy1y aWdodDo1cHggIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAu YmVndW5fYWR2X2ZpeCAuYmVndW5fYWR2X2NlbGx7cGFkZGluZzowIDVweCAwIDlw eCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9h ZHZfZml4IC5iZWd1bl9hZHZfY2VsbCwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19 IC5iZWd1bl9hZHZfZml4IC5iZWd1bl9hZHZfY2VsbCAqe2ZvbnQtc2l6ZToxMXB4 ICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MTFweCAhaW1wb3J0YW50O30jYmVndW5f YmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfZml4IC5iZWd1bl9hZHZfdGl0 bGV7Zm9udC1zaXplOjEycHggIWltcG9ydGFudDtsaW5lLWhlaWdodDoxM3B4ICFp bXBvcnRhbnQ7bWFyZ2luLWJvdHRvbToycHggIWltcG9ydGFudDt9I2JlZ3VuX2Js b2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2ZpeCAuYmVndW5fYWR2X3RpdGxl ICp7Zm9udC1zaXplOjEycHggIWltcG9ydGFudDtsaW5lLWhlaWdodDoxM3B4ICFp bXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9m aXggLmJlZ3VuX2Fkdl90ZXh0LCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJl Z3VuX2Fkdl9maXggLmJlZ3VuX2Fkdl90ZXh0ICp7Zm9udC1zaXplOjExcHggIWlt cG9ydGFudDtsaW5lLWhlaWdodDoxMnB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9j a197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9maXggLmJlZ3VuX2Fkdl9zeXNfbG9n bywjYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfZml4IC5iZWd1 bl9hZHZfc3lzX2xvZ28gKntmb250LXNpemU6MTNweCAhaW1wb3J0YW50O2xpbmUt aGVpZ2h0OjE3cHggIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9 fSAuYmVndW5fYWR2X2ZpeCAuYmVndW5fYWR2X2FsbCwjYmVndW5fYmxvY2tfe3ti bG9ja19pZH19IC5iZWd1bl9hZHZfZml4IC5iZWd1bl9hZHZfYWxsICosI2JlZ3Vu X2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2ZpeCAuYmVndW5fYWR2X3N5 c19zaWduX3VwLCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9m aXggLmJlZ3VuX2Fkdl9zeXNfc2lnbl91cCAqe2ZvbnQ6OXB4LzExcHggVGFob21h LEFyaWFsLHNhbnMtc2VyaWYgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7Ymxv Y2tfaWR9fSAuYmVndW5fYWR2X2ZpeHtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFu dDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2ZpeCAuYmVn dW5fYWR2X3N5c19sb2dve3Bvc2l0aW9uOnJlbGF0aXZlICFpbXBvcnRhbnQ7fSNi ZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9maXggLmJlZ3VuX2Fk dl9zeXNfbG9nbyBkaXZ7aGVpZ2h0OjE3cHggIWltcG9ydGFudDtmbG9hdDpsZWZ0 ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fk dl9maXggLmJlZ3VuX2Fkdl9jb21tb257b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRh bnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0uYmVndW5fYXV0b19yaWNoIC5i ZWd1bl9hZHZfZml4IC5iZWd1bl9hZHZfY29tbW9ue292ZXJmbG93OnZpc2libGUg IWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2 X2ZpeCAuYmVndW5fYWR2X3RleHR7cGFkZGluZzoycHggMCAhaW1wb3J0YW50O30j YmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfZml4IC5iZWd1bl9h ZHZfY29udGFjdCBzcGFue3BhZGRpbmctcmlnaHQ6MnB4ICFpbXBvcnRhbnQ7fSNi ZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9maXhfdmVyIC5iZWd1 bl9hZHZfc3lzX2xvZ28sI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5f YWR2X2V4dCAuYmVndW5fYWR2X3N5c19sb2dve3BhZGRpbmctbGVmdDo5cHggIWlt cG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2Zp eF92ZXIgLmJlZ3VuX2Fkdl9zeXNfbG9nbyBkaXZ7d2lkdGg6NTFweCAhaW1wb3J0 YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfZml4X3Zl ciAuYmVndW5fYWR2X3N5c19zaWduX3VwIGRpdnt3aWR0aDo5MyUgIWltcG9ydGFu dDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2ZpeF92ZXIg LmJlZ3VuX2Fkdl9hbGx7aGVpZ2h0OjE4cHggIWltcG9ydGFudDtwYWRkaW5nOjJw eCAwIDAgOXB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0g LmJlZ3VuX2Fkdl9maXhfdmVyIC5iZWd1bl9hZHZfYmxvY2t7bWFyZ2luOjVweCAw ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fk dl9maXhfaG9yIC5iZWd1bl9hZHZfY29tbW9ue21hcmdpbi10b3A6N3B4ICFpbXBv cnRhbnQ7dGV4dC1hbGlnbjpsZWZ0ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197 e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl80Njh4NjAgLmJlZ3VuX2Fkdl9jb21tb257 bWFyZ2luLXRvcDo1cHggIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tf aWR9fSAuYmVndW5fYWR2X2ZpeF9ob3IgLmJlZ3VuX2Fkdl9ibG9ja3ttYXJnaW46 MCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9h ZHZfZml4X2hvciAuYmVndW5fYWR2X3N5c19sb2dve3dpZHRoOjUzcHggIWltcG9y dGFudDtmbG9hdDpsZWZ0ICFpbXBvcnRhbnQ7cGFkZGluZzowICFpbXBvcnRhbnQ7 fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9maXhfaG9yIC5i ZWd1bl9hZHZfc3lzX2xvZ28gZGl2e3dpZHRoOjUzcHggIWltcG9ydGFudDt9I2Jl Z3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2ZpeF9ob3IgLmJlZ3Vu X2Fkdl9zeXNfc2lnbl91cHt3aWR0aDo1M3B4ICFpbXBvcnRhbnQ7ZmxvYXQ6bGVm dCAhaW1wb3J0YW50O2NsZWFyOmxlZnQgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2Nr X3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2ZpeF9ob3IgLmJlZ3VuX2Fkdl9zeXNf c2lnbl91cCBkaXZ7cGFkZGluZy1sZWZ0OjRweCAhaW1wb3J0YW50O3RleHQtYWxp Z246bGVmdCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5i ZWd1bl9hZHZfdGFibGV7cG9zaXRpb246cmVsYXRpdmUgIWltcG9ydGFudDt9I2Jl Z3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2ZpeF9ob3IgLmJlZ3Vu X2Fkdl90YWJsZXttYXJnaW4tbGVmdDo2MHB4ICFpbXBvcnRhbnQ7ZGlzcGxheTpi bG9jayAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1 bl9hZHZfMjQweDQwMHt3aWR0aDoyNDBweCAhaW1wb3J0YW50O2hlaWdodDo0MDBw eCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9h ZHZfMjQweDQwMCAuYmVndW5fc2Nyb2xse2hlaWdodDozNThweCAhaW1wb3J0YW50 O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfMjAweDMwMHt3 aWR0aDoyMDBweCAhaW1wb3J0YW50O2hlaWdodDozMDBweCAhaW1wb3J0YW50O30j YmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfMjAweDMwMCAuYmVn dW5fc2Nyb2xse2hlaWdodDoyODNweCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tf e3tibG9ja19pZH19IC5iZWd1bl9hZHZfNDY4eDYwe3dpZHRoOjQ2OHB4ICFpbXBv cnRhbnQ7aGVpZ2h0OjYwcHggIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7Ymxv Y2tfaWR9fSAuYmVndW5fYWR2XzQ2OHg2MCAuYmVndW5fYWR2X3N5c19zaWduX3Vw e21hcmdpbi10b3A6MnB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2Nr X2lkfX0gLmJlZ3VuX2Fkdl80Njh4NjAgLmJlZ3VuX2Fkdl9zeXNfbG9nbyBhe3Bh ZGRpbmctbGVmdDo0cHggIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tf aWR9fSAuYmVndW5fYWR2XzQ2OHg2MCAuYmVndW5fYWR2X3RleHR7cGFkZGluZy1i b3R0b206NHB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0g LmJlZ3VuX2Fkdl80Njh4NjAgLmJlZ3VuX2Fkdl90ZXh0ICp7bGluZS1oZWlnaHQ6 MTBweCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1 bl9hZHZfNzI4eDkwe3dpZHRoOjcyOHB4ICFpbXBvcnRhbnQ7aGVpZ2h0OjkwcHgg IWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2 XzcyOHg5MCAuYmVndW5fYWR2X3N5c19zaWduX3Vwe21hcmdpbi10b3A6NHB4ICFp bXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl83 Mjh4OTAgLmJlZ3VuX2Fkdl9zeXNfbG9nbyBhe3BhZGRpbmctbGVmdDo0cHggIWlt cG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2Xzcy OHg5MCAuYmVndW5fYWR2X3RleHR7cGFkZGluZy1ib3R0b206NHB4ICFpbXBvcnRh bnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8xMjB4NjAw IC5iZWd1bl9zY3JvbGx7aGVpZ2h0OjU2MHB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9i bG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8xNjB4NjAwIC5iZWd1bl9zY3Jv bGx7aGVpZ2h0OjU2MHB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2Nr X2lkfX0gLmJlZ3VuX2Fkdl9leHQgLmJlZ3VuX2Fkdl9jZWxsIC5iZWd1bl9hZHZf Y2VsbCwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfZXh0IC5i ZWd1bl9hZHZfYWxse3BhZGRpbmc6NXB4IDJweCA0cHggNXB4ICFpbXBvcnRhbnQ7 fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdi5iZWd1bl9hZHZf ZXh0LmJlZ3VuX2NvbGxhcHNhYmxlIC5iZWd1bl9hZHZfc3lzX3NpZ25fdXAgZGl2 LCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdi5iZWd1bl9hZHZf ZXh0LmJlZ3VuX2Fkdl9ob3IgLmJlZ3VuX2Fkdl9zeXNfc2lnbl91cCBkaXZ7d2hp dGUtc3BhY2U6bm93cmFwICFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6MjVweCAhaW1w b3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IGRpdi5iZWd1bl9hZHZf ZmF2e3BhZGRpbmctbGVmdDoyMnB4ICFpbXBvcnRhbnQ7YmFja2dyb3VuZC1wb3Np dGlvbjowIDFweCAhaW1wb3J0YW50O2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVh dCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9h ZHZfZmF2IC5iZWd1bl9hZHZfdGl0bGUgYXttYXJnaW4tbGVmdDotMjJweCAhaW1w b3J0YW50O3BhZGRpbmctbGVmdDoyMnB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9j a197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl90ZXh0LCNiZWd1bl9ibG9ja197e2Js b2NrX2lkfX0gLmJlZ3VuX2Fkdl90ZXh0ICp7Y29sb3I6IzAwMCAhaW1wb3J0YW50 O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfYmxvY2t7Ym9y ZGVyOm5vbmUgIWltcG9ydGFudDtjdXJzb3I6cG9pbnRlciAhaW1wb3J0YW50O2N1 cnNvcjpoYW5kICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0g LmJlZ3VuX2Fkdl83Mjh4OTAgLmJlZ3VuX2Fkdl90ZXh0LCNiZWd1bl9ibG9ja197 e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl83Mjh4OTAgLmJlZ3VuX2Fkdl90ZXh0ICos I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzI0MHg0MDAgLmJl Z3VuX2Fkdl90ZXh0LCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fk dl8yNDB4NDAwIC5iZWd1bl9hZHZfdGV4dCAqLCNiZWd1bl9ibG9ja197e2Jsb2Nr X2lkfX0gLmJlZ3VuX2Fkdl8xNjB4NjAwIC5iZWd1bl9hZHZfdGV4dCwjYmVndW5f YmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfMTYweDYwMCAuYmVndW5fYWR2 X3RleHQgKntmb250LXNpemU6MTJweCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEz cHggIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5f YWR2XzI0MHg0MDAgLmJlZ3VuX2Fkdl90aXRsZSwjYmVndW5fYmxvY2tfe3tibG9j a19pZH19IC5iZWd1bl9hZHZfMjQweDQwMCAuYmVndW5fYWR2X3RpdGxlICosI2Jl Z3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzcyOHg5MCAuYmVndW5f YWR2X3RpdGxlLCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl83 Mjh4OTAgLmJlZ3VuX2Fkdl90aXRsZSAqe2ZvbnQtc2l6ZToxNHB4ICFpbXBvcnRh bnQ7bGluZS1oZWlnaHQ6MTRweCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3ti bG9ja19pZH19IC5iZWd1bl9hZHZfNzI4eDkwIHRkLmJlZ3VuX2Fkdl9jZWxse3dp ZHRoOjUwJSAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5i ZWd1bl9zY3JvbGx7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnQ7fSNiZWd1bl9i bG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX3Njcm9sbCwjYmVndW5fYmxvY2tfe3ti bG9ja19pZH19IC5iZWd1bl9hZHZfMjAweDMwMCAuYmVndW5fYWR2X2NvbW1vbiwj YmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfMjQweDQwMCAuYmVn dW5fYWR2X2NvbW1vbntwb3NpdGlvbjpyZWxhdGl2ZSAhaW1wb3J0YW50O30jYmVn dW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfMTIweDYwMCAuYmVndW5f YWR2X2Jsb2Nre3dpZHRoOjEwNnB4ICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVu ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fk dl8xNjB4NjAwIC5iZWd1bl9hZHZfYmxvY2t7d2lkdGg6MTQ2cHggIWltcG9ydGFu dDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7Ymxv Y2tfaWR9fSAuYmVndW5fYWR2IC5iZWd1bl9hZHZfY2VsbCAuYmVndW5fYWR2X3Bo b25lICp7Zm9udC1zaXplOjFweCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3ti bG9ja19pZH19IC5iZWd1bl9hZHZfcGhvbmV7d2lkdGg6MTJweCAhaW1wb3J0YW50 O21hcmdpbjoxcHggM3B4IDAgMCAhaW1wb3J0YW50O3Bvc2l0aW9uOmFic29sdXRl ICFpbXBvcnRhbnQ7dG9wOjAgIWltcG9ydGFudDtsZWZ0OjAgIWltcG9ydGFudDt9 I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X3Bob25lX3dyYXBw ZXJ7cGFkZGluZy1sZWZ0OjE1cHggIWltcG9ydGFudDt3aGl0ZS1zcGFjZTpub3dy YXAgIWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZSAhaW1wb3J0YW50O2Rpc3Bs YXk6aW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7X2Rpc3BsYXk6aW5saW5lICFpbXBv cnRhbnQ7em9vbToxICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lk fX0gLmJlZ3VuX2Fkdl9waG9uZV93cmFwcGVyLmJlZ3VuX2Fkdl9waG9uZV9ub19p Y29ue3BhZGRpbmctbGVmdDowICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Js b2NrX2lkfX0gZGl2LmJlZ3VuX2Fkdl9jb250YWN0ID4gLmJlZ3VuX2Fkdl9waG9u ZXttYXJnaW46MCA1cHggMCAwICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Js b2NrX2lkfX0gLmJlZ3VuX2Fkdl9waG9uZSBie2JvcmRlcjojMTE4ZjAwIHNvbGlk IDAgIWltcG9ydGFudDtoZWlnaHQ6MXB4ICFpbXBvcnRhbnQ7Zm9udC1zaXplOjFw eCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjFweCAhaW1wb3J0YW50O2Rpc3BsYXk6 YmxvY2sgIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudDt9I2Jl Z3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X3Bob25lIC5wMCwjYmVn dW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfcGhvbmUgLnAxLCNiZWd1 bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9waG9uZSAucDMsI2JlZ3Vu X2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X3Bob25lIC5wNSwjYmVndW5f YmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfcGhvbmUgLnA4e2JhY2tncm91 bmQtY29sb3I6IzExOGYwMCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9j a19pZH19IC5iZWd1bl9hZHZfcGhvbmUgLnAxLCNiZWd1bl9ibG9ja197e2Jsb2Nr X2lkfX0gLmJlZ3VuX2Fkdl9waG9uZSAucDcsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tf aWR9fSAuYmVndW5fYWR2X3Bob25lIC5wOHttYXJnaW46MCAxcHggIWltcG9ydGFu dDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X3Bob25lIC5w MiwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfcGhvbmUgLnA3 e2JvcmRlci13aWR0aDowIDRweCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3ti bG9ja19pZH19IC5iZWd1bl9hZHZfcGhvbmUgLnAzLCNiZWd1bl9ibG9ja197e2Js b2NrX2lkfX0gLmJlZ3VuX2Fkdl9waG9uZSAucDZ7bWFyZ2luOjAgMnB4ICFpbXBv cnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9waG9u ZSAucDB7bWFyZ2luOjAgM3B4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Js b2NrX2lkfX0gLmJlZ3VuX2Fkdl9waG9uZSAucDR7Ym9yZGVyLXdpZHRoOjAgM3B4 ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fk dl9waG9uZSAucDV7bWFyZ2luOjAgNHB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9j a197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9waG9uZSAucDZ7Ym9yZGVyLXdpZHRo OjAgMnB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJl Z3VuX2Fkdl9waG9uZSAucDh7aGVpZ2h0OjJweCAhaW1wb3J0YW50O30jYmVndW5f YmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfcGhvbmUgYntib3JkZXItY29s b3I6e3tkb21haW46Y29sb3J9fSAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3ti bG9ja19pZH19IC5iZWd1bl9hZHZfcGhvbmUgLnAwLCNiZWd1bl9ibG9ja197e2Js b2NrX2lkfX0gLmJlZ3VuX2Fkdl9waG9uZSAucDEsI2JlZ3VuX2Jsb2NrX3t7Ymxv Y2tfaWR9fSAuYmVndW5fYWR2X3Bob25lIC5wMywjYmVndW5fYmxvY2tfe3tibG9j a19pZH19IC5iZWd1bl9hZHZfcGhvbmUgLnA1LCNiZWd1bl9ibG9ja197e2Jsb2Nr X2lkfX0gLmJlZ3VuX2Fkdl9waG9uZSAucDh7YmFja2dyb3VuZC1jb2xvcjp7e2Rv bWFpbjpjb2xvcn19ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lk fX0gLmJlZ3VuX2Fkdl9waG9uZXtmb250LXNpemU6MTFweCAhaW1wb3J0YW50O2xp bmUtaGVpZ2h0OjExcHggIWltcG9ydGFudDttYXJnaW4tdG9wOnt7cGhvbmVfbWFy Z2luX3RvcH19IHB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lk fX0gLmJlZ3VuX2Fkdl8xMjB4NjAwe3dpZHRoOjEyMHB4ICFpbXBvcnRhbnQ7aGVp Z2h0OjYwMHB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0g LmJlZ3VuX2Fkdl8xNjB4NjAwe3dpZHRoOjE2MHB4ICFpbXBvcnRhbnQ7aGVpZ2h0 OjYwMHB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJl Z3VuX2Fkdl90aXRsZSBhLCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3Vu X2Fkdl90aXRsZSBhICp7Y29sb3I6e3t0aXRsZTpjb2xvcn19ICFpbXBvcnRhbnQ7 fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2FkdiAuYmVndW5fYWR2 X3RpdGxlIGE6aG92ZXIsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5f YWR2IC5iZWd1bl9hZHZfdGl0bGUgYTpob3ZlciAqe2NvbG9yOiNmMDAgIWltcG9y dGFudDtjb2xvcjp7e3RpdGxlX2hvdmVyOmNvbG9yfX0gIWltcG9ydGFudDt9I2Jl Z3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X3RpdGxlLCNiZWd1bl9i bG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl90aXRsZSAqe2ZvbnQtc2l6ZTp7 e3RpdGxlOmZvbnRTaXplfX0gIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7Ymxv Y2tfaWR9fSAuYmVndW5fYWR2X2FsbCwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19 IC5iZWd1bl9hZHZfYWxsICp7Y29sb3I6e3tkb21haW46Y29sb3J9fSAhaW1wb3J0 YW50O2ZvbnQtc2l6ZTp7e2RvbWFpbjpmb250U2l6ZX19ICFpbXBvcnRhbnQ7fSNi ZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl90ZXh0LCNiZWd1bl9i bG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl90ZXh0ICp7Y29sb3I6e3t0ZXh0 OmNvbG9yfX0gIWltcG9ydGFudDtmb250LXNpemU6e3t0ZXh0OmZvbnRTaXplfX0g IWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246bm9uZSAhaW1wb3J0YW50O30jYmVn dW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfY29udGFjdCwjYmVndW5f YmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfY29udGFjdCBhLCNiZWd1bl9i bG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9jb250YWN0IHNwYW57Y29sb3I6 e3tkb21haW46Y29sb3J9fSAhaW1wb3J0YW50O2ZvbnQtc2l6ZTp7e2RvbWFpbjpm b250U2l6ZX19ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0g LmJlZ3VuX2Fkdl9zeXNfc2lnbl91cCwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19 IC5iZWd1bl9hZHZfc3lzX3NpZ25fdXAgKntjb2xvcjp7e2RvbWFpbjpjb2xvcn19 ICFpbXBvcnRhbnQ7Zm9udC1zaXplOnt7ZG9tYWluOmZvbnRTaXplfX0gIWltcG9y dGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2NvbnRh Y3QgYXtjb2xvcjp7e2RvbWFpbjpjb2xvcn19ICFpbXBvcnRhbnQ7dGV4dC1kZWNv cmF0aW9uOm5vbmUgIWltcG9ydGFudDtkaXNwbGF5OmlubGluZSAhaW1wb3J0YW50 O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfY29udGFjdCBz cGFue2Rpc3BsYXk6aW5saW5lICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Js b2NrX2lkfX0gLmJlZ3VuX2FkdiAuYmVndW5fYWR2X3RodW1iIC5iZWd1bl90aHVt YnttYXJnaW46MCAhaW1wb3J0YW50O2Zsb2F0OmxlZnQgIWltcG9ydGFudDtwb3Np dGlvbjpyZWxhdGl2ZSAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19p ZH19IC5iZWd1bl9hZHYgLmJlZ3VuX2Fkdl90aHVtYiAuYmVndW5fdGh1bWIgaW1n e21hcmdpbjowcHggYXV0byA1cHggMTBweCAhaW1wb3J0YW50O2Zsb2F0OmxlZnQg IWltcG9ydGFudDt3aWR0aDo1NnB4ICFpbXBvcnRhbnQ7aGVpZ2h0OjQycHggIWlt cG9ydGFudDtwb3NpdGlvbjphYnNvbHV0ZSAhaW1wb3J0YW50O3RvcDo4cHggIWlt cG9ydGFudDtsZWZ0OjAgIWltcG9ydGFudDt6LWluZGV4OjIwICFpbXBvcnRhbnQ7 fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2FkdiAuYmVndW5fYWR2 X3JpY2ggLmJlZ3VuX2Fkdl9pbWFnZXtmbG9hdDpsZWZ0ICFpbXBvcnRhbnQ7bWFy Z2luLXJpZ2h0OjEwcHggIWltcG9ydGFudDt0b3A6OHB4ICFpbXBvcnRhbnQ7d2lk dGg6NzBweCAhaW1wb3J0YW50O2hlaWdodDo3MHB4ICFpbXBvcnRhbnQ7cG9zaXRp b246cmVsYXRpdmUgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9 fSAuYmVndW5fYWR2XzcyOHg5MCAuYmVndW5fYWR2X3JpY2ggLmJlZ3VuX2Fkdl9p bWFnZSwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfdmVyIC5i ZWd1bl9hZHZfcmljaCAuYmVndW5fYWR2X2ltYWdle3RvcDo1cHggIWltcG9ydGFu dDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2IC5iZWd1bl9h ZHZfdGh1bWIgLmJlZ3VuX2Fkdl9ibG9ja3ttYXJnaW4tbGVmdDo4MHB4ICFpbXBv cnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2FkdiAuYmVn dW5fYWR2X3JpY2ggLmJlZ3VuX2Fkdl9ibG9ja3ttYXJnaW4tbGVmdDo4MHB4ICFp bXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8y MDB4MzAwIC5iZWd1bl9hZHZfY29tbW9ue2hlaWdodDoyODNweCAhaW1wb3J0YW50 O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfMjAweDMwMCAu YmVndW5fYWR2X2NvbW1vbiB0YWJsZXtoZWlnaHQ6MTAwJSAhaW1wb3J0YW50O30j YmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfMjAweDMwMCAuYmVn dW5fYWR2X2NvbW1vbi5iYW5uZXJzX2NvdW50XzF7aGVpZ2h0OmF1dG8gIWltcG9y dGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzIwMHgz MDAgLmJlZ3VuX2Fkdl9jb21tb24uYmFubmVyc19jb3VudF8xIHRhYmxle2hlaWdo dDphdXRvICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJl Z3VuX2Fkdl8yNDB4NDAwIC5iZWd1bl9hZHZfY29tbW9ue2hlaWdodDozNjFweCAh aW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZf MjQweDQwMCAuYmVndW5fYWR2X2NvbW1vbiB0YWJsZXtoZWlnaHQ6MTAwJSAhaW1w b3J0YW50O3dpZHRoOjEwMCUgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7Ymxv Y2tfaWR9fSAuYmVndW5fYWR2XzI0MHg0MDAgLmJlZ3VuX2Fkdl9jb21tb24uYmFu bmVyc19jb3VudF8xe2hlaWdodDphdXRvICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9j a197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8yNDB4NDAwIC5iZWd1bl9hZHZfY29t bW9uLmJhbm5lcnNfY291bnRfMSB0YWJsZXtoZWlnaHQ6YXV0byAhaW1wb3J0YW50 O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfMTIweDYwMCAu YmVndW5fYWR2X2NvbW1vbntoZWlnaHQ6NTUzcHggIWltcG9ydGFudDt9I2JlZ3Vu X2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzEyMHg2MDAgLmJlZ3VuX2Fk dl9jb21tb24gdGFibGV7aGVpZ2h0OjEwMCUgIWltcG9ydGFudDt9I2JlZ3VuX2Js b2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzEyMHg2MDAgLmJlZ3VuX2Fkdl9j b21tb24uYmFubmVyc19jb3VudF8xLCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0g LmJlZ3VuX2Fkdl8xMjB4NjAwIC5iZWd1bl9hZHZfY29tbW9uLmJhbm5lcnNfY291 bnRfMntoZWlnaHQ6YXV0byAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9j a19pZH19IC5iZWd1bl9hZHZfMTIweDYwMCAuYmVndW5fYWR2X2NvbW1vbi5iYW5u ZXJzX2NvdW50XzEgdGFibGUsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVn dW5fYWR2XzEyMHg2MDAgLmJlZ3VuX2Fkdl9jb21tb24uYmFubmVyc19jb3VudF8y IHRhYmxle2hlaWdodDphdXRvICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Js b2NrX2lkfX0gLmJlZ3VuX2Fkdl8xNjB4NjAwIC5iZWd1bl9hZHZfY29tbW9ue2hl aWdodDo1NThweCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19 IC5iZWd1bl9hZHZfMTYweDYwMCAuYmVndW5fYWR2X2NvbW1vbiB0YWJsZXtoZWln aHQ6MTAwJSAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5i ZWd1bl9hZHZfMTYweDYwMCAuYmVndW5fYWR2X2NvbW1vbi5iYW5uZXJzX2NvdW50 XzEsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzE2MHg2MDAg LmJlZ3VuX2Fkdl9jb21tb24uYmFubmVyc19jb3VudF8ye2hlaWdodDphdXRvICFp bXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8x NjB4NjAwIC5iZWd1bl9hZHZfY29tbW9uLmJhbm5lcnNfY291bnRfMSB0YWJsZSwj YmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfMTYweDYwMCAuYmVn dW5fYWR2X2NvbW1vbi5iYW5uZXJzX2NvdW50XzIgdGFibGV7aGVpZ2h0OmF1dG8g IWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2 X2ZsYXQsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2ZsYXQg LmJlZ3VuX2Fkdl9jb21tb24sI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVn dW5fYWR2X2ZsYXQgLmJlZ3VuX2Fkdl90YWJsZXt3aWR0aDoxMDAlICFpbXBvcnRh bnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9mbGF0IC5i ZWd1bl9hZHZfdGl0bGV7ZGlzcGxheTppbmxpbmUgIWltcG9ydGFudDt9I2JlZ3Vu X2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2ZsYXQgLmJlZ3VuX2Fkdl90 ZXh0e2Rpc3BsYXk6aW5saW5lICFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6MTBweCAh aW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZf ZmxhdCAuYmVndW5fYWR2X2ZhdntwYWRkaW5nLWJvdHRvbToxcHggIWltcG9ydGFu dDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzcyOHg5MCAu YmFubmVyc19jb3VudF8xIC5iZWd1bl9hZHZfY2VsbCwjYmVndW5fYmxvY2tfe3ti bG9ja19pZH19IC5iZWd1bl9hZHZfNzI4eDkwIC5iYW5uZXJzX2NvdW50XzEgLmJl Z3VuX2Fkdl9jZWxsICp7Zm9udC1zaXplOjEzcHggIWltcG9ydGFudDtsaW5lLWhl aWdodDoxNHB4ICFpbXBvcnRhbnQ7dGV4dC1hbGlnbjpjZW50ZXIgIWltcG9ydGFu dDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzcyOHg5MCAu YmFubmVyc19jb3VudF8xIC5iZWd1bl9hZHZfcGhvbmV7bWFyZ2luLXRvcDoycHgg IWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2 XzcyOHg5MCAuYmFubmVyc19jb3VudF8xIC5iZWd1bl9hZHZfdGV4dCwjYmVndW5f YmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfNzI4eDkwIC5iYW5uZXJzX2Nv dW50XzEgLmJlZ3VuX2Fkdl90ZXh0ICp7Zm9udC1zaXplOjE1cHggIWltcG9ydGFu dDtsaW5lLWhlaWdodDoxNnB4ICFpbXBvcnRhbnQ7dGV4dC1hbGlnbjpjZW50ZXIg IWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2 XzcyOHg5MCAuYmFubmVyc19jb3VudF8xIC5iZWd1bl9hZHZfdGl0bGUsI2JlZ3Vu X2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzcyOHg5MCAuYmFubmVyc19j b3VudF8xIC5iZWd1bl9hZHZfdGl0bGUgKntmb250LXNpemU6MTdweCAhaW1wb3J0 YW50O2xpbmUtaGVpZ2h0OjE5cHggIWltcG9ydGFudDt0ZXh0LWFsaWduOmNlbnRl ciAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9h ZHZfNzI4eDkwIC5iYW5uZXJzX2NvdW50XzEgLmJlZ3VuX2Fkdl90YWJsZXttYXJn aW4tbGVmdDoyNSUgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9 fSAuYmVndW5fYWR2XzIwMHgzMDAgLmJhbm5lcnNfY291bnRfMiAuYmVndW5fYWR2 X2NlbGwsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzIwMHgz MDAgLmJhbm5lcnNfY291bnRfMiAuYmVndW5fYWR2X2NlbGwgKntmb250LXNpemU6 MTJweCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjE0cHggIWltcG9ydGFudDt9I2Jl Z3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzIwMHgzMDAgLmJhbm5l cnNfY291bnRfMiAuYmVndW5fYWR2X3Bob25le21hcmdpbi10b3A6MnB4ICFpbXBv cnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8yMDB4 MzAwIC5iYW5uZXJzX2NvdW50XzIgLmJlZ3VuX2Fkdl90ZXh0LCNiZWd1bl9ibG9j a197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8yMDB4MzAwIC5iYW5uZXJzX2NvdW50 XzIgLmJlZ3VuX2Fkdl90ZXh0ICp7Zm9udC1zaXplOjEzcHggIWltcG9ydGFudDts aW5lLWhlaWdodDoxNXB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2Nr X2lkfX0gLmJlZ3VuX2Fkdl8yMDB4MzAwIC5iYW5uZXJzX2NvdW50XzIgLmJlZ3Vu X2Fkdl90aXRsZSwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZf MjAweDMwMCAuYmFubmVyc19jb3VudF8yIC5iZWd1bl9hZHZfdGl0bGUgKntmb250 LXNpemU6MTVweCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjE3cHggIWltcG9ydGFu dDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzIwMHgzMDAg LmJhbm5lcnNfY291bnRfMSAuYmVndW5fYWR2X2NlbGwsI2JlZ3VuX2Jsb2NrX3t7 YmxvY2tfaWR9fSAuYmVndW5fYWR2XzIwMHgzMDAgLmJhbm5lcnNfY291bnRfMSAu YmVndW5fYWR2X2NlbGwgKntmb250LXNpemU6MTRweCAhaW1wb3J0YW50O2xpbmUt aGVpZ2h0OjE2cHggIWltcG9ydGFudDt0ZXh0LWFsaWduOmNlbnRlciAhaW1wb3J0 YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfMjAweDMw MCAuYmFubmVyc19jb3VudF8xIC5iZWd1bl9hZHZfcGhvbmV7bWFyZ2luLXRvcDoz cHggIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5f YWR2XzIwMHgzMDAgLmJhbm5lcnNfY291bnRfMSAuYmVndW5fYWR2X3RleHQsI2Jl Z3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzIwMHgzMDAgLmJhbm5l cnNfY291bnRfMSAuYmVndW5fYWR2X3RleHQgKntmb250LXNpemU6MTZweCAhaW1w b3J0YW50O2xpbmUtaGVpZ2h0OjE5cHggIWltcG9ydGFudDt0ZXh0LWFsaWduOmNl bnRlciAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1 bl9hZHZfMjAweDMwMCAuYmFubmVyc19jb3VudF8xIC5iZWd1bl9hZHZfdGl0bGUs I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzIwMHgzMDAgLmJh bm5lcnNfY291bnRfMSAuYmVndW5fYWR2X3RpdGxlICp7Zm9udC1zaXplOjE4cHgg IWltcG9ydGFudDtsaW5lLWhlaWdodDoyM3B4ICFpbXBvcnRhbnQ7dGV4dC1hbGln bjpjZW50ZXIgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAu YmVndW5fYWR2XzIwMHgzMDAgLmJlZ3VuX2Fkdl9jb21tb24uYmFubmVyc19jb3Vu dF8xe2hlaWdodDoyODNweCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9j a19pZH19IC5iZWd1bl9hZHZfMjAweDMwMCAuYmVndW5fYWR2X2NvbW1vbi5iYW5u ZXJzX2NvdW50XzEgdGFibGV7aGVpZ2h0OjEwMCUgIWltcG9ydGFudDt9I2JlZ3Vu X2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzI0MHg0MDAgLmJhbm5lcnNf Y291bnRfMyAuYmVndW5fYWR2X2NlbGwsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9 fSAuYmVndW5fYWR2XzI0MHg0MDAgLmJhbm5lcnNfY291bnRfMyAuYmVndW5fYWR2 X2NlbGwgKntmb250LXNpemU6MTNweCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjE1 cHggIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5f YWR2XzI0MHg0MDAgLmJhbm5lcnNfY291bnRfMyAuYmVndW5fYWR2X3Bob25le21h cmdpbi10b3A6M3B4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lk fX0gLmJlZ3VuX2Fkdl8yNDB4NDAwIC5iYW5uZXJzX2NvdW50XzMgLmJlZ3VuX2Fk dl90ZXh0LCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8yNDB4 NDAwIC5iYW5uZXJzX2NvdW50XzMgLmJlZ3VuX2Fkdl90ZXh0ICp7Zm9udC1zaXpl OjE0cHggIWltcG9ydGFudDtsaW5lLWhlaWdodDoxN3B4ICFpbXBvcnRhbnQ7fSNi ZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8yNDB4NDAwIC5iYW5u ZXJzX2NvdW50XzMgLmJlZ3VuX2Fkdl90aXRsZSwjYmVndW5fYmxvY2tfe3tibG9j a19pZH19IC5iZWd1bl9hZHZfMjQweDQwMCAuYmFubmVyc19jb3VudF8zIC5iZWd1 bl9hZHZfdGl0bGUgKntmb250LXNpemU6MTVweCAhaW1wb3J0YW50O2xpbmUtaGVp Z2h0OjE3cHggIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAu YmVndW5fYWR2XzI0MHg0MDAgLmJhbm5lcnNfY291bnRfMiAuYmVndW5fYWR2X2Nl bGwsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzI0MHg0MDAg LmJhbm5lcnNfY291bnRfMiAuYmVndW5fYWR2X2NlbGwgKntmb250LXNpemU6MTNw eCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjE3cHggIWltcG9ydGFudDt9I2JlZ3Vu X2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzI0MHg0MDAgLmJhbm5lcnNf Y291bnRfMiAuYmVndW5fYWR2X3Bob25le21hcmdpbi10b3A6NHB4ICFpbXBvcnRh bnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8yNDB4NDAw IC5iYW5uZXJzX2NvdW50XzIgLmJlZ3VuX2Fkdl90ZXh0LCNiZWd1bl9ibG9ja197 e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8yNDB4NDAwIC5iYW5uZXJzX2NvdW50XzIg LmJlZ3VuX2Fkdl90ZXh0ICp7Zm9udC1zaXplOjE0cHggIWltcG9ydGFudDtsaW5l LWhlaWdodDoxOXB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lk fX0gLmJlZ3VuX2Fkdl8yNDB4NDAwIC5iYW5uZXJzX2NvdW50XzIgLmJlZ3VuX2Fk dl90aXRsZSwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfMjQw eDQwMCAuYmFubmVyc19jb3VudF8yIC5iZWd1bl9hZHZfdGl0bGUgKntmb250LXNp emU6MTZweCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjE4cHggIWltcG9ydGFudDt9 I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzI0MHg0MDAgLmJh bm5lcnNfY291bnRfMSAuYmVndW5fYWR2X2NlbGwsI2JlZ3VuX2Jsb2NrX3t7Ymxv Y2tfaWR9fSAuYmVndW5fYWR2XzI0MHg0MDAgLmJhbm5lcnNfY291bnRfMSAuYmVn dW5fYWR2X2NlbGwgKntmb250LXNpemU6MTVweCAhaW1wb3J0YW50O2xpbmUtaGVp Z2h0OjE5cHggIWltcG9ydGFudDt0ZXh0LWFsaWduOmNlbnRlciAhaW1wb3J0YW50 O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfMjQweDQwMCAu YmFubmVyc19jb3VudF8xIC5iZWd1bl9hZHZfcGhvbmV7bWFyZ2luLXRvcDo1cHgg IWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2 XzI0MHg0MDAgLmJhbm5lcnNfY291bnRfMSAuYmVndW5fYWR2X3RleHQsI2JlZ3Vu X2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzI0MHg0MDAgLmJhbm5lcnNf Y291bnRfMSAuYmVndW5fYWR2X3RleHQgKntmb250LXNpemU6MTZweCAhaW1wb3J0 YW50O2xpbmUtaGVpZ2h0OjE5cHggIWltcG9ydGFudDt0ZXh0LWFsaWduOmNlbnRl ciAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9h ZHZfMjQweDQwMCAuYmFubmVyc19jb3VudF8xIC5iZWd1bl9hZHZfdGl0bGUsI2Jl Z3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzI0MHg0MDAgLmJhbm5l cnNfY291bnRfMSAuYmVndW5fYWR2X3RpdGxlICp7Zm9udC1zaXplOjE4cHggIWlt cG9ydGFudDtsaW5lLWhlaWdodDoyNXB4ICFpbXBvcnRhbnQ7dGV4dC1hbGlnbjpj ZW50ZXIgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVn dW5fYWR2XzI0MHg0MDAgLmJlZ3VuX2Fkdl9jb21tb24uYmFubmVyc19jb3VudF8x e2hlaWdodDozNjFweCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19p ZH19IC5iZWd1bl9hZHZfMjQweDQwMCAuYmVndW5fYWR2X2NvbW1vbi5iYW5uZXJz X2NvdW50XzEgdGFibGV7aGVpZ2h0OjEwMCUgIWltcG9ydGFudDt9I2JlZ3VuX2Js b2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzEyMHg2MDAgLmJhbm5lcnNfY291 bnRfNCAuYmVndW5fYWR2X2NlbGwsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAu YmVndW5fYWR2XzEyMHg2MDAgLmJhbm5lcnNfY291bnRfNCAuYmVndW5fYWR2X2Nl bGwgKntmb250LXNpemU6MTFweCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEycHgg IWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2 XzEyMHg2MDAgLmJhbm5lcnNfY291bnRfNCAuYmVndW5fYWR2X3Bob25le21hcmdp bi10b3A6MnB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0g LmJlZ3VuX2Fkdl8xMjB4NjAwIC5iYW5uZXJzX2NvdW50XzQgLmJlZ3VuX2Fkdl90 ZXh0LCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8xMjB4NjAw IC5iYW5uZXJzX2NvdW50XzQgLmJlZ3VuX2Fkdl90ZXh0ICp7Zm9udC1zaXplOjEy cHggIWltcG9ydGFudDtsaW5lLWhlaWdodDoxM3B4ICFpbXBvcnRhbnQ7fSNiZWd1 bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8xMjB4NjAwIC5iYW5uZXJz X2NvdW50XzQgLmJlZ3VuX2Fkdl90aXRsZSwjYmVndW5fYmxvY2tfe3tibG9ja19p ZH19IC5iZWd1bl9hZHZfMTIweDYwMCAuYmFubmVyc19jb3VudF80IC5iZWd1bl9h ZHZfdGl0bGUgKntmb250LXNpemU6MTNweCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0 OjE0cHggIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVn dW5fYWR2XzEyMHg2MDAgLmJhbm5lcnNfY291bnRfMyAuYmVndW5fYWR2X2NlbGws I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzEyMHg2MDAgLmJh bm5lcnNfY291bnRfMyAuYmVndW5fYWR2X2NlbGwgKntmb250LXNpemU6MTJweCAh aW1wb3J0YW50O2xpbmUtaGVpZ2h0OjE1cHggIWltcG9ydGFudDt9I2JlZ3VuX2Js b2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzEyMHg2MDAgLmJhbm5lcnNfY291 bnRfMyAuYmVndW5fYWR2X3Bob25le21hcmdpbi10b3A6M3B4ICFpbXBvcnRhbnQ7 fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8xMjB4NjAwIC5i YW5uZXJzX2NvdW50XzMgLmJlZ3VuX2Fkdl90ZXh0LCNiZWd1bl9ibG9ja197e2Js b2NrX2lkfX0gLmJlZ3VuX2Fkdl8xMjB4NjAwIC5iYW5uZXJzX2NvdW50XzMgLmJl Z3VuX2Fkdl90ZXh0ICp7Zm9udC1zaXplOjEzcHggIWltcG9ydGFudDtsaW5lLWhl aWdodDoxNXB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0g LmJlZ3VuX2Fkdl8xMjB4NjAwIC5iYW5uZXJzX2NvdW50XzMgLmJlZ3VuX2Fkdl90 aXRsZSwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfMTIweDYw MCAuYmFubmVyc19jb3VudF8zIC5iZWd1bl9hZHZfdGl0bGUgKntmb250LXNpemU6 MTVweCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjE5cHggIWltcG9ydGFudDt9I2Jl Z3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzEyMHg2MDAgLmJhbm5l cnNfY291bnRfMiAuYmVndW5fYWR2X2NlbGwsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tf aWR9fSAuYmVndW5fYWR2XzEyMHg2MDAgLmJhbm5lcnNfY291bnRfMiAuYmVndW5f YWR2X2NlbGwgKntmb250LXNpemU6MTNweCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0 OjE1cHggIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVn dW5fYWR2XzEyMHg2MDAgLmJhbm5lcnNfY291bnRfMiAuYmVndW5fYWR2X3Bob25l e21hcmdpbi10b3A6NHB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2Nr X2lkfX0gLmJlZ3VuX2Fkdl8xMjB4NjAwIC5iYW5uZXJzX2NvdW50XzIgLmJlZ3Vu X2Fkdl90ZXh0LCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8x MjB4NjAwIC5iYW5uZXJzX2NvdW50XzIgLmJlZ3VuX2Fkdl90ZXh0ICp7Zm9udC1z aXplOjE0cHggIWltcG9ydGFudDtsaW5lLWhlaWdodDoxNnB4ICFpbXBvcnRhbnQ7 fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8xMjB4NjAwIC5i YW5uZXJzX2NvdW50XzIgLmJlZ3VuX2Fkdl90aXRsZSwjYmVndW5fYmxvY2tfe3ti bG9ja19pZH19IC5iZWd1bl9hZHZfMTIweDYwMCAuYmFubmVyc19jb3VudF8yIC5i ZWd1bl9hZHZfdGl0bGUgKntmb250LXNpemU6MTVweCAhaW1wb3J0YW50O2xpbmUt aGVpZ2h0OjE5cHggIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9 fSAuYmVndW5fYWR2XzEyMHg2MDAgLmJlZ3VuX2Fkdl9jb21tb24uYmFubmVyc19j b3VudF8ye2hlaWdodDo1NTNweCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3ti bG9ja19pZH19IC5iZWd1bl9hZHZfMTIweDYwMCAuYmVndW5fYWR2X2NvbW1vbi5i YW5uZXJzX2NvdW50XzIgdGFibGV7aGVpZ2h0OjEwMCUgIWltcG9ydGFudDt9I2Jl Z3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzEyMHg2MDAgLmJhbm5l cnNfY291bnRfMSAuYmVndW5fYWR2X2NlbGwsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tf aWR9fSAuYmVndW5fYWR2XzEyMHg2MDAgLmJhbm5lcnNfY291bnRfMSAuYmVndW5f YWR2X2NlbGwgKntmb250LXNpemU6MTRweCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0 OjE4cHggIWltcG9ydGFudDt0ZXh0LWFsaWduOmNlbnRlciAhaW1wb3J0YW50O30j YmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfMTIweDYwMCAuYmFu bmVyc19jb3VudF8xIC5iZWd1bl9hZHZfcGhvbmV7bWFyZ2luLXRvcDo1cHggIWlt cG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzEy MHg2MDAgLmJhbm5lcnNfY291bnRfMSAuYmVndW5fYWR2X3RleHQsI2JlZ3VuX2Js b2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzEyMHg2MDAgLmJhbm5lcnNfY291 bnRfMSAuYmVndW5fYWR2X3RleHQgKntmb250LXNpemU6MTVweCAhaW1wb3J0YW50 O2xpbmUtaGVpZ2h0OjE4cHggIWltcG9ydGFudDt0ZXh0LWFsaWduOmNlbnRlciAh aW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZf MTIweDYwMCAuYmFubmVyc19jb3VudF8xIC5iZWd1bl9hZHZfdGl0bGUsI2JlZ3Vu X2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzEyMHg2MDAgLmJhbm5lcnNf Y291bnRfMSAuYmVndW5fYWR2X3RpdGxlICp7Zm9udC1zaXplOjE2cHggIWltcG9y dGFudDtsaW5lLWhlaWdodDoyMHB4ICFpbXBvcnRhbnQ7dGV4dC1hbGlnbjpjZW50 ZXIgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5f YWR2XzEyMHg2MDAgLmJlZ3VuX2Fkdl9jb21tb24uYmFubmVyc19jb3VudF8xe2hl aWdodDo1NTNweCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19 IC5iZWd1bl9hZHZfMTIweDYwMCAuYmVndW5fYWR2X2NvbW1vbi5iYW5uZXJzX2Nv dW50XzEgdGFibGV7aGVpZ2h0OjEwMCUgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2Nr X3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzE2MHg2MDAgLmJhbm5lcnNfY291bnRf MyAuYmVndW5fYWR2X2NlbGwsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVn dW5fYWR2XzE2MHg2MDAgLmJhbm5lcnNfY291bnRfMyAuYmVndW5fYWR2X2NlbGwg KiwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfMTYweDYwMCAu YmFubmVyc19jb3VudF8yIC5iZWd1bl9hZHZfY2VsbCwjYmVndW5fYmxvY2tfe3ti bG9ja19pZH19IC5iZWd1bl9hZHZfMTYweDYwMCAuYmFubmVyc19jb3VudF8yIC5i ZWd1bl9hZHZfY2VsbCAqe2ZvbnQtc2l6ZToxM3B4ICFpbXBvcnRhbnQ7bGluZS1o ZWlnaHQ6MTZweCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19 IC5iZWd1bl9hZHZfMTYweDYwMCAuYmFubmVyc19jb3VudF8zIC5iZWd1bl9hZHZf cGhvbmUsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzE2MHg2 MDAgLmJhbm5lcnNfY291bnRfMiAuYmVndW5fYWR2X3Bob25le21hcmdpbi10b3A6 NHB4ICFpbXBvcnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3Vu X2Fkdl8xNjB4NjAwIC5iYW5uZXJzX2NvdW50XzMgLmJlZ3VuX2Fkdl90ZXh0LCNi ZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8xNjB4NjAwIC5iYW5u ZXJzX2NvdW50XzMgLmJlZ3VuX2Fkdl90ZXh0ICosI2JlZ3VuX2Jsb2NrX3t7Ymxv Y2tfaWR9fSAuYmVndW5fYWR2XzE2MHg2MDAgLmJhbm5lcnNfY291bnRfMiAuYmVn dW5fYWR2X3RleHQsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2 XzE2MHg2MDAgLmJhbm5lcnNfY291bnRfMiAuYmVndW5fYWR2X3RleHQgKntmb250 LXNpemU6MTRweCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjE4cHggIWltcG9ydGFu dDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzE2MHg2MDAg LmJhbm5lcnNfY291bnRfMyAuYmVndW5fYWR2X3RpdGxlLCNiZWd1bl9ibG9ja197 e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8xNjB4NjAwIC5iYW5uZXJzX2NvdW50XzMg LmJlZ3VuX2Fkdl90aXRsZSAqLCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJl Z3VuX2Fkdl8xNjB4NjAwIC5iYW5uZXJzX2NvdW50XzIgLmJlZ3VuX2Fkdl90aXRs ZSwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfMTYweDYwMCAu YmFubmVyc19jb3VudF8yIC5iZWd1bl9hZHZfdGl0bGUgKntmb250LXNpemU6MTVw eCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjIwcHggIWltcG9ydGFudDt9I2JlZ3Vu X2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzE2MHg2MDAgLmJhbm5lcnNf Y291bnRfMSAuYmVndW5fYWR2X2NlbGwsI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9 fSAuYmVndW5fYWR2XzE2MHg2MDAgLmJhbm5lcnNfY291bnRfMSAuYmVndW5fYWR2 X2NlbGwgKntmb250LXNpemU6MTVweCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjE4 cHggIWltcG9ydGFudDt0ZXh0LWFsaWduOmNlbnRlciAhaW1wb3J0YW50O30jYmVn dW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfMTYweDYwMCAuYmFubmVy c19jb3VudF8xIC5iZWd1bl9hZHZfcGhvbmV7bWFyZ2luLXRvcDo1cHggIWltcG9y dGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzE2MHg2 MDAgLmJhbm5lcnNfY291bnRfMSAuYmVndW5fYWR2X3RleHQsI2JlZ3VuX2Jsb2Nr X3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzE2MHg2MDAgLmJhbm5lcnNfY291bnRf MSAuYmVndW5fYWR2X3RleHQgKntmb250LXNpemU6MTZweCAhaW1wb3J0YW50O2xp bmUtaGVpZ2h0OjIwcHggIWltcG9ydGFudDt0ZXh0LWFsaWduOmNlbnRlciAhaW1w b3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfMTYw eDYwMCAuYmFubmVyc19jb3VudF8xIC5iZWd1bl9hZHZfdGl0bGUsI2JlZ3VuX2Js b2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzE2MHg2MDAgLmJhbm5lcnNfY291 bnRfMSAuYmVndW5fYWR2X3RpdGxlICp7Zm9udC1zaXplOjE4cHggIWltcG9ydGFu dDtsaW5lLWhlaWdodDoyM3B4ICFpbXBvcnRhbnQ7dGV4dC1hbGlnbjpjZW50ZXIg IWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2 XzE2MHg2MDAgLmJlZ3VuX2Fkdl9jb21tb24uYmFubmVyc19jb3VudF8yLCNiZWd1 bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8xNjB4NjAwIC5iZWd1bl9h ZHZfY29tbW9uLmJhbm5lcnNfY291bnRfMXtoZWlnaHQ6NTU4cHggIWltcG9ydGFu dDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzE2MHg2MDAg LmJlZ3VuX2Fkdl9jb21tb24uYmFubmVyc19jb3VudF8yIHRhYmxlLCNiZWd1bl9i bG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8xNjB4NjAwIC5iZWd1bl9hZHZf Y29tbW9uLmJhbm5lcnNfY291bnRfMSB0YWJsZXtoZWlnaHQ6MTAwJSAhaW1wb3J0 YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfYWNjb3Jk aW9uIC5hY2NvcmRpb25fc2VjdGlvbiAuYmVndW5fYWR2X2NlbGwgLmJlZ3VuX2Fk dl9ibG9jayAuYmVndW5fYWR2X3RpdGxlLCNiZWd1bl9ibG9ja197e2Jsb2NrX2lk fX0gLmJlZ3VuX2Fkdl9hY2NvcmRpb24gLmFjY29yZGlvbl9zZWN0aW9uIC5iZWd1 bl9hZHZfY2VsbCAuYmVndW5fYWR2X2Jsb2NrIC5zZWN0aW9ue2JvcmRlcjoxcHgg c29saWQgdHJhbnNwYXJlbnQgIWltcG9ydGFudDtfYm9yZGVyOm5vbmUgIWltcG9y dGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X2FjY29y ZGlvbiAuYWNjb3JkaW9uX3NlY3Rpb24gLmJlZ3VuX2Fkdl9jZWxse3ZlcnRpY2Fs LWFsaWduOnRvcCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19 IC5iZWd1bl9hZHZfYWNjb3JkaW9uIC5iZWd1bl9hZHZfYmxvY2t7bWFyZ2luOjVw eCAwIDAgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVn dW5fYWR2XzI0MHg0MDAgLmJlZ3VuX2Fkdl9yaWNoIC5iZWd1bl9hZHZfY29udGFj dCwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfMjQweDQwMCAu YmVndW5fYWR2X3JpY2ggLmJlZ3VuX2Fkdl9jb250YWN0ICosI2JlZ3VuX2Jsb2Nr X3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzI0MHg0MDAgLmJlZ3VuX2Fkdl9yaWNo IC5iZWd1bl9hZHZfY2VsbCwjYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1 bl9hZHZfMjQweDQwMCAuYmVndW5fYWR2X3JpY2ggLmJlZ3VuX2Fkdl9jZWxsICp7 Zm9udC1zaXplOjExcHggIWltcG9ydGFudDtsaW5lLWhlaWdodDoxMXB4ICFpbXBv cnRhbnQ7fSNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl8yNDB4 NDAwIC5iZWd1bl9hZHZfcmljaCAuYmVndW5fYWR2X3RleHQsI2JlZ3VuX2Jsb2Nr X3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzI0MHg0MDAgLmJlZ3VuX2Fkdl9yaWNo IC5iZWd1bl9hZHZfdGV4dCAqe2ZvbnQtc2l6ZToxMnB4ICFpbXBvcnRhbnQ7bGlu ZS1oZWlnaHQ6MTNweCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19p ZH19IC5iZWd1bl9hZHZfMjQweDQwMCAuYmFubmVyc19jb3VudF8zIC5iZWd1bl9h ZHZfcmljaCAuYmVndW5fYWR2X3RpdGxlLCNiZWd1bl9ibG9ja197e2Jsb2NrX2lk fX0gLmJlZ3VuX2Fkdl8yNDB4NDAwIC5iYW5uZXJzX2NvdW50XzMgLmJlZ3VuX2Fk dl9yaWNoIC5iZWd1bl9hZHZfdGl0bGUgKntmb250LXNpemU6MTNweCAhaW1wb3J0 YW50O2xpbmUtaGVpZ2h0OjE0cHggIWltcG9ydGFudDt9I2JlZ3VuX3RvcF9ncmFw aF9iYW5uZXJ7bWFyZ2luOjJweCAwcHggMnB4IDBweCAhaW1wb3J0YW50O2JvcmRl cjpub25lICFpbXBvcnRhbnQ7Ym9yZGVyLXNwYWNpbmc6MHB4ICFpbXBvcnRhbnQ7 YmFja2dyb3VuZC1jb2xvcjojZmZmICFpbXBvcnRhbnQ7fSNiZWd1bl90b3BfZ3Jh cGhfYmFubmVyIC5iZWd1bl90b3BfZ3JhcGhfYmFubmVyX2xlZnRfY29sLCNiZWd1 bl90b3BfZ3JhcGhfYmFubmVyIC5iZWd1bl90b3BfZ3JhcGhfYmFubmVyX3JpZ2h0 X2NvbHtoZWlnaHQ6OTBweCAhaW1wb3J0YW50O3dpZHRoOjUwJSAhaW1wb3J0YW50 O2JhY2tncm91bmQtY29sb3I6I2ZmZiAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tf e3tibG9ja19pZH19IC5iZWd1bl9hZHYgLmJlZ3VuX2Fkdl9jZWxsIC5iZWd1bl9h ZHZfcGhvbmVfd3JhcHBlciAuYmVndW5fYWR2X3Bob25lICp7Zm9udC1zaXplOjFw eCAhaW1wb3J0YW50O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9h ZHZfdmVyIC5iZWd1bl9hZHZfcGhvbmV7bWFyZ2luLXRvcDozcHggIWltcG9ydGFu dDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzEyMHg2MDAg LmJlZ3VuX2Fkdl9jb21tb24uYmVndW5fZXh0ZW5kZWRfYmxvY2ssI2JlZ3VuX2Js b2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzE2MHg2MDAgLmJlZ3VuX2Fkdl9j b21tb24uYmVndW5fZXh0ZW5kZWRfYmxvY2ssI2JlZ3VuX2Jsb2NrX3t7YmxvY2tf aWR9fSAuYmVndW5fYWR2XzIwMHgzMDAgLmJlZ3VuX2Fkdl9jb21tb24uYmVndW5f ZXh0ZW5kZWRfYmxvY2ssI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5f YWR2XzI0MHg0MDAgLmJlZ3VuX2Fkdl9jb21tb24uYmVndW5fZXh0ZW5kZWRfYmxv Y2t7aGVpZ2h0OjEwMCUgIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tf aWR9fSAuYmVndW5fYWR2XzcyOHg5MCAuYmVndW5fYWR2X3RhYmxlLmJlZ3VuX2V4 dGVuZGVkX2Jsb2NrLCNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fk dl80Njh4NjAgLmJlZ3VuX2Fkdl90YWJsZS5iZWd1bl9leHRlbmRlZF9ibG9ja3tt YXJnaW4tbGVmdDowcHggIWltcG9ydGFudDt9I2JlZ3VuX2Jsb2NrX3t7YmxvY2tf aWR9fSAuYmVndW5fYWR2XzI0MHg0MDAgLmJlZ3VuX2Fkdl9jb21tb24uYmVndW5f ZXh0ZW5kZWRfYmxvY2tfd2l0aF9sb2dve2hlaWdodDozODJweCAhaW1wb3J0YW50 O30jYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfMTYweDYwMCAu YmVndW5fYWR2X2NvbW1vbi5iZWd1bl9leHRlbmRlZF9ibG9ja193aXRoX2xvZ28s I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2XzEyMHg2MDAgLmJl Z3VuX2Fkdl9jb21tb24uYmVndW5fZXh0ZW5kZWRfYmxvY2tfd2l0aF9sb2dve2hl aWdodDo1ODJweCAhaW1wb3J0YW50O31cCiNiZWd1bl9ibG9ja197e2Jsb2NrX2lk fX0gLmJlZ3VuX2FkdiB7XApiYWNrZ3JvdW5kLWNvbG9yOiB7e2Jsb2NrOmJhY2tn cm91bmRDb2xvcn19OyAvKiBubyAhaW1wb3J0YW50IGZvciBob3ZlciAqL1wKYm9y ZGVyOiAxcHggc29saWQge3tibG9jazpib3JkZXJDb2xvcn19OyAvKiBubyAhaW1w b3J0YW50IGZvciBob3ZlciAqL1wKZmlsdGVyOiB7e2Jsb2NrOmZpbHRlcn19OyAv KiBubyAhaW1wb3J0YW50IGZvciBob3ZlciAqL1wKfVwKI2JlZ3VuX2Jsb2NrX3t7 YmxvY2tfaWR9fSAuYmVndW5fYWR2LmJlZ3VuX2hvdmVyIHtcCmJhY2tncm91bmQt Y29sb3I6IHt7YmxvY2tfaG92ZXI6YmFja2dyb3VuZENvbG9yfX07IC8qIG5vICFp bXBvcnRhbnQgZm9yIGhvdmVyICovXApib3JkZXI6IDFweCBzb2xpZCB7e2Jsb2Nr X2hvdmVyOmJvcmRlckNvbG9yfX07IC8qIG5vICFpbXBvcnRhbnQgZm9yIGhvdmVy ICovXApmaWx0ZXI6IHt7YmxvY2tfaG92ZXI6ZmlsdGVyfX07IC8qIG5vICFpbXBv cnRhbnQgZm9yIGhvdmVyICovXAp9XAojYmVndW5fYmxvY2tfe3tibG9ja19pZH19 ICNiZWd1bl9hZHZfc3F1YXJlX3t7YmxvY2tfaWR9fSB7XApiYWNrZ3JvdW5kOiBu b25lICFpbXBvcnRhbnQ7XApib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcCmZpbHRl cjogbm9uZSAhaW1wb3J0YW50O1wKfVwKI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9 fSAjYmVndW5fYWR2X3NxdWFyZV97e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl9hbGwg dGQge1wKcGFkZGluZzo1cHggIWltcG9ydGFudDtcCn1cCiNiZWd1bl9ibG9ja197 e2Jsb2NrX2lkfX0gI2JlZ3VuX2Fkdl9zcXVhcmVfe3tibG9ja19pZH19IC5iZWd1 bl9hZHZfc3lzIC5iZWd1bl9hZHZfc3lzX3NpZ25fdXAge1wKcGFkZGluZy1yaWdo dDo1cHggIWltcG9ydGFudDtcCn1cCiNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0g I2JlZ3VuX2Fkdl9zcXVhcmVfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfYWxsLFwK I2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAjYmVndW5fYWR2X3NxdWFyZV97e2Js b2NrX2lkfX0gLmJlZ3VuX2Fkdl9zeXMsXAojYmVndW5fYmxvY2tfe3tibG9ja19p ZH19ICNiZWd1bl9hZHZfc3F1YXJlX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X3Rh YmxlIHRkIHtcCmJhY2tncm91bmQtY29sb3I6IHt7YmxvY2s6YmFja2dyb3VuZENv bG9yfX0gIWltcG9ydGFudDtcCmJvcmRlcjogMXB4IHNvbGlkIHt7YmxvY2s6Ym9y ZGVyQ29sb3J9fSAhaW1wb3J0YW50O1wKZmlsdGVyOiB7e2Jsb2NrOmZpbHRlcn19 O1wKfVwKI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAjYmVndW5fYWR2X3NxdWFy ZV97e2Jsb2NrX2lkfX0gLmJlZ3VuX2Fkdl90YWJsZSB7XApmaWx0ZXI6IHt7Ymxv Y2s6ZmlsdGVyfX07XApwb3NpdGlvbjpzdGF0aWMgIWltcG9ydGFudDtcCn1cCiNi ZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gI2JlZ3VuX2Fkdl9zcXVhcmVfe3tibG9j a19pZH19IC5iZWd1bl9hZHZfdGFibGUgdGQge1wKdmVydGljYWwtYWxpZ246dG9w ICFpbXBvcnRhbnQ7XAp9XAojYmVndW5fYmxvY2tfe3tibG9ja19pZH19ICNiZWd1 bl9hZHZfc3F1YXJlX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X3RhYmxlIHRkIC5i ZWd1bl9hZHZfYmxvY2sge1wKcG9zaXRpb246cmVsYXRpdmUgIWltcG9ydGFudDtc CnotaW5kZXg6NTAwMDAwMCAhaW1wb3J0YW50O1wKfVwKI2JlZ3VuX2Jsb2NrX3t7 YmxvY2tfaWR9fSAjYmVndW5fYWR2X3NxdWFyZV97e2Jsb2NrX2lkfX0gLmJlZ3Vu X2Fkdl9hbGwgKixcCiNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gI2JlZ3VuX2Fk dl9zcXVhcmVfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfc3lzICoge1wKYmFja2dy b3VuZC1jb2xvcjoge3tibG9jazpiYWNrZ3JvdW5kQ29sb3J9fSAhaW1wb3J0YW50 O1wKfVwKI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAjYmVndW5fYWR2X3NxdWFy ZV97e2Jsb2NrX2lkfX0uYmVndW5faG92ZXIgLmJlZ3VuX2Fkdl9hbGwsIFwKI2Jl Z3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAjYmVndW5fYWR2X3NxdWFyZV97e2Jsb2Nr X2lkfX0uYmVndW5faG92ZXIgLmJlZ3VuX2Fkdl9zeXMsIFwKI2JlZ3VuX2Jsb2Nr X3t7YmxvY2tfaWR9fSAjYmVndW5fYWR2X3NxdWFyZV97e2Jsb2NrX2lkfX0uYmVn dW5faG92ZXIgLmJlZ3VuX2Fkdl90YWJsZSB0ZCB7IFwKYmFja2dyb3VuZC1jb2xv cjoge3tibG9ja19ob3ZlcjpiYWNrZ3JvdW5kQ29sb3J9fSAhaW1wb3J0YW50O1wK Ym9yZGVyOiAxcHggc29saWQge3tibG9ja19ob3Zlcjpib3JkZXJDb2xvcn19ICFp bXBvcnRhbnQ7XApmaWx0ZXI6IHt7YmxvY2tfaG92ZXI6ZmlsdGVyfX07XAp9XAoj YmVndW5fYmxvY2tfe3tibG9ja19pZH19ICNiZWd1bl9hZHZfc3F1YXJlX3t7Ymxv Y2tfaWR9fS5iZWd1bl9ob3ZlciAuYmVndW5fYWR2X3RhYmxlIHtcCmZpbHRlcjog e3tibG9ja19ob3ZlcjpmaWx0ZXJ9fTtcCn1cCiNiZWd1bl9ibG9ja197e2Jsb2Nr X2lkfX0gI2JlZ3VuX2Fkdl9zcXVhcmVfe3tibG9ja19pZH19LmJlZ3VuX2hvdmVy IC5iZWd1bl9hZHZfYWxsICosXAojYmVndW5fYmxvY2tfe3tibG9ja19pZH19ICNi ZWd1bl9hZHZfc3F1YXJlX3t7YmxvY2tfaWR9fS5iZWd1bl9ob3ZlciAuYmVndW5f YWR2X3N5cyAqIHtcCmJhY2tncm91bmQtY29sb3I6IHt7YmxvY2tfaG92ZXI6YmFj a2dyb3VuZENvbG9yfX0gIWltcG9ydGFudDtcCn1cCiNiZWd1bl9ibG9ja197e2Js b2NrX2lkfX0gI2JlZ3VuX2Fkdl9zcXVhcmVfe3tibG9ja19pZH19IC5iZWd1bl9h ZHZfc3lzIC5iZWd1bl9hZHZfc3lzX2xvZ28gKiB7XApiYWNrZ3JvdW5kLWNvbG9y OnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XAp9XAojYmVndW5fYmxvY2tfe3tibG9j a19pZH19ICNiZWd1bl9hZHZfc3F1YXJlX3t7YmxvY2tfaWR9fS5iZWd1bl9ob3Zl ciAuYmVndW5fYWR2X2FsbCxcCiNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gI2Jl Z3VuX2Fkdl9zcXVhcmVfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfYWxsIHtcCndp ZHRoOjEwMCUgIWltcG9ydGFudDtcCmJvcmRlci10b3A6bm9uZSAhaW1wb3J0YW50 O1wKfVwKI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAjYmVndW5fYWR2X3NxdWFy ZV97e2Jsb2NrX2lkfX0uYmVndW5faG92ZXIgLmJlZ3VuX2Fkdl9zeXMsIFwKI2Jl Z3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAjYmVndW5fYWR2X3NxdWFyZV97e2Jsb2Nr X2lkfX0gLmJlZ3VuX2Fkdl9zeXMge1wKYm9yZGVyLWJvdHRvbTpub25lICFpbXBv cnRhbnQ7XAp9XAojYmVndW5fYmxvY2tfe3tibG9ja19pZH19ICNiZWd1bl9hZHZf c3F1YXJlX3t7YmxvY2tfaWR9fS5iZWd1bl9ob3ZlciB7XApib3JkZXItcmlnaHQ6 MXB4IHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XApfYm9yZGVyLXJpZ2h0 Om5vbmUgIWltcG9ydGFudDtcCn1cCiNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0g I2JlZ3VuX2Fkdl90YWJsZV97e2Jsb2NrX2lkfX0ge1wKYmFja2dyb3VuZC1jb2xv cjoge3t0YWJsZTpiYWNrZ3JvdW5kQ29sb3J9fSAhaW1wb3J0YW50O1wKfVwKI2Jl Z3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2LmJlZ3VuX2hvdmVyICNi ZWd1bl9hZHZfdGFibGVfe3tibG9ja19pZH19IHtcCmJhY2tncm91bmQtY29sb3I6 IHt7dGFibGVfaG92ZXI6YmFja2dyb3VuZENvbG9yfX0gIWltcG9ydGFudDtcCn1c CiNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2FkdiAuYmVndW5fdGh1 bWIgaW1nIHtcCmJhY2tncm91bmQ6e3t0aHVtYjpiYWNrZ3JvdW5kQ29sb3J9fTtc IC8qIG5vICFpbXBvcnRhbnQgZm9yIGhvdmVyICovXAp9XAojYmVndW5fYmxvY2tf e3tibG9ja19pZH19IC5iZWd1bl9hZHYgLmJlZ3VuX2Fkdl9yaWNoIC5iZWd1bl9h Y3RpdmVfaW1hZ2Uge1wKei1pbmRleDoxMDAwO1wKfVwKI2JlZ3VuX2Jsb2NrX3t7 YmxvY2tfaWR9fSAuYmVndW5fYWR2IC5iZWd1bl9hZHZfcmljaCAuYmVndW5fYWN0 aXZlX2ltYWdlIGltZyB7XAp6LWluZGV4OjEwMDAgIWltcG9ydGFudDtcCn1cCiNi ZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2FkdiAuYmVndW5fYWR2X3Jp Y2ggLmJlZ3VuX2Fkdl9pbWFnZSBpbWcge1wKYm9yZGVyOjFweCBzb2xpZCAjNjIy Njc4O1wKcG9zaXRpb246YWJzb2x1dGUgIWltcG9ydGFudDtcCnRvcDowO1wKbGVm dDowO1wKei1pbmRleDoyMDtcCmN1cnNvcjpwb2ludGVyO1wKfVwKI2JlZ3VuX2Js b2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2IC5iZWd1bl9hZHZfcmljaCAuYmVn dW5fYWR2X3BpY3R1cmUge1wKd2lkdGg6NzBweDtcCmhlaWdodDo3MHB4O1wKcG9z aXRpb246YWJzb2x1dGUgIWltcG9ydGFudDtcCnotaW5kZXg6MjA7XAp9XAojYmVn dW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHZfYWNjb3JkaW9uLmJlZ3Vu X2Fkdl8yNDB4NDAwIC5iZWd1bl9hZHZfY29tbW9uIHtcCnBvc2l0aW9uOnJlbGF0 aXZlICFpbXBvcnRhbnQ7XAp9XAojYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5i ZWd1bl9hZHZfYWNjb3JkaW9uIC5iZWd1bl9hZHZfdGFibGUgdHIuYWNjb3JkaW9u X3NlY3Rpb24gLnNlY3Rpb24ge1wKcGFkZGluZy10b3A6MXB4O1wKaGVpZ2h0OjFw eDtcCm92ZXJmbG93OmhpZGRlbjtcCnBvc2l0aW9uOnJlbGF0aXZlICFpbXBvcnRh bnQ7XAp9XAojYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9hZHYuYmVn dW5fYWR2X2FjY29yZGlvbiAuYmVndW5fYWR2X2NvbW1vbiAuYmVndW5fYWR2X3Rh YmxlIHRyLmFjY29yZGlvbl9zZWN0aW9uLmV4cGFuZGVkIHRkIHtcCmJhY2tncm91 bmQtY29sb3I6e3thY2NvcmRpb246YmFja2dyb3VuZENvbG9yfX0gIWltcG9ydGFu dDtcCn1cCiNiZWd1bl9ibG9ja197e2Jsb2NrX2lkfX0gLmJlZ3VuX2NvbGxhcHNh YmxlIHtcCndpZHRoOmF1dG87XApvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudDtc CnBvc2l0aW9uOmZpeGVkO1wKdG9wOjA7XApsZWZ0OjA7XApfcG9zaXRpb246YWJz b2x1dGU7XApfdG9wOiBleHByZXNzaW9uKCAoIDAgKyAoIGlnbm9yZU1lID0gZG9j dW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCA/IGRvY3VtZW50LmRvY3Vt ZW50RWxlbWVudC5zY3JvbGxUb3AgOiBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCAp ICkgKyAicHgiICk7XAp6LWluZGV4OjIxNDc0ODM2NDc7XApib3JkZXItdG9wOm5v bmUgIWltcG9ydGFudDtcCmJvcmRlci1sZWZ0Om5vbmUgIWltcG9ydGFudDtcCmJv cmRlci1yaWdodDpub25lICFpbXBvcnRhbnQ7XAp9XAojYmVndW5fYmxvY2tfe3ti bG9ja19pZH19IC5iZWd1bl9jb2xsYXBzYWJsZSAuYmVndW5fYWR2X3RhYmxlIHtc Cm1hcmdpbjoxMHB4ICFpbXBvcnRhbnQ7XAp9XAojYmVndW5fYmxvY2tfe3tibG9j a19pZH19IC5iZWd1bl9jb2xsYXBzYWJsZSAuYmVndW5fYWR2X3N5c19zaWduX3Vw IGRpdiB7XAptYXJnaW4tbGVmdDoxNXB4ICFpbXBvcnRhbnQ7XAptYXJnaW4tcmln aHQ6MTBweCAhaW1wb3J0YW50O1wKfVwKI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9 fSAuYmVndW5fY29sbGFwc2VkIHtcCmhlaWdodDo0NXB4ICFpbXBvcnRhbnQ7XApv dmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudDtcCn1cCiNiZWd1bl9ibG9ja197e2Js b2NrX2lkfX0gLmJlZ3VuX2NvbGxhcHNlZCAuYmVndW5fYWR2X3RpdGxlIHtcCm1h cmdpbi1ib3R0b206MzBweCAhaW1wb3J0YW50O1wKfVwKJzsKCQkJY3NzWydmb3JP cGVyYUlFJ10gPSAnXAojYmVndW5fYmxvY2tfe3tibG9ja19pZH19IC5iZWd1bl9h ZHZfY29udGFjdCBzcGFuLmJlZ3VuX2Fkdl9waG9uZSB7XApmbG9hdDpub25lICFp bXBvcnRhbnQ7XApwb3NpdGlvbjpzdGF0aWMgIWltcG9ydGFudDtcCnZlcnRpY2Fs LWFsaWduOiB0b3A7XApkaXNwbGF5OmlubGluZS1ibG9jayAhaW1wb3J0YW50O1wK fVwKI2JlZ3VuX2Jsb2NrX3t7YmxvY2tfaWR9fSAuYmVndW5fYWR2X3Bob25lX3dy YXBwZXIge1wKcGFkZGluZy1sZWZ0OjAgIWltcG9ydGFudDtcCnBvc2l0aW9uOnN0 YXRpYyAhaW1wb3J0YW50O1wKZGlzcGxheTppbmxpbmUgIWltcG9ydGFudDtcCn1c Cic7CgkJCXZhciBodG1sID0ge307CgkJCWh0bWxbJ2JsY2tfcGxhY2UnXSA9ICc8 ZGl2IGlkPSJ7e2lkfX0iPjwvZGl2Pic7CgkJCWh0bWxbJ2xpbmtfaWZyYW1lJ10g PSAnPGlmcmFtZSBzcmM9Int7dXJsfX0iIHN0eWxlPSJoZWlnaHQ6MDt3aWR0aDow O2JvcmRlcjowIj48L2lmcmFtZT4nOwoJCQlodG1sWydibm5yX2dsdWUnXSA9ICc8 c3BhbiBjbGFzcz0iYmVndW5fYWR2X2J1bGxpdCI+ICYjMTQ5OyA8L3NwYW4+JzsK CQkJaHRtbFsnYm5ucl9waG9uZSddID0gJ1wKPHNwYW4gY2xhc3M9ImJlZ3VuX2Fk dl9waG9uZSI+PGIgY2xhc3M9InAwIj48L2I+PGIgY2xhc3M9InAxIj48L2I+PGIg Y2xhc3M9InAyIj48L2I+PGIgY2xhc3M9InA0Ij48YiBjbGFzcz0icDMiPjwvYj48 L2I+PGIgY2xhc3M9InA1Ij48L2I+PGIgY2xhc3M9InA2Ij48YiBjbGFzcz0icDEi PjwvYj48L2I+PGIgY2xhc3M9InA3Ij48L2I+PGIgY2xhc3M9InA4Ij48L2I+PC9z cGFuPlwKJzsKCQkJaHRtbFsnYm5ucl9jYXJkJ10gPSAnXAo8c3BhbiBjbGFzcz0i YmVndW5fYWR2X3Bob25lX3dyYXBwZXIge3tub19waG9uZV9jbGFzc319Ij57e3Bo b25lfX08c3BhbiBjbGFzcz0iYmVndW5fYWR2X2NhcmQiPjxhIHRhcmdldD0iX2Js YW5rIiBocmVmPSJ7e3VybH19IiBjbGFzcz0ic25hcF9ub3Nob3RzIj57e2NhcmRf dGV4dH19PC9hPjwvc3Bhbj48L3NwYW4+XAonOwoJCQlodG1sWydibm5yX3BwY2Fs bCddID0gJ1wKPHNwYW4gY2xhc3M9ImJlZ3VuX2Fkdl9waG9uZV93cmFwcGVyIj57 e3Bob25lfX08YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIGNsYXNzPSJzbmFw X25vc2hvdHMiIG9uY2xpY2s9InNob3dFbnRlckZvcm0oe3tiYW5uZXJfaW5kZXh9 fSwgdGhpcywgZXZlbnQsIHt7cGFkX2lkfX0pIj48c3BhbiBjbGFzcz0iYmVndW5f YWR2X2NhcmQiPnt7cHBjYWxsX3RleHR9fTwvc3Bhbj48L2E+PC9zcGFuPlwKJzsK CQkJaHRtbFsnYm5ucl9kb21haW4nXSA9ICdcCjxzcGFuIGNsYXNzPSJiZWd1bl9h ZHZfY29udGFjdCI+PGEgY2xhc3M9InNuYXBfbm9zaG90cyIgdGFyZ2V0PSJfYmxh bmsiIGhyZWY9Int7dXJsfX0iIG9ubW91c2VvdmVyPSJzdGF0dXM9XCd7e3N0YXR1 c319XCc7cmV0dXJuIHRydWUiIG9ubW91c2VvdXQ9InN0YXR1cz1cJ1wnO3JldHVy biB0cnVlIiB0aXRsZT0ie3tkb21haW59fSI+e3tkb21haW59fTwvYT48L3NwYW4+ XAonOwoJCQlodG1sWydibm5yX2dlbyddID0gJ1wKPHNwYW4gY2xhc3M9ImJlZ3Vu X2Fkdl9jaXR5Ij48YSBjbGFzcz0ic25hcF9ub3Nob3RzIiB0YXJnZXQ9Il9ibGFu ayIgaHJlZj0ie3t1cmx9fSIgb25tb3VzZW92ZXI9InN0YXR1cz1cJ3t7c3RhdHVz fX1cJztyZXR1cm4gdHJ1ZSIgb25tb3VzZW91dD0ic3RhdHVzPVwnXCc7cmV0dXJu IHRydWUiIHRpdGxlPSJ7e2RvbWFpbn19Ij57e2dlb319PC9hPjwvc3Bhbj5cCic7 CgkJCWh0bWxbJ2JubnJfdGh1bWInXSA9ICdcCjxhIGhyZWY9Int7dXJsfX0iIGNs YXNzPSJiZWd1bl90aHVtYiBzbmFwX25vc2hvdHMiIHRhcmdldD0iX2JsYW5rIj48 aW1nIHNyYz0ie3tzcmN9fSIgb25tb3VzZW92ZXI9InRoaXMuc3R5bGUuYmFja2dy b3VuZCA9IFwne3tiZ2NvbG9yX2hvdmVyfX1cJyIgb25tb3VzZW91dD0idGhpcy5z dHlsZS5iYWNrZ3JvdW5kID0gXCd7e2JnY29sb3J9fVwnIiB7e3BuZ2ZpeH19IHdp ZHRoPSI1NiIgaGVpZ2h0PSI0MiIgYWx0PSIiLz48L2E+XAonOwoJCQlodG1sWydi bm5yX3BpY3R1cmUnXSA9ICdcCjxkaXYgY2xhc3M9ImJlZ3VuX2Fkdl9pbWFnZSI+ PGEgaHJlZj0ie3t1cmx9fSIgY2xhc3M9InNuYXBfbm9zaG90cyIgdGFyZ2V0PSJf YmxhbmsiPjxpbWcgc3JjPSJ7e3NyY319IiBfYmlnX3Bob3RvX3NyYz0ie3tiaWdf cGhvdG9fc3JjfX0iIF9zbWFsbF9waG90b19zcmM9Int7c3JjfX0iIGNsYXNzPSJi ZWd1bl9hZHZfcGljdHVyZSIgYWx0PSIiIC8+PC9hPjwvZGl2PlwKJzsKCQkJaHRt bFsnYmFubmVyX3NxdWFyZSddID0gJ1wKPHRkIGNsYXNzPSJiZWd1bl9hZHZfY2Vs bCIgdGl0bGU9Int7ZG9tYWlufX0iIHN0eWxlPSJ3aWR0aDp7e2Jhbm5lcl93aWR0 aH19ICFpbXBvcnRhbnQiIG9uY2xpY2s9Int7b25jbGlja319IiBfdXJsPSJ7e3Vy bH19IiBfYmFubmVyX2lkPSJ7e2Jhbm5lcl9pZH19Ij5cCnt7dGh1bWJ9fVwKPGRp diBjbGFzcz0iYmVndW5fYWR2X2Jsb2NrIHt7Y3NzX2Zhdmljb259fSIge3tmYXZp Y29ufX0gdGl0bGU9Int7ZG9tYWlufX0iPlwKPGRpdiBjbGFzcz0iYmVndW5fYWR2 X3RpdGxlIj48YSBjbGFzcz0ic25hcF9ub3Nob3RzIiB0YXJnZXQ9Il9ibGFuayIg aHJlZj0ie3t1cmx9fSIgb25tb3VzZW92ZXI9InN0YXR1cz1cJ3t7c3RhdHVzfX1c JztyZXR1cm4gdHJ1ZSIgb25tb3VzZW91dD0ic3RhdHVzPVwnXCc7cmV0dXJuIHRy dWUiIHRpdGxlPSJ7e2RvbWFpbn19Ij57e3RpdGxlfX08L2E+PC9kaXY+XAo8ZGl2 IGNsYXNzPSJiZWd1bl9hZHZfdGV4dCI+PGEgY2xhc3M9InNuYXBfbm9zaG90cyIg dGFyZ2V0PSJfYmxhbmsiIGhyZWY9Int7dXJsfX0iIG9ubW91c2VvdmVyPSJzdGF0 dXM9XCd7e3N0YXR1c319XCc7cmV0dXJuIHRydWUiIG9ubW91c2VvdXQ9InN0YXR1 cz1cJ1wnO3JldHVybiB0cnVlIiB0aXRsZT0ie3tkb21haW59fSI+e3tkZXNjcn19 PC9hPjwvZGl2PlwKPGRpdiBjbGFzcz0iYmVndW5fYWR2X2NvbnRhY3QiPnt7Y29u dGFjdH19PC9kaXY+XAo8L2Rpdj5cCjwvdGQ+XAonOwoJCQlodG1sWydiYW5uZXJf dmVydGljYWwnXSA9ICdcCjx0cj5cCjx0ZCBjbGFzcz0iYmVndW5fYWR2X2NlbGwi IHRpdGxlPSJ7e2RvbWFpbn19IiBvbmNsaWNrPSJ7e29uY2xpY2t9fSIgX3VybD0i e3t1cmx9fSIgX2Jhbm5lcl9pZD0ie3tiYW5uZXJfaWR9fSI+XAp7e3RodW1ifX1c CjxkaXYgY2xhc3M9ImJlZ3VuX2Fkdl9ibG9jayB7e2Nzc19mYXZpY29ufX0iIHt7 ZmF2aWNvbn19IHRpdGxlPSJ7e2RvbWFpbn19Ij5cCjxkaXYgY2xhc3M9ImJlZ3Vu X2Fkdl90aXRsZSI+PGEgY2xhc3M9InNuYXBfbm9zaG90cyIgdGFyZ2V0PSJfYmxh bmsiIGhyZWY9Int7dXJsfX0iIG9ubW91c2VvdmVyPSJzdGF0dXM9XCd7e3N0YXR1 c319XCc7cmV0dXJuIHRydWUiIG9ubW91c2VvdXQ9InN0YXR1cz1cJ1wnO3JldHVy biB0cnVlIiB0aXRsZT0ie3tkb21haW59fSI+e3t0aXRsZX19PC9hPjwvZGl2PlwK PGRpdiBjbGFzcz0iYmVndW5fYWR2X3RleHQiPjxhIGNsYXNzPSJzbmFwX25vc2hv dHMiIHRhcmdldD0iX2JsYW5rIiBocmVmPSJ7e3VybH19IiBvbm1vdXNlb3Zlcj0i c3RhdHVzPVwne3tzdGF0dXN9fVwnO3JldHVybiB0cnVlIiBvbm1vdXNlb3V0PSJz dGF0dXM9XCdcJztyZXR1cm4gdHJ1ZSIgdGl0bGU9Int7ZG9tYWlufX0iPnt7ZGVz Y3J9fTwvYT48L2Rpdj5cCjxkaXYgY2xhc3M9ImJlZ3VuX2Fkdl9jb250YWN0Ij57 e2NvbnRhY3R9fTwvZGl2PlwKPC9kaXY+XAo8L3RkPlwKPC90cj5cCic7CgkJCWh0 bWxbJ2Jhbm5lcl9mbGF0J10gPSAnXAo8dHI+XAo8dGQgY2xhc3M9ImJlZ3VuX2Fk dl9jZWxsIiB0aXRsZT0ie3tkb21haW59fSIgb25jbGljaz0ie3tvbmNsaWNrfX0i IF91cmw9Int7dXJsfX0iIF9iYW5uZXJfaWQ9Int7YmFubmVyX2lkfX0iPlwKe3t0 aHVtYn19XAo8ZGl2IGNsYXNzPSJiZWd1bl9hZHZfYmxvY2sge3tjc3NfZmF2aWNv bn19IiB7e2Zhdmljb259fSB0aXRsZT0ie3tkb21haW59fSI+XAo8ZGl2IGNsYXNz PSJiZWd1bl9hZHZfdGl0bGUiPjxhIGNsYXNzPSJzbmFwX25vc2hvdHMiIHRhcmdl dD0iX2JsYW5rIiBocmVmPSJ7e3VybH19IiBvbm1vdXNlb3Zlcj0ic3RhdHVzPVwn e3tzdGF0dXN9fVwnO3JldHVybiB0cnVlIiBvbm1vdXNlb3V0PSJzdGF0dXM9XCdc JztyZXR1cm4gdHJ1ZSIgdGl0bGU9Int7ZG9tYWlufX0iPnt7dGl0bGV9fTwvYT48 L2Rpdj5cCjxkaXYgY2xhc3M9ImJlZ3VuX2Fkdl90ZXh0Ij48YSBjbGFzcz0ic25h cF9ub3Nob3RzIiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0ie3t1cmx9fSIgb25tb3Vz ZW92ZXI9InN0YXR1cz1cJ3t7c3RhdHVzfX1cJztyZXR1cm4gdHJ1ZSIgb25tb3Vz ZW91dD0ic3RhdHVzPVwnXCc7cmV0dXJuIHRydWUiIHRpdGxlPSJ7e2RvbWFpbn19 Ij57e2Rlc2NyfX08L2E+PC9kaXY+XAo8L2Rpdj5cCjwvdGQ+XAo8L3RyPlwKJzsK CQkJaHRtbFsnYmFubmVyXzI0MHg0MDBfdXNlX2FjY29yZGlvbiddID0gJ1wKPHRy IGNsYXNzPSJhY2NvcmRpb25fc2VjdGlvbiI+XAo8dGQgY2xhc3M9ImJlZ3VuX2Fk dl9jZWxsIiB0aXRsZT0ie3tkb21haW59fSIgb25jbGljaz0ie3tvbmNsaWNrfX0i IF91cmw9Int7dXJsfX0iIF9iYW5uZXJfaWQ9Int7YmFubmVyX2lkfX0iPlwKe3t0 aHVtYn19XAo8ZGl2IGNsYXNzPSJiZWd1bl9hZHZfYmxvY2sge3tjc3NfZmF2aWNv bn19IiB7e2Zhdmljb259fSB0aXRsZT0ie3tkb21haW59fSI+XAo8ZGl2IGNsYXNz PSJiZWd1bl9hZHZfdGl0bGUiPjxhIGNsYXNzPSJzbmFwX25vc2hvdHMiIHRhcmdl dD0iX2JsYW5rIiBocmVmPSJ7e3VybH19IiBvbm1vdXNlb3Zlcj0ic3RhdHVzPVwn e3tzdGF0dXN9fVwnO3JldHVybiB0cnVlIiBvbm1vdXNlb3V0PSJzdGF0dXM9XCdc JztyZXR1cm4gdHJ1ZSIgdGl0bGU9Int7ZG9tYWlufX0iPnt7dGl0bGV9fTwvYT48 L2Rpdj5cCjxkaXYgY2xhc3M9InNlY3Rpb24iPjxkaXYgY2xhc3M9ImJlZ3VuX2Fk dl90ZXh0Ij48YSBjbGFzcz0ic25hcF9ub3Nob3RzIiB0YXJnZXQ9Il9ibGFuayIg aHJlZj0ie3t1cmx9fSIgb25tb3VzZW92ZXI9InN0YXR1cz1cJ3t7c3RhdHVzfX1c JztyZXR1cm4gdHJ1ZSIgb25tb3VzZW91dD0ic3RhdHVzPVwnXCc7cmV0dXJuIHRy dWUiIHRpdGxlPSJ7e2RvbWFpbn19Ij57e2Rlc2NyfX08L2E+PC9kaXY+XAo8ZGl2 IGNsYXNzPSJiZWd1bl9hZHZfY29udGFjdCI+e3tjb250YWN0fX08L2Rpdj48L2Rp dj5cCjwvZGl2PlwKPC90ZD5cCjwvdHI+XAonOwoJCQlodG1sWydiYW5uZXJfMjAw eDMwMF91c2VfYWNjb3JkaW9uJ10gPSBodG1sWydiYW5uZXJfMjQweDQwMF91c2Vf YWNjb3JkaW9uJ107CgkJCWh0bWxbJ2Jhbm5lcl9yaWNoJ10gPSAnXAo8dHI+XAo8 dGQgY2xhc3M9ImJlZ3VuX2Fkdl9jZWxsIGJlZ3VuX2Fkdl9yaWNoIiBvbmNsaWNr PSJ7e29uY2xpY2t9fSIgX3VybD0ie3t1cmx9fSIgX2Jhbm5lcl9pZD0ie3tiYW5u ZXJfaWR9fSI+XAp7e3BpY3R1cmV9fVwKPGRpdiBjbGFzcz0iYmVndW5fYWR2X2Js b2NrIHt7Y3NzX2Zhdmljb259fSIge3tmYXZpY29ufX0gdGl0bGU9Int7ZG9tYWlu fX0iPlwKPGRpdiBjbGFzcz0iYmVndW5fYWR2X3RpdGxlIj48YSBjbGFzcz0ic25h cF9ub3Nob3RzIiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0ie3t1cmx9fSIgb25tb3Vz ZW92ZXI9InN0YXR1cz1cJ3t7c3RhdHVzfX1cJztyZXR1cm4gdHJ1ZSIgb25tb3Vz ZW91dD0ic3RhdHVzPVwnXCc7cmV0dXJuIHRydWUiIHRpdGxlPSJ7e2RvbWFpbn19 Ij57e3RpdGxlfX08L2E+PC9kaXY+XAo8ZGl2IGNsYXNzPSJiZWd1bl9hZHZfdGV4 dCI+PGEgY2xhc3M9InNuYXBfbm9zaG90cyIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9 Int7dXJsfX0iIG9ubW91c2VvdmVyPSJzdGF0dXM9XCd7e3N0YXR1c319XCc7cmV0 dXJuIHRydWUiIG9ubW91c2VvdXQ9InN0YXR1cz1cJ1wnO3JldHVybiB0cnVlIiB0 aXRsZT0ie3tkb21haW59fSI+e3tkZXNjcn19PC9hPjwvZGl2PlwKPGRpdiBjbGFz cz0iYmVndW5fYWR2X2NvbnRhY3QiPnt7Y29udGFjdH19PC9kaXY+XAo8L2Rpdj5c CjwvdGQ+XAo8L3RyPlwKJzsKCQkJaHRtbFsnYmFubmVyX2hvcml6b250YWxfcmlj aCddID0gJ1wKPHRkIGNsYXNzPSJiZWd1bl9hZHZfY2VsbCBiZWd1bl9hZHZfcmlj aCIgb25jbGljaz0ie3tvbmNsaWNrfX0iIF91cmw9Int7dXJsfX0iIF9iYW5uZXJf aWQ9Int7YmFubmVyX2lkfX0iPlwKe3twaWN0dXJlfX1cCjxkaXYgY2xhc3M9ImJl Z3VuX2Fkdl9ibG9jayB7e2Nzc19mYXZpY29ufX0iIHt7ZmF2aWNvbn19IHRpdGxl PSJ7e2RvbWFpbn19Ij5cCjxkaXYgY2xhc3M9ImJlZ3VuX2Fkdl90aXRsZSI+PGEg Y2xhc3M9InNuYXBfbm9zaG90cyIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Int7dXJs fX0iIG9ubW91c2VvdmVyPSJzdGF0dXM9XCd7e3N0YXR1c319XCc7cmV0dXJuIHRy dWUiIG9ubW91c2VvdXQ9InN0YXR1cz1cJ1wnO3JldHVybiB0cnVlIiB0aXRsZT0i e3tkb21haW59fSI+e3t0aXRsZX19PC9hPjwvZGl2PlwKPGRpdiBjbGFzcz0iYmVn dW5fYWR2X3RleHQiPjxhIGNsYXNzPSJzbmFwX25vc2hvdHMiIHRhcmdldD0iX2Js YW5rIiBocmVmPSJ7e3VybH19IiBvbm1vdXNlb3Zlcj0ic3RhdHVzPVwne3tzdGF0 dXN9fVwnO3JldHVybiB0cnVlIiBvbm1vdXNlb3V0PSJzdGF0dXM9XCdcJztyZXR1 cm4gdHJ1ZSIgdGl0bGU9Int7ZG9tYWlufX0iPnt7ZGVzY3J9fTwvYT48L2Rpdj5c CjxkaXYgY2xhc3M9ImJlZ3VuX2Fkdl9jb250YWN0Ij57e2NvbnRhY3R9fTwvZGl2 PlwKPC9kaXY+XAo8L3RkPlwKJzsKCQkJaHRtbFsnYmFubmVyX3ZlcnRpY2FsX3Jp Y2gnXSAgPSBodG1sWydiYW5uZXJfcmljaF9yaWNoJ10gPSBodG1sWydiYW5uZXJf MjQweDQwMF9yaWNoJ10gPSBodG1sWydiYW5uZXJfcmljaCddOwoJCQlodG1sWydi YW5uZXJfNzI4eDkwX3JpY2gnXSA9IGh0bWxbJ2Jhbm5lcl9ob3Jpem9udGFsX3Jp Y2gnXTsKCQkJaHRtbFsnYmFubmVyXzIwMHgzMDAnXSA9IGh0bWxbJ2Jhbm5lcl8y NDB4NDAwJ10gPSBodG1sWydiYW5uZXJfMTIweDYwMCddID0gaHRtbFsnYmFubmVy XzE2MHg2MDAnXSA9IGh0bWxbJ2Jhbm5lcl92ZXJ0aWNhbCddOwoJCQlodG1sWydi YW5uZXJfaG9yaXpvbnRhbCddID0gJ1wKPHRkIGNsYXNzPSJiZWd1bl9hZHZfY2Vs bCIgc3R5bGU9IndpZHRoOnt7YmFubmVyX3dpZHRofX0gIWltcG9ydGFudCIgdGl0 bGU9Int7ZG9tYWlufX0iIG9uY2xpY2s9Int7b25jbGlja319IiBfdXJsPSJ7e3Vy bH19IiBfYmFubmVyX2lkPSJ7e2Jhbm5lcl9pZH19Ij5cCnt7dGh1bWJ9fVwKPGRp diBjbGFzcz0iYmVndW5fYWR2X2Jsb2NrIHt7Y3NzX2Zhdmljb259fSIge3tmYXZp Y29ufX0+XAo8ZGl2IGNsYXNzPSJiZWd1bl9hZHZfdGl0bGUiPjxhIGNsYXNzPSJz bmFwX25vc2hvdHMiIHRhcmdldD0iX2JsYW5rIiBocmVmPSJ7e3VybH19IiBvbm1v dXNlb3Zlcj0ic3RhdHVzPVwne3tzdGF0dXN9fVwnO3JldHVybiB0cnVlIiBvbm1v dXNlb3V0PSJzdGF0dXM9XCdcJztyZXR1cm4gdHJ1ZSIgdGl0bGU9Int7ZG9tYWlu fX0iPnt7dGl0bGV9fTwvYT48L2Rpdj5cCjxkaXYgY2xhc3M9ImJlZ3VuX2Fkdl90 ZXh0Ij48YSBjbGFzcz0ic25hcF9ub3Nob3RzIiB0YXJnZXQ9Il9ibGFuayIgaHJl Zj0ie3t1cmx9fSIgb25tb3VzZW92ZXI9InN0YXR1cz1cJ3t7c3RhdHVzfX1cJzty ZXR1cm4gdHJ1ZSIgb25tb3VzZW91dD0ic3RhdHVzPVwnXCc7cmV0dXJuIHRydWUi IHRpdGxlPSJ7e2RvbWFpbn19Ij57e2Rlc2NyfX08L2E+PC9kaXY+XAo8ZGl2IGNs YXNzPSJiZWd1bl9hZHZfY29udGFjdCI+e3tjb250YWN0fX08L2Rpdj5cCjwvZGl2 PlwKPC90ZD5cCic7CgkJCWh0bWxbJ2Jhbm5lcl90b3AnXSA9ICdcCjx0ZCBjbGFz cz0iYmVndW5fYWR2X2NlbGwiIHN0eWxlPSJ3aWR0aDp7e2Jhbm5lcl93aWR0aH19 ICFpbXBvcnRhbnQiIHRpdGxlPSJ7e2RvbWFpbn19IiBvbmNsaWNrPSJ7e29uY2xp Y2t9fSIgX3VybD0ie3t1cmx9fSIgX2Jhbm5lcl9pZD0ie3tiYW5uZXJfaWR9fSI+ XAo8ZGl2IGNsYXNzPSJiZWd1bl9hZHZfYmxvY2sge3tjc3NfZmF2aWNvbn19IiB7 e2Zhdmljb259fT5cCjxkaXYgY2xhc3M9ImJlZ3VuX2Fkdl90aXRsZSI+PGEgY2xh c3M9InNuYXBfbm9zaG90cyIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Int7dXJsfX0i IG9ubW91c2VvdmVyPSJzdGF0dXM9XCd7e3N0YXR1c319XCc7cmV0dXJuIHRydWUi IG9ubW91c2VvdXQ9InN0YXR1cz1cJ1wnO3JldHVybiB0cnVlIiB0aXRsZT0ie3tk b21haW59fSI+e3t0aXRsZX19PC9hPjwvZGl2PlwKPGRpdiBjbGFzcz0iYmVndW5f YWR2X3RleHQiPjxhIGNsYXNzPSJzbmFwX25vc2hvdHMiIHRhcmdldD0iX2JsYW5r IiBocmVmPSJ7e3VybH19IiBvbm1vdXNlb3Zlcj0ic3RhdHVzPVwne3tzdGF0dXN9 fVwnO3JldHVybiB0cnVlIiBvbm1vdXNlb3V0PSJzdGF0dXM9XCdcJztyZXR1cm4g dHJ1ZSIgdGl0bGU9Int7ZG9tYWlufX0iPnt7ZGVzY3J9fTwvYT48L2Rpdj5cCjxk aXYgY2xhc3M9ImJlZ3VuX2Fkdl9jb250YWN0Ij57e2NvbnRhY3R9fTwvZGl2PlwK PC9kaXY+XAo8L3RkPlwKJzsKCQkJaHRtbFsnYmFubmVyXzQ2OHg2MCddID0gaHRt bFsnYmFubmVyXzcyOHg5MCddID0gaHRtbFsnYmFubmVyX2hvcml6b250YWwnXTsK CQkJaHRtbFsnYmxja19ob3ZlciddID0gJyBvbm1vdXNlb3Zlcj0iQmVndW4uVXRp bHMuYWRkQ2xhc3NOYW1lKHRoaXMsIFwnYmVndW5faG92ZXJcJyk7IiBvbm1vdXNl b3V0PSJCZWd1bi5VdGlscy5yZW1vdmVDbGFzc05hbWUodGhpcywgXCdiZWd1bl9o b3ZlclwnKTsiJzsKCQkJaHRtbFsnYmxvY2tfdmVydGljYWwnXSA9ICdcCjx0YWJs ZSBjbGFzcz0iYmVndW5fYWR2IGJlZ3VuX2Fkdl9leHQgYmVndW5fYWR2X3ZlciJ7 e2Jsb2NrX2hvdmVyfX0gc3R5bGU9IndpZHRoOnt7YmxvY2tfd2lkdGh9fSI+XAo8 dHI+XAo8dGQgY2xhc3M9ImJlZ3VuX2Fkdl9jZWxsIj5cCjx0YWJsZSBjbGFzcz0i YmVndW5fYWR2X3N5cyI+PHRyPlwKPHRkIGNsYXNzPSJiZWd1bl9hZHZfc3lzX2xv Z28iIHN0eWxlPSJkaXNwbGF5Ont7bG9nb19kaXNwbGF5fX0iPjxkaXY+PGEgaHJl Zj0ie3tiZWd1bl91cmx9fSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJzbmFwX25v c2hvdHMiPmJlZ3VuPC9hPjwvZGl2PjwvdGQ+XAo8dGQgY2xhc3M9ImJlZ3VuX2Fk dl9zeXNfc2lnbl91cCIgc3R5bGU9ImRpc3BsYXk6e3twbGFjZV9oZXJlX2Rpc3Bs YXl9fSI+PGRpdj48YSBocmVmPSJ7e3BsYWNlX2hlcmVfdXJsfX0iIHRhcmdldD0i X2JsYW5rIiBjbGFzcz0ic25hcF9ub3Nob3RzIj57e3BsYWNlX2hlcmVfdGV4dH19 PC9hPjwvZGl2PjwvdGQ+XAo8L3RyPjwvdGFibGU+XAo8ZGl2IGNsYXNzPSJiZWd1 bl9hZHZfY29tbW9uIHt7YmxvY2tfc2Nyb2xsX2NsYXNzfX0iIGlkPSJ7e3Njcm9s bF9kaXZfaWR9fSI+XAo8dGFibGUgY2xhc3M9ImJlZ3VuX2Fkdl90YWJsZSB7e2Nz c190aHVtYm5haWxzfX0iIGlkPSJ7e3Njcm9sbF90YWJsZV9pZH19Ij5cCnt7YmFu bmVyc319XAo8L3RhYmxlPlwKPC9kaXY+XAo8ZGl2IGNsYXNzPSJiZWd1bl9hZHZf YWxsIiBzdHlsZT0iZGlzcGxheTp7e2FsbF9iYW5uZXJzX2Rpc3BsYXl9fSI+PGEg aHJlZj0ie3thbGxfYmFubmVyc191cmx9fSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNz PSJzbmFwX25vc2hvdHMiPnt7YWxsX2Jhbm5lcnNfdGV4dH19PC9hPjwvZGl2PlwK PC90ZD5cCjwvdHI+XAo8L3RhYmxlPlwKJzsKCQkJaHRtbFsnYmxvY2tfc3F1YXJl J10gPSAnXAo8dGFibGUgaWQ9ImJlZ3VuX2Fkdl9zcXVhcmVfe3tibG9ja19pZH19 IiBjbGFzcz0iYmVndW5fYWR2IGJlZ3VuX2Fkdl9leHQgYmVndW5fYWR2X3NxdWFy ZSJ7e2Jsb2NrX2hvdmVyfX0gc3R5bGU9IndpZHRoOnt7YmxvY2tfd2lkdGh9fSI+ XAo8dHI+XAo8dGQgY2xhc3M9ImJlZ3VuX2Fkdl9jZWxsIj5cCjx0YWJsZSBjbGFz cz0iYmVndW5fYWR2X3N5cyI+PHRyPlwKPHRkIGNsYXNzPSJiZWd1bl9hZHZfc3lz X2xvZ28iIHN0eWxlPSJkaXNwbGF5Ont7bG9nb19kaXNwbGF5fX0iPjxkaXY+PGEg aHJlZj0ie3tiZWd1bl91cmx9fSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJzbmFw X25vc2hvdHMiPmJlZ3VuPC9hPjwvZGl2PjwvdGQ+XAo8dGQgY2xhc3M9ImJlZ3Vu X2Fkdl9zeXNfc2lnbl91cCIgc3R5bGU9ImRpc3BsYXk6e3twbGFjZV9oZXJlX2Rp c3BsYXl9fSI+PGRpdj48YSBocmVmPSJ7e3BsYWNlX2hlcmVfdXJsfX0iIHRhcmdl dD0iX2JsYW5rIiBjbGFzcz0ic25hcF9ub3Nob3RzIj57e3BsYWNlX2hlcmVfdGV4 dH19PC9hPjwvZGl2PjwvdGQ+XAo8L3RyPjwvdGFibGU+XAo8ZGl2IGNsYXNzPSJi ZWd1bl9hZHZfY29tbW9uIHt7YmxvY2tfc2Nyb2xsX2NsYXNzfX0iIGlkPSJ7e3Nj cm9sbF9kaXZfaWR9fSI+XAo8dGFibGUgY2xhc3M9ImJlZ3VuX2Fkdl90YWJsZSB7 e2Nzc190aHVtYm5haWxzfX0iIGlkPSJ7e3Njcm9sbF90YWJsZV9pZH19Ij5cCnt7 YmFubmVyc319XAo8L3RhYmxlPlwKPC9kaXY+XAo8dGFibGUgY2xhc3M9ImJlZ3Vu X2Fkdl9hbGwiIHN0eWxlPSJkaXNwbGF5Ont7YWxsX2Jhbm5lcnNfZGlzcGxheX19 Ij48dHI+PHRkPjxhIGhyZWY9Int7YWxsX2Jhbm5lcnNfdXJsfX0iIHRhcmdldD0i X2JsYW5rIiBjbGFzcz0ic25hcF9ub3Nob3RzIj57e2FsbF9iYW5uZXJzX3RleHR9 fTwvYT48L3RkPjwvdHI+PC90YWJsZT5cCjwvdGQ+XAo8L3RyPlwKPC90YWJsZT5c Cic7CgkJCWh0bWxbJ2Jsb2NrX2ZsYXQnXSA9ICdcCjx0YWJsZSBjbGFzcz0iYmVn dW5fYWR2IGJlZ3VuX2Fkdl9leHQgYmVndW5fYWR2X2ZsYXQie3tibG9ja19ob3Zl cn19PlwKPHRyPlwKPHRkIGNsYXNzPSJiZWd1bl9hZHZfY2VsbCI+XAo8ZGl2IGNs YXNzPSJiZWd1bl9hZHZfY29tbW9uIHt7YmxvY2tfc2Nyb2xsX2NsYXNzfX0iIGlk PSJ7e3Njcm9sbF9kaXZfaWR9fSI+XAo8dGFibGUgY2xhc3M9ImJlZ3VuX2Fkdl90 YWJsZSB7e2Nzc190aHVtYm5haWxzfX0iIGlkPSJ7e3Njcm9sbF90YWJsZV9pZH19 Ij5cCnt7YmFubmVyc319XAo8L3RhYmxlPlwKPC9kaXY+XAo8L3RkPlwKPC90cj5c CjwvdGFibGU+XAonOwoJCQlodG1sWydibG9ja19ob3Jpem9udGFsJ10gPSAnXAo8 dGFibGUgY2xhc3M9ImJlZ3VuX2FkdiBiZWd1bl9hZHZfZXh0IGJlZ3VuX2Fkdl9o b3Iie3tibG9ja19ob3Zlcn19IHN0eWxlPSJ3aWR0aDp7e2Jsb2NrX3dpZHRofX0i PlwKPHRyPlwKPHRkIGNsYXNzPSJiZWd1bl9hZHZfY2VsbCI+XAo8dGFibGUgY2xh c3M9ImJlZ3VuX2Fkdl9zeXMiPjx0cj5cCjx0ZCBjbGFzcz0iYmVndW5fYWR2X3N5 c19sb2dvIiBjb2xzcGFuPSJ7e2JlZ3VuX3VybF9jb2xzcGFufX0iPjxkaXYgc3R5 bGU9ImRpc3BsYXk6e3tsb2dvX2Rpc3BsYXl9fSI+PGEgaHJlZj0ie3tiZWd1bl91 cmx9fSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJzbmFwX25vc2hvdHMiPmJlZ3Vu PC9hPjwvZGl2PjwvdGQ+XAo8dGQgY2xhc3M9ImJlZ3VuX2Fkdl9zeXNfc2lnbl91 cCI+PGRpdiBzdHlsZT0iZGlzcGxheTp7e2JlY29tZV9wYXJ0bmVyX2Rpc3BsYXl9 fSI+PGEgaHJlZj0ie3tiZWNvbWVfcGFydG5lcl91cmx9fSIgdGFyZ2V0PSJfYmxh bmsiIGNsYXNzPSJzbmFwX25vc2hvdHMiPnt7YmVjb21lX3BhcnRuZXJfdGV4dH19 PC9hPjwvZGl2PjwvdGQ+XAo8dGQgY2xhc3M9ImJlZ3VuX2Fkdl9zeXNfc2lnbl91 cCI+PGRpdiBzdHlsZT0iZGlzcGxheTp7e3BsYWNlX2hlcmVfZGlzcGxheX19Ij48 YSBocmVmPSJ7e3BsYWNlX2hlcmVfdXJsfX0iIHRhcmdldD0iX2JsYW5rIiBjbGFz cz0ic25hcF9ub3Nob3RzIj57e3BsYWNlX2hlcmVfdGV4dH19PC9hPjwvZGl2Pjwv dGQ+XAo8dGQgY2xhc3M9ImJlZ3VuX2Fkdl9zeXNfc2lnbl91cCI+PGRpdiBzdHls ZT0iZGlzcGxheTp7e2FsbF9iYW5uZXJzX2Rpc3BsYXl9fSI+PGEgaHJlZj0ie3th bGxfYmFubmVyc191cmx9fSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJzbmFwX25v c2hvdHMiPnt7YWxsX2Jhbm5lcnNfdGV4dH19PC9hPjwvZGl2PjwvdGQ+XAo8L3Ry PjwvdGFibGU+XAo8ZGl2IGNsYXNzPSJiZWd1bl9hZHZfY29tbW9uIHt7YmxvY2tf c2Nyb2xsX2NsYXNzfX0iIGlkPSJ7e3Njcm9sbF9kaXZfaWR9fSI+XAo8dGFibGUg Y2xhc3M9ImJlZ3VuX2Fkdl90YWJsZSB7e2Nzc190aHVtYm5haWxzfX0iIGlkPSJ7 e3Njcm9sbF90YWJsZV9pZH19Ij5cCjx0cj5cCnt7YmFubmVyc319XAo8L3RyPlwK PC90YWJsZT5cCjwvZGl2PlwKPC90ZD5cCjwvdHI+XAo8L3RhYmxlPlwKJzsKCQkJ aHRtbFsnYmxvY2tfdG9wJ10gPSAnXAo8ZGl2IGNsYXNzPSJiZWd1bl9hZHYgYmVn dW5fYWR2X2V4dCBiZWd1bl9jb2xsYXBzYWJsZSBiZWd1bl9jb2xsYXBzZWQie3ti bG9ja19ob3Zlcn19IHN0eWxlPSJ3aWR0aDp7e2Jsb2NrX3dpZHRofX0iPlwKPGRp diBjbGFzcz0iYmVndW5fYWR2X2NvbW1vbiB7e2Jsb2NrX3Njcm9sbF9jbGFzc319 IiBpZD0ie3tzY3JvbGxfZGl2X2lkfX0iPlwKPHRhYmxlIGNsYXNzPSJiZWd1bl9h ZHZfdGFibGUge3tjc3NfdGh1bWJuYWlsc319IiBpZD0ie3tzY3JvbGxfdGFibGVf aWR9fSI+XAo8dHI+XAp7e2Jhbm5lcnN9fVwKPC90cj5cCjwvdGFibGU+XAo8L2Rp dj5cCjx0YWJsZSBjbGFzcz0iYmVndW5fYWR2X3N5cyI+PHRyPlwKPHRkIGNsYXNz PSJiZWd1bl9hZHZfc3lzX2xvZ28iIGNvbHNwYW49Int7YmVndW5fdXJsX2NvbHNw YW59fSIgc3R5bGU9ImRpc3BsYXk6e3tsb2dvX2Rpc3BsYXl9fSI+PGRpdj48YSBo cmVmPSJ7e2JlZ3VuX3VybH19IiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InNuYXBf bm9zaG90cyI+YmVndW48L2E+PC9kaXY+PC90ZD5cCjx0ZCBjbGFzcz0iYmVndW5f YWR2X3N5c19zaWduX3VwIiBzdHlsZT0iZGlzcGxheTp7e2JlY29tZV9wYXJ0bmVy X2Rpc3BsYXl9fSI+PGRpdj48YSBocmVmPSJ7e2JlY29tZV9wYXJ0bmVyX3VybH19 IiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InNuYXBfbm9zaG90cyI+e3tiZWNvbWVf cGFydG5lcl90ZXh0fX08L2E+PC9kaXY+PC90ZD5cCjx0ZCBjbGFzcz0iYmVndW5f YWR2X3N5c19zaWduX3VwIiBzdHlsZT0iZGlzcGxheTp7e3BsYWNlX2hlcmVfZGlz cGxheX19Ij48ZGl2PjxhIGhyZWY9Int7cGxhY2VfaGVyZV91cmx9fSIgdGFyZ2V0 PSJfYmxhbmsiIGNsYXNzPSJzbmFwX25vc2hvdHMiPnt7cGxhY2VfaGVyZV90ZXh0 fX08L2E+PC9kaXY+PC90ZD5cCjx0ZCBjbGFzcz0iYmVndW5fYWR2X3N5c19zaWdu X3VwIiBzdHlsZT0iZGlzcGxheTp7e2FsbF9iYW5uZXJzX2Rpc3BsYXl9fSI+PGRp dj48YSBocmVmPSJ7e2FsbF9iYW5uZXJzX3VybH19IiB0YXJnZXQ9Il9ibGFuayIg Y2xhc3M9InNuYXBfbm9zaG90cyI+e3thbGxfYmFubmVyc190ZXh0fX08L2E+PC9k aXY+PC90ZD5cCjwvdHI+PC90YWJsZT5cCjwvZGl2PlwKJzsKCQkJaHRtbFsnYmxv Y2tfNDY4eDYwJ10gPSAnXAo8ZGl2IGNsYXNzPSJiZWd1bl9hZHYgYmVndW5fYWR2 X2ZpeCBiZWd1bl9hZHZfZml4X2hvciBiZWd1bl9hZHZfNDY4eDYwInt7YmxvY2tf aG92ZXJ9fT5cCjxkaXYgY2xhc3M9ImJlZ3VuX2Fkdl9jb21tb24ge3tibG9ja19z Y3JvbGxfY2xhc3N9fSBiYW5uZXJzX2NvdW50X3t7YmFubmVyc19jb3VudH19IiBp ZD0ie3tzY3JvbGxfZGl2X2lkfX0iPlwKPGRpdiBjbGFzcz0iYmVndW5fYWR2X3N5 c19sb2dvIiBzdHlsZT0iZGlzcGxheTp7e2xvZ29fZGlzcGxheX19Ij48ZGl2Pjxh IGhyZWY9Int7YmVndW5fdXJsfX0iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0ic25h cF9ub3Nob3RzIj5iZWd1bjwvYT48L2Rpdj48L2Rpdj5cCjxkaXYgY2xhc3M9ImJl Z3VuX2Fkdl9zeXNfc2lnbl91cCIgc3R5bGU9ImRpc3BsYXk6e3twbGFjZV9oZXJl X2Rpc3BsYXl9fSI+PGRpdj48YSBocmVmPSJ7e3BsYWNlX2hlcmVfdXJsfX0iIHRh cmdldD0iX2JsYW5rIiBjbGFzcz0ic25hcF9ub3Nob3RzIj57e3BsYWNlX2hlcmVf dGV4dH19PC9hPjwvZGl2PjwvZGl2PlwKPHRhYmxlIGNsYXNzPSJiZWd1bl9hZHZf dGFibGUge3tjc3NfdGh1bWJuYWlsc319IHt7ZXh0ZW5kZWRfYmxvY2tfY2xhc3N9 fSIgaWQ9Int7c2Nyb2xsX3RhYmxlX2lkfX0iPlwKPHRyPlwKe3tiYW5uZXJzfX1c CjwvdHI+XAo8L3RhYmxlPlwKPC9kaXY+XAo8L2Rpdj5cCic7CgkJCWh0bWxbJ2Js b2NrXzcyOHg5MCddID0gJ1wKPGRpdiBjbGFzcz0iYmVndW5fYWR2IGJlZ3VuX2Fk dl9maXggYmVndW5fYWR2X2ZpeF9ob3IgYmVndW5fYWR2XzcyOHg5MCJ7e2Jsb2Nr X2hvdmVyfX0+XAo8ZGl2IGNsYXNzPSJiZWd1bl9hZHZfY29tbW9uIHt7YmxvY2tf c2Nyb2xsX2NsYXNzfX0gYmFubmVyc19jb3VudF97e2Jhbm5lcnNfY291bnR9fSIg aWQ9Int7c2Nyb2xsX2Rpdl9pZH19Ij5cCjxkaXYgY2xhc3M9ImJlZ3VuX2Fkdl9z eXNfbG9nbyIgc3R5bGU9ImRpc3BsYXk6e3tsb2dvX2Rpc3BsYXl9fSI+PGRpdj48 YSBocmVmPSJ7e2JlZ3VuX3VybH19IiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InNu YXBfbm9zaG90cyI+YmVndW48L2E+PC9kaXY+PC9kaXY+XAo8ZGl2IGNsYXNzPSJi ZWd1bl9hZHZfc3lzX3NpZ25fdXAiIHN0eWxlPSJkaXNwbGF5Ont7cGxhY2VfaGVy ZV9kaXNwbGF5fX0iPjxkaXY+PGEgaHJlZj0ie3twbGFjZV9oZXJlX3VybH19IiB0 YXJnZXQ9Il9ibGFuayIgY2xhc3M9InNuYXBfbm9zaG90cyI+e3twbGFjZV9oZXJl X3RleHR9fTwvYT48L2Rpdj48L2Rpdj5cCjx0YWJsZSBjbGFzcz0iYmVndW5fYWR2 X3RhYmxlIHt7Y3NzX3RodW1ibmFpbHN9fSB7e2V4dGVuZGVkX2Jsb2NrX2NsYXNz fX0iIGlkPSJ7e3Njcm9sbF90YWJsZV9pZH19Ij5cCjx0cj5cCnt7YmFubmVyc319 XAo8L3RyPlwKPC90YWJsZT5cCjwvZGl2PlwKPC9kaXY+XAonOwoJCQlodG1sWydi bG9ja18yMDB4MzAwJ10gPSAnXAo8ZGl2IGNsYXNzPSJiZWd1bl9hZHYgYmVndW5f YWR2X2ZpeCBiZWd1bl9hZHZfZml4X3ZlciBiZWd1bl9hZHZfMjAweDMwMCJ7e2Js b2NrX2hvdmVyfX0+XAo8dGFibGUgY2xhc3M9ImJlZ3VuX2Fkdl9zeXMiPjx0cj5c Cjx0ZCBjbGFzcz0iYmVndW5fYWR2X3N5c19sb2dvIiBzdHlsZT0iZGlzcGxheTp7 e2xvZ29fZGlzcGxheX19Ij48ZGl2PjxhIGhyZWY9Int7YmVndW5fdXJsfX0iIHRh cmdldD0iX2JsYW5rIiBjbGFzcz0ic25hcF9ub3Nob3RzIj5iZWd1bjwvYT48L2Rp dj48L3RkPlwKPHRkIGNsYXNzPSJiZWd1bl9hZHZfc3lzX3NpZ25fdXAiIHN0eWxl PSJkaXNwbGF5Ont7cGxhY2VfaGVyZV9kaXNwbGF5fX0iPjxkaXY+PGEgaHJlZj0i e3twbGFjZV9oZXJlX3VybH19IiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InNuYXBf bm9zaG90cyI+e3twbGFjZV9oZXJlX3RleHR9fTwvYT48L2Rpdj48L3RkPlwKPC90 cj48L3RhYmxlPlwKPGRpdiBjbGFzcz0iYmVndW5fYWR2X2NvbW1vbiB7e2Jsb2Nr X3Njcm9sbF9jbGFzc319IGJhbm5lcnNfY291bnRfe3tiYW5uZXJzX2NvdW50fX0g e3tleHRlbmRlZF9ibG9ja19jbGFzc319IiBpZD0ie3tzY3JvbGxfZGl2X2lkfX0i PlwKPHRhYmxlIGNsYXNzPSJiZWd1bl9hZHZfdGFibGUge3tjc3NfdGh1bWJuYWls c319IiBpZD0ie3tzY3JvbGxfdGFibGVfaWR9fSI+XAp7e2Jhbm5lcnN9fVwKPC90 YWJsZT5cCjwvZGl2PlwKPC9kaXY+XAonOwoJCQlodG1sWydibG9ja18yMDB4MzAw X3VzZV9hY2NvcmRpb24nXSA9ICdcCjxkaXYgY2xhc3M9ImJlZ3VuX2FkdiBiZWd1 bl9hZHZfZml4IGJlZ3VuX2Fkdl9maXhfdmVyIGJlZ3VuX2Fkdl8yMDB4MzAwIGJl Z3VuX2Fkdl9hY2NvcmRpb24ie3tibG9ja19ob3Zlcn19PlwKPHRhYmxlIGNsYXNz PSJiZWd1bl9hZHZfc3lzIj48dHI+XAo8dGQgY2xhc3M9ImJlZ3VuX2Fkdl9zeXNf bG9nbyIgc3R5bGU9ImRpc3BsYXk6e3tsb2dvX2Rpc3BsYXl9fSI+PGRpdj48YSBo cmVmPSJ7e2JlZ3VuX3VybH19IiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InNuYXBf bm9zaG90cyI+YmVndW48L2E+PC9kaXY+PC90ZD5cCjx0ZCBjbGFzcz0iYmVndW5f YWR2X3N5c19zaWduX3VwIiBzdHlsZT0iZGlzcGxheTp7e3BsYWNlX2hlcmVfZGlz cGxheX19Ij48ZGl2PjxhIGhyZWY9Int7cGxhY2VfaGVyZV91cmx9fSIgdGFyZ2V0 PSJfYmxhbmsiIGNsYXNzPSJzbmFwX25vc2hvdHMiPnt7cGxhY2VfaGVyZV90ZXh0 fX08L2E+PC9kaXY+PC90ZD5cCjwvdHI+PC90YWJsZT5cCjxkaXYgY2xhc3M9ImJl Z3VuX2Fkdl9jb21tb24ge3tibG9ja19zY3JvbGxfY2xhc3N9fSBiYW5uZXJzX2Nv dW50X3t7YmFubmVyc19jb3VudH19IHt7ZXh0ZW5kZWRfYmxvY2tfY2xhc3N9fSIg aWQ9Int7c2Nyb2xsX2Rpdl9pZH19Ij5cCjx0YWJsZSBjbGFzcz0iYmVndW5fYWR2 X3RhYmxlIHt7Y3NzX3RodW1ibmFpbHN9fSIgaWQ9Int7c2Nyb2xsX3RhYmxlX2lk fX0iPlwKe3tiYW5uZXJzfX1cCjwvdGFibGU+XAo8L2Rpdj5cCjwvZGl2PlwKJzsK CQkJaHRtbFsnYmxvY2tfMjQweDQwMCddID0gJ1wKPGRpdiBjbGFzcz0iYmVndW5f YWR2IGJlZ3VuX2Fkdl9maXggYmVndW5fYWR2X2ZpeF92ZXIgYmVndW5fYWR2XzI0 MHg0MDAie3tibG9ja19ob3Zlcn19PlwKPHRhYmxlIGNsYXNzPSJiZWd1bl9hZHZf c3lzIj48dHI+XAo8dGQgY2xhc3M9ImJlZ3VuX2Fkdl9zeXNfbG9nbyIgc3R5bGU9 ImRpc3BsYXk6e3tsb2dvX2Rpc3BsYXl9fSI+PGRpdj48YSBocmVmPSJ7e2JlZ3Vu X3VybH19IiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InNuYXBfbm9zaG90cyI+YmVn dW48L2E+PC9kaXY+PC90ZD5cCjx0ZCBjbGFzcz0iYmVndW5fYWR2X3N5c19zaWdu X3VwIiBzdHlsZT0iZGlzcGxheTp7e3BsYWNlX2hlcmVfZGlzcGxheX19Ij48ZGl2 PjxhIGhyZWY9Int7cGxhY2VfaGVyZV91cmx9fSIgdGFyZ2V0PSJfYmxhbmsiIGNs YXNzPSJzbmFwX25vc2hvdHMiPnt7cGxhY2VfaGVyZV90ZXh0fX08L2E+PC9kaXY+ PC90ZD5cCjwvdHI+PC90YWJsZT5cCjxkaXYgY2xhc3M9ImJlZ3VuX2Fkdl9jb21t b24ge3tibG9ja19zY3JvbGxfY2xhc3N9fSBiYW5uZXJzX2NvdW50X3t7YmFubmVy c19jb3VudH19IHt7ZXh0ZW5kZWRfYmxvY2tfY2xhc3N9fSIgaWQ9Int7c2Nyb2xs X2Rpdl9pZH19Ij5cCjx0YWJsZSBjbGFzcz0iYmVndW5fYWR2X3RhYmxlIHt7Y3Nz X3RodW1ibmFpbHN9fSIgaWQ9Int7c2Nyb2xsX3RhYmxlX2lkfX0iPlwKe3tiYW5u ZXJzfX1cCjwvdGFibGU+XAo8L2Rpdj5cCjxkaXYgY2xhc3M9ImJlZ3VuX2Fkdl9h bGwiIHN0eWxlPSJkaXNwbGF5Ont7YWxsX2Jhbm5lcnNfZGlzcGxheX19Ij48YSBo cmVmPSJ7e2FsbF9iYW5uZXJzX3VybH19IiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9 InNuYXBfbm9zaG90cyI+e3thbGxfYmFubmVyc190ZXh0fX08L2E+PC9kaXY+XAo8 L2Rpdj5cCic7CgkJCWh0bWxbJ2Jsb2NrXzI0MHg0MDBfdXNlX2FjY29yZGlvbidd ID0gJ1wKPGRpdiBjbGFzcz0iYmVndW5fYWR2IGJlZ3VuX2Fkdl9maXggYmVndW5f YWR2X2ZpeF92ZXIgYmVndW5fYWR2XzI0MHg0MDAgYmVndW5fYWR2X2FjY29yZGlv biJ7e2Jsb2NrX2hvdmVyfX0+XAo8dGFibGUgY2xhc3M9ImJlZ3VuX2Fkdl9zeXMi Pjx0cj5cCjx0ZCBjbGFzcz0iYmVndW5fYWR2X3N5c19sb2dvIiBzdHlsZT0iZGlz cGxheTp7e2xvZ29fZGlzcGxheX19Ij48ZGl2PjxhIGhyZWY9Int7YmVndW5fdXJs fX0iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0ic25hcF9ub3Nob3RzIj5iZWd1bjwv YT48L2Rpdj48L3RkPlwKPHRkIGNsYXNzPSJiZWd1bl9hZHZfc3lzX3NpZ25fdXAi IHN0eWxlPSJkaXNwbGF5Ont7cGxhY2VfaGVyZV9kaXNwbGF5fX0iPjxkaXY+PGEg aHJlZj0ie3twbGFjZV9oZXJlX3VybH19IiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9 InNuYXBfbm9zaG90cyI+e3twbGFjZV9oZXJlX3RleHR9fTwvYT48L2Rpdj48L3Rk PlwKPC90cj48L3RhYmxlPlwKPGRpdiBjbGFzcz0iYmVndW5fYWR2X2NvbW1vbiB7 e2Jsb2NrX3Njcm9sbF9jbGFzc319IGJhbm5lcnNfY291bnRfe3tiYW5uZXJzX2Nv dW50fX0ge3tleHRlbmRlZF9ibG9ja19jbGFzc319IiBpZD0ie3tzY3JvbGxfZGl2 X2lkfX0iPlwKPHRhYmxlIGNsYXNzPSJiZWd1bl9hZHZfdGFibGUge3tjc3NfdGh1 bWJuYWlsc319IiBpZD0ie3tzY3JvbGxfdGFibGVfaWR9fSI+XAp7e2Jhbm5lcnN9 fVwKPC90YWJsZT5cCjwvZGl2PlwKPGRpdiBjbGFzcz0iYmVndW5fYWR2X2FsbCIg c3R5bGU9ImRpc3BsYXk6e3thbGxfYmFubmVyc19kaXNwbGF5fX0iPjxhIGhyZWY9 Int7YWxsX2Jhbm5lcnNfdXJsfX0iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0ic25h cF9ub3Nob3RzIj57e2FsbF9iYW5uZXJzX3RleHR9fTwvYT48L2Rpdj5cCjwvZGl2 PlwKJzsKCQkJaHRtbFsnYmxvY2tfcmljaCddID0gJ1wKPGRpdiBjbGFzcz0iYmVn dW5fYWR2IGJlZ3VuX2Fkdl9maXggYmVndW5fYWR2X2ZpeF92ZXIgYmVndW5fYWR2 XzI0MHg0MDAie3tibG9ja19ob3Zlcn19PlwKPHRhYmxlIGNsYXNzPSJiZWd1bl9h ZHZfc3lzIj48dHI+XAo8dGQgY2xhc3M9ImJlZ3VuX2Fkdl9zeXNfbG9nbyIgc3R5 bGU9ImRpc3BsYXk6e3tsb2dvX2Rpc3BsYXl9fSI+PGRpdj48YSBocmVmPSJ7e2Jl Z3VuX3VybH19IiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InNuYXBfbm9zaG90cyI+ YmVndW48L2E+PC9kaXY+PC90ZD5cCjx0ZCBjbGFzcz0iYmVndW5fYWR2X3N5c19z aWduX3VwIiBzdHlsZT0iZGlzcGxheTp7e3BsYWNlX2hlcmVfZGlzcGxheX19Ij48 ZGl2PjxhIGhyZWY9Int7cGxhY2VfaGVyZV91cmx9fSIgdGFyZ2V0PSJfYmxhbmsi IGNsYXNzPSJzbmFwX25vc2hvdHMiPnt7cGxhY2VfaGVyZV90ZXh0fX08L2E+PC9k aXY+PC90ZD5cCjwvdHI+PC90YWJsZT5cCjxkaXYgY2xhc3M9ImJlZ3VuX2Fkdl9j b21tb24ge3tibG9ja19zY3JvbGxfY2xhc3N9fSBiYW5uZXJzX2NvdW50X3t7YmFu bmVyc19jb3VudH19IHt7ZXh0ZW5kZWRfYmxvY2tfY2xhc3N9fSIgaWQ9Int7c2Ny b2xsX2Rpdl9pZH19Ij5cCjx0YWJsZSBjbGFzcz0iYmVndW5fYWR2X3RhYmxlIHt7 Y3NzX3RodW1ibmFpbHN9fSIgaWQ9Int7c2Nyb2xsX3RhYmxlX2lkfX0iPlwKe3ti YW5uZXJzfX1cCjwvdGFibGU+XAo8L2Rpdj5cCjxkaXYgY2xhc3M9ImJlZ3VuX2Fk dl9hbGwiIHN0eWxlPSJkaXNwbGF5Ont7YWxsX2Jhbm5lcnNfZGlzcGxheX19Ij48 YSBocmVmPSJ7e2FsbF9iYW5uZXJzX3VybH19IiB0YXJnZXQ9Il9ibGFuayIgY2xh c3M9InNuYXBfbm9zaG90cyI+e3thbGxfYmFubmVyc190ZXh0fX08L2E+PC9kaXY+ XAo8L2Rpdj5cCic7CgkJCWh0bWxbJ2Jsb2NrXzEyMHg2MDAnXSA9ICdcCjxkaXYg Y2xhc3M9ImJlZ3VuX2FkdiBiZWd1bl9hZHZfZml4IGJlZ3VuX2Fkdl9maXhfdmVy IGJlZ3VuX2Fkdl8xMjB4NjAwInt7YmxvY2tfaG92ZXJ9fT5cCjx0YWJsZSBjbGFz cz0iYmVndW5fYWR2X3N5cyI+PHRyPlwKPHRkIGNsYXNzPSJiZWd1bl9hZHZfc3lz X2xvZ28iIHN0eWxlPSJkaXNwbGF5Ont7bG9nb19kaXNwbGF5fX0iPjxkaXY+PGEg aHJlZj0ie3tiZWd1bl91cmx9fSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJzbmFw X25vc2hvdHMiPmJlZ3VuPC9hPjwvZGl2PjwvdGQ+XAo8dGQgY2xhc3M9ImJlZ3Vu X2Fkdl9zeXNfc2lnbl91cCIgc3R5bGU9ImRpc3BsYXk6e3twbGFjZV9oZXJlX2Rp c3BsYXl9fSI+PGRpdj48YSBocmVmPSJ7e3BsYWNlX2hlcmVfdXJsfX0iIHRhcmdl dD0iX2JsYW5rIiBjbGFzcz0ic25hcF9ub3Nob3RzIj57e3BsYWNlX2hlcmVfdGV4 dH19PC9hPjwvZGl2PjwvdGQ+XAo8L3RyPjwvdGFibGU+XAo8ZGl2IGNsYXNzPSJi ZWd1bl9hZHZfY29tbW9uIHt7YmxvY2tfc2Nyb2xsX2NsYXNzfX0gYmFubmVyc19j b3VudF97e2Jhbm5lcnNfY291bnR9fSB7e2V4dGVuZGVkX2Jsb2NrX2NsYXNzfX0i IGlkPSJ7e3Njcm9sbF9kaXZfaWR9fSI+XAo8dGFibGUgY2xhc3M9ImJlZ3VuX2Fk dl90YWJsZSB7e2Nzc190aHVtYm5haWxzfX0iIGlkPSJ7e3Njcm9sbF90YWJsZV9p ZH19Ij5cCnt7YmFubmVyc319XAo8L3RhYmxlPlwKPC9kaXY+XAo8ZGl2IGNsYXNz PSJiZWd1bl9hZHZfYWxsIiBzdHlsZT0iZGlzcGxheTp7e2FsbF9iYW5uZXJzX2Rp c3BsYXl9fSI+PGEgaHJlZj0ie3thbGxfYmFubmVyc191cmx9fSIgdGFyZ2V0PSJf YmxhbmsiIGNsYXNzPSJzbmFwX25vc2hvdHMiPnt7YWxsX2Jhbm5lcnNfdGV4dH19 PC9hPjwvZGl2PlwKPC9kaXY+XAonOwoJCQlodG1sWydibG9ja18xNjB4NjAwJ10g PSAnXAo8ZGl2IGNsYXNzPSJiZWd1bl9hZHYgYmVndW5fYWR2X2ZpeCBiZWd1bl9h ZHZfZml4X3ZlciBiZWd1bl9hZHZfMTYweDYwMCJ7e2Jsb2NrX2hvdmVyfX0+XAo8 dGFibGUgY2xhc3M9ImJlZ3VuX2Fkdl9zeXMiPjx0cj5cCjx0ZCBjbGFzcz0iYmVn dW5fYWR2X3N5c19sb2dvIiBzdHlsZT0iZGlzcGxheTp7e2xvZ29fZGlzcGxheX19 Ij48ZGl2PjxhIGhyZWY9Int7YmVndW5fdXJsfX0iIHRhcmdldD0iX2JsYW5rIiBj bGFzcz0ic25hcF9ub3Nob3RzIj5iZWd1bjwvYT48L2Rpdj48L3RkPlwKPHRkIGNs YXNzPSJiZWd1bl9hZHZfc3lzX3NpZ25fdXAiIHN0eWxlPSJkaXNwbGF5Ont7cGxh Y2VfaGVyZV9kaXNwbGF5fX0iPjxkaXY+PGEgaHJlZj0ie3twbGFjZV9oZXJlX3Vy bH19IiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InNuYXBfbm9zaG90cyI+e3twbGFj ZV9oZXJlX3RleHR9fTwvYT48L2Rpdj48L3RkPlwKPC90cj48L3RhYmxlPlwKPGRp diBjbGFzcz0iYmVndW5fYWR2X2NvbW1vbiB7e2Jsb2NrX3Njcm9sbF9jbGFzc319 IGJhbm5lcnNfY291bnRfe3tiYW5uZXJzX2NvdW50fX0ge3tleHRlbmRlZF9ibG9j a19jbGFzc319IiBpZD0ie3tzY3JvbGxfZGl2X2lkfX0iPlwKPHRhYmxlIGNsYXNz PSJiZWd1bl9hZHZfdGFibGUge3tjc3NfdGh1bWJuYWlsc319IiBpZD0ie3tzY3Jv bGxfdGFibGVfaWR9fSI+XAp7e2Jhbm5lcnN9fVwKPC90YWJsZT5cCjwvZGl2PlwK PGRpdiBjbGFzcz0iYmVndW5fYWR2X2FsbCIgc3R5bGU9ImRpc3BsYXk6e3thbGxf YmFubmVyc19kaXNwbGF5fX0iPjxhIGhyZWY9Int7YWxsX2Jhbm5lcnNfdXJsfX0i IHRhcmdldD0iX2JsYW5rIiBjbGFzcz0ic25hcF9ub3Nob3RzIj57e2FsbF9iYW5u ZXJzX3RleHR9fTwvYT48L2Rpdj5cCjwvZGl2PlwKJzsKCQkJaHRtbFsndG9wX2dy YXBoX2Jhbm5lciddID0gJzx0YWJsZSBpZD0iYmVndW5fdG9wX2dyYXBoX2Jhbm5l ciI+PHRib2R5Pjx0cj48dGQgY2xhc3M9ImJlZ3VuX3RvcF9ncmFwaF9iYW5uZXJf bGVmdF9jb2wiPjwvdGQ+PHRkPnt7aHRtbH19PC90ZD48dGQgY2xhc3M9ImJlZ3Vu X3RvcF9ncmFwaF9iYW5uZXJfcmlnaHRfY29sIj48L3RkPjwvdHI+PC90Ym9keT48 L3RhYmxlPic7CgkJCWh0bWxbJ3NlYXJjaF9iYW5uZXJfc3dmJ10gPSAnPG9iamVj dCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1 NDAwMDAiIHdpZHRoPSJ7e3dpZHRofX0iIGhlaWdodD0ie3toZWlnaHR9fSI+PHBh cmFtIG5hbWU9Im1vdmllIiBWQUxVRT0ie3tzb3VyY2V9fSZsaW5rMT17e3VybH19 Ij48cGFyYW0gbmFtZT0id21vZGUiIHZhbHVlPSJvcGFxdWUiPjxwYXJhbSBuYW1l PSJhbGxvd1NjcmlwdEFjY2VzcyIgdmFsdWU9ImFsd2F5cyI+PHBhcmFtIG5hbWU9 InF1YWxpdHkiIFZBTFVFPSJoaWdoIj48ZW1iZWQgc3JjPSJ7e3NvdXJjZX19Jmxp bmsxPXt7dXJsfX0iIHF1YWxpdHk9ImhpZ2giIHdpZHRoPSJ7e3dpZHRofX0iIGhl aWdodD0ie3toZWlnaHR9fSIgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUt Zmxhc2giIHdtb2RlPSJvcGFxdWUiPjwvZW1iZWQ+PC9vYmplY3Q+JzsKCQkJaHRt bFsnc2VhcmNoX2Jhbm5lcl9qcyddID0gJyc7CgkJCWh0bWxbJ3NlYXJjaF9iYW5u ZXJfaW1nJ10gPSAnPGEgaHJlZj0ie3t1cmx9fSIgdGFyZ2V0PSJfYmxhbmsiPjxp bWcgc3JjPSJ7e3NvdXJjZX19JnJlZGlyPTEiIGJvcmRlcj0iMCIgd2lkdGg9Int7 d2lkdGh9fSIgaGVpZ2h0PSJ7e2hlaWdodH19IiAvPjwvYT4nOwoJCgkJCXRoaXMu Z2V0Q1NTID0gZnVuY3Rpb24odHlwZSl7CgkJCQlyZXR1cm4gY3NzW3R5cGVdOwoJ CQl9OwoJCQl0aGlzLmdldEhUTUwgPSBmdW5jdGlvbih0eXBlKXsKCQkJCXJldHVy biBodG1sW3R5cGVdOwoJCQl9OwoJCQl0aGlzLmFkZFRwbHMgPSBmdW5jdGlvbigp ewoJCQkJdmFyIHR5cGVzID0gWydodG1sJywgJ2NzcyddOwoJCQkJdmFyIGkgPSAw OwoJCQkJdmFyIHR5cGUgPSBudWxsOwoJCQkJdmFyIGlzX2RlZmF1bHRfY3NzX292 ZXJyaWRlID0gZmFsc2U7CgkJCQlpZiAoY3NzWydkZWZhdWx0J10gJiYgd2luZG93 WydiZWd1bl9jc3NfdHBscyddICYmIHdpbmRvd1snYmVndW5fY3NzX3RwbHMnXVsn ZGVmYXVsdCddICYmIGNzc1snZGVmYXVsdCddICE9IHdpbmRvd1snYmVndW5fY3Nz X3RwbHMnXVsnZGVmYXVsdCddKXsKCQkJCQlpc19kZWZhdWx0X2Nzc19vdmVycmlk ZSAgPSB0cnVlOwoJCQkJfQoJCQkJd2hpbGUgKHR5cGUgPSB0eXBlc1tpXSl7CgkJ CQkJaWYgKHdpbmRvd1snYmVndW5fJyArIHR5cGUgKyAnX3RwbHMnXSAhPT0gdW5k ZWZpbmVkKXsKCQkJCQkJdmFyIGogPSAwOwoJCQkJCQl2YXIgdHBsID0gbnVsbDsK CQkJCQkJd2hpbGUgKHRwbCA9IHdpbmRvd1snYmVndW5fJyArIHR5cGUgKyAnX3Rw bHMnXVtqXSl7CgkJCQkJCQlCZWd1bi5leHRlbmQoZXZhbCh0eXBlKSwgdHBsKTsK CQkJCQkJCWorKzsKCQkJCQkJfQoJCQkJCX0KCQkJCQlpKys7CgkJCQl9CgkJCQly ZXR1cm4gaXNfZGVmYXVsdF9jc3Nfb3ZlcnJpZGU7CgkJCX0KCQl9OwoKCQlhYy5D dXN0b21pemF0aW9uID0gbmV3IGZ1bmN0aW9uKCl7CgkJCXZhciBfdGhpcyA9IHRo aXM7CgkJCXRoaXMuaW5pdCA9IGZ1bmN0aW9uKCl7CgkJCQlpZiAod2luZG93LmJl Z3VuX3VybHMgIT09IHVuZGVmaW5lZCl7CgkJCQkJX3RoaXMuc2V0VVJMcyh3aW5k b3cuYmVndW5fdXJscyk7CgkJCQkJd2luZG93LmJlZ3VuX3VybHMgPSBudWxsOwoJ CQkJfQoJCQkJaWYgKHdpbmRvdy5iZWd1bl9jYWxsYmFja3MgIT09IHVuZGVmaW5l ZCl7CgkJCQkJX3RoaXMuc2V0Q2FsbGJhY2tzKHdpbmRvdy5iZWd1bl9jYWxsYmFj a3MpOwoJCQkJCXdpbmRvdy5iZWd1bl9jYWxsYmFja3MgPSBudWxsOwoJCQkJfQoJ CQkJaWYgKF90aGlzLnNldFRwbHMoKSB8fCAhYXJndW1lbnRzLmNhbGxlZS5ydW4p ewoJCQkJCWFjLnByaW50RGVmYXVsdFN0eWxlKCk7CgkJCQkJYXJndW1lbnRzLmNh bGxlZS5ydW4gPSB0cnVlOwoJCQkJCS8qd2luZG93LmJlZ3VuX2h0bWxfdHBscyA9 IG51bGw7CgkJCQkJd2luZG93LmJlZ3VuX2Nzc190cGxzID0gbnVsbDsqLwoJCQkJ fQoJCQl9OwoJCQl0aGlzLnNldFVSTHMgPSBmdW5jdGlvbih1cmxzKXsKCQkJCUJl Z3VuLmV4dGVuZChhYy5TdHJpbmdzLnVybHMsIHVybHMgfHwge30pOwoJCQl9OwoJ CQl0aGlzLnNldENhbGxiYWNrcyA9IGZ1bmN0aW9uKGNhbGxiYWNrcyl7CgkJCQlh Yy5DYWxsYmFja3MucmVnaXN0ZXIoY2FsbGJhY2tzIHx8IHt9KTsKCQkJfTsKCQkJ dGhpcy5zZXRUcGxzID0gZnVuY3Rpb24oKXsKCQkJCWFjLlRwbHMuYWRkVHBscygp OwoJCQl9OwoJCX07Cgl9KSgpOwoKCShmdW5jdGlvbigpewoJCXZhciBhYyA9IEJl Z3VuLkF1dG9jb250ZXh0OwoKCQlpZiAodHlwZW9mIG9uQ29udGVudCAhPSAnZnVu Y3Rpb24nKXsKCQkJZnVuY3Rpb24gb25Db250ZW50KGYpewoJCQkJdmFyIGEsIGQg PSBkb2N1bWVudCwgdyA9IHdpbmRvdywgYyA9ICJfX29uQ29udGVudF9fIiwgZSA9 ICJhZGRFdmVudExpc3RlbmVyIiwgbyA9ICJvcGVyYSIsIHIgPSAicmVhZHlTdGF0 ZSIsCgkJCQlzID0gIjxzY3IiLmNvbmNhdCgiaXB0IGRlZmVyIHNyYz0nLy86JyBv biIsIHIsICJjaGFuZ2U9J2lmKHRoaXMuIiwgciwgIj09XCJjb21wbGV0ZVwiKXt0 aGlzLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcyk7IiwgYywgIigpfSc+PC9z Y3IiLCJpcHQ+Iik7CgkJCQl3W2NdID0gKGZ1bmN0aW9uKG8pewoJCQkJCXJldHVy biBmdW5jdGlvbigpewoJCQkJCQl3W2NdPWZ1bmN0aW9uKCl7fTsKCQkJCQkJZm9y IChhID0gYXJndW1lbnRzLmNhbGxlZTsgIWEuZG9uZTsgYS5kb25lID0gMSl7CgkJ CQkJCQlmKG8gPyBvKCkgOiBvKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0pKHdbY10p OwoJCQkJaWYgKGRbZV0pewoJCQkJCWRbZV0oIkRPTUNvbnRlbnRMb2FkZWQiLCB3 W2NdLCBmYWxzZSk7CgkJCQl9CgkJCQl2YXIgYmIgPSBCZWd1bi5Ccm93c2VyOwoJ CQkJaWYoKGJiLldlYktpdCkgfHwgKGJiLk9wZXJhICYmIGJiLmxlc3MoOSkpKXsK CQkJCQkoZnVuY3Rpb24oKXsKCQkJCQkJL2xvYWRlZHxjb21wbGV0ZS8udGVzdChk W3JdKSA/IHdbY10oKSA6IHNldFRpbWVvdXQoYXJndW1lbnRzLmNhbGxlZSwxKQoJ CQkJCX0pKCk7CgkJCQl9IGVsc2UgaWYgKGJiLklFKXsKCQkJCQlkLndyaXRlKHMp OwoJCQkJfQoJCQl9OwoJCX0KCQoJCW9uQ29udGVudChmdW5jdGlvbigpewoJCQlh Yy5DYWxsYmFja3MuZGlzcGF0Y2goJ2Jsb2NrcycsICdkcmF3JywgYWMpOwoJCX0p OwoKCQlhYy5Nb25pdG9yLmluaXQoKTsKCX0pKCk7Cn0KCkJlZ3VuLkF1dG9jb250 ZXh0LmluaXQoKTsK ------------lpcK8kNA4UN1EPii0uGjuD Content-Disposition: inline; filename=lp_banner.js Content-Type: application/x-javascript; charset=UTF-8; name=lp_banner.js Content-Location: http://195.68.160.173/3/imgstc/lp_banner.js Content-Transfer-Encoding: Base64 dmFyIExQX2Jhbm5lciA9IHsKCWVsOiBudWxsLCBwb3NpdGlvbjogbnVsbCwgcG9z SGRscjogbnVsbCwgYW5pbUhuZGxyOiBudWxsLCBvZmZzZXQ6IG51bGwsIHU6IG51 bGwsCglpc0lFOiAvTVNJRS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSwKCWlz SUVsdDc6IC9NU0lFIChcZCtcLlxkKyk7Ly50ZXN0KG5hdmlnYXRvci51c2VyQWdl bnQpICYmIHBhcnNlSW50KFJlZ0V4cC4kMSkgPCA3LAoJc3R5bGU6IHsKCQltc2df cG9wdXA6ICJmb250Om5vcm1hbCAxMXB4IFRhaG9tYTtjb2xvcjojMzMzO3dpZHRo OiAyMDBweDsgYmFja2dyb3VuZDogI2ZmZiB1cmwoaHR0cDovLzE5NS42OC4xNjAu MTczLzMvaW1nL2xwbmV3L2JnX2Jvb2ttYXJrcy5naWYpIG5vLXJlcGVhdCByaWdo dCB0b3A7IiwKCQloZWFkZXI6ICJmb250LXdlaWdodDpib2xkO2JhY2tncm91bmQ6 IHVybChodHRwOi8vMTk1LjY4LjE2MC4xNzMvMy9pbWcvbHBuZXcvYmdfYm9va21h cmtzLmdpZikgbm8tcmVwZWF0IGxlZnQgdG9wOyBwYWRkaW5nOjdweCAxMHB4IDdw eCAxNXB4OyBjb2xvcjojMDg3OWIxOyBtYXJnaW4tcmlnaHQ6IDVweDsiLAoJCWNs b3NlOiAiZmxvYXQ6IHJpZ2h0OyBtYXJnaW4tdG9wOiA0cHg7IG1hcmdpbi1yaWdo dDogLTVweDtjdXJzb3I6cG9pbnRlcjsiLAoJCWJveDogImJvcmRlcjogMXB4IHNv bGlkICNkMGQwZDA7IHBhZGRpbmc6IDZweDtjb2xvcjojMzMzOyIsCgkJcGhvdG86 ICJib3JkZXI6IDA7IHdpZHRoOiA2NnB4OyBoZWlnaHQ6IDkwcHg7IGZsb2F0OiBs ZWZ0OyBtYXJnaW4tcmlnaHQ6IDZweDsiCgl9LAoKCWNhbGNQb3NpdGlvbjogZnVu Y3Rpb24oKXsKCQlpZihMUF9iYW5uZXIuaXNJRSl7CgkJCXJldHVybih7CgkJCQls ZWZ0OiAoTFBfYmFubmVyLnUuc2hpZnQgPj0gMCk/IExQX2Jhbm5lci51LnNoaWZ0 IDogKGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggKyBkb2N1bWVudC5ib2R5LnNj cm9sbExlZnQgLSBMUF9iYW5uZXIuZWwub2Zmc2V0V2lkdGggKyBMUF9iYW5uZXIu dS5zaGlmdCksCgkJCQl0b3A6IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0ICsg ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AKCQkJIH0pOwoJCX1lbHNlewoJCQlyZXR1 cm4oewoJCQkJbGVmdDogKExQX2Jhbm5lci51LnNoaWZ0ID49IDApPyBMUF9iYW5u ZXIudS5zaGlmdCA6ICh3aW5kb3cuaW5uZXJXaWR0aCAtIExQX2Jhbm5lci5lbC5v ZmZzZXRXaWR0aCArIExQX2Jhbm5lci51LnNoaWZ0KSwKCQkJCXRvcDogd2luZG93 LmlubmVySGVpZ2h0CgkJCSB9KTsKCQl9Cgl9LAoKCXNldFdhc1Nob3dlZDogZnVu Y3Rpb24oKSB7CgkJdmFyIGRhdGUgPSBuZXcgRGF0ZSgpLCBub3cgPSBwYXJzZUlu dChkYXRlLmdldFRpbWUoKS8xMDAwKTsKCQlkYXRlLnNldFRpbWUoKG5vdyt0aGlz LnUuaW50ZXJ2YWwqNjApKjEwMDApOwoJCWRvY3VtZW50LmNvb2tpZSA9ICJscF9i YW5uZXI9Iitub3crIjsgZXhwaXJlcz0iK2RhdGUudG9VVENTdHJpbmcoKSsiOyBw YXRoPS8iOwoJfSwKCglnZXRXYXNTaG93ZWQ6IGZ1bmN0aW9uKCkgewoJCWlmKCF0 aGlzLnUuaW50ZXJ2YWwpIHJldHVybiBmYWxzZTsKCQl2YXIgY29va2llPW51bGws IGNvb2tpZXMgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoIjsgIiksIGxlbmd0aCA9 IGNvb2tpZXMubGVuZ3RoOwoJCWZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBp KyspewoJCQljb29raWUgPSBjb29raWVzW2ldLnNwbGl0KCI9Iik7CgkJCWlmIChj b29raWVbMF09PSJscF9iYW5uZXIiKSByZXR1cm4gdHJ1ZTsKCQl9CgkJcmV0dXJu IGZhbHNlOwoJfSwKCglvcGVuOiBmdW5jdGlvbigpewoJCUxQX2Jhbm5lci5lbC5z dHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKCQlMUF9iYW5uZXIuYW5pbUhkbHIgPSB3 aW5kb3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKCQkJTFBfYmFubmVyLm9mZnNl dC50b3ArPUxQX2Jhbm5lci51LnN0ZXA7CgkJCWlmIChMUF9iYW5uZXIub2Zmc2V0 LnRvcCA+IExQX2Jhbm5lci5lbC5vZmZzZXRIZWlnaHQpewoJCQkJTFBfYmFubmVy Lm9mZnNldC50b3AgPSBMUF9iYW5uZXIuZWwub2Zmc2V0SGVpZ2h0OwoJCQkJd2lu ZG93LmNsZWFySW50ZXJ2YWwoTFBfYmFubmVyLmFuaW1IZGxyKTsKCQkJCWlmKExQ X2Jhbm5lci51LmF1dG9jbG9zZSkgTFBfYmFubmVyLmFuaW1IZGxyID0gd2luZG93 LnNldFRpbWVvdXQoTFBfYmFubmVyLmNsb3NlLCBMUF9iYW5uZXIudS5hdXRvY2xv c2UpOwoJCQl9CgkJCUxQX2Jhbm5lci5lbC5zdHlsZS50b3A9TFBfYmFubmVyLnBv c2l0aW9uLnRvcCAtIExQX2Jhbm5lci5vZmZzZXQudG9wICsgInB4IjsKCQl9LCAy NSkKCX0sCgoJY2xvc2U6IGZ1bmN0aW9uKCl7CgkJaWYoTFBfYmFubmVyLnUuYXV0 b2Nsb3NlKSB3aW5kb3cuY2xlYXJUaW1lb3V0KExQX2Jhbm5lci5hbmltSGRscik7 CgkJTFBfYmFubmVyLmFuaW1IZGxyID0gd2luZG93LnNldEludGVydmFsKGZ1bmN0 aW9uKCl7CgkJCUxQX2Jhbm5lci5vZmZzZXQudG9wLT1MUF9iYW5uZXIudS5zdGVw OwoJCQlpZiAoTFBfYmFubmVyLm9mZnNldC50b3AgPCAwKXsKCQkJCUxQX2Jhbm5l ci5vZmZzZXQudG9wID0gMDsKCQkJCXdpbmRvdy5jbGVhckludGVydmFsKExQX2Jh bm5lci5hbmltSGRscik7CgkJCQl3aW5kb3cuY2xlYXJJbnRlcnZhbChMUF9iYW5u ZXIucG9zSGRscik7CgkJCQlMUF9iYW5uZXIuZWwuc3R5bGUuZGlzcGxheSA9ICJu b25lIjsKCQkJCXZhciByb290ID0gTFBfYmFubmVyLmVsLnBhcmVudE5vZGU7CgkJ CQl0cnkge3Jvb3QucmVtb3ZlQ2hpbGQocm9vdC5jaGlsZE5vZGVzWzBdKX0KCQkJ CWNhdGNoKGUpIHsvKmFsZXJ0KGUpKi99CgkJCX0KCQkJTFBfYmFubmVyLmVsLnN0 eWxlLnRvcD1MUF9iYW5uZXIucG9zaXRpb24udG9wIC0gTFBfYmFubmVyLm9mZnNl dC50b3AgKyAicHgiOwoJCX0sIDI1KQoJfSwKCgljcmVhdGU6IGZ1bmN0aW9uKGQp IHsKCQl0aGlzLmhlYWQucmVtb3ZlQ2hpbGQodGhpcy5zY3JpcHQpOwoJCXZhciBi b2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSwK CQl0ZW1wbGF0ZSA9ICc8ZGl2IHN0eWxlPSInK3RoaXMuc3R5bGUubXNnX3BvcHVw KyciPjxkaXYgc3R5bGU9IicrdGhpcy5zdHlsZS5oZWFkZXIrJyI+PGltZyBzcmM9 Imh0dHA6Ly8xOTUuNjguMTYwLjE3My8zL2ltZy9scG5ldy9iZ19leGl0LmdpZiIg dGl0bGU9IiVjbG9zZSUiIHN0eWxlPSInK3RoaXMuc3R5bGUuY2xvc2UrJyIgb25j bGljaz0iTFBfYmFubmVyLmNsb3NlKCkiPiV0aXRsZSU8L2Rpdj48YSBocmVmPSIl aHJlZiUiIHRhcmdldD0iX2JsYW5rIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBu b25lOyI+PGRpdiBzdHlsZT0iJyt0aGlzLnN0eWxlLmJveCsnIj48aW1nIHNyYz0i JXNyYyUiIHN0eWxlPSInK3RoaXMuc3R5bGUucGhvdG8rJyI+JXRleHQlPGRpdiBz dHlsZT0iY2xlYXI6Ym90aDsiPjwvZGl2PjwvZGl2PjwvYT48L2Rpdj4nLAoJCW1z ZyA9IHRoaXMudS5tc2cucmVwbGFjZSgvJWxvZ2luJS9nLCBkLmxvZ2luKS5yZXBs YWNlKC8lc2V4JS9naSwgZC5zZXgpLnJlcGxhY2UoLyVvcmllbnQlL2csIGQub3Jp ZW50KS5yZXBsYWNlKC8lbmFtZSUvZywgZC5uYW1lKS5yZXBsYWNlKC8lYWdlJS9n LCBkLmFnZSkucmVwbGFjZSgvJWNvdW50cnklL2csIGQuY291bnRyeSkucmVwbGFj ZSgvJWNpdHklL2csIGQuY2l0eSkucmVwbGFjZSgvXFsoLio/KVxdL2csIGZ1bmN0 aW9uKCl7CgkJCS8vYWxlcnQoYXJndW1lbnRzWzFdKTsKCQkJdHJ5e2V2YWwoInZh ciB2PSIrYXJndW1lbnRzWzFdKX0KCQkJY2F0Y2goZSl7YWxlcnQoIkV4Y2VwdGlv biBpbiB0ZW1wbGF0ZXI6ICIgKyBlKX07CgkJCXJldHVybiB2OwoJCX0pOwoJCXRo aXMudS5ocmVmID0gdGhpcy51LmhyZWYucmVwbGFjZSgiJWxvZ2luJSIsIGQubG9n aW4pOwoJCXRoaXMuZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK CQl0aGlzLmVsLnN0eWxlLm1hcmdpbiA9ICIwIjsKCQl0aGlzLmVsLnN0eWxlLnBh ZGRpbmcgPSAiMCI7CgkJdGhpcy5lbC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwoJ CXRoaXMuZWwuc3R5bGUucG9zaXRpb24gPSAodGhpcy5pc0lFbHQ3KT8iYWJzb2x1 dGUiOiJmaXhlZCI7CgkJdGhpcy5lbC5zdHlsZS56SW5kZXggPSAxMDAwOwoJCXRo aXMuZWwuaW5uZXJIVE1MID0gdGVtcGxhdGUucmVwbGFjZSgiJWhyZWYlIiwgdGhp cy51LmhyZWYpLnJlcGxhY2UoIiV0aXRsZSUiLCB0aGlzLnUudGl0bGUpLnJlcGxh Y2UoIiVjbG9zZSUiLCB0aGlzLnUuY2xvc2UpLnJlcGxhY2UoIiVzcmMlIiwgZC5w aG90bykucmVwbGFjZSgiJXRleHQlIiwgbXNnKTsKCQl0aGlzLnBvc2l0aW9uID0g dGhpcy5jYWxjUG9zaXRpb24oKTsKCQl0aGlzLmVsLnN0eWxlLmxlZnQgPSB0aGlz LnBvc2l0aW9uLmxlZnQrInB4IjsKCQl0aGlzLmVsLnN0eWxlLnRvcCA9IHRoaXMu cG9zaXRpb24udG9wKyJweCI7CgkJYm9keS5pbnNlcnRCZWZvcmUodGhpcy5lbCwg Ym9keS5jaGlsZE5vZGVzWzBdKTsKCQl0aGlzLm9mZnNldCA9IHtsZWZ0OiAyMDAs IHRvcDogMH07CgkJdGhpcy5wb3NIZGxyID0gd2luZG93LnNldEludGVydmFsIChm dW5jdGlvbigpewoJCQlMUF9iYW5uZXIucG9zaXRpb24gPSBMUF9iYW5uZXIuY2Fs Y1Bvc2l0aW9uKCk7CgkJCWlmKExQX2Jhbm5lci5wb3NpdGlvbi5sZWZ0ICE9IHBh cnNlSW50KExQX2Jhbm5lci5lbC5zdHlsZS5sZWZ0KSB8fCBMUF9iYW5uZXIucG9z aXRpb24udG9wIC0gTFBfYmFubmVyLm9mZnNldC50b3AgIT0gcGFyc2VJbnQoTFBf YmFubmVyLmVsLnN0eWxlLnRvcCkpewoJCQkJTFBfYmFubmVyLmVsLnN0eWxlLmxl ZnQgPSAoTFBfYmFubmVyLnBvc2l0aW9uLmxlZnQpICsgInB4IjsKCQkJCUxQX2Jh bm5lci5lbC5zdHlsZS50b3AgPSAoTFBfYmFubmVyLnBvc2l0aW9uLnRvcCAtIExQ X2Jhbm5lci5vZmZzZXQudG9wKSArICJweCI7CgkJCX0KCQl9LCA1MCk7CgkJaWYo dGhpcy51LnRpbWVvdXQpIHsKCQkJd2luZG93LnNldFRpbWVvdXQodGhpcy5vcGVu LCB0aGlzLnUudGltZW91dCk7CgkJfSBlbHNlIHRoaXMub3BlbigpOwoJfSwKCQoJ aW5pdDogZnVuY3Rpb24oYyl7CgkJdGhpcy51ID0gewoJCQlzaGlmdDogKHR5cGVv ZiBjLnNoaWZ0ID09ICJudW1iZXIiKT8gYy5zaGlmdCA6IC0yMCwKCQkJc3RlcDog KHR5cGVvZiBjLnN0ZXAgPT0gIm51bWJlciIpPyBjLnN0ZXAgOiA1LAoJCQlhZmZp ZDogKHR5cGVvZiBjLmFmZmlkID09ICJudW1iZXIiKT8gYy5hZmZpZCA6IDAsCgkJ CWludGVydmFsOiAodHlwZW9mIGMuaW50ZXJ2YWwgPT0gIm51bWJlciIpPyBjLmlu dGVydmFsIDogMTUsCgkJCXRpbWVvdXQ6ICh0eXBlb2YgYy50aW1lb3V0ID09ICJu dW1iZXIiKT8gYy50aW1lb3V0KjEwMDAgOiAzMDAwLAoJCQlhdXRvY2xvc2U6ICh0 eXBlb2YgYy5hdXRvY2xvc2UgPT0gIm51bWJlciIpPyBjLmF1dG9jbG9zZSoxMDAw IDogMCwKCQkJaHJlZjogKHR5cGVvZiBjLmhyZWYgPT0gInN0cmluZyIpPyBjLmhy ZWYgOiAiIyIsCgkJCWRhdGE6ICh0eXBlb2YgYy5kYXRhID09ICJzdHJpbmciKT8g Yy5kYXRhIDogIiIsCgkJCXRpdGxlOiAodHlwZW9mIGMudGl0bGUgPT0gInN0cmlu ZyIpPyBjLnRpdGxlIDogIiIsCgkJCWNsb3NlOiAodHlwZW9mIGMuY2xvc2UgPT0g InN0cmluZyIpPyBjLmNsb3NlIDogIiIsCgkJCW1zZzogKHR5cGVvZiBjLm1zZyA9 PSAic3RyaW5nIik/IGMubXNnIDogIiIKCQl9OwoJCWlmKHRoaXMuZ2V0V2FzU2hv d2VkKCkpewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJZWxzZXsKCQkJdGhpcy5zZXRX YXNTaG93ZWQoKTsKCQl9OwoJCS8qIEpTT05QIGNyb3NzZG9tYWluIHJlcXVlc3Qg Ki8KCQl0aGlzLmhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi aGVhZCIpWzBdOwoJCXRoaXMuc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu dCgic2NyaXB0Iik7CgkJdGhpcy5zY3JpcHQudHlwZSA9ICJ0ZXh0L2phdmFzY3Jp cHQiOwoJCXRoaXMuc2NyaXB0LnNyYyA9IHRoaXMudS5kYXRhOwoJCXRoaXMuc2Ny aXB0LmNoYXJzZXQgPSAiVVRGLTgiOwoJCXRoaXMuaGVhZC5hcHBlbmRDaGlsZCh0 aGlzLnNjcmlwdCk7Cgl9Cn0= ------------lpcK8kNA4UN1EPii0uGjuD Content-Disposition: inline; filename=15312.htm Content-Type: text/html; charset=utf-8; name=15312.htm Content-Location: http://readme.ru/informer/htm/15312.htm Content-Transfer-Encoding: 8bit ReadMe ------------lpcK8kNA4UN1EPii0uGjuD Content-Disposition: inline; filename=15312.js Content-Type: application/x-javascript; charset=utf-8; name=15312.js Content-Location: http://readme.ru/informer/15312.js Content-Transfer-Encoding: Base64 dmFyIHJkbV9pZCAgICAgICAgICA9IDE1MzEyOwp2YXIgcmRtX3NpdGVfaWQgICAg ICAgPSA1MTYxOwp2YXIgcmRtX3Nob3dfZGVzYyAgICAgPSAwOwp2YXIgcmRtX3No b3dfcGhvdG8gICAgPSAxOwp2YXIgcmRtX3Nob3dfYWxpZ24gICAgPSAnY2VudGVy JzsKdmFyIHRpdGxlX3Bvc2l0aW9uICAgID0gMTsKdmFyIGNvbnN0X3RpdGxlX2Jl Zm9yZT0gMDsKdmFyIGNvbnN0X3RpdGxlX2FmdGVyID0gMTsKCnZhciByZG1fY2xh c3NfdGl0bGUgICA9ICcnOwp2YXIgcmRtX2NsYXNzX2Rlc2MgICAgPSAnJzsKdmFy IHJkbV9jbGFzc19waG90byAgID0gJyc7CnZhciByZG1fc3R5bGVfcGhvdG8gICA9 ICcnOwoKdmFyIHJkbV9oZWFkZXIgICAgICAgID0gJzx0YWJsZSBib3JkZXI9IjAi IHdpZHRoPSIxMDAlIj48dHI+JzsKdmFyIHJkbV9mb290ZXIgICAgICAgID0gJzwv dHI+PC90YWJsZT4nOwp2YXIgcmRtX2RlbGltZXRlciAgICAgPSAnJzsKCnZhciBy ZG1fbGluZV9iZWZvcmUgICA9ICc8dGQ+JzsKdmFyIHJkbV9saW5lX2FmdGVyICAg ID0gJzwvdGQ+JzsKCnZhciByZG1fdGl0bGVfYmVmb3JlICA9ICcnOwp2YXIgcmRt X3RpdGxlX2FmdGVyICAgPSAnPGJyPic7Cgp2YXIgcmRtX2Rlc2NfYmVmb3JlICAg PSAnJzsKdmFyIHJkbV9kZXNjX2FmdGVyICAgID0gJyc7Cgp2YXIgcmRtX2RhdGEg ICAgICAgICAgPSAnJzsKdmFyIHJkbV9pbWdfc2l6ZSAgICAgID0gJyB3aWR0aD0i OTAiIGhlaWdodD0iOTAiICc7CnZhciByZG1faW1nX3BhdGggICAgICA9ICdodHRw Oi8vaW1nLnJlYWRtZS5ydS9uZXdzLzkwLyc7CnZhciByZG1fY3NzX3N0eWxlcyAg ICA9ICdkaXYjcmRtaW5mcm1fMTUzMTIgZGl2IHtwYWRkaW5nOiAycHh9IGRpdiNy ZG1pbmZybV8xNTMxMiB1bCB7bGlzdC1zdHlsZS10eXBlOiBub25lfSBkaXYjcmRt aW5mcm1fMTUzMTIgdGFibGUge2JvcmRlcjogbm9uZTsgYmFja2dyb3VuZC1jb2xv cjogI0NDQ0NDQ30gZGl2I3JkbWluZnJtXzE1MzEyIHRhYmxlIHRkIHt3aWR0aDog NTAlOyB0ZXh0LWFsaWduOiBsZWZ0OyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyA7IGJv cmRlcjogbm9uZX0gZGl2I3JkbWluZnJtXzE1MzEyIGRpdi5yZG1fdGl0bGVfMTUz MTIgYSwgZGl2I3JkbWluZnJtXzE1MzEyIGRpdi5yZG1fdGl0bGVfMTUzMTIgYTpo b3ZlciB7Zm9udC1mYW1pbHk6IFRhaG9tYTsgZm9udC13ZWlnaHQ6IG5vcm1hbDsg Zm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzMzMzMzMzsgdGV4dC1kZWNvcmF0aW9u OiB1bmRlcmxpbmV9IGRpdiNyZG1pbmZybV8xNTMxMiBkaXYucmRtX2ltZ18xNTMx MiB7ZmxvYXQ6IGxlZnR9IGRpdiNyZG1pbmZybV8xNTMxMiBkaXYucmRtX2ltZ18x NTMxMiBpbWcge2JvcmRlcjogbm9uZX0gZGl2I3JkbWluZnJtXzE1MzEyIGRpdi5y ZG1fdGV4dF8xNTMxMiBhLCBkaXYjcmRtaW5mcm1fMTUzMTIgZGl2LnJkbV90ZXh0 XzE1MzEyIGE6aG92ZXIge2ZvbnQtZmFtaWx5OiBUYWhvbWE7IGZvbnQtd2VpZ2h0 OiBub3JtYWw7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IGJsYWNrOyB0ZXh0LWRl Y29yYXRpb246IG5vbmV9JzsKCnZhciByZG1faW5pdGlkICAgICAgICA9ICdyZG1p bmZybV8xNTMxMic7CnZhciByZG1faW5pdGlkX3RhZ3MgICA9ICdyZG1pbmZybV8x NTMxMl90YWdzJzsKCnZhciByZG1faG9zdCAgICAgICAgICA9ICdodHRwOi8vY2xp Y2sucmVhZG1lLnJ1Lyc7Cgp2YXIgcmRtX251bSAgICAgICAgICAgPSAyOwoKdmFy IHJkbV9kb21haW4gICAgICAgID0gJ2h0dHA6Ly9jbGljay5yZWFkbWUucnUvJzsK CnZhciByZG1fdHlwZSAgICAgICAgICA9ICcxJzsKdmFyIHJkbV90YmxfY29scyAg ICAgID0gJzEnOwoKdmFyIHJkbV90aXRsZV9sZW5ndGggPSAwOwp2YXIgcmRtX3Rl eHRfbGVuZ3RoICA9IDA7Cgp2YXIgcmRtX0dFVF9LZXlzOwp2YXIgcmRtX0dFVF9W YWx1ZXM7CnZhciByZG1fR0VUX0NvdW50ID0gMDsKdmFyIHJkbV9HRVRfRGVmYXVs dCA9ICcnOwp2YXIgcmRtX2NvbnRleHQgPSAnJzsKCmZ1bmN0aW9uIGdldENvb2tp ZShuYW1lKXt2YXIgZGM9ZG9jdW1lbnQuY29va2llO3ZhciBwcmVmaXg9bmFtZSsi PSI7dmFyIGJlZ2luPWRjLmluZGV4T2YoIjsgIitwcmVmaXgpO2lmKGJlZ2luPT0t MSl7YmVnaW49ZGMuaW5kZXhPZihwcmVmaXgpO2lmKGJlZ2luIT0wKXtyZXR1cm4g bnVsbDt9fWVsc2V7YmVnaW4gKz0gMjt9dmFyIGVuZD1kYy5pbmRleE9mKCI7Iiwg YmVnaW4pO2lmIChlbmQ9PS0xKXtlbmQ9ZGMubGVuZ3RoO31yZXR1cm4gdW5lc2Nh cGUoZGMuc3Vic3RyaW5nKGJlZ2luK3ByZWZpeC5sZW5ndGgsZW5kKSk7fQpmdW5j dGlvbiBzZXRDb29raWUobmFtZSx2YWx1ZSxleHBpcmVzLHBhdGgsZG9tYWluLHNl Y3VyZSl7ZG9jdW1lbnQuY29va2llPW5hbWUrIj0iK2VzY2FwZSh2YWx1ZSkrKChl eHBpcmVzKT8iOyBleHBpcmVzPSIrZXhwaXJlcy50b0dNVFN0cmluZygpOiIiKSso KHBhdGgpPyI7IHBhdGg9IitwYXRoOiIiKSsoKGRvbWFpbik/Ijtkb21haW49Iitk b21haW46IiIpKygoc2VjdXJlKT8iOyBzZWN1cmUiOiIiKTt9Cgp2YXIgcmRtX2lu aXQgICAgICAgICAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChyZG1faW5pdGlk KTsKCmZ1bmN0aW9uIFJETUkoKXtpZihyZG1faW5pdCl7cmRtX2luaXQuaW5uZXJI VE1MID0gcmRtX2RhdGE7fX0KZnVuY3Rpb24gUkRNSCgpe3JkbV9kYXRhKz1yZG1f aGVhZGVyO30KZnVuY3Rpb24gUkRNRigpe3JkbV9kYXRhKz1yZG1fZm9vdGVyO1JE TUkoKTt9CmZ1bmN0aW9uIFJETUFkZCh0aXRsZSxuZXdzX3VybCx1cmwsZGVzYyxw aG90byxzcGVjaWFsLHBvcyl7CgogICAgaWYgKHJkbV90aXRsZV9sZW5ndGggPiAw KSB7CiAgICAgICAgdGl0bGUgPSB0aXRsZS5zdWJzdHIoMCwgcmRtX3RpdGxlX2xl bmd0aCk7CiAgICB9CiAgICBpZiAocmRtX3RleHRfbGVuZ3RoID4gMCkgewogICAg ICAgIGRlc2MgPSBkZXNjLnN1YnN0cigwLCByZG1fdGV4dF9sZW5ndGgpOwogICAg fQoKICAgIHRpdCA9ICc8ZGl2IGNsYXNzPSJyZG1fdGl0bGVfJytyZG1faWQrJyI+ PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9IicrbmV3c191cmwrJy9pbi5waHA/aWQ9 Jyt1cmwrJyI+Jyt0aXRsZSsnPCcrJy9hPjwvZGl2Pic7CiAgICBpZiAocmRtX3R5 cGUgPT0gNSkgewogICAgICAgIGlmIChwb3MgJSByZG1fdGJsX2NvbHMgPT0gMSkg ewogICAgICAgICAgICBzdHIgPSAnPHRyPjx0ZD4nOwogICAgICAgIH0gZWxzZSB7 CiAgICAgICAgICAgIHN0ciA9ICc8dGQ+JzsKICAgICAgICB9CiAgICB9IGVsc2Ug ewogICAgICAgIHN0cj1yZG1fbGluZV9iZWZvcmU7CiAgICB9CiAgICAKICAgIGlm KHRpdGxlX3Bvc2l0aW9uID09IGNvbnN0X3RpdGxlX2JlZm9yZSkge3N0cis9IHRp dDt9CiAgICBpZihyZG1fc2hvd19waG90byYmcGhvdG8hPScnKSB7c3RyKz0nPGRp diBjbGFzcz0icmRtX2ltZ18nK3JkbV9pZCsnIj48YSB0YXJnZXQ9Il9ibGFuayIg aHJlZj0iJytuZXdzX3VybCsnL2luLnBocD9pZD0nK3VybCsnIj48aW1nIHNyYz0i JytyZG1faW1nX3BhdGgrcGhvdG8rJyIgJytyZG1faW1nX3NpemUrJyBib3JkZXI9 MCAvPjwnKycvYT48L2Rpdj4nO30KICAgIGlmKHRpdGxlX3Bvc2l0aW9uID09IGNv bnN0X3RpdGxlX2FmdGVyKSB7c3RyKz0gdGl0O30KICAgIGlmKHJkbV9zaG93X2Rl c2MmJmRlc2MhPScnKSB7c3RyKz0nPGRpdiBjbGFzcz0icmRtX3RleHRfJytyZG1f aWQrJyI+PGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9IicrbmV3c191cmwrJy9pbi5w aHA/aWQ9Jyt1cmwrJyIgPicrZGVzYysnPCcrJy9hPjwvZGl2Pic7fQogICAgCiAg ICBpZiAocmRtX3R5cGUgPT0gNSkgewogICAgICAgIGlmIChwb3MgJSByZG1fdGJs X2NvbHMgPT0gMCkgewogICAgICAgICAgICByZG1fZGF0YSs9c3RyKyc8L3RkPjwv dHI+JzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZG1fZGF0YSs9c3Ry Kyc8L3RkPic7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICByZG1fZGF0 YSs9c3RyK3JkbV9saW5lX2FmdGVyOwogICAgfQp9CgpyZG1fY29udGV4dF9saW5r ID0gcmRtX2NvbnRleHQgIT0gJycgPyAnY29udGV4dD0nK2VuY29kZVVSSUNvbXBv bmVudChyZG1fY29udGV4dCkgOiAnJzsKCmlmIChyZG1faW5pdCkgewogICAgZG9j dW1lbnQud3JpdGUoJzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+JytyZG1fY3NzX3N0 eWxlcysnPCcrJy9zdHlsZT4nKTsKICAgIGRvY3VtZW50LndyaXRlKCc8c2NyJysn aXB0IGNoYXJzZXQ9InV0Zi04IiBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0i dGV4dC9qYXZhc2NyaXB0IiBzcmM9IicrcmRtX2hvc3QrJ2pzL2guanMiPjwnKycv c2NyJysnaXB0PicpOwogICAgZG9jdW1lbnQud3JpdGUoJzxzY3InKydpcHQgY2hh cnNldD0idXRmLTgiIGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2ph dmFzY3JpcHQiIHNyYz0iJytyZG1faG9zdCsnanMvaWQvMTUzMTIucGhwPycrcmRt X2NvbnRleHRfbGluaysnIj48JysnL3NjcicrJ2lwdD4nKTsKICAgIGRvY3VtZW50 LndyaXRlKCc8c2NyJysnaXB0IGNoYXJzZXQ9InV0Zi04IiBsYW5ndWFnZT0iamF2 YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IicrcmRtX2hvc3Qr J2pzL2YuanMiPjwnKycvc2NyJysnaXB0PicpOwp9 ------------lpcK8kNA4UN1EPii0uGjuD Content-Disposition: inline; filename=default.htm Content-Type: text/html; charset=utf-16; name=default.htm Content-Location: about:blank Content-Transfer-Encoding: Base64 //48ACEARABPAEMAVABZAFAARQAgAEgAVABNAEwAIABQAFUAQgBMAEkAQwAgACIA LQAvAC8AVwAzAEMALwAvAEQAVABEACAASABUAE0ATAAgADQALgAwADEALwAvAEUA TgAiAD4ACgA8AGgAdABtAGwAIABkAGkAcgA9ACIAbAB0AHIAIgA+AAoAPABoAGUA YQBkAD4ACgAgADwAdABpAHQAbABlAD4AHwRDBEEEQgQwBE8EIABBBEIEQAQwBD0E OARGBDAEPAAvAHQAaQB0AGwAZQA+AAoAPAAvAGgAZQBhAGQAPgAKADwAYgBvAGQA eQA+ADwALwBiAG8AZAB5AD4APAAvAGgAdABtAGwAPgA= ------------lpcK8kNA4UN1EPii0uGjuD--