Browse Source

spirom: fix SPI ROM I/O and data downloading

Fix a number of timing problems in the spirom downloader. It now seems
to work well. However, new problem: execution from sdram?
H. Peter Anvin 3 years ago
parent
commit
8b67b5db30
19 changed files with 1905 additions and 1720 deletions
  1. 1 1
      fpga/Makefile
  2. 2 2
      fpga/max80.qpf
  3. 1 2
      fpga/max80.qsf
  4. 1 1
      fpga/max80.sdc
  5. 1741 1612
      fpga/output/sram.mif
  6. BIN
      fpga/output/v1.jic
  7. 16 16
      fpga/output/v1.pin
  8. BIN
      fpga/output/v1.sof
  9. BIN
      fpga/output/v2.jic
  10. 16 16
      fpga/output/v2.pin
  11. BIN
      fpga/output/v2.sof
  12. 69 49
      fpga/spirom.sv
  13. 5 5
      fpga/v2.qsf
  14. 1 1
      rv32/Makefile
  15. 1 1
      rv32/checksum.h
  16. 2 0
      rv32/console.h
  17. 39 8
      rv32/romcopy.c
  18. 10 1
      rv32/system.c
  19. 0 5
      rv32/test/main.c

+ 1 - 1
fpga/Makefile

@@ -21,7 +21,7 @@ QPOW    	= $(QU)_pow $(QOPT)
 
 outdir		= output
 
-PERL    = perl
+PERL		= /usr/bin/perl		# Otherwise Quartus has a cow...
 
 SUBDIRS     = usb
 PREREQFILES = $(outdir)/sram.mif

+ 2 - 2
fpga/max80.qpf

@@ -19,12 +19,12 @@
 #
 # Quartus Prime
 # Version 21.1.0 Build 842 10/21/2021 SJ Lite Edition
-# Date created = 01:12:15  January 28, 2022
+# Date created = 03:59:44  February 02, 2022
 #
 # -------------------------------------------------------------------------- #
 
 QUARTUS_VERSION = "21.1"
-DATE = "01:12:15  January 28, 2022"
+DATE = "03:59:44  February 02, 2022"
 
 # Revisions
 

+ 1 - 2
fpga/max80.qsf

@@ -126,7 +126,7 @@ set_global_assignment -name CYCLONEIII_CONFIGURATION_DEVICE EPCQ128A
 set_global_assignment -name FORCE_CONFIGURATION_VCCIO ON
 set_global_assignment -name CONFIGURATION_VCCIO_LEVEL 3.3V
 
-set_global_assignment -name RESERVE_ALL_UNUSED_PINS_WEAK_PULLUP "AS OUTPUT DRIVING GROUND"
+set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED WITH WEAK PULL-UP"
 set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:scripts/preflow.tcl"
 set_global_assignment -name POST_MODULE_SCRIPT_FILE "quartus_sh:scripts/postmodule.tcl"
 
@@ -196,7 +196,6 @@ set_instance_assignment -name WEAK_PULL_UP_RESISTOR OFF -to rngio[0]
 set_instance_assignment -name WEAK_PULL_UP_RESISTOR OFF -to rngio[1]
 set_instance_assignment -name WEAK_PULL_UP_RESISTOR OFF -to rngio[2]
 
-
 set_global_assignment -name VERILOG_FILE usb/usb_desc.v
 set_global_assignment -name SYSTEMVERILOG_FILE usb/usb_serial/src_v/usb_cdc_core.sv
 set_global_assignment -name SYSTEMVERILOG_FILE usb/usb_serial/src_v/usbf_device_core.sv

+ 1 - 1
fpga/max80.sdc

@@ -124,4 +124,4 @@ set_multicycle_path -from $fast_mem_we -to $cpu_regs -start -setup 2
 set_multicycle_path -from $fast_mem_we -to $cpu_regs  -start -hold 1
 
 # -------- Random number generator pins are asynchronous --------
-set_false_path -from [get_keepers {*|rng|rngio*}] -to [get_keepers *]
+set_false_path -from [get_ports {rngio[*]}] -to [get_keepers *]

+ 1741 - 1612
fpga/output/sram.mif

@@ -6,16 +6,16 @@ DATA_RADIX = HEX;
 CONTENT BEGIN
 0000 : 00000000;
 0001 : 00000000;
-0002 : 4631DEFA;
+0002 : DA68A8E8;
 0003 : 00100000;
 0004 : C0102473;
 0005 : 00008137;
-0006 : 2A80006F;
+0006 : 2880006F;
 0007 : 00000000;
 0008 : 0001210B;
 0009 : 008DF413;
 000A : 00040863;
-000B : 3AD000EF;
+000B : 595000EF;
 000C : 408D8DB3;
 000D : 060D8063;
 000E : 00000493;
@@ -48,26 +48,26 @@ CONTENT BEGIN
 0029 : 0000250B;
 002A : 0005B00B;
 002B : 00000000;
-002C : 2850006F;
-002D : 5A80006F;
-002E : 5980006F;
-002F : 31D0006F;
-0030 : 5A80006F;
-0031 : 2710006F;
-0032 : 06D0106F;
-0033 : 2690006F;
-0034 : 2650006F;
-0035 : 2A90006F;
-0036 : 25D0006F;
-0037 : 2590006F;
-0038 : 2550006F;
-0039 : 2510006F;
+002C : 29F0006F;
+002D : 5880006F;
+002E : 5780006F;
+002F : 5050006F;
+0030 : 5880006F;
+0031 : 28B0006F;
+0032 : 2550106F;
+0033 : 2830006F;
+0034 : 27F0006F;
+0035 : 2C30006F;
+0036 : 2770006F;
+0037 : 2730006F;
+0038 : 26F0006F;
+0039 : 26B0006F;
 003A : 00000000;
 003B : 7C5C2D2F;
-003C : 4101D2B0;
+003C : 4101D2A0;
 003D : FFFFFFFF;
 003E : FFFFFFFF;
-003F : 00001B00;
+003F : 00001D04;
 0040 : 00000040;
 0041 : 00000000;
 0042 : 00000000;
@@ -172,1600 +172,1729 @@ CONTENT BEGIN
 00A5 : 00000000;
 00A6 : 00000000;
 00A7 : 00000000;
