removes uncompressed test results as deflated version is now being used
This commit is contained in:
parent
66ab2363d8
commit
ef3d605528
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1 @@
|
||||
/target
|
||||
.idea
|
||||
|
||||
5
.idea/.gitignore
generated
vendored
5
.idea/.gitignore
generated
vendored
@ -1,5 +0,0 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
8
.idea/modules.xml
generated
8
.idea/modules.xml
generated
@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/trevors_chip8_toy.iml" filepath="$PROJECT_DIR$/.idea/trevors_chip8_toy.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
520
.idea/workspace.xml
generated
Normal file
520
.idea/workspace.xml
generated
Normal file
@ -0,0 +1,520 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AutoImportSettings">
|
||||
<option name="autoReloadType" value="ALL" />
|
||||
</component>
|
||||
<component name="CargoProjects">
|
||||
<cargoProject FILE="$PROJECT_DIR$/Cargo.toml" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="8b5adad6-6758-4324-bcad-4fdc11e35fe6" name="Changes" comment="CLEANUP: cleans up dependencies to use workspace version CLEANUP: standardizes on pretty_env_logger NEWBIN: Adds gemmarat to use Ratatui as an interface CLEANUP: removes debugging display from computer.rs ENHANCEMENT: Constants for locations of test roms built from environment BUGFIX: SoundTimer was using i32 internally when it needs to be u8 CLEANUP: removes commented code used during diagnostics">
|
||||
<change beforePath="$PROJECT_DIR$/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/.gitignore" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/modules.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/vcs.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Cargo.lock" beforeDir="false" afterPath="$PROJECT_DIR$/Cargo.lock" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/Cargo.toml" beforeDir="false" afterPath="$PROJECT_DIR$/Cargo.toml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/gemma/Cargo.toml" beforeDir="false" afterPath="$PROJECT_DIR$/gemma/Cargo.toml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/gemma/tests/computer_tests.rs" beforeDir="false" afterPath="$PROJECT_DIR$/gemma/tests/computer_tests.rs" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/gemma/tests/state_tests.rs" beforeDir="false" afterPath="$PROJECT_DIR$/gemma/tests/state_tests.rs" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/gemma/tests/test_utils.rs" beforeDir="false" afterPath="$PROJECT_DIR$/gemma/tests/test_utils.rs" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/gemma/tests/unit_tests.rs" beforeDir="false" afterPath="$PROJECT_DIR$/gemma/tests/unit_tests.rs" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/gemmarat/src/bin/gemmarat.rs" beforeDir="false" afterPath="$PROJECT_DIR$/gemmarat/src/bin/gemmarat.rs" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/gemma_disassembler_manual_document.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/gemma_integration_corax_plus.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/gemma_integration_flags.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/gemma_integration_ibm_rom_output.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/gemma_integration_level_1_test.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/gemma_integration_rps_stage1.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/gemma_integration_rps_stage2.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/test_keypad_to_string.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/test_manager_status.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/test_multi_sprite.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/test_reset_clears_video.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/test_scroll_down_10_hd.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/test_scroll_down_1_hd.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/test_scroll_left_4.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/test_scroll_left_4_hd.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/test_scroll_right_4.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/test_scroll_right_4_hd.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/test_video_highdef.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/test_video_scroll_down_1.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/test_video_scroll_down_10.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/test_video_scroll_up_test_hd.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/test_video_scroll_up_test_sd.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/test_video_write_checkerboard.asc" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/test/test_video_zero.asc" beforeDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="FileTemplateManagerImpl">
|
||||
<option name="RECENT_TEMPLATES">
|
||||
<list>
|
||||
<option value="Rust File" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="MacroExpansionManager">
|
||||
<option name="directoryName" value="w8ntkzgb" />
|
||||
</component>
|
||||
<component name="ProjectColorInfo">{
|
||||
"associatedIndex": 8
|
||||
}</component>
|
||||
<component name="ProjectId" id="2oOJId1CDAIspnkZVvQGeRPAufy" />
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent">{
|
||||
"keyToString": {
|
||||
"Cargo.Build `Run gemmaimgui default roms`.executor": "Run",
|
||||
"Cargo.Build `Run gemmatelnetd`.executor": "Run",
|
||||
"Cargo.Build `Run tct`.executor": "Run",
|
||||
"Cargo.Build `Test byte_to_bools_valid`.executor": "Run",
|
||||
"Cargo.Build `Test join_bytes`.executor": "Run",
|
||||
"Cargo.Build `Test read_bits_from_instruction`.executor": "Run",
|
||||
"Cargo.Build `Test registers_equality`.executor": "Run",
|
||||
"Cargo.Build `Test round_trip`.executor": "Run",
|
||||
"Cargo.Build `Test start`.executor": "Run",
|
||||
"Cargo.Build `Test state_tests`.executor": "Run",
|
||||
"Cargo.Build `Test test_serialization_round_trip`.executor": "Run",
|
||||
"Cargo.Build `debug testcompression`.executor": "Run",
|
||||
"Cargo.Run ch8asm.executor": "Run",
|
||||
"Cargo.Run gemmaegui.executor": "Run",
|
||||
"Cargo.Run gemmaimgui default roms.executor": "Debug",
|
||||
"Cargo.Run gemmaimgui.executor": "Debug",
|
||||
"Cargo.Run gemmatelnetd.executor": "Debug",
|
||||
"Cargo.Run keyboard.executor": "Run",
|
||||
"Cargo.Run tct.executor": "Run",
|
||||
"Cargo.Run testcompression.executor": "Run",
|
||||
"Cargo.Test assmber_tests.executor": "Run",
|
||||
"Cargo.Test bools_to_byte.executor": "Debug",
|
||||
"Cargo.Test byte_to_bools_valid.executor": "Run",
|
||||
"Cargo.Test computer_001_system_zero_state.executor": "Run",
|
||||
"Cargo.Test computer_tests.executor": "Run",
|
||||
"Cargo.Test default_test.executor": "Run",
|
||||
"Cargo.Test join_bytes.executor": "Run",
|
||||
"Cargo.Test join_bytes_swap_endian.executor": "Run",
|
||||
"Cargo.Test load_rom_allows_starting.executor": "Run",
|
||||
"Cargo.Test quirks_mode_test.executor": "Run",
|
||||
"Cargo.Test read_address_from_instruction.executor": "Run",
|
||||
"Cargo.Test read_bits_from_instruction.executor": "Run",
|
||||
"Cargo.Test read_x_from_instruction.executor": "Run",
|
||||
"Cargo.Test read_y_from_instruction.executor": "Run",
|
||||
"Cargo.Test registers_equality.executor": "Run",
|
||||
"Cargo.Test reset_clears_run_state.executor": "Run",
|
||||
"Cargo.Test reset_clears_video.executor": "Run",
|
||||
"Cargo.Test round_trip.executor": "Run",
|
||||
"Cargo.Test smoke.executor": "Run",
|
||||
"Cargo.Test split_bytes.executor": "Run",
|
||||
"Cargo.Test split_bytes_swap_endian.executor": "Run",
|
||||
"Cargo.Test start.executor": "Run",
|
||||
"Cargo.Test state_tests.executor": "Run",
|
||||
"Cargo.Test status_of_manager.executor": "Run",
|
||||
"Cargo.Test swap_endian.executor": "Run",
|
||||
"Cargo.Test system_memory_load_program.executor": "Run",
|
||||
"Cargo.Test test_serialization_round_trip.executor": "Run",
|
||||
"Cargo.Test util_tests.executor": "Run",
|
||||
"Cargo.debug testcompression.executor": "Debug",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"RunOnceActivity.rust.reset.selective.auto.import": "true",
|
||||
"git-widget-placeholder": "add__telnet__interface",
|
||||
"last_opened_file_path": "/home/tmerritt/Projects/trevors_chip8_toy",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
"nodejs_package_manager_path": "npm",
|
||||
"org.rust.cargo.project.model.PROJECT_DISCOVERY": "true",
|
||||
"org.rust.cargo.project.model.impl.CargoExternalSystemProjectAware.subscribe.first.balloon": "",
|
||||
"settings.editor.selected.configurable": "inlay.hints"
|
||||
}
|
||||
}</component>
|
||||
<component name="RecentsManager">
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="$PROJECT_DIR$/gemmatelnet" />
|
||||
<recent name="$PROJECT_DIR$/gemmaimgui" />
|
||||
</key>
|
||||
<key name="MoveFile.RECENT_KEYS">
|
||||
<recent name="$PROJECT_DIR$/gemmarat/src/bin" />
|
||||
<recent name="$PROJECT_DIR$/gemma/src" />
|
||||
<recent name="$PROJECT_DIR$/gemma/tests/unit_tests" />
|
||||
<recent name="$PROJECT_DIR$/gemma/tests" />
|
||||
<recent name="$PROJECT_DIR$/gemma/src/bin" />
|
||||
</key>
|
||||
</component>
|
||||
<component name="RunManager" selected="Cargo.Test state_tests">
|
||||
<configuration name="Run gemmaimgui default roms" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
||||
<option name="command" value="run --package gemmaimgui --bin gemmaimgui --" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||
<envs />
|
||||
<option name="emulateTerminal" value="true" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<option name="isRedirectInput" value="false" />
|
||||
<option name="redirectInputPath" value="" />
|
||||
<method v="2">
|
||||
<option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="Run gemmaimgui default roms" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
||||
<option name="command" value="run --package gemmaimgui --bin gemmaimgui --" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||
<envs />
|
||||
<option name="emulateTerminal" value="true" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<option name="isRedirectInput" value="false" />
|
||||
<option name="redirectInputPath" value="" />
|
||||
<method v="2">
|
||||
<option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="Run gemmaimgui default roms" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
||||
<option name="command" value="run --package gemmaimgui --bin gemmaimgui --" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||
<envs />
|
||||
<option name="emulateTerminal" value="true" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<option name="isRedirectInput" value="false" />
|
||||
<option name="redirectInputPath" value="" />
|
||||
<method v="2">
|
||||
<option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="Run testcompression" type="CargoCommandRunConfiguration" factoryName="Cargo Command" temporary="true">
|
||||
<option name="command" value="run --package gemma --bin testcompression" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||
<envs />
|
||||
<option name="emulateTerminal" value="true" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<option name="isRedirectInput" value="false" />
|
||||
<option name="redirectInputPath" value="" />
|
||||
<method v="2">
|
||||
<option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="Test load_rom_allows_starting" type="CargoCommandRunConfiguration" factoryName="Cargo Command" temporary="true">
|
||||
<option name="command" value="test --package gemma --test computer_tests load_rom_allows_starting -- --exact" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||
<envs />
|
||||
<option name="emulateTerminal" value="true" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<option name="isRedirectInput" value="false" />
|
||||
<option name="redirectInputPath" value="" />
|
||||
<method v="2">
|
||||
<option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="Test load_rom_allows_starting" type="CargoCommandRunConfiguration" factoryName="Cargo Command" temporary="true">
|
||||
<option name="command" value="test --package gemma --test computer_tests load_rom_allows_starting -- --exact" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||
<envs />
|
||||
<option name="emulateTerminal" value="true" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<option name="isRedirectInput" value="false" />
|
||||
<option name="redirectInputPath" value="" />
|
||||
<method v="2">
|
||||
<option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="Test round_trip" type="CargoCommandRunConfiguration" factoryName="Cargo Command" temporary="true">
|
||||
<option name="command" value="test --package gemma --test test_compression_tests round_trip -- --exact" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||
<envs />
|
||||
<option name="emulateTerminal" value="true" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<option name="isRedirectInput" value="false" />
|
||||
<option name="redirectInputPath" value="" />
|
||||
<method v="2">
|
||||
<option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="Test round_trip" type="CargoCommandRunConfiguration" factoryName="Cargo Command" temporary="true">
|
||||
<option name="command" value="test --package gemma --test test_compression_tests round_trip -- --exact" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||
<envs />
|
||||
<option name="emulateTerminal" value="true" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<option name="isRedirectInput" value="false" />
|
||||
<option name="redirectInputPath" value="" />
|
||||
<method v="2">
|
||||
<option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="Test state_tests" type="CargoCommandRunConfiguration" factoryName="Cargo Command" temporary="true">
|
||||
<option name="command" value="test --package gemma --test state_tests" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||
<envs />
|
||||
<option name="emulateTerminal" value="true" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<option name="isRedirectInput" value="false" />
|
||||
<option name="redirectInputPath" value="" />
|
||||
<method v="2">
|
||||
<option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="Test status_of_manager" type="CargoCommandRunConfiguration" factoryName="Cargo Command" temporary="true">
|
||||
<option name="command" value="test --package gemma --test unit_tests status_of_manager -- --exact" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||
<envs />
|
||||
<option name="emulateTerminal" value="true" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<option name="isRedirectInput" value="false" />
|
||||
<option name="redirectInputPath" value="" />
|
||||
<method v="2">
|
||||
<option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="Test status_of_manager" type="CargoCommandRunConfiguration" factoryName="Cargo Command" temporary="true">
|
||||
<option name="command" value="test --package gemma --test unit_tests status_of_manager -- --exact" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||
<envs />
|
||||
<option name="emulateTerminal" value="true" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<option name="isRedirectInput" value="false" />
|
||||
<option name="redirectInputPath" value="" />
|
||||
<method v="2">
|
||||
<option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="Test system_memory_load_program" type="CargoCommandRunConfiguration" factoryName="Cargo Command" temporary="true">
|
||||
<option name="command" value="test --package gemma --test unit_tests system_memory_load_program -- --exact" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||
<envs />
|
||||
<option name="emulateTerminal" value="true" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<option name="isRedirectInput" value="false" />
|
||||
<option name="redirectInputPath" value="" />
|
||||
<method v="2">
|
||||
<option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="Test system_memory_load_program" type="CargoCommandRunConfiguration" factoryName="Cargo Command" temporary="true">
|
||||
<option name="command" value="test --package gemma --test unit_tests system_memory_load_program -- --exact" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||
<envs />
|
||||
<option name="emulateTerminal" value="true" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<option name="isRedirectInput" value="false" />
|
||||
<option name="redirectInputPath" value="" />
|
||||
<method v="2">
|
||||
<option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="debug testcompression" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
||||
<option name="command" value="run --package gemma --bin testcompression -- decompress-file $PROJECT_DIR$/resources/test/state/smoke_002_round_trip_serialize_deserialize_compressed.tflt" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||
<envs />
|
||||
<option name="emulateTerminal" value="true" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<option name="isRedirectInput" value="false" />
|
||||
<option name="redirectInputPath" value="" />
|
||||
<method v="2">
|
||||
<option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration name="debug testcompression" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
||||
<option name="command" value="run --package gemma --bin testcompression -- decompress-file $PROJECT_DIR$/resources/test/state/smoke_002_round_trip_serialize_deserialize_compressed.tflt" />
|
||||
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||
<envs />
|
||||
<option name="emulateTerminal" value="true" />
|
||||
<option name="channel" value="DEFAULT" />
|
||||
<option name="requiredFeatures" value="true" />
|
||||
<option name="allFeatures" value="false" />
|
||||
<option name="withSudo" value="false" />
|
||||
<option name="buildTarget" value="REMOTE" />
|
||||
<option name="backtrace" value="SHORT" />
|
||||
<option name="isRedirectInput" value="false" />
|
||||
<option name="redirectInputPath" value="" />
|
||||
<method v="2">
|
||||
<option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<list>
|
||||
<item itemvalue="Cargo.Run gemmaimgui default roms" />
|
||||
<item itemvalue="Cargo.debug testcompression" />
|
||||
<item itemvalue="Cargo.Test state_tests" />
|
||||
<item itemvalue="Cargo.Test load_rom_allows_starting" />
|
||||
<item itemvalue="Cargo.Test round_trip" />
|
||||
<item itemvalue="Cargo.Test status_of_manager" />
|
||||
<item itemvalue="Cargo.Test system_memory_load_program" />
|
||||
</list>
|
||||
<recent_temporary>
|
||||
<list>
|
||||
<item itemvalue="Cargo.Test state_tests" />
|
||||
<item itemvalue="Cargo.Test load_rom_allows_starting" />
|
||||
<item itemvalue="Cargo.Test round_trip" />
|
||||
<item itemvalue="Cargo.Test status_of_manager" />
|
||||
<item itemvalue="Cargo.Test system_memory_load_program" />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
<component name="RustProjectSettings">
|
||||
<option name="toolchainHomeDirectory" value="$USER_HOME$/.cargo/bin" />
|
||||
</component>
|
||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="8b5adad6-6758-4324-bcad-4fdc11e35fe6" name="Changes" comment="" />
|
||||
<created>1730734609486</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1730734609486</updated>
|
||||
<workItem from="1730734610557" duration="232000" />
|
||||
<workItem from="1730898677853" duration="3080000" />
|
||||
<workItem from="1730916772198" duration="3456000" />
|
||||
<workItem from="1730994368989" duration="7000" />
|
||||
<workItem from="1731001862091" duration="2026000" />
|
||||
<workItem from="1731007664228" duration="5718000" />
|
||||
<workItem from="1731083920810" duration="3820000" />
|
||||
<workItem from="1732894051052" duration="1028000" />
|
||||
<workItem from="1732902486469" duration="6000" />
|
||||
<workItem from="1733326861558" duration="653000" />
|
||||
<workItem from="1741629265240" duration="2162000" />
|
||||
<workItem from="1742569809065" duration="762000" />
|
||||
<workItem from="1742570597558" duration="794000" />
|
||||
<workItem from="1747246379430" duration="8729000" />
|
||||
<workItem from="1747837171143" duration="1151000" />
|
||||
<workItem from="1747850558953" duration="5700000" />
|
||||
<workItem from="1747933016164" duration="7553000" />
|
||||
<workItem from="1748009797240" duration="70000" />
|
||||
<workItem from="1748019256320" duration="2989000" />
|
||||
<workItem from="1748259109807" duration="13567000" />
|
||||
<workItem from="1748284479016" duration="3483000" />
|
||||
<workItem from="1748346419689" duration="8043000" />
|
||||
<workItem from="1748355230865" duration="313000" />
|
||||
<workItem from="1748357652780" duration="8865000" />
|
||||
<workItem from="1748431993830" duration="10532000" />
|
||||
<workItem from="1748446884797" duration="12753000" />
|
||||
<workItem from="1748544537133" duration="3555000" />
|
||||
<workItem from="1748612927269" duration="25000" />
|
||||
<workItem from="1748613054404" duration="738000" />
|
||||
<workItem from="1748613802419" duration="71000" />
|
||||
<workItem from="1748613883436" duration="27000" />
|
||||
<workItem from="1748613912658" duration="198000" />
|
||||
<workItem from="1748614113271" duration="2000" />
|
||||
<workItem from="1748614129649" duration="56000" />
|
||||
<workItem from="1748616677715" duration="320000" />
|
||||
</task>
|
||||
<task id="LOCAL-00001" summary="CLEANUP: cleans up dependencies to use workspace version CLEANUP: standardizes on pretty_env_logger NEWBIN: Adds gemmarat to use Ratatui as an interface CLEANUP: removes debugging display from computer.rs ENHANCEMENT: Constants for locations of test roms built from environment BUGFIX: SoundTimer was using i32 internally when it needs to be u8 CLEANUP: removes commented code used during diagnostics">
|
||||
<option name="closed" value="true" />
|
||||
<created>1748539601919</created>
|
||||
<option name="number" value="00001" />
|
||||
<option name="presentableId" value="LOCAL-00001" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1748539601919</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00002" summary="CLEANUP: cleans up dependencies to use workspace version CLEANUP: standardizes on pretty_env_logger NEWBIN: Adds gemmarat to use Ratatui as an interface CLEANUP: removes debugging display from computer.rs ENHANCEMENT: Constants for locations of test roms built from environment BUGFIX: SoundTimer was using i32 internally when it needs to be u8 CLEANUP: removes commented code used during diagnostics">
|
||||
<option name="closed" value="true" />
|
||||
<created>1748539623332</created>
|
||||
<option name="number" value="00002" />
|
||||
<option name="presentableId" value="LOCAL-00002" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1748539623332</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00003" summary="CLEANUP: cleans up dependencies to use workspace version CLEANUP: standardizes on pretty_env_logger NEWBIN: Adds gemmarat to use Ratatui as an interface CLEANUP: removes debugging display from computer.rs ENHANCEMENT: Constants for locations of test roms built from environment BUGFIX: SoundTimer was using i32 internally when it needs to be u8 CLEANUP: removes commented code used during diagnostics">
|
||||
<option name="closed" value="true" />
|
||||
<created>1748539630427</created>
|
||||
<option name="number" value="00003" />
|
||||
<option name="presentableId" value="LOCAL-00003" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1748539630427</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="4" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="3" />
|
||||
</component>
|
||||
<component name="UnknownFeatures">
|
||||
<option featureType="com.intellij.fileTypeFactory" implementationName="*.asc" />
|
||||
</component>
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
<option name="TAB_STATES">
|
||||
<map>
|
||||
<entry key="MAIN">
|
||||
<value>
|
||||
<State />
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</component>
|
||||
<component name="VcsManagerConfiguration">
|
||||
<MESSAGE value="CLEANUP: cleans up dependencies to use workspace version CLEANUP: standardizes on pretty_env_logger NEWBIN: Adds gemmarat to use Ratatui as an interface CLEANUP: removes debugging display from computer.rs ENHANCEMENT: Constants for locations of test roms built from environment BUGFIX: SoundTimer was using i32 internally when it needs to be u8 CLEANUP: removes commented code used during diagnostics" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="CLEANUP: cleans up dependencies to use workspace version CLEANUP: standardizes on pretty_env_logger NEWBIN: Adds gemmarat to use Ratatui as an interface CLEANUP: removes debugging display from computer.rs ENHANCEMENT: Constants for locations of test roms built from environment BUGFIX: SoundTimer was using i32 internally when it needs to be u8 CLEANUP: removes commented code used during diagnostics" />
|
||||
</component>
|
||||
</project>
|
||||
25
Cargo.lock
generated
25
Cargo.lock
generated
@ -796,9 +796,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.2.24"
|
||||
version = "1.2.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "16595d3be041c03b09d08d0858631facccee9221e579704070e6e9e4915d3bc7"
|
||||
checksum = "d0fc897dc1e865cc67c0e05a836d9d3f1df3cbe442aa4a9473b18e12624a4951"
|
||||
dependencies = [
|
||||
"jobserver",
|
||||
"libc",
|
||||
@ -860,9 +860,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "4.5.38"
|
||||
version = "4.5.39"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ed93b9805f8ba930df42c2590f05453d5ec36cbb85d018868a5b24d31f6ac000"
|
||||
checksum = "fd60e63e9be68e5fb56422e397cf9baddded06dae1d2e523401542383bc72a9f"
|
||||
dependencies = [
|
||||
"clap_builder",
|
||||
"clap_derive",
|
||||
@ -870,9 +870,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "clap_builder"
|
||||
version = "4.5.38"
|
||||
version = "4.5.39"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "379026ff283facf611b0ea629334361c4211d1b12ee01024eec1591133b04120"
|
||||
checksum = "89cc6392a1f72bbeb820d71f32108f61fdaf18bc526e1d23954168a67759ef51"
|
||||
dependencies = [
|
||||
"anstream",
|
||||
"anstyle",
|
||||
@ -2001,6 +2001,7 @@ dependencies = [
|
||||
"rand 0.9.1",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tempfile",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -2919,9 +2920,9 @@ checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5"
|
||||
|
||||
[[package]]
|
||||
name = "lock_api"
|
||||
version = "0.4.12"
|
||||
version = "0.4.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
|
||||
checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"scopeguard",
|
||||
@ -3767,9 +3768,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
|
||||
|
||||
[[package]]
|
||||
name = "parking_lot"
|
||||
version = "0.12.3"
|
||||
version = "0.12.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
|
||||
checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13"
|
||||
dependencies = [
|
||||
"lock_api",
|
||||
"parking_lot_core",
|
||||
@ -3777,9 +3778,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "parking_lot_core"
|
||||
version = "0.9.10"
|
||||
version = "0.9.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
|
||||
checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
|
||||
@ -5,13 +5,13 @@ members = [
|
||||
"gemmaimgui",
|
||||
"gemmatelnet",
|
||||
"gemmautil",
|
||||
"gemmarat"
|
||||
"gemmarat",
|
||||
]
|
||||
resolver = "2"
|
||||
|
||||
[workspace.dependencies]
|
||||
pretty_env_logger = { version = "0.5" }
|
||||
log = { version = "0.4" }
|
||||
log = { version = "0.4" }
|
||||
rand = { version = "0.9.0-alpha.2" }
|
||||
chrono = { version = "0.4" }
|
||||
dimensioned = { version = "0.8" }
|
||||
@ -29,3 +29,6 @@ eframe = { version = "0.29" }
|
||||
# EXPERIMENT
|
||||
|
||||
# Personal
|
||||
|
||||
# Testing
|
||||
tempfile = "3.20"
|
||||
|
||||
@ -13,5 +13,6 @@ serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
flate2.workspace = true
|
||||
clap.workspace = true
|
||||
hex.workspace = true
|
||||
log.workspace = true
|
||||
hex.workspace = true
|
||||
log.workspace = true
|
||||
tempfile.workspace = true
|
||||
|
||||
@ -1,19 +1,18 @@
|
||||
mod test_utils;
|
||||
use std::path::Path;
|
||||
use crate::test_utils::load_compressed_result;
|
||||
use crate::test_utils::load_rom;
|
||||
use gemma::chip8::computer::Chip8Computer;
|
||||
use gemma::chip8::computer_manager::Chip8ComputerManager;
|
||||
use gemma::chip8::quirk_modes::QuirkMode;
|
||||
use gemma::chip8::quirk_modes::QuirkMode::{Chip8, SChipModern, XOChip};
|
||||
use gemma::chip8::registers::Chip8Registers;
|
||||
use gemma::constants::{CHIP8_VIDEO_MEMORY, TEST_ROM_ROOT};
|
||||
use crate::test_utils::{load_compressed_result, load_result, load_rom};
|
||||
use std::path::Path;
|
||||
|
||||
#[test]
|
||||
fn smoke() {
|
||||
assert!(true)
|
||||
}
|
||||
|
||||
|
||||
#[test]
|
||||
fn reset_clears_video() {
|
||||
let mut x = Chip8Computer::new();
|
||||
@ -35,7 +34,7 @@ fn reset_clears_video() {
|
||||
#[test]
|
||||
fn level1_test() {
|
||||
let mut x = Chip8Computer::new();
|
||||
let level_1_rom = load_rom("1-chip8-logo.ch8");
|
||||
let level_1_rom = load_rom("1-chip8-logo");
|
||||
x.load_bytes_to_memory(0x200, &level_1_rom);
|
||||
|
||||
// run for 0x40 cycles
|
||||
@ -44,7 +43,7 @@ fn level1_test() {
|
||||
}
|
||||
assert_eq!(
|
||||
x.dump_video_to_string(),
|
||||
load_result("gemma_integration_level_1_test.asc")
|
||||
load_compressed_result("gemma_integration_level_1_test")
|
||||
);
|
||||
}
|
||||
|
||||
@ -53,8 +52,7 @@ fn level2_test() {
|
||||
let mut x = Chip8Computer::new();
|
||||
// Load the IBM rom and run it.
|
||||
// it takes 39 cycles to get to the end so lets run it 40.
|
||||
let test_rom_to_run = load_rom("2-ibm-logo.ch8");
|
||||
x.load_bytes_to_memory(0x200, &test_rom_to_run);
|
||||
x.load_bytes_to_memory(0x200, &load_rom("2-ibm-logo"));
|
||||
for _ in 0..40 {
|
||||
x.step_system();
|
||||
}
|
||||
@ -63,7 +61,7 @@ fn level2_test() {
|
||||
|
||||
assert_eq!(
|
||||
x.dump_video_to_string(),
|
||||
load_result("gemma_integration_ibm_rom_output.asc")
|
||||
load_compressed_result("gemma_integration_ibm_rom_output")
|
||||
);
|
||||
}
|
||||
|
||||
@ -71,14 +69,14 @@ fn level2_test() {
|
||||
fn level3_test() {
|
||||
let mut x = Chip8Computer::new();
|
||||
|
||||
x.load_bytes_to_memory(0x200, &load_rom("3-corax+.ch8"));
|
||||
x.load_bytes_to_memory(0x200, &load_rom("3-corax+"));
|
||||
for _ in 0..0x180 {
|
||||
x.step_system();
|
||||
}
|
||||
|
||||
assert_eq!(
|
||||
x.dump_video_to_string(),
|
||||
load_result("gemma_integration_corax_plus.asc")
|
||||
load_compressed_result("gemma_integration_corax_plus")
|
||||
);
|
||||
}
|
||||
|
||||
@ -86,21 +84,21 @@ fn level3_test() {
|
||||
fn level3_compressed_test() {
|
||||
let mut x = Chip8Computer::new();
|
||||
|
||||
x.load_bytes_to_memory(0x200, &load_rom("3-corax+.ch8"));
|
||||
x.load_bytes_to_memory(0x200, &load_rom("3-corax+"));
|
||||
for _ in 0..0x180 {
|
||||
x.step_system();
|
||||
}
|
||||
|
||||
assert_eq!(
|
||||
x.dump_video_to_string(),
|
||||
load_compressed_result("gemma_integration.corax_plus.deflated")
|
||||
load_compressed_result("gemma_integration.corax_plus")
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn rps_test() {
|
||||
let mut x = Chip8Computer::new();
|
||||
x.load_bytes_to_memory(0x200, &load_rom("RPS.ch8"));
|
||||
x.load_bytes_to_memory(0x200, &load_rom("RPS"));
|
||||
for _ in 0..0xF0 {
|
||||
x.step_system();
|
||||
}
|
||||
@ -122,14 +120,14 @@ fn rps_test() {
|
||||
fn level4_test() {
|
||||
// flags
|
||||
let mut x = Chip8Computer::new();
|
||||
x.load_bytes_to_memory(0x200, &load_rom("4-flags.ch8"));
|
||||
x.load_bytes_to_memory(0x200, &load_rom("4-flags"));
|
||||
for _ in 0..0x400 {
|
||||
x.step_system();
|
||||
}
|
||||
|
||||
assert_eq!(
|
||||
x.dump_video_to_string(),
|
||||
load_result("gemma_integration_flags.asc")
|
||||
load_compressed_result("gemma_integration_flags")
|
||||
);
|
||||
}
|
||||
|
||||
@ -137,16 +135,25 @@ fn level4_test() {
|
||||
fn registers_equality() {
|
||||
let data_set: Vec<(Chip8Registers, Chip8Registers, bool)> = vec![
|
||||
(Chip8Registers::default(), Chip8Registers::default(), true),
|
||||
(Chip8Registers {
|
||||
registers: [0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00,],
|
||||
(
|
||||
Chip8Registers {
|
||||
registers: [
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00,
|
||||
],
|
||||
i_register: 0,
|
||||
pc: 0,
|
||||
},
|
||||
Chip8Registers {
|
||||
registers:[0x01, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00,],
|
||||
i_register: 0,
|
||||
pc: 0,
|
||||
}, false)
|
||||
Chip8Registers {
|
||||
registers: [
|
||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00,
|
||||
],
|
||||
i_register: 0,
|
||||
pc: 0,
|
||||
},
|
||||
false,
|
||||
),
|
||||
];
|
||||
|
||||
for (first, second, matches) in data_set.iter() {
|
||||
@ -187,7 +194,7 @@ fn load_rom_allows_starting() {
|
||||
let mut new_manager = Chip8ComputerManager::default();
|
||||
assert!(!new_manager.core_should_run);
|
||||
let p = TEST_ROM_ROOT.to_string() + "/1-chip8-logo.ch8";
|
||||
let full_path = Path::new(p.as_str());
|
||||
let full_path = Path::new(p.as_str());
|
||||
new_manager.load_new_program_from_disk_to_system_memory(full_path);
|
||||
assert!(new_manager.core_should_run)
|
||||
}
|
||||
@ -195,7 +202,10 @@ fn load_rom_allows_starting() {
|
||||
#[test]
|
||||
fn reset_clears_run_state() {
|
||||
let mut new_manager = Chip8ComputerManager::default();
|
||||
let p = format!("{}/../resources/test/roms/1-chip8-logo.ch8", std::env::current_dir().unwrap().display());
|
||||
let p = format!(
|
||||
"{}/../resources/test/roms/1-chip8-logo.ch8",
|
||||
std::env::current_dir().unwrap().display()
|
||||
);
|
||||
new_manager.load_new_program_from_disk_to_system_memory(Path::new(p.as_str()));
|
||||
new_manager.reset(QuirkMode::Chip8);
|
||||
assert!(!new_manager.core_should_run);
|
||||
@ -205,9 +215,13 @@ fn reset_clears_run_state() {
|
||||
fn tick_when_ready() {
|
||||
let mut new_manager = Chip8ComputerManager::default();
|
||||
new_manager.load_new_program_from_disk_to_system_memory(Path::new(
|
||||
format!("{}/../resources/test/roms/1-chip8-logo.ch8", std::env::current_dir().unwrap().display()).as_str()));
|
||||
format!(
|
||||
"{}/../resources/test/roms/1-chip8-logo.ch8",
|
||||
std::env::current_dir().unwrap().display()
|
||||
)
|
||||
.as_str(),
|
||||
));
|
||||
assert!(new_manager.core_should_run);
|
||||
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@ -1,23 +1,14 @@
|
||||
use std::fs;
|
||||
mod test_utils;
|
||||
use crate::test_utils::read_test_result;
|
||||
use gemma::chip8::computer::Chip8Computer;
|
||||
use std::fs;
|
||||
use std::io::prelude::*;
|
||||
|
||||
fn load_result(to_load: &str) -> String {
|
||||
let full_path = format!("{}/../resources/test/state/{}", std::env::current_dir().unwrap().display(), to_load);
|
||||
println!("CURRENT DIR: {:?}", std::env::current_dir());
|
||||
println!("Loading state => (([{}]))", full_path);
|
||||
std::fs::read_to_string(full_path).unwrap()
|
||||
}
|
||||
|
||||
fn load_rom(to_load: &str) -> Vec<u8> {
|
||||
fs::read(format!("resources/test/roms/{}", to_load)).unwrap()
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn serialization_round_trip() {
|
||||
let original_computer = Chip8Computer::new();
|
||||
let expected_json = load_result("smoke_001_round_trip_serialize_deserialize.json");
|
||||
let expected_json = read_test_result("smoke_001_round_trip_serialize_deserialize.json");
|
||||
|
||||
// Serialize the Chip8Computer instance
|
||||
let serialized = serde_json::to_string(&original_computer).expect("Serialization failed");
|
||||
@ -33,10 +24,10 @@ fn serialization_round_trip() {
|
||||
// Deserialize back to Chip8Computer and assert equality
|
||||
let deserialized_computer: Chip8Computer =
|
||||
serde_json::from_str(&serialized).expect("Deserialization failed");
|
||||
assert_eq!(
|
||||
deserialized_computer, original_computer,
|
||||
"Deserialized instance does not match the original"
|
||||
);
|
||||
assert_eq!(
|
||||
deserialized_computer, original_computer,
|
||||
"Deserialized instance does not match the original"
|
||||
);
|
||||
}
|
||||
//
|
||||
// #[test]
|
||||
|
||||
@ -1,15 +1,16 @@
|
||||
use flate2::read::DeflateDecoder;
|
||||
use flate2::write::DeflateEncoder;
|
||||
use flate2::Compression;
|
||||
use std::fs::File;
|
||||
use std::io::{Read, Write};
|
||||
use flate2::Compression;
|
||||
use flate2::read::DeflateDecoder;
|
||||
use flate2::write::{DeflateEncoder};
|
||||
|
||||
|
||||
use tempfile::tempfile;
|
||||
const TEST_OUTPUT_SAMPLE_DIR: &str = "../resources/test/";
|
||||
|
||||
pub fn compress_string(input: &str) -> Vec<u8> {
|
||||
let mut encoder = DeflateEncoder::new(Vec::new(), Compression::default());
|
||||
encoder.write_all(input.as_bytes()).expect("Failed to write data");
|
||||
encoder
|
||||
.write_all(input.as_bytes())
|
||||
.expect("Failed to write data");
|
||||
encoder.finish().expect("Failed to finish compression")
|
||||
}
|
||||
|
||||
@ -23,11 +24,18 @@ pub fn decompress_to_string(compressed_data: &[u8]) -> Result<String, std::io::E
|
||||
/// Read a compressed test result and return the expected result
|
||||
/// as a string
|
||||
pub fn read_compressed_test_result(suffix: &str) -> String {
|
||||
let full_path = std::env::current_dir().unwrap().display().to_string() + "/" + &*TEST_OUTPUT_SAMPLE_DIR.to_owned() + suffix + ".deflated";
|
||||
let full_path = std::env::current_dir().unwrap().display().to_string()
|
||||
+ "/"
|
||||
+ &*TEST_OUTPUT_SAMPLE_DIR.to_owned()
|
||||
+ suffix
|
||||
+ ".deflated";
|
||||
println!("LOADING {}", full_path);
|
||||
let mut compressed_file = File::open(full_path).expect(format!("Unable to load test result [{}]", suffix).as_str());
|
||||
let mut compressed_file = File::open(&full_path)
|
||||
.expect(format!("Unable to load test result [{}]", full_path.clone()).as_str());
|
||||
let mut compressed_data = Vec::new();
|
||||
compressed_file.read_to_end(&mut compressed_data).expect("Unable to compress data");
|
||||
compressed_file
|
||||
.read_to_end(&mut compressed_data)
|
||||
.expect("Unable to compress data");
|
||||
|
||||
decompress_to_string(&compressed_data).unwrap()
|
||||
}
|
||||
@ -35,16 +43,57 @@ pub fn read_compressed_test_result(suffix: &str) -> String {
|
||||
pub fn load_compressed_result(suffix: &str) -> String {
|
||||
read_compressed_test_result(suffix)
|
||||
}
|
||||
|
||||
pub fn read_test_result(suffix: &str) -> String {
|
||||
std::fs::read_to_string(TEST_OUTPUT_SAMPLE_DIR.to_owned() + suffix).unwrap()
|
||||
}
|
||||
|
||||
|
||||
pub fn load_result(to_load: &str) -> String {
|
||||
std::fs::read_to_string(format!("../resources/test/{}", to_load)).unwrap()
|
||||
panic!("THIS SHOULD BE COMPRESSED.");
|
||||
// let full_path = TEST_OUTPUT_SAMPLE_DIR.to_owned() + suffix;
|
||||
// println!("READING TEST RESULTS FROM {}", full_path);
|
||||
// std::fs::read_to_string(full_path).unwrap()
|
||||
}
|
||||
|
||||
pub fn load_rom(to_load: &str) -> Vec<u8> {
|
||||
std::fs::read(format!("../resources/roms/{}", to_load)).unwrap()
|
||||
}
|
||||
std::fs::read(format!("../resources/roms/{}.ch8", to_load)).unwrap()
|
||||
}
|
||||
|
||||
fn load_result(to_load: &str) -> String {
|
||||
panic!("THIS SHOULD BE COMPRESSED.");
|
||||
// let full_path = format!(
|
||||
// "{}/../resources/test/state/{}",
|
||||
// std::env::current_dir().unwrap().display(),
|
||||
// to_load
|
||||
// );
|
||||
// println!("CURRENT DIR: {:?}", std::env::current_dir());
|
||||
// println!("Loading state => (([{}]))", full_path);
|
||||
// std::fs::read_to_string(full_path).unwrap()
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn smoke() {
|
||||
assert!(true)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn compression_round_trip() {
|
||||
let to_compress = "The quick brown fox jumps over the lazy dog.";
|
||||
|
||||
let compressed_text = compress_string(to_compress);
|
||||
let decompressed_text = decompress_to_string(&compressed_text).unwrap();
|
||||
assert_eq!(to_compress, decompressed_text);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn file_compression_round_trip() {
|
||||
// compress string to file...
|
||||
let string_to_compress = "The quick brown fox jumps over the lazy dog.";
|
||||
let compressed_string = compress_string(string_to_compress);
|
||||
let temp_target = tempfile().unwrap();
|
||||
|
||||
//
|
||||
// ...decompress from file...
|
||||
//
|
||||
// ...verify its the same.
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
use std::fs::File;
|
||||
use std::io::Read;
|
||||
use crate::test_utils::{load_compressed_result, read_test_result};
|
||||
use gemma::chip8::computer::Chip8Computer;
|
||||
use gemma::chip8::computer_manager::Chip8ComputerManager;
|
||||
use gemma::chip8::cpu_states::Chip8CpuStates::WaitingForInstruction;
|
||||
use gemma::chip8::delay_timer::DelayTimer;
|
||||
use gemma::chip8::instructions::Chip8CpuInstructions;
|
||||
@ -17,8 +17,9 @@ use gemma::constants::*;
|
||||
use log::debug;
|
||||
use rand::random;
|
||||
use serde::Serialize;
|
||||
use gemma::chip8::computer_manager::Chip8ComputerManager;
|
||||
use crate::test_utils::read_test_result;
|
||||
use std::fs::File;
|
||||
use std::io::Read;
|
||||
use test_utils::read_compressed_test_result;
|
||||
|
||||
mod test_utils;
|
||||
|
||||
@ -36,7 +37,10 @@ fn decoder_test_invalid_instructions() {
|
||||
];
|
||||
|
||||
for i in invalid_to_encode {
|
||||
assert_eq!(Chip8CpuInstructions::decode(i, &Chip8).encode(), XXXXERRORINSTRUCTION_ENCODED);
|
||||
assert_eq!(
|
||||
Chip8CpuInstructions::decode(i, &Chip8).encode(),
|
||||
XXXXERRORINSTRUCTION_ENCODED
|
||||
);
|
||||
assert!(matches!(
|
||||
Chip8CpuInstructions::decode(i, &Chip8),
|
||||
Chip8CpuInstructions::XXXXERRORINSTRUCTION
|
||||
@ -694,7 +698,7 @@ fn keypad_string_format_test() {
|
||||
|
||||
assert_eq!(
|
||||
k.format_as_string(),
|
||||
read_test_result("gemma_keypad_string_result.asc")
|
||||
read_compressed_test_result("gemma_keypad_string_result")
|
||||
);
|
||||
}
|
||||
|
||||
@ -1111,7 +1115,7 @@ fn video_write_checkboard() {
|
||||
let v = build_checkerboard();
|
||||
assert_eq!(
|
||||
v.clone().format_as_string(),
|
||||
read_test_result("test_video_write_checkerboard.asc")
|
||||
load_compressed_result("test_video_write_checkerboard")
|
||||
);
|
||||
}
|
||||
|
||||
@ -1124,7 +1128,7 @@ fn video_zero_test() {
|
||||
}
|
||||
|
||||
assert_eq!(
|
||||
read_test_result("test_video_zero.asc"),
|
||||
load_compressed_result("test_video_zero"),
|
||||
x.format_as_string()
|
||||
);
|
||||
}
|
||||
@ -1151,7 +1155,7 @@ fn video_multi_sprite_test() {
|
||||
}
|
||||
|
||||
assert_eq!(
|
||||
read_test_result("test_multi_sprite.asc"),
|
||||
load_compressed_result("test_multi_sprite"),
|
||||
x.format_as_string()
|
||||
);
|
||||
}
|
||||
@ -1162,7 +1166,7 @@ fn video_reset_test() {
|
||||
x.reset();
|
||||
assert_eq!(
|
||||
x.format_as_string(),
|
||||
read_test_result("test_reset_clears_video.asc")
|
||||
load_compressed_result("test_reset_clears_video")
|
||||
);
|
||||
}
|
||||
|
||||
@ -1221,7 +1225,7 @@ fn video_scroll_down_1_row_test() {
|
||||
let mut x = build_checkerboard();
|
||||
x.scroll_down(1);
|
||||
assert_eq!(
|
||||
read_test_result("test_video_scroll_down_1.asc"),
|
||||
load_compressed_result("test_video_scroll_down_1"),
|
||||
x.format_as_string()
|
||||
);
|
||||
}
|
||||
@ -1231,7 +1235,7 @@ fn video_scroll_down_10_row_test() {
|
||||
let mut x = build_checkerboard();
|
||||
x.scroll_down(10);
|
||||
assert_eq!(
|
||||
read_test_result("test_video_scroll_down_10.asc"),
|
||||
load_compressed_result("test_video_scroll_down_10"),
|
||||
x.format_as_string()
|
||||
);
|
||||
}
|
||||
@ -1241,7 +1245,7 @@ fn video_high_res_has_right_resolution() {
|
||||
let x = build_checkboard_hd();
|
||||
println!("[{}]", x.format_as_string());
|
||||
assert_eq!(
|
||||
read_test_result("test_video_highdef.asc"),
|
||||
load_compressed_result("test_video_highdef"),
|
||||
x.format_as_string()
|
||||
);
|
||||
}
|
||||
@ -1251,11 +1255,8 @@ fn video_scroll_down_1_row_test_schip() {
|
||||
let mut x = build_checkboard_hd();
|
||||
x.scroll_down(1);
|
||||
|
||||
println!("[{}]", x.format_as_string());
|
||||
println!("[{}]", read_test_result("test_scroll_down_1_hd.asc"));
|
||||
|
||||
assert_eq!(
|
||||
read_test_result("test_scroll_down_1_hd.asc"),
|
||||
load_compressed_result("test_scroll_down_1_hd"),
|
||||
x.format_as_string()
|
||||
);
|
||||
}
|
||||
@ -1265,7 +1266,7 @@ fn video_scroll_down_10_row_test_schip() {
|
||||
let mut x = build_checkboard_hd();
|
||||
x.scroll_down(10);
|
||||
assert_eq!(
|
||||
read_test_result("test_scroll_down_10_hd.asc"),
|
||||
load_compressed_result("test_scroll_down_10_hd"),
|
||||
x.format_as_string()
|
||||
);
|
||||
}
|
||||
@ -1275,7 +1276,7 @@ fn video_scroll_left_4_row_test_std_def() {
|
||||
let mut x = build_checkerboard();
|
||||
x.scroll_left();
|
||||
assert_eq!(
|
||||
read_test_result("test_scroll_left_4.asc"),
|
||||
load_compressed_result("test_scroll_left_4"),
|
||||
x.format_as_string()
|
||||
);
|
||||
}
|
||||
@ -1285,7 +1286,7 @@ fn video_scroll_left_4_row_test_high_def() {
|
||||
let mut x = build_checkboard_hd();
|
||||
x.scroll_left();
|
||||
assert_eq!(
|
||||
read_test_result("test_scroll_left_4_hd.asc"),
|
||||
load_compressed_result("test_scroll_left_4_hd"),
|
||||
x.format_as_string()
|
||||
);
|
||||
}
|
||||
@ -1295,7 +1296,7 @@ fn video_scroll_right_4_row_test_std_def() {
|
||||
let mut x = build_checkerboard();
|
||||
x.scroll_right();
|
||||
assert_eq!(
|
||||
read_test_result("test_scroll_right_4.asc"),
|
||||
load_compressed_result("test_scroll_right_4"),
|
||||
x.format_as_string()
|
||||
);
|
||||
}
|
||||
@ -1305,7 +1306,7 @@ fn video_scroll_right_4_row_test_high_def() {
|
||||
let mut x = build_checkboard_hd();
|
||||
x.scroll_right();
|
||||
assert_eq!(
|
||||
read_test_result("test_scroll_right_4_hd.asc"),
|
||||
load_compressed_result("test_scroll_right_4_hd"),
|
||||
x.format_as_string()
|
||||
);
|
||||
}
|
||||
@ -1342,7 +1343,7 @@ fn instruction_test_scrolling_lowres() {
|
||||
x.quirk_mode = quirk.clone();
|
||||
Chip8CpuInstructions::SCR.execute(&mut x);
|
||||
assert_eq!(
|
||||
read_test_result("test_scroll_right_4.asc"),
|
||||
load_compressed_result("test_scroll_right_4"),
|
||||
x.dump_video_to_string()
|
||||
);
|
||||
|
||||
@ -1352,7 +1353,7 @@ fn instruction_test_scrolling_lowres() {
|
||||
Chip8CpuInstructions::SCL.execute(&mut x);
|
||||
|
||||
assert_eq!(
|
||||
read_test_result("test_scroll_left_4.asc"),
|
||||
load_compressed_result("test_scroll_left_4"),
|
||||
x.dump_video_to_string()
|
||||
);
|
||||
|
||||
@ -1361,7 +1362,7 @@ fn instruction_test_scrolling_lowres() {
|
||||
x.quirk_mode = quirk.clone();
|
||||
Chip8CpuInstructions::SCD(0x01).execute(&mut x);
|
||||
assert_eq!(
|
||||
read_test_result("test_video_scroll_down_1.asc"),
|
||||
load_compressed_result("test_video_scroll_down_1"),
|
||||
x.dump_video_to_string()
|
||||
);
|
||||
|
||||
@ -1370,7 +1371,7 @@ fn instruction_test_scrolling_lowres() {
|
||||
x.quirk_mode = quirk.clone();
|
||||
Chip8CpuInstructions::SCD(0xA).execute(&mut x);
|
||||
assert_eq!(
|
||||
read_test_result("test_video_scroll_down_10.asc"),
|
||||
load_compressed_result("test_video_scroll_down_10"),
|
||||
x.dump_video_to_string()
|
||||
);
|
||||
}
|
||||
@ -1382,7 +1383,7 @@ fn computer_dump_keypad_to_string() {
|
||||
x.keypad.push_key(0x1);
|
||||
x.keypad.push_key(0x2);
|
||||
assert_eq!(
|
||||
read_test_result("test_keypad_to_string.asc"),
|
||||
load_compressed_result("test_keypad_to_string"),
|
||||
x.dump_keypad_to_string()
|
||||
);
|
||||
}
|
||||
@ -1410,7 +1411,7 @@ fn video_scroll_up_tests_sd() {
|
||||
let distance = 1u8;
|
||||
x.scroll_up(&distance);
|
||||
assert_eq!(
|
||||
read_test_result("test_video_scroll_up_test_sd.asc"),
|
||||
load_compressed_result("test_video_scroll_up_test_sd"),
|
||||
x.format_as_string()
|
||||
);
|
||||
}
|
||||
@ -1421,7 +1422,7 @@ fn video_scroll_up_tests_hd() {
|
||||
let distance = 1u8;
|
||||
x.scroll_up(&distance);
|
||||
assert_eq!(
|
||||
read_test_result("test_video_scroll_up_test_hd.asc"),
|
||||
load_compressed_result("test_video_scroll_up_test_hd"),
|
||||
x.format_as_string()
|
||||
);
|
||||
}
|
||||
@ -1523,7 +1524,6 @@ fn video_highres_schip_draw_chip8_sprite() {}
|
||||
#[test]
|
||||
fn video_highres_schip_draw_schip_sprite() {}
|
||||
|
||||
|
||||
#[test]
|
||||
fn partial_eq_chip8computer() {
|
||||
let x = Chip8Computer::new();
|
||||
@ -1543,9 +1543,15 @@ fn system_memory_load_program() {
|
||||
let mut m = Chip8SystemMemory::new();
|
||||
let mut program_to_load = vec![];
|
||||
let file_to_load = format!("{}/2-ibm-logo.ch8", TEST_ROM_ROOT);
|
||||
println!("Attempt to load {} from {}", file_to_load, std::env::current_dir().unwrap().display());
|
||||
println!(
|
||||
"Attempt to load {} from {}",
|
||||
file_to_load,
|
||||
std::env::current_dir().unwrap().display()
|
||||
);
|
||||
let mut file_to_load_from = File::open(file_to_load).expect("Unable to load sample rom");
|
||||
file_to_load_from.read_to_end(&mut program_to_load).expect("Unable to read sample rom");
|
||||
file_to_load_from
|
||||
.read_to_end(&mut program_to_load)
|
||||
.expect("Unable to read sample rom");
|
||||
m.load_program(program_to_load.clone().into());
|
||||
let expected_at_200 = program_to_load[0];
|
||||
assert_eq!(m.peek(0x200), expected_at_200);
|
||||
@ -1591,7 +1597,7 @@ fn keys_test_manager() {
|
||||
#[test]
|
||||
fn status_of_manager() {
|
||||
let mut manager = Chip8ComputerManager::default();
|
||||
println!("MANAGER STATUS [{}]", manager.status_as_string());
|
||||
let expected_state = read_test_result("test_manager_status.asc");
|
||||
println!("MANAGER STATUS [{}]", manager.status_as_string());
|
||||
let expected_state = load_compressed_result("test_manager_status");
|
||||
assert_eq!(expected_state, manager.status_as_string());
|
||||
}
|
||||
|
||||
@ -36,13 +36,9 @@ fn main() -> Result<()> {
|
||||
app_result
|
||||
}
|
||||
|
||||
|
||||
fn run(mut terminal: DefaultTerminal) -> Result<()> {
|
||||
let mut manager = Chip8ComputerManager::default();
|
||||
manager.load_new_program_from_disk_to_system_memory(Path::new("/home/tmerritt/Projects/trevors_chip8_toy/resources/roms/2-ibm-logo.ch8"));
|
||||
// for _ in 0..30 {
|
||||
// manager.tick();
|
||||
// }
|
||||
loop {
|
||||
manager.tick();
|
||||
terminal.draw(|frame| {
|
||||
@ -124,7 +120,7 @@ fn do_draw(frame: &mut Frame, draw_with: &mut Chip8ComputerManager) {
|
||||
|
||||
fn handle_keyboard(state: &mut Chip8ComputerManager) -> Result<bool> {
|
||||
let mut die_time = false;
|
||||
if event::poll(Duration::from_millis(100)).context("Unable to poll Keyboard")? {
|
||||
if event::poll(Duration::from_millis(10)).context("Unable to poll Keyboard")? {
|
||||
if let Event::Key(key) = event::read().context("Event Read Failed")? {
|
||||
match key.code {
|
||||
KeyCode::F(1) => {
|
||||
|
||||
@ -1,36 +0,0 @@
|
||||
CLS ; Bytes [0x00e0] offset [0x0000]
|
||||
RET ; Bytes [0x00ee] offset [0x0002]
|
||||
SYS 0x0123 ; Bytes [0x0123] offset [0x0004]
|
||||
JPA 0x0123 ; Bytes [0x1123] offset [0x0006]
|
||||
CALL 0x0123 ; Bytes [0x2123] offset [0x0008]
|
||||
SEX 0x01, 0x23 ; Bytes [0x3123] offset [0x000a]
|
||||
SNEB 0x01, 0x23 ; Bytes [0x4123] offset [0x000c]
|
||||
SEY 0x01, 0x02 ; Bytes [0x5120] offset [0x000e]
|
||||
LDR 0x01, 0x23 ; Bytes [0x6123] offset [0x0010]
|
||||
ADD 0x01, 0x23 ; Bytes [0x7123] offset [0x0012]
|
||||
LDRY 0x01, 0x02 ; Bytes [0x8120] offset [0x0014]
|
||||
OR 0x01, 0x02 ; Bytes [0x8121] offset [0x0016]
|
||||
AND 0x01, 0x02 ; Bytes [0x8122] offset [0x0018]
|
||||
ORY 0x01, 0x02 ; Bytes [0x8123] offset [0x001a]
|
||||
ADDR 0x01, 0x02 ; Bytes [0x8124] offset [0x001c]
|
||||
SUB 0x01, 0x02 ; Bytes [0x8125] offset [0x001e]
|
||||
SHR 0x01, 0x02 ; Bytes [0x8126] offset [0x0020]
|
||||
SUBC 0x01, 0x02 ; Bytes [0x8127] offset [0x0022]
|
||||
SHL 0x01, 0x02 ; Bytes [0x812e] offset [0x0024]
|
||||
SNEY 0x01, 0x02 ; Bytes [0x9120] offset [0x0026]
|
||||
LDIA 0x0123 ; Bytes [0xa123] offset [0x0028]
|
||||
JPI 0x0123 ; Bytes [0xb123] offset [0x002a]
|
||||
RND 0x01, 0x23 ; Bytes [0xc123] offset [0x002c]
|
||||
DRW 0x01, 0x02, 0x03 ; Bytes [0xd123] offset [0x002e]
|
||||
SKP 0x01 ; Bytes [0xe19e] offset [0x0030]
|
||||
SKNP 0x01 ; Bytes [0xe1a1] offset [0x0032]
|
||||
LDRD 0x01 ; Bytes [0xf107] offset [0x0034]
|
||||
LDRK 0x01 ; Bytes [0xf10a] offset [0x0036]
|
||||
LDD 0x01 ; Bytes [0xf115] offset [0x0038]
|
||||
LDIS 0x01 ; Bytes [0xf118] offset [0x003a]
|
||||
ADDI 0x01 ; Bytes [0xf11e] offset [0x003c]
|
||||
LDF 0x01 ; Bytes [0xf129] offset [0x003e]
|
||||
BCD 0x01 ; Bytes [0xf133] offset [0x0040]
|
||||
LDIX 0x01 ; Bytes [0xf155] offset [0x0042]
|
||||
LDRI 0x01 ; Bytes [0xf165] offset [0x0044]
|
||||
DW 0xffff ; Bytes [0xffff] offset [0x0046]
|
||||
@ -1,32 +0,0 @@
|
||||
|
||||
*** * * *** * * *** * * *** ***
|
||||
** * * * * * * * *** *** * * * ** * *
|
||||
* * * ** ** * * ** * * * ** ** * **
|
||||
*** * * * *** * * * *** * * * ** *
|
||||
|
||||
* * * * *** *** *** *** *** ***
|
||||
*** * * * * * ** * * *** ** * * * ** * *
|
||||
* * * ** * * * ** * * * ** ** * **
|
||||
* * * * *** *** * *** ** * * *** *
|
||||
|
||||
*** * * *** *** *** *** *** ***
|
||||
** * * * *** * * * * *** * * * * ** * *
|
||||
* * * ** * * * * ** * * * ** ** * **
|
||||
** * * * *** *** * *** * * * *** *
|
||||
|
||||
*** * * *** ** *** ** * *
|
||||
* * * * *** * * * *** * * * * * * * *
|
||||
* * * ** * * * ** * * *** ** * * * * **
|
||||
* * * * *** *** * *** *** * * * * *
|
||||
|
||||
*** * * *** *** *** ***
|
||||
*** * * * *** * * * *** ** * *
|
||||
* * * ** * * ** ** * * * **
|
||||
** * * * *** *** * *** *** *
|
||||
|
||||
** * * *** *** *** ** * * ***
|
||||
* * * * *** ** * * * * * * * * *** *
|
||||
* * * ** * * * ** ** *** ** * * * **
|
||||
*** * * * *** *** * * *** * * * * ***
|
||||
|
||||
|
||||
@ -1,32 +0,0 @@
|
||||
* * * ** ** * * ** ***
|
||||
*** * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * *** ** ** * * ** ** ** ** ** ** **
|
||||
* * * * * * * *** * * * *** * * *
|
||||
|
||||
*** * * ***
|
||||
** * * * * * * *** * * * * * * * * ** * * * * * * * *
|
||||
* ** ** ** * ** ** ** ** * ** ** ** **
|
||||
*** * * * * * * * * ** * * * *
|
||||
|
||||
*** *** ***
|
||||
* * * * * * * * * * * * * * * * ** * * * * * *
|
||||
*** ** ** ** * ** ** ** ** * ** ** **
|
||||
*** * * * * * * * * *** * * *
|
||||
|
||||
|
||||
*** * ** ** * * * * ***
|
||||
* * * * * * * * * *** * * * * * * * * ** * * * * * * * *
|
||||
* *** ** ** * * ** ** ** ** * ** ** ** **
|
||||
*** * * * * * * * * * * * * ** * * * *
|
||||
|
||||
*** *** ***
|
||||
* * * * * * * * * * * * * * * * ** * * * * * *
|
||||
*** ** ** ** * ** ** ** ** * ** ** **
|
||||
*** * * * * * * * * *** * * *
|
||||
|
||||
|
||||
*** *** * * *** ** *** *** * * ***
|
||||
* * * *** ** * * * ** * * * * * * *** *
|
||||
* * * * * * ** ** * ** ** * * * **
|
||||
*** * * * *** * * * *** * * * * * ***
|
||||
|
||||
@ -1,32 +0,0 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
******** ********* ***** ***** * *
|
||||
* *
|
||||
******** *********** ****** ****** *
|
||||
|
||||
**** *** *** ***** ***** * *
|
||||
***
|
||||
**** ******* ******* ******* *
|
||||
*
|
||||
**** ******* *** ******* ***
|
||||
*
|
||||
**** *** *** *** ***** ***
|
||||
***
|
||||
******** *********** ***** *** ***** *
|
||||
**
|
||||
******** ********* ***** * ***** ***
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,32 +0,0 @@
|
||||
|
||||
***** * * **
|
||||
* ** * ** *** *** * * ** *
|
||||
* * * * * * * * * * * * * *
|
||||
* * * * **** * * * * * * *
|
||||
* * * * * * * * * * * *
|
||||
* * * * *** * * *** *** **
|
||||
|
||||
|
||||
***** ** ** ***** *******
|
||||
******* *** *** ******* *** ***
|
||||
*** ** *** *** *** *** *** **
|
||||
*** *** *** ** *** **
|
||||
*** * * *** ** *** ** *** **
|
||||
*** ****** *** *** ** *** **
|
||||
*** * * ******* *** *** ** **** ******
|
||||
*** *** *** *** *** *** *** **** *** ***
|
||||
*** *** ** *** ******* *** ***
|
||||
*** *** ** *** ****** *** **
|
||||
*** *** ** *** *** *** **
|
||||
*** *** ** *** *** * * *** *** **
|
||||
*** ** *** ** *** *** *** * **** ***
|
||||
******* *** ** *** *** * ** *********
|
||||
***** *** ** *** *** * * *** *******
|
||||
|
||||
|
||||
*** ** ** * ** * * **
|
||||
* * * * *** * * * *** * *
|
||||
* **** * * * * * * * ****
|
||||
* * * * * * * * * *
|
||||
* *** ** ** ** *** * ** ***
|
||||
|
||||
@ -1,32 +0,0 @@
|
||||
****************************************************************
|
||||
****************************************************************
|
||||
****************************************************************
|
||||
******************************* *******************************
|
||||
****************************** ******************************
|
||||
************* ************** ************** *************
|
||||
************** ********** ********** **************
|
||||
************* * ***** ***** * *************
|
||||
*************** ***************
|
||||
************** * *** *** * **************
|
||||
*************** * ****** ******* ****** * ***************
|
||||
** ******* ******** ******* **
|
||||
** *** ******* *** *** *** * *** **
|
||||
*** *** *** *** *** ** *** *** ***
|
||||
****** **** *** *** *** *** **** ** **** ******
|
||||
********* ****** ******* ******** *********
|
||||
************* ****** ****** ******** *************
|
||||
************ ******* *** *** ************
|
||||
********* *** **** *** ****** *********
|
||||
***** *** *** *** ******* *****
|
||||
** *** ** *** ***** **
|
||||
** ************** * * ** ************** **
|
||||
*** * * ***
|
||||
*************** * * ***************
|
||||
************** **** * * **** **************
|
||||
************** *** * * * * *** **************
|
||||
************* *** ****** * * ****** *** *************
|
||||
*************** ********** * * ********** ***************
|
||||
***************************** * * *****************************
|
||||
****************************** ** ******************************
|
||||
******************************* *******************************
|
||||
****************************************************************
|
||||
@ -1,32 +0,0 @@
|
||||
****************************************************************
|
||||
**************** * * ***** * * * *** *****************
|
||||
**************** * * * * ****** * *** *** * *****************
|
||||
**************** ** *** ***** * * ** *** *****************
|
||||
**************** * * *** ***** * * * * *******************
|
||||
****************************************************************
|
||||
***** ************ ************ *********** * ********* * ****
|
||||
**** * ********* * ********* * ******** * ******* * ***
|
||||
*** * ******* * ******* * ****** * ***** * **
|
||||
** * ***** * ***** * **** * *** * *
|
||||
* * *** * *** * ** * * *
|
||||
* * * * * ** *
|
||||
* * * **** ** **
|
||||
**** * ** * * * *
|
||||
* * * *** ** **
|
||||
* * * * * ****
|
||||
* * ** * * **
|
||||
* * * * * * ** **
|
||||
* * ** * * ** **
|
||||
* * ** ****** * *
|
||||
****
|
||||
|
||||
******** ******** ********
|
||||
* * * * * *
|
||||
* **** * * * * * * **** *
|
||||
* * * * ** * * * *
|
||||
* * * * ** * * * *
|
||||
* **** * * * * * * **** *
|
||||
* * * * * *
|
||||
******** ******** ********
|
||||
|
||||
****************************************************************
|
||||
0
resources/test/gemma_keypad_string_result.deflated
Normal file
0
resources/test/gemma_keypad_string_result.deflated
Normal file
@ -1,4 +0,0 @@
|
||||
|*|*|3|c|
|
||||
|4|5|6|d|
|
||||
|7|8|9|e|
|
||||
|a|0|b|f|
|
||||
@ -1,48 +0,0 @@
|
||||
Should Run: false
|
||||
Num Cycles: 0
|
||||
Registers
|
||||
Vx: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
||||
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
||||
I: 0x0000 PC: 0x0200
|
||||
Timers: 255/0
|
||||
Keypad:
|
||||
|1|2|3|c|
|
||||
|4|5|6|d|
|
||||
|7|8|9|e|
|
||||
|a|0|b|f|
|
||||
|
||||
Video:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,32 +0,0 @@
|
||||
**** * **** **** * * **** **** ****
|
||||
* * ** * * * * * * *
|
||||
* * * **** **** **** **** **** *
|
||||
* * * * * * * * * *
|
||||
**** *** **** **** * **** **** *
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,32 +0,0 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,64 +0,0 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
@ -1,64 +0,0 @@
|
||||
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
@ -1,32 +0,0 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
@ -1,64 +0,0 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
@ -1,32 +0,0 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
@ -1,64 +0,0 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
@ -1,64 +0,0 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
@ -1,32 +0,0 @@
|
||||
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
@ -1,32 +0,0 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
@ -1,64 +0,0 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
|
||||
@ -1,32 +0,0 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
|
||||
@ -1,32 +0,0 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
@ -1,32 +0,0 @@
|
||||
****
|
||||
* *
|
||||
* *
|
||||
* *
|
||||
****
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user