Code cleanup

This commit is contained in:
Роман Бойков 2026-04-01 14:57:08 +03:00
parent 603ebac8a6
commit 06cde90dac
165 changed files with 24723 additions and 4325 deletions

2
.gitignore vendored
View File

@ -1,4 +1,6 @@
*.bak *.bak
*.lst *.lst
*.tmp *.tmp
*.sh
.idea/ .idea/
src/.idea/

8
.idea/.gitignore generated vendored
View File

@ -1,8 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

8
.idea/modules.xml generated
View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/z80em.iml" filepath="$PROJECT_DIR$/.idea/z80em.iml" />
</modules>
</component>
</project>

88
README.md Normal file
View File

@ -0,0 +1,88 @@
# Эмулятор персонального компьютера Океан-240.2
![Icon](img/IconBig.png?raw=true "AppIcon")
## Зачем?
Эмулятор был разработан для удобства реверс-инжененринга программ монитора и приложений для этого старого компьютера.
Поэтому и имеет такой минималистичный интерфейс.
Если нужен более точный эмулятор Океана-240.2 и других компьютеров на безе процессора КР580ВМ80, рекомендую проект [Emu80](https://emu80.org/).
## Особенности реализации
- Микросхемы КР580ВВ55, ВИ53, ВИ51, ВТ59, КР1818ВГ93 эмулируются в степени, достаточной для работы операционной системы и монитора.
- В отличие от оригинала, который использует CPU КР580ВМ80, в эмуляторе использована эмуляция Z80.
Эмулятор Z80 у меня уже был написан, поэтому использовал его, возможно, позже, обрежу его до i8080.
Из за меньшего количества тактов у некоторых инструкций Z80, эмуляция работает несколько быстрее оригинала.
- Эмулируются 2 дисковода с дисками 720К, такой вариант используется с CP/M и Монитором R8.
- Работает под современными ОС Windows и Linux. Используется фреймворк [Fyne](https://fyne.io/), что позволяет скомпилировать код и под другие платформы, но я не пробовал.
- Поддерживает ZRCP - протокол отладки эмулятора [ZEsarUX](https://github.com/chernandezba/zesarux)). Это позволяет использовать среду разработки VSCode с плагином DeZog
для отладки исходного кода прямо в эмуляторе.
## Возможности отладки
Работают все функции плагина Dezog и протокола: [документация плагина](https://github.com/maziac/DeZog/blob/main/documentation/Usage.md#remote-types).
- Выполнение кода по шагам, в том числе и назад (с ограничениями плагина DeZog)
- Просмотр и изменение памяти
- Просмотр и изменение значения регистров процессора
- Условные и безусловные брейкпоинты
- ASSERTION - остановка по несоблюдению указанного условия
- WPMEM - остановка при обращении к указанным ячейкам памяти (можно указать тип обращения r|w|rw)
- CodeCoverage - в коде, цветом помечаются строки, выполненные процессором.
![Debug](img/Debug.jpg?raw=true "Debug in VSCode")
Можно отлаживать код и без VSCode, подключившись телнетом к порту отладчика, по умолчанию это localhost:10001, далее, можно передавать отладчику команды.
Их список доступен по команде help.
telnet localhost 10001
### Список доступных команд отладчика
__about__ Shows about message
__clear-membreakpoints__ Clear all memory breakpoints
__close-all-menus__ Close all visible dialogs
__cpu-code-coverage__ Sets cpu code coverage parameters
__cpu-history__ Runs cpu history actions
__cpu-step__ Run single opcode cpu step
__disable-breakpoint__ Disable specific breakpoint
__disable-breakpoints__ Disable all breakpoints
__disassemble__ Disassemble at address
__enable-breakpoint__ Enable specific breakpoint
__enable-breakpoints__ Enable breakpoints
__enter-cpu-step__ Enter cpu step to step mode
__evaluate__ Evaluate expression
__exit-cpu-step__ Exit cpu step to step mode
__extended-stack__ Sets extended stack parameters, which allows you to see what kind of values are in the stack
__get-cpu-frequency__ Get cpu frequency in HZ
__get-current-machine__ Returns current machine name
__get-machines__ Returns list of emulated machines
__get-membreakpoints__ Get memory breakpoints list
__get-memory-pages__ Returns current state of memory pages
__get-os__ Shows emulator operating system
__get-registers__ Get CPU registers
__get-tstates-partial__ Get the t-states partial counter
__get-tstates__ Get the t-states counter
__get-version__ Shows emulator version
__hard-reset-cpu__ Hard resets the machine
__help__ Shows help screen or command help
__hexdump__ Dumps memory at address, showing hex and ascii
__load-binary__ Load binary file "file" at address "addr" with length "len", on the current memory zone
__quit__ Closes connection
__read-memory__ Dumps memory at address
__reset-tstates-partial__ Resets the t-states partial counter
__run__ Run cpu when on cpu step mode
__save-binary__ Save binary file "file" from address "addr" with length "len", from the current memory zone
__set-breakpoint__ Sets a breakpoint at desired index entry with condition
__set-breakpointaction__ Sets a breakpoint action at desired index entry
__set-breakpointpasscount__ Set pass count for breakpoint
__set-debug-settings__ Set debug settings on remote command protocol
__set-machine__ Set machine
__set-membreakpoint__ Sets a memory breakpoint starting at desired address entry for type
__set-register__ Changes register value
__snapshot-load__ Loads a snapshot
__snapshot-save__ Saves a snapshot
__write-memory__ Writes a sequence of bytes starting at desired address on memory
__write-port__ Writes value at port

Binary file not shown.

View File

@ -1,27 +0,0 @@
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


Binary file not shown.

Binary file not shown.

View File

@ -1,23 +0,0 @@
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


Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,22 +0,0 @@
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


Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,41 +0,0 @@
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


Binary file not shown.

View File

@ -1,22 +0,0 @@
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

Binary file not shown.

View File

@ -1,20 +0,0 @@
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


Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,21 +0,0 @@
#! /usr/bin/python3
file_path = 'Disketa.okd'
sector = 1
try:
with open(file_path, 'rb') as fi:
# Read the entire content of the file
while True:
# Read 4 bytes at a time
byte_chunk = fi.read(128)
if not byte_chunk:
break
sn = str(sector).zfill(5)
with open("sector-" + sn +'.dat', 'wb') as fo:
fo.write(byte_chunk)
fo.close()
sector += 1
fi.close()
except FileNotFoundError:
print(f"Error: The file '{file_path}' was not found.")
except Exception as e:
print(f"An error occurred: {e}")

Binary file not shown.

Binary file not shown.

View File

@ -1,849 +0,0 @@
package zrcp
import (
"bufio"
"errors"
"fmt"
"io"
"net"
"okemu/config"
"okemu/debug"
"okemu/debug/breakpoint"
"okemu/okean240"
"okemu/z80"
"okemu/z80/dis"
"os"
"strings"
//"okemu/logger"
"strconv"
log "github.com/sirupsen/logrus"
)
type ZRCP struct {
port string
config *config.OkEmuConfig
debugger *debug.Debugger
disassembler *dis.Disassembler
computer *okean240.ComputerType
conn net.Conn
reader *bufio.Reader
writer *bufio.Writer
params string
//cmd *Command
}
func NewZRCP(config *config.OkEmuConfig, debug *debug.Debugger, disassm *dis.Disassembler, comp *okean240.ComputerType) *ZRCP {
return &ZRCP{
port: config.Debugger.Host + ":" + strconv.Itoa(config.Debugger.Port),
debugger: debug,
disassembler: disassm,
computer: comp,
}
}
// SetupTcpHandler Setup TCP listener, handle connections
func (p *ZRCP) SetupTcpHandler() {
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 {
var err error
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 *ZRCP) handleConnection() {
p.reader = bufio.NewReader(p.conn)
p.writer = bufio.NewWriter(p.conn)
if !p.writeWelcomeMessage() {
return
}
for {
str, err := p.reader.ReadString('\n')
if err != nil {
if err == io.EOF {
break
} else {
log.Errorf("TCP error: %v", err)
p.debugger.SetStepMode(false)
return
}
}
if !p.handleCommand(str) {
log.Debug("Closing connection")
p.writeResponseMessage(quitResponse)
break
}
//byteBuffer.WriteByte(b)
}
p.debugger.SetStepMode(false)
err := p.conn.Close()
if err != nil {
log.Warnf("Can not close socket: %v", err)
}
}
//var activeWriter *bufio.Writer = nil
func (p *ZRCP) writeWelcomeMessage() bool {
return p.writeResponseMessage(welcomeMessage)
}
func (p *ZRCP) writeResponseMessage(message string) bool {
if message == "-" {
return true
}
prompt := emptyResponse
if p.debugger.StepMode() {
prompt = inCpuStepResponse
}
_, err := p.writer.WriteString(message + prompt)
if err != nil {
log.Errorf("TCP write error: %v", err)
return false
}
err = p.writer.Flush()
if err != nil {
log.Errorf("TCP flush error: %v", err)
return false
}
return true
}
func (p *ZRCP) writeMessage(message string) bool {
_, err := p.writer.WriteString(message)
if err != nil {
log.Errorf("TCP error: %v", err)
return false
}
err = p.writer.Flush()
if err != nil {
log.Errorf("TCP error: %v", err)
return false
}
return true
}
// HandleCommand HandleLogLine Parse log line(s) and send it to redis
func (p *ZRCP) handleCommand(str string) bool {
str = strings.TrimSpace(str)
if str == "" {
return false
}
log.Debugf("Command: '%s'", str)
pos := strings.Index(str, " ")
cmd := str
p.params = ""
if pos > 1 {
cmd = str[:pos]
p.params = strings.TrimSpace(str[pos+1:])
}
var err error
var resp string
if cmd == "quit" {
return false
}
handler, ok := commandHandlers[cmd]
if ok {
resp, err = handler(p)
if err != nil {
log.Errorf("%v", err)
p.writeResponseMessage(err.Error())
} else {
p.writeResponseMessage(resp)
}
} else {
log.Debugf("Unhandled Command: %s", str)
p.writeResponseMessage("")
}
return true
}
type CommandHandler func(zrcp *ZRCP) (string, error)
var commandHandlers = map[string]CommandHandler{
"about": (*ZRCP).handleAbout,
"clear-membreakpoints": (*ZRCP).handleClearMemBreakpoints,
"close-all-menus": (*ZRCP).handleEmptyHandler,
"cpu-code-coverage": (*ZRCP).handleCPUCodeCoverage,
"cpu-history": (*ZRCP).handleCPUHistory,
"cpu-step": (*ZRCP).handleCpuStep,
"disable-breakpoint": (*ZRCP).handleDisableBreakpoint,
"disable-breakpoints": (*ZRCP).handleDisableBreakpoints,
"disassemble": (*ZRCP).handleDisassemble,
"enable-breakpoint": (*ZRCP).handleEnableBreakpoint,
"enable-breakpoints": (*ZRCP).handleEnableBreakpoints,
"enter-cpu-step": (*ZRCP).handleEnterCPUStep,
"exit-cpu-step": (*ZRCP).handleExitCPUStep,
"extended-stack": (*ZRCP).handleExtendedStack,
"get-cpu-frequency": (*ZRCP).handleGetCPUFrequency,
"get-current-machine": (*ZRCP).handleGetCurrentMachine,
"get-registers": (*ZRCP).handleGetRegisters,
"get-tstates-partial": (*ZRCP).handleGetTStatesPartial,
"get-version": (*ZRCP).handleGetVersion,
"hard-reset-cpu": (*ZRCP).handleHardResetCPU,
"load-binary": (*ZRCP).handleLoadBinary,
"read-memory": (*ZRCP).handleReadMemory,
"reset-tstates-partial": (*ZRCP).handleResetTStatesPartial,
"run": (*ZRCP).handleRun,
"set-breakpoint": (*ZRCP).handleSetBreakpoint,
"set-breakpointaction": (*ZRCP).handleEmptyHandler,
"set-breakpointpasscount": (*ZRCP).handleSetBreakpointPassCount,
"set-debug-settings": (*ZRCP).handleEmptyHandler,
"set-membreakpoint": (*ZRCP).handleSetMemBreakpoint,
"set-register": (*ZRCP).handleSetRegister,
"snapshot-load": (*ZRCP).handleSnapshotLoad,
"snapshot-save": (*ZRCP).handleSnapshotSave,
}
func (p *ZRCP) handleCpuStep() (string, error) {
p.debugger.SetDoStep(true) // computer.Do()
text := p.disassembler.Disassm(p.computer.CPUState().PC)
return registersResponse(p.computer.CPUState()) + " TSTATES: " + strconv.Itoa(int(p.computer.TStatesPartial())) + "\n" + text, nil
}
func (p *ZRCP) handleRun() (string, error) {
p.writeMessage(runUntilBPMessage)
p.debugger.SetRunMode(true)
return "-", nil
}
func (p *ZRCP) handleDisassemble() (string, error) {
return p.disassemble(p.params), nil
}
func convertToUint16(s string) (uint16, error) {
v := strings.TrimSpace(strings.ToUpper(s))
base := 0
if strings.HasSuffix(v, "H") {
v = strings.TrimSuffix(v, "H")
base = 16
}
a, e := strconv.ParseUint(v, base, 16)
return uint16(a), e
}
func (p *ZRCP) SetMemBreakpoint(param string) string {
param = strings.TrimSpace(param)
params := strings.Split(param, " ")
if len(params) < 1 {
return "error, not enough parameters"
}
address, err := convertToUint16(params[0])
if err != nil {
return "error, illegal address: '" + params[0] + "'"
}
t := uint16(3)
// if has type
if len(params) > 1 {
t, err = convertToUint16(params[1])
if err != nil || t > 3 {
return "error, illegal access type: '" + params[1] + "'"
}
}
s := uint16(1)
if len(params) > 2 {
s, err = convertToUint16(params[2])
if err != nil {
return "error, illegal memory size: '" + params[2] + "'"
}
}
if p.debugger != nil {
p.debugger.SetMemBreakpoint(address, byte(t), s)
}
return ""
}
func (p *ZRCP) handleCPUHistory() (string, error) {
params := strings.Split(p.params, " ")
if len(params) < 1 {
return "", errors.New("error, no parameters")
}
cmd := params[0]
nspe := errors.New("error, no second parameter")
switch cmd {
case "enabled":
if len(params) < 2 {
return "", nspe
}
p.debugger.SetCpuHistoryEnabled(params[1] == "yes")
case "clear":
p.debugger.CpuHistoryClear()
case "started":
if len(params) < 2 {
return "", nspe
}
p.debugger.SetCpuHistoryStarted(params[1] == "yes")
case "set-max-size":
if len(params) != 2 {
return "", nspe
}
size, err := strconv.Atoi(params[1])
if err != nil {
return "", errors.New("error, illegal number")
}
p.debugger.SetCpuHistoryMaxSize(size)
case "get":
if len(params) != 2 {
return "", nspe
}
index, err := strconv.Atoi(params[1])
if err != nil {
return "", errors.New("error, illegal number")
}
history := p.debugger.CpuHistory(index)
if history != nil {
return p.stateResponse(history), nil
}
return "", errors.New("ERROR: index out of range")
case "ignrephalt":
// ignore
default:
return "", errors.New("error: unknown history command: " + cmd)
}
return "", nil
}
func (p *ZRCP) handleLoadBinary() (string, error) {
params := strings.Split(p.params, " ")
loadError := errors.New(respErrorLoading)
if len(params) < 2 {
return "", loadError
}
fn := strings.TrimSpace(params[0])
if strings.HasPrefix(fn, "\"") {
fn = fn[1:]
}
if strings.HasSuffix(fn, "\"") && len(fn) > 1 {
fn = fn[:len(fn)-1]
}
offset, e := strconv.Atoi(params[1])
length := 0
if e != nil || offset < 0 || offset > 65535 || len(fn) == 0 {
return "", loadError
}
if len(params) > 2 {
l, e := strconv.ParseInt(params[2], 0, 32)
if e != nil {
length = 0
} else {
length = int(l)
}
}
data, err := os.ReadFile(fn)
if err != nil {
return "", loadError
}
if length != 0 && len(data) != length {
log.Warnf("File size does not match the specified length. Expected %d bytes, got %d.", length, len(data))
//return respErrorLoading
length = len(data)
}
if length == 0 {
length = len(data)
}
// Loaded Ok, move file to memory
for addr := uint16(0); addr < uint16(length); addr++ {
p.computer.MemWrite(addr+uint16(offset), data[addr])
}
return "", nil
}
func toW(hi, lo byte) uint16 {
return uint16(lo) | (uint16(hi) << 8)
}
func iifStr(iif1, iif2 bool) string {
flags := []byte{'-', '-'}
if iif1 {
flags[0] = '1'
}
if iif2 {
flags[1] = '2'
}
return string(flags)
}
// registersResponse Build string
// PC=%4x SP=%4x AF=%4x BC=%4x HL=%4x DE=%4x IX=%4x IY=%4x AF'=%4x BC'=%4x HL'=%4x DE'=%4x I=%2x
// R=%2x F=%s F'=%s MEMPTR=%4x IM0 IFF-- VPS: 0 MMU=00000000000000000000000000000000
func registersResponse(state *z80.CPU) string {
resp := fmt.Sprintf(getRegistersResponse,
state.PC,
state.SP,
toW(state.A, state.Flags.GetFlags()),
toW(state.B, state.C),
toW(state.H, state.L),
toW(state.D, state.E),
state.IX,
state.IY,
toW(state.AAlt, state.FlagsAlt.GetFlags()),
toW(state.BAlt, state.CAlt),
toW(state.HAlt, state.LAlt),
toW(state.DAlt, state.EAlt),
state.I,
state.R,
state.Flags.GetFlagsStr(),
state.FlagsAlt.GetFlagsStr(),
state.MemPtr,
iifStr(state.Iff1, state.Iff2),
)
log.Trace(resp)
return resp
}
func (p *ZRCP) getNBytes(addr uint16, n uint16) string {
res := ""
for i := uint16(0); i < n; i++ {
b := p.computer.MemRead(addr + i)
res += fmt.Sprintf("%02X", b)
}
return res
}
// stateResponse build string, represent history state
// PC=003a SP=ff46 AF=005c BC=174b HL=107f DE=0006 IX=ffff IY=5c3a AF'=0044 BC'=ffff HL'=ffff DE'=5cb9 I=3f R=78
// IM0 IFF-- (PC)=2a785c23 (SP)=107f MMU=00000000000000000000000000000000
func (p *ZRCP) stateResponse(state *z80.CPU) string {
resp := fmt.Sprintf(getStateResponse,
state.PC,
state.SP,
toW(state.A, state.Flags.GetFlags()),
toW(state.B, state.C),
toW(state.H, state.L),
toW(state.D, state.E),
state.IX,
state.IY,
toW(state.AAlt, state.FlagsAlt.GetFlags()),
toW(state.BAlt, state.CAlt),
toW(state.HAlt, state.LAlt),
toW(state.DAlt, state.EAlt),
state.I,
state.R,
iifStr(state.Iff1, state.Iff2),
p.getNBytes(state.PC, 4),
p.getNBytes(state.SP, 2),
)
log.Trace(resp)
return resp
}
func (p *ZRCP) handleSetRegister() (string, error) {
state := p.computer.CPUState()
params := strings.Split(p.params, "=")
if len(params) != 2 {
return "error", errors.New("invalid set register parameter")
}
val, e := strconv.Atoi(params[1])
if e != nil {
return "error", errors.New("invalid set register value")
}
switch params[0] {
case "AF":
state.A = uint8(val >> 8)
state.Flags.SetFlags(uint8(val))
case "BC":
state.B = uint8(val >> 8)
state.C = uint8(val)
case "DE":
state.D = uint8(val >> 8)
state.E = uint8(val)
case "HL":
state.H = uint8(val >> 8)
state.L = uint8(val)
// ------------------------------
case "SP":
state.SP = uint16(val)
case "PC":
state.PC = uint16(val)
case "IX":
state.IX = uint16(val)
case "IY":
state.IY = uint16(val)
// ------------------------------
case "AF'":
state.AAlt = uint8(val >> 8)
state.FlagsAlt.SetFlags(uint8(val))
case "BC'":
state.BAlt = uint8(val >> 8)
state.CAlt = uint8(val)
case "DE'":
state.DAlt = uint8(val >> 8)
state.EAlt = uint8(val)
case "HL'":
state.HAlt = uint8(val >> 8)
state.LAlt = uint8(val)
// ------------------------------
case "A":
state.A = uint8(val)
case "F":
state.Flags.SetFlags(uint8(val))
case "B":
state.B = uint8(val)
case "C":
state.C = uint8(val)
case "D":
state.D = uint8(val)
case "E":
state.E = uint8(val)
case "H":
state.H = uint8(val)
case "L":
state.L = uint8(val)
// ------------------------------
case "A'":
state.AAlt = uint8(val)
case "F'":
state.FlagsAlt.SetFlags(uint8(val))
case "B'":
state.BAlt = uint8(val)
case "C'":
state.CAlt = uint8(val)
case "D'":
state.DAlt = uint8(val)
case "E'":
state.EAlt = uint8(val)
case "H'":
state.HAlt = uint8(val)
case "L'":
state.LAlt = uint8(val)
// ------------------------------
case "I":
state.I = uint8(val)
case "R":
state.R = uint8(val)
default:
log.Errorf("Unsupported set register parameter: %s", p.params)
}
p.computer.SetCPUState(state)
return registersResponse(p.computer.CPUState()), nil
}
func (p *ZRCP) handleReadMemory() (string, error) {
params := strings.Split(p.params, " ")
if len(params) != 2 {
return "", errors.New("error, invalid read memory parameter")
}
offset, e := strconv.Atoi(params[0])
if e != nil {
return "", errors.New("error, invalid number for address")
}
size, e := strconv.Atoi(params[1])
if e != nil {
return "", errors.New("error, invalid number for size")
}
resp := ""
for i := 0; i < size; i++ {
resp += fmt.Sprintf("%02X", p.computer.MemRead(uint16(offset)+uint16(i)))
}
log.Tracef("read memory 0x%04X, 0x%04X: %s", offset, size, resp)
return resp, nil
}
func (p *ZRCP) getExtendedStack() (string, error) {
params := strings.Split(p.params, " ")
if len(params) < 2 {
return "", errors.New("error, will be 2 or 3 params")
}
size, err := strconv.Atoi(params[1])
if err != nil || size < 0 || size > 65636 {
return "", errors.New("error, invalid size parameter")
}
sp := p.computer.CPUState().SP
if len(params) == 3 {
psp, err := strconv.ParseUint(params[2], 10, 16)
if err != nil {
return "", errors.New("error, illegal number for SP")
}
sp = uint16(psp)
}
resp := ""
spEnd := sp - uint16(size*2)
es, err := p.computer.ExtendedStack()
if err == nil {
for i := sp; i > spEnd; i -= 2 {
resp += fmt.Sprintf("%04XH %s\n", p.computer.MemRead(i), PushValueTypeName[es[i]])
}
}
log.Tracef("extended-stack get: %s", resp)
return resp, err
}
func (p *ZRCP) handleSetBreakpoint() (string, error) {
// 1 PC=0010Bh
params := strings.Split(p.params, " ")
if len(params) < 2 {
return "", errors.New("error, invalid parameters")
}
no, e := strconv.ParseUint(params[0], 0, 16)
if e != nil || no > breakpoint.MaxBreakpoints || no < 1 {
return "", errors.New("error, invalid breakpoint number")
}
e = p.debugger.SetBreakpoint(uint16(no), p.params[len(params[0]):], 1)
if e != nil {
return "", errors.New("error, " + e.Error())
}
return "", nil
}
func typToString(typ uint8) string {
switch typ {
case 0:
return "D"
case 1:
return "R"
case 2:
return "W"
case 3:
return "R/W"
default:
return "x"
}
}
func (p *ZRCP) BreakpointHit(number uint16, typ byte) {
if p.writer != nil {
pc := p.computer.CPUState().PC
res := p.disassembler.Disassm(pc)
msg := ""
if typ == 0 {
msg = p.debugger.BPExpression(number)
} else {
msg = fmt.Sprintf("MEM[%04X] %s", number, typToString(typ))
}
rep := fmt.Sprintf("Breakpoint fired: %s\n%s", msg, res)
log.Debug(rep)
p.writeResponseMessage(rep)
}
}
func (p *ZRCP) setBreakpointPassCount(param string) {
params := strings.Split(param, " ")
if len(params) != 2 {
log.Errorf("Set breakpoint passCount failed, expected 2 params, got %d", len(params))
}
bpNo, err := strconv.Atoi(params[0])
if err != nil || bpNo < 0 || bpNo > breakpoint.MaxBreakpoints {
log.Errorf("Invalid BP no.: %v", err)
}
passCount, err := strconv.Atoi(params[1])
if err != nil || passCount < 0 || passCount > 65535 {
log.Errorf("Invalid BP passCount: %v", err)
}
p.debugger.SetBreakpointPassCount(uint16(bpNo), uint16(passCount))
}
func (p *ZRCP) disassemble(param string) string {
addr, e := strconv.ParseUint(param, 0, 16)
if e != nil {
log.Errorf("Invalid disassemble address: %s", param)
}
res := p.disassembler.Disassm(uint16(addr))
log.Debug(res)
return res
}
func (p *ZRCP) handleSnapshotSave() (string, error) {
e := p.computer.SaveSnapshot(strings.TrimSpace(p.params))
if e != nil {
return "", errors.New("Error saving snapshot: " + e.Error())
}
return "", nil
}
func (p *ZRCP) handleSnapshotLoad() (string, error) {
e := p.computer.LoadSnapshot(strings.TrimSpace(p.params))
if e != nil {
return "", errors.New("Error loading snapshot: " + e.Error())
}
return "", nil
}
func (p *ZRCP) handleGetTStatesPartial() (string, error) {
return strconv.FormatUint(p.computer.TStatesPartial(), 10), nil
}
func (p *ZRCP) handleResetTStatesPartial() (string, error) {
p.computer.ResetTStatesPartial()
return "", nil
}
func (p *ZRCP) handleEmptyHandler() (string, error) {
return "", nil
}
func (p *ZRCP) handleAbout() (string, error) {
return aboutResponse, nil
}
func (p *ZRCP) handleGetVersion() (string, error) {
return getVersionResponse, nil
}
func (p *ZRCP) handleGetRegisters() (string, error) {
return registersResponse(p.computer.CPUState()), nil
}
func (p *ZRCP) handleHardResetCPU() (string, error) {
p.computer.Reset()
return "", nil
}
func (p *ZRCP) handleEnterCPUStep() (string, error) {
p.debugger.SetStepMode(true)
return "", nil
}
func (p *ZRCP) handleExitCPUStep() (string, error) {
p.debugger.SetStepMode(false)
return "", nil
}
func (p *ZRCP) handleGetCurrentMachine() (string, error) {
return getMachineResponse, nil
}
func (p *ZRCP) handleClearMemBreakpoints() (string, error) {
p.debugger.ClearMemBreakpoints()
return "", nil
}
func (p *ZRCP) handleSetMemBreakpoint() (string, error) {
resp := p.SetMemBreakpoint(p.params)
var err error
if len(resp) != 0 {
err = errors.New(resp)
}
return "", err
}
func (p *ZRCP) handleEnableBreakpoints() (string, error) {
p.debugger.SetBreakpointsEnabled(true)
return "", nil
}
func (p *ZRCP) handleDisableBreakpoints() (string, error) {
p.debugger.SetBreakpointsEnabled(false)
return "", nil
}
func (p *ZRCP) setBreakpointState(enable bool) string {
no, e := strconv.Atoi(p.params)
if e != nil {
return fmt.Sprintf("Invalid breakpoint parameter: %s", p.params)
}
if enable && !p.debugger.BreakpointsEnabled() {
return "Error. You must enable breakpoints first"
}
p.debugger.SetBreakpointEnabled(uint16(no), enable)
return ""
}
func (p *ZRCP) handleEnableBreakpoint() (string, error) {
resp := p.setBreakpointState(true)
var err error
if len(resp) != 0 {
err = errors.New(resp)
}
return "", err
}
func (p *ZRCP) handleDisableBreakpoint() (string, error) {
resp := p.setBreakpointState(false)
var err error
if len(resp) != 0 {
err = errors.New(resp)
}
return "", err
}
func (p *ZRCP) handleGetCPUFrequency() (string, error) {
return strconv.Itoa(int(p.computer.CPUFrequency())), nil
}
func (p *ZRCP) handleSetBreakpointPassCount() (string, error) {
p.setBreakpointPassCount(p.params)
return "", nil
}
func (p *ZRCP) handleExtendedStack() (string, error) {
params := strings.Split(p.params, " ")
if len(params) < 1 {
return "", errors.New("error, not enough params")
}
cmd := params[0]
if cmd == "get" {
return p.getExtendedStack()
} else if cmd == "enabled" {
if len(params) < 2 {
return "", errors.New("error, expected yes|no")
}
p.computer.SetExtendedStack(params[1] == "yes")
} else {
return "", errors.New("error, unknown sub-command: " + cmd)
}
return "", nil
}
// handleCPUCodeCoverage Handle commands:
// cpu-code-coverage enabled yes
// cpu-code-coverage enabled no
// cpu-code-coverage clear
func (p *ZRCP) handleCPUCodeCoverage() (string, error) {
command := strings.Split(p.params, " ")
if len(command) < 1 {
return "", errors.New("error, not enough arguments")
}
cmd := command[0]
resp := ""
switch cmd {
case "enabled":
if len(command) < 2 {
return "", errors.New("error, not arguments for enabled [yas|no]")
}
p.computer.SetCodeCoverage(command[1] == "yes")
case "clear":
p.computer.ClearCodeCoverage()
case "get":
for addr, _ := range p.computer.CodeCoverage() {
resp += fmt.Sprintf("%04X ", addr)
}
}
return resp, nil
}

109
examples/README.md Normal file
View File

@ -0,0 +1,109 @@
# Эмулятор персонального компьютера Океан-240.2
## Пример, кода для работы в среде VSCode.
1. Установите VSCode
2. Установите плагин DeZog для возможности отладки исходного кода в эмуляторе okemu
3. Откройте в VSCode папку examples/hello
4. Запустите эмулятор okemu
5. Запустите отладку через меню Run -> Start debuging в VSCode.
6. Используйте инструменты отладки VSCode для выполнения кода, просмотра регистров процессора и состояния памяти и т.д.
## Рекомендуемые плагины VSCode
- [mborik.z80-macroasm-vscode](https://github.com/mborik/z80-macroasm-vscode) - Раскраска синтаксиса ассемблера Z80, поддержка разных ассемблеров, переименование меток и т.п.
- [maziac.dezog](https://github.com/maziac/DeZog/) - Отладчик кода Z80 с помощью эмуляторов
- [maziac.hex-hover-converter](https://github.com/maziac/hex-hover-converter) - Перевод чисел в другие системы счисления при наведении курсора
- [maziac.z80-instruction-set](https://github.com/maziac/z80-instruction-set) - Подсказки по инструкциям Z80 при наведении курсора (коды, такты, влияние на флаги)
## Пример файла .vscode/tasks.json
Конфигурация задачи для компиляции исходного кода ассемблером [sjasmplus](https://github.com/z00m128/sjasmplus)
```json
{
"version": "2.0.0",
"tasks": [
{
"label": "make (sjasmplus)", // так задача будет называться в меню Terminal -> Run task... VSCode
"type": "shell",
"command": "sjasmplus",
"args": [
"--i8080", // используем только инструкции КР580ВМ80
"--sld=main.sld", // генерируем файл с таблицей символов для отладчика
"--raw=main.obj", // сохраняем результат компиляции в двоичный файл
"--fullpath",
"main.asm" // основной файл исходного кода программы
],
"problemMatcher": "$problem-matcher-sjasmplus",
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
```
## Пример файла .vscode/launch.json
Конфигурация задачи для отладки исходного кода нашей программы с помощью эмулятора okemu. Эмулятор поддерживает подмножество протокола ZRCP (протокол отладки эмулятора [ZEsarUX](https://github.com/chernandezba/zesarux)).
Для отладки нужен плагин DeZog. Подробное описание настроек в [документации плагина](https://github.com/maziac/DeZog/blob/main/documentation/Usage.md#remote-types).
```json
{
"version": "0.2.0",
"configurations": [
{
"type": "dezog",
"request": "launch",
"name": "Simulator",
"remoteType": "zrcp", // используем протокол ZRCP для соединения с okemu
"zrcp": {
"port": 10001, // порт, на котором, по умолчанию, отвечает отладчик okemu
// если эмулятор запущен на другом компьютере, нужно указать его имя или адрес в параметре "host"
},
"sjasmplus": [
{
"path": "main.sld", // файл с символами для отладки, созданный при компиляции
},
// ниже, исходники и файлы для отладки ОС и монитора Океана, если мы хотим видеть их исходный в VSCode в процессе отладки
// их можно убрать. Тогда при трассировке вызовов ОС и монитора мы будем видеть дизасм кода.
{
"path": "cpm/cpm.sld",
"srcDirs": [
"cpm/"
]
},
{
"path": "mon/monitor.sld",
"srcDirs": [
"mon/"
]
}
],
"smartDisassemblerArgs": {
"lowerCase": false
},
"history": {
"reverseDebugInstructionCount": 20, // количество инструкций, которые можно шагнуть назад
"spotCount": 10,
"codeCoverageEnabled": true //true Если мы хотим видеть, какие участки кода нашего приложения выполнялись
},
"startAutomatically": false,
"commandsAfterLaunch": [
//"-rmv", // открыть окно с памятью, на которую указывают 16-разрядные регистры BC,DE,HL,IX,IY
"-mv 0x100 0x80" // открыть окно для просмотра памяти с адреса 100h размером 80h байт
],
"rootFolder": "${workspaceFolder}",
"topOfStack": "stack",
"loadObjs": [
{
"path": "main.obj", // Этот файл будет загружен в эмулятор
"start": "0x0100" // Файл будет загружен с адреса 100h
}
],
"execAddress": "0x0100", // Загруженный код начнет выполняться с адреса 100h
"smallValuesMaximum": 513,
"tmpDir": ".tmp"
}
]
}
```

View File

@ -0,0 +1,9 @@
{
"recommendations": [
"maziac.asm-code-lens",
"maziac.dezog",
"maziac.hex-hover-converter",
"maziac.z80-instruction-set",
"maziac.sna-fileviewer"
]
}

60
examples/hello/.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,60 @@
{
"version": "0.2.0",
"configurations": [
{
"type": "dezog",
"request": "launch",
"name": "Simulator",
"remoteType": "zrcp",
"zrcp": {
"port": 10001,
},
"sjasmplus": [
{
"path": "main.sld",
},
{
"path": "cpm/cpm.sld",
"srcDirs": [
"cpm/"
]
},
{
"path": "mon/monitor.sld",
"srcDirs": [
"mon/"
]
}
],
"smartDisassemblerArgs": {
"lowerCase": false
},
// "disassemblerArgs": {
// "numberOfLines": 10
// },
"history": {
"reverseDebugInstructionCount": 20,
"spotCount": 10,
"codeCoverageEnabled": true
},
"startAutomatically": false,
"commandsAfterLaunch": [
//"-rmv",
"-mv 0x100 0x80"
],
"rootFolder": "${workspaceFolder}",
"topOfStack": "stack",
"loadObjs": [
{
"path": "main.obj",
"start": "0x0100"
}
],
"execAddress": "0x0100",
"smallValuesMaximum": 513,
"tmpDir": ".tmp"
}
]
}

3
examples/hello/.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"mcu-debug.debug-tracker-vscode.debugLevel": 1
}

23
examples/hello/.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,23 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "make (sjasmplus)",
"type": "shell",
"command": "sjasmplus",
"args": [
"--i8080",
"--sld=main.sld",
"--raw=main.obj",
"--fullpath",
"--lst",
"main.asm"
],
"problemMatcher": "$problem-matcher-sjasmplus",
"group": {
"kind": "build",
"isDefault": true
}
}
]
}

7
examples/hello/README.md Normal file
View File

@ -0,0 +1,7 @@
# Эмулятор персонального компьютера Океан-240.2
Простой пример программы для ОС CP/M.
В папке .vscode прилагаются файлы, необходимые для настройки среды VSCode.
Для компиляции используется [sjasmplus Z80 assembler](https://github.com/z00m128/sjasmplus).

3042
examples/hello/cpm/bdos.asm Normal file

File diff suppressed because it is too large Load Diff

832
examples/hello/cpm/bios.asm Normal file
View File

@ -0,0 +1,832 @@
; =======================================================
; Ocean-240.2
;
; CP/M BIOS
;
; Disassembled by Romych 2025-09-09
; =======================================================
INCLUDE "equates.inc"
INCLUDE "ram.inc"
INCLUDE "mon_entries.inc"
DEFINE CHECK_INTEGRITY
IFNDEF BUILD_ROM
OUTPUT bios.bin
ENDIF
MODULE BIOS
ORG 0xD600
; -------------------------------------------------------
; BIOS JUMP TABLE
; -------------------------------------------------------
boot_f:
JP bios_boot
wboot_f:
JP bios_wboot
; -------------------------------------------------------
; console status to reg-a
; -------------------------------------------------------
const_f:
JP MON.non_con_status
; -------------------------------------------------------
; console character to reg-a
; -------------------------------------------------------
conin_f:
JP MON.mon_con_in
; -------------------------------------------------------
; console character from c to console out
; -------------------------------------------------------
conout_f:
JP MON.mon_con_out
; -------------------------------------------------------
; list device out
; -------------------------------------------------------
list_f:
JP MON.mon_char_print
; -------------------------------------------------------
; punch device out
; -------------------------------------------------------
punch_f:
JP MON.mon_serial_out
; -------------------------------------------------------
; reader character in to reg-a
; -------------------------------------------------------
reader_f:
JP MON.mon_serial_in
; -------------------------------------------------------
; move to home position, treat as track 00 seek
; -------------------------------------------------------
home_f:
JP home
; -------------------------------------------------------
; select disk given by register c
; -------------------------------------------------------
seldsk_f:
JP sel_disk
settrk_f:
JP set_trk
setsec_f:
JP set_sec
; -------------------------------------------------------
; Set DMA address from BC
; -------------------------------------------------------
setdma_f:
JP set_dma
read_f:
JP read
write_f:
JP write
listst_f:
JP list_st
sectran_f:
JP sec_tran
; -------------------------------------------------------
; Reserved
; -------------------------------------------------------
JP warm_boot
JP warm_boot
; -------------------------------------------------------
; Tape read
; -------------------------------------------------------
tape_read_f:
JP MON.mon_tape_read
; -------------------------------------------------------
; Tape write
; -------------------------------------------------------
tape_write_f:
JP MON.mon_tape_write
; -------------------------------------------------------
; Tape wait block
; -------------------------------------------------------
tape_wait_f:
JP MON.mon_tape_wait
JP warm_boot ; r8
disk_a_size DW 192 ; 192k disk A size
disk_b_size DW 720 ; 720 disk B size
disk_c_size DW 720 ; 720 disk C size
disk_b_tracks DB 80
disk_c_tracks DB 80
; -------------------------------------------------------
; cold start
; -------------------------------------------------------
bios_boot:
LD HL, (bdos_ent_addr) ; 0xba06
LD DE, 0x10000-CCP_RAM.bdos_enter_jump ; 0x45fa
ADD HL, DE ; 0xba06+0x45fa=10000
LD A, H
OR L
JP Z, bios_signon
; >> r8
LD HL, (bios_var0) ; if bios_var0 = 0xaaaa (initialized)
LD DE, 0x5556
ADD HL, DE ; 0xaaaa+0x5556=0x10000 if initialized
LD A, H
OR L
JP Z, bios_signon ; if initialized, go to logon, skip init
; <<
; Init DMA buffer
LD HL, dma_buffer ; 0x8000
LD B, DMA_BUFF_SIZE ; 0x80
.init_dma_buff:
LD (HL), FILE_DELETED ; 0xE5
INC HL
DEC B
JP NZ, .init_dma_buff
; Init RAM disk
LD HL, dma_buffer
LD DE, 0x0000
LD B, 8
.init_ram_dsk:
PUSH BC
CALL MON.ram_disk_write
POP BC
INC DE
DEC B
JP NZ, .init_ram_dsk
; Init user to 0 and drive to 0
XOR A
LD (cur_user_drv), A
; init bios variables
CALL bios_init_ilv ; r8
bios_signon:
LD SP, bios_stack
; Print CP/M hello message
LD HL, msg_hello
CALL print_strz
JP bios_wboot
;bios_wboot:
; LD SP, bios_stack
; r8 >>
bios_init_ilv:
LD HL, bios_var0
LD DE, bios_ini_vals
LD C, 13
CALL mov_dlhe_c
LD A, (disk_c_tracks) ; 0x50
LD (disk_c_tracks), A
RET
; <<
; -------------------------------------------------------
; BIOS Warm start entry
; -------------------------------------------------------
bios_wboot: ; r8
LD HL, (bios_var0)
LD DE, 0x5556 ; 0xaaaa + 0x5556 = 0x10000
ADD HL, DE
LD A, H
OR L
CALL NZ, bios_init_ilv ; init if not initialized before
LD SP, bios_stack
; Move CPP from 0xC000 to 0xB200
LD HL, CCP_DST_ADDR
LD DE, CCP_SRC_ADDR
LD BC, CCP_SIZE
.move_ccp:
LD A, (DE)
LD (HL), A
INC DE
INC HL
DEC BC
LD A, B
OR C
JP NZ, .move_ccp
; Init variables with zeroes
LD HL, CPM_VARS.cpm_vars_start
LD BC, CPM_VARS.ccp_vars_size ; 213
.clr_cpm_vars:
LD (HL), 0x0
INC HL
DEC BC
LD A, B
OR C
JP NZ, .clr_cpm_vars
LD A, FILE_DELETED
LD (CPM_VARS.bdos_efcb), A ; mark empty FCB
LD A, low dma_buffer ; 0x80
LD (CPM_VARS.bdos_dmaad), A ; 0x0080
; Move DPH + DPB to RAM
LD HL, CPM_VARS.DPH_RAM
LD DE, dph_disk_a
LD BC, DPB_END-dph_disk_a ; 0x39 -> 57d
.move_dph:
LD A, (DE)
LD (HL), A
INC HL
INC DE
DEC BC
LD A, B
OR C
JP NZ, .move_dph
LD BC, dma_buffer ; DMA default buffer addr
CALL setdma_f
; Setup JP to Warm boot after CPU reset
LD A, JP_OPCODE
LD (warm_boot), A
LD HL, wboot_f
LD (warm_boot_addr), HL
; Setup JP to BDOS entrance
LD (jp_bdos_enter), A
LD HL, CCP_RAM.bdos_enter_jump
LD (bdos_ent_addr), HL
; Disk A
LD HL, CPM_VARS.DPB_A_RAM
LD C, 0xf
LD DE, dpb_ram
LD A, (disk_a_size+1)
OR A
JP Z, .drv_a_192
LD DE, dpb_empty
.drv_a_192:
CALL mov_dlhe_c
; Disk B
LD HL, CPM_VARS.DPB_B_RAM
LD C, 0xf
LD DE, dpb_flop_360k
LD A, (disk_b_size+1)
CP 0x1
JP Z, .drv_b_360
LD DE, dpb_flop_720k
.drv_b_360:
CALL mov_dlhe_c
; Disk C
LD HL, CPM_VARS.DPB_C_RAM
LD C, 0xf
LD A, (disk_c_size+1)
CP 0x2 ; 720?
JP Z, .drv_c_720
LD DE, dpb_flop_360k
; bios_var3 != 0 -> move DPB 360k
LD A, (disk_sw_trk)
OR A
JP NZ, .drv_c_mov
; bios_var3 == 0 -> move DPB 720k
LD DE, dpb_flop_720k
JP .drv_c_mov
.drv_c_720:
LD DE, dpb_flop_720k
; bios_var3 != 0 -> move DPB 720k
LD A, (disk_sw_trk)
OR A
JP NZ, .drv_c_mov
; bios_var3 == 1 -> move DPB 360k
LD DE, dpb_flop_360k
.drv_c_mov:
CALL mov_dlhe_c
XOR A
LD (CPM_VARS.slicer_has_data),A
LD (CPM_VARS.slicer_uninited_count),A
LD A,(cur_user_drv)
LD C,A
; go to CCP
JP CCP_DST_ADDR
; -------------------------------------------------------
; Move C bytes from [DE] to [HL]
; -------------------------------------------------------
mov_dlhe_c:
LD A,(DE) ; [DE]->[HL]
LD (HL),A
INC HL
INC DE
DEC C
JP NZ, mov_dlhe_c
RET
list_st:
XOR A
RET
; -------------------------------------------------------
; Select disk
; Inp: C - disk,
; E - active drive flag
; Out: HL -> DPH
; -------------------------------------------------------
sel_disk:
LD HL, 0x00
LD A, C
CP CTRL_C
RET NC
LD (CPM_VARS.cur_disk), A
OR A
JP Z, .get_dph_addr ; skip next for disk 0 - RAM disk
LD A, E ; selected disk map
AND 0x1 ; bit 0 is set if disk already selected
JP NZ, .get_dph_addr
; Reset disk
LD (CPM_VARS.slicer_has_data), A
LD (CPM_VARS.slicer_uninited_count), A
; calc DPH address of new drive
.get_dph_addr:
LD L, C
LD H, 0x0
ADD HL, HL ; *2
ADD HL, HL ; *4
ADD HL, HL ; *8
ADD HL, HL ; *16 (size of DBH)
LD DE, CPM_VARS.DPH_RAM
ADD HL, DE
RET
; -------------------------------------------------------
; move to track 00
; -------------------------------------------------------
home:
LD A, (CPM_VARS.cur_disk)
OR A
JP Z, .is_default
LD A, (CPM_VARS.slicer_need_save)
OR A
JP NZ, .is_default
LD (CPM_VARS.slicer_has_data), A ; set to 0, no data
.is_default:
LD C, 0 ; set track to 0
; -------------------------------------------------------
; set track address (0..76) for subsequent read/write
; -------------------------------------------------------
set_trk:
LD HL, CPM_VARS.curr_track
LD (HL), C
RET
; -------------------------------------------------------
; set sector address (1,..., 26) for subsequent read/write
; -------------------------------------------------------
set_sec:
LD HL, CPM_VARS.curr_sec
LD (HL), C
RET
; -------------------------------------------------------
; set subsequent dma address (initially 80h)
; -------------------------------------------------------
set_dma:
LD L, C
LD H, B
LD (CPM_VARS.dma_addr), HL
RET
sec_tran:
LD L, C
LD H, B
RET
; -------------------------------------------------------
; read track/sector to preset dma address
; -------------------------------------------------------
read:
LD A, (CPM_VARS.cur_disk)
OR A
JP NZ, read_phys ; for physical disk use special routine
CALL ram_disk_calc_addr
CALL MON.ram_disk_read
XOR A
RET
; -------------------------------------------------------
; write track/sector from preset dma address
; -------------------------------------------------------
write:
LD A, (CPM_VARS.cur_disk)
OR A
JP NZ,write_phys
CALL ram_disk_calc_addr
CALL MON.ram_disk_write
XOR A
RET
; -------------------------------------------------------
; Calculate address for current sector and track
; -------------------------------------------------------
ram_disk_calc_addr:
LD HL, CPM_VARS.curr_track
; HL = cur_track * 16
LD L, (HL)
LD H, 0x0
ADD HL, HL
ADD HL, HL
ADD HL, HL
ADD HL, HL
; DE = HL + cur_sec
EX DE, HL
LD HL, CPM_VARS.curr_sec
LD L, (HL)
LD H, 0x0
ADD HL, DE
EX DE, HL
; store address
LD HL, (CPM_VARS.dma_addr)
RET
read_phys:
CALL read_phys_op
RET
write_phys:
CALL write_phys_op
RET
read_phys_op:
XOR A
; reset counter
LD (CPM_VARS.slicer_uninited_count), A
LD A, 0x1
LD (CPM_VARS.tmp_slicer_operation), A ; 0 - write; 1 - read
LD (CPM_VARS.tmp_slicer_can_read), A ; enable read fron disk
LD A, 0x2
LD (CPM_VARS.tmp_slicer_flush), A ; disable flush data to disk
JP base_read_write
write_phys_op:
XOR A
LD (CPM_VARS.tmp_slicer_operation), A
LD A, C
LD (CPM_VARS.tmp_slicer_flush), A
CP 0x2
JP NZ, .mode_ne_2
LD A, 0x10 ; 2048/128
LD (CPM_VARS.slicer_uninited_count), A
LD A, (CPM_VARS.cur_disk)
LD (CPM_VARS.slicer_uninited_disk), A
LD A, (CPM_VARS.curr_track)
LD (CPM_VARS.slicer_uninited_track), A
LD A, (CPM_VARS.curr_sec)
LD (CPM_VARS.slicer_uninited_sector_128), A
.mode_ne_2:
LD A, (CPM_VARS.slicer_uninited_count)
OR A
JP Z, slicer_read_write
DEC A
LD (CPM_VARS.slicer_uninited_count), A
LD A, (CPM_VARS.cur_disk)
LD HL, CPM_VARS.slicer_uninited_disk
CP (HL)
JP NZ, slicer_read_write
LD A, (CPM_VARS.curr_track)
LD HL, CPM_VARS.slicer_uninited_track
CP (HL)
JP NZ, slicer_read_write
LD A, (CPM_VARS.curr_sec)
LD HL, CPM_VARS.slicer_uninited_sector_128
CP (HL)
JP NZ, slicer_read_write
INC (HL)
LD A, (HL)
CP 36 ; Sectors per track
JP C, .no_inc_track
LD (HL), 0x0
LD A, (CPM_VARS.slicer_uninited_track)
INC A
LD (CPM_VARS.slicer_uninited_track), A
.no_inc_track:
XOR A
LD (CPM_VARS.tmp_slicer_can_read), A
JP base_read_write
; --------------------------------------------------
slicer_read_write:
XOR A
LD (CPM_VARS.slicer_uninited_count), A
INC A
LD (CPM_VARS.tmp_slicer_can_read), A
; --------------------------------------------------
base_read_write:
XOR A
LD (CPM_VARS.tmp_slicer_result), A
LD A, (CPM_VARS.curr_sec)
OR A
RRA
OR A
RRA
LD (CPM_VARS.tmp_slicer_real_sector), A
LD HL, CPM_VARS.slicer_has_data
LD A, (HL)
LD (HL), 0x1
OR A
JP Z, .no_data
LD A, (CPM_VARS.cur_disk)
LD HL, CPM_VARS.slicer_disk
CP (HL)
JP NZ, .pos_diff
LD A, (CPM_VARS.curr_track)
LD HL, CPM_VARS.slicer_track
CP (HL)
JP NZ, .pos_diff
LD A, (CPM_VARS.tmp_slicer_real_sector)
LD HL, CPM_VARS.slicer_real_sector
CP (HL)
JP Z,calc_sec_addr_in_bfr
.pos_diff:
LD A, (CPM_VARS.slicer_need_save)
OR A
CALL NZ, slicer_save_buffer ; save buffer if needed
.no_data:
LD A, (CPM_VARS.cur_disk)
LD (CPM_VARS.slicer_disk), A
LD A, (CPM_VARS.curr_track)
LD (CPM_VARS.slicer_track), A
LD A, (CPM_VARS.tmp_slicer_real_sector)
LD (CPM_VARS.slicer_real_sector), A
LD A, (CPM_VARS.tmp_slicer_can_read)
OR A
CALL NZ,slicer_read_buffer
XOR A
LD (CPM_VARS.slicer_need_save), A
; --------------------------------------------------
calc_sec_addr_in_bfr:
LD A, (CPM_VARS.curr_sec)
AND 0x3
LD L, A
LD H, 0
ADD HL, HL
ADD HL, HL
ADD HL, HL
ADD HL, HL
ADD HL, HL
ADD HL, HL
ADD HL, HL ; *128
LD DE, CPM_VARS.slicer_buffer
ADD HL, DE
EX DE, HL
LD HL, (CPM_VARS.dma_addr)
LD C, 0x80
LD A, (CPM_VARS.tmp_slicer_operation)
OR A
JP NZ, .no_save
LD A, 0x1
LD (CPM_VARS.slicer_need_save), A
EX DE, HL
.no_save:
LD A, (DE)
INC DE
LD (HL), A
INC HL
DEC C
JP NZ, .no_save
LD A, (CPM_VARS.tmp_slicer_flush)
CP 0x1
LD A, (CPM_VARS.tmp_slicer_result)
RET NZ
OR A
RET NZ
XOR A
LD (CPM_VARS.slicer_need_save), A
CALL slicer_save_buffer
LD A, (CPM_VARS.tmp_slicer_result)
RET
; --------------------------------------------------
slicer_save_buffer:
CALL slicer_get_floppy_args
LD C, 0xA6 ; VG93 CMD
CALL MON.write_floppy
LD (CPM_VARS.tmp_slicer_result), A
RET
; --------------------------------------------------
slicer_read_buffer:
CALL slicer_get_floppy_args
LD C, 0x86 ; VG93 CMD
CALL MON.read_floppy
LD (CPM_VARS.tmp_slicer_result), A
RET
; --------------------------------------------------
slicer_get_floppy_args:
LD HL, CPM_VARS.tmp_buff9
LD A, (CPM_VARS.slicer_disk)
DEC A
JP Z, .non_interleave
LD HL, interleave_0
.non_interleave:
LD A, (CPM_VARS.slicer_real_sector)
ADD A, L
LD L, A
LD E, (HL)
LD A, (CPM_VARS.slicer_track)
LD D, A
LD HL, CPM_VARS.slicer_buffer
LD A, (CPM_VARS.slicer_disk)
RET
; -------------------------------------------------------
; Print zerro ended string
; Inp: HL -> string
; -------------------------------------------------------
print_strz:
LD A, (HL)
OR A
RET Z
LD C, A
PUSH HL
CALL conout_f
POP HL
INC HL
JP print_strz
msg_hello:
DB ASCII_ESC, "6", "0" ; 40x25 cursor on
DB ASCII_ESC, "8", "3" ; set palette
DB ASCII_ESC, "5", 33, 37 ; set cursor r,c
DB ASCII_ESC, "4", "1" ; set color
DB ASCII_ESC, "1", 22, 226, 226, 252, 1 ; draw fill rect x1,y1,x2,y2,m
DB ASCII_ESC, "4", "0" ; set color
DB ASCII_ESC, "1", 30, 230, 219, 248, 1 ; draw fill rect x1,y1,x2,y2,m
DB ASCII_ESC, "4", "3" ; set color
DB "OKEAH-240 CP/M (V2.2) REL.8'\r\n\n"
DB ASCII_ESC, "4", "2", 0 ; set color
; --------------------------------------------------
; Disk parameters blocks in ROM (DPBs)
; Tables of memory that describe the characteristics
; of discs on our system. There is one DPB for each
; disc type
; ----------------------------------------
; Block size | No of sectors | BSH | BLM |
; ----------------------------------------
; 1K | 8 | 3 | 7 |
; 2K | 16 | 4 | 15 |
; 4K | 32 | 5 | 31 |
; 8K | 64 | 6 | 63 |
; 16K | 128 | 7 | 127 |
; ----------------------------------------
; -------------------------------------
; Block size| Extent mask (EXM) |
; | Small disk | Large disk |
; -------------------------------------
; 2K | 1 | 0 |
; 4K | 3 | 1 |
; 8K | 7 | 3 |
; 16K | 15 | 7 |
; -------------------------------------
; CKS - number of dir sectors to check before write, 0 for HDD
; For RAM-Disk 192k
dpb_ram:
DW 16 ; SPT Sector (128b) per track (16d)
DB 3 ; BSH 1k
DB 7 ; BLM 1k; Allocation block size = (BLM + 1) * 128 = 1k
DB 0 ; EXM extent mask
DW 191 ; DSM Disk size blocks - 1
DW 31 ; DRM Dir elements - 1
DB 10000000b ; AL0 Dir map byte 1
DB 00000000b ; AL1 Dir map byte 2
DW 0x0008 ; CKS checksum vector size (8 sectors=1k)
DW 0x0000 ; OFF (tracks reserved for system)
dpb_empty:
DS 15, 0xff
; For FLOPPY 720k
dpb_flop_720k:
DW 36 ; SPT Sector (128b) per track 36 * 128 = 18KB
DB 4 ; BSH 2k
DB 15 ; BLM 2k; Allocation block size = (BLM + 1) * 128 = 2k
DB 0 ; EXM extent mask
DW 359 ; DSM Disk size blocks - 1 (359d)
DW 127 ; DRM Directory entries - 1 (127d)
DB 11000000b ; AL0 Dir map byte 1 (2 dir blk)
DB 00000000b ; AL1 Dir map byte 2
DW 32 ; CKS checksum vector size (32 sectors = 2k)
DW 0x0000 ; OFF (No of tracks reserved for system)
; For FLOPPY 360k
dpb_flop_360k:
DW 36 ; SPT Sector (128b) per track 36 * 128 = 18KB
DB 4 ; BSH 2k
DB 15 ; BLM 2k; Allocation block size = (BLM + 1) * 128 = 2k
DB 1 ; EXM extent mask
DW 179 ; DSM Disk size blocks - 1 (179d)
DW 127 ; DRM Directory entries - 1 (127d)
DB 11000000b ; AL0 Dir map byte 1 (2 dir blk)
DB 00000000b ; AL1 Dir map byte 2
DW 32 ; CKS checksum vector size (32 sectors = 2k)
DW 0x0000 ; OFF (No of tracks reserved for system)
bios_ini_vals:
DB 0xaa, 0xaa, 0, 0xff, 1, 8, 6, 4, 2, 9, 7, 5, 3
; --------------------------------------------------
; Disk parameters headers in ROM
; --------------------------------------------------
; Disk A RAM
dph_disk_a:
DW 0 ; Sector translate table pointer
DW 0, 0, 0 ; Scratchpad area
DW CPM_VARS.dir_buffer ; Directory buffer pointer
DW CPM_VARS.DPB_A_RAM ; DPB Pointer
DW CPM_VARS.CHK_VEC_A ; Check Vector pointer
DW CPM_VARS.AL_MAP_A ; Allocation map pointer
; Disk B Floppy
dph_disk_b:
DW 0 ; Sector translate table pointer
DW 0, 0, 0 ; Scratchpad area
DW CPM_VARS.dir_buffer ; Directory buffer pointer
DW CPM_VARS.DPB_B_RAM ; DPB Pointer
DW CPM_VARS.CHK_VEC_B ; Check Vector pointer
DW CPM_VARS.AL_MAP_B ; Allocation map pointer
; Disk C Floppy
dph_disk_c:
DW 0 ; Sector translate table pointer
DW 0, 0, 0 ; Scratchpad area
DW CPM_VARS.dir_buffer ; Directory buffer pointer
DW CPM_VARS.DPB_C_RAM ; DPB Pointer
DW CPM_VARS.CHK_VEC_C ; Check Vector pointer
DW CPM_VARS.AL_MAP_C ; Allocation map pointer
res_data: ; offset 0xda28
DB 1, 8, 6, 4, 2, 9, 7, 5, 3
DPB_END EQU $
DB 0x0e, 3
; -------------------------------------------------------
; Filler to align blocks in ROM
; -------------------------------------------------------
LAST EQU $
CODE_SIZE EQU LAST-0xD600
FILL_SIZE EQU 0x500-CODE_SIZE
DISPLAY "| BIOS\t| ",/H,boot_f," | ",/H,CODE_SIZE," | ",/H,FILL_SIZE," |"
IFDEF CHECK_INTEGRITY
; Check integrity
ASSERT bios_wboot = 0xd6a8
ASSERT sel_disk = 0xd781
ASSERT home = 0xd7a7
ASSERT ram_disk_calc_addr = 0xd7eb
ASSERT write_phys_op = 0xd81e
ASSERT base_read_write = 0xd88a
ASSERT calc_sec_addr_in_bfr = 0xd8e4
ASSERT slicer_save_buffer = 0xd928
ASSERT print_strz = 0xd95e
ASSERT msg_hello = 0xd96b
ASSERT dpb_ram = 0xd9af
ASSERT dph_disk_a = 0xd9f8
ASSERT res_data = 0xda28
ENDIF
FILLER:
DS FILL_SIZE, 0xff
ENDMODULE
IFNDEF BUILD_ROM
OUTEND
ENDIF

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,882 @@
; =======================================================
; Ocean-240.2
; CPM CPP, ROM PART
; AT 0xDB00
;
; Disassembled by Romych 2025-09-09
; =======================================================
INCLUDE "equates.inc"
INCLUDE "ram.inc"
IFNDEF BUILD_ROM
OUTPUT ccp_rom.bin
ENDIF
MODULE CCP_ROM
ORG 0xDB00
@ccp_entry:
LD HL, 0x0 ; prevent stack overflow
ADD HL, SP
LD (CPM_VARS.saved_stack_ptr), HL
LD SP, CPM_VARS.ccp_safe_stack
CALL get_cmd_index
LD HL, ccp_commands ;= DB6Ch
LD E, A
LD D, 0x0
ADD HL, DE
ADD HL, DE
LD A, (HL)
INC HL
LD H, (HL)
LD L, A
JP (HL) ; jump to command
ccp_commands_str:
DB "SDIR READ WRITE"
; -------------------------------------------------------
; Search user command position in available commands list
; -------------------------------------------------------
get_cmd_index:
LD HL, ccp_commands_str ; -> 'DIR'
LD C, 0x0
.cmd_next:
LD A, C
CP CCP_COMMAND_COUNT
RET NC
LD DE, CCP_RAM.ccp_current_fcb_fn
LD B, CCP_COMMAND_SIZE
.cmp_nxt:
LD A, (DE)
CP (HL) ; -> 'DIR'
JP NZ, .no_eq
INC DE
INC HL
DEC B
JP NZ, .cmp_nxt
LD A, (DE)
CP ASCII_SP
JP NZ, .inc_next
LD A, C
RET
.no_eq:
INC HL
DEC B
JP NZ, .no_eq
.inc_next:
INC C
JP .cmd_next
; --------------------------------------------------
; Command handlers ref table
; --------------------------------------------------
ccp_commands:
DW ccp_dir
DW ccp_read
DW ccp_write
DW ccp_ret ; r8
; DW ccp_exit1 ; r8
ccp_ret:
LD HL, (CPM_VARS.saved_stack_ptr)
LD SP, HL
JP CCP_RAM.ccp_unk_cmd
;ccp_exit1:
; JP MON.mon_hexb
; --------------------------------------------------
; DIR [filemask] command handler
; --------------------------------------------------
ccp_dir:
CALL CCP_RAM.ccp_cv_first_to_fcb
CALL CCP_RAM.ccp_drive_sel
; chech some filemask specified in command line
LD HL, CCP_RAM.ccp_current_fcb_fn
LD A, (HL)
CP ' '
JP NZ, .has_par
; no filemask, fill with wildcard '?'
LD B, 11
.fill_wildcard:
LD (HL), '?'
INC HL
DEC B
JP NZ, .fill_wildcard
; find file by specified mask
.has_par:
CALL CCP_RAM.ccp_find_first
JP NZ, .f_found
; no files found, print and exit
CALL CCP_RAM.ccp_out_no_file
JP CCP_RAM.ccp_cmdline_back
.f_found:
CALL CCP_RAM.ccp_out_crlf
LD HL, 0x0
LD (CPM_VARS.tmp_dir_total), HL
LD E, 0
.do_next_direntry:
PUSH DE
CALL CCP_RAM.ccp_find_first
POP DE
PUSH DE
; Find file with e number
.find_file_e:
DEC E
JP M, .file_out_next
PUSH DE
CALL CCP_RAM.ccp_bdos_find_next
POP DE
JP Z, .file_e_found
JP .find_file_e
.file_out_next:
LD A, (CCP_RAM.ccp_bdos_result_code)
; calc address of DIR entry in DMA buffer
; A[6:5] = A[1:0] = 32*A
RRCA ; [C] -> [7:0] -> [C]
RRCA ;
RRCA ;
AND 01100000b ; mask
LD C, A
PUSH BC
CALL CCP_RAM.ccp_out_crlf ; start new line
CALL CCP_RAM.ccp_bdos_drv_get
INC A
LD (dma_buffer), A ; disk
POP BC
LD B, 0x0
LD HL, dma_buffer+FCB_FN ; filename
LD E, L
LD D, H
ADD HL, BC
; copy filename to tmp FCB and out to screen
LD B, 0x1
.copy_next:
LD A, (HL)
LD (DE), A
LD C, A
CALL BIOS.conout_f
INC HL
INC DE
INC B
LD A, B
CP FN_LEN ; >12 end of name
JP C, .copy_next
.zero_up_36:
XOR A
LD (DE), A ; zero at end
INC B
LD A, B
CP 36
JP C, .zero_up_36
; calc file size for current entry
LD DE, dma_buffer
CALL cpp_bdos_f_size
LD HL, (fcb_ra_record_num) ; file size in blocks
; get disk blk size
LD A, (CPM_VARS.bdos_curdsk)
OR A
JP NZ, .no_dsk_a0
LD B, 3 ; for A - blk=3
JP .dsk_a0
.no_dsk_a0:
LD B, 4 ; for other disks - blk=4
.dsk_a0:
LD C, L
; convert 128b OS block to disk blocks
.mul_to_dsk_blk:
XOR A
LD A, H
RRA
LD H, A
LD A, L
RRA
LD L, A
DEC B
JP NZ, .mul_to_dsk_blk
; round up
LD A, (CPM_VARS.bdos_curdsk)
OR A
JP NZ, .no_dsk_a1
LD A, 00000111b ; for A - ~(~0 << 3)
JP .ds_skip1
.no_dsk_a1:
LD A, 00001111b ; for other dsk - ~(~0 << 4)
.ds_skip1:
AND C
JP Z, .cvt_blk_kb
INC HL
; Convert blocks to kilobytes (A-1k B-2k)
.cvt_blk_kb:
LD A, (CPM_VARS.bdos_curdsk)
OR A
JP Z, .ds_skip2
ADD HL, HL ; 2k
; add file size to total dir size
.ds_skip2:
EX DE, HL
LD HL, (CPM_VARS.tmp_dir_total)
ADD HL, DE
LD (CPM_VARS.tmp_dir_total), HL
; display size in K
LD C, ' '
CALL BIOS.conout_f
CALL BIOS.conout_f
CALL ccp_cout_num
LD C, 'K'
CALL BIOS.conout_f
CALL CCP_RAM.ccp_getkey_no_wait
JP NZ, CCP_RAM.ccp_cmdline_back
POP DE
INC E
JP .do_next_direntry
.file_e_found:
POP DE
LD HL, msg_free_space ;= "\r\nFREE SPACE "
; Out: FREE SPACE
CALL ccp_out_str_z
LD A, (CPM_VARS.bdos_curdsk)
OR A
JP NZ, .no_ram_dsk
LD HL, (BIOS.disk_a_size)
JP .calc_remanis_ds
.no_ram_dsk:
DEC A
LD HL, (BIOS.disk_b_size)
JP Z, .calc_remanis_ds
LD HL, (BIOS.disk_c_size)
LD A, (disk_sw_trk)
OR A
JP NZ, .calc_remanis_ds
LD A, H
CP 1
JP Z, .d720
LD HL, 360
JP .calc_remanis_ds
.d720:
LD HL, 720
; Disk size - Dir size = Free
.calc_remanis_ds:
EX DE, HL
LD HL, (CPM_VARS.tmp_dir_total)
LD A, E
SUB L
LD E, A
LD A, D
SBC A, H
LD D, A
CALL ccp_cout_num
LD C, 'K'
CALL BIOS.conout_f
CALL CCP_RAM.ccp_out_crlf
JP CCP_RAM.ccp_cmdline_back
msg_free_space:
DB "\r\nFREE SPACE ",0
ccp_cout_num:
LD A, D
AND 11100000b
JP Z, .less_224
LD C, '*'
CALL BIOS.conout_f
CALL BIOS.conout_f
CALL BIOS.conout_f
CALL BIOS.conout_f
RET
.less_224:
LD HL, 0x0
; copy number to BC
LD B, D
LD C, E
LD DE, 0x1
LD A, 13
.bc_rra:
PUSH AF
PUSH HL
; BC >> 1
LD A, B
RRA
LD B, A
LD A, C
RRA
LD C, A
JP NC, .bc_rra_ex
POP HL
CALL cpp_daa16
PUSH HL
.bc_rra_ex:
LD L, E
LD H, D
CALL cpp_daa16
EX DE, HL
POP HL
POP AF
DEC A
JP NZ, .bc_rra
LD D, 4
LD B, 0
.next_d:
LD E, 4
.next_e:
LD A, L
RLA
LD L, A
LD A, H
RLA
LD H, A
LD A, C
RLA
LD C, A
DEC E
JP NZ, .next_e
LD A, C
AND 0xf
ADD A, '0'
CP '0'
JP NZ, .no_zero
DEC B
INC B
JP NZ, .b_no_one
LD A, D
DEC A
JP Z, .d_one
LD A, ' '
JP .b_no_one
.d_one:
LD A, '0'
.no_zero:
LD B, 0x1
.b_no_one:
LD C, A
CALL BIOS.conout_f
DEC D
JP NZ, .next_d
RET
; -------------------------------------------------------
; ADD with correction HL=HL+DE
; -------------------------------------------------------
cpp_daa16:
LD A, L
ADD A, E
DAA
LD L, A
LD A, H
ADC A, D
DAA
LD H, A
RET
; -------------------------------------------------------
; Call BDOS function 35 (F_SIZE) - Compute file size
; -------------------------------------------------------
cpp_bdos_f_size:
LD C, F_SIZE
JP jp_bdos_enter
; -------------------------------------------------------
; Read Intel HEX data from serial port
; -------------------------------------------------------
ccp_read:
LD DE, msg_read_hex
CALL out_dollar_str
LD HL, 0x0
LD (CCP_RAM.hex_length), HL
; Wait for start of Intel HEX line
.wait_colon:
CALL MON.mon_serial_in
CP ':'
JP NZ, .wait_colon
; Init checksum
XOR A
LD D, A
CALL ser_read_hexb ; read byte_count
JP Z, .end_of_file
LD E, A
CALL ser_read_hexb ; read address hi
LD H, A
CALL ser_read_hexb ; read address lo
LD L, A ; HL - dst address
CALL ser_read_hexb ; read rec type
; calculate length += byte_count
PUSH HL
LD HL, (CCP_RAM.hex_length)
LD A, L
ADD A, E
LD L, A
LD A, H
ADC A, 0
LD H, A
LD (CCP_RAM.hex_length), HL
POP HL
LD C, E
; receive next E=byte_count bytes
.receive_rec:
CALL ser_read_hexb
LD (HL), A
INC HL
DEC E
JP NZ, .receive_rec
CALL ser_read_hexb ; receive checksum
JP NZ, .load_error ; jump if error
JP .wait_colon ; jump to wait next line
.end_of_file:
; read tail 4 bytes: 00 00 01 ff
CALL ser_read_hexb
CALL ser_read_hexb
CALL ser_read_hexb
CALL ser_read_hexb
JP Z, .load_complete
.load_error:
LD DE, .msg_error
JP out_dollar_str
.load_complete:
; Out message with length of received file
LD HL, (CCP_RAM.hex_length)
LD A, H
CALL MON.mon_hexb
LD A, L
CALL MON.mon_hexb
LD DE, .msg_bytes
CALL out_dollar_str
; Calculate number of pages
LD HL, (CCP_RAM.hex_length)
LD A, L
ADD A, 0xff
LD A, H
ADC A, 0x0
RLA
LD (CCP_RAM.hex_sectors), A
; Out message with number of pages
CALL MON.mon_hexb
LD DE, .msg_pages
CALL out_dollar_str
; Check for file name specified in cmd line
CALL CCP_RAM.ccp_cv_first_to_fcb
CALL CCP_RAM.ccp_drive_sel
LD A, (CCP_RAM.ccp_current_fcb_fn)
CP ASCII_SP
JP Z, .warm_boot
; Create file
LD DE, CCP_RAM.ccp_current_fcb
LD C, F_MAKE
CALL jp_bdos_enter
INC A
JP Z, .load_error
LD HL, tpa_start
LD (CCP_RAM.hex_buff), HL
.wr_sector:
; set source buffer address
LD HL, (CCP_RAM.hex_buff)
EX DE, HL
LD C, F_DMAOFF
CALL jp_bdos_enter
; write source buffer to disk
LD DE, CCP_RAM.ccp_current_fcb
LD C, F_WRITE
CALL jp_bdos_enter
; check errors
OR A
JP NZ, .load_error
; rewind forward to next sector
LD HL, (CCP_RAM.hex_buff)
LD DE, 128 ; sector size
ADD HL, DE
LD (CCP_RAM.hex_buff), HL
; decrement sector count
LD A, (CCP_RAM.hex_sectors)
DEC A
LD (CCP_RAM.hex_sectors), A
JP NZ, .wr_sector ; jump if remains sectors
; close file
LD DE, CCP_RAM.ccp_current_fcb
LD C, F_CLOSE
CALL jp_bdos_enter
; check errors
CP 0xff
JP Z, .load_error
.warm_boot:
LD C, P_TERMCPM
JP jp_bdos_enter
.msg_bytes:
DB "h bytes ($"
.msg_pages:
DB " pages)\n\r$"
.msg_error:
DB "error!\n\r$"
; ---------------------------------------------------
; Read next two symbols from serial and convert to
; byte
; Out: A - byte
; CF set if error
; ---------------------------------------------------
ser_read_hexb:
PUSH BC
CALL MON.mon_serial_in
CALL hex_to_nibble
RLCA
RLCA
RLCA
RLCA
LD C, A
CALL MON.mon_serial_in
CALL hex_to_nibble
OR C
LD C, A
ADD A, D
LD D, A
LD A, C
POP BC
RET
; ---------------------------------------------------
; Convert hex symbol to byte
; Inp: A - '0'..'F'
; Out: A - 0..15
; CF set if error
; ---------------------------------------------------
hex_to_nibble:
SUB '0' ; < '0' - error
RET C
ADD A, 233 ; F -> 255
RET C ; > F - error
ADD A, 6
JP P, .l1
ADD A, 7
RET C
.l1:
ADD A, 10
OR A
RET
; ---------------------------------------------------
; Out $ ended string
; Inp: DE -> string$
; ---------------------------------------------------
out_dollar_str:
LD C, C_WRITESTR
JP jp_bdos_enter
msg_read_hex:
DB "\n\rRead HEX from RS232... $"
filler1:
DS 62, 0
; -------------------------------------------------------
; Out zerro ended string
; In: HL -> strZ
; -------------------------------------------------------
ccp_out_str_z:
LD A, (HL)
OR A
RET Z
LD C, A
CALL BIOS.conout_f
INC HL
JP ccp_out_str_z
; -------------------------------------------------------
; Delete file and out No Space message
; -------------------------------------------------------
ccp_del_f_no_space:
LD DE, CCP_RAM.ccp_current_fcb
CALL CCP_RAM.ccp_bdos_era_file
JP CCP_RAM.ccp_no_space
; -------------------------------------------------------
; Read current file next block
; Out: A=0 - Ok, 0xFF - HW Error;
; -------------------------------------------------------
cpp_read_f_blk:
LD DE, CPM_VARS.ccp_fcb ; FCB here
JP CCP_RAM.ccp_bdos_read_f
ccp_write:
CALL CCP_RAM.ccp_cv_first_to_fcb
CALL CCP_RAM.ccp_drive_sel
LD HL, CCP_RAM.ccp_current_fcb_fn
LD A, (HL)
CP ' '
JP NZ, .find_f
LD B, 11
.fill_with_wc:
LD (HL), '?'
INC HL
DEC B
JP NZ, .fill_with_wc
.find_f:
CALL CCP_RAM.ccp_find_first
JP NZ, .found_f
CALL CCP_RAM.ccp_out_no_file
JP CCP_RAM.ccp_cmdline_back
.found_f:
LD E, 0 ; file counter
.do_next_f1:
PUSH DE
CALL CCP_RAM.ccp_find_first
POP DE
PUSH DE
.do_next_f2:
DEC E
JP M, .do_file
PUSH DE
CALL CCP_RAM.ccp_bdos_find_next
POP DE
JP Z, .no_more_f
JP .do_next_f2
.do_file:
POP BC
PUSH BC
LD A, C
OR A
JP Z, .calc_addr
LD DE, 1200
; Delay with key interrupt check
.delay_1:
XOR A
.delay_2:
DEC A
JP NZ, .delay_2
PUSH DE
CALL CCP_RAM.ccp_getkey_no_wait
POP DE
JP NZ, CCP_RAM.ccp_cmdline_back
DEC DE
LD A, D
OR E
JP NZ, .delay_1
.calc_addr:
LD A, (CCP_RAM.ccp_bdos_result_code)
; A=0-3 - for Ok, calc address of DIR entry in DMA buffer
RRCA
RRCA
RRCA
AND 01100000b
LD C, A
PUSH BC
CALL CCP_RAM.ccp_out_crlf
CALL CCP_RAM.ccp_bdos_drv_get
INC A
LD (CPM_VARS.ccp_fcb_dr), A ; set drive number
POP BC
LD B, 0x0
LD HL, dma_buffer+1
ADD HL, BC
LD DE, CPM_VARS.ccp_fcb_fn
LD B, 0x1
.copy_fn:
LD A, (HL)
LD (DE), A
INC HL
INC DE
INC B
LD A, B
CP 12
JP C, .copy_fn
.fillz_fn:
XOR A
LD (DE), A
INC DE
INC B
LD A, B
CP 36
JP C, .fillz_fn
LD HL, CPM_VARS.ccp_fcb_fn
CALL ccp_out_str_z
LD HL, dma_buffer
; Empty first 128 bytes of DMA buffer
LD B, 128
.clear_buf:
LD (HL), 0x0
INC HL
DEC B
JP NZ, .clear_buf
; Copy file name at buffer start
LD HL, dma_buffer
LD DE, CPM_VARS.ccp_fcb_fn
LD B, 8
.find_sp:
LD A, (DE)
CP ' '
JP Z, .sp_rep_dot ; ' ' -> '.'
LD (HL), A
INC HL
INC DE
JP .find_sp
.sp_rep_dot:
LD (HL), '.'
INC HL
CALL CCP_RAM.ccp_find_no_space
.cont_copy_fn:
LD A, (DE)
LD (HL), A
OR A
JP Z, .end_copy
INC HL
INC DE
JP .cont_copy_fn
.end_copy:
LD DE, CPM_VARS.ccp_fcb
CALL CCP_RAM.ccp_bdos_open_f
LD DE, 0x8000 ; Block ID
LD HL, dma_buffer
CALL cpp_pause_tape_wr_blk
CALL cpp_pause_tape_wr_blk
LD DE, 0x1
; Read file block and write to Tape
.read_f_write_t:
PUSH DE
CALL cpp_read_f_blk
; a=0xff if error; a=1 - EOF
DEC A
JP Z, .eof
LD A, (CPM_VARS.ccp_fcb_cr)
AND 0x7f
CP 0x1
JP NZ, .write_once
; Write block to Tape with ID=0 twice
LD DE, 0x0 ; Block ID=0
LD HL, dma_buffer
CALL cpp_pause_tape_wr_blk
.write_once:
CALL CCP_RAM.ccp_getkey_no_wait
LD HL, dma_buffer
POP DE
JP NZ, CCP_RAM.ccp_cmdline_back
CALL cpp_pause_tape_wr_blk
; Inc Block ID and continue
INC DE
JP .read_f_write_t
.eof:
POP DE
EX DE, HL
LD (dma_buffer), HL
EX DE, HL
; Final block ID=0xFFFF
LD DE, 0xffff
; Write twice
CALL cpp_pause_tape_wr_blk
CALL cpp_pause_tape_wr_blk
POP DE
INC E
JP .do_next_f1
.no_more_f:
POP DE
CALL CCP_RAM.ccp_out_crlf
JP CCP_RAM.ccp_cmdline_back
; -------------------------------------------------------
; Write block to tape after pause
; -------------------------------------------------------
cpp_pause_tape_wr_blk:
LD BC, 3036
.delay:
DEC BC
LD A, B
OR C
JP NZ, .delay
JP BIOS.tape_write_f
DB 0x4c
; -------------------------------------------------------
; Filler to align blocks in ROM
; -------------------------------------------------------
LAST EQU $
CODE_SIZE EQU LAST-0xDB00
FILL_SIZE EQU 0x500-CODE_SIZE
DISPLAY "| CCP_ROM\t| ",/H,ccp_entry," | ",/H,CODE_SIZE," | ",/H,FILL_SIZE," |"
; Check integrity
ASSERT ccp_dir = 0xdb62
ASSERT ccp_dir.find_file_e = 0xdb97
ASSERT ccp_dir.file_out_next = 0xdba6
ASSERT ccp_dir.file_e_found = 0xdc3e
ASSERT ccp_dir.calc_remanis_ds = 0xdc72
ASSERT ccp_dir.no_ram_dsk = 0xdc52
ASSERT msg_free_space = 0xdc8a
ASSERT ccp_cout_num = 0xdc9a
FILLER
DS FILL_SIZE-1, 0xff
DB 0xaa
ENDMODULE
IFNDEF BUILD_ROM
OUTEND
ENDIF

View File

@ -0,0 +1,46 @@
; ======================================================
; Ocean-240.2
; CP/M Combine file. Includes all sources to build
; ROM 0xC000
;
; Disassembled by Romych 2025-02-12
; ======================================================
DEFINE BUILD_ROM
DEVICE NOSLOT64K
;
; |-----------|---------------|-----------|--------------------------------------|
; | OFFSET | SIZE | Module | Memory Address |
; |-----------|---------------|-----------|--------------------------------------|
; | 0x0000 | 2048 (0x800) | CCP_RAM | 0xC000..0xC7FF -> RAM 0xB200..0xB5FF |
; | 0x0800 | 3584 (0xE00) | BDOS | 0xC800.. |
; | 0x1600 | 1024 (0x400) | BIOS | 0xD600..D9FF |
; | 0x1B00 | 1280 (0x500) | CCP_ROM | 0xDB00..DFFF |
; |-----------|---------------|-----------|--------------------------------------|
;
DISPLAY "| Module | Offset | Size | Free |"
DISPLAY "|-------------|---------|--------|--------|"
OUTPUT cpm-C000.bin
;LABELSLIST "cpm.labels"
;CSPECTMAP "cpm.map"
INCLUDE "equates.inc"
INCLUDE "bdos.inc"
INCLUDE "ccp_ram.asm"
INCLUDE "bdos.asm"
INCLUDE "bios.asm"
INCLUDE "ccp_rom.asm"
OUTEND
OUTPUT variables.bin
INCLUDE "cpm_vars.inc"
OUTEND
END

5328
examples/hello/cpm/cpm.sld Normal file

File diff suppressed because it is too large Load Diff

43
examples/hello/main.asm Normal file
View File

@ -0,0 +1,43 @@
; ==================================================
; Simple CP/M program
; By Romych
; ==================================================
DEVICE NOSLOT64K
SLDOPT COMMENT WPMEM, ASSERTION, LOGPOINT
; INCLUDE "ok240/equates.inc"
INCLUDE "ok240/bdos.inc"
OUTPUT main.com
ORG 0x100
LD B, 10
LD SP, stack
AGAIN:
LD DE, message
; ASSERTION B < 11
LD A, 10
SUB B
OR 0x30
LD (DE), A
LD C, C_WRITESTR
PUSH BC
CALL BDOS_ENTER
POP BC
DEC B ; LOGPOINT
JP NZ, AGAIN
JP WARM_BOOT
message: ; WPMEM, 1, w
DB "n - Welcome to OK240.2!\r\n$"
OUTEND
;DS 1024
stack EQU 0xbfc0
;DISPLAY "message: EQU\t| ",/H,message
END

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,73 @@
; =======================================================
; Ocean-240.2
; CP/M v2.2. Equates to call BDOS functions
;
; Created by Romych 2026-02-16
; =======================================================
IFNDEF _BDOS_INC
DEFINE _BDOS_INC
; ------------------------------------------------------
; CP/M Entries and variables
; ------------------------------------------------------
WARM_BOOT EQU 0x0000 ; Jump warm_boot (Restart)
IO_BYTE EQU 0x0003 ; Input/Output mapping
CUR_USER_DRV EQU 0x0004 ; [7:4] - curent user, [3:0] - current drive
BDOS_ENTER EQU 0x0005 ; Jump bdos (CALL 5 to make CP/M requests)
FCB1 EQU 0x005c ; Default FCB, 16 bytes
FCB2 EQU 0x006c
DMA_BUFFER EQU 0x0080 ; Default "DMA" 128 bytes buffer
CMD_LINE_LEN EQU 0x0080 ; command line character count
CMD_LINE EQU 0x0081 ; command line buffer
TPA EQU 0x0100 ; start of program
; ------------------------------------------------------
; CP/M BDOS Functions
; ------------------------------------------------------
P_TERMCPM EQU 0 ; System Reset
C_READ EQU 1 ; Console input
C_WRITE EQU 2 ; Console output
A_READ EQU 3 ; Auxiliary (Reader) input
A_WRITE EQU 4 ; Auxiliary (Punch) output
L_WRITE EQU 5 ; Printer output
C_RAWIO EQU 6 ; Direct console I/O
A_STATIN EQU 7 ; Auxiliary Input status
A_STATOUT EQU 8 ; Auxiliary Output status
C_WRITESTR EQU 9 ; Output string
C_READSTR EQU 10 ; Buffered console input
C_STAT EQU 11 ; Console status
S_BDOSVER EQU 12 ; Return version number
DRV_ALLRESET EQU 13 ; Reset discs
DRV_SET EQU 14 ; Select disc
F_OPEN EQU 15 ; Open file
F_CLOSE EQU 16 ; Close file
F_SFIRST EQU 17 ; search for first
F_SNEXT EQU 18 ; search for next
F_DELETE EQU 19 ; delete file
F_READ EQU 20 ; read next record
F_WRITE EQU 21 ; write next record
F_MAKE EQU 22 ; create file
F_RENAME EQU 23 ; Rename file
DRV_LOGINVEC EQU 24 ; Return bitmap of logged-in drives
DRV_GET EQU 25 ; Return current drive
F_DMAOFF EQU 26 ; Set DMA address
DRV_ALLOCVEC EQU 27 ; Return address of allocation map
DRV_SETRO EQU 28 ; Software write-protect current disc
DRV_ROVEC EQU 29 ; Return bitmap of read-only drives
F_ATTRIB EQU 30 ; set file attributes
DRV_DPB EQU 31 ; get DPB address
F_USERNUM EQU 32 ; get/set user number
F_READRAND EQU 33 ; Random access read record
F_WRITERAND EQU 34 ; Random access write record
F_SIZE EQU 35 ; Compute file size
F_RANDREC EQU 36 ; Update random access pointer
DRV_RESET EQU 37 ; Selectively reset disc drives
DRV_ACCESS EQU 38 ; Access drives
DRV_FREE EQU 39 ; Free drive
F_WRITEZF EQU 40 ; Write random with zero fill
ENDIF

View File

@ -0,0 +1,104 @@
; ======================================================
; Ocean-240.2
; Equates for all assembly sources
;
; By Romych 2026-03-10
; ======================================================
IFNDEF _EQUATES
DEFINE _EQUATES
ASCII_BELL EQU 0x07 ; Make Beep
ASCII_BS EQU 0x08 ; Move cursor left (Back Space)
ASCII_TAB EQU 0x09 ; Move cursor right +8 pos
ASCII_LF EQU 0x0A ; Move cursor down (Line Feed)
ASCII_FF EQU 0x0C ; Move cursor to home (Form Feed)
ASCII_CR EQU 0x0D ; Move gursor to 1st pos (Cariage Return)
ASCII_CAN EQU 0x18 ; Move cursor right
ASCII_EM EQU 0x19 ; Move cursor up
ASCII_SUB EQU 0x1A ; CTRL-Z - end of text file marker
ASCII_ESC EQU 0x1B ;
ASCII_US EQU 0x1F ; Clear screen
ASCII_SP EQU 0x20
ASCII_DEL EQU 0x7F
; ------------------------------------------------------
BELL_PIN EQU 0x08 ; DD67 Pin PC3 - "BELL"
; ------------------------------------------------------
CTRL_A EQU 0x01
CTRL_B EQU 0x02
CTRL_C EQU 0x03 ; Warm boot
CTRL_D EQU 0x04
CTRL_E EQU 0x05 ; Move to beginning of new line (Physical EOL)
CTRL_F EQU 0x06
CTRL_G EQU 0x07
CTRL_H EQU 0x08 ; Backspace
CTRL_I EQU 0x09
CTRL_J EQU 0x0A ; LF - Line Feed
CTRL_K EQU 0x0B
CTRL_L EQU 0x0C
CTRL_M EQU 0x0D ; CR - Carriage Return
CTRL_N EQU 0x0E
CTRL_O EQU 0x0F
CTRL_P EQU 0x10 ; turn on/off printer
CTRL_Q EQU 0x11
CTRL_R EQU 0x12 ; Repeat current cmd line
CTRL_S EQU 0x13 ; Temporary stop display data to console (aka DC3)
CTRL_T EQU 0x14
CTRL_U EQU 0x15 ; Cancel (erase) current cmd line
CTRL_V EQU 0x16
CTRL_W EQU 0x17
CTRL_X EQU 0x18 ; Cancel (erase) current cmd line
CTRL_Y EQU 0x19
CTRL_Z EQU 0x1A ; CTRL-Z - end of text file marker
; ------------------------------------------------------
TRUE EQU 0xFF
FALSE EQU 0x00
; ---------------------------------------------------
; FCB Offsets
; ---------------------------------------------------
FCB_LEN EQU 32 ; length of FCB
FCB_SHF EQU 5
FN_LEN EQU 12 ; Length of filename in FCB
FCB_DR EQU 0 ; Drive. 0 for default, 1-16 for A-P
FCB_FN EQU 1 ; Fn - Filename, 7-bit ASCII. The top bits - attributes
FCB_FT EQU 9 ; Filetype, 7-bit ASCII.
; T1' to T3' have the following
; T1' - Read-Only
; T2' - System (hidden)
; T3' - Archive
FCB_EXT EQU 12 ; EX - Set this to 0 when opening a file and then leave it to
; CP/M. You can rewind a file by setting EX, RC, S2 and CR to 0.
FCB_S1 EQU 13 ; S1 - Reserved.
FCB_S2 EQU 14 ; S2 - Reserved. Bit 7 - wile write flag, [6:0] module number (Extent hi bits)
FCB_RC EQU 15 ; RC - Set this to 0 when opening a file and then leave it to CP/M.
FCB_AL EQU 16 ; AL - Image of the second half of the directory entry,
; containing the file's allocation (which disc blocks it owns).
FCB_CR EQU 32 ; CR - Current record within extent. It is usually best to set
; this to 0 immediately after a file has been opened and
; then ignore it.
FCB_RN EQU 33 ; Rn - Random access record number. A 16-bit (with R2 used for overflow)
; ------------------------------------------------------
IRQ_0 EQU 0x01
IRQ_1 EQU 0x02
IRQ_2 EQU 0x04
IRQ_KEYBOARD EQU 0x02
IRQ_PRINTER EQU 0x08
IRQ_TIMER EQU 0x10
KBD_ACK EQU 0x10
PRINTER_ACK EQU 0x10
TX_READY EQU 0x01
RX_READY EQU 0x02
TMR0_SQWAVE EQU 0x36
; ------------------------------------------------------
ENDIF

132
examples/hello/ok240/io.inc Normal file
View File

@ -0,0 +1,132 @@
; =======================================================
; Ocean-240.2
; Computer with FDC variant.
; IO Ports definitions
;
; By Romych 2025-09-09
; =======================================================
IFNDEF _IO_PORTS
DEFINE _IO_PORTS
; -------------------------------------------------------
; КР580ВВ55 DD79
; -------------------------------------------------------
; Port A - User port A
USR_DD79PA EQU 0x00
; Port B - User port B
USR_DD79PB EQU 0x01
; Port C - User port C
USR_DD79PC EQU 0x02
; Config: [1][ma1,ma0][0-aO|1-aI],[0-chO,1-chI],[mb],[0-bO|1-bI],[0-clO,1-clI]
; Set bit: [0][xxx][bbb][0|1]
USR_DD79CTR EQU 0x03
; -------------------------------------------------------
; КР1818ВГ93
; -------------------------------------------------------
; CMD
FDC_CMD EQU 0x20
; TRACK
FDC_TRACK EQU 0x21
; SECTOR
FDC_SECT EQU 0x22
; DATA
FDC_DATA EQU 0x23
;
FDC_DRQ EQU 0x24
; Controller port
FLOPPY EQU 0x25
; -------------------------------------------------------
; КР580ВВ55 DD78
; -------------------------------------------------------
; Port A - Keyboard Data
KBD_DD78PA EQU 0x40
; Port B - JST3,SHFT,CTRL,ACK,TAPE5,TAPE4,GK,GC
KBD_DD78PB EQU 0x41
; Port C - [PC7..0]
KBD_DD78PC EQU 0x42
; Сonfig: [1][ma1,ma0][0-aO|1-aI],[0-chO,1-chI],[mb],[0-bO|1-bI],[0-clO,1-clI]
; Set bit: [0][xxx][bbb][0|1];
KBD_DD78CTR EQU 0x43
; -------------------------------------------------------
; КР580ВИ53 DD70
; -------------------------------------------------------
; Counter 1
TMR_DD70C1 EQU 0x60
; Counter 2
TMR_DD70C2 EQU 0x61
; Counter 3
TMR_DD70C3 EQU 0x62
; Config: [sc1,sc0][rl1,rl0][m2,m1,m0][bcd]
; sc - timer, rl=01-LSB, 10-MSB, 11-LSB+MSB
; mode 000 - int on fin,
; 001 - one shot,
; x10 - rate gen,
; x11-sq wave
TMR_DD70CTR EQU 0x63
; Programable Interrupt controller PIC KR580VV59
PIC_DD75A EQU 0x80
PIC_DD75B EQU 0x81
; -------------------------------------------------------
; КР580ВВ51 DD72
; -------------------------------------------------------
; Data
UART_DD72RD EQU 0xA0
; [RST,RQ_RX,RST_ERR,PAUSE,RX_EN,RX_RDY,TX_RDY]
UART_DD72RR EQU 0xA1
; -------------------------------------------------------
; КР580ВВ55 DD17
; -------------------------------------------------------
; Port A - VShift[8..1]
SYS_DD17PA EQU 0xC0
; Port B - [ROM14,13][REST][ENROM-][A18,17,16][32k]
SYS_DD17PB EQU 0xC1
; Port C - HShift[HS5..1,SB3..1]
SYS_DD17PC EQU 0xC2
; Сonfig: [1][ma1,ma0][0-aO|1-aI],[0-chO,1-chI],[mb],[0-bO|1-bI],[0-clO,1-clI]
; Set bit: [0][xxx][bbb][0|1];
SYS_DD17CTR EQU 0xC3
; -------------------------------------------------------
; КР580ВВ55 DD67
; -------------------------------------------------------
; Port A - LPT Data
LPT_DD67PA EQU 0xE0
; Port B - [VSU,C/M,FL3..1,COL3..1]
VID_DD67PB EQU 0xE1
; Port C - [USER3..1,STB-LP,BELL,TAPE3..1]
DD67PC EQU 0xE2
; Сonfig: [1][ma1,ma0][0-aO|1-aI],[0-chO,1-chI],[mb],[0-bO|1-bI],[0-clO,1-clI]
; Set bit: [0][xxx][bbb][0|1];
DD67CTR EQU 0xE3
ENDIF

View File

@ -0,0 +1,31 @@
; =======================================================
; Ocean-240.2
; Equates to call Monitor v8 functions
;
; Created by Romych 2026-02-16
; =======================================================
IFNDEF _MON_INC
DEFINE _MON_INC
mon_start EQU 0xE000
mon_hexb EQU 0xE003
non_con_status EQU 0xE006
mon_con_in EQU 0xE009
mon_con_out EQU 0xE00C
mon_serial_in EQU 0xE00F
mon_serial_out EQU 0xE012
mon_char_print EQU 0xE015
mon_tape_read EQU 0xE018
mon_tape_write EQU 0xE01B
mon_ram_disk_read EQU 0xE01E
mon_ram_disk_write EQU 0xE021
mon_tape_read_ram EQU 0xE024
mon_tape_write_ram EQU 0xE027
mon_tape_wait EQU 0xE02A
mon_tape_detect EQU 0xE02D
mon_read_floppy EQU 0xE030
mon_write_floppy EQU 0xE033
mon_out_str_z EQU 0xE036
ENDIF

View File

@ -0,0 +1,41 @@
; =======================================================
; Ocean-240.2
;
; RAM area at address: 0x0000 - 0x0100, used by CP/M and
; HW-Monitor
; By Romych 2026-02-03
; =======================================================
IFNDEF _RAM
DEFINE _RAM
MODULE RAM
@warm_boot EQU 0x0000 ; Jump warm_boot (Restart)
@warm_boot_addr EQU 0x0001 ; address of warm boot entry point
@iobyte EQU 0x0003 ; Input/Output mapping
@cur_user_drv EQU 0x0004 ; [7:4] - curent user, [3:0] - current drive
@bdos_enter EQU 0x0005 ; Jump bdos (CALL 5 to make CP/M requests)
@bdos_ent_addr EQU 0x0006 ; addres of BDOS entry point
;@RST1 EQU 0x0008
;@RST1_handler_addr EQU 0x0009
;RST2 EQU 0x0010
;RST3 EQU 0x0018
;RST4 EQU 0x0020
;RST5 EQU 0x0028
;RST6 EQU 0x0030
;RST7 EQU 0x0038
@fcb1 EQU 0x005c ; Default FCB, 16 bytes
@fcb2 EQU 0x006c
;NMI_ISR EQU 0x0066
@dma_buffer EQU 0x0080 ; Default "DMA" 128 bytes buffer
@p_cmd_line_len EQU 0x0080 ; command line character count
@p_cmd_line EQU 0x0081 ; command line buffer
@bios_stack EQU 0x0100
@tpa_start EQU 0x0100 ; start of program
@video_ram EQU 0x4000
ENDMODULE
ENDIF

14
floppy/README.md Normal file
View File

@ -0,0 +1,14 @@
# Эмулятор персонального компьютера Океан-240.2
## Образы дискет для эмулятора.
В файле floppyB.okd собрано большинство софта для компьютера. По умолчанию, при запуске эмулятора, это дискета B:.
Софт отсортирован по типам для разных юзеров.
- USER 0 - утилиты ОС CP/M
- USER 1 - Ассемблеры, линкеры
- USER 2 - MSBASIC и программы *.BAS
- USER 3 - Игры
- USER 5 - ZEXDOC, ZEXALL - тесты процессора Z80
Файл empty.okd - это образ пустой, отформатированной дискеты.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

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

View File

@ -1,290 +0,0 @@
: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

View File

@ -1,578 +0,0 @@
: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

View File

@ -1,770 +0,0 @@
: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

View File

@ -1,514 +0,0 @@
: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

View File

@ -1,258 +0,0 @@
: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

View File

@ -1,323 +0,0 @@
: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

View File

@ -1,34 +0,0 @@
: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

View File

@ -1,322 +0,0 @@
: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

BIN
img/Debug.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

View File

Before

Width:  |  Height:  |  Size: 475 KiB

After

Width:  |  Height:  |  Size: 475 KiB

View File

@ -1,18 +0,0 @@
package nanotime
import (
"time"
_ "unsafe" // required to use //go:linkname
)
//go:noescape
//go:linkname nanotime runtime.nanotime
func nanotime() int64
func Now() uint64 {
return uint64(nanotime())
}
func Since(t uint64) time.Duration {
return time.Duration(Now() - t)
}

BIN
okemu

Binary file not shown.

View File

Binary file not shown.

View File

@ -1,16 +1,14 @@
logFile: okemu.log logFile: okemu.log
logLevel: info logLevel: info
monitorFile: rom/MON_r8_9c6c6546.bin monitorFile: rom/MON_r8_9c6c6546.mon
cpmFile: rom/CPM_r8_bc0695e4.bin cpmFile: rom/CPM_r8_bc0695e4.cpm
#monitorFile: rom/MON_r5.bin
#cpmFile: rom/CPM_r5.bin
fdc: fdc:
- autoLoad: true - autoLoad: true
autoSave: true autoSave: true
floppyFile: floppy/floppyB.okd floppyFile: floppy/floppyB.okd
- autoLoad: true - autoLoad: false
autoSave: true autoSave: false
floppyFile: floppy/floppyC.okd floppyFile: floppy/empty.okd
debugger: debugger:
enabled: true enabled: true
host: localhost host: localhost

View File

@ -1,14 +0,0 @@
#! /bin/bash
echo "Build OkEmu"
export GOROOT=/home/roma/projects/go/1.25.7/
export PATH=/home/roma/projects/go/1.25.7/bin/:$PATH
version=$(git describe --tags HEAD)
#commit=$(git rev-parse HEAD)
timestamp=$(date +%Y-%m-%d' '%H:%M:%S)
go build -ldflags "-X 'main.Version=$version' -X 'main.BuildTime=$timestamp'" .
#echo "Copy to kubelogtst01"
#scp stash boykovra@kubelogtst01:

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More