-00A8 : 00000000;
-00A9 : 00000000;
-00AA : 00000000;
-00AB : 00000000;
-00AC : 00000000;
-00AD : 00000000;
-00AE : 00000000;
-00AF : 00000000;
-00B0 : FFF04293;
-00B1 : 0602800B;
-00B2 : 00000193;
-00B3 : 0001A18B;
-00B4 : 12000513;
-00B5 : 2C000593;
-00B6 : 00052023;
-00B7 : 00052223;
-00B8 : 00052423;
-00B9 : 00052623;
-00BA : 00052823;
-00BB : 00052A23;
-00BC : 00052C23;
-00BD : 00052E23;
-00BE : 02050513;
-00BF : FCB56EE3;
-00C0 : 12802023;
-00C1 : 0040006F;
-00C2 : CE061101;
-00C3 : CA26CC22;
-00C4 : C64EC84A;
-00C5 : C256C452;
-00C6 : 2659C05A;
-00C7 : 1A604283;
-00C8 : 00028663;
-00C9 : 40007097;
-00CA : E2E080E7;
-00CB : 400074B7;
-00CC : 40007937;
-00CD : 5AFD4981;
-00CE : 1A448493;
-00CF : 20E90913;
-00D0 : 40007A37;
-00D1 : 0750008B;
-00D2 : 0810878B;
-00D3 : 1A704303;
-00D4 : 00030663;
-00D5 : 40001097;
-00D6 : 424080E7;
-00D7 : 3F3000EF;
-00D8 : 89C02403;
-00D9 : FE89F0E3;
-00DA : 00845393;
-00DB : 0FF47593;
-00DC : 93638626;
-00DD : 864A0003;
-00DE : 1AEA0513;
-00DF : 40001097;
-00E0 : 120080E7;
-00E1 : BF7D89A2;
-00E2 : 00000697;
-00E3 : D1468693;
-00E4 : 897D4690;
-00E5 : 8E49053E;
-00E6 : 8682C290;
-00E7 : 00000697;
-00E8 : D0068693;
-00E9 : 897D46D0;
-00EA : 8E49051E;
-00EB : 8682C290;
-00EC : F713C25D;
-00ED : 17930FF5;
-00EE : E2B30107;
-00EF : 931300E7;
-00F0 : 76930082;
-00F1 : 63B30015;
-00F2 : 87AA0053;
-00F3 : 4805EAC9;
-00F4 : 08C87163;
-00F5 : 0027F893;
-00F6 : 08089F63;
-00F7 : F6634EFD;
-00F8 : 0F1308CE;
-00F9 : 7F93FE06;
-00FA : 8F13FE0F;
-00FB : 87330207;
-00FC : A01901EF;
-00FD : 020F0F13;
-00FE : 0077A023;
-00FF : 0077A223;
-0100 : 0077A423;
-0101 : 0077A623;
-0102 : 0077A823;
-0103 : 0077AA23;
-0104 : 0077AC23;
-0105 : 0077AE23;
-0106 : 87FA86FA;
-0107 : FDE71CE3;
-0108 : 428D8A7D;
-0109 : 02C2F363;
-010A : FFC60313;
-010B : FFC37893;
-010C : 00478E93;
-010D : 01D88E33;
-010E : 0E91A011;
-010F : 0076A023;
-0110 : 86F687F6;
-0111 : FFCE9BE3;
-0112 : 73938A0D;
-0113 : 90630026;
-0114 : 8A050203;
-0115 : 8082E211;
-0116 : 00B78023;
-0117 : 07938082;
-0118 : 00230015;
-0119 : 167D0075;
-011A : 86BEB79D;
-011B : 9023BF5D;
-011C : 078900B7;
-011D : 9023BFF9;
-011E : 16790077;
-011F : BFB90789;
-0120 : 00000000;
-0121 : 00B567B3;
-0122 : 8B8D8FD1;
-0123 : 04079263;
-0124 : 00C50733;
-0125 : 8A7186AA;
-0126 : 40C007B3;
-0127 : 4C478067;
-0128 : 02000613;
-0129 : CEDC4DDC;
-012A : CE9C4D9C;
-012B : CADC49DC;
-012C : CA9C499C;
-012D : C6DC45DC;
-012E : C69C459C;
-012F : C2DC41DC;
-0130 : C29C419C;
-0131 : 96B295B2;
-0132 : FCE6ECE3;
-0133 : 00018082;
-0134 : 00C50733;
-0135 : 00050693;
-0136 : 0005C783;
-0137 : 00F68023;
-0138 : 06850585;
-0139 : FEE6EAE3;
-013A : 00008082;
-013B : 46254721;
-013C : 01C55693;
-013D : 05700793;
-013E : 64630512;
-013F : 079300D6;
-0140 : 82B30300;
-0141 : 002300D7;
-0142 : 177D9850;
-0143 : 8082F375;
-0144 : CE061101;
-0145 : CA26CC22;
-0146 : C64EC84A;
-0147 : C256C452;
-0148 : 297387AA;
-0149 : 84933430;
-014A : 64090015;
-014B : FFE4FA13;
-014C : 94840693;
-014D : FFCA0993;
-014E : 94840413;
-014F : 4AB54E29;
-0150 : 0006C703;
-0151 : E3710685;
-0152 : 483548A9;
-0153 : 0007C083;
-0154 : 93630785;
-0155 : 02930C00;
-0156 : 45290084;
-0157 : C30343B5;
-0158 : 02850002;
-0159 : 0C031163;
-015A : 3749854E;
-015B : 00F40393;
-015C : 45B54629;
-015D : 0003C503;
-015E : ED4D0385;
-015F : 0029D583;
-0160 : FFCA5803;
-0161 : 01059613;
-0162 : 01060533;
-0163 : 08933785;
-0164 : 43290144;
-0165 : C98342B5;
-0166 : 08850008;
-0167 : 0A099363;
-0168 : 4935854A;
-0169 : 4A2937A1;
-016A : 99200023;
-016B : 99400023;
-016C : 491D4481;
-016D : 02000A13;
-016E : 49A14AB5;
-016F : 85334401;
-0170 : 33D90084;
-0171 : 0E133725;
-0172 : 15630200;
-0173 : 00230124;
-0174 : 4E299950;
-0175 : 99C00023;
-0176 : 12E30405;
-0177 : 04A1FF34;
-0178 : FD449EE3;
-0179 : C0102EF3;
-017A : 1908BF37;
-017B : 0FFF0F93;
-017C : C01026F3;
-017D : 41D68733;
-017E : FEEFFCE3;
-017F : 878B57FD;
-0180 : 40850607;
-0181 : 80102623;
-0182 : 1463BFF5;
-0183 : 002301C7;
-0184 : 00239950;
-0185 : B72D98E0;
-0186 : 01109463;
-0187 : 99000023;
-0188 : 98100023;
-0189 : 1463B725;
-018A : 002300A3;
-018B : 00239870;
-018C : B7359860;
-018D : 00C51463;
-018E : 98B00023;
-018F : 98A00023;
-0190 : 9463BF15;
-0191 : 00230069;
-0192 : 00239850;
-0193 : B7A19930;
-0194 : 11416509;
-0195 : 96E50513;
-0196 : 3D5DC606;
-0197 : 11416509;
-0198 : 97950513;
-0199 : 356DC606;
-019A : 12400293;
-019B : 0002A783;
-019C : 00178313;
-019D : 0062A023;
-019E : 01F37393;
-019F : 02039163;
-01A0 : 00535513;
-01A1 : 00357593;
-01A2 : 0EC00693;
-01A3 : 00B68833;
-01A4 : 00084883;
-01A5 : 00234E21;
-01A6 : 00239910;
-01A7 : 808299C0;
-01A8 : CE061101;
-01A9 : CA26CC22;
-01AA : C64EC84A;
-01AB : C256C452;
-01AC : C0102773;
-01AD : 12E02423;
-01AE : DE900093;
-01AF : 0610078B;
-01B0 : 02936409;
-01B1 : 83139484;
-01B2 : 04130452;
-01B3 : 49299484;
-01B4 : 43834535;
-01B5 : 03050003;
-01B6 : 18039163;
-01B7 : 85136489;
-01B8 : 48A9B6E4;
-01B9 : 45834835;
-01BA : 05050005;
-01BB : 16059E63;
-01BC : 00234635;
-01BD : 46A998C0;
-01BE : 98D00023;
-01BF : 2423481D;
-01C0 : 58FD8100;
-01C1 : 0710090B;
-01C2 : 20097993;
-01C3 : FE098CE3;
-01C4 : 193ACA37;
-01C5 : 40000AB7;
-01C6 : 40008E37;
-01C7 : F4D57EB7;
-01C8 : 604A0613;
-01C9 : 000A8693;
-01CA : 448159FD;
-01CB : 45014A01;
-01CC : 918E0093;
-01CD : 25FE8A93;
-01CE : 1216EF63;
-01CF : 07A40F13;
-01D0 : 47B54729;
-01D1 : 000F4F83;
-01D2 : 9D630F05;
-01D3 : 3B79140F;
-01D4 : 09040713;
-01D5 : 4F354FA9;
-01D6 : 00074783;
-01D7 : 9A630705;
-01D8 : 25031407;
-01D9 : 33590080;
-01DA : 002342B5;
-01DB : 43299850;
-01DC : 98600023;
-01DD : 09B40393;
-01DE : 4E354EA9;
-01DF : 0003C503;
-01E0 : 1F630385;
-01E1 : 854E1205;
-01E2 : 05933395;
-01E3 : 00230200;
-01E4 : C51398B0;
-01E5 : 3B99FFF4;
-01E6 : 00234635;
-01E7 : 46A998C0;
-01E8 : 98D00023;
-01E9 : 140A1163;
-01EA : 400089B7;
-01EB : 40013A37;
-01EC : 89134881;
-01ED : 06939189;
-01EE : 6B632B0A;
-01EF : 9B6312D9;
-01F0 : 0F931408;
-01F1 : 47198080;
-01F2 : 00EFA023;
-01F3 : A0234795;
-01F4 : 041300FF;
-01F5 : 46290E54;
-01F6 : 408345B5;
-01F7 : 04050004;
-01F8 : 12009F63;
-01F9 : C01022F3;
-01FA : 1908B337;
-01FB : 0FF30393;
-01FC : C0102573;
-01FD : 405505B3;
-01FE : FEB3FCE3;
-01FF : 00234635;
-0200 : 46A998C0;
-0201 : 400074B7;
-0202 : 98D00023;
-0203 : 1D948813;
-0204 : 43B54529;
-0205 : 00084883;
-0206 : 99630805;
-0207 : 20971008;
-0208 : 80E74000;
-0209 : 7937FD60;
-020A : 09934000;
-020B : 43291F39;
-020C : CA034435;
-020D : 09850009;
-020E : 100A1163;
-020F : 80002A83;
-0210 : 38584E37;
-0211 : 14DE0E93;
-0212 : 11DA8F63;
-0213 : 40007737;
-0214 : 1F770093;
-0215 : 4AB544A9;
-0216 : 9463A8F5;
-0217 : 00230123;
-0218 : 002398A0;
-0219 : B5B59870;
-021A : 01159463;
-021B : 99000023;
-021C : 98B00023;
-021D : A283BD8D;
-021E : 43330006;
-021F : A0230056;
-0220 : A3830066;
-0221 : 06330006;
-0222 : A0230356;
-0223 : C5B30056;
-0224 : 95160063;
-0225 : 00BA6A33;
-0226 : 0054E4B3;
-0227 : 0059F9B3;
-0228 : BD590691;
-0229 : 00EF9463;
-022A : 98F00023;
-022B : 99F00023;
-022C : 9463BD51;
-022D : 002301F7;
-022E : 002399E0;
-022F : BD6998F0;
-0230 : 01D51463;
-0231 : 99C00023;
-0232 : 98A00023;
-0233 : 1463BD45;
-0234 : 00230099;
-0235 : 00239900;
-0236 : C9039920;
-0237 : 08850008;
-0238 : FE0917E3;
-0239 : 0893B5D1;
-023A : 44A90B44;
-023B : B7F54835;
-023C : 00092803;
-023D : E8B30911;
-023E : B5C10108;
-023F : 015F1463;
-0240 : 99C00023;
-0241 : 99E00023;
-0242 : 000ECF03;
-0243 : 17E30E85;
-0244 : BD45FE0F;
-0245 : 0CC40E93;
-0246 : 4E354AA9;
-0247 : 9463B7F5;
-0248 : 002300C0;
-0249 : 002398B0;
-024A : BD459810;
-024B : 00A89463;
-024C : 98700023;
-024D : 99100023;
-024E : 1463BDF1;
-024F : 0023006A;
-0250 : 00239880;
-0251 : B5F59940;
-0252 : 00929463;
-0253 : 99500023;
-0254 : 98500023;
-0255 : 0000C283;
-0256 : 97E30085;
-0257 : 1097FE02;
-0258 : 80E74000;
-0259 : 4583AB20;
-025A : 46038060;
-025B : 46838050;
-025C : 47038040;
-025D : 7F378070;
-025E : 05134000;
-025F : 1097271F;
+00A8 : FFF04293;
+00A9 : 0602800B;
+00AA : 00000193;
+00AB : 0001A18B;
+00AC : 12000513;
+00AD : 2A000593;
+00AE : 00052023;
+00AF : 00052223;
+00B0 : 00052423;
+00B1 : 00052623;
+00B2 : 00052823;
+00B3 : 00052A23;
+00B4 : 00052C23;
+00B5 : 00052E23;
+00B6 : 02050513;
+00B7 : FCB56EE3;
+00B8 : 12802023;
+00B9 : 0040006F;
+00BA : CE061101;
+00BB : CA26CC22;
+00BC : C64EC84A;
+00BD : C256C452;
+00BE : 2659C05A;
+00BF : 16204283;
+00C0 : 00028663;
+00C1 : 40007097;
+00C2 : D46080E7;
+00C3 : 400074B7;
+00C4 : 40007937;
+00C5 : 5AFD4981;
+00C6 : 09C48493;
+00C7 : 10690913;
+00C8 : 40007A37;
+00C9 : 0750008B;
+00CA : 0810878B;
+00CB : 16304303;
+00CC : 00030663;
+00CD : 40001097;
+00CE : 444080E7;
+00CF : 5FB000EF;
+00D0 : 89C02403;
+00D1 : FE89F0E3;
+00D2 : 00845393;
+00D3 : 0FF47593;
+00D4 : 93638626;
+00D5 : 864A0003;
+00D6 : 0A6A0513;
+00D7 : 40001097;
+00D8 : 140080E7;
+00D9 : BF7D89A2;
+00DA : 00000697;
+00DB : D3468693;
+00DC : 897D4690;
+00DD : 8E49053E;
+00DE : 8682C290;
+00DF : 00000697;
+00E0 : D2068693;
+00E1 : 897D46D0;
+00E2 : 8E49051E;
+00E3 : 8682C290;
+00E4 : F713C25D;
+00E5 : 17930FF5;
+00E6 : E2B30107;
+00E7 : 931300E7;
+00E8 : 76930082;
+00E9 : 63B30015;
+00EA : 87AA0053;
+00EB : 4805EAC9;
+00EC : 08C87163;
+00ED : 0027F893;
+00EE : 08089F63;
+00EF : F6634EFD;
+00F0 : 0F1308CE;
+00F1 : 7F93FE06;
+00F2 : 8F13FE0F;
+00F3 : 87330207;
+00F4 : A01901EF;
+00F5 : 020F0F13;
+00F6 : 0077A023;
+00F7 : 0077A223;
+00F8 : 0077A423;
+00F9 : 0077A623;
+00FA : 0077A823;
+00FB : 0077AA23;
+00FC : 0077AC23;
+00FD : 0077AE23;
+00FE : 87FA86FA;
+00FF : FDE71CE3;
+0100 : 428D8A7D;
+0101 : 02C2F363;
+0102 : FFC60313;
+0103 : FFC37893;
+0104 : 00478E93;
+0105 : 01D88E33;
+0106 : 0E91A011;
+0107 : 0076A023;
+0108 : 86F687F6;
+0109 : FFCE9BE3;
+010A : 73938A0D;
+010B : 90630026;
+010C : 8A050203;
+010D : 8082E211;
+010E : 00B78023;
+010F : 07938082;
+0110 : 00230015;
+0111 : 167D0075;
+0112 : 86BEB79D;
+0113 : 9023BF5D;
+0114 : 078900B7;
+0115 : 9023BFF9;
+0116 : 16790077;
+0117 : BFB90789;
+0118 : 00000000;
+0119 : 00B567B3;
+011A : 8B8D8FD1;
+011B : 04079263;
+011C : 00C50733;
+011D : 8A7186AA;
+011E : 40C007B3;
+011F : 4A478067;
+0120 : 02000613;
+0121 : CEDC4DDC;
+0122 : CE9C4D9C;
+0123 : CADC49DC;
+0124 : CA9C499C;
+0125 : C6DC45DC;
+0126 : C69C459C;
+0127 : C2DC41DC;
+0128 : C29C419C;
+0129 : 96B295B2;
+012A : FCE6ECE3;
+012B : 00018082;
+012C : 00C50733;
+012D : 00050693;
+012E : 0005C783;
+012F : 00F68023;
+0130 : 06850585;
+0131 : FEE6EAE3;
+0132 : 00008082;
+0133 : 46254721;
+0134 : 01C55693;
+0135 : 05700793;
+0136 : 64630512;
+0137 : 079300D6;
+0138 : 82B30300;
+0139 : 002300D7;
+013A : 177D9850;
+013B : 8082F375;
+013C : CE061101;
+013D : CA26CC22;
+013E : C64EC84A;
+013F : C256C452;
+0140 : 297387AA;
+0141 : 84933430;
+0142 : 64090015;
+0143 : FFE4FA13;
+0144 : B3040693;
+0145 : FFCA0993;
+0146 : B3040413;
+0147 : 4AB54E29;
+0148 : 0006C703;
+0149 : E3710685;
+014A : 483548A9;
+014B : 0007C083;
+014C : 93630785;
+014D : 02930C00;
+014E : 45290084;
+014F : C30343B5;
+0150 : 02850002;
+0151 : 0C031163;
+0152 : 3749854E;
+0153 : 00F40393;
+0154 : 45B54629;
+0155 : 0003C503;
+0156 : ED4D0385;
+0157 : 0029D583;
+0158 : FFCA5803;
+0159 : 01059613;
+015A : 01060533;
+015B : 08933785;
+015C : 43290144;
+015D : C98342B5;
+015E : 08850008;
+015F : 0A099363;
+0160 : 4935854A;
+0161 : 4A2937A1;
+0162 : 99200023;
+0163 : 99400023;
+0164 : 491D4481;
+0165 : 02000A13;
+0166 : 49A14AB5;
+0167 : 85334401;
+0168 : 33D90084;
+0169 : 0E133725;
+016A : 15630200;
+016B : 00230124;
+016C : 4E299950;
+016D : 99C00023;
+016E : 12E30405;
+016F : 04A1FF34;
+0170 : FD449EE3;
+0171 : C0102EF3;
+0172 : 1908BF37;
+0173 : 0FFF0F93;
+0174 : C01026F3;
+0175 : 41D68733;
+0176 : FEEFFCE3;
+0177 : 878B57FD;
+0178 : 40850607;
+0179 : 80102623;
+017A : 1463BFF5;
+017B : 002301C7;
+017C : 00239950;
+017D : B72D98E0;
+017E : 01109463;
+017F : 99000023;
+0180 : 98100023;
+0181 : 1463B725;
+0182 : 002300A3;
+0183 : 00239870;
+0184 : B7359860;
+0185 : 00C51463;
+0186 : 98B00023;
+0187 : 98A00023;
+0188 : 9463BF15;
+0189 : 00230069;
+018A : 00239850;
+018B : B7A19930;
+018C : 11416509;
+018D : B5650513;
+018E : 3D5DC606;
+018F : 11416509;
+0190 : B6150513;
+0191 : 356DC606;
+0192 : 12400293;
+0193 : 0002A783;
+0194 : 00178313;
+0195 : 0062A023;
+0196 : 01F37393;
+0197 : 02039163;
+0198 : 00535513;
+0199 : 00357593;
+019A : 0EC00693;
+019B : 00B68833;
+019C : 00084883;
+019D : 00234E21;
+019E : 00239910;
+019F : 808299C0;
+01A0 : CE061101;
+01A1 : CA26CC22;
+01A2 : C64EC84A;
+01A3 : C256C452;
+01A4 : C0102773;
+01A5 : 12E02423;
+01A6 : DE900093;
+01A7 : 0610078B;
+01A8 : 02936409;
+01A9 : 8313B304;
+01AA : 04130452;
+01AB : 4A29B304;
+01AC : 43834535;
+01AD : 03050003;
+01AE : 1A039C63;
+01AF : 85136489;
+01B0 : 47A9D724;
+01B1 : 45834EB5;
+01B2 : 05050005;
+01B3 : 1A059963;
+01B4 : 00234635;
+01B5 : 46A998C0;
+01B6 : 98D00023;
+01B7 : 2423481D;
+01B8 : 58FD8100;
+01B9 : 0710090B;
+01BA : 20097993;
+01BB : FE098CE3;
+01BC : 193ACA37;
+01BD : 40000AB7;
+01BE : 40008E37;
+01BF : F4D57EB7;
+01C0 : 604A0F13;
+01C1 : 448159FD;
+01C2 : 45014901;
+01C3 : 000A8F93;
+01C4 : 818E0613;
+01C5 : 25FE8593;
+01C6 : 16CFEA63;
+01C7 : 07A40F13;
+01C8 : 40B54729;
+01C9 : 000F4F83;
+01CA : 97630F05;
+01CB : 3B79180F;
+01CC : 09040713;
+01CD : 43B54AA9;
+01CE : 00074783;
+01CF : 94630705;
+01D0 : 25031807;
+01D1 : 33590080;
+01D2 : 002342B5;
+01D3 : 43299850;
+01D4 : 98600023;
+01D5 : 09B40393;
+01D6 : 42B54329;
+01D7 : 0003C503;
+01D8 : 19630385;
+01D9 : 854E1605;
+01DA : 05933395;
+01DB : C5130200;
+01DC : 0023FFF4;
+01DD : 3B9998B0;
+01DE : 002344B5;
+01DF : 46299890;
+01E0 : 98C00023;
+01E1 : 0B440813;
+01E2 : 47B54A29;
+01E3 : 00084883;
+01E4 : 98630805;
+01E5 : 86B71408;
+01E6 : 89934000;
+01E7 : A5038106;
+01E8 : 0A130009;
+01E9 : 4AB50200;
+01EA : 00233315;
+01EB : A5039940;
+01EC : 3B290049;
+01ED : 00234E29;
+01EE : 00239950;
+01EF : 156399C0;
+01F0 : 87B71409;
+01F1 : 30B74000;
+01F2 : 4F814001;
+01F3 : 81878913;
+01F4 : 2A008E93;
+01F5 : 13D96F63;
+01F6 : 140F9F63;
+01F7 : 80800513;
+01F8 : C10C4599;
+01F9 : C1044495;
+01FA : 0F140413;
+01FB : 46B54E29;
+01FC : 00044603;
+01FD : 15630405;
+01FE : 28731406;
+01FF : B8B7C010;
+0200 : 86931908;
+0201 : 29F30FF8;
+0202 : 8A33C010;
+0203 : FCE34109;
+0204 : 4AB5FF46;
+0205 : 99500023;
+0206 : 79374E29;
+0207 : 00234000;
+0208 : 0E9399C0;
+0209 : 48A90D19;
+020A : CF034835;
+020B : 0E85000E;
+020C : 100F1F63;
+020D : 40002097;
+020E : EB8080E7;
+020F : 40007FB7;
+0210 : 0EBF8793;
+0211 : 44354629;
+0212 : 0007C083;
+0213 : 97630785;
+0214 : 22831000;
+0215 : 43378000;
+0216 : 07133858;
+0217 : 846314D3;
+0218 : 773712E2;
+0219 : 05134000;
+021A : 44A90EF7;
+021B : A2214AB5;
+021C : 01439463;
+021D : 98A00023;
+021E : 98700023;
+021F : 9463BD1D;
+0220 : 002300F5;
+0221 : 002399D0;
+0222 : BD3598B0;
+0223 : 000FA683;
+0224 : 48B30F91;
+0225 : AE2300DF;
+0226 : A803FF1F;
+0227 : 0F33FFCF;
+0228 : AE2302BF;
+0229 : 4E33FEDF;
+022A : 95360118;
+022B : 01C96933;
+022C : F9B38CD5;
+022D : B58D00D9;
+022E : 00EF9463;
+022F : 98100023;
+0230 : 99F00023;
+0231 : 9463B585;
+0232 : 00230157;
+0233 : 00239870;
+0234 : B59D98F0;
+0235 : 00651463;
+0236 : 98500023;
+0237 : 98A00023;
+0238 : 9463BDB5;
+0239 : 00230148;
+023A : 002398F0;
+023B : BD799910;
+023C : 012F9463;
+023D : 99D00023;
+023E : 99F00023;
+023F : 000F4F83;
+0240 : 97E30F05;
+0241 : BD75FE0F;
+0242 : 0C040F13;
+0243 : 4EB54929;
+0244 : 2F03B7F5;
+0245 : 09110009;
+0246 : 01EFEFB3;
+0247 : 9463BD65;
+0248 : 00230053;
+0249 : 00239860;
+024A : 43839870;
+024B : 07050007;
+024C : FE0397E3;
+024D : 0713B565;
+024E : 42A90D84;
+024F : B7F54335;
+0250 : 01C61463;
+0251 : 98D00023;
+0252 : 98C00023;
+0253 : 1463B555;
+0254 : 0023011F;
+0255 : 00239900;
+0256 : BDC199E0;
+0257 : 00C09463;
+0258 : 98800023;
+0259 : 98100023;
+025A : 9463B5C5;
+025B : 00230095;
+025C : 00239950;
+025D : 458398B0;
+025E : 05050005;
+025F : 1097F5FD;
 0260 : 80E74000;
