update assembler cpm bios read/write routines to be more robust

add cpm-blank.zip with the more robust cpm bios read/write routines
This commit is contained in:
Fred VanEijk
2024-12-17 07:56:55 -05:00
parent 4ef031e17a
commit 60339ca389
21 changed files with 16464 additions and 16039 deletions

BIN
CPM-sd-image/cpm-blank.zip Normal file

Binary file not shown.

View File

@@ -122,10 +122,10 @@ UNUSED_DIR_MARKER = 0xE5 # Marker for unused directory entries
UNUSED_DATA_MARKER = 0x00 # Marker for unused data blocks
# Default values
DEFAULT_IMAGE_FILE = "cpm-zeroed.img"
DEFAULT_IMAGE_FILE = "cpm-new.img"
DEFAULT_TO_DIR = "to_img"
DEFAULT_FROM_DIR = "from_img"
DEFAULT_HEX_PATH = os.path.join("hexFiles") # Base path for hex files
DEFAULT_HEX_PATH = os.path.join("Z80 CPM and bootloader (basmon)/hexFiles") # Base path for hex files
DEFAULT_CPM_HEX = os.path.join(DEFAULT_HEX_PATH, "cpm22.hex")
DEFAULT_CBIOS_HEX = os.path.join(DEFAULT_HEX_PATH, "cbios128.hex")
@@ -414,13 +414,26 @@ def write_track0_image(image_file: str, cpm_hex: str, cbios_hex: str):
def create_blank_disk_image(image_file: str, drives: int = 16, cpm_hex=None, cbios_hex=None):
"""
Create a blank CP/M disk image and write system to track 0.
The image file will be created in the current working directory.
Args:
image_file (str): Name of the image file to create
drives (int): Number of drives to initialize (1-16)
cpm_hex (str, optional): CP/M hex content
cbios_hex (str, optional): CBIOS hex content
"""
# Ensure the image file is created in current directory
image_path = os.path.basename(image_file)
# Calculate total size
drive_size = DRIVE_SIZE_MB * 1024 * 1024 # 8MB per drive
total_size = drive_size * drives
# Create the file
with open(image_file, 'wb') as f:
print(f"\nCreating disk image '{image_path}' in {os.getcwd()}")
print(f"Total size: {total_size / (1024*1024):.1f} MB")
# Create the file in current directory
with open(image_path, 'wb') as f:
# Write zeros to the entire file
buffer_size = 1024 * 1024 # 1MB buffer
zeros = bytes([0] * buffer_size)
@@ -450,17 +463,19 @@ def create_blank_disk_image(image_file: str, drives: int = 16, cpm_hex=None, cbi
# Write CP/M and CBIOS as one block if both are provided
if cpm_hex and cbios_hex:
print("\nWriting system to track 0...")
write_track0_image(image_file, cpm_hex, cbios_hex)
write_track0_image(image_path, cpm_hex, cbios_hex)
else:
print("Warning: Both CP/M and CBIOS hex files required for system track")
print(f"\nDisk image created successfully: {image_path}")
def main():
parser = argparse.ArgumentParser(description="CP/M 2.2 disk image manipulation tool")
parser.add_argument("--image", default=DEFAULT_IMAGE_FILE, help=f"CP/M disk image file (default: {DEFAULT_IMAGE_FILE})")
parser.add_argument("--to", default=DEFAULT_TO_DIR, help=f"Source directory for files to copy to image (default: {DEFAULT_TO_DIR})")
parser.add_argument("--from", dest="from_dir", default=DEFAULT_FROM_DIR, help=f"Target directory for extracted files (default: {DEFAULT_FROM_DIR})")
parser.add_argument("--copy", action="store_true", help="Copy files to the image (default is to extract)")
parser.add_argument("--init", action="store_true", help="Initialize a new disk image")
parser.add_argument("--init", default=True, action="store_true", help="Initialize a new disk image")
parser.add_argument("--drives", type=int, default=16, help="Number of drives for new image (1-16, default 16)")
parser.add_argument("--force", action="store_true", help="Force overwrite of existing image")
parser.add_argument("--hex-path", default=DEFAULT_HEX_PATH, help=f"Base path for hex files (default: {DEFAULT_HEX_PATH})")

View File

@@ -351,6 +351,7 @@ wire sdss;
wire vsdmiso;
reg vsd_sel = 0;
// latch vsd_sel if user selects an image file
always @(posedge clk_sys) begin
if(RESET) begin // Only clear on hard reset
vsd_sel <= 0;
@@ -365,13 +366,12 @@ end
//always @(posedge clk_sys) if(img_mounted) vsd_sel <= |img_size;
// uses the previous sd_card implementation i.e. now in components/sdcard
image_card image_card
(
.clk_sys(clk_sys),
.reset(reset),
.sdhc(1),
//.img_mounted(img_mounted),
//.img_size(img_size),
.sd_lba(sd_lba[0]),
.sd_rd(sd_rd), // New connection
@@ -390,6 +390,34 @@ image_card image_card
.miso(vsdmiso)
);
// this does not work i.e. with the new sd_card in /sys, not sure why yet
// sd_card sd_card
// (
// .clk_sys(clk_sys),
// .reset(reset),
// .sdhc(1),
// .img_mounted(img_mounted),
// .img_size(img_size),
// .sd_lba(sd_lba[0]),
// .sd_rd(sd_rd), // New connection
// .sd_wr(sd_wr), // New connection
// .sd_ack(sd_ack), // New connection
// .sd_buff_addr(sd_buff_addr), // New connection
// .sd_buff_dout(sd_buff_dout), // New connection
// .sd_buff_din(sd_buff_din[0]),
// .sd_buff_wr(sd_buff_wr), // New connection
// .clk_spi(clk_sys),
// .ss(sdss | ~vsd_sel),
// .sck(sdclk),
// .mosi(sdmosi),
// .miso(vsdmiso)
// );
assign SD_CS = sdss | vsd_sel;
assign SD_SCK = sdclk & ~vsd_sel;
assign SD_MOSI = sdmosi & ~vsd_sel;

View File

@@ -1,343 +1,343 @@
:0430040000000000C8
:18000000F3C3940000000000C332000000000000C31B000000000000CB
:18001800C35C003A0030FE002008CD630028FBDB81C9CD6A0028FBDB74
:1800300083C9F53A0030FE00200D1801F5CD500028FBF1D381C9F5CDC4
:18004800560028FBF1D383C9DB800FCB47C9DB820FCB47C93A0030FE23
:18006000002007DB80E601FE00C9DB82E601FE00C9D7FE0A28FBFE1B32
:1800780020023E03C9FE0D280AFE0C2804FE203801CFC93E0DCF3E0A80
:18009000CF3E0DC93128303E95D380D3823E00320030216503CD1B015F
:1800A8003E01320030216503CD1B01CD6300280F3E00320030CD1B003E
:1800C000FE20C2B3001814CD6A0028E73E01320030CD1B00FE20C2B307
:1800D8000018003E0CCD3C00CD4600CD2201219602CD1B0121EC00E50E
:1800F000CD22013E3ECFCD7100FE2038F9FE3ACA9901CD7D00E65FFE07
:1801080042CADA01FE47CA9301FE58CAF1013E3FCF18D57EB7C8CF231B
:1801200018F93E0DCF3E0ACFC9CD7100FE03C8FE2038F6C9CD29014762
:18013800CD29014FCD73014F7B915F79C9210000CD8C01FE0D200E3741
:18015000C9210000CD8C01FE0DC8FE2CC8FE0328EE29292929D630FECF
:180168000A3802D607E60F856F18E178D630FE0A3802D60707070707C3
:180180004779D630FE0A3802D60780C9CD7100CD7D00C9CD4501D8E518
:18019800C91E00CD340157CD340167CD34016FCD3401FE012009CD340A
:1801B000017BA7281E18157AA7280BCD340177233E2ECF1518F1CD3457
:1801C800017BA7C8215403CD1B01C9218A03CD1B01C9214203CD1B015B
:1801E000CD2901C8E65FFE43CA9503FE57CA9803C9210302CD1B01CD01
:1801F8002901C8E65FFE59CA2402C90D0A426F6F742043502F4D3F008F
:180210000D0A4C6F6164696E672043502F4D2E2E2E0D0A00211002CD31
:180228001B0106183E003204303205303206303207302100D022023063
:18024000CD6E021100022A0230192202303A04303C32043010EA3A0049
:1802580030F52AFEFFE93A0630D38C3A0530D38B3A0430D38AC9F5C56F
:18027000E5DB89FE8020FACD5E023E00D3890E040680DB89FEE020FADA
:18028800DB8877230520F30D20EEE1C1F1C943502F4D20426F6F7420EF
:1802A000524F4D20322E3020627920472E20536561726C650D0A0D0A6E
:1802B8004243206F72204257202D20524F4D20424153494320436F6CD4
:1802D000642F5761726D0D0A5820202020202020202D20426F6F74207C
:1802E80043502F4D20286C6F61642024443030302D2446464646290D50
:180300000A3A6E6E6E6E2E2E2E202D204C6F616420496E74656C2D48E1
:1803180065782066696C65207265636F72640D0A476E6E6E6E2020201B
:18033000202D2052756E206C6F63206E6E6E6E0D0A000D0A436F6C642D
:18034800206F72207761726D3F0D0A00436865636B73756D20657272D3
:180360006F720D0A000C5072657373205B53504143455D20746F2061AC
:180378006374697661746520636F6E736F6C650D0A00436F6D706C65F3
:1803900074650D0A00C39B03C33904DD210000C3A6034C0CC21321B09C
:1803A80030F9C3E11F117306066321B0301A77231305C2B503F9CD74DD
:1803C00008CD420E325A3132A931218804CDE014CD9108CD9A0BB7C278
:1803D800EF03210D32237CB5CA01047E472F77BE70CADD03C30104CDC0
:1803F000660CB7C24207EB2B3ED94677BE70C2CA032B110C32CD0A0ABF
:18040800DACA0311CEFF225F3119220A31CD4F082A0A3111EFFF19117D
:18042000A9317D936F7C9A67E5215104CDE014E1CD831B214204CDE072
:1804380014311631CD7408C38D0720427974657320667265650D0A0080
:18045000005A38302042415349432056657220342E37620D0A436F70AF
:18046800797269676874202843292031393738206279204D6963726F23
:18048000736F66740D0A00004D656D6F727920746F7000F819BC1A0EB0
:180498001AB330A0132517CE13821C611D9D18D01CD61DDC1D3D1E5229
:1804B0001E7917BD1E013152166A14EC1661167216DF1E721F8216B2BA
:1804C80016BC16C54E44C64F52CE455854C4415441C94E505554C44900
:1804E0004DD2454144CC4554C74F544FD2554EC946D24553544F5245D5
:1804F800C74F535542D2455455524ED2454DD3544F50CF5554CF4ECEFF
:18051000554C4CD7414954C44546D04F4B45C44F4B45D3435245454E50
:18052800CC494E4553C34C53D749445448CD4F4E49544F52D34554D278
:1805400045534554D052494E54C34F4E54CC495354C34C454152C34CFF
:180558004F4144C353415645CE4557D4414228D44FC64ED3504328D443
:1805700048454ECE4F54D3544550ABADAAAFDEC14E44CF52BEBDBCD35E
:18058800474EC94E54C14253D55352C65245C94E50D04F53D35152D20D
:1805A0004E44CC4F47C55850C34F53D3494ED4414EC1544ED045454BA8
:1805B800C445454BD04F494E54CC454ED3545224D6414CC15343C348C7
:1805D0005224C8455824C2494E24CC45465424D24947485424CD49444C
:1805E8002480E40BE10ABC0F310DC30EF811F20E480DEE0CD10CC00DA1
:18060000AA0BDD0C0C0D330DE20B3117A20D230C3717D6138017C81E24
:18061800330DAE1EA11EA61EDE1F04310731E40D100C560A8B0C330D8D
:18063000330D4E08796A1B799E177CDC187C3D197F8B1C505111465040
:18064800114E46534E52474F4446434F564F4D554C425344442F3049F8
:1806600044544D4F534C535354434E55464D4F4858424EC33904C36199
:180678000CD300C9D6006F7CDE006778DE00473E00C9000000354ACACF
:1806900099391C76982295B3980ADD479853D199990A1A9F9865BCCDEF
:1806A80098D6773E9852C74F80DB00C901FF1C000014001400000000AF
:1806C00000C38709C30000C30000C300000D32FEFFAA31204572726FB7
:1806D800720020696E20004F6B0D0A0000427265616B00210400397EEF
:1806F00023FE81C04E234623E569607AB3EBCA0507EBCD0A0A010D0040
:18070800E1C809C3EF06CD2807C5E3C1CD0A0A7E02C80B2BC31407E5E8
:180720002A8A31060009093EE53ED0956F3EFF9CDA37076739E1D81E27
:180738000CC356072A7931220C311E02011E14011E00011E12011E2266
:18075000011E0A011E18CD740832F530CD350E214906573E3FCD1B0A4B
:18076800197ECD1B0ACD9A0BCD1B0A21D306CDE0142A0C3111FEFFCD8F
:180780000A0ACAA6037CA53CC47B1B3EC1AF32F530CD350E21DF06CD3B
:18079800E01421FFFF220C31CD8709DA9A07CD9A0B3C3DCA9A07F5CDE7
:1807B000660CD5CD9E0847D1F1D27A0BD5C5AF327C31CD9A0BB7F5CD04
:1807C8002E08DAD307F1F5CA070DB7C5D2EA07EB2A86311A020313CD61
:1807E0000A0AC2DB076069228631D1F1CA11082A8631E3C109E5CD0EB4
:1807F80007E1228631EB74D12323732372231111311A772313B7C209EB
:1808100008CD5A0823EB626B7E23B6CA9A07232323AFBE23C22208EB2C
:18082800732372C316082A0E31444D7E23B62BC823237E23666FCD0AF8
:180840000A60697E23666F3FC83FD0C33108C02A0E31AF772377232217
:1808580086312A0E312B227E312A5F31227331AFCDAA0B2A8631228830
:1808700031228A31C12A0A31F9216331226131AF6F67228431327B31A0
:18088800228E31E5C52A7E31C93E3FCD1B0A3E20CD1B0AC3FE30AF329A
:1808A0005E310E051111317EFE20CA260947FE22CA4609B7CA4D093A25
:1808B8005E31B77EC22609FE3F3E9ECA26097EFE30DAD108FE3CDA26C8
:1808D00009D511CA04C5012209C5067F7EFE61DAEA08FE7BD2EA08E64C
:1808E8005F774EEB23B6F2EC08047EE67FC8B9C2EC08EBE5131AB7FA5E
:180900001E094F78FE88C20D09CD9A0B2B237EFE61DA1609E65FB9CA35
:18091800FC08E1C3EA0848F1EBC9EB79C1D12312130CD63ACA3409FEE1
:1809300049C23709325E31D654C2A708477EB7CA4D09B8CA2609231286
:180948000C13C33D092110311213121312C93AF430B73E0032F430C27D
:180960006A0905CA8709CD1B0A3E052BCA7E097ECD1B0AC39009052B00
:18097800CD1B0AC29009CD1B0ACD420EC387092111310601AF32F43049
:18099000CD450A4FFE7FCA56093AF430B7CAA9093E00CD1B0AAF32F4A8
:1809A8003079FE07CAED09FE03CC420E37C8FE0DCA3D0EFE15CA810926
:1809C000FE40CA7E09FE5FCA7609FE08CA7609FE12C2E809C5D5E53623
:1809D80000CDF21F211131CDE014E1D1C1C39009FE20DA900978FE49E6
:1809F0003E07D2020A7971327C312304CD1B0AC39009CD1B0A3E08C393
:180A0800FC097C92C07D93C97EE3BE23E3CA9A0BC34207F53AF530B77F
:180A2000C21515F1C5F5FE20DA3F0A3AF230473A5B3104CA3B0A05B8AD
:180A3800CC420E3C325B31F1C1CDDB1FC9CD9F1EE67FFE0FC03AF53033
:180A50002F32F530AFC9CD660CC0C1CD2E08C5CDAC0AE14E2346237852
:180A6800B1CA8D07CDB50ACDC50BC5CD420E5E235623E5EBCD831B3EE9
:180A800020E1CD1B0A7EB723CA620AF2820AD67F4F11CB041A13B7F205
:180A9800940A0DC2940AE67FCD1B0A1A13B7F29E0AC3850AE52AF830DD
:180AB00022F630E1C9E5D52AF63011FFFFED5A22F630D1E1F0E52AF8EB
:180AC8003022F630CD9F1EFE03CAD80AE1C3B50A2AF83022F630C33C6B
:180AE000043E64327B31CD480DC1E5CD310D22773121020039CDEF06BF
:180AF800D1C2110B09D52B562B5E2323E52A7731CD0A0AE1C2F50AD1FE
:180B1000F9EB0E08CD1F07E52A7731E3E52A0C31E3CD0A10CD100AA6A3
:180B2800CD0710E5CD351AE1C5D5010081515A7EFEAB3E01C24D0BCDDB
:180B40009A0BCD0710E5CD351ACDE919E1C5D5F533E52A7E31E3068179
:180B5800C533CDC50B227E317EFE3ACA7A0BB7C24207237E23B6CAEC28
:180B70000B235E2356EB220C31EBCD9A0B115A0BD5C8D680DA480DFE2B
:180B880025D24207074F0600EB21EA05094E2346C5EB237EFE3AD0FEA7
:180BA00020CA9A0BFE303F3C3DC9EB2A0E31CABF0BEBCD660CE5CD2E0D
:180BB800086069D1D2070D2B228C31EBC9DFC8D7FE1B2811FE03280DD9
:180BD000FE13C0D7FE11C8FE03280718F63EFF32FD30C0F6C0227E316D
:180BE80021F6FFC12A0C31F57DA43CCAFF0B2282312A7E31228431AF5D
:180C000032F530CD350EF121E506C27607C38D072A84317CB51E20CACA
:180C18005607EB2A8231220C31EBC9CD6817C032F130C9E52AFA300625
:180C3000004F0922FA30E1C97EFE41D8FE5B3FC9CD9A0BCD0710CDE95C
:180C480019FA610C3A9731FE90DA911A018090110000E5CD641AE1517B
:180C6000C81E08C356072B110000CD9A0BD0E5F5219819CD0A0ADA4247
:180C780007626B19291929F1D6305F160019EBE1C36A0CCA5E08CD4342
:180C90000C2BCD9A0BE52A5F31CAAE0CE1CD100A2CD5CD430C2BCD9A09
:180CA8000BC24207E3EB7D935F7C9A57DA3707E52A863101280009CD97
:180CC0000A0AD23707EB220A31E1225F31E1C35E08CA5A08CD5E0801B3
:180CD8005A0BC3ED0C0E03CD1F07C1E5E52A0C31E33E8CF533C5CD6620
:180CF0000CCD330DE52A0C31CD0A0AE123DC3108D42E0860692BD81E99
:180D08000EC35607C016FFCDEB06F9FE8C1E04C25607E1220C31237C6F
:180D2000B5C22B0D3A7C31B7C28C07215A0BE33EE1013A0E00060079C9
:180D380048477EB7C8B8C823FE22CA370DC33A0DCDFD11CD100AB4D5F1
:180D50003A5D31F5CD1910F1E3227E311FCD0C10CA9B0DE52A9431E500
:180D680023235E23562A0E31CD0A0AD28A0D2A0A31CD0A0AD1D2920D1B
:180D8000216F31CD0A0AD2920D3ED1CD4116EBCD7A14CD4116E1CD44B9
:180D98001AE1C9E5CD411AD1E1C9CD68177E47FE8CCAB10DCD100A8865
:180DB0002B4B0D78CA820BCD670CFE2CC0C3B20DCD19107EFE88CACE9B
:180DC8000DCD100AA92BCD0A10CDE919CA330DCD9A0BDAEE0CC3810BF6
:180DE0002BCD9A0BCA420EC8FEA5CA750EFEA8CA750EE5FE2CCA5E0E54
:180DF800FE3BCA980EC1CD1910E53A5D31B7C22E0ECD8E1BCD9E1436F6
:180E1000202A9431342A94313AF2304704CA2A0E043A5B31863DB8D4D6
:180E2800420ECDE314AFC4E314E1C3E00D3A5B31B7C8C3420E360021F4
:180E400010313E0DCD1B0A3E0ACD1B0AAF325B313AF1303DC8F5AFCDA4
:180E58001B0AF1C3530E3AF330473A5B31B8D4420ED2980ED60ED26C68
:180E70000E2FC38D0EF5CD6517CD100A292BF1D6A8E5CA880E3A5B31DC
:180E88002F83D2980E3C473E20CD1B0A05C2910EE1CD9A0BC3E70D3FA6
:180EA0005265646F2066726F6D2073746172740D0A003A7D31B7C23CDA
:180EB80007C1219F0ECDE014C38D08CD4B147EFE223E0032F530C2DD75
:180ED0000ECD9F14CD100A3BE5CDE3143EE5CD9108C1DAE90B237EB741
:180EE8002BC5CA300D362CC3F70EE52A8C31F6AF327D31E3C3030FCDFB
:180F0000100A2CCDFD11E3D57EFE2CCA2B0F3A7D31B7C2980F3E3FCD02
:180F18001B0ACD9108D1C1DAE90B237EB72BC5CA300DD53A5D31B7CA69
:180F3000550FCD9A0B5747FE22CA490F3A7D31B757CA460F163A062C5C
:180F48002BCDA214EB21600FE3D5C3630DCD9A0BCDF01AE3CD411AE148
:180F60002BCD9A0BCA6C0FFE2CC2B20EE32BCD9A0BC2FF0ED13A7D31E3
:180F7800B7EBC2C00BD5B621870FC4E014E1C93F45787472612069675B
:180F90006E6F7265640D0A00CD310DB7C2B10F237E23B61E06CA560711
:180FA800235E2356EB227931EBCD9A0BFE83C2980FC32B0F110000C467
:180FC000FD11227E31CDEB06C24807F9D57E23F5D5CD271AE3E5CD94FB
:180FD80017E1CD411AE1CD381AE5CD641AE1C190CD381ACAF70FEB2283
:180FF0000C316960C3560BF92A7E317EFE2CC25A0BCD9A0BCDBF0FCD44
:181008001910F6373A5D318FB7E8C35407CD100A282B1600D50E01CD65
:181020001F07CD90102280312A8031C178FE78D40A107E1600D6B3DAE3
:181038005110FE03D25110FE0117AABA57DA4207227531CD9A0BC335E5
:18105000107AB7C278117E227531D6ACD8FE07D05F3A5D313DB37BCA2B
:18106800D61507835F213406197856BAD023CD0A10C5012810C5434A76
:18108000CD1A1A58514E234623C52A7531C31C10AF325D31CD9A0B1E51
:1810980024CA5607DAF01ACD380CD2F710FE262012CD9A0BFE48CA341B
:1810B0001FFE42CAA41F1E02CA5607FEACCA9010FE2ECAF01AFEADCA6C
:1810C800E610FE22CA9F14FEAACAD811FEA7CA0314D6B6D20811CD1543
:1810E00010CD100A29C9167DCD1C102A8031E5CD121ACD0A10E1C9CD6C
:1810F800FD11E5EB2294313A5D31B7CC271AE1C90600074FC5CD9A0B52
:1811100079FE31DA2F11CD1510CD100A2CCD0B10EB2A9431E3E5EBCDBE
:181128006817EBE3C33711CDDE10E311F210D5019304094E236669E907
:1811400015FEADC8FE2DC814FE2BC8FEACC82BC9F6AFF5CD0A10CD4C17
:181158000CF1EBC1E3EBCD2A1AF5CD4C0CF1C17921C113C27311A34F85
:1811700078A2E9B34F78B2E9218A113A5D311F7A175F166478BAD0C37D
:1811880079108C1179B71FC1D1F5CD0C1021CE11E5CA641AAF325D31CE
:1811A000D5CD23167E23234E2346D1C5F5CD2716CD381AF157E17BB2D7
:1811B800C87AD601D8AFBB3CD0151D0ABE2303CAB6113FC3F4193C8F2D
:1811D000C1A0C6FF9FC3FB19165ACD1C10CD0A10CD4C0C7B2F4F7A2F54
:1811E800CDC113C1C328102BCD9A0BC8CD100A2C01EF11C5F6AF325C21
:181200003146CD380CDA4207AF4F325D31CD9A0BDA1912CD380CDA26E5
:18121800124FCD9A0BDA1A12CD380CD21A12D624C235123C325D310FC8
:18123000814FCD9A0B3A7B313DCAE212F245127ED628CABA12AF327BCC
:1812480031E550592A8E31CD0A0A119031CA2A192A8831EB2A8631CDAA
:181260000A0ACA7812799623C26D12789623CAAC1223232323C35F1222
:18127800E1E3D511FA10CD0A0AD1CAAF12E3E5C50106002A8A31E50906
:18129000C1E5CD0E07E1228A3160692288312B3600CD0A0AC29E12D1D7
:1812A80073237223EBE1C932973121DE06229431E1C9E52A5C31E35708
:1812C000D5C5CD400CC1F1EBE3E5EB3C577EFE2CCAC012CD100A29220A
:1812D8008031E1225C311E00D511E5F52A88313E19EB2A8A31EBCD0A13
:1812F0000ACA1A137EB923C2FC127EB8235E235623C2E8123A5C31B72E
:18130800C24B07F1444DCA2A1996CA78131E10C35607110400F1CA61C0
:181320000C712370234FCD1F07232322753171233A5C311779010B003B
:18133800D23D13C10371237023F5E5CDD51AEBE1F13DC23513F5424B74
:18135000EB19DA3707CD2807228A312B3600CD0A0AC25B1303572A7525
:18136800315EEB2909EB2B2B73237223F1DA9C13474F7E2316E15E232C
:181380005623E3F5CD0A0AD21513E5CDD51AD119F13D444DC27D132964
:1813980029C109EB2A8031C92A8A31EB210000393A5D31B7CABC13CDAC
:1813B0002316CD23152A0A31EB2A73317D934F7C9A41501E00215D31F6
:1813C800730690C3001A3A5B3147AFC3C213CD5914CD4B1401310DC569
:1813E000D5CD100A28CDFD11E5EB2B562B5EE1CD0A10CD100A29CD10A7
:1813F8000AB4444DE3712370C39814CD5914D5CDDE10CD0A10E35E2323
:1814100056237AB3CA4E077E23666FE52A8E31E3228E312A9231E52AFB
:181428009031E5219031D5CD411AE1CD07102BCD9A0BC24207E1229027
:1814400031E1229231E1228E31E1C9E52A0C31237CB5E1C01E16C356A3
:1814580007CD100AA73E80327B31B647CD0212C30A10CD0A10CD8E1B33
:18147000CD9E14CD2316017E16C57E2323E5CDF914E14E2346CD9214F7
:18148800E56FCD1616D1C9CDF914216F31E5772323732372E1C92B0645
:1814A0002250E50EFF237E0CB7CAB414BACAB414B8C2A514FE22CC9AD5
:1814B8000BE323EB79CD9214116F312A61312294313E01325D31CD44D0
:1814D0001ACD0A0A226131E17EC01E1EC3560723CD9E14CD2316CD382D
:1814E8001A1C1DC80ACD1B0AFE0DCC4C0E03C3EA14B70EF1F52A0A31D0
:18150000EB2A73312F4F06FF0923CD0A0ADA171522733123EBF1C9F105
:181518001E1ACA5607BFF501FB14C52A5F31227331210000E52A0A31E8
:18153000E5216331EB2A6131EBCD0A0A013415C288152A8631EB2A886F
:1815480031EBCD0A0ACA5B157E2323B7CD8B15C34515C1EB2A8A31EBD3
:18156000CD0A0ACAB115CD381A7BE509B7F25A15227531E14E0600095C
:181578000923EB2A7531EBCD0A0ACA5B15017A15C5F6807E23235E235E
:181590005623F0B7C8444D2A7331CD0A0A6069D8E1E3CD0A0AE3E560AD
:1815A80069D0C1F1F1E5D5C5C9D1E17DB4C82B462B4EE52B2B6E2600A3
:1815C0000950592B444D2A7331CD1107E171237069602BC32615C5E571
:1815D8002A9431E3CD9010E3CD0B107EE52A9431E5861E1CDA5607CDF6
:1815F0008F14D1CD2716E3CD2616E52A7131EBCD0D16CD0D16212510A7
:18160800E3E5C3C014E1E37E23234E23466F2C2DC80A120313C317167A
:18162000CD0B102A9431EBCD4116EBC0D550591B4E2A7331CD0A0AC2C9
:181638003F164709227331E1C92A61312B462B4E2B2BCD0A0AC0226165
:1816500031C901D113C5CD2016AF57325D317EB7C901D113C5CD561634
:18166800CA610C23235E23561AC93E01CD8F14CD6B172A713173C1C372
:18168000C014CD1B17AFE34FE57EB8DA901678110E00C5CDF914C1E12B
:18169800E5232346236668060009444DCD92146FCD1616D1CD2716C3BF
:1816B000C014CD1B17D1D51A90C38616EB7ECD20170405CA610CC51E10
:1816C800FFFE29CAD516CD100A2CCD6817CD100A29F1E3018816C53D4B
:1816E000BE0600D04F7E91BB47D843C9CD5616CA09185F23237E23664A
:1816F8006FE5194672E3C57EFE24C20A17CD341F180DFE25C21417CD68
:18171000A41F1803CDF01AC1E170C9EBCD100A29C1D1C543C9CD6B1784
:1817280032EF30CDEE30C3D113CD5517C3B630CD5517F51E002BCD9A06
:181740000BCA4B17CD100A2CCD6817C1CDEE30ABA0CA4C17C9CD6817C2
:1817580032EF3032B730CD100A2CC36817CD9A0BCD0710CD460C7AB714
:18177000C2610C2BCD9A0B7BC9CD4C0C1AC3D113CD0710CD4C0CD5CDC0
:18178800100A2CCD6817D112C921671CCD381AC3A317CD381A21C1D1F9
:1817A000CD121A78B7C83A9731B7CA2A1A90D2BD172F3CEBCD1A1AEB02
:1817B800CD2A1AC1D1FE19D0F5CD4F1A67F1CD6818B4219431F2E31739
:1817D000CD4818D229182334CA51072E01CD7E18C32918AF90477E9B13
:1817E8005F237E9A57237E994FDC54186863AF4779B7C216184A546543
:181800006F78D608FEE0C2F717AF329731C905297A1757798F4FF20E7E
:1818180018785C45B7CA29182197318677D20918C878219731B7FC3BD5
:181830001846237EE680A94FC32A1A1CC014C00CC00E8034C0C3510723
:181848007E835F237E8A57237E894FC92198317E2F77AF6F90477D9B49
:181860005F7D9A577D994FC90600D608DA7718435A510E00C36A18C621
:18187800096FAF2DC8791F4F7A1F577B1F5F781F47C37A1800000081B8
:1818900003AA561980F122768045AA3882CDE919B7EA610C2197317EAE
:1818A80001358011F30490F570D5C5CDA317C1D104CD3F19218C18CD07
:1818C0009A17219018CD311D018080110000CDA317F1CD641B013180F3
:1818D80011187221C1D1CDE919C82E00CDA7197932A631EB22A73101F0
:1818F0000000505821F417E5210019E5E52194317E23B7CA2C19E52EC3
:18190800081F6779D21A19E52AA73119EBE13AA631891F4F7A1F577B7C
:181920001F5F781F472D7CC20919E1C9435A514FC9CD1A1A012084115F
:181938000000CD2A1AC1D1CDE919CA45072EFFCDA71934342B7E32C250
:18195000302B7E32BE302B7E32BA3041EBAF4F575F32C530E5C57DCDC6
:18196800B930DE003FD2771932C530F1F137D2C1E1793C3D1FFA2A18FE
:18198000177B175F7A175779174F297817473AC5301732C53079B2B336
:18199800C26419E521973135E1C26419C3510778B7CACB197D21973177
:1819B000AE80471FA878F2CA19C68077CA2A19CD4F1A772BC9CDE9195C
:1819C8002FE1B7E1F20918C35107CD351A78B7C8C602DA510747CDA36D
:1819E0001721973134C0C351073A9731B7C83A9631FE2F179FC03CC9B6
:1819F800CDE91906881100002197314F70060023368017C3F117CDE94A
:181A100019F02196317EEE8077C9EB2A9431E3E52A9631E3E5EBC9CDC5
:181A2800381AEB2294316069229631EBC92194315E2356234E23462362
:181A4000C911943106041A77132305C2461AC92196317E07371F773FB5
:181A58001F2323777907371F4F1FAEC978B7CAE91921F219E5CDE91904
:181A700079C8219631AE79F8CD7E1A1FA9C92378BEC02B79BEC02B7A40
:181A8800BEC02B7B96C0E1E1C9474F575FB7C8E5CD351ACD4F1AAE672A
:181AA000FCB51A3E9890CD68187C17DC3B180600DC5418E1C91B7AA3BE
:181AB8003CC00BC92197317EFE983A9431D07ECD911A36987BF57917B6
:181AD000CDF117F1C921000078B1C83E1029DA1513EB29EBD2EB1A0905
:181AE800DA15133DC2DD1AC9FE2DF5CAFC1AFE2BCAFC1A2BCD091847BC
:181B0000575F2F4FCD9A0BDA4D1BFE2ECA281BFE45C22C1BCD9A0BCD21
:181B18004011CD9A0BDA6F1B14C22C1BAF935F0C0CCA041BE57B90F4EB
:181B3000451BF23B1BF5CD3119F13CC22F1BD1F1CC121AEBC9C8F5CDB8
:181B4800D219F13DC9D557788947C5E5D5CDD219F1D630CD641BE1C113
:181B6000D1C3041BCD1A1ACDFB19C1D1C3A3177B0707830786D6305FCB
:181B7800C31A1BE521DA06CDE014E1EBAF0698CD001A21DF14E5219903
:181B900031E5CDE9193620F29C1B362D233630CA521CE5FC121AAFF584
:181BA800CD581C01439111F84FCD641AB7E2C91BF1CD461BF5C3AB1B52
:181BC000CD3119F13CF5CD581CCD91173CCD911ACD2A1A010603F181DD
:181BD8003CFAE51BFE08D2E51B3C473E023D3DE1F5116B1C05C2F61B64
:181BF000362E2336302305362ECC3F1AC5E5D5CD351AE1062F047B9679
:181C08005F237A9E5723799E4F2B2BD2051CCD481823CD2A1AEBE17064
:181C200023C10DC2F61B05CA361C2B7EFE30CA2A1CFE2EC43F1AF1CADC
:181C3800551C364523362BF2461C362D2F3C062F04D60AD2481CC63AB3
:181C5000237023772371E1C901749411F723CD641AB7E1E2C01BE90054
:181C6800000080A08601102700E803006400000A000001000021121ADF
:181C8000E3E9CD1A1A21671CCD271AC1D1CDE91978CAD01CF29B1CB7DE
:181C9800CA4507B7CA0A18D5C579F67FCD351AF2B81CD5C5CDBC1AC113
:181CB000D1F5CD641AE17C1FE1229631E1229431DC7D1CCC121AD5C5F6
:181CC800CD9D18C1D1CDDE18CD1A1A013881113BAACDDE183A9731FEB9
:181CE00088D2C519CDBC1AC680C602DAC519F5218C18CD9417CDD5185F
:181CF800F1C1D1F5CDA017CD121A21101DCD401D110000C14AC3DE1892
:181D100008402E9474704F2E776E02887AE6A02A7C50AAAA7EFFFF7F9C
:181D28007F0000808100000081CD1A1A11DC18D5E5CD351ACDDE18E122
:181D4000CD1A1A7E23CD271A06F1C1D13DC8D5C5F5E5CDDE18E1CD3830
:181D58001AE5CDA317E1C3491DCDE91921C930FAC21D21EA30CD271AD8
:181D700021C930C886E6070600772387874F09CD381ACDDE183AC830EC
:181D88003CE6030600FE018832C83021C61D87874F09CD9417CD351A69
:181DA0007B59EE4F4F36802B46368021C730347ED6ABC2B91D770C1573
:181DB8001CCDF41721EA30C3411A772B772B77C39D1D68B1466899E945
:181DD000926910D1756821201ECD9417CD1A1A01498311DB0FCD2A1A91
:181DE800C1D1CD3F19CD1A1ACDBC1AC1D1CDA01721241ECD9A17CDE9DB
:181E00001937F20C1ECD9117CDE919B7F5F4121A21241ECD9417F1D4AE
:181E1800121A21281EC3311DDB0F49810000007F05BAD71E866426997E
:181E30008758342387E05DA586DA0F4983CD1A1ACDDC1DC1E1CD1A1A56
:181E4800EBCD2A1ACDD61DC33D19CDE919FC7D1CFC121A3A9731FE81A0
:181E6000DA6F1E0100815159CD3F19219A17E521791ECD311D21201EC9
:181E7800C9094AD73B78026E847BFEC12F7C74319A7D843D5A7DC87F38
:181E9000917EE4BB4C7E6CAAAA7F00000081C9D7C93E0CC3DB1FCD685D
:181EA800177B32F230C9CD0710CD4C0CED53F630ED53F830C9CD4C0CAE
:181EC000D5E146237EC3C213CD0710CD4C0CD5CD100A2CCD0710CD4CE7
:181ED8000CE3732372E1C9CD0A10CD4C0CC52199317AFE00280CCD1705
:181EF0001F78FE302802702371237BCD171F7AFE00200578FE302802D9
:181F080070237123AF772377C1219931C3701447E60FFE0A3802C6079C
:181F2000C6304F780F0F0F0FE60FFE0A3802C607C63047C9EB2100009A
:181F3800CD4D1FDA6D1F1805CD4D1F381F29292929B56F18F3131AFE47
:181F500020CA4D1FD630D8FE0A3805D607FE0AD8FE103FC9EB7A4BE598
:181F6800CDC113E1C91E26C35607CD0A10CD4C0CC52199310611057862
:181F8000FE012808CB13CB1230F41804CB13CB123E30CE007723052069
:181F9800F3AF772377C1219931C37014EB210000CDC11FDACF1FD63004
:181FB00029B56FCDC11F30F6EB7A4BE5CDC113E1C9131AFE20CAC11F24
:181FC800FE30D8FE323FC91E28C35607DD21FFFFC3A603C30800C30067
:181FE000003E0032FD30C3AD03ED45F5A0C1B83E00C9CD1B0AC3420E8D
:00000001FF
:0430040000000000C8
:18000000F3C3940000000000C332000000000000C31B000000000000CB
:18001800C35C003A0030FE002008CD630028FBDB81C9CD6A0028FBDB74
:1800300083C9F53A0030FE00200D1801F5CD500028FBF1D381C9F5CDC4
:18004800560028FBF1D383C9DB800FCB47C9DB820FCB47C93A0030FE23
:18006000002007DB80E601FE00C9DB82E601FE00C9D7FE0A28FBFE1B32
:1800780020023E03C9FE0D280AFE0C2804FE203801CFC93E0DCF3E0A80
:18009000CF3E0DC93128303E95D380D3823E00320030216503CD1B015F
:1800A8003E01320030216503CD1B01CD6300280F3E00320030CD1B003E
:1800C000FE20C2B3001814CD6A0028E73E01320030CD1B00FE20C2B307
:1800D8000018003E0CCD3C00CD4600CD2201219602CD1B0121EC00E50E
:1800F000CD22013E3ECFCD7100FE2038F9FE3ACA9901CD7D00E65FFE07
:1801080042CADA01FE47CA9301FE58CAF1013E3FCF18D57EB7C8CF231B
:1801200018F93E0DCF3E0ACFC9CD7100FE03C8FE2038F6C9CD29014762
:18013800CD29014FCD73014F7B915F79C9210000CD8C01FE0D200E3741
:18015000C9210000CD8C01FE0DC8FE2CC8FE0328EE29292929D630FECF
:180168000A3802D607E60F856F18E178D630FE0A3802D60707070707C3
:180180004779D630FE0A3802D60780C9CD7100CD7D00C9CD4501D8E518
:18019800C91E00CD340157CD340167CD34016FCD3401FE012009CD340A
:1801B000017BA7281E18157AA7280BCD340177233E2ECF1518F1CD3457
:1801C800017BA7C8215403CD1B01C9218A03CD1B01C9214203CD1B015B
:1801E000CD2901C8E65FFE43CA9503FE57CA9803C9210302CD1B01CD01
:1801F8002901C8E65FFE59CA2402C90D0A426F6F742043502F4D3F008F
:180210000D0A4C6F6164696E672043502F4D2E2E2E0D0A00211002CD31
:180228001B0106183E003204303205303206303207302100D022023063
:18024000CD6E021100022A0230192202303A04303C32043010EA3A0049
:1802580030F52AFEFFE93A0630D38C3A0530D38B3A0430D38AC9F5C56F
:18027000E5DB89FE8020FACD5E023E00D3890E040680DB89FEE020FADA
:18028800DB8877230520F30D20EEE1C1F1C943502F4D20426F6F7420EF
:1802A000524F4D20322E3020627920472E20536561726C650D0A0D0A6E
:1802B8004243206F72204257202D20524F4D20424153494320436F6CD4
:1802D000642F5761726D0D0A5820202020202020202D20426F6F74207C
:1802E80043502F4D20286C6F61642024443030302D2446464646290D50
:180300000A3A6E6E6E6E2E2E2E202D204C6F616420496E74656C2D48E1
:1803180065782066696C65207265636F72640D0A476E6E6E6E2020201B
:18033000202D2052756E206C6F63206E6E6E6E0D0A000D0A436F6C642D
:18034800206F72207761726D3F0D0A00436865636B73756D20657272D3
:180360006F720D0A000C5072657373205B53504143455D20746F2061AC
:180378006374697661746520636F6E736F6C650D0A00436F6D706C65F3
:1803900074650D0A00C39B03C33904DD210000C3A6034C0CC21321B09C
:1803A80030F9C3E11F117306066321B0301A77231305C2B503F9CD74DD
:1803C00008CD420E325A3132A931218804CDE014CD9108CD9A0BB7C278
:1803D800EF03210D32237CB5CA01047E472F77BE70CADD03C30104CDC0
:1803F000660CB7C24207EB2B3ED94677BE70C2CA032B110C32CD0A0ABF
:18040800DACA0311CEFF225F3119220A31CD4F082A0A3111EFFF19117D
:18042000A9317D936F7C9A67E5215104CDE014E1CD831B214204CDE072
:1804380014311631CD7408C38D0720427974657320667265650D0A0080
:18045000005A38302042415349432056657220342E37620D0A436F70AF
:18046800797269676874202843292031393738206279204D6963726F23
:18048000736F66740D0A00004D656D6F727920746F7000F819BC1A0EB0
:180498001AB330A0132517CE13821C611D9D18D01CD61DDC1D3D1E5229
:1804B0001E7917BD1E013152166A14EC1661167216DF1E721F8216B2BA
:1804C80016BC16C54E44C64F52CE455854C4415441C94E505554C44900
:1804E0004DD2454144CC4554C74F544FD2554EC946D24553544F5245D5
:1804F800C74F535542D2455455524ED2454DD3544F50CF5554CF4ECEFF
:18051000554C4CD7414954C44546D04F4B45C44F4B45D3435245454E50
:18052800CC494E4553C34C53D749445448CD4F4E49544F52D34554D278
:1805400045534554D052494E54C34F4E54CC495354C34C454152C34CFF
:180558004F4144C353415645CE4557D4414228D44FC64ED3504328D443
:1805700048454ECE4F54D3544550ABADAAAFDEC14E44CF52BEBDBCD35E
:18058800474EC94E54C14253D55352C65245C94E50D04F53D35152D20D
:1805A0004E44CC4F47C55850C34F53D3494ED4414EC1544ED045454BA8
:1805B800C445454BD04F494E54CC454ED3545224D6414CC15343C348C7
:1805D0005224C8455824C2494E24CC45465424D24947485424CD49444C
:1805E8002480E40BE10ABC0F310DC30EF811F20E480DEE0CD10CC00DA1
:18060000AA0BDD0C0C0D330DE20B3117A20D230C3717D6138017C81E24
:18061800330DAE1EA11EA61EDE1F04310731E40D100C560A8B0C330D8D
:18063000330D4E08796A1B799E177CDC187C3D197F8B1C505111465040
:18064800114E46534E52474F4446434F564F4D554C425344442F3049F8
:1806600044544D4F534C535354434E55464D4F4858424EC33904C36199
:180678000CD300C9D6006F7CDE006778DE00473E00C9000000354ACACF
:1806900099391C76982295B3980ADD479853D199990A1A9F9865BCCDEF
:1806A80098D6773E9852C74F80DB00C901FF1C000014001400000000AF
:1806C00000C38709C30000C30000C300000D32FEFFAA31204572726FB7
:1806D800720020696E20004F6B0D0A0000427265616B00210400397EEF
:1806F00023FE81C04E234623E569607AB3EBCA0507EBCD0A0A010D0040
:18070800E1C809C3EF06CD2807C5E3C1CD0A0A7E02C80B2BC31407E5E8
:180720002A8A31060009093EE53ED0956F3EFF9CDA37076739E1D81E27
:180738000CC356072A7931220C311E02011E14011E00011E12011E2266
:18075000011E0A011E18CD740832F530CD350E214906573E3FCD1B0A4B
:18076800197ECD1B0ACD9A0BCD1B0A21D306CDE0142A0C3111FEFFCD8F
:180780000A0ACAA6037CA53CC47B1B3EC1AF32F530CD350E21DF06CD3B
:18079800E01421FFFF220C31CD8709DA9A07CD9A0B3C3DCA9A07F5CDE7
:1807B000660CD5CD9E0847D1F1D27A0BD5C5AF327C31CD9A0BB7F5CD04
:1807C8002E08DAD307F1F5CA070DB7C5D2EA07EB2A86311A020313CD61
:1807E0000A0AC2DB076069228631D1F1CA11082A8631E3C109E5CD0EB4
:1807F80007E1228631EB74D12323732372231111311A772313B7C209EB
:1808100008CD5A0823EB626B7E23B6CA9A07232323AFBE23C22208EB2C
:18082800732372C316082A0E31444D7E23B62BC823237E23666FCD0AF8
:180840000A60697E23666F3FC83FD0C33108C02A0E31AF772377232217
:1808580086312A0E312B227E312A5F31227331AFCDAA0B2A8631228830
:1808700031228A31C12A0A31F9216331226131AF6F67228431327B31A0
:18088800228E31E5C52A7E31C93E3FCD1B0A3E20CD1B0AC3FE30AF329A
:1808A0005E310E051111317EFE20CA260947FE22CA4609B7CA4D093A25
:1808B8005E31B77EC22609FE3F3E9ECA26097EFE30DAD108FE3CDA26C8
:1808D00009D511CA04C5012209C5067F7EFE61DAEA08FE7BD2EA08E64C
:1808E8005F774EEB23B6F2EC08047EE67FC8B9C2EC08EBE5131AB7FA5E
:180900001E094F78FE88C20D09CD9A0B2B237EFE61DA1609E65FB9CA35
:18091800FC08E1C3EA0848F1EBC9EB79C1D12312130CD63ACA3409FEE1
:1809300049C23709325E31D654C2A708477EB7CA4D09B8CA2609231286
:180948000C13C33D092110311213121312C93AF430B73E0032F430C27D
:180960006A0905CA8709CD1B0A3E052BCA7E097ECD1B0AC39009052B00
:18097800CD1B0AC29009CD1B0ACD420EC387092111310601AF32F43049
:18099000CD450A4FFE7FCA56093AF430B7CAA9093E00CD1B0AAF32F4A8
:1809A8003079FE07CAED09FE03CC420E37C8FE0DCA3D0EFE15CA810926
:1809C000FE40CA7E09FE5FCA7609FE08CA7609FE12C2E809C5D5E53623
:1809D80000CDF21F211131CDE014E1D1C1C39009FE20DA900978FE49E6
:1809F0003E07D2020A7971327C312304CD1B0AC39009CD1B0A3E08C393
:180A0800FC097C92C07D93C97EE3BE23E3CA9A0BC34207F53AF530B77F
:180A2000C21515F1C5F5FE20DA3F0A3AF230473A5B3104CA3B0A05B8AD
:180A3800CC420E3C325B31F1C1CDDB1FC9CD9F1EE67FFE0FC03AF53033
:180A50002F32F530AFC9CD660CC0C1CD2E08C5CDAC0AE14E2346237852
:180A6800B1CA8D07CDB50ACDC50BC5CD420E5E235623E5EBCD831B3EE9
:180A800020E1CD1B0A7EB723CA620AF2820AD67F4F11CB041A13B7F205
:180A9800940A0DC2940AE67FCD1B0A1A13B7F29E0AC3850AE52AF830DD
:180AB00022F630E1C9E5D52AF63011FFFFED5A22F630D1E1F0E52AF8EB
:180AC8003022F630CD9F1EFE03CAD80AE1C3B50A2AF83022F630C33C6B
:180AE000043E64327B31CD480DC1E5CD310D22773121020039CDEF06BF
:180AF800D1C2110B09D52B562B5E2323E52A7731CD0A0AE1C2F50AD1FE
:180B1000F9EB0E08CD1F07E52A7731E3E52A0C31E3CD0A10CD100AA6A3
:180B2800CD0710E5CD351AE1C5D5010081515A7EFEAB3E01C24D0BCDDB
:180B40009A0BCD0710E5CD351ACDE919E1C5D5F533E52A7E31E3068179
:180B5800C533CDC50B227E317EFE3ACA7A0BB7C24207237E23B6CAEC28
:180B70000B235E2356EB220C31EBCD9A0B115A0BD5C8D680DA480DFE2B
:180B880025D24207074F0600EB21EA05094E2346C5EB237EFE3AD0FEA7
:180BA00020CA9A0BFE303F3C3DC9EB2A0E31CABF0BEBCD660CE5CD2E0D
:180BB800086069D1D2070D2B228C31EBC9DFC8D7FE1B2811FE03280DD9
:180BD000FE13C0D7FE11C8FE03280718F63EFF32FD30C0F6C0227E316D
:180BE80021F6FFC12A0C31F57DA43CCAFF0B2282312A7E31228431AF5D
:180C000032F530CD350EF121E506C27607C38D072A84317CB51E20CACA
:180C18005607EB2A8231220C31EBC9CD6817C032F130C9E52AFA300625
:180C3000004F0922FA30E1C97EFE41D8FE5B3FC9CD9A0BCD0710CDE95C
:180C480019FA610C3A9731FE90DA911A018090110000E5CD641AE1517B
:180C6000C81E08C356072B110000CD9A0BD0E5F5219819CD0A0ADA4247
:180C780007626B19291929F1D6305F160019EBE1C36A0CCA5E08CD4342
:180C90000C2BCD9A0BE52A5F31CAAE0CE1CD100A2CD5CD430C2BCD9A09
:180CA8000BC24207E3EB7D935F7C9A57DA3707E52A863101280009CD97
:180CC0000A0AD23707EB220A31E1225F31E1C35E08CA5A08CD5E0801B3
:180CD8005A0BC3ED0C0E03CD1F07C1E5E52A0C31E33E8CF533C5CD6620
:180CF0000CCD330DE52A0C31CD0A0AE123DC3108D42E0860692BD81E99
:180D08000EC35607C016FFCDEB06F9FE8C1E04C25607E1220C31237C6F
:180D2000B5C22B0D3A7C31B7C28C07215A0BE33EE1013A0E00060079C9
:180D380048477EB7C8B8C823FE22CA370DC33A0DCDFD11CD100AB4D5F1
:180D50003A5D31F5CD1910F1E3227E311FCD0C10CA9B0DE52A9431E500
:180D680023235E23562A0E31CD0A0AD28A0D2A0A31CD0A0AD1D2920D1B
:180D8000216F31CD0A0AD2920D3ED1CD4116EBCD7A14CD4116E1CD44B9
:180D98001AE1C9E5CD411AD1E1C9CD68177E47FE8CCAB10DCD100A8865
:180DB0002B4B0D78CA820BCD670CFE2CC0C3B20DCD19107EFE88CACE9B
:180DC8000DCD100AA92BCD0A10CDE919CA330DCD9A0BDAEE0CC3810BF6
:180DE0002BCD9A0BCA420EC8FEA5CA750EFEA8CA750EE5FE2CCA5E0E54
:180DF800FE3BCA980EC1CD1910E53A5D31B7C22E0ECD8E1BCD9E1436F6
:180E1000202A9431342A94313AF2304704CA2A0E043A5B31863DB8D4D6
:180E2800420ECDE314AFC4E314E1C3E00D3A5B31B7C8C3420E360021F4
:180E400010313E0DCD1B0A3E0ACD1B0AAF325B313AF1303DC8F5AFCDA4
:180E58001B0AF1C3530E3AF330473A5B31B8D4420ED2980ED60ED26C68
:180E70000E2FC38D0EF5CD6517CD100A292BF1D6A8E5CA880E3A5B31DC
:180E88002F83D2980E3C473E20CD1B0A05C2910EE1CD9A0BC3E70D3FA6
:180EA0005265646F2066726F6D2073746172740D0A003A7D31B7C23CDA
:180EB80007C1219F0ECDE014C38D08CD4B147EFE223E0032F530C2DD75
:180ED0000ECD9F14CD100A3BE5CDE3143EE5CD9108C1DAE90B237EB741
:180EE8002BC5CA300D362CC3F70EE52A8C31F6AF327D31E3C3030FCDFB
:180F0000100A2CCDFD11E3D57EFE2CCA2B0F3A7D31B7C2980F3E3FCD02
:180F18001B0ACD9108D1C1DAE90B237EB72BC5CA300DD53A5D31B7CA69
:180F3000550FCD9A0B5747FE22CA490F3A7D31B757CA460F163A062C5C
:180F48002BCDA214EB21600FE3D5C3630DCD9A0BCDF01AE3CD411AE148
:180F60002BCD9A0BCA6C0FFE2CC2B20EE32BCD9A0BC2FF0ED13A7D31E3
:180F7800B7EBC2C00BD5B621870FC4E014E1C93F45787472612069675B
:180F90006E6F7265640D0A00CD310DB7C2B10F237E23B61E06CA560711
:180FA800235E2356EB227931EBCD9A0BFE83C2980FC32B0F110000C467
:180FC000FD11227E31CDEB06C24807F9D57E23F5D5CD271AE3E5CD94FB
:180FD80017E1CD411AE1CD381AE5CD641AE1C190CD381ACAF70FEB2283
:180FF0000C316960C3560BF92A7E317EFE2CC25A0BCD9A0BCDBF0FCD44
:181008001910F6373A5D318FB7E8C35407CD100A282B1600D50E01CD65
:181020001F07CD90102280312A8031C178FE78D40A107E1600D6B3DAE3
:181038005110FE03D25110FE0117AABA57DA4207227531CD9A0BC335E5
:18105000107AB7C278117E227531D6ACD8FE07D05F3A5D313DB37BCA2B
:18106800D61507835F213406197856BAD023CD0A10C5012810C5434A76
:18108000CD1A1A58514E234623C52A7531C31C10AF325D31CD9A0B1E51
:1810980024CA5607DAF01ACD380CD2F710FE262012CD9A0BFE48CA341B
:1810B0001FFE42CAA41F1E02CA5607FEACCA9010FE2ECAF01AFEADCA6C
:1810C800E610FE22CA9F14FEAACAD811FEA7CA0314D6B6D20811CD1543
:1810E00010CD100A29C9167DCD1C102A8031E5CD121ACD0A10E1C9CD6C
:1810F800FD11E5EB2294313A5D31B7CC271AE1C90600074FC5CD9A0B52
:1811100079FE31DA2F11CD1510CD100A2CCD0B10EB2A9431E3E5EBCDBE
:181128006817EBE3C33711CDDE10E311F210D5019304094E236669E907
:1811400015FEADC8FE2DC814FE2BC8FEACC82BC9F6AFF5CD0A10CD4C17
:181158000CF1EBC1E3EBCD2A1AF5CD4C0CF1C17921C113C27311A34F85
:1811700078A2E9B34F78B2E9218A113A5D311F7A175F166478BAD0C37D
:1811880079108C1179B71FC1D1F5CD0C1021CE11E5CA641AAF325D31CE
:1811A000D5CD23167E23234E2346D1C5F5CD2716CD381AF157E17BB2D7
:1811B800C87AD601D8AFBB3CD0151D0ABE2303CAB6113FC3F4193C8F2D
:1811D000C1A0C6FF9FC3FB19165ACD1C10CD0A10CD4C0C7B2F4F7A2F54
:1811E800CDC113C1C328102BCD9A0BC8CD100A2C01EF11C5F6AF325C21
:181200003146CD380CDA4207AF4F325D31CD9A0BDA1912CD380CDA26E5
:18121800124FCD9A0BDA1A12CD380CD21A12D624C235123C325D310FC8
:18123000814FCD9A0B3A7B313DCAE212F245127ED628CABA12AF327BCC
:1812480031E550592A8E31CD0A0A119031CA2A192A8831EB2A8631CDAA
:181260000A0ACA7812799623C26D12789623CAAC1223232323C35F1222
:18127800E1E3D511FA10CD0A0AD1CAAF12E3E5C50106002A8A31E50906
:18129000C1E5CD0E07E1228A3160692288312B3600CD0A0AC29E12D1D7
:1812A80073237223EBE1C932973121DE06229431E1C9E52A5C31E35708
:1812C000D5C5CD400CC1F1EBE3E5EB3C577EFE2CCAC012CD100A29220A
:1812D8008031E1225C311E00D511E5F52A88313E19EB2A8A31EBCD0A13
:1812F0000ACA1A137EB923C2FC127EB8235E235623C2E8123A5C31B72E
:18130800C24B07F1444DCA2A1996CA78131E10C35607110400F1CA61C0
:181320000C712370234FCD1F07232322753171233A5C311779010B003B
:18133800D23D13C10371237023F5E5CDD51AEBE1F13DC23513F5424B74
:18135000EB19DA3707CD2807228A312B3600CD0A0AC25B1303572A7525
:18136800315EEB2909EB2B2B73237223F1DA9C13474F7E2316E15E232C
:181380005623E3F5CD0A0AD21513E5CDD51AD119F13D444DC27D132964
:1813980029C109EB2A8031C92A8A31EB210000393A5D31B7CABC13CDAC
:1813B0002316CD23152A0A31EB2A73317D934F7C9A41501E00215D31F6
:1813C800730690C3001A3A5B3147AFC3C213CD5914CD4B1401310DC569
:1813E000D5CD100A28CDFD11E5EB2B562B5EE1CD0A10CD100A29CD10A7
:1813F8000AB4444DE3712370C39814CD5914D5CDDE10CD0A10E35E2323
:1814100056237AB3CA4E077E23666FE52A8E31E3228E312A9231E52AFB
:181428009031E5219031D5CD411AE1CD07102BCD9A0BC24207E1229027
:1814400031E1229231E1228E31E1C9E52A0C31237CB5E1C01E16C356A3
:1814580007CD100AA73E80327B31B647CD0212C30A10CD0A10CD8E1B33
:18147000CD9E14CD2316017E16C57E2323E5CDF914E14E2346CD9214F7
:18148800E56FCD1616D1C9CDF914216F31E5772323732372E1C92B0645
:1814A0002250E50EFF237E0CB7CAB414BACAB414B8C2A514FE22CC9AD5
:1814B8000BE323EB79CD9214116F312A61312294313E01325D31CD44D0
:1814D0001ACD0A0A226131E17EC01E1EC3560723CD9E14CD2316CD382D
:1814E8001A1C1DC80ACD1B0AFE0DCC4C0E03C3EA14B70EF1F52A0A31D0
:18150000EB2A73312F4F06FF0923CD0A0ADA171522733123EBF1C9F105
:181518001E1ACA5607BFF501FB14C52A5F31227331210000E52A0A31E8
:18153000E5216331EB2A6131EBCD0A0A013415C288152A8631EB2A886F
:1815480031EBCD0A0ACA5B157E2323B7CD8B15C34515C1EB2A8A31EBD3
:18156000CD0A0ACAB115CD381A7BE509B7F25A15227531E14E0600095C
:181578000923EB2A7531EBCD0A0ACA5B15017A15C5F6807E23235E235E
:181590005623F0B7C8444D2A7331CD0A0A6069D8E1E3CD0A0AE3E560AD
:1815A80069D0C1F1F1E5D5C5C9D1E17DB4C82B462B4EE52B2B6E2600A3
:1815C0000950592B444D2A7331CD1107E171237069602BC32615C5E571
:1815D8002A9431E3CD9010E3CD0B107EE52A9431E5861E1CDA5607CDF6
:1815F0008F14D1CD2716E3CD2616E52A7131EBCD0D16CD0D16212510A7
:18160800E3E5C3C014E1E37E23234E23466F2C2DC80A120313C317167A
:18162000CD0B102A9431EBCD4116EBC0D550591B4E2A7331CD0A0AC2C9
:181638003F164709227331E1C92A61312B462B4E2B2BCD0A0AC0226165
:1816500031C901D113C5CD2016AF57325D317EB7C901D113C5CD561634
:18166800CA610C23235E23561AC93E01CD8F14CD6B172A713173C1C372
:18168000C014CD1B17AFE34FE57EB8DA901678110E00C5CDF914C1E12B
:18169800E5232346236668060009444DCD92146FCD1616D1CD2716C3BF
:1816B000C014CD1B17D1D51A90C38616EB7ECD20170405CA610CC51E10
:1816C800FFFE29CAD516CD100A2CCD6817CD100A29F1E3018816C53D4B
:1816E000BE0600D04F7E91BB47D843C9CD5616CA09185F23237E23664A
:1816F8006FE5194672E3C57EFE24C20A17CD341F180DFE25C21417CD68
:18171000A41F1803CDF01AC1E170C9EBCD100A29C1D1C543C9CD6B1784
:1817280032EF30CDEE30C3D113CD5517C3B630CD5517F51E002BCD9A06
:181740000BCA4B17CD100A2CCD6817C1CDEE30ABA0CA4C17C9CD6817C2
:1817580032EF3032B730CD100A2CC36817CD9A0BCD0710CD460C7AB714
:18177000C2610C2BCD9A0B7BC9CD4C0C1AC3D113CD0710CD4C0CD5CDC0
:18178800100A2CCD6817D112C921671CCD381AC3A317CD381A21C1D1F9
:1817A000CD121A78B7C83A9731B7CA2A1A90D2BD172F3CEBCD1A1AEB02
:1817B800CD2A1AC1D1FE19D0F5CD4F1A67F1CD6818B4219431F2E31739
:1817D000CD4818D229182334CA51072E01CD7E18C32918AF90477E9B13
:1817E8005F237E9A57237E994FDC54186863AF4779B7C216184A546543
:181800006F78D608FEE0C2F717AF329731C905297A1757798F4FF20E7E
:1818180018785C45B7CA29182197318677D20918C878219731B7FC3BD5
:181830001846237EE680A94FC32A1A1CC014C00CC00E8034C0C3510723
:181848007E835F237E8A57237E894FC92198317E2F77AF6F90477D9B49
:181860005F7D9A577D994FC90600D608DA7718435A510E00C36A18C621
:18187800096FAF2DC8791F4F7A1F577B1F5F781F47C37A1800000081B8
:1818900003AA561980F122768045AA3882CDE919B7EA610C2197317EAE
:1818A80001358011F30490F570D5C5CDA317C1D104CD3F19218C18CD07
:1818C0009A17219018CD311D018080110000CDA317F1CD641B013180F3
:1818D80011187221C1D1CDE919C82E00CDA7197932A631EB22A73101F0
:1818F0000000505821F417E5210019E5E52194317E23B7CA2C19E52EC3
:18190800081F6779D21A19E52AA73119EBE13AA631891F4F7A1F577B7C
:181920001F5F781F472D7CC20919E1C9435A514FC9CD1A1A012084115F
:181938000000CD2A1AC1D1CDE919CA45072EFFCDA71934342B7E32C250
:18195000302B7E32BE302B7E32BA3041EBAF4F575F32C530E5C57DCDC6
:18196800B930DE003FD2771932C530F1F137D2C1E1793C3D1FFA2A18FE
:18198000177B175F7A175779174F297817473AC5301732C53079B2B336
:18199800C26419E521973135E1C26419C3510778B7CACB197D21973177
:1819B000AE80471FA878F2CA19C68077CA2A19CD4F1A772BC9CDE9195C
:1819C8002FE1B7E1F20918C35107CD351A78B7C8C602DA510747CDA36D
:1819E0001721973134C0C351073A9731B7C83A9631FE2F179FC03CC9B6
:1819F800CDE91906881100002197314F70060023368017C3F117CDE94A
:181A100019F02196317EEE8077C9EB2A9431E3E52A9631E3E5EBC9CDC5
:181A2800381AEB2294316069229631EBC92194315E2356234E23462362
:181A4000C911943106041A77132305C2461AC92196317E07371F773FB5
:181A58001F2323777907371F4F1FAEC978B7CAE91921F219E5CDE91904
:181A700079C8219631AE79F8CD7E1A1FA9C92378BEC02B79BEC02B7A40
:181A8800BEC02B7B96C0E1E1C9474F575FB7C8E5CD351ACD4F1AAE672A
:181AA000FCB51A3E9890CD68187C17DC3B180600DC5418E1C91B7AA3BE
:181AB8003CC00BC92197317EFE983A9431D07ECD911A36987BF57917B6
:181AD000CDF117F1C921000078B1C83E1029DA1513EB29EBD2EB1A0905
:181AE800DA15133DC2DD1AC9FE2DF5CAFC1AFE2BCAFC1A2BCD091847BC
:181B0000575F2F4FCD9A0BDA4D1BFE2ECA281BFE45C22C1BCD9A0BCD21
:181B18004011CD9A0BDA6F1B14C22C1BAF935F0C0CCA041BE57B90F4EB
:181B3000451BF23B1BF5CD3119F13CC22F1BD1F1CC121AEBC9C8F5CDB8
:181B4800D219F13DC9D557788947C5E5D5CDD219F1D630CD641BE1C113
:181B6000D1C3041BCD1A1ACDFB19C1D1C3A3177B0707830786D6305FCB
:181B7800C31A1BE521DA06CDE014E1EBAF0698CD001A21DF14E5219903
:181B900031E5CDE9193620F29C1B362D233630CA521CE5FC121AAFF584
:181BA800CD581C01439111F84FCD641AB7E2C91BF1CD461BF5C3AB1B52
:181BC000CD3119F13CF5CD581CCD91173CCD911ACD2A1A010603F181DD
:181BD8003CFAE51BFE08D2E51B3C473E023D3DE1F5116B1C05C2F61B64
:181BF000362E2336302305362ECC3F1AC5E5D5CD351AE1062F047B9679
:181C08005F237A9E5723799E4F2B2BD2051CCD481823CD2A1AEBE17064
:181C200023C10DC2F61B05CA361C2B7EFE30CA2A1CFE2EC43F1AF1CADC
:181C3800551C364523362BF2461C362D2F3C062F04D60AD2481CC63AB3
:181C5000237023772371E1C901749411F723CD641AB7E1E2C01BE90054
:181C6800000080A08601102700E803006400000A000001000021121ADF
:181C8000E3E9CD1A1A21671CCD271AC1D1CDE91978CAD01CF29B1CB7DE
:181C9800CA4507B7CA0A18D5C579F67FCD351AF2B81CD5C5CDBC1AC113
:181CB000D1F5CD641AE17C1FE1229631E1229431DC7D1CCC121AD5C5F6
:181CC800CD9D18C1D1CDDE18CD1A1A013881113BAACDDE183A9731FEB9
:181CE00088D2C519CDBC1AC680C602DAC519F5218C18CD9417CDD5185F
:181CF800F1C1D1F5CDA017CD121A21101DCD401D110000C14AC3DE1892
:181D100008402E9474704F2E776E02887AE6A02A7C50AAAA7EFFFF7F9C
:181D28007F0000808100000081CD1A1A11DC18D5E5CD351ACDDE18E122
:181D4000CD1A1A7E23CD271A06F1C1D13DC8D5C5F5E5CDDE18E1CD3830
:181D58001AE5CDA317E1C3491DCDE91921C930FAC21D21EA30CD271AD8
:181D700021C930C886E6070600772387874F09CD381ACDDE183AC830EC
:181D88003CE6030600FE018832C83021C61D87874F09CD9417CD351A69
:181DA0007B59EE4F4F36802B46368021C730347ED6ABC2B91D770C1573
:181DB8001CCDF41721EA30C3411A772B772B77C39D1D68B1466899E945
:181DD000926910D1756821201ECD9417CD1A1A01498311DB0FCD2A1A91
:181DE800C1D1CD3F19CD1A1ACDBC1AC1D1CDA01721241ECD9A17CDE9DB
:181E00001937F20C1ECD9117CDE919B7F5F4121A21241ECD9417F1D4AE
:181E1800121A21281EC3311DDB0F49810000007F05BAD71E866426997E
:181E30008758342387E05DA586DA0F4983CD1A1ACDDC1DC1E1CD1A1A56
:181E4800EBCD2A1ACDD61DC33D19CDE919FC7D1CFC121A3A9731FE81A0
:181E6000DA6F1E0100815159CD3F19219A17E521791ECD311D21201EC9
:181E7800C9094AD73B78026E847BFEC12F7C74319A7D843D5A7DC87F38
:181E9000917EE4BB4C7E6CAAAA7F00000081C9D7C93E0CC3DB1FCD685D
:181EA800177B32F230C9CD0710CD4C0CED53F630ED53F830C9CD4C0CAE
:181EC000D5E146237EC3C213CD0710CD4C0CD5CD100A2CCD0710CD4CE7
:181ED8000CE3732372E1C9CD0A10CD4C0CC52199317AFE00280CCD1705
:181EF0001F78FE302802702371237BCD171F7AFE00200578FE302802D9
:181F080070237123AF772377C1219931C3701447E60FFE0A3802C6079C
:181F2000C6304F780F0F0F0FE60FFE0A3802C607C63047C9EB2100009A
:181F3800CD4D1FDA6D1F1805CD4D1F381F29292929B56F18F3131AFE47
:181F500020CA4D1FD630D8FE0A3805D607FE0AD8FE103FC9EB7A4BE598
:181F6800CDC113E1C91E26C35607CD0A10CD4C0CC52199310611057862
:181F8000FE012808CB13CB1230F41804CB13CB123E30CE007723052069
:181F9800F3AF772377C1219931C37014EB210000CDC11FDACF1FD63004
:181FB00029B56FCDC11F30F6EB7A4BE5CDC113E1C9131AFE20CAC11F24
:181FC800FE30D8FE323FC91E28C35607DD21FFFFC3A603C30800C30067
:181FE000003E0032FD30C3AD03ED45F5A0C1B83E00C9CD1B0AC3420E8D
:00000001FF

View File

@@ -1,59 +1,62 @@
:18E60000C351E7C3B5E7C31DE8C358E8C396E8C37EE8C38AE8C34CE847
:18E61800C3EFE8C3C7E8C3FBE8C300E9C305E9C30DE9C321E9C3C4E8E6
:18E63000C30AE900000000000000000DEB33E700008DEB000000000092
:18E648000000000DEB42E700008EEC00000000000000000DEB42E700FE
:18E66000008FED00000000000000000DEB42E7000090EE000000000087
:18E678000000000DEB42E7000091EF00000000000000000DEB42E700C8
:18E690000092F000000000000000000DEB42E7000093F100000000004B
:18E6A8000000000DEB42E7000094F200000000000000000DEB42E70092
:18E6C0000095F300000000000000000DEB42E7000096F400000000000F
:18E6D8000000000DEB42E7000097F500000000000000000DEB42E7005C
:18E6F0000098F600000000000000000DEB42E7000099F70000000000D3
:18E708000000000DEB42E700009AF800000000000000000DEB42E70025
:18E72000009BF900000000000000000DEB42E700009CFA8000051F01F1
:18E73800FB07FF01F000000001008000051F01FF07FF01F0000000003B
:18E7500000F331C1FB3E01D3383E95D380D382CDF9EA0C43502F4D2021
:18E7680042494F5320322E3020627920472E20536561726C652032302E
:18E7800031330D0A0D0A43502F4D20322E322028632920313937392040
:18E798006279204469676974616C2052657365617263680D0A00AF326B
:18E7B0000400C3F5E7F331C1FB060B3E0032C9FBD38CD38B2100D0DB00
:18E7C80089FE8020FA3AC9FBD38A3E00D389C50E040680DB89FEE02064
:18E7E000FADB8877230520F30D20EE3AC9FB3C32C9FBC110D2AF32CB78
:18E7F800FB32CDFB21800022D6FB3EC33200002103E6220100320500E9
:18E810002106D82206003A04004FC300D03A0300E60BFE0A280AFE0241
:18E828002814E603FE01200EDB80E601FE0028033EFFC93E00C9DB82B1
:18E84000E601FE0028033EFFC93E00C9F53A0300E608FE08201C180E1B
:18E85800F53A0300E603FE0228EBFE01200CF1DB80E601FE0028F8DB23
:18E8700081C9F1DB82E601FE0028F8DB83C9F53A0300E6C0FE40202670
:18E88800181AF53A0300E620FE20201A180EF53A0300E603FE0228DF6E
:18E8A000FE01200ACDB8E828FB79D381F1C9CDBEE828FB79D383F1C901
:18E8B800DB800FCB47C9DB820FCB47C93EFFC921000079FE10380D3A8F
:18E8D0000400B9C0AF32040032C1FBC932C1FBCB07CB07CB07CB0721C0
:18E8E80033E606004F09C93ACCFBB7200332CBFB010000ED43C2FBC94E
:18E90000ED43C4FBC9ED43D6FBC9C5E1C9AF32CDFB3E0132D4FB32D320
:18E91800FB3E0232D5FBC388E9AF32D4FB7932D5FBFE0220173E203284
:18E93000CDFB3AC1FB32CEFB2AC2FB22CFFB3AC4FB32D1FB3ACDFBB793
:18E9480028363D32CDFB3AC1FB21CEFBBEC280E921CFFBCD1FEAC28056
:18E96000E93AC4FB21D1FBBEC280E9347EFE80380936002ACFFB232207
:18E97800CFFBAF32D3FB1808AF32CDFB3C32D3FBAF32D2FB3AC4FBB7AB
:18E990001FB71F32CAFB21CBFB7E3601B728213AC1FB21C6FBBE201120
:18E9A80021C7FBCD1FEA20093ACAFB21C9FBBE28243ACCFBB7C4C4EA5D
:18E9C0003AC1FB32C6FB2AC2FB22C7FB3ACAFB32C9FB3AD3FBB7C4957E
:18E9D800EAAF32CCFB3AC4FBE6036F26002929292929292911D8FB1902
:18E9F000EB2AD6FB0E803AD4FBB720063E0132CCFBEB1A1377230D209E
:18EA0800F93AD5FBFE013AD2FBC0B7C0AF32CCFBCDC4EA3AD2FBC9EBD8
:18EA200021C2FB1ABEC013231ABEC92AC7FBCB05CB05CB05CB05CB0595
:18EA38007DE6E06F3AC9FB85329DFB2AC7FBCB0DCB0DCB0D7DE61F6F62
:18EA5000CB04CB04CB04CB04CB047CE620673AC6FBCB07CB07CB07CB7E
:18EA680007CB07CB07E6C08485329EFB3AC6FBCB0FCB0FE603329FFB0D
:18EA80003E0032A0FB3A9FFBD38C3A9EFBD38B3A9DFBD38AC9F5C5E578
:18EA9800DB89FE8020FACD2BEA3E00D3890E0421D8FB0680DB89FEE020
:18EAB00020FADB8877230520F30D20EEE1C1F1AF32D2FBC9F5C5E5DB80
:18EAC80089FE8020FACD2BEA3E01D3890E0421D8FB0680DB89FEA020EA
:18EAE000FAC5063210FEC17ED388230520ED0D20E8E1C1F1AF32D2FBF4
:15EAF800C9E3F5C57EFE0028074FCD96E82318F423C1F1E3C9AE
:04FB9D000000000064
:15FDD8003E01D338F1FE0128043E0118023E00320300C300E63B
:12FFE8003E01D33821004111000101008FEDB0C300E673
:02FFFE00D8FD2C
:00000001FF
:18E60000C351E7C3B5E7C31DE8C358E8C396E8C37EE8C38AE8C34CE847
:18E61800C3EFE8C3C7E8C3FBE8C300E9C305E9C30DE9C321E9C3C4E8E6
:18E63000C30AE9000000000000000043EB33E70000C3EB000000000026
:18E6480000000043EB42E70000C4EC000000000000000043EB42E7005C
:18E6600000C5ED000000000000000043EB42E70000C6EE0000000000E5
:18E6780000000043EB42E70000C7EF000000000000000043EB42E70026
:18E6900000C8F0000000000000000043EB42E70000C9F10000000000A9
:18E6A80000000043EB42E70000CAF2000000000000000043EB42E700F0
:18E6C00000CBF3000000000000000043EB42E70000CCF400000000006D
:18E6D80000000043EB42E70000CDF5000000000000000043EB42E700BA
:18E6F00000CEF6000000000000000043EB42E70000CFF7000000000031
:18E7080000000043EB42E70000D0F8000000000000000043EB42E70083
:18E7200000D1F9000000000000000043EB42E70000D2FA8000051F014F
:18E73800FB07FF01F000000001008000051F01FF07FF01F0000000003B
:18E7500000F331F7FB3E01D3383E95D380D382CD2FEB0C43502F4D20B4
:18E7680042494F5320322E3020627920472E20536561726C652032302E
:18E7800031330D0A0D0A43502F4D20322E322028632920313937392040
:18E798006279204469676974616C2052657365617263680D0A00AF326B
:18E7B0000400C3F5E7F331F7FB060B3E0032FFFBD38CD38B2100D0DB94
:18E7C80089FE8020FA3AFFFBD38A3E00D389C50E040680DB89FEE0202E
:18E7E000FADB8877230520F30D20EE3AFFFB3C32FFFBC110D2AF3201D6
:18E7F800FC3203FC218000220CFC3EC33200002103E62201003205007A
:18E810002106D82206003A04004FC300D03A0300E60BFE0A280AFE0241
:18E828002814E603FE01200EDB80E601FE0028033EFFC93E00C9DB82B1
:18E84000E601FE0028033EFFC93E00C9F53A0300E608FE08201C180E1B
:18E85800F53A0300E603FE0228EBFE01200CF1DB80E601FE0028F8DB23
:18E8700081C9F1DB82E601FE0028F8DB83C9F53A0300E6C0FE40202670
:18E88800181AF53A0300E620FE20201A180EF53A0300E603FE0228DF6E
:18E8A000FE01200ACDB8E828FB79D381F1C9CDBEE828FB79D383F1C901
:18E8B800DB800FCB47C9DB820FCB47C93EFFC921000079FE10380D3A8F
:18E8D0000400B9C0AF32040032F7FBC932F7FBCB07CB07CB07CB072154
:18E8E80033E606004F09C93A02FCB720033201FC010000ED43F8FBC9AA
:18E90000ED43FAFBC9ED430CFCC9C5E1C9AF3203FC3E01320AFC32090F
:18E91800FC3E02320BFCC388E9AF320AFC79320BFCFE0220173E2032DE
:18E9300003FC3AF7FB3204FC2AF8FB2205FC3AFAFB3207FC3A03FCB7DE
:18E9480028363D3203FC3AF7FB2104FCBEC280E92105FCCD1FEAC2807B
:18E96000E93AFAFB2107FCBEC280E9347EFE80380936002A05FC232263
:18E9780005FCAF3209FC1808AF3203FC3C3209FCAF3208FC3AFAFBB762
:18E990001FB71F3200FC2101FC7E3601B728213AF7FB21FCFBBE201146
:18E9A80021FDFBCD1FEA20093A00FC21FFFBBE28243A02FCB7C4EAEA5D
:18E9C0003AF7FB32FCFB2AF8FB22FDFB3A00FC32FFFB3A09FCB7C49502
:18E9D800EAAF3202FC3AFAFBE6036F260029292929292929110EFC195E
:18E9F000EB2A0CFC0E803A0AFCB720063E013202FCEB1A1377230D20F9
:18EA0800F93A0BFCFE013A08FCC0B7C0AF3202FCCDEAEA3A08FCC9EBD6
:18EA200021F8FB1ABEC013231ABEC92AFDFBCB05CB05CB05CB05CB0529
:18EA38007DE6E06F3AFFFB8532D3FB2AFDFBCB0DCB0DCB0D7DE61F6FC0
:18EA5000CB04CB04CB04CB04CB047CE620673AFCFBCB07CB07CB07CB48
:18EA680007CB07CB07E6C0848532D4FB3AFCFBCB0FCB0FE60332D5FB6B
:18EA80003E0032D6FB3AD5FBD38C3AD4FBD38B3AD3FBD38AC9F5C5E5A0
:18EA9800DB89FE8020FA0603DB89FE8020FA10F8CD2BEA3E00D3890ED3
:18EAB00004210EFC0680DB89FEE020FAC50602DB89FEE020FA10F8C14B
:18EAC800DB88C5060A10FEC177230520E10D20DC0600DB89FE8020FA84
:18EAE00010F8E1C1F1AF3208FCC9F5C5E5DB89FE8020FACD2BEA3E0119
:18EAF800D3890E04210EFC0680DB89FEA020FAC50603DB89FEA020FAE1
:18EB100010F8C17ED388230520E70D20E20600DB89FE8020FA10F8E122
:18EB2800C1F1AF3208FCC9E3F5C57EFE0028074FCD96E82318F423C180
:03EB4000F1E3C935
:04FBD300000000002E
:15FE0E003E01D338F1FE0128043E0118023E00320300C300E604
:12FFE8003E01D33821004111000101008FEDB0C300E673
:02FFFE000EFEF5
:00000001FF

View File

@@ -1,238 +1,238 @@
:18D00000C35CD3C358D37F00436F7079726967687420313937392028BE
:18D018006329206279204469676974616C20526573656172636820200E
:18D0300020202020000000000000000000000000000000000000000068
:18D04800000000000000000000000000000000000000000000000000D0
:18D06000000000000000000000000000000000000000000000000000B8
:18D078000000000000000000000000000000000008D000005F0E02C396
:18D090000500C5CD8CD0C1C93E0DCD92D03E0AC392D03E20C392D0C5DC
:18D0A800CD98D0E17EB7C823E5CD8CD0E1C3ACD00E0DC305005F0E0EAE
:18D0C000C30500CD050032EED73CC90E0FC3C3D0AF32EDD711CDD7C332
:18D0D800CBD00E10C3C3D00E11C3C3D00E12C3C3D011CDD7C3DFD00E11
:18D0F00013C30500CD0500B7C90E14C3F4D011CDD7C3F9D00E15C3F437
:18D10800D00E16C3C3D00E17C305001EFF0E20C30500CD13D18787877F
:18D120008721EFD7B6320400C93AEFD7320400C9FE61D8FE7BD0E65F10
:18D13800C93AABD7B7CA96D13AEFD7B73E00C4BDD011ACD7CDCBD0CA66
:18D1500096D13ABBD73D32CCD711ACD7CDF9D0C296D11107D0218000A6
:18D168000680CD42D421BAD73600233511ACD7CDDAD0CA96D13AEFD7CA
:18D18000B7C4BDD02108D0CDACD0CDC2D1CAA7D1CDDDD1C382D3CDDD6E
:18D19800D1CD1AD10E0A1106D0CD0500CD29D12107D0462378B7CABA4A
:18D1B000D17ECD30D17705C3ABD1772108D02288D0C90E0BCD0500B73A
:18D1C800C80E01CD0500B7C90E19C305001180000E1AC3050021ABD713
:18D1E0007EB7C83600AFCDBDD011ACD7CDEFD03AEFD7C3BDD01128D37F
:18D1F8002100D806061ABEC2CFD3132305C2FDD1C9CD98D02A8AD07E13
:18D21000FE20CA22D2B7CA22D2E5CD8CD0E123C30FD23E3FCD8CD0CD8C
:18D2280098D0CDDDD1C382D31AB7C8FE20DA09D2C8FE3DC8FE5FC8FE99
:18D240002EC8FE3AC8FE3BC8FE3CC8FE3EC8C91AB7C8FE20C013C34F74
:18D25800D2856FD024C93E0021CDD7CD59D2E5E5AF32F0D72A88D0EB61
:18D27000CD4FD2EB228AD0EBE11AB7CA89D2DE4047131AFE3ACA90D299
:18D288001B3AEFD777C396D27832F0D770130608CD30D2CAB9D223FE8A
:18D2A0002AC2A9D2363FC3ABD2771305C298D2CD30D2CAC0D213C3AFEF
:18D2B800D223362005C2B9D20603FE2EC2E9D213CD30D2CAE9D223FE87
:18D2D0002AC2D9D2363FC3DBD2771305C2C8D2CD30D2CAF0D213C3DFCF
:18D2E800D223362005C2E9D2060323360005C2F2D2EB2288D0E1010B22
:18D3000000237EFE3FC209D3040DC201D378B7C9444952204552412003
:18D31800545950455341564552454E2055534552001600000000211001
:18D33000D30E0079FE06D011CED706041ABEC24FD3132305C23CD31A15
:18D34800FE20C254D379C92305C24FD30CC333D3AF3207D031ABD7C573
:18D36000791F1F1F1FE60F5FCD15D1CDB8D032ABD7C179E60F32EFD789
:18D37800CDBDD03A07D0B7C298D331ABD7CD98D0CDD0D1C641CD8CD0C8
:18D390003E3ECD8CD0CD39D1118000CDD8D1CDD0D132EFD7CD5ED2C4DB
:18D3A80009D23AF0D7B7C2A5D6CD2ED321C1D35F160019197E23666FFD
:18D3C000E977D41FD55DD5ADD510D68ED6A5D621F3762200D02100D047
:18D3D800E901DFD3C3A7D052656164206572726F720001F0D3C3A7D0A3
:18D3F0004E6F2066696C6500CD5ED23AF0D7B7C209D221CED7010B0084
:18D408007EFE20CA33D423D630FE0AD209D25778E6E0C209D278070709
:18D420000780DA09D280DA09D282DA09D2470DC208D4C97EFE20C2092A
:18D43800D2230DC233D478C906037E12231305C242D4C921800081CD6C
:18D4500059D27EC9AF32CDD73AF0D7B7C83D21EFD7BEC8C3BDD03AF029
:18D46800D7B7C83D21EFD7BEC83AEFD7C3BDD0CD5ED2CD54D421CED7A4
:18D480007EFE20C28FD4060B363F2305C288D41E00D5CDE9D0CCEAD305
:18D49800CA1BD53AEED70F0F0FE6604F3E0ACD4BD417DA0FD5D17B1C90
:18D4B000D5E603F5C2CCD4CD98D0C5CDD0D1C1C641CD92D03E3ACD9219
:18D4C800D0C3D4D4CDA2D03E3ACD92D0CDA2D0060178CD4BD4E67FFE1E
:18D4E00020C2F9D4F1F5FE03C2F7D43E09CD4BD4E67FFE20CA0ED53E70
:18D4F80020CD92D00478FE0CD20ED5FE09C2D9D4CDA2D0C3D9D4F1CDAF
:18D51000C2D1C21BD5CDE4D0C398D4D1C386D7CD5ED2FE0BC242D5013D
:18D5280052D5CDA7D0CD39D12107D035C282D3237EFE59C282D3232211
:18D5400088D0CD54D411CDD7CDEFD03CCCEAD3C386D7416C6C20287986
:18D558002F6E293F00CD5ED2C209D2CD54D4CDD0D0CAA7D5CD98D0211E
:18D57000F1D736FF21F1D77EFE80DA87D5E5CDFED0E1C2A0D5AF773499
:18D58800218000CD59D27EFE1ACA86D7CD8CD0CDC2D1C286D7C374D581
:18D5A0003DCA86D7CDD9D3CD66D4C309D2CDF8D3F5CD5ED2C209D2CDFD
:18D5B80054D411CDD7D5CDEFD0D1CD09D1CAFBD5AF32EDD7F16F2600E0
:18D5D000291100017CB5CAF1D52BE521800019E5CDD8D111CDD7CD049C
:18D5E800D1D1E1C2FBD5C3D4D511CDD7CDDAD03CC201D60107D6CDA757
:18D60000D0CDD5D1C386D74E6F20737061636500CD5ED2C209D23AF002
:18D61800D7F5CD54D4CDE9D0C279D621CDD711DDD70610CD42D42A886D
:18D63000D0EBCD4FD2FE3DCA3FD6FE5FC273D6EB232288D0CD5ED2C270
:18D6480073D6F14721F0D77EB7CA59D6B870C273D670AF32CDD7CDE955
:18D66000D0CA6DD611CDD7CD0ED1C386D7CDEAD3C386D7CD66D4C309D7
:18D67800D20182D6CDA7D0C386D746696C652065786973747300CDF806
:18D69000D3FE10D209D25F3ACED7FE20CA09D2CD15D1C389D7CDF5D18A
:18D6A8003ACED7FE20C2C4D63AF0D7B7CA89D73D32EFD7CD29D1CDBDA9
:18D6C000D0C389D711D6D71AFE20C209D2D5CD54D4D12183D7CD40D4D5
:18D6D800CDD0D0CA6BD7210001E5EBCDD8D111CDD7CDF9D0C201D7E193
:18D6F000118000191100D07D937C9AD271D7C3E1D6E13DC271D7CD6682
:18D70800D4CD5ED221F0D7E57E32CDD73E10CD60D2E17E32DDD7AF32A4
:18D72000EDD7115C0021CDD70621CD42D42108D07EB7CA3ED7FE20CAFC
:18D738003ED723C330D706001181007E12B7CA4FD7042313C343D77879
:18D75000328000CD98D0CDD5D1CD1AD1CD000131ABD7CD29D1CDBDD00D
:18D76800C382D3CD66D4C309D2017AD7CDA7D0C386D7426164206C6F34
:18D78000616400434F4DCD66D4CD5ED23ACED7D62021F0D7B6C209D2D9
:18D79800C382D3000000000000000000000000000000000000242424F5
:18D7B000202020202053554200000000000000000000000000000000D7
:18D7C800000000000000202020202020202020202000000000002020A9
:18D7E00020202020202020202000000000000000000000000000000011
:18D7F8000000000000000000001600000000C311D899D8A5D8ABD8B135
:18D81000D8EB2243DBEB7B32D6E52100002245DB39220FDB3141DBAF06
:18D8280032E0E532DEE52174E5E579FE29D04B2147D85F160019195E9D
:18D8400023562A43DBEBE903E6C8DA90D9CEDA12E60FE6D4DAEDDAF34A
:18D85800DAF8DAE1D9FEDA7EE483E445E49CE4A5E4ABE4C8E4D7E4E0A9
:18D87000E4E6E4ECE4F5E4FEE404E50AE511E52CDD17E51DE526E52D5A
:18D88800E541E547E54DE50EE453E504DB04DB9BE521CAD8CDE5D8FE6C
:18D8A00003CA0000C921D5D8C3B4D821E1D8C3B4D821DCD8CDE5D8C372
:18D8B800000042646F7320457272204F6E20203A20244261642053650D
:18D8D00063746F722453656C6563742446696C6520522F4F24E5CDC9D1
:18D8E800D93A42DBC64132C6D801BAD8CDD3D9C1CDD3D9210EDB7E361D
:18D9000000B7C0C309E6CDFBD8CD14D9D8F54FCD90D9F1C9FE0DC8FEAF
:18D918000AC8FE09C8FE08C8FE20C93A0EDBB7C245D9CD06E6E601C87F
:18D93000CD09E6FE13C242D9CD09E6FE03CA0000AFC9320EDB3E01C913
:18D948003A0ADBB7C262D9C5CD23D9C1C5CD0CE6C1C53A0DDBB7C40FEF
:18D96000E6C179210CDBFE7FC834FE20D0357EB7C879FE08C279D93526
:18D97800C9FE0AC03600C979CD14D9D290D9F50E5ECD48D9F1F6404FD4
:18D9900079FE09C248D90E20CD48D93A0CDBE607C296D9C9CDACD90E98
:18D9A80020CD0CE60E08C30CE60E23CD48D9CDC9D93A0CDB210BDBBE49
:18D9C000D00E20CD48D9C3B9D90E0DCD48D90E0AC348D90AFE24C80312
:18D9D800C54FCD90D9C1C3D3D93A0CDB320BDB2A43DB4E23E50600C51B
:18D9F000E5CDFBD8E67FE1C1FE0DCAC1DAFE0ACAC1DAFE08C216DA7886
:18DA0800B7CAEFD9053A0CDB320ADBC370DAFE7FC226DA78B7CAEFD973
:18DA20007E052BC3A9DAFE05C237DAC5E5CDC9D9AF320BDBC3F1D9FEB9
:18DA380010C248DAE5210DDB3E019677E1C3EFD9FE18C25FDAE13A0B05
:18DA5000DB210CDBBED2E1D935CDA4D9C34EDAFE15C26BDACDB1D9E1D5
:18DA6800C3E1D9FE12C2A6DAC5CDB1D9C1E1E5C578B7CA8ADA234E059C
:18DA8000C5E5CD7FD9E1C1C378DAE53A0ADBB7CAF1D9210CDB96320ADF
:18DA9800DBCDA4D9210ADB35C299DAC3F1D9237704C5E54FCD7FD9E1B7
:18DAB000C17EFE0378C2BDDAFE01CA0000B9DAEFD9E1700E0DC348D9D9
:18DAC800CD06D9C301DBCD15E6C301DB793CCAE0DA3CCA06E6C30CE6B4
:18DAE000CD06E6B7CA91E5CD09E6C301DB3A0300C301DB21030071C9E9
:18DAF800EB4D44C3D3D9CD23D93245DBC93E01C301DB00020000000067
:18DB1000000000000000000000000000000000000000000000000000FD
:18DB2800000000000000000000000000000000000000000000000000E5
:18DB400000000000000000210BD85E2356EBE90C0DC81A771323C35063
:18DB5800DB3A42DB4FCD1BE67CB5C85E23562322B3E5232322B5E52394
:18DB70002322B7E52323EB22D0E521B9E50E08CD4FDB2ABBE5EB21C151
:18DB8800E50E0FCD4FDB2AC6E57C21DDE536FFB7CA9DDB36003EFFB700
:18DBA000C9CD18E6AF2AB5E57723772AB7E5772377C9CD27E6C3BBDB82
:18DBB800CD2AE6B7C82109D8C34ADB2AEAE50E02CDEADC22E5E522EC79
:18DBD000E521E5E54E23462AB7E55E23562AB5E57E23666F7993789AC1
:18DBE800D2FADBE52AC1E57B955F7A9C57E12BC3E4DBE52AC1E519DAB7
:18DC00000FDC7995789CDA0FDCEBE123C3FADBE1C5D5E5EB2ACEE51972
:18DC1800444DCD1EE6D12AB5E5732372D12AB7E5732372C179934F78C2
:18DC30009A472AD0E5EBCD30E64D44C321E621C3E54E3AE3E5B71F0DF7
:18DC4800C245DC473E08964F3AE2E50DCA5CDCB717C353DC80C92A43E9
:18DC6000DB11100019093ADDE5B7CA71DC6E2600C9095E2356EBC9CD06
:18DC78003EDC4F0600CD5EDC22E5E5C92AE5E57DB4C93AC3E52AE5E5A5
:18DC9000293DC290DC22E7E53AC4E54F3AE3E5A1B56F22E5E5C92A43DF
:18DCA800DB110C0019C92A43DB110F0019EB21110019C9CDAEDC7E3203
:18DCC000E3E5EB7E32E1E5CDA6DC3AC5E5A632E2E5C9CDAEDC3AD5E53D
:18DCD800FE02C2DEDCAF4F3AE3E58177EB3AE1E577C90C0DC87CB71F62
:18DCF000677D1F6FC3EBDC0E802AB9E5AF86230DC2FDDCC90C0DC829F7
:18DD0800C305DDC53A42DB4F210100CD04DDC179B56F78B467C92AAD92
:18DD2000E53A42DB4FCDEADC7DE601C921ADE54E2346CD0BDD22ADE5CD
:18DD38002AC8E523EB2AB3E5732372C9CD5EDD110900197E17D0210F8B
:18DD5000D8C34ADBCD1EDDC8210DD8C34ADB2AB9E53AE9E5856FD024C5
:18DD6800C92A43DB110E00197EC9CD69DD3600C9CD69DDF68077C92A0E
:18DD8000EAE5EB2AB3E57B96237A9EC9CD7FDDD813722B73C97B956F8E
:18DD98007A9C67C90EFF2AECE5EB2ACCE5CD95DDD0C5CDF7DC2ABDE51F
:18DDB000EB2AECE519C10CCAC4DDBEC8CD7FDDD0CD2CDDC977C9CD9C5D
:18DDC800DDCDE0DD0E01CDB8DBC3DADDCDE0DDCDB2DB21B1E5C3E3DDD5
:18DDE00021B9E54E2346C324E62AB9E5EB2AB1E50E80C34FDB21EAE50A
:18DDF8007E23BEC03CC921FFFF22EAE5C92AC8E5EB2AEAE52322EAE547
:18DE1000CD95DDD219DEC3FEDD3AEAE5E60306058705C220DE32E9E50B
:18DE2800B7C0C5CDC3DBCDD4DDC1C39EDD79E6073C5F57790F0F0FE6DA
:18DE40001F4F788787878787B14F780F0F0FE61F472ABFE5097E071DD7
:18DE5800C256DEC9D5CD35DEE6FEC1B10F15C264DE77C9CD5EDD111057
:18DE70000019C50E11D10DC8D53ADDE5B7CA88DEC5E54E0600C38EDE12
:18DE88000DC54E2346E579B0CA9DDE2AC6E57D917C98D45CDEE123C1DC
:18DEA000C375DE2AC6E50E03CDEADC23444D2ABFE53600230B78B1C20A
:18DEB800B1DE2ACAE5EB2ABFE5732372CDA1DB2AB3E53603233600CDBF
:18DED000FEDD0EFFCD05DECDF5DDC8CD5EDD3EE5BECAD2DE3A41DBBEC4
:18DEE800C2F6DE237ED624C2F6DE3D3245DB0E01CD6BDECD8CDDC3D2DC
:18DF0000DE3AD4E5C301DBC5F53AC5E52F4779A04FF1A091E61FC1C96C
:18DF18003EFF32D4E521D8E5712A43DB22D9E5CDFEDDCDA1DB0E00CD86
:18DF300005DECDF5DDCA94DF2AD9E5EB1AFEE5CA4ADFD5CD7FDDD1D2B6
:18DF480094DFCD5EDD3AD8E54F060079B7CA83DF1AFE3FCA7CDF78FEAC
:18DF60000DCA7CDFFE0C1ACA73DF96E67FC22DDFC37CDFC54ECD07DF8A
:18DF7800C1C22DDF1323040DC353DF3AEAE5E6033245DB21D4E57E1713
:18DF9000D0AF77C9CDFEDD3EFFC301DBCD54DD0E0CCD18DFCDF5DDC8F3
:18DFA800CD44DDCD5EDD36E50E00CD6BDECDC6DDCD2DDFC3A4DF5059F4
:18DFC00079B0CAD1DF0BD5C5CD35DE1FD2ECDFC1D12AC6E57B957A9CD8
:18DFD800D2F4DF13C5D5424BCD35DE1FD2ECDFD1C1C3C0DF173CCD643E
:18DFF000DEE1D1C979B0C2C0DF210000C90E001E20D506002A43DB09D4
:18E00800EBCD5EDDC1CD4FDBCDC3DBC3C6DDCD54DD0E0CCD18DF2A433B
:18E02000DB7E1110001977CDF5DDC8CD44DD0E101E0CCD01E0CD2DDFBA
:18E03800C327E00E0CCD18DFCDF5DDC80E001E0CCD01E0CD2DDFC340FF
:18E05000E00E0FCD18DFCDF5DDC8CDA6DC7EF5E5CD5EDDEB2A43DB0EA0
:18E0680020D5CD4FDBCD78DDD1210C00194E210F001946E1F17779BE1E
:18E0800078CA8BE03E00DA8BE03E802A43DB110F001977C97E23B62B57
:18E09800C01A7713231A771B2BC9AF3245DB32EAE532EBE5CD1EDDC0BD
:18E0B000CD69DDE680C00E0FCD18DFCDF5DDC8011000CD5EDD09EB2AA0
:18E0C80043DB090E103ADDE5B7CAE8E07EB71AC2DBE077B7C2E1E07EBB
:18E0E00012BEC21FE1C3FDE0CD94E0EBCD94E0EB1ABEC21FE113231AB4
:18E0F800BEC21FE10D13230DC2CDE001ECFF09EB091ABEDA17E17701C6
:18E11000030009EB097E123EFF32D2E5C310E02145DB35C9CD54DD2A27
:18E1280043DBE521ACE52243DB0E01CD18DFCDF5DDE12243DBC8EB2183
:18E140000F00190E11AF77230DC246E1210D001977CD8CDDCDFDDFC3E1
:18E1580078DDAF32D2E5CDA2E0CDF5DDC82A43DB010C00097E3CE61FEF
:18E1700077CA83E1473AC5E5A021D2E5A6CA8EE1C3ACE10102000934E0
:18E188007EE60FCAB6E10E0FCD18DFCDF5DDC2ACE13AD3E53CCAB6E14D
:18E1A000CD24E1CDF5DDCAB6E1C3AFE1CD5AE0CDBBDCAFC301DBCD05B7
:18E1B800DBC378DD3E0132D5E53EFF32D3E5CDBBDC3AE3E521E1E5BEFF
:18E1D000DAE6E1FE80C2FBE1CD5AE1AF32E3E53A45DBB7C2FBE1CD77D6
:18E1E800DCCD84DCCAFBE1CD8ADCCDD1DBCDB2DBC3D2DCC305DB3E0117
:18E2000032D5E53E0032D3E5CD54DD2A43DBCD47DDCDBBDC3AE3E5FE57
:18E2180080D205DBCD77DCCD84DC0E00C26EE2CD3EDC32D7E501000079
:18E23000B7CA3BE24F0BCD5EDC444DCDBEDF7DB4C248E23E02C301DBE0
:18E2480022E5E5EB2A43DB011000093ADDE5B73AD7E5CA64E2CD64DDBE
:18E2600073C36CE24F060009097323720E023A45DBB7C0C5CD8ADC3AA0
:18E27800D5E53D3DC2BBE2C1C5793D3DC2BBE2E52AB9E557772314F27F
:18E290008CE2CDE0DD2AE7E50E0222E5E5C5CDD1DBC1CDB8DB2AE5E539
:18E2A8000E003AC4E547A5B823C29AE2E122E5E5CDDADDCDD1DBC1C518
:18E2C000CDB8DBC13AE3E521E1E5BEDAD2E277340E020000210000F51F
:18E2D800CD69DDE67F77F1FE7FC200E33AD5E5FE01C200E3CDD2DCCD4C
:18E2F0005AE12145DB7EB7C2FEE23D32E3E53600C3D2DCAF32D5E5C585
:18E308002A43DBEB212100197EE67FF57E17237E17E61F4F7E1F1F1F1B
:18E320001FE60F47F1236E2C2D2E06C28BE32120001977210C001979BB
:18E3380096C247E3210E00197896E67FCA7FE3C5D5CDA2E0D1C12E03B8
:18E350003A45DB3CCA84E3210C001971210E001970CD51E03A45DB3CEB
:18E36800C27FE3C1C52E040CCA84E3CD24E12E053A45DB3CCA84E3C1F7
:18E38000AFC301DBE5CD69DD36C0E1C17D3245DBC378DD0EFFCD03E300
:18E39800CCC1E1C90E00CD03E3CC03E2C9EB194E0600210C00197E0FD0
:18E3B000E680814F3E0088477E0FE60F8047210E00197E87878787F5F2
:18E3C8008047F5E17DE1B5E601C90E0CCD18DF2A43DB11210019E57215
:18E3E00023722372CDF5DDCA0CE4CD5EDD110F00CDA5E3E1E55F7996F1
:18E3F80023789E237B9EDA06E4732B702B71CD2DDFC3E4E3E1C92A43B0
:18E41000DB112000CDA5E3212100197123702377C92AAFE53A42DB4F6D
:18E42800CDEADCE5EBCD59DBE1CC47DB7D1FD82AAFE54D44CD0BDD220F
:18E44000AFE5C3A3DE3AD6E52142DBBEC877C321E43EFF32DEE52A4355
:18E45800DB7EE61F3D32D6E5FE1ED275E43A42DB32DFE57E32E0E5E635
:18E47000E077CD45E43A41DB2A43DBB677C93E22C301DB21000022ADC4
:18E48800E522AFE5AF3242DB21800022B1E5CDDADDC321E4CD72DDCD55
:18E4A00051E4C351E0CD51E4C3A2E00E00EB7EFE3FCAC2E4CDA6DC7E03
:18E4B800FE3FC472DDCD51E40E0FCD18DFC3E9DD2AD9E52243DBCD514A
:18E4D000E4CD2DDFC3E9DDCD51E4CD9CDFC301DFCD51E4C3BCE1CD5181
:18E4E800E4C3FEE1CD72DDCD51E4C324E1CD51E4CD16E0C301DF2AAF6F
:18E50000E5C329E53A42DBC301DBEB22B1E5C3DADD2ABFE5C329E52A71
:18E51800ADE5C329E5CD51E4CD3BE0C301DF2ABBE52245DBC93AD6E531
:18E53000FEFFC23BE53A41DBC301DBE61F3241DBC9CD51E4C393E3CDDB
:18E5480051E4C39CE3CD51E4C3D2E32A43DB7D2F5F7C2F2AAFE5A45713
:18E560007DA35F2AADE5EB22AFE57DA36F7CA26722ADE5C93ADEE5B782
:18E57800CA91E52A43DB36003AE0E5B7CA91E5773ADFE532D6E5CD4563
:18E59000E42A0FDBF92A45DB7D44C9CD51E43E0232D5E50E00CD07E3BB
:18E5A800CC03E2C9E5000000008000000000000000000000000000007C
:18E5C00000000000000000000000000000000000000000000000000043
:18E5D8000000000000000000000000000000000000000000000000002B
:18E5F00000000000000000000000000000000000C30000C30000C300CA
:18E6080000C30000C30000C30000C30000C30000C30000C30000C300E2
:13E6200000C30000C30000C30000C30000C30000C3000055
:00000001FF
:18D00000C35CD3C358D37F00436F7079726967687420313937392028BE
:18D018006329206279204469676974616C20526573656172636820200E
:18D0300020202020000000000000000000000000000000000000000068
:18D04800000000000000000000000000000000000000000000000000D0
:18D06000000000000000000000000000000000000000000000000000B8
:18D078000000000000000000000000000000000008D000005F0E02C396
:18D090000500C5CD8CD0C1C93E0DCD92D03E0AC392D03E20C392D0C5DC
:18D0A800CD98D0E17EB7C823E5CD8CD0E1C3ACD00E0DC305005F0E0EAE
:18D0C000C30500CD050032EED73CC90E0FC3C3D0AF32EDD711CDD7C332
:18D0D800CBD00E10C3C3D00E11C3C3D00E12C3C3D011CDD7C3DFD00E11
:18D0F00013C30500CD0500B7C90E14C3F4D011CDD7C3F9D00E15C3F437
:18D10800D00E16C3C3D00E17C305001EFF0E20C30500CD13D18787877F
:18D120008721EFD7B6320400C93AEFD7320400C9FE61D8FE7BD0E65F10
:18D13800C93AABD7B7CA96D13AEFD7B73E00C4BDD011ACD7CDCBD0CA66
:18D1500096D13ABBD73D32CCD711ACD7CDF9D0C296D11107D0218000A6
:18D168000680CD42D421BAD73600233511ACD7CDDAD0CA96D13AEFD7CA
:18D18000B7C4BDD02108D0CDACD0CDC2D1CAA7D1CDDDD1C382D3CDDD6E
:18D19800D1CD1AD10E0A1106D0CD0500CD29D12107D0462378B7CABA4A
:18D1B000D17ECD30D17705C3ABD1772108D02288D0C90E0BCD0500B73A
:18D1C800C80E01CD0500B7C90E19C305001180000E1AC3050021ABD713
:18D1E0007EB7C83600AFCDBDD011ACD7CDEFD03AEFD7C3BDD01128D37F
:18D1F8002100D806061ABEC2CFD3132305C2FDD1C9CD98D02A8AD07E13
:18D21000FE20CA22D2B7CA22D2E5CD8CD0E123C30FD23E3FCD8CD0CD8C
:18D2280098D0CDDDD1C382D31AB7C8FE20DA09D2C8FE3DC8FE5FC8FE99
:18D240002EC8FE3AC8FE3BC8FE3CC8FE3EC8C91AB7C8FE20C013C34F74
:18D25800D2856FD024C93E0021CDD7CD59D2E5E5AF32F0D72A88D0EB61
:18D27000CD4FD2EB228AD0EBE11AB7CA89D2DE4047131AFE3ACA90D299
:18D288001B3AEFD777C396D27832F0D770130608CD30D2CAB9D223FE8A
:18D2A0002AC2A9D2363FC3ABD2771305C298D2CD30D2CAC0D213C3AFEF
:18D2B800D223362005C2B9D20603FE2EC2E9D213CD30D2CAE9D223FE87
:18D2D0002AC2D9D2363FC3DBD2771305C2C8D2CD30D2CAF0D213C3DFCF
:18D2E800D223362005C2E9D2060323360005C2F2D2EB2288D0E1010B22
:18D3000000237EFE3FC209D3040DC201D378B7C9444952204552412003
:18D31800545950455341564552454E2055534552001600000000211001
:18D33000D30E0079FE06D011CED706041ABEC24FD3132305C23CD31A15
:18D34800FE20C254D379C92305C24FD30CC333D3AF3207D031ABD7C573
:18D36000791F1F1F1FE60F5FCD15D1CDB8D032ABD7C179E60F32EFD789
:18D37800CDBDD03A07D0B7C298D331ABD7CD98D0CDD0D1C641CD8CD0C8
:18D390003E3ECD8CD0CD39D1118000CDD8D1CDD0D132EFD7CD5ED2C4DB
:18D3A80009D23AF0D7B7C2A5D6CD2ED321C1D35F160019197E23666FFD
:18D3C000E977D41FD55DD5ADD510D68ED6A5D621F3762200D02100D047
:18D3D800E901DFD3C3A7D052656164206572726F720001F0D3C3A7D0A3
:18D3F0004E6F2066696C6500CD5ED23AF0D7B7C209D221CED7010B0084
:18D408007EFE20CA33D423D630FE0AD209D25778E6E0C209D278070709
:18D420000780DA09D280DA09D282DA09D2470DC208D4C97EFE20C2092A
:18D43800D2230DC233D478C906037E12231305C242D4C921800081CD6C
:18D4500059D27EC9AF32CDD73AF0D7B7C83D21EFD7BEC8C3BDD03AF029
:18D46800D7B7C83D21EFD7BEC83AEFD7C3BDD0CD5ED2CD54D421CED7A4
:18D480007EFE20C28FD4060B363F2305C288D41E00D5CDE9D0CCEAD305
:18D49800CA1BD53AEED70F0F0FE6604F3E0ACD4BD417DA0FD5D17B1C90
:18D4B000D5E603F5C2CCD4CD98D0C5CDD0D1C1C641CD92D03E3ACD9219
:18D4C800D0C3D4D4CDA2D03E3ACD92D0CDA2D0060178CD4BD4E67FFE1E
:18D4E00020C2F9D4F1F5FE03C2F7D43E09CD4BD4E67FFE20CA0ED53E70
:18D4F80020CD92D00478FE0CD20ED5FE09C2D9D4CDA2D0C3D9D4F1CDAF
:18D51000C2D1C21BD5CDE4D0C398D4D1C386D7CD5ED2FE0BC242D5013D
:18D5280052D5CDA7D0CD39D12107D035C282D3237EFE59C282D3232211
:18D5400088D0CD54D411CDD7CDEFD03CCCEAD3C386D7416C6C20287986
:18D558002F6E293F00CD5ED2C209D2CD54D4CDD0D0CAA7D5CD98D0211E
:18D57000F1D736FF21F1D77EFE80DA87D5E5CDFED0E1C2A0D5AF773499
:18D58800218000CD59D27EFE1ACA86D7CD8CD0CDC2D1C286D7C374D581
:18D5A0003DCA86D7CDD9D3CD66D4C309D2CDF8D3F5CD5ED2C209D2CDFD
:18D5B80054D411CDD7D5CDEFD0D1CD09D1CAFBD5AF32EDD7F16F2600E0
:18D5D000291100017CB5CAF1D52BE521800019E5CDD8D111CDD7CD049C
:18D5E800D1D1E1C2FBD5C3D4D511CDD7CDDAD03CC201D60107D6CDA757
:18D60000D0CDD5D1C386D74E6F20737061636500CD5ED2C209D23AF002
:18D61800D7F5CD54D4CDE9D0C279D621CDD711DDD70610CD42D42A886D
:18D63000D0EBCD4FD2FE3DCA3FD6FE5FC273D6EB232288D0CD5ED2C270
:18D6480073D6F14721F0D77EB7CA59D6B870C273D670AF32CDD7CDE955
:18D66000D0CA6DD611CDD7CD0ED1C386D7CDEAD3C386D7CD66D4C309D7
:18D67800D20182D6CDA7D0C386D746696C652065786973747300CDF806
:18D69000D3FE10D209D25F3ACED7FE20CA09D2CD15D1C389D7CDF5D18A
:18D6A8003ACED7FE20C2C4D63AF0D7B7CA89D73D32EFD7CD29D1CDBDA9
:18D6C000D0C389D711D6D71AFE20C209D2D5CD54D4D12183D7CD40D4D5
:18D6D800CDD0D0CA6BD7210001E5EBCDD8D111CDD7CDF9D0C201D7E193
:18D6F000118000191100D07D937C9AD271D7C3E1D6E13DC271D7CD6682
:18D70800D4CD5ED221F0D7E57E32CDD73E10CD60D2E17E32DDD7AF32A4
:18D72000EDD7115C0021CDD70621CD42D42108D07EB7CA3ED7FE20CAFC
:18D738003ED723C330D706001181007E12B7CA4FD7042313C343D77879
:18D75000328000CD98D0CDD5D1CD1AD1CD000131ABD7CD29D1CDBDD00D
:18D76800C382D3CD66D4C309D2017AD7CDA7D0C386D7426164206C6F34
:18D78000616400434F4DCD66D4CD5ED23ACED7D62021F0D7B6C209D2D9
:18D79800C382D3000000000000000000000000000000000000242424F5
:18D7B000202020202053554200000000000000000000000000000000D7
:18D7C800000000000000202020202020202020202000000000002020A9
:18D7E00020202020202020202000000000000000000000000000000011
:18D7F8000000000000000000001600000000C311D899D8A5D8ABD8B135
:18D81000D8EB2243DBEB7B32D6E52100002245DB39220FDB3141DBAF06
:18D8280032E0E532DEE52174E5E579FE29D04B2147D85F160019195E9D
:18D8400023562A43DBEBE903E6C8DA90D9CEDA12E60FE6D4DAEDDAF34A
:18D85800DAF8DAE1D9FEDA7EE483E445E49CE4A5E4ABE4C8E4D7E4E0A9
:18D87000E4E6E4ECE4F5E4FEE404E50AE511E52CDD17E51DE526E52D5A
:18D88800E541E547E54DE50EE453E504DB04DB9BE521CAD8CDE5D8FE6C
:18D8A00003CA0000C921D5D8C3B4D821E1D8C3B4D821DCD8CDE5D8C372
:18D8B800000042646F7320457272204F6E20203A20244261642053650D
:18D8D00063746F722453656C6563742446696C6520522F4F24E5CDC9D1
:18D8E800D93A42DBC64132C6D801BAD8CDD3D9C1CDD3D9210EDB7E361D
:18D9000000B7C0C309E6CDFBD8CD14D9D8F54FCD90D9F1C9FE0DC8FEAF
:18D918000AC8FE09C8FE08C8FE20C93A0EDBB7C245D9CD06E6E601C87F
:18D93000CD09E6FE13C242D9CD09E6FE03CA0000AFC9320EDB3E01C913
:18D948003A0ADBB7C262D9C5CD23D9C1C5CD0CE6C1C53A0DDBB7C40FEF
:18D96000E6C179210CDBFE7FC834FE20D0357EB7C879FE08C279D93526
:18D97800C9FE0AC03600C979CD14D9D290D9F50E5ECD48D9F1F6404FD4
:18D9900079FE09C248D90E20CD48D93A0CDBE607C296D9C9CDACD90E98
:18D9A80020CD0CE60E08C30CE60E23CD48D9CDC9D93A0CDB210BDBBE49
:18D9C000D00E20CD48D9C3B9D90E0DCD48D90E0AC348D90AFE24C80312
:18D9D800C54FCD90D9C1C3D3D93A0CDB320BDB2A43DB4E23E50600C51B
:18D9F000E5CDFBD8E67FE1C1FE0DCAC1DAFE0ACAC1DAFE08C216DA7886
:18DA0800B7CAEFD9053A0CDB320ADBC370DAFE7FC226DA78B7CAEFD973
:18DA20007E052BC3A9DAFE05C237DAC5E5CDC9D9AF320BDBC3F1D9FEB9
:18DA380010C248DAE5210DDB3E019677E1C3EFD9FE18C25FDAE13A0B05
:18DA5000DB210CDBBED2E1D935CDA4D9C34EDAFE15C26BDACDB1D9E1D5
:18DA6800C3E1D9FE12C2A6DAC5CDB1D9C1E1E5C578B7CA8ADA234E059C
:18DA8000C5E5CD7FD9E1C1C378DAE53A0ADBB7CAF1D9210CDB96320ADF
:18DA9800DBCDA4D9210ADB35C299DAC3F1D9237704C5E54FCD7FD9E1B7
:18DAB000C17EFE0378C2BDDAFE01CA0000B9DAEFD9E1700E0DC348D9D9
:18DAC800CD06D9C301DBCD15E6C301DB793CCAE0DA3CCA06E6C30CE6B4
:18DAE000CD06E6B7CA91E5CD09E6C301DB3A0300C301DB21030071C9E9
:18DAF800EB4D44C3D3D9CD23D93245DBC93E01C301DB00020000000067
:18DB1000000000000000000000000000000000000000000000000000FD
:18DB2800000000000000000000000000000000000000000000000000E5
:18DB400000000000000000210BD85E2356EBE90C0DC81A771323C35063
:18DB5800DB3A42DB4FCD1BE67CB5C85E23562322B3E5232322B5E52394
:18DB70002322B7E52323EB22D0E521B9E50E08CD4FDB2ABBE5EB21C151
:18DB8800E50E0FCD4FDB2AC6E57C21DDE536FFB7CA9DDB36003EFFB700
:18DBA000C9CD18E6AF2AB5E57723772AB7E5772377C9CD27E6C3BBDB82
:18DBB800CD2AE6B7C82109D8C34ADB2AEAE50E02CDEADC22E5E522EC79
:18DBD000E521E5E54E23462AB7E55E23562AB5E57E23666F7993789AC1
:18DBE800D2FADBE52AC1E57B955F7A9C57E12BC3E4DBE52AC1E519DAB7
:18DC00000FDC7995789CDA0FDCEBE123C3FADBE1C5D5E5EB2ACEE51972
:18DC1800444DCD1EE6D12AB5E5732372D12AB7E5732372C179934F78C2
:18DC30009A472AD0E5EBCD30E64D44C321E621C3E54E3AE3E5B71F0DF7
:18DC4800C245DC473E08964F3AE2E50DCA5CDCB717C353DC80C92A43E9
:18DC6000DB11100019093ADDE5B7CA71DC6E2600C9095E2356EBC9CD06
:18DC78003EDC4F0600CD5EDC22E5E5C92AE5E57DB4C93AC3E52AE5E5A5
:18DC9000293DC290DC22E7E53AC4E54F3AE3E5A1B56F22E5E5C92A43DF
:18DCA800DB110C0019C92A43DB110F0019EB21110019C9CDAEDC7E3203
:18DCC000E3E5EB7E32E1E5CDA6DC3AC5E5A632E2E5C9CDAEDC3AD5E53D
:18DCD800FE02C2DEDCAF4F3AE3E58177EB3AE1E577C90C0DC87CB71F62
:18DCF000677D1F6FC3EBDC0E802AB9E5AF86230DC2FDDCC90C0DC829F7
:18DD0800C305DDC53A42DB4F210100CD04DDC179B56F78B467C92AAD92
:18DD2000E53A42DB4FCDEADC7DE601C921ADE54E2346CD0BDD22ADE5CD
:18DD38002AC8E523EB2AB3E5732372C9CD5EDD110900197E17D0210F8B
:18DD5000D8C34ADBCD1EDDC8210DD8C34ADB2AB9E53AE9E5856FD024C5
:18DD6800C92A43DB110E00197EC9CD69DD3600C9CD69DDF68077C92A0E
:18DD8000EAE5EB2AB3E57B96237A9EC9CD7FDDD813722B73C97B956F8E
:18DD98007A9C67C90EFF2AECE5EB2ACCE5CD95DDD0C5CDF7DC2ABDE51F
:18DDB000EB2AECE519C10CCAC4DDBEC8CD7FDDD0CD2CDDC977C9CD9C5D
:18DDC800DDCDE0DD0E01CDB8DBC3DADDCDE0DDCDB2DB21B1E5C3E3DDD5
:18DDE00021B9E54E2346C324E62AB9E5EB2AB1E50E80C34FDB21EAE50A
:18DDF8007E23BEC03CC921FFFF22EAE5C92AC8E5EB2AEAE52322EAE547
:18DE1000CD95DDD219DEC3FEDD3AEAE5E60306058705C220DE32E9E50B
:18DE2800B7C0C5CDC3DBCDD4DDC1C39EDD79E6073C5F57790F0F0FE6DA
:18DE40001F4F788787878787B14F780F0F0FE61F472ABFE5097E071DD7
:18DE5800C256DEC9D5CD35DEE6FEC1B10F15C264DE77C9CD5EDD111057
:18DE70000019C50E11D10DC8D53ADDE5B7CA88DEC5E54E0600C38EDE12
:18DE88000DC54E2346E579B0CA9DDE2AC6E57D917C98D45CDEE123C1DC
:18DEA000C375DE2AC6E50E03CDEADC23444D2ABFE53600230B78B1C20A
:18DEB800B1DE2ACAE5EB2ABFE5732372CDA1DB2AB3E53603233600CDBF
:18DED000FEDD0EFFCD05DECDF5DDC8CD5EDD3EE5BECAD2DE3A41DBBEC4
:18DEE800C2F6DE237ED624C2F6DE3D3245DB0E01CD6BDECD8CDDC3D2DC
:18DF0000DE3AD4E5C301DBC5F53AC5E52F4779A04FF1A091E61FC1C96C
:18DF18003EFF32D4E521D8E5712A43DB22D9E5CDFEDDCDA1DB0E00CD86
:18DF300005DECDF5DDCA94DF2AD9E5EB1AFEE5CA4ADFD5CD7FDDD1D2B6
:18DF480094DFCD5EDD3AD8E54F060079B7CA83DF1AFE3FCA7CDF78FEAC
:18DF60000DCA7CDFFE0C1ACA73DF96E67FC22DDFC37CDFC54ECD07DF8A
:18DF7800C1C22DDF1323040DC353DF3AEAE5E6033245DB21D4E57E1713
:18DF9000D0AF77C9CDFEDD3EFFC301DBCD54DD0E0CCD18DFCDF5DDC8F3
:18DFA800CD44DDCD5EDD36E50E00CD6BDECDC6DDCD2DDFC3A4DF5059F4
:18DFC00079B0CAD1DF0BD5C5CD35DE1FD2ECDFC1D12AC6E57B957A9CD8
:18DFD800D2F4DF13C5D5424BCD35DE1FD2ECDFD1C1C3C0DF173CCD643E
:18DFF000DEE1D1C979B0C2C0DF210000C90E001E20D506002A43DB09D4
:18E00800EBCD5EDDC1CD4FDBCDC3DBC3C6DDCD54DD0E0CCD18DF2A433B
:18E02000DB7E1110001977CDF5DDC8CD44DD0E101E0CCD01E0CD2DDFBA
:18E03800C327E00E0CCD18DFCDF5DDC80E001E0CCD01E0CD2DDFC340FF
:18E05000E00E0FCD18DFCDF5DDC8CDA6DC7EF5E5CD5EDDEB2A43DB0EA0
:18E0680020D5CD4FDBCD78DDD1210C00194E210F001946E1F17779BE1E
:18E0800078CA8BE03E00DA8BE03E802A43DB110F001977C97E23B62B57
:18E09800C01A7713231A771B2BC9AF3245DB32EAE532EBE5CD1EDDC0BD
:18E0B000CD69DDE680C00E0FCD18DFCDF5DDC8011000CD5EDD09EB2AA0
:18E0C80043DB090E103ADDE5B7CAE8E07EB71AC2DBE077B7C2E1E07EBB
:18E0E00012BEC21FE1C3FDE0CD94E0EBCD94E0EB1ABEC21FE113231AB4
:18E0F800BEC21FE10D13230DC2CDE001ECFF09EB091ABEDA17E17701C6
:18E11000030009EB097E123EFF32D2E5C310E02145DB35C9CD54DD2A27
:18E1280043DBE521ACE52243DB0E01CD18DFCDF5DDE12243DBC8EB2183
:18E140000F00190E11AF77230DC246E1210D001977CD8CDDCDFDDFC3E1
:18E1580078DDAF32D2E5CDA2E0CDF5DDC82A43DB010C00097E3CE61FEF
:18E1700077CA83E1473AC5E5A021D2E5A6CA8EE1C3ACE10102000934E0
:18E188007EE60FCAB6E10E0FCD18DFCDF5DDC2ACE13AD3E53CCAB6E14D
:18E1A000CD24E1CDF5DDCAB6E1C3AFE1CD5AE0CDBBDCAFC301DBCD05B7
:18E1B800DBC378DD3E0132D5E53EFF32D3E5CDBBDC3AE3E521E1E5BEFF
:18E1D000DAE6E1FE80C2FBE1CD5AE1AF32E3E53A45DBB7C2FBE1CD77D6
:18E1E800DCCD84DCCAFBE1CD8ADCCDD1DBCDB2DBC3D2DCC305DB3E0117
:18E2000032D5E53E0032D3E5CD54DD2A43DBCD47DDCDBBDC3AE3E5FE57
:18E2180080D205DBCD77DCCD84DC0E00C26EE2CD3EDC32D7E501000079
:18E23000B7CA3BE24F0BCD5EDC444DCDBEDF7DB4C248E23E02C301DBE0
:18E2480022E5E5EB2A43DB011000093ADDE5B73AD7E5CA64E2CD64DDBE
:18E2600073C36CE24F060009097323720E023A45DBB7C0C5CD8ADC3AA0
:18E27800D5E53D3DC2BBE2C1C5793D3DC2BBE2E52AB9E557772314F27F
:18E290008CE2CDE0DD2AE7E50E0222E5E5C5CDD1DBC1CDB8DB2AE5E539
:18E2A8000E003AC4E547A5B823C29AE2E122E5E5CDDADDCDD1DBC1C518
:18E2C000CDB8DBC13AE3E521E1E5BEDAD2E277340E020000210000F51F
:18E2D800CD69DDE67F77F1FE7FC200E33AD5E5FE01C200E3CDD2DCCD4C
:18E2F0005AE12145DB7EB7C2FEE23D32E3E53600C3D2DCAF32D5E5C585
:18E308002A43DBEB212100197EE67FF57E17237E17E61F4F7E1F1F1F1B
:18E320001FE60F47F1236E2C2D2E06C28BE32120001977210C001979BB
:18E3380096C247E3210E00197896E67FCA7FE3C5D5CDA2E0D1C12E03B8
:18E350003A45DB3CCA84E3210C001971210E001970CD51E03A45DB3CEB
:18E36800C27FE3C1C52E040CCA84E3CD24E12E053A45DB3CCA84E3C1F7
:18E38000AFC301DBE5CD69DD36C0E1C17D3245DBC378DD0EFFCD03E300
:18E39800CCC1E1C90E00CD03E3CC03E2C9EB194E0600210C00197E0FD0
:18E3B000E680814F3E0088477E0FE60F8047210E00197E87878787F5F2
:18E3C8008047F5E17DE1B5E601C90E0CCD18DF2A43DB11210019E57215
:18E3E00023722372CDF5DDCA0CE4CD5EDD110F00CDA5E3E1E55F7996F1
:18E3F80023789E237B9EDA06E4732B702B71CD2DDFC3E4E3E1C92A43B0
:18E41000DB112000CDA5E3212100197123702377C92AAFE53A42DB4F6D
:18E42800CDEADCE5EBCD59DBE1CC47DB7D1FD82AAFE54D44CD0BDD220F
:18E44000AFE5C3A3DE3AD6E52142DBBEC877C321E43EFF32DEE52A4355
:18E45800DB7EE61F3D32D6E5FE1ED275E43A42DB32DFE57E32E0E5E635
:18E47000E077CD45E43A41DB2A43DBB677C93E22C301DB21000022ADC4
:18E48800E522AFE5AF3242DB21800022B1E5CDDADDC321E4CD72DDCD55
:18E4A00051E4C351E0CD51E4C3A2E00E00EB7EFE3FCAC2E4CDA6DC7E03
:18E4B800FE3FC472DDCD51E40E0FCD18DFC3E9DD2AD9E52243DBCD514A
:18E4D000E4CD2DDFC3E9DDCD51E4CD9CDFC301DFCD51E4C3BCE1CD5181
:18E4E800E4C3FEE1CD72DDCD51E4C324E1CD51E4CD16E0C301DF2AAF6F
:18E50000E5C329E53A42DBC301DBEB22B1E5C3DADD2ABFE5C329E52A71
:18E51800ADE5C329E5CD51E4CD3BE0C301DF2ABBE52245DBC93AD6E531
:18E53000FEFFC23BE53A41DBC301DBE61F3241DBC9CD51E4C393E3CDDB
:18E5480051E4C39CE3CD51E4C3D2E32A43DB7D2F5F7C2F2AAFE5A45713
:18E560007DA35F2AADE5EB22AFE57DA36F7CA26722ADE5C93ADEE5B782
:18E57800CA91E52A43DB36003AE0E5B7CA91E5773ADFE532D6E5CD4563
:18E59000E42A0FDBF92A45DB7D44C9CD51E43E0232D5E50E00CD07E3BB
:18E5A800CC03E2C9E5000000008000000000000000000000000000007C
:18E5C00000000000000000000000000000000000000000000000000043
:18E5D8000000000000000000000000000000000000000000000000002B
:18E5F00000000000000000000000000000000000C30000C30000C300CA
:18E6080000C30000C30000C30000C30000C30000C30000C30000C300E2
:13E6200000C30000C30000C30000C30000C30000C3000055
:00000001FF

View File

@@ -1,19 +1,19 @@
:180100003E00326D02327102327202327002218000226E02CD3902FEE0
:1801180055CA2A02FE3A20F40E13115C00CD05000E16115C00CD050075
:18013000CD3902FE3E286147C5CD3902C14FCD4C02473A710280327194
:18014800023A72023C327202782A6E027723226E023A6D023C326D0249
:18016000FE8020320E15115C00CD05003E2ECD45023A70023CFE40208F
:180178000F3270023E0DCD45023E0ACD45023E00327002218000226EEE
:18019000023E00326D0218983A6D02FE00280D0E15115C00CD05003E4A
:1801A8002ECD45020E10115C00CD0500CD390247C5CD3902C14FCD4C5B
:1801C00002473A720290FE00281A3E0DCD45023E0ACD45021191020EF3
:1801D80009CD0500CD3902CD3902183CCD390247C5CD3902C14FCD4C8B
:1801F00002473A710290FE0028143E0DCD45023E0ACD45021176020EE5
:1802080009CD050018123E0DCD45023E0ACD45021173020E09CD0500AF
:180220000E201E00CD0500C30000CD3902CD65025F0E20CD0500C31473
:18023800011EFF0E06CD0500FE0028F5C90E025FCD0500C978D630FE40
:180250000A3802D607070707074779D630FE0A3802D60780C9D630FE27
:180268000AD8D607C90000000000004F4B243D3D3D3D3D3D4368656357
:180280006B73756D204572726F723D3D3D3D3D3D243D3D3D3D3D3D4636
:17029800696C65204C656E677468204572726F723D3D3D3D3D3D24D7
:00000001FF
:180100003E00326D02327102327202327002218000226E02CD3902FEE0
:1801180055CA2A02FE3A20F40E13115C00CD05000E16115C00CD050075
:18013000CD3902FE3E286147C5CD3902C14FCD4C02473A710280327194
:18014800023A72023C327202782A6E027723226E023A6D023C326D0249
:18016000FE8020320E15115C00CD05003E2ECD45023A70023CFE40208F
:180178000F3270023E0DCD45023E0ACD45023E00327002218000226EEE
:18019000023E00326D0218983A6D02FE00280D0E15115C00CD05003E4A
:1801A8002ECD45020E10115C00CD0500CD390247C5CD3902C14FCD4C5B
:1801C00002473A720290FE00281A3E0DCD45023E0ACD45021191020EF3
:1801D80009CD0500CD3902CD3902183CCD390247C5CD3902C14FCD4C8B
:1801F00002473A710290FE0028143E0DCD45023E0ACD45021176020EE5
:1802080009CD050018123E0DCD45023E0ACD45021173020E09CD0500AF
:180220000E201E00CD0500C30000CD3902CD65025F0E20CD0500C31473
:18023800011EFF0E06CD0500FE0028F5C90E025FCD0500C978D630FE40
:180250000A3802D607070707074779D630FE0A3802D60780C9D630FE27
:180268000AD8D607C90000000000004F4B243D3D3D3D3D3D4368656357
:180280006B73756D204572726F723D3D3D3D3D3D243D3D3D3D3D3D4636
:17029800696C65204C656E677468204572726F723D3D3D3D3D3D24D7
:00000001FF

View File

@@ -1,16 +1,16 @@
:18500000CDD55043502F4D20466F726D617474657220322E3020627918
:1850180020472E20536561726C6520323031330D0A003E4132E7503A50
:18503000E750CF3C32E7503E2032E6503AE650D38A3E00D38B3E00D37D
:185048008C3EE0CDA7503AE6503C32E650FE4020E311400021400006D5
:185060000F3AE750CF3C32E7503E0032E6503AE650D38A7DD38B7CD3A7
:185078008CCDA7503AE6503C32E650FE2020E7190520D6CDD5500D0A7A
:18509000466F726D617474696E6720636F6D706C6574650D0A00C9F59F
:1850A800C5E5DB89FE8020FA3E01D3890E0421E8500680DB89FEA0209C
:1850C000FAC5063210FEC17ED388230520ED0D20E5E1C1F1C9E3F5C5F9
:1850D8007EFE002804CF2318F723C1F1E3C90000E520202020202020D1
:1850F00020202020000000000000000000000000000000000000000028
:18510800E520202020202020202020200000000000000000000000004A
:185120000000000000000000E520202020202020202020200000000032
:1851380000000000000000000000000000000000E5202020202020209A
:18515000202020200000000000000000000000000000000000000000C7
:00000001FF
:18500000CDD55043502F4D20466F726D617474657220322E3020627918
:1850180020472E20536561726C6520323031330D0A003E4132E7503A50
:18503000E750CF3C32E7503E2032E6503AE650D38A3E00D38B3E00D37D
:185048008C3EE0CDA7503AE6503C32E650FE4020E311400021400006D5
:185060000F3AE750CF3C32E7503E0032E6503AE650D38A7DD38B7CD3A7
:185078008CCDA7503AE6503C32E650FE2020E7190520D6CDD5500D0A7A
:18509000466F726D617474696E6720636F6D706C6574650D0A00C9F59F
:1850A800C5E5DB89FE8020FA3E01D3890E0421E8500680DB89FEA0209C
:1850C000FAC5063210FEC17ED388230520ED0D20E5E1C1F1C9E3F5C5F9
:1850D8007EFE002804CF2318F723C1F1E3C90000E520202020202020D1
:1850F00020202020000000000000000000000000000000000000000028
:18510800E520202020202020202020200000000000000000000000004A
:185120000000000000000000E520202020202020202020200000000032
:1851380000000000000000000000000000000000E5202020202020209A
:18515000202020200000000000000000000000000000000000000000C7
:00000001FF

View File

@@ -1,10 +1,10 @@
:18500000CDBA5043502F4D2053797374656D205472616E736665722088
:18501800627920472E20536561726C6520323031322D31330D0A000601
:18503000183E0032CB5032CC5032CD5032CE502100D022CF50CD8C50FD
:185048001100022ACF501922CF503ACB503C32CB5010EACDBA500D0AD4
:1850600053797374656D207472616E7366657220636F6D706C657465B5
:185078000D0A00C93ACD50D38C3ACC50D38B3ACB50D38AC9F5C5E5DBE1
:1850900089FE8020FACD7C503E01D3890E040680DB89FEA020FAC50634
:1850A8003210FEC17ED388230520ED0D20E8E1C1F1C9E3F5C57EFE0057
:1150C0002804CF2318F723C1F1E3C900000000000031
:00000001FF
:18500000CDBA5043502F4D2053797374656D205472616E736665722088
:18501800627920472E20536561726C6520323031322D31330D0A000601
:18503000183E0032CB5032CC5032CD5032CE502100D022CF50CD8C50FD
:185048001100022ACF501922CF503ACB503C32CB5010EACDBA500D0AD4
:1850600053797374656D207472616E7366657220636F6D706C657465B5
:185078000D0A00C93ACD50D38C3ACC50D38B3ACB50D38AC9F5C5E5DBE1
:1850900089FE8020FACD7C503E01D3890E040680DB89FEA020FAC50634
:1850A8003210FEC17ED388230520ED0D20E8E1C1F1C9E3F5C57EFE0057
:1150C0002804CF2318F723C1F1E3C900000000000031
:00000001FF

View File

@@ -6,10 +6,10 @@
:18006000DB800FCB47C9DB820FCB47C93A0030FE002007DB80E601FE2D
:1800780000C9DB82E601FE00C9D7FE0A28FBFE1B20023E03C9FE0D2822
:180090000AFE0C2804FE203801CFC93E0DCF3E0ACF3E0DC9312A303E1B
:1800A80095D380D3823E00320030210E03CD3701210E032204302A0476
:1800A80095D380D3823E00320030213403CD37012134032204302A042A
:1800C000307EB7280CCD5000280723220430C3BE00CD7300280F3E0094
:1800D800320030CD1B00FE20C2D1001812CD7A0028D43E01320030CD3A
:1800F0001B00FE20C2BE003E0CCD3C00CD5000CD3E01219C02CD3701FF
:1800F0001B00FE20C2BE003E0CCD3C00CD5000CD3E0121C202CD3701D9
:18010800210801E5CD3E013E3ECFCD8100FE2038F9FE3ACAB501CD8DCA
:1801200000E65FFE49CAF601FE47CAAF01FE58CAFA013E3FCF18D57EE9
:18013800B7C8CF2318F93E0DCF3E0ACFC9CD8100FE03C8FE2038F6C907
@@ -19,323 +19,324 @@
:18019800070707074779D630FE0A3802D60780C9CD8100CD8D00C9CDC7
:1801B0006101D8E5C91E00CD500157CD500167CD50016FCD5001FE018D
:1801C8002009CD50017BA7281E18157AA7280BCD500177233E2ECF15E7
:1801E00018F1CD50017BA7C821FD02CD3701C9213403CD3701C9C33FE0
:1801E00018F1CD50017BA7C8212303CD3701C9215A03CD3701C9C3656D
:1801F80003C9210C02CD3701CD4501C8E65FFE59CA2A02C90D0A426FF1
:180210006F742043502F4D3F000D0A4C6F6164696E672043502F4D0D74
:180228000A00211902CD370106183E0032063032073032083032093071
:180240002100D0220230CD74021100022A0230192202303A06303C3264
:18025800063010EA3A0030F52AFEFFE93A0830D38C3A0730D38B3A060F
:1802700030D38AC9F5C5E5DB89FE8020FACD64023E00D3890E04068020
:18028800DB89FEE020FADB8877230520F30D20EEE1C1F1C943502F4D67
:1802A00020426F6F7420524F4D20322E300D0A492D5374727420496EC3
:1802B8007472700D0A582D426F6F742043502F4D0D0A3A6E6E6E6E2D43
:1802D0004C6F6164204920726372640D0A476E6E6E6E2D52206C6F636F
:1802E8000D0A000D0A436F6C64206F72207761726D3F0D0A0043686510
:18030000636B73756D206572726F720D0A000C5072657373205B7370EA
:180318006163655D20746F20616374697661746520636F6E736F6C65C0
:180330002E0D0A00436F6D706C6574650D0A0021EB02CD3701CD4501FA
:18034800C8E65FFE43CA5603FE57CA5903C9C35C03C3FA03DD21000008
:18036000C367030D0C831321B030F9C3A21F113406066321B0301A77E5
:18037800231305C27603F9CD3508CD030E325A3132A931214904CDA171
:1803900014CD5208CD5B0BB7C2B003210D32237CB5CAC2037E472F770D
:1803A800BE70CA9E03C3C203CD270CB7C20307EB2B3ED94677BE70C2BF
:1803C0008B032B110C32CDCB09DA8B0311CEFF225F3119220A31CD1031
:1803D800082A0A3111EFFF1911A9317D936F7C9A67E5211204CDA11403
:1803F000E1CD441B210304CDA114311631CD3508C34E072042797465F0
:180408007320667265650D0A00005A38302042415349432056657220DF
:18042000342E37620D0A436F707972696768742028432920313937384C
:18043800206279204D6963726F736F66740D0A00004D656D6F7279202B
:18045000746F7000B9197D1ACF19B3306113E6168F13431C221D5E18E7
:18046800911C971D9D1DFE1D131E3A177E1E013113162B14AD16221693
:180480003316A01E331F431673167D16C54E44C64F52CE455854C44114
:180498005441C94E505554C4494DD2454144CC4554C74F544FD2554E1E
:1804B000C946D24553544F5245C74F535542D2455455524ED2454DD3EA
:1804C800544F50CF5554CF4ECE554C4CD7414954C44546D04F4B45C462
:1804E0004F4B45D3435245454ECC494E4553C34C53D749445448CD4F6C
:1804F8004E49544F52D34554D245534554D052494E54C34F4E54CC491B
:180510005354C34C454152C34C4F4144C353415645CE4557D441422887
:18052800D44FC64ED3504328D448454ECE4F54D3544550ABADAAAFDE8B
:18054000C14E44CF52BEBDBCD3474EC94E54C14253D55352C65245C92F
:180558004E50D04F53D35152D24E44CC4F47C55850C34F53D3494ED42F
:18057000414EC1544ED045454BC445454BD04F494E54CC454ED3545261
:1805880024D6414CC15343C3485224C8455824C2494E24CC4546542427
:1805A000D24947485424CD49442480A50BA20A7D0FF20C840EB911B32E
:1805B8000E090DAF0C920C810D6B0B9E0CCD0CF40CA30BF216630DE41D
:1805D0000BF81697134117891EF40C6F1E621E671E9F1F04310731A5EF
:1805E8000DD10B170A4C0CF40CF40C0F08792B1B795F177C9D187CFE29
:18060000187F4C1C5012114611114E46534E52474F4446434F564F4DDD
:18061800554C425344442F304944544D4F534C535354434E55464D4FCF
:180630004858424EC3FA03C3220CD300C9D6006F7CDE006778DE004792
:180648003E00C9000000354ACA99391C76982295B3980ADD479853D162
:1806600099990A1A9F9865BCCD98D6773E9852C74F80DB00C901FF1CA4
:1806780000001400140000000000C34809C30000C30000C300000D32A6
:18069000FEFFAA31204572726F720020696E20004F6B0D0A00004272B4
:1806A80065616B00210400397E23FE81C04E234623E569607AB3EBCA61
:1806C000C606EBCDCB09010D00E1C809C3B006CDE906C5E3C1CDCB09CB
:1806D8007E02C80B2BC3D506E52A8A31060009093EE53ED0956F3EFF9A
:1806F0009CDAF8066739E1D81E0CC317072A7931220C311E02011E1494
:18070800011E00011E12011E22011E0A011E18CD350832F530CDF60DB7
:18072000210A06573E3FCDDC09197ECDDC09CD5B0BCDDC09219406CD54
:18073800A1142A0C3111FEFFCDCB09CA67037CA53CC43C1B3EC1AF3252
:18075000F530CDF60D21A006CDA11421FFFF220C31CD4809DA5B07CDAE
:180768005B0B3C3DCA5B07F5CD270CD5CD5F0847D1F1D23B0BD5C5AF06
:18078000327C31CD5B0BB7F5CDEF07DA9407F1F5CAC80CB7C5D2AB07E7
:18079800EB2A86311A020313CDCB09C29C076069228631D1F1CAD2073E
:1807B0002A8631E3C109E5CDCF06E1228631EB74D123237323722311B0
:1807C80011311A772313B7C2CA07CD1B0823EB626B7E23B6CA5B072355
:1807E0002323AFBE23C2E307EB732372C3D7072A0E31444D7E23B62B6F
:1807F800C823237E23666FCDCB0960697E23666F3FC83FD0C3F207C0F3
:180810002A0E31AF772377232286312A0E312B227E312A5F31227331C6
:18082800AFCD6B0B2A8631228831228A31C12A0A31F9216331226131A5
:18084000AF6F67228431327B31228E31E5C52A7E31C93E3FCDDC093ECC
:1808580020CDDC09C3FE30AF325E310E051111317EFE20CAE70847FE55
:1808700022CA0709B7CA0E093A5E31B77EC2E708FE3F3E9ECAE7087EDD
:18088800FE30DA9208FE3CDAE708D5118B04C501E308C5067F7EFE6166
:1808A000DAAB08FE7BD2AB08E65F774EEB23B6F2AD08047EE67FC8B9D8
:1808B800C2AD08EBE5131AB7FADF084F78FE88C2CE08CD5B0B2B237E38
:1808D000FE61DAD708E65FB9CABD08E1C3AB0848F1EBC9EB79C1D1230E
:1808E80012130CD63ACAF508FE49C2F808325E31D654C26808477EB74E
:18090000CA0E09B8CAE70823120C13C3FE082110311213121312C93AAF
:18091800F430B73E0032F430C22B0905CA4809CDDC093E052BCA3F0910
:180930007ECDDC09C35109052BCDDC09C25109CDDC09CD030EC34809C0
:180948002111310601AF32F430CD060A4FFE7FCA17093AF430B7CA6A4C
:18096000093E00CDDC09AF32F43079FE07CAAE09FE03CC030E37C8FEA7
:180978000DCAFE0DFE15CA4209FE40CA3F09FE5FCA3709FE08CA370996
:18099000FE12C2A909C5D5E53600CDB31F211131CDA114E1D1C1C3510B
:1809A80009FE20DA510978FE493E07D2C3097971327C312304CDDC0998
:1809C000C35109CDDC093E08C3BD097C92C07D93C97EE3BE23E3CA5B90
:1809D8000BC30307F53AF530B7C2D614F1C5F5FE20DA000A3AF2304728
:1809F0003A5B3104CAFC0905B8CC030E3C325B31F1C1CD9C1FC9CD6092
:180A08001EE67FFE0FC03AF5302F32F530AFC9CD270CC0C1CDEF07C520
:180A2000CD6D0AE14E23462378B1CA4E07CD760ACD860BC5CD030E5ECB
:180A3800235623E5EBCD441B3E20E1CDDC097EB723CA230AF2430AD6B9
:180A50007F4F118C041A13B7F2550A0DC2550AE67FCDDC091A13B7F2CF
:180A68005F0AC3460AE52AF83022F630E1C9E5D52AF63011FFFFED5A71
:180A800022F630D1E1F0E52AF83022F630CD601EFE03CA990AE1C37622
:180A98000A2AF83022F630C3FD033E64327B31CD090DC1E5CDF20C22E9
:180AB000773121020039CDB006D1C2D20A09D52B562B5E2323E52A7784
:180AC80031CDCB09E1C2B60AD1F9EB0E08CDE006E52A7731E3E52A0CAE
:180AE00031E3CDCB0FCDD109A6CDC80FE5CDF619E1C5D5010081515AE9
:180AF8007EFEAB3E01C20E0BCD5B0BCDC80FE5CDF619CDAA19E1C5D502
:180B1000F533E52A7E31E30681C533CD860B227E317EFE3ACA3B0BB7D9
:180B2800C20307237E23B6CAAD0B235E2356EB220C31EBCD5B0B111B5F
:180B40000BD5C8D680DA090DFE25D20307074F0600EB21AB05094E231E
:180B580046C5EB237EFE3AD0FE20CA5B0BFE303F3C3DC9EB2A0E31CACB
:180B7000800BEBCD270CE5CDEF076069D1D2C80C2B228C31EBC9DFC8AA
:180B8800D7FE1B2811FE03280DFE13C0D7FE11C8FE03280718F63EFFFC
:180BA00032FD30C0F6C0227E3121F6FFC12A0C31F57DA43CCAC00B2250
:180BB80082312A7E31228431AF32F530CDF60DF121A606C23707C34E1D
:180BD000072A84317CB51E20CA1707EB2A8231220C31EBC9CD2917C028
:180BE80032F130C9E52AFA3006004F0922FA30E1C97EFE41D8FE5B3F1F
:180C0000C9CD5B0BCDC80FCDAA19FA220C3A9731FE90DA521A0180909D
:180C1800110000E5CD251AE151C81E08C317072B110000CD5B0BD0E59D
:180C3000F5219819CDCB09DA0307626B19291929F1D6305F160019EB9F
:180C4800E1C32B0CCA1F08CD040C2BCD5B0BE52A5F31CA6F0CE1CDD12A
:180C6000092CD5CD040C2BCD5B0BC20307E3EB7D935F7C9A57DAF806E9
:180C7800E52A863101280009CDCB09D2F806EB220A31E1225F31E1C37C
:180C90001F08CA1B08CD1F08011B0BC3AE0C0E03CDE006C1E5E52A0C1B
:180CA80031E33E8CF533C5CD270CCDF40CE52A0C31CDCB09E123DCF2DD
:180CC00007D4EF0760692BD81E0EC31707C016FFCDAC06F9FE8C1E0479
:180CD800C21707E1220C31237CB5C2EC0C3A7C31B7C24D07211B0BE3F8
:180CF0003EE1013A0E0006007948477EB7C8B8C823FE22CAF80CC3FB2A
:180D08000CCDBE11CDD109B4D53A5D31F5CDDA0FF1E3227E311FCDCD2A
:180D20000FCA5C0DE52A9431E523235E23562A0E31CDCB09D24B0D2A45
:180D38000A31CDCB09D1D2530D216F31CDCB09D2530D3ED1CD0216EB51
:180D5000CD3B14CD0216E1CD051AE1C9E5CD021AD1E1C9CD29177E47F8
:180D6800FE8CCA720DCDD109882B4B0D78CA430BCD280CFE2CC0C3733D
:180D80000DCDDA0F7EFE88CA8F0DCDD109A92BCDCB0FCDAA19CAF40CB2
:180D9800CD5B0BDAAF0CC3420B2BCD5B0BCA030EC8FEA5CA360EFEA813
:180DB000CA360EE5FE2CCA1F0EFE3BCA590EC1CDDA0FE53A5D31B7C210
:180DC800EF0DCD4F1BCD5F1436202A9431342A94313AF2304704CAEBDC
:180DE0000D043A5B31863DB8D4030ECDA414AFC4A414E1C3A10D3A5B2D
:180DF80031B7C8C3030E36002110313E0DCDDC093E0ACDDC09AF325B94
:180E1000313AF1303DC8F5AFCDDC09F1C3140E3AF330473A5B31B8D417
:180E2800030ED2590ED60ED22D0E2FC34E0EF5CD2617CDD109292BF13E
:180E4000D6A8E5CA490E3A5B312F83D2590E3C473E20CDDC0905C252B9
:180E58000EE1CD5B0BC3A80D3F5265646F2066726F6D207374617274FD
:180E70000D0A003A7D31B7C2FD06C121600ECDA114C34E08CD0C147E99
:180E8800FE223E0032F530C29E0ECD6014CDD1093BE5CDA4143EE5CDB2
:180EA0005208C1DAAA0B237EB72BC5CAF10C362CC3B80EE52A8C31F6D4
:180EB800AF327D31E3C3C40ECDD1092CCDBE11E3D57EFE2CCAEC0E3A4E
:180ED0007D31B7C2590F3E3FCDDC09CD5208D1C1DAAA0B237EB72BC5BC
:180EE800CAF10CD53A5D31B7CA160FCD5B0B5747FE22CA0A0F3A7D312C
:180F0000B757CA070F163A062C2BCD6314EB21210FE3D5C3240DCD5BEA
:180F18000BCDB11AE3CD021AE12BCD5B0BCA2D0FFE2CC2730EE32BCDC5
:180F30005B0BC2C00ED13A7D31B7EBC2810BD5B621480FC4A114E1C9E4
:180F48003F45787472612069676E6F7265640D0A00CDF20CB7C2720F6A
:180F6000237E23B61E06CA1707235E2356EB227931EBCD5B0BFE83C2E1
:180F7800590FC3EC0E110000C4BE11227E31CDAC06C20907F9D57E2307
:180F9000F5D5CDE819E3E5CD5517E1CD021AE1CDF919E5CD251AE1C193
:180FA80090CDF919CAB80FEB220C316960C3170BF92A7E317EFE2CC2FD
:180FC0001B0BCD5B0BCD800FCDDA0FF6373A5D318FB7E8C31507CDD10E
:180FD80009282B1600D50E01CDE006CD51102280312A8031C178FE786D
:180FF000D4CB0F7E1600D6B3DA1210FE03D21210FE0117AABA57DA037F
:1810080007227531CD5B0BC3F60F7AB7C239117E227531D6ACD8FE0724
:18102000D05F3A5D313DB37BCA971507835F21F505197856BAD023CD7B
:18103800CB0FC501E90FC5434ACDDB1958514E234623C52A7531C3DD3D
:181050000FAF325D31CD5B0B1E24CA1707DAB11ACDF90BD2B810FE2679
:181068002012CD5B0BFE48CAF51EFE42CA651F1E02CA1707FEACCA518D
:1810800010FE2ECAB11AFEADCAA710FE22CA6014FEAACA9911FEA7CA72
:18109800C413D6B6D2C910CDD60FCDD10929C9167DCDDD0F2A8031E5DB
:1810B000CDD319CDCB0FE1C9CDBE11E5EB2294313A5D31B7CCE819E19E
:1810C800C90600074FC5CD5B0B79FE31DAF010CDD60FCDD1092CCDCC53
:1810E0000FEB2A9431E3E5EBCD2917EBE3C3F810CD9F10E311B310D5AE
:1810F800015404094E236669E915FEADC8FE2DC814FE2BC8FEACC82B38
:18111000C9F6AFF5CDCB0FCD0D0CF1EBC1E3EBCDEB19F5CD0D0CF1C10E
:1811280079218213C23411A34F78A2E9B34F78B2E9214B113A5D311F0B
:181140007A175F166478BAD0C33A104D1179B71FC1D1F5CDCD0F218F91
:1811580011E5CA251AAF325D31D5CDE4157E23234E2346D1C5F5CDE8BB
:1811700015CDF919F157E17BB2C87AD601D8AFBB3CD0151D0ABE230396
:18118800CA77113FC3B5193C8FC1A0C6FF9FC3BC19165ACDDD0FCDCB44
:1811A0000FCD0D0C7B2F4F7A2FCD8213C1C3E90F2BCD5B0BC8CDD109F5
:1811B8002C01B011C5F6AF325C3146CDF90BDA0307AF4F325D31CD5B27
:1811D0000BDADA11CDF90BDAE7114FCD5B0BDADB11CDF90BD2DB11D6E7
:1811E80024C2F6113C325D310F814FCD5B0B3A7B313DCAA312F2061248
:181200007ED628CA7B12AF327B31E550592A8E31CDCB09119031CAEBD7
:18121800182A8831EB2A8631CDCB09CA3912799623C22E12789623CA12
:181230006D1223232323C32012E1E3D511BB10CDCB09D1CA7012E3E5AB
:18124800C50106002A8A31E509C1E5CDCF06E1228A3160692288312B1A
:181260003600CDCB09C25F12D173237223EBE1C9329731219F06229465
:1812780031E1C9E52A5C31E357D5C5CD010CC1F1EBE3E5EB3C577EFEDA
:181290002CCA8112CDD10929228031E1225C311E00D511E5F52A8831C9
:1812A8003E19EB2A8A31EBCDCB09CADB127EB923C2BD127EB8235E23FF
:1812C0005623C2A9123A5C31B7C20C07F1444DCAEB1896CA39131E10A4
:1812D800C31707110400F1CA220C712370234FCDE00623232275317177
:1812F000233A5C311779010B00D2FE12C10371237023F5E5CD961AEB51
:18130800E1F13DC2F612F5424BEB19DAF806CDE906228A312B3600CDCF
:18132000CB09C21C1303572A75315EEB2909EB2B2B73237223F1DA5DB7
:1813380013474F7E2316E15E235623E3F5CDCB09D2D612E5CD961AD1FC
:1813500019F13D444DC23E132929C109EB2A8031C92A8A31EB210000FE
:18136800393A5D31B7CA7D13CDE415CDE4142A0A31EB2A73317D934F53
:181380007C9A41501E00215D31730690C3C1193A5B3147AFC38313CD59
:181398001A14CD0C1401F20CC5D5CDD10928CDBE11E5EB2B562B5EE163
:1813B000CDCB0FCDD10929CDD109B4444DE3712370C35914CD1A14D5DB
:1813C800CD9F10CDCB0FE35E2356237AB3CA0F077E23666FE52A8E31BC
:1813E000E3228E312A9231E52A9031E5219031D5CD021AE1CDC80F2B3F
:1813F800CD5B0BC20307E1229031E1229231E1228E31E1C9E52A0C319C
:18141000237CB5E1C01E16C31707CDD109A73E80327B31B647CDC31132
:18142800C3CB0FCDCB0FCD4F1BCD5F14CDE415013F16C57E2323E5CD9A
:18144000BA14E14E2346CD5314E56FCDD715D1C9CDBA14216F31E5779B
:181458002323732372E1C92B062250E50EFF237E0CB7CA7514BACA753F
:1814700014B8C26614FE22CC5B0BE323EB79CD5314116F312A613122DD
:1814880094313E01325D31CD051ACDCB09226131E17EC01E1EC317070B
:1814A00023CD5F14CDE415CDF9191C1DC80ACDDC09FE0DCC0D0E03C3B7
:1814B800AB14B70EF1F52A0A31EB2A73312F4F06FF0923CDCB09DAD892
:1814D0001422733123EBF1C9F11E1ACA1707BFF501BC14C52A5F31222B
:1814E8007331210000E52A0A31E5216331EB2A6131EBCDCB0901F51406
:18150000C249152A8631EB2A8831EBCDCB09CA1C157E2323B7CD4C15D4
:18151800C30615C1EB2A8A31EBCDCB09CA7215CDF9197BE509B7F21B63
:1815300015227531E14E0600090923EB2A7531EBCDCB09CA1C15013BDE
:1815480015C5F6807E23235E235623F0B7C8444D2A7331CDCB09606945
:18156000D8E1E3CDCB09E3E56069D0C1F1F1E5D5C5C9D1E17DB4C82B14
:18157800462B4EE52B2B6E26000950592B444D2A7331CDD206E1712377
:181590007069602BC3E714C5E52A9431E3CD5110E3CDCC0F7EE52A94CB
:1815A80031E5861E1CDA1707CD5014D1CDE815E3CDE715E52A7131EB49
:1815C000CDCE15CDCE1521E60FE3E5C38114E1E37E23234E23466F2CA3
:1815D8002DC80A120313C3D815CDCC0F2A9431EBCD0216EBC0D5505994
:1815F0001B4E2A7331CDCB09C200164709227331E1C92A61312B462B1B
:181608004E2B2BCDCB09C0226131C9019213C5CDE115AF57325D317ED6
:18162000B7C9019213C5CD1716CA220C23235E23561AC93E01CD501465
:18163800CD2C172A713173C1C38114CDDC16AFE34FE57EB8DA511678BE
:18165000110E00C5CDBA14C1E1E5232346236668060009444DCD53142B
:181668006FCDD715D1CDE815C38114CDDC16D1D51A90C34716EB7ECDEA
:18168000E1160405CA220CC51EFFFE29CA9616CDD1092CCD2917CDD15D
:181698000929F1E3014916C53DBE0600D04F7E91BB47D843C9CD171600
:1816B000CACA175F23237E23666FE5194672E3C57EFE24C2CB16CDF5F9
:1816C8001E180DFE25C2D516CD651F1803CDB11AC1E170C9EBCDD10986
:1816E00029C1D1C543C9CD2C1732EF30CDEE30C39213CD1617C3B6300F
:1816F800CD1617F51E002BCD5B0BCA0C17CDD1092CCD2917C1CDEE30F6
:18171000ABA0CA0D17C9CD291732EF3032B730CDD1092CC32917CD5B4A
:181728000BCDC80FCD070C7AB7C2220C2BCD5B0B7BC9CD0D0C1AC39202
:1817400013CDC80FCD0D0CD5CDD1092CCD2917D112C921281CCDF9194F
:18175800C36417CDF91921C1D1CDD31978B7C83A9731B7CAEB1990D210
:181770007E172F3CEBCDDB19EBCDEB19C1D1FE19D0F5CD101A67F1CD6F
:181788002918B4219431F2A417CD0918D2EA172334CA12072E01CD3F8B
:1817A00018C3EA17AF90477E9B5F237E9A57237E994FDC15186863AFB9
:1817B8004779B7C2D7174A54656F78D608FEE0C2B817AF329731C90544
:1817D000297A1757798F4FF2CF17785C45B7CAEA172197318677D2CAA4
:1817E80017C878219731B7FCFC1746237EE680A94FC3EB191CC014C027
:181800000CC00E8034C0C312077E835F237E8A57237E894FC921983198
:181818007E2F77AF6F90477D9B5F7D9A577D994FC90600D608DA38187E
:18183000435A510E00C32B18C6096FAF2DC8791F4F7A1F577B1F5F7874
:181848001F47C33B180000008103AA561980F122768045AA3882CDAAC6
:1818600019B7EA220C2197317E01358011F30490F570D5C5CD6417C1CB
:18187800D104CD0019214D18CD5B17215118CDF21C018080110000CD94
:181890006417F1CD251B01318011187221C1D1CDAA19C82E00CD6819F3
:1818A8007932A631EB22A731010000505821B517E521C118E5E52194CD
:1818C000317E23B7CAED18E52E081F6779D2DB18E52AA73119EBE13AD3
:1818D800A631891F4F7A1F577B1F5F781F472D7CC2CA18E1C9435A517E
:1818F0004FC9CDDB19012084110000CDEB19C1D1CDAA19CA06072EFF5A
:18190800CD681934342B7E32C2302B7E32BE302B7E32BA3041EBAF4F8C
:18192000575F32C530E5C57DCDB930DE003FD2381932C530F1F137D2A3
:18193800C1E1793C3D1FFAEB17177B175F7A175779174F297817473AE0
:18195000C5301732C53079B2B3C22519E521973135E1C22519C31207AE
:1819680078B7CA8C197D219731AE80471FA878F28B19C68077CAEB188F
:18198000CD101A772BC9CDAA192FE1B7E1F2CA17C31207CDF61978B7FB
:18199800C8C602DA120747CD641721973134C0C312073A9731B7C83AB1
:1819B0009631FE2F179FC03CC9CDAA1906881100002197314F700600D3
:1819C80023368017C3B217CDAA19F02196317EEE8077C9EB2A9431E33A
:1819E000E52A9631E3E5EBC9CDF919EB2294316069229631EBC92194D1
:1819F800315E2356234E234623C911943106041A77132305C2071AC9B1
:181A10002196317E07371F773F1F2323777907371F4F1FAEC978B7CAB5
:181A2800AA1921B319E5CDAA1979C8219631AE79F8CD3F1A1FA9C9235F
:181A400078BEC02B79BEC02B7ABEC02B7B96C0E1E1C9474F575FB7C801
:181A5800E5CDF619CD101AAE67FC761A3E9890CD29187C17DCFC170621
:181A700000DC1518E1C91B7AA33CC00BC92197317EFE983A9431D07E59
:181A8800CD521A36987BF57917CDB217F1C921000078B1C83E1029DA8C
:181AA000D612EB29EBD2AC1A09DAD6123DC29E1AC9FE2DF5CABD1AFEA5
:181AB8002BCABD1A2BCDCA1747575F2F4FCD5B0BDA0E1BFE2ECAE91AC7
:181AD000FE45C2ED1ACD5B0BCD0111CD5B0BDA301B14C2ED1AAF935F0A
:181AE8000C0CCAC51AE57B90F4061BF2FC1AF5CDF218F13CC2F01AD182
:181B0000F1CCD319EBC9C8F5CD9319F13DC9D557788947C5E5D5CD93F0
:181B180019F1D630CD251BE1C1D1C3C51ACDDB19CDBC19C1D1C3641750
:181B30007B0707830786D6305FC3DB1AE5219B06CDA114E1EBAF0698A5
:181B4800CDC11921A014E5219931E5CDAA193620F25D1B362D23363018
:181B6000CA131CE5FCD319AFF5CD191C01439111F84FCD251AB7E28AA5
:181B78001BF1CD071BF5C36C1BCDF218F13CF5CD191CCD52173CCD528F
:181B90001ACDEB19010603F1813CFAA61BFE08D2A61B3C473E023D3D09
:181BA800E1F5112C1C05C2B71B362E2336302305362ECC001AC5E5D57F
:181BC000CDF619E1062F047B965F237A9E5723799E4F2B2BD2C61BCDB6
:181BD800091823CDEB19EBE17023C10DC2B71B05CAF71B2B7EFE30CA9D
:181BF000EB1BFE2EC4001AF1CA161C364523362BF2071C362D2F3C06F8
:181C08002F04D60AD2091CC63A237023772371E1C901749411F723CD4E
:181C2000251AB7E1E2811BE900000080A08601102700E8030064000041
:181C38000A000001000021D319E3E9CDDB1921281CCDE819C1D1CDAAB3
:181C50001978CA911CF25C1CB7CA0607B7CACB17D5C579F67FCDF619B5
:181C6800F2791CD5C5CD7D1AC1D1F5CD251AE17C1FE1229631E122946F
:181C800031DC3E1CCCD319D5C5CD5E18C1D1CD9F18CDDB1901388111AE
:181C98003BAACD9F183A9731FE88D28619CD7D1AC680C602DA8619F5F2
:181CB000214D18CD5517CD9618F1C1D1F5CD6117CDD31921D11CCD0190
:181CC8001D110000C14AC39F1808402E9474704F2E776E02887AE6A077
:181CE0002A7C50AAAA7EFFFF7F7F0000808100000081CDDB19119D181F
:181CF800D5E5CDF619CD9F18E1CDDB197E23CDE81906F1C1D13DC8D546
:181D1000C5F5E5CD9F18E1CDF919E5CD6417E1C30A1DCDAA1921C93036
:181D2800FA831D21EA30CDE81921C930C886E6070600772387874F09A5
:181D4000CDF919CD9F183AC8303CE6030600FE018832C83021871D87CE
:181D5800874F09CD5517CDF6197B59EE4F4F36802B46368021C73034F6
:181D70007ED6ABC27A1D770C151CCDB51721EA30C3021A772B772B77E1
:181D8800C35E1D68B1466899E9926910D1756821E11DCD5517CDDB19EA
:181DA00001498311DB0FCDEB19C1D1CD0019CDDB19CD7D1AC1D1CD6135
:181DB8001721E51DCD5B17CDAA1937F2CD1DCD5217CDAA19B7F5F4D3BE
:181DD0001921E51DCD5517F1D4D31921E91DC3F21CDB0F498100000029
:181DE8007F05BAD71E866426998758342387E05DA586DA0F4983CDDB85
:181E000019CD9D1DC1E1CDDB19EBCDEB19CD971DC3FE18CDAA19FC3EE7
:181E18001CFCD3193A9731FE81DA301E0100815159CD0019215B17E57B
:181E3000213A1ECDF21C21E11DC9094AD73B78026E847BFEC12F7C7434
:181E4800319A7D843D5A7DC87F917EE4BB4C7E6CAAAA7F00000081C95A
:181E6000D7C93E0CC39C1FCD29177B32F230C9CDC80FCD0D0CED53F69D
:181E780030ED53F830C9CD0D0CD5E146237EC38313CDC80FCD0D0CD5B6
:181E9000CDD1092CCDC80FCD0D0CE3732372E1C9CDCB0FCD0D0CC521D5
:181EA80099317AFE00280CCDD81E78FE302802702371237BCDD81E7A3A
:181EC000FE00200578FE30280270237123AF772377C1219931C331147C
:181ED80047E60FFE0A3802C607C6304F780F0F0F0FE60FFE0A3802C6B1
:181EF00007C63047C9EB210000CD0E1FDA2E1F1805CD0E1F381F2929E0
:181F08002929B56F18F3131AFE20CA0E1FD630D8FE0A3805D607FE0AF6
:181F2000D8FE103FC9EB7A4BE5CD8213E1C91E26C31707CDCB0FCD0D74
:181F38000CC521993106110578FE012808CB13CB1230F41804CB13CB6E
:181F5000123E30CE0077230520F3AF772377C1219931C33114EB2100F9
:181F680000CD821FDA901FD63029B56FCD821F30F6EB7A4BE5CD82138C
:181F8000E1C9131AFE20CA821FFE30D8FE323FC91E28C31707DD21FF87
:181F9800FFC36703C30800C300003E0032FD30C36E03ED45F5A0C1B866
:091FB0003E00C9CDDC09C3030E9B
:1802700030D38AC9F5C5E5DB89FE8020FA0603DB89FE8020FA10F8CDAB
:1802880064023E00D3890E040680DB89FEE020FAC50602DB89FEE0203B
:1802A000FA10F8C1DB88C5060A10FEC177230520E10D20DC0600DB8969
:1802B800FE8020FA10F8E1C1F1C943502F4D20426F6F7420524F4D2041
:1802D000322E300D0A492D5374727420496E7472700D0A582D426F6F63
:1802E800742043502F4D0D0A3A6E6E6E6E2D4C6F6164204920726372D5
:18030000640D0A476E6E6E6E2D52206C6F630D0A000D0A436F6C6420BE
:180318006F72207761726D3F0D0A00436865636B73756D206572726FB4
:18033000720D0A000C5072657373205B73706163655D20746F20616348
:1803480074697661746520636F6E736F6C652E0D0A00436F6D706C6558
:1803600074650D0A00211103CD3701CD4501C8E65FFE43CA7C03FE575C
:18037800CA7F03C9C38203C32004DD210000C38D03330CA91321B030DC
:18039000F9C3C81F115A06066321B0301A77231305C29C03F9CD5B0881
:1803A800CD290E325A3132A931216F04CDC714CD7808CD810BB7C2D63F
:1803C00003210D32237CB5CAE8037E472F77BE70CAC403C3E803CD4DC7
:1803D8000CB7C22907EB2B3ED94677BE70C2B1032B110C32CDF109DAAF
:1803F000B10311CEFF225F3119220A31CD36082A0A3111EFFF1911A9F9
:18040800317D936F7C9A67E5213804CDC714E1CD6A1B212904CDC7149C
:18042000311631CD5B08C3740720427974657320667265650D0A0000DE
:180438005A38302042415349432056657220342E37620D0A436F70794E
:180450007269676874202843292031393738206279204D6963726F7341
:180468006F66740D0A00004D656D6F727920746F7000DF19A31AF5196D
:18048000B33087130C17B513691C481D8418B71CBD1DC31D241E391E50
:180498006017A41E013139165114D31648165916C61E591F69169916ED
:1804B000A316C54E44C64F52CE455854C4415441C94E505554C4494DFA
:1804C800D2454144CC4554C74F544FD2554EC946D24553544F5245C773
:1804E0004F535542D2455455524ED2454DD3544F50CF5554CF4ECE5589
:1804F8004C4CD7414954C44546D04F4B45C44F4B45D3435245454ECCF2
:18051000494E4553C34C53D749445448CD4F4E49544F52D34554D24517
:18052800534554D052494E54C34F4E54CC495354C34C454152C34C4F0D
:180540004144C353415645CE4557D4414228D44FC64ED3504328D44862
:18055800454ECE4F54D3544550ABADAAAFDEC14E44CF52BEBDBCD34777
:180570004EC94E54C14253D55352C65245C94E50D04F53D35152D24E1E
:1805880044CC4F47C55850C34F53D3494ED4414EC1544ED045454BC44A
:1805A00045454BD04F494E54CC454ED3545224D6414CC15343C3485251
:1805B80024C8455824C2494E24CC45465424D24947485424CD49442492
:1805D00080CB0BC80AA30F180DAA0EDF11D90E2F0DD50CB80CA70D915F
:1805E8000BC40CF30C1A0DC90B1817890D0A0C1E17BD136717AF1E1AE1
:180600000D951E881E8D1EC51F04310731CB0DF70B3D0A720C1A0D1AA0
:180618000D350879511B7985177CC3187C24197F721C50381146371142
:180630004E46534E52474F4446434F564F4D554C425344442F304944DD
:18064800544D4F534C535354434E55464D4F4858424EC32004C3480C1B
:18066000D300C9D6006F7CDE006778DE00473E00C9000000354ACA995A
:18067800391C76982295B3980ADD479853D199990A1A9F9865BCCD9808
:18069000D6773E9852C74F80DB00C901FF1C000014001400000000005F
:1806A800C36E09C30000C30000C300000D32FEFFAA31204572726F7276
:1806C0000020696E20004F6B0D0A0000427265616B00210400397E2356
:1806D800FE81C04E234623E569607AB3EBCAEC06EBCDF109010D00E1CE
:1806F000C809C3D606CD0F07C5E3C1CDF1097E02C80B2BC3FB06E52A1E
:180708008A31060009093EE53ED0956F3EFF9CDA1E076739E1D81E0C76
:18072000C33D072A7931220C311E02011E14011E00011E12011E2201A2
:180738001E0A011E18CD5B0832F530CD1C0E213006573E3FCD020A19AF
:180750007ECD020ACD810BCD020A21BA06CDC7142A0C3111FEFFCDF14C
:1807680009CA8D037CA53CC4621B3EC1AF32F530CD1C0E21C606CDC7FB
:180780001421FFFF220C31CD6E09DA8107CD810B3C3DCA8107F5CD4DF6
:180798000CD5CD850847D1F1D2610BD5C5AF327C31CD810BB7F5CD15B8
:1807B00008DABA07F1F5CAEE0CB7C5D2D107EB2A86311A020313CDF102
:1807C80009C2C2076069228631D1F1CAF8072A8631E3C109E5CDF5061D
:1807E000E1228631EB74D12323732372231111311A772313B7C2F0071C
:1807F800CD410823EB626B7E23B6CA8107232323AFBE23C20908EB7325
:180810002372C3FD072A0E31444D7E23B62BC823237E23666FCDF109AD
:1808280060697E23666F3FC83FD0C31808C02A0E31AF772377232286CC
:18084000312A0E312B227E312A5F31227331AFCD910B2A8631228831B6
:18085800228A31C12A0A31F9216331226131AF6F67228431327B3122C7
:180870008E31E5C52A7E31C93E3FCD020A3E20CD020AC3FE30AF325EA8
:18088800310E051111317EFE20CA0D0947FE22CA2D09B7CA34093A5E88
:1808A00031B77EC20D09FE3F3E9ECA0D097EFE30DAB808FE3CDA0D0999
:1808B800D511B104C5010909C5067F7EFE61DAD108FE7BD2D108E65F72
:1808D000774EEB23B6F2D308047EE67FC8B9C2D308EBE5131AB7FA0502
:1808E800094F78FE88C2F408CD810B2B237EFE61DAFD08E65FB9CAE3D6
:1809000008E1C3D10848F1EBC9EB79C1D12312130CD63ACA1B09FE49DE
:18091800C21E09325E31D654C28E08477EB7CA3409B8CA0D0923120C3F
:1809300013C324092110311213121312C93AF430B73E0032F430C25169
:180948000905CA6E09CD020A3E052BCA65097ECD020AC37709052BCD32
:18096000020AC27709CD020ACD290EC36E092111310601AF32F430CDDE
:180978002C0A4FFE7FCA3D093AF430B7CA90093E00CD020AAF32F430C1
:1809900079FE07CAD409FE03CC290E37C8FE0DCA240EFE15CA6809FED4
:1809A80040CA6509FE5FCA5D09FE08CA5D09FE12C2CF09C5D5E536009D
:1809C000CDD91F211131CDC714E1D1C1C37709FE20DA770978FE493E24
:1809D80007D2E9097971327C312304CD020AC37709CD020A3E08C3E36B
:1809F000097C92C07D93C97EE3BE23E3CA810BC32907F53AF530B7C204
:180A0800FC14F1C5F5FE20DA260A3AF230473A5B3104CA220A05B8CC07
:180A2000290E3C325B31F1C1CDC21FC9CD861EE67FFE0FC03AF5302F33
:180A380032F530AFC9CD4D0CC0C1CD1508C5CD930AE14E23462378B133
:180A5000CA7407CD9C0ACDAC0BC5CD290E5E235623E5EBCD6A1B3E200F
:180A6800E1CD020A7EB723CA490AF2690AD67F4F11B2041A13B7F27B26
:180A80000A0DC27B0AE67FCD020A1A13B7F2850AC36C0AE52AF83022CB
:180A9800F630E1C9E5D52AF63011FFFFED5A22F630D1E1F0E52AF830F5
:180AB00022F630CD861EFE03CABF0AE1C39C0A2AF83022F630C3230413
:180AC8003E64327B31CD2F0DC1E5CD180D22773121020039CDD606D155
:180AE000C2F80A09D52B562B5E2323E52A7731CDF109E1C2DC0AD1F93B
:180AF800EB0E08CD0607E52A7731E3E52A0C31E3CDF10FCDF709A6CD35
:180B1000EE0FE5CD1C1AE1C5D5010081515A7EFEAB3E01C2340BCD818B
:180B28000BCDEE0FE5CD1C1ACDD019E1C5D5F533E52A7E31E30681C5B2
:180B400033CDAC0B227E317EFE3ACA610BB7C22907237E23B6CAD30B5E
:180B5800235E2356EB220C31EBCD810B11410BD5C8D680DA2F0DFE2574
:180B7000D22907074F0600EB21D105094E2346C5EB237EFE3AD0FE20F6
:180B8800CA810BFE303F3C3DC9EB2A0E31CAA60BEBCD4D0CE5CD1508A1
:180BA0006069D1D2EE0C2B228C31EBC9DFC8D7FE1B2811FE03280DFE15
:180BB80013C0D7FE11C8FE03280718F63EFF32FD30C0F6C0227E312162
:180BD000F6FFC12A0C31F57DA43CCAE60B2282312A7E31228431AF327D
:180BE800F530CD1C0EF121CC06C25D07C374072A84317CB51E20CA3D3C
:180C000007EB2A8231220C31EBC9CD4F17C032F130C9E52AFA300600AC
:180C18004F0922FA30E1C97EFE41D8FE5B3FC9CD810BCDEE0FCDD019A7
:180C3000FA480C3A9731FE90DA781A018090110000E5CD4B1AE151C82F
:180C48001E08C33D072B110000CD810BD0E5F5219819CDF109DA290785
:180C6000626B19291929F1D6305F160019EBE1C3510CCA4508CD2A0CA0
:180C78002BCD810BE52A5F31CA950CE1CDF7092CD5CD2A0C2BCD810BA0
:180C9000C22907E3EB7D935F7C9A57DA1E07E52A863101280009CDF1FB
:180CA80009D21E07EB220A31E1225F31E1C34508CA4108CD45080141F9
:180CC0000BC3D40C0E03CD0607C1E5E52A0C31E33E8CF533C5CD4D0CD1
:180CD800CD1A0DE52A0C31CDF109E123DC1808D4150860692BD81E0E14
:180CF000C33D07C016FFCDD206F9FE8C1E04C23D07E1220C31237CB52C
:180D0800C2120D3A7C31B7C2730721410BE33EE1013A0E000600794899
:180D2000477EB7C8B8C823FE22CA1E0DC3210DCDE411CDF709B4D53A7C
:180D38005D31F5CD0010F1E3227E311FCDF30FCA820DE52A9431E5237B
:180D5000235E23562A0E31CDF109D2710D2A0A31CDF109D1D2790D219B
:180D68006F31CDF109D2790D3ED1CD2816EBCD6114CD2816E1CD2B1A6F
:180D8000E1C9E5CD281AD1E1C9CD4F177E47FE8CCA980DCDF709882BD1
:180D98004B0D78CA690BCD4E0CFE2CC0C3990DCD00107EFE88CAB50D4E
:180DB000CDF709A92BCDF10FCDD019CA1A0DCD810BDAD50CC3680B2BA1
:180DC800CD810BCA290EC8FEA5CA5C0EFEA8CA5C0EE5FE2CCA450EFE16
:180DE0003BCA7F0EC1CD0010E53A5D31B7C2150ECD751BCD8514362069
:180DF8002A9431342A94313AF2304704CA110E043A5B31863DB8D429FF
:180E10000ECDCA14AFC4CA14E1C3C70D3A5B31B7C8C3290E36002110A2
:180E2800313E0DCD020A3E0ACD020AAF325B313AF1303DC8F5AFCD02FC
:180E40000AF1C33A0E3AF330473A5B31B8D4290ED27F0ED60ED2530EF1
:180E58002FC3740EF5CD4C17CDF709292BF1D6A8E5CA6F0E3A5B312F38
:180E700083D27F0E3C473E20CD020A05C2780EE1CD810BC3CE0D3F5218
:180E880065646F2066726F6D2073746172740D0A003A7D31B7C2230756
:180EA000C121860ECDC714C37408CD32147EFE223E0032F530C2C40E03
:180EB800CD8614CDF7093BE5CDCA143EE5CD7808C1DAD00B237EB72BBA
:180ED000C5CA170D362CC3DE0EE52A8C31F6AF327D31E3C3EA0ECDF793
:180EE800092CCDE411E3D57EFE2CCA120F3A7D31B7C27F0F3E3FCD0275
:180F00000ACD7808D1C1DAD00B237EB72BC5CA170DD53A5D31B7CA3CAB
:180F18000FCD810B5747FE22CA300F3A7D31B757CA2D0F163A062C2BE9
:180F3000CD8914EB21470FE3D5C34A0DCD810BCDD71AE3CD281AE12BF6
:180F4800CD810BCA530FFE2CC2990EE32BCD810BC2E60ED13A7D31B7EC
:180F6000EBC2A70BD5B6216E0FC4C714E1C93F45787472612069676E07
:180F78006F7265640D0A00CD180DB7C2980F237E23B61E06CA3D0723BF
:180F90005E2356EB227931EBCD810BFE83C27F0FC3120F110000C4E409
:180FA80011227E31CDD206C22F07F9D57E23F5D5CD0E1AE3E5CD7B175D
:180FC000E1CD281AE1CD1F1AE5CD4B1AE1C190CD1F1ACADE0FEB220C23
:180FD800316960C33D0BF92A7E317EFE2CC2410BCD810BCDA60FCD00CC
:180FF00010F6373A5D318FB7E8C33B07CDF709282B1600D50E01CD06C4
:1810080007CD77102280312A8031C178FE78D4F10F7E1600D6B3DA3815
:1810200010FE03D23810FE0117AABA57DA2907227531CD810BC31C10A2
:181038007AB7C25F117E227531D6ACD8FE07D05F3A5D313DB37BCABDAF
:181050001507835F211B06197856BAD023CDF10FC5010F10C5434ACDE3
:18106800011A58514E234623C52A7531C30310AF325D31CD810B1E245D
:18108000CA3D07DAD71ACD1F0CD2DE10FE262012CD810BFE48CA1B1FCE
:18109800FE42CA8B1F1E02CA3D07FEACCA7710FE2ECAD71AFEADCACD3A
:1810B00010FE22CA8614FEAACABF11FEA7CAEA13D6B6D2EF10CDFC0FB1
:1810C800CDF70929C9167DCD03102A8031E5CDF919CDF10FE1C9CDE417
:1810E00011E5EB2294313A5D31B7CC0E1AE1C90600074FC5CD810B7920
:1810F800FE31DA1611CDFC0FCDF7092CCDF20FEB2A9431E3E5EBCD4F68
:1811100017EBE3C31E11CDC510E311D910D5017A04094E236669E915D6
:18112800FEADC8FE2DC814FE2BC8FEACC82BC9F6AFF5CDF10FCD330C6B
:18114000F1EBC1E3EBCD111AF5CD330CF1C17921A813C25A11A34F7895
:18115800A2E9B34F78B2E92171113A5D311F7A175F166478BAD0C360C6
:1811700010731179B71FC1D1F5CDF30F21B511E5CA4B1AAF325D31D5EF
:18118800CD0A167E23234E2346D1C5F5CD0E16CD1F1AF157E17BB2C847
:1811A0007AD601D8AFBB3CD0151D0ABE2303CA9D113FC3DB193C8FC17E
:1811B800A0C6FF9FC3E219165ACD0310CDF10FCD330C7B2F4F7A2FCDC5
:1811D000A813C1C30F102BCD810BC8CDF7092C01D611C5F6AF325C3153
:1811E80046CD1F0CDA2907AF4F325D31CD810BDA0012CD1F0CDA0D12B3
:181200004FCD810BDA0112CD1F0CD20112D624C21C123C325D310F81EE
:181218004FCD810B3A7B313DCAC912F22C127ED628CAA112AF327B3198
:18123000E550592A8E31CDF109119031CA11192A8831EB2A8631CDF135
:1812480009CA5F12799623C25412789623CA931223232323C34612E1C8
:18126000E3D511E110CDF109D1CA9612E3E5C50106002A8A31E509C18A
:18127800E5CDF506E1228A3160692288312B3600CDF109C28512D1738A
:18129000237223EBE1C932973121C506229431E1C9E52A5C31E357D5D7
:1812A800C5CD270CC1F1EBE3E5EB3C577EFE2CCAA712CDF709292280C3
:1812C00031E1225C311E00D511E5F52A88313E19EB2A8A31EBCDF109BB
:1812D800CA01137EB923C2E3127EB8235E235623C2CF123A5C31B7C2D9
:1812F0003207F1444DCA111996CA5F131E10C33D07110400F1CA480C0C
:18130800712370234FCD0607232322753171233A5C311779010B00D2A6
:181320002413C10371237023F5E5CDBC1AEBE1F13DC21C13F5424BEBBE
:1813380019DA1E07CD0F07228A312B3600CDF109C2421303572A75315C
:181350005EEB2909EB2B2B73237223F1DA8313474F7E2316E15E235638
:1813680023E3F5CDF109D2FC12E5CDBC1AD119F13D444DC2641329290F
:18138000C109EB2A8031C92A8A31EB210000393A5D31B7CAA313CD0AFC
:1813980016CD0A152A0A31EB2A73317D934F7C9A41501E00215D3173D7
:1813B0000690C3E7193A5B3147AFC3A913CD4014CD321401180DC5D59D
:1813C800CDF70928CDE411E5EB2B562B5EE1CDF10FCDF70929CDF7090B
:1813E000B4444DE3712370C37F14CD4014D5CDC510CDF10FE35E235654
:1813F800237AB3CA35077E23666FE52A8E31E3228E312A9231E52A90F3
:1814100031E5219031D5CD281AE1CDEE0F2BCD810BC22907E122903103
:18142800E1229231E1228E31E1C9E52A0C31237CB5E1C01E16C33D07FE
:18144000CDF709A73E80327B31B647CDE911C3F10FCDF10FCD751BCD06
:181458008514CD0A16016516C57E2323E5CDE014E14E2346CD7914E574
:181470006FCDFD15D1C9CDE014216F31E5772323732372E1C92B062253
:1814880050E50EFF237E0CB7CA9B14BACA9B14B8C28C14FE22CC810B68
:1814A000E323EB79CD7914116F312A61312294313E01325D31CD2B1A0B
:1814B800CDF109226131E17EC01E1EC33D0723CD8514CD0A16CD1F1AC3
:1814D0001C1DC80ACD020AFE0DCC330E03C3D114B70EF1F52A0A31EB62
:1814E8002A73312F4F06FF0923CDF109DAFE1422733123EBF1C9F11E1F
:181500001ACA3D07BFF501E214C52A5F31227331210000E52A0A31E56B
:18151800216331EB2A6131EBCDF109011B15C26F152A8631EB2A883187
:18153000EBCDF109CA42157E2323B7CD7215C32C15C1EB2A8A31EBCDB4
:18154800F109CA9815CD1F1A7BE509B7F24115227531E14E060009099D
:1815600023EB2A7531EBCDF109CA4215016115C5F6807E23235E235675
:1815780023F0B7C8444D2A7331CDF1096069D8E1E3CDF109E3E56069E6
:18159000D0C1F1F1E5D5C5C9D1E17DB4C82B462B4EE52B2B6E2600091B
:1815A80050592B444D2A7331CDF806E171237069602BC30D15C5E52A9B
:1815C0009431E3CD7710E3CDF20F7EE52A9431E5861E1CDA3D07CD760E
:1815D80014D1CD0E16E3CD0D16E52A7131EBCDF415CDF415210C10E3EA
:1815F000E5C3A714E1E37E23234E23466F2C2DC80A120313C3FE15CDDC
:18160800F20F2A9431EBCD2816EBC0D550591B4E2A7331CDF109C226D5
:18162000164709227331E1C92A61312B462B4E2B2BCDF109C0226131A5
:18163800C901B813C5CD0716AF57325D317EB7C901B813C5CD3D16CA17
:18165000480C23235E23561AC93E01CD7614CD52172A713173C1C3A7F8
:1816680014CD0217AFE34FE57EB8DA771678110E00C5CDE014C1E1E569
:18168000232346236668060009444DCD79146FCDFD15D1CD0E16C3A761
:1816980014CD0217D1D51A90C36D16EB7ECD07170405CA480CC51EFF4D
:1816B000FE29CABC16CDF7092CCD4F17CDF70929F1E3016F16C53DBE23
:1816C8000600D04F7E91BB47D843C9CD3D16CAF0175F23237E23666FE4
:1816E000E5194672E3C57EFE24C2F116CD1B1F180DFE25C2FB16CD8BB1
:1816F8001F1803CDD71AC1E170C9EBCDF70929C1D1C543C9CD5217325B
:18171000EF30CDEE30C3B813CD3C17C3B630CD3C17F51E002BCD810BA9
:18172800CA3217CDF7092CCD4F17C1CDEE30ABA0CA3317C9CD4F173231
:18174000EF3032B730CDF7092CC34F17CD810BCDEE0FCD2D0C7AB7C21B
:18175800480C2BCD810B7BC9CD330C1AC3B813CDEE0FCD330CD5CDF73A
:18177000092CCD4F17D112C9214E1CCD1F1AC38A17CD1F1A21C1D1CDD2
:18178800F91978B7C83A9731B7CA111A90D2A4172F3CEBCD011AEBCD7F
:1817A000111AC1D1FE19D0F5CD361A67F1CD4F18B4219431F2CA17CDB5
:1817B8002F18D210182334CA38072E01CD6518C31018AF90477E9B5F16
:1817D000237E9A57237E994FDC3B186863AF4779B7C2FD174A54656F7E
:1817E80078D608FEE0C2DE17AF329731C905297A1757798F4FF2F51721
:18180000785C45B7CA10182197318677D2F017C878219731B7FC221839
:1818180046237EE680A94FC3111A1CC014C00CC00E8034C0C338077E07
:18183000835F237E8A57237E894FC92198317E2F77AF6F90477D9B5F80
:181848007D9A577D994FC90600D608DA5E18435A510E00C35118C609C1
:181860006FAF2DC8791F4F7A1F577B1F5F781F47C361180000008103EF
:18187800AA561980F122768045AA3882CDD019B7EA480C2197317E01FA
:18189000358011F30490F570D5C5CD8A17C1D104CD2619217318CD81EA
:1818A80017217718CD181D018080110000CD8A17F1CD4B1B01318011F8
:1818C000187221C1D1CDD019C82E00CD8E197932A631EB22A73101004B
:1818D80000505821DB17E521E718E5E52194317E23B7CA1319E52E081F
:1818F0001F6779D20119E52AA73119EBE13AA631891F4F7A1F577B1F97
:181908005F781F472D7CC2F018E1C9435A514FC9CD011A0120841100C9
:1819200000CD111AC1D1CDD019CA2C072EFFCD8E1934342B7E32C2309C
:181938002B7E32BE302B7E32BA3041EBAF4F575F32C530E5C57DCDB955
:1819500030DE003FD25E1932C530F1F137D2C1E1793C3D1FFA111817EA
:181968007B175F7A175779174F297817473AC5301732C53079B2B3C2A3
:181980004B19E521973135E1C24B19C3380778B7CAB2197D219731AE07
:1819980080471FA878F2B119C68077CA1119CD361A772BC9CDD0192F57
:1819B000E1B7E1F2F017C33807CD1C1A78B7C8C602DA380747CD8A171B
:1819C80021973134C0C338073A9731B7C83A9631FE2F179FC03CC9CD31
:1819E000D01906881100002197314F70060023368017C3D817CDD01961
:1819F800F02196317EEE8077C9EB2A9431E3E52A9631E3E5EBC9CD1FD8
:181A10001AEB2294316069229631EBC92194315E2356234E234623C9E9
:181A280011943106041A77132305C22D1AC92196317E07371F773F1F90
:181A40002323777907371F4F1FAEC978B7CAD01921D919E5CDD019790D
:181A5800C8219631AE79F8CD651A1FA9C92378BEC02B79BEC02B7ABE2C
:181A7000C02B7B96C0E1E1C9474F575FB7C8E5CD1C1ACD361AAE67FC36
:181A88009C1A3E9890CD4F187C17DC22180600DC3B18E1C91B7AA33CFA
:181AA000C00BC92197317EFE983A9431D07ECD781A36987BF57917CD56
:181AB800D817F1C921000078B1C83E1029DAFC12EB29EBD2D21A09DA5C
:181AD000FC123DC2C41AC9FE2DF5CAE31AFE2BCAE31A2BCDF0174757D6
:181AE8005F2F4FCD810BDA341BFE2ECA0F1BFE45C2131BCD810BCD27E7
:181B000011CD810BDA561B14C2131BAF935F0C0CCAEB1AE57B90F42C7C
:181B18001BF2221BF5CD1819F13CC2161BD1F1CCF919EBC9C8F5CDB9C1
:181B300019F13DC9D557788947C5E5D5CDB919F1D630CD4B1BE1C1D15E
:181B4800C3EB1ACD011ACDE219C1D1C38A177B0707830786D6305FC356
:181B6000011BE521C106CDC714E1EBAF0698CDE71921C614E52199312B
:181B7800E5CDD0193620F2831B362D233630CA391CE5FCF919AFF5CD65
:181B90003F1C01439111F84FCD4B1AB7E2B01BF1CD2D1BF5C3921BCDE7
:181BA8001819F13CF5CD3F1CCD78173CCD781ACD111A010603F1813C03
:181BC000FACC1BFE08D2CC1B3C473E023D3DE1F511521C05C2DD1B36E6
:181BD8002E2336302305362ECC261AC5E5D5CD1C1AE1062F047B965F9A
:181BF000237A9E5723799E4F2B2BD2EC1BCD2F1823CD111AEBE1702305
:181C0800C10DC2DD1B05CA1D1C2B7EFE30CA111CFE2EC4261AF1CA3C3F
:181C20001C364523362BF22D1C362D2F3C062F04D60AD22F1CC63A232F
:181C38007023772371E1C901749411F723CD4B1AB7E1E2A71BE90000C1
:181C50000080A08601102700E803006400000A000001000021F919E32E
:181C6800E9CD011A214E1CCD0E1AC1D1CDD01978CAB71CF2821CB7CAA5
:181C80002C07B7CAF117D5C579F67FCD1C1AF29F1CD5C5CDA31AC1D1A2
:181C9800F5CD4B1AE17C1FE1229631E1229431DC641CCCF919D5C5CD5E
:181CB0008418C1D1CDC518CD011A013881113BAACDC5183A9731FE887A
:181CC800D2AC19CDA31AC680C602DAAC19F5217318CD7B17CDBC18F1A4
:181CE000C1D1F5CD8717CDF91921F71CCD271D110000C14AC3C5180812
:181CF800402E9474704F2E776E02887AE6A02A7C50AAAA7EFFFF7F7F3E
:181D10000000808100000081CD011A11C318D5E5CD1C1ACDC518E1CD50
:181D2800011A7E23CD0E1A06F1C1D13DC8D5C5F5E5CDC518E1CD1F1A5F
:181D4000E5CD8A17E1C3301DCDD01921C930FAA91D21EA30CD0E1A2166
:181D5800C930C886E6070600772387874F09CD1F1ACDC5183AC8303C1B
:181D7000E6030600FE018832C83021AD1D87874F09CD7B17CD1C1A7B8D
:181D880059EE4F4F36802B46368021C730347ED6ABC2A01D770C151C03
:181DA000CDDB1721EA30C3281A772B772B77C3841D68B1466899E99232
:181DB8006910D1756821071ECD7B17CD011A01498311DB0FCD111AC1DE
:181DD000D1CD2619CD011ACDA31AC1D1CD8717210B1ECD8117CDD0194A
:181DE80037F2F31DCD7817CDD019B7F5F4F919210B1ECD7B17F1D4F97F
:181E000019210F1EC3181DDB0F49810000007F05BAD71E866426998754
:181E180058342387E05DA586DA0F4983CD011ACDC31DC1E1CD011AEB55
:181E3000CD111ACDBD1DC32419CDD019FC641CFCF9193A9731FE81DA60
:181E4800561E0100815159CD2619218117E521601ECD181D21071EC988
:181E6000094AD73B78026E847BFEC12F7C74319A7D843D5A7DC87F9188
:181E78007EE4BB4C7E6CAAAA7F00000081C9D7C93E0CC3C21FCD4F1721
:181E90007B32F230C9CDEE0FCD330CED53F630ED53F830C9CD330CD554
:181EA800E146237EC3A913CDEE0FCD330CD5CDF7092CCDEE0FCD330C61
:181EC000E3732372E1C9CDF10FCD330CC52199317AFE00280CCDFE1E57
:181ED80078FE302802702371237BCDFE1E7AFE00200578FE30280270BA
:181EF000237123AF772377C1219931C3571447E60FFE0A3802C607C678
:181F0800304F780F0F0F0FE60FFE0A3802C607C63047C9EB210000CDAB
:181F2000341FDA541F1805CD341F381F29292929B56F18F3131AFE2057
:181F3800CA341FD630D8FE0A3805D607FE0AD8FE103FC9EB7A4BE5CD1C
:181F5000A813E1C91E26C33D07CDF10FCD330CC521993106110578FEAE
:181F6800012808CB13CB1230F41804CB13CB123E30CE0077230520F38C
:181F8000AF772377C1219931C35714EB210000CDA81FDAB61FD6302931
:181F9800B56FCDA81F30F6EB7A4BE5CDA813E1C9131AFE20CAA81FFEB2
:181FB00030D8FE323FC91E28C33D07DD21FFFFC38D03C30800C30000AF
:171FC8003E0032FD30C39403ED45F5A0C1B83E00C9CD020AC3290EF1
:00000001FF

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,290 +1,301 @@
0001 0000 ;==================================================================================
0002 0000 ; Contents of this file are copyright Grant Searle
0003 0000 ; HEX routine from Joel Owens.
0004 0000 ;
0005 0000 ; You have permission to use this for NON COMMERCIAL USE ONLY
0006 0000 ; If you wish to use it elsewhere, please include an acknowledgement to myself.
0007 0000 ;
0008 0000 ; http://searle.hostei.com/grant/index.html
0009 0000 ;
0010 0000 ; eMail: home.micros01@btinternet.com
0011 0000 ;
0012 0000 ; If the above don't work, please perform an Internet search to see if I have
0013 0000 ; updated the web page hosting service.
0014 0000 ;
0015 0000 ;==================================================================================
0016 0000
0017 0000 TPA .EQU 100H
0018 0000 REBOOT .EQU 0H
0019 0000 BDOS .EQU 5H
0020 0000 CONIO .EQU 6
0021 0000 CONINP .EQU 1
0022 0000 CONOUT .EQU 2
0023 0000 PSTRING .EQU 9
0024 0000 MAKEF .EQU 22
0025 0000 CLOSEF .EQU 16
0026 0000 WRITES .EQU 21
0027 0000 DELF .EQU 19
0028 0000 SETUSR .EQU 32
0029 0000
0030 0000 CR .EQU 0DH
0031 0000 LF .EQU 0AH
0032 0000
0033 0000 FCB .EQU 05CH
0034 0000 BUFF .EQU 080H
0035 0000
0036 0100 .ORG TPA
0037 0100
0038 0100
0039 0100 3E 00 LD A,0
0040 0102 32 6D 02 LD (buffPos),A
0041 0105 32 71 02 LD (checkSum),A
0042 0108 32 72 02 LD (byteCount),A
0043 010B 32 70 02 LD (printCount),A
0044 010E 21 80 00 LD HL,BUFF
0045 0111 22 6E 02 LD (buffPtr),HL
0046 0114
0047 0114
0048 0114 CD 39 02 WAITLT: CALL GETCHR
0049 0117 FE 55 CP 'U'
0050 0119 CA 2A 02 JP Z,SETUSER
0051 011C FE 3A CP ':'
0052 011E 20 F4 JR NZ,WAITLT
0053 0120
0054 0120
0055 0120 0E 13 LD C,DELF
0056 0122 11 5C 00 LD DE,FCB
0057 0125 CD 05 00 CALL BDOS
0058 0128
0059 0128 0E 16 LD C,MAKEF
0060 012A 11 5C 00 LD DE,FCB
0061 012D CD 05 00 CALL BDOS
0062 0130
0063 0130 GETHEX:
0064 0130 CD 39 02 CALL GETCHR
0065 0133 FE 3E CP '>'
0066 0135 28 61 JR Z,CLOSE
0067 0137 47 LD B,A
0068 0138 C5 PUSH BC
0069 0139 CD 39 02 CALL GETCHR
0070 013C C1 POP BC
0071 013D 4F LD C,A
0072 013E
0073 013E CD 4C 02 CALL BCTOA
0074 0141
0075 0141 47 LD B,A
0076 0142 3A 71 02 LD A,(checkSum)
0077 0145 80 ADD A,B
0078 0146 32 71 02 LD (checkSum),A
0079 0149 3A 72 02 LD A,(byteCount)
0080 014C 3C INC A
0081 014D 32 72 02 LD (byteCount),A
0082 0150
0083 0150 78 LD A,B
0084 0151
0085 0151 2A 6E 02 LD HL,(buffPtr)
0086 0154
0087 0154 77 LD (HL),A
0088 0155 23 INC HL
0089 0156 22 6E 02 LD (buffPtr),HL
0090 0159
0091 0159 3A 6D 02 LD A,(buffPos)
0092 015C 3C INC A
0093 015D 32 6D 02 LD (buffPos),A
0094 0160 FE 80 CP 80H
0095 0162
0096 0162 20 32 JR NZ,NOWRITE
0097 0164
0098 0164 0E 15 LD C,WRITES
0099 0166 11 5C 00 LD DE,FCB
0100 0169 CD 05 00 CALL BDOS
0101 016C 3E 2E LD A,'.'
0102 016E CD 45 02 CALL PUTCHR
0103 0171
0104 0171 ; New line every 8K (64 dots)
0105 0171 3A 70 02 LD A,(printCount)
0106 0174 3C INC A
0107 0175 FE 40 CP 64
0108 0177 20 0F JR NZ,noCRLF
0109 0179 32 70 02 LD (printCount),A
0110 017C 3E 0D LD A,CR
0111 017E CD 45 02 CALL PUTCHR
0112 0181 3E 0A LD A,LF
0113 0183 CD 45 02 CALL PUTCHR
0114 0186 3E 00 LD A,0
0115 0188 32 70 02 noCRLF: LD (printCount),A
0116 018B
0117 018B 21 80 00 LD HL,BUFF
0118 018E 22 6E 02 LD (buffPtr),HL
0119 0191
0120 0191 3E 00 LD A,0
0121 0193 32 6D 02 LD (buffPos),A
0122 0196 NOWRITE:
0123 0196 18 98 JR GETHEX
0124 0198
0125 0198
0126 0198 CLOSE:
0127 0198
0128 0198 3A 6D 02 LD A,(buffPos)
0129 019B FE 00 CP 0
0130 019D 28 0D JR Z,NOWRITE2
0131 019F
0132 019F 0E 15 LD C,WRITES
0133 01A1 11 5C 00 LD DE,FCB
0134 01A4 CD 05 00 CALL BDOS
0135 01A7 3E 2E LD A,'.'
0136 01A9 CD 45 02 CALL PUTCHR
0137 01AC
0138 01AC NOWRITE2:
0139 01AC 0E 10 LD C,CLOSEF
0140 01AE 11 5C 00 LD DE,FCB
0141 01B1 CD 05 00 CALL BDOS
0142 01B4
0143 01B4 ; Byte count (lower 8 bits)
0144 01B4 CD 39 02 CALL GETCHR
0145 01B7 47 LD B,A
0146 01B8 C5 PUSH BC
0147 01B9 CD 39 02 CALL GETCHR
0148 01BC C1 POP BC
0149 01BD 4F LD C,A
0150 01BE
0151 01BE CD 4C 02 CALL BCTOA
0152 01C1 47 LD B,A
0153 01C2 3A 72 02 LD A,(byteCount)
0154 01C5 90 SUB B
0155 01C6 FE 00 CP 0
0156 01C8 28 1A JR Z,byteCountOK
0157 01CA
0158 01CA 3E 0D LD A,CR
0159 01CC CD 45 02 CALL PUTCHR
0160 01CF 3E 0A LD A,LF
0161 01D1 CD 45 02 CALL PUTCHR
0162 01D4
0163 01D4 11 91 02 LD DE,countErrMess
0164 01D7 0E 09 LD C,PSTRING
0165 01D9 CD 05 00 CALL BDOS
0166 01DC
0167 01DC ; Sink remaining 2 bytes
0168 01DC CD 39 02 CALL GETCHR
0169 01DF CD 39 02 CALL GETCHR
0170 01E2
0171 01E2 18 3C JR FINISH
0172 01E4
0173 01E4 byteCountOK:
0174 01E4
0175 01E4 ; Checksum
0176 01E4 CD 39 02 CALL GETCHR
0177 01E7 47 LD B,A
0178 01E8 C5 PUSH BC
0179 01E9 CD 39 02 CALL GETCHR
0180 01EC C1 POP BC
0181 01ED 4F LD C,A
0182 01EE
0183 01EE CD 4C 02 CALL BCTOA
0184 01F1 47 LD B,A
0185 01F2 3A 71 02 LD A,(checkSum)
0186 01F5 90 SUB B
0187 01F6 FE 00 CP 0
0188 01F8 28 14 JR Z,checksumOK
0189 01FA
0190 01FA 3E 0D LD A,CR
0191 01FC CD 45 02 CALL PUTCHR
0192 01FF 3E 0A LD A,LF
0193 0201 CD 45 02 CALL PUTCHR
0194 0204
0195 0204 11 76 02 LD DE,chkErrMess
0196 0207 0E 09 LD C,PSTRING
0197 0209 CD 05 00 CALL BDOS
0198 020C 18 12 JR FINISH
0199 020E
0200 020E checksumOK:
0201 020E 3E 0D LD A,CR
0202 0210 CD 45 02 CALL PUTCHR
0203 0213 3E 0A LD A,LF
0204 0215 CD 45 02 CALL PUTCHR
0205 0218
0206 0218 11 73 02 LD DE,OKMess
0207 021B 0E 09 LD C,PSTRING
0208 021D CD 05 00 CALL BDOS
0209 0220
0210 0220
0211 0220
0212 0220 FINISH:
0213 0220 0E 20 LD C,SETUSR
0214 0222 1E 00 LD E,0
0215 0224 CD 05 00 CALL BDOS
0216 0227
0217 0227 C3 00 00 JP REBOOT
0218 022A
0219 022A
0220 022A SETUSER:
0221 022A CD 39 02 CALL GETCHR
0222 022D CD 65 02 CALL HEX2VAL
0223 0230 5F LD E,A
0224 0231 0E 20 LD C,SETUSR
0225 0233 CD 05 00 CALL BDOS
0226 0236 C3 14 01 JP WAITLT
0227 0239
0228 0239
0229 0239 ; Get a char into A
0230 0239 ;GETCHR: LD C,CONINP
0231 0239 ; CALL BDOS
0232 0239 ; RET
0233 0239
0234 0239 ; Wait for a char into A (no echo)
0235 0239 GETCHR:
0236 0239 1E FF LD E,$FF
0237 023B 0E 06 LD C,CONIO
0238 023D CD 05 00 CALL BDOS
0239 0240 FE 00 CP 0
0240 0242 28 F5 JR Z,GETCHR
0241 0244 C9 RET
0242 0245
0243 0245 ; Write A to output
0244 0245 0E 02 PUTCHR: LD C,CONOUT
0245 0247 5F LD E,A
0246 0248 CD 05 00 CALL BDOS
0247 024B C9 RET
0248 024C
0249 024C
0250 024C ;------------------------------------------------------------------------------
0251 024C ; Convert ASCII characters in B C registers to a byte value in A
0252 024C ;------------------------------------------------------------------------------
0253 024C 78 BCTOA LD A,B ; Move the hi order byte to A
0254 024D D6 30 SUB $30 ; Take it down from Ascii
0255 024F FE 0A CP $0A ; Are we in the 0-9 range here?
0256 0251 38 02 JR C,BCTOA1 ; If so, get the next nybble
0257 0253 D6 07 SUB $07 ; But if A-F, take it down some more
0258 0255 07 BCTOA1 RLCA ; Rotate the nybble from low to high
0259 0256 07 RLCA ; One bit at a time
0260 0257 07 RLCA ; Until we
0261 0258 07 RLCA ; Get there with it
0262 0259 47 LD B,A ; Save the converted high nybble
0263 025A 79 LD A,C ; Now get the low order byte
0264 025B D6 30 SUB $30 ; Convert it down from Ascii
0265 025D FE 0A CP $0A ; 0-9 at this point?
0266 025F 38 02 JR C,BCTOA2 ; Good enough then, but
0267 0261 D6 07 SUB $07 ; Take off 7 more if it's A-F
0268 0263 80 BCTOA2 ADD A,B ; Add in the high order nybble
0269 0264 C9 RET
0270 0265
0271 0265 ; Change Hex in A to actual value in A
0272 0265 D6 30 HEX2VAL SUB $30
0273 0267 FE 0A CP $0A
0274 0269 D8 RET C
0275 026A D6 07 SUB $07
0276 026C C9 RET
0277 026D
0278 026D
0279 026D 00 buffPos .DB 0H
0280 026E 00 00 buffPtr .DW 0000H
0281 0270 00 printCount .DB 0H
0282 0271 00 checkSum .DB 0H
0283 0272 00 byteCount .DB 0H
0284 0273 4F 4B 24 OKMess .BYTE "OK$"
0285 0276 3D3D3D3D3D3DchkErrMess .BYTE "======Checksum Error======$"
0285 027C 436865636B73756D204572726F723D3D3D3D3D3D24
0286 0291 3D3D3D3D3D3DcountErrMess .BYTE "======File Length Error======$"
0286 0297 46696C65204C656E677468204572726F723D3D3D3D3D3D24
0287 02AF .END
tasm: Number of errors = 0
0001 0000 ;==================================================================================
0002 0000 ; Contents of this file are copyright Grant Searle
0003 0000 ; HEX routine from Joel Owens.
0004 0000 ;
0005 0000 ; You have permission to use this for NON COMMERCIAL USE ONLY
0006 0000 ; If you wish to use it elsewhere, please include an acknowledgement to myself.
0007 0000 ;
0008 0000 ; http://searle.hostei.com/grant/index.html
0009 0000 ;
0010 0000 ; eMail: home.micros01@btinternet.com
0011 0000 ;
0012 0000 ; If the above don't work, please perform an Internet search to see if I have
0013 0000 ; updated the web page hosting service.
0014 0000 ;
0015 0000 ;==================================================================================
0016 0000
0017 0000 TPA .EQU 100H
0018 0000 REBOOT .EQU 0H
0019 0000 BDOS .EQU 5H
0020 0000 CONIO .EQU 6
0021 0000 CONINP .EQU 1
0022 0000 CONOUT .EQU 2
0023 0000 PSTRING .EQU 9
0024 0000 MAKEF .EQU 22
0025 0000 CLOSEF .EQU 16
0026 0000 WRITES .EQU 21
0027 0000 DELF .EQU 19
0028 0000 SETUSR .EQU 32
0029 0000
0030 0000 CR .EQU 0DH
0031 0000 LF .EQU 0AH
0032 0000
0033 0000 FCB .EQU 05CH
0034 0000 BUFF .EQU 080H
0035 0000
0036 0100 .ORG TPA
0037 0100
0038 0100
0039 0100 3E 00 LD A,0
0040 0102 32 6D 02 LD (buffPos),A
0041 0105 32 71 02 LD (checkSum),A
0042 0108 32 72 02 LD (byteCount),A
0043 010B 32 70 02 LD (printCount),A
0044 010E 21 80 00 LD HL,BUFF
0045 0111 22 6E 02 LD (buffPtr),HL
0046 0114
0047 0114
0048 0114 CD 39 02 WAITLT: CALL GETCHR
0049 0117 FE 55 CP 'U'
0050 0119 CA 2A 02 JP Z,SETUSER
0051 011C FE 3A CP ':'
0052 011E 20 F4 JR NZ,WAITLT
0053 0120
0054 0120
0055 0120 0E 13 LD C,DELF
0056 0122 11 5C 00 LD DE,FCB
0057 0125 CD 05 00 CALL BDOS
0058 0128
0059 0128 0E 16 LD C,MAKEF
0060 012A 11 5C 00 LD DE,FCB
0061 012D CD 05 00 CALL BDOS
0062 0130
0063 0130 GETHEX:
0064 0130 CD 39 02 CALL GETCHR
0065 0133 FE 3E CP '>'
0066 0135 28 61 JR Z,CLOSE
0067 0137 47 LD B,A
0068 0138 C5 PUSH BC
0069 0139 CD 39 02 CALL GETCHR
0070 013C C1 POP BC
0071 013D 4F LD C,A
0072 013E
0073 013E CD 4C 02 CALL BCTOA
0074 0141
0075 0141 47 LD B,A
0076 0142 3A 71 02 LD A,(checkSum)
0077 0145 80 ADD A,B
0078 0146 32 71 02 LD (checkSum),A
0079 0149 3A 72 02 LD A,(byteCount)
0080 014C 3C INC A
0081 014D 32 72 02 LD (byteCount),A
0082 0150
0083 0150 78 LD A,B
0084 0151
0085 0151 2A 6E 02 LD HL,(buffPtr)
0086 0154
0087 0154 77 LD (HL),A
0088 0155 23 INC HL
0089 0156 22 6E 02 LD (buffPtr),HL
0090 0159
0091 0159 3A 6D 02 LD A,(buffPos)
0092 015C 3C INC A
0093 015D 32 6D 02 LD (buffPos),A
0094 0160 FE 80 CP 80H
0095 0162
0096 0162 20 32 JR NZ,NOWRITE
0097 0164
0098 0164 0E 15 LD C,WRITES
0099 0166 11 5C 00 LD DE,FCB
0100 0169 CD 05 00 CALL BDOS
0101 016C 3E 2E LD A,'.'
0102 016E CD 45 02 CALL PUTCHR
0103 0171
0104 0171 ; New line every 8K (64 dots)
0105 0171 3A 70 02 LD A,(printCount)
0106 0174 3C INC A
0107 0175 FE 40 CP 64
0108 0177 20 0F JR NZ,noCRLF
0109 0179 32 70 02 LD (printCount),A
0110 017C 3E 0D LD A,CR
0111 017E CD 45 02 CALL PUTCHR
0112 0181 3E 0A LD A,LF
0113 0183 CD 45 02 CALL PUTCHR
0114 0186 3E 00 LD A,0
0115 0188 32 70 02 noCRLF: LD (printCount),A
0116 018B
0117 018B 21 80 00 LD HL,BUFF
0118 018E 22 6E 02 LD (buffPtr),HL
0119 0191
0120 0191 3E 00 LD A,0
0121 0193 32 6D 02 LD (buffPos),A
0122 0196 NOWRITE:
0123 0196 18 98 JR GETHEX
0124 0198
0125 0198
0126 0198 CLOSE:
0127 0198
0128 0198 3A 6D 02 LD A,(buffPos)
0129 019B FE 00 CP 0
0130 019D 28 0D JR Z,NOWRITE2
0131 019F
0132 019F 0E 15 LD C,WRITES
0133 01A1 11 5C 00 LD DE,FCB
0134 01A4 CD 05 00 CALL BDOS
0135 01A7 3E 2E LD A,'.'
0136 01A9 CD 45 02 CALL PUTCHR
0137 01AC
0138 01AC NOWRITE2:
0139 01AC 0E 10 LD C,CLOSEF
0140 01AE 11 5C 00 LD DE,FCB
0141 01B1 CD 05 00 CALL BDOS
0142 01B4
0143 01B4 ; Byte count (lower 8 bits)
0144 01B4 CD 39 02 CALL GETCHR
0145 01B7 47 LD B,A
0146 01B8 C5 PUSH BC
0147 01B9 CD 39 02 CALL GETCHR
0148 01BC C1 POP BC
0149 01BD 4F LD C,A
0150 01BE
0151 01BE CD 4C 02 CALL BCTOA
0152 01C1 47 LD B,A
0153 01C2 3A 72 02 LD A,(byteCount)
0154 01C5 90 SUB B
0155 01C6 FE 00 CP 0
0156 01C8 28 1A JR Z,byteCountOK
0157 01CA
0158 01CA 3E 0D LD A,CR
0159 01CC CD 45 02 CALL PUTCHR
0160 01CF 3E 0A LD A,LF
0161 01D1 CD 45 02 CALL PUTCHR
0162 01D4
0163 01D4 11 91 02 LD DE,countErrMess
0164 01D7 0E 09 LD C,PSTRING
0165 01D9 CD 05 00 CALL BDOS
0166 01DC
0167 01DC ; Sink remaining 2 bytes
0168 01DC CD 39 02 CALL GETCHR
0169 01DF CD 39 02 CALL GETCHR
0170 01E2
0171 01E2 18 3C JR FINISH
0172 01E4
0173 01E4 byteCountOK:
0174 01E4
0175 01E4 ; Checksum
0176 01E4 CD 39 02 CALL GETCHR
0177 01E7 47 LD B,A
0178 01E8 C5 PUSH BC
0179 01E9 CD 39 02 CALL GETCHR
0180 01EC C1 POP BC
0181 01ED 4F LD C,A
0182 01EE
0183 01EE CD 4C 02 CALL BCTOA
0184 01F1 47 LD B,A
0185 01F2 3A 71 02 LD A,(checkSum)
0186 01F5 90 SUB B
0187 01F6 FE 00 CP 0
0188 01F8 28 14 JR Z,checksumOK
0189 01FA
0190 01FA 3E 0D LD A,CR
0191 01FC CD 45 02 CALL PUTCHR
0192 01FF 3E 0A LD A,LF
0193 0201 CD 45 02 CALL PUTCHR
0194 0204
0195 0204 11 76 02 LD DE,chkErrMess
0196 0207 0E 09 LD C,PSTRING
0197 0209 CD 05 00 CALL BDOS
0198 020C 18 12 JR FINISH
0199 020E
0200 020E checksumOK:
0201 020E 3E 0D LD A,CR
0202 0210 CD 45 02 CALL PUTCHR
0203 0213 3E 0A LD A,LF
0204 0215 CD 45 02 CALL PUTCHR
0205 0218
0206 0218 11 73 02 LD DE,OKMess
0207 021B 0E 09 LD C,PSTRING
0208 021D CD 05 00 CALL BDOS
0209 0220
0210 0220
0211 0220
0212 0220 FINISH:
0213 0220 0E 20 LD C,SETUSR
0214 0222 1E 00 LD E,0
0215 0224 CD 05 00 CALL BDOS
0216 0227
0217 0227 C3 00 00 JP REBOOT
0218 022A
0219 022A
0220 022A SETUSER:
0221 022A CD 39 02 CALL GETCHR
0222 022D CD 65 02 CALL HEX2VAL
0223 0230 5F LD E,A
0224 0231 0E 20 LD C,SETUSR
0225 0233 CD 05 00 CALL BDOS
0226 0236 C3 14 01 JP WAITLT
0227 0239
0228 0239
0229 0239 ; Get a char into A
0230 0239 ;GETCHR: LD C,CONINP
0231 0239 ; CALL BDOS
0232 0239 ; RET
0233 0239
0234 0239 ; Wait for a char into A (no echo)
0235 0239 GETCHR:
0236 0239 1E FF LD E,$FF
0237 023B 0E 06 LD C,CONIO
0238 023D CD 05 00 CALL BDOS
0239 0240 FE 00 CP 0
0240 0242 28 F5 JR Z,GETCHR
0241 0244 C9 RET
0242 0245
0243 0245 ; Write A to output
0244 0245 0E 02 PUTCHR: LD C,CONOUT
0245 0247 5F LD E,A
0246 0248 CD 05 00 CALL BDOS
0247 024B C9 RET
0248 024C
0249 024C
0250 024C ;------------------------------------------------------------------------------
0251 024C ; Convert ASCII characters in B C registers to a byte value in A
0252 024C ;------------------------------------------------------------------------------
0253 024C 78 BCTOA LD A,B ; Move the hi order byte to A
0254 024D D6 30 SUB $30 ; Take it down from Ascii
0255 024F FE 0A CP $0A ; Are we in the 0-9 range here?
0256 0251 38 02 JR C,BCTOA1 ; If so, get the next nybble
0257 0253 D6 07 SUB $07 ; But if A-F, take it down some more
0258 0255 07 BCTOA1 RLCA ; Rotate the nybble from low to high
0259 0256 07 RLCA ; One bit at a time
0260 0257 07 RLCA ; Until we
0261 0258 07 RLCA ; Get there with it
0262 0259 47 LD B,A ; Save the converted high nybble
0263 025A 79 LD A,C ; Now get the low order byte
0264 025B D6 30 SUB $30 ; Convert it down from Ascii
0265 025D FE 0A CP $0A ; 0-9 at this point?
0266 025F 38 02 JR C,BCTOA2 ; Good enough then, but
0267 0261 D6 07 SUB $07 ; Take off 7 more if it's A-F
0268 0263 80 BCTOA2 ADD A,B ; Add in the high order nybble
0269 0264 C9 RET
0270 0265
0271 0265 ; Change Hex in A to actual value in A
0272 0265 D6 30 HEX2VAL SUB $30
0273 0267 FE 0A CP $0A
0274 0269 D8 RET C
0275 026A D6 07 SUB $07
0276 026C C9 RET
0277 026D
0278 026D
0279 026D 00 buffPos .DB 0H
0280 026E 00 00 buffPtr .DW 0000H
0281 0270 00 printCount .DB 0H
0282 0271 00 checkSum .DB 0H
0283 0272 00 byteCount .DB 0H
0284 0273 4F 4B 24 OKMess .BYTE "OK$"
0285 0276 3D 3D 3D 3D chkErrMess .BYTE "======Checksum Error======$"
0285 027A 3D 3D 43 68
0285 027E 65 63 6B 73
0285 0282 75 6D 20 45
0285 0286 72 72 6F 72
0285 028A 3D 3D 3D 3D
0285 028E 3D 3D 24
0286 0291 3D 3D 3D 3D countErrMess .BYTE "======File Length Error======$"
0286 0295 3D 3D 46 69
0286 0299 6C 65 20 4C
0286 029D 65 6E 67 74
0286 02A1 68 20 45 72
0286 02A5 72 6F 72 3D
0286 02A9 3D 3D 3D 3D
0286 02AD 3D 24
0287 02AF .END
tasm: Number of errors = 0

View File

@@ -1,230 +1,256 @@
0001 0000 ;==================================================================================
0002 0000 ; Contents of this file are copyright Grant Searle
0003 0000 ;
0004 0000 ; You have permission to use this for NON COMMERCIAL USE ONLY
0005 0000 ; If you wish to use it elsewhere, please include an acknowledgement to myself.
0006 0000 ;
0007 0000 ; http://searle.hostei.com/grant/index.html
0008 0000 ;
0009 0000 ; eMail: home.micros01@btinternet.com
0010 0000 ;
0011 0000 ; If the above don't work, please perform an Internet search to see if I have
0012 0000 ; updated the web page hosting service.
0013 0000 ;
0014 0000 ;==================================================================================
0015 0000
0016 0000 numDrives .EQU 15 ; Not including A:
0017 0000
0018 0000
0019 0000 SD_DATA .EQU 088H
0020 0000 SD_CONTROL .EQU 089H
0021 0000 SD_STATUS .EQU 089H
0022 0000 SD_LBA0 .EQU 08AH
0023 0000 SD_LBA1 .EQU 08BH
0024 0000 SD_LBA2 .EQU 08CH
0025 0000
0026 0000 LF .EQU 0AH ;line feed
0027 0000 FF .EQU 0CH ;form feed
0028 0000 CR .EQU 0DH ;carriage RETurn
0029 0000
0030 0000 ;====================================================================================
0031 0000
0032 5000 .ORG 5000H ; Format program origin.
0033 5000
0034 5000
0035 5000 CD D5 50 CALL printInline
0036 5003 43502F4D2046 .TEXT "CP/M Formatter 2.0 by G. Searle 2013"
0036 5009 6F726D617474657220322E3020627920472E20536561726C652032303133
0037 5027 0D 0A 00 .DB CR,LF,0
0038 502A
0039 502A 3E 41 LD A,'A'
0040 502C 32 E7 50 LD (drvName),A
0041 502F
0042 502F ; There are 512 directory entries per disk, 4 DIR entries per sector
0043 502F ; So 128 x 128 byte sectors are to be initialised
0044 502F ; The drive uses 512 byte sectors, so 32 x 512 byte sectors per disk
0045 502F ; require initialisation
0046 502F
0047 502F ;Drive 0 (A:) is slightly different due to reserved track, so DIR sector starts at 32
0048 502F 3A E7 50 LD A,(drvName)
0049 5032 CF RST 08H ; Print drive letter
0050 5033 3C INC A
0051 5034 32 E7 50 LD (drvName),A
0052 5037
0053 5037 3E 20 LD A,$20
0054 5039 32 E6 50 LD (secNo),A
0055 503C
0056 503C processSectorA:
0057 503C
0058 503C 3A E6 50 LD A,(secNo)
0059 503F D3 8A OUT (SD_LBA0),A
0060 5041 3E 00 LD A,0
0061 5043 D3 8B OUT (SD_LBA1),A
0062 5045 3E 00 LD A,0
0063 5047 D3 8C OUT (SD_LBA2),A
0064 5049 3E E0 LD a,$E0
0065 504B
0066 504B CD A7 50 call writehst
0067 504E
0068 504E 3A E6 50 LD A,(secNo)
0069 5051 3C INC A
0070 5052 32 E6 50 LD (secNo),A
0071 5055 FE 40 CP $40
0072 5057 20 E3 JR NZ, processSectorA
0073 5059
0074 5059
0075 5059
0076 5059 ;Drive 1 onwards (B: etc) don't have reserved tracks, so sector starts at 0
0077 5059
0078 5059 11 40 00 LD DE,$0040 ; HL increment
0079 505C 21 40 00 LD HL,$0040 ; H = LBA2, L=LBA1, initialise for drive 1 (B:)
0080 505F
0081 505F 06 0F LD B,numDrives
0082 5061
0083 5061 processDirs:
0084 5061
0085 5061 3A E7 50 LD A,(drvName)
0086 5064 CF RST 08H ; Print drive letter
0087 5065 3C INC A
0088 5066 32 E7 50 LD (drvName),A
0089 5069
0090 5069 3E 00 LD A,0
0091 506B 32 E6 50 LD (secNo),A
0092 506E
0093 506E processSector:
0094 506E 3A E6 50 LD A,(secNo)
0095 5071 D3 8A OUT (SD_LBA0),A
0096 5073 7D LD A,L
0097 5074 D3 8B OUT (SD_LBA1),A
0098 5076 7C LD A,H
0099 5077 D3 8C OUT (SD_LBA2),A
0100 5079
0101 5079 CD A7 50 call writehst
0102 507C
0103 507C 3A E6 50 LD A,(secNo)
0104 507F 3C INC A
0105 5080 32 E6 50 LD (secNo),A
0106 5083 FE 20 CP $20
0107 5085 20 E7 JR NZ, processSector
0108 5087
0109 5087 19 ADD HL,DE
0110 5088
0111 5088 05 DEC B
0112 5089 20 D6 JR NZ,processDirs
0113 508B
0114 508B CD D5 50 CALL printInline
0115 508E 0D 0A .DB CR,LF
0116 5090 466F726D6174 .TEXT "Formatting complete"
0116 5096 74696E6720636F6D706C657465
0117 50A3 0D 0A 00 .DB CR,LF,0
0118 50A6
0119 50A6 C9 RET
0120 50A7
0121 50A7 ;================================================================================================
0122 50A7 ; Write physical sector to host
0123 50A7 ;================================================================================================
0124 50A7
0125 50A7 writehst:
0126 50A7 F5 PUSH AF
0127 50A8 C5 PUSH BC
0128 50A9 E5 PUSH HL
0129 50AA
0130 50AA DB 89 wrWait1: IN A,(SD_STATUS)
0131 50AC FE 80 CP 128
0132 50AE 20 FA JR NZ,wrWait1
0133 50B0
0134 50B0 ;CALL setLBAaddr
0135 50B0
0136 50B0 3E 01 LD A,$01 ; 01 = Write block
0137 50B2 D3 89 OUT (SD_CONTROL),A
0138 50B4
0139 50B4 0E 04 LD c,4
0140 50B6 wr4secs:
0141 50B6 21 E8 50 LD HL,dirData
0142 50B9 06 80 LD b,128
0143 50BB wrByte:
0144 50BB DB 89 wrWait2: IN A,(SD_STATUS)
0145 50BD FE A0 CP 160 ; Write buffer empty
0146 50BF 20 FA JR NZ,wrWait2
0147 50C1
0148 50C1 ;LD A,'.'
0149 50C1 ;RST 08H
0150 50C1
0151 50C1 ; UPDATE S0urceror, inserted wait cycle between IN and OUT
0152 50C1 ; to resolve unknown write issue in sd_controller.vhd in combination
0153 50C1 ; with MISTer virtual SD interface sys/sd_card.sv
0154 50C1 ; which results in hangs or write errors.
0155 50C1 C5 push bc
0156 50C2 06 32 ld b,50
0157 50C4 _again:
0158 50C4 10 FE djnz _again
0159 50C6 C1 pop bc
0160 50C7 ; END UPDATE
0161 50C7
0162 50C7 7E LD A,(HL)
0163 50C8 D3 88 OUT (SD_DATA),A
0164 50CA
0165 50CA 23 INC HL
0166 50CB 05 dec b
0167 50CC 20 ED JR NZ, wrByte
0168 50CE
0169 50CE 0D dec c
0170 50CF 20 E5 JR NZ,wr4secs
0171 50D1
0172 50D1 E1 POP HL
0173 50D2 C1 POP BC
0174 50D3 F1 POP AF
0175 50D4
0176 50D4 ;XOR a
0177 50D4 ;ld (erflag),a
0178 50D4 C9 RET
0179 50D5
0180 50D5 ;================================================================================================
0181 50D5 ; Utilities
0182 50D5 ;================================================================================================
0183 50D5
0184 50D5 printInline:
0185 50D5 E3 EX (SP),HL ; PUSH HL and put RET ADDress into HL
0186 50D6 F5 PUSH AF
0187 50D7 C5 PUSH BC
0188 50D8 7E nextILChar: LD A,(HL)
0189 50D9 FE 00 CP 0
0190 50DB 28 04 JR Z,endOfPrint
0191 50DD CF RST 08H
0192 50DE 23 INC HL
0193 50DF 18 F7 JR nextILChar
0194 50E1 23 endOfPrint: INC HL ; Get past "null" terminator
0195 50E2 C1 POP BC
0196 50E3 F1 POP AF
0197 50E4 E3 EX (SP),HL ; PUSH new RET ADDress on stack and restore HL
0198 50E5 C9 RET
0199 50E6
0200 50E6
0201 50E6 00 secNo .db 0
0202 50E7 00 drvName .db 0
0203 50E8
0204 50E8
0205 50E8 ; Directory data for 1 x 128 byte sector
0206 50E8 dirData:
0207 50E8 E52020202020 .DB $E5,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$00,$00,$00,$00
0207 50EE 20202020202000000000
0208 50F8 000000000000 .DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
0208 50FE 00000000000000000000
0209 5108
0210 5108 E52020202020 .DB $E5,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$00,$00,$00,$00
0210 510E 20202020202000000000
0211 5118 000000000000 .DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
0211 511E 00000000000000000000
0212 5128
0213 5128 E52020202020 .DB $E5,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$00,$00,$00,$00
0213 512E 20202020202000000000
0214 5138 000000000000 .DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
0214 513E 00000000000000000000
0215 5148
0216 5148 E52020202020 .DB $E5,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$00,$00,$00,$00
0216 514E 20202020202000000000
0217 5158 000000000000 .DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
0217 515E 00000000000000000000
0218 5168
0219 5168 .END
tasm: Number of errors = 0
0001 0000 ;==================================================================================
0002 0000 ; Contents of this file are copyright Grant Searle
0003 0000 ;
0004 0000 ; You have permission to use this for NON COMMERCIAL USE ONLY
0005 0000 ; If you wish to use it elsewhere, please include an acknowledgement to myself.
0006 0000 ;
0007 0000 ; http://searle.hostei.com/grant/index.html
0008 0000 ;
0009 0000 ; eMail: home.micros01@btinternet.com
0010 0000 ;
0011 0000 ; If the above don't work, please perform an Internet search to see if I have
0012 0000 ; updated the web page hosting service.
0013 0000 ;
0014 0000 ;==================================================================================
0015 0000
0016 0000 numDrives .EQU 15 ; Not including A:
0017 0000
0018 0000
0019 0000 SD_DATA .EQU 088H
0020 0000 SD_CONTROL .EQU 089H
0021 0000 SD_STATUS .EQU 089H
0022 0000 SD_LBA0 .EQU 08AH
0023 0000 SD_LBA1 .EQU 08BH
0024 0000 SD_LBA2 .EQU 08CH
0025 0000
0026 0000 LF .EQU 0AH ;line feed
0027 0000 FF .EQU 0CH ;form feed
0028 0000 CR .EQU 0DH ;carriage RETurn
0029 0000
0030 0000 ;====================================================================================
0031 0000
0032 5000 .ORG 5000H ; Format program origin.
0033 5000
0034 5000
0035 5000 CD D5 50 CALL printInline
0036 5003 43 50 2F 4D .TEXT "CP/M Formatter 2.0 by G. Searle 2013"
0036 5007 20 46 6F 72
0036 500B 6D 61 74 74
0036 500F 65 72 20 32
0036 5013 2E 30 20 62
0036 5017 79 20 47 2E
0036 501B 20 53 65 61
0036 501F 72 6C 65 20
0036 5023 32 30 31 33
0037 5027 0D 0A 00 .DB CR,LF,0
0038 502A
0039 502A 3E 41 LD A,'A'
0040 502C 32 E7 50 LD (drvName),A
0041 502F
0042 502F ; There are 512 directory entries per disk, 4 DIR entries per sector
0043 502F ; So 128 x 128 byte sectors are to be initialised
0044 502F ; The drive uses 512 byte sectors, so 32 x 512 byte sectors per disk
0045 502F ; require initialisation
0046 502F
0047 502F ;Drive 0 (A:) is slightly different due to reserved track, so DIR sector starts at 32
0048 502F 3A E7 50 LD A,(drvName)
0049 5032 CF RST 08H ; Print drive letter
0050 5033 3C INC A
0051 5034 32 E7 50 LD (drvName),A
0052 5037
0053 5037 3E 20 LD A,$20
0054 5039 32 E6 50 LD (secNo),A
0055 503C
0056 503C processSectorA:
0057 503C
0058 503C 3A E6 50 LD A,(secNo)
0059 503F D3 8A OUT (SD_LBA0),A
0060 5041 3E 00 LD A,0
0061 5043 D3 8B OUT (SD_LBA1),A
0062 5045 3E 00 LD A,0
0063 5047 D3 8C OUT (SD_LBA2),A
0064 5049 3E E0 LD a,$E0
0065 504B
0066 504B CD A7 50 call writehst
0067 504E
0068 504E 3A E6 50 LD A,(secNo)
0069 5051 3C INC A
0070 5052 32 E6 50 LD (secNo),A
0071 5055 FE 40 CP $40
0072 5057 20 E3 JR NZ, processSectorA
0073 5059
0074 5059
0075 5059
0076 5059 ;Drive 1 onwards (B: etc) don't have reserved tracks, so sector starts at 0
0077 5059
0078 5059 11 40 00 LD DE,$0040 ; HL increment
0079 505C 21 40 00 LD HL,$0040 ; H = LBA2, L=LBA1, initialise for drive 1 (B:)
0080 505F
0081 505F 06 0F LD B,numDrives
0082 5061
0083 5061 processDirs:
0084 5061
0085 5061 3A E7 50 LD A,(drvName)
0086 5064 CF RST 08H ; Print drive letter
0087 5065 3C INC A
0088 5066 32 E7 50 LD (drvName),A
0089 5069
0090 5069 3E 00 LD A,0
0091 506B 32 E6 50 LD (secNo),A
0092 506E
0093 506E processSector:
0094 506E 3A E6 50 LD A,(secNo)
0095 5071 D3 8A OUT (SD_LBA0),A
0096 5073 7D LD A,L
0097 5074 D3 8B OUT (SD_LBA1),A
0098 5076 7C LD A,H
0099 5077 D3 8C OUT (SD_LBA2),A
0100 5079
0101 5079 CD A7 50 call writehst
0102 507C
0103 507C 3A E6 50 LD A,(secNo)
0104 507F 3C INC A
0105 5080 32 E6 50 LD (secNo),A
0106 5083 FE 20 CP $20
0107 5085 20 E7 JR NZ, processSector
0108 5087
0109 5087 19 ADD HL,DE
0110 5088
0111 5088 05 DEC B
0112 5089 20 D6 JR NZ,processDirs
0113 508B
0114 508B CD D5 50 CALL printInline
0115 508E 0D 0A .DB CR,LF
0116 5090 46 6F 72 6D .TEXT "Formatting complete"
0116 5094 61 74 74 69
0116 5098 6E 67 20 63
0116 509C 6F 6D 70 6C
0116 50A0 65 74 65
0117 50A3 0D 0A 00 .DB CR,LF,0
0118 50A6
0119 50A6 C9 RET
0120 50A7
0121 50A7 ;================================================================================================
0122 50A7 ; Write physical sector to host
0123 50A7 ;================================================================================================
0124 50A7
0125 50A7 writehst:
0126 50A7 F5 PUSH AF
0127 50A8 C5 PUSH BC
0128 50A9 E5 PUSH HL
0129 50AA
0130 50AA DB 89 wrWait1: IN A,(SD_STATUS)
0131 50AC FE 80 CP 128
0132 50AE 20 FA JR NZ,wrWait1
0133 50B0
0134 50B0 ;CALL setLBAaddr
0135 50B0
0136 50B0 3E 01 LD A,$01 ; 01 = Write block
0137 50B2 D3 89 OUT (SD_CONTROL),A
0138 50B4
0139 50B4 0E 04 LD c,4
0140 50B6 wr4secs:
0141 50B6 21 E8 50 LD HL,dirData
0142 50B9 06 80 LD b,128
0143 50BB wrByte:
0144 50BB DB 89 wrWait2: IN A,(SD_STATUS)
0145 50BD FE A0 CP 160 ; Write buffer empty
0146 50BF 20 FA JR NZ,wrWait2
0147 50C1
0148 50C1 ;LD A,'.'
0149 50C1 ;RST 08H
0150 50C1
0151 50C1 ; UPDATE S0urceror, inserted wait cycle between IN and OUT
0152 50C1 ; to resolve unknown write issue in sd_controller.vhd in combination
0153 50C1 ; with MISTer virtual SD interface sys/sd_card.sv
0154 50C1 ; which results in hangs or write errors.
0155 50C1 C5 push bc
0156 50C2 06 32 ld b,50
0157 50C4 _again:
0158 50C4 10 FE djnz _again
0159 50C6 C1 pop bc
0160 50C7 ; END UPDATE
0161 50C7
0162 50C7 7E LD A,(HL)
0163 50C8 D3 88 OUT (SD_DATA),A
0164 50CA
0165 50CA 23 INC HL
0166 50CB 05 dec b
0167 50CC 20 ED JR NZ, wrByte
0168 50CE
0169 50CE 0D dec c
0170 50CF 20 E5 JR NZ,wr4secs
0171 50D1
0172 50D1 E1 POP HL
0173 50D2 C1 POP BC
0174 50D3 F1 POP AF
0175 50D4
0176 50D4 ;XOR a
0177 50D4 ;ld (erflag),a
0178 50D4 C9 RET
0179 50D5
0180 50D5 ;================================================================================================
0181 50D5 ; Utilities
0182 50D5 ;================================================================================================
0183 50D5
0184 50D5 printInline:
0185 50D5 E3 EX (SP),HL ; PUSH HL and put RET ADDress into HL
0186 50D6 F5 PUSH AF
0187 50D7 C5 PUSH BC
0188 50D8 7E nextILChar: LD A,(HL)
0189 50D9 FE 00 CP 0
0190 50DB 28 04 JR Z,endOfPrint
0191 50DD CF RST 08H
0192 50DE 23 INC HL
0193 50DF 18 F7 JR nextILChar
0194 50E1 23 endOfPrint: INC HL ; Get past "null" terminator
0195 50E2 C1 POP BC
0196 50E3 F1 POP AF
0197 50E4 E3 EX (SP),HL ; PUSH new RET ADDress on stack and restore HL
0198 50E5 C9 RET
0199 50E6
0200 50E6
0201 50E6 00 secNo .db 0
0202 50E7 00 drvName .db 0
0203 50E8
0204 50E8
0205 50E8 ; Directory data for 1 x 128 byte sector
0206 50E8 dirData:
0207 50E8 E5 20 20 20 .DB $E5,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$00,$00,$00,$00
0207 50EC 20 20 20 20
0207 50F0 20 20 20 20
0207 50F4 00 00 00 00
0208 50F8 00 00 00 00 .DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
0208 50FC 00 00 00 00
0208 5100 00 00 00 00
0208 5104 00 00 00 00
0209 5108
0210 5108 E5 20 20 20 .DB $E5,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$00,$00,$00,$00
0210 510C 20 20 20 20
0210 5110 20 20 20 20
0210 5114 00 00 00 00
0211 5118 00 00 00 00 .DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
0211 511C 00 00 00 00
0211 5120 00 00 00 00
0211 5124 00 00 00 00
0212 5128
0213 5128 E5 20 20 20 .DB $E5,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$00,$00,$00,$00
0213 512C 20 20 20 20
0213 5130 20 20 20 20
0213 5134 00 00 00 00
0214 5138 00 00 00 00 .DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
0214 513C 00 00 00 00
0214 5140 00 00 00 00
0214 5144 00 00 00 00
0215 5148
0216 5148 E5 20 20 20 .DB $E5,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$00,$00,$00,$00
0216 514C 20 20 20 20
0216 5150 20 20 20 20
0216 5154 00 00 00 00
0217 5158 00 00 00 00 .DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
0217 515C 00 00 00 00
0217 5160 00 00 00 00
0217 5164 00 00 00 00
0218 5168
0219 5168 .END
0220 5168 tasm: Number of errors = 0

View File

@@ -1,166 +1,179 @@
0001 0000 ;==================================================================================
0002 0000 ; Contents of this file are copyright Grant Searle
0003 0000 ;
0004 0000 ; You have permission to use this for NON COMMERCIAL USE ONLY
0005 0000 ; If you wish to use it elsewhere, please include an acknowledgement to myself.
0006 0000 ;
0007 0000 ; http://searle.hostei.com/grant/index.html
0008 0000 ;
0009 0000 ; eMail: home.micros01@btinternet.com
0010 0000 ;
0011 0000 ; If the above don't work, please perform an Internet search to see if I have
0012 0000 ; updated the web page hosting service.
0013 0000 ;
0014 0000 ;==================================================================================
0015 0000
0016 0000 loadAddr .EQU 0D000h
0017 0000 numSecs .EQU 24 ; Number of 512 sectors to be loaded
0018 0000
0019 0000 SD_DATA .EQU 088H
0020 0000 SD_CONTROL .EQU 089H
0021 0000 SD_STATUS .EQU 089H
0022 0000 SD_LBA0 .EQU 08AH
0023 0000 SD_LBA1 .EQU 08BH
0024 0000 SD_LBA2 .EQU 08CH
0025 0000
0026 0000 LF .EQU 0AH ;line feed
0027 0000 FF .EQU 0CH ;form feed
0028 0000 CR .EQU 0DH ;carriage RETurn
0029 0000
0030 0000 ;================================================================================================
0031 0000
0032 5000 .ORG 5000H ; Loader origin.
0033 5000
0034 5000 CD BA 50 CALL printInline
0035 5003 43502F4D2053 .TEXT "CP/M System Transfer by G. Searle 2012-13"
0035 5009 797374656D205472616E7366657220627920472E20536561726C6520323031322D3133
0036 502C 0D 0A 00 .DB CR,LF,0
0037 502F
0038 502F 06 18 LD B,numSecs
0039 5031
0040 5031 3E 00 LD A,0
0041 5033 32 CB 50 LD (lba0),A
0042 5036 32 CC 50 ld (lba1),A
0043 5039 32 CD 50 ld (lba2),A
0044 503C 32 CE 50 ld (lba3),A
0045 503F 21 00 D0 LD HL,loadAddr
0046 5042 22 CF 50 LD (dmaAddr),HL
0047 5045 processSectors:
0048 5045
0049 5045 CD 8C 50 call writehst
0050 5048
0051 5048 11 00 02 LD DE,0200H
0052 504B 2A CF 50 LD HL,(dmaAddr)
0053 504E 19 ADD HL,DE
0054 504F 22 CF 50 LD (dmaAddr),HL
0055 5052 3A CB 50 LD A,(lba0)
0056 5055 3C INC A
0057 5056 32 CB 50 LD (lba0),A
0058 5059
0059 5059 10 EA djnz processSectors
0060 505B
0061 505B CD BA 50 CALL printInline
0062 505E 0D 0A .DB CR,LF
0063 5060 53797374656D .TEXT "System transfer complete"
0063 5066 207472616E7366657220636F6D706C657465
0064 5078 0D 0A 00 .DB CR,LF,0
0065 507B
0066 507B C9 RET
0067 507C
0068 507C ; =========================================================================
0069 507C ; Disk routines as used in CBIOS
0070 507C ; =========================================================================
0071 507C setLBAaddr:
0072 507C 3A CD 50 LD A,(lba2)
0073 507F D3 8C OUT (SD_LBA2),A
0074 5081 3A CC 50 LD A,(lba1)
0075 5084 D3 8B OUT (SD_LBA1),A
0076 5086 3A CB 50 LD A,(lba0)
0077 5089 D3 8A OUT (SD_LBA0),A
0078 508B C9 ret
0079 508C
0080 508C ;================================================================================================
0081 508C ; Write physical sector to host
0082 508C ;================================================================================================
0083 508C
0084 508C writehst:
0085 508C F5 PUSH AF
0086 508D C5 PUSH BC
0087 508E E5 PUSH HL
0088 508F
0089 508F DB 89 wrWait1: IN A,(SD_STATUS)
0090 5091 FE 80 CP 128
0091 5093 20 FA JR NZ,wrWait1
0092 5095
0093 5095 CD 7C 50 CALL setLBAaddr
0094 5098
0095 5098 3E 01 LD A,$01 ; 01 = Write block
0096 509A D3 89 OUT (SD_CONTROL),A
0097 509C
0098 509C 0E 04 LD c,4
0099 509E ;LD HL,hstbuf
0100 509E wr4secs:
0101 509E 06 80 LD b,128
0102 50A0 wrByte:
0103 50A0
0104 50A0 DB 89 wrWait2: IN A,(SD_STATUS)
0105 50A2 FE A0 CP 160 ; Write buffer empty
0106 50A4 20 FA JR NZ,wrWait2
0107 50A6
0108 50A6 ; UPDATE S0urceror, inserted wait cycle between IN and OUT
0109 50A6 ; to resolve unknown write issue in sd_controller.vhd in combination
0110 50A6 ; with MISTer virtual SD interface sys/sd_card.sv
0111 50A6 ; which results in hangs or write errors.
0112 50A6 C5 push bc
0113 50A7 06 32 ld b,50
0114 50A9 _again:
0115 50A9 10 FE djnz _again
0116 50AB C1 pop bc
0117 50AC ; END UPDATE
0118 50AC
0119 50AC 7E LD A,(HL)
0120 50AD D3 88 OUT (SD_DATA),A
0121 50AF 23 INC HL
0122 50B0 05 dec b
0123 50B1 20 ED JR NZ, wrByte
0124 50B3
0125 50B3 0D dec c
0126 50B4 20 E8 JR NZ,wr4secs
0127 50B6
0128 50B6 E1 POP HL
0129 50B7 C1 POP BC
0130 50B8 F1 POP AF
0131 50B9
0132 50B9 ;XOR a
0133 50B9 ;ld (erflag),a
0134 50B9 C9 RET
0135 50BA
0136 50BA
0137 50BA ;================================================================================================
0138 50BA ; Utilities
0139 50BA ;================================================================================================
0140 50BA
0141 50BA printInline:
0142 50BA E3 EX (SP),HL ; PUSH HL and put RET ADDress into HL
0143 50BB F5 PUSH AF
0144 50BC C5 PUSH BC
0145 50BD 7E nextILChar: LD A,(HL)
0146 50BE FE 00 CP 0
0147 50C0 28 04 JR Z,endOfPrint
0148 50C2 CF RST 08H
0149 50C3 23 INC HL
0150 50C4 18 F7 JR nextILChar
0151 50C6 23 endOfPrint: INC HL ; Get past "null" terminator
0152 50C7 C1 POP BC
0153 50C8 F1 POP AF
0154 50C9 E3 EX (SP),HL ; PUSH new RET ADDress on stack and restore HL
0155 50CA C9 RET
0156 50CB
0157 50CB 00 lba0 .DB 00h
0158 50CC 00 lba1 .DB 00h
0159 50CD 00 lba2 .DB 00h
0160 50CE 00 lba3 .DB 00h
0161 50CF 00 00 dmaAddr .dw 0
0162 50D1
0163 50D1 .END
tasm: Number of errors = 0
0001 0000 ;==================================================================================
0002 0000 ; Contents of this file are copyright Grant Searle
0003 0000 ;
0004 0000 ; You have permission to use this for NON COMMERCIAL USE ONLY
0005 0000 ; If you wish to use it elsewhere, please include an acknowledgement to myself.
0006 0000 ;
0007 0000 ; http://searle.hostei.com/grant/index.html
0008 0000 ;
0009 0000 ; eMail: home.micros01@btinternet.com
0010 0000 ;
0011 0000 ; If the above don't work, please perform an Internet search to see if I have
0012 0000 ; updated the web page hosting service.
0013 0000 ;
0014 0000 ;==================================================================================
0015 0000
0016 0000 loadAddr .EQU 0D000h
0017 0000 numSecs .EQU 24 ; Number of 512 sectors to be loaded
0018 0000
0019 0000 SD_DATA .EQU 088H
0020 0000 SD_CONTROL .EQU 089H
0021 0000 SD_STATUS .EQU 089H
0022 0000 SD_LBA0 .EQU 08AH
0023 0000 SD_LBA1 .EQU 08BH
0024 0000 SD_LBA2 .EQU 08CH
0025 0000
0026 0000 LF .EQU 0AH ;line feed
0027 0000 FF .EQU 0CH ;form feed
0028 0000 CR .EQU 0DH ;carriage RETurn
0029 0000
0030 0000 ;================================================================================================
0031 0000
0032 5000 .ORG 5000H ; Loader origin.
0033 5000
0034 5000 CD BA 50 CALL printInline
0035 5003 43 50 2F 4D .TEXT "CP/M System Transfer by G. Searle 2012-13"
0035 5007 20 53 79 73
0035 500B 74 65 6D 20
0035 500F 54 72 61 6E
0035 5013 73 66 65 72
0035 5017 20 62 79 20
0035 501B 47 2E 20 53
0035 501F 65 61 72 6C
0035 5023 65 20 32 30
0035 5027 31 32 2D 31
0035 502B 33
0036 502C 0D 0A 00 .DB CR,LF,0
0037 502F
0038 502F 06 18 LD B,numSecs
0039 5031
0040 5031 3E 00 LD A,0
0041 5033 32 CB 50 LD (lba0),A
0042 5036 32 CC 50 ld (lba1),A
0043 5039 32 CD 50 ld (lba2),A
0044 503C 32 CE 50 ld (lba3),A
0045 503F 21 00 D0 LD HL,loadAddr
0046 5042 22 CF 50 LD (dmaAddr),HL
0047 5045 processSectors:
0048 5045
0049 5045 CD 8C 50 call writehst
0050 5048
0051 5048 11 00 02 LD DE,0200H
0052 504B 2A CF 50 LD HL,(dmaAddr)
0053 504E 19 ADD HL,DE
0054 504F 22 CF 50 LD (dmaAddr),HL
0055 5052 3A CB 50 LD A,(lba0)
0056 5055 3C INC A
0057 5056 32 CB 50 LD (lba0),A
0058 5059
0059 5059 10 EA djnz processSectors
0060 505B
0061 505B CD BA 50 CALL printInline
0062 505E 0D 0A .DB CR,LF
0063 5060 53 79 73 74 .TEXT "System transfer complete"
0063 5064 65 6D 20 74
0063 5068 72 61 6E 73
0063 506C 66 65 72 20
0063 5070 63 6F 6D 70
0063 5074 6C 65 74 65
0064 5078 0D 0A 00 .DB CR,LF,0
0065 507B
0066 507B C9 RET
0067 507C
0068 507C ; =========================================================================
0069 507C ; Disk routines as used in CBIOS
0070 507C ; =========================================================================
0071 507C setLBAaddr:
0072 507C 3A CD 50 LD A,(lba2)
0073 507F D3 8C OUT (SD_LBA2),A
0074 5081 3A CC 50 LD A,(lba1)
0075 5084 D3 8B OUT (SD_LBA1),A
0076 5086 3A CB 50 LD A,(lba0)
0077 5089 D3 8A OUT (SD_LBA0),A
0078 508B C9 ret
0079 508C
0080 508C ;================================================================================================
0081 508C ; Write physical sector to host
0082 508C ;================================================================================================
0083 508C
0084 508C writehst:
0085 508C F5 PUSH AF
0086 508D C5 PUSH BC
0087 508E E5 PUSH HL
0088 508F
0089 508F DB 89 wrWait1: IN A,(SD_STATUS)
0090 5091 FE 80 CP 128
0091 5093 20 FA JR NZ,wrWait1
0092 5095
0093 5095 CD 7C 50 CALL setLBAaddr
0094 5098
0095 5098 3E 01 LD A,$01 ; 01 = Write block
0096 509A D3 89 OUT (SD_CONTROL),A
0097 509C
0098 509C 0E 04 LD c,4
0099 509E ;LD HL,hstbuf
0100 509E wr4secs:
0101 509E 06 80 LD b,128
0102 50A0 wrByte:
0103 50A0
0104 50A0 DB 89 wrWait2: IN A,(SD_STATUS)
0105 50A2 FE A0 CP 160 ; Write buffer empty
0106 50A4 20 FA JR NZ,wrWait2
0107 50A6
0108 50A6 ; UPDATE S0urceror, inserted wait cycle between IN and OUT
0109 50A6 ; to resolve unknown write issue in sd_controller.vhd in combination
0110 50A6 ; with MISTer virtual SD interface sys/sd_card.sv
0111 50A6 ; which results in hangs or write errors.
0112 50A6 C5 push bc
0113 50A7 06 32 ld b,50
0114 50A9 _again:
0115 50A9 10 FE djnz _again
0116 50AB C1 pop bc
0117 50AC ; END UPDATE
0118 50AC
0119 50AC 7E LD A,(HL)
0120 50AD D3 88 OUT (SD_DATA),A
0121 50AF 23 INC HL
0122 50B0 05 dec b
0123 50B1 20 ED JR NZ, wrByte
0124 50B3
0125 50B3 0D dec c
0126 50B4 20 E8 JR NZ,wr4secs
0127 50B6
0128 50B6 E1 POP HL
0129 50B7 C1 POP BC
0130 50B8 F1 POP AF
0131 50B9
0132 50B9 ;XOR a
0133 50B9 ;ld (erflag),a
0134 50B9 C9 RET
0135 50BA
0136 50BA
0137 50BA ;================================================================================================
0138 50BA ; Utilities
0139 50BA ;================================================================================================
0140 50BA
0141 50BA printInline:
0142 50BA E3 EX (SP),HL ; PUSH HL and put RET ADDress into HL
0143 50BB F5 PUSH AF
0144 50BC C5 PUSH BC
0145 50BD 7E nextILChar: LD A,(HL)
0146 50BE FE 00 CP 0
0147 50C0 28 04 JR Z,endOfPrint
0148 50C2 CF RST 08H
0149 50C3 23 INC HL
0150 50C4 18 F7 JR nextILChar
0151 50C6 23 endOfPrint: INC HL ; Get past "null" terminator
0152 50C7 C1 POP BC
0153 50C8 F1 POP AF
0154 50C9 E3 EX (SP),HL ; PUSH new RET ADDress on stack and restore HL
0155 50CA C9 RET
0156 50CB
0157 50CB 00 lba0 .DB 00h
0158 50CC 00 lba1 .DB 00h
0159 50CD 00 lba2 .DB 00h
0160 50CE 00 lba3 .DB 00h
0161 50CF 00 00 dmaAddr .dw 0
0162 50D1
0163 50D1 .END
tasm: Number of errors = 0

View File

@@ -710,45 +710,78 @@ setLBAaddr:
;================================================================================================
readhst:
PUSH AF
PUSH BC
PUSH HL
PUSH AF
PUSH BC
PUSH HL
rdWait1: IN A,(SD_STATUS)
CP 128
JR NZ,rdWait1
CALL setLBAaddr
LD A,$00 ; 00 = Read block
OUT (SD_CONTROL),A
rdWait1: IN A,(SD_STATUS)
CP 128 ; Check for ready status
JR NZ,rdWait1
LD c,4
LD HL,hstbuf
; Add multiple status checks before starting read
LD B,3 ; Check status 3 times
rdCheck1:
IN A,(SD_STATUS)
CP 128
JR NZ,rdCheck1
DJNZ rdCheck1
CALL setLBAaddr
LD A,$00 ; 00 = Read block
OUT (SD_CONTROL),A
LD c,4
LD HL,hstbuf
rd4secs:
LD b,128
LD b,128
rdByte:
rdWait2: IN A,(SD_STATUS)
CP 224 ; Read byte waiting
JR NZ,rdWait2
rdWait2: IN A,(SD_STATUS)
CP 224 ; Read byte waiting
JR NZ,rdWait2
IN A,(SD_DATA)
; Add extra validation checks before each read
PUSH BC ; Save main counters
LD B,2 ; Check status twice
rdCheck2:
IN A,(SD_STATUS)
CP 224
JR NZ,rdCheck2
DJNZ rdCheck2
POP BC ; Restore main counters
LD (HL),A
INC HL
dec b
JR NZ, rdByte
dec c
JR NZ,rd4secs
IN A,(SD_DATA)
POP HL
POP BC
POP AF
; Add small delay after read before store
PUSH BC
LD B,10
rdDelay:
DJNZ rdDelay
POP BC
XOR a
ld (erflag),a
RET
LD (HL),A
INC HL
dec b
JR NZ, rdByte
dec c
JR NZ,rd4secs
; Add final wait before returning
LD B,0
rdWaitFinal:
IN A,(SD_STATUS)
CP 128 ; Wait for ready status
JR NZ,rdWaitFinal
DJNZ rdWaitFinal
POP HL
POP BC
POP AF
XOR a
ld (erflag),a
RET
;================================================================================================
@@ -756,56 +789,63 @@ rdWait2: IN A,(SD_STATUS)
;================================================================================================
writehst:
PUSH AF
PUSH BC
PUSH HL
PUSH AF
PUSH BC
PUSH HL
wrWait1: IN A,(SD_STATUS)
CP 128
JR NZ,wrWait1
wrWait1: IN A,(SD_STATUS)
CP 128
JR NZ,wrWait1
CALL setLBAaddr
LD A,$01 ; 01 = Write block
OUT (SD_CONTROL),A
LD c,4
LD HL,hstbuf
CALL setLBAaddr
LD A,$01 ; 01 = Write block
OUT (SD_CONTROL),A
LD c,4
LD HL,hstbuf
wr4secs:
LD b,128
LD b,128
wrByte:
wrWait2: IN A,(SD_STATUS)
CP 160 ; Write buffer empty
JR NZ,wrWait2
wrWait2: IN A,(SD_STATUS)
CP 160 ; Write buffer empty
JR NZ,wrWait2
; UPDATE S0urceror, inserted wait cycle between IN and OUT
; to resolve unknown write issue in sd_controller.vhd in combination
; with MISTer virtual SD interface sys/sd_card.sv
; which results in hangs or write errors.
push bc
ld b,50
_again:
djnz _again
pop bc
; END UPDATE
; Add multiple status checks before proceeding with write
PUSH BC ; Save main counters
LD B,3 ; Check status 3 times
wrCheck:
IN A,(SD_STATUS)
CP 160
JR NZ,wrCheck
DJNZ wrCheck
POP BC ; Restore main counters
LD A,(HL)
OUT (SD_DATA),A
INC HL
dec b
JR NZ, wrByte
LD A,(HL)
OUT (SD_DATA),A
INC HL
dec b
JR NZ,wrByte
dec c
JR NZ,wr4secs
dec c
JR NZ,wr4secs
POP HL
POP BC
POP AF
XOR a
ld (erflag),a
RET
; Add final wait before returning
LD B,0
wrWaitFinal:
IN A,(SD_STATUS)
CP 128 ; Wait for ready status
JR NZ,wrWaitFinal
DJNZ wrWaitFinal
POP HL
POP BC
POP AF
XOR a
ld (erflag),a
RET
;================================================================================================
; Utilities

View File

@@ -589,45 +589,75 @@ setLBAaddr:
;================================================================================================
readhst:
PUSH AF
PUSH BC
PUSH HL
PUSH AF
PUSH BC
PUSH HL
rdWait1: IN A,(SD_STATUS)
CP 128
JR NZ,rdWait1
CALL setLBAaddr
LD A,$00 ; 00 = Read block
OUT (SD_CONTROL),A
rdWait1: IN A,(SD_STATUS)
CP 128 ; Check for ready status
JR NZ,rdWait1
LD c,4
; LD HL,hstbuf
; Add multiple status checks before starting read
LD B,3 ; Check status 3 times
rdCheck1:
IN A,(SD_STATUS)
CP 128
JR NZ,rdCheck1
DJNZ rdCheck1
CALL setLBAaddr
LD A,$00 ; 00 = Read block
OUT (SD_CONTROL),A
LD c,4
rd4secs:
LD b,128
LD b,128
rdByte:
rdWait2: IN A,(SD_STATUS)
CP 224 ; Read byte waiting
JR NZ,rdWait2
rdWait2: IN A,(SD_STATUS)
CP 224 ; Read byte waiting
JR NZ,rdWait2
IN A,(SD_DATA)
; Add extra validation checks before each read
PUSH BC ; Save main counters
LD B,2 ; Check status twice
rdCheck2:
IN A,(SD_STATUS)
CP 224
JR NZ,rdCheck2
DJNZ rdCheck2
POP BC ; Restore main counters
LD (HL),A
INC HL
dec b
JR NZ, rdByte
dec c
JR NZ,rd4secs
IN A,(SD_DATA)
POP HL
POP BC
POP AF
; Add small delay after read before store
PUSH BC
LD B,10
rdDelay:
DJNZ rdDelay
POP BC
; XOR a
; ld (erflag),a
RET
LD (HL),A
INC HL
dec b
JR NZ, rdByte
dec c
JR NZ,rd4secs
; Add final wait before returning
LD B,0
rdWaitFinal:
IN A,(SD_STATUS)
CP 128 ; Wait for ready status
JR NZ,rdWaitFinal
DJNZ rdWaitFinal
POP HL
POP BC
POP AF
RET
;------------------------------------------------------------------------------
; END OF ROUTINES AS USED IN BIOS

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1 @@
`define BUILD_DATE "241216"
`define BUILD_DATE "241217"

Binary file not shown.