1
0
mirror of https://github.com/Gehstock/Mist_FPGA.git synced 2026-05-17 04:09:42 +00:00

Add Code and new Snapshot

This commit is contained in:
Gehstock
2020-02-29 21:12:24 +01:00
parent 001b08670b
commit ed9e2639a6
81 changed files with 18567 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
# -------------------------------------------------------------------------- #
#
# Copyright (C) 1991-2011 Altera Corporation
# Your use of Altera Corporation's design tools, logic functions
# and other software and tools, and its AMPP partner logic
# functions, and any output files from any of the foregoing
# (including device programming or simulation files), and any
# associated documentation or information are expressly subject
# to the terms and conditions of the Altera Program License
# Subscription Agreement, Altera MegaCore Function License
# Agreement, or other applicable license agreement, including,
# without limitation, that your use is for the sole purpose of
# programming logic devices manufactured by Altera and sold by
# Altera or its authorized distributors. Please refer to the
# applicable agreement for further details.
#
# -------------------------------------------------------------------------- #
#
# Quartus II
# Version 10.1 Build 197 01/19/2011 Service Pack 1 SJ Full Version
# Date created = 23:49:02 July 13, 2012
#
# -------------------------------------------------------------------------- #
QUARTUS_VERSION = "10.1"
DATE = "23:49:02 July 13, 2012"
# Revisions
PROJECT_REVISION = "LodeRunner_MiST"

View File

@@ -0,0 +1,275 @@
# -------------------------------------------------------------------------- #
#
# Copyright (C) 1991-2013 Altera Corporation
# Your use of Altera Corporation's design tools, logic functions
# and other software and tools, and its AMPP partner logic
# functions, and any output files from any of the foregoing
# (including device programming or simulation files), and any
# associated documentation or information are expressly subject
# to the terms and conditions of the Altera Program License
# Subscription Agreement, Altera MegaCore Function License
# Agreement, or other applicable license agreement, including,
# without limitation, that your use is for the sole purpose of
# programming logic devices manufactured by Altera and sold by
# Altera or its authorized distributors. Please refer to the
# applicable agreement for further details.
#
# -------------------------------------------------------------------------- #
#
# Quartus II 64-Bit
# Version 13.1.0 Build 162 10/23/2013 SJ Web Edition
# Date created = 21:06:00 February 29, 2020
#
# -------------------------------------------------------------------------- #
#
# Notes:
#
# 1) The default values for assignments are stored in the file:
# LodeRunner_MiST_assignment_defaults.qdf
# If this file doesn't exist, see file:
# assignment_defaults.qdf
#
# 2) Altera recommends that you do not modify this file. This
# file is updated automatically by the Quartus II software
# and any changes you make may be lost or overwritten.
#
# -------------------------------------------------------------------------- #
# Project-Wide Assignments
# ========================
set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files
set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL
set_global_assignment -name LAST_QUARTUS_VERSION 13.1
set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:rtl/build_id.tcl"
set_global_assignment -name SMART_RECOMPILE ON
set_global_assignment -name SYSTEMVERILOG_FILE rtl/LodeRunner_MiST.sv
set_global_assignment -name VHDL_FILE rtl/target_top.vhd
set_global_assignment -name VHDL_FILE rtl/platform_variant_pkg.vhd
set_global_assignment -name VHDL_FILE rtl/platform_pkg.vhd
set_global_assignment -name VHDL_FILE rtl/platform.vhd
set_global_assignment -name VHDL_FILE rtl/pace_pkg_body.vhd
set_global_assignment -name VHDL_FILE rtl/pace_pkg.vhd
set_global_assignment -name VHDL_FILE rtl/pace.vhd
set_global_assignment -name VHDL_FILE rtl/Graphics.VHD
set_global_assignment -name VHDL_FILE rtl/video_mixer.vhd
set_global_assignment -name VHDL_FILE rtl/video_controller_pkg_body.vhd
set_global_assignment -name VHDL_FILE rtl/video_controller_pkg.vhd
set_global_assignment -name VHDL_FILE rtl/video_controller.vhd
set_global_assignment -name VHDL_FILE rtl/tilemapctl_e.vhd
set_global_assignment -name VHDL_FILE rtl/tilemapctl.vhd
set_global_assignment -name VHDL_FILE rtl/bitmapctl_e.vhd
set_global_assignment -name VHDL_FILE rtl/spritereg.vhd
set_global_assignment -name VHDL_FILE rtl/spritectl.vhd
set_global_assignment -name VHDL_FILE rtl/sprite_pkg_body.vhd
set_global_assignment -name VHDL_FILE rtl/sprite_pkg.vhd
set_global_assignment -name VHDL_FILE rtl/sprite_array.vhd
set_global_assignment -name VHDL_FILE rtl/Inputs.VHD
set_global_assignment -name VHDL_FILE rtl/input_mapper.vhd
set_global_assignment -name VHDL_FILE rtl/dprom_2r.vhd
set_global_assignment -name VHDL_FILE rtl/dpram.vhd
set_global_assignment -name VHDL_FILE rtl/sprom.vhd
set_global_assignment -name VHDL_FILE rtl/spram.vhd
set_global_assignment -name VHDL_FILE rtl/clk_div.vhd
set_global_assignment -name SYSTEMVERILOG_FILE rtl/sdram.sv
set_global_assignment -name VHDL_FILE rtl/pll_mist.vhd
set_global_assignment -name VHDL_FILE rtl/cpu68.vhd
set_global_assignment -name SYSTEMVERILOG_FILE rtl/YM2149.sv
set_global_assignment -name VHDL_FILE rtl/Sound_Board.vhd
set_global_assignment -name VHDL_FILE rtl/roms/ldrun/snd_prg.vhd
set_global_assignment -name QIP_FILE ../../../common/mist/mist.qip
set_global_assignment -name QIP_FILE ../../../common/CPU/T80/T80.qip
set_global_assignment -name VHDL_FILE ../../../common/CPU/T80/Z80.vhd
# Pin & Location Assignments
# ==========================
set_location_assignment PIN_7 -to LED
set_location_assignment PIN_54 -to CLOCK_27
set_location_assignment PIN_144 -to VGA_R[5]
set_location_assignment PIN_143 -to VGA_R[4]
set_location_assignment PIN_142 -to VGA_R[3]
set_location_assignment PIN_141 -to VGA_R[2]
set_location_assignment PIN_137 -to VGA_R[1]
set_location_assignment PIN_135 -to VGA_R[0]
set_location_assignment PIN_133 -to VGA_B[5]
set_location_assignment PIN_132 -to VGA_B[4]
set_location_assignment PIN_125 -to VGA_B[3]
set_location_assignment PIN_121 -to VGA_B[2]
set_location_assignment PIN_120 -to VGA_B[1]
set_location_assignment PIN_115 -to VGA_B[0]
set_location_assignment PIN_114 -to VGA_G[5]
set_location_assignment PIN_113 -to VGA_G[4]
set_location_assignment PIN_112 -to VGA_G[3]
set_location_assignment PIN_111 -to VGA_G[2]
set_location_assignment PIN_110 -to VGA_G[1]
set_location_assignment PIN_106 -to VGA_G[0]
set_location_assignment PIN_136 -to VGA_VS
set_location_assignment PIN_119 -to VGA_HS
set_location_assignment PIN_65 -to AUDIO_L
set_location_assignment PIN_80 -to AUDIO_R
set_location_assignment PIN_105 -to SPI_DO
set_location_assignment PIN_88 -to SPI_DI
set_location_assignment PIN_126 -to SPI_SCK
set_location_assignment PIN_127 -to SPI_SS2
set_location_assignment PIN_91 -to SPI_SS3
set_location_assignment PIN_13 -to CONF_DATA0
set_location_assignment PIN_49 -to SDRAM_A[0]
set_location_assignment PIN_44 -to SDRAM_A[1]
set_location_assignment PIN_42 -to SDRAM_A[2]
set_location_assignment PIN_39 -to SDRAM_A[3]
set_location_assignment PIN_4 -to SDRAM_A[4]
set_location_assignment PIN_6 -to SDRAM_A[5]
set_location_assignment PIN_8 -to SDRAM_A[6]
set_location_assignment PIN_10 -to SDRAM_A[7]
set_location_assignment PIN_11 -to SDRAM_A[8]
set_location_assignment PIN_28 -to SDRAM_A[9]
set_location_assignment PIN_50 -to SDRAM_A[10]
set_location_assignment PIN_30 -to SDRAM_A[11]
set_location_assignment PIN_32 -to SDRAM_A[12]
set_location_assignment PIN_83 -to SDRAM_DQ[0]
set_location_assignment PIN_79 -to SDRAM_DQ[1]
set_location_assignment PIN_77 -to SDRAM_DQ[2]
set_location_assignment PIN_76 -to SDRAM_DQ[3]
set_location_assignment PIN_72 -to SDRAM_DQ[4]
set_location_assignment PIN_71 -to SDRAM_DQ[5]
set_location_assignment PIN_69 -to SDRAM_DQ[6]
set_location_assignment PIN_68 -to SDRAM_DQ[7]
set_location_assignment PIN_86 -to SDRAM_DQ[8]
set_location_assignment PIN_87 -to SDRAM_DQ[9]
set_location_assignment PIN_98 -to SDRAM_DQ[10]
set_location_assignment PIN_99 -to SDRAM_DQ[11]
set_location_assignment PIN_100 -to SDRAM_DQ[12]
set_location_assignment PIN_101 -to SDRAM_DQ[13]
set_location_assignment PIN_103 -to SDRAM_DQ[14]
set_location_assignment PIN_104 -to SDRAM_DQ[15]
set_location_assignment PIN_58 -to SDRAM_BA[0]
set_location_assignment PIN_51 -to SDRAM_BA[1]
set_location_assignment PIN_85 -to SDRAM_DQMH
set_location_assignment PIN_67 -to SDRAM_DQML
set_location_assignment PIN_60 -to SDRAM_nRAS
set_location_assignment PIN_64 -to SDRAM_nCAS
set_location_assignment PIN_66 -to SDRAM_nWE
set_location_assignment PIN_59 -to SDRAM_nCS
set_location_assignment PIN_33 -to SDRAM_CKE
set_location_assignment PIN_43 -to SDRAM_CLK
set_location_assignment PLL_1 -to "pll:pll|altpll:altpll_component"
# Classic Timing Assignments
# ==========================
set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS ON
# Analysis & Synthesis Assignments
# ================================
set_global_assignment -name FAMILY "Cyclone III"
set_global_assignment -name TOP_LEVEL_ENTITY LodeRunner_MiST
set_global_assignment -name DEVICE_FILTER_PIN_COUNT 144
set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 8
set_global_assignment -name DEVICE_FILTER_PACKAGE TQFP
set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE SPEED
set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS ON
set_global_assignment -name ALLOW_SYNCH_CTRL_USAGE ON
set_global_assignment -name VHDL_INPUT_VERSION VHDL_2008
set_global_assignment -name VHDL_SHOW_LMF_MAPPING_MESSAGES OFF
set_global_assignment -name SEARCH_PATH common/CPU/T80/ -tag from_archive
set_global_assignment -name SEARCH_PATH common/mist/ -tag from_archive
set_global_assignment -name SEARCH_PATH rtl/ -tag from_archive
# Fitter Assignments
# ==================
set_global_assignment -name DEVICE EP3C25E144C8
set_global_assignment -name ENABLE_CONFIGURATION_PINS OFF
set_global_assignment -name ENABLE_NCE_PIN OFF
set_global_assignment -name ENABLE_BOOT_SEL_PIN OFF
set_global_assignment -name CYCLONEIII_CONFIGURATION_SCHEME "PASSIVE SERIAL"
set_global_assignment -name CRC_ERROR_OPEN_DRAIN OFF
set_global_assignment -name FORCE_CONFIGURATION_VCCIO ON
set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL"
set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO"
set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "USE AS REGULAR IO"
set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "USE AS REGULAR IO"
set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "USE AS REGULAR IO"
set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "USE AS REGULAR IO"
set_global_assignment -name OPTIMIZE_HOLD_TIMING "ALL PATHS"
set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING ON
set_global_assignment -name FITTER_EFFORT "STANDARD FIT"
# Assembler Assignments
# =====================
set_global_assignment -name GENERATE_RBF_FILE ON
set_global_assignment -name USE_CONFIGURATION_DEVICE OFF
# SignalTap II Assignments
# ========================
set_global_assignment -name ENABLE_SIGNALTAP OFF
set_global_assignment -name USE_SIGNALTAP_FILE output_files/mcr3.stp
# Power Estimation Assignments
# ============================
set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "NO HEAT SINK WITH STILL AIR"
set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)"
# Advanced I/O Timing Assignments
# ===============================
set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -rise
set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -fall
set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -rise
set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -fall
# -----------------------------
# start ENTITY(LodeRunner_MiST)
# Pin & Location Assignments
# ==========================
set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQ[*]
set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_A[*]
set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_BA[0]
set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_BA[1]
set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQMH
set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_DQML
set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_nRAS
set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_nCAS
set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_nWE
set_instance_assignment -name FAST_OUTPUT_REGISTER ON -to SDRAM_nCS
set_instance_assignment -name FAST_OUTPUT_ENABLE_REGISTER ON -to SDRAM_DQ[*]
set_instance_assignment -name FAST_INPUT_REGISTER ON -to SDRAM_DQ[*]
# Fitter Assignments
# ==================
set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_A[*]
set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_DQ[*]
set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_BA[*]
set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_DQML
set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_DQMH
set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_nRAS
set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_nCAS
set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_nWE
set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_nCS
set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_CKE
set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to SDRAM_CLK
set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_R[*]
set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_G[*]
set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_B[*]
set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_HS
set_instance_assignment -name CURRENT_STRENGTH_NEW "MAXIMUM CURRENT" -to VGA_VS
set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to AUDIO_L
set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to AUDIO_R
set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to SPI_DO
# start DESIGN_PARTITION(Top)
# ---------------------------
# Incremental Compilation Assignments
# ===================================
set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top
set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top
set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
# end DESIGN_PARTITION(Top)
# -------------------------
# end ENTITY(LodeRunner_MiST)
# ---------------------------

View File

@@ -0,0 +1,15 @@
@echo off
del /s *.bak
del /s *.orig
del /s *.rej
rmdir /s /q db
rmdir /s /q incremental_db
rmdir /s /q output
rmdir /s /q simulation
rmdir /s /q greybox_tmp
del PLLJ_PLLSPE_INFO.txt
del *.qws
del *.ppf
del *.qip
del *.ddb
pause

View File

@@ -0,0 +1,273 @@
library IEEE;
use IEEE.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
library work;
use work.pace_pkg.all;
use work.video_controller_pkg.all;
use work.sprite_pkg.all;
--use work.project_pkg.all;
use work.platform_pkg.all;
entity Graphics is
port
(
bitmap_ctl_i : in to_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS);
bitmap_ctl_o : out from_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS);
tilemap_ctl_i : in to_TILEMAP_CTL_a(1 to PACE_VIDEO_NUM_TILEMAPS);
tilemap_ctl_o : out from_TILEMAP_CTL_a(1 to PACE_VIDEO_NUM_TILEMAPS);
sprite_reg_i : in to_SPRITE_REG_t;
sprite_ctl_i : in to_SPRITE_CTL_t;
sprite_ctl_o : out from_SPRITE_CTL_t;
spr0_hit : out std_logic;
graphics_i : in to_GRAPHICS_t;
graphics_o : out from_GRAPHICS_t;
video_i : in from_VIDEO_t;
video_o : out to_VIDEO_t
);
end Graphics;
architecture SYN of Graphics is
alias clk : std_logic is video_i.clk;
signal from_video_ctl : from_VIDEO_CTL_t;
signal bitmap_ctl_o_s : from_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS);
signal tilemap_ctl_o_s : from_TILEMAP_CTL_a(1 to PACE_VIDEO_NUM_TILEMAPS);
signal sprite_ctl_o_s : from_SPRITE_CTL_t;
signal sprite_pri : std_logic;
signal rgb_data : RGB_t;
-- before OSD is mixed in
signal video_o_s : to_VIDEO_t;
begin
-- dodgy OSD transparency...
video_o.clk <= video_o_s.clk;
video_o.rgb.r <= video_o_s.rgb.r;
video_o.rgb.g <= video_o_s.rgb.g;
video_o.rgb.b <= video_o_s.rgb.b;
video_o.hsync <= video_o_s.hsync;
video_o.vsync <= video_o_s.vsync;
video_o.hblank <= video_o_s.hblank;
video_o.vblank <= video_o_s.vblank;
graphics_o.y <= from_video_ctl.y;
-- should this be the 'real' vblank or the 'active' vblank?
-- - use the real for now
graphics_o.hblank <= video_o_s.hblank;
graphics_o.vblank <= video_o_s.vblank;
--graphics_o.vblank <= from_video_ctl.vblank;
pace_video_controller_inst : entity work.pace_video_controller
generic map
(
CONFIG => PACE_VIDEO_CONTROLLER_TYPE,
DELAY => PACE_VIDEO_PIPELINE_DELAY,
H_SIZE => PACE_VIDEO_H_SIZE,
V_SIZE => PACE_VIDEO_V_SIZE,
L_CROP => PACE_VIDEO_L_CROP,
R_CROP => PACE_VIDEO_R_CROP,
H_SCALE => PACE_VIDEO_H_SCALE,
V_SCALE => PACE_VIDEO_V_SCALE,
H_SYNC_POL => PACE_VIDEO_H_SYNC_POLARITY,
V_SYNC_POL => PACE_VIDEO_V_SYNC_POLARITY,
BORDER_RGB => PACE_VIDEO_BORDER_RGB
)
port map
(
-- clocking etc
video_i => video_i,
-- register interface
reg_i.h_scale => "000",
reg_i.v_scale => "000",
-- video data signals (in)
rgb_i => rgb_data,
-- video control signals (out)
video_ctl_o => from_video_ctl,
-- VGA signals (out)
video_o => video_o_s
);
pace_video_mixer_inst : entity work.pace_video_mixer
port map
(
bitmap_ctl_o => bitmap_ctl_o_s,
tilemap_ctl_o => tilemap_ctl_o_s,
sprite_rgb => sprite_ctl_o_s.rgb,
sprite_set => sprite_ctl_o_s.set,
sprite_pri => sprite_pri,
video_ctl_i => from_video_ctl,
graphics_i => graphics_i,
rgb_o => rgb_data
);
GEN_NO_BITMAPS : if PACE_VIDEO_NUM_BITMAPS = 0 generate
--bitmap_ctl_o_s <= ((others => '0'), (others => (others => '0')), '0');
end generate GEN_NO_BITMAPS;
GEN_BITMAP_1 : if PACE_VIDEO_NUM_BITMAPS > 0 generate
forground_bitmapctl_inst : entity work.bitmapCtl(BITMAP_1)
generic map
(
DELAY => PACE_VIDEO_PIPELINE_DELAY
)
port map
(
reset => video_i.reset,
video_ctl => from_video_ctl,
ctl_i => bitmap_ctl_i(1),
ctl_o => bitmap_ctl_o_s(1),
graphics_i => graphics_i
);
end generate GEN_BITMAP_1;
GEN_BITMAP_2 : if PACE_VIDEO_NUM_BITMAPS > 1 generate
forground_bitmapctl_inst : entity work.bitmapCtl(BITMAP_2)
generic map
(
DELAY => PACE_VIDEO_PIPELINE_DELAY
)
port map
(
reset => video_i.reset,
video_ctl => from_video_ctl,
ctl_i => bitmap_ctl_i(2),
ctl_o => bitmap_ctl_o_s(2),
graphics_i => graphics_i
);
end generate GEN_BITMAP_2;
GEN_BITMAP_3 : if PACE_VIDEO_NUM_BITMAPS > 2 generate
forground_bitmapctl_inst : entity work.bitmapCtl(BITMAP_3)
generic map
(
DELAY => PACE_VIDEO_PIPELINE_DELAY
)
port map
(
reset => video_i.reset,
video_ctl => from_video_ctl,
ctl_i => bitmap_ctl_i(3),
ctl_o => bitmap_ctl_o_s(3),
graphics_i => graphics_i
);
end generate GEN_BITMAP_3;
bitmap_ctl_o <= bitmap_ctl_o_s;
GEN_NO_TILEMAPS : if PACE_VIDEO_NUM_TILEMAPS = 0 generate
--tilemap_ctl_o_s(1) <= ((others => '0'), (others => '0'), (others => '0'),
-- (others => (others => '0')), '0');
end generate GEN_NO_TILEMAPS;
GEN_TILEMAP_1 : if PACE_VIDEO_NUM_TILEMAPS > 0 generate
foreground_mapctl_inst : entity work.tilemapCtl(TILEMAP_1)
generic map
(
DELAY => PACE_VIDEO_PIPELINE_DELAY
)
port map
(
reset => video_i.reset,
video_ctl => from_video_ctl,
ctl_i => tilemap_ctl_i(1),
ctl_o => tilemap_ctl_o_s(1),
graphics_i => graphics_i
);
end generate GEN_TILEMAP_1;
GEN_TILEMAP_2 : if PACE_VIDEO_NUM_TILEMAPS > 1 generate
background_mapctl_inst : entity work.tilemapCtl(TILEMAP_2)
generic map
(
DELAY => PACE_VIDEO_PIPELINE_DELAY
)
port map
(
reset => video_i.reset,
video_ctl => from_video_ctl,
ctl_i => tilemap_ctl_i(2),
ctl_o => tilemap_ctl_o_s(2),
graphics_i => graphics_i
);
end generate GEN_TILEMAP_2;
tilemap_ctl_o <= tilemap_ctl_o_s;
GEN_NO_SPRITES : if PACE_VIDEO_NUM_SPRITES = 0 generate
sprite_ctl_o_s <= ((others => '0'), (others => (others => '0')), '0');
sprite_pri <= '0';
spr0_hit <= '0';
end generate GEN_NO_SPRITES;
GEN_SPRITES : if PACE_VIDEO_NUM_SPRITES > 0 generate
sprites_inst : sprite_array
generic map
(
N_SPRITES => PACE_VIDEO_NUM_SPRITES,
DELAY => PACE_VIDEO_PIPELINE_DELAY
)
port map
(
reset => video_i.reset,
-- register interface
reg_i => sprite_reg_i,
-- video control signals
video_ctl => from_video_ctl,
graphics_i => graphics_i,
row_a => sprite_ctl_o_s.a,
row_d => sprite_ctl_i.d,
rgb => sprite_ctl_o_s.rgb,
set => sprite_ctl_o_s.set,
pri => sprite_pri,
spr0_set => spr0_hit
);
end generate GEN_SPRITES;
sprite_ctl_o <= sprite_ctl_o_s;
end SYN;

View File

@@ -0,0 +1,51 @@
Library IEEE;
Use IEEE.std_logic_1164.all;
library work;
use work.pace_pkg.all;
entity inputs is
generic
(
NUM_DIPS : integer := 8;
NUM_INPUTS : integer := 2;
CLK_1US_DIV : natural := 30
);
port
(
clk : in std_logic;
reset : in std_logic;
jamma : in from_JAMMA_t;
dips : in std_logic_vector(NUM_DIPS-1 downto 0);
inputs : out from_MAPPED_INPUTS_t(0 to NUM_INPUTS-1)
);
end entity inputs;
architecture SYN of inputs is
signal reset_n : std_logic;
begin
reset_n <= not reset;
inputmapper_inst : entity work.inputmapper
generic map
(
NUM_DIPS => NUM_DIPS,
NUM_INPUTS => NUM_INPUTS
)
port map
(
clk => clk,
rst_n => reset_n,
jamma => jamma,
dips => dips,
inputs => inputs
);
end architecture SYN;

View File

@@ -0,0 +1,279 @@
module LodeRunner_MiST(
output LED,
output [5:0] VGA_R,
output [5:0] VGA_G,
output [5:0] VGA_B,
output VGA_HS,
output VGA_VS,
output AUDIO_L,
output AUDIO_R,
input SPI_SCK,
output SPI_DO,
input SPI_DI,
input SPI_SS2,
input SPI_SS3,
input CONF_DATA0,
input CLOCK_27,
output [12:0] SDRAM_A,
inout [15:0] SDRAM_DQ,
output SDRAM_DQML,
output SDRAM_DQMH,
output SDRAM_nWE,
output SDRAM_nCAS,
output SDRAM_nRAS,
output SDRAM_nCS,
output [1:0] SDRAM_BA,
output SDRAM_CLK,
output SDRAM_CKE
);
`include "rtl/build_id.v"
localparam CONF_STR = {
"LDRUNNER;ROM;",
"O2,Rotate Controls,Off,On;",
"O34,Scanlines,Off,25%,50%,75%;",
"O5,Blending,Off,On;",
"O6,Service,Off,On;",
"T0,Reset;",
"V,v1.0.",`BUILD_DATE
};
assign LED = ~ioctl_downl;
assign SDRAM_CLK = clk_sd;
assign SDRAM_CKE = 1;
wire clk_sys, clk_aud, clk_sd, clk_vid;
wire pll_locked;
pll_mist pll(
.inclk0(CLOCK_27),
.areset(0),
.c0(clk_sys),
.c1(clk_vid),
.c2(clk_sd),
.c3(clk_aud),
.locked(pll_locked)
);
wire [31:0] status;
wire [1:0] buttons;
wire [1:0] switches;
wire [7:0] joystick_0;
wire [7:0] joystick_1;
wire scandoublerD;
wire ypbpr;
wire [11:0] audio;
wire hs, vs;
wire blankn = 1'b1;//todo
wire [3:0] g,b,r;
wire key_pressed;
wire [7:0] key_code;
wire key_strobe;
wire [14:0] rom_addr;
wire [15:0] rom_do;
wire [13:0] snd_addr;
wire [15:0] snd_do;
wire [14:0] sp_addr;
wire [31:0] sp_do;
wire ioctl_downl;
wire [7:0] ioctl_index;
wire ioctl_wr;
wire [24:0] ioctl_addr;
wire [7:0] ioctl_dout;
data_io data_io(
.clk_sys ( clk_sd ),
.SPI_SCK ( SPI_SCK ),
.SPI_SS2 ( SPI_SS2 ),
.SPI_DI ( SPI_DI ),
.ioctl_download( ioctl_downl ),
.ioctl_index ( ioctl_index ),
.ioctl_wr ( ioctl_wr ),
.ioctl_addr ( ioctl_addr ),
.ioctl_dout ( ioctl_dout )
);
wire [24:0] sp_ioctl_addr = ioctl_addr - 17'h10000; //todo
reg port1_req, port2_req;
sdram sdram(
.*,
.init_n ( pll_locked ),
.clk ( clk_sd ),
// port1 used for main + sound CPU
.port1_req ( port1_req ),
.port1_ack ( ),
.port1_a ( ioctl_addr[23:1] ),
.port1_ds ( {ioctl_addr[0], ~ioctl_addr[0]} ),
.port1_we ( ioctl_downl ),
.port1_d ( {ioctl_dout, ioctl_dout} ),
.port1_q ( ),
.cpu1_addr ( ioctl_downl ? 16'hffff : {2'b00, rom_addr[14:1]} ),
.cpu1_q ( rom_do ),
.cpu2_addr ( ioctl_downl ? 16'hffff : (16'h4000 + snd_addr[13:1]) ),
.cpu2_q ( snd_do ),
// port2 for sprite graphics
.port2_req ( port2_req ),
.port2_ack ( ),
.port2_a ( {sp_ioctl_addr[23:16], sp_ioctl_addr[13:0], sp_ioctl_addr[15]} ), // merge sprite roms to 32-bit wide words
.port2_ds ( {sp_ioctl_addr[14], ~sp_ioctl_addr[14]} ),
.port2_we ( ioctl_downl ),
.port2_d ( {ioctl_dout, ioctl_dout} ),
.port2_q ( ),
.sp_addr ( ioctl_downl ? 15'h7fff : sp_addr ),
.sp_q ( sp_do )
);
// ROM download controller
always @(posedge clk_sd) begin
reg ioctl_wr_last = 0;
ioctl_wr_last <= ioctl_wr;
if (ioctl_downl) begin
if (~ioctl_wr_last && ioctl_wr) begin
port1_req <= ~port1_req;
port2_req <= ~port2_req;
end
end
end
// reset signal generation
reg reset = 1;
reg rom_loaded = 0;
always @(posedge clk_sys) begin
reg ioctl_downlD;
reg [15:0] reset_count;
ioctl_downlD <= ioctl_downl;
if (status[0] | buttons[1] | ~rom_loaded) reset_count <= 16'hffff;
else if (reset_count != 0) reset_count <= reset_count - 1'd1;
if (ioctl_downlD & ~ioctl_downl) rom_loaded <= 1;
reset <= reset_count != 16'h0000;
end
target_top target_top(
.clock_50(clk_sys),//40MHz
.clock_vid(clk_vid),//25.263158MHz
.clk_aud(clk_aud),//0.895MHz
.reset_in(reset),
.audio_out(audio),
.usr_coin1(m_coin1),
.usr_coin2(m_coin2),
.usr_service(status[6]),
.usr_start1(m_one_player),
.usr_start2(m_two_players),
.p1_up(m_up),
.p1_dw(m_down),
.p1_lt(m_left),
.p1_rt(m_right),
.p1_f1(m_fireA),
.p1_f2(m_fireB),
.p2_up(m_up2),
.p2_dw(m_down2),
.p2_lt(m_left2),
.p2_rt(m_right2),
.p2_f1(m_fire2A),
.p2_f2(m_fire2B),
.VGA_VS(hs),
.VGA_HS(vs),
.VGA_R(r),
.VGA_G(g),
.VGA_B(b),
.cpu_rom_addr(rom_addr),
.cpu_rom_do( rom_addr[0] ? rom_do[15:8] : rom_do[7:0] ),
.snd_rom_addr(snd_addr),
.snd_rom_do(snd_addr[0] ? snd_do[15:8] : snd_do[7:0])
);
mist_video #(.COLOR_DEPTH(4), .SD_HCNT_WIDTH(9)) mist_video(
.clk_sys ( clk_sys ),
.SPI_SCK ( SPI_SCK ),
.SPI_SS3 ( SPI_SS3 ),
.SPI_DI ( SPI_DI ),
.R ( blankn ? r : 0 ),
.G ( blankn ? g : 0 ),
.B ( blankn ? b : 0 ),
.HSync ( hs ),
.VSync ( vs ),
.VGA_R ( VGA_R ),
.VGA_G ( VGA_G ),
.VGA_B ( VGA_B ),
.VGA_VS ( VGA_VS ),
.VGA_HS ( VGA_HS ),
.rotate ( { 1'b1, status[2] } ),
.ce_divider ( 1'b1 ),
.scandoubler_disable( 1),//scandoublerD ),
.scanlines ( status[4:3] ),
.blend ( status[5] ),
.ypbpr ( ypbpr )
);
user_io #(
.STRLEN(($size(CONF_STR)>>3)))
user_io(
.clk_sys (clk_sys ),
.conf_str (CONF_STR ),
.SPI_CLK (SPI_SCK ),
.SPI_SS_IO (CONF_DATA0 ),
.SPI_MISO (SPI_DO ),
.SPI_MOSI (SPI_DI ),
.buttons (buttons ),
.switches (switches ),
.scandoubler_disable (scandoublerD ),
.ypbpr (ypbpr ),
.key_strobe (key_strobe ),
.key_pressed (key_pressed ),
.key_code (key_code ),
.joystick_0 (joystick_0 ),
.joystick_1 (joystick_1 ),
.status (status )
);
wire dac_o;
assign AUDIO_L = dac_o;
assign AUDIO_R = dac_o;
dac #(
.C_bits(12))
dac(
.clk_i(clk_aud),
.res_n_i(1),
.dac_i(audio),
.dac_o(dac_o)
);
wire m_up, m_down, m_left, m_right, m_fireA, m_fireB, m_fireC, m_fireD, m_fireE, m_fireF;
wire m_up2, m_down2, m_left2, m_right2, m_fire2A, m_fire2B, m_fire2C, m_fire2D, m_fire2E, m_fire2F;
wire m_tilt, m_coin1, m_coin2, m_coin3, m_coin4, m_one_player, m_two_players, m_three_players, m_four_players;
arcade_inputs inputs (
.clk ( clk_sys ),
.key_strobe ( key_strobe ),
.key_pressed ( key_pressed ),
.key_code ( key_code ),
.joystick_0 ( joystick_0 ),
.joystick_1 ( joystick_1 ),
.rotate ( status[2] ),
.orientation ( 2'b10 ),
.joyswap ( 1'b0 ),
.oneplayer ( 1'b1 ),
.controls ( {m_tilt, m_coin4, m_coin3, m_coin2, m_coin1, m_four_players, m_three_players, m_two_players, m_one_player} ),
.player1 ( {m_fireF, m_fireE, m_fireD, m_fireC, m_fireB, m_fireA, m_up, m_down, m_left, m_right} ),
.player2 ( {m_fire2F, m_fire2E, m_fire2D, m_fire2C, m_fire2B, m_fire2A, m_up2, m_down2, m_left2, m_right2} )
);
endmodule

View File

@@ -0,0 +1,428 @@
---------------------------------------------------------------------------------
-- Moon patrol sound board by Dar (darfpga@aol.fr)
-- http://darfpga.blogspot.fr
---------------------------------------------------------------------------------
-- gen_ram.vhd
-- Copyright 2005-2008 by Peter Wendrich (pwsoft@syntiac.com)
-- http://www.syntiac.com/fpga64.html
---------------------------------------------------------------------------------
-- cpu68 - Version 9th Jan 2004 0.8
-- 6800/01 compatible CPU core
-- GNU public license - December 2002 : John E. Kent
---------------------------------------------------------------------------------
-- Educational use only
-- Do not redistribute synthetized file with roms
-- Do not redistribute roms whatever the form
-- Use at your own risk
---------------------------------------------------------------------------------
-- Version 0.0 -- 24/11/2017 --
-- initial version
---------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.numeric_std.all;
entity Sound_Board is
port(
clock_E : in std_logic; -- 3.58 Mhz/4
areset : in std_logic;
select_sound : in std_logic_vector(7 downto 0);
audio_out : out std_logic_vector(11 downto 0);
snd_rom_addr : out std_logic_vector(13 downto 0);
snd_rom_do : in std_logic_vector(7 downto 0);
dbg_cpu_addr : out std_logic_vector(15 downto 0)
);
end Sound_Board;
architecture struct of Sound_Board is
component YM2149
port (
CLK : in std_logic;
CE : in std_logic;
RESET : in std_logic;
A8 : in std_logic := '1';
A9_L : in std_logic := '0';
BDIR : in std_logic; -- Bus Direction (0 - read , 1 - write)
BC : in std_logic; -- Bus control
DI : in std_logic_vector(7 downto 0);
DO : out std_logic_vector(7 downto 0);
CHANNEL_A : out std_logic_vector(7 downto 0);
CHANNEL_B : out std_logic_vector(7 downto 0);
CHANNEL_C : out std_logic_vector(7 downto 0);
SEL : in std_logic;
MODE : in std_logic;
ACTIVE : out std_logic_vector(5 downto 0);
IOA_in : in std_logic_vector(7 downto 0);
IOA_out : out std_logic_vector(7 downto 0);
IOB_in : in std_logic_vector(7 downto 0);
IOB_out : out std_logic_vector(7 downto 0)
);
end component;
signal reset : std_logic := '1';
signal reset_cnt : integer range 0 to 1000000 := 1000000;
signal cpu_addr : std_logic_vector(15 downto 0);
signal cpu_di : std_logic_vector( 7 downto 0);
signal cpu_do : std_logic_vector( 7 downto 0);
signal cpu_rw : std_logic;
signal cpu_irq : std_logic;
signal cpu_nmi : std_logic;
signal irqraz_cs : std_logic;
signal irqraz_we : std_logic;
signal wram_cs : std_logic;
signal wram_we : std_logic;
signal wram_do : std_logic_vector( 7 downto 0);
signal rom_cs : std_logic;
signal rom_do : std_logic_vector( 7 downto 0);
signal ay1_chan_a : std_logic_vector(7 downto 0);
signal ay1_chan_b : std_logic_vector(7 downto 0);
signal ay1_chan_c : std_logic_vector(7 downto 0);
signal ay1_do : std_logic_vector(7 downto 0);
signal ay1_audio : std_logic_vector(9 downto 0);
signal ay1_port_b_do : std_logic_vector(7 downto 0);
signal ay2_chan_a : std_logic_vector(7 downto 0);
signal ay2_chan_b : std_logic_vector(7 downto 0);
signal ay2_chan_c : std_logic_vector(7 downto 0);
signal ay2_do : std_logic_vector(7 downto 0);
signal ay2_audio : std_logic_vector(9 downto 0);
signal ports_cs : std_logic;
signal ports_we : std_logic;
signal port1_bus : std_logic_vector(7 downto 0);
signal port1_data : std_logic_vector(7 downto 0);
signal port1_ddr : std_logic_vector(7 downto 0);
signal port1_in : std_logic_vector(7 downto 0);
signal port2_bus : std_logic_vector(7 downto 0);
signal port2_data : std_logic_vector(7 downto 0);
signal port2_ddr : std_logic_vector(7 downto 0);
signal port2_in : std_logic_vector(7 downto 0);
signal adpcm_cs : std_logic;
signal adpcm_we : std_logic;
signal adpcm_0_di : std_logic_vector(3 downto 0);
signal select_sound_r : std_logic_vector(7 downto 0);
signal audio : std_logic_vector(12 downto 0);
type t_step_size is array(0 to 48) of integer range 0 to 1552;
constant step_size : t_step_size := (
16, 17, 19, 21, 23, 25, 28, 31,
34, 37, 41, 45, 50, 55, 60, 66,
73, 80, 88, 97, 107, 118, 130, 143,
157, 173, 190, 209, 230, 253, 279, 307,
337, 371, 408, 449, 494, 544, 598, 658,
724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552);
type t_delta_step is array(0 to 7) of integer range -1 to 8;
constant delta_step : t_delta_step := (-1,-1,-1,-1,2,4,6,8);
signal adpcm_vclk : std_logic := '0';
signal adpcm_signal : integer range -16384 to 16383 := 0;
-- adpcm algorithm (4bits) [no pcm here]
--
-- val : input value 3bits (0 - 7 : b2b1b0)
-- sign : input value sign (4th bit : 0=>sign=1 ,1=>sign=-1)
--
-- step : internal data, init = 0
-- signal : output value, init = 0;
--
-- for each new val (and sign) :
-- |
-- | step_size = 16*1.1^(step)
-- | delta = sign * (step_size/8 + step_size/4*b0 + step_size/2*b1 + step_size*b2)
-- | signal = signal + delta
-- | step = step + delta_step(val)
-- |
-- | signal is then limited between -2048..2047
-- | step is then limited between 0..48
begin
dbg_cpu_addr <= cpu_addr;
-- cs
wram_cs <= '1' when cpu_addr(15 downto 7) = X"00"&'1' else '0'; -- 0080-00FF
ports_cs <= '1' when cpu_addr(15 downto 4) = X"000" else '0'; -- 0000-000F
adpcm_cs <= '1' when cpu_addr(14 downto 11) = "0001" else '0'; -- 0800-0FFF / 8800-8FFF
irqraz_cs <= '1' when cpu_addr(14 downto 12) = "001" else '0'; -- 1000-1FFF / 9000-9FFF
rom_cs <= '1' when cpu_addr(14 downto 12) = "111" else '0'; -- 7000-7FFF / F000-FFFF
-- write enables
wram_we <= '1' when cpu_rw = '0' and wram_cs = '1' else '0';
ports_we <= '1' when cpu_rw = '0' and ports_cs = '1' else '0';
adpcm_we <= '1' when cpu_rw = '0' and adpcm_cs = '1' else '0';
irqraz_we <= '1' when cpu_rw = '0' and irqraz_cs = '1' else '0';
-- mux cpu in data between roms/io/wram
cpu_di <=
wram_do when wram_cs = '1' else
port1_ddr when ports_cs = '1' and cpu_addr(3 downto 0) = X"0" else
port2_ddr when ports_cs = '1' and cpu_addr(3 downto 0) = X"1" else
port1_in when ports_cs = '1' and cpu_addr(3 downto 0) = X"2" else
port2_in when ports_cs = '1' and cpu_addr(3 downto 0) = X"3" else
rom_do when rom_cs = '1' else X"55";
process (clock_E)
begin
if rising_edge(clock_E) then
reset <= '0';
if reset_cnt /= 0 then
reset_cnt <= reset_cnt - 1;
reset <= '1';
end if;
if areset = '1' then
reset_cnt <= 1000000;
end if;
end if;
end process;
-- irq to cpu
process (reset, clock_E)
begin
if reset='1' then
cpu_irq <= '0';
select_sound_r(7) <= '1';
elsif rising_edge(clock_E) then
select_sound_r <= select_sound;
if select_sound_r(7) = '0' then
cpu_irq <= '1';
end if;
if irqraz_we = '1' then
cpu_irq <= '0';
end if;
end if;
end process;
-- cpu nmi
cpu_nmi <= adpcm_vclk;
-- 6803 ports 1 and 2 (only)
process (reset, clock_E)
begin
if reset='1' then
port1_ddr <= (others=>'0'); -- port1 set as input
port1_data <= (others=>'0'); -- port1 data set to 0
port2_ddr <= ("11100000"); -- port2 bit 7 to 5 should always remain output to simulate mode data
port2_data <= ("01000000"); -- port2 data bit 7 to 5 set to 2 (for mode 2 at start up)
elsif rising_edge(clock_E) then
if ports_cs = '1' and ports_we = '1' then
if cpu_addr(3 downto 0) = X"0" then port1_ddr <= cpu_do; end if;
if cpu_addr(3 downto 0) = X"1" then port2_ddr <= cpu_do and "11100000"; end if;
if cpu_addr(3 downto 0) = X"2" then port1_data <= cpu_do; end if;
if cpu_addr(3 downto 0) = X"3" then port2_data <= cpu_do; end if;
end if;
end if;
end process;
port1_in <= (port1_bus and not(port1_ddr)) or (port1_data and port1_ddr);
port2_in <= (port2_bus and not(port2_ddr)) or (port2_data and port2_ddr);
-- port1 bus mux
port1_bus <= ay1_do when port2_data(4) = '0' else
ay2_do when port2_data(3) = '0' else X"FF";
-- port2 bus
port2_bus <= X"FF";
-- latch adpcm (msm5205) data in
process (reset, clock_E)
begin
if reset='1' then
adpcm_0_di <= (others=>'0');
elsif rising_edge(clock_E) then
if adpcm_cs = '1' and adpcm_we = '1' then
if cpu_addr(1) = '0' then adpcm_0_di <= cpu_do(3 downto 0); end if;
end if;
end if;
end process;
-- adcpm clocks and computation -- make 24kHz and vclk 8/6/4kHz
adpcm_clocks : process(clock_E, ay1_port_b_do)
variable clock_div_a : integer range 0 to 148 := 0;
variable clock_div_b : integer range 0 to 5 := 0;
variable step : integer range 0 to 48;
variable step_n : integer range -1 to 48+8;
variable sz : integer range 0 to 1552;
variable dn : integer range -32768 to 32767;
variable adpcm_signal_n : integer range -32768 to 32767;
begin
if rising_edge(clock_E) then
if clock_div_a = 37 then -- 24kHz
clock_div_a := 0;
case ay1_port_b_do(3 downto 2) is
when "00" => if clock_div_b = 5 then clock_div_b := 0; else clock_div_b := clock_div_b +1; end if; -- 4kHz
when "01" => if clock_div_b = 2 then clock_div_b := 0; else clock_div_b := clock_div_b +1; end if; -- 8kHz
when "10" => if clock_div_b = 3 then clock_div_b := 0; else clock_div_b := clock_div_b +1; end if; -- 6kHz
when others => null;
end case;
if clock_div_b = 0 then adpcm_vclk <= '1'; else adpcm_vclk <= '0'; end if;
else
clock_div_a := clock_div_a + 1;
end if;
if ay1_port_b_do(0) = '1' then
step := 0;
adpcm_signal <= 0;
else
if clock_div_b = 0 then
case clock_div_a is
when 0 => -- it's time to get new nibble (adpcm_0_di)
sz := step_size(step);
dn := sz/8;
if adpcm_0_di(0) = '1' then dn := dn + sz/4; end if;
if adpcm_0_di(1) = '1' then dn := dn + sz/2; end if;
if adpcm_0_di(2) = '1' then dn := dn + sz ; end if;
if adpcm_0_di(3) = '1' then
dn := -dn;
end if;
step_n := step + delta_step(to_integer(unsigned(adpcm_0_di(2 downto 0))));
when 4 =>
adpcm_signal_n := adpcm_signal + dn;
if step_n > 48 then step := 48; else step := step_n; end if;
if step_n < 0 then step := 0; else step := step_n; end if;
when 8 =>
if adpcm_signal_n > 2040 then adpcm_signal <= 2040; else adpcm_signal <= adpcm_signal_n; end if;
if adpcm_signal_n < -2040 then adpcm_signal <= -2040; else adpcm_signal <= adpcm_signal_n; end if;
when others => null;
end case;
end if;
end if;
end if;
end process;
-- audio mux
audio <= ("000"&ay1_audio) + ("000"&ay2_audio) + ('0'&std_logic_vector(to_unsigned((adpcm_signal)+2048,12)));
audio_out <= audio(12 downto 1);
-- microprocessor 6800/01/03
main_cpu : entity work.cpu68
port map(
clk => clock_E, -- E clock input (falling edge)
rst => reset, -- reset input (active high)
rw => cpu_rw, -- read not write output
vma => open, -- valid memory address (active high)
address => cpu_addr, -- address bus output
data_in => cpu_di, -- data bus input
data_out => cpu_do, -- data bus output
hold => '0', -- hold input (active high) extend bus cycle
halt => '0', -- halt input (active high) grants DMA
irq => cpu_irq, -- interrupt request input (active high)
nmi => cpu_nmi, -- non maskable interrupt request input (active high)
test_alu => open,
test_cc => open
);
rom_cpu : entity work.snd_prg
port map(
clk => clock_E, -- E clock input (falling edge)
addr => cpu_addr(13 downto 0),
data => rom_do
);
-- snd_rom_addr <= cpu_addr(13 downto 0);
-- cpu wram
cpu_ram : entity work.spram
generic map( widthad_a => 7)
port map(
clock => clock_E,
wren => wram_we,
address => cpu_addr(6 downto 0),
data => cpu_do,
q => wram_do
);
ay83910_inst1: YM2149
port map (
CLK => clock_E,
CE => '1',
RESET => reset,
A8 => '1',
A9_L => port2_data(4),
BDIR => port2_data(0),
BC => port2_data(2),
DI => port1_data,
DO => ay1_do,
CHANNEL_A => ay1_chan_a,
CHANNEL_B => ay1_chan_b,
CHANNEL_C => ay1_chan_c,
SEL => '0',
MODE => '1',
ACTIVE => open,
IOA_in => select_sound_r,
IOA_out => open,
IOB_in => (others => '0'),
IOB_out => ay1_port_b_do
);
ay1_audio <= "0000000000" + ay1_chan_a + ay1_chan_b + ay1_chan_c;
ay83910_inst2: YM2149
port map (
CLK => clock_E,
CE => '1',
RESET => reset,
A8 => '1',
A9_L => port2_data(3),
BDIR => port2_data(0),
BC => port2_data(2),
DI => port1_data,
DO => ay2_do,
CHANNEL_A => ay2_chan_a,
CHANNEL_B => ay2_chan_b,
CHANNEL_C => ay2_chan_c,
SEL => '0',
MODE => '1',
ACTIVE => open,
IOA_in => (others => '0'),
IOA_out => open,
IOB_in => (others => '0'),
IOB_out => open
);
ay2_audio <= "0000000000" + ay2_chan_a + ay2_chan_b + ay2_chan_c;
end struct;

View File

@@ -0,0 +1,329 @@
//
// Copyright (c) MikeJ - Jan 2005
// Copyright (c) 2016-2018 Sorgelig
//
// All rights reserved
//
// Redistribution and use in source and synthezised forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// Redistributions in synthesized form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// Neither the name of the author nor the names of other contributors may
// be used to endorse or promote products derived from this software without
// specific prior written permission.
//
// THIS CODE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
//
// BDIR BC MODE
// 0 0 inactive
// 0 1 read value
// 1 0 write value
// 1 1 set address
//
module YM2149
(
input CLK, // Global clock
input CE, // PSG Clock enable
input RESET, // Chip RESET (set all Registers to '0', active hi)
input BDIR, // Bus Direction (0 - read , 1 - write)
input BC, // Bus control
input A8,
input A9_L,
input [7:0] DI, // Data In
output [7:0] DO, // Data Out
output [7:0] CHANNEL_A, // PSG Output channel A
output [7:0] CHANNEL_B, // PSG Output channel B
output [7:0] CHANNEL_C, // PSG Output channel C
input SEL,
input MODE,
output [5:0] ACTIVE,
input [7:0] IOA_in,
output [7:0] IOA_out,
input [7:0] IOB_in,
output [7:0] IOB_out
);
assign ACTIVE = ~ymreg[7][5:0];
assign IOA_out = ymreg[7][6] ? ymreg[14] : 8'hff;
assign IOB_out = ymreg[7][7] ? ymreg[15] : 8'hff;
reg [7:0] addr;
reg [7:0] ymreg[16];
wire cs = !A9_L & A8;
// Write to PSG
reg env_reset;
always @(posedge CLK) begin
if(RESET) begin
ymreg <= '{default:0};
ymreg[7] <= '1;
addr <= '0;
env_reset <= 0;
end else begin
env_reset <= 0;
if(cs & BDIR) begin
if(BC) addr <= DI;
else if(!addr[7:4]) begin
ymreg[addr[3:0]] <= DI;
env_reset <= (addr == 13);
end
end
end
end
// Read from PSG
assign DO = dout;
reg [7:0] dout;
always_comb begin
dout = 8'hFF;
if(cs & ~BDIR & BC & !addr[7:4]) begin
case(addr[3:0])
0: dout = ymreg[0];
1: dout = ymreg[1][3:0];
2: dout = ymreg[2];
3: dout = ymreg[3][3:0];
4: dout = ymreg[4];
5: dout = ymreg[5][3:0];
6: dout = ymreg[6][4:0];
7: dout = ymreg[7];
8: dout = ymreg[8][4:0];
9: dout = ymreg[9][4:0];
10: dout = ymreg[10][4:0];
11: dout = ymreg[11];
12: dout = ymreg[12];
13: dout = ymreg[13][3:0];
14: dout = ymreg[7][6] ? ymreg[14] : IOA_in;
15: dout = ymreg[7][7] ? ymreg[15] : IOB_in;
endcase
end
end
reg ena_div;
reg ena_div_noise;
// p_divider
always @(posedge CLK) begin
reg [3:0] cnt_div;
reg noise_div;
if(CE) begin
ena_div <= 0;
ena_div_noise <= 0;
if(!cnt_div) begin
cnt_div <= {SEL, 3'b111};
ena_div <= 1;
noise_div <= (~noise_div);
if (noise_div) ena_div_noise <= 1;
end else begin
cnt_div <= cnt_div - 1'b1;
end
end
end
reg [2:0] noise_gen_op;
// p_noise_gen
always @(posedge CLK) begin
reg [16:0] poly17;
reg [4:0] noise_gen_cnt;
if(CE) begin
if (ena_div_noise) begin
if (!ymreg[6][4:0] || noise_gen_cnt >= ymreg[6][4:0] - 1'd1) begin
noise_gen_cnt <= 0;
poly17 <= {(poly17[0] ^ poly17[2] ^ !poly17), poly17[16:1]};
end else begin
noise_gen_cnt <= noise_gen_cnt + 1'd1;
end
noise_gen_op <= {3{poly17[0]}};
end
end
end
wire [11:0] tone_gen_freq[1:3];
assign tone_gen_freq[1] = {ymreg[1][3:0], ymreg[0]};
assign tone_gen_freq[2] = {ymreg[3][3:0], ymreg[2]};
assign tone_gen_freq[3] = {ymreg[5][3:0], ymreg[4]};
reg [3:1] tone_gen_op;
//p_tone_gens
always @(posedge CLK) begin
integer i;
reg [11:0] tone_gen_cnt[1:3];
if(CE) begin
// looks like real chips count up - we need to get the Exact behaviour ..
for (i = 1; i <= 3; i = i + 1) begin
if(ena_div) begin
if (tone_gen_freq[i]) begin
if (tone_gen_cnt[i] >= (tone_gen_freq[i] - 1'd1)) begin
tone_gen_cnt[i] <= 0;
tone_gen_op[i] <= ~tone_gen_op[i];
end else begin
tone_gen_cnt[i] <= tone_gen_cnt[i] + 1'd1;
end
end else begin
tone_gen_op[i] <= ymreg[7][i];
tone_gen_cnt[i] <= 0;
end
end
end
end
end
reg env_ena;
wire [15:0] env_gen_comp = {ymreg[12], ymreg[11]} ? {ymreg[12], ymreg[11]} - 1'd1 : 16'd0;
//p_envelope_freq
always @(posedge CLK) begin
reg [15:0] env_gen_cnt;
if(CE) begin
env_ena <= 0;
if(ena_div) begin
if (env_gen_cnt >= env_gen_comp) begin
env_gen_cnt <= 0;
env_ena <= 1;
end else begin
env_gen_cnt <= (env_gen_cnt + 1'd1);
end
end
end
end
reg [4:0] env_vol;
wire is_bot = (env_vol == 5'b00000);
wire is_bot_p1 = (env_vol == 5'b00001);
wire is_top_m1 = (env_vol == 5'b11110);
wire is_top = (env_vol == 5'b11111);
always @(posedge CLK) begin
reg env_hold;
reg env_inc;
// envelope shapes
// C AtAlH
// 0 0 x x \___
//
// 0 1 x x /___
//
// 1 0 0 0 \\\\
//
// 1 0 0 1 \___
//
// 1 0 1 0 \/\/
// ___
// 1 0 1 1 \
//
// 1 1 0 0 ////
// ___
// 1 1 0 1 /
//
// 1 1 1 0 /\/\
//
// 1 1 1 1 /___
if(env_reset | RESET) begin
// load initial state
if(!ymreg[13][2]) begin // attack
env_vol <= 5'b11111;
env_inc <= 0; // -1
end else begin
env_vol <= 5'b00000;
env_inc <= 1; // +1
end
env_hold <= 0;
end
else if(CE) begin
if (env_ena) begin
if (!env_hold) begin
if (env_inc) env_vol <= (env_vol + 5'b00001);
else env_vol <= (env_vol + 5'b11111);
end
// envelope shape control.
if(!ymreg[13][3]) begin
if(!env_inc) begin // down
if(is_bot_p1) env_hold <= 1;
end else if (is_top) env_hold <= 1;
end else if(ymreg[13][0]) begin // hold = 1
if(!env_inc) begin // down
if(ymreg[13][1]) begin // alt
if(is_bot) env_hold <= 1;
end else if(is_bot_p1) env_hold <= 1;
end else if(ymreg[13][1]) begin // alt
if(is_top) env_hold <= 1;
end else if(is_top_m1) env_hold <= 1;
end else if(ymreg[13][1]) begin // alternate
if(env_inc == 1'b0) begin // down
if(is_bot_p1) env_hold <= 1;
if(is_bot) begin
env_hold <= 0;
env_inc <= 1;
end
end else begin
if(is_top_m1) env_hold <= 1;
if(is_top) begin
env_hold <= 0;
env_inc <= 0;
end
end
end
end
end
end
reg [5:0] A,B,C;
always @(posedge CLK) begin
A <= {MODE, ~((ymreg[7][0] | tone_gen_op[1]) & (ymreg[7][3] | noise_gen_op[0])) ? 5'd0 : ymreg[8][4] ? env_vol[4:0] : { ymreg[8][3:0], ymreg[8][3]}};
B <= {MODE, ~((ymreg[7][1] | tone_gen_op[2]) & (ymreg[7][4] | noise_gen_op[1])) ? 5'd0 : ymreg[9][4] ? env_vol[4:0] : { ymreg[9][3:0], ymreg[9][3]}};
C <= {MODE, ~((ymreg[7][2] | tone_gen_op[3]) & (ymreg[7][5] | noise_gen_op[2])) ? 5'd0 : ymreg[10][4] ? env_vol[4:0] : {ymreg[10][3:0], ymreg[10][3]}};
end
wire [7:0] volTable[64] = '{
//YM2149
8'h00, 8'h01, 8'h01, 8'h02, 8'h02, 8'h03, 8'h03, 8'h04,
8'h06, 8'h07, 8'h09, 8'h0a, 8'h0c, 8'h0e, 8'h11, 8'h13,
8'h17, 8'h1b, 8'h20, 8'h25, 8'h2c, 8'h35, 8'h3e, 8'h47,
8'h54, 8'h66, 8'h77, 8'h88, 8'ha1, 8'hc0, 8'he0, 8'hff,
//AY8910
8'h00, 8'h00, 8'h03, 8'h03, 8'h04, 8'h04, 8'h06, 8'h06,
8'h0a, 8'h0a, 8'h0f, 8'h0f, 8'h15, 8'h15, 8'h22, 8'h22,
8'h28, 8'h28, 8'h41, 8'h41, 8'h5b, 8'h5b, 8'h72, 8'h72,
8'h90, 8'h90, 8'hb5, 8'hb5, 8'hd7, 8'hd7, 8'hff, 8'hff
};
assign CHANNEL_A = volTable[A];
assign CHANNEL_B = volTable[B];
assign CHANNEL_C = volTable[C];
endmodule

View File

@@ -0,0 +1,30 @@
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use ieee.numeric_std.all;
library work;
use work.pace_pkg.all;
use work.video_controller_pkg.all;
use work.platform_pkg.all;
--use work.project_pkg.all;
entity bitmapCtl is
generic
(
DELAY : integer
);
port
(
reset : in std_logic;
-- video control signals
video_ctl : in from_VIDEO_CTL_t;
-- bitmap controller signals
ctl_i : in to_BITMAP_CTL_t;
ctl_o : out from_BITMAP_CTL_t;
graphics_i : in to_GRAPHICS_t
);
end entity bitmapCtl;

View File

@@ -0,0 +1,35 @@
# ================================================================================
#
# Build ID Verilog Module Script
# Jeff Wiencrot - 8/1/2011
#
# Generates a Verilog module that contains a timestamp,
# from the current build. These values are available from the build_date, build_time,
# physical_address, and host_name output ports of the build_id module in the build_id.v
# Verilog source file.
#
# ================================================================================
proc generateBuildID_Verilog {} {
# Get the timestamp (see: http://www.altera.com/support/examples/tcl/tcl-date-time-stamp.html)
set buildDate [ clock format [ clock seconds ] -format %y%m%d ]
set buildTime [ clock format [ clock seconds ] -format %H%M%S ]
# Create a Verilog file for output
set outputFileName "rtl/build_id.v"
set outputFile [open $outputFileName "w"]
# Output the Verilog source
puts $outputFile "`define BUILD_DATE \"$buildDate\""
puts $outputFile "`define BUILD_TIME \"$buildTime\""
close $outputFile
# Send confirmation message to the Messages window
post_message "Generated build identification Verilog module: [pwd]/$outputFileName"
post_message "Date: $buildDate"
post_message "Time: $buildTime"
}
# Comment out this line to prevent the process from automatically executing when the file is sourced:
generateBuildID_Verilog

View File

@@ -0,0 +1,39 @@
library ieee;
use ieee.std_logic_1164.all;
entity clk_div is
generic
(
DIVISOR : natural
);
port
(
clk : in std_logic;
reset : in std_logic;
clk_en : out std_logic
);
end clk_div;
architecture SYN of clk_div is
begin
process (clk, reset)
variable count : integer range 0 to DIVISOR-1;
begin
if reset = '1' then
count := 0;
clk_en <= '0';
elsif rising_edge(clk) then
clk_en <= '0';
if count = DIVISOR-1 then
clk_en <= '1';
count := 0;
else
count := count + 1;
end if;
end if;
end process;
end SYN;

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,131 @@
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY altera_mf;
USE altera_mf.all;
ENTITY dpram IS
GENERIC
(
init_file : string := "";
--numwords_a : natural;
widthad_a : natural;
width_a : natural := 8;
outdata_reg_a : string := "UNREGISTERED";
outdata_reg_b : string := "UNREGISTERED"
);
PORT
(
address_a : IN STD_LOGIC_VECTOR (widthad_a-1 DOWNTO 0);
address_b : IN STD_LOGIC_VECTOR (widthad_a-1 DOWNTO 0);
clock_a : IN STD_LOGIC ;
clock_b : IN STD_LOGIC ;
data_a : IN STD_LOGIC_VECTOR (width_a-1 DOWNTO 0);
data_b : IN STD_LOGIC_VECTOR (width_a-1 DOWNTO 0);
wren_a : IN STD_LOGIC := '1';
wren_b : IN STD_LOGIC := '1';
q_a : OUT STD_LOGIC_VECTOR (width_a-1 DOWNTO 0);
q_b : OUT STD_LOGIC_VECTOR (width_a-1 DOWNTO 0)
);
END dpram;
ARCHITECTURE SYN OF dpram IS
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (width_a-1 DOWNTO 0);
SIGNAL sub_wire1 : STD_LOGIC_VECTOR (width_a-1 DOWNTO 0);
COMPONENT altsyncram
GENERIC (
address_reg_b : STRING;
clock_enable_input_a : STRING;
clock_enable_input_b : STRING;
clock_enable_output_a : STRING;
clock_enable_output_b : STRING;
indata_reg_b : STRING;
init_file : STRING;
intended_device_family : STRING;
lpm_type : STRING;
numwords_a : NATURAL;
numwords_b : NATURAL;
operation_mode : STRING;
outdata_aclr_a : STRING;
outdata_aclr_b : STRING;
outdata_reg_a : STRING;
outdata_reg_b : STRING;
power_up_uninitialized : STRING;
read_during_write_mode_port_a : STRING;
read_during_write_mode_port_b : STRING;
widthad_a : NATURAL;
widthad_b : NATURAL;
width_a : NATURAL;
width_b : NATURAL;
width_byteena_a : NATURAL;
width_byteena_b : NATURAL;
wrcontrol_wraddress_reg_b : STRING
);
PORT (
wren_a : IN STD_LOGIC ;
clock0 : IN STD_LOGIC ;
wren_b : IN STD_LOGIC ;
clock1 : IN STD_LOGIC ;
address_a : IN STD_LOGIC_VECTOR (widthad_a-1 DOWNTO 0);
address_b : IN STD_LOGIC_VECTOR (widthad_a-1 DOWNTO 0);
q_a : OUT STD_LOGIC_VECTOR (width_a-1 DOWNTO 0);
q_b : OUT STD_LOGIC_VECTOR (width_a-1 DOWNTO 0);
data_a : IN STD_LOGIC_VECTOR (width_a-1 DOWNTO 0);
data_b : IN STD_LOGIC_VECTOR (width_a-1 DOWNTO 0)
);
END COMPONENT;
BEGIN
q_a <= sub_wire0(width_a-1 DOWNTO 0);
q_b <= sub_wire1(width_a-1 DOWNTO 0);
altsyncram_component : altsyncram
GENERIC MAP (
address_reg_b => "CLOCK1",
clock_enable_input_a => "BYPASS",
clock_enable_input_b => "BYPASS",
clock_enable_output_a => "BYPASS",
clock_enable_output_b => "BYPASS",
indata_reg_b => "CLOCK1",
init_file => init_file,
intended_device_family => "Cyclone III",
lpm_type => "altsyncram",
numwords_a => 2**widthad_a,
numwords_b => 2**widthad_a,
operation_mode => "BIDIR_DUAL_PORT",
outdata_aclr_a => "NONE",
outdata_aclr_b => "NONE",
outdata_reg_a => outdata_reg_a,
outdata_reg_b => outdata_reg_a,
power_up_uninitialized => "FALSE",
read_during_write_mode_port_a => "NEW_DATA_NO_NBE_READ",
read_during_write_mode_port_b => "NEW_DATA_NO_NBE_READ",
widthad_a => widthad_a,
widthad_b => widthad_a,
width_a => width_a,
width_b => width_a,
width_byteena_a => 1,
width_byteena_b => 1,
wrcontrol_wraddress_reg_b => "CLOCK1"
)
PORT MAP (
wren_a => wren_a,
clock0 => clock_a,
wren_b => wren_b,
clock1 => clock_b,
address_a => address_a,
address_b => address_b,
data_a => data_a,
data_b => data_b,
q_a => sub_wire0,
q_b => sub_wire1
);
END SYN;

View File

@@ -0,0 +1,135 @@
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY altera_mf;
USE altera_mf.all;
ENTITY dprom_2r IS
GENERIC
(
INIT_FILE : string := "";
--NUMWORDS_A : natural;
WIDTHAD_A : natural;
WIDTH_A : natural := 8;
--NUMWORDS_B : natural;
WIDTHAD_B : natural;
WIDTH_B : natural := 8;
outdata_reg_a : string := "UNREGISTERED";
outdata_reg_b : string := "UNREGISTERED"
);
PORT
(
address_a : in std_logic_vector (WIDTHAD_A-1 downto 0);
address_b : in std_logic_vector (WIDTHAD_B-1 downto 0);
clock : in std_logic ;
q_a : out std_logic_vector (WIDTH_A-1 downto 0);
q_b : out std_logic_vector (WIDTH_B-1 downto 0)
);
END dprom_2r;
ARCHITECTURE SYN OF dprom_2r IS
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (WIDTH_A-1 DOWNTO 0);
SIGNAL sub_wire1 : STD_LOGIC_VECTOR (WIDTH_B-1 DOWNTO 0);
SIGNAL sub_wire2 : STD_LOGIC ;
SIGNAL sub_wire3_bv : BIT_VECTOR (WIDTH_A-1 DOWNTO 0);
SIGNAL sub_wire3 : STD_LOGIC_VECTOR (WIDTH_A-1 DOWNTO 0);
SIGNAL sub_wire4_bv : BIT_VECTOR (WIDTH_B-1 DOWNTO 0);
SIGNAL sub_wire4 : STD_LOGIC_VECTOR (WIDTH_B-1 DOWNTO 0);
COMPONENT altsyncram
GENERIC (
address_reg_b : STRING;
clock_enable_input_a : STRING;
clock_enable_input_b : STRING;
clock_enable_output_a : STRING;
clock_enable_output_b : STRING;
indata_reg_b : STRING;
init_file : STRING;
init_file_layout : STRING;
intended_device_family : STRING;
lpm_type : STRING;
numwords_a : NATURAL;
numwords_b : NATURAL;
operation_mode : STRING;
outdata_aclr_a : STRING;
outdata_aclr_b : STRING;
outdata_reg_a : STRING;
outdata_reg_b : STRING;
power_up_uninitialized : STRING;
ram_block_type : STRING;
widthad_a : NATURAL;
widthad_b : NATURAL;
width_a : NATURAL;
width_b : NATURAL;
width_byteena_a : NATURAL;
width_byteena_b : NATURAL;
wrcontrol_wraddress_reg_b : STRING
);
PORT (
wren_a : IN STD_LOGIC ;
wren_b : IN STD_LOGIC ;
clock0 : IN STD_LOGIC ;
address_a : IN STD_LOGIC_VECTOR (WIDTHAD_A-1 DOWNTO 0);
address_b : IN STD_LOGIC_VECTOR (WIDTHAD_B-1 DOWNTO 0);
q_a : OUT STD_LOGIC_VECTOR (WIDTH_A-1 DOWNTO 0);
q_b : OUT STD_LOGIC_VECTOR (WIDTH_B-1 DOWNTO 0);
data_a : IN STD_LOGIC_VECTOR (WIDTH_A-1 DOWNTO 0);
data_b : IN STD_LOGIC_VECTOR (WIDTH_B-1 DOWNTO 0)
);
END COMPONENT;
BEGIN
sub_wire2 <= '0';
sub_wire3_bv(WIDTH_A-1 DOWNTO 0) <= (others => '0');
sub_wire3 <= To_stdlogicvector(sub_wire3_bv);
sub_wire4_bv(WIDTH_B-1 DOWNTO 0) <= (others => '0');
sub_wire4 <= To_stdlogicvector(sub_wire4_bv);
q_a <= sub_wire0(WIDTH_A-1 DOWNTO 0);
q_b <= sub_wire1(WIDTH_B-1 DOWNTO 0);
altsyncram_component : altsyncram
GENERIC MAP (
address_reg_b => "CLOCK0",
clock_enable_input_a => "BYPASS",
clock_enable_input_b => "BYPASS",
clock_enable_output_a => "BYPASS",
clock_enable_output_b => "BYPASS",
indata_reg_b => "CLOCK0",
init_file => INIT_FILE,
init_file_layout => "PORT_A",
intended_device_family => "Cyclone III",
lpm_type => "altsyncram",
numwords_a => 2**WIDTHAD_A,
numwords_b => 2**WIDTHAD_B,
operation_mode => "BIDIR_DUAL_PORT",
outdata_aclr_a => "NONE",
outdata_aclr_b => "NONE",
outdata_reg_a => outdata_reg_a,
outdata_reg_b => outdata_reg_b,
power_up_uninitialized => "FALSE",
ram_block_type => "M9K",
widthad_a => WIDTHAD_A,
widthad_b => WIDTHAD_B,
width_a => WIDTH_A,
width_b => WIDTH_B,
width_byteena_a => 1,
width_byteena_b => 1,
wrcontrol_wraddress_reg_b => "CLOCK0"
)
PORT MAP (
wren_a => sub_wire2,
wren_b => sub_wire2,
clock0 => clock,
address_a => address_a,
address_b => address_b,
data_a => sub_wire3,
data_b => sub_wire4,
q_a => sub_wire0,
q_b => sub_wire1
);
END SYN;

View File

@@ -0,0 +1,99 @@
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
library work;
use work.pace_pkg.all;
entity inputmapper is
generic
(
NUM_DIPS : integer := 8;
NUM_INPUTS : integer := 2
);
port
(
clk : in std_logic;
rst_n : in std_logic;
jamma : in from_JAMMA_t;
-- user outputs
dips : in std_logic_vector(NUM_DIPS-1 downto 0);
inputs : out from_MAPPED_INPUTS_t(0 to NUM_INPUTS-1)
);
end inputmapper;
architecture SYN of inputmapper is
begin
process (clk, rst_n)
variable jamma_v : from_MAPPED_INPUTS_t(0 to NUM_INPUTS-1);
begin
-- note: all inputs are active LOW
if rst_n = '0' then
for i in 0 to NUM_INPUTS-1 loop
jamma_v(i).d := (others =>'1');
end loop;
elsif rising_edge (clk) then
-- handle JAMMA inputs
jamma_v(0).d(0) := jamma.p(1).start;
jamma_v(0).d(1) := jamma.p(2).start;
jamma_v(0).d(2) := '1';--jamma.service;
jamma_v(0).d(3) := jamma.coin(1);
--unused
--unused
--unused
--unused
jamma_v(1).d(0) := jamma.p(1).right;
jamma_v(1).d(1) := jamma.p(1).left;
jamma_v(1).d(2) := jamma.p(1).down;
jamma_v(1).d(3) := jamma.p(1).up;
--unused
jamma_v(1).d(5) := jamma.p(1).button(2);
--unused
jamma_v(1).d(7) := jamma.p(1).button(1);
jamma_v(2).d(0) := jamma.p(2).right;
jamma_v(2).d(1) := jamma.p(2).left;
jamma_v(2).d(2) := jamma.p(2).down;
jamma_v(2).d(3) := jamma.p(2).up;
jamma_v(2).d(4) := jamma.coin(2);
jamma_v(2).d(5) := jamma.p(2).button(2);
--unused
jamma_v(2).d(7) := jamma.p(2).button(1);
end if; -- rising_edge (clk)
-- assign outputs
inputs(0).d <= jamma_v(0).d;
inputs(1).d <= jamma_v(1).d;
inputs(2).d <= jamma_v(2).d;
inputs(3).d <= "11111110"; -- 1C/1C, 10/30/50K, 3 lives
inputs(4).d <= jamma.service & "1111100";
-- PORT_START("DSW2")
-- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:1")
-- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
-- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-- PORT_DIPNAME( 0x02, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:2")
-- PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
-- PORT_DIPSETTING( 0x02, DEF_STR( Cocktail ) )
-- PORT_DIPNAME( 0x04, 0x04, "Coin Mode" ) PORT_DIPLOCATION("SW2:3")
-- PORT_DIPSETTING( 0x04, "Mode 1" )
-- PORT_DIPSETTING( 0x00, "Mode 2" )
-- /* Bits 4,5,6 are different in each game, see below */
-- PORT_DIPUNUSED_DIPLOC( 0x38, 0x38, "SW2:4,5,6" )
-- PORT_DIPNAME( 0x40, 0x40, "Invulnerability (Cheat)" ) PORT_DIPLOCATION("SW2:7")
-- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
-- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-- PORT_SERVICE_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW2:8" )
end process;
end architecture SYN;

View File

@@ -0,0 +1,146 @@
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
library work;
use work.pace_pkg.all;
use work.video_controller_pkg.all;
use work.sprite_pkg.all;
use work.platform_pkg.all;
--use work.project_pkg.all;
entity PACE is
port
(
-- clocks and resets
clkrst_i : in from_CLKRST_t;
-- misc I/O
buttons_i : in from_BUTTONS_t;
switches_i : in from_SWITCHES_t;
leds_o : out to_LEDS_t;
-- controller inputs
inputs_i : in from_INPUTS_t;
-- video
video_i : in from_VIDEO_t;
video_o : out to_VIDEO_t;
sound_data_o : out std_logic_vector(7 downto 0);
-- custom i/o
-- project_i : in from_PROJECT_IO_t;
-- project_o : out to_PROJECT_IO_t;
platform_i : in from_PLATFORM_IO_t;
platform_o : out to_PLATFORM_IO_t;
cpu_rom_addr : out std_logic_vector(14 downto 0);
cpu_rom_do : in std_logic_vector(7 downto 0)
);
end entity PACE;
architecture SYN of PACE is
constant CLK_1US_COUNTS : integer :=
integer(27 * PACE_CLK0_MULTIPLY_BY / PACE_CLK0_DIVIDE_BY);
signal mapped_inputs : from_MAPPED_INPUTS_t(0 to PACE_INPUTS_NUM_BYTES-1);
signal to_tilemap_ctl : to_TILEMAP_CTL_a(1 to PACE_VIDEO_NUM_TILEMAPS);
signal from_tilemap_ctl : from_TILEMAP_CTL_a(1 to PACE_VIDEO_NUM_TILEMAPS);
signal to_bitmap_ctl : to_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS);
signal from_bitmap_ctl : from_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS);
signal to_sprite_reg : to_SPRITE_REG_t;
signal to_sprite_ctl : to_SPRITE_CTL_t;
signal from_sprite_ctl : from_SPRITE_CTL_t;
signal spr0_hit : std_logic;
signal to_graphics : to_GRAPHICS_t;
signal from_graphics : from_GRAPHICS_t;
begin
inputs_inst : entity work.inputs
generic map
(
NUM_DIPS => PACE_NUM_SWITCHES,
NUM_INPUTS => PACE_INPUTS_NUM_BYTES,
CLK_1US_DIV => CLK_1US_COUNTS
)
port map
(
clk => clkrst_i.clk(0),
reset => clkrst_i.rst(0),
jamma => inputs_i.jamma_n,
dips => switches_i,
inputs => mapped_inputs
);
platform_inst : entity work.platform
generic map
(
NUM_INPUT_BYTES => PACE_INPUTS_NUM_BYTES
)
port map
(
-- clocking and reset
clkrst_i => clkrst_i,
-- misc inputs and outputs
buttons_i => buttons_i,
switches_i => switches_i,
leds_o => leds_o,
sound_data_o => sound_data_o,
-- controller inputs
inputs_i => mapped_inputs,
-- graphics
bitmap_i => from_bitmap_ctl,
bitmap_o => to_bitmap_ctl,
tilemap_i => from_tilemap_ctl,
tilemap_o => to_tilemap_ctl,
sprite_reg_o => to_sprite_reg,
sprite_i => from_sprite_ctl,
sprite_o => to_sprite_ctl,
spr0_hit => spr0_hit,
graphics_i => from_graphics,
graphics_o => to_graphics,
-- custom i/o
-- project_i => project_i,
-- project_o => project_o,
platform_i => platform_i,
platform_o => platform_o,
cpu_rom_addr => cpu_rom_addr,
cpu_rom_do => cpu_rom_do
);
graphics_inst : entity work.Graphics
Port Map
(
bitmap_ctl_i => to_bitmap_ctl,
bitmap_ctl_o => from_bitmap_ctl,
tilemap_ctl_i => to_tilemap_ctl,
tilemap_ctl_o => from_tilemap_ctl,
sprite_reg_i => to_sprite_reg,
sprite_ctl_i => to_sprite_ctl,
sprite_ctl_o => from_sprite_ctl,
spr0_hit => spr0_hit,
graphics_i => to_graphics,
graphics_o => from_graphics,
-- video (incl. clk)
video_i => video_i,
video_o => video_o
);
end SYN;

View File

@@ -0,0 +1,280 @@
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
library work;
package pace_pkg is
--
-- PACE constants which *MUST* be defined
--
type PACETargetType is
(
PACE_TARGET_NANOBOARD_NB1,
PACE_TARGET_DE0,
PACE_TARGET_DE0_CV, -- 5CEBA4
PACE_TARGET_DE0_NANO, -- EP4CE22
PACE_TARGET_DE1,
PACE_TARGET_DE2,
PACE_TARGET_DE2_70, -- EP2C70
PACE_TARGET_DE2_115, -- EP4CE115
PACE_TARGET_P2, -- A02 build
PACE_TARGET_P2A, -- A04/A build (SRAM byte selects)
PACE_TARGET_P3M,
PACE_TARGET_S3A_700, -- Spartan 3A/N Starter Kit
PACE_TARGET_RC10,
PACE_TARGET_NX2_12,
PACE_TARGET_NEXYS_3, -- Digilent S6 board
PACE_TARGET_CYC3DEV,
PACE_TARGET_CYC5GXDEV,
PACE_TARGET_COCO3PLUS,
PACE_TARGET_S5A,
PACE_TARGET_CARTEBLANCHE_250,
PACE_TARGET_CARTEBLANCHE_500,
PACE_TARGET_BEMICRO,
PACE_TARGET_OPENEP3C16,
PACE_TARGET_MIST,
PACE_TARGET_CHAMELEON64,
PACE_TARGET_RETRORAMBLINGS_CYC3, -- Generic EP3C25 board with custom io boards
PACE_TARGET_S5A_R2_EP4C,
PACE_TARGET_S5A_R2_EP3SL,
PACE_TARGET_S5A_R2B0_EP4C,
PACE_TARGET_S5A_R2B0_EP3SL,
PACE_TARGET_S5A_R2C0_EP4C,
PACE_TARGET_S5A_R2C0_EP3SL,
PACE_TARGET_S5L_A0_EP4C,
PACE_TARGET_S5L_A0_EP3SL,
PACE_TARGET_NAVICO_ROCKY,
PACE_TARGET_NGPACE,
PACE_TARGET_S6M_A0
);
type PACEFpgaVendor_t is
(
PACE_FPGA_VENDOR_ALTERA,
PACE_FPGA_VENDOR_XILINX,
PACE_FPGA_VENDOR_LATTICE
);
type PACEFpgaFamily_t is
(
PACE_FPGA_FAMILY_CYCLONE1,
PACE_FPGA_FAMILY_CYCLONE2,
PACE_FPGA_FAMILY_CYCLONE3,
PACE_FPGA_FAMILY_CYCLONE4,
PACE_FPGA_FAMILY_CYCLONE5,
PACE_FPGA_FAMILY_CYCLONE6,
PACE_FPGA_FAMILY_STRATIX_III,
PACE_FPGA_FAMILY_SPARTAN3,
PACE_FPGA_FAMILY_SPARTAN3A,
PACE_FPGA_FAMILY_SPARTAN3E
);
type PACEJamma_t is
(
PACE_JAMMA_NONE,
PACE_JAMMA_MAPLE,
PACE_JAMMA_NGC,
PACE_JAMMA_PS2
);
-- Types
type ByteArrayType is array (natural range <>) of std_logic_vector(7 downto 0);
type from_CLKRST_t is record
arst : std_logic;
arst_n : std_logic;
rst : std_logic_vector(0 to 3);
clk_ref : std_logic; --reference clock
clk : std_logic_vector(0 to 3);
end record;
-- maximums from the DE2 target
constant PACE_NUM_SWITCHES : natural := 18;
subtype from_SWITCHES_t is std_logic_vector(PACE_NUM_SWITCHES-1 downto 0);
constant PACE_NUM_BUTTONS : natural := 4;
subtype from_BUTTONS_t is std_logic_vector(PACE_NUM_BUTTONS-1 downto 0);
constant PACE_NUM_LEDS : natural := 18;
subtype to_LEDS_t is std_logic_vector(PACE_NUM_LEDS-1 downto 0);
--
-- JAMMA interface data structures
-- - note: all signals are active LOW
--
type from_JAMMA_player_t is record
start : std_logic;
up : std_logic;
down : std_logic;
left : std_logic;
right : std_logic;
button : std_logic_vector(1 to 5);
end record;
type from_JAMMA_player_a is array (natural range <>) of from_JAMMA_player_t;
type from_JAMMA_t is record
coin_cnt : std_logic_vector(1 to 2);
service : std_logic;
tilt : std_logic;
test : std_logic;
coin : std_logic_vector(1 to 2);
p : from_JAMMA_player_a(1 to 2);
end record;
--
-- INPUTS
--
subtype analogue_in_t is std_logic_vector(9 downto 0);
type analogue_in_a is array (natural range <>) of analogue_in_t;
type from_INPUTS_t is record
ps2_kclk : std_logic;
ps2_kdat : std_logic;
ps2_mclk : std_logic;
ps2_mdat : std_logic;
jamma_n : from_JAMMA_t;
-- up to 4 10-bit analgue inputs
analogue : analogue_in_a(1 to 4);
end record;
type in8_t is record
d : std_logic_vector(7 downto 0);
end record;
type from_MAPPED_INPUTS_t is array (natural range <>) of in8_t;
--
-- SRAM interface data structure
--
type from_SRAM_t is record
d : std_logic_vector(31 downto 0);
end record;
type to_SRAM_t is record
a : std_logic_vector(23 downto 0);
d : std_logic_vector(31 downto 0);
be : std_logic_vector(3 downto 0);
cs : std_logic;
oe : std_logic;
we : std_logic;
end record;
function NULL_TO_SRAM return to_SRAM_t;
--
-- FLASH interface data structure
--
type from_FLASH_t is record
d : std_logic_vector(15 downto 0);
end record;
type to_FLASH_t is record
a : std_logic_vector(21 downto 0);
d : std_logic_vector(15 downto 0);
we : std_logic;
cs : std_logic;
oe : std_logic;
end record;
function NULL_TO_FLASH return to_FLASH_t;
type from_AUDIO_t is record
clk : std_logic;
end record;
type to_AUDIO_t is record
clk : std_logic;
ldata : std_logic_vector(15 downto 0);
rdata : std_logic_vector(15 downto 0);
end record;
function NULL_TO_AUDIO return to_AUDIO_t;
type from_SPI_t is record
din : std_logic;
end record;
type to_SPI_t is record
clk : std_logic;
mode : std_logic;
sel : std_logic;
ena : std_logic;
dout : std_logic;
end record;
function NULL_TO_SPI return to_SPI_t;
type to_SERIAL_t is record
txd : std_logic;
rts : std_logic;
end record;
function NULL_TO_SERIAL return to_SERIAL_t;
type from_SERIAL_t is record
dcd : std_logic;
rxd : std_logic;
cts : std_logic;
end record;
constant PACE_NUM_GPI : natural := 72;
subtype from_GP_t is std_logic_vector(PACE_NUM_GPI-1 downto 0);
constant PACE_NUM_GPO : natural := PACE_NUM_GPI;
type to_GP_t is record
d : std_logic_vector(PACE_NUM_GPO-1 downto 0);
oe : std_logic_vector(PACE_NUM_GPO-1 downto 0);
end record;
function NULL_TO_GP return to_GP_t;
subtype SND_A_t is std_logic_vector(7 downto 0);
subtype SND_D_t is std_logic_vector(7 downto 0);
type to_SOUND_t is record
a : SND_A_t;
d : SND_D_t;
rd : std_logic;
wr : std_logic;
end record;
type from_SOUND_t is record
d : SND_D_t;
end record;
function NULL_TO_SOUND return to_SOUND_t;
--
-- OSD interface data structure
--
type from_OSD_t is record
d : std_logic_vector(7 downto 0);
end record;
function NULL_FROM_OSD return from_OSD_t;
type to_OSD_t is record
en : std_logic;
a : std_logic_vector(7 downto 0);
d : std_logic_vector(7 downto 0);
we : std_logic;
end record;
function NULL_TO_OSD return to_OSD_t;
-- create a constant that automatically determines
-- whether this is simulation or synthesis
constant IN_SIMULATION : BOOLEAN := false
-- synthesis translate_off
or true
-- synthesis translate_on
;
constant IN_SYNTHESIS : boolean := not IN_SIMULATION;
end;

View File

@@ -0,0 +1,50 @@
library work;
package body pace_pkg is
function NULL_TO_FLASH return to_FLASH_t is
begin
return ((others => '0'), (others => '0'), '0', '0', '0');
end NULL_TO_FLASH;
function NULL_TO_SRAM return to_SRAM_t is
begin
return ((others => '0'), (others => '0'), (others => '0'), '0', '0', '0');
end NULL_TO_SRAM;
function NULL_TO_AUDIO return to_AUDIO_t is
begin
return ('0', (others => '0'), (others => '0'));
end NULL_TO_AUDIO;
function NULL_TO_SPI return to_SPI_t is
begin
return (others => '0');
end NULL_TO_SPI;
function NULL_TO_SERIAL return to_SERIAL_t is
begin
return (others => '0');
end NULL_TO_SERIAL;
function NULL_TO_SOUND return to_SOUND_t is
begin
return ((others => '0'), (others => '0'), '0', '0');
end NULL_TO_SOUND;
function NULL_FROM_OSD return from_OSD_t is
begin
return (others => (others => '0'));
end NULL_FROM_OSD;
function NULL_TO_OSD return to_OSD_t is
begin
return ('0', (others => '0'), (others => '0'), '0');
end NULL_TO_OSD;
function NULL_TO_GP return to_GP_t is
begin
return ((others => '0'), (others => '0'));
end NULL_TO_GP;
end package body pace_pkg;

View File

@@ -0,0 +1,479 @@
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.numeric_std.all;
library work;
use work.pace_pkg.all;
use work.video_controller_pkg.all;
use work.sprite_pkg.all;
use work.platform_pkg.all;
use work.platform_variant_pkg.all;
--use work.project_pkg.all;
entity platform is
generic
(
NUM_INPUT_BYTES : integer
);
port
(
-- clocking and reset
clkrst_i : in from_CLKRST_t;
-- misc I/O
buttons_i : in from_BUTTONS_t;
switches_i : in from_SWITCHES_t;
leds_o : out to_LEDS_t;
-- controller inputs
inputs_i : in from_MAPPED_INPUTS_t(0 to NUM_INPUT_BYTES-1);
-- graphics
bitmap_i : in from_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS);
bitmap_o : out to_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS);
tilemap_i : in from_TILEMAP_CTL_a(1 to PACE_VIDEO_NUM_TILEMAPS);
tilemap_o : out to_TILEMAP_CTL_a(1 to PACE_VIDEO_NUM_TILEMAPS);
sprite_reg_o : out to_SPRITE_REG_t;
sprite_i : in from_SPRITE_CTL_t;
sprite_o : out to_SPRITE_CTL_t;
spr0_hit : in std_logic;
-- various graphics information
graphics_i : in from_GRAPHICS_t;
graphics_o : out to_GRAPHICS_t;
sound_data_o : out std_logic_vector(7 downto 0);
-- custom i/o
-- project_i : in from_PROJECT_IO_t;
-- project_o : out to_PROJECT_IO_t;
platform_i : in from_PLATFORM_IO_t;
platform_o : out to_PLATFORM_IO_t;
cpu_rom_addr : out std_logic_vector(14 downto 0);
cpu_rom_do : in std_logic_vector(7 downto 0)
);
end platform;
architecture SYN of platform is
alias clk_sys : std_logic is clkrst_i.clk(0);
alias rst_sys : std_logic is clkrst_i.rst(0);
alias clk_video : std_logic is clkrst_i.clk(1);
-- cpu signals
signal clk_3M072_en : std_logic;
signal cpu_clk_en : std_logic;
signal cpu_a : std_logic_vector(15 downto 0);
signal cpu_d_i : std_logic_vector(7 downto 0);
signal cpu_d_o : std_logic_vector(7 downto 0);
signal cpu_mem_wr : std_logic;
signal cpu_io_rd : std_logic;
signal cpu_io_wr : std_logic;
signal cpu_irq : std_logic;
-- ROM signals
signal rom_cs : std_logic;
-- signal rom_d_o : std_logic_vector(7 downto 0);
-- keyboard signals
-- VRAM signals
signal vram_cs : std_logic;
signal vram_wr : std_logic;
signal vram_d_o : std_logic_vector(7 downto 0);
signal snd_cs : std_logic;
-- RAM signals
signal wram_cs : std_logic;
signal wram_wr : std_logic;
signal wram_d_o : std_logic_vector(7 downto 0);
-- CRAM/SPRITE signals
signal cram_cs : std_logic;
signal cram_wr : std_logic;
signal cram_d_o : std_logic_vector(7 downto 0);
signal sprite_cs : std_logic;
-- misc signals
signal in_cs : std_logic;
signal in_d_o : std_logic_vector(7 downto 0);
-- other signals
signal rst_platform : std_logic;
signal pause : std_logic;
signal rot_en : std_logic;
begin
-- handle special keys
process (clk_sys, rst_sys)
variable spec_keys_r : std_logic_vector(7 downto 0);
alias spec_keys : std_logic_vector(7 downto 0) is inputs_i(PACE_INPUTS_NUM_BYTES-1).d;
variable layer_en : std_logic_vector(4 downto 0);
begin
if rst_sys = '1' then
rst_platform <= '0';
pause <= '0';
rot_en <= '0'; -- to default later
spec_keys_r := (others => '0');
layer_en := "11111";
elsif rising_edge(clk_sys) then
rst_platform <= spec_keys(0);
if spec_keys_r(1) = '0' and spec_keys(1) = '1' then
pause <= not pause;
end if;
if spec_keys_r(2) = '0' and spec_keys(2) = '1' then
rot_en <= not rot_en;
if layer_en = "11111" then
layer_en := "00001";
elsif layer_en = "10000" then
layer_en := "11111";
else
layer_en := layer_en(3 downto 0) & layer_en(4);
end if;
end if;
spec_keys_r := spec_keys;
end if;
graphics_o.bit8(0)(4 downto 0) <= layer_en;
end process;
--graphics_o.bit8(0)(0) <= rot_en;
-- chip select logic
-- ROM $0000-$7FFF
rom_cs <= '1' when STD_MATCH(cpu_a, "0---------------") else '0';
-- SPRITE $C000-$C0FF
sprite_cs <= '1' when STD_MATCH(cpu_a, X"C0"& "--------") else '0';
-- VRAM/CRAM $D000-$DFFF
vram_cs <= '1' when PLATFORM_VARIANT = "kungfum" and
STD_MATCH(cpu_a, X"D"&"0-----------") else
'1' when PLATFORM_VARIANT /= "kungfum" and
STD_MATCH(cpu_a, X"D"&"-----------0") else
'0';
cram_cs <= '1' when PLATFORM_VARIANT = "kungfum" and
STD_MATCH(cpu_a, X"D"&"1-----------") else
'1' when PLATFORM_VARIANT /= "kungfum" and
STD_MATCH(cpu_a, X"D"&"-----------1") else
'0';
-- RAM $E000-$EFFF
wram_cs <= '1' when STD_MATCH(cpu_a, X"E"&"------------") else '0';
-- OUTPUT $DXX0
snd_cs <= '1' when STD_MATCH(cpu_a(7 downto 0), X"0"&"00--") else '0';
-- INPUTS (I/O) $00-$04
in_cs <= '1' when STD_MATCH(cpu_a(7 downto 0), X"0"&"00--") else
'1' when STD_MATCH(cpu_a(7 downto 0), X"04") else
'0';
process (clk_sys, rst_sys) begin
if rst_sys = '1' then
sound_data_o <= X"00";
elsif rising_edge(clk_sys) then
if cpu_clk_en = '1' and cpu_mem_wr = '1' and snd_cs = '1' then
sound_data_o <= cpu_d_o;
end if;
end if;
end process;
-- memory read mux
cpu_d_i <= in_d_o when (cpu_io_rd = '1' and in_cs = '1') else
cpu_rom_do when rom_cs = '1' else
vram_d_o when vram_cs = '1' else
cram_d_o when cram_cs = '1' else
wram_d_o when wram_cs = '1' else
(others => '1');
-- memory block write signals
vram_wr <= vram_cs and cpu_mem_wr;
cram_wr <= cram_cs and cpu_mem_wr;
wram_wr <= wram_cs and cpu_mem_wr;
-- sprite registers
sprite_reg_o.clk <= clk_sys;
sprite_reg_o.clk_ena <= clk_3M072_en;
sprite_reg_o.a <= cpu_a(7 downto 0);
sprite_reg_o.d <= cpu_d_o;
sprite_reg_o.wr <= sprite_cs and cpu_mem_wr;
--
-- COMPONENT INSTANTIATION
--
BLK_CPU : block
signal cpu_rst : std_logic;
begin
-- generate CPU enable clock (3MHz from 27/30MHz)
clk_en_inst : entity work.clk_div
generic map
(
DIVISOR => M62_CPU_CLK_ENA_DIVIDE_BY
)
port map
(
clk => clk_sys,
reset => rst_sys,
clk_en => clk_3M072_en
);
-- gated CPU signals
cpu_clk_en <= clk_3M072_en and not pause;
cpu_rst <= rst_sys or rst_platform;
cpu_inst : entity work.Z80
port map
(
clk => clk_sys,
clk_en => cpu_clk_en,
reset => cpu_rst,
addr => cpu_a,
datai => cpu_d_i,
datao => cpu_d_o,
mem_rd => open,
mem_wr => cpu_mem_wr,
io_rd => cpu_io_rd,
io_wr => cpu_io_wr,
intreq => cpu_irq,
intvec => cpu_d_i,
intack => open,
nmi => '0'
);
end block BLK_CPU;
BLK_INTERRUPTS : block
signal vblank_int : std_logic;
begin
process (clk_sys, rst_sys)
variable vblank_r : std_logic_vector(3 downto 0);
alias vblank_prev : std_logic is vblank_r(vblank_r'left);
alias vblank_um : std_logic is vblank_r(vblank_r'left-1);
-- 1us duty for VBLANK_INT
variable count : integer range 0 to CLK0_FREQ_MHz * 100;
begin
if rst_sys = '1' then
vblank_int <= '0';
vblank_r := (others => '0');
count := count'high;
elsif rising_edge(clk_sys) then
-- rising edge vblank only
if vblank_prev = '0' and vblank_um = '1' then
count := 0;
end if;
if count /= count'high then
vblank_int <= '1';
count := count + 1;
else
vblank_int <= '0';
end if;
vblank_r := vblank_r(vblank_r'left-1 downto 0) & graphics_i.vblank;
end if; -- rising_edge(clk_sys)
end process;
-- generate INT
cpu_irq <= vblank_int;
end block BLK_INTERRUPTS;
BLK_INPUTS : block
begin
in_d_o <= inputs_i(0).d when cpu_a(2 downto 0) = "000" else
inputs_i(1).d when cpu_a(2 downto 0) = "001" else
inputs_i(2).d when cpu_a(2 downto 0) = "010" else
inputs_i(3).d when cpu_a(2 downto 0) = "011" else
inputs_i(4).d;
end block BLK_INPUTS;
BLK_SCROLL : block
signal m62_hscroll : std_logic_vector(15 downto 0);
begin
process (clk_sys, rst_sys)
begin
if rst_sys = '1' then
m62_hscroll <= (others => '0');
elsif rising_edge(clk_sys) then
if cpu_clk_en = '1' and cpu_mem_wr = '1' then
case cpu_a is
when X"A000" =>
if PLATFORM_VARIANT = "kungfum" then
m62_hscroll(7 downto 0) <= cpu_d_o;
end if;
when X"B000" =>
if PLATFORM_VARIANT = "kungfum" then
m62_hscroll(15 downto 8) <= cpu_d_o;
end if;
when others =>
null;
end case;
end if; -- cpu_wr
end if; -- rising_edge(clk_sys)
end process;
graphics_o.bit16(0) <= m62_hscroll;
end block BLK_SCROLL;
cpu_rom_addr <= cpu_a(14 downto 0);
BLK_GFX_ROMS : block
type gfx_rom_d_a is array(M62_CHAR_ROM'range) of std_logic_vector(7 downto 0);
signal chr_rom_d : gfx_rom_d_a;
type spr_rom_d_a is array(0 to 11) of std_logic_vector(7 downto 0);
signal spr_rom_left : spr_rom_d_a;
signal spr_rom_right : spr_rom_d_a;
begin
GEN_CHAR_ROMS : for i in M62_CHAR_ROM'range generate
char_rom_inst : entity work.sprom
generic map
(
init_file => "./roms/" &
M62_CHAR_ROM(i) & ".hex",
widthad_a => 13
)
port map
(
clock => clk_video,
address => tilemap_i(1).tile_a(12 downto 0),
q => chr_rom_d(i)
);
end generate GEN_CHAR_ROMS;
tilemap_o(1).tile_d(23 downto 0) <= chr_rom_d(0) & chr_rom_d(1) & chr_rom_d(2);
-- chr_rom_addr <= tilemap_i(1).tile_a(12 downto 0);
--tilemap_o(1).tile_d(23 downto 0) <= chr_rom_do;
GEN_SPRITE_ROMS : for i in M62_SPRITE_ROM'range generate
sprite_rom_inst : entity work.dprom_2r
generic map
(
init_file => "./roms/" &
M62_SPRITE_ROM(i) & ".hex",
widthad_a => 13,
widthad_b => 13
)
port map
(
clock => clk_video,
address_a(12 downto 5) => sprite_i.a(12 downto 5),
address_a(4) => '0',
address_a(3 downto 0) => sprite_i.a(3 downto 0),
q_a => spr_rom_left(i),
address_b(12 downto 5) => sprite_i.a(12 downto 5),
address_b(4) => '1',
address_b(3 downto 0) => sprite_i.a(3 downto 0),
q_b => spr_rom_right(i)
);
end generate GEN_SPRITE_ROMS;
sprite_o.d(sprite_o.d'left downto 48) <= (others => '0');
sprite_o.d(47 downto 0) <= spr_rom_left(0) & spr_rom_right(0) &
spr_rom_left(1) & spr_rom_right(1) &
spr_rom_left(2) & spr_rom_right(2)
when sprite_i.a(14 downto 13) = "00" else
spr_rom_left(3) & spr_rom_right(3) &
spr_rom_left(4) & spr_rom_right(4) &
spr_rom_left(5) & spr_rom_right(5)
when sprite_i.a(14 downto 13) = "01" else
spr_rom_left(6) & spr_rom_right(6) &
spr_rom_left(7) & spr_rom_right(7) &
spr_rom_left(8) & spr_rom_right(8)
when sprite_i.a(14 downto 13) = "10" else
spr_rom_left(9) & spr_rom_right(9) &
spr_rom_left(10) & spr_rom_right(10) &
spr_rom_left(11) & spr_rom_right(11);
end block BLK_GFX_ROMS;
BLK_VRAM : block
signal vram_a : std_logic_vector(10 downto 0);
alias cram_a : std_logic_vector(10 downto 0) is vram_a;
begin
vram_a <= cpu_a(10 downto 0) when PLATFORM_VARIANT = "kungfum" else
cpu_a(11 downto 1);
vram_inst : entity work.dpram
generic map
(
init_file => "",
widthad_a => 11
)
port map
(
clock_b => clk_sys,
address_b => vram_a,
wren_b => vram_wr,
data_b => cpu_d_o,
q_b => vram_d_o,
clock_a => clk_video,
address_a => tilemap_i(1).map_a(10 downto 0),
wren_a => '0',
data_a => (others => 'X'),
q_a => tilemap_o(1).map_d(7 downto 0)
);
tilemap_o(1).map_d(15 downto 8) <= (others => '0');
cram_inst : entity work.dpram
generic map
(
init_file => "",
widthad_a => 11
)
port map
(
clock_b => clk_sys,
address_b => cram_a,
wren_b => cram_wr,
data_b => cpu_d_o,
q_b => cram_d_o,
clock_a => clk_video,
address_a => tilemap_i(1).attr_a(10 downto 0),
wren_a => '0',
data_a => (others => 'X'),
q_a => tilemap_o(1).attr_d(7 downto 0)
);
tilemap_o(1).attr_d(15 downto 8) <= (others => '0');
end block BLK_VRAM;
wram_inst : entity work.spram
generic map
(
widthad_a => 12
)
port map
(
clock => clk_sys,
address => cpu_a(11 downto 0),
data => cpu_d_o,
wren => wram_wr,
q => wram_d_o
);
-- unused outputs
sprite_o.ld <= '0';
--graphics_o <= NULL_TO_GRAPHICS;
leds_o <= (others => '0');
end SYN;

View File

@@ -0,0 +1,76 @@
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
library work;
use work.platform_variant_pkg.all;
use work.video_controller_pkg.all;
package platform_pkg is
constant PACE_VIDEO_CONTROLLER_TYPE : PACEVideoController_t := PACE_VIDEO_VGA_640x480_60Hz;
constant PACE_CLK0_DIVIDE_BY : natural := 3;
constant PACE_CLK0_MULTIPLY_BY : natural := 5; -- 24*5/3 = 40MHz
constant PACE_CLK1_DIVIDE_BY : natural := 19;
constant PACE_CLK1_MULTIPLY_BY : natural := 20; -- 24*20/19 = 25.263158MHz
constant PACE_VIDEO_H_SCALE : integer := 1;
constant PACE_VIDEO_V_SCALE : integer := 1;
constant PACE_VIDEO_H_SYNC_POLARITY : std_logic := '0';
constant PACE_VIDEO_V_SYNC_POLARITY : std_logic := '0';
-- constant PACE_VIDEO_CONTROLLER_TYPE : PACEVideoController_t := PACE_VIDEO_ARCADE_STD_336x240_60Hz;
-- constant PACE_CLK0_DIVIDE_BY : natural := 1;
-- constant PACE_CLK0_MULTIPLY_BY : natural := 1; -- 24*1/1 = 24MHz
-- constant PACE_CLK1_DIVIDE_BY : natural := 57;
-- constant PACE_CLK1_MULTIPLY_BY : natural := 17; -- 24*17/57 = 7.157895MHz
-- constant PACE_VIDEO_H_SCALE : integer := 1;
-- constant PACE_VIDEO_V_SCALE : integer := 1;
-- constant PACE_VIDEO_H_SYNC_POLARITY : std_logic := '0';
-- constant PACE_VIDEO_V_SYNC_POLARITY : std_logic := '0';
--constant PACE_VIDEO_CONTROLLER_TYPE : PACEVideoController_t := PACE_VIDEO_CVBS_720x288p_50Hz;
--constant PACE_CLK0_DIVIDE_BY : natural := 8;
--constant PACE_CLK0_MULTIPLY_BY : natural := 9; -- 24*9/8 = 27MHz
--constant PACE_CLK1_DIVIDE_BY : natural := 16;
--constant PACE_CLK1_MULTIPLY_BY : natural := 9; -- 24*9/16 = 13.5MHz
--constant PACE_VIDEO_H_SCALE : integer := 2;
--constant PACE_VIDEO_V_SCALE : integer := 1;
--constant PACE_ENABLE_ADV724 : std_logic := '1';
--constant USE_VIDEO_VBLANK_INTERRUPT : boolean := false;
constant PACE_VIDEO_BORDER_RGB : RGB_t := RGB_BLACK;
constant M62_VIDEO_H_SIZE : integer := 384;
constant M62_VIDEO_H_OFFSET : integer := (512-M62_VIDEO_H_SIZE)/2;
constant M62_VIDEO_V_SIZE : integer := 256;
constant PACE_VIDEO_NUM_BITMAPS : natural := 0;
constant PACE_VIDEO_NUM_TILEMAPS : natural := 1;
constant PACE_VIDEO_NUM_SPRITES : natural := 32;
constant PACE_VIDEO_H_SIZE : integer := M62_VIDEO_H_SIZE;
constant PACE_VIDEO_V_SIZE : integer := M62_VIDEO_V_SIZE;
constant PACE_VIDEO_L_CROP : integer := 0;
constant PACE_VIDEO_R_CROP : integer := PACE_VIDEO_L_CROP;
constant PACE_VIDEO_PIPELINE_DELAY : integer := 5;
constant PACE_INPUTS_NUM_BYTES : integer := 6;
constant CLK0_FREQ_MHz : natural :=
27 * PACE_CLK0_MULTIPLY_BY / PACE_CLK0_DIVIDE_BY;
constant CPU_FREQ_MHz : natural := 3;
constant M62_CPU_CLK_ENA_DIVIDE_BY : natural := CLK0_FREQ_MHz / CPU_FREQ_MHz;
type from_PLATFORM_IO_t is record
not_used : std_logic;
end record;
type to_PLATFORM_IO_t is record
not_used : std_logic;
end record;
end;

View File

@@ -0,0 +1,440 @@
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
library work;
use work.platform_pkg.all;
package platform_variant_pkg is
constant PLATFORM_VARIANT : string := "ldrun";
type rom_a is array (natural range <>) of string;
constant M62_ROM : rom_a(0 to 3) :=
(
0 => "lr-a-4e",
1 => "lr-a-4d",
2 => "lr-a-4b",
3 => "lr-a-4a"
);
constant M62_ROM_WIDTHAD : natural := 13;
constant M62_CHAR_ROM : rom_a(0 to 2) :=
(
0 => "lr-e-2d",
1 => "lr-e-2j",
2 => "lr-e-2f"
);
constant M62_SPRITE_ROM : rom_a(0 to 2) :=
(
0 => "lr-b-4k",
1 => "lr-b-3n",
2 => "lr-b-4c"
);
type pal_rgb_t is array (0 to 2) of std_logic_vector(7 downto 0);
type pal_a is array (natural range <>) of pal_rgb_t;
constant tile_pal : pal_a(0 to 255) :=
(
17 => (0=>"00000011", 1=>"11111111", 2=>"11111111"), -- 03FFFF
25 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03
33 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
40 => (0=>"01100010", 1=>"01100010", 2=>"01100010"), -- 626262
41 => (0=>"11011100", 1=>"01100010", 2=>"00000011"), -- DC6203
42 => (0=>"00000011", 1=>"11111111", 2=>"11001100"), -- 03FFCC
43 => (0=>"11011100", 1=>"11011100", 2=>"00000011"), -- DCDC03
44 => (0=>"11011100", 1=>"10110111", 2=>"01010000"), -- DCB750
45 => (0=>"10000100", 1=>"10100110", 2=>"10100110"), -- 84A6A6
46 => (0=>"10010100", 1=>"01100010", 2=>"01100010"), -- 946262
49 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
50 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03
51 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03
52 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF
53 => (0=>"11111111", 1=>"00000011", 2=>"11111111"), -- FF03FF
54 => (0=>"00000011", 1=>"11111111", 2=>"11111111"), -- 03FFFF
55 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
56 => (0=>"01100010", 1=>"01100010", 2=>"01100010"), -- 626262
57 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03
63 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
72 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
73 => (0=>"11001100", 1=>"00000011", 2=>"11110000"), -- CC03F0
74 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
75 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
76 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
77 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
78 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
79 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
80 => (0=>"01100010", 1=>"01100010", 2=>"01100010"), -- 626262
81 => (0=>"11110000", 1=>"11011100", 2=>"00000011"), -- F0DC03
82 => (0=>"11110000", 1=>"10010100", 2=>"00000011"), -- F09403
83 => (0=>"11111111", 1=>"11111111", 2=>"10100110"), -- FFFFA6
84 => (0=>"10000100", 1=>"10000100", 2=>"11111111"), -- 8484FF
85 => (0=>"11011100", 1=>"10010100", 2=>"00000011"), -- DC9403
86 => (0=>"00000011", 1=>"11011100", 2=>"11011100"), -- 03DCDC
89 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
91 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
93 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
95 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
97 => (0=>"11111111", 1=>"11001100", 2=>"00000011"), -- FFCC03
98 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
99 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
101 => (0=>"11111111", 1=>"11001100", 2=>"00000011"), -- FFCC03
102 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
103 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
105 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF
106 => (0=>"11111111", 1=>"11001100", 2=>"00000011"), -- FFCC03
107 => (0=>"11111111", 1=>"11001100", 2=>"00000011"), -- FFCC03
108 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
109 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
110 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
111 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
113 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
114 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF
115 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF
116 => (0=>"11111111", 1=>"11001100", 2=>"00000011"), -- FFCC03
117 => (0=>"11111111", 1=>"11001100", 2=>"00000011"), -- FFCC03
118 => (0=>"11111111", 1=>"11001100", 2=>"00000011"), -- FFCC03
119 => (0=>"11111111", 1=>"11001100", 2=>"00000011"), -- FFCC03
121 => (0=>"11111111", 1=>"11001100", 2=>"00000011"), -- FFCC03
122 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
123 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
124 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF
125 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF
126 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF
127 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF
136 => (0=>"10000100", 1=>"10000100", 2=>"10000100"), -- 848484
137 => (0=>"10010100", 1=>"10010100", 2=>"10010100"), -- 949494
138 => (0=>"01100010", 1=>"01100010", 2=>"01100010"), -- 626262
139 => (0=>"11011100", 1=>"10110111", 2=>"10000100"), -- DCB784
140 => (0=>"01100010", 1=>"01100010", 2=>"11001100"), -- 6262CC
141 => (0=>"11001100", 1=>"11001100", 2=>"11001100"), -- CCCCCC
142 => (0=>"10110111", 1=>"11011100", 2=>"11110000"), -- B7DCF0
143 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
145 => (0=>"11110000", 1=>"11001100", 2=>"10010100"), -- F0CC94
146 => (0=>"10000100", 1=>"10000100", 2=>"10000100"), -- 848484
147 => (0=>"10000100", 1=>"10000100", 2=>"10000100"), -- 848484
148 => (0=>"11001100", 1=>"11001100", 2=>"11001100"), -- CCCCCC
149 => (0=>"11001100", 1=>"11001100", 2=>"10100110"), -- CCCCA6
150 => (0=>"10110111", 1=>"10110111", 2=>"10110111"), -- B7B7B7
153 => (0=>"10110111", 1=>"00000011", 2=>"11001100"), -- B703CC
154 => (0=>"00000011", 1=>"10010100", 2=>"00000011"), -- 039403
155 => (0=>"11011100", 1=>"10110111", 2=>"10000100"), -- DCB784
156 => (0=>"01100010", 1=>"01100010", 2=>"11001100"), -- 6262CC
157 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03
158 => (0=>"10100110", 1=>"11011100", 2=>"10100110"), -- A6DCA6
159 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
160 => (0=>"10000100", 1=>"10000100", 2=>"10000100"), -- 848484
161 => (0=>"10110111", 1=>"00000011", 2=>"11001100"), -- B703CC
162 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
163 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
164 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
165 => (0=>"11001100", 1=>"10100110", 2=>"11011100"), -- CCA6DC
166 => (0=>"10110111", 1=>"11011100", 2=>"11110000"), -- B7DCF0
167 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
168 => (0=>"10000100", 1=>"10000100", 2=>"10000100"), -- 848484
169 => (0=>"10100110", 1=>"01110000", 2=>"00000011"), -- A67003
170 => (0=>"11001100", 1=>"10100110", 2=>"00000011"), -- CCA603
171 => (0=>"11110000", 1=>"11011100", 2=>"00000011"), -- F0DC03
173 => (0=>"10100110", 1=>"10000100", 2=>"01110000"), -- A68470
174 => (0=>"10110111", 1=>"11011100", 2=>"11110000"), -- B7DCF0
175 => (0=>"10110111", 1=>"10110111", 2=>"10110111"), -- B7B7B7
176 => (0=>"10010100", 1=>"11001100", 2=>"11001100"), -- 94CCCC
177 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
178 => (0=>"01100010", 1=>"10010100", 2=>"00000011"), -- 629403
179 => (0=>"11011100", 1=>"10100110", 2=>"01010000"), -- DCA650
180 => (0=>"00000011", 1=>"01100010", 2=>"01010000"), -- 036250
181 => (0=>"11001100", 1=>"01110000", 2=>"00000011"), -- CC7003
182 => (0=>"10010100", 1=>"11001100", 2=>"11001100"), -- 94CCCC
183 => (0=>"11001100", 1=>"11011100", 2=>"10000100"), -- CCDC84
184 => (0=>"11001100", 1=>"11011100", 2=>"10000100"), -- CCDC84
185 => (0=>"10010100", 1=>"01100010", 2=>"00000011"), -- 946203
186 => (0=>"01100010", 1=>"10010100", 2=>"00000011"), -- 629403
187 => (0=>"11011100", 1=>"10100110", 2=>"01010000"), -- DCA650
188 => (0=>"00000011", 1=>"01100010", 2=>"01010000"), -- 036250
189 => (0=>"11001100", 1=>"01110000", 2=>"00000011"), -- CC7003
190 => (0=>"10110111", 1=>"10000100", 2=>"01010000"), -- B78450
192 => (0=>"11001100", 1=>"11011100", 2=>"10000100"), -- CCDC84
193 => (0=>"01110000", 1=>"01000001", 2=>"00000011"), -- 704103
194 => (0=>"10100110", 1=>"10000100", 2=>"01010000"), -- A68450
195 => (0=>"11011100", 1=>"10100110", 2=>"00000011"), -- DCA603
197 => (0=>"10100110", 1=>"01100010", 2=>"00000011"), -- A66203
198 => (0=>"10010100", 1=>"10000100", 2=>"01110000"), -- 948470
199 => (0=>"10110111", 1=>"10100110", 2=>"10010100"), -- B7A694
200 => (0=>"11011100", 1=>"10100110", 2=>"01010000"), -- DCA650
201 => (0=>"01110000", 1=>"01000001", 2=>"00000011"), -- 704103
202 => (0=>"10100110", 1=>"10000100", 2=>"01010000"), -- A68450
203 => (0=>"11011100", 1=>"10100110", 2=>"00000011"), -- DCA603
204 => (0=>"11001100", 1=>"11011100", 2=>"10000100"), -- CCDC84
205 => (0=>"10100110", 1=>"01100010", 2=>"00000011"), -- A66203
206 => (0=>"10010100", 1=>"10000100", 2=>"01110000"), -- 948470
207 => (0=>"10110111", 1=>"10100110", 2=>"10010100"), -- B7A694
208 => (0=>"11011100", 1=>"10100110", 2=>"01010000"), -- DCA650
209 => (0=>"11110000", 1=>"00000011", 2=>"10000100"), -- F00384
210 => (0=>"11001100", 1=>"11011100", 2=>"10000100"), -- CCDC84
212 => (0=>"00000011", 1=>"00000011", 2=>"11110000"), -- 0303F0
213 => (0=>"11001100", 1=>"10110111", 2=>"11001100"), -- CCB7CC
214 => (0=>"10010100", 1=>"11001100", 2=>"11001100"), -- 94CCCC
215 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0
224 => (0=>"01100010", 1=>"01100010", 2=>"01100010"), -- 626262
225 => (0=>"11011100", 1=>"01100010", 2=>"00000011"), -- DC6203
227 => (0=>"11011100", 1=>"11011100", 2=>"00000011"), -- DCDC03
228 => (0=>"00000011", 1=>"10100110", 2=>"11011100"), -- 03A6DC
230 => (0=>"10100110", 1=>"11011100", 2=>"11011100"), -- A6DCDC
232 => (0=>"10100110", 1=>"11011100", 2=>"10100110"), -- A6DCA6
234 => (0=>"10110111", 1=>"01110000", 2=>"01100010"), -- B77062
236 => (0=>"11110000", 1=>"10100110", 2=>"10010100"), -- F0A694
240 => (0=>"00000011", 1=>"11111111", 2=>"11111111"), -- 03FFFF
242 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
243 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603
244 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF
245 => (0=>"11111111", 1=>"10100110", 2=>"10000100"), -- FFA684
247 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
248 => (0=>"10100110", 1=>"10100110", 2=>"11011100"), -- A6A6DC
249 => (0=>"10100110", 1=>"11011100", 2=>"10100110"), -- A6DCA6
250 => (0=>"11001100", 1=>"10010100", 2=>"01110000"), -- CC9470
251 => (0=>"10110111", 1=>"01110000", 2=>"01100010"), -- B77062
252 => (0=>"11001100", 1=>"01110000", 2=>"10000100"), -- CC7084
253 => (0=>"11110000", 1=>"10100110", 2=>"10010100"), -- F0A694
others => (others => "00000011")
);
constant sprite_pal : pal_a(0 to 255) :=
(
1 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
2 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03
3 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03
4 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF
5 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603
7 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
9 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
10 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03
11 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03
12 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF
13 => (0=>"11111111", 1=>"00000011", 2=>"11111111"), -- FF03FF
14 => (0=>"00000011", 1=>"11111111", 2=>"11111111"), -- 03FFFF
15 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
17 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
18 => (0=>"01100010", 1=>"01100010", 2=>"01100010"), -- 626262
19 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03
20 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF
21 => (0=>"11111111", 1=>"00000011", 2=>"11111111"), -- FF03FF
22 => (0=>"00000011", 1=>"11111111", 2=>"11111111"), -- 03FFFF
23 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
25 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
26 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03
27 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603
28 => (0=>"00000011", 1=>"00110001", 2=>"11111111"), -- 0331FF
29 => (0=>"11111111", 1=>"10100110", 2=>"10000100"), -- FFA684
30 => (0=>"00000011", 1=>"11111111", 2=>"11111111"), -- 03FFFF
31 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
33 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
34 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03
35 => (0=>"10100110", 1=>"01100010", 2=>"00000011"), -- A66203
36 => (0=>"00000011", 1=>"00110001", 2=>"11111111"), -- 0331FF
37 => (0=>"11111111", 1=>"10100110", 2=>"10000100"), -- FFA684
38 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
39 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
41 => (0=>"11011100", 1=>"00000011", 2=>"00000011"), -- DC0303
42 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03
43 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03
44 => (0=>"00000011", 1=>"10100110", 2=>"11111111"), -- 03A6FF
45 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603
46 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
47 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
49 => (0=>"11011100", 1=>"00000011", 2=>"00000011"), -- DC0303
51 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03
52 => (0=>"00000011", 1=>"10100110", 2=>"11111111"), -- 03A6FF
53 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603
54 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
55 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
57 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
58 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
59 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603
60 => (0=>"00000011", 1=>"10000100", 2=>"11111111"), -- 0384FF
61 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
62 => (0=>"10100110", 1=>"11001100", 2=>"11001100"), -- A6CCCC
63 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0
65 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
66 => (0=>"00000011", 1=>"11110000", 2=>"01100010"), -- 03F062
67 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
68 => (0=>"00000011", 1=>"01000001", 2=>"11111111"), -- 0341FF
69 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
71 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0
73 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
75 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
76 => (0=>"00000011", 1=>"01000001", 2=>"11111111"), -- 0341FF
77 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
78 => (0=>"00000011", 1=>"11110000", 2=>"01100010"), -- 03F062
79 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0
81 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
82 => (0=>"00000011", 1=>"10100110", 2=>"00000011"), -- 03A603
83 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03
84 => (0=>"00000011", 1=>"01000001", 2=>"11111111"), -- 0341FF
86 => (0=>"00000011", 1=>"11110000", 2=>"11110000"), -- 03F0F0
87 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0
89 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
91 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03
92 => (0=>"00000011", 1=>"01000001", 2=>"11111111"), -- 0341FF
94 => (0=>"00000011", 1=>"11110000", 2=>"11110000"), -- 03F0F0
95 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0
98 => (0=>"11110000", 1=>"10100110", 2=>"00000011"), -- F0A603
99 => (0=>"11110000", 1=>"10110111", 2=>"10000100"), -- F0B784
100 => (0=>"00000011", 1=>"10010100", 2=>"11011100"), -- 0394DC
101 => (0=>"11111111", 1=>"11001100", 2=>"10100110"), -- FFCCA6
102 => (0=>"11001100", 1=>"11110000", 2=>"11110000"), -- CCF0F0
103 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
105 => (0=>"01110000", 1=>"01000001", 2=>"00000011"), -- 704103
106 => (0=>"10100110", 1=>"10000100", 2=>"01010000"), -- A68450
107 => (0=>"11011100", 1=>"10100110", 2=>"00000011"), -- DCA603
109 => (0=>"10100110", 1=>"01100010", 2=>"00000011"), -- A66203
110 => (0=>"10010100", 1=>"10000100", 2=>"01110000"), -- 948470
111 => (0=>"10110111", 1=>"10100110", 2=>"10010100"), -- B7A694
113 => (0=>"11110000", 1=>"00110001", 2=>"00110001"), -- F03131
114 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
115 => (0=>"10100110", 1=>"01100010", 2=>"00000011"), -- A66203
116 => (0=>"00000011", 1=>"01000001", 2=>"11111111"), -- 0341FF
117 => (0=>"11111111", 1=>"10100110", 2=>"10000100"), -- FFA684
118 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
119 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0
121 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
122 => (0=>"10000100", 1=>"11001100", 2=>"00000011"), -- 84CC03
123 => (0=>"11111111", 1=>"10110111", 2=>"00000011"), -- FFB703
124 => (0=>"00000011", 1=>"01000001", 2=>"11011100"), -- 0341DC
125 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
126 => (0=>"00000011", 1=>"10010100", 2=>"00000011"), -- 039403
127 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0
129 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
130 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03
131 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03
132 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF
133 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603
135 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
137 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
138 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03
139 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03
140 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF
141 => (0=>"11111111", 1=>"00000011", 2=>"11111111"), -- FF03FF
142 => (0=>"00000011", 1=>"11111111", 2=>"11111111"), -- 03FFFF
143 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
145 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
146 => (0=>"01100010", 1=>"01100010", 2=>"01100010"), -- 626262
147 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03
148 => (0=>"00000011", 1=>"00000011", 2=>"11111111"), -- 0303FF
149 => (0=>"11111111", 1=>"00000011", 2=>"11111111"), -- FF03FF
150 => (0=>"00000011", 1=>"11111111", 2=>"11111111"), -- 03FFFF
151 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
153 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
154 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03
155 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603
156 => (0=>"00000011", 1=>"00110001", 2=>"11111111"), -- 0331FF
157 => (0=>"11111111", 1=>"10100110", 2=>"10000100"), -- FFA684
158 => (0=>"00000011", 1=>"11111111", 2=>"11111111"), -- 03FFFF
159 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
161 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
162 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03
163 => (0=>"10100110", 1=>"01100010", 2=>"00000011"), -- A66203
164 => (0=>"00000011", 1=>"00110001", 2=>"11111111"), -- 0331FF
165 => (0=>"11111111", 1=>"10100110", 2=>"10000100"), -- FFA684
166 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
167 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
169 => (0=>"11011100", 1=>"00000011", 2=>"00000011"), -- DC0303
170 => (0=>"00000011", 1=>"11111111", 2=>"00000011"), -- 03FF03
171 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03
172 => (0=>"00000011", 1=>"10100110", 2=>"11111111"), -- 03A6FF
173 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603
174 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
175 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
177 => (0=>"11011100", 1=>"00000011", 2=>"00000011"), -- DC0303
179 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03
180 => (0=>"00000011", 1=>"10100110", 2=>"11111111"), -- 03A6FF
181 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603
182 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
183 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
185 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
186 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
187 => (0=>"11111111", 1=>"10100110", 2=>"00000011"), -- FFA603
188 => (0=>"00000011", 1=>"10000100", 2=>"11111111"), -- 0384FF
189 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
190 => (0=>"10100110", 1=>"11001100", 2=>"11001100"), -- A6CCCC
191 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0
193 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
194 => (0=>"00000011", 1=>"11110000", 2=>"01100010"), -- 03F062
195 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
196 => (0=>"00000011", 1=>"01000001", 2=>"11111111"), -- 0341FF
197 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
199 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0
201 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
203 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
204 => (0=>"00000011", 1=>"01000001", 2=>"11111111"), -- 0341FF
205 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
206 => (0=>"00000011", 1=>"11110000", 2=>"01100010"), -- 03F062
207 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0
209 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
210 => (0=>"00000011", 1=>"10100110", 2=>"00000011"), -- 03A603
211 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03
212 => (0=>"00000011", 1=>"01000001", 2=>"11111111"), -- 0341FF
214 => (0=>"00000011", 1=>"11110000", 2=>"11110000"), -- 03F0F0
215 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0
217 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
219 => (0=>"11111111", 1=>"11111111", 2=>"00000011"), -- FFFF03
220 => (0=>"00000011", 1=>"01000001", 2=>"11111111"), -- 0341FF
222 => (0=>"00000011", 1=>"11110000", 2=>"11110000"), -- 03F0F0
223 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0
226 => (0=>"11110000", 1=>"10100110", 2=>"00000011"), -- F0A603
227 => (0=>"11110000", 1=>"10110111", 2=>"10000100"), -- F0B784
228 => (0=>"00000011", 1=>"10010100", 2=>"11011100"), -- 0394DC
229 => (0=>"11111111", 1=>"11001100", 2=>"10100110"), -- FFCCA6
230 => (0=>"11001100", 1=>"11110000", 2=>"11110000"), -- CCF0F0
231 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
233 => (0=>"01110000", 1=>"01000001", 2=>"00000011"), -- 704103
234 => (0=>"10100110", 1=>"10000100", 2=>"01010000"), -- A68450
235 => (0=>"11011100", 1=>"10100110", 2=>"00000011"), -- DCA603
237 => (0=>"10100110", 1=>"01100010", 2=>"00000011"), -- A66203
238 => (0=>"10010100", 1=>"10000100", 2=>"01110000"), -- 948470
239 => (0=>"10110111", 1=>"10100110", 2=>"10010100"), -- B7A694
241 => (0=>"11110000", 1=>"00110001", 2=>"00110001"), -- F03131
242 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
243 => (0=>"10100110", 1=>"01100010", 2=>"00000011"), -- A66203
244 => (0=>"00000011", 1=>"01000001", 2=>"11111111"), -- 0341FF
245 => (0=>"11111111", 1=>"10100110", 2=>"10000100"), -- FFA684
246 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
247 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0
249 => (0=>"11111111", 1=>"00000011", 2=>"00000011"), -- FF0303
250 => (0=>"10000100", 1=>"11001100", 2=>"00000011"), -- 84CC03
251 => (0=>"11111111", 1=>"10110111", 2=>"00000011"), -- FFB703
252 => (0=>"00000011", 1=>"01000001", 2=>"11011100"), -- 0341DC
253 => (0=>"11111111", 1=>"11111111", 2=>"11111111"), -- FFFFFF
254 => (0=>"00000011", 1=>"10010100", 2=>"00000011"), -- 039403
255 => (0=>"11110000", 1=>"11110000", 2=>"11110000"), -- F0F0F0
others => (others => "00000011")
);
-- table of sprite heights
type prom_a is array (natural range <>) of integer range 0 to 3;
constant sprite_prom : prom_a(0 to 31) :=
(
4 => 0,
5 => 0,
6 => 0,
7 => 0,
12 => 0,
13 => 0,
14 => 0,
15 => 0,
20 => 0,
21 => 0,
22 => 0,
23 => 0,
28 => 0,
29 => 0,
30 => 0,
31 => 0,
others => 1
);
end package platform_variant_pkg;

View File

@@ -0,0 +1,4 @@
set_global_assignment -name IP_TOOL_NAME "ALTPLL"
set_global_assignment -name IP_TOOL_VERSION "13.1"
set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "pll_mist.vhd"]
set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll_mist.ppf"]

View File

@@ -0,0 +1,461 @@
-- megafunction wizard: %ALTPLL%
-- GENERATION: STANDARD
-- VERSION: WM1.0
-- MODULE: altpll
-- ============================================================
-- File Name: pll_mist.vhd
-- Megafunction Name(s):
-- altpll
--
-- Simulation Library Files(s):
-- altera_mf
-- ============================================================
-- ************************************************************
-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!
--
-- 13.1.0 Build 162 10/23/2013 SJ Web Edition
-- ************************************************************
--Copyright (C) 1991-2013 Altera Corporation
--Your use of Altera Corporation's design tools, logic functions
--and other software and tools, and its AMPP partner logic
--functions, and any output files from any of the foregoing
--(including device programming or simulation files), and any
--associated documentation or information are expressly subject
--to the terms and conditions of the Altera Program License
--Subscription Agreement, Altera MegaCore Function License
--Agreement, or other applicable license agreement, including,
--without limitation, that your use is for the sole purpose of
--programming logic devices manufactured by Altera and sold by
--Altera or its authorized distributors. Please refer to the
--applicable agreement for further details.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY altera_mf;
USE altera_mf.all;
ENTITY pll_mist IS
PORT
(
areset : IN STD_LOGIC := '0';
inclk0 : IN STD_LOGIC := '0';
c0 : OUT STD_LOGIC ;
c1 : OUT STD_LOGIC ;
c2 : OUT STD_LOGIC ;
c3 : OUT STD_LOGIC ;
locked : OUT STD_LOGIC
);
END pll_mist;
ARCHITECTURE SYN OF pll_mist IS
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0);
SIGNAL sub_wire1 : STD_LOGIC ;
SIGNAL sub_wire2 : STD_LOGIC ;
SIGNAL sub_wire3 : STD_LOGIC ;
SIGNAL sub_wire4 : STD_LOGIC ;
SIGNAL sub_wire5 : STD_LOGIC ;
SIGNAL sub_wire6 : STD_LOGIC ;
SIGNAL sub_wire7 : STD_LOGIC_VECTOR (1 DOWNTO 0);
SIGNAL sub_wire8_bv : BIT_VECTOR (0 DOWNTO 0);
SIGNAL sub_wire8 : STD_LOGIC_VECTOR (0 DOWNTO 0);
COMPONENT altpll
GENERIC (
bandwidth_type : STRING;
clk0_divide_by : NATURAL;
clk0_duty_cycle : NATURAL;
clk0_multiply_by : NATURAL;
clk0_phase_shift : STRING;
clk1_divide_by : NATURAL;
clk1_duty_cycle : NATURAL;
clk1_multiply_by : NATURAL;
clk1_phase_shift : STRING;
clk2_divide_by : NATURAL;
clk2_duty_cycle : NATURAL;
clk2_multiply_by : NATURAL;
clk2_phase_shift : STRING;
clk3_divide_by : NATURAL;
clk3_duty_cycle : NATURAL;
clk3_multiply_by : NATURAL;
clk3_phase_shift : STRING;
compensate_clock : STRING;
inclk0_input_frequency : NATURAL;
intended_device_family : STRING;
lpm_hint : STRING;
lpm_type : STRING;
operation_mode : STRING;
pll_type : STRING;
port_activeclock : STRING;
port_areset : STRING;
port_clkbad0 : STRING;
port_clkbad1 : STRING;
port_clkloss : STRING;
port_clkswitch : STRING;
port_configupdate : STRING;
port_fbin : STRING;
port_inclk0 : STRING;
port_inclk1 : STRING;
port_locked : STRING;
port_pfdena : STRING;
port_phasecounterselect : STRING;
port_phasedone : STRING;
port_phasestep : STRING;
port_phaseupdown : STRING;
port_pllena : STRING;
port_scanaclr : STRING;
port_scanclk : STRING;
port_scanclkena : STRING;
port_scandata : STRING;
port_scandataout : STRING;
port_scandone : STRING;
port_scanread : STRING;
port_scanwrite : STRING;
port_clk0 : STRING;
port_clk1 : STRING;
port_clk2 : STRING;
port_clk3 : STRING;
port_clk4 : STRING;
port_clk5 : STRING;
port_clkena0 : STRING;
port_clkena1 : STRING;
port_clkena2 : STRING;
port_clkena3 : STRING;
port_clkena4 : STRING;
port_clkena5 : STRING;
port_extclk0 : STRING;
port_extclk1 : STRING;
port_extclk2 : STRING;
port_extclk3 : STRING;
self_reset_on_loss_lock : STRING;
width_clock : NATURAL
);
PORT (
areset : IN STD_LOGIC ;
clk : OUT STD_LOGIC_VECTOR (4 DOWNTO 0);
inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
locked : OUT STD_LOGIC
);
END COMPONENT;
BEGIN
sub_wire8_bv(0 DOWNTO 0) <= "0";
sub_wire8 <= To_stdlogicvector(sub_wire8_bv);
sub_wire5 <= sub_wire0(2);
sub_wire4 <= sub_wire0(0);
sub_wire2 <= sub_wire0(3);
sub_wire1 <= sub_wire0(1);
c1 <= sub_wire1;
c3 <= sub_wire2;
locked <= sub_wire3;
c0 <= sub_wire4;
c2 <= sub_wire5;
sub_wire6 <= inclk0;
sub_wire7 <= sub_wire8(0 DOWNTO 0) & sub_wire6;
altpll_component : altpll
GENERIC MAP (
bandwidth_type => "AUTO",
clk0_divide_by => 27,
clk0_duty_cycle => 50,
clk0_multiply_by => 40,
clk0_phase_shift => "0",
clk1_divide_by => 43,
clk1_duty_cycle => 50,
clk1_multiply_by => 40,
clk1_phase_shift => "0",
clk2_divide_by => 3,
clk2_duty_cycle => 50,
clk2_multiply_by => 8,
clk2_phase_shift => "0",
clk3_divide_by => 5400,
clk3_duty_cycle => 50,
clk3_multiply_by => 179,
clk3_phase_shift => "0",
compensate_clock => "CLK0",
inclk0_input_frequency => 37037,
intended_device_family => "Cyclone III",
lpm_hint => "CBX_MODULE_PREFIX=pll_mist",
lpm_type => "altpll",
operation_mode => "NORMAL",
pll_type => "AUTO",
port_activeclock => "PORT_UNUSED",
port_areset => "PORT_USED",
port_clkbad0 => "PORT_UNUSED",
port_clkbad1 => "PORT_UNUSED",
port_clkloss => "PORT_UNUSED",
port_clkswitch => "PORT_UNUSED",
port_configupdate => "PORT_UNUSED",
port_fbin => "PORT_UNUSED",
port_inclk0 => "PORT_USED",
port_inclk1 => "PORT_UNUSED",
port_locked => "PORT_USED",
port_pfdena => "PORT_UNUSED",
port_phasecounterselect => "PORT_UNUSED",
port_phasedone => "PORT_UNUSED",
port_phasestep => "PORT_UNUSED",
port_phaseupdown => "PORT_UNUSED",
port_pllena => "PORT_UNUSED",
port_scanaclr => "PORT_UNUSED",
port_scanclk => "PORT_UNUSED",
port_scanclkena => "PORT_UNUSED",
port_scandata => "PORT_UNUSED",
port_scandataout => "PORT_UNUSED",
port_scandone => "PORT_UNUSED",
port_scanread => "PORT_UNUSED",
port_scanwrite => "PORT_UNUSED",
port_clk0 => "PORT_USED",
port_clk1 => "PORT_USED",
port_clk2 => "PORT_USED",
port_clk3 => "PORT_USED",
port_clk4 => "PORT_UNUSED",
port_clk5 => "PORT_UNUSED",
port_clkena0 => "PORT_UNUSED",
port_clkena1 => "PORT_UNUSED",
port_clkena2 => "PORT_UNUSED",
port_clkena3 => "PORT_UNUSED",
port_clkena4 => "PORT_UNUSED",
port_clkena5 => "PORT_UNUSED",
port_extclk0 => "PORT_UNUSED",
port_extclk1 => "PORT_UNUSED",
port_extclk2 => "PORT_UNUSED",
port_extclk3 => "PORT_UNUSED",
self_reset_on_loss_lock => "OFF",
width_clock => 5
)
PORT MAP (
areset => areset,
inclk => sub_wire7,
clk => sub_wire0,
locked => sub_wire3
);
END SYN;
-- ============================================================
-- CNX file retrieval info
-- ============================================================
-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0"
-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000"
-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1"
-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz"
-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low"
-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1"
-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0"
-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0"
-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0"
-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0"
-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0"
-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0"
-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0"
-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0"
-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0"
-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "8"
-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "27"
-- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "43"
-- Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "3"
-- Retrieval info: PRIVATE: DIV_FACTOR3 NUMERIC "27"
-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000"
-- Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000"
-- Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000"
-- Retrieval info: PRIVATE: DUTY_CYCLE3 STRING "50.00000000"
-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "40.000000"
-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "25.116280"
-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "72.000000"
-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE3 STRING "0.895000"
-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0"
-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0"
-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1"
-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0"
-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0"
-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575"
-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1"
-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "27.000"
-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz"
-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000"
-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1"
-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1"
-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz"
-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone III"
-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1"
-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1"
-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1"
-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available"
-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0"
-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg"
-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "deg"
-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "ps"
-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT3 STRING "ps"
-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any"
-- Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0"
-- Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0"
-- Retrieval info: PRIVATE: MIRROR_CLK2 STRING "0"
-- Retrieval info: PRIVATE: MIRROR_CLK3 STRING "0"
-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "40"
-- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "40"
-- Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "8"
-- Retrieval info: PRIVATE: MULT_FACTOR3 NUMERIC "1"
-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1"
-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "40.00000000"
-- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "25.26315800"
-- Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "72.00000000"
-- Retrieval info: PRIVATE: OUTPUT_FREQ3 STRING "0.89500000"
-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "0"
-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "0"
-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "0"
-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE3 STRING "1"
-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz"
-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz"
-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz"
-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT3 STRING "MHz"
-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1"
-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0"
-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000"
-- Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000"
-- Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "0.00000000"
-- Retrieval info: PRIVATE: PHASE_SHIFT3 STRING "0.00000000"
-- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0"
-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg"
-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "deg"
-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "ps"
-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT3 STRING "ps"
-- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0"
-- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "1"
-- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1"
-- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0"
-- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0"
-- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0"
-- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0"
-- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0"
-- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0"
-- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0"
-- Retrieval info: PRIVATE: RECONFIG_FILE STRING "pll_mist.mif"
-- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0"
-- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1"
-- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0"
-- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0"
-- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0"
-- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000"
-- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz"
-- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500"
-- Retrieval info: PRIVATE: SPREAD_USE STRING "0"
-- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0"
-- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1"
-- Retrieval info: PRIVATE: STICKY_CLK1 STRING "1"
-- Retrieval info: PRIVATE: STICKY_CLK2 STRING "1"
-- Retrieval info: PRIVATE: STICKY_CLK3 STRING "1"
-- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1"
-- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1"
-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0"
-- Retrieval info: PRIVATE: USE_CLK0 STRING "1"
-- Retrieval info: PRIVATE: USE_CLK1 STRING "1"
-- Retrieval info: PRIVATE: USE_CLK2 STRING "1"
-- Retrieval info: PRIVATE: USE_CLK3 STRING "1"
-- Retrieval info: PRIVATE: USE_CLKENA0 STRING "0"
-- Retrieval info: PRIVATE: USE_CLKENA1 STRING "0"
-- Retrieval info: PRIVATE: USE_CLKENA2 STRING "0"
-- Retrieval info: PRIVATE: USE_CLKENA3 STRING "0"
-- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0"
-- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0"
-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all
-- Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO"
-- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "27"
-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50"
-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "40"
-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0"
-- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "43"
-- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50"
-- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "40"
-- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0"
-- Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "3"
-- Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50"
-- Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "8"
-- Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0"
-- Retrieval info: CONSTANT: CLK3_DIVIDE_BY NUMERIC "5400"
-- Retrieval info: CONSTANT: CLK3_DUTY_CYCLE NUMERIC "50"
-- Retrieval info: CONSTANT: CLK3_MULTIPLY_BY NUMERIC "179"
-- Retrieval info: CONSTANT: CLK3_PHASE_SHIFT STRING "0"
-- Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0"
-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "37037"
-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone III"
-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll"
-- Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL"
-- Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO"
-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_USED"
-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED"
-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED"
-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED"
-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED"
-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED"
-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_USED"
-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF"
-- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5"
-- Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]"
-- Retrieval info: USED_PORT: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..0]"
-- Retrieval info: USED_PORT: areset 0 0 0 0 INPUT GND "areset"
-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0"
-- Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1"
-- Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2"
-- Retrieval info: USED_PORT: c3 0 0 0 0 OUTPUT_CLK_EXT VCC "c3"
-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0"
-- Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked"
-- Retrieval info: CONNECT: @areset 0 0 0 0 areset 0 0 0 0
-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0
-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0
-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0
-- Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1
-- Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2
-- Retrieval info: CONNECT: c3 0 0 0 0 @clk 0 0 1 3
-- Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0
-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist.vhd TRUE
-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist.ppf TRUE
-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist.inc FALSE
-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist.cmp FALSE
-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist.bsf FALSE
-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_mist_inst.vhd FALSE
-- Retrieval info: LIB_FILE: altera_mf
-- Retrieval info: CBX_MODULE_PREFIX: ON

View File

@@ -0,0 +1,37 @@
ROM_START( ldrun )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "lr-a-4e", 0x0000, 0x2000, CRC(5d7e2a4d) SHA1(fe8aeff360f6c3a8606d67a8b95148c3c2ef7267) )
ROM_LOAD( "lr-a-4d", 0x2000, 0x2000, CRC(96f20473) SHA1(e400c43f3f32e12f68ca204c60bcebdb2b3da55d) )
ROM_LOAD( "lr-a-4b", 0x4000, 0x2000, CRC(b041c4a9) SHA1(77768b03ea2497e25c3e47b68a0eb2fe3e9aea35) )
ROM_LOAD( "lr-a-4a", 0x6000, 0x2000, CRC(645e42aa) SHA1(c806ffce7ece418bad86854c987f78c70c13e492) )
ROM_REGION( 0x10000, "irem_audio:iremsound", 0 ) /* 64k for the audio CPU (6803) */
ROM_LOAD( "lr-a-3f", 0xc000, 0x2000, CRC(7a96accd) SHA1(e94815dbfaabbb562df8f3298060aa6bd7825904) )
ROM_LOAD( "lr-a-3h", 0xe000, 0x2000, CRC(3f7f3939) SHA1(7ee25a21e74995bfb36ac11b45d384b33a6d8515) )
ROM_REGION( 0x6000, "gfx1", 0 )
ROM_LOAD( "lr-e-2d", 0x0000, 0x2000, CRC(24f9b58d) SHA1(e33224b910d37aaa85713b954c8dd50996245a8c) ) /* characters */
ROM_LOAD( "lr-e-2j", 0x2000, 0x2000, CRC(43175e08) SHA1(9dbafb27d46cf7df35f343a8753e8d91ea706993) )
ROM_LOAD( "lr-e-2f", 0x4000, 0x2000, CRC(e0317124) SHA1(b766bd21e2da1673d2054148f62d61c33c95d38e) )
ROM_REGION( 0x6000, "gfx2", 0 )
ROM_LOAD( "lr-b-4k", 0x0000, 0x2000, CRC(8141403e) SHA1(65fa6bc872fb07c71aacbbcc35cee766b2877896) ) /* sprites */
ROM_LOAD( "lr-b-3n", 0x2000, 0x2000, CRC(55154154) SHA1(35304676e1ab55adccdabdc766a4e0e0901d3cd0) )
ROM_LOAD( "lr-b-4c", 0x4000, 0x2000, CRC(924e34d0) SHA1(6a841419797a129235fc7d0405a5be55e8d703da) )
ROM_REGION( 0x20, "spr_height_prom", 0 )
ROM_LOAD( "lr-b-5p", 0x00, 0x20, CRC(e01f69e2) SHA1(0d00ef348025ea4a9c274a7e3dbb006217d8449d) ) /* sprite height, one entry per 32 */
ROM_REGION( 0x300, "spr_color_proms", 0 )
ROM_LOAD( "lr-b-1m", 0x0000, 0x0100, CRC(4bae1c25) SHA1(17a9e2567d9d648dca69510bb201f8af0738b068) ) /* sprite palette red component */
ROM_LOAD( "lr-b-1n", 0x0100, 0x0100, CRC(9cd3db94) SHA1(bff95965f946df0e4af1f99db5b2468bf1d4403f) ) /* sprite palette green component */
ROM_LOAD( "lr-b-1l", 0x0200, 0x0100, CRC(08d8cf9a) SHA1(a46213e0dc04e44b0544401eb341fd49eef331dd) ) /* sprite palette blue component */
ROM_REGION( 0x300, "chr_color_proms", 0 )
ROM_LOAD( "lr-e-3m", 0x0000, 0x0100, CRC(53040416) SHA1(2c6915164d1c31afc60a21b557abdf023d5b3f46) ) /* character palette red component */
ROM_LOAD( "lr-e-3l", 0x0100, 0x0100, CRC(67786037) SHA1(cd40dfd94295afe57139733752643cf48b8566b1) ) /* character palette green component */
ROM_LOAD( "lr-e-3n", 0x0200, 0x0100, CRC(5b716837) SHA1(e3ea250891fec43a97e92ac1c3a4fbb5ee2d4a4d) ) /* character palette blue component */
ROM_REGION( 0x100, "timing", 0 )
ROM_LOAD( "lr-b-6f", 0x000, 0x100, CRC(34d88d3c) SHA1(727f4c5cfff33538886fa0a29fd119aa085d7008) ) /* video timing - common to the other games */
ROM_END

View File

@@ -0,0 +1 @@
 

View File

@@ -0,0 +1,11 @@
copy /b lr-a-4e + lr-a-4d + lr-a-4b + lr-a-4a prog.bin
make_vhdl_prom.exe prog.bin prog.vhd
make_vhdl_prom.exe lr-b-5p rom_sprite_high_new.vhd
copy /b lr-a-3f + lr-a-3h snd.bin
make_vhdl_prom.exe snd.bin snd_prg.vhd
copy /b prog.bin + snd.bin LDRUNNER.ROM
pause

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,24 @@
library ieee;
use ieee.std_logic_1164.all,ieee.numeric_std.all;
entity rom_sprite_high is
port (
clk : in std_logic;
addr : in std_logic_vector(4 downto 0);
data : out std_logic_vector(3 downto 0)
);
end entity;
architecture prom of rom_sprite_high is
type rom is array(0 to 31) of std_logic_vector(3 downto 0);
signal rom_data: rom := (
"0001","0001","0001","0001","0000","0000","0000","0000","0001","0001","0001","0001","0000","0000","0000","0000",
"0001","0001","0001","0001","0000","0000","0000","0000","0001","0001","0001","0001","0000","0000","0000","0000");
begin
process(clk)
begin
if rising_edge(clk) then
data <= rom_data(to_integer(unsigned(addr)));
end if;
end process;
end architecture;

View File

@@ -0,0 +1,24 @@
library ieee;
use ieee.std_logic_1164.all,ieee.numeric_std.all;
entity rom_sprite_high_new is
port (
clk : in std_logic;
addr : in std_logic_vector(4 downto 0);
data : out std_logic_vector(7 downto 0)
);
end entity;
architecture prom of rom_sprite_high_new is
type rom is array(0 to 31) of std_logic_vector(7 downto 0);
signal rom_data: rom := (
X"01",X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"01",X"00",X"00",X"00",X"00",
X"01",X"01",X"01",X"01",X"00",X"00",X"00",X"00",X"01",X"01",X"01",X"01",X"00",X"00",X"00",X"00");
begin
process(clk)
begin
if rising_edge(clk) then
data <= rom_data(to_integer(unsigned(addr)));
end if;
end process;
end architecture;

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,513 @@
:1000000000000000000000000000000000000000F0
:1000100000000000000000000000000000000000E0
:1000200000000000000000000000000000000000D0
:1000300000000000000000000000000000000000C0
:1000400000000000000000000000000000000003AD
:10005000000000000000000000000000000000F0B0
:100060000300070503000001010203020100000074
:10007000FC3E1EB63E1C60F0F0E0E02000E0000018
:100080000000000000000000000001030F0E0B0F35
:1000900000000000000000000000FCFC003C683490
:1000A0003E7F6F07020307070E0F060000000000E7
:1000B0000000C0E050FCFE0F07060000000000003A
:1000C00000000000000000000000000307070677A2
:1000D000000000000000000000003C3CE0FEFAFCD4
:1000E000FBDF0F0F010F0F1E383C1800000000004F
:1000F000F0E0E0C020F0F83C1C38000000000000F8
:10010000000000000000000000000000070F1F1C9E
:10011000000000000000000000000000C0E0F6F653
:100120001F1FC8DCFF771B3E2F13000000000000DC
:10013000FEFC3C78F0F0E040F0F838183818000089
:10014000000000000000000000001F7FF8F1DBF954
:1001500000000000000000000000808000C040801F
:10016000770F7FF9EF7F1E1C38381C180000000045
:1001700018F8F0F8D880000000000000000000002F
:10018000000000000000000000000000001F1F0031
:1001900000000000000000000000000000C0E07847
:1001A0001E0B1620700F07010F1F1C1E0F060000EC
:1001B0003868783CFEF6E070F8A00000000000000F
:1001C000000000000000000000000000000F0F0011
:1001D00000000000000000000000000000E0F03C13
:1001E0000F050B103837030E1F050000000000003C
:1001F0001CB43C187CFEF783F0F83878F0600000FF
:100200000000000000000000000000000000001FCF
:10021000000000000000000000000000000000C01E
:100220001F001E0B1600307F67040F1F3C180000D4
:10023000E07838687830F8FCEE90F0E0F078000074
:1002400000000000000000000000000000000000AE
:10025000000000000000000000000000000000009E
:100260000000030103010000000000000000000086
:1002700000000090F0F8FC78300000000000000062
:10028000000000000000000000000000000000006E
:10029000000000000000000000000000000000005E
:1002A0000000010301030604040000000000000038
:1002B0000000A0F0F0E0C0400000000000000000DE
:1002C000000000000000000000000000000000002E
:1002D000000000000000000000000000000000001E
:1002E0000000040603070F070600000000000000DE
:1002F00000002070E0E0F0E0C0000000000000001E
:1003000000000000000000000000133F1E3878705D
:1003100000000000000000000000C080000000009D
:10032000381C000000000000000000000000000079
:1003300000000000000000000000000000000000BD
:100340000000000000000000000000000C07030790
:10035000000000000000000000000000E0C0C0E05D
:100360000703010000000000000000000000000082
:10037000C084C00000000000000000000000000079
:10038000000000000000000000000000000000006D
:10039000000000000000000000000000000000005D
:1003A0000000020203010301010000000000000040
:1003B00000002060F0E0F0C08000000000000000BD
:1003C000000000000000000000000000000000002D
:1003D000000000000000000000000000000000001D
:1003E0000000020203010301000000000000000001
:1003F00000002060F0E0F0E0C0000000000000001D
:1004000000000000000000000000000000000000EC
:1004100000000000000000000000000000000000DC
:1004200000000000000000020100000100000000C8
:100430000000000000C0602020709000000000005C
:10044000000000000000000000000000070F1F1F58
:10045000000000000000000000000002E2F0FCFECE
:100460005E0C47CF8F67000707033038300000006D
:100470007A30E0F0F0E000E0E4CC1800000000008A
:100480000000000000000000000000007FFF7F7FF0
:10049000000000000000000000000000F0F8FCFC7C
:1004A0003F1F0001030311DC09C10C0E0600000010
:1004B000FC980038F0E0F105F7E2F0003038180061
:1004C0001E3F7F7E3C3063773F1F1F07030F1F1FB8
:1004D0003C4600231E0CC6EEFCF8F8E0C0F0F8FC29
:1004E0003F3F1F070D06020204000000000000004D
:1004F000FEFAFCF0F0604040200000000000000028
:100500001E2300463C0C1B1F0F1F1F07030F1F1F3E
:100510003C7E7F3F1E06C3F7FEFCF8E0C0F0F8FC0F
:100520001F1D0F070502020204000000000000006A
:10053000FCFCFCF8F0C080804000000000000000DF
:10054000000000000000000804040C1F1F7FBFFF14
:1005500000000000000000408080C060C0F0D8F8BB
:100560007F3F1F070F1F3F3F1F3F3C180C060F3FE9
:10057000F0E0C0B0F0F0F8FEF1E1623C0000008075
:10058000000000000000000000000000000000006B
:10059000000000000000000000000000000000005B
:1005A00001070F0F1F1F1F0E0C0000C1E363214046
:1005B000C0F0F8F8FCFCFC7830000083870602816C
:1005C000000000000000000000000000000000002B
:1005D000000000000000000000008000000000009B
:1005E00001070F0F1F1F1F0E0C0000C1E363214006
:1005F000C0F0F8F8FCFCFC7830000083870602812C
:1006000000000000000000000300020000000000E5
:1006100000000000000000000080800000000000DA
:1006200001070F0F1F1F1F1301000030381C0408A3
:10063000C0F0F8F8FCFCFCCC840000181830201046
:1006400000000000000000000300020000000000A5
:10065000000000000000000000808000000000009A
:1006600001070F0F1F1F1F0E0C0000C1E363214085
:10067000C0F0F8F8FCFCFC783000008387060281AB
:10068000000000000000000000000000000000006A
:1006900000000000000000000000183C3C7C7E7E52
:1006A000000000010103030307070707030301001C
:1006B0007EFCFCFCB8F8F0F0E0E0E0E0C0C08000B8
:1006C0000000000000000000000000000003070719
:1006D00000000000000000000000000000E0F0F05A
:1006E0000F1F1F1F0F03000000000000000000008C
:1006F000F8FCFCFCF82000000000000000000000F6
:1007000000000000000000000000000000000000E9
:1007100000000000000000000000000000000000D9
:10072000061F3F3F3F3F0F0707000000000000008B
:1007300040F0F8F8F8F8F0E0C00000000000000019
:1007400000000000000000000000000000000000A9
:100750000000000000000000000000000000000099
:1007600008102060000000000000000000000000F1
:100770000000000600000000000000000000000073
:100780000000000000000000000000000000006009
:100790000000000000000000000000001008040637
:1007A0000000000000000000000000000000000049
:1007B0000100000000000000000000000000000038
:1007C000000000000000000000030F1F1F0F0701C2
:1007D00000000000000000000080E0F0F8F8FCFCE1
:1007E0000000000000000000000000000000000009
:1007F000FCFE767E7E7E7E7E7E7E7E7E3C3C18008B
:1008000000000000000000000000000000000003E5
:1008100000000000000000000000000000000000D8
:1008200007070F0F0F0F070607030303030100005D
:1008300080C0C0C0C0E0E0E0F0F0F0F0E0E0C00058
:1008400000000000000000000000000000000000A8
:100850000000000000000000000000000000000098
:100860000000000000000000000000000000000088
:100870000000000000000000000000000000000078
:100880000000000000000000000000000000000068
:100890000000000000000000000000000000000058
:1008A0000000000000000000000000000000000048
:1008B0000000000000000000000000000000000038
:1008C0000000000000000000000000000000000028
:1008D0000000000000000000000000000000000018
:1008E0000000000000000000000000000000000008
:1008F00000000000000000000000000000000000F8
:1009000000000000000000000000000000000000E7
:1009100000000000000000000000000000000000D7
:1009200000000000000000000000000000000000C7
:1009300000000000000000000000000000000000B7
:1009400000000000000000000000000000000000A7
:100950000000000000000000000000000000000097
:100960000000000000000000000000000000000087
:100970000000000000000000000000000000000077
:100980000000FFFFFFFFFFFFFF000000000000006E
:100990000000FFFFFFFFFFFFFF000000000000005E
:1009A000000000000080C0E0F0783C1E0F0703014B
:1009B0000000000000000000000000000080C0E017
:1009C0000000FFFFFFFFFFFFFF7F3F1F0F07030137
:1009D00000FF7FBFDFEFF7FBFDFEFFFFFFFFFFFF25
:1009E0000000000000000000000000000000000007
:1009F000FF7F3F1F0F070301000000000000000001
:100A000000FFFFFFFFFFFFFFFFFF7FBFDFEFF7FBF1
:100A100000FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF4
:100A2000FDFEFFFFFFFFFFFFFF7F3F1F0F070301DB
:100A3000FEFE7EBEDEEEF6FAFCFCFCFCFCFCFCFCE2
:100A400000000000000000000000000000000000A6
:100A5000F0783C1E0F0703010000000000000000BA
:100A60000000000000000000000000000000000086
:100A70000000000000000000000000000000000076
:100A8000000000000080C0E0E0E0E0E0E0E0E0E046
:100A90000000000000000000000000000000000056
:100AA000E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E046
:100AB0000000000000000000000000000000000036
:100AC000000000000000FFFFFFFFFFFFFFFFFFFF30
:100AD00000000000000000F0FFFFFFFFFDFFE3EF5C
:100AE000FFFFFFFFFEFEFFFFFFFFFFFCF000000027
:100AF000DFDFBF7F7F79E7FFFFFF1F0703010100F3
:100B00000000000000000000C0FFFFFFFFFFFEF834
:100B100000000000000000007FFFFFFFF0800000E9
:100B20000080C0F0FEFFFFFFFFFFF00000000000AC
:100B3000000000000080E3FFF9000000000000005A
:100B400000000000000018F8FCFDFFE000000000BD
:100B500000000000003E7FFFFCF0E00000071F3FA8
:100B60000001010F3F7FFFFFBF07000000000000F2
:100B7000FFFFFFFFFFFFFFFFFFFC0C000000030F64
:100B8000000000000000C0FF1F030000FFFFFFFF88
:100B900000000000000000F8FFFFCF00FFFFFFFF94
:100BA000FFFFFFFFFFFEF8E0000103071F7FFFFFCD
:100BB000FFFFFFF8C00000017BFFFFFFFFFFFFFF0B
:100BC000000000000000000FFFFFFF00FFFFFFFF1D
:100BD000000000000000C0FFFFFFFF3F00E0E0E377
:100BE000FFFF1F3F7F7FFFFFFFFFFFFFFFFFFFFFB5
:100BF000FFDFCFCFE7F3F0E0CFFFFFFFFFFFFFFF07
:100C0000000000000000FFFFFFFEFFFF001F7FFF4E
:100C100000000000001FFFFFFF01C0E000FFFFFF1A
:100C2000FFFFFFFFFF00033FFFFFFFFEF9E7FFFFAE
:100C3000FFFFFCE00000FEFFFFFFFF3EFCF3FFFFB5
:100C4000000000033FFFFFFFFFFCF80000FEFFFF76
:100C5000000000F0FFFFFFFFFFFF0000000080FF2B
:100C6000FF3F03030100000387C0C0000000000035
:100C7000FFFFFFFFFFF0C080000000000000000049
:100C8000000000FFF9FEFFFFF0000000000000F38D
:100C90000000FFFFFF0FF1000000000F3F7FFFFF8C
:100CA000FFFFFFF000000000000000000000000057
:100CB000FFFC000000000103030F1F1F3F7F7F7F29
:100CC0000001FFFFFFFFFF1F00007FFFFFFFFFFF8F
:100CD0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE15
:100CE000E1030F1F7FFFFFFFFFFFFFFFFFFFFFFF7E
:100CF000FEFCF8F8F0F0F0F0F0F0FEFFFFFFFFFF71
:100D0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FF3
:100D1000FFFFFFFFFFFFFFFDB93141E0F0F0F8F802
:100D20005F1F0F0F07010000031F3FFFFFFFFFFFC3
:100D3000FCFCFDF9F1830371FCFCFEFFFFFFFFFFEC
:100D4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3
:100D5000FFFFFFFFBFFFFFFFFDF1F8FCFEFFFEC03E
:100D6000FFFFFFFFFFFFFFFFFF3F0F8080E0F8FF67
:100D700000FCFFFFFFFFFFFFFFFFFF3F7F0F030FA1
:100D8000C0C0C0C0E0E0E1E7FFFFFFFFFFFF3F1D85
:100D9000FF7F3F3F1F1FCFEFFFFFFFFFFFF1F3C7B5
:100DA000000000C0C0E0F0FCFEFEFEFCFCFCF8C051
:100DB0000F0F0F07070703030301000000000000E7
:100DC00000000000000000000000000103070F1FEA
:100DD00000000000000000000F1F7FFFFFFFFFFF6B
:100DE0001F3F7FFFFFFFFFFFFFFFFFFF1F0FC7C377
:100DF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
:100E000000FFFFFFFFFFFFFFFFFEFDFBF7EFDF30FF
:100E100000FEFDFBF7EFDFBF7FFFFFFFFFFFFF00DF
:100E2000FFFFFFFFFFFFFF000000000000000000C9
:100E3000FFFFFFFFFFFFFF000000000000000000B9
:100E4000E0FFFFFFFFFFFFFFFFFFFFFFFFFFFF00D0
:100E5000000080E0F8FEFFFFFFFFFFFFFFFFFF0045
:100E6000FFFFFFFFFFFFFF00000000000000000089
:100E7000FFFFFFFFFFFFFF00000000000000000079
:100E800001010101010181E1F9FDFBF7EFDFBF7F06
:100E9000FCFCFCFCFCFCFCFCFCFCFCFCFCFCFC008E
:100EA000FEFCF8F0E0C08000000000000000000040
:100EB0000000000000000000000000000000000032
:100EC0000000000000000000000000000000000022
:100ED00000000000000000000103070C18337777C2
:100EE0000000000000000000000000000000000002
:100EF000773B3F1F1F0F0F0F1F1F3C3C387878F0C8
:100F000000000000000000000000000000000000E1
:100F100000000000000000000000000000000307C7
:100F200000000000000000000000000000000000C1
:100F300004040E1F3F3F7F7F3F0F07070707071F70
:100F400000000000000000000000000000000000A1
:100F5000000000000000000000000001070E1C3926
:100F60000000000000000000000000000000000081
:100F7000333331180F070F1E3C3E0F0301010000F1
:100F80000000000000000000000000000000000061
:100F90000000000000000000000000000000030747
:100FA0000000000000000000000000000000000041
:100FB00007060E1C38716363676773323038183F59
:100FC0000000000000000000000000000000000021
:100FD00000000000000000000F3E7C78F8F1E3E61E
:100FE0000000000000000000000000000000000001
:100FF000FCFC7E3F3F1F0F3F7FF0F0F0F8FC3CFC15
:1010000038050F1F0F1D0F07030001010000010726
:1010100007EEFCFCEEFCFFFFFFFFFF9FC160E1F766
:10102000E0100000000080C0E0E0C08080C0E0F080
:1010300000000000000000000000000000000000B0
:1010400038053F1F0F1F0F07070D3C6643231E0087
:1010500007EEFCFCEEFCFFFFFFFFFF6743231E00D3
:10106000E0100000000080C0E0E0C0800000000050
:101070000000000000000000000000000000000070
:10108000700B183F1F3F1F0F0700000000000000FB
:101090000FDC78F8DCF8FFFFFFFF7F6F3F3F3F1E5C
:1010A000C020000000000080C0C080DEFFFF7E3C4A
:1010B0000000000000000000000000000000000030
:1010C00000000000003C46868C7D190D07030001DE
:1010D000788C00463C180C7CFEFFFFFEFC78FEFF7F
:1010E0003F7F6F3F0F1B0C0404080000000000004E
:1010F000F8FCF4F8E0E0C080804000000000000050
:101100000000000000003C7EFEFD7D07060001039C
:1011100078FCFE7E3C06027BFFFEFEFCFC78FEFFB8
:101120003F3F3B1F0F0B05050508000000000000B6
:10113000F8F8F8F8F0E080000080000000000000FF
:10114000000103000000000000000000000000009B
:1011500073FFFFDF1F0F03070F3F7F6330183CFE55
:10116000CEFFFFFBF8F0C0F6FEFCFEFF7F3E000066
:101170000080C0000000000000000000000000002F
:10118000601F7FFF7FFF7F3F1F0F1F190C061E7F11
:101190001E71E0E060C0F8FCFEFEF8F0180C1E7F47
:1011A000601F7FFF7FEF4703010103151C061E7FB1
:1011B0001E71E0E060C0F8FCFEFEF8F0180C1E7F27
:1011C000000000000000000000000000000000001F
:1011D000000000387D75302A00000000000000008B
:1011E000000000E0F070E0000000000000000000DF
:1011F00000000000000000000000000000000000EF
:1012000000000307070300000000000000000000CA
:1012100000008EDF570EA00000000000000000005C
:1012200000000000000000000000000000000000BE
:1012300000000000000000000000000000000000AE
:10124000000000010100000100010000000000009A
:101250000000E3F7D5C3A800800080400000000034
:10126000000080C0C08000000000000000000000FE
:10127000000000000000000000000000000000006E
:10128000000000000000000201000000000000005B
:10129000000000000304387D7538020000000000E3
:1012A000000000000000000000000000000000003E
:1012B000000E0F07060800000000000000000000FC
:1012C000000000000000000201000000000000001B
:1012D000200020000204387D753802000000000064
:1012E00000000000000000000000000000000000FE
:1012F000000E0F07060800000000000000000000BC
:101300000071FBEA611400000040200000000000B2
:1013100000C0E0E0C000000000000000000000008D
:101320000071FBCA611400000040200000000000B2
:1013300000C0E060C00000000000000000000000ED
:101340000000000001010001010000000000000099
:10135000000036FFFFFFFFFFF1E00000000000008B
:1013600000000080C0C080C0C080000000000000FD
:10137000000000000000000000000000000000006D
:10138000000000000000000000000000000000005D
:101390000000000103010307070200000000000035
:1013A000000000FEFFFFFFFF1F0F0E000000000007
:1013B00000000000008080800000000000000000AD
:1013C0000000000101000101000000000000000019
:1013D0000036FFFFFFFFFFF1E0000000000000000B
:1013E000000080C0C080C0C080000000000000007D
:1013F00000000000000000000000000000000000ED
:101400000000061F3F3F1F3F3C1800000000000087
:101410000000C0F0F8F8F0F8F870000000000000DC
:10142000061F3F3F1F1F1F3F3C0C00000000000035
:10143000C0F0F8F8F0F0F0F8F83800000000000014
:1014400000000000000000030F07070F1F1F0F031D
:1014500000000000000000E0F0FCFCFCFCFCE0C030
:10146000000000000000000000000000000000007C
:10147000000000000000000000000000000000006C
:1014800000000000000000070F7F7F7F7F7F0F07B5
:101490000000000000000080E0F0F0E0C0C0E0804C
:1014A000000000000000000000000000000000003C
:1014B000000000000000000000000000000000002C
:1014C000001F3F7F7F7F3E3C0C00000000000000BB
:1014D00000E0F0E0F0F878302000000000000000AC
:1014E00000071F3F3F7F7F7E3E3C1800000000004A
:1014F00000C0F0F8DCFCFEFE7E7E7E7E7E3C1800A6
:1015000001010101010101010101010101010101CB
:10151000FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC0B
:1015200000000000000000000000000000000000BB
:101530000003377FF9F9FDF7717038381838707C7F
:10154000000000000000000000000000000000009B
:10155000000000000000000000000000000000008B
:10156000000000000000000000000000000000007B
:10157000000000000000000000000000000000006B
:101580000000000000000000000004070701000147
:1015900000000000000000000060C0E0C080C0C08B
:1015A000000000000000000000000000010000003A
:1015B000000000000000000000000000C00000006B
:1015C0000000000000000000000006030F070706EF
:1015D0000000000000000000000040C080C060204B
:1015E00000000000000000000000000001000000FA
:1015F00000000000000000000000000000000000EB
:101600000000000000000000000507030F130103A5
:1016100000000000101020008080C0E0C08080002A
:1016200000000000000000000000000000000000BA
:1016300000000000000000000000000000000000AA
:101640000000000000000004060F1F1F0F1F1E0CEB
:1016500000000000000000008080000080C040000A
:101660000000000000000000010000000000000079
:1016700000000000000000008000000000000000EA
:10168000000000000000000000000106010004034B
:1016900000000000000000001830F0F8E0301000FA
:1016A000000000000000000000000D1100040C0606
:1016B0000000000000000000001830F8F03020406A
:1016C000003F7F3F3F1F0F00000101000ACE04C012
:1016D00000F8FCFEFEFECC009CF8F0F902F3E1708D
:1016E0000000000000000000000000000C0E0C00D4
:1016F0000000000000000000020200000C0E0600C6
:101700000000000000000000000000000103FFFFD7
:10171000000000000101010307031D7EFFFFFFFF22
:101720000000000000000000000000000000003F7A
:10173000000000000000000000000000000007FFA3
:1017400000003F7F3F3F1F0F000101000A0EC40051
:101750000000F8FCFEFEFECC9CF8F0F802E3F1601D
:101760000000000000000000000000000000000079
:10177000000000000000000002020000C0E0600065
:10178000000000000000071F3F7F7F7F3E3C1800E5
:10179000000000000000F8FEFFFBFF1F0F0F07070F
:1017A0000000000000000000070707070303010016
:1017B0000080C0C0C0E0E0E0E0E0E0E0C0C0800049
:1017C0000000000000000000010307000703010003
:1017D000000000000000000080C0E000E0C08000C9
:1017E00000000103070F1F1F1F1F1F0F070301002A
:1017F000000080C0C0E0C0808080C0E0C0C0800029
:101800001F1F001E0B1600001F3F700F1F1C08003B
:10181000C0E07838687830F8FCEC90F0E0F07800C0
:101820000F0F03111B130103073F3A0F1F1C080082
:10183000E0F0FCE47CFCC898FCEC90F0E0F0780070
:101840000003071E3C3E1E1C0F07070A1F5F2E0EDB
:1018500000F8F8017BD66E0408F0E040C0C08000BC
:10186000000000000000000007030000000000006E
:1018700000000000000000008000000000000000E8
:1018800000030F3F3E3B1F1E0C070F143F5FFE7807
:1018900000F0F80C3C7C3838F0E0E0C0800000003C
:1018A000000000000000000007030000000000002E
:1018B00000000000000000008000000000000000A8
:1018C00000000000030300030102000000010707FD
:1018D00000000000F8FC0FC76DCF0670FCFCA8F0FC
:1018E0000000000000000000030C000000000000E9
:1018F0000000000000000000FCDC387078300000C0
:101900001F1F001E0B1660F0DF070303020E00000E
:10191000C0E07838687830E0F0E0D8F8F0707838D7
:1019200000000000000000000000000000000000B7
:1019300000000000000000000000000000000000A7
:101940000F0F001C160F1F3D330307070300000095
:10195000C0F0F878CB7FFFFFCE87078E0000000035
:101960000000000000C0C0000000000000000000F7
:101970000000000000000000000000000000000067
:101980000001030307070703030000607131608152
:1019900070FCFEFEFFFFFF9E0C0000C1C1808102B3
:1019A000000000000000000000000080C0C08000B7
:1019B0000000000000000000000000000000000027
:1019C00001070F0F1F1F1F1301000030381C0408F0
:1019D000C0F0F8F8FCFCFCCC840000181830201093
:1019E00001070F0F1F1F1F0E0C0000C1E3632140F2
:1019F000C0F0F8F8FCFCFC78300000838706028118
:101A00001C78F0F03913110303C6E2606000643CF7
:101A1000381E0F0F9CC888C0C06347060600263CCE
:101A2000000001070F0F03010160706060004C7837
:101A30000000C3810000993C183C3C662400000073
:101A4000000080E0F0F0C08080060E060600321E26
:101A50000000000000000000000000000000000086
:101A60001C78F0F03913110303C7E3616301643C90
:101A7000381E0F0F9CC888C0C0E3C786C680263CAE
:101A80001C78F0F03913110303C6E2606000643C77
:101A9000381E0F0F9CCB8FC6C660663C000000004E
:101AA00000784C006061774F0F03010100000000D7
:101AB0000000000000C3810000993C183C3C6624F3
:101AC000001E32000686EEF2F0C0808000000000AA
:101AD0000000000000000000000000000000000006
:101AE0003C64006060FCF8F0F03913110303060257
:101AF0003C260006063F1F0F0F9CC888C0C06040F0
:101B0000000000001C78F0F039D3F1636306663CF6
:101B100000000000381E0F0F9CCB8FC6C660663CCD
:101B2000003C64003030381000000000000000006D
:101B3000000000001C78F0F03913110303060200C6
:101B400000000000381E0F0F9CC888C0C060400015
:101B5000003C26000C0C1C080000000000000000E7
:101B600000000000000C1C3810004C780000000041
:101B70001C78F0F039131103030602000000000086
:101B8000381E0F0F9CC888C0C060400000000000D5
:101B9000000000000030381C0800321E0000000069
:101BA00000010307070707070607070707030100E8
:101BB0000080C0E0E0E0E0E0E0E0E0E0E0C08000E5
:101BC00000000000030F1F3B3F7F7E7E7E3C18001D
:101BD000000000E0F8FCFCF8F0000000000000004D
:101BE0000000000000030F1F3F7F7F7E3E3C180077
:101BF0000000000000FCFFBFFFFF0F07070301000C
:101C00000000000000000080C0E0E0E0C0C08000F4
:101C100000000000000000000000000000000000C4
:101C200000000000000000000000000000000000B4
:101C300000000000000000000000000000000000A4
:101C400000007FFF7F7F3F3F280018301900010907
:101C50000000F0F8FCFCFC9800F87CFCFA03F9F8B2
:101C60000000000000000000003318000000000029
:101C7000000000000002020000C00C1C0C0000006C
:101C800000007FFF7F7F3F1F000000000BCE05C0DC
:101C90000000F0F8FCFCFC9800C87CFCF800F8F9A7
:101CA000000000000000000000013038300000009B
:101CB000000000000000000000CC18000000000040
:101CC0000080800000000000000000003038180094
:101CD0000000000000000000000000003070300034
:101CE000A0A00F1FBFFF7F190C1F3F1F001F0F0772
:101CF0005050FEFFFEFEFCF880C0C08000808000D7
:101D0000008080000000000000000000181D04009A
:101D100000000000000000000000000040C0400083
:101D2000A0A0071FBFFF7F190C1F3F1F001F070345
:101D30005050FEFFFEFEFCF880C0C0800080800096
:101D40000080800000000000000000000307020087
:101D50000000000000000000000000000080000003
:101D6000A0A00F1FBFFF7F190C1F3F1F001F1900EE
:101D70005050FEFFFEFEFCF880C0C0800080800056
:101D8000008080000000000000000000101C08001F
:101D900000000000000000000000000060E0800083
:101DA000A0A00F1FBFFF7F190C1F3F1F001F1F0E9A
:101DB0005050FEFFFEFEFCF880C0C0800080000096
:101DC0003F7F3A351F0F000001010001001111088B
:101DD000F8FCFE7EFECC009CF8F0F805FFDAC09817
:101DE0003F7F353A1F0F000001010001001111086B
:101DF000F8FC7EFEFECC009CF8F0F805FFC2D8800F
:101E000000000000000000000000000000000000D2
:101E100000000000000000000000000000000000C2
:101E200000000000000000000000000000000000B2
:101E300000000000000000000000000000000000A2
:101E4000FFFFF7FFFFFFFFFFEFDFFFFFFFFF99F14E
:101E5000FFFFFFFFFFFBFFFFFFBFEFFFFFBF180705
:101E6000FFFFFFFFFFBFFFFFFFFDFFFFDFFD1801CB
:101E7000FFFDFFFFFFEFFFFFFFFFDFFFFFFF999871
:101E8000FFFFFFFFFFFFFFFFFFFF3F1F1F0F0F07BA
:101E9000FFFFFFFFFFFFFFFFFEF8E0E0E0E0E0F004
:101EA000FFFFFFFFFFFFFF3F0F07070303030101D2
:101EB000FFFFFFFFFFFDF8F8F0C0808080C0C0C0CA
:101EC000FF9F0F0F07070200000000000000000046
:101ED000FFFFFFF4E0C0C080000000000000000031
:101EE000FF7F230000000000000000000000000051
:101EF000FFFFFEE000000000000000000000000006
:101F0000000000000000000000718A0A122242F95D
:101F10000000000000000000008C52525252528C0F
:101F200000000000000000000011325292FA12116D
:101F30000000000000000000008C52525252528CEF
:101F40000000000000000000007942720A0A4A31D5
:101F50000000000000000000008C52525252528CCF
:101F6000000000000000000000314282F28A8A7105
:101F70000000000000000000008C52525252528CAF
:101F8000000000000000000000718A8A728A8A71D5
:101F90000000000000000000008C52525252528C8F
:101FA000000000000000000000314A4A4A4A4A315D
:101FB0000000000000000000008C52525252528C6F
:101FC0000000000000000000000000000000000011
:101FD00000000000000000000002060202020207EA
:101FE00000000000000000000000000000000000F1
:101FF0000000000000000000000E11010204081F94
:00000001FF

View File

@@ -0,0 +1,513 @@
:1000000000000000000000000000000000000000F0
:1000100000000000000000000000000000000000E0
:1000200000000000000000000000000000000000D0
:1000300000000000000000000000000000000000C0
:1000400000000000000000000000000000000000B0
:100050000000000000000000000000000000007030
:10006000000007070F070301010303030100010359
:100070007C3E1EFEFEFCA010900020E0C0E0E0E010
:100080000000000000000000000001030F0E0F0F31
:10009000000000000000000000C08080003CFCFC6C
:1000A00007030177630307070E0F0703070000002C
:1000B000FCF8C0E0F0FCFE0F070E9C8E060000006E
:1000C0000000000000000000000001030707070710
:1000D000000000000000000000C0E0C0808ECECF15
:1000E0000307EFCF070F0F1E383C1E0E1C00000049
:1000F0008E1CA0C0E0F0F83C1C387078380000007E
:10010000000000000000000000000000070F1F1F9B
:10011000000000000000000000000000CCFCF8F02F
:100120003F7F2F0F07071F3F2F131E3E00000000C9
:10013000F0F0E0C0E0F0E0E0F0F83818387870381F
:10014000000000000000000000001C7CF8F1FFFF30
:1001500000000000000000000000000000C0C0E03F
:100160007E3E7F7F3F1F1E1C38381C1E0E1C180051
:10017000C0067FFFDE8C00000000000000000000D1
:10018000000000000000000000000000000000006F
:1001900000000000000000000000000000C0E07847
:1001A0001E1F1F1F0FE7C7070F1F1C1E0F07030788
:1001B00038F8F8E0C080E7F3F8BC3C3800808000F5
:1001C000000000000000000000000000000000002F
:1001D0000000000000000000000000000060703C13
:1001E0000F0F0F0F0703736F1F3D3C1C0001010031
:1001F0001CFCFCF8E0C0F0E0F7FB3878F0E0C0E071
:1002000000000000000000000000000000000000EE
:10021000000000000000000000000000000000C01E
:1002200000001E1F1F1F0F0707E7CF1F3C183C7C55
:10023000E07838F8F8F0C080E0F7F3E0F0783C7C44
:100240000000000000000000000100050F071F0C67
:100250000000000000000000C0C0D4FEFFFEFBF163
:100260001C0E1C3E346070210307060303070600C2
:10027000F8FFFE6A00000086CE8703068E8F03001B
:10028000000000000000000060E06B3F3F3F1F3FA8
:10029000000000000000000003AFFFFEFCF6E2F0EB
:1002A0001F0F0200006071FBCB073E381C0C0000E2
:1002B000FEFC5400000000808000000000000000F0
:1002C00000000000000000000000051F3F7F3F7F8E
:1002D0000000000000000000000040FCFEFEFEECFC
:1002E0003F7FDBF960183038180C1E3E000000001C
:1002F000FCF8D0800000001038383C1C3870781CA6
:1003000000050F3F7F3F79397C1F0C0061C7870FC5
:100310000040F0F8F0F0E0F0F8FC3870FBDF8E0CF5
:1003200046603838180C0E070F0C00000000000063
:1003300000000000000000000000000000000000BD
:1003400000000000000A3F7F3F3F1E3E70F87C70B7
:10035000000000000080C0F0F8F07870183C1F0327
:10036000C0C46EEE5C180C0C07070E0C00000000F9
:10037000367A3C1C1830787C000000000000000039
:100380000000000000000000000A1F3F1F37230785
:1003900000000000000000000080E8FCF8FECCCE69
:1003A0003F3F7D6DC0E04C1EDEF870300000000065
:1003B000DCEEDF9B070E0638783C1C38F0E070302E
:1003C0000000000000000000000A1F3F1F37230745
:1003D00000000000000000000080E8FCF8FECCCE29
:1003E0003F3F7D6DC0E0441E3F381C0E3E3800008C
:1003F000DCEEDF9B070E06183C3E0E1C383E0E005E
:10040000000000000000000000000000020F1F0FAD
:10041000000000000000000000000000A0F0FCFE52
:100420000F070F1F3F1F0B01000B1F0C01000003E4
:10043000FC9E9C3EF81080C0C08060C080C0E0E0A0
:10044000000000000000000000000000070F1F1F58
:10045000000000000000000000000000E0F0F8F8DC
:100460001F0F1F3F1F0703070F1F0C000000000096
:10047000F8F8FCF8F0E0C0F8F8F000000000000028
:100480000000000000000000000000007FFF60602E
:10049000000000000000000000000000F0F8FCFC7C
:1004A0003F1F0001070F07000307030000000000C3
:1004B000FCF8F0F8FCFEFCF0C0E0C41E0C000000EC
:1004C0000000000000000307030301030103010013
:1004D000000000000000C0E0F0F0F0E0C0F0F0F834
:1004E0000000001834383C1C080000000000000028
:1004F000F87020083C5C3C38100000000000000050
:1005000000000000000003070000000000000000E1
:10051000000000000000C0F06000000040F0383C27
:10052000000000183D3C3C1C0800000000000000DA
:100530001C1C080000E060400000000000000000FB
:1005400000000000000000103878747820081C3E7D
:1005500000000000000000207078385830000000D3
:100560003E1F1F070F1E3F3F1F0F0000000000002F
:100570000000800000202000C0800000000000007B
:10058000000000000000000000000000000000006B
:1005900000000000000000000000000000800000DB
:1005A00001000000111F1F0E0C657D380C040408AB
:1005B000C0808080C4FCFC7830B3FF746060201081
:1005C000000000000000000000000000000000002B
:1005D000000000000000000000000080808000009B
:1005E00001000000111F1F0E0C657D380C0404086B
:1005F000C0808080C4FCFC7830B3FF746060201041
:1006000000000000000000000000000000000000EA
:10061000000000000000000000000080808000005A
:10062000010204040E1F1F1321397F4F0361402173
:10063000C020101038FCFCCC86B6FC600486820119
:1006400000000000000000000000000000000000AA
:10065000000000000000000000000080808000001A
:1006600001000000111F1F0E0C657D380C040408EA
:10067000C0808080C4FCFC7830B3FF7460602010C0
:10068000000000000000000000000000000000006A
:10069000000000000000000000FF7E3C3C0C707E6B
:1006A0000000000000000303070707000303070F13
:1006B0007EFC1C00000000C0E0E0E000C0C0E0F0F4
:1006C000000000000000000090900060F043070769
:1006D0000000000000000000090900060FE4F0F02F
:1006E0000F1F1F1F0F030000010300000404000080
:1006F000F8FCFCFCF820000080C080008080000036
:1007000000000000000000000202000307030000D8
:1007100000000000000000004040000080000000D9
:10072000061F3F3F3F3F0F070760F040004848006B
:1007300040F0F8F8F8F8F0E0C0020F0600242400BA
:100740000000000000000000000000000000001C8D
:100750000000000000000000000000381C3C0C0EEF
:10076000302F1F1F67F0E0400000183E000000001F
:1007700006F7FBF9E70F0E0400000000387C7C3818
:100780000000000000000054383C387060EFDF9F2C
:100790000000000000000000002A1C3C0CF6FAF8E3
:1007A000E7F07020000000001C3E3E1C000000002E
:1007B000E60F07020000187C0000000000000000A7
:1007C000000000000000000020313D3D3B3B332194
:1007D00000000000000000000080E0F0F8F8FCF0ED
:1007E0000000000000000000000000000000000009
:1007F000C000000000007E7E7E7E7E003C3C7EFFCE
:1008000000000000000000000000000000001F0FBA
:100810000000000000000000000000000000E0C038
:100820000706010F0F0E000000030303000103077A
:100830008000C0C0C000000070F0F08060E0F0F800
:1008400000000000000000000000000000000000A8
:100850000000000000000000000000000000000098
:100860000000000000000000000000000000000088
:100870000000000000000000000000000000000078
:100880000000000000000000000000000000000068
:100890000000000000000000000000000000000058
:1008A0000000000000000000000000000000000048
:1008B0000000000000000000000000000000000038
:1008C0000000000000000000000000000000000028
:1008D0000000000000000000000000000000000018
:1008E0000000000000000000000000000000000008
:1008F00000000000000000000000000000000000F8
:1009000000000000000000000000000000000000E7
:1009100000000000000000000000000000000000D7
:1009200000000000000000000000000000000000C7
:1009300000000000000000000000000000000000B7
:1009400000000000000000000000000000000000A7
:100950000000000000000000000000000000000097
:100960000000000000000000000000000000000087
:100970000000000000000000000000000000000077
:1009800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
:1009900000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
:1009A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
:1009B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47
:1009C00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36
:1009D000000080C0E0F0F8FCFEFFFFFFFFFFFFFF1C
:1009E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
:1009F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07
:100A00000000000000000000000080C0E0F0F8FCE2
:100A100000000000000000000000000000000000D6
:100A2000FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
:100A3000000080C0E0F0F8FCFEFEFEFEFEFEFEFEC2
:100A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
:100A5000FFFFFFFFFFFFFFFFFFFDFFFFFFFFFDFFAA
:100A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
:100A7000FFFDFFFFFFFFFDFFFFFDFFFFFFFFFDFF8E
:100A8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76
:100A9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
:100AA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56
:100AB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
:100AC000000000000000FFFFFFFFFFFFFFFFFFF03F
:100AD00000000000000000F0FFFFFFFFFDFFE30F3C
:100AE0000000000000000100000000000000000005
:100AF0001F1F3F7F7F78E000000000000000000023
:100B00000000000000000000C0FEF8F0C1C70F7F29
:100B100000000000000000007E78077FFFFFFFFF5D
:100B20000F8FCFFFFF7F3F1F00000FFFFFFFFFFF73
:100B3000FFFFFFFFFFFFFF0301F0F0E1C3C7CFCFCF
:100B400000000000000018E00001FFFFEFEFEFEFF2
:100B500000000000003E7FFFFFFFE0FFFFFFFFFF00
:100B6000F7FEFCF0C080F0FFFFFFFFFFFFFFFFFF7D
:100B7000FF7F1F00000000FFFFFFFFFFFFFFFCF0F3
:100B8000000000000000C0FFFFFF3FFFFFFFFCFF71
:100B900000000000000000F8FFFCF0F0DF3FFFFF66
:100BA000FFFFFFFF1F1D7FFFFFFEFCF8E08000003E
:100BB000FFFFFFFCFCF0F0E0800000000000000000
:100BC000000000000000000FC0000000FFFFFFFC5D
:100BD000000000000000C0FF0000000000800003D3
:100BE00010E7080000000000000000000000000006
:100BF0003FDF0F0F070300010000000000000000AE
:100C0000000000000000FFFE00000000001F7FFF4A
:100C100000000000001FFC000000000003FFFFFFB9
:100C2000FFFFFFFFFFFFFCC00000000106180000EF
:100C3000FFFFFCE000000000000000C1030C00000A
:100C4000000000033CC00000000307FFFFFFFFFFA0
:100C5000000000F0000000000000FFFFFFFFFFFFAA
:100C6000FF3F00000000000000070F1F7FFFFFFF95
:100C7000FC800000000F3F7FFFFFFFFFFFFFFFFF33
:100C8000000000FF010000000FFFFFFFFFFFFFFF5C
:100C90000000FFFFFF0F01FEFFFFFFFFFFFFFFFF51
:100CA0000F0F1F3FFFFFFFFFFFFFFFFFFFFFFFFFD4
:100CB000FFFFFFFFFFFFFEFCFCF0E0E0C080808054
:100CC0000000F0E18FFFFF008080FFFFFFFFFFFECD
:100CD0006F3F7FFFFFFEE00000FFFFFFFFFE800190
:100CE000FEFCF0E0800000000000000000000000BA
:100CF0000103070707070F0F0F0F01000000000097
:100D0000FFFFFFFCE000000000FFFFFFFF7FFFFF91
:100D1000F081070F0F1F1F3D393141E0F0F0F8F867
:100D2000FFFFFFFFFFFFFFFFFCE0C0000103070024
:100D3000FDFDFEFEFEFCF0801C3C7EFFFFFEC000C1
:100D4000FFFFFFFFFFFFFDF9FFFFFF78000000003E
:100D5000DFEEECE0A0E0E0E0E0E0C000000000003A
:100D60000000000000000000000000808000000083
:100D70000000000000000000000000000000000073
:100D800007030100000000000000000000004060B8
:100D90000080C0C0E0200000000000000001030748
:100DA0007F7F3F3F3F1F0F03010101030303073F05
:100DB0000F8FEFF7F7F7FBFBFBFFFFFFFFFFFFFFD7
:100DC00000000000000000000000000103070F1FEA
:100DD00000000000000000000F1F7FFFFEFEFCFC73
:100DE0001F3F7FFFFFF9FFFFE0C000006070888CAD
:100DF000F8F0E0C0C08080000000000000000000AB
:100E0000FF00000000000000000103070E1C38FF77
:100E1000FF0103070E1C3870E0C08000000000FFD7
:100E2000FFFFFFFFFFFFFFFF0000000000000000CA
:100E3000FFFFFFFFFFFFFFFF0000000000000000BA
:100E4000FFC080000000000000000000000000FF64
:100E5000FFFF7F1F0701000000000000000000FFEF
:100E6000FFFFFFFFFFFFFFFF00000000000000008A
:100E7000FFFFFFFFFFFFFFFF00000000000000007A
:100E8000FFFBFFFFFFFF7B1F0703070F1F3F7FFFD6
:100E9000FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE72
:100EA000FFFEFCF8F0E0C080000000000000000041
:100EB0000000000000000000000000000000000032
:100EC0000000000000000000000000000000000022
:100ED0000000000000000000000000000000000012
:100EE0000000000000000000000000000000000002
:100EF00000000000000000000000000000000000F2
:100F000000000000000000000000000000000000E1
:100F100000000000000000000000000000000000D1
:100F200000000000000000000000000000000000C1
:100F300000000000000000000000000000000000B1
:100F400000000000000000000000000000000000A1
:100F50000000000000000000000000000000000091
:100F60000000000000000000000000000000000081
:100F70000000000000000000000000000000000071
:100F80000000000000000000000000000000000061
:100F90000000000000000000000000000000000051
:100FA0000000000000000000000000000000000041
:100FB0000000000000000000000000000000000031
:100FC0000000000000000000000000000000000021
:100FD0000000000000000000000000000000000011
:100FE0000000000000000000000000000000000001
:100FF00000000000000000000000000000000000F1
:101000000018302000000707030000000000000067
:10101000000103030100048FFE3C3C1C00000000A3
:1010200000E0F0C0800000000000408000000000F0
:1010300000000000000000000000000000000000B0
:101040000018002000020707030000000000000055
:10105000000103030100048EF87203010000000088
:1010600000E0F0C0800000000000008000000000F0
:101070000000000000000000000000000000000070
:101080000030674000040E0F070000000000000061
:10109000000387070300081EFC7C3E0000000000E0
:1010A00000C0E08000000000000000000000000020
:1010B0000000000000000000000000000000000030
:1010C0000000000000000000000000000000000020
:1010D0000000000000000078FC7E3E1E3C387E3E92
:1010E000010100003070707838100000000000002E
:1010F000F0F0E0401078B8787020000000000000A8
:1011000000000000000000000000000000000000DF
:101110000000000000000078F808000000081E072A
:1011200000000000307A79783810000000000000DC
:10113000783838100000C0C08000000000000000B7
:10114000000000000000000000000000000000009F
:101150000000000000000000000004030000000088
:101160000000000000000000000870C00000000047
:10117000000000000000000000000000000000006F
:10118000007080000010383C1F07030100000000C1
:10119000000E1E1C1C302070E0C0C0C0000000000B
:1011A0000070800000000004070103151800000013
:1011B000000E1E1C1C302070E0C0C0C000000000EB
:1011C000000000000000000101010100000000001B
:1011D00000000E3F7FFFFFD5BFC0BFDD0000070F3F
:1011E000000070FCFEFCF9F8FC1CF8F000009EBE4C
:1011F0000000000030F8FCDC0C1E0E1C000000009B
:1012000000000307070301030003070703010000B1
:1012100000E7FFFFFFFF5FFF01FFDF8FDF8F3C7EF7
:101220000000C0E0E0CCDEEEEEC7870E8E0C3C7E08
:1012300000000000000000000000000000000000AE
:101240000000000101000102030001010100000093
:101250000039FFFFFFFF57FF00FF778080C0070FB7
:1012600000C0F0F8F0E3E7F371E0C00100019EBEBA
:10127000000000000000C0E0E0C0C0E0E0C00000EE
:101280000E1C1E0C1C38391D1E1E0C010100000016
:101290000E000C060473FFFFFFFFFDFFC0FF7D780B
:1012A00000000000000000000000000F060007071B
:1012B000080E0F0F0E040E000E0C0000000080C080
:1012C000010303070E1C191D1E0E0C010100000076
:1012D000D080D81C0C73FFFFFFFFFDFFC0FF63072A
:1012E0000000000000000000000000000000787C0A
:1012F000080E0F0F0E040E000E0C08F06000000028
:101300001C7FFFFF7F2B7F007F3B41F0E0700103DC
:10131000E0F8FCFCF2F6FB3BF7E7E3F76306E0E0FE
:101320001C7FFFFF7F2B7F007F3C5EFFE67000008D
:10133000E0F8FCFCF2F7FB3BF767030703061E3EF1
:1013400000000000010100010100000C1E04006605
:10135000000000FDFFFFBFFFF1E000183C0800CCDB
:1013600000000080C0C080C0C08000183C1800335E
:10137000000000000000000000000000000000006D
:10138000000000000000000000000100000C000050
:10139000000000010301030707C2E3C701C01900F1
:1013A000000000F8FD7FFFFF1F0F0E80000080008F
:1013B00000000000008080800000003078300033A2
:1013C0000000000101000101000000060F04000CF4
:1013D0000000FDFFFFBFFFF1E000000C1E0C00CC81
:1013E000000080C0C080C0C080060F06000600C09C
:1013F000000000000000000000000000006000008D
:101400000000001F3F3F173F3C180060F34100CB36
:10141000000000B0F8F8F0F8F8700082C7830033DD
:10142000001F3F3F1F171F3F3C0C0060F34100CBE4
:1014300000B0F8F8F0F0F0F8F8380082C783003315
:1014400000000000000000030F0787CF9F1F2F231D
:10145000121200060F0200E0F0FCFCFCFCFCE0FCB9
:10146000000040C0400040400000000000000000BC
:10147000000000000000000000060F060024240009
:1014800024240060F06000070F7F7F7F7F7F0F07BD
:101490000000000000000989E0F3F7E3C0C0E0802D
:1014A0000000000000000000003078300012120040
:1014B000000001000000000000000000000000002B
:1014C00000072F7F7F7F3E3C0C00003078230066B2
:1014D00000E0F0E0F0F87E3F2660F62000300000EB
:1014E00000041C3E3E7F7F0E303C7EFF000000006B
:1014F0000000000000000E3E7E7E7E7E003C7EFFEF
:10150000FFFBFFFFFFFFFBFFFFFBFFFFFFFFFBFFFB
:10151000FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEEB
:1015200000000000000000000000000000000000BB
:1015300000000000000000000000000000000000AB
:10154000000000000000000000000000000000009B
:10155000000000000000000000000000000000008B
:10156000000000000000000000000000000000007B
:10157000000000000000000000000000000000006B
:101580000A1F3F1F3723073F5FFFDB7830061FBE70
:1015900080E8FCF8FECCCEDCE89C3E1603071A1C63
:1015A000000000000000000000000080F870300023
:1015B0000000000000000000000000003F73000079
:1015C000000A1F3F1F1F3D797BFFF9BCF06008191F
:1015D00000A0F0FCF8FCF8FCF8F8BC2E030782CC65
:1015E000000000000000808000000000DEF8703085
:1015F000000000000000000000000000EE7F33004B
:101600006AFF7F3F7F3F7F3F1F0A0000008CDEFCA8
:10161000A3F7FBF6EE6C1CBC7C7820000000008079
:1016200000000000004040C0CE010F0E0703000084
:101630000000000000000000E0C08000000000008A
:1016400003070F1F7F3F7F3BF9F0A00080000133AD
:101650000000A0F0F8F0F0F87C7C7C28000080C04E
:10166000004040C0C04000000E1C180C0E1E1800A8
:10167000000000000000000070381830707818007A
:1016800002070F070D08010FDFFF76B1CEFFFBC089
:10169000A0FAFFFEFFF3F3F7E6CE0E0703C7E6DE80
:1016A00002070F070D0881CFF7FDD00EDFFB733166
:1016B000A0FAFFFEFFF3F3F7FAE6CF0703C7CE9ECB
:1016C000003F7F30301F0F0000070F0700000101AF
:1016D00000F8FC7E7EFEFC78FCFEFFFE78C0E0C3D6
:1016E00000000000000000000000000003000000F7
:1016F00000000000000000000000000010000000DA
:1017000000000000000000000000000001030F3F87
:10171000000000000101010307031C7EFFFFFFDF43
:101720000000000000000000000000000000003F7A
:10173000000000000000000000000000000006FCA7
:1017400000003F7F30301F0F00030703000001013E
:101750000000F8FC7E7EFEFCFCFEFFFE78E0C0E2AE
:101760000000000000000000000000000300000076
:101770000000000000000000000000003000000039
:10178000000000000000071F3F7F7F0F303C7EFFFE
:10179000000000000000C0C0808080000003070738
:1017A0000000000000000000070707000303070F08
:1017B00000000000C0E0E0E0E0E0E000C0C0E0F0D9
:1017C000000000000000000F070300000003070FE7
:1017D00000000000000000F0E0C0000000C0E0F0E9
:1017E000000F0703000F1F0300031F0F0003070F65
:1017F00000F0E0C0C000C0800080C000C0C0E0F0C9
:101800000000001E1F1F1F4FC7C7030FDFFC7830EB
:10181000C0E07838F8F8F0C083E3F2F0ECFE7F0324
:10182000070703111F1F1F4FE1C1030FDFFC7830B3
:10183000E0F0FCFCFCFCF8F0F3E3F2F0ECFE7F03DC
:101840000063E76E0C070703010307CFDFDF2E0EEF
:101850000307030078F8F8F8F0E0E0C0C0C08000AB
:1018600000000000206060001F1F0E060000000046
:1018700000000000000000008000000000000000E8
:101880000063EF7F1E1F1F0F07070F1FBFDFFE78CC
:101890000687860030E0E0C080C0E0C08000000025
:1018A000000000002060E0C01F1F0E0600000000C6
:1018B00000000000000000008000000000000000A8
:1018C000000000000000000303030301001038784B
:1018D00000000000181C0FC7FFFFFEB81C3C78F08A
:1018E00000000000000000005F8C0F1F00000000DF
:1018F0000000000000000000FCDC3870783C1C3860
:101900000000001E1F1F1F0F07879C7C9E0E0F1FCD
:10191000C0E07838F8F8F0C080003878FC7E7F3B73
:1019200000000000000000000000000000000000B7
:1019300000000000000000000303000001000000A0
:101940000101001C1F38010343E3270703010303C0
:10195000C0F0F878FCFEFFFFCE87078EDEDF800048
:1019600000000000000020704000000000000000A7
:101970000000000000000000000000000000000067
:10198000000000000407070303393E180C04040894
:101990007020202071FFFF9E0C6C7E3C0C181008FC
:1019A000000000000000000000E0E0400000000037
:1019B0000000000000000000000000000000000027
:1019C000010204040E1F1F1321397F4F03614021C0
:1019D000C020101038FCFCCC86B6FC600486820166
:1019E00001000000111F1F0E0C657D380C04040857
:1019F000C0808080C4FCFC7830B3FF74606020102D
:101A00000006030346ECEEEE66060200103818C22C
:101A10000060C0C06237777766604000081C1843DA
:101A2000000000000000041E3C1800001038308642
:101A3000000000663C3C66C3E7E7666624000000E1
:101A400000000000000020783C180000081C0C6119
:101A50000000000000000000000000000000000086
:101A60000006030347EFEFEF67060200103818C2C5
:101A70000060C0C0E2F7F7F7E6604000081C1843BA
:101A80000006030346ECEEEE66060200103818C2AC
:101A90000060C0C062347070687C58430000000071
:101AA0000086303810000030303810000000000090
:101AB000000000000000663C3C66C3E7E766662461
:101AC00000610C1C0800000C0C1C08000000000049
:101AD0000000000000000000000000000000000006
:101AE000C21838100000060303060C0E0E0606028C
:101AF00043181C08000060C0C06030707060604017
:101B00000000000000060303462C0E0E163E1AC20B
:101B1000000000000060C0C062347070687C5843F0
:101B200000C218380800060F07010000000000007E
:101B30000000000000060303860C0E0E06060200DD
:101B4000000000000060C0C0613070706060400044
:101B50000043181C100060F0E0800000000000004E
:101B6000000000000703000020383086000000005D
:101B700000060303C6CC8E0E06060200000000001D
:101B80000060C0C0633371706060400000000000FE
:101B900000000000E0C00000041C0C610000000018
:101BA0000F07030007070700000007070003070FE0
:101BB000F0E0C000E0E0E0000000E0E000C0E0F0A5
:101BC000000000000301010020787E7E003C7EFFC3
:101BD000000002C6DEDEEEEEE602000000000000BD
:101BE0000000000000000C1E3E7F7F0E303C7EFF98
:101BF0000000000000000307070F0F070003070F96
:101C00000000000000000080C0E0E000C0C0E0F084
:101C100000000000000000000000000000000000C4
:101C200000000000000000000000000000000000B4
:101C300000000000000000000000000000000000A4
:101C400000007FFF60603F170003070301000707E4
:101C50000000F0F8FCFCFCF8F0FEFFFEF8F0F8FCE9
:101C60000000000000000000000F00000000000065
:101C7000000000000000000000F83000000000003C
:101C800000007FFF60603F1F0003070301000103A6
:101C90000000F0F8FCFCFCF8F0F8FCFCF8F0FEFEAC
:101CA0000000000000000000001F0C000000000009
:101CB000000000000000000000F000000000000034
:101CC0000000000000000000000000000C00000008
:101CD000000000000000000000000000C000000044
:101CE00000000F1F3F3F3F7FFF7F3F1F0F1F3F7FC2
:101CF0000000FEFF0606FCF8F0E0C0800080C0C0D7
:101D000000000000000000000000000007000000CC
:101D10000000000000000000000000008000000043
:101D20000000071F3F3F3F7FFF7F3F1F0F1F1F3FE9
:101D30000000FEFF0606FCF8F0E0C0800080808016
:101D4000000000000000000000000000040000008F
:101D50000000000000000000000000008000000003
:101D600000000F1F3F3F3F7FFF7F3F1F0F1F1F0FD1
:101D70000000FEFF0606FCF8F0E0C0800080800056
:101D80000000000000000000000000000E00000045
:101D900000000000000000000000000090000000B3
:101DA00000000F1F3F3F3F7FFF7F3F1F0F1F3F3F41
:101DB0000000FEFF0606FCF8F0E0C0800080C0E0F6
:101DC0003F7F30301F0F00000307070000000000B6
:101DD000F8FC7E7EFEFC78FCFEFFFD78F86030604B
:101DE0003F7F30301F0F0000030707000000000096
:101DF000F8FC7E7EFEFC78FCFEFFFD78F87020701B
:101E000000000000000000000000000000000000D2
:101E100000000000000000000000000000000000C2
:101E200000000000000000000000000000000000B2
:101E300000000000000000000000000000000000A2
:101E40000000080000000000100000040000003046
:101E50000000000000000000000010000000000072
:101E6000000000000000000000020004000000006C
:101E700000028000001000000000000000000000D0
:101E80000000000000000000000000000000000052
:101E90000000000000000000000000000000000042
:101EA0000000000000000000000000000000000032
:101EB0000000000000000000000000000000000022
:101EC0000000000000000000000000000000000012
:101ED0000000000000000000000000000000000002
:101EE00000000000000000000000000000000000F2
:101EF00000000000000000000000000000000000E2
:101F0000000000000000000000718A0A122242F95D
:101F10000000000000000000008C52525252528C0F
:101F200000000000000000000011325292FA12116D
:101F30000000000000000000008C52525252528CEF
:101F40000000000000000000007942720A0A4A31D5
:101F50000000000000000000008C52525252528CCF
:101F6000000000000000000000314282F28A8A7105
:101F70000000000000000000008C52525252528CAF
:101F8000000000000000000000718A8A728A8A71D5
:101F90000000000000000000008C52525252528C8F
:101FA000000000000000000000314A4A4A4A4A315D
:101FB0000000000000000000008C52525252528C6F
:101FC0000000000000000000000000000000000011
:101FD00000000000000000000002060202020207EA
:101FE00000000000000000000000000000000000F1
:101FF0000000000000000000000E11010204081F94
:00000001FF

View File

@@ -0,0 +1,513 @@
:1000000000000000000000000000000000000000F0
:1000100000000000000000000000000000000000E0
:1000200000000000000000000000000000000000D0
:1000300000000000000000000000000000000000C0
:1000400000000000000000000000000000000003AD
:10005000000000000000000000000000000000F0B0
:10006000030F00000C07030101020303010000005D
:10007000F8C6FE76FEFCA010900020E0C0E0000074
:10008000000000000000000000000103080F0B0F3B
:10009000000000000000000000C0FCFCFFC280C89F
:1000A00007030177620307070E0F06000000000038
:1000B000FCF8C0E050FCFE0F070600000000000046
:1000C0000000000000000000000001010607060615
:1000D000000000000000000000C0FCDC1F80C043E6
:1000E0000107EFCF010F0F1E383C18000000000081
:1000F0008E1CA0C020F0F83C1C380000000000005E
:1001000000000000000000000000000007000F1CBD
:10011000000000000000000000000000CC3CD8F00F
:100120003F78270F07071B3E2F1300000000000039
:10013000F070E0C0E0F0E040F0F838183818000047
:10014000000000000000000000001F3FC7FEDCFEB2
:10015000000000000000000000008080E00000605F
:100160007E3E7F792F1F1E1C38381C1800000000AF
:10017000C0067CF8D88000000000000000000000ED
:10018000000000000000000000000000001F1F7FB2
:1001900000000000000000000000000000C0E08837
:1001A0002100091F0FE7C7010F1F1C1E0F060000CB
:1001B000F8E8F8E0C080E773F8A000000000000055
:1001C000000000000000000000000000000F0F3FD2
:1001D00000000000000000000000000000E0F0C48B
:1001E0001000040F0703736E1F05000000000000DD
:1001F000FC74FCF8E0C0F080F7FB3878F060000099
:100200000000000000000000000000000000001FCF
:10021000000000000000000000000000000000C01E
:100220001F7F2100091F0F0707E4CF1F3C180000A4
:100230006088F8E8F8F0C080E097F3E0F07800001C
:1002400000000000000000000001000000000003AA
:100250000000000000000000C0C08000003E6D7F74
:1002600003011C3E346070210307060303070600E8
:100270003600804000000086CE8703068E8F030084
:10028000000000000000000060E0603038180C0E34
:100290000000000000000000030703007CDAFE6C91
:1002A0000F070200006071FBCF073E381C0C0000F6
:1002B000000000000000008080000000000000003E
:1002C000000000000000000000000000000000002E
:1002D00000000000000000000000000C1E0E060CD4
:1002E0000060D0F960183038180C1E3E0000000085
:1002F0000C1850800000001038383C1C3870781CF6
:10030000000000000000060603060C0061C7870F0E
:100310000000000070D8FC6C000040F0FBDF8E0C89
:1003200046603838180C0E070F0C00000000000063
:1003300000000000000000000000000000000000BD
:100340000000000000000000386CFDD903183C706C
:10035000000000000000000000008080183C1F0327
:10036000C0C46EEE5C180C0C07070E0C00000000F9
:10037000367E3C1C1830787C000000000000000035
:100380000000000000000000000000001F2D3F1BC7
:100390000000000000000000000000000080B030FD
:1003A0000020686DC0E04C1EDEF8703000000000D8
:1003B000204EDF9B070E0638783C1C38F0E070308A
:1003C0000000000000000000000000001F2D3F1B87
:1003D0000000000000000000000000000080B030BD
:1003E0000020686DC0E0441E3F381C0E3E380000FF
:1003F000204EDF9B070E06183C3E0E1C383E0E00BA
:100400000000000000000000000000000000000EDE
:1004100000000000000000000000000000000000DC
:100420001B3F360000010301000B1F0D01000003FC
:10043000006060C0800080C0C0C0E0C080C0E0E05C
:10044000000000000000000000000000070F1F1F58
:10045000000000000000000000000002E7F7FEFEC0
:100460005CE8E7CFEF670007070330383C1E3C30FD
:100470003E14E0F0F0E000E0E4CC7C7E0000000000
:100480000000000000000000000000007F010000EC
:10049000000000000000000000000000F0F8FCD4A4
:1004A0003F000001030319FC79E10C0E1F3F00001F
:1004B0005C880038F0E0F307FFFEF80030387CFC81
:1004C0001E2763662C000307030301030103011CBD
:1004D0003C7E003F1E00C0E0F0F0F0E0C0F0F0F81D
:1004E0003E361C000000000000000000000000007C
:1004F000FA76240000000000000000000000000068
:100500001E3F007E3C0003070000000000000007C3
:100510003C7263331A00C0F06000000040F0383CC9
:100520000F0F0700000000000000000000000000A6
:100530009C9C08000000000000000000000000007B
:100540000000000000000000000000000048DCBEC9
:100550000000000000000000000000000070F8F83B
:100560003E1F1F070F1E3F3F1F0F00000000003FF0
:10057000700080000000001EFFFF7E3C0000008035
:10058000000000000000000000000000000000006B
:1005900000000000000000000000000000808080DB
:1005A00001000000111F1F3F7F7B71F1E3632140B9
:1005B000C0808080C4FCFCFEFFCFC7C787060281D5
:1005C000000000000000000000000000000000002B
:1005D000000000000000000000008080808080801B
:1005E00001000000111F1F3F7F7B71F1E363214079
:1005F000C0808080C4FCFCFEFFCFC7C78706028195
:1006000000000000000000000300020000000000E5
:10061000000000000000000000808080808080805A
:10062000010204040E1F1F1F1F1E1C3C381C04085F
:10063000C020101038FCFCFCFC78707818302010BA
:1006400000000000000000000300020000000000A5
:10065000000000000000000000808080808080801A
:1006600001000000111F1F3F7F7B71F1E3632140F8
:10067000C0808080C4FCFCFEFFCFC7C78706028114
:10068000000000000000000000000000000000006A
:1006900000000000000000000000000000707E7EEE
:1006A0000000000101030303070707070000000023
:1006B0007EFCFCFCF8F8F0F0E0E0E0E00000000078
:1006C00000000000000000000060F00000337F7FA9
:1006D000000000000000000000060F0000E3FFFF24
:1006E0003F1F1F1F0F03010000000307030000004E
:1006F000FEFCFCFCF8E0E0E04000008000000000B0
:1007000000000000000000000001030000000303DF
:1007100000000000000000000080C0800080C0C019
:10072000071F3F3F3F3F3F7F7F1000307830000082
:10073000C0F0F8F8F8F8FCFEDE0C00183C180000D9
:100740000000000000000000000000000000001C8D
:100750000000000000000000000000381C3C0C0EEF
:10076000383F3F7F7FFFFF7F3F3F070000000000D3
:1007700006F7FBFFFFFFFEFCFCFCFCF8400000005E
:100780000000000000000054383C387060EFDFFFCC
:100790000000000000000000002A1C3C1CFEFEFEC1
:1007A000FFFF7F3F3F3F3F1F0200000000000000AF
:1007B000FFFFFFFEFCFCE000000000000000000066
:1007C000000000000000000000030303070707010A
:1007D00000000000000000000080E0F0F8F8FCFCE1
:1007E0000000000000000000000000000000000009
:1007F000FCFE7E7E7E7E7E7E7E7E7E7E0000000013
:1008000000000000000000000000000000000000E8
:1008100000000000000000000000000000000000D8
:1008200000010F0F0F0F070707030303030000006A
:1008300000C0C0C0C0E0E0E0F0F0F0F080000000D8
:1008400000000000000000000000000000000000A8
:100850000000000000000000000000000000000098
:100860000000000000000000000000000000000088
:100870000000000000000000000000000000000078
:100880000000000000000000000000000000000068
:100890000000000000000000000000000000000058
:1008A0000000000000000000000000000000000048
:1008B0000000000000000000000000000000000038
:1008C0000000000000000000000000000000000028
:1008D0000000000000000000000000000000000018
:1008E0000000000000000000000000000000000008
:1008F00000000000000000000000000000000000F8
:1009000000000000000000000000000000000000E7
:1009100000000000000000000000000000000000D7
:1009200000000000000000000000000000000000C7
:1009300000000000000000000000000000000000B7
:1009400000000000000000000000000000000000A7
:100950000000000000000000000000000000000097
:100960000000000000000000000000000000000087
:100970000000000000000000000000000000000077
:10098000FF00000000000000FFFFFFFFFFFFFFFF70
:10099000FF00000000000000FFFFFFFFFFFFFFFF60
:1009A000FFFFFFFFFF7F3F1F8FC7E3F1F8FCFEFF54
:1009B000FFFFFFFFFFFFFFFFFFFFFFFFFF7F3F1F67
:1009C000FF0000000000000080C0E0F0F8FCFEFF27
:1009D000FF00000000000000000000000000000018
:1009E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
:1009F00080C0E0F0F8FCFEFFFFFFFFFFFFFFFFFFFE
:100A0000FF000000000000000000000000000000E7
:100A1000FF010101010101010101010101010101C8
:100A2000000000000000000080C0E0F0F8FCFEFFC5
:100A300001010101010101010101010101010101A6
:100A4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6
:100A50008FC7E3F1F8FCFEFFFFFFFFFFFFFFFFFF83
:100A6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96
:100A7000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86
:100A8000FFFFFFFFFF7F3F1F9F9F9F9F9F9F9F9F96
:100A9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66
:100AA0009F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F56
:100AB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46
:100AC0000000000000000000000000000000000F17
:100AD00000000000000000000000000002011FFFF5
:100AE000FFFFFFFFFFFF3F07030000030FFFFFFFB4
:100AF000FFFEFCFCFEFEF8C08000E0F8FFFFFFFFF9
:100B000000000000000000000001070F3EF8F18720
:100B100000000000000000000080F8800F7FFFFF51
:100B2000FF7F3F0F010000003F7FFFFFFFFFFFFF40
:100B3000FFFFFFFFFF7F1CFCFEFFFFFFFFFFFFFF2C
:100B400000000000000000000001001FFFFFFFFF89
:100B500000000000003E7FFFFFFF1FFFFFF8E0C026
:100B6000FFFEFEFFFFFF0F0040F8FFFFFFFFFFFF4C
:100B700000000080FFFFFF000003F3FFFFFFFCF019
:100B8000000000000000C080E0FCFFFF000000004B
:100B90000000000000000000000030FF0000000026
:100BA000000000000001871FFFFFFFFFE080000042
:100BB000000000073FFFFFFEFCF8FFFF00030000FE
:100BC000000000000000000F000000FF0000000314
:100BD000000000000000C0F0000000C0FF7FFFFF29
:100BE0000F18F0C0808000000000FFFFFFFE000033
:100BF000FF3F3F3F1F0F0F1E3FFFF8F8F0000000C0
:100C0000000000000000000000010000FFFFFFFFE7
:100C1000000000000000000000FE3F1FFFFFFFFF7C
:100C2000FFFFFFFFFF00033FFFFF3F01061800002B
:100C3000FFFFFFFFFFFFFFFFFCF8C0C1030C000038
:100C40000000000000000000000307FFFF0100009B
:100C500000000000000000000000FFFFFFFF7F0019
:100C600000C0FCFCFEFFFFFC783F3FFFFFFFFFFFE3
:100C700000000000000F3F7FFFFFFFFFFFFFFFFFAF
:100C800000000000060100000FFFFFFFFFFFFF0C48
:100C90000000000000F00EFFFFFFFFF0C08000002A
:100CA0000000000FFFFFFFFFFFFFFFFFFFFFFFFF41
:100CB0000003FFFFFFFFFEFCFCF0E0E0C08080804F
:100CC00000010F1E700000E0FFFF80000000000028
:100CD00010C08000000000000000000000000001C3
:100CE0001EFCF0E080000001070F1F1F3F7FFFFF89
:100CF000010307071F3F7FFFFFFFFFFFFFFFFFFF0E
:100D000000000000000000000001070F3F7FFFFF10
:100D10000001070F0F1F1F3F7FFFFFFFFFFFFFFFB8
:100D2000FFFFFFFFFFFFFFFFFFFFFFFFFEFCF8FFDE
:100D3000FEFEFFFFFFFFFFFFE3C3810000013FFF57
:100D4000FFFFFFFFFFFFFFFFFFFFFF780000000036
:100D5000DFEEECE0E0E0E0E0E2EEC7030100013F9F
:100D6000001FFFFFFFFFFFFFFFFFFF7F7FFFFFFF72
:100D7000FFE3C0F8FCFFFFFFFFFFFFFFFFFFFCF0FA
:100D80003F3F3F3F1F1F1F1F1F1F3F3F7F7FFFFF33
:100D90000080C0C0E0E0F0F0FCFEFEFEFEFFFFFFC2
:100DA000FFFFFF3F3F1F0FE3FDF9F9FBF383073F11
:100DB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43
:100DC00000000000000000000000000103070F1FEA
:100DD00000000000000000000F1F7FFFFEFEFCFC73
:100DE0001F3F7FFFFFF9FFFFE0C00000A090B8BCED
:100DF000F8F0E0C0C08080000000000000000000AB
:100E0000FFFFFFFFFFFFFFFFFFFEFCF8F1E3C7005E
:100E1000FFFEFCF8F1E3C78F1F3F7FFFFFFFFF00DE
:100E200000000000000000000000000000000000C2
:100E300000000000000000000000000000000000B2
:100E40009F3F7FFFFFFFFFFFFFFFFFFFFFFFFF0051
:100E5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00A1
:100E60000000000000000000000000000000000082
:100E70000000000000000000000000000000000072
:100E8000FFFFFFFFFFFFFFFFFFFCF8F0E0C0800067
:100E90000101010101010101010101010101010142
:100EA0000000000000000000000000000000000042
:100EB0000000000000000000000000000000000032
:100EC0000000000000000000000000000000000022
:100ED0000000000000000000000000000000000012
:100EE0000000000000000000000000000000000002
:100EF00000000000000000000000000000000000F2
:100F000000000000000000000000000000000000E1
:100F100000000000000000000000000000000000D1
:100F200000000000000000000000000000000000C1
:100F300000000000000000000000000000000000B1
:100F400000000000000000000000000000000000A1
:100F50000000000000000000000000000000000091
:100F60000000000000000000000000000000000081
:100F70000000000000000000000000000000000071
:100F80000000000000000000000000000000000061
:100F90000000000000000000000000000000000051
:100FA0000000000000000000000000000000000041
:100FB0000000000000000000000000000000000031
:100FC0000000000000000000000000000000000021
:100FD0000000000000000000000000000000000011
:100FE0000000000000000000000000000000000001
:100FF00000000000000000000000000000000000F1
:1010000000000C181810070703000000000000077C
:101010000000387C7C38048FFE3C3C1C000000F74C
:10102000000000000000000000004080000000F010
:1010300000000000000000000000000000000000B0
:1010400000000C181812070703003C7E7F3F1E00AB
:101050000000387C7C38048EF8723F7F7F3F1E0092
:101060000000000000000000000000800000000000
:101070000000000000000000000000000000000070
:101080000000183030240E0F0700000000000000A0
:10109000000070F8F870081EFC7C3E0E0331331E11
:1010A00000000000000000000000001E87E3663C16
:1010B0000000000000000000000000000000000030
:1010C00000000000003C7EFEFC78000000000000F4
:1010D00078FC007E3C000078FC7E3E1E3C387E3E64
:1010E000397D7C3800000000000000000000000096
:1010F000F0F4EC48000000000000000000000000D8
:101100000000000000003C66C6E470000000000023
:1011100078E4C66238000078F808000000081E076E
:101120000E1F1F0E00000000000000000000000065
:1011300078383810000000000000000000000000B7
:10114000000000000000000000000000000000009F
:10115000000000000000000000000403000000FE8A
:101160000000000000000000000066C3673E0000B1
:10117000000000000000000000000000000000006F
:10118000000061C3C391383C1F0703010000007FCA
:101190000000C0E0E0C02070E0C0C0C00000007FE0
:1011A000000061C3C391383C1F1F3F3D1800007F02
:1011B0000000C0E0E0C02070E0C0C0C00000007FC0
:1011C000000000000000000101010100000000001B
:1011D00000000E3F7FF7FFF5BFDFBFDF0F0F0000FE
:1011E000000070FCFE7FFFFFFFFFFFFFFF3C0000E1
:1011F0000000000030F8FCDC8C1E8E9C000000001B
:1012000000000307070301030103000000000000C2
:1012100000E7FFFF77FF5FFFFFFFF170380C3C7EB8
:101220000000C0E0F8FCFEFEFEFFFFFE4E0C3C7E20
:1012300000000000000000000000000000000000AE
:101240000000000101000103030101010100000091
:101250000039FFFFDDFFD7FFFFFFFFDF9FCF00005B
:1012600000C0F0F8FEFFFFFFF9F8FCFDF83D0000BC
:10127000000000000000C0E0E0C0C0E0E0C00000EE
:101280000E1C1E0C1C38391F1F1F0F0F070F0F07D6
:101290000E000C060777FFFFF7FFFDFFFFFFC58677
:1012A000000000000000000000000010010300002A
:1012B000080E0F070E040E0C0E0C00E0C08000009C
:1012C000010303070E1C191F1F0F0F0F07070F0F36
:1012D000F080F81C0E77FFFFF7FFFDFFFFFFFCF823
:1012E00000000000000000000000007D78F0000019
:1012F000080E0F070E040E0C0E0400000000000084
:101300001C7FFFEE7F2B7F3F7F7A66F7E371000043
:10131000E0F8FCFCFEFEFFFFFF3F1F0F83C600004E
:101320001C7FFFCE7F2B7F3F7F6361F0E07000006A
:10133000E0F8FC7CFEFFFFFFFFFFFFBF1F0E000079
:1013400000000000010100010307070300183C181A
:10135000000000FDFF3F003FFFFF9F060030783098
:1013600000000080C0C000C0E0F0706000041E0CEF
:10137000000000000000000000000000000000006D
:101380000000000000000000000000030703000050
:1013900000000001030002073F3F1C00860F06000B
:1013A000000000F83D0F61FCFFFFFF63010000003B
:1013B00000000000008080800080C0C0800C1E0CF7
:1013C00000000001010001010307070000030703FB
:1013D0000000FDFF3F003FFFFFDF9E00000387038B
:1013E000000080C0C000C0F0F87830010301800028
:1013F000000000000000000000000080C08000002D
:101400000000001F3F2700277FFFF783003079305F
:10141000000000B0F8F800F8FCFC9E0C004CEECC8C
:10142000001F3F27000000277FFFF783003079303F
:1014300000B0F8F8000000F8FCFE9E0C004CEECC6A
:1014400000000000000000030FFF7F3F5FFFCF039D
:10145000000C1E08000C1EFEFCFCFCFCFCFCF8C092
:10146000000000000040000000000000000000003C
:1014700000000000000000000F0000183C180000F1
:1014800000183C180010787F3F7F7F7F7F7F3F7F71
:101490000000000000000086EFF4F0FCFEFCE0809D
:1014A0000000000000000000F040000C1E0C0000D6
:1014B000000000000000000000000000000000002C
:1014C00000072F7C614F3F3F1F3D3C0801183C182F
:1014D00000E0F000F6FFF8F0F89C08C0E0C0000063
:1014E00000071F3F3F7F7F7E0E00000000000000CE
:1014F00000C0F0F8FCFCFEFE7E7E7E7E7E000000DA
:10150000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
:1015100001010101010101010101010101010101BB
:1015200000000000000000000000000000000000BB
:1015300000000000000000000000000000000000AB
:10154000000000000000000000000000000000009B
:101550000000000000000000000F080E0101090655
:10156000000000000000000000000000000000007B
:101570000000000000000000000E11110E11110EFD
:101580000000001F2D3F1B0040EADB7830061FBE25
:101590000000000080B03020409C3E1603071A1C5B
:1015A000000000000000000000000080F870300023
:1015B0000000000000000000000000003F73000079
:1015C000000000001078FAB60683D9BCF060081954
:1015D00000000000000000000028BC2E030782CCA1
:1015E000000000000000808000000000DEF8703085
:1015F000000000000000000000000000EE7F33004B
:1016000060E0000000000000090A0000008CDEFC21
:10161000030703163EBEFAF8787020000000008031
:1016200000000000004040C0CE010F0E0703000084
:101630000000000000000000E0C08000000000008A
:10164000030703010001030381C0A00080000133F0
:1016500000008080C0D0BCBE1A000000000080C026
:10166000004040C0C04000000E1C180C0E1E1800A8
:10167000000000000000000070381830707818007A
:10168000000000070B0F0600D8FA76B7CFFFFFC2A5
:10169000000000C060ECCC08048E0E0703C7E6DE35
:1016A000000000070B0F86C0F0F8DC1EDFFB7B3567
:1016B000000000C060ECCC0810A6CF0703C7CE9E88
:1016C000003F0000001F0000000101080EFE7CF03A
:1016D00000F8FC7E6AAE44009CF8F0F903FFFF7C42
:1016E0000000000000000000000000000C0E1F3F82
:1016F0000000000000000000020200000C0E1F3F6E
:1017000000000000000000000000000001030F3F87
:10171000000000000101010307071E7FFFFFFFDF3C
:1017200000000000000000000000000000000000B9
:1017300000000000000000000000000000000000A9
:1017400000003F0000001F00000101040E7EFC703D
:101750000000F8FC7E6AAE449CF8F0F903FFFF7CC1
:101760000000000000000000000000000000010375
:10177000000000000000000002020000C0E0F0F0E5
:10178000000000000000071F3F7F7F7F0E00000069
:10179000000000000000F8FEFFFFFF1F0F0F07070B
:1017A000000000000000000007070707000000001D
:1017B0000080C0C0C0E0E0E0E0E0E0E00000000049
:1017C00000000000000000000000070F07000000FC
:1017D00000000000000000000000E0F0E000000059
:1017E00000000000070F1F1F1F1F1F0F0700000032
:1017F0000000000000E0C0808080C0E00000000029
:101800001F1F7F2100091F4FC7C7000F1F1C0800A3
:10181000C0E088F8E8F8F0C083E392F0E0F07800E8
:101820000F0F3C0F070F1F4FE1C1020F1F1C0800D5
:10183000E0807CE47CFCF8F0F3E392F0E0F07800E8
:101840000063E7610F0707030103070A1F5F2E0EFE
:1018500003FFFBFE840090F8F0E0E040C0C0800091
:10186000000000000000000007030000000000006E
:1018700000000000000000008000000000000000E8
:101880000063E7581F1B1F0F07070F143F5FFE7809
:1018900006F7F6F0C080C0C080C0E0C08000000045
:1018A000000000000000000007030000000000002E
:1018B00000000000000000008000000000000000A8
:1018C0000000000003030F040001030100000838BA
:1018D00000000000F8FCF13F1D3FFEB81C3C28F062
:1018E00000000000000000000F0C000000000000DD
:1018F0000000000000000000FCDC387078300000C0
:101900001F1F7F2100091F0F0787841C0E0E000078
:10191000C0E088F8E8F8F0C080001878F0707838F7
:1019200000000000000000000000000000000000B7
:1019300000000000000000000303000000000000A1
:101940000F0F3F030130010343E3270703000000AB
:10195000C0E018F8C87EFFFFCE87078E00000000A9
:1019600000000000000020704000000000000000A7
:101970000000000000000000000000000000000067
:10198000000000000407070F1F3E387071316081AE
:101990007020202071FFFFFFFFF370F1C1808102F2
:1019A0000000000000000080C0E0E0C0C0C0800077
:1019B0000000000000000000000000000000000027
:1019C000010204040E1F1F1F1F1E1C3C381C0408AC
:1019D000C020101038FCFCFCFC7870781830201007
:1019E00001000000111F1F3F7F7B71F1E363214065
:1019F000C0808080C4FCFCFEFFCFC7C78706028181
:101A00001C7EFFFF3F1F1F0F0706020000000000A3
:101A1000387EFFFFFCF8F8F0E060400000000000B6
:101A2000000001070F0F030101000000000000008B
:101A30000000C3E7FFFFFFFFFFFF7E6624000000FA
:101A4000000080E0F0F0C080800000000000000096
:101A50000000000000000000000000000000000086
:101A60001C7EFFFF3E1C1E0E060703010301000043
:101A7000387EFFFF7C38787060E0C080C080000056
:101A80001C7EFFFF3F1F1F0F070602000000000023
:101A9000387EFFFFFCF8F8F0E06040000000000036
:101AA000000000000001070F0F030101000000000B
:101AB0000000000000C3E7FFFFFFFFFFFF7E66247A
:101AC000000000000080E0F0F0C080800000000016
:101AD0000000000000000000000000000000000006
:101AE00000000000001C7EFFFF3F1F1F0F070602C3
:101AF0000000000000387EFFFFFCF8F8F0E06040D6
:101B0000000000001C7EFFFF3F1F1F0F07060200A2
:101B100000000000387EFFFFFCF8F8F0E0604000B5
:101B200000000000000000000000000000000000B5
:101B3000000000001C7EFFFF3F1F1F0F0706020072
:101B400000000000387EFFFFFCF8F8F0E060400085
:101B50000000000000000000000000000000000085
:101B60000000000000000000000000000000000075
:101B70001C7EFFFF3F1F1F0F070602000000000032
:101B8000387EFFFFFCF8F8F0E06040000000000045
:101B90000000000000000000000000000000000045
:101BA00000000007070707070707070707000000EF
:101BB000000000E0E0E0E0E0E0E0E0E0E000000065
:101BC00000000000030F1F3F3F7F7E7E7E0000006D
:101BD000000000E0E0E0F0F0F00000000000000095
:101BE0000000000000030F1F3F7F7F7E0E000000FB
:101BF0000000000000FCFFFFFFFF0F0707000000D0
:101C00000000000000000080C0E0E0E000000000F4
:101C100000000000000000000000000000000000C4
:101C2000000000000000000000314A4A4A4A4A31E0
:101C30000000000000000000008C52525252528CF2
:101C400000007F0100003F283838383C19000109A6
:101C50000000F0F8FCD45C8800F87CFDFF0FFFF872
:101C6000000000000000000000333E7E0000000085
:101C7000000000000002020000C00C1C3C783C0C7C
:101C800000007F0100003F00000000040FFE7DF017
:101C90000000F0F8FCD45C8800C87CFCF800F8F97F
:101CA0000000000000000000000130383C1E3C3005
:101CB000000000000000000000CC7C7E000000005E
:101CC00000808000000000000000000030387CFC34
:101CD0000000000000000000000000003070F8FC70
:101CE000A0E0EFFFFFEBFA910C1F3F1F001F0F0753
:101CF0005070FE800000FC0080C0C080008080002A
:101D0000008080000000000000000000181D1F3F40
:101D100000000000000000000000000040C0E0F0F3
:101D2000A0E0F7FFFFEBFA910C1F3F1F001F070316
:101D30005070FE800000FC0080C0C08000808000E9
:101D40000080800000000000000000000307070F73
:101D5000000000000000000000000000008080C0C3
:101D6000A0E0EFFFFFEBFA910C1F3F1F001F1900CF
:101D70005070FE800000FC0080C0C08000808000A9
:101D8000008080000000000000000000101C1F3FC9
:101D900000000000000000000000000060E0E0F033
:101DA000A0E0EFFFFFEBFA910C1F3F1F001F1F0E7B
:101DB0005070FE800000FC0080C0C08000800000E9
:101DC0003F00050A1F000000010100EFEFFFFF7F49
:101DD000F8FC7EEAAE44009CF8F0FA07FFDECE9CE9
:101DE0003F000A051F000000010100EFEFFFFF7F29
:101DF000F8FCFE6AAE44009CF8F0FA07FFCEDE8CD9
:101E000000000000000000000000000000000000D2
:101E10000000000000000000001F02040201110E7B
:101E200000000000000000000000000000000000B2
:101E3000000000000000000000020602020202078B
:101E4000000000000000000000200004100060FD01
:101E50000000000000040000004000000440E7FF14
:101E60000000000400400000001000042002E71FF2
:101E700000008000000008000000200400006699B7
:101E80000000000000000000000000000000000052
:101E90000000000000000000000000000000000042
:101EA0000000000000000000000000000000000032
:101EB0000000000000000000000000000000000022
:101EC0000000000000000000000000000000000012
:101ED0000000000000000000000000000000000002
:101EE00000000000000000000000000000000000F2
:101EF00000000000000000000000000000000000E2
:101F000000000000000000000000000000000000D1
:101F100000000000000000000000000000000000C1
:101F200000000000000000000000000000000000B1
:101F300000000000000000000000000000000000A1
:101F40000000000000000000000000000000000091
:101F50000000000000000000000000000000000081
:101F60000000000000000000000000000000000071
:101F70000000000000000000000000000000000061
:101F80000000000000000000000000000000000051
:101F90000000000000000000000000000000000041
:101FA0000000000000000000000000000000000031
:101FB0000000000000000000000000000000000021
:101FC0000000000000000000000000000000000011
:101FD0000000000000000000000000000000000001
:101FE00000000000000000000000000000000000F1
:101FF00000000000000000000000000000000000E1
:00000001FF

View File

@@ -0,0 +1,513 @@
:100000000000000000000000FF7F3F1F0F070301FA
:100010000080C0E0F0F8FCFEFFFFFFFFFFFFFFFFE6
:10002000FFFFFFFFFFFFFFFF0000000000000000D8
:1000300000000000000000000000000000000000C0
:10004000010101FF101010FF010101FF101010FF4E
:10005000010101FF101010FF010101FF101010FF3E
:100060000000000000000000000000000000000090
:100070000000000000000000000000000000000080
:10008000C0FFFFC0C0FFFFC0FFFFFFDFCFFFFFC10A
:10009000C0FFFFE0F0FFFFFEFFFFFFFFFFFFFFFFDE
:1000A00003FFFF0303FFFF03FFFFFFFFFFFFFFFF50
:1000B0000000000000000000000000000000000040
:1000C00000FFFF0000000000FFFFFF1F0F070301FC
:1000D00000FFFFE0F0F8FCFEFFFFFFFFFFFFFFFF68
:1000E000000000000001003F00000000008000FC54
:1000F000103F243F3F223F1F08FC24FCFC44FCF837
:10010000000000000000000010101010000010009F
:10011000282828000000000028287C287C282800A7
:10012000103C50381478100060640810204C0C000B
:1001300030485020544834003010200000000000A7
:1001400008102020201008002010080808102000A7
:1001500000105438541000000010107C10100000E3
:1001600000000000301020000000007C00000000B3
:1001700000000000003030000004081020400000A3
:10018000384CC6C6C6643800307030303030FC00A1
:100190007CC60E3C78E0FE007E0C183C06C67C0057
:1001A0001C3C6CCCFE0C0C00F8C0F80C0CCC78009D
:1001B0003C60C0FCC6C67C00FEC60C183030300067
:1001C00078C4E4789E867C007CC6C67E060C7800E7
:1001D000003030003030000000303000301020009F
:1001E000FCF8F0F0F0F0F8FC00007E007E0000006B
:1001F0003F1F0F0F0F0F1F3F38440408100010005F
:100200003C4299A1A199423C386CC6C6FEC6C600C4
:10021000FCC6C6FCC6C6FC003C66C0C0C0663C004E
:10022000F8CCC6C6C6CCF800FCC0C0F8C0C0FE0002
:10023000FEC0C0FCC0C0C0003E60C0CEC6663E006E
:10024000C6C6C6FEC6C6C600FC3030303030FC0024
:100250000606060606C67800C6CCD8F0F8DCCE0046
:10026000C0C0C0C0C0C0FE00C6EEFEFED6C6C600FE
:10027000C6E6F6FEDECEC6007CC6C6C6C6C67C0096
:10028000FCC6C6C6FCC0C0007CC6C6C6DECC7A00B2
:10029000FCC6C6CEF8DCCE0078CCC07C06C67C009E
:1002A000FC30303030303000C6C6C6C6C6C67C0012
:1002B000C6C6C6EE7C381000C6C6D6FEFEEEC60028
:1002C000C6EE7C387CEEC600CCCCCC78303030002A
:1002D000FCFC183060FCFC00000000000030300026
:1002E000C080D895D50305073808080808083800E5
:1002F0003F3F000029133F1E80C0F070D0F0E000A7
:100300000000000101010303FF7F3F1F0F070303EC
:100310000080C0E1F1F9FFE3FFFFFFFFFFFFFFE314
:100320000000000000000080FF7F3F1F0F070381D7
:100330000080C0E070783C82FFFFFFFF7F7F3F833B
:100340000700000F1F1F3F7FC700001F1F1F3F7FB9
:10035000078000EFFFFFFFFFC78000FFFFFFFFFFE9
:10036000800000C0C0E0E0F0810100CFC7E3E3F10E
:10037000800000C0C0E0E0F0810100CFC7E3E3F1FE
:100380000000000103070107FF7F3F1F0F07010760
:100390000080C0E1F3FFF9FFFFFFFFFFFFFFF9FF60
:1003A000000000E0F0F888F8000000E0F0F888F8BD
:1003B000000000E0F0F888F8FFFFFFFFFFFF8FFF6D
:1003C0000E0E0D0D1F1F1F1F0E0E0D0D1F1F1F1FC9
:1003D0000E0E0D0D1F1F1F1FFEFEFDFDFFFFFFFF79
:1003E000F8F8F8FCFCFCFCFCF8F8F8FCFCFCFCFC65
:1003F000F8F8F8FCFCFCFCFCF8F8F8FCFCFCFCFC55
:1004000000000000000000000000000000000000EC
:1004100000000000000000000000000000000000DC
:1004200000000000000000000000000000000000CC
:1004300000000000000000000000000000000000BC
:1004400000000000000000000000000000000000AC
:10045000000000000000000000000000000000009C
:10046000000000000000000000000000000000008C
:10047000000000000000000000000000000000007C
:10048000000000000000030F010003071F7FFFFFB3
:100490000000030F3FFFFFFFFFFFFFFFFFFFFFFF16
:1004A000000000000001071F3F7FFFFFFFFFFFFF6D
:1004B000FFFFFFFFFFFFFFFF00000000FFFFFFFF48
:1004C000FFFFFFFFFFFFFFFF00000007FFFEFCF83C
:1004D000F8F8F8F8F1F0E3E79FFFFFFFFFFFFFFFF9
:1004E000000000000001070F1E188107070F0F1FF3
:1004F0003F3F3FFFFFFFFFFF0000000F3FFFFFFFF9
:1005000000030F3FFFFFFFFF000000000001071F77
:100510003F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
:10052000FFFFFFFFFFFFFFFF0000000000FFFFFFD6
:1005300000000000000000000000001FFFFFFFFFA0
:100540000000030F3FFFFFFF000000000001071F36
:100550003F7FFFFFFFFFFFFF0000030F1FFEFEFEB8
:10056000F0F8FCF8F8F0F181079801071F1F3F7FB2
:100570001F0F3FFFFFFFFFFF000000000000030F01
:100580007FFFFFFFFFFFFFFF0000030F3FFFFFFFA5
:1005900000017FFFFFFFFFFF7FFFFFFFFFFFFFFF68
:1005A000FFFFFFFFFFFFFFFF00000000000000FF54
:1005B000F8FFFFFFFFFFFFFF60F0FCFEFFFFFFFF04
:1005C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
:1005D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
:1005E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B
:1005F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B
:10060000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
:10061000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
:10062000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
:10063000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
:10064000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
:10065000F7F7EFEFCFDF9F9FFFFFFEFCFCF8F0E026
:100660003F3F3F3F1F1F1F1FFFFFFFFEFCFCFCFC27
:10067000C0800000000101017FFFFFFFFFFFFFFFBF
:10068000F8F2E6DFFFFFFFFF030307070F1F3F7FBF
:10069000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
:1006A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
:1006B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A
:1006C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
:1006D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A
:1006E000FFFFFFFFFFFFFFFFFEFCFCFCFEFFFFFF25
:1006F0003F9FCFE0E3C70107070F0F0F0783C1F844
:10070000FFF38F3F7F7F3F1FFFFFFFFFFFFEFCF8E0
:10071000FFFFFFFFFFFFFFFFFFFFFFFFFF7F3F1F09
:10072000070F1F1F3F1F0F0F070F8F9FCFFFF3F9FB
:10073000FCFCFEFEFFFFFFFFFFFFFFFFFFFFFFFFD1
:10074000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
:10075000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
:10076000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
:10077000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89
:10078000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
:100790000000000000000000FFFFFFFFFFFFFFFF61
:1007A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
:1007B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49
:1007C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
:1007D000FFFFFFFFFF600000FFFFFFFFFFFF7F073E
:1007E000FFFFFFFFFFFEFEFCFFFBF7CF1F3F7F7FFA
:1007F000F0F0F0F0F0F0F0FC7FFFFFFFFF60000092
:100800000000000000000000FFFFFFFFFFFFFFFFF0
:1008100000000000000000000000000000000000D8
:10082000009CFCFEFEFFFFFF00000000000080F8BF
:10083000FF7F1F0F03010000FFFFFFFFFFFFFF7F90
:10084000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
:10085000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
:1008600000FCFFFFFFFFFFFF1F0FC7E7F3FBFBFCD1
:10087000FFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFF48
:10088000FFFFFFFFFFFF7F07FFFFFFFFFFFFFFFFF0
:10089000FFFFFFFFFFFFFFFF009CFCFEFEFFFFFFCF
:1008A00000000000000080F8FF7F1F0F0301000020
:1008B000FFFFFFFFFFFFFF7FFFFFFFFFFFFFFFFFC8
:1008C000FFFFFFFFFFFFFFFF071FFFFFFFFFFFFF10
:1008D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
:1008E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
:1008F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08
:1009000000000000000000000C0E1E1C086070308B
:100910001F0FC7E7F3FBFBFFFFFFFFFFFFFFFFFF1B
:10092000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
:10093000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7
:10094000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
:10095000FFFFFFFFFFFFFFFFFFFFFFFFFFFEFCF8B2
:1009600000000030381838108F1F1F1F1F1F0F8FF7
:100970000000000000303818FFFFFFFFFFFFFFFFFF
:10098000FFFFFFFFFFFBFBF7F7EFEFEFE7F3F9F8F0
:100990007CFE6F3F7EFCFE7FFFFFFFFFFFFFFFFF40
:1009A0001C3E7EFEFE7F0E06FFFFFFFFFFFFFFFFE8
:1009B000FFFFFFFFFFFFFFFF00000000000000003F
:1009C000000000000000009F00000000010FFFFF7A
:1009D0000001073FFFFFFFFFF8FFFFFFFFFFFFFFE3
:1009E0000000E0FFFFFFFFFF0000001FFFFFFFFF11
:1009F000000000FFFFFFFFFF0000FFFFFFFFFFFF02
:100A00000000000000000000387CF6E7FFFFE7630D
:100A1000FCFEE7FFFEE7FF7E3C7EF3E0E0663F1E64
:100A2000F8FCE6E7E7EFFE7CFCFEE0F8FCE0FE7F8A
:100A3000FEFFE0FCFEE0E0603E7FF0EEE7673F1F78
:100A4000C6E7E7FFFFE7E763FC7E38383838FC7E0F
:100A50000607070707C77F3EC6EFFEFCF8ECE66314
:100A6000C0E0E0E0E0E0FE7FC6EFFFFFFFEFE763FE
:100A7000C6E7F7FFFFEFE7637CFEE7E7E7E77F3EC8
:100A8000FCFEE7E7FFFEE0607CFEE7E7FFEF7E3D70
:100A9000FCFEE7EFFFFCEE6778FCE67C3EC77F3E9E
:100AA000FC7E383838383818C6E7E7E7E7E77F3E96
:100AB000C6E7E7EF7F3E1C08C6E7F7FFFFFFF763D7
:100AC000C6EF7F3E7CFEF663CCEEEE7E3C383818F7
:100AD000FE7F1F3E7CF8FE7F00000000000000004B
:100AE000FFFFFFFFFFFFFFFF00000000000000000E
:100AF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
:100B0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5
:100B1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
:100B2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5
:100B3000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5
:100B4000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
:100B5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
:100B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
:100B7000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85
:100B8000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75
:100B9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65
:100BA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55
:100BB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45
:100BC000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35
:100BD000FFFFFFFFFFFFFFFBFFFFFFFFFFFFFFFF29
:100BE000FFFFFFFFFFFFFFFFF8FCFEFFFFFFFFFF20
:100BF000FF630301F1FCFFFFFFFFFFFFFFFFFFFFAC
:100C0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
:100C1000FFFFFFFFFFFFFFFFF7F7E7E7C3C3E3E1D6
:100C2000E1F1F9FDFDFFFFFFFFFFFFFFFFFC783063
:100C3000FFFFFFFFFF3F1F1FFFFFFFFFFFFFFFFE45
:100C4000FCFBF7EFDFBF7FFFFFEFE7FFFFFFFFFFDB
:100C5000F0F0F8FCFEFEFFFF30000000010103038E
:100C60003F3F7FFFFFFFFFFFFFFFFFFFFFFFFFFF94
:100C7000FFFFFFFFFFFFFFFFFDFBFBFBFBFBFBF7A6
:100C80000303030303030303FFBF9FFFFFFFFFFFF4
:100C9000FFBF9FFFFFFFFFFFF7F7EFDFDFBFBFBF24
:100CA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54
:100CB000FFFF00000000FFFF03030000000003032C
:100CC000FFFF0F0F0F0FFFFFFEFCFDFEFEFEFEFEFF
:100CD000FFDF9FFFFFFFFFFF7F7F7F7F7F7F7F7FA4
:100CE000FFFFFFFFFFFFFFFF7F6F677F7F7F00003A
:100CF000FFEFE7FFFFFF0000FFEFE7FFFCF0000062
:100D00000303030300000000FFBF9FFFFF3F00003D
:100D1000FFBF9FFFFFFF0000FFDF9FFFFFFFFFFF01
:100D20007F3F9FFFFFFFFEFCFFFFF9E0C080000058
:100D3000FFFFFF0000000000FCE08000000000005A
:100D400000000000000000007F7F000000007F7FA7
:100D5000FF7F7F1F01030100FFFFFFFFFFFFFF7FFA
:100D60001F03010001030100FFFFFFFFFFFFFFFF63
:100D70001F033108051301040000000000000000FB
:100D8000FFFFFFFFFFFFF8E0FFFFFFFFFFFF030391
:100D9000C08000000080E0FC0100000000000000B6
:100DA000FF7F3F1F07010100C0C0FFFFFFFFFFFFE4
:100DB0001FFFFFFFFFFFFFFF00000000000000001B
:100DC0000F030100000F3FFFFFFFFF1F07C3E3F109
:100DD00003070F0F0F0360F8F3C387FFFEF800004F
:100DE000F0E0C0000001077FFFFF7F61FEFFFFFF13
:100DF000FFFFFFFF3F87FBFDFFFFFFFFFFFFFFFF41
:100E0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2
:100E1000FFFFFFFFFFFFFFFFFEFFBFDFEFF3FCFF62
:100E2000FF7FBFDFEFF7FB01FAFEFFFFFFFFFFFFD2
:100E3000FF7FFFFFFFFFFFFFFFFFFFFFFFFFFC0143
:100E4000FFFFFFFFFCC000E000000000000000000A
:100E5000010101FF0F0F1F07020000FF171311FF11
:100E6000030000C0E0F8FDFD000000000080C0C0ED
:100E700080C0E0F07038383800003F3F3E3C383FDB
:100E80000000FFFFFFFFFFFF0000FFFFFEFCF8FF79
:100E90000719E1FF080808FF0101013F0808083FA2
:100EA000010101FF080808FF000000000000000029
:100EB000FFFFFFCFE3F8F8F80000C0F3FF7F00FF6B
:100EC0003F3FFFFEF8823EFEFFFFFF7F7F7F7F7F79
:100ED000F8F8F8F8F8F8FCFFFFFFFFFFFFFFFF004E
:100EE000FFFFFFFFFFFCF0000F0300000000000009
:100EF000FFFFFF1F0701030F0000000000000000BC
:100F00000000E0FFFFFFFFFF000000FFFFFFFFFF0B
:100F100003010000C0F8FEFFFFFF7F1F07010080F4
:100F2000FFFFFFFFFFFF7F1FC0F0FCFFFFFFFFFF82
:100F300007010000C0F0FCFF070307393EFFFFFF79
:100F4000FFFFFFFF1FE0FFFFFFFFFFFFFFFFFFFFB0
:100F5000FFFFFFFFFFFFFFFF000000000000000099
:100F60000000FFFFFFFFFFFF0000FCFCFCFCFCFC9F
:100F7000FCFCFCFCFCFCFCFC0080E0F0FCFFFFFF48
:100F8000FF000000000080C0FF0000000000000023
:100F9000FC00000000000000000000000000000055
:100FA000F0F8FEFFFFFFFFFF00000080C0E0F8FC4C
:100FB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41
:100FC000FFFFFFFFFFFFFFFF0F010000000080C0D9
:100FD0003F3F3F3F3F3F3F3F000103070F1F3F7F22
:100FE000000000000000C0E0FFFFFFFFFFFFFFFF69
:100FF00000000000000000000000000000000000F1
:10100000FF80808080808080FF010101010101015B
:1010100080808080808080FF01010101010101FF4B
:1010200000000000000000000000000000000103BC
:1010300000000F1F7FFFFFFF0000F8FFFFFFFFFF13
:1010400000000000C0F8FFFF00000000000000C02A
:101050000000000000000000000000000000000090
:1010600000000000000000000000000000073F003A
:101070000F0F3F7FFFFFC300FFFFFFFFFFFFFFFFDB
:10108000FFFFFFFFFFFFFFFFF0FCFFFFFFFFFFFF82
:10109000000000C0F0FEFFFF000000000000FDFFA8
:1010A00000000E3F3FFFFFFF00000080F8FFFFFF42
:1010B0000000000000FFFFFF000000000000F0FF44
:1010C000000000000000030F000100000000FFFF0F
:1010D00000FF00003F0300FFFFFFFF07FFFF1FC3EC
:1010E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
:1010F000000000000003073F0000001FFFFFFFFF8C
:1011000000000000F8FFFFFF0000000000E0FFFF0C
:1011100000000000000000FC000000010F1FFFFFA6
:10112000011F7FFFFFFFFFFFFFFFFFFFFFFFFFFF2D
:10113000FFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFCE
:101140000000FFFFFFFFFFFE00000000000001079E
:101150000103070F1F3FFFFF000000000301000015
:101160000000000080FE7F3F000000000000C08003
:1011700000000000000000000F1F3F7F7FFF6F1F77
:10118000FFFFFFFFFFFFFFFF04070000000000005C
:1011900080808080000000000000F8F0E0C0C00304
:1011A000000000000038FFFF3F07000000008FFF35
:1011B000FFFF1F0003FFFFFFFFFFFF3FFFFFFFFFDA
:1011C0000000000000000000F8FEFFFFFFFFFFFF2F
:1011D000000000000000000000000000000000000F
:1011E00000000000000000000000000000000000FF
:1011F00000000000000000000000000000070000E8
:101200000000000003C07C0F0000000000FC000094
:1012100000000000000000000000000000000000CE
:101220000000000000000000000000000000013F7E
:1012300000000000073FFFFF00031FFFFFFFFFFF4D
:101240000000000000071F3F000000000000000039
:10125000000000000000000000000000000000008E
:10126000000000000000000000000000000000007E
:10127000000000000000000000000000000000006E
:10128000000000000000000000000000000000005E
:1012900000000000000000000000000000083860AE
:1012A0002367031F38000000F8F8F000000000007A
:1012B00000000107070E00193F7FF0C31F7FFEFCEF
:1012C000F870F0E0C08000000000000000000000A6
:1012D0000100000000000000C0000008081010001D
:1012E00000000000000000000000000103000000FA
:1012F00000000000000000000001010301010303E1
:1013000000808080C0C0C08000000000000000009D
:1013100000000000000000000000000001070E3C7B
:10132000070F4F9FBF0F02028000800000000000E7
:101330000000000000000000000000030F0000009B
:101340000023C08000000000E80000000000000052
:101350000000000000000000FF7F0F0300000000FD
:10136000FFFFFFFFFF1F0707FFFFFFFFFFFFFFFF5D
:10137000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
:10138000FFFFFFFFFFFFFFFFFFFFFFFEF0E0C000DA
:10139000F8E08000000000000000000000000000F5
:1013A000000000000000000000000000000000003D
:1013B0000000000000000000030100000000000029
:1013C000FFFFFF0000000000FFFFFFFE0000000025
:1013D000FCE080000100000000084CE6EF74320CD5
:1013E000000000C00000000000000000000000003D
:1013F00000000000000000000400000000000000E9
:10140000000000000100000000204080C4EE6633B0
:10141000000000000000C0E000000000000000002C
:1014200000000000000000000000000000000000BC
:1014300000000000000000000000000000000000AC
:10144000000000000000000000000000000000009C
:101450000000000000000000C020000000000000AC
:10146000000000000000000000000000000000007C
:10147000000000000000000100000000001060C03B
:101480000000000000000000000000003000030029
:10149000000000000000000000000000000830E034
:1014A0000000000001010207000109880C1C07016F
:1014B000000080E0701F06C3000000000000004034
:1014C0000000000000007F80000000030001F00029
:1014D000000000807080000000000000E0000000BC
:1014E00000000000000000000000000000000000FC
:1014F000000600000000000003071E0000000000BE
:101500008000000038E00000000000000000000043
:101510000000000000000000070F1F3F3F0F0703FF
:10152000C060483C391F0100300C01070E07C100A4
:10153000F0380018300880000000077E0F00010717
:101540000E70800000F0FFFF00000000000000F0BF
:10155000000000000000031F00000000013FFFFF2B
:10156000071F3FFFFFFFFFFF00000000000000001B
:1015700080F8FFFFFFFFFFFF000000E0F8FEF8E04B
:101580000003070300000000FFFFFFFFFF1F07012C
:10159000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B
:1015A000FFFFFFF0E0FFFFFFFFFE000000E0F0F8AC
:1015B000F800000000000000FF7F1F0F0700000080
:1015C000FFFFFFFFFFFF3F0FFCFFFFFFFFFFFFFFDE
:1015D0000000E0F8FFFFFFFF0000000000C0F0FF88
:1015E0000000007F3F0F070300000000F0FFFFFF37
:1015F00000000000030FFFFF00000000FFFFFFFFDF
:101600000000000000FFFFFF0000000000C0FCFF22
:1016100000000000000000000000000000000000CA
:101620000000000000000000FF7F3F1F07010000D6
:10163000FFFFFFFFFFFFFF3FC0F0FCFCFFFFFFFFCE
:101640000000000000C0E0FC1F0F0F0701000000B9
:10165000FFFFFFFFFFFF7F00FFFFFFFFFFFFFCF02B
:10166000FFFFFFFFF8800000FEF8E0000000000030
:101670000000000000000000000000000000030166
:10168000FFFF0F1E700000E090C08000000000000F
:10169000FFFF8000000000000000000000000001CB
:1016A0001EFCF0E080000001010307071F3F7FFFE1
:1016B000070F1F1F3F7FFFFFFFFFFFFFFFFFFFFF22
:1016C0003F7F000000F00EFF00000000000000005F
:1016D00000000000000000000001070F0F1F1F3F67
:1016E0000001070F3F7FFFFF7FFFFFFFFFFFFFFFAF
:1016F000FFFFFFFFFFFFFFFFFEFEFFFFFFFFFFFFFC
:10170000FFFFFFFFFEFCF8FFE3C3810000013FFF86
:101710000000000001030F3F07071E3FFFFFFFDF30
:10172000FFFFFFFFFFFFFFFFDFEEECE0E0E0E0E0A8
:10173000FFFFFF7800000000E2EEC7030100013F59
:10174000001FFFFFFFFFFFFFFFE3C0F8FCFFFFFFED
:10175000FFFFFF7F7FFFFFFFFFFFFFFFFFFFFCF0AB
:1017600000000000010101030000000103070F1F3A
:101770000F1FFFFFFEFEFCFC1F3F7FFFFFF9FFFF77
:10178000F8F0E0C0C0808000E0C00000A090B8BCCD
:1017900000000000000000003F3F3F3F1F1F1F1FD1
:1017A0000080C0C0E0E0F0F01F1F3F3F7F7FFFFFE1
:1017B000FCFEFEFEFEFFFFFFFFFFFF3F3F1F0FE3AC
:1017C000FFFFFFFFFFFFFFFFFDF9F9FBF383073F7B
:1017D000FFFFFFFFFFFFFFFF000000000000000011
:1017E00000000000000000000000000000000000F9
:1017F00000000000000000000000000000000000E9
:10180000FF80808080808081FF01010101010181D2
:1018100081808080808080FF81010101010101FFC2
:101820000000387FFFFFFFFF000006F8C0B8BFBF11
:10183000000000000003FFC007071F3FFFFFF80084
:10184000FF87FFFFFFFF0F3FFFFFFEFFFFFFFFDFF1
:101850000000000000000000000000000000000088
:101860001F1F3F3F3F7F7FFFFFFFFFFFFFFFFFFF88
:10187000FFFFFFFFFFFFFFFFFFBFFFFFFFF9FFFFBE
:1018800000000000000000000001010303070F0F2B
:10189000FFFFFFFFFFFFFFFFFFFFFFFFFEF8FCFF63
:1018A000E0C0800103070F1F0F1FFFFFFEFEFCFCBF
:1018B0000003070F0F1E3C78FFFFFF9F1F3F7FFFB6
:1018C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
:1018D000E0E0C0C0E0E0F0F00000000103071F3FBF
:1018E0001F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
:1018F000E0E0E0C080E0F0F0000000000101030340
:101900007FFFFFFFFFFFFFFFFFFFFFFFFBF9F0F08F
:1019100001070F1F3F3F3B7FFFFFFFFFFFFFFFFF61
:1019200001070F1F3F3F3F7F000000000103070F2B
:1019300000000000000000000000000000000000A7
:101940000000000000000000000000000000000F88
:1019500000000000000000000000000002011FFF66
:10196000FFFFFFFFFFFF3F07030000030FFFFFFF25
:10197000FFFEFCFCFEFEF8C08000E0F8FFFFFFFF6A
:1019800000000000000000000001070F3EF8F18792
:1019900000000000000000000080F8800F7FFFFFC3
:1019A000FF7F3F0F010000003F7FFFFFFFFFFFFFB2
:1019B000FFFFFFFFFF7F1CFCFEFFFFFFFFFFFFFF9E
:1019C00000000000000000000001001FFFFFFFFFFB
:1019D00000000000003E7FFFFFFF1FFFFFF8E0C098
:1019E000FFFEFEFFFFFF0F0040F8FFFFFFFFFFFFBE
:1019F00000000080FFFFFF000003F3FFFFFFFCF08B
:101A0000000000000000C080E0FCFFFF00000000BC
:101A10000000000000000000000030FF0000000097
:101A2000000000000001871FFFFFFFFFE0800000B3
:101A3000000000073FFFFFFEFCF8FFFF000300006F
:101A4000000000000000000F000000FF0000000385
:101A5000000000000000C0F0000000C0FF7FFFFF9A
:101A60000F18F0C0808000000000FFFFFFFE0000A4
:101A7000FF3F3F3F1F0F0F1E3FFFF8F8F000000031
:101A8000000000000000000000010000FFFFFFFF59
:101A9000000000000000000000FE3F1FFFFFFFFFEE
:101AA000FFFFFFFFFF00033FFFFF3F01061800009D
:101AB000FFFFFFFFFFFFFFFFFCF8C0C1030C0000AA
:101AC0000000000000000000000307FFFF0100000D
:101AD00000000000000000000000FFFFFFFF7F008B
:101AE00000C0FCFCFEFFFFFC783F3FFFFFFFFFFF55
:101AF00000000000000F3F7FFFFFFFFFFFFFFFFF21
:101B000000000000060100000FFFFFFFFFFFFF0CB9
:101B10000000000000F00EFFFFFFFFF0C08000009B
:101B20000000000FFFFFFFFFFFFFFFFFFFFFFFFFB2
:101B30000003FFFFFFFFFEFCFCF0E0E0C0808080C0
:101B4000003C7EE7C3C7FEFCC6C7C3C3C3C7FEFCD9
:101B500000000000001C3D736363636363626061A7
:101B60000000000000F0E18B1B1B1B1B1B3BF1E086
:101B70000018181818F8F9BB1B1B1B1B1BBBF1E046
:101B80000000000000E0F1BB1B3BF3E303BBF3E309
:101B90000018181818FFFF9D18181818181D0F079F
:101BA00000000000001898D8D8D8D8D8D8DD8F0702
:101BB0000000000000C7CFDDD8D8D8D8D8D89818F2
:101BC0000000000000078FDDD8D8D8D8D8DDCFC7F7
:101BD00000C0C0C0C0C0C0C0C0C0C0C0C0C08000C5
:101BE000000041E3E3E3777F000082C7C7C7DEFE62
:101BF0007F3F3F3F1F1F1F19FEFCFCFCFCF8F898BD
:101C0000000103394721201010080F0000000000D8
:101C100000008038C40809131907E1201010080FCC
:101C2000000103394721209030C00F08101020E038
:101C300000008038C40808101020E00000000000F8
:101C40000000000000000000000000000000000094
:101C50000000000000000000000000000000000084
:101C60000000000000000307010101030303030358
:101C700007070707070F0F0F0F1F1F1F3F3F00002A
:101C8000000000000000FFFFFFFFFFFFFFFFFFFF5E
:101C9000FFFFFFFEFEFEFCFFFFFFFFFFFFFF000058
:101CA00000000000000080C0C0C0C0C080808080F4
:101CB00000000000000005FDFDF9F9F9F1E0000069
:101CC00000000000000000000000000F1F3F7F7FA9
:101CD0007FFFFFFFFFFFFFFFFFFFFFFFFF7F000012
:101CE0000000000000000000000000FFFFFFFFCF29
:101CF000CF8F9F9F9F3F3F3FFFFFFFFFFEF80000FA
:101D00000000000000000000000000F0F8F9F9F306
:101D1000F3F3F7F7E7E7EFEFCFCFCF8F070300003D
:101D200000000000000000000000003FFFFFFFFE79
:101D3000FEFEFCFCFCF8F8F9FFFFFFFBF1C0000021
:101D40000000000000007F1F1F3F7FFFFFFFFF7F9D
:101D50007F7F7FFFFFFFFFFFFFFFFFFFFFFF000011
:101D6000000000000000E0F0F0F0F0F0E1E3E7CF69
:101D7000CFDFDFDF9F9FBFBF3F3F3F3F9FC70000D9
:101D800000000000000000000000007FFFFFFFF9DE
:101D9000F9F3FFFFFFFFF0E0FFFFFFFFFFFF000091
:101DA0000000000000000000000000FCFEFFFFFF3C
:101DB000FFFEFEFCFCE0000EFCFCF8F8F0800000EA
:101DC0000000000000000000000000000000000013
:101DD00000000101010101030303030707030000E1
:101DE0000000000000007FFF1F1F1F7F7F7FFFFF9D
:101DF000FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000F1
:101E0000000000000000FFFFFFFFFFFFF3E1E3E73A
:101E1000EFFFFFFFFFFFBFBF9F9F8F0F87C7000030
:101E2000000000000000F0FCFFFFFFFFFFFFFFFFCE
:101E3000FFFEFCF0C0E0F0F8FEFEFCFCF8F0000055
:101E400000000000000000000000809FBF9F9F3F37
:101E50003F3F3F7F7F7F7F7FFFFFFFFFFF7F0000D0
:101E60000000000000000000000000E3F7F3F3F3BF
:101E7000E3E7E7E7E7CFCFCFFFFFFFFFDF0F00008C
:101E80000000000000000000000000FCFEFFFFFF5B
:101E9000FEFEFEFCFCFCFCF8F9F9F9F9FEFC000082
:101EA00000000000000000000000003F7F3F3F3FB7
:101EB0007F7F7F7FFFFFFFFFFFFFFFFFFF7F0000B0
:101EC0000000000000000000000000E1F7EFFFFF4D
:101ED000E7C7C7CFCFCF8F9F9F1F1F3FBFDF000038
:101EE0000000000000000000000000FCFFFEFEFCFF
:101EF000FDFDFDF9FBFBFBF3F7F7F7E7E3F9000066
:101F00000000000000000000000000FFFFFFFFFFD6
:101F1000FFFFFFFFFFFFFEFEFEFCFCFCFEFF0000DC
:101F2000000000000000000000000087DFBFFFFF8E
:101F30009F1F1F3F3F3F3F7F7F7F7FFFFF7F00004F
:101F40000000000000000000000000F0F8F8F9F3C5
:101F5000F3F7F7E7E7E7EFCFCFCFCF8F87E10000C9
:101F600000000000000000000000000F7FFFFFFEE7
:101F7000FEFCFFFFFFFFFCF8FFFFFFFFFFFF00007D
:101F80000000000000000000000000FFFFFFFF7FD6
:101F90007FFFFFFFFFF80003FFFFFEFEFCC0000015
:101FA00000000000000000000000000F9FC7C7C72E
:101FB000CF8F8F1F1F1F1F9F3F3F3F3F7F7F00001F
:101FC0000000000000000000000000F8FDFDFFFF21
:101FD000FFFEFCF8F8F8F0F0F0F0E0E0F8F00000B8
:101FE00000000000000000000000007CFCF8F8F891
:101FF000F0000000000000000000000000000000F1
:00000001FF

View File

@@ -0,0 +1,513 @@
:100000000000000000000000FF7F3F1F0F070301FA
:100010000080C0E0F0F8FCFEFFFFFFFFFFFFFFFFE6
:10002000FFFFFFFFFFFFFFFF0000000000000000D8
:1000300000000000000000000000000000000000C0
:1000400000000000000000000000000000000000B0
:10005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
:100060000000000000000000000000000000000090
:10007000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
:1000800000000000000000003F00001F0F00000102
:10009000000000203000003E3F00003F3F00003FD6
:1000A0000000000000000000FC0000FCFC0000FC60
:1000B0000000000000000000000000000000000040
:1000C0000000000000000000FF00001F0F070301F8
:1000D000000000E0F0F8FCFEFF0000FFFFFFFFFF64
:1000E0000000000000000000000000000000000010
:1000F0000F001B00001D0000F000D80000B8000039
:1001000000000000000000000000000000000000EF
:1001100000000000000000000000000000000000DF
:1001200000000000000000000000000000000000CF
:1001300000000000000000000000000000000000BF
:1001400000000000000000000000000000000000AF
:10015000000000000000000000000000000000009F
:10016000000000000000000000000000000000008F
:10017000000000000000000000000000000000007F
:10018000000000000000000000000000000000006F
:10019000000000000000000000000000000000005F
:1001A000000000000000000000000000000000004F
:1001B000000000000000000000000000000000003F
:1001C000000000000000000000000000000000002F
:1001D000000000000000000000000000000000001F
:1001E000000000000000000000000000000000000F
:1001F00000000000000000000000000000000000FF
:1002000000000000000000000000000000000000EE
:1002100000000000000000000000000000000000DE
:1002200000000000000000000000000000000000CE
:1002300000000000000000000000000000000000BE
:1002400000000000000000000000000000000000AE
:10025000000000000000000000000000000000009E
:10026000000000000000000000000000000000008E
:10027000000000000000000000000000000000007E
:10028000000000000000000000000000000000006E
:10029000000000000000000000000000000000005E
:1002A000000000000000000000000000000000004E
:1002B000000000000000000000000000000000003E
:1002C000000000000000000000000000000000002E
:1002D000000000000000000000000000000000001E
:1002E000000000000000000000000000000000000E
:1002F0000101003C173F3F1E80C0F070F0F0E000AD
:10030000000000000000001CFF7F3F1E0E06001CC6
:100310000080C0E0F0F8FCFCFFFFFFFEFEFEFCFCEE
:10032000000000000000003CFF7F3F1F0F07033D5F
:100330000080C0E070783C3EFFFFFFFF7F7F3F3FC3
:10034000387FFF0000000000F87FFF100000000071
:1003500038FFFFE0E0E0C080F8FFFFF0E0E0C080A1
:100360007EFEFF00000000007FFFFF0F0703030178
:100370007EFEFF00000000007FFFFF0F0703030168
:100380000000000000000000FF7F3F1E0C00000086
:100390000080C0E0F0F8F8F8FFFFFFFEFCF8F8F886
:1003A000000000000000000000000000000000004D
:1003B0000000000000000000FFFFFF1F0F070707FD
:1003C000000000001018181C000000001018181C75
:1003D000000000001018181CF0F0F0F0F0F8F8FC25
:1003E000000000040C0C1C3C000000040C0C1C3C25
:1003F000000000040C0C1C3C000000040C0C1C3C15
:10040000FFFFFFFFFFFFFFFFFFFFFF0000000000F7
:10041000FEF80000000000007F1F01000000000047
:10042000FFFFF80000000000FFF8000000000000DF
:10043000FFFF7F3F0F030000FFFFFFFFFFFEF8C03D
:10044000FFFFFFFFFFFFE000FFFFFFFCC000000019
:10045000FCF0800000000000FFFFFFFFFFFFFFC077
:10046000FFFFFEFCF8E0000080000000000000003C
:10047000FFFF7F0F00000000FFFFFFFFFF0F0100E5
:10048000FFFFFFFFFFFFFCF0FEFFFCF8E080000035
:10049000FFFFFCFCF8F0F8FC7F0700000000000004
:1004A000FFFFFFFFFFFEF8E0C0800000000000003B
:1004B0000080E00000000000FFFFFFFF00000000E0
:1004C0000000000000000000FFFFFFF8000103072C
:1004D000070707070E0F1C1860000000000000004F
:1004E000FFFFFFFFFFFEF8F0E1E77EF8F8F0F0E035
:1004F000C0C0C00000000000FFFFFFF0C00000000F
:10050000FFFCF0C000000000FFFFFFFFFFFEF8E06F
:10051000C08000000000000000000000000000009B
:100520000000000000000000FFFFFFFFFF000000D0
:100530000000000000000000FFFFFFE000000000DE
:10054000FFFFFCF0C0000000FFFFFFFFFFFEF8E030
:10055000C080000000000000FFFFFCF0E00101018E
:100560000F070307070F0E7EF867FEF8E0E0C08074
:10057000E0F0C00000000000FFFFFFFFFFFFFCF005
:100580008000000000000000FFFFFCF0C000000041
:10059000FFFE80000000000080000000000000005E
:1005A0000000000000000000FFFFFFFFFFFFFF0052
:1005B00007000000000000009F0F03010000000082
:1005C00000808080808080C0C0C0C0406060E0E06B
:1005D0000000000000010101E0E0F0F0F8FCFFFF86
:1005E00000000000000000C080406060303030300B
:1005F0007F3F3F1F01000000C0E0F8C08000000006
:10060000000000000001020C0000010103030F1FA5
:10061000F0F0F0F0E0E0E0C00000000000000101B8
:100620001818397FFFFFFFE03FFFFFFEFCF080005E
:10063000C080000000000000030200000000000075
:1006400000000000000000000000000000000000AA
:1006500008081010302060600000010303070F1F1E
:10066000C0C0C0C0E0E0E0E00000000103030303FD
:100670003F7FFFFFFFFEFEFE800000000000000045
:10068000070D192000000000FCFCF8F8F0E0C08025
:1006900080808080808080C0C0C0C0406060E0E01A
:1006A0000000000001030303FCFEFFFFFFFFFFFF4C
:1006B0000000008080C0E0F8FF7F3F0300000000E2
:1006C000FCFEFFFF3F0301000000000000000000EF
:1006D000000000000000000000000000000000001A
:1006E00000000000000000000103030301000000FF
:1006F000C060301F1C38FEF8F8F0F0F0F87C3E07C0
:10070000000C70C08080C0E0000000000001030702
:100710000000000000000000000000000080C0E0B9
:10072000F8F0E0E0C0E0F0F0F8F0706030000C06A7
:100730000303010100000000080810103020606071
:10074000C0C0C0C0E0E0E0E0000000010103070F0E
:100750003F7FFFFFFFFEFEFE800000000000000064
:1007600000000000000101001F3F7FFFFFFFFFFFAF
:10077000FCFCFCFCF8F8F8F0FF7F7F7F3F1F1F1F99
:10078000F0E0E0E0E0C0C0C00000000000000000B9
:10079000000000000000000018189CFFFFFFFF078A
:1007A000000000C0F8FFFFFF0000000000C0FE8056
:1007B0000000000000000000000000000000000039
:1007C0000000000000000000000000000000000029
:1007D00000000000009FFFFF00000000000080F804
:1007E000000000000001010300040830E0C0808028
:1007F0000F0F0F0F0F0F0F0380000000009FFFFF70
:1008000000000000000000000000000000000000E8
:100810000000000000000000FFFFFFFFFFFFFFFFE0
:10082000FF63030101000000FFFFFFFFFFFF7F07E1
:10083000F8FFFFFFFFFFFFFF01E1FFFEFCFCF8F800
:10084000C0400000000000000000000000000000A8
:100850000000000000000000000000000000000098
:10086000FF03000000000000F8FC3E1E0F07070316
:1008700000000000000000C00000000000000000B8
:1008800000000000000080F80000000000000000F0
:100890000000000000000003FF6303010100FEFFF1
:1008A000FFFFFFFFFFFF7F070080E0F0FCFEFFFF80
:1008B00000000000000000800000000000000000B8
:1008C0000000000000000000F8E000000000000050
:1008D000000007FFFFFFFFFF0001FFFFFFFFFFFF1B
:1008E00003FFFFFFFFFFFFFF7F7F7F7F7F7F3F3F94
:1008F000F0FEFFFFFFFFFFFF000387FFFFFFFFFF8B
:1009000000000000000000000002060C080010308B
:10091000E0F038F8FCFCFCFF000000000000F0F8FC
:10092000000080F0FFFFFFFF00000000F8FFFFFF66
:10093000000000000000C0FE0000000000000000F9
:10094000000000000000000000000000000000C0E7
:1009500000000000000000007F3F3F1F010103076F
:10096000000000000808181070E0E0F0F8F8F87CCB
:100970000000000000000818C0E0E0C0C0C0C08057
:10098000000000000004040808101010180C0607EE
:1009900000386103061C007F01030F1F1F3F3F7FCC
:1009A00000021232007302067FFFFF7F3F3F1F0FDE
:1009B000C0E0F0F8F8FEFFFF0000000000000000BB
:1009C0000000000000000000000000000000000324
:1009D0000001073F3F7EFCF8F8FFFFFF1F3F7FFF4E
:1009E0000000E0FFFFFFFFFF0000001FFFFFFFFF11
:1009F000000000FFFFFFFFFF0000FFFFFFFFFFFF02
:100A000000000000000000000010302101392163C7
:100A1000003821033821037E001833202000031EF4
:100A2000003020212123067C003E20003C20007F56
:100A3000003F20003E202060001F30202101011FC8
:100A40000021210139212163004E08080808007E99
:100A5000000101010101033E0023260C2020206338
:100A6000002020202020007F00010101292921638E
:100A70000001010121212163003821212121033EB0
:100A800000382121033E2060003821212123043D2C
:100A90000038212107202067003026003801033E5E
:100AA000004E080808080818002121212121033ED2
:100AB0000021210103060C080021210101113163ED
:100AC0000001030600103063002222060C080818FB
:100AD000007103060C18007F0000000000000000F9
:100AE0000000000000000000000000000000000006
:100AF000010103070F0F0703000000307CFCF8F82A
:100B0000030303030101010700808080C0E0F1F1CD
:100B1000FF3F7F7FFFFFFFFFF8F0F3FFFFFFFFFFC7
:100B20007FFFFFFFFFFFFFFFF9FBFFFFFFFFFFFF5F
:100B3000FFFFFFFFFFFEFCF8FCF0E080000000007C
:100B4000E0C08080800C1C38FFFFFFFFFFFFFFFF2D
:100B5000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
:100B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
:100B7000FFFFFFFEFEFEFEFC000000000000000084
:100B8000FCFCFCFCFEFEFEFC00000000000000007F
:100B9000FFFFFFFFFFFFFFFFFFFFFFFFFEFCFCFC6F
:100BA0000301000000000000FFFFFF7F7F3F1F07E1
:100BB0000080C0FCFFFFFFFF03010000C0FCFEFF40
:100BC000FFFFFFFFFFFEFEFCFFFBF7CF1F3F7F7F16
:100BD000F0F0F0F0F0F0F0F87FFFFFFFFF600000B2
:100BE000FFFFFFFFFFFF7F0FF8FCFEFFFFFFFFFF90
:100BF00000000000F0FCFFFF00030F1F3F7FFFFF1E
:100C0000C0FEFFFFFFFFFFFF0007FFFFFFFFFFFF2B
:100C1000FFFFFFFFFFFFFFFF080818183C3C1C1EEA
:100C20001E0E06020200000000000000F0FEFC782C
:100C30000000000001033F3FC0E0E0C0C0C0C08032
:100C40000003070F1F3F7FFFFFE7E7FFFFFFFFFFE7
:100C5000F8F8FCFEFFFFFFFF7830000103038787F1
:100C60007F7FFFFFFFFFFFFFF0FFFFFFFFFFFFFFA3
:100C70008FFFFFFFFFFFFFFF0103030303030307D2
:100C80008787878787878787FF9F9FFFFFFFFFFFF4
:100C9000FF9F9FFFFFFFFFFF07070F1F1F3F3F3F04
:100CA000FFFFFFFFFFFFFFFFFEFCFCFCFCFCFCFE68
:100CB000FFFFFF000000FFFF878787000000878796
:100CC000FEFCFC0C0C0CFEFE00000100000000000D
:100CD000FE9F9FFFFFFFFFFB7F7F7F7F7F7F7F7FE9
:100CE000F8FCFEFFFFFFFCF87F67677F7F7FFF0058
:100CF000FFE7E7FFFFFFFF00FFE7E7FFFFFCF00074
:100D00008787878703000000FF9F9FFFFFFF3F004B
:100D1000FF9F9FFFFFFFFF00F09080E0C08000007A
:100D200080C0E0F0FFFFFEFC03030100C080000074
:100D3000E0F0FC00000000000000000000000000E7
:100D400000000000000000007F7FFF0000007F7FA8
:100D50000000601F01030100000000FFFFFFFF7F94
:100D60001F03010001030100FFFFFFFFFFFFFFFF63
:100D70001F033108051301040000000000000000FB
:100D8000FFFFFFFFFFFFF8E0FFFFFFFFFFFF030391
:100D9000E0F0F8FEFFFFFFFF01000000E0FCFCFFB9
:100DA000FF7F3F1F07010130FFFFFFFFFFFFFFFF36
:100DB000FFFFFFFFFFFFFFFF000000010303000034
:100DC000FFFFFFF8C0000000FFFFFF1F0703030144
:100DD00000000000000060F80000000000000003B8
:100DE0000103070F1F3EF880FFFFFFBF1F07010031
:100DF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03
:100E0000F8FCFEFFFFFFFFFF00000080F0FFFFFF88
:100E1000000000017FFFFFFF7F7F7FFFFFFFFFFFDD
:100E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
:100E3000FFFFFFFFFFFFFFFF0000000000000000BA
:100E400000000000010110F00000000000000000A0
:100E5000FEFEFE00F0F0C0E0FDFFFF07EFEFEF0049
:100E6000F8FCFCF8F0F8FDFCFDFDFDFDFD7D3D3DD1
:100E70007D7DFDFDFDFDFDFD000000003D332700F3
:100E800000000000FFFFFFFF00000000FDF3E7800F
:100E900000061E00F7F7F7003E3E3E0037373700EA
:100EA000FEFEFE00F7F7F700FDFDFDFDFDFDFDFD7B
:100EB000FFF0C0F0DCC7C0C0FDFD3D0C0080FFFFAF
:100EC0000F010001077DC1C1FFFF7FFFFFFFFFFF93
:100ED000808080C0E0F0FCFFFFFFFFFFFFFFFF000E
:100EE000C0C0C0C0C0C0C000CFC3C08000000000F0
:100EF000FFFFFF1F0701030F0000000000000000BC
:100F00000000E0FFFFFFFFFF000000FFFFFFFFFF0B
:100F100003010000C0F8FEFFFFFF7F1F07010080F4
:100F2000FFFFFFFFFFFF7F1FC0F0FCFFFFFFFFFF82
:100F300007010000C0F0FCFF0700180601C0C080D8
:100F4000FF000000E01F3F3F80808080C0E0F8FF8E
:100F50003F3F3F3F3F3F3FBFFFFFFFFFFFFFFFFF21
:100F6000FF00000000000000FF0000000000000083
:100F70000000000000000000FF7F1F0F03000000C2
:100F800000FFFFFFFFFF7F3F00FFFFFFFFFFFFFFAF
:100F900000FEFFFFFFFFFFFFFFFFFFFFFFFFFFFF61
:100FA0000F07010000000000FFFFFF7F3F1F070346
:100FB00000000000000000000080C0E0F0F8FCFE2F
:100FC000FFFFFFFFFFFFFFFFF0FEFFFFFFFF7F3F81
:100FD0003F3F3F3F3F3F3F3F000000000000000019
:100FE000FFFFFFFFFFFF3F1FFFFEFCF8F0E0C080A8
:100FF00000000000000000000000000000000000F1
:10100000FF80808080808080FF010101010101015B
:1010100080808080808080FF01010101010101FF4B
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF867
:1010A000FFFFFFFFFFFFF103FFFFFFFFFFFFFFFF5A
:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
:1010E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
:1010F000FFFFFFFFFFFFFFFEFFFFFFF8FCE08000A8
:10110000FFFFFFFF07000000FFFFFFFFFF1F0000C2
:10111000FFFFFFFFFFFFFF03FFFFFFFFFFFFFFFFDB
:10112000FFFFFFFFFFFFFFFFF8E106F8803060C020
:1011300000000000000000000F00000000000000A0
:10114000FFFF000000000000FFFFFFFFFEFCF1C7F3
:10115000FFF3C78F1F3FFFFF7F1F0F070300000034
:10116000FFFFFFFFFF01003FFFFFFFFFFFFF3FFF0C
:10117000FFFFFCF8F0C080008F1F3F7F7FFF6F1FD5
:10118000FFFF3939FFFFFFFF1F07010000000000CC
:10119000FFFFFFFF7F3F1F0FFCF800000000000370
:1011A000000000000038FFFF3F07000000008FFF35
:1011B000FFFF1F0003FFFFFFFFFFFF3FFFFFFFFFDA
:1011C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
:1011D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
:1011E000FFFFFFFFFFFFFFFEFFFFFFF8C0FFFF0055
:1011F000C08000003CFF000000000000000700006D
:101200000000000003C07C0F0000000000FC000094
:10121000FF3F0F0100000000FFFFFFFF0000000084
:10122000FFFFFFFFFF000000FFFFFFFFFFFF013F89
:10123000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
:10124000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
:10125000FFFFFFFFFEFCF0F0F0E080000000000068
:101260000700000000000000FFFF3F070000000033
:10127000FFFFFFFFFF3F0F03000000000000000022
:1012800000000000000000000000000000E0FF3F40
:10129000000000000000FFFF0000000000E0F0F090
:1012A0002060001F2000000000000000000000007F
:1012B0000000000000000018000000000000000016
:1012C00000000000000000001F03030100000000F8
:1012D0008FC3F3870F1F0307F8F0E0C08000C0E062
:1012E00000000000000000001E14000103000000C8
:1012F000C000000000000000000101030101030321
:1013000000808080C0C0C08000000000000000009D
:1013100000000000000000000000000001070E3C7B
:10132000070F4F9FBF0F02028000800000000000E7
:1013300000000000000000000000000000000000AD
:101340000003000000000000E800000000000000B2
:101350000000000000000000FE7F0F0300000000FE
:10136000000080C0E010000000000000000000004D
:10137000000000000000000000000000000000006D
:101380000000000000000000000000010F1F3CF002
:10139000001870E0C0000000000000000000000025
:1013A000000000000000000000000000000000003D
:1013B000000000000000000000000000000000002D
:1013C0000000000000000000000000010700000015
:1013D000031F70E0E000000080000000000000003B
:1013E00000000000000000000000000000000000FD
:1013F00000000000000000000000000000000000ED
:1014000000000000000000000000000000000000DC
:101410000000000007070F0F000010E1DFFFFFFFD3
:10142000000000C38CF1FFFF000001011FFFFFFF60
:10143000073EC0B8FCFFFFFFC0000000C0800020D6
:1014400000000000000007380000001E70C000000F
:101450000000000000000000070F03000000000073
:10146000FFFF070000000000FFFFFF3F0F03000029
:10147000FFFFFFFFFFFF7FFFFFFFFEFFFFFFFFFFFD
:10148000C00030E0C1C3CFFF0000000030C71FFF25
:10149000000000008000861C00000000000830E012
:1014A00000000000010103010C3F7FFFFFFFFFFF71
:1014B00070F8FEFFFFFFFFFF000000C0E0F0F0F853
:1014C000000000000000000000000000000000001C
:1014D000000000000000000000000000000000000C
:1014E00000000000000000000000000000000000FC
:1014F0000106000000000000C3071F0707030000EB
:10150000FFFFFFFFFFFEF000FFFCFCF8E000000023
:10151000F8C0000000000000000000000000000013
:10152000FFFFFFFFFFFFFFE0FFFFFEF8F1F8FE0007
:10153000F8F8FCE4CCFC7E00000000000000000095
:10154000000000000000000000000000000000009B
:10155000000000000000000000000000000000008B
:10156000000000000000000000000000000000007B
:10157000000000000000000000000000000000006B
:10158000000000000000000000000000000000005B
:10159000000001020C0000000000E07806000000DE
:1015A000000000000000000000000000000000003B
:1015B000000000000000000000000000000000002B
:1015C000000000000000000000000000000000001B
:1015D000000000000000000000000000000000000B
:1015E000FFFFFF0000000000FFFFFFFF0F000000F3
:1015F000FFFFFFFFFCF00000FFFFFFFF0000000007
:10160000FFFFC0FCFF00000000F80000E03C00000D
:1016100000000000000000000000000000000000CA
:1016200000000000000000000000000000000000BA
:1016300000000000000000000000000000000000AA
:10164000000000000000000000000000000000009A
:10165000000000000000000000000000000000008A
:10166000000000000000000000000000000000007A
:1016700080C0E0F0FCFFFFFF0000000000C0E3FFBF
:10168000FFFEF0E18FFFFF00EF3F7FFFFFFEE00076
:101690008080FFFFFFFFFFFE00FFFFFFFFFE8001D6
:1016A000FEFCF0E0800000000103070707070F0FB2
:1016B00000000000000000000F0F0100000000000B
:1016C0003F7FFFFFFF0F01FE00000000000006FC4F
:1016D000FFFFFFFCE0000000F081070F0F1F1F3D20
:1016E00000FFFFFFFF7FFFFF393141E0F0F0F8F826
:1016F000FFFFFFFFFFFFFFFFFDFDFEFEFEFCF08092
:10170000FCE0C000010307001C3C7EFFFFFEC000A0
:101710000000000001030F3F07031C3EFFFFFFDF37
:10172000FFFFFFFFFFFFFDF9DFEEECE0A0E0E0E0F0
:10173000FFFFFF7800000000E0E0C00000000000B4
:101740000000000000000000000000000000000099
:101750000000008080000000000000000000000089
:1017600000000000010101030000000103070F1F3A
:101770000F1FFFFFFEFEFCFC1F3F7FFFFFF9FFFF77
:10178000F8F0E0C0C0808000E0C000006070888C8D
:10179000000000000000000007030100000000003E
:1017A0000080C0C0E0200000000000000000406099
:1017B00000000000000103077F7F3F3F3F1F0F0332
:1017C0000F8FEFF7F7F7FBFB010101030303073F5F
:1017D000FBFFFFFFFFFFFFFF1F0100000000FFFFF7
:1017E000FFFF3F070100FFFFFFFFFFFFFF7F1FF726
:1017F00000000000000000000000000000000000E9
:10180000FF80808080808081FF01010101010181D2
:1018100081808080808080FF81010101010101FFC2
:10182000030F3F7FFFFFFFFFFFFFF987FFC7C0C028
:10183000FFFFFFFFFFFC003FF8FFFFFF3F7FFEFCC5
:1018400000F8F8FCFFFF0F3F07031C3EFFFFFFDF20
:101850000000000000000000000000000000000088
:101860001F1F3F3F3C784000FFFFE080000000006A
:10187000F0000000010101031F3F7FFFFFF9FFFFA0
:1018800000000000000000000001010303070F0F2B
:10189000F1FFFFFFFFFFFFFFF8F0F0F0F0F8FCFFB3
:1018A0000000000103070F1F0F1FFFFFFEFEFCFCDF
:1018B0000003070F0F1E3C78FCF8F080000000E0EA
:1018C00001020E0C1C1C3878000000010103070EF9
:1018D00060E0C0C0E0E0E0000000000103071F3F3F
:1018E0001F3EF8F0E0800000000000000000000053
:1018F0000000000000203070000000000101030320
:101900007FFFFFFFFFF8E0C0FFFFFFFF9B09000024
:1019100001070F1F3F3F3F7F0000E0F9F9FFFFFF86
:101920000000000000000000000000000103070F9D
:1019300000000000000000000000000000000000A7
:10194000000000000000FFFFFFFFFFFFFFFFFFF0B0
:1019500000000000000000F0FFFFFFFFFDFFE30FAD
:101960000000000000000100000000000000000076
:101970001F1F3F7F7F78E000000000000000000094
:101980000000000000000000C0FEF8F0C1C70F7F9B
:1019900000000000000000007E78077FFFFFFFFFCF
:1019A0000F8FCFFFFF7F3F1F00000FFFFFFFFFFFE5
:1019B000FFFFFFFFFFFFFF0301F0F0E1C3C7CFCF41
:1019C00000000000000018E00001FFFFEFEFEFEF64
:1019D00000000000003E7FFFFFFFE0FFFFFFFFFF72
:1019E000F7FEFCF0C080F0FFFFFFFFFFFFFFFFFFEF
:1019F000FF7F1F00000000FFFFFFFFFFFFFFFCF065
:101A0000000000000000C0FFFFFF3FFFFFFFFCFFE2
:101A100000000000000000F8FFFCF0F0DF3FFFFFD7
:101A2000FFFFFFFF1F1D7FFFFFFEFCF8E0800000AF
:101A3000FFFFFFFCFCF0F0E0800000000000000071
:101A4000000000000000000FC0000000FFFFFFFCCE
:101A5000000000000000C0FF000000000080000344
:101A600010E7080000000000000000000000000077
:101A70003FDF0F0F0703000100000000000000001F
:101A8000000000000000FFFE00000000001F7FFFBC
:101A900000000000001FFC000000000003FFFFFF2B
:101AA000FFFFFFFFFFFFFCC0000000010618000061
:101AB000FFFFFCE000000000000000C1030C00007C
:101AC000000000033CC00000000307FFFFFFFFFF12
:101AD000000000F0000000000000FFFFFFFFFFFF1C
:101AE000FF3F00000000000000070F1F7FFFFFFF07
:101AF000FC800000000F3F7FFFFFFFFFFFFFFFFFA5
:101B0000000000FF010000000FFFFFFFFFFFFFFFCD
:101B10000000FFFFFF0F01FEFFFFFFFFFFFFFFFFC2
:101B20000F0F1F3FFFFFFFFFFFFFFFFFFFFFFFFF45
:101B3000FFFFFFFFFFFFFEFCFCF0E0E0C0808080C5
:101B40000000000000000000000000000000000095
:101B50000000000000000000000000000000000085
:101B60000000000000000000000000000000000075
:101B70000000000000000000000000000000000065
:101B80000000000000000000000000000000000055
:101B90000000000000000000000000000000000045
:101BA0000000000000000000000000000000000035
:101BB0000000000000000000000000000000000025
:101BC0000000000000000000000000000000000015
:101BD0000000000000000000000000000000000005
:101BE000000000081C1C080000000010383820000D
:101BF00000000000000000000000000000000000E5
:101C000000000000000000000000000000000000D4
:101C100000000000000000000000000000000000C4
:101C200000000000000000000000000000000000B4
:101C300000000000000000000000000000000000A4
:101C40000F1F0707070F0F0F0F0F1F1F1F1F1F3F2C
:101C50003F3F3F7F7F7FFFFF00000000000000004C
:101C6000FEFFFFFFFFFFFEFEFEFEFCFCFCF8F8F8A7
:101C7000F0FFFFFFFFFFFFFF00000000000000007B
:101C80000000000000000000010101030303030342
:101C900017F7F7E7E7E7C781000000000000000042
:101CA00000000000003F7FFFFFFFFFFEFEFEFEFC86
:101CB000FCFCFFFFFFFFFFFF000000000000000032
:101CC0000000000000FFFFFFFF3F3F3F7F7F7FFFDF
:101CD000FFFFFFFFFFFEF8E0000000000000000033
:101CE0000000000000C0E3E7E7CFCFCFDFDF9F9F1A
:101CF000BFBF3F3F3F3F1F0F00000000000000003C
:101D00000100000001FFFFFFFFF9F9F9F1F3F3E330
:101D1000E3E7FFFFFFEFC703000000000000000043
:101D2000FF7F7FFFFFFFFFFFFFFFFFFFFFFFFEFEC5
:101D3000FEFEFCFCFCFCFEFF0000000000000000BA
:101D400080C0C0C0C0C1878F9F3F3F7F7F7F7F7FA4
:101D5000FFFFFFFFFFFF7F1F0000000000000000EB
:101D60000000000000FFFFFFFFE7E7CFFFFFFFFFDE
:101D7000C080FFFFFFFFFFFE00000000000000002A
:101D80000000000000F0F8FCFCFCFCF8F8F0F0802B
:101D90000038F0F0E0E0C0000000000000000000AB
:101DA0000103000000010101030303030707070704
:101DB000070F0F0F0F1F1F0F000000000000000093
:101DC000FFFF7F7F7FFFFFFFFFFFFFFFFFFFFFFFA3
:101DD000FEFEFEFEFEFCFEFF000000000000000014
:101DE000FFFFFFFFFFFFCF878F9FBFFFFFFFFFFFBB
:101DF000FFFF7F7F3F3F1F1F00000000000000002B
:101E0000C0F0FCFCFEFEFEFEFEFCFCF8F0C1018111
:101E1000C1E1FBFBF3F3E3C10000000000000000A0
:101E200000000000007FFF7F7FFFFFFFFFFFFFFF3D
:101E3000FFFFFFFFFFFFFFFC0000000000000000AD
:101E400000000000008FDFCFCFCF8F9F9F9F9F3F6D
:101E50003F3FFFFFFFFF7F3F00000000000000004A
:101E60000000000000F0F9FCFCFCF9F9F9F1F3F3D3
:101E7000F3E3E7E7E7E7FBF1000000000000000004
:101E80000000000000FFFFFFFFFFFFFFFFFFFFFF5D
:101E9000FEFEFEFCFCFCFEFF000000000000000057
:101EA000000000000087DFBFFFFF9F1F1F3F3F3F75
:101EB0003F7F7F7F7FFFFF7F00000000000000006A
:101EC0000000000000F3FFFBFBF3F7F7F7E7EFEF8D
:101ED000EFCFDFDFDF9F8FE7000000000000000092
:101EE0000000000000FEFFFEFFFFFEFCFCFCFCFC0F
:101EF000F8F9F9F1F1F3FBFD00000000000000002B
:101F000000000000001F7FFFFFFF7F7F7FFFFFFFBC
:101F1000FFFFFFFFFFFEFEFF0000000000000000CB
:101F20000000000000C0E1E3E7CFCFDFDF9F9F9F0D
:101F3000BF3F3F3F3F3F1F87000000000000000001
:101F400000000000003FFFFFFFF9F9F3FFFFFFFF74
:101F5000F0E0FFFFFFFFFFFF0000000000000000B7
:101F60000000000000FCFEFFFFFFFFFEFEFCFCE0A7
:101F7000000EFCFCF8F8F101000000000000000079
:101F800000000000003F7F1F1F1F3F3F3F7F7F7FFC
:101F90007F7FFFFFFFFFFFFF000000000000000049
:101FA0000000000000E1F7F7FFFFFFF8F0E0E0E0DD
:101FB000C0C0C0C08080E0C0000000000000000081
:101FC0000000000000F0F0E0E0E0C00000000000D1
:101FD0000000000000000000000000000000000001
:101FE00000000000000000000000000000000000F1
:101FF00000000000000000000000000000000000E1
:00000001FF

View File

@@ -0,0 +1,513 @@
:100000000000000000000000FF7F3F1F0F070301FA
:100010000080C0E0F0F8FCFEFFFFFFFFFFFFFFFFE6
:10002000FFFFFFFFFFFFFFFF0000000000000000D8
:1000300000000000000000000000000000000000C0
:100040000000000000000000FFFFFFFFFFFFFFFFB8
:100050000000000000000000FFFFFFFFFFFFFFFFA8
:100060000000000000000000FFFFFFFFFFFFFFFF98
:100070000000000000000000FFFFFFFFFFFFFFFF88
:1000800080FF808080FF8080BFFF809F8FFF808106
:1000900080FF80A0B0FF80BEBFFF80BFBFFF80BFDA
:1000A00002FE020202FE0202FEFE02FEFEFE02FE50
:1000B0000000000000000000000000000000000040
:1000C00000FF000000000000FFFF001F0F070301FA
:1000D00000FF00E0F0F8FCFEFFFF00FFFFFFFFFF66
:1000E0000000000000000F3F000000000000F0FCD6
:1000F0001F3F3F223F3F241FF8FCFC44FCFC24F838
:1001000000000000000000000000000000000000EF
:1001100000000000000000000000000000000000DF
:1001200000000000000000000000000000000000CF
:1001300000000000000000000000000000000000BF
:1001400000000000000000000000000000000000AF
:10015000000000000000000000000000000000009F
:10016000000000000000000000000000000000008F
:10017000000000000000000000000000000000007F
:10018000000000000000000000000000000000006F
:10019000000000000000000000000000000000005F
:1001A000000000000000000000000000000000004F
:1001B000000000000000000000000000000000003F
:1001C000000000000000000000000000000000002F
:1001D000000000000000000000000000000000001F
:1001E000000000000000000000000000000000000F
:1001F00000000000000000000000000000000000FF
:1002000000000000000000000000000000000000EE
:1002100000000000000000000000000000000000DE
:1002200000000000000000000000000000000000CE
:1002300000000000000000000000000000000000BE
:1002400000000000000000000000000000000000AE
:10025000000000000000000000000000000000009E
:10026000000000000000000000000000000000008E
:10027000000000000000000000000000000000007E
:10028000000000000000000000000000000000006E
:10029000000000000000000000000000000000005E
:1002A000000000000000000000000000000000004E
:1002B000000000000000000000000000000000003E
:1002C000000000000000000000000000000000002E
:1002D000000000000000000000000000000000001E
:1002E000000000000000000000000000000000000E
:1002F0003F3FFF430000000080C0F0F0D0F06000FE
:10030000000000010101031FFF7F3F1F0F07031FB4
:100310000080C0E1F1F9FFFFFFFFFFFFFFFFFFFFDC
:10032000000000008080C0F8FF7F3F1F8F87C3F967
:100330000080C0E0F0F8FCFAFFFFFFFFFFFFFFFBCB
:100340003F7FFF0F1F1F3F7FFF7FFF1F1F1F3F7F4D
:100350003FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFF7D
:10036000F0E0C0F0F8FCFCFEF1E1C0FFFFFFFFFF92
:10037000F0E0C0F0F8FCFCFEF1E1C0FFFFFFFFFF82
:100380000000000103070707FF7F3F1F0F07070754
:100390000080C0E1F3FFFFFFFFFFFFFFFFFFFFFF54
:1003A00000000080C0C0F0C000000080C0C0F0C0ED
:1003B00000000080C0C0F0C0FFFFFF9FCFC7F7C79D
:1003C0000F0F0F0F0F0707030F0F0F0F0F07070375
:1003D0000F0F0F0F0F070703FFFFFFFFEFE7E7E325
:1003E000E0E0E0C0C0808000E0E0E0C0C0808000CD
:1003F000E0E0E0C0C0808000E0E0E0C0C0808000BD
:10040000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
:10041000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
:10042000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
:10043000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
:10044000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
:10045000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC
:10046000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
:10047000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C
:10048000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C
:10049000FFFFFFF3C70F070380F8FFFFFFFFFFFF1A
:1004A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C
:1004B000FF7F1FFFFFFFFFFFFFFFFFFFFFFFFFFFAC
:1004C000FFFFFFFFFFFFFFFFFFFFFFFFFFFEFCF847
:1004D000F8F8F8F8F1F0E3E79FFFFFFFFFFFFFFFF9
:1004E000FFFFFFFFFFFFFFFFFED88107070F0F1F72
:1004F0003F3F3FFFFFFFFFFFFFFFFFFFFFFFFFFF4C
:10050000FFFFFFFFFEF8FCFEFFFFFFFFFFFFFFFB0B
:10051000F1E3C3870703010300808080C0E0F0F1AE
:10052000F9FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5
:100530000000000000000000FFFFFFFFFFFFFFFFC3
:10054000FFFFFFFFFEF8FCFEFFFFFFFFFFFFFFFDC9
:10055000F8F1E1C303010003FFFFFFFFFFFEFEFE12
:10056000F0F8FCF8F8F0F181879801071F1F3F7F32
:100570001F0F3FFFFFFFFFFFFFFFFFFFFFFFFFFF1B
:10058000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B
:10059000FFFFFFFFFFFFFFFF879801071F1F3F7F40
:1005A0001F8F3FFFFFFFFFFFFFFFFFFFFFFFFFFF6B
:1005B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B
:1005C000FF7F7F7F7F7F7F3F3F3F3FBF9F9F1F1FFB
:1005D000FFFFFFFFFFFEFEFE1F1F0F0F07030000C0
:1005E000FFFFFFFFFFFFFF3F7FBF9F9FCFCFCFCF1B
:1005F00080C0C0E0FEFFFFFF3F1F073F7FFFFFFF00
:10060000FFFFFFFFFFFEFDF3FFFFFEFEFCFCF0E03F
:100610000F0F0F0F1F1F1F3FFFFFFFFFFFFFFEFE0C
:10062000E7E7C68000000003C0000001030F7FFF62
:100630003F7FFFFFFFFFFFFFFCFCF8FFFFFFFFFF17
:100640000F3F1F1F0FCFE7F7FBFFFFFFFFFFFFFF6E
:10065000F7F7EFEFCFDF9F9FFFFFFEFCFCF8F0E026
:100660003F3F3F3F1F1F1F1FFFFFFFFEFCFCFCFC27
:10067000C0800000000101017FFFFFFFFFFFFFFFBF
:10068000F8F2E6DFFFFFFFFF030307070F1F3F7FBF
:100690007F7F7F7F7F7F7F3F3F3F3FBF9F9F1F1FAA
:1006A000FFFFFFFFFEFCFCFC030100000000000058
:1006B000FFFFFF7F7F3F1F070080C0FCFFFFFFFFA2
:1006C00003010000C0FCFEFFFF7F7F7F7F7F7F3F35
:1006D0003F3F3FBF9F9F1F1FFFFFFFFFFFFEFEFF2C
:1006E0001F1F0F0F07030000FEFCFCFCFEFFFF3F77
:1006F0003F9FCFE0E3C70107070F0F0F0783C1F844
:10070000FFF38F3F7F7F3F1F80C0C0E0FEFEFCF8FD
:100710001F1F3F3F3F3F3F7F7FFFFFFFFF7F3F1F89
:10072000070F1F1F3F1F0F0F070F8F9FCFFFF3F9FB
:10073000FCFCFEFEFFFFFFFFF7F7EFEFCFDF9F9F11
:100740003F3F3F3F1F1F1F1FFFFFFFFEFEFCF8F054
:10075000C0800000000101017FFFFFFFFFFFFFFFDE
:10076000FFFFFFFFFFFEFEFFE0C080000000000073
:10077000030303030707070F00808080C0E0E0E069
:100780000F1F1F1F1F3F3F3FFFFFFFFBFBF3E383D5
:100790000000000000000000E7E76300000000C068
:1007A000FFFFFF3F07000000FFFFFFFFFF3F0100CB
:1007B000F0FFFFFFFFFFFFFF0080F0FFFFFFFFFFE5
:1007C00000000000F8FFFFFF3F1F3F1F0FFFFFFF6C
:1007D000FFFFFFFFFF600000FFFFFFFFFFFF7F073E
:1007E000FFFFFFFFFFFEFEFCFFFBF7CF1F3F7F7FFA
:1007F000F0F0F0F0F0F0F0F87FFFFFFFFF60000096
:1008000000000000000000000000000000000000E8
:10081000FFFFFFFFFFFFFFFF0000000000000000E0
:10082000000000000000FE7F00000000000000004B
:100830000700000000000000FE1E00000000000095
:100840003F3F00000000000007070707070F7F7FFA
:10085000FFFF7F01FFFFFFFFFFFFFFF3E7F7FFFF52
:100860000000FCFFFFFFFFFE000000E0F0F8F87C56
:1008700000000000000000003F1F0F0707010000FC
:10088000FFFFFFFFFFFF7F07FFFDF3E7EFCFCF8FF6
:10089000F8FCFEFFFFFFFFFF000000000080FEFFEE
:1008A00000000000000000000F0000000000000039
:1008B000FF1F000103030707FFFFFFFFFFFFFFFF0D
:1008C000FEFCF0E0E0C0C080071FFFFFFFFFFFFF5E
:1008D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28
:1008E0003FFFFFFFFFFFFFFF0000000000000000D0
:1008F000F0FEFFFFFFFFFFFF7F3F9FFFFFFFFFFFB8
:1009000000000000000000000002060C080010308B
:10091000070301E1F0F8F8FF80000080C0E0F0F884
:100920007F3F9FFFFFFFFFFFFFFFFFFFFFFFFFFF77
:10093000FFFFFFFFFFFFFFFFFFFEF8F0E0C0010732
:100940000707070F1F7FFFFFFEFCFCFCFEFFFF3FBA
:10095000070F0F0F0783C1F880C0C0E0FEFEFCF850
:1009600000000000080818108F1F1F0F07070783DB
:1009700000000000000008183F1F1F3F3F3F3F7F5F
:10098000FFFFFFFFFFFBFBF7F7EFEFEFE7F3F1E010
:1009900000386103061C007FFEFCF0E0E0C0C08070
:1009A000000212320073020680000080C0C0E0F036
:1009B0003F1F0F0707010000FFFFFFFFFFFFFFFFC3
:1009C000FFFFFFFFFFFFFF60FFFFFFFFFEF00000E4
:1009D000FFFEF8C00000000007000000000000005B
:1009E000FFFF1F0000000000FFFFFFE0000000000D
:1009F000FFFFFF0000000000FFFF000000000000FC
:100A000000000000000000000010302101392163C7
:100A1000003821033821037E001833202000031EF4
:100A2000003020212123067C003E20003C20007F56
:100A3000003F20003E202060001F30202101011FC8
:100A40000021210139212163004E08080808007E99
:100A5000000101010101033E0023260C2020206338
:100A6000002020202020007F00010101292921638E
:100A70000001010121212163003821212121033EB0
:100A800000382121033E2060003821212123043D2C
:100A90000038212107202067003026003801033E5E
:100AA000004E080808080818002121212121033ED2
:100AB0000021210103060C080021210101113163ED
:100AC0000001030600103063002222060C080818FB
:100AD000007103060C18007F0000000000000000F9
:100AE0000000000000000000000000000000000006
:100AF00000000000000000000000000000000000F6
:100B000000000000000000000000000000000000E5
:100B100000000000000000000000000000000000D5
:100B200000000000000000000000000000000000C5
:100B300000000000000000000000000000000000B5
:100B400000000000000000000000000000FFFFFFA8
:100B5000000000000000FFFF00000000000000FF98
:100B600000000000000000000000000000031FFF64
:100B700000000000000000FC1F3F3F3F7F18030FF4
:100B8000FCFCFCFCFEFEFEFC7FFF3F3F3F1F0F0016
:100B9000FFFFFFFFFFFFFFFF00000000000000005D
:100BA0000000000000000000000000000000000045
:100BB0000000000000000000000000000000000035
:100BC0000000000000000000000000000000000025
:100BD0000000000000000000000000000000000015
:100BE0000000000000000000000000000000000005
:100BF00000000000000000000000000000000000F5
:100C0000C0FEFFFFFFFFFFFF3F1FFFFFFFFFFFFFD4
:100C1000F0FEFFFFFFFFFFFFF7F7E7E7C3C3E3E1E6
:100C2000E1F1F9FDFDFFFFFF1F7F1F01F0FD7BB725
:100C3000FFFFFFFF3EFCD8DE3F1F1F3F3F3F3F7ED1
:100C4000FCFBF7EFDFBF7FFFFFE7E7FFFFFFFFFFE3
:100C5000F7F7FBFDFEFEFFFFB7CFFFFEFDFD7B7B41
:100C6000BFBF7FFFFFFFFFFF0F80F0FEFFFFFFFF13
:100C700070000000000080C0FDFBFBFBFBFBFBF7EE
:100C80007B7B7B7B7B7B7B7BFF9F9FFFFFFFFFFF54
:100C9000E09098F8FCFCFCFEF7F7EFDFDFBFBFBF8A
:100CA000FFFFFFFFFFFFFFFFFFFFFFFFFBFBF3F176
:100CB000FFFFFFFFFFFFFFFF7B7BFFFFFFFF7B7B54
:100CC000F9FBF3F3F3F3F1F1FEFCFDFEFEFEFEFE95
:100CD000F19090F0F0F0F0F87F7F7F7F7F7F7F7F53
:100CE000F8FCFEFFFFFFFCF87F67677F7F7FFFFF59
:100CF000FFE7E7FFFFFFFFFFFFE7E7FFFCF30FFF63
:100D00007B7B7B7BFCFFFFFFFF9F9FFFFF3FFFFF86
:100D1000FF9F9FFFFFFFFFFFF19080E0C183070768
:100D2000FFFFFFFEFFFFFEFCC0800000C08040F020
:100D30001F0F030000000000FCE080000000000026
:100D400018060000000000007F7FFFFFFFFF7F7F8D
:100D50000F0F7F1F01030100FFFFFFFFFFFFFF7F5A
:100D60001F03010001030100FFFFFFFFFFFFFFFF63
:100D70001F0331080513010400000080A04080001B
:100D8000FFFFFFFFFFFFF8E0FFFFFFFFFFFF030391
:100D9000C08000000080E0FC0100000000000000B6
:100DA000FF7F3F1F07010100C0C0FFFFFFFFFFFFE4
:100DB0001FFFFFFFFFFFFFFFFFFFFFFEFCFCFCF834
:100DC00000000000000F3FFF0000000000C0E0F046
:100DD000F3E7CFCFCFC38000F3C387FFFEF8000057
:100DE000F0E0C0000000000080C07E1F0100000095
:100DF000000000C0FC7E070300000000000000802F
:100E000000000000000000000000000000000000E2
:100E10000000000000000000016070381E0F030099
:100E2000C0E070381C8EFFFF0501000000000000CC
:100E30008080000000000000FFFFFFFFFFFFFC01BB
:100E4000FEF8E0FCFEC20FEF000000000000000012
:100E5000010101FD080000E0030307F9111010FF74
:100E6000F8FCFFFFFFFF3203FDFDFDFDFD7D3D3D75
:100E70007D3DDDEDEDF5F5F53F3F0001020C383F1E
:100E8000FFFF00000000FFFFFFFF0001020CF8FF62
:100E9000FFF961FF080808FF0101013F0808083F4A
:100EA000010101FF080808FFFDFDFDFDFDFDFDFD41
:100EB000FFFFFFCFE3F8FFFFFDFDFDFFFF7F000019
:100EC0003F3FFFFEF8800000FFFFFF7F7F7F7F7FB7
:100ED000FFFFFFFFFFFFFFFF00000000000000001A
:100EE00000000000000000000F03000000000000F0
:100EF000FFFFFF1F0701030F0000000000000000BC
:100F00000000E0FFFFFFFFFF000000FFFFFFFFFF0B
:100F100003010000C0F8FEFFFFFF7F1F07010080F4
:100F2000FFFFFFFFFFFF7F1FC0F0FCFFFFFFFFFF82
:100F300007010000C0F0FCFF070307393EFFFFFF79
:100F4000FFFFFFFF1FE0C0C0FFFFFFFFFFFFFFFF2E
:100F5000C0C0C0C0C0C0C0C0000000000000000091
:100F6000FFFF000000000000FFFF03030303030373
:100F70000303030303030303FFFFFFFFFFFFFFFF61
:100F800000FFFFFFFFFFFFFF00FFFFFFFFFFFFFF6F
:100F900003FFFFFFFFFFFFFF0000FFFFFFFFFFFF5B
:100FA000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51
:100FB000FFFFFFFFFFFFFFFFFF7F3F1F0F07030143
:100FC0000000000000000000FFFFFFFFFFFFFFFF29
:100FD0003F3F3F3F3F3F3F3F000103070F1F3F7F22
:100FE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11
:100FF00000000000000000000000000000000000F1
:10100000FF80808080808080FF010101010101015B
:1010100080808080808080FF01010101010101FF4B
:10102000FFFFFFFFFFFFFFFCFFFFFFFFF8E0810373
:10103000FFFFCF1F7FFFFFFFFFFFFFFFFFFFFFFF50
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
:10105000FFFFFFFFFFFFFFF8FFFFFFFFFFE0800044
:10106000FFFFFCE0C0000000F080000000073F0030
:101070000F0F3F7FFFFFC300FFFFFFFFFFFFFFF8E2
:10108000FFFFFFFFFFFFFC3FFFFFFFFFFFFFFF032F
:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
:1010B000FFFC000000FFFFFFC00000000000F0FF89
:1010C000000000000000030F000100000000FFFF0F
:1010D00000FF00003F0300FFFFFFFF07FFFF1FC3EC
:1010E000FFFFFFFFFFFFFFFF83F1FFFFFFFFFFFF9A
:1010F000FFFFFFFFFFFCF8C1FFFFFFE7031F7FFFBC
:10110000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
:10111000FFFFFFFFFFFFFFFFFFFFFFFEF0E0E0F834
:10112000FEE0800000000000071EF9077FCF9F3F10
:10113000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
:10114000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
:10115000FFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFA0
:10116000FFFFFFFFFF0180C0FFFFFFFFFFFF3F7F8B
:10117000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
:10118000FFFFFFDE9CFFFFFFE0F8FEFFFFFFFFFF1A
:101190007F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFF5F
:1011A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
:1011B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
:1011C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
:1011D000FFFFFFFFFFF8C000FFFFFFE080000000FF
:1011E000FCE0C00000000001000000073F0000FF1D
:1011F0003F7FFFFFC300FFFFFFFFFFFFFFF8FFFF81
:10120000FFFFFFFFFC3F83F0FFFFFFFFFF03FFFF38
:10121000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
:10122000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
:10123000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
:10124000FFFFFFFFFFFFFFFFFFFFFFFFFFFCF0803F
:10125000FFFFF8E081030F0FCF1F7FFFFFFFFFFFAE
:10126000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
:10127000FFFFFFFFFFFFFFFF000000000000000076
:10128000000000000000000000000000000000005E
:101290000000000000000000000103070F17070F07
:1012A000DC99FFE0C7E0C08078F8F00000000000A3
:1012B00000000107070F3F663F7FFFFCE1871E3CF0
:1012C000F8F0F0E0C0800000000000000000000026
:1012D000703C0C7880000000060E1E3474E828185C
:1012E0000000061820C0C080000101020403071E90
:1012F00030F0E0C0C080800701060E0C1E7EFCFCB2
:101300008000000000000000000001030E1060805B
:101310001C70E0071F7FFFFF0F1FFFFFFEF8F1C3E8
:10132000F8F0B06040F0FCFC00000000000000009D
:10133000030C100000000000030F1F7C00000000E1
:10134000FFDC3F7F4F03000017FCF8F0F8F07E1E33
:101350000300000000000000010000000000000089
:10136000FFFF7F3F1F0F0700FFFFFFFFFFFFFFF89B
:10137000FFFFFFFFFCF00000FFFFC73FFF3F07013B
:10138000FFFFFFFFFFFFF880FFFFFFFEF0E0C30F4E
:10139000FFE78F1F3FFEFEFEF8F0C0800000000058
:1013A000000000000000000300000000030CF0C07B
:1013B000000F30C00000000000000000000000002E
:1013C0000000000000000000000000000007010015
:1013D00000000F1F1FFF871F7FFFFFFFFFFFFFFFA3
:1013E000FCF8F8F0E0C1C73F0000071F7FFFFFFFD8
:1013F0001FFFFEFFFEFFFEFFFF1F000000000000BA
:10140000FFFFFFEF4F070000FFFFFFFFFFFF7F3FE2
:10141000FFFEFCFCF8F8F0F0000000000000000007
:1014200000000000000000000000000000000000BC
:1014300000000000000000000000000000000000AC
:10144000000000000000000000000000000000009C
:101450000F03010000000000F8F0FC3F0300000350
:10146000000000F8FC7EFFFF00000000000000808C
:10147000000000000000000000000000000000006C
:10148000000000000000000000000000000000005C
:10149000000000000000000000000000000000004C
:1014A00000000000000001000C3E7677F3E3F8FE38
:1014B00070F87E1F8FE0F93C000000C0E0F0F0B84B
:1014C0000000000000007F80000000030001F00029
:1014D00000007F8C70800000001FFF1CE0000000F7
:1014E0003FFEC00000000000F0000000000000000F
:1014F00000000000000000000000000000000000EC
:1015000000000000000000000000000000000000DB
:1015100000000000000000000000000000000000CB
:101520003F9FB7C3C6E0FEE0CFF3FEF8F1F83E0000
:1015300008C0FCE4CCF47E000000077E0F00010729
:101540000E70800000F0FFFF00000000000000F0BF
:10155000000000000000031F00000000013FFFFF2B
:10156000071F3FFFFFFFFFFFFFFFFFFFFFFFFFFF23
:1015700080F8FFFFFFFFFFFF000000E0F8FEF8E04B
:101580000003070300000000FFFFFFFFFF1F07012C
:10159000FFFFFEFDF3FFFFFFFFFF1F87F9FFFFFFC8
:1015A000FFFFFFF0E0FFFFFFFFFE000000E0F0F8AC
:1015B000F800000000000000FF7F1F0F0700000080
:1015C000FFFFFFFFFFFF3F0FFCFFFFFFFFFFFFFFDE
:1015D0000000E0F8FFFFFFFF0000000000C0F0FF88
:1015E0000000007F3F0F070300000000F0FFFFFF37
:1015F00000000000030FFFFF00000000FFFFFFFFDF
:1016000000003F0300FFFFFFFF07FFFF1FC3FFFFB7
:10161000FFFFFFFFFFFEE000FFFFFEF08000000085
:10162000FCC0000000000000FF7F3F1F070100001A
:10163000FFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFF7A
:10164000FFFFFFFFFFFFFFFF1F0F0F07010000005D
:10165000FFFFFFFFFFFF7F00FFFFFFFFFFFFFCF02B
:10166000FFFFFFFFF8800000FEF8E0000000000030
:10167000000000000000001F00000000000003FF49
:101680000001FFFFFFFFFF1F0FFFFFFFFFFFFFFF37
:1016900000007FFFFFFFFFFFFFFFFFFFFFFFFFFED9
:1016A000E1030F1F7FFFFFFFFEFCF8F8F0F0F0F002
:1016B000FFFFFFFFFFFFFFFFF0F0FEFFFFFFFFFF59
:1016C0000000FFFFFF0FF10000000000000007FF17
:1016D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1C
:1016E000FFFFFFFFFFFF7F7FB93141E0F0F0F8F827
:1016F0005F1F0F0F07010000FCFCFDF9F183037170
:10170000031F3FFFFFFFFFFFFCFCFEFFFFFFFFFF8C
:10171000000000000103FFFF07031D3EFFFFFFFF66
:10172000FFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFF09
:10173000FFFFFFFFFFFFFFFFFDF1F8FCFEFFFEC014
:10174000FFFFFFFFFFFFFFFF00FCFFFFFFFFFFFFAB
:10175000FF3F0F8080E0F8FFFFFFFF3F7F0F030F89
:1017600000000000010101030000000103070F1F3A
:101770000F1FFFFFFFFFFFFF1F3F7FFFFFFFFFFF69
:10178000FFFFFFFFFFFFFFFFFFFFFFFF1F0FC7C3AD
:10179000FFFFFFFFFFFFFFFFC0C0C0C0E0E0E1E7C9
:1017A000FF7F3F3F1F1FCFEFFFFFFFFFFFFF3F1DEB
:1017B000FFFFFFFFFFF1F3C7000000C0C0E0F0FC37
:1017C0000F0F0F0707070303FEFEFEFCFCFCF8C02B
:1017D0000301000000000000000000000000FFFF07
:1017E000000000000000FFFF00000000000000F00B
:1017F00000000000000000000000000000000000E9
:10180000FF80808080808081FF01010101010181D2
:1018100081808080808080FF81010101010101FFC2
:10182000030F070000000000FFFFF9070707000093
:10183000FFFFFFFFFFFC003F80F8E0C0000007FF54
:10184000070707030103FFFFFFFBFDFEFFFFFFFF8D
:1018500000000000010103037FFFFFFFFFFFFFFF08
:10186000E0E0C0C0C0808000000000000000000177
:10187000000001070F7F7FFF1F7FFFFFFFFFFFFFBC
:101880000003070F1F3F3F3FFFFEFEFCFCF8F0F098
:101890000E0000000000000000000000010703002F
:1018A0001F3F7FFFFFFFFFFFFFFFFFFFFFFFFFFF68
:1018B0000003070F0F1F3F7FFBF7EFFFFFFFFF1F27
:1018C000FEFCF0F0E0E0C08000000000000000003E
:1018D0001F1F3F3F1F1F0F0F0000000103071F3C8A
:1018E0001F3FFFFFFFFFFFFFF0F0E0E0C0808080C0
:1018F0001F1F1F3F7F1F0F0F000000000101030388
:101900007FFEFCF8F0E7DC380000000004860F0FD3
:1019100001070F1F3F3F3B7FFC80E0F8F8E0E080CD
:1019200001070F1F3F3F3F7F000000000000000045
:1019300000000000000000000000000000000000A7
:10194000000000000000FFFFFFFFFFFFFFFFFFFFA1
:1019500000000000000000F0FFFFFFFFFDFFE3EFCD
:10196000FFFFFFFFFEFEFFFFFFFFFFFCF000000098
:10197000DFDFBF7F7F79E7FFFFFF1F070301010064
:101980000000000000000000C0FFFFFFFFFFFEF8A6
:1019900000000000000000007FFFFFFFF08000005B
:1019A0000080C0F0FEFFFFFFFFFFF000000000001E
:1019B000000000000080E3FFF900000000000000CC
:1019C00000000000000018F8FCFDFFE0000000002F
:1019D00000000000003E7FFFFCF0E00000071F3F1A
:1019E0000001010F3F7FFFFFBF0700000000000064
:1019F000FFFFFFFFFFFFFFFFFFFC0C000000030FD6
:101A0000000000000000C0FF1F030000FFFFFFFFF9
:101A100000000000000000F8FFFFCF00FFFFFFFF05
:101A2000FFFFFFFFFFFEF8E0000103071F7FFFFF3E
:101A3000FFFFFFF8C00000017BFFFFFFFFFFFFFF7C
:101A4000000000000000000FFFFFFF00FFFFFFFF8E
:101A5000000000000000C0FFFFFFFF3F00E0E0E3E8
:101A6000FFFF1F3F7F7FFFFFFFFFFFFFFFFFFFFF26
:101A7000FFDFCFCFE7F3F0E0CFFFFFFFFFFFFFFF78
:101A8000000000000000FFFFFFFEFFFF001F7FFFC0
:101A900000000000001FFFFFFF01C0E000FFFFFF8C
:101AA000FFFFFFFFFF00033FFFFFFFFEF9E7FFFF20
:101AB000FFFFFCE00000FEFFFFFFFF3EFCF3FFFF27
:101AC000000000033FFFFFFFFFFCF80000FEFFFFE8
:101AD000000000F0FFFFFFFFFFFF0000000080FF9D
:101AE000FF3F03030100000387C0C00000000000A7
:101AF000FFFFFFFFFFF0C0800000000000000000BB
:101B0000000000FFF9FEFFFFF0000000000000F3FE
:101B10000000FFFFFF0FF1000000000F3F7FFFFFFD
:101B2000FFFFFFF0000000000000000000000000C8
:101B3000FFFC000000000103030F1F1F3F7F7F7F9A
:101B40000000000000000000000000000000000095
:101B50000000000000000000000000000000000085
:101B60000000000000000000000000000000000075
:101B70000000000000000000000000000000000065
:101B80000000000000000000000000000000000055
:101B90000000000000000000000000000000000045
:101BA0000000000000000000000000000000000035
:101BB0000000000000000000000000000000000025
:101BC0000000000000000000000000000000000015
:101BD0000000000000000000000000000000000005
:101BE000000041EBFFFF4836000082D7FFFF26DAF6
:101BF0005A1A222E16161F19DAECB4B4B4C8F89883
:101C000000000000000000000000000000000000D4
:101C100000000000000000000000000000000000C4
:101C200000000000000000000000000000000000B4
:101C300000000000000000000000000000000000A4
:101C40000000000000000000000000000000000094
:101C50000000010101010303030707000000000069
:101C60000000007FFF3F3F3F7F7F7F7F7FFFFFFFC1
:101C7000FFFFFFFFFFFFFFFFFFFFFF00000000006F
:101C8000000000F0F8F8F8F8F8F0F0F0F0E0E0E02C
:101C9000C0C0C080FFFFFFFFFFFEFC00000000008F
:101CA00000000000000000000103070F0F0F1F1FBE
:101CB0001F1F1FBFBFBF3F3F3F3F0F00000000007F
:101CC0000000000000000000FFFFFFFFF9F9F1F342
:101CD000F3F3E7E7E7FFFFFFFFFFFF00000000006F
:101CE0000000000000000000FEFFFFFFFEFEFEFE01
:101CF000FEFCFCFDFDF9F9F9F1C000000000000058
:101D00000000000000000000071F3F3F7F7F7FFFB3
:101D1000FFFFFFFFFFFFFFFFFFFE78000000000056
:101D20000000000F0303070FFFFFFFFFCFCFCF8F90
:101D30009F9F1F1F3FFFFFFF7F3F1F00000000000E
:101D4000000000FCFEFEFEFEFEFCFCFCF9F9FBFBC5
:101D5000FBF3F3F7F7E7E7E7E7F3F800000000002D
:101D600000000000000000000F3F7FFFFFFFFEFFAC
:101D7000FFFFFFFEFCFFFFFFFFFFFF000000000072
:101D80000000000000000000FFFFFFFF3F3F7FFF5B
:101D9000FFFFFC0001FFFFFFFFFEF000000000005E
:101DA000000000000000000080C0E0E0E0E0C0C0F3
:101DB00080800000C0808000000000000000000063
:101DC0000000000F1F0303030F0F0F1F1F1F1F3FF4
:101DD0003F3F3F3F7F7F7F7FFFFF7F00000000008E
:101DE000000000FFFFFFFFFFFFFEFCFCFCFDFFFF0C
:101DF000FFFFFFF7F7F3F3F1E1F0F8000000000058
:101E0000000000FEFFFFFFFFFF7F3F7FFFFFFFFFA0
:101E1000FEF8FCFEFFFFFFFFFFFFFE0000000000DA
:101E20000000000080E0E0F0F3F7F3F3E7E7C78796
:101E30000F0F0F0F0FDFDF9F9F1F0F00000000002D
:101E40000000000000000000FCFEFEFEFEFCFCFCAA
:101E5000FCFCF9F9F9FFFFFFFFFBE10000000000C7
:101E600000000000000000007FFF7F7F7F7FFFFFFA
:101E7000FFFFFFFFFFFFFFFFFFFFFF00000000006D
:101E8000000000000000000087CFE7E7E7CFCFCFDA
:101E90008F9F9F9F1F3F3F3F3FDF8F00000000004D
:101EA0000000000000000000FCFEFDFFFFFCF8F851
:101EB000F9F9F9F1F3F3E3E3E7F7FB0000000000C1
:101EC00000000000000000003FFFFFFFFFFFFFFFDA
:101ED000FFFFFFFFFEFEFEFEFCFCFF000000000017
:101EE00000000000000000009FFFDFDF9FBFBFBFBA
:101EF0003F7F7F7F7FFFFFFFFF7F3F0000000000ED
:101F00000000000000000000F0FBF7FFFFF3E3E338
:101F1000E7E7E7C7CFCF8F8F9FDFEF00000000001C
:101F20000000000000000000FEFFFFFFFEFEFEFEBE
:101F3000FCFCFCFDF9F9F9F9F1F0FC0000000000EF
:101F40000000000000000000010F1F3F7F7FFFFF27
:101F5000FFFFFFFFFFFFFFFFFFFF3F00000000004C
:101F60000000000000000000FFFFFFFFCFCF9FFF39
:101F7000FFFFFF8000FFFFFFFFFFF80000000000F1
:101F80000000000000000000E1F3F8F8F8F9F1F1BA
:101F9000E3E3030373E7E7C7C78F0F000000000008
:101FA0000000000000000000FFFFFFFFFFFFFFFF39
:101FB000FFFFFFFEFEFEFEFCFCFFFE000000000037
:101FC00000000000000000000FBFBFFFFFFEC08048
:101FD0000000000000000000000000000000000001
:101FE00000000000000000008080000000000000F1
:101FF00000000000000000000000000000000000E1
:00000001FF

View File

@@ -0,0 +1,513 @@
:10000000C5D5E56F3AA6E5B7C23C617CCB3FCB12C4
:100010006722D6E5CDD5627EFE0120083AD8E547B5
:100020000E1F1811FE0220083AD9E5470E1D1805CB
:10003000CD55600E052AD6E57CD5CD002DD1CB421D
:1000400028022C2C3A74E5B7200406040E00702C0C
:1000500071E1D1C1C9FE073801AFFE0338023D3D51
:10006000473AD6E5B7C83AD7E5B7280C2B7EFE0746
:100070003801AFFE0238013D4F2AD6E52D7CC5CDB3
:10008000D562C17EFE043801AFFE0238013D5F3A01
:10009000D7E5B7280C2B7EFE043801AFFE023801ED
:1000A0003D6FCB42280D788780834F060021C760C3
:1000B0000946C9788780835F8783858787814F0654
:1000C0000021D0600946C9000300141514181B183C
:1000D000000200000303030300020000010301010A
:1000E00003030303010301010002000003030303F0
:1000F000000200001012101013131313101210102E
:1001000011131111131313131113111110121010D5
:100110001313131310121010181A18181B1B1B1B83
:10012000181A1818191B19191B1B1B1B191B191935
:10013000181A18181B1B1B1B181A18187CCB3FCB3E
:100140001267E5CDD5627EE1CB4220040F0F0F0F81
:10015000E60F4F427CCD002D2CCB4028022C2C7E6C
:10016000B177E6C0200A2D7EFE0420023600180C6E
:10017000FE4020082D7EFEFD200236FBE1D1C1C9E4
:100180002100E0545D133600016805EDB0ED5FCD50
:10019000EC313270E5FD2158E43A8EE5FE19380461
:1001A000D61818F832B4E66F260029EB210034196E
:1001B0005E23561A32AFE613AF327AE51ACB7F20B0
:1001C00007FE1FC8327AE5131ACB7F28EFCB7728BA
:1001D000031318F43E013279E51AE61F3278E5324E
:1001E00077E51ACB6F28093E023279E52177E534AD
:1001F000AF3275E5131AE6C0FE8020101AE61F32F2
:1002000077E52178E5963C3279E518E81AE6C0FEF4
:10021000C020B51ACB6F2006E61F3275E5131AE62B
:10022000E0FEE020151AE61F3276E5133A76E52166
:1002300075E5BE38D7CD3F6218F2CD3F6218CD3A92
:100240007AE5FE04287FFE0B3004FE073042FE06EE
:10025000281D3A79E5B728782177E54E47C53A75E4
:10026000E569CDD562C13A7AE5770D10F0186121C4
:10027000FDE47EFE043059344787804F0600217B21
:10028000E5093A75E57723ED4B77E5702371184062
:10029000FE08200ECD0B63011800FD0921E9E434AE
:1002A0001821FE09200DFDE5FD2140E4CD0B63FD85
:1002B000E11810FE072005CD5A631807FE0A200337
:1002C000CD7463180B3A75E52A78E5CDD56236040E
:1002D0002175E534C92600292929444D29094F06ED
:1002E00000090100E009C91100E43AFCE4B7280D57
:1002F000471A6F131A67137DCDAA2F10F4C900088F
:100300000D1018000808090B0B0A08FD360A00FE3C
:10031000092008AF320CE53D320BE53E01FD770FB9
:10032000FD77103A75E5FD7701FD7704878787FD36
:1003300077073A78E5FD7703FD7705878787FD77AF
:10034000063E06FD7709AFFD7700FD7702FD770ACF
:10035000FD770CFD770DFD770EC921FCE47EFE20B4
:10036000D034874F06002100E4093A75E577233A37
:1003700078E577C92170E57EB7200C3A78E53272CE
:10038000E53A75E53271E535C91FCB113AFDE43226
:1003900069E5DD217BE52169E57EB7C835DD7E00B5
:1003A000DD6601878787CB3C1F6F1110D019DD7E7A
:1003B00002DD96013C47CB41280836172C2C361716
:1003C000180636102C2C36142D2D1180001910E62D
:1003D000110300DD1918BF3ACDE54F87816F260064
:1003E0002929292922F6E42130640600097E32F801
:1003F000E4213964097E32F5E4214264097E32FB4E
:10040000E479E6073C4F213064097E326EE52142F3
:1004100064097E326FE53A8EE5CDEC314F0600215E
:100420004B64097E32D8E5214E64097E32D9E5C994
:100430000004080E0A070F0500000001000100007B
:100440000100000101010001010001090A080D0E6F
:100450000CAF3289E57EB7C83D202423EB1A6F1319
:100460001A13D5CB3FCB105D57D5CD002DD1CB4046
:1004700028022C2CEB7CCDD562E5DDE1E118D63DE0
:100480002008237E3288E52318CB06013D20142363
:100490004623CB78280D780630E67FFE0238043DEF
:1004A0003289E53A88E5E60FCB4B280E4FDD7E001A
:1004B000E6F0B1DD7700DD23180E0F0F0F0F4FDDD3
:1004C0007E00E60FB1DD77007E12133A88E5E6F094
:1004D00012137BFE7020021E90FEF020031E1014EB
:1004E00010C13A89E5B728083D3289E5063018B3CE
:1004F00023C35564C7C7C7C7C7C7C7C7C7C7C7C709
:100500002136D5111F68CD2D303E24CD3E30DB0481
:10051000CB57282DDB030F0FE63CC61021FA655F91
:100520001600195E235623D57E23666F11B0D6EBD5
:10053000CD2D303E24CD3E30D121B0D7CD2D301839
:1005400039DB03070707F5E6065F160021FA651990
:100550005E235623F1D50707E606C6085F1600217D
:10056000FA65197E23666F11ACD6EBCD2D303E2493
:10057000CD3E30D121ACD7CD2D300606C52136D5A4
:10058000112D68CD2D303E0CCD3E302136D5111FBA
:1005900068CD2D303E18CD3E30C110E0C93A57E449
:1005A000FE01200B2128DA113B68CD2D30184A3A84
:1005B00057E4FE0220160EC6213CDB115568CD2DF6
:1005C0003021BCDB115A68CD2D30182D3A57E4FE8E
:1005D00003200B21B2DC115F68CD2D30181B3A5778
:1005E000E4FE0420140EC621B6DD116F68CD2D3057
:1005F0002136DE117A68CD2D30C9C667DC67F26717
:1006000008681E6887679C67B1671E681E681E6859
:100610001E681E681E681E6828671E683B671E6885
:100620004E671E6861671E6874671E681E681E68D4
:100630001E685C664A6681666F66A6669466CB66CF
:10064000B966F066DE6615670367203620434F49BA
:100650004E53203120504C415945520031322043F5
:100660004F494E53203220504C415945525300209F
:100670003520434F494E53203120504C415945526B
:1006800000313020434F494E53203220504C4159C5
:1006900045525300203420434F494E5320312050BF
:1006A0004C4159455200203820434F494E53203287
:1006B00020504C415945525300203320434F494E5E
:1006C00053203120504C4159455200203620434F91
:1006D000494E53203220504C41594552530020324C
:1006E00020434F494E53203120504C415945520030
:1006F000203420434F494E53203220504C4159451D
:10070000525300203120434F494E20203120504C7D
:100710004159455200203220434F494E5320322048
:10072000504C415945525300203120434F494E20EF
:10073000203620504C415945525300203120434F20
:10074000494E20203520504C41594552530020310C
:1007500020434F494E20203420504C41594552539C
:1007600000203120434F494E20203320504C415926
:1007700045525300203120434F494E202032205013
:100780004C41594552530041202D203320434F49BD
:100790004E53203120504C415945520041202D20CC
:1007A0003220434F494E53203120504C415945523D
:1007B0000041202D203120434F494E202031205030
:1007C0004C415945520042202D203120434F494E83
:1007D00020203620504C41594552530042202D20B4
:1007E0003120434F494E20203520504C415945522D
:1007F000530042202D203120434F494E20203320EA
:10080000504C41594552530042202D203120434F36
:10081000494E20203220504C41594552530000028D
:10082000494E534552542020434F494E0002202048
:100830002020202020202020202000064031393890
:10084000342020204952454D20434F52504F5241B1
:1008500054494F4E00808284860081838587000240
:100860004C4943454E534544202046524F4D006865
:100870006A6C6E70727476787A00696B6D6F7173E2
:100880007577797B00CD5E5F3EFF32D1E5CD286D77
:100890003EA8CD3E303E0132A9E5CD5E5FC3CF25F7
:1008A0003100E82110D03600545D13015715EDB02A
:1008B000AF32A7E5329DE5326AE5FB3E5032B5E541
:1008C00021B5E57EFE14380B2136D5119169CD2D69
:1008D000301812B7200236282126D53600545D1371
:1008E000013500EDB011A0693AB2E5FE02380311FE
:1008F000B2692134D7CD2D30CD7F6921AAE57EE6BE
:100900000AFE0A200E3AB2E53D2732B2E5AF32B711
:10091000E5181B7EE605FE05C2C0683AB2E5FE0298
:10092000DAC068D6022732B2E53E0132B7E5AF320F
:10093000B9E532B8E53290E53296E53C32B2E6CB25
:10094000412006328EE53294E53AE0E5328FE53219
:1009500095E52100002291E52292E52297E5229873
:10096000E5218000DB04CB4720022D2D22E3E52189
:1009700010D33600545D13017F09EDB0C30F5D2124
:1009800042DC11C669CD2D300E0211B2E5CD5F30CB
:10099000C90450555348202020425554544F4E000E
:1009A000044F4E4C59202002312004504C415945EF
:1009B0005200023120044F52200232202004504CB9
:1009C00041594552530004435245444954200006BE
:1009D0003153542020424C4F434B002130D3118FD0
:1009E0006ACD2D303E22CD42313E0A3288E53E3876
:1009F00032B6E53E5032B5E521B6E57EB720093680
:100A0000382188E535CA896A21B5E57EFE14381C8F
:100A10003AB2E5B7200B2124D511A16ACD2D3018AB
:100A2000092124D511C66ACD2D301812B7200236FF
:100A3000272124D53600545D13013500EDB0CD7F5C
:100A400069213AD911BE6ACD2D300E063A88E53DAE
:100A5000CD6A3021AAE57EE60AFE0A28077EE60571
:100A6000FE0520223AB2E5B7CAF869D6012732B2AC
:100A7000E5AF3290E53AE0E5328FE52100002291C2
:100A8000E52292E51803C3F8693E00CD4231C9035F
:100A9000544F20434F4E54494E55452047414D45F4
:100AA0000004494E5345525420434F494E20414E75
:100AB00044205055534820425554544F4E0003543F
:100AC000494D452020000420202020205055534827
:100AD00020535441525420425554544F4E2020200C
:100AE0002020003E13CD4231CD5E5F3A90E5FE02FC
:100AF0002026AF32B2E6CDA86BCDDB693E0132B223
:100B0000E63A90E5FE0020102110D33600545D1324
:100B1000017F09EDB0C30F5D3AB7E5FE0028073A43
:100B200096E5FE02202E3A90E5FE0228102110D311
:100B30003600545D13017F09EDB0C30F5DCD5E5FDC
:100B4000AF32B2E632B9E53E01CD3E303E0132A7CA
:100B5000E5C3CF252110D33600545D13017F09ED85
:100B6000B021B8E57EB720033418023600CD966B6D
:100B7000DB04CB4F281D21B9E5CB462003341801F7
:100B800035E601AE21800020022D2D22E3E53E0155
:100B9000CD3E30C30F5D218EE51194E506061A4E59
:100BA000777912231310F7C90E00161521E5E50613
:100BB0000009DD2191E50603DD7E00BE3812280B19
:100BC000153E0A814FFEC8280718E1DD232310E8EF
:100BD0007A32D1E579B7C8D60A11E5E528084F067B
:100BE0000021EFE5EDB02191E5010300EDB0626B6E
:100BF000360013010500EDB03A8EE512CD286D21C7
:100C0000B8D211226DCD2D30DD2AD2E5111600DDCE
:100C100019FD2AD4E5FD23FD23FD230E411E033ECD
:100C2000143288E521C2D2C50E063A88E5CD483097
:100C3000C106043E0E32B6E5AF3289E53AD0E5B7DB
:100C400020035718447AB720133AD0E5FE0A20044F
:100C5000140C1806FE052002150D181F3AD0E5FEEB
:100C6000AA200B147AFE1820030C160C180DFE5542
:100C70002009157AFEE820030D16F479FE5D38028E
:100C80000E4179FE4130020E5C3ACFE5FE052804A4
:100C9000FE0A20212189E53AB6E5BE38183C77796D
:100CA000FE5C283DFD7100FD23DD71000E41DD235A
:100CB000DD231D282CCB402805DD71001803DD71D4
:100CC000003AAAE5B7201A3E01CD3E303AB6E5B764
:100CD000C23C6C05C2336C2188E5357EFEFFC22420
:100CE0006CDD3600003E38CD3E303E13CD4231CD76
:100CF0005E5FC90342455354202006323020200352
:100D0000504C41594552530002204E4F2E53434FF1
:100D100052455320204E414D4520524F554E4420C0
:100D200020000254494D450021B0D111F36CCD2D66
:100D3000302190D311086DCD2D3011086DCD2D309F
:100D400011E5E521C2DD3AD1E54F061478FE0A200F
:100D5000032192DDB9200722D2E5ED53D4E5C5E5A4
:100D6000410E02B820020E06FE0A30072C2CCD6A76
:100D7000301803CD48302C2C79FE0220020E0406D8
:100D800003CD5F3010FB2C2C2C2C06031A772C7112
:100D90002C1310F87DC6066F1313131ACD483013A9
:100DA000E1C12510A7C9010300119AE5217B6EED71
:100DB000B001C80011E5E521BD6DEDB0C90101002C
:100DC000535445202020010103504F494E2020203C
:100DD00001010880454845202020020110304D497E
:100DE00054202020010121504141542020200101A4
:100DF0002350474E41202020020128004F41592016
:100E00002020020138704E52412020200201601043
:100E10004F4957202020020189904B484F20202025
:100E200002026600484E49202020020277505341BA
:100E30004F20202002031250554859202020020341
:100E400033004253412020200303650041495720CD
:100E50002020030370504B414520202004038800CC
:100E60004D4B4D20202003040150454941202020B6
:100E700003043200524B4720202003048540494997
:100E80004F20202004F9FFFFFFFFFFFFFFFFFFFFC0
:100E9000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62
:100EA000FFFFC7C7C7C7C7C7C7C7C7C7C7C7C7C762
:100EB000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C2
:100EC000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B2
:100ED000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A2
:100EE000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C792
:100EF000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C782
:100F00003100E8110020CD2D6F227400CD2D6F220D
:100F10007600CD2D6F227800110000CD2D6F22724A
:100F20000011FFFFEBA7ED5222700018FE01002018
:100F30002100001A856F3E008C67130B78B120F3F7
:100F4000C9F3ED463100E8DD214E6FC390720E0506
:100F50003EFFED790CED790CED792100E13600547E
:100F60005D1301FF01EDB0FB0100800B79B020FBA8
:100F7000F3AF5F16202100E00E10060077233C152A
:100F8000280710F80D20F3180516203C18F47B16DE
:100F9000202100E00E100600BEC29571233C1528EA
:100FA0000710F50D20F018053C162018F47B3CFEC8
:100FB0000F20BF3100E8CDF277AF3201E016200EEE
:100FC000102100D0060077233C15280710F80D20CB
:100FD000F318053C162018F43A01E016202100D041
:100FE0000E100600CD3572233C15280710F60D2093
:100FF000F118053C162018F43A01E03CFE0F20BA27
:10100000DD21BF70CD9072210F7ADD21BF70CD2818
:1010100071CDAF70CDF2773E033201E7CD9E793EC0
:10102000013200E33202E3DB002F0F0F30F93E0301
:101030003201E7CDB67721AA7BCDD5773A01E70615
:1010400006CD4A7DCD9579CD9579DB002F0F3014F3
:101050003A01E7074F0600DD21987BDD09DD6601D7
:10106000DD6E00E9CD9E79CD9E79CD9579CD9579CE
:10107000DB012F0F38050F381C18C93A01E7FE08AD
:10108000CA44700604CD4A7DC6013201E70606CD8A
:101090004A7DC344703A01E7FE03CA44700604CD9A
:1010A0004A7DC6FF3201E70606CD4A7DC344701172
:1010B0000000AF3200E70604C5CDC070C110F9C909
:1010C00021000006201A853001246F1C20F714101F
:1010D000F4D5E53A00E721720087856F5E2356E17B
:1010E0007ABC20097BBD2005212F7A180321387A8C
:1010F0001183E7010900EDB011000121A0D13A00F0
:10110000E7A72804471910FD2281E73E083280E74F
:101110003A00E7C6303286E72100E7342180E7DD78
:1011200021BF70CD2871D1C97E23FE0028125E2315
:1011300056234F7E12133E041223130D20F518E898
:10114000DDE90F0F0F0FE60FC630FE3A3802C60773
:10115000FD7700FD360104DDE9E60FC630FE3A38C2
:1011600002C607FD7700FD360104DDE9F50F0F0F1C
:101170000FE60FC630FE3A3802C607FD7700FD368F
:101180000104F1E60FC630FE3A3802C607FD7702C9
:10119000FD360304C908D9DD219E71C31572211BD8
:1011A0007ADD21A871C32871D9FD21B8D0DD21B520
:1011B000717CC34271FD23FD23DD21C1717CC359C4
:1011C00071DD21CD717DFD23FD23C34271DD21D968
:1011D000717DFD23FD23C3597108D9FD23FD23FD36
:1011E00023FD23DD21EB715FC34271FD23FD23DD70
:1011F00021F7717BC3597108D9FD23FD23FD23FD20
:1012000023DD2109727EC34271FD23FD237EDD2192
:101210002372C359712101D001FF0F3600545DEDD7
:10122000B0DDE9CD9E79DB000F38060FDAB36F1819
:10123000F208C39C6FBEC8F5E5DD214072C3907211
:10124000211B7ADD214A72C32871E1FD21B8D07CCF
:10125000CD6C71FD23FD23FD23FD237DCD6C71F14C
:10126000F5FD23FD23FD23FD23CD6C71FD23FD231F
:10127000FD23FD237ECD6C71CD9E79CD9E79DB0063
:101280000FDA89720F380418EFF1C9F1C1C3007089
:101290002101D001FF073600545D1313CDA779213A
:1012A00000D001FF073600545D1313CDA779DDE9A7
:1012B0003EFFD305CDB67721417ACDD577DB03212B
:1012C000AED1CD3376DB0421AED2CD3376CDE47210
:1012D000CD7273CD9579CD9579DB00EEFF0F0FDAE6
:1012E000337018D9218774CDD577CDB073DB04EE78
:1012F000FFCB57284B21FC73CDD577DB03EEFF0FD7
:101300000F0F0F110000219073010005E60F200A56
:10131000195E23666BCDD57718250C1C1CB92002ED
:1013200018EE10F60108051C1CB9200218090C1053
:10133000F6FE0F200A1C1C195E23666BCDD577C9FB
:10134000212A74CDD577DB03EEFF21A873110000AD
:101350000F0F0F0FE60F28111C1CFE08280B1C1C7A
:10136000FE0A28051C1CFE0FC0195E23666BCDD536
:1013700077C9DB042F0F0F3813AF8721AE74856F49
:101380003E008C675E23666BCDD577C93E0118EAB7
:10139000D274E374F574077519752B753D754F7527
:1013A0006175737585759775A875CB75EE75117632
:1013B000DB03EEFF47E6032825FE012826FE022870
:1013C00027214774CDD577780F0F47E603281EFEF7
:1013D00001281FFE022820215274CDD577C921573C
:1013E0007418E121677418DC21777418D7216274AE
:1013F00018E821727418E321827418DE0B92D3432B
:101400004F494E204D4F444520200B12D420202020
:1014100020202020202020200E30D420202020201A
:10142000202020202020202020000B92D3434F4951
:101430004E204D4F444520410B12D4434F494E207E
:101440004D4F44452042000730D6313535205345B5
:10145000430001B0D635000730D63138302053452F
:10146000430001B0D633000730D631373020534522
:10147000430001B0D632000730D631363020534514
:10148000430001B0D634000912D5424F44592054CC
:101490005950450912D6504C41592054494D450BDD
:1014A00092D6434F4D4D414E444F4D454E00B27480
:1014B000C2740C30D55441424C45205459504520FB
:1014C00020000C30D55550524947485420545950AB
:1014D00045000DB0D33120434F494E203120504CB0
:1014E0004159000EB0D33220434F494E5320312092
:1014F000504C4159000EB0D33320434F494E532036
:101500003120504C4159000EB0D33420434F494E46
:1015100053203120504C4159000EB0D33520434F59
:10152000494E53203120504C4159000EB0D3362043
:10153000434F494E53203120504C4159000EB0D3F7
:101540003120434F494E203220504C415953000E18
:10155000B0D33120434F494E203320504C41595392
:10156000000EB0D33120434F494E203420504C411F
:101570005953000EB0D33120434F494E20352050EF
:101580004C415953000EB0D33120434F494E2036C1
:1015900020504C415953000EB0D3202020204652F9
:1015A00045452020202020000EB0D33120434F4954
:1015B0004E203120504C4159200E30D43120434F21
:1015C000494E203220504C415953000EB0D33220A6
:1015D000434F494E53203120504C41590E30D431A5
:1015E00020434F494E203320504C415953000EB0F8
:1015F000D33320434F494E53203120504C41590E94
:1016000030D43120434F494E203520504C4159535E
:10161000000EB0D320202020465245452020202017
:10162000200E30D43120434F494E203620504C41BB
:10163000595300EEFF06082336042B0F38043630CA
:10164000180236312323232310EDC9CDB6772100AC
:10165000D0110508010008722373230B78B120F71D
:101660002100E11101E13600010001EDB0FB21A3F1
:10167000761100E1012000EDB0CD9579CD9579CDC1
:101680009579DB002F0F0F30F02100E11101E136D9
:1016900000010001EDB0CD9579CD9579CD9579F327
:1016A000C333701300C0001080A00013004001106D
:1016B00000A0001300C00010C06001130040011022
:1016C00040600100030080001000800003008000E3
:1016D00010018000030180001000800003018000E1
:1016E0001001801100C0010001EDB0C92100E1111D
:1016F00001E13600010001EDB0AF3206E3676F2271
:101700000DE7CDB67721DF7ACDD577FB0608DB0074
:101710002F21C0D2CD38770608DB012F21C0D4CDD0
:1017200038770608DB022F21C0D6CD38770608218E
:1017300040D17BCD387718142336042B0F3804366C
:1017400030180236312323232310EDC9CD95773A83
:101750000DE721C0D7CD78773A0EE7CD7877CD9ECB
:1017600079CD9E79DB012F0F0F3802189EDB002FF9
:101770000F0F3097F3C333702336042BF50F0F0F81
:101780000FE60FC6307723232336042BF1E60FC66E
:1017900030772323C9210FE73A09E0E6C0BEC832FB
:1017A0000FE73A0EE7C60127320EE7D03A0DE7C63B
:1017B0000127320DE7C92100D001FF073600545D33
:1017C0001313CDA7792101D001FF073600545D1313
:1017D00013CDA779C97EFE00C8CDDE7718F74E0677
:1017E00000235E2356237E123E04131213230D2082
:1017F000F5C92100E00E06AF06007710FD0D20F8B8
:10180000C90E00060010FE0D20F93D20F4C9C5E503
:10181000772310FCE10E2009C10D20F2C9CDB67767
:10182000CD3678CD9579CD9579CD9579DB002F0F93
:101830000FDA337018ED2100D001FF0F3E867723B9
:101840000B78B120F7210CD00610E5C5CD7178C119
:10185000E11100011910F3064021BFD77EB07723B4
:10186000237EB077118000197EB0772B2B7EB07766
:10187000C90619CD7D782323232310F7C9E53E033C
:101880007723233E0277E1E5118000193E0177239B
:10189000233E0077E1C9F3CDB67721B379CDD57773
:1018A000CD9579CD9579CD9579DB002F0F3802183C
:1018B000EC110146CD8579CD9579CD9579CD957988
:1018C000DB002F0F380218E913CD8579CD9579CD3E
:1018D0009579CD9579DB002F0F380218EF13CD8560
:1018E00079CD9579CD9579CD9579DB002F0F38029B
:1018F00018EC3E102110D00E031101460610732380
:10190000722310FA130D20F4112000193D20E83E37
:10191000031101520E0406307323722310FAD511FD
:10192000200019D10D20EF133D20E91101490E04CB
:1019300006307323722310FAD511200019D10D201F
:10194000EFCD9579CD9579CD9579DB002F0F3802C4
:1019500018A0CD9579CD9579CD95793E01D301CD5E
:101960009579CD9579CD9579DB002F0F30F1AFD3F7
:1019700001CD9579CD9579CD9579DB002F0F0FDAD3
:101980003370C371792100D0010008732372230BD7
:1019900078B120F7C90100400B78B120FBC90100E4
:1019A000900B78B120FBC97E12232313130B78B15F
:1019B00020F5C90EA0D141204220432044204520DB
:1019C000462047200E20D2482049204A204B204C58
:1019D000204D204E200EA0D24F20502051205220CA
:1019E0005320542055200E20D356205720582059DC
:1019F000205A202020202014A0D331203220332050
:101A00003420352036203720382039203020000877
:101A1000A0D052414D2020204F4B0010A0D0524169
:101A20004D2020204E472020282020202029005211
:101A30004F4D2020204F4B00524F4D2020204E472D
:101A40000016A0D044495020535720312032203373
:101A50002034203520362037203803A0D153573189
:101A600003A0D2535732000198D2201BC4D22020A9
:101A70002020202020202020202020202020202066
:101A8000202020202020202020000CA0D0494E54CF
:101A9000455246414345204F4B00A07AB57ACA7A59
:101AA00011A0D0434845434B20494E54455246412E
:101AB000434520310011A0D0434845434B20494EB7
:101AC0005445524641434520320011A0D043484579
:101AD000434B20494E544552464143452033000A6A
:101AE00020D1575249544520444154410C20D249F9
:101AF0004E544552464143452031200CA0D220206F
:101B0000205245414420444154410C20D4494E5474
:101B10004552464143452032200CA0D4202020527B
:101B200045414420444154410C20D6494E5445522D
:101B3000464143452033200CA0D620202052454169
:101B40004420444154410F40D230203120322033D0
:101B500020342035203620370F40D4302031203239
:101B6000203320342035203620370F40D630203126
:101B70002032203320342035203620370F40D1301A
:101B8000203120322033203420352036203706A063
:101B9000D754494D494E4700000000000000B07284
:101BA000EC765E7C4B7696781D780D20D130312016
:101BB000444950205357495443480BA0D130322058
:101BC000492F4F20504F52540820D2303320534FCA
:101BD000554E440CA0D23034204348415241435426
:101BE00045520820D3303520434F4C4F5216A0D3D6
:101BF00030362043524F53532048415443482050DD
:101C000041545445524E007CB8C07DB9C921008072
:101C1000010008AF77230B78B120F8C972230B7845
:101C2000B120F9C97223230B78B120F8C908D9C3B0
:101C3000397CC7C7C7C7C7C7C72109E034CD527CA5
:101C40003A02E30F38072106E33E808677C9D908B8
:101C5000FBC92100E11100C0010001EDB0C9CDB602
:101C60007721B97DCDD5772A9C7D2206E7DD210835
:101C7000E7FD21A07DCD9579CD9579CD9579CD8B59
:101C80007CDB002F0F0FDA337018D3FD220BE73EF9
:101C9000013205E70606CD507DCDE57CCDCF7C0138
:101CA0000000ED4313E3DB002F0F0F3004C1C333FB
:101CB00070DB002F0FDCCF7CDB012F0F38340F38A7
:101CC0005DED4B13E30B78B120D8CDE57C184F3A8E
:101CD00005E74F0600FD2A0BE7FD09FD7E00D30056
:101CE000F680D300C93E00D3003E80D3000600102A
:101CF000FEC9CDE57CCD9579CD9579CD95793A071D
:101D0000E75F3A05E7BBC80604CD507D3D3205E7E5
:101D10000606CD507DCDCF7C010000C3A27CCDE571
:101D20007CCD9579CD9579CD95793A06E75F3A05E1
:101D3000E7BBC80604CD507D3C3205E70606CD5012
:101D40007DCDCF7C010000C3A27C4FD6033C181789
:101D50004FC52120D1118000470528031918FAC169
:101D6000237023237079C9C52120D111800047FE3B
:101D7000012804051910FDC1237023237079C9C5FA
:101D80000E00060010FEF53A00D0CB4F2809F10DE9
:101D900020F03D20EBC1C9F1C10601C915010000C9
:101DA000000102030405061C111213141520212240
:101DB0002324252627000000000BA0D053204F200D
:101DC00055204E204420530F20D1303120484F4C15
:101DD000452044494747494E4715A0D1303220504D
:101DE00049434B494E4720555020464F5254494E87
:101DF000450F20D2303320444F4F52204F50454E94
:101E0000494E4713A0D23034204255524945442010
:101E1000494E544F20484F4C451420D3303520466E
:101E2000414C4C494E4720494E544F20484F4C4559
:101E300010A0D3303620504C41594552204B494CCC
:101E40004C45441220D430372054494D452055503C
:101E5000205741524E494E4716A0D430382054499D
:101E60004D452053434F524520434F554E54494E04
:101E7000471120D5303920434F494E20494E534514
:101E80005254494E470FA0D53130205A4F4F4D2064
:101E9000494E20202020200F20D63131205A4F4F8C
:101EA0004D204F55542020202016A0D631322050EE
:101EB0004C415945522046414C4C494E4720202028
:101EC00020200D20D731332047414D452053544128
:101ED00052540CA0D731342047414D45204F564530
:101EE000521B20D831352042474D2028434F4E54B5
:101EF000494E5549545920444953504C4159290E93
:101F0000A0D8313620524F554E4420434C454152C3
:101F10000E20D9313720424C4F434B20434C454192
:101F2000520DA0D931382054494D4520555020201C
:101F3000201220DA31392042474D202847414D45B3
:101F400020504C41592912A0DA32302047414D45EA
:101F500020434F4D504C4554494E470C20DB202028
:101F60004D5553494320454E4420000000C7C7C784
:101F7000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F1
:101F8000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E1
:101F9000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D1
:101FA000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C1
:101FB000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B1
:101FC000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A1
:101FD000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C791
:101FE000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C781
:101FF000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C771
:00000001FF

View File

@@ -0,0 +1,513 @@
:10000000E7ADCEF6B6C1E7B9C9F4A58AC1AE92C1D3
:10001000B89DC1B8C7A587C9CCB198C9AF9CD60255
:10002000B1C2E8BEC0F7BA9DC704A2C1E8CFF6A529
:10003000C2E8AAC9EDB2CBF503A59DC0AC90C2A998
:100040008DC8B198CAB99DD5A59AD706A184D707FE
:10005000A4D0D5A6CAD2A8C3C5B5CDD2B8C6BCCD8A
:1000600008A5D4AAD3AEC5BBD009B3C50AA8D1B6DA
:10007000C4B6C70D87CACB0F9DC2E6D71F0101A822
:1000800095C0E5D1F7AA95C8EEA5C8EEB9C1E5C8F7
:10009000EED1F6BEC0F7A284CB00AE91C1C2D6D7D6
:1000A000B4C4D2D3CB04A2C0E5D1F7A7C8EE03A550
:1000B0009AC6D0B99DC0D706A184C6D007A3C0D721
:1000C000B0C2D6B4C4CBD2D3BCC4D308A7CBB6CAB3
:1000D000CC09BBCB0AB9C9CBCD0E91C1C2D6D71FB3
:1000E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A0
:1000F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C790
:10010000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77F
:10011000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C76F
:10012000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C75F
:10013000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C74F
:10014000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C73F
:10015000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C72F
:10016000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C71F
:10017000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C70F
:10018000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7FF
:10019000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7EF
:1001A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7DF
:1001B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7CF
:1001C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BF
:1001D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AF
:1001E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C79F
:1001F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C78F
:1002000002C002C1C406C204080808080C000000AD
:10021000C8C610000C0E0C0E000000000ACACA026C
:10022000CA0A08080000000000000000C406C2045A
:1002300020AC20AE00000000161616161C1E1C1E58
:10024000B4000000B4B5B4B516181A20181A20204E
:100250001A18161600000000000000001412B0B2B8
:10026000A09C9EA000000000A6A6A6A6A1A0A1A0FA
:10027000A0000000A0A1A0A1A6A6A0A0A6A6A6A03E
:10028000A6A6A6A60000000000000000A238A43622
:1002900092908E00000000003A3A3A3A9899989964
:1002A0009900000098999899989992923C3C3C3C0E
:1002B0003C3C3C3A000000000000000094969496FC
:1002C000B6BAB6BAE6E8EAEC222222222424242492
:1002D000EE000000EEEFEEEFE4E2B6B6E2E4B6B612
:1002E000E4E2222200000000000000000000000004
:1002F000DDDEDFDE00000000DEA7DEA7404040407C
:10030000BF000000DDBFDDBFDD3EBCDFA7DEA7DE36
:10031000DEA7DEA7DD34DD00DD34DDDDDEDFDEDDA2
:1003200080848200000000008A8A8A8A2A2A2A2A77
:100330008C0000008C8D8C8D8C8482808A8A8A8AC5
:100340008A8A8A8A00000000000000008628882629
:10035000CECCCECC30323032CECFCECFCECFCECF31
:10036000CF000000CECFCECFCECFCECFCECFCECF10
:10037000CECFCECF2C2E30002E2CCE000000000091
:10038000D0D1D0D100000000D4D4D4D4D4D4D4D48B
:10039000D8000000D4D4D4D4D8D0D100D4D4D4D46C
:1003A000D4D4D4D4D1DBD9D5D5D9DBD1D5D7D5D7F1
:1003B00000000000414041400040004000000000BB
:1003C00001010000000040400000000000010100A9
:1003D000010000000000000000000000414041401A
:1003E000000100010000000000400040000000008B
:1003F00000000000000000000040000000000000BD
:1004000000000000000000000000000040404141EA
:1004100000010100000000000040004000004040DA
:10042000000000000000404040400000004000008C
:10043000004000000000000000000000414041407A
:100440000101010000000000004000400000000029
:10045000000000000000000000000101004000005A
:100460000040000000000000000000004141414148
:1004700001010101414141410040004000000000F4
:100480000000000000000000010101010101010164
:10049000010100000000000000000000000000005A
:1004A000004001000000000000404000004000400B
:1004B000000000000000004000000101000040407A
:1004C000000040400040000000000000C08180802B
:1004D0000101010000000000014101410000000095
:1004E00000000000000000000001010101410101C5
:1004F00001410101000000000000000041404140B6
:1005000040414041000000000000000000000000E9
:1005100000000000000000000000000000000000DB
:1005200000000000000000000000000000000000CB
:1005300000010001000000000040004000004040B9
:1005400000000000004000400000010000400040AA
:100550000040004001010101010101010100010011
:10056000FE00FE000000000000000000000000008F
:1005700000000000000000000000000000FEFE007F
:10058000FE0000000000000000000000000000006D
:10059000000000000000000000000000000000005B
:1005A000000000000000000000000000000000004B
:1005B000000000000000000000000000000000003B
:1005C00000F5FC000000000000000000000000003A
:1005D000000000000000000000000000000000001B
:1005E000000000000000000000000000000000000B
:1005F000FAFCF50000000000000000000000000010
:1006000000000000000000000000F8F800000000FA
:10061000000000000000000000000000FCFCFCFCEA
:10062000FFFFFFFF000000000000000000000000CE
:1006300000000000000000000000FFFF0101FFFFBC
:1006400001010000000000000000000000000000A8
:100650000000FE000000000000000000000000009C
:10066000000000000000000000FC00FE0000000090
:10067000000000000000000000000000000000007A
:10068000FDFDFD0000000000F808F8080000000073
:10069000000000000000000000FDFDFDF808F8F873
:1006A000F808F8F800000000000000000300030054
:1006B000000000000000000000000000000000003A
:1006C000000000000000000000000000000000002A
:1006D000000000000000000000000000000000001A
:1006E00000FC00FC00000000000000000000000012
:1006F00000000000000000000000FC0000000000FE
:1007000000000000FCF8F8FCFCF8F8FCFC00FC0021
:1007100000000000FD00FD000000000000000000DF
:10072000F0FF0000000000000000000000101000BA
:10073000100000001010101010101010FD00FD002F
:1007400000FF00FF000000000000000000000000AB
:100750000000000000000000000000000000000099
:100760000000000000000000000000000000FEFE8D
:100770000010100000000000000000000000000059
:100780000000000000000000000000000000000069
:10079000000000000000000000000000FE0001005A
:1007A0001010100000000000000000000000000019
:1007B0000000000000000000000010100000000019
:1007C0000000000000000000000000000404040419
:1007D000020202020101010100000000000000000D
:1007E00000000000000000000202020202020200FB
:1007F00002020000000000000000000000000000F5
:1008000010101010000000000000000000000000A8
:1008100000000000000000000000081000000000C0
:1008200000000000000000000000000000100000B8
:100830001010100000000000101010100000000048
:100840000000000000000000001010101010101038
:100850001010101000000000000000000400040050
:100860001010101000000000000000000000000048
:100870000000000000000000000000000000000078
:100880000000000000000000000000000000000068
:100890001010101000000000000000000000000018
:1008A0000000000000000000101010100000000008
:1008B0000000000010101010101010101010101078
:1008C00000FF00FFF800F80000000000000000003A
:1008D00000F800000000000000000000040000001C
:1008E000000400000000000000000000F800F80014
:1008F00000FC00FC00000000000000000000000000
:1009000000000000000000000008080008090000C6
:100910000808000000000000000000000000F8F8D7
:1009200000000000000000000000000000000000C7
:1009300000000000000000000004000000000000B3
:10094000000000000000000000000000F800F800B7
:100950000000000000000000000000000000000097
:10096000000000000000000000040000040407076D
:10097000040404000000000000000000F8F8F8F88B
:10098000FCFCFCFCFCFCFCFC000000000000000087
:100990000000000000000000F9FDFCFCFDFDFC0073
:1009A000FDFD00000000000000000000000000004D
:1009B0000000000000000000000000000000000037
:1009C00000000000000000000000F800000000002F
:1009D000000000000000F800F8000000F9F9F9F943
:1009E00000FFFF0000000000000000000000000009
:1009F00000000000000000000004FF0000000303EE
:100A00000000FDFD0000000000000000F808F808EC
:100A100000000000000000000000000000000000D6
:100A200000000000000000000000000000000000C6
:100A300000000000000000000000000000000000B6
:100A400000000000000000000000000000000000A6
:100A50000000000000000000000000000000000096
:100A6000000000000000FCF8F8FC0000F8F9F8F9BC
:100A70000000000008000800000000000000000066
:100A8000000800000000000000000000000000005E
:100A90000000000000000000000000000800080046
:100AA000000400040000000000000000000000003E
:100AB0000000000000000000000000000000000036
:100AC0000000000000000000000000000000080816
:100AD0000000000000000000000000000000000016
:100AE0000000000000000000000000000000000006
:100AF00000000000000000000000000008000800E6
:100B000000000000000000000000000000000000E5
:100B100000000000000000000000000000000000D5
:100B200000000000000000000000000005050505B1
:100B300004040404FCFCFCFC0000000000000000B5
:100B4000000000000000000007070404070704007D
:100B50000707000000000000000000000000000087
:100B60000000000000000000000000000000000085
:100B7000000000000000000000000800000000006D
:100B80000000000000000000000000000000000065
:100B90000000000000000000000000000000000055
:100BA0000000000000000000000000000000000045
:100BB0000000000000000000000000001000100015
:100BC0000000000000000000000000000000000025
:100BD0000000000000000000000000000000000015
:100BE0000000000000000000000000000000000005
:100BF00000000000000000000000000000000000F5
:100C000000000000000000000000000000000000E4
:100C100000000000000000000000000000000000D4
:100C2000040C07010807010008070100000000008C
:100C30000000000006060606080808010A06000073
:100C40000A06010000000000000000000708090774
:100C5000080801000606060106060601000000005D
:100C60000000000005040303080801000606060052
:100C70000606060100000000000000000304030453
:100C8000080801000A0600000A0601000000000032
:100C90000000000000000000080606040505050528
:100CA00005050505060804000608040004030404FD
:100CB00008080400060606000606060000000000FC
:100CC00000000000050505050808080205050500E7
:100CD00005050500040404000404040000000000ED
:100CE000080C0800050505000505050004040404BA
:100CF0000404040405050505430320FFA3FFA3FF27
:100D0000A2FFA2FF000000000000000000000000A1
:100D10008383A3FFA3A3FFFFA2A2FFFF00000000A5
:100D2000000000000000000043A0FFFFA3A3A3FFFA
:100D3000A2A2A2FF000000000000000000000000CE
:100D400043A0FFFFA3A3A3FFA2A2A2FF00000000F5
:100D5000000000000000000043A0FFFFFFFFFFFFB6
:100D6000A2A2FFFF00000000000000000000000041
:100D7000FF832020A3A3A3A3A2A2A2A2FFFFFF00A0
:100D8000FFFFFFFF0000000043A0A0FFA3A3A3FFFD
:100D9000A2A2A2FF0000000000000000000000006E
:100DA00003232020232323FF222222FFFFFFFF0013
:100DB000FFFFFF0000000000FF0320FF232323FFAD
:100DC000222222FFFFFFFFFFFFFFFFFF00000000C6
:100DD0000000000000000000000000000000000013
:100DE00000000000070607060004040200000000DF
:100DF00000000000000000000000000005060708D9
:100E000000050500000000000000000000000000D8
:100E100000000000010504020005050000000000BC
:100E200000000000000000000000000003030303B6
:100E300000080200000000000000000000000000A8
:100E40000000000000000000000008020000000098
:100E5000000000000000040000040000040400047E
:100E60000005050000000000000000000000000078
:100E70000000000004040404000000000000000062
:100E80000000000000030300000303000000000056
:100E90000000020000000000000000000004000448
:100EA000000400040404040400000000FCFA000034
:100EB0000206040000000000000000000000000026
:100EC00000F8F800FAF70000010707000000000032
:100ED000000000000000000000F80000FCFCFCFC2A
:100EE00004040404000000000000000000000000F2
:100EF00000F80000FCFCF9000404040400000000F9
:100F0000000000000000000000F80000F8F90000F8
:100F100000080700000000000000000000000000C2
:100F20000000F8F8FCFCFCFC0404040400000000D1
:100F3000000000000000000000F80000FCFCF900C8
:100F40000404070000000000000000000000000092
:100F500000FC000000000000000000000000000095
:100F600000000000000000000000FC000000000085
:100F70000000000000000000000000000000000071
:100F8000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F1
:100F9000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E1
:100FA000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D1
:100FB000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C1
:100FC000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B1
:100FD000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A1
:100FE000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C791
:100FF000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C781
:10100000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C770
:10101000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C760
:10102000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C750
:10103000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C740
:10104000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C730
:10105000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C720
:10106000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C710
:10107000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C700
:10108000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F0
:10109000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E0
:1010A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D0
:1010B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C0
:1010C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B0
:1010D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A0
:1010E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C790
:1010F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C780
:10110000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C76F
:10111000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C75F
:10112000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C74F
:10113000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C73F
:10114000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C72F
:10115000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C71F
:10116000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C70F
:10117000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7FF
:10118000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7EF
:10119000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7DF
:1011A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7CF
:1011B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BF
:1011C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AF
:1011D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C79F
:1011E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C78F
:1011F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77F
:1012000002510101000392D4010118030FD0D5CF80
:10121000D2010218030ED0D1D5D3010318030CD08C
:10122000D1D2D4D5D3010418030AD0D1D2D4D4D486
:10123000D5D3010527D5D3010627D5D3010728D358
:10124000010828D3010927D5D3010A27D5D3010BDB
:1012500027D5D3010C27D5D3010D27D5D3010E27D0
:10126000D5D3010F27D5D3011027D5D3011127D509
:10127000D3011227D5D30253010726CA010825CB73
:10128000CC0254010727CD010827CE0252010518D0
:10129000030AEB010618030AEB0107180308ECED3B
:1012A000EB01081803085CEEEB01091E5C5CEEEB39
:1012B000010A1E5C5CEEEB010B1E5C5CEEEB010CAC
:1012C0001E5C5CEEEB010D1E5C5CEEEB010E1E5C29
:1012D0005CEEEB010F1E5C5CEEEB01101E5C5CEE45
:1012E000EB01111E5C5CEEEB01121E5C5CEEEB018F
:1012F000131CFDEFF0F1F2F30114180304F8F7F6F4
:10130000F4F50115180305F8F7F6F6EFFC011618C9
:101310000306F8F7F6F6F4F50117180307F8F7F6E1
:10132000F6F6EFFC0118180308F8F7F6F6F6F4F5F0
:101330000119180309F8F70304F6EFF9011A180365
:101340000AF8F70304F6F4F5011B18030BF8F7038A
:1013500005F6EFFC011C18030CF8F70305F6F4F58D
:10136000011D18030DF8F70306F6EFFC011E180324
:101370000EF8F70306F6F4F5011F18030FF8F7034C
:1013800007F6EF0210010918030604010A18030604
:1013900004010B18030604010C18030604010D18C0
:1013A000030604010E18030604010F1803060401C6
:1013B000101803060401111803060401121803068D
:1013C000040113180304040255011322030594D5E4
:1013D000FA030794011420030794D5FA0307940134
:1013E0001522030594D5FA030794011623030494E8
:1013F000D5FA03079401172594D6D7D8D9030694B4
:10140000011826DADBDCDDDE030594011928E0E1B2
:10141000E2E3E4949494011A299494E5E6E3E494D5
:10142000011B2B9494E5E6E3011C2C949494E501B4
:101430001D2E9494011E2F94004C0C99004E0C9973
:1014400010500C9920520C7900540C7910A80C798A
:1014500020A80C8920700C5900720C5910740C597A
:1014600020764C7D0000C7C7C7C7C7C7C7C7C7C757
:10147000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7FC
:10148000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7EC
:10149000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7DC
:1014A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7CC
:1014B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BC
:1014C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AC
:1014D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C79C
:1014E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C78C
:1014F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77C
:10150000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C76B
:10151000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C75B
:10152000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C74B
:10153000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C73B
:10154000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C72B
:10155000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C71B
:10156000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C70B
:10157000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7FB
:10158000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7EB
:10159000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7DB
:1015A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7CB
:1015B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BB
:1015C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AB
:1015D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C79B
:1015E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C78B
:1015F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77B
:10160000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C76A
:10161000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C75A
:10162000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C74A
:10163000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C73A
:10164000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C72A
:10165000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C71A
:10166000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C70A
:10167000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7FA
:10168000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7EA
:10169000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7DA
:1016A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7CA
:1016B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BA
:1016C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AA
:1016D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C79A
:1016E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C78A
:1016F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77A
:10170000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C769
:10171000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C759
:10172000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C749
:10173000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C739
:10174000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C729
:10175000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C719
:10176000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C709
:10177000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F9
:10178000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E9
:10179000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D9
:1017A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C9
:1017B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B9
:1017C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A9
:1017D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C799
:1017E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C789
:1017F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C779
:10180000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C768
:10181000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C758
:10182000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C748
:10183000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C738
:10184000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C728
:10185000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C718
:10186000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C708
:10187000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F8
:10188000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E8
:10189000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D8
:1018A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C8
:1018B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B8
:1018C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A8
:1018D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C798
:1018E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C788
:1018F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C778
:10190000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C767
:10191000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C757
:10192000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C747
:10193000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C737
:10194000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C727
:10195000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C717
:10196000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C707
:10197000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F7
:10198000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E7
:10199000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D7
:1019A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7
:1019B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B7
:1019C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A7
:1019D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C797
:1019E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C787
:1019F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C777
:101A0000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C766
:101A1000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C756
:101A2000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C746
:101A3000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C736
:101A4000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C726
:101A5000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C716
:101A6000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C706
:101A7000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F6
:101A8000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E6
:101A9000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D6
:101AA000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C6
:101AB000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B6
:101AC000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A6
:101AD000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C796
:101AE000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C786
:101AF000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C776
:101B0000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C765
:101B1000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C755
:101B2000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C745
:101B3000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C735
:101B4000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C725
:101B5000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C715
:101B6000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C705
:101B7000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F5
:101B8000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E5
:101B9000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D5
:101BA000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C5
:101BB000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B5
:101BC000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A5
:101BD000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C795
:101BE000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C785
:101BF000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C775
:101C0000212A5CA72803215C5C7E32DBE52322DCF1
:101C1000E5C921DBE5352ADCE5200D7E3C280923DA
:101C20007E32DBE52322DCE57EC90C0278801402DB
:101C3000328024083202232032015A021E200C0274
:101C40001E200C025A20730124085A012408640142
:101C500032045F02232014801E08FFFF8C01DC0881
:101C6000190219011480140414804A02C801EB02FD
:101C70006E803702500114800A010A020F010A0225
:101C800005010A022808FFFFC7C7C7C7C7C7C7C7DC
:101C9000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D4
:101CA000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C4
:101CB000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B4
:101CC000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A4
:101CD000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C794
:101CE000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C784
:101CF000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C774
:101D00003E13CD4231CD5E5F3E0132AEE61804AFE8
:101D100032AEE63A90E5FE0020053E20CD4231CDC0
:101D2000C95E3AB7E5B728353AAEE6B7202FCDD62B
:101D30005E3E023288E53E0ECD3E30212ED6360084
:101D4000545D13012700EDB03E0ECD3E30CDD65E82
:101D50002188E53520E03E70CD3E3018353A90E5DB
:101D6000FE002136D6CC9A313E023288E53E0ECDB9
:101D70003E302132D73600545D13011B00EDB03EDA
:101D80000ECD3E30CDC95E2188E53520E03E38CD10
:101D90003E303E013290E53A8EE53DCDEC31793C66
:101DA00032CCE579E6073C32CDE5210000228AE518
:101DB000228BE5216CE5FE01200936303E60328B36
:101DC000E51814FE02200936403E80328BE51807E4
:101DD00036503E01328AE579CB3FCB3FCB3F21DF06
:101DE000E586875F160021355F195E2356ED53E1C6
:101DF000E53E14CD4231CD8061CDD763AF32A6E54B
:101E0000CD435FCDE7622110D011ED5ECD2D30CDF9
:101E100003320E1E214AD03A8EE5CD4830CDF7313F
:101E20000E041197E52160D03AB8E5B728032118D0
:101E3000D00603CD5F3010FB0E06119AE52138D095
:101E40000603CD5F3010FB3AB4E6FE0C201421BA35
:101E5000E10607360D232323360D1115001910F363
:101E6000180CFE1020083E0132FFE43200E53AA7CC
:101E7000E5B720433AAEE6B720103AB7E5B7280AEF
:101E80003E1632B6E53E1832ADE63E01329DE52102
:101E90004AE4060A78C602E60320053E17CD423121
:101EA0007EFEFF20043612180236FF3E09CD3E307A
:101EB00010E23E26CD42313E02329DE53E1532B162
:101EC000E63E013268E5C329002132D7CD853111C4
:101ED000235FCD2D30C90E063AB8E5C631212ED686
:101EE000CD6A30112B5FCD2D30CD9A31C90620310E
:101EF000502D2020202020201E3C31303030303E1C
:101F00000648492D2020202020201E3C522D202034
:101F1000205E5F2D203E0632502D202020202020E4
:101F20002020000620524541445900062D504C41C6
:101F30005945522000980004011001140117012195
:101F40000126013E013274E5AF3273E5CD915F3E6B
:101F500002CD3E302173E5347EFE1E38EFC9DD210F
:101F600000E30610DD360400DD360C00111000DD44
:101F70001910F1AF3274E532A6E53E1C3273E5CD9F
:101F8000915F3E02CD3E302173E5357EFEFF20EFAE
:101F9000C9874FAF479157CB2178E603CCAD5F7A25
:101FA000CB7F20020D9104805779B830ECC5D5CB9A
:101FB00038CB38300104CB39CB3930010C2E10CD61
:101FC000D25F3A74E5B728030D18010CCDD25FD16A
:101FD000C1C9513E1880FE30DCF15F3E1890D4F14B
:101FE0005F503E1881FE30DCF15F3E1891D4F15F06
:101FF000C9677D82FE20DC00607D92D8CD0060C97B
:00000001FF

View File

@@ -0,0 +1,513 @@
:10000000203AECE4CDB620CD112021ECE43518E403
:10001000C9FDBE05C821ECE44ECD3D2121EEE4BE74
:10002000D032EEE43E0032EDE4C947FD4E0579FEE4
:100030001D30526178070707CB3C1F6F1110D01994
:10004000E511800119D1EB1AFE04283AE6F8FE0802
:1000500028340C1A242415EBE6FCFE0028253A442B
:10006000E4B8300D2D2D2D2D1D1D1D1DCD88201802
:10007000122005CDAD20180B2C2C2C2C1C1C1C1C6C
:10008000CD882018A9C979C97EE6FCFE18281E7EF5
:10009000E6F8FE08C8247EE6F8FE08C81AE6F8FE70
:1000A00010280A1AFE042805E6F8FE08C02145E4D7
:1000B00079BED8F179C947FD4E0579FE0128506116
:1000C00078070707CB3C1F6F1110D019E51180018D
:1000D00019D1EB7EE6F8FE102809247E25E6F8FE0D
:1000E0001079C00D151524EB3A44E4B8300D2D2DD0
:1000F0002D2D1D1D1D1DCD102118122005CD3521C2
:10010000180B2C2C2C2C1C1C1C1CCD102118ABC922
:100110007EE6FCFE18281E7EE6F8FE08C8247EE671
:10012000F8FE08C81AE6F8FE10280A1AFE04280588
:10013000E6F8FE08C03A45E4B9D8F179C94778181D
:10014000142A44E4943002ED448787874779953038
:1001500002ED4480C92145E4BE200879FD9604D013
:10016000ED44C978963005ED44C664C9C6C8C9C710
:10017000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C70F
:10018000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7FF
:10019000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7EF
:1001A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7DF
:1001B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7CF
:1001C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BF
:1001D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AF
:1001E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C79F
:1001F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C78F
:10020000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77E
:10021000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C76E
:10022000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C75E
:10023000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C74E
:10024000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C73E
:10025000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C72E
:10026000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C71E
:10027000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C70E
:10028000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7FE
:10029000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7EE
:1002A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7DE
:1002B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7CE
:1002C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BE
:1002D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AE
:1002E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C79E
:1002F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C78E
:10030000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77D
:10031000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C76D
:10032000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C75D
:10033000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C74D
:10034000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C73D
:10035000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C72D
:10036000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C71D
:10037000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C70D
:10038000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7FD
:10039000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7ED
:1003A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7DD
:1003B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7CD
:1003C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BD
:1003D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AD
:1003E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C79D
:1003F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C78D
:10040000210EE57EB7280235C934CDBE242168E52A
:100410003520023617DD2118E53E143288E5DD7EF1
:1004200000B72839DD35002006DD360100182EDD45
:100430007E00FE102004DD3601F43021FE0F201274
:10044000DD7E02DD6E03CD002DEBCD1930CD6924AC
:10045000180BCB3FCB3F473EF790DD7701010400FF
:10046000DD092188E53520B6C93A44E4DDBE022025
:1004700017DD7E032145E496380EFE03300A3E0068
:100480003248E4AF3250E4C9FD2158E43AE9E4329D
:1004900089E5FD7E04DDBE022018DD7E03FD9605A4
:1004A0003810FE03300CFD360CFFFD36092AFD36F0
:1004B0000E3C111800FD192189E53520D5C93AE90E
:1004C000E432E8E4DD2158E4216DE536003A02E546
:1004D000B728083AE8E4FE01200134DD7E0EB72893
:1004E0005BDD350920253A6DE5B7280AAF3202E514
:1004F00021E9E4351815DD360903DD7E0AFEFF200B
:1005000006DD360A0C1804DD360AFFDD350E202420
:10051000FD2140E4FD7E04DDBE042010FD7E05FECD
:10052000013809FE043005DD340E1810DD360C00EC
:10053000DD360A0CDD7E0EFE30CC4825111800DDBC
:100540001921E8E4352081C93A6DE5B7200D3E0157
:1005500032FFE4010001CDDB2F1813DD7E04DD6ED8
:1005600005CD002D15151AE6FCFE60CC832F3E0448
:10057000CD4231DD7E0DB7280421FCE435DD360A9D
:10058000FF1110D13A68E587876F260019EB06F84E
:100590000E08CD712EEB200A2168E53520023617B2
:1005A00018E23A68E5DD7701DD7704878787DD7734
:1005B00007AFDD7700DD7702DD770D3CDD7703DD0A
:1005C0007705DD3606082168E53520023617C93E75
:1005D0000132A7E52122D2CDA1293E0ECD3E302108
:1005E000DED311E926CD2D302123D216CBCDDF2944
:1005F0003E1CCD3E302123D216CCCDDF293E1CCD72
:100600003E302123D216CDCDDF293E1CCD3E307A9F
:10061000326BE52140E41141E40128013600EDB0E0
:100620003E0132CDE5324BE43249E43E163241E43C
:100630003E0C3243E43E00324AE43246E43E1E328F
:1006400053E416181E0C3E01DD2158E40605DD7743
:100650000BDD7709DD7201DD7303DD360A00DD365F
:100660000600C5011800DD09C11410E2218000DB7D
:1006700004CB4720022D2D22E3E5CDD7633E053282
:10068000E9E43E03326AE53E01329DE53E303289BF
:10069000E5216BE5347EFED0380236CD562123D2DB
:1006A000CDDF293E08CD3E302189E53520E33E00EF
:1006B000329DE53E00326AE5CD00653ADEE5CD00CB
:1006C0005C060321DEE57EB72805360004180134F8
:1006D00078328EE5AF32B8E5328FE5676F2291E56B
:1006E0002292E5CD5E5FC3975D06544D003E13CD6B
:1006F00042313E0132A9E5CD5E5F210052CD516409
:1007000021C0D0DD21BED00E1F06187EDD77002C63
:100710007EEE20DD77012CDD2BDD2B10EE1150005D
:100720001911B000DD190D20E02124E01123E00EA5
:100730001F060C7E0707070712231B10F6C5010CC6
:100740000009EB01240009EBC10D20E5FD2139541E
:10075000CDF0293E14CD42313E0132A6E5CD435FB6
:100760003E24CD42312140E41141E401280136000C
:10077000EDB021CDE5343E01324BE43249E43E0692
:100780003244E43E103241E43E1D3243E43E003246
:100790004AE43246E416121E1F3E010E05DD2158C2
:1007A000E40604DD770BDD7709DD7104DD7201DD20
:1007B0007303DD360A00DD360600C5011800DD09C9
:1007C000C1141C10DECDD7633E0432E9E43E023290
:1007D0006AE53E01329DE53EA8CD3E303E03CD4266
:1007E000310E30DD2100E3060BDD3406DD350E1160
:1007F0001000DD1910F33E01CD3E300D20E521B68D
:10080000D5CD9A3121B8D6CD8531213CD8112D28AE
:10081000CD2D303E70CD3E303E00329DE53E003263
:100820006AE53E13CD4231CD5E5FC3975D0652450A
:10083000414459003E13CD42313E0132A9E5CD5E1F
:100840005F2100E31101E30168023600EDB02100F1
:10085000E01101E0019F023600EDB02313015F00BB
:100860003601EDB03E0A32D8E53E0032A6E53E1430
:10087000CD4231CD435F3E27CD423106000E4711B8
:10088000EF283E01CD3E303E2E804730F51AFE0166
:100890002007131A6F131A67131A77FE20282E3EAB
:1008A00017CD42311AFE322024AF32CDE53257E463
:1008B0003E0B3241E43E0C3253E4324AE43E013214
:1008C0004BE43249E4326AE53E01329DE51323717F
:1008D000231AB720AD3EFFCD3E303E00329DE53EAF
:1008E00000326AE53E13CD4231CD5E5FC3FA260188
:1008F00030D3434F4E47524154554C4154494F4ECB
:10090000532120202020011ED5594F552020484139
:1009100056452020444F4E4520204954202056451E
:100920005259202057454C4C2C202001A8D6484134
:1009300056494E47202050415353454420205448A7
:10094000524F5547482020012AD8323420204441B4
:100950004E4745524F55532020504C414345532E4E
:100960002020202001A0D94255542020544845522F
:1009700045202041524520205354494C4C20204FC3
:100980005448455220200128DB454E454D494553EA
:1009900020204F4E2020594F555220205741592E8C
:1009A0000016881E04061E722C2C1414141410F742
:1009B0007AC68957014400091D20EAC91E047EE653
:1009C000F0477AE60FB07723060E722310FC7EE61E
:1009D0000F477AE6F0B077010900091D20E0C91E33
:1009E00004061E722C2C10FB014400091D20F2C9C4
:1009F000DD2100E3FD7E00B7C8DD7704DD770CFD67
:100A00007E0147E61FDD7700DD770878E6C0DD77F9
:100A100005EE40DD770DFD5E0216002AE3E519DDE7
:100A20007502DD750ADD7403DD740BFD5E03DD7395
:100A300006DD3607013EF093DD770EDD360F00113F
:100A40000400FD19111000DD1918A93A6AE5FE012C
:100A50002005CD5B2A1803CDD42AC93A53E4FE0CF5
:100A6000202E1115002A42E4192242E47C2A57E480
:100A70002600019B2B09BE2015237E324BE43E004D
:100A80003253E4324AE43A57E4C6023257E4184398
:100A90003A4BE4FE01200511F2FF1803110E002A63
:100AA00040E4192240E47C2A57E42600019B2B09EC
:100AB000BE2015237E324BE43E0C3253E4324AE42E
:100AC0003A57E4C6023257E43A53E4FE0C2804478E
:100AD000CDF110C93A6AE5FE022065DD2140E40E41
:100AE00005DD7E0BFE01201C11F4FFDD6E00DD66CE
:100AF0000119DD7500DD74017CDDBE042004DD36E6
:100B00000B001810110C00DD6E00DD660119DD759B
:100B100000DD740111F9FFDD6E02DD660319DD757C
:100B200002DD7403C5DD460679FE052005CDF11012
:100B30001803CD2E1AC1111800DD190D20A3185A63
:100B40003A6AE5FE032053DD2140E40E0611ECFF76
:100B5000DD6E00DD660119DD7500DD74017CFEFED1
:100B60002004DD360AFFC5DD460679FE062005CDE8
:100B7000F1101803CD2E1AC1111800DD190D20CD6A
:100B80003A53E43C3253E4FE24200F3E003253E457
:100B90003A57E43C3257E4CD9D65C903010600078E
:100BA0000008000A0009000D000D0010000F0013DE
:100BB000001100190032C7C7C7C7C7C7C7C7C7C713
:100BC000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B5
:100BD000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A5
:100BE000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C795
:100BF000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C785
:100C0000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C774
:100C1000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C764
:100C2000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C754
:100C3000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C744
:100C4000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C734
:100C5000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C724
:100C6000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C714
:100C7000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C704
:100C8000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F4
:100C9000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E4
:100CA000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D4
:100CB000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C4
:100CC000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B4
:100CD000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A4
:100CE000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C794
:100CF000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C784
:100D000065070707CB3C1F6F1110D019E511800153
:100D100019D1EB7EC967FD2158E41118003AE9E4C6
:100D200047FD7E0694FE12306DFE083869FD7E0791
:100D3000953002ED44FE06305DFD7E0CB72028FDA7
:100D40007E16B720223A4FE4B72815FD7E0FFEFF2E
:100D5000280E2152E47EB7200736013E0BCD7330BA
:100D60003E063209E5182D210BE53A44E4BE28245D
:100D70007F77210AE53A4BE4BE2010210CE5347E52
:100D8000FE0338053E133206E518093A4BE4773E78
:100D900001320CE537C9111800FD191084C9C613BA
:100DA000180067DDE5C1FD2158E43AE9E447FDE5B7
:100DB000D17BB92832FD7E0EB7202CFD7E06BC30DB
:100DC00026C612BC3821FD7E07953002ED44FE0692
:100DD0003015DD7E0FFDBE0F200437C91809AFFDA9
:100DE000960CD8DD960CD8111800FD1910C0C967F3
:100DF000DDE5C1FD2158E43AE9E447FDE5D17B9109
:100E00005F2826FD7E0EB72020FD7E07C607BC3872
:100E100018D608BC30133CBC2004CB7B200BFD7ED5
:100E200006953002ED44FE0FD8111800FD1910CBC5
:100E3000C9C60867DDE5C1FD2158E43AE9E447FD8C
:100E4000E5D17B915F2822FD7E0EB7201CFD7E0739
:100E5000BC3016C608BC38112004CB7B200BFD7EAD
:100E600006953002ED44FE0FD8111800FD1910CF81
:100E7000C91AA0B9C8E5218000197EE1A0B9C91A34
:100E8000A0B9C0E5218000197EE1A0B9C97EA0B952
:100E9000C8247E25A0B9C97EA0B9C0247E25A0B9EA
:100EA000C97EB9C8247E25B9C91AB9C0E521800018
:100EB000197EE1B9C9C60518004F3A47E4B9D0C652
:100EC00004B9D83A46E4953002ED44FE0AD0AF3278
:100ED00050E4C94F3A46E4C60EB9D8D61D3001AF2A
:100EE000B9D03A47E4953002ED44FE03D0AF32501A
:100EF000E4C94F3A46E4913002ED44FE0ED03A4741
:100F0000E4953002ED44FE03D0AF3250E4C9EB7EED
:100F1000C670772C360A2C7EC674772C360A018070
:100F20000009360A2D7EC67C772D360A2D7EC678BE
:100F300077ED42EBC9EB7EC660772C360A2C7EC675
:100F400064772C360A01800009360A2D7EC66C773C
:100F50002D360A2D7EC66877ED42EBC9EB7ED67042
:100F6000772C36052C7ED674772C36050180000947
:100F700036052D7ED67C772D36052D7ED67877EDFD
:100F800042EBC9EB7ED660772C36052C7ED6647793
:100F90002C36050180000936052D7ED66C772D365E
:100FA000052D7ED66877ED42EBC9D5070707CB3C08
:100FB0001F6F1110D019EBC5CD0E2FC1D1C9EB7722
:100FC00023237701800009772B2B77ED42EBC92192
:100FD00091E57E47812777383618172193E57E8182
:100FE00027772B7E8827772B7E47CE002777381FE1
:100FF000B8C84F78C6012747C5FE05200C218FE5EC
:10100000343E12CD4231CDF731C178B938E5C9212E
:1010100099992291E52292E5C9D5EB3AD8E5772C4A
:101020002C7701800009772D2D77EBD1C91AB7C82D
:10103000FE2030034F1804772C712C1318EF32B5B3
:10104000E53AB5E5A720FAC90600D60A0430FBC682
:101050000A05F578CD5830F1C63077237123C91AC7
:10106000F50F0F0F0FCD6A30F113E60FC63077235F
:101070007123C94F0600212831095621FEE45E3450
:101080007A3288E5B72809347BFE0720031E003436
:10109000CB9E7B3289E5878787FD21C0E35F160001
:1010A000FD19FD360011FD360811161579FE0B38B5
:1010B0000216033A46E482ED445F16002AE3E5197E
:1010C000FD7502FD74031E003A88E5B7280A1CFD71
:1010D000770CFD750AFD740B211B31097EFD770429
:1010E00021353109460E00CDDB2F3A47E4C6206F8B
:1010F000260029FD7506FD7407CB43280A01F0FF81
:1011000009FD750EFD740F3A89E54F0600219EE535
:10111000093670CB432803233670C9F8F9FBFCFA73
:10112000FDFAFDE1E1E1E1E10000000000FEFEFF6B
:10113000F0AAABF1F002040608051015203050802B
:101140001030D557FE1228083AA7E5B72802D1C9B2
:101150007AE521BBE55E160021BCE519571C7BE64C
:101160000F32BBE572E1D1C93ABAE521BBE5BEC891
:101170005F160021BCE5193CE60F32BAE57ED300CC
:10118000F680D300C9119231CD2D303A8EE5CD488D
:1011900030C906524F554E442D003A8EE53DCDECF8
:1011A00031793C32CCE50E06FE0A3805CD483018C0
:1011B000052C2CCD6A303ACCE5FE043801AF878788
:1011C0005F1600E521D43119EBE1CD2D3011E4316A
:1011D000CD2D30C90654480006535400064E440035
:1011E000065244000620424C4F434B000E000CD6E2
:1011F0000330FB0DC603C90E1E2156D03A8FE5CD34
:101200006A30C92126D0118AE50E1E1AE60FCD6A72
:101210003013CD5F301A0F0F0F0FE60FCD6A300E6F
:10122000042118D03AB8E5B728032160D03AADE6DA
:10123000B72826E521B6E57EB72006361621ADE6AD
:10124000353AADE6E11F300C3600545D13010B005A
:10125000EDB01803CD82321803CD8232119AE52108
:1012600091E506031ABE1323200210F8D03AA7E531
:10127000B7C0010300119AE52191E5EDB00E0621FA
:1012800038D01191E50603CD5F3010FBC911B8E6E7
:101290002120D7014000EDB021A0D7014000EDB0E2
:1012A0002120D8014000EDB021B8D8010E00EDB0EA
:1012B0002138D9010E00EDB0C921B8E61120D701BF
:1012C0004000EDB011A0D7014000EDB01120D801D1
:1012D0004000EDB011B8D8010E00EDB01138D901C1
:1012E0000E00EDB0C9C7C7C7C7C7C7C7C7C7C7C7FD
:1012F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77E
:10130000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C76D
:10131000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C75D
:10132000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C74D
:10133000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C73D
:10134000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C72D
:10135000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C71D
:10136000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C70D
:10137000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7FD
:10138000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7ED
:10139000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7DD
:1013A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7CD
:1013B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BD
:1013C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AD
:1013D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C79D
:1013E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C78D
:1013F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77D
:1014000000003234013572354B3C6236CE364537FA
:101410008934CA3CA83B043EE235593D8C3F9B3998
:10142000A93EF938CC3A1E3F2F3AC53771387D4076
:10143000F73F0001AEE5A4EBA9CFF7A98DCAAECA6C
:10144000F7B3F1B9C5E8D2F7BEF703848DC58E9224
:10145000C2898DD5CB8E98D2999DC4D79398C70455
:10146000A6C6EE04B6C8F104068188CF07A2C3A7BA
:10147000D3ACD1B7C6D5BCCF0AA4CBA9CABEC009CC
:10148000BBCC08ABC3D3B0CC1F0001A4C2A9C1E33D
:10149000A5CAF1A7D3F6ACCFF6B095C1E3B4D3F7A4
:1014A000B0C6E7CAEDB9ECD4F7BEF702A4C1C39049
:1014B00098C0C4B0C5C804A9C5EDB6CDF103848FEA
:1014C000C0C4858BD28C91CE8793D78598C99498C8
:1014D000D5949DD2999DC706A186D707A2C2A3CF56
:1014E000A5D4A7C1ABC2AEC6CBB7C1C5D7BCC0D708
:1014F00009BBCA08A6C3A9D1ADC30AB9D4BEC0D717
:101500001F0001A5CAF2A6E3A8D4F7ABC5F3AFE468
:10151000B0CAF1B3D7B5CCF3B7CCD3B9ECD3F7BAE3
:101520009DCFF0BEF704AED4AFD5B0D6B2C4E803B9
:10153000999DC2D69A9DCED19598CBD49094C9CF7F
:101540008F98C38B8FCCD1868EC4858AC9D306A1D0
:1015500087D707A3CEA4C2A9CFADC1B1D7B8D0BC9D
:10156000D408A8C6ADCEB2D209B6C90AB3D7BEC098
:10157000D71F0001A4C0D0F7A6E1CFF0A8C1C2CE0A
:10158000CFA9D2F6AAC2C3CDCEACC3C4CCCDAEC314
:10159000E5CBEDAFE5CBF7B0C6CAB2C6EAB4C1E35E
:1015A000CDF3B9C5F7BEF703A48ED3AF93C2AF9501
:1015B000CEB295C8B49AC4D1B49DC0B99DCBD5065E
:1015C000A191C807A2D1A7D6ACCBADC0B2C3D3B747
:1015D000C808ACC1B1C4B6CE09BBCE0AA9D2D6BE2A
:1015E000D71F0101A698C9CEA89AC1C4D3D6A8C254
:1015F000C3D4D5AFC2C3D4D5B2CBCCB9C1E5C9CA67
:10160000CDCED2F6BB9DC6D1BEF702B9CBCC04A8D5
:10161000C6C7D0D1B3C6E8CFF103A68AC8CFA89475
:10162000C5D2B298CACDB69DC8CFA89DC0D706A1D5
:1016300091CACD07A6C2D5ADC3D4B7C2CBD508A534
:10164000C4D3B6CCBBC709BBCC0AA6CEBEC5BED2DE
:101650000D8EC2C3D4D598C2C3D4D598CBCC91CA71
:10166000ED1F0001A4C0C2C4C6C8CACCCED0D2D41B
:10167000A98BC0C2C4C6C8CACCCED0D2D4AFC0C257
:10168000C4C6C8CACCCED0D2D4A493D6B4C1F6BEF8
:10169000F702B9C1F603A493C1C3C5C7C9CBCDCF67
:1016A000D1D3D5B49DC006A19DD707A7C0C8D0ADE2
:1016B000C4CCD4B2C0B7C6CACEBCC1D608A1CAD3A6
:1016C000B6C8D009BBC80AA4C0A9C0AFC01F0001DA
:1016D000A5C0E2C6EBCEF0AD91D3D6ADD7AFC1EA8F
:1016E000B0D4B094D5B4C0E3CAECB5D3F6B9C0E673
:1016F000BEF704A2C4C5A5D2F7A9C4E8B6CEF003CC
:10170000A58AC3A59DD1A795C9AF93C0B29DD7B4F3
:1017100098C4CDB99DC706A186CC07A3C0C6D0ADDD
:10172000C6CAAED4B1CFB3D3D6B7C1BCC1CDD6082B
:10173000A2C1C9CFACC309BBCB0AA5CAB5D4BEC030
:101740000D8FD4D51F0001A4C1E8A6CAEED2F7A818
:101750008ACEA9C2E7ABCEF7AD92D6B1D2F4B0959E
:10176000C2E4C7B2C6B4C5C6B7CEF2B6D6D7B9C5FD
:10177000BEF702AB9ACBABCCB19ACCB9C1E4C6EA06
:1017800004AECCF103A49DC0A498C9A68ACFD4B05E
:1017900095D7B19DD506A185D207A4CFD3D7A6D121
:1017A000A7C2C7A9CBCCD7AED7AFCCD3B2C5B5D023
:1017B00008A1C4A3CCA8D209BBCC0AA9C6B1D3BE88
:1017C000D70E93C51F0101A5C0E2C4A8D3F6AAC6CF
:1017D000F1AA8CD5ABC1E3AA9DC6AA9AD1ADD3F725
:1017E000AFC7E9CDEFAF94D3B092C3B2C0E2B3D3E9
:1017F000F7B496C5C9CDB698C4B7C7F0B89AC3B9FF
:10180000D2B8D5F7BCC2D3BEC0F704A7C4C5A5D112
:10181000F3ACC8EFB1C7EFAAD203A184C0A88CD79C
:10182000A9C3AA8DCBAB91C0AC96D0AD92D6B196E0
:10183000CBB29DC1B397D5B496C7CEB89DD406A5FB
:1018400089C307ABD4ADC7CFB1D4B5C8CACCCFB666
:10185000C3D7B7D2BCC0C4CACCD708A5D4A7C8BB0D
:10186000C509A8C20AA5C2BEC0D70F9DC3E5C7F26D
:101870001F0001A4C1C2A9C1E6CAF6A99BCAAEC095
:10188000E7CDF5B092CDD5B3C4E6CBEDD0F5B597A5
:10189000C6D5B8C2E6CBF5BAC0E2BDC4C8C9CFF759
:1018A000029FC0F704A3C7F6BAC4E703A48DC0A67D
:1018B00088C6A997C3A99CD7AE9CC8B397CFD4BA02
:1018C0009EC3BDCE06A185C307A2C1A7D3ACC1C428
:1018D000CEB1C6CBD1B6C5D0D3B8C0C1BDC0C5CAC4
:1018E00008A6CDB0C4BCC609A1C20AB3D1AECDD53D
:1018F0000D99C0C10F9EC5E71F0001AAC2CEACC0A2
:10190000E2AE90C2B1C0E3D3F6B39DC0B6C1E4CDA0
:10191000B7D0F6B8C7EDB9CDD0D49BC5D4BCC4C53B
:10192000D1F7BEC0F702A5C0E2C4EDAA95CDAC9038
:10193000CEAFCFD004A4CEF4A7CAECABD0F5AEC4E2
:10194000ECB1CEF1B8C2E403A184D5A790C3A7C976
:10195000AA8ECFAB90D6AC97C9B197CCB49DCEAE82
:101960009BD7B89DC1C6BA9DCC06A5C307AAC1CC5A
:10197000ADD0AFC5C8CBC0B4C1B5D2BAD1D3D6BC37
:10198000C3C7CB08A7CEB3C3B4D1BBC909B5C70A77
:10199000AACEBCD3BCD50D8BC0C11F0001A4CCF70F
:1019A000A5C7E9A9CDF6AAC1E4AFC5C7E9B4C4B9D2
:1019B000C2C3C7E9CDF7BEC0F702AAC8EA8BCDF60D
:1019C000AC98CDAC95D6AFCFF4B193CFB4C8EACF35
:1019D000F604A2C1E503A488D1A589CAA59DC0A922
:1019E0009DCCA998D7AA8EC5C7AF93C4CAD5AF98C6
:1019F000CEB498C3C7B99DC1B9CA06A186C6BB9D5E
:101A0000CA07A2CCD6A3C9A8C2C4C9ADC9D0D3B293
:101A1000C9D1D3B7C4C9D1BCC2CED608A1D4A7C33B
:101A2000A6D4ACCB09A6CB0AA5C9AFC9BED71F00A7
:101A300001A7C1C5EACDF3D5F7A9D6AFC5E8D2F75E
:101A4000B6C0E6B8C6EACFF1D3D5F7BAD3F7BCD45F
:101A5000F7BDC0EACFF702A5D5AFCAF1B8CCED9F6C
:101A6000C0F704A2C3CBCCD4F7A9C6F3ABD6B0C1A0
:101A7000C2B1D2F4B5D203A192C0A286D3A589C4C3
:101A8000A5CAA78AD4A98BD5A98EC5D7AF97C9B443
:101A900097D1B6C7B89ECBCE06A184CA07A5C1C54B
:101AA000C9CED1D7AAC7CBD0B4C0C3B6D7B8D4BBE0
:101AB000C0C2BDCC08A4C7D0ACD409B5CC0AA7C15C
:101AC000B8D7BDC00D86D6D70E99D41F0101A2C8C4
:101AD000CFD5A3C8D0D4A4C7D4A5C1E6CDD1F385B2
:101AE000CDF0A7C6CDD1A9C6F6AAC0E4AEC6F7AF61
:101AF000C1E4B093C4C6D1D3B3D4B395C7D594C40D
:101B0000B496C3D1B597C8B698C2B6D0D1D5F7B7F9
:101B10009AC9B89AC1B8CEF1B9C6BAC4CAEEBCC3A4
:101B2000C4C7BB9DD5D7BDCFF1BEC0E8CFF702A5D6
:101B3000C0C2C39FC9EE04A6C7F0B0C7F0B1C1E3ED
:101B400003A59DC5D2A98DD7AA8EC3AF9DC0B8CD20
:101B5000BA9ECCBB9DC8BB9EC906A188CBBB9DD6F7
:101B600007A3C0C6D3A7C8CED0D4A8C0B1C8B3CA33
:101B7000CEB2C3B4D6B9D7BAC3BBD1BCC1C6D3BD2C
:101B8000CACE08A2C3BBC2D409ABCA0AB3D4B8CE6A
:101B9000BCC30D88C7ECCEF092D4D595D6D797CDDF
:101BA000EF99CAEC0E9DD61F0001A4C9F6A6C7E99D
:101BB000A69BD6A699C7A9CBF4A99BD4ABC9EBD455
:101BC000AD9BC9ACC2C3AEC3E5AECDF2B0CBEDB0F8
:101BD0009BCBD2B1C2C3B3C5CFD0B5CDF0B799CDF1
:101BE000D0B8C2C4C5BACDF0BDC0E7029FC0F704EB
:101BF000A1C7E9A4C4C5A7C1C203A185C6A488C35F
:101C0000A79CC0A49ED7A99ED5AE9ED3B39ED10655
:101C1000A186C007A2CCD2A7CCD1A9C9AAC2ACC503
:101C2000ACD0AECCAFC2B1C5CFB3CDB6C2C5B8CEC5
:101C3000BBC2C508A3C8A8CAADCBB2CE09BAC30AF5
:101C4000A6C7ABC9B0CB0D99CECF1F0001A5CBED78
:101C5000D4D5A7C0C1C6E8D5AAD1F5ACC8EEAE9020
:101C6000C8AFCEB1C3EEB9C3E6BEC0F702A5D1F38B
:101C7000A789D1B398C3C6BEC2E5C9EDD0F3D6D704
:101C800004A2C0E4C9F1A9CFD0ACCFD003A5C0A5B0
:101C90009DD6A792C2B19DC706A184D607A3D4A59D
:101CA000C1C6C8A8D2D4AFC9CBCDB7C4C5BCC0C506
:101CB000CED408A2CCD2A9CB09BBCB0AA5CBACC849
:101CC000BEC00D89D2F498C4C51F0001A5C3F0A7FA
:101CD000C9CDAAC0F7ACC9CFAFC6F7B1C9CDC6B29E
:101CE000C0E5B4CAF6B6CDB7C1E6B9C6F7BBCDBE3E
:101CF000C0F70289C9CD8EC9CF93CDB396C6B3952F
:101D0000C9B8CDBDCD04A2C1C2D2F703A289C0A576
:101D100089D1AA91C1AA8ED4AF93D1B296C3B498F7
:101D2000D7B79DC0B99DD206A184C307A3C5C9A8D2
:101D3000C4CBCFD7ADCBD2D7B0C2B2CBCFB5C1B762
:101D4000C8CBD5BCC2CBCF08A2CBA7D2B1D3BBC71F
:101D500009BBC30ABECCCED71F0001A4C5F2A6881A
:101D6000C5CBD2D3A9C3E7CBCFF3A6D4F6AB8FC3F1
:101D7000C7CFA694D7ABC7EFD3F7AEC1E7B097C133
:101D8000C7B0CDF4B294CDB39AC4B3C5C6B5CAEE4C
:101D9000D1D5F7B6C2C3B7C7EACED1F5B9C4E7CA41
:101DA000CEF1BEC0F702BEC1C3C5C7C9CBCDCFD12E
:101DB000D3D5D704ADD503A488D1A98FD0B094CC06
:101DC000D6B59DCBB598D0B5D2D406A19DC007A7F6
:101DD000C7A9C9CDD5ACC5AECDD4B3CEB4C2B5C8F4
:101DE000D3B7C5CFBCC2D3D708A1CAA3D4ADD2093B
:101DF000BBC90AA4C5A4CBAEC10D85D3F78ACCEE6E
:101E000096C8C91F0001A799D6A78ED4A7D0F3A959
:101E100091D0AACCEFAC94CCADC8EBD1F3AF97C8BE
:101E2000B0C4E7CDEFB29BC4B3C0E3C9EBB59BC070
:101E3000B6C5E7BAC1E3B299D3B2D4D5B8D4D5B553
:101E4000CFF2B7CFB9CCEFBBCCF2BDC7F7029FC082
:101E5000F703A79CD7A791D5A789CFAA8CCBAD8F25
:101E6000C7B092C3B294D2B598CEB99CCB06A18626
:101E7000D7BDC607ABD1D3AECDCFB1C9CBB0D4B3EC
:101E8000D0B4C5C7B7CCB8C1C3B9D0D2BBD3D5C8FD
:101E9000CA08A4D2A7CDAAC9BCC009B5D40AB3C088
:101EA000BDD3BAC10D8CD1F31F00029FC0F704A4AB
:101EB000C4CAD2D6A7C1C2C5C8CBD0D3D5AAC6CCB6
:101EC000D4ADC2C7CDD0D5B0C1C6C8CBCED4D6B3A1
:101ED000C5C8CACDCFD3D5B6C1C4C9CCD0D2B9C27A
:101EE000C5CBD4D603A487C3D1A490C9D7A790C02B
:101EF000A78DCFAD99C3AD9ED1B69EC006A186C0B9
:101F000007A5CACFA9C2D2D6ADC6B1D4B4CFBAC57F
:101F1000D4ACCB08AACCB6C9CCD209BCCB1F00012B
:101F2000A587C2C6D1A898C2F700A88DC8AB8DC638
:101F3000C7AB98C5AE90CBF0AED3ACD6B597CDEFCE
:101F4000B7CC01AECDEEB9CDEEBACCEDBC9ECBEDAB
:101F5000029FC0F704A2C1F7B9D0F503A59EC0AE99
:101F60009AD6B89ACF06A184C007AFCBD0AED3081B
:101F7000A5C9CCABC7BCD209B5CE0AA8D0AEC6BCE9
:101F8000CB0E90CBCCCFD08FD399CC1F0001A8958E
:101F9000C0EAA8CCEFADCBF6B4D1F6B9C0EDBBC565
:101FA000BCCEBEC0F700B093C2E4B395C9AF95CA2A
:101FB00004A3C1EEA5D0F6B1CAF003A287C0CFA892
:101FC0008ACBAA8ECAAE92C9B295C8B99DC6CCA515
:101FD0009DD706A184D707A8D0D2D4B2C2C4B7C2B5
:101FE00008AACED3B1D3BBD309BBC90AB9C0BEC4FA
:101FF000BECD0F9DC0E41F0001A8C9ECD1F4ACC157
:00000001FF

View File

@@ -0,0 +1,513 @@
:10000000F33100E8010000FD21000010FA0D20F797
:10001000ED5621B3E63601DB04CB7FCA416F35CD07
:100020007A00000000FBC3CF25CD001DCD4C04CDD0
:100030002C0718F5C7C7C7C708D9DDE5FDE5CD28EA
:1000400001CDA200CD68313A6AE5B7C44B2A3A9D8A
:10005000E5FE02CC4101CD9001FDE1DDE1D908FBD7
:10006000C9C7C7C7C7C7FBED45C7C7C7C7C7C7C746
:1000700093246CDB7AFB8591A380AF329DE5D3019D
:100080002100D03600545D1301F017EDB0CD2801EA
:10009000CDF408CDD608CDA66D3E00D300F680D3B2
:1000A00000C921B5E535233521B5E6353AB9E5B7BF
:1000B0002004DB011802DB022F324DE421CFE507DB
:1000C000CB160707CB163A4DE421D0E50FCB160F20
:1000D000CB16DB002F21AAE51FCB161FCB16DB04A6
:1000E000CB67202921B4E57EB720113AAAE5E605C1
:1000F000FE0520063601F1C3590018113AAAE5E6BB
:100100000AFE0A200436001804F1C35900CD230961
:100110003AAFE5B720053E0232B2E53AA7E5B7C8E7
:100120003AB2E5B7C8C3A0683AB3E6B72807CD39F5
:100130007CF1C359000100011100C02100E3EDB0C2
:10014000C9CDE603CD000BCD0013CD0024C9FDE5DC
:100150003AE9E43288E5FD2158E4111800DD7E0615
:10016000FDBE062020DD7E07FD96073002ED44FE31
:10017000043012FD7E0DB7280CFD7E08FE0930020A
:100180000EFFFDE1C9FD192188E53520D0FDE1C94B
:100190003A9DE5B7C83A6AE5B7CC0332DD2140E4C1
:1001A000FD21B0E33A6AE5FE022004FD21F0E3AF51
:1001B00032E8E4DD4E0A3AE8E4B72817DD7E0DB7F1
:1001C000280EDD3408DD7E08FE183804DD36080010
:1001D000CD4E0179FEFF200BFD360400FD360C00EC
:1001E000C3110306002AF6E43AE8E4B7200521002B
:1001F000001819573A02E5B728123AE9E4BA200C78
:10020000113000193ACDE5FE082001EB0922F9E48E
:100210000160450946DD6E00DD7E01C604672929BF
:10022000290E00CB28CB19DD7E0BB72004ED421838
:10023000010929FD74063E0017FD77073AF8E44FDF
:10024000DDCB176628010C3AE8E4B720040E03184A
:1002500011473A02E5B7280A3AE9E4B820043A6EB1
:10026000E54FCBE1FD710011B0432AF9E41956DDE9
:100270007E0BB720043E40AA577AE6C0FD77052AD8
:10028000F9E47A11004219575ED5FD730411C04894
:100290002AF9E419AF575ECB7B280115DD6E02DD2C
:1002A0006603292929176C6719EB21E900B7ED527C
:1002B000ED5BE3E519FD7502FD7403D1CB42284DDA
:1002C0001CFD730CFD7108E501704A2AF9E4097EF2
:1002D0000600ED444FCB79280105E109FD750AFDC3
:1002E000740B7AE6C0FD770D0110472AF9E4097E08
:1002F000CB722802ED444F0600CB79280105FD663C
:1003000007FD6E0609FD750EFD740F1804FD360C11
:100310000011F0FFFD19011800DD0921E8E4343A6D
:10032000E9E4BED2B3013A6AE5FE02C8FD2100E36A
:100330003A17E58787872112E586ED443C4F060092
:100340002AE3E509FD7502FD7403FD3600123A1635
:10035000E5C6048787876F260029FD7506FD7407AB
:100360003A10E5FD7704FD2108E3FD360400FD3673
:100370000C0016141E02DD2118E5DD7E01FE0028AA
:100380003ADD7E03878787473EF1904F06002AE3D8
:10039000E509FD7502FD7403DD7E02C604878787CB
:1003A0006F260029FD7506FD7407FD360012DD7EFF
:1003B00001FD7704010800FD091DC8010400DD09E5
:1003C0001520B7219EE506007EB7281235200FE5DF
:1003D000788787875F160021C4E3193600E123047C
:1003E00078FE0838E3C9218AE57E23B623477EE6F6
:1003F000F0B0200BAF773E0132CEE5CD0332C90E0F
:100400000021B1E63A8BE5BE20010CED5BE1E52170
:100410008DE57E9327772B7E9A277706022B7EDE4B
:1004200000277710F8CB41C83A8BE521B1E6BEC86A
:100430007EFE1520043E1C180AFE1020043E1D18E6
:10044000023E1ECD42317ED6052777C93AFCE4B77D
:10045000C021B6E53A04E5B7200236FF7EFE8038BB
:100460000236187E2104E5FE09300D7EFE012806C5
:100470003E0177CD8963180B7EFE0228063E027787
:10048000CD89633A41E4217BE5BE200C3A43E42365
:10049000BE20053E0132AFE63AAFE6B7C83A46E4C1
:1004A000FE08C0AFCD8963F13E00329DE53E00CD30
:1004B00042313E23CD42313E54CD3E30CD8D323A95
:1004C00000E5B720472121D736052B36001122D76A
:1004D000013E00EDB021A1D736052B360011A2D781
:1004E000013E00EDB02121D836052B36001122D86F
:1004F000013E00EDB00E4721A2D711F806CD2D30F8
:100500003E1FCD42310E02CDCF2F184C3AFFE4B73B
:10051000C264052125D736052B36001126D70138B0
:1005200000EDB021A5D736052B360011A6D701382E
:1005300000EDB02125D836052B36001126D801381C
:1005400000EDB00E4721A6D711DC06CD2D303E1FA1
:10055000CD42310E01CDCF2FCD03323A00E53289A5
:10056000E5CD8906216CE53A8BE5BE3857CDB93229
:1005700021A3D136052B360011A4D1013400EDB0F2
:100580002123D236052B36001124D2013400EDB0E0
:1005900021A3D236052B360011A4D2013400EDB0D0
:1005A0000E472124D2116F06CD2D302A8BE522B6BD
:1005B000E63EFF32B5E63E013205E5CDE4052AB65A
:1005C000E6228BE5CDE405218EE54E347EFE6120EA
:1005D00002364979CDEC31B7C2005D79E607CA34FD
:1005E00028C3ED263A8FE53289E53E143288E52AA4
:1005F0008BE57CE6F0B52832218CE57ED610277796
:100600002B7EDE002777011000CDDB2FCD033221BA
:1006100088E53520DA218FE53A89E5BE20053E11CF
:10062000CD42313E04CD300618C03E1CCD3006C947
:1006300032B5E53A05E5B7282A21B5E67EFE8038D1
:100640000236287EFE143012212BD136052B3600BF
:10065000112CD1010200EDB01809212AD1116B062D
:10066000CD2D303AB5E5FE0020C9C906583200420A
:10067000454C4F572048414C462054494D45204356
:100680004C454152414E4345003E093288E521B96F
:10069000D836052B360011BAD8010C00EDB021393F
:1006A000D936052B3600113AD9010C00EDB00E47B2
:1006B0001126073A88E51F300C1118073A89E5B76B
:1006C0002003111F0721BAD8CD2D303E0ECD3E306C
:1006D0002188E53520D83E70CD3E30C9594F552090
:1006E00048415645204B494C4C4544204E4F2045EF
:1006F0004E454D4945532E00594F55204D414445D7
:1007000020495420574954484F555420454E54527F
:10071000415050494E472E000431303030300004F3
:10072000323030303000202020202000CDCE07CDC8
:100730001D08CDAA093A50E4B7C03AA7E5B7280E7C
:100740003E00329DE53E38CD3E30F1C38568DB0486
:10075000CB77C83E0C324AE43E01329DE53E00CDE7
:1007600042313E06CD42313E38CD3E303E00329DD4
:10077000E5F1218FE5357EFEFF202A2134D711A82F
:1007800007CD2D3021B4D711B507CD2D302134D868
:1007900011A807CD2D303E21CD42313E8CCD3E30CB
:1007A0003E023290E5C3E36A06202020202020206C
:1007B0002020202000062047414D45204F5645521D
:1007C00020002054494D45204F56455220003ACE36
:1007D000E5B7C8DB04CB77C8F1AF32CEE5329DE593
:1007E0003E00CD42313E25CD42312135D736052B55
:1007F00036001136D7011400EDB00E4721B4D711E1
:10080000C207CD2D302135D836052B36001136D80C
:10081000011400EDB03E8CCD3E30C367072A55E48D
:1008200001C0FE09D0AF3250E4329DE5CD8D3221BA
:1008300029D736052B3600112AD7012A00EDB02121
:10084000A9D736052B360011AAD7012A00EDB02111
:1008500029D836052B3600112AD8012A00EDB03EE2
:10086000023289E53E10CD42313E043288E53A88B5
:10087000E51F301221ABD736052B360011ACD7015E
:100880002800EDB0180B0E4721AAD711C008CD2DB6
:10089000303E15CD3E302188E53520D22189E53521
:1008A00020C23E10CD42310E4721AAD711C008CD3B
:1008B0002D303E54CD3E303A8FE5B7C0CDB932C968
:1008C000594F552041524520424F554E4420544FD8
:1008D000204449452E00DB032F47E60332DFE5784D
:1008E0001F1FE6034F060021F008097E32E0E5C92C
:1008F00002010304DB032F1F1F1F1F4721AFE5DB8E
:1009000004CB572011783CE6037723781F1FE603BA
:10091000FE02DEF577C9783CE60FCB5F28013C7715
:100920002377C921ADE511AFE5DB00CD580921AE34
:10093000E513DB021FF604CD58093AB9E54721ABB0
:10094000E57EB72805353E02B047237EB72805353A
:100950003E04B04778D301C91F1F1FCB161FCB160B
:100960007EE655FE50202B2B2B360C3AB2E6B720F4
:10097000083E12D300F680D3001AFE012812FE08AA
:10098000300C21B1E534BEC0AF773E011802D60865
:10099000180D7EE6AAC021B3E5347EE60FC03C21E7
:1009A000B2E5862730023E9977C9DB04CB6FC0CB16
:1009B00067C8DB00CB47C0F1F1AF329DE53E00CD0B
:1009C00042312110D03600545D1301EF13EDB021F8
:1009D00022D711290ACD2D30211AD911480ACD2D3F
:1009E000301100000E043A8EE52160D9CD48302147
:1009F0008EE5DB01CB7F280ECB42280816007EFE59
:100A00000238013518021601DB01CB6F2809CB43F0
:100A100028031E003418021E013E01CD3E30DB00CB
:100A2000CB4F20C07E3DC3D4050253454C454354B3
:100A300020425554544F4E20544F204348414E4776
:100A40004520524F554E4400024449474C454654B8
:100A50002D2D444F574E2020444947524947485472
:100A60002D2D555020204C4556454C2D303000C77B
:100A7000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C706
:100A8000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F6
:100A9000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E6
:100AA000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D6
:100AB000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C6
:100AC000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B6
:100AD000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A6
:100AE000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C796
:100AF000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C786
:100B00003AA7E5B7280ECD125C324DE4FEFF200473
:100B1000AF3250E42A44E47D6C2C2CCDD5627E2A81
:100B200055E4FE0E38032318032100002255E4DDAE
:100B30002140E42108E57EB72801352106E57EB78E
:100B40002818353A0AE5DDBE0B200F210BE53A44A3
:100B5000E4BE2806773E0CCD73303A4EE4B7FAB4C3
:100B60000FC24310214CE47EB7281135C03608214E
:100B70004AE4347EE6FCFE14C83614C93A54E4FE56
:100B800002200D061CCD9F10D0AF3254E4CD371299
:100B90003A54E4FE01200ECD0E120620CD9F10D057
:100BA0003E033254E4AF3251E43A44E42A45E4CD02
:100BB000002D06F80E10CD8D2ECA9F0CAF3287E5A2
:100BC0003254E47EE6FCFE1820133E013287E53AFB
:100BD00042E4B720083E013251E4CA9F0C3A45E492
:100BE000FE1D300E1AE6F8FE1028071AE6F8FE0879
:100BF000200D3E013287E53A42E4FE80DA9F0C2A5E
:100C000047E43A46E4CD152DDAB10C214FE47EB726
:100C10002006343E15CD42313E0C324AE42109E52E
:100C20007EB7280435C3B10CCD0E122A42E47C11E4
:100C30001E00192242E4BC280A3A87E5B72804AF0F
:100C40003242E42A42E4297C3C1F3245E429297CD3
:100C50003246E4CD88113A42E4B7C03A44E42A452A
:100C6000E4CD002D3A45E4FE1D30061AE6F8FE08F4
:100C7000C0150E04CDA92EC01D1D1D1D3A44E4B79C
:100C800028061AE6F8FE08C03A44E4FE17300A7B4C
:100C9000C6085F1AE6F8FE08C03E08324CE4C921D7
:100CA0004FE47EB7280736003E16CD4231AF3252B0
:100CB000E43A4DE4CB7FC2420FCB6FC2CF0FCB5F84
:100CC0002806CD4C0ED81808CB572804CDB70ED81F
:100CD0003A4DE4CB47C25E0DCB4FC2210D3A44E4FE
:100CE0002A45E4CD002D1AE6F8FE08200B3E12320C
:100CF0004AE43E013249E4C906F80E10CD8D2E209B
:100D00000D151AE6F8FE10C03E08324AE4C97EE628
:100D1000FCFE1820063E07324AE4C93E12324AE47D
:100D2000C9AF3287E53A44E42A45E4CD002D3A4480
:100D3000E4B7280E151B1B1B1B06F80E08CD712EE1
:100D4000200C3E013287E53A40E43DFE7FD03E0173
:100D5000324BE4CD3712CDD40D11ECFF183DAF323C
:100D600087E53A44E42A45E4CD002D3A44E4FE17F1
:100D7000300E151313131306F80E08CD712E200E26
:100D80003E013287E53A40E4FE803002B7C9AF3217
:100D90004BE4CD3712CDD40D1114002A40E47C1958
:100DA0002240E4BC28143A87E5B7280E2A40E47DA7
:100DB000FE803801242E002240E42A40E4297C3CB5
:100DC0001F3244E429297C3247E4CD88110600CD46
:100DD000F11037C93A51E4B7C8F13A4AE4E6FC21C8
:100DE00049E4FE2C2802360135C0214AE4347EE66F
:100DF000FCFE2C2802362C7ED6184F060021204CF3
:100E0000097E3249E421D04D097E878787875F3A82
:100E100087E5572A40E43A4BE4B77D280D93300824
:100E2000CB422803AF180125180983300624CB4292
:100E30002801AF6F2240E42A40E4297C3C1F324461
:100E4000E429297C3247E4CD881137C9AF3287E5E0
:100E50003A44E42A45E4CD002D06F80E10CD8D2E3F
:100E600020143A45E4FE01281615151AE6F8FE0886
:100E7000280D181718091AE6F8FE102802B7C93A03
:100E800042E43DFE7FD03E013287E5CD0E123A446A
:100E9000E42A45E4CD002D151AE6F811E2FFFE1014
:100EA000CA070F2154E47EFE03C2070F353E1C32F1
:100EB0004AE4CDAB1037C9AF3287E53A45E4FE1DB1
:100EC00030071AE6F8FE08200E3A42E4FE803002AF
:100ED000B7C93E013287E5CD0E123A44E42A43E415
:100EE000CD002D1A15E6F8FE101A111E002018E686
:100EF000F8FE1028122154E47EB7200B343E203235
:100F00004AE4CDAB1037C92A42E47C192242E4BC42
:100F100028113A87E5B7280B7DFE803801242E0082
:100F20002242E42A42E4297C3C1F3245E429297C00
:100F30003246E4CD88110608CDF1103E033254E468
:100F400037C9AF320FE53A45E4FE1CD03A44E4B766
:100F5000C83A45E46FC6033217E53A44E43D321619
:100F6000E5CD002D06FC0E08CD7F2EC0ED5313E518
:100F70001506F80E00CD7F2EC03E10324AE4141C38
:100F80001C1C1C1AE6F8FE0828172C2C2C2C7EE6BC
:100F9000FCFE1828077EE6F8FE1020053E11324AB6
:100FA000E43EFF324EE42140012211E53E01324B86
:100FB000E43207E53A0FE5FE0ED259102A46E47DE9
:100FC000C6086F7CD606CDEF2DDA9210C35910AF4C
:100FD000320FE53A45E4FE1CD03A44E4FE17D03A1D
:100FE00045E46FC6033217E53A44E43C3216E5CDDA
:100FF000002D06FC0E08CD7F2EC0ED5313E515061F
:10100000F80E00CD7F2EC03E10324AE4141D1D1D87
:101010001D1AE6F8FE0828172D2D2D2D7EE6FCFE64
:101020001828077EE6F8FE1020053E11324AE43EFD
:1010300001324EE42140012211E5AF324BE43E0182
:101040003207E53A0FE5FE0E300F2A46E47DC6086A
:101050006F7CC606CD312E38392107E57EB72807CB
:1010600036003E01CD4231CD0E12CD37123A0FE59A
:10107000FE14D203112110E536F33A0FE51F1F309D
:101080000236F22A11E511C000192211E5210FE5FF
:1010900034C93E003210E5AF324EE43207E5C921D3
:1010A00049E4352802B7C9214AE4343A4AE4D6185B
:1010B0004F060021204C097E3249E4B720073E014B
:1010C0003249E437C921A84E09561E00CB2ACB1B52
:1010D000CB2ACB1BCB2ACB1B2A42E4192242E42A7F
:1010E00042E4297C3C1F3245E429297C3246E4B79E
:1010F000C92149E435C03606214AE4347EE6FCB80D
:10110000C870C9AF324EE4320CE53D320BE5CDDD9F
:101110000CED5B13E53E04CDBE2F3E003210E52101
:1011200018E506147EB728072323232310F6C936B3
:10113000A023233A16E5775F233A17E577572A71FC
:10114000E5B7ED52C02271E53E013202E521E9E446
:101150007EFD2158E4011800FD093D20FB34FD7798
:1011600000FD7702FD7301FD730415FD7203FD722E
:10117000057B878787FD77077A878787FD7706FD59
:10118000360901FD360CB0C93A51E4B720183A408F
:10119000E4FE803802ED44FE14D03A42E4FE80388A
:1011A00002ED44FE1ED03A44E42A45E4CD002D155C
:1011B0001AE6FCFE602020CD832FED5FFE3338045D
:1011C0003E08180AFE0D38043E0918023E0ACD7387
:1011D000303E02CD4231C9FE70C021FCE435CD5C09
:1011E0002F0E00141AFE0420020E04210DE53A0809
:1011F000E5B72004360018067EFE033001347E81F8
:10120000CD73303E133208E53E02CD4231C92A404B
:10121000E47DFE803007D6143001AF1806C61430C6
:101220000224AF6F2240E4297C3C1F3244E4292988
:101230007C3247E4C388113A52E4B7C02A42E47DC5
:10124000FE803007D61E3001AF1806C61E300224BD
:10125000AF6F2242E4297C3C1F3245E429297C32CD
:1012600046E4C38811C7C7C7C7C7C7C7C7C7C7C76B
:10127000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7FE
:10128000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7EE
:10129000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7DE
:1012A000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7CE
:1012B000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BE
:1012C000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AE
:1012D000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C79E
:1012E000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C78E
:1012F000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77E
:101300003AE9E432E8E4DD2158E4CD19131118007C
:10131000DD1921E8E43520F2C9216DE536003A02F5
:10132000E5B728193AE8E4FE012012343A03E5B79C
:10133000280BDD7E0CFE202004DD360C40DD7E0E09
:10134000B7C03AF5E4B72803DD3417DD7E0CB728C3
:1013500032DD350CDD7E0CFE20DA2315DD6E07DD77
:101360007E06CDF22EDD7E0CFEB0D0DD3509C0DD6F
:10137000360908DD340ADD7E0AE6FCFE14C8DD36D7
:101380000A14C9DD7E14FE14200FCDF718D8061CF0
:10139000CD661AD0DD361400C9DD7E14FE012012A0
:1013A000CDC11BCDF718D80620CD661AD0DD361476
:1013B00015C9DD7E15FE022019CDC11BCDF718D849
:1013C0000628CD661AD0DD361500DD3409DD360F6E
:1013D00002C9DD7E15FE01200FCDF718D80624CDF9
:1013E000661AD0DD361503C9DD7E06DD6E07CD9E9B
:1013F0002DDA7515DD7E04DD6E05CD002D06F80EA7
:1014000010CD8D2ECA7515AF3287E5DD77147EE6D7
:10141000FCFE18200C3E013287E5DD7E02B7CA755E
:1014200015DD7E05FE1D30291AE6F8FE1028221A69
:10143000E6F8FE08281BDD7E16B728083CDDBE0551
:10144000301C180D1AFE042015DD7E05DD771618F8
:101450000D3E013287E5DD7E02FE80DA7515DD3650
:101460001000CDC11BDD7E02C615DD7702300DDD1B
:1014700034033A87E5B72804AFDD7702DD6E02DD7D
:101480006603297C3C1FDD770529297CDD7706DD95
:101490007E06DD6E07CDD32ECD391B060CCD2E1A60
:1014A000DD7E04DD6E05CD002D247E25FE04203E6C
:1014B000DD7E0DB72819DD360D00EB06FC0E00CDE4
:1014C0007F2E2004CD0E2FC921FCE435C9181F3A08
:1014D0006DE5B728193A03E5B720133E013203E55D
:1014E000EB06FC0E00CD7F2E2003CD352FC9DD7E0F
:1014F00002B7C0151AFE04C03A87E5B7C8DD361634
:1015000000DD360CC0DD361000DD360A103E05CD9C
:1015100042313A6DE5B7C0010001CDDB2F3E01320B
:1015200000E5C9B7283CFE1F200FDD361001DD366F
:101530000FFEDD3505DD3505C9FE183806DD7E0FE9
:10154000FEFEC8DD361000DD3405DD3405DD7E0F1E
:10155000DD770BFEFE3804DD770CC9DD360A18CDC9
:10156000761ADD360C01CDF718D80618CD661AD0DC
:10157000DD360C00C9DD361600DD361001DD7E0FCC
:10158000B7CA85173DCA29173DCA5D163DCA9A15C7
:10159000DD6E07DD7E06CDF22EC9AF3287E5DD7E3A
:1015A00005FE012823DD7E04DD6E05CD002D06F845
:1015B0000E10CD8D2E200B15151AE6F8FE082014FE
:1015C00018061AE6F8FE10C0DD7E023DFE7FD03E12
:1015D000013287E5CDC11BDD7E04DD6E03CD002D1C
:1015E00024247EE6F8FE1020301AE6F8FE102029AA
:1015F000151AE6F8FE102821DD7E14FE15201ADDEE
:101600003514DD460ADD4E09C5DD360A1CCD761AD5
:10161000C13041DD700ADD7109DD7E02D615DD774E
:1016200002300F3A87E5B72806AFDD77021803DDF1
:101630003503DD6E02DD6603297C3C1FDD7705295D
:10164000297CDD7706CD391BCD7A1B0608CD2E1AF5
:10165000DD361415DD7E06DD6E07C3D32EDD7E0676
:10166000DD6E07CD9E2DD8AF3287E5DD7E05FE1DF0
:101670003010DD7E04DD6E05CD002D1AE6F8FE0883
:10168000200BDD7E02FE80D83E013287E57EE6FC3F
:10169000FE182017DD7E15FE032010DD3515DD3622
:1016A0000A28CD761AD0DD360A0CC9CDC11BDD7EE5
:1016B00004DD6E03CD002D1AE6F8FE102029151A60
:1016C000E6F8FE102821DD7E14FE15281ADD3414FC
:1016D000DD460ADD4E09C5DD360A20CD761AC13059
:1016E0003FDD700ADD7109DD7E02C615DD7702304F
:1016F0000DDD34033A87E5B72804AFDD7702DD6EF0
:1017000002DD6603297C3C1FDD770529297CDD7716
:1017100006CD391BCD7A1B0608CD2E1ADD361415E1
:10172000DD7E06DD6E07C3D32EDD6E06DD7E07CDC2
:10173000EF2DD8AF3287E5DD7E04B72816DD7E04B5
:10174000DD6E05CD002D2B2B2B2B06F80E08CD8D35
:101750002E200CDD7E003DFE7FD03E013287E53E2F
:1017600001DD770BCDEE1BCD4C18DD7E00D60EDDF6
:101770007700300F3A87E5B72806AFDD770018030A
:10178000DD35011857DD6E06DD7E07CD312ED8AF71
:101790003287E5DD7E04FE173016DD7E04DD6E0542
:1017A000CD002D2323232306F80E08CD8D2E200BEC
:1017B000DD7E00FE80D83E013287E5AFDD770BCDC0
:1017C000EE1BCD4C18DD7E00C60EDD7700300DDD42
:1017D00034013A87E5B728ABAFDD7700DD6E00DD79
:1017E0006601297C3C1FDD770429297CDD7707CD44
:1017F000391BCD7A1BDD6E06DD7E0BB7DD7E07283B
:1018000005CDB92E1803CDB52EDD7E04DD6E05CDD8
:10181000002DE6FCFE182019DD7E15B7200BDD3407
:1018200015DD360A24CD761AD0DD361503060418E8
:1018300018DD7E15FE03200BDD3515DD360A28CDBB
:10184000761AD0DD3615000600C32E1A3A6DE5B7BC
:1018500020073AFBE4B7C818053A6FE5B7C8DD7E44
:1018600004DD6E05CD002DE6FCFE18C0F1DD6E0630
:10187000DD7E0BB7DD7E072805CDB92E1803CDB56B
:101880002EDD7E0AE6FCFE2C2804DD360901DD355E
:1018900009C0DD340ADD7E0AE6FCFE2C2804DD36B4
:1018A0000A2CCD191B21204C097EDD770921D04D52
:1018B000097EB7C8878787875F3A87E557DD7E004F
:1018C000DDCB0B46280F93300ACB422803AF180319
:1018D000DD3501180B833008DD3401CB422801AF20
:1018E000DD7700DD6E00DD6601297C3C1FDD7704BD
:1018F00029297CDD7707C9DD7E0FFEFFC8E603CA14
:10190000A6193DCAEA193D2859DD7E0CB7280FDD1E
:101910007E04DD6E05CD002DE6F8FE0837C8DDCB70
:101920000F6E200ADD7E06DD6E07CDA22DD8DD46C6
:101930000FCB782020DD7E02D620DD77023003DD5C
:101940003503DD6E02DD6603297C3C1FDD7705294A
:10195000297CDD7706DD7E06DD6E07CB70CCD32ECD
:10196000B7C9DDCB0F6E200ADD7E06DD6E07CD9E8A
:101970002DD8DD460FCB782020DD7E02C620DD7716
:10198000023003DD3403DD6E02DD6603297C3C1F7B
:10199000DD770529297CDD7706DD7E06DD6E07CB48
:1019A00070CCD32EB7C9DDCB0F6E200ADD6E06DDFD
:1019B0007E07CD312ED8DD460FCB782020DD7E008E
:1019C000C610DD77003003DD3401DD6E00DD660119
:1019D000297C3C1FDD770429297CDD7707DD6E0635
:1019E000DD7E07CB70CCB52EB7C9DDCB0F6E200ADC
:1019F000DD6E06DD7E07CDEF2DD8DD460FCB7820DE
:101A000020DD7E00D610DD77003003DD3501DD6E90
:101A100000DD6601297C3C1FDD770429297CDD7708
:101A200007DD6E06DD7E07CB70CCB92EB7C9DD357C
:101A300009C0DD360906DD340ADD7E0AFE03201208
:101A40003ACDE55F1600215D1A197EB72804DD70D6
:101A50000AC9DD7E0AE6FCB8C8DD700AC9000001CB
:101A6000010000010000DD3509C0DD340ADD7E0A19
:101A7000E6FCB8C20D1BDD361000CD191B21204C31
:101A8000097EDD7709B7CA0D1B21F84C097E57E6A0
:101A9000032007DDCB0B46280114DD720F21D04D4A
:101AA000097EB72830878787871600DDCB0B46284D
:101AB00003ED44155FDD6E00DD660119DD7500DDA7
:101AC0007401DD6E00DD6601297C3C1FDD77042991
:101AD000297CDD770721A84E097EB7282F561E00E6
:101AE000CB2ACB1BCB2ACB1BCB2ACB1BDD6E02DD3B
:101AF000660319DD7502DD7403DD6E02DD66032900
:101B00007C3C1FDD770529297CDD7706C9DD350A98
:101B1000DD3409DD360FFF37C93A6DE5B728083ADD
:101B2000CDE5E6073C18033ACDE5478780878787F0
:101B3000DD860AD6184F0600C93A6DE5B7C0DD7ECE
:101B400000FE803802ED44FE0ED0DD7E02FE8038BD
:101B500002ED44FE15D0DD7E04DD6E05CD002D15B1
:101B60001AE6FCFE70C0DD7E0DB7C03A68E5C6041B
:101B7000878787DD770DCD5C2FC9DD7E0DB7C8DD8A
:101B80007E0FFE02D0DD7E0AFE043803FE08D8DD9B
:101B90007E04DD6E05CD002D1506FC0E00CD7F2EDA
:101BA000C0DD350DC0DD7E0FFE00DD7E002006FEAF
:101BB00080300A1804FE803804CD0E2FC9DD340DA4
:101BC000C9DD7E00FE803007D60E3001AF1808C692
:101BD0000E3004DD3401AFDD77006FDD6601297C56
:101BE0003C1FDD770429297CDD7707C3391BDD7EA7
:101BF00002FE803007D6153001AF1808C615300434
:101C0000DD3403AFDD77026FDD6603297C3C1FDD29
:101C1000770529297CDD7706C3391BC7C7C7C7C726
:101C2000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C744
:101C3000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C734
:101C4000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C724
:101C5000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C714
:101C6000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C704
:101C7000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7F4
:101C8000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7E4
:101C9000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D4
:101CA000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C4
:101CB000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B4
:101CC000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A4
:101CD000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C794
:101CE000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C784
:101CF000C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C774
:101D00003AE9E432EAE4DD2158E4FD21EBE4DD7E4A
:101D100010B7281CDD6E04DD660522EFE4DD7E07CA
:101D200032F2E4CDFD1D47DD7E10B72803DD700FD4
:101D3000111800DD1921EAE43520D33AE9E432EA4A
:101D4000E4DD2158E4DD7E04DD6E052C2CCDD5626A
:101D50007EE60DFE0D280A2101E57EFE39D0360013
:101D6000C9111800DD1921EAE43520D92101E57EE9
:101D7000FE38300234C9C0343E00329DE521B5E55D
:101D80007EBE28FDCD8D322129D736052B36001198
:101D90002AD7012E00EDB021A9D736052B36001128
:101DA000AAD7012E00EDB02129D836052B36001117
:101DB0002AD8012E00EDB00E4721AAD711E51DCD7E
:101DC0002D303E1FCD42310E01CDCF2FCD03323EFF
:101DD000013289E5CD8906CDB9323E26CD42313E6C
:101DE00002329DE5C9414C4C20454E454D49455375
:101DF00020415245205345414C45442E003A45E48C
:101E0000FDBE05C2B91EFD4604FD7E072147E4BEA6
:101E1000380520543EFFC93A44E4B820033E00C9C7
:101E20000478FD6E05CD002DE6FCFE1828E97EE65F
:101E3000F8FE1028E2247E25E6F8FE1028D9FD7E63
:101E400005FE1D30D27EE6F8FE08286D247EE6F8F9
:101E5000FE0828651AE6F8FE1028BC1AFE0428B70A
:101E6000E6F8FE0828B118513A44E4B820033E01D0
:101E7000C90578FD6E05CD002DE6FCFE1828E97E2B
:101E8000E6F8FE1028E2247E25E6F8FE1028D9FDAB
:101E90007E05FE1D30D27EE6F8FE08281C247EE674
:101EA000F8FE0828141AE6F8FE1028BC1AFE0428CA
:101EB000B7E6F8FE0828B118003EFF32EDE432EE36
:101EC000E4FD7E0432EBE432ECE4CDE01ECD2B1FCA
:101ED000CD771FCD961FCDB91FCDF11F3AEDE4C9C7
:101EE0003AEBE4B728443DFD6E05CD002D06F80E13
:101EF00008CD8D2EC806F80E10CD8D2E28257EE635
:101F0000FCFE18281EFD7E05FE1D30171AE6F8FEA1
:101F10001028101AFE04280BE6F8FE08280521EB0D
:101F2000E435C921EBE4357E18B9C93AECE4FE1773
:101F300030443CFD6E05CD002D06F80E08CD8D2EEB
:101F4000C806F80E10CD8D2E28257EE6FCFE18283A
:101F50001EFD7E05FE1D30171AE6F8FE1028101A29
:101F6000FE04280BE6F8FE08280521ECE434C9211C
:101F7000ECE4347E18B8C9FD7E04CD2A20FDBE05F0
:101F8000C832F3E4FD4E04CD3D2121EEE4BED0770E
:101F90003E0232EDE4C9FD7E04CDB620FDBE05C88B
:101FA000FD4E0432F4E4CD3D2121EEE447781800E3
:101FB000BED0773E0332EDE4C921EBE47EFDBE04E2
:101FC0003015CD2A20CDD81F3AEBE4CDB620CDD8A0
:101FD0001F21EBE43418E5C9FDBE05C821EBE44E32
:101FE000CD3D2121EEE4BED032EEE43E0132EDE4FF
:101FF000C921ECE4FD7E04BE30167ECD2A20CD1131
:00000001FF

View File

@@ -0,0 +1,348 @@
//
// sdram.v
//
// sdram controller implementation for the MiST board
// https://github.com/mist-devel/mist-board
//
// Copyright (c) 2013 Till Harbaum <till@harbaum.org>
// Copyright (c) 2019 Gyorgy Szombathelyi
//
// This source file is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published
// by the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This source file is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
module sdram (
// interface to the MT48LC16M16 chip
inout reg [15:0] SDRAM_DQ, // 16 bit bidirectional data bus
output reg [12:0] SDRAM_A, // 13 bit multiplexed address bus
output reg SDRAM_DQML, // two byte masks
output reg SDRAM_DQMH, // two byte masks
output reg [1:0] SDRAM_BA, // two banks
output SDRAM_nCS, // a single chip select
output SDRAM_nWE, // write enable
output SDRAM_nRAS, // row address select
output SDRAM_nCAS, // columns address select
// cpu/chipset interface
input init_n, // init signal after FPGA config to initialize RAM
input clk, // sdram clock
input port1_req,
output reg port1_ack,
input port1_we,
input [23:1] port1_a,
input [1:0] port1_ds,
input [15:0] port1_d,
output reg [15:0] port1_q,
input [16:1] cpu1_addr,
output reg [15:0] cpu1_q,
input [16:1] cpu2_addr,
output reg [15:0] cpu2_q,
input port2_req,
output reg port2_ack,
input port2_we,
input [23:1] port2_a,
input [1:0] port2_ds,
input [15:0] port2_d,
output reg [31:0] port2_q,
input [16:2] sp_addr,
output reg [31:0] sp_q
);
localparam RASCAS_DELAY = 3'd2; // tRCD=20ns -> 2 cycles@<100MHz
localparam BURST_LENGTH = 3'b001; // 000=1, 001=2, 010=4, 011=8
localparam ACCESS_TYPE = 1'b0; // 0=sequential, 1=interleaved
localparam CAS_LATENCY = 3'd2; // 2/3 allowed
localparam OP_MODE = 2'b00; // only 00 (standard operation) allowed
localparam NO_WRITE_BURST = 1'b1; // 0= write burst enabled, 1=only single access write
localparam MODE = { 3'b000, NO_WRITE_BURST, OP_MODE, CAS_LATENCY, ACCESS_TYPE, BURST_LENGTH};
// 64ms/8192 rows = 7.8us -> 842 cycles@108MHz
localparam RFRSH_CYCLES = 10'd842;
// ---------------------------------------------------------------------
// ------------------------ cycle state machine ------------------------
// ---------------------------------------------------------------------
/*
SDRAM state machine for 2 bank interleaved access
1 word burst, CL2
cmd issued registered
0 RAS0 cas1 - data0 read burst terminated
1 ras0
2 data1 returned
3 CAS0 data1 returned
4 RAS1 cas0
5 ras1
6 CAS1 data0 returned
*/
localparam STATE_RAS0 = 3'd0; // first state in cycle
localparam STATE_RAS1 = 3'd4; // Second ACTIVE command after RAS0 + tRRD (15ns)
localparam STATE_CAS0 = STATE_RAS0 + RASCAS_DELAY + 1'd1; // CAS phase - 3
localparam STATE_CAS1 = STATE_RAS1 + RASCAS_DELAY; // CAS phase - 6
localparam STATE_READ0 = 3'd0;// STATE_CAS0 + CAS_LATENCY + 2'd2; // 7
localparam STATE_READ1 = 3'd3;
localparam STATE_DS1b = 3'd0;
localparam STATE_READ1b = 3'd4;
localparam STATE_LAST = 3'd6;
reg [2:0] t;
always @(posedge clk) begin
t <= t + 1'd1;
if (t == STATE_LAST) t <= STATE_RAS0;
end
// ---------------------------------------------------------------------
// --------------------------- startup/reset ---------------------------
// ---------------------------------------------------------------------
// wait 1ms (32 8Mhz cycles) after FPGA config is done before going
// into normal operation. Initialize the ram in the last 16 reset cycles (cycles 15-0)
reg [4:0] reset;
reg init = 1'b1;
always @(posedge clk, negedge init_n) begin
if(!init_n) begin
reset <= 5'h1f;
init <= 1'b1;
end else begin
if((t == STATE_LAST) && (reset != 0)) reset <= reset - 5'd1;
init <= !(reset == 0);
end
end
// ---------------------------------------------------------------------
// ------------------ generate ram control signals ---------------------
// ---------------------------------------------------------------------
// all possible commands
localparam CMD_INHIBIT = 4'b1111;
localparam CMD_NOP = 4'b0111;
localparam CMD_ACTIVE = 4'b0011;
localparam CMD_READ = 4'b0101;
localparam CMD_WRITE = 4'b0100;
localparam CMD_BURST_TERMINATE = 4'b0110;
localparam CMD_PRECHARGE = 4'b0010;
localparam CMD_AUTO_REFRESH = 4'b0001;
localparam CMD_LOAD_MODE = 4'b0000;
reg [3:0] sd_cmd; // current command sent to sd ram
reg [15:0] sd_din;
// drive control signals according to current command
assign SDRAM_nCS = sd_cmd[3];
assign SDRAM_nRAS = sd_cmd[2];
assign SDRAM_nCAS = sd_cmd[1];
assign SDRAM_nWE = sd_cmd[0];
reg [24:1] addr_latch[2];
reg [24:1] addr_latch_next[2];
reg [16:1] addr_last[2];
reg [16:2] addr_last2[2];
reg [15:0] din_latch[2];
reg [1:0] oe_latch;
reg [1:0] we_latch;
reg [1:0] ds[2];
reg port1_state;
reg port2_state;
localparam PORT_NONE = 2'd0;
localparam PORT_CPU1 = 2'd1;
localparam PORT_CPU2 = 2'd2;
localparam PORT_SP = 2'd1;
localparam PORT_REQ = 2'd3;
reg [1:0] next_port[2];
reg [1:0] port[2];
reg refresh;
reg [10:0] refresh_cnt;
wire need_refresh = (refresh_cnt >= RFRSH_CYCLES);
// PORT1: bank 0,1
always @(*) begin
if (refresh) begin
next_port[0] = PORT_NONE;
addr_latch_next[0] = addr_latch[0];
end else if (port1_req ^ port1_state) begin
next_port[0] = PORT_REQ;
addr_latch_next[0] = { 1'b0, port1_a };
end else if (cpu1_addr != addr_last[PORT_CPU1]) begin
next_port[0] = PORT_CPU1;
addr_latch_next[0] = { 8'd0, cpu1_addr };
end else if (cpu2_addr != addr_last[PORT_CPU2]) begin
next_port[0] = PORT_CPU2;
addr_latch_next[0] = { 8'd0, cpu2_addr };
end else begin
next_port[0] = PORT_NONE;
addr_latch_next[0] = addr_latch[0];
end
end
// PORT1: bank 2,3
always @(*) begin
if (port2_req ^ port2_state) begin
next_port[1] = PORT_REQ;
addr_latch_next[1] = { 1'b1, port2_a };
end else if (sp_addr != addr_last2[PORT_SP]) begin
next_port[1] = PORT_SP;
addr_latch_next[1] = { 1'b1, 7'd0, sp_addr, 1'b0 };
end else begin
next_port[1] = PORT_NONE;
addr_latch_next[1] = addr_latch[1];
end
end
always @(posedge clk) begin
// permanently latch ram data to reduce delays
sd_din <= SDRAM_DQ;
SDRAM_DQ <= 16'bZZZZZZZZZZZZZZZZ;
{ SDRAM_DQMH, SDRAM_DQML } <= 2'b11;
sd_cmd <= CMD_NOP; // default: idle
refresh_cnt <= refresh_cnt + 1'd1;
if(init) begin
// initialization takes place at the end of the reset phase
if(t == STATE_RAS0) begin
if(reset == 15) begin
sd_cmd <= CMD_PRECHARGE;
SDRAM_A[10] <= 1'b1; // precharge all banks
end
if(reset == 10 || reset == 8) begin
sd_cmd <= CMD_AUTO_REFRESH;
end
if(reset == 2) begin
sd_cmd <= CMD_LOAD_MODE;
SDRAM_A <= MODE;
SDRAM_BA <= 2'b00;
end
end
end else begin
// RAS phase
// bank 0,1
if(t == STATE_RAS0) begin
addr_latch[0] <= addr_latch_next[0];
port[0] <= next_port[0];
{ oe_latch[0], we_latch[0] } <= 2'b00;
if (next_port[0] != PORT_NONE) begin
sd_cmd <= CMD_ACTIVE;
SDRAM_A <= addr_latch_next[0][22:10];
SDRAM_BA <= addr_latch_next[0][24:23];
addr_last[next_port[0]] <= addr_latch_next[0][16:1];
if (next_port[0] == PORT_REQ) begin
{ oe_latch[0], we_latch[0] } <= { ~port1_we, port1_we };
ds[0] <= port1_ds;
din_latch[0] <= port1_d;
port1_state <= port1_req;
end else begin
{ oe_latch[0], we_latch[0] } <= 2'b10;
ds[0] <= 2'b11;
end
end
end
// bank 2,3
if(t == STATE_RAS1) begin
refresh <= 1'b0;
addr_latch[1] <= addr_latch_next[1];
{ oe_latch[1], we_latch[1] } <= 2'b00;
port[1] <= next_port[1];
if (next_port[1] != PORT_NONE) begin
sd_cmd <= CMD_ACTIVE;
SDRAM_A <= addr_latch_next[1][22:10];
SDRAM_BA <= addr_latch_next[1][24:23];
addr_last2[next_port[1]] <= addr_latch_next[1][16:2];
if (next_port[1] == PORT_REQ) begin
{ oe_latch[1], we_latch[1] } <= { ~port1_we, port1_we };
ds[1] <= port2_ds;
din_latch[1] <= port2_d;
port2_state <= port2_req;
end else begin
{ oe_latch[1], we_latch[1] } <= 2'b10;
ds[1] <= 2'b11;
end
end
if (next_port[1] == PORT_NONE && need_refresh && !we_latch[0] && !oe_latch[0]) begin
refresh <= 1'b1;
refresh_cnt <= 0;
sd_cmd <= CMD_AUTO_REFRESH;
end
end
// CAS phase
if(t == STATE_CAS0 && (we_latch[0] || oe_latch[0])) begin
sd_cmd <= we_latch[0]?CMD_WRITE:CMD_READ;
{ SDRAM_DQMH, SDRAM_DQML } <= ~ds[0];
if (we_latch[0]) begin
SDRAM_DQ <= din_latch[0];
port1_ack <= port1_req;
end
SDRAM_A <= { 4'b0010, addr_latch[0][9:1] }; // auto precharge
SDRAM_BA <= addr_latch[0][24:23];
end
if(t == STATE_CAS1 && (we_latch[1] || oe_latch[1])) begin
sd_cmd <= we_latch[1]?CMD_WRITE:CMD_READ;
{ SDRAM_DQMH, SDRAM_DQML } <= ~ds[1];
if (we_latch[1]) begin
SDRAM_DQ <= din_latch[1];
port2_ack <= port2_req;
end
SDRAM_A <= { 4'b0010, addr_latch[1][9:1] }; // auto precharge
SDRAM_BA <= addr_latch[1][24:23];
end
// Data returned
if(t == STATE_READ0 && oe_latch[0]) begin
case(port[0])
PORT_REQ: begin port1_q <= sd_din; port1_ack <= port1_req; end
PORT_CPU1: begin cpu1_q <= sd_din; end
PORT_CPU2: begin cpu2_q <= sd_din; end
default: ;
endcase;
end
if(t == STATE_READ1 && oe_latch[1]) begin
case(port[1])
PORT_REQ: port2_q[15:0] <= sd_din;
PORT_SP : sp_q[15:0] <= sd_din;
default: ;
endcase;
end
if(t == STATE_DS1b && oe_latch[1]) { SDRAM_DQMH, SDRAM_DQML } <= ~ds[1];
if(t == STATE_READ1b && oe_latch[1]) begin
case(port[1])
PORT_REQ: begin port2_q[31:16] <= sd_din; port2_ack <= port2_req; end
PORT_SP : begin sp_q[31:16] <= sd_din; end
default: ;
endcase;
end
end
end
endmodule

View File

@@ -0,0 +1,91 @@
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY altera_mf;
USE altera_mf.all;
ENTITY spram IS
GENERIC
(
init_file : string := "";
--numwords_a : natural;
widthad_a : natural;
width_a : natural := 8;
outdata_reg_a : string := "UNREGISTERED"
);
PORT
(
address : IN STD_LOGIC_VECTOR (widthad_a-1 DOWNTO 0);
clock : IN STD_LOGIC ;
data : IN STD_LOGIC_VECTOR (width_a-1 DOWNTO 0);
wren : IN STD_LOGIC ;
q : OUT STD_LOGIC_VECTOR (width_a-1 DOWNTO 0)
);
END spram;
ARCHITECTURE SYN OF spram IS
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (width_a-1 DOWNTO 0);
COMPONENT altsyncram
GENERIC (
clock_enable_input_a : STRING;
clock_enable_output_a : STRING;
init_file : STRING;
intended_device_family : STRING;
lpm_hint : STRING;
lpm_type : STRING;
numwords_a : NATURAL;
operation_mode : STRING;
outdata_aclr_a : STRING;
outdata_reg_a : STRING;
power_up_uninitialized : STRING;
read_during_write_mode_port_a : STRING;
widthad_a : NATURAL;
width_a : NATURAL;
width_byteena_a : NATURAL
);
PORT (
wren_a : IN STD_LOGIC ;
clock0 : IN STD_LOGIC ;
address_a : IN STD_LOGIC_VECTOR (widthad_a-1 DOWNTO 0);
q_a : OUT STD_LOGIC_VECTOR (width_a-1 DOWNTO 0);
data_a : IN STD_LOGIC_VECTOR (width_a-1 DOWNTO 0)
);
END COMPONENT;
BEGIN
q <= sub_wire0(width_a-1 DOWNTO 0);
altsyncram_component : altsyncram
GENERIC MAP (
clock_enable_input_a => "BYPASS",
clock_enable_output_a => "BYPASS",
init_file => init_file,
intended_device_family => "Cyclone III",
lpm_hint => "ENABLE_RUNTIME_MOD=NO",
lpm_type => "altsyncram",
numwords_a => 2**widthad_a,
operation_mode => "SINGLE_PORT",
outdata_aclr_a => "NONE",
outdata_reg_a => outdata_reg_a,
power_up_uninitialized => "FALSE",
read_during_write_mode_port_a => "NEW_DATA_NO_NBE_READ",
widthad_a => widthad_a,
width_a => width_a,
width_byteena_a => 1
)
PORT MAP (
wren_a => wren,
clock0 => clock,
address_a => address,
data_a => data,
q_a => sub_wire0
);
END SYN;

View File

@@ -0,0 +1,164 @@
library IEEE;
use IEEE.std_logic_1164.all;
use ieee.numeric_std.all;
--use ieee.std_logic_arith.all;
--use IEEE.std_logic_unsigned.all;
library work;
use work.pace_pkg.all;
use work.video_controller_pkg.all;
use work.sprite_pkg.all;
use work.platform_pkg.all;
entity sprite_array is
generic
(
N_SPRITES : integer;
DELAY : integer
);
port
(
reset : in std_logic;
-- register interface
reg_i : in to_SPRITE_REG_t;
-- video control signals
video_ctl : in from_VIDEO_CTL_t;
-- extra data
graphics_i : in to_GRAPHICS_t;
-- sprite data
row_a : out SPRITE_ROW_A_t;
row_d : in SPRITE_ROW_D_t;
-- video data
rgb : out RGB_t;
set : out std_logic;
pri : out std_logic;
spr0_set : out std_logic
);
end entity sprite_array;
architecture SYN of sprite_array is
type reg_a_t is array (natural range <>) of from_SPRITE_REG_t;
type ctl_i_a_t is array (natural range <>) of to_SPRITE_CTL_t;
type ctl_o_a_t is array (natural range <>) of from_SPRITE_CTL_t;
alias clk : std_logic is video_ctl.clk;
alias clk_ena : std_logic is video_ctl.clk_ena;
signal reg_o : reg_a_t(0 to N_SPRITES-1);
signal ctl_i : ctl_i_a_t(0 to N_SPRITES-1);
signal ctl_o : ctl_o_a_t(0 to N_SPRITES-1);
signal ld_r : std_logic_vector(N_SPRITES-1 downto 0);
begin
-- Sprite Data Load Arbiter
-- - enables each sprite controller during hblank
-- to allow loading of sprite row data into row buffer
process (clk, clk_ena, reset)
variable i : integer range 0 to N_SPRITES-1;
begin
if reset = '1' then
-- enable must be 1 clock behind address to latch data after fetch
--ld_r <= (N_SPRITES-1 => '1', others => '0');
-- make ISE 9.2.03i happy...
ld_r(ld_r'left) <= '1';
ld_r(ld_r'left-1 downto 0) <= (others => '0');
i := 0;
elsif rising_edge(clk) and clk_ena = '1' then
ld_r <= ld_r(ld_r'left-1 downto 0) & ld_r(ld_r'left);
if i = N_SPRITES-1 then
i := 0;
else
i := i + 1;
end if;
row_a <= ctl_o(i).a;
end if;
end process;
-- sprite row data fan-out
GEN_ROW_D : for i in 0 to N_SPRITES-1 generate
ctl_i(i).ld <= ld_r(i);
ctl_i(i).d <= row_d;
end generate GEN_ROW_D;
-- Sprite Priority Encoder
-- - determines which sprite pixel (if any) is to be displayed
-- We can use a clocked process here because the tilemap
-- output is 1 clock behind at this point
process (clk, clk_ena)
variable spr_on_v : std_logic := '0';
variable spr_pri_v : std_logic := '0';
begin
if rising_edge(clk) and clk_ena = '1' then
spr_on_v := '0';
spr_pri_v := '0';
for i in 0 to N_SPRITES-1 loop
-- if highest priority = 0 and pixel on
if spr_pri_v = '0' and ctl_o(i).set = '1' then
-- if no sprite on or this priority = 1
if spr_on_v = '0' or reg_o(i).pri = '1' then
rgb <= ctl_o(i).rgb;
spr_on_v := '1'; -- flag as sprite on
spr_pri_v := reg_o(i).pri; -- store priority
end if;
end if;
end loop;
end if;
set <= spr_on_v;
pri <= spr_pri_v;
end process;
-- for NES, and perhaps others
-- it's actually more complicated than this
-- but it'll do for now...
spr0_set <= ctl_o(0).set;
--
-- Component Instantiation
--
GEN_REGS : for i in 0 to N_SPRITES-1 generate
sptReg_inst : entity work.sptReg
generic map
(
INDEX => i
)
port map
(
reg_i => reg_i,
reg_o => reg_o(i)
);
sptCtl_inst : entity work.spritectl
generic map
(
INDEX => i,
DELAY => DELAY
)
port map
(
-- sprite registers
reg_i => reg_o(i),
-- video control signals
video_ctl => video_ctl,
-- sprite control signals
ctl_i => ctl_i(i),
ctl_o => ctl_o(i),
graphics_i => graphics_i
);
end generate GEN_REGS;
end SYN;

View File

@@ -0,0 +1,97 @@
library IEEE;
use IEEE.std_logic_1164.all;
--use IEEE.numeric_std.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
library work;
use work.video_controller_pkg.all;
package sprite_pkg is
subtype SPRITE_N_t is std_logic_vector(11 downto 0);
subtype SPRITE_A_t is std_logic_vector(7 downto 0);
subtype SPRITE_D_t is std_logic_vector(7 downto 0);
type from_SPRITE_REG_t is record
n : SPRITE_N_t;
x : std_logic_vector(10 downto 0);
y : std_logic_vector(10 downto 0);
xflip : std_logic;
yflip : std_logic;
colour : std_logic_vector(7 downto 0);
pri : std_logic;
end record;
type to_SPRITE_REG_t is record
clk : std_logic;
clk_ena : std_logic;
wr : std_logic;
a : SPRITE_A_t;
d : SPRITE_D_t;
end record;
function NULL_TO_SPRITE_REG return to_SPRITE_REG_t;
subtype SPRITE_ROW_D_t is std_logic_vector(63 downto 0);
subtype SPRITE_ROW_A_t is std_logic_vector(15 downto 0);
type to_SPRITE_CTL_t is record
ld : std_logic;
d : SPRITE_ROW_D_t;
end record;
type from_SPRITE_CTL_t is record
a : SPRITE_ROW_A_t;
rgb : RGB_t;
set : std_logic;
end record;
function NULL_TO_SPRITE_CTL return to_SPRITE_CTL_t;
component sprite_array is
generic
(
N_SPRITES : integer;
DELAY : integer
);
port
(
reset : in std_logic;
-- register interface
reg_i : in to_SPRITE_REG_t;
-- video control signals
video_ctl : in from_VIDEO_CTL_t;
-- extra data
graphics_i : in to_GRAPHICS_t;
-- sprite data
row_a : out SPRITE_ROW_A_t;
row_d : in SPRITE_ROW_D_t;
-- video data
rgb : out RGB_t;
set : out std_logic;
pri : out std_logic;
spr0_set : out std_logic
);
end component sprite_array;
function flip_row
(
row_in : std_logic_vector;
flip : std_logic
)
return SPRITE_ROW_D_t;
function flip_1
(
d_i : std_logic_vector;
flip : std_logic
)
return std_logic_vector;
end package sprite_pkg;

View File

@@ -0,0 +1,62 @@
library work;
use work.pace_pkg.all;
--use work.sprite_pkg.all;
package body sprite_pkg is
function NULL_TO_SPRITE_REG return to_SPRITE_REG_t is
begin
return ('0', '0', '0', (others => '0'), (others => '0'));
end function NULL_TO_SPRITE_REG;
function NULL_TO_SPRITE_CTL return to_SPRITE_CTL_t is
begin
return ('0', (others => '0'));
end function NULL_TO_SPRITE_CTL;
function flip_row
(
row_in : std_logic_vector;
flip : std_logic
)
return std_logic_vector is
constant HALF : natural := (row_in'length / 2) - 1;
alias row_in_0 : std_logic_vector(row_in'length-1 downto 0)
is row_in;
variable row_out : std_logic_vector(row_in_0'range);
begin
if flip = '0' then
return row_in;
else
for i in 0 to HALF loop
row_out ((HALF-i)*2+1 downto (HALF-i)*2) := row_in_0(i*2+1 downto i*2);
end loop;
return row_out;
end if;
end flip_row;
function flip_1
(
d_i : std_logic_vector;
flip : std_logic
)
return std_logic_vector is
alias d_i_0 : std_logic_vector(d_i'length-1 downto 0) is d_i;
variable d_o : std_logic_vector(d_i_0'range);
begin
if flip = '0' then
return d_i;
else
for i in d_i_0'range loop
d_o(i) := d_i_0(d_i_0'high-i);
end loop;
return d_o;
end if;
end function flip_1;
end package body sprite_pkg;

View File

@@ -0,0 +1,202 @@
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
library work;
use work.pace_pkg.all;
use work.video_controller_pkg.all;
use work.sprite_pkg.all;
--use work.project_pkg.all;
use work.platform_pkg.all;
use work.platform_variant_pkg.all;
entity spritectl is
generic
(
INDEX : natural;
DELAY : integer
);
port
(
-- sprite registers
reg_i : in from_SPRITE_REG_t;
-- video control signals
video_ctl : in from_VIDEO_CTL_t;
-- sprite control signals
ctl_i : in to_SPRITE_CTL_t;
ctl_o : out from_SPRITE_CTL_t;
graphics_i : in to_GRAPHICS_t
);
end entity spritectl;
architecture SYN of spritectl is
alias clk : std_logic is video_ctl.clk;
alias clk_ena : std_logic is video_ctl.clk_ena;
signal flipData : std_logic_vector(47 downto 0); -- flipped row data
alias rgb : RGB_t is ctl_o.rgb;
begin
flipData(47 downto 32) <= flip_1 (ctl_i.d(47 downto 32), reg_i.xflip);
flipData(31 downto 16) <= flip_1 (ctl_i.d(31 downto 16), reg_i.xflip);
flipData(15 downto 0) <= flip_1 (ctl_i.d(15 downto 0), reg_i.xflip);
process (clk, clk_ena)
variable rowStore : std_logic_vector(47 downto 0); -- saved row of spt to show during visibile period
variable pel : std_logic_vector(2 downto 0);
variable x : unsigned(video_ctl.x'range);
variable y : unsigned(video_ctl.y'range);
variable yMat : boolean; -- raster is between first and last line of sprite
variable xMat : boolean; -- raster in between left edge and end of line
variable height : unsigned(6 downto 0);
-- the width of rowCount determines the scanline multipler
-- - eg. (4 downto 0) is 1:1
-- (5 downto 0) is 2:1 (scan-doubling)
-- variable rowCount : unsigned(3+PACE_VIDEO_V_SCALE downto 0);
-- alias row : unsigned(4 downto 0) is
-- rowCount(rowCount'left downto rowCount'left-4);
variable rowCount : unsigned(height'range);
alias row : unsigned(rowCount'range) is rowCount;
-- which part of the sprite is being drawn
alias segment : unsigned(1 downto 0) is rowCount(5 downto 4);
variable prom_i : integer range sprite_prom'range;
variable code : std_logic_vector(9 downto 0);
variable pal_i : std_logic_vector(7 downto 0);
variable pal_rgb : pal_rgb_t;
begin
if rising_edge(clk) then
if clk_ena = '1' then
if video_ctl.hblank = '1' then
x := unsigned(reg_i.x) - M62_VIDEO_H_OFFSET + PACE_VIDEO_PIPELINE_DELAY - 3;
y := 256 + 128 - 15 - unsigned(reg_i.y);
-- hande sprite height, placement
prom_i := to_integer(unsigned(reg_i.n(9 downto 5)));
code := reg_i.n(9 downto 0); -- default
case sprite_prom(prom_i) is
when 1 =>
-- double height
height := to_unsigned(2*16,height'length);
y := y - 16;
when 2 =>
-- quadruple height
height := to_unsigned(4*16,height'length);
y := y - 3*16;
when others =>
height := to_unsigned(16,height'length);
end case;
-- do this 1st because we don't have many clocks
if y = unsigned(video_ctl.y) then
-- start counting sprite row
rowCount := (others => '0');
yMat := true;
elsif row = height then
yMat := false;
end if;
case sprite_prom(prom_i) is
when 1 =>
-- double height
if reg_i.yflip = '1' then
code(0) := not segment(0);
else
code(0) := segment(0);
end if;
when 2 =>
-- quadruple height
if reg_i.yflip = '1' then
code(1 downto 0) := not std_logic_vector(segment);
else
code(1 downto 0) := std_logic_vector(segment);
end if;
when others =>
null;
end case;
xMat := false;
-- stop sprites wrapping from bottom of screen
if y = 0 then
yMat := false;
end if;
-- sprites not visible before row 16
if ctl_i.ld = '1' then
if yMat then
rowStore := flipData; -- load sprite data
else
rowStore := (others => '0');
end if;
end if;
end if; -- hblank='1'
if video_ctl.stb = '1' then
if x = unsigned(video_ctl.x) then
-- count up at left edge of sprite
rowCount := rowCount + 1;
-- start of sprite
--if unsigned(x) /= 0 and unsigned(x) < 240 then
xMat := true;
--end if;
end if;
if xMat then
-- shift in next pixel
pel := rowStore(rowStore'left-32) & rowStore(rowStore'left-16) & rowStore(rowStore'left);
rowStore(47 downto 32) := rowStore(46 downto 32) & '0';
rowStore(31 downto 16) := rowStore(30 downto 16) & '0';
rowStore(15 downto 0) := rowStore(14 downto 0) & '0';
end if;
end if;
if PLATFORM_VARIANT = "ldrun" or
PLATFORM_VARIANT = "battroad" then
pal_i := '0' & reg_i.colour(3 downto 0) & pel;
else
pal_i := reg_i.colour(4 downto 0) & pel;
end if;
--pal_i := "000" & std_logic_vector(to_unsigned(INDEX,5));
pal_rgb := sprite_pal(to_integer(unsigned(pal_i)));
rgb.r <= pal_rgb(0) & "00";
rgb.g <= pal_rgb(1) & "00";
rgb.b <= pal_rgb(2) & "00";
-- set pixel transparency based on match
ctl_o.set <= '0';
if xMat and pel /= "000" then
if graphics_i.bit8(0)(4) = '1' then
ctl_o.set <= '1';
end if;
end if;
end if; -- clk_ena='1'
end if; -- rising_edge(clk)
-- generate sprite data address
ctl_o.a(15) <= '0'; -- unused
ctl_o.a(14 downto 5) <= code;
ctl_o.a(4) <= '0'; -- dual-port RAM
if reg_i.yflip = '0' then
ctl_o.a(3 downto 0) <= std_logic_vector(row(3 downto 0));
else
ctl_o.a(3 downto 0) <= not std_logic_vector(row(3 downto 0));
end if;
end process;
end architecture SYN;

View File

@@ -0,0 +1,68 @@
Library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
library work;
use work.sprite_pkg.all;
entity sptReg is
generic
(
INDEX : natural
);
port
(
reg_i : in to_SPRITE_REG_t;
reg_o : out from_SPRITE_REG_t
);
end sptReg;
architecture SYN of sptReg is
alias clk : std_logic is reg_i.clk;
alias clk_ena : std_logic is reg_i.clk_ena;
begin
process (clk, clk_ena)
begin
if rising_edge(clk) then
if clk_ena = '1' then
if reg_i.a(7 downto 3) = std_logic_vector(to_unsigned(INDEX, 5)) then
if reg_i.wr = '1' then
case reg_i.a(2 downto 0) is
when "000" =>
reg_o.colour(4 downto 0) <= reg_i.d(4 downto 0);
when "010" =>
reg_o.y(7 downto 0) <= reg_i.d;
when "011" =>
reg_o.y(8) <= reg_i.d(0);
when "100" =>
reg_o.n(7 downto 0) <= reg_i.d(7 downto 0);
when "101" =>
reg_o.yflip <= reg_i.d(7);
reg_o.xflip <= reg_i.d(6);
reg_o.n(10 downto 8) <= reg_i.d(2 downto 0);
when "110" =>
reg_o.x(7 downto 0) <= reg_i.d;
when "111" =>
reg_o.x(8) <= reg_i.d(0);
when others =>
null;
end case;
end if; -- reg_i.wr='1'
end if; -- reg_i.a()=INDEX
end if; -- clk_ena='1'
end if; -- rising_edge(clk)
end process;
reg_o.x(reg_o.x'left downto 9) <= (others => '0');
reg_o.y(reg_o.y'left downto 9) <= (others => '0');
reg_o.n(reg_o.n'left downto 11) <= (others => '0');
reg_o.colour(reg_o.colour'left downto 5) <= (others => '0');
reg_o.pri <= '1';
end SYN;

View File

@@ -0,0 +1,83 @@
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY altera_mf;
USE altera_mf.all;
ENTITY sprom IS
GENERIC
(
init_file : string := "";
--numwords_a : natural;
widthad_a : natural;
width_a : natural := 8;
outdata_reg_a : string := "UNREGISTERED"
);
PORT
(
address : IN STD_LOGIC_VECTOR (widthad_a-1 DOWNTO 0);
clock : IN STD_LOGIC ;
q : OUT STD_LOGIC_VECTOR (width_a-1 DOWNTO 0)
);
END sprom;
ARCHITECTURE SYN OF sprom IS
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (width_a-1 DOWNTO 0);
COMPONENT altsyncram
GENERIC (
address_aclr_a : STRING;
clock_enable_input_a : STRING;
clock_enable_output_a : STRING;
init_file : STRING;
intended_device_family : STRING;
lpm_hint : STRING;
lpm_type : STRING;
numwords_a : NATURAL;
operation_mode : STRING;
outdata_aclr_a : STRING;
outdata_reg_a : STRING;
widthad_a : NATURAL;
width_a : NATURAL;
width_byteena_a : NATURAL
);
PORT (
clock0 : IN STD_LOGIC ;
address_a : IN STD_LOGIC_VECTOR (widthad_a-1 DOWNTO 0);
q_a : OUT STD_LOGIC_VECTOR (width_a-1 DOWNTO 0)
);
END COMPONENT;
BEGIN
q <= sub_wire0(width_a-1 DOWNTO 0);
altsyncram_component : altsyncram
GENERIC MAP (
address_aclr_a => "NONE",
clock_enable_input_a => "BYPASS",
clock_enable_output_a => "BYPASS",
init_file => init_file,
intended_device_family => "Cyclone III",
lpm_hint => "ENABLE_RUNTIME_MOD=NO",
lpm_type => "altsyncram",
numwords_a => 2**widthad_a,
operation_mode => "ROM",
outdata_aclr_a => "NONE",
outdata_reg_a => outdata_reg_a,
widthad_a => widthad_a,
width_a => width_a,
width_byteena_a => 1
)
PORT MAP (
clock0 => clock,
address_a => address,
q_a => sub_wire0
);
END SYN;

View File

@@ -0,0 +1,147 @@
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.numeric_std.all;
library work;
use work.pace_pkg.all;
use work.video_controller_pkg.all;
use work.platform_pkg.all;
entity target_top is port(
clock_50 : in std_logic;
clock_vid : in std_logic;
clk_aud : in std_logic;
reset_in : in std_logic;
audio_out : out std_logic_vector(11 downto 0);
usr_coin1 : in std_logic;
usr_coin2 : in std_logic;
usr_service : in std_logic;
usr_start1 : in std_logic;
usr_start2 : in std_logic;
p1_up : in std_logic;
p1_dw : in std_logic;
p1_lt : in std_logic;
p1_rt : in std_logic;
p1_f1 : in std_logic;
p1_f2 : in std_logic;
p2_up : in std_logic;
p2_dw : in std_logic;
p2_lt : in std_logic;
p2_rt : in std_logic;
p2_f1 : in std_logic;
p2_f2 : in std_logic;
VGA_VS : out std_logic;
VGA_HS : out std_logic;
VGA_R : out std_logic_vector(3 downto 0);
VGA_G : out std_logic_vector(3 downto 0);
VGA_B : out std_logic_vector(3 downto 0);
cpu_rom_addr : out std_logic_vector(14 downto 0);
cpu_rom_do : in std_logic_vector(7 downto 0);
snd_rom_addr : out std_logic_vector(13 downto 0);
snd_rom_do : in std_logic_vector(7 downto 0)
);
end target_top;
architecture SYN of target_top is
signal clkrst_i : from_CLKRST_t;
signal buttons_i : from_BUTTONS_t;
signal switches_i : from_SWITCHES_t;
signal leds_o : to_LEDS_t;
signal inputs_i : from_INPUTS_t;
signal video_i : from_VIDEO_t;
signal video_o : to_VIDEO_t;
signal platform_i : from_PLATFORM_IO_t;
signal platform_o : to_PLATFORM_IO_t;
signal sound_data : std_logic_vector(7 downto 0);
begin
clkrst_i.clk(0) <= clock_50;
clkrst_i.clk(1) <= clock_vid;
clkrst_i.arst <= reset_in;
clkrst_i.arst_n <= not clkrst_i.arst;
GEN_RESETS : for i in 0 to 3 generate
process (clkrst_i.clk(i), clkrst_i.arst)
variable rst_r : std_logic_vector(2 downto 0) := (others => '0');
begin
if clkrst_i.arst = '1' then
rst_r := (others => '1');
elsif rising_edge(clkrst_i.clk(i)) then
rst_r := rst_r(rst_r'left-1 downto 0) & '0';
end if;
clkrst_i.rst(i) <= rst_r(rst_r'left);
end process;
end generate GEN_RESETS;
video_i.clk <= clkrst_i.clk(1);
video_i.clk_ena <= '1';
video_i.reset <= clkrst_i.rst(1);
VGA_R <= video_o.rgb.r(9 downto 6);
VGA_G <= video_o.rgb.g(9 downto 6);
VGA_B <= video_o.rgb.b(9 downto 6);
VGA_HS <= video_o.hsync;
VGA_VS <= video_o.vsync;
--Sound_Board : entity work.Sound_Board
-- port map(
-- clock_E => clk_aud,
-- areset => clkrst_i.rst(1),
-- select_sound => sound_data,
-- audio_out => audio_out,
-- snd_rom_addr => snd_rom_addr,
-- snd_rom_do => snd_rom_do,
-- dbg_cpu_addr => open
-- );
pace_inst : entity work.pace
port map(
clkrst_i => clkrst_i,
buttons_i => buttons_i,
switches_i => switches_i,
inputs_i => inputs_i,
video_i => video_i,
video_o => video_o,
sound_data_o => sound_data,
platform_i => platform_i,
platform_o => platform_o,
cpu_rom_addr => cpu_rom_addr,
cpu_rom_do => cpu_rom_do
);
inputs_i.jamma_n.coin(1) <= not usr_coin1;
inputs_i.jamma_n.coin(2) <= not usr_coin2;
inputs_i.jamma_n.service <= not usr_service;
inputs_i.jamma_n.p(1).start <= not usr_start1;
inputs_i.jamma_n.p(2).start <= not usr_start2;
inputs_i.jamma_n.p(1).up <= not p1_up;
inputs_i.jamma_n.p(1).down <= not p1_dw;
inputs_i.jamma_n.p(1).left <= not p1_lt;
inputs_i.jamma_n.p(1).right <= not p1_rt;
inputs_i.jamma_n.p(1).button(1) <= not p1_f1;
inputs_i.jamma_n.p(1).button(2) <= not p1_f2;
inputs_i.jamma_n.p(1).button(3) <= '1';
inputs_i.jamma_n.p(1).button(4) <= '1';
inputs_i.jamma_n.p(1).button(5) <= '1';
inputs_i.jamma_n.p(2).up <= not p2_up;
inputs_i.jamma_n.p(2).down <= not p2_dw;
inputs_i.jamma_n.p(2).left <= not p2_lt;
inputs_i.jamma_n.p(2).right <= not p2_rt;
inputs_i.jamma_n.p(2).button(1) <= not p2_f1;
inputs_i.jamma_n.p(2).button(2) <= not p2_f2;
inputs_i.jamma_n.p(2).button(3) <= '1';
inputs_i.jamma_n.p(2).button(4) <= '1';
inputs_i.jamma_n.p(2).button(5) <= '1';
-- not currently wired to any inputs
inputs_i.jamma_n.coin_cnt <= (others => '1');
-- inputs_i.jamma_n.coin(2) <= '1';
-- inputs_i.jamma_n.service <= '1';
inputs_i.jamma_n.tilt <= '1';
inputs_i.jamma_n.test <= '1';
end SYN;

View File

@@ -0,0 +1,106 @@
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
library work;
use work.pace_pkg.all;
--use work.project_pkg.all;
use work.platform_pkg.all;
use work.platform_variant_pkg.all;
use work.video_controller_pkg.all;
--
-- Irem M62 Tilemap Controller
--
-- Tile data is 2 BPP.
--
architecture TILEMAP_1 of tilemapCtl is
alias clk : std_logic is video_ctl.clk;
alias clk_ena : std_logic is video_ctl.clk_ena;
alias stb : std_logic is video_ctl.stb;
alias hblank : std_logic is video_ctl.hblank;
alias vblank : std_logic is video_ctl.vblank;
signal x : std_logic_vector(video_ctl.x'range);
signal y : std_logic_vector(video_ctl.y'range);
alias rot_en : std_logic is graphics_i.bit8(0)(0);
alias hscroll : std_logic_vector(15 downto 0) is graphics_i.bit16(0);
begin
-- not used
ctl_o.map_a(ctl_o.map_a'left downto 11) <= (others => '0');
ctl_o.attr_a(ctl_o.attr_a'left downto 11) <= (others => '0');
ctl_o.tile_a(ctl_o.tile_a'left downto 13) <= (others => '0');
-- screen rotation
x <= std_logic_vector(M62_VIDEO_H_OFFSET + unsigned(video_ctl.x)) when unsigned(y) < 6*8 else
std_logic_vector(M62_VIDEO_H_OFFSET + unsigned(video_ctl.x) + unsigned(hscroll(8 downto 0)));
-- when rot_en = '0' else not video_ctl.y;
--y <= not video_ctl.y when rot_en = '0' else 32 + video_ctl.x;
y <= video_ctl.y; -- when rot_en = '0' else video_ctl.x;
-- generate pixel
process (clk, clk_ena)
variable tile_d_r : std_logic_vector(23 downto 0);
variable attr_d_r : std_logic_vector(7 downto 0);
variable pel : std_logic_vector(2 downto 0);
variable pal_i : std_logic_vector(7 downto 0);
variable pal_rgb : pal_rgb_t;
begin
if rising_edge(clk) then
if clk_ena = '1' then
-- 1st stage of pipeline
-- - set tilemap, attribute address
ctl_o.map_a(10 downto 6) <= y(7 downto 3);
ctl_o.map_a(5 downto 0) <= x(8 downto 3);
ctl_o.attr_a(10 downto 6) <= y(7 downto 3);
ctl_o.attr_a(5 downto 0) <= x(8 downto 3);
-- 2nd stage of pipeline
-- - set tile address
if x(2 downto 0) = "010" then
ctl_o.tile_a(12 downto 11) <= ctl_i.attr_d(7 downto 6);
ctl_o.tile_a(10 downto 3) <= ctl_i.map_d(7 downto 0);
ctl_o.tile_a(2 downto 0) <= y(2 downto 0);
end if;
-- 3rd stage of pipeline
-- - read tile, attribute data from ROM
if x(2 downto 0) = "100" then
tile_d_r := ctl_i.tile_d(tile_d_r'range);
attr_d_r := ctl_i.attr_d(7 downto 0);
elsif stb = '1' then
tile_d_r := tile_d_r(tile_d_r'left-1 downto 0) & '0';
end if;
-- extract R,G,B from colour palette
pel := tile_d_r(tile_d_r'left-16) & tile_d_r(tile_d_r'left-8) & tile_d_r(tile_d_r'left);
pal_i := attr_d_r(4 downto 0) & pel;
pal_rgb := tile_pal(to_integer(unsigned(pal_i)));
ctl_o.rgb.r <= pal_rgb(0) & "00";
ctl_o.rgb.g <= pal_rgb(1) & "00";
ctl_o.rgb.b <= pal_rgb(2) & "00";
ctl_o.set <= '0'; -- default
-- if pel /= "000" then
-- pal_rgb(0)(7 downto 5) /= "000" or
-- pal_rgb(1)(7 downto 5) /= "000" or
-- pal_rgb(2)(7 downto 5) /= "000" then
if graphics_i.bit8(0)(3) = '1' then
ctl_o.set <= '1';
end if;
-- end if;
end if; -- clk_ena
end if; -- rising_edge_clk
end process;
end architecture TILEMAP_1;

View File

@@ -0,0 +1,29 @@
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
library work;
use work.pace_pkg.all;
--use work.project_pkg.all;
use work.platform_pkg.all;
use work.video_controller_pkg.all;
entity tilemapCtl is
generic
(
DELAY : integer
);
port
(
reset : in std_logic;
-- video control signals
video_ctl : in from_VIDEO_CTL_t;
-- tilemap controller signals
ctl_i : in to_TILEMAP_CTL_t;
ctl_o : out from_TILEMAP_CTL_t;
graphics_i : in to_GRAPHICS_t
);
end entity tilemapCtl;

View File

@@ -0,0 +1,455 @@
library IEEE;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
library work;
use work.video_controller_pkg.all;
entity pace_video_controller is
generic
(
CONFIG : PACEVideoController_t := PACE_VIDEO_NONE;
DELAY : integer := 1;
H_SIZE : integer;
V_SIZE : integer;
L_CROP : integer range 0 to 255;
R_CROP : integer range 0 to 255;
H_SCALE : integer;
V_SCALE : integer;
H_SYNC_POL : std_logic := '1';
V_SYNC_POL : std_logic := '1';
BORDER_RGB : RGB_t := RGB_BLACK
);
port
(
-- clocking etc
video_i : in from_VIDEO_t;
-- register interface
reg_i : in VIDEO_REG_t;
-- video input data
rgb_i : in RGB_t;
-- control signals (out)
video_ctl_o : out from_VIDEO_CTL_t;
-- video output control & data
video_o : out to_VIDEO_t
);
end pace_video_controller;
architecture SYN of pace_video_controller is
constant SIM_DELAY : time := 2 ns;
constant VIDEO_H_SIZE : integer := H_SIZE * H_SCALE;
constant VIDEO_V_SIZE : integer := V_SIZE * V_SCALE;
subtype reg_t is integer range 0 to 2047;
alias clk : std_logic is video_i.clk;
alias clk_ena : std_logic is video_i.clk_ena;
alias reset : std_logic is video_i.reset;
-- registers
signal h_front_porch_r : reg_t := 0;
signal h_sync_r : reg_t := 0;
signal h_back_porch_r : reg_t := 0;
signal h_border_r : reg_t := 0;
signal h_video_r : reg_t := 0;
signal v_front_porch_r : reg_t := 0;
signal v_sync_r : reg_t := 0;
signal v_back_porch_r : reg_t := 0;
signal v_border_r : reg_t := 0;
signal v_video_r : reg_t := 0;
signal border_rgb_r : RGB_t := ((others=>'0'), (others=>'0'), (others=>'0'));
-- derived values
signal h_sync_start : reg_t := 0;
signal h_back_porch_start : reg_t := 0;
signal h_left_border_start : reg_t := 0;
signal h_video_start : reg_t := 0;
signal h_right_border_start : reg_t := 0;
signal h_line_end : reg_t := 0;
signal v_sync_start : reg_t := 0;
signal v_back_porch_start : reg_t := 0;
signal v_top_border_start : reg_t := 0;
signal v_video_start : reg_t := 0;
signal v_bottom_border_start : reg_t := 0;
signal v_screen_end : reg_t := 0;
signal hsync_s : std_logic := '0';
signal vsync_s : std_logic := '0';
signal hactive_s : std_logic := '0';
signal vactive_s : std_logic := '0';
signal hblank_s : std_logic := '0';
signal vblank_s : std_logic := '0';
subtype count_t is integer range 0 to 2047;
signal x_count : count_t := 0;
signal y_count : count_t := 0;
signal x_s : unsigned(10 downto 0) := (others => '0');
signal y_s : unsigned(10 downto 0) := (others => '0');
--signal extended_reset : std_logic := '1';
alias extended_reset : std_logic is video_i.reset;
begin
-- registers
reg_proc: process (reset, clk)
begin
--if reset = '1' then
case CONFIG is
when PACE_VIDEO_VGA_240x320_60Hz =>
-- P3M, clk=11.136MHz, clk_ena=5.568MHz
h_front_porch_r <= 272-240;
h_sync_r <= 5;
h_back_porch_r <= 22;
h_border_r <= (240-VIDEO_H_SIZE)/2;
v_front_porch_r <= 326-320;
v_sync_r <= 1;
v_back_porch_r <= 5;
v_border_r <= (320-VIDEO_V_SIZE)/2;
when PACE_VIDEO_VGA_320x480_60Hz =>
-- VGA, clk=12.588MHz
--# 320x240 @ 60 Hz, 31.5 kHz hsync, 4:3 aspect ratio
--Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan
h_front_porch_r <= 16;
h_sync_r <= 48;
h_back_porch_r <= 16;
h_border_r <= (320-VIDEO_H_SIZE)/2;
v_front_porch_r <= (5*2);
v_sync_r <= (1*2);
v_back_porch_r <= (16*2);
v_border_r <= (480-VIDEO_V_SIZE)/2;
when PACE_VIDEO_VGA_640x480_60Hz =>
-- VGA, clk=25.175MHz
h_front_porch_r <= 16;
h_sync_r <= 96;
h_back_porch_r <= 48;
h_border_r <= (640-VIDEO_H_SIZE)/2;
v_front_porch_r <= 10;
v_sync_r <= 2;
v_back_porch_r <= 33;
v_border_r <= (480-VIDEO_V_SIZE)/2;
when PACE_VIDEO_VGA_800x600_60Hz =>
-- SVGA, clk=40MHz
h_front_porch_r <= 40;
h_sync_r <= 128;
h_back_porch_r <= 88;
h_border_r <= (800-VIDEO_H_SIZE)/2;
v_front_porch_r <= 1;
v_sync_r <= 4;
v_back_porch_r <= 23;
v_border_r <= (600-VIDEO_V_SIZE)/2;
when PACE_VIDEO_VGA_1024x768_60Hz =>
-- XVGA, clk=65MHz
h_front_porch_r <= 24;
h_sync_r <= 136;
h_back_porch_r <= 160;
h_border_r <= (1024-VIDEO_H_SIZE)/2;
v_front_porch_r <= 3;
v_sync_r <= 6;
v_back_porch_r <= 29;
v_border_r <= (768-VIDEO_V_SIZE)/2;
when PACE_VIDEO_VGA_1366x768_60Hz =>
-- XVGA(NAVICO ROCKY), clk=72MHz
h_front_porch_r <= 88; --64;
h_sync_r <= 44; --112;
h_back_porch_r <= 148; --248;
h_border_r <= (1366-VIDEO_H_SIZE)/2;
v_front_porch_r <= 4; --3;
v_sync_r <= 5; --6;
v_back_porch_r <= 36; --18;
v_border_r <= (768-VIDEO_V_SIZE)/2;
when PACE_VIDEO_VGA_1280x800_60Hz =>
-- Sentinel Mode 36, clk=103.2MHz
h_front_porch_r <= 64;
h_sync_r <= 32;
h_back_porch_r <= 362-32-64;
h_border_r <= (1280-VIDEO_H_SIZE)/2;
v_front_porch_r <= 3;
v_sync_r <= 4;
v_back_porch_r <= 38-4-3;
v_border_r <= (800-VIDEO_V_SIZE)/2;
when PACE_VIDEO_VGA_1280x1024_60Hz =>
-- SXGA, clk=108MHz
h_front_porch_r <= 48;
h_sync_r <= 112;
h_back_porch_r <= 248;
h_border_r <= (1280-VIDEO_H_SIZE)/2;
v_front_porch_r <= 1;
v_sync_r <= 3;
v_back_porch_r <= 38;
v_border_r <= (1024-VIDEO_V_SIZE)/2;
when PACE_VIDEO_VGA_1680x1050_60Hz =>
-- WSXGA+, clk=147.14MHz
h_front_porch_r <= 104;
h_sync_r <= 184;
h_back_porch_r <= 288;
v_front_porch_r <= 1;
v_sync_r <= 3;
v_back_porch_r <= 33;
-- WSXGA+, clk=118MHz
--h_front_porch_r <= 48;
--h_sync_r <= 32;
--h_back_porch_r <= 80;
--v_front_porch_r <= 3;
--v_sync_r <= 6;
--v_back_porch_r <= 21;
h_border_r <= (1680-VIDEO_H_SIZE)/2;
v_border_r <= (1050-VIDEO_V_SIZE)/2;
when PACE_VIDEO_ARCADE_STD_336x240_60Hz =>
-- arcade standard resolution, clk=7.16MHz
h_front_porch_r <= 34;
h_sync_r <= 34;
h_back_porch_r <= 51;
h_border_r <= (336-VIDEO_H_SIZE)/2;
v_front_porch_r <= 3;
v_sync_r <= 3;
v_back_porch_r <= 16;
v_border_r <= (240-VIDEO_V_SIZE)/2;
when PACE_VIDEO_ARCADE_STD_336x240_60Hz_28M64 =>
-- arcade standard resolution, clk=28.64MHz
h_front_porch_r <= 4*34;
h_sync_r <= 4*34;
h_back_porch_r <= 4*51;
h_border_r <= 4*(336-VIDEO_H_SIZE)/2;
v_front_porch_r <= 3;
v_sync_r <= 3;
v_back_porch_r <= 16;
v_border_r <= (240-VIDEO_V_SIZE)/2;
when PACE_VIDEO_CVBS_720x288p_50Hz =>
-- generic composite, clk=13.5MHz
h_front_porch_r <= (8+12);
h_sync_r <= 64;
h_back_porch_r <= (144-64-(8+12));
h_border_r <= (720-VIDEO_H_SIZE)/2;
v_front_porch_r <= 1;
v_sync_r <= 3;
v_back_porch_r <= 20;
v_border_r <= (288-VIDEO_V_SIZE)/2;
when PACE_VIDEO_LCM_320x240_60Hz =>
-- DE1/2, clk=18MHz
h_front_porch_r <= 59;
h_sync_r <= 1;
h_back_porch_r <= 151;
h_border_r <= (320-VIDEO_H_SIZE)*3/2;
v_front_porch_r <= 8;
v_sync_r <= 1;
v_back_porch_r <= 13;
v_border_r <= (240-VIDEO_V_SIZE)/2;
when others =>
null;
end case;
h_video_r <= VIDEO_H_SIZE;
v_video_r <= VIDEO_V_SIZE;
border_rgb_r <= BORDER_RGB;
--end if;
end process reg_proc;
-- register some arithmetic
init_proc: process (reset, clk, clk_ena)
begin
if reset = '1' then
null;
elsif rising_edge(clk) then
h_sync_start <= h_front_porch_r - 1;
h_back_porch_start <= h_sync_start + h_sync_r;
h_left_border_start <= h_back_porch_start + h_back_porch_r;
h_video_start <= h_left_border_start + h_border_r;
h_right_border_start <= h_video_start + h_video_r;
h_line_end <= h_right_border_start + h_border_r;
v_sync_start <= v_front_porch_r - 1;
v_back_porch_start <= v_sync_start + v_sync_r;
v_top_border_start <= v_back_porch_start + v_back_porch_r;
v_video_start <= v_top_border_start + v_border_r;
v_bottom_border_start <= v_video_start + v_video_r;
v_screen_end <= v_bottom_border_start + v_border_r;
end if;
end process init_proc;
reset_proc: process (reset, clk)
variable count_v : integer;
begin
if reset = '1' then
--extended_reset <= '1';
count_v := 7;
elsif rising_edge(clk) then
if count_v = 0 then
--extended_reset <= '0';
else
count_v := count_v - 1;
end if;
end if;
end process reset_proc;
-- video control outputs
timer_proc: process (extended_reset, clk, clk_ena)
begin
if extended_reset = '1' then
hblank_s <= '1';
vblank_s <= '1';
hactive_s <= '0';
vactive_s <= '0';
hsync_s <= not H_SYNC_POL;
x_count <= 0;
y_count <= 0;
elsif rising_edge(clk) and clk_ena = '1' then
if x_count = h_line_end then
hblank_s <= '1';
hactive_s <= '0'; -- for 0 borders
if y_count = v_screen_end then
vblank_s <= '1';
vactive_s <= '0'; -- for 0 borders
y_count <= 0;
else
y_s <= y_s + 1;
if y_count = v_sync_start then
vsync_s <= V_SYNC_POL;
elsif y_count = v_back_porch_start then
vsync_s <= not V_SYNC_POL;
elsif y_count = v_video_start then
vblank_s <= '0'; -- for 0 borders
vactive_s <= '1';
y_s <= (others => '0');
-- check the borders last in case they're 0
elsif y_count = v_top_border_start then
vblank_s <= '0';
elsif y_count = v_bottom_border_start then
vactive_s <= '0';
end if;
y_count <= y_count + 1;
end if;
x_count <= 0;
else
x_s <= x_s + 1;
if x_count = h_sync_start then
hsync_s <= H_SYNC_POL;
elsif x_count = h_back_porch_start then
hsync_s <= not H_SYNC_POL;
elsif x_count = h_video_start then
hblank_s <= '0'; -- for 0 borders
hactive_s <= '1';
x_s <= (others => '0');
-- check the borders last in case they're 0
elsif x_count = h_left_border_start then
hblank_s <= '0';
elsif x_count = h_right_border_start then
hactive_s <= '0';
end if;
x_count <= x_count + 1;
end if;
end if; -- rising_edge(clk) and clk_ena = '1'
end process timer_proc;
-- pass-through for tile/bitmap & sprite controllers
video_ctl_o.clk <= clk;
video_ctl_o.clk_ena <= clk_ena;
-- for video DACs and TFT output
video_o.clk <= clk;
BLK_VIDEO_O : block
constant PIPELINE_DELAY : natural := DELAY+1;
-- won't synthesize correctly under ISE if these are variables
signal hactive_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0');
signal vactive_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0');
begin
video_o_proc: process (extended_reset, clk, clk_ena)
variable hsync_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0');
variable vsync_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0');
--variable hactive_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0');
--variable vactive_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0');
variable hblank_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0');
variable vblank_v_r : std_logic_vector(PIPELINE_DELAY-1 downto 0) := (others => '0');
alias hsync_v : std_logic is hsync_v_r(hsync_v_r'left);
alias vsync_v : std_logic is vsync_v_r(vsync_v_r'left);
alias hactive_v : std_logic is hactive_v_r(hactive_v_r'left);
alias vactive_v : std_logic is vactive_v_r(vactive_v_r'left);
alias hblank_v : std_logic is hblank_v_r(hblank_v_r'left);
alias vblank_v : std_logic is vblank_v_r(vblank_v_r'left);
variable stb_cnt_v : unsigned(3 downto 0); -- up to 16x scaling
begin
if extended_reset = '1' then
hsync_v_r := (others => not H_SYNC_POL);
vsync_v_r := (others => not V_SYNC_POL);
hactive_v_r <= (others => '0');
vactive_v_r <= (others => '0');
hblank_v_r := (others => '0');
vblank_v_r := (others => '0');
stb_cnt_v := (others => '1');
elsif rising_edge(clk) and clk_ena = '1' then
-- register control signals and handle scaling
video_ctl_o.hblank <= not hactive_s after SIM_DELAY; -- used only by the bitmap/tilemap/sprite controllers
video_ctl_o.vblank <= not vactive_s after SIM_DELAY; -- used only by the bitmap/tilemap/sprite controllers
-- handle scaling
video_ctl_o.stb <= stb_cnt_v(H_SCALE-1) after SIM_DELAY;
if hactive_s = '1' and vactive_s = '1' then
stb_cnt_v := stb_cnt_v + 2;
elsif hblank_s = '0' and vblank_s = '0' then
stb_cnt_v := (others => '1');
end if;
video_ctl_o.x <= std_logic_vector(resize(x_s(x_s'left downto H_SCALE-1), video_ctl_o.x'length)) after SIM_DELAY;
video_ctl_o.y <= std_logic_vector(resize(y_s(y_s'left downto V_SCALE-1), video_ctl_o.y'length)) after SIM_DELAY;
-- register video outputs
if hactive_v = '1' and vactive_v = '1' then
-- active video
if x_s(x_s'left downto H_SCALE-1) < (L_CROP + PIPELINE_DELAY) or
x_s(x_s'left downto H_SCALE-1) >= (H_SIZE - R_CROP + PIPELINE_DELAY) then
video_o.rgb <= RGB_BLACK after SIM_DELAY;
else
video_o.rgb <= rgb_i after SIM_DELAY;
end if;
elsif hblank_v = '0' and vblank_v = '0' then
-- border
video_o.rgb <= border_rgb_r after SIM_DELAY;
else
video_o.rgb.r <= (others => '0') after SIM_DELAY;
video_o.rgb.g <= (others => '0') after SIM_DELAY;
video_o.rgb.b <= (others => '0') after SIM_DELAY;
end if;
video_o.hsync <= hsync_v after SIM_DELAY;
video_o.vsync <= vsync_v after SIM_DELAY;
video_o.hblank <= hblank_v after SIM_DELAY;
video_o.vblank <= vblank_v after SIM_DELAY;
-- pipelined signals
hsync_v_r := hsync_v_r(hsync_v_r'left-1 downto 0) & hsync_s;
vsync_v_r := vsync_v_r(vsync_v_r'left-1 downto 0) & vsync_s;
hactive_v_r <= hactive_v_r(hactive_v_r'left-1 downto 0) & hactive_s;
vactive_v_r <= vactive_v_r(vactive_v_r'left-1 downto 0) & vactive_s;
hblank_v_r := hblank_v_r(hblank_v_r'left-1 downto 0) & hblank_s;
vblank_v_r := vblank_v_r(vblank_v_r'left-1 downto 0) & vblank_s;
end if;
end process video_o_proc;
end block BLK_VIDEO_O;
end SYN;

View File

@@ -0,0 +1,229 @@
library IEEE;
use IEEE.std_logic_1164.all;
--use IEEE.numeric_std.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
package video_controller_pkg is
type PACEVideoController_t is
(
PACE_VIDEO_NONE, -- PACE video controller not used
PACE_VIDEO_VGA_240x320_60Hz, -- P3M video
PACE_VIDEO_VGA_320x480_60Hz, -- for 320x200 (12.588MHz)
PACE_VIDEO_VGA_640x480_60Hz, -- generic VGA (25.175MHz)
PACE_VIDEO_VGA_800x600_60Hz, -- generic VGA (40MHz)
PACE_VIDEO_VGA_1024x768_60Hz, -- XVGA (65MHz)
PACE_VIDEO_VGA_1366x768_60Hz, -- (NAVICO ROCKY) (72MHz)
PACE_VIDEO_VGA_1280x800_60Hz, -- Sentinel Mode 36
PACE_VIDEO_VGA_1280x1024_60Hz, -- SXGA (108MHz)
PACE_VIDEO_VGA_1680x1050_60Hz, -- WSXGA+ (147MHz)
PACE_VIDEO_ARCADE_STD_336x240_60Hz, -- arcade std resolution (7.16MHz)
PACE_VIDEO_ARCADE_STD_336x240_60Hz_28M64, -- arcade std resolution (28.64MHz)
PACE_VIDEO_CVBS_720x288p_50Hz, -- generic composite
PACE_VIDEO_LCM_320x240_60Hz -- DE2 LCD
);
type PACEVideoDisplay_t is
(
PACE_DISPLAY_NONE,
PACE_DISPLAY_VGA,
PACE_DISPLAY_CVBS,
PACE_DISPLAY_TFT
);
type RGB_t is record
r : std_logic_vector(9 downto 0);
g : std_logic_vector(9 downto 0);
b : std_logic_vector(9 downto 0);
end record;
type RGB_a is array (natural range <>) of RGB_t;
function NULL_RGB return RGB_t;
constant RGB_BLACK : RGB_t := ((others=>'0'),(others=>'0'),(others=>'0'));
constant RGB_RED : RGB_t := ((others=>'1'),(others=>'0'),(others=>'0'));
constant RGB_GREEN : RGB_t := ((others=>'0'),(others=>'1'),(others=>'0'));
constant RGB_YELLOW : RGB_t := ((others=>'1'),(others=>'1'),(others=>'0'));
constant RGB_BLUE : RGB_t := ((others=>'0'),(others=>'0'),(others=>'1'));
constant RGB_MAGENTA : RGB_t := ((others=>'1'),(others=>'0'),(others=>'1'));
constant RGB_CYAN : RGB_t := ((others=>'0'),(others=>'1'),(others=>'1'));
constant RGB_WHITE : RGB_t := ((others=>'1'),(others=>'1'),(others=>'1'));
type VIDEO_REG_t is record
h_scale : std_logic_vector(2 downto 0);
v_scale : std_logic_vector(2 downto 0);
end record;
type from_VIDEO_t is record
clk : std_logic;
clk_ena : std_logic;
reset : std_logic;
end record;
type to_VIDEO_t is record
clk : std_logic;
rgb : rgb_t;
hsync : std_logic;
vsync : std_logic;
hblank : std_logic;
vblank : std_logic;
de : std_logic;
end record;
type from_VIDEO_CTL_t is record
clk : std_logic;
clk_ena : std_logic;
stb : std_logic;
hblank : std_logic;
vblank : std_logic;
x : std_logic_vector(10 downto 0);
y : std_logic_vector(10 downto 0);
end record;
subtype BITMAP_D_t is std_logic_vector(23 downto 0);
subtype BITMAP_A_t is std_logic_vector(15 downto 0);
type to_BITMAP_CTL_t is record
d : BITMAP_D_t;
end record;
type to_BITMAP_CTL_a is array (natural range <>) of to_BITMAP_CTL_t;
function NULL_TO_BITMAP_CTL return to_BITMAP_CTL_t;
type from_BITMAP_CTL_t is record
a : BITMAP_A_t;
rgb : RGB_t;
set : std_logic;
end record;
type from_BITMAP_CTL_a is array (natural range <>) of from_BITMAP_CTL_t;
subtype TILEMAP_D_t is std_logic_vector(15 downto 0);
subtype TILEMAP_A_t is std_logic_vector(15 downto 0);
subtype TILE_A_t is std_logic_vector(16 downto 0);
subtype TILE_D_t is std_logic_vector(23 downto 0);
subtype ATTR_A_t is std_logic_vector(15 downto 0);
subtype ATTR_D_t is std_logic_vector(15 downto 0);
type to_TILEMAP_CTL_t is record
map_d : TILEMAP_D_t;
tile_d : TILE_D_t;
attr_d : ATTR_D_t;
end record;
type to_TILEMAP_CTL_a is array (natural range <>) of to_TILEMAP_CTL_t;
function NULL_TO_TILEMAP_CTL return to_TILEMAP_CTL_t;
type from_TILEMAP_CTL_t is record
map_a : TILEMAP_A_t;
tile_a : TILE_A_t;
attr_a : ATTR_A_t;
rgb : RGB_t;
set : std_logic;
end record;
type from_TILEMAP_CTL_a is array (natural range <>) of from_TILEMAP_CTL_t;
subtype PAL_ENTRY_t is std_logic_vector(15 downto 0);
type PAL_A_t is array (natural range <>) of PAL_ENTRY_t;
subtype BYTE_t is std_logic_vector(7 downto 0);
type BYTE_A_t is array (natural range <>) of BYTE_t;
subtype WORD_t is std_logic_vector(15 downto 0);
type WORD_A_t is array (natural range <>) of WORD_t;
type to_GRAPHICS_t is record
pal : PAL_A_t(0 to 15);
-- for various uses
bit8 : BYTE_A_t(0 to 7);
bit16 : WORD_A_t(0 to 3);
-- 'native' graphics stream
hsync : std_logic;
vsync : std_logic;
rgb : RGB_t;
end record;
function NULL_TO_GRAPHICS return to_GRAPHICS_t;
type from_GRAPHICS_t is record
y : std_logic_vector(10 downto 0);
hblank : std_logic;
vblank : std_logic;
end record;
component pace_video_controller is
generic
(
CONFIG : PACEVideoController_t := PACE_VIDEO_NONE;
DELAY : integer := 1;
H_SIZE : integer;
V_SIZE : integer;
--H_SCALE : integer;
--V_SCALE : integer;
BORDER_RGB : RGB_t := RGB_BLACK
);
port
(
-- clocking etc
video_i : in from_VIDEO_t;
-- register interface
reg_i : in VIDEO_REG_t;
-- video input data
rgb_i : in RGB_t;
-- control signals (out)
video_ctl_o : from_VIDEO_CTL_t;
-- Outputs to video
video_o : out to_VIDEO_t
);
end component pace_video_controller;
component tilemapCtl is
generic
(
DELAY : integer
);
port
(
reset : in std_logic;
-- video control signals
video_ctl : in from_VIDEO_CTL_t;
-- tilemap controller signals
ctl_i : in to_TILEMAP_CTL_t;
ctl_o : out from_TILEMAP_CTL_t;
graphics_i : in to_GRAPHICS_t
);
end component tilemapCtl;
component bitmapCtl is
generic
(
DELAY : integer
);
port
(
reset : in std_logic;
-- video control signals
video_ctl : in from_VIDEO_CTL_t;
-- bitmap controller signals
ctl_i : in to_BITMAP_CTL_t;
ctl_o : out from_BITMAP_CTL_t;
graphics_i : in to_GRAPHICS_t
);
end component bitmapCtl;
end package video_controller_pkg;

View File

@@ -0,0 +1,29 @@
library work;
--use work.pace_pkg.all;
package body video_controller_pkg is
function NULL_RGB return RGB_t is
begin
return (others => (others => '0'));
end NULL_RGB;
function NULL_TO_BITMAP_CTL return to_BITMAP_CTL_t is
begin
return (others => (others => '0'));
end NULL_TO_BITMAP_CTL;
function NULL_TO_TILEMAP_CTL return to_TILEMAP_CTL_t is
begin
return ((others => '0'), (others => '0'), (others => '0'));
end NULL_TO_TILEMAP_CTL;
function NULL_TO_GRAPHICS return to_GRAPHICS_t is
begin
return ((others => (others => '0')),
(others => (others => '0')),
(others => (others => '0')),
'0', '0', NULL_RGB);
end NULL_TO_GRAPHICS;
end package body video_controller_pkg;

View File

@@ -0,0 +1,66 @@
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.numeric_std.all;
library work;
use work.pace_pkg.all;
use work.video_controller_pkg.all;
use work.sprite_pkg.all;
use work.platform_pkg.all;
entity pace_video_mixer is
port
(
--bitmap_rgb : in RGB_t;
--bitmap_set : in std_logic;
bitmap_ctl_o : in from_BITMAP_CTL_a(1 to PACE_VIDEO_NUM_BITMAPS);
tilemap_ctl_o : in from_TILEMAP_CTL_a(1 to PACE_VIDEO_NUM_TILEMAPS);
sprite_rgb : in RGB_t;
sprite_set : in std_logic;
sprite_pri : in std_logic;
video_ctl_i : in from_VIDEO_CTL_t;
graphics_i : in to_GRAPHICS_t;
rgb_o : out RGB_t
);
end entity pace_video_mixer;
architecture SYN of pace_video_mixer is
signal bg_rgb : RGB_t;
begin
GEN_BITMAPS :
if PACE_VIDEO_NUM_BITMAPS = 1 generate
bg_rgb <= bitmap_ctl_o(1).rgb;
elsif PACE_VIDEO_NUM_BITMAPS = 2 generate
bg_rgb <= bitmap_ctl_o(1).rgb when bitmap_ctl_o(1).set = '1' else
bitmap_ctl_o(2).rgb;
elsif PACE_VIDEO_NUM_BITMAPS = 3 generate
bg_rgb <= bitmap_ctl_o(1).rgb when bitmap_ctl_o(1).set = '1' else
bitmap_ctl_o(2).rgb when bitmap_ctl_o(2).set = '1' else
bitmap_ctl_o(3).rgb when bitmap_ctl_o(3).set = '1' else
(others => (others => '0'));
else generate
bg_rgb <= (others => (others => '0'));
end generate GEN_BITMAPS;
GEN_TILEMAPS :
if PACE_VIDEO_NUM_TILEMAPS = 1 generate
rgb_o <= sprite_rgb when sprite_set = '1' and sprite_pri = '1' else
tilemap_ctl_o(1).rgb when tilemap_ctl_o(1).set = '1' else
sprite_rgb when sprite_set = '1' else
bg_rgb;
elsif PACE_VIDEO_NUM_TILEMAPS = 2 generate
rgb_o <= sprite_rgb when sprite_set = '1' and sprite_pri = '1' else
tilemap_ctl_o(1).rgb when tilemap_ctl_o(1).set = '1' else
tilemap_ctl_o(2).rgb when tilemap_ctl_o(2).set = '1' else
sprite_rgb when sprite_set = '1' else
bg_rgb;
else generate
rgb_o <= sprite_rgb when sprite_set = '1' and sprite_pri = '1' else
sprite_rgb when sprite_set = '1' else
bg_rgb;
end generate GEN_TILEMAPS;
end architecture SYN;