-0261 : 4F83B1E0;
-0262 : 47038060;
-0263 : 84638070;
-0264 : 7EB702EF;
-0265 : 8F934000;
-0266 : 4F2920FE;
-0267 : A03949B5;
-0268 : 01E79463;
-0269 : 99300023;
-026A : 98F00023;
-026B : 000FC783;
-026C : F7FD0F85;
-026D : 47B5B76D;
-026E : 98F00023;
-026F : 70B74429;
-0270 : 00234000;
-0271 : 82939880;
-0272 : 4A2923E0;
-0273 : C3034E35;
-0274 : 02850002;
-0275 : 12031B63;
-0276 : 111113B7;
-0277 : 44332537;
-0278 : 400135B7;
-0279 : 8A134401;
-027A : 09931113;
-027B : 84932115;
-027C : 79370405;
-027D : 4AA14000;
-027E : 03440633;
-027F : 00241693;
-0280 : 00D48833;
-0281 : 29C90513;
-0282 : 05B30405;
-0283 : 20230136;
-0284 : 278300B8;
-0285 : 10970008;
-0286 : 80E74000;
-0287 : 1DE3A860;
-0288 : 48B5FD54;
-0289 : 99100023;
-028A : 00234E29;
-028B : 498199C0;
-028C : 9E934A21;
-028D : 8F330029;
-028E : 258301D4;
-028F : 0513000F;
-0290 : 098529C9;
-0291 : 40001097;
-0292 : A58080E7;
-0293 : FF4993E3;
-0294 : 40007FB7;
-0295 : 250F8793;
-0296 : 483548A9;
-0297 : 0007C703;
-0298 : EB5D0785;
-0299 : 64894AA1;
-029A : 0804878B;
-029B : C0002583;
-029C : 29C90513;
-029D : 10971AFD;
-029E : 80E74000;
-029F : 95E3A260;
-02A0 : 7937FE0A;
-02A1 : 00934000;
-02A2 : 46A920C9;
-02A3 : C2834635;
-02A4 : 00850000;
-02A5 : 08029963;
+0261 : 4583A920;
+0262 : 46038060;
+0263 : 46838050;
+0264 : 47038040;
+0265 : 73B78070;
+0266 : 85134000;
+0267 : 10971693;
+0268 : 80E74000;
+0269 : 4503AFE0;
+026A : 45838060;
+026B : 05638070;
+026C : 70B702B5;
+026D : 83134000;
+026E : 42A91070;
+026F : A03949B5;
+0270 : 00539463;
+0271 : 99300023;
+0272 : 98700023;
+0273 : 00034383;
+0274 : 97E30305;
+0275 : B765FE03;
+0276 : 002344B5;
+0277 : 44299890;
+0278 : 40007637;
+0279 : 98800023;
+027A : 13660813;
+027B : 47B54A29;
+027C : 00084883;
+027D : 97630805;
+027E : 3AB71208;
+027F : 16B74001;
+0280 : 29B71111;
+0281 : 84934433;
+0282 : 4401040A;
+0283 : 11168A13;
+0284 : 21198993;
+0285 : 40007937;
+0286 : 0E334AA1;
+0287 : 1E930344;
+0288 : 8F330024;
+0289 : 051301D4;
+028A : 04051949;
+028B : 013E05B3;
+028C : 00BF2023;
+028D : 000F2783;
+028E : 40001097;
+028F : A64080E7;
+0290 : FD541DE3;
+0291 : 00234FB5;
+0292 : 47A999F0;
+0293 : 98F00023;
+0294 : 4A214981;
+0295 : 00299093;
+0296 : 001482B3;
+0297 : 0002A583;
+0298 : 19490513;
+0299 : 10970985;
+029A : 80E74000;
+029B : 93E3A360;
+029C : 7337FF49;
+029D : 03934000;
+029E : 4FA91483;
+029F : C7034F35;
+02A0 : 03850003;
+02A1 : 4AA1E75D;
+02A2 : 878B6489;
+02A3 : 25830804;
+02A4 : 0513C000;
+02A5 : 1AFD1949;
 02A6 : 40001097;
-02A7 : DB4080E7;
-02A8 : 04134311;
-02A9 : 20238080;
-02AA : 10970064;
-02AB : 80E74000;
-02AC : 2097AC00;
-02AD : 80E74000;
-02AE : 438D0260;
-02AF : 00742023;
-02B0 : 40001097;
-02B1 : 4B2080E7;
-02B2 : 40002097;
-02B3 : A76080E7;
-02B4 : 40002097;
-02B5 : F44080E7;
-02B6 : C0084509;
-02B7 : 40002097;
-02B8 : 008080E7;
-02B9 : C00C4585;
+02A7 : A04080E7;
+02A8 : FE0A95E3;
+02A9 : 40007937;
+02AA : 10490513;
+02AB : 4E354EA9;
+02AC : 00054583;
+02AD : E5C90505;
+02AE : 46112AED;
+02AF : 80800413;
+02B0 : 1097C010;
+02B1 : 80E74000;
+02B2 : 2097AA80;
+02B3 : 80E74000;
+02B4 : 480DF060;
+02B5 : 01042023;
+02B6 : 40001097;
+02B7 : 392080E7;
+02B8 : 40002097;
+02B9 : 956080E7;
 02BA : 40002097;
