CSPECT compatible debug interface

This commit is contained in:
Роман Бойков 2026-03-29 20:57:32 +03:00
parent 18df702750
commit 72a2d6b3a3
77 changed files with 4190 additions and 109 deletions

BIN
Icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
IconBig.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 475 KiB

View File

@ -21,6 +21,8 @@ import (
func mainWindow(computer *okean240.ComputerType, config *config.OkEmuConfig) (*fyne.Window, *canvas.Raster, *widget.Label) { func mainWindow(computer *okean240.ComputerType, config *config.OkEmuConfig) (*fyne.Window, *canvas.Raster, *widget.Label) {
emulatorApp := app.New() emulatorApp := app.New()
w := emulatorApp.NewWindow("Океан 240.2") w := emulatorApp.NewWindow("Океан 240.2")
// Handle all keys typed in main window canvas
w.Canvas().SetOnTypedKey( w.Canvas().SetOnTypedKey(
func(key *fyne.KeyEvent) { func(key *fyne.KeyEvent) {
computer.PutKey(key) computer.PutKey(key)
@ -33,6 +35,7 @@ func mainWindow(computer *okean240.ComputerType, config *config.OkEmuConfig) (*f
addShortcuts(w.Canvas(), computer) addShortcuts(w.Canvas(), computer)
// ---
label := widget.NewLabel(fmt.Sprintf("Screen size: %dx%d", computer.ScreenWidth(), computer.ScreenHeight())) label := widget.NewLabel(fmt.Sprintf("Screen size: %dx%d", computer.ScreenWidth(), computer.ScreenHeight()))
raster := canvas.NewRasterWithPixels( raster := canvas.NewRasterWithPixels(
@ -49,15 +52,20 @@ func mainWindow(computer *okean240.ComputerType, config *config.OkEmuConfig) (*f
raster.SetMinSize(fyne.NewSize(512, 512)) raster.SetMinSize(fyne.NewSize(512, 512))
centerRaster := container.NewCenter(raster) centerRaster := container.NewCenter(raster)
w.Resize(fyne.NewSize(600, 600)) w.Resize(fyne.NewSize(600, 600))
vBox := container.NewVBox( //vBox := container.NewVBox(
// newToolbar(computer, w, emulatorApp, config),
// centerRaster,
// label,
//)
vBox := container.NewBorder(
newToolbar(computer, w, emulatorApp, config), newToolbar(computer, w, emulatorApp, config),
centerRaster,
label, label,
nil,
nil,
centerRaster,
) )
w.SetContent(vBox) w.SetContent(vBox)
return &w, raster, label return &w, raster, label
@ -86,40 +94,37 @@ func newToolbar(c *okean240.ComputerType, w fyne.Window, a fyne.App, config *con
} }
hBox.Add(widget.NewButtonWithIcon("1", theme.DownloadIcon(), func() { hBox.Add(widget.NewButtonWithIcon("1", theme.DownloadIcon(), func() {
c.SetRamBytes(ramBytes1) c.SetRamBytes(ramBytes)
}))
hBox.Add(widget.NewSeparator())
hBox.Add(widget.NewButtonWithIcon("2", theme.DownloadIcon(), func() {
c.SetRamBytes(ramBytes2)
})) }))
hBox.Add(widget.NewSeparator()) hBox.Add(widget.NewSeparator())
hBox.Add(widget.NewButtonWithIcon("^C", theme.MediaStopIcon(), func() { hBox.Add(widget.NewButtonWithIcon("^C", theme.MediaStopIcon(), func() {
c.PutCtrlKey(0x03) c.PutCtrlKey(0x03)
})) }))
hBox.Add(widget.NewSeparator()) hBox.Add(widget.NewSeparator())
cbFreq := widget.NewCheck("Fmax", func(checked bool) { bNorm := widget.NewButtonWithIcon("", theme.MediaPlayIcon(), nil)
fullSpeed.Store(checked) bFast := widget.NewButtonWithIcon("", theme.MediaFastForwardIcon(), nil)
if checked {
c.SetCPUFrequency(25_000_000) bFast.OnTapped = func() {
} else { fullSpeed.Store(true)
c.SetCPUFrequency(2_500_000) c.SetCPUFrequency(50_000_000)
} bNorm.Enable()
}) bFast.Disable()
//bNorm := widget.NewButtonWithIcon("", theme.MediaPlayIcon(), func() { }
// fullSpeed.Store(false)
// c.SetCPUFrequency(2_500_000) bNorm.OnTapped = func() {
// //bNorm.Disable() fullSpeed.Store(false)
// c.SetCPUFrequency(2_500_000)
//}) bNorm.Disable()
//bFast := widget.NewButtonWithIcon("", theme.MediaFastForwardIcon(), func() { bFast.Enable()
// fullSpeed.Store(true) }
// c.SetCPUFrequency(50_000_000)
// bNorm.Enable() bNorm.Disable()
// //bFast.Disable()
//}) //hBox.Add(cbFreq)
hBox.Add(bNorm)
hBox.Add(bFast)
hBox.Add(cbFreq)
//hBox.Add(bFast)
hBox.Add(widget.NewSeparator()) hBox.Add(widget.NewSeparator())
hBox.Add(widget.NewButtonWithIcon("", theme.SettingsIcon(), func() { hBox.Add(widget.NewButtonWithIcon("", theme.SettingsIcon(), func() {
cfg := config.Clone() cfg := config.Clone()

BIN
bin/2048.com Normal file

Binary file not shown.

27
bin/ANTIX.BAS Normal file
View File

@ -0,0 +1,27 @@
10 CLS 0:SCRN 4,3:COLOR 1:P=2:R=1:C=210:D=120:E=40:F=10:INPUT N
20 CURS 40,10:RECT 211,120:X=127:Y=120:COLOR 1:A=40:B=30:B1=20:A1=80:P1=2:R1=2
30 CURS X,Y:PLOT X,Y
40 A$=INKEY$
50 IF A=>C THEN P=-N
55 IF A1=>C THEN P1=-N
60 IF B=>D THEN R=-N
65 IF B1=>D THEN R1=-N
70 IF A<=E THEN P=N
75 IF A1<=E THEN P1=N
80 IF B<=F+N THEN R=N
85 IF B1<=F+N THEN R1=N
90 COLOR 1:CURS A,B:PLOT A,B:A=A+P:B=B+R:COLOR 3
100 CURS A,B:PLOT A,B:COLOR 1:CURS A1,B1:PLOT A1,B1
105 A1=A1+P1:B1=B1+R1:COLOR 3:CURS A1,B1:PLOT A1,B1
110 CURS X,Y
120 IF A$=CHR$(48) THEN 160:REM *** Y ***
130 IF A$=CHR$(54) THEN 170:REM *** => ***
140 IF A$=CHR$(53) THEN 180:REM *** ^ ***
150 IF A$=CHR$(52) THEN 190 ELSE 40:REM *** <= ***
160 IF Y=F GOTO 210 ELSE Y=Y-N:GOTO 200
170 IF X=C GOTO 40 ELSE X=X+N:GOTO 200
180 IF Y=D GOTO 40 ELSE Y=Y+N:GOTO 200
190 IF X=E GOTO 40 ELSE X=X-N
200 PLOT X,Y:GOTO 40
210 IF C-X<=10 THEN 40 ELSE C=X-1:GOTO 200


BIN
bin/ASM.COM Normal file

Binary file not shown.

BIN
bin/DDT.COM Normal file

Binary file not shown.

23
bin/DEMO.BAS Normal file
View File

@ -0,0 +1,23 @@
10 CLS 0:SCRN 4,0:COLOR 2:CURS 255,120:PLOT 0,120
20 COLOR 3:FOR I=0 TO 255:PLOT I,SIN(I/10)*100+120:NEXT
30 FOR I=255 TO 0 STEP -1:PLOT I,COS(I/10)*100+120:NEXT
40 COLOR 2:FOR I=0 TO 255:PLOT I,SIN(I/10)*100+120
50 PLOT I,COS(I/10)*100+120:NEXT:A$=INPUT$(1)
60 CLS 8:SCRN 4,0:COLOR 2:CURS 255,120:PLOT 0,120
70 COLOR 3:FOR I=0 TO 255:PLOT I,SIN(I/81)*100+120:NEXT
80 FOR I=0 TO 255:PLOT -I+255,COS(I/81)*100+120:NEXT
90 FOR I=0 TO 255:Y=TAN(I/81)*10+120:IF Y<0 THEN Y=0
100 IF Y>255 THEN Y=255
110 PLOT I,Y:NEXT:A$=INPUT$(1)
120 CLS 0:SCRN 4,0:COLOR 3
130 CURS 50,50:PLOT 49,201:PLOT 201,201:PLOT 201,49:PLOT 49,49
140 FOR I=50 TO 190 STEP 10:CURS 125,125:COLOR 0:PLOT 50,I
150 CURS 125,125:COLOR 1:PLOT 50,I+10:FOR J=0 TO 900:NEXT:NEXT
160 FOR I=50 TO 190 STEP 10:CURS 125,125:COLOR 0:PLOT I,200
170 CURS 125,125:COLOR 1:PLOT I+10,200:FOR J=0 TO 900:NEXT:NEXT
180 FOR I=50 TO 190 STEP 10:CURS 125,125:COLOR 0:PLOT 200,-I+250
190 CURS 125,125:COLOR 1:PLOT 200,-I+240:FOR J=0 TO 900:NEXT
200 NEXT
210 FOR I=50 TO 190 STEP 10:CURS 125,125:COLOR 0:PLOT -I+250,50
220 CURS 125,125:COLOR 1:PLOT -I+240,50:FOR J=0 TO 900:NEXT:NEXT


BIN
bin/DUMP.COM Normal file

Binary file not shown.

BIN
bin/ED.COM Normal file

Binary file not shown.

BIN
bin/ED1.COM Normal file

Binary file not shown.

BIN
bin/FORMAT.COM Normal file

Binary file not shown.

22
bin/GONKI.BAS Normal file
View File

@ -0,0 +1,22 @@
10 CLS 4:SCRN 0,3:PRINT "tarakanxi bega":A=RND
20 INPUT "na kakogo tarakana wy stawite ";T:IF T>5 GOTO 20
30 PRINT CHR$(31);"******* tarakanxi bega *******"
40 PRINT "-----------------------------------------"
50 FOR I=1 TO 5:N(I)=2:NEXT:GOSUB 100
60 PRINT "-----------------------------------------"
70 FOR I=1 TO 5+T:N(I)=N(I)+RND(A):OUT 242,8:OUT 242,0:NEXT
80 PRINT CHR$(12):PRINT:GOSUB 100:PRINT:C=C+1
85 IF C/2=INT(C/2) THEN PRINT "!dawaj wasq!" ELSE PRINT " "
86 FOR I=1 TO 5
90 IF N(I)=>39 THEN 150 ELSE NEXT:RANDOMIZE A:GOTO 70
100 PRINT "1";TAB(N(1))"O<";TAB(42)"f"
110 PRINT "2";TAB(N(2))"O<";TAB(42)"i"
120 PRINT "3";TAB(N(3))"*<";TAB(42)"n"
130 PRINT "4";TAB(N(4))"O<";TAB(42)"i"
140 PRINT "5";TAB(N(5))"O<";TAB(42)"{":RETURN
150 PRINT CHR$(7);CHR$(7):PRINT
160 PRINT "wyigral tarakan so startowym nomerom ";I
170 FOR J=1 TO 2000:NEXT:IF I=T GOTO 190 ELSE PRINT "ha-ha"
180 PRINT "e}e razok poprobuem":GOTO 20
190 PRINT "wa{a wzqla":GOTO 180


BIN
bin/JACK.COM Normal file

Binary file not shown.

BIN
bin/L80.COM Normal file

Binary file not shown.

BIN
bin/LIB.COM Normal file

Binary file not shown.

BIN
bin/LINK.COM Normal file

Binary file not shown.

BIN
bin/LOAD.COM Normal file

Binary file not shown.

BIN
bin/M80.COM Normal file

Binary file not shown.

BIN
bin/MAC.COM Normal file

Binary file not shown.

BIN
bin/MB.COM Normal file

Binary file not shown.

BIN
bin/MOVCPM.COM Normal file

Binary file not shown.

41
bin/MUZA.BAS Normal file
View File

@ -0,0 +1,41 @@
10 DIM A%(1000):CLS 0:SCRN 0,0:COLOR 1:RECT 100,10
20 COLOR 3:N%=1:PRINT CHR$(12);" MYUZIK SINTEZATOR"
30 A$=INKEY$:IF A$="" THEN 70
40 A=(ASC(A$)-47):IF A>9 THEN 90 ELSE A%(N%)=A+1
50 ON A GOSUB 200,210,220,240,260,280,310,340,380,420
60 N%=N%+1:GOTO 30
70 CURS 0,0:RECT N%*.1,10:IF N%=1 THEN 30
80 FOR I=0 TO 20:NEXT I:A%(N%)=0:N%=N%+1:GOTO 30
90 COLOR 1:IF N%=1 THEN N%=N1% ELSE N1%=N%
100 FOR N=1 TO N%:A=A%(N)-1
110 L=L+1:L=L+1:IF A<0 THEN 140
120 ON A GOSUB 200,210,220,240,260,280,310,340,380,420
140 CURS 0,0:RECT N*.1,10
150 NEXT N:GOTO 20
200 FOR I=0 TO 70:E=2:OUT 242,8:OUT 242,0:NEXT:RETURN
210 FOR I=0 TO 50:E=1:E=2:OUT 242,8:OUT 242,0:NEXT:RETURN
220 FOR I=0 TO 40:OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0
230 NEXT:RETURN
240 FOR I=0 TO 35:OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0
250 OUT 242,8:OUT 242,0:NEXT:RETURN
260 FOR I=0 TO 30:OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0
270 OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0:NEXT:RETURN
280 FOR I=0 TO 19:OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0
290 OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0:OUT 242,8
300 OUT 242,0:NEXT:RETURN
310 FOR I=0 TO 16:OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0
320 OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0:OUT 242,8
330 OUT 242,0:OUT 242,8:OUT 242,0:NEXT:RETURN
340 FOR I=0 TO 13:OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0
350 OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0:OUT 242,8
360 OUT 242,0:OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0
370 NEXT:RETURN
380 FOR I=0 TO 10:OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0
390 OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0:OUT 242,8
400 OUT 242,0:OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0
410 OUT 242,8:OUT 242,0:NEXT:RETURN
420 FOR I=0 TO 10:OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0
430 OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0:OUT 242,8
440 OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0:OUT 242,8
450 OUT 242,8:OUT 242,0:OUT 242,8:OUT 242,0:NEXT:RETURN


BIN
bin/PIP.COM Normal file

Binary file not shown.

22
bin/PLOT.BAS Normal file
View File

@ -0,0 +1,22 @@
10 REM **** LEXA CORP. *** DEMO PLOT ****
20 CLS 0:SCRN 4,0:N=5:COLOR 2:RECT 255,255:GOSUB 50
30 FOR I=0 TO 255 STEP 1:COLOR 0:CURS 0,I:PLOT 255,I:NEXT
40 GOSUB 50:N=5:GOSUB 110:GOTO 80
50 OUT 3,128:OUT 1,1:FOR I=1 TO 3000:NEXT:OUT 1,0:RETURN
60 FOR I=A TO B STEP N:COLOR I:CURS H,Z:PLOT X,I:NEXT:RETURN
70 FOR I=A TO B STEP N:COLOR I:CURS H,Z:PLOT I,Y:NEXT:RETURN
80 COLOR 1:P=5:GOSUB 130:GOSUB 50:P=1:GOSUB 130:GOSUB 50
90 FOR I=255 TO 0 STEP -1:COLOR I:CURS 0,I:PLOT 255,I
100 OUT 242,8:OUT 242,0:NEXT:N=1:GOSUB 50:GOSUB 110:GOTO 30
110 H=128:Z=128:A=0:B=255:X=0:GOSUB 60:Y=255:GOSUB 70:A=255
120 B=0:N=-N:X=255:GOSUB 60:B=2:Y=0:GOSUB 70:GOSUB 50:RETURN
130 A=64:B=192:X=128:Y=220:GOSUB 180:X=255:Y=255:GOSUB 180
140 A=192:B=64:P=-P:X=0:GOSUB 180:A=64:B=192:P=-P:X=255:Y=120
150 GOSUB 180:A=192:B=64:P=-P:X=0:Y=120:GOSUB 180
160 GOSUB 50:SCRN 0,0:COLOR 3:CURS 64,0:RECT 192,10
170 CURS 85,230:GPRINT "SUPPER STAR":RETURN
180 FOR I=A TO B STEP P:COLOR I:CURS X,Y:PLOT I,0:NEXT:RETURN
190 FOR I=0 TO 255:COLOR I:CURS I,0:PLOT I,255:NEXT
R":RETURN
180 FOR I=A TO B STEP P:COLOR I:CURS X,Y:PLOT I,0:NEXT:RETURN
190 FOR I=0 TO

BIN
bin/PW.COM Normal file

Binary file not shown.

20
bin/RD.BAS Normal file
View File

@ -0,0 +1,20 @@
10 REM **** Program READ ****
20 CLS 2:SCRN 0,0:INPUT "READ: FILE-1 OR MEMORY-0";R
30 DIM A$(32),N(16):PRINT CHR$(31):IF R=0 GOTO 110
40 INPUT "FILE";FIL$:OPEN "I",#1,FIL$
45 REM ** READ FILE **
50 FOR I=1 TO 16:A$=INPUT$(1,#1):B=B+1
60 A=ASC(A$):IF A<16 THEN PRINT "0"; ELSE PRINT HEX$(A);
70 IF A$>CHR$(32) THEN 80 ELSE A$=" "
80 IF A$>CHR$(127) AND A$<CHR$(160) THEN A$=" "
90 A$(I)=A$:NEXT I:PRINT " ";
100 FOR I=1 TO 16:PRINT A$(I);:NEXT I:PRINT:GOTO 50
110 INPUT "ADDRESS";A
115 REM **** READ MEMORY ****
120 PRINT HEX$(A);"* *";:FOR I=1 TO 16:N(I)=PEEK(A)
130 PRINT USING "\\";HEX$(N(I));:A=A+1:NEXT:PRINT "* *";
140 FOR I=1 TO 16:IF N(I)<32 THEN N(I)=0
150 IF N(I)>127 AND N(I)<160 THEN N(I)=0
160 IF CHR$(N(I))<" " THEN PRINT " "; ELSE PRINT CHR$(N(I));
170 NEXT I


BIN
bin/RES.COM Normal file

Binary file not shown.

BIN
bin/STAT.COM Normal file

Binary file not shown.

BIN
bin/SUBMIT.COM Normal file

Binary file not shown.

BIN
bin/SYSGEN.COM Normal file

Binary file not shown.

BIN
bin/TET.COM Normal file

Binary file not shown.

BIN
bin/TM.COM Normal file

Binary file not shown.

BIN
bin/TYPE.COM Normal file

Binary file not shown.

BIN
bin/WM.COM Normal file

Binary file not shown.

BIN
bin/XSUB.COM Normal file

Binary file not shown.

BIN
bin/catchum.com Normal file

Binary file not shown.

BIN
bin/catchum.dat Normal file

Binary file not shown.

BIN
bin/main.com Normal file

Binary file not shown.

BIN
bin/zexall.com Normal file

Binary file not shown.

BIN
bin/zexdoc.com Normal file

Binary file not shown.

View File

@ -11,7 +11,9 @@ import (
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
) )
const MaxBreakpoints = 256 const MaxBreakpoints = 16383
const BpTmp1 = MaxBreakpoints + 1
const BpTmp2 = MaxBreakpoints + 2
const ( const (
BPTypeSimplePC = iota // Simple PC=nn breakpoint BPTypeSimplePC = iota // Simple PC=nn breakpoint
@ -27,6 +29,7 @@ type Breakpoint struct {
pass uint16 pass uint16
passCount uint16 passCount uint16
enabled bool enabled bool
mBank uint8
} }
var andMatch = regexp.MustCompile(`\s+AND\s+`) var andMatch = regexp.MustCompile(`\s+AND\s+`)
@ -82,13 +85,14 @@ func getSecondUint16(param string, sep string) (uint16, error) {
return uint16(a), nil return uint16(a), nil
} }
func NewBreakpoint(expr string) (*Breakpoint, error) { func NewBreakpoint(expr string, mBank uint8) (*Breakpoint, error) {
bp := Breakpoint{ bp := Breakpoint{
addr: 0, addr: 0,
enabled: false, enabled: false,
passCount: 0, passCount: 0,
pass: 0, pass: 0,
bpType: BPTypeSimplePC, bpType: BPTypeSimplePC,
mBank: mBank,
} }
// Check if BP is simple PC=addr // Check if BP is simple PC=addr
@ -209,13 +213,13 @@ func (b *Breakpoint) Hit(ctx map[string]interface{}) bool {
if b.bpType == BPTypeSimplePC { if b.bpType == BPTypeSimplePC {
pc := getUint16("PC", ctx) pc := getUint16("PC", ctx)
if pc == b.addr { if pc == b.addr {
log.Debugf("Breakpoint Hit PC=%04X", b.addr) log.Debugf("Breakpoint Hit PC=0x%04X", b.addr)
} }
return pc == b.addr return pc == b.addr
} else if b.bpType == BPTypeSimpleSP { } else if b.bpType == BPTypeSimpleSP {
sp := getUint16("SP", ctx) sp := getUint16("SP", ctx)
if sp >= b.addr { if sp >= b.addr {
log.Debugf("Breakpoint Hit SP>=%04X", b.addr) log.Debugf("Breakpoint Hit SP>=0x%04X", b.addr)
} }
return sp >= b.addr return sp >= b.addr
} }
@ -246,3 +250,7 @@ func (b *Breakpoint) SetExpression(expression string) error {
func (b *Breakpoint) Expression() string { func (b *Breakpoint) Expression() string {
return b.cond return b.cond
} }
func (b *Breakpoint) MBank() uint8 {
return b.mBank
}

View File

@ -138,15 +138,38 @@ func (d *Debugger) BreakpointsEnabled() bool {
} }
// SetBreakpoint Create new breakpoint with specified number // SetBreakpoint Create new breakpoint with specified number
func (d *Debugger) SetBreakpoint(number uint16, exp string) error { func (d *Debugger) SetBreakpoint(number uint16, exp string, mBank uint8) error {
var err error var err error
bp, err := breakpoint.NewBreakpoint(exp) bp, err := breakpoint.NewBreakpoint(exp, mBank)
if err == nil && bp != nil { if err == nil && bp != nil {
d.breakpoints[number] = bp d.breakpoints[number] = bp
} }
return err return err
} }
func (d *Debugger) AddBreakpoint(exp string, mBank uint8) (uint16, error) {
var err error
bpNo := d.GetBreakpointNum()
if bpNo < breakpoint.MaxBreakpoints {
bp, err := breakpoint.NewBreakpoint(exp, mBank)
if err == nil && bp != nil {
bp.SetEnabled(true)
d.breakpoints[bpNo] = bp
}
}
return bpNo, err
}
func (d *Debugger) GetBreakpointNum() uint16 {
num := uint16(1)
for no, bp := range d.breakpoints {
if bp != nil && no < breakpoint.MaxBreakpoints && num <= no {
num = no + 1
}
}
return num
}
func (d *Debugger) SetBreakpointPassCount(number uint16, count uint16) { func (d *Debugger) SetBreakpointPassCount(number uint16, count uint16) {
bp, ok := d.breakpoints[number] bp, ok := d.breakpoints[number]
if ok && bp != nil { if ok && bp != nil {
@ -170,6 +193,14 @@ func (d *Debugger) BreakpointEnabled(number uint16) bool {
return false return false
} }
func (d *Debugger) BreakpointMBank(number uint16) uint8 {
bp, ok := d.breakpoints[number]
if ok && bp != nil {
return bp.MBank()
}
return 1
}
func (d *Debugger) ClearMemBreakpoints() { func (d *Debugger) ClearMemBreakpoints() {
for c := 0; c < 65536; c++ { for c := 0; c < 65536; c++ {
d.memBreakpoints[c] = 0 d.memBreakpoints[c] = 0
@ -207,6 +238,10 @@ func (d *Debugger) SetMemBreakpoint(address uint16, typ byte, size uint16) {
} }
} }
func (d *Debugger) RemoveBreakpoint(number uint16) {
delete(d.breakpoints, number)
}
func (d *Debugger) CheckMemBreakpoints(accessMap *map[uint16]byte) (bool, uint16, byte) { func (d *Debugger) CheckMemBreakpoints(accessMap *map[uint16]byte) (bool, uint16, byte) {
if !d.breakpointsEnabled { if !d.breakpointsEnabled {
return false, 0, 0 return false, 0, 0
@ -223,3 +258,7 @@ func (d *Debugger) CheckMemBreakpoints(accessMap *map[uint16]byte) (bool, uint16
} }
return false, 0, 0 return false, 0, 0
} }
func (d *Debugger) ClearBreakpoints() {
clear(d.breakpoints)
}

556
debug/dzrp/dzrp.go Normal file
View File

@ -0,0 +1,556 @@
package dzrp
import (
"bufio"
"errors"
"fmt"
"io"
"net"
"okemu/config"
"okemu/debug"
"okemu/debug/breakpoint"
"okemu/okean240"
"okemu/z80/dis"
"strconv"
log "github.com/sirupsen/logrus"
)
type DZRP struct {
port string
config *config.OkEmuConfig
debugger *debug.Debugger
disassembler *dis.Disassembler
computer *okean240.ComputerType
conn net.Conn
reader *bufio.Reader
writer *bufio.Writer
cmd *Command
}
// SetupTcpHandler Setup TCP listener, handle connections
func NewDZRP(config *config.OkEmuConfig, debug *debug.Debugger, dissasm *dis.Disassembler, comp *okean240.ComputerType) *DZRP {
return &DZRP{
port: config.Debugger.Host + ":" + strconv.Itoa(config.Debugger.Port),
debugger: debug,
disassembler: dissasm,
computer: comp,
}
}
func (p *DZRP) SetupTcpHandler() {
var err error
var l net.Listener
l, err = net.Listen("tcp4", p.port)
if err != nil {
fmt.Println(err)
return
}
defer func(l net.Listener) {
err := l.Close()
if err != nil {
log.Warnf("Error closing listener connection %v", err)
}
}(l)
log.Infof("Ready for debugger connections on %s", p.port)
for {
p.conn, err = l.Accept()
if err != nil {
log.Errorf("Accept connection: %v", err)
return
}
go p.handleConnection()
}
}
// Receive messages, split to strings and parse
func (p *DZRP) handleConnection() {
p.reader = bufio.NewReader(p.conn)
p.writer = bufio.NewWriter(p.conn)
var command Command
n := 0
for {
// receive command packet byte by byte
b, err := p.reader.ReadByte()
if err != nil {
if err == io.EOF {
break
} else {
log.Errorf("TCP error: %v", err)
p.debugger.SetStepMode(false)
return
}
}
switch n {
case 0:
command.Len = uint32(b)
case 1:
command.Len |= uint32(b) << 8
case 2:
command.Len |= uint32(b) << 16
case 3:
command.Len |= uint32(b) << 24
case 4:
command.Sn = b
case 5:
command.Id = b
default:
command.Payload = append(command.Payload, b)
}
if n >= 5 && int(command.Len) == len(command.Payload) {
p.cmd = &command
if p.handleCommand() {
break
}
command.Len = 0
command.Payload = []uint8{}
n = 0
} else {
n++
}
}
log.Debug("Closing connection")
p.debugger.SetStepMode(false)
_ = p.writer.Flush()
p.writer = nil
p.reader = nil
err := p.conn.Close()
if err != nil {
log.Warnf("Can not close TCP socket: %v", err)
}
}
// writeResponse Write response to command back to client
func (p *DZRP) writeResponse(response *Response) error {
// log.Infof("Ready for debugger connections on %s", port)
// Send Len
l := response.Len
for c := 0; c < 4; c++ {
e := p.writer.WriteByte(byte(l))
if e != nil {
log.Warnf("Error writing Len: %v", e)
}
l = l >> 8
}
// Send Sn
e := p.writer.WriteByte(response.Sn)
if e != nil {
log.Warnf("Error writing Sn: %v", e)
return e
}
// Send Payload
for _, b := range response.Payload {
e := p.writer.WriteByte(b)
if e != nil {
log.Warnf("Error writing payload: %v", e)
return e
}
}
e = p.writer.Flush()
if e != nil {
log.Warnf("Error flushing response: %v", e)
return e
}
return nil
}
// BreakpointHit Send notification message to Dezog on BP Hit
func (p *DZRP) BreakpointHit(number uint16, typ byte) {
// turn off temporary breakpoints on any hit
p.debugger.SetBreakpointEnabled(breakpoint.BpTmp1, false)
p.debugger.SetBreakpointEnabled(breakpoint.BpTmp2, false)
if p.writer != nil {
err := p.writeResponse(p.buildBpHitResponse(number, typ))
if err != nil {
log.Warnf("NTF_PAUSE, write response err: %v", err)
}
} else {
log.Warn("NTF_PAUSE, writer is nil")
}
}
func (p *DZRP) buildBpHitResponse(number uint16, typ byte) *Response {
bpReason, bpAddr, mBank := p.getBpReasonAndAddr(number, typ)
rsn := getBpReason(bpReason, bpAddr)
// msg - ASCIIZ bytes
msg := []byte(rsn)
msg = append(msg, byte(0))
rep := []byte{
1, // NTF_PAUSE
bpReason,
byte(bpAddr), byte(bpAddr >> 8),
mBank, // bank
}
rep = append(rep, msg...)
log.Debugf("NTF_PAUSE %s resp: %v", rsn, PayloadToString(rep))
return &Response{
Len: uint32(len(rep) + 1),
Sn: 0,
Payload: rep,
}
}
// handleCommand Handle command received from client, return true if last command is CMD_CLOSE
func (p *DZRP) handleCommand() bool {
log.Debugf("Handling command: %s", p.cmd.toString())
var err error
var resp *Response
handler, ok := commandHandlers[int(p.cmd.Id)]
if ok {
resp, err = handler(p)
} else {
//resp = NewResponse(p.cmd, nil)
err = errors.New("unknown command Id: " + strconv.Itoa(int(p.cmd.Id)))
}
if err == nil {
err = p.writeResponse(resp)
}
if err != nil {
log.Errorf("Error handling command: %v", err)
}
return p.cmd.Id == CMD_CLOSE
}
type CommandHandler func(*DZRP) (*Response, error)
var commandHandlers = map[int]CommandHandler{
CMD_INIT: (*DZRP).handleCmdInit, //1
CMD_CLOSE: (*DZRP).handleCmdClose, //2
CMD_GET_REGISTERS: (*DZRP).handleCmdGetRegisters, //3
CMD_SET_REGISTER: (*DZRP).handleCmdSetRegister, //4
CMD_CONTINUE: (*DZRP).handleCmdContinue, //6
CMD_PAUSE: (*DZRP).handleCmdPause, // 7
CMD_READ_MEM: (*DZRP).handleCmdReadMem, //8
CMD_WRITE_MEM: (*DZRP).handleCmdWriteMem, //9
CMD_LOOPBACK: (*DZRP).handleCmdLoopback, // 15
CMD_READ_PORT: (*DZRP).handleCmdReadPort, // 20
CMD_WRITE_PORT: (*DZRP).handleCmdWritePort, // 21
CMD_INTERRUPT_ON_OFF: (*DZRP).handleCmdInterruptOnOff, // 23
CMD_ADD_BREAKPOINT: (*DZRP).handleCmdAddBreakpoint, //40
CMD_REMOVE_BREAKPOINT: (*DZRP).handleCmdRemoveBreakpoint, //41
}
func (p *DZRP) handleCmdInit() (*Response, error) {
if len(p.cmd.Payload) < 4 {
return nil, errors.New("too short payload")
}
p.debugger.SetStepMode(true)
p.debugger.SetBreakpointsEnabled(true)
p.debugger.ClearBreakpoints()
p.debugger.ClearMemBreakpoints()
app := string(p.cmd.Payload[3 : len(p.cmd.Payload)-1])
log.Debugf("CMD_INIT: client version %d.%d.%d App: %s", p.cmd.Payload[0], p.cmd.Payload[1], p.cmd.Payload[2], app)
payload := []byte{0, VersionMajor, VersionMinor, VersionPatch, MachineZX128K}
payload = append(payload, []byte(AppName)...)
payload = append(payload, 0)
return NewResponse(p.cmd, payload), nil
}
func (p *DZRP) handleCmdClose() (*Response, error) {
log.Debug("CMD_CLOSE")
return NewResponse(p.cmd, nil), nil
}
func (p *DZRP) handleCmdPause() (*Response, error) {
log.Debug("CMD_PAUSE")
p.debugger.SetStepMode(true)
//return NewResponse(p.cmd, []byte{p.cmd.Sn}), nil
return NewResponse(p.cmd, nil), nil
}
func (p *DZRP) handleCmdReadMem() (*Response, error) {
if len(p.cmd.Payload) < 5 {
return nil, errors.New("too short payload")
}
addr := uint16(p.cmd.Payload[2])<<8 + uint16(p.cmd.Payload[1])
size := uint16(p.cmd.Payload[4])<<8 + uint16(p.cmd.Payload[3])
log.Debugf("CMD_READ_MEM[0x%04X] len: 0x%04X", addr, size)
mem := make([]byte, size)
//mem[0] = cmd.Sn
for i := 0; i < int(size); i++ {
mem[i] = p.computer.MemRead(addr)
addr++
}
return NewResponse(p.cmd, mem), nil
}
func (p *DZRP) handleCmdWriteMem() (*Response, error) {
if len(p.cmd.Payload) < 4 {
return nil, errors.New("too short payload")
}
addr := uint16(p.cmd.Payload[1]) + uint16(p.cmd.Payload[2])<<8
log.Debugf("CMD_WRITE_MEM[0x%04X] len: 0x%04X", addr, len(p.cmd.Payload)-3)
for i := 3; i < len(p.cmd.Payload); i++ {
p.computer.MemWrite(addr, p.cmd.Payload[i])
addr++
}
return NewResponse(p.cmd, []byte{p.cmd.Sn}), nil
}
func (p *DZRP) handleCmdSetRegister() (*Response, error) {
lo := p.cmd.Payload[1]
hi := p.cmd.Payload[2]
word := uint16(hi)<<8 | uint16(lo)
s := p.computer.CPUState()
switch p.cmd.Payload[0] {
case RegPC:
s.PC = word
log.Debugf("Set PC=0x%04X", s.PC)
case RegSP:
s.SP = word
log.Debugf("Set SP=0x%04X", s.PC)
case RegAF:
s.A = hi
s.Flags.SetFlags(lo)
case RegBC:
s.B = hi
s.C = lo
case RegDE:
s.D = hi
s.E = lo
case RegHL:
s.H = hi
s.L = lo
case RegIX:
s.IX = word
case RegIY:
s.IY = word
case RegAF_:
s.AAlt = hi
s.FlagsAlt.SetFlags(lo)
case RegBC_:
s.BAlt = hi
s.CAlt = lo
case RegDE_:
s.DAlt = hi
s.EAlt = lo
case RegHL_:
s.HAlt = hi
s.LAlt = lo
case RegIM:
s.IMode = lo
case RegF:
s.Flags.SetFlags(lo)
case RegA:
s.A = lo
case RegC:
s.C = lo
case RegB:
s.B = lo
case RegE:
s.E = lo
case RegD:
s.D = lo
case RegL:
s.L = lo
case RegH:
s.H = lo
case RegIXL:
s.IX = s.IX&0xff00 | uint16(lo)
case RegIXH:
s.IX = (uint16(lo) << 8) | (s.IX & 0x00ff)
case RegIYL:
s.IY = s.IY&0xff00 | uint16(lo)
case RegIYH:
s.IY = (uint16(lo) << 8) | (s.IY & 0x00ff)
case RegF_:
s.FlagsAlt.SetFlags(lo)
case RegA_:
s.AAlt = lo
case RegC_:
s.CAlt = lo
case RegB_:
s.BAlt = lo
case RegE_:
s.EAlt = lo
case RegD_:
s.DAlt = lo
case RegL_:
s.LAlt = lo
case RegH_:
s.HAlt = lo
case RegR:
s.R = lo
case RegI:
s.I = lo
default:
return nil, errors.New("unknown register no: " + strconv.Itoa(int(p.cmd.Payload[0])))
}
p.computer.SetCPUState(s)
//return NewResponse(p.cmd, []byte{p.cmd.Sn}), nil
return NewResponse(p.cmd, nil), nil
}
func (p *DZRP) handleCmdGetRegisters() (*Response, error) {
s := p.computer.CPUState()
resp := []byte{
//p.cmd.Sn,
byte(s.PC), byte(s.PC >> 8),
byte(s.SP), byte(s.SP >> 8),
s.Flags.GetFlags(), s.A,
s.C, s.B,
s.E, s.D,
s.L, s.H,
byte(s.IX), byte(s.IX >> 8),
byte(s.IY), byte(s.IY >> 8),
s.FlagsAlt.GetFlags(), s.AAlt,
s.CAlt, s.BAlt,
s.EAlt, s.DAlt,
s.LAlt, s.HAlt,
s.R,
s.I,
s.IMode,
0, // reserved
0, // Nslots. The number of slots that will follow.
}
log.Debugf("CMD_GET_REGISTERS resp: %v", resp)
return NewResponse(p.cmd, resp), nil
}
func (p *DZRP) handleCmdContinue() (*Response, error) {
eb1 := p.cmd.Payload[0] != 0
ab1 := (uint16(p.cmd.Payload[2]) << 8) | uint16(p.cmd.Payload[1])
p.setTempBreakpoint(eb1, breakpoint.BpTmp1, ab1)
eb2 := p.cmd.Payload[3] != 0
ab2 := (uint16(p.cmd.Payload[5]) << 8) | uint16(p.cmd.Payload[4])
p.setTempBreakpoint(eb2, breakpoint.BpTmp2, ab2)
log.Debugf("CMD_CONTINUE BP1 en: %v, addr: 0x%04X; BP2 en: %v, addr: 0x%04X; AC: 0x%02X",
eb1, ab1, eb2, ab2, p.cmd.Payload[6])
p.debugger.SetRunMode(true)
//return NewResponse(p.cmd, []byte{p.cmd.Sn}), nil
return NewResponse(p.cmd, nil), nil
}
func (p *DZRP) setTempBreakpoint(ena bool, no uint16, addr uint16) {
if ena {
e := p.debugger.SetBreakpoint(no, fmt.Sprintf("PC=%04Xh", addr), 0)
if e != nil {
log.Debugf("setTmpBreakpoint err: %v", e)
}
p.debugger.SetBreakpointEnabled(no, true)
} else {
p.debugger.SetBreakpointEnabled(no, false)
}
}
func (p *DZRP) getBpReasonAndAddr(number uint16, typ byte) (reason byte, addr uint16, mBank uint8) {
reason = BprStepOver // default StepOver
addr = number
mBank = uint8(1)
if typ >= 1 && typ <= 2 { // 1-rd, 2-wr
reason = typ + 2
} else {
if number != breakpoint.BpTmp1 && number != breakpoint.BpTmp2 {
// bp hit
mBank = p.debugger.BreakpointMBank(addr)
reason = BprHit
}
addr = p.computer.CPUState().PC
}
return reason, addr, mBank
}
func (p *DZRP) handleCmdAddBreakpoint() (*Response, error) {
if len(p.cmd.Payload) < 4 {
return nil, errors.New("too short payload")
}
addr := (uint16(p.cmd.Payload[1]) << 8) | uint16(p.cmd.Payload[0])
mBank := p.cmd.Payload[2]
isCond := p.cmd.Payload[3] != 0
var expr string
if isCond {
expr = string(p.cmd.Payload[3 : len(p.cmd.Payload)-3])
} else {
expr = fmt.Sprintf("PC=%04Xh", addr)
}
log.Debugf("CMD_ADD_BREAKPOINT addr: 0x%04X, bank: %d, cond: '%s'", addr, mBank, expr)
bpNum, err := p.debugger.AddBreakpoint(expr, mBank)
if err != nil {
log.Debugf("SetBreakpoint err: %v", err)
return nil, err
}
if bpNum == breakpoint.MaxBreakpoints {
bpNum = 0
}
//bpNum := p.debugger.GetBreakpointNum()
//if bpNum < breakpoint.MaxBreakpoints {
// err := p.debugger.SetBreakpoint(bpNum, cond, mBank)
// p.debugger.SetBreakpointEnabled(bpNum, true)
// if err != nil {
// log.Debugf("SetBreakpoint err: %v", err)
// return nil, err
// }
//} else {
// bpNum = 0
//}
return NewResponse(p.cmd, []byte{byte(bpNum), byte(bpNum >> 8)}), nil
}
func getBpReason(reason byte, addr uint16) string {
rsn, ok := BprReasons[int(reason)]
if !ok {
rsn = strconv.Itoa(int(reason))
}
return fmt.Sprintf("BP: '%s', at: 0x%04X", rsn, addr)
}
func (p *DZRP) handleCmdRemoveBreakpoint() (*Response, error) {
if len(p.cmd.Payload) < 2 {
return nil, errors.New("too short payload")
}
bpNum := (uint16(p.cmd.Payload[1]) << 8) | uint16(p.cmd.Payload[0])
p.debugger.RemoveBreakpoint(bpNum)
log.Debugf("CMD_REMOVE_BREAKPOINT no: %d", bpNum)
return NewResponse(p.cmd, nil), nil
}
// handleCmdLoopback send back received data
func (p *DZRP) handleCmdLoopback() (*Response, error) {
return NewResponse(p.cmd, p.cmd.Payload), nil
}
func (p *DZRP) handleCmdReadPort() (*Response, error) {
if len(p.cmd.Payload) < 2 {
return nil, errors.New("too short payload")
}
addr := (uint16(p.cmd.Payload[1]) << 8) | uint16(p.cmd.Payload[0])
return NewResponse(p.cmd, []byte{p.computer.IORead(addr)}), nil
}
func (p *DZRP) handleCmdWritePort() (*Response, error) {
if len(p.cmd.Payload) < 3 {
return nil, errors.New("too short payload")
}
addr := (uint16(p.cmd.Payload[1]) << 8) | uint16(p.cmd.Payload[0])
p.computer.IOWrite(addr, p.cmd.Payload[2])
return NewResponse(p.cmd, nil), nil
}
func (p *DZRP) handleCmdInterruptOnOff() (*Response, error) {
if len(p.cmd.Payload) == 0 {
return nil, errors.New("too short payload")
}
on := p.cmd.Payload[0] != 0
p.debugger.SetBreakpointsEnabled(on)
log.Debugf("CMD_INTERRUPT_ONOFF on: %t", on)
return NewResponse(p.cmd, nil), nil
}

178
debug/dzrp/protocol.go Normal file
View File

@ -0,0 +1,178 @@
package dzrp
import "fmt"
const (
VersionMajor = 2
VersionMinor = 1
VersionPatch = 0
AppName = "okemu v1.0.0"
)
type Command struct {
Len uint32 // Length of the payload data. (little endian)
Sn uint8 // Sequence number, 1-255. Increased with each command
Id uint8 // Command ID
Payload []uint8 // Payload: Data[0]..Data[n-1]
}
type Notification struct {
Len uint32 // Length of the following data beginning with the sequence number. (little endian)
Sn uint8 // Sequence number = 0
Payload []uint8 // Payload: Data[0]..Data[n-1]
}
type Response struct {
Len uint32 // Length of the following data beginning with the sequence number. (little endian)
Sn uint8 // Sequence number, same as command.
Payload []uint8 // Payload: Data[0]..Data[n-1]
}
// The DRZP commands and responses.
// The response contains the command with the bit 7 set.
const (
CMD_INIT = 1
CMD_CLOSE = 2
CMD_GET_REGISTERS = 3
CMD_SET_REGISTER = 4
CMD_WRITE_BANK = 5
CMD_CONTINUE = 6
CMD_PAUSE = 7
CMD_READ_MEM = 8
CMD_WRITE_MEM = 9
CMD_SET_SLOT = 10
CMD_GET_TBBLUE_REG = 11
CMD_SET_BORDER = 12
CMD_SET_BREAKPOINTS = 13
CMD_RESTORE_MEM = 14
CMD_LOOPBACK = 15
CMD_GET_SPRITES_PALETTE = 16
CMD_GET_SPRITES_CLIP_WINDOW_AND_CONTROL = 17
// Sprites
CMD_GET_SPRITES = 18
CMD_GET_SPRITE_PATTERNS = 19
CMD_READ_PORT = 20
CMD_WRITE_PORT = 21
CMD_EXEC_ASM = 22
CMD_INTERRUPT_ON_OFF = 23
// Breakpoint
CMD_ADD_BREAKPOINT = 40
CMD_REMOVE_BREAKPOINT = 41
CMD_ADD_WATCHPOINT = 42
CMD_REMOVE_WATCHPOINT = 43
// State
CMD_READ_STATE = 50
CMD_WRITE_STATE = 51
)
// DZRP notifications.
const NTF_PAUSE = 1
// Machine type that is returned in CMD_INIT.
// It is required to determine the memory model
const (
MachineUnknown = 0
MachineZX16K = 1
MachineZX48K = 2
MachineZX128K = 3
MachineZXNEXT = 4
)
const (
RegPC = iota
RegSP
RegAF
RegBC
RegDE
RegHL
RegIX
RegIY
RegAF_
RegBC_
RegDE_
RegHL_
RegUnk
RegIM
RegF
RegA
RegC
RegB
RegE
RegD
RegL
RegH
RegIXL
RegIXH
RegIYL
RegIYH
RegF_
RegA_
RegC_
RegB_
RegE_
RegD_
RegL_
RegH_
RegR
RegI
)
type CmdInitCommand struct {
Major uint8 // Version (of the command sender): 3 bytes, big endian: Major.Minor.Patch
Minor uint8
Patch uint8
AppName string // 0-terminated string The program name + version as a string. E.g. "DeZog v1.4.0"
}
type CmdInitResponse struct {
Sn uint8 // Same seq no
Error uint8 // Error: 0=no error, 1=general (unknown) error.
Major uint8 // Version (of the response sender) : 3 bytes, big endian: Major.Minor.Patch
Minor uint8
Patch uint8
Machine uint8 // Machine type (memory model): 0 = UNKNOWN, 1 = ZX16K, 2 = ZX48K, 3 = ZX128K, 4 = ZXNEXT.
AppName string // 0-terminated string The responding program name + version as a string. E.g. "dbg_uart_if v2.0.0"}
}
const (
BprStepOver = 0
BprManual = 1
BprHit = 2
BprMemRead = 3
BprMemWrite = 4
BprOther = 255
)
var BprReasons = map[int]string{
BprStepOver: "Step-over",
BprManual: "Manual break",
BprHit: "Hit",
BprMemRead: "WP read",
BprMemWrite: "WP Write",
BprOther: "Other",
}
func (c *Command) toString() string {
return fmt.Sprintf("Len: %d, Sn: %d, Id: %d, Payload: %s", c.Len, c.Sn, c.Id, PayloadToString(c.Payload))
}
func NewResponse(cmd *Command, payload []byte) *Response {
return &Response{
Len: uint32(len(payload) + 1),
Sn: cmd.Sn,
Payload: payload,
}
}
func PayloadToString(payload []byte) string {
res := "["
for _, b := range payload {
res += fmt.Sprintf("%02X ", b)
}
return res + "]"
}

View File

@ -154,8 +154,8 @@ func HandleCommand(str string, writer *bufio.Writer) bool {
switch cmd { switch cmd {
case "cpu-step": case "cpu-step":
debugger.SetDoStep(true) // computer.Do() debugger.SetDoStep(true) // computer.Do()
text := disassembler.Disassm(computer.GetCPUState().PC) text := disassembler.Disassm(computer.CPUState().PC)
writeResponseMessage(writer, registersResponse(computer.GetCPUState())+" TSTATES: "+strconv.Itoa(int(computer.TStatesPartial()))+"\n"+text) writeResponseMessage(writer, registersResponse(computer.CPUState())+" TSTATES: "+strconv.Itoa(int(computer.TStatesPartial()))+"\n"+text)
case "run": case "run":
writeMessage(writer, runUntilBPMessage) writeMessage(writer, runUntilBPMessage)
debugger.SetRunMode(true) debugger.SetRunMode(true)
@ -173,7 +173,7 @@ func HandleCommand(str string, writer *bufio.Writer) bool {
case "get-version": case "get-version":
writeResponseMessage(writer, getVersionResponse) writeResponseMessage(writer, getVersionResponse)
case "get-registers": case "get-registers":
writeResponseMessage(writer, registersResponse(computer.GetCPUState())) writeResponseMessage(writer, registersResponse(computer.CPUState()))
case "set-register": case "set-register":
writeResponseMessage(writer, setRegister(params)) writeResponseMessage(writer, setRegister(params))
case "hard-reset-cpu": case "hard-reset-cpu":
@ -472,7 +472,7 @@ func stateResponse(state *z80.CPU) string {
} }
func setRegister(param string) string { func setRegister(param string) string {
state := computer.GetCPUState() state := computer.CPUState()
params := strings.Split(param, "=") params := strings.Split(param, "=")
if len(params) != 2 { if len(params) != 2 {
log.Errorf("Invalid set register parameter: %s", param) log.Errorf("Invalid set register parameter: %s", param)
@ -515,7 +515,7 @@ func setRegister(param string) string {
log.Errorf("Unsupported set register parameter: %s", param) log.Errorf("Unsupported set register parameter: %s", param)
} }
computer.SetCPUState(state) computer.SetCPUState(state)
return registersResponse(computer.GetCPUState()) return registersResponse(computer.CPUState())
} }
func readMemory(param string) string { func readMemory(param string) string {
@ -551,7 +551,7 @@ func getExtendedStack(param string) string {
log.Errorf("Invalid size param: %s", param) log.Errorf("Invalid size param: %s", param)
} }
sp := computer.GetCPUState().SP sp := computer.CPUState().SP
if len(params) == 3 { if len(params) == 3 {
psp, err := strconv.ParseUint(params[2], 10, 16) psp, err := strconv.ParseUint(params[2], 10, 16)
if err != nil { if err != nil {
@ -620,7 +620,7 @@ func typToString(typ uint8) string {
func BreakpointHit(number uint16, typ byte) { func BreakpointHit(number uint16, typ byte) {
if activeWriter != nil { if activeWriter != nil {
pc := computer.GetCPUState().PC pc := computer.CPUState().PC
res := disassembler.Disassm(pc) res := disassembler.Disassm(pc)
msg := "" msg := ""
if typ == 0 { if typ == 0 {

BIN
floppy/disk1.img Normal file

Binary file not shown.

BIN
floppy/disk1.okd Normal file

Binary file not shown.

BIN
floppy/disketa.img Normal file

Binary file not shown.

BIN
floppy/disketa.okd Normal file

Binary file not shown.

BIN
floppy/floppyB.okd Normal file

Binary file not shown.

BIN
floppy/floppyB1.okd Normal file

Binary file not shown.

BIN
floppy/floppyC.okd Normal file

Binary file not shown.

BIN
floppy/oce1_2.okd Normal file

Binary file not shown.

BIN
floppy/oce2_2.okd Normal file

Binary file not shown.

23
hex/format.hex Normal file
View File

@ -0,0 +1,23 @@
:020000040000FA
:20010000116A02D53A8000FE02112D03C03A8100FE20C03A8200324503FE420E05CA2501C0
:20012000FE430E02C079329803CD06E0B7CA3601CD09E0C32901113F03CD6A02CD09E01107
:200140007203FE79CA4A01FE59C0CD6A0221000022EFBF3A9803D325F608D325111403DB97
:200160002507D8DB20E680C25F01AFD3200000DB2507D8DB20E605FE04C26F01AFD321AF0B
:200180003297033A9803D325F608D3250E00CDD301CD8802CDA0023A9803D325F628D32578
:2001A0000E01CDD301CD8802CDA002CD06E0B7C409E0FE03118F03C8FE1BC83A97033C3223
:2001C0009703FE50117D03D03E58D3200000DB24C38301219903114E50CD630211000CCD7F
:2001E000630211F603CD630236FC23114E32CD6302060111000CCD630211F503CD6302367F
:20020000FE233A970377237123702336022336F723114E16CD630211000CCD630211F5037E
:20022000CD630236FB2311E500CD6302CD630236F723114E36CD63020478FE0ADAF3011164
:200240004E00CD6302CD6302CD63020E46C5117503CD6A023A9703CD75020E20CD0CE0C11F
:20026000C30CE0732315C26302C91AB7C84FCD0CE013C36A02570E0006087A0757798927DD
:200280004F05C27A02C303E02199033EF4D3200000DB240F7ED32323DA9102DB20C3C702AB
:2002A0000E56CD4D022101123E01D3223E94D3200000DB240FDB232BDAB202DB20E6CFC25A
:2002C000C7027CB5C83E08B7C8F5117203CD6A02F1116A02D5FE0811F602C8FE4011020375
:2002E000C8FE80111403C8F5112603CD6A02F1CD03E0117203C9435243204552524F520DE1
:200300000A0057524954452050524F5445435445440D0A004452495645204E4F5420524525
:200320004144590D0A004552524F52200055534147453A20464F524D415420422F4300446E
:2003400052495645203F3A2057494C4C204245204C4F5354210D0A50524F434545442057BC
:2003600049544820464F524D41542028592F4E293F000D0A000D545241434B20000D464FCE
:19038000524D415420434F4D504C4554450D000D0A425245414B0000002E
:00000001FF

290
hex/l80.hex Normal file
View File

@ -0,0 +1,290 @@
:020000040000FA
:200100002A06002BF922FA181106FF1922621A226A1A1100F81922601A22681AAF676F22DB
:20012000F81822031932FF1832011932FE1821D02322641A225C1A22661A225E1A22E518ED
:2001400022E318210301227E1A227C1A22821A22801A32511A322F1AC3B7013F4E6F20536F
:20016000746172742041646472657373003F4C6F6164696E67204572726F72003F4E6F7447
:2001800068696E67204C6F61646564003F4F7574206F66206D656D6F727900216D01C3A435
:2001A00001218C01C3B001217C01C3B001216903CD7803AF3280002AFA18F9218A1A7EB7A5
:2001C000C2CA0134212903CD78033E01324F1AAF320019CDA103AF320619CDEA0CDAAD0139
:2001E000FE2CCA8202FE0DCA8202FE2FC2AD01CD8203014902C5FE4DC2FE010680C9FE478E
:200200000640C8FE52CA0001FE530602C8FE550601C8FE580610C8FE590608C8FE45C234D8
:20022000020620C9CD2809CDB807010000C5C3A61FC30000FE4FC23F0232FE180600C9D6F5
:2002400048C2F70332FE1847C93A0619B0320619CD8203FE3AC2E001D53E60A0CAAD01CD63
:20026000740DEB11E91878B7CAAD01FE07D2AD011213CD8203121305C27202CD8203D1C317
:20028000E00122FC183A091AB7C41C07AF32800001F802C52106197EE6FEBE77CAAB02B726
:2002A000FAAB023A091AB7CAA9097EE6FDBE77C2BD023A091AB7C8320019C3970B32001919
:2002C0002A03197CB5C8CD7011DAC602CAC60279FE0FC8B7C2C602CDF112DAE6027EE64098
:2002E000C2C602C3EC02226A1AC3C602CD9D0B2A03197CB5C8C3C6022AFC187EE67FFE0D27
:20030000C2DA013A0019B73A0619CA2103FE80CDAA0947E640C2810778E620C22402C3B35E
:2003200001FE80D4AA09C312030D0A4C696E6B2D38302020332E3337202030382D4D61799E
:200340002D38302020436F7079726967687420313937392C383020284329204D6963726FB3
:20036000736F66740D0A0D0A003F436F6D6D616E64204572726F72007EB7C8CDD80623C3DD
:2003800078037EE67F23FE20CA8203FE0ACA8203FE60DA9C03FE7BD29C03D620FE0DC02B6B
:2003A000C9D5C52180007EB747CAC803237EFE20C2B70305C3A903110819782B0412132358
:2003C00005CAE4037EC3BD033A4F1AB7CAD703CD12073E2ACDD8060E0A110719CD05003E16
:2003E0000ACDD8063A0819210919E5856F3E008C67360DE1C1D1C9D60837CA1904D6F4CA91
:200400001904D60AC2AD0132091AE5110A1A212E1A010C00CD9E17E1C9F5CD8203FE3AC21D
:20042000AD01CDE405F1E5478F874FC29F043A511AB7C29F04CD6D06EBE5010000CD60056D
:20044000227E1A22821AE1227C1A22801A2A5C1AE52A641A225C1A22E318CD9D05D12A641F
:200460001AEBCD96052A661A19B7CDDE14424B2A641AEB2A661AE5D5CDA91722E518AF32C5
:20048000501A473C32511AD1E1F5C35905D5CD9605E17AB3C83600231B7AB3C29504C9F53D
:2004A000DAAB043A511AB7C2AB044FCD6D06D5CD6905CD7D05CDB40ACA0305D1CD6005EBAD
:2004C000CD9605D21605E5210000CD9605CD6905E519C579CDE314C1EBE3CD7D05D5CD9608
:2004E0000579424BD1E119E5D5F5CDA917F14FD1E1CD8D04CD7D05E1F1D8F5E521E31809A2
:20050000732372D1217C1A09732372F1D821801A09732372E1C9D5EBCD860513CDB40A1B2A
:20052000F5D44906F1E1E3F5E5F1DA340521801A09732372D1E1D5F5CD7D0519EB21E31859
:2005400009F1F5DA4905732372E1F1E5D25C05CD6905EB79C5CDE314C1CD8D04F1D8E1C9D8
:20056000217C1A097E23666FC9215C1AC36305D5CD6905CD7D05CD9605EBD1B5C9EB216449
:200580001ACD6305EBC9D5CD6005CD7D05CD9605CD690519D1C97D935F7C9A57C93E013296
:2005A000501A2A7C1AEB2A7E1ACD9605DAC4052A5C1A19EB2A681A3A511AB7CAC405CDB499
:2005C0000AD2D8052A5C1AEB2A681ACD96051F577B1F5F2A5C1A19EBEB2322661A225E1A66
:2005E00022E518C91100003AFE1847EBEBCD82034FD630DA1F06FE0ADA0006D607DA1F062B
:20060000EB292929FE10D21E060405CA1406FE08D21E060E29856F3E008C67C3EC05EB7913
:20062000FE0DC82BC9254F7665726C6179696E6720002061726561003C06410644617461D2
:200640000050726F6772616D00CD4F06C31207E5212506CD7803213806097E23666FCD7828
:2006600003213206CD7803E1C9E5C35306E5C5010000CD600513CDB40A1BD29D06E5CD86E8
:2006800005EBE3CDB40AE1EBCA9D06CDB40ADAAE06E17D3CCAA8063DB9C44906E50C0C7919
:2006A000FE04C27206C1E1C9E57937C3A506EBE3C5794DB9E537CAC6062CCAC606CD6005D8
:2006C00023EBCDB40AEBE1C1D1E5DA9D0621F517CD6906C3B3013E09F5C5D5E50E02E67FB1
:2006E0005FCD0500E1D1C1F1C9210B1A3E3FCDD80606087E23CDD806FE21DA010705C2F319
:2007000006210707C3A401204E6F7420466F756E64003E0DCDD8063E0AC3D8063E80325AA6
:200720001A1189190E1ACD0500110A1ACD6E070E0FCD05003CCAE9063EFF32E018C9E5D5AD
:200740003A5A1AB7FC56075F16003C325A1A218919197ED1E1C9C50E1A118919CD0500112C
:200760000A1A0E14CD0500C13CCA9B01AFC9210C0019AF0604772305C275072120001977D9
:20078000C9CD28097CB5EB215B01CAB001EBE5CDB807E521A607CD7803CD12072AF81844C3
:2007A0004DE1C5C3A61F5B426567696E20657865637574696F6E5D003A0119B7CAA7013A76
:2007C000FF18B7CA40082A621AEB2A6A1AEBCDB40ACA40087EE6E0FE607EC22508EE4077BE
:2007E000E607E52B2B2BFE07DAED073E07474F119D097E122B1305C2F2073E0791CA070804
:20080000EB36203DC20108D12A621ACD9605D5219C09CD8709AF32FF18CDA9092A621AD1CA
:20082000CD9605EB7E4FE6075F1600CD9605EB2B2B2B79B7F239082B2B3AFF18B7C2C9070F
:20084000CD12073A0619E618320619CDA9092AF8183E5BCDD806CD280BCDD606010000CD96
:200860008605E521220911F0183E0612477E23131205C26D08AFCDF112DA8F087EE640CAA6
:200880008F082B5E2B56CD0418EBD1732372D5E1E5CD280BCDD6062A601AEB2A681ACDB40A
:2008A0000ACACB081AD6C532531AD5CDB914CD0418EB3A531AB7C2C008782F47792F4F032A
:2008C0007E8177237E8877D1C39B08E1010000CD86053A511AB7CAE608EB0E02CD8605CD5D
:2008E000B40AD2E608EB110001AF957CCE0092CD0F093E5DCDD806CD12073EC33200012AEE
:20090000F8182201013A2F1AB7C47B1DC38B1A06FFD60A04D21109F578C40F09F1C63AC3D3
:20092000D806244D454D52592AF81811E9181AB7C821F01806071A77231305C23609AFCDC7
:20094000F112DA54097EE640CA54092B5E2B56EB22F818C9E5216909CD7803E1CD770EAF00
:2009600032E918217A09C3A4013F53746172742073796D626F6C202D2000202D20756E6414
:200980006566696E656400110A1A060C7EE67F12231305C28C09CD1C07C3BD02002020204C
:2009A000202020202052454CF637F53A0619E660C2C509010000CD700B3A511AB70E02C4EA
:2009C000700BCD1207AF320519329C0A2A621AEB2A6A1AEBCDB40ACA830A7EE60747F1F53B
:2009E000D2F5097EE660C2700A2F32FF183A0619E660C2700AE57EE6E0FE20CA6F0A7EB715
:200A00003E20F20A0A3E2FCDD806F52B5E2B562B7ECDD80605C20F0AF1FE2FCCD806E37EFE
:200A2000E640C2340A3A9C0A3C329C0A3E2A32FF18CDD806CDD6067EE620EBCA470A21905C
:200A40000BCD7803C34A0ACD280BEB7EB7E3F25C0ACDD6062B5E2B56EBCD280BCDD6063A50
:200A60000519FE023FCE01E603320519CC1207E17EB7F2770A3C3CE60FC6022F4F06FF09E2
:200A8000C3CF093A9C0AB7CA6B0BCD12073A9C0ACD0F09219D0ACD7803C36B0B0020556E0D
:200AA000646566696E656420476C6F62616C2873290D0A007C92C07D93C921371A36532356
:200AC000365923364DCDB61D3E04F52A621AEB2A6A1AEBCDB40ACA1F0B7EE6074F7EE64003
:200AE000CA0C0BE52B5E2B56EBCDA61EEB3E20CD5E1F2B7ECD5E1F0DC2F20A3E09CD5E1FC8
:200B0000E1F13DC20B0BCDC21E3E04F57EB7F2130B3C3CE60FC6022F4F06FF09C3CE0AF178
:200B2000FE04C4C21EC3341E3AFE18B7CA4D0BAF29CE30CDD806C50605AF0E03298F0DC239
:200B40003C0BC630CDD80605C2390BC1C97CCD520B7DF50F0F0F0FCD5B0BF1CD610BC3D8CC
:200B600006E60FC630FE3AD8C607C9CD1207F1C9213806097E23666FCD7803CDD606CD6042
:200B800005CD280BCDD606CD8605CD280BC3120752515545535400CD9D0BC3970B2A621A0F
:200BA0003A521AB7CAEC0BEB2A6A1ACDB40AEBCAEC0B7EE6075F16007EE5E640CAE10B2BFD
:200BC0002B2B7ED623C2E10BCD96052A6A1AEBCD9605424BEBE1E5CDBC17226A1AE1C3A762
:200BE0000BE1CD9605EB2B2B2BC3A70BAF32501A32521A32551A3A511AB7CC9D05AF676FE7
:200C000022561A22841A22861A32FF1822881A3C32541A3A511AB72A5C1AEB2A661AC48DF5
:200C2000042A5E1AEB2A681ACD8D042AE518E5E1CD4517CD7011D23F0CCD570CC3330CC2A4
:200C4000480CCDAF0CC3330CE5060021231209097E23666F424BE9D5C5E5233A541A3DEB05
:200C6000CA8C0C3A881AB7C2830C2A5C1A7C92CA780CD2830CC27D0C7D93D2830CEB23B750
:200C8000CDE114E1CD4517C17023D1C93A891AB7C2830C2A5E1A7C92CAA10CD2830CC2A6C5
:200CA0000C7D93D2830CEB23B7CDDE14C3830CD53A531A3DC2DB0C3A501AB7CADB0CE5CDC1
:200CC000FD16EBE3CD7617E5EB9FE680772B702B71D1C12B702B71EB11FFFF23CDC7174283
:200CE000CD570CE52B2B73E1D1C9CD740DFE3A373E00C2010DEBCD8203FE5B3FD8D640D835
:200D0000EB320A1AD4740D78FE0BDA0F0D060BC5EBD5110B1A0405CA220DCD82031213C3BE
:200D2000160DE1C13E0A90DA330DEB3620233DF22B0DEB7832091A790600FE2EF5CC740D8C
:200D4000E3EBD511131A78FE04DA4E0D06030405CA5B0DCD82031213C34F0DF1CA700D21D0
:200D6000131A7EFE20C2700D365223364523364CE179B7C90600E5CD8203FE5BD2920DFEC1
:200D800030DA920DFE41D28E0DFE3AD2920D04C3770DFE5BCA8E0DFE5DCA8E0DFE40CA8EF6
:200DA0000DFE5CCA8E0DFE5ECA8E0DFE5FCA8E0D4FD1C9EBD1D5CDE9123A501AB7C2E10D97
:200DC0003A541A32531ACDC717424B7CB5CA2F0C7E5F7123B65670CD0418EBC2D00DC32F0C
:200DE0000CEBE5CDFD163A531A3DCAF20DCDC7173E803C473A541A3DCAFD0D3E4080772B45
:200E0000722B732BD1E640E5CC6A12E13A541A32531ACDC717722B73C32F0C3E80CDF11204
:200E2000DA330EE51A2F6F1B1A2F6709DA620EE1C32F0C7EF64077EB712B702AE318E51BB6
:200E4000EB3E0232531ACDC717EB7D121B7C12E10922E318EB2A5C1AEBCDB40AD4E114C366
:200E60002F0C21880ECD7803E1CD770E3E2FCDD806CD1207C32F0C7EE607572B2B2B7ECD7B
:200E8000D8062B15C27E0EC925326E6420434F4D4D4F4E204C6172676572202F002AE3181A
:200EA000EB22841AEB097C32881AEB2A5C1AEBCDB40AD4E114E5CD9D13E1C32F0C3E20CD0D
:200EC000F1127EF64077C32F0CF637F5CDFD163A501AB73EC0CAEC0E3A541A3DCAE10E3EEB
:200EE00080473A531A3DCAEB0E3E4080C60477F19F3C86772BCDC717EBE3EBD53A541A323E
:200F0000531ACDC7173A501AB7CA150F3A541A3DE5CC6A12E1722B732BEBE1E3EB722B7398
:200F2000C32F0CC1C1C3F8027AB3C1CA360FAFCD2C18EB22F818010000CDE91221841A0909
:200F40005E235621801ACD3D1021E318CD3D10030379FE03DA3C0F3A511AB7C02A5C1AEB63
:200F60002A641ACDB40AC26F0F2A7E1A227C1A010000CD8605EB2A7E1ACD9605DABA0F2A49
:200F80005C1A19E5CDE1142A661AEB2A5E1ACD9605424B2A661AEBE122661ACDB40AD4A9CF
:200FA00017DC9E17225E1A225C1A22E318010000CD860522821A22801AC9CD8605EB0E024B
:200FC000CD8605CDB40ADACA0FEB2A7E1AEBCD9605D52A661AEB2A5E1ACD9605E1CDB40A9B
:200FE000D2F00F210000CD96052A5E1A19CDDE142A641AEB2A5C1ACD9605424B2A7E1AEB48
:201000002A7C1ACD96052A661A19EB2A641AEBCDA9172A7E1A227C1A2A661AEB2A5E1ACD5C
:201020009605424B2A661AEB2A641A22661ACD9E17225C1A225E1A22E318C3AD0F097E834F
:2010400077237E8A77C95059CDE9123E04CD2C18424BAFCDF112D4B2107EE640C28D103A0B
:20106000501AB7C272107EF640772B7E5F712BC3D40DEBCDFD163A531A3DCA7F103E80C60C
:2010800043772B702B712B722B73C32F0CE5219E10CD7803E1CD770ECD1207C32F0C254DA1
:2010A000756C742E204465662E20476C6F62616C20007EE640C0E52A03192B220319E1C91D
:2010C0005059CDE9123E02CD2C18424BC5AFCDF1127E2BDAF3104E2B46E640EBE1C20C1167
:2010E0003A501AB7C22011EB7AB3CA2F0CCD5B14C32F0CEBCD4311E17CB5CA2F0C3A501A84
:20110000B71BC22011EB722373C32F0C3A501AB7C220117CB5CA2F0CEBCD0418EBC3CB0D3B
:20112000EB7AB3CA2F0C23E5CDFD163A531A3DCA34113E80C642772B722B732BD1722B7333
:20114000C32F0CE52A031923220319E1C9E521DF187E2334C25C11CD3E0736F8872B77E110
:20116000C90E080600CD4D117817470DC26511C9AF32531ACD4D11DA7F11CD611137C90E4B
:2011800002CD6311B7CA8D11CDE011AFC9E50E04CD6311FE05F5DAA611FE0FCACF110E022F
:2011A000CD6311CDE011F1F5FE08D2CF11D50E03CD631121F018B777C2BC11342336205F79
:2011C0001DFACE11CD6111E67F7723C3C011D1F12100FFFE0EC2DB1122DF184F3CB7E1C9A6
:2011E000F532531ACD611158CD611150F1FE01CC111287E5CAFE11FE05D2FE11EE064F06E4
:201200000021E118094E2346EB099F320219EBE1C9F53A501AB7CA2112AF320219F1E3E181
:20122000C9F1C92F0C71124221BD0ED7201B0EC0104610C90ECA0E9D0E8712B30D431228C9
:201240000F230F3A501AB7CC6A12D5CD9D13E122861AEB2AE518193EFF32891AEB2A5E1AEB
:20126000EBCDB40AD4DE14C32F0C2AE518EBC396053E80CDF112DA9B012B5E2B56CD0418CD
:20128000EB22E718C32F0CE1C5CDE9123A531A3DFAAA123C32541A3DC22F0C3A501AB7CA01
:2012A0002F0C2AE51809E3C32F0C5059010200D537CD9F04D12A7E1AEBCD9605D2D21222FC
:2012C0007E1A210000CD96052AE5181922E5181100002A661A19C1E521000022561A7D32B2
:2012E000891A3C32541AC32F0C3A0219B7C8C3A1012A621AC5F5EB2A6A1AEB7CAA477DABBF
:20130000B0CA43137EE6074FF1F5AEE6B8C2301311F0181A13A9C23013E5412B2B2B1ABE99
:20132000C22F13132B05C21E13EBE1F1C1AFC9E17EB7F237130C0C79C6032F4F06FF030942
:20134000C3F612C111F0181AF5C6034F78070781E5D55F1600CD9605EBCDD814D1E1F113C9
:201360004FB0771AFE23C26C1332521AE5AF2B772B772B1A772B130DC27313D11AB7E5F23D
:201380008713AF772B772B226A1AEBD1C137C91D142B144014741495149514F7203A501A44
:2013A000B7C8AF32501A2A5C1AEB2A661AD5EBCD9605EB444D2A561A0922561AEB2AE51843
:2013C000E50922E518D12A5E1AD5CD9605424BD1E122661ACD9E17225E1A010000CD8605FA
:2013E000227E1A22821A2A601A22581AE5CDB520D12A681A7C92C2FB137D93CA1414EB7EF0
:2014000087E60E5F160001F013C5E5218F13195E2356EBE92A581A22681AC30B21CDB914DE
:20142000E1E3E5CD0418EB712370C9CDB914E1E3E5CD0418EB5E712356707BB2C23114C996
:20144000CDB914E1E3E5C5E1237EE640D52B5E2B56EBE3EBC27014C17BB2C8722373C5CDAE
:201460000418EB5E23567BB2C25F14D1722B73C9C1C33114CDB914E1E3E5C5E17E4FF640CD
:201480007779E6402B4E732B4672C5D5C1D1C07BB2C8C33114E1E57E32091ACDB914E1E387
:2014A000E52A581A3A091AE607F6C0772B722B732B702B712B22581AC9E1E37E2B562B5EEE
:2014C0002B462B4E2BE3E52A7E1AB7FAD114EB19EBE640C009444DC93E06DA3E04DA3E0225
:2014E000DA3E00C5FE04D2EE143C3201193D4F0600D5E5FE0321661ADAFE14215A1A095EDB
:201500002356E1FE03DA0A15E5EBCD9605F579FE03DA1715F1E1F5F1E5D22D1579FE033F60
:20152000DA3415CD7D05CDB40A3FDA3415F5C5CD5415C1F1F579FE03215C1ADA41152164EF
:201540001A09F1D1D24D15732372C350155E2356EBD1C1C9E5D5CD4616D5CD9605DAA10189
:20156000CAA101E1CD9D16217A1A0602702305C26C151100002A641AE5216C1A194E2346F1
:20158000237E23666FE521741A19D55E2356EB09D1C1EBE3C519E509C1EBE1E3EBE5216870
:2015A0001A197E23666FEBE3CDB40AD1D20F16E321661A19D55E71235670EBE3EBE1E3E5D5
:2015C000215E1A19EBE3EB7E73235F7E7257E1E3EBD5CD9605E1E37DE3EBB7CAED15F53A39
:2015E000551AB7CAEB150303030303F123CC1917E5C5E1C1E5CDB40AD4A917DC9E17E1D149
:201600007B1F5FE5217A1A193600EB29EBC1C51C1C6069C17BFE04DA7815217A1AAF060251
:20162000862305C22016B7C272152A721AEB2A621ACD9605EB226A1A2A6C1AEB2A641A1968
:20164000225C1AD1E1C9C5D5215C1A79FE03DA541621641A095E2356010900FE03DA6316AB
:2016600001F5FF0946236668FE03DA6E16EBCD9605E119E50603215C1A110000D55E235647
:20168000D5110900195E2356E3EBCD9605E1E319E311F7FF1905C27D16E1D1C1C979010045
:2016A00000D5E5215C1A095E2356D5110700195E2356E1F5CD9605F1B9C2C016E1E519EBD2
:2016C000216C1A097323720C0C4779FE08780600C2A316E121741A0603E3CDE816E37323BB
:2016E000722305C2D916E1C978D601CAFB167C1F577D1F5FD5CD9605EBD1EBEBC9D5C501AB
:20170000FBFF7832551A2A681A09B7CDDB14AF32551A11050019C1D1C9EBE579956F789C53
:2017200067D5EB2A561A1922561AEB2AE5181922E5182AE718195059CDB40ADA411722E742
:2017400018D1E1EBC9D53A541AFE03CA61173DC25717EB2A561A19EB21000022561AEBD1E6
:20176000C9E5EB2A561A19EB2A661ACDB40AE1D25717EBC35717CD4517C28A17D5EB2AE565
:20178000187B954F7A9C47EBD1C9E5D5EB2A641AEBCD96052A7C1A19444DD1E137C978B10B
:2017A000C81A7723130BC39E1709E5EB092B1B78B1CA67067E121B2B0BC3AF1778B1C81A1A
:2017C000771B2B0BC3BC173A531A373DF8E5C5FE02CC2318EE01874F0600B7CAE6173A5014
:2017E0001AB737C2F217EBCD7D05CD9605CD600519EBC1E1C93F496E74657273656374697A
:201800006E672000F5C5E501FF00CD6D06D21F184FD5CD7D05CD6005EBCD9605E119EBE12D
:20182000C1F1C92A5C1ACDB40A9F3CC932DE18CDC717D8E5C53A531AFE023F9FE602060096
:201840004FCA4B183A501AB7C2F217CD6005CDB40AD2F217CD8605EBCDB40AEBD2F217E5D5
:2018600021F517CD69063E2CCDD8062ADE18260011D8184D195E2356EBCD780379B7C288B9
:2018800018E1CDA718C3B30121F01846237E23CDD80605C28D183E28CDD806E1CDA7183E46
:2018A00029CDD806C3B3013A531AFE029FE602CD7D05CD9605C3280B205374617274203D77
:2018C00020002045787465726E616C2000205075626C6963203D2000B818C218CD180000DA
:2018E0000000000000000000000000000000000000000000000000000000CF2300000000F6
:20190000000000000000008000000000000000000000000000000000000000000000000047
:201920000000000000000000000000000000000000000000000000000000000000000000A7
:20194000000000000000000000000000000000000000000000000000000000000000000087
:20196000000000000000000000000000000000000000000000000000000000000000000067
:20198000000000000000000000000000000000000000000000000000000000000000000047
:2019A000000000000000000000000000000000000000000000000000000000000000000027
:2019C000000000000000000000000000000000000000000000000000000000000000000007
:2019E0000000000000000000000000000000000000000000000000000000000000000000E7
:201A00000000000000000000000000000000000000000000000000000000000000000000C6
:201A20000000000000000000000000000000000000000000000000000000000000000000A6
:201A4000000000000000000000000000000000000000000000000000000000000000000086
:201A6000000000000000000000000000000000000000000000000000000000000000000066
:201A80000000000000000000000000010200CD6F050E00C29C1ACD6F0532011911030121B9
:201AA00003023A0119B7C8CD6F05CAB91ACD6005CD131BCD8605CD131B0C0C79FE04C2A7F4
:201AC0001A2A7C1AEB2A7E1ACDB40ADC831C2A641A110001010400CD8E1B0E00CD69050CEF
:201AE0000CCD7D05E5CD6905CDB40AE1C2F61AEB2AFA18EB0E02EBCDB40AD48E1B79FE029F
:201B0000C2DC1ACD6905EB2AFA18CDB40AD48E1BC3A101110001CDB40ADA2F1BEB2AFA1856
:201B2000CDB40AEBDA281BC9E5215B1BC3331BE521551BE521611BCD7803E1CD78032169C9
:201B40001BCD7803AF324F1ACDA103CD8203FE59E1C8C3310262656C6F770061626F7665F9
:201B6000004F726967696E2000206C6F61646572206D656D6F72792C206D6F766520616E9B
:201B8000797761792859206F72204E293F00C5D5010200EBCD8605D5EBCD6005CDB40AEBDB
:201BA000D1CAAA1BCDB40ADCBE1B0D0DF2941B0E04210001CDB40ADCBE1BEBD1C1C9C5E566
:201BC00079B7C2CD1B3A511AB7CAD11BAFC602FE042AFA18CAFA1BDADB1BAF4FCD6005D5B0
:201BE000EBCD8605CDB40AEBD1C2FA1B79B72AFA18C2FA1B217E1ACD6305CDB40AD2011CD9
:201C0000EB21060039F9E1E53B3B3B3B3B3BEBCDB40ADA3F1CE3CDB40ADA1D1CEBE1D5CDBE
:201C200096057AB7D1CA431C01252037CD461CDA391C04CD461CCA431CC1C1C1C1C1C9D148
:201C4000EBC1C9EBC1C9C5D5E5C5E1F5CDB40ADA7D1CF1D1D5F5EBCDB40ADA7D1CF1D268E2
:201C60001CE1C1C5E5C5E1EBD5CD96057AB7CA771CD1C1C1C137C9D1E1D1C1AFC9C1E1D15D
:201C8000C1B7C92A5C1A22E3182A5E1A22E5182A641AEB2AE318CD9605C2A31CB3CA431D07
:201CA000F2A51C1E804B060050C52AE318E5CD9605EB22E318EB218919CD9E17D12A5C1A52
:201CC000D5CD9605424BB1D12AE318C49E172A661AEB2AE518CD9605C1C5C2E61CB3CA2807
:201CE0001DB9D2E61C4F2A5C1AD1CD96052A661AC5EBCD9E17225C1A2A661AD1D519EB2A20
:201D0000E518CD9605424B2A661AD1D5EB19EBCD9E172AE518D1D5CD9605EB22E518118937
:201D200019C1CD9E17C38F1C50592A5C1ACD9605EB225C1A2A661AD1D5CD9605EB22661A60
:201D4000C3121D2A661AEB2AE518CD9605DA601D424BB32A661AEB2A5C1AC49E17225C1A90
:201D60002A7E1AEB2A7C1A227E1AEB227C1A2AE51822661A2AE31822641AC9FE20C8213704
:201D80001A01B21DC57EFE52C0237EFE45C0237EFE4CC0060311AE1D3A0619E610CAA31DF9
:201DA00011B11D1A772B1B05C2A31DC9434F4D48455801DA1DC51189190E1ACD0500112EB0
:201DC0001ACD6E070E13CD0500112E1A0E16CD05003CCA881FAF325A1AC90100003A511AF4
:201DE000B7CAF91DCD6F05CAF71D2A7E1AEB2A7C1ACDB40ADAF91D0E022106197EE608CABF
:201E0000061E11BA0AD57EE610CACC1ECD3F1E79EE024F3A511AB7C43F1E3E3ACD5E1FAFFC
:201E200047CDAB1E2AF818CDA61E3E01CDAB1EAF90CDAB1ECDC21E3E1ACD5E1FC3201FCD32
:201E40008605EBCD6005EBD5CD96057BB2E1C8C5E5CD7D05CD6905EB7DC61C4F7CCE00477E
:201E60007B914F7A98DA6D1E3E1CC3701E79C61DB7C2771EC1C1C94F06003E3ACD5E1F79A0
:201E8000CDAB1EE3D5CDA61E16005919D1E3AFCDAB1E7E23CDAB1E0DC2921EAF90CDAB1E57
:201EA000CDC21EC3581E7CCDAB1E7DF50F0F0F0FCDBC1EF1F5CDBC1EF18047C9CD610BC3CB
:201EC0005E1F3E0DCD5E1F3E0AC35E1F2AF8181100017CB5CAFF1ECDB40ACAFF1E1103017D
:201EE000CD6005CDB40A110001DAFF1E3EC3CD5E1F2AF8187DCD5E1F7CCD5E1F110301CD28
:201F0000341FCD481F3A511AB7CA201FCD8605EB79EE024FCD6F05CA201FCD341FCD481F3C
:201F20003A5A1AB7C4781F112E1A0E10CD05003CCA881FC9CD6005CD9605D8B3C8AFCD5E5B
:201F40001F1B7AB3C23D1FC9CD7D05CD6905EBCD96057AB3C87E23CD5E1F13C3521FD5E575
:201F6000F52189193A5A1A5F160019F1777B3CFC781F325A1AE1D1C9C5112E1A0E15CD0587
:201F800000B7C2881FC1AFC9218E1FC3A4013F43616E27742073617665206F626A65637460
:201FA0002066696C6500E513212920CD9D20212F20CD9D20213220CD9D202138200606CD2C
:201FC0009D20232305C2BF1F23230603CD9D20232305C2CC1F23CD9D20217920CD9D202176
:201FE0008420CD9D20D52A641A228820EB2A5C1ACD9605EB2286202A7C1A228A202A661A90
:20200000228E20EB2A5E1ACD9605EB228C202A7E1A229020D1E1C1F9C5EB112520016D00CE
:20202000C325200000CD9220C32B20010000CD5520DA4620010600CD5520D46B20DC7B2069
:20204000CD5520C36B20CD7B200E06CD5520D46B20DC7B20C9218620094E2346235E235612
:20206000237E23666F7C92C07D93C909EB092B1B78B1C87E122B1B0BC3702078B1C81A7736
:2020800013230BC37B2000000000000000000000000078B1C81A7713230BC39220C5E5D5EA
:2020A0007E23666F112520CD9605EBD119E5C1E1712370C1C93A4121B7C8E5D12A681ACDB8
:2020C000B40AC8EB7EE607FE0301BB20C5E5CA7414CDB914E1E3E9CD1A213AF21832402125
:2020E0002AE318225C1AAF32881ACDFD1636C62B3A402177C32F0CCDB914E1E3E57AF5CD0A
:202100001A21F1324021B7C8C336213A4121B7C8CD1A212AE318225C1AC93A4021B7C83272
:202120004121010000CD6F05EB2AE3187223732B3A4021C368212AE318CDA121225C1AC9BC
:202140000000AF32402132412121AF2301072070230DC24F2121F0184E2311AF237E12238C
:20216000130DC25D21C32F0CE5D5722373CD0B23CDEE22D17BE67FCA84217BE680C6805FC1
:20218000D28421147AB3E1CA9D21D5E5CDC622E111800019E31180FF19EBC38421CDA222B4
:2021A000C9E5CD0B23CDD922212D23CDB322212D2356235EE1CDF521DAEC21D5118000CD75
:2021C000FD21D1E52180FF19EBE1CDF521DADD21D5E5CDB322E111800019C3C2217AB3CA67
:2021E000EF21E5212D23D5CDB322D1E1CDFD21E5CDA222E1C97AB7C07BB7F837C9012D23D9
:202200007AB3C80A7723031BC30022E60FC630FE3A77D8D6F977C93AAD23213A22F5CD0B4D
:20222000222BF11F1F1F1FCD0B22213022C378033F5365676D656E74202020202C200066F5
:20224000696C65206E6F7420666F756E640063616E2774206372656174652066696C650076
:2022600072656164206572726F72004469736B2069732066756C6C00CD1722213F22C3A42F
:2022800001CD1722214E22C3A401CD1722CDA222216022C3A401CD1722CDA222216B22C394
:2022A000A401112D230E1ACD05000E1011AE23CD0500C90E1AEBCD05000E1411AE23CD05C8
:2022C00000B7C28A22C90E1AEBCD05000E1511AE23CD0500B7C29622C90E1A112D23CD05FF
:2022E000000E0F11AE23CD05003CCA7822C90E1A112D23CD050011AE230E13CD05000E1650
:2023000011AE23CD05003CCA8122C9F532AD2321B923CD0B22F11F1F1F1F2BCD0B220E15F4
:202320002323AF32AE2377230DC22623C9000000000000000000000000000000000000002A
:2023400000000000000000000000000000000000000000000000000000000000000000007D
:2023600000000000000000000000000000000000000000000000000000000000000000005D
:2023800000000000000000000000000000000000000000000000000000000000000000003D
:2023A000000000000000000000000000000000000000000000002056202000000000000067
:2023C0000000000000000000000000000000001000000000000000000000000000000000ED
:2023E0000000000000000000000000000000000000000000000000000000000000000000DD
:202400001C24876F260009E55E23562A4D38CD360DD1D8EB732372AF326138C92A55382323
:2024200023C30724F53A6A37B7CA43243A6138B7CA4324C5D5E52A4F38EB010B00CDD0193B
:20244000E1D1C1AF326138F1C9CD5A19CD7B0BCDE90AFE22CA5C24FE27C2D82447CDDC0A3B
:20246000CDDC0A2AC1372B2BE5B80E00CA7C240CCDDC0AFE0DCA8324B8C26F24CD9D0AB8A8
:20248000CA6F24CDE90ACD7B0BFE2CCA9924FE3BCA9924B8CA9924FE0DE122C137C2D82458
:2024A00079FE02DAD824CDD60A47CDDC0ACDDC0AC3BB24C5CDD315C1CDDC0AFE0DC8B8C296
:2024C000B324CDD60AB8CAD224CD9D0AFE2CCA4924C9CDD315C34924CD030FF53A2439B75B
:2024E000FA1317F1CDD31579FE2CCA4924C9CD491EF578E683C4AA04F1C9CD5A19CD7B0BA6
:00000001FF

578
hex/m80.hex Normal file
View File

@ -0,0 +1,578 @@
:020000040000FA
:20010000210A01C3B7404D41430022F539AF018B02216A375F73230B78B1C2150121664809
:2001200022BC37772424242422EB390120000922ED392100F822293921F7391162387EB71D
:20014000CA6B01F5E607124F23137E120DC24801E5CDA80CD1F17723131A1336202377EB6B
:20016000C33B01CDB5443E01326A37AF32D53932E63832A937327137327237326138327332
:200180003732C939325E38214D38060A772305C28C013C32A63732AA3732AB37324C383E22
:2001A0000A326F373A543A3269373E3132AE373C32AD3721010022AF372B22E4392B22B159
:2001C000372AF539F921B402E5211E02E5AF32363932A73732B43732CA39CD1A04E1E50151
:2001E000E401C5E921C33722C137010C847EB9CC050223FE0DCAFC0105C2ED01C1E1E5C5A6
:20020000012D04C5E9F5E52AAF372322AF3721FFFF22B1373AAD373D32AE37E1F1C921B4DE
:20022000373E0132DF3932DE390E06CD7E02FE0ACA2B02CDAE02CA2B02B7F25402E67F0C71
:200240000DCA2B02CDAE02CA2B02FE30DA2B027723C32B020E8321C337FE0ACA76020D0C58
:20026000CA660277230DFE0DC27602773AB437B7C83D32B337C9CD7E02E67FC359023AA871
:2002800037B7CA9002CD2548D0AF32A837CD6548CD3546DA9702C921CF04CD97403E0D3237
:2002A000C337CD1F443E0ACD1F4437C37A29FE0CC0C3050221000022BE37AF32AC373D3200
:2002C000CA392A55382259383AC337FE2AC2D5023E2432C337D62432C037CD080BC2E8037E
:2002E000FE3ACA69033AC037B7C20C033A62383DC20C03CD080B06082162387EB8D2010340
:2003000034233E244E77792305C204032AC1372B7E23FE0DCA9A03E5CD0604CD080BCDFD2F
:2003200004C25F037EB7F25F03237EFE22CA3A03FE1CCA3A03FE0DC25F03E1F53AA637B750
:20034000CA4204CD0604F1F5FE1CCA5103B7CDA80CF1FE22CA4829FE1CCA9C32C31729E17E
:2003600022C137CD0604C39A033AA637B7CA9403CD5A19CDA80C22BE37EBCD9319EBF620C0
:20038000F5CDD60AFE3AC29003F1F640F5CD9D0AF1CD840DCD080BC2E803CDE90A3AA637EB
:2003A000B7CAAA03CDC10BCA5F33CDFD04C2E803B7F53AA637B7C2C303F1F24304F5E66038
:2003C000CA4204F1F2D603237E21C509875F1600195E2356EBE91F1F1FE60F234EF5CD5A22
:2003E0001921A709F1C3CC03FE3BC8FE0DC821C33722C1372ABE377CB5C4080B3AA637B792
:20040000CA4304C34924216238116B3806094E1A777912231305C20E04C921803822743834
:20042000217638012020712305C22604C9CDE90ACD7B0BE5FE0DCA4304FE3BCA4304CDA48F
:2004400004F5F1E13A6A37B7C26E043A7638FE56CA6204FE4DCA6204FE44CA6204FE58C29A
:20046000CD01323639CD3F19CDB517C3CD01CD7717C3CD01C50641C3BF04C50643C3BF04AC
:20048000C50644C3BF04C50645C3BF04C5064DC3BF04C5064EC3BF04C5064FC3BF04C50689
:2004A00050C3BF04C50651C3BF04C50652C3BF04C50655C3BF04C50656C3BF04C50658E5CC
:2004C000F52176387EFE20C2CB0470F1E1C1C94E4F20454E442053544154454D454E5420D6
:2004E000454E434F554E544552454420494E20494E5055542046494C4500C398043A6338E5
:20050000FE2ECA7205FE24CA7A05FE5B3CD0D642B7F887C5D55F1600218005195E2356EBC0
:200520003A62383D4F7EB7CA6E05B7FA43053A6937B77EC23E05FE50D24305C36205FE50FC
:20054000D26205E607B9C26205116438E54123231ABEC26105231305C25005E1AF7ED1C188
:20056000C9E17EE607C6025F160019C32505D1D13CC9211F09C5D5C32005218F09C37505BB
:20058000B405E305E8054D069B06E506E606EE06F8065E0785078607B407CA07DC07080813
:2005A0002C082D08A908FC0803090409050906091D091E092ACE43491A8844435200444314
:2005C0001A804444520244442AC644491AA04E4152044E442AE64E4983005345478322536E
:2005E0004554005A0649540033CD414C4C5308414C4C31DC436A3F434631FC4D022F4D419D
:20060000023F4D431AB84D5032D44E4332C44E5A85014F4D4D4F4EC3144F4E4431F45051DB
:200620000A5072A9504473B950445232EC50452AFE504972A1504973B15049526A2F504C3B
:2006400032E4504F830253454731CC5A00022741416A27414112094144810342810443221C
:20066000054352120B4358520C45438303454642832245464C830345464D8305454653832C
:200680000745465701F34969F349530E4A4E5A81055383065345478107570001FB4969FB73
:2006A00049C3084C534582094E44A30A4E4443A40A4E4449468B0B4E444D840C4E54525982
:2006C000820D51555110586AD95858840E5849544D820F5854870F585445524E414C8410E0
:2006E0005854524E000085204C4F42414C006B76414C5402764C5400C11146C2324642C26F
:20070000124645C2134646C333464E42C214465461124D29DB4E51144E52164E4386384ED5
:20072000434C55444572AA4E4473BA4E445272A24E4973B24E495222044E5212034E58C291
:20074000154631C2164632C41746444546C518464E44454692195250931A5250430031DAA3
:200760004331FA4D32C34D5032D24E4332C24E5A31F25051185032EA504532E2504F511A00
:200780005231CA5A0000511C44323A44410B0A44415872A8444473B844445272A044497365
:2007A000B0444952332A484C44841B4F43414C4A01584900853841434C4942941C4143522D
:2007C0004F3A404F564206564900831D414D457244454702004F506A004F5000511E521A8A
:2007E000B05241821E52472AF6524973BB54445273B35449522AD355545220555473AB5561
:20080000544473A355544900831F41474503E943484C12C14F5052224F50852055424C49B0
:200820004313C5555348532455534800000217414C021F415201D84393214550545A26456E
:200840005302C9455452284554734D455449734545544E0220494D592A4C6A174C410207EF
:200860004C435A2C4C436B074C4341726F4C4401F84D02D04E4302C04E5A01F05002E85093
:200880004502E0504F592E526A1F5241020F52435A3052436B0F5243417267524422C753DD
:2008A000545232535401C85A001A9842422ADE4249523442436A3743465A36455482224586
:2008C000543322484C440230494D5A384C4103F950484C5A3A52415A3C524C323254410B71
:2008E00002544158023754431A905542523E55428523554254544C2AD655490084244954BB
:200900004C450000000003EB43484752404F521AA852412AEE524903E354484C00000084F9
:20092000363830383083375A38308725434F4D4D454E54842643524546872744455048419C
:20094000534584284C414C4C84294C495354852A5041535332852B5048415345862C5052B8
:20096000494E5458852D5241444958873552455155455354842E53414C4C842F58414C4C63
:20098000853058435245468531584C49535400851F454A4543548738494E434C5544458589
:2009A000345449544C4500220E290E380E470E530E620E700E7C0E9D0EB90E200F230F26AD
:2009C0000F220E1D0EAB238528C4234924FA244425D9236B25AA257A297E251830C72698E9
:2009E00004FE2FD428D42808261026102608261D2627263126322655315331183098043A9F
:200A0000283A23B627C726332F9804F926F02656325527283464274627FA04093428328ADD
:200A2000276C2773275C274E276C266D262427E2277B2783270D280488068000A002400C70
:200A4000CD00B8080516101E000A461A00080410C31218220000B01C0020C120C502800E09
:200A600000141014001418140818C7049802C0142014281438009000A8F51244122C1375B4
:200A800013A9123B0FFB0F850F1C1048105812B9105B0F8F113D11D2116D0FD613E52AC179
:200AA000377E2322C137FE0CCA9E0A6FFE41D2C30AFE30DABB0AFE3ADAC00A379F7DE1C9D5
:200AC000B7E1C9FE5BDAD20AFE61DABB0AFE7BD2BB0AAF7DE1C9CD9D0AC3E90ACD9D0AF52F
:200AE000FE0DC21317CD9804F1E52AC1372B22C137E1C92AC1372322C137C9CD9D0AC0FE55
:200B000061DA060BD620BFC9CD7B0BCDE90A216338012008712305C2140B21623836002385
:200B2000CD640BC4B50B3265370E00FE61DA320BD62077230C79FE08CA520BCD640BF22B08
:200B40000BCD8D0BD24A0BF22B0B4779326238AF78C9CD640BF2520BCD8D0BD24A0BF252FF
:200B60000BC34A0BCD9D0AF0FE24C8FE2EC8FE40C8FE3FC8FE5FC82FB72FC9CD9D0AF0FEA0
:200B800020CA7B0BFE09CA7B0B2FB72FC9F5B7CA970BFE26C213173ACA39B7C2A00BF1C96D
:200BA000F1CD640BB7CAA10BFE26CAA10BCDE90ACD640B37C9CD8D0BD2BC0BC8C10E004769
:200BC000C9214D393A6238F5CDDA0BCAD50BF1326238B77EC9C1C9218939CD920C060009DE
:200BE00009224B395E23562142390609AF772305C2ED0B2162387EFE06DAFE0B36062162DD
:200C0000384E0D7AB3CA740CEB5E2356D5235E2356D5E5237EE6073DCA2E0C11070019116E
:200C20006438471ABEC2410C231305C2230CE1237EE6073DB9C26E0C22BA37237E2BC1C1BC
:200C4000C93F9FE602E1F5EB1B1B1BF5D511453921423906061A77231305C2550CD1F177CA
:200C600023732372F1E1D1CA030CEBC3030C2B3E02C3460C3C2ABC377EC92AE9392323233B
:200C8000237EE60737C8E5C60616005F1922E939E1C93A6338FE240E00C8FE2E0E01C8FECC
:200CA0003F0E02C8D63D4FC9F5CDD70B22BA37C1F5C5F1CD3C0DF1C8E52A4939EB7AB3CA8D
:200CC000770D3A4839EB06004F09D1732372EB0E04AF77230DC2D20C22BA371162381AFEEA
:200CE00006DAE60C3E0677472313AF77237723772323231A77231305C2F30C22BC3723233F
:200D000023237011000119EB2AEB39CD360DDC97352ABA377CB73E00C921220DCD9740C3F5
:200D2000000153594D424F4C205441424C452046554C4C0D0A007C92C07D93C9F53A583A82
:200D4000B7CA13173AA937B7C213173A6A37B7CA13172ABA377EE640C21317F1DA620D3E82
:200D600082DA3E81CDA745E521623846237ECDA74505C26C0DE1C92A4B39C3CA0CF5CDC1AB
:200D80000BC3AC0C477EE638C2AB0D237EE620C2BA0D2B7EF68077237EB077237323722394
:200DA000D5EB2A5938EB732372D1C97EE607773A6937B7CCA40423C3920D7EE694C40A0EEB
:200DC0007EA8E603C40A0E23D55E235623E3CD360DC4FB0DD1E52A5938EB78E603FE03C2F7
:200DE000ED0D7BBEC40A0E237ABEC40A0ED13A7638FE202ABA3723CA920DC93AAC37B7C2D0
:200E00000A0E2ABA377EB7F29E04E5F52ABA37237EF6107778F61047F1E1C38C043EEDCDE1
:200E2000D31579CDD315C3F30AC5CD030FCDDF0E878787C181C3D315C5CD030FCDE90E870D
:200E40008787C181C3D315C5CD030FCDFB0EC181C3D315C5CD030FCDFB0EC187878781C31C
:200E6000D31579F5CD030F4FF1CDD31579C3D31579F5CD3D29F1CDD315C33516C5CD030F2B
:200E8000CDFB0EC1878787814FC5CDD30ECD030FCDFB0EC181FE76CC7404C3D315C5CD03F4
:200EA0000FCDFB0EC187878781F5CDD30ECD030F4FF1CDD31579C3D315C5CD030FC1CDE9C0
:200EC0000E87878781F5CDD30ECD3D29F1CDD315C33516CDE90ACD9D0AFE2CC49804C9B726
:200EE000C8FE02C8E602C37404FE07F5D2F40EE601CAF70ECD7404F1E606C9FE08D8E60705
:200F0000C37404CD3D297AB7CA120F3CCA120FCD74043A2739B7FC8604E603C474047BC99B
:200F200006001106CB1106ED59160021370A195E234E21790A195E2356EBE9C5CD030FFE02
:200F400003D47404CDC915C178CDD3157BFE013FCE00E60387878781C3D315C5CD030FE6EE
:200F600038BBC47404CDC915C181C3D315C5CD0E11DC7404E608C4A90FC1CD23113A6737A1
:200F8000E606C3540FCD491E3A2839B7C2A40FCD00113A6637FE30C4B90F3A6737E6070E02
:200FA000C0C3540F3EC9C3D3153A6737E620C6DDCDD3153E04326737C9FE10C274043A679F
:200FC000373CFE02CACD0F3DFE06C274043C326737C9C5AF326837CD7B0BCDE90AFE28C268
:200FE000E50F326837CD3D2979D62CC1B7C0CD00113A6637FE30C4B90F37C9CDD20FD21542
:20100000100EC43A6737878787E638814FC5CD3D29CDC915C179CDD315C33516CDD20FDA6B
:2010200043103A6637FE203FD21510FE28CCA90FCD1B113A6737FE04C47404CD00113EE974
:20104000C3D3150EC2C30310CDD20FD263103A6737FE04D47404E603878787C6204FC5CDE1
:201060003D29C1CD6F107948CDD31579C3D3153A273947E680C28604CDC91578E60347CDB0
:201080009319B8C2AA04FE03C29A10D52A5538EB2A5938CD360DD1C2AA04CD93192323EBE2
:2010A000CD02347AB743CAB3103CC2740478B7F27404C978B7FA7404C9C5CD3D29C1C3630B
:2010C00010CDD30EC5AF326837CD7B0BCDE90AFE28C2D710326837CD3D29C13A6637B7C810
:2010E000FE30CC74046F3A6837B77DCA0011FE28C200117AB7CA05113C57CA0511CD740465
:201100007AB3C474043A2739E6DFC4AA04C9CDC4103A6637B7CA7404FE20C93A6837B7CC18
:201120007404C93A6837B7C47404C9CDC4103A6637FE10C03A6737FE08D8C37404CD2B1199
:20114000CDD30ECD1B113A6637FE10CA6F11B7C47404CDF3103ED3CDD3157BCDD315CD0E25
:2011600011D474043A6737FE07C47404C323113A67373DC47404CD0E11D47404CD23113E3A
:20118000EDCDD315CD2311CD2E110E41C3540FCD0E11D47404CD2311CD2E11F5CDC110CD86
:2011A0001B113A6637FE10CAC011B7C474043EDBCDD315F1FE07C47404CDF3107BC3D3159A
:2011C0003A67373DC474043EEDCDD315F10E40C3540FCD0E11DC7404CDD30ECD2E1ECA1296
:2011E000123A6737FE02CA2612FE06C47404CD1B11CD0E11DC7404CD2311CD00113A6637D4
:20120000FE28CCA90F3A6737FE04C474043EE3C3D315CD2311CD0E11DC7404CD2E1EC474B0
:20122000043E08C3D315CD2311CD0E11DC74043A6637FE20C474043A6737FE04C474043EF3
:20124000EBC3D315C5CD030FFE08D47404E607878787C1814FCDD30ECD2B11F637F53A6676
:2012600037FE28F5CCA90FE1F1E5F53ECBD4D315F1DA7A12F17BCCD315F5F53A6637B7CC6C
:201280007404E6203A6737C2941281CDD315CD2311F1F1C9FE04C474043E0681CDD315CD29
:2012A0001B11F1D21317C3EF12CD2B113A6637B7CC7404FE10CAE212FE28F5CCA90F3A676A
:2012C00037FE04C2CD123A6837B7C2EA12CD2311F1790DFE05C2DA120E0B3A6737E606C31D
:2012E000540F3A6737E607C3540F3E06CDE512F17BCCD315C9CDC4103A6637B7CA1F13FE86
:2013000010CA1613FE28F5CCA90FCD1B113E0681CDD315C3EF123A6737E60781C3D3153EC5
:201320004681CDD315CDF3107BC3D315CD0E11CDD30ECD23113A6637FE10CA6A13FE20C492
:2013400074043A6737FE04C474043EEDCDD31579EE101FE608C6424FCD0E11C47404CD2E21
:201360001ECC7404CD2311C3DA123A6737FE07C47404C3F512CD0E11CDD30ECD23113A663D
:2013800037FE10CA6A13FE28CA98133A6737FE04C474040E09C358133A6737F5CDA90FCDAC
:2013A0000E11DC7404F5CD2E1ECC7404CD23113A6737FE04CC740447F178CAC513F1B8C48A
:2013C00074043E04F5C1E6060E09C3540F3A6637FE10C47404C9CDC4103A6637B7CA11146C
:2013E000FE10CAE4143A6837B7CA71143A6737E606FE04CA4915D47404F5CDC410CD23116D
:20140000CDCD133A6737FE07C474040E02F1C3540FD5CD1B113A2239F53A2739F5CDC1105A
:20142000CD23113A6637B7CC7404FE20DA61143A67374FE606FE04CA51143EEDCDD31579CF
:201440000E43CD540FF1322739F1322239D1C335163A6637FE28CCA90F3E22CDD315C3458D
:20146000143A6737FE07C474043E32CDD315C345143A6737F5CDC1103A6637FE20D2A11417
:20148000B7C474043A6837B7C2BA140E01F1F5E660C69DFEC0D4D315F1E606CD540FC3351C
:2014A00016C4A90FF1FE06C47404CD23113A6737FE04C474043EF9C3D315F13267374FE67A
:2014C00006FE04C2D41479FE40D4A90F3E2ACDD315C335163EEDCDD31579E6060E4BCD542D
:2014E0000FC33516CD23113A6737FE08D22D15F5CDC1103A6637B7C20E153A6837B7C27410
:2015000015CDF3100E06F1CD540F7BC3D3153A6637FE10CCAB15FE20C223153A6737FE0428
:20152000DA8215F1878787C6404FC35C12F5CDC110CDCD133A6737FE07C474043EEDCDD30A
:2015400015F1E6010E47C3540F3A6737D5F5CDC110CD2311F1F5E660C69DFEC0D4D3150ECB
:20156000703A6637B7CA9315CD5C12F1D1FE407BD4D315C9F1FE07C474043E3ACDD315C39E
:201580003516CD1B11F1FE07C474043A67370E0AC3540FCDF310CD23113E36CDD3154BF189
:2015A000D1FE407BD4D31579C3D3153A6737FE084F3A6637D8E1F1FE07C474043EEDCDD307
:2015C0001579E6010E57C3540FF53A6637B7C4A404F1C9473A6A37B7C4E815E52A4D382311
:2015E000224D38E1C2321AC9E5D5C5F5CD24242A7438118C38CD360DC5D47717C12A74388A
:20160000EB3A5A3AB7CA2F1660AF298F298FC63012130602AF0E03298F0DC21716C630122D
:201620001305C21416EB23227438F1C1D1E1C9CD6017C325163A6A37B7C41517E52A4D3845
:201640002323224D38E1C83A273947CDDF163A273947CDAA192A7438E683C26916232274A7
:201660003843CD321A42C3321A78E680C5C2801678E603FE02FA9116CA8E163621C3931657
:20168000362AEB2A253923237E23666FEB013622013627C12323227438CDAA1978E603C58E
:2016A000CAD416CD451A43CD361A42CD361AC178E680C82A4D382B2BEB2A2539233A4C38CB
:2016C000477EE6FCB0772373237223EB2A5738EB732372C943CD321A42CD321AC3AE16F55B
:2016E000B7F213173A23393227393A2239B7CA1317E5C5D578CDAA19E603C2FF167AB30E2D
:2017000009C4D019AF322239D1C12A2539237E322739E1F1C9F5E5D52A7438118838CD3696
:201720000DD477172A7438EBE1E53A5A3AB7CA5417AF29CE301213C50605AF0E03298F0DA9
:20174000C23D17C630121305C23A17EB227438C1D1E1F1C9C544CD601745CD6017C34B175F
:20176000781F1F1F1FCD691778E60FC630FE3ADA7417C6071213C9F5C5D5E5CD3F193AABEF
:2017800037B7C28A173A7638FE20C4B5173A7638FE20CAA6173A7F3A3CCAA617323639CDB1
:2017A000B517AF3236393C32A737CD1A04CD5A19E1D1C1F1C93AC939B7CAE1173DC2C717D7
:2017C0003ACA39B7CAE1173E2B3290383AAA37B7FAE1173A7638FE20C2E1173A7838FE2064
:2017E000C83AA837B7CAED173E43328F383A3639B7C21F183AAB37B7C201183A7638FE20FC
:20180000C821AE37343AAD37BECC99183A3639B7C21F183A583AB7CA1F183E83CDA74521F5
:20182000763806207E23CD8D1805C224183AA737B7C283183AC9393DFA4C18C245183ACA98
:2018400039B7CA4C183AAA37B7CA831821B43706067E23FE30DA5F18CD8D1805C251183E1B
:2018600006B8C26C183AB337B7CA71183E09CD8D1821C3377E23FE0DCA8318FE0CC48D18DE
:20188000C374183E0DCD8D183E0AC38D184F3A3639B779CAA745C31F443E0432AE373AAB4A
:2018A00037B7CAB6183E0CCDA745219638CDFE18212019CDFE182AAF37237CB52BF53AAB27
:2018C00037B7CACD18F1F5CAF618CD0819F12AB1372322B1373AAB37B7C87CB5CAE7183EBC
:2018E0002DCDA745CD0819CD831821E638CDFE18CD8318C383183E53CDA745C3CD187E2331
:20190000B7C8CDA745C3FE1801F6FF50580913DA0D19E5EB7CB5C40B193E3AC181C38D18F1
:20192000094D3830095645525320312E312009202020202020202020095041474509003A3E
:201940007638FE20C8FE51CA52192A6B3723226B37C92A6D3723226D37C9CD9319F53A6A61
:2019600037B7CA13173A7838FE20C21317F1EB217838227438CD1517E603C54F0600218F6A
:2019800019097E2A743877218038227438C1C9202722212A4D383A5E38B7CAA619D5EB2AF6
:2019A0005F3819D1AFC93A4C38C9F5C578E603FE03C2CD19D5E52A5738EB2A5938CD360DBA
:2019C00022BA372257380E01C4D019E1D1C1F1C9C50600CD451A413E04CD161AC179FE05A6
:2019E000DAF719FE0FC83E02CD161A43CD361A42CD361A79FE08D0E52ABA377EE6074757D4
:201A00003E03CD161A23232323232346CD361A2315C20B1AE1C9D5573E0892CA261A5F78A5
:201A2000871DC2201A47788747CD511A15C2261AD1C9AFCD511AC50E08781747CD511A0DB3
:201A4000C2391AC1C937CD511A781F1FCD511A781FE52129397E17772334C2651ACD0E46C6
:201A60003EF8322A39E1C9C5CD080BC1CA4C1CF2101BFE20CA671AFE09CA671AFE27CACCC6
:201A80001AFE22CACC1AFE28CAB51AFE29CAB81AFE2BCABB1AFE2DCABE1AFE2ACAC11AFE7A
:201AA0002FCAC41AFE3BCAB31AFE2CCAB31AFE0DC49804AF113E02113E03113E08113E0952
:201AC000113E0A113E0B113E01FE01C9210000C547CDDC0AB8C2E21ACDD60AB8C2021BCDD4
:201AE000DC0A6F322439CDDC0AB8C2F81ACDD60AB878C2FD1ACDDC0A656FCDDC0AB8C1C397
:201B0000771B1124391AB7C20C1B3D1278C3FD1A2AC1372BE5CDFB0AF2151B3224392AC1CA
:201B2000372B2B22C137CDFB0AE122C137C2041CFE47D2511B673A6F37FE0ED2041C6F7C9C
:201B4000FE44CA511BFE42C2041C7DFE0CD2041C7CFE42CA801BFE44CA9E1BFE48CAA61BBB
:201B6000FE4FCA6D1BFE51C49804C29E1BCDC51BFE4FCA7A1BFE51C498040E20EBC3C71AD7
:201B8000210000CDFB0AFE42CA7A1BD630FC9204FE02D4920429B7CA831B23C3831BCDAE6A
:201BA0001BFE44C3771BCDDE1BFE48C3771B210000CDFB0AC8F8D63029545D2929191600FE
:201BC0005F19C3B11B210000CDFB0AC8F8D630FE08D492042929295F160019C3C81B210005
:201BE00000CDFB0AF8FE47D2FE1BD630FE0ADAF31BD607292929295F160019C3E11BFE48E1
:201C0000C8C392043A7037B7C23D1C210000C5CDFB0AFA391CD630FE0ADA211CD607DC9279
:201C2000044F06003A6F373DB9DC92043C5F50C5CD8521EBC109C30F1CC1C3461CCDAE1BC1
:201C4000C3461CCDC51BCDE90AC37A1BC5CDE90A3A6238322439FE05D2AB1C3DCAB21D211F
:201C6000DE1D0111000DCAAB1C0405CA721C23C36A1C06041163381ABEC2651C132305C21E
:201C8000771C211D1E097EC1B7F2C91ACD7B0B11FFFFFE3BCAA51CFE0DCAA51CCD9D0AFE53
:201CA0000DC29C1C13CDE90AC3C71A2AC137E5CD9D0AFE23C2D91CCD9D0AFE23C2D91C3750
:201CC000CDA80CCD0529237E47E620C48C0478E603F68077C12BC3F41CE122C137CDD70B8F
:201CE000CA471D3A6937B7CAF01CCDFD04CA7C1D37CDA80CE6A347E68078CA051D3223393E
:201D00000680222539E610C480043A6937B73E00C2161D7EE638B77823235E2356C14FCAF9
:201D2000241D1E00E603FE03C2351DD5235E2356EB225938D179E62079C2C71AE680CCB08B
:201D400004110000C3C71AE5F537CD3C0DF1E122BA377EE638CA761DF53A6637B7C49804E2
:201D6000F132663723237E326737CD2E1ECC401E2B7E2BC3F41C237E2BC3F41CB7FAF01CC9
:201D8000235EE6781F1F1F4F16004221A81D097EB7CAA21DFE1DC29C1D322C39C10E20C3D4
:201DA000C91AC10E20C3C71A001B1A181900001D191A3A6338FE58C2CE1DCDD60AFE27C28B
:201DC000AB1CCD9D0ACDDE1BFE27C1C3771BFE24C2AB1CCD9319EBC620C14FC3C71A584F77
:201DE0005220414E44204E4F54204D4F442053484C20534852204F522020455120204E450F
:201E000020204C5420204C45202047542020474520204C4F5720484947484E554C20FF16D4
:201E20001514131211100F040E0D0C0706053A6637FE20C03A6737FE06C03A6537FE41C9B8
:201E4000CDD60AFE27CC9D0AC9AF470E206F67322C393222393224393266373267373922CD
:201E60002D39C5CD671AFAC91ECA081FFE03FA261FCA891FFE18DA7C1ECD0E1F4F322B39FC
:201E8000CD2B1F3DB879D2A31FFE08CA9B1FFE09CA9B1FCDD11F79322F39CD361FFE02CA58
:201EA000EA1EB7C2B51E3A2B39FE03C2EA1ECC9804C5C3EA1EC5CD2B1FF53A2F394FF1CDED
:201EC0000E1F473A2B39C37C1EF5CDE90ACD9D0AFE2CC2E61E3A2C39B7CAE61EF1AF322C58
:201EE000393E1CC37C1EF1C3471F3A2F394F3A2B39FE03CAFD1EC5CD0E1FC3A31FC1C57821
:201F0000CD2B1F473A2F394FCD0E1FC3631EE1D55F79E603FE037BC2211FEB2A5938E3E5D1
:201F2000EB160159D5E947C5C3631ED52150205F1600197ED1C9E1C178FE01C2461FCD9887
:201F400004C5AF47FE01E9E17CFE019F322839E5CDD11F79322F39CD361FFA771FFE02CA1B
:201F60005622C53A2F394FCD0E1FC3501F110000CDF30AAF322F393A2F39473227392AC17D
:201F8000372B4E7B2A2D39F9C9322B39D17AFE02CC9804B7CC9804D5C3931EE37CE33DCACA
:201FA000931E79C157C5783D7ACAC81F7AFE07CAC81FFE08CA631EFE15CAC81FFE16CAC84F
:201FC0001FFE09C498043E1747C5CD2B1F47C3631EE1223439D17AB7D5C2E41F110000D586
:201FE000112001D5CD3720225B38EB223039EB79322F39CD361FFA2E20D602CA2E203233CE
:2020000039FE05CA1820FE14CA1820FE13CA1820FE15CA1820CD37203A33392A3439E521DF
:202020006A2087856F3E008C677E23666FE9C53A2F394F2A3439E9E1C105C49804CA4220A2
:20204000C5E9D179E603FE03C2251FE3225938C901010101040405060808090909090907DE
:2020600007070707070A0A0A020202020302A220AC20B620C020262148218221CE21352235
:20208000F420052161226C22782285228B229422BE22B122D620CB22D722E622F52204237C
:2020A0001A23CDA2217AB4577BB55FC9CDA2217AAC577BAD5FC9CDA2217AA4577BA55FC9CC
:2020C0003A2F39E683FE00C4AA042A30390E207C2F577D2F5FC92A30393A2F39F5E680C49A
:2020E0008604F1E603C4AA047C2F577D2F5F133A2F394FC9CDA221EB131B7AB3CA03212943
:20210000C3F920EBC9CDA221232B7DB4C87A1F577B1F5FC309212A30393A2F39E680C879A6
:20212000E680FC8604C9CD162179E680C237213A2F39E680CA4221CD422179F6804F3222F6
:2021400039C9CDB22119EBC9CD16213A2F39E680FC860479E680CA6421322239CD642179F8
:20216000F6804FC93A2F39E603CA7B21F579E6034FF1B9C4AA04CD23230E207B955F7A9C58
:2021800057C9CDA221444D2100003E113DCA9E2129E5C5E129E3C1D28C2119C38C21EB0E46
:2021A00020C93A2F39B9C4AA04FE20C4AA042A3039C93A2F39FE20CACA2179FE20C4AA04FF
:2021C0003A2F394F2A5B382259382A3039C9CDA221C5EB7AB3CC98047AB742FC2D227CA88B
:2021E000477CB5CAF6217CB7EBFC2D22C5CDF921F1B7FC2D22EBEBC1C97C2F477D2F4F032E
:202200002100003E11F5B7C31422F5E509D21322F1373EE17B175F7A17577D176F7C1767A2
:20222000F13DC20A227CB71F677D1F6FC9AF4F935F799A57C9CDA221C5EB7AB3CA53227CAA
:20224000B5CA53227CAAF5D5EBCDD121EBE1F1FC2D22EBEBC1C93E4F116D1FD5C547C3BFFB
:2022600004CDA322CD360DD601C37F22CDA322CD360DD6013FC37F22CDA322EBCD360D9F35
:20228000575F0E20C9CDA322C39822CDA322CD360DC37F22CDA322EBCD360D37F27F223FE6
:2022A000C37F223A2F39B9C4AA04CD23232A3039C93E204F322F392A30395CAF57C93E201B
:2022C0004F322F392A30395DAF57C9CDA2217DCDFB0EE607835FC9CDA2217DCDFB0EE6070B
:2022E000171717835FC9CDA2217DCDE90EE606171717835FC9CDA2217DCDDF0EE602171764
:2023000017835FC9CDA2217DCDFB0EE6076F7BCDFB0EE607171717855FC9CDA2217DE63F5A
:20232000835FC9E603FE03C0E5D52A5938EB2A5B38CD360DC4AA04D1E1C9CDCB28CD491E3A
:20234000EB78E620CAB604AF32613878E60347CA6D233A4C38B8C2AA04FE03C26D23E52ACC
:202360005538EB2A5938CD360DC2AA04E13A4C3847EB2A55382259383A6A37B7C4AA19EB6B
:20238000224D38EB0E0B3A6138B7C29B233A6A37B7C4D0193A3739B7CCEE233A3739B7C8E2
:2023A000AF323739CD080BCAA404C9CDEE23CD5A193E0047324C383C3237393261382A4F36
:2023C00038C37123CDEE23CD5A193E0132373947324C382A5138C37123CDEE23CD5A193E0C
:2023E0000232373947324C382A5338C371233A3739B7C4CB283A4C38014F38E603FE03CA1E
:202400001C24876F260009E55E23562A4D38CD360DD1D8EB732372AF326138C92A55382323
:2024200023C30724F53A6A37B7CA43243A6138B7CA4324C5D5E52A4F38EB010B00CDD0193B
:20244000E1D1C1AF326138F1C9CD5A19CD7B0BCDE90AFE22CA5C24FE27C2D82447CDDC0A3B
:20246000CDDC0A2AC1372B2BE5B80E00CA7C240CCDDC0AFE0DCA8324B8C26F24CD9D0AB8A8
:20248000CA6F24CDE90ACD7B0BFE2CCA9924FE3BCA9924B8CA9924FE0DE122C137C2D82458
:2024A00079FE02DAD824CDD60A47CDDC0ACDDC0AC3BB24C5CDD315C1CDDC0AFE0DC8B8C296
:2024C000B324CDD60AB8CAD224CD9D0AFE2CCA4924C9CDD315C34924CD030FF53A2439B75B
:2024E000FA1317F1CDD31579FE2CCA4924C9CD491EF578E683C4AA04F1C9CD5A19CD7B0BA6
:20250000FE22CA0A25FE27C474044FCDDC0AFE0DC847CDD60AB9CA202578CDD315C30B2590
:20252000CDF30ACDD60AB9CA392578F680CDD315CD9D0AFE2CCAFA24C978CDD31579CDF3EB
:202540000AC31125CD5A19CD5825CD24242A4D38193A4C3847C37123CDEE243A6A37B7C084
:202560003A7638FE55C03C327638C9CD5A19CD2424CD491ECD351679FE2CCA6B25C93A7169
:20258000373DFAA625473271373A72373DB8C294253272373A7237909F3C32A637CDD32591
:2025A000327337C3F30ACD7A04C93A7337B7C47A043A7137B7CC7A0421723796CACF253D50
:2025C000C2F30A343D32A6373C327337C3F30A35C3C5253A71375FFE323E00D05721743760
:2025E00019377EC9F5CDD325117337D2F0251A77AF12217137343AA637B7CA1317F132A60E
:2026000037217237B7C834C9CD5A267AB3C3E425CD5A267AB32FCAE425AFC3E4253A6A3725
:20262000CDF30A3DC3E4253A6A37CDF30AB7C3E425F637F53AA637B7CA6126CD080BCDD7DA
:202640000BC24926E6A0C25426CDC10BCA5426F19FC3E425F13F9FC3E4253AA637B7C258C0
:2026600025C1AF21340D22C137C3E425F637F5CD7B0BFE3CC47404CDD60AB7C28F26CD9D4D
:202680000ACDD60AFE26C28F26CD9D0AC377262AC1372B110000237EFE3EC29F26545DFEA3
:2026A0000DC2962623E52AC1377AB3CC74043A7638FE20C2C326CD360DE122C137CA5426F4
:2026C000C34F26E1C36126CD080B4FC5C4740437CDA80C237EF64077C1E620CCB0047EE6B6
:2026E00080C48C041F1F1FB67779FE2CCAC726C911963801004FC300270E0011E638063BC2
:20270000CD7B0B2AC1372B7E23FE0DCA1D27B9CA1D270405CA0727121305C30727AF122398
:2027200022C137C9CD7B0BFE28C27404CDDC0AFE27C274044FCDFB26CDE90ACDDC0AFE291A
:20274000C47404C3F30A3E0132AB37C3F30AAF32AB37C3F30AAF32A937C3F30A3E0132A94C
:2027600037C3F30A3EFF32AA37C3F30AAF32AA37C3F30A3E0132AA37C3F30A3E01326937AD
:20278000C3F30AAF326937C3F30A3EFF327037CD5825AF3270377AB7C274043A7638FE20DF
:2027A000C07B3DF8CA7404FE10D274043C326F37AF676BC35D19CD58257AB7C274043A6AE8
:2027C00037B7C87BB7CAD927FE0ADC74043A7638FE20C2D9277B32AD37CD7717CD1A04C389
:2027E0009918CD080BC27404F53A6238FE08DAF627CDA4043E07215D38773A6A37B722BAF3
:20280000370E03C4D019F1FE2CCAE227C93AA837B7C29804CD7B0B2AC1372BCDA247B7CA07
:202820002828CD6548C3B6043D32A8372AC1377E2322C137FE21D22C28C9CD7B0BFE28C2DD
:202840007404CDDC0AFE27C27404CD080BC27404FE27C27404CDDC0AFE29C27404CDF30A97
:202860003A6A37B7C03A6238FE06DA6F283E06116338213839477EB7C28C041A77231305A1
:20288000C27B2870C9CDCB28CD7B0BFE2FC27404CD080BC4C328FE2FC27404CDF30ACDA8EB
:2028A0000C237EE6D0C28C04E57EF62477CDEE23E12B2255383E03324C38210000224D3817
:2028C000C36D23F53E01326238F1C93A5E38B7C8C1C39E04CD080BC2F628F5B7CDA80CCDBC
:2028E0000529237EE664C2FC287EE603F68077F1FE2CCAD428C9CD7404C3F028F61077CD71
:202900008C04C3EF287EE638C87EE60777E5AF237723772377E1C922BE37CD3D293A7638C9
:20292000FE55C878E680C2860478F62032AC372ABE3722BA37CD840DEB78C35D19CD491E4F
:202940003A2839B7C8C3A40422BE37CD3D2978E680C286042ABE37CD0529237EE694C28CFB
:20296000047EE640B0F620772373237223D5EB2A5938EB732372E1C35D19F5CDE9443AC9AA
:2029800039B7C4292B3A7137B7C45A2BF1216A37347E3DC2212A2138397EB7C2AA2921968B
:2029A000387EB7C2AA2921A03A230106001138397E23FE20CACC29FE09CACC29B7CACC29B4
:2029C000FE0DCACC291213040DC2B0292132397022BA370E02CDD019CDEE2321664822E9CF
:2029E00039CD7A0CDA082A22BA377EE67F77237EE640C21D2B7EE604CAE129235E235601CA
:202A00000500CDD019C3E1292A5338EB010A00CDD019010D012A5138EB7BB2C4D019C36320
:202A2000012AC137F5D4491ED5C5CD771721FFFF22AF3722B137CD991821A62BCDFE1821A9
:202A40004D393E08CD2536CD8318219B2BCDFE182189393E04CD2536CD8318CD662B2A6BA8
:202A6000377CB5CA7C2AE5CD0819E13A7F3A3C323639C40819AF323639C3822A21FD2ACD41
:202A8000822B21012BCD822B2A6D377CB5CAB72A3E2CCDA7453A7F3A3C3E2CC41F44E5CD83
:202AA0000819E13A7F3A3C323639C40819AF32363921112BCD822BCD662BC1D1F1D2C52A96
:202AC0000600110000CDAA190E0ECDD0192A29397CFEF8CADD2AAFCD511AC3CD2A010F00FD
:202AE000CDD0190600CD361A3A583AB7CAF42A3E80CDA745CD0C45CD4C45C300014E4F201E
:202B00000020464154414C204552524F5228532900205741524E494E47285329000E003ABD
:202B20004C3847CDD019C3E129CD7F2B21382BCD822BCD5219C3662B524550542F495250F1
:202B40002F495250432F4D4143524F00554E5445524D494E415445442000CD7F2B218F2B75
:202B6000CD822BCD52193E0DCD83183E0ACD83183A7F3A3CC83E0DCD1F443E0AC31F44213F
:202B80004C2BE5CDFE18E13A7F3A3CC8C39740434F4E444954494F4E414C0053594D424FC6
:202BA0004C533A0D0A004D4143524F533A0D0A003AC939B721000022F13922F3392AC73937
:202BC000C2E72B21000039EB2100FE19E52AED39E5EBCD02347A1F577B1F5FE119D1CD36E5
:202BE0000D3E00DAE72BEB3C32C939AF32CA3932D439EB2AED3924CD360DD2022CEB22C7DD
:202C000039C925EBCDE03521C93935C3B02BCDFD04C07EB73CF03DF5E610CA382C3AD4393E
:202C20003C32D439F1E608EE08C03AD439B7C83AD4393D32D4393CC9237EFE1BC2242C3AF0
:202C4000D439B7C2242C3ADE39B7C2242CF137C922C7393AC9393D32C939C9CD9D0AFE2663
:202C6000C2972C2AC1377EFE20CA952CFE09CA952CE5C5CD080BCDA32CC1E122C137C295BB
:202C80002C3E2632CB39C3042DFE26C2972C3ACB39B7C29C2C3E26CDDB34B7F8F5AF32CBC2
:202CA00039F1C92AD63906007EB7CAD12C1162381ABEC2C62C4F2B131ABEC2C62C0DC2B611
:202CC0002C78F680BFC92B7EFE07D2C62C04C3A82C3ADF39B7C02AE03906C07EB7CA022D45
:202CE0001162381ABEC2F72C4F2B131ABEC2F72C0DC2E92CAF78C92B7EFE07D2F72C04C3E4
:202D0000DB2C3CC92AC137E5CD080BF5CDA32CC23D2D47F1E1F57E23FE20CA222DFE09C254
:202D20002A2DE5CD972CE1C3162D78CD972CF147F5F1C2892CFE26C2892CC3E90AF1E1F52B
:202D400022C137CD9D0AFE20CA562DFE09CA562DCDE90AC35C2DCD972CC3432DCD640BC259
:202D6000312DC36B2DCD640BFA312DCD972CC3652DCD9D0AFE3BCA8D2DC37F2DCD5D35CD55
:202D8000972CFE0DCA3E35CD9D0AC37F2DCD5D35CD5D35FE20CA902DFE09CA902DB7CD844C
:202DA0003522F339CA3E35FE0DCA3E353E0DCDDB34C33E35E5F53ADF39B7CAC52DD5EB2A25
:202DC000EB391934D1F1E67FF587FA0F2E2ADA397EB7CAFE2DF1C547042B05CAE92D7ED5DD
:202DE0002F5F16FF19D1C3DA2D7EB7CA0C2E3D472B7E0405CA0C2ECDF72E05C3F02DF12B16
:202E00003C3DCA092E2BC3012E7EE1C9C1E1C93E2ECDF72ECDF72EF1E63FC52AE6394F06BF
:202E2000000923D5EB2AE439CD360DEBD2322E22E4392BD144CD601745CD6017C1E11B1A0F
:202E4000C9E5CD080BE1C45A2EF51162381A3C4F1A77132B0DC2502EF1C9FE0DC8FE3BC8C8
:202E6000D1C374040600C5E52BCD7B0BFE27CAA62EFE22CAA62EFE3CCAC42EFE3ECACF2E9E
:202E8000FE2CCAD92EFE20CAD92EFE09CAD92EFE3BCAD92EFE21CCDC0AFE0DCAEC2E772B04
:202EA000CD9D0AC36C2E4F772BCD9D0AB9CAB82EFE0DCAF12EC3A72E772BCD9D0AB9CAA7A7
:202EC0002EC36C2E0405CACB2E772B04C3A02E05CAA02EFADE2EC39E2E0405C29E2ED17B4F
:202EE000953D12C1EB2AC1372B7EEBC90405CADE2ECDBC04C3DE2EF5E5214538CD360DD22E
:202F00000A2F23360D2BEBE1F1C9E1F11213C9CD042DFE26CC042DFE3ACA042DFE21D0FE62
:202F20000DC8F5CDC10BCA2F2FCDFD04CA1317F1C3042DCD58253A7638FE20CA412F1100C4
:202F400000EB22CC39CDB02BC1D1E101552FC5D53E0DC33304C101502FC5CD080BFE3ACCF6
:202F6000080BCD0E2CCA762F11C3371ACDDB3413FE0DC26B2FC9AFCDDB34CD3E35C1D1E146
:202F800021B402E5D52AF139E5E52ACC39E521B402E521982FE5C5C9CDE92FC1E1D1CD36FC
:202FA0000DC2C52F3AD539B7C2B02F78B1C2C52FCD36342AC739CD502CAF32D539D1D52A66
:202FC000CE39E5EBE9D5CD1235B7CAF82F11C337CD2835CDF72EFE0DC2D02FE5C52AD039D0
:202FE000E52AD239E52ACE39E9D1E122CE39E122D239E122D039EBE90B626BC39D2F3AC985
:2030000039B7CABC0432D539C1E1D1111B30D5E5C5AF32D439C3F30AC398043AD539B7CAD2
:203020007A30C101CD01C5CD080BFE3ACC080BCDFD04C0B7F04FE608C24E3079E610C25661
:203040003079E620C25E3079E640C26B30C93AD4393D32D439C93AD4393C32D439C93AD487
:2030600039B7C03A7137B7C8C37E253AD439B7C0237EFE08C83EFFC3E425C1D1E121B40259
:20308000E5D5C5C9B7F5CDB02B22D639CD412E4F3A7638FE20CA9D30CD502CF1C979360089
:2030A0002BFE2CC47404F1F5CAD930CDDC0AFE3CC47404F177E5F50E002B3A7638FE20C25A
:2030C0003431F1F547CAE730CD642E0CFE0DCA3131FE3ECA3431C3C830CDD60AD63C32DDE7
:2030E00039CC9D0AC3B330CD9D0AFE0DCA2A31F53ADD39B7CA0C31F1113431D5FE20C8FEB7
:2031000009C8FE3BC8FE2CC8D1C32431F1FE3CCA2031FE3EC224310405CA343105C3243114
:2031200004C324310C772BC3E7303ADD39B7C23431CDA40436002BCDF22B78B7C47404F1A1
:20314000E122D83926006922CC39C1D1E1015A31C34E2FAFC23E01C38430C101502FC52A0F
:20316000F3393E0132DF39E5CD0F2FF5CD0E2CCA9E31F1E1FE0DCA7C2DFE3BCA712DFE27FF
:20318000CA8E31FE22CA8E31CD042DC3743147CD5B2CFE0DCA7C2DB8CA8831C38F31F1E1EE
:2031A00022F339AFCDDB34CD3E35C1D1E121B402E5D52AF139E5E52AD839E52ACC39E5217F
:2031C000B402E521C931E5C5C9CDE92FC1E1D13E0132DF3922DA39E1CD360DC2FA313AD5C3
:2031E00039B7C2EA3178B1C2FA312ADA3923237EFE0823D2EF312BC3B02FEBD5CD1235B778
:20320000CA213211C337CD1235B7FCB42DCD8435CDF72EFE0DC20632E52ADA39E5C5C3DDF5
:203220002F0B626BD1C3DE31CD7B0BFE0DCA74044FCD1F44CDDC0AFE0DCA4332CD1F44B9DF
:20324000C234323E0DCD1F443E0ACD1F443A7638FE20C0C3F30ACD7B0BFE0DCA740432DC1F
:20326000394FCD9D0AFE0DCA7132B9CAF30AC36232E1D1C1017A32C34E2FC101502FC5217C
:20328000C3373ADC394F7EB9CA9232FE0DC823C38632C1D1E121B402E5D5C5C9B7CD7D0DC0
:2032A000C2AD32E523235E2356CD3634E12322C5397EF62877CDB02B22D6390E00C5CD4143
:2032C0002EC10CFE2CCABD32AF772B32DE393C772B22E03922E23936007932E839CDDB3442
:2032E000C1D1E121EA32E5D5C5C9C101502FC52AF339E5AF32DE3932DF39CD0F2FF5CD0E78
:203300002CDA0F33CA3833F132DE39E1C37431F1CD080BC474042AE239F51162381A3C4F16
:203320001A772B130DC22033360022E239F1FE2CCA1033E122F339C9F1E1AF22F339CDDB92
:2033400034CD3E352AF139EB2AC539237323722AD639CD502CC1D1E121B402E5D5C5C9E56E
:2033600037CD3C0DCDB02B36002B360122DA392B0E00CD642E0CCDE90ACD7B0BFE0DCA8E71
:2033800033FE3BCA8E33FE2CC4A404C37233E323235E2356EBCD2835E3B7CAA833B9CAA8B9
:2033A0003336002B0CC39D3336002BCDF22BE1C1E52AE439E52ADA39E521B402E511C333F7
:2033C000D5C5C9CDE92FE122DA39E122E639E1AF32DF39CD1235B7CAFB3311C337CD1235B1
:2033E000B7FCB42DCD8435CDF72EFE0DC2DD33E52AE639E52ADA39E5C3DD2F2ADA392BC3B5
:20340000B32F7D935F7C9A57C93A5E38B7C29E04CD58253A7638FE20C0325E382A4D38EBC8
:20342000CD0234EB225F38C93A5E38B7CCA404AF325E38C3F30A21EF394E73234672CD48F0
:2034400034CD5134712370C92AEB39195E23562BC92AEB391923235E23562BC92AEF397DA0
:20346000B4CA7134EBD5CD5134EB22EF39D1C39B342AED39112000EB1922ED392100FE395A
:20348000CD360DDAE0352AC739253AC939B7CD360DDAE0352AEB39EBCD0234D5CD4834EBA7
:2034A0002AF339EB7BE6E05F7BB2C2AF34D1D5732372233E00772377CD5134D1CAC53473E0
:2034C0002372C3CA34EB22F139EB2AF139D5EBCD4834D17323727BF6045FC9D5F52AF33981
:2034E000EB7BE61FCC5C342AEB3919F1F5777BE61FFE1FCAF73413CC0135EB22F339F1D19F
:20350000C97BE6E05FCD51347AB3CA5C3413131313C9D5EB2AEB39EB7DE61FC222357DF64D
:20352000046FEB197EEBD1C9CD1235F5D5EB7BE61FFE1FCA373513CC0135EBD1F1C9EB7B84
:20354000E6E05FD5CD51347BB2C1C8AF772377CD36342AF139EBCD4834712370C92AF339C7
:20356000D5EB7BE61F1BFE04CC78352AEB39EB22F339EB197EEBD1C97BE6E05FCD48347B83
:20358000F61F5FC9D5F5EB7BE61FFE1FCA903513CC0135EBF1D1C92AED39EB2AC7393AC91A
:2035A00039B7C2A9352100FC39CD0234DA190D7AB7CA190D1F577B1F5FD52AEB39EB2AED6D
:2035C00039CD0234424BD12AED39EB1922ED3978B1CADC352B1B1A770BC3CF3522EB39C9F9
:2035E000D52ABC37EB2AEB39CD02347AFE03DA190D1F577B1F5FE1C5E52AEB39EBE3CD023D
:2036000034424BD12AEB39E52ABC3719E522EB390922ED39E1D178B1CA23360B1A77231363
:20362000C31636C1C93227393228394F061E5E235623E5C5CD4536C1E105C22E363A273906
:20364000B9C48318C9010000C57AB3CA1317EBE55E23567BB2C24E36E17DB4C8CD73362B0D
:20366000562B5E7BB2CA5836AF7723772B2B2BE5C34E36010400097E22BA37E67FC8FE406F
:20368000D077237EE680C453372B46237EF5235E23562323237E23CDA74505C29536F1F552
:2036A000E608C2D336CDF936CD3F37F1F55FE680C2FE367BE604C204377BE640C40F377BE9
:2036C000E6A0CA07377BE6035F1600218F19197ECDA745F121273935C2EE363A283977CDFE
:2036E000831821AE37343AAD37BECC9918AFC4F9362ABA377EF64077C93E09C3A7453E2A8D
:20370000CA3E4DCA3E43CA3E55CDA745C3D336D5C52ABA37E5237BE603470E07235E2356B0
:2037200023D55E2356EB225938D1CDAA19E122BA37237EE620C4D019C1D13E49C3A745218A
:203740007638227438CD15172A74383600217638C3FE18C5E57EE603470E06235E2356CD0D
:20376000D019E1C1C9000000000000000000000000000000000000000000000000000000F5
:20378000000000000000000000000000000000000000000000000000000000000000000029
:2037A000000000000000000000000000000000000000000000000000000000000000000009
:2037C0000000000000000000000000000000000000000000000000000000000000000000E9
:2037E0000000000000000000000000000000000000000000000000000000000000000000C9
:203800000000000000000000000000000000000000000000000000000000000000000000A8
:20382000000000000000000000000000000000000000000000000000000000000000000088
:20384000000000000000000000000000000000000000000000000000000000000000000068
:20386000000000000000000000000000000000000000000000000000000000000000000048
:20388000000000000000000000000000000000000000000000000000000000000000000028
:2038A000000000000000000000000000000000000000000000000000000000000000000008
:2038C0000000000000000000000000000000000000000000000000000000000000000000E8
:2038E0000000000000000000000000000000000000000000000000000000000000000000C8
:203900000000000000000000000000000000000000000000000000000000000000000000A7
:20392000000000000000000000000000000000000000000000000000000000000000000087
:20394000000000000000000000000000000000000000000000000000000000000000000067
:20396000000000000000000000000000000000000000000000000000000000000000000047
:20398000000000000000000000000000000000000000000000000000000000000000000027
:2039A000000000000000000000000000000000000000000000000000000000000000000007
:2039C0000000000000000000000000000000000000000000000000000000000000000000E7
:2039E000000000000000000000000000000000000000000000000051410751420051430106
:203A0000514402514503514804514C05514D06625350066350535706514908515209624233
:203A200043006244450262484C04624146066A4958446A495964724E5A00715A01724E43C5
:203A40000271500672504F047250450500000000000000000000000000000000000000007C
:203A6000000000000000000000000000000000000000000000000000000000000000000046
:203A8000000000000000000000000000000000000000000000000000000000000000000026
:203AA000000000000000000000000000000000000000000000000000000000000000000006
:203AC0000000000000000000000000000000000000000000000000000000000000000000E6
:203AE0000000000000000000000000000000000000000000000000000000000000000000C6
:203B000000000052454C43524650524E0000000000000000000000000000000000000000F7
:203B2000000000000000000000000000000000000000000000000000000000000000000085
:203B4000000000000000000000000000000000000000000000000000000000000000000065
:203B6000000000000000000000000000000000000000000000000000000000000000000045
:203B8000000000000000000000000000000000000000000000000000000000000000000025
:203BA000000000000000000000000000000000000000000000000000000000000000000005
:203BC0000000000000000000000000000000000000000000000000000000000000000000E5
:203BE0000000000000000000000000000000000000000000000000000000000000000000C5
:203C00000000000000000000000000000000000000000000000000000000000000000000A4
:203C2000000000000000000000000000000000000000000000000000000000000000000084
:203C4000000000000000000000000000000000000000000000000000000000000000000064
:203C6000000000000000000000000000000000000000000000000000000000000000000044
:203C8000000000000000000000000000000000000000000000000000000000000000000024
:203CA000000000000000000000000000000000000000000000000000000000000000000004
:203CC0000000000000000000000000000000000000000000000000000000000000000000E4
:203CE0000000000000000000000000000000000000000000000000000000000000000000C4
:203D00000000000000000000000000000000000000000000000000000000000000000000A3
:203D2000000000000000000000000000000000000000000000000000000000000000000083
:203D4000000000000000000000000000000000000000000000000000000000000000000063
:203D6000000000000000000000000000000000000000000000000000000000000000000043
:203D8000000000000000000000000000000000000000000000000000000000000000000023
:203DA000000000000000000000000000000000000000000000000000000000000000000003
:203DC0000000000000000000000000000000000000000000000000000000000000000000E3
:203DE0000000000000000000000000000000000000000000000000000000000000000000C3
:203E00000000000000000000000000000000000000000000000000000000000000000000A2
:203E2000000000000000000000000000000000000000000000000000000000000000000082
:203E4000000000000000000000000000000000000000000000000000000000000000000062
:203E6000000000000000000000000000000000000000000000000000000000000000000042
:203E8000000000000000000000000000000000000000000000000000000000000000000022
:203EA000000000000000000000000000000000000000000000000000000000000000000002
:203EC0000000000000000000000000000000000000000000000000000000000000000000E2
:203EE0000000000000000000000000000000000000000000000000000000000000000000C2
:203F00000000000000000000000000000000000000000000000000000000000000000000A1
:203F2000000000000000000000000000000000000000000000000000000000000000000081
:203F4000000000000000000000000000000000000000000000000000000000000000000061
:203F6000000000000000000000000000000000000000000000000000000000000000000041
:203F8000000000000000000000000000000000000000000000000000000000000000000021
:203FA000000000000000000000000000000000000000000000000000000000000000000001
:203FC0000000000000000000000000000000000000000000000000000000000000000000E1
:203FE0000000000000000000000000000000000000000000000000000000000000000000C1
:20400000000000000000000000000000000000000000500000000000000000000000000050
:20402000000000000000000000000000000000000000000000000000000000000000000080
:20404000000000000000000000000000000000000000000000000000000000000000000060
:204060000000000000003F434F4D4D414E44204552524F52003F46494C45204E4F54204682
:204080004F554E44003F43414E275420454E5445522046494C45007EE67FC8CD1F4423C3BF
:2040A0009740216640C3B140217540C3B140218540CD9740C3D24022F73A2A06002BF92BF3
:2040C0002B224E3A2AF73AE53A593AB7C2000032513A2A4E3AF9CD9F433A1440FE0DCAD239
:2040E00040AF325D3A32553A325B3A325A3A32583A32573A325C3A3C32563A32543A01A20A
:2041000040C5AF324D3ACD4242D811033BCD254211F83A1AFE20C21E413E80324D3AE5216D
:204120005E3ACD1942E13E2032F83A32003BAF32F73A79D62CB732573AC248413A4D3AEEAE
:204140008032573ACD4242D811093B3A583AB7CA554111063BCD254211F83A3AF73A325302
:204160003A1AD62032523AC272413A4D3AC640324D3AE5217F3ACD1942E179FE3D37C0CD02
:204180004242FE0D37C0110601CD254211F73A1A13B7FA9A411AFE2037C8E521A03ACD1955
:2041A00042E13A4D3A87215E3ADCF94187217F3AF53A583AB7CACA4111883A01063B3E03C1
:2041C000F50A121303F13DC2C041F1DCF9413A553AB7C2DF413A523AB7C2DF413A533A3206
:2041E000553ACDB544CD5644CD6C44E12A4E3A23233A563A32513A47C9F511F73A0E097E4A
:20420000B7C213421AB7FA13421A7723130DC20942F1C90D2313C309421B060C1A772313D0
:2042200005C21C42C93A503AB7C8E521003B7EFE20C2404206031AE67F77231305C23642B8
:20424000E1C9CD7E43FE3A373E00C2664278B7CA4242EBCD08444F783D79C28742FE5BD05D
:20426000FE41D8D640EB32F73AD47E4378FE0BDA7442060BC5EBD511F83A0405CAD042CD92
:2042800008441213C37B42FE54C2A042CD0844FE5437C0CD0844FE5937C09FEBB7C36642C2
:2042A000FE4CC2BA42CD0844FE5337C0CD0844FE5437C03EFEEBB7C36642FE5237C0CD08CE
:2042C00044FE4437C0FE5237C03EFEEBB7C36642E1C13E0A90DAE142EB3620233DF2D942AC
:2042E000EB790600D62E32503ACC7E43EBD511003B78FE04DAF94206030405CA0643CD0872
:20430000441213C3FA42E179D62FB779C0CD0844FE4CC21F4332553ACD08444FC30743FE2B
:204320004EC22A43325B3AC31843FE4FC23543325A3AC31843FE52C2404332573AC318433A
:20434000FE43C24E4332583A32553AC31843FE4DC25943325C3AC31843FE49C26443325461
:204360003AC31843FE5AC27043AF32543AC31843FE5037C03A563A3C32563AC3184306005A
:20438000E5CD0844FE5BD29C43FE30DA9C43FE41D29843FE3AD29C4304C381434FD1C9C520
:2043A000D52180007E3600B747CACE43237EFE20C2B74305C3A943111340782B0412132378
:2043C00005CAC8437EC3BD4332593AC3EE43AF32593A3A513AB7C2E143CD4C443E2ACD1F82
:2043E000440E0A111240CD05003E0ACD1F44D1C13A1340211440E5226440856F3E008C6750
:20440000360D233E0A77E1C97E23FE20CA0844FE0ACA0844FE0DC2464423226440C9F1E5FB
:20442000D5C5F50E02E67F5FCD0500F1C1D1E1B7C9E52A64402B7EE67FFE0A23CC9F4323A6
:204440002264402B7EE1FE1A37C8B7C93E0DCD1F443E0AC31F44F5C5D5E511103C2100009A
:20446000220E3C217F3A3A553AC37F44F5C5D5E5110E3B210000220C3B215E3A3A573AB714
:20448000CAB044E50E1ACD0500E17EB7FAB044CDD244D50E13CD0500D1D50E16CD05003CF8
:2044A000CAAE40E1CDD2440E0FCD05003CCAA840E1D1C1F1C9F5C5D5E521000222103E115E
:2044C000123E0E1ACD050021A03A7EB7FAB044C3A444E5D5110C0019AF1604772315C2DBC4
:2044E000441110001977E1D1C9F5D511A03A1AB7FA0945C5E5D511123E0E1ACD0500D101D2
:20450000C5E50E10CD0500E1C1D1F1C9F53A553AB7CA1142D53A7F3A3CCA0945FA95453E14
:204520000DCDA7453E0ACDA7453E1ACDA745E52A0E3C11103CC5017F3ACD7F4511103C0E72
:204540001ACD0500C1E1117F3AC30045F53A573AB7CA1142D53A5E3AB7FA09453E1ACD0E8E
:2045600046E52A0C3B110E3BC5015E3ACD7F45110E3B0E1ACD0500C1E1115E3AC300457C33
:20458000B5C87DE67FCA8A45C6801717E60329846069C3DE453E0DCDA7453E0ACDA7453E27
:2045A0000CCDA745D1F1C9F53A553AB7CA11423A7F3A3CCA1E44FA8646E3E5D52A0E3C7C6B
:2045C000FE02CCD64523220E3C110F3C19D1F1F5E67F77F1E1C911103C217F3A3E04F5C58F
:2045E000D5E50E1ACD0500D1D50E15CD0500B7C2D246D1E101800009EBC1F13DC2DE4521BF
:204600000000C9110E3B3E02215E3AC3DE45F53A573AB7CA11423A5E3AB7FA1E44E3E5D582
:204620002A0C3B7C3DCC034623220C3B110D3B19D1F177E1C93AA03A3CCA3144FAC146E5E5
:20464000D52A103E7CFE02CC56462322103E11113E19D1C3444411123E3E04F5D5C50E1AA7
:20466000CD050011A03A0E14CD0500C1D13DCA7F4621800019EBF13DC25B46210000C9F11A
:204680003E1A12C37B46F1E5D5C5F50E05E67F5F215D3AFE20D2A446D60DCAA2463CCAA221
:2046A000467E3D77347BFE09C2B9463E20CDA7457EE607C2AB46C3BC46CD0500F1C1D1E1DB
:2046C000C9E5D5C50E03CD0500C1D1E1FE1A37C8B7C921F246CD9740D11AC640FE40C2E3D4
:2046E000463E20CD1F4421F846CD9740CD4C44C300004449534B20002046554C4C00000025
:20470000000000000000000000000000000000000000000000000000000000000000000099
:20472000000000000000000000000000000000000000000000000000000000000000000079
:20474000000000000000000000000000000000000000000000000000000000000000000059
:20476000000000000000000000000000000000000000000000000000000000000000000039
:20478000000000000000000000000000000000000000000000000000000000000000000019
:2047A0000000E5D5C5EB21FE46131A1BFE3A3E00C2BD471A13D640FE1BD22148137723065C
:2047C000081A1332503AFE2ECAE847FE21DAE847772305C2C1471A1332503AFE2ECAEF471D
:2047E000FE21D2D647C3EF4736202305C2E84706033A503AFE2ECAFC471106011A1377235E
:2048000005C2FC47701122470E1ACD050011FE460E0FCD0500FEFFCA2148AF321E47321F9F
:2048200047C1D1E1C9E5D5C53A1F473DF24C481122470E1ACD050011FE460E14CD0500C690
:20484000FFDA61482122472220473E7F321F472A20477EFE1AC25C4837C361482322204792
:20486000B7C1D1E1C9C900000000000000000000000000000000000000000000000000007C
:20488000512001000A204300000000512002002050440000000051200300570D45000000F5
:2048A0000051200400202048000000005120050050534C000000005120060020204DE54964
:2048C000000062200600202053505849000063200600202050535700000000512008004749
:2048E00049490000000051200900202052000000006220000020204243000000006220024F
:00000001FF

770
hex/mb.hex Normal file
View File

@ -0,0 +1,770 @@
:020000040000FA
:20010000C3D15E7A29DC290644BF119E45EC146318863940191815951467145116E6437D57
:2001200014D114EE1401449C160E454A5E20438515734403202B1EC0225D44C90CC90CFD88
:200140001F9416842000002420EE147C447D448244C444E33C1016D3157C221B16F922C9BD
:2001600013CC13CF13D213F51700000000584C7B4CF14C7B50EC14744D3D2487240000B7C3
:20018000590000BA581754FE5AFD5AD9539B525C53045A6558D7597B547A549A53BE5948DE
:2001A00049794983497C28802A6728C036DD377F38BD262B3779381C393139F64AF21FD1F3
:2001C0001DD6489646A449E248F248B6222B498A469046CB1D7A29F429202A6D2A0000003C
:2001E000000000000000000000000000000000000000007A517D51805100008E55405658C4
:20020000566151645167512400000000000000000000000000000000005554CFAB4EC4F719
:2002200042D30654CE0E53C31500004C4F53C5C34F4ED49A4C4541D292494ED41C534EC7A2
:200240001D4442CC1E56C92B56D32C56C42D4FD30C4852A416414CCCB64F4D4D4FCEB84894
:200260004149CEB94F4C4FD2E25552D3E34CD3E000454C4554C5AA4154C18449CD864546D9
:200280005354D2AD4546494ED4AE4546534EC7AF45464442CCB045C698004C53C5A24EC4AA
:2002A00081524153C5A64449D4A752524FD2A852CCD652D2D758D00B4FC62F51D6FA004F21
:2002C000D28249454CC4C0494C45D3C6CED352C50F49D81F004F54CF894F2054CF894F533A
:2002E00055C28D45D4C15052494ED4E6004558A41A004E5055D485C68B4E5354D2DA4ED4D2
:20030000054ED0104DD0FB4E4B4559A4DD0000494CCCC8005052494ED49E4C4953D49F505B
:200320004FD31B45D488494EC5B14F41C4C45345D4C94953D4934FC70A4FC33045CE1245B6
:200340004654A4014FC63100455247C5C54FC4FC4B49A4324B53A4334B44A4344944A40327
:20036000004558D483554CCC96414DC5C745D7944FD4D5005045CEBF55D49DCE95D2F8436C
:2003800054A4195054494FCEBA0052494ED49155D4C24F4BC5994FD3114545CB174C4FD449
:2003A000E4000045545552CE8E4541C48755CE8A4553544F52C58C45CD8F4553554DC5A918
:2003C0005345D4CA49474854A4024EC408454E55CDAC455345D4CC414E444F4D495AC5BB8B
:2003E0004543D4E500544FD0905741D0A54156C5CB5043A8D45445D0D147CE0451D20749B0
:20040000CE095452A4135452494E47A4D850414345A41859535445CDBD4352CEE1004F4E23
:20042000C5E74845CECF524FCEA3524F46C6A44142A8D0CFCE41CE0D0053494EC7D953D220
:20044000D20041CC1441525054D2DC00494454C8A14149D49748494CC5B4454EC4B5524988
:2004600054C5B7004FD2F9000000ABF2ADF3AAF4AFF5DEF6DCFDA7DBBEEFBDF0BCF1007964
:20048000797C7C7F50463C32287A7B202A00007A293B2AF429262C1F2C642D442E73298818
:2004A000258525032769270629312B252B512B841B3329004E45585420776974686F7574EE
:2004C00020464F520053796E746178206572726F720052455455524E20776974686F757430
:2004E00020474F535542004F7574206F66204441544100496C6C6567616C2066756E6374FB
:20050000696F6E2063616C6C004F766572666C6F77004F7574206F66206D656D6F7279009F
:20052000556E646566696E6564206C696E65206E756D6265720053756273637269707420D9
:200540006F7574206F662072616E6765004475706C696361746520446566696E6974696FCB
:200560006E004469766973696F6E206279207A65726F00496C6C6567616C2064697265630C
:20058000740054797065206D69736D61746368004F7574206F6620737472696E67207370E8
:2005A00061636500537472696E6720746F6F206C6F6E6700537472696E6720666F726D7599
:2005C0006C6120746F6F20636F6D706C65780043616E277420636F6E74696E756500556ECF
:2005E000646566696E656420757365722066756E6374696F6E004E6F20524553554D450019
:20060000524553554D4520776974686F7574206572726F7200556E7072696E7461626C6507
:20062000206572726F72004D697373696E67206F706572616E64004C696E65206275666642
:200640006572206F766572666C6F77003F003F00464F5220576974686F7574204E45585457
:20066000003F003F005748494C4520776974686F75742057454E440057454E44207769745F
:20068000686F7574205748494C45004649454C44206F766572666C6F7700496E7465726E99
:2006A000616C206572726F72004261642066696C65206E756D6265720046696C65206E6F36
:2006C0007420666F756E64004261642066696C65206D6F64650046696C6520616C72656139
:2006E0006479206F70656E003F004469736B20492F4F206572726F720046696C6520616CE3
:20070000726561647920657869737473003F003F004469736B2066756C6C00496E70757418
:20072000207061737420656E6400426164207265636F7264206E756D626572004261642014
:2007400066696C65206E616D65003F004469726563742073746174656D656E7420696E2092
:2007600066696C6500546F6F206D616E792066696C65730018141814181418141814181497
:2007800018141814181418140100000000007084503800000000A360FEFF4060090500007E
:2007A000000000000000000000000000000000000000000000000000000000000000000039
:2007C000000000000000000000000000000000000000000000000000000000000000000019
:2007E0000000000000000000000000000000000000000000000000000000000000000000F9
:200800000000000000000000000000000000000000000000000000000000000000000000D8
:2008200000003A00000000000000000000000000000000000000000000000000000000007E
:20084000000000000000000000000000000000000000000000000000000000000000000098
:20086000000000000000000000000000000000000000000000000000000000000000000078
:20088000000000000000000000000000000000000000000000000000000000000000000058
:2008A000000000000000000000000000000000000000000000000000000000000000000038
:2008C000000000000000000000000000000000000000000000000000000000000000000018
:2008E0000000000000000000000000000000000000000000000000000000000000000000F8
:200900000000000000000000000000000000000000000000000000000000000000000000D7
:200920000000000000000000000000000000000000000000000000000000000000000000B7
:20094000000000000000000000000000000000000000000000000000000000000000000097
:20096000002C0000000000000000000000000000000000000000000000000000000000004B
:20098000000000000000000000000000000000000000000000000000000000000000000057
:2009A000000000000000000000000000000000000000000000000000000000000000000037
:2009C000000000000000000000000000000000000000000000000000000000000000000017
:2009E0000000000000000000000000000000000000000000000000000000000000000000F7
:200A00000000000000000000000000000000000000000000000000000000000000000000D6
:200A20000000000000000000000000000000000000000000000000000000000000000000B6
:200A4000000000000000000000000000000000000000000000000000000000000000000096
:200A6000000000000000000000000000000000000000000000000000000000000000000076
:200A8000000000000000000000000000000000000000000000000000000000000000000056
:200AA000000000000000000000000000000000000000000000000000000000000000000036
:200AC000000000000000000000000000000000000000000000000000000000000000000016
:200AE0000000000000000000000000000000000000000000000000000000000000000000F6
:200B00000000000000000000000000000000000000000000000000000000000000000000D5
:200B20000000000000000000000000000000000000000000000000000000000000000000B5
:200B4000000000000000000000000000000000000000000000000000000000000000000095
:200B6000000000000000000000000000000000000000000000000000000000000000000075
:200B8000000000000000000000000000000000000000000000000000000000000000000055
:200BA000000000000000000000000000000000000000000000000000000000000000000035
:200BC000000000000000000000000000000000000000000000000000000000000000000015
:200BE0000000000000000000000000000000000000000000000000000000000000000000F5
:200C00000000000000000000000000000000000000000000000000000000000000000000D4
:200C20000000000000000000000000000000000000000000000000000000000000000000B4
:200C400020696E20004F4B0D0A00427265616B00210400397E23FEB4C2620C01060009C333
:200C6000540CFE82C04E234623E560697AB3EBCA760CEBCDCD43011000E1C809C3540C0139
:200C8000860DC3FC0C2A98077CA53CCA970C3ABB0AB71E13C2E30CC319441E3D011E3901F7
:200CA0001E36011E35011E34011E33011E3E011E37011E40011E3F011E32011E43011E3A6B
:200CC000C3E30C2AA30A2298071E02011E0B011E01011E0A011E12011E14011E06011E1679
:200CE000011E0D2A980722B30AAF32ED0B32F30B7CA53CCAF90C22B50A01020D2AB10AC352
:200D0000A243C17B4B328A072AAF0A22B70AEB2AB30A7CA53CCA1F0D22BE0AEB22C00A2ACE
:200D2000B90A7CB5EB21BB0ACA340DA6C2340D35EBC3C012AF7759329307CD144221B3043F
:200D40007BFE44D2500DFE32D2520DFE1FDA550D3E28D6135FCDEE14231DC2550DE52AB34A
:200D60000AE37EFE3FC26F0DE121B304C3500DCD2347E111FEFFCDCD43CC2142CABB597C28
:200D8000A53CC412313EC1CD4441AF329307CD4D53CD144221450CCD00003A8A07D602CC61
:200DA000D53C21FFFF2298073AAA0AB7CAF90D2AAB0AE5CD1A31D1D5CDF80E3E2ADAC20D67
:200DC0003E20CDD640CD284BD1D2DA0DAF32AA0AC3870DAF32AA0AC3EF0D2AAD0A19DAD321
:200DE0000DD511F9FFCDCD43D1D2D30D22AB0A3A6209B7CAA20DC3E23ECD284BDAA20DCD83
:200E000005133C3DCAA20DF5CD2814CDAC117EFE20CCBE28D5CD180FD1F122AF0AD28A53DD
:200E2000D5C5CD655DCD0513B7F5EB22B50AEBCDF80EDA3B0EF1F5CACC14B7C5F5E5CD3563
:200E400024E1F1C1C5DCA222D1F1D5CA870ED13AF30BB7C25C0E2A760A229B0A2AC20AE34A
:200E6000C1E509E5CDB642E122C20AEB74C1D1E52323732372231123080B0B0B0B1A7723E7
:200E8000130B79B0C27D0ED1CDAF0E218000360022A4072A940722BC0ACD37432AA20722D6
:200EA000A4072ABC0A229407C3A20D2A9A07EB626B7E23B6C82323237EB7CAD00EFE20D290
:200EC000B70EFE0BDAB70ECD0613CD0513C3B90E23EB732372C3AF0E110000D5CAEB0ED140
:200EE000CD1D14D5CAF40ECDD343F311FAFFC41D14C2C90CEBD1E3E52A9A07444D7E23B6B0
:200F00002BC823237E23666FCDCD4360697E23666F3FC83FD0C3FB0EAF32690A32680A012B
:200F20003B011123087EB7C23D0F2140017D914F7C9847212208AF1213121312C9FE22CAD3
:200F4000790FFE20CA4F0F3A680AB77ECA820F23F5CD5911F1D63ACA610FFE4AC2670F3E3F
:200F60000132680A32690AD655C2250FF57EB7E37CE1CA2A0FBECA4F0FF57E23CD5911C323
:200F80006D0FFE3F3E91D5C5CA4810116A04CD5A1CCD0445DA9710E511CC0FCDBE0FC2D6B1
:200FA0000FCD051311D00FCDBE0F3E89CAB80F11D30FCDBE0FC2D60F3E8DC1C348101AB7AF
:200FC000C84FCD5A1CB9C02313C3BE0F474F2000544F00554200E1CD5A1CE5219B5ED6414E
:200FE000874F0600095E2356E123E5CD5A1C4F1AE67FCA641123B9C23C101A13B7F2EB0F42
:2010000079FE28CA21101AFED3CA2110FED2CAFD03CD5A1CFE2ECA1C10CDE2213E00D2640D
:2010200011F11AB7FA4710C1D1F680F53EFFCD5911AF32690AF1CD5911C3250FE11A13B7E3
:20104000F23D1013C3EA0F2BF5115A104F1AB7CA691013B9C24D10C36B108CABACAAA7A97E
:20106000D6A28A939F89CF8D00AFC23E0132690AF1C1D1FEA2F5CC5711F1FEB4C28410CDF0
:2010800059113EF2FEDBC23511F5CD57113E8FCD5911F1F5C37B0F7EFE2ECAA710FE3AD23F
:2010A0002211FE30DA22113A690AB77EC1D1FA4F0FCAD310FE2ECA4F0F3E0ECD5911D5CDD0
:2010C0002814CDAC11E3EB7DCD59117CE1CD5911C3250FD5C57ECDD12ECDAC11C1D1E53A1E
:2010E000670AFE02C2FF102A040C7CB73E02C2FF107D652E0FFE0AD2C710C611C3CC10F5F5
:201100000FC61BCD591121040CCD641DDA121121000CF1F57ECD5911F1233DC21311E1C389
:20112000250F116904131AE67FCA8E1113BE1AC22511C3A011FE26C24F0FE5CD0513E1CDEF
:201140005B1CFE483E0BC24B113E0CCD5911D5C5CD691CC1C3C5103E3A12130B79B0C01EF6
:2011600017C3E30CE12B3D32690AC1D1CD5A1CCD591123CD5A1CCD0445D26F11FE3AD28B49
:2011800011FE30D26F11FE2ECA6F11C3250F7EFE20D2A011FE09CAA011FE0ACAA0113E20CF
:2011A000F53A690A3CCAA9113DC36D102B7EFE20CAAC11FE09CAAC11FE0ACAAC1123C93EBB
:2011C0006432A50ACD8B39CDD343F0D5EB22A70AEB3A670AF5CD021AF1E5CDAC1F21C00B05
:2011E000CDC028E1D1C1E5CDEC1422A10A21020039CD540CC2111209D52B562B5E2323E5C7
:201200002AA10ACDCD43E1D1C2F111D1F922B10A0ED1EB0E08CDC742E52AA10AE3E52A9805
:2012200007E3CDD343CECD641DCAE10CD2E10CF5CD021AF1E5F24E12CD7A29E31101007E66
:20124000FED1CC5320D5E5EBCD9228C37112CDF429CDB428E1C5D5010081515A7EFED13E48
:2012600001C27212CD031AE5CDF429CDB428CD4528E1C5D54FCD641D47C52BCD0513C2C9CC
:201280000CCDE224CD0513E5E52AC40B2298072AA70AE30682C533F5F5C3A0450682C533B6
:2012A000E5CD0000E1B7C45C4222AF0AEB2100003922B10AEB7EFE3ACAE512B7C2C90C23B2
:2012C0007E23B6CA850C235E2356EB2298073AFE0BB7CAE412D53E5BCDD640CD1A313E5DF8
:2012E000CDD640D1EBCD051311A012D5C80000C38A5D000000000000000000000000000957
:201300004E2346C5EB237EFE3AD0FE20CA0513D28613B7C8FE0BDA8113FE1EC223133A6CA2
:201320000AB7C9FE10CA6013F523326C0AD61CD26613D6F5D23E13FEFEC252137E23226A9D
:201340000A26006F226E0A3E02326D0A218C13F1B7C97E2323226A0A2B66C34313CD8E13C8
:201360002A6A0AC306133C07326D0AD5C5116E0AEB47CDCD28EBC1D1226A0AF1218C13B775
:20138000C9FE09D20513FE303F3C3DC91E103A6C0AFE0FD2AB13FE0DDAAB132A6E0AC2A8BA
:2013A000132323235E2356EBC3032C3A6D0A32670AFE08CAC3132A6E0A22040C2A700A2269
:2013C000060CC9216E0AC3EE281E03011E02011E04011E08CD034501C90CC5D8D6414F47FF
:2013E000CD0513FEF3C2F513CD0513CD0345D8D64147CD05137891D83CE321CA0A06000934
:2014000073233DC20014E17EFE2CC0CD0513C3D413CD0513CD5620F01E05C3E30C7EFE2EB4
:20142000EB2AB50AEBCA05132BCD0513FE0ECA3314FE0DEB2A6E0AEBCA0513AF326C0A2BF7
:20144000110000CD0513D0E5F5219819CDCD43DA6414626B19291929F1D6305F160019EB2A
:20146000E1C34314F1E1C9CA3743FE0ECA7414FE0DC29A52CD3B4301A012C394140E03CD34
:20148000C742CD2814C1E5E52A9807E33E8DF533C5C39814C5CD28143A6C0AFE0DEBC8FEA2
:2014A0000EC2C90CEBE52A6A0AE3CDEE1423E52A9807CDCD43E1DCFB0ED4F80ED2CC140B5C
:2014C0003E0D32A90AE1CD2C246069C91E08C3E30CC016FFCD500CF922B10AFE8D1E03C232
:2014E000E30CE122980721A012E33EE1013A0E0006007948472BCD0513B7C8B8C823FE22DD
:20150000CAF2143CCAF614D68CC2F514B88A57C3F514F1C603C32D15CD8B39CDD343F0EB4B
:2015200022A70AEBD53A670AF5CD021AF1E3473A670AB878CA3D15CDAC1F3A670A11040C19
:20154000FE05DA481511000CE5FE03C27F152A040CE5235E23562A9A07CDCD43D273152AB3
:20156000C60ACDCD43D1D27B1521980ACDCD43D27B153ED1CDC648EBCDA346CDC648E3CD73
:20158000C928D1E1C9FEA8C2B515CD0513CDD34389CD28147AB3CAA215CDF60E5059E1D278
:2015A000CC14EB22B90AEBD83ABB0AB77BC83A8A075FC3F90CCD75207E47FE8DCAC415CDAB
:2015C000D343892B4B0D78CAED12CD2914FE2CC0C3C51511BB0A1AB7CAD80C3C328A0712B1
:2015E0007EFE83CAF315CD2814C07AB3C298143CC3F715CD0513C02AB70AEB2AB30A22988F
:2016000007EBC07EB7C20C162323232323C3EC14CD7520C0B7CA1814C3E30C110A00D5CA52
:201620003D16CD1D14EBE3CA3E16EBCDD3432CEB2AAD0AEBCA3D16CD2814C2C90CEB7CB5E3
:20164000CA181422AD0A32AA0AE122AB0AC1C3A20DCD021A7EFE2CCC0513FE89CA6416CDDD
:20166000D343CF2BE5CD8628E1CA7E16CD0513C8FE0ECA9514FE0DC2ED122A6E0AC9160141
:20168000CDEC14B7C8CD0513FEA2C2801615C28016C36C163E01328D07C3A1160E02CD0D06
:2016A000512BCD0513CC2142CAE917FED9CAF73EFED0CA6517FED4CA6517E5FE2CCA2517B9
:2016C000FE3BCAE217C1CD021AE5CD641DCADC16CD2931CDC74636202A040C34CD5446C287
:2016E0001E172A040C3A8D07B7CA05173A8F07473CCA1E173A8C07B7CA1E17863FD21B1772
:201700003DB8C31B173A9007473CCA1E173A650AB7CA1E17863FD21B173DB8D42142CD2645
:2017200047E1C3A1160128002A940709CD54467EC25C173A8D07B7CA49173A8E07473C3ABB
:201740008C07CA5C17B8C356173A9107473A650AFEFFCA5C17B8D42142D2E217D60ED25C09
:20176000172FC3D717F5CD0513CD5620F1F5FED4CA74171B7AB7F27C17110000E5CD54461A
:20178000C29B173A8D07B73A8F07C290173A90076F3CCA9B172600CD0D2CEBE1CDD343291B
:2017A0002BF1D6D4E5CAC6170128002A940709CD54467EC2C6173A8D07B7CAC3173A8C0766
:2017C000C3C6173A650A2F83DAD7173CCAE217CD21427B3DFAE2173C473E20CDD64005C2E1
:2017E000DB17E1CD0513C3A816AF328D07E5676F229407E1C9CDD34385FE23CAA751CD48B9
:201800004CCD6F18CD8B39CD3B2AD5E5CD304BD1C1DA1644C5D50600CDCA46E13E03C32D0E
:20182000153F5265646F2066726F6D2073746172740D0A00237EB7CAC90CFE22C23418C3A9
:20184000DA18E1E1C34E183AA60AB7C2C30CC1212118CD23472AAF0AC9CD0B51E5216109E2
:20186000C33B19FE23CA5918CD484C019918C5FE223E003293073EFF32E70BC0CDC8467E79
:20188000FE2CC28F18AF32E70BCD0513C39318CDD3433BE5CD2647E1C9E53AE70BB7CAAB6B
:2018A000183E3FCDD6403E20CDD640CD304BC1DA1644C5AF32A60A362CEBE1E5D5D52B3EB6
:2018C0008032A50ACD0513CD893A7E2BFE5BCAD618FE28C2FD1823060004CD0513CAC90CCA
:2018E000FE22CA3418FE28CAD918FE5BCADA18FE5DCAF918FE29C2DA1805C2DA18CD05130D
:20190000CA0819FE2CC2C90CE37EFE2CC242183E01320A0CCD64193A0A0C3DC24218E5CD48
:20192000641DCCA848E12BCD0513E37EFE2CCABF18E12BCD0513B7E1C24E18362CC3451919
:20194000E52AC80AF6AF32A60AE3C35119CDD3432CCD8B39E3D57EFE2CCA63193AA60AB728
:20196000C2D319F6AF32BC0BCD5446C29751CD641DF5C2A219CD05135747FE22CA8C193AFE
:20198000A60AB757CA8919163A062C2BCDCB46F1C6034F3ABC0BB7C879EB21B119E3D5C33F
:2019A0002E15CD0513F1F5018F19C5DAD12EC3CA2E2BCD0513CABD19FE2CC24718E32BCD41
:2019C0000513C24D19D13AA60AB7EBC2FC43D5E1C3E917CDEC14B7C2EC19237E23B61E0409
:2019E000CAE30C235E2356EB22A30AEBCD0513FE84C2D319C36319CDD343F0C3021ACDD3E9
:201A000043282B1600D50E01CDC742CD931BAF32090C22BC0A2ABC0AC17E229D0AFEEFD84A
:201A2000FEF2DA8E1AD6F25FC2341A3A670AFE037BCA5B48FE0CD0217F041600197856BA34
:201A4000D0C501151AC57AFE7FCAAC1AFE51DABA1AE6FEFE7ACABA1A21040C3A670AD603C9
:201A6000CAE10CB74E2346C5FA7F1A234E2346C5E27F1A21000C4E234623C54E2346C5C6C1
:201A8000034B47C501E31AC52A9D0AC3051A1600D6EFDAC61AFE03D2C61AFE0117AABA575D
:201AA000DAC90C229D0ACD0513C3901ACDF429CD992801CC36167FC3871AD5CD7A29D1E5ED
:201AC00001751DC3871A78FE64D0C5D511046421421DE5CD641DC2581A2A040CE5015C46A9
:201AE000C3871AC17932680A3A670AB8C2FC1AFE02CA181BFE04CA671BD22B1B5778FE0831
:201B0000CA281B7AFE08CA4F1B78FE04CA641B7AFE03CAE10CD26F1B21A904060009094E7F
:201B20002346D12A040CC5C9CD202ACDF428E122020CE122000CC1D1CDA928CD202A219586
:201B4000043A680A07856F8C95677E23666FE978F5CDF428F132670AFE04CA361BE12204E5
:201B60000CC33B1BCDF429C1D1219F04C3411BE1CD9928CD142ACDB428E122060CE12204A2
:201B80000CC3691BE5EBCD142AE1CD9928CD142AC36727CD0513CADE0CDAD12ECD0445D2F2
:201BA0004A1CFE20DA5D133CCAD31C3DFEF2CA931BFEF3CA3C1CFE22CAC846FED5CA4F1DA9
:201BC000FE26CA691CFED7C2D61BCD05133A8A07E5CDD51DE1C9FED6C2E71BCD0513E52A80
:201BE000B30ACD032CE1C9FEDCC2161CCD0513CDD34328FE23C2031CCD7220E5CD5051E12F
:201C0000C3061CCD893ACDD34329E5EB7CB5CA1814CDDC29E1C9FED2CADB1DFEDACACB4988
:201C2000FEDDCA6F42FED8CA0049FE85CA2755FED3CA541ECDFE19CDD34329C9167DCD0571
:201C40001A2ABC0AE5CD6B28E1C9CD8B39E5EB22040CCD641DC4EE28E1C97EFE61D8FE7BF8
:201C6000D0E65FC9FE26C22814110000CD0513CD5B1CFE4FCAAD1CFE48C2AC1C0605237ECE
:201C8000CD5B1CCD0445EBD2971CFE3AD2CE1CD630DACE1CC39E1CFE47D2CE1CD6372929DF
:201CA0002929B56FEB05C27E1CC3DB0C2BCD0513EBD2CE1CFE38D2C90C01DB0CC529D8294D
:201CC000D829D8C10600D6304F09EBC3AD1CCDDC29EBC9237ED681FE07C2E81CE5CD05137C
:201CE000FE28E1C2CC373E070600074FC5CD051379FE05D20F1DCDFE19CDD3432CCD3B2A2E
:201D0000EB2A040CE3E5EBCD7520EBE3C3291DCD341CE37DFE0CDA201DFE1BE5DCF429E13C
:201D200011481CD53E0132090C019F01094E236669E915FEF3C8FE2DC814FE2BC8FEF2C882
:201D40002BC93C8FC1A0C6FF9FCD7F28C3611D165ACD051ACD7A297D2F6F7C2F6722040C1F
:201D6000C1C3151A3A670AFE08D2711DD603B737C9D603B7C978F5CD7A29F1D1FE7ACA0DC8
:201D80002CFE7BCAA82B01D71DC5FE46C2951D7BB56F7CB2C9FE50C2A01D7BA56F7CA2C9B6
:201DA000FE3CC2AB1D7BAD6F7CAAC9FE32C2B81D7BAD2F6F7CAA2FC97D2FA32F6F7C2FA2F4
:201DC0002FC97D936F7C9A67C3032C3A8C07C3D41D3A650A3C6FAF67C3DC29CDFA1DD5CDE4
:201DE000341CE35E2356215727E5D53A670AF5FE03CCA848F1EB21040CC9CD051301000067
:201E0000FE1BD2131EFE11DA131ECD05133A6E0AB7174FEB21740709EBC9CDFA1DD5CDD33B
:201E200043F0CDD122E3732372E1C9FED2CA1A1ECDD41FCDC61FEB732372EB7EFE28C2ECA6
:201E400014CD0513CD8B397EFE29CAEC14CDD3432CC3441ECDD41F3A670AB7F522BC0AEB6B
:201E60007E23666F7CB5CAD50C7EFE28C21E1FCD0513229D0AEB2ABC0ACDD34328AFF5E550
:201E8000EB3E8032A50ACD8B39EBE33A670AF5D5CD021A22BC0AE1229D0AF1CDAC1F0E04CE
:201EA000CDC74221F8FF39F9CDF7283A670AF52ABC0A7EFE29CACB1ECDD3432CE52A9D0A69
:201EC000CDD3432CC3811EF1324E0BF1B7CA0F1F32670A21000039CDEE2821080039F9D169
:201EE0002E032C1B1AB7FAE21E1B1B1B3A670A85473A4E0B4F80FE64D21814F57D0600217C
:201F0000500B094FCDC01F01C71EC5C5C33A152ABC0ACD0513E52A9D0ACDD343293ED52214
:201F20009D0A3AE60AC604F50F4FCDC742F14F2F3C6F26FF39F9E511E40ACDC01FE122E4F5
:201F40000A2A4E0B22E60A444D21E80A11500BCDC01F676F224E0B2ABA0B2322BA0B7CB5AB
:201F600032B70B2A9D0ACDF7192BCD0513C2C90CCD641DC2881F11980A2A040CCDCD43DABD
:201F8000881FCDA346CD01472AE40A545D23234E23460303030321E40ACDC01FEBF92ABA7A
:201FA0000B2B22BA0B7CB532B70BE1F1E5E607218B044F060009CD2C1DE1C91A7723130B9B
:201FC00078B1C2BB1FC9E52A9807237CB5E1C01E0CC3E30CCDD343D33E8032A50AB64FC3D7
:201FE0009039FE7EC2C90C237E23FE83CA604AC3C90CCD782032F91FDB00C3D51DCD622026
:20200000D300C9CD6220F51E002BCD0513CA1720CDD3432CCD7520F157DB00ABA2CA1920CD
:20202000C9C3C90CFE9EC23A20CD0513CD7520328F075FCD4820328E07C9CD752032900729
:202040005FCD4820329107C9D60ED24820C61C2F3C83C9CD0513CD021AE5CD7A29EBE17A39
:20206000B7C9CD7520321A20320120CDD3432CC37520CD0513CD021ACD5920C218142BCD5E
:2020800005137BC93E01328D07C1CDD80EC5CD655D21FFFF229807E1D14E23462378B1CAB8
:2020A000870DCD5446CC5142C54E234623C5E3EBCDCD43C1DA860DE3E5C5EB22B50ACD1A49
:2020C00031E17EFE09CACD203E20CDD640CDE620216209CDDC20CD2142C391207EB7C8CDDB
:2020E000A54223C3DC2001620916FFAF32E60BCD655DC3F920032315C87EB702C8FE0BDA74
:202100000821FE205FDA1C21B7FA41215FFE2ECA1C21CDE221D21C21AFC32F213AE60BB7DA
:20212000CA2D213CC22D213E20020315C83E0132E60B7BFE0BDA3D21FE20DAED2102C3F51D
:20214000203C7EC24A21237EE67F23FEDBC258210B0B0B0B14141414FEA2CC6B2AFEB4C24A
:202160006C217E23FEF23EB4CA6C212BE5C5D5211802470E400C23545D7EB7CA752123F2F4
:2021800079217EB8C27621EBFED2CA8F21FED379D1C15FC2A2213AE60BB73E0032E60BC31B
:2021A000B721FE5BC2AE21AF32E60BC3C6213AE60BB73EFF32E60BCAC2213E20020315CAB0
:2021C00058477BC3C9217E235FE67F020315CA5847B3F2C621FEA8C2DE21AF32E60BE1C3E7
:2021E000F920CD0445D0FE30D8FE3A3FC92BCD0513D5C5F5CD8E13F1010C22C5FE0BCA6F66
:2022000036FE0CCA72362A6E0AC32931C1D13A6C0A1E4FFE0BCA1F22FE0C1E48C22A223ECE
:2022200026020315C87B020315C83A6D0AFE041E00DA3B221E21CA3B221E237EFE20CCBE64
:20224000287E23B7CA6D22020315C83A6D0AFE04DA41220B0A03C25E22FE2ECA6822FE44B7
:20226000CA6822FE45C241221E00C341227BB7CA7622020315C82A6A0AC3F920CDD80EC5F6
:20228000CD3524C1D1C5C5CDF80ED29422545DE3E5CDCD43D2181421450CCD2347C121873B
:2022A0000EE3EB2AC20A1A020313CDCD43C2A622606922C20AC9CDDB22CD5C5D7EC3D51DB0
:2022C000CDD122D5CD5C5DCDD3432CCD7520D112C9CD021AE5CDDB22EBE1C9017A29C5CD63
:2022E000641DF83A070CFE90C0CD4528F8CDF429018091110000C38825010A00C55058CAD9
:202300002F23FE2CCA1123D5CD1D14424BD1CA2F23CDD3432CCD1D14CA2F23F1CDD3432CCD
:20232000D5CD2814C2C90C7AB3CA1814EBE3EBC5CDF80ED1D5C5CDF80E6069D1CDCD43EB14
:20234000DA1814D1C1F1E5D5C35B2309DA1814EBE521F9FFCDCD43E1DA1814D55E23567A17
:20236000B3EBD1CA6E237E23B62BEBC24B23C5CD9123C1D1E1D55E23567AB3CA8C23EBE31D
:20238000EB23732372EB09EBE1C3752301860DC5FEF6AF32A90A2A9A072B237E23B6C823D0
:2023A0005E2356CD0513B7CA9A234F3AA90AB779CA1224FEA8C2D423CD0513FE89C2A62361
:2023C000CD0513FE0EC2A623D5CD33147AB3C2DD23C3FD23FE0EC2A323D5CD3314E5CDF89F
:2023E0000E0B3E0DDA2524CD1442210224D5CD2347E1CD1A31C1E1E5C5CD1231E1D12BC3EB
:20240000A323556E646566696E6564206C696E652000FE0DC2FF23D5CD3314E5EB2323236B
:202420004E23463E0E21FC23E52A6A0AE52B702B712B77E1C93AA90AB7C8C39223CDD343A7
:2024400042CDD34341CDD34353CDD343453AC70BB7C2D20CE52AC40AEB2AC60ACDCD43C2F4
:20246000D20CE17ED630DAC90CFE02D2C90C32C60B3C32C70BCD0513C97EB7C8CD8324233E
:20248000C37924F5C35C41CA9424CD021AE5CD7A29C3B024E521B824CD2347CD0D4BD1DA47
:2024A0001644D5237ECDD12E7EB7C29524CD7A29226A38CDCF37E1C952616E646F6D206E30
:2024C000756D626572207365656420282D333237363820746F20333237363729000E1DC35E
:2024E000E4240E1A0600EB2A980722C40BEB042BCD0513CA0025FEA2CA1525FECFC2F024CC
:20250000B7C21525237E23B659CAE30C235E2356EB22C40BEBCD051379FE1A7ECA2E25FEAC
:20252000B4CAEE24FEB5C2EF2405C2EF24C9FE82CAEE24FE83C2EF2405C8CD0513CA00258D
:20254000EB2A9807E52AC40B229807EBC5CD8B39C12BCD0513110025CA6325CDD3432C2B54
:20256000113825E3229807E1D5C9F53A090C320A0CF1F5AF32090CF1C9210D36CDB728C3D5
:202580008825CDB728CD742878B7C83A070CB7CAA92890D2A2252F3CEBCD9928EBCDA9284D
:2025A000C1D1FE19D0F5CDD62867F1CD62267CB721040CF2C925CD4226D223262334CA88F8
:2025C000302E01CD8926C32326AF90477E9B5F237E9A57237E994FDC4E266863AF4779B7BA
:2025E000C20E264A54656F78D608FEE0C2DD25AF32070CC97CB5B2C20626790517D2FB2566
:20260000041F4FC3112605297A1757798F4FF2F425785C45B7CA232621070C8677D2EF25DC
:20262000CAEF257821070CB7FC352646237EE680A94FC3A9281CC014C00CC00E8034C0C368
:2026400087307E835F237E8A57237E894FC921080C7E2F77AF6F90477D9B5F7D9A577D9956
:202660004FC90600D608DA7126435A510E00C36426C6096F7AB3B0C28526792DC81F4FD26E
:202680007B26C38B26AF2DC8791F4F7A1F577B1F5F781F47C3852600000081049AF71983B3
:2026A0002463438375CD8D84A97F83820400000081E2B04D830A721183F404357FCD452870
:2026C000B7EA1814CDD026013180111872C30327CDB4283E8032070CA8F5CD9928219B2677
:2026E000CDA737C1E1CD9928EBCDA92821AC26CDA737C1D1CD6927F1CD9928CD5428C1D18F
:20270000C38825CD4528C82E00CD032879323C27EB223727010000505821DA25E52125278D
:20272000E5E521040C7E23B7CA5927E5EB1E081F5779D23D27D511000019D1CE001F4F7C59
:202740001F677D1F6F781F47E610CA512778F620471D7AC22F27EBE1C9435A514FC9CD994D
:202760002821AE2DCDA628C1D1CD4528CA90302EFFCD032834CA673034CA67302B7E32A07A
:20278000272B7E329C272B7E32982741EBAF4F575F32A327E5C57DD6006F7CDE006778DE7B
:2027A00000473E00DE003FD2B12732A327F1F137D2C1E1793C3D1FF2CF27173AA3271FE62B
:2027C000C0F578B4B5CACA273E20E1B4C32426177B175F7A175779174F297817473AA327D6
:2027E0001732A32779B2B3C29427E521070C35E1C29427C3EF253EFF2EAF21130C4E23AE6F
:20280000472E0078B7CA27287D21070CAE80471FA878F22628C68077CA5727CDD628772BE4
:20282000C9CD45282FE1B7E1F2EF25C36730CDB42878B7C8C602DA803047CD882521070CA6
:2028400034C0C380303A070CB7C83A060CFE2F179FC03CC9068811000021070C4F700600B9
:2028600023368017C3D725CD8628F0CD641DFAF82BCAE10C21060C7EEE8077C9CD86286FD3
:20288000179F67C3DC29CD641DCAE10CF245282A040C7CB5C87CC34F28EB2A040CE3E52AEF
:2028A000060CE3E5EBC9CDB728EB22040C606922060CEBC921040C5E2356234E234623C942
:2028C00011040C0604C3CD28EB3A670A471A77132305C2CD28C921060C7E07371F773F1F09
:2028E0002323777907371F4F1FAEC9210D0C11C828C3FA28210D0C11C928D511040CCD64DD
:202900001DD811000CC978B7CA4528214E28E5CD452879C821060CAE79F8CD20291FA9C986
:202920002378BEC02B79BEC02B7ABEC02B7B96C0E1E1C97AAC7CFA4F28BAC240297D93C8E2
:20294000C35028210D0CCDC92811140C1AB7CA4528214E28E5CD45281B1A4FC821060CAE28
:2029600079F8132306081A96C21D291B2B05C26629C1C9CD4929C24E28C9CD641D2A040CFC
:20298000F8CAE10CE29929CDF428210936CDEE28CD262CCDFE29C39C29CD79253A060CB7AF
:2029A000F5E67F32060C3A070CFE90D2DB0CCD422A3A070CB7C2BD29F1EBC3C229F1EBF2A8
:2029C000C8297C2F677D2F6FC3DC2921DB0CE53A070CFE90D2E529CD422AEBD122040C3E04
:2029E0000232670AC9018090110000CD0629C0616AC3DB29CD641DE0FA112ACAE10CCDB45E
:202A000028CD362A78B7C8CDD62821030C46C323262A040CCD362A7C551E000690C35928ED
:202A2000CD641DD0CAE10CFC112A21000022000C22020C3E08013E04C3E129CD641DC8C3DC
:202A4000E10C474F575FB7C8E5CDB428CDD628AE67FC662A3E9890CD62267C17DC35260639
:202A600000DC4E26E1C91B7AA33CC00BC9CD641DF8CD4528F2802ACD7428CD802AC36B2802
:202A8000CD641DF8D2A62ACAE10CCDCF2921070C7EFE983A040CD07ECD422A36987BF57902
:202AA00017CDD725F1C921070C7EFE90C2CA2A4F2B7EEE8006062BB605C2B62AB721008034
:202AC000C2C92ACDDC29C3202A79B7C8FEB8D0F5CDB428CDD628AE2B36B8F52B71FCFA2A03
:202AE0003A060C4F21060C3EB890CD252DF1FCDD2CAF32FF0BF1D0C3912C21000C7E35B7AA
:202B000023CAFD2AC9E521000078B1CA222B3E1029DAD63BEB29EBD21E2B09DAD63B3DC223
:202B2000102BEBE1C97C179F47CDEE2B7998C3342B7C179F47E57A179F19880FACF2DB2953
:202B4000C5EBCD142AF1E1CD9928EBCD082CC34E307CB5CADC29E5D5CDE22BC5444D210022
:202B6000003E1029DA892BEB29EBD2712B09DA892B3DC2632BC1D17CB7FA812BD178C3EA5E
:202B80002BEE80B5CA9A2BEB01C1E1CD142AE1CD9928CD142AC1D1C3032778B7C1FADC29D7
:202BA000D5CD142AD1C374287CB5CACC0CCDE22BC5EBCDEE2B444D2100003E11F5B7C3CB87
:202BC0002BF5E509D2CA2BF1373EE17B175F7A17577D176F7C1767F13DC2C12BEBC1D5C3E3
:202BE000772B7CAA47CDE92BEB7CB7F2DC29AF4F956F799C67C3DC292A040CCDEE2B7CEE00
:202C000080B5C0EBCD362AAF0698C35928D5CDA82BAF821F677B1F6FCDDF29F1C3EA2B2122
:202C2000130C7EEE807721140C7EB7C8472B4E11070C1AB7CAEB2890D2522C2F3CF50E08EC
:202C400023E51A467778121B2B0DC2422CE1462B4EF1FE39D0F5CDD628210C0C473E0077FB
:202C600032FF0BF121130CCD252D78B7F2862C3A0C0C32FF0BCDFA2CD2CB2CEB34CA88300A
:202C8000CD512DC3CB2C3E9ECDFC2C21080CDC122DAF473A060CB7C2BA2C21FF0B0E0856D6
:202CA000777A230DC29F2C78D608FEC0C2922CC3EF250521FF0BCD592DB7F2B22C78B7CAF8
:202CC000CB2C21070C8677D2EF25C83AFF0BB7FCDD2C21080C7EE6802B2BAE77C921000C94
:202CE000060734C02305C2E22C34CA88302B3680C911300C210D0CC3022D3E8E210D0C11EB
:202D0000000C0E0732092DAF1A8E1213230DC2082DC97E2F7721FF0B0608AF4F799E7723B2
:202D200005C21C2DC971E5D608DA3C2DE1E51100084E73592B15C2312DC3272DC60957AFFE
:202D4000E115C8E51E087E1F772B1DC2462DC33F2D21060C1601C3432D0E087E1777230D1B
:202D6000C25B2DC9CD4528C83A140CB7CAEF25CDF927CD9D2E711306071A13B7D5CA992DF0
:202D80000E08C51F47DCFA2CCD512D78C10DC2822DD105C2792DC3912C21060CCD2D2DC313
:202DA000912DCDCCCCCCCCCC4C7D00000000000020843A070CFE41D2C62D11A22D210D0CB4
:202DC000CDC928C3642D3A060CB7F2D62DE67F32060C217428E5CD0E2E11000C210D0CCD71
:202DE000C928CD0E2ECD262C11000C210D0CCDC9283E0FF5CD162ECD222ECD262C21130CD6
:202E0000CD332EF13DC2F32DCD0E2ECD0E2E21070C35C0C3EF2521140C3E0435C83DC21BC8
:202E20002EC9D13E04210D0C4E234623C53DC2282ED5C9D13E0421140CC1702B712B3DC271
:202E4000392ED5C93A140CB7CA94303A070CB7CAEF25CDF6273434CA8830CD9D2E21370C1C
:202E600071413E9ECDF12C1A993FDA742E3E8ECDF12CAFDA12043A060C3C3D1FFACE2C1728
:202E800021000C0E07CD5B2D21300CCD592D78B7C2622E21070C35C2622EC3EF257932131A
:202EA0000C2B11360C0100077E12711B2B05C2A82EC9CDF428EB2B7EB7C8C602DA88307706
:202EC000E5CD262CE134C0C38830CDEF25CD332AF6AF016A25C5F53E0132090CF1EB01FF42
:202EE000006068CCDC29EB7EFE26CA691CFE2DF5CAF92EFE2BCAF92E2BCD0513DAE02FFE3B
:202F00002ECA862FFE65CA0B2FFE45C2352FE5CD0513FE6CCA232FFE4CCA232FFE71CA2322
:202F20002FFE51E1CA342F3A670AFE08CA4E2F3E00C34E2F7EFE25CA932FFE23CAA42FFEA6
:202F400021CAA52FFE64CA4E2FFE44C2652FB7CDAE2FCD0513CD321DCD0513DA533014C2F7
:202F6000652FAF935FE57B905FF4BD2FFCCD2FC2692FE1F1E5CC6B28E1CD641DE8E5215711
:202F800027E5CDE529C9CD641D0CC2652FDCAE2FC3F92ECD0513F1E5215727E5217A29E546
:202FA000F5C3652FB7CDAE2FCD0513C3652FE5D5C5F5CCF429F1C4202AC1D1E1C9C8F5CD06
:202FC000641DF5E42E28F1ECB22EF13DC9D5E5F5CD641DF5E45E27F1ECB22DF1E1D13CC9CE
:202FE000D5788947C5E57ED630F5CD641DF219302A040C11CD0CCDCD43D21530545D2929ED
:203000001929F14F097CB7FA133022040CE1C1D1C3F92E79F5CD112A37D235300174941128
:203020000024CD0629F23230CD2E28F1CD4830C30D30CD2A2ACDB22ECDF428F1CD5428CD05
:203040002A2ACD262CC30D30CD9928CD5428C1D1C388257BFE0AD262300707830786D63019
:203060005FFA1E7FC3582FE521060CCD641DE277303A130CC3783079AE17E1C39E30F1F1CB
:203080003A060C17C39E30F13A080C2F17C39E3079C397303A130C17216205229C07E5C5BC
:2030A000D5F5F52AB90A7CB5C2CB3021090C7EB7CAB8303DC2CB30342A9C07CD792432655D
:2030C0000A3E0DCD83243E0ACD8324F121040C110A31D2D830110E31CDC328CD641DDAEA09
:2030E0003021000C110E31CDC3282AB90A7CB52A9C07110905EB229C07CA0531CDCD43CA0A
:20310000DB0CC3CC0CF1D1C1E1C9FFFF7FFFFFFFFFFFE521400CCD2347E1012247C5CDDC46
:2031200029AFCDB231B6C34631AFCDB231E608CA3431362BEBCD8628EBF24631362DC5E573
:20314000CD6B28E1C1B42336303A9D0A57173A670ADAD732CACF32FE04D2BB31010000CDFA
:20316000BA3521160C460E203A9D0A5FE620CA7F3178B90E2AC27F317BE604C27F31417185
:20318000CD0513CA9F31FE45CA9F31FE44CA9F31FE30CA7F31FE2CCA7F31FE2EC2A2312BBF
:2031A00036307BE610CAAB312B36247BE604C02B70C9329D0A21160C3620C9CD9928EB2AA6
:2031C000000CE52A020CE5EBF5AF320B0CF1F5CD663206450E00E57EB8CA0732FE3AD2E756
:2031E00031FE30DAE7310C237EB7C2D8313E44B847E10E00C2D631F1C1D1EB22000C6069B1
:2032000022020CEBC1D1C9C50600237EFE2BCA4E32FE2DCA2532D6304F7887878087814763
:20322000FE10D24E32237EB7C20C3260C178FE45C243327984FE09E1D2F7313E80320B0CDD
:20324000C353327C81FE12E1D2F731C33B32C1E1C3F731F1C1D1EB22000C606922020CEB01
:20326000C1D1CDA92823FE05E5DE00175714CD5C34010003F53A0B0CB7F28132F182C38BEF
:2032800032F182FA8F3214BAD28F323C473E02D602E1F5CDFB343630CCBE28CD22352B7E1B
:2032A000FE30CA9E32FE2EC4BE28F1CAD032F5CD641D3E228F7723F1362BF2C132362D2F1E
:2032C0003C062F04D60AD2C332C63A23702377233600EB21160CC923C5FE047AD251331F7C
:2032E000DAEE33010306CDF334D17AD605F4CF34CDBA357BB7CC1F283DF4CF34E5CD62313E
:20330000E1CA06337023360021150C233ABC0A9592C87EFE20CA0B33FE2ACA0B332BE5F5D3
:20332000011F33C5CD0513FE2DC8FE2BC8FE24C8C1FE30C2493323CD0513D249332B012BE8
:2033400077F1CA3F33C1C30C33F1CA4933E13625C9E51FDAF533CA6D33111136CD432916B3
:2033600010FA7B33E1C1CD29312B3625C9010EB611CA1BCD0629F264331606CD4528C45CC7
:2033800034E1C1FAA033C55F789293F4CF34CDE634CD2235B3C4DF34B3C40E35D1C3F332CA
:2033A0005F79B7C4CB2F83FAAB33AFC5F5FCCD2FFAAD33C17B90C15F8278FAC9339293F435
:2033C000CF34C5CDE634C3DA33CDCF3479CD12354FAF9293CDCF34C5474FCD2235C1B1C26B
:2033E000E5332ABC0A833DF4CF3450C3FC32E5D5CD112AD1AFCAFB331E10011E06CD452806
:2034000037C45C34E1C1F579B7F5C4CB2F804F7AE604FE019F57814F93F5C5FCCD2FFA1B55
:2034200034C1F1C5F5FA2934AF2F3C803C82470E00CD2235F1F4D834CD0E35C1F1C24C34CF
:20344000CD1F287EFE2EC4BE2822BC0AF1DA5334839092C5CDAE32EBD1C3FC32D5AFF5CDC0
:20346000641DE280343A070CFE91D2803411F135210D0CCDC928CD642DF1D60AF5C3653424
:20348000CDB234CD641DEA953401439111F94FCD0629C39B3411F935CD4329F2AE34F1CDB2
:2034A000BE2FF5C38334F1CDCD2FF5CDB234F1B7D1C9CD641DEAC43401749411F823CD06D4
:2034C00029C3CA34110136CD4329E1F2A634E9B7C83D363023C3D034C2DF34C8CD0E3536FC
:2034E00030233DC3DB347B823C473CD603D2EB34C6054F3A9D0AE640C04FC905F20F35228E
:20350000BC0A362E23363004C204352348C905C21A35362E22BC0A2348C90DC0362C230ECF
:2035200003C9D5CD641DE27135C5E5CDF428210936CDEE28CD262CAFCDCF2AE1C1111936A8
:203540003E0ACD0E35C5F5E5D5062F04E1E53E9ECDFF2CD24B35E13E8ECDFF2CEBE1702376
:20356000F1C13DC24235C5E521000CCDA628C37E35C5E5CD79253E01CD422ACDA928E1C16E
:20358000AF115F363FCD0E35C5F5E5D5CDB428E1062F047B965F237A9E5723799E4F2B2B6F
:2035A000D29235CD422623CDA928EBE17023F1C1DA843513133E04C3C035D51165363E05F4
:2035C000CD0E35C5F5E5EB4E2346C523E3EB2A040C062F047D936F7C9A67D2D3351922045C
:2035E0000CD1E17023F1C13DC2C035CD0E3577D1C900000000F90215A2E1FF9F31A95F63E6
:20360000B2FEFF03BFC91B0EB60000000000000080000004BFC91B0EB60080C6A47E8D03AE
:2036200000407A10F35A0000A0724E1809000010A5D4E8000000E8764817000000E40B5481
:2036400002000000CA9A3B00000000E1F5050000008096980000000040420F00000000A00F
:2036600086011027001027E80364000A000100AF47C20601C5CDDB22C111150CD5AF12051F
:20368000040E06CA8E360E04298F298F298F298FB7C29F36793DCA9F361AB7CAAB36AFC6FE
:2036A00030FE3ADAA836C607121312AF0DCAB8360504CA8A36C3883612E1C9217428E3E919
:2036C000CD9928210D36CDA628C3CF36CDF429C1D1217225E53E0132090CCD452878CA2B4F
:2036E00037F2E836B7CA9730B7CAF025D5C579F67FCDB428F21337F53A070CFE99DA04374A
:20370000F1C31337F1D5C5CD8D2AC1D1F5CD0629E17C1FE122060CE122040CDCBB36CC7468
:2037200028D5C5CDBD26C1D1CD0327013881113BAACD03273A070CFE88D26037FE68DA72F9
:2037400037CD9928CD8D2AC681C1D1CA6337F5CD8525217B37CDA737C11100004AC30327F0
:20376000CD99283A060CB7F26F37F1F1C3EF25C37E30010081110000C3A928077C885974F7
:20378000E0972677C41D1E7A5E50637C1AFE757E1872318000000081CD992811952BD5E52F
:2037A000CDB428CD0327E1CD99287E23CDA62806F1C1D13DC8D5C5F5E5CD0327E1CDB72838
:2037C000E5CD8825E1C3B03752C74F80CD0513E5219726CDA628CDDD37E1C3362ACD4528B5
:2037E000214838FA3E38216938CDA628214838C886E6070600772387874F09CDB728CD03FD
:20380000273A47383CE6030600FE018832473821693887874F09CD7C25CDB4287B59EE4F15
:203820004F36802B463680214638347ED6ABC23538770C151CCDDA25216938C3C028772BCC
:20384000772B77C31938000000354ACA99391C76982295B3980ADD479853D199990A1A9F15
:203860009865BCCD98D6773E9852C74F8068B1466899E9926910D1756821FF38CD7C253A1D
:20388000070CFE77D83A060CB7F29538E67F32060C117428D501227E1183F9CD0327CD9950
:2038A00028CD8D2AC1D1CD852501007F110000CD0629FAD93801807F110000CD88250180AF
:2038C00080110000CD8825CD4528F4742801007F110000CD8825CD74283A060CB7F5F2E6CF
:2038E00038EE8032060C210739CD9837F1F03A060CEE8032060CC90000000083F9227EDB42
:203900000F49810000007F05FBD71E866526998758342387E15DA586DB0F4983CD9928CD79
:203920007F38C1E1CD9928EBCDA928CD7938C36727CD4528FCBB36FC74283A070CFE81DAE3
:203940004E390100815159CD6927218225E5215839CD983721FF38C9094AD73B78026E846A
:203960007BFEC12F7C74319A7D843D5A7DC87F917EE4BB4C7E6CAAAA7F000000812BCD0592
:2039800013C8CDD3432C017D39C5F6AF32660A4ECD0345DAC90CAF4732C507237EFE2EDACD
:2039A000E339CAB539FE3AD2AF39FE30D2B539CD0445DAE33947C506FF11C507F6800412CD
:2039C00013237EFE3AD2CD39FE30D2BC39CD0445D2BC39FE2ECABC3978FE27D2C90CC1322F
:2039E000C5077EFE26D2FF39110D3AD51602FE25C814FE24C814FE21C81608FE23C8F179B5
:203A0000E67F5F1600E521890A1956E12B7A32670ACD05133AA50A3DCA923BF2293A7ED650
:203A200028CA163BD633CA163BAF32A50AE53AB70BB732B40BCA7D3A2AE60A11E80A19222D
:203A4000B50BEBC3633A1A6F131A13B9C25B3A3A670ABDC25B3A1AB8CAE53A131A26008530
:203A60003C6F19EB3AB50BBBC2463A3AB60BBAC2463A3AB40BB7CA923AAF32B40B2AC40ACB
:203A800022B50B2AC20AC3633ACD8B39C9575FC1E3C9E1E3D5118C3ACDCD43CA8D3A114D35
:203AA0001CCDCD43D1CA003BE3E5C53A670A473AC507803C4FC506000303032AC60AE509EB
:203AC000C1E5CDB642E122C60A606922C40A2B3600CDCD43C2CE3AD17223D1732372CDA338
:203AE0003CEB13E1C9133AC507671ABCC25C3AB7C2F63A13E1C9EBCDB83CEBC25D3AE1C934
:203B000032070C676F22040CCD641DC2143B21440C22040CE1C9E52A660AE357D5C511C583
:203B2000071AB7CA583BEBC6021F4FCDC742794E234623C53DC22F3BE53AC507F5EBCD112F
:203B400014F122EC07E1C6021FC12B702B713DC2493B2AEC07C35F3BCD1114AF32C5073AB5
:203B6000C60BB7CA6C3B7AB3CAD63B1BC1F1EBE3E5EB3C577EFE2CCA1C3BFE29CA843BFECF
:203B80005DC2C90CCD051322BC0AE122660A1E00D511E5F52AC40A3E19EB2AC60AEBCDCD5A
:203BA00043CAF03B5E237E23B9C2B83B3A670ABBC2B83B7EB8CADC3B235E1C1600195E23BE
:203BC0005623C2983B3A660AB7C2D20CF1444DCA572796CA5D3C110900C3E30C233AC5071E
:203BE000BEC2B93B23B7CABE3B2BCDB83CC3BE3B3A670A77235F1600F1CA963C712370CDF4
:203C0000A33C234FCDC7422323229D0A71233A660A1779DA233CF53AC60BEE0B4F0600F128
:203C2000D2253CC10371F5237023CD052BF13DC2133CF5424BEB19DADD42CDEB4222C60ACA
:203C40002B3600CDCD43C2403C03572A9D0A5EEB2909EB2B2B73237223F1DA923C474F7E29
:203C60002316E15E235623E3F5CDCD43D2D63BCD052B19F13D444DC2623C3A670A444D29FE
:203C8000D604DA8A3C29CA8F3C29B7E28F3C09C109EB2ABC0AC9379FE1C97E23C506004FAD
:203CA00009C1C9C5D5F511C5071A47041A13237705C2AC3CF1D1C1C9D5C511C607472304F8
:203CC00005CAD23C1A13BE23CAC03C783DC49C3CAF3DC1D1C9328A072AB30AB4A53CEBC8A9
:203CE000C3E73CCD1D14C0E1EB22B50AEBCDF80ED2CC14606923234E234623C5CDE620E1A1
:203D0000E57CA53C3E21CCD640C41A313E20CDD640216209E50EFF0C7E23B7C2173DE147B0
:203D20001600CDF541B7CA223DCD5B1CD630DA413DFE0AD2413D5F7A070782078357C32261
:203D40003DE521203DE31514C24C3D14FED8CABA3EFE4FCAC93EFEDDCAD73EFEF0CAA83D4B
:203D6000FE31DA673DD620FE21CAEC3EFE1CCAE23DFE23CABB3DFE19CA3E3EFE14CAEC3D45
:203D8000FE13CA093EFE15CADA3EFE28CA393EFE1BCAB53DFE18CA363EFE113E07C2D64050
:203DA000C1D1CD2142C3E83C7EB7C804CDA5422315C2A83DC9E521033EE337F5CDF5415F45
:203DC000F1F5DC033E7EB7CAE03DCDA542F1F5DC813EDAD73D23047EBBC2C53D15C2C53DA4
:203DE000F1C9CDDC20CD2142C1C3FF3C7EB7C83E5CCDA5427EB7CA033ECDA542CD813E1571
:203E0000C2F43D3E5CCDD640C97EB7C8CDF541FE20D22B3EFE0ACA2B3EFE07CA2B3EFE0996
:203E2000CA2B3E3E07CDD640C30C3E77CDA542230415C2093EC936004816FFCDA83DCDF5DA
:203E400041FE7FCA713EFE08CA733EFE0DCAD73EFE1BC8FE08CA733EFE0ACA913EFE07CAEE
:203E6000913EFE09CA913EFE20DA3E3EFE5FC2913E3E5F0504CA993ECDA5422B05113E3EB9
:203E8000D5E50D7EB737CA5727237E2B7723C3833EF579FEFFDAA13EF13E07CDD640C33E7F
:203EA0003E900C04C5EB6F260019444D23CDB942C1F177CDA54223C39E3E78B7C82B3E0843
:203EC000CDA5420515C2C93EC978B7C8052B7ECDA54215C2C93EC9CDDC20CD2142C1D17A7D
:203EE000A33C216109C837F523C3140EC1D17AA33CCA1C42C3870DCD031ACD3B2ACDD343F3
:203F00003BEB2A040CC3113F3AA60AB7CA1B3FD1EBE5AF32A60A3CF5D546B0CA1814237EA4
:203F200023666FC3453F58E50E027E23FE5CCA9140FE20C23B3F0C05C22A3FE1433E5CCD3E
:203F4000CC40CDD640AF5F57CDCC40577E23FE21CA8E40FE23CAA13FFE26CA894005CA67CD
:203F600040FE2B3E08CA483F2B7E23FE2ECAC03FFE5FCA7D40FE5CCA263FBEC23F3FFE24F3
:203F8000CA9A3FFE2AC23F3F7823FE02DA923F7EFE243E20C29E3F051CFEAFC610231C82CE
:203FA000571C0E0005CAF63F7E23FE2ECACB3FFE23CAA13FFE2CC2D73F7AF64057C3A13F64
:203FC0007EFE233E2EC23F3F0E01230C05CAF63F7E23FE23CACB3FD511F43FD5545DFE5EC3
:203FE000C0BEC023BEC023BEC02378D604D8D1D1471423CAEBD17A2B1CE608C216401D78F2
:20400000B7CA16407ED62DCA1140FEFEC216403E08C604825705E1F1CA7240C5D5CD021A5A
:20402000D1C1C5E5437881FE19D218147AF680CD2A31CD2347E12BCD051337CA4E4032A64C
:204040000AFE3BCA4B40FE2CC2C90CCD0513C1EBE1E5F5D57E902316005F7E23666F197839
:20406000B7C2453FC36D40CDCC40CDD640E1F1C2083FDC2142E3CDAB48E1C3E917CDCC40DD
:20408000057E23CDD640C35F400E00C392400E013EF105CDCC40E1F1CA7240C5CD021ACDAD
:2040A0003B2AC1C5E52A040C410E0078F578B7C44F49CD26472A040CF1B7CA354096473E39
:2040C000200405CA3540CDD640C3C240F57AB73E2BC4D640F1C9F5E5CD5446C26656E13AD3
:2040E0008D07B7CA5C41F1F5FE08C2FC403A8C07D601DAF840328C07F1C33741FE09C210A4
:20410000413E20CDD6403A8C07E607C20141F1C9F1F5D60DCA3341DA36413A8F073C3A8C7B
:2041200007CA2D41E5218F07BEE1CC4D41FEFFCA36413C328C07F1F5C5D5E54FCD0000E10A
:20414000D1C1F1C9AF328D073A8C07B7C83E0DCD37413E0ACD3741AF328C07C93A9307B76D
:20416000C25847F1C5F5FE08C27B413A650AB7CA8D413D32650A3E08C3AE41FE09C2904147
:204180003E20CDD6403A650AE607C28041F1C1C9FE20DAAE413A9007473A650A04CAA541EE
:2041A00005B8CC2142FEFFCAAE413C32650AF1C1F5F1F5C5D5E54FCD0000E1D1C1F1C9CD5E
:2041C0005446CAF541CDC257D0C5D5E5CD4D53E1D1C13AF30BB7C230503A9E07B7CAE74177
:2041E00021A012E5C33743E5C5D521450CCD2347D1C1AFE1C9C5D5E5CD0000E1D1C1E67F93
:20420000FE0FC03A9307B7CC41442F329307B7CA4144AFC93A650AB7C8C321423600216176
:20422000093E0DCDD6403E0ACDD640CD5446CA3342AFC93A8D07B7CA3F42AF328C07C9AF42
:2042400032650A3A88073DC8F5AFCDD640F1C34642C5D5E5CD0000E1D1C1B7C8CDF541FEED
:2042600013CCF541328907FE03CC4344C30144CD0513E5CD9942C28342CD0000B7CA8C42F6
:20428000CDF541F5CDB746F15FCDF84821440C22040C3E0332670AE1C93A8907B7C8F5AFE1
:2042A000328907F1C9CDD640FE0AC03E0DCDD640CD2B423E0AC9CDEB42C5E3C1CDCD437EA0
:2042C00002C80B2BC3BC42E52A760A060009093EC6956F3EFF9C67DADD4239E1D82A96077C
:2042E0002B2B22B10A110700C3E30CCDFF42D0C5D5E5CD6747E1D1C1CDFF42D0C3E542D5D9
:20430000EB2A9B0ACDCD43EBD1C93AC4074721A407AF045E2356231205C21343CD0D54AFB0
:20432000C02A9A07CD7D4432EC0B32AA0A32A90A7723772322C20A2A9A072B22A70A3AED5E
:204340000BB7C25843AF32C70B32C60B061A21CA0A36042305C2514311C837216938CDC359
:2043600028214638AF7723772377AF32BB0A6F6722B90A22C00A2A760A3AF30BB7C28343AE
:20438000229B0AAFCDE6432AC20A22C40A22C60A3AED0BB7CC0D54C12A96072B2B22B10A08
:2043A0002323F9217A0A22780ACD7225CD4441CDE917AF676F22E60A32B70B224E0B22BA10
:2043C0000B22E40A32A50AE5C52AA70AC97C92C07D93C97EE3BEC2E34323E3237EFE3AD036
:2043E000C30A13C3C90CEB2A9A07CAFB43EBCD2814E5CDF80E6069D1D2CC142B22C80AEB85
:20440000C9C03CC30C44C0F5CC0D54F122AF0A217A0A22780A21F6FFC12A9807E5F57DA432
:204420003CCA2D4422BE0A2AAF0A22C00AAF329307CD4441CD1442F1214A0CC2620DC3867A
:204440000D3E0FF5D603C24F44328D073293073E5ECDD640F1C640CDD640C321422AC00ADA
:204460007CB5111100CAE30CEB2ABE0AEBEB229807EBC9CD7520C03C328807C93EAF32FE03
:204480000BC9CD8B39D5E521F60BCDC9282AC40AE3CD641DF5CDD3432CCD8B39F147CD64F6
:2044A0001DB8C2E10CE3EBE52AC40ACDCD43C2C144D1E1E3D5CDC928E111F60BCDC928E16F
:2044C000C9C318143E0132A50ACD8B39C2C144E532A50A60690B0B0B0A0BB7FAD8440B0B04
:2044E00019EB2AC60ACDCD431A021303C2E5440B606922C60AE17EFE2CC0CD0513C3C44405
:20450000F1E1C97EFE41D8FE5B3FC9C33B43CA0B45FE2CCA2045CD14142BCD0513CA0B4537
:20452000CDD3432CCA0B45EB2A9607EBFE2CCA3445CD79452BCD0513D5CA8545CDD3432C35
:20454000CA8545CD79452BCD0513C2C90CE3E5214E00CDCD43D28245E1CD9745DA8245E5D8
:204560002AC20A01140009CDCD43D28245EB22760AE1229607E1C30B45CDD1227AB3CA18C1
:2045800014C9C3DD42E52A9607EB2A760A7B955F7A9C57E1C34D457D935F7C9A57C9F5F679
:2045A000AF32BF0BF111000022BD0BC48B3922A70ACD500CC2CF0CF9D55E235623E52ABDAF
:2045C0000BCDCD43C2CF0CE1D1D57EF523D57E23B7FAF945CDA628E3E53ABF0BB7C2E745C8
:2045E00021C00BCDA628AFC47C25E1CDC028E1CDB728E5CD0629C32F46232323234E2346A1
:2046000023E35E2356E569603ABF0BB7C215462AC00BC32046CD312B3A670AFE04CADB0C92
:20462000EBE1722B73E1D55E235623E3CD3329E1C190CDB728CA4146EB2298076960C39CDF
:2046400012F922B10A2AA70A7EFE2CC2A012CD0513CDA845E52A94077CB5E1C9CDA5487E1F
:20466000234E2346D1C5F5CDAC48F1575E234E2346E17BB2C87AD601D8AFBB3CD0151D0AE3
:2046800003BE23CA72463FC35028CD6F36C39946CD7236C39946CD2931CDC746CDA8480150
:2046A000FC48C57E23E5CD3C47E14E2346CDBC46E56FCD9B48D1C93E01CD3C4721980AE5DF
:2046C0007723732372E1C92B062250E50EFF237E0CB7CADD46BACADD46B8C2CE46FE22CC87
:2046E0000513E578FE2CC2F5460C0DCAF5462B7EFE20CAEA46E1E323EB79CDBC4611980A72
:204700003ED52A780A22040C3E0332670ACDC928119B0ACDCD4322780AE17EC0111000C3CC
:20472000E30C23CDC746CDA848CDB9281415C80ACDD640FE0DCC2B4203C32D47B70EF1F51B
:204740002AC60AEB2A9B0A2F4F06FF0923CDCD43DA5A47229B0A23EBF1C9F1110E00CAE352
:204760000CBFF5013E47C52A760A229B0A210000E52AC60AE5217A0AEB2A780AEBCDCD43D4
:20478000017847C21248214C0B22B80B2AC40A22B50B2AC20AEB2AB50BEBCDCD43CAB947A9
:2047A0007E232323F5CD9A3CF1FE03C2B247CD1348AF5F160019C395472AB80B5E23567A8B
:2047C000B32AC40ACADB47EB22B80B23235E235623EB1922B50BEBC39547C1EB2AC60AEB31
:2047E000CDCD43CA37487E23F52323CD9A3C4E234623F1E509FE03C2DA47229F0AE14E0677
:2048000000090923EB2A9F0AEBCDCD43CADB47010448C5AFB6235E235623C8444D2A9B0A35
:20482000CDCD436069D8E1E3CDCD43E3E56069D0C1F1F1E5D5C5C9D1E17CB5C82B462B4E78
:20484000E52B6E26000950592B444D2A9B0ACDB942E171237060692BC36A47C5E52A040C7E
:20486000E3CD931BE3CD3B2A7EE52A040CE586110F00DAE30CCDB946D1CDAC48E3CDAB48D3
:20488000E52A990AEBCD9348CD934821121AE3E5C3FD46E1E37E234E23466F2C2DC80A1248
:2048A0000313C39C48CD3B2A2A040CEBCDC648EBC0D550591B4E2A9B0ACDCD43C2C44847B6
:2048C00009229B0AE1C92A780A2B462B4E2BCDCD43C022780AC901D51DC5CDA548AF577E9D
:2048E000B7C901D51DC5CDDA48CA1814235E23561AC9CDB746CD78202A990A73C1C3FD4688
:20490000CD0513CDD34328CD7520D5CDD3432CCD021ACDD34329E3E5CD641DCA2449CD78DA
:2049200020C32749CDE648D1CD3049CD78203E20F57BCDB94647F10405CAFC482A990A7780
:204940002305C23F49C3FC48CDC149AFE34F3EE5E57EB8DA584978110E00C5CD3C47C1E11F
:20496000E52346236668060009444DCDBC466FCD9B48D1CDAC48C3FD46CDC149D1D51A90AB
:20498000C34C49EB7ECDC6490405CA1814C5CDE34AF1E3015049C53DBE0600D04F7E91BB9F
:2049A00047D843C9CDDA48CAD51D5F237E23666FE5194672E3C52BCD0513CDCA2EC1E170E4
:2049C000C9EBCDD34329C1D1C543C9CD0513CDFE19CD641D3E01F5CAED49F1CD7820B7CA92
:2049E0001814F5CDD3432CCD021ACD3B2ACDD3432CE52A040CE3CD021ACDD34329E5CDA50F
:204A000048EBC1E1F1C5015727C501D51DC5F5D5CDAB48D1F1473D4FBE3E00D01AB778C813
:204A20007E23462366680600099147C5D5E34E235E2356E1E5D5C51ABEC2554A130DCA4C23
:204A40004A2305C2374AD1D1C1D1AFC9E1D1D1C17894813CC9C1D1E12305C2344AC3494AEE
:204A6000CDD34328CD8B39CD3B2AE5D5EB235E23562AC60ACDCD43DA8D4A2A9A07CDCD4399
:204A8000D28D4AE1E5CDA346E1E5CDC928E1E3CDD3432CCD7520B7CA1814F57ECDE34AD549
:204AA000CDF719E5CDA548EBE1C1F147E3E5215727E379B7C87E90DA18143CB9DAC04A790D
:204AC000480D0600D5235E23666B0947D1EB4E237E23666FEB79B7C81A7713230DC805C2F8
:204AE000D84AC91EFFFE29CAF14ACDD3432CCD7520CDD34329C9CD641DC2024BCDA848CD55
:204B00006747EB2AC60AEB2A9B0AC3C21D3E3FCDD6403E20CDD640C3284BCDBF41FE01C241
:204B20007A4B3600C3384B70AF328907AF32E60BCDBF41FE01C26F4BCD214221FFFFC30027
:204B40003D3A9207B73E5C329207C2554B05CA274BCDD64004052BCA694B7ECDD640C31AB3
:204B60004B052BCDD640C21A4BCDD640CD21422162090601F5AF329207F14FFE7FCA414B88
:204B80003A9207B7CA904B3E5CCDD640AF32920779FE07CAFA4BFE03CC434437C8FE0DCA3A
:204BA0003B4CFE09CAFA4BFE0AC2B44B05CA284B04C3FA4BFE15CC4344CA284BFE08C2D204
:204BC0004B05CA304BCDD6403E20CDD6403E08C3624BFE18C2DC4B3E23C3694BFE12C2F5C8
:204BE0004BC5D5E53600CD2142216209CDDC20E1D1C1C31A4BFE20DA1A4B78B7C2184CE5FE
:204C00002A94077CB5E13E07CA1C4C216209CD2814EB229807C35F1179712304CDD640D608
:204C20000AC21A4B32650A3E0DCDD640CDBF41B7CA2C4CFE0DCA1A4BC37A4B3AE60BB7CA40
:204C40001C42AF77216109C9F53E0032E60BF1FE3BC032E60BC3051322A10ACDDD24CD05D1
:204C600013EBCDC14C3333C26F4C09F922B10A2A9807E52AA10AE5D5C3A14CC2C90CEBCD5E
:204C8000C14CC2EB4CF922B10AEB2A9807EBEB22C40BEB23235E2356237E23666F2298075B
:204CA000EBCD021AE5CD8628E1CAB54C01B40041C533C3A0122AC40B229807E1C1C1C3A031
:204CC00012210400397E23018200B9C2D54C01100009C3C54C01B400B9C0E57E23666FCD60
:204CE000CD43E1010600C809C3C54C111E00C3E30C3E8032A50ACD8B39E5EBCD641DCDEE2D
:204D000028CDDB2222E60B0E20CDC742D121C0FF39F9EB0E202BCD051322A70ACA5F4DCD68
:204D2000D34328C5D5CD8B39E373237223E3D1C17EFE2CC23D4D0DCD0513C3234DCDD3438B
:204D40002922A70A3E2191E13DCA5F4DD13DCA5F4DC13DCA5F4DC5E521020039444DE1E57E
:204D6000216A4DE3E52AE60BE3C92AB10AF92AA70AC3A012AF32ED0B32EE0B7E11C500BB8B
:204D8000C2874D32ED0B232BCD0513CD9452E521000022F40BE12BCD0513CA074ECDD34353
:204DA0002CFE2CCAB84DCD021AE5CDDB2222F40BE12BCD0513CA074ECDD3432C11AA00BB80
:204DC000CADB4DCDD34341CDD3434CCDD3434CCA4E4FCDD3432CBBC2C90CB7F532EE0BCDF3
:204DE0000513CDD80EC5CD3524C1D1C5606922F10BCDF80ED2004E545D22EF0BE1CDCD4341
:204E0000D21814F1C24E4F2A9807E52A9A072B237E23B6CACF4E235E2356EB229807EBCDE1
:204E20000513B7CA0F4EFE3ACA1F4E11B800BBCA3C4ECD0513CDEC142BC31F4ECD0513CA79
:204E4000224EE53E0132A50ACD893ACAA24E78F68047AFCD923B3E0032A50AC2684E7EFE02
:204E600028C26E4EF1C3BE4E7EFE28CA1814E1CD893A7AB3C28F4E78F68047118A4ED511F1
:204E80008C3AD53A670A57C3293A7AB3CA1814E5424B21B14EE50B0A0BB7FA974E0AF6807F
:204EA00002C932A50A7EFE28C26E4EE30B0BCD964EE12BCD0513CA224EFE28C2C84ECD057F
:204EC00013CDD34329CA224ECDD3432CC3424EE1229807EB2AC40AEB2AC20ACDCD43CA23E7
:204EE0004FE54E23237EB7F5E67F7723CD9A3C060009F1C1FADB4EC5CD074F2AC40A19221F
:204F0000C40AEBE1C3DB4EEB2AC60ACDCD431A021303C20B4F79955F789C571B0B60692212
:204F2000C60AC9EB2AC60AEBCDCD43CA4E4FE523237EB7F5E67F7723CD9A3C4E23462309EA
:204F4000F1C1FA284FC5CD074FEBE1C3284F2AC20AEB2AC40AEBCDCD43CA764F7E23232329
:204F6000F5CD9A3CF1FE03C26E4FCDAE4FAF5F160019C3514FC1EB2AC60AEBCDCD43CAD8AE
:204F80004F7E2323F523CD9A3C4E234623F1E509FE03C2754F229D0AE14E0600090923EBE5
:204FA0002A9D0AEBCDCD43CA764F019F4FC57E235E235623B7C8E52AC20ACDCD43E1D8E5A5
:204FC0002A9A07CDCD43E1D0E52B2B2BE5CDA346E10603CDCD28E1C9CD67472AC60A444D1B
:204FE000EB2AC20AEB2AC40A7D936F7C9A6722B80B2A9B0A22E80BCDB94260692B229B0AA5
:205000003AEE0BB7CA1B502AF10B444D2AEF0BCDA22222C40A22C60ACDAB0E3E0132F30B2E
:205020003AED0BB7C26D533AC407329F07C3B952AF32F30B32ED0B2AC20A444D2AB80B09D4
:2050400022C40A2A9B0A23EB2AE80B229B0ACDCD431A021303C24E500B606922C60AEB2A55
:20506000F40BEB2A9A072B7AB3CAA012CDF80ED2CC140B6069C3A012C3EC140E02CD0D51DB
:205080002BCD0513CADA50CD021AE5CD641DCACA50CD2931CDC7462A040C235E23561AFEBF
:2050A00020C2AA5013722B732B35CD2647E12BCD0513CADA50FE3BCABF50CDD3432C2BCD59
:2050C00005133E2CCDD640C387503E22CDD640CD26473E22CDD640C3AD50E52A94077CB576
:2050E000CA04517EFE03C20451CDC25C7D936F7C9A6711FEFF19D204513E20CDD6402B7CDE
:20510000B5C2F950E1CD2142C3E9170E01FE23C0C5CD2A51D1BBCA1E51FE03C2A00CCDD32A
:20512000432C5059EB229407EBC92BCD0513FE23CC0513CD021ACD78205F3AC407BBDAA6F9
:205140000C1600E521A40719194E23460AB7E1C9CD3A51212900FE03C25E5121B20009EB4D
:20516000C93E02013E04013E08F5CDAC1FF1CDB9462A990ACDF728C3FC483E01013E030110
:205180003E07F5CDA548F1BED218143C32670A237E23666FC3EE28CD641D018F1911202CC9
:2051A000C2BB515AC3BB51CD0B51CD8B39CD3B2A01E917C5D5011215AF575FF5C5E5CDC2B6
:2051C00057DAAC0CFE20C2CE511415C2BE51FE22C2E351477BFE2C78C2E3515058CDC257EF
:2051E000DA315221620906FF4F7AFE2279CA1C52FE0DE5CA5152E1FE0AC21C524F7BFE2CBD
:2052000079C48A52CDC257DA3152FE0DC21C527BFE20CA2B52FE2C3E0DCA2B52B7CA2B525D
:20522000BACA3152BBCA3152CD8A52CDC257D2E851E5FE22CA3C52FE20C26452CDC257DA12
:205240006452FE20CA3C52FE2CCA6452FE0DC25C52CDC257DA6452FE0ACA64522A94070139
:2052600028000934E136002161097BD620CA7852421600CDCB46E1C9CD641DF5CD0513F129
:20528000F5DCD12EF1D4CA2EE1C9B7C8772305C0C1C365521601AFC3FE58F6AFF5CD945292
:2052A0003AC407329F072BCD0513CABE52CDD3432CCDD34352C2C90CF1AF32C407F6F13296
:2052C0009E07218000360022A407CD21433A9F0732C4072AA20722A4072294072A9807232E
:2052E0007CA53CC2E952229807CDC257DAA20DFEFEC2FA5232EC0BC3FE523CC27F532A9A4A
:2053000007EB2A9B0A01AAFF09CDCD43EBDA5653CD48577723D2015322C20A3AEC0BB7C408
:20532000225DCDAB0E232322C20A21C4077E329F073600CD37433A9F0732C4073AF30BB7A9
:20534000C230503A9E07B7CA870DC3A012CDE917CD0656C3C943CD2143C3DD42C1CD945256
:205360002BCD0513CA6D53CD4D53C3C90CAF329E07CDC257DAA20D3CCAA00C3CCAA00C2A0B
:2053800094070128000934C3A20DE52A94077CB5114200C2E30CE1C3E5121602CD96522B28
:2053A000CD0513CAB653CDD3432CFE50CAD15CCDD34341C38920CD9223CD655D3EFFCD68CE
:2053C00056EB2AC20AEB2A9A07CDCD43CA4D537E23D5CD6856D1C3C9530106563AC407C2C4
:2053E000FC53E5C5F511EB53D5C5C9F1C13DF2E353E1C9C1E17EFE2CC0CD0513C57EFE23F9
:20540000CC0513CD7520E3E511F353D5E9D5C5AFCDD953C1D1AFC9CD2A51CAA60CD603C2BE
:20542000A00CEB21A900097E23666F22E60B210000226F5D7CEB11B200EB0947EB7EFE2C72
:20544000C0D5C5CD7220F5CDD34341CDD34353CD8B39CD3B2AF1C1E34FD5E52A6F5D0600E7
:2054600009226F5DEB2AE60BCDCD43DAB80CE1D1EB7123732372E1C33954F637F5CD8B3997
:20548000CD3B2AD5CDF719C1E3E5C5CDA54846E37E4FC5E5F5235E2356B7CAFC542A9A07F5
:2054A000CDCD43D2D7542AC20ACDCD43DAD7545916002AC60A19EB2A9B0ACDCD43DA1055E2
:2054C000F179CD3C47E1C1E3D5C5CDA548C1D1E3C5E523F5732372F1E1235E2356C1E12369
:2054E0007E23666F79B8D2EA5447904FF1D406550405CA01557E122313C3F154C1C1C1C1B4
:20550000C1DC0655E1C93E200C0DC81213C30955F1E1C1E3EBC22155C578CDB946CDFD46B2
:20552000C1E3C5E5C3C154CD0513CDD34324CDD34328CD7520D57EFE2CC24B55CD0513CD5B
:205540002A51FE02CAA00CCD2251AFF5CDD34329F1E3F57DB7CA1814E5CDB946EBC1F1F534
:20556000CA8555CD9942C26C55CDF541FE03CA7E5577230DC25E55F1CDE917C3FD462AB100
:205580000AF9C31944CDC257DAAC0CC37155CD3651CAA60CFE02CAA00C212700097EB7CA51
:2055A000C3550AFE03CAC355237EB7C2B855C56069CD7D57C1C399553E80964F0600092349
:2055C0007ED61AD6019FC37F2850591321270009C5AF77CDB1573A2108CD9E5AFEFFCABB06
:2055E0000C3DCA9D0C3DC2F555D1AF120E1013CD0500C39A0C3CCABB0CC1212500095E234A
:205600005613722B73C9CD3951CA3656C50A505913D5FE02C22C56212356E5E560693E1A72
:20562000C37956212700097EB7C4CC55D1CDB1570E10CD0500C11629AF020315C23956C9F4
:20564000CD3651CAA60CFE03212600C2515621AE00097E2B6EC3D71DCD3651CAA60C211022
:2056600000097EC3D51DE1F1E5F52A94077EFE01CA0045FE03CA655CF1D5C5444DF511271C
:2056800000197EFE80E5CCC955E1344E060023F1F556FE0D70CA9D56C6E07A887709F1C14C
:2056A000D177E1C91B2B732372233680233680E1E3444DE53A1F08B7CAC8562122000973FF
:2056C0002372233600C30D57210D00097B177A1756BACA0557D5F5E5C51180000E1ACD0526
:2056E00000D1D5130E10CD0500D1E1F177D5130E0FD5CD0500D13CC203570E16CD05003CE0
:20570000CABB0CC1D1212100097BE67F77E13AA007B7C21A57CD7D57E1C9212100097EFE06
:205720007FF511800021290009D5E5CC3B57CDC955D1E1F1CC3B57E1C3E917C506807E237D
:20574000121305C23E57C1C9C5E52A94077EFE03CA965C012800097EB7CA68572B7E2335A3
:20576000964F097EB7E1C1C92B7EB7CA7457CD7A57C24A5737E1C13E1AC92A9407D5545D60
:2057800013012500094E2346032B7123702323E50E802336000DC29257CDB1573A2008CD10
:2057A0009E5AB73E00C2AA573E80E1772B77B7D1C9C5D5E521280019EB0E1ACD0500E1D1B8
:2057C000C1C9CD4857D8FE1A373FC0C5E52A940701270009360023360037E1C1C9CD021AF3
:2057E000E5CDA5487EB7CAB20CF5235E23666B5FFE02DA00584E237E1DFE3ACA04582B1CA1
:205800002B1C0E401DCA625879E6DFD640DA6258FE1BD2625801FE070203160B231DFA520D
:20582000587EFE2EC23058CD3E58F137F5C31C5802032315C21D58AF320A08F1E1C97AFEEB
:205840000BCA6258FE03DA6258C83E20020315C33E581415CA37583E20020315C25758C35D
:205860003758C3B20CCDDD57E51180000E1ACD050011FE070E0FCD05003CCAA30C21EE07D7
:2058800011FE07060C1A77231305C28558E1CDD34341CDD34353CDDD57E53AFE0721EE07FF
:2058A000BEC2181411FE070E0FCD05003CC2BE0C0E1711EE07CD0500E1C901E917C5CD0233
:2058C0001AE5CDA5487EB7CAA00C234E23460AE6DF1602FE4FCAE6581601FE49CAE65816D2
:2058E00003FE52C2A00CE1CDD3432CD5FE23CC0513CD7520CDD3432C7BB7CAA60CD15FD5F9
:20590000CD3951C2AF0CD1C5D5CDDD57D1C1C5F57ACDCD5AF122A70ADA31597BB7C23159E7
:205920002107087EFE20C231593642233641233653E17AF5229407E52311FE070E0C1A77BB
:2059400013230DC23E59AF771114001977D1D513CDB157E1F1F5E5FE02C26F59D50E13CD49
:205960000500D10E16CD05003CCABB0CC385590E0FCD05003CC28559D1F1F5D5FE03C2A330
:205980000C13C36359D1F112D521250019AF77237723772377E17EFE03CAA859FE01C2C9B8
:2059A00043CD7A572AA70AC9012900090E8070230DC2AE59C3C943C0CD0D54C30000C0E513
:2059C000CD0D540E19CD0500F50E0DCD0500F15F0E0ECD0500E1C9CDDD57E51180000E1A37
:2059E000CD050011FE07D50E0FCD05003CD1D5F50E10CAF859CD0500F1D1CAA30C0E13CDF0
:205A00000500E1C9C2145AE521FE073600230E0BCD965AE1C4DD57AF320A08E521FF070E87
:205A200008CD925A2107080E03CD925A1180000E1ACD050011FE070E11CD0500FEFFCAA3AF
:205A40000CE60387878787874F0600218100090E0B7E23CDD64079FE04C2675A7EFE20CAAD
:205A6000645A3E2ECDD6400DC2515A3A650AC60D573A9007BADA805A3E20CDD640CDD64069
:205A8000DC214211FE070E12CD0500FEFFC2415AE1C97EFE2AC0363F230DC2965AC9D54F11
:205AA000C5CD0500C1D1F52121001934C2B65A2334C2B65A233479FE22C2CB5AF1B7C8FEF9
:205AC00005CABB0CFE033E01C83CC9F1C9FE03C02BCD0513D5118000CAE05AC5CD1114C1B6
:205AE000E52AEA0BCDCD43DA181421A90009732372AF1E0723771DC2F45AE1D1C9F6AF32F7
:205B0000755DCD2A51FE03C2A00CC5E521AD00095E235613E37EFE2CCC11142BCD0513C243
:205B2000C90CE37AB3CAB50C2B7323721BE1C1E5C521B00009AF77237721A900097E2366E7
:205B40006FEBD5E5218000CDCD43E1C2545B110000C3925B424B3E10EB210000E529E3D2F6
:205B6000675B2923C3685B29E3EB29EBD2765B09E3D2755B23E33DC25D5B7DE67F5F160041
:205B8000C17D6C6129DA181417D28D5B2378B7C21814226F5DE1C1E521B2000922715D2158
:205BA0002900091922735DE1E52180007D936F7C9A67D1D5CDCD43DABC5B626B3A755DB741
:205BC000CA025C118000CDCD43D2D15BE5CD205CE1C5444DEB2A735DEB2A715DCD585C2261
:205BE000715D5059C1CD1F5C2A6F5D23226F5DE17D936F7C9A677CB5110000E5C29F5BE17D
:205C0000E1C9E5CD205CE1C5444DEB2A715DEB2A735DCD585CEB22715D5059C1C3E85BF6EB
:205C2000AF32A007C5D5E5EB2A6F5DEB21AB0009E57E23666F13CDCD43E1732372C2475C23
:205C40003AA007B7CA545C21545CE5C5E521260009C3A456E1D1C1C9C57E1223130B78B1CA
:205C6000C2595CC1C9F1D5C5F5444DCDC45CCA935CCDB95C21B1000919F177F521280009E7
:205C8000563600FE0DCA8E5CC6E07ACE0077F1C1D1E1C9C3B80CD5CDC25CCA935CCDB95C45
:205CA00021B10009197EB7D1E1C1C921A900C3B45C21B000095E2356C91321B000097323E5
:205CC00072C9444DCDB15CD5CDAB5CEBD1CDCD43C9CD051322A70ACD9223CDE85C3EFECDBF
:205CE000BE53CD225DC3C943010B0D2A9A07EB2AC20ACDCD43C82158397D816F7CCE00673E
:205D00001A90AEF52107397D806F7CCE0067F1AE8112130DC2195D0E0B05C2EF5C060DC32D
:205D2000EF5C010B0D2A9A07EB2AC20ACDCD43C82107397D806F7CCE00671A91AEF5215869
:205D4000397D816F7CCE0067F1AE8012130DC2535D0E0B05C2295D060DC3295DE52A9807B9
:205D60007CA5E13CC0F53AEC0BB7C21814F1C900000000000000CD0A432A9A072B36002A30
:205D80009F0A7EB7C29A52C3870DFEE0DA9C5DFEE8D29C5DD6E011B15DC3A95DD681DA18D7
:205DA00015FE4CD2E21F110701074F0600EBC3FF12C15DEF5D385E095E125E2C5EDC5D598A
:205DC0005ECD645ECD8B5E1B36301B36007AF630CDB241EB21000022075EEBC9CD8B5E1BD6
:205DE0003000E52A075EEBCD6E5EEBE1C39C16CD5A5ECD8B5E1B38007BE6075F7AE60787F7
:205E00008787B3CDB241C90000CD5A5EEB22075EEBC9CD5A5ECD8B5E1B3200E52A075EEBA6
:205E200022075ECD6E5EEBCD6E5EE1C9CD5A5ECD8B5E1B3100C31B5ECD645ECD8B5E1B34BD
:205E4000007AE607C630CDB241C9F5CD8B5E1B36311B380100F1C38920C9CD7520326D5E56
:205E6000CDD3432CCD7520573A6D5E5FC9007BCD735E7AF50F0F0F0FCD7C5EF1CD825EC361
:205E8000B241E60FC69027CE4027C9E37EB7CA985ECDB24123C38C5E23E3C919022A022BF6
:205EA0000271029A02BF02D502ED02F2020E030F0314034803610374038A03A203A303E539
:205EC000031E04390442044C046404680469040000213F61F9AF32EC0B229607F9212208F4
:205EE000363ACD974332650A22B10A2A0100010400095E2356EB227A4222554222A212EBBA
:205F000023235E2356EB22F941EB23235E2356EB22B841EB23235E2356EB223D410E0CCD95
:205F20000500321F08B7211415CA2F5F21212222200821FEFF229807AF32930732640A32D0
:205F4000F30B32ED0B328A07210000228C0721800022EA0B217A0A22780A21E40A224C0BF7
:205F60002A060022760A3E0332C407211960229F0A3A1A60B7C21B603C321A602180007EFD
:205F8000B7229F0ACA1B6046237E2B77232305C2895F2B3600229F0A217F00CD0513B7CA8A
:205FA0001B60FE2FCABD5F2B3622229F0A23FE2FCABD5FCD0513B7C2AE5FC31B603600CD23
:205FC0000513CD5A1CFE53CA0760FE4DF5CAD55FFE46C2C90CCD0513CDD3433ACD641CF18B
:205FE000CAF45F7AB7C218147BFE10D2181432C407C3F95FEB22760AEB2BCD0513CA1B60F9
:20600000CDD3432FC3C25FCD0513CDD3433ACD641CEB22EA0BEBC3F95F00002B2A760A2B33
:2060200022760A2BE53AC40721CF5E22A20711A40732C4073C01A900EB73237223EB09E502
:206040002AEA0B01B20009444DE13DC2386023229A0722B10AD17B956F7A9C67DADD4206CD
:2060600003B77C1F677D1F6F05C261607CFE02DA75602100027B956F7A9C67DADD422276F6
:206080000AEB229607229B0AF922B10A2A9A07EBCDEB427D936F7C9A672B2BE521DF60CD9B
:2060A0002347E1CD1A3121D360CD234721234722980DCD2142217F0CC3765D0D0A0A4F7747
:2060C0006E6564206279204D6963726F736F66740D0A002042797465732066726565000DAB
:2060E0000A42415349432D383020522E352F3234300D0A00007AFDFD1210EDED1212FDFD60
:00000001FF

514
hex/pw.hex Normal file
View File

@ -0,0 +1,514 @@
:020000040000FA
:20010000C3C7021A02100B3D2E7E3D1B01FFFF20A9B9000000000000FF0001E5FF7F010AEC
:20012000002A010054212E01467E0F77BE70C23801237CBAC22801C91E3F0E02C30500FF3C
:20014000C9FFFFFFFFFFFFFFC32404FFFFFFFFFFC32904FFFFFFFFFFC3D304FFFFFFFFFF77
:20016000000F0200010000FF4800018100FFFF00001B290000000000001B2800000000001F
:200180003EC606962E00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB
:2001A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
:2001C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4420434F50592052204520542054582059
:2001E00054482054412052554E20455849542053495A4520434845434B2053544154205595
:20020000205855205445535420534554205344205353205352205357205245434C41494D7C
:20022000204449534B2047524F5550204C4F47205245534554204453205350454544205366
:20024000415645204C4F41442052454144205752495445205245414447522057524954451B
:200260004752204455204455582044554820445541204D4F56452046494C4C20434D20535F
:200280004541524348204A5020455820474F20555231205552322055523320555234205375
:2002A0004F52542050415353203F2000000000000000000000000000000000000000000073
:2002C0001B36311B38302411C0020E09CD0500C31003000000000000000000000000000063
:2002E0000000000000000000000000000000000001505720202000000000000000000000F6
:20030000C3C537C32038C3EF38C303368A3B8A3B21000039221001318A3B2A06002E00E5CD
:200320003A6D01B7CA31035F3CC22E031E087C93672218133A1501B7CA3E033219133A1728
:2003400001B7CA5F033200004F3EFF914F3E389116005F3EC312212904137D12137C12AF4C
:2003600032E004676F22A82C0E0CCD05007D3267047CB532BD0DF532971032AA0ECA8A0359
:200380001EFFCD0133F68032AA0E2A01001103001922CC3719222438191919191922B63244
:2003A0001922E7301922373219224527191922B8331922C933F11919222D27E1C2D20332E7
:2003C0006701E5110F0019222D27E1111A00192228272A0E0323EB21800046783277052312
:2003E0003A5D00FE20C4BC37EB36202336003A5C00B7CCBD35CD300E325C003275253A6AE3
:2004000001321D36B7FA2904B7C20F043A5C0032D03ACDC63111D03ACD1033CD9F31321D3F
:2004200036C329043EFF325C30318A3B3EFF3257393A5C306FCD4E303A7705B7C2D3043AE6
:200440001E01B7FAD304A5C2D304CD68380D0D09504F57455220332E3033206F6E20435006
:200460002F4DA0CD680C3E221F1F1F1FE63FC630CDEF383E2ECDEF383A6704E63FCDB42F5A
:20048000CD683820312F320D0D2020436F707972696768742028632920313938312C2031E6
:2004A00039383220627920504156454C204252454445520D09416C6C207269676874732032
:2004C00072657365727665642E2030312F30332F38338D318A3BCD610C3A0D013248343EF0
:2004E00000B7CAEF04325C003A16013DCC4E303A16013DC2FA042F325C30CDB70DCA140573
:200500003A8708B73A9710C4FE321EFFCD0133F6803297103A77053CCAA21F215D00060B0D
:20052000363F2305C220052A0E0322771E3EFF3267083C32C51D32370B32F910328215326D
:200540005109328708328508329F0832750E32E00432B70E32A61632681E32C52F32D01A3E
:2005600032E41E32D00F327C0032131C32141C3A5C003275254F3E00B7CA84053EFF3277E6
:2005800005C3D005CD6338AF320A3932203979CD8035CDB70DCAC7053AAA0EE67F4F3A970E
:2005A00010E67F47B7C2B405B9C2B4053A1C01B7CAC70578C5CD972FC179B8CAC705F5CD5B
:2005C0006838ADF1CD972F3A0701CDEF38CD03362A0E0323E5CD860CE1CDA80DCD782FCACB
:2005E0000106FE5BCA0106237ECD2A0E2BC208067ECD51303A5C0032752523CD782FC2089A
:2006000006AF327705C3D304E5060011D001AF322E067ECD1638EBBECA24064F7EE67FCDC6
:200620001638B979EBC29806FE20C28B063E00B7CAB1063E00B7C2B106CD6838090770614C
:200640007373776F726420726571756972656400AF323406CD792FE5118001CD7006CD68F8
:200660003809076261642070617373776F7264001AB7CA81060F0F0FEE97BEC01323C370BD
:20068000067EFE20C0323406C3D3041A07D29306322E062313C312061AB7CADD0D13FE2039
:2006A000C29806EBCD792FEBCADD0D04E1E5C30E06783C32EF14E5FE09C27507E52A1813ED
:2006C000222D1325257522EA06233620E1CD792FCA7507237ECD2A0ECC782FCA7507FE2055
:2006E000C2D306CD792FCA750711000013010000137E12B7CA6E07CD2A0EC20107CD782FA3
:200700002B23130CC3F1064E2346EBC5C9347622191B230D74250E13220F19221B5A201C7B
:200720000438207C291F7C2917B23910B81516A7260A8A1F2BEC1F2C17201ABC0D2ED31FE3
:200740002FD91F30DF1F31E51F215029225029255D2D264D2D24552D23452D274F2C280383
:200760002F29C42E2A682D32DB0A335006FF2AEA0671092370E1D1CD792FCADD07FE3DC2D8
:200780008E073A5C0032B70ECD782FCADD07237E2BCD2A0EC2DD073AE004B7C2A4073A5CC6
:2007A0000032E0047ECD300E325C003AEF14FE1ACABC0DCD4E3023CD782FCADD07FE3DC297
:2007C000DD07CD782F3A5C0032B70ECAD707237E2BCD2A0ECA8E073AE004325C00EB210D97
:2007E000073AEF14BE7E23CA070723233CC2E107EBCDB70DC204083AEF14FE12DA0408FED7
:2008000016DADD0DCD792FC4F321015C00C5C4AC2122362FE1060B237EFE3FCA220805C2EC
:200820001708326B0E3AEF14FE1ECA472BFE1DCAAD2BFE2DCA362CF5CD6338F1FE09CA50D6
:2008400008FE01CA5B08AF328708328508C3E008216500364323364F23364DCD8408CAE03A
:20086000087BB7CA97083EFF3C3267085F3A6101BB7BD28A083EFF3267083A8508B7CAD32D
:2008800004C35B083E001E00B3C932370BCDFE323A6708B7C2E0083A8508B7CAE0083E006D
:2008A0005F3C329F08325C003A4834B7CAB6083A6001B7C2DC08D50E18CD0500D10110009A
:2008C0000DFAD30422D108CD702F7804BBC2C008210000CD702FD29E08C3E008BBCAD30406
:2008E0002A0E0322771E21000022F40F22B709CD4E303E00B7C23F31115C001A32063BCDA5
:200900007B31CD3030545D21090019463AEF14234EFE14CA3C09FE15C2220978EEFF47C386
:200920003C0941FE12CA1B09FE13CA3C09FE09CA50093A6B0EFE3FC25009AF47DA9F093A2C
:200940006501B7FA4B097917DA9F097817DA9F093E00B7CA7309F5D511F6FF19E60F5F167B
:200960000019D1F17EFA6F0917DA9F09C3730917D29F092A771E060B133600233600231A94
:2009800077231305C27F0922771EEB2AB7092322B709291924EB2A1813CD2C2BDA5E2F2A6F
:2009A000771E36FF2336FFCDA731C202092A0E03237E3CCA82312128002322D8092A0E0364
:2009C000EB2A771E222F0A226A0A2323010D0073237223EB09EBE52100002B22D8097DB4B9
:2009E000E1C2CF092AB7092322560A2B7DB4CAF00A3A0401B7CAF00ACD702FB4CAF00A7DB2
:200A0000F6016F22460A2322590AEB2A460A7B956F7A9C6722430AEB2A460A19222C0A3E72
:200A20000DCD690AF2550A2A430AEB21290001923D2909EB29094E1AEB711223134E1AEBEE
:200A400071121128002101007B956F7A9C67FA550AB5C2140A112900212900237B957A9C01
:200A6000F2070A2A460AC3F80901923D2909EB2909EB4E2346EB5E2356EB5F0AFEFFC8E5B4
:200A8000D5110B00197ED1E1173E00CE00573A0401FE01CACB0AFE03CAB60AFE05D2CB0A90
:200AA000E5210B00097EE1173E00CE0092C03A0401FE02CACB0AE5C5160A7B925F230315F9
:200AC000C2BD0ACDCB0AC1E1C01E0A7EE67F570AE67FBA0323C01DC2CB0AC9CD792FFE30F8
:200AE000DABA3AFE3AD2BA3AD630320401C3D3042A560A29EB2A771E1922771ECD8408CA03
:200B0000050BCD63383AEF14FE01CA150B3A6B0EFE3FC2360E3A5C00CD80353A8708B7C2E7
:200B2000360B3A9710E67FC2380B3AAA0EE67FC2360B3A1C01B73E00F5C4972FCD7E35F193
:200B4000CA480BFE0ADCED383AEF14FE013A6401C2580BB7F2580B3CE67F32C52F2AF40F6F
:200B6000EB2AB709CD2C2BDA3C0E2AF40F29EB2A2F0A2323195E2356EBE52AF40F2322F448
:200B80000FE13AEF14FE01C29E0B3A0E01B7CAAD0BFA9E0BCD6838202020A0C3AD0BE52AA2
:200BA000F40F0E30CDED2FE13E3DCDEF38E5110A00197E32D60B233A7001B77E32E80BE108
:200BC000CAC70BB7FC680CB73E28FCEF38F4ED382323CD180C3E43B73E2AFCEF38FAF20B08
:200BE0003A7001B7C2E90B3E4FB73E29FCEF38F4ED38CD610CE5D52AB709EB2AF40FCD2C07
:200C00002BD1E1D23C0E3AC52F3D32C52FCA020B3E7CCDEF38C35D0BE5D1E5C13A6B01E6B2
:200C20000FCA390CE5D55F1600197E17DA370C2B7E173FD2370CAFD1E1F53E08CD510CF1D1
:200C40003E2ECA4C0C3E3ED24C0C3E3CCDEF383E03F57E1202CDEF38231303F13DC2510CB0
:200C6000C9E5217801C36C0CE5217001C5462305FA820CE5D5C55E0E02CD0500C1D1E1C3CA
:200C80006E0CC1E1AFC95E1C237E1DC8FE5BC2880CCD782FC8FE5DC801910CC5CD1638FE36
:200CA0002BCAD00CFE2DCAC90CFE22CA400DFE31DAFF0CFE3AD2FF0CE60F473A6401B7782F
:200CC000F2C50CF680326401C9CDD80C325109C9CDD80CC680C3CC0C237ECD16380E09FE12
:200CE00052CAFD0C0CFE53CAFD0C0CFE58CAFD0CFE31DABA3AFE39D2BA3AE60FC979C9E58B
:200D0000FE56CA9A0DFE52CA620DFE53CA5C0DFE54CA680DFE50CA560DFE55CA6E0DFE5807
:200D2000CA7A0DFE4DCA850DFE51CA940DFE24CA8E0DE1FE41D8FE45D0E60F3D326201C9DF
:200D4000237EFE22C8B72BC823FE0EF5CC6338F1C4EF38C3400D210501C3A30D216501C305
:200D6000A30D216301C3A30D216601C3A30DCDB70DCAA60D218708C3A50D3285083A5C0048
:200D800032E004E1C9216B017EC680C3A50D21F002C39D0D21F910C3A50D216701CDB70D94
:200DA000CAA50D7E2F77E1C93A0501B7C83C3220393E20320A39C93ABD0DB7C93E22FE16CF
:200DC000DADD0D3A5C00CD300E210100CDD30DC3D304293DC2D20DEB0E25C30500AF327700
:200DE00005CD68380907696E636F72726563742C20666F72206C697374206F6620636F6DE5
:200E00006D616E647320656E7465723AA0AF21D00123BEC2110E2B2B7EFE20C2170E237ECA
:200E2000B7CAD304CDEF38C31E0EFE3AC8FE3BC9E60FC03E10C921010022F40F3AEF14FE27
:200E400001C24D0ECD8408CAD304C35B082A771E2322771EE52AF40F2B7DB4E1C2710E2308
:200E6000360123363123362023773E4DFE3FC29F0ECDA80D3E50FE2AC2900E2A771E2336B7
:200E80000223363123362D233620233600C39F0ECD68380D73656C6563743FA0CD03362AF5
:200EA000771E237E2BB7CAD3043E8032681E3AEF14FE02C2480F3E00B7C2DC0ECD68380D92
:200EC0000D64657374696E6174696F6E20647269766520BACD1038FE0DCAD304CD300E3251
:200EE0002A3B5F215C005673D5CD4E30D13AF308B7C23F31727ABBC2660F3AF910B7C266D9
:200F00000F3A97105F3A681EBBC22A0FCD68380302636F707920746F2073616D6520647220
:200F20006976E5AF32B70EC3AE0ECD68380D2843296F7079206F7220284D296F7665BACDD2
:200F4000103832C51DC3660FF5AF322A3B32F910F1FE04C2660FCD68380D0745524153C5EC
:200F6000CD1B1CC2D304CD6338CDA80D3AEF14FE02C2770F320A393A2A3BB7C2810F3A0608
:200F80003BF5CD9E322A771E2323229D0FAF6F67320210220F10225610224A1021EA3DCD8E
:200FA000792F229D0FCA7C10110000EB1AD630A7FAE20FFE0A3FDACF0F1329E52929C1097B
:200FC0004F060009C3AC0F3EFF32D00FC3A80F3EFF3CC8EB237EB7CA7C10FE20C2D40FC30D
:200FE0009F0F3AD00F3CC83A681EB7FAEF0FC0EB1BE5D5212800CD2C2BD1E1229D0FDAD49C
:201000000F3E2DFE2DC21210EB23225610EB11270013CD792F7E320210FE2DC22F10CD78D3
:201020002F229D0FC22F10E52AF40F225610E1EB220F10EB136B6229EB2A2F0A195E2356D9
:20104000EB237E2BB6C25510E521270023224A10EBE17323722100007DB4CA9C0FEB2A0F71
:201060001023220F10E5CD2C2BE15D54DA34102B220F10210000225610C39C0F3A681EB749
:20108000FA8410C021000022291A2C22F40F2A2F0A232322771E3E80B7C4FE322A0E03CD5A
:2010A0006338010D00C3A91009237E563CCAD3042B5EE52AF40FE5CD2C2B7CB5D1E1C2A83D
:2010C0001023772B77E5EB2322F40FE13A2A3BB7CADC10CD8035CD6838183ABD3A5C00CD5E
:2010E0007B3511073B012B3B2323CD1C0C2E18AF021203132DC2F0103E00B7CA7611212BAB
:201100003B060B363F2305C20311CD6838096E6577206E616D65BACD03362A771E23CD78A8
:201120002FCA4311CDF321C23D11CD68380720426164206E616D650D0989C30A11012A3B32
:20114000CDAC21CD68380D20202020A011073B212B3B060B7EFE3FC25B111ACDEF384F1A10
:20116000B779F26711F68077132378FE043E2ECCEF3805C2541121333B11F43A0603CDBC4D
:20118000373AEF14FE03CA93113A6301B7C41B1CC2961011063B3AEF14FE18CA7419FE0BAF
:2011A000C4D6313A2A3BB7C2AD1C676F32C52F227B1F21F000223C1ECDC63111063B210FF8
:2011C0003B3AEF144FFE04CA441AFE0CCA6513FE0BCA601BFE03CA791AFE11CA7E1CFE14A1
:2011E000CA9B1CFE15CAA11C23FE13CA9B1CFE12CAA11CFE09C25713D5CD6338CD601BD1FF
:20120000CD10332A273BEB2AEA0624D5E5EB21FF123A7525324813065FCDBC37E1E52E16A2
:20122000360023742E2B362523742E3E36382374E1D1E5D525250E80CD401CD1CD2C2BDAE9
:201240005E2FAF32D01AE1257EB7C4782FCA6212237E2BCD2A0EC262127ECD300E326A1214
:2012600023233AEB063C470E803E0002CDAC21AF1E0502031DC27212CD782F0B237E2BCAC3
:201280008F12CD2A0EC28F127ECD300E022323CDAC21AF1E0502031DC2951221063B115CAE
:2012A00000CDBA373AF002B7FAE412C2B1123A752521D03A77112A3BD5CDBA37D1CD1033B8
:2012C000CD9F31C2E412CDAF3121F002545D06FF237E04B7C2D0127832F002CDC931CD858E
:2012E00035CDF131115C00CDD6312AEA062424F9210000E52AEA0624110001CDB01FE9D57E
:201300000E1ACD0500115C000E14CD0500D121800019EBB7CAFF122100B22E0025257E1190
:201320008000124723137E1205F224132100002E8025115C0006247E12231305C23713116D
:2013400080000E1ACD05001E001D0E0ECD0500C300013AFD3AB7C9CD68380D8D2A3C1E7D2D
:20136000E60F322F153AEF14B7F27113E67FC30F1411063BCD1132B7C2F6193AEF14FE0523
:20138000CA0414FE0CCA04143A0C01B7CA04143A263B3D6F26003AFA3A3C4FCD401C7B3263
:2013A000D1323AFB3A4F3A123BA14F4521163BCABC133E10B71F0DC2B413804705FACB1347
:2013C00023CD5213CABC1323C3BC137E5E320A34CD521357CAD91323567A320B34CDC632B6
:2013E000CD0827CD68380D0D8DCDF628CDED3821063B7ECD7B3523CD180CCDED387ECDB49E
:201400002FCD63382180003AEF14FE0CCA8815F5FE06CA1C14FE07CA1C14FE08CC8914F194
:20142000FE06CAC214FE07CAC214FE08CA3C14FE05CA3A153E0632EF14C30F147ECDA021BC
:20144000DABA14CD5015CD63143AEF14E67FFE06C23C147DE60FCABF143A18013DCCED3826
:20146000C33C143AEF14E67FFE06C83A18013DCA8514CDED383AEF14E67FFE07C285147D87
:20148000E603CCED387DE60FC0CD63383AEF14B7F2991422A82CC3A614E52A3C1ED5111073
:2014A0000019D1223C1ECDBA2FAF32C52FCD7E35CDED383AEF14B7F8E1C93E2EC34314CDE0
:2014C00089147EE5CDB42FE13AEF14E67FFE06CADB14CD5315CD6314C3C2143A18013DCAB0
:2014E000ED143CCCED387D3CE603CCED38233E1DB7F210151B7AB3C21015D57DE60FCA1689
:20150000157DEE10E60F2FE60F3C5F19D1C316157DE60FC2C2143A18013DC22615CD6838AB
:201520000D2D2D2D2DBACDED38D511F0FF191E00AF57322F1519D1C33C147EFE1ACA4615FE
:20154000CD5015C33A153AEF14B7F29610C3D304CDEF38233AEF14B7F26E15E52A7B1F2BCD
:20156000227B1F7CB5EBE1C022A82CC3D3043A8215B7C27D153A0601FE0DCAEC197DB7C077
:20158000E13E00B7C0C365137E32C52FE52A7B1F7CE680F5293AC52F856FF1CAA6157CEE2B
:2015A000A0677DEE976F227B1FE13AEF14B7C8CDC537CD5315C38815CD792FCD16383258E2
:2015C00016CD4E30CD68380305636865636B73756D202620746573748D3E8032E41E3D32CE
:2015E000A616CDBF26EB36FF2322B316115C00060B3A0A01131205C2F4150615AF320A3958
:20160000131205C20016115C00CD9F31CA2F16CD30303AD60BB7F229163A6500E67F3265E4
:2016200000115C000E1ECD0633115C00CDC131CDB70DCA40163A0A01EE803265003266004C
:20164000AF326800CDBF26AF32EF14676F227B1F223C1E3C32A6163E00FE53C26516220085
:201660002723220627CD122BDAA516CDFF263EFF32C52F3A0C01B7CA93163E2AF4EF38F2F7
:201680009316CDF6283E0DCDEF383A5139B73E0AFCEF38CDB033CDC537218000CD8815CD40
:2016A000C728D265163E00B7F26F17AF32A61632161721000022F816CD52133E08C2C11623
:2016C00087321C172AF8167E23B6CA6F171120002A0E037EFEE5CAE1163CCA973519C3D330
:2016E00016EBD5AF1213215D00061FCDBC37D121100019222817EB2100004E23CD5213CAE8
:201700000517462378B1CA4317CD5213791213CA15177812133E003C321617FE00C2FA16EB
:2017200022F8163AFB3A4F2100002B2B2B2B3A680081773C3268002323233680AF32161751
:20174000C3C4163A16174F3AFA3A3C470DCA541780C34C17FE81DA5B17E67F2A28172B7722
:201760002B2B2B3A6800DA6E174F3AFB3A89772A3C1E7DB4CA9917AF32E41ECD68380D732A
:201780006176E5CD1B1CC299173E0132E41ECDBF263EFF325C30CD4E30CD68380D0D051808
:2017A000071018000800009E1F8100C0200180008830808183C100022008F2200787E01993
:2017C0001C139F1903001800089F9F9E1E2000808013C0002180C6200787E0E0F21FF1E754
:2017E00081E1FC302000863CF0381FC0818020008781E1FC200086200086200086200787CC
:201800009F071C089F0307109F191C139F190300180008002000E02180C62007879F31049A
:2018200003109F04089F0810039F03009F0804089F919F09802000200787E0E008070000E6
:201840009F191C139FF20820C0C2380CC6200787E0E000081009E4F3E49F10070260810079
:20186000C10000102001C782200CC7FCCFFFE4008008C181C3C0881CC7202009C82073C769
:20188000983107800C2001C7C1C8043844C62009C82020C7C0062020C62009C8201FC7C8B2
:2018A00081FF80881CC63904C7982009C8200CC798108100C1CCCFFFC4001C3808C7810052
:2018C000C1CC9FFFC49900C03801C62000878100C100102043802000861C109820C7E22092
:2018E00000861CCCE3FFC4002003802018863801C6200787E009100F1C040820C0C23808B4
:20190000043E3532EF143AFA3A3C6F260054227B1F2AB3165ECD5213CA1D1923567BB2C2E1
:201920002519C3D304CDBD32CDFF26CDB0332A7B1F2B227B1F7DB4CA4019CDC728C32819B2
:201940002AB31623CD5213CA4B192322B316C30619218000CD9133CD6338CDF6280E02CDBF
:20196000C833B7CCB733B7C8CD683820027265706169F2C93E3F32123BCD9F31CD3030114E
:201980000C0019CDED387EE5CDB42FE1CD683820A0232323CD52130608C29E19061023CDE7
:2019A0005213CAB8195E23567BB2CAC919E5C5EBCDBA2FC1E1C3C2197EB7CAC919E5CDB4A5
:2019C0002FE1CDED3805C29E19CDA731CA9610F5CD68380D092020202020A03A6301B7F273
:2019E000E819CD68380909A0F1C37C19318A3BAF327915CDA80D3AEF14FE0CCA061ACD6831
:201A0000380D8DC39610CD683803636865636B73756D3AA02A7B1FE5CDBA2FCD68382020E2
:201A2000746F74616C3AA0D121085F1922291AE5CDBA2FCD683820206465633AA0E1CDDFF6
:201A40002FC396107EB7FA6731CDC131C396103AD01AB7C2AE1DCDB41DC36B1ACD683849FB
:201A60006C6C6567616C206E616DE5CD633821063B7E23CD7B35CD180C3A0F3BB7FA67310E
:201A8000CD6838203DA03AD01AB721E93BFAC61ACD68386E6577204E414D45BACD03362A00
:201AA000771E237EB7CA9610CD6338CD782FCDF32132D01AC2C61ACD2A0EC25C1ACD782F9D
:201AC000CDF321CA5C1A228B1A012A3BCDAC213E00FE3AC2DE1AF68032D01AC36E1AB7FA60
:201AE000F31A21063B7E23CD7B35CD180CCD6838203DA021073B11173B060BD5C5CDBC37CD
:201B0000212B3BC1D17EFE3FCA151B4F1AB779F2141BF680121ACDEF38231378FE043E2E8B
:201B2000CCEF3805C2051B11163B1A323A1B3A063B12AF32223BCD9F313E2812C24F1A3A83
:201B40006301B7F2571BCD6838202072656E616DE5CD1B1CC2961011063BCDD131C396106B
:201B600011063BCD10333E3F32123BCDB70DC2A91BCD7E3121000022273BC3981B3AFA3AEB
:201B80003C6F2600111000CD5E35EB2A273B1922273BCDA731CAAE1BCD3030110F00197EC3
:201BA000FE80CA7D1B5FC38B1B0E23CD06333AEF14FE0BC0CD683820AD2A273BE5CDDF2FBA
:201BC000CD68382081E10E08CD401C7BB7CAD11B23CD0E26174FC5CD401CC17BB7CAE11BBE
:201BE00023591600CD5E35E5110800CD5E35EB2A273BEBCD2C2BCDDF2FCD683820656D7065
:201C000074F9D1D52A131C1922131CE1CD9F26CDED38210000CD9F26C39610CDA80DCD68B6
:201C2000382028592F4E2920BFCD1038FE4EC2361CCD68386FA0FE59C0CD683865F3AFC901
:201C40001100004279B7C83DC8E57D916F7C9867DA591C13E3E1C3491CE1EBC9CD6838897E
:201C6000060B237EB73E2DF26C1C3E49CDEF3878FE043E2ECCEF3805C2621CC396102106ED
:201C80003B3A5109B7CA5C1C000000000000F5D5E60F5F160019D1F1FAA11C7EF680C3A45B
:201CA0001C7EE67F770E1ECD0633C396103A9710B73A681EC4FE32112A3BCD9F31CAC41D09
:201CC000CD30303AD60BB7FA67313A62013A6201B7CAC11DFE02C2AA1DCD6838200420653B
:201CE00078697374732C2028422961636B75702C20284F2976657277726974652C2028538B
:201D0000296B6970BACD1038FE4FCAC11DFE53CA9610FE42C29610212B3B113B3B0608CD40
:201D2000BC373E4212133E4112133E4B12113A3B1A32961D3A2A3B12CD1033CD9F31CA958A
:201D40001DD5CD3030D13AD60BB7F2641D3A6201FE02CC6338CD6838206F6C64202E4241AD
:201D6000CBC367313A6E01B7CA8F1D3A6201FE02CC6338CD6838206F7665727772697465EF
:201D8000206F6C64202E4241CBCD1B1CC29610113A3BCDC1313E0012CDCE31213B3B060BD3
:201DA00036002305C2A01DC3C41D3DCA171DCDB41DC39610CD68380304206578697374F3AC
:201DC000C9CDBE313E00FE4DCA3B1F3E2411333B1213121312112A3BCD1033CD9F31CA099E
:201DE0001ED5CD3030D13AD60BB7F2091E3A6201FE02CC6338CD6838206F6C642074656DD1
:201E000070202E2424A4C36731CDBE31CDAF313A6701B7112A3B0E24C40500AF32E41E6740
:201E20006F223C1E227B1F3A9710B7C4FE323A5C00CD9E32CDC5372A771EEB21801E19E50C
:201E4000EBCDC931E13A19133DBCCA671E11063BCD1132B7C2641E2A3C1E11800019223C58
:201E60001EC3341E32E41E3E00B7C4FE323A2A3BCD9E32CDC537118A3B2A7B1F3A3D1EBC22
:201E8000C2751F3A3C1EBDC2751F3A6701B7CAE31EEB227B1FEB2A3C1E19223C1ECDC631B2
:201EA000CDC537112A3B0E21CD0633B7C2E31E2A7B1F1180001ABEC2631F13237BB7C2B5E4
:201EC0001E227B1FE52A4B3B23224B3BE13A3D1EBCC2A01E3A3C1EBDC2A01E112A3B0E21A0
:201EE000CD06333E00B7CA1B1E3A681EB7FCFE32CDF131212B3B113B3B0608CDBC3721F461
:201F00003A0603CDBC373A6B01B7F5CA1E1FFA1E1FE60F213B3B5F1600197EC68077CDCE3E
:201F200031F1CA9610FA9610F53A9710B7C4FE32F111063B6F260019C39B1C3A9710CDFED7
:201F4000323E3F32123B11063BCD9F31CA9610CD30303A681EE67F77CDBA333EFF325C3076
:201F6000C3461FCD68380703566572696679206572726F720019EBCDC931213C001180004A
:201F800019227B1FCD8535C3731EAF3277053A6D01B7C2AB1F3C325C00325C30CD4E30CDA9
:201FA000B01F3A6D01B70E00CA05002A1001F9C93A00004F3A1701B9C2C01F3EC3320000B1
:201FC0003A9710E67F171717174F3A75253DB1320400C9114001C3E81F114801C3E81F11FE
:201FE0005001C3E81F115801EBC31A20CD2620223C1E2A1813E3210000E52A3C1EE5EBE56E
:2020000011810006007EB7CA112012231304C2052078328000E1C9CD2620223C1E318A3B6C
:20202000212904C3F91FCDAE3A110000EB1ACD1638FE2CC8FE20C8D630DABA3AC6E9DABAA2
:202040003AC606F24B20C607DABA3AC60AB74F0600292929290913C32D20CD2620AF329250
:2020600020322039E5CD68380D616464723A48657820446563202042696E617279204173B7
:2020800063696920456E7465F2E1CD6338E5CDBA2F3E00B7F47E35F29E20CD6838ADCDED69
:2020A00038E1E57E47CDB42FCDED3878CDA62FCDED3878CD842FCDED3878B73E20F2C22064
:2020C0003E2DCDEF3878E67FFE20DAD220FE7FDADA20CD3937C640C3DF20F5CDED38F1CDDF
:2020E000EF38CD68382020BC3A6801CDEF38CD6838BECD03362A771E23CD782FC20621E168
:20210000CD6F21C38A20473A0801B8C23521237ECD1638FE42CA2C21FE44CA2C21FE41CA26
:202120002C21FE2ECAD304FE48C2BA3A326801CD782FCA8920229D0F3A6801FE41CA7821F4
:20214000FE42CA7C21FE44CA9721CD26207CB7C2BA3A7DE177CD6F21EB2A9D0F7E23FE2066
:20216000C25C21CD792FEBCA8A20E5EBC30621233A9220B7F02B2BC96EC352210100087E92
:20218000FE30CA8B21FE31C2BA3A3779174F2305C27F2169C35221CDC70FCDB63AC35221E1
:2021A000FE5FCAAA21FE20D8FE7F3FC9037EFE2AC2BB21237EFE2ACABB212B32750E1E08F6
:2021C000CDC621231E037EFE2ACA0122FE2ECAEE21CDF321CAED21573A6C01B77ACC16386D
:2021E000021D0323C2C6217EFE2ECAEE212B3E20C30B22FE20C8FE5BC8FE5DC8FE3AC8B714
:20220000C9237EFE2ECA09222B3E3F1C1DC80203C30C22CD2B22C3D304CD2B227BF68032A3
:20222000AA0E3A9710CDFE32C3D304CDB70DCADD0DCD792F3E0132681EE57EFE20CA4E2202
:20224000FE30DABA3AFE3AD2BA3A23C33A22363AE1CD8A0F3A6101BBDA61227BFE10DA690B
:20226000223A3406B77BCA3906FE20D2BA3AF68032AA0EC30133CD792FCD163832DC222171
:20228000D001CD63383A6401E67F47CD610CCD792F0E0FE52B1600237EB7F2A322F57AF654
:2022A0000157F1E67FFE7FCABF22CD1638D2B822FE20CAC022D297223E02B257C397225710
:2022C000E17AFE7FCAF9220F57D2D6223A3406B7CAF922CD680C7A0FD2E2223E00FE3FC224
:2022E000F9227EE67FFE20CA0723D2EE220DCD4137230DFAF922C2E2227EB7CAD30423FE98
:2023000020C2F922C38B22CD792FCAD304CDED380DC20D2305C28B22C38222CD63383A626A
:2023200001C641CDEF38CD6838094966200420657869737420412D6F7665726C61792C202F
:20234000422D6261636B2075702C20432D61736B2C20442D736B69708D3A6401F5C630CD25
:20236000EF38CD683809636F6C756D6EF3F117D27F23CD6838202B3120696E204449D2CD97
:2023800068380DD03A05012F3CCDE025CD683809706167696E670DD23A6301CDE025CD68D3
:2023A00038097265717565737420592F4E206F6E2063757272656E7420040928512D726513
:2023C0007175657374206E6577206E616D65290DD63A6701CDE025CD6838097265616420EE
:2023E00061667465722077726974650DD33A6501CDE025CD68380973686F77207379737404
:20240000656D2004730DD43A6601CDE025CD68380973746F70206966200569732066756C6C
:202420006C0DCD3A6B01B7CA2B242FCDE025CD6838094D61726B20636F706965642066695B
:202440006C65730D58096C69737420647269766573201841AD3A60015F3A483457B77BC240
:202460006324AFCD300ECD80357AA3C27C24CD6838206966206F6E206C696EE5CDB70DCA1E
:20248000DB24CD68380D55096C69737420757365727320201830AD3A6101CD972FCD683886
:2024A0000DA43AF0022FCDE025CD6838097375626D6974202424242E5355428321F0027E7C
:2024C000B7F2C6242FB7C2CC243A7525CD7B35237EB7CADB24CDEF38C3CF24CD68380D2B10
:2024E0002F2D09312D38206F72202852296561642F77726974652C20285329737973746571
:202500006D2F6469722C20652858297472610D504F57455289210001CDBA2FCD683848830C
:202520003A1D016F260029EB132A0E0319E5CDBA2FCD6838480D54504189E17DB7118000C2
:202540006A19F2462519E5CDBA2FCD683848832A18132BE5CDBA2FCD683848A0E123D1CD9D
:202560002C2B0607CD702F05C26425CDDF2FCD68382001003E0232E0040E1DCD0500E50E8C
:2025800018CD0500EBE10110000DFAD30478FE08C295256C5A047B1F5FD2D825E67FF5C5EB
:2025A000D578325C00CD4E30CD6338D1C178CD7B35CD6838182052AF7D1F6F3E57D2C22507
:2025C0003E4FCDEF38CDED38E5D5C5CDFB25CD1626C1D1E1F1C38925F57D1F6FF1C38925DC
:2025E000B7FAF025CD68382028184F464617A9C9CD68382028184F4E17A9C92AFC3A23CDA1
:202600000E26CA0A26293DC30226227B1FC93AF93AD603C037C9210000223C1E2AFC3A2390
:20262000EB0E1BD5CD0500D106087E07DA3826E52A3C1E23223C1EE1F51B7AB3CA4826F1F4
:2026400005C22B2623C32826F1CD0E26CA5A262A3C1E29223C1E3DC34C26CD6838557365BD
:2026600064BA2A3C1EEB2A7B1FCD2C2BE52AFE3A230E20CD401CEBE1CD2C2BCD9F26CD686D
:20268000382C2046726565BA2A3C1ECD9F26CD68382C204361706163697479BA2A7B1FCD32
:2026A000DF2FCD6838CBC9CD68380364656C657465642004730D8DCD4E303E0232BD332ABC
:2026C000043B2200272101002206272AFE3A23CD702FCD702F444D2A771EEBC5D5424B3A08
:2026E00019133D3DBADA5E2FCDC931CDFF263AE41E3DC249273D325C30CDBA33C34C2711B3
:202700000000CD2332110100E5D52A043BEB2206272A0027CD2C2BC16069D227273E00B714
:20272000C23F272BC33F27210000EB0BCD30D63AF83AB7C2372767CDB70DC23F27676922DE
:20274000CD30444DCD21D6E1C9CDB033CDC728D1C121800019EB0B78B1C2DB26D5CDC6314A
:20276000D13AE41EB7C02AFE3A444D2A771E1120007EFEE523C2B928237EFEE52B2BCAB96E
:2027800028233A5C00CD7B355D54C5D5E5CD180CD1D51BD51A32E41E3A5C00CD9E3212D5BC
:2027A000210C00197E32D60B3600D1E5CD9F31E13AD60B773AE41ED112CAD527CD683803F1
:2027C000027265636F7665722C2004206578697374F3C3B3283AFB3A4F3AD60BB9CA072848
:2027E00081B9CA0728CD683803027265636F7665722C2004207769746820626164206578CE
:2028000074656EF4C3B328CD6838037265636F7665F2CD1B1CC2B328325628E1D1C1C5D59B
:20282000E52B227B1F3A9710E67F77E511090019CDB70DCA3A287EF680772323237E32D6E0
:202840000B2323237EFE80E1C2A328112000190B78B1C267283E00B7C2A3282F3256282A40
:20286000FE3A444D2A771E7EFEE5C24B28223C1EEB2A7B1FC50E0B23131ABECA8428F68037
:20288000BEC29B280DC27728233AD60B96FAA2282A3C1E79325628C1C32528C12A3C1EC369
:2028A0004B28C13E0132E41ECDBF263E8032E41ECDBF26CD6338E1D1C12B112000190B7848
:2028C000B1C27127C3D304E5D52A062723EB2AF73ACD2C2BEBD2F0282A002723EB2A253200
:2028E000CD2C2BD2E928110000EB220027210100220627D1E1C9E5CD2F35CD683847BD2AEF
:20290000043BEB2A0027CD2C2BDA1E292A0A34CDBA2FCD7E353AD132CDB42FC32829CD6823
:20292000382D2D2D2D3A2DADCD68382054BD4F2A0027CDE72FCD68382053BD2A0627CDEDC8
:202940002FCD6838205053BD2ACD30CDED2FE1C93AEF14FE213E1FCA5C293E2032EF14CD39
:202960004E30CD2620CDB63AEBE52AFC3ACD2C2BCDBD32210100227B1FC3A429CD4E30CD73
:20298000AE3ACDC70FCDB63A220027210100227B1FEBCDAF3ACDC70FCDB63AD52206277D26
:2029A000B4CA332BE1CD782FCA112A3AEF14FE1FC2F0297ECD1638FE58C2F0293E063282EA
:2029C00015237ECD1638FE20CADF29FE41C2D5293E08C3DC29FE48C2DC293E07328215E529
:2029E000218000223C1EE1CD782FC2002AC3172ACD2620CDB63A223C1EEBCD782FCA172ABF
:202A0000CDC70FCDB63A227B1F7DB4CAD304C3172A218000223C1E2A7B1F3A19013DFEFF55
:202A2000C2272A3AF93A3C5F4F1600CD2C2B3E03DE0132BD337932062B2A3C1EEBCDC9319E
:202A4000CD122BDA602ACDFF262A7B1F2B7DB4CA602A3A8215B7C2602A3A0C01B7CA802A5C
:202A6000CD6338CDF628CD6838204174BA2A3C1EE5CDBA2FCD6838ADE1117F0019CDBA2F8E
:202A8000CD122BDA332B3AEF14B7CA332BFE1FF5CCB033F1C4BA333AEF14F52A3C1EE521B9
:202AA0007000223C1E2180007DE60F322F153A821532EF14B7CAD22AF53A0C01B7F5C4630F
:202AC00038CD0714F1CACD2ACD68380D8DF1210000E3E1223C1EF132EF142A3C1E11800090
:202AE00019223C1E2A7B1F2B227B1F7DB4CAD304CDC728D2052BAF32EF14673A1E276F22AB
:202B0000CD30C3602A3E013D32062BB7CA172AC3392A2A0027EB2A2532CD2C2BD87DB42A90
:202B20000627EB2AF73AC22C2B2124007D936F7C9A67C9CD683807034F7574206F66200536
:202B4000626F756E647300CD1F2F2A3C1EE5CD8B2BCD6838204C617374204164647265734F
:202B600073BA2A3C1ED17CBAC2702B7DBBCA712B2BCDBA2FCD683848A0CDC631CDB02B2AD6
:202B8000273BCDDF2FCD6838200100115C00CDD6312A3C1EEBCDC931115C00CD11323DC871
:202BA0002A3C1E11800019223C1EC3912BCD1F2F215C00112A3BD5CDBA37E1E511063BCD66
:202BC000BA37D1CD9F31C2D42B3AEF14FE1DC2DF31C3022CD5CD3030D1CD601B3AEF14FE64
:202BE0001DC03AD60BB7F2EF2BCD6D31C3D3042A7B1F237DB4C2FF2B2A273B23227B1FCDD9
:202C0000BE312A7B1F237DB4CABA3ACDAF312A7B1F2B227B1F7DB4CA302C2A3C1EE5EBCD1F
:202C2000C931E111800019223C1ECD8535C30E2CCDF131C3D304CD1F2FEB227B1F318A3BCE
:202C4000212404E52A3C1EE5CD8B2B2A7B1FC9CD082D7CB5CAD304E52A7B1F78BCDA7C2C9A
:202C6000C2682C79BDDA7C2CD119E5606919444DE1137E020B2BCD182FC3722CD1137E0281
:202C80002303CD182FC37E2CCD792FCAA42CFE2CC2B52CCD782FCAA42CCD26202BEB2AA8A8
:202CA0002CC3FE2C1170002100007DE60F2FE60F835FC3FE2CCD2620227B1FEBFE2CCADA6C
:202CC0002CD5CD792FD1CAD42CFE2CCADA2CCD122DC3FA2C210000C3FA2CCD782FCAE72C99
:202CE000CD26202BC3FA2C2170003A7B1FE60F2FE60F856FC3FA2CCD082DEB2A7B1F223C43
:202D00001EEB23227B1FEBC9CD2620227B1FEBCDAF3ACD2620223C1EEB3AEF14FE27CA2BD6
:202D20002DFE29CA2B2DFE28C2312DCDAF3ACD2620E5C12A3C1EE5545D2A7B1FEBCD2C2B7B
:202D4000D1DABA3AC9CD882C3E85C3622DCD882C3E88C3622DCD882C3E86C3622DCD882CC4
:202D60003E8732EF14C35C13CDF72CAF32E41E2A0E0322771E6069CDAE3A3AE41EB7F47984
:202D80002FCAEB2DF28F2D237E2BB7CAEB2D7E4FFE22CAE02D0600FE3FCAB52D3AE41EB769
:202DA000FAC12DCD26207CB7C2BA3ACDB63A4DEB0680C3C12D063F3AE41EB7FAC12D06BF1E
:202DC00023E52A771E71247023702522771EE13AE41EB7FAE72D7EFE20CA7A2D23C3D62DE0
:202DE0003AE41E2F32E41E23C37A2D2A0E03EB2A771E424BCD2C2BEB2A3C1EE52A7B1F7C7D
:202E0000B52B227B1FC2132EC3192EE52A7B1F2B227B1F237CB5CAD304D5CD2C2BDAD304DA
:202E2000D1E10ABECA312E040AE67F05FE3FC24E2EE5D5C523031B7AB3CA522E0ABECA34FF
:202E40002E040A05E67FFE3FCA342EC1D1E123C30B2EC1D1E1CD6338CDBA2FCD68383AA0F9
:202E6000E5D5C5040AB73E22F4EF380AB77EF27C2EE5CDB42FCDED38E1C3972ECDA021D268
:202E8000942EF5CD6838BCF1E5CDB42FE1CD6838BEC3972ECDEF3823D50A07E6015F030AE8
:202EA00007E601ABCAB02ECD6838A20AB7FCED38D11B7AB3C26B2E0AB73E22F4EF38C1D19E
:202EC000E1C34E2ECD082D7CB5CAD30423EB2A7B1F0ABECAFB2EE5F57EF5CD6338CDBA2F06
:202EE000CD68383AA0F1CDB42FCDED38F1CDB42FCD683820BAC5E1CDBA2FE12303CD182F99
:202F0000C3D12ECD082D78B7C2BA3AEB132A7B1F7123CD182FC3102F1B7AB3CAD304C92AC0
:202F20000E03237EFE20C2222FCDAF3ACD4E3021FFFF227B1F21963BCDAF3ACD2620223CB9
:202F40001E21FFFF227B1FEBCD782FC83AEF14FE1DC0CDC70F1AFE20C023227B1FC9CD68C1
:202F600038036D656D6F72792066756C6C030D00B77C1F677D1F6FC9237EFE20CA782FFEDF
:202F80003BC8B7C9C5060807F53E30CE00CDEF38F105C2872FC1C90E01C39E2F0EFFE67FA6
:202FA0006F2600C3F32F0E30E5D5C56F2600CDED2FC343386FAF67C3BC2F3EFF32C52FE5A3
:202FC000D5C50EFF3E00B7CAD62F1100F0CDFE2F1100FFCDFE2F11F0FFCDF62FC343380E43
:202FE0003011F0D8CDFE2F1118FCCDFE2F119CFFCDFE2F11F6FFCDFE2F11FFFF0EFF062FB8
:203000002209300419DA003021000078B9CAED380DCA21300EFFFE3ADAEF38C60747C3EFB9
:2030200038F5D630B90E01CA2E30F1C31430F1C9E60387878787875F160021800019E53EDD
:2030400009856F7E32D60B237E32E80BE1C93A5C00CD300E325C00E5CDC6313E00B7CA7665
:20306000303E0132E534AF325C305FCD200111E5340E0DCD06330E18CD05003A5C005F01A3
:2030800010000DFA9E3004CD702FD2823078BBC282303AF308BBCA9E301E01C3A0301E0058
:2030A0003A5C00CDD630CABC30DABF305E235623EB222827210800197E23666FCD3B322AB6
:2030C000043BEBCD2332110100CD08272100007CB5321E27E1C932E5343D4F3A16013CC2FD
:2030E000E63079F6804FCD1BD6CDB70DC8AF32F3087CB5C0CD68380D074469736B206C6F91
:2031000067204552524F52206F6EA03A5C0032F308F5CD7B35CD68382C206C6F67696E6793
:2031200020746F206472697665206F6E6CF9F1B73FC93A8508B7CA3F31318A3BC39708CD63
:2031400068380D024C4FC7CD6838206F6EA03AE534B7C258313A5C00CD7B353A7525325C8A
:2031600000CD7036C3D304CD6D31C39610CD683803042069732024522FCFC9CD1033CD9F25
:2031800031C0CD8408CA8C31E1C35B08CD68380D4E6F200473A0215D00CD180CC347310E31
:2031A00011D5CDA931D1C90E12CD0633FEFFC9112A3B0E16CD1033CDA931C0C39735112A21
:2031C0003B0E13C3A9311180000E1AC30500112A3B0E17C3A9310E0FCD1033CDA931C0CDDC
:2031E00068380304206E6F7420666F756EE4C34731112A3BD5CDC631D10E10CDA931C0CD8E
:2032000068380302636C6F73652084CD7036C3A4353EFE32A6160E14CD0633F5AF32A6165C
:20322000F1B7C9E5214F00CD2C2BE1DA332BEB220027EB424BE5CD1ED6E1C9CDB70DCA4CE8
:203240003211F73A060FCDBC37C380322A06002E00113A00195E23EB22F73AEB5E23EB22B6
:20326000FE3AEB7E2332F93A7E2332FA3A5E23EB22FC3AEB5E23EB22003BEB5EEB22043B11
:2032800021D1327EF53AFA3A77E52AFC3AEBCDC632222532EB222A2BE1F1773A5C00F5E529
:2032A000D5C532E53411E534CD7E343D5F0E0ECD0500CD4634CD18D6C1D1E1F1C9EB220AB0
:2032C00034EBAF32D132626B3AF93A293DC2CB323E04856FEB2AF73A7D2F6F7C2F6723EBD5
:2032E0000100000319DAE3320BEB2AF73A19E52A043B09EBE123220627EB220027C9E67F61
:203300005F0E20C30500CD7E34CD0500CD4634C9E5D5210C001911170072231DC21933D13E
:20332000E1C93AEF14FE35CA5119CD68380362616420736563746F72206F6EA03AA616B7AE
:20334000CA4E31FEFEC2CB333A1A01B7CA4E31F53AEF14FE02CA5D33FE1EC24E313A752556
:2033600032E004CD6838726561E4F1FA7E33CD68382C2061626F72F4CD1B1CCAD3042A777B
:203380001EEB3AEF14FE02CA8D331100002A3C1E190E803A1B0177230DC296333AEF14FE5E
:2033A00035C8CD633821263B34217C00343E00C9E5CDB733C3C233C327D6E5C50E02CDC8B7
:2033C00033C1B7E1C22233C9C32AD62A043BEB2A0027CD2C2BD2DD333E0232A6163A0C019E
:2033E0003DCC6338CDF6283AA616B7FA0334FE7FCA0935FE02CA14352AB316AF7723773DD8
:2034000032A616CD6338CD2F35019C002A3C1E23223C1E2AB3162BCD5213CA3834237E231B
:20342000B9C227347EB8C87E2BB623C21D3470237723772B2B2B71C9237EB9C8B7C23834BD
:203440007123772377C9F53EFF3CCA4F34F1C9F122CD34E3225B3431843B210F33E3D5F5E1
:203460001100022A06002323237323722311160073237223110086732372F1C3CB34F53AA2
:2034800048343CCA8834F1C9F122CD3421000039225834D5F51A32E534F12A06002323235F
:2034A0005E2356EB226134EB235E2356EB226E34EB235E2356EB227534EB11EC34722B7338
:2034C0002B11D034722B732B722B73D1210035C9CD46343AA616FEFECA2233B7C03A5C000C
:2034E000B7C232313E02325C00C33231CD4634CD68380D0D5072657373205E432C200569A6
:20350000732024522FCFC34731CD683820696E20646972003E0132A616CD6838206F6E20EF
:2035200073797374656D20747261636B738DC92A043BEB2A0027CD2C2BEB2AF73ACD5E3579
:20354000EB2A06272B193AFA3A477DA032D1323AF93A47CD702F05C25335220A34C9C5D5AC
:20356000EB424B78B1C26E35210000D1C1C90B545D78B1CA6B35190BC37135CD80353EFA33
:20358000C640C3EF38112A3B0E15CD0633B7C83DCAC4353DCAD435CD683807036469722037
:2035A00066756CECCDAA35C3D304CD6838206F6E206472697665A0CDBD35C37B350E19CD28
:2035C00005003CC9CD68380302657874656E642084C3A435CD683807030566756C6C206FE9
:2035E0006EA03A2A3BCD7B35CDF131CDBE313A6601B7FAD3043AEF14FE1DCAD304318A3BDE
:20360000C396103A1D01325739E52A771EEBE112F5E5C5D5D1D5AF32573713123EFFB7FA09
:203620008536D5CDC63111D03AD5CDD631D13ADF3A3D32F03AFA8136CD1132C28136D1D5D5
:203640002180004604CDBC37E1E546237ECDEF3805C24B3623362023AF7732573921DE3A19
:2036600077233511D03ACDF431CA8136D1C3B832211D367EB7F82F77CDC63111D03AC3C1C5
:2036800031CD7036D113EBCD2038FE0DCAE036FE5FCA0137FE7FCA0137FE08CA0137FE15AE
:2036A000CA8237FE12CA8C37FE05CAB437FE18CA7A37FE5EC2C936CD2038CD1638FE21DA4B
:2036C0008A36FE5ECAC936D640473A0901B8C2ED363AEF14FE1BC2ED363A92202F3292208D
:2036E000362023F5AF77325739F1C3B832EBE1E57E2334BECAAB37EB7078CD413723C38761
:2037000036CD0737C38736EBC1E1E5C523477ED60177DA4C37EB2B78463620FE08CA53379A
:203720003A57373C3C32573778FE20D2EF38CD80353A57373C3C325737F53E5ECDEF38F102
:20374000C9FE20DC3937DA8035C3EF38333334EBC38736CD63373E00B7C806203D32573771
:20376000C3533778FE203E08DC6D373E08CDEF383E20CDEF383E08C3EF383E08CD0737C3D0
:203780007A37CD6338AF325737C31436D1D5131A47CD6838238DAF32573778B7CA87361325
:2037A0001ACD413705C29F37C38736CD68388735EBC38736CD6338C3873606247E12231321
:2037C00005C2BC37C9E5CDCB37E1C9CD06D6B7CA0138CD2038320A39FE13CA2038FE20C2F8
:2037E000E937F680320A39E67FC5473A0F01B878C1CA2038FE30D8FE3A3FD8E60F3269010A
:20380000C9F601C9CDAE3ACDF437DABA3AC3D304CD2038CDEF38FE61D8FE7B3FD8E65FC91C
:20382000E5D5C5CD09D6327915FE03CA5738FE10CA4D38473A0B01B8CA473878FE0AC243D3
:20384000383E0DC1D1E1C9CDA80DC3D3043A51392F325139C32338CD4137CDA80DCD703686
:20386000C32404CD68388DC922BF38E3D5CD680C7EE67FCAD30411CC38FE01CCC23811D445
:2038800038FE02CCC23811DE38FE03CCC23811E238FE04CCC23811E738FE05CCC238FE173B
:2038A000CC680CFE18CC610CB7C4EF38FE0D3E0ACCEF387EB723F27038CD610CD1E3218A06
:2038C0003BC91AB7C8CDEF3813C3C238736563746F7273000763616E206E6F742000202D6D
:2038E000200066696C65006469736B20003E20E5D5C5F5E67F5FFE07C202393A1201B7C2DF
:2039000073393A1F01BBC248393E2057E67FFE20C248397AB7FA32393A5139B7FA48393E5E
:20392000113DFA4839322039B7C248393A0501322039CD203857FE0D3E20CA45397AFE20A9
:20394000C24539EE80320A390E02CD0500F1F55F3E00B7FC77393E00B7CCC5373A6901B764
:20396000CA7339575F622E00292B7CB5C269391DC26539F1C343387BF5FE09CA8839FE0DE9
:20398000C299393EFFC3A33916033E20CD9839147AFE08C28A39F1C9F53A89393CFE08C2DA
:2039A000A339AF328939F1F5D55F0E05CD0500D1F1C9CD4E30CD68380D05636170616369D3
:2039C00074793A89CDFB25CD9F26CD68380D747261636B733A09892A253223CDDF2F2A043D
:2039E0003BE5CDDF2FCD68382073797374656D0D012F747261636B3A892AF73AE5CDDF2F6A
:203A00002A2A2BCDDF2FCD6838206C6173740D012F73797374656D3A89D1E1CD5E35CDDFA8
:203A20002F2AFE3A23E50E04CD401CCDDF2FCD6838206469720D64697220656E7472696518
:203A4000733A89E1E5CDDF2FE10E20CD401CCD9F26CD68380D012F67726F75703A893AFAF7
:203A60003A3C6F2600CDDF2FCD0E26176F2600CD9F262AFC3A3E3032C32FCDBA2F3EFF320A
:203A8000C32FCD6838482067726F7570730D6B62797465732F657874656E743A892108006D
:203AA0003AFB3A293DF2A33ACD9F26C3D3042BCD782FC0C3BA3A1AFE20C8CD683807036940
:203AC0006E76616C696420617267756D656E740001242424202020202053554200000000EE
:203AE0000000000000000000000000000000000000000000434F4D2400040F01B3003F00BD
:203B0000800010000000025057202020202020434F4D3F000000000000000000000000008E
:203B200000000000000000780000005057202020202020434F4D00000074363738393A3B00
:203B40003C3D0000000000000000740000000000CE37C93700005C3902434300433B0000D8
:203B600060384300433B4D39935E00004D3902430000003046000134B8324F00560056001A
:203B800046002A3B0C338D352D2C7F13534156452050572E434F4D20313030203132302007
:203BA00000434F4D00004341544348554D20444154000044454D4F202020204241530000AD
:203BC000464F524D41542020434F4D0000474F4E4B492020204241530000475241462020EF
:203BE0002020434F4D0000494E562020202020434F4D00004A41434B20202020434F4D00C2
:203C0000004D555A412020202042415300004D42202020202020434F4D00005043414420AB
:203C2000202020424153000050435420202020202020200000504C4F5420202020424153D2
:203C400000005057202020202020434F4D00005244202020202020424153000054455354B2
:203C600020202020434F4D00005445542020202020434F4D000054494D4520202020424147
:203C80005300004444542020202020434F4D000044522020202020204D414300004C38309B
:203CA0002020202020434F4D00004C38302F31202020434F4D00004C4C383020202020436F
:203CC0004F4D00004D38302020202020434F4D00004D55534943202020434F4D0000504FB5
:203CE000574552202020434F4D00005245534F52432020434F4D00004D4143202020202039
:203D0000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E503
:203D2000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E3
:203D4000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5C3
:203D6000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5A3
:203D8000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E583
:203DA000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E563
:203DC000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E543
:203DE000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E523
:203E0000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E502
:203E2000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E2
:203E4000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5C2
:203E6000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5A2
:203E8000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E582
:203EA000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E562
:203EC000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E542
:203EE000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E522
:203F0000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E501
:203F2000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E1
:203F4000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5C1
:203F6000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5A1
:203F8000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E581
:203FA000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E561
:203FC000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E541
:203FE000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E521
:20400000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E500
:20402000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E0
:20404000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5C0
:20406000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5A0
:20408000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E580
:2040A000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E560
:2040C000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E540
:2040E000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E520
:00000001FF

258
hex/res.hex Normal file
View File

@ -0,0 +1,258 @@
:020000040000FA
:20010000CD42015245534F55524345206279205761726420436872697374656E73656E0D0B
:200120000A284153204F462030312F30382F3830290D0A24436F70797269676874203139EE
:200140003830D10E09CD05002100003922FD1731FD17CD47160D0A4D656D6F7279206F70EF
:20016000656E20746F20002A06002BCD9A14CDDA15CDDA15CD5C16AF32121732141731FD67
:2001800017CD15162123177EFE0DCA7701FE3BCA290DFE41CAC804FE42CAD404FE43CA72BD
:2001A0000BFE44CA2D03FE45CADF13FE46CA1508FE4BCA0314FE4CCADC04FE4FCA5504FE42
:2001C00050CA2B02FE51CAEC02FE52CAC508FE53CA230AFE55CA6E0EFE58CAF801FE5ACACE
:2001E0008108FE3FCA8B07AF321217321417CD47163F0D0A00C37701CD4716592F4E20702B
:200200007572676520616C6C2073796D626F6C7320262043544C3F00CD15163A2317FE595E
:20022000CA7401FE4ECA7701C3F8012124177EFE0DCAE701CDA714FE20CA4102FE2CC2E718
:200240000123D5E53E01321217CD4E16094F52470900E1D17ACD3C117BCD8C143E00CDE6DC
:2002600015CDDA15D5CDA714FE0DC2E701C121001E23237EB7CA77012B2B7E91237E98DA66
:200280008B022B7E93237E9ADADA02E5C52346E5237E2BFE41DAE602237EFE2BCAE602FE65
:2002A0002DCAE60205C29802E1463E01321217237ECDE61505C2AF02CD4E1609455155092E
:2002C00000C1E17EB7C43C112B7ECD8C143E00CDE615CDDA15AF32121723237ECD37112358
:2002E000CD8F16C37102E1C1E1C3DA023E013214171123172124177E122313FE0DC2F70265
:20030000C38401436F6E67726174756C6174696F6E732C20796F7520666F756E6420746877
:20032000652070617463682061726561212AE816E5EB2AFE161922EA16D12124177EFE0D27
:20034000CA8C03FE53CA0C04FE3DCAEF03FE2CCA5E03CDA714E52AFE161922EA16E1FE0DFB
:20036000CA7703FE20CA6D03FE2CC2E70123D5CDA714EB22EA16D12AEC16E51922E8162A3B
:20038000EA16D11922EA16FE0DC2E7012AE816CD8F16E5CD7408CD9A14E1E5CDA2147ECDC5
:2003A0008C14237DE603CCA2147DE607CCA2147DE60FC29E03CDE415E17EFE20DAC403FEEF
:2003C0007FDAC6033E2ECDE615237DE60FCAD803E607CCA214C3B903CDE415CDDA1522E813
:2003E000163AEA16953AEB169CD28F03C3770123CDA714231BEB22FE16EBFE2CCA5203FE66
:2004000020CA5203FE0DCA7701C3E7012125177EFE2EC22404CD4214CD6813D227042A180A
:2004200017C3270421001E5E2356237EB7CA7701EBCD9A14EB46237ECDE6152305C23704E2
:20044000CDDA15CD8F16C327042AEC16CD9A14CDDA15C377012124177EFE0DCA4904CDA772
:2004600014FE0DC2E701EB22EC16C377013A1317B7C2220B325C003268002124173A251765
:20048000FE20CAE701FE3AC294043A2417D640325C002323115D000608CDA2040603CDA234
:2004A00004C97EFE0DCABF0423FE2ECABF04121305C2A2047EFE0DC8FE2E23C8C3B4043ECA
:2004C00020121305C2BF04C93E01321C17AF321D17C3E3043E01321D17C3E304AF321D17BD
:2004E000321C17AF3212173A00173201173202172124177EFE0DCA2B05FE2CCA1F05FE2092
:20050000CA1F05FE3DCA2906CDA714EB22F016EBFE0DCA2B05FE20CA1F05FE2CC2E701232B
:20052000CDA714EB22F216AF320217CD8F163A0217B7CA3F053A01173DFA7701C34D052A5A
:20054000F2163AF016953AF1169CD277013A1C17B7CA87052AF016EB2AEC161906087ECD64
:20056000CE16DA87052305C25E057ECDCE1623D26A052BCD7408EBD52AF016EB3E42CD9520
:200580000BD13E49CD950B2AF6167CB5CAC1052AF016EBCD7E0DDAC1052323463E01321272
:2005A00017CDAE10AFB0CABE05237EFE5CC2B705CDDA1505C39C05CDE61505C2A905CDDA2B
:2005C000152AF016EBCD480C2BDACF052323237EFE49CA1F06FE45CA8108F5235E2356D57A
:2005E0002AF016EBCDAB0EE1221517EBAF321217F1FE53CA4906FE42CAA406FE57CA790689
:20060000CDE615CD47163A20494E56414C49442043544C20454E5452590D0A00C37701CDB3
:20062000080FAF321217C32B0523CDA7147BB7CAE7013200177E23FE2CCA0805FE20CA083C
:2006400005FE0DCA7701C3E701D53AF0162F6F3AF1162F6723193E01321217CD4E16445375
:2006600009007CCD3C117DCD8C143E00CDE615CDDA15E122F016C32B053E01321217CD4E7E
:2006800016445709002AF016EB2AEC16195E2356CD21102AF016232322F016C32B05CDDA33
:2006A00015C32B05AF3217173C321217CD4E16444209002AF016EB2AEC16197EFE0ADADE2E
:2006C00006FE20DACB06FE7FDA1A07CD3C113E00CDE6153A1717C602321717C3E306F63051
:2006E000CDE61523EB2AF0162322F016EB3A1517BBC2FB063A1617BACA85072AF016EBCD7B
:20070000BA13D29E063A1717C602321717FE19D29E063E2CCDE615C3B3063E27CDE6153A64
:2007200017173C3217177ECDE6157EFE27CCE61523EB2AF0162322F016EB3A1517BBC248A0
:20074000073A1617BACA8007E52AF016EBCDBA13E1D280073A17173C321717FE23D27807D6
:20076000FE19DA6D072B7E23FE20CA80077EFE20DA7807FE7FDA27073E27CDE615C3ED067C
:200780003E27CDE615CDDA15C32B05CD471653594D54424C3D0021001ECD9A142AEE16CD86
:2007A0009A14CDDA15CD47165043202020203D002AF016CD9A14CDDA15CD47164F46465396
:2007C00045543D002AEC16CD9A14CDDA152AF6167CB5CAEF07CD4716434F4D4E54533D007E
:2007E0002AF616CD9A142AF816CD9A14CDDA15CD471643544C54424C3D00210018CD9A14F9
:200800007E23A623233CC200082B2B2BCD9A14CDDA15C377012124177EFE0DCA4B08CDA7DC
:2008200014EB22FC162AEC1622FA16EBFE0DCA4B08FE20CA3B08FE2CC2E70123CDA714FE6C
:200840000DC2E7012AEC161922FA162AFC16EBCD8F162AFA167E2322FA16BBC24F087EBAB8
:20086000C24F08E5D5CD74082BCD9A14D1E1CDA214C34F083AEC162F5F3AED162F571319AE
:20088000C9CDAB0E3E01321217CD4E16454E440D0A00AF3212173A1317B7CA77013E1ACDC4
:2008A000B615CD7715AF321317CD47162B2B41534D2046494C4520434C4F5345442B2B0D2B
:2008C0000A00C37701CD6D043A1317B7C2220B216500110C170E03CD8516C2ED0821001E62
:2008E000CDC00922EE1623233600C38B072165001106170E03CD8516C23E09CDDF142AEC5F
:20090000167CFE1EDA710911000119E5EB0E1ACD0500115C000E14CD0500B7C22609E111E5
:20092000800019C30B09E1CD9A14CD7408CD9A14CDDA151180000E1ACD0500C3770121651F
:20094000001109170E03CD8516C24F09C3E80C216500110F170E03CD8516C2E701CDF20D70
:200960002AF616CDC00922F81636FF2336FFC38B07CD47162B2B4E4F2C2054484154205788
:200980004F554C44204F5645524C41592054484520444953415353454D424C45520D0A42E9
:2009A000454341555345204F464653455420495320544F4F20534D414C4C3A2000C34904C9
:2009C000CDDF14CD0E15FE1AC8FE09CAC309FE0DCAC309FE0ACAC309CDFC0973237223E5C9
:2009E000230600CD0E15FE09CAF609FE0DCAF609772304C3E309E370E1C3C309110000FE1B
:200A000020C8FE1ACA590BFE3ADA0E0AD607D630EB29292929856FEBCD0E15FE1ACA590BF7
:200A2000C3FF09CD6D043A1317B7C2220B216500110C170E03CD8516C2910A21001ECD56B1
:200A4000155E2356237E2347B7CA6A0ACD750A3E20CDB6157ECDB6152305C2540A3E0DCDF2
:200A6000B6153E0ACDB615C3410A3E1ACDB615CD7715C377017ACD7C14CDB6157ACD8014EF
:200A8000CDB6157BCD7C14CDB6157BCD8014C3B6152165001109170E03CD8516CAB30C210A
:200AA0006500110F170E03CD8516CA120B2165001103170E03CD8516C2E7013E01321317CB
:200AC000AF321217CD5615CD47162B2B57524954494E47202E41534D20454E41424C4544F6
:200AE0000D0A555345205A20434F4D4D414E44204F52204520434F4E54524F4C20544F200F
:200B0000434C4F53452046494C452B2B0D0A00C37701CDF20D2AF816232336002AF616C3FE
:200B20003E0ACD47162B2B4E4F2046494C45204143434553534553205045524D495454451C
:200B40004420554E54494C202E41534D20434C4F5345440D0A00C37701CD47162B2B554E27
:200B6000455850454354454420454F460D0A00C377012124177EFE0DCA6A0CCDA714FE0D1F
:200B8000CA640CFE20CA8D0BFE2CC2E701237ECDA70BC37701E5D5F5CD480C2BDAA20B23C7
:200BA0002323F1D1BEE1C8321E17CD480CDAF20B3A1E17FE49CA440CFE57CA440CFE42CA1E
:200BC000440CFE53CA440CFE45CA440CFE4BC2E701EB21030019EB7E23A62B3CCAEC0B0682
:200BE000031A77132305C2E10BC3D70B2B2B2BC3EF073A1E17FE4BCAE701FE45CA130CFE05
:200C000042CA130CFE57CA130CFE49CA130CFE53C2E701D5E52100187E23A623233CC218AA
:200C20000C232323EB21FDFF19C12B1B7E127BB9C22A0C7AB8C22A0C6069D1732372233A32
:200C40001E1777C9232377C92100187E23A62B3C37C8237ABE2BD8C25E0C7BBEC8D823230A
:200C600023C34B0CCD480CC36D0C210018CD8F165E2356237AA33CC27D0CC3EF07D5E5CD51
:200C8000BA13DA960C7ECDE6152305C2850C3E3ACDE615CDDA15E1D1CDA214CDA214EBCDDE
:200CA0009A143E2CCDE615EB7ECDE615CDDA1523C36D0CCD56152100185E2356237AA33C44
:200CC000CADD0CCD750A3E2CCDB6157ECDB6153E0DCDB6153E0ACDB61523C3B90C3E1ACD6A
:200CE000B615CD7715C37701CDDF14210018CD0E15110000FE1ACA210DFE2CCA150DFE3A3D
:200D0000DA050DD607D630EB29292929856FEBCD0E15C3F40C73237223CD0E157723C3EE7D
:200D20000C36FF2336FFC3EF07CDF20D2124177EFE0DCAA20DCDA71423FE0DCA9C0DFE20F0
:200D4000CA480DFE2CC2E701E5CD7E0DDA5A0DCDCD0DE1E57EFE0DCA77012AF816732372AA
:200D600023D10600E5231A7713041AFE0DC2650D2322F81636FF2336FFE170C377012AF6E4
:200D8000167E23A62B3C37C8237ABE2BC2920D7BBEC823237ECD371123C3810DCD7E0DC340
:200DA000A50D2AF616CD8F165E2356237AA33CCA7701EBCD9A14EB3E3BCDE61546237ECDFE
:200DC000E61505C2BD0DCDDA1523C3A50D7E23A63CC82BD5545D23237ECD37112306007EB7
:200DE0001223134FA03C41C2DF0DEB2B2B22F816D1C92AF6167CB5C0CD47162B2B434F4D00
:200E00004D414E442049474E4F5245442B2B0D0A2B2B49737375652027554E4E4E4E2720A3
:200E2000746F2074656C6C205245534F5552434520746F20757365206164647265737320E0
:200E40004E4E4E4E0D0A617320746865207374617274206F662074686520636F6D6D656ECB
:200E60007473207461626C650D0A00C377012124177EFE0DCAE701FE2ECAE701CDA714EB29
:200E80007CFE1FDA940E22F61622F81636FF2336FFC37701CD47162B2B4E4F2121203C312B
:200EA00046303048210D0A00C37701D5E53E013212172AF016EBCDBA13DAED0E48E57EFE4A
:200EC0002BCAEC0EFE2DCAEC0E230DC2BE0EE1CD4B113E3ACDE615CDA910CDA910CDAE1095
:200EE0002AF016CD9A14CDDA15C3ED0EE1AF321217CDA214CDA2142AF016CD9A143E0132C0
:200F00001217CDA910E1D1C9CDAB0E2AF016EB2AEC161922F416E52AF0162322F016E17ED6
:200F200047216711110600197EB7CAB310A04F237EB9C2270F237E321E170604237EFE2EBF
:200F4000C4E61505C23C0F2AF0163A1E17FE04DA610FFE09D2610F23FE06DA5E0F2322F0E9
:200F6000165F1600216F0F191919E52AF416C9C3930FC3960FC39F0FC3A80FC3B10FC3BD5F
:200F80000FC30D10C36D10C37310C37910C37F10C39310C3DA15CDA910CD2711C3DA15CD1C
:200FA000A910CD1D11C3DA15CDA910CDF010C3DA15CDA910CD1D11CDA410C3C00FCDA910AC
:200FC0002AF4162322F4162AF4167EFE20DAF10FFE5BD2F10F3A1E17FE04DAF10FFE06D298
:200FE000F10F7ECDDC103E27CDE615CDA910CDAE107EFE0ADA0210CD3C113E00CDE615C327
:20100000DA15C630CDE615C3DA15C3DA15CDA9102AF4167ECDF010CDA4102AF416235E2361
:2010200056D5CDBA13D237103A1D17B7CA4010D1D5CD0A13C34010CD4B11CDA910CDAE10B6
:20104000D17AB33E00CA56107AB7CA5C10CD3C117BCD8C143E00CDE615C3DA157BFE0ADAA6
:201060006810CD3C11C35410C630C35610CDA910C31A10CDC210C36D10CDC210C3DA15CD28
:20108000A9102AF4167E1F1F1FE607F630CDE615C3DA15CDA9102AF4167ECD1D11CDA41047
:2010A0007EC3990F3E2CC3E6153E20C3E6153E3BC3E615CD4E16444209003E04321E17C3A0
:2010C000C70F2AF4167E1F1FE60E215511CD37117ECDE615237EFE2EC4E615C9F53E27CDF8
:2010E000E615F1FE27C2E615F5CDE615F1C3E6152AF4167E1F1F1FE606FE06C22B117EE655
:20110000CFFEC1CA1511FEC5CA15113E53CDE6153E50C3E615CD4E1650535700C92AF416D1
:201120007E1F1F1FC32B112AF4167E216511E607CD37117EC3E615856FD024C9FEA0DA8C99
:2011400014F53E30CDE615F1C38C147ECDE6152305C24B11C94E5A5A2E4E43432E504F5086
:2011600045502E4D2E42434445484C4D41FFCE054143492EF888014144432EF880014144BF
:20118000442EFFC6054144492EF8A001414E412EFFE605414E492EC7C408432E2E2EFFCD64
:2011A0000743414C4CFF2F00434D412EFF3F00434D432EF8B801434D502EFFFE0543504903
:2011C0002EFF27004441412ECF09034441442EC705024443522ECF0B034443582EFFF30044
:2011E00044492E2EFFFB0045492E2EFF7600484C542EFFDB05494E2E2EC70402494E522EE1
:20120000CF0303494E582EC7C2084A2E2E2EFFC3074A4D502EFF3A074C44412EEF0A034C12
:20122000444158FF2A074C484C44CF01064C58492EC0400B4D4F562EC706044D56492EFF77
:2012400000004E4F502EF8B0014F52412EFFF6054F52492EFFD3054F55542EFFE900504330
:20126000484CCFC103504F502ECFC50350555348C7C009522E2E2EFF170052414C2EFF1FA6
:20128000005241522EFFC9005245542EFF0F005252432EFF0700524C432EC7C70A52535491
:2012A0002EF898015342422EFFDE055342492EFF220753484C44FFF9005350484CFF3207C2
:2012C0005354412EEF020353544158FF37005354432EF890015355422EFFD6055355492EDC
:2012E000FFEB0058434847F8A8015852412EFFEE055852492EFFE3005854484C004E4E4D02
:201300004D444459593F3F3F3F3F212117364C237ACD6F147BCD6F142121170605CD6813CC
:20132000DA2713732372C9E5D5C52AEE16545D78C603856F7CCE006722EE16232336002BB7
:201340002B444D2A18177BBDC250137ABCCA57131B0B1A02C34613C1D17323722370D12332
:201360001A771305C25F13C9D5E521001ED1D52323E57E23B7CAB013B8DA9C13C2A6134F0D
:20138000CD8516CA9513DAB013E17E23856FD26D1324C36D13E12B2BD1D1B7C94FCD851697
:2013A000D28913C3B01348CD8516CAB013D28913E12B2B221817E1D137C921001E7E23BBB9
:2013C000C2C8137EBACAD713237EB737C823856FD2BD1324C3BD13237E2347B7C037C9211A
:2013E0002417CDA7147EFE20CAF013FE2CC2E701237EFE2EC2E701D5CD4214D1CD1D13C3ED
:201400007701C92124177EFE2EC2E701CD4214CD6813DAE701444D23237E856F7CCE0067B4
:2014200023EB2AEE167BBDC22F147ABCCA36141A020313C32514606922EE1623233600C38D
:201440007701230600E57E2304FE2BCA4614FE2DCA4614FE30DA6714FE3ADA4614FE41DABD
:201460006714FE5BDA461405CAE7012BEBE1C9F5CD7C147723F1CD80147723C91F1F1F1FD0
:20148000E60FFE0ADA8914C607C630C9F5CD7C14CDE615F1CD8014C3E6157CCD8C147DCDEF
:2014A0008C143E20C3E6157EFE2ECACF141100007EFE30D8FE3ADAC114FE41D8FE47D0D69B
:2014C00007D630EB29292929856FEB23C3B014CD4214D5CD6813DAE7015E2356E17EC9E501
:2014E000210001221A17AF327C00115C000E0FCD0500E13CC0CD47162B2B46494C45204ED3
:201500004F5420464F554E440D0A00C37701E52A1A177CFE01C22B15C5D5115C000E14CD87
:201520000500B7D1C1218000C232157E23221A17E1C9FE03DA5015CD47162B2B554E455815
:2015400050454354454420454F460D0A00C377013E1A77C32B15E5115C000E13CD05001162
:201560005C000E16CD05003CCAE701AF327C00218000221A17E1C9115C000E15CD0500B717
:20158000C2A315115C000E10CD05003CC0CD47162B2B434C4F5345204552524F520D0A00C1
:2015A000C37701CD47162B2B5752495445204552524F520D0A00E52A1A17772C221A17E10D
:2015C000C0C5D5E5115C000E15CD0500B7C2A315218000221A17E1D1C1C93E0DCDE6153EB8
:2015E0000AC3E6153E2AC5D5E55FD50E023A1417B7CC0500D13A1317211217A67BC4B615DC
:201600007BFE0AC211163A0217B7CA111621011735E1D1C1C9CDE4151121173E4E120E0AF4
:20162000CD05002122175E16001923360D212217237EFE0DCADA15FE61DA3016FE7BD230D2
:2016400016E65F77C33016AF321217321417E37ECDE615237EB7C24F1623E3C9AF32021ED0
:2016600021001E22EE163E0D32241721FFFF2200183E4932FF172AF6167CB5C822F8163690
:20168000FF2336FFC91ABEC013230DC28516C9C5D5E50E0BCD0500B7CACA160E01CD05007D
:2016A000FE03CAAB16CDDA15C37701CD47160D0A41424F525420592F4E20000E01CD0500F7
:2016C000E65FFE59CA0000C37701E1D1C1C9FE0DC8FE0AC8B7C8FE20D8FE7F3FC9D10E09A8
:2016E000CD05002AFD17F9C9000180010000001E00010001000100000000000000007F00F6
:201700000A010141534D434F4D43544C53594D444F4300000000000000000000000000004B
:20172000004E00030D0000000000000000000000000000000000000000000000000000004B
:20174000000000000000000000000000000000000000000000000000000000000000000089
:20176000000000000000000000000000000000000000000000000000000000000000001A4F
:20178000E54D201EFF040E00AF78811FBBCAC4175FE5D5C5E5424816002100001905C29CA1
:2017A00017D1191189011ABE1323C2B6170DC2A617C1D1E17BC9C1D1E1DAC0174BC38817DC
:2017C00043C38817AF3CC93A89010117C2FE4AC806C4FE43C80113C0FE52C93A8801FE047D
:2017E000D20D18FE03CAF217FE02C2F41530CAF4152ACA0000F8CA330023168401A9B949FE
:20180000FFFF00490049004900490049004900490049004900490049004900490049004983
:20182000004900490049004900490049004900490049004900490049004900490049004918
:2018400000490049004900490049004900490049004900490049004900D1964900490049DA
:201860000049004900490049004900490049004900490049004900490049004900490049D8
:201880000049004900490049004900490049004900490049004900490049004900490049B8
:2018A000004900490049004900490049004900490049004900D1964900490049004900497A
:2018C0000049004900490049004900490049004996490049004900490049004900490049E2
:2018E0000049004900490049004900490049004900490049004900D196490049004900493A
:20190000004900490049004900490049004900490049004900490049004900490049004937
:20192000004900490049004900490049004900490049004900490049004900490049004917
:201940000049004900490049004900490049004900490049004900490049004900490049F7
:201960000049004900490049004900490049004900490049004900490049004900490049D7
:20198000004900490049004900D196490049004900490049004900D196490049004900497B
:2019A000004900490049004900490049004900490049004900490049004900490049004997
:2019C000004900490049004900490049004900490049004900490049004900490049004977
:2019E000004900490049004900490049004900490049004900490049004900490049004957
:201A0000004900490049004900490049004900490049004900490049004900490049004936
:201A200000490049004900490049004900490049004900490049004900D1964900490049F8
:201A40000049004900490049004900490049004900490049004900490049004900D19649D8
:201A60000049004900490049004900490049004900490049004900490049004900490049D6
:201A80000049004900490049004900490049004900490049004900490049004900490049B6
:201AA000004900490049004900490049004900490049004900490049004900490049004996
:201AC0000049004900490049004900490049004900490049004900490049004900D1964958
:201AE000004900490049004900490049004900490049004900490049004900490049004956
:201B0000004900490049004900490049004900490049004900490049004900490049004935
:201B20000049004900490049004900490049004900D19649004900490049004900490049F7
:201B40000049004900490049004900490049004900490049004900490049004900490049F5
:201B60000049004900490049004900490049004900490049004900490049004900490049D5
:201B8000004900D19649004900490049004900490049004900490049004900490049004997
:201BA000004900490049004900490049004900490049004900490049004900490049004995
:201BC000004900490049004900490049004900490049004900490049004900490049004975
:201BE000004900490049004900490049004900490049004900490049004900490049004955
:201C00000049004900D1964900490049004900490049004900490049004900490049004916
:201C20000049004900490049004900D19649004900490049004900490049004900490049F6
:201C40000049004900490049004900490049004900490049004900490049004900490049F4
:201C60000049004900490049004900490049004900490049004900490049004900490049D4
:201C80000049004900490049004900490049004900490049004900490049004900490049B4
:201CA000004900490049004900490049004900490049004900490049004900490049004994
:201CC000004900490049004900490049004900490049004900D1964900D196490049004938
:201CE000004900490049004900490049004900490049004900490049004900490049004954
:201D0000004900490049004900490049004900490049004900490049004900490049004933
:201D2000004900490049004900490049004900490049004900490049004900490049004913
:201D40000049004900490049004900490049004900490049004900490049004900490049F3
:201D60000049004900490049004900490049004900490049004900490049004900490049D3
:201D8000004900490049004900D196490049004900490049004900D1964900490049004977
:201DA000004900490049004900490049004900490049004900490049004900490049004993
:201DC000004900490049004900490049004900490049004900490049004900490049004973
:201DE000004900490049004900490049004900490049004900490049004900490049004953
:201E0000004900490049004900490049004900490049004900490049004900490049004932
:201E200000490049004900490049004900490049004900490049004900D1964900490049F4
:201E40000049004900490049004900490049004900490049004900490049004900D19649D4
:201E60000049004900490049004900490049004900490049004900490049004900490049D2
:201E80000049004900490049004900490049004900490049004900490049004900490049B2
:201EA000004900490049004900490049004900490049004900490049004900490049004992
:201EC0000049004900490049004900490049004900490049004900490049004900D1964954
:201EE000004900490049004900490049004900490049004900490049004900490049004952
:201F0000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E521
:201F2000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E501
:201F4000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E1
:201F6000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5C1
:201F8000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5A1
:201FA000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E581
:201FC000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E561
:201FE000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E541
:20200000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E520
:20202000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E500
:20204000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E0
:20206000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5C0
:20208000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5A0
:2020A000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E580
:2020C000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E560
:2020E000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E540
:00000001FF

323
hex/tet.hex Normal file
View File

@ -0,0 +1,323 @@
:020000040000FA
:200100002A0600F90000C30C01C30000CD6203CDB808C37B048026B80780260029C37704B0
:20012000C37B04C39604C3E004C3C504C3BC05C34805C30106C32106C34B03C35D03C36A44
:2001400004C35504F80CCD320FCDB50DC3E15E235623E52A1501197E23666FC9E15E23E57C
:2001600016002A1501197E23666FC9E15E235623E52A1501196EC9E15E23E516002A1501E4
:20018000196EC9E15E235623E5EB097E23666FC9E15E23E5EB2600097E23666FC92101005A
:2001A000C82BC9210000C823C9210100D82BC9210000D823C9210100F02BC9210100F82B90
:2001C000C9110100C81BC9110000C813C9110100D81BC9110000D813C9110100F01BC91159
:2001E0000100F81BC97DBBC07CBAC9EB7ABCC07BBDC9EB7CBAC07DBBC9EB7CAAF2EC017AFD
:20020000B7F037C9EB7CAAF2F3017CB7F037C97AF5CD5A02EBCD5A02EBCD2902F1B7F07C7A
:200220002F677D2F6F23C900007CB5C8D5E5CD8902D1CD6B027C2F677D2F6F23D119C9AF59
:20024000326806CD5A02EBCD5A02CD6B023A68061FD07C2F677D2F6F23C97CB7F02F677DA1
:200260002F6F233A68063C326806C9C5CD7102C1C9444D21000078B1C8781F47791F4FD2A7
:20028000830219EB29EBC376027CB5C8C5CD94026069C1C906017CB7FAA0022904C39602B4
:2002A000EB78010000F5CDDD02DAB70203D57A2F577B2F5F1319D1AF7A1F577B1F5FF13D02
:2002C000C8F579174F781747C3A602AF326806CD5A02EBCD5A02EBCD8902C34D027CBAD852
:2002E000C07DBBC9EB1C1DC8AF7C1F677D1F6FC3E602EB1C1DC829C3F4027C2F677D2F6FEF
:2003000023C97A2F577B2F5F13C9210400397E23666FC9210600C30D03210800C30D032158
:200320000A00C30D03210C00C30D03210E00C30D03211000C30D0311500621040039C5064A
:200340000E7E12231305C24103C1C9210000392277062A060011CCF719F9C303012A7706B7
:20036000F9C9E1226A06217A08E52A1B0122640621E80322660621DC592248063EDB325EE5
:20038000063ED33261063EC9326006326306CD3E01AF3273063274063E1F3272063E0332E7
:2003A00076062100CC2240062110002244062140002242062100042246060E0BCD0500B7CF
:2003C00000CAC9030E01CD050021800011F907462378B7C2DC03110100C33A047E122313E2
:2003E00005C2DC03AF1221F907110100017C08AF3269067E23FE20CAF303B7CA3A04FE2230
:20040000C20904326906C30A042B7D02037C0203137E23B7CA3A04C5473A6906B778C1CA8B
:200420002E04FE22C21104AF3269062B7723FE20C211042B360023C3F303D5061B21DE0750
:2004400036002305C24004CD4101AF326E06323F062A6A06E92A1B01EB2A1501CDFA021987
:200460007CB5C81B2BAF12C36004C91B0122640621E8032266062121FFFFC93E10F5CDC56C
:2004800004DA8C046F2600E5CD9604E1F13DFE07C27D04C30901CD0A03CDC504DA77047EA6
:2004A000CD3201E604CAB804E5CD1303C5CDBC05EB0E10CD0500C1E1CD35013600FEFF21DD
:2004C0000000C02BC957D608D8FE093FD8D55F160021DE071919197EE60137D17AC83FC9EB
:2004E000C5CDA705E51306044ECD15002305C2E8020E20C315007AE6380F0F0FC9CDF6025F
:20050000874F213506094ECD1500234ECD15000E20CD1500C31500CDF602E606FE06C2B10D
:20052000020E53CD15000E50C31500CD2E002A0C007CCDC8027DCDC8020E20CD1500CD15F6
:2005400000C9210000392213003A1000B7CA640321FFFF220E003CC264033C3210002A0CA9
:2005600000C38A03CD9106C233052110007EB7CA760335CA33052A0C00CD9406CD2E000E47
:2005800020CD1500CD1500CD2E03CD960257213805011100BECAF004230DC294030E0ABE72
:2005A000CADC04230DC29F030E06BECAC104230DC2AA03E6C0FE40CAA704FE80CA98047A46
:2005C000E6C7D604CA89043DCA83043DCA6F047AE6C0CA3D047AE607CA3204D602CA2704D6
:2005E000D602CA1C04D603CA0D047AE608C2FE047AE6074F3D212C0609CDE602CDF602FE92
:2006000006C29204212906CDE602C36403212506CDE602CDF602CDC802C364030E43CD1593
:2006200000CDFD02C3CC040E4ACD1500CDFD02C3CC040E52CD1500CDFD02C36403210D005C
:2006400000CC400010000004C8D5C8D704FE03DA02000400320000FF001F0AFF0012DB64AF
:20066000C9D3E6C90029E80300CD0F01C3CC002109061F0000CD0302CDB1020E2CCD1500F2
:20068000C3E704210506C38C04210106CDE602CDF602CDB102C364037AE6380F4F21E105E4
:2006A00009CDE602C3B80421DD05CDE602CDF602CDB1020E2CCD15007AE607CDB102C364D6
:2006C000037987874F21C10509CDE602CD9602F5CD960257F15FCD8806C364037987874FDB
:2006E00021990509CDE602CD9602CD8506C364037987874F21550509CDE602C364032169D3
:2007000006CDE6027ACD8506C36403CD2E000E3FCD15002A1300F921000039221300CD2B3B
:2007200003221100CD7C06CD4D012A1100220C00C31E052A1300F9C900070F171F272F37F2
:200740003F76C9E3E9EBF3F9FBC6CED3D6DBDEE6EEF6FE222A323AC3CD45492020535048BE
:200760004C44492020584348475043484C5854484C52455420484C5420434D4320535443DF
:2007800020434D4120444141205241522052414C2052524320524C43204E4F50204350496D
:2007A000204F52492058524920414E492053424920494E2020535549204F55542041434939
:2007C000204144492043414C4C4A4D50204C444120535441204C484C4453484C444D000053
:2007E000000000000000000000000000000000000000000000000000004F524120434D5017
:2008000020494E5220444352204D5649204C58492053544158494E5820444144204C444194
:2008200058444358205253542050535720504F5020505553484E5A5A204E434320504F50DA
:200840004550204D20422043204420452048204C204D204120422020204420202048202078
:200860002053502020505357203F3F3D20000000000000C39706C39F06C30F16C3DE11C35B
:200880000612C3EF11C33412C35D12C34A14C3E112C34E12C37F12E3224B19E3C306DC2AD9
:2008A0000600229D0621970622010021000022060022EC19AF325019C3F708C3420FC3CA6F
:2008C0001AC3DE0EC3BF11C3DD0FC36510C3F80EC38D16C37C13C3F913C35516C38C25C320
:2008E0001A0EC37B17C33918C37814C39E15C35B0FC3E80DC3DD25C5CDBB08CDBE08CDC182
:20090000082A1501116C0219110000732372D52A1501116A0219D1732372D52A15011168CC
:200920000219D1732372D52A1501115D0219D173CD6B015C027DFE6ECA960DCDBB08CDC4D3
:2009400008CDC708CDCA082A15011160021936322336002A150111620219AF7723772A15FA
:200960000111660219110000732372D52A150111640219D17323722A150111700019E5CDC1
:20098000CD08D12A150111780019E5CDCD08D12A150111700019E5CDD008D17CB5CA4B0DEF
:2009A0002A150111700019E5CDD308D1CDD608217F00E52A150111700019E5CDD908D1D1C0
:2009C0002A1501117E0219360A233600CD4D016002E52A1501117C0219D17323722A150131
:2009E000115E0219AF772377210400E52A150111740019E52A150111700019E5CDDC08D19F
:200A0000D1D1CD4D017C0211FFFF197C17D21C0A2A1501115C02193600C3290ACDDF08E55B
:200A20002A1501115C0219D173CD6B015C027DB7C2E80A2A1501117E0219E57E23666FE501
:200A4000CD4D016002E5CD4D017C02D1CDFA0219D119EBE17323722A150111760019E57EE7
:200A600023666F110C0019EBE17323722A150111740019E5CDD008D17CB5CACD0A21210027
:200A8000E52A150111700019E5CDD908D1D1217F00E52A150111740019E5CDD908D1D121A9
:200AA0000400E52A150111700019E52A150111740019E5CDDC08D1D1D1CD4D016002E52A1B
:200AC0001501117C0219D1732372C3E50A2A150111700019E5CDE208D12A1501115E0219BC
:200AE0003601233600C3120D2A1501117C0219E57E23666F2B2B2BEBE1732372CD6B015C57
:200B0000027DFE35C2A70B2A150111760019E57E23666F110C0019EBE17323722A15011119
:200B2000740019E5CDD008D17CB5CAA40B2A150111760019E57E23666F110C0019EBE17373
:200B400023722A150111740019E5CDD008D17CB5C22D0B2A150111760019E57E23666F1150
:200B6000F4FF19EBE1732372212100E52A150111700019E5CDD908D1D1217F00E52A15019A
:200B800011740019E5CDD908D1D1210400E52A150111700019E52A150111740019E5CDDC4D
:200BA00008D1D1D1C3B20CCD6B015C027DFE30C2F00BCD4D01640211F6FF197C17D2ED0B3D
:200BC0002A1501116402195E235613722B732A150111660219E57E23666FE5CD4D016402B8
:200BE000110A00CD3F02D119EBE1732372C3B20CCD6B015C027DFE20CA0D0CFE37CA4E0C1F
:200C0000FE39CA5F0CFE38CA700CC3A60C212100E52A150111700019E5CDD908D1D12A1502
:200C200001115E021936012336002A1501117E021936102336272A150111660219E57E2391
:200C4000666F11CEFF19EBE1732372C3B20C2A1501117600195E23561B722B73C3B20C2AE6
:200C60001501117600195E235613722B73C3B20C2A1501117400195E235613722B73CD5C42
:200C80000174110400EBCD0F027CB5C2A30C2A150111740019E57E23666F2B2B2B2BEBE1AE
:200CA000732372C3B20C2A1501115C02193620C3B20CCD6B015C027DFE20CDA301E52A1545
:200CC0000111740019E5CDD008D1D17CA2677DA36F7CB5CA120D212100E52A150111700033
:200CE00019E5CDD908D1D1217F00E52A150111740019E5CDD908D1D1210400E52A150111B3
:200D0000700019E52A150111740019E5CDDC08D1D1D1CD4D015E027CB5CADD09CDE5082147
:200D20000400E52A150111700019E52A150111780019E5CDDC08D1D1D12A1501117800193E
:200D4000E5CDCD08D1CDE808C38F09CDEB08211700E5210000E5CDEE08D1D121A50DE5CD56
:200D6000F108D1CDDF08E52A1501115C0219D173CD6B015C027DFE64CDA301E5CD6B015CA3
:200D8000027DFE6ECDA301D17CA2677DA36F7CB5C2630DC33009210F00E5210400E5CDF4D3
:200DA00008D1D1C1C970726F646F6C76696D203F00C3BA0DC30126C3DD25C521000039F973
:200DC000444D210400096E7DFE0AC2D50D210D00E5CDB40DD1210400096E2600E52104007F
:200DE000E5CDB70DD1D1C1C9C3EE0DC30126C521000039F9444DCD9001046E7DB7CA180E0C
:200E0000210400095E235613722B731BEB6E2600E5CDEB0DD1C3F60DC1C9C3200EC3DD258F
:200E2000C521FBFF39F9444D21020009AF7723772104000936006069AF772377210200E52E
:200E4000CD1D0ED17CB5CA570E210300E5CD1D0ED1EB210400097360695E235613722B7348
:200E600021FBFF197C17CDA901E5210400096E7DB7CD9D01D17CA2677DA36F7CB5C23C0EF2
:200E8000210200095E235613722B731BD5CD4D017C02D1CDFA01CDA901E5210400096E7D95
:200EA000B7CD9D01D17CA2677DA36F7CB5C2360E2A1501117C0219E57E23666FE5CD90016E
:200EC00002D1CDFA0219EBE1732372210400096E2600C3D50EEB21050039F9EBC1C9C3E4C2
:200EE0000EC33026C521EF0EE5CDE10ED1C1C96E617E6E656D203F00C3010FC3AA1FC35886
:200F000026C521FEFF39F9444DCDFE0EE5CDFB0ED1EB6069732372CD900106E5CD9001003D
:200F2000110700EBCD0F022929EBE1732372CD90010623233605233600EB21020039F9EB41
:200F4000C1C9C3480FC3E80DC521530FE5CD450FD1C1C91F1B36371B373100C3610FC3DD8F
:200F600025C521000039F9444D211B00E5210400E5CD5E0FD1D1213500E5210400E5CD5E2C
:200F80000FD1D1CD90010611200019E5210400E5CD5E0FD1D1CD90010411200019E5210471
:200FA00000E5CD5E0FD1D1C1C9C3AF0FC35B0FC521000039F9444DCD900104110C00EBCD58
:200FC000CB022323E5CD900104110C00EBCD0F0229111E0019E5CDAC0FD1D1C1C9C521FEE3
:200FE000FF39F9444D6069AF772377CD9001001110FF197C17D25C10CD90010029E52A1593
:2010000001117C0019D119E5CD900100110C00EBCD0F027CB5CD9D01CA4210CD90010011EF
:201020000C00EBCD0F0211F5FF197CB5CD9D01CA4210CD900100111BFF197C17CDAF01DA79
:201040004810210100C34B10210000EBE173237260695E235613722B73C3EB0FEB21020075
:2010600039F9EBC1C9C36E10C3A90FC3DD25C521FEFF39F9444D6069AF772377CD900100BB
:201080001110FF197C17D2D010CD90010029E52A1501117C0019D1197E23666F7CB5C2C469
:2010A00010CD900100E5CD6810D1212100E5210400E5CD6B10D1D1212100E5210400E5CDAE
:2010C0006B10D1D160695E235613722B73C37C10EB21020039F9EBC1C9C3DF10C3DD25C5F0
:2010E00021FEFF39F9444D6069AF772377CD90010829E52A150111380019D1197E23666F10
:20110000E5CD900100D1196E7DFE43CA2011FE4CCA4511FE52CA6211FE44CA7F11C38F1185
:20112000210600096E2600E5210400E5CDDC10D1D1210600096E2600E5210400E5CDDC1035
:20114000D1D1C38F11210800E5210400E5CDDC10D1D1210800E5210400E5CDDC10D1D1C3E1
:201160008F11211800E5210400E5CDDC10D1D1211800E5210400E5CDDC10D1D1C38F112145
:201180001A00E5210400E5CDDC10D1D1C38F11CD90010829E52A150111380019D1197E23E7
:2011A000666FE560695E235613722B731BE1196E7DFE45C2ED10EB21020039F9EBC1C9C338
:2011C000CB11C35B0FC3E80DC3D910C521FEFF39F9444D210000E5210000E5CDC211D1D1AE
:2011E00021BB12E5CDC511D121D312E5CDC511D121E312E5CDC511D121F312E5CDC511D15B
:20120000210600E5210000E5CDC211D1D1210313E5CDC511D1210F00E5210000E5CDC2112F
:20122000D1D1210E13E5CDC511D1211B13E5CDC511D1212813E5CDC511D1213313E5CDC536
:2012400011D1214113E5CDC511D1214D13E5CDC511D1216513E5CDC511D16069AF77237789
:20126000CD90010011F9FF197C17D2B212CD90010029E52A1501116E0219D119AF772377D5
:20128000CD900100110300CD3F022323E5213C00E5CDC211D1D1CD9001002929E5217F00EA
:2012A000E5CDC811D1D160695E235613722B73C36012EB21020039F9EBC1C92020202020B4
:2012C000202074656B757D696A20206C757E7B696A0A006F7E6B69202020202020202020ED
:2012E000200A006C696E69692020202020202020200A0075726F77656E78202020202020AD
:20130000200A00736C656475607D61710A0075707261776C656E69653A0A0070726F626535
:201320006C2D776E697A0A0037202D20776C65776F0A0038202D207772617D656E69650A4F
:201340000039202D2077707261776F0A0035202D20756E697E746F76656E69652066696781
:201360007572790A0030202D207577656C697E656E69652075726F776E710A00C38513C32D
:201380005B0FC3CD1FC521FEFF39F9444DCD9001067E23666F110400EBCDCB02EB606973F3
:2013A0002372CD90010029E52A1501116E0219D1195E235613722B73CD900100110300CD2F
:2013C0003F022323E5214600E5CD7F13D1D1CD90010029E52A1501116E0219D1197E23661D
:2013E0006FE521F413E5CD8213D1D1EB21020039F9EBC1C92533640A00C30514C35B0FC341
:20140000E80DC3D910C5210700E5210000E5CDFC13D1D1215014E5CDFF13D1215A14E5CD7A
:20142000FF13D1216414E5CDFF13D1216E14E5CDFF13D1210700E5210000E5CDFC13D1D1D2
:20144000CD5C0178E5217F00E5CD0214D1D1C1C920202020202020200A00202020202020A7
:2014600020200A0020202020202020200A0020202020202020200A00C38414C3DD25C35BD0
:201480000FC3CD1FC521FEFF39F9444DCD4D016202110A00EBCDCB02EB6069732372CD90B0
:2014A0000100E5CD4D016402D1CD0502D2CC14210700E5210400E5CD7B14D1D1CD900100FB
:2014C000E52A150111640219D1732372CD4D01640211F6FF197C17D2FB14CD4D01640211D8
:2014E0000500CD3F02113200CDFA0219E52A150111600219D1732372C307152A150111609A
:20150000021936032336002A150111660219E57E23666FE5CD4D017E0211E803CDCB02E5F6
:20152000CD4D016402D119D119EBE1732372210100E5210700E5CD7E14D1D1CD4D016602EA
:20154000E5218B15E5CD8114D1D1210200E5210700E5CD7E14D1D1CD4D016202E5219115BB
:20156000E5CD8114D1D1210300E5210700E5CD7E14D1D1CD4D016402E5219715E5CD8114F1
:20158000D1D1EB21020039F9EBC1C9253035640A00253033640A0020253032640A00C3A787
:2015A00015C35B0FC3CD1FC5CD4D016602E5CD4D016C02D1CD0502D2ED15CD4D016602E5A3
:2015C0002A1501116C0219D1732372CD4D016402E52A1501116A0219D1732372CD4D0162C8
:2015E00002E52A150111680219D1732372210100E5211000E5CDA115D1D1CD4D016C02E5A7
:20160000214316E5CDA415D1D1210200E5211000E5CDA115D1D1CD4D016802E5214916E531
:20162000CDA415D1D1210300E5211000E5CDA115D1D1CD4D016A02E5214F16E5CDA415D110
:20164000D1C1C9253035640A00253033640A00253032640A00C35E16C3A90FC3D910C52108
:20166000000039F9444DCD90010423237E23666FE5CD5816D1CD9001047E23666FE52106B4
:2016800000096E2600E5CD5B16D1D1C1C9C521F8FF39F9444D21060009AF772377CD900170
:2016A0000C7E23666F29EB2A1501197E23666FEB21020009732372CD90010C23237E2366EF
:2016C0006FEB21040009732372CD900102110200EBCD0F02E5CD90010429E52A1501117C1C
:2016E0000019D1197E23666FD17CA2677DA36FEB6069732372210600095E235613722B73A6
:20170000210400095E235613722B73CD9001062B2B2B2B7CB5C2321721060009AF77237765
:2017200021040009E57E23666F11080019EBE173237221020009E57E23666F110200EBCDC8
:20174000CB02EBE1732372CD9001027CB5CDA301E5CD9001007CB5CDC101E17CA2677DA35D
:201760006F7CB5C2C916CD9001007CB5CD9D01C37217EB21080039F9EBC1C9C521FAFF390F
:20178000F9444D6069AF772377CD90010A7E23666F29EB2A1501197E23666FEB210200095E
:2017A000732372CD90010A23237E23666FEB21040009732372CD900102110200EBCD0F02A0
:2017C0007CB5CAD917CD90010429E52A1501117C0019D119360123360060695E2356137229
:2017E0002B73210400095E235613722B73CD9001002B2B2B2B7CB5C212186069AF77237773
:2018000021040009E57E23666F11080019EBE173237221020009E57E23666F110200EBCDE7
:20182000CB02EBE1732372CD9001027CB5C2B517EB21060039F9EBC1C9C34218C3A90FC3D4
:20184000DD25C521F5FF39F9444D606911D8007323722102000973237221080009110100B7
:2018600073237221060009732372210400093601233600CD90010411F5FF197C17D2F3187A
:2018800021060009E57E23666FE5CD900100E5CD900104D11929E52A1501117C0019D1196B
:2018A0007E23666F7CB5CD9D01D17CA2677DA36FEBE173237221080009E57E23666FE5CD1E
:2018C000900100E5CD900104D11929E52A1501117C0019D1197E23666FD17CA2677DA36F0D
:2018E000EBE1732372210400095E235613722B73C37318CD9001067CB5CA8619CD90010042
:20190000E5CD900102D1CDE501CA8319CD90010223E5CD3C18D1210400093601233600CDB3
:2019200090010411F5FF197C17D26E19CD900102E5CD900104D11929E52A1501117C001983
:20194000D119AF772377212100E5210400E5CD3F18D1D1212100E5210400E5CD3F18D1D1EF
:20196000210400095E235613722B73C31F1921020009E57E23666F11F4FF19EBE1732372CC
:20198000C3FC18C3921ACD9001087CB5CABF192A1501116202195E235613722B732A1501C0
:2019A00011660219E57E23666FE5CD4D016402110500CD3F02D119EBE1732372C3921ACDB6
:2019C000900100E5CD900102D1CDE501CA801ACD90010223E5CD3C18D12104000936012367
:2019E0003600CD90010411F5FF197C17D2801ACD900102E5CD900104D11929E52A15011142
:201A00007C0019D119E5CD900100E5CD900104D11929E52A1501117C0019D1197E23666F7F
:201A2000EBE1732372210A00093621CD900100E5CD900104D11929E52A1501117C0019D1F3
:201A4000197E23666F7CB5CA501A210A0009367F210A00096E2600E5210400E5CD3F18D1FD
:201A6000D1210A00096E2600E5210400E5CD3F18D1D1210400095E235613722B73C3E21932
:201A800021020009E57E23666F11F4FF19EBE17323726069E57E23666F11F4FF19EBE1734E
:201AA0002372CD9001007C17CDAF01E5CD9001067CB5CDC101E17CA2677DA36F7CB5C259D9
:201AC00018EB210B0039F9EBC1C9C3D01AC3DD25C521CE1DE52A150111380019D17323728D
:201AE00021DF1DE52A1501113A0019D173237221F01DE52A1501113C0019D17323722101B3
:201B00001EE52A1501113E0019D173237221121EE52A150111400019D173237221231EE541
:201B20002A150111420019D173237221341EE52A150111440019D173237221451EE52A1599
:201B40000111460019D173237221561EE52A150111480019D173237221671EE52A1501115A
:201B60004A0019D173237221781EE52A1501114C0019D173237221891EE52A1501114E00B2
:201B800019D1732372219A1EE52A150111500019D173237221AB1EE52A150111520019D1A6
:201BA00073237221BC1EE52A150111540019D173237221CD1EE52A150111560019D173238E
:201BC0007221DE1EE52A150111580019D173237221EF1EE52A1501115A0019D17323722125
:201BE000001FE52A1501115C0019D173237221111FE52A1501115E0019D173237221221F09
:201C0000E52A150111600019D173237221331FE52A150111620019D173237221441FE52AAC
:201C2000150111640019D173237221551FE52A150111660019D173237221661FE52A150139
:201C400011680019D173237221771FE52A1501116A0019D173237221881FE52A1501116C66
:201C60000019D173237221991FE52A1501116E0019D17323722A150136172336002A1501DD
:201C8000232336112336032A15011104001936742336002A15011106001936232336022A9C
:201CA00015011108001936472336002A1501110A001936132336012A1501110C00193671D2
:201CC0002336002A1501110E001936222336032A15011110001936632336002A15011112B0
:201CE000001936322336012A15011114001936632336002A15011116001936322336012A2D
:201D000015011118001936362336002A1501111A001936312336022A1501111C001936366E
:201D20002336002A1501111E001936312336022A15011120001936272336002A150111224D
:201D4000001936312336012A15011124001936722336002A15011126001936322336022A9D
:201D600015011128001936332336002A1501112A001936332336002A1501112C00193633E4
:201D80002336002A1501112E001936332336002A150111300019360F2336002A15011132D5
:201DA000001936222336222A150111340019360F2336002A15011136001936222336222167
:201DC0000E00E5210400E5CDCD1AD1D1C1C9434343444C4C4C434545454545454545004387
:201DE000444C43444C4343454545454545454500525243444C4C4C4343434545454545455C
:201E0000004343444C43444C43454545454545454500434343444C434545454545454545AA
:201E20004545004343444C4C43444C43454545454545450043444C43434345454545454583
:201E400045454545005243444C43444C4C4343454545454545004343444C43434545454556
:201E6000454545454545005243444C4C4343444C4C434545454545004343444C434345452F
:201E80004545454545454545005243444C4C4343444C4C43454545454500524343444C4CF7
:201EA0004C4343454545454545450043444C4343444C4345454545454545450052434344FD
:201EC0004C4C4C4343454545454545450043444C4343444C434545454545454545004343DB
:201EE00043444C4C434545454545454545450043444C4343444C4C434545454545454500B8
:201F00005243444C4C4343434545454545454545005243444C4C4343444C4345454545453C
:201F200045004343444C4C4343454545454545454545004343444C4C434345454545454581
:201F4000454545004343444C4C4343454545454545454545004343444C4C43434545454561
:201F600045454545450043434343454545454545454545454545005243444C43444C434441
:201F80004C4345454545450043434343454545454545454545454545005243444C43444C19
:201FA00043444C43454545454500C521000039F9444DCD9001047C17D2C51FCD900104CD2F
:201FC000FA02C3C91FCD900104C1C9C1C9C3D61FC30126C3F01FC521000039F9444D2AD1CC
:201FE0001FE521040009E5CDD31FD1D1C1C9C1C9C3FF1FC3E923C39124C3C024C32325C5B6
:202000002159FF39F9444D21AB00095E23561313722B731B1BEB7E23666FEB21040009737F
:202020002372CD9001ABEB21A50009732372210400095E235613722B731BEB6EEB6069737D
:202040007BB7CADA2360696E7DFE25C2AB2321060009EB219C000973237221A3000936062E
:2020600023360021A000091E0073219E000973219F000973CD9001046E7DFE2DC28F20212B
:202080000400095E235613722B73219F000934CD9001046E7DFE30C29F2021A0000934CD75
:2020A0009001046E2600E5CDF61FD17DB7CABC2021040009E5CDF91FD1C3BF20210000EB0E
:2020C00021A10009732372210400095E235613722B731BEB6EEB6069737BFE2EC2072121B8
:2020E000040009E5CDF91FD1EB21A30009732372219E000934210400095E235613722B7354
:202100001BEB6EEB60697360696E2600E5CDFC1FD17DFE44CA3821FE55CA7421FE58CA7DF8
:2021200021FE4FCA8621FE43CACC21FE53CAFD21FE00CA7623C37C23CD9001A57E23666F53
:202140007C17D27421219C00095E235613722B731BEB362DCD9001A5E5CD9001A57E23666A
:202160006FCDFA02EBE173237221A100095E23561B722B7321010009360AC38C2121010089
:20218000093610C38C2121010009360821A10009E57E23666FE5210100096E2600E521A5A2
:2021A00000095E23561313722B731B1BEB7E23666FE5219C0009E5CDF31FD1D1D1D1AF67A9
:2021C000CDFA0219EBE1732372C37522219C00095E235613722B731BD521A500095E235699
:2021E0001313722B731B1BEB7E23666FEBE17321A100095E23561B722B73C37522219E00ED
:20220000096E7DB7C2102221A3000936C823360021A500095E23561313722B731B1BEB7E80
:2022200023666FEB21020009732372CD9001026E7DB7CA7522CD9001A37CB5CA7522219CD4
:2022400000095E235613722B731BD5210200095E235613722B731BEB6EEBE17321A30009E5
:202260005E23561B722B7321A100095E23561B722B73C32B22CD90019C360021060009EB34
:20228000219C0009732372219F00096E7DB7C2E32221A100095E23561B722B731321FFFF3F
:2022A000197C17DAE322CD9001ADE5CD9001AFE521A000096E7DB7CAC022213000C3C322A0
:2022C000212000E521D122E5210600397E23666FE9D1D1D1237CB5C2E02221FFFFC3E023B0
:2022E000C39122CD90019C6E7DB7CA2723CD9001ADE5CD9001AFE5219C00095E23561372B4
:202300002B731BEB6E2600E5211523E5210600397E23666FE9D1D1D1237CB5C2242321FFB3
:20232000FFC3E023C3E322219F00096E7DB7CA732321A100095E23561B722B731321FFFF46
:20234000197C17DA7323CD9001ADE5CD9001AFE5212000E5216123E5210600397E23666FF9
:20236000E9D1D1D1237CB5C2702321FFFFC3E023C33123C3A823210000C3E023CD9001ADDC
:20238000E5CD9001AFE560696E2600E5219923E5210600397E23666FE9D1D1D1237CB5C21A
:2023A000A82321FFFFC3E023C3D723CD9001ADE5CD9001AFE560696E2600E521C823E5217A
:2023C0000600397E23666FE9D1D1D1237CB5C2D72321FFFFC3E023C32E20210000C3E023FF
:2023E000EB21A70039F9EBC1C9C3EF23C3E923C521FFFF39F9444DCD900107E5CD90010987
:20240000D1CDEC01D23D24CD9001055E235613722B731BD5CD90010711F6FF19DA2A24CD38
:2024200090010711300019C33224CD90010711370019EBE1732101002600C38824CD900177
:2024400009E5CD900107E5CD900109D1CD8902E5CD900105E5CDEC23D1D1D1EB606973CD44
:20246000900109E5CD900107E5CD900109D1CD2902E5CD900105E5CDEC23D1D1D160696EB0
:202480002600232600C38824EB21010039F9EBC1C9C521000039F9444D210400096E26003F
:2024A00011D0FF197C17CDAF01DABC24210400096E260011C6FF197C17CDA901C1C9C1C98A
:2024C000C3C624C39124C521FEFF39F9444D6069AF772377CD9001067E23666F6E2600E555
:2024E000CDC324D17DB7CA1325CD900100110A00CD3F02E5CD9001065E235613722B731B3C
:20250000EB6ED1AF671911D0FF19EB6069732372C3D424CD900100C31A25EB21020039F952
:20252000EBC1C9C32925C35D25C521000039F9444D210400096E2600E5CD2625D17CB5CA9C
:202540005025210400096E260011E0FF19C35725210400096E26002600C1C9C1C9C521001A
:202560000039F9444D210400096E2600119FFF197C17CDAF01DA8825210400096E260011A4
:2025800085FF197C17CDA901C1C9C1C9CD37032A54067CB5C8C5444D2A5206EB2A5006CDEC
:2025A000DD02DABB253E023CEAAF25EDB0C1C97E1223130B78B1C2AF25C1C90B09EB09EB14
:2025C000033E023CEACB25EDB8C1C97E122B1B0B78B1C2CB25C1C97CBAC07DBBC9CD37032F
:2025E000C52A01002B2B2B3A50064787805F160019E52A5206444D21FC25E3E96F2600C1A2
:20260000C9CD0A03C50E02FE0AC215261E0DCD05000E023E0A5FCD05000E0BCD0500B7C253
:202620002426C1C90E01CD0500FE03CA2001C1C9C33626C3E80DCD0A03E5CD3326E1C521EC
:202640007856E50E0BCD0500E1232323B7CA4226224806224A06C1C92A4806EB3E48A3CAE7
:202660006626EA6626372A4A067C17677D176F224A067A17677B176F2248067CE67F67C9BE
:20268000170011037400230247001301710022036300320163003201360031023600310287
:2026A000270031017200320233003300330033000F0022220F002222CE1DDF1DF01D011E96
:2026C000121E231E341E451E561E671E781E891E9A1EAB1EBC1ECD1EDE1EEF1E001F111F00
:2026E000221F331F441F551F661F771F881F991F0400110004001D000400050001000000B6
:202700000000000000000000000000000000000000000100010000000000000000000000B7
:20272000000000000000000000000100010000000000000000000000000000000000000097
:20274000000001000100000000000000000000000000000000000000000001000100000075
:20276000000000000000000000000000000000000000010001000000000000000000000057
:20278000000000000000000000000100010000000000000000000000000000000000000037
:2027A000000001000100000000000000000000000000000000000000000001000100000015
:2027C0000000000000000000000000000000000000000100010000000000000000000000F7
:2027E0000000000000000000000001000100000000000000000000000000000000000000D7
:202800000000010001000000000000000000000000000000000000000000010001000000B4
:20282000000000000000000000000000000000000000010001000000000000000000000096
:20284000000000000000000000000100010000000000000000000000000000000000000076
:20286000000001000100000000000000000000000000000000000000000001000100000054
:20288000000000000000000000000000000000000000010001000000000000000000010035
:2028A000010001000000000000000100010000000000000000000000010000000000000013
:2028C0000000010001000100010001000100010001000100010001000100010000000000EB
:2028E000320000000000CFFF0000000000000000010001000000010000000000FFFF700067
:10290000310028C33200CD006A00CD006A000E01FC
:00000001FF

34
hex/type.hex Normal file
View File

@ -0,0 +1,34 @@
:020000040000FA
:20010000213601F9110000D5E9726F444F5320545950452046494C45205574696C69747942
:20012000284329204952494D532C204D6F73636F772031393835CD59020E31116503CD051A
:20014000003D3D3260032180002263037E326203CDD202DA6E02FE20CA5001CDD202DAB7FC
:2001600001FE20C25B01CDD202DAB701FE20CA6601FE50CA9F01FE44C280013E01C39101EF
:20018000FE43C28A013E02C39101FE46C269023E03325F03CDD202DAB701FE20CA9401FE48
:2001A00050C269023EFF325E03CDE902DAB7017DB7CAB7013260030E0F115C00CD0500FE03
:2001C000FFCA6E022100012263033A6003326203CD2F03D8FE1AC83261035FCD84023A616E
:2001E00003FE0AC2D0013A5D03B7CA3602CDC502B7CAED01FE03CA7302FE20CAD001FE1004
:20020000C21B020E31116903CD0500EEFF326F030E31116D03CD0500C3ED01FE0DC22C02A2
:200220003EFF325E03AF325D03C3CA01AF325D03325E03C3D001CDC502B7CA45023EFF32EC
:200240005D03C3ED013A5E03B7CAD0013A62033D326203C2D001C33D020E0CCD0500FE2688
:20026000DAD102FE30D2D102C91E00C375021E01C375021E02217103160019195E23560EA2
:2002800009C305003A5F03B7CACC02FE01CAC7027BE67FFE20D2CC02FE0DCACC02FE0ACAFD
:2002A000CC02FE09CACC02FE0ECACC02FE0FCACC023A5F03FE03C8D51E5ECDCC02D17BF6F5
:2002C000405FC3CC021EFF0E06C305000E02C30500763A6203B7C2DB023FC93D3262032AAC
:2002E0006303237E226303B7C90E0ACDD202210000D2F602B7C9FE20C8CD1103D8B93FD85C
:20030000545D6F260079CD2203E5CDD202E1C3F102DE30D8FE0ADA1E03DE07FE0AD8FE1053
:200320003FC9B7C81FD2290319EB29EBC322032A63031100FF197CB5CC4503D82A63037E35
:2003400023226303C91180000E1ACD0500115C000E14CD05001F218000226303C90000002C
:2003600000000000001C0000003800000038FF000077030E0418046F7B69626B61206B6FCF
:200380006D616E646E6F6A207374726F6B692E206973706F6C787A756A74650D0A54595087
:2003A000452055464E205357495443482020200920696C690D0A545950452055464E205361
:2003C00057495443482050200920696C690D0A545950452055464E205357495443482050E3
:2003E000230D0A097320706572656B6C607E6174656C656D205357495443483A094E4F205C
:2004000020204420202043202020460D0A246E65742066616A6C61240D0A54595045207062
:2004200072657277616E61241A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A38
:200440001A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A5C
:200460001A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A3C
:20048000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5BC
:2004A000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E59C
:2004C000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E57C
:2004E000E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E55C
:00000001FF

322
hex/wm.hex Normal file
View File

@ -0,0 +1,322 @@
:020000040000FA
:20010000C36902C3600220434F5059524947485420284329203139373820204D4943524F4C
:2001200050524F20494E5445524E4154494F4E414C20434F52504F524154494F4E20202006
:200140002020200D0A000D4D6963726F50726F20574F52444D41535445522072656C65619F
:20016000736520312E3037412073657269616C202320574D38383733554E2020200D0A00E5
:200180003E1BCDEF013E36CDEF013E31CDEF01C90000000000003E1BCDEF013E35CDEF01DD
:2001A0003E2085CDEF013E2084CDEF01C900000000000000000000B82917400000000000FF
:2001C00000010101000000000000000000000000000000000000000000000000000000001C
:2001E000000000000000000000000000C34F02C39225210000228326C5D5E5CD80013AC1BD
:2002000001CD4F02E1D1C1C92A8F26AF32A126D5EB2A8326CD9F1FEBD1C8228326C5D5E510
:20022000CD96013AC201CD4F02E1D1C1C34E23E52A832625CD0B02E1C9F53ABB01CD9B25BF
:200240003ABC01B7C49B253AC301CD4F02F1C93C3DC8F5CD4E23AF003DC25802F1C3500214
:2002600031B6293EFFCD7402FF31B629AFCD7402CDD91F00324C2721000039226027114629
:2002800001CD0E23110601CD0E232A0100113000197E23B7C29F027E3CCAB2022B7E23FE07
:2002A00002C2AF027EFE64D2AF02FE01D2B2023EFFFEAF324B273ABD01B7C2C70221FDFFFC
:2002C000463EA977AE703C214927773A0300E603FE02D2D70236FFCD01192AB701EB21310C
:2002E000273E04732372233DC2E302AF1213EB2239272A3927223B27223D27223F272241C6
:20030000271180260EB1AF12130DC20703325B00326800326B00327D002A06007DFE06CAA5
:2003200026037CD607672B2243273AB801C60FBCDA4503CDE71F4E4F5420454E4F554748CD
:20034000204D454D007CB71F1F1F3C3CE63C47322B2707322E2778FE08D25E033E083230C2
:20036000277CFE64210004222627DA6E03292228273E08322C27DA7A0387322D27215D0052
:200380007E2BFE20C29703CDE71F4E4F2046494C45204E414D45007ECD52207711AB26D55E
:2003A000011000CD0C1F7EE1B7CAB003CD5220773A5C00BECABC033EFF321C277E11D126D6
:2003C00012213B04010B0013CD0C1F3A1C27B7CAFD0311AB26CDF41FCAFD03CDE71F4649A8
:2003E0004C4520455849535453204F4E2044455354494E4154494F4E2044534B00115C00DE
:20040000CDF41F3EFFCA0E04325B00C32104321D27CD06230A4E45572046494C450D0A0AAD
:200420000011B426D5CD061F11AB26CD2820D1214304CD091FCD4D1CC3B904574D424143C5
:200440004B5550242424CD6804CD0520215C007E326C003AAB2677C3F202CD680411D12602
:20046000CD28202A6027F9C9CD511D211D277EB7115C0021531FCC6D2011AB26216500C39B
:200480006D20CD9704C2B904CD052011AB26CD0820216C00C35304CD06230D0A41424F5247
:2004A000542028592F4E293F2000CD3022CD4C06FE59C9CD9704CA63042A6027F921B904C3
:2004C000E5CDFA23CD680621A8267EB7C2DE0435216C283600224D27CDF710CD68063E2A1D
:2004E000CDFC24CD3022224D277EB7C2F6043A6B28FE0ACA8D0747E523CDF122E1B7C21994
:200500000578CD4C06FE48CA4604FE51CAB304FE4FCA8204FE45CA5A04CD4105C8CD06233C
:200520000D0A203F3F3F002A4D27EBCD0E23CDE324C3B904CD0912CDE324D1CD0E23C31D81
:2005400005C5D5E5224F27CD6806213606E52A4F27CD0608CDF122224D27E5CD4906224F9F
:2005600027E1B7CA2706FE3ECA2706FE3BCA7C06FE11CA5419FE04CA2C06FE56CAF710CDD7
:20058000B421CDF1222254272A5427CD4906225227224F27B7CA9007FE43CA2C07FE44CAB3
:2005A0003207FE4BCA7807FE4CCA5407FE50CACD07FE54CA9A07E52A5827EB210200CD9F50
:2005C0001FE1D2CA05FE42CA4707FE2FC2DD053EFF325E27CD4906224F27225227FE46CA00
:2005E0003508FE4ECA3B08FE52CA4708FE53CA4108CD5506FE51CAAB06CD5F06C22706FE87
:2006000041CAD408FE49CAD708FE5ACA0F08FE3CCA8906FE4DCA8906FE21CAF408FE57CA8F
:20062000201AFE59CADF19E1B7C3CC1F3A4C27B7CA2706C338003B3BCD6806CD2808C288D3
:2006400005C34E057EB7C823C9CD4406FE61D8FE7BD0E6DFC9F53A5C27B7FA1D05F1C9C56D
:20066000473A5E27B778C1C9210002224527224727210000225E272D22A526C9224F27CD6A
:200680004406C8FE0DC8C37C06EBCD19072A5A27EBCD4105D8FE3ECA9E06B7C21D057AB365
:2006A000C81B7AB3C8CDD623C39106CD4906224F27225227FE50CA5B0AFE58CADA06F5CDB4
:2006C0001A08F1FE4CCA2E0AFE54CA3A0AFE4BCA470AFE47CA4E0AC31D05CD19072A4F271E
:2006E000E52A5427E52A5827E5CDB91E2A3327CD4105DAF806C20E07E1225827DC0608CDDA
:200700001A08C2E506E1225427E1224F27C9CD06232051583F00C3270521C4D639D8CD3490
:2007200005535441434B204F56464C00CDA00DC3871ACDA00DFA3E07223F27C34107223D5E
:2007400027CD9B1DC38D1A3A5C272F21FFFF325C27225827CD040ECD871ACD2808C25407BB
:20076000C91101002A5827E5EBCD5107E1225827C93EFFFEAFC34E07CD040EC335072101B3
:2007800000AF325C27AF321E27225827C9CD7E07CD5407210100AFCD8207CDE80DEBFAB36A
:2007A000072A3F27EBD2BB07CDBB073E7DCDFC24C3FC242A3D273E7BDCAD07CD0608CD9FEB
:2007C0001FC81ACDFC2413CDD623C3BE072A5827E52A5C27E5CD28082AB90126002BE5C4CF
:2007E0005107E1CD9607E1225C27E1225827CD1A08CDB51CC03A5C27B7213F27F2020821E9
:200800003B27CDFB1EC0E5210000CD8107E1C92100A0E3E32B7CB5C21208E52A58277CB54D
:20082000CA24082B225827E1E52A58273A1E27B4B5E1C3D623CDB50CC34A08CD960CC34AE3
:2008400008CDEB0CC34A08CDA80CD21A08CD5F06C25E08CD06232023232000C32705CD7040
:2008600008CD0608E1B737C3CC1FCD1907CD70082A4F27CD4906224F27FE3CCA6A08FE4DD1
:20088000CA6A08FE41CACE08FE46CACE08FE49CACE08FE4ECACE08FE52CACB08FE53CACBB3
:2008A00008FE57CACE08FE59CACE08FE3BCC7C06CA7008FE51C2C308CD4906224F27FE4CA1
:2008C000CACE08FE3EC8B7C8C37008CD1A09CD1A09C37008CD61072A52277EB7CACE0ACD23
:2008E0001309CD1B0C3A6227B71143013E02CC230CC31A083A5827F5CD0608F1E67FCDACA1
:200900000BFE1AC0CD0623205455524B4559200D0A00C9E52A5227C31E09E52A4F27C5F549
:20092000116327D50EFFCD4406FE0EC23B093E0D0C13123E0A0C1312C32609FE19C2450903
:200940003E1BC33509CD5B09C22609326227224F27AF12D1791213F1C1E1C90C1312FE1AF3
:20096000C8FE1BC8B7C9C5D5E5D5AF0E1012130DC26D09D1D52A4F27CDF1223A4B27B7C278
:200980009A09D5224F27019F01114F27CD05002A4F27D1FAAC0912C3AC09237E2BFE3AC2DD
:2009A000AC09CD120ACAAC09D6401223130E08CDF409FE2EF5E521F009C4091FE1F10E03ED
:2009C000CCF309D1131A1BFE20CADB09CDF122CD4406224F27CD5E09CACC1FCD3405494E55
:2009E00056414C49442046494C45204E414D45004C494223CD120ACA070A12130DC2F40957
:200A0000CD120AC2000AC9F53E2012130DC2080AF1C97ECD1D0AC823CD4C06B7C9FE2EC855
:200A2000FE3AC8FE2AC8FE3FC8FE20D0BFC9CD430ACD1309213527C31E0C213327CD911FE6
:200A4000C3BE07CD5F06C02A3327223527C9213327CDFB1ECD951FEBC3290CCD430A21351C
:200A600027CD680CCD040EEB2A3F27EBCD851F213527CD820ACDB91ECD8D1ACD2808C25E4D
:200A80000AC9CD8D0CC8CD680CCDA10AEB2A3F27EBCD3F0CEB223F27EBCD9B1D05C2860AE4
:200AA000C9C5D5E5213327CDFB1E2A3127EB2A4327CD7C1FCD711F0911800DCD9F1FDACCEF
:200AC0001FCD3405514255462046554C4C00CD0608CD650CCDBE18F5DC850BF1DAD40ACDDD
:200AE000F024CDD623FE1AC8FE1BC821D40AE5FE1FCAF90AFE7FC2060BCD140CCDFC242241
:200B00003D27CD9B1DC9FE20D2AC0BFE19C2120B3E1BFE05CAE324FE15CA210BFE18C23048
:200B20000BCDE324CD140CFE0AC8223D27C3240BFE08C2490B3A8426B7C8CD140CFE0AC865
:200B4000FE0DC8CDB90BC3FF0AFE1CC27D0B3A8426B7C8CD140CFE0DC8FE0AC8F5CD430BFE
:200B6000F1FE09CA4E0BFE20CA4E0B3A8426B7C8CD140CCDD70ED0CD430BC36B0BFE12C221
:200B80009D0BCDE3242A3D272BCDEB0BDA950B7EFE0AC2880B23EB2A3D27C3BE07FE0DC217
:200BA000AC0B3E0DCDAC0B3E0ACDFC24F5CD550CCD951FF17723C3FF0AFE09C2D60BEB2AC0
:200BC000A72546EB04C805C8CDE00B05C2C80BEB2B22A725EBC9FE1BCAE00BFE20DCE00BC2
:200BE000CD2F023E20CD6725C32F02EB2A3B27CD9F1FEBD0EB2A3D27CD7B1FE5CDC11C2AF6
:200C00003D27D1F519F1C92A3D272BD5CDEB0BD1D87EB7C9CD070CD03333C9213D27116307
:200C2000271A134F0600C32C0C213D27CD921DCD8D0CC8CD680CCD3F0C05C2330CB7C9E51D
:200C4000CD951F1AE67F7713230DC2430CEBE37323722BD1C9D52A3D27EB2A3F27CD9F1FC5
:200C6000D1213D27D8213D27C5D5E5CDFB1E78B7C2CC1FCD951E7AB7C24C1ECD9E1AD26BE1
:200C80000CCD34054D454D2046554C4C00CD561F040C0DC005C9CDBD0CD0CD871AD2960CDB
:200CA0003A5C27CD4B0737C9CDF30CD0CD871AD2A80CC3A00CCDBD0CD0CDAE1AD8CD13099D
:200CC0003A5C27B7FAD80C213F27CD240D2A3F27D8CD510DD8C3E50E213B27CD240D2A3D34
:200CE00027D8CD390DCD790DC3D40CCDF30CD0CDAE1AD8CDBD0C3A6327CD1A09D8473A5CE4
:200D000027B778FA120D2A3D27CD3C0D223D27C31B0C2A3F27CD4A0D223F27CD1B0CCD361D
:200D20000DC3E50ECDFB1E031B1A13C5477990C14F78DE0047C92A3D273A6327E5677D9485
:200D4000E16F7CDE0067C93A6327856F7CCE0067C91AB7C8D5CD7F0EDA770D050DE5131A3D
:200D6000B7CA760DBE23CA5E0D2BCDAB0E23CA5E0DE1D1C3510DD1D1C91AB7C823D51ACD9A
:200D8000960EDA770D050DE513231AB7CA990DBECA880DCDAB0ECA880DE1D1B7C27D0DC963
:200DA000C5D50100002A5827EB3A5C27B7FAC70D2A3F2719D2BD0D23444D21FFFFEB2A4154
:200DC00027CDBD1FC3DF0D2A3D27CD7C1FDAD80DCD671F444D210000EB2A3B27CDAB1F09C3
:200DE000C34C0E3EFFCD8207D52A5827E5CD040ED1D2530CF5CDAE1AD2FE0DF1D1C9F1EB31
:200E0000225827D1C5D52A5827EB215C277AB3C2130E357EB7FA2F0ECDF81ECD951FCD7D2F
:200E20000EDA4B0E050D1B7AB3C21E0EC34B0E13213B27CDFB1E2A3D27CD4E23CD940EDA7C
:200E4000760E050D1B7AB3C2390E23EBAF321E27CDB51CC25C0E210000221E27225827EB99
:200E60002256273A5C27B7E521FFFF19DACC1F2A1D2729C3CC1F1BEB3EFFC34D0E3E0A048B
:200E80000CC38A0EBEC4AB0E23C80DC2840E05C2840E37C93E0A040CC3A10E2BBEC4AB0EDB
:200EA000C80DC29B0E05C29B0E37C9FE13CAC70ED0FE01C8FE0FC0131A1BB7CAC50EBE3ED6
:200EC0000FCAD00E13BFC97ECDD70E3E13D2C50EB7C9CDFA2237C8CD2922D8CD4C06FE41E4
:200EE0003FD0FE5BC9C5D5E5EB2A3B27CD9F1FDC1D0F2A412723CD9F1FD41D0F2A3D272347
:200F0000CD9F1FD20D0FEB113B27C3281E2A3F27CD9F1FDC1D0FEB113F27C3051ECD340580
:200F20005055544355522045525200CDE318CD60162BA63600C2640F219E267E3600B7F539
:200F4000C4F016F1C2570F2185267EB7F2540FAF77329B26CD74163A93262A952622932635
:200F6000BDC458133A9B26B7C2A40FCD0215CDF2012A8526CDEA173E7BDCAD07110000CDF0
:200F80005D10E6C0C25510CDFA17CA990FFE0AC2930F13CDFC24C37F0FEB2285263EFF32E3
:200FA0009B261E003A9C26B7C239102A9126CD0B02CD6E18CD5D10E6E8C25510CD7F18DA19
:200FC000D00FFE0ACAD40FCD2124CD4E23C3BC0FCD1F243A2B033A9D26B7C23910CD5D102E
:200FE000E6E8C25510D5EB2A8926CD9F1FEBD1D20610CD5D10E6D4C25510CD7F18DA0610C5
:20100000CD2124C3E50F2A8326E5CD1F243A8326219726BECA1A10D23510218026BED23529
:2010200010CD5D10E680E1C25510E53E0ACDFC241EFFC30A10E122972621FFFF229C261E03
:2010400000CD080221A3267EB7C82336FF3E3CCD6725C308023E0ACDFC24C30802C5D5E559
:20106000CD4E230106002AB725EB1B0DCA8410131A3CC27A1011B9251A3C3DCA8410CDBB97
:2010800010C36B103AA226FE02DA92103A9F26CDBB103AA326F6F3A0473A8F26B778CAA38F
:2010A00010E6BF471F78D2B8103A8F26C604218026BE78DAB810E6C3C3CC1FFE7FC2C51040
:2010C0003E20B047C9FE20DACC103E2021D610CD4A0D7EB047C900400080008000200008EF
:2010E00001400105302000008000000000000030018020000020082100FF22A526AF32A250
:20110000263AB901D6023280261FB71F328526CD2514CD070CDA2511FE0DC22511CD7C18D9
:20112000FE0ACC1612CD2B0FAF325F273A9F2621A026BEC238113EFF77212511E521A226BD
:2011400035CA4711F275113601CDB418329F26FE00C2751121A2267EF53600CD640FF121CF
:20116000A2263604FE04C26B113610FE10C272113640C3491121A4267E3600B7CAA811CD5B
:201180007C18DAA011FE0DCAA011FE09CAA011FE7FC296113E7EFE20D29D113E5EC3A211D6
:2011A0003E20CD6725CD0802CD4E233A9F26FE08CA4814FE20D23A15F58721C511CD4A0D62
:2011C000CD951FF1E945136D1289122C14161203133F12EC142A123A155419DD141612ABB7
:2011E0001594150B151A15B61214142A127614BF1445130914C112CE147C13051260141AFB
:201200001546134814E1CD060821A6267EB7C8342A8026C30B02CD7413CD7518CD4C16F5B8
:20122000CDE50EF1FE0DC0C31612CD140CCD5616CDE50ECD070CFE0DC0CD5813C32A12CDB2
:201240007413CD6E18CD7F18DAE50ECDD70EDA4512CD4C16CD7F18DAE50ECD4C16CDFA2228
:20126000CA54122BC3E50ECD5616CDE50ECD5813CD140CCDFA22CA6712CD5616CDE50ECD4D
:20128000140CCDD70EDA7C12C9CDF315CAAC12AF3290262A8326E5210000228326CD1618B8
:2012A0002A5627CDE50E3A8326C32E1316003EF0329026C3F71216003A9026F6073CC3B036
:2012C00012CDEC15F5218F268621802696DAF5123C218526BED2F5127E3DFAF512CD601601
:2012E000CAF51221A2263601CD7C13CD2817CD0802F1C3C412F1572A8326E52E00CD7413B2
:20130000C33213CDEC15CD58132A8326E5210000228326F56FCD16182A5627CDE50EF1471D
:20132000218526CDFC133A832690F22E13AF57210000228326CD6E18CDFE15CD1216CDE593
:201340000EE1228326C9CDF315CA62132A8526CD7107210000228526F53A9C26B7CC001565
:20136000F1C9D52A87262BE5CD7407D12A852619228526D13A9C26B7C0C325143AA226FEE3
:2013800011D20114CD6016CA01143A85263DF2A213CD75183E01CDF612CD2817DC2514C318
:2013A0008A13CD6916AF3282262A9726CD0B023A8326218D2686572A8B26CDA318CD7F189F
:2013C000DAEA13CDFC243A8326E521822686E1BADABD13CD7F18DAEA13CD6C24DAEA13FE80
:2013E0000ACAEA13CDFC24C3D3132A8326229726CDD416CD59163A8D262193262F3C8677B2
:20140000C9CDEC152F3CC30C14CDEC152185268677C33F14CD140C2A852623CD71072A8066
:20142000262B228526F5AF329B26F1C9AF32A726CD75182A8526EB2A872619AFCD4E07CDE7
:2014400025143EFF329E26C9CD140CCDFF0ACDC514CD5616CD070CFE0DCA4814C9CD4B14AF
:20146000CD140CCDFA22CA5D14CD4B14CD140CCDD70EDA6914C9CD7518CDFA22C28E14CDFC
:20148000EF14CD7518CDFA22CA7F14C3B214CDB214CD070CDA9B14CDFA22C0CD7518FE2003
:2014A000CAA614FE09C0CDEF14C39B14CDEF14CD7518CDD70EDAAC14CDD20ED4EF14C9CD0F
:2014C0000608CD78071EFFF5AF329C26F1C9CDBF14CD0015CD7E07D5CD7807D1C9CD75185A
:2014E000FE0DC8FE0AC8CDEF14C3DD14CD7518CDC514223F27CD9B1DFE0DCAEC14FE0AC01B
:201500001EFFE5210000229C26E1C921A3267E2F77E521FFFF229926E1C9CD640FCDB418A4
:20152000FE1AC23015CD0409CD0F08CDC5143E1AFE0DCAAB15FE0ACC2514F52A9126CD0B80
:2015400002F1D51E00CD2124D1CDAC0B57CD7C18DA7915FE0DCA7915473AA326B778C2C7B9
:2015600014BACA7315FE20DAEF147AFE20DCC714DAF214CDF214C383153A8326218F26BE7C
:20158000C2C714E5CD56182291262A8326228F26E1C31115CDEC15F5CDE2152A3D272B2BD6
:2015A000CDE50EF13DC29715C30015CD4F163AA326B7CACB15CD7C18DAC215FE0DCAC215A3
:2015C0001EFFCD1F24CDA20BC3C514CD7413CD6E18CD7F18DADF15FE0AC2D115C3E50ECDBC
:2015E000E50E3E0DCDAC0B3E0AC3AC0B21A2267E3600C921A026BEC9CD9A24CD4C163A831C
:2016000026BAD0CD7F18D8CD5D18D2F8152B03C3FE153A90263C573A8426BAD0CD7F18D88C
:20162000CD6C24DA4916FE0ACA4916FE0DCA4916CD6C24DA4716CD9A243A8426BAD24916C1
:20164000CD7F18D8C326162B032B03C9FE0AC0E521852634E1C9FE0AC0E521852635E1C97B
:20166000219D267E2BA62BA6C93A9926B7C8C37416CD2514CD2817D22217CD5916F2A916CE
:20168000CD340546494C45204C494E45204C4F4E474552205448414E20454E5449524520A3
:2016A0005343524E203F3F3F003A9B26218D26A6CA71163A8F2621802696DAC716C2711605
:2016C0003A9026B7C27116CDD016CD0215C37416AF3282263E0ACDFC243A8226B7CAE81617
:2016E00021972635F2E81634218D26BEDAD416C92185267EB7F20D17E5CD7C18E1D2051768
:201700003600C30D17AF96CDF612C3F016CD2817D22217F53A8526B7CA8016F1CD0613C327
:201720000D172199263600C9C5D5E52A8326E5AF328D263A85263DCD01183CDA8517210000
:20174000002287262283262A8526CD16182291267A328D262A8326228F262A5627EB2A3D44
:2017600027CD7C1F24224527CD8C17EB2A8326229526EBCD9E17228926CD9918228B263A54
:201780009526CD0118E1228326C3CC1FCD6E18CD7F18D8FE0ACA4916CD9A24C38F17CD07C6
:2017A00018DAC917CD7F18D8FE0ACCE317FE20DAC317E5218426343ABA013DBEE1D29E173F
:2017C0002B7E23CD9A24C39E17CD7F18D8CD6C24DA4916FE0ACADE17CD9A24C3C9172B0345
:2017E000FE0AC0E521872634E1C9D5CDE30DF5EB2A3D27CD851FEBF1D1C978B1C87E230B0C
:20180000C93D328326B7F83A83263C3C573A802692D02F3C37C9CDEA173E7BDC97241600A5
:20182000CDFA17CA5618CD9A24FE0AC220183A83265778B1CA56187E230BFE20DA5018E579
:20184000218426343ABA013DBEE1D232182B7E23CD9A24C33218CD7C182A8326D8CD6C24CF
:20186000D0E52A83262C2602228326E137C9CDF81ECD951FC9CD7C18D03333C9CD6E187888
:20188000B1C29518CD9918E5CD0B1CE1F5CD4E23CDA318F1D87E0B23C9D5EB2A3F27CD7B5F
:2018A0001FD1C9D5EBCDF81ECD951F1979934F789A47D1C9CDBE18D0CD2B0FC3B418C5D541
:2018C000E53A4927B7C2DD18CDE318DACC1F16C915CAC118CD4E23CAD018CDE318D4222316
:2018E000C3CC1F3A4927B7C03AFFF7214A27BEC83A4927B7C0CD2514CDF20121A92522A732
:20190000253A4927B7C03AFFF7F51FF53E50D213193E2832BA01F11F3E18D21F193E0C327D
:20192000B901D6023280263E1532BB01F1324A2737C900574D202020202020484C50000020
:201940000000000000000000000000000000000000000000CDF201CD251421321911F82626
:20196000012100CD0C1F11F826CDF41FC2A2193E0132F82611F826CDF41FC2A219CD3405A0
:20198000574D2E484C50204E4F5420464F554E44204F4E2044454641554C54204F522041E0
:2019A0003A0011F82621E927CDA920DADE1911F82621E927CD8F1C21E927F57E23FE11CAAE
:2019C000CD19CDFC24F13DC2BA19C3A219CDB418FE0AC2DD19E5CDF201E1C3C519F1C911A8
:2019E000F826CD6609CDF41FC2FD19CD340546494C45204E4F5420464F554E4400CDD6233C
:201A000011F82621E927CDA920DA1D1ACD8F1CF506004F11E927CD290CF1DAFD19C31A0814
:201A2000CD2808CA1D0511F626AF121313CD6609110000213F27CDBC1ECD951FCD7C1FEB5A
:201A4000CD040E2A5627EBE501810009CD9F1F2BE3DA5E1A11F826CD1A21D1C3431ACD7B4A
:201A60001FC1EBCD2808CA741AE52A5627CD871AE1D2331A7BCDEB1B11F826CD3221CD0FD3
:201A8000202A5627C3E50ECDD623CDE50ECD2808C8CDD6233A5C27B7FAC11CC34D1C3A5CAB
:201AA00027B737FC5E1BD0CDDD1AD0C35E1BCDBE1AD8CD911AD8CDBE1AD4911AB7C9C5D5F1
:201AC000E53A5C27B7113B27FACE1A113F272A2F27EBCDFB1E6069CD9F1FC3CC1FC5D5E50F
:201AE000CD0C1BDACC1F215F273446212E27AF8605C2EF1A3DF6074F3A2D273D47CD0C1B02
:201B000005CA081B0DC2FD1AB7C3CC1F2A3B27CD731DD8E52ACD26EB2A2027CD9F1FE111EC
:201B2000AB26D22B1BCD3521C3381BCD2F21EB2A202723222027EB0411800019223B27C998
:201B4000C5D5E5218100224527214327CD491E2A4127CDE50ECD0C1BD2551BC3CC1FC5D547
:201B6000E5CD7E1BDACC1F3A2D274705874F0DCD7E1B05CA7A1B0DC26F1BB7C3CC1F2A41A5
:201B800027CDAA1CC2961B3AF52657CD3C0DE57ACDEB1BC39B1B1180FF19E5E3CD831DE3EA
:201BA000D2A51BE1C9E52A2227EBCDE31DCD9F1FE1D2BD1B115C00CD3C21C3E21BE52A2439
:201BC00027EBCDE31DCD9F1FE111D126D2D51BCD3521C3E21BCD2F21E52A24272B222427FE
:201BE000E104CDAA1CB7E1224127C9C5D511E927D5470E82042B1B7E1223130D05C2F71B25
:201C00003E1A12130DC2001CC3CC1FCDAA1CC8C5D5E5CD951E218000CD9F1FEB2A2827D2F2
:201C2000291CCDDD1ADA1A1DEBEB214327CD0D1DC35C1CC5D5E5214327110078CD3D1DCD70
:201C4000AA1CCA731C79B7C25C1CC3CC1FC5D5E5CDAA1CCA731C214327CDF31C2A4127CD1C
:201C6000761CD48F1CDA6B1C32F5262241270DC25F1CB7C3CC1FCDD62311D0261A13B73784
:201C8000C4B020D0115B001A13B737C4A920C906807EE67F77FE1ACAA31C2305C2911C37B4
:201CA0003E80C9CDC5203E8090C9E53A5B0021D026B637E1C93A5C27B73AAA26F4AA1CB7BD
:201CC000C9C5D5E53AAA26B737CAF01C115E1B213B27CDF61C2A3B27CDD6231180FF1911F6
:201CE000AB26CDB020DAEF1C223B270DC2D81CB7C3CC1F11DD1AE52A2827D5CD951ECD9FBE
:201D00001FE1DCC4112A2627292424EBE1CD3D1DFE08DA181DD6044FB7C0CD34054D454D9D
:201D20002053484F52544147452C2054525920434C454152494E47205142554600CD491EF4
:201D4000D5CD951EE1CDBD1FEB29DA4A1DEB7A4AC9CD331CCD401BCD331CD2541D213B27B1
:201D6000CDFB1ECD951F79CDEB1B11AB26CD2F21C30F20E52A4527EB2A3D27CD7C1FEBE197
:201D8000C39F1FE52A4727EB2A3F2719D1CD9F1FEBC9D5113D27CD9F1FD1C0C5D5E5F521A6
:201DA0003B27CDF41D2ACD2619EB2A2027CD9F1FEBD2B71D222027213F27CDF41DCDE31D9A
:201DC000CD7C1FEB2A2227CD9F1FEBDAD11D222227EB2A2427CD9F1FEBDADF1D222427F18A
:201DE000C3CC1FD52AF326EB2A7E00CD7C1F11FF7F19D1C9CDFB1E6069295C1600D2011EA5
:201E000014C9C5D5E5EBE5CD951FEBCD851FE1E5CD8F1FCD0C1FE32B2B73237223D17323B5
:201E200072B7C3CC1FC5D5E5EB2323E5CD951FCD851FE323235E2356E3CD2E1FE3722B7354
:201E4000D12B722B73B7C3CC1FC5D5E5EB213327CD9F1FDC861E214427CD9F1FD4861E2171
:201E6000332723CD9F1F2BDA731ECDBC1ECDAC1EC3621E214127CD9F1FD2CC1FCDD81E2B84
:201E80002B2B2BC3761ECDE71F505554484F4C452045525200C5E5110000213127CDFB1E53
:201EA000EB09EBCDAC1ED29D1EE1C1C9D523232323114227CD9F1FD1C9213727C5D5E5CDE9
:201EC000FB1ECD8F1FE37323722BE3CD0C1FE1E52323732372C3CC1FC5D5E5E52B2BCDFB39
:201EE0001EE1E5CD911FEBE323722B73E3CD2E1FE12B722B73C3CC1F213F27D5E5CD911FFB
:201F0000CD851FE1D1C921531F010300CD561FCD9F1FC21C1F09EB09010000C9040CC325B5
:201F20001F7E1223130DC2211F05C2211FC9CD561FCD9F1FC2411FCD711F09EB0901000093
:201F4000C9040CC34A1F2B1B7E120DC2461F05C2461FC942414B78F6173CC0CD3405434F96
:201F600050592045525200F5AF956F3E009C67F1C9F5AF914F3E009847F1C9EBD5EBCD67D2
:201F80001FEB19D1C9E5CD7C1F444DE178B1C92B2B5E2356237E23666FC92B2BC3951FC5B2
:201FA000477A94C2A81F7B9578C1C9CD9F1FDAB61F210000B7C9E5CD7C1FD137C9CD9F1FAD
:201FC000CAB11FDAB11FEBCD7C1F37C9E1D1C1C9D5118000CDD91F1AD1E3C54E23D5E5CD78
:201FE0000500E1D1C1E3C9CDE324D1CD0E23CDE324C36304CDD01F0F3CE52123001936009D
:202000002B3600E1C911D1261B1B1A1313B7C8CDD01F103CC0CDE71F434C4F5345204552F0
:20202000520011D126CD0820CDD01F131BCDC52013C3C520CD2820CDF91FCDD01F163CC032
:20204000CDE71F4449524543544F52592046554C4C00D55F3A4B27B77BC26220CDD91F1E6C
:20206000D1C9D1B7C26C20CDD91F193CC9C5D5E5D521100019011000EBCD0C1F3600D12153
:20208000190019EBE1E5CD091FE1D1C1CDD01F173CC03A4B27B7C0CDE71F52454E414D4578
:2020A000204641494C55524500CDB420D43521C9CD3C21D8CD4E23AFCD6721DAC520CDD9BB
:2020C0001F14B73DC01BAF121337C9E5626B2B2B7EB7CC342036FFE1CD0A21C0F5E521D133
:2020E00026CD9F1FE1CAF7203AD026B7D5CC2220D1F1CD0A21C0F5F1FE02C24020CD34051B
:202100004449534B2046554C4C00CD6521CDD91F15FE01C8FEFFC8FE02C9C5E5D5018000BF
:2021200011E927D5CD0C1FE1D1CD3221E1C1C9CDD623CDCB20C5010100C34021C501FFFF47
:20214000D5E51B3EFF1221230019E5CD951F097CA53CCA5E21EBE1732372B7C3CC1FAF12EF
:2021600037E1C3CC1F3EFFC547E521220019CD951F7DE67F4F297C210C0019BECAA021E544
:20218000F5212100197EB7C40F203600F1E177CDD01F0F3CC2A02178B737CAA921CD3A209D
:2021A0002120001971237EB077E1F5EBCDD91F1AEBF1C1C9115C27AF12CDF12223FE2BCA3B
:2021C000B921FE2DC2CD213EFF12C3B9212B11FFFFEB225A27EBCDF122FE2323CA0F222B61
:2021E000CD2922110100D20F221B7ECD2922D20A2223E5626B19291929DA1522D6305F161E
:202200000019DA1522EBE1C3EA21EB225A27EBEB225827EBC9CD34054E554D4245522054FE
:202220004F4F204C4152474500FE303FD0FE3AC9C5D521A5267EF5AF77216C28E54F79FEB8
:202240007FD2DA22D1D5CDBE18F5DCBE07F1DA3E22CDF024FE0DCADF22FE0ACAD522E521A1
:202260003E22E3FE1FCA6D22FE7FC27422CDCD22C8C3FC24FE18CA7E22FE15C28322EB0E76
:20228000003E05FE05CAE324FE08C29422CDCD22C8C3B90BFE1CC2B922CDCD22C847CDB996
:2022A0000B78CDFA22CA9922CDCD22C847CDD70ED2CA22CDB90BC3A822FE12C2C422CDE36C
:2022C00024C3BE07FE03CAB30477230CC979B7C80D3C2B7EC9060DC3E1223E0DCDFC240697
:2022E0000A326B28360078CDFC24E1F132A526D1C17ECDFA22C023C3F122FE09C8FE20C83E
:20230000FE0AC8FE0DC9E3F5CD1823F1E3C9F5EBE5CD1823E1EBF1C97EB7C8CDFC2423C379
:202320001823E52AB7257EB7CA4023F53600237E3CC2372321B92522B725CD4E23F1E1C91B
:20234000E1CDB423E67FCD9C23CA4123B7C9E5CDC023CA95232AB5257EB7C28323CDB423FD
:20236000E67FC49C23CA4F2377237E3CC2722321B92522B5257EB7C28323CDC023C255230C
:20238000C391233E21CDFC243E07CD9B25AF329B26E1F601C92AB7257EB7E1C9FE16C0CDDF
:2023A000B423F5CD9B25F1FE1BC2B223CDB423CD9B25AFC93E06CDC723FE03C032A726C9F6
:2023C0003E03CDC723B7C9C5D5E521CC1FE52A0100CD4A0D79E9F53AA526B7C2E323CD4ED0
:2023E00023F1C9CDFA23C2EB23F1C9CD3405494E54455252555054454400CD4E23E521A745
:20240000267E3600B7E1C8C5E521B92522B52522B7250E64AF77230DC215240DE1C1C93E66
:202420000DFE0DCC3024CD6524D0CD3024C3FC24F51CCA3F241D0000001CFE09C262243A3A
:20244000A126FE0DCA6224CD4E233ABB01B7C43902C262243E20CD6524DA6224CD4E23C313
:2024600054241DF1C9CD6C24D8C3FC24FE0DC8FE0AC8C5473A84264F78FE09C2832479F6BC
:20248000074F2FFE20D28E24FE1BCA8E240C0C3ABA010CB978C1C9CD9A24E5F5218426FE7E
:2024A00020DAB724343ABA01BECAAF24D2D12436022B34F1C39B24FE1BCAA424FE0ACACFA6
:2024C00024FE0DCAD424FE09CADC2434C3A4242B34F1E1C9CD4E233600F1E1C97EF6077780
:2024E000C3A424F53E0DCDFC243E0ACDFC24F1C9FE08C8FE7FC8FE1FC8FE1CC8F5E5FE1B68
:20250000C205253E24FE7FC20C253E7EF5CD6C24D21B25CD06230D0A3E3E002AA725FE0D53
:20252000C2292521A925C35B25FE09C24825237E3CC235252B36003E20CD6725343A8426FA
:20254000E607C23725C35B25FE20D25B25FE0ACA5B253E5ECD6725F1C640F522A725F1E1CA
:20256000FE09C46725F1C9F5CD9B25F1F5E5CD7425E1F1C9218426FE0ACA8625FE0DC28463
:20258000253600C934C92B343AB9013DBED0352B34C9F5AF32A126F1C39E2532A126C54F7E
:2025A0003E09CDC723C1C9A925FF00000000000000000000FFB925B925000000000000000B
:2025C0000000000000000000000000000000000000000000000000000000000000000000FB
:2025E0000000000000000000000000000000000000000000000000000000000000000000DB
:202600000000000000000000000000000000000000000000000000000000000000FF0000BB
:2026200000000000000000000000000000000000000000000000000000000000000000009A
:2026400000000000000000000000000000000000000000000000000000000000000000007A
:2026600000000000000000000000000000000000000000000000000000000000000000005A
:20268000000000020000000000000000000000000000000000000000000000000000000038
:2026A000000A00000000000000000000000000000000000000000000000000000000000010
:2026C0000000000000000000000000000000000000000000000000000000000000000000FA
:2026E0000000000000000000000000000000000000000000000000000000000000000000DA
:202700000000000000000000000000000000000000000000000000000000000000000000B9
:202720000000000000000004000800180810300018B829B829B829B829B929B929B929B932
:2027400029B92905BA0A3E0132FF37FF000AAF32AB37C3F30AAF32A937C3F30A3E0132A9D7
:20276000B429F30A3EFF32AA37C3F30AAF32AA37C3F30A3E0132AA37C3F30A3E01326937CA
:20278000C3F30AAF326937C3F30A3EFF327037CD5825AF3270377AB7C274043A7638FE20DF
:2027A000C07B3DF8CA7404FE10D274043C326F37AF676BC35D19CD58257AB7C274043A6AE8
:2027C00037B7C87BB7CAD927FE0ADC74043A7638FE20C2D9277B32AD37CD7717CD1A04C389
:2027E0009918CD080BC27404F53A6238FE08DAF627CDA4043E07215D38773A6A37B722BAF3
:20280000370E03C4D019F1FE2CCAE227C93AA837B7C29804CD7B0B2AC1372BCDA247B7CA07
:202820002828CD6548C3B6043D32A8372AC1377E2322C137FE21D22C28C9CD7B0BFE28C2DD
:202840007404CDDC0AFE27C27404CD080BC27404FE27C27404CDDC0AFE29C27404CDF30A97
:202860003A6A37B7C03A6238FE06DA6F283E06116338213839477EB7C28C041A77231305A1
:20288000C27B2870C9CDCB28CD7B0BFE2FC27404CD080BC4C328FE2FC27404CDF30ACDA8EB
:2028A0000C237EE6D0C28C04E57EF62477CDEE23E12B2255383E03324C38210000224D3817
:2028C000C36D23F53E01326238F1C93A5E38B7C8C1C39E04CD080BC2F628F5B7CDA80CCDBC
:2028E0000529237EE664C2FC287EE603F68077F1FE2CCAD428C9CD7404C3F028F61077CD71
:00000001FF

49
main.go
View File

@ -7,7 +7,8 @@ import (
"math" "math"
"okemu/config" "okemu/config"
"okemu/debug" "okemu/debug"
"okemu/debug/listener" "okemu/debug/dzrp"
//"okemu/debug/listener"
"okemu/logger" "okemu/logger"
"okemu/okean240" "okemu/okean240"
"okemu/z80/dis" "okemu/z80/dis"
@ -30,11 +31,11 @@ var BuildTime = "2026-03-01"
////go:embed hex/m80.hex ////go:embed hex/m80.hex
//var serialBytes []byte //var serialBytes []byte
//go:embed bin/2048.com //go:embed bin/PIP.COM
var ramBytes1 []byte var ramBytes []byte
//go:embed bin/JACK.COM ////go:embed bin/LINK.COM
var ramBytes2 []byte //var ramBytes2 []byte
var needReset = false var needReset = false
@ -81,16 +82,19 @@ func main() {
computer.AutoLoadFloppy() computer.AutoLoadFloppy()
disasm := dis.NewDisassembler(computer) disassm := dis.NewDisassembler(computer)
w, raster, label := mainWindow(computer, conf) w, raster, label := mainWindow(computer, conf)
go emulator(ctx, computer) dezog := dzrp.NewDZRP(conf, debugger, disassm, computer)
go emulator(ctx, computer, dezog)
go timerClock(ctx, computer) go timerClock(ctx, computer)
go screen(ctx, computer, raster, label) go screen(ctx, computer, raster, label)
if conf.Debugger.Enabled { if conf.Debugger.Enabled {
go listener.SetupTcpHandler(conf, debugger, disasm, computer) //go listener.SetupTcpHandler(conf, debugger, disassm, computer)
go dezog.SetupTcpHandler()
} }
(*w).ShowAndRun() (*w).ShowAndRun()
@ -124,7 +128,7 @@ func screen(ctx context.Context, computer *okean240.ComputerType, raster *canvas
timerFreq = math.Round(float64(timerTicks.Load()-preTim)/period) / 1000.0 timerFreq = math.Round(float64(timerTicks.Load()-preTim)/period) / 1000.0
label.SetText(formatLabel(computer, cpuFreq, timerFreq)) label.SetText(formatLabel(computer, cpuFreq, timerFreq))
adjustTimers(cpuFreq, timerFreq) adjustPeriods(cpuFreq, timerFreq)
//log.Debugf("Cpu clk period: %d, Timer clock period: %d, period: %1.3f", cpuClkPeriod.Load(), timerClkPeriod.Load(), period) //log.Debugf("Cpu clk period: %d, Timer clock period: %d, period: %1.3f", cpuClkPeriod.Load(), timerClkPeriod.Load(), period)
//pre = computer.Cycles() //pre = computer.Cycles()
@ -140,22 +144,21 @@ func screen(ctx context.Context, computer *okean240.ComputerType, raster *canvas
} }
} }
func adjustTimers(cpuFreq float64, timerFreq float64) { // adjustPeriods Adjust periods for CPU and Timer clock frequencies
// adjust cpu clock func adjustPeriods(cpuFreq float64, timerFreq float64) {
if cpuFreq > 2.55 && cpuClkPeriod.Load() < defaultCpuClkPeriod+defaultCpuClkPeriod/2 { // adjust cpu clock if not full speed
if !fullSpeed.Load() {
if cpuFreq > okean240.CPUFrequencyHi && cpuClkPeriod.Load() < defaultCpuClkPeriod+defaultCpuClkPeriod/2 {
cpuClkPeriod.Add(1) cpuClkPeriod.Add(1)
// cpuTicker.Reset(time.Duration(cpuClkPeriod.Load())) } else if cpuFreq < okean240.CPUFrequencyLow && cpuClkPeriod.Load() > 3 {
} else if cpuFreq < 2.45 && cpuClkPeriod.Load() > 3 { cpuClkPeriod.Add(-1)
cpuClkPeriod.Add(-2) }
// cpuTicker.Reset(time.Duration(cpuClkPeriod.Load()))
} }
// adjust timerClock clock // adjust timerClock clock
if timerFreq > 1.53 && timerClkPeriod.Load() < defaultTimerClkPeriod+defaultTimerClkPeriod/2 { if timerFreq > okean240.TimerFrequencyHi && timerClkPeriod.Load() < defaultTimerClkPeriod+defaultTimerClkPeriod/2 {
timerClkPeriod.Add(1) timerClkPeriod.Add(1)
//timerTicker.Reset(time.Duration(timerClkPeriod.Load())) } else if timerFreq < okean240.TimerFrequencyLow && timerClkPeriod.Load() > 3 {
} else if timerFreq < 1.47 && timerClkPeriod.Load() > 3 { timerClkPeriod.Add(-1)
timerClkPeriod.Add(-2)
//timerTicker.Reset(time.Duration(timerClkPeriod.Load()))
} }
} }
@ -192,7 +195,7 @@ func timerClock(ctx context.Context, computer *okean240.ComputerType) {
var cpuTicks atomic.Uint64 var cpuTicks atomic.Uint64
func emulator(ctx context.Context, computer *okean240.ComputerType) { func emulator(ctx context.Context, computer *okean240.ComputerType, dezog *dzrp.DZRP) {
cpuClkPeriod.Store(defaultCpuClkPeriod) cpuClkPeriod.Store(defaultCpuClkPeriod)
//cpuTicker = time.NewTicker(time.Duration(cpuClkPeriod.Load()) * time.Nanosecond) //cpuTicker = time.NewTicker(time.Duration(cpuClkPeriod.Load()) * time.Nanosecond)
//defer cpuTicker.Stop() //defer cpuTicker.Stop()
@ -228,7 +231,7 @@ func emulator(ctx context.Context, computer *okean240.ComputerType) {
// Breakpoint hit // Breakpoint hit
if bp > 0 || bpType != 0 { if bp > 0 || bpType != 0 {
listener.BreakpointHit(bp, bpType) dezog.BreakpointHit(bp, bpType)
} }
if needReset { if needReset {
computer.Reset() computer.Reset()

View File

@ -15,6 +15,7 @@ import (
"okemu/z80" "okemu/z80"
"os" "os"
"strconv" "strconv"
"sync/atomic"
//"okemu/z80" //"okemu/z80"
"okemu/z80/c99" "okemu/z80/c99"
@ -24,6 +25,10 @@ import (
) )
const DefaultCPUFrequency = 2_500_000 const DefaultCPUFrequency = 2_500_000
const CPUFrequencyLow float64 = 2.47
const CPUFrequencyHi float64 = 2.53
const TimerFrequencyLow float64 = 1.47
const TimerFrequencyHi float64 = 1.53
type ComputerType struct { type ComputerType struct {
cpu *c99.Z80 cpu *c99.Z80
@ -49,7 +54,7 @@ type ComputerType struct {
// //
debugger *debug.Debugger debugger *debug.Debugger
config *config.OkEmuConfig config *config.OkEmuConfig
kbAck bool kbAck atomic.Bool
} }
type Snapshot struct { type Snapshot struct {
@ -77,7 +82,7 @@ const VidColorBit = 0x40
// SetCPUState(state *z80.CPU) // SetCPUState(state *z80.CPU)
//} //}
func (c *ComputerType) GetCPUState() *z80.CPU { func (c *ComputerType) CPUState() *z80.CPU {
return c.cpu.GetState() return c.cpu.GetState()
} }
@ -120,9 +125,9 @@ func NewComputer(cfg *config.OkEmuConfig, deb *debug.Debugger) *ComputerType {
//c.aOffset = 0x100 //c.aOffset = 0x100
c.pit = pit.New() c.pit = pit.New()
c.kbAck = false c.kbAck.Store(false)
c.usart = usart.New() c.usart = usart.New()
c.pic = pic.New() c.pic = pic.NewI8259()
c.fdc = fdc.NewFDC(cfg) c.fdc = fdc.NewFDC(cfg)
c.cpuFrequency = DefaultCPUFrequency c.cpuFrequency = DefaultCPUFrequency
c.debugger = deb c.debugger = deb
@ -230,7 +235,7 @@ func (c *ComputerType) GetPixel(x uint16, y uint16) color.RGBA {
cl := (c.vRAM.memory[a1] >> (x & 0x07)) & 1 cl := (c.vRAM.memory[a1] >> (x & 0x07)) & 1
cl |= ((c.vRAM.memory[a2] >> (x & 0x07)) & 1) << 1 cl |= ((c.vRAM.memory[a2] >> (x & 0x07)) & 1) << 1
if cl == 0 { if cl == 0 {
resColor = BgColorPalette[c.bgColor] //resColor = BgColorPalette[c.bgColor]
resColor = ColorPalette[c.palette][cl] resColor = ColorPalette[c.palette][cl]
} else { } else {
resColor = ColorPalette[c.palette][cl] resColor = ColorPalette[c.palette][cl]
@ -299,7 +304,6 @@ func (c *ComputerType) TimerClk() {
// IRQ from timer // IRQ from timer
if c.pit.Fired(0) { if c.pit.Fired(0) {
c.pic.SetIRQ(RstTimerNo) c.pic.SetIRQ(RstTimerNo)
//c.ioPorts[PIC_DD75RS] |= Rst4Mask
} }
// clock for SIO KR580VV51 // clock for SIO KR580VV51
if c.pit.Fired(1) { if c.pit.Fired(1) {

View File

@ -93,12 +93,14 @@ const TmrDd70ctr = 0x63
const RstKbdNo = 1 const RstKbdNo = 1
const RstTimerNo = 4 const RstTimerNo = 4
const KbAckBit = 0x80
// const Rst0Mask = 0x01 // System interrupt // const Rst0Mask = 0x01 // System interrupt
//const Rst1Mask = 0x02 // Keyboard interrupt const RstKbdMask = 0x02 // Keyboard interrupt
// const Rst2Mask = 0x04 // Serial interface interrupt // const Rst2Mask = 0x04 // Serial interface interrupt
// const Rst3Mask = 0x08 // Printer ready // const Rst3Mask = 0x08 // Printer ready
//const Rst4Mask = 0x10 const RstTmrMask = 0x10
//const Rst5Mask = 0x20 // Power intRq //const Rst5Mask = 0x20 // Power intRq
//const Rst6Mask = 0x40 // User device 1 interrupt //const Rst6Mask = 0x40 // User device 1 interrupt
//const Rst7Mask = 0x80 // User device 1 interrupt //const Rst7Mask = 0x80 // User device 1 interrupt

View File

@ -16,7 +16,8 @@ func (c *ComputerType) IORead(port uint16) byte {
// PIO xx59, get IRR register // PIO xx59, get IRR register
irr := c.pic.IRR() irr := c.pic.IRR()
// if irq from keyboard and no ACK applied, re-fire // if irq from keyboard and no ACK applied, re-fire
if irr&0x10 != 0 && !c.kbAck { if irr&RstKbdMask != 0 && !c.kbAck.Load() {
log.Tracef("KBD IRQ REFIRE PC=%04X", c.cpu.PC())
c.pic.SetIRQ(RstKbdNo) c.pic.SetIRQ(RstKbdNo)
} }
return irr return irr
@ -30,6 +31,7 @@ func (c *ComputerType) IORead(port uint16) byte {
return c.usart.Receive() return c.usart.Receive()
case KbdDd78pa: case KbdDd78pa:
// Keyboard data // Keyboard data
log.Tracef("KBD RD: %d, PC=%04X", c.ioPorts[KbdDd78pa], c.cpu.PC())
return c.ioPorts[KbdDd78pa] return c.ioPorts[KbdDd78pa]
case KbdDd78pb: case KbdDd78pb:
return c.ioPorts[KbdDd78pb] return c.ioPorts[KbdDd78pb]
@ -117,12 +119,14 @@ func (c *ComputerType) IOWrite(port uint16, val byte) {
c.fdc.SetFloppy(val) c.fdc.SetFloppy(val)
case KbdDd78pc: case KbdDd78pc:
if val&0x80 != 0 { if val&KbAckBit != 0 {
c.kbAck = true c.kbAck.Store(true)
log.Trace("KBD ACK")
} else { } else {
//c.kbAck = false if c.kbAck.Load() {
c.pic.ResetIRQ(RstKbdNo)
}
} }
default: default:
//log.Debugf("OUT to Unknown port (%x), %x", bp, val) //log.Debugf("OUT to Unknown port (%x), %x", bp, val)
} }

View File

@ -2,27 +2,27 @@ package okean240
import ( import (
"fyne.io/fyne/v2" "fyne.io/fyne/v2"
log "github.com/sirupsen/logrus"
) )
func (c *ComputerType) PutKey(key *fyne.KeyEvent) { func (c *ComputerType) PutKey(key *fyne.KeyEvent) {
code := RemapCmdKey[key.Name] code := RemapCmdKey[key.Name]
if code > 0 { if code > 0 {
//log.Debugf("PutKey keyName: %s", key.Name) log.Tracef("PutKey keyName: %s", key.Name)
c.ioPorts[KbdDd78pa] = code c.ioPorts[KbdDd78pa] = code
c.kbAck.Store(false)
c.pic.SetIRQ(RstKbdNo) c.pic.SetIRQ(RstKbdNo)
c.kbAck = false
} }
} }
func (c *ComputerType) PutRune(key rune) { func (c *ComputerType) PutRune(key rune) {
log.Tracef("Put Rune: %c Lo: %x, Hi: %x", key, key&0xff, key>>8)
//log.Debugf("Put Rune: %c Lo: %x, Hi: %x", key, key&0xff, key>>8)
c.ioPorts[KbdDd78pa] = byte(key & 0xff) c.ioPorts[KbdDd78pa] = byte(key & 0xff)
c.kbAck.Store(false)
c.pic.SetIRQ(RstKbdNo) c.pic.SetIRQ(RstKbdNo)
c.kbAck = false
} }
/* /*
@ -41,7 +41,6 @@ func (c *ComputerType) PutRune(key rune) {
func (c *ComputerType) PutCtrlKey(key byte) { func (c *ComputerType) PutCtrlKey(key byte) {
c.ioPorts[KbdDd78pa] = key c.ioPorts[KbdDd78pa] = key
c.pic.SetIRQ(RstKbdNo) c.pic.SetIRQ(RstKbdNo)
c.kbAck = false c.kbAck.Store(false)
//c.ioPorts[PIC_DD75RS] |= Rst1Mask
c.ioPorts[KbdDd78pb] &= 0x1f | 0x20 c.ioPorts[KbdDd78pb] &= 0x1f | 0x20
} }

View File

@ -1,5 +1,7 @@
package pic package pic
import log "github.com/sirupsen/logrus"
/* /*
Programmable Interrupt Controller Programmable Interrupt Controller
i8058, MSM82C59, КР580ВН59 i8058, MSM82C59, КР580ВН59
@ -19,44 +21,58 @@ type I8259Interface interface {
SetCSW(val byte) SetCSW(val byte)
} }
// IRR Return value of interrupt request register
func (c *I8259) IRR() byte { func (c *I8259) IRR() byte {
irr := c.irr irr := c.irr
// Reset the highest IR bit // Reset the highest IR bit
if irr&0x80 != 0 { if irr&0x01 != 0 {
c.irr &= 0x7F c.irr &= 0xFE
} else if irr&0x40 != 0 {
c.irr &= 0x3F
} else if irr&0x20 != 0 {
c.irr &= 0x1F
} else if irr&0x08 != 0 {
c.irr &= 0x07
} else if irr&0x04 != 0 {
c.irr &= 0x03
} else if irr&0x02 != 0 { } else if irr&0x02 != 0 {
c.irr &= 0x1 c.irr &= 0xFD
} else { } else if irr&0x04 != 0 {
c.irr = 0 c.irr &= 0xFB
} else if irr&0x08 != 0 {
c.irr &= 0xF7
} else if irr&0x10 != 0 {
c.irr &= 0xEF
} else if irr&0x20 != 0 {
c.irr &= 0xDF
} else if irr&0x40 != 0 {
c.irr &= 0xBF
} else if irr&0x80 != 0 {
c.irr &= 0x7F
} }
return irr return irr
} }
// ResetIRQ Reset interrupt request flag for specified irq
func (c *I8259) ResetIRQ(irq byte) { func (c *I8259) ResetIRQ(irq byte) {
c.irr &= ^(byte(1) << (irq & 0x07)) c.irr &= ^(byte(1) << (irq & 0x07))
} log.Tracef("RESET IRQ %d -> IRR: %08b", irq, c.irr)
func (c *I8259) SetIRQ(irq byte) {
c.irr |= 1 << (irq & 0x07)
} }
// SetIRQ Set interrupt request flag for specified irq
func (c *I8259) SetIRQ(irq byte) {
c.irr |= 1 << (irq & 0x07)
if irq == 1 {
log.Tracef("SET IRQ %d -> IRR: %08b", irq, c.irr)
}
}
// CSW Return value of CSW register
func (c *I8259) CSW() byte { func (c *I8259) CSW() byte {
return c.csw return c.csw
} }
// SetCSW Set value of CSW register
func (c *I8259) SetCSW(val byte) { func (c *I8259) SetCSW(val byte) {
c.csw = val c.csw = val
} }
func New() *I8259 { // NewI8259 Create and initialize new i8259 controller
func NewI8259() *I8259 {
return &I8259{ return &I8259{
irr: 0, irr: 0,
csw: 0,
} }
} }

BIN
okemu Executable file

Binary file not shown.

0
okemu.prof Normal file
View File

BIN
rom/CPM_r7_720k.bin Normal file

Binary file not shown.

BIN
rom/CPM_r7_b89a7e16.bin Normal file

Binary file not shown.

BIN
rom/MON_r7_93bd95bd.bin Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.