-02BB : DE6080E7;
-02BC : 88002623;
-02BD : 80002423;
-02BE : 446240F2;
-02BF : 494244D2;
-02C0 : 4A2249B2;
-02C1 : 61054A92;
-02C2 : 14638082;
-02C3 : 00230143;
-02C4 : 002399C0;
-02C5 : BD659860;
-02C6 : 01171463;
-02C7 : 99000023;
-02C8 : 98E00023;
-02C9 : 9463BF25;
-02CA : 002300D2;
-02CB : 002398C0;
-02CC : BFB19850;
-02CD : 95334785;
-02CE : 429300A7;
-02CF : 050BFFF5;
-02D0 : 80820655;
-02D1 : 00C02703;
-02D2 : 3B0002B7;
-02D3 : A0A02023;
-02D4 : 00E28333;
-02D5 : 00B303B3;
-02D6 : 2D000537;
-02D7 : A0702223;
-02D8 : 24238E49;
-02D9 : 8082A0C0;
-02DA : A0A02023;
-02DB : 200007B7;
-02DC : A0002223;
-02DD : 24238DDD;
-02DE : 8082A0B0;
-02DF : 12C00293;
-02E0 : 0002A703;
-02E1 : 00170693;
-02E2 : 00D2A023;
-02E3 : 4585CB19;
-02E4 : 02B70763;
-02E5 : 20000F13;
-02E6 : DFF00F93;
-02E7 : 07FF078B;
-02E8 : 05378082;
-02E9 : 83374000;
-02EA : 06134000;
-02EB : 03930005;
-02EC : 86339183;
-02ED : 458140C3;
-02EE : 00050513;
-02EF : 8837B761;
-02F0 : 3E374000;
-02F1 : 08934001;
-02F2 : 0E939188;
-02F3 : 85B32B0E;
-02F4 : 0513411E;
-02F5 : BF499188;
-02F6 : CE061101;
-02F7 : CC22CA26;
-02F8 : C64EC84A;
-02F9 : 5783C452;
-02FA : 00938880;
-02FB : 949318C0;
-02FC : F2930107;
-02FD : A4030FF7;
-02FE : 80C10000;
-02FF : 12028263;
-0300 : 89104303;
-0301 : 89004583;
-0302 : 76134695;
-0303 : F5930FF3;
-0304 : E4630FF5;
-0305 : 4F051066;
-0306 : 14CF6F63;
-0307 : 10061463;
-0308 : 14040D63;
-0309 : 00442F83;
-030A : 020F8963;
-030B : 8713401C;
-030C : C0180017;
-030D : 00B78023;
-030E : 01D44083;
-030F : 01444283;
-0310 : 0050F333;
-0311 : 00640EA3;
-0312 : 88600AA3;
-0313 : 83934054;
-0314 : 2223FFF6;
-0315 : 98630074;
-0316 : 03B30203;
-0317 : 8B2300C4;
-0318 : 5A0300B3;
-0319 : 55330104;
-031A : 791340CA;
-031B : 0C630015;
-031C : 09930009;
-031D : 98130086;
-031E : 08B30029;
-031F : AE030104;
-0320 : 85220008;
-0321 : F5939E02;
-0322 : C1A11004;
-0323 : 0D634450;
-0324 : 0E931406;
-0325 : 2623FFF6;
-0326 : 876301D4;
-0327 : 4083140E;
-0328 : 428301D4;
-0329 : F6B30154;
-032A : 0EA30050;
-032B : 0AA300D4;
-032C : 238388D0;
-032D : 8A130084;
-032E : 24230013;
-032F : C5030144;
-0330 : 0E230003;
-0331 : 0A2300A4;
-0332 : F91388A0;
-0333 : 05632004;
-0334 : 48030209;
-0335 : 498301D4;
-0336 : 0AA38950;
-0337 : 58838900;
-0338 : F5930104;
-0339 : FE130FF9;
-033A : 07632008;
-033B : 2E83000E;
-033C : 460503C4;
-033D : 9E828522;
-033E : 5F83444C;
-033F : 40400104;
-0340 : 00B03633;
-0341 : 00861F13;
-0342 : 01FF6733;
-0343 : 008037B3;
-0344 : 00E7E333;
-0345 : 08236093;
-0346 : 439DA09D;
-0347 : 06760F63;
-0348 : A8A1F03D;
-0349 : 03F5FA13;
-034A : 002A1913;
-034B : 1BC00813;
-034C : 012808B3;
-034D : 0008A403;
-034E : 11400023;
-034F : 0080A023;
-0350 : 08200313;
-0351 : 2E03C015;
-0352 : 5F8300C4;
-0353 : 405C0104;
-0354 : 01C03EB3;
-0355 : 008E9F13;
-0356 : 01FF6733;
-0357 : 00F030B3;
-0358 : 00E0E2B3;
-0359 : 0822E313;
-035A : 88601523;
-035B : C0114681;
-035C : 2A234C54;
-035D : 12E388D0;
-035E : 0093EE04;
-035F : 92930820;
-0360 : E4B30100;
-0361 : 24230092;
-0362 : 40F28890;
-0363 : 44D24462;
-0364 : 49B24942;
-0365 : 61054A22;
-0366 : 05138082;
-0367 : 4A030400;
-0368 : A0231000;
-0369 : 00230000;
-036A : 061310A0;
-036B : 15230820;
-036C : 2A2388C0;
-036D : 44018800;
-036E : 1BC00913;
-036F : 10000993;
-0370 : 00890833;
-0371 : 00082503;
-0372 : 5883CD01;
-0373 : FE130105;
-0374 : 07630808;
-0375 : 2E83000E;
-0376 : 461D0405;
-0377 : 9E8285D2;
-0378 : 1FE30411;
-0379 : BF51FD34;
-037A : 01F44F83;
-037B : 89404F03;
-037C : 01F40E23;
-037D : 89F00A23;
-037E : 01045703;
-037F : 0FFF7593;
-0380 : 10077793;
-0381 : EC0783E3;
-0382 : 03842303;
-0383 : 85224601;
-0384 : BD659302;
-0385 : 575D47A1;
-0386 : 06E7828B;
-0387 : 2383C10C;
-0388 : C15018C0;
-0389 : 00D50EA3;
-038A : 02751663;
-038B : 5E03454C;
-038C : 36330105;
-038D : 36B300C0;
-038E : 981300B0;
-038F : 68B30086;
-0390 : EEB30106;
-0391 : EF1301C8;
-0392 : 1523082E;
-0393 : 4D4889E0;
-0394 : 88A02A23;
-0395 : 0082FF93;
-0396 : 878B57DD;
-0397 : 808206FF;
-0398 : 575D47A1;
-0399 : 06E7828B;
-039A : 00158313;
-039B : 2423C550;
-039C : C3830065;
-039D : 0EA30005;
-039E : 268300D5;
-039F : 0E2318C0;
-03A0 : 17630075;
-03A1 : 280302D5;
-03A2 : 5F030045;
-03A3 : 36330105;
-03A4 : 38B300C0;
-03A5 : 1E130100;
-03A6 : EEB30086;
-03A7 : EFB301C8;
-03A8 : E79301EE;
-03A9 : 1523082F;
-03AA : 4D4888F0;
-03AB : 88A02A23;
-03AC : 0082F293;
-03AD : 878B575D;
-03AE : 808206E2;
-03AF : 575D47A1;
-03B0 : 06E7828B;
-03B1 : 00C52303;
-03B2 : 00B50FA3;
-03B3 : 00031A63;
-03B4 : 18C02603;
-03B5 : 00B50E23;
-03B6 : 00C51463;
-03B7 : 88B00A23;
-03B8 : 0082F513;
-03B9 : 078B55DD;
-03BA : 808206B5;
-03BB : 575D47A1;
-03BC : 06E7828B;
-03BD : 18C02383;
-03BE : 00B50EA3;
-03BF : 00751463;
-03C0 : 88B00AA3;
-03C1 : 0082F513;
-03C2 : 078B55DD;
-03C3 : 808206B5;
-03C4 : 09400793;
-03C5 : 00F51823;
-03C6 : 00050EA3;
-03C7 : 88000AA3;
-03C8 : 04F54283;
-03C9 : 040506A3;
-03CA : 0012E313;
-03CB : 046507A3;
-03CC : 47838082;
-03CD : E29304F5;
-03CE : 07A30027;
-03CF : 80820455;
-03D0 : 04F54783;
-03D1 : 0047E293;
-03D2 : 045507A3;
-03D3 : 71158082;
-03D4 : CF86C7CE;
-03D5 : C1DACDA2;
-03D6 : C9CACBA6;
-03D7 : C3D6C5D2;
-03D8 : DD62DF5E;
-03D9 : D96ADB66;
-03DA : 0093D76E;
-03DB : 2B030F40;
-03DC : A2831240;
-03DD : 24830000;
-03DE : F4138800;
-03DF : 80630054;
-03E0 : 63091762;
-03E1 : A4834383;
-03E2 : 0F400B93;
-03E3 : 0013F513;
-03E4 : 1097C171;
-03E5 : 80E74000;
-03E6 : 791300A0;
-03E7 : 05630015;
-03E8 : 4A850009;
-03E9 : A8D94A01;
-03EA : 80800A93;
-03EB : 000AAA03;
-03EC : 40007CB7;
-03ED : 40013D37;
-03EE : 002A6C13;
-03EF : 018AA023;
-03F0 : 85934605;
-03F1 : 051320EC;
-03F2 : 4097060D;
-03F3 : 80E74000;
-03F4 : C105E7E0;
-03F5 : 400077B7;
-03F6 : 5E978513;
-03F7 : 40000097;
-03F8 : 4C0080E7;
-03F9 : 000AA983;
-03FA : FFD9F293;
-03FB : 005AA023;
-03FC : 0850BF4D;
-03FD : 8513100C;
-03FE : 002320EC;
-03FF : CA020201;
-0400 : 40005097;
-0401 : CC2080E7;
-0402 : 7DB74652;
-0403 : 100C4000;
-0404 : 602D8513;
-0405 : 40000097;
-0406 : 488080E7;
-0407 : 082C0870;
-0408 : 20EC8513;
-0409 : 5097CC02;
-040A : 80E74000;
-040B : 4E72B340;
-040C : 7FB745E2;
-040D : 5E834000;
-040E : 2F0300AE;
-040F : 851301CE;
-0410 : 9693630F;
-0411 : 0613009E;
-0412 : 0097FFEF;
-0413 : 80E74000;
-0414 : BF814520;
-0415 : 40001097;
-0416 : EFA080E7;
-0417 : 00157593;
-0418 : 0813F1A9;
-0419 : 27031900;
-041A : 46FD0008;
-041B : 40EB08B3;
-041C : 0716F563;
-041D : 01682023;
-041E : 4A054A81;
-041F : 016BA023;
-0420 : 0F800093;
-0421 : 0000A703;
-0422 : 0014FB93;
-0423 : C002C25E;
-0424 : 0A870E63;
-0425 : 80800313;
-0426 : 0080A023;
-0427 : 00032383;
-0428 : 0014F593;
-0429 : 00259613;
-042A : FFB3F513;
-042B : 00A66833;
-042C : 400078B7;
-042D : 01032023;
-042E : 5B688913;
-042F : 4C354329;
-0430 : 00094683;
-0431 : EE990905;
-0432 : C8A98891;
-0433 : 40007A37;
-0434 : 5CBA0D13;
-0435 : 4CB54C29;
-0436 : 4A81A01D;
-0437 : 4A81B5E1;
-0438 : BF794A01;
-0439 : 00669463;
-043A : 99800023;
-043B : 98D00023;
-043C : 9463BFC1;
-043D : 0023018D;
-043E : 00239990;
-043F : 4D8399B0;
-0440 : 0D05000D;
-0441 : FE0D97E3;
-0442 : 15634E12;
-0443 : 7EB7160E;
-0444 : 87934000;
-0445 : 4FA95D2E;
-0446 : A82149B5;
-0447 : 40007AB7;
-0448 : 5C5A8D13;
-0449 : 9463BF45;
-044A : 002301F2;
-044B : 00239930;
-044C : C2839850;
-044D : 07850007;
-044E : FE0297E3;
-044F : 57138C39;
-0450 : 4B050024;
-0451 : 00177A93;
-0452 : 4A05C05A;
-0453 : C0B76389;
-0454 : 63094000;
-0455 : B6038513;
-0456 : 20008D13;
-0457 : 4B014B81;
-0458 : 20008493;
-0459 : A4830C13;
-045A : 4583C42A;
-045B : 886304ED;
-045C : 8763100A;
-045D : 846A1005;
-045E : 4DA14901;
-045F : 2AE44783;
-0460 : 0017F293;
-0461 : 04028463;
-0462 : 001C4703;
-0463 : 00177313;
-0464 : 00031863;
-0465 : 05040513;
-0466 : 40004097;
-0467 : 628080E7;
-0468 : 2AE44383;
-0469 : FFE3F093;
-046A : 2A140723;
-046B : 04CD4503;
-046C : FFF50593;
-046D : 04BD0623;
-046E : 2AF44803;
-046F : 00487893;
-0470 : 00089663;
-0471 : FFE87613;
-0472 : 2AC40723;
-0473 : 04130905;
-0474 : 15E32E84;
-0475 : 0723FBB9;
-0476 : 4682040D;
-0477 : 856AC691;
-0478 : 40002097;
-0479 : 804080E7;
-047A : 49814E12;
-047B : 020E0E63;
-047C : 4EA15CDD;
-047D : 079E870B;
-047E : 0F936F09;
-047F : 07B3B90F;
-0480 : 8DB303FB;
-0481 : C98300F4;
-0482 : 87A304FD;
-0483 : F993040D;
-0484 : 068B0FF9;
-0485 : F2930790;
-0486 : 8D630069;
-0487 : 856A2002;
-0488 : 40001097;
-0489 : 7C4080E7;
-048A : 04ED4603;
-048B : 46061063;
-048C : 87936F89;
-048D : 0B05B90F;
-048E : 9D3E4291;
-048F : 16E39BBE;
-0490 : 0A63F25B;
-0491 : 0493000A;
-0492 : AA038080;
-0493 : 7A930004;
-0494 : A023FFDA;
-0495 : 40FE0154;
-0496 : 44DE446E;
-0497 : 49BE494E;
-0498 : 4A9E4A2E;
-0499 : 5BFA4B0E;
-049A : 5CDA5C6A;
-049B : 5DBA5D4A;
-049C : 8082612D;
-049D : 40007F37;
-049E : 5DEF0793;
-049F : FDB1BD69;
-04A0 : 000C4603;
-04A1 : 00167813;
-04A2 : F40819E3;
-04A3 : 88002883;
-04A4 : 8D936689;
-04A5 : F913B6B6;
-04A6 : 15630048;
-04A7 : 4CA20009;
-04A8 : 00AC8D93;
-04A9 : 03000E13;
-04AA : 02F00E93;
-04AB : 01CD8023;
-04AC : 01DD80A3;
-04AD : 000D8123;
-04AE : 2A8D0413;
-04AF : 09138CEA;
-04B0 : 2F030300;
-04B1 : 7FB7044D;
-04B2 : 874A4000;
-04B3 : 008F0693;
-04B4 : 662F8613;
-04B5 : 85224591;
-04B6 : 400079B7;
-04B7 : DA840D93;
-04B8 : 40005097;
-04B9 : 2CC080E7;
-04BA : 76C98993;
-04BB : 0009A683;
-04BC : 12068363;
-04BD : 400077B7;
-04BE : 86138722;
-04BF : 059366A7;
-04C0 : 10080400;
-04C1 : 40005097;
-04C2 : 2A8080E7;
-04C3 : 2AECC283;
-04C4 : 0012F713;
-04C5 : 4083CB05;
-04C6 : F313001C;
-04C7 : 17630010;
-04C8 : 856E0003;
-04C9 : 40004097;
-04CA : 49C080E7;
-04CB : 2AECC383;
-04CC : FFE3F513;
-04CD : 2AAC8723;
-04CE : 04CD4583;
-04CF : FFF58613;
-04D0 : 04CD0623;
-04D1 : 2AFCC803;
-04D2 : 00487893;
-04D3 : 0E089263;
-04D4 : 0FE87F93;
-04D5 : 2BFC8723;
-04D6 : 002FF693;
-04D7 : E2914605;
-04D8 : 100C460D;
-04D9 : C632856E;
-04DA : 40004097;
-04DB : B40080E7;
-04DC : CE034EA9;
-04DD : 1A632AEC;
-04DE : 4F3201D5;
-04DF : 002F7F93;
-04E0 : 000F8563;
-04E1 : 002E6F93;
-04E2 : 4785B7F1;
-04E3 : 4791C111;
-04E4 : 00FE62B3;
-04E5 : 2A5C8723;
-04E6 : 0012F713;
-04E7 : 79B7CB51;
-04E8 : 10104000;
-04E9 : 851385A2;
-04EA : 009766F9;
-04EB : 80E74000;
-04EC : 03130F20;
-04ED : 03930220;
-04EE : A8230084;
-04EF : A0232A6C;
-04F0 : 55FD0A7C;
-04F1 : 856E567D;
-04F2 : 40004097;
-04F3 : 41A080E7;
-04F4 : 7DB7C911;
-04F5 : 85A24000;
-04F6 : 683D8513;
-04F7 : 40000097;
-04F8 : 0C0080E7;
-04F9 : 044D2603;
-04FA : 064CA083;
-04FB : 060CA583;
-04FC : 00265883;
-04FD : 01809513;
-04FE : 0085D813;
-04FF : 01056633;
-0500 : 00C8F363;
-0501 : 96238646;
-0502 : 46832ACC;
-0503 : 8E1304CD;
-0504 : 06230016;
-0505 : 090505CD;
-0506 : 03800E93;
-0507 : 2E840413;
-0508 : 2E8C8C93;
-0509 : E9D91FE3;
-050A : 07234F05;
-050B : B37505ED;
-050C : BD6D0991;
-050D : 0019F713;
-050E : DE0708E3;
-050F : 049D4303;
-0510 : 048D4603;
-0511 : 53936505;
-0512 : 05930063;
-0513 : 90937905;
-0514 : 88330083;
-0515 : 88B300BB;
-0516 : 79130100;
-0517 : 7C930016;
-0518 : 84330073;
-0519 : 00630114;
-051A : 06930409;
-051B : 8DB32E80;
-051C : 8E3302DC;
-051D : 8EB300FD;
-051E : CF0301C4;
-051F : 7F932AEE;
-0520 : 9963001F;
-0521 : 0893040F;
-0522 : 06A3F800;
-0523 : 0593051D;
-0524 : 856A0800;
-0525 : 04233425;
-0526 : 4603040D;
-0527 : 7693048D;
-0528 : 0423FFE6;
-0529 : 4D8304DD;
-052A : FE13048D;
-052B : 0463002D;
-052C : 58030A0E;
-052D : F593010D;
-052E : 0423FFDD;
-052F : 689304BD;
-0530 : 18231008;
-0531 : 4685011D;
-0532 : 10000613;
-0533 : 856A85A2;
-0534 : BB993A41;
-0535 : 1097856A;
-0536 : 80E74000;
-0537 : E9014A20;
-0538 : 02100813;
-0539 : 050D06A3;
-053A : 02100593;
-053B : 0793B75D;
-053C : D0028080;
-053D : 0007A283;
-053E : 856A4595;
-053F : 0022E713;
-0540 : 32EDC398;
-0541 : 050B8313;
-0542 : 006D83B3;
-0543 : 8933856A;
-0544 : 10970074;
-0545 : 80E74000;
-0546 : 15934340;
-0547 : 46010085;
-0548 : 4097854A;
-0549 : 80E74000;
-054A : C5112C00;
-054B : 06A345A1;
-054C : 45A104BD;
-054D : 1014BFB9;
-054E : 10000613;
-054F : 854A85A2;
-0550 : 40004097;
-0551 : C8C080E7;
-0552 : 5082F175;
-0553 : 10000513;
-0554 : FCA09EE3;
-0555 : FE93B799;
-0556 : 8563004D;
-0557 : 5083020E;
-0558 : F913010D;
-0559 : 0423FFBD;
-055A : E513052D;
-055B : 18230010;
-055C : 069300AD;
-055D : 06130410;
-055E : 85A21000;
-055F : F0EF856A;
-0560 : B15D897F;
-0561 : 008DFF13;
-0562 : 040F0563;
-0563 : 0F936789;
-0564 : 82932E80;
-0565 : 8CB3B907;
-0566 : 073303FC;
-0567 : 8333025B;
-0568 : 8DB300EC;
-0569 : C3830064;
-056A : F9132AED;
-056B : 1E630013;
-056C : 02930209;
-056D : 06A3F800;
-056E : 0593045D;
-056F : 856A0800;
-0570 : 042338F5;
-0571 : 4703040D;
-0572 : 7313048D;
-0573 : 0423FF77;
-0574 : 4D83046D;
-0575 : 856A048D;
-0576 : 00FDF393;
-0577 : 047D0423;
-0578 : 40001097;
-0579 : 3D0080E7;
-057A : F093B181;
-057B : 89630023;
-057C : 07930000;
-057D : 06A30400;
-057E : 059304FD;
-057F : B7C10400;
-0580 : 1097856A;
-0581 : 80E74000;
-0582 : E9013760;
-0583 : 02100F93;
-0584 : 05FD06A3;
-0585 : 02100593;
-0586 : D002B75D;
-0587 : 80800513;
-0588 : 8893410C;
-0589 : 8633050B;
-058A : E813011C;
-058B : 20230025;
-058C : 856A0105;
-058D : 00C48CB3;
-058E : 40001097;
-058F : 30E080E7;
-0590 : 00851593;
-0591 : 85664601;
-0592 : 40004097;
-0593 : 19A080E7;
-0594 : 0F13C901;
-0595 : 06A30200;
-0596 : 059305ED;
-0597 : B7850200;
-0598 : 2AEDC683;
-0599 : 10000613;
-059A : EE1385A2;
-059B : 87230086;
-059C : 10142BCD;
-059D : 40978566;
-059E : 80E74000;
-059F : F971D440;
-05A0 : 0E935402;
-05A1 : 16E31000;
-05A2 : BF35FDD4;
-05A3 : 000A1663;
-05A4 : 0049F993;
-05A5 : B8098EE3;
-05A6 : 4D81846A;
-05A7 : 46834CA1;
-05A8 : FE132AE4;
-05A9 : 0E630086;
-05AA : 0513000E;
-05AB : 40970504;
-05AC : 80E74000;
-05AD : 4E83F5A0;
-05AE : FF132AE4;
-05AF : 0723FF7E;
-05B0 : 0D852BE4;
-05B1 : 2E840413;
-05B2 : FD9D9BE3;
-05B3 : 4783B695;
-05B4 : E29301D5;
-05B5 : 0EA30047;
-05B6 : 0AA30055;
-05B7 : 80828850;
-05B8 : 01D54783;
-05B9 : 0027E293;
-05BA : 00550EA3;
-05BB : 88500AA3;
-05BC : 71798082;
-05BD : D606D422;
-05BE : 0045F793;
-05BF : CFCD842E;
-05C0 : 01D54083;
-05C1 : 1B100313;
-05C2 : 0FB0F293;
-05C3 : 00550EA3;
-05C4 : 88500AA3;
-05C5 : 00734383;
-05C6 : AE1485B7;
-05C7 : AE158893;
-05C8 : 14700613;
-05C9 : 02760833;
-05CA : 00634703;
-05CB : 00534F03;
-05CC : 00334583;
-05CD : 00175093;
-05CE : 03FF7F93;
-05CF : 005F9793;
-05D0 : 01F0F293;
-05D1 : 0057E6B3;
-05D2 : 00234783;
-05D3 : 0313BE33;
-05D4 : 00434383;
-05D5 : 00134303;
-05D6 : 00F7F093;
-05D7 : 01F3F613;
-05D8 : 01509293;
-05D9 : CC02073E;
-05DA : 4785CE02;
-05DB : 01C80EB3;
-05DC : 00B61813;
-05DD : 01F5FE13;
-05DE : 0106E8B3;
-05DF : 010E1F13;
-05E0 : EFB30EC6;
-05E1 : 069301E8;
-05E2 : D8930143;
-05E3 : E3B3011E;
-05E4 : 65B3005F;
-05E5 : 96130117;
-05E6 : E8330196;
-05E7 : 9E1300C3;
-05E8 : CA420105;
-05E9 : 00B11C23;
-05EA : 010E5F13;
-05EB : 91E01223;
-05EC : 91002023;
-05ED : 1AF003A3;
-05EE : 04047093;
-05EF : 00008D63;
-05F0 : 01D54283;
-05F1 : E6934621;
-05F2 : 05930402;
-05F3 : C62A1B10;
-05F4 : E44FF0EF;
-05F5 : 04624532;
-05F6 : 41845313;
-05F7 : 0A035263;
-05F8 : 01D54683;
-05F9 : 1A900713;
-05FA : 0FD6FE93;
-05FB : 01D50EA3;
-05FC : 89D00AA3;
-05FD : 90002883;
-05FE : 90402603;
-05FF : DF934851;
-0600 : 00230158;
-0601 : CC320107;
-0602 : 00FFF793;
-0603 : 0108D093;
-0604 : 00F65813;
-0605 : 01230646;
-0606 : F29300F7;
-0607 : 07B701F0;
-0608 : 509300C8;
-0609 : 01A30116;
-060A : B2B30057;
-060B : DE130217;
-060C : CA460198;
-060D : FECE0F13;
-060E : 00B8D393;
-060F : 0058D313;
-0610 : 01F8F893;
-0611 : 01E700A3;
-0612 : 00189E13;
-0613 : 00187F13;
-0614 : 01F3F413;
-0615 : 03F37693;
-0616 : 01EE6FB3;
-0617 : 00D702A3;
-0618 : 00870223;
-0619 : 01F70323;
-061A : 005703A3;
-061B : 50B25422;
-061C : 080EE693;
-061D : 05934621;
-061E : 61451A90;
-061F : DE4FF06F;
-0620 : 542250B2;
-0621 : 80826145;
-0622 : 99805783;
-0623 : 1B904603;
-0624 : 01079293;
-0625 : 0102D313;
-0626 : 03938F1A;
-0627 : C2111B90;
-0628 : 7593C595;
-0629 : B8130103;
-062A : 80230015;
-062B : ED990103;
-062C : 99004703;
-062D : 0FF77893;
-062E : 01150E23;
-062F : 01150FA3;
-0630 : 99805E03;
-0631 : 010E1E93;
-0632 : 010EDF13;
-0633 : 010F1F93;
-0634 : 010FD793;
-0635 : 007F5293;
-0636 : 001F5693;
-0637 : 98F01F23;
-0638 : 009F5813;
-0639 : 0082F313;
-063A : 0126F613;
-063B : 0003C383;
-063C : 00C365B3;
-063D : 00487713;
-063E : 00E5C8B3;
-063F : 0E68CE13;
-0640 : 18C02F83;
-0641 : 007E4EB3;
-0642 : 01D50EA3;
-0643 : 01F51563;
-0644 : 2A234D48;
-0645 : 808288A0;
-0646 : 98B00823;
-0647 : 03E00793;
-0648 : 98F00023;
-0649 : B78D4581;
-064A : 03C00793;
-064B : 98F00023;
-064C : BF994585;
-064D : 02300793;
-064E : 00236509;
-064F : 458198F0;
-0650 : ABC50513;
-0651 : 0000B791;
-0652 : 4F525245;
-0653 : 00203A52;
-0654 : 20746120;
-0655 : 20007830;
-0656 : 00783028;
-0657 : 61420A29;
-0658 : 64612064;
-0659 : 73657264;
-065A : 30203A73;
-065B : 696D0078;
-065C : 696C6173;
-065D : 64656E67;
-065E : 766E6900;
-065F : 64696C61;
-0660 : 736E6920;
-0661 : 63757274;
-0662 : 6E6F6974;
-0663 : 2A0A0A00;
-0664 : 48202A2A;
-0665 : 6F6C6C65;
-0666 : 6F57202C;
-0667 : 21646C72;
-0668 : 2A2A2A20;
-0669 : 58414D0A;
-066A : 66203038;
-066B : 776D7269;
-066C : 20657261;
-066D : 706D6F63;
-066E : 64656C69;
-066F : 3A6E6F20;
-0670 : 44530020;
-0671 : 204D4152;
-0672 : 61746164;
-0673 : 65686320;
-0674 : 75736B63;
-0675 : 00203A6D;
-0676 : 70786520;
-0677 : 65746365;
-0678 : 42002064;
-0679 : 20737469;
-067A : 61776C61;
-067B : 73207379;
-067C : 202C7465;
-067D : 61656C63;
-067E : 00203A72;
-067F : 41524453;
-0680 : 6572204D;
-0681 : 772F6461;
-0682 : 65746972;
-0683 : 72726520;
-0684 : 000A726F;
-0685 : 41524453;
-0686 : 622E204D;
-0687 : 69207373;
-0688 : 6F6E2073;
-0689 : 657A2074;
-068A : 0A216F72;
-068B : 69615700;
-068C : 676E6974;
-068D : 73203520;
-068E : 726F6620;
-068F : 73657420;
-0690 : 676E6974;
-0691 : 002E2E2E;
-0692 : 00000101;
-0693 : 00000000;
-0694 : 00000000;
-0695 : 00000000;
-0696 : 00000000;
-0697 : 00000000;
-0698 : 00000000;
-0699 : 00000000;
-069A : 00000000;
-069B : 00000000;
-069C : 00000000;
-069D : 00000000;
-069E : 00000000;
-069F : 00000000;
-06A0 : 00000000;
-06A1 : 00000000;
-06A2 : 00000105;
-06A3 : 00007FBF;
-06A4 : 00000000;
-06A5 : D3030300;
-06A6 : 000016CE;
-06A7 : 00000000;
-06A8 : 000016F2;
-06A9 : 00000000;
-06AA : 00000000;
-06AB : 00000000;
-06AC : 000016E0;
-06AD : 00000000;
-06AE : 00000000;
-06AF : 00000000;
-06B0 : 00000000;
-06B1 : 00000000;
-06B2 : 00000000;
-06B3 : 00000101;
-06B4 : 0000FFFF;
-06B5 : 00000000;
-06B6 : 0003F600;
-06B7 : 00001918;
-06B8 : 00000000;
-06B9 : 00000000;
-06BA : 00000000;
-06BB : 00000000;
-06BC : 00000000;
-06BD : 00001928;
-06BE : 00000000;
-06BF : 00000000;
-06C0 : 00000000;
-06C1 : 00000000;
-06C2 : 00000000;
-06C3 : 00000000;
-06C4 : 00000000;
-06C5 : 00000000;
-06C6 : 00000000;
-06C7 : 00000000;
-06C8 : 00000000;
-06C9 : 00000000;
-06CA : 00000000;
-06CB : 00000000;
-06CC : 00000000;
-06CD : 00000000;
-06CE : 00000000;
-06CF : 00000000;
-06D0 : 00000000;
-06D1 : 00000000;
-06D2 : 00000000;
-06D3 : 00000000;
-06D4 : 00000000;
-06D5 : 00000000;
-06D6 : 00000000;
-06D7 : 00000000;
-06D8 : 6362612F;
-06D9 : 6B736964;
-06DA : 3030382E;
-06DB : 7246002F;
-06DC : 614A2069;
-06DD : 3832206E;
-06DE : 3A303020;
-06DF : 323A3731;
-06E0 : 53502035;
-06E1 : 30322054;
-06E2 : 003232;
-[06E3..1FFF] : 00;
+02BB : E24080E7;
+02BC : 20234889;
+02BD : 20970114;
+02BE : 80E74000;
+02BF : 4685EE60;
+02C0 : 2097C014;
+02C1 : 80E74000;
+02C2 : 2623CC40;
+02C3 : 24238800;
+02C4 : 40F28000;
+02C5 : 44D24462;
+02C6 : 49B24942;
+02C7 : 4A924A22;
+02C8 : 80826105;
+02C9 : 01489463;
+02CA : 98F00023;
+02CB : 99100023;
+02CC : 1463B5C1;
+02CD : 002301F7;
+02CE : 002399E0;
+02CF : B78198E0;
+02D0 : 01D59463;
+02D1 : 99C00023;
+02D2 : 98B00023;
+02D3 : 4785B795;
+02D4 : 00A79533;
+02D5 : FFF54293;
+02D6 : 0655050B;
+02D7 : 27038082;
+02D8 : 02B700C0;
+02D9 : 20233B00;
+02DA : 8333A0A0;
+02DB : 03B300E2;
+02DC : 053700B3;
+02DD : 22232D00;
+02DE : 8E49A070;
+02DF : A0C02423;
+02E0 : 20238082;
+02E1 : 07B7A0A0;
+02E2 : 22232000;
+02E3 : 8DDDA000;
+02E4 : A0B02423;
+02E5 : 02938082;
+02E6 : A70312C0;
+02E7 : 06930002;
+02E8 : A0230017;
+02E9 : CB1900D2;
+02EA : 07634605;
+02EB : 0E130EC7;
+02EC : 0E932000;
+02ED : 078BDFF0;
+02EE : 808207DE;
+02EF : C6061141;
+02F0 : C226C422;
+02F1 : 0093C04A;
+02F2 : 0337A040;
+02F3 : A0235000;
+02F4 : 03930060;
+02F5 : 0437A080;
+02F6 : A0230100;
+02F7 : 04930083;
+02F8 : 860B2000;
+02F9 : 06370804;
+02FA : A0231100;
+02FB : 053700C0;
+02FC : A0230200;
+02FD : 878B00A3;
+02FE : 00010804;
+02FF : 65890001;
+0300 : C3C58813;
+0301 : 40B543A9;
+0302 : 00084883;
+0303 : 9E630805;
+0304 : 09370608;
+0305 : 22234B00;
+0306 : 0493A120;
+0307 : 0E37A080;
+0308 : A0231500;
+0309 : 041301C4;
+030A : 078B2000;
+030B : 0EB70804;
+030C : A0231400;
+030D : 078B01D4;
+030E : 09130804;
+030F : 2503A100;
+0310 : 30690009;
+0311 : 04000F37;
+0312 : 01E4A023;
+0313 : 0804040B;
+0314 : 00092503;
+0315 : 879FF0EF;
+0316 : 00234FB5;
+0317 : 47A999F0;
+0318 : 98F00023;
+0319 : 40B24422;
+031A : 49024492;
+031B : 400002B7;
+031C : 400086B7;
+031D : 00028713;
+031E : 81868313;
+031F : 40E30633;
+0320 : 85134581;
+0321 : 01410002;
+0322 : 9463BDD9;
+0323 : 00230078;
+0324 : 00239810;
+0325 : BF8D9910;
+0326 : 40008537;
+0327 : 40013837;
+0328 : 81850593;
+0329 : 2A080893;
+032A : 40B885B3;
+032B : 81850513;
+032C : 7139BDC9;
+032D : DC22DE06;
+032E : D84ADA26;
+032F : D452D64E;
+0330 : D05AD256;
+0331 : CC62CE5E;
+0332 : C86ACA66;
+0333 : 0793C66E;
+0334 : 870B2000;
+0335 : 07370807;
+0336 : 22234B00;
+0337 : 0093A0E0;
+0338 : 06B7A080;
+0339 : A0231500;
+033A : 868B00D0;
+033B : 02B70807;
+033C : A0231400;
+033D : 868B0050;
+033E : 03130807;
+033F : 0637A100;
+0340 : 2A030400;
+0341 : A0230003;
+0342 : 878B00C0;
+0343 : 2A830807;
+0344 : 03930003;
+0345 : 0BB727C0;
+0346 : 8623D000;
+0347 : 84560003;
+0348 : 49AD84D2;
+0349 : 27C00C93;
+034A : 0BA14D25;
+034B : 06135C7D;
+034C : 46810240;
+034D : 85A68522;
+034E : 40005097;
+034F : 3C8080E7;
+0350 : 892A85A6;
+0351 : 02400613;
+0352 : 46818522;
+0353 : 40005097;
+0354 : 000080E7;
+0355 : 84AE842A;
+0356 : 6363451D;
+0357 : 4501012D;
+0358 : 03090593;
+0359 : 00B50833;
+035A : 0FF87893;
+035B : 013C8E33;
+035C : 00399E93;
+035D : 011E0023;
+035E : 017E8F33;
+035F : 011F2023;
+0360 : 96E319FD;
+0361 : 7FB7FB89;
+0362 : 85D24000;
+0363 : 27C00693;
+0364 : 85138656;
+0365 : 0097202F;
+0366 : 80E74000;
+0367 : 50F27060;
+0368 : 54D25462;
+0369 : 59B25942;
+036A : 4BF25B02;
+036B : 4CD24C62;
+036C : 4DB24D42;
+036D : 85D28556;
+036E : 5A225A92;
+036F : 80826121;
+0370 : CE061101;
+0371 : CC22CA26;
+0372 : C64EC84A;
+0373 : 5783C452;
+0374 : 00938880;
+0375 : 94931480;
+0376 : F2930107;
+0377 : A4030FF7;
+0378 : 80C10000;
+0379 : 12028263;
+037A : 89104303;
+037B : 89004583;
+037C : 76134695;
+037D : F5930FF3;
+037E : E4630FF5;
+037F : 4F051066;
+0380 : 14CF6F63;
+0381 : 10061463;
+0382 : 14040D63;
+0383 : 00442F83;
+0384 : 020F8963;
+0385 : 8713401C;
+0386 : C0180017;
+0387 : 00B78023;
+0388 : 01D44083;
+0389 : 01444283;
+038A : 0050F333;
+038B : 00640EA3;
+038C : 88600AA3;
+038D : 83934054;
+038E : 2223FFF6;
+038F : 98630074;
+0390 : 03B30203;
+0391 : 8B2300C4;
+0392 : 5A0300B3;
+0393 : 55330104;
+0394 : 791340CA;
+0395 : 0C630015;
+0396 : 09930009;
+0397 : 98130086;
+0398 : 08B30029;
+0399 : AE030104;
+039A : 85220008;
+039B : F5939E02;
+039C : C1A11004;
+039D : 0D634450;
+039E : 0E931406;
+039F : 2623FFF6;
+03A0 : 876301D4;
+03A1 : 4083140E;
+03A2 : 428301D4;
+03A3 : F6B30154;
+03A4 : 0EA30050;
+03A5 : 0AA300D4;
+03A6 : 238388D0;
+03A7 : 8A130084;
+03A8 : 24230013;
+03A9 : C5030144;
+03AA : 0E230003;
+03AB : 0A2300A4;
+03AC : F91388A0;
+03AD : 05632004;
+03AE : 48030209;
+03AF : 498301D4;
+03B0 : 0AA38950;
+03B1 : 58838900;
+03B2 : F5930104;
+03B3 : FE130FF9;
+03B4 : 07632008;
+03B5 : 2E83000E;
+03B6 : 460503C4;
+03B7 : 9E828522;
+03B8 : 5F83444C;
+03B9 : 40400104;
+03BA : 00B03633;
+03BB : 00861F13;
+03BC : 01FF6733;
+03BD : 008037B3;
+03BE : 00E7E333;
+03BF : 08236093;
+03C0 : 439DA09D;
+03C1 : 06760F63;
+03C2 : A8A1F03D;
+03C3 : 03F5FA13;
+03C4 : 002A1913;
+03C5 : 17800813;
+03C6 : 012808B3;
+03C7 : 0008A403;
+03C8 : 11400023;
+03C9 : 0080A023;
+03CA : 08200313;
+03CB : 2E03C015;
+03CC : 5F8300C4;
+03CD : 405C0104;
+03CE : 01C03EB3;
+03CF : 008E9F13;
+03D0 : 01FF6733;
+03D1 : 00F030B3;
+03D2 : 00E0E2B3;
+03D3 : 0822E313;
+03D4 : 88601523;
+03D5 : C0114681;
+03D6 : 2A234C54;
+03D7 : 12E388D0;
+03D8 : 0093EE04;
+03D9 : 92930820;
+03DA : E4B30100;
+03DB : 24230092;
+03DC : 40F28890;
+03DD : 44D24462;
+03DE : 49B24942;
+03DF : 61054A22;
+03E0 : 05138082;
+03E1 : 4A030400;
+03E2 : A0231000;
+03E3 : 00230000;
+03E4 : 061310A0;
+03E5 : 15230820;
+03E6 : 2A2388C0;
+03E7 : 44018800;
+03E8 : 17800913;
+03E9 : 10000993;
+03EA : 00890833;
+03EB : 00082503;
+03EC : 5883CD01;
+03ED : FE130105;
+03EE : 07630808;
+03EF : 2E83000E;
+03F0 : 461D0405;
+03F1 : 9E8285D2;
+03F2 : 1FE30411;
+03F3 : BF51FD34;
+03F4 : 01F44F83;
+03F5 : 89404F03;
+03F6 : 01F40E23;
+03F7 : 89F00A23;
+03F8 : 01045703;
+03F9 : 0FFF7593;
+03FA : 10077793;
+03FB : EC0783E3;
+03FC : 03842303;
+03FD : 85224601;
+03FE : BD659302;
+03FF : 575D47A1;
+0400 : 06E7828B;
+0401 : 2383C10C;
+0402 : C1501480;
+0403 : 00D50EA3;
+0404 : 02751663;
+0405 : 5E03454C;
+0406 : 36330105;
+0407 : 36B300C0;
+0408 : 981300B0;
+0409 : 68B30086;
+040A : EEB30106;
+040B : EF1301C8;
+040C : 1523082E;
+040D : 4D4889E0;
+040E : 88A02A23;
+040F : 0082FF93;
+0410 : 878B57DD;
+0411 : 808206FF;
+0412 : 575D47A1;
+0413 : 06E7828B;
+0414 : 00158313;
+0415 : 2423C550;
+0416 : C3830065;
+0417 : 0EA30005;
+0418 : 268300D5;
+0419 : 0E231480;
+041A : 17630075;
+041B : 280302D5;
+041C : 5F030045;
+041D : 36330105;
+041E : 38B300C0;
+041F : 1E130100;
+0420 : EEB30086;
+0421 : EFB301C8;
+0422 : E79301EE;
+0423 : 1523082F;
+0424 : 4D4888F0;
+0425 : 88A02A23;
+0426 : 0082F293;
+0427 : 878B575D;
+0428 : 808206E2;
+0429 : 575D47A1;
+042A : 06E7828B;
+042B : 00C52303;
+042C : 00B50FA3;
+042D : 00031A63;
+042E : 14802603;
+042F : 00B50E23;
+0430 : 00C51463;
+0431 : 88B00A23;
+0432 : 0082F513;
+0433 : 078B55DD;
+0434 : 808206B5;
+0435 : 575D47A1;
+0436 : 06E7828B;
+0437 : 14802383;
+0438 : 00B50EA3;
+0439 : 00751463;
+043A : 88B00AA3;
+043B : 0082F513;
+043C : 078B55DD;
+043D : 808206B5;
+043E : 09400793;
+043F : 00F51823;
+0440 : 00050EA3;
+0441 : 88000AA3;
+0442 : 04F54283;
+0443 : 040506A3;
+0444 : 0012E313;
+0445 : 046507A3;
+0446 : 47838082;
+0447 : E29304F5;
+0448 : 07A30027;
+0449 : 80820455;
+044A : 04F54783;
+044B : 0047E293;
+044C : 045507A3;
+044D : 71158082;
+044E : CF86C7CE;
+044F : C1DACDA2;
+0450 : C9CACBA6;
+0451 : C3D6C5D2;
+0452 : DD62DF5E;
+0453 : D96ADB66;
+0454 : 0093D76E;
+0455 : 2B030F40;
+0456 : A2831240;
+0457 : 24830000;
+0458 : F4138800;
+0459 : 80630054;
+045A : 63091762;
+045B : C4C34383;
+045C : 0F400B93;
+045D : 0013F513;
+045E : 1097C171;
+045F : 80E74000;
+0460 : 7913D1A0;
+0461 : 05630015;
+0462 : 4A850009;
+0463 : A8D94A01;
+0464 : 80800A93;
+0465 : 000AAA03;
+0466 : 40007CB7;
+0467 : 40013D37;
+0468 : 002A6C13;
+0469 : 018AA023;
+046A : 85934605;
+046B : 0513106C;
+046C : 4097060D;
+046D : 80E74000;
+046E : C105B8E0;
+046F : 400077B7;
+0470 : 4E178513;
+0471 : 40000097;
+0472 : 2D8080E7;
+0473 : 000AA983;
+0474 : FFD9F293;
+0475 : 005AA023;
+0476 : 0850BF4D;
+0477 : 8513100C;
+0478 : 0023106C;
+0479 : CA020201;
+047A : 40005097;
+047B : 9D2080E7;
+047C : 7DB74652;
+047D : 100C4000;
+047E : 4FAD8513;
+047F : 40000097;
+0480 : 2A0080E7;
+0481 : 082C0870;
+0482 : 106C8513;
+0483 : 5097CC02;
+0484 : 80E74000;
+0485 : 4E728440;
+0486 : 7FB745E2;
+0487 : 5E834000;
+0488 : 2F0300AE;
+0489 : 851301CE;
+048A : 9693528F;
+048B : 0613009E;
+048C : 0097FFEF;
+048D : 80E74000;
+048E : BF8126A0;
+048F : 40001097;
+0490 : C0A080E7;
+0491 : 00157593;
+0492 : 0813F1A9;
+0493 : 270314C0;
+0494 : 46FD0008;
+0495 : 40EB08B3;
+0496 : 0716F563;
+0497 : 01682023;
+0498 : 4A054A81;
+0499 : 016BA023;
+049A : 0F800093;
+049B : 0000A703;
+049C : 0014FB93;
+049D : C002C25E;
+049E : 0A870E63;
+049F : 80800313;
+04A0 : 0080A023;
+04A1 : 00032383;
+04A2 : 0014F593;
+04A3 : 00259613;
+04A4 : FFB3F513;
+04A5 : 00A66833;
+04A6 : 400078B7;
+04A7 : 01032023;
+04A8 : 4AE88913;
+04A9 : 4C354329;
+04AA : 00094683;
+04AB : EE990905;
+04AC : C8A98891;
+04AD : 40007A37;
+04AE : 4C3A0D13;
+04AF : 4CB54C29;
+04B0 : 4A81A01D;
+04B1 : 4A81B5E1;
+04B2 : BF794A01;
+04B3 : 00669463;
+04B4 : 99800023;
+04B5 : 98D00023;
+04B6 : 9463BFC1;
+04B7 : 0023018D;
+04B8 : 00239990;
+04B9 : 4D8399B0;
+04BA : 0D05000D;
+04BB : FE0D97E3;
+04BC : 15634E12;
+04BD : 7EB7160E;
+04BE : 87934000;
+04BF : 4FA94CAE;
+04C0 : A82149B5;
+04C1 : 40007AB7;
+04C2 : 4BDA8D13;
+04C3 : 9463BF45;
+04C4 : 002301F2;
+04C5 : 00239930;
+04C6 : C2839850;
+04C7 : 07850007;
+04C8 : FE0297E3;
+04C9 : 57138C39;
+04CA : 4B050024;
+04CB : 00177A93;
+04CC : 4A05C05A;
+04CD : C0B76389;
+04CE : 63094000;
+04CF : D6438513;
+04D0 : 20008D13;
+04D1 : 4B014B81;
+04D2 : 20008493;
+04D3 : C4C30C13;
+04D4 : 4583C42A;
+04D5 : 886304ED;
+04D6 : 8763100A;
+04D7 : 846A1005;
+04D8 : 4DA14901;
+04D9 : 2AE44783;
+04DA : 0017F293;
+04DB : 04028463;
+04DC : 001C4703;
+04DD : 00177313;
+04DE : 00031863;
+04DF : 05040513;
+04E0 : 40004097;
+04E1 : 338080E7;
+04E2 : 2AE44383;
+04E3 : FFE3F093;
+04E4 : 2A140723;
+04E5 : 04CD4503;
+04E6 : FFF50593;
+04E7 : 04BD0623;
+04E8 : 2AF44803;
+04E9 : 00487893;
+04EA : 00089663;
+04EB : FFE87613;
+04EC : 2AC40723;
+04ED : 04130905;
+04EE : 15E32E84;
+04EF : 0723FBB9;
+04F0 : 4682040D;
+04F1 : 856AC691;
+04F2 : 40001097;
+04F3 : 514080E7;
+04F4 : 49814E12;
+04F5 : 020E0E63;
+04F6 : 4EA15CDD;
+04F7 : 079E870B;
+04F8 : 0F936F09;
+04F9 : 07B3B90F;
+04FA : 8DB303FB;
+04FB : C98300F4;
+04FC : 87A304FD;
+04FD : F993040D;
+04FE : 068B0FF9;
+04FF : F2930790;
+0500 : 8D630069;
+0501 : 856A2002;
+0502 : 40001097;
+0503 : 4D4080E7;
+0504 : 04ED4603;
+0505 : 46061063;
+0506 : 87936F89;
+0507 : 0B05B90F;
+0508 : 9D3E4291;
+0509 : 16E39BBE;
+050A : 0A63F25B;
+050B : 0493000A;
+050C : AA038080;
+050D : 7A930004;
+050E : A023FFDA;
+050F : 40FE0154;
+0510 : 44DE446E;
+0511 : 49BE494E;
+0512 : 4A9E4A2E;
+0513 : 5BFA4B0E;
+0514 : 5CDA5C6A;
+0515 : 5DBA5D4A;
+0516 : 8082612D;
+0517 : 40007F37;
+0518 : 4D6F0793;
+0519 : FDB1BD69;
+051A : 000C4603;
+051B : 00167813;
+051C : F40819E3;
+051D : 88002883;
+051E : 8D936689;
+051F : F913D6F6;
+0520 : 15630048;
+0521 : 4CA20009;
+0522 : 00AC8D93;
+0523 : 03000E13;
+0524 : 02F00E93;
+0525 : 01CD8023;
+0526 : 01DD80A3;
+0527 : 000D8123;
+0528 : 2A8D0413;
+0529 : 09138CEA;
+052A : 2F030300;
+052B : 7FB7044D;
+052C : 874A4000;
+052D : 008F0693;
+052E : 55AF8613;
+052F : 85224591;
+0530 : 400079B7;
+0531 : DA840D93;
+0532 : 40005097;
+0533 : FDC080E7;
+0534 : 66498993;
+0535 : 0009A683;
+0536 : 12068363;
+0537 : 400077B7;
+0538 : 86138722;
+0539 : 05935627;
+053A : 10080400;
+053B : 40005097;
+053C : FB8080E7;
+053D : 2AECC283;
+053E : 0012F713;
+053F : 4083CB05;
+0540 : F313001C;
+0541 : 17630010;
+0542 : 856E0003;
+0543 : 40004097;
+0544 : 1AC080E7;
+0545 : 2AECC383;
+0546 : FFE3F513;
+0547 : 2AAC8723;
+0548 : 04CD4583;
+0549 : FFF58613;
+054A : 04CD0623;
+054B : 2AFCC803;
+054C : 00487893;
+054D : 0E089263;
+054E : 0FE87F93;
+054F : 2BFC8723;
+0550 : 002FF693;
+0551 : E2914605;
+0552 : 100C460D;
+0553 : C632856E;
+0554 : 40004097;
+0555 : 850080E7;
+0556 : CE034EA9;
+0557 : 1A632AEC;
+0558 : 4F3201D5;
+0559 : 002F7F93;
+055A : 000F8563;
+055B : 002E6F93;
+055C : 4785B7F1;
+055D : 4791C111;
+055E : 00FE62B3;
+055F : 2A5C8723;
+0560 : 0012F713;
+0561 : 79B7CB51;
+0562 : 10104000;
+0563 : 851385A2;
+0564 : 00975679;
+0565 : 80E74000;
+0566 : 0313F0A0;
+0567 : 03930220;
+0568 : A8230084;
+0569 : A0232A6C;
+056A : 55FD0A7C;
+056B : 856E567D;
+056C : 40004097;
+056D : 12A080E7;
+056E : 7DB7C911;
+056F : 85A24000;
+0570 : 57BD8513;
+0571 : 40000097;
+0572 : ED8080E7;
+0573 : 044D2603;
+0574 : 064CA083;
+0575 : 060CA583;
+0576 : 00265883;
+0577 : 01809513;
+0578 : 0085D813;
+0579 : 01056633;
+057A : 00C8F363;
+057B : 96238646;
+057C : 46832ACC;
+057D : 8E1304CD;
+057E : 06230016;
+057F : 090505CD;
+0580 : 03800E93;
+0581 : 2E840413;
+0582 : 2E8C8C93;
+0583 : E9D91FE3;
+0584 : 07234F05;
+0585 : B37505ED;
+0586 : BD6D0991;
+0587 : 0019F713;
+0588 : DE0708E3;
+0589 : 049D4303;
+058A : 048D4603;
+058B : 53936505;
+058C : 05930063;
+058D : 90937905;
+058E : 88330083;
+058F : 88B300BB;
+0590 : 79130100;
+0591 : 7C930016;
+0592 : 84330073;
+0593 : 00630114;
+0594 : 06930409;
+0595 : 8DB32E80;
+0596 : 8E3302DC;
+0597 : 8EB300FD;
+0598 : CF0301C4;
+0599 : 7F932AEE;
+059A : 9963001F;
+059B : 0893040F;
+059C : 06A3F800;
+059D : 0593051D;
+059E : 856A0800;
+059F : 04233425;
+05A0 : 4603040D;
+05A1 : 7693048D;
+05A2 : 0423FFE6;
+05A3 : 4D8304DD;
+05A4 : FE13048D;
+05A5 : 0463002D;
+05A6 : 58030A0E;
+05A7 : F593010D;
+05A8 : 0423FFDD;
+05A9 : 689304BD;
+05AA : 18231008;
+05AB : 4685011D;
+05AC : 10000613;
+05AD : 856A85A2;
+05AE : BB993A41;
+05AF : 1097856A;
+05B0 : 80E74000;
+05B1 : E9011B20;
+05B2 : 02100813;
+05B3 : 050D06A3;
+05B4 : 02100593;
+05B5 : 0793B75D;
+05B6 : D0028080;
+05B7 : 0007A283;
+05B8 : 856A4595;
+05B9 : 0022E713;
+05BA : 32EDC398;
+05BB : 050B8313;
+05BC : 006D83B3;
+05BD : 8933856A;
+05BE : 10970074;
+05BF : 80E74000;
+05C0 : 15931440;
+05C1 : 46010085;
+05C2 : 4097854A;
+05C3 : 80E74000;
+05C4 : C511FD00;
+05C5 : 06A345A1;
+05C6 : 45A104BD;
+05C7 : 1014BFB9;
+05C8 : 10000613;
+05C9 : 854A85A2;
+05CA : 40004097;
+05CB : 99C080E7;
+05CC : 5082F175;
+05CD : 10000513;
+05CE : FCA09EE3;
+05CF : FE93B799;
+05D0 : 8563004D;
+05D1 : 5083020E;
+05D2 : F913010D;
+05D3 : 0423FFBD;
+05D4 : E513052D;
+05D5 : 18230010;
+05D6 : 069300AD;
+05D7 : 06130410;
+05D8 : 85A21000;
+05D9 : F0EF856A;
+05DA : B15D897F;
+05DB : 008DFF13;
+05DC : 040F0563;
+05DD : 0F936789;
+05DE : 82932E80;
+05DF : 8CB3B907;
+05E0 : 073303FC;
+05E1 : 8333025B;
+05E2 : 8DB300EC;
+05E3 : C3830064;
+05E4 : F9132AED;
+05E5 : 1E630013;
+05E6 : 02930209;
+05E7 : 06A3F800;
+05E8 : 0593045D;
+05E9 : 856A0800;
+05EA : 042338F5;
+05EB : 4703040D;
+05EC : 7313048D;
+05ED : 0423FF77;
+05EE : 4D83046D;
+05EF : 856A048D;
+05F0 : 00FDF393;
+05F1 : 047D0423;
+05F2 : 40001097;
+05F3 : 0E0080E7;
+05F4 : F093B181;
+05F5 : 89630023;
+05F6 : 07930000;
+05F7 : 06A30400;
+05F8 : 059304FD;
+05F9 : B7C10400;
+05FA : 1097856A;
+05FB : 80E74000;
+05FC : E9010860;
+05FD : 02100F93;
+05FE : 05FD06A3;
+05FF : 02100593;
+0600 : D002B75D;
+0601 : 80800513;
+0602 : 8893410C;
+0603 : 8633050B;
+0604 : E813011C;
+0605 : 20230025;
+0606 : 856A0105;
+0607 : 00C48CB3;
+0608 : 40001097;
+0609 : 01E080E7;
+060A : 00851593;
+060B : 85664601;
+060C : 40004097;
+060D : EAA080E7;
+060E : 0F13C901;
+060F : 06A30200;
+0610 : 059305ED;
+0611 : B7850200;
+0612 : 2AEDC683;
+0613 : 10000613;
+0614 : EE1385A2;
+0615 : 87230086;
+0616 : 10142BCD;
+0617 : 40978566;
+0618 : 80E74000;
+0619 : F971A540;
+061A : 0E935402;
+061B : 16E31000;
+061C : BF35FDD4;
+061D : 000A1663;
+061E : 0049F993;
+061F : B8098EE3;
+0620 : 4D81846A;
+0621 : 46834CA1;
+0622 : FE132AE4;
+0623 : 0E630086;
+0624 : 0513000E;
+0625 : 40970504;
+0626 : 80E74000;
+0627 : 4E83C6A0;
+0628 : FF132AE4;
+0629 : 0723FF7E;
+062A : 0D852BE4;
+062B : 2E840413;
+062C : FD9D9BE3;
+062D : 4783B695;
+062E : E29301D5;
+062F : 0EA30047;
+0630 : 0AA30055;
+0631 : 80828850;
+0632 : 01D54783;
+0633 : 0027E293;
+0634 : 00550EA3;
+0635 : 88500AA3;
+0636 : 71798082;
+0637 : D606D422;
+0638 : 0045F793;
+0639 : CFCD842E;
+063A : 01D54083;
+063B : 16D00313;
+063C : 0FB0F293;
+063D : 00550EA3;
+063E : 88500AA3;
+063F : 00734383;
+0640 : AE1485B7;
+0641 : AE158893;
+0642 : 14700613;
+0643 : 02760833;
+0644 : 00634703;
+0645 : 00534F03;
+0646 : 00334583;
+0647 : 00175093;
+0648 : 03FF7F93;
+0649 : 005F9793;
+064A : 01F0F293;
+064B : 0057E6B3;
+064C : 00234783;
+064D : 0313BE33;
+064E : 00434383;
+064F : 00134303;
+0650 : 00F7F093;
+0651 : 01F3F613;
+0652 : 01509293;
+0653 : CC02073E;
+0654 : 4785CE02;
+0655 : 01C80EB3;
+0656 : 00B61813;
+0657 : 01F5FE13;
+0658 : 0106E8B3;
+0659 : 010E1F13;
+065A : EFB30EC6;
+065B : 069301E8;
+065C : D8930143;
+065D : E3B3011E;
+065E : 65B3005F;
+065F : 96130117;
+0660 : E8330196;
+0661 : 9E1300C3;
+0662 : CA420105;
+0663 : 00B11C23;
+0664 : 010E5F13;
+0665 : 91E01223;
+0666 : 91002023;
+0667 : 16F001A3;
+0668 : 04047093;
+0669 : 00008D63;
+066A : 01D54283;
+066B : E6934621;
+066C : 05930402;
+066D : C62A16D0;
+066E : E44FF0EF;
+066F : 04624532;
+0670 : 41845313;
+0671 : 0A035263;
+0672 : 01D54683;
+0673 : 16500713;
+0674 : 0FD6FE93;
+0675 : 01D50EA3;
+0676 : 89D00AA3;
+0677 : 90002883;
+0678 : 90402603;
+0679 : DF934851;
+067A : 00230158;
+067B : CC320107;
+067C : 00FFF793;
+067D : 0108D093;
+067E : 00F65813;
+067F : 01230646;
+0680 : F29300F7;
+0681 : 07B701F0;
+0682 : 509300C8;
+0683 : 01A30116;
+0684 : B2B30057;
+0685 : DE130217;
+0686 : CA460198;
+0687 : FECE0F13;
+0688 : 00B8D393;
+0689 : 0058D313;
+068A : 01F8F893;
+068B : 01E700A3;
+068C : 00189E13;
+068D : 00187F13;
+068E : 01F3F413;
+068F : 03F37693;
+0690 : 01EE6FB3;
+0691 : 00D702A3;
+0692 : 00870223;
+0693 : 01F70323;
+0694 : 005703A3;
+0695 : 50B25422;
+0696 : 080EE693;
+0697 : 05934621;
+0698 : 61451650;
+0699 : DE4FF06F;
+069A : 542250B2;
+069B : 80826145;
+069C : 99805783;
+069D : 17504603;
+069E : 01079293;
+069F : 0102D313;
+06A0 : 03938F1A;
+06A1 : C2111750;
+06A2 : 7593C595;
+06A3 : B8130103;
+06A4 : 80230015;
+06A5 : ED990103;
+06A6 : 99004703;
+06A7 : 0FF77893;
+06A8 : 01150E23;
+06A9 : 01150FA3;
+06AA : 99805E03;
+06AB : 010E1E93;
+06AC : 010EDF13;
+06AD : 010F1F93;
+06AE : 010FD793;
+06AF : 007F5293;
+06B0 : 001F5693;
+06B1 : 98F01F23;
+06B2 : 009F5813;
+06B3 : 0082F313;
+06B4 : 0126F613;
+06B5 : 0003C383;
+06B6 : 00C365B3;
+06B7 : 00487713;
+06B8 : 00E5C8B3;
+06B9 : 0E68CE13;
+06BA : 14802F83;
+06BB : 007E4EB3;
+06BC : 01D50EA3;
+06BD : 01F51563;
+06BE : 2A234D48;
+06BF : 808288A0;
+06C0 : 98B00823;
+06C1 : 03E00793;
+06C2 : 98F00023;
+06C3 : B78D4581;
+06C4 : 03C00793;
+06C5 : 98F00023;
+06C6 : BF994585;
+06C7 : 02300793;
+06C8 : 00236509;
+06C9 : 458198F0;
+06CA : CC050513;
+06CB : 0000B791;
+06CC : 4F525245;
+06CD : 00203A52;
+06CE : 20746120;
+06CF : 20007830;
+06D0 : 00783028;
+06D1 : 61420A29;
+06D2 : 64612064;
+06D3 : 73657264;
+06D4 : 30203A73;
+06D5 : 696D0078;
+06D6 : 696C6173;
+06D7 : 64656E67;
+06D8 : 766E6900;
+06D9 : 64696C61;
+06DA : 736E6920;
+06DB : 63757274;
+06DC : 6E6F6974;
+06DD : 2A0A0A00;
+06DE : 48202A2A;
+06DF : 6F6C6C65;
+06E0 : 6F57202C;
+06E1 : 21646C72;
+06E2 : 2A2A2A20;
+06E3 : 58414D0A;
+06E4 : 66203038;
+06E5 : 776D7269;
+06E6 : 20657261;
+06E7 : 706D6F63;
+06E8 : 64656C69;
+06E9 : 3A6E6F20;
+06EA : 44530020;
+06EB : 204D4152;
+06EC : 61746164;
+06ED : 65686320;
+06EE : 75736B63;
+06EF : 00203A6D;
+06F0 : 70786520;
+06F1 : 65746365;
+06F2 : 42002064;
+06F3 : 20737469;
+06F4 : 61776C61;
+06F5 : 73207379;
+06F6 : 202C7465;
+06F7 : 61656C63;
+06F8 : 00203A72;
+06F9 : 74736554;
+06FA : 74616420;
+06FB : 00203A61;
+06FC : 41524453;
+06FD : 6572204D;
+06FE : 772F6461;
+06FF : 65746972;
+0700 : 72726520;
+0701 : 000A726F;
+0702 : 41524453;
+0703 : 622E204D;
+0704 : 69207373;
+0705 : 6F6E2073;
+0706 : 657A2074;
+0707 : 0A216F72;
+0708 : 69615700;
+0709 : 676E6974;
+070A : 73203520;
+070B : 726F6620;
+070C : 73657420;
+070D : 676E6974;
+070E : 002E2E2E;
+070F : 204D4F52;
+0710 : 69726573;
+0711 : 203A6C61;
+0712 : 00000000;
+0713 : 00000101;
+0714 : 00000000;
+0715 : 00000000;
+0716 : 00000000;
+0717 : 00000000;
+0718 : 00000000;
+0719 : 00000000;
+071A : 00000000;
+071B : 00000000;
+071C : 00000000;
+071D : 00000000;
+071E : 00000000;
+071F : 00000000;
+0720 : 00000000;
+0721 : 00000000;
+0722 : 00000000;
+0723 : 00000105;
+0724 : 00007FBF;
+0725 : 00000000;
+0726 : D3030300;
+0727 : 000018B6;
+0728 : 00000000;
+0729 : 000018DA;
+072A : 00000000;
+072B : 00000000;
+072C : 00000000;
+072D : 000018C8;
+072E : 00000000;
+072F : 00000000;
+0730 : 00000000;
+0731 : 00000000;
+0732 : 00000000;
+0733 : 00000000;
+0734 : 00000101;
+0735 : 0000FFFF;
+0736 : 00000000;
+0737 : 0003F600;
+0738 : 00001B00;
+0739 : 00000000;
+073A : 00000000;
+073B : 00000000;
+073C : 00000000;
+073D : 00000000;
+073E : 00001B10;
+073F : 00000000;
+0740 : 00000000;
+0741 : 00000000;
+0742 : 00000000;
+0743 : 00000000;
+0744 : 00000000;
+0745 : 00000000;
+0746 : 00000000;
+0747 : 00000000;
+0748 : 00000000;
+0749 : 00000000;
+074A : 00000000;
+074B : 00000000;
+074C : 00000000;
+074D : 00000000;
+074E : 00000000;
+074F : 00000000;
+0750 : 00000000;
+0751 : 00000000;
+0752 : 00000000;
+0753 : 00000000;
+0754 : 00000000;
+0755 : 00000000;
+0756 : 00000000;
+0757 : 00000000;
+0758 : 00000000;
+0759 : 6362612F;
+075A : 6B736964;
+075B : 3030382E;
+075C : 6557002F;
+075D : 65462064;
+075E : 32202062;
+075F : 3A333020;
+0760 : 333A3735;
+0761 : 53502038;
+0762 : 30322054;
+0763 : 003232;
+[0764..1FFF] : 00;
 END;

BIN
fpga/output/v1.jic


+ 16 - 16
fpga/output/v1.pin

@@ -103,7 +103,7 @@ GND                          : B15       : gnd    :                   :
 rtc_int_n                    : B16       : input  : 3.3-V LVTTL       :         : 6         : Y              
 flash_io[0]                  : C1        : bidir  : 3.3-V LVTTL       :         : 1         : Y              
 abc_a_oe                     : C2        : output : 3.3-V LVTTL       :         : 1         : Y              
-GND*                         : C3        :        :                   :         : 8         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : C3        :        :                   :         : 8         :                
 VCCIO8                       : C4        : power  :                   : 3.3V    : 8         :                
 GND                          : C5        : gnd    :                   :         :           :                
 sr_dq[14]                    : C6        : bidir  : 3.3-V LVTTL       :         : 8         : Y              
@@ -208,9 +208,9 @@ GND                          : J8        : gnd    :                   :
 GND                          : J9        : gnd    :                   :         :           :                
 GND                          : J10       : gnd    :                   :         :           :                
 GND                          : J11       : gnd    :                   :         :           :                
-GND*                         : J12       :        :                   :         : 5         :                
-GND*                         : J13       :        :                   :         : 5         :                
-GND*                         : J14       :        :                   :         : 5         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : J12       :        :                   :         : 5         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : J13       :        :                   :         : 5         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : J14       :        :                   :         : 5         :                
 hdmi_clk                     : J15       : output : LVDS              :         : 5         : Y              
 hdmi_clk(n)                  : J16       : output : LVDS              :         : 5         : Y              
 abc_a[11]                    : K1        : input  : 3.3-V LVTTL       :         : 2         : Y              
@@ -218,13 +218,13 @@ abc_out_n[4]                 : K2        : input  : 3.3-V LVTTL       :
 VCCIO2                       : K3        : power  :                   : 3.3V    : 2         :                
 GND                          : K4        : gnd    :                   :         :           :                
 abc_out_n[2]                 : K5        : input  : 3.3-V LVTTL       :         : 2         : Y              
-GND*                         : K6        :        :                   :         : 2         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : K6        :        :                   :         : 2         :                
 VCCINT                       : K7        : power  :                   : 1.2V    :           :                
 GND                          : K8        : gnd    :                   :         :           :                
-GND*                         : K9        :        :                   :         : 4         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : K9        :        :                   :         : 4         :                
 board_id                     : K10       : input  : 3.3-V LVTTL       :         : 4         : Y              
 VCCINT                       : K11       : power  :                   : 1.2V    :           :                
-GND*                         : K12       :        :                   :         : 5         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : K12       :        :                   :         : 5         :                
 GND                          : K13       : gnd    :                   :         :           :                
 VCCIO5                       : K14       : power  :                   : 2.5V    : 5         :                
 hdmi_d[0]                    : K15       : output : LVDS              :         : 5         : Y              
@@ -237,14 +237,14 @@ VCCA1                        : L5        : power  :                   : 2.5V
 rngio[0]                     : L6        : bidir  : 3.3-V LVTTL       :         : 2         : Y              
 gpio[0]                      : L7        : bidir  : 3.3-V LVTTL       :         : 3         : Y              
 esp_io0                      : L8        : bidir  : 3.3-V LVTTL       :         : 3         : Y              
-GND*                         : L9        :        :                   :         : 4         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : L9        :        :                   :         : 4         :                
 abc_xoutpstb_n               : L10       : input  : 3.3-V LVTTL       :         : 4         : Y              
-GND*                         : L11       :        :                   :         : 4         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : L11       :        :                   :         : 4         :                
 VCCA4                        : L12       : power  :                   : 2.5V    :           :                
-GND*                         : L13       :        :                   :         : 5         :                
-GND*                         : L14       :        :                   :         : 5         :                
-GND*                         : L15       :        :                   :         : 5         :                
-GND*                         : L16       :        :                   :         : 5         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : L13       :        :                   :         : 5         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : L14       :        :                   :         : 5         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : L15       :        :                   :         : 5         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : L16       :        :                   :         : 5         :                
 abc_a[13]                    : M1        : input  : 3.3-V LVTTL       :         : 2         : Y              
 abc_inp_n[1]                 : M2        : input  : 3.3-V LVTTL       :         : 2         : Y              
 VCCIO2                       : M3        : power  :                   : 3.3V    : 2         :                
@@ -253,7 +253,7 @@ GNDA1                        : M5        : gnd    :                   :
 abc_d[1]                     : M6        : bidir  : 3.3-V LVTTL       :         : 3         : Y              
 spi_miso                     : M7        : bidir  : 3.3-V LVTTL       :         : 3         : Y              
 spi_mosi                     : M8        : bidir  : 3.3-V LVTTL       :         : 3         : Y              
-GND*                         : M9        :        :                   :         : 4         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : M9        :        :                   :         : 4         :                
 sd_dat[1]                    : M10       : bidir  : 3.3-V LVTTL       :         : 4         : Y              
 hdmi_scl                     : M11       : bidir  : 3.3-V LVTTL       :         : 4         : Y              
 GNDA4                        : M12       : gnd    :                   :         :           :                
@@ -274,7 +274,7 @@ GND                          : N10       : gnd    :                   :
 exth_hg                      : N11       : bidir  : 3.3-V LVTTL       :         : 4         : Y              
 exth_ha                      : N12       : bidir  : 3.3-V LVTTL       :         : 4         : Y              
 VCCD_PLL4                    : N13       : power  :                   : 1.2V    :           :                
-GND*                         : N14       :        :                   :         : 5         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : N14       :        :                   :         : 5         :                
 hdmi_d[1]                    : N15       : output : LVDS              :         : 5         : Y              
 hdmi_d[1](n)                 : N16       : output : LVDS              :         : 5         : Y              
 abc_xmemw800_n               : P1        : input  : 3.3-V LVTTL       :         : 2         : Y              
@@ -291,7 +291,7 @@ rngio[1]                     : P11       : bidir  : 3.3-V LVTTL       :
 GND                          : P12       : gnd    :                   :         :           :                
 VCCIO4                       : P13       : power  :                   : 3.3V    : 4         :                
 tty_dtr                      : P14       : input  : 3.3-V LVTTL       :         : 4         : Y              
-GND*                         : P15       :        :                   :         : 5         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : P15       :        :                   :         : 5         :                
 hdmi_d[2](n)                 : P16       : output : LVDS              :         : 5         : Y              
 abc_xmemw80_n                : R1        : input  : 3.3-V LVTTL       :         : 2         : Y              
 GND                          : R2        : gnd    :                   :         :           :                

BIN
fpga/output/v1.sof


BIN
fpga/output/v2.jic


+ 16 - 16
fpga/output/v2.pin

@@ -103,7 +103,7 @@ GND                          : B15       : gnd    :                   :
 rtc_int_n                    : B16       : input  : 3.3-V LVTTL       :         : 6         : Y              
 flash_io[0]                  : C1        : bidir  : 3.3-V LVTTL       :         : 1         : Y              
 abc_host                     : C2        : output : 3.3-V LVTTL       :         : 1         : Y              
-GND*                         : C3        :        :                   :         : 8         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : C3        :        :                   :         : 8         :                
 VCCIO8                       : C4        : power  :                   : 3.3V    : 8         :                
 GND                          : C5        : gnd    :                   :         :           :                
 sr_dq[14]                    : C6        : bidir  : 3.3-V LVTTL       :         : 8         : Y              
@@ -208,9 +208,9 @@ GND                          : J8        : gnd    :                   :
 GND                          : J9        : gnd    :                   :         :           :                
 GND                          : J10       : gnd    :                   :         :           :                
 GND                          : J11       : gnd    :                   :         :           :                
-GND*                         : J12       :        :                   :         : 5         :                
-GND*                         : J13       :        :                   :         : 5         :                
-GND*                         : J14       :        :                   :         : 5         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : J12       :        :                   :         : 5         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : J13       :        :                   :         : 5         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : J14       :        :                   :         : 5         :                
 hdmi_clk                     : J15       : output : LVDS              :         : 5         : Y              
 hdmi_clk(n)                  : J16       : output : LVDS              :         : 5         : Y              
 abc_a[11]                    : K1        : bidir  : 3.3-V LVTTL       :         : 2         : Y              
@@ -218,13 +218,13 @@ abc_out_n[4]                 : K2        : bidir  : 3.3-V LVTTL       :
 VCCIO2                       : K3        : power  :                   : 3.3V    : 2         :                
 GND                          : K4        : gnd    :                   :         :           :                
 abc_out_n[2]                 : K5        : bidir  : 3.3-V LVTTL       :         : 2         : Y              
-GND*                         : K6        :        :                   :         : 2         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : K6        :        :                   :         : 2         :                
 VCCINT                       : K7        : power  :                   : 1.2V    :           :                
 GND                          : K8        : gnd    :                   :         :           :                
-GND*                         : K9        :        :                   :         : 4         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : K9        :        :                   :         : 4         :                
 board_id                     : K10       : input  : 3.3-V LVTTL       :         : 4         : Y              
 VCCINT                       : K11       : power  :                   : 1.2V    :           :                
-GND*                         : K12       :        :                   :         : 5         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : K12       :        :                   :         : 5         :                
 GND                          : K13       : gnd    :                   :         :           :                
 VCCIO5                       : K14       : power  :                   : 2.5V    : 5         :                
 hdmi_d[0]                    : K15       : output : LVDS              :         : 5         : Y              
@@ -237,14 +237,14 @@ VCCA1                        : L5        : power  :                   : 2.5V
 rngio[0]                     : L6        : bidir  : 3.3-V LVTTL       :         : 2         : Y              
 gpio[0]                      : L7        : bidir  : 3.3-V LVTTL       :         : 3         : Y              
 esp_io0                      : L8        : bidir  : 3.3-V LVTTL       :         : 3         : Y              
-GND*                         : L9        :        :                   :         : 4         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : L9        :        :                   :         : 4         :                
 abc_xoutpstb_n               : L10       : bidir  : 3.3-V LVTTL       :         : 4         : Y              
-GND*                         : L11       :        :                   :         : 4         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : L11       :        :                   :         : 4         :                
 VCCA4                        : L12       : power  :                   : 2.5V    :           :                
-usb_rx(n)                    : L13       : input  : LVDS              :         : 5         : Y              
-GND*                         : L14       :        :                   :         : 5         :                
+usb_rx(n)                    : L13       : input  : Bus LVDS          :         : 5         : Y              
+RESERVED_INPUT_WITH_WEAK_PULLUP : L14       :        :                   :         : 5         :                
 sd_cd_n                      : L15       : input  : 2.5 V             :         : 5         : Y              
-usb_rx                       : L16       : input  : LVDS              :         : 5         : Y              
+usb_rx                       : L16       : input  : Bus LVDS          :         : 5         : Y              
 GND+                         : M1        :        :                   :         : 2         :                
 GND+                         : M2        :        :                   :         : 2         :                
 VCCIO2                       : M3        : power  :                   : 3.3V    : 2         :                
@@ -274,7 +274,7 @@ GND                          : N10       : gnd    :                   :
 exth_hg                      : N11       : bidir  : 3.3-V LVTTL       :         : 4         : Y              
 exth_ha                      : N12       : bidir  : 3.3-V LVTTL       :         : 4         : Y              
 VCCD_PLL4                    : N13       : power  :                   : 1.2V    :           :                
-GND*                         : N14       :        :                   :         : 5         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : N14       :        :                   :         : 5         :                
 hdmi_d[1]                    : N15       : output : LVDS              :         : 5         : Y              
 hdmi_d[1](n)                 : N16       : output : LVDS              :         : 5         : Y              
 abc_xmemw800_n               : P1        : bidir  : 3.3-V LVTTL       :         : 2         : Y              
@@ -291,7 +291,7 @@ rngio[1]                     : P11       : bidir  : 3.3-V LVTTL       :
 GND                          : P12       : gnd    :                   :         :           :                
 VCCIO4                       : P13       : power  :                   : 3.3V    : 4         :                
 led[1]                       : P14       : output : 3.3-V LVTTL       :         : 4         : Y              
-GND*                         : P15       :        :                   :         : 5         :                
+RESERVED_INPUT_WITH_WEAK_PULLUP : P15       :        :                   :         : 5         :                
 hdmi_d[2](n)                 : P16       : output : LVDS              :         : 5         : Y              
 abc_xmemw80_n                : R1        : bidir  : 3.3-V LVTTL       :         : 2         : Y              
 GND                          : R2        : gnd    :                   :         :           :                
@@ -306,7 +306,7 @@ gpio[3]                      : R10       : bidir  : 3.3-V LVTTL       :
 exth_hd                      : R11       : bidir  : 3.3-V LVTTL       :         : 4         : Y              
 exth_he                      : R12       : bidir  : 3.3-V LVTTL       :         : 4         : Y              
 hdmi_sda                     : R13       : bidir  : 3.3-V LVTTL       :         : 4         : Y              
-led[2]                       : R14       : output : 3.3-V LVTTL       :         : 4         : Y              
+led[0]                       : R14       : output : 3.3-V LVTTL       :         : 4         : Y              
 GND                          : R15       : gnd    :                   :         :           :                
 hdmi_d[2]                    : R16       : output : LVDS              :         : 5         : Y              
 VCCIO3                       : T1        : power  :                   : 3.3V    : 3         :                
@@ -321,7 +321,7 @@ exth_hc                      : T9        : input  : 3.3-V LVTTL       :
 abc_a[1]                     : T10       : bidir  : 3.3-V LVTTL       :         : 4         : Y              
 exth_hf                      : T11       : bidir  : 3.3-V LVTTL       :         : 4         : Y              
 abc_xinpstb_n                : T12       : bidir  : 3.3-V LVTTL       :         : 4         : Y              
-led[0]                       : T13       : output : 3.3-V LVTTL       :         : 4         : Y              
+led[2]                       : T13       : output : 3.3-V LVTTL       :         : 4         : Y              
 abc_a[13]                    : T14       : bidir  : 3.3-V LVTTL       :         : 4         : Y              
 hdmi_hpd                     : T15       : bidir  : 3.3-V LVTTL       :         : 4         : Y              
 VCCIO4                       : T16       : power  :                   : 3.3V    : 4         :                

BIN
fpga/output/v2.sof


+ 69 - 49
fpga/spirom.sv

@@ -131,23 +131,22 @@ module spirom (
    //
    // FIFO and input latches
    //
-   reg [0:0]		  spi_in_q;
-   reg			  spi_in_req;
-   reg			  spi_in_req_q;
+   reg [1:0]		  spi_in_q;
+   reg			  spi_ram_in_req;
    wire [11:0]		  wrusedw;
    wire [8:0]		  rdusedw;
    wire [15:0]		  fifo_out;
-   wire [1:0] 		  spi_in_data;
+   wire [1:0]		  spi_in_data;
 
-   assign spi_in_data[0] = spi_dual ? spi_in_q[0]   : spi_in_shr[0];
-   assign spi_in_data[1] = spi_dual ? spi_in_shr[0] : spi_in_shr[1];
+   assign spi_in_data[0] = spi_dual ? spi_in_q[0] : spi_in_q[1];
+   assign spi_in_data[1] = spi_dual ? spi_in_q[1] : spi_in_shr[0];
 
    ddufifo spirom_fifo (
 			.aclr ( ~rst_n ),
 
 			.wrclk ( rom_clk ),
 			.data ( spi_in_data ),
-			.wrreq ( spi_in_req_q & is_spi ),
+			.wrreq ( spi_ram_in_req ),
 			.wrusedw ( wrusedw ),
 
 			.rdclk ( ram_clk ),
@@ -231,14 +230,21 @@ module spirom (
    // Negative indicies refer to fractional bytes
    reg [2:-3]  spi_cmd_ctr;
    reg [23:-3] spi_data_ctr;
-   reg	       spi_clk_en = 1'b0;
+   reg	       spi_clk_en;
+   reg [1:0]   spi_clk_en_q;
    reg	       spi_mosi_en;
    reg [1:0]   go_spi_q;
    wire        go_spi_s;
    reg	       spi_more_q;
    reg	       spi_active;
-   reg [3:0]   spi_cs_ctr;
+   reg	       spi_active_q;
    reg [31:0]  spi_out_shr;
+   reg	       spi_in_req;
+   reg	       spi_in_req_q;
+
+   localparam spi_cs_wait_lg2 = 0; // 8 bit times between CS# and first clock
+   reg [spi_cs_wait_lg2:0]   spi_cs_ctr;
+   wire			     spi_cs_ready = spi_cs_ctr[spi_cs_wait_lg2];
 
    // Explicit synchronizers for handshake signals
    synchronizer #(.width(1)) go_spi_synchro
@@ -264,34 +270,47 @@ module spirom (
        begin
 	  spi_cmd_ctr  <= 6'b0;
 	  spi_clk_en   <= 1'b0;
-	  spi_clk_en_q <= 1'b0;
+	  spi_clk_en_q <= 'b0;
 	  spi_data_ctr <= 27'b0;
 	  spi_cs_n     <= 1'b1;
 	  spi_cs_ctr   <= 'b0;
 	  spi_in_req   <= 1'b0;
 	  spi_in_req_q <= 1'b0;
+	  spi_ram_in_req <= 1'b0;
 	  spi_mosi_en  <= 1'b1;
-	  spi_in_q     <= 1'b0;
 	  spi_in_shr   <= 32'b0;
 	  spi_active   <= 1'b0;
+	  spi_active_q <= 1'b0;
 	  spi_more_q   <= 1'b0;
 	  spi_out_shr  <= 32'b0;
        end
      else
        begin
-	  spi_in_req   <= 1'b0;
-	  spi_in_req_q <= spi_in_req;
-	  spi_clk_en   <= 1'b0;
-	  spi_clk_en_q <= spi_clk_en;
+	  // Fun with long pipelined chains of registers...
+	  spi_in_req     <= 1'b0;
+	  spi_in_req_q   <= spi_in_req;
+	  spi_ram_in_req <= spi_in_req_q & is_ram;
+
+	  spi_clk_en     <= 1'b0;
+	  spi_clk_en_q   <= (spi_clk_en_q << 1'b1) | spi_clk_en;
+
+	  spi_active_q   <= spi_active;
+
+	  if ( spi_clk_en_q[1] )
+	    spi_in_shr <= { spi_in_shr[30:0], spi_in_q[1] };
 
 	  // Bit to start transmitting on the next clock down transition
-	  spi_out_shr <= spi_out_shr << spi_clk_en;
+	  // This needs to be delayed by one cycle in order to match
+	  // the one-cycle delay imposed by the DDR output buffer
+	  // when spi_clk_en goes high.
+	  if ( spi_clk_en_q )
+	    spi_out_shr <= { spi_out_shr[30:0], 1'b1 };
 
-	  // After asserting CS#, wait 16 SPI clock times
+	  // After asserting CS#, wait 8 SPI clock times
 	  if (spi_cs_n)
 	    spi_cs_ctr <= 'b0;
 	  else
-	    spi_cs_ctr <= spi_cs_ctr + ~&spi_cs_ctr;
+	    spi_cs_ctr <= spi_cs_ctr + !spi_cs_ready;
 
 	  // Note: datalen <- spi_data_ctr is a 2-cycle multipath
 	  if (go_spi_s & ~spi_active)
@@ -314,55 +333,56 @@ module spirom (
 	    end
 	  else
 	    begin
-	       spi_active   <= &spi_cs_ctr;
+	       spi_active   <= 1'b1;
 	       spi_cs_n     <= 1'b0;
 
-	       if ( spi_active )
+	       if ( spi_active & spi_cs_ready )
 		 begin
 		    // This will block unnecessarily if the DMA queue
 		    // is full from a previous transaction, but that doesn't
 		    // matter in practice... just let it drain.
 		    spi_clk_en <= dma_queue_space;
+		    spi_mosi_en <= ~spi_dual | |spi_cmd_ctr;
 
-		    if ( spi_clk_en )
-		      begin
-			 // Note: spi_in_shr[0] and spi_in_q[1] should
-			 // be merged into a single register.
-			 spi_in_shr   <= { spi_in_shr[30:0], spi_io[1] };
-			 spi_in_q[0]  <= spi_io[0];
-
-			 if ( spi_cmd_ctr == 6'd1 )
-			   spi_mosi_en  <= ~spi_dual;
-
-			 if ( ~|spi_cmd_ctr )
-			   begin
-			      spi_in_req <= spi_data_ctr[-3] | spi_dual;
-			      spi_data_ctr <= spi_data_ctr - (1'b1 << spi_dual);
-			   end
-			 else
-			   begin
-			      spi_cmd_ctr <= spi_cmd_ctr - 1'b1;
-			   end
-		      end // if ( spi_clk_en )
-		 end // if ( ~spi_cs_n )
-	    end // else: !if( ~|spi_data_ctr )
+		    if ( spi_clk_en & ~|spi_cmd_ctr )
+		      spi_in_req <= spi_data_ctr[-3] | spi_dual;
+		 end // if ( spi_active & spi_cs_ready )
+
+	       if ( (spi_active & ~spi_active_q) | spi_clk_en )
+		 begin
+		    // This is either the kickoff cycle or advancing
+		    if ( ~|spi_cmd_ctr )
+		      spi_data_ctr <= spi_data_ctr - (1'b1 << spi_dual);
+		    else
+		      spi_cmd_ctr <= spi_cmd_ctr - 1'b1;
+		 end // if ( spi_clk_en )
+	    end // else: !if( ~|{spi_data_ctr, spi_cmd_ctr} )
        end // else: !if(~rst_n)
 
-   // SPI output data is shifted on the negative edge
-   reg 	       spi_out_q;
+   //
+   // Input I/O: latch on the positive spi_clk, which is the
+   // negative rom_clk.
+   //
    always @(negedge rom_clk)
-     spi_out_q <= spi_out_shr[31];
+     spi_in_q <= spi_io;
 
-   assign spi_io[0] = spi_mosi_en ? spi_out_q : 1'bz;
+   //
+   // Output I/O: changed on the negative spi_clk, which is the
+   // positive rom_clk (thus matching when these registers are set.)
+   //
+   assign spi_io[0] = spi_mosi_en ? spi_out_shr[31] : 1'bz;
    assign spi_io[1] = 1'bz;
 
    //
-   // SPI_SCK output buffer: emit a clock pulse iff spi_clk_en_q is high
+   // SPI_SCK output buffer: emit a spi_clk clock pulse if spi_clk_en
+   // is high; note that this is phase-inverted versus the internal
+   // rom_clk, and that this is sampled one full rom_clk before
+   // output, so
    //
    ddio_out spi_clk_buf (
 			 .aclr ( ~rst_n ),
-			 .datain_h ( spi_clk_en_q ),
-			 .datain_l ( 1'b0 ),
+			 .datain_h ( 1'b0 ),
+			 .datain_l ( spi_clk_en ),
 			 .outclock ( rom_clk ),
 			 .dataout ( spi_sck )
 			 );

+ 5 - 5
fpga/v2.qsf

@@ -9,17 +9,17 @@ set_global_assignment -name SYSTEMVERILOG_FILE v2.sv
 
 set_global_assignment -name SOURCE_TCL_SCRIPT_FILE max80.qsf
 
-set_instance_assignment -name IO_STANDARD "Bus LVDS" -to usb_rx
+set_instance_assignment -name IO_STANDARD "BUS LVDS" -to usb_rx
 set_instance_assignment -name WEAK_PULL_UP_RESISTOR OFF -to usb_rx
-set_instance_assignment -name WEAK_PULL_UP_RESISTOR OFF -to "usb_rx(n)"
-set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to usb_dp
-set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to usb_dn
+set_instance_assignment -name WEAK_PULL_UP_RESISTOR OFF -to usb_dp
+set_instance_assignment -name WEAK_PULL_UP_RESISTOR OFF -to usb_dn
+set_instance_assignment -name WEAK_PULL_UP_RESISTOR OFF -to usb_pu
 
 set_instance_assignment -name TERMINATION OFF -to usb_rx
-set_instance_assignment -name TERMINATION OFF -to "usb_rx(n)"
 
 set_instance_assignment -name IO_STANDARD "2.5 V" -to sd_cd_n
 set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to sd_cd_n
 
 # Quartus insists on this line...
+
 set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top

+ 1 - 1
rv32/Makefile

@@ -82,7 +82,7 @@ dram.bin: max80.elf
 checksum.h: dram.bin boot.bin checksum.pl
 	$(PERL) checksum.pl -o $@ -p boot.bin \
 		-l $$(($$($(NM) -n max80.elf --radix=decimal | \
-			grep ' R __dram_init_end$$' | \
+			grep ' [A-Z] __dram_init_end$$' | \
 	                awk '{ print $$1; }') - (1 << 30))) \
 		dram.bin
 

+ 1 - 1
rv32/checksum.h

@@ -1,4 +1,4 @@
 #ifndef CHECKSUM_H
 #define CHECKSUM_H
-#define SDRAM_SUM 0x4631defa
+#define SDRAM_SUM 0xda68a8e8
 #endif

+ 2 - 0
rv32/console.h

@@ -76,4 +76,6 @@ static __always_inline void con_flush(void)
 	pause();
 }
 
+void con_print_hex(unsigned int); /* For pre-SDRAM capable code */
+
 #endif /* CONSOLE_H */

+ 39 - 8
rv32/romcopy.c

@@ -43,8 +43,6 @@ enum romcmd {
     ROM_FAST_READ_DUAL			= 0x3b
 };
 
-size_t __sbss romcopy_log[15];
-
 #define SPIROM_DUAL_MODE 1
 
 void __hot romcopy_download(void *dst, size_t offset, size_t len)
@@ -58,7 +56,7 @@ void __hot romcopy_download(void *dst, size_t offset, size_t len)
     } else {
 	cmd = ROM_FAST_READ;
     }
-  
+
     ROMCOPY_RAMADDR = (size_t)dst;
     ROMCOPY_ROMCMD  = __rom_offset + offset + (cmd << 24);
     ROMCOPY_DATALEN = len | flags;
@@ -71,7 +69,39 @@ void __hot romcopy_bzero(void *dst, size_t len)
     ROMCOPY_DATALEN = len | ROMCOPY_ZERO_BUFFER | ROMCOPY_WRITE_RAM;
 }
 
-uint32_t __sbss romcopy_time[2];
+static __hot void romcopy_config_flash(void)
+{
+    /* Enable writing volatile status register bits */
+    ROMCOPY_ROMCMD = ROM_VOLATILE_SR_WRITE_ENABLE << 24;
+    ROMCOPY_DATALEN = ROMCOPY_SPI_CMDLEN(1);
+    waitfor(ROMCOPY_IRQ);
+
+    /* Write SR3 = 0; this sets the drive strength to maximum */
+    ROMCOPY_ROMCMD = ROM_WRITE_SR3 << 24;
+    ROMCOPY_DATALEN = ROMCOPY_SPI_CMDLEN(2);
+    waitfor(ROMCOPY_IRQ);
+
+    asm volatile("nop; nop");	/* Make extra sure tSHSL2 is OK */
+
+    if ( 1 ) {
+	con_puts(hotstr("ROM serial: "));
+
+	ROMCOPY_ROMCMD  = ROM_READ_UNIQUE_ID << 24;
+	ROMCOPY_DATALEN = ROMCOPY_SPI_CMDLEN(5) | ROMCOPY_SPI_MORE;
+	waitfor(ROMCOPY_IRQ);
+
+	ROMCOPY_DATALEN = ROMCOPY_SPI_CMDLEN(4) | ROMCOPY_SPI_MORE;
+	waitfor(ROMCOPY_IRQ);
+
+	con_print_hex(ROMCOPY_INPUT);
+	ROMCOPY_DATALEN = ROMCOPY_SPI_CMDLEN(4);
+	waitfor(ROMCOPY_IRQ);
+
+	con_print_hex(ROMCOPY_INPUT);
+	con_putc('\n');
+    }
+}
+
 IRQHANDLER(romcopy,0)
 {
     static __sbss unsigned int romcopy_state;
@@ -79,6 +109,8 @@ IRQHANDLER(romcopy,0)
 
     switch (romcopy_state++) {
     case 0:
+	romcopy_config_flash();
+
 	/* Copy DRAM data */
 	len = __dram_init_end - __dram_init_start;
 	romcopy_download(__dram_init_start, 0, len);
@@ -99,9 +131,9 @@ IRQHANDLER(romcopy,0)
  * number to 12 characters in base36 (technically a wraparound that is
  * never going to matter.) It's more fun than plain hex... :)
  */
-char serial_str[16];
+char __bss_hot serial_str[16];
 
-uint64_t rom_get_serial(void)
+uint64_t __hot rom_get_serial(void)
 {
     union {
 	uint32_t l[2];
@@ -135,8 +167,7 @@ uint64_t rom_get_serial(void)
 	usbdesc_rom[2+2*i] = c;
     }
 
-    if ( 1 )
-	con_printf("ROM serial: %08x-%08x (%s)\n", o.l[1], o.l[0], serial_str);
+    con_printf("ROM serial: %08x-%08x (%s)\n", o.l[1], o.l[0], serial_str);
 
     return o.q;
 }

+ 10 - 1
rv32/system.c

@@ -9,7 +9,7 @@
 #define MINITESTS 1
 #define DELAY     1
 
-static void __hot con_print_hex(unsigned int n)
+void __hot con_print_hex(unsigned int n)
 {
     for (int i = 0; i < 8; i++) {
 	unsigned int c = n >> 28;
@@ -82,6 +82,9 @@ IRQHANDLER(sysclock,0)
 
 static void late_init(void);
 
+static const volatile __dram_data
+uint32_t test_data[2] = { 0x01234567, 0x89abcdef };
+
 uint32_t __sbss timer_irq_start;
 void __hot init(void)
 {
@@ -149,6 +152,12 @@ void __hot init(void)
 	con_putc(' ');
 	con_print_hex(~not_zero);
 	con_putc('\n');
+
+	con_puts(hotstr("Test data: "));
+	con_print_hex(test_data[0]);
+	con_putc(' ');
+	con_print_hex(test_data[1]);
+	con_putc('\n');
 	
 	if (wrerr)
 	    con_puts(hotstr("SDRAM read/write error\n"));

+ 0 - 5
rv32/test/main.c

@@ -229,11 +229,6 @@ void main(void)
     while (!(irqmask() & (1 << ROMCOPY_IRQ)))
 	pause();
 
-    con_printf("SDRAM download took %u us\n",
-	       romcopy_time[0]/(CPU_HZ/1000000));
-    con_printf("SDRAM bss clear took %u us\n",
-	       romcopy_time[1]/(CPU_HZ/1000000));
-
     test_download();
 
     sdcard_reset();