From dc092814e127e4440e200cf4178eb21e43eb228a Mon Sep 17 00:00:00 2001 From: Olivier Goguel Date: Sat, 26 Mar 2016 17:16:01 +0100 Subject: [PATCH] First Release --- .gitignore | 1 + ActiveGS_iOS/Default-568h@2x.png | Bin 0 -> 11744 bytes ActiveGS_iOS/Default.png | Bin 0 -> 11744 bytes ActiveGS_iOS/Entitlements.plist | 10 + .../Resources-iPad/MainWindow-iPad.xib | 455 + ActiveGS_iOS/activegs.plist | 46 + .../activegs.xcodeproj/project.pbxproj | 1582 ++++ .../contents.xcworkspacedata | 7 + ActiveGS_iOS/activegs_Prefix.pch | 8 + ActiveGS_iOS/iTunesArtwork | Bin 0 -> 233114 bytes ActiveGS_iOS/icon.png | Bin 0 -> 7357 bytes ActiveGS_iOS/icon72.png | Bin 0 -> 9477 bytes ActiveGS_iOS/icon@2x.png | Bin 0 -> 17617 bytes ActiveGS_iOS/icon_APPLE 2.png | Bin 0 -> 2844 bytes ActiveGS_iOS/icon_APPLE 2GS.png | Bin 0 -> 2624 bytes ActiveGS_iOS/icone72.png | Bin 0 -> 9477 bytes ActiveGS_iOS/infoViewController-ipad.xib | 923 ++ ActiveGS_iOS/infoViewController.xib | 931 ++ ActiveGS_iOS/main.mm | 17 + ActiveGS_iOS/mainViewController.xib | 893 ++ Common.iphone/ActiveGSZoomEmulatorView.h | 61 + Common.iphone/ActiveGSZoomEmulatorView.mm | 870 ++ Common.iphone/GTMUIView+SubtreeDescription.h | 53 + Common.iphone/GTMUIView+SubtreeDescription.m | 184 + Common.iphone/KBDController.h | 187 + Common.iphone/KBDController.mm | 2789 ++++++ Common.iphone/MainWindow-iPad.xib | 226 + Common.iphone/MainWindow.xib | 418 + Common.iphone/Tab2GS.png | Bin 0 -> 4231 bytes Common.iphone/Tab2GS@2x.png | Bin 0 -> 6696 bytes Common.iphone/Tab2_32.png | Bin 0 -> 2894 bytes Common.iphone/TabFTA.png | Bin 0 -> 3484 bytes Common.iphone/TabFTA@2x.png | Bin 0 -> 3838 bytes Common.iphone/TabFTA_32.png | Bin 0 -> 3591 bytes Common.iphone/Tab][.png | Bin 0 -> 3911 bytes Common.iphone/Tab][@2x.png | Bin 0 -> 5702 bytes Common.iphone/UICustomKey.h | 79 + Common.iphone/UICustomKey.mm | 370 + Common.iphone/activegsAppDelegate.h | 181 + Common.iphone/activegsAppDelegate.mm | 902 ++ Common.iphone/activegsEmulatorController.h | 84 + Common.iphone/activegsEmulatorController.mm | 682 ++ Common.iphone/activegsList.h | 79 + Common.iphone/activegsList.mm | 766 ++ Common.iphone/activegsViewController.h | 52 + Common.iphone/activegsViewController.mm | 555 ++ Common.iphone/activegsViewController.xib | 110 + Common.iphone/asynccommand.h | 24 + Common.iphone/asynccommand.mm | 78 + Common.iphone/asyncimageview.h | 50 + Common.iphone/asyncimageview.mm | 380 + Common.iphone/detailViewController.h | 62 + Common.iphone/detailViewController.mm | 208 + Common.iphone/detailViewController.xib | 517 + Common.iphone/disk_35_1.png | Bin 0 -> 305 bytes Common.iphone/disk_35_2.png | Bin 0 -> 1035 bytes Common.iphone/disk_525_1.png | Bin 0 -> 292 bytes Common.iphone/disk_525_2.png | Bin 0 -> 315 bytes Common.iphone/fta20-ipad.png | Bin 0 -> 41440 bytes Common.iphone/fta20.png | Bin 0 -> 13684 bytes Common.iphone/fta20@2x.png | Bin 0 -> 33295 bytes Common.iphone/fta20_2x.png | Bin 0 -> 33295 bytes Common.iphone/icon_APPLE 2.png | Bin 0 -> 2844 bytes Common.iphone/icon_APPLE 2GS.png | Bin 0 -> 2624 bytes Common.iphone/infoViewController.h | 27 + Common.iphone/infoViewController.mm | 152 + Common.iphone/kbdlayout.h | 28 + Common.iphone/kbdlayout.mm | 310 + Common.iphone/keyboard.h | 29 + Common.iphone/keyboard.mm | 109 + Common.iphone/logo_apple2.png | Bin 0 -> 14308 bytes Common.iphone/logo_apple2.psd | Bin 0 -> 100152 bytes Common.iphone/logo_apple2@2x.png | Bin 0 -> 14308 bytes Common.iphone/logo_apple2gs.png | Bin 0 -> 15020 bytes Common.iphone/mouseView.h | 14 + Common.iphone/mouseView.mm | 56 + Common.iphone/parametersView.xib | 272 + Common.osx/ActiveDownloadMac.cpp | 354 + Common.osx/CEmulatorCtrlMac.cpp | 191 + Common.osx/CEmulatorCtrlMac.h | 70 + Common.res/ActiveGS.png | Bin 0 -> 7262 bytes Common.res/Apple_2_Disk_Drive_Sounds.txt | 130 + Common.res/Search Skip Search 1.wav | Bin 0 -> 115708 bytes Common.res/Search Skip Search 2.wav | Bin 0 -> 63172 bytes Common.res/Search Skip Search 3.wav | Bin 0 -> 37532 bytes Common.res/Search Skip Search 4.wav | Bin 0 -> 27964 bytes Common.res/Search Skip Search 5.wav | Bin 0 -> 42994 bytes Common.res/ShastonHi640.ttf | Bin 0 -> 74316 bytes Common.res/Spin Up Search 1.wav | Bin 0 -> 79122 bytes Common.res/Spin Up Search 2.wav | Bin 0 -> 74066 bytes Common.res/disk.png | Bin 0 -> 196 bytes Common.res/disk_35_1.png | Bin 0 -> 305 bytes Common.res/disk_35_2.png | Bin 0 -> 1035 bytes Common.res/disk_525_1.png | Bin 0 -> 292 bytes Common.res/disk_525_2.png | Bin 0 -> 315 bytes Common.res/facebook-logo.png | Bin 0 -> 13486 bytes Common.res/floppy_eject.wav | Bin 0 -> 104266 bytes Common.res/logo_apple2.png | Bin 0 -> 14308 bytes Common.res/logo_apple2gs.png | Bin 0 -> 15020 bytes Common/3rdpartylib/simplexml.cpp | 567 ++ Common/3rdpartylib/simplexml.h | 84 + Common/ActiveDownload.cpp | 627 ++ Common/ActiveDownload.h | 118 + Common/ActiveDownloadNoCache.cpp | 20 + Common/ActiveGSList.cpp | 229 + Common/ActiveGSList.h | 62 + Common/ActiveZip.cpp | 213 + Common/CA2Text.cpp | 119 + Common/CEMulatorCtrl.h | 417 + Common/CEmulatorCtrl.cpp | 2995 ++++++ Common/activeconfig.cpp | 84 + Common/apple2disk.cpp | 24 + Common/apple2e.cpp | 2151 +++++ Common/interface.cpp | 131 + Common/ki.h | 84 + Common/libpng.cpp | 191 + Common/rom.cpp | 8280 +++++++++++++++++ Common/svnversion.h | 56 + Common/svnversion.h.ref | 51 + DefaultPackage/BLUE_HELMET.FTA | Bin 0 -> 819264 bytes DefaultPackage/BOUNCIN_FERNO.FTA | Bin 0 -> 819264 bytes DefaultPackage/DELTA.FTA | Bin 0 -> 819264 bytes DefaultPackage/MINIPRIX.FTA | Bin 0 -> 819264 bytes DefaultPackage/MODULAE.FTA | Bin 0 -> 819264 bytes DefaultPackage/NOISETRACKER.FTA | Bin 0 -> 819264 bytes DefaultPackage/NUCLEUS.FTA | Bin 0 -> 819264 bytes DefaultPackage/Oil_Landers.fta | Bin 0 -> 819264 bytes DefaultPackage/PHOTONIX.FTA | Bin 0 -> 819264 bytes DefaultPackage/SPACE_HARRIER.FTA | Bin 0 -> 819264 bytes DefaultPackage/StarWizard (2002).fta | Bin 0 -> 819264 bytes DefaultPackage/XMASDEMO.FTA | Bin 0 -> 819264 bytes DefaultPackage/bestof.activegsxml | 42 + DefaultPackage/bluehelmet_1.png | Bin 0 -> 4737 bytes DefaultPackage/bluehelmet_2.png | Bin 0 -> 4591 bytes DefaultPackage/bouncinferno_1.png | Bin 0 -> 9265 bytes DefaultPackage/bouncinferno_2.png | Bin 0 -> 1714 bytes DefaultPackage/bouncinferno_3.png | Bin 0 -> 4713 bytes DefaultPackage/bouncinferno_4.png | Bin 0 -> 2350 bytes DefaultPackage/bouncinferno_5.png | Bin 0 -> 2306 bytes DefaultPackage/bouncinferno_6.png | Bin 0 -> 2250 bytes DefaultPackage/bouncinferno_7.png | Bin 0 -> 2477 bytes DefaultPackage/delta_1.png | Bin 0 -> 1619 bytes DefaultPackage/delta_2.png | Bin 0 -> 3124 bytes DefaultPackage/delta_3.png | Bin 0 -> 4010 bytes DefaultPackage/delta_4.png | Bin 0 -> 3709 bytes DefaultPackage/delta_5.png | Bin 0 -> 3058 bytes DefaultPackage/delta_6.png | Bin 0 -> 3877 bytes DefaultPackage/delta_7.png | Bin 0 -> 4000 bytes DefaultPackage/floby1.png | Bin 0 -> 4233 bytes DefaultPackage/floby2.png | Bin 0 -> 2222 bytes DefaultPackage/floby3.png | Bin 0 -> 2813 bytes DefaultPackage/flobynoid (2002).dsk.zip | Bin 0 -> 59906 bytes DefaultPackage/harrier1.png | Bin 0 -> 8293 bytes DefaultPackage/list.activegsxml | 361 + DefaultPackage/list.xsl | 11 + DefaultPackage/miniprix_1.png | Bin 0 -> 3905 bytes DefaultPackage/miniprix_2.png | Bin 0 -> 3075 bytes DefaultPackage/miniprix_3.png | Bin 0 -> 3163 bytes DefaultPackage/modulae_1.png | Bin 0 -> 4852 bytes DefaultPackage/modulae_10.png | Bin 0 -> 4077 bytes DefaultPackage/modulae_11.png | Bin 0 -> 4201 bytes DefaultPackage/modulae_2.png | Bin 0 -> 4937 bytes DefaultPackage/modulae_3.png | Bin 0 -> 4659 bytes DefaultPackage/modulae_4.png | Bin 0 -> 5446 bytes DefaultPackage/modulae_5.png | Bin 0 -> 5291 bytes DefaultPackage/modulae_6.png | Bin 0 -> 4096 bytes DefaultPackage/modulae_7.png | Bin 0 -> 5668 bytes DefaultPackage/modulae_8.png | Bin 0 -> 5343 bytes DefaultPackage/modulae_9.png | Bin 0 -> 4999 bytes DefaultPackage/noisetracker_0.png | Bin 0 -> 3771 bytes DefaultPackage/noisetracker_1.png | Bin 0 -> 6322 bytes DefaultPackage/noisetracker_2.png | Bin 0 -> 5895 bytes DefaultPackage/noisetracker_3.png | Bin 0 -> 7950 bytes DefaultPackage/nucleus.png | Bin 0 -> 6142 bytes DefaultPackage/nucleus_2.png | Bin 0 -> 5911 bytes DefaultPackage/nucleus_c.png | Bin 0 -> 4788 bytes DefaultPackage/nucleus_t.png | Bin 0 -> 2411 bytes DefaultPackage/oillanders_1.png | Bin 0 -> 5174 bytes DefaultPackage/oillanders_2.png | Bin 0 -> 4426 bytes DefaultPackage/oillanders_3.png | Bin 0 -> 4772 bytes DefaultPackage/oillanders_4.png | Bin 0 -> 3044 bytes DefaultPackage/oillanders_5.png | Bin 0 -> 3103 bytes DefaultPackage/photonix_1.png | Bin 0 -> 2454 bytes DefaultPackage/photonix_2.png | Bin 0 -> 6421 bytes DefaultPackage/poms_1.png | Bin 0 -> 6190 bytes DefaultPackage/poms_2.png | Bin 0 -> 2536 bytes DefaultPackage/poms_3.png | Bin 0 -> 3542 bytes DefaultPackage/poms_4.png | Bin 0 -> 4086 bytes DefaultPackage/poms_5.png | Bin 0 -> 6533 bytes DefaultPackage/poms_6.png | Bin 0 -> 3640 bytes DefaultPackage/starwizard.png | Bin 0 -> 9757 bytes DefaultPackage/starwizard_2.png | Bin 0 -> 9873 bytes DefaultPackage/starwizard_3.png | Bin 0 -> 11444 bytes DefaultPackage/starwizard_4.png | Bin 0 -> 3570 bytes DefaultPackage/starwizard_5.png | Bin 0 -> 3632 bytes DefaultPackage/thumb_bouncinferno.png | Bin 0 -> 2001 bytes DefaultPackage/thumb_delta.png | Bin 0 -> 1689 bytes DefaultPackage/thumb_floby.png | Bin 0 -> 2500 bytes DefaultPackage/thumb_gsos.png | Bin 0 -> 1082 bytes DefaultPackage/thumb_harrier.png | Bin 0 -> 2442 bytes DefaultPackage/thumb_karateka.png | Bin 0 -> 1489 bytes DefaultPackage/thumb_modulae.png | Bin 0 -> 2586 bytes DefaultPackage/thumb_noisetracker.png | Bin 0 -> 3053 bytes DefaultPackage/thumb_nucleus.png | Bin 0 -> 2516 bytes DefaultPackage/thumb_photonix.png | Bin 0 -> 2854 bytes DefaultPackage/thumb_poms.png | Bin 0 -> 2461 bytes DefaultPackage/thumb_pop.png | Bin 0 -> 21900 bytes DefaultPackage/thumb_system6.png | Bin 0 -> 1082 bytes DefaultPackage/thumb_xmas.png | Bin 0 -> 2607 bytes DefaultPackage/xmas_1.png | Bin 0 -> 2120 bytes DefaultPackage/xmas_2.png | Bin 0 -> 9134 bytes DefaultPackage/xmas_3.png | Bin 0 -> 7382 bytes DefaultPackage/xmas_4.png | Bin 0 -> 6041 bytes DefaultPackage/xmas_5.png | Bin 0 -> 5090 bytes DefaultPackage/xmas_6.png | Bin 0 -> 8323 bytes DefaultPackage/xmas_7.png | Bin 0 -> 1763 bytes DefaultPackage/xmas_8.png | Bin 0 -> 2207 bytes Drivers/activegs_driver.cpp | 17 + Libraries/libpng/png.cpp | 922 ++ Libraries/libpng/png.h | 3690 ++++++++ Libraries/libpng/pngconf.h | 1496 +++ Libraries/libpng/pngerror.cpp | 361 + Libraries/libpng/pnggccrd.cpp | 103 + Libraries/libpng/pngget.cpp | 939 ++ Libraries/libpng/pngmem.cpp | 617 ++ Libraries/libpng/pngpread.cpp | 1724 ++++ Libraries/libpng/pngread.cpp | 1470 +++ Libraries/libpng/pngrio.cpp | 177 + Libraries/libpng/pngrtran.cpp | 4382 +++++++++ Libraries/libpng/pngrutil.cpp | 3244 +++++++ Libraries/libpng/pngset.cpp | 1255 +++ Libraries/libpng/pngtrans.cpp | 674 ++ Libraries/libpng/pngvcrd.cpp | 1 + Libraries/libpng/pngwio.cpp | 256 + Libraries/libpng/pngwrite.cpp | 1558 ++++ Libraries/libpng/pngwtran.cpp | 572 ++ Libraries/libpng/pngwutil.cpp | 2788 ++++++ Libraries/unzip101e/crypt.h | 132 + Libraries/unzip101e/ioapi.cpp | 177 + Libraries/unzip101e/ioapi.h | 75 + Libraries/unzip101e/iowin32.cpp | 274 + Libraries/unzip101e/iowin32.h | 25 + Libraries/unzip101e/unzip.cpp | 1603 ++++ Libraries/unzip101e/unzip.h | 354 + Libraries/unzip101e/zip.cpp | 1219 +++ Libraries/unzip101e/zip.h | 235 + Libraries/zlib123/adler32.cpp | 144 + Libraries/zlib123/compress.cpp | 79 + Libraries/zlib123/crc32.cpp | 423 + Libraries/zlib123/crc32.h | 441 + Libraries/zlib123/deflate.cpp | 1737 ++++ Libraries/zlib123/deflate.h | 331 + Libraries/zlib123/inffast.cpp | 318 + Libraries/zlib123/inffast.h | 11 + Libraries/zlib123/inffixed.h | 94 + Libraries/zlib123/inflate.cpp | 1368 +++ Libraries/zlib123/inflate.h | 115 + Libraries/zlib123/inftrees.cpp | 329 + Libraries/zlib123/inftrees.h | 55 + Libraries/zlib123/trees.cpp | 1222 +++ Libraries/zlib123/trees.h | 128 + Libraries/zlib123/uncompr.cpp | 61 + Libraries/zlib123/zconf.h | 332 + Libraries/zlib123/zconf.in.h | 332 + Libraries/zlib123/zlib.h | 1357 +++ Libraries/zlib123/zutil.cpp | 317 + Libraries/zlib123/zutil.h | 269 + README.images/screen1.png | Bin 0 -> 111790 bytes README.images/screen2.png | Bin 0 -> 115335 bytes README.images/screen3.png | Bin 0 -> 109535 bytes README.images/screen4.png | Bin 0 -> 109243 bytes README.images/screen5.png | Bin 0 -> 118415 bytes README.md | 27 +- kegs/Console/config_kegs.cpp | 2603 ++++++ kegs/Dummy/joystick_dummy.cpp | 49 + kegs/Dummy/sounddriver_dummy.cpp | 51 + kegs/OSX/2mg.icns | Bin 0 -> 74738 bytes kegs/OSX/525.icns | Bin 0 -> 76671 bytes kegs/OSX/macdriver_activegs.cpp | 303 + kegs/OSX/macdriver_generic.cpp | 782 ++ kegs/OSX/macdriver_kegs.cpp | 848 ++ kegs/OSX/macsnd_driver.cpp | 194 + kegs/OSX/scc_macdriver.cpp | 205 + kegs/Src/16inst_c.h | 3001 ++++++ kegs/Src/8inst_c.h | 3163 +++++++ kegs/Src/GraphCounter.cpp | 209 + kegs/Src/SaveState.cpp | 1016 ++ kegs/Src/SaveState.h | 156 + kegs/Src/StdString.h | 4108 ++++++++ kegs/Src/adb.cpp | 2089 +++++ kegs/Src/adb.h | 186 + kegs/Src/async_event.cpp | 208 + kegs/Src/async_event.h | 57 + kegs/Src/clock.cpp | 383 + kegs/Src/clock.h | 78 + kegs/Src/compile_time.cpp | 8 + kegs/Src/compression.cpp | 305 + kegs/Src/compression.h | 36 + kegs/Src/config.h | 82 + kegs/Src/config_generic.cpp | 718 ++ kegs/Src/defc.h | 502 + kegs/Src/defcomm.h | 189 + kegs/Src/defs.h | 59 + kegs/Src/defs_instr.h | 1621 ++++ kegs/Src/dis.cpp | 1227 +++ kegs/Src/disas.h | 204 + kegs/Src/driver.cpp | 15 + kegs/Src/driver.h | 62 + kegs/Src/engine_c.cpp | 1155 +++ kegs/Src/graphcounter.h | 53 + kegs/Src/iwm.cpp | 2378 +++++ kegs/Src/iwm.h | 326 + kegs/Src/iwm_35_525.h | 331 + kegs/Src/kegsfont.h | 517 + kegs/Src/kegsversion.h | 10 + kegs/Src/marinetti.cpp | 881 ++ kegs/Src/marinetti.h | 460 + kegs/Src/marinetti_helper.cpp | 740 ++ kegs/Src/moremem.cpp | 2549 +++++ kegs/Src/moremem.h | 93 + kegs/Src/op_routs.h | 462 + kegs/Src/openalasync_snddriver.cpp | 657 ++ kegs/Src/paddles.cpp | 221 + kegs/Src/paddles.h | 63 + kegs/Src/prodos.h | 109 + kegs/Src/prodos_protos.h | 36 + kegs/Src/protos.h | 465 + kegs/Src/protos_engine_c.h | 43 + kegs/Src/protos_macdriver.h | 59 + kegs/Src/protos_macsnd_driver.h | 11 + kegs/Src/protos_windriver.h | 27 + kegs/Src/protos_xdriver.h | 36 + kegs/Src/raster.h | 19 + kegs/Src/scc.cpp | 1265 +++ kegs/Src/scc.h | 172 + kegs/Src/scc_socket_driver.cpp | 1183 +++ kegs/Src/sim65816.cpp | 3080 ++++++ kegs/Src/sim65816.h | 392 + kegs/Src/size_c.h | 270 + kegs/Src/size_tab.h | 270 + kegs/Src/smartport.cpp | 798 ++ kegs/Src/sound.cpp | 1925 ++++ kegs/Src/sound.h | 210 + kegs/Src/sound_driver.cpp | 192 + kegs/Src/superhires.h | 231 + kegs/Src/video.cpp | 4224 +++++++++ kegs/Src/video.h | 295 + kegs/iOS/emulatorView.h | 32 + kegs/iOS/emulatorView.mm | 98 + kegs/iOS/joystick_iphone.cpp | 57 + kegs/iOS/zoomEmulatorView.h | 73 + kegs/iOS/zoomEmulatorView.mm | 808 ++ xcodebuild.h | 1 + 353 files changed, 125322 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 ActiveGS_iOS/Default-568h@2x.png create mode 100644 ActiveGS_iOS/Default.png create mode 100644 ActiveGS_iOS/Entitlements.plist create mode 100644 ActiveGS_iOS/Resources-iPad/MainWindow-iPad.xib create mode 100644 ActiveGS_iOS/activegs.plist create mode 100644 ActiveGS_iOS/activegs.xcodeproj/project.pbxproj create mode 100644 ActiveGS_iOS/activegs.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ActiveGS_iOS/activegs_Prefix.pch create mode 100644 ActiveGS_iOS/iTunesArtwork create mode 100644 ActiveGS_iOS/icon.png create mode 100644 ActiveGS_iOS/icon72.png create mode 100644 ActiveGS_iOS/icon@2x.png create mode 100644 ActiveGS_iOS/icon_APPLE 2.png create mode 100644 ActiveGS_iOS/icon_APPLE 2GS.png create mode 100644 ActiveGS_iOS/icone72.png create mode 100644 ActiveGS_iOS/infoViewController-ipad.xib create mode 100644 ActiveGS_iOS/infoViewController.xib create mode 100644 ActiveGS_iOS/main.mm create mode 100644 ActiveGS_iOS/mainViewController.xib create mode 100644 Common.iphone/ActiveGSZoomEmulatorView.h create mode 100644 Common.iphone/ActiveGSZoomEmulatorView.mm create mode 100644 Common.iphone/GTMUIView+SubtreeDescription.h create mode 100644 Common.iphone/GTMUIView+SubtreeDescription.m create mode 100644 Common.iphone/KBDController.h create mode 100644 Common.iphone/KBDController.mm create mode 100644 Common.iphone/MainWindow-iPad.xib create mode 100644 Common.iphone/MainWindow.xib create mode 100644 Common.iphone/Tab2GS.png create mode 100644 Common.iphone/Tab2GS@2x.png create mode 100644 Common.iphone/Tab2_32.png create mode 100644 Common.iphone/TabFTA.png create mode 100644 Common.iphone/TabFTA@2x.png create mode 100644 Common.iphone/TabFTA_32.png create mode 100644 Common.iphone/Tab][.png create mode 100644 Common.iphone/Tab][@2x.png create mode 100644 Common.iphone/UICustomKey.h create mode 100644 Common.iphone/UICustomKey.mm create mode 100644 Common.iphone/activegsAppDelegate.h create mode 100644 Common.iphone/activegsAppDelegate.mm create mode 100644 Common.iphone/activegsEmulatorController.h create mode 100644 Common.iphone/activegsEmulatorController.mm create mode 100644 Common.iphone/activegsList.h create mode 100644 Common.iphone/activegsList.mm create mode 100644 Common.iphone/activegsViewController.h create mode 100644 Common.iphone/activegsViewController.mm create mode 100644 Common.iphone/activegsViewController.xib create mode 100644 Common.iphone/asynccommand.h create mode 100644 Common.iphone/asynccommand.mm create mode 100644 Common.iphone/asyncimageview.h create mode 100644 Common.iphone/asyncimageview.mm create mode 100644 Common.iphone/detailViewController.h create mode 100644 Common.iphone/detailViewController.mm create mode 100644 Common.iphone/detailViewController.xib create mode 100644 Common.iphone/disk_35_1.png create mode 100644 Common.iphone/disk_35_2.png create mode 100644 Common.iphone/disk_525_1.png create mode 100644 Common.iphone/disk_525_2.png create mode 100644 Common.iphone/fta20-ipad.png create mode 100644 Common.iphone/fta20.png create mode 100644 Common.iphone/fta20@2x.png create mode 100644 Common.iphone/fta20_2x.png create mode 100644 Common.iphone/icon_APPLE 2.png create mode 100644 Common.iphone/icon_APPLE 2GS.png create mode 100644 Common.iphone/infoViewController.h create mode 100644 Common.iphone/infoViewController.mm create mode 100644 Common.iphone/kbdlayout.h create mode 100644 Common.iphone/kbdlayout.mm create mode 100644 Common.iphone/keyboard.h create mode 100644 Common.iphone/keyboard.mm create mode 100644 Common.iphone/logo_apple2.png create mode 100644 Common.iphone/logo_apple2.psd create mode 100644 Common.iphone/logo_apple2@2x.png create mode 100644 Common.iphone/logo_apple2gs.png create mode 100644 Common.iphone/mouseView.h create mode 100644 Common.iphone/mouseView.mm create mode 100644 Common.iphone/parametersView.xib create mode 100644 Common.osx/ActiveDownloadMac.cpp create mode 100644 Common.osx/CEmulatorCtrlMac.cpp create mode 100644 Common.osx/CEmulatorCtrlMac.h create mode 100644 Common.res/ActiveGS.png create mode 100644 Common.res/Apple_2_Disk_Drive_Sounds.txt create mode 100644 Common.res/Search Skip Search 1.wav create mode 100644 Common.res/Search Skip Search 2.wav create mode 100644 Common.res/Search Skip Search 3.wav create mode 100644 Common.res/Search Skip Search 4.wav create mode 100644 Common.res/Search Skip Search 5.wav create mode 100644 Common.res/ShastonHi640.ttf create mode 100644 Common.res/Spin Up Search 1.wav create mode 100644 Common.res/Spin Up Search 2.wav create mode 100644 Common.res/disk.png create mode 100644 Common.res/disk_35_1.png create mode 100644 Common.res/disk_35_2.png create mode 100644 Common.res/disk_525_1.png create mode 100644 Common.res/disk_525_2.png create mode 100644 Common.res/facebook-logo.png create mode 100644 Common.res/floppy_eject.wav create mode 100644 Common.res/logo_apple2.png create mode 100644 Common.res/logo_apple2gs.png create mode 100644 Common/3rdpartylib/simplexml.cpp create mode 100644 Common/3rdpartylib/simplexml.h create mode 100644 Common/ActiveDownload.cpp create mode 100644 Common/ActiveDownload.h create mode 100644 Common/ActiveDownloadNoCache.cpp create mode 100644 Common/ActiveGSList.cpp create mode 100644 Common/ActiveGSList.h create mode 100644 Common/ActiveZip.cpp create mode 100644 Common/CA2Text.cpp create mode 100644 Common/CEMulatorCtrl.h create mode 100644 Common/CEmulatorCtrl.cpp create mode 100644 Common/activeconfig.cpp create mode 100644 Common/apple2disk.cpp create mode 100644 Common/apple2e.cpp create mode 100644 Common/interface.cpp create mode 100644 Common/ki.h create mode 100644 Common/libpng.cpp create mode 100644 Common/rom.cpp create mode 100644 Common/svnversion.h create mode 100644 Common/svnversion.h.ref create mode 100644 DefaultPackage/BLUE_HELMET.FTA create mode 100644 DefaultPackage/BOUNCIN_FERNO.FTA create mode 100644 DefaultPackage/DELTA.FTA create mode 100644 DefaultPackage/MINIPRIX.FTA create mode 100644 DefaultPackage/MODULAE.FTA create mode 100644 DefaultPackage/NOISETRACKER.FTA create mode 100644 DefaultPackage/NUCLEUS.FTA create mode 100644 DefaultPackage/Oil_Landers.fta create mode 100644 DefaultPackage/PHOTONIX.FTA create mode 100644 DefaultPackage/SPACE_HARRIER.FTA create mode 100644 DefaultPackage/StarWizard (2002).fta create mode 100644 DefaultPackage/XMASDEMO.FTA create mode 100644 DefaultPackage/bestof.activegsxml create mode 100644 DefaultPackage/bluehelmet_1.png create mode 100644 DefaultPackage/bluehelmet_2.png create mode 100644 DefaultPackage/bouncinferno_1.png create mode 100644 DefaultPackage/bouncinferno_2.png create mode 100644 DefaultPackage/bouncinferno_3.png create mode 100644 DefaultPackage/bouncinferno_4.png create mode 100644 DefaultPackage/bouncinferno_5.png create mode 100644 DefaultPackage/bouncinferno_6.png create mode 100644 DefaultPackage/bouncinferno_7.png create mode 100644 DefaultPackage/delta_1.png create mode 100644 DefaultPackage/delta_2.png create mode 100644 DefaultPackage/delta_3.png create mode 100644 DefaultPackage/delta_4.png create mode 100644 DefaultPackage/delta_5.png create mode 100644 DefaultPackage/delta_6.png create mode 100644 DefaultPackage/delta_7.png create mode 100644 DefaultPackage/floby1.png create mode 100644 DefaultPackage/floby2.png create mode 100644 DefaultPackage/floby3.png create mode 100644 DefaultPackage/flobynoid (2002).dsk.zip create mode 100644 DefaultPackage/harrier1.png create mode 100644 DefaultPackage/list.activegsxml create mode 100644 DefaultPackage/list.xsl create mode 100644 DefaultPackage/miniprix_1.png create mode 100644 DefaultPackage/miniprix_2.png create mode 100644 DefaultPackage/miniprix_3.png create mode 100644 DefaultPackage/modulae_1.png create mode 100644 DefaultPackage/modulae_10.png create mode 100644 DefaultPackage/modulae_11.png create mode 100644 DefaultPackage/modulae_2.png create mode 100644 DefaultPackage/modulae_3.png create mode 100644 DefaultPackage/modulae_4.png create mode 100644 DefaultPackage/modulae_5.png create mode 100644 DefaultPackage/modulae_6.png create mode 100644 DefaultPackage/modulae_7.png create mode 100644 DefaultPackage/modulae_8.png create mode 100644 DefaultPackage/modulae_9.png create mode 100644 DefaultPackage/noisetracker_0.png create mode 100644 DefaultPackage/noisetracker_1.png create mode 100644 DefaultPackage/noisetracker_2.png create mode 100644 DefaultPackage/noisetracker_3.png create mode 100644 DefaultPackage/nucleus.png create mode 100644 DefaultPackage/nucleus_2.png create mode 100644 DefaultPackage/nucleus_c.png create mode 100644 DefaultPackage/nucleus_t.png create mode 100644 DefaultPackage/oillanders_1.png create mode 100644 DefaultPackage/oillanders_2.png create mode 100644 DefaultPackage/oillanders_3.png create mode 100644 DefaultPackage/oillanders_4.png create mode 100644 DefaultPackage/oillanders_5.png create mode 100644 DefaultPackage/photonix_1.png create mode 100644 DefaultPackage/photonix_2.png create mode 100644 DefaultPackage/poms_1.png create mode 100644 DefaultPackage/poms_2.png create mode 100644 DefaultPackage/poms_3.png create mode 100644 DefaultPackage/poms_4.png create mode 100644 DefaultPackage/poms_5.png create mode 100644 DefaultPackage/poms_6.png create mode 100644 DefaultPackage/starwizard.png create mode 100644 DefaultPackage/starwizard_2.png create mode 100644 DefaultPackage/starwizard_3.png create mode 100644 DefaultPackage/starwizard_4.png create mode 100644 DefaultPackage/starwizard_5.png create mode 100644 DefaultPackage/thumb_bouncinferno.png create mode 100644 DefaultPackage/thumb_delta.png create mode 100644 DefaultPackage/thumb_floby.png create mode 100644 DefaultPackage/thumb_gsos.png create mode 100644 DefaultPackage/thumb_harrier.png create mode 100755 DefaultPackage/thumb_karateka.png create mode 100644 DefaultPackage/thumb_modulae.png create mode 100644 DefaultPackage/thumb_noisetracker.png create mode 100644 DefaultPackage/thumb_nucleus.png create mode 100644 DefaultPackage/thumb_photonix.png create mode 100644 DefaultPackage/thumb_poms.png create mode 100644 DefaultPackage/thumb_pop.png create mode 100644 DefaultPackage/thumb_system6.png create mode 100644 DefaultPackage/thumb_xmas.png create mode 100644 DefaultPackage/xmas_1.png create mode 100644 DefaultPackage/xmas_2.png create mode 100644 DefaultPackage/xmas_3.png create mode 100644 DefaultPackage/xmas_4.png create mode 100644 DefaultPackage/xmas_5.png create mode 100644 DefaultPackage/xmas_6.png create mode 100644 DefaultPackage/xmas_7.png create mode 100644 DefaultPackage/xmas_8.png create mode 100644 Drivers/activegs_driver.cpp create mode 100644 Libraries/libpng/png.cpp create mode 100644 Libraries/libpng/png.h create mode 100644 Libraries/libpng/pngconf.h create mode 100644 Libraries/libpng/pngerror.cpp create mode 100644 Libraries/libpng/pnggccrd.cpp create mode 100644 Libraries/libpng/pngget.cpp create mode 100644 Libraries/libpng/pngmem.cpp create mode 100644 Libraries/libpng/pngpread.cpp create mode 100644 Libraries/libpng/pngread.cpp create mode 100644 Libraries/libpng/pngrio.cpp create mode 100644 Libraries/libpng/pngrtran.cpp create mode 100644 Libraries/libpng/pngrutil.cpp create mode 100644 Libraries/libpng/pngset.cpp create mode 100644 Libraries/libpng/pngtrans.cpp create mode 100644 Libraries/libpng/pngvcrd.cpp create mode 100644 Libraries/libpng/pngwio.cpp create mode 100644 Libraries/libpng/pngwrite.cpp create mode 100644 Libraries/libpng/pngwtran.cpp create mode 100644 Libraries/libpng/pngwutil.cpp create mode 100644 Libraries/unzip101e/crypt.h create mode 100644 Libraries/unzip101e/ioapi.cpp create mode 100644 Libraries/unzip101e/ioapi.h create mode 100644 Libraries/unzip101e/iowin32.cpp create mode 100644 Libraries/unzip101e/iowin32.h create mode 100644 Libraries/unzip101e/unzip.cpp create mode 100644 Libraries/unzip101e/unzip.h create mode 100644 Libraries/unzip101e/zip.cpp create mode 100644 Libraries/unzip101e/zip.h create mode 100644 Libraries/zlib123/adler32.cpp create mode 100644 Libraries/zlib123/compress.cpp create mode 100644 Libraries/zlib123/crc32.cpp create mode 100644 Libraries/zlib123/crc32.h create mode 100644 Libraries/zlib123/deflate.cpp create mode 100644 Libraries/zlib123/deflate.h create mode 100644 Libraries/zlib123/inffast.cpp create mode 100644 Libraries/zlib123/inffast.h create mode 100644 Libraries/zlib123/inffixed.h create mode 100644 Libraries/zlib123/inflate.cpp create mode 100644 Libraries/zlib123/inflate.h create mode 100644 Libraries/zlib123/inftrees.cpp create mode 100644 Libraries/zlib123/inftrees.h create mode 100644 Libraries/zlib123/trees.cpp create mode 100644 Libraries/zlib123/trees.h create mode 100644 Libraries/zlib123/uncompr.cpp create mode 100644 Libraries/zlib123/zconf.h create mode 100644 Libraries/zlib123/zconf.in.h create mode 100644 Libraries/zlib123/zlib.h create mode 100644 Libraries/zlib123/zutil.cpp create mode 100644 Libraries/zlib123/zutil.h create mode 100644 README.images/screen1.png create mode 100644 README.images/screen2.png create mode 100644 README.images/screen3.png create mode 100644 README.images/screen4.png create mode 100644 README.images/screen5.png create mode 100644 kegs/Console/config_kegs.cpp create mode 100644 kegs/Dummy/joystick_dummy.cpp create mode 100644 kegs/Dummy/sounddriver_dummy.cpp create mode 100644 kegs/OSX/2mg.icns create mode 100644 kegs/OSX/525.icns create mode 100644 kegs/OSX/macdriver_activegs.cpp create mode 100644 kegs/OSX/macdriver_generic.cpp create mode 100644 kegs/OSX/macdriver_kegs.cpp create mode 100644 kegs/OSX/macsnd_driver.cpp create mode 100644 kegs/OSX/scc_macdriver.cpp create mode 100644 kegs/Src/16inst_c.h create mode 100644 kegs/Src/8inst_c.h create mode 100644 kegs/Src/GraphCounter.cpp create mode 100644 kegs/Src/SaveState.cpp create mode 100644 kegs/Src/SaveState.h create mode 100644 kegs/Src/StdString.h create mode 100644 kegs/Src/adb.cpp create mode 100644 kegs/Src/adb.h create mode 100644 kegs/Src/async_event.cpp create mode 100644 kegs/Src/async_event.h create mode 100644 kegs/Src/clock.cpp create mode 100644 kegs/Src/clock.h create mode 100644 kegs/Src/compile_time.cpp create mode 100644 kegs/Src/compression.cpp create mode 100644 kegs/Src/compression.h create mode 100644 kegs/Src/config.h create mode 100644 kegs/Src/config_generic.cpp create mode 100644 kegs/Src/defc.h create mode 100644 kegs/Src/defcomm.h create mode 100644 kegs/Src/defs.h create mode 100644 kegs/Src/defs_instr.h create mode 100644 kegs/Src/dis.cpp create mode 100644 kegs/Src/disas.h create mode 100644 kegs/Src/driver.cpp create mode 100644 kegs/Src/driver.h create mode 100644 kegs/Src/engine_c.cpp create mode 100644 kegs/Src/graphcounter.h create mode 100644 kegs/Src/iwm.cpp create mode 100644 kegs/Src/iwm.h create mode 100644 kegs/Src/iwm_35_525.h create mode 100644 kegs/Src/kegsfont.h create mode 100644 kegs/Src/kegsversion.h create mode 100644 kegs/Src/marinetti.cpp create mode 100644 kegs/Src/marinetti.h create mode 100644 kegs/Src/marinetti_helper.cpp create mode 100644 kegs/Src/moremem.cpp create mode 100644 kegs/Src/moremem.h create mode 100644 kegs/Src/op_routs.h create mode 100644 kegs/Src/openalasync_snddriver.cpp create mode 100644 kegs/Src/paddles.cpp create mode 100644 kegs/Src/paddles.h create mode 100644 kegs/Src/prodos.h create mode 100644 kegs/Src/prodos_protos.h create mode 100644 kegs/Src/protos.h create mode 100644 kegs/Src/protos_engine_c.h create mode 100644 kegs/Src/protos_macdriver.h create mode 100644 kegs/Src/protos_macsnd_driver.h create mode 100644 kegs/Src/protos_windriver.h create mode 100644 kegs/Src/protos_xdriver.h create mode 100644 kegs/Src/raster.h create mode 100644 kegs/Src/scc.cpp create mode 100644 kegs/Src/scc.h create mode 100644 kegs/Src/scc_socket_driver.cpp create mode 100644 kegs/Src/sim65816.cpp create mode 100644 kegs/Src/sim65816.h create mode 100644 kegs/Src/size_c.h create mode 100644 kegs/Src/size_tab.h create mode 100644 kegs/Src/smartport.cpp create mode 100644 kegs/Src/sound.cpp create mode 100644 kegs/Src/sound.h create mode 100644 kegs/Src/sound_driver.cpp create mode 100644 kegs/Src/superhires.h create mode 100644 kegs/Src/video.cpp create mode 100644 kegs/Src/video.h create mode 100644 kegs/iOS/emulatorView.h create mode 100644 kegs/iOS/emulatorView.mm create mode 100644 kegs/iOS/joystick_iphone.cpp create mode 100644 kegs/iOS/zoomEmulatorView.h create mode 100644 kegs/iOS/zoomEmulatorView.mm create mode 100644 xcodebuild.h diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..21166e6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +xcuserdata/ \ No newline at end of file diff --git a/ActiveGS_iOS/Default-568h@2x.png b/ActiveGS_iOS/Default-568h@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..94cb7e84117af50944abdd781bd60b3849a6276f GIT binary patch literal 11744 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 Yrw2B8dW%Q?_pw1iMpe2>(k$fv0ANQI1poj5 literal 0 HcmV?d00001 diff --git a/ActiveGS_iOS/Default.png b/ActiveGS_iOS/Default.png new file mode 100644 index 0000000000000000000000000000000000000000..94cb7e84117af50944abdd781bd60b3849a6276f GIT binary patch literal 11744 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 Yrw2B8dW%Q?_pw1iMpe2>(k$fv0ANQI1poj5 literal 0 HcmV?d00001 diff --git a/ActiveGS_iOS/Entitlements.plist b/ActiveGS_iOS/Entitlements.plist new file mode 100644 index 0000000..5d8d603 --- /dev/null +++ b/ActiveGS_iOS/Entitlements.plist @@ -0,0 +1,10 @@ + + + + + application-identifier + SQ9T3Q7RV4.com.freetoolsassociation.activegs + get-task-allow + + + diff --git a/ActiveGS_iOS/Resources-iPad/MainWindow-iPad.xib b/ActiveGS_iOS/Resources-iPad/MainWindow-iPad.xib new file mode 100644 index 0000000..5dcbd05 --- /dev/null +++ b/ActiveGS_iOS/Resources-iPad/MainWindow-iPad.xib @@ -0,0 +1,455 @@ + + + + 1056 + 10F569 + 804 + 1038.29 + 461.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 131 + + + YES + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + YES + + YES + + + YES + + + + YES + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + IBIPadFramework + + + activegsViewController + + 1 + + IBIPadFramework + NO + + + + 292 + {768, 1004} + + 1 + MSAxIDEAA + + NO + NO + + 2 + + IBIPadFramework + YES + + + + + YES + + + delegate + + + + 4 + + + + viewController + + + + 11 + + + + window + + + + 14 + + + + + YES + + 0 + + + + + + -1 + + + File's Owner + + + 3 + + + activegs App Delegate + + + -2 + + + + + 10 + + + + + 12 + + + + + + + YES + + YES + -1.CustomClassName + -2.CustomClassName + 10.CustomClassName + 10.IBEditorWindowLastContentRect + 10.IBPluginDependency + 12.IBEditorWindowLastContentRect + 12.IBLastUsedUIStatusBarStylesToTargetRuntimesMap + 12.IBPluginDependency + 3.CustomClassName + 3.IBPluginDependency + + + YES + UIApplication + UIResponder + activegsViewController + {{512, 351}, {320, 480}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + {{525, 346}, {320, 480}} + + IBCocoaTouchFramework + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + activegsAppDelegate + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 14 + + + + YES + + activegsAppDelegate + NSObject + + YES + + YES + viewController + window + + + YES + activegsViewController + UIWindow + + + + YES + + YES + viewController + window + + + YES + + viewController + activegsViewController + + + window + UIWindow + + + + + IBProjectSource + Classes/activegsAppDelegate.h + + + + activegsAppDelegate + NSObject + + IBUserSource + + + + + activegsViewController + UIViewController + + IBProjectSource + Classes/activegsViewController.h + + + + + YES + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSNetServices.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSPort.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSStream.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSXMLParser.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIAccessibility.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UINibLoading.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIResponder.h + + + + UIApplication + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIApplication.h + + + + UIResponder + NSObject + + + + UISearchBar + UIView + + IBFrameworkSource + UIKit.framework/Headers/UISearchBar.h + + + + UISearchDisplayController + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UISearchDisplayController.h + + + + UIView + + IBFrameworkSource + UIKit.framework/Headers/UITextField.h + + + + UIView + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIView.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UINavigationController.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UITabBarController.h + + + + UIViewController + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIViewController.h + + + + UIWindow + UIView + + IBFrameworkSource + UIKit.framework/Headers/UIWindow.h + + + + + 0 + IBIPadFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + activegs.xcodeproj + 3 + 131 + + diff --git a/ActiveGS_iOS/activegs.plist b/ActiveGS_iOS/activegs.plist new file mode 100644 index 0000000..e07b1ad --- /dev/null +++ b/ActiveGS_iOS/activegs.plist @@ -0,0 +1,46 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleDisplayName + ActiveGS + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFiles + + icon.png + icon72.png + icon@2x.png + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ActiveGS + CFBundlePackageType + APPL + CFBundleShortVersionString + + CFBundleSignature + ???? + CFBundleVersion + 1.40 + LSRequiresIPhoneOS + + UIAppFonts + + ShastonHi640.ttf + + UIFileSharingEnabled + + UIStatusBarHidden + + UIStatusBarHidden~ipad + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/ActiveGS_iOS/activegs.xcodeproj/project.pbxproj b/ActiveGS_iOS/activegs.xcodeproj/project.pbxproj new file mode 100644 index 0000000..ee361d3 --- /dev/null +++ b/ActiveGS_iOS/activegs.xcodeproj/project.pbxproj @@ -0,0 +1,1582 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 0902FEC812820467002E7C03 /* Tab2GS.png in Resources */ = {isa = PBXBuildFile; fileRef = 0902FEC712820467002E7C03 /* Tab2GS.png */; }; + 0902FEE712820626002E7C03 /* TabFTA@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0902FEE612820626002E7C03 /* TabFTA@2x.png */; }; + 0902FEEF12820678002E7C03 /* TabFTA.png in Resources */ = {isa = PBXBuildFile; fileRef = 0902FEEE12820678002E7C03 /* TabFTA.png */; }; + 09052B7719053C9F00853FAE /* png.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B4419053C9F00853FAE /* png.cpp */; }; + 09052B7819053C9F00853FAE /* pngerror.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B4719053C9F00853FAE /* pngerror.cpp */; }; + 09052B7919053C9F00853FAE /* pnggccrd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B4819053C9F00853FAE /* pnggccrd.cpp */; }; + 09052B7A19053C9F00853FAE /* pngget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B4919053C9F00853FAE /* pngget.cpp */; }; + 09052B7B19053C9F00853FAE /* pngmem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B4A19053C9F00853FAE /* pngmem.cpp */; }; + 09052B7C19053C9F00853FAE /* pngpread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B4B19053C9F00853FAE /* pngpread.cpp */; }; + 09052B7D19053C9F00853FAE /* pngread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B4C19053C9F00853FAE /* pngread.cpp */; }; + 09052B7E19053C9F00853FAE /* pngrio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B4D19053C9F00853FAE /* pngrio.cpp */; }; + 09052B7F19053C9F00853FAE /* pngrtran.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B4E19053C9F00853FAE /* pngrtran.cpp */; }; + 09052B8019053C9F00853FAE /* pngrutil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B4F19053C9F00853FAE /* pngrutil.cpp */; }; + 09052B8119053C9F00853FAE /* pngset.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B5019053C9F00853FAE /* pngset.cpp */; }; + 09052B8219053C9F00853FAE /* pngtrans.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B5119053C9F00853FAE /* pngtrans.cpp */; }; + 09052B8319053C9F00853FAE /* pngvcrd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B5219053C9F00853FAE /* pngvcrd.cpp */; }; + 09052B8419053C9F00853FAE /* pngwio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B5319053C9F00853FAE /* pngwio.cpp */; }; + 09052B8519053C9F00853FAE /* pngwrite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B5419053C9F00853FAE /* pngwrite.cpp */; }; + 09052B8619053C9F00853FAE /* pngwtran.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B5519053C9F00853FAE /* pngwtran.cpp */; }; + 09052B8719053C9F00853FAE /* pngwutil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B5619053C9F00853FAE /* pngwutil.cpp */; }; + 09052B8819053C9F00853FAE /* ioapi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B5919053C9F00853FAE /* ioapi.cpp */; }; + 09052B8919053C9F00853FAE /* iowin32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B5B19053C9F00853FAE /* iowin32.cpp */; }; + 09052B8A19053C9F00853FAE /* unzip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B5D19053C9F00853FAE /* unzip.cpp */; }; + 09052B8B19053C9F00853FAE /* zip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B5F19053C9F00853FAE /* zip.cpp */; }; + 09052B8C19053C9F00853FAE /* adler32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B6219053C9F00853FAE /* adler32.cpp */; }; + 09052B8D19053C9F00853FAE /* compress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B6319053C9F00853FAE /* compress.cpp */; }; + 09052B8E19053C9F00853FAE /* crc32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B6419053C9F00853FAE /* crc32.cpp */; }; + 09052B8F19053C9F00853FAE /* deflate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B6619053C9F00853FAE /* deflate.cpp */; }; + 09052B9019053C9F00853FAE /* inffast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B6819053C9F00853FAE /* inffast.cpp */; }; + 09052B9119053C9F00853FAE /* inflate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B6B19053C9F00853FAE /* inflate.cpp */; }; + 09052B9219053C9F00853FAE /* inftrees.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B6D19053C9F00853FAE /* inftrees.cpp */; }; + 09052B9319053C9F00853FAE /* trees.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B6F19053C9F00853FAE /* trees.cpp */; }; + 09052B9419053C9F00853FAE /* uncompr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B7119053C9F00853FAE /* uncompr.cpp */; }; + 09052B9519053C9F00853FAE /* zutil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09052B7519053C9F00853FAE /* zutil.cpp */; }; + 0905905213A76C23006E67D7 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0905905113A76C23006E67D7 /* AudioToolbox.framework */; }; + 0907BCC9142F567A0051CA0A /* asynccommand.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0907BCC8142F567A0051CA0A /* asynccommand.mm */; }; + 09087F3A12244C0500C52D88 /* delta_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 09087F2B12244C0500C52D88 /* delta_1.png */; }; + 09087F3B12244C0500C52D88 /* delta_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 09087F2C12244C0500C52D88 /* delta_2.png */; }; + 09087F3C12244C0500C52D88 /* delta_3.png in Resources */ = {isa = PBXBuildFile; fileRef = 09087F2D12244C0500C52D88 /* delta_3.png */; }; + 09087F3D12244C0500C52D88 /* delta_4.png in Resources */ = {isa = PBXBuildFile; fileRef = 09087F2E12244C0500C52D88 /* delta_4.png */; }; + 09087F3E12244C0500C52D88 /* delta_5.png in Resources */ = {isa = PBXBuildFile; fileRef = 09087F2F12244C0500C52D88 /* delta_5.png */; }; + 09087F3F12244C0500C52D88 /* delta_6.png in Resources */ = {isa = PBXBuildFile; fileRef = 09087F3012244C0500C52D88 /* delta_6.png */; }; + 09087F4012244C0500C52D88 /* delta_7.png in Resources */ = {isa = PBXBuildFile; fileRef = 09087F3112244C0500C52D88 /* delta_7.png */; }; + 09087F4312244C0500C52D88 /* photonix_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 09087F3412244C0500C52D88 /* photonix_1.png */; }; + 09087F4412244C0500C52D88 /* photonix_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 09087F3512244C0500C52D88 /* photonix_2.png */; }; + 09087F4612244C0500C52D88 /* thumb_delta.png in Resources */ = {isa = PBXBuildFile; fileRef = 09087F3712244C0500C52D88 /* thumb_delta.png */; }; + 09087F4712244C0500C52D88 /* thumb_gsos.png in Resources */ = {isa = PBXBuildFile; fileRef = 09087F3812244C0500C52D88 /* thumb_gsos.png */; }; + 09087F4812244C0500C52D88 /* thumb_photonix.png in Resources */ = {isa = PBXBuildFile; fileRef = 09087F3912244C0500C52D88 /* thumb_photonix.png */; }; + 090A6077163093D800C8FB59 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 090A6076163093D800C8FB59 /* Default-568h@2x.png */; }; + 090E7BD6123F965F003EE2C3 /* poms_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 090E7BCF123F965F003EE2C3 /* poms_1.png */; }; + 090E7BD7123F965F003EE2C3 /* poms_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 090E7BD0123F965F003EE2C3 /* poms_2.png */; }; + 090E7BD8123F965F003EE2C3 /* poms_3.png in Resources */ = {isa = PBXBuildFile; fileRef = 090E7BD1123F965F003EE2C3 /* poms_3.png */; }; + 090E7BD9123F965F003EE2C3 /* poms_4.png in Resources */ = {isa = PBXBuildFile; fileRef = 090E7BD2123F965F003EE2C3 /* poms_4.png */; }; + 090E7BDA123F965F003EE2C3 /* poms_5.png in Resources */ = {isa = PBXBuildFile; fileRef = 090E7BD3123F965F003EE2C3 /* poms_5.png */; }; + 090E7BDB123F965F003EE2C3 /* poms_6.png in Resources */ = {isa = PBXBuildFile; fileRef = 090E7BD4123F965F003EE2C3 /* poms_6.png */; }; + 090E7BDE123F966C003EE2C3 /* thumb_poms.png in Resources */ = {isa = PBXBuildFile; fileRef = 090E7BDD123F966C003EE2C3 /* thumb_poms.png */; }; + 0916BB04129473CE001727AF /* infoViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0916BB03129473CE001727AF /* infoViewController-ipad.xib */; }; + 0941E66E1670E086003E0411 /* NUCLEUS.FTA in Resources */ = {isa = PBXBuildFile; fileRef = 0941E66D1670E086003E0411 /* NUCLEUS.FTA */; }; + 0941E6701670E143003E0411 /* DELTA.FTA in Resources */ = {isa = PBXBuildFile; fileRef = 0941E66F1670E143003E0411 /* DELTA.FTA */; }; + 0941E6721670E23F003E0411 /* PHOTONIX.FTA in Resources */ = {isa = PBXBuildFile; fileRef = 0941E6711670E23F003E0411 /* PHOTONIX.FTA */; }; + 0941E6751670E391003E0411 /* BOUNCIN_FERNO.FTA in Resources */ = {isa = PBXBuildFile; fileRef = 0941E6731670E391003E0411 /* BOUNCIN_FERNO.FTA */; }; + 0941E6761670E391003E0411 /* MINIPRIX.FTA in Resources */ = {isa = PBXBuildFile; fileRef = 0941E6741670E391003E0411 /* MINIPRIX.FTA */; }; + 0941E6AB16720840003E0411 /* ActiveGSList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0941E6A916720840003E0411 /* ActiveGSList.cpp */; }; + 0941E6AF16720886003E0411 /* simplexml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0941E6AD16720886003E0411 /* simplexml.cpp */; }; + 095036E519054799006A457A /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 095036E419054799006A457A /* CoreData.framework */; }; + 095036E7190547A0006A457A /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 095036E6190547A0006A457A /* AdSupport.framework */; }; + 095036E9190547BE006A457A /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 095036E8190547BE006A457A /* CoreLocation.framework */; }; + 09520D8316AEF8130065E84A /* driver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09520D8116AEF8130065E84A /* driver.cpp */; }; + 09520D8916AEF8250065E84A /* activegs_driver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09520D8616AEF8250065E84A /* activegs_driver.cpp */; }; + 09520D8E16AEF8650065E84A /* apple2e.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09520D8C16AEF8650065E84A /* apple2e.cpp */; }; + 0955429F12836F4D0035AE09 /* Tab2GS@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0955429E12836F4D0035AE09 /* Tab2GS@2x.png */; }; + 095542A8128375C40035AE09 /* Tab][.png in Resources */ = {isa = PBXBuildFile; fileRef = 095542A6128375C40035AE09 /* Tab][.png */; }; + 095542A9128375C40035AE09 /* Tab][@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 095542A7128375C40035AE09 /* Tab][@2x.png */; }; + 09712D82133B66E4007AAADF /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09712D81133B66E4007AAADF /* SystemConfiguration.framework */; }; + 09712D86133B66F0007AAADF /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09712D85133B66F0007AAADF /* CoreTelephony.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; + 0971D931126E4BE500EEBB1E /* icon72.png in Resources */ = {isa = PBXBuildFile; fileRef = 0971D930126E4BE500EEBB1E /* icon72.png */; }; + 0972554713CF2232006194F9 /* activegsEmulatorController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0972554613CF2232006194F9 /* activegsEmulatorController.mm */; }; + 0982685E124028E00064F134 /* icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 0982685C124028E00064F134 /* icon.png */; }; + 0982685F124028E00064F134 /* icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0982685D124028E00064F134 /* icon@2x.png */; }; + 099B5B8111F62D4900E597B6 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 099B5B8011F62D4900E597B6 /* QuartzCore.framework */; }; + 099CD905125E6F6E008EFD6C /* detailViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 099CD904125E6F6E008EFD6C /* detailViewController.xib */; }; + 09A5CE60125D41860018DC22 /* infoViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 09A5CE5F125D41860018DC22 /* infoViewController.mm */; }; + 09A5CE76125D422D0018DC22 /* infoViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 09A5CE75125D422D0018DC22 /* infoViewController.xib */; }; + 09AADC78125C560A00654DF1 /* detailViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 09AADC77125C560A00654DF1 /* detailViewController.mm */; }; + 09AB6C11123EE1AE00816DB7 /* bouncinferno_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 09AB6C09123EE1AE00816DB7 /* bouncinferno_1.png */; }; + 09AB6C12123EE1AE00816DB7 /* bouncinferno_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 09AB6C0A123EE1AE00816DB7 /* bouncinferno_2.png */; }; + 09AB6C13123EE1AE00816DB7 /* bouncinferno_3.png in Resources */ = {isa = PBXBuildFile; fileRef = 09AB6C0B123EE1AE00816DB7 /* bouncinferno_3.png */; }; + 09AB6C14123EE1AE00816DB7 /* bouncinferno_4.png in Resources */ = {isa = PBXBuildFile; fileRef = 09AB6C0C123EE1AE00816DB7 /* bouncinferno_4.png */; }; + 09AB6C15123EE1AE00816DB7 /* bouncinferno_5.png in Resources */ = {isa = PBXBuildFile; fileRef = 09AB6C0D123EE1AE00816DB7 /* bouncinferno_5.png */; }; + 09AB6C16123EE1AE00816DB7 /* bouncinferno_6.png in Resources */ = {isa = PBXBuildFile; fileRef = 09AB6C0E123EE1AE00816DB7 /* bouncinferno_6.png */; }; + 09AB6C17123EE1AE00816DB7 /* bouncinferno_7.png in Resources */ = {isa = PBXBuildFile; fileRef = 09AB6C0F123EE1AE00816DB7 /* bouncinferno_7.png */; }; + 09AB6C19123EE1BA00816DB7 /* harrier1.png in Resources */ = {isa = PBXBuildFile; fileRef = 09AB6C18123EE1BA00816DB7 /* harrier1.png */; }; + 09AB6C1D123EE1CB00816DB7 /* SPACE_HARRIER.FTA in Resources */ = {isa = PBXBuildFile; fileRef = 09AB6C1A123EE1CB00816DB7 /* SPACE_HARRIER.FTA */; }; + 09AB6C1E123EE1CB00816DB7 /* thumb_bouncinferno.png in Resources */ = {isa = PBXBuildFile; fileRef = 09AB6C1B123EE1CB00816DB7 /* thumb_bouncinferno.png */; }; + 09AB6C1F123EE1CB00816DB7 /* thumb_harrier.png in Resources */ = {isa = PBXBuildFile; fileRef = 09AB6C1C123EE1CB00816DB7 /* thumb_harrier.png */; }; + 09AB6C25123EE2FA00816DB7 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 09AB6C24123EE2FA00816DB7 /* Default.png */; }; + 09AF98051283F0DF00083D60 /* Oil_Landers.fta in Resources */ = {isa = PBXBuildFile; fileRef = 09AF98041283F0DF00083D60 /* Oil_Landers.fta */; }; + 09AF980C1283F12200083D60 /* StarWizard (2002).fta in Resources */ = {isa = PBXBuildFile; fileRef = 09AF98061283F12200083D60 /* StarWizard (2002).fta */; }; + 09AF980D1283F12200083D60 /* starwizard_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 09AF98071283F12200083D60 /* starwizard_2.png */; }; + 09AF980E1283F12200083D60 /* starwizard_3.png in Resources */ = {isa = PBXBuildFile; fileRef = 09AF98081283F12200083D60 /* starwizard_3.png */; }; + 09AF980F1283F12200083D60 /* starwizard_4.png in Resources */ = {isa = PBXBuildFile; fileRef = 09AF98091283F12200083D60 /* starwizard_4.png */; }; + 09AF98101283F12200083D60 /* starwizard_5.png in Resources */ = {isa = PBXBuildFile; fileRef = 09AF980A1283F12200083D60 /* starwizard_5.png */; }; + 09AF98111283F12200083D60 /* starwizard.png in Resources */ = {isa = PBXBuildFile; fileRef = 09AF980B1283F12200083D60 /* starwizard.png */; }; + 09BB434511D92F65005ADA46 /* ActiveDownloadMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09BB434111D92F65005ADA46 /* ActiveDownloadMac.cpp */; }; + 09BB434711D92F65005ADA46 /* CEmulatorCtrlMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09BB434311D92F65005ADA46 /* CEmulatorCtrlMac.cpp */; }; + 09BB43B011D92F70005ADA46 /* activeconfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09BB438111D92F70005ADA46 /* activeconfig.cpp */; }; + 09BB43B111D92F70005ADA46 /* ActiveDownload.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09BB438211D92F70005ADA46 /* ActiveDownload.cpp */; }; + 09BB43B211D92F70005ADA46 /* ActiveZip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09BB438411D92F70005ADA46 /* ActiveZip.cpp */; }; + 09BB43B311D92F70005ADA46 /* CA2Text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09BB438511D92F70005ADA46 /* CA2Text.cpp */; }; + 09BB43B411D92F70005ADA46 /* CEmulatorCtrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09BB438611D92F70005ADA46 /* CEmulatorCtrl.cpp */; }; + 09BB43B511D92F70005ADA46 /* interface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09BB438811D92F70005ADA46 /* interface.cpp */; }; + 09BB43B611D92F70005ADA46 /* libpng.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09BB438A11D92F70005ADA46 /* libpng.cpp */; }; + 09BB43B711D92F70005ADA46 /* rom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09BB438B11D92F70005ADA46 /* rom.cpp */; }; + 09BB43DC11D93063005ADA46 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09BB43DB11D93063005ADA46 /* OpenAL.framework */; }; + 09BB43E311D93087005ADA46 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09BB43E211D93087005ADA46 /* CFNetwork.framework */; }; + 09BCB6281211649D009858DF /* flobynoid (2002).dsk.zip in Resources */ = {isa = PBXBuildFile; fileRef = 09BCB6271211649D009858DF /* flobynoid (2002).dsk.zip */; }; + 09C81A781657ACAE008539D5 /* adb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A391657ACAE008539D5 /* adb.cpp */; }; + 09C81A791657ACAE008539D5 /* async_event.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A3B1657ACAE008539D5 /* async_event.cpp */; }; + 09C81A7A1657ACAE008539D5 /* clock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A3D1657ACAE008539D5 /* clock.cpp */; }; + 09C81A7B1657ACAE008539D5 /* compile_time.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A3F1657ACAE008539D5 /* compile_time.cpp */; }; + 09C81A7C1657ACAE008539D5 /* compression.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A401657ACAE008539D5 /* compression.cpp */; }; + 09C81A7D1657ACAE008539D5 /* config_generic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A431657ACAE008539D5 /* config_generic.cpp */; }; + 09C81A7F1657ACAE008539D5 /* dis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A491657ACAE008539D5 /* dis.cpp */; }; + 09C81A801657ACAE008539D5 /* engine_c.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A4B1657ACAE008539D5 /* engine_c.cpp */; }; + 09C81A811657ACAE008539D5 /* GraphCounter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A4C1657ACAE008539D5 /* GraphCounter.cpp */; }; + 09C81A821657ACAE008539D5 /* iwm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A4E1657ACAE008539D5 /* iwm.cpp */; }; + 09C81A831657ACAE008539D5 /* marinetti.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A531657ACAE008539D5 /* marinetti.cpp */; }; + 09C81A841657ACAE008539D5 /* marinetti_helper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A551657ACAE008539D5 /* marinetti_helper.cpp */; }; + 09C81A851657ACAE008539D5 /* moremem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A561657ACAE008539D5 /* moremem.cpp */; }; + 09C81A861657ACAE008539D5 /* openalasync_snddriver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A591657ACAE008539D5 /* openalasync_snddriver.cpp */; }; + 09C81A871657ACAE008539D5 /* paddles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A5A1657ACAE008539D5 /* paddles.cpp */; }; + 09C81A881657ACAE008539D5 /* SaveState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A651657ACAE008539D5 /* SaveState.cpp */; }; + 09C81A891657ACAE008539D5 /* scc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A671657ACAE008539D5 /* scc.cpp */; }; + 09C81A8A1657ACAE008539D5 /* scc_socket_driver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A691657ACAE008539D5 /* scc_socket_driver.cpp */; }; + 09C81A8B1657ACAE008539D5 /* sim65816.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A6A1657ACAE008539D5 /* sim65816.cpp */; }; + 09C81A8C1657ACAE008539D5 /* smartport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A6F1657ACAE008539D5 /* smartport.cpp */; }; + 09C81A8D1657ACAE008539D5 /* sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A701657ACAE008539D5 /* sound.cpp */; }; + 09C81A8E1657ACAE008539D5 /* sound_driver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A721657ACAE008539D5 /* sound_driver.cpp */; }; + 09C81A901657ACAE008539D5 /* video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A761657ACAE008539D5 /* video.cpp */; }; + 09C81A991657ACDD008539D5 /* 2mg.icns in Resources */ = {isa = PBXBuildFile; fileRef = 09C81A921657ACDC008539D5 /* 2mg.icns */; }; + 09C81A9A1657ACDD008539D5 /* 525.icns in Resources */ = {isa = PBXBuildFile; fileRef = 09C81A931657ACDC008539D5 /* 525.icns */; }; + 09C81A9B1657ACDD008539D5 /* macdriver_activegs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A941657ACDC008539D5 /* macdriver_activegs.cpp */; }; + 09C81A9C1657ACDD008539D5 /* macdriver_generic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A951657ACDC008539D5 /* macdriver_generic.cpp */; }; + 09C81A9F1657ACDD008539D5 /* scc_macdriver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81A981657ACDC008539D5 /* scc_macdriver.cpp */; }; + 09C81AA71657AD18008539D5 /* emulatorView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 09C81AA21657AD18008539D5 /* emulatorView.mm */; }; + 09C81AA81657AD18008539D5 /* joystick_iphone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 09C81AA31657AD18008539D5 /* joystick_iphone.cpp */; }; + 09C81AA91657AD18008539D5 /* zoomEmulatorView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 09C81AA61657AD18008539D5 /* zoomEmulatorView.mm */; }; + 09D8BCF91285EFE900B6D785 /* miniprix_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 09D8BCF81285EFE900B6D785 /* miniprix_1.png */; }; + 09D8BCFC1285EFFA00B6D785 /* miniprix_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 09D8BCFA1285EFFA00B6D785 /* miniprix_2.png */; }; + 09D8BCFD1285EFFA00B6D785 /* miniprix_3.png in Resources */ = {isa = PBXBuildFile; fileRef = 09D8BCFB1285EFFA00B6D785 /* miniprix_3.png */; }; + 09D8BD031285F00C00B6D785 /* oillanders_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 09D8BCFE1285F00C00B6D785 /* oillanders_1.png */; }; + 09D8BD041285F00C00B6D785 /* oillanders_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 09D8BCFF1285F00C00B6D785 /* oillanders_2.png */; }; + 09D8BD051285F00C00B6D785 /* oillanders_3.png in Resources */ = {isa = PBXBuildFile; fileRef = 09D8BD001285F00C00B6D785 /* oillanders_3.png */; }; + 09D8BD061285F00C00B6D785 /* oillanders_4.png in Resources */ = {isa = PBXBuildFile; fileRef = 09D8BD011285F00C00B6D785 /* oillanders_4.png */; }; + 09D8BD071285F00C00B6D785 /* oillanders_5.png in Resources */ = {isa = PBXBuildFile; fileRef = 09D8BD021285F00C00B6D785 /* oillanders_5.png */; }; + 09E7BE0F11FC935E00DCCFE7 /* floby1.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDE411FC935E00DCCFE7 /* floby1.png */; }; + 09E7BE1011FC935E00DCCFE7 /* floby2.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDE511FC935E00DCCFE7 /* floby2.png */; }; + 09E7BE1111FC935E00DCCFE7 /* floby3.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDE611FC935E00DCCFE7 /* floby3.png */; }; + 09E7BE1311FC935E00DCCFE7 /* list.activegsxml in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDE811FC935E00DCCFE7 /* list.activegsxml */; }; + 09E7BE1411FC935E00DCCFE7 /* MODULAE.FTA in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDE911FC935E00DCCFE7 /* MODULAE.FTA */; }; + 09E7BE1511FC935E00DCCFE7 /* modulae_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDEA11FC935E00DCCFE7 /* modulae_1.png */; }; + 09E7BE1611FC935E00DCCFE7 /* modulae_10.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDEB11FC935E00DCCFE7 /* modulae_10.png */; }; + 09E7BE1711FC935E00DCCFE7 /* modulae_11.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDEC11FC935E00DCCFE7 /* modulae_11.png */; }; + 09E7BE1811FC935E00DCCFE7 /* modulae_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDED11FC935E00DCCFE7 /* modulae_2.png */; }; + 09E7BE1911FC935E00DCCFE7 /* modulae_3.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDEE11FC935E00DCCFE7 /* modulae_3.png */; }; + 09E7BE1A11FC935E00DCCFE7 /* modulae_4.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDEF11FC935E00DCCFE7 /* modulae_4.png */; }; + 09E7BE1B11FC935E00DCCFE7 /* modulae_5.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDF011FC935E00DCCFE7 /* modulae_5.png */; }; + 09E7BE1C11FC935E00DCCFE7 /* modulae_6.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDF111FC935E00DCCFE7 /* modulae_6.png */; }; + 09E7BE1D11FC935E00DCCFE7 /* modulae_7.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDF211FC935E00DCCFE7 /* modulae_7.png */; }; + 09E7BE1E11FC935E00DCCFE7 /* modulae_8.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDF311FC935E00DCCFE7 /* modulae_8.png */; }; + 09E7BE1F11FC935E00DCCFE7 /* modulae_9.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDF411FC935E00DCCFE7 /* modulae_9.png */; }; + 09E7BE2011FC935E00DCCFE7 /* NOISETRACKER.FTA in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDF511FC935E00DCCFE7 /* NOISETRACKER.FTA */; }; + 09E7BE2111FC935E00DCCFE7 /* noisetracker_0.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDF611FC935E00DCCFE7 /* noisetracker_0.png */; }; + 09E7BE2211FC935E00DCCFE7 /* noisetracker_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDF711FC935E00DCCFE7 /* noisetracker_1.png */; }; + 09E7BE2311FC935E00DCCFE7 /* noisetracker_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDF811FC935E00DCCFE7 /* noisetracker_2.png */; }; + 09E7BE2411FC935E00DCCFE7 /* noisetracker_3.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDF911FC935E00DCCFE7 /* noisetracker_3.png */; }; + 09E7BE2611FC935E00DCCFE7 /* nucleus.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDFB11FC935E00DCCFE7 /* nucleus.png */; }; + 09E7BE2711FC935E00DCCFE7 /* nucleus_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDFC11FC935E00DCCFE7 /* nucleus_2.png */; }; + 09E7BE2811FC935E00DCCFE7 /* nucleus_c.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDFD11FC935E00DCCFE7 /* nucleus_c.png */; }; + 09E7BE2911FC935E00DCCFE7 /* nucleus_t.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BDFE11FC935E00DCCFE7 /* nucleus_t.png */; }; + 09E7BE2B11FC935E00DCCFE7 /* thumb_floby.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BE0011FC935E00DCCFE7 /* thumb_floby.png */; }; + 09E7BE2C11FC935E00DCCFE7 /* thumb_system6.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BE0111FC935E00DCCFE7 /* thumb_system6.png */; }; + 09E7BE2D11FC935E00DCCFE7 /* thumb_modulae.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BE0211FC935E00DCCFE7 /* thumb_modulae.png */; }; + 09E7BE2E11FC935E00DCCFE7 /* thumb_noisetracker.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BE0311FC935E00DCCFE7 /* thumb_noisetracker.png */; }; + 09E7BE2F11FC935E00DCCFE7 /* thumb_nucleus.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BE0411FC935E00DCCFE7 /* thumb_nucleus.png */; }; + 09E7BE3011FC935E00DCCFE7 /* thumb_xmas.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BE0511FC935E00DCCFE7 /* thumb_xmas.png */; }; + 09E7BE3111FC935E00DCCFE7 /* xmas_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BE0611FC935E00DCCFE7 /* xmas_1.png */; }; + 09E7BE3211FC935E00DCCFE7 /* xmas_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BE0711FC935E00DCCFE7 /* xmas_2.png */; }; + 09E7BE3311FC935E00DCCFE7 /* xmas_3.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BE0811FC935E00DCCFE7 /* xmas_3.png */; }; + 09E7BE3411FC935E00DCCFE7 /* xmas_4.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BE0911FC935E00DCCFE7 /* xmas_4.png */; }; + 09E7BE3511FC935E00DCCFE7 /* xmas_5.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BE0A11FC935E00DCCFE7 /* xmas_5.png */; }; + 09E7BE3611FC935E00DCCFE7 /* xmas_6.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BE0B11FC935E00DCCFE7 /* xmas_6.png */; }; + 09E7BE3711FC935E00DCCFE7 /* xmas_7.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BE0C11FC935E00DCCFE7 /* xmas_7.png */; }; + 09E7BE3811FC935E00DCCFE7 /* xmas_8.png in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BE0D11FC935E00DCCFE7 /* xmas_8.png */; }; + 09E7BE3911FC935E00DCCFE7 /* XMASDEMO.FTA in Resources */ = {isa = PBXBuildFile; fileRef = 09E7BE0E11FC935E00DCCFE7 /* XMASDEMO.FTA */; }; + 09FA6095125A7B3E00B07F77 /* activegsAppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 09FA607A125A7B3E00B07F77 /* activegsAppDelegate.mm */; }; + 09FA6096125A7B3E00B07F77 /* activegsList.mm in Sources */ = {isa = PBXBuildFile; fileRef = 09FA607C125A7B3E00B07F77 /* activegsList.mm */; }; + 09FA6097125A7B3E00B07F77 /* activegsViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 09FA607E125A7B3E00B07F77 /* activegsViewController.mm */; }; + 09FA6098125A7B3E00B07F77 /* activegsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 09FA607F125A7B3E00B07F77 /* activegsViewController.xib */; }; + 09FA609A125A7B3E00B07F77 /* asyncimageview.mm in Sources */ = {isa = PBXBuildFile; fileRef = 09FA6083125A7B3E00B07F77 /* asyncimageview.mm */; }; + 09FA609C125A7B3E00B07F77 /* GTMUIView+SubtreeDescription.m in Sources */ = {isa = PBXBuildFile; fileRef = 09FA6087125A7B3E00B07F77 /* GTMUIView+SubtreeDescription.m */; }; + 09FA609D125A7B3E00B07F77 /* icon_APPLE 2.png in Resources */ = {isa = PBXBuildFile; fileRef = 09FA6088125A7B3E00B07F77 /* icon_APPLE 2.png */; }; + 09FA609E125A7B3E00B07F77 /* icon_APPLE 2GS.png in Resources */ = {isa = PBXBuildFile; fileRef = 09FA6089125A7B3E00B07F77 /* icon_APPLE 2GS.png */; }; + 09FA609F125A7B3E00B07F77 /* KBDController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 09FA608B125A7B3E00B07F77 /* KBDController.mm */; }; + 09FD36F31278CCEB009C31AB /* BLUE_HELMET.FTA in Resources */ = {isa = PBXBuildFile; fileRef = 09FD36F01278CCEB009C31AB /* BLUE_HELMET.FTA */; }; + 09FD36F41278CCEB009C31AB /* bluehelmet_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 09FD36F11278CCEB009C31AB /* bluehelmet_1.png */; }; + 09FD36F51278CCEB009C31AB /* bluehelmet_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 09FD36F21278CCEB009C31AB /* bluehelmet_2.png */; }; + 1D60589B0D05DD56006BFB54 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.mm */; }; + 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; + 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; + 288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765A40DF7441C002DB57D /* CoreGraphics.framework */; }; + 7E51481F1CA6B5CE005DA0A6 /* ActiveGS.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E51480C1CA6B5CE005DA0A6 /* ActiveGS.png */; }; + 7E5148201CA6B5CE005DA0A6 /* Apple_2_Disk_Drive_Sounds.txt in Resources */ = {isa = PBXBuildFile; fileRef = 7E51480D1CA6B5CE005DA0A6 /* Apple_2_Disk_Drive_Sounds.txt */; }; + 7E5148211CA6B5CE005DA0A6 /* disk.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E51480E1CA6B5CE005DA0A6 /* disk.png */; }; + 7E5148221CA6B5CE005DA0A6 /* disk_35_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E51480F1CA6B5CE005DA0A6 /* disk_35_1.png */; }; + 7E5148231CA6B5CE005DA0A6 /* disk_35_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E5148101CA6B5CE005DA0A6 /* disk_35_2.png */; }; + 7E5148241CA6B5CE005DA0A6 /* disk_525_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E5148111CA6B5CE005DA0A6 /* disk_525_1.png */; }; + 7E5148251CA6B5CE005DA0A6 /* disk_525_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E5148121CA6B5CE005DA0A6 /* disk_525_2.png */; }; + 7E5148261CA6B5CE005DA0A6 /* facebook-logo.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E5148131CA6B5CE005DA0A6 /* facebook-logo.png */; }; + 7E5148271CA6B5CE005DA0A6 /* floppy_eject.wav in Resources */ = {isa = PBXBuildFile; fileRef = 7E5148141CA6B5CE005DA0A6 /* floppy_eject.wav */; }; + 7E5148281CA6B5CE005DA0A6 /* logo_apple2.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E5148151CA6B5CE005DA0A6 /* logo_apple2.png */; }; + 7E5148291CA6B5CE005DA0A6 /* logo_apple2gs.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E5148161CA6B5CE005DA0A6 /* logo_apple2gs.png */; }; + 7E51482A1CA6B5CE005DA0A6 /* Search Skip Search 1.wav in Resources */ = {isa = PBXBuildFile; fileRef = 7E5148171CA6B5CE005DA0A6 /* Search Skip Search 1.wav */; }; + 7E51482B1CA6B5CE005DA0A6 /* Search Skip Search 2.wav in Resources */ = {isa = PBXBuildFile; fileRef = 7E5148181CA6B5CE005DA0A6 /* Search Skip Search 2.wav */; }; + 7E51482C1CA6B5CE005DA0A6 /* Search Skip Search 3.wav in Resources */ = {isa = PBXBuildFile; fileRef = 7E5148191CA6B5CE005DA0A6 /* Search Skip Search 3.wav */; }; + 7E51482D1CA6B5CE005DA0A6 /* Search Skip Search 4.wav in Resources */ = {isa = PBXBuildFile; fileRef = 7E51481A1CA6B5CE005DA0A6 /* Search Skip Search 4.wav */; }; + 7E51482E1CA6B5CE005DA0A6 /* Search Skip Search 5.wav in Resources */ = {isa = PBXBuildFile; fileRef = 7E51481B1CA6B5CE005DA0A6 /* Search Skip Search 5.wav */; }; + 7E51482F1CA6B5CE005DA0A6 /* ShastonHi640.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7E51481C1CA6B5CE005DA0A6 /* ShastonHi640.ttf */; }; + 7E5148301CA6B5CE005DA0A6 /* Spin Up Search 1.wav in Resources */ = {isa = PBXBuildFile; fileRef = 7E51481D1CA6B5CE005DA0A6 /* Spin Up Search 1.wav */; }; + 7E5148311CA6B5CE005DA0A6 /* Spin Up Search 2.wav in Resources */ = {isa = PBXBuildFile; fileRef = 7E51481E1CA6B5CE005DA0A6 /* Spin Up Search 2.wav */; }; + 7E8EED6B1A7D83C900C6E522 /* Entitlements.plist in Resources */ = {isa = PBXBuildFile; fileRef = 7E8EED6A1A7D83C900C6E522 /* Entitlements.plist */; }; +/* End PBXBuildFile section */ + +/* Begin PBXBuildRule section */ + 095981511A3E1A2D007C90A8 /* PBXBuildRule */ = { + isa = PBXBuildRule; + compilerSpec = com.apple.compilers.proxy.script; + fileType = pattern.proxy; + isEditable = 1; + outputFiles = ( + ); + }; +/* End PBXBuildRule section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 095F842613AFDD9C009C540E /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 0902FEC712820467002E7C03 /* Tab2GS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Tab2GS.png; path = ../Common.iphone/Tab2GS.png; sourceTree = SOURCE_ROOT; }; + 0902FEE612820626002E7C03 /* TabFTA@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "TabFTA@2x.png"; path = "../Common.iphone/TabFTA@2x.png"; sourceTree = SOURCE_ROOT; }; + 0902FEEE12820678002E7C03 /* TabFTA.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TabFTA.png; path = ../Common.iphone/TabFTA.png; sourceTree = SOURCE_ROOT; }; + 09052B4419053C9F00853FAE /* png.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = png.cpp; sourceTree = ""; }; + 09052B4519053C9F00853FAE /* png.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = png.h; sourceTree = ""; }; + 09052B4619053C9F00853FAE /* pngconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pngconf.h; sourceTree = ""; }; + 09052B4719053C9F00853FAE /* pngerror.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pngerror.cpp; sourceTree = ""; }; + 09052B4819053C9F00853FAE /* pnggccrd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pnggccrd.cpp; sourceTree = ""; }; + 09052B4919053C9F00853FAE /* pngget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pngget.cpp; sourceTree = ""; }; + 09052B4A19053C9F00853FAE /* pngmem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pngmem.cpp; sourceTree = ""; }; + 09052B4B19053C9F00853FAE /* pngpread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pngpread.cpp; sourceTree = ""; }; + 09052B4C19053C9F00853FAE /* pngread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pngread.cpp; sourceTree = ""; }; + 09052B4D19053C9F00853FAE /* pngrio.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pngrio.cpp; sourceTree = ""; }; + 09052B4E19053C9F00853FAE /* pngrtran.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pngrtran.cpp; sourceTree = ""; }; + 09052B4F19053C9F00853FAE /* pngrutil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pngrutil.cpp; sourceTree = ""; }; + 09052B5019053C9F00853FAE /* pngset.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pngset.cpp; sourceTree = ""; }; + 09052B5119053C9F00853FAE /* pngtrans.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pngtrans.cpp; sourceTree = ""; }; + 09052B5219053C9F00853FAE /* pngvcrd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pngvcrd.cpp; sourceTree = ""; }; + 09052B5319053C9F00853FAE /* pngwio.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pngwio.cpp; sourceTree = ""; }; + 09052B5419053C9F00853FAE /* pngwrite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pngwrite.cpp; sourceTree = ""; }; + 09052B5519053C9F00853FAE /* pngwtran.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pngwtran.cpp; sourceTree = ""; }; + 09052B5619053C9F00853FAE /* pngwutil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pngwutil.cpp; sourceTree = ""; }; + 09052B5819053C9F00853FAE /* crypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crypt.h; sourceTree = ""; }; + 09052B5919053C9F00853FAE /* ioapi.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ioapi.cpp; sourceTree = ""; }; + 09052B5A19053C9F00853FAE /* ioapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ioapi.h; sourceTree = ""; }; + 09052B5B19053C9F00853FAE /* iowin32.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = iowin32.cpp; sourceTree = ""; }; + 09052B5C19053C9F00853FAE /* iowin32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iowin32.h; sourceTree = ""; }; + 09052B5D19053C9F00853FAE /* unzip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = unzip.cpp; sourceTree = ""; }; + 09052B5E19053C9F00853FAE /* unzip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; + 09052B5F19053C9F00853FAE /* zip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = zip.cpp; sourceTree = ""; }; + 09052B6019053C9F00853FAE /* zip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; }; + 09052B6219053C9F00853FAE /* adler32.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = adler32.cpp; sourceTree = ""; }; + 09052B6319053C9F00853FAE /* compress.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = compress.cpp; sourceTree = ""; }; + 09052B6419053C9F00853FAE /* crc32.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = crc32.cpp; sourceTree = ""; }; + 09052B6519053C9F00853FAE /* crc32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; + 09052B6619053C9F00853FAE /* deflate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = deflate.cpp; sourceTree = ""; }; + 09052B6719053C9F00853FAE /* deflate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = deflate.h; sourceTree = ""; }; + 09052B6819053C9F00853FAE /* inffast.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inffast.cpp; sourceTree = ""; }; + 09052B6919053C9F00853FAE /* inffast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; + 09052B6A19053C9F00853FAE /* inffixed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; + 09052B6B19053C9F00853FAE /* inflate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inflate.cpp; sourceTree = ""; }; + 09052B6C19053C9F00853FAE /* inflate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; + 09052B6D19053C9F00853FAE /* inftrees.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inftrees.cpp; sourceTree = ""; }; + 09052B6E19053C9F00853FAE /* inftrees.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; + 09052B6F19053C9F00853FAE /* trees.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = trees.cpp; sourceTree = ""; }; + 09052B7019053C9F00853FAE /* trees.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = trees.h; sourceTree = ""; }; + 09052B7119053C9F00853FAE /* uncompr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uncompr.cpp; sourceTree = ""; }; + 09052B7219053C9F00853FAE /* zconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; + 09052B7319053C9F00853FAE /* zconf.in.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zconf.in.h; sourceTree = ""; }; + 09052B7419053C9F00853FAE /* zlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; + 09052B7519053C9F00853FAE /* zutil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = zutil.cpp; sourceTree = ""; }; + 09052B7619053C9F00853FAE /* zutil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; + 0905905113A76C23006E67D7 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + 0907BCC7142F567A0051CA0A /* asynccommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asynccommand.h; sourceTree = ""; }; + 0907BCC8142F567A0051CA0A /* asynccommand.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = asynccommand.mm; sourceTree = ""; }; + 09087F2B12244C0500C52D88 /* delta_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = delta_1.png; sourceTree = ""; }; + 09087F2C12244C0500C52D88 /* delta_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = delta_2.png; sourceTree = ""; }; + 09087F2D12244C0500C52D88 /* delta_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = delta_3.png; sourceTree = ""; }; + 09087F2E12244C0500C52D88 /* delta_4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = delta_4.png; sourceTree = ""; }; + 09087F2F12244C0500C52D88 /* delta_5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = delta_5.png; sourceTree = ""; }; + 09087F3012244C0500C52D88 /* delta_6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = delta_6.png; sourceTree = ""; }; + 09087F3112244C0500C52D88 /* delta_7.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = delta_7.png; sourceTree = ""; }; + 09087F3412244C0500C52D88 /* photonix_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = photonix_1.png; sourceTree = ""; }; + 09087F3512244C0500C52D88 /* photonix_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = photonix_2.png; sourceTree = ""; }; + 09087F3712244C0500C52D88 /* thumb_delta.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = thumb_delta.png; sourceTree = ""; }; + 09087F3812244C0500C52D88 /* thumb_gsos.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = thumb_gsos.png; sourceTree = ""; }; + 09087F3912244C0500C52D88 /* thumb_photonix.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = thumb_photonix.png; sourceTree = ""; }; + 090A6076163093D800C8FB59 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; + 090E7BCF123F965F003EE2C3 /* poms_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = poms_1.png; sourceTree = ""; }; + 090E7BD0123F965F003EE2C3 /* poms_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = poms_2.png; sourceTree = ""; }; + 090E7BD1123F965F003EE2C3 /* poms_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = poms_3.png; sourceTree = ""; }; + 090E7BD2123F965F003EE2C3 /* poms_4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = poms_4.png; sourceTree = ""; }; + 090E7BD3123F965F003EE2C3 /* poms_5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = poms_5.png; sourceTree = ""; }; + 090E7BD4123F965F003EE2C3 /* poms_6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = poms_6.png; sourceTree = ""; }; + 090E7BDD123F966C003EE2C3 /* thumb_poms.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = thumb_poms.png; sourceTree = ""; }; + 0913BFCF13033D77004B3039 /* ActiveGS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ActiveGS.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 0916BB03129473CE001727AF /* infoViewController-ipad.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = "infoViewController-ipad.xib"; sourceTree = ""; }; + 0941E66D1670E086003E0411 /* NUCLEUS.FTA */ = {isa = PBXFileReference; lastKnownFileType = file; path = NUCLEUS.FTA; sourceTree = ""; }; + 0941E66F1670E143003E0411 /* DELTA.FTA */ = {isa = PBXFileReference; lastKnownFileType = file; path = DELTA.FTA; sourceTree = ""; }; + 0941E6711670E23F003E0411 /* PHOTONIX.FTA */ = {isa = PBXFileReference; lastKnownFileType = file; path = PHOTONIX.FTA; sourceTree = ""; }; + 0941E6731670E391003E0411 /* BOUNCIN_FERNO.FTA */ = {isa = PBXFileReference; lastKnownFileType = file; path = BOUNCIN_FERNO.FTA; sourceTree = ""; }; + 0941E6741670E391003E0411 /* MINIPRIX.FTA */ = {isa = PBXFileReference; lastKnownFileType = file; path = MINIPRIX.FTA; sourceTree = ""; }; + 0941E6A916720840003E0411 /* ActiveGSList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ActiveGSList.cpp; sourceTree = ""; }; + 0941E6AA16720840003E0411 /* ActiveGSList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ActiveGSList.h; sourceTree = ""; }; + 0941E6AD16720886003E0411 /* simplexml.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simplexml.cpp; sourceTree = ""; }; + 0941E6AE16720886003E0411 /* simplexml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simplexml.h; sourceTree = ""; }; + 095036E419054799006A457A /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + 095036E6190547A0006A457A /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; }; + 095036E8190547BE006A457A /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; + 09520D8116AEF8130065E84A /* driver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = driver.cpp; sourceTree = ""; }; + 09520D8216AEF8130065E84A /* driver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = driver.h; sourceTree = ""; }; + 09520D8616AEF8250065E84A /* activegs_driver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = activegs_driver.cpp; sourceTree = ""; }; + 09520D8C16AEF8650065E84A /* apple2e.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = apple2e.cpp; sourceTree = ""; }; + 0955429E12836F4D0035AE09 /* Tab2GS@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Tab2GS@2x.png"; path = "../Common.iphone/Tab2GS@2x.png"; sourceTree = SOURCE_ROOT; }; + 095542A6128375C40035AE09 /* Tab][.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Tab][.png"; path = "../Common.iphone/Tab][.png"; sourceTree = SOURCE_ROOT; }; + 095542A7128375C40035AE09 /* Tab][@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Tab][@2x.png"; path = "../Common.iphone/Tab][@2x.png"; sourceTree = SOURCE_ROOT; }; + 096604C819127DB700A22C51 /* activegs.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = activegs.plist; sourceTree = ""; }; + 09712D81133B66E4007AAADF /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; + 09712D85133B66F0007AAADF /* CoreTelephony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreTelephony.framework; path = System/Library/Frameworks/CoreTelephony.framework; sourceTree = SDKROOT; }; + 0971D930126E4BE500EEBB1E /* icon72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon72.png; sourceTree = ""; }; + 0972554513CF2232006194F9 /* activegsEmulatorController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = activegsEmulatorController.h; sourceTree = ""; }; + 0972554613CF2232006194F9 /* activegsEmulatorController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = activegsEmulatorController.mm; sourceTree = ""; }; + 0982685C124028E00064F134 /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = ""; }; + 0982685D124028E00064F134 /* icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon@2x.png"; sourceTree = ""; }; + 099B5B8011F62D4900E597B6 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = /System/Library/Frameworks/QuartzCore.framework; sourceTree = ""; }; + 099CD904125E6F6E008EFD6C /* detailViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = detailViewController.xib; path = ../Common.iphone/detailViewController.xib; sourceTree = SOURCE_ROOT; }; + 09A5CE5E125D41860018DC22 /* infoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = infoViewController.h; sourceTree = ""; }; + 09A5CE5F125D41860018DC22 /* infoViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = infoViewController.mm; sourceTree = ""; }; + 09A5CE75125D422D0018DC22 /* infoViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = infoViewController.xib; sourceTree = ""; }; + 09AADC76125C560A00654DF1 /* detailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = detailViewController.h; sourceTree = ""; }; + 09AADC77125C560A00654DF1 /* detailViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = detailViewController.mm; sourceTree = ""; }; + 09AB6C09123EE1AE00816DB7 /* bouncinferno_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bouncinferno_1.png; sourceTree = ""; }; + 09AB6C0A123EE1AE00816DB7 /* bouncinferno_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bouncinferno_2.png; sourceTree = ""; }; + 09AB6C0B123EE1AE00816DB7 /* bouncinferno_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bouncinferno_3.png; sourceTree = ""; }; + 09AB6C0C123EE1AE00816DB7 /* bouncinferno_4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bouncinferno_4.png; sourceTree = ""; }; + 09AB6C0D123EE1AE00816DB7 /* bouncinferno_5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bouncinferno_5.png; sourceTree = ""; }; + 09AB6C0E123EE1AE00816DB7 /* bouncinferno_6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bouncinferno_6.png; sourceTree = ""; }; + 09AB6C0F123EE1AE00816DB7 /* bouncinferno_7.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bouncinferno_7.png; sourceTree = ""; }; + 09AB6C18123EE1BA00816DB7 /* harrier1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = harrier1.png; sourceTree = ""; }; + 09AB6C1A123EE1CB00816DB7 /* SPACE_HARRIER.FTA */ = {isa = PBXFileReference; lastKnownFileType = file; path = SPACE_HARRIER.FTA; sourceTree = ""; }; + 09AB6C1B123EE1CB00816DB7 /* thumb_bouncinferno.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = thumb_bouncinferno.png; sourceTree = ""; }; + 09AB6C1C123EE1CB00816DB7 /* thumb_harrier.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = thumb_harrier.png; sourceTree = ""; }; + 09AB6C24123EE2FA00816DB7 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; + 09AF98041283F0DF00083D60 /* Oil_Landers.fta */ = {isa = PBXFileReference; lastKnownFileType = file; path = Oil_Landers.fta; sourceTree = ""; }; + 09AF98061283F12200083D60 /* StarWizard (2002).fta */ = {isa = PBXFileReference; lastKnownFileType = file; path = "StarWizard (2002).fta"; sourceTree = ""; }; + 09AF98071283F12200083D60 /* starwizard_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = starwizard_2.png; sourceTree = ""; }; + 09AF98081283F12200083D60 /* starwizard_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = starwizard_3.png; sourceTree = ""; }; + 09AF98091283F12200083D60 /* starwizard_4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = starwizard_4.png; sourceTree = ""; }; + 09AF980A1283F12200083D60 /* starwizard_5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = starwizard_5.png; sourceTree = ""; }; + 09AF980B1283F12200083D60 /* starwizard.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = starwizard.png; sourceTree = ""; }; + 09BB434111D92F65005ADA46 /* ActiveDownloadMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ActiveDownloadMac.cpp; sourceTree = ""; }; + 09BB434311D92F65005ADA46 /* CEmulatorCtrlMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CEmulatorCtrlMac.cpp; sourceTree = ""; }; + 09BB434411D92F65005ADA46 /* cemulatorctrlmac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cemulatorctrlmac.h; sourceTree = ""; }; + 09BB438111D92F70005ADA46 /* activeconfig.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = activeconfig.cpp; sourceTree = ""; }; + 09BB438211D92F70005ADA46 /* ActiveDownload.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ActiveDownload.cpp; sourceTree = ""; }; + 09BB438311D92F70005ADA46 /* ActiveDownload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ActiveDownload.h; sourceTree = ""; }; + 09BB438411D92F70005ADA46 /* ActiveZip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ActiveZip.cpp; sourceTree = ""; }; + 09BB438511D92F70005ADA46 /* CA2Text.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CA2Text.cpp; sourceTree = ""; }; + 09BB438611D92F70005ADA46 /* CEmulatorCtrl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CEmulatorCtrl.cpp; sourceTree = ""; }; + 09BB438711D92F70005ADA46 /* CEMulatorCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CEMulatorCtrl.h; sourceTree = ""; }; + 09BB438811D92F70005ADA46 /* interface.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = interface.cpp; sourceTree = ""; }; + 09BB438911D92F70005ADA46 /* ki.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ki.h; sourceTree = ""; }; + 09BB438A11D92F70005ADA46 /* libpng.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = libpng.cpp; sourceTree = ""; }; + 09BB438B11D92F70005ADA46 /* rom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rom.cpp; sourceTree = ""; }; + 09BB438E11D92F70005ADA46 /* svnversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = svnversion.h; sourceTree = ""; }; + 09BB43DB11D93063005ADA46 /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; }; + 09BB43E211D93087005ADA46 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; + 09BCB6271211649D009858DF /* flobynoid (2002).dsk.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = "flobynoid (2002).dsk.zip"; sourceTree = ""; }; + 09C81A361657ACAE008539D5 /* 16inst_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 16inst_c.h; sourceTree = ""; }; + 09C81A371657ACAE008539D5 /* 8inst_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 8inst_c.h; sourceTree = ""; }; + 09C81A391657ACAE008539D5 /* adb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = adb.cpp; sourceTree = ""; }; + 09C81A3A1657ACAE008539D5 /* adb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = adb.h; sourceTree = ""; }; + 09C81A3B1657ACAE008539D5 /* async_event.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = async_event.cpp; sourceTree = ""; }; + 09C81A3C1657ACAE008539D5 /* async_event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = async_event.h; sourceTree = ""; }; + 09C81A3D1657ACAE008539D5 /* clock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = clock.cpp; sourceTree = ""; }; + 09C81A3E1657ACAE008539D5 /* clock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = clock.h; sourceTree = ""; }; + 09C81A3F1657ACAE008539D5 /* compile_time.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = compile_time.cpp; sourceTree = ""; }; + 09C81A401657ACAE008539D5 /* compression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = compression.cpp; sourceTree = ""; }; + 09C81A411657ACAE008539D5 /* compression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = compression.h; sourceTree = ""; }; + 09C81A421657ACAE008539D5 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + 09C81A431657ACAE008539D5 /* config_generic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = config_generic.cpp; sourceTree = ""; }; + 09C81A451657ACAE008539D5 /* defc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = defc.h; sourceTree = ""; }; + 09C81A461657ACAE008539D5 /* defcomm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = defcomm.h; sourceTree = ""; }; + 09C81A471657ACAE008539D5 /* defs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = defs.h; sourceTree = ""; }; + 09C81A481657ACAE008539D5 /* defs_instr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = defs_instr.h; sourceTree = ""; }; + 09C81A491657ACAE008539D5 /* dis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dis.cpp; sourceTree = ""; }; + 09C81A4A1657ACAE008539D5 /* disas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = disas.h; sourceTree = ""; }; + 09C81A4B1657ACAE008539D5 /* engine_c.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = engine_c.cpp; sourceTree = ""; }; + 09C81A4C1657ACAE008539D5 /* GraphCounter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GraphCounter.cpp; sourceTree = ""; }; + 09C81A4D1657ACAE008539D5 /* graphcounter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = graphcounter.h; sourceTree = ""; }; + 09C81A4E1657ACAE008539D5 /* iwm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = iwm.cpp; sourceTree = ""; }; + 09C81A4F1657ACAE008539D5 /* iwm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iwm.h; sourceTree = ""; }; + 09C81A501657ACAE008539D5 /* iwm_35_525.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iwm_35_525.h; sourceTree = ""; }; + 09C81A511657ACAE008539D5 /* kegsfont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kegsfont.h; sourceTree = ""; }; + 09C81A521657ACAE008539D5 /* kegsversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kegsversion.h; sourceTree = ""; }; + 09C81A531657ACAE008539D5 /* marinetti.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = marinetti.cpp; sourceTree = ""; }; + 09C81A541657ACAE008539D5 /* marinetti.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = marinetti.h; sourceTree = ""; }; + 09C81A551657ACAE008539D5 /* marinetti_helper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = marinetti_helper.cpp; sourceTree = ""; }; + 09C81A561657ACAE008539D5 /* moremem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = moremem.cpp; sourceTree = ""; }; + 09C81A571657ACAE008539D5 /* moremem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = moremem.h; sourceTree = ""; }; + 09C81A581657ACAE008539D5 /* op_routs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = op_routs.h; sourceTree = ""; }; + 09C81A591657ACAE008539D5 /* openalasync_snddriver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = openalasync_snddriver.cpp; sourceTree = ""; }; + 09C81A5A1657ACAE008539D5 /* paddles.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = paddles.cpp; sourceTree = ""; }; + 09C81A5B1657ACAE008539D5 /* paddles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = paddles.h; sourceTree = ""; }; + 09C81A5C1657ACAE008539D5 /* prodos.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = prodos.h; sourceTree = ""; }; + 09C81A5D1657ACAE008539D5 /* prodos_protos.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = prodos_protos.h; sourceTree = ""; }; + 09C81A5E1657ACAE008539D5 /* protos.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = protos.h; sourceTree = ""; }; + 09C81A5F1657ACAE008539D5 /* protos_engine_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = protos_engine_c.h; sourceTree = ""; }; + 09C81A601657ACAE008539D5 /* protos_macdriver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = protos_macdriver.h; sourceTree = ""; }; + 09C81A611657ACAE008539D5 /* protos_macsnd_driver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = protos_macsnd_driver.h; sourceTree = ""; }; + 09C81A621657ACAE008539D5 /* protos_windriver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = protos_windriver.h; sourceTree = ""; }; + 09C81A631657ACAE008539D5 /* protos_xdriver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = protos_xdriver.h; sourceTree = ""; }; + 09C81A641657ACAE008539D5 /* raster.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = raster.h; sourceTree = ""; }; + 09C81A651657ACAE008539D5 /* SaveState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SaveState.cpp; sourceTree = ""; }; + 09C81A661657ACAE008539D5 /* SaveState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SaveState.h; sourceTree = ""; }; + 09C81A671657ACAE008539D5 /* scc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scc.cpp; sourceTree = ""; }; + 09C81A681657ACAE008539D5 /* scc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scc.h; sourceTree = ""; }; + 09C81A691657ACAE008539D5 /* scc_socket_driver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scc_socket_driver.cpp; sourceTree = ""; }; + 09C81A6A1657ACAE008539D5 /* sim65816.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sim65816.cpp; sourceTree = ""; }; + 09C81A6B1657ACAE008539D5 /* sim65816.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sim65816.h; sourceTree = ""; }; + 09C81A6C1657ACAE008539D5 /* size_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = size_c.h; sourceTree = ""; }; + 09C81A6E1657ACAE008539D5 /* size_tab.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = size_tab.h; sourceTree = ""; }; + 09C81A6F1657ACAE008539D5 /* smartport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = smartport.cpp; sourceTree = ""; }; + 09C81A701657ACAE008539D5 /* sound.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sound.cpp; sourceTree = ""; }; + 09C81A711657ACAE008539D5 /* sound.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sound.h; sourceTree = ""; }; + 09C81A721657ACAE008539D5 /* sound_driver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sound_driver.cpp; sourceTree = ""; }; + 09C81A731657ACAE008539D5 /* StdString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StdString.h; sourceTree = ""; }; + 09C81A741657ACAE008539D5 /* superhires.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = superhires.h; sourceTree = ""; }; + 09C81A761657ACAE008539D5 /* video.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = video.cpp; sourceTree = ""; }; + 09C81A771657ACAE008539D5 /* video.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = video.h; sourceTree = ""; }; + 09C81A921657ACDC008539D5 /* 2mg.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = 2mg.icns; sourceTree = ""; }; + 09C81A931657ACDC008539D5 /* 525.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = 525.icns; sourceTree = ""; }; + 09C81A941657ACDC008539D5 /* macdriver_activegs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = macdriver_activegs.cpp; sourceTree = ""; }; + 09C81A951657ACDC008539D5 /* macdriver_generic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = macdriver_generic.cpp; sourceTree = ""; }; + 09C81A981657ACDC008539D5 /* scc_macdriver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scc_macdriver.cpp; sourceTree = ""; }; + 09C81AA11657AD18008539D5 /* emulatorView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = emulatorView.h; sourceTree = ""; }; + 09C81AA21657AD18008539D5 /* emulatorView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = emulatorView.mm; sourceTree = ""; }; + 09C81AA31657AD18008539D5 /* joystick_iphone.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = joystick_iphone.cpp; sourceTree = ""; }; + 09C81AA51657AD18008539D5 /* zoomEmulatorView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zoomEmulatorView.h; sourceTree = ""; }; + 09C81AA61657AD18008539D5 /* zoomEmulatorView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = zoomEmulatorView.mm; sourceTree = ""; }; + 09D8BCF81285EFE900B6D785 /* miniprix_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = miniprix_1.png; sourceTree = ""; }; + 09D8BCFA1285EFFA00B6D785 /* miniprix_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = miniprix_2.png; sourceTree = ""; }; + 09D8BCFB1285EFFA00B6D785 /* miniprix_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = miniprix_3.png; sourceTree = ""; }; + 09D8BCFE1285F00C00B6D785 /* oillanders_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = oillanders_1.png; sourceTree = ""; }; + 09D8BCFF1285F00C00B6D785 /* oillanders_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = oillanders_2.png; sourceTree = ""; }; + 09D8BD001285F00C00B6D785 /* oillanders_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = oillanders_3.png; sourceTree = ""; }; + 09D8BD011285F00C00B6D785 /* oillanders_4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = oillanders_4.png; sourceTree = ""; }; + 09D8BD021285F00C00B6D785 /* oillanders_5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = oillanders_5.png; sourceTree = ""; }; + 09E7BDE411FC935E00DCCFE7 /* floby1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = floby1.png; sourceTree = ""; }; + 09E7BDE511FC935E00DCCFE7 /* floby2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = floby2.png; sourceTree = ""; }; + 09E7BDE611FC935E00DCCFE7 /* floby3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = floby3.png; sourceTree = ""; }; + 09E7BDE811FC935E00DCCFE7 /* list.activegsxml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = list.activegsxml; sourceTree = ""; }; + 09E7BDE911FC935E00DCCFE7 /* MODULAE.FTA */ = {isa = PBXFileReference; lastKnownFileType = file; path = MODULAE.FTA; sourceTree = ""; }; + 09E7BDEA11FC935E00DCCFE7 /* modulae_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = modulae_1.png; sourceTree = ""; }; + 09E7BDEB11FC935E00DCCFE7 /* modulae_10.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = modulae_10.png; sourceTree = ""; }; + 09E7BDEC11FC935E00DCCFE7 /* modulae_11.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = modulae_11.png; sourceTree = ""; }; + 09E7BDED11FC935E00DCCFE7 /* modulae_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = modulae_2.png; sourceTree = ""; }; + 09E7BDEE11FC935E00DCCFE7 /* modulae_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = modulae_3.png; sourceTree = ""; }; + 09E7BDEF11FC935E00DCCFE7 /* modulae_4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = modulae_4.png; sourceTree = ""; }; + 09E7BDF011FC935E00DCCFE7 /* modulae_5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = modulae_5.png; sourceTree = ""; }; + 09E7BDF111FC935E00DCCFE7 /* modulae_6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = modulae_6.png; sourceTree = ""; }; + 09E7BDF211FC935E00DCCFE7 /* modulae_7.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = modulae_7.png; sourceTree = ""; }; + 09E7BDF311FC935E00DCCFE7 /* modulae_8.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = modulae_8.png; sourceTree = ""; }; + 09E7BDF411FC935E00DCCFE7 /* modulae_9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = modulae_9.png; sourceTree = ""; }; + 09E7BDF511FC935E00DCCFE7 /* NOISETRACKER.FTA */ = {isa = PBXFileReference; lastKnownFileType = file; path = NOISETRACKER.FTA; sourceTree = ""; }; + 09E7BDF611FC935E00DCCFE7 /* noisetracker_0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = noisetracker_0.png; sourceTree = ""; }; + 09E7BDF711FC935E00DCCFE7 /* noisetracker_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = noisetracker_1.png; sourceTree = ""; }; + 09E7BDF811FC935E00DCCFE7 /* noisetracker_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = noisetracker_2.png; sourceTree = ""; }; + 09E7BDF911FC935E00DCCFE7 /* noisetracker_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = noisetracker_3.png; sourceTree = ""; }; + 09E7BDFB11FC935E00DCCFE7 /* nucleus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = nucleus.png; sourceTree = ""; }; + 09E7BDFC11FC935E00DCCFE7 /* nucleus_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = nucleus_2.png; sourceTree = ""; }; + 09E7BDFD11FC935E00DCCFE7 /* nucleus_c.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = nucleus_c.png; sourceTree = ""; }; + 09E7BDFE11FC935E00DCCFE7 /* nucleus_t.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = nucleus_t.png; sourceTree = ""; }; + 09E7BE0011FC935E00DCCFE7 /* thumb_floby.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = thumb_floby.png; sourceTree = ""; }; + 09E7BE0111FC935E00DCCFE7 /* thumb_system6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = thumb_system6.png; sourceTree = ""; }; + 09E7BE0211FC935E00DCCFE7 /* thumb_modulae.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = thumb_modulae.png; sourceTree = ""; }; + 09E7BE0311FC935E00DCCFE7 /* thumb_noisetracker.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = thumb_noisetracker.png; sourceTree = ""; }; + 09E7BE0411FC935E00DCCFE7 /* thumb_nucleus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = thumb_nucleus.png; sourceTree = ""; }; + 09E7BE0511FC935E00DCCFE7 /* thumb_xmas.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = thumb_xmas.png; sourceTree = ""; }; + 09E7BE0611FC935E00DCCFE7 /* xmas_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = xmas_1.png; sourceTree = ""; }; + 09E7BE0711FC935E00DCCFE7 /* xmas_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = xmas_2.png; sourceTree = ""; }; + 09E7BE0811FC935E00DCCFE7 /* xmas_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = xmas_3.png; sourceTree = ""; }; + 09E7BE0911FC935E00DCCFE7 /* xmas_4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = xmas_4.png; sourceTree = ""; }; + 09E7BE0A11FC935E00DCCFE7 /* xmas_5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = xmas_5.png; sourceTree = ""; }; + 09E7BE0B11FC935E00DCCFE7 /* xmas_6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = xmas_6.png; sourceTree = ""; }; + 09E7BE0C11FC935E00DCCFE7 /* xmas_7.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = xmas_7.png; sourceTree = ""; }; + 09E7BE0D11FC935E00DCCFE7 /* xmas_8.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = xmas_8.png; sourceTree = ""; }; + 09E7BE0E11FC935E00DCCFE7 /* XMASDEMO.FTA */ = {isa = PBXFileReference; lastKnownFileType = file; path = XMASDEMO.FTA; sourceTree = ""; }; + 09FA6079125A7B3E00B07F77 /* activegsAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = activegsAppDelegate.h; sourceTree = ""; }; + 09FA607A125A7B3E00B07F77 /* activegsAppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = activegsAppDelegate.mm; sourceTree = ""; }; + 09FA607B125A7B3E00B07F77 /* activegsList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = activegsList.h; sourceTree = ""; }; + 09FA607C125A7B3E00B07F77 /* activegsList.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = activegsList.mm; sourceTree = ""; }; + 09FA607D125A7B3E00B07F77 /* activegsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = activegsViewController.h; sourceTree = ""; }; + 09FA607E125A7B3E00B07F77 /* activegsViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = activegsViewController.mm; sourceTree = ""; }; + 09FA607F125A7B3E00B07F77 /* activegsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = activegsViewController.xib; sourceTree = ""; }; + 09FA6082125A7B3E00B07F77 /* asyncimageview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asyncimageview.h; sourceTree = ""; }; + 09FA6083125A7B3E00B07F77 /* asyncimageview.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = asyncimageview.mm; sourceTree = ""; }; + 09FA6086125A7B3E00B07F77 /* GTMUIView+SubtreeDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMUIView+SubtreeDescription.h"; sourceTree = ""; }; + 09FA6087125A7B3E00B07F77 /* GTMUIView+SubtreeDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMUIView+SubtreeDescription.m"; sourceTree = ""; }; + 09FA6088125A7B3E00B07F77 /* icon_APPLE 2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon_APPLE 2.png"; sourceTree = ""; }; + 09FA6089125A7B3E00B07F77 /* icon_APPLE 2GS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon_APPLE 2GS.png"; sourceTree = ""; }; + 09FA608A125A7B3E00B07F77 /* KBDController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KBDController.h; sourceTree = ""; }; + 09FA608B125A7B3E00B07F77 /* KBDController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = KBDController.mm; sourceTree = ""; }; + 09FD36F01278CCEB009C31AB /* BLUE_HELMET.FTA */ = {isa = PBXFileReference; lastKnownFileType = file; path = BLUE_HELMET.FTA; sourceTree = ""; }; + 09FD36F11278CCEB009C31AB /* bluehelmet_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bluehelmet_1.png; sourceTree = ""; }; + 09FD36F21278CCEB009C31AB /* bluehelmet_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bluehelmet_2.png; sourceTree = ""; }; + 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 288765A40DF7441C002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 29B97316FDCFA39411CA2CEA /* main.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = ""; }; + 32CA4F630368D1EE00C91783 /* activegs_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = activegs_Prefix.pch; sourceTree = ""; }; + 7E51480C1CA6B5CE005DA0A6 /* ActiveGS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ActiveGS.png; sourceTree = ""; }; + 7E51480D1CA6B5CE005DA0A6 /* Apple_2_Disk_Drive_Sounds.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Apple_2_Disk_Drive_Sounds.txt; sourceTree = ""; }; + 7E51480E1CA6B5CE005DA0A6 /* disk.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = disk.png; sourceTree = ""; }; + 7E51480F1CA6B5CE005DA0A6 /* disk_35_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = disk_35_1.png; sourceTree = ""; }; + 7E5148101CA6B5CE005DA0A6 /* disk_35_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = disk_35_2.png; sourceTree = ""; }; + 7E5148111CA6B5CE005DA0A6 /* disk_525_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = disk_525_1.png; sourceTree = ""; }; + 7E5148121CA6B5CE005DA0A6 /* disk_525_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = disk_525_2.png; sourceTree = ""; }; + 7E5148131CA6B5CE005DA0A6 /* facebook-logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "facebook-logo.png"; sourceTree = ""; }; + 7E5148141CA6B5CE005DA0A6 /* floppy_eject.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = floppy_eject.wav; sourceTree = ""; }; + 7E5148151CA6B5CE005DA0A6 /* logo_apple2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = logo_apple2.png; sourceTree = ""; }; + 7E5148161CA6B5CE005DA0A6 /* logo_apple2gs.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = logo_apple2gs.png; sourceTree = ""; }; + 7E5148171CA6B5CE005DA0A6 /* Search Skip Search 1.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = "Search Skip Search 1.wav"; sourceTree = ""; }; + 7E5148181CA6B5CE005DA0A6 /* Search Skip Search 2.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = "Search Skip Search 2.wav"; sourceTree = ""; }; + 7E5148191CA6B5CE005DA0A6 /* Search Skip Search 3.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = "Search Skip Search 3.wav"; sourceTree = ""; }; + 7E51481A1CA6B5CE005DA0A6 /* Search Skip Search 4.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = "Search Skip Search 4.wav"; sourceTree = ""; }; + 7E51481B1CA6B5CE005DA0A6 /* Search Skip Search 5.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = "Search Skip Search 5.wav"; sourceTree = ""; }; + 7E51481C1CA6B5CE005DA0A6 /* ShastonHi640.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = ShastonHi640.ttf; sourceTree = ""; }; + 7E51481D1CA6B5CE005DA0A6 /* Spin Up Search 1.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = "Spin Up Search 1.wav"; sourceTree = ""; }; + 7E51481E1CA6B5CE005DA0A6 /* Spin Up Search 2.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = "Spin Up Search 2.wav"; sourceTree = ""; }; + 7E8EED6A1A7D83C900C6E522 /* Entitlements.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Entitlements.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 095036E9190547BE006A457A /* CoreLocation.framework in Frameworks */, + 095036E7190547A0006A457A /* AdSupport.framework in Frameworks */, + 095036E519054799006A457A /* CoreData.framework in Frameworks */, + 0905905213A76C23006E67D7 /* AudioToolbox.framework in Frameworks */, + 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, + 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, + 288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */, + 09BB43DC11D93063005ADA46 /* OpenAL.framework in Frameworks */, + 09BB43E311D93087005ADA46 /* CFNetwork.framework in Frameworks */, + 099B5B8111F62D4900E597B6 /* QuartzCore.framework in Frameworks */, + 09712D82133B66E4007AAADF /* SystemConfiguration.framework in Frameworks */, + 09712D86133B66F0007AAADF /* CoreTelephony.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 09052B4219053C9F00853FAE /* Libraries */ = { + isa = PBXGroup; + children = ( + 09052B4319053C9F00853FAE /* libpng */, + 09052B5719053C9F00853FAE /* unzip101e */, + 09052B6119053C9F00853FAE /* zlib123 */, + ); + name = Libraries; + path = ../Libraries; + sourceTree = ""; + }; + 09052B4319053C9F00853FAE /* libpng */ = { + isa = PBXGroup; + children = ( + 09052B4419053C9F00853FAE /* png.cpp */, + 09052B4519053C9F00853FAE /* png.h */, + 09052B4619053C9F00853FAE /* pngconf.h */, + 09052B4719053C9F00853FAE /* pngerror.cpp */, + 09052B4819053C9F00853FAE /* pnggccrd.cpp */, + 09052B4919053C9F00853FAE /* pngget.cpp */, + 09052B4A19053C9F00853FAE /* pngmem.cpp */, + 09052B4B19053C9F00853FAE /* pngpread.cpp */, + 09052B4C19053C9F00853FAE /* pngread.cpp */, + 09052B4D19053C9F00853FAE /* pngrio.cpp */, + 09052B4E19053C9F00853FAE /* pngrtran.cpp */, + 09052B4F19053C9F00853FAE /* pngrutil.cpp */, + 09052B5019053C9F00853FAE /* pngset.cpp */, + 09052B5119053C9F00853FAE /* pngtrans.cpp */, + 09052B5219053C9F00853FAE /* pngvcrd.cpp */, + 09052B5319053C9F00853FAE /* pngwio.cpp */, + 09052B5419053C9F00853FAE /* pngwrite.cpp */, + 09052B5519053C9F00853FAE /* pngwtran.cpp */, + 09052B5619053C9F00853FAE /* pngwutil.cpp */, + ); + path = libpng; + sourceTree = ""; + }; + 09052B5719053C9F00853FAE /* unzip101e */ = { + isa = PBXGroup; + children = ( + 09052B5819053C9F00853FAE /* crypt.h */, + 09052B5919053C9F00853FAE /* ioapi.cpp */, + 09052B5A19053C9F00853FAE /* ioapi.h */, + 09052B5B19053C9F00853FAE /* iowin32.cpp */, + 09052B5C19053C9F00853FAE /* iowin32.h */, + 09052B5D19053C9F00853FAE /* unzip.cpp */, + 09052B5E19053C9F00853FAE /* unzip.h */, + 09052B5F19053C9F00853FAE /* zip.cpp */, + 09052B6019053C9F00853FAE /* zip.h */, + ); + path = unzip101e; + sourceTree = ""; + }; + 09052B6119053C9F00853FAE /* zlib123 */ = { + isa = PBXGroup; + children = ( + 09052B6219053C9F00853FAE /* adler32.cpp */, + 09052B6319053C9F00853FAE /* compress.cpp */, + 09052B6419053C9F00853FAE /* crc32.cpp */, + 09052B6519053C9F00853FAE /* crc32.h */, + 09052B6619053C9F00853FAE /* deflate.cpp */, + 09052B6719053C9F00853FAE /* deflate.h */, + 09052B6819053C9F00853FAE /* inffast.cpp */, + 09052B6919053C9F00853FAE /* inffast.h */, + 09052B6A19053C9F00853FAE /* inffixed.h */, + 09052B6B19053C9F00853FAE /* inflate.cpp */, + 09052B6C19053C9F00853FAE /* inflate.h */, + 09052B6D19053C9F00853FAE /* inftrees.cpp */, + 09052B6E19053C9F00853FAE /* inftrees.h */, + 09052B6F19053C9F00853FAE /* trees.cpp */, + 09052B7019053C9F00853FAE /* trees.h */, + 09052B7119053C9F00853FAE /* uncompr.cpp */, + 09052B7219053C9F00853FAE /* zconf.h */, + 09052B7319053C9F00853FAE /* zconf.in.h */, + 09052B7419053C9F00853FAE /* zlib.h */, + 09052B7519053C9F00853FAE /* zutil.cpp */, + 09052B7619053C9F00853FAE /* zutil.h */, + ); + path = zlib123; + sourceTree = ""; + }; + 0941E6AC16720886003E0411 /* 3rdpartylib */ = { + isa = PBXGroup; + children = ( + 0941E6AD16720886003E0411 /* simplexml.cpp */, + 0941E6AE16720886003E0411 /* simplexml.h */, + ); + path = 3rdpartylib; + sourceTree = ""; + }; + 09520D8516AEF8250065E84A /* Drivers */ = { + isa = PBXGroup; + children = ( + 09520D8616AEF8250065E84A /* activegs_driver.cpp */, + ); + name = Drivers; + path = ../Drivers; + sourceTree = ""; + }; + 09B8EB85163B2C06000A9F6B /* xib */ = { + isa = PBXGroup; + children = ( + 0916BB03129473CE001727AF /* infoViewController-ipad.xib */, + 09A5CE75125D422D0018DC22 /* infoViewController.xib */, + 099CD904125E6F6E008EFD6C /* detailViewController.xib */, + ); + name = xib; + sourceTree = ""; + }; + 09B8EB86163B2F34000A9F6B /* Private Framework */ = { + isa = PBXGroup; + children = ( + ); + name = "Private Framework"; + sourceTree = ""; + }; + 09BB434011D92F65005ADA46 /* Common.osx */ = { + isa = PBXGroup; + children = ( + 09BB434111D92F65005ADA46 /* ActiveDownloadMac.cpp */, + 09BB434311D92F65005ADA46 /* CEmulatorCtrlMac.cpp */, + 09BB434411D92F65005ADA46 /* cemulatorctrlmac.h */, + ); + name = Common.osx; + path = ../Common.osx; + sourceTree = SOURCE_ROOT; + }; + 09BB434811D92F70005ADA46 /* Common */ = { + isa = PBXGroup; + children = ( + 09520D8C16AEF8650065E84A /* apple2e.cpp */, + 0941E6AC16720886003E0411 /* 3rdpartylib */, + 0941E6A916720840003E0411 /* ActiveGSList.cpp */, + 0941E6AA16720840003E0411 /* ActiveGSList.h */, + 09BB438111D92F70005ADA46 /* activeconfig.cpp */, + 09BB438211D92F70005ADA46 /* ActiveDownload.cpp */, + 09BB438311D92F70005ADA46 /* ActiveDownload.h */, + 09BB438411D92F70005ADA46 /* ActiveZip.cpp */, + 09BB438511D92F70005ADA46 /* CA2Text.cpp */, + 09BB438611D92F70005ADA46 /* CEmulatorCtrl.cpp */, + 09BB438711D92F70005ADA46 /* CEMulatorCtrl.h */, + 09BB438811D92F70005ADA46 /* interface.cpp */, + 09BB438911D92F70005ADA46 /* ki.h */, + 09BB438A11D92F70005ADA46 /* libpng.cpp */, + 09BB438B11D92F70005ADA46 /* rom.cpp */, + 09BB438E11D92F70005ADA46 /* svnversion.h */, + ); + name = Common; + path = ../Common; + sourceTree = SOURCE_ROOT; + }; + 09C81A351657ACAE008539D5 /* Src */ = { + isa = PBXGroup; + children = ( + 09520D8116AEF8130065E84A /* driver.cpp */, + 09520D8216AEF8130065E84A /* driver.h */, + 09C81A361657ACAE008539D5 /* 16inst_c.h */, + 09C81A371657ACAE008539D5 /* 8inst_c.h */, + 09C81A391657ACAE008539D5 /* adb.cpp */, + 09C81A3A1657ACAE008539D5 /* adb.h */, + 09C81A3B1657ACAE008539D5 /* async_event.cpp */, + 09C81A3C1657ACAE008539D5 /* async_event.h */, + 09C81A3D1657ACAE008539D5 /* clock.cpp */, + 09C81A3E1657ACAE008539D5 /* clock.h */, + 09C81A3F1657ACAE008539D5 /* compile_time.cpp */, + 09C81A401657ACAE008539D5 /* compression.cpp */, + 09C81A411657ACAE008539D5 /* compression.h */, + 09C81A421657ACAE008539D5 /* config.h */, + 09C81A431657ACAE008539D5 /* config_generic.cpp */, + 09C81A451657ACAE008539D5 /* defc.h */, + 09C81A461657ACAE008539D5 /* defcomm.h */, + 09C81A471657ACAE008539D5 /* defs.h */, + 09C81A481657ACAE008539D5 /* defs_instr.h */, + 09C81A491657ACAE008539D5 /* dis.cpp */, + 09C81A4A1657ACAE008539D5 /* disas.h */, + 09C81A4B1657ACAE008539D5 /* engine_c.cpp */, + 09C81A4C1657ACAE008539D5 /* GraphCounter.cpp */, + 09C81A4D1657ACAE008539D5 /* graphcounter.h */, + 09C81A4E1657ACAE008539D5 /* iwm.cpp */, + 09C81A4F1657ACAE008539D5 /* iwm.h */, + 09C81A501657ACAE008539D5 /* iwm_35_525.h */, + 09C81A511657ACAE008539D5 /* kegsfont.h */, + 09C81A521657ACAE008539D5 /* kegsversion.h */, + 09C81A531657ACAE008539D5 /* marinetti.cpp */, + 09C81A541657ACAE008539D5 /* marinetti.h */, + 09C81A551657ACAE008539D5 /* marinetti_helper.cpp */, + 09C81A561657ACAE008539D5 /* moremem.cpp */, + 09C81A571657ACAE008539D5 /* moremem.h */, + 09C81A581657ACAE008539D5 /* op_routs.h */, + 09C81A591657ACAE008539D5 /* openalasync_snddriver.cpp */, + 09C81A5A1657ACAE008539D5 /* paddles.cpp */, + 09C81A5B1657ACAE008539D5 /* paddles.h */, + 09C81A5C1657ACAE008539D5 /* prodos.h */, + 09C81A5D1657ACAE008539D5 /* prodos_protos.h */, + 09C81A5E1657ACAE008539D5 /* protos.h */, + 09C81A5F1657ACAE008539D5 /* protos_engine_c.h */, + 09C81A601657ACAE008539D5 /* protos_macdriver.h */, + 09C81A611657ACAE008539D5 /* protos_macsnd_driver.h */, + 09C81A621657ACAE008539D5 /* protos_windriver.h */, + 09C81A631657ACAE008539D5 /* protos_xdriver.h */, + 09C81A641657ACAE008539D5 /* raster.h */, + 09C81A651657ACAE008539D5 /* SaveState.cpp */, + 09C81A661657ACAE008539D5 /* SaveState.h */, + 09C81A671657ACAE008539D5 /* scc.cpp */, + 09C81A681657ACAE008539D5 /* scc.h */, + 09C81A691657ACAE008539D5 /* scc_socket_driver.cpp */, + 09C81A6A1657ACAE008539D5 /* sim65816.cpp */, + 09C81A6B1657ACAE008539D5 /* sim65816.h */, + 09C81A6C1657ACAE008539D5 /* size_c.h */, + 09C81A6E1657ACAE008539D5 /* size_tab.h */, + 09C81A6F1657ACAE008539D5 /* smartport.cpp */, + 09C81A701657ACAE008539D5 /* sound.cpp */, + 09C81A711657ACAE008539D5 /* sound.h */, + 09C81A721657ACAE008539D5 /* sound_driver.cpp */, + 09C81A731657ACAE008539D5 /* StdString.h */, + 09C81A741657ACAE008539D5 /* superhires.h */, + 09C81A761657ACAE008539D5 /* video.cpp */, + 09C81A771657ACAE008539D5 /* video.h */, + ); + name = Src; + path = ../kegs/Src; + sourceTree = ""; + }; + 09C81A911657ACDC008539D5 /* OSX */ = { + isa = PBXGroup; + children = ( + 09C81A921657ACDC008539D5 /* 2mg.icns */, + 09C81A931657ACDC008539D5 /* 525.icns */, + 09C81A941657ACDC008539D5 /* macdriver_activegs.cpp */, + 09C81A951657ACDC008539D5 /* macdriver_generic.cpp */, + 09C81A981657ACDC008539D5 /* scc_macdriver.cpp */, + ); + name = OSX; + path = ../kegs/OSX; + sourceTree = ""; + }; + 09C81AA01657AD18008539D5 /* iOS */ = { + isa = PBXGroup; + children = ( + 09C81AA11657AD18008539D5 /* emulatorView.h */, + 09C81AA21657AD18008539D5 /* emulatorView.mm */, + 09C81AA31657AD18008539D5 /* joystick_iphone.cpp */, + 09C81AA51657AD18008539D5 /* zoomEmulatorView.h */, + 09C81AA61657AD18008539D5 /* zoomEmulatorView.mm */, + ); + name = iOS; + path = ../kegs/iOS; + sourceTree = ""; + }; + 09E7BDE311FC935E00DCCFE7 /* DefaultPackage */ = { + isa = PBXGroup; + children = ( + 0941E6731670E391003E0411 /* BOUNCIN_FERNO.FTA */, + 0941E6741670E391003E0411 /* MINIPRIX.FTA */, + 0941E6711670E23F003E0411 /* PHOTONIX.FTA */, + 0941E66F1670E143003E0411 /* DELTA.FTA */, + 0941E66D1670E086003E0411 /* NUCLEUS.FTA */, + 09D8BCFE1285F00C00B6D785 /* oillanders_1.png */, + 09D8BCFF1285F00C00B6D785 /* oillanders_2.png */, + 09D8BD001285F00C00B6D785 /* oillanders_3.png */, + 09D8BD011285F00C00B6D785 /* oillanders_4.png */, + 09D8BD021285F00C00B6D785 /* oillanders_5.png */, + 09D8BCFA1285EFFA00B6D785 /* miniprix_2.png */, + 09D8BCFB1285EFFA00B6D785 /* miniprix_3.png */, + 09D8BCF81285EFE900B6D785 /* miniprix_1.png */, + 09AF98061283F12200083D60 /* StarWizard (2002).fta */, + 09AF98071283F12200083D60 /* starwizard_2.png */, + 09AF98081283F12200083D60 /* starwizard_3.png */, + 09AF98091283F12200083D60 /* starwizard_4.png */, + 09AF980A1283F12200083D60 /* starwizard_5.png */, + 09AF980B1283F12200083D60 /* starwizard.png */, + 09AF98041283F0DF00083D60 /* Oil_Landers.fta */, + 09FD36F01278CCEB009C31AB /* BLUE_HELMET.FTA */, + 09FD36F11278CCEB009C31AB /* bluehelmet_1.png */, + 09FD36F21278CCEB009C31AB /* bluehelmet_2.png */, + 090E7BDD123F966C003EE2C3 /* thumb_poms.png */, + 090E7BCF123F965F003EE2C3 /* poms_1.png */, + 090E7BD0123F965F003EE2C3 /* poms_2.png */, + 090E7BD1123F965F003EE2C3 /* poms_3.png */, + 090E7BD2123F965F003EE2C3 /* poms_4.png */, + 090E7BD3123F965F003EE2C3 /* poms_5.png */, + 090E7BD4123F965F003EE2C3 /* poms_6.png */, + 09AB6C1A123EE1CB00816DB7 /* SPACE_HARRIER.FTA */, + 09AB6C1B123EE1CB00816DB7 /* thumb_bouncinferno.png */, + 09AB6C1C123EE1CB00816DB7 /* thumb_harrier.png */, + 09AB6C18123EE1BA00816DB7 /* harrier1.png */, + 09AB6C09123EE1AE00816DB7 /* bouncinferno_1.png */, + 09AB6C0A123EE1AE00816DB7 /* bouncinferno_2.png */, + 09AB6C0B123EE1AE00816DB7 /* bouncinferno_3.png */, + 09AB6C0C123EE1AE00816DB7 /* bouncinferno_4.png */, + 09AB6C0D123EE1AE00816DB7 /* bouncinferno_5.png */, + 09AB6C0E123EE1AE00816DB7 /* bouncinferno_6.png */, + 09AB6C0F123EE1AE00816DB7 /* bouncinferno_7.png */, + 09087F2B12244C0500C52D88 /* delta_1.png */, + 09087F2C12244C0500C52D88 /* delta_2.png */, + 09087F2D12244C0500C52D88 /* delta_3.png */, + 09087F2E12244C0500C52D88 /* delta_4.png */, + 09087F2F12244C0500C52D88 /* delta_5.png */, + 09087F3012244C0500C52D88 /* delta_6.png */, + 09087F3112244C0500C52D88 /* delta_7.png */, + 09087F3412244C0500C52D88 /* photonix_1.png */, + 09087F3512244C0500C52D88 /* photonix_2.png */, + 09087F3712244C0500C52D88 /* thumb_delta.png */, + 09087F3812244C0500C52D88 /* thumb_gsos.png */, + 09087F3912244C0500C52D88 /* thumb_photonix.png */, + 09BCB6271211649D009858DF /* flobynoid (2002).dsk.zip */, + 09E7BDE411FC935E00DCCFE7 /* floby1.png */, + 09E7BDE511FC935E00DCCFE7 /* floby2.png */, + 09E7BDE611FC935E00DCCFE7 /* floby3.png */, + 09E7BDE811FC935E00DCCFE7 /* list.activegsxml */, + 09E7BDE911FC935E00DCCFE7 /* MODULAE.FTA */, + 09E7BDEA11FC935E00DCCFE7 /* modulae_1.png */, + 09E7BDEB11FC935E00DCCFE7 /* modulae_10.png */, + 09E7BDEC11FC935E00DCCFE7 /* modulae_11.png */, + 09E7BDED11FC935E00DCCFE7 /* modulae_2.png */, + 09E7BDEE11FC935E00DCCFE7 /* modulae_3.png */, + 09E7BDEF11FC935E00DCCFE7 /* modulae_4.png */, + 09E7BDF011FC935E00DCCFE7 /* modulae_5.png */, + 09E7BDF111FC935E00DCCFE7 /* modulae_6.png */, + 09E7BDF211FC935E00DCCFE7 /* modulae_7.png */, + 09E7BDF311FC935E00DCCFE7 /* modulae_8.png */, + 09E7BDF411FC935E00DCCFE7 /* modulae_9.png */, + 09E7BDF511FC935E00DCCFE7 /* NOISETRACKER.FTA */, + 09E7BDF711FC935E00DCCFE7 /* noisetracker_1.png */, + 09E7BDF611FC935E00DCCFE7 /* noisetracker_0.png */, + 09E7BDF811FC935E00DCCFE7 /* noisetracker_2.png */, + 09E7BDF911FC935E00DCCFE7 /* noisetracker_3.png */, + 09E7BDFB11FC935E00DCCFE7 /* nucleus.png */, + 09E7BDFC11FC935E00DCCFE7 /* nucleus_2.png */, + 09E7BDFD11FC935E00DCCFE7 /* nucleus_c.png */, + 09E7BDFE11FC935E00DCCFE7 /* nucleus_t.png */, + 09E7BE0011FC935E00DCCFE7 /* thumb_floby.png */, + 09E7BE0111FC935E00DCCFE7 /* thumb_system6.png */, + 09E7BE0211FC935E00DCCFE7 /* thumb_modulae.png */, + 09E7BE0311FC935E00DCCFE7 /* thumb_noisetracker.png */, + 09E7BE0411FC935E00DCCFE7 /* thumb_nucleus.png */, + 09E7BE0511FC935E00DCCFE7 /* thumb_xmas.png */, + 09E7BE0611FC935E00DCCFE7 /* xmas_1.png */, + 09E7BE0711FC935E00DCCFE7 /* xmas_2.png */, + 09E7BE0811FC935E00DCCFE7 /* xmas_3.png */, + 09E7BE0911FC935E00DCCFE7 /* xmas_4.png */, + 09E7BE0A11FC935E00DCCFE7 /* xmas_5.png */, + 09E7BE0B11FC935E00DCCFE7 /* xmas_6.png */, + 09E7BE0C11FC935E00DCCFE7 /* xmas_7.png */, + 09E7BE0D11FC935E00DCCFE7 /* xmas_8.png */, + 09E7BE0E11FC935E00DCCFE7 /* XMASDEMO.FTA */, + ); + name = DefaultPackage; + path = ../DefaultPackage; + sourceTree = SOURCE_ROOT; + }; + 09FA6078125A7B3E00B07F77 /* Common.iphone */ = { + isa = PBXGroup; + children = ( + 0907BCC7142F567A0051CA0A /* asynccommand.h */, + 0907BCC8142F567A0051CA0A /* asynccommand.mm */, + 0972554513CF2232006194F9 /* activegsEmulatorController.h */, + 0972554613CF2232006194F9 /* activegsEmulatorController.mm */, + 09A5CE5E125D41860018DC22 /* infoViewController.h */, + 09A5CE5F125D41860018DC22 /* infoViewController.mm */, + 09AADC76125C560A00654DF1 /* detailViewController.h */, + 09AADC77125C560A00654DF1 /* detailViewController.mm */, + 09FA6079125A7B3E00B07F77 /* activegsAppDelegate.h */, + 09FA607A125A7B3E00B07F77 /* activegsAppDelegate.mm */, + 09FA607B125A7B3E00B07F77 /* activegsList.h */, + 09FA607C125A7B3E00B07F77 /* activegsList.mm */, + 09FA607D125A7B3E00B07F77 /* activegsViewController.h */, + 09FA607E125A7B3E00B07F77 /* activegsViewController.mm */, + 09FA607F125A7B3E00B07F77 /* activegsViewController.xib */, + 09FA6082125A7B3E00B07F77 /* asyncimageview.h */, + 09FA6083125A7B3E00B07F77 /* asyncimageview.mm */, + 09FA6086125A7B3E00B07F77 /* GTMUIView+SubtreeDescription.h */, + 09FA6087125A7B3E00B07F77 /* GTMUIView+SubtreeDescription.m */, + 09FA6088125A7B3E00B07F77 /* icon_APPLE 2.png */, + 09FA6089125A7B3E00B07F77 /* icon_APPLE 2GS.png */, + 09FA608A125A7B3E00B07F77 /* KBDController.h */, + 09FA608B125A7B3E00B07F77 /* KBDController.mm */, + ); + name = Common.iphone; + path = ../Common.iphone; + sourceTree = SOURCE_ROOT; + }; + 19C28FACFE9D520D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 0913BFCF13033D77004B3039 /* ActiveGS.app */, + ); + name = Products; + sourceTree = ""; + }; + 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { + isa = PBXGroup; + children = ( + 7E8EED6A1A7D83C900C6E522 /* Entitlements.plist */, + 096604C819127DB700A22C51 /* activegs.plist */, + 09052B4219053C9F00853FAE /* Libraries */, + 09520D8516AEF8250065E84A /* Drivers */, + 09C81AA01657AD18008539D5 /* iOS */, + 09C81A911657ACDC008539D5 /* OSX */, + 09C81A351657ACAE008539D5 /* Src */, + 09B8EB85163B2C06000A9F6B /* xib */, + 09FA6078125A7B3E00B07F77 /* Common.iphone */, + 7E51480B1CA6B5CE005DA0A6 /* Common.res */, + 09BB434811D92F70005ADA46 /* Common */, + 09BB434011D92F65005ADA46 /* Common.osx */, + 29B97315FDCFA39411CA2CEA /* Other Sources */, + 29B97317FDCFA39411CA2CEA /* Resources */, + 29B97323FDCFA39411CA2CEA /* Frameworks */, + 09B8EB86163B2F34000A9F6B /* Private Framework */, + 19C28FACFE9D520D11CA2CBB /* Products */, + ); + name = CustomTemplate; + sourceTree = ""; + }; + 29B97315FDCFA39411CA2CEA /* Other Sources */ = { + isa = PBXGroup; + children = ( + 32CA4F630368D1EE00C91783 /* activegs_Prefix.pch */, + 29B97316FDCFA39411CA2CEA /* main.mm */, + ); + name = "Other Sources"; + sourceTree = ""; + }; + 29B97317FDCFA39411CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + 090A6076163093D800C8FB59 /* Default-568h@2x.png */, + 095542A6128375C40035AE09 /* Tab][.png */, + 095542A7128375C40035AE09 /* Tab][@2x.png */, + 0902FEC712820467002E7C03 /* Tab2GS.png */, + 0955429E12836F4D0035AE09 /* Tab2GS@2x.png */, + 0902FEEE12820678002E7C03 /* TabFTA.png */, + 0902FEE612820626002E7C03 /* TabFTA@2x.png */, + 0971D930126E4BE500EEBB1E /* icon72.png */, + 0982685C124028E00064F134 /* icon.png */, + 0982685D124028E00064F134 /* icon@2x.png */, + 09AB6C24123EE2FA00816DB7 /* Default.png */, + 09E7BDE311FC935E00DCCFE7 /* DefaultPackage */, + ); + name = Resources; + sourceTree = ""; + }; + 29B97323FDCFA39411CA2CEA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 095036E8190547BE006A457A /* CoreLocation.framework */, + 095036E6190547A0006A457A /* AdSupport.framework */, + 095036E419054799006A457A /* CoreData.framework */, + 0905905113A76C23006E67D7 /* AudioToolbox.framework */, + 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, + 1D30AB110D05D00D00671497 /* Foundation.framework */, + 288765A40DF7441C002DB57D /* CoreGraphics.framework */, + 09BB43DB11D93063005ADA46 /* OpenAL.framework */, + 09BB43E211D93087005ADA46 /* CFNetwork.framework */, + 099B5B8011F62D4900E597B6 /* QuartzCore.framework */, + 09712D81133B66E4007AAADF /* SystemConfiguration.framework */, + 09712D85133B66F0007AAADF /* CoreTelephony.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 7E51480B1CA6B5CE005DA0A6 /* Common.res */ = { + isa = PBXGroup; + children = ( + 7E51480C1CA6B5CE005DA0A6 /* ActiveGS.png */, + 7E51480D1CA6B5CE005DA0A6 /* Apple_2_Disk_Drive_Sounds.txt */, + 7E51480E1CA6B5CE005DA0A6 /* disk.png */, + 7E51480F1CA6B5CE005DA0A6 /* disk_35_1.png */, + 7E5148101CA6B5CE005DA0A6 /* disk_35_2.png */, + 7E5148111CA6B5CE005DA0A6 /* disk_525_1.png */, + 7E5148121CA6B5CE005DA0A6 /* disk_525_2.png */, + 7E5148131CA6B5CE005DA0A6 /* facebook-logo.png */, + 7E5148141CA6B5CE005DA0A6 /* floppy_eject.wav */, + 7E5148151CA6B5CE005DA0A6 /* logo_apple2.png */, + 7E5148161CA6B5CE005DA0A6 /* logo_apple2gs.png */, + 7E5148171CA6B5CE005DA0A6 /* Search Skip Search 1.wav */, + 7E5148181CA6B5CE005DA0A6 /* Search Skip Search 2.wav */, + 7E5148191CA6B5CE005DA0A6 /* Search Skip Search 3.wav */, + 7E51481A1CA6B5CE005DA0A6 /* Search Skip Search 4.wav */, + 7E51481B1CA6B5CE005DA0A6 /* Search Skip Search 5.wav */, + 7E51481C1CA6B5CE005DA0A6 /* ShastonHi640.ttf */, + 7E51481D1CA6B5CE005DA0A6 /* Spin Up Search 1.wav */, + 7E51481E1CA6B5CE005DA0A6 /* Spin Up Search 2.wav */, + ); + name = Common.res; + path = /Users/ogoguel/Code/ActiveGS/Common.res; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1D6058900D05DD3D006BFB54 /* ActiveGS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "ActiveGS" */; + buildPhases = ( + 1D60588D0D05DD3D006BFB54 /* Resources */, + 1D60588E0D05DD3D006BFB54 /* Sources */, + 1D60588F0D05DD3D006BFB54 /* Frameworks */, + 095F842613AFDD9C009C540E /* CopyFiles */, + 095981521A3E1A76007C90A8 /* ShellScript */, + ); + buildRules = ( + 095981511A3E1A2D007C90A8 /* PBXBuildRule */, + ); + dependencies = ( + ); + name = ActiveGS; + productName = activegs; + productReference = 0913BFCF13033D77004B3039 /* ActiveGS.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 29B97313FDCFA39411CA2CEA /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0710; + TargetAttributes = { + 1D6058900D05DD3D006BFB54 = { + DevelopmentTeam = SQ9T3Q7RV4; + SystemCapabilities = { + com.apple.DataProtection = { + enabled = 0; + }; + }; + }; + }; + }; + buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "activegs" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 1D6058900D05DD3D006BFB54 /* ActiveGS */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 1D60588D0D05DD3D006BFB54 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7E5148201CA6B5CE005DA0A6 /* Apple_2_Disk_Drive_Sounds.txt in Resources */, + 09E7BE0F11FC935E00DCCFE7 /* floby1.png in Resources */, + 09E7BE1011FC935E00DCCFE7 /* floby2.png in Resources */, + 09E7BE1111FC935E00DCCFE7 /* floby3.png in Resources */, + 09E7BE1311FC935E00DCCFE7 /* list.activegsxml in Resources */, + 09E7BE1411FC935E00DCCFE7 /* MODULAE.FTA in Resources */, + 09E7BE1511FC935E00DCCFE7 /* modulae_1.png in Resources */, + 09E7BE1611FC935E00DCCFE7 /* modulae_10.png in Resources */, + 7E5148231CA6B5CE005DA0A6 /* disk_35_2.png in Resources */, + 09E7BE1711FC935E00DCCFE7 /* modulae_11.png in Resources */, + 09E7BE1811FC935E00DCCFE7 /* modulae_2.png in Resources */, + 09E7BE1911FC935E00DCCFE7 /* modulae_3.png in Resources */, + 09E7BE1A11FC935E00DCCFE7 /* modulae_4.png in Resources */, + 09E7BE1B11FC935E00DCCFE7 /* modulae_5.png in Resources */, + 09E7BE1C11FC935E00DCCFE7 /* modulae_6.png in Resources */, + 09E7BE1D11FC935E00DCCFE7 /* modulae_7.png in Resources */, + 09E7BE1E11FC935E00DCCFE7 /* modulae_8.png in Resources */, + 09E7BE1F11FC935E00DCCFE7 /* modulae_9.png in Resources */, + 09E7BE2011FC935E00DCCFE7 /* NOISETRACKER.FTA in Resources */, + 09E7BE2111FC935E00DCCFE7 /* noisetracker_0.png in Resources */, + 09E7BE2211FC935E00DCCFE7 /* noisetracker_1.png in Resources */, + 09E7BE2311FC935E00DCCFE7 /* noisetracker_2.png in Resources */, + 09E7BE2411FC935E00DCCFE7 /* noisetracker_3.png in Resources */, + 7E51482B1CA6B5CE005DA0A6 /* Search Skip Search 2.wav in Resources */, + 09E7BE2611FC935E00DCCFE7 /* nucleus.png in Resources */, + 09E7BE2711FC935E00DCCFE7 /* nucleus_2.png in Resources */, + 09E7BE2811FC935E00DCCFE7 /* nucleus_c.png in Resources */, + 09E7BE2911FC935E00DCCFE7 /* nucleus_t.png in Resources */, + 09E7BE2B11FC935E00DCCFE7 /* thumb_floby.png in Resources */, + 09E7BE2C11FC935E00DCCFE7 /* thumb_system6.png in Resources */, + 09E7BE2D11FC935E00DCCFE7 /* thumb_modulae.png in Resources */, + 09E7BE2E11FC935E00DCCFE7 /* thumb_noisetracker.png in Resources */, + 7E5148291CA6B5CE005DA0A6 /* logo_apple2gs.png in Resources */, + 09E7BE2F11FC935E00DCCFE7 /* thumb_nucleus.png in Resources */, + 09E7BE3011FC935E00DCCFE7 /* thumb_xmas.png in Resources */, + 09E7BE3111FC935E00DCCFE7 /* xmas_1.png in Resources */, + 09E7BE3211FC935E00DCCFE7 /* xmas_2.png in Resources */, + 09E7BE3311FC935E00DCCFE7 /* xmas_3.png in Resources */, + 09E7BE3411FC935E00DCCFE7 /* xmas_4.png in Resources */, + 09E7BE3511FC935E00DCCFE7 /* xmas_5.png in Resources */, + 09E7BE3611FC935E00DCCFE7 /* xmas_6.png in Resources */, + 7E5148211CA6B5CE005DA0A6 /* disk.png in Resources */, + 09E7BE3711FC935E00DCCFE7 /* xmas_7.png in Resources */, + 09E7BE3811FC935E00DCCFE7 /* xmas_8.png in Resources */, + 09E7BE3911FC935E00DCCFE7 /* XMASDEMO.FTA in Resources */, + 09BCB6281211649D009858DF /* flobynoid (2002).dsk.zip in Resources */, + 09087F3A12244C0500C52D88 /* delta_1.png in Resources */, + 09087F3B12244C0500C52D88 /* delta_2.png in Resources */, + 09087F3C12244C0500C52D88 /* delta_3.png in Resources */, + 09087F3D12244C0500C52D88 /* delta_4.png in Resources */, + 09087F3E12244C0500C52D88 /* delta_5.png in Resources */, + 09087F3F12244C0500C52D88 /* delta_6.png in Resources */, + 7E5148311CA6B5CE005DA0A6 /* Spin Up Search 2.wav in Resources */, + 09087F4012244C0500C52D88 /* delta_7.png in Resources */, + 09087F4312244C0500C52D88 /* photonix_1.png in Resources */, + 09087F4412244C0500C52D88 /* photonix_2.png in Resources */, + 09087F4612244C0500C52D88 /* thumb_delta.png in Resources */, + 7E51482E1CA6B5CE005DA0A6 /* Search Skip Search 5.wav in Resources */, + 09087F4712244C0500C52D88 /* thumb_gsos.png in Resources */, + 09087F4812244C0500C52D88 /* thumb_photonix.png in Resources */, + 09AB6C11123EE1AE00816DB7 /* bouncinferno_1.png in Resources */, + 7E5148251CA6B5CE005DA0A6 /* disk_525_2.png in Resources */, + 09AB6C12123EE1AE00816DB7 /* bouncinferno_2.png in Resources */, + 09AB6C13123EE1AE00816DB7 /* bouncinferno_3.png in Resources */, + 09AB6C14123EE1AE00816DB7 /* bouncinferno_4.png in Resources */, + 09AB6C15123EE1AE00816DB7 /* bouncinferno_5.png in Resources */, + 09AB6C16123EE1AE00816DB7 /* bouncinferno_6.png in Resources */, + 7E51482A1CA6B5CE005DA0A6 /* Search Skip Search 1.wav in Resources */, + 09AB6C17123EE1AE00816DB7 /* bouncinferno_7.png in Resources */, + 09AB6C19123EE1BA00816DB7 /* harrier1.png in Resources */, + 09AB6C1D123EE1CB00816DB7 /* SPACE_HARRIER.FTA in Resources */, + 09AB6C1E123EE1CB00816DB7 /* thumb_bouncinferno.png in Resources */, + 09AB6C1F123EE1CB00816DB7 /* thumb_harrier.png in Resources */, + 09AB6C25123EE2FA00816DB7 /* Default.png in Resources */, + 7E51482F1CA6B5CE005DA0A6 /* ShastonHi640.ttf in Resources */, + 7E5148301CA6B5CE005DA0A6 /* Spin Up Search 1.wav in Resources */, + 090E7BD6123F965F003EE2C3 /* poms_1.png in Resources */, + 7E51482D1CA6B5CE005DA0A6 /* Search Skip Search 4.wav in Resources */, + 090E7BD7123F965F003EE2C3 /* poms_2.png in Resources */, + 090E7BD8123F965F003EE2C3 /* poms_3.png in Resources */, + 090E7BD9123F965F003EE2C3 /* poms_4.png in Resources */, + 090E7BDA123F965F003EE2C3 /* poms_5.png in Resources */, + 090E7BDB123F965F003EE2C3 /* poms_6.png in Resources */, + 090E7BDE123F966C003EE2C3 /* thumb_poms.png in Resources */, + 0982685E124028E00064F134 /* icon.png in Resources */, + 0982685F124028E00064F134 /* icon@2x.png in Resources */, + 09FA6098125A7B3E00B07F77 /* activegsViewController.xib in Resources */, + 09FA609D125A7B3E00B07F77 /* icon_APPLE 2.png in Resources */, + 09FA609E125A7B3E00B07F77 /* icon_APPLE 2GS.png in Resources */, + 09A5CE76125D422D0018DC22 /* infoViewController.xib in Resources */, + 7E5148261CA6B5CE005DA0A6 /* facebook-logo.png in Resources */, + 099CD905125E6F6E008EFD6C /* detailViewController.xib in Resources */, + 0971D931126E4BE500EEBB1E /* icon72.png in Resources */, + 09FD36F31278CCEB009C31AB /* BLUE_HELMET.FTA in Resources */, + 09FD36F41278CCEB009C31AB /* bluehelmet_1.png in Resources */, + 09FD36F51278CCEB009C31AB /* bluehelmet_2.png in Resources */, + 0902FEC812820467002E7C03 /* Tab2GS.png in Resources */, + 0902FEE712820626002E7C03 /* TabFTA@2x.png in Resources */, + 0902FEEF12820678002E7C03 /* TabFTA.png in Resources */, + 0955429F12836F4D0035AE09 /* Tab2GS@2x.png in Resources */, + 095542A8128375C40035AE09 /* Tab][.png in Resources */, + 095542A9128375C40035AE09 /* Tab][@2x.png in Resources */, + 7E8EED6B1A7D83C900C6E522 /* Entitlements.plist in Resources */, + 09AF98051283F0DF00083D60 /* Oil_Landers.fta in Resources */, + 09AF980C1283F12200083D60 /* StarWizard (2002).fta in Resources */, + 09AF980D1283F12200083D60 /* starwizard_2.png in Resources */, + 09AF980E1283F12200083D60 /* starwizard_3.png in Resources */, + 7E5148271CA6B5CE005DA0A6 /* floppy_eject.wav in Resources */, + 09AF980F1283F12200083D60 /* starwizard_4.png in Resources */, + 09AF98101283F12200083D60 /* starwizard_5.png in Resources */, + 09AF98111283F12200083D60 /* starwizard.png in Resources */, + 7E51482C1CA6B5CE005DA0A6 /* Search Skip Search 3.wav in Resources */, + 09D8BCF91285EFE900B6D785 /* miniprix_1.png in Resources */, + 09D8BCFC1285EFFA00B6D785 /* miniprix_2.png in Resources */, + 09D8BCFD1285EFFA00B6D785 /* miniprix_3.png in Resources */, + 09D8BD031285F00C00B6D785 /* oillanders_1.png in Resources */, + 09D8BD041285F00C00B6D785 /* oillanders_2.png in Resources */, + 09D8BD051285F00C00B6D785 /* oillanders_3.png in Resources */, + 09D8BD061285F00C00B6D785 /* oillanders_4.png in Resources */, + 7E5148281CA6B5CE005DA0A6 /* logo_apple2.png in Resources */, + 09D8BD071285F00C00B6D785 /* oillanders_5.png in Resources */, + 0916BB04129473CE001727AF /* infoViewController-ipad.xib in Resources */, + 090A6077163093D800C8FB59 /* Default-568h@2x.png in Resources */, + 09C81A991657ACDD008539D5 /* 2mg.icns in Resources */, + 7E5148221CA6B5CE005DA0A6 /* disk_35_1.png in Resources */, + 09C81A9A1657ACDD008539D5 /* 525.icns in Resources */, + 0941E66E1670E086003E0411 /* NUCLEUS.FTA in Resources */, + 7E51481F1CA6B5CE005DA0A6 /* ActiveGS.png in Resources */, + 0941E6701670E143003E0411 /* DELTA.FTA in Resources */, + 0941E6721670E23F003E0411 /* PHOTONIX.FTA in Resources */, + 0941E6751670E391003E0411 /* BOUNCIN_FERNO.FTA in Resources */, + 0941E6761670E391003E0411 /* MINIPRIX.FTA in Resources */, + 7E5148241CA6B5CE005DA0A6 /* disk_525_1.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 095981521A3E1A76007C90A8 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "sh ~/Code/ActiveGS/xcodebuild.sh"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 1D60588E0D05DD3D006BFB54 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1D60589B0D05DD56006BFB54 /* main.mm in Sources */, + 09BB434511D92F65005ADA46 /* ActiveDownloadMac.cpp in Sources */, + 09BB434711D92F65005ADA46 /* CEmulatorCtrlMac.cpp in Sources */, + 09BB43B011D92F70005ADA46 /* activeconfig.cpp in Sources */, + 09BB43B111D92F70005ADA46 /* ActiveDownload.cpp in Sources */, + 09052B9419053C9F00853FAE /* uncompr.cpp in Sources */, + 09BB43B211D92F70005ADA46 /* ActiveZip.cpp in Sources */, + 09052B8619053C9F00853FAE /* pngwtran.cpp in Sources */, + 09052B8B19053C9F00853FAE /* zip.cpp in Sources */, + 09BB43B311D92F70005ADA46 /* CA2Text.cpp in Sources */, + 09BB43B411D92F70005ADA46 /* CEmulatorCtrl.cpp in Sources */, + 09BB43B511D92F70005ADA46 /* interface.cpp in Sources */, + 09BB43B611D92F70005ADA46 /* libpng.cpp in Sources */, + 09BB43B711D92F70005ADA46 /* rom.cpp in Sources */, + 09FA6095125A7B3E00B07F77 /* activegsAppDelegate.mm in Sources */, + 09052B8119053C9F00853FAE /* pngset.cpp in Sources */, + 09FA6096125A7B3E00B07F77 /* activegsList.mm in Sources */, + 09FA6097125A7B3E00B07F77 /* activegsViewController.mm in Sources */, + 09052B8D19053C9F00853FAE /* compress.cpp in Sources */, + 09052B8E19053C9F00853FAE /* crc32.cpp in Sources */, + 09FA609A125A7B3E00B07F77 /* asyncimageview.mm in Sources */, + 09FA609C125A7B3E00B07F77 /* GTMUIView+SubtreeDescription.m in Sources */, + 09052B8F19053C9F00853FAE /* deflate.cpp in Sources */, + 09FA609F125A7B3E00B07F77 /* KBDController.mm in Sources */, + 09AADC78125C560A00654DF1 /* detailViewController.mm in Sources */, + 09A5CE60125D41860018DC22 /* infoViewController.mm in Sources */, + 0972554713CF2232006194F9 /* activegsEmulatorController.mm in Sources */, + 0907BCC9142F567A0051CA0A /* asynccommand.mm in Sources */, + 09052B7D19053C9F00853FAE /* pngread.cpp in Sources */, + 09C81A781657ACAE008539D5 /* adb.cpp in Sources */, + 09C81A791657ACAE008539D5 /* async_event.cpp in Sources */, + 09C81A7A1657ACAE008539D5 /* clock.cpp in Sources */, + 09052B9119053C9F00853FAE /* inflate.cpp in Sources */, + 09C81A7B1657ACAE008539D5 /* compile_time.cpp in Sources */, + 09C81A7C1657ACAE008539D5 /* compression.cpp in Sources */, + 09C81A7D1657ACAE008539D5 /* config_generic.cpp in Sources */, + 09052B8C19053C9F00853FAE /* adler32.cpp in Sources */, + 09C81A7F1657ACAE008539D5 /* dis.cpp in Sources */, + 09C81A801657ACAE008539D5 /* engine_c.cpp in Sources */, + 09C81A811657ACAE008539D5 /* GraphCounter.cpp in Sources */, + 09C81A821657ACAE008539D5 /* iwm.cpp in Sources */, + 09C81A831657ACAE008539D5 /* marinetti.cpp in Sources */, + 09052B9319053C9F00853FAE /* trees.cpp in Sources */, + 09C81A841657ACAE008539D5 /* marinetti_helper.cpp in Sources */, + 09C81A851657ACAE008539D5 /* moremem.cpp in Sources */, + 09C81A861657ACAE008539D5 /* openalasync_snddriver.cpp in Sources */, + 09052B8219053C9F00853FAE /* pngtrans.cpp in Sources */, + 09C81A871657ACAE008539D5 /* paddles.cpp in Sources */, + 09C81A881657ACAE008539D5 /* SaveState.cpp in Sources */, + 09C81A891657ACAE008539D5 /* scc.cpp in Sources */, + 09C81A8A1657ACAE008539D5 /* scc_socket_driver.cpp in Sources */, + 09052B8319053C9F00853FAE /* pngvcrd.cpp in Sources */, + 09C81A8B1657ACAE008539D5 /* sim65816.cpp in Sources */, + 09C81A8C1657ACAE008539D5 /* smartport.cpp in Sources */, + 09052B9019053C9F00853FAE /* inffast.cpp in Sources */, + 09C81A8D1657ACAE008539D5 /* sound.cpp in Sources */, + 09052B7819053C9F00853FAE /* pngerror.cpp in Sources */, + 09052B7B19053C9F00853FAE /* pngmem.cpp in Sources */, + 09C81A8E1657ACAE008539D5 /* sound_driver.cpp in Sources */, + 09052B7719053C9F00853FAE /* png.cpp in Sources */, + 09C81A901657ACAE008539D5 /* video.cpp in Sources */, + 09052B7E19053C9F00853FAE /* pngrio.cpp in Sources */, + 09C81A9B1657ACDD008539D5 /* macdriver_activegs.cpp in Sources */, + 09C81A9C1657ACDD008539D5 /* macdriver_generic.cpp in Sources */, + 09052B8919053C9F00853FAE /* iowin32.cpp in Sources */, + 09C81A9F1657ACDD008539D5 /* scc_macdriver.cpp in Sources */, + 09C81AA71657AD18008539D5 /* emulatorView.mm in Sources */, + 09C81AA81657AD18008539D5 /* joystick_iphone.cpp in Sources */, + 09C81AA91657AD18008539D5 /* zoomEmulatorView.mm in Sources */, + 09052B7F19053C9F00853FAE /* pngrtran.cpp in Sources */, + 09052B7A19053C9F00853FAE /* pngget.cpp in Sources */, + 09052B7919053C9F00853FAE /* pnggccrd.cpp in Sources */, + 09052B9219053C9F00853FAE /* inftrees.cpp in Sources */, + 09052B8819053C9F00853FAE /* ioapi.cpp in Sources */, + 09052B7C19053C9F00853FAE /* pngpread.cpp in Sources */, + 09052B8419053C9F00853FAE /* pngwio.cpp in Sources */, + 09052B8719053C9F00853FAE /* pngwutil.cpp in Sources */, + 09052B8A19053C9F00853FAE /* unzip.cpp in Sources */, + 09052B9519053C9F00853FAE /* zutil.cpp in Sources */, + 09052B8519053C9F00853FAE /* pngwrite.cpp in Sources */, + 09052B8019053C9F00853FAE /* pngrutil.cpp in Sources */, + 0941E6AB16720840003E0411 /* ActiveGSList.cpp in Sources */, + 0941E6AF16720886003E0411 /* simplexml.cpp in Sources */, + 09520D8316AEF8130065E84A /* driver.cpp in Sources */, + 09520D8916AEF8250065E84A /* activegs_driver.cpp in Sources */, + 09520D8E16AEF8650065E84A /* apple2e.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 09A284A112383EE600EA12DF /* Distribution */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_THUMB_SUPPORT = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 4.3; + PROVISIONING_PROFILE = ""; + SDKROOT = iphoneos; + }; + name = Distribution; + }; + 09A284A212383EE600EA12DF /* Distribution */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CODE_SIGN_ENTITLEMENTS = Entitlements.plist; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = activegs_Prefix.pch; + GCC_PREPROCESSOR_DEFINITIONS = ( + USE_RASTER, + ACTIVEGSPLUGIN, + ACTIVEGS, + KEGS91, + KEGS_LITTLE_ENDIAN, + VIDEO_SINGLEVLINE, + DRIVER_IOS, + ); + GCC_THUMB_SUPPORT = NO; + GCC_VERSION = ""; + INFOPLIST_FILE = activegs.plist; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks/GraphicsServices.framework\"", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.freetoolsassociation.activegs; + PRODUCT_NAME = ActiveGS; + PROVISIONING_PROFILE = ""; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Distribution; + }; + 1D6058940D05DD3E006BFB54 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CODE_SIGN_ENTITLEMENTS = Entitlements.plist; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = activegs_Prefix.pch; + GCC_PREPROCESSOR_DEFINITIONS = ( + USE_RASTER, + _DEBUG, + ACTIVEGSPLUGIN, + ACTIVEGS, + KEGS_LITTLE_ENDIAN, + VIDEO_SINGLEVLINE, + DRIVER_IOS, + ); + GCC_THUMB_SUPPORT = NO; + GCC_VERSION = ""; + INFOPLIST_FILE = activegs.plist; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks/GraphicsServices.framework\"", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.freetoolsassociation.activegs; + PRODUCT_NAME = ActiveGS; + PROVISIONING_PROFILE = ""; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 1D6058950D05DD3E006BFB54 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CODE_SIGN_ENTITLEMENTS = Entitlements.plist; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = activegs_Prefix.pch; + GCC_PREPROCESSOR_DEFINITIONS = ( + USE_RASTER, + ACTIVEGSPLUGIN, + ACTIVEGS, + KEGS_LITTLE_ENDIAN, + VIDEO_SINGLEVLINE, + DRIVER_IOS, + ); + GCC_THUMB_SUPPORT = NO; + GCC_VERSION = ""; + INFOPLIST_FILE = activegs.plist; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks/GraphicsServices.framework\"", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.freetoolsassociation.activegs; + PRODUCT_NAME = ActiveGS; + PROVISIONING_PROFILE = ""; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + C01FCF4F08A954540054247B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_THUMB_SUPPORT = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 4.3; + ONLY_ACTIVE_ARCH = YES; + PROVISIONING_PROFILE = ""; + SDKROOT = iphoneos; + }; + name = Debug; + }; + C01FCF5008A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_THUMB_SUPPORT = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 4.3; + PROVISIONING_PROFILE = ""; + SDKROOT = iphoneos; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "ActiveGS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1D6058940D05DD3E006BFB54 /* Debug */, + 1D6058950D05DD3E006BFB54 /* Release */, + 09A284A212383EE600EA12DF /* Distribution */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Distribution; + }; + C01FCF4E08A954540054247B /* Build configuration list for PBXProject "activegs" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4F08A954540054247B /* Debug */, + C01FCF5008A954540054247B /* Release */, + 09A284A112383EE600EA12DF /* Distribution */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Distribution; + }; +/* End XCConfigurationList section */ + }; + rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; +} diff --git a/ActiveGS_iOS/activegs.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ActiveGS_iOS/activegs.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..d25ed1f --- /dev/null +++ b/ActiveGS_iOS/activegs.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ActiveGS_iOS/activegs_Prefix.pch b/ActiveGS_iOS/activegs_Prefix.pch new file mode 100644 index 0000000..6fb9a91 --- /dev/null +++ b/ActiveGS_iOS/activegs_Prefix.pch @@ -0,0 +1,8 @@ +// +// Prefix header for all source files of the 'activegs' target in the 'activegs' project +// + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/ActiveGS_iOS/iTunesArtwork b/ActiveGS_iOS/iTunesArtwork new file mode 100644 index 0000000000000000000000000000000000000000..b79aa889cdaa326f00aa6f34ddc5ce8d6172e367 GIT binary patch literal 233114 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 literal 0 HcmV?d00001 diff --git a/ActiveGS_iOS/icon72.png b/ActiveGS_iOS/icon72.png new file mode 100644 index 0000000000000000000000000000000000000000..a0a0d21455e1eb93c830bd274ecfdeb8c6844c60 GIT binary patch literal 9477 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 X)OvLs*aNYs00000NkvXXu0mjf@=TSL literal 0 HcmV?d00001 diff --git a/ActiveGS_iOS/icon@2x.png b/ActiveGS_iOS/icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ee861ffdaa41387154640fd314db68c2307ab5ea GIT binary patch literal 17617 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 X)OvLs*aNYs00000NkvXXu0mjf@=TSL literal 0 HcmV?d00001 diff --git a/ActiveGS_iOS/infoViewController-ipad.xib b/ActiveGS_iOS/infoViewController-ipad.xib new file mode 100644 index 0000000..9b83ab1 --- /dev/null +++ b/ActiveGS_iOS/infoViewController-ipad.xib @@ -0,0 +1,923 @@ + + + + 1552 + 13F34 + 6254 + 1265.21 + 698.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 6247 + + + IBProxyObject + IBUIButton + IBUIImageView + IBUILabel + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 293 + {{344, 336}, {80, 77}} + + + + NO + YES + 4 + YES + IBCocoaTouchFramework + + NSImage + ActiveGS.png + + + + + 269 + {{333, 727}, {101, 37}} + + + + NO + IBCocoaTouchFramework + 0 + 0 + 1 + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + 3 + MQA + + I'm Happy! + + 3 + MC41AA + + + Helvetica-Bold + Helvetica + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 293 + {{224, 297}, {320, 44}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + ActiveGS + + 1 + MCAwIDAAA + darkTextColor + + + + {2, 2} + 1 + 10 + 1 + + Helvetica-Bold + Helvetica + 2 + 36 + + + Helvetica-Bold + 36 + 16 + + YES + + + + 293 + {{270, 416}, {228, 25}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + (version) + + + 1 + 10 + 1 + + 1 + 17 + + + HelveticaNeue + 17 + 16 + + YES + + + + 269 + {{274, 789}, {219, 30}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + For support and/or feedback, please visit + + + 1 + 10 + 3 + 1 + + Helvetica + Helvetica + 0 + 12 + + + Helvetica + 12 + 16 + + 219 + + + + 317 + {{244, 533}, {280, 132}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + c3dpcGUgZG93biBmb3IgcnVuLXRpbWUgbWVudQpzd2lwZSB1cCBmb3Iga2V5Ym9hcmQKc3dpcGUgdXAg +Zm9yIGpveXBhZCAod2hpbGUga2V5Ym9hcmQgaXMgc2hvd24pCmRvdWJsZSB0YXAgZm9yIG1vdXNlIGNs +aWNrCnRyaXBsZSB0YXAgZm9yIG1vdXNlIGRvdWJsZS1jbGljawpzd2lwZSBsZWZ0L3JpZ2h0IG9uIHRv +cCBzY3JlZW4gZm9yIHNob3J0Y3V0IHRvIGJyb3dzZQo + + + {0, 0} + 1 + 4 + 0 + 1 + 2 + + + 280 + + + + 317 + {{303, 506}, {162, 57}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + Commands: + + + 1 + 10 + 3 + 1 + + Helvetica-Bold + Helvetica + 2 + 17 + + + Helvetica-Bold + 17 + 16 + + 162 + + + + 269 + {{368, 819}, {32, 32}} + + + + NO + IBCocoaTouchFramework + 0 + 0 + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + Facebook + + + NSImage + facebook-logo.png + + + + + + + 269 + {{233, 876}, {311, 30}} + + + NO + YES + 7 + NO + IBCocoaTouchFramework + (Dedicated to Benzebut, ActiveGS chief bug hunter!) + + + 1 + 3 + 1 + + + 311 + + + {768, 1024} + + + + + 3 + MQA + + 2 + + + + IBUISimulatedFreeformSizeMetricsSentinel + Freeform + + IBCocoaTouchFramework + + + + 274 + + + + 293 + {{472, 237}, {80, 77}} + + NO + YES + 4 + YES + IBCocoaTouchFramework + + + + + 265 + {{461, 544}, {101, 37}} + + NO + IBCocoaTouchFramework + 0 + 0 + 1 + + + I'm Happy! + + + + + + + 293 + {{379, 191}, {265, 38}} + + NO + YES + 7 + NO + IBCocoaTouchFramework + ActiveGS + + + + {2, 2} + 1 + 10 + 1 + + + YES + + + + 293 + {{397, 322}, {228, 25}} + + NO + YES + 7 + NO + IBCocoaTouchFramework + (version) + + + 1 + 10 + 1 + + + YES + + + + 268 + {{406, 598}, {219, 30}} + + NO + YES + 7 + NO + IBCocoaTouchFramework + For support and/or feedback, please visit + + + 1 + 10 + 3 + 1 + + + 219 + + + + 317 + {{371, 389}, {280, 134}} + + NO + YES + 7 + NO + IBCocoaTouchFramework + c3dpcGUgZG93biBmb3IgcnVuLXRpbWUgbWVudQpzd2lwZSB1cCBmb3Iga2V5Ym9hcmQKc3dpcGUgdXAg +Zm9yIGpveXBhZCAod2hpbGUga2V5Ym9hcmQgaXMgc2hvd24pCmRvdWJsZSB0YXAgZm9yIG1vdXNlIGNs +aWNrCnRyaXBsZSB0YXAgZm9yIG1vdXNlIGRvdWJsZS1jbGljawpzd2lwZSBsZWZ0L3JpZ2h0IG9uIHRv +cCBzY3JlZW4gZm9yIHNob3J0Y3V0IHRvIGJyb3dzZQo + + + {0, 0} + 1 + 4 + 0 + 1 + 2 + + + 280 + + + + 317 + {{431, 389}, {162, 17}} + + NO + YES + 7 + NO + IBCocoaTouchFramework + Commands: + + + 1 + 10 + 3 + 1 + + + 162 + + + + 269 + {{495, 628}, {32, 32}} + + + NO + IBCocoaTouchFramework + 0 + 0 + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + Facebook + + + + + + + + 269 + {{353, 676}, {317, 30}} + + NO + YES + 7 + NO + IBCocoaTouchFramework + (Dedicated to Benzebut, ActiveGS chief bug hunter!) + + + 1 + 3 + 1 + + + 317 + + + {1024, 768} + + 3 + MQA + + + + 3 + 3 + + + IBCocoaTouchFramework + + + + + + + view + + + + 3 + + + + versionUI + + + + 12 + + + + landscapeView + + + + 33 + + + + portraitView + + + + 34 + + + + versionUILandscape + + + + 35 + + + + doneButton: + + + 7 + + 9 + + + + doneButton: + + + 7 + + 31 + + + + emailButton: + + + 1 + + 42 + + + + emailButton: + + + 1 + + 45 + + + + + + 0 + + + + + + 1 + + + + + + + + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + 5 + + + + + 10 + + + + + 11 + + + + + 13 + + + + + 23 + + + + + + + + + + + + + + ViewLandscape + + + 24 + + + + + 25 + + + + + 27 + + + + + 28 + + + + + 29 + + + + + 36 + + + + + 37 + + + + + 38 + + + + + 39 + + + + + 40 + + + + + 41 + + + + + 43 + + + + + 44 + + + + + + + infoViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 45 + + + + + infoViewController + UIVIEWCONTROLLERROOT + + id + id + id + + + + doneButton: + id + + + emailButton: + id + + + parametersButton: + id + + + + UIView + UIView + UILabel + UILabel + + + + landscapeView + UIView + + + portraitView + UIView + + + versionUI + UILabel + + + versionUILandscape + UILabel + + + + IBProjectSource + ../../Common.iphone/infoViewController.h + + + + infoViewController + + id + id + id + + + + doneButton: + id + + + emailButton: + id + + + parametersButton: + id + + + + IBProjectSource + ../../Common.iphone/infoViewController.mm + + + + + + UIButton + UIControl + + IBFrameworkSource + UIKit.framework/Headers/UIButton.h + + + + UIControl + UIView + + IBFrameworkSource + UIKit.framework/Headers/UIControl.h + + + + UIGestureRecognizer + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIGestureRecognizer.h + + + + UIImageView + UIView + + IBFrameworkSource + UIKit.framework/Headers/UIImageView.h + + + + UILabel + UIView + + IBFrameworkSource + UIKit.framework/Headers/UILabel.h + + + + UIResponder + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIResponder.h + + + + UIView + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIView.h + + + + + 0 + IBCocoaTouchFramework + NO + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + + {80, 80} + {128, 128} + + + diff --git a/ActiveGS_iOS/infoViewController.xib b/ActiveGS_iOS/infoViewController.xib new file mode 100644 index 0000000..1950059 --- /dev/null +++ b/ActiveGS_iOS/infoViewController.xib @@ -0,0 +1,931 @@ + + + + 1552 + 13F34 + 6254 + 1265.21 + 698.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 6247 + + + IBProxyObject + IBUIButton + IBUIImageView + IBUILabel + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 293 + {{120, 59}, {80, 77}} + + + + NO + YES + 4 + YES + IBCocoaTouchFramework + + NSImage + ActiveGS.png + + + + + 269 + {{109, 339}, {101, 37}} + + + + NO + IBCocoaTouchFramework + 0 + 0 + 1 + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + 3 + MQA + + I'm Happy! + + 3 + MC41AA + + + Helvetica-Bold + Helvetica + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 293 + {{0, 20}, {320, 43}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + ActiveGS + + 1 + MCAwIDAAA + darkTextColor + + + + {2, 2} + 1 + 10 + 1 + + Helvetica-Bold + Helvetica + 2 + 36 + + + Helvetica-Bold + 36 + 16 + + YES + + + + 293 + {{46, 139}, {228, 25}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + (version) + + + 1 + 10 + 1 + + 1 + 17 + + + HelveticaNeue + 17 + 16 + + YES + + + + 269 + {{76, 392}, {180, 30}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + For support and/or feedback, visit + + + 1 + 10 + 3 + 1 + + Helvetica + Helvetica + 0 + 12 + + + Helvetica + 12 + 16 + + 180 + + + + 317 + {{23, 191}, {280, 134}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + c3dpcGUgZG93biBmb3IgcnVuLXRpbWUgbWVudQpzd2lwZSB1cCBmb3Iga2V5Ym9hcmQKc3dpcGUgdXAg +Zm9yIGpveXBhZCAod2hpbGUga2V5Ym9hcmQgaXMgc2hvd24pCmRvdWJsZSB0YXAgZm9yIG1vdXNlIGNs +aWNrCnRyaXBsZSB0YXAgZm9yIG1vdXNlIGRvdWJsZS1jbGljawpzd2lwZSBsZWZ0L3JpZ2h0IG9uIHRv +cCBzY3JlZW4gZm9yIHNob3J0Y3V0IHRvIGJyb3dzZQo + + + {0, 0} + 1 + 4 + 0 + 1 + 2 + + + 280 + + + + 317 + {{79, 186}, {162, 17}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + Commands: + + + 1 + 10 + 3 + 1 + + Helvetica-Bold + Helvetica + 2 + 17 + + + Helvetica-Bold + 17 + 16 + + 162 + + + + 269 + {{143, 417}, {32, 32}} + + + + NO + IBCocoaTouchFramework + 0 + 0 + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + Facebook + + + NSImage + facebook-logo.png + + + + + + + 269 + {{15, 444}, {290, 30}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + (Dedicated to Benzebut, ActiveGS chief bug hunter!) + + + 1 + 3 + 1 + + + 290 + + + {320, 480} + + + + + 3 + MQA + + 2 + + + + IBUISimulatedFreeformSizeMetricsSentinel + Freeform + + IBCocoaTouchFramework + + + + 274 + + + + 293 + {{120, 20}, {80, 77}} + + + NO + YES + 4 + YES + IBCocoaTouchFramework + + + + + 265 + {{359, 256}, {101, 37}} + + NO + IBCocoaTouchFramework + 0 + 0 + 1 + + + I'm Happy! + + + + + + + 293 + {{208, 52}, {265, 38}} + + + NO + YES + 7 + NO + IBCocoaTouchFramework + ActiveGS + + + + {2, 2} + 1 + 10 + + + YES + + + + 293 + {{126, 93}, {228, 25}} + + + NO + YES + 7 + NO + IBCocoaTouchFramework + (version) + + + 1 + 10 + 1 + + + YES + + + + 268 + {{20, 261}, {180, 30}} + + + NO + YES + 7 + NO + IBCocoaTouchFramework + For support and/or feedback, visit + + + 1 + 10 + 3 + 1 + + + 180 + + + + 317 + {{100, 131}, {280, 134}} + + + NO + YES + 7 + NO + IBCocoaTouchFramework + c3dpcGUgZG93biBmb3IgcnVuLXRpbWUgbWVudQpzd2lwZSB1cCBmb3Iga2V5Ym9hcmQKc3dpcGUgdXAg +Zm9yIGpveXBhZCAod2hpbGUga2V5Ym9hcmQgaXMgc2hvd24pCmRvdWJsZSB0YXAgZm9yIG1vdXNlIGNs +aWNrCnRyaXBsZSB0YXAgZm9yIG1vdXNlIGRvdWJsZS1jbGljawpzd2lwZSBsZWZ0L3JpZ2h0IG9uIHRv +cCBzY3JlZW4gZm9yIHNob3J0Y3V0IHRvIGJyb3dzZQo + + + {0, 0} + 1 + 4 + 0 + 1 + 2 + + + 280 + + + + 317 + {{159, 131}, {162, 17}} + + + NO + YES + 7 + NO + IBCocoaTouchFramework + Commands: + + + 1 + 10 + 3 + 1 + + + 162 + + + + 269 + {{213, 259}, {32, 32}} + + + NO + IBCocoaTouchFramework + 0 + 0 + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + Facebook + + + + + + + + 269 + {{93, 290}, {294, 30}} + + + NO + YES + 7 + NO + IBCocoaTouchFramework + (Dedicated to Benzebut, ActiveGS chief bug hunter!) + + + 1 + 3 + 1 + + + 294 + + + {480, 320} + + + 3 + MQA + + + + 3 + 3 + + + IBCocoaTouchFramework + + + + + + + view + + + + 3 + + + + versionUI + + + + 12 + + + + landscapeView + + + + 33 + + + + portraitView + + + + 34 + + + + versionUILandscape + + + + 35 + + + + doneButton: + + + 7 + + 9 + + + + doneButton: + + + 7 + + 31 + + + + emailButton: + + + 1 + + 50 + + + + emailButton: + + + 1 + + 51 + + + + + + 0 + + + + + + 1 + + + + + + + + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + 5 + + + + + 10 + + + + + 11 + + + + + 13 + + + + + 23 + + + + + + + + + + + + + + ViewLandscape + + + 24 + + + + + 25 + + + + + 27 + + + + + 28 + + + + + 29 + + + + + 36 + + + + + 37 + + + + + 38 + + + + + 39 + + + + + 44 + + + + + 45 + + + + + 47 + + + + + 48 + + + + + + + infoViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 51 + + + + + infoViewController + UIVIEWCONTROLLERROOT + + id + id + id + + + + doneButton: + id + + + emailButton: + id + + + parametersButton: + id + + + + UIView + UIView + UILabel + UILabel + + + + landscapeView + UIView + + + portraitView + UIView + + + versionUI + UILabel + + + versionUILandscape + UILabel + + + + IBProjectSource + ../../Common.iphone/infoViewController.h + + + + infoViewController + + id + id + id + + + + doneButton: + id + + + emailButton: + id + + + parametersButton: + id + + + + IBProjectSource + ../../Common.iphone/infoViewController.mm + + + + + + UIButton + UIControl + + IBFrameworkSource + UIKit.framework/Headers/UIButton.h + + + + UIControl + UIView + + IBFrameworkSource + UIKit.framework/Headers/UIControl.h + + + + UIGestureRecognizer + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIGestureRecognizer.h + + + + UIImageView + UIView + + IBFrameworkSource + UIKit.framework/Headers/UIImageView.h + + + + UILabel + UIView + + IBFrameworkSource + UIKit.framework/Headers/UILabel.h + + + + UIResponder + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIResponder.h + + + + UIView + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIView.h + + + + + 0 + IBCocoaTouchFramework + NO + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + + {80, 80} + {128, 128} + + + diff --git a/ActiveGS_iOS/main.mm b/ActiveGS_iOS/main.mm new file mode 100644 index 0000000..5d42a70 --- /dev/null +++ b/ActiveGS_iOS/main.mm @@ -0,0 +1,17 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import +#import "activegsAppDelegate.h" + +int main(int argc, char *argv[]) { + + NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; + // int retVal = UIApplicationMain(argc, argv, nil, nil); + int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([activegsAppDelegate class])); + [pool release]; + return retVal; +} diff --git a/ActiveGS_iOS/mainViewController.xib b/ActiveGS_iOS/mainViewController.xib new file mode 100644 index 0000000..39131e6 --- /dev/null +++ b/ActiveGS_iOS/mainViewController.xib @@ -0,0 +1,893 @@ + + + + 1056 + 10F569 + 823 + 1038.29 + 461.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 132 + + + YES + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + YES + + YES + + + YES + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + YES + + + 293 + {{120, 59}, {80, 77}} + + NO + YES + 4 + YES + IBCocoaTouchFramework + + NSImage + ActiveGS.png + + + + + 269 + {{112, 392}, {96, 37}} + + NO + IBCocoaTouchFramework + 0 + 0 + + Helvetica-Bold + 15 + 16 + + 1 + I'm Happy + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + + + 293 + {{0, 20}, {320, 43}} + + NO + YES + 7 + NO + IBCocoaTouchFramework + ActiveGS + + Helvetica-Bold + 36 + 16 + + + 1 + MCAwIDAAA + + + + {2, 2} + 1 + 10 + 1 + + + + 293 + {{46, 139}, {228, 25}} + + NO + YES + 7 + NO + IBCocoaTouchFramework + (version) + + + 1 + 10 + 1 + + + + 269 + {{88, 425}, {150, 30}} + + NO + YES + 7 + NO + IBCocoaTouchFramework + Please, send feedback to + + Helvetica + 12 + 16 + + + + 1 + 10 + 3 + 1 + + + + 269 + {{73, 452}, {180, 18}} + + + NO + IBCocoaTouchFramework + 0 + 0 + + Helvetica-Oblique + 10 + 16 + + 1 + activegs@freetoolsassociation.com + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + + + 317 + {{23, 208}, {280, 134}} + + NO + YES + 7 + NO + IBCocoaTouchFramework + c3dpcGUgZG93biBmb3IgcnVuLXRpbWUgbWVudQpzd2lwZSB1cCBmb3Iga2V5Ym9hcmQKc3dpcGUgdXAg +Zm9yIGpveXBhZCAod2hpbGUga2V5Ym9hcmQgaXMgc2hvd24pCmRvdWJsZSB0YXAgZm9yIG1vdXNlIGNs +aWNrCnRyaXBsZSB0YXAgZm9yIG1vdXNlIGRvdWJsZS1jbGljawpzd2lwZSBsZWZ0L3JpZ2h0IG9uIHRv +cCBzY3JlZW4gZm9yIHNob3J0Y3V0IHRvIGJyb3dzZQo + + + + {0, 0} + 1 + 4 + 0 + 1 + 2 + + + + 317 + {{79, 203}, {162, 17}} + + NO + YES + 7 + NO + IBCocoaTouchFramework + Commands: + + Helvetica-Bold + 17 + 16 + + + + 1 + 10 + 3 + 1 + + + {320, 480} + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + + 274 + + YES + + + 293 + {{120, 20}, {80, 77}} + + + NO + YES + 4 + YES + IBCocoaTouchFramework + + + + + 265 + {{364, 263}, {96, 37}} + + + NO + IBCocoaTouchFramework + 0 + 0 + + 1 + I'm Happy + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + 293 + {{208, 52}, {265, 38}} + + + NO + YES + 7 + NO + IBCocoaTouchFramework + ActiveGS + + + + + {2, 2} + 1 + 10 + + + + 293 + {{126, 93}, {228, 25}} + + + NO + YES + 7 + NO + IBCocoaTouchFramework + (version) + + + 1 + 10 + 1 + + + + 268 + {{35, 255}, {150, 30}} + + + NO + YES + 7 + NO + IBCocoaTouchFramework + Please, send feedback to + + + + 1 + 10 + 3 + 1 + + + + 268 + {{20, 282}, {180, 18}} + + + + NO + IBCocoaTouchFramework + 0 + 0 + + 1 + activegs@freetoolsassociation.com + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + + + 317 + {{100, 131}, {280, 134}} + + + NO + YES + 7 + NO + IBCocoaTouchFramework + c3dpcGUgZG93biBmb3IgcnVuLXRpbWUgbWVudQpzd2lwZSB1cCBmb3Iga2V5Ym9hcmQKc3dpcGUgdXAg +Zm9yIGpveXBhZCAod2hpbGUga2V5Ym9hcmQgaXMgc2hvd24pCmRvdWJsZSB0YXAgZm9yIG1vdXNlIGNs +aWNrCnRyaXBsZSB0YXAgZm9yIG1vdXNlIGRvdWJsZS1jbGljawpzd2lwZSBsZWZ0L3JpZ2h0IG9uIHRv +cCBzY3JlZW4gZm9yIHNob3J0Y3V0IHRvIGJyb3dzZQo + + + + {0, 0} + 1 + 4 + 0 + 1 + 2 + + + + 317 + {{159, 131}, {162, 17}} + + + NO + YES + 7 + NO + IBCocoaTouchFramework + Commands: + + + + 1 + 10 + 3 + 1 + + + {480, 320} + + + + 3 + MQA + + + + 3 + + IBCocoaTouchFramework + + + + + YES + + + view + + + + 3 + + + + doneButton: + + + 7 + + 9 + + + + versionUI + + + + 12 + + + + emailButton: + + + 7 + + 22 + + + + doneButton: + + + 7 + + 31 + + + + emailButton: + + + 7 + + 32 + + + + landscapeView + + + + 33 + + + + portraitView + + + + 34 + + + + versionUILandscape + + + + 35 + + + + + YES + + 0 + + + + + + 1 + + + YES + + + + + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + 5 + + + + + 10 + + + + + 11 + + + + + 13 + + + + + 21 + + + + + 23 + + + YES + + + + + + + + + + + ViewLandscape + + + 24 + + + + + 25 + + + + + 27 + + + + + 28 + + + + + 29 + + + + + 30 + + + + + 36 + + + + + 37 + + + + + 38 + + + + + 39 + + + + + + + YES + + YES + -1.CustomClassName + -2.CustomClassName + 1.IBEditorWindowLastContentRect + 1.IBPluginDependency + 1.IBViewBoundsToFrameTransform + 10.IBPluginDependency + 11.IBPluginDependency + 11.IBViewBoundsToFrameTransform + 13.IBPluginDependency + 21.IBPluginDependency + 23.IBEditorWindowLastContentRect + 23.IBPluginDependency + 23.IBViewBoundsToFrameTransform + 24.IBPluginDependency + 24.IBViewBoundsToFrameTransform + 25.IBPluginDependency + 25.IBViewBoundsToFrameTransform + 27.IBPluginDependency + 27.IBViewBoundsToFrameTransform + 28.IBPluginDependency + 28.IBViewBoundsToFrameTransform + 29.IBViewBoundsToFrameTransform + 30.IBPluginDependency + 30.IBViewBoundsToFrameTransform + 36.IBPluginDependency + 36.IBViewBoundsToFrameTransform + 37.IBPluginDependency + 37.IBViewBoundsToFrameTransform + 38.IBPluginDependency + 38.IBViewBoundsToFrameTransform + 39.IBPluginDependency + 39.IBViewBoundsToFrameTransform + 4.IBViewBoundsToFrameTransform + 5.IBPluginDependency + + + YES + infoViewController + UIResponder + {{403, 267}, {320, 480}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAAAAAAAAw+8AAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABCOAAAww4AAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + {{549, 358}, {480, 320}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAAAAAAAAw+8AAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABC/AAAwtQAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABDuYAAw5UAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABDHgAAwrAAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABCDAAAw42AAA + + + P4AAAL+AAABDSAAAwpYAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABDHAAAw5oAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAADCaAAAwykAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAADClgAAw3AAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAADBwAAAwwQAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAADCGAAAwrgAAA + + + P4AAAL+AAABC8AAAwvAAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 39 + + + + YES + + UIView + + IBProjectSource + ../Common.iphone/GTMUIView+SubtreeDescription.h + + + + infoViewController + UIViewController + + YES + + YES + doneButton: + emailButton: + + + YES + id + id + + + + YES + + YES + doneButton: + emailButton: + + + YES + + doneButton: + id + + + emailButton: + id + + + + + YES + + YES + landscapeView + portraitView + versionUI + versionUILandscape + + + YES + UIView + UIView + UILabel + UILabel + + + + YES + + YES + landscapeView + portraitView + versionUI + versionUILandscape + + + YES + + landscapeView + UIView + + + portraitView + UIView + + + versionUI + UILabel + + + versionUILandscape + UILabel + + + + + IBProjectSource + ../Common.iphone/infoViewController.h + + + + + YES + + NSObject + + IBFrameworkSource + QuartzCore.framework/Headers/CAAnimation.h + + + + NSObject + + IBFrameworkSource + QuartzCore.framework/Headers/CALayer.h + + + + NSObject + + IBFrameworkSource + QuartzCore.framework/Headers/CIImageProvider.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + activegs.xcodeproj + 3 + + ActiveGS.png + {80, 80} + + 132 + + diff --git a/Common.iphone/ActiveGSZoomEmulatorView.h b/Common.iphone/ActiveGSZoomEmulatorView.h new file mode 100644 index 0000000..67c3bd7 --- /dev/null +++ b/Common.iphone/ActiveGSZoomEmulatorView.h @@ -0,0 +1,61 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import +#import "emulatorView.h" + + struct orientationVar +{ + float scale; + CGPoint p; +} ; + +typedef struct orientationVar orientationVar; + +@interface zoomEmulatorView : UIScrollView +{ + + float dpiRatio; + CGSize viewSize; + + CGPoint initialPoint; + double initialTimer; + int mouseDown; + int zoomDisabled; + orientationVar orientationVars[4]; + + float kbdScale; + + UIPanGestureRecognizer* panGR; + UIPinchGestureRecognizer* pinchGR; + CGPoint lastMousePos; + BOOL allowInput; + BOOL startNewPhase; +@public + UIImageView* _crt ; + emulatorView * _ew ; + UITouch* _useTouch; + UITouch* _secondTouch; + int curOrientation; +} +@property (retain,nonatomic) emulatorView* ew ; +@property (retain,nonatomic) UIImageView* crt ; +@property (retain,nonatomic) UITouch* useTouch ; +@property (retain,nonatomic) UITouch* secondTouch ; + +-(void)updateFrame:(CGRect)frame kbdRect:(CGRect)kbdRect; +-(void)updateScreen:(CGRect)frame ratio:(float)ratio; +- (void)switchOrientation:(int)orientation; +-(void)disableZoom; +-(void)enableZoom; +-(void)enableInput; +-(void)disableInput; +-(void)mouseUp; +-(void)mouseDown; +-(void)setRatioToOne; +-(CGPoint)rotateTouch:(UITouch*) _touch; +- (id)initWithFrame:(CGRect)frame ratio:(float)ratio; +@end diff --git a/Common.iphone/ActiveGSZoomEmulatorView.mm b/Common.iphone/ActiveGSZoomEmulatorView.mm new file mode 100644 index 0000000..b4f195a --- /dev/null +++ b/Common.iphone/ActiveGSZoomEmulatorView.mm @@ -0,0 +1,870 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "../Src/defc.h" +#include "../Src/sim65816.h" +#include "../Src/adb.h" +#import "zoomEmulatorView.h" +/* +#import "../../common.iphone/activegsAppDelegate.h" +#endif +*/ + + + +#if defined(VIDEO_DOUBLEVLINE) +# define HEIGHT_MULTIPLY 1 +#else +# define HEIGHT_MULTIPLY 2 +#endif + +#undef debug_printf +#define debug_printf(...) +//#define debug_printf printf +//#define SHOW_COLOR + +@implementation zoomEmulatorView +@synthesize ew = _ew; +@synthesize crt = _crt; +@synthesize useTouch = _useTouch; +@synthesize secondTouch = _secondTouch; + +- (id)initWithFrame:(CGRect)frame ratio:(float)ratio +{ + + if (self = [super initWithFrame:frame]) + { + + self->dpiRatio = ratio; + self->viewSize = frame.size; + + debug_printf("ratio:%f width:%f height:%f",self->dpiRatio,self->viewSize.width,self->viewSize.height); + + CGRect r = CGRectMake(0.0,0.0,X_A2_WINDOW_WIDTH/self->dpiRatio ,X_A2_WINDOW_HEIGHT/self->dpiRatio ); + + self.contentSize = CGSizeMake(r.size.width,r.size.height); + + self.ew = [[[emulatorView alloc] initWithFrame:r] autorelease]; + [self.ew setUserInteractionEnabled:TRUE]; + + CGColorSpaceRef innerColorSpace = CGColorSpaceCreateDeviceRGB(); + CGContextRef icontext = CGBitmapContextCreate(nil, X_A2_WINDOW_WIDTH,X_A2_WINDOW_HEIGHT*2, 8, X_A2_WINDOW_WIDTH*4,innerColorSpace,kCGImageAlphaPremultipliedLast); + + CGContextSetRGBFillColor(icontext,0,0,0,0.0); // transparent + CGContextFillRect(icontext,CGRectMake(0,0,X_A2_WINDOW_WIDTH,X_A2_WINDOW_HEIGHT*2)); + for(int h=0;hviewSize = frame.size; + self->dpiRatio = ratio; + + CGRect r = CGRectMake(0.0,0.0,X_A2_WINDOW_WIDTH/self->dpiRatio ,X_A2_WINDOW_HEIGHT/self->dpiRatio ); + + self.contentSize = CGSizeMake(r.size.width,r.size.height); + [self.ew setFrame:r]; + + [self.crt setFrame:CGRectMake(0,0,r.size.width,r.size.height)]; + [self.crt setBounds:CGRectMake(0,0,r.size.width,r.size.height*2)]; + + [self setRatioToOne]; +} + +-(void)updateFrame:(CGRect)frame kbdRect:(CGRect)kbdRect +{ + + // adapte la vue pour que le clavier ne cache pas l'écran + CGRect scrollSize = self.bounds ; + + + float ref = kbdRect.size.height; + + if ( (-scrollSize.origin.y) < ref) + { + // centre par rapport à la hauteur restante + float hremaining = frame.size.height - ref; + frame.origin.y = - kbdRect.size.height- ( hremaining - scrollSize.size.height*HEIGHT_MULTIPLY ) /2 ; + // TODO : ajuster le zoom! + } + + // NSLog(@"Frame %f,%f %f,%f",frame.origin.x,frame.origin.y,frame.size.width,frame.size.height); + + [self setFrame:frame]; +} + + + + +-(void)setRatioToOne +{ + + int w = (int)viewSize.width; + int h = (int)viewSize.height; + + debug_printf("apprect %d x %d\n",w,h); + +#define ZOOM_CLAMP 0.25 // calcul un zoom par multiple *.25 + + + for(int i=0;i<4;i++) + { + if (!(i&1)) + { + + + + // prend le plus petit des zooms possible + + float r = w*dpiRatio / A2_WINDOW_WIDTH; + r = r/ZOOM_CLAMP; + if (r<1.0) + r = 1.0; + int ir = (int)r; + float zoomw = (float)ir*ZOOM_CLAMP; + + r = h*dpiRatio / (A2_WINDOW_HEIGHT*HEIGHT_MULTIPLY); + r = r/ZOOM_CLAMP; + if (r<1.0) + r = 1.0; + ir = (int)r; + float zoomh = (float)ir*ZOOM_CLAMP; + + float zoom = zoomh < zoomw ? zoomh : zoomw ; + + orientationVars[i].scale = zoom; + + + float realew =(X_A2_WINDOW_WIDTH - A2_WINDOW_WIDTH)*zoom; + float realw = w*dpiRatio; + float posw = realw - A2_WINDOW_WIDTH*zoom; + float x = (posw - realew)/2; // pour centrer + + + float realeh =(X_A2_WINDOW_HEIGHT - A2_WINDOW_HEIGHT)*HEIGHT_MULTIPLY*zoom; + float realh = h*dpiRatio; + float posh = realh - A2_WINDOW_HEIGHT*HEIGHT_MULTIPLY*zoom; + float y = (posh - realeh)/2; // pour centrer + + orientationVars[i].p = CGPointMake(-x/dpiRatio,-y/dpiRatio/HEIGHT_MULTIPLY); + + + } + else + { + + + float r = h*dpiRatio / A2_WINDOW_WIDTH; + r = r/ZOOM_CLAMP; + if (r<1.0) + r = 1.0; + int ir = (int)r; + float zoomw = (float)ir*ZOOM_CLAMP; + + r = w*dpiRatio / ( A2_WINDOW_HEIGHT * HEIGHT_MULTIPLY ); + r = r/ZOOM_CLAMP; + if (r<1.0) + r = 1.0; + ir = (int)r; + float zoomh = (float)ir*ZOOM_CLAMP; + + float zoom = zoomh < zoomw ? zoomh : zoomw ; + + float realew =(X_A2_WINDOW_WIDTH - A2_WINDOW_WIDTH)*zoom; + float realw = h*dpiRatio; + float posw = realw - A2_WINDOW_WIDTH*zoom; + float x = (posw - realew)/2; + + + float realeh =(X_A2_WINDOW_HEIGHT - A2_WINDOW_HEIGHT)*HEIGHT_MULTIPLY*zoom; + float realh = w*dpiRatio; + float posh = realh - A2_WINDOW_HEIGHT*HEIGHT_MULTIPLY*zoom; + float y = (posh - realeh)/2; // pour centrer + + orientationVars[i].scale = zoom; + orientationVars[i].p = CGPointMake(-x/dpiRatio,-y/dpiRatio/2); + + + } + + debug_printf("orientation:%d = %f , p = %f,%f\n",i, orientationVars[i].scale,orientationVars[i].p.x,orientationVars[i].p.y); + + } + + mouseDown = 0; + allowInput = TRUE; + zoomDisabled = FALSE; + refScalePortrait = orientationVars[0].scale; + refScaleLandscape = orientationVars[1].scale; + + +} + + +- (void)switchOrientation:(int)orientation +{ + + curOrientation = -1; + float s = orientationVars[orientation].scale; + CGPoint p = orientationVars[orientation].p; + debug_printf("**** about to switchOrientation: (%d) scale:%f offset %f,%f\n",orientation,s,p.x,p.y); + + self.zoomScale = s ; + [self setContentOffset:p]; + curOrientation = orientation; + + s = orientationVars[orientation].scale; + p = orientationVars[orientation].p; + debug_printf("**** done switching (%d) scale:%f offset %f,%f\n",orientation,s,p.x,p.y); + + inCran = false; + + if (orientation & 1) + refScale = refScaleLandscape; + else + refScale = refScalePortrait; + +} + +-(void)setContentOffset:(CGPoint)p /*animated:(BOOL)animated*/ +{ + if (p.x == 0.0f || p.y == 0.0) + { + debug_printf("ignoring %f,%f\n",p.x,p.y); + return ; + } + // appelé par [super initWithFrame:frame] alors que ew n'est pas encore initialisé + if(self.ew != nil ) + { + + CGSize vs = self.ew.frame.size; + CGSize scrollSize = self.bounds.size; + + static float realScale=0.0f; + + + if (!inCran) + { + if ( fabs(self.zoomScale - refScale) < 0.05 ) + { + inCran = true; + realScale = self.zoomScale; + self.zoomScale = refScale; + } + } + else + { + realScale += self.zoomScale - refScale; + if (fabs(realScale - refScale) > 0.10 ) + { + // à faire avant le sef.zoomScale= sinon on tombe dans une boucle infinie! + inCran = false; + self.zoomScale = realScale; + } + else + self.zoomScale = refScale; + } + + + // recentre la fenetre si elle tient totalement en hauteur ou en largeur + + + if (scrollSize.width >= vs.width || inCran ) + p.x = - (scrollSize.width - abs(vs.width)) / 2.0; + if (scrollSize.height >= vs.height || inCran ) + p.y = - (scrollSize.height - abs(vs.height)) / 2.0; + + + if (curOrientation!=-1) + { + debug_printf("saving scale (%d) %f %f,%f\n",curOrientation,self.zoomScale,p.x,p.y); + orientationVars[curOrientation].scale = self.zoomScale ; // / kbdScale; + orientationVars[curOrientation].p = p; + } + + + } + debug_printf("********** offset : %f %f\n",p.x,p.y); + [super setContentOffset:p]; +} + + + +- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView +{ + return self.ew; + } + +- (void)drawRect:(CGRect)rect { + + // Drawing code + CGContextRef g = UIGraphicsGetCurrentContext(); + + //fill background with blue +#ifdef SHOW_COLOR + CGContextSetFillColorWithColor(g, [UIColor blueColor].CGColor); +#else + CGContextSetFillColorWithColor(g, [UIColor blackColor].CGColor); +#endif + + CGContextFillRect(g, rect); + + +} + + +-(CGPoint)rotateTouch:(UITouch*) _touch +{ + CGPoint pt; +// float scale = [pManager dpiRatio]/self.zoomScale; + float scale = self->dpiRatio/self.zoomScale; + + if (g_adb.g_warp_pointer==WARP_TOUCHSCREEN) + { + pt = [_touch locationInView:self.ew]; + pt.x *= self->dpiRatio; //[pManager dpiRatio]; + pt.y *= self->dpiRatio; //[pManager dpiRatio]; + + pt.y = (X_A2_WINDOW_HEIGHT - pt.y); + pt.y *=2; + pt.x -= BASE_MARGIN_LEFT; + pt.y -= BASE_MARGIN_TOP*2; + + return pt; + } + + + pt = [_touch locationInView:self]; + int height = self.contentSize.height; + + if (r_sim65816.is_emulator_in_640mode()) + { + // current scale for 640 mode + } + else + { + // otherwise reduce the speed of the mouse + scale /= 2; + } + + pt.y = (height - pt.y)*scale; + pt.x *= scale; + + return pt; + +} + + +-(BOOL)touchesShouldCancelInContentView:(UIView *)view +{ + debug_printf("touchesShouldCancelInContentView\n"); + return !zoomDisabled; +} + +-(void)enableInput +{ + allowInput = TRUE; +} + +-(void)disableInput +{ + allowInput = FALSE; + if (self.useTouch) + self.useTouch = nil; + + if (self.secondTouch) + { + self.secondTouch = nil; + printf("*** secondtouch set in disableinput --- should never appear"); + } +} + + +-(void)disableZoom +{ + + debug_printf("disableZoom\n"); + + // BUG!!!! + // Sometimes, offset is being reset when gestures are disabled! + // Workaround = save the former offset and restore it afterwards + CGPoint offset = self.contentOffset; + + pinchGR.enabled = FALSE; + panGR.enabled = FALSE; + self.scrollEnabled = FALSE; + zoomDisabled= TRUE; + + // REstoring the offset + self.contentOffset = offset; + +} + +-(void)enableZoom +{ + + debug_printf("enableZoom\n"); + + pinchGR.enabled = TRUE; + panGR.enabled = TRUE; + + self.scrollEnabled = TRUE; + + zoomDisabled = FALSE; +} + + +- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view +{ + debug_printf("scrollViewWillBeginZooming\n"); +#ifdef ACTIVEGS + // le zoom a démarré : anule les timers pour que le zoom ne soit pas interrompu + [[pManager getEmulatorView].contentView disableGestures:(MODE_ALL + MODE_EMULATOR & ~MODE_ZOOM)]; + [[pManager getEmulatorView].kbdc setGestureIndicatorVisibility:MODE_ZOOM color:[UIColor grayColor]]; +#endif +} + + +- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale +{ + debug_printf("scrollViewDidEndZooming\n"); +#ifdef ACTIVEGS + // zoom terminé => on peut réactiver les gestures immédiatement + [[pManager getEmulatorView].contentView reenableAllGestures]; +#endif +} + + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView +{ + // NSLog(@" Offset = %@ ",NSStringFromCGPoint(scrollView.contentOffset)); +} + + +- (void)scrollViewDidZoom:(UIScrollView *)scrollView +{ +// printf("scrollViewDidZoom"); +// [ew directDraw:nil]; +} + +- (void) mouseDown +{ + if (!mouseDown) + { + + debug_printf("mouseDown %f %f\n",lastMousePos.x,lastMousePos.y); + mouseDown = 1; + add_event_mouse(lastMousePos.x,lastMousePos.y,1,1); +#ifdef ACTIVEGS + [[pManager getEmulatorView].kbdc setGestureIndicatorVisibility:MODE_MOUSEBUTTON color:[UIColor redColor]]; +#endif + } +} + +- (void) mouseUp +{ + if (mouseDown) + { + add_event_mouse(lastMousePos.x,lastMousePos.y,0,1); + mouseDown = 0; +#ifdef ACTIVEGS + [[pManager getEmulatorView].kbdc setGestureIndicatorVisibility:MODE_MOUSEBUTTON color:[UIColor greenColor]]; +#endif + } +} + +- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ +#ifdef ACTIVEGS + if ([[pManager getEmulatorView].kbdc myTouchesBegan:touches]) + { + debug_printf("pad activated"); + + [[pManager getEmulatorView].kbdc setGestureIndicatorVisibility:MODE_PAD color:[UIColor grayColor]]; + [[pManager getEmulatorView].contentView disableGestures:(MODE_ALL+MODE_EMULATOR & ~MODE_PAD)]; + return ; + } +#endif + + // prend la première touche + UITouch *touch = [[touches allObjects] objectAtIndex:0]; + + +// if (!runningOnIOS_3_2) + { + // simule les swipes + initialPoint = [touch locationInView:nil]; + initialTimer = [[NSDate date] timeIntervalSince1970]; + } + + + + if (!allowInput) + { + debug_printf("input disabled"); + return ; + } + + if ([touches count] > 1) + { + debug_printf("multiple - disabling input"); +#ifdef ACTIVEGS + [[pManager getEmulatorView].contentView disableGestures:MODE_EMULATOR]; +#endif + return ; + } + + + if (self.useTouch) + { + if (!self.secondTouch && zoomDisabled) + { + if (!mouseDown) + { + debug_printf("second touch mouse Down\n"); + [self mouseDown]; + } + else + { + debug_printf("second touch\n"); + + } + + self.secondTouch = touch; + } + else + { + if (zoomDisabled) + { + debug_printf("third or more touch ignore"); + } + else + { + debug_printf("ignoring second touch - too soon, must be a gestures"); +#ifdef ACTIVEGS + [[pManager getEmulatorView].contentView disableGestures:MODE_EMULATOR]; +#endif + } + } + return ; + + } + + + + self.useTouch = touch; + + lastMousePos = [self rotateTouch:touch]; + + add_event_mouse(lastMousePos.x,lastMousePos.y,0,-1); + + if (self.secondTouch) + { + // mouseDown déjà enclenchée -> on a fini + return ; + } + + int nbtap = [touch tapCount]; + if (nbtap==1) + { + // prépare la désactivation des gestures + //[[pManager getEmulatorView].contentView scheduleDisableAllGestures]; + startNewPhase=TRUE; + + } + +#if !defined(DRIVER_DONTSIMULATESPACE) + if (nbtap==2) + { + extern void simulate_space_event(); + simulate_space_event(); + } +#endif + + if (nbtap>=2 || g_adb.g_warp_pointer==WARP_TOUCHSCREEN) + { + + debug_printf("*** multi-tap\n"); + + [self mouseUp]; + + [self mouseDown]; + + // Désactive immédiatement les gestures +#ifdef ACTIVEGS + if (g_adb.g_warp_pointer!=WARP_TOUCHSCREEN) + [[pManager getEmulatorView].contentView disableGestures:MODE_ALL]; +#endif + } +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + + debug_printf("touchesEnded : %d",[touches count]); + +#ifdef ACTIVEGS + if (! [[pManager getEmulatorView].kbdc myTouchesEnded:touches]) + { + // le pad n'est plus actif - reactive les input si elles étaient disabled + if (!allowInput) + [[pManager getEmulatorView].contentView reenableAllGestures]; + } +#endif + + /* + if (!runningOnIOS_3_2) + { + // simule les swipes + + // prend la première touche + UITouch *touch = [[touches allObjects] objectAtIndex:0]; + + + CGPoint point = [touch locationInView:nil]; + double t = [[NSDate date] timeIntervalSince1970] - initialTimer ; + debug_printf("swipe time:%f",t); + if (t < 1.0) + { + float diffX = point.x - initialPoint.x; + float diffY = point.y - initialPoint.y; + printf("diffX: %f diffY: %f",diffX,diffY); + + int angle = [pManager getAngle]; + BOOL isPortrait = ( abs(angle) == 90 ) ; + if (!isPortrait) + { + double swap = diffX; + diffX = diffY; + diffY = swap; + } + if (angle>0) diffY = -diffY; + + if (abs(diffX) < 40.0 && abs(diffY)> 150.0) + { + // swipeY + if (diffY<0) + // swipe up + [[pManager getEmulatorView].kbdc swipeUp]; + else + [[pManager getEmulatorView].kbdc swipeDown]; + } + } + + } + */ + + if (!allowInput) + return ; + + if ( [touches containsObject:self.useTouch] + && [touches containsObject:self.secondTouch]) + { + debug_printf("both keys ended at the sametime"); + + [self mouseUp]; + + self.useTouch = nil; + self.secondTouch = nil; + + #ifdef ACTIVEGS + // vérifie les gestures + customView* cv = [pManager getEmulatorView].contentView; + [cv processGesturesOnTouchesEnded]; +#endif + return ; + } + + if ([touches containsObject:self.useTouch]) + { + debug_printf("contains useTouch"); + + if (self.secondTouch) + { + // libère useTouch mais ne fait rien d'autre - maintien la touche enclenchée + + debug_printf("maintaining mouseDown - secondTouch "); + self.useTouch = nil; + return; + } + else + { + debug_printf("touchesEnded\n"); + + [self mouseUp]; + self.useTouch = nil; +#ifdef ACTIVEGS + // vérifie les gestures + customView* cv = [pManager getEmulatorView].contentView; + [cv processGesturesOnTouchesEnded]; +#endif + } + } + + if ([touches containsObject:self.secondTouch]) + { + // correspond à un mouseUp + [self mouseUp]; + self.secondTouch = nil; + debug_printf("secondTouch ended"); + + if (!self.useTouch) + { +#ifdef ACTIVEGS + // aucune touche n'est plus appuyée : réactive les gestures + [[pManager getEmulatorView].contentView scheduleEnableAllGestures]; +#endif + } + } + +} + +- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event +{ + + // on est ici car lez zoom a démarré => théoriquement, il ne doit y avoir aucun useTouch, secondTouch, ou mouseDown + + if ([touches containsObject:self.useTouch]) + { + debug_printf("touchesCancelled useTouch\n"); + self.useTouch = nil; + } + if ([touches containsObject:self.secondTouch]) + { + debug_printf("touchesCancelled secondTouch\n"); + self.secondTouch = nil; + } + + // DEBUG INFO + if (mouseDown) + { + printf("mouseDown in touchesCancelled***"); + [self mouseUp]; + } + + //[[pManager getEmulatorView].contentView reenableAllGestures]; +} + + +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event +{ + +#ifdef ACTIVEGS + if ([[pManager getEmulatorView].kbdc myTouchesMoved:touches]) + return ; +#endif + if (!allowInput) + return ; + + if (startNewPhase) + { + debug_printf("first finger moved"); + startNewPhase = FALSE; +#ifdef ACTIVEGS + [[pManager getEmulatorView].contentView disableGestures:MODE_ZOOM]; // à faire avant le schedule + [[pManager getEmulatorView].contentView scheduleDisableAllGestures]; +#endif + } + + if (!self.useTouch) return ; + if ([touches containsObject:self.useTouch]) + { + /* + CGPoint pt = [useTouch locationInView:self]; + lastMousePos = rotateTouch(self,pt,[pManager getAngle]); + */ + lastMousePos = [self rotateTouch:self.useTouch]; + add_event_mouse(lastMousePos.x,lastMousePos.y,mouseDown,1); + } +} + + +- (void)dealloc { + + self.delegate = nil; + [super dealloc]; +} + + +@end diff --git a/Common.iphone/GTMUIView+SubtreeDescription.h b/Common.iphone/GTMUIView+SubtreeDescription.h new file mode 100644 index 0000000..627298a --- /dev/null +++ b/Common.iphone/GTMUIView+SubtreeDescription.h @@ -0,0 +1,53 @@ +// +// GTMUIView+SubtreeDescription.h +// +// Copyright 2009 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy +// of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations +// under the License. +// +#import + +// This entire file, and the corresponding .m is DEBUG only. +// But you can define INCLUDE_UIVIEW_SUBTREE_DESCRIPTION to no-zero to override. +#if DEBUG || INCLUDE_UIVIEW_SUBTREE_DESCRIPTION + +// Example, in debugger, pause the program, then type: +// po [[[UIApplication sharedApplication] keyWindow] subtreeDescription] + +@interface UIView (SubtreeDescription) + +// Returns one line, without leading indent, but with a trailing newline, +// describing the view. +// If you define a |myViewDescriptionLine| method in your own UIView classes, +// this will append that result to its description. +- (NSString *)gtm_subtreeDescriptionLine; + +// For debugging. Returns a nicely indented representation of this view's +// subview hierarchy, each with frame and isHidden. +- (NSString *)subtreeDescription; + +// For debugging. Returns a nicely indented representation of this view's +// layer hierarchy, with frames and isHidden. +// Requires QuartzCore to be useful, but your app will still link without it. +// TODO: should there be an analog of myViewDescriptionLine for layers? +- (NSString *)sublayersDescription; + +@end + +@protocol GTMUIViewSubtreeDescription +// A UIView can implement this and it can add it's own custom description +// in gtm_subtreeDescriptionLine. +- (NSString *)myViewDescriptionLine; +@end + +#endif // DEBUG diff --git a/Common.iphone/GTMUIView+SubtreeDescription.m b/Common.iphone/GTMUIView+SubtreeDescription.m new file mode 100644 index 0000000..978159d --- /dev/null +++ b/Common.iphone/GTMUIView+SubtreeDescription.m @@ -0,0 +1,184 @@ +// +// GTMUIView+SubtreeDescription.m +// +// Copyright 2009 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy +// of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations +// under the License. +// +#import "GTMUIView+SubtreeDescription.h" + +#if 1 +static void AppendLabelFloat(NSMutableString *s, NSString *label, float f) { + [s appendString:label]; + // Respects gcc warning about using == with floats. + if (fabs(f - floor(f)) < 1.0e-8) { // Essentially integer. + int d = f; + // Respects gcc warning about casting floats to ints. + [s appendFormat:@"%d", d]; + } else { + [s appendFormat:@"%3.1f", f]; + } +} + +static NSMutableString *SublayerDescriptionLine(CALayer *layer) { + NSMutableString *result = [NSMutableString string]; + [result appendFormat:@"%@ %p {", [layer class], layer]; + CGRect frame = [layer frame]; + if (!CGRectIsEmpty(frame)) { + AppendLabelFloat(result, @"x:", frame.origin.x); + AppendLabelFloat(result, @" y:", frame.origin.y); + AppendLabelFloat(result, @" w:", frame.size.width); + AppendLabelFloat(result, @" h:", frame.size.height); + } + CGRect bounds = [layer bounds]; + if (!CGRectIsEmpty(bounds)) + { + AppendLabelFloat(result, @"bounds x:", bounds.origin.x); + AppendLabelFloat(result, @" y:", bounds.origin.y); + AppendLabelFloat(result, @" w:", bounds.size.width); + AppendLabelFloat(result, @" h:", bounds.size.height); + } + [result appendFormat:@"}"]; + if ([layer isHidden]) { + [result appendString:@" hid"]; + } + [result appendString:@"\n"]; + return result; +} + +// |sublayersDescription| has a guard so we'll only call this if it is safe +// to call. +static NSMutableString *SublayerDescriptionAtLevel(CALayer *layer, int level) { + NSMutableString *result = [NSMutableString string]; + for (int i = 0; i < level; ++i) { + [result appendString:@" "]; + } + [result appendString:SublayerDescriptionLine(layer)]; + // |sublayers| is defined in the QuartzCore framework, which isn't guaranteed + // to be linked to this program. (So we don't include the header.) + NSArray *layers = [layer performSelector:NSSelectorFromString(@"sublayers")]; + for (CALayer *l in layers) { + [result appendString:SublayerDescriptionAtLevel(l, level+1)]; + } + return result; +} + +@implementation UIView (SubtreeDescription) + +// TODO: Consider flagging things which might help in debugging: +// - alpha < 10% +// - origin not zero +// - non-opaque +// - transform if not identity +// - view not entirely within ancestor views +// - (possibly) tag==0 +- (NSString *)gtm_subtreeDescriptionLine { + NSMutableString *result = [NSMutableString string]; + [result appendFormat:@"%@ %p {", [self class], self]; + CGRect frame = [self frame]; + + + if (!CGRectIsEmpty(frame)) { + AppendLabelFloat(result, @"x:", frame.origin.x); + AppendLabelFloat(result, @" y:", frame.origin.y); + AppendLabelFloat(result, @" w:", frame.size.width); + AppendLabelFloat(result, @" h:", frame.size.height); + } + CGRect bounds = [self bounds]; + if (!CGRectIsEmpty(bounds)) + { + AppendLabelFloat(result, @"-- bounds x:", bounds.origin.x); + AppendLabelFloat(result, @" y:", bounds.origin.y); + AppendLabelFloat(result, @" w:", bounds.size.width); + AppendLabelFloat(result, @" h:", bounds.size.height); + } + [result appendString:@"}"]; + + CGAffineTransform t = [self transform]; + if (!CGAffineTransformIsIdentity(t)) + { + AppendLabelFloat(result, @"-- matrix 11:", t.a); + AppendLabelFloat(result, @" 12:", t.b); + AppendLabelFloat(result, @" 21:", t.c); + AppendLabelFloat(result, @" 22:", t.d); + AppendLabelFloat(result, @" tx:", t.tx); + AppendLabelFloat(result, @" ty:", t.ty); + + } + + if ([self isKindOfClass:[UIScrollView class]]) + { + UIScrollView* sv = (UIScrollView*)self; + float scale = sv.zoomScale; + AppendLabelFloat(result, @" scale:", scale); + } + + + AppendLabelFloat(result, @" alpha:", self.alpha); + if ([self isHidden]) { + [result appendString:@" hid"]; + } + + if ([self respondsToSelector:@selector(myViewDescriptionLine)]) { + NSString *customDescription = + [self performSelector:@selector(myViewDescriptionLine)]; + if (customDescription != nil) { + [result appendFormat:@" %@", customDescription]; + } + } + + [result appendString:@"\n"]; + return result; +} + +- (NSString *)gtm_subtreeDescriptionAtLevel:(int)level { + NSMutableString *result = [NSMutableString string]; + for (int i = 0; i < level; ++i) { + [result appendString:@" "]; + } + [result appendString:[self gtm_subtreeDescriptionLine]]; + for (UIView *v in [self subviews]) { + [result appendString:[v gtm_subtreeDescriptionAtLevel:level+1]]; + } + return result; +} + +- (NSString *)subtreeDescription { + NSMutableString *result = + [[[self gtm_subtreeDescriptionLine] mutableCopy] autorelease]; + for (UIView *v in [self subviews]) { + [result appendString:[v gtm_subtreeDescriptionAtLevel:1]]; + } + return result; +} + +// for debugging dump the layer hierarchy, frames and isHidden. +- (NSString *)sublayersDescription { + CALayer *layer = [self layer]; + SEL sublayers = NSSelectorFromString(@"sublayers"); + if (![layer respondsToSelector:sublayers]) { + return @"*** Sorry: This app is not linked with the QuartzCore framework."; + } + NSMutableString *result = SublayerDescriptionLine(layer); + NSArray *layers = [layer performSelector:sublayers]; + for (CALayer *l in layers) { + [result appendString:SublayerDescriptionAtLevel(l, 1)]; + } + return result; +} + +@end + +#endif // DEBUG + + diff --git a/Common.iphone/KBDController.h b/Common.iphone/KBDController.h new file mode 100644 index 0000000..211631b --- /dev/null +++ b/Common.iphone/KBDController.h @@ -0,0 +1,187 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import + +enum +{ + LOCKZOOM_AUTO=0, + LOCKZOOM_ON=1, + LOCKZOOM_ARCADE=2 +}; + +@interface KBDController : UIViewController +{ + + CGRect keyboardDelta; + float keyboardScale; + BOOL bMenuBarVisibility; + BOOL bLoading; + BOOL padEnabled; + CGPoint posPad; + float diskAngle ; + + + + int inputMode; + + UITextField* _textField; + UIButton* _menuButton; + UIBarButtonItem* _optionButton ; + UIImageView* _diskView; + UIImageView* _diskLoadingView; + NSMutableArray* _diskIcons; + UILabel* _loaderLabel; + UILabel* _debugIndicator; + UILabel* _swipeIndicator; + UILabel* _zoomIndicator; + UILabel* _padIndicator; + UILabel* _mouseButtonIndicator; + UILabel* _inputIndicator; + + UIActivityIndicatorView* _loader; + NSTimer* _loaderTimer; +#ifdef GRAPHICAL_PAD + UIImageView* _padBackground; + UIImageView* _padButton1Down; + UIImageView* _padButton2Down; + UIImageView* _padStick; +#endif + UIImageView* _padCircleOutter; + UIImageView* _padCircleInner; + UIImageView* _oaButtonView; + UIImageView* _caButtonView; + UITouch* _padTouch; + UITouch* _oaButtonTouch; + UITouch* _caButtonTouch; + UINavigationItem* _emulatorNavItem; + UINavigationBar* _runtimeView; + UIView* _interfaceView; + NSTimer* _hardwarekbdDetectionTimer; + NSTimer* _animateDiskTimer; + + UIImageView* _runtimeControls; + UIView* _runtimeControlsOptions; + + UIImageView* _diskSelection; + UIView* _diskSelectionOptions; + UIScrollView* _uit; + UIScrollView* _uitb; + UIView* _accessView; + UIButton* _leftAccessView; + UIButton* _rightAccessView; + UINavigationBar* _barView; + UINavigationBar* _specialView; + + +} + +@property (nonatomic,retain) UITextField* textField; + +@property (nonatomic,retain) UIButton *menuButton; +@property (nonatomic,retain) UIBarButtonItem* optionButton ; +@property (nonatomic,retain) UIImageView* diskView; +@property (nonatomic,retain) UIImageView* diskLoadingView; +@property (nonatomic,retain) NSMutableArray* diskIcons; +@property (nonatomic,retain) UILabel * loaderLabel; +@property (nonatomic,retain) UILabel* debugIndicator; +@property (nonatomic,retain) UILabel* swipeIndicator; +@property (nonatomic,retain) UILabel* zoomIndicator; +@property (nonatomic,retain) UILabel* padIndicator; +@property (nonatomic,retain) UILabel* mouseButtonIndicator; +@property (nonatomic,retain) UILabel* inputIndicator; +@property (nonatomic,retain) UIActivityIndicatorView* loader; +@property (nonatomic,retain) NSTimer* loaderTimer; +#ifdef GRAPHICAL_PAD +@property (nonatomic,retain) UIImageView* padBackground; +@property (nonatomic,retain) UIImageView* padButton1Down; +@property (nonatomic,retain) UIImageView* padButton2Down; +@property (nonatomic,retain) UIImageView* padStick; +#endif +@property (nonatomic,retain) UIImageView* padCircleOutter; +@property (nonatomic,retain) UIImageView* padCircleInner; +@property (nonatomic,retain) UIImageView* oaButtonView; +@property (nonatomic,retain) UIImageView* caButtonView; +@property (nonatomic,retain) UITouch* padTouch; +@property (nonatomic,retain) UITouch* oaButtonTouch; +@property (nonatomic,retain) UITouch* caButtonTouch; +@property (nonatomic,retain) UINavigationItem* emulatorNavItem; +@property (nonatomic,retain) UINavigationBar* runtimeView; +@property (nonatomic,retain) UIView* interfaceView; +@property (nonatomic,retain) NSTimer* animateDiskTimer; +@property (nonatomic,retain) NSTimer* hardwarekbdDetectionTimer; +@property (nonatomic,retain) UIImageView* runtimeControls; +@property (nonatomic,retain) UIView* runtimeControlsOptions; +@property (nonatomic,retain) UIImageView* diskSelection; +@property (nonatomic,retain) UIView* diskSelectionOptions; +@property (nonatomic,retain) UIScrollView* uit; +@property (nonatomic,retain) UIScrollView* uitb; +@property (nonatomic,retain) UIView* accessView; +@property (nonatomic,retain) UIButton* leftAccessView; +@property (nonatomic,retain) UIButton* rightAccessView; +@property (nonatomic,retain) UINavigationBar* barView; +@property (nonatomic,retain) UINavigationBar* specialView; +//@property (assign,getter=inputMode) int inputMode; + + +-(void)updateSpecialButtonView:(UIButton*)_b state:(int)_state; +-(void)addSpecialKeys; +-(void)addRuntimeControls; +-(void)resetSpecialKeys; +-(void)unloadSpecialKeys; +- (void) animateDisk:(id)_id ; +-(void)refreshControls:(id)sender; +- (void) detectHardwareKeyboard:(id)_id ; +- (void)setLoading:(NSNumber*)_nsvisible; +-(void)setiCadeMode:(BOOL)_mode; +-(void)OnScreenKeyboard:(BOOL)_enabled; +-(void)enableKeyboard:(int)_enable; +-(void)restoreInput; + +//#define INPUTMODE_NONE 0 +#define INPUTMODE_PAD 1 +#define INPUTMODE_KBD 2 +#define INPUTMODE_ACCESS 4 +#define INPUTMODE_MINIACCESS 8 +#define INPUTMODE_ARCADE 16 +#define INPUTMODE_CUSTOMKEYS 32 +#define INPUTMODE_KBDFORCED 64 + +#define INPUTMODE_ALL (INPUTMODE_KBD + INPUTMODE_PAD + INPUTMODE_ACCESS) +#define INPUTMODE_HIDDEN 128 + + +-(int)isInputVisible:(int) _im; +-(void)hideInput; +-(void)cycleInput; +-(void) updateSpecialKey:(CGRect)rv3; +- (void)setInputMode:(int)_mode; +- (void)setMenuBarVisibility:(int)_visible; +//- (void)toggleMenuBarVisibility ; +- (void)setEmulatorTitle:(const char*)_name ; +- (void)swapButton:(id)sender; +- (void)updateView:(CGRect)_rect; +- (void)swipeUp; +- (void)swipeDown; +-(void)setGestureIndicatorVisibility:(int)_mode color:(UIColor*)_color; +-(void)setDebugIndicatorText:(const char*)_text; +-(void)showDebug:(BOOL)_visible; +- (void)hideLoader:(id)_id; +-(void)updatePadView; +-(void)centerPad:(id)center; + +-(void)enablePad:(BOOL)_enable; +-(UIImageView*)createCircle:(float)_radius red:(float)_red green:(float)_green blue:(float)_blue alpha:(float)_alpha; +- (BOOL) myTouchesBegan:(NSSet *)touches ; +- (BOOL) myTouchesMoved:(NSSet *)touches ; +- (BOOL) myTouchesEnded:(NSSet *)touches ; +-(CGFloat) getEmulatorScale; +-(CGRect) getEmulatorDelta; +- (void)updateViewForKeyboard:(int)_height; + + @end + + diff --git a/Common.iphone/KBDController.mm b/Common.iphone/KBDController.mm new file mode 100644 index 0000000..f98f702 --- /dev/null +++ b/Common.iphone/KBDController.mm @@ -0,0 +1,2789 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import "KBDController.h" +#include "../kegs/src/defc.h" +#include "../kegs/src/protos_macdriver.h" +#include "../kegs/src/sim65816.h" +#include "../kegs/src/moremem.h" +#include "../kegs/src/adb.h" +#include "../kegs/src/sound.h" +#include "../kegs/src/async_event.h" +#include "../Common/svnversion.h" +#import "activegsAppDelegate.h" +#import "activegsViewController.h" +#import +#import +#include "../kegs/src/paddles.h" +#import "../kegs/iOS/emulatorView.h" + +#ifdef ACTIVEGS_CUSTOMKEYS + #include "UICustomKey.h" +#endif + +#ifndef ACTIVEGS_NOHARDWAREKEYBOARDETECTION +extern "C" void GSEventSetHardwareKeyboardAttached(Boolean); +extern "C" void UIKeyboardOrderInAutomatic(); +extern "C" void UIKeyboardOrderOutAutomatic(); +extern "C" BOOL UIKeyboardAutomaticIsOnScreen(); +#endif + +#undef debug_printf +#define debug_printf printf + +float joyX=0.0f,joyY=0.0f; +int oaButton=FALSE,caButton=FALSE; +int padEnabled=FALSE; +int externalKeyboard=FALSE; +int iCadeDetected=FALSE; +int bForceOnScreenKeyboard = FALSE; + + +enum runtimeKeysAction +{ +// RT_PAUSE, + RT_COLOR, + RT_FX, + RT_SPEED, + RT_CAPTURE, + RT_RESTORE, + RT_ZOOM +}; + + +typedef struct { + const char* label; + enum runtimeKeysAction action; + UIButton* hButton; +} rkey; + +rkey runtimeKeysList[]= +{ +// { "Pause", RT_PAUSE, nil }, + { "Color", RT_COLOR, nil }, + { "F/X", RT_FX, nil }, + { "Speed", RT_SPEED, nil }, + { "Save", RT_CAPTURE, nil }, + { "Restore", RT_RESTORE, nil }, +// { "Zoom", RT_ZOOM, nil } +}; + + +#define NBBUTTONLOOP 2 + +typedef struct { + const char* label; + int code; + int modifier; + int state; + int shiftxxx; + UIButton* hButton[NBBUTTONLOOP]; +} skey; + + +#define UITB_BUTTON_WIDTH 20 +#define UITB_BUTTON_PADDING 4 +#define ACCESS_HEIGHT 36 + +skey buttonList[] = { + + { "SHIFT",0x38,0,0,0,nil}, + { "ESC", 0x35 , 0, -1, 0,nil}, + { "TAB",0x30,0,-1,0,nil }, + { "CTRL",0x36,0,0,0,nil }, + { "",0x37,0,0,0,nil}, + { "OPT",0x3A,0,0,0,nil}, + { "RESET",0x7F,0,-1,0,nil}, + + { "←", 0x3B,0, -1,0,nil}, + { "→",0x3C,0,-1,0,nil}, + { "↑",0x3E,0,-1,0,nil}, + { "↓",0x3D,0,-1,0,nil}, + + + { "J",0x26+shiftKey,0,-1,1,nil}, + { "K",0x28+shiftKey,0,-1,1,nil}, + { "SPC",0x31,0,-1,0,nil}, + { "RET",0x24,0,-1,0,nil}, + { "1",0x12,0,-1,0,nil}, + { "2",0x13,0,-1,0,nil}, + { "3",0x14,0,-1,0,nil}, + { "4",0x15,0,-1,0,nil}, + { NULL,0,0,0 } }; + +#define KBDWIDTH 22 +#define KBDWIDTHTAB 25 +#define KBDWIDTHCTRL 30 +#define KBDWIDTHRET 30 +#define KBDWIDTHSHIFT 42 +#define KBDWIDTHAPPLE 30 +#define KBDWIDTHSPACE 100 + + +struct kbdDefinition +{ + int w; + const char* k1; + int code1; + const char* k2; + int code2; + int posx,posy; +}; + +struct kbdDefinition kbdDefinitions[]= +{ + { KBDWIDTH,"esc",0x35,0,0 }, + { KBDWIDTH,"1",0x12,"!",0 }, + { KBDWIDTH,"2",0x13,"@",0 }, + { KBDWIDTH,"3",0x14,"#",0 }, + { KBDWIDTH,"4",0x15,"$",0 }, + { KBDWIDTH,"5",0x17,"%",0 }, + { KBDWIDTH,"6",0x16,"^",0 }, + { KBDWIDTH,"7",0x1A,"&",0 }, + { KBDWIDTH,"8",0x1C,"*",0 }, + { KBDWIDTH,"9",0x19,"(",0 }, + { KBDWIDTH,"0",0x1D,")",0 }, + { KBDWIDTH,"-",0x1B,"_",0 }, + { KBDWIDTH,"=",0x18,"+",0 }, + { KBDWIDTHTAB,"delete",0x33,0,0 }, + { -1,0,0,0,0 }, + { KBDWIDTHTAB,"tab",0x30,0,0 }, + { KBDWIDTH,"q",0x0C,"Q",0 }, + { KBDWIDTH,"w",0x0D,"W",0 }, + { KBDWIDTH,"e",0x0E,"E",0 }, + { KBDWIDTH,"r",0x0F,"R",0 }, + { KBDWIDTH,"t",0x11,"T",0 }, + { KBDWIDTH,"y",0x10,"Y",0 }, + { KBDWIDTH,"u",0x20,"U",0 }, + { KBDWIDTH,"i",0x22,"I",0 }, + { KBDWIDTH,"o",0x1F,"O",0 }, + { KBDWIDTH,"p",0x23,"P",0 }, + { KBDWIDTH,"[",0x21,"{",0 }, + { KBDWIDTH,"]",0x1E,"}",0 }, + { KBDWIDTHTAB,"menu",-1,0,0 }, + { -1,0,0,0,0 }, + { KBDWIDTHCTRL,"control",0x36,0,0 }, + { KBDWIDTH,"a",0x00,"A",0 }, + { KBDWIDTH,"s",0x01,"S",0 }, + { KBDWIDTH,"d",0x02,"D",0 }, + { KBDWIDTH,"f",0x03,"F",0 }, + { KBDWIDTH,"g",0x05,"G",0 }, + { KBDWIDTH,"h",0x04,"H",0 }, + { KBDWIDTH,"j",0x26,"J",0 }, + { KBDWIDTH,"k",0x28,"K",0 }, + { KBDWIDTH,"l",0x25,"L",0 }, + { KBDWIDTH,";",0x29,":",0 }, + { KBDWIDTH,"'",0x27,"\"",0 }, + { KBDWIDTHRET,"return",0x24,0,0 }, + { -1,0,0,0,0 }, + { KBDWIDTHSHIFT,"shift",0x38,0,0 }, + { KBDWIDTH,"z",0x06,"Z",0 }, + { KBDWIDTH,"x",0x07,"X",0 }, + { KBDWIDTH,"c",0x08,"C",0 }, + { KBDWIDTH,"v",0x09,"V",0 }, + { KBDWIDTH,"b",0x0B,"B",0 }, + { KBDWIDTH,"n",0x2D,"N",0 }, + { KBDWIDTH,"m",0x2E,"M",0 }, + { KBDWIDTH,",",0x2B,"<",0 }, + { KBDWIDTH,".",0x2F,">",0 }, + { KBDWIDTH,"/",0x2C,"?",0 }, + { KBDWIDTHSHIFT,"shift",0x38,0,0 }, + { -1,0,0,0,0 }, + { KBDWIDTH,"caps",0x39,0,0 }, + { KBDWIDTH,"option",0x37,0,0 }, + { KBDWIDTHAPPLE,"",0x3A,0,0 }, + { KBDWIDTH,"`",0x12,0,0 }, + { KBDWIDTHSPACE," ",0x31,0,0 }, + { KBDWIDTH,"x",0x13,0,0 }, + { KBDWIDTH,"->",0x3C,0,0 }, + { KBDWIDTH,"<-",0x3B,0,0 }, + { KBDWIDTH,"^",0x5B,0,0 }, + { KBDWIDTH,"v",0x13,0,0 }, + + { 0,0,0,0,0 } + +}; + +int findCode(const char* _s) +{ + int i =0; + while(kbdDefinitions[i].w) + { + if (kbdDefinitions[i].k1 && !strcmp(kbdDefinitions[i].k1,_s)) + return kbdDefinitions[i].code1; + if (kbdDefinitions[i].k2 && !strcmp(kbdDefinitions[i].k2,_s)) + return (kbdDefinitions[i].code1 + shiftKey); + i++; + } + return -1; + +} + + +#define INNER_SIZE 64 +#define OUTTER_SIZE 128 +#define BUTTON_SIZE 80 +#define BUTTON_PADDING 32 + +static float innerSize,outterSize,buttonSize; +static const char* disk_names[] = { "disk_35_1", "disk_35_2", "disk_525_1","disk_525_2" , "disk" }; + + +UIImageView* loadImage(NSString* _name) +{ + + NSString *imgSource = [[NSBundle mainBundle] pathForResource:_name ofType:@"png"]; + UIImage* img = [[UIImage imageWithContentsOfFile: imgSource] retain]; + UIImageView* view = [[UIImageView alloc] initWithImage:img]; + return view; + +} + + +int isHardwareKeyboard() +{ + + + if (bForceOnScreenKeyboard) + return 1; + + +#ifdef ACTIVEGS_NOHARDWAREKEYBOARDDETECTION + // ppour la soumission appstore! + return option.getIntValue(OPTION_EXTERNALKBD); +#else + int isHardware=0; + @try + { + Class UIKeyboardImpl = NSClassFromString(@"UIKeyboardImpl"); + id activeInstance = [UIKeyboardImpl performSelector:@selector(sharedInstance)]; + id v = [activeInstance valueForKey:@"isInHardwareKeyboardMode"]; + isHardware = [(NSNumber*)v intValue]; + } + @catch (NSException *exception) + { + NSLog(@"Exception %@", exception); + } + + return isHardware; +#endif + +} + +@implementation KBDController + +@synthesize textField = _textField; +//@synthesize inputMode = _inputMode; +@synthesize menuButton = _menuButton; +@synthesize optionButton = _optionButton; +@synthesize diskView = _diskView; +@synthesize diskLoadingView = _diskLoadingView; +@synthesize diskIcons = _diskIcons; +@synthesize loaderLabel = _loaderLabel; +@synthesize debugIndicator = _debugIndicator; +@synthesize swipeIndicator = _swipeIndicator; +@synthesize zoomIndicator = _zoomIndicator; +@synthesize padIndicator = _padIndicator; +@synthesize mouseButtonIndicator = _mouseButtonIndicator; +@synthesize inputIndicator = _inputIndicator; +@synthesize loader = _loader; +@synthesize loaderTimer = _loaderTimer; +#ifdef GRAPHICAL_PAD +@synthesize padBackground = _padBackground; +@synthesize padButton1Down = _padButton1Down; +@synthesize padButton2Down = _padButton2Down; +@synthesize padStick = _padStick; +#endif +@synthesize padCircleOutter = _padCircleOutter; +@synthesize padCircleInner = _padCircleInner; +@synthesize oaButtonView = _oaButtonView; +@synthesize caButtonView = _caButtonView; +@synthesize padTouch = _padTouch; +@synthesize oaButtonTouch = _oaButtonTouch; +@synthesize caButtonTouch = _caButtonTouch; +@synthesize emulatorNavItem = _emulatorNavItem; +@synthesize runtimeView = _runtimeView; +@synthesize interfaceView = _interfaceView; +@synthesize hardwarekbdDetectionTimer = _hardwarekbdDetectionTimer; +@synthesize animateDiskTimer = _animateDiskTimer; +@synthesize runtimeControls = _runtimeControls; +@synthesize runtimeControlsOptions = _runtimeControlsOptions; +@synthesize diskSelection = _diskSelection; +@synthesize diskSelectionOptions = _diskSelectionOptions; +@synthesize uit = _uit; +@synthesize uitb = uitb; +@synthesize accessView = _accessView; +@synthesize leftAccessView = _leftAccessView; +@synthesize rightAccessView = _rightAccessView; +@synthesize barView = _barView; +@synthesize specialView = _specialView; + +extern int findCode(const char* _s); + + +- (void)loadView +{ + + NSLog(@"---kbd loadView"); + + CGRect r = [UIScreen mainScreen].applicationFrame; + self.interfaceView = [ [UIView alloc] initWithFrame:r] ; + + [self.interfaceView setUserInteractionEnabled:TRUE]; + self.interfaceView.multipleTouchEnabled = 1; + + float s = [pManager resolutionRatio]; + + self.barView = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, r.size.width, BARVIEW_HEIGHT)]; + self.barView.barStyle = UIBarStyleBlack; + self.barView.translucent = TRUE; +#ifdef ACTIVEGS_NOAPPLEBRANDING + self.emulatorNavItem = [[UINavigationItem alloc] initWithTitle:@"ActiveGS"]; +#else + self.emulatorNavItem = [[UINavigationItem alloc] initWithTitle:@"Apple IIGS™"]; +#endif + + [self.barView pushNavigationItem:self.emulatorNavItem animated:FALSE]; + + // left Arrow + UIButton* backButton = [UIButton buttonWithType:(UIButtonType)101]; // left-pointing shape! + [backButton addTarget:self action:@selector(menuButton:) forControlEvents:UIControlEventTouchUpInside]; + [backButton setTitle:@"Browse" forState:UIControlStateNormal]; + + // create button item -- possible because UIButton subclasses UIView! + UIBarButtonItem* browseItem = [[UIBarButtonItem alloc] initWithCustomView:backButton]; + + self.emulatorNavItem.leftBarButtonItem = browseItem; + + self.optionButton = [[UIBarButtonItem alloc] initWithTitle:@"Options" style:UIBarButtonItemStylePlain + target:self + action:@selector(optionsButton:)]; + + self.emulatorNavItem.rightBarButtonItem = self.optionButton; + + [self.interfaceView addSubview:self.barView]; + + + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc addObserver:self selector:@selector(keyboardWillShow:) name: UIKeyboardWillShowNotification object:nil]; + [nc addObserver:self selector:@selector(keyboardWillHide:) name: UIKeyboardWillHideNotification object:nil]; + [nc addObserver:self selector:@selector(keyboardDidShow:) name: UIKeyboardDidShowNotification object:nil]; + [nc addObserver:self selector:@selector(keyboardDidHide:) name: UIKeyboardDidHideNotification object:nil]; + + + // charge toutes les icones disks + + self.diskIcons = [[NSMutableArray alloc] init]; + + for(int i=0;i<5;i++) + { + + NSString *imgSource = [[NSBundle mainBundle] pathForResource:[NSString stringWithUTF8String:disk_names[i]] ofType:@"png"]; + NSLog(@"loading %@",imgSource); + [self.diskIcons addObject:[UIImage imageWithContentsOfFile: imgSource]]; + } + + CGSize ds = [[self.diskIcons objectAtIndex:4] size]; + ds.width *=s; + ds.height*=s; + self.diskView = [[UIImageView alloc] initWithFrame:CGRectMake(0,BARVIEW_HEIGHT+4*s,ds.width,ds.height)]; + self.diskView.image = [self.diskIcons objectAtIndex:4]; + self.diskView.hidden = TRUE; + self.diskView.alpha=0.8; + + + self.diskLoadingView = [[UIImageView alloc] initWithFrame:CGRectMake(0,BARVIEW_HEIGHT+4*s,ds.width,ds.height)]; + self.diskLoadingView.image = [self.diskIcons objectAtIndex:0]; + self.diskLoadingView.hidden = FALSE; + self.diskLoadingView.alpha=0.0; // hidden by default + + + [self.interfaceView addSubview:self.diskView]; + [self.interfaceView addSubview:self.diskLoadingView]; + +#define WHEELSIZE 50 + self.loader = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; + CGRect lr = self.loader.frame; + lr.origin.x = 8; + lr.origin.y = 32; + [self.loader setFrame:lr]; + [self.interfaceView addSubview:self.loader]; + [self.loader stopAnimating]; + self.loader.hidden = TRUE; + + + self.swipeIndicator = [[UILabel alloc] initWithFrame:CGRectMake(8,64,16,16)]; + self.swipeIndicator.backgroundColor = [UIColor redColor]; + self.swipeIndicator.text = @"S"; + [self.interfaceView addSubview:self.swipeIndicator]; + + self.zoomIndicator = [[UILabel alloc] initWithFrame:CGRectMake(8+20,64,16,16)]; + self.zoomIndicator.backgroundColor = [UIColor redColor]; + self.zoomIndicator.text = @"Z"; + [self.interfaceView addSubview:self.zoomIndicator]; + + self.padIndicator = [[UILabel alloc] initWithFrame:CGRectMake(8+40,64,16,16)]; + self.padIndicator.backgroundColor = [UIColor redColor]; + self.padIndicator.text = @"P"; + [self.interfaceView addSubview:self.padIndicator]; + + self.mouseButtonIndicator = [[UILabel alloc] initWithFrame:CGRectMake(8+60,64,16,16)]; + self.mouseButtonIndicator.backgroundColor = [UIColor greenColor]; + self.mouseButtonIndicator.text = @"B"; + [self.interfaceView addSubview:self.mouseButtonIndicator]; + + + self.inputIndicator = [[UILabel alloc] initWithFrame:CGRectMake(8+80,64,16,16)]; + self.inputIndicator.backgroundColor = [UIColor greenColor]; + self.inputIndicator.text = @"I"; + [self.interfaceView addSubview:self.inputIndicator]; + + self.debugIndicator = [[UILabel alloc] initWithFrame:CGRectMake(8+120,64,150,16)]; + self.debugIndicator.hidden = TRUE; + self.debugIndicator.backgroundColor = [UIColor lightGrayColor]; + self.debugIndicator.font = [UIFont systemFontOfSize:(CGFloat)12.0]; + self.debugIndicator.lineBreakMode=UILineBreakModeClip; + [self.interfaceView addSubview:self.debugIndicator]; + + [self showDebug:FALSE]; + + CGRect lrl = CGRectMake(lr.origin.x,lr.origin.y+lr.size.height,50,10); + + self.loaderLabel = [[UILabel alloc] initWithFrame:lrl]; + self.loaderLabel.text=@"100pc"; + [self.interfaceView addSubview:self.loaderLabel]; + self.loaderLabel.hidden = TRUE; + + + self.textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 0, 0)]; + self.textField.delegate = self; + self.textField.autocapitalizationType= UITextAutocapitalizationTypeAllCharacters; + self.textField.text= @"*"; // Put a default value to capture del key + [self.interfaceView addSubview:self.textField]; + + self.view = self.interfaceView; + + keyboardScale = 1.0; + + + float rr = [pManager resolutionRatio]; + innerSize = INNER_SIZE * rr; + outterSize = OUTTER_SIZE * rr; + buttonSize = BUTTON_SIZE * rr; + + self.padCircleOutter = [self createCircle:outterSize red:1.0 green:1.0 blue:1.0 alpha:0.3]; + self.padCircleOutter.frame = CGRectMake(0,r.size.height-outterSize,outterSize,outterSize); + [self.interfaceView addSubview:self.padCircleOutter]; + + self.padCircleInner = [self createCircle:innerSize red:0.8 green:0.8 blue:0.8 alpha:1.0]; + + [self.padCircleOutter addSubview:self.padCircleInner]; + + self.oaButtonView = [self createCircle:buttonSize red:1.0 green:1.0 blue:1.0 alpha:1.0]; + self.oaButtonView.frame = CGRectMake(r.size.width-buttonSize,r.size.height-buttonSize*2,buttonSize,buttonSize); + [self.interfaceView addSubview:self.oaButtonView]; + + self.caButtonView = [self createCircle:buttonSize red:1.0 green:1.0 blue:1.0 alpha:1.0]; + self.caButtonView.frame = CGRectMake(r.size.width-buttonSize,r.size.height-buttonSize,buttonSize,buttonSize); + [self.interfaceView addSubview:self.caButtonView]; + +#ifdef GRAPHICAL_PAD + self.padBackground = loadImage(@"pad_up"); + + // resize la view + CGSize rgpad = self.padBackground.image.size; + float gratio = 320.0 / rgpad.width ; + float hpad = gratio * rgpad.height ; + self.padBackground.frame = CGRectMake(0,480-hpad,320,hpad); + + self.padButton1Down = loadImage(@"pad_button1_down"); + + // 42,28 + + // resize la view + rgpad = self.padButton1Down.image.size; + self.padButton1Down.frame = CGRectMake(42/2,480-hpad+28/2,gratio * rgpad.width,gratio * rgpad.height); + + self.padButton2Down = loadImage(@"pad_button2_down"); + + // 42,226 + + // resize la view + rgpad = self.padButton2Down.image.size; + self.padButton2Down.frame = CGRectMake(42/2,480-hpad+226/2,gratio * rgpad.width,gratio * rgpad.height); + + self.padStick = loadImage(@"pad_stick"); + + // 42,226 + + // resize la view + rgpad = self.padStick.image.size; + self.padStick.frame = CGRectMake(200,480-hpad+200/2,gratio * rgpad.width,gratio * rgpad.height); + + + [self.interfaceView addSubview:self.padBackground]; + [self.interfaceView addSubview:self.padButton1Down]; + [self.interfaceView addSubview:self.padButton2Down]; + [self.interfaceView addSubview:self.padStick]; + + +#endif + + [self addRuntimeControls]; + [self addDiskSelection]; + + [self addSpecialKeys]; + +#if 0 + [self addRuntimeKeys]; +#endif + +#ifdef ACTIVEGS_CUSTOMKEYS + init_custom_keys(); +#endif + + iCadeDetected = FALSE; + externalKeyboard = FALSE; + + [self detectHardwareKeyboard:nil]; + + + [self setInputMode:INPUTMODE_ACCESS+INPUTMODE_HIDDEN]; + [self setMenuBarVisibility:TRUE]; // So First time users are not lost! + +} + +int hardwarekeyboard= 0; + +-(void)detectHardwareKeyboard:(id)_obj +{ + + if (bForceOnScreenKeyboard) + return ; + + int d = isHardwareKeyboard(); + if (d == hardwarekeyboard) return ; + hardwarekeyboard = d; + if ( d ) + { + [pManager setNotificationText:@"External keyboard enabled"]; + [self enableKeyboard:TRUE]; + } + else + { + [pManager setNotificationText:@"External keyboard disabled"]; + + [self setiCadeMode:FALSE]; + } + + +} + + +-(void)setiCadeMode:(BOOL)_mode +{ + if (iCadeDetected == _mode) + return ; + + iCadeDetected = _mode; + NSLog(@"setting iCadeMode to %d",_mode); + + if (_mode==TRUE) + { + option.setIntValue(OPTION_JOYSTICKMODE,JOYSTICK_TYPE_ICADE); + [self setInputMode:inputMode&INPUTMODE_PAD]; + [pManager setNotificationText:@"iCade activated"]; + } + else + { + option.setIntValue(OPTION_JOYSTICKMODE,JOYSTICK_TYPE_KEYPAD); + [pManager setNotificationText:@"iCade de-activated"]; + + } + + [self refreshControls:nil]; + +} + + +typedef struct { + int cid; + const char* name; + const char* options[5]; + int optionValues[5]; + UISegmentedControl* hControl; +} scontrol; + + +enum runtimeControlEnum +{ + RC_LOCKZOOM=100, + RC_JOYSTICK, + RC_DISPLAY, + RC_TYPE, + RC_SPEED, + RC_FPS, + RC_KBD, + RC_MOUSE, + RC_DISKSOUND, + RC_AUDIO, + RC_MEMORY, + RC_END=-1 + +}; + + + +scontrol runtimeControlDefs[]={ + + { + RC_SPEED, + "Speed", + { "1Mhz", "2GS", "ZIP",NULL } , + { (int)SPEED_1MHZ, (int)SPEED_GS, (int)SPEED_ZIP }, + nil + }, + { + RC_FPS, + "Frames per second", + { "15", "20","30", "60",NULL } , + { 15, 20,30, 60 }, + nil + }, + + { + RC_AUDIO, + "Audio", + { "None", "22KHz", "44KHz",NULL } , + { 0, 22050, 44100 }, + nil + }, + { + RC_MEMORY, + "Memory Size", + { "1MB", "2MB", "4MB",NULL } , + { 1, 2, 4 }, + nil + }, + { + RC_DISPLAY, + "Display" , + { "CRT", "LCD", NULL }, + { (int)VIDEOFX_CRT, (int)VIDEOFX_LCD }, + nil + }, + { + RC_TYPE, + "Screen", + { "B&W", "Green" ,"Colors", NULL }, + { (int)COLORMODE_BW, (int)COLORMODE_GREEN,(int)COLORMODE_AUTO, }, + nil + }, + + + + { + RC_LOCKZOOM, + "Zoom Control" , + { "Auto", "Lock", "Arcade",NULL }, + { LOCKZOOM_AUTO,LOCKZOOM_ON, LOCKZOOM_ARCADE}, + nil + }, +/* +#if 0 + { + RC_JOYSTICK, + "Pad Input" , + { "iDevice", "iCade",NULL }, + { JOYSTICK_TYPE_NATIVE_1,JOYSTICK_TYPE_ICADE}, + nil + }, +#endif + */ +#ifdef ACTIVEGS_NOHARDWAREKEYBOARDDETECTION + { + RC_KBD, + "External Keyboard", + { "Disable", "Enable",NULL } , + { 0, 1 }, + nil + }, +#endif + { + RC_MOUSE, + "Mouse Control", + { "Warp", "Touch",NULL } , + { (int)WARP_POINTER, WARP_TOUCHSCREEN,0 }, + nil + }, + { + RC_DISKSOUND, + "Disk Drive Sounds", + { "Enable", "Disable",NULL } , + { (int)1, 0,0 }, + nil + }, + { + RC_END, + NULL, + NULL, + NULL, + nil + } + +}; + + +scontrol* findControlByID(int _controlId) +{ + int i=0; + while(runtimeControlDefs[i].cid!=RC_END) + { + if (runtimeControlDefs[i].cid==_controlId) + return &runtimeControlDefs[i]; + i++; + } + return NULL; +} + +void setControlValue(int _control,int _v) +{ + scontrol* s = findControlByID(_control); + if (!s) return ; + + int i =0; + while(s->options[i]) + { + if (s->optionValues[i]==_v) + { + if (s->hControl) + s->hControl.selectedSegmentIndex = i; + return; + } + i++; + } + printf("value %d not found for controlerid:%d\n",_v,_control); +} + +extern int x_lock_zoom ; +extern int x_frame_rate ; + +-(void)refreshControls:(id)sender +{ + + setControlValue(RC_LOCKZOOM, x_lock_zoom); + setControlValue(RC_DISPLAY, r_sim65816.get_video_fx()); + setControlValue(RC_TYPE, r_sim65816.get_color_mode()); + setControlValue(RC_SPEED, g_sim65816.get_limit_speed()); + setControlValue(RC_FPS, x_frame_rate); + setControlValue(RC_MOUSE, g_adb.g_warp_pointer); + setControlValue(RC_DISKSOUND, option.getIntValue(OPTION_DISKSOUND)); + setControlValue(RC_AUDIO, option.getIntValue(OPTION_AUDIORATE)); + setControlValue(RC_MEMORY, option.getIntValue(OPTION_MEMORYSIZE)); + setControlValue(RC_KBD, option.getIntValue(OPTION_EXTERNALKBD)); + setControlValue(RC_JOYSTICK, option.getIntValue(OPTION_JOYSTICKMODE)); + +} + +- (void)ctrlChanged:(id)sender +{ + + int i = 0; + while (runtimeControlDefs[i].cid!=RC_END) + { + if (sender == runtimeControlDefs[i].hControl ) + { + int sel = runtimeControlDefs[i].hControl.selectedSegmentIndex; + int v = runtimeControlDefs[i].optionValues[sel]; + //CEmulator* p = CEmulator::theEmulator; + switch(runtimeControlDefs[i].cid) + { + case RC_LOCKZOOM: + option.setIntValue(OPTION_LOCKZOOM,v); + x_lock_zoom = v; + if ( (v==LOCKZOOM_ON) || (v==LOCKZOOM_ARCADE) ) + [[pManager getEmulatorView].contentView enableGestures:MODE_ZOOM]; + else + [[pManager getEmulatorView].contentView disableGestures:MODE_ZOOM]; + break; + case RC_JOYSTICK: + option.setIntValue(OPTION_JOYSTICKMODE,v); + g_joystick_type = v; + break; + case RC_DISPLAY: + // monitor + { + extern void x_set_video_fx(videofxenum _vfx); + option.setIntValue(OPTION_VIDEOFX,v); + x_set_video_fx((videofxenum)v); + } + // [pManager getEmulatorView].zv.crt.hidden = (v==VIDEOFX_CRT?0:1); + break; + case RC_TYPE: + // color + option.setIntValue(OPTION_COLORMODE,v); + break; + case RC_SPEED: + // speed + option.setIntValue(OPTION_SPEED,v); + // g_sim65816.set_limit_speed((speedenum)v); + break; + case RC_FPS: + // frame rate + option.setIntValue(OPTION_FRAMERATE,v); + x_frame_rate = v; + [[pManager getEmulatorView].zv.ew activateEmulatorRefresh:v]; + break; + case RC_MOUSE: + // warp + g_adb.g_warp_pointer = (warpmode)v; + break; + case RC_AUDIO: + // audiorate + option.setIntValue(OPTION_AUDIORATE,v); + break; + case RC_DISKSOUND: + // audiorate + option.setIntValue(OPTION_DISKSOUND,v); + break; + + case RC_MEMORY: + // memorysize + option.setIntValue(OPTION_MEMORYSIZE,v); + break; + case RC_KBD: + // external kbd + option.setIntValue(OPTION_EXTERNALKBD,v); + [self setInputMode:inputMode]; // pour forcer un refresh! + break; + default: + break; + } + option.saveOptions(1); + r_sim65816.request_update_emulator_runtime_config(); + return ; + + } + i++; + } + printf("control not found\n"); + +} +// +-(void)addRuntimeControls +{ + + +// CGSize s = self.view.frame.size; + + + float res = [pManager resolutionRatio]; + float OPTIONWIDTH = 200* res; + float OPTIONMARGIN = 20* res; + float LINEHEIGHT = 20*res; + + + self.runtimeControlsOptions = [[UIView alloc] initWithFrame:CGRectZero]; + self.runtimeControlsOptions.userInteractionEnabled=TRUE; // NOT SET BY DEFAULT ON UIIMAGEVIEW + + int l = 0; + int i=0; + int nbs=0; + while (runtimeControlDefs[i].cid!=RC_END) + { + + + UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(OPTIONMARGIN,l,OPTIONWIDTH,LINEHEIGHT)]; + label.text = [NSString stringWithUTF8String:runtimeControlDefs[i].name]; + label.textAlignment = UITextAlignmentCenter; + label.font = [UIFont systemFontOfSize:12*res]; + label.backgroundColor = [UIColor clearColor]; + [self.runtimeControlsOptions addSubview:label]; + l+=LINEHEIGHT; + + CGRect segrect = CGRectMake(OPTIONMARGIN,l,OPTIONWIDTH,LINEHEIGHT); + UISegmentedControl* seg = [[UISegmentedControl alloc ] initWithFrame:segrect]; + // [seg setSegmentedControlStyle:UISegmentedControlStyleBar]; + const char** nameptr = runtimeControlDefs[i].options; + + int j=0; + while(*nameptr) + { + [seg insertSegmentWithTitle:[NSString stringWithUTF8String:*nameptr] atIndex:j++ animated:FALSE]; + nameptr++; + } + + [seg addTarget:self action:@selector(ctrlChanged:) forControlEvents:UIControlEventValueChanged]; + + runtimeControlDefs[i].hControl = seg; + [self.runtimeControlsOptions addSubview:seg]; + + + l+=LINEHEIGHT; + i++; + nbs++; + + } + + float w = OPTIONWIDTH+OPTIONMARGIN*2; + + // resize la vue correctement + [self.runtimeControlsOptions setFrame:CGRectMake(0,0,w,l)]; + + float ho = nbs*(LINEHEIGHT+OPTIONMARGIN) + (LINEHEIGHT+OPTIONMARGIN) + OPTIONMARGIN*2 ; + if (ho>280*res) + ho = 280*res; + + CGRect r = CGRectMake(0,0,w,ho); + self.runtimeControls = [[UIImageView alloc] initWithFrame:r]; + self.runtimeControls.userInteractionEnabled=TRUE; // NOT SET BY DEFAULT ON UIIMAGEVIEW + self.runtimeControls.alpha = 0.0; + + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + CGContextRef context = CGBitmapContextCreate(nil, (int)r.size.width,(int)r.size.height, 8, (int)r.size.width*4,colorSpace,kCGImageAlphaPremultipliedLast); + + float ovalWidth=14,ovalHeight=14; + CGContextSaveGState(context); + CGContextTranslateCTM (context, CGRectGetMinX(r), CGRectGetMinY(r)); + CGContextScaleCTM (context, ovalWidth, ovalHeight); + float fw = CGRectGetWidth (r) / ovalWidth; + float fh = CGRectGetHeight (r) / ovalHeight; + CGContextMoveToPoint(context, fw, fh/2); + CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1); + CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1); + CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1); + CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1); + CGContextClosePath(context); + CGContextRestoreGState(context); + CGContextClip(context); + + const CGFloat* col = CGColorGetComponents( [[UIColor colorWithWhite:1.0 alpha:0.8] CGColor]); + CGContextSetFillColor(context,col); + CGContextFillRect(context,r); + + // TODO RAJOUTER UNE OMBRE + + CGImageRef imageRef = CGBitmapContextCreateImage(context); + UIImage* newImage = [UIImage imageWithCGImage:imageRef]; + self.runtimeControls.image = newImage; + + // cleanup + CGContextRelease(context); + CGColorSpaceRelease(colorSpace); + + const float lb = ho - LINEHEIGHT - OPTIONMARGIN; + const float WB = 50 * res; + + UIButton* button = [UIButton buttonWithType:(UIButtonType)100]; + [button addTarget:self action:@selector(optionsButton:) forControlEvents:UIControlEventTouchUpInside]; + [button setTitle:@"Done" forState:UIControlStateNormal]; + + + + button.frame = CGRectMake((w-WB-OPTIONMARGIN),lb,WB,LINEHEIGHT); + + [self.runtimeControls addSubview:button]; + + UIButton* buttonrestore = [UIButton buttonWithType:(UIButtonType)100]; + [buttonrestore addTarget:self action:@selector(restoreButton:) forControlEvents:UIControlEventTouchUpInside]; + [buttonrestore setTitle:@"Default" forState:UIControlStateNormal]; + + buttonrestore.frame = CGRectMake(OPTIONMARGIN,lb,WB,LINEHEIGHT); + + [self.runtimeControls addSubview:buttonrestore]; + + + + // ajoute le scrollView + + self.uit = [[UIScrollView alloc]initWithFrame:CGRectMake(0,OPTIONMARGIN,w,-OPTIONMARGIN+ho-OPTIONMARGIN-LINEHEIGHT*2)]; + self.uit.userInteractionEnabled=TRUE; // NOT SET BY DEFAULT ON UIIMAGEVIEW + self.uit.showsHorizontalScrollIndicator = NO; + self.uit.showsVerticalScrollIndicator = YES; + self.uit.maximumZoomScale = 1.0; + self.uit.minimumZoomScale = 1.0; + self.uit.contentSize = CGSizeMake(self.runtimeControlsOptions.frame.size.width,self.runtimeControlsOptions.frame.size.height); + [self.uit addSubview:self.runtimeControlsOptions]; + [self.runtimeControls addSubview:self.uit]; + + /* + [[runtimeControls layer] setCornerRadius:8]; + [[runtimeControls layer] setMasksToBounds:NO]; + [[runtimeControls layer] setShadowColor:[UIColor blackColor].CGColor]; + [[runtimeControls layer] setShadowOpacity:1.0f]; + [[runtimeControls layer] setShadowRadius:6.0f]; + [[runtimeControls layer] setShadowOffset:CGSizeMake(0, 3)]; + */ + + [self.view addSubview:self.runtimeControls]; + + +} + + + +-(void)addDiskSelection +{ + + [self.diskSelectionOptions release]; + [self.diskSelection release]; + + self.diskSelectionOptions = nil; + self.diskSelection = nil; + + if (!pMac) + return ; + int swap = pMac->getSmartSwap(); + if (!swap) + return ; + + int slot = swap/10; + int disk = swap%10; + + + // CActiveImage& active = pMac->config->getActiveImage(slot,disk); + + // CGSize s = self.view.frame.size; + + + float res = [pManager resolutionRatio]; + float SELECTIONWIDTH = 200* res; + float OPTIONMARGIN = 10* res; + float LINEHEIGHT = 20*res; + float MOUNTWIDTH = 64*res; + + self.diskSelectionOptions = [[UIView alloc] initWithFrame:CGRectZero]; + self.diskSelectionOptions.userInteractionEnabled=TRUE; // NOT SET BY DEFAULT ON UIIMAGEVIEW + + int l = 0; +// int i=0; + int nbs=0; +// while (runtimeControlDefs[i].cid!=RC_END) + for(int i=0;iconfig->localImages[slot-5][disk-1][i]; + if (info.status==UNDEFINED) + continue ; + UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(OPTIONMARGIN,l,SELECTIONWIDTH-MOUNTWIDTH,LINEHEIGHT)]; + MyString l8; + l8.Format("#%d %s",i,info.shortname); + label.text = [NSString stringWithUTF8String:l8.c_str()]; + NSLog(@"adding %@",label.text); + label.textAlignment = UITextAlignmentLeft; + label.font = [UIFont systemFontOfSize:12*res]; + label.backgroundColor = [UIColor clearColor]; + [self.diskSelectionOptions addSubview:label]; + + if( info.status!=MOUNTED) + { + UIButton* button = [UIButton buttonWithType:(UIButtonType)100]; + button.tag = slot+disk*10+i*100; + [button addTarget:self action:@selector(mountButton:) forControlEvents:UIControlEventTouchUpInside]; + [button setTitle:@"Mount" forState:UIControlStateNormal]; + [button setFrame:CGRectMake(OPTIONMARGIN+SELECTIONWIDTH,l,MOUNTWIDTH,LINEHEIGHT)]; + [self.diskSelectionOptions addSubview:button]; + } + + + + + + nbs++; + l+=LINEHEIGHT; + // i++; + } + + float w = MOUNTWIDTH+SELECTIONWIDTH+OPTIONMARGIN*2; + + // resize la vue correctement + [self.diskSelectionOptions setFrame:CGRectMake(0,0,w,l)]; + + float ho = nbs*(LINEHEIGHT+OPTIONMARGIN) + (LINEHEIGHT+OPTIONMARGIN) + OPTIONMARGIN*2 ; + if (ho>280*res) + ho = 280*res; + + CGRect r = CGRectMake(0,0,w,ho); + self.diskSelection= [[UIImageView alloc] initWithFrame:r]; + self.diskSelection.userInteractionEnabled=TRUE; // NOT SET BY DEFAULT ON UIIMAGEVIEW + self.diskSelection.alpha = 0.0; + + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + CGContextRef context = CGBitmapContextCreate(nil, (int)r.size.width,(int)r.size.height, 8, (int)r.size.width*4,colorSpace,kCGImageAlphaPremultipliedLast); + + float ovalWidth=14,ovalHeight=14; + CGContextSaveGState(context); + CGContextTranslateCTM (context, CGRectGetMinX(r), CGRectGetMinY(r)); + CGContextScaleCTM (context, ovalWidth, ovalHeight); + float fw = CGRectGetWidth (r) / ovalWidth; + float fh = CGRectGetHeight (r) / ovalHeight; + CGContextMoveToPoint(context, fw, fh/2); + CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1); + CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1); + CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1); + CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1); + CGContextClosePath(context); + CGContextRestoreGState(context); + CGContextClip(context); + + const CGFloat* col = CGColorGetComponents( [[UIColor colorWithWhite:1.0 alpha:0.8] CGColor]); + CGContextSetFillColor(context,col); + CGContextFillRect(context,r); + + // TODO RAJOUTER UNE OMBRE + + CGImageRef imageRef = CGBitmapContextCreateImage(context); + UIImage* newImage = [UIImage imageWithCGImage:imageRef]; + self.diskSelection.image = newImage; + + // cleanup + CGContextRelease(context); + CGColorSpaceRelease(colorSpace); + + const float lb = ho - LINEHEIGHT - OPTIONMARGIN; + const float WB = 50 * res; + + UIButton* button = [UIButton buttonWithType:(UIButtonType)100]; + [button addTarget:self action:@selector(diskSelectionButton:) forControlEvents:UIControlEventTouchUpInside]; + [button setTitle:@"Close" forState:UIControlStateNormal]; + + + + button.frame = CGRectMake((w-WB-OPTIONMARGIN),lb,WB,LINEHEIGHT); + + [self.diskSelection addSubview:button]; + /* + UIButton* buttonrestore = [UIButton buttonWithType:(UIButtonType)100]; + [buttonrestore addTarget:self action:@selector(restoreButton:) forControlEvents:UIControlEventTouchUpInside]; + [buttonrestore setTitle:@"Default" forState:UIControlStateNormal]; + + buttonrestore.frame = CGRectMake(OPTIONMARGIN,lb,WB,LINEHEIGHT); + + [self.runtimeControls addSubview:buttonrestore]; + */ + + + // ajoute le scrollView + + UIScrollView* sw = [[UIScrollView alloc]initWithFrame:CGRectMake(0,OPTIONMARGIN,w,-OPTIONMARGIN+ho-OPTIONMARGIN-LINEHEIGHT*2)]; + sw.userInteractionEnabled=TRUE; // NOT SET BY DEFAULT ON UIIMAGEVIEW + sw.showsHorizontalScrollIndicator = NO; + sw.showsVerticalScrollIndicator = YES; + sw.maximumZoomScale = 1.0; + sw.minimumZoomScale = 1.0; + sw.contentSize = CGSizeMake(self.diskSelectionOptions.frame.size.width,self.diskSelectionOptions.frame.size.height); + [sw addSubview:self.diskSelectionOptions]; + [self.diskSelection addSubview:sw]; + + /* + [[runtimeControls layer] setCornerRadius:8]; + [[runtimeControls layer] setMasksToBounds:NO]; + [[runtimeControls layer] setShadowColor:[UIColor blackColor].CGColor]; + [[runtimeControls layer] setShadowOpacity:1.0f]; + [[runtimeControls layer] setShadowRadius:6.0f]; + [[runtimeControls layer] setShadowOffset:CGSizeMake(0, 3)]; + */ + + [self.view addSubview:self.diskSelection]; + + +} + + + + +// Ajoute les modifiers au clavier + +-(void)addRuntimeKeys +{ + + if (self.runtimeView) + { + printf("removing RuntimeView"); + [self.runtimeView removeFromSuperview]; + [self.runtimeView release]; + } + + // position par défault + CGRect rv3 = [UIScreen mainScreen].applicationFrame; + + self.runtimeView = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 40, rv3.size.width, 36.0)]; + self.runtimeView.barStyle = UIBarStyleBlack; + self.runtimeView.translucent = TRUE; + + + int pos = 2; + int nbkey = sizeof(runtimeKeysList)/sizeof(rkey); + + for(int i=0;iself.specialView.frame.size.width/2) + { + p.x -= self.specialView.frame.size.width/2; + } + /* + // A UTILISER AVEC BOUNCES=NO : NE MARCHE PAS! + if (p.xgetSmartSwap(); + if (bMenuBarVisibility && sw) + { + rotationAndPerspectiveTransform.m34 = 1.0 / -200; + rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, diskAngle * M_PI / 180.0f, 0.0f, 1.0f, 0.0f); + self.diskView.hidden = false; + } + else + self.diskView.hidden = true; + } + else + self.diskView.hidden = true; + + self.diskView.layer.transform = rotationAndPerspectiveTransform; + diskAngle += 10; + +} + +- (void) keyup:(NSTimer*)theTimer +{ + NSNumber* ui = [theTimer userInfo]; + int c = [ui intValue]; + if (c & shiftKey) + add_event_modifier(0); + add_event_key(c&0xFF,1); + + + if (c!=0x36 && c!=0x37 && c!=0x3a) + [self clearSpecialKeys]; +} + + + +const char* iCadeDetectString="zexwzexw"; +int iCadeDetectPos=0; + +int keypad_x = 0; +int keypad_y = 0; + + +void paddle_trigger_icade(double dcycs) +{ + g_paddles.g_paddle_val[0] = keypad_x; + g_paddles.g_paddle_val[1] = keypad_y; + g_paddles.g_paddle_val[2] = 32767; + g_paddles.g_paddle_val[3] = 32767; + g_moremem.g_paddle_buttons |= 0xc; + paddle_update_trigger_dcycs(dcycs); +} + + +int x_adb_get_keypad_x() +{ + return keypad_x; +} + +int x_adb_get_keypad_y() +{ + return keypad_y; +} + + + + +- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string +{ + const char* s = [string UTF8String]; + // printf("input:%s\n",s); + if (!iCadeDetected || bForceOnScreenKeyboard) + { + if (*s == iCadeDetectString[iCadeDetectPos]) + iCadeDetectPos++; + else + iCadeDetectPos=0; + + if (!iCadeDetectString[iCadeDetectPos]) + { + NSLog(@"icade activated"); + iCadeDetectPos=0; + if (bForceOnScreenKeyboard) + { + [self OnScreenKeyboard:FALSE]; + } + + else + [self setiCadeMode:TRUE]; + return NO; + /* + option.setIntValue(OPTION_JOYSTICKMODE,JOYSTICK_TYPE_ICADE); + [self setInputMode:inputMode&INPUTMODE_PAD]; + [self refreshControls:nil]; + */ + } + } + else + if (!bForceOnScreenKeyboard) + { + + char c; + int i=0; + while( (c = s[i++]) != 0) + { + switch(c) + { + case 'z': // up + keypad_y = -32767; + break; + case 'e': + case 'w': // !verti + keypad_y = 0; + break; + case 'x': // down + keypad_y = 32767; + break; + case 'q': // left + keypad_x = -32767; + break; + case 'a': // !hori + case 'c': + keypad_x = 0; + break; + case 'd': // right + keypad_x = 32767; + break; + case 'y': // button 1 pressed + add_event_key(0x37, 0); + break; + case 't': // button 1 depressed + add_event_key(0x37, 1); + break; + case 'h': // button 2 pressed + add_event_key(0x3a, 0); + break; + case 'r': // button 2 depressed + add_event_key(0x3a, 1); + break; + case 'g': //à faire sur un keydepressed + // display keyboard + printf("*** forcing on-screeen keyboard"); + [self OnScreenKeyboard:TRUE]; + break; + case 'v': //à faire sur un keydepressed + // toggle la menu bar + [self setMenuBarVisibility:!bMenuBarVisibility]; + break; + default: + break; + } + + } + return NO; // + + } + + if (!*s) + s = "delete"; + else + if (!strcmp(s,"\n")) + s = "return"; + + + + int c = findCode(s); + debug_printf("text: %s code:%d\n",s,c); + if (c>=0) + { + if (c & shiftKey) + add_event_modifier(shiftKey); + add_event_key(c&0xFF,0); + NSNumber* ui = [[NSNumber alloc ]initWithInt:c]; + [NSTimer scheduledTimerWithTimeInterval:1.0/20.0 target:self selector:@selector(keyup:) userInfo:ui repeats:NO]; + } + + return NO; +} + + +- (BOOL) myTouchesBegan:(NSSet *)touches +{ + + UITouch* touch =[touches anyObject]; + CGPoint p = [touch locationInView:self.view]; + CGRect r = self.diskView.frame; + if (CGRectContainsPoint(r,p) && pMac->getSmartSwap() && !bLoading) + { + // [self swapButton:self]; + [self addDiskSelection]; + [self diskSelectionButton:self]; + + } + +#ifdef ACTIVEGS_CUSTOMKEYS + if (inputMode & INPUTMODE_CUSTOMKEYS) + touch_begin_custom_key(p); +#endif + + if (!padEnabled || !([self isInputVisible:INPUTMODE_PAD])) + return FALSE; + + // regarde si on touche le pad + CGRect ro = self.padCircleOutter.frame; + if (CGRectContainsPoint(ro,p) && !self.padTouch) + { + self.padTouch = touch; + posPad = [touch locationInView:self.view]; + self.padCircleInner.alpha = 1.0; + } + + // ca button + CGRect ca = self.caButtonView.frame; + if (CGRectContainsPoint(ca,p) && !self.caButtonTouch) + { + add_event_key(0x3A, 0); + + for(int i=0;i<20;i++) + add_event_delay(); + caButton = TRUE; + self.caButtonTouch = [touch retain];; + self.caButtonView.alpha = 1.0; +#ifdef GRAPHICAL_PAD + self.padButton2Down.hidden = FALSE; +#endif + + } + + // oa button + CGRect oa = self.oaButtonView.frame; + if (CGRectContainsPoint(oa,p) && !self.oaButtonTouch) + { + add_event_key(0x37, 0); + for(int i=0;i<20;i++) + add_event_delay(); + oaButton = TRUE; + self.oaButtonTouch = touch; + self.oaButtonView.alpha = 1.0; +#ifdef GRAPHICAL_PAD + self.padButton1Down.hidden = FALSE; +#endif + + } + + + + return self.padTouch || caButton || oaButton ; +} + +-(void)centerPad:(id)center +{ +#define CENTER_STEP 0.01 + + if (joyX == 0.0 && joyY == 0.0) return ; + if (joyX < 0) joyX+=CENTER_STEP; + if (joyX > 0) joyX-=CENTER_STEP; + if (joyY < 0) joyY+=CENTER_STEP; + if (joyY > 0) joyY-=CENTER_STEP; + if (abs(joyX)1.0) joyX=1.0; + if (joyY<-1.0) joyY=-1.0; + if (joyY>1.0) joyY=1.0; + posPad = newpos; + [self updatePadView]; + } + + return self.padTouch || caButton || oaButton ; + +} + +- (void)notifyPaddle:(id)sender +{ + if (x_lock_zoom == LOCKZOOM_ARCADE) + [self setInputMode:(INPUTMODE_ARCADE + INPUTMODE_PAD)]; + else + [self setInputMode:(INPUTMODE_PAD + INPUTMODE_MINIACCESS)]; +} + + +-(void)setInputMode:(int)_mode +{ + + debug_printf("setting inputMode to : %X (was:%X)\n",_mode,inputMode); + inputMode = _mode; + + if ([self isInputVisible:INPUTMODE_PAD]) + padEnabled = TRUE; + + + BOOL b = [self.textField isFirstResponder]; + if ([self isInputVisible:INPUTMODE_KBD] || isHardwareKeyboard() /*(inputMode & INPUTMODE_HARDWAREKBD)*/) + { + if (isHardwareKeyboard()) + debug_printf("*enabling HW keyboard\n"); + else + debug_printf("*enabling keyboard\n"); + + // A faire avant le becomeFirstResponder + + debug_printf("setInputAccessoryView:accessView"); + // IOS8 + [self.accessView removeFromSuperview]; + [self.textField setInputAccessoryView:self.accessView]; + + [self.textField becomeFirstResponder]; + } + else + { + if (b) + [self.textField resignFirstResponder]; + + debug_printf("setInputAccessoryView:nil"); + [self.textField setInputAccessoryView:nil]; + + debug_printf("addSubview:accessView"); + [self.interfaceView addSubview:self.accessView]; + + } + + + [[pManager getEmulatorView] updateView]; + +} + +-(void)showDebug:(BOOL)_visible +{ + + self.debugIndicator.hidden = !_visible; + self.swipeIndicator.hidden = !_visible; + self.zoomIndicator.hidden = !_visible; + self.padIndicator.hidden = !_visible; + self.mouseButtonIndicator.hidden = !_visible; + self.inputIndicator.hidden = !_visible; +} + + +-(void)setDebugIndicatorText:(const char*)_text +{ + NSString* str = [NSString stringWithUTF8String:_text]; + self.debugIndicator.text = str; +} + + +const int cycles[]= +{ + + INPUTMODE_PAD+INPUTMODE_MINIACCESS, + INPUTMODE_ACCESS, + INPUTMODE_KBD+INPUTMODE_ACCESS, + INPUTMODE_ACCESS+INPUTMODE_PAD +#ifdef ACTIVEGS_CUSTOMKEYS + ,INPUTMODE_CUSTOMKEYS +#endif +}; + + +- (void)swipeDown +{ + debug_printf("swipeDown"); + + + if ( !(inputMode & INPUTMODE_ARCADE) && [self isInputVisible:INPUTMODE_ALL] ) + { + [self hideInput]; + return ; + } + + if (!bMenuBarVisibility) + { + debug_printf("*displaying menubar\n"); + [self setMenuBarVisibility:TRUE]; + [self showDebug:FALSE]; + + } + else + { + if (option.getIntValue(OPTION_DEBUGMODE)) + [self showDebug:TRUE]; + } + + +} + +- (void)swipeUp +{ + + debug_printf("swipeUp"); + + // si la barre est cachée, fait la apparaitre + + if (bMenuBarVisibility) + { + debug_printf("*hidding menubar\n"); + [self setMenuBarVisibility:FALSE]; + return; + } + + // en mode arcade, on ne peut pas cycler dans les interfaces + + if (inputMode & (INPUTMODE_CUSTOMKEYS | INPUTMODE_ARCADE)) + return ; + + // si l'interface était cachée, fait la réapparaitre + + if (inputMode & INPUTMODE_HIDDEN) + { + [self setInputMode:inputMode &~INPUTMODE_HIDDEN]; + return ; + } + + // sinon, cycle dans les interfaces de saisies + [self cycleInput]; + +} + + +-(void)cycleInput +{ + + + const int nbcycle = sizeof(cycles)/sizeof(int); + int m = cycles[0] ; // default value + for(int i =0;i ACCESS_HEIGHT) + { + // Bug! + printf("resizing keyboard to compensate bug in UIKeyboardFrameEndUserInfoKey\n"); + + // + if (bForceOnScreenKeyboard) + { + // on-screen keyboard has been dismissed + printf("on-screen keyboard has been dismissed..."); + [self OnScreenKeyboard:FALSE]; + } + + [self updateViewForKeyboard:deltaY]; + } + else + { +// A ELIMINER QD ON POURRA DETECTER LES CLAVIERS HARDWARE AVEC LE SDK +#ifdef ACTIVEGS_NOHARDWAREKEYBOARDDETECTION + if (keyboardDelta.size.height) + { + if (option.getIntValue(OPTION_EXTERNALKBD)) + { + printf("*** reverting option ***"); + option.setIntValue(OPTION_EXTERNALKBD,0); + option.saveOptions(1); + x_refresh_panel(PANEL_RUNTIME); + [self setInputMode:inputMode]; // pour forcer un refresh! + x_alert("No external keyboard detected! Disabling option."); + } + } +#endif + } + + + +} + +- (void)updateViewForKeyboard:(int)_height +{ + + + BOOL isPortrait = abs([pManager getAngle])==90 ; + + keyboardDelta.origin.x = 0; + keyboardDelta.origin.y = 0; + keyboardDelta.size.width = 0; + keyboardDelta.size.height = _height; + if (isPortrait) + keyboardScale = 1; + else + { + float h = self.view.bounds.size.width ; + keyboardScale = (h - _height) / h ; + } + debug_printf("updateViewForKeyboard: h:%d s:%f",_height,keyboardScale); + [[pManager getEmulatorView] updateView]; + +} + +- (void) keyboardWillShow:(NSNotification*)aNotification +{ + debug_printf("keyboardWillShow\n"); + + CGFloat _keyboardHeight; + CGRect _keyboardEndFrame; + BOOL isPortrait = abs([pManager getAngle])==90 ; + + + NSDictionary *info = [aNotification userInfo]; + [[info valueForKey:UIKeyboardFrameEndUserInfoKey] getValue:&_keyboardEndFrame]; + + if (isPortrait) + _keyboardHeight = _keyboardEndFrame.size.height; + else + _keyboardHeight = _keyboardEndFrame.size.width; + + // enleve l'accessory + _keyboardHeight -= self.specialView.frame.size.height; + + + debug_printf("keyboardheight:%f\n", _keyboardHeight); + [self updateViewForKeyboard:_keyboardHeight]; + +} + +- (void)didReceiveMemoryWarning { + // Releases the view if it doesn't have a superview. + [super didReceiveMemoryWarning]; + + // Release any cached data, images, etc that aren't in use. +} + + +- (void)menuButton:(id)sender +{ + [pManager doStateChange:[pManager getBrowserView] type:kCATransitionPush sens:kCATransitionFromLeft]; + +} + + + +- (void)mountButton:(UIButton*)sender + { + int i = sender.tag; + int active = i / 100; + int disk = (i - active*100)/10; + int slot = (i - active*100)%10; + + pMac->swapDisk(slot,disk,active); + [self diskSelectionButton:self]; // pour fermer la fenetre + + + } + /* +- (void)swapButton:(id)sender +{ + NSString* str = nil; + int sw = pMac->getSmartSwap(); + if (!sw) + str = @"Nothing to swap"; + else + { + pMac->smartSwap(); + CSlotInfo& info =pMac->getLocalIMGInfo(sw/10,sw%10); + + MyString s; + s.Format("Disk %s inserted",info.shortname.c_str()); + str = [NSString stringWithUTF8String: s.c_str()]; + } + UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"ActiveGS" message:str delegate:self cancelButtonTitle:@"Done" otherButtonTitles:nil] autorelease]; + [alert show]; + +} + */ + + +- (void)setEmulatorTitle:(const char*)_name +{ + printf("setEmulatorTitle:%s",_name); + if (_name && *_name) + { + NSString* str = [NSString stringWithUTF8String: _name]; + [self.emulatorNavItem setTitle:str]; + } +} + +- (void)restoreButton:(id)sender +{ + //CEmulator* p = CEmulator::theEmulator; + option.setDefaultOptions(); + option.saveOptions(1); + [self refreshControls:nil]; +} + +-(void)enableKeyboard:(int)_enable +{ + if (_enable) + inputMode |= INPUTMODE_KBD; + else + inputMode &= ~INPUTMODE_KBD; + [self setInputMode:inputMode]; + +} + +-(int)isInputVisible:(int) _im +{ + if (inputMode & INPUTMODE_HIDDEN) + return 0; + return inputMode & _im; +} + +-(void)restoreInput +{ + [self setInputMode:inputMode & ~INPUTMODE_KBD]; +} + + +-(void)hideInput +{ + [self setInputMode:inputMode | INPUTMODE_HIDDEN]; +} + +- (void)optionsButton:(id)sender +{ + + // vire le clavier + /* + if ([self isInputVisible:INPUTMODE_KBD]) + [self hideInput]; + */ + // [self enableKeyboard:FALSE]; + [self restoreInput]; + + + [UIView beginAnimations:nil context:NULL]; + [UIView setAnimationDuration:0.3]; + float a = self.runtimeControls.alpha; + if (a==1.0) + a=0.0; + else + { + [self.uit flashScrollIndicators]; + a=1.0; + } + self.runtimeControls.alpha = a; + + self.runtimeControls.hidden = NO; + [UIView commitAnimations]; +} + +- (void)diskSelectionButton:(id)sender +{ + + + [self restoreInput]; + + [UIView beginAnimations:nil context:NULL]; + [UIView setAnimationDuration:0.3]; + float a = self.diskSelection.alpha; + if (a==1.0) + a=0.0; + else + { + // [self.uit flashScrollIndicators]; + a=1.0; + } + self.diskSelection.alpha = a; + + self.diskSelection.hidden = NO; + [UIView commitAnimations]; +} + + + + +- (void)dealloc +{ + + NSLog(@"---kbd dealloc"); + self.textField.delegate = nil; + self.textField = nil; + self.menuButton = nil; + self.optionButton = nil; + self.diskView = nil; + self.diskLoadingView = nil; + self.loaderLabel = nil; + self.debugIndicator = nil; + self.swipeIndicator = nil; + self.zoomIndicator = nil; + self.padIndicator = nil; + self.mouseButtonIndicator = nil; + self.inputIndicator = nil; + self.loader = nil; + self.padCircleOutter = nil; + self.padCircleInner = nil; + self.oaButtonView = nil; + self.caButtonView = nil; + self.emulatorNavItem = nil; + self.barView = nil; + self.hardwarekbdDetectionTimer = nil; + self.animateDiskTimer = nil; + + + [super dealloc]; + +} + + +@end + diff --git a/Common.iphone/MainWindow-iPad.xib b/Common.iphone/MainWindow-iPad.xib new file mode 100644 index 0000000..7a103b9 --- /dev/null +++ b/Common.iphone/MainWindow-iPad.xib @@ -0,0 +1,226 @@ + + + + 1056 + 10F569 + 823 + 1038.29 + 461.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 132 + + + YES + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + YES + + YES + + + YES + + + + YES + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + IBIPadFramework + + + + 292 + {768, 1024} + + 1 + MC4wMDUxMDIwNDA4MTYgMC4wMDUxMDIwNDA4MTYgMC4wMDUxMDIwNDA4MTYAA + + NO + NO + IBIPadFramework + YES + + + + + YES + + + delegate + + + + 4 + + + + window + + + + 15 + + + + + YES + + 0 + + + + + + -1 + + + File's Owner + + + 3 + + + activegs App Delegate + + + -2 + + + + + 12 + + + + + + + YES + + YES + -1.CustomClassName + -2.CustomClassName + 12.IBEditorWindowLastContentRect + 12.IBPluginDependency + 3.CustomClassName + 3.IBPluginDependency + + + YES + UIApplication + UIResponder + {{525, 346}, {320, 480}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + activegsAppDelegate + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 16 + + + + YES + + UIView + + IBProjectSource + ../Common.iphone/GTMUIView+SubtreeDescription.h + + + + activegsAppDelegate + NSObject + + window + UIWindow + + + window + + window + UIWindow + + + + IBProjectSource + ../Common.iphone/activegsAppDelegate.h + + + + activegsAppDelegate + NSObject + + IBUserSource + + + + + + YES + + NSObject + + IBFrameworkSource + QuartzCore.framework/Headers/CAAnimation.h + + + + NSObject + + IBFrameworkSource + QuartzCore.framework/Headers/CALayer.h + + + + NSObject + + IBFrameworkSource + QuartzCore.framework/Headers/CIImageProvider.h + + + + + 0 + IBIPadFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + ../activegs_iphone2/activegs.xcodeproj + 3 + 132 + + diff --git a/Common.iphone/MainWindow.xib b/Common.iphone/MainWindow.xib new file mode 100644 index 0000000..64c1587 --- /dev/null +++ b/Common.iphone/MainWindow.xib @@ -0,0 +1,418 @@ + + + + 1024 + 10F569 + 788 + 1038.29 + 461.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 117 + + + YES + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + YES + + YES + + + YES + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + IBCocoaTouchFramework + + + + 292 + {320, 480} + + + + 1 + MC4wMDUxMDIwNDA4MTYgMC4wMDUxMDIwNDA4MTYgMC4wMDUxMDIwNDA4MTYAA + + NO + NO + IBCocoaTouchFramework + + + IBCocoaTouchFramework + + + + + YES + + + delegate + + + + 4 + + + + window + + + + 15 + + + + + YES + + 0 + + + + + + -1 + + + File's Owner + + + 3 + + + activegs App Delegate + + + -2 + + + + + 12 + + + + + 16 + + + + + + + YES + + YES + -1.CustomClassName + -2.CustomClassName + 12.IBEditorWindowLastContentRect + 12.IBPluginDependency + 16.CustomClassName + 16.IBPluginDependency + 3.CustomClassName + 3.IBPluginDependency + + + YES + UIApplication + UIResponder + {{525, 346}, {320, 480}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + activegsAppDelegate + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + activegsAppDelegate + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 16 + + + + YES + + UIView + + IBProjectSource + ../Common.iphone/GTMUIView+SubtreeDescription.h + + + + activegsAppDelegate + NSObject + + window + UIWindow + + + window + + window + UIWindow + + + + IBProjectSource + ../Common.iphone/activegsAppDelegate.h + + + + activegsAppDelegate + NSObject + + IBUserSource + + + + + + YES + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + QuartzCore.framework/Headers/CAAnimation.h + + + + NSObject + + IBFrameworkSource + QuartzCore.framework/Headers/CALayer.h + + + + NSObject + + IBFrameworkSource + QuartzCore.framework/Headers/CIImageProvider.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIAccessibility.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UINibLoading.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIResponder.h + + + + UIApplication + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIApplication.h + + + + UIResponder + NSObject + + + + UISearchBar + UIView + + IBFrameworkSource + UIKit.framework/Headers/UISearchBar.h + + + + UISearchDisplayController + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UISearchDisplayController.h + + + + UIView + + IBFrameworkSource + UIKit.framework/Headers/UITextField.h + + + + UIView + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIView.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UINavigationController.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UIPopoverController.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UISplitViewController.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UITabBarController.h + + + + UIViewController + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIViewController.h + + + + UIWindow + UIView + + IBFrameworkSource + UIKit.framework/Headers/UIWindow.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + ../ActiveBestOfFTA/activebestoffta.xcodeproj + 3 + 117 + + diff --git a/Common.iphone/Tab2GS.png b/Common.iphone/Tab2GS.png new file mode 100644 index 0000000000000000000000000000000000000000..28bd3733165ebe511e1d1423b6e3c6e2f8520a6f GIT binary patch literal 4231 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 literal 0 HcmV?d00001 diff --git a/Common.iphone/Tab2GS@2x.png b/Common.iphone/Tab2GS@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7285f0e5541d26ca54ea246ba931ae02f899c8f3 GIT binary patch literal 6696 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 literal 0 HcmV?d00001 diff --git a/Common.iphone/Tab2_32.png b/Common.iphone/Tab2_32.png new file mode 100644 index 0000000000000000000000000000000000000000..570d9ecd2a34991669e60f795a46cc477538bef3 GIT binary patch literal 2894 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 literal 0 HcmV?d00001 diff --git a/Common.iphone/TabFTA.png b/Common.iphone/TabFTA.png new file mode 100644 index 0000000000000000000000000000000000000000..164dd78070f75252043ce0bb408942dad540c7b5 GIT binary patch literal 3484 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 N002ovPDHLkV1hc3y?+1z literal 0 HcmV?d00001 diff --git a/Common.iphone/Tab][.png b/Common.iphone/Tab][.png new file mode 100644 index 0000000000000000000000000000000000000000..800dc9b7628dab0e00bd152efa3378a4b0aad597 GIT binary patch literal 3911 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 literal 0 HcmV?d00001 diff --git a/Common.iphone/UICustomKey.h b/Common.iphone/UICustomKey.h new file mode 100644 index 0000000..8bc6531 --- /dev/null +++ b/Common.iphone/UICustomKey.h @@ -0,0 +1,79 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import + + + +enum enum_key_type +{ + KEYTYPE_KEYBOARD=66, + KEYTYPE_BUTTON + +}; + +enum custom_align +{ + LEFT_ALIGN = 0x100, + RIGHT_ALIGN =0x200, + SAME_LINE = 0x400, + SAME_COL = 0x800, + TOP_ALIGN = 0x1000, + BOTTOM_ALIGN = 0x2000, + BOTTOM_BORDER=0x4000, + LEFT_BORDER=0x8000, + RIGHT_BORDER =0x10000, + VERTICAL_CENTER = 0x20000, + LEFTCENTER_ALIGN = 0x40000, + MIDDLE_BOTTOM = 0x80000 + + +}; + +struct key_type +{ + enum enum_key_type type; + NSString* str; + int code; + + int status; + int halign; + int valign; + int mode; + int vfactor; + int hfactor; + UILabel* view; + UIColor* bgcolor_off; + UIColor* bgcolor_on; + UIColor* bgcolor_over; + key_type() + { + mode = 0; + bgcolor_on = [UIColor colorWithRed:0.5f green:0.5f blue:0.5f alpha:0.5f]; + bgcolor_off = [UIColor colorWithRed:0.5f green:0.5f blue:0.5f alpha:0.0f]; + bgcolor_over = [UIColor colorWithRed:0.8f green:0.8f blue:0.8f alpha:0.5f]; + vfactor=1; + hfactor=1; + }; +} ; + +#define MAX_CUSTOM_KEYS 32 +extern key_type custom_keys[MAX_CUSTOM_KEYS]; +extern void show_custom_keys(CGRect _rv, int _mode,int _centery); +//extern void hide_custom_keys(); +extern void fade_custom_keys(float _alpha); +extern void init_custom_keys(); + +extern void touch_begin_custom_key(CGPoint p,int nbtap); +extern void touch_end_custom_key(); +extern void toggle_custom_keys(int _mode, int _hide); + +extern float CUSTOM_KEY_WIDTH ; +extern float CUSTOM_KEY_HEIGHT ; + +@interface UICustomKey : UIView + +@end diff --git a/Common.iphone/UICustomKey.mm b/Common.iphone/UICustomKey.mm new file mode 100644 index 0000000..ca23d11 --- /dev/null +++ b/Common.iphone/UICustomKey.mm @@ -0,0 +1,370 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "activegsAppDelegate.h" +#include"../ActiveGS_Karateka/KaratekaKBDController.h" +#import "UICustomKey.h" + + + +@implementation UICustomKey + +- (id)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + // Initialization code + } + return self; +} + + +@end + +#define CUSTOM_KEY_WIDTH_DEFAULT 64.0f +#define CUSTOM_KEY_HEIGHT_DEFAULT 64.0f + +float CUSTOM_KEY_WIDTH ; +float CUSTOM_KEY_HEIGHT ; + +int nb_custom_keys = 0; +key_type custom_keys[MAX_CUSTOM_KEYS]; + + +void init_custom_keys() +{ + custom_keys[0].mode = INPUTMODE_LEFTRIGHTKEY; + custom_keys[0].str = @"←"; + custom_keys[0].code = 0x3B; + custom_keys[0].halign = LEFT_BORDER ; + // custom_keys[0].valign = MIDDLE_BOTTOM+ 3 ; + custom_keys[0].valign = SAME_LINE + 4 ; + custom_keys[0].hfactor = 1 ; + + + + custom_keys[1].mode = INPUTMODE_LEFTRIGHTKEY; + custom_keys[1].str = @"→"; + custom_keys[1].code = 0x3C; + custom_keys[1].halign = LEFT_ALIGN + 0; + custom_keys[1].valign = SAME_LINE + 0; + custom_keys[1].hfactor = 1 ; + + custom_keys[8].mode = INPUTMODE_LEFTRIGHTKEY; + custom_keys[8].str = @"SPC"; + custom_keys[8].code = 0x31; + custom_keys[8].halign = LEFT_BORDER /*LEFTCENTER_ALIGN*/ + 0; + custom_keys[8].valign = TOP_ALIGN + 0; + // custom_keys[8].valign = BOTTOM_ALIGN + 0; + custom_keys[8].hfactor = 2 ; + + + + custom_keys[2].mode = INPUTMODE_PUNCHKEY + INPUTMODE_PUNCHLEFTRIGHT; + custom_keys[2].str = @"W"; //@"Q"; + custom_keys[2].halign = RIGHT_ALIGN + RIGHT_BORDER; + custom_keys[2].valign = TOP_ALIGN + 3; + custom_keys[2].code = 0x0D; //0x0C; + + custom_keys[3].mode = INPUTMODE_PUNCHKEY + INPUTMODE_PUNCHLEFTRIGHT; + custom_keys[3].str = @"S"; //@"A"; + custom_keys[3].halign = RIGHT_ALIGN + RIGHT_BORDER; + custom_keys[3].valign = VERTICAL_CENTER; + custom_keys[3].code = 0x01; //0x00; + + custom_keys[4].mode = INPUTMODE_PUNCHKEY + INPUTMODE_PUNCHLEFTRIGHT; + custom_keys[4].str = @"X"; //@"Z"; + custom_keys[4].halign = RIGHT_ALIGN + RIGHT_BORDER; + custom_keys[4].valign = BOTTOM_ALIGN +3; + custom_keys[4].code = 0x07; //0x06; + + custom_keys[5].mode = INPUTMODE_PUNCHKEY ; + custom_keys[5].str = @"Q"; //@"W"; + custom_keys[5].code = 0x0C; //0x0D; + custom_keys[5].halign = RIGHT_ALIGN + 2; + custom_keys[5].valign = SAME_LINE + 2; + + + custom_keys[6].mode = INPUTMODE_PUNCHKEY ; + custom_keys[6].str = @"A"; //@"S"; + custom_keys[6].code = 0x00; //0x01; + custom_keys[6].halign = SAME_COL + 5; + custom_keys[6].valign = BOTTOM_ALIGN + 5; + + + custom_keys[7].mode = INPUTMODE_PUNCHKEY ; + custom_keys[7].str = @"Z"; //@"X"; + custom_keys[7].code = 0x06; //0x07; + custom_keys[7].halign = SAME_COL + 6; + custom_keys[7].valign = BOTTOM_ALIGN + 6; + + custom_keys[9].mode = INPUTMODE_SPACEKEY ; + custom_keys[9].str = @"SPC"; + custom_keys[9].code = 0x31; + custom_keys[9].halign = RIGHT_ALIGN + RIGHT_BORDER; + custom_keys[9].valign = VERTICAL_CENTER; + custom_keys[9].vfactor = 2; + custom_keys[9].hfactor = 2; + + custom_keys[10].mode = INPUTMODE_PUNCHLEFTRIGHT ; + custom_keys[10].str = @"W"; + custom_keys[10].code = 0x0D; + custom_keys[10].halign = LEFT_ALIGN + LEFT_BORDER; + custom_keys[10].valign = SAME_LINE + 2; + + + custom_keys[11].mode = INPUTMODE_PUNCHLEFTRIGHT ; + custom_keys[11].str = @"S"; + custom_keys[11].code = 0x01; + custom_keys[11].halign = LEFT_ALIGN + LEFT_BORDER; + custom_keys[11].valign = BOTTOM_ALIGN + 5; + + + custom_keys[12].mode = INPUTMODE_PUNCHLEFTRIGHT ; + custom_keys[12].str = @"X"; + custom_keys[12].code = 0x07; + custom_keys[12].halign = LEFT_ALIGN + LEFT_BORDER; + custom_keys[12].valign = BOTTOM_ALIGN + 6; + + nb_custom_keys = 13; + + float res = [pManager resolutionRatio]; + CUSTOM_KEY_HEIGHT = CUSTOM_KEY_HEIGHT_DEFAULT*res; + CUSTOM_KEY_WIDTH = CUSTOM_KEY_WIDTH_DEFAULT*res; + + + for (int i=0;ix:%f, y:%f",i,refx,refy); + [v setFrame:r]; + } + + done = 0; + } + } + while (!done); + +} diff --git a/Common.iphone/activegsAppDelegate.h b/Common.iphone/activegsAppDelegate.h new file mode 100644 index 0000000..99a13bd --- /dev/null +++ b/Common.iphone/activegsAppDelegate.h @@ -0,0 +1,181 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + +#import +#import +#include "../Common.osx/CEmulatorCtrlMac.h" + +#define IPHONETHUMB "thumb" + +#ifdef USE_CAPPTAIN +#import "../Libraries/CapptainSDK/Headers/CapptainAgent.h" +#import "../Libraries/CapptainSDK/Headers/CapptainViewController.h" + #define UIVIEWCONTROLLERROOT CapptainViewController +#else + #define UIVIEWCONTROLLERROOT UIViewController +#endif + +@interface ActiveGSBaseViewController : UIViewController +{ + +} + +//- (void) update; +@end + + +//#import "activegsList.h" +#import "activegsEmulatorController.h" + + +//#import "activegsViewController.h" +#import "infoViewController.h" +#import "detailViewController.h" + +#ifdef USE_GOOGLEANALYTICS +#import "../Libraries/GoogleAnalytics/GAI.h" +#endif + + +#import "activeGSViewController.h" +#define ACTIVEGS_LAUNCHVIEWCONTROLLER activegsViewController + +#ifdef BESTOFFTA +#define ACTIVEGS_TITLE "ActiveGS - Best Of FTA" +#define ACTIVEGS_CAPPTAINAPP "act384142" +#define ACTIVEGS_CAPPTAINKEY "376e71d41db2422c88e1486a8a31e25b" +#define ACTIVEGS_BACKGROUNDIMAGE "Default" +#define ACTIVEGS_FIRSTTABLIST "list" +#define ACTIVEGS_FIRSTTABTITLE "Best Of FTA" +#define ACTIVEGS_FIRSTTABTRACKER "BestOfFta" +#define ACTIVEGS_FIRSTTABICON "BestOfFta" +#define ACTIVEGS_SINGLETAB // Une seule liste sera affichée +#define ACTIVEGS_IMAGEREQUIRED // On ne peut pas lancer l'émulateur sans image +#define ACTIVEGS_NOAPPLEBRANDING // Eliminer les logos Apple 2 & Apple 2GS +#define ACTIVEGS_NOHARDWAREKEYBOARDETECTION // Pour passer la soumission Appstore +#define ACTIVEGS_NOTIFICATION +#define HANDLE_URL + +#elif ACTIVEGSKARATEKA +#error unsupported + +#elif BESTOF +#define ACTIVEGS_TITLE "ActiveGS - BestOf" +#define ACTIVEGS_CAPPTAINAPP "act037442" +#define ACTIVEGS_CAPPTAINKEY "881708d1abb44dbb97fcb0620b3f4ef0" +#define ACTIVEGS_BACKGROUNDIMAGE "karatekalaunch" +#define ACTIVEGS_FIRSTTABLIST "bestof" +#define ACTIVEGS_FIRSTTABTITLE "Jordan's" +#define ACTIVEGS_FIRSTTABICON "Tab2GS" +#define ACTIVEGS_FIRSTTABTRACKER "JM" + +#else +// Default ACTIVEGS +#define ACTIVEGS_TITLE "ActiveGS" +#define ACTIVEGS_CAPTAINAPP "act651309" +#define ACTIVEGS_CAPTAINKEY "26ae7a388bf74c8c993d78bebb63fc41" +#undef ACTIVEGS_BACKGROUNDIMAGE +#define ACTIVEGS_ENABLE_DOCUMENT +#define ACTIVEGS_NOTIFICATION +//#define ACTIVEGS_MANUAL_ROM +#define ACTIVEGS_SAVELASTTAB +#define ACTIVEGS_FIRSTTABLIST "list" +#define ACTIVEGS_FIRSTTABTITLE "Best Of FTA" +#define ACTIVEGS_FIRSTTABTRACKER "BestOfFta" +#define ACTIVEGS_FIRSTTABICON "TabFTA" +#define HANDLE_URL +#define ACTIVEGS_NOHARDWAREKEYBOARDETECTION // Pour passer la soumission Appstore + +#endif + + +#define BARVIEW_HEIGHT 44 + +//extern UIView* backgroundView; +//extern UIImageView* backgroundImageView; + +extern CEmulatorMac* pMac; +extern CEmulatorConfig config; + +enum machineSpecsEnum +{ + SPEC_DEFAULT=0, + FPS_60HZ = 1, + AUDIO_44KHZ = 2 +}; + +extern enum machineSpecsEnum machineSpecs; + +@interface activegsAppDelegate : NSObject { + UIWindow *_window; + UIWindow *_secondaryWindow; + + UILabel* _notificationView; + UIViewController* _primaryViewController ; + UIViewController* _secondaryViewController ; + UIView* _backgroundView; + UIImageView* _backgroundImageView ; + + + //controllers + activegsEmulatorController* _emulatorController; + ACTIVEGS_LAUNCHVIEWCONTROLLER* _viewController; + infoViewController* _infoController; + detailViewController* _detailController ; + float _currentRawReading; + float _dpiRatio ; + float _resolutionRatio; + NSTimer* _notificationTimer; + UIScreen* _secondaryScreen; + UIScreen* _primaryScreen; + UIDeviceOrientation curOrientation; +@public + MyString firstTabXML; +#ifdef USE_GOOGLEANALYTICS + id GAITrackerActiveGS; +#endif + +} + + +- (void) screenDidConnect:(NSNotification *)notification; +-(void) initSecondaryScreen:(UIScreen*) _screen; +-(bool) hasSecondary; +-(void)setSecondaryInputMode; + + +- (void) doStateChange:(UIViewController*)_viewController type:(NSString*)_type sens:(NSString*)_sens; +-(void)launchDiskImage:(ActiveGSElement*)_element pathname:(const char*)_pathname trackername:(const char*)_trackername; +- (void) didRotate:(NSNotification *)notification; +-(void)firstLaunch:(NSTimer*)timer; +-(void)setNotificationText:(NSString*) _text; +-(void)updateNotificationView:(CGRect) newRect; +- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation; +@property(nonatomic,retain,getter=getEmulatorView) activegsEmulatorController* emulatorController; +@property(nonatomic,retain,getter=getBrowserView) ACTIVEGS_LAUNCHVIEWCONTROLLER* viewController; +@property(nonatomic,retain,getter=getInfoView) infoViewController* infoController; +@property(nonatomic,retain,getter=getDetailView) detailViewController* detailController; +@property(nonatomic,retain) UIViewController* primaryViewController; +@property(nonatomic,retain) UIViewController* secondaryViewController; +@property(nonatomic,retain) UIView* backgroundView; +@property(nonatomic,retain) UIImageView* backgroundImageView ; +@property(nonatomic,retain) UIScreen* secondaryScreen ; +@property(nonatomic,retain) UIScreen* primaryScreen ; + +@property(nonatomic,retain) NSTimer* notificationTimer; +@property(nonatomic,retain) UILabel* notificationView; +@property(assign,getter=getAngle) float currentRawReading; +@property (nonatomic, retain)/* IBOutlet*/ UIWindow *window; +@property (nonatomic, retain) UIWindow *secondaryWindow; +@property(assign) float dpiRatio; +@property(assign) float resolutionRatio; + +@end + + +extern activegsAppDelegate* pManager; diff --git a/Common.iphone/activegsAppDelegate.mm b/Common.iphone/activegsAppDelegate.mm new file mode 100644 index 0000000..51e5ec9 --- /dev/null +++ b/Common.iphone/activegsAppDelegate.mm @@ -0,0 +1,902 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import "activegsAppDelegate.h" +#include "../Common/svnversion.h" +#include "../Kegs/Src/adb.h" +#include "../Kegs/Src/sim65816.h" +#include "../Kegs/Src/driver.h" +#include "../Common/ki.h" +#import +#include "asynccommand.h" +#import + +// Application Singleton +activegsAppDelegate* pManager = nil; + +//int runningOnIOS_3_2 = 0; +enum machineSpecsEnum machineSpecs = SPEC_DEFAULT; + +CEmulatorMac* pMac = NULL; +CEmulatorConfig config; + + +#ifdef _DEBUG +// #define TEST_HANDLE_URL +#endif + +#define ENABLE_AIRPLAY + +MyString resourcesPath; + +int padAlreadyDisplayedOnce = 0; + + +// mets à jour le framerate +extern char estimatedSpeed[256]; +extern int getFrameRate(int _id); +void x_update_framerate() +{ + char str[256]; + sprintf(str,"req:%d fps:%d speed:%s",getFrameRate(1),getFrameRate(0),estimatedSpeed); + [[pManager getEmulatorView].kbdc setDebugIndicatorText:str]; +} + + + +void activegs_apply_default_options(void* _config) +{ + namevalue* options = ((COption*)_config)->options; + + if (machineSpecs & FPS_60HZ) + options[OPTION_FRAMERATE].intvalue = 60; + else + options[OPTION_FRAMERATE].intvalue = 20; + + + if (machineSpecs & AUDIO_44KHZ) + options[OPTION_AUDIORATE].intvalue = 44100; + else + options[OPTION_AUDIORATE].intvalue = 22050; + +} + + +void x_notify_eject() +{ + NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; + [[pManager getEmulatorView].kbdc performSelectorOnMainThread:@selector(animateDiskEjection:) withObject:nil waitUntilDone:NO]; + [pool release]; + +} + +void x_set_video_fx(videofxenum _vfx) +{ + [pManager getEmulatorView].zv.crt.hidden = (_vfx==VIDEOFX_CRT?0:1); +} + + +void x_notify_paddle(int _on) +{ + + // only once per view + if (padAlreadyDisplayedOnce) + return; + + printf("x_notify_paddle"); + padAlreadyDisplayedOnce = 1; + + NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; + [[pManager getEmulatorView].kbdc performSelectorOnMainThread:@selector(notifyPaddle:) withObject:nil waitUntilDone:NO]; + [pool release]; + +} + + +void x_notify_download_failure(const char*_url) +{ + printf("download failed : %s\n",_url); + x_display_alert(0,"Downloading Failed" ,"Check your Internet Connection!"); +} + +void x_loadinginprogress(int _on,int _s,int _d) +{ + NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; + + + _d --; + int param = (_s==5 ? _d : _d +2 ); + if (_on) param |= 0x80; + + NSNumber* b = [NSNumber numberWithInt:param] ; + [[pManager getEmulatorView].kbdc performSelectorOnMainThread:@selector(setLoading:) withObject:b waitUntilDone:NO]; + [pool release]; +} + +void x_refresh_panel(int _panel) +{ + if (!_panel & PANEL_RUNTIME) return ; + NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; + [[pManager getEmulatorView].kbdc performSelectorOnMainThread:@selector(refreshControls:) withObject:nil waitUntilDone:NO]; + [pool release]; +} + +void x_downloadinginprogress(int _percent) +{ + NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; + + NSNumber* b = [NSNumber numberWithInt:_percent]; + [[pManager getEmulatorView].kbdc performSelectorOnMainThread:@selector(setDownLoading:) withObject:b waitUntilDone:NO]; + [pool release]; +} + +int alertAbort; +MyString alertTitle; +MyString alertMessage; + + + + +void x_init_persistent_path(MyString& hp) +{ + NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; + + NSArray *paths= NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); + NSString *dir = [paths objectAtIndex:0]; + const char *bar = [dir UTF8String]; + CFStringRef sd = __CFStringMakeConstantString(bar); + hp= CFStringGetCStringPtr(sd,CFStringGetSystemEncoding()); + + [pool release]; +} + + +@implementation ActiveGSBaseViewController +@end + + +@implementation activegsAppDelegate + +@synthesize emulatorController = _emulatorController; +@synthesize viewController = _viewController; +@synthesize infoController = _infoController; +@synthesize detailController = _detailController; +@synthesize currentRawReading = _currentRawReading; +@synthesize window = _window; +@synthesize secondaryWindow = _secondaryWindow; +@synthesize dpiRatio = _dpiRatio; +@synthesize resolutionRatio = _resolutionRatio; +@synthesize notificationTimer = _notificationTimer; +@synthesize notificationView = _notificationView; +@synthesize primaryViewController = _primaryViewController; +@synthesize secondaryViewController = _secondaryViewController; +@synthesize primaryScreen = _primaryScreen; +@synthesize secondaryScreen = _secondaryScreen; +@synthesize backgroundView = _backgroundView; +@synthesize backgroundImageView = _backgroundImageView; + + +- (void)displayAlert:(id)sender { + + NSString* strMsg = [NSString stringWithUTF8String:alertMessage.c_str()]; + NSString* strTitle = [NSString stringWithUTF8String:alertTitle.c_str()]; + + UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:strTitle message:strMsg delegate:self cancelButtonTitle:@"Done" otherButtonTitles:nil] autorelease]; + [alert show]; +} + +- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex +{ + if (!alertAbort) + return ; + + // quite l'émulateur & revient au menu principal + if (pMac) + { + delete pMac; + pMac = NULL; + } + [self doStateChange:[self getBrowserView] type:kCATransitionPush sens:kCATransitionFromRight]; +} + + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + CDownload::initPersistentPath(); + + MyString dir ; + dir = CDownload::getPersistentPath(); + dir += ACTIVEGS_DIRECTORY_SEPARATOR; + dir += IPHONETHUMB; + CDownload::createDirectory(dir.c_str()); + + + NSString* resource = [[NSBundle mainBundle] pathForResource:@ACTIVEGS_FIRSTTABLIST ofType:@"activegsxml"] ; + self->firstTabXML = [resource UTF8String]; + +#define THEVER "/"ACTIVEGS_TITLE "_" TOSTRING(ACTIVEGSMAJOR) "." TOSTRING(ACTIVEGSMINOR) "." TOSTRING(ACTIVEGSBUILD) + + NSString* ver = [NSString stringWithUTF8String:THEVER]; + NSLog(@"%@",ver); + NSString* resPath = [[NSBundle mainBundle] resourcePath]; + resourcesPath =[resPath UTF8String]; + + +#ifdef USE_GOOGLEANALYTICS +// static const NSInteger kGANDispatchPeriodSec = 10; + GAITrackerActiveGS = [[GAI sharedInstance ]trackerWithTrackingId:@"UA-89449-3"] ; + [GAITrackerActiveGS sendView:ver]; +#endif + + +#ifdef USE_CAPPTAIN + [CapptainAgent registerApp:@ACTIVEGS_CAPTAINAPP identifiedBy:@ACTIVEGS_CAPTAINKEY]; +#endif + +#ifdef ACTIVEGS_MANUAL_ROM + // setup the rom path (in the main thread) + { + extern void initRomPath(); + initRomPath(); + } +#endif + + // Modify global variables to tweak the emulator on iphone + g_adb.g_warp_pointer = WARP_POINTER; + config.bootslot=7; + + CGRect physicalRect = [[UIScreen mainScreen] bounds]; + self.window = [[UIWindow alloc] initWithFrame:physicalRect]; + + [[UIApplication sharedApplication] setStatusBarHidden:TRUE]; + + CGFloat screenScale; + + NSString* systemVer = [[UIDevice currentDevice] systemVersion]; + NSLog(@"iOS version : %@",systemVer); + printf("Min SDK Version : " TOSTRING(__IPHONE_OS_VERSION_MIN_REQUIRED)); + printf("Max SDK Version : " TOSTRING(__IPHONE_OS_VERSION_MAX_ALLOWED)); + printf("%f x %f",physicalRect.size.width,physicalRect.size.height); + + struct utsname systemInfo; + uname(&systemInfo); + + NSString* platformVer = [NSString stringWithCString:systemInfo.machine + encoding:NSUTF8StringEncoding]; + NSLog(@"iOS platform : %@",platformVer); + + screenScale = [[UIScreen mainScreen] scale]; + self.dpiRatio = screenScale; + + + if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) + self.resolutionRatio = 1.6; // pour que la liste prenne toute la hauteur de l'ipad + else + self.resolutionRatio = 1.0; + + machineSpecs = SPEC_DEFAULT; + + if (self.resolutionRatio != 1.0 || screenScale != 1.0f) + { + printf("fps set to 60hz"); + machineSpecs = (machineSpecsEnum)(machineSpecs | FPS_60HZ); + } + if ( [platformVer compare:@"iPhone5"]==NSOrderedDescending + || [platformVer compare:@"iPad3"]==NSOrderedDescending ) + { + printf("audio set to 44 khz"); + machineSpecs = (machineSpecsEnum)(machineSpecs | AUDIO_44KHZ); + } + + self.currentRawReading = -90; // default mode = portrait + pManager = self; + + + extern void activegs_driver(); + g_driver.init(activegs_driver); + g_driver.x_apply_default_options = activegs_apply_default_options; + option.initOptions(); + + self.emulatorController = [[activegsEmulatorController alloc] init ] ; // =retain + self.detailController = [[detailViewController alloc] init] ; // =retain + + + + NSString* infoXB = @"infoViewController"; + + if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) + infoXB = [infoXB stringByAppendingString:@"-ipad"]; + + NSLog(@"Trying to load %@",infoXB); + self.infoController = [[infoViewController alloc] initWithNibName:infoXB bundle:nil ]; // =retain + + self.viewController = [[ACTIVEGS_LAUNCHVIEWCONTROLLER alloc] init ]; // =retain + + + + [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(didRotate:) + name:@"UIDeviceOrientationDidChangeNotification" object:nil]; + + // ajoute la détection de l" + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(screenDidConnect:) + name:@"UIScreenDidConnectNotification" object:nil]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(screenDidDisconnect:) + name:@"UIScreenDidDisconnectNotification" object:nil]; + + + +#ifdef ACTIVEGS_BACKGROUNDIMAGE + NSString* imgPath = @ACTIVEGS_BACKGROUNDIMAGE; + if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) + imgPath = [imgPath stringByAppendingString:@"-ipad"]; + + NSString *backgroundPath = [[NSBundle mainBundle] pathForResource:imgPath ofType:@"png"]; + UIImage* background = [UIImage imageWithContentsOfFile: backgroundPath] ; + self.backgroundImageView = [[UIImageView alloc ]initWithImage:background]; + CGRect r = [UIScreen mainScreen].applicationFrame; + + self.backgroundView = [[UIView alloc ] initWithFrame:r]; + self.backgroundView.backgroundColor = [UIColor whiteColor]; + [self.backgroundView addSubview:self.backgroundImageView]; + [self.window addSubview:self.backgroundView]; + ; +#endif + + + self.notificationView = [[[UILabel alloc] initWithFrame:CGRectMake(8,48,200,32)] autorelease]; + + + self.notificationView.alpha=0.0; + self.notificationView.textColor =[UIColor blackColor]; + self.notificationView.backgroundColor = [UIColor grayColor]; + self.notificationView.layer.borderColor = [[UIColor whiteColor] CGColor]; + self.notificationView.layer.borderWidth = 1; + self.notificationView.layer.cornerRadius = 5; + self.notificationView.font = [UIFont systemFontOfSize:16]; + self.notificationView.textAlignment = UITextAlignmentCenter; + + [[pManager getBrowserView] updateView ]; + + [self.window makeKeyAndVisible]; + +#ifdef HANDLE_URL + +# ifdef TEST_HANDLE_URL + [self application:nil openURL:nil sourceApplication:nil annotation:nil]; + return YES; +# else + NSURL* url = (NSURL *)[launchOptions valueForKey:UIApplicationLaunchOptionsURLKey]; + if (url) + { + printf("will launch url %@",url); + return YES; + } +# endif +#endif + + +#ifdef ACTIVEGS_BACKGROUNDIMAGE + + //pour laisser le temps à ma view "splashscreen" de s'afficher + [self performSelectorOnMainThread:@selector(firstLaunch:) withObject:nil waitUntilDone:NO]; +#else + + [self firstLaunch:nil]; +#endif + + // ready to accept option + return NO; + + +} + +-(void)firstLaunch:(NSTimer*)timer +{ + [self doStateChange:[self getBrowserView] type:kCATransitionFade sens:kCATransitionFromRight]; + + self.primaryScreen = [UIScreen mainScreen]; + self.secondaryScreen =[UIScreen mainScreen]; + + NSUInteger nbscreen =[[UIScreen screens] count]; + printf("nbscreen:%d\n",nbscreen); + if (nbscreen>1) + { + [self initSecondaryScreen:[[UIScreen screens]objectAtIndex:1]]; + + } +} + +-(void)launchDiskImage:(ActiveGSElement*)_element pathname:(const char*)_pathname trackername:(const char*)_trackername; +{ + + // détruit l'émulateur pour qu'il redémarre + if (pMac) + { + pMac->terminateEmulator(); + delete pMac ; + pMac = NULL; + } + + + config.resetConfig(); // remets les valeur par défault + + + // config.xmlconfig = pt.c_str(); + getdir(_pathname,config.baseURL); + config.pXML = _element->pXML; + config.visibleName = _element->name.c_str(); + + //is2GS = _element->is2GS; + + NSString* ntr = [NSString stringWithUTF8String:_trackername]; + NSString* nid = [NSString stringWithUTF8String:_element->theid.c_str()]; + + // statistique sur les images + NSString* track = [NSString stringWithFormat:@"/%@/%@",ntr,nid]; + NSLog(@"Launching : %@",track); +#ifdef USE_CAPPTAIN + [[pManager getEmulatorView] setTrackerName:track]; +#endif + + +#ifdef USE_GOOGLEANALYTICS + [pManager->GAITrackerActiveGS sendView:track]; +#endif + // affichera le pad si une application le demande + padAlreadyDisplayedOnce=0; + + + // redémarre l'émulateur + [pManager doStateChange:[pManager getEmulatorView] type:kCATransitionPush sens:kCATransitionFromRight]; +} + + + + +- (void) doStateChange:(ACTIVEGS_LAUNCHVIEWCONTROLLER*)_newViewController type:(NSString*)_type sens:(NSString*)_sens +{ + debug_printf("changing view\n"); + + if ([self.window rootViewController ] == _newViewController) + { + printf("same root"); + [_newViewController viewWillAppear:FALSE]; + return ; + } + + + // set up an animation for the transition between the views on 1 screen configuration + if (1)// [self hasSecondary]==false || _newViewController != (UIViewController*)[pManager getEmulatorView]) + { + + CATransition *animation = [CATransition animation]; + [animation setDuration:0.3]; + [animation setType:_type /*kCATransitionPush*/]; + + + if (self.primaryViewController) + [self.primaryViewController.view removeFromSuperview]; + else + { + if (self.backgroundView) + [self.backgroundView removeFromSuperview]; + } + + [self.notificationView removeFromSuperview]; + [_newViewController.view addSubview:self.notificationView]; + + [self.window setRootViewController:_newViewController]; + + // required for IOS4.3 + [self.window makeKeyAndVisible]; + + + self.primaryViewController = _newViewController; + + + debug_printf("finalizing view\n"); + if (self.primaryViewController == (UIViewController*)[pManager getEmulatorView]) + { + } + else + { + // enleve toute l'interface + [[pManager getEmulatorView].kbdc hideInput]; + } + + // Réajuste le sens de l'animation en fonction de l'orientation du mobile + //UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; + switch(curOrientation) + { + case UIDeviceOrientationPortrait: + break; + case UIDeviceOrientationPortraitUpsideDown: + if (_sens == kCATransitionFromRight) + _sens = kCATransitionFromLeft; + else + _sens = kCATransitionFromRight; + break; + case UIDeviceOrientationLandscapeLeft: + if (_sens == kCATransitionFromRight) + _sens = kCATransitionFromTop; + else + _sens = kCATransitionFromBottom; + break; + break; + case UIDeviceOrientationLandscapeRight: + if (_sens != kCATransitionFromRight) + _sens = kCATransitionFromTop; + else + _sens = kCATransitionFromBottom; + break; + default: + break; + } + + [animation setSubtype:_sens]; + [[self.window layer] addAnimation:animation forKey:@"SwitchToView1"]; + + } + /* + else + { + // setting up the secondary screen + if (self.secondaryViewController) + [self.secondaryViewController.view removeFromSuperview]; + self.secondaryViewController = _newViewController; + [self.secondaryWindow addSubview:_newViewController.view]; + } + */ + + + printf("manual rotate"); + [self didRotate:nil]; + +} + +-(void)updateNotificationView:(CGRect) newRect +{ +#define NOTIFICATION_WIDTH 240.0f +#define NOTIFICATION_HEIGHT 32.0f + + CGRect r ; + + + r = CGRectMake( + (newRect.size.width-NOTIFICATION_WIDTH)/2, + (newRect.size.height-NOTIFICATION_HEIGHT)/2, + NOTIFICATION_WIDTH, + NOTIFICATION_HEIGHT + ); + + [self.notificationView setFrame:r]; + +} + +-(void)setNotificationText:(NSString*) _text +{ + + NSLog(@"### %@",_text); +#ifdef ACTIVEGS_NOTIFICATION + + [self.notificationView.layer removeAllAnimations]; + [self.notificationTimer invalidate]; + + self.notificationView.text = _text; + + [UIView beginAnimations:nil context:NULL]; + [UIView setAnimationDuration:0.3]; + self.notificationView.alpha=1.0; + [UIView commitAnimations]; + + self.notificationTimer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(dismissNotification:) userInfo:nil repeats:NO]; +#endif + +} +-(void)dismissNotification:(id)_obj +{ + [UIView beginAnimations:nil context:NULL]; + [UIView setAnimationDuration:0.3]; + self.notificationView.alpha=0.0; + [UIView commitAnimations]; + self.notificationTimer= nil; + +} + + +- (void) screenDidConnect:(NSNotification *)notification +{ + NSLog(@"Screen did connect"); + UIScreen* screen = [notification object]; + [self initSecondaryScreen:screen]; + + // revient au menu principal si on ne l'était pas + /* + if (self.primaryViewController == [pManager getEmulatorView]) + { + + [self doStateChange:[self getBrowserView] type:kCATransitionPush sens:kCATransitionFromRight]; + } + */ + +} + +- (void) screenDidDisconnect:(NSNotification *)notification +{ + NSLog(@"screenDidDisconnect"); + /* + UIScreen* screen = [notification object]; + if (screen == self.secondaryScreen) + */ + activegsEmulatorController* a = [pManager getEmulatorView]; + if (a && a->attachedTo == ATTACH_SECONDARY) + { + NSLog(@"about to detach secondary"); + + self.secondaryScreen = self.primaryScreen; + self.secondaryWindow.hidden = YES; + [self.secondaryWindow release]; + self.secondaryWindow = nil; + + [a updateView]; + } + + [self setNotificationText:@"Airplay Disconnected"]; +} + +-(void) initSecondaryScreen:(UIScreen*) _screen +{ + [self setNotificationText:@"Airplay Detected"]; + +#ifdef ENABLE_AIRPLAY + self.secondaryScreen = _screen; + CGRect frame = _screen.bounds; + printf("SecondaryScreen size %d x %d",(int)frame.size.width,(int)frame.size.height); + + self.secondaryWindow = [[UIWindow alloc] initWithFrame:frame]; + [self.secondaryWindow setScreen:_screen]; + self.secondaryWindow.hidden = NO; +#endif + activegsEmulatorController* a = [pManager getEmulatorView]; + [a updateView]; + // [pManager setSecondaryInputMode]; + +} + +-(void)setSecondaryInputMode +{ + NSLog(@"setSecondaryInputMode"); + [[pManager getEmulatorView].kbdc setInputMode:INPUTMODE_ACCESS+INPUTMODE_KBD]; +} + + +-(bool) hasSecondary +{ + return self.secondaryWindow != nil; +} + + +- (void) didRotate:(NSNotification *)notification +{ + + + UIViewController *v = self.primaryViewController; + if (v==nil) + return ; + + + UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; + /* + BOOL valid = [v shouldAutorotateToInterfaceOrientation:orientation]; + if (valid==NO) + { + return ; + } + */ + + float oldRotate = self.currentRawReading; + + switch(orientation) + { + case UIDeviceOrientationPortrait: + NSLog(@"UIDeviceOrientationPortrait"); + self.currentRawReading = -90; + break; + case UIDeviceOrientationPortraitUpsideDown: + NSLog(@"UIDeviceOrientationPortraitUpsideDown"); + self.currentRawReading = 90; + break; + case UIDeviceOrientationLandscapeLeft: + NSLog(@"UIDeviceOrientationLandscapeLeft"); + self.currentRawReading = 180; + break; + case UIDeviceOrientationLandscapeRight: + NSLog(@"UIDeviceOrientationLandscapeRight"); + self.currentRawReading = 0; + break; + case UIDeviceOrientationUnknown: + NSLog(@"ignoring UIDeviceOrientationUnknown"); + return; + break; + default: + NSLog(@"ignoring faceUp or faceDown"); + // ignore face up or down + return; + break; + } + curOrientation = orientation; + NSLog(@"didRotate"); + + + if (self.primaryViewController != [pManager getEmulatorView]) + { + if (self.primaryViewController == [pManager getBrowserView]) + [[pManager getBrowserView] updateView ]; + if (self.primaryViewController == [pManager getInfoView]) + [[pManager getInfoView] updateView:orientation]; + return ; + } + + + // Gère manuellement la rotation + + // Mets les interfaces systèmes (UIAlert) dans le bon mode + + if (self.currentRawReading==0) + [[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationLandscapeLeft]; + else + if (self.currentRawReading==90) + [[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationPortraitUpsideDown]; + else + if (self.currentRawReading==180) + [[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationLandscapeRight]; + else + // if (currentRawReading==270) + [[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationPortrait]; + + + + // Recalcule la zone d'affichage de l'émulateur + + // enleve le clavier si une rotation a eu lieu + if (oldRotate != self.currentRawReading )//&& [self hasSecondary]==false) + { + + [[pManager getEmulatorView].kbdc restoreInput]; + + //[[pManager getEmulatorView].kbdc hideInput]; + // [[pManager getEmulatorView].kbdc enableKeyboard:FALSE]; + } + + [[pManager getEmulatorView] updateView ]; + + +} + +- (void)applicationDidEnterBackground:(UIApplication *)application +{ + printf("applicationDidEnterBackground"); + +} +- (void)applicationWillEnterForeground:(UIApplication *)application +{ + printf("applicationWillEnterForeground"); + +} + + + +- (void)dealloc { + + if (pMac) + { + pMac->terminateEmulator(); + delete pMac; + pMac = NULL; + } + + self.viewController = nil; + self.emulatorController = nil; + self.detailController = nil; + self.infoController = nil; + self.window = nil; + [super dealloc]; +} + + +- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation +//- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url +{ + +#ifdef HANDLE_URL + NSLog(@"Custom Url %@",url); + + + // NSString* resource = [[NSBundle mainBundle] pathForResource:@ACTIVEGS_FIRSTTABLIST ofType:@"activegsxml"] ; + // MyString source = [resource UTF8String]; + MyString appid; + MyString source; + +#ifdef TEST_HANDLE_URL + source = "http://www.freetoolsassociation.com/fta/undergroundlist.xml"; +#else + for (NSString *param in [[url query] componentsSeparatedByString:@"&"]) + { + NSArray *elts = [param componentsSeparatedByString:@"="]; + if([elts count] < 2) continue; + if ([[elts objectAtIndex:0] isEqualToString:@"id"]) + appid=[ [elts objectAtIndex:1] UTF8String]; + if ([[elts objectAtIndex:0] isEqualToString:@"source"]) + source =[[elts objectAtIndex:1] UTF8String]; + + } +#endif + +if (source.IsEmpty()==FALSE) +{ + self->firstTabXML= source; + activegsViewController* ags = [self getBrowserView]; + if (ags) + { + activegsList* l = [ags l0]; + if (l) + { + l->listPath = self->firstTabXML; + [l reloadData:TRUE]; + } + } + +} + ActiveGSElement* element = NULL; + ActiveGSList temp; + if (appid.IsEmpty()==FALSE) + { + + temp.loadFromFile(self->firstTabXML.c_str()); + for(int i =0;i +#import "../kegs/iOS/zoomEmulatorView.h" +#import "../kegs/iOS/emulatorView.h" +#import "KBDController.h" + +enum gestureModes +{ + + MODE_PAD = 1, + MODE_ZOOM = 2, + MODE_SWIPE= 4, + MODE_ALL = MODE_PAD+MODE_ZOOM+MODE_SWIPE, + MODE_MOUSEBUTTON=8, + MODE_EMULATOR=16, +}; + +@interface customView : UIView +{ + double possibleSwipeLeftTime ; + double possibleSwipeRightTime ; + double possibleSwipeUpTime ; + double possibleSwipeDownTime ; + + UISwipeGestureRecognizer* _grswipeup; + UISwipeGestureRecognizer* _grswipedown; + UISwipeGestureRecognizer* _grswipeleft; + UISwipeGestureRecognizer* _grswiperight; + NSTimer* enableTimer; + NSTimer* disableTimer; +} + +@property (retain,nonatomic) UISwipeGestureRecognizer* grswipeup; +@property (retain,nonatomic) UISwipeGestureRecognizer* grswipedown; +@property (retain,nonatomic) UISwipeGestureRecognizer* grswipeleft; +@property (retain,nonatomic) UISwipeGestureRecognizer* grswiperight; + +-(void)disableGestures:(int)_mode ; +-(void)enableGestures:(int)_mode ; +-(void)disableAllGestures; +-(void)reenableAllGestures ; +-(void)processGesturesOnTouchesEnded ; +-(void)scheduleDisableAllGestures; +-(void)scheduleEnableAllGestures; +-(void)invalidateTimers; + +@end + +enum attachMode +{ + ATTACH_NONE, + ATTACH_PRIMARY, + ATTACH_SECONDARY +}; + +@interface activegsEmulatorController : UIVIEWCONTROLLERROOT +{ + NSString* _trackerName; + customView* _contentView; + zoomEmulatorView* _zv; + KBDController* _kbdc ; +@public + int attachedTo; +} + +#ifdef USE_CAPPTAIN +-(NSString*)getCapptainActivityName; +#endif + +-(void) updateView; + +@property (assign) customView* contentView; +@property (assign) zoomEmulatorView* zv; +@property (assign) KBDController* kbdc ; +@property (nonatomic, retain) NSString* trackerName ; + + +@end + diff --git a/Common.iphone/activegsEmulatorController.mm b/Common.iphone/activegsEmulatorController.mm new file mode 100644 index 0000000..40cbead --- /dev/null +++ b/Common.iphone/activegsEmulatorController.mm @@ -0,0 +1,682 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import "activegsAppDelegate.h" +#include "../kegs/src/protos_macdriver.h" +#include "../kegs/src/sim65816.h" + +#define TIME_BEFORE_REENABLING_GESTURES 1.0 +#define TIME_BEFORE_DISABLING_GESTURES 0.5 +#define DELAY_TO_EXECUTE_SWIPE 0.4 +#define SWIPENBTOUCHES 1 + + +#undef debug_printf +#define debug_printf(X,...) + +int x_lock_zoom = 0; + +@implementation customView + +@synthesize grswipedown = _grswipedown; +@synthesize grswipeleft = _grswipeleft; +@synthesize grswiperight = _grswiperight; +@synthesize grswipeup = _grswipeup; + + + +- (UIView *)hitTest:(CGPoint)_point withEvent:(UIEvent *)event +{ + + KBDController *pKbd = [pManager getEmulatorView].kbdc; + UIView* curHit; + CGPoint p; + + if (!pKbd.runtimeControls.hidden && pKbd.runtimeControls.alpha!=0.0) + { + + p = [self convertPoint:_point toView:pKbd.runtimeControls]; + + curHit= [pKbd.runtimeControls hitTest:p withEvent:event]; + if ( [curHit isDescendantOfView:pKbd.runtimeControls]) + { + return curHit; + } + } + + + if (!pKbd.diskSelection.hidden && pKbd.diskSelection.alpha!=0.0) + { + + p = [self convertPoint:_point toView:pKbd.diskSelection]; + + curHit= [pKbd.diskSelection hitTest:p withEvent:event]; + if ( [curHit isDescendantOfView:pKbd.diskSelection]) + { + return curHit; + } + } + + + if (!pKbd.barView.hidden) + { + + p = [self convertPoint:_point toView:pKbd.barView]; + curHit= [pKbd.barView hitTest:p withEvent:event]; + + if ( [curHit isDescendantOfView:pKbd.barView]) + { + // debug_printf("intercepting event : barview\n"); + return curHit; + } + } + + if ([pKbd isInputVisible:(INPUTMODE_ACCESS+INPUTMODE_MINIACCESS)]) + { + + p = [self convertPoint:_point toView:pKbd.accessView]; + curHit= [pKbd.accessView hitTest:p withEvent:event]; + + // regarde si on tape dans la barview + if ( !curHit.hidden && [curHit isDescendantOfView:pKbd.accessView]) + { + + return curHit; + } + } + + + // renvoie les évenements à l'emulator + return [pManager getEmulatorView].zv; +} + +- (id)initWithFrame:(CGRect)frame +{ + if (self = [super initWithFrame:frame]) + { + + // Swipe down to hide keyboard + self.grswipeup = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeUp:)] autorelease]; + self.grswipeup.direction = UISwipeGestureRecognizerDirectionUp ; + self.grswipeup.cancelsTouchesInView = NO; + self.grswipeup.numberOfTouchesRequired = SWIPENBTOUCHES; + [self addGestureRecognizer:self.grswipeup]; + + + // Swipe up to display keyboard + self.grswipedown = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeDown:)] autorelease]; + self.grswipedown.direction = UISwipeGestureRecognizerDirectionDown; + self.grswipedown.cancelsTouchesInView = NO; + self.grswipedown.numberOfTouchesRequired = SWIPENBTOUCHES; + [self addGestureRecognizer:self.grswipedown]; + + // Swipe left to go back to browsing + self.grswipeleft = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeLeft:)] autorelease]; + self.grswipeleft.direction = UISwipeGestureRecognizerDirectionLeft; + self.grswipeleft.cancelsTouchesInView = NO; + self.grswipeleft.numberOfTouchesRequired = SWIPENBTOUCHES; + [self addGestureRecognizer:self.grswipeleft]; + + + // Swipe Right to go back to browsing + self.grswiperight = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRight:)] autorelease]; + self.grswiperight.direction = UISwipeGestureRecognizerDirectionRight; + self.grswiperight.cancelsTouchesInView = NO; + self.grswiperight.numberOfTouchesRequired = SWIPENBTOUCHES; + [self addGestureRecognizer:self.grswiperight]; + + + } + return self; +} + + + +-(void)invalidateTimers +{ + + + if ([enableTimer isValid]) + { + debug_printf("deactivating enable gesture timer"); + [enableTimer invalidate]; + enableTimer=nil; + } + + if ([disableTimer isValid]) + { + debug_printf("deactivating disable gesture timer"); + [disableTimer invalidate]; + disableTimer=nil; + } + +} + +-(void)scheduleDisableAllGestures +{ + + debug_printf("scheduleDisableAllGestures"); + + [self invalidateTimers]; + + disableTimer = [NSTimer scheduledTimerWithTimeInterval:TIME_BEFORE_DISABLING_GESTURES target:self selector:@selector(disableAllGestures) userInfo:nil repeats:NO]; + [[pManager getEmulatorView].kbdc setGestureIndicatorVisibility:MODE_ALL color:[UIColor blueColor]]; + +} + + +-(void)scheduleEnableAllGestures +{ + + debug_printf("scheduleEnableAllGestures"); + + + [self enableGestures:MODE_PAD]; + [self disableGestures:MODE_SWIPE+MODE_ZOOM]; + + enableTimer = [NSTimer scheduledTimerWithTimeInterval:TIME_BEFORE_REENABLING_GESTURES target:self selector:@selector(reenableAllGestures) userInfo:nil repeats:NO]; + [[pManager getEmulatorView].kbdc setGestureIndicatorVisibility:(MODE_SWIPE+MODE_ZOOM) color:[UIColor orangeColor]]; + +} + +-(void)disableAllGestures +{ + + debug_printf("disableAllGestures\n"); + [self disableGestures:MODE_ALL]; + +} + +-(void)disableGestures:(int)_mode +{ + + debug_printf("disableGestures: %d",_mode); + + [self invalidateTimers]; + + if (_mode & MODE_SWIPE) + { + + self.grswipeup.enabled = FALSE; + self.grswipedown.enabled = FALSE; + self.grswipeleft.enabled = FALSE; + self.grswiperight.enabled = FALSE; + } + if (_mode & MODE_PAD) + [[pManager getEmulatorView].kbdc enablePad:FALSE]; + + if (_mode & MODE_ZOOM) + [[pManager getEmulatorView].zv disableZoom]; + + if (_mode & MODE_EMULATOR) + [[pManager getEmulatorView].zv disableInput]; + + [[pManager getEmulatorView].kbdc setGestureIndicatorVisibility:_mode color:[UIColor redColor]]; + +} + + + +-(void)enableGestures:(int)_mode +{ + + debug_printf("enableGestures %d\n",_mode); + + if (_mode & MODE_SWIPE) + { + [self invalidateTimers]; + + self.grswipeup.enabled = TRUE; + self.grswipedown.enabled = TRUE; + self.grswipeleft.enabled = TRUE; + self.grswiperight.enabled = TRUE; + } + + if (_mode & MODE_ZOOM) + { + if (x_lock_zoom) + { + // [self disableGestures:MODE_ZOOM]; + [[pManager getEmulatorView].zv disableZoom]; + } + else + [[pManager getEmulatorView].zv enableZoom]; + } + + if (_mode & MODE_PAD) + [[pManager getEmulatorView].kbdc enablePad:TRUE]; + if (_mode & MODE_EMULATOR) + [[pManager getEmulatorView].zv enableInput]; + + [[pManager getEmulatorView].kbdc setGestureIndicatorVisibility:_mode color:[UIColor greenColor]]; + +} + +-(void)reenableAllGestures +{ + + debug_printf("reenableAllGestures"); + [self enableGestures:(MODE_ALL+MODE_EMULATOR)]; + +} + + +-(void)processGesturesOnTouchesEnded +{ +#if SWIPENBTOUCHES == 1 + debug_printf("processGesturesOnTouchesEnded"); + + // Execute les gestures en attente + double curtime = [[NSDate date] timeIntervalSince1970]; + + if (possibleSwipeLeftTime > curtime) + { + + [pManager doStateChange:[pManager getBrowserView] type:kCATransitionPush sens:kCATransitionFromRight]; + + return ; + } + + if (possibleSwipeRightTime > curtime) + { + if ([pManager getDetailView]->diskSelected) + [pManager doStateChange:[pManager getDetailView] type:kCATransitionPush sens:kCATransitionFromLeft]; + else + { + [pManager doStateChange:[pManager getBrowserView] type:kCATransitionPush sens:kCATransitionFromLeft]; + } + return ; + } + + if (possibleSwipeDownTime > curtime) + { + [[pManager getEmulatorView].kbdc swipeDown]; + // We remain on the currentView: immediatly turn on gestures + [self reenableAllGestures]; + return ; + } + + if (possibleSwipeUpTime > curtime) + { + + [[pManager getEmulatorView].kbdc swipeUp]; + // We remain on the currentView: immediatly turn on gestures + [self reenableAllGestures]; + return ; + } +#endif + // no gestures + [self scheduleEnableAllGestures]; + [self enableGestures:MODE_ZOOM]; // pour éviter l'interprétation en click! +} + +-(void)swipeLeft :(UISwipeGestureRecognizer*)_rec +{ + if (_rec.state == UIGestureRecognizerStateEnded) + { + +#if SWIPENBTOUCHES == 2 + [pManager doStateChange:[pManager getBrowserView] type:kCATransitionPush sens:kCATransitionFromRight]; + +#else + if ([_rec locationInView:self].y < 44 * [pManager resolutionRatio]) + { + possibleSwipeLeftTime = [[NSDate date] timeIntervalSince1970] + DELAY_TO_EXECUTE_SWIPE; + debug_printf("possibleSwipeLeftTime %f\n",possibleSwipeLeftTime); + } +#endif + } +} + +-(void)swipeRight :(UISwipeGestureRecognizer*)_rec +{ + if (_rec.state == UIGestureRecognizerStateEnded) + { +#if SWIPENBTOUCHES == 2 + if ([pManager getDetailView].diskSelected) + [pManager doStateChange:[pManager getDetailView] type:kCATransitionPush sens:kCATransitionFromLeft]; + else + [pManager doStateChange:[pManager getBrowserView] type:kCATransitionPush sens:kCATransitionFromLeft]; +#else + + if ([_rec locationInView:self].y < 44 * [pManager resolutionRatio]) + { + possibleSwipeRightTime = [[NSDate date] timeIntervalSince1970] + DELAY_TO_EXECUTE_SWIPE; + debug_printf("possibleSwipeRightTime %f\n",possibleSwipeRightTime); + } +#endif + } + +} + + +-(void)swipeDown : (UISwipeGestureRecognizer*)_rec +{ + debug_printf("swipeDown : %d",_rec.state); + + if (_rec.state == UIGestureRecognizerStateEnded) + { + +#if SWIPENBTOUCHES == 2 + [[pManager getEmulatorView].kbdc swipeDown]; +#else + possibleSwipeDownTime = [[NSDate date] timeIntervalSince1970] + DELAY_TO_EXECUTE_SWIPE; + debug_printf("possibleSwipeDownTime %f\n",possibleSwipeDownTime); +#endif + } + +} + +-(void)swipeUp : (UISwipeGestureRecognizer*)_rec +{ + debug_printf("swipeUp : %d",_rec.state); + + if (_rec.state == UIGestureRecognizerStateEnded) + { +#if SWIPENBTOUCHES == 2 + [[pManager getEmulatorView].kbdc swipeUp]; +#else + possibleSwipeUpTime = [[NSDate date] timeIntervalSince1970] + DELAY_TO_EXECUTE_SWIPE; + debug_printf("possibleSwipeUpTime %f\n",possibleSwipeUpTime); +#endif + } + +} + +- (void)dealloc +{ + + self.grswipedown = nil; + self.grswipeup = nil; + self.grswipeleft = nil; + self.grswiperight = nil; + + [super dealloc]; +} + +@end + +@implementation activegsEmulatorController + +@synthesize kbdc = _kbdc; +@synthesize zv = _zv; +@synthesize contentView = _contentView; +@synthesize trackerName = _trackerName; + + +#ifdef USE_CAPPTAIN +-(NSString*)getCapptainActivityName +{ + NSLog(@"loggin capptain:%@",_trackerName); + return _trackerName; +} +#endif + +- (void)createZoomEmulatorView +{ + + CGRect rv = CGRectMake(0,0,100.0,100.0); + self.zv = [[[zoomEmulatorView alloc] initWithFrame:rv ratio:1.0] retain]; + +} + +- (void)loadView +{ + + attachedTo = ATTACH_NONE; + + CGRect apprect = [[UIScreen mainScreen] applicationFrame]; + printf("mainScreen apprect %d x %d\n",(int)apprect.size.width,(int)apprect.size.height); + + self.contentView = [[[customView alloc] initWithFrame:apprect] autorelease]; +#ifdef SHOW_COLOR + self.contentView.backgroundColor = [UIColor yellowColor]; +#else + self.contentView.backgroundColor = [UIColor blackColor]; +#endif + + + [self createZoomEmulatorView]; + + [self.zv setUserInteractionEnabled:TRUE]; + + self.kbdc = [[KBDController alloc] retain]; + [self.contentView addSubview:self.kbdc.view]; + + self.view = self.contentView; + + + [self.zv disableZoom]; +} + +-(void) updateView +{ + static int inUpdateView=0; + if (inUpdateView) + return ; + inUpdateView++; + debug_printf("viewController updateView\n"); + + + // Transforme la fenetre root view + + [UIView beginAnimations:nil context:NULL]; + [UIView setAnimationDuration:0.3]; + + CGAffineTransform matv = CGAffineTransformIdentity; + matv = CGAffineTransformRotate (matv,(270-[pManager getAngle])*M_PI/180); //Avec + self.contentView.transform = matv; + + + + CGRect emulatorRect; // emulator rect + CGRect boundRect; // emulator rect rotate + int requiredOrientation = -1 ; + CGRect kbddelta = CGRectZero; + + CGAffineTransform mat = CGAffineTransformIdentity; +#ifdef VIDEO_SINGLEVLINE + mat = CGAffineTransformScale(mat,1,-2); +#else + mat = CGAffineTransformScale(mat,1,-1); + +#endif + self.zv.transform = mat; + + // Mets à jour la taille de la fenetre en fonction de l'affichage du clavier + if ([pManager hasSecondary ]) + { + CGRect secondaryapprect = [pManager secondaryScreen].bounds; + emulatorRect = CGRectMake(0.0,0.0,secondaryapprect.size.width,secondaryapprect.size.height); + + if (attachedTo != ATTACH_SECONDARY ) + { + printf("attaching to secondary..."); + + attachedTo = ATTACH_SECONDARY; + + [self.zv removeFromSuperview]; + [pManager.secondaryWindow addSubview:self.zv]; + + float ratio = [[pManager secondaryScreen] scale]; + + // recalcule la vue car la résolution/ratio a changé + [self.zv updateScreen:emulatorRect ratio:ratio]; + + [self.kbdc setMenuBarVisibility:true]; + + [pManager setSecondaryInputMode]; + } + + // Force L'affichage par défault + requiredOrientation = 0; + boundRect = emulatorRect; + } + else + { + CGRect primaryapprect = [UIScreen mainScreen].bounds; + emulatorRect = CGRectMake(0.0,0.0,primaryapprect.size.width,primaryapprect.size.height); + NSLog(@"emulatorRect : %f*%f\n",emulatorRect.size.width,emulatorRect.size.height); + if (attachedTo != ATTACH_PRIMARY ) + { + printf("attaching to primay..."); + attachedTo = ATTACH_PRIMARY; + + [self.zv removeFromSuperview]; + + + float ratio = [[UIScreen mainScreen] scale]; + + // recalcule la vue car la résolution/ratio a changé + [self.zv updateScreen:emulatorRect ratio:ratio]; + + [self.contentView addSubview:self.zv]; + + // fait apparaite l'inputr + [self.kbdc restoreInput]; + + // le remts en premier + [self.contentView bringSubviewToFront:self.kbdc.view]; + + + + } + + // primary parameters + + requiredOrientation = ([pManager getAngle]/90)+1; + kbddelta = [self.kbdc getEmulatorDelta]; + + NSString* systemVer = [[UIDevice currentDevice] systemVersion]; + if ([systemVer compare:@"8.0"] == NSOrderedDescending) + boundRect = emulatorRect; + else + { + boundRect = CGRectApplyAffineTransform(emulatorRect,matv); + boundRect.origin.x = 0; + boundRect.origin.y = 0; + } + + + [self.contentView setBounds:boundRect]; + } + + + + [self.zv updateFrame: boundRect kbdRect:kbddelta]; + [self.zv switchOrientation:requiredOrientation]; // a faire après le boundRect + + printf("*** setbound rect %f,%f\n",boundRect.size.width,boundRect.size.height); + + [UIView commitAnimations]; + + + // l'interface est repositionnées mais non animée + + CGRect uirect = [[UIScreen mainScreen] applicationFrame]; + CGRect uirectrotate = CGRectApplyAffineTransform(uirect,matv); + + uirectrotate.origin.x = 0; + uirectrotate.origin.y = 0; + + [self.kbdc updateView:uirectrotate]; + [pManager updateNotificationView:uirectrotate]; + + inUpdateView--; +} + + +// IOS 5 Compatibility + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation +{ + return NO; +} + +- (BOOL)shouldAutorotate +{ + return NO; +} + + +- (void)didReceiveMemoryWarning { + // Releases the view if it doesn't have a superview. + [super didReceiveMemoryWarning]; + + // Release any cached data, images, etc that aren't in use. +} + + +-(void)viewWillAppear:(BOOL)animated +{ + printf("view will appear"); + [[pManager getEmulatorView].contentView reenableAllGestures]; + + [[pManager getEmulatorView].kbdc setEmulatorTitle:config.visibleName.c_str()]; + + if ([pManager hasSecondary]) + { + [pManager setSecondaryInputMode]; + } + + if (pMac) + { + // réactive l'interface + if ([pManager hasSecondary]) + { + // [[pManager getEmulatorView].kbdc restoreInput]; + } + else + { + debug_printf("### unpausing emulator"); + r_sim65816.resume(); + } + } + else + { + debug_printf("### starting new emulator instance"); + + + [[pManager getEmulatorView].kbdc resetSpecialKeys]; + pMac = new CEmulatorMac(NULL,1); + config.xmlAlreadyLoaded=0; + pMac->setConfig(&config); + pMac->launchEmulator(); + + // remets un ratio de 1.0 + [self.zv setRatioToOne]; + [self.zv switchOrientation:self.zv->curOrientation]; + } + + [self.zv.ew activateEmulatorRefresh:option.getIntValue(OPTION_FRAMERATE)]; + +} + +-(void)viewWillDisappear:(BOOL)animated +{ + + // elimine les gestures (et les timers) + [[pManager getEmulatorView].contentView disableGestures:MODE_ALL]; + if (pMac) + { + if ([pManager hasSecondary]==false) + { + debug_printf("### pausing emulator"); + r_sim65816.pause(); + } + } + [self.zv.ew deactivateEmulatorRefresh]; +} + +- (void)dealloc { + + [self.zv release]; + self.zv = nil; + + [super dealloc]; +} + +@end diff --git a/Common.iphone/activegsList.h b/Common.iphone/activegsList.h new file mode 100644 index 0000000..d140272 --- /dev/null +++ b/Common.iphone/activegsList.h @@ -0,0 +1,79 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import +#import +#include "../Common/CEMulatorCtrl.h" +#include "../Common/3rdpartylib/simplexml.h" +#include "../Common/ActiveGSList.h" + +#define LABELWIDTH 260 +#define LABELHEIGHT 200 + +@interface itemClass : NSObject +{ +@public + /* + MyString name; + MyString desc; + MyString company; + MyString year; + MyString theid; + MyString thumb; +//#define MAX_SCREENSHOTS 10 +// MyString screenShots[MAX_SCREENSHOTS]; + MyString screenShots0; + MyString screenShots1; + MyString screenShots2; + simplexml* pXML; + int is2GS; + */ + ActiveGSElement* element; +} +@end + + +@interface UILabelMargin : UILabel +{ + +} + +@end + +enum { ONLY_APPLE2=1, ONLY_2GS=2, ALL=4, ALL_NO_INDEX=8, DOC_LIST=128 }; + +@interface activegsList : UITableViewController +{ + + + NSArray *_searchArray ; + NSString* _sourceName; + NSString* _sourceRevision; + UILabelMargin* _warningLabel; + NSMutableArray *_listOfItems; + int bLoaded; + int updateCheckHasBeenDone; +// simplexml* pXML; +@public + ActiveGSList list; + + MyString listPath; + MyString versionPath; + MyString trackerName; + int filter; +} + +@property(nonatomic,retain) NSMutableArray* listOfItems; +@property(nonatomic,retain) UILabelMargin* warningLabel; +@property(nonatomic,retain) NSString* sourceRevision; +@property(nonatomic,retain) NSString* sourceName; +@property(nonatomic,retain) NSArray *searchArray ; + +- (simplexml*)addList:(const char*)_listPath; +- (void)retrieveDocumentList:(MyString&) tempXML withBaseURL:(MyString&)baseURL; +-(void)reloadData:(BOOL)_forceDownload; +-(void)checkUpdateCallback:(NSData*)_data; +@end diff --git a/Common.iphone/activegsList.mm b/Common.iphone/activegsList.mm new file mode 100644 index 0000000..758e37c --- /dev/null +++ b/Common.iphone/activegsList.mm @@ -0,0 +1,766 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import "activegsAppDelegate.h" +#import "activegsList.h" +#include "../Common/svnversion.h" +#import "asyncimageview.h" +#import "activegsViewController.h" +//#include "../Common/3rdpartylib/tinyxml/tinyxml.h" +#include "../kegs/src/sim65816.h" +#include "asynccommand.h" + +extern void x_notify_download_failure(const char*_url); + + +@implementation itemClass +@end + +@implementation UILabelMargin + +- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines +{ + return [super textRectForBounds:UIEdgeInsetsInsetRect(bounds,UIEdgeInsetsMake(15,15,15,15)) limitedToNumberOfLines:numberOfLines]; +} + +-(void)drawTextInRect:(CGRect)rect +{ + CGRect r = [self textRectForBounds:rect limitedToNumberOfLines:self.numberOfLines]; + [super drawTextInRect:r]; +} + +@end + + +void xmltostring(simplexml* _this,MyString& _output) +{ + + + MyString s; + s.Format("<%s",_this->key()); + _output += s; + + for (keyvalue_rec *ptr = _this->properties(); ptr!=NULL; ptr=ptr->next) + { + s.Format(" %s=\"%s\"",ptr->key,ptr->value); + _output += s; + } + + _output +=">\n"; + const char *v = _this->value(); + if (v) + _output +=v; + int nc = _this->number_of_children(); + for(int i=0;ichild(i),_output); + s.Format("\n",_this->key()); + _output += s; + +} + + +static UIImage* defaultImage2GS = nil; +static UIImage* defaultImageII = nil; + + +@implementation activegsList + +@synthesize listOfItems = _listOfItems; +@synthesize warningLabel = _warningLabel; +@synthesize sourceRevision = _sourceRevision; +@synthesize sourceName = _sourceName; +@synthesize searchArray = _searchArray ; + + ++(void)initialize +{ + [super initialize]; + + float rr = [pManager resolutionRatio]; + + NSString *imgSource = [[NSBundle mainBundle] pathForResource:@"logo_apple2gs" ofType:@"png"]; + if (imgSource) + { + defaultImage2GS = [UIImage imageWithContentsOfFile: imgSource] ; + defaultImage2GS = [AsyncImageView processImage:defaultImage2GS width:64*rr height:40*rr]; + [defaultImage2GS retain]; + } + else + defaultImage2GS = nil; + + NSString *imgSource2 = [[NSBundle mainBundle] pathForResource:@"logo_apple2" ofType:@"png"]; + if (imgSource2) + { + defaultImageII = [UIImage imageWithContentsOfFile: imgSource2]; + defaultImageII = [AsyncImageView processImage:defaultImageII width:64*rr height:40*rr]; + [defaultImageII retain]; + } + else + defaultImageII = nil; + +} + +-(void)retrieveDocumentList:(MyString&) tempXML withBaseURL:(MyString&) _baseUrl; +{ + + tempXML = "\n"; + tempXML += "My 2GS"; + + NSArray *dopaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *documentsDirectory = [dopaths objectAtIndex:0]; + NSFileManager *manager = [NSFileManager defaultManager]; +// NSArray *fileList = [manager directoryContentsAtPath:documentsDirectory]; + NSError* err; + NSArray *fileList = [manager contentsOfDirectoryAtPath:documentsDirectory error:&err]; + + MyString ignoreList; + + const char* utf8docdir = [documentsDirectory UTF8String]; + listPath.Format("%s/LOCAL.ACTIVEGSXML",utf8docdir); + _baseUrl =listPath; + + CDownload dl(utf8docdir); + dl.bNotifyDownloadFailure = true; + + + // parse déjà les fichier .activegsxml + + for (NSString *s in fileList) + { + const char* fn = [s UTF8String]; + const char* ext = getext(fn); + + if (strcasecmp(ext,"activegsxml")) + continue; + + /* + MyString fullpathname = utf8docdir; + fullpathname += "/"; + fullpathname += fn; + */ + MyString path; + MyString shortname; + + dl.retrieveFile(fn,path,shortname); + FILE* f= fopen(path.c_str(),"rb"); + if (!f) continue; + fseek(f,0,SEEK_END); + int si = ftell(f); + + + fseek(f,0,SEEK_SET); + char *buf = new char[si+1]; + memset(buf,0,si+1); + fread(buf,1,si,f); + simplexml* p = new simplexml(buf); + if (!p) + { + delete buf; + continue; + } + if (!strcasecmp(p->key(),"config")) + { + MyString temp; + xmltostring(p,temp); + printf("%s",temp.c_str()); + tempXML += temp.c_str(); + + // rajoute les images dans une liste blackliste + for(int i=0;inumber_of_children();i++) + { + simplexml* child = p->child(i); + if (!strcmp(child->key(),"image")) + { + int order; + MyString path; + int isLocal = dl.parseFilenameAndMakeAbsolute(child->value(), order, path); + if (isLocal) + { + ignoreList+="?"; + ignoreList+=getfile(path); + ignoreList+="?"; + // printf("ignoring:%s",getfile(path.c_str())); + } + } + } + } + delete buf; + fclose(f); + } + + // parse les autres fichiers + for (NSString *s in fileList) + { + const char* fn = [s UTF8String]; + const char* ext = getext(fn); + + if ( strcasecmp(ext,"zip") + && strcasecmp(ext,"2mg") + && strcasecmp(ext,"raw") + && strcasecmp(ext,"dsk") + && strcasecmp(ext,"po") + && strcasecmp(ext,"do") + && strcasecmp(ext,"nib") + && strcasecmp(ext,"bin")) + continue; + + // si le fichier est dans la liste des blacklistée : ignore + MyString pat; + pat.Format("?%s?",fn); + if (ignoreList.Find(pat)!=-1) + continue; + + /* + MyString fullpathname = utf8docdir; + fullpathname += "/"; + fullpathname += fn; + */ + + MyString path; + MyString shortname; + // CDownload dl; + // dl.bNotifyDownloadFailure = true; + dl.retrieveFile(fn,path,shortname); + FILE* f= fopen(path.c_str(),"rb"); + if (!f) continue; + fseek(f,0,SEEK_END); + int si = ftell(f); + + int slot; + if (si < 800*1024) + slot = 6; + else + if (si < 900*1024) + slot = 5; + else + slot = 7; + + tempXML += ""; + tempXML += ""; + tempXML += getfilenoext(fn); + tempXML += ""; + + if (slot==6) + tempXML += "APPLE 2"; + else + tempXML += "2GS"; + + tempXML += ""; +// tempXML += utf8docdir; +// tempXML += "/"; + tempXML += getfilenoext(fn); + tempXML += ".png"; + + tempXML += ""; + tempXML += fn; + tempXML += ""; + tempXML += ""; + tempXML += slotstr; + tempXML += ""; + tempXML += ""; + + + fclose(f); + } + + tempXML+=""; + printf(tempXML.c_str()); +} + +- (simplexml*)addList:(const char*)_listPath +{ + + double currTime = [[NSDate date] timeIntervalSince1970]; + + MyString path; + MyString shortname; +// const char* pxmlstring ; +// char* s = NULL; + MyString xmlString; + + + list.reset(); + + if (!(filter & DOC_LIST)) + { + list.loadFromFile(listPath.c_str()); + } + else + { + MyString baseURL; + [self retrieveDocumentList:xmlString withBaseURL:baseURL]; + list.pathName = baseURL; + list.processString(xmlString.c_str()); + + } + + + NSString* name = [NSString stringWithUTF8String:list.sourceName]; + NSString* rev = [NSString stringWithUTF8String:list.sourceRevision]; + self.sourceName=name; + self.sourceRevision=rev; + + printf("nb element before filter %d\n",list.elements.size()); + for(int i=0;ielement = el; + if ( (filter & ALL) + || (filter & ALL_NO_INDEX) + ||(filter & ONLY_APPLE2 && !el->is2GS) + || (filter & ONLY_2GS && el->is2GS) ) + [self.listOfItems addObject:ic]; + ic = nil; + } + double d = [[NSDate date] timeIntervalSince1970] - currTime; + printf("loaded %s in %f\n",listPath.c_str(),d); + //return pXMLList; + return NULL; +} + + + +static NSInteger compareImagesUsingSelector(id p1, id p2, void *context) +{ + itemClass* obj1 = p1; + itemClass* obj2 = p2; + const char* c1 = obj1->element->name.c_str(); + const char* c2 = obj2->element->name.c_str(); + int ret = strcasecmp(c1,c2); + if (ret>0) + return NSOrderedDescending; + else + if (!ret) + return NSOrderedSame; + else + return NSOrderedAscending; +} + +- (void)addListAsync:(NSTimer*)timer +{ + + + [self addList:listPath.c_str()]; + + if (!(filter & ALL_NO_INDEX)) + [self.listOfItems sortUsingFunction:compareImagesUsingSelector context:nil]; + + [(activegsViewController*)[pManager getBrowserView] activateLoader:FALSE]; + +#ifdef ACTIVEGS_ENABLE_DOCUMENT + if (( filter & DOC_LIST) && [self.listOfItems count]==0) + { + CGSize s = self.view.frame.size; + + CGRect r = CGRectMake((s.width-LABELWIDTH)/2,(s.height-LABELHEIGHT)/2,LABELWIDTH,LABELHEIGHT); + self.warningLabel = [[[UILabelMargin alloc]initWithFrame:r ] autorelease]; + self.warningLabel.backgroundColor = [UIColor colorWithWhite:0.8 alpha:0.5]; + self.warningLabel.lineBreakMode = UILineBreakModeWordWrap; + self.warningLabel.numberOfLines = 0; + // label.textAlignment = UITextAlignmentCenter; + self.warningLabel.font = [UIFont systemFontOfSize:(CGFloat)12.0]; + self.warningLabel.text = @"To add Apple II/2GS disk images :\n\n1- Connect your device to iTunes\n2- Go the 'Apps' tab\n3- Copy files (.2MG, .DSK, .ZIP, ...) to the ActiveGS Documents directory\n4- Click on the \"Refresh\" button to update the list!\n\nMore info on the ActiveGS website."; + /* + [[warningLabel layer] setCornerRadius:8]; + [[warningLabel layer] setMasksToBounds:NO]; + [[warningLabel layer] setShadowColor:[UIColor blackColor].CGColor]; + [[warningLabel layer] setShadowOpacity:1.0f]; + [[warningLabel layer] setShadowRadius:6.0f]; + [[warningLabel layer] setShadowOffset:CGSizeMake(0, 3)]; + */ + [self.view addSubview:self.warningLabel]; + + } + + activegsViewController* v = (activegsViewController*)[pManager getBrowserView]; + + if ([self.listOfItems count]==0) + [(UIButton*)v.navItem.titleView setTitle:@"Refresh" forState:UIControlStateNormal]; + else + [(UIButton*)v.navItem.titleView setTitle:self.sourceName forState:UIControlStateNormal]; + + [(UIButton*)v.navItem.titleView setHidden:NO]; +#endif + + // regarde si on doit raffraichir la liste + + if (!versionPath.IsEmpty()) + { + [[[AsyncCommand alloc] initCommand:versionPath.c_str() withObject:self withSelector:@selector(checkUpdateCallback:)] autorelease]; + } + + bLoaded = 1; + [(UITableView*)self.view reloadData]; + [self viewWillAppear:FALSE]; + + +} + + +-(void)checkUpdateCallback:(NSData*)_data +{ + + if (_data) + { + + char buffer[1024]; + memset(buffer,0,1024); + [_data getBytes:buffer length:1023]; + + NSString* remoteVersion = [[NSString stringWithUTF8String:buffer] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; + // NSString* remoteVersion = @"1.08"; + + // vérifie que ca correspond bien à une version + if ([remoteVersion characterAtIndex:1] == '.') + { + NSLog(@"source: %@ current:%@ vs.remote:%@ ",self.sourceName,self.sourceRevision,remoteVersion); + + if (![self.sourceRevision isEqualToString:remoteVersion]) + { + printf("need to upgrade\n"); + [(activegsViewController*)[pManager getBrowserView] updateDialog:remoteVersion]; + } + else + printf("nothing to update\n"); + } + else + printf("bad format"); + + } + else + printf("callback failed."); +} + + +/* + + // DOES NOT WORK ON UITABLEVIEW + +-(void)viewWillAppear:(BOOL)animated +{ + NSLog(@"viewWillAppear -- activegsList"); + // change le titre + [pManager getBrowserView]->navItem.title = sourceName; + +} + */ + + +-(void)reloadData:(BOOL)_forceDownload +{ + //Initialize the array. + self.listOfItems = [[[NSMutableArray alloc] init] autorelease]; + + list.reset(); +// pXML = NULL; + + [(activegsViewController*)[pManager getBrowserView] activateLoader:TRUE]; + + //Set the title + //self.navigationItem.title = @"IIGS"; + + bLoaded = 0; + + // élimine le warning + if (self.warningLabel) + { + [self.warningLabel removeFromSuperview]; + self.warningLabel= nil; + } + + // force le rafraichissement de la liste + [(UITableView*)self.view reloadData]; + + + if (_forceDownload) + { + CDownload dl("***ERR***"); + if (!(filter & DOC_LIST)) + { + dl.deleteCachedFile(listPath.c_str()); + } + } + +#ifdef ACTIVEGS_BACKGROUNDIMAGE + self.tableView.backgroundColor = [UIColor clearColor]; + self.tableView.opaque = NO; +#endif + + [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(addListAsync:) userInfo:nil repeats:NO]; + +// [self performSelectorOnMainThread:@selector(addListAsync:)withObject:self waitUntilDone:NO]; + + +} + +- (void)viewWillAppear:(BOOL)animated +{ + NSLog(@"activeGSList viewWillAppear %@",self); + + + if (self.sourceName) + { +#ifndef ACTIVEGS_BACKGROUNDIMAGE + [(UIButton*)[pManager getBrowserView].navItem.titleView setTitle:self.sourceName forState:UIControlStateNormal]; +#else + ((UILabel*)[pManager getBrowserView].navItem.titleView).text = self.sourceName; +#endif + } +} + +- (void)viewDidLoad { + + + NSLog(@"activeGSList viewDidLoad"); + + + [super viewDidLoad]; + + + // IOS8 ISSUE !!!!! DefaultRawHeight = UITableViewAutomaticDimension + + CGFloat h = 44 * [pManager resolutionRatio]; + self.tableView.rowHeight = h; + self.tableView.delegate = self; + self.tableView.dataSource = self; + + + self.searchArray = [NSArray arrayWithObjects: + @"#", @"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I", @"J", @"K", @"L", + @"M", @"N", @"O", @"P", @"Q", @"R", @"S", @"T", @"U", @"V", @"W", @"X", @"Z",nil]; + + + + [self reloadData:NO]; + + +} + +- (int)findIndexFromRowSection:(int)row section:(char)section +{ + + if (filter & ALL_NO_INDEX) + return row; + + // cherche le premier + int count = 0; + int index = 0; + int nb = [self.listOfItems count]; + for(int i=0;ielement->name.at(0); + + if (c>='0' && c<='9') c='#'; + if (c>='a' && c<='z') c+='A'-'a'; + if (c==section) + { + + if (count == row) + { + index = i; + break; + } + else count++; + } + } + return index; +} + + +- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath +{ + // remets le thumbnail en top priorité + [[asyncImageQueue sharedQueue] prioritizeItem:cell.imageView]; + + int row = [indexPath row]; + if (row & 1) + cell.backgroundColor = [UIColor colorWithWhite:0.8 alpha:0.6]; + else + cell.backgroundColor = [UIColor colorWithWhite:0.9 alpha:0.6]; + + } + + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath +{ + + NSInteger row = [indexPath row]; + NSInteger section = [indexPath section]; + int index = [self findIndexFromRowSection:row section:*[[self.searchArray objectAtIndex:section] UTF8String]]; + + NSLog(@"cellForRowAtIndexPath cell %d %d %d",(int)row,(int)section,index); + itemClass* ic = [self.listOfItems objectAtIndex:index]; + NSString* cellValue = [NSString stringWithUTF8String: ic->element->name.c_str()]; + NSString *CellIdentifier = [NSString stringWithFormat:@"Cell_%@",cellValue]; + + UITableViewCell *cell = nil; + + cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; + if (cell != nil) + return cell; + + cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; + + cell.textLabel.text = cellValue; + + cell.textLabel.font = [UIFont fontWithName:@"ShastonHi640" size:16*[pManager resolutionRatio]]; + + cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; + + if ( ic->element->is2GS) + cell.imageView.image = defaultImage2GS; + else + cell.imageView.image = defaultImageII; + + + + AsyncImageView* asyncImage = [[AsyncImageView alloc] autorelease]; + float s = [pManager resolutionRatio]*[pManager dpiRatio]; + [asyncImage initImage:ic->element->thumb.c_str() target:cell.imageView width:64*s height:40*s]; +// [asyncImage performSelectorOnMainThread:@selector(loadImage:) withObject:nil waitUntilDone:NO]; + [asyncImage loadImage:self]; + + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +{ + int row = [indexPath row]; + int section = [indexPath section]; + int index = [self findIndexFromRowSection:row section:*[[self.searchArray objectAtIndex:section] UTF8String]]; + itemClass* ic = [self.listOfItems objectAtIndex:index]; + [pManager launchDiskImage:ic->element pathname:list.pathName.c_str() trackername:list.trackerName.c_str()]; + +} + +- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath +{ + int row = [indexPath row]; + int section = [indexPath section]; + int index = [self findIndexFromRowSection:row section:*[[self.searchArray objectAtIndex:section] UTF8String]]; + itemClass* ic = [self.listOfItems objectAtIndex:index]; + detailViewController* dv = [pManager getDetailView]; + dv->diskSelected = ic->element ; + dv->list = &(self->list) ; + + [pManager doStateChange:[pManager getDetailView] type:kCATransitionPush sens:kCATransitionFromRight]; + +} + + +- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { + + NSLog(@"sectionIndexTitlesForTableView"); + + if (!bLoaded) + return nil; + else + if (filter & ALL_NO_INDEX) + return nil; + else + return self.searchArray; +} + +- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index { + + NSLog(@"sectionForSectionIndexTitle %d",(int)index); + if (!bLoaded) + return -1; + else + return index; + +} + + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView +{ + NSLog(@"numberOfSectionsInTableView"); + if (!bLoaded) + return 1; + else + if (filter & ALL_NO_INDEX) + return 1; + else + return [self.searchArray count]; +} + + +- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section +{ + if (!bLoaded) + return nil; + else + if (filter & ALL_NO_INDEX) + return nil; + else + return [self.searchArray objectAtIndex:section]; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section +{ + NSLog(@"numberOfRowsInSection"); + + if (!bLoaded) + return 0; + if (filter & ALL_NO_INDEX) + return [self.listOfItems count]; + + const char* search = [[self.searchArray objectAtIndex:section] UTF8String]; + // cherche le premier + int count = 0; + NSInteger nb = [self.listOfItems count]; + + for(int i=0;ielement->name.at(0); + if (c>='0' && c<='9') c='#'; + if (c>='a' && c<='z') c+='A'-'a'; + if (c==*search) + count++; + else + if (count) + { + // printf("count: %s = %d\n",search,count); + return count; + } + } + return count; +} + +- (void)dealloc +{ + /* + if (pXML) + { + delete pXML; + pXML = NULL; + } + */ + list.reset(); + + [super dealloc]; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation +{ + return YES; +} + +- (BOOL)shouldAutorotate +{ + return YES; +} + +@end diff --git a/Common.iphone/activegsViewController.h b/Common.iphone/activegsViewController.h new file mode 100644 index 0000000..36150c4 --- /dev/null +++ b/Common.iphone/activegsViewController.h @@ -0,0 +1,52 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import +#include "activegsAppDelegate.h" +#include "../kegs/iOS/emulatorView.h" +#import "activegsList.h" + +/* +@interface activeUITabBarController : UITabBarController + +@end + +@interface activeUINavigationBar : UINavigationBar + +@end +*/ + +@interface activegsViewController : UIVIEWCONTROLLERROOT +{ + + // NSMutableArray* listViews; + UITabBarController* _tabView; + UINavigationBar* _navView; + UIActivityIndicatorView* _loader; + activegsList* _docList; // pour retrouver le label! + activegsList* _l0; + UINavigationItem* _navItem; + +} + +@property (retain,nonatomic) UINavigationItem* navItem; +@property (retain,nonatomic) UINavigationBar* navView; +@property (retain,nonatomic) UITabBarController* tabView; +@property (retain,nonatomic) UIActivityIndicatorView* loader; +@property (retain,nonatomic) activegsList* docList; +@property (retain,nonatomic) activegsList* l0; + +- (void)loadView; +-(void)updateView; +-(void)swipeLeft :(UISwipeGestureRecognizer*)_rec ; +-(void)swipeRight :(UISwipeGestureRecognizer*)_rec ; +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation ; +-(void)activateLoader:(BOOL)_on; +//+(void)initialize; +-(void)updateDialog:(NSString*) newVersion; + +@end + diff --git a/Common.iphone/activegsViewController.mm b/Common.iphone/activegsViewController.mm new file mode 100644 index 0000000..f855f7f --- /dev/null +++ b/Common.iphone/activegsViewController.mm @@ -0,0 +1,555 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import "activegsAppDelegate.h" +#import "activegsViewController.h" +#import "activegslist.h" +#include "../Kegs/Src/sim65816.h" + + +@implementation activegsViewController +@synthesize navItem = _navItem; +@synthesize navView = _navView; +@synthesize docList = _docList; +@synthesize l0 = _l0; +@synthesize loader = _loader; +@synthesize tabView = _tabView; + + +-(void)viewWillAppear:(BOOL)animated +{ + NSLog(@"viewWillAppear -- activegsViewController"); + [self updateView]; +} + + +-(void)activateLoader:(BOOL)_on +{ + if (_on) + { + [self.loader startAnimating]; + self.loader.hidden=false; + + } + else + { + [self.loader stopAnimating]; + self.loader.hidden=true; + } + +} + +/* +- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController +*/ + +- (void)UITabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController +{ + + activegsList* l = (activegsList*)viewController; +#ifndef ACTIVEGS_BACKGROUNDIMAGE + if (l.sourceName) + [(UIButton*)self.navItem.titleView setTitle:l.sourceName forState:UIControlStateNormal]; +#endif + [self updateView]; +#ifdef ACTIVEGS_SAVELASTTAB + // sauve la config + option.setIntValue(OPTION_LASTTAB,tabBarController.selectedIndex); + option.saveOptions(1); + #endif +} + + +//#define WHEELSIZEREF 100 +//float WHEELSIZE = WHEELSIZEREF ; + +- (void)loadView +{ + NSLog(@"activeGSViewController -- loadView"); + + [super loadView]; + + CGRect r = [UIScreen mainScreen].applicationFrame; + +#if 0 + float s = [pManager resolutionRatio]; + WHEELSIZE = WHEELSIZEREF*s; + CGRect rl = CGRectMake((self.view.frame.size.width - WHEELSIZE)/2,(self.view.frame.size.height -WHEELSIZE)/2,WHEELSIZE,WHEELSIZE); + self.loader = [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray] autorelease]; + + [self.loader.layer setValue:[NSNumber numberWithFloat:2.0f*s] forKeyPath:@"transform.scale"]; + self.loader = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; + + [self.loader setFrame:rl]; + +#endif + self.loader = [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray] autorelease]; + + [self.view addSubview:self.loader]; + + [self.loader startAnimating]; + self.loader.hidden=false; + + + + + self.navView = [[[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, r.size.width, BARVIEW_HEIGHT)] autorelease]; + self.navView.barStyle = UIBarStyleBlack; + // self.navView.delegate = self; + self.navItem = [[[UINavigationItem alloc] initWithTitle:@ACTIVEGS_TITLE] autorelease]; + +#ifdef ACTIVEGS_BACKGROUNDIMAGE + [self.view addSubview:pManager.backgroundView]; + UILabel* label = [[[UILabel alloc]initWithFrame:CGRectMake(0,0,r.size.width, BARVIEW_HEIGHT)] autorelease]; + label.text = @ACTIVEGS_TITLE; + label.font = [UIFont systemFontOfSize:(CGFloat)16.0]; + label.backgroundColor = [UIColor clearColor]; + label.textColor = [UIColor whiteColor]; + label.textAlignment = UITextAlignmentCenter; + + self.navItem.titleView=label; +#else + UIButton* titleButton = [UIButton buttonWithType:(UIButtonType)100]; + [titleButton addTarget:self action:@selector(titleButton:) forControlEvents:UIControlEventTouchUpInside]; + [titleButton setTitle:@ACTIVEGS_TITLE forState:UIControlStateNormal]; + self.navItem.titleView = titleButton; + self.navItem.titleView.hidden=YES; +#endif + [self.navView pushNavigationItem:self.navItem animated:FALSE]; + + // Rectangle +#if 0 + UIBarButtonItem *browseItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered + target:self + action:@selector(backButton:)] autorelease]; +#else + // left Arrow + UIButton* backButton = [UIButton buttonWithType:(UIButtonType)101]; // left-pointing shape! + [backButton addTarget:self action:@selector(backButton:) forControlEvents:UIControlEventTouchUpInside]; + [backButton setTitle:@"Back" forState:UIControlStateNormal]; + + // create button item -- possible because UIButton subclasses UIView! + UIBarButtonItem* browseItem = [[[UIBarButtonItem alloc] initWithCustomView:backButton] autorelease]; +#endif + + self.navItem.leftBarButtonItem = browseItem; + + UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; + [infoButton addTarget:self action:@selector(infoButton:) forControlEvents:UIControlEventTouchUpInside]; + UIBarButtonItem* infoItem = [[[UIBarButtonItem alloc] initWithCustomView:infoButton] autorelease]; + + self.navItem.rightBarButtonItem = infoItem; + + [self.view addSubview:self.navView]; + + r.origin.y = self.navView.frame.size.height; + r.size.height -= r.origin.y; + + self.tabView = [[[UITabBarController alloc] init] autorelease]; + [self.tabView.view setFrame:r]; + self.tabView.delegate = self; + NSString *imgSource; + + self.l0 = [[activegsList alloc] autorelease]; + //imgSource = [[NSBundle mainBundle] pathForResource:@ACTIVEGS_FIRSTTABLIST ofType:@"activegsxml"] ; + self.l0->listPath = pManager->firstTabXML.c_str(); + self.l0->filter= ALL_NO_INDEX ; + self.l0->trackerName = ACTIVEGS_FIRSTTABTRACKER; + imgSource = [[NSBundle mainBundle] pathForResource:@ACTIVEGS_FIRSTTABICON ofType:@"png"]; + self.l0.tabBarItem = [[[UITabBarItem alloc] initWithTitle:@ACTIVEGS_FIRSTTABTITLE image:[UIImage imageWithContentsOfFile: imgSource] tag:0] autorelease]; + +#ifdef ACTIVEGS_SINGLETAB + [self.l0.view setFrame:r]; + [self.view addSubview:self.l0.view]; +#else + activegsList* l3 = [[activegsList alloc] autorelease]; + l3->listPath = "http://www.freetoolsassociation.com/xml/list.activegsxml"; + l3->versionPath = "http://www.freetoolsassociation.com/xml/version.dat"; + l3->filter= ALL; + l3.tabBarItem = [[[UITabBarItem alloc] initWithTitle:@"FTA Website" image:[UIImage imageWithContentsOfFile: imgSource] tag:0] autorelease]; ; + l3->trackerName = "FTA"; + + activegsList* l1 = [[activegsList alloc] autorelease]; + l1->listPath = "http://www.virtualapple.org/xmlfiles/list.zip"; + l1->versionPath = "http://www.virtualapple.org/xmlfiles/version.dat"; + l1->filter = ONLY_APPLE2 ; + l1->trackerName = "VirtualApple2"; + /*NSString */imgSource = [[NSBundle mainBundle] pathForResource:@"Tab][" ofType:@"png"]; + l1.tabBarItem = [[[UITabBarItem alloc] initWithTitle:@"Apple II" image:[UIImage imageWithContentsOfFile: imgSource] tag:0] autorelease]; + + activegsList* l2 = [[activegsList alloc] autorelease]; + l2->listPath = "http://www.virtualapple.org/xmlfiles/list.zip";; + // l2.title = @"Apple IIGS"; + l2->filter = ONLY_2GS; + l2->trackerName = "VirtualApple2GS"; + imgSource = [[NSBundle mainBundle] pathForResource:@"Tab2GS" ofType:@"png"]; + l2.tabBarItem = [[[UITabBarItem alloc] initWithTitle:@"Apple IIGS" image:[UIImage imageWithContentsOfFile: imgSource] tag:0] autorelease]; + +#ifndef ACTIVEGS_ENABLE_DOCUMENT + self.docList= nil; +#else + self.docList = [[activegsList alloc] autorelease]; + self.docList->listPath.Empty(); + self.docList->filter = (int)(ALL_NO_INDEX|DOC_LIST); + self.docList->trackerName = "My2GS"; + //docList.tabBarItem = [[[UITabBarItem alloc] initWithTitle:@"My 2GS" image:[UIImage imageWithContentsOfFile: imgSource] tag:0] autorelease]; + self.docList.tabBarItem = [[[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:0] autorelease]; +#endif + + [self.tabView setViewControllers:[NSArray arrayWithObjects:self.l0, l3, l1, l2, self.docList,nil]]; + option.loadOptions(); + self.tabView.selectedIndex=option.getIntValue(OPTION_LASTTAB); + + [self.view addSubview:self.tabView.view]; +#endif // SINGLETAB + + + // Swipe left to go back to browsing + UISwipeGestureRecognizer* grswipeleft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeLeft:)]; + grswipeleft.direction = UISwipeGestureRecognizerDirectionLeft; + [self.view addGestureRecognizer:grswipeleft]; + [grswipeleft release]; + + // Swipe right to go back to browsing + UISwipeGestureRecognizer* grswiperight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRight:)]; + grswiperight.direction = UISwipeGestureRecognizerDirectionRight; + [self.view addGestureRecognizer:grswiperight]; + [grswiperight release]; + + // pour etre sur qu'il soit visible + [self.view bringSubviewToFront:self.loader]; + + +} + +-(void)viewDidUnload +{ + + self.tabView.delegate = nil; + self.tabView = nil; + self.navItem = nil; + self.navView = nil; + self.loader = nil; + + [super viewDidUnload]; +} + + +-(void)updateDialog:(NSString*) newVersion +{ + + activegsList* l = (activegsList*) self.tabView.selectedViewController; + NSString* fmt = [NSString stringWithFormat:@"Database version v%@ is available!\n(current installed version is v%@)\n\nDo you want to update ?",newVersion,l.sourceRevision]; + + UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:l.sourceName message:fmt delegate:self cancelButtonTitle:@"Later" otherButtonTitles:@"Update Now",nil] autorelease]; + [alert show]; +} + +- (void)titleButton:(id)sender +{ + + activegsList* l = (activegsList*) self.tabView.selectedViewController; + NSString* fmt = @"No Database present"; + NSString* title = @"ActiveGS"; + if (l.sourceName) + { + fmt = [NSString stringWithFormat:@"Database v%@\n\nPress Refresh to reload the database.",l.sourceRevision]; + title = l.sourceName; + } + UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:title message:fmt delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Refresh",nil] autorelease]; + [alert show]; +} + +- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex +{ + if (buttonIndex==1) + { + + activegsList* l = (activegsList*) self.tabView.selectedViewController; + if (!l) l=self.l0; // BestOfFTA + + // Force redownloading of asset + [l reloadData:YES]; + + + } + +} + + +-(void)updateView +{ + + CGRect rv2 = [[UIScreen mainScreen] applicationFrame]; + if (abs([pManager getAngle])!=90) + { + float t = rv2.size.width; + rv2.size.width = rv2.size.height; + rv2.size.height = t; + } + + // Ajuste la barre de navigation + CGRect rc = self.navView.frame; + rc.size.width = rv2.size.width; + [self.navView setFrame:rc]; + + // Ajuste la position du loader + CGRect r = self.loader.frame; + r = CGRectMake((rv2.size.width - r.size.width)/2,(rv2.size.height -r.size.height)/2,r.size.width,r.size.height); + [self.loader setFrame:r]; + +#ifdef ACTIVEGS_ENABLE_DOCUMENT + // ajuste la position du warning + if (self.docList.warningLabel) + { + CGSize s = CGSizeMake(rv2.size.width,rv2.size.height-44.0*2); + CGRect r = CGRectMake((s.width-LABELWIDTH)/2,(s.height-LABELHEIGHT)/2,LABELWIDTH,LABELHEIGHT); + self.docList.warningLabel.frame = r; + [self.docList.warningLabel.superview bringSubviewToFront:self.docList.warningLabel]; + } +#else + // ajuste la position du background + CGRect rb = pManager.backgroundImageView.frame; + rb.origin.x = (rv2.size.width - rb.size.width)/2; + rb.origin.y = (rv2.size.height - rb.size.height)/2; + pManager.backgroundImageView.frame = rb ; + pManager.backgroundView.frame = rv2; +#endif + + [pManager updateNotificationView:rv2]; + + /* + activegsList* l = self ; //(activegsList*)viewController; + if (l.sourceName) + [(UIButton*)self.navItem.titleView setTitle:l.sourceName forState:UIControlStateNormal]; + */ + +} + + +-(void)swipeLeft :(UISwipeGestureRecognizer*)_rec +{ + if (_rec.state == UIGestureRecognizerStateEnded) + { + + [pManager doStateChange:[pManager getEmulatorView] type:kCATransitionPush sens:kCATransitionFromRight]; + } +} + +-(void)swipeRight :(UISwipeGestureRecognizer*)_rec +{ + if (_rec.state == UIGestureRecognizerStateEnded) + { + [pManager doStateChange:[pManager getEmulatorView]type:kCATransitionPush sens:kCATransitionFromLeft]; + } +} + +- (void)backButton:(id)sender { + +#ifdef ACTIVEGS_IMAGEREQUIRED + // vérifie que l'émulateur fonctionne + if (!pMac) + { + UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"ActiveGS" message:@"Select a program in the list first." delegate:nil cancelButtonTitle:@"Done" otherButtonTitles:nil] autorelease]; + [alert show]; + return ; + } + +#endif + [pManager doStateChange:[pManager getEmulatorView] type:kCATransitionPush sens:kCATransitionFromLeft]; + +} + +- (void)infoButton:(id)sender { + + [pManager doStateChange:[pManager getInfoView] type:kCATransitionFade sens:kCATransitionFromLeft]; +} + + +// IOS 5 Compatibility + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation +{ + return YES; +} + +// IOS6 +- (BOOL)shouldAutorotate +{ + return YES; +} + + + +@end + + + +void x_config_load_roms() +{ + extern byte *g_rom_fc_ff_ptr; + extern byte *g_rom_fc_ff_ptr; + extern unsigned char gsrom01[]; + extern unsigned char apple2e_rom[]; + extern unsigned char apple2e_disk[]; + + g_sim65816.g_mem_size_base = 256*1024; + memset(&g_rom_fc_ff_ptr[0], 0, 2*65536); + +#ifndef ACTIVEGS_MANUAL_ROM + +#ifdef USE_APPLE2_ROM + // main + memcpy(&g_rom_fc_ff_ptr[4*65536-16*1024], &apple2e_rom[16*1024],16*1024); + + // aux + memcpy(&g_rom_fc_ff_ptr[3*65536-16*1024], &apple2e_rom[0],16*1024); + + // disk + memcpy(&g_rom_fc_ff_ptr[3*65536+0xC600], &apple2e_disk[0],1*256); + g_sim65816.g_rom_version = -2; + +#ifdef ACTIVEGS_NOAPPLEBRANDING + for(int i =0;i<9;i++) + g_rom_fc_ff_ptr[0x03ff0A+i]=0xA0; // Apple //e + for(int i =0;i<3;i++) + g_rom_fc_ff_ptr[0x03fbe9+i]=0xEA; // System sound +#endif + +#else + extern unsigned char gsrom01[]; + memcpy(&g_rom_fc_ff_ptr[2*65536], gsrom01,128*1024); + + // Patch la rom + +#ifdef ACTIVEGS_NOAPPLEBRANDING + +#define TOGS(MEM,STR) \ +{ \ +char* d = (char*)MEM; \ +const char* s = STR; \ +char c; \ +while((c=*s++)!=0) *d++=(c|0x80); \ +*d=0; \ +} + + + // g_rom_fc_ff_ptr[0x03bb97]=0x60; // Ret == fully disable display + g_rom_fc_ff_ptr[0x03bb11]=0x0D; // Number of space + TOGS(&g_rom_fc_ff_ptr[0x03bb13],"Please Wait..."); + g_rom_fc_ff_ptr[0x03bb8e]=0x0B; // Center Line + g_rom_fc_ff_ptr[0x03bbb8]=0x60; // Abort display +#endif + g_sim65816.g_rom_version = 1; + +#endif + +#else + extern int readROMFromFile(); + + int ret = readROMFromFile(); + if (!ret) + { + fatal_printf("ROM file not found\n"); + x_fatal_exit("You need to install first a file named \"ROM\" containing a dump of an Apple IIGS™ ROM01 (128KB).\nConnect your device to your computer, and from iTunes, copy the ROM file to MyDevice>Apps\n>ActiveGS>Documents directory.\n\nMore info on the ActiveGS website."); + return ; + } + g_sim65816.g_rom_version = 1; + +#endif + +} + + +#ifdef ACTIVEGS_MANUAL_ROM + +MyString romPath; + +void initRomPath() +{ + NSArray *dopaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *documentsDirectory = [dopaths objectAtIndex:0]; + romPath = [documentsDirectory UTF8String]; + romPath += '/'; + romPath += "ROM"; + +} + +const char* getRomPath() +{ + return romPath.c_str(); +} + + + +int readROMFromFile() +{ + + extern byte* g_rom_fc_ff_ptr; + + const char* rp = getRomPath(); + if (!rp) + { + printf("ROM Path missing\n"); + return 0; + } + + int fd = open(rp, O_RDONLY | O_BINARY); + if(fd < 0) + { + printf("Open ROM file %s failed:%d, errno:%d\n",rp , fd, errno); + return 0; + } + struct stat stat_buf; + int ret = fstat(fd, &stat_buf); + if(ret != 0) + { + printf("fstat returned %d on fd %d, errno: %d\n",ret, fd, errno); + close(fd); + return 0; + } + + int len = stat_buf.st_size; + if(len != 128*1024) + { + printf("Only ROM01 is supported\n"); + close(fd); + return 0; + } + + + ret = read(fd, &g_rom_fc_ff_ptr[2*65536], len); + if(ret != len) + { + printf("error while reading not ROM: %d\n", errno); + close(fd); + return 0; + } + + close(fd); + + // calcul un checksum rapide sur + int crc=0; + int l = 0; + const char* ptr = (const char*)&g_rom_fc_ff_ptr[2*65536]; + int nb = len; + while(nb) + { + crc ^= *ptr << (l%24); + ptr++; + l+=3; + nb--; + } + if (crc != 0xFE2CE93D) + { + printf("ROM01 checksum failed : only original ROM01 is supported!"); + return 0; + } + + return 1; +} + +#endif diff --git a/Common.iphone/activegsViewController.xib b/Common.iphone/activegsViewController.xib new file mode 100644 index 0000000..0c6953a --- /dev/null +++ b/Common.iphone/activegsViewController.xib @@ -0,0 +1,110 @@ + + + + 1552 + 13F34 + 6254 + 1265.21 + 698.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 6247 + + + IBProxyObject + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + {320, 460} + + 3 + MC43NQA + + 2 + + + NO + + IBUISimulatedFreeformSizeMetricsSentinel + Freeform + + IBCocoaTouchFramework + + + + + + + view + + + + 7 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 6 + + + + + + + activegsViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 7 + + + 0 + IBCocoaTouchFramework + NO + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + + diff --git a/Common.iphone/asynccommand.h b/Common.iphone/asynccommand.h new file mode 100644 index 0000000..20460f5 --- /dev/null +++ b/Common.iphone/asynccommand.h @@ -0,0 +1,24 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import + + +@interface AsyncCommand : NSObject +{ +NSMutableData* _data; +NSURLConnection* _theConnection; +NSString *_url; +id callbackObj; +SEL callbackSel; +} +@property (retain,nonatomic) NSMutableData* data; +@property (retain,nonatomic) NSURLConnection* theConnection; +@property (retain,nonatomic) NSString *url; + +- (AsyncCommand*)initCommand: (const char*)url withObject:(id)_obj withSelector:(SEL)_sel; + +@end diff --git a/Common.iphone/asynccommand.mm b/Common.iphone/asynccommand.mm new file mode 100644 index 0000000..20dcbc4 --- /dev/null +++ b/Common.iphone/asynccommand.mm @@ -0,0 +1,78 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "activegsAppDelegate.h" +#include "../common/CEmulatorCtrl.h" +#include "asynccommand.h" + +@implementation AsyncCommand + +@synthesize theConnection = _theConnection; +@synthesize url = _url; +@synthesize data = _data; + +- (void)dealloc +{ + self.data = nil; + self.theConnection = nil; + self.url = nil; + [super dealloc]; +} + +- (AsyncCommand*)initCommand: (const char*)_myurl withObject:(id)_obj withSelector:(SEL)_sel +{ + + callbackObj = _obj; + callbackSel = _sel; + + self.url = [NSString stringWithUTF8String:_myurl]; + + NSURL* urlnoescape = [[[NSURL alloc] initWithString:[self.url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]] autorelease]; + + NSURLRequest* request = [NSURLRequest requestWithURL:urlnoescape cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60.0]; + self.theConnection = [[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease]; + + + if (!self.theConnection) + { + printf("NSURLConnection failed\n"); + // appelle la callback + [callbackObj performSelector:callbackSel withObject:nil]; + return nil; + } + { + [self retain]; // ajoute une référence + return self; + } +} + + +//the URL connection calls this repeatedly as data arrives +- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)incrementalData { + if (self.data==nil) { self.data = [[[NSMutableData alloc] initWithCapacity:2048] autorelease]; } + [self.data appendData:incrementalData]; +} + +//the URL connection calls this once all the data has downloaded +- (void)connectionDidFinishLoading:(NSURLConnection*)connection { + + printf("callback received\n"); + [callbackObj performSelector:callbackSel withObject:self.data]; + self.data=nil; + [self release]; + +} + +- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error +{ + + printf("callback failed\n",[self.url UTF8String]); + [callbackObj performSelector:callbackSel withObject:nil]; + self.data=nil; + [self release]; +} + +@end diff --git a/Common.iphone/asyncimageview.h b/Common.iphone/asyncimageview.h new file mode 100644 index 0000000..e9f32ee --- /dev/null +++ b/Common.iphone/asyncimageview.h @@ -0,0 +1,50 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import +#include "activegsList.h" + + +@interface asyncImageQueue : NSObject +{ + NSURLConnection* _theConnection ; + NSMutableArray* _theQueue ; +} + + +@property (retain,nonatomic) NSURLConnection* theConnection ; +@property (retain,nonatomic) NSMutableArray* theQueue ; + +-(void)prioritizeItem:(UIImageView*)_mytarget; ++(void) initialize; +- (void)nextDownload; ++(asyncImageQueue*)sharedQueue; +@end + + +@interface AsyncImageView : NSObject +{ + NSMutableData* _data; + UIImageView* _target; + NSString *_url; + int width,height; + MyString thumb; + MyString cachedURL; +} + +@property (retain,nonatomic) NSMutableData* data; +@property (retain,nonatomic) UIImageView* target; +@property (retain,nonatomic) NSString *url; + + +- (void)processDownload; +- (void)initImage:(const char*)_thumb /*theCell:(UITableViewCell*)_cell*/ target:(UIImageView*)_target width:(int)_width height:(int)_height; +-(void)loadImage:(id)_sender; ++(UIImage*)processImage:(UIImage*)_img width:(int)_width height:(int)_height; +-(void)setImageForCell:(UIImage*) _img; + + +@end diff --git a/Common.iphone/asyncimageview.mm b/Common.iphone/asyncimageview.mm new file mode 100644 index 0000000..fac4426 --- /dev/null +++ b/Common.iphone/asyncimageview.mm @@ -0,0 +1,380 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "activegsAppDelegate.h" +#import "AsyncImageView.h" +#include "../common/CEmulatorCtrl.h" + + +static asyncImageQueue* queue = nil; +static UIActivityIndicatorView* asyncloader=nil; + + +@implementation asyncImageQueue + +@synthesize theQueue = _theQueue; +@synthesize theConnection = _theConnection; + + ++(void) initialize{ + + // singleton + queue = [[asyncImageQueue alloc] init]; + queue.theQueue = [[[NSMutableArray alloc] init ] autorelease]; + queue.theConnection = nil; + + asyncloader = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; + + +} + ++(asyncImageQueue*)sharedQueue +{ + return queue; +} + +- (void)dealloc { + +// [self.theConnection cancel]; //in case the URL is still downloading + self.theConnection = nil; + self.theQueue = nil; + + [super dealloc]; +} + +-(void)prioritizeItem:(UIImageView*)_mytarget { + + int nb = [self.theQueue count]; + for(int i=0;i 7 && [[str substringToIndex:7] compare:@"http://"]) + { + NSString *str2; + if (thumb.at(0) != '/') + { + // ressource image + str2 = [[NSBundle mainBundle] pathForResource:str ofType:nil]; + } + else + { + // absolute path + str2 = str ; //[NSString stringWithUTF8String:str]; + } + imageView = [[UIImage imageWithContentsOfFile:str2] retain]; // to mimic init + if (!imageView) + { + printf("init image failed (%s)\n",[str2 UTF8String]); + return ; + } + debug_printf("image loaded from resource %s\n",getfile([str2 UTF8String])); + + } + else + { + self.url = str; + + // regarde si l'image est dans le cache + + dl.getPersistentDirectoryFile([self.url UTF8String],IPHONETHUMB,cache); + NSString* strcache = [NSString stringWithUTF8String:cache.c_str()]; + imageView = [[UIImage imageWithContentsOfFile:strcache] retain]; + if (imageView) + { + debug_printf("image loaded from cache %s\n",getfile(cache.c_str())); + } + else + { + + asyncImageQueue* q = [asyncImageQueue sharedQueue]; + [q.theQueue addObject:self]; + [q nextDownload]; + + return ; + } + + } + + [self setImageForCell:imageView]; + + +} + + +//the URL connection calls this repeatedly as data arrives +- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)incrementalData { + if (self.data==nil) { self.data = [[[NSMutableData alloc] initWithCapacity:2048] autorelease]; } + [self.data appendData:incrementalData]; +} + +//the URL connection calls this once all the data has downloaded +- (void)connectionDidFinishLoading:(NSURLConnection*)connection { + + [asyncloader removeFromSuperview]; + [asyncloader stopAnimating]; + + UIImage* imageView = [[UIImage alloc] initWithData:self.data] ; + if (!imageView) + { + printf("init image failed (%s)\n",[self.url UTF8String]); + } + else + { + // process l'image + NSData * png = self.data; + MyString cache; + CDownload dl("***ERROR***"); + dl.getPersistentDirectoryFile([self.url UTF8String],IPHONETHUMB,cache); + FILE* f = fopen(cache.c_str(),"wb"); + if (f) + { + fwrite(png.bytes,1,png.length,f); + fclose(f); + } + else + { + printf("cannot update cache %s\n",cache.c_str()); + } + + debug_printf("image downloaded (%s)\n",getfile([self.url UTF8String])); + [self performSelectorOnMainThread:@selector(setImageForCell:) withObject:imageView waitUntilDone:NO]; + + } + + self.data=nil; + + [[asyncImageQueue sharedQueue] removeObject:self]; + +} + +- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error +{ + printf("didFailWithError (%s)\n",[self.url UTF8String]); + + [asyncloader removeFromSuperview]; + [asyncloader stopAnimating]; + + self.data=nil; + + [[asyncImageQueue sharedQueue] removeObject:self]; + +} + ++(UIImage*)processImage:(UIImage*)_img width:(int)_width height:(int)_height +{ +#define IMAGESCALE 1 +#define SHADOW 2 +#define LEFTMARGIN 6 +#define BOTTOMMARGIN 0 +#define TOPMARGIN 0 + + const float s = [pManager dpiRatio]; + + CGRect r = CGRectMake(0,0,_width*s,_height*s); + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + CGContextRef context = CGBitmapContextCreate(nil, (int)r.size.width,(int)r.size.height, 8, (int)r.size.width*4,colorSpace,kCGImageAlphaPremultipliedLast/*kCGImageAlphaNone*/); + + float ovalWidth=14*s,ovalHeight=14*s; + CGContextSaveGState(context); + CGContextTranslateCTM (context, CGRectGetMinX(r), CGRectGetMinY(r)); + CGContextScaleCTM (context, ovalWidth, ovalHeight); + float fw = CGRectGetWidth (r) / ovalWidth; + float fh = CGRectGetHeight (r) / ovalHeight; + CGContextMoveToPoint(context, fw, fh/2); + CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1); + CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1); + CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1); + CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1); + CGContextClosePath(context); + CGContextRestoreGState(context); + CGContextClip(context); + //CGContextSetInterpolationQuality(context,kCGInterpolationHigh); + CGContextDrawImage(context,r,[_img CGImage]); + CGImageRef imageRef2 = CGBitmapContextCreateImage(context); + // Crée une nouvelle image pour le shadow + CGRect r2 = CGRectMake(0,0,r.size.width+(LEFTMARGIN+SHADOW)*s,r.size.height+(SHADOW*2+BOTTOMMARGIN+TOPMARGIN)*s); + CGContextRef context2 = CGBitmapContextCreate(nil,(int)r2.size.width,(int)r2.size.height, 8, (int)r2.size.width*4,colorSpace,kCGImageAlphaPremultipliedLast/*kCGImageAlphaNone*/); + + CGContextSaveGState(context2); + CGContextSetShadowWithColor(context2, CGSizeMake(SHADOW*s, -SHADOW*s), 4, [[UIColor grayColor] CGColor]); + + CGRect rdest = r; + rdest.origin.x = LEFTMARGIN*s; + rdest.origin.y = (BOTTOMMARGIN+SHADOW)*s; + //CGContextSetInterpolationQuality(context2,kCGInterpolationHigh); + + CGContextDrawImage(context2,rdest,imageRef2); + CGContextRestoreGState(context2); + + CGImageRef imageRef = CGBitmapContextCreateImage(context2); + UIImage* newImage = [UIImage imageWithCGImage:imageRef]; + + CGColorSpaceRelease(colorSpace); + CGContextRelease(context); + CFRelease(imageRef); + CGContextRelease(context2); + CFRelease(imageRef2); + + return newImage; + +} + +-(void)setImageForCell:(UIImage*) _img +{ + debug_printf("setImageForCell"); + + UIImage* img2 = [AsyncImageView processImage:_img width:width height:height]; + + [self.target setNeedsDisplay]; + + [UIView beginAnimations:@"ToggleSiblings" context:nil]; + [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft /*UIViewAnimationTransitionCurlUp*/ forView:self.target cache:YES]; + [UIView setAnimationDuration:1.0]; + self.target.image = img2; + [UIView commitAnimations]; + + // sauve dans le cache + NSData *png = UIImagePNGRepresentation(img2); + + FILE* f = fopen(cachedURL.c_str(),"wb"); + if (f) + { + fwrite(png.bytes,1,png.length,f); + fclose(f); + } + else + { + printf("cannot update cache %s\n",cachedURL.c_str()); + } + + [_img release]; + +} +@end diff --git a/Common.iphone/detailViewController.h b/Common.iphone/detailViewController.h new file mode 100644 index 0000000..491d294 --- /dev/null +++ b/Common.iphone/detailViewController.h @@ -0,0 +1,62 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import +#import "activegsAppDelegate.h" +#import "activegsList.h" + + + +@interface detailViewController : UIVIEWCONTROLLERROOT { + + NSURL* requestURL ; + + +// Properties + UINavigationItem* _navItem; + + UILabel* _diskName; + UILabel* _diskYear; + UILabel* _diskCompany; + UITextView* _diskDescription; + UIImageView* _diskApple2; + UIImageView* _diskApple2GS; + UIWebView* _diskWebView; + UIImageView* _screenShot1; + UIImageView* _screenShot2; + UIImageView* _screenShot3; + UINavigationBar* _navView; + /* + itemClass* _diskSelected; + activegsList* _list; + */ +@public + ActiveGSElement* diskSelected; + ActiveGSList* list; +} + + +@property (nonatomic, retain) IBOutlet UILabel* diskName; +@property (nonatomic, retain) IBOutlet UILabel* diskYear; +@property (nonatomic, retain) IBOutlet UILabel* diskCompany; +@property (nonatomic, retain) IBOutlet UITextView* diskDescription; +@property (nonatomic, retain) IBOutlet UIImageView* diskApple2; +@property (nonatomic, retain) IBOutlet UIImageView* diskApple2GS; +@property (nonatomic, retain) IBOutlet UIWebView* diskWebView; +@property (nonatomic, retain) IBOutlet UIImageView* screenShot1; +@property (nonatomic, retain) IBOutlet UIImageView* screenShot2; +@property (nonatomic, retain) IBOutlet UIImageView* screenShot3; +@property (nonatomic, retain) IBOutlet UINavigationBar* navView; +/* +@property (nonatomic, retain) itemClass* diskSelected; +@property (nonatomic, retain) activegsList* list; + */ +@property (nonatomic, retain) UINavigationItem* navItem; + + +- (IBAction) launchButton:(id)_sender; + +@end \ No newline at end of file diff --git a/Common.iphone/detailViewController.mm b/Common.iphone/detailViewController.mm new file mode 100644 index 0000000..7c3009d --- /dev/null +++ b/Common.iphone/detailViewController.mm @@ -0,0 +1,208 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import "activegsAppDelegate.h" +#import "detailViewController.h" +#import "activegsList.h" +#include "../Common/svnversion.h" +#import "asyncimageview.h" +#import "activegsViewController.h" + + +@implementation detailViewController + +@synthesize diskName=_diskName; +@synthesize diskCompany = _diskCompany; +@synthesize diskYear=_diskYear; +@synthesize diskDescription = _diskDescription; +@synthesize diskApple2 = _diskApple2; +@synthesize diskApple2GS = _diskApple2GS; +@synthesize diskWebView = _diskWebView; +@synthesize screenShot1 = _screenShot1; +@synthesize screenShot2 = _screenShot2; +@synthesize screenShot3 = _screenShot3; +@synthesize navView = _navView; +@synthesize navItem = _navItem; +/* +@synthesize diskSelected = _diskSelected; +@synthesize list = _list; + */ + +- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType +{ + + requestURL = [[ request URL ] retain]; + + // Check to see what protocol/scheme the requested URL is. + if ( ( [ [ requestURL scheme ] isEqualToString: @"http" ] + || [ [ requestURL scheme ] isEqualToString: @"https" ] ) + && ( navigationType == UIWebViewNavigationTypeLinkClicked ) ) { + UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"iPhone" message:@"Link will open in Safari, continue?" delegate:self cancelButtonTitle:@"Yes" otherButtonTitles:@"No",nil] autorelease]; + [alert show]; + return NO; + } + + return YES; +} + +- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex +{ + if (buttonIndex==0) + [[ UIApplication sharedApplication ] openURL: requestURL ]; + +} + +- (void)viewWillAppear:(BOOL)animated +{ + + printf("settitle2:%s\n",self->diskSelected->name.c_str()); + + [self.navItem setTitle:[NSString stringWithUTF8String: self->diskSelected->name.c_str()]]; + self.diskName.text = [NSString stringWithUTF8String: self->diskSelected->name.c_str()]; + self.diskCompany.text = [NSString stringWithUTF8String: self->diskSelected->publisher.c_str()]; + NSString* desc = [NSString stringWithUTF8String: self->diskSelected->desc.c_str()]; + float rr = [pManager resolutionRatio]; + float fs1 = .9 * rr; + float fs2 = 1.5 ;//* rr; + NSString* html = [NSString stringWithFormat:@"

%@

",fs1,fs2,desc]; + + [self.diskWebView loadHTMLString:html baseURL:nil]; + + self.diskYear.text = [NSString stringWithUTF8String: self->diskSelected->year.c_str()]; + +#ifdef ACTIVEGS_NOAPPLEBRANDING + self.diskApple2.hidden = TRUE; + self.diskApple2GS.hidden = TRUE; +#else + self.diskApple2.hidden = (self->diskSelected->is2GS); + self.diskApple2GS.hidden = !(self->diskSelected->is2GS); +#endif + self.screenShot1.image = nil; + self.screenShot2.image = nil; + self.screenShot3.image = nil; + + AsyncImageView* asyncImage1 = [[AsyncImageView alloc] autorelease] ; + [asyncImage1 initImage:self->diskSelected->screenShots[0].c_str() target:self.screenShot1 width:128 height:80]; + [asyncImage1 loadImage:nil]; + + AsyncImageView* asyncImage2 = [[AsyncImageView alloc] autorelease]; + [asyncImage2 initImage:self->diskSelected->screenShots[1].c_str() target:self.screenShot2 width:128 height:80]; + [asyncImage2 loadImage:nil]; + + AsyncImageView* asyncImage3 = [[AsyncImageView alloc] autorelease] ; + [asyncImage3 initImage:self->diskSelected->screenShots[2].c_str() target:self.screenShot3 width:128 height:80]; + [asyncImage3 loadImage:nil]; + + self.diskWebView.backgroundColor = [UIColor whiteColor]; + + +} + +- (void)backButton:(id)sender { + + [pManager doStateChange:[pManager getBrowserView] type:kCATransitionPush sens:kCATransitionFromLeft]; + +} + +- (void)launchButton +{ + + [pManager launchDiskImage:self->diskSelected pathname:self->list->pathName trackername:self->list->trackerName]; + +} + +// IOS 5 Compatibility + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation +{ + return YES; +} + +// IOS6 +- (BOOL)shouldAutorotate +{ + return YES; +} + + +- (void)dealloc +{ + + [requestURL release]; + [super dealloc]; +} + + + +-(void)viewDidLoad { + + + CGRect r = [UIScreen mainScreen].applicationFrame; + self.navItem = [[[UINavigationItem alloc] initWithTitle:@"Detail"] autorelease]; + [self.navView pushNavigationItem:self.navItem animated:FALSE]; + + [self.view setFrame:r]; + + // Rectangle +#if 0 + UIBarButtonItem *browseItem = [[UIBarButtonItem alloc] initWithTitle:@"DETAIL" style:UIBarButtonItemStyleBordered + target:self + action:@selector(backButton:)]; +#else + // left Arrow + UIButton* backButton = [UIButton buttonWithType:(UIButtonType)101]; // left-pointing shape! + [backButton addTarget:self action:@selector(backButton:) forControlEvents:UIControlEventTouchUpInside]; + [backButton setTitle:@"List" forState:UIControlStateNormal]; + + // create button item -- possible because UIButton subclasses UIView! + UIBarButtonItem* browseItem = [[[UIBarButtonItem alloc] initWithCustomView:backButton] autorelease]; +#endif + + self.navItem.leftBarButtonItem = browseItem; + + // Swipe left to go back to browsing + UISwipeGestureRecognizer* grswipeleft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeLeft:)] ; + grswipeleft.direction = UISwipeGestureRecognizerDirectionLeft; + grswipeleft.cancelsTouchesInView = NO; + [self.view addGestureRecognizer:grswipeleft]; + [grswipeleft release]; + + + // Swipe Right to launch + UISwipeGestureRecognizer* grswiperight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRight:)] ; + grswiperight.direction = UISwipeGestureRecognizerDirectionRight; + grswiperight.cancelsTouchesInView = NO; + [self.view addGestureRecognizer:grswiperight]; + [grswiperight release]; + + +} + +-(void)swipeRight :(UISwipeGestureRecognizer*)_rec +{ + + if (_rec.state == UIGestureRecognizerStateEnded) + { + [pManager doStateChange:[pManager getBrowserView] type:kCATransitionPush sens:kCATransitionFromLeft]; + } +} + +-(void)swipeLeft :(UISwipeGestureRecognizer*)_rec +{ + if (_rec.state == UIGestureRecognizerStateEnded) + { + [pManager doStateChange:[pManager getEmulatorView] type:kCATransitionPush sens:kCATransitionFromRight]; + } +} + + +- (IBAction) launchButton:(id)_sender +{ + + [pManager launchDiskImage:self->diskSelected pathname:self->list->pathName.c_str() trackername:self->list->trackerName.c_str()]; +} + +@end diff --git a/Common.iphone/detailViewController.xib b/Common.iphone/detailViewController.xib new file mode 100644 index 0000000..8d56f6c --- /dev/null +++ b/Common.iphone/detailViewController.xib @@ -0,0 +1,517 @@ + + + + 1536 + 11G63 + 2844 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1930 + + + YES + IBProxyObject + IBUIButton + IBUIImageView + IBUILabel + IBUINavigationBar + IBUIView + IBUIViewController + IBUIWebView + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 287 + + YES + + + 269 + {{119, 435}, {78, 37}} + + NO + IBCocoaTouchFramework + 0 + 0 + 1 + Launch + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + Helvetica-Bold + Helvetica + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 293 + {{129, 53}, {62, 25}} + + NO + YES + 4 + YES + IBCocoaTouchFramework + + NSImage + icon_APPLE 2GS.png + + + + + 293 + {{130, 55}, {60, 21}} + + NO + YES + 4 + YES + IBCocoaTouchFramework + + NSImage + icon_APPLE 2.png + + + + + 292 + {{8, 53}, {114, 21}} + + NO + YES + 7 + NO + IBCocoaTouchFramework + Company + + 1 + MCAwIDAAA + darkTextColor + + + 1 + 10 + + Helvetica + Helvetica + 0 + 12 + + + Helvetica + 12 + 16 + + + + + 289 + {{238, 53}, {73, 21}} + + NO + YES + 7 + NO + IBCocoaTouchFramework + 1988 + + + 1 + 10 + 2 + + + + + + 274 + {{8, 84}, {303, 278}} + + + 1 + MSAxIDEAA + + IBCocoaTouchFramework + 2 + + + + 268 + {{8, 370}, {91, 57}} + + NO + IBCocoaTouchFramework + + + + 269 + {{114, 370}, {91, 57}} + + NO + IBCocoaTouchFramework + + + + 265 + {{220, 370}, {91, 57}} + + NO + IBCocoaTouchFramework + + + + 290 + {320, 44} + + NO + IBCocoaTouchFramework + 1 + + YES + + + + {320, 480} + + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + detailViewController + + + 1 + 1 + + IBCocoaTouchFramework + NO + + + + + YES + + + view + + + + 6 + + + + diskApple2GS + + + + 13 + + + + diskApple2 + + + + 14 + + + + diskCompany + + + + 19 + + + + diskYear + + + + 20 + + + + diskWebView + + + + 28 + + + + screenShot1 + + + + 32 + + + + screenShot2 + + + + 33 + + + + screenShot3 + + + + 34 + + + + navView + + + + 67 + + + + launchButton: + + + 7 + + 9 + + + + delegate + + + + 27 + + + + + YES + + 0 + + + + + + 1 + + + YES + + + + + + + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 8 + + + + + 10 + + + + + 11 + + + + + 15 + + + + + 16 + + + + + 24 + + + + + 26 + + + + + 29 + + + + + 30 + + + + + 31 + + + + + 54 + + + YES + + + + + + + YES + + YES + -1.CustomClassName + -1.IBPluginDependency + -2.CustomClassName + -2.IBPluginDependency + 1.IBPluginDependency + 10.IBPluginDependency + 11.IBPluginDependency + 15.IBPluginDependency + 16.IBPluginDependency + 24.CustomClassName + 24.IBPluginDependency + 26.IBPluginDependency + 29.IBPluginDependency + 30.IBPluginDependency + 31.IBPluginDependency + 54.IBPluginDependency + 8.IBPluginDependency + + + YES + detailViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + detailViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + + + + YES + + + + + 67 + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + + YES + + YES + icon_APPLE 2.png + icon_APPLE 2GS.png + + + YES + {62, 23} + {62, 25} + + + 1930 + + diff --git a/Common.iphone/disk_35_1.png b/Common.iphone/disk_35_1.png new file mode 100644 index 0000000000000000000000000000000000000000..14a5fafd837a135c1e23acdf2018a9e0c9d96b4e GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^xnIyqs7P)K8C^D>ti?3eux+&#R&wL^u&cA@0m zsNL(`Ogcp^ZaPLklK!=dFW1}UmTA=wvBt7v<&)m|eQ`B;ko|7==18eoH=f^Gu;F*f zpY40qhK@yhD`|EEWL3A=o!uekH}&M25w;xW@MN(M*=9g z(bL5-#6s}s6i2=z3LLICCq@?jzrC$aCn{KAmRj@dsCge8nG27uVEW8GONfoPV{SvJ z^K#dYBO9MBZ1`uod9$2v6H7zmV|SnIJGN_29`p^`b3-juP2#J4=*`mZgPeDn?YiB* zFXH<)ErL7wu4&bkRq=&yWZv#yyIf2A%dG$V;`5)si!JB7`z|@|?~U{?H<_Y;->6@D zJG#O2Xtb*6tegA4o;FSko$BWoH8;ZZ$61$iZO@paR~y{=x>YF^6g{4cVua+y7=Zi>hJM;{N2K=}*?1T=%S$yg%>vIsFXdl8!FpzBtBj(9mFJ=RmLYu&iZXZ0q!2I-PpH`y1!JEl(6&q}NomyxUb6 z)i=0(X_J_#PWD{qyT7M7KYX}%f2v>0iHpBYKmPn&zsd5a s_T1Ac(LYPr|8j3=pQ*aIVA|q*K`)7Tmd?%1K*uw9y85}Sb4q9e0GIK7SpWb4 literal 0 HcmV?d00001 diff --git a/Common.iphone/fta20-ipad.png b/Common.iphone/fta20-ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..ef98f767dfc935d9be97c1e8b6854c66296e3ad6 GIT binary patch literal 41440 zcmdpd1y>!v)9_wgi?q0x;>E4F6)5gd+}+*bQrz3(?(SS%Z=txmOL2GChu`}t-t*5n zvze2VO=dE(li4I(QC<=qg%AY*0CcHuUzGs>_6>ytklvnvvz+1bTZQcKP16|wm?-}P zkVk=#+gmRpOEED;MGJcuduI!K2XZMfF>(hddoxQLQvmQ-G&V5ET;JQ+8vF!>Dk`cf zZ;@`{6JQY(K>acUq61O_{wox$%}r2Na%kv(II|FQ0tknNjm4+67upYnLLD^cCVB=E z0yvDR|8Tc&KiS{f z-}<~)kg^hg>jN9;>?dNXWacFi{v)TLpx}qGw4ZXRsDr7al$Bl04|6>yKP3@AB_k;- zl(){)?-1UKUeXgb{O#Xiet0nzH3a&=uzp&2BvdRxBv!a@OpNq_h*YqFKp<`)nHW_! zeF$RIWRz0WC4Lqg0UIZauFuz1=BjV7}X8f(M4>k^IIEk&FR&2(9ukuzMdxaVlxodde{?iK)e0*s^ex!cMI{H%JdJw+f z#{R>6H1*mdW_J0v=OeBIBbs)d$9Z4DyCLe&{!Nn}YKI4D)~<7$6`jo!1}c3!h}snm zaw{)}MW>Z&-d}DCPx<_WpAB|%<|LnD>;#$oa&NZcrdG`x(&Gfy{QgZ9Gz}G1YUyaZ ziCvi;R#dr9p02i?Uamtar~1mW=mpd6MbAvPlNFuZOky+nthurv^vK#<-Q2_ur5CHC9-|Bq;aAg620|NlyO$Gow z```LK5&)1XB=uE9)noBU*VW*IB;M=siRH4uPhl|TGF4NnO1AKX=t?mIqboDxbu6yd zB1{k6$;k;W)rnUF-x`^B(z5Q2=m}E*+|KQ_wKD^xmHm|aa%Uv%79R#B0uk?X1q_Nb zfbzcr|3j?&CzAgmcK(N0`Ja=F7W{{J;KToSaLWU_g0andMAQ;RHlT4ME;4dn%RX}t z!G_9z@{!x#>G-qbstR9=H!RdwyuM7s(x(3v*?`%jO^#|;@K4pQrZmv%jc)TC7%}P_ zu!Jg13p!E{0DEeboGoK`P!u$DXfo;}_WNX@jQN6vG{D$U)^a_uo}y98LtRCfFNH85 zW-~=l>7mCZ0u`825r9@`6azDk<@Y7!oOGZgYQXO`GD0y!V(=0Gc&NbbiiC_v$f{un zY*EKWxp38Zz4S6g(u%sh`a_H@?9$-U?w-4~?P**scSncHa|{h>z*|Y(l&qrghpOZ+ z*0L~c=mHktu|bGa&=O8Fn0O)ZMlLC6@U!{;luYsG8S%DGlz3o97$EjbLQx_4+X0^q z=RjyEBsSFUF7>tF^GgDXnr;^)ZP>r0{f(!P&YmiUDNlMeSHv}6`}3&;Y^WdH_m|}x zHk>lvz+-03mm9YnxN4#t_0G}=k39Od)x55ZvyXip0VAVz}A+}#Anzp@h%84kqn9=|uCY9^i zMRl6$pcP|~x!+G-;v)s*b%0QYRA4R3N~B)>HRZly>-<4l8hk(q0yhmTs7_na=;<11 z$gFzzTe-SQ6w6S>l9AP{Hck@B#Id1rL=ATL&B@3YOln$O);dMhDS9IWtx&Yh{7|q> z538(L>;1W?bD4_U@Z-Q$Tbl>gMI3%V{M>OslhD+lyLhkPfGWZGQOW6XcKZ-H1;N$e z`&X0i*{w??4@2-=?|E%bC6U*WLTnmb3x`snr5}Eh`JZnMSX=(BvK(rtAoNsBsib$R zOc!u`(Gnz@Eq85A_EJOLKO6OK7;VxEdz1IKf~UVbC3~*XWm*wTCx0`a=iu+^EZ3TS zX~ha!osiD^-evG=Ac;?93M|fUmijE^McQUsd#TI6&H9pV^{5ku3~qiavRT8Sa>YF{b;G@ZtJ#TEc!d5G$82!QL8zQW8_|JZcBDI*=<0D znV0Yl?NPS<2BYcCeG-nib&POpWo}Piw%bv%we@KKrfnhbXy|zsT-sM=IbXU$IL+b6 z^KZjmR#i7fezjP32iOQNI1Z1~w$6P0cb>(-=bKAH1vXB;lrc4@oNaIt?rCrGyY~cM z#0synTYh5oEWIx40S+Xjq>IpiC0BNObR#miiNH5ged2;lPGt^-@G6)78~gf9OgB`CC4(RzwvIPpQ zt|dYRRy6Qxn!Wx&D#E!c*ceC&1#obq93(eAy8N2PCCPk}z)` zkko%WU8-+Huo3{_uBLR8@hCl&oU;L8nz_C}Pv`ojBA_Vbwh}J-E_9_Pzza(n2z6{h zc_~#%|Fyc=4FDs!homg$%nuwN0M)5VUX{V$^j|dF#gNy(xTvvCp$)t4U_Cy<0*iLO z*;}twApkgBBb|O5Qd+#wN(V}ZUX`jkcJdcxo@bB&>-*`55>M}G!cgfLG8lH^N;%{m z+!!m78fMez5Y)GGNuJXeX`i;52|k1EwO=eeSY(AxIrQHN-w!T0$|tZ_Nh9;O-c9ec z6kq$Q{nkk6puEU-j$K%S2Qa-KKzlFl5mwt_GNU+gJcU*tZ>()ABNr6_wtTCZ^6y8> z#%NisFyI5&=V!Y|&s2EewLm`6xj=J982h#j|hA|a6arfdQouEg$FQ5PPTM-QfbVs%e-volC^ZHTmt|~-!h;56uq3VKK0 z%G9}RT<<&CIKDU#xBUdV5uo?lg{ zD<{+J?qSN8A|!5L%xALP_Zjq`Msk375l7c-zk_$6$`+nUq}sJ~uRSNnAI%B#!G$hPop5qvxSqQzU@!P0USc8p`-DI$q$;E}lKO zoMc<^Z@}K^;a9zemZ_8i-lotJ^S1XG+o7<4*W3uyao=d}IiKBhPv4!TXu6hHN!&FI z*pig&i=i4FmmmJaS|yJyy!<+|lJabuM7+Ys9;OJR%6_*R^UgUo;mgaku8~(`=Rx*U zCw;1OM)>nhQeI2e5Z#-8^ihP?-^cs4`QI3SN-7Rw`H~S%YH5J=U0zj%DiDxM ztk(1DM4jur=^_nIO+%=22>~55@leX6J0Hq&>f+EnMjE>(@ovBN*?oMYHFQc|Jni;L zu0>VsVrEOaOVpgZT%|$aV;Dufx2jR|(ff&A66N@~)ak?b4qScXf97^$9-Y}6TAiSw?W z4X;Us?OKOFY(`wsx$Ea`r;Ja4BikOb*QX^WZ*c*B7mkpven^Ol)3J4N=ptiFulI)`M!=_6a<`VlQ2CnVH^5u ze0=G`_NQUsY#1Hz&!7VC=QRH-g1261K3w}VppkF>vI$5rX&GC!+EaL zdIe-!5JMbdp3y+lVWYY6kIC~bFppR(A0hNkKY={?mw%5+ShxaSk`7^-BLgJUBK(p1|MEs{T- zOpi{l3XswuwAN4VW4xqg{I%gL<`AaN3YMU3Ds zFRORGs(0Lty|XUh19v3YMriKWQGhO(KS%OoBLf}@*x4;gpLw^9tzvrqMNN#}8jfHr z`q?~?1C<+}PBqRi1ncV~P@>P1-LXZHUJ+2&!=>A%YDpbC4nDeTC*DW0(hcLjxwTL_ zO_O-F^0}VT-Q0vunaHY1r9|N{O42&w<Eoi%b4FEd3?AdqQ$0V;s*yC95DGwA8l8;4Z>XcQgVJ_HSAaZT$AP95 zOZAHKEJ2BD%D%lOj;R};g9)p7SLZ~&<-P)BHN1hGd!gQ3wvQBNTzzcMl1o7AU*h||bm%u9sMhgf@%h;=Hsy+tj zmL;oJMkaqMyi(&PEk*GD(~X=MTxoCM`6r*R)3ziL8;ZT4MlKxgx-l}Vj%B~;t=hf! z5_Uy?_8zEXqq4eCC^5b8AKb#l!9oVt)L>p)bK;}=%zby=!P!tdX}LVa-ByPA{xOH1 zl&eY|Kk~J%O}JH97d;T{vK~|dDB}L!KGc!`7cmNoECQ))HG~hL|J3=0nAF4amfBEi zlrB{0K%X58=}XE->FDeFK9%hu?v_$`5j{3di<;>%Tw13l%+lX0T+|~eP?Z=mBRh0h ziI&&-8yfbo7SM+$OjRktd^d8>5s0WH_~BRIvXgaYWno^DknW7DlxL-}SbaO9UlBc> zx>}MssuAgvSwM-)Gts^wPTE*{*5OF=Hg^qg5xqu5(v@Um>3KO#`WiJ@1Y38y6IUeL zD(-2Qo5P#^S}A;gYKeaLF#nR3A^1|DM6^h4JDB;n5Ux5k(^PevUYDUH?=Yeqh70}oC%F1NA)H+>JVqs^+ZG z+txiScM_Qo%WvpZ%0wPL`v$-MdTkq4uPZ3E#n*j;r2Kj!LcVOkjx-r)GL_@hQG*f9LjowyW$& zjV1&Tyk7p5XTHf6iLTtR`SI=3BNG8J z*kM)mG%fnJezMQm5qM@_RVTk2D_cXKCf1g(x8a?8<})!xsCFBlYLBE>NpLcL|7BdO z;4xCj-iA|vxNDiXi3(-8K5PnE&iO?ck1}oEP>%PiiQvlM-O)78Ia(WO57F?<|L zEY{}FL7JoHc4?nNu%5doS?|s=)^2v5u$aka_>`%_QTs+0oXuCCDC^%9JWk&KG$g6W z)Bn)s8hRaMUix4uRU7@E`hLsM-nK4U8}Jhv(+U>6|2egaCAhYSM4{eVa#Dv+Z9_PF zZ`_v$XQhF0__Up|5p`SdQ{aw7VdC$-%LpAR|IY9^vTcfMfWFm(v`gfq$~+4zIVCPJAE#y4kFhJ0^FA zN^3Dh*Xv<2K9BCVgCn>#w8%>TruNw%ZCu;sTyjD>G|y-fJW#ZD8yuP&N;9X(c=<*T z=o-o5IB17dGhYm&(;83aD-=3cV?UsHwXYhm;D2SW`eQJD$nl$ZxvWWtA-@urYH*e7 z?3p`1<~_(D`9d!y{#2Uchlu_72W!+w=SwFi2ph!78C5!n?b+w4RbA!}&+8*^kLJL* z=2%SZLaN@8$N5p-DWa<64AQH&9N#N45ufj*c7ZlYxGdY3`(N+%>)1%~{2s;S7bdeK ziy9m4!C8&5NsVP`gKBhfL*ENUHv#e>AS$2AZEt7m=OVdleHhTk8?9}*`GF!xMD6pU zkCdOfgtV2ik+fAN!g_D}%y0w@D&CHIcWW(e9sw6xT-(-0TZLFhcxmMz-Ls9~-tPNP z3XGr0K;M-~Mh2q1`UbbT>?gQWz=M3Wb$TA(9KcycEhvPz6n{g`V8vMRzjXZfLAszzoKaHq9CbVBd!5N2dGDeG^k& zSnHmcbE>QkL84qIfw zzZ_A57iW4_y61-G#+dU1iUwkeaEz-@?z{>_0>A#@fHt4 z<9Dh%f^+o@36boqj)EPgnS0%@xyb5v#`yC1bM;j7b1hPkVXb|rHo_97^d$BaI|Op! zgc>0oQO7G_4~)C$WN~Fu7tGZ5G8nBCS0Y*mPY+l{KXuP=pIB|f86?-Xpc8PPOs!Zq z793s^Mw)t)t%1kK*S-FT2yVoWK-#|%gV1Dcv0r-rx^wf0`&&Bs{wSjBbEZYVQbW^gr2aYR;Ksm=a^XzVnaA%+dKV0L!gyTT&DrU}R)85>G?ScKcelcC=@hX{rUVX`z_U>F*_p`UBi=?J0Cp6nl z6uE99cwb=_IDG!YjT?D@0G*@wzIdW#K=`kps9SW+4Q%i!B|G9g-Lqj{2e)T6fgPiN zi*Z6?(R`+Vr2Je;WN6b88R=#VAy!X3Fx!7or6tRX>VpdSvELpbQ{=lG|D>0PX>Vz- z9{uo*%72WABtb1Hc@|=>9tPzL^kK{R+XzZsZ9~QB5khGyCx@N;r8mpWX3{$>;YRD6 zv9@ZzEMU;|uvBNJhL*8?e`gthDSFjPdJY0p+#qwH(S~zn-M0 z>X>S}o!<0P8?!L|dtiQF+T^b%==Km*jUwKISFbbuAuOhokCPM6frtlc#M~BE2q}!M z+-RfT`nMKkgJbv1+US{ZE05Sl#|vHc=(BJ>j<-HN6ha#=fGZ9gfMPzLvWbhkrBq9j z2mO?R93h2o3#`Yzm+1C-nJpqz`}29)VCPC{gC&ox^#T2YA587e;D{|m1U23=gy6^p zPl)o_szd0@{keSIS|><<)*o-*xWUOqJ$;VD6ul!cmhJEy`F-sB_;exAbx-E-m+JvdT_rnMuFZOL3Pg(Sxh6bc(xK~>Y92V62hJ#M9 znA!hum_;13IxpVwMF;#k&E&Ro9nj$)uZ;hA052YdY4lyMW8ur+7uvB_z^3SpwQE3q z$vKv-seDH;veJcy^D+KCU|$tQspaU_+wp+*^~hlxV3p;Y%#8I zO)PikJ+JRU`CwvT^Ul~QR&>(Cls@`R?U;c$GRLRty!3&9Ix!$?Gj(sFaICa^&IiFwmktpD+7D=#WW)Ff_a@q2Q9we*>9Kj?!o4 zFUDA{!Pwcvn;;v9J^3Nq03)=x_c3tdksdZ>U-&rEJ=8wdS@d6NO4Qg3Sce3Q{j@ru zz0+xt!Ku$sl20|rIpF557##>v$fCn)rr8;p+PF)sbBUr%fh#I}FWUdGlh|#TOUe9- z3m&5d<)0xFPX!ECGhaz^OW~9w22?Rds#9%x1#yEr zx^zp5mM!W$mz}0^cjHqe<_Zzmi=rWfPojE4^rghjLg)^(@-2N?L73R)^|uw)g<`nn zvw)il%r`?sa2QPA$#d6aC(jj4Cgw$S;4cyF4rgV1j<_rCMy$c!VN#2uC$rJIi`=s; zp7ds!l*`OOuPze?DN>H^x1S^u3R!j?iaDfpUv=olUhOLbl|Tn1R6+P1=Zyy@wIp8m zai7;Sq>;&kUGxEKk~Yr@wY$cSIb;f=WfE&AmXS4H2Djb0&Ira$^*yxBkI8TPhtp=~ zH4+{2u&!HNxGj8SJnL3T{bs#C(|i&JVUqj3KVu&=7A%?bwIR1}Gm7?8Syz>q6A!yQ zBb26!ZT_JI_R$S;^SHC>oRltg6_6GV532+D=guKA9}!2}&92x^*yi@Erfhevux24! zV1l^iaaG=lseOJ#!M)PD@bg?|m?9yY_Qj%17TZLN%=qY3%jp2ZPAV^IOLw8E@qbpr zNgSg6(q$*&JA2ZJg>>LKI#B*O7jXJX@>Cw;1ZUhy8AOcgX4YqM)VQ$}Z|6CWt{9a@ zk+}2PPYFrYXlj`=)(!aedkXw7<_IhKGJksF=>`gJ#_3*tld5fQe?)N#`$y2Nq?;uY z#n&&FsVc}u4_nxx9o4+}O*0b`i!fjw5o7~zY_L5^hwg3Rj6|O&3HoYLOiIcK_o_MaixS!4@W5$N{`~l%Q+syst7rKZ!6ezVTi(te(?0W^?E}atA<49S<}}_yXnZX~9h2<=$oCBGILv*z5uK z(Czy-KQ@2ylMnhXgVi;4nhB;c9P$y+?6G_j65czGU}pIKJO@KF4gG~8i3ejLXdbUx zwd$}logx78kYA+06#e!j$(ZqMH`ADJ^m=-q_Wt-17kG-rhT^`!gIP!86)%1iP(t(H zKDle7yD=EvVjM-EURkOyw`wqMf4jvevulAojvD<+-~rNK*nT2$SsK|1xd9z`pC&7w zMqo(e%+i8m=`f((=qVg_%8@ypVUNV`FH)5A83An7xrzxLDFGF ziGl~d*=E8PD{#3MMrDj;HO^DtNwSllhQ6-2+^pz?jD@Sg2v1xyI1Vv~{lQX`TZG%u z6H2frrVF{x;swFk*%=pndji&DYi0G|(0=-!56|3PbzuiMU!#Rb*x?+b{B*kL_|J>% zY9>M~%MtcwKKYdmq_xU*_s0ux|1}Vnt@`s%j;IABJR8!3m|?3~*f*8;Wqt1m6<5Zn zO6XK}w%(r_R7}NM^S7$p6b^b84d^}hm#|5%J-!{jWlLD>UWwa3OXUVe5~*5I(tTTd zRj4C~D!&K)Tcx0U?LYt{z{lW`Bee;0#rW?$ zmc-W46nYIJ zi^2t9I?1@0`HtkqN7Dl*aip9G%s!g*hfxljMYE%Rltet16`snlIUL;QT{+vQ0-O)F zuvl<3%L4L4fC>r`FXGS4zx2SmLTiEEy5}mC2n``~m%%c3I1rVl(S_}E%`FteojPej zgw5@_hUzUOP=5r3*C`=n16I*2Cu3UmBTWpcnM_qw1;^9vz#{3lvlol*O$ds*_N)wea035YJK`w8$L{hg|^@?E`me*s~|^>XapDBLHl-1aNn}BF%|5YR#u+qRSKR6X0BF}lG@RW_cV2--;Wo^(hU&K>M{6NsvmfPcL=+K_L zVSkgKMc;(c6x-qZF^x63d}x+RULz|Bl14#YVv@o~5Ez=h;AjGT-DR1C~T`P2WP z`wG4zISyTBP)ps2qX2_osr843-(;`aWAwfG554rf z*MlUN1%fGr+w?vS0BmFM?W7RfV3-ZZPRONyLPDc-rOo$A><5h4Q@el(?SQmYljpIS z@=Hc=fKrpk{T%{4JRIWVy>~IefZhNu2Fl_p-1t^h1a>yt)gmgG&*=F08{9V+w){^o zT259M$5G`!lqCg&9k0>R(2!A)QIOCL{v>_C*)lOPFETg#Wb$FDL_zjW1z{w4L>Mx< z)lUTo_pL=A_$@D~AnN#AC)9Mm^E$yIdMBOa_cZfG)MM0d#d=}2D!SpxSLHnj$j~}# z#RmUk_z*_qGSZP!F-iIP)3^|Hj0QTiqB|g(l%AOK`*-^9l*~g#S=Z5-DIu26pFfpb zR_AVn0pV~2LSyh?&#b^V;(g9Pz8xM2H0|q3X1)jV$r%_~DFo>R1a$S~#?-vMA0H6m z9v&Y&TUtx%3FQp!B-ACew9Mq~loC{2P;nyjkvuiOy~DY+u|ly=4i-iS;oi4mc$Ew zt?HrbtZ0P*>@#AnN5()Ljt%k4+bgBNng%lpV(*Cv~>WQB10d!*e zz~Hchn3OG|S{3ZgO*^Wh9jme;7*!^_Ogqw(O#1pVol4cgZKq(J3YYVnGp-bRPWTi8 zDJiLQsgirq0#mtHvdH)Vymdh+qjf8-UIcR{OkI&i6&GW-c>9-v{eeH;Ll!s97#9lBs1!DLmRZ8u(%I&3aUQdBBRHa;}H_B@7i6Y zj_>T?CR)j$6Y5n>?V&9i*(!+`iYVzxNnNu9I9?-H%w>zTR~snIb`8HXcKS_5h6qli z*@_1ejJLdmcX(fU{)kTDImK;Ou0$!wGJYuiM?jwi9zQ!%^cPZa$3c}C$9K^R%w`T2 zK~<;gH#IPo4jvS*RE=*mvr~Rbh)lBIo-c=l`e|%FjB{}8SB~-=k`PX?&_@mNHv8YY zPLZJR$Z=o)UYu&h(3NAP2B2QEk^8e{pNVA_Mc>0ixegX8T#=j~cPg6xb~Oy_1SO%hwN(S`Zy*fL3jO_|h(@p7kAbO-mtO0HOizfHx3oi{c}>r-YnvTU zF#IhWjtmM4&=gelHG0~XN!px}DJ!_jPF5dDoi)FNVB4=oDGV@GLt2feGyVK>u0Ilm zgfb}k_>DE>QQ^+D?X;Q)hGRWkHYaHyv@v9x4=Nso`GaO1P zTnFO~x~R(?j&FH?bI7;AYr6%GLQBfm{E?*?Q?0D01D<^GU5%!`vavYo!$z}iZ#cIjz&IH>O*PK%ZhfRdptfm*LV=`!ycg*Mt4E`?TL(CFV+ zvqgBXNX=5sF{&*56oVo+M3r`KJ;}<|FnmN;?sW>Yj=M50x6aUpIYex>EZo zert9$(A+NBl2Wen$*NwcM?kbGLxVCpFD&ACj*8rREpedfpJMWxPM0LgQr=94DH=IqE;UAj;AJ_q^U;(F_W9JBqhv#Q3;d@1L^ z%mSOBQpHkz%mo)2$_WW`DX2&na8l~@Yvqv?~ON2H+KF@{>$V* znWQ!uclqPlhxJ*0Y0KiTke#NdG7Z;tg!a|?u4aNx*n>L_zs@E7trcq{q0CpolTyt6B-qCr61D0vcYQxj#+)JxI z7<9(1@xa!2awSy!%7HO%S?8r^VCoe7W7G4Jr&^?l^9-hM0LO~yUY0(fZEcGJ_nuJ5 z9~r6@+j=NV=X`#4e&MD8j}|Vz7#bOL;15HzoNHUel~bPL1YM1NBf$HDnV83oepOK{ z)+zi79X+;m_jJ3^B#cXlo9f@rbqQFV==CBhobC-9$#~zXW@8b)BB#ws3TalV zbviqPkLZE-WiCIflicF5>=bW#7Y%I}^QF#5j5`eC12d=_rX6A33TFBp9lx!HW|7^*Okr|b_KTt{KBslr-W3n}BB$${ z8&niDRE%?#!>Q3@A>Vc{&Gn5^QNJ80avAArfK0$m|@YI#H!J*8iQjSBfc z&M_|Clq_VNe%JotvMJgCRS(ZVsMddo@vAx6N{t?WCeQbEc(`uD22SL(8Z0oUmEqT2 zw1MXa?oNvdG4JNHg5U?M=W?*wu~D9{lv3|;{!&TGLi2skVk-rW&hyPmD+gDqR5&=| zCEqm;2#O!GW0OA>aA0~R-K%!GJ$u)Uz@RLDH1FB7Z>Y0PhONWQ)|Iri*5a{WS`h6} z&+-l$)dQUERT)uv2hH5Zv2)*CMw?&9ViP5Q(9yi@MC*J(0inHHHF=cX*HN(LcQ)>` z*I1ah$oWJmIAejkG)pF|H1q|^eO_?Nh=e)&iJE#@H_efOiSF2~aw@P?X6dC}%geNK z)s3m*Yt!TLU%1A@iHcxr@qv;uILyHWzvqC8N9I-3e~5tQ5R)59Zz7Xv(OQm4}E!xAo^n+i3t1$J5J z({#$i(C6LZ7Wh+$m@hnmG-L__;ed7($(fOtyPfJg(i5ySNRr`Yf1x-TypG!?nfui; zwnv5lG@Fm5FD5y}E=C~R&KO%jE;K2dc%=bRBz#9f%4PnhSLn5O-QN0aolK(}mf8EV zu6iNf>a@Wk%QQ1qIT#T6HuNQLm#Xm>njTgh-1=8O0G_omkhirMKY#}OwAVw^$u78R z;DX;VLt!3;NT(aAoBP!FoG@YbyZ_gmP{ctFB7O{xG|Ek4lr}QZISgWPvaH+c3Q=ga zt0CbB&cZdA(uLetUZ`-c!4^HLM=(KN-Rt1YiX|zI-3~pxkX&O%3 z^IIjm)^a6d)eFD9e7d#LDZ@tq7G94D`F5O3sY!V2(Q#e;PJ~zYN%+Q+Wbmvl$8?5b zfbpv+80f%_#nNiizhtagLMAQ%JdF1`)${VH(Af7La#PVC?K|ZU3w&~ygVB3bEQgrE z8z)F~vfd|ddEqUCbgT?E+Z|uL zQAti#xqsK(F(mvR&!oSgdA4hU6*|`H1f>Kp$rbk2qbKuzE$geQ*}0l?dKq#9${cT= ziO-WgtzR31XaNO?X;ZEre-C0bYUSEdjv-^VqwbL_Hdg z2ORHQK~YQMYbmSKK4-rg$6D+v-*N7-w-I@}42`T;R9}FQv>VG z#WAaKav%7Xwg}(I7xH^*pQn+aoA4Ynw_i3Kq{TQLFO#v@?-8iVqFC8|N4t78DKd0@ zaKr9iUi0N_bbTF;M{amO#MoTS{n8lu`aNZyB3J z*4aD03eMOo=5K7jZ?9?R?{I-APiFXjuh$jMom1Vrp5f&GfdMRo<+iS-R&kh!w5u7Q(w6P_e84)HC=!KC026x=A*(M3Z`!0V zdTJpWOQG0FAeOUHwdhmLdqd-irMr`7R-=~vos?*3`2O!qSfHl|N4;vY=uQ=aa*Frt zDm{>E1}L7UxM~LFzg!xvu?&!&B9l;^UT5iKn6T_{FS3+Pv@Z_klHP2}<)ss# z`M4Hr#;ei9Mfv)#{;JTfM7}LdY%>nM=I(tr_gA0y-aUPU0m6I(9GvQ2K2tzqly-THM1{Ky>{+(;wd1JhZL)k6of<_ybZ7b|-hfs7 z2ccRCEw*FEYZ(r}58*%@m*YFjH1%1~#TsI2yR4Z3T(_H(9t3>vCaZ=}-{UcYk7hnouEHQjk09fm~>k*bK=|`+i7{=&q+A)(y+l?f@aM( z4+VF`j7r{c!Qw%P5aEY~H`la`3(tO2@Upv8Rnp|~NB(*8IVVB=qEoQNn-plHfdx}8 zVQm}Q2~n&g!H$+hlh!|>-E0qj0o7NUC45(5SHi7!nWlQ zqxQ%{h^MGB`H~djcy?h5Ro+tMHx7-YaR~Py^3bG{2zC!wlF5d~vUF2;U%#7xpu@S% zNm+rChkr$B<;RZ78&k{#uCu*jYVeexU))Pc4?{%2Syyi$pnmomG&-C6;_xb?efd{LukC3nTwzy(g{!ZV z$Nz3f;pKK)1jd3{|KZ=Q_giS(+NnIUS*%>=p}c{En9gfjzep z4>Keo7_105bZtI6P9f^l?3SewUB>6Qg%k6kp$M?T{|?Av6MfrsdWBiOj|vOyw0+iY zV^KQr%=1IzXBlV``}*>4N_ze1@1D?D)BpemS7!nJe&_>Dhd{c`MjbL=bJr{;3oSvkoU-LEjq!4mIx7K;2q0ch0pa2Ko8+ zc5mdv^QN~)uUg6N@zqW>`z7~xdTl2HSP}gjxS4SpFDE1R7uWf&lhXwrSp`{Vmq2=! z7P-2;4jmV(%^jKBZ!_peLJf`PuAec#NC6-5N#5=!`gGosruckd3=zVnd(rfH?oT29 zxI4@cWXznwq@oEcDM*9B(Dt%hMVEjP9oKntXA{7YqyLOlMx7G$)kPUBa`QX|1AHaM zOj-%C*$MGZkpq28QKe(bBy5u+E^En*vh7k00DktJc3o~f%*9Z60cY9^GMJizFZ!F} z6?0!r6qYIO2hlr8-FD6?6EsXhix4AFw(hIulJ2=#l}J=^y@;#K+n3yI$wNps6kcjC zNh>hP4Thr{*p!emvcc?dc8(d>o9=4=JxdB(3Tnn(0$ZYG0#XZFJq1bK>07sK5#@~Yp%$y__f#D zqS^b?3!K~C{((N99(4pF=e*|o*#SQxhp{A7!1@YBRMq&vrPplLTd22j5PUNoB8PY9 zJ$WY!VKq*J;9B+Tegf~OJaoU>eCyzzBwP0W<~~sX&QBNcXOE@LZ!i3EGs`Ns6xtUG z629rhK|HBr6S#>yI~9_tGh}<^9LMkY0EosS!uH>vdK;e-c1R2x_%_A%`W7oo3mM$o z5|FjM1Lis6i4OjcqO%OEqU*x&oS?f8NQcrbU5bDL0@B^x-Ertfq)R|jUXYZo14x&I zba!{>$G6X)`8E6Oy{@@t_FB(#FB>J*P$1sSf&2Fyjk%Q`pB(wPYVg*TBdF5o!|aB? znj(3Id6(w$WjA;-DH zuRFJ8+~TSB)NHZM>i&M;0~7DB7G`r>z;?P z&DB*J;ycgJ1aMU8oR~jq0pFY6BvN0;1*7m1VQCglE9%Mr>)YUKU&y_-ooX!v1ANzUW)7rLMtsFK&rV9u54#t&yV&QHS4>v2!t76os45 zTl%BHYkB_?mr<@!N|-?~cMtH^6XVmz@7Ic2T_vx0?OqY>tro>2J@66i1^7HV3>3YE<6bDsp!@byRC= z>LZd(pJBj_)i0eUOd=*GBz^${SZ7hO5ytvp?a(rJGB!BhIg@czm@;(bs=VEueK83N zR+&n!eUG*X_no`QA+g;E zb0>Q#GFQ@wt@Z}k*lm_Q-8}Cxkb05u*)!BcQu(1tw5kdFcn#hBs%y(T|N4usMH#6z z*^d9}$47ussOmaH{fn09{$?PTT?VYasrz`*o3n(>RkwC-VzFyc=WwrFiE%T};=kOn z{fnkNd_5zhPhYHzK9!WWM5$Iyg!{~izN)mLi9uZp(wIA9Xuin$T3`RQJ?CpqPQ^(_JKB#9%{F>xHr{p&vVZ{D@WXp{_l}fN{rc5C?}9G5 zV{ENE{RfKsruE+CSDZEN==QDNOG3W%-)l~(+1va#rqyDZ3d@)0bQaBQKU$1l0@ZX=%!+`)`90S;xkKIB@ zXe<(v%_a1I;`+$)R94L=k~zh!j>? zDQ}|fdHE*}qUKEIY_rfLw=LZ>0#|HuT~*gNvla(-E}ysZB`18lA8|A6>p||ZZ#`Yrc}#CdX?ckKMI-&Rfx`aj zn4=^?F|%y@V6`0RtA+H|Y$O+X;9-hvPvmOVaIRZwIzFBJI7d?>-A?KIbL&)etMzZNpSc=b{(wwVm#u3vWk^P4wgM@sg11jb>^z1~;LB~MD*yQM zy;^RvgrB@R&9B8bd*^v@u;(0IfA+)2Pc82g5%b5|diD2(iH4c=Mg_5)XVEey*xn#u z>j8g!xgmLs5-d?9?hM&^wz4T*svq`R>F1~YjKAnNx*1qc^?Wo=$43xZt38K5y>wq{ z{bHeB6LHxc zNF1LFGWc+=uBV;sCO}Gp?I1WLDf%b>Oi%X%oy|gPF&J)sKCLES9~)@U15mXY?f<^k znDFOK9z`0Nw#?$y*c)Yr)6&C6DY zSLKRgONa+YBO!QSrkUv7lT|?3tFx}7!s6`5k)Dlh+Z;2Z*nNgx!UpkO2ZYF(s8!(zJybn(1uNdb**`UiVKfpEiqlLQ4Y- zKO`2#c8Lz6P+yIP^2fBgI0i`nl)v<_n-C8JIiBY%mp1v7tm|~af4|X~*LL-E^Q`yYw>V?R|-t+;dFg+cB!Q4haKGKQZ&ML=}Gbf z|6jYyGAGdabj+vzk8E+L6%EtTF<~atXR?%JZ=0DvX+uvm9Rs+u5Lv(LC?*qmh#t($ z9R4H9gO2DHsgm4Y$2puy#;m;5hQe(37T-){`qMu(uDE)>3fG8nJ!(}MDI|Wr)JW`T z6^5N-6 zt9|B@$j(4WpbDiOxK1ki4~2}gtpc)U7ii*4NkRR$R+=O`XC)ncyyf5_=sgxrUrSIY zL=)rQ_${is*0H>yEYAQ&*-!@_eA4j=yW>ha0Q_EwnC9#}bpY##Ydp?Yn$4@R8>wCn!KoGHy@5 z2YB*Yakp~7+h0QlSWH`HmqPo3JNoGqAZ$54Y2v<3)Gaoqk>d@YwLR|FN+55X1Ertq zpz$XoIcjd^D%gJiy}_V9{#y>Us$rxPRw`1fn!iga<*S=8M14#7^b4P>?V2e8+L>mf z1~qH$9ZsjgTvF$Ay~g?XN%Ij;v@)0+F`Sd4?j@7qy{BUYMCspsvzc(PoIe}NyVn;v z9J5mn3vLT@ReF8; znrLk>kt{FsY+@0R0RaSNK5u0U`?h}DmXY>4twT{N;uPdkK{1&d!&!m`arhAXo!EF~ z^`Jdddm+pKf5|Yu>yi1U2l6mKN_}^s^OZ2YQ+9)45WK76sMOh~*4wq31Xvuio2E7@ z*2rS>8}^^$5q@zl-i^ELFFiBNHP0y5o53J}WPU)p zpV@{yg|1tRpWvjIFyh_E`D|#s&#ioCXxEyr)uuq!u31*y;GYEafBy!F?_CMW1buK;BlP zH%Ddg>4M_t3LBO<8%n(?h+OygkG;~Nz;laea3hm_l)x&xsP|4^OE%)=NH8V)=Lpr7 zoC%2PaPc91RjXu4fzxtH30Krti&NSCw0TFH+FlgRMZUh8SItzg*WD!vk>e-!KaUyv zn>nF`iIT>@9FpU`f!KQncmrq4;k8ArMyEw&Kp1}v zFOBbFZ4W#8b;GcQWTz(lv|<|>NEa7ze%qi@7?sb`#S`*LLAmV!V@IqXnbP@qgwGiS zOxM*2>3xz?ICA85n>Tkd7~7liwshS5m28FPjYG6Tu#dc|<^|P7#%ZS1_%|@Pe7zsr zM_oxHnioC(d-K&vL&EpXr*F&H&Og6X9pL416JCg@TzS+e^!zyrnyTGjaRiV`iNF8O zuQbY$f;2pIaMxp8f;O^*{8_%fNE<~#El=Mz3;!eP3M6TJzmxY3a6J5IJ=aap*l;yW zn>&FA$Ta0DhEV$E?qhkG(Mbe*K==1^fJwBH|0JP^DzVMQ z=p7je-tsC*Nx<~EsgDxnPgqVIDA(`V1*>x7TS9a=`vw=fdWC;oa%~tk*Z6HZd&X0H zIMCVcK=NwSxwrNWyi)E+!dTv^mskjO$*x{a8h$wr7Ue|%jays8tNv#7;gX<2f^@XW35d5=1Zm(XvfQOGP2zquI1V@e%xYU4vq^j_G*G!uBGkwRyH z`8j?dHkM-S1;XMWK1)Oafs$s#;cfwsF=($H+{{Y9`+^ET575*2@0|!Bk+aDJWW-yLAvk>^FR={jA-R5H z&<3&o;x?d1(rz-rp)z(na1f4={?VYs5TAgdS6fIOB!Nn^5-9-%gCS5bC9VWC{y(h_ zO=MOWF)M@=hRiC^hv3BQ;%0@35%RklZrqCG$*sQb15PSR+y4J@#pS&}>W{iiG5Ct%e7tA0cnKAyd#|Pi!bNGN3tprwrKB zZ7^WzU%l&>d{$G!^{GVC{w|$ALF$T6)Xm9?X{Z$%1nR2B>~du7<;EQ3&MIj(?|>r> z!cAhbKSNnf#zTf`Y4gqLpQ2GBfcFxpT?Die07%jEBm^~x8U}kuEdpzs1onA9m(y)P zs|zR$w=(PgQXT5i*e(b02M#F`ED(4A5`U?koE3SOx{wD07d%L2w|^~O#72@!Ottxe zG=+#>SU;g_M^4A$J)jJ=^F#S5&Yk8k06##ucuoGUr-&7RZLHsWsAy7296#R*-06O0E=9cbpUZIBca%NSXTL>nGjaG($P;GuNU~JNX@DR8lYIqHxgvuWl*;Ow6V56j6?jk;7NPPdn5iVdqF+aA#Pyo(nDAQNt&5y;l>KF#mitNkqcta3&73pGG2JR^NE5}_eVniCU?4SxzfOfY@=>@{2&px0(+uUR+h<2 zY|^yV-v&{07Ut+LCcc``8YQ;>3xRu|t><9b<8R(bA4RX8hR{ z{(X?YGfpc7mIO7cymzNTF%)^jk8;Z0CoTOoSEh$|aZvm| zKHbye_#gx;I9bX~5$sY!4|K$I^dEUuf1vu5DzXV8d}tL=vujNJ%1BTfv84Lr86}Ud zr^L*bA}Ih$Oz&hRh_zvH27({%bm}&Z|5*=dW==RLaXekk1EG?i8L)TKu{L`vWc%g{ zC`X>`VvTIfo_lsx8Jy2GaI(_DUkENsM>!T+xfj7QFY^TlJPD8^+A2o+m|?}qg0ue5 zZ^Qf_6iT%tBX_?FMM)PoPU?mpqlp4H_0&qH?A8a@4i>Jn+FT)zMp7O(t_D9MuWGJD z63|HE?n45tM5i4)*+oAFSZaO1gb|B$z2L?2uOM-ONA)G8hZC}k`kGUCh+kAw`wYgU zl~RKH!tk8Bp1lT*^_eZVWFRVjo!!YR$g1Gp&r@hf2i?q4b;D&&23KObsSFd zy8p^W=Q-;PuJ3H2KIVUY`JbMHQp1{Kq7o-7-X4IohYI>|Xwmy8=Wy^vy!<$NYE6B8 z++DAxtU%?RI(naL`oO%uzIquRHmL@t&gGQKWIsAqc2C0VtDwh7-TQt_i*r4zdb&5< zaX41FZl<5-Euc02)QL*;@a7^$u5zEq{^?lR#()!(29rU;EutM!jficmD4cW4e6es& z_`*Bg+OrbljB+*F7l@iZ?XzTA;&aUvj^G2aBaWZ)`1QJ^MPOZcv1QG#KhG0WBrvR* z+PTI`1)mTgmtenttt&zs!i39}FQc2MckJloWaaacYM;UZyTO4Eh62c>80O!r_W5QT z#JBH&JH2HpyaGDG(MZt42He z+4rU7^N+%`ylZKbFhE-0d#!;vOKRi7o&Qi4y=1w*vz<$5n55duR6|N5wse4g{XNh_3Wu}Dpq$(15g!)nTAksm$FcT^QG(;VV$Vc&Hqit z7S>tWSyKiZ=5&p(s%uG&jk(Y~8D(TldYi zm9VEfWn8$8oW{mayKahcc`{VrMu|1mkB@aWdk><(o3Ae+_K zFhOOOi20^zN$AKNs=&|y4^Gj|9Xv99@g_x2@UH{Mrf^@!l(p#36aqL(Z|+TI|CQ}^ z=>ARj`5vU9)>JF#@PV|j>ka7HM|Mwj{bcOOEdwYYz=)bhwd)SX!%hitTLDS9Pw?X} z*2xa#|IS24&eQ5J)0rhUZD@RU&m}SaWnTZeuJ^NQyU*vYpL2FN|NVpFzG;7s)wfq1 z|DJ2%pGgW{*`gX;Bdnt%CAs!a>cDX+RNxxU536~Z$ueFyUWJgnUy{;8YfO%(det;*!a+qnbSFWp$9~T$aVyc)F0k9IsVpAiHp4jO*EP^OgD}C=iCK zco9MZr9?gvxu6z_0CD2tLI4Pe8rHf*Pt1b~f%$Q05(9&v7|az-PHqY0l;9XMfj(H= z=7&@f^&UsoL2gPhBEl1o3VVXP@K=3B2P4DsHE--5Z`p5-tUeW5$q>r6i|KtDAb3}5 z&D9_XS?S>zJV?iBZWB|~@_7ul<^Xv*0{#JG*f{~u{RH#o^Q5YV$SjYDIx;qZbtN!P9z<0gIpZ=HdS4)*kbEbkx~+wJcI!%YOat z^gI>dTI~KkG;jP!di!1-H{pK9(erpbiRc2kW5>rKNl*nHxreavTVQwlk(Lxl!m2ox z*>#30doG!3!mHN5L90%zvwc!}oP!V%(oRa>YM`{MFP&#HcVSlo!1w2`v*g(DsXeez zPh4G$es_1@-p<~Rcd#xPWNa(Tp#*Bn0)ds7eTo$tt{*+3ZOI6TNDub4x2Dw-67>+? zC_a(NnI47?B065qZ()QL()orbH2r9f`dgAm-hsJCo}FCO8G=)vSe(xD8}y=18lHY^ zahG6tPQSXplhaNzxB&}1lLmxi>S^PTm1c$ubPo^orFz|ZB@dHdgr?V57__^xl^EX+ zlUy>MZxuotYVNu!5tnc3b!ON1YWF9FUjIxW9$0A9`pe@n7taREjtjL9+E`h;oJjPt z6G)FPZW_6X>6#Jm2CYLWYmy+=uhqIipM>Z^N=mu58+38`TsT{FBMo6)R18pHGp$t zNuX(8f?ed^dy(c6%9JjIZn}ovpV*EWZ79^#$S5#L+Q)H+e8SMma^N-D;$z~|mKHUW z1yYd#aDF8*M?9Lnt~72Or05Yd>(r<4ZN5C5`I`w*danx&L-OpQg-9GV`uVVZ!hN)B z*A_sX6az=7xtf>HM#UQRwzXz34SvW;+T8#^HIIT+4upk;ThTddbHcgK$VqW&=q(qG zFI?Sdo{SCAjq(b)`4H3jSG>HqPqoBTZ$|vnf9r4!1=o{3W$#9nQ6@xIH>%MEQhEHx zLIk_L3^tC8@o>y#>34kmC5ER1{_xu@S*m_ixXR{QkVmrXg2UH(ky>dVRl+k4lp#pp;gq)oKM)Zg9?aAc+=NE(+?RsNLsT&4~v7qBV*oOtsh6(u<0*a_}whsFed+m;n5;fRkgk0a}Dk$ z)F*fB-Z#uMX#}Bs_m(Nb?gMM^>#!MgawAP*+&@VTCzd>3?hXNV>^Q(|K!d9} ztd8$j)IWAGZs01MC?6Y;c&u{pztX%`N}nmg4Xa95DEPi?9{ok^8(I}n&~R=BNmvpd zQ$p)}&SIe1o3-foi=jdVphEh-SNQPAed|RRmPHO)HkSAHS|n%mb}YY{L|D}{ojWxf zq{+AJc6PHWm&Zf)8k>qQBswZtBfdfRe!g>g{nms>4)iz$v4bdO>e5*gfuNmSjGlX! z?;Y(ZA1yl?ipr%|Q;%*3$Ho#sAKB1M7)T{Bzt)8w{a8;Z^gUrb*>B;y6|DC5rJzOp zlYbornGuoH*>_p}6iV9IgeoUADBEuP7wo6_F-%Qp^dhLem&=MlO23JvU-pS5GSEf= z+*ABmkgnHSeTG**St@Dg9Q*S#6c+)K3A0VD_d6)%zYiId+HFrfk>jQo7FMPC7o8eM zhHZ3)yo+|SjTq~{or}mU#M+C)i{Q#)Cn94;Lv;75qJGkUE)Zd#S4LZNZN_lN!8E>i zNO84aBKU`o6~+E3Jz;ZJxVn`6d5ivq|N7Q@CQGb5Jw0>e!pUrAu3D>%c(%YZ3`uN1 z;cj5o#G%#{go+Ge)u{c~RV-FZHds&m(bGNocLu62qaAQ~CyFaxg_^3;8a=V6Fl5Ll zP7-EJ43s`M2c>GCNIWxUai^)#$X!{`dT8^3pUx6k9k;{`WnHbh2?lP4Z;4S_rqq~_ zg}R(ESFxaQx#eSyW76jGSuwbobuXiijWiIr4Wk!xv3yeOdL#vcBw$lA%K1L4rfy% zj1%;Kd4c&(U;b9qFwvrAU-i6B*M(7a{EKTft_=p(+Bg_>LL>azC7n>_rR{&?dM5k{ zPg4wyboYL<)02~Y@XQ|usqi(BCUSTd;)ZfQkYeRV5d!ex35_(A@B&j33#(WmdG1m2u-USvBiR{rSbuHR9jx zxrvF22OD`;+@b!t?CfvhHgf3zQseJs=!#T7?%&0!aPV=vgL}a{3K~GeF&ofL(ln`V z*a7xgGO{+;YFhk|fUHXXwu2k}X-(d^Mf%!*t_Gz=mRaU0XUgBI=9zIm%>*2h)3FY| zr(RPAAvmuWD79a`?(m(}K@~9)=ryqFL}%gu8xl)ureb8bL5H9+kXyVynW8qV^-|Bd z=oG4Eh#B4hCGC9RGQMD8#+`P_vcSk1uZGLFPl&XPhR?&Z@980MQGbjyN^>#_*k&!8 z`e_=Oz0KiGZnx8)Byi$tpJ+D5bPyigBDV82D(1FsIPRix^ybkgy}V+sog9Q1X;>o8 zC(K(hD!-plzA`@3v{seeuYYiz%e`{*;-8LbAN}4$W^XM0u>!@E~1hp(O&Cj^8lfSUi1|-|elpp|ixGVq5 z-%?}4pNLQAoxsy*EVH`~nbPt!kdn;gs|&3;Hgn`$poGYoR( z5rtM}34|xhT-<6 zC|X+B8XtrF)>Td_f14m09-!U?jwg-NbRgfW~O+J{JKo7KwU^dc?pWIG#WmAU+R;h z5L$Tx$Jm$+FC!Vcd)U|e9P41~wn}NecJ1CRbMO=i)XiDvZjO8-Vg0%=aEPxA6C~2K zWqQ60k2zXH2JTu}Ty%k8#b!x%-NfAwG$y5FWTH7JuqA}VLLN14pbB1X>144rsk99) zDoszpw?DqA6*u+YsIq3;yC+0+iSEKKS;Vr9URt%R)~^!hHHwsMDl3LeXK^$$tZi4>#~ojwfiK;E8L@-Wiqb`>>x!zygIbwTVM1C+Tm_52gKzhKU4DXFvT+)WElUG8#UHDjZ& zWe>StPJrM-$M=V#!d~EaiEk{*^qmVHqOux=lPGJ%1eA=PPY4V&Owd)sf~h%KyH2jH zn@?Kl;SvJx|I>PSfphqJ*8JnWpGkX-kTVz6ZT~tKow)Jp4YpZ-Y^jVqu`l7OyC_RE zNU4um7LXD}miNboHdKy74KYvD(JLo|SewN1<1?H?J4{)arf!_}&?$uNO`8|-i;Ee; zxUEad$@lF2jEeQ{45Q(izw%<9R=8(}OKqC#92il+ls*T?x6=dcf+zndH~$qewK>HZN*i!kwDS5eqX|fqW_xHT z%k-?bAZhtM!c5U`!7&AAA_+l}JBod~lRYdJ5s0fSsntN(u5)y!?tdKkwj#sdE5O~D z9^TMh;akU}x24PnaCJ8_i;Fk&<_75!2MOg?`ukCDQx}^zxx!^nlA2U)3=w$}E5D4m z6Qcr7d)mFS--JY5z1A`+nv%hy>h7(tHLeaQX}tV`PlM ziSNN`y8GxPgl|}!W0Ad;ZPil;hWm-iDdrlSv>H^t>Q9xg#pwPTSi0Ft<%jpR*S+PU z6ctC=x%_X|Y-yjWMDU#{DeML%3<&A7nYy`OICEB6yqSh?#|R6G1T5i#Hl7}in0mTp zA5Cgjd*4>>Gm(k_9V8ZEpqcLgH3520R}U(J@rPSMB3(URCkk(wqX>gWO6XDEr#3_x zUt?Yr_VR)!2SM;;>tbP$&wy^<>TUFSU|a8J(CaCGj25l7&HCZMz_-j%Sy}NYp@4ks zsA$jeTdVVT2Hcv~LqU^gefckzth(4=Fag!RuvR(=J`lC%s_MB?t|3qE=nLxcTcH~= zZZ9f=*n%@~u7}9uzuw&t+bp6`!NC?q4K2F`BzRg}$B(?Q$-ztbt{DS)*$`uD4=zW|V~B1*G3I=C&2LMjyT89?o~W#w4!t9L^YC3@~@P4b3QX zG63>Ra%o`-8(c}u*#E_;j28q&mKDHv2pycdYr?=66LyN>%Q-zJ#s-kqib$#iNvqrP z=z2dMn_~h}Ik@v&9Ga;M90C1EJruhjpwEZM@}bVt{sy_?{)_yP0XTQ}s14vWWX{vrvSPT8j?F=VnapC}>Crjk&HBS~xo3UDJKmRR~Yl$_A}-Dt5uU*2&D{Ox6+ zOLD82xj%D?3Q9E(xh#by62+2IFY6J&ZW8{ zg#U;bw{Z6ku?0O$5a|OacW*fjyx*U8dvL$Z{g#m=Ao})8!@~fW9O1rLxJ`E=HrSBX($Dnu1hnFRme{IR~ZZ*a4Z^hw|^i+v7uyg$izG z1A>=o*CcQJ8*X6h-i#8lT}2WYf;F9lpEJCT7_5oZD2^&(_w9*IOl$@c#Y-yYuvTAa|1F8lmgXsYjZp1er$m!X}h z9-wimS#u#@np(Nsca<5C)H~)v^1!nM(y?(%YB&M{AB!n(vA!@d^jqh!&1pr}Ohh93 zri%LfJ$rqu}WlZ#y4uA_}Z0X8$@?7sd`0(6oC#NE+L+Pklun6ALS=ucm#Q%*%ND9K zC%=@DUp~+_ok=lU8Ze5WGszFA62FzW>eQ$M>oY+ySA3lptN4-=Y^`GiBXY>kJ&aS8 zA3;iK#s?FGrmjbt!vGuHRx_fPyuJ4Y-=kc4y^rfC{uKa2eErs=r$HMBNdkWEGDfr1h?Fg+ ze^2> zsyC&L=0u9H1fs?~_G3B;N1PtD&;DpYf$1x$az*^n>A$q3UYA=%{Ke+2n-p6o zT*K-Wmaj>So5To|#u?v_3N#o!xghv4iZmEq!J7u=jf`0}j~B!?q#A0O$B-RRniK&& zQOD<;d%x1+bZs2e|2CuJzbN}0Ny+>cm-0Tg-_JL(8Vq;W-oi`92sH2v)jb=M=F7@Q zhT;8Ragw_iGiv0RQ$F7nsl-E8YF6_ToRK~o(KO7&fjcc~3@@~SnG6vOrAk?=I!hRW zdPX>XWBgX)treTomXK_>!u(gHnFM7C6JDbf`pht3vv!f_NJUYpzVo)_%uWJ*_=Veq zkF(>^APhLJ1S-BsIbL{Sfbx*x1`f@$9;x?A(lM~}WGy8zTabRH6ltN~LS)!tOE3s2 zy+&AG0*GgUMI`2ik3!lfLdY@HGtFp0^mOu^%R_4JvSGazuL5iO4Gvk9aYtA(C2lbu9m zl&KX8uZlnat*i3PF1M(9I`vI#cs8^CPrWMPu>d_0#iZM8u^E9`*d`i{h>?~oTnLGa zxJoMLery0JVX1gXRRXC=Y^E?@dlGJCQB5Q@OPQux}O0R*5CixNTib) z@CU2jjAVw!2q2xf(!dSz&h$RAsyM1PPp~ZP%`dldjqJfBUN_$@+m&qB2|ZMLNjZO@ zW*vmT#P$oKsh7f|A#+33ebDNrkG7yp1R0>lxDHEvMvQ9Y(vAls>5KwBfKUCq zH#9LW-!zeXnDR*0{~`CG!dlHnf(3qk(rjF)B|4_i6`y0cuFg{1I1*5zy`0=dDWmLn zzAm|0z8-NT`fFHRU{cYByJXG8Vu=m`eBr6X_!FQ+LJD0-t)YqBXB7av;jTqM`WgNG z?@RinLEH*P;;sZ_bU??HG>?~~RzBd%aRu%y`hQ&ZY)(HU1e$0*?Uk^LKW|;Fp#BM# z1{m9JrWKWEL|O_a^Ld>HqsOm!1>|Jpp?{0sS#^vr6Lll|wEuHHPJ)PtBNXV#e#PuGIl-W0 zHHZp5xwMtFe}|_+shj=0FwvB~wP_-?gG+Py<_450J;=R$;Y*DqOE)X?*RG^l>~JNP{|lcF$(3TNG9 zxPPD!_NRVXVcy&|dgy*<;nnUkq31UskQ@m9loA{}T%ySC;jVPZ`qR{l4NqcZW={S1trXSF-%4S9t<87vF_Nac zeeF-*n^-xBw_7{F2;$5w#4q_Jhx!4Y{DE=$Ft`(qa_OL@pW#vPYYZHE5PYn+%tXYi zgkCgI-kO{0N1d9w^tY*b`b$}L^9j4WeO|G;Z|>6_#*JmNwd|fQsOn7GvZCByzU4yz zMF+~2>R9Wxp+VEuetD+ibZeb%2`7C5J(d&}AO8RwC9nwWXZxl_bh-BK-Y$m}oZHG3 ztyWD{Uu1dkw}pB~zui3+RyNyj8)jYob`C8Tm5&|cpH!w_Q?7<7F`*Q`3eEa?HSLnv zzv-O#Yk668e1p#-`n9PowzytYr^1 zF7Up2IP0fBF0Lk;tpnN~W7-mA8Cfzv@OiuJI^|p>4Fx3;mQ3)6HKyEOSl$=z&`lO5 zXpv6{2Javo7dyYc;UNHEq?*!w*sP=26#inhKn7?_SY*xqW~UJKo$cFIC`Wf;1 zbB75UoS3DujqbZn8%Xkp78T_s^|Oxc_l^P`o7HA(txH$_KY@t=^0zi4^cY;2z zIy($pV?m%Vak&cDO>aZOv?CPvlg0O0f?D*Eg}8Trp1BQS@V8HTV$Jc|-RBo>Um`+m z&QwNGG{BUOV1UPGWD%{QKd)d5QL?!xr~*Xa{HFXB0~PT6#RX4kt%tysf9BDIRw+a> zpm5n>z3=IZ<`&Qh{HP!T^Josbk*zRBF>oCOA%<@MoP+EGuHL-?$m}yKf{Nw2`8CbG zF5|(P<)P_G=CKXSPhXs#K22h`M+h?Tes8AcpO!*a);6J{e0`3Bd$ar%r}{w!3>*lL zcF83G42|Y4E8tSmb2F#uDF|>E1~$~Bt%$3`UFZSV%PpFQSX!q5CJNa82%Q{!;A2SY zM%{9ja}Kw(2Cn69(nQaN%QO>kLdwMaD(-IB<+U0mzzf+2JtMv&S;qk#?39+R+%H{@ zaYWcVhUJ)rO~Z=HyftHK7M%U}=R0@}^w5DcOaLm>YY-eb##vCoPd?K^afF$cp%UoZ z@~=9{_vINr>1)``!%R}v8y{dxmd7g#KEL39tSZL^n%t3~5S@*k7oF#G#+Wtm)l+$th6w2y-L6Rvfp=@nV~)E7Cz~i-%el987jceEV)c`05a>JhIbk6 zdf%=R+o0v(vDUbC!`2w3@g(&2qxP7=2(>3|=?HGZ82V=Q@ka zC4)RFlG>u>(;91DW@I3_=qCY50D{JosSq`Hl#d5Yw3^>`&!!f^O<}1*3xvcX%bIFg z#VG)&7%v_}6e*)!K@z_b?N5ju>!W5#)ocMdv=fA+3yAVa`99?Qd~m&ZR}QY%8g}?r zTzug|COa+7n^>tYN!PKGMxc@!_#G>4a!yPlU92{!ln*^QckD=h`LILrN5`#DzWv0u zVosDg41)bahMyQ5)5r{rdN9qaH>jcjdUrGiE7-y?$wWLf>Yv+9Sr01xoZ3GH!O{jU zG=j-LoR15jFZZF?Msi3`qQf1(G=mz-b-Qw#x*W{#6b0|mm`T}!0Ff}?*t0n<6d9ls zj>1bvyY7#xDS`49B4P2fk;7r+F23|7cscxoqGyj(`~~y#~7Xf z05gJ-&3HE13%d;!0&418l@cfH14*L@29r^Ma9OYanEn4hSgbPGL1lSdLV0+O_x-Ie zRmp)|9j&wR*i-<~N>?r5wdN7Wsvl{t6!^U(09FA8D9_%*xlZ0*Z-T59vx=dfh#$?! zif-{6sD|c9wW!qkEk8F^PJv02f!E{h03b~(1;0B8XTttZqQLaSMe+29c2&@OVhGGy z3F++A@$IsRJlcr_t!Sjm{YSfSwgIMPmG@=Dp3%gy+n^y z*%SW42ijBIg_sc3IDEJS^#^Kj1mZjhfg!?i0(Rg$X?f?cg4HqtmnS(+a$|FIF4R6O zQg?a@2=t?ox2*Eo?Vpww{9j7|^~~FSMOb|-ry-*9MV45mls)lnOylC?jUOi*?KOC% zB9#v0x|l%VT&<5gnoKFSu|`0?yM6Ruyc1>@T2W&e%q+)DsVyB3&}73QKEyuc?HAXH z@kKTa5y8OI-J$43RLV`x;v^8WYDB)@C^CHuy}Bl(RFn48S#hKndEVf=kFZnBG-Ebg_Ies{4qwg!8d-aq}r-J+WkySV-m=JXyN!LRUI-g-?qv# zXnUvhx$iRv(yh6UP0pPAK+f&-EvpOUh_R=kmuZKIg6R$og&ip5JcD|I>Z9p1but=u)V7M-@Xc1=Z@&(VhnGXbsW5(=+362sW-0DmPtMOK278fb zZ$ePk%IDmZr#ip3CZsklxc~(-+v5vhaBILakbMMX|V_ zM2>j+zY4QsIf@lOMP0|=Sz@z?-D2qfma}?0IxZ(ax*&uio=@esZVr|v0e|M&Pv%0o%CEt=E*QGQ;GVK&#+FE1;eh zXTge%FwFkCCSu&^G*2m*wB%UubEbhryl4J1G7$~ecoV<&HTM~^j?(WGHL`pwN~GMk zCq=JCHGgjx#Xc^PZ(~c2q2b1V)~{A6pr}r!whY^INs@cV9XK&>eLb#z4bo|XqT4!f zno|yj<W5g!=FMwrfn7WsjuHn+j@6 z^d1~W2lb15`{lySdJ4)X*goYoOy_}ZM@yj*Q$}~~%7~Aac-U$@`O}}rX!tLVI1tB| z^@o(>yWx9ENNxuL?#kKbQz8@PS=O%g5w9sY9J{8p87u=~Eo^c`UchRWbawv2#uC4Y zeZ%{ZL;yN`8!^xE^PHYEPsO_*xvC1>#%9#Y;VYK_471tMf|GrCjA-qf5Cff-4MCON zhiwG&+-tq*w`4EV)6||LI_TU?A6>q(WOv*qD3jR=!uYePcgf>jclEMHxQHZ5|M`Vf>u-wR zNu-p$dr>Z3`rjGqnV)AWd6rA=P+xiJIQGJTP#Wt0xB>U-E?_!+3b_W`YTF970mG;J z!wu-bgDUasdd_{ZEzXPnEwy7@AG0p#Tz#1?mKt zS)UT+e3)ks1jBCTQhW)$dE86All2TUhd~oOy<-#N{^5Q3VL3HrJKYUhjCf5lDlsNN zh%#P#3MZ>@dDTXT=1Q@<)%ipy!-(Ht-Jk?4kCcXAb&)%_*`FZX(_HT|o{}{1bX%e; zMX1lkDQDQaGTok zcK^=rDhzR>e~GiIS^MRGPt>F5?TtyZ2DPnAi-=C%mkDwe+yrK^5;vO z3bQ|^A{$dq#wo2fJf_V4vLc+v*(E6CXc2ec6z%p*6142-0X4cb=cloWk@Je^G~1%E z&`vA;r`$Q$-!cI=b9EG;8->EhN+EBH__ZWqq`b zsr?4J!^*ZgBwER8Vqj*`5T}KE=h0SJD=x#qK3HK3TZn3(t|!dmkqnPLGncO8$NGC z3q5-`J3kr`6^Lw+Shg7`%CLsa{m9Z>{N>{fnN!8i$}q$BumDiz1?1iD`CD=j>oI$& zm%sz6-rwRv-Y;CX1f3Us*@1=IJf2+=vb*a5sqweYxwm^LS7#ymD?_tq#0&h@ zo+aDa{`M~M5@0hgBPW4+49RL#{{$S%Hm%cR+R@M#jguMnq?<$^F#9CZ*zx+Wc!SGC zCb%=xUIO{3Lk2_iokdqoU?`meL9?D2SK=KjN?@G-bFzfAlRw&7FTSS>40&p4z&3o6tY!jV-3ItLW~%)+ zZeH@F)~bF zvnY@S)_XvJ!)A9ojb`qZB$x|m5|t?vi?!*33^2?xWD~1LdaNMG=9CNIpEG(O=g9mxT!%`Cd-#C~29 zV+WbQ`arUl9~D?KXMn(ndNRn~Q#2h(hL=P+`B-66jfAO+ZaYhv|07Z|QzZnx@zHZ= zct8e52}d1;;AZt9K#I3s+&>&4M`{^B<_>;`#rXitx&j;7j?!-m3>;^=zaOC;yQ))l zg(TG;e$X;1UifyarWyY12EaE`ARG7FS2eEj+N7PSgZ%&nfaJ%Xl(7O2-mjE9Tbt&? zZB?qI4F*UsbI{aRxgs8_%(%tgJ}^o;s%)0{A2rGT!hX(gxk8fixM1JjEx{-I zW0ntWp@PY!mQKhq69@~CX>-)fDXkGBcBqbiTJ$|A1&u56fZ7EqU-OhDiD%!L#KtKP zZPtdHe6^afw$gcHpeXP|n+#d)sX4}JLnaS>>krz-hbafZ-i2IONHxMbP70)@wf7%TOFen@BUOJBP7a&(q(7G`=uDWMB+qWfN|BViR;xa?L`0j^7#BD7%+$K0gPRS z4^-KVde{%>p72r)%=MNU#no*ks)BJFOU}h(57_|*HypcUH(I%x9z7SX0)qcSfw#mL*;8jz&Y!;8sC<-jpQ`)Oq}o_%5!w&A2| zNK(G3!=I;;wq*PrnLJ7H5)r$p7TzIYdorqn)#*+n!pW#TRSlyF&6CDB@*kbNX4UOy z`3AK3eLS+mC%#igftF^9e}2w^PJ$O(^*E&JmwWFsan}uFvgzAM=vn#WA~TiAy=`o_ zaA3tdTXM_izkMx;%s2ZL1bep-KgVx7nEAZ4kZ17Wy+U1~O1b_pG9%b{sOtOX$e9}4EKXjzMulu0i#yWjA?0l49NA;R!?Nc~X6w5R&dgetA!(A+W**ss0 z4EcP=cbj9W__Z=Y%+H+|FNC`K5!JrPihin0k~>>y%MBB~e&_F|+-F-kbMa;MDjK!O zhbR=#>+gnyt3nm2T~Y1tq%ixJEx+8YbMhEmEL0l#tJs%T@~PjHhbF?gx5QxTBT3xx zB+i!io1GEkmbzf|$-=K)R&MS037xjjj3TF0!=gZv+;`00qs(34U z=}+T69RKZI9Rs{T)YIoj#Ld_>c|>u|lS#YnKP~H_y7mUy9W+2F*1n|cuXAd&z-y~_ zz|`a;nSmL;FrTPY&@%mM4W*SGhafJ~JY$<|$`##9j8qtffzvjcntey))1R{qIi^y& zg0n0>xONU9O>;@Vur<>wA&;9hDraaPh65OCVHlsHZOYpbUt}&j9D92rQ%fZi>g0T> z+hO>*>V^DgC>bXzwFA^f+fvlq(F4p~Kay>G4MT$ewnA$O1k4K^w9 z$fT05`?HYjjW8SeeaG{*@`u7^Y(aU4kuyhfQYi;xDJEh|vtg4572YH1r+HJBlAv@s z)NsPq4Tuvrh`p3WyXQCl8q<2IG;M6Y4UFW74lwEI|%qI|m+>~AO4I#-go%OXks91(s0Pd?3?g&wQttFx}p9WF#!(Z`1>nwg&ehV%x$*^#GITCq58VRu$fcAH%LDI zNWCrRR6>Jq>%k`9*TxuwLrCU7_^v_6E3baFVec-gq5eLA?GDVxEq~-VE*lojC(R2uU#qOMI_9i# zu^`l+k%c2KON#c2@2Kx{Gl(+N^^*WcYPuUF*D(|HwfkVa% zIDZ)@i`YkgUslkF4A-TH7wZ3^l&c+EklNpKFL>IizGY7OHA>cu5P26X^>?I9Fz$g%Ga!T|H0398U0jer@Rg0ebP%I zJ6Nu%qa$7+<)3s_%aLbD?xG~K3{p2y!tec3d9Gc-J!Gfebh#7>$`nIR{;g~VPh4EV zuPgNz&+;K=mHO@bGgq)`aJ8ey#6QO_*QJez9TqAMLv2~bhiWo<@?#_?2tU8#pF@_s z^xAh+ZQ}#5x%Di^DW^gPu@AG9YDJ7|Q}5%uWGyenL-)>hi4+M{X}luz)Y>YB!NxKs z87!i1nUl3peFNu4zK0rg#XsDiqn61!$I+^XFPL=>wMb;4t<^Ef@&=)mb(JQ!$e|pB zg-rJFS1YIYK<%XO$WBYxd8+Dxad8rrvbfpUDIL+Ds9Ni!E0od{;4q(E*B?sOIb5gq z?lOaZMzEIUhblF%vp4ekX#VJ#Uq3v4x3#=637ql4Lm`e|itw>5%?ajHH=vdlht{|e z#eMzsj7e6-xhhrE8pp^YImFS$FWA20qq=f6!mrgo7UiCP>|SZ$)m<=*6P{*r3mD5M z>)hJHAzN_LP3Rhfh~bP&@(SyHW!3uLy|;ueU-lY3dxy7Sg6UT?a5jnxE_~lLxEidH zJ*tOQ+-ZB$bL+Q(@4&D#V@y;OaSyHuIJbxxUuI_C-ru-P@XLGc!9-d9uT(%*@2zM!CvuxzI8O5AEU^f*R(gTZeh8 z2R|J0urN#8V{VY?U?aT3Vxkm7v9E*;Ed0(R&iG3o4=S(S@Naw8p{e-*y*f*#Gkuzg z)7ISkXZY5Z61-%R7@+07y`6Yaqw0c+jrt;1b{RH=T_yTzwne#cUsZE`GjtZlDpjTz z)3)L%Tdb|wmKdYX0_!G(&7VYlA$)?b7pOg545&DO%b^1Q8h8$`X$T40Y!TiAmRVw6 zR{ixz3j(?vR}-Suv_~z$DO<2)CpsrUpIy{{5~b*Crp3^DP>Kz7FJ0;R)oZ_$^PyXC zVI)R@PT(HB=%|(^N~zFM+Ov4^z?vLwYLwXC%igaD6|`A9Hh^4RJ-f{KDq+hK zkgLvkf!go0-YG^jT*KM_QjNQI_tSD_ww6jvYT8L}g=Ek$xjKufUw?S*6rb@uml)SMLbC&vz zRA(i4zaD;Z-`Nw7&A3I~toJ_5-=uB)%Iy;FQym`ZGad-r*d9XJ;dfm151N3BFGRTd zJ%y1^Ldu3uYL*##9!5MGP6GeE;(6AH$QjAP8G~jZ63S>hBR+0nL%pOP6qvw{s;G3I;rOkQiKHV1`;5 zA~VnBjLv7{kMdR+o!3U~)iLgSe@^Lkjsi;&oqw;{n;aIkdr}(KkEWl*b!%+daG6zm z%NAbkXqIiH;4=FA`OH8orjRJ}6OOc$-%V4Os|f1)!m*Eck_dMjd<|8v8J^7leA+Wi zVF;&cQr=*?pPD$bg{zsoX6Tt_AwP0nxO~(RhHe&xiBAk}6!?jzejMz<6Ld5S%D`g% zIB_p_{FXVWdNNagP9dX((#MJ;CwE#<>yyFa;n?q84juPgq?rvG2hFpx?1-+%qTGVZ@K>_1qK|7zj>mFfTAbK~l{Iyk(( V)VPr8!3ju(#L=c%ddDu}e*m&QzWx9J literal 0 HcmV?d00001 diff --git a/Common.iphone/fta20.png b/Common.iphone/fta20.png new file mode 100644 index 0000000000000000000000000000000000000000..ce4c96eb0adb7b16ad5fff9fa8fc3e7d692f9844 GIT binary patch literal 13684 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 literal 0 HcmV?d00001 diff --git a/Common.iphone/fta20@2x.png b/Common.iphone/fta20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..28b0c2a081dcf82d91968b50cc395ff4d71db151 GIT binary patch literal 33295 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�$w>7nE_hp{EOky#PtQ+x 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 literal 0 HcmV?d00001 diff --git a/Common.iphone/fta20_2x.png b/Common.iphone/fta20_2x.png new file mode 100644 index 0000000000000000000000000000000000000000..28b0c2a081dcf82d91968b50cc395ff4d71db151 GIT binary patch literal 33295 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�$w>7nE_hp{EOky#PtQ+x z&VN2yql{~&PZw-my8du^shps!jAOSX)5mxk*IY^x#L>;pHg$W!2dwEm#)}=z*m~Ci z9YPO343B=$GO~RjC|?0(h9qToui8zS>OUbzSyFW&Qe!T=42O;HiaxSyK{dS%QE z>Ln4HVI9)HBXIST~mspAd%Byof($h1jCl#Sb)P3tOPLYCs?7>D3{yxNu6vZv_@!9Q*msM(; z^wvJkSgZK&ikOJcVwm?eISEcOgQZwu;K`}-Kw8OnCJniaJ(+x^;wg`Wd5!3+mdTPfD~_UpPCopz>{wF5s|^GY=A zh_r~dV+2bkD;y60`icXjq|}N81n>@|oR+oaYyOX+*GNLRZ$4-twFnIUqw?1$x`|<6 zS9ng!;J>n?1x;Ybt4yjSDA!b@t6J4fhf>8!<7MjkeSWqpXDJ`J`W>`5YZP%jj3p$d z&25dlAoVgcou@CIZl!bPmyKwG5y|MgxkKHn*XVgDQEhO#{@Arpd+wHG0;OJR%O8!k zVWIFu=ESg>nMjsxt$sPOolNcXA7(Rv%s>CZA)n;}XrJ$QxjGg{yVc&~e^w;eG0igp zn9by;quhibPTjgSqr&HORLJHjHdYf&`sn_0PE%2hJwcIwi?_%LC+I6vN*F}0yYfja zZ)h`kv!$iJr&0PRS1Wtuzu~@Z05_*1RX}=ct!FE;T9W?Mzj#D7yPs^OV7u=RU2}Fm z=l&E-t$UNO(&oiKOwZO8g??zPo`_qQD=eFnIA+*~(Zag2^Bw{Bmh zPc4@n44;ZyxZKC92RF+_*~a_33zfk7mIirU5J)TNHmQ@Hahp>P{`=wDR#Qjrg^LPgTo$gK7DXCM6#l&(e@q*5mAeT?FVhuM*Bz+z-qvEYepmNk z{!2KV<&5=wMR1T=8M8knW#3eAAB}|L_mGyy4J&ZNzab8;Q$Sz3uy&*5j8%tw- z-reVP9ubI#?+=(8MMrOIM-TMO5x!S4sf;O1KvfLedv zdC!Z*Dji9#+2zff3xw?Ev(W;E>2O_mV)vuB#794m7-7-NkvzwI`?UpX@9!d*1C}aX z6tL_S2#6*xyp{bjZEGjj|AfE$=5)O^WUmWQs;y%Hp}hn#ac4Txdg@wc_4bkI4h1DZ z4C99na@H504cm}7-6i~vhWq*!!_+S5UAl5@zXB7RcH~0N0&P19^B-DA*HH9Ka*)!jm)w7+IGw|U4D%=3-dd2h&`eRns$oLq|G z@Sw?thtfigJmL~3w9$bO@cCDh>$5Vz>m((}O$w}d`-@h3`6fuQfv@Ia%Od`yz_Vwo zxe6C==B_hOr7SaGdZ%lkwtzlUefnp)r4O7#(on7^u|=0I^9JV1KD z+Hq?m2Do>9f#uoGyrI^F{q}ddqzC#?ti}{(8HP@!UR?2Aa_w8}(O9hmoNii_QZJs# zpx1V!u8q`vlId=DLv;hG#S1U?oZudz7d;o7g&@ak61-%D+bEwcXS1bZGP4AH(JH??=2|a&2f4>SPO3^5Jivm|jTTMnk1J|m zQLUc4hyo&$KXCii_ol+RO8;R;6DVLsj@I|eWy;ft>lHx8I`o&9S@^rh)-F4q)Rv-) z9Cahdi|0w(^r-D|NJivvHF~WH*x7_SU+R(Z2X!vC@L*$|i1?L-s65YSY7$xZlx#OJJRj#77K_%!{Fm~Bg5r`t!HmEc_+3*xkoii?&!aG zyG5Y%2|vQxRU==j=ED?jh-1poAA;KKra~6o%y{!6MPz$$PAAiGDj~eAhlyHjw$tNIWA+Cb6gUXNg z;pN0Lipb`o-H?Xn^uIT#rS*PWQatz3zKkj5;mO$>OxAtcQ)*??T9rz z3eZLC%6{@K!+fsBoAajlosqvaRh+eydh3}N99U{TI%`il??GD^lGS~E2zhWJTos7i z?3fecdKZ4me7ecY2IheANdC22X*X*Ny>*2Lmmbct*Cvv+y;cfnt0O$y+;N90>^8x-xg54f}9?TcEJt({V z4!$MY4-`B*sv99IGpHtZuw46e<_0ttZ@4Bijr?+cv~p4WdTG{Y0$f_&GpDR z;db)NooupVScu=kohFD)HzL--ZqwiVb>)@++k0Ln11j?_XYEWl!laVCx|jy93EA9Y zIbvI%MP(dfKz0mKQnU%yH5<9*|8%D7MtMiQ(qDWNJvDuAZa*5c9=1o9;VJQ*EfkTd zW6)D|gO12)$v2Dq5oJd+vew?LU5r-|B%E>rV5P-^9UIsN9`K#Ra*hZh3&c*&nP&T0 zpy^j?*4QF|orPq8UHJW&?ao~B6&l@Y_XTQCs|-&v%Y&&6krxIypxiN{U|1W$L$sL5 z&`A2BeKYJ0a?~}PDssJz47>HH&1`t_l!M(wsaQ6O=z82s{YugOF4YOYgN^k_NHA}S zhG?K~YD8MSF1FPpi)ooej0FuSJ5tD>PoGi^i2ELIV7=9m5gLb|AHExQ0pTMXB+CE+f0 zSaXqgFu&WPfE7AG9U>4TwW1dQjwOxS_t8OEOG^fL%dEILJe0r=2Ykzl6>D;~1Q5Fw z6l$`|*4|UdFK%P$^mJToJ?;1k5|4x1z9nve9jlzz=t|D%^q|5FK&Vq+pUn~bAPM|S zu0LumE%roSj3k<#kqS>GP#ml9ByF-@4o-cE{@9E~hywz|XLDHc82)WcoM`Hi`m3*+ zjT;{2(E=N8FV5LZ65Zy7`VUT!e>*IY`a9?H6FdQr2n=9DL>mr3_k#nknoCPGC-GYo z!qM|#x3~kqH%+ceN9AC+@Qa2be=PuT_Co|G<3E5zZ#tZtW&W*xkRPo{rx!e$h7S5M zRH%sy8cZ1Y1LrSx{5c9?J7wGXxu6uS59e0P3|)9YOY40{RVpjlc?K<}WwA9TNWUA7 z{qyXKyZQ2rF;~`Y(>2jJ4+e0N!=fiUF4I%6`YDY4pc+^`kGaAFc?!&)GB>=wOW1B2 z&(b;wEyVxWu2lpZhviU!OYv5F;5%?25dd|qg8k$lo9x09^br%bP_su&fCL(Pg*U;7 z`*z}TcZn4Nq&WH=5qLi;e`!Ek?mEWBAD%Qi#ZXho?KjD}1j`5*>3s(GRQ)vZ9>@{ElS zxc?kmR4{KqU}n<%zx^kGU{aQCq4F6D# z^6&Ls2+qsEI@(Fe(_X(EXe*uHNt?N@nmk24S1m}w1#JhkMIlsqtQ8d_d_%@voP}!; zIj{AhN>em&mf%HGV-nBDqk(LaM+ZR^&;8lxOMsM7na&^embyKP_lU~wFOID_E6G1c zVa!i+TAl}q_pjeQS`K&9`a+aXzT9Oltd)B7_P&uO}_JIz1!2UwqLj{u=gv>f%=M%Y6c1d>(Ea0 zeWS2M^AT08VE+=#PE0^m0B+9vs`*Rhm;UeMw1kvI^HCgW3HG5$6eA;+9y7gX#JBu=EKabdoE4)^z6}h8WsBdUQcD&iSk=zE@ z`3s`rP`Oc1_JgHb@2gIBCq?YI$v@O`?!yBSX-}ugDx=>c?kAibYZTfm92Av0w$61y zTckpsDvUKr>fdscyc#UuouC09LvJ#ER+rFp%}-8F56_QluK$f4+%^IfKgz1oc#4aQ z|3gGXY--{Ye;_Z?n}m8LPUD~Gina}>Mp)mP-3K9fwX`&OHn#BfF+TsQrWE4hqG92u z?Y~(sdgFb&zm$p$9vajz!brq4dzPCh!nO5kNCb+l)w7Du!141hmp=E%*8cmKgK@!& zqe5?hQ4CV;1=>mDJ4N40&*{O4@#erJ%~o&&LAnJxP~&$x`#s7Dfz;q}W2a}A#bC$i zNia^J#hsLOIP|9ci3oUh%Q%K@|{h;b}}Qm*dL$)G+{~v*iMum z3zH>^ua76_2o31`=Jop1kKR$#itr0S7mS})TY1#U+OCVryY6KuvOia9Sd^$o$%+k2 zig=poZ}NZ)7K@-yYL(KW4jY5!W2VxUXA!m9$vJkW%ks$n_jRwOh!t)2 zi(n1N{m{bXUS;d@`O9(Hoy3#m=m7%d_FmOjd8?;5>*=9?5VgY)c_7yJX|8>5poFHg z?7>nSq5 z7yFYiTkiq;WOuvq9I=>Bx;hbiHHbVDGG8~GX72D*b-s_1kBCB{BGDT0KDsNUQCPyY zGuVrksA+Kyd6f+(_8I>BML+DavjTD`L`D+btd00?mDB6ndO@h*qxz4=cv?WB`WF|Z z6+WenvmIyJfb7B-)Z2&;F20{w%yE$GpO|kyT31NU)3F*JhbFf2Ha&Alv;Z{bn7ZSA z1D=JxzfpG%C2hS3Xm97shQ|6r9a93GZ_}+c>i!tRuR(m z5i(ej;A*7bgQ&zL%zrYQUo(wK3U3+Q1)add@ghZU>V#r4FVtAJm{L+EOB^q7TmR8_ zpgq6qtRYZ+19J>_Vv#C|cRyZCLN0&2us8Lz%AGZr#@;=ty;1gbpNW6*BzNDhaOW7F z<{*NKKW+H8w*(>SwlZlu@LenQZes%;T;&bUh|H~KJM6B;w<=+$rC#$Mx*MDw+PRRZ z*7pR_7^_&gJxYwxloMQ?oR@99*@OEN0uby4SfcLjBi4UHNNr`C!lU? zgfsSmQj#`#m)Ss>^JEo&Y^XjD%3+Jbf>gS=URB+}~E4bD_S%ZAjZD4V|quQJkEOu$u83mUvu5(hS zLWfN=jHIv&c}A3T3mSgP=X_(=UWISRwgTq=cl~Ed86yNj0V?+XM)yh%q zW*;USTMFPaPoeT2m;^fMbvDmBj9(v$zjY^CXwQcb_E{taOS8JNJi)B9bcr+R{Z5LP zAkQtuZw|(bizBl8V<03XzH*54e%=_3cby?Jr>&E%VdbLF>)j2WjKQBRAN721)kbxr z%_c|GXlU*kkXEME43|#S-;C-}q^kLx3cbH|AsaH{j$kp7v?N|SO1HhEYDqPv{MH|Q zy?=tDqgT~@(ewhpLI~it)*~=K+#Jn)ZD2M`Y>ZKeqlC0LsiA&x4=Kykc_`Q8H0)&m z$tn)8J}RS}wMYF(=bULKy5Be+Df|H#oUp!o&!BtW#Um?1ymMN7Z1?&K0NhHM{COrd z+r#nm(y}VZLGKLFp*Wbo!jQ+Yg z{30EYK|xV+bs|QdwSb|RvEr`F%!4D9-Xfb7=9P)Yg?qt=bV)?sytacSZ$p^i^EPr9 z0m`ulr$W5CofSf(*%tZ}0q5y!8ItQ-fUhi%#!5Zm`3x=~nW-F|Hm6Qt@B`k@pN+s` zf?9x<1pKn{b1s?)=sEt;w)pL;qtG5M)C>MHN#M>KnfFrbux)7qJhf%ZxrDq9 zaJ^!K(-zc0{CJfYJi81}Sby3EiPsSF^Oj?0z+T;>Fh-G}%dTBrQ03~fWEiMu)ONOY zKPcuKRN(X^peik(gU@(jkAbYE7X%qb5caJ(r;JiJ*v@O;S_&Ry2Ca#v8pi0qq^(u6 zKF1UTu`VNZ1ORoEkN~tS{nO{j-LE-hVT=VJ*(?NZw@XC8&F#s4zoQm!PH^Qea8(F- zT4O%2g%_TFrHBw6D2~8i{B&rx_c$*2w&qqw3dZ;DmaMQSHLmVVNQl9U1L}haQ&m$x$ga)}EeOo%yh@(DpXh5>so@(XtFW zFO&2rVxYJE$YCWG9%NF`2o~p#+{cd7VY?y_zqx*EtW9s=V~;C?XIHAia+}T0<{zlm zwF>@Gq;?lWXM0yf2Mt3<*A9B0m$M=A&Z}xqd9#g3y>GqC#l-V8%rE_Lc8^GGt2Nft zD??Od@@Sk$!-(n}DS2A;EIxE+n6GtH?l<%j->!=5!QNX=4pQ3cS6nS=9VQf4)BhYm zHC0w_u+~uKls~*9%i+84ukWJBhOMm59odGD`-dc;K?`#t!w(bm#HAQcMAILFbRSBjV_O4!76=+^ z4hCM7pe91?YGCZ&9Y+zPE6gh;{dP9p^*VQGw%)=y&MhY_C+g=Mo)s-WmLD`;^}?IQ z3*%?Fo9hxNxMjcqX>@^55xi@WKX!`!q|$dU*K6qvK^EQld^!ghs_kHoC6Dko>6ell9K z@!=BMb3Mox^s-lcO2st)*kSjR|ESuCUAPv-?G!0X@336oq(O;kauXP2slS z!_x!?$@=5!SIc|s*QL}IXt0mLr>(TFfOJYKBk0-`sOkF9dy{~$4lB>0yqzO zd4o7n1Xu_a(7+8VwTzE)t|yl%#i^Cj^CLk7!&34?fL@X~KJ-aFdUQ0xK0CruJDxrV z{WBh_4L6xhtaOqMBlWX^?H<(+WA?e(`Xl5UWsB`--t52aKHO!CXS6Zj!kjC{d`Fgv z>jxSIdT-K*xs!a{rw}?8qFBvN8B-r?RiTrg+9!rPHWMGG3wO0wbvhyC17q9A(fk9l zl9m(b%k6te;vl;XBH**v^l$Bq*mttY<-Xi|yFcPJdM;|(!>_JYi+&3&BeMTK z{RABsAdCAm;1D_~o`0&o@pEZ;Fzn^$1GRKmwx@Ew45^t8@0b+vdr8&><-uJW(^iF! zxU;=7%9f5RoVigC?3m{&AmGsy6y7`?C%4wYL24zD2`Sul2Lt^U{UbJ&4{@P$@x!fiM+HFIT<-%sJJQa#l+7}$(3Q*rPrS%9$2fNdPcHLxb z*Mz~FZo!CzeGY4G88D;gJa66{Jtr(2oOWD>;eq0J@HqMlC#`(%dWDi8N@0*NFS~bx z-)gtMET&U_fQ%j-50$BU#*6`MA2~+^|M~sbX04J`Gs^?6LDzcy7E?(UlJQXm#^_s* zZk&NkzFG!)l{G)AW#9BnqU2U&ay=ua@bvdM|L(V2U{h}rhP)QhIa?merTAn7=MrGD z4r`k>Hj0eA3P(=T#7H-U^s9dDx<%lflVXmBc9RAt;ROqkMhD@Y^Du3=RjH9<1`Cr$ zt2M+Xy%*?y+YtKj8Iz(QgI0N)4q#6N_zG&~s8bna9b;ygMARsI>mXojrf7IWQDq61 zOqc!O+gm0-Sv+@An4Ns=I(|#F$CxkKol`y!=b4K8p#( z;X3K%5NA;rS*%KZSW2*xkGJ<^{qm#F7>t;@3wAzl&}|<$sV$8z#qf&qa7BbRRy+@@ zN{Buos0S-pi85NksUt|ZwY*iuBHw{>&p{|$!{aiM%;j61ibXv(0R1S7ki;swpZt`F z_^tyyRw`PQVlEvhDhOFV&8R=lE7Q$H;U7FF*Atcv*z_GHUi@%OcGi|mIMq^b%w;Q5 z=2QsDKE$DjB)IRpPGzrJk}r1}vPr!y5^<+I1|UH=s)EbTJDE)6hXG>TJL0WY8xr-_s}~9|g)mVqSDO?w3s# z%CEBjHll2Jm`7`^|26E*!e1wj(G9@D^DhVwk#n4$t^aoMka#F(Nku12{;I@tW!#$V znw3I+c2B>xC(&#}gU)&eC$){CqvKj8o{jHJ{&FzFhI4 zZO3;vF~!=^oR{Yh(K~9Fuzp%#tg$Fzl8DJ{B1MwH?DWHVr21RXFW_4}(I~#3(v?wg z+=-Ed{5h7&)MR(kq$~?FTUVA{>ADu=r?e$yJbk`Tv|8Za*gS0swl(QFz-}_CQ`vrL z=37xWteFVB{U08bDLm&F0s1xJ% zlu+1Ed&t`Hk^T2^@Pp>0yav;kPWR7Q0A^rEfmJn4oM=U4`#xn)y3b2HLmd_z|M8s! zB5ze=QKbx7(*r%p?45)>0a()vk}IqYW?fTrH0fJ;99rDCb$3#!<;gUe_h-WDAr5u8 zOmImiiZPU&@{fVh^h%ixytVy~5rxDP`DZ?J5u4p)jw7=^n$&w(mxa^<6R3R(WvJXT z3f*07HSw6TNZWEz3|VwHqj0H!cb)(+w)3x|uC&Z}AG}RMaT(VOCFvc!W&SR6;qLC! zoHCavYm}mzNNIYs`FkvP1Rl13)&L@NDmp4Dma-nt3R^&pHHUHW)x-c|@jXnXbG0zr zg5BBQ6O~&$SOGmh6^=b&y@%JUXA{4yL)rJRrm!+4+ez>c>%TE|W|COInh;@9l1bW! zG}tsm{RlieeVy*N@P|3-z|(h0IO?EJJXx`h*MjDThErt)mz(ZrePgRQD|;IR4*4L=a$m*7x0wJ+JVVTQ;Qg*Eg%gatjb#uLI{r4yymREp1UAT*S43 zl^Tleo(yVtOH#Cm%2H8|liS8Xk&hvO%v5(dHN1FX z&~P?~=XbDPHF9!$$Tl7G6uNHsBNoc0t%+myd!i9DpK*_J<>PQ02W*-iTLRSwzf#C# z$jUpm`^gB#?JGrD}3l7B5nbD*8hd>)(ap_c^#OU>>V z1x78p$v(%r(RsJEhymNP2HH$E;YvCk=AXg369){jHZcdA{(%%H{@q4Qw>co$jekIB zv3g+}qgs7m)sm8O)f!rvhT5Z|jJeiUu!W0M#N7H~hEp=qOg;qcy48A{E+78Ksqo~x zA4Nc`pB>?cNrZNqCVTfqfqo$I;*lrb_q35#^r&X8{l42|cxhQX?|OhQVJwQyyS=c# zes45lIg2wvy82QJVaopEGYbIHr`RwW{To%U^`l8h$%c@|l)HW`$g5KNhgq!L8 zqG{NXNJ_Um7n24v4~+d$htMTXU#PRVGW$;ANH}GfF=g=DHafl$fY@-)s#B_&fRUws z#oV?}8JV6i1fZCnXi#SMH=OUt%jo)!DDB~U_dFVeaK9I}`A_;!WwSkV zn;;T8^V{~4=3azA7adGN;PnjgA8bV5y-6g9-*glN^MqPtz(At7fst$N=61^eb|D^w zPbP9BSj#Qv9P@bdl>n^0YM5?1H__jJc}@>hV79Ke}9cQURHT(0Ie- z0BX~u6r4nS^V0aP{T#HHPF(r0#Vv*yo8*uGE=|b7Ckmc#AQ$D3P0k1;y|mK)H8%s#c#ekj)8oHid%xd-zxeK+ z?{4|wb$He!a*)JjUdP8ji5#&Zi)N(E%H^=lYaidFgxaSWo#mMD@$dZWCKZSwAT5zS z)#H7|iVZ*n^gWWNM$#J_^SS}5u7=-z*-G^;X&$RBxGY>>t-pt;Bz~0+_0=E7+_Wn? zZct{0OWNcl(gQ;|_Bc$ER?Am^{Niv$4 zyJuB^xnDjLz2`C^zDInJYdx5ZKS87HtVC8li}RXYNSc#Bj>gLDBC(eP+2HcWwJvT1 zpEtrkJ{EEIr!?W9+Y&8Zv&l``&D**>y$(C2$cRPSbia|e%!dTf>hgX^s#3t}@aK5e zw(K1>f47-UZTd%AKN9AQ20Pl6!#zO}e;(w`Htlc%*ifqLF8e{`vm|Bx)++?SG#jZ* zmMe?;8;n*`5-4XeJze@`Vok!@@2~1uo2+a%z&}wJyfH3Hukx3BihXJLGB46f9 znn$)|WUKe?JstB2Gd=ZfYqJ%ofH(IFr)Eh=CO93GqZarI>%U4nFpx42ok5d+jCMT0$ID_z!0i>RID#p2F(oj zn+%;;_iZFwg!x<_Z5M%&3&T4jN0UzGOb=T55liYhdyf%TC34`H5R*;#%pfr4Cc?-lYXpd1rHx%aMQ_T7 z*34QsB*RD0X}XTc{N7D2U86rF%Awh7jpAGGYdo9GJI&SBf^6}Te&X!kr=G1s{Y0VA zq(q-MV2D+uRQwLP>#~*iE=s3|!G}h!evM{xisIG6+WFxx-a85-ZCYF!ljmTwIO!EE z7(d49R1(|2R5bk_AXt=%>D<~FSt$>?4PH*HN$O$h28(&&o)9u)4sf+>`8R!@rTJ|k zho{y>bhpHb+^D&6(aEax{u7g$=wS&E{+0i(Pc%oJYY#1}y%7!|! z`U0JufvB3@4nnvr)Q$~Wow2b511ftx7C0UR0S0E<4d&lHQa6NkoQL&4pNfBi*m6~q zte;>9ROmK8kTZ;pJ1$9Re9MFf?#(e_0QvRe-;~_2;s3tn7eu*Bk zGibMFdTylJTnTqmbcy~N;utx{?)a{PO7Rszq!&W_x7e{-DE&$)b1LO2 zP5fy5G7oP<$SL$AA8<;04Bho{o*5bh0k9R1 zB`nq6J|2?IOWCz`zv%jHr%HbioekJoBhw?SfuduDM~cAR)cWk%sm3mND_WY9 z{##TeT>{8}k$QpY85iN`6*wHm+Re--l z1^2#8tP`!HMm~6+>Wwd#onBN?aJqDI1#Nm!jMN*$9%{}f8vE)fzPjVXd5sBhdcMlS zbo(^3s{V9mN8GPffA> zEKUO-RY)WKDX?q2zysB61sO^FY z2WCUP5@&OqA0dWCKkE45vhLeWeA`~RD=MkSDZ6?`>#>J+0LtrcxCEe5VY`&~6_vCk zy84gY!Ls}$hnDr{w3#7%Bf}uMtSykrKhRpOg|r9q_Ip47PPW7HI&b#q&0%y7mewk6 zSpE~wfF2?sL*vwY_4~l1BEOio8?o9PPNojP{9?<|&G(S-Mt)*8L8wKr;M}bRtohrM z7J?9LN@~*eC=g&{|0&nM`y&(MPM4Cbt&l_AWmUbaNd&2eU7Iq21ENHd8DN*nEq)2j zv_HiYVdtO+>Iip`34)GZ(Ky{aoP(Df)&sCB}h4a}qR`P>IZxq7nO*x|a14h}>Vn zxKF8!@X+AdWTz_`6l)#(rX{Q-A%}~l4Bl6$&!Gdb65cyx=fluSoVn>mN3wI|M4eIb zt1so&cQkMruKYxTJyf-O*HpXBQWHil&1*c|qdLY2<&KP^#)w9zYC>J^5sh`^(g`dGR$*cr4{{E1DtCi=V>N@+k5a zU;g@xEC@+06;Z(xGx)46lJxX^RvCzDdQ3BGp-e=RWxAZm%~wvX2kh^&59>Rd0c@Xs zU5abBPK$6U;hthyzBE->hxkr7g#*tRj%8{9iG6p)W836!iYSTnGNgZ;y_ST~PCR2+ z3IAaNU$s_h7yzsfcY38I5EqN2tVM?d$d7AGR@zS>xezS3O%Lf85L1cssecnR)?H=$ z^mvr%c;b`$gUh#&uyRIkZBB7OyydB~qhdUTw1~UnEPtC)CVe}P*#=IkMI$LSF)=aq zKSN?>W~QoK)Z3V-C^rPc2(f!UG2jQ~DNxbHWAIyCQiNdr=C}H#j+T&+Ck+GORpl`t z*XFP?*edQOJza54dTF}YFt*7VzWnN5%1;;hT5FB268`{+G#lgV?AXJmAC?TQmWZ|RYPYOX$I}43B*cqjkwfDL`UcA{&qT2#1 zf%nO;Ox(r_AMgH-_iklD_Rxg^fNRNf_mByyR#R{66S7KFHVS)B=<1RBE{PsW#_?ty zBpq3Q{`_go%M*G#nM@r#kz;Z?A)Q5PGVzl}YkG1d2f)=V_A@Cw0h(PL)a@N5s4-fq73TSrP)U)a(zlqgm2 zr{hpP@HfH?>kQdXtBF+GfbG038uRIxG-R!$(tXGfFh`ZEy;tXFtXA`e^$VCpxUbqr zO)Ez;UN=VgsoG-(tnHET{}Y|DqX4?`4p5iOXDE26bGW!IwC;zOT?SgEIDK?2B3Pbm z)&s$PZ-i@-FTQQ;@BBzM)}H!iu|lQJkeR@>`>ld7myrb*e*V`u9~C4yW%A)F8*NAo zNe4M9v*42wYMe0Ku%5Ust)rHN@?an>uwz@GU@$;^dccEIX!CVh`$jA`K)m6NroV%Z zd&qns%DX`c?Mw<<^6rBWxgJBCFMe#G;8-M&x19;urPSG$50^qa`Eu8Mt4%GrGOV$e z>yMwHQ5t;6;jW1w@}T&44b(m)jc6-%5>>3-qa*Vdco{~eZ4iVQiWiS6(wNJnK5&~l zd~Z5i)U@{orql^xJ?x0x`859409WV}2L3CocdLu*>Vr(Z0V|-1D`N?bUf=N`KWXfy znbxu10T&oujy*K1*L{oKbtKDcPyLMdbLe?lt2r2%3=(4g& zEo?m)8u@5@&3ZZ_#<<>TI8y^v6JS~^zZ}sYQQ%Lm0gMl)q!@9%e{f%x&2|^PeMEW) zhelB7^7v|~znh}e*cv6HJU*#TOyy?U{glUf-{L^;w*%bu0tvBW8dLl2rNEC2z3Bxa zb~3y>w~3#DG4^`*#bgQWz3OK4cQ~YyAmMBRM1qfk&&3cv?lkR;BcPNRe5&L%&JLBvQ>aizQ@%e?f>DQq&;r{(NJ^Lkt6CaHQ z%0KnO!IKj%5?R>=$Oi`UAdVjUVq$z=T>a94uS#`EN+LNXor+TD9)zv3(7R4jjRn&x ze29g*X=Q%At&jPq>O*>3UVlFV$;EppUed4cZC0j#W39hv9+gQ3;^vg#4vqw^EE6JP zRqA}cHw{&{n(OKJ6fyP=_yGI@O1|?an|D1%#)g!Y+6>Fa1z~fXF2o?1E9Ub~%3- ze>QNM^O-Fzon;zo{qp=TIvai9t49{BP*=Dv!L?_QmjAGBVlu@;PZWXrqpQ4MamxsI z)tm+zB1-1bq@tt#u6Dc-Elb~?mS1WiyU^mw(-95+0V|*tBt}1eFk>9o*f6Vo&d^0J z-ELYl-zO571Yf1(S;M>L>t?9Wqt?1~zds=yh=Y7tr4}^lvTgp1J)>gWQI=lx?HzzM zGVX5WQoFc1vDc_%21#_ok8W~{bMB#SvHX?zProWhvp9wnh-uZAi7PCzmBbQe+;27) z`}+K->wOTj-?HfDs9!4YIC8`1XNe!I?{D1$QhpW!;6Bz>oeGaWbn}BWD?HXqW z-EhorZnFY5E&0M4!;I;0i1fQp!VM&Dv$=V@PQxca4W08G10cn3ZnjYG zaw-&t1LQV1kfV625g}x>D9p4rhC0FG?cEao)kVExHi9E~nus4Tf9|5*w=@<4XD^mB zFt??yJW)ej-+~+}2}9$RG^XkK8|C3ARcB57)g}-BBe!K46%3Exe}hrP=3;3k-&I<*p;CangIG zr8d-&Pj>MFieBKqvmotEFOtkj7`iovog-uU=zpw;)P^niw-eVBOhr`$K*2W{4W;wv ze&06*4vpEqsG3r!`Y-b#(D=Xc?Suf>*36(^HHr7bMGC0buvW(J4Y-$`e)Au-p=PaP z@b??3)_v*ow*%q~Jb!N^*=})W6UXRpGnl`-9cPNRVDpT19t9$ zuOLVv1dF%oph6D>Dc)x;4aZJ;kD!zbIUzcsNECxUB3?VW{1z^4t)2LpDdDZ#@kzu7 zKab;578OEd6~z?7^d|*^;R^!uDcf7-3WBs?E6uUxw)P{wlCOCQdHS{d?ejDU$i^B< zMEo0#Np_R)LQz|CvYM0**H)0kh zdq_152+;X&lAyJ52oKwh63ZtpL^(KFna6Uqp^(oekY<8YDxuFE z18-{%G;L(BeB+-|b8mP+5?Fkc9%K5)qQv*`#ySry6<9cYVoWQkhM+k7s+i1&XwVn! z5RNVOf2B-@ZS~=V8QkAJ*qX>j%>OzubDM&V1V}&b-KwJjxzY50E5wy8gMJE=rT91~ zqA`c7Q2^8P)*CxViiFZ{```~F=O8_);?6F?iHaus2f3Dl!}lxzN=Zwp82s1(hX7sw z-Il&G?Pq@RIRics+BeCfYBs{+s!tdZyycC;Zxd`$xehR>?9no^qX>_E5dAP#>Is69 zJr3ge!PCi`Z+b5_WX)YaLk=^?ZN*pkLb@h^N+U^ zzK*+yjE;Oxv+tHH&FFcn7(K3Jw|TxPsrf8qB@WEL|tX z!h#dpLEID=1euNiE)x6mw#U$QM>Lt2Y|QYF93DVHfbFf%a{Jmrw4|!RkjaR<1eZ*n zCT7yE5Fry*uJ$Q`G%z?KqDFC(YV5gXaN%-z?Tm*!Rmm=OxYx zn>)|?0JnVbvfE?x^QS}DvH?rc-hJ3jlo%HNcLG$T2H#NOD49XcJo2~xjGJ4E4Ekh^ z?BS-9HNVNWAx?o`9>z}S>}FnK%&c-P!~6lrAcu?VzUbQS-kUVXV~y=WweV(gR5DVs z){Y@QeTtpY>w(XXL{=mLSsMX5GvhhCfd=A_WKH*Rxs+>Pd|c-`Ew4FT`_VKIK^@@& zot6Zb-lr%R&(#}?oe~kre1#@|Df?-6GOf#Ub08*{#dy&xcUc}go1^Jx99_GsmC{lV zt&VI3GaF!c;%wxPeg3aYecG!7gj#EEWLKqO)UJX?%&X7Ofj0oMxb5+HI)xD#C-~IX z`uxMs-!ttKj(w33{lnV#lFSgZg95mup17eY;?;nSWYz2K{)$!6kK`>2(>YM2zWA<| zj_|angLZ@2wsolz`I3-OX{sL0wEg^)a&0+Fx}>49eUX3d zJM5CuVv${)7MF4MD0$|7A-K$>PRww5(kx0^c95lnhC!v>Z6d&xS1Mshu_C+Ox57>wiH}oIu6nvk~DYZ&C9t5ds zMbC+3ehrbWdwsgrQ7xt(hmfFFtVDlxf8St?Ma5LU^T<2a@YI3ilH*L=Rt|=!yrXQ1 zg|LZE*bKhi>s+63kk@YLq<#EUn($XBSG(!1EmQKAkfzeJtL?t%CDHrwl>HK?n3LMc z79wJQSMZAObM!&}n1lDSLBe@#WzK2O6dtlhWpcM7DjT;fYxqED!|a1PE5X9gx?fAso-FG+XY{+JpLF~NzozYClH4zUWWBAb3m;=!^M&&->iYz4u3 zCb_NhOgxH1pKJ)g8Jp|{^YtywvD2b7ANeX!%b9yWwA^ds|Zi}jOE-FdmkjEUf1&n%22ixsnky-y9KZ)n;o^yNE{y(<4iV#Q}GQJ4kC5FwH(mk zz9#d%>Z2j4eSgAPaFee3l&PsW0+ViDuiH<|0Lm&1s1nT2|Ev1pF`M>TQ-Nj0B&_OH zxy5I==2*P;Z~Sp;Y3Xg`jkjq))3wY79og~Y9$$-ONQk5oZM;Ihg4tWJ1%Qp!4Cd9U zz0-;ckYom|@ykzFW#W?%i%hG*+Goqn83$;_PjL4wD`6&HXb)Bu<4J|m8%b_8^U?@z z#PBMt=Tg!F=ro#bQADbFwx04Wcq`Mz)5ePcuIh?(%W%RS^iAcB6NutvD957=vfseL z2BQn^31geQ{6A)e)^?4ejr-|oj+NI5#0-0o5U=CK9CLyx-XLJ4@dMlT$yz5Q@#5PG z$x1_^LOC9~ZWhxc@^8u^w?7t~@9#7SEaN&h1_NHX)(#UdUhx>+c`dsF#2u)>3KRP&J}%Fdawgl?!{QMvaMzJm!FTy zB7xFmSk5$w7j=+WMFs%TdF+AKS#v#*eao;!Dk$GR&vgrV;NHp07!8S?x?z??f}oue zcuQuM!{>Ey0?>RcG+VXxMp!+Ea?qV#&W%|82Y`HEbl!j%+{j7{jU4G11hwyd0U8zoaqI_YwjyUt`QDX~2)DjyS|D`o8@H_UK^8oD1 z3kEd!XVYh|xomEomPHuXTS4gUQ2%rUKrU(xAabuG5#pP(ys%Xog^n z)Z+B!nQ`B=gGTp4eFZf5S(g;wRc_2WAiRT~eg!N)7MhLZ;AlR=+})Inwlb=ZIV@(3j=+}GN7~lLw=dpOB})$_1zN~L07D^Y>Ml@H-fWtq3aj_ zG%)Ap7=VX>KOkxt-qZ&088rja--Gqt%28Q<~e{b@LJ%9c`^d8~fdA%BMjP3eDsk^N{e^1H@#07X55O?8nFM!?fG-;892}~@e04xZ zzIaDFt-WBp^iPF+%|G+@_<=(~vvW258T|3?4gulLb-;-7+P|p-Kt(`CS-a%0G3f$Y zD-K!Rj^6<-zp4zjQ6R1^SZ7Nvlx&}j#8ou(Efvh|f7lDJ-wJC}qJ)!xh_^KQc2E%p zQf(N|QLM&mf9gfaa%me;_(uZYQ;Pszn_Ppf6%&9y9sNJO?)1mgO}05dfV|lVkbix= z1BQ`?){no}bPd%5gTC9(z2VoCAY!qQ$d{_w2X{dt-=Cir5ZG)>?kh+VMf562kbH{#_!hxt}oW}f%yc+wVR9l899eJnZ`R6FE@zTVmS2OeBgxgkx2_NY$ z3$x8Gzm9n|LRzE#XyWf+L2qNM|K)gI1HndII#g0Od=A8UG!-TXem~p(#Kv6e3m+rc zu;!f=&Jg&1q9QFUq*>W;Tb3d7!(tq)CxrURX8-e`2E=AE!z%?&Is3Egq$}u|prj|* z19F-%NbHOvmxcJDR=M61#QY~)#C{hL(hQvU7PHbC$|hq;z^}?(W*4C!J#Wwm87p&qxHcD})DxcLQa=?{4mkiP$f%I%`aZ z{aZ;rXL38q*PciBGdYsVy!wBm?oYFgmHW5dF{IpJoe=)I(|1@Cd4&a}Z{gn<1(EhX z`gL)fPpCS7;yT$HU*;Gh3ViIoKNg2R5)7Z5-X^m*H`d~_G5@eWJ)g^~TY`-3b)7Yy zz>(P7;(FfH84~KJ;$_R;UHd1sPMnM^$I!L7Xt7!qM5DNSufZ&<4-uJ$ydLShx0L55 zF10lX;@OMf*n>`9`3eu#I|^n#13bY+VB7Pi)fFK z*{8=omNP%%xeu-J_J{JqTIf3Hacsly1F%^y=E#O-boc=!sAb%^Vzv!W{nl#1MuE-x zt4+!z%tIKF9?0S4X}w^)Vq!!wKxvfx_~SE{zrnaVhf9QA0Ox)BsO?Me=SKqNK`!g# zyWOz!yY5Q7!p11b?fWLW_7-d8`|L@^Vq1{kq>b8T=DSDfvJ4K zet2)TfJw^16N7llU%i_8zP}NF)^4I;!~FXb2v0BQzE>X7cW(Y&dc0ROTobHGugL2v zd*F*L_uOJ9D)cyNqwM$Wq* zOplrK345U7rq?M1Ehs$(r?k5ncm0_#Yr`|XS`n^Tdm!qcpyqGf^&>!@aFs@WRhyJ{ zA%L>f8;>}9x63ykRN)c*>ATKS{t?5gt@3T8X#9!`)nbno2@_5y{gsU|3n#oI>BwWb zu3+T$k~n|xM}MY!K4{wSkZK`6GhXJ%>Sib|MU$DV!EE9En=Xk<)A!kfp^G3%Har+I zukFZu3qiOx-dA6mZ{OvNpk!VdEO&V4hw~=pww<`5Hd{j$)zy|=OzRFc>)QS-YOT6q zTINBD__s=#25$)|+4X#TK;MME_*N;w@iz<(e#{IZv!O%-G}&wn9X5BL@=G!w%ktNI z)6Ctk;?Rel)n(j6yfyQu%_1s`Z%4w+5|E-E@dwfrW;kko>Bu})9;X9@=MO~3x68B9 zkn14s_XR8C&r@r${|e392eU9GfGd?mfIqk%4~o2|x>@MtzO(e`K5RfK6HEm?*)CHW2kXHCWq z!58m@>u}cdpHr5Xo%qU*UpSD|`V6H~-?XmI9{0zf8r&9HKHdTQ2|V!)vSsPsXW2c? zIeG_E_f6z_+SMH`(nZbq2AAHuw8S~5L|$Uuh?vH^QP z9-WqIhB{Pa3H@3MK4OiPt1yw=MIJX-q07UxQ-ThIYLRTr-u@UT>!3Q%gPlf$=5=^; z?mvTPxi*6U|NTX-+1ul6YYWTI^Jm9zExxbVQziY5Z4b~uH(I+|$J933T3w+MgD#lt zXMF^+?hJkU7WmwL@r*cjNe6yIJe}QN3w%2k@!H;dJz$)!jx!hIId$GQ`^;7`%8Y7k zFR`OR@=>fEt7RtE?=G9Cv2`DQIP&rKKC&Z7eW-^8x@}Gm)i_p{MuLNTI|>Wyic){= zdE0(Q2XrIF$v_rWce5URz^~IsIUP||W^9(;4w0G+C&$kbq0SsIkYlfr7)V`Dz)u%I z?_qq!$r;H?kLU1%$ym(@qtV(p6|lCDHB7E|eD>T81{nEX*VSES$NtS4f};LFvYK0P zEBJiu;iJBKvmmK`Y&~xUvX)<(oZK+0I}5{n+Lmf$4uN+!YzSFiHw;*nz4D_EC_n-6 zo?OH1I7fNqQQ}mRos$P!IvO85kU6CImMThi=61kDc|QkQe9{$T%9q~?3oT}J^5n`W z;d>8K<5d<1&yde=vV%-3pL@P_#8ehM4tR6TlKvTC+N+c11!iQZNkA46SJ56I$I>2O zRUAWKk>5}$&_ z8Zl_fXNx5>z^1&MIQya*SBve*b+}Emt&u#Dtpd#Xg)$Vj6iGoe1D4SHu`xp{!sC`K zfEe8+W;W7dgIAXp6cI5%0xHQIVxa;u%f22C!=W-Uz`k)2t!Pa>g`YsrtKOF2q{#e& zJ+{>Wy50>5Am2Ik{ztd3>r-yteezcRy#r%ay3-^(BJNc-IDKy>KaCn}CLUp}kY(xS zKDL58$}FG&mAq&7;2!f3eb(SI{p0=Azm9o*P@QtL53=+Ofi0EM(Si$`J5cOkEPk~D z0ks2+*N4pnmc-zvCw3$?FZu_xq{{a8GNrWzRuGUQc)0xA>cczFCo&{8?NTq)qz9L0 zO~Hmf3ZQX1e?>bKE-~$DZ6VDQ;1)3W9j# z_RpD$YrBzfde)EsER={9K zJ*rpF*yQrL8Sts1a1eeT+n^QEA%`#myJ4Qw`85D?{??W$o1mo>n?ccDLsmFsV7U$ za(?M_DsQ(FO2ME|Bz4~PrP2$lcP^ZP%K-J*g3 literal 0 HcmV?d00001 diff --git a/Common.iphone/icon_APPLE 2.png b/Common.iphone/icon_APPLE 2.png new file mode 100644 index 0000000000000000000000000000000000000000..b940348a4e205d29296a45be9408baf8ce702a4f GIT binary patch literal 2844 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 + +@interface infoViewController : UIVIEWCONTROLLERROOT { + +// Properties + UIView* _portraitView; + UIView* _landscapeView; + UILabel* _versionUI; + UILabel* _versionUILandscape; +} + +@property (nonatomic, retain) IBOutlet UILabel* versionUILandscape; +@property (nonatomic, retain) IBOutlet UILabel* versionUI; +@property (nonatomic, retain) IBOutlet UIView* portraitView; +@property (nonatomic, retain) IBOutlet UIView* landscapeView; + +- (void)updateView:(UIDeviceOrientation)_orientation ; +- (IBAction) doneButton:(id)_sender; +- (IBAction) parametersButton:(id)_sender; +- (IBAction) emailButton:(id)_sender; +@end diff --git a/Common.iphone/infoViewController.mm b/Common.iphone/infoViewController.mm new file mode 100644 index 0000000..6689619 --- /dev/null +++ b/Common.iphone/infoViewController.mm @@ -0,0 +1,152 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import "activegsAppDelegate.h" +#import "infoViewController.h" +#import "activegsList.h" +#include "../Common/svnversion.h" +#import "asyncimageview.h" +#import "activegsViewController.h" +#include "../xcodebuild.h" + +@implementation infoViewController + +@synthesize versionUI=_versionIU; +@synthesize versionUILandscape=_versionUILandscape; +@synthesize portraitView= _portraitView; +@synthesize landscapeView = _landscapeView; + +- (void)dealloc { + [super dealloc]; +} + + +-(void)viewDidLoad +{ + + + NSString *AppVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]; + NSString *buildVersion = [NSString stringWithUTF8String:xcodebuild]; + + + self.versionUILandscape.text= + self.versionUI.text = [NSString stringWithFormat: @"v%@#%@ -- ActiveGS "TOSTRING(ACTIVEGSMAJOR)"."TOSTRING(ACTIVEGSMINOR)"."TOSTRING(ACTIVEGSBUILD)"",AppVersion,buildVersion]; + + [self.portraitView setFrame:[[UIScreen mainScreen] bounds] ]; + [self.landscapeView setFrame:[[UIScreen mainScreen] bounds] ]; + + // [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; +} + +-(void)viewDidAppear:(BOOL)animated +{ + printf("viewDidAppear"); + + + // Swipe left to go back to browsing + UISwipeGestureRecognizer* grswipeleft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeLeft:)]; + grswipeleft.direction = UISwipeGestureRecognizerDirectionLeft; + grswipeleft.cancelsTouchesInView = NO; + [self.view addGestureRecognizer:grswipeleft]; + [grswipeleft release]; + + // Swipe Right to go back to browsing + UISwipeGestureRecognizer* grswiperight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRight:)]; + grswiperight.direction = UISwipeGestureRecognizerDirectionRight; + grswiperight.cancelsTouchesInView = NO; + [self.view addGestureRecognizer:grswiperight]; + [grswiperight release]; + +} + + +-(void)updateView:(UIDeviceOrientation)_orientation +{ + debug_printf("updateView infoViewController"); + + + BOOL isPortrait = abs([pManager getAngle])==90.0f ; + + if (isPortrait) + self.view = self.portraitView; + else + self.view = self.landscapeView; + +// self.view = self.portraitView; + + + CGAffineTransform matv = CGAffineTransformIdentity; + matv = CGAffineTransformRotate (matv,(270-[pManager getAngle])*M_PI/180); //Avec + self.view.transform = matv; + + CGRect rv2 = [[UIScreen mainScreen] applicationFrame]; + CGRect rv3 = CGRectApplyAffineTransform(rv2,matv); + rv3.origin.x = 0; + rv3.origin.y = 0; + [self.view setBounds:rv3]; + + CGRect rscreen = [[UIScreen mainScreen] applicationFrame]; + CGRect vscreen = self.view.frame; + + vscreen.origin.x = (rscreen.size.width - self.view.frame.size.width)/2; + vscreen.origin.y = (rscreen.size.height-self.view.frame.size.height)/2; + [self.view setFrame:vscreen]; + + // pour réactiver les gestures + [self viewDidAppear:FALSE]; + +} + + +-(void)swipeLeft :(UISwipeGestureRecognizer*)_rec +{ + + if (_rec.state == UIGestureRecognizerStateEnded) + { + [pManager doStateChange:[pManager getBrowserView] type:kCATransitionPush sens:kCATransitionFromRight]; + } +} + +-(void)swipeRight :(UISwipeGestureRecognizer*)_rec +{ + if (_rec.state == UIGestureRecognizerStateEnded) + { + [pManager doStateChange:[pManager getBrowserView] type:kCATransitionPush sens:kCATransitionFromLeft]; + } +} + +- (IBAction) doneButton:(id)_sender; +{ + [pManager doStateChange:[pManager getBrowserView] type:kCATransitionFade sens:kCATransitionFromLeft]; + +} + +- (IBAction) emailButton:(id)_sender; +{ + [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.facebook.com/groups/187271854617450/"]]; + +} + +- (IBAction) parametersButton:(id)_sender +{ + UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"ActiveGS" message:@"Not implemented yet" delegate:self cancelButtonTitle:@"Done" otherButtonTitles:nil] autorelease]; + [alert show]; + +} + +// IOS 5 Compatibility + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation +{ + return NO; +} + +- (BOOL)shouldAutorotate +{ + return NO; +} + +@end diff --git a/Common.iphone/kbdlayout.h b/Common.iphone/kbdlayout.h new file mode 100644 index 0000000..d576b24 --- /dev/null +++ b/Common.iphone/kbdlayout.h @@ -0,0 +1,28 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import + + +@interface kbdlayout : UIView +{ + int iKbd; +} + +@end + + +@interface kbdselected : UIView +{ + const char* v; + int time; +// int iKbd; +} +//@property(nonatomic,getter=getikbd) int iKbd; + +- (void) setParam: (const char*)_v; ++ (kbdselected*) getSelected; +@end diff --git a/Common.iphone/kbdlayout.mm b/Common.iphone/kbdlayout.mm new file mode 100644 index 0000000..e12ebf0 --- /dev/null +++ b/Common.iphone/kbdlayout.mm @@ -0,0 +1,310 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import "kbdlayout.h" +#import "keyboard.h" +#import "activegsAppDelegate.h" +#include "../src91/protos_macdriver.h" +extern void add_event_key(int,int); + +// http://farm3.static.flickr.com/2448/3825169053_859571c493_o.jpg + + +#define KBDWIDTH 22 +#define KBDWIDTHTAB 25 +#define KBDWIDTHCTRL 30 +#define KBDWIDTHRET 30 +#define KBDWIDTHSHIFT 42 +#define KBDWIDTHAPPLE 30 +#define KBDWIDTHSPACE 100 +struct kbdDefinition kbdDefinitions[]= +{ +{ KBDWIDTH,"esc",0x35,0,0 }, +{ KBDWIDTH,"1",0x12,"!",0 }, +{ KBDWIDTH,"2",0x13,"@",0 }, +{ KBDWIDTH,"3",0x14,"#",0 }, +{ KBDWIDTH,"4",0x15,"$",0 }, +{ KBDWIDTH,"5",0x17,"%",0 }, +{ KBDWIDTH,"6",0x16,"^",0 }, +{ KBDWIDTH,"7",0x1A,"&",0 }, +{ KBDWIDTH,"8",0x1C,"*",0 }, +{ KBDWIDTH,"9",0x19,"(",0 }, +{ KBDWIDTH,"0",0x1D,")",0 }, +{ KBDWIDTH,"-",0x1B,"_",0 }, +{ KBDWIDTH,"=",0x18,"+",0 }, +{ KBDWIDTHTAB,"delete",0x33,0,0 }, +{ -1,0,0,0,0 }, +{ KBDWIDTHTAB,"tab",0x30,0,0 }, +{ KBDWIDTH,"q",0x0C,"Q",0 }, +{ KBDWIDTH,"w",0x0D,"W",0 }, +{ KBDWIDTH,"e",0x0E,"E",0 }, +{ KBDWIDTH,"r",0x0F,"R",0 }, +{ KBDWIDTH,"t",0x11,"T",0 }, +{ KBDWIDTH,"y",0x10,"Y",0 }, +{ KBDWIDTH,"u",0x20,"U",0 }, +{ KBDWIDTH,"i",0x22,"I",0 }, +{ KBDWIDTH,"o",0x1F,"O",0 }, +{ KBDWIDTH,"p",0x23,"P",0 }, +{ KBDWIDTH,"[",0x21,"{",0 }, +{ KBDWIDTH,"]",0x1E,"}",0 }, + { KBDWIDTHTAB,"menu",-1,0,0 }, +{ -1,0,0,0,0 }, +{ KBDWIDTHCTRL,"control",0x36,0,0 }, +{ KBDWIDTH,"a",0x00,"A",0 }, +{ KBDWIDTH,"s",0x01,"S",0 }, +{ KBDWIDTH,"d",0x02,"D",0 }, +{ KBDWIDTH,"f",0x03,"F",0 }, +{ KBDWIDTH,"g",0x05,"G",0 }, +{ KBDWIDTH,"h",0x04,"H",0 }, +{ KBDWIDTH,"j",0x26,"J",0 }, +{ KBDWIDTH,"k",0x28,"K",0 }, +{ KBDWIDTH,"l",0x25,"L",0 }, +{ KBDWIDTH,";",0x29,":",0 }, +{ KBDWIDTH,"'",0x27,"\"",0 }, +{ KBDWIDTHRET,"return",0x24,0,0 }, +{ -1,0,0,0,0 }, + { KBDWIDTHSHIFT,"shift",0x38,0,0 }, + { KBDWIDTH,"z",0x06,"Z",0 }, + { KBDWIDTH,"x",0x07,"X",0 }, + { KBDWIDTH,"c",0x08,"C",0 }, + { KBDWIDTH,"v",0x09,"V",0 }, + { KBDWIDTH,"b",0x0B,"B",0 }, + { KBDWIDTH,"n",0x2D,"N",0 }, + { KBDWIDTH,"m",0x2E,"M",0 }, + { KBDWIDTH,",",0x2B,"<",0 }, + { KBDWIDTH,".",0x2F,">",0 }, + { KBDWIDTH,"/",0x2C,"?",0 }, + { KBDWIDTHSHIFT,"shift",0x38,0,0 }, + { -1,0,0,0,0 }, + { KBDWIDTH,"caps",0x39,0,0 }, + { KBDWIDTH,"option",0x37,0,0 }, + { KBDWIDTHAPPLE,"",0x3A,0,0 }, + { KBDWIDTH,"`",0x12,0,0 }, + { KBDWIDTHSPACE," ",0x31,0,0 }, + { KBDWIDTH,"x",0x13,0,0 }, + { KBDWIDTH,"->",0x3C,0,0 }, + { KBDWIDTH,"<-",0x3B,0,0 }, + { KBDWIDTH,"^",0x5B,0,0 }, + { KBDWIDTH,"v",0x13,0,0 }, + + { 0,0,0,0,0 } + +}; + +static kbdselected* sharedKBDSelected = nil; + +int findCode(const char* _s) +{ + int i =0; + while(kbdDefinitions[i].w) + { + if (kbdDefinitions[i].k1 && !strcmp(kbdDefinitions[i].k1,_s)) + return kbdDefinitions[i].code1; + if (kbdDefinitions[i].k2 && !strcmp(kbdDefinitions[i].k2,_s)) + return (kbdDefinitions[i].code1 + shiftKey); + i++; + } + return -1; + +} + +@implementation kbdselected + + +- (void)drawRect:(CGRect)rect { + // Drawing code + CGContextRef g = UIGraphicsGetCurrentContext(); + CGContextSetFillColorWithColor(g, [UIColor whiteColor].CGColor); + CGContextFillRect(g, rect); + + //draw text in black. + CGContextSetFillColorWithColor(g, [UIColor blackColor].CGColor); + int size; + NSString* str = [NSString stringWithFormat:@"%s", v]; + + if ([str length]==1) + size =12; + else { + size = 8; + } + + [str drawAtPoint:CGPointMake(2.0, 2.0) withFont:[UIFont systemFontOfSize:size]]; + +} + +- (void) setParam: (const char*)_v +{ + v = _v; +} + ++ (kbdselected*)getSelected { + return sharedKBDSelected; +} +@end + + +@implementation kbdlayout + + +- (id)initWithFrame:(CGRect)frame { + + if (self = [super initWithFrame:frame]) { + // Initialization code + + int y = 1; + int x = 0; + int i = 0; + int w; + while( w = kbdDefinitions[i].w ) + { + if (w==-1) + { + x=0; + y+=KBDHEIGHT; + } + kbdDefinitions[i].posx = x; + kbdDefinitions[i].posy = y; + + CGRect r = CGRectMake(x,y,w,KBDHEIGHT); + x += w/*+1*/; + keyboard * kbd = [[keyboard alloc] initWithFrame:r]; + [kbd setUserInteractionEnabled:FALSE]; + [kbd setParam:kbdDefinitions[i].k1]; + [self addSubview:kbd]; + [kbd release]; + i++; + } + + CGRect r = CGRectMake(100,100,32.0,30.0); + kbdselected * sel = [[kbdselected alloc] initWithFrame:r]; + [sel setUserInteractionEnabled:FALSE]; + sharedKBDSelected = sel; + sel.hidden = true; + iKbd = 0; + [self addSubview:sel]; + [sel release]; + + + } + return self; +} + + +- (void)drawRect:(CGRect)rect { + // Drawing code + CGContextRef g = UIGraphicsGetCurrentContext(); + CGContextSetFillColorWithColor(g, [UIColor whiteColor].CGColor); + CGContextFillRect(g, rect); +} + + +- (void)dealloc { + [super dealloc]; +} + +int findKey(int _x,int _y) +{ + int found=0; + int posx,posy; + // cherche le clavier le plus proche + int i = 0; + int w; + while( w = kbdDefinitions[i].w ) + { + if (w==-1) + continue; + posx = kbdDefinitions[i].posx ; + posy = kbdDefinitions[i].posy ; + if (_x>=posx && _x<(posx+w) && _y>=posy && _y<(posy+KBDHEIGHT)) + { + found = i; + break; + } + i++; + } + return found; +} + +- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ + CGPoint pt = [[touches anyObject] locationInView:self]; + + int i = findKey(pt.x,pt.y); + if (iKbd && i != iKbd) + [self touchesEnded:touches withEvent:event]; + + if (!i) + { + iKbd = 0; + return ; + } + + if (i==iKbd) + return ; + iKbd= i; + + printf("Down : %s (%X)\n",kbdDefinitions[i].k1,kbdDefinitions[i].code1); + if (kbdDefinitions[i].code1==-1) + { + + // activegsList* vl = nil; + // UIView* vl = [[[pManager getBrowserView]viewList]view]; + [pManager doStateChange:[pManager getBrowserView] sens:kCATransitionFromRight]; + return ; + } + add_event_key(kbdDefinitions[i].code1,0); + + int posx = kbdDefinitions[i].posx ; + int posy = kbdDefinitions[i].posy ; + +// startLocation = pt; + kbdselected* sel =[kbdselected getSelected]; + [[self superview] bringSubviewToFront:sel]; + CGRect frame = [self frame]; + CGRect framesel = [sel frame]; + + framesel.origin.x =/* frame.origin.x + */posx,0; + framesel.origin.y = /*frame.origin.y +*/ posy - 30.0; + + /* + framesel.origin.x = pt.x -10,0; + framesel.origin.y = pt.y - 50.0; + */ + framesel.size.width = kbdDefinitions[i].w; +// framesel.size.height = frame.size.height*2.0; + [sel setFrame:framesel]; + + [sel setParam:kbdDefinitions[i].k1]; + [sel setNeedsDisplay]; + sel.hidden=false; + +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + + kbdselected* sel =[kbdselected getSelected]; + sel.hidden=true; + if (iKbd) + { + add_event_key(kbdDefinitions[iKbd].code1,1); + printf("Up : %s (%x)\n",kbdDefinitions[iKbd].k1,kbdDefinitions[iKbd].code1); + } + iKbd= 0; +} + + + +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event +{ + [self touchesBegan:touches withEvent:event]; + + + +} + + +@end diff --git a/Common.iphone/keyboard.h b/Common.iphone/keyboard.h new file mode 100644 index 0000000..bdb158e --- /dev/null +++ b/Common.iphone/keyboard.h @@ -0,0 +1,29 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import + +struct kbdDefinition +{ + int w; + const char* k1; + int code1; + const char* k2; + int code2; + int posx,posy; +}; + +extern struct kbdDefinition kbdDefinitions[]; + +#define KBDHEIGHT 20 + +@interface keyboard : UIView { + CGPoint startLocation; + const char* v; +} +- (void)setParam:(const char*) _v; + +@end diff --git a/Common.iphone/keyboard.mm b/Common.iphone/keyboard.mm new file mode 100644 index 0000000..ce70a1a --- /dev/null +++ b/Common.iphone/keyboard.mm @@ -0,0 +1,109 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import "keyboard.h" +#import "kbdlayout.h" + + +@implementation keyboard + + +- (id)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + // Initialization code + } + return self; +} + +- (void)setParam:(const char*) _v +{ + v = _v; + +} + +- (void)drawRect:(CGRect)rect { + // Drawing code + CGContextRef g = UIGraphicsGetCurrentContext(); + CGContextSetFillColorWithColor(g, [UIColor grayColor].CGColor); + CGContextFillRect(g, rect); + + //draw text in black. + CGContextSetFillColorWithColor(g, [UIColor blackColor].CGColor); + int size; + NSString* str = [NSString stringWithFormat:@"%s", v]; + if ([str length]==1) + size =12; + else { + size = 8; + } + + [str drawAtPoint:CGPointMake(2.0, 2.0) withFont:[UIFont systemFontOfSize:size]]; + + +} + + +- (void)dealloc { + [super dealloc]; +} + +- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ + CGPoint pt = [[touches anyObject] locationInView:self]; + startLocation = pt; + kbdselected* sel =[kbdselected getSelected]; + [[self superview] bringSubviewToFront:sel]; + CGRect frame = [self frame]; + CGRect framesel = [sel frame]; + + + framesel.origin.x = frame.origin.x -10,0; + framesel.origin.y = frame.origin.y - 40.0; + + /* + framesel.origin.x = pt.x -10,0; + framesel.origin.y = pt.y - 50.0; + */ + framesel.size.width = frame.size.width * 2.0; + framesel.size.height = frame.size.height*2.0; + [sel setFrame:framesel]; + + [sel setParam:v]; + [sel setNeedsDisplay]; + sel.hidden=false; + +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + kbdselected* sel =[kbdselected getSelected]; + sel.hidden=true; + /* + CGRect frame = [self frame]; + frame.origin.x += 10.0; + frame.origin.y += 30.0; + frame.size.width /=2.0; + frame.size.height /=2.0; + [self setFrame:frame]; + */ +} + + + +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event +{ + /* + CGPoint pt = [[touches anyObject] locationInView:self]; + CGRect frame = [self frame]; + frame.origin.x += pt.x - startLocation.x; + frame.origin.y += pt.y - startLocation.y; + [self setFrame:frame]; + */ + + +} + +@end diff --git a/Common.iphone/logo_apple2.png b/Common.iphone/logo_apple2.png new file mode 100644 index 0000000000000000000000000000000000000000..5dba7d6fed4c6ec22b66d8084c4fd783717d681b GIT binary patch literal 14308 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 literal 0 HcmV?d00001 diff --git a/Common.iphone/logo_apple2@2x.png b/Common.iphone/logo_apple2@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5dba7d6fed4c6ec22b66d8084c4fd783717d681b GIT binary patch literal 14308 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 + + +@interface mouseView : UIView { + CGPoint pt; +} + +@end diff --git a/Common.iphone/mouseView.mm b/Common.iphone/mouseView.mm new file mode 100644 index 0000000..2343627 --- /dev/null +++ b/Common.iphone/mouseView.mm @@ -0,0 +1,56 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import "mouseView.h" +#include "emulatorView.h" + +@implementation mouseView + + +- (id)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + // Initialization code + } + return self; +} + + +- (void)drawRect:(CGRect)rect { + // Drawing code +} + +/* +- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ + pt = [[touches anyObject] locationInView:self]; + + +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + + } + + + +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event +{ + [self touchesBegan:touches withEvent:event]; + + CGPoint ptdef = [[touches anyObject] locationInView:self]; + //CGPoint delta = ptdef - pt; + mac_add_event_mouse(ptdef.x-pt.x,ptdef.y-pt.y,0,1); + +} +*/ + +- (void)dealloc { + [super dealloc]; +} + + +@end diff --git a/Common.iphone/parametersView.xib b/Common.iphone/parametersView.xib new file mode 100644 index 0000000..2b55469 --- /dev/null +++ b/Common.iphone/parametersView.xib @@ -0,0 +1,272 @@ + + + + 1056 + 10H574 + 823 + 1038.35 + 461.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 132 + + + YES + + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + YES + + YES + + + YES + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + YES + + + 292 + {{196, 20}, {94, 27}} + + NO + IBCocoaTouchFramework + 0 + 0 + YES + + + + 292 + {{37, 20}, {91, 21}} + + NO + YES + 7 + NO + IBCocoaTouchFramework + Music + + 1 + MCAwIDAAA + + + 3 + MQA + + 1 + 10 + + + + 292 + {{194, 72}, {98, 23}} + + NO + IBCocoaTouchFramework + 0 + 0 + 1 + 2 + NO + + + + 292 + {{37, 72}, {101, 21}} + + NO + YES + 7 + NO + IBCocoaTouchFramework + Refresh Rate + + + 1 + 10 + + + + 292 + {{37, 119}, {145, 21}} + + NO + YES + 7 + NO + IBCocoaTouchFramework + Reload Documents + + + 1 + 10 + + + {320, 460} + + + 3 + MQA + + 2 + + + + IBCocoaTouchFramework + + + + + YES + + + + YES + + 0 + + + + + + 1 + + + YES + + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 3 + + + + + 4 + + + + + 5 + + + + + 6 + + + + + 7 + + + + + + + YES + + YES + -2.CustomClassName + 1.IBEditorWindowLastContentRect + 1.IBPluginDependency + 3.IBPluginDependency + 3.IBViewBoundsToFrameTransform + 4.IBPluginDependency + 5.IBPluginDependency + 5.IBViewBoundsToFrameTransform + 6.IBPluginDependency + 6.IBViewBoundsToFrameTransform + 7.IBPluginDependency + 7.IBViewBoundsToFrameTransform + + + YES + UIResponder + {{354, 376}, {320, 480}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABDRAAAwjQAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABDQgAAwrgAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABCFAAAwrQAAA + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + P4AAAL+AAABCFAAAwwAAAA + + + + + YES + + + YES + + + + + YES + + + YES + + + + 8 + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + + 3 + 132 + + diff --git a/Common.osx/ActiveDownloadMac.cpp b/Common.osx/ActiveDownloadMac.cpp new file mode 100644 index 0000000..76c0ad8 --- /dev/null +++ b/Common.osx/ActiveDownloadMac.cpp @@ -0,0 +1,354 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "../common.osx/cemulatorctrlmac.h" +#include "activedownload.h" +#include +#include +#include "../common/ki.h" +#include "../kegs/Src/sim65816.h" + +#ifdef DRIVER_IOS +#include +#include +#include +#endif + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + +#define ACTIVEGSDOMAIN kUserDomain +MyString homePath; + +extern const char * activegsdownloaddir; +extern const char * activegspersistentdir; + +#define MAX_PATH 1024 + +bool CDownload::GetFile( const char *url, const char *filename) +{ + + bool bSuccess=false; + + CFStringRef rawCFString=NULL; + CFStringRef normalizedCFString=NULL; + CFStringRef escapedCFString=NULL; + CFURLRef urlRef=NULL; + CFHTTPMessageRef messageRef = NULL; + CFReadStreamRef readStreamRef = NULL; + + #define HTTPBUFLEN 4096 + UInt8 httpbuff[HTTPBUFLEN]; + CFIndex numbytes ; + FILE* f = NULL; + int nbread=0; + int dwLength = 0 ; + int pourcent=0; + MyString str; + + if (filename) + showProgress(url,0); + + if ( strlen( url ) < 12 ) + goto Bail; + + rawCFString = CFStringCreateWithCString( NULL, url, CFStringGetSystemEncoding() ); + if ( rawCFString == NULL ) goto Bail; + normalizedCFString = CFURLCreateStringByReplacingPercentEscapes( NULL, rawCFString, CFSTR("") ); + if ( normalizedCFString == NULL ) goto Bail; + escapedCFString = CFURLCreateStringByAddingPercentEscapes( NULL, normalizedCFString, NULL, NULL, kCFStringEncodingUTF8 ); + if ( escapedCFString == NULL ) goto Bail; + + urlRef= CFURLCreateWithString( kCFAllocatorDefault, escapedCFString, NULL ); + + CFRelease( rawCFString ); + CFRelease( normalizedCFString ); + CFRelease( escapedCFString ); + if ( urlRef == NULL ) + { + goto Bail; + } + + messageRef = CFHTTPMessageCreateRequest( kCFAllocatorDefault, CFSTR("GET"), urlRef, kCFHTTPVersion1_1 ); + if ( messageRef == NULL ) goto Bail; + + + CFRelease(urlRef); + urlRef = NULL; + + // Create the stream for the request. + readStreamRef = CFReadStreamCreateForHTTPRequest( kCFAllocatorDefault, messageRef ); + if ( readStreamRef == NULL ) goto Bail; + + + if (!CFReadStreamOpen(readStreamRef)) + goto Bail; + /* + tr = (CFHTTPMessageRef)CFReadStreamCopyProperty(readStreamRef, kCFStreamPropertyHTTPResponseHeader); + if (tr) + { + sizeStr = CFHTTPMessageCopyHeaderFieldValue (tr, CFSTR("Content-Length")); + if (sizeStr) + str = CFStringGetCStringPtr(sizeStr,CFStringGetSystemEncoding()); + } + */ + + + + if (filename) + { + f =fopen(filename,"wb"); + if (!f) + { + printf("cannot write file %s\n",filename); + goto Bail; + } + } + + + while ( (numbytes = CFReadStreamRead (readStreamRef,httpbuff,HTTPBUFLEN ) ) != 0 ) + { + + /* + tr = (CFHTTPMessageRef)CFReadStreamCopyProperty(readStreamRef, kCFStreamPropertyHTTPResponseHeader); + if (tr) + { + dic = CFHTTPMessageCopyAllHeaderFields (tr); + + char *the_pcKeys[50],*the_pcValues[50]; + + CFDictionaryGetKeysAndValues(dic, (const void + **)&the_pcKeys, (const void **)&the_pcValues); + + sizeStr = CFHTTPMessageCopyHeaderFieldValue (tr, CFSTR("Content-Length")); + if (sizeStr) + str = CFStringGetCStringPtr(sizeStr,CFStringGetSystemEncoding()); + } + */ + + if (numbytes<0) + { + // CFErrorRef err = CFReadStreamCopyError (readStreamRef); + + goto Bail; + } + nbread+=numbytes; + + if (f) + fwrite(httpbuff,1,numbytes,f); + + if (dwLength) + pourcent = (nbread*100)/dwLength; + else + pourcent = -nbread ; //(pourcent+5)%100; + + if (filename) + showProgress(url,pourcent); + if (r_sim65816.should_emulator_terminate()) + { + outputInfo("Download aborted (%s)\n",url); + goto Bail; + } + //usleep(2000); + } + + if (nbread) + bSuccess=true; + + { + Bail: + { + if (f) fclose(f); + if (filename && !bSuccess) deleteFile(filename); + + if ( messageRef != NULL ) CFRelease( messageRef ); + if ( readStreamRef != NULL ) + { + //CFReadStreamSetClient( readStreamRef, kCFStreamEventNone, NULL, NULL ); + //CFReadStreamUnscheduleFromRunLoop( readStreamRef, CFRunLoopGetCurrent(), kCFRunLoopCommonModes ); + CFReadStreamClose( readStreamRef ); + CFRelease( readStreamRef ); + } + if ( urlRef != NULL ) + CFRelease( urlRef ); + + } + } +#ifdef DRIVER_IOS + if (!bSuccess && bNotifyDownloadFailure) + { + extern void x_notify_download_failure(const char*); + x_notify_download_failure(url); + } +#endif + return bSuccess; +} + +bool CDownload::retrievePersistentZippedFile(const char* url,int _order,MyString& _path, MyString& _short) +{ + + MyString dir = getPersistentDir(url); + DIR* pdir = opendir(dir.c_str()); + if (!pdir) + return false; + struct dirent* dp; + MyString search; + search.Format("%d_",_order); + while( (dp=readdir(pdir)) != NULL ) + { + if (strstr(dp->d_name,search.c_str())==dp->d_name) + { + _path = dir; + _path += ACTIVEGS_DIRECTORY_SEPARATOR ; + _path += dp->d_name ; + _short = dp->d_name; + closedir(pdir); + return true; + } + } + closedir(pdir); + return false; + +} + + +void CDownload::deleteFile(const char* _dir) +{ + remove(_dir); + +} + +void CDownload::deleteDirectory(const char* _dir,int keepdir) +{ + + DIR* pdir = opendir(_dir); + if (!pdir) + return ; + struct dirent* dp; + while( (dp=readdir(pdir)) != NULL ) + { + MyString name=_dir; + name+=ACTIVEGS_DIRECTORY_SEPARATOR; + name+=dp->d_name; + printf("delete file:%s\n",name.c_str()); + deleteFile(name.c_str()); + } + closedir(pdir); + + if (!keepdir) + rmdir(_dir); + +} + +void CDownload::createDirectory(const char *_subdir) +{ + +#ifdef DRIVER_IOS + // rend le chemin absolu + if (strstr(_subdir,homePath.c_str())==_subdir) + _subdir += homePath.length()+1; + MyString fullpath(homePath.c_str()); + fullpath+='/'; + fullpath+=_subdir; + if (mkdir(fullpath.c_str(),0777)) + { + // printf("cannot create %s\n",fullpath.c_str()); + } +#else + UniChar nameData[1024]; + OSStatus err; + FSRef domain; + + // limine le chemin absolu + if (strstr(_subdir,homePath.c_str())==_subdir) + _subdir += homePath.length()+1; + + err = FSFindFolder(kUserDomain, kDomainTopLevelFolderType ,kDontCreateFolder, &domain); + + const char* file = getfile(_subdir); + // cherche le chemin parent + if (file!=_subdir) + { + + MyString dir; + UniChar ename[1024]; + FSRef subdomain; + + getdir(_subdir,dir); + CFStringRef ed = __CFStringMakeConstantString(dir.c_str()); + int l = CFStringGetLength(ed); + CFStringGetCharacters(ed, CFRangeMake(0, l), ename); + + err = FSMakeFSRefUnicode (&domain, l, (const UniChar*)ename,0,&subdomain); + + domain = subdomain; + _subdir = file; + } + + + CFStringRef sd = __CFStringMakeConstantString(_subdir); + int lend = CFStringGetLength(sd); + CFStringGetCharacters(sd, CFRangeMake(0, lend), nameData); + err = FSCreateDirectoryUnicode(&domain, lend, nameData, 0, NULL, NULL, NULL, NULL); + if (err !=0) + printf("cannot create %s\n",_subdir); + else + printf("%s created\n",_subdir); + +#endif +} + + +void CDownload::initPersistentSystemPath(MyString& path) +{ + + extern void x_init_persistent_path(MyString& hp); + + x_init_persistent_path(homePath); + + if (homePath.GetAt(homePath.GetLength()-1)=='/') + { + MyString tmp (homePath.Left(homePath.GetLength()-1)); + homePath = tmp; + } + + path = homePath; + /* + CDownload::createDirectory(activegspersistentdir); + + MyString c; + c = activegspersistentdir; + c +='/'; + c += activegsdownloaddir ; + + CDownload::createDirectory(c.c_str()); + + persistentPath = homePath.c_str() ; + persistentPath += '/'; + persistentPath += activegspersistentdir; + + printf("mac persistent directory :%s\n",persistentPath.c_str()); +// CDownload::setPersistentPath(persistentPath.c_str()); + */ +} + +#ifndef DRIVER_IOS +void x_init_persistent_path(MyString& hp) +{ + + OSStatus err; + FSRef homeDir; + + err = FSFindFolder(ACTIVEGSDOMAIN, kDomainTopLevelFolderType,kDontCreateFolder, &homeDir); + + CFURLRef url = CFURLCreateFromFSRef (NULL,&homeDir); + + CFStringRef fullpath = CFURLCopyFileSystemPath (url,kCFURLPOSIXPathStyle); + + hp = CFStringGetCStringPtr(fullpath,CFStringGetSystemEncoding()); +} +#endif \ No newline at end of file diff --git a/Common.osx/CEmulatorCtrlMac.cpp b/Common.osx/CEmulatorCtrlMac.cpp new file mode 100644 index 0000000..ca6ecc0 --- /dev/null +++ b/Common.osx/CEmulatorCtrlMac.cpp @@ -0,0 +1,191 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "../common.osx/CEmulatorCtrlMac.h" +#include "../common/svnversion.h" +#include +#include "../kegs/Src/sim65816.h" +#include +extern int macUsingCoreGraphics; + +extern int calcCRC(const char* ptr); + + + +#undef printf +extern "C" int outputInfo(const char* format,...) +{ + va_list argptr; + va_start( argptr, format ); + MyString st; + st.FormatV(format,argptr); + va_end(argptr); + puts(st.c_str()); + return 1; +} + +int outputInfoInternal(const char* _str) +{ + puts(_str); + return 1; +} + +extern "C" int fOutputInfo(FILE*,const char* format,...) +{ + return 1; +} + +#define printf outputInfo + + +void* PosixThreadMainRoutine(void* data) +{ + CEmulatorMac* p = (CEmulatorMac*)data; + p->theThread(); + return NULL; +} + + + +void CEmulatorMac::x_LaunchThread() +{ + + +// lance le thread +pthread_attr_t attr; +pthread_t posixThreadID; + +assert(!pthread_attr_init(&attr)); +assert(!pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED)); + +/*int threadError =*/ pthread_create(&posixThreadID, &attr, &PosixThreadMainRoutine, this); + +assert(!pthread_attr_destroy(&attr)); +} + +void CEmulatorMac::x_WaitForEndThread() +{ + while(bInThread) + usleep(100); + +} + + + +extern void my_exit(int); + + +void mac_get_resource_path(const char *_path,MyString& _resPath) +{ + CFURLRef resourceURL; + _resPath.Empty(); + + // Look for the resource in the main bundle by name and type. + +#ifdef ACTIVEGSPLUGIN + CFBundleRef bundle = CFBundleGetBundleWithIdentifier(__CFStringMakeConstantString("com.freetoolsassociation.activegs")); +#else + CFBundleRef bundle = CFBundleGetMainBundle(); + +#endif + CFStringRef ce = CFStringCreateWithCString( + NULL, + _path, + kCFStringEncodingASCII); + resourceURL = CFBundleCopyResourceURL( + bundle, + ce, + NULL, + NULL + ); + + if(!resourceURL) + { + printf("Failed to locate a file in the loaded bundle! (%s)",_path); + return; + } + + char fileurl[1024]; + + if(!CFURLGetFileSystemRepresentation( + resourceURL, + true, + (UInt8*) + fileurl, + 1024)) + + { + printf("Failed to turn a bundle resource URL into a filesystem path representation!"); + return; + } + + + + _resPath = fileurl; + + +} + + +CEmulatorMac::CEmulatorMac(CEmulator** _parent, int _usingCoreGraphics,PluginInstance* _pi) : CEmulator(_parent) +{ + + + macUsingCoreGraphics = _usingCoreGraphics; + pi = _pi; + + +} + + + +CEmulatorMac::~CEmulatorMac() +{ + outputInfo("~CEmulatorMac (%X)\n",this); +} + +void CEmulatorMac::loadingInProgress(int _motorOn,int _slot, int _drive) +{ +#ifdef DRIVER_IOS + extern void x_loadinginprogress(int,int,int); + x_loadinginprogress(_motorOn,_slot,_drive); +#endif +} + +void CEmulatorMac::getEngineString(MyString& engine) +{ + + if (macUsingCoreGraphics) + { +#if defined(ACTIVEGSPLUGIN) && !defined(DRIVER_IOS) + if (isEventCocoa) + engine="CG/Cocoa"; + else + engine="CG/Carbon"; +#else + engine="CG"; +#endif + } + else + engine = "QD"; +} + +void CEmulatorMac::showStatus(const char* _str) +{ +#ifdef ACTIVEGSPLUGIN + extern MyString messageLine; + extern int messageLineVBL; + + messageLine = _str; + if (_str) + { + messageLineVBL=100; + x_refresh_video(); + } + +#endif +} + diff --git a/Common.osx/CEmulatorCtrlMac.h b/Common.osx/CEmulatorCtrlMac.h new file mode 100644 index 0000000..aefff3e --- /dev/null +++ b/Common.osx/CEmulatorCtrlMac.h @@ -0,0 +1,70 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + + +#if defined(__LP64__) || defined(DRIVER_IOS) || defined(ACTIVEGSPLUGIN) || defined(ACTIVEGSCOCOA) +#else + #define ENABLEQD +#endif + +#ifndef DRIVER_IOS +#ifdef ACTIVEGSPLUGIN +#include "../common.xpi/npapiPlugin.h" +#endif +#endif + +#include "../Common/CEmulatorCtrl.h" + +#ifdef DRIVER_IOS + +#include +#include +#include +//extern void retrievePersistentPath(MyString&,CFStringRef); +#else +#include +#include +#include +extern int isEventCocoa; +//extern void retrievePersistentPath(MyString&); +#endif + +void x_invalidrect(); +//extern int x_video_need_to_be_refreshed; + +#ifdef ENABLEQD +extern CGrafPtr mac_window_port; +#endif + +class PluginInstance; + +class CEmulatorMac : public CEmulator +{ +public: +// int usingCoreGraphics; + PluginInstance* pi; + CGContextRef theContext; +// void* npWindow; +#ifdef ENABLEQD + CGrafPtr window_port; +#endif + int bInit; +// virtual void writeOptions(COption& _option); +// virtual COption loadOptions() ; +// virtual void x_terminateEmulator(); +// virtual void x_launchEmulator(); + // To be defined in son + virtual void x_LaunchThread() ; + virtual void x_WaitForEndThread() ; + + CEmulatorMac(CEmulator** _parent, int usingCoreGraphics=0,PluginInstance* pi=NULL); + void getEngineString(MyString& engine); + virtual void loadingInProgress(int _motorOn,int _slot, int _drive); + virtual void showStatus(const char* _msg) ; + ~CEmulatorMac(); +}; \ No newline at end of file diff --git a/Common.res/ActiveGS.png b/Common.res/ActiveGS.png new file mode 100644 index 0000000000000000000000000000000000000000..1504cb8dbc8c9730118032cca693a786a295d60d GIT binary patch literal 7262 zcmV-k9HHZhP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z5sOJgK~#9!>|J|sRYjWreck8Wn;Y{aNFo7TQ4~ZFrhG6pqcTLbtO|l- zX`!_%?kGOCe2z0Z8aKm^JXe+icT{vhQBk8V<>)9-_<(U_R+M+Zyl-yqJ>B2_ar!*& z%}q#Ra*12%R98~>^y$;*cfRiL_x<`iH^j^sEWIyc5Q0Gfk7}|0KitF})wh=YMQok6 zuXNX0`OU?klY0roq7dtI#da5}E!2(exXkut$u+A;3 z_)Y|Z{!~_QJw--gFo-26#we<*{GTW1F5Wo^V5sc3KAD<| z>#3Y|lnkjQ00zZkuT}A7zZ{H(LuK}&pM2jbZaW@MByHN7#SehX{V;?#owDzHD;~Px zSIvX5aHxES&C{Dzs!BkDz#XPAGa!rTjnac7-g{}@yQ_}YI0vi+HboDQ5($7vfmymn z2X?KG304u+7S|8m_WtZI7aq-V4p;y=+CCH-AWZ;iXu%K+fCNN|tR2-jX2YLm@4xM6 zk8?my;d_?c89{*nj4U9ufMaQJv3MsMj~qVZz`2W`nY-cTfiPAYsFMDe7xG@!$@b}% zAdn?$xixZVT;j~<*3N!=^*|bDzgpmJE9Z_mNV_IzsiMS!K>#aO<<7{DAHQZvmr+Am zbHx^+#CsK}{JfkhzxeGxt^S~^_W!!_)`~j)^~nh=V@x6p#f;H>qm)TY5AInM-D}G$=;Lc^tV=Dy}nn| zarUyGo%Jz&bYZhNJd*QM!-$+2njJVoyK5y22u)xu*Tq^2|2m1LtX+QXi*F4`0B>A! z<;3@`jn~JE8^$LSP8FvJLNO!=j%2vkA;akyAV5kB6vG>KGTJmOG2+9qV)DjCSFP&O z(iW_^x$-mh;RQRbPpaBW5~C>YoU2j*m_SCMA&>Hq```e8BMcd}-iWnFnof$J{=(Yp zHa#<70IXU$;r2ZRpHJ7#T&0u);c;CiKmeL_hzpY+NswW9N-~5ESW#IUX^8DA&_nhX z(XcOvbL9?7Y1w2qmLC)cM;%tXPjyNX$2qK~>vo2fBELHhJsj^Z5CIGb7GMGx3QQKb zh-(X*V!NwSm*4%^?BD(GQ3G(n@>?oij4iEEGG3}$d8((;eJlDR7-SJBO0Zc%6W~Y( zvYnuk45)9(+ZX^_NJbe2`POTvHJnqu`r6mlG2nBZ6%Qn{R*i9vm|Kr^u$#Bs2C60$2Z$dJ0af{~cP0#GhTN2I`dqw?S>FTZ)? zCy(`eB(iYn?fILE|FEFFC0W%b7$h`o1rTWvX$UX`7!o{+cQb zbd=e@f1YWVrIKG=kVyl!14x#L$DOLZqj&!OB~PFC5B<&qpRpD{*`gb-$ZNIH9!aGM zB;3JG1ZLwM_cnoi!`I&2GVL&n1F7o;vM#Osd%2y&}u%~~oH7DnDE-!tOvN%r?& z>Q?~oUo-2XX(Q~B$;0J9S;`$WOE5H;8AR^wGaCnJeuKztH+ty7wDo`uP)=hzaNBum zjMmE7p8#te!jqu2h60!_ zKL6~ak&DlKX}gtZ9Sv3n3jx3eJa7zc0BdtB+cFjKK#vlpnK6a!SOlh;(T=qS5kWIS z2-m4N%wXem+%;JsNv`7%#zr-zKq>}HCedDyzqR(`su?pcxpz;$hjJ&6eD@(s)Q?WJ z36SS%NgIymnObPR5QPmX4M5@ZLJH;<0EX!cF)Lb>u%A=qzg?gCYIqju$!_D`#)X&;)C!m3;q`6Yo3!qKCKUL=W8j_8k`< z6KflxK#+!$dETve^hEpB^&Vcd?5{`?l{tcYaP4>EVTKlQ^!@*8OaC zpce0$Tls|Dd+lvgFSvV0&H((wbN5!}6{0|~48S7cRtOLTh=p0d!WC)ocE?V_ZP-|h zHvT01puErBN}-CZRS5vvg2>Oqu5V6SkyAmnw6Okkh{P}@$R~Hgi|8rK6zKqo0q+PV z${`zOBT0qNAr2p>z)^)8vB>g>7+@QM;$WwAUtQB_&*l`sA;rlPv_sIg05gF=(3(NQ z)7;3Xu0k_B^5SBxK|;E`&4e00?<5nK2HF#}AlEB%04ezZdf8ZHA{mc-s}M!eSsx5B zfno{`tp(dIopr0qDS*+}HqT6mI;fQN7ZlAYNGW~Y#Jv%M!`kJ49(U6UAOVsD%?d=u zLJSG^9)SBd`5GR1-Z(=%U}iuHuprn1aI}VqG90BKh(OW+X2#<_Fb#qLVh&mn-9L0} zj`u{4-B*8BB$0w9$5<5sECX()9iKyIPG>gcSTZ0q8FmI}5f0TtKyem6*|3WRZn(f(u%Zg_{3bi+n@SWDa1@|r5LZwLF?KV5(mwNUQnGt9Y!-X}qULij zf~CMPy!4PQ-MxEYtF#X-UyG1lv=W3Z-XsR{EF^{w-H~$ug-{WKfTgXDyugSF9YFQ> zBiyzWTEl{sicNHp0U%{Hy5JfN$dHw4>LlU`ITQi_t-+3xxwk+s9wpt?tV%N#3h>FQ zMNuc`9r5nc91zl`bJ~zH`X+XtW-Q(`x~~B|GLdHP^QU%Hn6!{MhFVAF+yWCxCs{~3 zk9(U&Lz${Uj$)RurU(tCB#IJ;Cg&0iQTi4?LDz9TN745c|OJ{H6fLZl0^T?KjG7C;(3>4>Bk z4u-{3FOOO?GNYV6u^UZL$-XiA&vv#=%Ggl1`4(BNJITlCu<_7?Jl{X_+g+3 zA`@Ttrrc>iB{!pZ*lU%A7cn%YO0CiNuemN?RJot*yFnUd{y7#IWJpqma-f{4@dXQRTE6R`)tPC!0lf zcC4H5yX!9l^^`bi^yWYP%kt}Q7?TqK)$yaY2rC7P9q3-CRUd5~JGiDIAdzeyJ#Oub z&#t=juEKr?&^hDubq+D zm#oC@nJFECV2waV?IOYm?-f&a;^qsbzRbXx0c}S2lon4jr)M0x%R>6t!iqQ>0fX3m z%P9f@TgEnjdES(Tm%s4b%l%@30MIzPVq=+#z+#g+%Mya6yC(txg6vqC-2D=`zr7za z*`&k-0qIs2elK2+f`nV)T{Bc6%@`=upSw3Bm>`*8Yl3B}WH(XCtpsVJq$E&H#{_utQ-Kc-(SaMgYP78zc%bUjl`RWf1N2bp|8%3%LK*W+|9n3)B{UZ#~f zN&#^WGEdouG_Yh9QgDLJ_Y}FxV8ocE1_wDf8CwKl!?u_pH4q~pX7j;qr=7jdOWZIY7+LbLx+!`CEcXz6Y%Xidl$V$GNdle(Ry)uZgJq6wpF zzu2;=I)Ui?w8>AMh9I4aqdk&xD6_w4u%*z+DV%v+bQUO+-_|BT9-IGlb@e0r`vt&X z{PM2&73(hA%ZCU~X0mc;QGaIAQID|WE|i3>q_d9AIt(xDt6Z%Cd1O_O{n3PH`o)QO zW$gKrmkU9^>9C$~7oh?7g7fu;CU$X7m%{@fA%N28p8KA9V1K^?c=wa{*XaVT7ee+~ zLiy2Ug#^JGwxr*jI(_2OexotrGVc7z%kvd#QeZHBm%($rdW5YSYlyw~o+lry%L#z@ zFM9MVr%2XC*~&=Spl;T#7QUXI-~H^YtN>_0TXyolK7HlUehcNYl?i`$_OGR+YCr;{ z3;}k@uuG7GG$SH*)8hS1{%{&n_$Pdx$>|GKH}_A2NVpY-q#NoZKoI6#l`y>*aA}H1 zX?&{Bgs6yCmy9oex8Fm#Y-QfGt7aYEy6*yqTjmifH{I4(j6-3Wfx}avJ6dfvjXs>* zk-nkNOj$L5CY{!We|1KBrmNYawP3+2ExvE{&R6d3H$k(FZo?B>H53lyY%t8f6^FqIH zCO>nU&cNZ&Ffu?q z88ehSnXO0ORO;A{dmP@dN!TI~k|KgUqUtZ6|H&;m5mb*<-u=%jmlcTkmt;lKBM{1r zNW51Uj^sHxi>Fy|F(OUmaP9| z*h6vMI#232z^xGXKuSWv_o;G(SQ4!&B`|*GWx)Fz>f{ny4`O&Q=VPxZ38H1E*Kgo1=%dfArv8 zb2|MZ*_-cJR^}Y7% z_s0DA#+9=^uPeStfR$E>Im$`7FJ#L+*z%Yag!a~B3+msWSP`#X^zcnz^|b%#H!Pj8 ztG?hI&4uMD-F6L9?Z(?XpvW!c;M%C{c(>u`Qn{Rf4=P8ufK7| zH>C1LDMX8gh{We(%H!{?d1~GVebN8i1&dDDx-(i;myC@UHk6|rR2HPRopF5fl_wsU sTi2iWMuY#1V1Uq=K>!C!ugd=o0E;Ngjx~)SVgLXD07*qoM6N<$f>yidz5oCK literal 0 HcmV?d00001 diff --git a/Common.res/Apple_2_Disk_Drive_Sounds.txt b/Common.res/Apple_2_Disk_Drive_Sounds.txt new file mode 100644 index 0000000..558075c --- /dev/null +++ b/Common.res/Apple_2_Disk_Drive_Sounds.txt @@ -0,0 +1,130 @@ + +Apple 2 Disk Drive Sounds Copyright (C) Moose O'Malley, +-------------------------- January 2011. + + +===========================================================+ + | T A B L E O F C O N T E N T S | + +===========================================================+ + | * Introduction | + | * Other Projects Using These Sounds | + | * License / Limitations / Restrictions | + | * Amendment History | + | * Contacting the Program's Author | + +===========================================================+ + +Introduction : +-------------- + +This ZIP file contains the Apple 2 disk drive sounds that I recorded for +use with my "Apple 2 Disk Drive Sound Simulator" program (Windows 95 / 98 / +ME / NT / 2000 / XP, Vista, etc). + + + +About the Disk Drive Sounds: (from my "Apple 2 Disk Drive Sound Simulator" program's readme). +----------------------------- + +As people may know from the Apple 2 Emulation section of my WEB pages : + + At the best of times, the Apple 2 disk drive used to make horrible + grunting and scrapping sounds as it loaded programs. When I used to go + to the local Burleigh Heads library and used the Apple 2 there, everyone + in the library would stop and stare (and sometimes glare !) at us + whenever the Apple 2 was reading floppy disks - the grunts and groans + from the drive were *that* loud !! + + N.B. These terrible sounds were perfectly normal for Apple 2 drives, + and they were quite loud as well, even when using brand new floppy + disks and brand new floppy drives. + +However, people today didn't believe me about the sounds or how loud they +really were. + +So now, a short MP3 of some Apple 2 disk drive sounds is available from my +WEB page. + +And, in addition, I have written this program to simulate some Apple 2 +disk drive sounds. + +All of the Apple 2 disk drive sounds were recorded by me on April 10 and 11, +2000. To record the sounds, I used a cheap microphone hooked up to my +Windows 98 PC, which was running Goldwave a good sound editing program. +I placed the microphone at the entrance to the Apple 2 floppy drive, and +then proceeded to record the loading sounds the drive made for a bunch +of games and programs. (I own an Apple ][c with both internal and +external drives). + +Finally, in December 2001, I again listened carefully to the sounds I recorded +18 months ago, and edited out some of the more common sound bytes. + +Then, I wrote a Delphi program to play them back, and compiled all of the +sounds into a single resource file, which was later compiled and compressed +into the Executable program. That is why there are no WAV files accompanying +this program - they are all contained inside the EXE file !! (See my +"Apple 2 Disk Drive Sound Simulator" program). + +The "squeak" was a sound that the disk drive makes very occassionally +when (I think) it is swinging its read head backwards and forwards +very quickly and the rubber belt slips - not sure about how it happens +but it does happen. It is definitely a sound the drive makes - not +the door on the drive. I rember it happening on all of the Apple ]['s I +used in the early 1980's and it still happens on my Apple ][c - but it is +very occasional. + +The "Ghostbusters" digitised speech sound is not a disk drive sound, +but I thought it would be fun to add this sound in as well to show +what digitised speech on the Apple ][ sounded like. Back in the +early 80's, this speech was state of the art and I remember +times when people used to crowd around my Apple ][ just to +hear it say "Ghostbusters" !! + + +Other Projects Using These Sounds : +------------------------------------ + +See the readme file that accompanies my "Apple 2 Disk Drive Sound Simulator" +program. + + +License / Limitations / Restrictions : +--------------------------------------- + +These sounds are freeware - which means they are copyrighted, but +any person and any company is welcome to use them in your own programs / +projects, subject to one condition. + +I am a friendly guy and I like supporting / helping other software +developers. If you want to use these sounds in your own programs / +projects, then that is fine: all I ask is that you add a credit to me +on your projects's web page, the credits screen, the help file, +or similar. A credit something like this would be perfect: + + Apple ][ disk drive sounds courtesy of + Moose's Software Valley: http://move.to/moose + +Please don't just rip off my work / take my work without giving me +any credit. + +Hope this is OK. + +Long Live the Apple ][ !!! + + +Amendment History : +-------------------- + +Vers Date Description + +1.0 25-Jan-2011 First Public Release of these sounds on their own. + + +If this ZIP file was not downloaded from my Home Page, then +it is possibly an old version. The latest version of this +ZIP file is available from my WEB page - see below. + + Mike "Moose" O'Malley +____________________________________________________ + Moose's Software Valley - Established July, 1996. + WEB: http://move.to/moose +____________________________________________________ + \ No newline at end of file diff --git a/Common.res/Search Skip Search 1.wav b/Common.res/Search Skip Search 1.wav new file mode 100644 index 0000000000000000000000000000000000000000..ca203f68e19970a4bebaebca1530ac86d1840ee8 GIT binary patch literal 115708 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 A%K!iX literal 0 HcmV?d00001 diff --git a/Common.res/Search Skip Search 2.wav b/Common.res/Search Skip Search 2.wav new file mode 100644 index 0000000000000000000000000000000000000000..0d87532c4aa155d729fcaed77f66082e6d8fcf58 GIT binary patch literal 63172 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 A9RL6T literal 0 HcmV?d00001 diff --git a/Common.res/Search Skip Search 5.wav b/Common.res/Search Skip Search 5.wav new file mode 100644 index 0000000000000000000000000000000000000000..e111207438f352e93e973e8e1f95a210ddf90d92 GIT binary patch literal 42994 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 AD*ylh literal 0 HcmV?d00001 diff --git a/Common.res/ShastonHi640.ttf b/Common.res/ShastonHi640.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ff6148ea31d8f197eeb2616edcedcf2a9d3f32d5 GIT binary patch literal 74316 zcmeHw3!I+SS?BZ4<(o`0DbS=63@sm*N?KBwBv7W5w!^JJ2?Yz3w6-=wW=N(anQ1a9 zp~V_)s;FpVMa3F5Dpl0(n%zaWD(*Z1;SVP*?$mvvk7hMO)}ee)OJ`?qGr3goWeuw`WO z)0;l_X|n|jkhgZ@=DTj+^_~abYIf4&Ruua-jg5>xyX*abjk=#jc;hByoVsoCdysw# z;hardrgr}Qnkxp-_8zmwuFVr0M(p#yf55E&W?b*yGO}~B_zn9M%0b_nTSvBxJ-zkb zQ>-{;r&-^VlM~ygKJom$e`dvL>ww{~5i7z|7oGd)2Tr>5E7m=*3pw@&J3jF-#WQ=4 zO%6P@@EKg6jKCKD|H5aEO`0vfW@fM1z*8yT3%$ZV<`nyEk1h4guChpp?nbjXY`wre zOsw?8x4;fCAN#_3)h9yky8ep8!8_u<>6RG0R9yx(EGB||PNWEy2a zURf_o8_M$hwtA*sBFyYf{Wqtl{ys{3_pkS{(8r73ol&1{+#lf+j4=bPT=cnOCF-tZ z8gmflWa~ocMp%mfId3kto?-~`J8T&9-a@24R(yBysjiE={;2Cuy8f#BSGpf*p4(j2 zyrlV-=9SIQo_Xq-%`?wB^W3w#&gwhsl(SxQ)_G@Ld)C<5%g%o7YyarApFelWS9^~v zIWqHn-^>gsnKf;n)B3}%&v!lUv`%ggHs92|G^6!xpw&3*q_e&iw5~a8z0>+br)5W8 z30ekP#mwK#{NBv|nSo;;J9hW6$rnEJ!Y98p{H38Ut@_g7mtKGH_Yc13;I|*V@!<7O zZhvy}$?+#gp1kGBH$8dw7eDmHvA_I-zx@5b_~^n<_J4fA{f+zUD+0&((*B#qisH&F zz|sZQNnOKGGxB>5C(Ex#{0!CtyRgP#cmx60{U;*~VsVCe;ckR4m@Rt9Y~VhGC$N^; zZ1##32>Y=fL;lH=2oE3}GCSpS2v3{6@?oWX0N*$0r+2!dau9R?7Wo-qXRkUm zgac;pybuBL4QO)%Xx?}Z!spDs{d9zVX7Ac-b`$E}jO$y>?A-$hkDA>I8tYL09<+N8 z>c4k0!ZT*y@maI?HO<}+I`4nN>^tu>`@niE>2F3jY&P<^*=@@pc(EHwfW*W(loKhWH1n}Hz2$v!tfA2xFpScF%u-VVjb-HmVr zTd$|g{t58?QD@`VT#0_8XfJpqJkShTohv`|Z}&_6W-U%>!n?x5w=F zuQYqq5FW-(Y`xhZ_8_3%AAP~>z)}R%`(w!U$D0w5_j%C%{3rtQKmVxNpInN7>pywg z>{g#02%)ZJij<( z_9V)leBA8dXU)C@8UK1I!p#UM{~NS@3U&U=g$SVex4`pXr_Bzb{1CAIH?;fjn-I|U ze{4p0)a>bZpvd@{SE4&AJH8KQF%zCKYmc;X%xa%}A?F zUiauhtVvMYPmWyEYl zPLz`|{<`b{R=H20WVxLIK4(N5N+ih`ldnRa?~;Q@v67|2MKlbOP!cO9V(Of+&>x#* zZMQ_X9Z33KV;9?-f$GhyCEp-V`3||3`N>C!Lb&83#O(DDdwJ$h?o*`0vOOUkESqV- zsSyFGAe0`9I(b^Ms2=5Yw5TUvVOgFIonT)Oo`~2fo=oI!mnC+torj(jx_FyiVOQIA zc7xqyx7v5u2cVq~aJ3y8pQQ_+E_JY%HfIgx5U?z-a3ta*59p>Poo#-mt&JX`*9s3 zR-#*KIpN~G;h2(U%W`Rm^$x>Q>%A6Ge(jM~DRN{?H-={;hLklt98ps}aB{taHnl-+ zPE!a}E`+QH)TvgDBdH3h;vBK^fM>MW)3YCYavwY0ZW%|{vp6CqU82i9$7yACa_`CO zxm3iJ)s=*O)1=~8ki@y-S|}N_b$&fp{hSWdrH&Krj6UqaISukJf^`?+3VLVXVNCt9 z{~a4>42Ms$XA=oypMMI>W|LhHgG0=`Xi1qhY8{&-Z)puJ!LMh3?@rLeN}<2IcPGc4 zp8cF<9VN=i8)+~1E7BAVo_NGqk4`I6Cr5VVNN^?UXZJBD$MDrnt+HSp z3Jv?3Z83DZm?J#pc>bYM>me8TFMQ_Nec=JD0W0PbyX~CLMWAz$^F$lQ<#>qePF7-m z*TZSG#dgODtna!*+_#|Q0B*93<}6*;W41mKi?Kc0RC2lx9#2lm;c|mQi3+%>d6qkh zq#Jsx@>^t_&ap}sQFBe?)RC6e*-rJDCpz^w)v4qQf7qSyB+U{ZcQeGuzKp%jJz)ur z3S7Zsw5{m)+|#?1^o5s_NlM3&q$g!x;gQ4PBtw)X{+*bdiY13y8QOzN?hCG~y)gntI;cgRx%+&sXUf4KS%tFHL0PIC*4BzxS|}-0 zV|4PP<7t4B(_fq~WaPD0Tv&he3R-4dX`pwfR@$Ua-V7Ysm1Zowq|ED(&}Zh zY&<=aw-5SX>w95%VTqmEOExBM*F0m%hH~{q=|VFL_UWYLI&8I}a0`pBiCcM`iDrhL zyN6|N#|CI{jk5wCd=mCTJRx`+Fu$#9o#c}@1!7Y2weVq35@vEpzUf+mY|lL{37x-6 zB{ir-3!l>-bV*d^b=gPgH{?eO>bvOaE>GWdUP{k$&R&*U&C20?EKR7kb{JY4mOIQe zCis}%vgY(Lg_2LY1`}$>m(tW2#}}?JIe%%ydUhZ76SGip<;d2wO*W4#!D-sru*BIh z8*>KZn$~fHPpR+3b7n729*Aln>|>)up!G3JLT_>ECoO0cbPt54d99h*@f={DQpuyL z^-G3Nl$;YWp=IvF@*?L%G^peB7{}O#7P2;5(*s=El+QBPIIbm&_O7bu<<&g22xqO< zzXTctN4Lc8L=#+RYfMymN+1m#8LTwIv~vPv#(sW~_J?6*@1^J&v;x=cp>3j~4zsvw z-w%ZSq?WJl*nW0fczmUMA6YuA)IiO-LrUs-F5R;%c{EzR6#dhh48CHkaF+U^mC1>* zdPvB~p3ENnm6Ic;oUB#p7f(OHa%{zX_JyEAOHr$|3}fDSwN6 z&`EyH^47Mru`t%<(>1-RKG&;^F=vCkr`P24u}vdXEB6Wwb>KMKSvKVn{laI2Hjib! z#&Gz4j!tPu0JI$GfVLXjmc+^B93udH*Qr3;GkfQ~FN0>qTUgn1uri{Yxd>&>qDrd3&rhbrFrRx_s7l<=0GRZiiN)J`}5bKP&1}?33VRN zOV3q*Ujr?#p+$+(k%4wT+t)`@@pdd7^e;)h2e1z8Lr)KH;9Mz5gq)>$p8AE#-5zD6-w+#~EdxK+=eUMdTcwXBxaNxDI9l+LVXx2#CD(sCXJlSB zpFq2f2Y|=*?Y@c}`K~-faiZQbO6FeU8h~C~^0I5$tZ$k!Dp2NnP+1=5x}+4cMZGPr zQ#;&G;K%{_d|dSvvE)OX%fl8q?)+M~rH6&jw9}?b5Bo^#_3JiPsPNqc``+XdW%$Ie z9_P4o%=LP_me1$)+ND{qUHf)*+s`YKJC9w9(1~=B+pwOOw^KT=qqOX*SI$b%olDt9hs0lwxXFgXnrs2Q$0oZEX*^^9(i}@X@$Lr4GPWDo z1^J*&?~gv-xYaWK=JIq(&)1)G`P=)e{Ha|`ywb~jV@Ole2U}{7&2>kN?_b^(zQOUm zSlKu2`wf3KC(c%hCzrnNm2LwcRXL7(ZScua)+H*-aKDaci74*|8id9$S5vA_{Cx|$ zo3LlxYiK5aqSs)2$dN3#Ki3icNmLN0^&(a+{dO8SoyKxm+gC}zue}v5)qdqfimpTW z71Ku#_U?>TPpjPOeJ*E*wW_%0a`;-1x`PkSZ>>rc&`!EPP|55)w7g%SRY70|{nW3a z51)r-&*N@yASwGL5XsYJZ`P3x(@2CC(h+6P^}u|F+)BcexAF2yXNzKepWDmrgZ|(> z3KYpnCp^Sa;>=dRG19p0n$aS7V}w9!23~W#;C@NhDswq1AF58I;3?cuur1NF(;9c_ zt||1l&{8^~N)kY_#Jz=EhANOIE=gXYRa;);&+Y2{_Y`>fDa1{EQX{#a2@lI+?ZX{R zV>s;THckA!^(6Zb_Z#q+MfL_zenXs#l1^?78|8V6+eMm5T5&&8?aVIHSZ+W0oMOtx zaX+3R;+0DaghZ;eG$Aee+A7l`^Zj%)`96Bh5=gS7XKgM)uBE&;9(zpp49HJ=X6?v? zsoDqPUIw2xOrus%r3~^<%EmO;V3gu3C-Z;Wi!te_AEf7VUKQgOrC>Yh%`E^##OiuS znk|V)<5|!YMpB?Gct|$M!t$9R>Xd%b7><@qlY?VR{Dp&g>T%LD>b@j@tn(6&Z0S&aL|%=7 zXQ1z#0s6pEVuXx2p1@Gy%dfr70pg>^+2hEg0j+SnW4h#-G?!niUS^*)z=Lx)=^)pU zkGpAJamp#p{JfspGA?DJo`FF1LOxoRlw6{Om1$X5)^=_vr(RW7Ppb}N)nV-P;2&xH zI}`Gq=_kbry{{*cCNj4(Vj{2mBFmj8V|YuPOp7Zyu~gjiG|Olm^%Gumtj6jn#s#kP z+z%?f=Q<=RKK&=%)nksoak3$O3YB8&AlDZWgX ziys3!IlFc;IVneuooP~)hlHHDzGdAOoXrZeurqclh;#WVC%=@@H|^&me2!(2-fRIM z$HO%aQ@u|FI{GM)6P@&@-pKg^zU}SsoQ3)sxXujeEd$K%nZ|R3flQ_Id#8u`d3GOs zIY#QxJ>Tg`>sca`?+_P}$2brYh+7#$D%Pvx@;tsDUh2=OCjTf~e+MhG#k|-?+q?J5Y89hKF1v#p1Jw_Scxhu!PK4_q?90?zb5sx(4V|WMOM-lpw z&xz34o9rsIxeBvl@(#)7oU**!%iRv>(T+Un&UKw^L>kh))~;+%nm(%_woz$TwOvkd zBv$Dm*G-mk3E-ts)9a~idD!Y85AJ1H}J$v{@gM# z$)@B@S=m2*E%{J|ffRMRL0oJTPsEasdbAzT6MoPRT9Asc*4FME!!V1%8_&i&f!2R@ z%y5*Q^z$GeQcPXsHwo zotK8uE4=HnoIaVh3gK8tGoC*iCWJ{I&s8|2RsHrCm^>!R6NV>D}j z?Gd$s4e+g*?%mL_-~A~4lXw$m$;2{8LOCES1L;7Ys-49wRX)?Al3K#{iSKeqvfM`q z*AHr<&w5`0HSa@-lJ^&;QBUJ^yjLjNIX@!Huk$o8U>@q5cDXsm@a?7D30c)g4*-c{ z%Fm2Mhx%j-{6UtqXY+ew@n$ZOJ5u5xVqA-Z<1I%IUXcT5JEsV_=^eF^sBF#gF`fN( zqi6W|s1f#s2bmI|GETgR1A+gtzS6&*Ye#(L3rKm#&&O2HL2Y1R&&d;!7#~FAu2D44RpC;w92TD7TkyfTgxo5&Wf)r~?dd9Q`^Q0k_vy6IW9Q82b zPeK-~fhc{;oU#;jkeAylPHB{!Dk9_siLmljV=Ucp|@I`ls0j&$;q$|KR9b?A*k zOj($YoiS2KGaMNVj(UF{xju@Ox@-59gLt9`t%*?5b=DugSpYQDPrLcR#|4xL5$oa0 zU9-P$;5L}APW2sw6VmOG3I!2Mzf6ags&b)Ko!nNeJ70a5?WlKX)b-Bqew>Zdg*Rg# zoPS%w`fn9q_Z{%zb-S4^JTR=o8L}GHqD1kU%EH)x@M z*7B=lGp02^Fiq{a?vgetO(Yv*q`_AqQHv$k!#0kw+fUQ{^cVEJkHk15JYDPbk=9cot8JFFd$#1@nl{_1Otu_=bODJ8zQ8*L&cBO9-YE4Mwvq}x)$>Wst%j?1e$Tlf zG+lA$HP4b5KfA9n93_d5%U1b3%KXg@w*mKcF>2!}de)b}Fm~?LTMFuVLPeylUd4Wi zo_kQ7b0o_1R%l5?F*4wLqkD+`xqCFWu+Gtglt`^88TX@<6B;0D=#n*PHI7w277!`w z$bbBdl;arI=3Zx#wTPKH{H6`*vJcTm>V82=EO!nb_f5OyJjbzuPaX^a}r06<8n%4?Mq_nu^^_WLZGgdt>_p!vE7vVnJ-`L>l z-q%A(Tht!)LbPt@$DD%8)cVXgDKc=Z4^EUocw*d|AFo_;S+o-`pmEJ~t;-~KA8}sk z*$UdpkwC|e4ft~%GtGQTPEV+70AAr-QtM3jlFz9gh|}VFYoEsIZ4;#ho0nI zJISs$r>QTOzMH<{XQKT&Nh&3m?P)n!$)8e7dBi|YZZBv^GgZn#t(l>t%fy8UNrBhh zhjib{+VO64(%_>5d@A%6nszDox()Vf7H6J<&M?ChbKZ##-oHDNyUsY~$6-*Xk;wBAc7h@5t1EZMnl(#hrvuG z?8K+Edl)DtWG)Bw(l;G4(M~F3T5aPUchdKqYHjl3@Oux7{i^#k`dkZs$U+nt!$WiP zz#m9yAGK-4pD0cuMwe%uw1(jq3%GvV9kO}fr^bk()M=!h2a>Zfho83EDd?5{n`E5t zi~vcJ?71BH^1Gk=5eWlrr!?y`Bpdr$IrT5D(sZhUd#Y)7_aNFPRE~TUts${AAikP&@@_qeqto4W8MO3R{S}Q#~}NBxM`T8EnsXqE%`D zS;}WjJNb3xuif6?{3!geot~e>Ea-H!w$9%tV@anz$MGUswrYd- zBpf-^8uy9dGw!3nL$3tQ(mOFL$r`1dlILo*>gAA7^|Ue)4dpZDe2CvGm<}5`Cvrn@ zpC=WBdOEKsTQJVOqMl}X^h5X2Q}Cq5o6ry6L~Z4W@^tdj&`y$4QgAK8y1HhJH-(8< zxsW3KH)=U$lyk3;qpqhZUC(~VoHUWgtgBsYyc`#-LN<9tHX( zN^(yOdn8RlB3}FH3eqlD>|7Eur<>A^;o0{~xR#e~W35fApjAE|o;Vh17?>#W>`}Wj zmV`KAcCW9_qWI0(ct3l7TH%~W3<#tv`zlr$G0sO*)fYMQ+D@7FOPD>b^vCgKIZ!X} zJi4^EDNd{$SEo^=lMcD!biL&m(u%^@@bLaPL3Tah%6l(jT{9LY*AXR4dd&Te_*ze+ zoDy`wv0Ob%{XBVAIaaW>%Gge$pJT6VeiHPDFI#(U_&}k#Fb1fdLIN_m< z@|h9uH8x367`=~HJWq=!jk8nijiL6X#-pP8>h4EKQ z+#flP^*Ep8?NuMS)x6lB&ePD}de#beiIdOvP!FKY5VC?F zbpd4c=SjTYUhI$9#=r8*9N}XNt)ZEgr)cD4p1!42a?9Ja;y%sK0XyJEubLBM+|%|t zsa|@H5*F3-2RUwe&|DZuu4(eUUYRqI%|@y^ZbST&%>CkUB-SMG*2A9^`Drt2~#pbE*+%v3yRi+rRsDHss+Q zM|_{uHOHRmcfr^`_vN_TJr{25H`$}`Mw~QK=^%Cu)tWL+;j3?p2yrFTapXuk(0Wuc z>1Yn86)3&GmZaiO?%cJ@Q^<{Je}*UNmvW*f9bmr7aXNG` z^ud)$Xd+^!+1F6h^;7mcWHV>M{jkk>SQWno(!B+D!Qb_%| zdamXluTF3tU%S)85r)BA zqBRjJ-43~ssvcu_nYUvZ+e*r?4ts#tuH@;(n803#_k3w1=kLBnuW}BETfA~k*;@CU zaaPUNancvkeC6?kf*L}YuWVX@NhW-OOd6`@Dc&peQ@Iy&K0>>(7tL+I(1-8ez+bvK z@pFzvG_~~iSV&!bQ z84h76pCIIluuhk>OVr>_1m$YX*Y7UplJW^ZP-T7kP#JLT(xNQJZO#pKY+8epL&!Os zGbzX249-@P-+P<)m-5Ws-!~O@)^iysF{m>w?sK2lCoWZA2~s zzq|JwO(mgpNU4tD&4@q`elDeEYDn#J)4oDaObYq9PVdurpG!tN@Jv6?L;KKEx{HX? zYW#R{XX1{#bq=E})b%&d^rd@^g}kP%7_*1ruj(hfm-lsirl0x`e+4YQw)|%FAiO8# zo&tSHC*k9`Yv%nLSMFiV^)V@p2;pC|=V>25QCH(_8Xd~{*>w(zo$j7_dGrzQZ7=nH z25<&7^|-3P{o^{*ho7e3#fkSq@!K#QEom1#{j!WRDs=9$_OFjwh9@Jm6TRQP-RE08 zAIyiR*=QgCa*vP_4)BPPA}^FiFJp>^d6Zh6x1JL?>CWqVTeknEZ)QjV73kGVx*1WTBZ$? z7My-6Lygkbb0MAYQ+!|DG(YrU+p53iuts@K9-bcP=RyUYLU%JmIwzm6?#jDrz`%0} zwCA_=eU<-md_zDz585y7`*M6&V8Q)KyO7$wCfS}cz?ai=E3qQfsYj=EQu!PQXwWy^ zSHovrr@?`eP`ivn*WpL(!R}+JZax>IW~J9|=+)07P}}R$p5({id#J=)BNFrL{UpQY z{YmqO>>gg{{tX`|AC3g_#5~P1j!Ya|RZcmM9O0@i##7dDpNKd0t8W=i2I{VLFI>sd z>gYkIkSv_<{it(lj6FD{4%*z;kjHVKtgQM5zq9A#9O-L(lWjYn#|2*)!f{roag>#) zkN?FzwyfzRp0mYo2*{RELwW?d+LNfqd-7WL%P2THdRMNu<2`+yjU{|$&ENBHr>}Ho z0{KbZwTXCUsM8pu-rG)pjp2%l@KayMCfm&)*=&fhI*mCzPl0z4i*te}QR_-ORpc?I zH^r`uJlIDlU%Q3KZ z*G@y#cjlyNw#qcoI@4A@&u6)hv$rK)>8+gUlV*rnJtamP^%s<&jP1|{|5GBTQo|*Q z-TzUhx-Fv|seogw2~Z=|^EO{kvgB)v6FdDIEysH3nI2sCp!r!5UJl*LCem}B7k1Q1 zOuc6AaVneBvaRc>Z#5(_XFYahe@-OU|;(vesT2Juda{ z+)n?GFrTn5m7_!(%uC`l9b*;8jx;hU)*6WtM;gEXskPHf>Q9_?)eqF0bj?_KyzlPZ zk(cM6unuxNedEYn%>jJ3T0IK$r|;``Cq2XJ@rK+iyQjT2Z7=^wPst9zmkztfq;aut zy0R$OPPnE=rBc~ec~!oz22e}utyo7bxDXz)2>WaO=1Mu65{vv1PfXKe5lXLQ>0|h% zF6W#OcHIAFD~4u;_2@x)SFBtsxuTA+a~<2^3&UNg8SD3dxaZk@&Mcp2$5@)LuW~J7 z9YQU_2GW;$8nr5E%M}hR@7Cn6HKv}bv6$EKJp;Br=FF%;mc^_+ADr z!5tcraRtSD=I$}0VVh2Gl(3Y1@K^N#e(O2w1HSX)xI*tv8jvKs*3N;v!@p+VJxd+} zX{8HFE&q`QSf+KG>M^DV<#igv33aXqfBvkq9@ySjnhAsVjiI^pA_P%05a9nxPkjF& z?t-NKa-dQ>ob3ADjhC*!PJ1uyA1E8ci`D1+{Yk#uNpJGs7CpV}{uIx8LE>b~mnuK? z=Dy+2Wq7~xdx4}&->dg5_Aq+BTiVZD=p*#pJZ32aD8o;=kL;WFrwrnEcGLJQI;#ER zdzrK$O7eE*zi7|M$C~n8tB~ILL5h5gboAgysi=!~+KW9x9WAdFLW1MHTj%FK<#P^@ zHu244;%UXlk;{8DN|=t_dg9%7Gz$v#UOeBG8Rl!?l1+FIA-`@n+EsM}RkEFrb?N*w zp4MB+xkj>3<8EelWRMqiu<9Ig5gEl zAN_)@>vmONCc0dQdLxJyk&RE(-p}7CZIgnm0Zx@2({BZLemX=Hj&HB|?%!MNv#gRX zw-08k=oz`4h}EA=eR=w0(kk@c&MrhF-M?7<(_Rcm2BpQC9jbTv(>l}$0f4=8UPyI2!^sY=#%9p-yKMho9FO3egnQX_Hf%@s$&$9~FVh;YQZ#yr? ze7-!sblXny9EbQ*OFoYu;7Wv&lDbj$Z?C7O%jMT^_fl)UZf34iokr^WL#yt_tPl)*g#vFi#F`)&_< zW7%xHlG-)yt>%S)QG9)6K0I6HIUc`KKL0*twU;Gw_pvnk>5ia}hLd5H_;NBOQEy@k z_Gak>++kOIqceW%X$kbUq`Mj86-Ne*tsEh8%0$h6LE5eQ5nk3{U=4i36ewGKC-LZH zi}tjMT78S}WTSVjg=GF)N&JcgPp(=J`0%#{|zLo*}undkS1p&Hu2$M5+59`5t|voO@(VNd~Iwvg3wt;w6z z3o#10M^Iwg5#P1n8M4#vbv!lQWaWA$BfhSLdb8%mcu#~QfaA+`1IeYMIAM2rIZkAn zW7_dhIt1CElddQSy{o+I>n+r(E}3(5-}dh^FG)|rG=ryWYYr^5xGd~=64rLssJ^x% z|-vP|?#_lb++Hwo}wh%^N>k|2-WKT;jl^_ae+H3;#vY46xt+S1FY z15#jXy(=m&%%xOX8mPzYwcM34u9xXrG!%bz6ETUK*9v>`nXzZR%^8bsNpH?L1|SH>7e5 z!X>FeIm0(>e)o=9u<;Jk!U&h?mo<11F+X}0KQ zzw)__G}9~;HbqOc^^vT6fVR{_$7sSIT<< zjxg!fM|)^MIwz`FH@NmuLO+sRY)P5JFOu)NCRs}~>Kav_W@}m?X0nWyW2OGYlWF1y zU-i2c`0`^qVL~a<1KY93=*Md1ags}U z9e35;AEcc&F*V|HOG|BH#|^u9U6k{>bzd*d5d+hW;p(orG^W@QL38Y%3!gcB4X@SC z>!f)P`c2O*w*Ic;99qPPmSbc;OE#KQgLp2p4TkbuB)?0VwBvYF+A$~V;R^u=gQui* zyQ(z&rLAY4z}U7R^X=rR)cM@r3RKnDR6V;-M8}n>^=aGA`k${18b678F3)z%_^-TI zHtPxL&R96MQ!>_|4d&|$vF|1_TF`y9noIrpa?hhhI|O+kX%Gc>L98o1*JC1_UvDBs z21fvNrH`ew@~KnoXcBJpqvaU!^gFrip-C@9N@V$1SEfm?f z80S^K&tol)-d-CxT#KOOT0$I}qTZxuN1IUlZv$|CNW7&1&O=HIM|c^pSfY7`*GK(H zWgjoAvHKqbM(*MLoIkCeAWJ@S&gZV#-1=n?ZlxHO;z~}Mq&81f-ld__`l(hew1BKZYhk63aya{_Wd2`m z1g?ytxBo_x)#pY3M)&e~a*QKfIe%bHL5*+}qAjQ?A1{&iQ%SBlu)5`L%15mjlI)ioUuBX64T?(6G<}u_t#&<7)p1MuiWNKx!W!>-> z;ZmIA7JkOmVZNR`x=b^;w0q=8sUheeZE)@mnc}zC{fxmSPP!`V(i2i3D(2@X&UA~TZL)^y(W!fXtB(HPck*2>ppA1!9w_cM{CTc9NG~KExVHa-3%6oQS ze#PA5`Si>X`fsY2sQCSjbk3~%c%|3QmM?J!a+b+=JJ|zs9Jn#G!(Zjk$KydK?`!E@ zFZDI*&=G-`MsT5*p5;NrLK}r=hZL#{I?2bXcdM~pB31YnTQZhZd0JFiR`;}!US9xV z>DQGkl@Fa=zMJy0SR?cnmStL&biJqEHLwp5XgaK=ZQn-+azbm`X39EXu?8=OB@+mP?$c=OcaAFTZhQj(*AYpFfGB z`$P0e`X>9Sd=y@j`T_T!)Gqxf-P>_GJ^N7-cXgUo4f?gOtY9^_9Q!@f;Ng5Q|FS&3 zH$$3S*~wzO7GK5ONsvE6oMjS!IwMXeA{lM*@z&rS{S5cDAfMJxJ{q_6FSc^D$>)fT zJFmuYU;w??H*R(eXF!fKI7Uc6l3rTOCGJ_P6{m6oTYF8+mYzKF@k}*<3HE^Xs29I) z=W9#o+4YZ-+_tRQv!A;*={3hs`mll1bNepm8Dd^zK9W+;tv04z8Km3X&ZJli)j0&u zjrh#l@xI-5n3T(%8T^6#-5Q`St3dDm1qu9rg5PdCGFWMo8l*q)yj2?JUXOl~e+wbW zirPq3@BN&xY@|c|ND7}ZQ;&5XN!l0tYjX4dIuS60G_qq|w)|d$Kc6=H`SA93IeIsJ z4BnUMGiK$uN>v{J`d}01mcL0-Qz1yyxR3>$37}= zX+_dm7wwQF3;S=S`}2BfFH6sK%_Q%phv(NC?c8gCq}?^!_*fts@a=Z>U7GT2JlC6S z)y@yw&C)YNdRi-VqV_q>;07d>%;`&?^OBhs%;m*3Wq)~P)ri4SLg(<*0rO8#M&R=~ zR5C6lQia^2%4@M?l2#JqdDzL&tk=%%nS7r$so_$WNOSGURRFD^Uci|3L@zI69_phu zYn1jPmMpK#$NZSRpXt9GAz2vf&JU4s+;N1+_mw>9BQ2S$zLu9dC$x4g)Z}c3NU}+$ z5-HHfxL--d`2qDaxtLa9O9juX&ZYU?Prc#etu<@LYEc?EaSLm8Kq=UoJ0)4^#aJ?( zb8;;0#WQq%eiEyy7*8P|eP(a`KD2Nvrp2CrD0I(y^}z8Zo;nroT$jWv{pB&`aa(7) zmd+VV_J7paWy}y71Csyqnr8-WHBB8s^Xx~`bm&hbaIRUVS?WD) z4(y`#r(c$oqzC3ILJplnMXfF9{4P{zk4_2UINs3(~9Uty_A%6 zknb9Cj$G^J)N{(>=;gEMyVlzD3(;rmnYO>#T<78RyNW%1(~e)yW4HN*Xw3VRsx4L8 z#VK)2I1E~cpbOEev>{E7wtJURy7lo7`0*EVla@c*PwSG4yn#}()$Au39m@ee+uy&w zyNUMQuuHezfTP~o&U%WKeGB{@IewQm{Wf0pepqNz?{=_7$vN4PcHj<${5Z-nuH;B4 z{2Yu}OUeA5KflA;3tYXW|AA`k*x3>Rd&C9z`y4=Ydf>xOm4_766+*TLPj8B1 zee4#KS5R)&WDo_$vB&n3L@COV6E%D2AC7}>aR@~lAAuwp?cj@*hNFPI9@o7-@vU^5 z5SF@56oDK5kmf{xj>B7mrt^d))YF_VYL+u?XrU@62jppwAGnfrLC4#ZZi`Kw8(MM{ zQCeEmPK4LQ&2m~>YkRd}x#~hMz2wyU1U#tQze${)|5xvDPm)|{$=Z64NU~}qh-Xr4 zlzoKt+}B8bXQ07v1cL&Da$IY;79N!yT_!)pnE>RN89FkU>O%iL`+IjbhND0A?qu7Z z{glr8)5}uc-4uOGXI{7tt>RseR{mUP_3q60qr5S!_Kjig3LC>^ImWs4t`GMJ*58L; zz>7H!av; zN4ex7vIea{KW_|oJ*;t$XR2xgG$k#Rx4%1r_Qxi>9tLgaPusMm;N0__08t>+_o}IMD z)qFdy9knT`O3sp&Jh{JiJ;%H0yP-d5iXrDgtogNU2;T{f*LW0rC|MiJw2>1!NgPSF zvX4f9*4)7t*>wVX;AbO`W3xj{*_-d-}_CJqNdkMEuu79qmNef zm;3y7sFk*Ocq_=5U*|ky9gx$e26Zj|)U47eF5oMBx(_wdxW-)iJby>T$H%HX_2=+H z>4`CQ7w3z)kCHb^{2ev?V%MG+H$fR*k6%?v+JGP7uY0$b`xv7djskVdnpFxb8qOW5 zjpOQlg0?PJK6g&gS8LWJ1^y9HNzcdY;;`h#SI-<5uA|;7=~?~j(KGlS&3SlV`3k$* zuCp8LCcD+X!#-deY@^*_6Sm#%M9n*06WI*vTtS0$?jF|5 zTeq(l)OnU4_5JA^Smn8MqHXN!<4!1R==ZEZJE#xQes%!AKj8du6^PRcNKeDXueso! zM;f(ahIGuSACnG4vb?A5K%7pJLxfH(eD)^pd*-euF7#!msgp#sWtr&YUto-SZlNL4 zXWtMW(Q6FHn2PY)yzYsm?mFq!Lke=Ayga1GCQv9xk^^qSKd~U)U{XUa$O@!4y#_NcyZy}{V43ki2zBYIj-c>jgz5PtzqtIhOgEExz zqo&)9T7_L)_91B?q~@NCSgP+E=&Vn^Mt;&geQjn)qoBOJd|p1@4d*jLYk+G_Px++{ z@oX2DXp`s28gs=&T+!maR3V%z&Lx_U=dn&pFAVv(=5_gcca|ET3_Q|R8AB%L%2=3T zDXtYADMvkAm-WHXK$>r68GArv-CrM-=s-`el2pud&~w&o0LAZCn2- zzP18J;-#$qRz|WDujxJ2u7rFW!<8*~O`eQ-uG<*)?*%Q-zYbkmnK%>WQch|oX{faJ z5c`Ri2v7}|pag+L0xymRfWzIFII&MdzRA`k+_cd6W$&sg> zQd^n$OI8({u5~XKJ9}oDQNr(F0OIxW;_KrKrzX$r=T1tE!wS;4drZu2)T>4oqRZuU3Xr#c9;I<6my+Cht-xI59592vvawG*_ z*W1U_!`!QIu3~U6~k9 zJGN^&jdTtl-;%Tg^hIK?Jhn>Dl`l_!F){Vy{9v2(Ejs`0yXr0nWuRRo3)3Z`CwY_^Q)K+sseApW<4!aed>ORNQi)&RC&d&uzAnxsoQVR;}yW z=~%kX<9a<^Q?5u;DjyMZ{XuY|^>4SGjqjab3`)nQ z37smrb;ws6=Yo29j5d|L{tO3w#rq=VLv32hWy0vg8G&iybUDD$#|dJG&v4evP7YD( ztrM<1EeslEc%9Pl%cTGE_q=uA@%bCM^5OsV^6EY$Ezj0Gb#*S)8r?@-*9_%JI(B(b zUv}Y`=iZjfhIHxwdywYni}vbEE`O=>T((Z>Ib?QCXS%4q2N62(H=Za($gf!1h*f{c z&N-h5;w^I0jQ9Q>m9O>vou}?t7n3IYl+SgU^psA)y%lAOr4^OCCRFbFKQ`Gn?K%f_ zNj+Drx^3eMbNViL>l{k%@>d~boTFp99IJ$Ml-~oP?B2s?_lwfDZBez6>}!vN-l3^p za`ZhfzhH8iU2nHwPPrxZZIrn-5SO|ne_TrfmFIbG!4iG)bibzc*uwPyWM0z|iVo?P zy*9Y8JaJ?#w&69?tWB**a;L(4v|-?N{zR7Yef6Bxaay%&^wC5?t%5pd3Z^RT{6b-V zrT)Ryb+joFxsUiW`{(LcFxUe^Bc+Zr{nov~`6S&sZPg`Kq+P=)uhe7toIYDf8um%0 zYbaela_o}vMB==?($)nT zqpz&NJx1%lwIe=yQnFD!?x+W7uu~cAm{V&*eOAjh)NHgd+(`$Lu^zYDJ^WsEI?;;v zpj3--y{0@T&(G^KP0slHrp{aXVy>|~{j%yjot0o_^mEYq{-W-SvwW}K+uQkK=EI=R zs}5l<50uZ;+tR;OhB)5w<-L|g7@01%H~Z59)_(<`tq9H>DYa|GU7JH`#LFe2PiiNT zp{F*SUtSmK7A>I;wNyT-k7Aa``k?dq`|K|TQBv+MV4K~;@{?@HbN(uokKf1k#gDm zyfdK^ja(K-i}GWWe8yE*j8$7c5IJ$q#j>(4=PT4-a6kMaeI+_17c5oB*-zo5>1P-mS{1Z^4vdtO~Bs+<-7ItQta%D zJ>K^~k4Uw4l7yussXV_{oz@sgUDvK%r2G#t?~1a7^5rc=5#RYJzc{LLl`-a-H?>eN zYYdlpsD;wX-{P9%J5v5#@K?vLw{@*^FC)4Xs41p>bp(CVck1bAGc%Oy%iEI=Jrbcs zf6N1|;6XdovGba8Nd{UpPpeHkxkbx400CuG9@8Gs&4}uoYwvbi`sUiZ@|b+w<9npk zm-mU>tG>SX6_C`&TR->V_^dI3{g-1db>wq6W@wHLy!IIBd^};@_`-`c$iC>c*#dzl zGwkPzS+7>t=MDc>>8YT0D)H#aUH!tq@%fWJYms)({yF(oV4=2# z_&p)X1r6vFGv46HrO9Wb90i|y#eA>=GlG9zaN&wsl7W9G4NI;VU4ao=XP&e)Tk1Kq zU1~`qCn+(oO}qow|0r;#Hx%L?h}VJSWsG#LDIs!Qz=w#m(w=%)-8LtJQku=Y&2{R} zb({e!o}u$vYLVDFVU@qL-2FYRRiO{qm{ucB2J)ou>RKA(ijl2#65^Ej4iYFWI11fe z3q04d6=x*2a{Ua%wdW-rwdfG_OACV%+t)F&EdymFU8QrH)Hd6Zr|79&LPKQPsOJdD z9Te+n)?;8k`$rqOy-a!&4YgyO^y9JenU~Vu|NYtH>!7#m@T8BlLrhAah(<`8nrBWfr*yZyrt3FTx(9V0OKE&zyz8%1x?uxdf0xn=?7Xh8rSu{j z>^>)@m)OsB-wc#RPd{=_@BVU1L$02aQW|pgEKh03)pKh~L$03fDGj-LejueGSI^I< zH00{}YDz<{-dpjk`z9N~6Yf)Z&V8#j?HU`$|8KMlZ4f89W6;{T?XWF&IpQhQd#Bxq z)CO;J32L^sXX|Lovelq5XhXF+tvuch9@{{7Jn>&;=c7$0s@H?>C|We}L_YCsLQ2Ta z1^#n0bWOX>?n3!>pg)FoQ)uyFZ+jDX-Hz)!k;}48NKe_MU4nhn1<2*U^YP?=YdgLP zuno1&hx8NB$OS;%O6LM_3@vR%J!$CzyBQpa`9shobMHX?AL{&eq;?|yplf;( zbw_bE;b^xZMLF4iGw^=IWg124M)1$|FoLUXUV}JqLyDZKrQ?xP;3Gs)+hQAmvF7qCRh5xT9i|tTaX?{ zt?e#r6C5YNiDki!Xhu+L47kqczneCVY@eFg+Pr4G`Nj(euOAy7-?8QL@u}_aym5TP z$o5N`sr;I8lwQ(YJvcbj+Tz_~+qRFR{i^c^^Qza6jE*($9G}|MB(Zb1p6leAx82pe zZrj+%)cA+Tnm0|{K6U5Fwy{l9QZEH@UeDlah?rM%sY}_6g zMw;73J~FZGwvi2Yyn$86w{C3SzHMS7>W)k`H%#o)We6!2{gLHYG>G&Vk1zgL_`YZM!t3a)8>%n~9z`Lspa00gwr?Ufin)($u zRXZ8aRKF5$b}hx%5xxa`o@ICk`CIXZ`RRC$|2262qKVc1S$Nyx9PCcM4fDnde4*y` zI5}I15%YYE?Sr_twi>5s7vd}MZ^T*J5YCn^!MX3Hc=qnCIQ<>QozBbgcF>h}mAxJB zja`Ek@H;Tqti`PPPP{{QqkX%*3tjDI+zov2U{jvQK)-1PS{N96+^iMEq93i&H`+NKCqNnIB8bx2Rpy;<3>{zj|SX2xYi*2T`;uXb7#mPlcoKn29 zSW+x4UR8WcacZ%wIIZ~BVtH}89kH(!uP$CwoKZB3GmEo|vx{?z*B0MaoLj6YURS)n zI1ek(=j=ZfZz#?$E+__zRmJLJO>tpyQSrv&;$oqEm)zwtr#vY zD=sgtD6TB7D&AgPU0hRKi#6hY`)9><#oFTf;+@3}#f`-1ik~ljq4>q(f#NfbO?ORh8r%Ac$+2zY z6Qdi(woZ+08yoGrY|F@oZ4+DjMj~!pcH1`0I*k#J`YxN;II(r?j=qtI7hSPoeA|W{ zTW;SxwsX;jD!uTE(TS;%4J5j7Lz!$`xnTsP8>10j2|goJeOD!hV~OEa!Enr@g;$lW z7mk(5zN-?9v4|U21;sIs7F}HdS+ucAFTA=WuyA9U9Jm^j_?D3XJFqdkSaeO*cG0FP z-E+-tBinj5;lIYUQ{$UQ#~R}v^aIi6LtPKTi_NZqqr0>~` z{~GU%_FJR5jYzqwU%GeHU%Pt!43JlvKx+z+1_h`{gmFgC4 zuhIiIX9NbOvWv#eL1xOMo||dXDVp?_FzJpk=`BgB9Z9NNLaH4e_1>}#tF+!7{D1K+ zxlD_9Gx#myQ*~Ky&>yIJX-kP(svhrq)hg1p4hr^d*6<& zc*=di7w66YABgF8BJYS6z|fDHt5X~p*Q^Tp)~pVU7hUm2FTd!D;BoOPulM$g2OR@q*AQZ-gIMJ*E3Tc+ m+lN*~`A}*<^mfUaE>G<)AB=XFr*@YQI)Bu=`2PStcP}6S literal 0 HcmV?d00001 diff --git a/Common.res/Spin Up Search 1.wav b/Common.res/Spin Up Search 1.wav new file mode 100644 index 0000000000000000000000000000000000000000..468f6f74fd80ff38c451523b473e3edee527590d GIT binary patch literal 79122 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 literal 0 HcmV?d00001 diff --git a/Common.res/disk.png b/Common.res/disk.png new file mode 100644 index 0000000000000000000000000000000000000000..ee4625ff3ef05a534ce94b83665f939f1523067b GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^DnKm5!VDyTvomA^DT4r?5LY1mABg?~38KKcSJ}cq zh3qAszOL+-IA!_O1=}<9Wr0FAo-U3d6?2jk6!dhtw) ze}~294k4${MrDd74bdKqTpXO5fvz2m7K%y?43~GSE6T_>Uk16s)78&qol`;+0G;nIyqs7P)K8C^D>ti?3eux+&#R&wL^u&cA@0m zsNL(`Ogcp^ZaPLklK!=dFW1}UmTA=wvBt7v<&)m|eQ`B;ko|7==18eoH=f^Gu;F*f zpY40qhK@yhD`|EEWL3A=o!uekH}&M25w;xW@MN(M*=9g z(bL5-#6s}s6i2=z3LLICCq@?jzrC$aCn{KAmRj@dsCge8nG27uVEW8GONfoPV{SvJ z^K#dYBO9MBZ1`uod9$2v6H7zmV|SnIJGN_29`p^`b3-juP2#J4=*`mZgPeDn?YiB* zFXH<)ErL7wu4&bkRq=&yWZv#yyIf2A%dG$V;`5)si!JB7`z|@|?~U{?H<_Y;->6@D zJG#O2Xtb*6tegA4o;FSko$BWoH8;ZZ$61$iZO@paR~y{=x>YF^6g{4cVua+y7=Zi>hJM;{N2K=}*?1T=%S$yg%>vIsFXdl8!FpzBtBj(9mFJ=RmLYu&iZXZ0q!2I-PpH`y1!JEl(6&q}NomyxUb6 z)i=0(X_J_#PWD{qyT7M7KYX}%f2v>0iHpBYKmPn&zsd5a s_T1Ac(LYPr|8j3=pQ*aIVA|q*K`)7Tmd?%1K*uw9y85}Sb4q9e0GIK7SpWb4 literal 0 HcmV?d00001 diff --git a/Common.res/facebook-logo.png b/Common.res/facebook-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7d723bd7fdc96e1d09516960b3fb37846d422fdf GIT binary patch literal 13486 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 literal 0 HcmV?d00001 diff --git a/Common.res/floppy_eject.wav b/Common.res/floppy_eject.wav new file mode 100644 index 0000000000000000000000000000000000000000..770bdd30337d0a5d39171d6f33ba21d01692174b GIT binary patch literal 104266 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 As{jB1 literal 0 HcmV?d00001 diff --git a/Common.res/logo_apple2.png b/Common.res/logo_apple2.png new file mode 100644 index 0000000000000000000000000000000000000000..5dba7d6fed4c6ec22b66d8084c4fd783717d681b GIT binary patch literal 14308 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 +#include + +#include "simplexml.h" +#include "../cemulatorctrl.h" + + +#undef debug_printf +#define debug_printf(X,...) + + const char* lastxmlerror=NULL; + +simplexml::simplexml(const char *encoded, const simplexml *parent) +{ + const char *sptr, *tptr /*, *uptr*/; + char *buf, *end, lastc; + long len; + keyvalue_rec *ptr; + + _parent = parent; + + _key = NULL; + _value = NULL; + _properties = NULL; + _children = NULL; + + ptr = NULL; + + // decode the xml string + + sptr = strchr(encoded,'<'); + if (sptr==NULL) + return; + + if (!parent && strncmp(sptr," \t\r\n"); // og + if (sptr[len-1]=='/') + len--; + + + _key = new char[len+1]; + strncpy(_key,sptr,len); + +// _key = (char*)sptr; + _key[len] = 0; + + + + + debug_printf("found tag:%s\n",_key); + + sptr += len; + lastc = sptr[0]; + //OG Manage autoclosing tag before entering the parsing loop + if (lastc=='/') + return ; + + /** Parse parameters ************************************************/ + while (sptr && sptr[0] && lastc != '>' /*&& lastc != '/'*/) { + len = nskiptok(sptr,"> \t\r\n"); + lastc = sptr[len-1]; + sptr += len; + + + if (lastc=='>' || sptr==NULL) + break; +/* + if (lastc=='/' && sptr[0]=='>') { + sptr += 2; + break; + } +*/ + if (sptr[0]=='/' && sptr[1]=='>') + { + return; + /* + sptr+=2; + break; + */ + } + + len = ntotok(sptr,"="); + if (sptr[len]=='=' && sptr[len+1]) { + if (_properties==NULL) { + _properties = new keyvalue_rec; + ptr = _properties; + } else { + ptr->next = new keyvalue_rec; + ptr = ptr->next; + } + ptr->next = NULL; + long l = ntotok(sptr,"\r\n\t ="); + ptr->key = new char[l+1]; + strncpy(ptr->key, sptr, l); + ptr->key[l] = 0; + + debug_printf("found property:[%s]\n",ptr->key); + + sptr += len+1; + len = nskiptok(sptr," \t\r\n"); + sptr+=len; + if (sptr[0]=='"') { + sptr++; + len = ntotok(sptr,"\""); + ptr->value = new char[len+1]; + strncpy((char *)ptr->value,sptr,len); + ((char *)ptr->value)[len] = 0; + sptr += len+1; + } else { + delete ptr->key; + ptr->key=NULL; + ptr->value=NULL; + SETXMLERROR("misformed xml 3\n"); + return ; + /* + len = ntotok(sptr,"> \t\r\n"); + ptr->value = new char[len+1]; + strncpy((char *)ptr->value,sptr,len); + ((char *)ptr->value)[len] = 0; + sptr += len; + */ + } + + debug_printf("found property value:%s\n",ptr->value); + + // OG avance + len = nskiptok(sptr," \t\r\n"); + sptr += len; + + lastc = sptr[0]; + /* + if (sptr) + { + lastc = sptr[0]; + } + */ + } + } + + // Empty tag? + if (lastc=='/') { + return; + } +/* + if (lastc=='>') { +#ifdef _DEBUG + printf("ignore\n"); +#endif + // sptr++; + } +*/ + len = nskiptok(sptr,"> \t\r\n"); + + if (!sptr[len]) + return; + + debug_printf("%c%c%c%c%c\n",sptr[len],sptr[len+1],sptr[len+2],sptr[len+3],sptr[len+4]); + // skip comments before determining tag type + while (strncasecmp(&sptr[len],"") + 3; + ASSERT(sptr); + len = 0; + } + + if (sptr[len]=='<') { + + debug_printf("key:%s",_key); + sptr += len; + buf = new char[strlen(_key) + 4]; // 4 => "\0" + sprintf(buf,"",_key); + + while (sptr && strncasecmp(sptr,buf,strlen(buf))) { + tptr = strchr(sptr,'<'); + if (tptr==NULL) { + delete[] buf; + return; + } + tptr++; + len = ntotok(tptr,"> \t\r\n"); + + // OG Autoclosing Tagfix + if (tptr[len-1]=='/') + len--; + + if (tptr[0]=='/') + { + SETXMLERROR("misformed xml 1"); + return ; + } + char* keyn = (char*)new char[len+1]; + strncpy(keyn,tptr,len); + keyn[len] = 0; + + if (!strcmp(keyn,"![CDATA[")) + { + delete keyn, + keyn=NULL; + // trim + tptr += 8; //strlen("![CDATA["); + + const char* ed = stristr(tptr,"]]>"); + if (!ed) + printf("CDATA does not end"); + + int trimleft = nskiptok(tptr," \t\r\n"); + tptr+=trimleft; + int len2 = ed-tptr; + _value = new char[len2+1]; + strncpy(_value,tptr,len2); + _value[len2] = 0; + debug_printf("found CDATA value: %s",_value); + + // closing tag + delete buf; + buf=NULL; + + tptr = ed+3; + sptr = tptr; + // skip + return ; + } + else + if (!strcmp(keyn,"!--")) + { + delete keyn; + keyn=NULL; + debug_printf("found comment"); + const char* ed = stristr(tptr,"-->"); + if (!ed) + printf("comment does not end"); + + tptr = ed+3; + sptr = tptr; + // skip + //return ; + + } + + else + { + + if (_children==NULL) { + _children = new keyvalue_rec; + ptr = _children; + } else { + ptr->next = new keyvalue_rec; + ptr = ptr->next; + } + ptr->next = NULL; + + ptr->key = keyn; + + + debug_printf("adding key:%s\n",ptr->key); + ptr->value = new simplexml(sptr,this); + + + // OG Autoclosing Tag Fix + int l = ntotok(sptr+1,"><"); + if ( (sptr[l]=='/') && (sptr[l+1]=='>') ) + { + // autoclosing tag) + sptr += l+2; + } + else + { + end = new char[len + 4]; // 4 => "\0" + sprintf(end,"",keyn); + + sptr = stristr(sptr,end); + if (sptr) + { + sptr += strlen(end); + delete[] end; + } + else + { + delete[] end; + SETXMLERROR("misformed XML\n"); + return ; + } + } + } + + sptr = strchr(sptr,'<'); + } + + delete[] buf; + + } else { + + // OG skip trailing space + sptr+=len; + + buf = new char[strlen(_key) + 4]; // 4 => "\0" + sprintf(buf,"",_key); + tptr = stristr(sptr,buf); +// ASSERT(tptr); + delete[] buf; + + if (tptr==NULL) + len = strlen(sptr); + else + len = tptr - sptr; + + len = removeendingspace(sptr,len); + _value = new char[len+1]; + strncpy(_value,sptr,len); + _value[len] = 0; + + debug_printf("found value:%s\n",_value); + } +} + +// trim ending space +int removeendingspace(const char *str,int len) +{ + if (!str) return 0; + while(len) + { + if (strchr(" \t\r\n",str[len-1])==NULL) + break; + len--; + } + return len; +} + +long ntotok(const char *str, const char *tokens) +{ + long i; + + if (str==NULL) + return -1; + + if (tokens==NULL) + return 0; + + for (i=0; str[i] && strchr(tokens,str[i])==NULL; i++); + + return i; +} + +long nskiptok(const char *str, const char *tokens) +{ + long i; + + if (str==NULL) + return -1; + + if (tokens==NULL) + return 0; + + const char* p; + for (i=0; str[i] && (p=strchr(tokens,str[i]))!=NULL; i++); +/* + for (i=0; str[i] ; i++) + { + const char* p = strchr(tokens,str[i]); + if (p!=NULL) break; + } +*/ + return i; +} + +const char *stristr(const char *haystack, const char *needle) +{ + long i, n; + + for (i=0; haystack[i]; i++) { + if (tolower(haystack[i])==tolower(needle[0])) { + for (n=0; + haystack[i+n] && needle[n] + && tolower(haystack[i+n])==tolower(needle[n]); + n++); + if (n==strlen(needle)) + return(&haystack[i]); + } + } + return NULL; +} + +simplexml::~simplexml(void) +{ + keyvalue_rec *ptr,*last; + + if (_key!=NULL) { + delete[] _key; + } + + if (_value!=NULL) { + delete[] _value; + } + + if (_properties!=NULL) { + for (ptr=_properties->next, last=_properties; + ptr!=NULL; + last=ptr, ptr=ptr->next) { + delete[] last->key; + delete[] (char *) last->value; + delete last; + } + delete[] last->key; + delete[] (char *) last->value; + delete last; + } + + if (_children!=NULL) { + for (ptr=_children->next, last=_children; + ptr!=NULL; + last=ptr, ptr=ptr->next) { + delete[] last->key; + delete (simplexml *) last->value; + delete last; + } + delete[] last->key; + delete (simplexml *) last->value; + delete last; + } +} + +const simplexml *simplexml::parent(void) +{ + return((const simplexml *) _parent); +} + +const char *simplexml::key(void) +{ + return((const char *) _key); +} + +const char *simplexml::value(void) +{ + return((const char*) _value); +} + +int simplexml::number_of_properties(void) +{ + int i; + keyvalue_rec *ptr; + + for (i=0, ptr=_properties; ptr!=NULL; i++, ptr=ptr->next); + + return i; +} + +const char *simplexml::property(int property_number) +{ + int i; + keyvalue_rec *ptr; + + for (i=0, ptr=_properties; + i!=property_number && ptr!=NULL; + i++, ptr=ptr->next); + + if (ptr) + return (const char *) ptr->value; + else + return NULL; +} + +const char *simplexml::property(const char *key, int iter) +{ + int i; + keyvalue_rec *ptr; + + for (ptr=_properties; ptr!=NULL; ptr=ptr->next) { + if (strcmp(ptr->key,key)==0) { + for (i=0; inext); + if (ptr) + return (const char *) ptr->value; + else + return NULL; + } + } + return NULL; +} + +int simplexml::number_of_children(void) +{ + int i; + keyvalue_rec *ptr; + + for (i=0, ptr=_children; ptr!=NULL; i++, ptr=ptr->next); + + return i; +} + +simplexml *simplexml::child(int child_number) +{ + int i; + keyvalue_rec *ptr; + + for (i=0, ptr=_children; + i!=child_number && ptr!=NULL; + i++, ptr=ptr->next); + + if (ptr) + return (simplexml *) ptr->value; + else + return NULL; +} + +simplexml *simplexml::child(const char *key, int iter) +{ + int i; + keyvalue_rec *ptr; + + for (ptr=_children; ptr!=NULL; ptr=ptr->next) { + if (strcmp(ptr->key,key)==0) { + for (i=0; inext); + if (ptr) + return (simplexml *) ptr->value; + else + return NULL; + } + } + return NULL; +} diff --git a/Common/3rdpartylib/simplexml.h b/Common/3rdpartylib/simplexml.h new file mode 100644 index 0000000..09a9f4f --- /dev/null +++ b/Common/3rdpartylib/simplexml.h @@ -0,0 +1,84 @@ +/***************************************************************************** + + This file is part of SimpleXML, a simplified C++ tree based parser + of XML 1.0 documents. + Copyright (C) 2003 by Brian Ecker. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*****************************************************************************/ + +#ifndef SIMPLEXML_H +#define SIMPLEXML_H + +#include + +#if defined(WIN32) && !defined(UNDER_CE) + #define strncasecmp _strnicmp + #define strcasecmp _stricmp +#endif + +extern const char* lastxmlerror; +#define SETXMLERROR(STR) lastxmlerror=STR; +#define RESETXMLERROR() lastxmlerror=NULL; +#define GETXMLERROR() lastxmlerror +typedef struct keyvalue { + + char *key; + void *value; + + struct keyvalue *next; + +} keyvalue_rec; + + +class simplexml +{ +public: + simplexml( const char *encoded, const simplexml *parent=NULL); + ~simplexml(void); + + const simplexml *parent(void); + + const char *key(void); + const char *value(void); + + int number_of_properties(void); + const char *property(int property_number); + const char *property(const char *key, int iter=0); + keyvalue_rec* properties() { return _properties; }; + + int number_of_children(void); + simplexml *child(int child_number); + simplexml *child(const char *key, int iter=0); + +// simplexml::print(MyString& _output); + +private: + const simplexml *_parent; + + char *_key; + char *_value; + + keyvalue_rec *_properties; + keyvalue_rec *_children; +}; + +long ntotok(const char *str, const char *tokens); +long nskiptok(const char *str, const char *tokens); +const char *stristr(const char *haystack, const char *needle); +int removeendingspace(const char *str,int len); + +#endif /* SIMPLEXML_H */ diff --git a/Common/ActiveDownload.cpp b/Common/ActiveDownload.cpp new file mode 100644 index 0000000..630e631 --- /dev/null +++ b/Common/ActiveDownload.cpp @@ -0,0 +1,627 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "activedownload.h" +//#include + +#include "ki.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + +const char * activegsdownloaddir = "_DOWNLOADCACHE"; +const char * activegspersistentdir = "ActiveGSLocalData"; + + +MyString CDownload::persistentPath ; +//CDownload g_download; + +int calcCRC(const MYCHAR* ptr) +{ + int crc=0; + int l = 0; + while(*ptr) + { + crc ^= *ptr << (l%24); + ptr++; + l+=3; + } + return crc; +} + + +MyString getfilenoext(const MYCHAR *url) +{ + MyString tmp(getfile(url)); + int pos = tmp.ReverseFind('.'); + return tmp.substr(0,pos); +} + + +MyString CDownload::getPersistentDir(const char* url) +{ + MyString dir; +// dir.Format("%s"ACTIVEGS_DIRECTORY_SEPARATOR"%s.%08X",getPersistentPath(),getfilenoext(url),calcCRC(url)); + + dir = getPersistentPath(); + dir += ACTIVEGS_DIRECTORY_SEPARATOR; + dir += getfilenoext(url) ; +/* + MyString urldir; + getdir(url,urldir); +*/ + MyString temp; + temp.Format(".%08X",calcCRC(url)); + dir += temp.c_str(); + return dir ; +} + +bool CDownload::retrieveZippedFile(const MYCHAR* url,int _order,MyString& _path,MyString& _short) +{ + return retrievePersistentZippedFile(url,_order,_path,_short); + /* + + if (bUsePersistentPath) + return retrievePersistentZippedFile(url,_order,_path,_short); + else + return retrieveCachedZippedFile(url,_order,_path,_short); + */ +} + + +// ***************************************************************** + + +// ***************************************************************** + + +CDownload::CDownload(const char* _baseURL) +{ + requiredExt = NULL; + bTestOnly = false; + bNotifyDownloadFailure = true; +#if defined(DRIVER_ANDROID) + fromMainThread = true; +#endif + setBaseURL(_baseURL); + + +} + +void CDownload::deleteDownloadDirectory() +{ + // détruit le répertoire de téléchargement + MyString dir; + dir = getPersistentPath(); + dir += ACTIVEGS_DIRECTORY_SEPARATOR; + dir += activegsdownloaddir; + deleteDirectory(dir.c_str(),1); + +} + +CDownload::~CDownload() +{ +} + +bool CDownload::retrieveDistantFile(const char* _url,int _order,MyString& _path, MyString& _short) +{ + + MyString url; + normalize(_url,url); + + + MyString ext(getext(url.c_str())); + bool bZip = !ext.CompareNoCase("zip"); + bool bRet; + + if (bZip) + { + // essaie de rÈcupÈrer la version existante ? + + bRet = retrieveZippedFile(url.c_str(),_order,_path,_short); + + if (!bRet) + { + if (bTestOnly) + return false; + + // essaie de downloader + bRet = downloadHTTPFile(url.c_str(),_path); + + if (bRet) + { + if (!unzipFile(url.c_str(),_path.c_str())) + { + // unzip failed... + outputInfo("unzip failed (%s)\n",getfile(url.c_str())); + bRet=false; + deleteFile(_path.c_str()); + outputInfo("deleting file (%s) for recovery next time \n",getfile(_path.c_str())); + + } + + if (bRet) + bRet = retrieveZippedFile(url.c_str(),_order,_path,_short); + } + } + } + else + { + + // if (bUsePersistentPath) + { + // fichier distant non zip + MyString dir; + MyString local; + + dir = getPersistentDir(url.c_str()); + createDirectory(dir.c_str()); + local = dir.c_str(); + local += ACTIVEGS_DIRECTORY_SEPARATOR; + local += getfile(url.c_str()) ; + + // regarde si le fichier existe ? + // QUID SI LE FICHIER EST CORROMPU ? + + FILE* f = fopen(local.c_str(),"rb"); + if (f) + { + fclose(f); + bRet=true; + } + else + { + // retlcharge le fichier + if (bTestOnly) + return false; + bRet = GetFile(url.c_str(),local.c_str()); + + } + if (bRet) + _path = local; + } + /* + else + bRet = downloadHTTPFile(url.c_str(),_path); + */ + + if (bRet) + _short = getfile(_path.c_str()); + + } + + if (!bRet) + { + // showProgress(url.c_str(),-1); + ::showStatus("Failed to download %s\n",getfile(url.c_str())); + } + return bRet; + +} + +int CDownload::fileExists(const char * _path) +{ + FILE* f = fopen(_path,"rb"); + if (f) + { + fclose(f); + return 1; + } + else + return 0; +} +// ***************************************************************** + +long CDownload::retrieveLocalFile(const MYCHAR* _url,int _order,MyString& _path, MyString& _short) +{ + + MyString url = _url; + + MyString ext(getext(url)); + + if (!ext.CompareNoCase("zip")) + { + + if (!retrieveZippedFile(url,_order,_path,_short)) + { + if (!unzipFile(url,url)) + { + // unzip failed... + outputInfo("unzip failed (%s)\n",_url); + return 0; + } + if (!retrieveZippedFile(url,_order,_path,_short)) + { + outputInfo("could not find zip (%s)\n",_url); + return 0; + } + } + + } + else + { + _path = url; + + _short = getfile(url); + } + + + + FILE* f = fopen(_path.c_str(),"rb"); + if (f) + { + /*int err =*/ fseek(f,0,SEEK_END); + long size = ftell(f); + fclose(f); + return size; + } + else + { + outputInfo("could not find file (%s)\n",_url); + ::showStatus("Failed to load %s",getfile(_url)); + return 0; + } + +} + +bool CDownload::makeAbsolutePath(const char* _myp, const char* _base,MyString& _dest) +{ + + MyString p = _myp; + MyString header5 = p.Left(5); + MyString header17 = p.Left(17); + MyString header8 = p.Left(8); + MyString header7 = p.Left(7); + + bool bAbsolute= true; + + // OG 190110 Added \ for WinCE devices + if ( ( p[0]=='\\') || ( p[0]=='/') || ( p[1]==':') || (!header5.CompareNoCase("http:")) ) + _dest = p; // absolute path + else + if (!header17.CompareNoCase("file://localhost/")) + _dest = p.substr(17,p.length()-17); // absolute path for opera + else + if (!header8.CompareNoCase("file:///")) +#ifdef WIN32 + _dest = p.substr(8,p.length()-8); // absolute path +#else + _dest = p.substr(7,p.length()-7); // keep the / on mac +#endif + else + if (!header7.CompareNoCase("file://")) + _dest = p.substr(7,p.length()-7); // absolute path + else + { + // newurl.Format("%s"ACTIVEGS_DIRECTORY_SEPARATOR"%s",baseURL,p.c_str()); + _dest = _base; + _dest += ACTIVEGS_DIRECTORY_SEPARATOR; + _dest += p.c_str(); + bAbsolute = false; + } + + return bAbsolute; +} + + +int CDownload::parseFilenameAndMakeAbsolute(const char* _myp, int& _order, MyString &newurl) +{ + + MyString p(_myp); + + // ignore #id= dans l'url + int pos = p.ReverseFind("#id="); + if (pos!=-1) + p = p.Left(pos); + + // récupère le #order si présent + pos = p.ReverseFind("#pos="); + if (pos!=-1) + { + MyString orderstr = p.Mid(pos+5).c_str(); + _order = atoi(orderstr.c_str()); + if (_order<0 || _order>9) + _order = 0; + p = p.Left(pos); + } + else + _order = 0; + + ASSERT (!baseURL.IsEmpty()); + makeAbsolutePath(p.c_str(),baseURL.c_str(),newurl); + + // OG 03-NOV-03 + // Added files network support + if ( (newurl[0]=='/') || (newurl[1]==':') || ( (newurl[0]=='\\') /*&& (newurl[1]=='\\')*/ ) ) + return 1; //localPath = true; + else + return 0; + +} + +// ***************************************************************** + +size_t CDownload::retrieveFile(const char* _myp,MyString& _path,MyString& _short) +{ + size_t ret; + + + _path.clear(); + if (!_myp || !_myp[0] ) return false; + + int _order; + MyString newurl ; + int localPath = parseFilenameAndMakeAbsolute(_myp,_order,newurl); + + /* + MyString normalized; + normalize(newurl.c_str(),normalized); + */ + + if (localPath) + ret = retrieveLocalFile(newurl.c_str(),_order,_path,_short); + else + { + /* + if (_bSizeOnly) + { + outputInfo("size only not implemented for distant file (%s)\n",newurl.c_str()); + return 0; + } + */ + ret = retrieveDistantFile(newurl.c_str(),_order,_path,_short); + } + return ret; +} + + + + + +const char* getext(const char* _filename) +{ + MyString tmp(_filename); + int pos = tmp.ReverseFind('.'); + return _filename+pos+1; +} + + +void geturldomain(const char* p,MyString& _domain) +{ + if (strncasecmp(p,"http:",5)) + _domain = "(local)"; + else + { + int l = 7; + while(p[l] && p[l]!='/') l++; + char ldir[1024]; + strncpy(ldir,p+7,l-7); + ldir[l-7]=0; + _domain = ldir; + } +} + + + +void geturldir(const char* p,MyString& _dir) +{ + // avance jusqu'à un possible'?' + int l = 0; + while(p[l] && p[l]!='#') l++; + if (!l) return ; // chaine vide + l--; +// int l=(int)strlen(p)-1; + while(l>=0) { + if ( (p[l]=='\\') || (p[l]=='/') ) + break; + l--; + } + char ldir[1024]; + if (l<0)l=0; + strncpy(ldir,p,l); + ldir[l]=0; + _dir = ldir; + +} + + +void getdir(const char* p,MyString& _dir) +{ + int l=(int)strlen(p)-1; + while(l>=0) { + if ( (p[l]=='\\') || (p[l]=='/') ) + break; + l--; + } + char ldir[512]; + if (l<0)l=0; + strncpy(ldir,p,l); + ldir[l]=0; + _dir = ldir; + +} + +const MYCHAR* getfile(const MYCHAR* p) +{ + MyString tmp(p); + int lastslash = tmp.ReverseFind('\\'); + int lastantislash = tmp.ReverseFind('/'); + int pos = lastslash>lastantislash?lastslash:lastantislash; + return p+pos+1; + +} + +void normalize(const MYCHAR* file,MyString& dest) +{ + MyString work(file); + work.Replace("\\","/"); + + /* + // TODO + const MYCHAR*p; + + const MYCHAR* find=_MYT("/../"); + while(1) //p=strstr(work.c_str(),find)) + { + int index = work.Find(find); + if (index==-1) break; + + MyString before(work.Left(index)); + + int last = work.ReverseFind('/'); + if (last==-1) break ; + + + MyString after(work.Mid(index + 4 )); //4=strlen(find) + + work = before.Left((last-(const MYCHAR*)before.c_str())+1); + work += after; + } + */ + + dest=work; +} +/* +const char* CDownload::retrieveURL() +{ + return myURL.c_str(); +} +void CDownload::setURL(const char* _url ) +{ + myURL = _url; + myURL.Replace("%20"," "); +} +*/ + +void CDownload::setBaseURL(const char* _baseURL) +{ + if (!strncasecmp(_baseURL,"file:///",8)) +#ifdef WIN32 + _baseURL+=8; +#else + _baseURL+=7; // keep the / on mac +#endif + else + if (!strncasecmp(_baseURL,"file://",7)) + _baseURL+=7; // absolute path + + baseURL = _baseURL ; +// baseURL.Replace("%20"," "); + + printf("CDownload::baseURL set to %s\n",_baseURL); +} + +const char* CDownload::getPersistentPath() +{ + if (persistentPath.IsEmpty()) + { + x_fatal_exit("missing persistent path!"); + return NULL; + } + //this->initPersistentPath(); + + const char* p = persistentPath.c_str(); + return p; +} + + +void CDownload::initPersistentPath() +{ + if (!persistentPath.IsEmpty()) + return ; + + MyString systemPath ; + initPersistentSystemPath(systemPath); + createDirectory(systemPath.c_str()); + + systemPath += ACTIVEGS_DIRECTORY_SEPARATOR; + systemPath += activegspersistentdir; + createDirectory(systemPath.c_str()); + + persistentPath = systemPath; + + systemPath += ACTIVEGS_DIRECTORY_SEPARATOR; + systemPath += activegsdownloaddir; + createDirectory(systemPath.c_str()); + +} + +/* +bool CDownload::createCacheEntryName(const char* _url, const char* _pathname, int _index, MyString& _cacheEntryName) +{ + _cacheEntryName.Format("%s_%d_%s",_url,_index,_pathname); + return true; +} +*/ + +void CDownload::deleteCachedFile(const MYCHAR* _path) +{ + + MyString url ; + int order; + int localPath = parseFilenameAndMakeAbsolute(_path,order,url); + if (!localPath) + { + // détruit le fichier downloadé + MyString downloaded; + getPersistentDownloadedFile(_path,downloaded); + printf("delete getPersistentDownloadedFile %s\n",downloaded.c_str()); + deleteFile(downloaded.c_str()); + } + + + MyString ext(getext(url)); + if (!localPath || !ext.CompareNoCase("zip")) + { + // détruit le répertoire d'extraction + MyString dir = getPersistentDir(url); + printf("delete dir %s\n",dir.c_str()); + deleteDirectory(dir.c_str()); + } +} + +void CDownload::getPersistentDirectoryFile(const char* _file, const char* _dir, MyString &dir) +{ + dir = getPersistentPath(); + dir += ACTIVEGS_DIRECTORY_SEPARATOR; + dir += _dir; + dir += ACTIVEGS_DIRECTORY_SEPARATOR; + + MyString fnoext =getfilenoext(getfile(_file)); + MyString temp; + temp.Format("%s.%08X.%s",fnoext.c_str(),calcCRC(_file),getext(_file)); + dir += temp.c_str(); +} + + +void CDownload::getPersistentDownloadedFile(const char* _file, MyString &dir) +{ + + return getPersistentDirectoryFile(_file,activegsdownloaddir,dir); + +} + + +bool CDownload::downloadHTTPFile(const char* filename,MyString& _gotfile) +{ + outputInfo("downloadHTTPFile %s\n",filename); + + getPersistentDownloadedFile(filename,_gotfile); + + // regarde si le fichier existe + FILE* f = fopen(_gotfile.c_str(),"rb"); + if (f) + { + fclose(f); + // _gotfile = _gotfile; + return true; + } + + return GetFile(filename,_gotfile.c_str()); + +} + diff --git a/Common/ActiveDownload.h b/Common/ActiveDownload.h new file mode 100644 index 0000000..c541c92 --- /dev/null +++ b/Common/ActiveDownload.h @@ -0,0 +1,118 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + + +#ifdef _WIN32 +#define strncasecmp _strnicmp +#define strcasecmp _stricmp +//#define ssnprintf _ssnprintf +#endif + +#include "../kegs/Src/StdString.h" + + + +#ifdef UNICODE + #define TOSYSTEMCHAR(X,Y) CStdStringW Y(X); + #define TOSINGLECHAR(X) (X) +#else + #define TOSYSTEMCHAR(X,Y) CStdStringA Y(X); + #define TOSINGLECHAR(X) (X) +#endif + +#define MYCHAR char + +#define ACTIVEGSCACHEPATH "_DOWNLOADCACHE" + +#ifdef _WIN32 +#define ACTIVEGS_DIRECTORY_SEPARATOR "\\" +#else +#define ACTIVEGS_DIRECTORY_SEPARATOR "/" +#endif + + +const char* getfile(const char* p); +const char* getext(const char* filename); +void getdir(const char* p,MyString& _dir); +void normalize(const char* file,MyString& dest); +void removeext(char* filename); + MyString getfilenoext(const char *url); +int calcCRC(const char* ptr); + + +class CDownload +{ +private: + + static void initPersistentSystemPath(MyString& path); + static MyString persistentPath; + +public: + static void initPersistentPath(); + + + MyString baseURL; // URL of the calling page + + const MYCHAR* requiredExt; + + bool retrieveDistantFile(const MYCHAR* url,int _order,MyString& _path, MyString& _short); + long retrieveLocalFile(const MYCHAR* url,int _order,MyString& _path,MyString& _short); + bool downloadHTTPFile(const MYCHAR* filename,MyString& _path); + + bool unzipFile(const MYCHAR* _url,const MYCHAR* _zipPath); + + bool retrieveZippedFile(const MYCHAR* url,int _order,MyString& _path, MyString& _short); +// bool retrieveCachedZippedFile(const MYCHAR* url,int _order,MyString& _path, MyString& _short); + bool retrievePersistentZippedFile(const MYCHAR* url,int _order,MyString& _path, MyString& _short); + +public: + void getPersistentDirectoryFile(const char* _file, const char* _dir, MyString &dir); + void getPersistentDownloadedFile(const char* _file, MyString &dir); + + + CDownload(const char* _baseURL); + ~CDownload(); + + void setRequiredExt(const MYCHAR* _ext) { requiredExt = _ext; } + + MyString getPersistentDir(const MYCHAR* url); + static void setPersistentPath(const char* path); +// MyString getPersistentPathname(const char* _subdir,const char* url); + + + size_t retrieveFile(const MYCHAR* name, MyString& path,MyString& file); + bool GetFile(const char *url, const char *filename); + + // cache + /* + bool commitCacheEntry(const char* cacheEntryName, const char* _cacheEntryPath); + bool createCacheEntry(const char* cacheEntryName, MyString& cacheEntryPath); + bool createCacheEntryName(const char* _url, const char* _pathname, int _index, MyString& cacheEntryName); + */ + + void setBaseURL(const char* _baseURL); + static const char* getPersistentPath(); + static void createDirectory(const MYCHAR* _dir); + static void deleteFile(const MYCHAR* _dir); + static int fileExists(const char*); + void deleteDirectory(const MYCHAR* _dir, int keepDir=0); + void deleteDownloadDirectory(); + static bool makeAbsolutePath(const MYCHAR* _myp, const MYCHAR* _base,MyString& _dest); + bool bNotifyDownloadFailure; + bool bTestOnly; + + int parseFilenameAndMakeAbsolute(const char* _myp, int& _order, MyString &newurl); + void deleteCachedFile(const MYCHAR* _path); + + +#if defined(DRIVER_ANDROID) + bool fromMainThread; +#endif +}; + +//extern CDownload g_download; diff --git a/Common/ActiveDownloadNoCache.cpp b/Common/ActiveDownloadNoCache.cpp new file mode 100644 index 0000000..43e37d4 --- /dev/null +++ b/Common/ActiveDownloadNoCache.cpp @@ -0,0 +1,20 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "../common/cemulatorctrl.h" +#include "activedownload.h" +#include +#ifdef MAC +#include +#endif +#include "../common/ki.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + +extern const char * activegscachedir ; +extern const char * activegsdownloaddir ; diff --git a/Common/ActiveGSList.cpp b/Common/ActiveGSList.cpp new file mode 100644 index 0000000..cb14baf --- /dev/null +++ b/Common/ActiveGSList.cpp @@ -0,0 +1,229 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "ActiveGSList.h" +#include "activedownload.h" + +ActiveGSList::~ActiveGSList() +{ + if (rootXML) + { + delete rootXML ; + rootXML = NULL; + } + +} + +void ActiveGSList::reset() +{ + elements.clear(); + sourceName.Empty(); + sourceRevision.Empty(); + pathName.Empty(); + + if (rootXML) + { + delete rootXML; + rootXML=NULL; + } +} + +ActiveGSList::ActiveGSList() +{ + rootXML = NULL; + reset(); +} + +int ActiveGSList::loadFromFile(const char* _url) +{ + MyString path; + MyString shortname; + + CDownload dl("*absolute*"); + dl.bNotifyDownloadFailure = false; // sera traité avec l'existence du fichier + dl.setRequiredExt("activegsxml"); + + if (!dl.retrieveFile(_url,path,shortname)) + { + printf("could not load config %s\n",_url); + return 0; + } + + printf("processing config %s\n",_url); + pathName = _url; + + FILE* f = fopen(path.c_str(),"rb"); + if (!f) + { + printf("cannot open config%s\n",path.c_str()); + return 0 ; + } + fseek(f,0,SEEK_END); + int si = ftell(f); + if (!si) + { + fclose(f); + printf("cannot open config%s (file empty)\n",path.c_str()); + return 0; + } + fseek(f,0,SEEK_SET); + char* s = new char[si+1]; + memset(s,0,si+1); + fread(s,1,si,f); + fclose(f); + + int b = processString(s); + + delete s; + return b; +} + + +int ActiveGSList::processString(const char* _str) +{ + + RESETXMLERROR(); + simplexml* root= new simplexml(_str); + if (GETXMLERROR()) + { + printf("bad xml %s\n",GETXMLERROR()); + return 0; + } + + if (!root->key()) + { + printf("xml empty\n"); + return 0 ; + } + // regarde si c'est un type list + if (!strcasecmp(root->key(),"list")) + { + + int child = root->number_of_children(); + for(int i=0;ichild(i); + if (!strcasecmp(ptr->key(),"source")) + { + const char* name = ptr->value(); + if (name) + sourceName = name; + const char* revision = ptr->property("revision"); + if (revision) + sourceRevision = revision; + } + else + if (!strcasecmp(ptr->key(),"config")) + { + ActiveGSElement el ; + if ( el.fillFromXML(ptr) ) + elements.push_back (el); + } + } + } + else + { + // 1 seul + ActiveGSElement el ; + if ( el.fillFromXML(root) ) + elements.push_back (el); + } + + rootXML= root; + return 1; + +} + + + +int ActiveGSElement::fillFromXML(simplexml* ptrconfig) +{ +static int baseid=0; + + const char* ver = ptrconfig->property("version"); + if (!ver || atoi(ver)!=2) + { + printf("invalid xml version - xml config skipped\n"); + return 0; + } + + + // default Apple2 + is2GS = 0; + + // attribue un id + + const char* _id = ptrconfig->property("id"); + if (_id) + theid = _id; + else + theid.Format("Image%d",baseid++); + + + int child = ptrconfig->number_of_children(); + for(int i=0;ichild(i); + + if (!strcasecmp(ptr->key(),"name")) + { + const char* s = ptr->value(); + name = s; + } + else + if (!strcasecmp(ptr->key(),"desc")) + { + const char* s = ptr->value(); + desc = s; + } + else + if (!strcasecmp(ptr->key(),"publisher")) + { + const char* s = ptr->value(); + publisher = s; + } + else + if (!strcasecmp(ptr->key(),"year")) + { + const char* s = ptr->value(); + year = s; + } + else + if (!strcasecmp(ptr->key(),"pic")) + { + const char* type = ptr->property("type"); + if (type && !strcasecmp(type,"thumbnail")) + { + const char* fn = ptr->value(); + if (fn && strcasecmp(fn,"http://www.virtualapple.org/images/vascreen1.jpg")) + thumb = ptr->value(); + } + else + if (type && !strcasecmp(type,"screenshot")) + { + const char* fn = ptr->value(); + + for(int i=0;ikey(),"format")) + { + const char* type = ptr->value(); + if (type && ( !strcasecmp(type,"2GS") || !strcasecmp(type,"GS") ) ) + is2GS = 1; + } + } + pXML = ptrconfig; + return 1; +} diff --git a/Common/ActiveGSList.h b/Common/ActiveGSList.h new file mode 100644 index 0000000..21e2ba1 --- /dev/null +++ b/Common/ActiveGSList.h @@ -0,0 +1,62 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once +#include + +#define MAX_SCREENSHOTS 10 +#include "../common/3rdpartylib/simplexml.h" +#include "../kegs/src/StdString.h" +#include "../kegs/src/defc.h" +#include "../common/ki.h" + + + +struct ActiveGSElement +{ + + MyString theid; + MyString thumb; + +#define MAX_SCREENSHOTS 10 + MyString screenShots[MAX_SCREENSHOTS]; + + simplexml* pXML; + int is2GS; + + + MyString uid; + MyString name; + MyString nameurl; + MyString desc; + MyString year; + MyString publisher; + MyString publisherurl; + + MyString visibleName; + + + int fillFromXML(simplexml* ptrconfig); +}; + +class ActiveGSList +{ +public: + MyString pathName; + MyString trackerName; + MyString sourceName; + MyString sourceRevision; + + + simplexml* rootXML; + std::vector elements; + + ActiveGSList(); + ~ActiveGSList(); + int loadFromFile(const char* _file); + int processString(const char* _str); + void reset(); +}; diff --git a/Common/ActiveZip.cpp b/Common/ActiveZip.cpp new file mode 100644 index 0000000..0d271b1 --- /dev/null +++ b/Common/ActiveZip.cpp @@ -0,0 +1,213 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "cemulatorctrl.h" +#include "ki.h" +#include "../Libraries/unzip101e/unzip.h" + +/* +#ifdef _DEBUG +#define new DEBUG_NEW +#endif +*/ + +bool CDownload::unzipFile(const MYCHAR* _url,const MYCHAR* _zipPath) +{ + + MyString persistentPath; + MyString filename; + MyString localPath; + MyString cacheEntryName; + + //if (bUsePersistentPath) + { + // cre la directory + persistentPath = getPersistentDir(_url); + createDirectory(persistentPath.c_str()); + } + + unzFile zf = unzOpen(_zipPath); + if (!zf) + { + outputInfo("could not open %s\n",getfile(_zipPath)); + return false; + } + outputInfo("zip: %s\n",_zipPath); + unz_global_info zinfo; + unzGetGlobalInfo(zf,&zinfo); + + unzGoToFirstFile(zf); + + int iz = 0; + do + { + char fnfull[1024]; + unz_file_info finfo; + unzGetCurrentFileInfo(zf,&finfo,fnfull,1024,NULL,0,NULL,0); + + // OG remove any subdirectory + MyString fn = getfile(fnfull); + MyString filename(fn); + filename = filename.Left(8); + if (!filename.compare("__MACOSX")) + continue ; + MyString ext(getext(fn)); + if (requiredExt) + { + if (ext.CompareNoCase(requiredExt)) + continue; + } + else + { + if ( ext.CompareNoCase("2mg") + && ext.CompareNoCase("dsk") + && ext.CompareNoCase("do") + && ext.CompareNoCase("po") + && ext.CompareNoCase("raw") + && ext.CompareNoCase("nib") + && ext.CompareNoCase("bin") + && ext.CompareNoCase("hdv") ) + continue ; + } + + // if (bUsePersistentPath) + { + // localPath.Format("%s"ACTIVEGS_DIRECTORY_SEPARATOR"%d_%s",persistentPath.c_str(),iz,(const char*)fn); + localPath = persistentPath.c_str(); + localPath += ACTIVEGS_DIRECTORY_SEPARATOR; + MyString temp; + temp.Format("%d_",iz); + localPath += temp.c_str(); + localPath += (const char*)fn.c_str(); + } + /* + else + { + createCacheEntryName(_url,fn,iz,cacheEntryName); + createCacheEntry(cacheEntryName.c_str(),localPath); + } + */ + + outputInfo("Extracting to %s\n",localPath.c_str()); + unzOpenCurrentFile(zf); + + FILE* f = fopen(localPath.c_str(),"wb"); + if (!f) + { + outputInfo("Cannot create %s\n",localPath.c_str()); + return false; + } + +#define UNZIP_LEN 16*1024 + char buf[UNZIP_LEN]; + int nbread; + int len=0; + while( (nbread=unzReadCurrentFile (zf,buf,UNZIP_LEN)) >0 ) + { + size_t nbw = fwrite(buf,1,nbread,f); + if (nbw!=nbread) + { + outputInfo("failed to write %s\n",localPath.c_str()); + fclose(f); + deleteFile(localPath.c_str()); + return false; + } + len += nbread; + } + fclose(f); + if (len==0) + { + outputInfo("failed to uncompress %s\n",_zipPath); + deleteFile(localPath.c_str()); + return false; + + } + + int err = unzCloseCurrentFile(zf); + if (UNZ_CRCERROR==err) + { + outputInfo("CRC Error for %s \n",_zipPath); + deleteFile(localPath.c_str()); + return false; + } + + /* + if (!bUsePersistentPath) + commitCacheEntry(cacheEntryName.c_str(),localPath.c_str()); + */ + + iz++; + } + while(unzGoToNextFile(zf)==UNZ_OK); + + unzClose(zf); + + + return true; +} + + +/* +bool retrieveCachedZippedFile(const char* url,int _order,MyString& _path, MyString& _short) +{ + + //outputInfo("retrieveCachedZippedFile %s %d\n",url,_order); + + int defaultSize = 4096; + BYTE* CacheEntryInfoBuffer = (BYTE*)malloc(defaultSize); + LPINTERNET_CACHE_ENTRY_INFO lpCacheEntryInfo = (INTERNET_CACHE_ENTRY_INFO*)CacheEntryInfoBuffer; + + MyString search; search.Format("%s_%d_",url,_order); + HANDLE hFind = NULL; + BOOL err; + while(1) + { + DWORD dwCacheEntryInfoBufferSize = defaultSize; + if (!hFind) + { + hFind = FindFirstUrlCacheEntry(NULL,lpCacheEntryInfo,&dwCacheEntryInfoBufferSize); + err = (hFind==NULL); + } + else + err = !FindNextUrlCacheEntry(hFind,lpCacheEntryInfo,&dwCacheEntryInfoBufferSize); + + if (!err) + { + if (!_strnicmp(lpCacheEntryInfo->lpszSourceUrlName,search.c_str(),search.GetLength())) + { + outputInfo("Zip Found %s (%s)\n",lpCacheEntryInfo->lpszSourceUrlName,lpCacheEntryInfo->lpszLocalFileName); + _path = lpCacheEntryInfo->lpszLocalFileName; + _short = lpCacheEntryInfo->lpszSourceUrlName+search.GetLength(); + FindCloseUrlCache(hFind); + free(CacheEntryInfoBuffer); + return true; + } + } + else + switch (GetLastError()) + { + case ERROR_NO_MORE_ITEMS: + outputInfo("Item not found : %s\n",url); + FindCloseUrlCache(hFind); + free(CacheEntryInfoBuffer); + return false; + case ERROR_INSUFFICIENT_BUFFER: + CacheEntryInfoBuffer = (BYTE*)realloc(CacheEntryInfoBuffer,dwCacheEntryInfoBufferSize); + defaultSize = dwCacheEntryInfoBufferSize; + lpCacheEntryInfo = (INTERNET_CACHE_ENTRY_INFO*)CacheEntryInfoBuffer; + break; + default: + outputInfo("failed to FindNextUrlCacheEntry : %s (%d)\n",url,GetLastError()); + FindCloseUrlCache(hFind); + free(CacheEntryInfoBuffer); + return false; + } + } + + // jamais return false; + +} +*/ diff --git a/Common/CA2Text.cpp b/Common/CA2Text.cpp new file mode 100644 index 0000000..3bb5c20 --- /dev/null +++ b/Common/CA2Text.cpp @@ -0,0 +1,119 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "../common/cemulatorctrl.h" +#include "../kegs/src/sim65816.h" + +extern word32 g_font40_even_bits[0x100][8][16/4]; +extern word32 g_font40_odd_bits[0x100][8][16/4]; + +word32 lastdrawtime = 0; +//void x_need2refresh(); +#define MAXCONSOLE 1 +int curConsole=0; +MyString Console[MAXCONSOLE]; + +extern void refresh_video(int); + +void addConsole(const char* _str) +{ + MyString temp = _str; +#ifndef UNDER_CE + temp.ToLower(); +#endif + Console[curConsole++]=temp.c_str(); + if (curConsole==MAXCONSOLE) curConsole=0; +// printf(temp.c_str()); + lastdrawtime = 0; +// refresh_video(1); +} +void drawText(Kimage* _dst, const char* text,int _x,int _y); +void drawConsole(Kimage* _dst) +{ + if ( !Console[0].GetLength() ) return ; + if (!_dst) return ; + + /* + word32 curtime = g_sim65816.g_vbl_count; + if (lastdrawtime) + { + if (curtime>lastdrawtime+2*60) + { + Console[0].Empty(); + return ; + } + } + else + lastdrawtime=curtime; + */ + + int pixsize = _dst->mdepth / 8 ; + int stride =_dst->width_act* pixsize; + int x = 16, y = 16; + int w=400, h=20; + byte* ptr = _dst->data_ptr + y*stride + x*pixsize ; + while(h--) + { + memset(ptr,0x77777777,w*pixsize); + ptr+=stride; + } + + for(int i=0;imdepth / 8 ; + int stride =_dst->width_act * pixsize ; + byte* ptrline = _dst->data_ptr + _y*stride + _x*pixsize; + + while( (c=*text++) != 0 ) + { + /* + if (c==13) + { + curline++; + curpos=0; + break; + } + */ + byte* ptr = ptrline; + for(int j=0;j<8;j++) + { + word32* ptrw = (word32*)ptr; + // byte* ptr = (byte*)ptrline; + for(int i=0;i<7;i++) + { + int mask = 1 << (7-i); + int v = g_font_array[c][j] ; + int on = v & mask; + // int color = 0; + if (!on) + { + const int color = -1; + if (pixsize==1) + { + ptr[i]=color; + ptr[i+1]=color; + } + else + { + ptrw[i] = color; + ptrw[i+1] = color; + } + } + } + ptr += stride; + } + ptrline += 8*pixsize; + } +} \ No newline at end of file diff --git a/Common/CEMulatorCtrl.h b/Common/CEMulatorCtrl.h new file mode 100644 index 0000000..69a19c7 --- /dev/null +++ b/Common/CEMulatorCtrl.h @@ -0,0 +1,417 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + +//#ifndef MAC +#ifdef _WIN32 + #include +#endif + +#include "../common/ActiveGSList.h" +#include "../common/activedownload.h" +#include "../common/ki.h" + +#include "../kegs/src/sound.h" + +extern int outputInfoInternal(const char*); + + +/* +#if defined(_DEBUG)|| defined(_GLIBCXX_DEBUG) +#define ADD2CONSOLE(X) +#else +extern void add2Console(const char*); +#define ADD2CONSOLE(X) addConsole(X) +#endif +*/ + +#define ACTIVEGSXMLPATH "_XML" + +#if defined(WIN32) && !defined(UNDER_CE) +#define STRING2CONSTCHAR(X) ((const char*)X) +#else +#define STRING2CONSTCHAR(X) (X.c_str()) +#endif + + +enum eParamType +{ + EMULATOR, + BRAM +}; + +struct param +{ + MyString data; + MyString value; + int hex; +}; + +class CSetStart +{ +public: + int slot; +// int addr; + MyString file; + + CSetStart() { slot=0; }; +}; + +typedef enum +{ + OPTION_ERROR = -1, + OPTION_CONFIGVERSION = 0, + OPTION_GUID, + OPTION_HALTONBADREAD, + OPTION_HALTONBADACC, + OPTION_HALTONHALTS, + OPTION_ENABLEREWIND, + OPTION_COLORMODE, + OPTION_VIDEOFX, + OPTION_JOYSTICKMODE, + OPTION_BROWSERNAME, + OPTION_BROWSERVERSION, + OPTION_LATESTRUNBUILD, + OPTION_LATESTUPDATECHECK, + OPTION_DONOTSHOWUPDATEALERT, + + OPTION_DONOTSHOWDISKSTATUS, + OPTION_PNGBORDER, + OPTION_SIMULATESPACE, + OPTION_LATESTVERSION, + + OPTION_SPEED, + OPTION_LATESTVERSIONDATE, + OPTION_AUDIORATE, + OPTION_MEMORYSIZE, + OPTION_JOYXSCALE, + OPTION_JOYYSCALE, + OPTION_DISKSOUND, + OPTION_FIXEDVBLANK, + OPTION_ADBDELAY, + OPTION_ADBRATE, + +#ifdef DRIVER_IOS + OPTION_FRAMERATE, + OPTION_LOCKZOOM, + OPTION_LASTTAB, + OPTION_DEBUGMODE, + OPTION_EXTERNALKBD, +#endif +#ifdef ACTIVEGSKARATEKA + OPTION_SHOWICONS, + OPTION_ENABLECHEAT, + OPTION_SOUNDMODE, + OPTION_KARATEKAREWIND, +#endif +#ifdef VIRTUALAPPLE + OPTION_DEBUG, + OPTION_SCORES, + OPTION_GAMECENTER, +#endif + NB_OPTIONS +} option_id; + + +typedef struct +{ + int inConfig; + int inDefault; + const char* name ; + int defaultint; + const char* defaultstr; + const char** convertTableDesc; + const char** convertTableAlias; + const int* convertTableInt; +} namevaluedef; + +class namevalue +{ +public: + const namevaluedef* def; + MyString strvalue; + int intvalue; + int confOverrided; + + namevalue() { intvalue=0;confOverrided=0; def=NULL; } + + int convertToInt(const char* _value); + int belongsToValue(int v); + void getAlias( MyString& _str); + const char* getDescription(int _value); + int getOrder(int _value); + +}; + + + +class COption +{ +public: + int initiliazed; + namevalue options[NB_OPTIONS]; + namevalue& find(option_id _id) { return options[_id]; }; + option_id findByName(const char* _name); + + void getParameterFilename(MyString& filename,int nb); + void getStrValue(MyString& str,option_id _id); + int getIntValue(option_id _id); + void setValue(option_id _id,const char* _value, int overideConf=0); + void setIntValue(option_id _id,int _value,int overideConf=0); + //void setConfValue(option_id _id,const char* _value); + //void setConfIntValue(option_id _id,int _value); + void initOptions(); + void setDefaultOptions(); + void generateGUID(MyString& guid); + void loadOptions(); + int loadParameters(int _nb); + void saveOptions(int _nb); + bool addEmulatorParam(const char* _param); + const char* getDescription(option_id _id, int _value); + COption() { initiliazed = 0; }; +/// void initOptions(); + void enableOptions(); +}; + + + +enum eslotstatus +{ + UNDEFINED, + MOUNTED, + READY2MOUNT, + EJECTED, + FAILED, + NOTHING, + DELAYEDMOUNT +}; + +enum eSetSlotPos +{ + ADD, + REPLACECURRENT +}; + +class CActiveImage +{ +public: + int iActive; + int iNb; + CActiveImage(){iActive=0; iNb=0;} +}; + +class CSlotInfo +{ +public: + +#if defined(WIN32) && !defined(UNDER_CE) + CString url; +#else + MyString url; // original url +#endif + + MyString filename; // physical name + MyString prefix; + MyString shortname; // physical filename + int patch_addr; + MyString patch_value; + int size; + int delay; + eslotstatus status; + CSlotInfo() { delay=0; size=0; status=UNDEFINED; patch_addr=0; } +}; + +#define ACTIVEGSMAXIMAGE 16 + + +#define MAX_CHECK 16 +struct ConfigBP +{ + MyString value; + char check[MAX_CHECK]; + int addr; + enum mode_breakpoint mode; +}; + +class CEmulatorConfig +{ +public: + + CActiveImage activeImages[3][MAXSLOT7DRIVES]; + + CSlotInfo localImages[3][MAXSLOT7DRIVES][ACTIVEGSMAXIMAGE]; + MyString baseURL; + CEmulatorConfig(); + int nb_bps; + ConfigBP BPs[MAX_BREAK_POINTS]; + void setBaseURL(const char* _url); + MyString uid; + MyString name; + MyString nameurl; + MyString desc; + MyString year; + MyString publisher; + MyString publisherurl; +// MyString persistentPath; + MyString visibleName; + + bool need2remount; +// bool fastConfig; // pour ignore les images dans le xml si le parametre a ÈtÈ passÈ en ligne de commande +#if defined(WIN32) && defined(_USRDLL) + LONG speed; + LONG bootslot; + CString xmlconfig; + CString emulatorParam; + CString systemParam; + CString bramParam; + CString setStartParam; +#else + int speed; + int bootslot; + MyString xmlconfig; + MyString emulatorParam; + MyString bramParam; + MyString systemParam; + MyString setStartParam; +#endif + MyString xmlEmulatorParam; + MyString xmlSystemParam; + MyString xmlBramParam; + MyString stateFilename; + + simplexml* pXML; + CSlotInfo* setSlot(int _slot, int _drive, const char* _image, eSetSlotPos _pos); + CActiveImage& getActiveImage(int _slot, int _drive); + CSlotInfo& getLocalImage(int _slot,int _drive, int _pos); + const char* getSlot(int _slot, int _drive); + int xmlAlreadyLoaded; + int processXML(const char*_path,simplexml* ptrconfig); + void loadXMLFile(); + void saveXMLFile(const char* _desc); + void processCommandLine(int argc, char** argv); + void resetConfig(); +}; + +#define EMULATOR_MAX_PARAMS 256 + + +extern COption option; + +class CEmulator +{ + +public: + CEmulator** parent; + static CEmulator* theEmulator; + +#ifdef ACTIVEGSPLUGIN + void* pInstance; + void setPluginInstance(void*); +#endif + + int lights[4]; + int tracks[4]; + void setLight(int _motorOn,int _slot, int _drive, int _curtrack); + CEmulatorConfig* config; + int nbparams; + struct param params[EMULATOR_MAX_PARAMS]; + volatile bool bInThread; + void* theWindow; // HWND or WINDOWREF + int x; + int y; + int width; + int height; + +public: + void onSpeedChanged(int _speed, bool _ignoreAcceptEvents=false); + void onBootSlotChanged(int _bootslot); + void onXMLConfigChanged(const char *_xmlconfig,simplexml* _pXML); + void onEmulatorParamChanged(const char* _param); + void addUniqueParam(struct param _p); + void sendStats(); + void checkAlerts(); + int acceptEvents(); + +public: + void setConfig(CEmulatorConfig* _config); + CSetStart setStart; + + void resetLocalIMG(); + int loadDiskImage(int _slot,int _drive); + void reloadDisk(int _slot,int _drive); + void relaunchEmulator(); + void launchEmulator(); + void terminateEmulator(); + // To be defined in son + virtual void x_LaunchThread() = 0; + virtual void x_WaitForEndThread() = 0; + + +public: +// void setURL(const char* _url); + + bool setEmulatorParam(const char* _p ) {return parseParam(_p,EMULATOR); } + MyString bramParam; + void setBramParam(const char* _p); + bool parseParam(const char* _p,eParamType _param); + bool setParam(eParamType _type, const char* _data, const char* _value); + + + bool setStartParam(); + bool extractSetStartParam(const char* run); + +public: + void mountDisks(); + void forceFocus(); + + +//protected: +public: + + CEmulator(CEmulator** _parent); + virtual ~CEmulator() ; + void destroy(); + +public: + void updateBramParameters(); + CSlotInfo& getLocalIMGInfo(int _slot,int _drive); + int getLocalMultipleIMGInfo(int _slot,int _drive,CSlotInfo& info, int pos); + int getSmartSwap(); + int smartSwap(); + int swapDisk(int _slot,int _drive, int pos=-1); + int theThread(); + void mountDisk(int _slot,int _drive, const char* _url); + int mountImages(); + int mountDelayedDisk(); + bool remainingDelayedDisk(); + void ejectDisk(int _slot,int _drive); + void readImageInfo(int _slot,int _drive, int _imagelen, int _imagestart, int _isprodos); + + MyString statusMsg; + + void initBramParam(const char* _param); + void initEmulatorParam(const char* _param); + +void processCommand(const char* _val, MyString& ret); + + virtual void refreshStatus(const char* _msg) {} ; + virtual void showLoading( int _loading,int _disk) {}; + + + virtual void showStatus(const char* _msg) {} ; + virtual void disableConsole() {} ; + virtual void loadingInProgress(int _motorOn,int _slot, int _drive) {}; + virtual int activeRead(char *buf) { buf[0]=0; return 0; } + + virtual void getEngineString(MyString& _engine) {}; +}; + +void x_display_alert(int _abort, const char* _title, const char* _message); + + + + diff --git a/Common/CEmulatorCtrl.cpp b/Common/CEmulatorCtrl.cpp new file mode 100644 index 0000000..ce064ab --- /dev/null +++ b/Common/CEmulatorCtrl.cpp @@ -0,0 +1,2995 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "cemulatorctrl.h" +#include "svnversion.h" + +#include "../kegs/src/adb.h" +#include "../kegs/src/clock.h" +#include "../kegs/src/moremem.h" +#include "../kegs/src/paddles.h" +#include "../kegs/src/sim65816.h" +#include "../kegs/src/iwm.h" +#include "../kegs/src/SaveState.h" +#include "../kegs/src/raster.h" +#include "../kegs/src/graphcounter.h" +#include "../kegs/src/driver.h" +#include "../kegs/src/video.h" +#include "../kegs/src/async_event.h" +extern void joystick_shut(); + +#define CONFIG_VERSION 3 + +const int joyint[] = { (int)JOYSTICK_TYPE_NATIVE_1, (int)JOYSTICK_TYPE_KEYPAD, (int)JOYSTICK_TYPE_MOUSE, /* JOYSTICK_TYPE_NATIVE_2,*/ JOYSTICK_TYPE_NONE, JOYSTICK_TYPE_ICADE, -1 } ; +const char* joyalias[] = { "joystick1","keypad", "mouse", /*, "Joystick2",*/ "none", "iCade", NULL }; +const char* joydesc[] = { "Joystick1","Keypad", "Mouse", /*, "Joystick2",*/ "None", "iCade", NULL }; +const int colorint[] = { (int)COLORMODE_AUTO, (int)COLORMODE_BW, (int)COLORMODE_GREEN, (int)COLORMODE_AMBER,(int)COLORMODE_MONO, -1 }; +const char* coloralias[] = { "auto", "bw", "green", "amber", "mono",NULL }; +const char* colordesc[] = { "Colors", "B&W", "Green", "Amber", "Mono", NULL }; +const char* videoalias[] = { "crt" , "lcd" ,"default", NULL }; +const char* videodesc[] = { "CRT" , "LCD",NULL, NULL }; +const int videoint[] = { (int)VIDEOFX_CRT, (int)VIDEOFX_LCD, (int)VIDEOFX_LCD, -1 }; +const char* speeddesc[] = { "Normal", "Slow", "Zip", "Unlimited", NULL }; +const char* speedalias[] = { "normal", "slow", "zip", "unlimited", NULL }; +const int speedint[] = { (int)SPEED_GS, (int)SPEED_1MHZ, (int)SPEED_ZIP, (int)SPEED_UNLIMITED, -1 }; + + +#define DEFAULT_AUDIO_RATE 44100 +#define DEFAULT_LOCKZOOM 0 +#define DEFAULT_DEBUGMODE 0 +#define DEFAULT_DISKSOUND 1 +#define DEFAULT_VIDEO VIDEOFX_CRT + +const namevaluedef defoptions[] = +{ + { 1,0, "configVersion" , CONFIG_VERSION,NULL, NULL, NULL }, + { 1,0, "guid" , 0, NULL, NULL, NULL }, + { 1,1, "haltOnBadRead" , 0, NULL, NULL, NULL }, + { 1,1, "haltOnBadAcc" , 0, NULL, NULL, NULL }, + { 1,1, "haltOnHalts" , 0, NULL, NULL, NULL }, + { 1,1, "enableRewind" ,0, NULL, NULL, NULL }, + { 1,1, "colorMode" , 0, NULL, colordesc,coloralias , colorint }, + { 1,1, "videoFX", (int)DEFAULT_VIDEO, NULL, videodesc, videoalias , videoint }, + { 1,1, "joystickMode", 0, NULL, joydesc, joyalias, joyint }, + { 0,0, "browserName" , 0, NULL, NULL, NULL }, + { 0,0, "browserVer" , 0, NULL, NULL, NULL }, + { 2,0, "latestRunBuild" , 0, NULL, NULL, NULL }, + { 2,0, "latestUpdateCheck" , 0, NULL, NULL, NULL }, + { 1,0, "doNotShowUpdateAlert" , 0, NULL, NULL, NULL }, + { 0,0, "doNotShowDiskStatus" , 0, NULL, NULL, NULL }, + { 0,0, "PNGBorder" , 16, NULL, NULL, NULL }, + { 0,0, "simulateSpace" , 0X31, NULL, NULL, NULL }, // 0X31=SPACE KEY + { 0,0, "latestVersion" , 0, NULL, NULL, NULL }, + { 0,0, "speed" , 0, NULL, speeddesc, speedalias, speedint }, + { 0,0, "latestVersionDate" , 0, NULL, NULL, NULL }, + { 1,1, "audioRate" , DEFAULT_AUDIO_RATE, NULL, NULL, NULL }, + { 1,1, "memorySize" , 2, NULL, NULL, NULL }, + { 0,0, "joyXScale" , 1000, NULL, NULL, NULL }, + { 0,0, "joyYScale" , 1000, NULL, NULL, NULL }, + { 1,1, "diskSound" , DEFAULT_DISKSOUND, NULL, NULL, NULL }, + { 0,1, "fixedVBlank" , 0, NULL, NULL, NULL }, + { 0,1, "adbDelay" , 45, NULL, NULL, NULL }, + { 0,1, "adbRate" , 3, NULL, NULL, NULL } +#ifdef DRIVER_IOS + , + { 1,1, "frameRate" , 0, NULL, NULL, NULL }, + { 1,1, "lockZoom" , DEFAULT_LOCKZOOM, NULL, NULL, NULL }, + { 1,1, "lastTab" , 0, NULL, NULL, NULL }, + { 1,1, "debugMode" , DEFAULT_DEBUGMODE, NULL, NULL, NULL }, + { 1,1, "externalKBD" , 0, NULL, NULL, NULL } +#endif +#ifdef ACTIVEGSKARATEKA + , + { 1,1, "showIcons" , 1, NULL, NULL, NULL }, + { 0,1, "enableCheats" , 0, NULL, NULL, NULL }, + { 1,1, "soundMode" , 0, NULL, NULL, NULL }, + { 1,1, "karatekaRewind" , 1, NULL, NULL, NULL }, + + +#endif +#ifdef VIRTUALAPPLE + { 1,1, "debug" , 0, NULL, NULL, NULL }, + { 1,1, "scores" , 0, NULL, NULL, NULL }, + { 1,1, "gamecenter" , 0, NULL, NULL, NULL }, +#endif +}; + +COption option; + +const char* COption::getDescription(option_id _id, int _value) +{ + namevalue& nv = find(_id);; + return nv.getDescription(_value); +} + +int namevalue::belongsToValue(int _v) +{ + if (!def->convertTableInt) return 1; + int i=0; + while(def->convertTableInt[i]!=-1) + { + if (def->convertTableInt[i]==_v) + return 1; + i++; + } + + return 0; +} + +int namevalue::getOrder(int _value) +{ + int p = 0; + while(def->convertTableInt[p] != -1) + { + if (def->convertTableInt[p]==_value) + return p; + p++; + } + return -1; +} + +const char* namevalue::getDescription(int _value) +{ + const char* ret = "n/a"; + if (!def->convertTableInt) return ret; + int o = getOrder(_value); + if (o<0) return ret; + return def->convertTableDesc[o]; +} + + +CEmulator* CEmulator::theEmulator = NULL; + +char bram_default[]={ +(char)0x00, (char)0x00, (char)0x00, (char)0x01, (char)0x00, (char)0x00, (char)0x0D, (char)0x06, (char)0x02, (char)0x01, (char)0x01, (char)0x00, (char)0x01, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x07, (char)0x06, (char)0x02, (char)0x01, (char)0x01, (char)0x00, (char)0x00, (char)0x00, (char)0x0F, (char)0x06, (char)0x06, (char)0x00, (char)0x05, (char)0x06, +(char)0x01, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x01, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x03, (char)0x02, (char)0x02, (char)0x02, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x01, (char)0x02, (char)0x03, (char)0x04, (char)0x05, (char)0x06, +(char)0x07, (char)0x00, (char)0x00, (char)0x01, (char)0x02, (char)0x03, (char)0x04, (char)0x05, (char)0x06, (char)0x07, (char)0x08, (char)0x09, (char)0x0A, (char)0x0B, (char)0x0C, (char)0x0D, +(char)0x0E, (char)0x0F, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, +(char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, +(char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, +(char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, +(char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, +(char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, +(char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, +(char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, +(char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, +(char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, +(char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFD, (char)0x96, (char)0x57, (char)0x3C +}; + +void updateBramCheckSum(unsigned char* buf) // original code in FF/B61D +{ + register short int crc=0; // LDA #0 + int i; // CLC + for(i=255-4-1;i>=0;i--) // LDX #FA + { + crc = (crc << 1) | ((crc>>15) & 1); // ROL (1-bits) +#ifdef UNDER_CE + crc += buf[i]; + crc += buf[i+1]*256; +#else + crc += *(unsigned short*)(buf+i); // ADC bram,X +#endif + } // DEX + // CPX #FF + // BNE Loop + *(unsigned short*)(buf+252) = crc; // TAX + *(unsigned short*)(buf+254) = crc ^0xAAAA; // EOR #AAAA +} + + +void initializeBram(unsigned char* _bram_ptr) +{ + memcpy(_bram_ptr,bram_default,256); + updateBramParameters(_bram_ptr); + updateBramCheckSum(_bram_ptr); + +} + + +void COption::generateGUID(MyString& guid) +{ + + int crc = calcCRC(CDownload::getPersistentPath()); + + time_t now; + time( &now ); + int lowtime = (int)now; + guid.Format("%08X%08X",crc,lowtime); + +} + +void CEmulatorConfig::resetConfig() +{ + speed = SPEED_AUTO; + bootslot = -1; //auto +// fastConfig = false; +// pXML=NULL; + + // vire tous les slots + for(int i=0;i<3;i++) + { + for(int m=0;mconvertTableInt) return 0; + int i=0; + const char* str; + while( (str=def->convertTableAlias[i]) != NULL ) + { + if(!strcasecmp(_value,str)) + return def->convertTableInt[i]; + i++; + } + printf("err: could not convert %s : returning %s (%d)\n",_value,def->convertTableAlias[0],def->convertTableInt[0]); + return def->convertTableInt[0]; +} + +option_id COption::findByName(const char* _name) +{ + if (!_name) return (option_id)-1; + + for (int i=0;iname)) + return (option_id)i; + } +#ifdef _DEBUG + printf("cannot find option : %s\n",_name); +#endif + return (option_id)-1; + +} + +void COption::setValue(option_id _id,const char* _value,int _confOverrided) +{ + + + namevalue& nv = find(_id); + int isnum=1; + const char*p=_value; + while(*p) + { + if (*p<'0' || *p>'9') + { + isnum=0; + break; + } + p++; + } + int v; + if (isnum) + v=atoi(_value); + + if (!nv.def->convertTableInt) + { + + if (!isnum) + { + nv.strvalue = _value; + printf("> option %s: %s\n",nv.def->name,_value); + } + else + { + nv.intvalue = v; + printf("> option %s: (%d)\n",nv.def->name,nv.intvalue); + } + + nv.confOverrided = _confOverrided; + + } + else + { + + if (isnum && nv.belongsToValue(v)) + { + nv.intvalue = v; + nv.confOverrided = _confOverrided; + printf("> option %s: %s (%d)\n",nv.def->name,nv.getDescription(v),nv.intvalue); + } + else + { + // regarde si c'est une valeur en texte? + int pos=0; + const char* s; + while( (s = nv.def->convertTableAlias[pos]) != NULL ) + { + if (!strcasecmp(s,_value)) + { + nv.intvalue = nv.def->convertTableInt[pos]; + nv.confOverrided = _confOverrided; + printf("* option %s: %s (%d)\n",nv.def->name,_value,nv.intvalue); + return ; + } + pos++; + } + printf("non supported value:%s for option:%s\n",_value,nv.def->name); + } + } +} + + +void namevalue::getAlias(MyString& _str) +{ + if (this->strvalue.IsEmpty()) + { + // convert to int first + int v = this->intvalue; + if (!this->def->convertTableInt) + _str.Format("%d",v); + else + { + int i = getOrder(v); + _str = this->def->convertTableAlias[i]; + } + return ; + } + else + _str = this->strvalue; +} + + + +void COption::initOptions() +{ + + for(int i=0;iinDefault) + { + if (options[i].def->convertTableInt) + options[i].intvalue =options[i].def->convertTableInt[0]; + else + { + options[i].intvalue = options[i].def->defaultint; + options[i].strvalue = options[i].def->defaultstr; + } + + } + } + + if (g_driver.x_apply_default_options!=NULL) + g_driver.x_apply_default_options((void*)this); + + printf("*restored default options\n"); +} + + +void COption::setIntValue(option_id _id, int _v, int _confOverrided) +{ + MyString str; + + namevalue& nv =find(_id); + + if (!nv.belongsToValue(_v)) + { + printf("err: unrecognized value %d for %s\n",_v,nv.def->name); + return ; + } + + nv.intvalue = _v; + if (nv.def->convertTableInt) + printf("option %s set to %s (%d)\n",nv.def->name,nv.getDescription(_v),_v); + else + printf("option %s set to (%d)\n",nv.def->name,_v); + + nv.confOverrided = _confOverrided; + +} + +void COption::getStrValue(MyString& _str,option_id _id) +{ + namevalue& nv =find(_id); + + if (nv.strvalue.IsEmpty()) + { + if (nv.def->convertTableInt) + _str = nv.getDescription(nv.intvalue); + else + _str.Format("%d",nv.intvalue); + } + else + _str = nv.strvalue.c_str(); +} + +int COption::getIntValue(option_id _id) +{ + namevalue& nv =find(_id); + + if (!nv.def->convertTableInt || nv.strvalue.IsEmpty()) + return nv.intvalue; + else + { + printf("getintvalue: mismatched type for %s\n",nv.def->name); + return 0; + } +} + +void COption::saveOptions(int _nb) +{ + MyString filename; + getParameterFilename(filename,_nb); + FILE* f = fopen(filename.c_str(),"wt"); + if (!f) + { + outputInfo("cannot create %s for saving options\n",filename.c_str()); + return ; + } + for(int i=0;iinConfig == _nb) + { + MyString line; + MyString desc; + options[i].getAlias(desc); + line.Format("%s:%s\n",options[i].def->name,desc.c_str()); + fputs(line.c_str(),f); + } + } + fclose(f); + //outputInfo("options saved (%s)\n",filename.c_str()); + enableOptions(); +} + + + + +void COption::loadOptions() +{ + + int b = loadParameters(1); + if (!b) + { + // si il n'y avait pas de fichier conf - rajoute le guid au option par défaut et sauve le + MyString guid; + generateGUID(guid); + setValue(OPTION_GUID,guid.c_str()); + saveOptions(1); + } + + // vérifie le numéro de version + int v = getIntValue(OPTION_CONFIGVERSION); + if (v < CONFIG_VERSION) + { + // réinitialise + initOptions(); + setIntValue(OPTION_CONFIGVERSION,CONFIG_VERSION); + printf("upgrading config file to v" TOSTRING(CONFIG_VERSION)); + saveOptions(1); + } + + loadParameters(2); +} + +void COption::getParameterFilename(MyString& filename,int _nb) +{ + filename = CDownload::getPersistentPath(); + filename += ACTIVEGS_DIRECTORY_SEPARATOR ; + filename += "activegs"; + if (_nb==1) + filename += ".conf"; + else + filename += ".ext"; +} + +int COption::loadParameters(int _nb) +{ + + MyString filename; + getParameterFilename(filename,_nb); + + FILE* f = fopen(filename,"rt"); + if (f) + { + outputInfo("loadOptions from %s\n",filename.c_str()); + char line[1025]; + line[1024]=0; + while(fgets(line,1024,f)) + { + int i=0; + while(line[i]!=':' && line[i])i++; + if (line[i]==':') + { + line[i++]=0; + option_id id = findByName(line); + if (id == OPTION_ERROR) + outputInfo("option %s ignored\n",line); + else + { + + int vpos = i; + while( line[i] + && + (line[i]!='\t') + && + (line[i]!='\r') + && + (line[i]!='\n') + /* + && + (line[i]!=' ') */) i++; + + if (line[vpos]) + { + // trim + while(line[i-1]==' ')i--; + line[i]=0; + setValue(id,line+vpos); + } + } + } + } + fclose(f); + return 1; + } + else + return 0; +} + + +CEmulatorConfig::CEmulatorConfig() +{ + xmlAlreadyLoaded = 0; + pXML=NULL; + bramParam.Empty(); + emulatorParam.Empty(); + nb_bps=0; + resetConfig(); +} + +void CEmulatorConfig::setBaseURL(const char* _url) +{ + MyString p = _url; + + if (!strncasecmp(p.c_str(),"file://localhost/",17)) + baseURL = p.substr(16,p.length()-16); // absolute path OG 250810 - leave the trailing slash + else + if (!strncasecmp(p.c_str(),"file:///",8)) +#ifdef WIN32 + baseURL = p.substr(8,p.length()-8); // absolute path +#else + baseURL = p.substr(7,p.length()-7); // keep the / on mac +#endif + else + if (!strncasecmp(p.c_str(),"file://",7)) + baseURL = p.substr(7,p.length()-7); // absolute path + else + baseURL = p; + + baseURL.Replace("%20"," "); + printf("baseURL set to %s\n",baseURL.c_str()); + /* + CDownload dl; + dl.setBaseURL(baseURL.c_str()); + */ +} + +CSlotInfo& CEmulatorConfig::getLocalImage(int _slot, int _drive, int _pos) +{ + return localImages[_slot-5][_drive-1][_pos]; +} + +CActiveImage& CEmulatorConfig::getActiveImage(int _slot, int _drive) +{ + return activeImages[_slot-5][_drive-1]; +} + +CSlotInfo* CEmulatorConfig::setSlot(int _slot, int _disk, const char * _url_normalized, enum eSetSlotPos _pos) +{ + if (_slot<5 || _slot > 7 || _disk < 1 || (_slot==7 && _disk > MAXSLOT7DRIVES) || (_slot!=7 && _disk > 2) ) + { + printf("invalid slot : %d:%d\n",_slot,_disk); + return NULL; + } + // normalise pour garder la compatibilité avec les version < 3.5 + MyString url = _url_normalized; + int pos = url.ReverseFind('?'); + if (pos != -1 ) + { + int i = url.at(pos+1); + size_t l = url.length(); + if (l==(pos+2) && i>='0' && i<='9') + { + url = url.Left(pos); + url += "#pos="; + url += i; + } + } + + const char* _url = url.c_str(); + if (_url && !_url[0]) _url=0; + CActiveImage& ai = activeImages[_slot-5][_disk-1 ]; + + int active=0; + if (_pos==REPLACECURRENT) // posactive + { + active = ai.iActive; + if (!ai.iNb) + { + // ignore SetSlot = NULL si aucun disk n'avait été préalablement chargé + if (!_url) return NULL; + ai.iNb=1; + } + } + else + // if (_pos==ADD) + { + // regarde si le disk était déjà présent dans la liste + for(int i =0;i2048) + { + // overflow! + outputInfo("status set to FAILED(invalid length) for S%dD%d\n",_slot,_disk); + ref.status = FAILED; + } + else + { + ref.url = _url; + ref.url.Trim(); // OG Fix ending space + ref.shortname = getfile(_url); + ref.status = READY2MOUNT; + outputInfo("status set to READY2MOUNT for S%dD%d, image: %s\n",_slot,_disk,ref.shortname.c_str()); + } + } + need2remount=true; + x_refresh_panel(PANEL_DISK); + } + return &ref; +} + +const char* CEmulatorConfig::getSlot(int _slot, int _disk) +{ + if (_slot<5 || _slot > 7 || _disk < 1 || _disk > MAXSLOT7DRIVES) + return NULL; + CActiveImage active = activeImages[_slot-5][_disk-1 ]; + CSlotInfo& ref = localImages[_slot-5][_disk-1 ][active.iActive]; + return STRING2CONSTCHAR(ref.url); +} + + +void CEmulatorConfig::processCommandLine(int argc, char** argv) +{ + + for(int i=1;i.activegsxml||]", ACTIVEGSVERSIONSTRFULL,MB_OK); + ::PostQuitMessage(0); +#endif + } + else + if ((i+1)setSlot(5,1,value,ADD); + else + if (!strcasecmp(option,"slot52")) + this->setSlot(5,2,value,ADD); + else + if (!strcasecmp(option,"slot61")) + this->setSlot(6,1,value,ADD); + else + if (!strcasecmp(option,"slot62")) + this->setSlot(6,2,value,ADD); + else + if (!strcasecmp(option,"slot71")) + this->setSlot(7,1,value,ADD); + else + if (!strcasecmp(option,"slot72")) + this->setSlot(7,2,value,ADD); + else + if (!strcasecmp(option,"BootSlot")) + { + int bs = atoi(value); + this->bootslot = bs; + } + else + if (!strcasecmp(option,"Speed")) + { + int s = atoi(value); + this->speed=s; + } + else + if (!strcasecmp(option,"EmulatorParam")) + this->emulatorParam=value; + else + if (!strcasecmp(option,"SystemParam")) + this->systemParam=value; + else + if (!strcasecmp(option,"BramParam")) + this->bramParam=value; + else + if (!strcasecmp(option,"XMLConfig")) + this->xmlconfig=value; + else + if (!strcasecmp(option,"state")) + { + CDownload dl(this->baseURL); + // dl.setBaseURL(_path); + MyString path; + MyString shortn; + dl.retrieveFile(value,path,shortn); + this->stateFilename=path.c_str(); + } + } + } + else + { + // vérifie l'extension (mais strip le #) + MyString extv(argv[i]); + int l = extv.ReverseFind("#"); + if (l>0) + extv = extv.Left(l); + const char* ext = getext(extv.c_str()); + if ( !strcasecmp(ext,"activegsxml") || !strcasecmp(ext,"xml")) + { + this->xmlconfig = argv[i] ; + } + else + { + MyString path; + MyString file; + // CDownload dl; + int slot = 0; + + // dl.deleteCachedFile(argv[i]); + CDownload dl(this->baseURL); + size_t size = dl.retrieveFile(argv[i],path,file); + ext = getext(path.c_str()); + if (!strcasecmp(ext,"hdv")) + { + slot = 7; + } + else + if (!strcasecmp(ext,"2mg") || !strcasecmp(ext,"po")) + { + if (size> 819712) // OG Fix 2MG size recognitioN (CF. RASTAN 819264 & POMS 7 819712) + slot = 7; + else + slot = 5; + } + else + if ( !strcasecmp(ext,"bin") || !strcasecmp(ext,"dsk") || !strcasecmp(ext,"nib") || !strcasecmp(ext,"po") || !strcasecmp(ext,"do") ) + slot = 6; + if (slot) + { + setSlot(slot,1,path,REPLACECURRENT); + // bootslot = slot; OG Laisse la valeur par défaut! + xmlconfig.Empty(); + } + else + outputInfo("Unknown extension .%s\n",ext); + } + } + } +} + +int CEmulatorConfig::processXML(const char*_path,simplexml* ptrconfig) +{ + + const char* ver = ptrconfig->property("version"); + if (!ver || atoi(ver)!=2) + { + outputInfo("invalid xml version - xml config skipped\n"); + return 0; + } + + int child = ptrconfig->number_of_children(); + for(int i=0;ichild(i); + if (!strcasecmp(ptr->key(),"uid")) + { + const char* s = ptr->value(); + uid = s; + } + else + if (/*!fastConfig && */!strcasecmp(ptr->key(),"image")) + { + int slot = atoi(ptr->property("slot")); + int disk = atoi(ptr->property("disk")); + if ( + ( ( slot==5 || slot==6 ) && ( disk==1 || disk==2) ) + || + ( (slot==7) && ( disk>=1 || disk<=MAXSLOT7DRIVES) ) + ) + { + + MyString absp ; + const char* s = ptr->value(); + int patch_addr = 0; + const char* patch_value = NULL; + + for(int idisk=0;idisknumber_of_children();idisk++) + { + simplexml* ptrd = ptr->child(idisk); + if (!strcmp(ptrd->key(),"name")) + s = ptrd->value(); + else + if (!strcmp(ptrd->key(),"patch")) + { + const char* addr_str = ptrd->property("addr"); + if (addr_str) + { + sscanf(addr_str,"%X",&patch_addr); + patch_value = ptrd->value(); + if (strlen(patch_value)&1) + patch_value=NULL; // doit être pair + } + } + } + + if (s) + { + // CDownload dl(this->baseURL); + CDownload::makeAbsolutePath(s,_path,absp); + + CSlotInfo* pslot = setSlot(slot,disk,absp.c_str(),ADD); + if (pslot && patch_value && patch_addr) + { + pslot->patch_addr = patch_addr; + pslot->patch_value = patch_value; + pslot->patch_value.MakeUpper(); + } + } + } + } + else + if (/*!fastConfig && */!strcasecmp(ptr->key(),"bootslot")) + { + int slot = atoi(ptr->value()); + if (slot>=5 && slot<=7) + { + bootslot = slot; + } + } + else + if (!strcasecmp(ptr->key(),"runtime")) + { + const char* mode_str = ptr->property("mode"); + if (mode_str) + { + enum mode_breakpoint mode = BRK_DISABLED; + if (strchr(mode_str,'X')) + mode = (enum mode_breakpoint)(mode|BRK_X); + if (strchr(mode_str,'R')) + mode = (enum mode_breakpoint)(mode|BRK_READ); + if (strchr(mode_str,'W')) + mode = (enum mode_breakpoint)(mode|BRK_WRITE); + if (strchr(mode_str,'P')) + mode = (enum mode_breakpoint)(mode|BRK_PATCH); + if (strchr(mode_str,'B')) + mode = (enum mode_breakpoint)(mode|BRK_STOP); + if (strchr(mode_str,'S')) + mode = (enum mode_breakpoint)(mode|BRK_SLOWSPEED); + if (strchr(mode_str,'D')) + mode = (enum mode_breakpoint)(mode|BRK_DEFAULTSPEED); + if (strchr(mode_str,'M')) + mode = (enum mode_breakpoint)(mode|BRK_MESSAGE); + + + + const char* addr_str = ptr->property("addr"); + if (addr_str && !(strlen(addr_str)&1)) + { + word32 patch_addr; + sscanf(addr_str,"%X",&patch_addr); + + const char* value_str = ptr->value(); + if (value_str == NULL || !(strlen(addr_str)&1)) + { + + int bp = nb_bps; + if (bp != MAX_BREAK_POINTS) + { + + + const char* check = ptr->property("check"); + memset(BPs[bp].check,0,MAX_CHECK); + if (check!=NULL) + { + // printf("found check:%s\n",check); + int i=0; + while(i='a') + c1 -= ('a'-10); + else + if (c1>='A') + c1 -= ('A'-10); + else + c1 -= '0'; + + if (c2>='a') + c2 -= ('a'-10); + else + if (c2>='A') + c2 -= ('A'-10); + else + c2 -= '0'; + + BPs[bp].check[i++]= c1*16+c2; + } + + } + + BPs[bp].addr= patch_addr; + BPs[bp].value = value_str; + BPs[bp].mode = mode; + nb_bps++; + } + } + } + } + } + else + if (!strcasecmp(ptr->key(),"speed")) + { + int sp = atoi(ptr->value()); + if (sp>=0 && spkey(),"bramparam")) + { + const char* s = ptr->value(); + xmlBramParam = s; + } + else + if (!strcasecmp(ptr->key(),"emulatorparam")) + { + const char* s = ptr->value(); + xmlEmulatorParam = s; + } + else + if (!strcasecmp(ptr->key(),"systemparam")) + { + const char* s = ptr->value(); + xmlSystemParam = s; + } + else + if (!strcasecmp(ptr->key(),"name")) + { + const char* s = ptr->value(); + name = s; + } + else + if (!strcasecmp(ptr->key(),"desc")) + { + const char* s = ptr->value(); + desc = s; + } + else + if (!strcasecmp(ptr->key(),"publisher")) + { + const char* s = ptr->value(); + publisher = s; + } + else + if (!strcasecmp(ptr->key(),"year")) + { + const char* s = ptr->value(); + year = s; + } + if (!strcasecmp(ptr->key(),"state")) + { + const char* s = ptr->value(); + CDownload dl(_path); // ??? + MyString path; + MyString shortn; + dl.retrieveFile(s,path,shortn); + stateFilename=path.c_str(); + } + + } + + return 1; +} + + +void CEmulatorConfig::loadXMLFile() +{ + + + if (xmlconfig.IsEmpty() && !pXML) + { + xmlEmulatorParam.Empty(); + xmlSystemParam.Empty(); + xmlBramParam.Empty(); + return ; + } + + if (xmlAlreadyLoaded) + { + printf("discard xml...\n"); + return ; + } + resetConfig(); + xmlAlreadyLoaded = 1; + + + // If XML already present, use preparsed structrue + if (pXML) + { + processXML(baseURL.c_str(),pXML); + return ; + } + + MyString fullpath; + MyString fulldir; + //CDownload dl; + CDownload::makeAbsolutePath(STRING2CONSTCHAR(xmlconfig),baseURL.c_str(),fullpath); + getdir(fullpath.c_str(),fulldir); + xmlconfig = fullpath.c_str() ; + + ActiveGSList list; + if (!list.loadFromFile(STRING2CONSTCHAR(xmlconfig))) + return ; + + simplexml* ptrconfig = NULL; + if (list.elements.size()==1) + ptrconfig = list.elements.at(0).pXML; + else + { + CStdStringA xmlconfig2 = xmlconfig; + int pos = xmlconfig2.ReverseFind("#id="); + if (pos==-1) + { + printf("No key requested with .activegsxml list format\n"); + return ; + } + + MyString key = xmlconfig2.Mid(pos+4); + for(unsigned int i=0;ibaseURL.c_str(),domain); + str += "&d="; + str += domain.c_str(); + +#ifdef ACTIVEGSPLUGIN + CDownload dl; + dl.GetFile(str.c_str(),NULL); +#endif +#endif + */ +} + +void CEmulator::setConfig(CEmulatorConfig* _config) +{ + config = _config; + + sendStats(); + config->loadXMLFile(); + /* + CDownload dl; + dl.setBaseURL(config->baseURL.c_str()); + */ +} + + +char read2MG(const char* ref,int block, int byte) +{ + return ref[0x40+block*512+byte]; +} + +int find2MG(const char* ref,int block, char header, const char* str) +{ + int byte = 4; + + while (1) + { + char r = read2MG(ref,block,byte); + if (!r) return 0; + + if (r==header) + { + int c=0; + while(str[c]) + { + if (read2MG(ref,block,byte+c+1)!=str[c]) break; + c++; + } + if (!str[c]) + { + // found! + return block*512+byte; + } + } + byte+=0x27; + if (byte==0x1FF) + { + byte =4; + block = read2MG(ref,block,2) + read2MG(ref,block,3)*256; + if (!block) return 0; + } + + } + return 0; +} + + + +int findSetStart(const char* buffer) +{ + // start dir + + int sys = find2MG(buffer,2,(char)0xD6,"SYSTEM"); + if (!sys) + { + outputInfo("cannot find System dir!"); + return false; + } + + int sysbloc = buffer[sys+0x40+0x11]+buffer[sys+0x40+0x12]*256; + + int setstart = find2MG(buffer,sysbloc,0x1D,"SETSTART.DATA"); + if (!setstart) + { + outputInfo("cannot find setstart file"); + return false; + } + + return setstart; + +} + +bool CEmulator::setStartParam() +{ + // prend le nom du fichier en 71 + + int slot = setStart.slot/10; + int drive = setStart.slot%10; + CSlotInfo& ref = getLocalIMGInfo(slot,drive); + const char* filename= ref.filename.c_str(); //getLocalIMG(setStart.slot/10,setStart.slot%10); + if (!filename) return false; + FILE* f=fopen(filename,"rb"); + if (!f) return false; + + // get file size + fseek(f,0,SEEK_END); + int filesize=ftell(f); + + char* buffer=(char*)malloc(filesize); + + fseek(f,0,SEEK_SET); + fread(buffer,1,filesize,f); + fclose(f); + + // + int offset = findSetStart(buffer); + if (!offset) + { + free(buffer); + return false; + } + + char *entry = buffer+offset+0x40; + + /* + char *entry = buffer+setStart.addr; + */ + if ((entry[0]!=0x1D) || (strcmp(entry+1,"SETSTART.DATA")) ) + { + free(buffer); + return false; + } + + + + // buffer + 17 = block + int blockpos = (entry[17]+entry[18]*256)*512+64; + + // buffer + 19 = size + int size = setStart.file.length(); + entry[0x15]=(size+3)&0xFF; + entry[0x16]=((size+3)>>8)&0xFF; + entry[0x17]=0; + + + char* block = buffer+blockpos; + memset(block,0,256); + block[0]=size&0xFF; + block[1]=(size>>8)&0xFF; + strcpy(block+2,setStart.file.c_str()); + block[size+2]=0x31; // ???? + + f=fopen(filename,"wb"); + if (!f) + { + free(buffer); + return false; + } + fseek(f,0,SEEK_SET); + fwrite(buffer,1,filesize,f); + fclose(f); + free(buffer); + + struct param p; + p.data = "SetStart"; + p.value = setStart.file; + p.hex = offset+0x40; //setStart.addr; + addUniqueParam(p); + // params.push_back(p); + + x_refresh_panel(PANEL_PARAMS); + + return true; +} + + +int CEmulator::acceptEvents() +{ + return r_sim65816.get_state()==RUNNING; +} + + +void CEmulator::onEmulatorParamChanged(const char* _param) +{ + if (!acceptEvents()) + { + outputInfo("### onEmulatorParamChanged Ignored"); + return; + } + option.addEmulatorParam(_param); + setEmulatorParam(_param); + option.enableOptions(); +} + +void CEmulator::onBootSlotChanged(int _bootslot) +{ + if (!acceptEvents()) + { + outputInfo("### OnBootSlotChanged Ignored"); + return; + } + config->bootslot = _bootslot; + relaunchEmulator(); +} + +void CEmulator::relaunchEmulator() +{ + outputInfo("Trying to relaunch Emulator()\n"); + + if (this !=theEmulator) + { + outputInfo("Another instance was running in another process : killing it()\n"); + delete theEmulator; + } + + forceFocus(); + + if (bInThread) + { + outputInfo("Asking for current instance to restart\n"); + r_sim65816.restart_emulator(); + } + else + { + outputInfo("reactivate emulator!\n"); + launchEmulator(); + } +} + + +void CEmulator::onSpeedChanged(int _speed, bool _ignoreAcceptEvents) +{ + + if (!_ignoreAcceptEvents && !acceptEvents()) + { + outputInfo("### onSpeedChanged Ignored"); + return; + } + + /* + int sp = g_sim65816.set_limit_speed((speedenum)_speed); + config->speed = sp; + */ + option.setIntValue(OPTION_SPEED,_speed); + option.enableOptions(); + forceFocus(); +} + +void CEmulator::addUniqueParam(struct param _p) +{ + int i; + for(i=0;i params; + + vector::iterator v; + v = params.begin(); + while(v!=params.end()) + { + if (v->data == _p.data) + { + v->value = _p.value; + v->hex = _p.hex; + return ; + } + v++; + } + params.push_back(_p); +*/ +} + + +const char* currentBuild=TOSTRING(ACTIVEGSMAJOR)"." TOSTRING(ACTIVEGSMINOR) "." TOSTRING(ACTIVEGSBUILD); + + + +void CEmulator::checkAlerts() +{ + + static int bRunOnlyOnce=0; + if (bRunOnlyOnce) return ; + bRunOnlyOnce=1; + +#ifdef _DEBUG + option.setValue(OPTION_LATESTVERSION,"5.1.4"); +#endif + + if (!option.getIntValue(OPTION_DONOTSHOWUPDATEALERT)) + { + MyString newestBuild; option.getStrValue(newestBuild,OPTION_LATESTVERSION); + MyString lastestUpdatedBuild; option.getStrValue(lastestUpdatedBuild,OPTION_LATESTUPDATECHECK); + if ( !newestBuild.IsEmpty() + && lastestUpdatedBuild.compare(newestBuild) + && newestBuild.compare(currentBuild) ) + { + option.setValue(OPTION_LATESTUPDATECHECK,newestBuild); + option.saveOptions(2); + + x_alert("A newer version (%s) of ActiveGS is available!\nCheck http://activegs.freetoolsassociation.com for more info.",newestBuild.c_str(),currentBuild); + + return ; + } + + + } + +} + +bool CEmulator::setParam(eParamType _type, const char* _data, const char* _value) +{ + + static const struct { const char* name; int* address; } variables[] = + { + + // boot + { "boot", (int*)0x28 }, + + // drive emulation + { "driveemulation", &g_iwm.g_fast_disk_emul }, + { "slow", (int*)0 }, + { "fast", (int*)1 }, + + // slot + { "slot6", (int*)0x26 }, + { "drive", (int*)0 }, + { "disk", (int*)0 }, + { "card",(int*)1}, + + // columns + { "columns", (int*)0x19 }, + { "40", (int*)0 }, + { "80", (int*)1 }, + + // speed + + { "forcespeed", (int*)0x20 }, + { "normal",(int*)0}, + { "fast",(int*)1}, + + { "zipspeed",&g_moremem.g_zipgs_reg_c05a}, + // { "simulatespace",&g_adb.g_simulate_space}, + { "emulate6502",&g_sim65816.g_6502_emulation }, + { "apple2erom",&g_sim65816.g_use_apple2e_rom }, + + // bram + { "font", (int*)0x1A }, + { "background", (int*)0x1B }, + { "border", (int*)0x1C }, + + { "black", (int*)0x00 }, + { "dark-blue", (int*)0x02 }, + { "dark-green", (int*)0x04 }, + { "medium-blue", (int*)0x06 }, + { "brown", (int*)0x08 }, + { "light-gray", (int*)0x0A }, + { "green", (int*)0x0C }, + { "aquamarine", (int*)0x0E }, + { "deep-red", (int*)0x01 }, + { "purple", (int*)0x03 }, + { "dark-gray", (int*)0x05 }, + { "light-blue", (int*)0x07 }, + { "orange", (int*)0x09 }, + { "pink", (int*)0x0b }, + { "yellow", (int*)0x0d }, + { "white", (int*)0x0f }, + + { "language", (int*)0x29 }, + { "keyboard", (int*)0x2a }, + { "french", (int*)0x02 }, + /* +* $0 = USA Dvorak +* $1 = UK USA +* $2 = French USA +* $3 = Danish USA +* $4 = Spanish USA +* $5 = Italian USA +* $6 = German USA +* $7 = Swedish + */ + { NULL, NULL } + }; + + int value = -1000; + int* data = 0; + + if (!strcasecmp(_data,"driveemulation")) + data=0; + + int i=0; + while(variables[i].name) + { + if (!strcasecmp(_data,variables[i].name)) + { + data = (int*)variables[i++].address; + while(variables[i].name) + { + if (!strcasecmp(_value,variables[i].name)) + { + value = (intptr_t)(variables[i].address); + break; + } + i++; + } + } + else + i++; + } + + + + if (value==-1000) + value=atoi(_value); + if (!data) + data=(int*)atoi(_data); + + if ( data && (value!=-1000)) + { + outputInfo("%s = %s (%d)\n",_data,_value,value); + + struct param p; + p.data = _data; + p.value = _value; + p.hex = value; + + if (data==&g_moremem.g_zipgs_reg_c05a) + { + g_moremem.g_zipgs_reg_c05a = ((g_moremem.g_zipgs_reg_c05a&0x0F)|(value&0x0F)<<4); + p.value.Format("%3d%%",(int)((16-((g_moremem.g_zipgs_reg_c05a>>4)&0x0F))*100/16)); + } + else + if ((intptr_t)data > 256) +// if (_type==EMULATOR) + *data = value; + else + { + // bram + int idx = (intptr_t)data; + if (idx>0 && idx<256) + g_clock.g_bram_ptr[idx]=value; + else + printf("invalid bram index : %s (%d)\n",_data,idx); + + } + + addUniqueParam(p); + } + else + { +#ifdef _DEBUG + outputInfo("unknown parameters (%s)(%s)\n",_data,_value); +#endif + } + + return true; + +} + +bool CEmulator::parseParam(const char* _param,eParamType _type) +{ + + // Format + // data=value;data2=value; + + const char* run = _param; + if (!run) return false; + + MyString data; + MyString value; + + while(1) + { + // data + data.Empty(); + + // skip ; + while (*run == ';') run++; + if (!*run) return false; // done + + while(*run!='=' && *run!=':') + { + if (!*run) return false; + data += *run; + run++; + } + run++; // passe le = + value.Empty(); + + while(*run && *run!=';') + value += *run++; + + if (!strcasecmp(data.c_str(),"setstart")) + extractSetStartParam(value.c_str()); + else + { + if (data[0]!='_') + setParam(_type,data.c_str(),value.c_str()); + } + if (!*run) break; + run++; + } + + return true; +} + + +bool COption::addEmulatorParam(const char* _param) +{ + + const char* run = _param; + if (!_param) return true; +// printf("loading system param\n"); + + MyString data; + MyString value; + + while(1) + { + // data + data.Empty(); + + // ignore the initial _ (for backward compatibility) + if (*run=='_') run++; + while(*run!='=' && *run!=':') + { + if (!*run) return false; + data += *run; + run++; + } + run++; // passe le = + value.Empty(); + + while(*run && *run!=';') + value += *run++; + + // regarde si c'est une option + option_id id = findByName(data.c_str()); + if (id!=OPTION_ERROR) + setValue(id,value.c_str(),1); + /* + if (data[0]=='_') + { + MyString data2; + data2 = data.substr(1); + option_id id = findByName(data2.c_str()); + if (id==OPTION_ERROR) + printf("could not process : %s %s\n",data2.c_str(),value.c_str()); + else + setValue(id,value.c_str(),1); + } + */ + + if (!*run) break; + run++; + } + + return true; +} + + + +bool CEmulator::extractSetStartParam(const char* run) +{ + // Format slot|file + + setStart.slot = 0; + int slot; + + MyString data; + while(*run!=':' && *run) + data += *run++; + + slot = atoi(data.c_str()); + if ( (slot!=51) && (slot!=52) && (slot!=71) && (slot!=72) ) return false; + + data.Empty(); + while(*run) + data += *run++; + + setStart.slot = slot; + setStart.file = data; + + return true; +} + +// CChildView + + +void CEmulator::updateBramParameters() +{ + if (!this) return ; + + parseParam(bramParam.c_str(),BRAM); + x_refresh_panel(PANEL_PARAMS); +} + +void CEmulator::setBramParam(const char* _p) +{ + + + if (bramParam.IsEmpty()) + bramParam = _p; + else + { + bramParam += ';'; + bramParam += _p; + } +} + + + +void CEmulator::ejectDisk(int _slot,int _drive) +{ + if (!this) return ; + CSlotInfo& ref = getLocalIMGInfo(_slot,_drive); + if (ref.status == UNDEFINED) return ; + ref.status = EJECTED ; + outputInfo("status set to EJECTED for S%dD%d\n",_slot,_drive); + config->need2remount=true; + x_refresh_panel(PANEL_DISK); + + if(g_sim65816.g_enable_disk_sound) + play_sound(SOUND_EJECTION); +} + + +void CEmulator::reloadDisk(int _slot,int _drive) +{ + if (!this) return ; + CSlotInfo& ref = getLocalIMGInfo(_slot,_drive); + if ( + (ref.status == EJECTED )|| + (ref.status == FAILED ) ) + { + ref.status = READY2MOUNT; + outputInfo("status set to READY2MOUNT for S%dD%d\n",_slot,_drive); + config->need2remount=true; + x_refresh_panel(PANEL_DISK); + } +} + + + +CEmulator::CEmulator(CEmulator** _parent) +{ + if (theEmulator) + x_fatal_exit("MULTIPLE INSTANCES"); + bInThread = false; + theEmulator= this; + parent = _parent ; +#ifdef ACTIVEGSPLUGIN + pInstance = NULL; +#endif + theWindow = NULL; + g_sim65816.halt_sim = 0; + x=0; + y=0; + memset(lights,0,sizeof(lights)); + memset(tracks,0,sizeof(tracks)); + config = NULL; +} + +#ifdef ACTIVEGSPLUGIN +void CEmulator::setPluginInstance(void* _instance) +{ + pInstance = _instance; +} +#endif + +void CEmulator::mountDisks() +{ + config->need2remount=true; + forceFocus(); +} + + +int CEmulator::theThread() +{ + +#ifdef TEST_RASTER + + x_test_raster(); + +#else + + if (!config) + { + x_fatal_exit("!!!MISSING CONFIG!!!\n"); + return 0; + } + + if (bInThread) + { + x_fatal_exit("THREAD ALREADY RUNNING\n"); + return 0; + } + + + bInThread=true; + outputInfo("emulator thread launched!\n"); + + while(1) + { + config->need2remount=true; + mountDelayedDisk(); + + nbparams=0; + bramParam.Empty(); + + + // 1- OPTION PAR DEFAULT DE L'EMULATEUR + + // initialise les options par défault + setStart.slot=0; + g_sim65816.g_6502_emulation = 0; + g_sim65816.g_use_apple2e_rom = 0; + + + // paramètre auto! + if (config->bootslot==-1) + { + // default + config->bootslot=5; + for(int b = 5;b<=7;b++) + { + const char* s = config->getSlot(b,1); + if (s && s[0]) + { + printf("bootslot set to %d\n",b); + config->bootslot=b; + break; + } + } + } + + switch(config->bootslot) + { + case 6: + setEmulatorParam("driveemulation:slow;emulate6502:1;"); + setBramParam("slot6:card;boot:6;border:black;background:black;font:white"); + + break; + case 5: + setBramParam("boot=5"); + break; + default: + setEmulatorParam("driveemulation:fast;"); + setBramParam("slot6:disk"); + break; + } + + // 1 la vitesse + + g_moremem.g_zipgs_reg_c05a = 0x0F; // MAX SPEED + + int sp = config->speed; + if (sp == SPEED_AUTO) + { + if (config->bootslot==6) + sp = SPEED_1MHZ; + else + sp = SPEED_GS; + printf("speed auto set to %d\n",sp); + } + + onSpeedChanged(sp,true); + + // 2 - LES OPTIONS DU FICHIERS DE CONF + + option.loadOptions(); + + // 3 - LES OPTIONS DU FICHIER XML CONFIG + + printf("*loading option from xml\n"); + printf("EmulatorParam: %s\n",config->xmlEmulatorParam.c_str()); + printf("BramParam: %s\n",config->xmlBramParam.c_str()); + printf("SystemParam: %s\n",config->xmlSystemParam.c_str()); + + option.addEmulatorParam(config->xmlSystemParam.c_str()); + setBramParam(config->xmlSystemParam.c_str()); + setBramParam(config->xmlBramParam.c_str()); + option.addEmulatorParam(config->xmlEmulatorParam.c_str()); + setEmulatorParam(config->xmlEmulatorParam.c_str()); + + // 4 - LES OPTIONS JAVASCRIPT + printf("*loading option from javascript\n"); + option.addEmulatorParam(STRING2CONSTCHAR(config->systemParam)); + setBramParam(STRING2CONSTCHAR(config->systemParam)); + setBramParam(STRING2CONSTCHAR(config->bramParam)); + setEmulatorParam(STRING2CONSTCHAR(config->emulatorParam)); + option.addEmulatorParam(STRING2CONSTCHAR(config->emulatorParam)); + + option.enableOptions(); + + mountDisks(); + + g_adb.g_adb_repeat_delay = option.getIntValue(OPTION_ADBDELAY); + g_adb.g_adb_repeat_rate = option.getIntValue(OPTION_ADBRATE); + + int ar = option.getIntValue(OPTION_AUDIORATE); + if (ar) + { + if (ar<11025 || ar>44100) + ar = 22100; + g_sound.g_audio_enable = 1; + g_sound.g_audio_rate = ar; + } + else + g_sound.g_audio_enable = 0; + + int mem = option.getIntValue(OPTION_MEMORYSIZE); + + if (mem <=8 && mem>=0) + mem *= 1024*1024; + else + if (mem>=128 && mem<=8*1024) + { + mem *= 1024; + } + else + if (mem>=128*1024 && mem<=8*1024*1024) + { + } + else + mem = 2*1024*1024; + + g_sim65816.g_mem_size_exp = mem; + + if (config->bootslot!=6 && g_sim65816.g_use_apple2e_rom) + { + printf("disabling apple 2e rom (only works when booting from slot6\n"); + g_sim65816.g_use_apple2e_rom = 0; + } + + + + g_savestate.init(); + if (config->stateFilename.IsEmpty()) + { + } + else + { + + printf("about to restore : %s\n",config->stateFilename.c_str()); + g_savestate.restoreState(config->stateFilename.c_str()); + } + + printf("*** notifying boot option ***\n"); + x_refresh_panel(PANEL_BOOT); + printf("*** launching Emulator Mainloop\n"); + +#ifndef MAC + kegsmain(0,NULL); +#else + extern int macmain(int,char**); + macmain(0,NULL); +#endif + g_savestate.shut(); + + joystick_shut(); + + + if (!r_sim65816.restart_requested) + break; + else + { + outputInfo("*** Restarting emulator\n"); + r_sim65816.restart_requested = 0; + + outputInfo("*** bRestarting\n"); + setConfig(config); + } + } + +#endif // TEST_RASTER + + outputInfo("end of emulator thread\n"); + + bInThread=false; + return 0; + + +} + +void CEmulator::forceFocus() +{ + // TODO OG +} + + +void CEmulator::readImageInfo(int _slot,int _drive, int _imagelen, int _imagestart, int _isprodos) +{ + if (!this) return ; + CSlotInfo& ref = getLocalIMGInfo(_slot,_drive); + ref.size = _imagelen; + MyString prefix("?"); + if (_isprodos) //_info.track0_len!=-1) + { + char ptr[32]; + memset(ptr,0,sizeof(ptr)); + const char* filename = ref.filename.c_str(); + if (filename) + { + FILE* f = fopen(filename,"rb"); + if (f) + { + fseek(f,_imagestart+0x404,SEEK_SET); + if (16==fread(ptr,1,16,f)) + if ( ((ptr[0]&0xF0)==0xF0) ) + { + int len= ptr[0]&0x0F; + ptr[len+1] = 0; + prefix = "/"; + prefix += (ptr+1); + } + + fclose(f); + } + } + } + else + prefix = "NON-PRODOS"; + ref.prefix = prefix; +} + +int CEmulator::getLocalMultipleIMGInfo(int _slot,int _drive,CSlotInfo& info, int _pos) +{ + CActiveImage& active = config->getActiveImage(_slot,_drive); + if (_pos>=active.iNb) return 0; + info = config->getLocalImage(_slot,_drive,_pos); + if (active.iActive==_pos) return 1; + else + return -1; +} + +int CEmulator::mountDelayedDisk() +{ + for(int slot=5;slot<=7;slot++) + for(int disk=1;disk<=2;disk++) + { + CSlotInfo& ref = getLocalIMGInfo(slot,disk); + if (ref.status==DELAYEDMOUNT) + { + outputInfo("status set to READY2MOUNT for S%dD%d\n",slot,disk); + ref.status=READY2MOUNT; + } + + } + return 0; +} + +bool CEmulator::remainingDelayedDisk() +{ + for(int slot=5;slot<=7;slot++) + for(int disk=1;disk<=2;disk++) + { + CSlotInfo& ref = getLocalIMGInfo(slot,disk); + if (ref.status==DELAYEDMOUNT) + return true; + } + return false; +} + +int CEmulator::getSmartSwap() +{ + int found = 0; + for(int slot=5;slot<=6;slot++) + { + for(int disk=1;disk<=2;disk++) + { + CActiveImage& active = config->getActiveImage(slot,disk); + if (active.iNb > 1) + { + if (found) + { + // multiple multiple : does not know how to handle + return 0; + } + else + found = slot*10+disk; + } + } + } + return found; +} + +int CEmulator::smartSwap() +{ + int smart = getSmartSwap(); + if (!smart) + { + outputInfo("smart swap not available\n"); + return 0; + } + return swapDisk(smart/10,smart%10); +} + + + +int CEmulator::swapDisk(int _slot,int _drive, int pos ) +{ + CActiveImage& active = config->getActiveImage(_slot,_drive); + if (active.iNb <=1) + { + outputInfo("nothing to swap\n"); + return 0; + } + + CSlotInfo& ref = getLocalIMGInfo(_slot,_drive); + if (ref.status != UNDEFINED) + { + ref.status = EJECTED ; + outputInfo("status set to EJECTED for S%dD%d\n",_slot,_drive); + } + //ejectDisk(_slot,_drive); + + + // passe à la suivante + if (pos<0) + pos = active.iActive+1; + if (pos>=active.iNb) + pos=0; + + active.iActive = pos; + outputInfo("swapping to entry %d\n",pos); + + CSlotInfo& info = getLocalIMGInfo(_slot,_drive); + if (!info.url.IsEmpty()) + { + outputInfo("status set to DELAYEDMOUNT for S%dD%d\n",_slot,_drive); + info.status = DELAYEDMOUNT; + info.delay = (int)(60*1.5); // 5s + } + + config->need2remount=true; + x_refresh_panel(PANEL_DISK); + return 1; +} + +CSlotInfo& CEmulator::getLocalIMGInfo(int _slot,int _drive) +{ + CActiveImage& active = config->getActiveImage(_slot,_drive); + return config->getLocalImage(_slot,_drive,active.iActive); +} + + +int CEmulator::mountImages() +{ + if (!this) return 0; + +#if defined(ACTIVEGSPLUGIN) && !defined(DRIVER_IOS) + checkAlerts(); +#endif + + if (config->need2remount) + { + //outputInfo("mounting images...\n"); + + int ri = 0; + for(int slot=5;slot<=7;slot++) + { + int maxdrive=2; + if (slot==7) maxdrive=MAXSLOT7DRIVES; + for(int drive=1;drive<=maxdrive;drive++) + { + ri |= loadDiskImage(/*name,*/slot,drive); + if (r_sim65816.should_emulator_terminate()) + return 0 ; + // regarde si il faut patcher le disque systËme + if (setStart.slot == (slot*10)+drive) + setStartParam(); + } + } + + config->need2remount = (int)remainingDelayedDisk(); + if (ri) + x_refresh_panel(PANEL_DISK); + + return 1; + } + else + return 0; + +} + +int CEmulator::loadDiskImage(int _slot,int _drive) +{ + ASSERT(theEmulator==this); + + CSlotInfo& ref = getLocalIMGInfo(_slot,_drive); + if (ref.status != READY2MOUNT) + return 0; + + if (ref.url.IsEmpty()) + { + ref.status = NOTHING; + outputInfo("status set to NOTHING for S%dD%d\n",_slot,_drive); + ref.filename.Empty(); + ref.shortname.Empty(); + return 1; + } + + MyString path; + MyString shortname; + + CDownload dl(this->config->baseURL); +#ifdef DRIVER_ANDROID + dl.fromMainThread = false; +#endif + + + if (dl.retrieveFile(STRING2CONSTCHAR(ref.url),path,shortname)) + { + ref.filename = path ; + ref.shortname = shortname ; + ref.status = MOUNTED ; + outputInfo("status set to MOUNTED for S%dD%d\n",_slot,_drive); + //ref.delay = 1; + ::showStatus("Image %s mounted [S%dD%d]",ref.shortname.c_str(),_slot,_drive); + return 1 ; + } + else + { + ref.status = FAILED ; + outputInfo("status set to FAILED for S%dD%d\n",_slot,_drive); + ref.shortname = getfile(STRING2CONSTCHAR(ref.url)); + return 1; + } + +} + +void CEmulator::resetLocalIMG(void) +{ +} + +// Interface + +const char* getLocalIMG(int _slot,int _drive) +{ + CEmulator* emu = CEmulator::theEmulator; + CSlotInfo& ref = emu->getLocalIMGInfo(_slot,_drive); + + if (ref.status == DELAYEDMOUNT) + { + ref.delay--; + if (ref.delay<=0) + { + ref.status = READY2MOUNT; + outputInfo("status set to READY2MOUNT for S%dD%d : image %s\n",_slot,_drive,ref.shortname.c_str()); + } + emu->config->need2remount=true; + return NULL; + } + + if (ref.status == MOUNTED) + return ref.filename.c_str() ; + else + return NULL; +} + + +int mountImages() +{ + return CEmulator::theEmulator->mountImages(); +} + +void updateBramParameters(unsigned char* bramPtr) +{ + return CEmulator::theEmulator->updateBramParameters(); +} + +void readImageInfo(int _slot,int _drive, int _imagelen, int _imagestart, int _isprodos) +{ + return CEmulator::theEmulator->readImageInfo(_slot,_drive,_imagelen,_imagestart,_isprodos); +} + +/* +void refreshInfo() +{ + CEmulator* emu = CEmulator::theEmulator; + if (!emu) return ; + emu->infoRefresh(); +} +*/ + +void disableConsole() +{ + CEmulator* emu = CEmulator::theEmulator; + if (!emu) return ; + emu->disableConsole(); + +} + +int activeRead(char* buf) +{ + CEmulator* emu = CEmulator::theEmulator; + if (!emu) + { + buf[0]=0; + return 0; + } + else + return (emu->activeRead(buf)); + +} + + + +void COption::enableOptions() +{ + + + r_sim65816.g_ignore_bad_acc = !getIntValue(OPTION_HALTONBADACC); + r_sim65816.g_ignore_halts = !getIntValue(OPTION_HALTONHALTS); + r_sim65816.g_halt_on_bad_read = getIntValue(OPTION_HALTONBADREAD); + r_sim65816.set_rewind_enable(getIntValue(OPTION_ENABLEREWIND)); + + r_sim65816.set_color_mode( (colormodeenum)getIntValue(OPTION_COLORMODE)); + r_sim65816.set_video_fx((videofxenum)getIntValue(OPTION_VIDEOFX)); + + g_joystick_type = getIntValue(OPTION_JOYSTICKMODE); +#ifndef VIRTUALAPPLE + g_sim65816.set_fixed_vblank( getIntValue(OPTION_FIXEDVBLANK),(speedenum)getIntValue(OPTION_SPEED) ); +#endif + + g_sim65816.g_enable_disk_sound = getIntValue(OPTION_DISKSOUND); + + g_paddles.g_joystick_scale_factor_x = (getIntValue(OPTION_JOYXSCALE)*256)/1000; // 0x100 = 1 + g_paddles.g_joystick_scale_factor_y = (getIntValue(OPTION_JOYYSCALE)*256)/1000; // 0x100 = 1 + + + g_adb.g_simulate_space = getIntValue(OPTION_SIMULATESPACE); + + + if (r_sim65816.get_state()==RUNNING) + paddle_fixup_joystick_type(); +#ifdef DRIVER_IOS + extern int x_frame_rate; + extern int x_lock_zoom; + x_frame_rate = getIntValue(OPTION_FRAMERATE); +#warning "TODO CHANGE FPS IN REALTIME" + x_lock_zoom = getIntValue(OPTION_LOCKZOOM); +#endif + + x_refresh_panel(PANEL_RUNTIME); + + +} + + +void CEmulator::setLight(int _motorOn,int _slot, int _drive, int _track) +{ + int id=0; + for(int slot=5;slot<=6;slot++) + for(int drive=1; drive<=2; drive++) + { + if ( (_slot==slot) && (_drive==drive) ) + { + lights[id]=_motorOn; + tracks[id]=_track; + } + else + lights[id]=0; + id++; + } + +} + +//extern char targetSpeed[256]; +extern char estimatedSpeed[256]; + + +void CEmulator::processCommand( const char* _val, MyString& ret) +{ +// outputInfo("processingCommand:%s\n",_val); + if (!strcmp(_val,"help")) + ret = "({ commands : [ \"help\" , \"version\", \"system\", \"status\", \"runtime\", \"reboot\",\"savestate\", \"restorestate\", \"pause\", \"resume\" ,\"pauseresume\", \"swap\", \"screenshot\",\"saveoptions\",\"defaultoptions\",\"sendkey:ctrl;alt;esc\" ] })"; + else + if (!strcasecmp(_val,"saveoptions")) + { + option.saveOptions(1); + ret = "({ \"info\" : \"options saved\"})"; + } + else + if (!strcasecmp(_val,"defaultOptions")) + { + option.setDefaultOptions(); + option.enableOptions(); + ret = "({ \"info\" : \"default options restored\"})"; + } + else + if (!strncasecmp(_val,"sendkey:",8 /* sizeof ("sendkey:")*/)) + { +#if defined (DRIVER_OSX) && !defined(ACTIVEGSPLUGIN) + ret = "({ \"info\" : \"not implemented\"})"; +#else + const char* keystr[] = { "^ctrl" , "^alt", "^esc", "^reset", "^option", NULL }; + const int keycode[] = { 0x36 , 0x37 , 0x35, 0x7F, 0x3A, 0 }; +#define MAX_CODE 100 + int code[MAX_CODE]; + int nbcode=0; + const char* ptr = _val+8; + MyString keysent; + while(*ptr) + { + const char* p = ptr; + while(*p && *p!=';') p++; + int l = p-ptr; + int k = 0; + while(keystr[k]) + { + if (!strncasecmp(keystr[k],ptr,l)) + { + code[nbcode++]=k; + // printf("found %s (%X)\n",keystr[k],keycode[k]); + keysent+=keystr[k]; + keysent+=";"; + break; + } + k++; + } + if (!keystr[k]) + printf("key not valid %s\n",ptr); + ptr = p; + if (*ptr==';') ptr++; + if (nbcode==MAX_CODE) break; + } + + for(int i=0;i=0;i--) + { + add_event_key(keycode[code[i]],1); + } + + ret.Format("({ \"info\" : \"key sent %s\"})",keysent.c_str()); +#endif + } + else + if (!strcasecmp(_val,"version")) + { + ret = "({ \"info\" : \"" ACTIVEGSVERSIONSTRFULL "\"})"; + } + else + /* + if (!strcmp(_val,"rewind")) + { + stateActionRequired = STATE_REWIND; + ret = "({ \"info\" : \"rewind activated\"})"; + } + else + */ + if (!strcasecmp(_val,"system")) + { + ret = "( { "; + + ret += " \"currentBuild\" : \"" TOSTRING(ACTIVEGSMAJOR) "." TOSTRING(ACTIVEGSMINOR) "." TOSTRING(ACTIVEGSBUILD) "\","; + MyString str; + int g_joystick_plugged = (g_joystick_native_type1 != -1) || (g_joystick_native_type2 != -1) ? 1 : 0 ; + str.Format("\"joystickPlugged\" : %d,",g_joystick_plugged); + ret += str.c_str(); + MyString engine; + getEngineString(engine); + + str.Format("\"renderingEngine\" : \"%s\",",engine.c_str()); + ret += str.c_str(); + + str.Format("\"memorySize\" : %d,",option.getIntValue(OPTION_MEMORYSIZE)); + ret += str.c_str(); + + str.Format("\"audioRate\" : %d",option.getIntValue(OPTION_AUDIORATE)); + ret += str.c_str(); + + + ret +="})"; + } + else + if (!strcasecmp(_val,"reboot")) + { + // Force la relecture du fichier XML! + config->xmlAlreadyLoaded = 0; + onBootSlotChanged(-1); // Bootslot Auto + ret = "({ \"info\" : \"Rebooted!\" })"; + } + else + if (!strcasecmp(_val,"status")) + { + MyString str; + ret = "( {"; + str.Format("\"vbl\" : %d,",g_sim65816.g_vbl_count); + ret += str; + str.Format("\"speed\" : { estimated:\"%s\", target:\"",estimatedSpeed); + if (!g_sim65816.g_speed_fast) + str +="1"; + else + str += option.getDescription(OPTION_SPEED,g_sim65816.get_limit_speed()); + str +="\"},"; + ret += str; + ret += " \"lights\" : {"; + for(int i=0;i<4;i++) + { + str.Format(" \"slot%d%d\" : { \"on\" : %d, \"track\" : %d }",(i/2)+5,(i&1)+1,lights[i],tracks[i]); + ret += str; + if (i!=3) + ret+=","; + + } + ret += "}"; + ret += "} )"; + } + else + if (!strcasecmp(_val,"runtime")) + { + MyString str; + ret = "( {"; + str.Format("\"pause\" : %d,",r_sim65816.get_state()==IN_PAUSE); + ret += str; + str.Format("\"swap\" : %d,",getSmartSwap()); + ret += str; + str.Format("\"rewindAvailable\" : %d,",r_sim65816.get_rewind_enable()); + ret += str.c_str(); + + str.Format("\"savedState\" : %d,", g_savestate.getSavedStateVBL()); + ret += str.c_str(); + + ret += "\"slots\" : ["; + int nb = 0; + for(int slot=5;slot<=7;slot++) + { + int maxdrive=2; + if (slot==7) maxdrive=MAXSLOT7DRIVES; + for(int disk=1;disk<=maxdrive;disk++) + { + for(int active=0;activegetLocalIMGInfo(sw/10,sw%10); + ret = info.shortname; + ret.Format("({ \"info\" : \"disk %s inserted\", \"slot\" : %d, name : \"%s\" })",info.shortname.c_str(),sw,info.shortname.c_str()); + } + } + else + { + ret="({ \"error\" : \"unsupported command:"; + ret += _val ; + ret += "\"})"; + } +} + + +// initialize le son depuis le thread principal +void CEmulator::launchEmulator() +{ + x_async_sound_init(); + //CDownload::initPersistentPath(); + x_LaunchThread(); + // attend la fin de l'émulateur +// x_WaitForEndThread(); + +} + + + +void CEmulator::terminateEmulator() +{ + outputInfo("terminateCEmulator (%X)\n",this); + + if (bInThread) + { + + // envoie le signal de quit + r_sim65816.quit_emulator(); + + // attend la fin de l'émulateur + x_WaitForEndThread(); + + x_async_snd_shutdown(); + + } + + // l'émulateur a quitté correctement : il est pret à redémarrer + r_sim65816.reset_quit(); + // OG 080111 Force un redraw pour rafraichir le contenu du browser si besoin + refresh_video(1); + + +} + +CEmulator::~CEmulator() +{ + outputInfo("~CEmulator (%X)",this); + + // termine le singleton + theEmulator=NULL; + + if (parent) + *parent = NULL; + + +} + +void CEmulator::onXMLConfigChanged(const char *_xmlconfig,simplexml* _pXML) +{ + if (!acceptEvents()) + { + outputInfo("### onXMLConfigChanged Ignored"); + return; + } + + MyString newxmlconfig = _xmlconfig; // le copie si la valeur était déjà stockée dans xmlconfig +// config->resetConfig(); // remets les valeur par défault + config->xmlconfig = newxmlconfig.c_str(); + config->pXML = _pXML; + config->xmlAlreadyLoaded=0; // pour forcer la relecture au prochain chargement + relaunchEmulator(); + +} + +extern void addNotificationWindow(); + +void addConsoleWindow(Kimage* _dst) +{ +#if defined(_DEBUG) && defined(WIN32) && 0 + extern void addConsole(const char*); + +// extern char estimatedSpeed[256]; + extern void addConsole(const char* _str); +// extern int getFrameRate(int _id); + extern void drawConsole(Kimage* _dst); + char str[256]; + int fr0 = getFrameRate(0); + int fr1 = getFrameRate(1); + int fr2 = getFrameRate(2); + int fr3 = getFrameRate(3); + sprintf(str,"fps:%02d.%0d 60hz:%02d.%0d req:%02d.%0d c054:%02d.%0d ",fr0/10,fr0%10,fr3/10,fr3%10,fr1/10,fr1%10,fr2/10,fr2%10); +// sprintf(str,"p1:%d p2:%d fps:%d ",getFrameRate(3),getFrameRate(4),getFrameRate(1)); + addConsole(str); + drawConsole(_dst); +#endif +// addNotificationWindow(); +} + + + + +#ifdef TEST_RASTER +int x_test_raster() +{ + x_video_init(); + r_sim65816.set_state(RUNNING); + + while(!r_sim65816.should_emulator_terminate()) + { + + static int pos=0; + + // faire scroller + + // int bitmapBytesPerRow = (pixelsWide * 4);// 1 + int bitmapBytesPerRow = g_kimage_offscreen.width_act * (g_kimage_offscreen.mdepth >> 3); + + int destx=0; + int desty = 0; + int col = pos; + + x_wait_for_last_refresh(1.0/60.0); + + CHANGE_BORDER(0,0x00FF00); + + byte* ptrdest = (byte*)g_kimage_offscreen.data_ptr ; + for(int i=0;i> 3); + + int destx= g_kimage_offscreen.width_act - NOTIFICATION_WIDTH - NOTIFICATION_MARGIN ; + int col = 0xFFFFFF; + + for(int i=0;i=g_kimage_offscreen.height) continue; + + byte* ptrdest = (byte*)g_kimage_offscreen.data_ptr + y*bitmapBytesPerRow; + + for(int j=0;jg_kimage_offscreen.width_act ) ) continue; + ((word32*)ptrdest)[x] = col; + } + } + if (g_notification_motion) + { + g_notification_y += g_notification_speed; + g_notification_speed += 0.5f; + if (g_notification_y>= g_kimage_offscreen.height-(NOTIFICATION_HEIGHT+NOTIFICATION_MARGIN)) + { + g_notification_y = (float)(g_kimage_offscreen.height-(NOTIFICATION_HEIGHT+NOTIFICATION_MARGIN)); + if (g_notification_speed<2.0f) + { + g_notification_motion = 0; + g_notification_show = 3*60; + } + else + g_notification_speed *= -0.5f; + + } + } + else + { + g_notification_show--; + } + +// g_notification_y++; + if (g_notification_y>g_kimage_offscreen.height+NOTIFICATION_HEIGHT) + g_notification_y = -NOTIFICATION_HEIGHT; + + g_video.g_needfullrefreshfornextframe = 1; + +} + + + + diff --git a/Common/activeconfig.cpp b/Common/activeconfig.cpp new file mode 100644 index 0000000..a62f803 --- /dev/null +++ b/Common/activeconfig.cpp @@ -0,0 +1,84 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "Cemulatorctrl.h" +#include "../kegs/Src/iwm.h" +#include "../kegs/Src/config.h" +#include "../kegs/Src/savestate.h" + +void x_notify_disk_insertion(int _size,int _start, int _isprodos,int slot, int drive) +{ + + readImageInfo(slot,drive+1,_size,_start,_isprodos); +} + + +void checkImages() +{ + + if (mountImages()) + { + printf("Mounting images...\n"); + + g_iwm.g_highest_smartport_unit = -1; + + insert_disk(5,0,getLocalIMG(5,1),0,0,0,0); + insert_disk(5,1,getLocalIMG(5,2),0,0,0,0); + insert_disk(6,0,getLocalIMG(6,1),0,0,0,0); + insert_disk(6,1,getLocalIMG(6,2),0,0,0,0); + + for(int disk=1;diskshowStatus(st.c_str()); +} + +/* +void showError(const char* format,...) +{ + + va_list argptr; + va_start( argptr, format ); + MyString st; + st.FormatV(format,argptr); + va_end(argptr); + + outputInfoInternal(st.c_str()); +} +*/ + + +void showProgress(const char* file,int percent) +{ + MyString progress; + if (percent>=0) + progress.Format("Downloading: %s (%3d%%)",getfile(file),percent); + else + progress.Format("Downloading: %s (%4dK)",getfile(file),(int)(-percent/1024)); + +// outputInfoInternal(progress.c_str()); + + CEmulator* emu = CEmulator::theEmulator; + if (emu) + emu->showStatus(progress.c_str()); + + +#ifdef DRIVER_IOS + extern void x_downloadinginprogress(int); + x_downloadinginprogress(percent); +#endif +} + +void x_notify_motor_status(int _motorOn,int _slot,int _drive, int _curtrack) +{ + + CEmulator* emu = CEmulator::theEmulator; + if (emu) + { + emu->setLight(_motorOn,_slot,_drive,_curtrack); + if (!option.getIntValue(OPTION_DONOTSHOWDISKSTATUS)) + { + emu->loadingInProgress(_motorOn,_slot,_drive); + } + } +} + +void x_clk_setup_bram_version() +{ + extern void initializeBram(unsigned char*); +// extern byte g_bram[2][256]; + g_clock.g_bram_ptr = (&g_clock.g_bram[0][0]); // ROM 01 only + initializeBram(g_clock.g_bram_ptr); +} + + + + + +void x_config_load_additional_roms() +{ +} + +void x_notify_disk_ejection(int _slot,int _drive) +{ + CEmulator::theEmulator->ejectDisk(_slot,_drive); +} + + +void apply_patch(int _slot,int _disk,byte * _buf, int _pos, int _len) +{ + CEmulator* emu = CEmulator::theEmulator; + CSlotInfo& ref = emu->getLocalIMGInfo(_slot,_disk); + int t = ref.patch_addr - _pos; + if (ref.patch_addr !=0 && t>=0 && t<_len) + { + const char*s = ref.patch_value; + while(*s && t<_len) + { + byte a = *(s++)-'0'; + if (a>9) a-='A'-'0'-10; + byte b = *(s++)-'0'; + if (b>9) b-='A'-'0'-10; + _buf[t++]=a*16+b; + } + } +} + + +void apply_breakpoints() +{ + CEmulator* emu = CEmulator::theEmulator; + if (!emu) return ; + CEmulatorConfig* config = emu->config; + for(int i=0;inb_bps;i++) + set_bp(config->BPs[i].addr,config->BPs[i].mode,config->BPs[i].value,config->BPs[i].check); +} diff --git a/Common/ki.h b/Common/ki.h new file mode 100644 index 0000000..355c740 --- /dev/null +++ b/Common/ki.h @@ -0,0 +1,84 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#ifndef KEGS_KI_H +#define KEGS_KI_H + +#include +# if defined( _WIN32) && !defined(UNDER_CE) + #include +#endif + +#include "../kegs/src/defc.h" +#include "../kegs/src/iwm.h" +extern void showStatus(const char* format,...); +extern void showError(const char* format,...); +extern void showProgress(const char* file,int percent); + + +// Emulator Interface + +// Struct + +#define MAXSLOT7DRIVES MAX_C7_DISKS + +//#define HALT_WANTTOQUIT 0x20 +#define HALT_WANTTOBRK 0x40 + + + + + +// Globals + +//extern void (*ki_loadingptr)(int motorOn,int slot,int drive); +//extern int g_limit_speed; +extern int g_fast_disk_emul; +//extern unsigned char *g_bram_ptr; +//extern int g_joystick_type; +extern int toggleJoystick(int); +//OGMAC +#ifdef _WIN32 +#include +void win_event_key(HWND hwnd, UINT raw_vk, BOOL down, int repeat, UINT flags); +extern void kegsinit(HWND); +extern LRESULT CALLBACK win_event_handler(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam); +//extern void add_event_key(HWND hwnd, UINT raw_vk, BOOL down, int repeat, UINT flags); +#endif + +/* +extern int g_pause; +extern int g_halt_on_bad_read; +extern int g_ignore_bad_acc ; +extern int g_ignore_halts ; +*/ + +// Function +extern const char* getLocalIMG(int _slot,int _drive); + +extern int kegsmain(int argc, char** argv); +extern void win_event_redraw(); + +#define get_halt_act() g_sim65816.halt_sim +extern void set_halt_act(int); +extern void clr_halt_act(void); + + +// Interface Kegs -> Control + +extern void updateBramParameters(unsigned char* bram); +extern void readImageInfo(int _slot,int _drive, int _imagelen, int _imagestart, int _isprodos); +extern int mountImages(void); +extern void disableConsole(void); +extern void fatalExit(int ret); +extern void setInitialized(int _value); +extern void setAcceptEvents(int _value); + + + +#endif // KEGS_KI_H + +// diff --git a/Common/libpng.cpp b/Common/libpng.cpp new file mode 100644 index 0000000..7ba7f36 --- /dev/null +++ b/Common/libpng.cpp @@ -0,0 +1,191 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "../Libraries/libpng/png.h" +#include "cemulatorctrl.h" +#include "../kegs/src/video.h" +#define abort_(X) { printf(X); return 0;} + +extern word32 g_a2palette_8to1624[256]; + + +#ifdef DRIVER_OSX +extern int macUsingCoreGraphics; +#endif + +int savePNG(MyString& _path) +{ + + int _borderWidth = option.getIntValue(OPTION_PNGBORDER); + + _path = "({ \"error\" : \"Cannot create screenshot\" })"; + + CEmulator* pEmu = CEmulator::theEmulator ; + int bootslot = pEmu->config->bootslot; + + MyString filename; + CSlotInfo& slot = pEmu->getLocalIMGInfo(bootslot,1); + + printf(slot.shortname.c_str()); + MyString filenoext; + if (!slot.shortname.IsEmpty()) + filenoext = getfilenoext(slot.shortname.c_str()); + else + filenoext = "nodisk"; + + int i=0; +// CDownload dl; + while(i<100) + { + filename.Format("%s%sscreenshot_%s_%d.png", + CDownload::getPersistentPath(), + ACTIVEGS_DIRECTORY_SEPARATOR, + filenoext.c_str(), + i); + + FILE* f=fopen(filename.c_str(),"rb"); + if (!f) break; + fclose(f); + i++; + } + Kimage* kimage_ptr = g_video.g_a2_line_kimage[0]; + int a2width ; + int a2height; + + if (kimage_ptr == &s_video.g_kimage_superhires) + { + a2width = 320*VIDEO_HFACTOR; + a2height=200*VIDEO_VFACTOR;; + } + else + { + kimage_ptr = &s_video.g_mainwin_kimage; + a2width = 280*VIDEO_HFACTOR; + a2height = 192*VIDEO_VFACTOR; + } + + int width = a2width + _borderWidth*2; + int height = a2height + _borderWidth*2; + + + png_byte color_type =PNG_COLOR_TYPE_RGB; + png_byte bit_depth = 8; + + png_structp png_ptr; + png_infop info_ptr; + png_bytep row_pointers[1024]; + byte *pngraw = (byte*)malloc(width*height*3); + int stride =kimage_ptr->width_act * kimage_ptr->mdepth / 8; + + int bcolor = g_a2palette_8to1624[g_video.g_border_color]; + char border[3]; +#ifdef DRIVER_OSX + if (macUsingCoreGraphics) + { + border[0]=(char)bcolor; + border[1]=(char)(bcolor >> 8); + border[2]=(char)(bcolor >> 16); + } + else +#endif + { + border[2]=(char)bcolor; + border[1]=(char)(bcolor >> 8); + border[0]=(char)(bcolor >> 16); + +} + + for(int i=0;i=(a2height+_borderWidth) + || j<_borderWidth || j>=(a2width+_borderWidth) ) + { + dst[0]=border[0]; + dst[1]=border[1]; + dst[2]=border[2]; + } + else + { + byte* src= &kimage_ptr->data_ptr[(i-_borderWidth)*stride+(j-_borderWidth)* kimage_ptr->mdepth / 8]; + #ifdef DRIVER_OSX + if (macUsingCoreGraphics) + { + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = src[2]; + } + else + #endif + { + dst[0] = src[2]; + dst[1] = src[1]; + dst[2] = src[0]; + } + } + } + } + + /* create file */ + FILE *fp = fopen(filename.c_str(), "wb"); + if (!fp) + abort_("[write_png_file] File could not be opened for writing"); + + + /* initialize stuff */ + png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + + if (!png_ptr) + abort_("[write_png_file] png_create_write_struct failed"); + + info_ptr = png_create_info_struct(png_ptr); + if (!info_ptr) + abort_("[write_png_file] png_create_info_struct failed"); + + if (setjmp(png_jmpbuf(png_ptr))) + abort_("[write_png_file] Error during init_io"); + + png_init_io(png_ptr, fp); + + /* write header */ + if (setjmp(png_jmpbuf(png_ptr))) + abort_("[write_png_file] Error during writing header"); + + png_set_IHDR(png_ptr, info_ptr, width, height, + bit_depth, color_type, PNG_INTERLACE_NONE, + PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); + + png_write_info(png_ptr, info_ptr); + + /* write bytes */ + if (setjmp(png_jmpbuf(png_ptr))) + abort_("[write_png_file] Error during writing bytes"); + + png_write_image(png_ptr, row_pointers); + + /* end write */ + if (setjmp(png_jmpbuf(png_ptr))) + abort_("[write_png_file] Error during end of write"); + + png_write_end(png_ptr, NULL); + + png_destroy_info_struct(png_ptr,&info_ptr); + + png_destroy_write_struct(&png_ptr,&info_ptr); + png_free(png_ptr,NULL); + free(pngraw); + fclose(fp); + + outputInfo("screenshot %s saved\n",filename.c_str()); + _path.Format("({ \"info\" : \"Screenshot saved : %s\", \"filename\" : \"%s\" })",getfile(filename.c_str()),filename.c_str()); + + return 1; +} diff --git a/Common/rom.cpp b/Common/rom.cpp new file mode 100644 index 0000000..1e503a7 --- /dev/null +++ b/Common/rom.cpp @@ -0,0 +1,8280 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "../Common/CEMulatorCtrl.h" +#include "../Kegs/Src/sim65816.h" + +void default_config_load_roms() +{ + +extern byte *g_rom_fc_ff_ptr; +extern unsigned char gsrom01[]; +extern unsigned char apple2e_rom[]; +extern unsigned char apple2e_disk[]; + + g_sim65816.g_mem_size_base = 256*1024; + memset(&g_rom_fc_ff_ptr[0], 0, 2*65536); + + if ( g_sim65816.g_use_apple2e_rom == 0) + { + memcpy(&g_rom_fc_ff_ptr[2*65536], gsrom01,128*1024); + +#ifdef VIRTUALAPPLE + +#define TOGS(MEM,STR) \ +{ \ +char* d = (char*)MEM; \ +const char* s = STR; \ +char c; \ +while((c=*s++)!=0) *d++=(c|0x80); \ +*d=0; \ +} + + + // g_rom_fc_ff_ptr[0x03bb97]=0x60; // Ret == fully disable display + g_rom_fc_ff_ptr[0x03bb11]=0x0D; // Number of space + TOGS(&g_rom_fc_ff_ptr[0x03bb13],"Please Wait..."); + g_rom_fc_ff_ptr[0x03bb8e]=0x0B; // Center Line + g_rom_fc_ff_ptr[0x03bbb8]=0x60; // Abort display +#endif + + + g_sim65816.g_rom_version = 1; + } + else + { + // main + memcpy(&g_rom_fc_ff_ptr[4*65536-16*1024], &apple2e_rom[16*1024],16*1024); + + + // enleve le (c) + + /* +ff/fb60: 20 58 fc JSR $fc58 +ff/fb63: a0 09 LDY #$09 +ff/fb65: b9 09 ff LDA $ff09,Y +ff/fb68: 99 0e 04 STA $040e,Y +ff/fb6b: 88 DEY +ff/fb6c: d0 f7 BNE $fb65 +ff/fb6e: 60 RTS +*/ + +#ifdef VIRTUALAPPLE + g_rom_fc_ff_ptr[0x03FB63]=0x60; +#endif + // aux + memcpy(&g_rom_fc_ff_ptr[3*65536-16*1024], &apple2e_rom[0],16*1024); + + // disk + memcpy(&g_rom_fc_ff_ptr[3*65536+0xC600], &apple2e_disk[0],1*256); + g_sim65816.g_rom_version = -2; + + if ( g_sim65816.g_6502_emulation == 0) + { + printf("*** USING APPLE IIE ROM - FORCING 6502 EMULATION\n"); + g_sim65816.g_6502_emulation =1; + } + else + printf("*** USING APPLE IIE ROM\n"); + } + +} + +unsigned char gsrom01[]={ +0xC2, 0x30, 0xA2, 0x0E, 0x00, 0xBF, 0x51, 0x00, 0xFE, 0x9F, 0x00, 0x00, 0xE1, 0xCA, 0xCA, 0x10, +0xF4, 0xA9, 0x2F, 0x01, 0x8F, 0xC0, 0x03, 0xE1, 0xA9, 0xFE, 0x00, 0x8F, 0xC2, 0x03, 0xE1, 0x8F, +0xCA, 0x03, 0xE1, 0xA9, 0xEF, 0x01, 0x8F, 0xC4, 0x03, 0xE1, 0xA9, 0xFE, 0x00, 0x8F, 0xC6, 0x03, +0xE1, 0xA2, 0x06, 0x00, 0xBF, 0x61, 0x00, 0xFE, 0x9F, 0x80, 0x01, 0xE1, 0xCA, 0xCA, 0x10, 0xF4, +0xA2, 0x01, 0x01, 0x22, 0x00, 0x00, 0xE1, 0xB0, 0x05, 0x22, 0x7C, 0x00, 0xE1, 0x18, 0xE2, 0x30, +0x6B, 0x5C, 0xAF, 0x00, 0xFE, 0x5C, 0xA3, 0x00, 0xFE, 0x5C, 0x75, 0x00, 0xFE, 0x5C, 0x69, 0x00, +0xFE, 0x22, 0x68, 0x00, 0xE1, 0x5C, 0x0B, 0xBF, 0xFF, 0xC2, 0x30, 0x3B, 0x38, 0xE9, 0x07, 0x00, +0x1B, 0x0B, 0x5B, 0x80, 0x14, 0xC2, 0x30, 0x3B, 0x38, 0xE9, 0x0A, 0x00, 0x1B, 0x0B, 0x5B, 0xA9, +0x2D, 0x01, 0x85, 0x08, 0xA9, 0x01, 0xFE, 0x85, 0x09, 0xAF, 0xC4, 0x03, 0xE1, 0x85, 0x05, 0xAF, +0xC5, 0x03, 0xE1, 0x85, 0x06, 0xAF, 0xCC, 0x03, 0xE1, 0x85, 0x01, 0xAF, 0xCE, 0x03, 0xE1, 0x85, +0x03, 0x80, 0x38, 0xC2, 0x30, 0x3B, 0x38, 0xE9, 0x07, 0x00, 0x1B, 0x0B, 0x5B, 0x80, 0x14, 0xC2, +0x30, 0x3B, 0x38, 0xE9, 0x0A, 0x00, 0x1B, 0x0B, 0x5B, 0xA9, 0x2D, 0x01, 0x85, 0x08, 0xA9, 0x01, +0xFE, 0x85, 0x09, 0xAF, 0xC0, 0x03, 0xE1, 0x85, 0x05, 0xAF, 0xC1, 0x03, 0xE1, 0x85, 0x06, 0xAF, +0xC8, 0x03, 0xE1, 0x85, 0x01, 0xAF, 0xCA, 0x03, 0xE1, 0x85, 0x03, 0x8A, 0x48, 0x29, 0xFF, 0x00, +0xF0, 0x3A, 0xC7, 0x05, 0xB0, 0x36, 0x0A, 0x0A, 0xA8, 0xB7, 0x01, 0xAA, 0xC8, 0xC8, 0xB7, 0x01, +0x85, 0x03, 0x86, 0x01, 0x88, 0xB7, 0x05, 0xAA, 0x88, 0xB7, 0x05, 0x85, 0x05, 0x86, 0x06, 0xA3, +0x02, 0x29, 0xFF, 0x00, 0xF0, 0x1B, 0xC7, 0x05, 0xB0, 0x17, 0x0A, 0x0A, 0xA8, 0xB7, 0x05, 0xAA, +0xC8, 0xB7, 0x05, 0x85, 0x06, 0x86, 0x05, 0xFA, 0x2B, 0x68, 0x7A, 0x6B, 0xA2, 0x01, 0x00, 0x80, +0x03, 0xA2, 0x02, 0x00, 0x68, 0x2B, 0x3B, 0x18, 0x69, 0x0A, 0x00, 0x1B, 0x8A, 0x38, 0x6B, 0x21, +0x00, 0x00, 0x00, 0xB3, 0x01, 0xFE, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x0A, 0x90, 0xFE, 0x00, 0xFD, +0x06, 0xFE, 0x00, 0x6D, 0xAE, 0xFE, 0x00, 0x03, 0xBB, 0xFE, 0x00, 0x45, 0xBF, 0xFF, 0x00, 0x00, +0x3E, 0xFF, 0x00, 0x00, 0x80, 0xFF, 0x00, 0xBB, 0xD2, 0xFE, 0x00, 0x27, 0xC7, 0xFE, 0x00, 0x47, +0xA7, 0xFE, 0x00, 0xC0, 0x00, 0xFF, 0x00, 0xEB, 0x01, 0xFE, 0x00, 0xEB, 0x01, 0xFE, 0x00, 0xEB, +0x01, 0xFE, 0x00, 0xEB, 0x01, 0xFE, 0x00, 0xEB, 0x01, 0xFE, 0x00, 0xEB, 0x01, 0xFE, 0x00, 0xEB, +0x01, 0xFE, 0x00, 0xEB, 0x01, 0xFE, 0x00, 0xEB, 0x01, 0xFE, 0x00, 0xEB, 0x01, 0xFE, 0x00, 0xEB, +0x01, 0xFE, 0x00, 0xEB, 0x01, 0xFE, 0x00, 0xEB, 0x01, 0xFE, 0x00, 0xEB, 0x01, 0xFE, 0x00, 0xEB, +0x01, 0xFE, 0x00, 0xEB, 0x01, 0xFE, 0x00, 0xEB, 0x01, 0xFE, 0x00, 0xEB, 0x01, 0xFE, 0x00, 0xEB, +0x01, 0xFE, 0x00, 0x0E, 0x00, 0x00, 0x00, 0xF2, 0x01, 0xFE, 0x00, 0xB5, 0x02, 0xFE, 0x00, 0xB5, +0x02, 0xFE, 0x00, 0x1C, 0x03, 0xFE, 0x00, 0xBB, 0x02, 0xFE, 0x00, 0x14, 0x03, 0xFE, 0x00, 0xE2, +0xFF, 0xFE, 0x00, 0xE2, 0xFF, 0xFE, 0x00, 0xAF, 0x03, 0xFE, 0x00, 0xE4, 0x03, 0xFE, 0x00, 0xE7, +0x05, 0xFE, 0x00, 0x4C, 0x06, 0xFE, 0x00, 0x81, 0x06, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x3B, 0x38, 0xE9, 0x08, 0x00, 0x1B, 0x0B, 0x5B, 0xA2, 0x02, 0x01, 0x22, 0x00, +0x00, 0xE1, 0x90, 0x03, 0x4C, 0x73, 0x02, 0x22, 0x80, 0x16, 0xE1, 0xAF, 0xC0, 0x03, 0xE1, 0x85, +0x01, 0xAF, 0xC2, 0x03, 0xE1, 0x85, 0x03, 0xA7, 0x01, 0x0A, 0x0A, 0x20, 0xE5, 0x06, 0x90, 0x03, +0x82, 0x50, 0x00, 0x86, 0x05, 0x84, 0x07, 0xA7, 0x05, 0xAA, 0xA0, 0x02, 0x00, 0xB7, 0x05, 0x85, +0x07, 0x8F, 0xCA, 0x03, 0xE1, 0x86, 0x05, 0x8A, 0x8F, 0xC8, 0x03, 0xE1, 0xA7, 0x01, 0x0A, 0x0A, +0xA8, 0x88, 0x88, 0xA9, 0x00, 0x00, 0x97, 0x05, 0x88, 0x88, 0x10, 0xFA, 0x20, 0x86, 0x02, 0xB0, +0x22, 0xF4, 0x03, 0x01, 0xA3, 0x01, 0xAA, 0x22, 0x00, 0x00, 0xE1, 0xB0, 0x07, 0xA3, 0x01, 0x1A, +0x83, 0x01, 0x80, 0xF0, 0xC9, 0x02, 0x00, 0xF0, 0xF4, 0xA2, 0x00, 0x00, 0xC9, 0x01, 0x00, 0xF0, +0x01, 0xAA, 0x68, 0x2B, 0x3B, 0x18, 0x69, 0x08, 0x00, 0x1B, 0x8A, 0xC9, 0x01, 0x00, 0xB0, 0x05, +0x22, 0x84, 0x16, 0xE1, 0x18, 0x6B, 0xA9, 0x04, 0x00, 0x20, 0xE5, 0x06, 0xB0, 0x27, 0x5A, 0xDA, +0x0B, 0x3B, 0x5B, 0xA7, 0x03, 0xAA, 0xA0, 0x02, 0x00, 0xB7, 0x03, 0x85, 0x05, 0x8F, 0xCE, 0x03, +0xE1, 0x86, 0x03, 0x8A, 0x8F, 0xCC, 0x03, 0xE1, 0xA9, 0x00, 0x00, 0x87, 0x03, 0xA0, 0x02, 0x00, +0x97, 0x03, 0x2B, 0x68, 0x68, 0x60, 0x20, 0x22, 0x03, 0x4C, 0x8B, 0xFF, 0xA2, 0x02, 0x05, 0x22, +0x00, 0x00, 0xE1, 0x20, 0x22, 0x03, 0xF4, 0x00, 0x00, 0xF4, 0x03, 0x05, 0xA3, 0x01, 0xAA, 0x22, +0x00, 0x00, 0xE1, 0xB0, 0x07, 0xA3, 0x01, 0x1A, 0x83, 0x01, 0x80, 0xF0, 0xC9, 0x01, 0x00, 0xF0, +0x09, 0xC9, 0x02, 0x00, 0xF0, 0xEF, 0x83, 0x03, 0x80, 0xEB, 0x68, 0x68, 0xD0, 0x03, 0x4C, 0x8B, +0xFF, 0x48, 0xF4, 0xFE, 0x00, 0xF4, 0x06, 0x03, 0xA2, 0x01, 0x01, 0x22, 0x00, 0x00, 0xE1, 0xA2, +0x03, 0x15, 0x22, 0x00, 0x00, 0xE1, 0x0E, 0x43, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x52, 0x65, +0x73, 0x65, 0x74, 0x20, 0x24, 0xA9, 0xFF, 0xFF, 0x83, 0x07, 0x4C, 0x8B, 0xFF, 0xA9, 0x00, 0x02, +0x80, 0xF6, 0xAF, 0xC4, 0x03, 0xE1, 0xC9, 0xEF, 0x01, 0xD0, 0x0A, 0xAF, 0xC6, 0x03, 0xE1, 0xC9, +0xFE, 0x00, 0xD0, 0x01, 0x60, 0x48, 0x48, 0xAF, 0xC6, 0x03, 0xE1, 0x29, 0xFF, 0x00, 0x48, 0xAF, +0xC4, 0x03, 0xE1, 0x48, 0xA2, 0x02, 0x1A, 0x22, 0x00, 0x00, 0xE1, 0xA2, 0x02, 0x10, 0x22, 0x00, +0x00, 0xE1, 0xA9, 0xEF, 0x01, 0x8F, 0xC4, 0x03, 0xE1, 0xA9, 0xFE, 0x00, 0x8F, 0xC6, 0x03, 0xE1, +0x48, 0x48, 0xAF, 0xCE, 0x03, 0xE1, 0x29, 0xFF, 0x00, 0x48, 0xAF, 0xCC, 0x03, 0xE1, 0x48, 0xA2, +0x02, 0x1A, 0x22, 0x00, 0x00, 0xE1, 0x0B, 0x3B, 0x5B, 0xA0, 0x04, 0x00, 0xB7, 0x03, 0x29, 0xFF, +0x7F, 0x97, 0x03, 0xF4, 0x00, 0x00, 0xF4, 0x04, 0x00, 0xD4, 0x05, 0xD4, 0x03, 0xA2, 0x02, 0x19, +0x22, 0x00, 0x00, 0xE1, 0xA0, 0x04, 0x00, 0xB7, 0x03, 0x09, 0x00, 0x80, 0x97, 0x03, 0xA7, 0x03, +0x8F, 0xCC, 0x03, 0xE1, 0x88, 0x88, 0xB7, 0x03, 0x8F, 0xCE, 0x03, 0xE1, 0x2B, 0x68, 0x68, 0x60, +0x0B, 0x3B, 0x5B, 0xA6, 0x09, 0x24, 0x0B, 0x30, 0x0C, 0xAF, 0xC0, 0x03, 0xE1, 0x85, 0x09, 0xAF, +0xC1, 0x03, 0xE1, 0x80, 0x0A, 0xAF, 0xC4, 0x03, 0xE1, 0x85, 0x09, 0xAF, 0xC5, 0x03, 0xE1, 0x85, +0x0A, 0x8A, 0x29, 0xFF, 0x00, 0x0A, 0x0A, 0xA8, 0xB7, 0x09, 0x85, 0x0D, 0xC8, 0xC8, 0xB7, 0x09, +0x85, 0x0F, 0x4C, 0xC3, 0xFF, 0x3B, 0x38, 0xE9, 0x14, 0x00, 0x1B, 0x0B, 0x5B, 0x24, 0x21, 0x30, +0x18, 0xAF, 0xC0, 0x03, 0xE1, 0x85, 0x01, 0xAF, 0xC2, 0x03, 0xE1, 0x85, 0x03, 0xAF, 0xC8, 0x03, +0xE1, 0x85, 0x0D, 0xAF, 0xCA, 0x03, 0xE1, 0x80, 0x16, 0xAF, 0xC4, 0x03, 0xE1, 0x85, 0x01, 0xAF, +0xC6, 0x03, 0xE1, 0x85, 0x03, 0xAF, 0xCC, 0x03, 0xE1, 0x85, 0x0D, 0xAF, 0xCE, 0x03, 0xE1, 0x85, +0x0F, 0xA5, 0x03, 0x29, 0xFF, 0x00, 0xC9, 0xFE, 0x00, 0xF0, 0x0A, 0xA5, 0x01, 0x85, 0x09, 0xA5, +0x03, 0x85, 0x0B, 0x80, 0x30, 0xA7, 0x01, 0x0A, 0x0A, 0x20, 0xE5, 0x06, 0x86, 0x11, 0x84, 0x13, +0xA7, 0x11, 0x85, 0x09, 0xA0, 0x02, 0x00, 0xB7, 0x11, 0x85, 0x0B, 0xD4, 0x03, 0xD4, 0x01, 0xD4, +0x0B, 0xD4, 0x09, 0xA7, 0x01, 0x0A, 0x0A, 0xF4, 0x00, 0x00, 0x48, 0xA2, 0x02, 0x2B, 0x22, 0x00, +0x00, 0xE1, 0x20, 0xE0, 0x04, 0xA5, 0x1F, 0x29, 0xFF, 0x00, 0xC7, 0x01, 0x90, 0x08, 0x20, 0xFF, +0x04, 0xA5, 0x1F, 0x29, 0xFF, 0x00, 0x0A, 0x0A, 0xA8, 0xB7, 0x01, 0x85, 0x05, 0xA5, 0x1B, 0x97, +0x09, 0xC8, 0xC8, 0xB7, 0x01, 0x85, 0x07, 0xA5, 0x1D, 0x97, 0x09, 0xA7, 0x1B, 0xF0, 0x1F, 0x0A, +0x0A, 0xA8, 0x88, 0x88, 0xB7, 0x1B, 0xD0, 0x10, 0x88, 0x88, 0xB7, 0x1B, 0xD0, 0x0C, 0xB7, 0x05, +0x97, 0x1B, 0xC8, 0xC8, 0xB7, 0x05, 0x97, 0x1B, 0x88, 0x88, 0x88, 0x88, 0x10, 0xE6, 0xA5, 0x1F, +0x29, 0xFF, 0x00, 0x09, 0x00, 0x01, 0xAA, 0x24, 0x21, 0x10, 0x06, 0x22, 0x08, 0x00, 0xE1, 0x80, +0x04, 0x22, 0x00, 0x00, 0xE1, 0xA2, 0x00, 0x00, 0xA5, 0x19, 0x85, 0x21, 0xA5, 0x17, 0x85, 0x1F, +0xA5, 0x15, 0x85, 0x1D, 0x2B, 0x3B, 0x18, 0x69, 0x1C, 0x00, 0x1B, 0x8A, 0xC9, 0x01, 0x00, 0x6B, +0x24, 0x21, 0x30, 0x0E, 0xA5, 0x09, 0x8F, 0xC0, 0x03, 0xE1, 0xA5, 0x0B, 0x8F, 0xC2, 0x03, 0xE1, +0x80, 0x0C, 0xA5, 0x09, 0x8F, 0xC4, 0x03, 0xE1, 0xA5, 0x0B, 0x8F, 0xC6, 0x03, 0xE1, 0x60, 0x48, +0x48, 0xD4, 0x0B, 0xD4, 0x09, 0xA2, 0x02, 0x1A, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x85, 0x11, 0x68, +0x85, 0x13, 0xD4, 0x13, 0xD4, 0x11, 0xA2, 0x02, 0x22, 0x22, 0x00, 0x00, 0xE1, 0xA5, 0x1F, 0x29, +0xFF, 0x00, 0x1A, 0x0A, 0x0A, 0xF4, 0x00, 0x00, 0x48, 0xD4, 0x13, 0xD4, 0x11, 0xA2, 0x02, 0x19, +0x22, 0x00, 0x00, 0xE1, 0xD4, 0x13, 0xD4, 0x11, 0xA2, 0x02, 0x20, 0x22, 0x00, 0x00, 0xE1, 0xA7, +0x11, 0x85, 0x09, 0xA0, 0x02, 0x00, 0xB7, 0x11, 0x85, 0x0B, 0x20, 0xE0, 0x04, 0x48, 0x48, 0xD4, +0x0F, 0xD4, 0x0D, 0xA2, 0x02, 0x1A, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x85, 0x11, 0x68, 0x85, 0x13, +0xD4, 0x13, 0xD4, 0x11, 0xA2, 0x02, 0x22, 0x22, 0x00, 0x00, 0xE1, 0xA5, 0x1F, 0x29, 0xFF, 0x00, +0x1A, 0x0A, 0x0A, 0xF4, 0x00, 0x00, 0x48, 0xD4, 0x13, 0xD4, 0x11, 0xA2, 0x02, 0x19, 0x22, 0x00, +0x00, 0xE1, 0xD4, 0x13, 0xD4, 0x11, 0xA2, 0x02, 0x20, 0x22, 0x00, 0x00, 0xE1, 0xA7, 0x11, 0x85, +0x0D, 0xA0, 0x02, 0x00, 0xB7, 0x11, 0x85, 0x0F, 0x24, 0x21, 0x30, 0x0E, 0xA5, 0x0D, 0x8F, 0xC8, +0x03, 0xE1, 0xA5, 0x0F, 0x8F, 0xCA, 0x03, 0xE1, 0x80, 0x0C, 0xA5, 0x0D, 0x8F, 0xCC, 0x03, 0xE1, +0xA5, 0x0F, 0x8F, 0xCE, 0x03, 0xE1, 0xA7, 0x09, 0x29, 0xFF, 0x00, 0x0A, 0x0A, 0xA8, 0xA9, 0xEB, +0x01, 0x97, 0x09, 0xA9, 0x00, 0x00, 0x97, 0x0D, 0xC8, 0xC8, 0xA9, 0xFE, 0x00, 0x97, 0x09, 0xA9, +0x00, 0x00, 0x97, 0x0D, 0xC8, 0xC8, 0xA7, 0x09, 0x1A, 0x87, 0x09, 0xA5, 0x1F, 0x29, 0xFF, 0x00, +0x1A, 0xC7, 0x09, 0xF0, 0x02, 0xB0, 0xD7, 0x60, 0x0B, 0x48, 0x48, 0x48, 0x48, 0x3B, 0x5B, 0x24, +0x13, 0x30, 0x0C, 0xAF, 0xC0, 0x03, 0xE1, 0x85, 0x01, 0xAF, 0xC1, 0x03, 0xE1, 0x80, 0x0A, 0xAF, +0xC4, 0x03, 0xE1, 0x85, 0x01, 0xAF, 0xC5, 0x03, 0xE1, 0x85, 0x02, 0xA5, 0x11, 0x29, 0xFF, 0x00, +0xF0, 0x04, 0xC7, 0x01, 0x90, 0x05, 0xA2, 0x11, 0x00, 0x80, 0x2B, 0x0A, 0x0A, 0xA8, 0xB7, 0x01, +0x85, 0x05, 0xC8, 0xB7, 0x01, 0x85, 0x06, 0xA5, 0x12, 0x29, 0xFF, 0x00, 0xF0, 0x04, 0xC7, 0x05, +0x90, 0x05, 0xA2, 0x12, 0x00, 0x80, 0x0F, 0x0A, 0x0A, 0xA8, 0xB7, 0x05, 0x85, 0x15, 0xC8, 0xB7, +0x05, 0x85, 0x16, 0xA2, 0x00, 0x00, 0x68, 0x68, 0x68, 0x68, 0x4C, 0xC6, 0xFF, 0x0B, 0x3B, 0x5B, +0xA6, 0x09, 0x24, 0x0B, 0x30, 0x0C, 0xAF, 0xC8, 0x03, 0xE1, 0x85, 0x09, 0xAF, 0xCA, 0x03, 0xE1, +0x80, 0x0A, 0xAF, 0xCC, 0x03, 0xE1, 0x85, 0x09, 0xAF, 0xCE, 0x03, 0xE1, 0x85, 0x0B, 0x8A, 0x29, +0xFF, 0x00, 0x0A, 0x0A, 0xA8, 0xB7, 0x09, 0x85, 0x0D, 0xC8, 0xC8, 0xB7, 0x09, 0x85, 0x0F, 0x4C, +0xC3, 0xFF, 0x0B, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x3B, 0x5B, 0xA6, 0x11, 0x24, 0x13, 0x30, +0x18, 0xAF, 0xC8, 0x03, 0xE1, 0x85, 0x11, 0xAF, 0xCA, 0x03, 0xE1, 0x85, 0x13, 0xAF, 0xC0, 0x03, +0xE1, 0x85, 0x01, 0xAF, 0xC2, 0x03, 0xE1, 0x80, 0x16, 0xAF, 0xCC, 0x03, 0xE1, 0x85, 0x11, 0xAF, +0xCE, 0x03, 0xE1, 0x85, 0x13, 0xAF, 0xC4, 0x03, 0xE1, 0x85, 0x01, 0xAF, 0xC6, 0x03, 0xE1, 0x85, +0x03, 0x8A, 0x29, 0xFF, 0x00, 0xF0, 0x04, 0xC7, 0x01, 0x90, 0x08, 0xA2, 0x11, 0x00, 0x68, 0x68, +0x4C, 0xDC, 0xFF, 0x0A, 0x0A, 0xA8, 0xA5, 0x0D, 0x97, 0x11, 0xC8, 0xC8, 0xA5, 0x0F, 0x97, 0x11, +0x68, 0x68, 0x4C, 0xD9, 0xFF, 0x48, 0x48, 0xF4, 0x00, 0x00, 0x48, 0xF4, 0x00, 0x90, 0xF4, 0x08, +0x80, 0x48, 0x48, 0xA2, 0x02, 0x09, 0x22, 0x00, 0x00, 0xE1, 0xFA, 0x7A, 0x60, 0xDA, 0x00, 0x00, +0x00, 0x64, 0x0A, 0xFE, 0x00, 0x90, 0x0A, 0xFE, 0x00, 0xDF, 0x0B, 0xFE, 0x00, 0x4F, 0x0C, 0xFE, +0x00, 0x5C, 0x0C, 0xFE, 0x00, 0x66, 0x0C, 0xFE, 0x00, 0x8A, 0xFF, 0xFE, 0x00, 0x8A, 0xFF, 0xFE, +0x00, 0x04, 0x0E, 0xFE, 0x00, 0x34, 0x11, 0xFE, 0x00, 0x45, 0x11, 0xFE, 0x00, 0x56, 0x11, 0xFE, +0x00, 0x5E, 0x11, 0xFE, 0x00, 0x8E, 0x11, 0xFE, 0x00, 0xBD, 0x11, 0xFE, 0x00, 0xEC, 0x11, 0xFE, +0x00, 0x23, 0x12, 0xFE, 0x00, 0x5A, 0x12, 0xFE, 0x00, 0x7A, 0x12, 0xFE, 0x00, 0x9A, 0x12, 0xFE, +0x00, 0xAD, 0x12, 0xFE, 0x00, 0xCF, 0x12, 0xFE, 0x00, 0xD9, 0x12, 0xFE, 0x00, 0xE3, 0x12, 0xFE, +0x00, 0x28, 0x13, 0xFE, 0x00, 0xB4, 0x13, 0xFE, 0x00, 0xDE, 0x13, 0xFE, 0x00, 0xEC, 0x13, 0xFE, +0x00, 0xFD, 0x13, 0xFE, 0x00, 0x16, 0x14, 0xFE, 0x00, 0x2F, 0x14, 0xFE, 0x00, 0x50, 0x14, 0xFE, +0x00, 0x71, 0x14, 0xFE, 0x00, 0x8D, 0x14, 0xFE, 0x00, 0xB7, 0x14, 0xFE, 0x00, 0x22, 0x15, 0xFE, +0x00, 0x42, 0x15, 0xFE, 0x00, 0x62, 0x15, 0xFE, 0x00, 0xC2, 0x15, 0xFE, 0x00, 0xD0, 0x15, 0xFE, +0x00, 0xDE, 0x15, 0xFE, 0x00, 0x1D, 0x16, 0xFE, 0x00, 0xFC, 0x15, 0xFE, 0x00, 0x1B, 0x17, 0xFE, +0x00, 0x2E, 0x17, 0xFE, 0x00, 0xB2, 0x17, 0xFE, 0x00, 0x27, 0x18, 0xFE, 0x00, 0x3E, 0x16, 0xFE, +0x00, 0x4C, 0x16, 0xFE, 0x00, 0x6C, 0x16, 0xFE, 0x00, 0x7A, 0x16, 0xFE, 0x00, 0x88, 0x16, 0xFE, +0x00, 0x96, 0x16, 0xFE, 0x00, 0x4C, 0x17, 0xFE, 0x00, 0x5A, 0x16, 0xFE, 0x00, 0xA4, 0x16, 0xFE, +0x00, 0xB6, 0x16, 0xFE, 0x00, 0x67, 0x17, 0xFE, 0x00, 0x7A, 0x17, 0xFE, 0x00, 0x53, 0x24, 0xFE, +0x00, 0x70, 0x24, 0xFE, 0x00, 0xEC, 0x17, 0xFE, 0x00, 0x6B, 0x18, 0xFE, 0x00, 0xF1, 0x17, 0xFE, +0x00, 0x70, 0x18, 0xFE, 0x00, 0xF6, 0x17, 0xFE, 0x00, 0x75, 0x18, 0xFE, 0x00, 0xFB, 0x17, 0xFE, +0x00, 0x7A, 0x18, 0xFE, 0x00, 0x00, 0x18, 0xFE, 0x00, 0x7F, 0x18, 0xFE, 0x00, 0x05, 0x18, 0xFE, +0x00, 0x84, 0x18, 0xFE, 0x00, 0xD8, 0x1A, 0xFE, 0x00, 0xF5, 0x1A, 0xFE, 0x00, 0x12, 0x1B, 0xFE, +0x00, 0x3B, 0x1B, 0xFE, 0x00, 0x8D, 0x1B, 0xFE, 0x00, 0xB8, 0x1B, 0xFE, 0x00, 0xE4, 0x1B, 0xFE, +0x00, 0x02, 0x1C, 0xFE, 0x00, 0x1F, 0x1C, 0xFE, 0x00, 0x4A, 0x22, 0xFE, 0x00, 0x4F, 0x22, 0xFE, +0x00, 0x54, 0x22, 0xFE, 0x00, 0x59, 0x22, 0xFE, 0x00, 0x6E, 0x22, 0xFE, 0x00, 0x63, 0x80, 0xFE, +0x00, 0x85, 0x80, 0xFE, 0x00, 0x99, 0x80, 0xFE, 0x00, 0xAD, 0x80, 0xFE, 0x00, 0xC1, 0x80, 0xFE, +0x00, 0x4B, 0x81, 0xFE, 0x00, 0x75, 0x81, 0xFE, 0x00, 0x94, 0x81, 0xFE, 0x00, 0xB3, 0x81, 0xFE, +0x00, 0xD2, 0x81, 0xFE, 0x00, 0x1F, 0x82, 0xFE, 0x00, 0x3E, 0x82, 0xFE, 0x00, 0x5D, 0x82, 0xFE, +0x00, 0x7C, 0x82, 0xFE, 0x00, 0x9B, 0x82, 0xFE, 0x00, 0xA9, 0x43, 0xFE, 0x00, 0xD8, 0x43, 0xFE, +0x00, 0xBF, 0x44, 0xFE, 0x00, 0xED, 0x43, 0xFE, 0x00, 0x24, 0x44, 0xFE, 0x00, 0x82, 0x44, 0xFE, +0x00, 0xB6, 0x59, 0xFE, 0x00, 0x04, 0x5A, 0xFE, 0x00, 0xC3, 0x61, 0xFE, 0x00, 0x84, 0x60, 0xFE, +0x00, 0xFD, 0x5E, 0xFE, 0x00, 0x06, 0x5F, 0xFE, 0x00, 0x0F, 0x5F, 0xFE, 0x00, 0x18, 0x5F, 0xFE, +0x00, 0x3A, 0x52, 0xFE, 0x00, 0xC7, 0x52, 0xFE, 0x00, 0x05, 0x45, 0xFE, 0x00, 0x44, 0x45, 0xFE, +0x00, 0x49, 0x42, 0xFE, 0x00, 0x4E, 0x42, 0xFE, 0x00, 0x53, 0x42, 0xFE, 0x00, 0x58, 0x42, 0xFE, +0x00, 0x6E, 0x42, 0xFE, 0x00, 0x85, 0x34, 0xFE, 0x00, 0x81, 0x36, 0xFE, 0x00, 0xD9, 0x1C, 0xFE, +0x00, 0xED, 0x1C, 0xFE, 0x00, 0x01, 0x1D, 0xFE, 0x00, 0x12, 0x1D, 0xFE, 0x00, 0x2F, 0x1D, 0xFE, +0x00, 0x56, 0x1D, 0xFE, 0x00, 0x43, 0x1C, 0xFE, 0x00, 0xC8, 0x1C, 0xFE, 0x00, 0x7D, 0x1D, 0xFE, +0x00, 0xDD, 0x1D, 0xFE, 0x00, 0xB1, 0x64, 0xFE, 0x00, 0x90, 0x64, 0xFE, 0x00, 0x44, 0x62, 0xFE, +0x00, 0xE0, 0x0D, 0xFE, 0x00, 0x88, 0x3D, 0xFE, 0x00, 0x73, 0x3E, 0xFE, 0x00, 0xAE, 0x3E, 0xFE, +0x00, 0x86, 0x3E, 0xFE, 0x00, 0xCA, 0x3E, 0xFE, 0x00, 0x89, 0x3F, 0xFE, 0x00, 0x93, 0x17, 0xFE, +0x00, 0x57, 0x18, 0xFE, 0x00, 0x05, 0x69, 0xFE, 0x00, 0xE8, 0x6A, 0xFE, 0x00, 0xBC, 0x17, 0xFE, +0x00, 0x31, 0x18, 0xFE, 0x00, 0xC1, 0x17, 0xFE, 0x00, 0x36, 0x18, 0xFE, 0x00, 0xC6, 0x17, 0xFE, +0x00, 0x3B, 0x18, 0xFE, 0x00, 0xE2, 0x17, 0xFE, 0x00, 0x61, 0x18, 0xFE, 0x00, 0xCB, 0x17, 0xFE, +0x00, 0x40, 0x18, 0xFE, 0x00, 0xD0, 0x17, 0xFE, 0x00, 0x45, 0x18, 0xFE, 0x00, 0x85, 0x65, 0xFE, +0x00, 0x96, 0x65, 0xFE, 0x00, 0xD1, 0x65, 0xFE, 0x00, 0xB8, 0x65, 0xFE, 0x00, 0xCC, 0x64, 0xFE, +0x00, 0xE1, 0x64, 0xFE, 0x00, 0x24, 0x65, 0xFE, 0x00, 0x07, 0x65, 0xFE, 0x00, 0x4D, 0x67, 0xFE, +0x00, 0x66, 0x67, 0xFE, 0x00, 0xB1, 0x67, 0xFE, 0x00, 0x90, 0x67, 0xFE, 0x00, 0xD5, 0x17, 0xFE, +0x00, 0x4A, 0x18, 0xFE, 0x00, 0x27, 0x0E, 0xFE, 0x00, 0x38, 0x0E, 0xFE, 0x00, 0x82, 0x15, 0xFE, +0x00, 0xA2, 0x15, 0xFE, 0x00, 0xB6, 0x3F, 0xFE, 0x00, 0xFF, 0x1E, 0xE0, 0x00, 0x03, 0x1F, 0xE0, +0x00, 0x07, 0x1F, 0xE0, 0x00, 0x0B, 0x1F, 0xE0, 0x00, 0x0F, 0x1F, 0xE0, 0x00, 0x9F, 0x8B, 0xFE, +0x00, 0xA4, 0x8B, 0xFE, 0x00, 0xA9, 0x8B, 0xFE, 0x00, 0xAE, 0x8B, 0xFE, 0x00, 0xC4, 0x8B, 0xFE, +0x00, 0x9C, 0x8D, 0xFE, 0x00, 0xFD, 0x8D, 0xFE, 0x00, 0xA9, 0x8E, 0xFE, 0x00, 0xBB, 0x8E, 0xFE, +0x00, 0xE9, 0x8E, 0xFE, 0x00, 0x0A, 0x18, 0xFE, 0x00, 0x89, 0x18, 0xFE, 0x00, 0x0F, 0x18, 0xFE, +0x00, 0x8E, 0x18, 0xFE, 0x00, 0x65, 0x3C, 0xFE, 0x00, 0x49, 0x0E, 0xFE, 0x00, 0x81, 0x0E, 0xFE, +0x00, 0x8B, 0x0E, 0xFE, 0x00, 0xB3, 0x0E, 0xFE, 0x00, 0x38, 0x69, 0xFE, 0x00, 0x14, 0x18, 0xFE, +0x00, 0x5C, 0x18, 0xFE, 0x00, 0xB7, 0x17, 0xFE, 0x00, 0x2C, 0x18, 0xFE, 0x00, 0xE7, 0x17, 0xFE, +0x00, 0x66, 0x18, 0xFE, 0x00, 0xF1, 0x33, 0xFE, 0x00, 0x77, 0x6A, 0xFE, 0x00, 0x55, 0x69, 0xFE, +0x00, 0xB0, 0x69, 0xFE, 0x00, 0xF4, 0x18, 0x00, 0xF4, 0xFE, 0x00, 0xF4, 0xCE, 0x3F, 0xA2, 0x03, +0x10, 0x22, 0x00, 0x00, 0xE1, 0xF4, 0xFE, 0x00, 0xF4, 0xFD, 0x0E, 0xF4, 0xE0, 0x00, 0xF4, 0x00, +0x1E, 0xF4, 0x00, 0x00, 0xF4, 0xFC, 0x01, 0xA2, 0x02, 0x2B, 0x22, 0x00, 0x00, 0xE1, 0x4C, 0x8B, +0xFF, 0x22, 0x64, 0x00, 0xE1, 0xC9, 0x00, 0x00, 0xF0, 0x06, 0xA2, 0x01, 0x04, 0x4C, 0x85, 0xFF, +0x0B, 0xA3, 0x0F, 0xF4, 0x00, 0x00, 0xF4, 0x04, 0x00, 0xF4, 0x00, 0x00, 0x48, 0xA2, 0x01, 0x0D, +0x22, 0x00, 0x00, 0xE1, 0xA3, 0x0F, 0x5B, 0xA2, 0x00, 0x00, 0x74, 0x00, 0xE8, 0xE8, 0xE0, 0x00, +0x02, 0x90, 0xF7, 0xA3, 0x0B, 0xC9, 0x00, 0x00, 0xD0, 0x03, 0xA9, 0xA0, 0x00, 0x85, 0x28, 0xA3, +0x0D, 0x85, 0x08, 0xA3, 0x09, 0x85, 0x0A, 0x48, 0x48, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x80, 0xD4, +0x0A, 0xF4, 0x02, 0xC0, 0xF4, 0xE1, 0x00, 0xF4, 0x00, 0x20, 0x22, 0x08, 0x11, 0xFE, 0x90, 0x08, +0x68, 0x68, 0xA9, 0x10, 0x04, 0x4C, 0xC2, 0x0B, 0xA2, 0x00, 0x01, 0x68, 0x95, 0x06, 0x68, 0x95, +0x08, 0xE2, 0x20, 0xAF, 0x29, 0xC0, 0x00, 0x09, 0x40, 0x8F, 0x29, 0xC0, 0x00, 0xC2, 0x20, 0x22, +0x6C, 0x1F, 0xE0, 0x90, 0x03, 0x4C, 0xC2, 0x0B, 0xD4, 0x08, 0xA2, 0x04, 0x14, 0x22, 0x00, 0x00, +0xE1, 0xF4, 0xE1, 0x00, 0xF4, 0x00, 0x9E, 0xA2, 0x04, 0x0D, 0x22, 0x00, 0x00, 0xE1, 0x22, 0xBD, +0x3B, 0xFE, 0xC9, 0x00, 0x00, 0xF0, 0x03, 0x4C, 0xC2, 0x0B, 0xF4, 0x00, 0x00, 0xA2, 0x04, 0x15, +0x22, 0x00, 0x00, 0xE1, 0xA2, 0x00, 0x01, 0xA9, 0xE0, 0x77, 0x95, 0x4E, 0xA9, 0xFE, 0x00, 0x95, +0x50, 0xA9, 0xAA, 0x00, 0xA6, 0x0A, 0xA0, 0x00, 0x80, 0x20, 0x24, 0x11, 0x90, 0x03, 0x4C, 0xC2, +0x0B, 0x86, 0x2A, 0x84, 0x2C, 0x8A, 0xA2, 0x00, 0x01, 0x95, 0x0A, 0x98, 0x95, 0x0C, 0xA0, 0x02, +0x00, 0xB7, 0x2A, 0x48, 0xA7, 0x2A, 0x48, 0xA2, 0x04, 0x18, 0x22, 0x00, 0x00, 0xE1, 0x90, 0x03, +0x4C, 0xC2, 0x0B, 0xA9, 0x28, 0x00, 0x85, 0x52, 0xA9, 0x14, 0x00, 0x85, 0x50, 0x64, 0x56, 0x22, +0xA8, 0x1F, 0xE0, 0x90, 0x03, 0x4C, 0xC2, 0x0B, 0xA5, 0x28, 0x20, 0xD0, 0x0B, 0xA6, 0x0A, 0xA0, +0x00, 0x00, 0x20, 0x24, 0x11, 0x90, 0x03, 0x4C, 0xC2, 0x0B, 0x86, 0x3C, 0x84, 0x3E, 0xA2, 0x00, +0x01, 0xA9, 0x01, 0x00, 0x95, 0x00, 0x74, 0x02, 0xA2, 0x04, 0x0A, 0x22, 0x00, 0x00, 0xE1, 0x4C, +0x81, 0xFF, 0x85, 0x0A, 0xA2, 0x04, 0x03, 0x22, 0x00, 0x00, 0xE1, 0xA6, 0x0A, 0x4C, 0x84, 0xFF, +0x48, 0x18, 0x63, 0x01, 0x63, 0x01, 0x4A, 0x18, 0x63, 0x01, 0x18, 0x69, 0x4E, 0x00, 0xFA, 0x60, +0xC9, 0x00, 0x00, 0xD0, 0x03, 0x4C, 0x8B, 0xFF, 0x20, 0xB3, 0x0D, 0xA2, 0x00, 0x01, 0xB5, 0x0C, +0x48, 0x85, 0x2C, 0xB5, 0x0A, 0x48, 0x85, 0x2A, 0xA7, 0x2A, 0xAA, 0xA0, 0x02, 0x00, 0xB7, 0x2A, +0x48, 0xDA, 0xA2, 0x04, 0x1A, 0x22, 0x00, 0x00, 0xE1, 0x22, 0x10, 0x11, 0xFE, 0xA5, 0x46, 0x48, +0xA5, 0x44, 0x48, 0x22, 0x10, 0x11, 0xFE, 0xD4, 0x3E, 0xD4, 0x3C, 0x22, 0x10, 0x11, 0xFE, 0xA2, +0x00, 0x01, 0xB5, 0x08, 0x48, 0xB5, 0x06, 0x48, 0x22, 0x10, 0x11, 0xFE, 0x20, 0xAD, 0x3C, 0xA9, +0x00, 0x00, 0x48, 0xF4, 0x04, 0x00, 0x48, 0x48, 0xA2, 0x01, 0x0D, 0x22, 0x00, 0x00, 0xE1, 0xE2, +0x30, 0xAF, 0x29, 0xC0, 0x00, 0x29, 0x3F, 0x8F, 0x29, 0xC0, 0x00, 0xC2, 0x30, 0x4C, 0x3F, 0xFF, +0x22, 0x14, 0x1F, 0xE0, 0x83, 0x07, 0x4C, 0x8B, 0xFF, 0xA9, 0x00, 0x02, 0x6B, 0xA2, 0x04, 0x03, +0x22, 0x00, 0x00, 0xE1, 0x4C, 0x8B, 0xFF, 0xC9, 0x00, 0x00, 0xF0, 0x08, 0xA9, 0xFF, 0xFF, 0x83, +0x07, 0x4C, 0x8B, 0xFF, 0xA9, 0x00, 0x00, 0x80, 0xF6, 0x00, 0x00, 0x00, 0x20, 0xE1, 0x00, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x00, 0x40, +0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xE0, 0x77, 0xFE, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x20, 0xE1, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, +0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x00, 0x80, 0x02, 0x00, 0x00, 0x77, 0x07, 0x41, +0x08, 0x2C, 0x07, 0x0F, 0x00, 0x80, 0x00, 0x70, 0x0F, 0x00, 0x0D, 0xA9, 0x0F, 0xF0, 0x0F, 0xE0, +0x00, 0xDF, 0x04, 0xAF, 0x0D, 0x8F, 0x07, 0xCC, 0x0C, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0xF0, +0x00, 0xFF, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0xF0, 0x0F, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0xF0, +0x00, 0xFF, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0xF0, 0x0F, 0xFF, 0x0F, 0x03, 0x1E, 0xE0, 0x00, 0x07, +0x1E, 0xE0, 0x00, 0x0B, 0x1E, 0xE0, 0x00, 0x0F, 0x1E, 0xE0, 0x00, 0x13, 0x1E, 0xE0, 0x00, 0x17, +0x1E, 0xE0, 0x00, 0x1B, 0x1E, 0xE0, 0x00, 0x1F, 0x1E, 0xE0, 0x00, 0x23, 0x1E, 0xE0, 0x00, 0x27, +0x1E, 0xE0, 0x00, 0x2B, 0x1E, 0xE0, 0x00, 0x2F, 0x1E, 0xE0, 0x00, 0x33, 0x1E, 0xE0, 0x00, 0x37, +0x1E, 0xE0, 0x00, 0x22, 0x64, 0x00, 0xE1, 0x0B, 0x5B, 0xA3, 0x03, 0x48, 0xA3, 0x03, 0x83, 0x05, +0x68, 0x83, 0x01, 0x7B, 0x60, 0xA0, 0x9C, 0x00, 0xB7, 0x24, 0x85, 0x2A, 0xC8, 0xC8, 0xB7, 0x24, +0x85, 0x2C, 0xF0, 0x02, 0x38, 0x60, 0xA5, 0x2A, 0xD0, 0xFA, 0x18, 0x60, 0x18, 0xA9, 0x00, 0x00, +0x6B, 0x3B, 0x0B, 0x5B, 0xA0, 0x36, 0x00, 0xBB, 0xBF, 0x7B, 0x0D, 0xFE, 0x97, 0x07, 0x88, 0x88, +0x10, 0xF5, 0x4C, 0xC3, 0xFF, 0xFB, 0x0D, 0xFE, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x01, 0xC0, 0x01, +0xC0, 0xFF, 0x3F, 0xFF, 0x3F, 0xA3, 0x07, 0x29, 0xFF, 0x00, 0x0A, 0x0A, 0xAA, 0xBF, 0x18, 0x0E, +0xFE, 0x83, 0x09, 0xBF, 0x1A, 0x0E, 0xFE, 0x83, 0x0B, 0x4C, 0xB7, 0xFF, 0x74, 0xBD, 0xFF, 0x00, +0x3B, 0x4C, 0xFE, 0x00, 0x3B, 0x50, 0xFE, 0x00, 0x20, 0xB3, 0x0D, 0xA2, 0x00, 0x01, 0xA3, 0x09, +0x95, 0x4E, 0xA3, 0x0B, 0x95, 0x50, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, 0x0D, 0xA2, 0x00, 0x01, 0xB5, +0x4E, 0x83, 0x09, 0xB5, 0x50, 0x83, 0x0B, 0x4C, 0x3F, 0xFF, 0x20, 0xB3, 0x0D, 0x64, 0x56, 0xA3, +0x0D, 0x20, 0xD0, 0x0B, 0xF4, 0x00, 0x00, 0x48, 0xD4, 0x3E, 0xD4, 0x3C, 0xA2, 0x02, 0x19, 0x22, +0x00, 0x00, 0xE1, 0x90, 0x04, 0xAA, 0x4C, 0x79, 0xFF, 0xA3, 0x0D, 0x85, 0x28, 0xA3, 0x09, 0x85, +0x52, 0xA3, 0x0B, 0x85, 0x50, 0x22, 0xA8, 0x1F, 0xE0, 0xB0, 0xEA, 0xA3, 0x0D, 0x85, 0x28, 0x4C, +0x76, 0xFF, 0x20, 0xB3, 0x0D, 0xA9, 0x00, 0x80, 0x85, 0x56, 0x80, 0xC3, 0x20, 0xB3, 0x0D, 0xA3, +0x09, 0x85, 0x2A, 0xA3, 0x0B, 0x85, 0x2C, 0xA5, 0x28, 0x87, 0x2A, 0xA5, 0x4A, 0xA0, 0x02, 0x00, +0x97, 0x2A, 0xA5, 0x48, 0xC8, 0xC8, 0x97, 0x2A, 0xA2, 0x00, 0x01, 0xB5, 0x04, 0xC8, 0xC8, 0x97, +0x2A, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0x85, 0x2A, 0xA3, 0x0B, 0x85, 0x2C, 0xA7, +0x2A, 0x20, 0xD0, 0x0B, 0xF4, 0x00, 0x00, 0x48, 0xD4, 0x3E, 0xD4, 0x3C, 0xA2, 0x02, 0x19, 0x22, +0x00, 0x00, 0xE1, 0x90, 0x04, 0xAA, 0x4C, 0x6E, 0xFF, 0xA7, 0x2A, 0x85, 0x28, 0xA0, 0x02, 0x00, +0xB7, 0x2A, 0x85, 0x50, 0xC8, 0xC8, 0xB7, 0x2A, 0x85, 0x54, 0xC8, 0xC8, 0xB7, 0x2A, 0x85, 0x56, +0x22, 0xAC, 0x1F, 0xE0, 0x90, 0x04, 0xAA, 0x4C, 0x6E, 0xFF, 0x4C, 0x6B, 0xFF, 0x5C, 0x00, 0x00, +0x00, 0x5C, 0xFF, 0x65, 0xFE, 0x5C, 0xA1, 0x24, 0xFE, 0x5C, 0xB9, 0x22, 0xFE, 0x5C, 0x1F, 0x81, +0xFE, 0x5C, 0x1A, 0x81, 0xFE, 0x5C, 0x15, 0x81, 0xFE, 0x5C, 0xF7, 0x8B, 0xFE, 0x5C, 0xA1, 0x42, +0xFE, 0x5C, 0x4D, 0x31, 0xFE, 0x5C, 0xE3, 0xFF, 0xFE, 0x5C, 0x56, 0x65, 0xFE, 0x5C, 0xE7, 0x67, +0xFE, 0x5C, 0xE3, 0xFF, 0xFE, 0x5C, 0xE3, 0xFF, 0xFE, 0x5C, 0xA2, 0x18, 0xFE, 0x5C, 0xBC, 0x18, +0xFE, 0x5C, 0xF4, 0x18, 0xFE, 0x5C, 0x03, 0x19, 0xFE, 0x5C, 0x12, 0x19, 0xFE, 0x5C, 0x26, 0x19, +0xFE, 0x5C, 0x62, 0x19, 0xFE, 0x5C, 0xA5, 0x19, 0xFE, 0x5C, 0x03, 0x1A, 0xFE, 0x5C, 0x17, 0x1A, +0xFE, 0x5C, 0x7A, 0x1A, 0xFE, 0x5C, 0xBC, 0x1A, 0xFE, 0x5C, 0x04, 0x21, 0xFE, 0x5C, 0x18, 0x21, +0xFE, 0x5C, 0x8B, 0x23, 0xFE, 0x5C, 0x8B, 0x23, 0xFE, 0x5C, 0x38, 0x37, 0xFE, 0x5C, 0xDE, 0x38, +0xFE, 0x5C, 0xE0, 0x38, 0xFE, 0x5C, 0x69, 0x39, 0xFE, 0x5C, 0x6B, 0x39, 0xFE, 0x5C, 0xF7, 0x39, +0xFE, 0x5C, 0xFA, 0x39, 0xFE, 0x5C, 0xEA, 0x3E, 0xFE, 0x5C, 0x6B, 0x3F, 0xFE, 0x5C, 0x78, 0x46, +0xFE, 0x5C, 0xB3, 0x46, 0xFE, 0x5C, 0x86, 0x46, 0xFE, 0x5C, 0x89, 0x46, 0xFE, 0x5C, 0x86, 0x46, +0xFE, 0x5C, 0x83, 0x46, 0xFE, 0x5C, 0x45, 0x69, 0xFE, 0x5C, 0x34, 0x48, 0xFE, 0x5C, 0xBF, 0x47, +0xFE, 0x5C, 0x1E, 0x47, 0xFE, 0x5C, 0x5F, 0x48, 0xFE, 0x5C, 0x06, 0x48, 0xFE, 0x5C, 0x81, 0x47, +0xFE, 0x5C, 0x91, 0x48, 0xFE, 0x5C, 0xC7, 0x49, 0xFE, 0x5C, 0xAF, 0x4B, 0xFE, 0x5C, 0x82, 0x4B, +0xFE, 0x5C, 0x51, 0x4B, 0xFE, 0x5C, 0xA5, 0x20, 0xFE, 0x5C, 0x09, 0x38, 0xFE, 0x5C, 0xB9, 0x74, +0xFE, 0x5C, 0xF6, 0x72, 0xFE, 0x5C, 0xDC, 0x0D, 0xFE, 0x5C, 0x1D, 0x8F, 0xFE, 0x5C, 0xF9, 0x10, +0xFE, 0x5C, 0xFC, 0x10, 0xFE, 0x5C, 0xFF, 0x10, 0xFE, 0x5C, 0x02, 0x11, 0xFE, 0x5C, 0x05, 0x11, +0xFE, 0x5C, 0x59, 0x0C, 0xFE, 0x5C, 0xC8, 0x42, 0xFE, 0x5C, 0xC0, 0x42, 0xFE, 0x5C, 0xC0, 0x42, +0xFE, 0x5C, 0xC0, 0x42, 0xFE, 0x5C, 0xC0, 0x42, 0xFE, 0x5C, 0xE0, 0x22, 0xFE, 0x5C, 0xD8, 0x22, +0xFE, 0x5C, 0xD8, 0x22, 0xFE, 0x5C, 0xD8, 0x22, 0xFE, 0x5C, 0xD8, 0x22, 0xFE, 0x5C, 0x13, 0x66, +0xFE, 0x5C, 0x6E, 0x66, 0xFE, 0x5C, 0xF4, 0x67, 0xFE, 0x5C, 0x6A, 0x68, 0xFE, 0x5C, 0x04, 0x6B, +0xFE, 0x5C, 0x78, 0x6B, 0xFE, 0x5C, 0xBA, 0x6B, 0xFE, 0x5C, 0xD9, 0x6B, 0xFE, 0x5C, 0x2A, 0x6C, +0xFE, 0x5C, 0xB6, 0x6C, 0xFE, 0x5C, 0xCE, 0x6D, 0xFE, 0x5C, 0x17, 0x6E, 0xFE, 0x5C, 0x45, 0x6E, +0xFE, 0x5C, 0xBC, 0x70, 0xFE, 0x5C, 0xA7, 0x6B, 0xFE, 0x5C, 0x8E, 0x6E, 0xFE, 0x5C, 0xA2, 0x54, +0xFE, 0x5C, 0x04, 0x56, 0xFE, 0x5C, 0x40, 0x54, 0xFE, 0x5C, 0xED, 0x56, 0xFE, 0x5C, 0xA1, 0x57, +0xFE, 0x5C, 0xA8, 0x58, 0xFE, 0x5C, 0xD4, 0x5C, 0xFE, 0x5C, 0xC0, 0x8A, 0xFE, 0x5C, 0x87, 0x85, +0xFE, 0x5C, 0xBD, 0x84, 0xFE, 0x5C, 0x1D, 0x72, 0xFE, 0x5C, 0xA2, 0x72, 0xFE, 0x5C, 0xA9, 0x6E, +0xFE, 0x5C, 0xAD, 0x6E, 0xFE, 0x5C, 0xCB, 0x6E, 0xFE, 0x5C, 0x70, 0x6F, 0xFE, 0x5C, 0x22, 0x81, +0xFE, 0x5C, 0x8B, 0x86, 0xFE, 0x5C, 0x8F, 0x63, 0xFE, 0x5C, 0xBD, 0x40, 0xFE, 0x5C, 0xD2, 0x41, +0xFE, 0x5C, 0x23, 0x83, 0xFE, 0x5C, 0x6C, 0x83, 0xFE, 0x5C, 0x63, 0x31, 0xFE, 0x5C, 0x53, 0x33, +0xFE, 0x5C, 0xC4, 0x33, 0xFE, 0x5C, 0x1C, 0x6B, 0xFE, 0x5C, 0x3A, 0x6B, 0xFE, 0x5C, 0x57, 0x6B, +0xFE, 0x5C, 0x25, 0x67, 0xFE, 0x5C, 0x18, 0x69, 0xFE, 0x4C, 0xC2, 0xFF, 0x4C, 0xD8, 0xFF, 0x4C, +0x8B, 0xFF, 0x4C, 0xD8, 0xFF, 0x4C, 0xC2, 0xFF, 0xA2, 0x02, 0x09, 0x22, 0x04, 0x00, 0xE1, 0x6B, +0xA2, 0x02, 0x10, 0x80, 0xF6, 0xA2, 0x04, 0x69, 0x80, 0xF1, 0xA2, 0x03, 0x10, 0x80, 0xEC, 0xA2, +0x03, 0x11, 0x80, 0xE7, 0x48, 0x48, 0xF4, 0x00, 0x00, 0x48, 0xDA, 0x5A, 0x48, 0x48, 0x22, 0x08, +0x11, 0xFE, 0xFA, 0x7A, 0x60, 0xE2, 0x30, 0xA9, 0x80, 0x0F, 0x29, 0xC0, 0xE0, 0x8F, 0x29, 0xC0, +0xE0, 0xC2, 0x30, 0x4C, 0x8B, 0xFF, 0xE2, 0x30, 0xA9, 0x7F, 0x2F, 0x29, 0xC0, 0xE0, 0x8F, 0x29, +0xC0, 0xE0, 0xC2, 0x30, 0x4C, 0x8B, 0xFF, 0xA9, 0x00, 0x00, 0x83, 0x07, 0x4C, 0x8B, 0xFF, 0x20, +0xB3, 0x0D, 0xA3, 0x09, 0x85, 0x2A, 0xA3, 0x0A, 0x85, 0x2B, 0x24, 0x07, 0x30, 0x10, 0xA0, 0x1E, +0x00, 0xBB, 0xBF, 0x3B, 0x0D, 0xFE, 0x97, 0x2A, 0x88, 0x88, 0x10, 0xF5, 0x80, 0x0E, 0xA0, 0x1E, +0x00, 0xBB, 0xBF, 0x5B, 0x0D, 0xFE, 0x97, 0x2A, 0x88, 0x88, 0x10, 0xF5, 0x4C, 0x6B, 0xFF, 0x0B, +0x3B, 0x5B, 0xA9, 0x1E, 0x00, 0xA6, 0x0D, 0xF0, 0x0C, 0xE0, 0x10, 0x00, 0xB0, 0x1A, 0x18, 0x69, +0x20, 0x00, 0xCA, 0xD0, 0xF9, 0xAA, 0xA0, 0x1E, 0x00, 0xB7, 0x09, 0x9F, 0x00, 0x9E, 0xE1, 0xCA, +0xCA, 0x88, 0x88, 0x10, 0xF4, 0x4C, 0xCE, 0xFF, 0xA2, 0x50, 0x04, 0x4C, 0xD1, 0xFF, 0x0B, 0x3B, +0x5B, 0xA9, 0x1E, 0x00, 0xA6, 0x0D, 0xF0, 0x0C, 0xE0, 0x10, 0x00, 0xB0, 0x1A, 0x18, 0x69, 0x20, +0x00, 0xCA, 0xD0, 0xF9, 0xAA, 0xA0, 0x1E, 0x00, 0xBF, 0x00, 0x9E, 0xE1, 0x97, 0x09, 0xCA, 0xCA, +0x88, 0x88, 0x10, 0xF4, 0x4C, 0xCE, 0xFF, 0xA2, 0x50, 0x04, 0x4C, 0xD1, 0xFF, 0xA3, 0x0B, 0xC9, +0x10, 0x00, 0xB0, 0x24, 0xA8, 0xF0, 0x0A, 0xA9, 0x00, 0x00, 0x18, 0x69, 0x20, 0x00, 0x88, 0xD0, +0xFA, 0xAA, 0xA3, 0x09, 0xC9, 0x10, 0x00, 0xB0, 0x15, 0x8A, 0x63, 0x09, 0x63, 0x09, 0xAA, 0xA3, +0x07, 0x9F, 0x00, 0x9E, 0xE1, 0x4C, 0xCD, 0xFF, 0xA2, 0x50, 0x04, 0x4C, 0xD2, 0xFF, 0xA2, 0x51, +0x04, 0x4C, 0xD2, 0xFF, 0xA3, 0x09, 0xC9, 0x10, 0x00, 0xB0, 0x24, 0xA8, 0xF0, 0x0A, 0xA9, 0x00, +0x00, 0x18, 0x69, 0x20, 0x00, 0x88, 0xD0, 0xFA, 0xAA, 0xA3, 0x07, 0xC9, 0x10, 0x00, 0xB0, 0x15, +0x8A, 0x63, 0x07, 0x63, 0x07, 0xAA, 0xBF, 0x00, 0x9E, 0xE1, 0x83, 0x0B, 0x4C, 0xC2, 0xFF, 0xA2, +0x50, 0x04, 0x4C, 0xC7, 0xFF, 0xA2, 0x51, 0x04, 0x4C, 0xC7, 0xFF, 0xA3, 0x09, 0xC9, 0xC8, 0x00, +0xB0, 0x13, 0xA9, 0x00, 0x00, 0xE2, 0x20, 0xA3, 0x09, 0xAA, 0xA3, 0x07, 0x9F, 0x00, 0x9D, 0xE1, +0xC2, 0x20, 0x4C, 0xC2, 0xFF, 0xA2, 0x52, 0x04, 0x4C, 0xC7, 0xFF, 0xA3, 0x07, 0xC9, 0xC8, 0x00, +0xB0, 0x13, 0xA9, 0x00, 0x00, 0xE2, 0x20, 0xA3, 0x07, 0xAA, 0xBF, 0x00, 0x9D, 0xE1, 0x83, 0x09, +0xC2, 0x20, 0x4C, 0xB7, 0xFF, 0xA2, 0x52, 0x04, 0x4C, 0xBC, 0xFF, 0xE2, 0x20, 0xA3, 0x07, 0xA2, +0xC8, 0x00, 0x9F, 0xFF, 0x9C, 0xE1, 0xCA, 0xD0, 0xF9, 0xC2, 0x30, 0x4C, 0xB7, 0xFF, 0x20, 0xB3, +0x0D, 0x22, 0xAF, 0x3E, 0xFE, 0xA3, 0x09, 0x8B, 0xF4, 0xE1, 0xE1, 0xAB, 0xAB, 0xA2, 0xFE, 0x7C, +0x9D, 0x00, 0x20, 0xCA, 0xCA, 0x10, 0xF9, 0xAB, 0x7B, 0x22, 0x87, 0x3E, 0xFE, 0x4C, 0x60, 0xFF, +0x20, 0xB3, 0x0D, 0xA3, 0x09, 0x85, 0x08, 0x4C, 0x60, 0xFF, 0x20, 0xB3, 0x0D, 0xA5, 0x08, 0x83, +0x09, 0x4C, 0x3F, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0x85, 0x24, 0xA3, 0x0B, 0x85, 0x26, 0xF4, +0x00, 0x00, 0xF4, 0x00, 0x00, 0xA2, 0x04, 0x67, 0x22, 0x00, 0x00, 0xE1, 0xB0, 0x27, 0xF4, 0x00, +0x00, 0xF4, 0x00, 0x00, 0xA2, 0x04, 0x67, 0x22, 0x00, 0x00, 0xE1, 0xB0, 0x18, 0xA0, 0x18, 0x00, +0x68, 0x97, 0x24, 0xC8, 0xC8, 0x68, 0x97, 0x24, 0xA0, 0x1C, 0x00, 0x68, 0x97, 0x24, 0xC8, 0xC8, +0x68, 0x97, 0x24, 0x80, 0x0F, 0xAA, 0x4C, 0x6E, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0x85, 0x24, +0xA3, 0x0B, 0x85, 0x26, 0xA0, 0xA8, 0x00, 0xBB, 0xBF, 0x79, 0x0C, 0xFE, 0x97, 0x24, 0x88, 0x88, +0xC0, 0x20, 0x00, 0x10, 0xF2, 0x24, 0x07, 0x10, 0x10, 0xA0, 0x16, 0x00, 0xBB, 0xBF, 0x23, 0x0D, +0xFE, 0x97, 0x24, 0x88, 0x88, 0x10, 0xF5, 0x80, 0x0E, 0xA0, 0x16, 0x00, 0xBB, 0xBF, 0x79, 0x0C, +0xFE, 0x97, 0x24, 0x88, 0x88, 0x10, 0xF5, 0xF4, 0xFE, 0x00, 0xF4, 0xF5, 0x0D, 0xA0, 0x1A, 0x00, +0xB7, 0x24, 0x48, 0x88, 0x88, 0xB7, 0x24, 0x48, 0xA2, 0x04, 0x69, 0x22, 0x00, 0x00, 0xE1, 0xB0, +0x30, 0xA0, 0x1E, 0x00, 0xB7, 0x24, 0x48, 0x88, 0x88, 0xB7, 0x24, 0x48, 0xA5, 0x24, 0x18, 0x69, +0x08, 0x00, 0xD4, 0x26, 0x48, 0xA2, 0x04, 0x6C, 0x22, 0x00, 0x00, 0xE1, 0xB0, 0x13, 0xA2, 0x00, +0x01, 0xA0, 0x74, 0x00, 0xB5, 0x4E, 0x97, 0x24, 0xC8, 0xC8, 0xB5, 0x50, 0x97, 0x24, 0x4C, 0x6B, +0xFF, 0xAA, 0x4C, 0x6E, 0xFF, 0x0B, 0x3B, 0x5B, 0xA0, 0x1A, 0x00, 0x20, 0xCF, 0x13, 0xB0, 0x0B, +0xA0, 0x1E, 0x00, 0x20, 0xCF, 0x13, 0xB0, 0x03, 0x4C, 0xC3, 0xFF, 0xAA, 0x4C, 0xC6, 0xFF, 0xB7, +0x09, 0x48, 0x88, 0x88, 0xB7, 0x09, 0x48, 0xA2, 0x04, 0x68, 0x22, 0x00, 0x00, 0xE1, 0x60, 0x20, +0xB3, 0x0D, 0xA3, 0x09, 0x85, 0x24, 0xA3, 0x0A, 0x85, 0x25, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, 0x0D, +0xA5, 0x24, 0x83, 0x09, 0xA5, 0x26, 0x29, 0xFF, 0x00, 0x83, 0x0B, 0x4C, 0x3F, 0xFF, 0x20, 0xB3, +0x0D, 0xA3, 0x09, 0x85, 0x2A, 0xA3, 0x0A, 0x85, 0x2B, 0xA0, 0x0E, 0x00, 0xB7, 0x2A, 0x97, 0x24, +0x88, 0x88, 0x10, 0xF8, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0x85, 0x2A, 0xA3, 0x0A, +0x85, 0x2B, 0xA0, 0x0E, 0x00, 0xB7, 0x24, 0x97, 0x2A, 0x88, 0x88, 0x10, 0xF8, 0x4C, 0x6B, 0xFF, +0x20, 0xB3, 0x0D, 0x8B, 0xA3, 0x0A, 0xAA, 0xA3, 0x0B, 0x48, 0xAB, 0xAB, 0xA0, 0x10, 0x00, 0xBD, +0x00, 0x00, 0x97, 0x24, 0xE8, 0xE8, 0xC8, 0xC8, 0xC0, 0x18, 0x00, 0x90, 0xF2, 0xAB, 0x4C, 0x6B, +0xFF, 0x20, 0xB3, 0x0D, 0x8B, 0xA3, 0x0A, 0xAA, 0xA3, 0x0B, 0x48, 0xAB, 0xAB, 0xA0, 0x10, 0x00, +0xB7, 0x24, 0x9D, 0x00, 0x00, 0xE8, 0xE8, 0xC8, 0xC8, 0xC0, 0x18, 0x00, 0x90, 0xF2, 0xAB, 0x4C, +0x6B, 0xFF, 0x20, 0xB3, 0x0D, 0x22, 0x3C, 0x1E, 0xE0, 0xA3, 0x09, 0x18, 0x65, 0x1C, 0x85, 0x20, +0xA3, 0x0B, 0x18, 0x65, 0x1E, 0x85, 0x22, 0x22, 0xAF, 0x18, 0xFE, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, +0x0D, 0x22, 0x3C, 0x1E, 0xE0, 0xA5, 0x20, 0x38, 0xE5, 0x1C, 0x18, 0x63, 0x09, 0x85, 0x20, 0xA3, +0x09, 0x85, 0x1C, 0xA5, 0x22, 0x38, 0xE5, 0x1E, 0x18, 0x63, 0x0B, 0x85, 0x22, 0xA3, 0x0B, 0x85, +0x1E, 0x22, 0xAF, 0x18, 0xFE, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, 0x0D, 0x22, 0x3C, 0x1E, 0xE0, 0xA3, +0x09, 0x38, 0xE5, 0x1C, 0xA8, 0x18, 0x65, 0x14, 0x85, 0x14, 0x98, 0x18, 0x65, 0x18, 0x85, 0x18, +0x98, 0x18, 0x65, 0x1C, 0x85, 0x1C, 0x98, 0x18, 0x65, 0x20, 0x85, 0x20, 0xBB, 0xA3, 0x0B, 0x38, +0xE5, 0x1E, 0xA8, 0x18, 0x65, 0x16, 0x85, 0x16, 0x98, 0x18, 0x65, 0x1A, 0x85, 0x1A, 0x98, 0x18, +0x65, 0x1E, 0x85, 0x1E, 0x98, 0x18, 0x65, 0x22, 0x85, 0x22, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, +0x5A, 0xDA, 0xA0, 0x1C, 0x00, 0xB7, 0x24, 0x83, 0x05, 0xC8, 0xC8, 0xB7, 0x24, 0x83, 0x07, 0xA2, +0x04, 0x6F, 0x22, 0x00, 0x00, 0xE1, 0xB0, 0x07, 0x22, 0xAF, 0x18, 0xFE, 0x4C, 0x6B, 0xFF, 0xAA, +0x4C, 0x6E, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0xAA, 0xA3, 0x0B, 0x48, 0xDA, 0xA0, 0x1A, 0x00, +0xB7, 0x24, 0x48, 0x88, 0x88, 0xB7, 0x24, 0x48, 0xA2, 0x04, 0x69, 0x22, 0x00, 0x00, 0xE1, 0xAA, +0x4C, 0x6E, 0xFF, 0x20, 0xB3, 0x0D, 0xA0, 0x1A, 0x00, 0xB7, 0x24, 0x48, 0x88, 0x88, 0xB7, 0x24, +0x48, 0xA3, 0x0D, 0xAA, 0xA3, 0x0F, 0x48, 0xDA, 0xA2, 0x04, 0x69, 0x22, 0x00, 0x00, 0xE1, 0xAA, +0x4C, 0x6E, 0xFF, 0x20, 0xB3, 0x0D, 0xA0, 0x1A, 0x00, 0xB7, 0x24, 0x48, 0x88, 0x88, 0xB7, 0x24, +0x48, 0xA3, 0x0D, 0xAA, 0xA3, 0x0F, 0x48, 0xDA, 0xA2, 0x04, 0x6C, 0x22, 0x00, 0x00, 0xE1, 0xAA, +0x4C, 0x6E, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0xAA, 0xA3, 0x0B, 0x48, 0xDA, 0xA0, 0x1E, 0x00, +0xB7, 0x24, 0x48, 0x88, 0x88, 0xB7, 0x24, 0x48, 0xA2, 0x04, 0x69, 0x22, 0x00, 0x00, 0xE1, 0xAA, +0x4C, 0x6E, 0xFF, 0x20, 0xB3, 0x0D, 0xA0, 0x1E, 0x00, 0xB7, 0x24, 0x48, 0x88, 0x88, 0xB7, 0x24, +0x48, 0xA3, 0x0D, 0xAA, 0xA3, 0x0F, 0x48, 0xDA, 0xA2, 0x04, 0x69, 0x22, 0x00, 0x00, 0xE1, 0xAA, +0x4C, 0x6E, 0xFF, 0x20, 0xB3, 0x0D, 0xA0, 0x72, 0x00, 0xB7, 0x24, 0x3A, 0x97, 0x24, 0x4C, 0x3F, +0xFF, 0x20, 0xB3, 0x0D, 0xA0, 0x72, 0x00, 0xB7, 0x24, 0x1A, 0x97, 0x24, 0x4C, 0x3F, 0xFF, 0x20, +0xB3, 0x0D, 0xA3, 0x09, 0x85, 0x2A, 0xA3, 0x0A, 0x85, 0x2B, 0xA0, 0x40, 0x00, 0xB7, 0x24, 0x87, +0x2A, 0xC8, 0xC8, 0xB7, 0x24, 0xA0, 0x02, 0x00, 0x97, 0x2A, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, 0x0D, +0xA3, 0x09, 0xAA, 0xA3, 0x0A, 0x8B, 0x48, 0xAB, 0xAB, 0xA0, 0x40, 0x00, 0xB7, 0x24, 0x9D, 0x00, +0x00, 0xE8, 0xE8, 0xC8, 0xC8, 0xC0, 0x72, 0x00, 0x90, 0xF2, 0xAB, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, +0x0D, 0xA3, 0x09, 0xAA, 0xA3, 0x0A, 0x8B, 0x48, 0xAB, 0xAB, 0xA0, 0x40, 0x00, 0xBD, 0x00, 0x00, +0x97, 0x24, 0xE8, 0xE8, 0xC8, 0xC8, 0xC0, 0x72, 0x00, 0x90, 0xF2, 0xAB, 0x4C, 0x6B, 0xFF, 0x20, +0xB3, 0x0D, 0x22, 0x40, 0x1E, 0xE0, 0x22, 0x3A, 0x19, 0xFE, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, 0x0D, +0x22, 0x4C, 0x1E, 0xE0, 0x22, 0xD8, 0x18, 0xFE, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x09, +0xAA, 0xA7, 0x24, 0x20, 0xC9, 0x16, 0x22, 0x3A, 0x19, 0xFE, 0x4C, 0x60, 0xFF, 0x20, 0xB3, 0x0D, +0x22, 0xB7, 0x19, 0xFE, 0x22, 0xEF, 0x19, 0xFE, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, 0x0D, 0x22, 0x5C, +0x1E, 0xE0, 0x22, 0xD3, 0x19, 0xFE, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, 0x0D, 0x22, 0x40, 0x1E, 0xE0, +0x22, 0x4E, 0x19, 0xFE, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, 0x0D, 0x22, 0x50, 0x1E, 0xE0, 0x22, 0xD8, +0x18, 0xFE, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0xAA, 0xA7, 0x24, 0x20, 0xC9, 0x16, +0x22, 0x4E, 0x19, 0xFE, 0x4C, 0x60, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x0D, 0xAA, 0xA5, 0x08, 0x20, +0xC9, 0x16, 0x22, 0xD8, 0x18, 0xFE, 0x4C, 0x76, 0xFF, 0x20, 0xD9, 0x16, 0xA2, 0x00, 0x01, 0x95, +0x0E, 0xE8, 0xE8, 0xE0, 0x20, 0x01, 0x90, 0xF7, 0x60, 0x29, 0x80, 0x00, 0xF0, 0x0B, 0x8A, 0x29, +0x03, 0x00, 0x0A, 0xAA, 0xBF, 0xF4, 0x16, 0xFE, 0x60, 0x8A, 0x29, 0x0F, 0x00, 0x0A, 0xAA, 0xBF, +0xFC, 0x16, 0xFE, 0x60, 0x00, 0x00, 0x55, 0x55, 0xAA, 0xAA, 0xFF, 0xFF, 0x00, 0x00, 0x11, 0x11, +0x22, 0x22, 0x33, 0x33, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77, 0x88, 0x88, 0x99, 0x99, +0xAA, 0xAA, 0xBB, 0xBB, 0xCC, 0xCC, 0xDD, 0xDD, 0xEE, 0xEE, 0xFF, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, +0x09, 0xA0, 0x44, 0x00, 0x97, 0x24, 0xA3, 0x0B, 0xC8, 0xC8, 0x97, 0x24, 0x4C, 0x6B, 0xFF, 0x20, +0xB3, 0x0D, 0xA3, 0x09, 0x85, 0x2A, 0xA3, 0x0A, 0x85, 0x2B, 0xA0, 0x44, 0x00, 0xB7, 0x24, 0x87, +0x2A, 0xC8, 0xC8, 0xB7, 0x24, 0xA0, 0x02, 0x00, 0x97, 0x2A, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, 0x0D, +0xA2, 0x00, 0x00, 0xA0, 0x44, 0x00, 0xBF, 0xBD, 0x0C, 0xFE, 0x97, 0x24, 0xE8, 0xE8, 0xC8, 0xC8, +0xC0, 0x72, 0x00, 0x90, 0xF1, 0x4C, 0x3F, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0xA0, 0x40, 0x00, +0x97, 0x24, 0xA3, 0x0B, 0xC8, 0xC8, 0x97, 0x24, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x09, +0xA0, 0x40, 0x00, 0x18, 0x77, 0x24, 0x97, 0x24, 0xA3, 0x0B, 0xC8, 0xC8, 0x18, 0x77, 0x24, 0x97, +0x24, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0xA0, 0x74, 0x00, 0x97, 0x24, 0xA3, 0x0B, +0xC8, 0xC8, 0x97, 0x24, 0xA0, 0x78, 0x00, 0xA9, 0x00, 0x00, 0x97, 0x24, 0xC8, 0xC8, 0x97, 0x24, +0x4C, 0x6B, 0xFF, 0xA0, 0x48, 0x00, 0x80, 0x21, 0xA0, 0x7E, 0x00, 0x80, 0x1C, 0xA0, 0x7C, 0x00, +0x80, 0x17, 0xA0, 0x80, 0x00, 0x80, 0x12, 0xA0, 0x82, 0x00, 0x80, 0x0D, 0xA0, 0x8C, 0x00, 0x80, +0x08, 0xA0, 0x8E, 0x00, 0x80, 0x03, 0xA0, 0xA0, 0x00, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0x97, 0x24, +0x4C, 0x60, 0xFF, 0xA0, 0x84, 0x00, 0x80, 0x30, 0xA0, 0x88, 0x00, 0x80, 0x2B, 0xA0, 0x90, 0x00, +0x80, 0x26, 0xA0, 0x94, 0x00, 0x80, 0x21, 0xA0, 0x98, 0x00, 0x80, 0x1C, 0xA0, 0x9C, 0x00, 0x80, +0x17, 0xA0, 0xA2, 0x00, 0x80, 0x12, 0xA0, 0xA6, 0x00, 0x80, 0x0D, 0xA0, 0x18, 0x00, 0x80, 0x08, +0xA0, 0x1C, 0x00, 0x80, 0x03, 0xA0, 0x78, 0x00, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0x97, 0x24, 0xA3, +0x0B, 0xC8, 0xC8, 0x97, 0x24, 0x4C, 0x6B, 0xFF, 0xA0, 0x48, 0x00, 0x80, 0x21, 0xA0, 0x7E, 0x00, +0x80, 0x1C, 0xA0, 0x7C, 0x00, 0x80, 0x17, 0xA0, 0x80, 0x00, 0x80, 0x12, 0xA0, 0x82, 0x00, 0x80, +0x0D, 0xA0, 0x8C, 0x00, 0x80, 0x08, 0xA0, 0x8E, 0x00, 0x80, 0x03, 0xA0, 0xA0, 0x00, 0x20, 0xB3, +0x0D, 0xB7, 0x24, 0x83, 0x09, 0x4C, 0x3F, 0xFF, 0xA0, 0x74, 0x00, 0x80, 0x35, 0xA0, 0x78, 0x00, +0x80, 0x30, 0xA0, 0x84, 0x00, 0x80, 0x2B, 0xA0, 0x88, 0x00, 0x80, 0x26, 0xA0, 0x90, 0x00, 0x80, +0x21, 0xA0, 0x94, 0x00, 0x80, 0x1C, 0xA0, 0x98, 0x00, 0x80, 0x17, 0xA0, 0x9C, 0x00, 0x80, 0x12, +0xA0, 0xA2, 0x00, 0x80, 0x0D, 0xA0, 0xA6, 0x00, 0x80, 0x08, 0xA0, 0x18, 0x00, 0x80, 0x03, 0xA0, +0x1C, 0x00, 0x20, 0xB3, 0x0D, 0xB7, 0x24, 0x83, 0x09, 0xC8, 0xC8, 0xB7, 0x24, 0x83, 0x0B, 0x4C, +0x3F, 0xFF, 0xA0, 0x16, 0x00, 0xBB, 0xB7, 0x24, 0x95, 0x0C, 0x88, 0x88, 0x10, 0xF7, 0x6B, 0xA0, +0x16, 0x00, 0xBB, 0xB5, 0x0C, 0x97, 0x24, 0x88, 0x88, 0x10, 0xF7, 0x6B, 0xA3, 0x0C, 0x85, 0x2A, +0xA3, 0x0D, 0x85, 0x2B, 0xA0, 0x00, 0x00, 0xA2, 0x00, 0x01, 0xB7, 0x2A, 0x95, 0x0E, 0xE8, 0xE8, +0xC8, 0xC8, 0xC0, 0x20, 0x00, 0x90, 0xF3, 0x6B, 0xA3, 0x0C, 0x85, 0x2A, 0xA3, 0x0D, 0x85, 0x2B, +0xA0, 0x00, 0x00, 0xA2, 0x00, 0x01, 0xB5, 0x0E, 0x97, 0x2A, 0xE8, 0xE8, 0xC8, 0xC8, 0xC0, 0x20, +0x00, 0x90, 0xF3, 0x6B, 0x22, 0x4C, 0x1E, 0xE0, 0xA5, 0x16, 0x29, 0x07, 0x00, 0xA8, 0x22, 0x54, +0x1E, 0xE0, 0x6B, 0x22, 0x50, 0x1E, 0xE0, 0xA5, 0x16, 0x29, 0x07, 0x00, 0xA8, 0x22, 0x54, 0x1E, +0xE0, 0x6B, 0xA2, 0x00, 0x01, 0xA0, 0x4A, 0x00, 0xB7, 0x24, 0x95, 0x0E, 0xC8, 0xC8, 0xE8, 0xE8, +0xE0, 0x20, 0x01, 0x90, 0xF3, 0x6B, 0xA2, 0x00, 0x01, 0xA0, 0x20, 0x00, 0xB7, 0x24, 0x95, 0x0E, +0xC8, 0xC8, 0xE8, 0xE8, 0xE0, 0x20, 0x01, 0x90, 0xF3, 0x6B, 0xA2, 0x00, 0x01, 0xA0, 0x4A, 0x00, +0xB5, 0x0E, 0x97, 0x24, 0xC8, 0xC8, 0xE8, 0xE8, 0xE0, 0x20, 0x01, 0x90, 0xF3, 0x6B, 0xA2, 0x00, +0x01, 0xA0, 0x20, 0x00, 0xB5, 0x0E, 0x97, 0x24, 0xC8, 0xC8, 0xE8, 0xE8, 0xE0, 0x20, 0x01, 0x90, +0xF3, 0x6B, 0x98, 0xC9, 0x00, 0x00, 0xF0, 0x24, 0x0A, 0x24, 0x0B, 0x30, 0x20, 0x0A, 0x85, 0x42, +0xA2, 0x00, 0x01, 0xB5, 0x10, 0xA8, 0xB5, 0x0E, 0xDA, 0x22, 0x68, 0x1E, 0xE0, 0xFA, 0x95, 0x0E, +0x98, 0x95, 0x10, 0xE8, 0xE8, 0xE8, 0xE8, 0xE0, 0x20, 0x01, 0x90, 0xE7, 0x6B, 0x85, 0x42, 0xA2, +0x00, 0x01, 0xB5, 0x0E, 0xA8, 0xDA, 0x22, 0x68, 0x1E, 0xE0, 0xFA, 0x95, 0x0E, 0xE8, 0xE8, 0xE0, +0x10, 0x01, 0x90, 0xEE, 0x6B, 0x22, 0x5C, 0x1E, 0xE0, 0x22, 0x60, 0x1E, 0xE0, 0xA5, 0x16, 0x29, +0x07, 0x00, 0x22, 0x64, 0x1E, 0xE0, 0x6B, 0xA3, 0x0C, 0x85, 0x2A, 0xA3, 0x0D, 0x85, 0x2B, 0xA0, +0x00, 0x00, 0xA2, 0x00, 0x01, 0xB7, 0x2A, 0x95, 0x2E, 0xE8, 0xE8, 0xC8, 0xC8, 0xC0, 0x08, 0x00, +0x90, 0xF3, 0x6B, 0xA3, 0x0C, 0x85, 0x2A, 0xA3, 0x0D, 0x85, 0x2B, 0xA0, 0x00, 0x00, 0xA2, 0x00, +0x01, 0xB5, 0x2E, 0x97, 0x2A, 0xE8, 0xE8, 0xC8, 0xC8, 0xC0, 0x08, 0x00, 0x90, 0xF3, 0x6B, 0xA2, +0x00, 0x01, 0xA0, 0x6A, 0x00, 0xB5, 0x2E, 0x97, 0x24, 0xC8, 0xC8, 0xE8, 0xE8, 0xE0, 0x08, 0x01, +0x90, 0xF3, 0x6B, 0xA2, 0x00, 0x01, 0xA0, 0x6A, 0x00, 0xB7, 0x24, 0x95, 0x2E, 0xC8, 0xC8, 0xE8, +0xE8, 0xE0, 0x08, 0x01, 0x90, 0xF3, 0x6B, 0x24, 0x0B, 0x10, 0x03, 0x4C, 0x52, 0x1A, 0x0B, 0x7B, +0x18, 0x69, 0x00, 0x01, 0x5B, 0xA2, 0x07, 0x00, 0xB5, 0x2E, 0x20, 0x32, 0x1A, 0xCA, 0x10, 0xF8, +0x2B, 0x6B, 0xDA, 0xA8, 0x8A, 0x0A, 0x0A, 0x48, 0x98, 0x29, 0xFF, 0x00, 0x0A, 0x0A, 0xAA, 0xBF, +0x3D, 0x4C, 0xFE, 0xA8, 0xBF, 0x3B, 0x4C, 0xFE, 0xFA, 0x95, 0x2E, 0xE8, 0xE8, 0x98, 0x95, 0x2E, +0xFA, 0x60, 0x0B, 0x7B, 0x18, 0x69, 0x00, 0x01, 0x5B, 0xA2, 0x07, 0x00, 0xB5, 0x2E, 0x20, 0x66, +0x1A, 0xCA, 0x10, 0xF8, 0x2B, 0x6B, 0xDA, 0xA8, 0x8A, 0x0A, 0x48, 0x98, 0x29, 0xFF, 0x00, 0x0A, +0xAA, 0xBF, 0x3B, 0x50, 0xFE, 0xFA, 0x95, 0x2E, 0xFA, 0x60, 0xC9, 0x00, 0x00, 0xF0, 0x24, 0x0A, +0x24, 0x0B, 0x30, 0x20, 0x0A, 0x85, 0x42, 0xA2, 0x00, 0x01, 0xB5, 0x30, 0xA8, 0xB5, 0x2E, 0xDA, +0x22, 0x68, 0x1E, 0xE0, 0xFA, 0x95, 0x2E, 0x98, 0x95, 0x30, 0xE8, 0xE8, 0xE8, 0xE8, 0xE0, 0x20, +0x01, 0x90, 0xE7, 0x6B, 0x85, 0x42, 0xA2, 0x00, 0x01, 0xB5, 0x2E, 0xA8, 0xDA, 0x22, 0x68, 0x1E, +0xE0, 0xFA, 0x95, 0x2E, 0xE8, 0xE8, 0xE0, 0x10, 0x01, 0x90, 0xEE, 0x6B, 0xEB, 0x85, 0x2A, 0x98, +0xEB, 0x85, 0x2C, 0xA6, 0x42, 0xF0, 0x0A, 0xA5, 0x2C, 0x0A, 0x26, 0x2A, 0x26, 0x2C, 0xCA, 0xD0, +0xF6, 0xA5, 0x2C, 0xEB, 0xA8, 0xA5, 0x2A, 0xEB, 0x6B, 0x3B, 0x0B, 0x5B, 0xA5, 0x0B, 0x87, 0x0F, +0xA0, 0x02, 0x00, 0xA5, 0x0D, 0x97, 0x0F, 0xC8, 0xC8, 0xA5, 0x07, 0x97, 0x0F, 0xC8, 0xC8, 0xA5, +0x09, 0x97, 0x0F, 0x4C, 0xA2, 0xFF, 0x3B, 0x0B, 0x5B, 0xA0, 0x06, 0x00, 0xB7, 0x0B, 0x18, 0x65, +0x09, 0x97, 0x0B, 0x88, 0x88, 0xB7, 0x0B, 0x18, 0x65, 0x07, 0x97, 0x0B, 0x88, 0x88, 0x10, 0xEC, +0x4C, 0xD9, 0xFF, 0x3B, 0x0B, 0x5B, 0xA7, 0x0B, 0x18, 0x65, 0x07, 0x87, 0x0B, 0xA0, 0x02, 0x00, +0xB7, 0x0B, 0x18, 0x65, 0x09, 0x97, 0x0B, 0xC8, 0xC8, 0xB7, 0x0B, 0x38, 0xE5, 0x07, 0x97, 0x0B, +0xC8, 0xC8, 0xB7, 0x0B, 0x38, 0xE5, 0x09, 0x97, 0x0B, 0x4C, 0xD9, 0xFF, 0x3B, 0x0B, 0x5B, 0xA0, +0x02, 0x00, 0xB7, 0x0F, 0xD7, 0x0B, 0x10, 0x02, 0xB7, 0x0B, 0x97, 0x07, 0x88, 0x88, 0x10, 0xF2, +0xA0, 0x06, 0x00, 0xB7, 0x0F, 0xD7, 0x0B, 0x30, 0x02, 0xB7, 0x0B, 0x97, 0x07, 0x88, 0x88, 0xC0, +0x03, 0x00, 0x10, 0xEF, 0xA0, 0x04, 0x00, 0xA7, 0x07, 0xD7, 0x07, 0x10, 0x13, 0x88, 0x88, 0xB7, +0x07, 0xA0, 0x06, 0x00, 0xD7, 0x07, 0x10, 0x08, 0xA9, 0xFF, 0xFF, 0x85, 0x13, 0x4C, 0xA2, 0xFF, +0xA9, 0x00, 0x00, 0xA0, 0x06, 0x00, 0x97, 0x07, 0x88, 0x88, 0x10, 0xFA, 0x80, 0xED, 0x3B, 0x0B, +0x5B, 0xA0, 0x02, 0x00, 0xB7, 0x0F, 0xD7, 0x0B, 0x30, 0x02, 0xB7, 0x0B, 0x97, 0x07, 0x88, 0x88, +0x10, 0xF2, 0xA0, 0x06, 0x00, 0xB7, 0x0F, 0xD7, 0x0B, 0x10, 0x02, 0xB7, 0x0B, 0x97, 0x07, 0x88, +0x88, 0xC0, 0x03, 0x00, 0x10, 0xEF, 0x4C, 0xA2, 0xFF, 0x3B, 0x0B, 0x5B, 0xA7, 0x0B, 0xC7, 0x07, +0x30, 0x1E, 0xA0, 0x04, 0x00, 0xD7, 0x07, 0x10, 0x17, 0x88, 0x88, 0xB7, 0x0B, 0xD7, 0x07, 0x30, +0x0F, 0xA0, 0x06, 0x00, 0xD7, 0x07, 0x10, 0x08, 0xA9, 0xFF, 0xFF, 0x85, 0x0F, 0x4C, 0xD9, 0xFF, +0xA9, 0x00, 0x00, 0x80, 0xF6, 0x3B, 0x0B, 0x5B, 0xA7, 0x0F, 0x87, 0x07, 0xA0, 0x02, 0x00, 0xB7, +0x0F, 0x97, 0x07, 0xB7, 0x0B, 0xA0, 0x06, 0x00, 0x97, 0x07, 0xA7, 0x0B, 0x88, 0x88, 0x97, 0x07, +0x4C, 0xA2, 0xFF, 0x3B, 0x0B, 0x5B, 0xA0, 0x06, 0x00, 0xB7, 0x07, 0xD7, 0x0B, 0xD0, 0x0C, 0x88, +0x88, 0x10, 0xF6, 0xA9, 0xFF, 0xFF, 0x85, 0x0F, 0x4C, 0xD9, 0xFF, 0xA9, 0x00, 0x00, 0x80, 0xF6, +0x3B, 0x0B, 0x5B, 0xA0, 0x00, 0x00, 0xB7, 0x07, 0xC8, 0xC8, 0xC8, 0xC8, 0xD7, 0x07, 0x10, 0x0F, +0x88, 0x88, 0xC0, 0x04, 0x00, 0x90, 0xEF, 0xA9, 0xFF, 0xFF, 0x85, 0x0B, 0x4C, 0xC3, 0xFF, 0xA9, +0x00, 0x00, 0x80, 0xF6, 0x20, 0xB3, 0x0D, 0x7B, 0x18, 0x69, 0x00, 0x01, 0x5B, 0x48, 0x48, 0xA5, +0x00, 0x48, 0xF4, 0xA7, 0x41, 0xA2, 0x0B, 0x09, 0x22, 0x00, 0x00, 0xE1, 0x48, 0x48, 0xA5, 0x02, +0x48, 0xF4, 0xA7, 0x41, 0xA2, 0x0B, 0x09, 0x22, 0x00, 0x00, 0xE1, 0xA3, 0x01, 0x18, 0x63, 0x07, +0x83, 0x01, 0xA3, 0x03, 0x69, 0x00, 0x00, 0x83, 0x03, 0xA3, 0x01, 0x18, 0x63, 0x01, 0xA3, 0x03, +0x63, 0x03, 0xAA, 0xA3, 0x05, 0x38, 0xE9, 0xFF, 0xFF, 0x85, 0x00, 0xA9, 0x00, 0x00, 0xE9, 0xFF, +0x7F, 0x85, 0x02, 0xA3, 0x01, 0x29, 0xFF, 0x7F, 0x18, 0x65, 0x02, 0x85, 0x02, 0x8A, 0x18, 0x65, +0x00, 0x85, 0x00, 0xA5, 0x02, 0x10, 0x0F, 0xA5, 0x00, 0x18, 0x69, 0xFF, 0xFF, 0x85, 0x00, 0xA5, +0x02, 0x69, 0xFF, 0x7F, 0x85, 0x02, 0xA5, 0x00, 0xC9, 0x00, 0x80, 0xD0, 0x03, 0xA9, 0x00, 0x00, +0xFA, 0xFA, 0xFA, 0xFA, 0x83, 0x09, 0x4C, 0x3F, 0xFF, 0x20, 0xB3, 0x0D, 0xA2, 0x00, 0x01, 0xA3, +0x09, 0x95, 0x00, 0xA3, 0x0B, 0x95, 0x02, 0x4C, 0x6B, 0xFF, 0x3B, 0x0B, 0x5B, 0xA0, 0x02, 0x00, +0xB7, 0x0B, 0x18, 0x77, 0x07, 0x97, 0x07, 0x88, 0x88, 0x10, 0xF5, 0x4C, 0xD9, 0xFF, 0x3B, 0x0B, +0x5B, 0xA0, 0x02, 0x00, 0xB7, 0x07, 0x38, 0xF7, 0x0B, 0x97, 0x07, 0x88, 0x88, 0x10, 0xF5, 0x4C, +0xD9, 0xFF, 0x3B, 0x0B, 0x5B, 0xA5, 0x07, 0x87, 0x0B, 0xA0, 0x02, 0x00, 0xA5, 0x09, 0x97, 0x0B, +0x4C, 0xD9, 0xFF, 0x3B, 0x0B, 0x5B, 0xA0, 0x02, 0x00, 0xB7, 0x07, 0xD7, 0x0B, 0xD0, 0x0C, 0x88, +0x88, 0x10, 0xF6, 0xA9, 0xFF, 0xFF, 0x85, 0x0F, 0x4C, 0xD9, 0xFF, 0xA9, 0x00, 0x00, 0x80, 0xF6, +0x20, 0xB3, 0x0D, 0xA3, 0x09, 0xAA, 0xA3, 0x0A, 0x8B, 0x48, 0xAB, 0xAB, 0xBD, 0x00, 0x00, 0x38, +0xA0, 0x08, 0x00, 0xF7, 0x24, 0x9D, 0x00, 0x00, 0xBD, 0x02, 0x00, 0x38, 0xC8, 0xC8, 0xF7, 0x24, +0x9D, 0x02, 0x00, 0xAB, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0xAA, 0xA3, 0x0A, 0x8B, +0x48, 0xAB, 0xAB, 0xBD, 0x00, 0x00, 0x18, 0xA0, 0x08, 0x00, 0x77, 0x24, 0x9D, 0x00, 0x00, 0xBD, +0x02, 0x00, 0x18, 0xC8, 0xC8, 0x77, 0x24, 0x9D, 0x02, 0x00, 0xAB, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, +0x0D, 0x22, 0x3C, 0x1E, 0xE0, 0x48, 0x48, 0xA3, 0x0D, 0x38, 0xE5, 0x14, 0x48, 0xA5, 0x12, 0x48, +0xA2, 0x0B, 0x09, 0x22, 0x00, 0x00, 0xE1, 0xA3, 0x0F, 0x38, 0xE5, 0x16, 0x4A, 0x24, 0x0B, 0x10, +0x01, 0x4A, 0x18, 0x63, 0x01, 0xA8, 0x68, 0x68, 0xA3, 0x0B, 0x38, 0xE5, 0x16, 0x24, 0x0B, 0x30, +0x09, 0x29, 0x01, 0x00, 0x49, 0x01, 0x00, 0x0A, 0x80, 0x06, 0x29, 0x03, 0x00, 0x49, 0x03, 0x00, +0xAA, 0xB7, 0x0E, 0xE0, 0x00, 0x00, 0xF0, 0x05, 0x4A, 0x4A, 0xCA, 0x80, 0xF6, 0x24, 0x0B, 0x10, +0x05, 0x29, 0x03, 0x00, 0x80, 0x03, 0x29, 0x0F, 0x00, 0x83, 0x0D, 0x4C, 0x6B, 0xFF, 0xF4, 0x00, +0x00, 0xF4, 0x00, 0x00, 0x0B, 0x3B, 0x5B, 0xA9, 0x00, 0x00, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +0xA0, 0x04, 0x00, 0xB7, 0x0D, 0x38, 0xE7, 0x0D, 0x10, 0x06, 0x49, 0xFF, 0xFF, 0x1A, 0xE6, 0x05, +0x48, 0xA7, 0x15, 0x10, 0x06, 0x49, 0xFF, 0xFF, 0x1A, 0xE6, 0x05, 0x48, 0xA2, 0x0B, 0x09, 0x22, +0x00, 0x00, 0xE1, 0xA0, 0x04, 0x00, 0xB7, 0x11, 0x38, 0xE7, 0x11, 0x10, 0x06, 0x49, 0xFF, 0xFF, +0x1A, 0xE6, 0x05, 0xF4, 0x00, 0x00, 0x48, 0xA2, 0x0B, 0x0D, 0x22, 0x00, 0x00, 0xE1, 0x68, 0xFA, +0xFA, 0xFA, 0x46, 0x05, 0x90, 0x04, 0x49, 0xFF, 0xFF, 0x1A, 0x87, 0x15, 0xA5, 0x03, 0xD0, 0x37, +0xC6, 0x03, 0xA5, 0x15, 0xA6, 0x17, 0x1A, 0xD0, 0x01, 0xE8, 0x1A, 0xD0, 0x01, 0xE8, 0x85, 0x15, +0x86, 0x17, 0xA5, 0x11, 0xA6, 0x13, 0x1A, 0xD0, 0x01, 0xE8, 0x1A, 0xD0, 0x01, 0xE8, 0x85, 0x11, +0x86, 0x13, 0xA5, 0x0D, 0xA6, 0x0F, 0x1A, 0xD0, 0x01, 0xE8, 0x1A, 0xD0, 0x01, 0xE8, 0x85, 0x0D, +0x86, 0x0F, 0x64, 0x05, 0x4C, 0xE7, 0x1D, 0x2B, 0x68, 0x68, 0x4C, 0xA1, 0xFF, 0xA4, 0xC4, 0x98, +0x25, 0xC8, 0xAA, 0xA5, 0xA0, 0xC4, 0xC6, 0x90, 0x02, 0x25, 0xA2, 0x37, 0x4C, 0x35, 0xCE, 0x85, +0xC0, 0x49, 0xFF, 0xFF, 0x31, 0xBC, 0x85, 0xC2, 0xA5, 0xC0, 0x35, 0xCA, 0x05, 0xC2, 0x91, 0xBC, +0x80, 0x24, 0x98, 0x25, 0xC8, 0xAA, 0xB5, 0xCE, 0x37, 0x4C, 0xC9, 0xFF, 0xFF, 0xF0, 0x13, 0x49, +0xFF, 0xFF, 0x31, 0xBC, 0x85, 0xC2, 0xB7, 0x4C, 0x35, 0xCE, 0x35, 0xCA, 0x05, 0xC2, 0x91, 0xBC, +0x80, 0x04, 0xB5, 0xCA, 0x91, 0xBC, 0xC8, 0xC8, 0xC4, 0xC6, 0x90, 0xD6, 0xD0, 0x1B, 0x98, 0x25, +0xC8, 0xAA, 0xB5, 0xCE, 0x25, 0xA2, 0x37, 0x4C, 0x85, 0xC0, 0x49, 0xFF, 0xFF, 0x31, 0xBC, 0x85, +0xC2, 0xA5, 0xC0, 0x35, 0xCA, 0x05, 0xC2, 0x91, 0xBC, 0x6B, 0xA4, 0xC4, 0x98, 0x25, 0xC8, 0xAA, +0xA5, 0xA0, 0xC4, 0xC6, 0x90, 0x02, 0x25, 0xA2, 0x37, 0x4C, 0x35, 0xCE, 0x35, 0xCA, 0x11, 0xBC, +0x91, 0xBC, 0x80, 0x0E, 0x98, 0x25, 0xC8, 0xAA, 0xB7, 0x4C, 0x35, 0xCE, 0x35, 0xCA, 0x11, 0xBC, +0x91, 0xBC, 0xC8, 0xC8, 0xC4, 0xC6, 0x90, 0xEC, 0xD0, 0x10, 0x98, 0x25, 0xC8, 0xAA, 0xA5, 0xA2, +0x37, 0x4C, 0x35, 0xCE, 0x35, 0xCA, 0x11, 0xBC, 0x91, 0xBC, 0x6B, 0xA4, 0xC4, 0x98, 0x25, 0xC8, +0xAA, 0xA5, 0xA0, 0xC4, 0xC6, 0x90, 0x02, 0x25, 0xA2, 0x37, 0x4C, 0x35, 0xCE, 0x35, 0xCA, 0x51, +0xBC, 0x91, 0xBC, 0x80, 0x0E, 0x98, 0x25, 0xC8, 0xAA, 0xB7, 0x4C, 0x35, 0xCE, 0x35, 0xCA, 0x51, +0xBC, 0x91, 0xBC, 0xC8, 0xC8, 0xC4, 0xC6, 0x90, 0xEC, 0xD0, 0x10, 0x98, 0x25, 0xC8, 0xAA, 0xA5, +0xA2, 0x37, 0x4C, 0x35, 0xCE, 0x35, 0xCA, 0x51, 0xBC, 0x91, 0xBC, 0x6B, 0xA4, 0xC4, 0x98, 0x25, +0xC8, 0xAA, 0xA5, 0xA0, 0xC4, 0xC6, 0x90, 0x02, 0x25, 0xA2, 0x37, 0x4C, 0x35, 0xCE, 0x35, 0xCA, +0x49, 0xFF, 0xFF, 0x31, 0xBC, 0x91, 0xBC, 0x80, 0x11, 0x98, 0x25, 0xC8, 0xAA, 0xB7, 0x4C, 0x35, +0xCE, 0x35, 0xCA, 0x49, 0xFF, 0xFF, 0x31, 0xBC, 0x91, 0xBC, 0xC8, 0xC8, 0xC4, 0xC6, 0x90, 0xE9, +0xD0, 0x13, 0x98, 0x25, 0xC8, 0xAA, 0xA5, 0xA2, 0x37, 0x4C, 0x35, 0xCE, 0x35, 0xCA, 0x49, 0xFF, +0xFF, 0x31, 0xBC, 0x91, 0xBC, 0x6B, 0xA4, 0xC4, 0x98, 0x25, 0xC8, 0xAA, 0xA5, 0xA0, 0xC4, 0xC6, +0x90, 0x02, 0x25, 0xA2, 0x85, 0xC0, 0x49, 0xFF, 0xFF, 0x31, 0xBC, 0x85, 0xC2, 0xA5, 0xC0, 0x35, +0xCA, 0x05, 0xC2, 0x91, 0xBC, 0x80, 0x08, 0x98, 0x25, 0xC8, 0xAA, 0xB5, 0xCA, 0x91, 0xBC, 0xC8, +0xC8, 0xC4, 0xC6, 0x90, 0xF2, 0xD0, 0x15, 0x98, 0x25, 0xC8, 0xAA, 0xA5, 0xA2, 0x49, 0xFF, 0xFF, +0x31, 0xBC, 0x85, 0xC2, 0xA5, 0xA2, 0x35, 0xCA, 0x05, 0xC2, 0x91, 0xBC, 0x6B, 0xA4, 0xC4, 0x98, +0x25, 0xC8, 0xAA, 0xA5, 0xA0, 0xC4, 0xC6, 0x90, 0x02, 0x25, 0xA2, 0x35, 0xCA, 0x11, 0xBC, 0x91, +0xBC, 0x80, 0x0A, 0x98, 0x25, 0xC8, 0xAA, 0xB5, 0xCA, 0x11, 0xBC, 0x91, 0xBC, 0xC8, 0xC8, 0xC4, +0xC6, 0x90, 0xF0, 0xD0, 0x0C, 0x98, 0x25, 0xC8, 0xAA, 0xA5, 0xA2, 0x35, 0xCA, 0x11, 0xBC, 0x91, +0xBC, 0x6B, 0xA4, 0xC4, 0x98, 0x25, 0xC8, 0xAA, 0xA5, 0xA0, 0xC4, 0xC6, 0x90, 0x02, 0x25, 0xA2, +0x35, 0xCA, 0x51, 0xBC, 0x91, 0xBC, 0x80, 0x0A, 0x98, 0x25, 0xC8, 0xAA, 0xB5, 0xCA, 0x51, 0xBC, +0x91, 0xBC, 0xC8, 0xC8, 0xC4, 0xC6, 0x90, 0xF0, 0xD0, 0x0C, 0x98, 0x25, 0xC8, 0xAA, 0xA5, 0xA2, +0x35, 0xCA, 0x51, 0xBC, 0x91, 0xBC, 0x6B, 0xA4, 0xC4, 0x98, 0x25, 0xC8, 0xAA, 0xA5, 0xA0, 0xC4, +0xC6, 0x90, 0x02, 0x25, 0xA2, 0x35, 0xCA, 0x49, 0xFF, 0xFF, 0x31, 0xBC, 0x91, 0xBC, 0x80, 0x0D, +0x98, 0x25, 0xC8, 0xAA, 0xB5, 0xCA, 0x49, 0xFF, 0xFF, 0x31, 0xBC, 0x91, 0xBC, 0xC8, 0xC8, 0xC4, +0xC6, 0x90, 0xED, 0xD0, 0x0F, 0x98, 0x25, 0xC8, 0xAA, 0xA5, 0xA2, 0x35, 0xCA, 0x49, 0xFF, 0xFF, +0x31, 0xBC, 0x91, 0xBC, 0x6B, 0xA5, 0xB6, 0x29, 0x7F, 0x00, 0x0A, 0x0A, 0xAA, 0xA5, 0xA4, 0xD0, +0x22, 0xA0, 0x6A, 0x00, 0xB7, 0x24, 0xC9, 0xFF, 0xFF, 0xD0, 0x18, 0xC8, 0xC8, 0xC0, 0x72, 0x00, +0x90, 0xF2, 0xBF, 0xF4, 0x20, 0xFE, 0x8F, 0x00, 0x1E, 0xE0, 0xBF, 0xF6, 0x20, 0xFE, 0x8F, 0x02, +0x1E, 0xE0, 0x6B, 0xBF, 0xE4, 0x20, 0xFE, 0x8F, 0x00, 0x1E, 0xE0, 0xBF, 0xE6, 0x20, 0xFE, 0x8F, +0x02, 0x1E, 0xE0, 0x6B, 0x5C, 0x7D, 0x1E, 0xFE, 0x5C, 0xEA, 0x1E, 0xFE, 0x5C, 0x2B, 0x1F, 0xFE, +0x5C, 0x6C, 0x1F, 0xFE, 0x5C, 0xB6, 0x1F, 0xFE, 0x5C, 0xFD, 0x1F, 0xFE, 0x5C, 0x32, 0x20, 0xFE, +0x5C, 0x67, 0x20, 0xFE, 0x22, 0x3C, 0x1E, 0xE0, 0x22, 0x44, 0x1E, 0xE0, 0x22, 0x58, 0x1E, 0xE0, +0xA0, 0x48, 0x00, 0xB7, 0x24, 0x85, 0xB6, 0x6B, 0x24, 0x07, 0x30, 0x39, 0xA9, 0x02, 0x00, 0x85, +0xC8, 0xA5, 0xA8, 0x38, 0xE5, 0x16, 0xA8, 0x29, 0x03, 0x00, 0x0A, 0x0A, 0xAA, 0x98, 0x4A, 0x29, +0xFE, 0xFF, 0x85, 0xC4, 0xBF, 0x8B, 0x21, 0xFE, 0x85, 0xA0, 0xA5, 0xAC, 0x38, 0xE5, 0x16, 0x3A, +0xA8, 0x29, 0x03, 0x00, 0x0A, 0x0A, 0xAA, 0x98, 0x4A, 0x29, 0xFE, 0xFF, 0x85, 0xC6, 0xBF, 0x9D, +0x21, 0xFE, 0x85, 0xA2, 0x6B, 0x64, 0xC8, 0xA5, 0xA8, 0x38, 0xE5, 0x16, 0xA8, 0x29, 0x07, 0x00, +0x0A, 0xAA, 0x98, 0x4A, 0x4A, 0x29, 0xFE, 0xFF, 0x85, 0xC4, 0xBF, 0x8B, 0x21, 0xFE, 0x85, 0xA0, +0xA5, 0xAC, 0x38, 0xE5, 0x16, 0x3A, 0xA8, 0x29, 0x07, 0x00, 0x0A, 0xAA, 0x98, 0x4A, 0x4A, 0x29, +0xFE, 0xFF, 0x85, 0xC6, 0xBF, 0x9B, 0x21, 0xFE, 0x85, 0xA2, 0x6B, 0xFF, 0xFF, 0x3F, 0xFF, 0x0F, +0xFF, 0x03, 0xFF, 0x00, 0xFF, 0x00, 0x3F, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0xFC, +0x00, 0xFF, 0x00, 0xFF, 0xC0, 0xFF, 0xF0, 0xFF, 0xFC, 0xFF, 0xFF, 0x20, 0xC0, 0x23, 0x22, 0x3C, +0x1E, 0xE0, 0x22, 0xA0, 0x1E, 0xE0, 0x24, 0x39, 0x10, 0x0C, 0x20, 0xC9, 0x45, 0x20, 0x96, 0x43, +0x22, 0x94, 0x1E, 0xE0, 0x80, 0x04, 0x22, 0x90, 0x1E, 0xE0, 0xB0, 0x20, 0x24, 0x39, 0x70, 0x03, +0x20, 0x83, 0x3A, 0xA5, 0x38, 0x0A, 0xAA, 0xFC, 0xFC, 0x21, 0x85, 0xB6, 0x22, 0x58, 0x1E, 0xE0, +0x22, 0x98, 0x1E, 0xE0, 0x22, 0x39, 0x22, 0xFE, 0x22, 0x9C, 0x1E, 0xE0, 0x22, 0xA8, 0x1E, 0xE0, +0x24, 0x39, 0x10, 0x03, 0x20, 0xD4, 0x45, 0xA9, 0x00, 0x00, 0x18, 0x6B, 0x06, 0x22, 0x06, 0x22, +0x10, 0x22, 0x18, 0x22, 0x2B, 0x22, 0x22, 0x44, 0x1E, 0xE0, 0xA0, 0x48, 0x00, 0xB7, 0x24, 0x60, +0x22, 0x48, 0x1E, 0xE0, 0xA9, 0x00, 0x00, 0x60, 0xA9, 0xFF, 0xFF, 0xA2, 0x00, 0x01, 0x95, 0x0E, +0xE8, 0xE8, 0xE0, 0x20, 0x01, 0x90, 0xF7, 0xA9, 0x02, 0x00, 0x60, 0xA5, 0x16, 0x29, 0x07, 0x00, +0xA8, 0x22, 0x54, 0x1E, 0xE0, 0xA9, 0x00, 0x00, 0x60, 0x24, 0x39, 0x30, 0x06, 0x70, 0x08, 0x5C, +0x78, 0x1E, 0xE0, 0x5C, 0x6B, 0x43, 0xFE, 0x5C, 0xC4, 0x1F, 0xE0, 0xA2, 0x00, 0x00, 0x80, 0x0D, +0xA2, 0x01, 0x00, 0x80, 0x08, 0xA2, 0x02, 0x00, 0x80, 0x03, 0xA2, 0x03, 0x00, 0x20, 0xB3, 0x0D, +0x86, 0x38, 0x20, 0x8C, 0x22, 0xA6, 0x38, 0x22, 0xA1, 0x22, 0xFE, 0xAA, 0x4C, 0x6E, 0xFF, 0x20, +0xB3, 0x0D, 0x22, 0x40, 0x1E, 0xE0, 0xA3, 0x0D, 0x83, 0x09, 0xA3, 0x0F, 0x83, 0x0B, 0x20, 0x8C, +0x22, 0xA2, 0x04, 0x00, 0x22, 0xA1, 0x22, 0xFE, 0xAA, 0x4C, 0x84, 0xFF, 0xA3, 0x0B, 0x85, 0x2A, +0xA3, 0x0C, 0x85, 0x2B, 0xA0, 0x06, 0x00, 0xBB, 0xB7, 0x2A, 0x95, 0xA6, 0x88, 0x88, 0x10, 0xF7, +0x60, 0x86, 0x38, 0x20, 0xC5, 0x0D, 0xB0, 0x04, 0x5C, 0x0C, 0x1E, 0xE0, 0x8B, 0xA0, 0x08, 0x00, +0xB7, 0x2A, 0x48, 0xC8, 0xB7, 0x2A, 0x83, 0x02, 0x6B, 0xA9, 0x30, 0x00, 0x85, 0x3A, 0x22, 0xF8, +0x1E, 0xE0, 0x90, 0x01, 0x6B, 0xA5, 0x38, 0xD0, 0x0C, 0x20, 0x21, 0x54, 0x90, 0x12, 0x22, 0x88, +0x1F, 0xE0, 0x90, 0x0C, 0x6B, 0x4C, 0xAB, 0x21, 0xA9, 0x30, 0x00, 0x85, 0x3A, 0x4C, 0xAB, 0x21, +0x20, 0xCE, 0x23, 0x20, 0xC0, 0x23, 0xA2, 0x06, 0x00, 0xB5, 0xA6, 0x95, 0xAE, 0xCA, 0xCA, 0x10, +0xF8, 0x22, 0x6C, 0x1E, 0xE0, 0x22, 0xA0, 0x1E, 0xE0, 0x22, 0x90, 0x1E, 0xE0, 0x90, 0x05, 0x22, +0xA8, 0x1E, 0xE0, 0x6B, 0x22, 0x98, 0x1E, 0xE0, 0xA2, 0x02, 0x00, 0xB5, 0xB2, 0x38, 0xF5, 0xAE, +0x4A, 0xD5, 0xB8, 0x90, 0x06, 0xCA, 0xCA, 0x10, 0xF2, 0x80, 0x06, 0x22, 0x74, 0x1E, 0xE0, 0x80, +0x51, 0xA5, 0xA6, 0x18, 0x65, 0xB8, 0x85, 0xAA, 0x22, 0x74, 0x1E, 0xE0, 0x20, 0x7F, 0x23, 0xA5, +0xAC, 0x38, 0xE5, 0xBA, 0x85, 0xA8, 0xA5, 0xA6, 0x18, 0x65, 0xB8, 0x85, 0xA6, 0x22, 0x74, 0x1E, +0xE0, 0x20, 0x7F, 0x23, 0xA5, 0xAA, 0x38, 0xE5, 0xB8, 0x85, 0xA6, 0xA5, 0xAC, 0x38, 0xE5, 0xBA, +0x85, 0xAC, 0x22, 0x74, 0x1E, 0xE0, 0x20, 0x7F, 0x23, 0xA5, 0xA8, 0x18, 0x65, 0xBA, 0x85, 0xAC, +0xA5, 0xA6, 0x18, 0x65, 0xB8, 0x85, 0xA6, 0xA5, 0xAA, 0x38, 0xE5, 0xB8, 0x85, 0xAA, 0x22, 0x74, +0x1E, 0xE0, 0x22, 0x9C, 0x1E, 0xE0, 0x22, 0xA8, 0x1E, 0xE0, 0xA9, 0x00, 0x00, 0x18, 0x6B, 0xA2, +0x06, 0x00, 0xB5, 0xAE, 0x95, 0xA6, 0xCA, 0xCA, 0x10, 0xF8, 0x60, 0x22, 0x90, 0x1E, 0xE0, 0x20, +0x83, 0x3A, 0x90, 0x01, 0x6B, 0x8B, 0x22, 0xC0, 0x1E, 0xE0, 0x22, 0xE8, 0x1E, 0xE0, 0x22, 0x70, +0x1E, 0xE0, 0x20, 0xE6, 0x23, 0x20, 0x0E, 0x24, 0x22, 0xCC, 0x1E, 0xE0, 0x22, 0x00, 0x1E, 0xE0, +0xA5, 0x40, 0x1A, 0xC5, 0xAA, 0x10, 0x07, 0x85, 0x40, 0x20, 0x41, 0x24, 0x80, 0xE7, 0xAB, 0x6B, +0xA0, 0x72, 0x00, 0xB7, 0x24, 0x30, 0x01, 0x60, 0x68, 0x18, 0xA9, 0x00, 0x00, 0x6B, 0xA0, 0x44, +0x00, 0xB7, 0x24, 0xF0, 0x0B, 0x85, 0xB8, 0xC8, 0xC8, 0xB7, 0x24, 0xF0, 0x03, 0x85, 0xBA, 0x60, +0x68, 0x18, 0xA9, 0x00, 0x00, 0x6B, 0xA5, 0xA6, 0x85, 0x40, 0x38, 0xE5, 0x14, 0x48, 0x48, 0x48, +0xD4, 0x12, 0xA2, 0x0B, 0x09, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x18, 0x65, 0x0E, 0x85, 0xBC, 0x68, +0x65, 0x10, 0x29, 0xFF, 0x00, 0x85, 0xBE, 0x8B, 0xA5, 0xBD, 0x83, 0x00, 0xAB, 0x60, 0xA5, 0x40, +0x29, 0x07, 0x00, 0x0A, 0x24, 0x0B, 0x30, 0x01, 0x0A, 0x18, 0x69, 0x00, 0x01, 0xAA, 0xB5, 0x0E, +0x85, 0xCA, 0xB5, 0x10, 0x85, 0xCC, 0xB5, 0x2E, 0x85, 0xCE, 0xB5, 0x30, 0x85, 0xD0, 0xA5, 0xB6, +0x10, 0x0E, 0xA5, 0xCA, 0x49, 0xFF, 0xFF, 0x85, 0xCA, 0xA5, 0xCC, 0x49, 0xFF, 0xFF, 0x85, 0xCC, +0x60, 0xA5, 0xBC, 0x18, 0x65, 0x12, 0x85, 0xBC, 0xB0, 0x01, 0x60, 0xE6, 0xBE, 0x8B, 0xA5, 0xBD, +0x83, 0x00, 0xAB, 0x60, 0x20, 0xB3, 0x0D, 0x20, 0x89, 0x26, 0xA3, 0x09, 0x85, 0xAA, 0x85, 0xB2, +0xA3, 0x0B, 0x85, 0xAC, 0x85, 0xB4, 0x20, 0x9B, 0x26, 0x22, 0x8B, 0x24, 0xFE, 0xAA, 0x4C, 0x6E, +0xFF, 0x20, 0xB3, 0x0D, 0x20, 0x89, 0x26, 0xA5, 0xA6, 0x18, 0x63, 0x09, 0x85, 0xAA, 0x85, 0xB2, +0xA5, 0xA8, 0x18, 0x63, 0x0B, 0x85, 0xAC, 0x85, 0xB4, 0x80, 0xDB, 0x20, 0xC5, 0x0D, 0xB0, 0x04, +0x5C, 0x08, 0x1E, 0xE0, 0x8B, 0xA0, 0x04, 0x00, 0xB7, 0x2A, 0x48, 0xC8, 0xB7, 0x2A, 0x83, 0x02, +0x6B, 0xA9, 0x20, 0x00, 0x22, 0xF8, 0x1E, 0xE0, 0x90, 0x01, 0x6B, 0x22, 0xFC, 0x1E, 0xE0, 0x90, +0x01, 0x6B, 0x20, 0x21, 0x54, 0x90, 0x07, 0x22, 0x80, 0x1F, 0xE0, 0x90, 0x01, 0x6B, 0x20, 0xC0, +0x23, 0x20, 0xCE, 0x23, 0x8B, 0x22, 0x6C, 0x1E, 0xE0, 0x22, 0xA0, 0x1E, 0xE0, 0xA5, 0xAA, 0xC5, +0xA6, 0x10, 0x06, 0xA4, 0xA6, 0x84, 0xAA, 0x85, 0xA6, 0xA5, 0xAC, 0xC5, 0xA8, 0x10, 0x06, 0xA4, +0xA8, 0x85, 0xA8, 0x84, 0xAC, 0xA5, 0xAA, 0x18, 0x65, 0xB8, 0x85, 0xAA, 0xA5, 0xAC, 0x18, 0x65, +0xBA, 0x85, 0xAC, 0x22, 0x90, 0x1E, 0xE0, 0x90, 0x03, 0x4C, 0x7F, 0x26, 0x22, 0x98, 0x1E, 0xE0, +0x20, 0x83, 0x3A, 0xA5, 0xB4, 0xC5, 0xB0, 0xF0, 0x18, 0xA5, 0xAE, 0xC5, 0xB2, 0x30, 0x19, 0xF0, +0x10, 0xA4, 0xB2, 0x84, 0xAE, 0x85, 0xB2, 0xA5, 0xB0, 0xA4, 0xB4, 0x84, 0xB0, 0x85, 0xB4, 0x80, +0x07, 0x22, 0x78, 0x1E, 0xE0, 0x4C, 0x7B, 0x26, 0xA9, 0x00, 0x80, 0x85, 0xD6, 0x85, 0xDA, 0xA5, +0xB0, 0x85, 0xD8, 0x18, 0x65, 0xBA, 0x85, 0xDC, 0x48, 0x48, 0xA5, 0xB4, 0x38, 0xE5, 0xB0, 0x48, +0xA5, 0xB2, 0x38, 0xE5, 0xAE, 0x48, 0xA2, 0x0B, 0x0E, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x85, 0xD2, +0x68, 0x85, 0xD4, 0x48, 0x48, 0xA5, 0xB8, 0x48, 0xA9, 0x00, 0x00, 0x48, 0xA5, 0xD4, 0x48, 0xA5, +0xD2, 0x48, 0xA2, 0x0B, 0x0F, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x85, 0xE2, 0x68, 0x85, 0xE4, 0xA5, +0xD4, 0x0A, 0xA5, 0xD4, 0x6A, 0x85, 0xE0, 0xA5, 0xD2, 0x6A, 0x85, 0xDE, 0xA2, 0x04, 0x00, 0xB5, +0xD6, 0x18, 0x65, 0xDE, 0x95, 0xD6, 0xB5, 0xD8, 0x65, 0xE0, 0x95, 0xD8, 0xCA, 0xCA, 0xCA, 0xCA, +0x10, 0xED, 0x24, 0xD4, 0x30, 0x24, 0xA5, 0xD6, 0x38, 0xE5, 0xE2, 0x85, 0xD6, 0xA5, 0xD8, 0xE5, +0xE4, 0x85, 0xD8, 0xA5, 0xD4, 0xF0, 0x04, 0xC6, 0xDC, 0x80, 0x36, 0xA5, 0xD6, 0x18, 0x65, 0xD2, +0x85, 0xD6, 0xA5, 0xD8, 0x65, 0xD4, 0x85, 0xD8, 0x80, 0x27, 0xA5, 0xDA, 0x38, 0xE5, 0xE2, 0x85, +0xDA, 0xA5, 0xDC, 0xE5, 0xE4, 0x85, 0xDC, 0xA5, 0xD4, 0xC9, 0xFF, 0xFF, 0xF0, 0x04, 0xE6, 0xD8, +0x80, 0x0F, 0xA5, 0xDA, 0x18, 0x65, 0xD2, 0x85, 0xDA, 0xA5, 0xDC, 0x65, 0xD4, 0x85, 0xDC, 0x80, +0x00, 0x22, 0xC0, 0x1E, 0xE0, 0x22, 0xE8, 0x1E, 0xE0, 0xA5, 0xA6, 0xC5, 0xAE, 0xF0, 0x2C, 0x38, +0xE5, 0xAE, 0x48, 0x48, 0x48, 0xF4, 0x00, 0x00, 0xD4, 0xD4, 0xD4, 0xD2, 0xA2, 0x0B, 0x0F, 0x22, +0x00, 0x00, 0xE1, 0xFA, 0x7A, 0x8A, 0x18, 0x65, 0xD6, 0x85, 0xD6, 0x98, 0x65, 0xD8, 0x85, 0xD8, +0x8A, 0x18, 0x65, 0xDA, 0x85, 0xDA, 0x98, 0x65, 0xDC, 0x85, 0xDC, 0x20, 0xE6, 0x23, 0xA5, 0xA8, +0x85, 0xB0, 0xA5, 0xAA, 0x85, 0xB2, 0xA5, 0xAC, 0x85, 0xB4, 0x8A, 0xA5, 0xDC, 0xC5, 0xB4, 0x30, +0x02, 0xA5, 0xB4, 0x85, 0xAC, 0xA5, 0xD8, 0xC5, 0xB0, 0x10, 0x02, 0xA5, 0xB0, 0x85, 0xA8, 0xC5, +0xAC, 0x10, 0x0F, 0x22, 0x70, 0x1E, 0xE0, 0x20, 0x0E, 0x24, 0x22, 0xCC, 0x1E, 0xE0, 0x22, 0x00, +0x1E, 0xE0, 0xA5, 0x40, 0x1A, 0xC5, 0xAA, 0x10, 0x22, 0x85, 0x40, 0xA5, 0xD6, 0x18, 0x65, 0xD2, +0x85, 0xD6, 0xA5, 0xD8, 0x65, 0xD4, 0x85, 0xD8, 0xA5, 0xDA, 0x18, 0x65, 0xD2, 0x85, 0xDA, 0xA5, +0xDC, 0x65, 0xD4, 0x85, 0xDC, 0x20, 0x41, 0x24, 0x4C, 0x2B, 0x26, 0x22, 0x9C, 0x1E, 0xE0, 0x22, +0xA8, 0x1E, 0xE0, 0xAB, 0xA9, 0x00, 0x00, 0x18, 0x6B, 0xA0, 0x40, 0x00, 0xB7, 0x24, 0x85, 0xA6, +0x85, 0xAE, 0xC8, 0xC8, 0xB7, 0x24, 0x85, 0xA8, 0x85, 0xB0, 0x60, 0xA0, 0x40, 0x00, 0xA5, 0xAA, +0x97, 0x24, 0xC8, 0xC8, 0xA5, 0xAC, 0x97, 0x24, 0x60, 0x64, 0xC2, 0xA4, 0xB6, 0x84, 0xBC, 0xA6, +0xAA, 0x86, 0xB0, 0xC0, 0x00, 0x00, 0x30, 0x10, 0xB7, 0x4C, 0xC9, 0xFF, 0xFF, 0xF0, 0x32, 0x85, +0xA6, 0x49, 0xFF, 0xFF, 0x31, 0xBE, 0x85, 0xA8, 0xA4, 0xB0, 0xB7, 0xB2, 0x85, 0xC6, 0xC8, 0xC8, +0x84, 0xB0, 0x22, 0x69, 0x39, 0xFE, 0x85, 0xC4, 0xA5, 0xC6, 0x22, 0xDE, 0x38, 0xFE, 0x05, 0xC2, +0x50, 0x03, 0x49, 0xFF, 0xFF, 0x25, 0xA6, 0x05, 0xA8, 0xA4, 0xBC, 0x30, 0x25, 0x91, 0xBE, 0x80, +0x21, 0xA4, 0xB0, 0xB7, 0xB2, 0x85, 0xC6, 0xC8, 0xC8, 0x84, 0xB0, 0x22, 0x69, 0x39, 0xFE, 0x85, +0xC4, 0xA5, 0xC6, 0x22, 0xDE, 0x38, 0xFE, 0x05, 0xC2, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0xA4, 0xBC, +0x91, 0xBE, 0xA5, 0xC4, 0x85, 0xC2, 0xC8, 0xC8, 0x84, 0xBC, 0xC4, 0xB8, 0x90, 0x9A, 0xF0, 0x98, +0x6B, 0x64, 0xC2, 0xA4, 0xB6, 0x84, 0xBC, 0xA6, 0xAA, 0x86, 0xB0, 0xC0, 0x00, 0x00, 0x30, 0x09, +0xB7, 0x4C, 0xC9, 0xFF, 0xFF, 0xF0, 0x2B, 0x85, 0xA6, 0xA4, 0xB0, 0xB7, 0xB2, 0x85, 0xC6, 0xC8, +0xC8, 0x84, 0xB0, 0x22, 0x69, 0x39, 0xFE, 0x85, 0xC4, 0xA5, 0xC6, 0x22, 0xDE, 0x38, 0xFE, 0x05, +0xC2, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0x25, 0xA6, 0xA4, 0xBC, 0x30, 0x29, 0x11, 0xBE, 0x91, 0xBE, +0x80, 0x23, 0xA4, 0xB0, 0xB7, 0xB2, 0x85, 0xC6, 0xC8, 0xC8, 0x84, 0xB0, 0x22, 0x69, 0x39, 0xFE, +0x85, 0xC4, 0xA5, 0xC6, 0x22, 0xDE, 0x38, 0xFE, 0x05, 0xC2, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0xA4, +0xBC, 0x11, 0xBE, 0x91, 0xBE, 0xA5, 0xC4, 0x85, 0xC2, 0xC8, 0xC8, 0x84, 0xBC, 0xC4, 0xB8, 0x90, +0x9F, 0xF0, 0x9D, 0x6B, 0x64, 0xC2, 0xA4, 0xB6, 0x84, 0xBC, 0xA6, 0xAA, 0x86, 0xB0, 0xC0, 0x00, +0x00, 0x30, 0x09, 0xB7, 0x4C, 0xC9, 0xFF, 0xFF, 0xF0, 0x2B, 0x85, 0xA6, 0xA4, 0xB0, 0xB7, 0xB2, +0x85, 0xC6, 0xC8, 0xC8, 0x84, 0xB0, 0x22, 0x69, 0x39, 0xFE, 0x85, 0xC4, 0xA5, 0xC6, 0x22, 0xDE, +0x38, 0xFE, 0x05, 0xC2, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0x25, 0xA6, 0xA4, 0xBC, 0x30, 0x29, 0x51, +0xBE, 0x91, 0xBE, 0x80, 0x23, 0xA4, 0xB0, 0xB7, 0xB2, 0x85, 0xC6, 0xC8, 0xC8, 0x84, 0xB0, 0x22, +0x69, 0x39, 0xFE, 0x85, 0xC4, 0xA5, 0xC6, 0x22, 0xDE, 0x38, 0xFE, 0x05, 0xC2, 0x50, 0x03, 0x49, +0xFF, 0xFF, 0xA4, 0xBC, 0x51, 0xBE, 0x91, 0xBE, 0xA5, 0xC4, 0x85, 0xC2, 0xC8, 0xC8, 0x84, 0xBC, +0xC4, 0xB8, 0x90, 0x9F, 0xF0, 0x9D, 0x6B, 0x64, 0xC2, 0xA4, 0xB6, 0x84, 0xBC, 0xA6, 0xAA, 0x86, +0xB0, 0xC0, 0x00, 0x00, 0x30, 0x09, 0xB7, 0x4C, 0xC9, 0xFF, 0xFF, 0xF0, 0x2E, 0x85, 0xA6, 0xA4, +0xB0, 0xB7, 0xB2, 0x85, 0xC6, 0xC8, 0xC8, 0x84, 0xB0, 0x22, 0x69, 0x39, 0xFE, 0x85, 0xC4, 0xA5, +0xC6, 0x22, 0xDE, 0x38, 0xFE, 0x05, 0xC2, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0x25, 0xA6, 0xA4, 0xBC, +0x30, 0x2F, 0x49, 0xFF, 0xFF, 0x31, 0xBE, 0x91, 0xBE, 0x80, 0x26, 0xA4, 0xB0, 0xB7, 0xB2, 0x85, +0xC6, 0xC8, 0xC8, 0x84, 0xB0, 0x22, 0x69, 0x39, 0xFE, 0x85, 0xC4, 0xA5, 0xC6, 0x22, 0xDE, 0x38, +0xFE, 0x05, 0xC2, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0xA4, 0xBC, 0x49, 0xFF, 0xFF, 0x31, 0xBE, 0x91, +0xBE, 0xA5, 0xC4, 0x85, 0xC2, 0xC8, 0xC8, 0x84, 0xBC, 0xC4, 0xB8, 0x90, 0x99, 0xF0, 0x97, 0x6B, +0xA4, 0xAC, 0xB7, 0xB2, 0x85, 0xC6, 0x88, 0x88, 0x84, 0xB0, 0xA4, 0xB8, 0x84, 0xBC, 0xB7, 0x4C, +0xC9, 0xFF, 0xFF, 0xF0, 0x30, 0x85, 0xA6, 0x49, 0xFF, 0xFF, 0x31, 0xBE, 0x85, 0xA8, 0xA5, 0xC6, +0x22, 0xDE, 0x38, 0xFE, 0x85, 0xC2, 0xA4, 0xB0, 0xB7, 0xB2, 0x85, 0xC6, 0x88, 0x88, 0x84, 0xB0, +0x22, 0x69, 0x39, 0xFE, 0x05, 0xC2, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0x25, 0xA6, 0x05, 0xA8, 0xA4, +0xBC, 0x91, 0xBE, 0x80, 0x21, 0xA5, 0xC6, 0x22, 0xDE, 0x38, 0xFE, 0x85, 0xC2, 0xA4, 0xB0, 0xB7, +0xB2, 0x85, 0xC6, 0x88, 0x88, 0x84, 0xB0, 0x22, 0x69, 0x39, 0xFE, 0x05, 0xC2, 0x50, 0x03, 0x49, +0xFF, 0xFF, 0xA4, 0xBC, 0x91, 0xBE, 0x88, 0x88, 0x30, 0x06, 0x84, 0xBC, 0xC4, 0xB6, 0xB0, 0x9E, +0x6B, 0xA4, 0xAC, 0xB7, 0xB2, 0x85, 0xC6, 0x88, 0x88, 0x84, 0xB0, 0xA4, 0xB8, 0x84, 0xBC, 0xB7, +0x4C, 0xC9, 0xFF, 0xFF, 0xF0, 0x29, 0x85, 0xA6, 0xA5, 0xC6, 0x22, 0xDE, 0x38, 0xFE, 0x85, 0xC2, +0xA4, 0xB0, 0xB7, 0xB2, 0x85, 0xC6, 0x88, 0x88, 0x84, 0xB0, 0x22, 0x69, 0x39, 0xFE, 0x05, 0xC2, +0x50, 0x03, 0x49, 0xFF, 0xFF, 0x25, 0xA6, 0xA4, 0xBC, 0x11, 0xBE, 0x91, 0xBE, 0x80, 0x23, 0xA5, +0xC6, 0x22, 0xDE, 0x38, 0xFE, 0x85, 0xC2, 0xA4, 0xB0, 0xB7, 0xB2, 0x85, 0xC6, 0x88, 0x88, 0x84, +0xB0, 0x22, 0x69, 0x39, 0xFE, 0x05, 0xC2, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0xA4, 0xBC, 0x11, 0xBE, +0x91, 0xBE, 0x88, 0x88, 0x30, 0x06, 0x84, 0xBC, 0xC4, 0xB6, 0xB0, 0xA3, 0x6B, 0xA4, 0xAC, 0xB7, +0xB2, 0x85, 0xC6, 0x88, 0x88, 0x84, 0xB0, 0xA4, 0xB8, 0x84, 0xBC, 0xB7, 0x4C, 0xC9, 0xFF, 0xFF, +0xF0, 0x29, 0x85, 0xA6, 0xA5, 0xC6, 0x22, 0xDE, 0x38, 0xFE, 0x85, 0xC2, 0xA4, 0xB0, 0xB7, 0xB2, +0x85, 0xC6, 0x88, 0x88, 0x84, 0xB0, 0x22, 0x69, 0x39, 0xFE, 0x05, 0xC2, 0x50, 0x03, 0x49, 0xFF, +0xFF, 0x25, 0xA6, 0xA4, 0xBC, 0x51, 0xBE, 0x91, 0xBE, 0x80, 0x23, 0xA5, 0xC6, 0x22, 0xDE, 0x38, +0xFE, 0x85, 0xC2, 0xA4, 0xB0, 0xB7, 0xB2, 0x85, 0xC6, 0x88, 0x88, 0x84, 0xB0, 0x22, 0x69, 0x39, +0xFE, 0x05, 0xC2, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0xA4, 0xBC, 0x51, 0xBE, 0x91, 0xBE, 0x88, 0x88, +0x30, 0x06, 0x84, 0xBC, 0xC4, 0xB6, 0xB0, 0xA3, 0x6B, 0xA4, 0xAC, 0xB7, 0xB2, 0x85, 0xC6, 0x88, +0x88, 0x84, 0xB0, 0xA4, 0xB8, 0x84, 0xBC, 0xB7, 0x4C, 0xC9, 0xFF, 0xFF, 0xF0, 0x2C, 0x85, 0xA6, +0xA5, 0xC6, 0x22, 0xDE, 0x38, 0xFE, 0x85, 0xC2, 0xA4, 0xB0, 0xB7, 0xB2, 0x85, 0xC6, 0x88, 0x88, +0x84, 0xB0, 0x22, 0x69, 0x39, 0xFE, 0x05, 0xC2, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0x25, 0xA6, 0xA4, +0xBC, 0x49, 0xFF, 0xFF, 0x31, 0xBE, 0x91, 0xBE, 0x80, 0x26, 0xA5, 0xC6, 0x22, 0xDE, 0x38, 0xFE, +0x85, 0xC2, 0xA4, 0xB0, 0xB7, 0xB2, 0x85, 0xC6, 0x88, 0x88, 0x84, 0xB0, 0x22, 0x69, 0x39, 0xFE, +0x05, 0xC2, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0xA4, 0xBC, 0x49, 0xFF, 0xFF, 0x31, 0xBE, 0x91, 0xBE, +0x88, 0x88, 0x30, 0x06, 0x84, 0xBC, 0xC4, 0xB6, 0xB0, 0x9D, 0x6B, 0xA4, 0xB6, 0x84, 0xBC, 0xA6, +0xAA, 0x86, 0xB0, 0xC0, 0x00, 0x00, 0x30, 0x10, 0xB7, 0x4C, 0xC9, 0xFF, 0xFF, 0xF0, 0x22, 0x85, +0xA6, 0x49, 0xFF, 0xFF, 0x31, 0xBE, 0x85, 0xA8, 0xA4, 0xB0, 0xB7, 0xB2, 0xC8, 0xC8, 0x84, 0xB0, +0x50, 0x03, 0x49, 0xFF, 0xFF, 0x25, 0xA6, 0x05, 0xA8, 0xA4, 0xBC, 0x30, 0x15, 0x91, 0xBE, 0x80, +0x11, 0xA4, 0xB0, 0xB7, 0xB2, 0xC8, 0xC8, 0x84, 0xB0, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0xA4, 0xBC, +0x91, 0xBE, 0xC8, 0xC8, 0x84, 0xBC, 0xC4, 0xB8, 0x90, 0xBE, 0xF0, 0xBC, 0x6B, 0xA4, 0xB6, 0x84, +0xBC, 0xA6, 0xAA, 0x86, 0xB0, 0xC0, 0x00, 0x00, 0x30, 0x09, 0xB7, 0x4C, 0xC9, 0xFF, 0xFF, 0xF0, +0x1B, 0x85, 0xA6, 0xA4, 0xB0, 0xB7, 0xB2, 0xC8, 0xC8, 0x84, 0xB0, 0x50, 0x03, 0x49, 0xFF, 0xFF, +0x25, 0xA6, 0xA4, 0xBC, 0x30, 0x19, 0x11, 0xBE, 0x91, 0xBE, 0x80, 0x13, 0xA4, 0xB0, 0xB7, 0xB2, +0xC8, 0xC8, 0x84, 0xB0, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0xA4, 0xBC, 0x11, 0xBE, 0x91, 0xBE, 0xC8, +0xC8, 0x84, 0xBC, 0xC4, 0xB8, 0x90, 0xC3, 0xF0, 0xC1, 0x6B, 0xA4, 0xB6, 0x84, 0xBC, 0xA6, 0xAA, +0x86, 0xB0, 0xC0, 0x00, 0x00, 0x30, 0x09, 0xB7, 0x4C, 0xC9, 0xFF, 0xFF, 0xF0, 0x1B, 0x85, 0xA6, +0xA4, 0xB0, 0xB7, 0xB2, 0xC8, 0xC8, 0x84, 0xB0, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0x25, 0xA6, 0xA4, +0xBC, 0x30, 0x19, 0x51, 0xBE, 0x91, 0xBE, 0x80, 0x13, 0xA4, 0xB0, 0xB7, 0xB2, 0xC8, 0xC8, 0x84, +0xB0, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0xA4, 0xBC, 0x51, 0xBE, 0x91, 0xBE, 0xC8, 0xC8, 0x84, 0xBC, +0xC4, 0xB8, 0x90, 0xC3, 0xF0, 0xC1, 0x6B, 0xA4, 0xB6, 0x84, 0xBC, 0xA6, 0xAA, 0x86, 0xB0, 0xC0, +0x00, 0x00, 0x30, 0x09, 0xB7, 0x4C, 0xC9, 0xFF, 0xFF, 0xF0, 0x1E, 0x85, 0xA6, 0xA4, 0xB0, 0xB7, +0xB2, 0xC8, 0xC8, 0x84, 0xB0, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0x25, 0xA6, 0xA4, 0xBC, 0x30, 0x1F, +0x49, 0xFF, 0xFF, 0x31, 0xBE, 0x91, 0xBE, 0x80, 0x16, 0xA4, 0xB0, 0xB7, 0xB2, 0xC8, 0xC8, 0x84, +0xB0, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0xA4, 0xBC, 0x49, 0xFF, 0xFF, 0x31, 0xBE, 0x91, 0xBE, 0xC8, +0xC8, 0x84, 0xBC, 0xC4, 0xB8, 0x90, 0xBD, 0xF0, 0xBB, 0x6B, 0xA4, 0xAC, 0x84, 0xB0, 0xA4, 0xB8, +0x84, 0xBC, 0xB7, 0x4C, 0xC9, 0xFF, 0xFF, 0xF0, 0x20, 0x85, 0xA6, 0x49, 0xFF, 0xFF, 0x31, 0xBE, +0x85, 0xA8, 0xA4, 0xB0, 0xB7, 0xB2, 0x88, 0x88, 0x84, 0xB0, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0x25, +0xA6, 0x05, 0xA8, 0xA4, 0xBC, 0x91, 0xBE, 0x80, 0x11, 0xA4, 0xB0, 0xB7, 0xB2, 0x88, 0x88, 0x84, +0xB0, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0xA4, 0xBC, 0x91, 0xBE, 0x88, 0x88, 0x30, 0x06, 0x84, 0xBC, +0xC4, 0xB6, 0xB0, 0xBE, 0x6B, 0xA4, 0xAC, 0x84, 0xB0, 0xA4, 0xB8, 0x84, 0xBC, 0xB7, 0x4C, 0xC9, +0xFF, 0xFF, 0xF0, 0x19, 0x85, 0xA6, 0xA4, 0xB0, 0xB7, 0xB2, 0x88, 0x88, 0x84, 0xB0, 0x50, 0x03, +0x49, 0xFF, 0xFF, 0x25, 0xA6, 0xA4, 0xBC, 0x11, 0xBE, 0x91, 0xBE, 0x80, 0x13, 0xA4, 0xB0, 0xB7, +0xB2, 0x88, 0x88, 0x84, 0xB0, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0xA4, 0xBC, 0x11, 0xBE, 0x91, 0xBE, +0x88, 0x88, 0x30, 0x06, 0x84, 0xBC, 0xC4, 0xB6, 0xB0, 0xC3, 0x6B, 0xA4, 0xAC, 0x84, 0xB0, 0xA4, +0xB8, 0x84, 0xBC, 0xB7, 0x4C, 0xC9, 0xFF, 0xFF, 0xF0, 0x19, 0x85, 0xA6, 0xA4, 0xB0, 0xB7, 0xB2, +0x88, 0x88, 0x84, 0xB0, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0x25, 0xA6, 0xA4, 0xBC, 0x51, 0xBE, 0x91, +0xBE, 0x80, 0x13, 0xA4, 0xB0, 0xB7, 0xB2, 0x88, 0x88, 0x84, 0xB0, 0x50, 0x03, 0x49, 0xFF, 0xFF, +0xA4, 0xBC, 0x51, 0xBE, 0x91, 0xBE, 0x88, 0x88, 0x30, 0x06, 0x84, 0xBC, 0xC4, 0xB6, 0xB0, 0xC3, +0x6B, 0xA4, 0xAC, 0x84, 0xB0, 0xA4, 0xB8, 0x84, 0xBC, 0xB7, 0x4C, 0xC9, 0xFF, 0xFF, 0xF0, 0x1C, +0x85, 0xA6, 0xA4, 0xB0, 0xB7, 0xB2, 0x88, 0x88, 0x84, 0xB0, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0x25, +0xA6, 0xA4, 0xBC, 0x49, 0xFF, 0xFF, 0x31, 0xBE, 0x91, 0xBE, 0x80, 0x16, 0xA4, 0xB0, 0xB7, 0xB2, +0x88, 0x88, 0x84, 0xB0, 0x50, 0x03, 0x49, 0xFF, 0xFF, 0xA4, 0xBC, 0x49, 0xFF, 0xFF, 0x31, 0xBE, +0x91, 0xBE, 0x88, 0x88, 0x30, 0x06, 0x84, 0xBC, 0xC4, 0xB6, 0xB0, 0xBD, 0x6B, 0xA4, 0xB6, 0xB7, +0x4C, 0xC9, 0xFF, 0xFF, 0xF0, 0x17, 0x85, 0xA6, 0x49, 0xFF, 0xFF, 0x31, 0xBE, 0x85, 0xA8, 0xA4, +0xAA, 0xB7, 0xB2, 0x25, 0xA6, 0x05, 0xA8, 0xA4, 0xB6, 0x91, 0xBE, 0x80, 0x08, 0xA4, 0xAA, 0xB7, +0xB2, 0xA4, 0xB6, 0x91, 0xBE, 0xA5, 0xB2, 0x18, 0x65, 0xAA, 0x38, 0xE9, 0xA0, 0x00, 0x18, 0x65, +0xBA, 0xAA, 0xA5, 0xBE, 0x18, 0x65, 0xB6, 0x38, 0xE9, 0xA0, 0x00, 0x18, 0x65, 0xBA, 0xA8, 0x4B, +0xF4, 0xF5, 0x2C, 0xA5, 0xBA, 0x3A, 0x3A, 0x48, 0x0A, 0x63, 0x01, 0x49, 0xFF, 0xFF, 0x1A, 0x18, +0x69, 0xF7, 0x2E, 0x83, 0x01, 0x60, 0xA4, 0xB8, 0xB7, 0x4C, 0xC9, 0xFF, 0xFF, 0xF0, 0x16, 0x85, +0xA6, 0x49, 0xFF, 0xFF, 0x31, 0xBE, 0x85, 0xA8, 0xA4, 0xAC, 0xB7, 0xB2, 0x25, 0xA6, 0x05, 0xA8, +0xA4, 0xB8, 0x91, 0xBE, 0x6B, 0xA4, 0xAC, 0xB7, 0xB2, 0xA4, 0xB8, 0x91, 0xBE, 0x6B, 0xBD, 0x02, +0x00, 0x99, 0x02, 0x00, 0xBD, 0x04, 0x00, 0x99, 0x04, 0x00, 0xBD, 0x06, 0x00, 0x99, 0x06, 0x00, +0xBD, 0x08, 0x00, 0x99, 0x08, 0x00, 0xBD, 0x0A, 0x00, 0x99, 0x0A, 0x00, 0xBD, 0x0C, 0x00, 0x99, +0x0C, 0x00, 0xBD, 0x0E, 0x00, 0x99, 0x0E, 0x00, 0xBD, 0x10, 0x00, 0x99, 0x10, 0x00, 0xBD, 0x12, +0x00, 0x99, 0x12, 0x00, 0xBD, 0x14, 0x00, 0x99, 0x14, 0x00, 0xBD, 0x16, 0x00, 0x99, 0x16, 0x00, +0xBD, 0x18, 0x00, 0x99, 0x18, 0x00, 0xBD, 0x1A, 0x00, 0x99, 0x1A, 0x00, 0xBD, 0x1C, 0x00, 0x99, +0x1C, 0x00, 0xBD, 0x1E, 0x00, 0x99, 0x1E, 0x00, 0xBD, 0x20, 0x00, 0x99, 0x20, 0x00, 0xBD, 0x22, +0x00, 0x99, 0x22, 0x00, 0xBD, 0x24, 0x00, 0x99, 0x24, 0x00, 0xBD, 0x26, 0x00, 0x99, 0x26, 0x00, +0xBD, 0x28, 0x00, 0x99, 0x28, 0x00, 0xBD, 0x2A, 0x00, 0x99, 0x2A, 0x00, 0xBD, 0x2C, 0x00, 0x99, +0x2C, 0x00, 0xBD, 0x2E, 0x00, 0x99, 0x2E, 0x00, 0xBD, 0x30, 0x00, 0x99, 0x30, 0x00, 0xBD, 0x32, +0x00, 0x99, 0x32, 0x00, 0xBD, 0x34, 0x00, 0x99, 0x34, 0x00, 0xBD, 0x36, 0x00, 0x99, 0x36, 0x00, +0xBD, 0x38, 0x00, 0x99, 0x38, 0x00, 0xBD, 0x3A, 0x00, 0x99, 0x3A, 0x00, 0xBD, 0x3C, 0x00, 0x99, +0x3C, 0x00, 0xBD, 0x3E, 0x00, 0x99, 0x3E, 0x00, 0xBD, 0x40, 0x00, 0x99, 0x40, 0x00, 0xBD, 0x42, +0x00, 0x99, 0x42, 0x00, 0xBD, 0x44, 0x00, 0x99, 0x44, 0x00, 0xBD, 0x46, 0x00, 0x99, 0x46, 0x00, +0xBD, 0x48, 0x00, 0x99, 0x48, 0x00, 0xBD, 0x4A, 0x00, 0x99, 0x4A, 0x00, 0xBD, 0x4C, 0x00, 0x99, +0x4C, 0x00, 0xBD, 0x4E, 0x00, 0x99, 0x4E, 0x00, 0xBD, 0x50, 0x00, 0x99, 0x50, 0x00, 0xBD, 0x52, +0x00, 0x99, 0x52, 0x00, 0xBD, 0x54, 0x00, 0x99, 0x54, 0x00, 0xBD, 0x56, 0x00, 0x99, 0x56, 0x00, +0xBD, 0x58, 0x00, 0x99, 0x58, 0x00, 0xBD, 0x5A, 0x00, 0x99, 0x5A, 0x00, 0xBD, 0x5C, 0x00, 0x99, +0x5C, 0x00, 0xBD, 0x5E, 0x00, 0x99, 0x5E, 0x00, 0xBD, 0x60, 0x00, 0x99, 0x60, 0x00, 0xBD, 0x62, +0x00, 0x99, 0x62, 0x00, 0xBD, 0x64, 0x00, 0x99, 0x64, 0x00, 0xBD, 0x66, 0x00, 0x99, 0x66, 0x00, +0xBD, 0x68, 0x00, 0x99, 0x68, 0x00, 0xBD, 0x6A, 0x00, 0x99, 0x6A, 0x00, 0xBD, 0x6C, 0x00, 0x99, +0x6C, 0x00, 0xBD, 0x6E, 0x00, 0x99, 0x6E, 0x00, 0xBD, 0x70, 0x00, 0x99, 0x70, 0x00, 0xBD, 0x72, +0x00, 0x99, 0x72, 0x00, 0xBD, 0x74, 0x00, 0x99, 0x74, 0x00, 0xBD, 0x76, 0x00, 0x99, 0x76, 0x00, +0xBD, 0x78, 0x00, 0x99, 0x78, 0x00, 0xBD, 0x7A, 0x00, 0x99, 0x7A, 0x00, 0xBD, 0x7C, 0x00, 0x99, +0x7C, 0x00, 0xBD, 0x7E, 0x00, 0x99, 0x7E, 0x00, 0xBD, 0x80, 0x00, 0x99, 0x80, 0x00, 0xBD, 0x82, +0x00, 0x99, 0x82, 0x00, 0xBD, 0x84, 0x00, 0x99, 0x84, 0x00, 0xBD, 0x86, 0x00, 0x99, 0x86, 0x00, +0xBD, 0x88, 0x00, 0x99, 0x88, 0x00, 0xBD, 0x8A, 0x00, 0x99, 0x8A, 0x00, 0xBD, 0x8C, 0x00, 0x99, +0x8C, 0x00, 0xBD, 0x8E, 0x00, 0x99, 0x8E, 0x00, 0xBD, 0x90, 0x00, 0x99, 0x90, 0x00, 0xBD, 0x92, +0x00, 0x99, 0x92, 0x00, 0xBD, 0x94, 0x00, 0x99, 0x94, 0x00, 0xBD, 0x96, 0x00, 0x99, 0x96, 0x00, +0xBD, 0x98, 0x00, 0x99, 0x98, 0x00, 0xBD, 0x9A, 0x00, 0x99, 0x9A, 0x00, 0xBD, 0x9C, 0x00, 0x99, +0x9C, 0x00, 0xBD, 0x9E, 0x00, 0x99, 0x9E, 0x00, 0x6B, 0xA4, 0xB8, 0xB7, 0x4C, 0xC9, 0xFF, 0xFF, +0xF0, 0x17, 0x85, 0xA6, 0x49, 0xFF, 0xFF, 0x31, 0xBE, 0x85, 0xA8, 0xA4, 0xAC, 0xB7, 0xB2, 0x25, +0xA6, 0x05, 0xA8, 0xA4, 0xB8, 0x91, 0xBE, 0x80, 0x08, 0xA4, 0xAC, 0xB7, 0xB2, 0xA4, 0xB8, 0x91, +0xBE, 0xA5, 0xB2, 0x18, 0x65, 0xAC, 0x38, 0xE5, 0xBA, 0xAA, 0xA5, 0xBE, 0x18, 0x65, 0xB8, 0x38, +0xE5, 0xBA, 0xA8, 0x4B, 0xF4, 0x49, 0x2F, 0xA5, 0xBA, 0x3A, 0x3A, 0x48, 0x0A, 0x63, 0x01, 0x49, +0xFF, 0xFF, 0x1A, 0x18, 0x69, 0x4B, 0x31, 0x83, 0x01, 0x60, 0xA4, 0xB6, 0xB7, 0x4C, 0xC9, 0xFF, +0xFF, 0xF0, 0x16, 0x85, 0xA6, 0x49, 0xFF, 0xFF, 0x31, 0xBE, 0x85, 0xA8, 0xA4, 0xAA, 0xB7, 0xB2, +0x25, 0xA6, 0x05, 0xA8, 0xA4, 0xB6, 0x91, 0xBE, 0x6B, 0xA4, 0xAA, 0xB7, 0xB2, 0xA4, 0xB6, 0x91, +0xBE, 0x6B, 0xBD, 0x9E, 0x00, 0x99, 0x9E, 0x00, 0xBD, 0x9C, 0x00, 0x99, 0x9C, 0x00, 0xBD, 0x9A, +0x00, 0x99, 0x9A, 0x00, 0xBD, 0x98, 0x00, 0x99, 0x98, 0x00, 0xBD, 0x96, 0x00, 0x99, 0x96, 0x00, +0xBD, 0x94, 0x00, 0x99, 0x94, 0x00, 0xBD, 0x92, 0x00, 0x99, 0x92, 0x00, 0xBD, 0x90, 0x00, 0x99, +0x90, 0x00, 0xBD, 0x8E, 0x00, 0x99, 0x8E, 0x00, 0xBD, 0x8C, 0x00, 0x99, 0x8C, 0x00, 0xBD, 0x8A, +0x00, 0x99, 0x8A, 0x00, 0xBD, 0x88, 0x00, 0x99, 0x88, 0x00, 0xBD, 0x86, 0x00, 0x99, 0x86, 0x00, +0xBD, 0x84, 0x00, 0x99, 0x84, 0x00, 0xBD, 0x82, 0x00, 0x99, 0x82, 0x00, 0xBD, 0x80, 0x00, 0x99, +0x80, 0x00, 0xBD, 0x7E, 0x00, 0x99, 0x7E, 0x00, 0xBD, 0x7C, 0x00, 0x99, 0x7C, 0x00, 0xBD, 0x7A, +0x00, 0x99, 0x7A, 0x00, 0xBD, 0x78, 0x00, 0x99, 0x78, 0x00, 0xBD, 0x76, 0x00, 0x99, 0x76, 0x00, +0xBD, 0x74, 0x00, 0x99, 0x74, 0x00, 0xBD, 0x72, 0x00, 0x99, 0x72, 0x00, 0xBD, 0x70, 0x00, 0x99, +0x70, 0x00, 0xBD, 0x6E, 0x00, 0x99, 0x6E, 0x00, 0xBD, 0x6C, 0x00, 0x99, 0x6C, 0x00, 0xBD, 0x6A, +0x00, 0x99, 0x6A, 0x00, 0xBD, 0x68, 0x00, 0x99, 0x68, 0x00, 0xBD, 0x66, 0x00, 0x99, 0x66, 0x00, +0xBD, 0x64, 0x00, 0x99, 0x64, 0x00, 0xBD, 0x62, 0x00, 0x99, 0x62, 0x00, 0xBD, 0x60, 0x00, 0x99, +0x60, 0x00, 0xBD, 0x5E, 0x00, 0x99, 0x5E, 0x00, 0xBD, 0x5C, 0x00, 0x99, 0x5C, 0x00, 0xBD, 0x5A, +0x00, 0x99, 0x5A, 0x00, 0xBD, 0x58, 0x00, 0x99, 0x58, 0x00, 0xBD, 0x56, 0x00, 0x99, 0x56, 0x00, +0xBD, 0x54, 0x00, 0x99, 0x54, 0x00, 0xBD, 0x52, 0x00, 0x99, 0x52, 0x00, 0xBD, 0x50, 0x00, 0x99, +0x50, 0x00, 0xBD, 0x4E, 0x00, 0x99, 0x4E, 0x00, 0xBD, 0x4C, 0x00, 0x99, 0x4C, 0x00, 0xBD, 0x4A, +0x00, 0x99, 0x4A, 0x00, 0xBD, 0x48, 0x00, 0x99, 0x48, 0x00, 0xBD, 0x46, 0x00, 0x99, 0x46, 0x00, +0xBD, 0x44, 0x00, 0x99, 0x44, 0x00, 0xBD, 0x42, 0x00, 0x99, 0x42, 0x00, 0xBD, 0x40, 0x00, 0x99, +0x40, 0x00, 0xBD, 0x3E, 0x00, 0x99, 0x3E, 0x00, 0xBD, 0x3C, 0x00, 0x99, 0x3C, 0x00, 0xBD, 0x3A, +0x00, 0x99, 0x3A, 0x00, 0xBD, 0x38, 0x00, 0x99, 0x38, 0x00, 0xBD, 0x36, 0x00, 0x99, 0x36, 0x00, +0xBD, 0x34, 0x00, 0x99, 0x34, 0x00, 0xBD, 0x32, 0x00, 0x99, 0x32, 0x00, 0xBD, 0x30, 0x00, 0x99, +0x30, 0x00, 0xBD, 0x2E, 0x00, 0x99, 0x2E, 0x00, 0xBD, 0x2C, 0x00, 0x99, 0x2C, 0x00, 0xBD, 0x2A, +0x00, 0x99, 0x2A, 0x00, 0xBD, 0x28, 0x00, 0x99, 0x28, 0x00, 0xBD, 0x26, 0x00, 0x99, 0x26, 0x00, +0xBD, 0x24, 0x00, 0x99, 0x24, 0x00, 0xBD, 0x22, 0x00, 0x99, 0x22, 0x00, 0xBD, 0x20, 0x00, 0x99, +0x20, 0x00, 0xBD, 0x1E, 0x00, 0x99, 0x1E, 0x00, 0xBD, 0x1C, 0x00, 0x99, 0x1C, 0x00, 0xBD, 0x1A, +0x00, 0x99, 0x1A, 0x00, 0xBD, 0x18, 0x00, 0x99, 0x18, 0x00, 0xBD, 0x16, 0x00, 0x99, 0x16, 0x00, +0xBD, 0x14, 0x00, 0x99, 0x14, 0x00, 0xBD, 0x12, 0x00, 0x99, 0x12, 0x00, 0xBD, 0x10, 0x00, 0x99, +0x10, 0x00, 0xBD, 0x0E, 0x00, 0x99, 0x0E, 0x00, 0xBD, 0x0C, 0x00, 0x99, 0x0C, 0x00, 0xBD, 0x0A, +0x00, 0x99, 0x0A, 0x00, 0xBD, 0x08, 0x00, 0x99, 0x08, 0x00, 0xBD, 0x06, 0x00, 0x99, 0x06, 0x00, +0xBD, 0x04, 0x00, 0x99, 0x04, 0x00, 0xBD, 0x02, 0x00, 0x99, 0x02, 0x00, 0x6B, 0x20, 0x41, 0x33, +0x90, 0x0A, 0xA9, 0x90, 0x00, 0x22, 0xF8, 0x1E, 0xE0, 0x90, 0x01, 0x6B, 0x20, 0xC0, 0x23, 0x5C, +0xDC, 0x1F, 0xE0, 0x8B, 0xA5, 0xCC, 0x45, 0x0C, 0x29, 0x80, 0x00, 0xF0, 0x06, 0xA9, 0x20, 0x04, +0x4C, 0x2E, 0x33, 0xA5, 0xD4, 0xC5, 0xDC, 0x30, 0x0C, 0x38, 0xE5, 0xDC, 0x18, 0x65, 0x1C, 0x85, +0x1C, 0xA5, 0xD4, 0x85, 0xDC, 0xA5, 0xD6, 0xC5, 0xDE, 0x30, 0x0C, 0x38, 0xE5, 0xDE, 0x18, 0x65, +0x1E, 0x85, 0x1E, 0xA5, 0xD6, 0x85, 0xDE, 0xA5, 0xD8, 0xC5, 0xE0, 0x10, 0x02, 0x85, 0xE0, 0xA5, +0xDA, 0xC5, 0xE2, 0x10, 0x02, 0x85, 0xE2, 0xA5, 0xDC, 0xC5, 0xE0, 0x30, 0x03, 0x4C, 0x28, 0x33, +0xA5, 0xDE, 0xC5, 0xE2, 0x30, 0x03, 0x4C, 0x28, 0x33, 0xA2, 0x02, 0x00, 0xB5, 0xE0, 0x38, 0xF5, +0xDC, 0x18, 0x75, 0x1C, 0x95, 0x20, 0xCA, 0xCA, 0x10, 0xF2, 0x22, 0xE0, 0x1F, 0xE0, 0x90, 0x03, +0x4C, 0x24, 0x33, 0xA2, 0x06, 0x00, 0xB5, 0x00, 0x38, 0xF5, 0x1C, 0xF0, 0x05, 0x18, 0x75, 0xDC, +0x95, 0xDC, 0xCA, 0xCA, 0x10, 0xF0, 0xA5, 0x00, 0x85, 0x1C, 0xA5, 0x02, 0x85, 0x1E, 0xA5, 0x04, +0x85, 0x20, 0xA5, 0x06, 0x85, 0x22, 0x22, 0xE4, 0x1F, 0xE0, 0x22, 0x98, 0x1E, 0xE0, 0xA5, 0x1C, +0x85, 0x00, 0xA5, 0x1E, 0x85, 0x02, 0xA5, 0x20, 0x85, 0x04, 0xA5, 0x22, 0x85, 0x06, 0xA2, 0x00, +0x00, 0x9B, 0x20, 0x31, 0x33, 0x90, 0x24, 0xA5, 0x1C, 0x38, 0xE5, 0x14, 0x48, 0xA5, 0xDC, 0x38, +0xE5, 0xD4, 0xC3, 0x01, 0xB0, 0x03, 0x88, 0x80, 0x11, 0xA5, 0x1E, 0x38, 0xE5, 0x16, 0x83, 0x01, +0xA5, 0xDE, 0x38, 0xE5, 0x16, 0xC3, 0x01, 0xB0, 0x01, 0xCA, 0x68, 0x84, 0xC8, 0x86, 0xCA, 0xF4, +0x00, 0x00, 0xF4, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x10, 0x05, 0xA5, 0xE0, 0x3A, 0x80, 0x02, 0xA5, +0xDC, 0x38, 0xE5, 0xD4, 0x48, 0xD4, 0xD2, 0xA2, 0x0B, 0x09, 0x22, 0x00, 0x00, 0xE1, 0x68, 0xFA, +0x18, 0x65, 0xCE, 0x85, 0xB2, 0x8A, 0x65, 0xD0, 0x85, 0xB4, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, +0x24, 0xC8, 0x10, 0x05, 0xA5, 0x20, 0x3A, 0x80, 0x02, 0xA5, 0x1C, 0x38, 0xE5, 0x14, 0x48, 0xD4, +0x12, 0xA2, 0x0B, 0x09, 0x22, 0x00, 0x00, 0xE1, 0x68, 0xFA, 0x18, 0x65, 0x0E, 0x85, 0xBE, 0x8A, +0x65, 0x10, 0x85, 0xC0, 0x22, 0x7C, 0x1E, 0xE0, 0x22, 0xA4, 0x1E, 0xE0, 0x22, 0xC4, 0x1E, 0xE0, +0x22, 0xEC, 0x1E, 0xE0, 0xD4, 0xBF, 0xAB, 0xAB, 0xB8, 0xA5, 0xE4, 0x10, 0x02, 0xE2, 0x40, 0x08, +0xA5, 0x20, 0x3A, 0x85, 0x40, 0x24, 0xC8, 0x30, 0x35, 0xA5, 0x1C, 0x85, 0x40, 0x22, 0xD0, 0x1E, +0xE0, 0x28, 0x08, 0x22, 0x00, 0x1E, 0xE0, 0xA5, 0x40, 0x1A, 0xC5, 0x20, 0x10, 0x51, 0x85, 0x40, +0xA5, 0xD2, 0x18, 0x65, 0xB2, 0x85, 0xB2, 0x90, 0x02, 0xE6, 0xB4, 0xA5, 0x12, 0x18, 0x65, 0xBE, +0x85, 0xBE, 0x90, 0x08, 0xE6, 0xC0, 0x8B, 0xA5, 0xBF, 0x83, 0x00, 0xAB, 0x80, 0xCF, 0x22, 0xD0, +0x1E, 0xE0, 0x28, 0x08, 0x22, 0x00, 0x1E, 0xE0, 0xA5, 0x40, 0x3A, 0xC5, 0x1C, 0x30, 0x20, 0x85, +0x40, 0xA5, 0xB2, 0x38, 0xE5, 0xD2, 0x85, 0xB2, 0xB0, 0x02, 0xC6, 0xB4, 0xA5, 0xBE, 0x38, 0xE5, +0x12, 0x85, 0xBE, 0xB0, 0x08, 0xC6, 0xC0, 0x8B, 0xA5, 0xBF, 0x83, 0x00, 0xAB, 0x80, 0xCF, 0x22, +0x9C, 0x1E, 0xE0, 0x28, 0x22, 0xB4, 0x1E, 0xE0, 0xAB, 0xA9, 0x00, 0x00, 0x18, 0x6B, 0xAB, 0x38, +0x6B, 0xA5, 0xCE, 0xC5, 0x0E, 0xD0, 0x08, 0xA5, 0xCF, 0xC5, 0x0F, 0xD0, 0x02, 0x38, 0x60, 0x18, +0x60, 0xA0, 0x0E, 0x00, 0xBB, 0xB7, 0x24, 0xD5, 0x0C, 0xD0, 0x06, 0x88, 0x88, 0x10, 0xF5, 0x38, +0x60, 0x18, 0x60, 0x20, 0xA7, 0x45, 0x20, 0xB8, 0x45, 0x20, 0xC9, 0x45, 0xA0, 0x02, 0x00, 0xB7, +0x74, 0xC5, 0x1C, 0x10, 0x02, 0xA5, 0x1C, 0x85, 0x00, 0xC8, 0xC8, 0xB7, 0x74, 0xC5, 0x1E, 0x10, +0x02, 0xA5, 0x1E, 0x85, 0x02, 0xC8, 0xC8, 0xB7, 0x74, 0xC5, 0x20, 0x30, 0x02, 0xA5, 0x20, 0x85, +0x04, 0xC8, 0xC8, 0xB7, 0x74, 0xC5, 0x22, 0x30, 0x02, 0xA5, 0x22, 0x85, 0x06, 0x24, 0xE6, 0x10, +0x2E, 0x20, 0x41, 0x33, 0x90, 0x29, 0xA0, 0x10, 0x00, 0xB7, 0x24, 0xC5, 0x00, 0x30, 0x02, 0x85, +0x00, 0xC8, 0xC8, 0xB7, 0x24, 0xC5, 0x02, 0x30, 0x02, 0x85, 0x02, 0xC8, 0xC8, 0xB7, 0x24, 0xC5, +0x04, 0x10, 0x02, 0x85, 0x04, 0xC8, 0xC8, 0xB7, 0x24, 0xC5, 0x06, 0x10, 0x02, 0x85, 0x06, 0x22, +0x94, 0x1E, 0xE0, 0x6B, 0x20, 0x31, 0x33, 0x90, 0x28, 0xA5, 0x1C, 0xC5, 0xDC, 0x30, 0x02, 0xA5, +0xDC, 0x85, 0x00, 0xA5, 0x1E, 0xC5, 0xDE, 0x30, 0x02, 0xA5, 0xDE, 0x85, 0x02, 0xA5, 0x20, 0xC5, +0xE0, 0x10, 0x02, 0xA5, 0xE0, 0x85, 0x04, 0xA5, 0x22, 0xC5, 0xE2, 0x10, 0x02, 0xA5, 0xE2, 0x85, +0x06, 0x6B, 0x20, 0xB3, 0x0D, 0xA3, 0x13, 0x85, 0x2E, 0xA3, 0x15, 0x85, 0x30, 0xA0, 0x0E, 0x00, +0xBB, 0xB7, 0x2E, 0x95, 0xCC, 0x88, 0x88, 0x10, 0xF7, 0x22, 0x3C, 0x1E, 0xE0, 0xA3, 0x0F, 0x85, +0x2E, 0xA3, 0x11, 0x85, 0x30, 0xA0, 0x06, 0x00, 0xBB, 0xB7, 0x2E, 0x95, 0xDC, 0x88, 0x88, 0x10, +0xF7, 0xA3, 0x0B, 0x85, 0x1C, 0xA3, 0x0D, 0x85, 0x1E, 0xA5, 0xE0, 0x38, 0xE5, 0xDC, 0x18, 0x65, +0x1C, 0x85, 0x20, 0xA5, 0xE2, 0x38, 0xE5, 0xDE, 0x18, 0x65, 0x1E, 0x85, 0x22, 0xA3, 0x09, 0x85, +0xE4, 0x22, 0xA0, 0x1E, 0xE0, 0xA9, 0xF5, 0x0D, 0x85, 0x70, 0xA9, 0xFE, 0x00, 0x85, 0x72, 0xA9, +0x00, 0x80, 0x85, 0xE6, 0x22, 0x5F, 0x34, 0xFE, 0xAA, 0xA0, 0x0E, 0x00, 0x4C, 0x22, 0xFF, 0x20, +0x41, 0x33, 0x90, 0x11, 0xA0, 0x9C, 0x00, 0xB7, 0x24, 0x85, 0x2A, 0xC8, 0xC8, 0xB7, 0x24, 0x85, +0x2C, 0x05, 0x2A, 0xD0, 0x04, 0x5C, 0x24, 0x1E, 0xE0, 0x8B, 0xA0, 0x20, 0x00, 0xB7, 0x2A, 0x48, +0xC8, 0xB7, 0x2A, 0x83, 0x02, 0x6B, 0x20, 0xB3, 0x0D, 0xA0, 0x16, 0x00, 0xBB, 0xB7, 0x24, 0x95, +0xCC, 0x95, 0x0C, 0x88, 0x88, 0x10, 0xF5, 0x8B, 0xA3, 0x12, 0xAA, 0xA3, 0x13, 0x8B, 0x83, 0x00, +0xAB, 0xBD, 0x00, 0x00, 0xC5, 0xDC, 0x30, 0x04, 0x85, 0xDC, 0x85, 0x1C, 0xBD, 0x02, 0x00, 0xC5, +0xDE, 0x30, 0x04, 0x85, 0xDE, 0x85, 0x1E, 0xBD, 0x04, 0x00, 0xC5, 0xE0, 0x10, 0x04, 0x85, 0xE0, +0x85, 0x20, 0xBD, 0x06, 0x00, 0xC5, 0xE2, 0x10, 0x04, 0x85, 0xE2, 0x85, 0x22, 0xAB, 0xA3, 0x0D, +0x30, 0x0E, 0x18, 0x65, 0x1C, 0x85, 0x1C, 0xA5, 0xE0, 0x38, 0xE3, 0x0D, 0x85, 0xE0, 0x80, 0x0C, +0x18, 0x65, 0x20, 0x85, 0x20, 0xA5, 0xDC, 0x38, 0xE3, 0x0D, 0x85, 0xDC, 0xA3, 0x0F, 0x30, 0x0E, +0x18, 0x65, 0x1E, 0x85, 0x1E, 0xA5, 0xE2, 0x38, 0xE3, 0x0F, 0x85, 0xE2, 0x80, 0x0C, 0x18, 0x65, +0x22, 0x85, 0x22, 0xA5, 0xDE, 0x38, 0xE3, 0x0F, 0x85, 0xDE, 0x64, 0xE4, 0x7B, 0xAA, 0xA0, 0x42, +0x00, 0xBF, 0xA6, 0x00, 0x00, 0x9F, 0x00, 0x02, 0x00, 0xE8, 0xE8, 0x88, 0x88, 0x10, 0xF2, 0xA5, +0x26, 0x48, 0xA5, 0x24, 0x48, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xA2, 0x04, 0x67, 0x22, 0x00, +0x00, 0xE1, 0x90, 0x05, 0xFA, 0xFA, 0x4C, 0x7B, 0x36, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xA2, +0x04, 0x67, 0x22, 0x00, 0x00, 0xE1, 0x90, 0x12, 0xFA, 0xFA, 0xFA, 0x7A, 0x48, 0x5A, 0xDA, 0xA2, +0x04, 0x68, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x4C, 0x7B, 0x36, 0x0B, 0x3B, 0x5B, 0xD4, 0x05, 0xD4, +0x03, 0xD4, 0x21, 0xD4, 0x1F, 0xA2, 0x04, 0x6C, 0x22, 0x00, 0x00, 0xE1, 0x90, 0x03, 0x4C, 0x62, +0x36, 0xD4, 0x05, 0xD4, 0x03, 0xA0, 0x1E, 0x00, 0xB7, 0x0B, 0x48, 0x88, 0x88, 0xB7, 0x0B, 0x48, +0xD4, 0x05, 0xD4, 0x03, 0xA2, 0x04, 0x71, 0x22, 0x00, 0x00, 0xE1, 0x90, 0x03, 0x4C, 0x62, 0x36, +0xD4, 0x05, 0xD4, 0x03, 0xA0, 0x1A, 0x00, 0xB7, 0x0B, 0x48, 0x88, 0x88, 0xB7, 0x0B, 0x48, 0xD4, +0x05, 0xD4, 0x03, 0xA2, 0x04, 0x71, 0x22, 0x00, 0x00, 0xE1, 0x90, 0x03, 0x4C, 0x62, 0x36, 0xD4, +0x05, 0xD4, 0x03, 0xD4, 0x09, 0xD4, 0x07, 0xA2, 0x04, 0x69, 0x22, 0x00, 0x00, 0xE1, 0x90, 0x03, +0x4C, 0x62, 0x36, 0xD4, 0x09, 0xD4, 0x07, 0xD4, 0x1D, 0xD4, 0x1B, 0xA2, 0x04, 0x6F, 0x22, 0x00, +0x00, 0xE1, 0x90, 0x03, 0x4C, 0x62, 0x36, 0x2B, 0x68, 0x85, 0x50, 0x68, 0x85, 0x52, 0x68, 0x85, +0x60, 0x68, 0x85, 0x62, 0x68, 0x68, 0xA9, 0xF5, 0x0D, 0x85, 0x70, 0xA9, 0xFE, 0x00, 0x85, 0x72, +0x7B, 0xAA, 0xA0, 0x42, 0x00, 0xBF, 0x00, 0x02, 0x00, 0x9F, 0xA6, 0x00, 0x00, 0xE8, 0xE8, 0x88, +0x88, 0x10, 0xF2, 0x64, 0xE6, 0x22, 0xDC, 0x1F, 0xE0, 0xB0, 0x70, 0xD4, 0x62, 0xD4, 0x60, 0xD4, +0x52, 0xD4, 0x50, 0x0B, 0x3B, 0x5B, 0xD4, 0x05, 0xD4, 0x03, 0xD4, 0x09, 0xD4, 0x07, 0xD4, 0x05, +0xD4, 0x03, 0xA2, 0x04, 0x73, 0x22, 0x00, 0x00, 0xE1, 0xB0, 0x37, 0xD4, 0x05, 0xD4, 0x03, 0xA2, +0x04, 0x7B, 0x22, 0x00, 0x00, 0xE1, 0xA5, 0x13, 0x05, 0x15, 0xF0, 0x11, 0xD4, 0x05, 0xD4, 0x03, +0xD4, 0x15, 0xD4, 0x13, 0xA2, 0x04, 0x69, 0x22, 0x00, 0x00, 0xE1, 0xB0, 0x15, 0x2B, 0xA2, 0x04, +0x68, 0x22, 0x00, 0x00, 0xE1, 0xA2, 0x04, 0x68, 0x22, 0x00, 0x00, 0xE1, 0xA0, 0x0C, 0x00, 0x4C, +0x1F, 0xFF, 0x48, 0xD4, 0x05, 0xD4, 0x03, 0xA2, 0x04, 0x68, 0x22, 0x00, 0x00, 0xE1, 0xD4, 0x09, +0xD4, 0x07, 0xA2, 0x04, 0x68, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x2B, 0xAA, 0xA0, 0x0C, 0x00, 0x4C, +0x22, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0x85, 0x2A, 0xAA, 0xA3, 0x0A, 0x8B, 0x48, 0xAB, 0xAB, +0xBD, 0x00, 0x00, 0x85, 0x2E, 0xBD, 0x01, 0x00, 0x85, 0x2F, 0xA0, 0x0E, 0x00, 0xBB, 0xB7, 0x2E, +0x95, 0xCC, 0x88, 0x88, 0x10, 0xF7, 0xA6, 0x2A, 0xBD, 0x04, 0x00, 0x85, 0x2E, 0xBD, 0x05, 0x00, +0x85, 0x2F, 0xA0, 0x0E, 0x00, 0xBB, 0xB7, 0x2E, 0x95, 0x0C, 0x88, 0x88, 0x10, 0xF7, 0xA6, 0x2A, +0xBD, 0x08, 0x00, 0x85, 0x2E, 0xBD, 0x09, 0x00, 0x85, 0x2F, 0xA0, 0x06, 0x00, 0xBB, 0xB7, 0x2E, +0x95, 0xDC, 0x88, 0x88, 0x10, 0xF7, 0xA6, 0x2A, 0xBD, 0x0C, 0x00, 0x85, 0x2E, 0xBD, 0x0D, 0x00, +0x85, 0x2F, 0xA7, 0x2E, 0x85, 0x1C, 0xA0, 0x02, 0x00, 0xB7, 0x2E, 0x85, 0x1E, 0xA5, 0xE0, 0x38, +0xE5, 0xDC, 0x18, 0x65, 0x1C, 0x85, 0x20, 0xA5, 0xE2, 0x38, 0xE5, 0xDE, 0x18, 0x65, 0x1E, 0x85, +0x22, 0xBD, 0x10, 0x00, 0x85, 0xE4, 0xA9, 0xF5, 0x0D, 0x85, 0x50, 0x85, 0x60, 0x85, 0x70, 0xA9, +0xFE, 0x00, 0x85, 0x52, 0x85, 0x62, 0x85, 0x72, 0xBD, 0x12, 0x00, 0x1D, 0x14, 0x00, 0xF0, 0x0A, +0xBD, 0x12, 0x00, 0x85, 0x70, 0xBD, 0x14, 0x00, 0x85, 0x72, 0xAB, 0x64, 0xE6, 0x22, 0x5F, 0x34, +0xFE, 0xAA, 0xA0, 0x04, 0x00, 0x4C, 0x22, 0xFF, 0x24, 0xCB, 0x30, 0x4F, 0xA5, 0xDE, 0x38, 0xE5, +0xD6, 0x85, 0x42, 0x4A, 0x29, 0xFE, 0xFF, 0x85, 0xAA, 0xA5, 0xE2, 0x3A, 0x38, 0xE5, 0xD6, 0x4A, +0x29, 0xFE, 0xFF, 0x85, 0xAC, 0xA5, 0x1E, 0x38, 0xE5, 0x16, 0xAA, 0x4A, 0x29, 0xFE, 0xFF, 0x85, +0xB6, 0xA5, 0x22, 0x3A, 0x38, 0xE5, 0x16, 0x4A, 0x29, 0xFE, 0xFF, 0x85, 0xB8, 0xA5, 0x42, 0x29, +0x03, 0x00, 0x85, 0x42, 0x8A, 0x29, 0x03, 0x00, 0xC5, 0x42, 0xB0, 0x08, 0xC6, 0xB6, 0xC6, 0xB6, +0x18, 0x69, 0x04, 0x00, 0x38, 0xE5, 0x42, 0x0A, 0x0A, 0x80, 0x50, 0xA5, 0xDE, 0x38, 0xE5, 0xD6, +0x85, 0x42, 0x4A, 0x4A, 0x29, 0xFE, 0xFF, 0x85, 0xAA, 0xA5, 0xE2, 0x3A, 0x38, 0xE5, 0xD6, 0x4A, +0x4A, 0x29, 0xFE, 0xFF, 0x85, 0xAC, 0xA5, 0x1E, 0x38, 0xE5, 0x16, 0xAA, 0x4A, 0x4A, 0x29, 0xFE, +0xFF, 0x85, 0xB6, 0xA5, 0x22, 0x3A, 0x38, 0xE5, 0x16, 0x4A, 0x4A, 0x29, 0xFE, 0xFF, 0x85, 0xB8, +0xA5, 0x42, 0x29, 0x07, 0x00, 0x85, 0x42, 0x8A, 0x29, 0x07, 0x00, 0xC5, 0x42, 0xB0, 0x08, 0xC6, +0xB6, 0xC6, 0xB6, 0x18, 0x69, 0x08, 0x00, 0x38, 0xE5, 0x42, 0x0A, 0x0A, 0x85, 0x42, 0xA5, 0xB8, +0x38, 0xE5, 0xB6, 0x85, 0xBA, 0xA5, 0xAC, 0x38, 0xE5, 0xAA, 0x85, 0xAE, 0xC5, 0xBA, 0xF0, 0x18, +0x90, 0x0E, 0xA9, 0x00, 0x00, 0x85, 0xA0, 0xC6, 0xB6, 0xC6, 0xB6, 0xE6, 0xBA, 0xE6, 0xBA, 0x6B, +0xE6, 0xAC, 0xE6, 0xAC, 0xE6, 0xAE, 0xE6, 0xAE, 0x6B, 0xA5, 0xE4, 0x29, 0x7F, 0x00, 0x0A, 0x0A, +0xAA, 0xA5, 0x42, 0xF0, 0x23, 0x24, 0xCA, 0x10, 0x0E, 0xBF, 0xA6, 0x38, 0xFE, 0x8F, 0x00, 0x1E, +0xE0, 0xBF, 0xA8, 0x38, 0xFE, 0x80, 0x0C, 0xBF, 0x96, 0x38, 0xFE, 0x8F, 0x00, 0x1E, 0xE0, 0xBF, +0x98, 0x38, 0xFE, 0x8F, 0x02, 0x1E, 0xE0, 0x6B, 0xA5, 0xE4, 0xD0, 0x19, 0xA5, 0xA4, 0xD0, 0x15, +0xA5, 0xBA, 0xC9, 0x04, 0x00, 0x90, 0x0E, 0xA5, 0xCF, 0xC5, 0x0F, 0xD0, 0x08, 0xC9, 0x20, 0xE1, +0xD0, 0x03, 0x38, 0x80, 0x01, 0x18, 0x24, 0xCA, 0x10, 0x1E, 0x90, 0x0E, 0xAF, 0xD6, 0x38, 0xFE, +0x8F, 0x00, 0x1E, 0xE0, 0xAF, 0xD8, 0x38, 0xFE, 0x80, 0xC9, 0xBF, 0xC6, 0x38, 0xFE, 0x8F, 0x00, +0x1E, 0xE0, 0xBF, 0xC8, 0x38, 0xFE, 0x80, 0xBB, 0x90, 0x0E, 0xAF, 0xDA, 0x38, 0xFE, 0x8F, 0x00, +0x1E, 0xE0, 0xAF, 0xDC, 0x38, 0xFE, 0x80, 0xAB, 0xBF, 0xB6, 0x38, 0xFE, 0x8F, 0x00, 0x1E, 0xE0, +0xBF, 0xB8, 0x38, 0xFE, 0x80, 0x9D, 0x5C, 0xA9, 0x26, 0xFE, 0x5C, 0x21, 0x27, 0xFE, 0x5C, 0x94, +0x27, 0xFE, 0x5C, 0x07, 0x28, 0xFE, 0x5C, 0x80, 0x28, 0xFE, 0x5C, 0xF1, 0x28, 0xFE, 0x5C, 0x5D, +0x29, 0xFE, 0x5C, 0xC9, 0x29, 0xFE, 0x5C, 0x3B, 0x2A, 0xFE, 0x5C, 0x8D, 0x2A, 0xFE, 0x5C, 0xDA, +0x2A, 0xFE, 0x5C, 0x27, 0x2B, 0xFE, 0x5C, 0x7A, 0x2B, 0xFE, 0x5C, 0xC5, 0x2B, 0xFE, 0x5C, 0x0B, +0x2C, 0xFE, 0x5C, 0x51, 0x2C, 0xFE, 0x5C, 0xF9, 0x2E, 0xFE, 0x5C, 0x9D, 0x2C, 0xFE, 0xA6, 0x42, +0x7C, 0xE3, 0x38, 0x68, 0x39, 0x64, 0x39, 0x5F, 0x39, 0x59, 0x39, 0x52, 0x39, 0x4A, 0x39, 0x41, +0x39, 0x37, 0x39, 0x32, 0x39, 0x2C, 0x39, 0x25, 0x39, 0x1D, 0x39, 0x15, 0x39, 0x0E, 0x39, 0x08, +0x39, 0x03, 0x39, 0x2A, 0x29, 0x00, 0x01, 0x6B, 0x2A, 0x2A, 0x29, 0x00, 0x03, 0x6B, 0x2A, 0x2A, +0x2A, 0x29, 0x00, 0x07, 0x6B, 0x2A, 0x2A, 0x2A, 0x2A, 0x29, 0x00, 0x0F, 0x6B, 0xEB, 0x4A, 0x4A, +0x4A, 0x29, 0x00, 0x1F, 0x6B, 0xEB, 0x4A, 0x4A, 0x29, 0x00, 0x3F, 0x6B, 0xEB, 0x4A, 0x29, 0x00, +0x7F, 0x6B, 0xEB, 0x29, 0x00, 0xFF, 0x6B, 0x18, 0x69, 0x00, 0x80, 0x2A, 0x29, 0xFF, 0x01, 0xEB, +0x6B, 0xEB, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0xEB, 0x6B, 0xEB, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, +0xEB, 0x6B, 0xEB, 0x4A, 0x4A, 0x4A, 0x4A, 0xEB, 0x6B, 0xEB, 0x4A, 0x4A, 0x4A, 0xEB, 0x6B, 0xEB, +0x4A, 0x4A, 0xEB, 0x6B, 0xEB, 0x4A, 0xEB, 0x6B, 0x6B, 0xA6, 0x42, 0x7C, 0x6E, 0x39, 0x8E, 0x39, +0x92, 0x39, 0x97, 0x39, 0x9D, 0x39, 0xA4, 0x39, 0xAC, 0x39, 0xB4, 0x39, 0xBB, 0x39, 0xC1, 0x39, +0xC6, 0x39, 0xD0, 0x39, 0xD9, 0x39, 0xE1, 0x39, 0xE8, 0x39, 0xEE, 0x39, 0xF3, 0x39, 0xA9, 0x00, +0x00, 0x6B, 0x6A, 0x29, 0x80, 0x00, 0x6B, 0x6A, 0x6A, 0x29, 0xC0, 0x00, 0x6B, 0x6A, 0x6A, 0x6A, +0x29, 0xE0, 0x00, 0x6B, 0x6A, 0x6A, 0x6A, 0x6A, 0x29, 0xF0, 0x00, 0x6B, 0xEB, 0x2A, 0x2A, 0x2A, +0x29, 0xF8, 0x00, 0x6B, 0xEB, 0x2A, 0x2A, 0x29, 0xFC, 0x00, 0x6B, 0xEB, 0x2A, 0x29, 0xFE, 0x00, +0x6B, 0xEB, 0x29, 0xFF, 0x00, 0x6B, 0xEB, 0x6A, 0x08, 0x0A, 0x28, 0x6A, 0x29, 0xFF, 0x80, 0x6B, +0xEB, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0xEB, 0x6B, 0xEB, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0xEB, +0x6B, 0xEB, 0x0A, 0x0A, 0x0A, 0x0A, 0xEB, 0x6B, 0xEB, 0x0A, 0x0A, 0x0A, 0xEB, 0x6B, 0xEB, 0x0A, +0x0A, 0xEB, 0x6B, 0xEB, 0x0A, 0xEB, 0x6B, 0x20, 0x94, 0x3A, 0xA5, 0x00, 0xA0, 0x02, 0x00, 0xC5, +0x1C, 0x10, 0x02, 0xA5, 0x1C, 0xC5, 0x14, 0x10, 0x02, 0xA5, 0x14, 0xD7, 0x54, 0x10, 0x02, 0xB7, +0x54, 0xD7, 0x64, 0x10, 0x02, 0xB7, 0x64, 0x85, 0x00, 0xA5, 0x02, 0xC8, 0xC8, 0xC5, 0x1E, 0x10, +0x02, 0xA5, 0x1E, 0xC5, 0x16, 0x10, 0x02, 0xA5, 0x16, 0xD7, 0x54, 0x10, 0x02, 0xB7, 0x54, 0xD7, +0x64, 0x10, 0x02, 0xB7, 0x64, 0x85, 0x02, 0xA5, 0x04, 0xC8, 0xC8, 0xC5, 0x20, 0x30, 0x02, 0xA5, +0x20, 0xC5, 0x18, 0x30, 0x02, 0xA5, 0x18, 0xD7, 0x54, 0x30, 0x02, 0xB7, 0x54, 0xD7, 0x64, 0x30, +0x02, 0xB7, 0x64, 0x85, 0x04, 0xA5, 0x06, 0xC8, 0xC8, 0xC5, 0x22, 0x30, 0x02, 0xA5, 0x22, 0xC5, +0x1A, 0x30, 0x02, 0xA5, 0x1A, 0xD7, 0x54, 0x30, 0x02, 0xB7, 0x54, 0xD7, 0x64, 0x30, 0x02, 0xB7, +0x64, 0x85, 0x06, 0xA5, 0x00, 0xC5, 0x04, 0x10, 0x08, 0xA5, 0x02, 0xC5, 0x06, 0x10, 0x02, 0x18, +0x6B, 0x38, 0x6B, 0xA5, 0x00, 0x85, 0xA6, 0xA5, 0x02, 0x85, 0xA8, 0xA5, 0x04, 0x85, 0xAA, 0xA5, +0x06, 0x85, 0xAC, 0x60, 0xA5, 0xA6, 0x85, 0x00, 0xA5, 0xA8, 0x85, 0x02, 0xA5, 0xAA, 0x85, 0x04, +0xA5, 0xAC, 0x85, 0x06, 0x60, 0x0B, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, +0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0xFF, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, +0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x0B, 0x00, 0x02, +0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, +0x00, 0x3F, 0xC0, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, +0x00, 0x3C, 0xF0, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, +0x00, 0xFC, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0xF0, 0x00, +0x00, 0xFF, 0xFC, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0xFF, 0xFF, 0xC0, +0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7B, 0xAA, 0x0B, +0x18, 0x69, 0x00, 0x01, 0x5B, 0xBF, 0x0A, 0x00, 0x00, 0xAA, 0xA9, 0x00, 0x04, 0xA0, 0x00, 0x80, +0x20, 0x24, 0x11, 0x90, 0x03, 0x4C, 0x37, 0x3C, 0x86, 0xB0, 0x84, 0xB2, 0xA0, 0x02, 0x00, 0xB7, +0xB0, 0x85, 0xB6, 0xA7, 0xB0, 0x85, 0xB4, 0x20, 0x39, 0x3C, 0xB0, 0x4B, 0x48, 0x48, 0xF4, 0x0A, +0x00, 0xA2, 0x03, 0x11, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x8F, 0xFC, 0x1F, 0xE0, 0x68, 0x8F, 0xFE, +0x1F, 0xE0, 0xF4, 0x18, 0x00, 0xF4, 0xFE, 0x00, 0xF4, 0xCE, 0x3F, 0xA2, 0x03, 0x10, 0x22, 0x00, +0x00, 0xE1, 0xF4, 0x0A, 0x00, 0xF4, 0xFE, 0x00, 0xF4, 0x4E, 0x40, 0xA2, 0x03, 0x10, 0x22, 0x00, +0x00, 0xE1, 0xF4, 0x0C, 0x00, 0xA2, 0x03, 0x23, 0x22, 0x00, 0x00, 0xE1, 0xA9, 0x00, 0x80, 0x85, +0x52, 0x2B, 0xA9, 0x00, 0x00, 0x18, 0x6B, 0x2B, 0x6B, 0x7B, 0x38, 0xE9, 0x00, 0x01, 0xAA, 0xBF, +0x08, 0x00, 0x00, 0x85, 0x6A, 0x64, 0xCE, 0xA9, 0xFF, 0xFF, 0x85, 0xCC, 0x24, 0x69, 0x30, 0x08, +0xF4, 0xFE, 0x00, 0xF4, 0xA5, 0x3A, 0x80, 0x06, 0xF4, 0xFE, 0x00, 0xF4, 0x5D, 0x3B, 0xA2, 0x04, +0x8E, 0x22, 0x00, 0x00, 0xE1, 0x60, 0x20, 0xB3, 0x0D, 0x18, 0x69, 0x00, 0x01, 0x5B, 0x08, 0x78, +0xA2, 0x04, 0x90, 0x22, 0x00, 0x00, 0xE1, 0x20, 0x39, 0x3C, 0xB0, 0x0B, 0xA2, 0x04, 0x91, 0x22, +0x00, 0x00, 0xE1, 0x28, 0x4C, 0x3F, 0xFF, 0x28, 0xAA, 0x4C, 0x42, 0xFF, 0xA0, 0x04, 0x00, 0xB7, +0xB0, 0x09, 0x00, 0x80, 0x97, 0xB0, 0xA7, 0xB0, 0x85, 0xB4, 0xA0, 0x02, 0x00, 0xB7, 0xB0, 0x85, +0xB6, 0x60, 0xA0, 0x04, 0x00, 0xB7, 0xB0, 0x29, 0xFF, 0x7F, 0x97, 0xB0, 0x60, 0x0B, 0x7B, 0x18, +0x69, 0x00, 0x01, 0x5B, 0xF4, 0x0D, 0x00, 0xA2, 0x03, 0x23, 0x22, 0x00, 0x00, 0xE1, 0x64, 0x52, +0xD4, 0xB2, 0xD4, 0xB0, 0xA2, 0x02, 0x10, 0x22, 0x00, 0x00, 0xE1, 0xF4, 0x0A, 0x00, 0xAF, 0xFE, +0x1F, 0xE0, 0x48, 0xAF, 0xFC, 0x1F, 0xE0, 0x48, 0xA2, 0x03, 0x10, 0x22, 0x00, 0x00, 0xE1, 0x2B, +0x60, 0xA2, 0x00, 0x00, 0x24, 0x69, 0x30, 0x16, 0xA9, 0x08, 0x00, 0x85, 0xEC, 0x20, 0x14, 0x3D, +0xA5, 0xEC, 0x18, 0x69, 0x08, 0x00, 0x85, 0xEC, 0xE0, 0x18, 0x00, 0x90, 0xF0, 0x60, 0xA9, 0x04, +0x00, 0x85, 0xEC, 0x20, 0x14, 0x3D, 0xA5, 0xEC, 0x18, 0x69, 0x04, 0x00, 0x85, 0xEC, 0xE0, 0x38, +0x00, 0x90, 0xF0, 0x60, 0xA5, 0x74, 0x85, 0xDC, 0xA5, 0x76, 0x85, 0xDE, 0xB5, 0x7C, 0x85, 0xE0, +0xB5, 0x7E, 0x85, 0xE2, 0xDA, 0x20, 0x45, 0x3D, 0xFA, 0xA5, 0x70, 0x85, 0xDC, 0xA5, 0x72, 0x85, +0xDE, 0xB5, 0x78, 0x85, 0xE0, 0xB5, 0x7A, 0x85, 0xE2, 0xDA, 0x20, 0x45, 0x3D, 0xFA, 0x8A, 0x18, +0x69, 0x08, 0x00, 0xAA, 0x60, 0xA5, 0x5E, 0x85, 0xEA, 0xA5, 0x60, 0x3A, 0x85, 0xE8, 0x64, 0xDA, +0xA0, 0x00, 0x00, 0xB7, 0xDC, 0x85, 0xE4, 0xA6, 0xEC, 0x22, 0x6B, 0x39, 0xFE, 0x85, 0xD8, 0xA5, +0xE4, 0xA6, 0xEC, 0x22, 0xE0, 0x38, 0xFE, 0x05, 0xDA, 0x97, 0xE0, 0xA5, 0xD8, 0x85, 0xDA, 0xC8, +0xC8, 0xC6, 0xE8, 0x10, 0xDE, 0xA5, 0x60, 0x0A, 0xAA, 0x18, 0x65, 0xDC, 0x85, 0xDC, 0x8A, 0x18, +0x65, 0xE0, 0x85, 0xE0, 0xC6, 0xEA, 0x10, 0xC1, 0x60, 0x20, 0xB3, 0x0D, 0x18, 0x69, 0x00, 0x01, +0x5B, 0x08, 0x78, 0x24, 0xCC, 0x30, 0x08, 0x24, 0xCE, 0x30, 0x04, 0x22, 0xD0, 0x1F, 0xE0, 0x20, +0x55, 0x3E, 0x48, 0x20, 0xA2, 0x3C, 0xA3, 0x01, 0x0A, 0x0A, 0x0A, 0x24, 0x69, 0x10, 0x01, 0x0A, +0x38, 0xE3, 0x01, 0xF4, 0x00, 0x00, 0x48, 0xD4, 0xB2, 0xD4, 0xB0, 0xA2, 0x02, 0x19, 0x22, 0x00, +0x00, 0xE1, 0x90, 0x16, 0x48, 0x20, 0x8C, 0x3C, 0x24, 0xCC, 0x30, 0x08, 0x24, 0xCE, 0x30, 0x04, +0x22, 0xCC, 0x1F, 0xE0, 0xFA, 0x68, 0x28, 0x4C, 0x6E, 0xFF, 0x20, 0x8C, 0x3C, 0xFA, 0xA3, 0x0A, +0x85, 0x6C, 0xA3, 0x0C, 0x85, 0x6E, 0xA7, 0x6C, 0x85, 0x5E, 0xA0, 0x02, 0x00, 0xB7, 0x6C, 0x85, +0x60, 0xA5, 0x6C, 0x18, 0x69, 0x04, 0x00, 0x85, 0x70, 0xA5, 0x6E, 0x85, 0x72, 0x8A, 0x85, 0xB8, +0x38, 0xE5, 0x5E, 0x38, 0xE5, 0x5E, 0xA8, 0x18, 0x65, 0x70, 0x85, 0x74, 0xA5, 0x72, 0x85, 0x76, +0xB7, 0x74, 0x85, 0xC2, 0xC8, 0xC8, 0xB7, 0x74, 0x85, 0xC4, 0xA5, 0xB4, 0x18, 0x65, 0xB8, 0x85, +0x78, 0xA5, 0xB6, 0x69, 0x00, 0x00, 0x85, 0x7A, 0xA2, 0x00, 0x00, 0xB5, 0x78, 0x18, 0x65, 0xB8, +0x95, 0x7C, 0xB5, 0x7A, 0x69, 0x00, 0x00, 0x95, 0x7E, 0xE8, 0xE8, 0xE8, 0xE8, 0xE0, 0x34, 0x00, +0x90, 0xE9, 0x20, 0xE1, 0x3C, 0x24, 0xCC, 0x30, 0x08, 0x24, 0xCE, 0x30, 0x04, 0x22, 0xCC, 0x1F, +0xE0, 0x28, 0x4C, 0x6B, 0xFF, 0x0B, 0x3B, 0x5B, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xA7, 0x0E, +0x48, 0xA0, 0x02, 0x00, 0xB7, 0x0E, 0x1A, 0x0A, 0x48, 0xA2, 0x0B, 0x09, 0x22, 0x00, 0x00, 0xE1, +0x68, 0xFA, 0x2B, 0x60, 0x20, 0xB3, 0x0D, 0x18, 0x69, 0x00, 0x01, 0x5B, 0xA5, 0x6C, 0x83, 0x09, +0xA5, 0x6E, 0x83, 0x0B, 0x4C, 0x3F, 0xFF, 0x20, 0xB3, 0x0D, 0x18, 0x69, 0x00, 0x01, 0x5B, 0x08, +0x78, 0x24, 0xCE, 0x10, 0x08, 0x64, 0xCE, 0xA5, 0xCC, 0x30, 0x02, 0xC6, 0xCC, 0xE6, 0xCC, 0x30, +0x0A, 0xA5, 0xCC, 0xD0, 0x04, 0x22, 0xCC, 0x1F, 0xE0, 0x64, 0xCC, 0x28, 0x4C, 0x3F, 0xFF, 0x20, +0xB3, 0x0D, 0x18, 0x69, 0x00, 0x01, 0x5B, 0x08, 0x78, 0xA5, 0xCC, 0x30, 0x08, 0x24, 0xCE, 0x30, +0x04, 0x22, 0xD0, 0x1F, 0xE0, 0xC6, 0xCC, 0x28, 0x4C, 0x3F, 0xFF, 0x20, 0xB3, 0x0D, 0x18, 0x69, +0x00, 0x01, 0x5B, 0x08, 0x78, 0xA5, 0xCC, 0x30, 0x08, 0xA5, 0xCE, 0x30, 0x04, 0x22, 0xD0, 0x1F, +0xE0, 0xA9, 0x00, 0x80, 0x85, 0xCE, 0x28, 0x4C, 0x3F, 0xFF, 0x0B, 0x7B, 0xAA, 0x18, 0x69, 0x00, +0x01, 0x5B, 0x8B, 0xF4, 0x00, 0x00, 0xAB, 0xAB, 0x64, 0xEE, 0x24, 0xCC, 0x30, 0x6A, 0x24, 0xCE, +0x30, 0x66, 0xBD, 0x0E, 0x00, 0xC9, 0x00, 0x20, 0xD0, 0x5E, 0xBD, 0x0F, 0x00, 0xC9, 0x20, 0xE1, +0xD0, 0x56, 0xA9, 0x00, 0x80, 0x04, 0xEE, 0xBD, 0x00, 0x00, 0x38, 0xFD, 0x14, 0x00, 0xC5, 0xF8, +0x10, 0x02, 0xA5, 0xF8, 0x85, 0xF0, 0xBD, 0x02, 0x00, 0x38, 0xFD, 0x16, 0x00, 0xC5, 0xFA, 0x10, +0x02, 0xA5, 0xFA, 0x85, 0xF2, 0xBD, 0x04, 0x00, 0x38, 0xFD, 0x14, 0x00, 0xC5, 0xFC, 0x30, 0x02, +0xA5, 0xFC, 0x85, 0xF4, 0xBD, 0x06, 0x00, 0x38, 0xFD, 0x16, 0x00, 0xC5, 0xFE, 0x30, 0x02, 0xA5, +0xFE, 0x85, 0xF6, 0xA5, 0xF4, 0xC5, 0xF0, 0x30, 0x0F, 0xA5, 0xF6, 0xC5, 0xF2, 0x30, 0x09, 0x22, +0xD0, 0x1F, 0xE0, 0xA9, 0x00, 0x40, 0x04, 0xEE, 0xAB, 0x2B, 0x6B, 0x0B, 0x7B, 0xAA, 0x18, 0x69, +0x00, 0x01, 0x5B, 0x24, 0xEE, 0x70, 0x0B, 0xA9, 0x00, 0x20, 0x25, 0xEE, 0xF0, 0x08, 0x22, 0xD0, +0x1F, 0xE0, 0x22, 0xCC, 0x1F, 0xE0, 0x64, 0xEE, 0x2B, 0x6B, 0x20, 0xB3, 0x0D, 0x18, 0x69, 0x00, +0x01, 0x5B, 0x24, 0xCC, 0x30, 0x0A, 0x24, 0xCE, 0x30, 0x06, 0xDA, 0x22, 0xD0, 0x1F, 0xE0, 0xFA, +0xA3, 0x09, 0x85, 0x56, 0xA3, 0x0B, 0x85, 0x58, 0x24, 0xCC, 0x30, 0x08, 0x24, 0xCE, 0x30, 0x04, +0x22, 0xCC, 0x1F, 0xE0, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, 0x0D, 0x18, 0x69, 0x00, 0x01, 0x5B, 0x08, +0x78, 0xA3, 0x0A, 0xF0, 0x03, 0xA9, 0x00, 0x80, 0x85, 0x52, 0x28, 0x4C, 0x60, 0xFF, 0xAF, 0xCA, +0x03, 0xE1, 0x48, 0xAF, 0xC8, 0x03, 0xE1, 0x48, 0x0B, 0x3B, 0x5B, 0xA0, 0x10, 0x00, 0xB7, 0x03, +0xF0, 0x60, 0x18, 0x69, 0x00, 0x01, 0x5B, 0x24, 0x52, 0x10, 0x2A, 0xA5, 0x54, 0xF0, 0x03, 0x20, +0xA4, 0x40, 0xA3, 0x0C, 0x85, 0x5C, 0xA3, 0x0A, 0x85, 0x5A, 0xC9, 0xC8, 0x00, 0x90, 0x03, 0xA9, +0x00, 0x00, 0xAA, 0xBF, 0x00, 0x9D, 0xE1, 0x09, 0x40, 0x00, 0x9F, 0x00, 0x9D, 0xE1, 0xA9, 0x00, +0x80, 0x85, 0x54, 0x80, 0x2D, 0x24, 0xEE, 0x30, 0x0C, 0x24, 0xCC, 0x30, 0x08, 0x24, 0xCE, 0x30, +0x04, 0x22, 0xD0, 0x1F, 0xE0, 0xA3, 0x0A, 0x85, 0x56, 0xA3, 0x0C, 0x85, 0x58, 0x24, 0xCC, 0x30, +0x0A, 0x64, 0xCE, 0x24, 0xEE, 0x30, 0x06, 0x22, 0xCC, 0x1F, 0xE0, 0x80, 0x05, 0xA9, 0x00, 0x20, +0x04, 0xEE, 0x2B, 0x68, 0x68, 0x8B, 0xFA, 0x7A, 0x68, 0x68, 0x5A, 0xDA, 0xAB, 0x6B, 0x08, 0xC2, +0x30, 0xAF, 0xCA, 0x03, 0xE1, 0x48, 0xAF, 0xC8, 0x03, 0xE1, 0x48, 0x0B, 0x3B, 0x5B, 0xA0, 0x10, +0x00, 0xB7, 0x03, 0x18, 0x69, 0x00, 0x01, 0x5B, 0x20, 0xA4, 0x40, 0x24, 0xEE, 0x30, 0x0C, 0x24, +0xCC, 0x30, 0x08, 0x24, 0xCE, 0x30, 0x04, 0x22, 0xD0, 0x1F, 0xE0, 0xA5, 0x5A, 0x85, 0x56, 0xA5, +0x5C, 0x85, 0x58, 0x24, 0xCC, 0x30, 0x0A, 0x64, 0xCE, 0x24, 0xEE, 0x30, 0x06, 0x22, 0xCC, 0x1F, +0xE0, 0x80, 0x05, 0xA9, 0x00, 0x20, 0x04, 0xEE, 0x2B, 0x68, 0x68, 0x28, 0xA9, 0xDF, 0x8F, 0x32, +0xC0, 0x00, 0x18, 0x6B, 0xA5, 0x5A, 0xC9, 0xC8, 0x00, 0x90, 0x03, 0xA9, 0x00, 0x00, 0xAA, 0xBF, +0x00, 0x9D, 0xE1, 0x29, 0xBF, 0xFF, 0x9F, 0x00, 0x9D, 0xE1, 0x64, 0x54, 0x60, 0x8B, 0xF4, 0xE1, +0xE1, 0xAB, 0xAB, 0xA5, 0x56, 0x38, 0xE5, 0xC2, 0x85, 0x62, 0x85, 0xF8, 0x85, 0xD6, 0x18, 0x65, +0x5E, 0x85, 0x66, 0x85, 0xFC, 0xA5, 0x58, 0x38, 0xE5, 0xC4, 0x85, 0x64, 0x85, 0xFA, 0xA5, 0x60, +0x0A, 0x0A, 0x24, 0x69, 0x10, 0x01, 0x0A, 0x18, 0x65, 0x64, 0x85, 0x68, 0x85, 0xFE, 0x18, 0xA9, +0xFC, 0xFF, 0x24, 0x69, 0x10, 0x01, 0x0A, 0xA8, 0x25, 0xFA, 0x85, 0xFA, 0x98, 0x25, 0xFE, 0xB0, +0x05, 0x69, 0x04, 0x00, 0x80, 0x03, 0x69, 0x07, 0x00, 0x85, 0xFE, 0x24, 0x69, 0x30, 0x12, 0xA5, +0x64, 0x0A, 0xA5, 0x64, 0x6A, 0x29, 0xFE, 0xFF, 0x85, 0xD0, 0xA5, 0x64, 0x29, 0x03, 0x00, 0x80, +0x13, 0xA5, 0x64, 0x0A, 0x08, 0xA5, 0x64, 0x6A, 0x28, 0x6A, 0x29, 0xFE, 0xFF, 0x85, 0xD0, 0xA5, +0x64, 0x29, 0x07, 0x00, 0x0A, 0x0A, 0x0A, 0xAA, 0xB5, 0x70, 0x85, 0xBA, 0xB5, 0x71, 0x85, 0xBB, +0xB5, 0x74, 0x85, 0xBE, 0xB5, 0x75, 0x85, 0xBF, 0xA5, 0xB4, 0x85, 0xC6, 0xA5, 0xB5, 0x85, 0xC7, +0xA5, 0x62, 0x85, 0xD6, 0xA5, 0xD6, 0x10, 0x03, 0x4C, 0xB4, 0x41, 0xC9, 0xC8, 0x00, 0x30, 0x03, +0x4C, 0xD0, 0x41, 0xC5, 0x66, 0x30, 0x03, 0x4C, 0xD0, 0x41, 0xA5, 0x60, 0x3A, 0x85, 0xE8, 0xA5, +0xD0, 0x85, 0xD2, 0xA5, 0xD6, 0x0A, 0xAA, 0xBF, 0x74, 0xBD, 0xFF, 0x85, 0xCA, 0x64, 0xD4, 0xA4, +0xD2, 0x30, 0x27, 0xC0, 0xA0, 0x00, 0x10, 0x22, 0xB1, 0xCA, 0xA4, 0xD4, 0x97, 0xC6, 0xB7, 0xBE, +0xBB, 0xA4, 0xD2, 0x11, 0xCA, 0x9B, 0x57, 0xBA, 0xA4, 0xD2, 0x91, 0xCA, 0xE8, 0xE8, 0x86, 0xD4, +0xC8, 0xC8, 0x84, 0xD2, 0xC6, 0xE8, 0x10, 0xD7, 0x80, 0x0A, 0xE6, 0xD2, 0xE6, 0xD2, 0xE6, 0xD4, +0xE6, 0xD4, 0x80, 0xF0, 0xE6, 0xD6, 0xA5, 0x60, 0x0A, 0xAA, 0x18, 0x65, 0xBA, 0x85, 0xBA, 0x8A, +0x18, 0x65, 0xBE, 0x85, 0xBE, 0x8A, 0x1A, 0x1A, 0x18, 0x65, 0xC6, 0x85, 0xC6, 0x4C, 0x54, 0x41, +0xAB, 0x6B, 0x8B, 0xF4, 0xE1, 0xE1, 0xAB, 0xAB, 0xA5, 0x62, 0x85, 0xD6, 0xA5, 0xB4, 0x85, 0xC6, +0xA5, 0xB5, 0x85, 0xC7, 0x64, 0xD4, 0xA5, 0xD6, 0x10, 0x03, 0x4C, 0x3A, 0x42, 0xC9, 0xC8, 0x00, +0x30, 0x03, 0x4C, 0x48, 0x42, 0xC5, 0x66, 0x30, 0x03, 0x4C, 0x48, 0x42, 0xA5, 0x60, 0x3A, 0x85, +0xE8, 0xA5, 0xD0, 0x85, 0xD2, 0xA5, 0xD6, 0x0A, 0xAA, 0xBF, 0x74, 0xBD, 0xFF, 0x85, 0xCA, 0x64, +0xD4, 0xA4, 0xD2, 0x30, 0x1B, 0xC0, 0xA0, 0x00, 0x10, 0x16, 0xBB, 0xA4, 0xD4, 0xB7, 0xC6, 0xC8, +0xC8, 0x84, 0xD4, 0x9B, 0x91, 0xCA, 0xC8, 0xC8, 0x84, 0xD2, 0xC6, 0xE8, 0x10, 0xE3, 0x80, 0x0A, +0xE6, 0xD2, 0xE6, 0xD2, 0xE6, 0xD4, 0xE6, 0xD4, 0x80, 0xF0, 0xE6, 0xD6, 0xA5, 0x60, 0x1A, 0x0A, +0x18, 0x65, 0xC6, 0x85, 0xC6, 0x4C, 0xE6, 0x41, 0xAB, 0x6B, 0xA2, 0x00, 0x00, 0x80, 0x0D, 0xA2, +0x01, 0x00, 0x80, 0x08, 0xA2, 0x02, 0x00, 0x80, 0x03, 0xA2, 0x03, 0x00, 0x20, 0xB3, 0x0D, 0xA3, +0x09, 0x85, 0x70, 0xA3, 0x0B, 0x85, 0x72, 0x22, 0x89, 0x42, 0xFE, 0xAA, 0x4C, 0x6E, 0xFF, 0x20, +0xB3, 0x0D, 0x22, 0x40, 0x1E, 0xE0, 0xA3, 0x0D, 0x85, 0x70, 0xA3, 0x0F, 0x85, 0x72, 0xA2, 0x04, +0x00, 0x22, 0x89, 0x42, 0xFE, 0xAA, 0x4C, 0x84, 0xFF, 0x86, 0x38, 0x20, 0xC5, 0x0D, 0xB0, 0x04, +0x5C, 0x20, 0x1E, 0xE0, 0x8B, 0xA0, 0x1C, 0x00, 0xB7, 0x2A, 0x48, 0xC8, 0xB7, 0x2A, 0x83, 0x02, +0x6B, 0xA9, 0x80, 0x00, 0x85, 0x3A, 0x22, 0xF8, 0x1E, 0xE0, 0x90, 0x01, 0x6B, 0xA5, 0x38, 0xD0, +0x0C, 0x20, 0x21, 0x54, 0x90, 0x12, 0x22, 0x84, 0x1F, 0xE0, 0x90, 0x0C, 0x6B, 0x4C, 0xAB, 0x21, +0xA9, 0x80, 0x00, 0x85, 0x3A, 0x4C, 0xAB, 0x21, 0x20, 0xC0, 0x23, 0x20, 0xC9, 0x45, 0xA7, 0x74, +0xC9, 0x0A, 0x00, 0xD0, 0x20, 0xA0, 0x02, 0x00, 0xB7, 0x74, 0x85, 0xA6, 0xC8, 0xC8, 0xB7, 0x74, +0x85, 0xA8, 0xC8, 0xC8, 0xB7, 0x74, 0x85, 0xAA, 0xC8, 0xC8, 0xB7, 0x74, 0x85, 0xAC, 0x20, 0xD4, +0x45, 0x5C, 0x2C, 0x1F, 0xE0, 0x20, 0xD4, 0x45, 0xA0, 0x44, 0x00, 0xB7, 0x24, 0x48, 0xC8, 0xC8, +0xB7, 0x24, 0x48, 0xD4, 0x72, 0xD4, 0x70, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xA2, 0x04, 0x67, +0x22, 0x00, 0x00, 0xE1, 0x0B, 0x3B, 0x5B, 0xD4, 0x09, 0xD4, 0x07, 0xD4, 0x05, 0xD4, 0x03, 0xA2, +0x04, 0x69, 0x22, 0x00, 0x00, 0xE1, 0xD4, 0x05, 0xD4, 0x03, 0xD4, 0x0B, 0xD4, 0x0D, 0xA2, 0x04, +0x70, 0x22, 0x00, 0x00, 0xE1, 0xD4, 0x09, 0xD4, 0x07, 0xD4, 0x05, 0xD4, 0x03, 0xD4, 0x05, 0xD4, +0x03, 0xA2, 0x04, 0x73, 0x22, 0x00, 0x00, 0xE1, 0xA5, 0x03, 0xA6, 0x05, 0x2B, 0x7A, 0x7A, 0x7A, +0x7A, 0x7A, 0x7A, 0x85, 0x70, 0x86, 0x72, 0x22, 0xC0, 0x42, 0xFE, 0xD4, 0x72, 0xD4, 0x70, 0xA2, +0x04, 0x68, 0x22, 0x00, 0x00, 0xE1, 0xA9, 0x00, 0x00, 0x18, 0x6B, 0x8B, 0x22, 0xC4, 0x1E, 0xE0, +0x22, 0xE8, 0x1E, 0xE0, 0x22, 0x70, 0x1E, 0xE0, 0x20, 0xE6, 0x23, 0x20, 0x0E, 0x24, 0x22, 0xD0, +0x1E, 0xE0, 0x22, 0x00, 0x1E, 0xE0, 0xA5, 0x40, 0x1A, 0xC5, 0xAA, 0x10, 0x07, 0x85, 0x40, 0x20, +0x41, 0x24, 0x80, 0xE7, 0xAB, 0x6B, 0xA0, 0x02, 0x00, 0xA2, 0x00, 0x00, 0xB7, 0x74, 0x95, 0x00, +0xC8, 0xC8, 0xE8, 0xE8, 0xC0, 0x0A, 0x00, 0x90, 0xF3, 0x60, 0x20, 0xB3, 0x0D, 0xA9, 0x0A, 0x00, +0xA6, 0x0A, 0xA0, 0x00, 0x00, 0x20, 0x24, 0x11, 0xB0, 0x1B, 0x86, 0x50, 0x84, 0x52, 0x8A, 0x83, +0x09, 0x98, 0x83, 0x0B, 0x20, 0xA7, 0x45, 0xA9, 0x0A, 0x00, 0x87, 0x54, 0x20, 0x15, 0x44, 0x20, +0xB2, 0x45, 0xA9, 0x00, 0x00, 0xAA, 0x4C, 0x42, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0xAA, 0xA3, +0x0B, 0x48, 0xDA, 0xA2, 0x02, 0x10, 0x22, 0x00, 0x00, 0xE1, 0xAA, 0x4C, 0x6E, 0xFF, 0x20, 0xB3, +0x0D, 0xA3, 0x09, 0x85, 0x50, 0xA3, 0x0B, 0x85, 0x52, 0x20, 0xA7, 0x45, 0xA9, 0x0A, 0x00, 0xC7, +0x54, 0xF0, 0x05, 0x20, 0xDA, 0x45, 0xB0, 0x09, 0x20, 0x15, 0x44, 0x20, 0xB2, 0x45, 0x4C, 0x6B, +0xFF, 0xAA, 0x4C, 0x6E, 0xFF, 0xA0, 0x02, 0x00, 0xA9, 0x00, 0x00, 0x97, 0x54, 0xC8, 0xC8, 0xC0, +0x0A, 0x00, 0x90, 0xF7, 0x60, 0x20, 0xB3, 0x0D, 0xA3, 0x11, 0x85, 0x50, 0xA3, 0x13, 0x85, 0x52, +0x20, 0xA7, 0x45, 0xA9, 0x0A, 0x00, 0xC7, 0x54, 0xF0, 0x05, 0x20, 0xDA, 0x45, 0xB0, 0x22, 0xA0, +0x02, 0x00, 0xA3, 0x0D, 0x97, 0x54, 0xC8, 0xC8, 0xA3, 0x0F, 0x97, 0x54, 0xC8, 0xC8, 0xA3, 0x09, +0x97, 0x54, 0xC8, 0xC8, 0xA3, 0x0B, 0x97, 0x54, 0x20, 0x65, 0x44, 0x20, 0xB2, 0x45, 0x4C, 0x55, +0xFF, 0xAA, 0x4C, 0x58, 0xFF, 0xA0, 0x02, 0x00, 0xB7, 0x54, 0xA0, 0x06, 0x00, 0xD7, 0x54, 0x10, +0x0D, 0xA0, 0x04, 0x00, 0xB7, 0x54, 0xA0, 0x08, 0x00, 0xD7, 0x54, 0x10, 0x01, 0x60, 0x20, 0x15, +0x44, 0x80, 0xFA, 0x20, 0xB3, 0x0D, 0xA3, 0x0D, 0x85, 0x50, 0xA3, 0x0F, 0x85, 0x52, 0x20, 0xA7, +0x45, 0xA9, 0x0A, 0x00, 0xC7, 0x54, 0xF0, 0x05, 0x20, 0xDA, 0x45, 0xB0, 0x1F, 0xA3, 0x09, 0x85, +0x2A, 0xA3, 0x0B, 0x85, 0x2C, 0xA0, 0x00, 0x00, 0xB7, 0x2A, 0xC8, 0xC8, 0x97, 0x54, 0xC0, 0x08, +0x00, 0x90, 0xF5, 0x20, 0x65, 0x44, 0x20, 0xB2, 0x45, 0x4C, 0x81, 0xFF, 0xAA, 0x4C, 0x84, 0xFF, +0x20, 0xB3, 0x0D, 0xA3, 0x0D, 0x85, 0x50, 0xA3, 0x0F, 0x85, 0x52, 0x20, 0xA7, 0x45, 0xA3, 0x09, +0x85, 0x60, 0xA3, 0x0B, 0x85, 0x62, 0x20, 0xB8, 0x45, 0xA7, 0x54, 0xC7, 0x64, 0xF0, 0x05, 0x20, +0xE9, 0x45, 0xB0, 0x1E, 0xD4, 0x56, 0xD4, 0x54, 0xD4, 0x66, 0xD4, 0x64, 0xF4, 0x00, 0x00, 0xA7, +0x54, 0x48, 0xA2, 0x02, 0x2B, 0x22, 0x00, 0x00, 0xE1, 0x20, 0xB2, 0x45, 0x20, 0xC3, 0x45, 0x4C, +0x81, 0xFF, 0xAA, 0x4C, 0x84, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0x85, 0x50, 0xA3, 0x0B, 0x85, +0x52, 0x20, 0xA7, 0x45, 0xA3, 0x0D, 0x85, 0x60, 0xA3, 0x0F, 0x85, 0x62, 0x20, 0xB8, 0x45, 0xA7, +0x54, 0xC7, 0x64, 0xD0, 0x1B, 0xA8, 0x88, 0x88, 0xB7, 0x54, 0xD7, 0x64, 0xD0, 0x12, 0x88, 0x88, +0xD0, 0xF6, 0xA9, 0xFF, 0xFF, 0x83, 0x11, 0x20, 0xB2, 0x45, 0x20, 0xC3, 0x45, 0x4C, 0x81, 0xFF, +0xA9, 0x00, 0x00, 0x80, 0xF0, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0x85, 0x50, 0xA3, 0x0B, 0x85, 0x52, +0x20, 0xA7, 0x45, 0xA7, 0x54, 0xC9, 0x0A, 0x00, 0xD0, 0x23, 0xA0, 0x02, 0x00, 0xB7, 0x54, 0xA0, +0x06, 0x00, 0xD7, 0x54, 0x10, 0x0C, 0xA0, 0x04, 0x00, 0xB7, 0x54, 0xA0, 0x08, 0x00, 0xD7, 0x54, +0x30, 0x0B, 0xA9, 0xFF, 0xFF, 0x83, 0x0D, 0x20, 0xB2, 0x45, 0x4C, 0x6B, 0xFF, 0xA9, 0x00, 0x00, +0x80, 0xF3, 0x85, 0x2A, 0x86, 0x2C, 0xA0, 0x04, 0x00, 0xB7, 0x2A, 0x09, 0x00, 0x80, 0x97, 0x2A, +0x88, 0x88, 0xB7, 0x2A, 0xAA, 0xA7, 0x2A, 0x60, 0x85, 0x2A, 0x86, 0x2C, 0xA0, 0x04, 0x00, 0xB7, +0x2A, 0x29, 0xFF, 0x7F, 0x97, 0x2A, 0x60, 0xA2, 0x50, 0x00, 0x20, 0x07, 0x46, 0x85, 0x54, 0x86, +0x56, 0x60, 0xA2, 0x50, 0x00, 0x4C, 0x22, 0x46, 0xA2, 0x60, 0x00, 0x20, 0x07, 0x46, 0x85, 0x64, +0x86, 0x66, 0x60, 0xA2, 0x60, 0x00, 0x4C, 0x22, 0x46, 0xA2, 0x70, 0x00, 0x20, 0x07, 0x46, 0x85, +0x74, 0x86, 0x76, 0x60, 0xA2, 0x70, 0x00, 0x4C, 0x22, 0x46, 0xA2, 0x50, 0x00, 0x20, 0x35, 0x46, +0xB0, 0x06, 0x85, 0x54, 0x86, 0x56, 0xA7, 0x54, 0x60, 0xA2, 0x60, 0x00, 0x20, 0x35, 0x46, 0xB0, +0x06, 0x85, 0x64, 0x86, 0x66, 0xA7, 0x64, 0x60, 0xA2, 0x70, 0x00, 0x20, 0x35, 0x46, 0xB0, 0x06, +0x85, 0x74, 0x86, 0x76, 0xA7, 0x74, 0x60, 0xB5, 0x00, 0x85, 0x2A, 0xB5, 0x02, 0x85, 0x2C, 0xA0, +0x04, 0x00, 0xB7, 0x2A, 0x09, 0x00, 0x80, 0x97, 0x2A, 0xA0, 0x02, 0x00, 0xB7, 0x2A, 0xAA, 0xA7, +0x2A, 0x60, 0xB5, 0x00, 0x85, 0x2A, 0xB5, 0x02, 0x85, 0x2C, 0xA0, 0x04, 0x00, 0xB7, 0x2A, 0x29, +0xFF, 0x7F, 0x97, 0x2A, 0x60, 0x48, 0xF4, 0x00, 0x00, 0x48, 0x20, 0x22, 0x46, 0xD4, 0x2C, 0xD4, +0x2A, 0xA2, 0x02, 0x19, 0x22, 0x00, 0x00, 0xE1, 0xB0, 0x0D, 0x20, 0x0F, 0x46, 0x85, 0x2A, 0x86, +0x2C, 0x68, 0x87, 0x2A, 0xA5, 0x2A, 0x60, 0x7A, 0xA2, 0xFF, 0xFF, 0x60, 0x48, 0xDA, 0xA6, 0x0A, +0xA0, 0x00, 0x00, 0x20, 0x24, 0x11, 0xB0, 0x0D, 0x86, 0x2A, 0x84, 0x2C, 0xFA, 0x94, 0x02, 0xA4, +0x2A, 0x94, 0x00, 0x80, 0xD5, 0x7A, 0x7A, 0x60, 0x20, 0x91, 0x46, 0x20, 0xA2, 0x46, 0x22, 0xA4, +0x1E, 0xE0, 0x6B, 0x20, 0xD4, 0x45, 0x20, 0xC3, 0x45, 0x20, 0xB2, 0x45, 0x22, 0x16, 0x47, 0xFE, +0x6B, 0xA0, 0x18, 0x00, 0xB7, 0x24, 0x85, 0x50, 0xC8, 0xC8, 0xB7, 0x24, 0x85, 0x52, 0x20, 0xA7, +0x45, 0x60, 0xA0, 0x1C, 0x00, 0xB7, 0x24, 0x85, 0x60, 0xC8, 0xC8, 0xB7, 0x24, 0x85, 0x62, 0x20, +0xB8, 0x45, 0x60, 0xA5, 0x3C, 0xA6, 0x3E, 0x20, 0x82, 0x45, 0x85, 0x4C, 0x86, 0x4E, 0x18, 0x65, +0x28, 0x85, 0x5C, 0xA5, 0x4E, 0x69, 0x00, 0x00, 0x85, 0x5E, 0xA5, 0x28, 0x4A, 0x18, 0x65, 0x5C, +0x85, 0x6C, 0xA5, 0x5E, 0x69, 0x00, 0x00, 0x85, 0x6E, 0xA5, 0x28, 0x4A, 0x18, 0x65, 0x6C, 0x85, +0x7C, 0xA5, 0x6E, 0x69, 0x00, 0x00, 0x85, 0x7E, 0xA5, 0x28, 0x4A, 0x18, 0x65, 0x7C, 0x85, 0x58, +0xA5, 0x7E, 0x69, 0x00, 0x00, 0x85, 0x5A, 0xA5, 0x58, 0x18, 0x69, 0x1A, 0x00, 0x85, 0x68, 0xA5, +0x5A, 0x69, 0x00, 0x00, 0x85, 0x6A, 0xA5, 0x68, 0x18, 0x69, 0x1A, 0x00, 0x85, 0x78, 0xA5, 0x6A, +0x69, 0x00, 0x00, 0x85, 0x7A, 0x6B, 0xA5, 0x3C, 0xA6, 0x3E, 0x20, 0x98, 0x45, 0x6B, 0x64, 0xA4, +0xA5, 0x02, 0x85, 0x90, 0xA5, 0x06, 0x85, 0x92, 0xA5, 0x16, 0x85, 0x94, 0xA5, 0x54, 0x85, 0x80, +0xA5, 0x56, 0x85, 0x82, 0xA5, 0x5C, 0x85, 0x88, 0xA5, 0x5E, 0x85, 0x8A, 0xA5, 0x58, 0x85, 0x84, +0xA5, 0x5A, 0x85, 0x86, 0x22, 0xD4, 0x1E, 0xE0, 0xA5, 0x64, 0x85, 0x80, 0xA5, 0x66, 0x85, 0x82, +0xA5, 0x6C, 0x85, 0x88, 0xA5, 0x6E, 0x85, 0x8A, 0xA5, 0x68, 0x85, 0x84, 0xA5, 0x6A, 0x85, 0x86, +0x22, 0xD4, 0x1E, 0xE0, 0xA5, 0x74, 0x85, 0x80, 0xA5, 0x76, 0x85, 0x82, 0xA5, 0x7C, 0x85, 0x88, +0xA5, 0x7E, 0x85, 0x8A, 0xA5, 0x78, 0x85, 0x84, 0xA5, 0x7A, 0x85, 0x86, 0x22, 0xD4, 0x1E, 0xE0, +0x6B, 0x64, 0x9E, 0xA5, 0x58, 0x85, 0x84, 0xA5, 0x5A, 0x85, 0x86, 0x22, 0xD8, 0x1E, 0xE0, 0xF0, +0x02, 0xE6, 0x9E, 0xA5, 0x68, 0x85, 0x84, 0xA5, 0x6A, 0x85, 0x86, 0x22, 0xD8, 0x1E, 0xE0, 0xF0, +0x02, 0xE6, 0x9E, 0xA5, 0x78, 0x85, 0x84, 0xA5, 0x7A, 0x85, 0x86, 0x22, 0xD8, 0x1E, 0xE0, 0xF0, +0x02, 0xE6, 0x9E, 0xA5, 0x9E, 0xF0, 0x07, 0x20, 0x75, 0x48, 0x22, 0xE4, 0x1E, 0xE0, 0x6B, 0x64, +0xA4, 0xA5, 0x02, 0x85, 0x90, 0xA5, 0x06, 0x85, 0x92, 0xA5, 0x16, 0x85, 0x94, 0xA5, 0x54, 0x85, +0x80, 0xA5, 0x56, 0x85, 0x82, 0xA5, 0x5C, 0x85, 0x88, 0xA5, 0x5E, 0x85, 0x8A, 0xA5, 0x58, 0x85, +0x84, 0xA5, 0x5A, 0x85, 0x86, 0x22, 0xD4, 0x1E, 0xE0, 0xA5, 0x64, 0x85, 0x80, 0xA5, 0x66, 0x85, +0x82, 0xA5, 0x6C, 0x85, 0x88, 0xA5, 0x6E, 0x85, 0x8A, 0xA5, 0x68, 0x85, 0x84, 0xA5, 0x6A, 0x85, +0x86, 0x22, 0xD4, 0x1E, 0xE0, 0x6B, 0x64, 0x9E, 0xA5, 0x58, 0x85, 0x84, 0xA5, 0x5A, 0x85, 0x86, +0x22, 0xD8, 0x1E, 0xE0, 0xF0, 0x02, 0xE6, 0x9E, 0xA5, 0x68, 0x85, 0x84, 0xA5, 0x6A, 0x85, 0x86, +0x22, 0xD8, 0x1E, 0xE0, 0xF0, 0x02, 0xE6, 0x9E, 0xA5, 0x9E, 0xF0, 0x07, 0x20, 0x75, 0x48, 0x22, +0xE0, 0x1E, 0xE0, 0x6B, 0x64, 0xA4, 0xA5, 0x02, 0x85, 0x90, 0xA5, 0x06, 0x85, 0x92, 0xA5, 0x16, +0x85, 0x94, 0xA5, 0x54, 0x85, 0x80, 0xA5, 0x56, 0x85, 0x82, 0xA5, 0x5C, 0x85, 0x88, 0xA5, 0x5E, +0x85, 0x8A, 0xA5, 0x58, 0x85, 0x84, 0xA5, 0x5A, 0x85, 0x86, 0x22, 0xD4, 0x1E, 0xE0, 0x6B, 0xA5, +0x58, 0x85, 0x84, 0xA5, 0x5A, 0x85, 0x86, 0x22, 0xD8, 0x1E, 0xE0, 0xF0, 0x07, 0x20, 0x75, 0x48, +0x22, 0xDC, 0x1E, 0xE0, 0x6B, 0xA5, 0x90, 0x38, 0xE5, 0x94, 0x4A, 0x4A, 0x4A, 0x29, 0xFE, 0xFF, +0x85, 0x9A, 0xA5, 0x92, 0x3A, 0x38, 0xE5, 0x94, 0x4A, 0x4A, 0x4A, 0x29, 0xFE, 0xFF, 0x85, 0x9C, +0x60, 0xA6, 0x90, 0xA5, 0x92, 0x20, 0x53, 0x49, 0x20, 0x3F, 0x49, 0xA7, 0x80, 0xC9, 0x0A, 0x00, +0xF0, 0x3E, 0xE6, 0xA4, 0xA9, 0x00, 0x00, 0x87, 0x84, 0xA5, 0x80, 0xA0, 0x02, 0x00, 0x97, 0x84, +0xA5, 0x82, 0xC8, 0xC8, 0x97, 0x84, 0x20, 0x2A, 0x49, 0x20, 0x16, 0x49, 0xA9, 0x01, 0xC0, 0xC8, +0xC8, 0x97, 0x84, 0xA0, 0x02, 0x00, 0xB7, 0x80, 0xA0, 0x12, 0x00, 0x97, 0x84, 0xA5, 0x90, 0xC8, +0xC8, 0x97, 0x84, 0xA5, 0x92, 0xC8, 0xC8, 0x97, 0x84, 0xA5, 0x94, 0xC8, 0xC8, 0x97, 0x84, 0x6B, +0xA9, 0x00, 0x80, 0x87, 0x84, 0xA5, 0x9A, 0xA0, 0x02, 0x00, 0x97, 0x84, 0xA5, 0x96, 0xC8, 0xC8, +0x97, 0x84, 0xA5, 0x9C, 0xC8, 0xC8, 0x97, 0x84, 0xA5, 0x98, 0xC8, 0xC8, 0x97, 0x84, 0x20, 0x16, +0x49, 0xA0, 0x02, 0x00, 0xB7, 0x80, 0xA0, 0x10, 0x00, 0x97, 0x84, 0xA0, 0x06, 0x00, 0xB7, 0x80, +0xA0, 0x12, 0x00, 0x97, 0x84, 0x6B, 0xA5, 0x88, 0xA0, 0x0A, 0x00, 0x97, 0x84, 0xA5, 0x8A, 0xC8, +0xC8, 0x97, 0x84, 0xA5, 0x28, 0xC8, 0xC8, 0x97, 0x84, 0x60, 0xA5, 0x80, 0x18, 0x69, 0x0A, 0x00, +0xA0, 0x06, 0x00, 0x97, 0x84, 0xA5, 0x82, 0x69, 0x00, 0x00, 0xC8, 0xC8, 0x97, 0x84, 0x60, 0xA4, +0x9A, 0xF0, 0x02, 0x88, 0x88, 0xA9, 0x00, 0x00, 0x97, 0x88, 0xC8, 0xC8, 0xC4, 0x9C, 0x90, 0xF8, +0xF0, 0xF6, 0x60, 0x9B, 0x3A, 0x38, 0xE5, 0x94, 0xAA, 0x4A, 0x4A, 0x4A, 0x29, 0xFE, 0xFF, 0x85, +0x9C, 0x8A, 0x29, 0x0F, 0x00, 0x0A, 0xAA, 0xBF, 0xA7, 0x49, 0xFE, 0x85, 0x98, 0x98, 0x38, 0xE5, +0x94, 0xAA, 0x4A, 0x4A, 0x4A, 0x29, 0xFE, 0xFF, 0x85, 0x9A, 0x8A, 0x29, 0x0F, 0x00, 0x0A, 0xAA, +0xBF, 0x87, 0x49, 0xFE, 0x85, 0x96, 0x60, 0xFF, 0xFF, 0x7F, 0xFF, 0x3F, 0xFF, 0x1F, 0xFF, 0x0F, +0xFF, 0x07, 0xFF, 0x03, 0xFF, 0x01, 0xFF, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x1F, 0x00, +0x0F, 0x00, 0x07, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0xE0, 0x00, 0xF0, 0x00, 0xF8, +0x00, 0xFC, 0x00, 0xFE, 0x00, 0xFF, 0x00, 0xFF, 0x80, 0xFF, 0xC0, 0xFF, 0xE0, 0xFF, 0xF0, 0xFF, +0xF8, 0xFF, 0xFC, 0xFF, 0xFE, 0xFF, 0xFF, 0xA7, 0x84, 0x10, 0x03, 0x4C, 0xA1, 0x4A, 0xA5, 0x40, +0xA0, 0x10, 0x00, 0xD7, 0x84, 0x30, 0x0A, 0xA0, 0x12, 0x00, 0xD7, 0x84, 0x10, 0x3A, 0x4C, 0xD8, +0x4A, 0xA0, 0x02, 0x00, 0xB7, 0x84, 0x18, 0x69, 0x0A, 0x00, 0xAA, 0xC8, 0xC8, 0xB7, 0x84, 0x69, +0x00, 0x00, 0xA0, 0x08, 0x00, 0x97, 0x84, 0x88, 0x88, 0x8A, 0x97, 0x84, 0x20, 0xDB, 0x4A, 0xA6, +0x90, 0xA5, 0x92, 0x20, 0x53, 0x49, 0xA0, 0x0A, 0x00, 0xB7, 0x84, 0x85, 0x88, 0xC8, 0xC8, 0xB7, +0x84, 0x85, 0x8A, 0x20, 0x3F, 0x49, 0x80, 0x03, 0x20, 0xDB, 0x4A, 0xA7, 0x8C, 0xA0, 0x10, 0x00, +0x97, 0x84, 0xA5, 0x8C, 0xA6, 0x8E, 0x1A, 0xD0, 0x01, 0xE8, 0x1A, 0xD0, 0x01, 0xE8, 0x85, 0x8C, +0x86, 0x8E, 0xA7, 0x8C, 0xC9, 0xFF, 0x3F, 0xF0, 0x39, 0xAA, 0xE6, 0x8C, 0xD0, 0x02, 0xE6, 0x8E, +0xE6, 0x8C, 0xD0, 0x02, 0xE6, 0x8E, 0xA7, 0x8C, 0xE6, 0x8C, 0xD0, 0x02, 0xE6, 0x8E, 0xE6, 0x8C, +0xD0, 0x02, 0xE6, 0x8E, 0xC5, 0x90, 0x30, 0xDA, 0xF0, 0xD8, 0xE4, 0x92, 0x10, 0xD4, 0xE4, 0x90, +0x10, 0x02, 0xA6, 0x90, 0xC5, 0x92, 0x30, 0x02, 0xA5, 0x92, 0x20, 0x53, 0x49, 0x20, 0x17, 0x4B, +0x80, 0xC0, 0xA5, 0x8C, 0xA6, 0x8E, 0x1A, 0xD0, 0x01, 0xE8, 0x1A, 0xD0, 0x01, 0xE8, 0x85, 0x8C, +0x86, 0x8E, 0xA7, 0x8C, 0xA0, 0x12, 0x00, 0x97, 0x84, 0xC5, 0x40, 0xF0, 0x02, 0x10, 0x03, 0x4C, +0x1B, 0x4A, 0xA0, 0x06, 0x00, 0xA5, 0x8C, 0x97, 0x84, 0xC8, 0xC8, 0xA5, 0x8E, 0x97, 0x84, 0x80, +0x34, 0xA5, 0x40, 0xA0, 0x10, 0x00, 0xD7, 0x84, 0x30, 0x1A, 0xA0, 0x12, 0x00, 0xD7, 0x84, 0x10, +0x13, 0xA7, 0x84, 0x29, 0x01, 0x00, 0xD0, 0x20, 0x20, 0xFE, 0x4A, 0xA7, 0x84, 0x09, 0x01, 0x00, +0x87, 0x84, 0x80, 0x11, 0xA7, 0x84, 0x29, 0x01, 0x00, 0xF0, 0x0D, 0x20, 0xFE, 0x4A, 0xA7, 0x84, +0x29, 0xFE, 0xFF, 0x87, 0x84, 0xC2, 0x02, 0x6B, 0xE2, 0x02, 0x6B, 0xA0, 0x14, 0x00, 0xB7, 0x84, +0x85, 0x90, 0xA0, 0x16, 0x00, 0xB7, 0x84, 0x85, 0x92, 0xA0, 0x18, 0x00, 0xB7, 0x84, 0x85, 0x94, +0xA0, 0x06, 0x00, 0xB7, 0x84, 0x85, 0x8C, 0xC8, 0xC8, 0xB7, 0x84, 0x85, 0x8E, 0x60, 0xA0, 0x02, +0x00, 0xB7, 0x84, 0x85, 0x9A, 0xC8, 0xC8, 0xB7, 0x84, 0x85, 0x96, 0xC8, 0xC8, 0xB7, 0x84, 0x85, +0x9C, 0xC8, 0xC8, 0xB7, 0x84, 0x85, 0x98, 0x8B, 0xA0, 0x0A, 0x00, 0xB7, 0x84, 0x85, 0x88, 0x8B, +0xC8, 0xB7, 0x84, 0x83, 0x00, 0xAB, 0x20, 0x2B, 0x4B, 0xAB, 0x60, 0xA5, 0x96, 0xA4, 0x9A, 0xC4, +0x9C, 0x90, 0x02, 0x25, 0x98, 0x51, 0x88, 0x91, 0x88, 0x80, 0x07, 0xA9, 0xFF, 0xFF, 0x51, 0x88, +0x91, 0x88, 0xC8, 0xC8, 0xC4, 0x9C, 0x90, 0xF3, 0xD0, 0x06, 0xA5, 0x98, 0x51, 0x88, 0x91, 0x88, +0x60, 0x24, 0x0B, 0x10, 0x17, 0xA4, 0x9A, 0xF0, 0x02, 0x88, 0x88, 0xB7, 0x5C, 0x37, 0x6C, 0x37, +0x7C, 0x20, 0xD8, 0x4B, 0xC4, 0x9C, 0x90, 0xF3, 0xF0, 0xF1, 0x80, 0x15, 0xA4, 0x9A, 0xF0, 0x02, +0x88, 0x88, 0xB7, 0x5C, 0x37, 0x6C, 0x37, 0x7C, 0x20, 0xFD, 0x4B, 0xC4, 0x9C, 0x90, 0xF3, 0xF0, +0xF1, 0x6B, 0x24, 0x0B, 0x10, 0x15, 0xA4, 0x9A, 0xF0, 0x02, 0x88, 0x88, 0xB7, 0x5C, 0x37, 0x6C, +0x20, 0xD8, 0x4B, 0xC4, 0x9C, 0x90, 0xF5, 0xF0, 0xF3, 0x80, 0x13, 0xA4, 0x9A, 0xF0, 0x02, 0x88, +0x88, 0xB7, 0x5C, 0x37, 0x6C, 0x20, 0xFD, 0x4B, 0xC4, 0x9C, 0x90, 0xF5, 0xF0, 0xF3, 0x6B, 0x24, +0x0B, 0x10, 0x13, 0xA4, 0x9A, 0xF0, 0x02, 0x88, 0x88, 0xB7, 0x5C, 0x20, 0xD8, 0x4B, 0xC4, 0x9C, +0x90, 0xF7, 0xF0, 0xF5, 0x80, 0x11, 0xA4, 0x9A, 0xF0, 0x02, 0x88, 0x88, 0xB7, 0x5C, 0x20, 0xFD, +0x4B, 0xC4, 0x9C, 0x90, 0xF7, 0xF0, 0xF5, 0x6B, 0x48, 0x29, 0xFF, 0x00, 0x0A, 0xAA, 0xBF, 0x3B, +0x50, 0xFE, 0xAA, 0x98, 0x0A, 0xA8, 0x8A, 0x97, 0x4C, 0x68, 0xEB, 0x29, 0xFF, 0x00, 0x0A, 0xAA, +0xBF, 0x3B, 0x50, 0xFE, 0xC8, 0xC8, 0x97, 0x4C, 0x98, 0x4A, 0xA8, 0xC8, 0x60, 0x48, 0x29, 0xFF, +0x00, 0x0A, 0x0A, 0xAA, 0xBF, 0x3D, 0x4C, 0xFE, 0x48, 0xBF, 0x3B, 0x4C, 0xFE, 0xAA, 0x98, 0x0A, +0x0A, 0xA8, 0x8A, 0x97, 0x4C, 0xC8, 0xC8, 0x68, 0x97, 0x4C, 0x68, 0xEB, 0x29, 0xFF, 0x00, 0x0A, +0x0A, 0xAA, 0xBF, 0x3D, 0x4C, 0xFE, 0x48, 0xBF, 0x3B, 0x4C, 0xFE, 0xC8, 0xC8, 0x97, 0x4C, 0xC8, +0xC8, 0x68, 0x97, 0x4C, 0xC8, 0xC8, 0x98, 0x4A, 0x4A, 0xA8, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x0F, 0x00, 0x00, +0x00, 0x0F, 0x0F, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0xF0, 0x00, 0x00, +0x00, 0xF0, 0x0F, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, +0x00, 0xFF, 0x0F, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x0F, 0x00, 0x00, 0x00, +0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0xFF, 0x00, 0x0F, 0x0F, 0x00, 0x00, +0x0F, 0x0F, 0x0F, 0x00, 0x0F, 0x0F, 0xF0, 0x00, 0x0F, 0x0F, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0x00, +0x0F, 0xF0, 0x0F, 0x00, 0x0F, 0xF0, 0xF0, 0x00, 0x0F, 0xF0, 0xFF, 0x00, 0x0F, 0xFF, 0x00, 0x00, +0x0F, 0xFF, 0x0F, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0x00, 0xF0, 0x00, 0x00, 0x00, +0xF0, 0x00, 0x0F, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xFF, 0x00, 0xF0, 0x0F, 0x00, 0x00, +0xF0, 0x0F, 0x0F, 0x00, 0xF0, 0x0F, 0xF0, 0x00, 0xF0, 0x0F, 0xFF, 0x00, 0xF0, 0xF0, 0x00, 0x00, +0xF0, 0xF0, 0x0F, 0x00, 0xF0, 0xF0, 0xF0, 0x00, 0xF0, 0xF0, 0xFF, 0x00, 0xF0, 0xFF, 0x00, 0x00, +0xF0, 0xFF, 0x0F, 0x00, 0xF0, 0xFF, 0xF0, 0x00, 0xF0, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, +0xFF, 0x00, 0x0F, 0x00, 0xFF, 0x00, 0xF0, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x0F, 0x00, 0x00, +0xFF, 0x0F, 0x0F, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, 0x00, 0x00, +0xFF, 0xF0, 0x0F, 0x00, 0xFF, 0xF0, 0xF0, 0x00, 0xFF, 0xF0, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, +0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x0F, +0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0x0F, 0x00, 0x0F, +0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x0F, 0xF0, 0x0F, 0x00, 0x0F, 0xFF, 0x0F, 0x00, 0xF0, 0x00, 0x0F, +0x00, 0xF0, 0x0F, 0x0F, 0x00, 0xF0, 0xF0, 0x0F, 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0xFF, 0x00, 0x0F, +0x00, 0xFF, 0x0F, 0x0F, 0x00, 0xFF, 0xF0, 0x0F, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x00, 0x00, 0x0F, +0x0F, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0xF0, 0x0F, 0x0F, 0x00, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x0F, +0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0xFF, 0x0F, 0x0F, 0xF0, 0x00, 0x0F, +0x0F, 0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xFF, 0x0F, 0x0F, 0xFF, 0x00, 0x0F, +0x0F, 0xFF, 0x0F, 0x0F, 0x0F, 0xFF, 0xF0, 0x0F, 0x0F, 0xFF, 0xFF, 0x0F, 0xF0, 0x00, 0x00, 0x0F, +0xF0, 0x00, 0x0F, 0x0F, 0xF0, 0x00, 0xF0, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0x00, 0x0F, +0xF0, 0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xFF, 0x0F, 0xF0, 0xF0, 0x00, 0x0F, +0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x00, 0x0F, +0xF0, 0xFF, 0x0F, 0x0F, 0xF0, 0xFF, 0xF0, 0x0F, 0xF0, 0xFF, 0xFF, 0x0F, 0xFF, 0x00, 0x00, 0x0F, +0xFF, 0x00, 0x0F, 0x0F, 0xFF, 0x00, 0xF0, 0x0F, 0xFF, 0x00, 0xFF, 0x0F, 0xFF, 0x0F, 0x00, 0x0F, +0xFF, 0x0F, 0x0F, 0x0F, 0xFF, 0x0F, 0xF0, 0x0F, 0xFF, 0x0F, 0xFF, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, +0xFF, 0xF0, 0x0F, 0x0F, 0xFF, 0xF0, 0xF0, 0x0F, 0xFF, 0xF0, 0xFF, 0x0F, 0xFF, 0xFF, 0x00, 0x0F, +0xFF, 0xFF, 0x0F, 0x0F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0xF0, +0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x0F, 0x00, 0xF0, +0x00, 0x0F, 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0xF0, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xF0, 0x00, 0xF0, +0x00, 0xF0, 0x0F, 0xF0, 0x00, 0xF0, 0xF0, 0xF0, 0x00, 0xF0, 0xFF, 0xF0, 0x00, 0xFF, 0x00, 0xF0, +0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0xF0, 0xF0, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, 0x00, 0x00, 0xF0, +0x0F, 0x00, 0x0F, 0xF0, 0x0F, 0x00, 0xF0, 0xF0, 0x0F, 0x00, 0xFF, 0xF0, 0x0F, 0x0F, 0x00, 0xF0, +0x0F, 0x0F, 0x0F, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xFF, 0xF0, 0x0F, 0xF0, 0x00, 0xF0, +0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xF0, 0xFF, 0xF0, 0x0F, 0xFF, 0x00, 0xF0, +0x0F, 0xFF, 0x0F, 0xF0, 0x0F, 0xFF, 0xF0, 0xF0, 0x0F, 0xFF, 0xFF, 0xF0, 0xF0, 0x00, 0x00, 0xF0, +0xF0, 0x00, 0x0F, 0xF0, 0xF0, 0x00, 0xF0, 0xF0, 0xF0, 0x00, 0xFF, 0xF0, 0xF0, 0x0F, 0x00, 0xF0, +0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0x0F, 0xFF, 0xF0, 0xF0, 0xF0, 0x00, 0xF0, +0xF0, 0xF0, 0x0F, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xF0, 0xF0, 0xFF, 0x00, 0xF0, +0xF0, 0xFF, 0x0F, 0xF0, 0xF0, 0xFF, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xF0, 0xFF, 0x00, 0x00, 0xF0, +0xFF, 0x00, 0x0F, 0xF0, 0xFF, 0x00, 0xF0, 0xF0, 0xFF, 0x00, 0xFF, 0xF0, 0xFF, 0x0F, 0x00, 0xF0, +0xFF, 0x0F, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xF0, 0xFF, 0x0F, 0xFF, 0xF0, 0xFF, 0xF0, 0x00, 0xF0, +0xFF, 0xF0, 0x0F, 0xF0, 0xFF, 0xF0, 0xF0, 0xF0, 0xFF, 0xF0, 0xFF, 0xF0, 0xFF, 0xFF, 0x00, 0xF0, +0xFF, 0xFF, 0x0F, 0xF0, 0xFF, 0xFF, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, +0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x0F, 0x00, 0xFF, +0x00, 0x0F, 0x0F, 0xFF, 0x00, 0x0F, 0xF0, 0xFF, 0x00, 0x0F, 0xFF, 0xFF, 0x00, 0xF0, 0x00, 0xFF, +0x00, 0xF0, 0x0F, 0xFF, 0x00, 0xF0, 0xF0, 0xFF, 0x00, 0xF0, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, +0x00, 0xFF, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xFF, +0x0F, 0x00, 0x0F, 0xFF, 0x0F, 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x00, 0xFF, +0x0F, 0x0F, 0x0F, 0xFF, 0x0F, 0x0F, 0xF0, 0xFF, 0x0F, 0x0F, 0xFF, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, +0x0F, 0xF0, 0x0F, 0xFF, 0x0F, 0xF0, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0xFF, 0x0F, 0xFF, 0x00, 0xFF, +0x0F, 0xFF, 0x0F, 0xFF, 0x0F, 0xFF, 0xF0, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0xFF, +0xF0, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xF0, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, 0x00, 0xFF, +0xF0, 0x0F, 0x0F, 0xFF, 0xF0, 0x0F, 0xF0, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xF0, 0xF0, 0x00, 0xFF, +0xF0, 0xF0, 0x0F, 0xFF, 0xF0, 0xF0, 0xF0, 0xFF, 0xF0, 0xF0, 0xFF, 0xFF, 0xF0, 0xFF, 0x00, 0xFF, +0xF0, 0xFF, 0x0F, 0xFF, 0xF0, 0xFF, 0xF0, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, +0xFF, 0x00, 0x0F, 0xFF, 0xFF, 0x00, 0xF0, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xFF, +0xFF, 0x0F, 0x0F, 0xFF, 0xFF, 0x0F, 0xF0, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, +0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xF0, 0xF0, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, +0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x03, 0x00, +0x0C, 0x00, 0x0F, 0x00, 0x30, 0x00, 0x33, 0x00, 0x3C, 0x00, 0x3F, 0x00, 0xC0, 0x00, 0xC3, 0x00, +0xCC, 0x00, 0xCF, 0x00, 0xF0, 0x00, 0xF3, 0x00, 0xFC, 0x00, 0xFF, 0x03, 0x00, 0x03, 0x03, 0x03, +0x0C, 0x03, 0x0F, 0x03, 0x30, 0x03, 0x33, 0x03, 0x3C, 0x03, 0x3F, 0x03, 0xC0, 0x03, 0xC3, 0x03, +0xCC, 0x03, 0xCF, 0x03, 0xF0, 0x03, 0xF3, 0x03, 0xFC, 0x03, 0xFF, 0x0C, 0x00, 0x0C, 0x03, 0x0C, +0x0C, 0x0C, 0x0F, 0x0C, 0x30, 0x0C, 0x33, 0x0C, 0x3C, 0x0C, 0x3F, 0x0C, 0xC0, 0x0C, 0xC3, 0x0C, +0xCC, 0x0C, 0xCF, 0x0C, 0xF0, 0x0C, 0xF3, 0x0C, 0xFC, 0x0C, 0xFF, 0x0F, 0x00, 0x0F, 0x03, 0x0F, +0x0C, 0x0F, 0x0F, 0x0F, 0x30, 0x0F, 0x33, 0x0F, 0x3C, 0x0F, 0x3F, 0x0F, 0xC0, 0x0F, 0xC3, 0x0F, +0xCC, 0x0F, 0xCF, 0x0F, 0xF0, 0x0F, 0xF3, 0x0F, 0xFC, 0x0F, 0xFF, 0x30, 0x00, 0x30, 0x03, 0x30, +0x0C, 0x30, 0x0F, 0x30, 0x30, 0x30, 0x33, 0x30, 0x3C, 0x30, 0x3F, 0x30, 0xC0, 0x30, 0xC3, 0x30, +0xCC, 0x30, 0xCF, 0x30, 0xF0, 0x30, 0xF3, 0x30, 0xFC, 0x30, 0xFF, 0x33, 0x00, 0x33, 0x03, 0x33, +0x0C, 0x33, 0x0F, 0x33, 0x30, 0x33, 0x33, 0x33, 0x3C, 0x33, 0x3F, 0x33, 0xC0, 0x33, 0xC3, 0x33, +0xCC, 0x33, 0xCF, 0x33, 0xF0, 0x33, 0xF3, 0x33, 0xFC, 0x33, 0xFF, 0x3C, 0x00, 0x3C, 0x03, 0x3C, +0x0C, 0x3C, 0x0F, 0x3C, 0x30, 0x3C, 0x33, 0x3C, 0x3C, 0x3C, 0x3F, 0x3C, 0xC0, 0x3C, 0xC3, 0x3C, +0xCC, 0x3C, 0xCF, 0x3C, 0xF0, 0x3C, 0xF3, 0x3C, 0xFC, 0x3C, 0xFF, 0x3F, 0x00, 0x3F, 0x03, 0x3F, +0x0C, 0x3F, 0x0F, 0x3F, 0x30, 0x3F, 0x33, 0x3F, 0x3C, 0x3F, 0x3F, 0x3F, 0xC0, 0x3F, 0xC3, 0x3F, +0xCC, 0x3F, 0xCF, 0x3F, 0xF0, 0x3F, 0xF3, 0x3F, 0xFC, 0x3F, 0xFF, 0xC0, 0x00, 0xC0, 0x03, 0xC0, +0x0C, 0xC0, 0x0F, 0xC0, 0x30, 0xC0, 0x33, 0xC0, 0x3C, 0xC0, 0x3F, 0xC0, 0xC0, 0xC0, 0xC3, 0xC0, +0xCC, 0xC0, 0xCF, 0xC0, 0xF0, 0xC0, 0xF3, 0xC0, 0xFC, 0xC0, 0xFF, 0xC3, 0x00, 0xC3, 0x03, 0xC3, +0x0C, 0xC3, 0x0F, 0xC3, 0x30, 0xC3, 0x33, 0xC3, 0x3C, 0xC3, 0x3F, 0xC3, 0xC0, 0xC3, 0xC3, 0xC3, +0xCC, 0xC3, 0xCF, 0xC3, 0xF0, 0xC3, 0xF3, 0xC3, 0xFC, 0xC3, 0xFF, 0xCC, 0x00, 0xCC, 0x03, 0xCC, +0x0C, 0xCC, 0x0F, 0xCC, 0x30, 0xCC, 0x33, 0xCC, 0x3C, 0xCC, 0x3F, 0xCC, 0xC0, 0xCC, 0xC3, 0xCC, +0xCC, 0xCC, 0xCF, 0xCC, 0xF0, 0xCC, 0xF3, 0xCC, 0xFC, 0xCC, 0xFF, 0xCF, 0x00, 0xCF, 0x03, 0xCF, +0x0C, 0xCF, 0x0F, 0xCF, 0x30, 0xCF, 0x33, 0xCF, 0x3C, 0xCF, 0x3F, 0xCF, 0xC0, 0xCF, 0xC3, 0xCF, +0xCC, 0xCF, 0xCF, 0xCF, 0xF0, 0xCF, 0xF3, 0xCF, 0xFC, 0xCF, 0xFF, 0xF0, 0x00, 0xF0, 0x03, 0xF0, +0x0C, 0xF0, 0x0F, 0xF0, 0x30, 0xF0, 0x33, 0xF0, 0x3C, 0xF0, 0x3F, 0xF0, 0xC0, 0xF0, 0xC3, 0xF0, +0xCC, 0xF0, 0xCF, 0xF0, 0xF0, 0xF0, 0xF3, 0xF0, 0xFC, 0xF0, 0xFF, 0xF3, 0x00, 0xF3, 0x03, 0xF3, +0x0C, 0xF3, 0x0F, 0xF3, 0x30, 0xF3, 0x33, 0xF3, 0x3C, 0xF3, 0x3F, 0xF3, 0xC0, 0xF3, 0xC3, 0xF3, +0xCC, 0xF3, 0xCF, 0xF3, 0xF0, 0xF3, 0xF3, 0xF3, 0xFC, 0xF3, 0xFF, 0xFC, 0x00, 0xFC, 0x03, 0xFC, +0x0C, 0xFC, 0x0F, 0xFC, 0x30, 0xFC, 0x33, 0xFC, 0x3C, 0xFC, 0x3F, 0xFC, 0xC0, 0xFC, 0xC3, 0xFC, +0xCC, 0xFC, 0xCF, 0xFC, 0xF0, 0xFC, 0xF3, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0x00, 0xFF, 0x03, 0xFF, +0x0C, 0xFF, 0x0F, 0xFF, 0x30, 0xFF, 0x33, 0xFF, 0x3C, 0xFF, 0x3F, 0xFF, 0xC0, 0xFF, 0xC3, 0xFF, +0xCC, 0xFF, 0xCF, 0xFF, 0xF0, 0xFF, 0xF3, 0xFF, 0xFC, 0xFF, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x0D, +0x85, 0x2A, 0xA3, 0x0F, 0x85, 0x2C, 0xA7, 0x2A, 0xAA, 0xA0, 0x02, 0x00, 0xB7, 0x2A, 0x85, 0xD8, +0x86, 0xD6, 0xA9, 0x00, 0x00, 0x83, 0x11, 0xA3, 0x09, 0x85, 0xBC, 0xA3, 0x0B, 0x85, 0xBE, 0xA2, +0xBC, 0x00, 0x20, 0x07, 0x46, 0x85, 0xC0, 0x86, 0xC2, 0xA0, 0x02, 0x00, 0xA5, 0xD6, 0xD7, 0xC0, +0x30, 0x45, 0xA0, 0x06, 0x00, 0xD7, 0xC0, 0x10, 0x3E, 0xA5, 0xD8, 0xA0, 0x04, 0x00, 0xD7, 0xC0, +0x30, 0x35, 0xA0, 0x08, 0x00, 0xD7, 0xC0, 0x10, 0x2E, 0xA9, 0x0A, 0x00, 0xC7, 0xC0, 0xD0, 0x07, +0xA9, 0xFF, 0xFF, 0x83, 0x11, 0x80, 0x20, 0xC8, 0xC8, 0xA5, 0xD6, 0xD7, 0xC0, 0x30, 0x18, 0xC8, +0xC8, 0xB7, 0xC0, 0xC9, 0xFF, 0x3F, 0xF0, 0xEF, 0xC5, 0xD8, 0x30, 0x02, 0xD0, 0xF1, 0xA3, 0x11, +0x49, 0xFF, 0xFF, 0x83, 0x11, 0x80, 0xE8, 0xA3, 0x11, 0x49, 0xFF, 0xFF, 0x1A, 0x83, 0x11, 0xA2, +0xBC, 0x00, 0x20, 0x22, 0x46, 0x4C, 0x81, 0xFF, 0x20, 0xB3, 0x0D, 0xA9, 0x00, 0x00, 0x83, 0x11, +0x85, 0xBC, 0x85, 0xBE, 0xA3, 0x09, 0x85, 0x50, 0xA3, 0x0B, 0x85, 0x52, 0xA2, 0x50, 0x00, 0x20, +0x07, 0x46, 0x85, 0x54, 0x86, 0x56, 0xA3, 0x0D, 0x38, 0xE9, 0x02, 0x00, 0x85, 0x64, 0xA3, 0x0F, +0xE9, 0x00, 0x00, 0x85, 0x66, 0x20, 0xC9, 0x5E, 0xA5, 0xAE, 0xC5, 0xB2, 0x10, 0x10, 0xA5, 0xB0, +0xC5, 0xB4, 0x10, 0x0A, 0xA7, 0x54, 0xC9, 0x0A, 0x00, 0xD0, 0x06, 0x82, 0xE7, 0x00, 0x82, 0xE9, +0x00, 0x38, 0xA5, 0xB4, 0xE5, 0xB0, 0x18, 0x69, 0x0F, 0x00, 0x4A, 0x4A, 0x4A, 0x29, 0xFE, 0xFF, +0x85, 0xC4, 0xA2, 0xBC, 0x00, 0x20, 0x5C, 0x46, 0x90, 0x0B, 0x48, 0xA2, 0x50, 0x00, 0x20, 0x22, +0x46, 0xFA, 0x4C, 0x84, 0xFF, 0x85, 0xC0, 0x86, 0xC2, 0xA4, 0xC4, 0x88, 0x88, 0xA9, 0x00, 0x00, +0x97, 0xC0, 0x88, 0x88, 0x10, 0xFA, 0x64, 0xC6, 0xA0, 0x0A, 0x00, 0xA5, 0xAE, 0xD7, 0x54, 0x30, +0x5F, 0xC8, 0xC8, 0xB7, 0x54, 0xC8, 0xC8, 0xC9, 0xFF, 0x3F, 0xF0, 0xEF, 0xC5, 0xB4, 0x10, 0xF3, +0x48, 0xA5, 0xC6, 0x49, 0xFF, 0xFF, 0x85, 0xC6, 0x68, 0xC5, 0xB0, 0x30, 0xE6, 0x5A, 0x38, 0xE5, +0xB0, 0x85, 0x2A, 0x29, 0x0F, 0x00, 0x0A, 0xAA, 0xBF, 0x90, 0x53, 0xFE, 0x85, 0x2C, 0xA5, 0x2A, +0x4A, 0x4A, 0x4A, 0x29, 0xFE, 0xFF, 0xA8, 0xB7, 0xC0, 0x45, 0x2C, 0x97, 0xC0, 0x7A, 0x80, 0xC3, +0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, +0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, +0xA5, 0xC6, 0xD0, 0x41, 0x84, 0x2A, 0xA4, 0xC4, 0x88, 0x88, 0xB7, 0xC0, 0xD0, 0x37, 0x88, 0x88, +0x10, 0xF8, 0xA4, 0x2A, 0xB7, 0x54, 0xC8, 0xC8, 0xC5, 0xB2, 0x10, 0x2E, 0xB7, 0x54, 0xC8, 0xC8, +0xC9, 0xFF, 0x3F, 0xF0, 0xEF, 0xC5, 0xB0, 0x10, 0x09, 0xA5, 0xC6, 0x49, 0xFF, 0xFF, 0x85, 0xC6, +0x80, 0xEA, 0xC5, 0xB4, 0x30, 0x0F, 0xA5, 0xC6, 0xD0, 0x0B, 0xB7, 0x54, 0xC8, 0xC8, 0xC9, 0xFF, +0x3F, 0xD0, 0xF7, 0x80, 0xCF, 0xA9, 0x01, 0x00, 0x83, 0x11, 0xA2, 0x50, 0x00, 0x20, 0x22, 0x46, +0xA5, 0xC0, 0x05, 0xC2, 0xF0, 0x15, 0xA2, 0xBC, 0x00, 0x20, 0x22, 0x46, 0xA5, 0xBE, 0x48, 0xA5, +0xBC, 0x48, 0xA2, 0x02, 0x10, 0x22, 0x00, 0x00, 0xE1, 0xB0, 0x03, 0x4C, 0x81, 0xFF, 0x4C, 0x84, +0xFF, 0xA0, 0x94, 0x00, 0xB7, 0x24, 0x85, 0xBC, 0xC8, 0xC8, 0xB7, 0x24, 0x85, 0xBE, 0x05, 0xBC, +0xF0, 0x02, 0x38, 0x60, 0x18, 0x60, 0x97, 0xC0, 0xC8, 0xC8, 0x8A, 0x97, 0xC0, 0xC8, 0xC8, 0x60, +0xA2, 0xBC, 0x00, 0x20, 0x07, 0x46, 0x85, 0xC0, 0x86, 0xC2, 0xA0, 0x02, 0x00, 0xB7, 0xC0, 0x48, +0x18, 0x69, 0x10, 0x00, 0x97, 0xC0, 0xC7, 0xC0, 0x90, 0x16, 0xF0, 0x14, 0xA7, 0xC0, 0x18, 0x69, +0x00, 0x01, 0xB0, 0x31, 0xA2, 0xBC, 0x00, 0x20, 0x35, 0x46, 0xB0, 0x2C, 0x85, 0xC0, 0x86, 0xC2, +0x7A, 0xA6, 0xA8, 0xA5, 0xA6, 0x20, 0x36, 0x54, 0xA6, 0xAC, 0xA5, 0xA6, 0x20, 0x36, 0x54, 0xA6, +0xA8, 0xA5, 0xAA, 0x20, 0x36, 0x54, 0xA6, 0xAC, 0xA5, 0xAA, 0x20, 0x36, 0x54, 0xA2, 0xBC, 0x00, +0x20, 0x22, 0x46, 0x18, 0x6B, 0xA9, 0x33, 0x04, 0x48, 0xA2, 0xBC, 0x00, 0x20, 0x22, 0x46, 0x68, +0x38, 0x6B, 0xA2, 0xBC, 0x00, 0x20, 0x07, 0x46, 0x85, 0xC0, 0x86, 0xC2, 0xA0, 0x02, 0x00, 0xB7, +0xC0, 0x85, 0xC6, 0x38, 0xA5, 0xAC, 0xE5, 0xA8, 0xD0, 0x03, 0x4C, 0xFC, 0x55, 0x85, 0xCA, 0x10, +0x04, 0x49, 0xFF, 0xFF, 0x1A, 0x85, 0x2A, 0xA5, 0xA6, 0x85, 0xAE, 0xA5, 0xA8, 0x85, 0xB0, 0xA5, +0xAA, 0x85, 0xB2, 0xA5, 0xAC, 0x85, 0xB4, 0x38, 0xA5, 0xB2, 0xE5, 0xAE, 0x85, 0xCC, 0x10, 0x04, +0x49, 0xFF, 0xFF, 0x1A, 0xC5, 0x2A, 0x30, 0x02, 0xA5, 0x2A, 0x1A, 0xC9, 0x00, 0x20, 0xB0, 0x18, +0x0A, 0x0A, 0x0A, 0x18, 0x65, 0xC6, 0xB0, 0x10, 0xC7, 0xC0, 0x90, 0x1D, 0xF0, 0x1B, 0xA2, 0xBC, +0x00, 0x20, 0x35, 0x46, 0x90, 0x0F, 0x80, 0x03, 0xA9, 0x33, 0x04, 0x48, 0xA2, 0xBC, 0x00, 0x20, +0x22, 0x46, 0x68, 0x38, 0x6B, 0x85, 0xC0, 0x86, 0xC2, 0xA5, 0xAE, 0xC5, 0xB2, 0xD0, 0x13, 0xA5, +0xAE, 0xA6, 0xB0, 0xA4, 0xC6, 0x20, 0x36, 0x54, 0xA5, 0xB2, 0xA6, 0xB4, 0x20, 0x36, 0x54, 0x4C, +0xF1, 0x55, 0x30, 0x0E, 0xA6, 0xB2, 0x85, 0xB2, 0x86, 0xAE, 0xA5, 0xB0, 0xA6, 0xB4, 0x85, 0xB4, +0x86, 0xB0, 0xA5, 0xAE, 0x85, 0xD6, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xD4, 0xCA, 0xD4, 0xCC, +0xA2, 0x0B, 0x0E, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x85, 0xCE, 0x68, 0x85, 0xD0, 0xA5, 0xB0, 0x85, +0xD4, 0xA9, 0x00, 0x80, 0x85, 0xD2, 0xA5, 0xD0, 0x0A, 0xA5, 0xD0, 0x6A, 0x85, 0x2A, 0xA5, 0xCE, +0x6A, 0x18, 0x65, 0xD2, 0x85, 0xD2, 0xA5, 0x2A, 0x65, 0xD4, 0x85, 0xD4, 0xA5, 0xD0, 0x30, 0x11, +0xD0, 0x16, 0x18, 0xA5, 0xCE, 0x65, 0xD2, 0x85, 0xD2, 0xA5, 0xD0, 0x65, 0xD4, 0x85, 0xD4, 0x80, +0x07, 0x49, 0xFF, 0xFF, 0xF0, 0x02, 0xE6, 0xD4, 0xA5, 0xB0, 0x85, 0xD8, 0xA4, 0xC6, 0xA5, 0xD8, +0xC5, 0xD4, 0xF0, 0x1A, 0xA5, 0xD6, 0x97, 0xC0, 0xC8, 0xC8, 0xA5, 0xD8, 0x97, 0xC0, 0xC8, 0xC8, +0xA5, 0xD6, 0x97, 0xC0, 0xC8, 0xC8, 0xA5, 0xD4, 0x97, 0xC0, 0x85, 0xD8, 0xC8, 0xC8, 0xE6, 0xD6, +0x18, 0xA5, 0xCE, 0x65, 0xD2, 0x85, 0xD2, 0xA5, 0xD0, 0x65, 0xD4, 0x85, 0xD4, 0xA5, 0xD6, 0xC5, +0xB2, 0xD0, 0xCB, 0xA5, 0xD8, 0xC5, 0xB4, 0xF0, 0x18, 0xA5, 0xD6, 0x97, 0xC0, 0xC8, 0xC8, 0xA5, +0xD8, 0x97, 0xC0, 0xC8, 0xC8, 0xA5, 0xD6, 0x97, 0xC0, 0xC8, 0xC8, 0xA5, 0xB4, 0x97, 0xC0, 0xC8, +0xC8, 0x98, 0xA0, 0x02, 0x00, 0x97, 0xC0, 0x4A, 0x4A, 0x3A, 0x85, 0xC4, 0xA2, 0xBC, 0x00, 0x20, +0x22, 0x46, 0x18, 0x6B, 0xA2, 0xBC, 0x00, 0x20, 0x07, 0x46, 0x85, 0xC0, 0x86, 0xC2, 0xA2, 0x50, +0x00, 0x20, 0x07, 0x46, 0x85, 0x54, 0x86, 0x56, 0xA0, 0x02, 0x00, 0xB7, 0xC0, 0x85, 0xC6, 0xA7, +0x54, 0x0A, 0x18, 0x65, 0xC6, 0xC7, 0x54, 0x90, 0x22, 0xF0, 0x20, 0x69, 0x00, 0x01, 0xB0, 0x0A, +0xA2, 0xBC, 0x00, 0x20, 0x35, 0x46, 0x90, 0x0F, 0x80, 0x03, 0xA9, 0x33, 0x04, 0x48, 0xA2, 0xBC, +0x00, 0x20, 0x22, 0x46, 0x68, 0x38, 0x6B, 0x85, 0xC0, 0x86, 0xC2, 0xA9, 0x0A, 0x00, 0xC7, 0x54, +0xD0, 0x5C, 0xA0, 0x08, 0x00, 0xB7, 0x54, 0x48, 0xA0, 0x06, 0x00, 0xB7, 0x54, 0x48, 0xA0, 0x04, +0x00, 0xB7, 0x54, 0x48, 0xA0, 0x02, 0x00, 0xB7, 0x54, 0xA4, 0xC6, 0xAA, 0x97, 0xC0, 0xC8, 0xC8, +0xA3, 0x01, 0x97, 0xC0, 0xC8, 0xC8, 0x8A, 0x97, 0xC0, 0xC8, 0xC8, 0xA3, 0x05, 0x97, 0xC0, 0xC8, +0xC8, 0xA3, 0x03, 0xAA, 0x97, 0xC0, 0xC8, 0xC8, 0x68, 0x97, 0xC0, 0xC8, 0xC8, 0x68, 0x97, 0xC0, +0xC8, 0xC8, 0x68, 0x97, 0xC0, 0xC8, 0xC8, 0x98, 0xA0, 0x02, 0x00, 0x97, 0xC0, 0x4A, 0x4A, 0x3A, +0x85, 0xC4, 0xA2, 0xBC, 0x00, 0x20, 0x22, 0x46, 0x18, 0x6B, 0xA5, 0xC6, 0x80, 0xEA, 0xA0, 0x0A, +0x00, 0xB7, 0x54, 0xC9, 0xFF, 0x3F, 0xF0, 0xF2, 0x85, 0x2A, 0xC8, 0xC8, 0xB7, 0x54, 0xC8, 0xC8, +0xC9, 0xFF, 0x3F, 0xF0, 0xEC, 0xAA, 0xB7, 0x54, 0x85, 0x2C, 0xC8, 0xC8, 0x84, 0xC8, 0xA4, 0xC6, +0xA5, 0x2A, 0x97, 0xC0, 0xC8, 0xC8, 0x8A, 0x97, 0xC0, 0xC8, 0xC8, 0xA5, 0x2A, 0x97, 0xC0, 0xC8, +0xC8, 0xA5, 0x2C, 0x97, 0xC0, 0xC8, 0xC8, 0x84, 0xC6, 0xA4, 0xC8, 0x80, 0xCF, 0xA6, 0xC4, 0xF0, +0x17, 0xA0, 0x04, 0x00, 0xB7, 0xC0, 0x85, 0xE0, 0xA0, 0x06, 0x00, 0xB7, 0xC0, 0x85, 0xE2, 0xA0, +0x08, 0x00, 0x84, 0xDC, 0x64, 0xDA, 0x80, 0x35, 0x6B, 0xA5, 0xDA, 0xD0, 0x08, 0x38, 0xA5, 0xDC, +0xE9, 0x08, 0x00, 0x85, 0xDE, 0x82, 0x81, 0x00, 0xCA, 0xCA, 0xF0, 0xED, 0xA5, 0xDA, 0xD0, 0x0A, +0xE6, 0xDA, 0xA5, 0xDC, 0x38, 0xE9, 0x08, 0x00, 0x85, 0xDE, 0xB7, 0xC0, 0x85, 0xE0, 0xC8, 0xC8, +0xB7, 0xC0, 0x85, 0xE2, 0xC8, 0xC8, 0x84, 0xDC, 0xE0, 0x01, 0x00, 0xF0, 0x40, 0xA4, 0xDC, 0xB7, +0xC0, 0x85, 0x2A, 0xC8, 0xC8, 0xB7, 0xC0, 0x85, 0x2C, 0xC8, 0xC8, 0x84, 0xDC, 0xC5, 0xE2, 0xD0, +0x06, 0xA5, 0x2A, 0xC5, 0xE0, 0xF0, 0xC1, 0xA5, 0xDA, 0xF0, 0x10, 0xA4, 0xDE, 0xA5, 0xE0, 0x97, +0xC0, 0xC8, 0xC8, 0xA5, 0xE2, 0x97, 0xC0, 0xC8, 0xC8, 0x84, 0xDE, 0xCA, 0xF0, 0x2B, 0xE0, 0x01, +0x00, 0xF0, 0x12, 0xA5, 0x2A, 0x85, 0xE0, 0xA5, 0x2C, 0x85, 0xE2, 0x80, 0xC0, 0xA5, 0xE0, 0x85, +0x2A, 0xA5, 0xE2, 0x85, 0x2C, 0xA5, 0xDA, 0xF0, 0x17, 0xA5, 0x2A, 0xA4, 0xDE, 0x97, 0xC0, 0xA5, +0x2C, 0xC8, 0xC8, 0x97, 0xC0, 0xC8, 0xC8, 0x84, 0xDE, 0xA5, 0xDE, 0x4A, 0x4A, 0x3A, 0x85, 0xC4, +0x6B, 0xA0, 0x04, 0x00, 0x84, 0xD0, 0xA2, 0x01, 0x00, 0x86, 0xD8, 0x98, 0x48, 0xA5, 0xC4, 0x0A, +0x0A, 0x48, 0x68, 0x85, 0xD2, 0x68, 0x85, 0xD0, 0xC6, 0xD8, 0xA5, 0xD0, 0x85, 0xC6, 0xA5, 0xD2, +0x85, 0xC8, 0x18, 0x65, 0xC6, 0x6A, 0x29, 0xFC, 0xFF, 0xA8, 0xB7, 0xC0, 0x85, 0xD4, 0xC8, 0xC8, +0xB7, 0xC0, 0x85, 0xD6, 0xA4, 0xC6, 0xA5, 0xD4, 0x80, 0x04, 0xC8, 0xC8, 0xC8, 0xC8, 0xD7, 0xC0, +0x30, 0x16, 0xD0, 0xF6, 0xA5, 0xD6, 0xC8, 0xC8, 0xD7, 0xC0, 0x30, 0x08, 0xF0, 0x06, 0xC8, 0xC8, +0xA5, 0xD4, 0x80, 0xEA, 0x88, 0x88, 0xA5, 0xD4, 0x84, 0xC6, 0xA4, 0xC8, 0x80, 0x04, 0x88, 0x88, +0x88, 0x88, 0xD7, 0xC0, 0x30, 0xF8, 0xD0, 0x14, 0xA5, 0xD6, 0xC8, 0xC8, 0xD7, 0xC0, 0x10, 0x0A, +0x98, 0x38, 0xE9, 0x06, 0x00, 0xA8, 0xA5, 0xD4, 0x80, 0xE8, 0x88, 0x88, 0x84, 0xC8, 0xC4, 0xC6, +0x90, 0x43, 0xF0, 0x2A, 0xB7, 0xC0, 0x85, 0x2A, 0xC8, 0xC8, 0xB7, 0xC0, 0x85, 0x2C, 0xA4, 0xC6, +0xB7, 0xC0, 0xAA, 0xC8, 0xC8, 0xB7, 0xC0, 0xA4, 0xC8, 0xC8, 0xC8, 0x97, 0xC0, 0x8A, 0x88, 0x88, +0x97, 0xC0, 0xA4, 0xC6, 0xA5, 0x2A, 0x97, 0xC0, 0xC8, 0xC8, 0xA5, 0x2C, 0x97, 0xC0, 0xA4, 0xC6, +0xC8, 0xC8, 0xC8, 0xC8, 0x84, 0xC6, 0xA4, 0xC8, 0x88, 0x88, 0x88, 0x88, 0x84, 0xC8, 0xC4, 0xC6, +0x90, 0x03, 0x4C, 0xD4, 0x57, 0x38, 0xA5, 0xD2, 0xE5, 0xC6, 0x85, 0x2A, 0x38, 0xA5, 0xC8, 0xE5, +0xD0, 0xC5, 0x2A, 0xB0, 0x12, 0xA5, 0xC6, 0xC5, 0xD2, 0xB0, 0x06, 0xE6, 0xD8, 0x48, 0xA5, 0xD2, +0x48, 0xA5, 0xC8, 0x85, 0xD2, 0x80, 0x10, 0xA5, 0xD0, 0xC5, 0xC8, 0xB0, 0x06, 0xE6, 0xD8, 0x48, +0xA5, 0xC8, 0x48, 0xA5, 0xC6, 0x85, 0xD0, 0xA5, 0xD0, 0xC5, 0xD2, 0xB0, 0x03, 0x4C, 0xBA, 0x57, +0xA5, 0xD8, 0xF0, 0x03, 0x4C, 0xB2, 0x57, 0x6B, 0xA9, 0x0A, 0x00, 0x87, 0x54, 0xA9, 0x00, 0x00, +0xA0, 0x02, 0x00, 0x97, 0x54, 0xA0, 0x04, 0x00, 0x97, 0x54, 0xA0, 0x06, 0x00, 0x97, 0x54, 0xA0, +0x08, 0x00, 0x97, 0x54, 0xA9, 0x04, 0x00, 0xC5, 0xC4, 0x90, 0x2E, 0xD0, 0x26, 0xA8, 0xB7, 0xC0, +0xA0, 0x02, 0x00, 0x97, 0x54, 0xA0, 0x06, 0x00, 0xB7, 0xC0, 0xA0, 0x04, 0x00, 0x97, 0x54, 0xA0, +0x10, 0x00, 0xB7, 0xC0, 0xA0, 0x06, 0x00, 0x97, 0x54, 0xA0, 0x12, 0x00, 0xB7, 0xC0, 0xA0, 0x08, +0x00, 0x97, 0x54, 0xA0, 0x0A, 0x00, 0x4C, 0xAB, 0x59, 0xA0, 0x04, 0x00, 0xB7, 0xC0, 0xA0, 0x02, +0x00, 0x97, 0x54, 0xA0, 0x06, 0x00, 0xB7, 0xC0, 0x85, 0xCA, 0x85, 0xCC, 0xA6, 0xC4, 0xCA, 0xF0, +0x16, 0xC8, 0xC8, 0xC8, 0xC8, 0xB7, 0xC0, 0xC5, 0xCA, 0x10, 0x04, 0x85, 0xCA, 0x80, 0xEF, 0xC5, +0xCC, 0x30, 0xEB, 0x85, 0xCC, 0x80, 0xE7, 0xA0, 0x04, 0x00, 0xA5, 0xCA, 0x97, 0x54, 0xA0, 0x08, +0x00, 0xA5, 0xCC, 0x97, 0x54, 0xA5, 0xC4, 0x0A, 0x0A, 0xA8, 0xB7, 0xC0, 0xA0, 0x06, 0x00, 0x97, +0x54, 0xA5, 0xC4, 0x1A, 0x0A, 0x0A, 0x69, 0x0C, 0x00, 0xA2, 0x50, 0x00, 0x20, 0x35, 0x46, 0xB0, +0x14, 0x85, 0x54, 0x86, 0x56, 0xA0, 0x04, 0x00, 0x84, 0xC6, 0xA9, 0x0A, 0x00, 0x85, 0xC8, 0xB7, +0xC0, 0xA6, 0xC4, 0x80, 0x16, 0x6B, 0xA4, 0xC6, 0xB7, 0xC0, 0xC5, 0xCE, 0xF0, 0x1F, 0x84, 0xC6, +0xA4, 0xC8, 0xA9, 0xFF, 0x3F, 0x97, 0x54, 0xC8, 0xC8, 0x84, 0xC8, 0xA4, 0xC6, 0xB7, 0xC0, 0x84, +0xC6, 0xA4, 0xC8, 0x85, 0xCE, 0x97, 0x54, 0xC8, 0xC8, 0x84, 0xC8, 0xA4, 0xC6, 0xC8, 0xC8, 0xB7, +0xC0, 0xC8, 0xC8, 0x84, 0xC6, 0xA4, 0xC8, 0x97, 0x54, 0xC8, 0xC8, 0x84, 0xC8, 0xCA, 0xD0, 0xC6, +0xA9, 0xFF, 0x3F, 0x97, 0x54, 0xC8, 0xC8, 0x97, 0x54, 0xC8, 0xC8, 0x98, 0xA2, 0x50, 0x00, 0x20, +0x35, 0x46, 0x85, 0x54, 0x86, 0x56, 0x6B, 0x20, 0xB3, 0x0D, 0x20, 0x21, 0x54, 0xB0, 0x40, 0xA0, +0x96, 0x00, 0xB7, 0x24, 0xD0, 0x39, 0xA2, 0xBC, 0x00, 0xA9, 0x00, 0x01, 0x20, 0x5C, 0x46, 0xB0, +0x2A, 0x85, 0xC0, 0x86, 0xC2, 0xA5, 0xBC, 0xA0, 0x94, 0x00, 0x97, 0x24, 0xA5, 0xBE, 0xA0, 0x96, +0x00, 0x97, 0x24, 0xA0, 0x02, 0x00, 0xA9, 0x04, 0x00, 0x97, 0xC0, 0xA2, 0xBC, 0x00, 0x20, 0x22, +0x46, 0xA2, 0x04, 0x27, 0x22, 0x00, 0x00, 0xE1, 0x4C, 0x3F, 0xFF, 0xAA, 0x4C, 0x42, 0xFF, 0xA2, +0x31, 0x40, 0x4C, 0x42, 0xFF, 0x20, 0xB3, 0x0D, 0x20, 0x21, 0x54, 0x90, 0x72, 0xA9, 0x00, 0x00, +0xA0, 0x94, 0x00, 0x97, 0x24, 0xA0, 0x96, 0x00, 0x97, 0x24, 0xA2, 0x04, 0x28, 0x22, 0x00, 0x00, +0xE1, 0xA2, 0xBC, 0x00, 0x20, 0x07, 0x46, 0x85, 0xC0, 0x86, 0xC2, 0xA0, 0x02, 0x00, 0xB7, 0xC0, +0x4A, 0x4A, 0x3A, 0x85, 0xC4, 0xA3, 0x09, 0x85, 0x50, 0xA3, 0x0B, 0x85, 0x52, 0xA2, 0x50, 0x00, +0x20, 0x07, 0x46, 0x85, 0x54, 0x86, 0x56, 0x22, 0x90, 0x1F, 0xE0, 0x22, 0x8C, 0x1F, 0xE0, 0x22, +0x94, 0x1F, 0xE0, 0x64, 0xC4, 0x90, 0x04, 0xE6, 0xC4, 0x85, 0xBA, 0xA2, 0xBC, 0x00, 0x20, 0x22, +0x46, 0xA2, 0x50, 0x00, 0x20, 0x22, 0x46, 0xA5, 0xBE, 0x48, 0xA5, 0xBC, 0x48, 0xA2, 0x02, 0x10, +0x22, 0x00, 0x00, 0xE1, 0xA4, 0xC4, 0xF0, 0x05, 0xA6, 0xBA, 0x4C, 0x6E, 0xFF, 0xB0, 0x03, 0x4C, +0x6B, 0xFF, 0xAA, 0x4C, 0x6E, 0xFF, 0xA9, 0x0A, 0x00, 0xC7, 0x54, 0xD0, 0x49, 0xA5, 0xE0, 0x85, +0xD0, 0xA5, 0xE2, 0x85, 0xD2, 0xA0, 0x02, 0x00, 0xB7, 0x54, 0x87, 0xD0, 0xA0, 0x04, 0x00, 0xB7, +0x54, 0xA0, 0x02, 0x00, 0x97, 0xD0, 0xA0, 0x0A, 0x00, 0x97, 0xD0, 0xA0, 0x06, 0x00, 0xB7, 0x54, +0xA0, 0x08, 0x00, 0x97, 0xD0, 0xB7, 0x54, 0xA0, 0x04, 0x00, 0x97, 0xD0, 0xA0, 0x0C, 0x00, 0x97, +0xD0, 0xA9, 0xFF, 0x3F, 0xA0, 0x06, 0x00, 0x97, 0xD0, 0xA0, 0x0E, 0x00, 0x97, 0xD0, 0xA0, 0x10, +0x00, 0x97, 0xD0, 0x64, 0xD4, 0x60, 0xA5, 0x54, 0x85, 0xD0, 0xA5, 0x56, 0x85, 0xD2, 0xA9, 0x0A, +0x00, 0x85, 0xD4, 0x60, 0xA9, 0x0A, 0x00, 0xC7, 0x64, 0xD0, 0x52, 0xA5, 0xE0, 0x85, 0xD6, 0xA5, +0xE2, 0x85, 0xD8, 0xA0, 0x02, 0x00, 0xB7, 0x64, 0xA0, 0x12, 0x00, 0x97, 0xD6, 0xA0, 0x04, 0x00, +0xB7, 0x64, 0xA0, 0x14, 0x00, 0x97, 0xD6, 0xA0, 0x1C, 0x00, 0x97, 0xD6, 0xA0, 0x06, 0x00, 0xB7, +0x64, 0xA0, 0x1A, 0x00, 0x97, 0xD6, 0xA0, 0x08, 0x00, 0xB7, 0x64, 0xA0, 0x16, 0x00, 0x97, 0xD6, +0xA0, 0x1E, 0x00, 0x97, 0xD6, 0xA9, 0xFF, 0x3F, 0xA0, 0x18, 0x00, 0x97, 0xD6, 0xA0, 0x20, 0x00, +0x97, 0xD6, 0xA0, 0x22, 0x00, 0x97, 0xD6, 0xA9, 0x12, 0x00, 0x85, 0xDA, 0x60, 0xA5, 0x64, 0x85, +0xD6, 0xA5, 0x66, 0x85, 0xD8, 0xA9, 0x0A, 0x00, 0x85, 0xDA, 0x60, 0x64, 0x7C, 0x64, 0x7E, 0x80, +0x0E, 0x64, 0x7C, 0xA9, 0xFF, 0xFF, 0x80, 0x05, 0xA9, 0xFF, 0xFF, 0x85, 0x7C, 0x85, 0x7E, 0xA4, +0xF2, 0xB7, 0xEE, 0x85, 0x78, 0xC8, 0xC8, 0x84, 0xF2, 0xA4, 0xF4, 0xB7, 0xE0, 0x85, 0x7A, 0xC8, +0xC8, 0x84, 0xF4, 0xA5, 0x7A, 0xC5, 0x78, 0x30, 0x5C, 0xD0, 0x39, 0xC9, 0xFF, 0x3F, 0xF0, 0x77, +0xA5, 0x7C, 0xC5, 0x7E, 0xD0, 0x0A, 0xA5, 0x78, 0xA4, 0xF6, 0x97, 0xE0, 0xC8, 0xC8, 0x84, 0xF6, +0xA4, 0xF2, 0xB7, 0xEE, 0x85, 0x78, 0xC8, 0xC8, 0x84, 0xF2, 0xA5, 0x7C, 0x49, 0xFF, 0xFF, 0x85, +0x7C, 0xA4, 0xF4, 0xB7, 0xE0, 0x85, 0x7A, 0xC8, 0xC8, 0x84, 0xF4, 0xA5, 0x7E, 0x49, 0xFF, 0xFF, +0x85, 0x7E, 0x80, 0xBF, 0xA5, 0x7E, 0xF0, 0x0A, 0xA5, 0x78, 0xA4, 0xF6, 0x97, 0xE0, 0xC8, 0xC8, +0x84, 0xF6, 0xA4, 0xF2, 0xB7, 0xEE, 0x85, 0x78, 0xC8, 0xC8, 0x84, 0xF2, 0xA5, 0x7C, 0x49, 0xFF, +0xFF, 0x85, 0x7C, 0x80, 0x9E, 0xA5, 0x7C, 0xF0, 0x0A, 0xA5, 0x7A, 0xA4, 0xF6, 0x97, 0xE0, 0xC8, +0xC8, 0x84, 0xF6, 0xA4, 0xF4, 0xB7, 0xE0, 0x85, 0x7A, 0xC8, 0xC8, 0x84, 0xF4, 0xA5, 0x7E, 0x49, +0xFF, 0xFF, 0x85, 0x7E, 0x4C, 0x73, 0x5B, 0xA9, 0xFF, 0x3F, 0xA4, 0xF6, 0x97, 0xE0, 0xC8, 0xC8, +0xC8, 0xC8, 0x84, 0xF6, 0x60, 0xA5, 0xB8, 0x30, 0x41, 0xA4, 0xF2, 0xB7, 0xEE, 0x85, 0x2A, 0xC9, +0xFF, 0x3F, 0xF0, 0x2A, 0xC8, 0xC8, 0xB7, 0xEE, 0xC8, 0xC8, 0x84, 0xF2, 0x38, 0xE5, 0xB8, 0x85, +0x2C, 0xA5, 0x2A, 0x18, 0x65, 0xB8, 0x85, 0x2A, 0xC5, 0x2C, 0x10, 0xDD, 0xA4, 0xF6, 0x97, 0xE0, +0xC8, 0xC8, 0xA5, 0x2C, 0x97, 0xE0, 0xC8, 0xC8, 0x84, 0xF6, 0x80, 0xCD, 0x84, 0xF2, 0xA4, 0xF6, +0xA9, 0xFF, 0x3F, 0x97, 0xE0, 0xC8, 0xC8, 0x84, 0xF6, 0x60, 0xA9, 0x01, 0xC0, 0x85, 0x80, 0xA4, +0xF2, 0xB7, 0xEE, 0xC8, 0xC8, 0x85, 0x2A, 0xC9, 0xFF, 0x3F, 0xF0, 0xE0, 0xB7, 0xEE, 0xC8, 0xC8, +0x84, 0xF2, 0xA4, 0xF6, 0x38, 0xE5, 0xB8, 0x85, 0x2C, 0xA5, 0x2A, 0x18, 0x65, 0xB8, 0xC5, 0x80, +0x10, 0x04, 0x88, 0x88, 0x80, 0x06, 0x97, 0xE0, 0xC8, 0xC8, 0xA5, 0x2C, 0x97, 0xE0, 0xC8, 0xC8, +0x84, 0xF6, 0x80, 0xC9, 0xA4, 0xF2, 0xB7, 0xEE, 0x85, 0x78, 0xC8, 0xC8, 0x84, 0xF2, 0xA4, 0xF4, +0xB7, 0xE0, 0x85, 0x7A, 0xC8, 0xC8, 0x84, 0xF4, 0xA4, 0xF6, 0xA5, 0x7A, 0xC5, 0x78, 0xF0, 0x28, +0x10, 0x12, 0x97, 0xE0, 0xC8, 0xC8, 0x84, 0xF6, 0xA4, 0xF4, 0xB7, 0xE0, 0x85, 0x7A, 0xC8, 0xC8, +0x84, 0xF4, 0x80, 0xE4, 0xA5, 0x78, 0x97, 0xE0, 0xC8, 0xC8, 0x84, 0xF6, 0xA4, 0xF2, 0xB7, 0xEE, +0x85, 0x78, 0xC8, 0xC8, 0x84, 0xF2, 0x80, 0xD0, 0xC9, 0xFF, 0x3F, 0xD0, 0xB7, 0x97, 0xE0, 0xC8, +0xC8, 0x84, 0xF6, 0x60, 0x86, 0xB8, 0x64, 0xBC, 0x64, 0xBE, 0xA2, 0xDC, 0x00, 0xA9, 0x28, 0x28, +0x20, 0x5C, 0x46, 0x90, 0x01, 0x6B, 0x85, 0xE0, 0x86, 0xE2, 0xA5, 0xC4, 0xA2, 0xBC, 0x00, 0x20, +0x5C, 0x46, 0x90, 0x03, 0x82, 0x7D, 0x01, 0x85, 0xC0, 0x86, 0xC2, 0xA0, 0x02, 0x00, 0xA9, 0x04, +0x00, 0x97, 0xC0, 0x20, 0x86, 0x5A, 0x20, 0xE4, 0x5A, 0x38, 0xA5, 0xC4, 0xE9, 0x04, 0x00, 0x29, +0xF8, 0xFF, 0x18, 0x69, 0x04, 0x00, 0x85, 0xC8, 0xA0, 0x04, 0x00, 0x84, 0xC6, 0xA0, 0x24, 0x00, +0xA9, 0xFF, 0x3F, 0x97, 0xE0, 0x84, 0xE4, 0xA0, 0x24, 0x08, 0x97, 0xE0, 0x84, 0xE6, 0xA0, 0x24, +0x10, 0x97, 0xE0, 0x84, 0xE8, 0xA0, 0x24, 0x18, 0x84, 0xEA, 0xA0, 0x24, 0x20, 0x84, 0xEC, 0xA5, +0xE0, 0x85, 0xEE, 0xA5, 0xE2, 0x85, 0xF0, 0xA4, 0xD4, 0xB7, 0xD0, 0x85, 0xCA, 0xC8, 0xC8, 0x84, +0xD4, 0xA4, 0xDA, 0xB7, 0xD6, 0x85, 0xCC, 0xC8, 0xC8, 0x84, 0xDA, 0xA5, 0xBA, 0xC9, 0x08, 0x00, +0xD0, 0x05, 0xA9, 0xFF, 0x3F, 0x85, 0xCC, 0xA5, 0xCA, 0xC5, 0xCC, 0xF0, 0x40, 0x10, 0x46, 0x20, +0x74, 0x5D, 0x80, 0x76, 0xA5, 0xCA, 0x85, 0xCE, 0xA5, 0xD0, 0x85, 0xEE, 0xA5, 0xD2, 0x85, 0xF0, +0xA4, 0xD4, 0x84, 0xF2, 0xA4, 0xE4, 0x84, 0xF4, 0xA4, 0xEA, 0x84, 0xF6, 0x20, 0x84, 0x5C, 0xA5, +0xE0, 0x85, 0xEE, 0xA5, 0xE2, 0x85, 0xF0, 0xA4, 0xF2, 0xB7, 0xD0, 0x85, 0xCA, 0xC8, 0xC8, 0x84, +0xD4, 0xA6, 0xEA, 0xA5, 0xE4, 0x86, 0xE4, 0x85, 0xEA, 0x60, 0x4C, 0x7B, 0x5E, 0xC9, 0xFF, 0x3F, +0xF0, 0xF8, 0x20, 0x74, 0x5D, 0xA5, 0xCC, 0x85, 0xCE, 0xA5, 0xD6, 0x85, 0xEE, 0xA5, 0xD8, 0x85, +0xF0, 0xA5, 0xDA, 0x85, 0xF2, 0xA5, 0xE6, 0x85, 0xF4, 0xA5, 0xEA, 0x85, 0xF6, 0x20, 0x84, 0x5C, +0xA5, 0xE0, 0x85, 0xEE, 0xA5, 0xE2, 0x85, 0xF0, 0xA4, 0xF2, 0xB7, 0xD6, 0x85, 0xCC, 0xC8, 0xC8, +0x84, 0xDA, 0xA6, 0xEA, 0xA5, 0xE6, 0x86, 0xE6, 0x85, 0xEA, 0xA5, 0xE4, 0x85, 0xF2, 0xA5, 0xE6, +0x85, 0xF4, 0xA5, 0xEA, 0x85, 0xF6, 0xA6, 0xBA, 0xFC, 0xFD, 0x5D, 0x80, 0x0A, 0x4B, 0x5B, 0x51, +0x5B, 0x58, 0x5B, 0x84, 0x5C, 0x05, 0x5C, 0xA5, 0xEA, 0x85, 0xF2, 0xA5, 0xE8, 0x85, 0xF4, 0xA4, +0xEC, 0x84, 0xF6, 0x20, 0x84, 0x5C, 0xA6, 0xEA, 0xA5, 0xE8, 0x86, 0xE8, 0x85, 0xEA, 0xA4, 0xEC, +0x84, 0xF2, 0xA4, 0xC6, 0x80, 0x2A, 0xB7, 0xE0, 0x85, 0x2A, 0xC8, 0xC8, 0xB7, 0xE0, 0x85, 0x2C, +0xC8, 0xC8, 0x84, 0xF2, 0xA4, 0xC6, 0xA5, 0xCE, 0x97, 0xC0, 0xC8, 0xC8, 0xA5, 0x2A, 0x97, 0xC0, +0xC8, 0xC8, 0xA5, 0xCE, 0x97, 0xC0, 0xC8, 0xC8, 0xA5, 0x2C, 0x97, 0xC0, 0xC8, 0xC8, 0x84, 0xC6, +0xC4, 0xC8, 0x90, 0x14, 0xA5, 0xC8, 0x18, 0x69, 0x00, 0x01, 0x85, 0xC8, 0xA2, 0xBC, 0x00, 0x20, +0x35, 0x46, 0xB0, 0x10, 0x85, 0xC0, 0x86, 0xC2, 0xA4, 0xF2, 0xB7, 0xE0, 0xC9, 0xFF, 0x3F, 0xD0, +0xB5, 0x4C, 0x67, 0x5D, 0x48, 0x20, 0x87, 0x5E, 0x68, 0x38, 0x6B, 0xA0, 0x02, 0x00, 0xA5, 0xC6, +0x97, 0xC0, 0x4A, 0x4A, 0x3A, 0x85, 0xC4, 0xA2, 0xDC, 0x00, 0x20, 0x22, 0x46, 0xA5, 0xDE, 0x48, +0xA5, 0xDC, 0x48, 0xA2, 0x02, 0x10, 0x22, 0x00, 0x00, 0xE1, 0x6B, 0xA0, 0x04, 0x00, 0xB7, 0x54, +0xA0, 0x08, 0x00, 0xD7, 0x54, 0x10, 0x0A, 0xA0, 0x02, 0x00, 0xB7, 0x54, 0xA0, 0x06, 0x00, 0xD7, +0x54, 0x60, 0xA0, 0x04, 0x00, 0xB7, 0x64, 0xA0, 0x08, 0x00, 0xD7, 0x64, 0x10, 0x0A, 0xA0, 0x02, +0x00, 0xB7, 0x64, 0xA0, 0x06, 0x00, 0xD7, 0x64, 0x60, 0xA0, 0x02, 0x00, 0xB7, 0x54, 0xD7, 0x64, +0x10, 0x02, 0xB7, 0x64, 0x85, 0xAE, 0xA0, 0x06, 0x00, 0xB7, 0x64, 0xD7, 0x54, 0x30, 0x02, 0xB7, +0x54, 0x85, 0xB2, 0xA0, 0x08, 0x00, 0xB7, 0x64, 0xD7, 0x54, 0x30, 0x02, 0xB7, 0x54, 0x85, 0xB4, +0xA0, 0x04, 0x00, 0xB7, 0x54, 0xD7, 0x64, 0x10, 0x02, 0xB7, 0x64, 0x85, 0xB0, 0x60, 0x20, 0xB3, +0x0D, 0xA9, 0x00, 0x00, 0x4C, 0x22, 0x5F, 0x20, 0xB3, 0x0D, 0xA9, 0x04, 0x00, 0x4C, 0x22, 0x5F, +0x20, 0xB3, 0x0D, 0xA9, 0x02, 0x00, 0x4C, 0x22, 0x5F, 0x20, 0xB3, 0x0D, 0xA9, 0x06, 0x00, 0x4C, +0x22, 0x5F, 0x85, 0xBA, 0x48, 0xA3, 0x15, 0x48, 0xA3, 0x15, 0x48, 0xA3, 0x15, 0x48, 0xA3, 0x15, +0x48, 0xA2, 0x04, 0x77, 0x22, 0x00, 0x00, 0xE1, 0x68, 0xF0, 0x3F, 0xA5, 0xBA, 0x29, 0x02, 0x00, +0xD0, 0x1B, 0xA3, 0x13, 0x48, 0xA3, 0x13, 0x48, 0xA3, 0x0F, 0x48, 0xA3, 0x0F, 0x48, 0xA2, 0x04, +0x69, 0x22, 0x00, 0x00, 0xE1, 0xB0, 0x1B, 0x20, 0x78, 0x60, 0x4C, 0x55, 0xFF, 0xA3, 0x0B, 0x48, +0xA3, 0x0B, 0x48, 0xA2, 0x04, 0x6A, 0x22, 0x00, 0x00, 0xE1, 0xB0, 0x06, 0x20, 0x78, 0x60, 0x4C, +0x55, 0xFF, 0x48, 0x20, 0x78, 0x60, 0xFA, 0x4C, 0x58, 0xFF, 0xA3, 0x11, 0x85, 0x50, 0xA3, 0x13, +0x85, 0x52, 0x20, 0xA7, 0x45, 0xA3, 0x0D, 0x85, 0x60, 0xA3, 0x0F, 0x85, 0x62, 0x20, 0xB8, 0x45, +0xA9, 0x02, 0x00, 0xC5, 0xBA, 0x90, 0x53, 0xD0, 0x05, 0x20, 0xB2, 0x5E, 0x10, 0xA4, 0x20, 0xC9, +0x5E, 0xA5, 0xB0, 0xC5, 0xB4, 0x10, 0x06, 0xA5, 0xAE, 0xC5, 0xB2, 0x30, 0x07, 0xA5, 0xBA, 0xF0, +0xAC, 0x4C, 0x42, 0x5F, 0xA5, 0xBA, 0xD0, 0x62, 0xA9, 0x0A, 0x00, 0xC7, 0x54, 0xD0, 0x5B, 0xC7, +0x64, 0xD0, 0x57, 0xA3, 0x0B, 0x48, 0xA3, 0x0B, 0x48, 0x18, 0xA9, 0x00, 0x00, 0x48, 0x7B, 0x69, +0xAE, 0x00, 0x48, 0xA2, 0x04, 0x6C, 0x22, 0x00, 0x00, 0xE1, 0xB0, 0x06, 0x20, 0x78, 0x60, 0x4C, +0x55, 0xFF, 0x48, 0x20, 0x78, 0x60, 0xFA, 0x4C, 0x58, 0xFF, 0x20, 0xB2, 0x5E, 0x30, 0x03, 0x82, +0x50, 0xFF, 0x20, 0x9B, 0x5E, 0x30, 0x23, 0xA3, 0x0F, 0x48, 0xA3, 0x0F, 0x48, 0xA3, 0x0F, 0x48, +0xA3, 0x0F, 0x48, 0xA2, 0x04, 0x69, 0x22, 0x00, 0x00, 0xE1, 0xB0, 0x06, 0x20, 0x78, 0x60, 0x4C, +0x55, 0xFF, 0x48, 0x20, 0x78, 0x60, 0xFA, 0x4C, 0x58, 0xFF, 0x18, 0xA7, 0x54, 0x67, 0x64, 0x0A, +0x85, 0xC4, 0xA2, 0x00, 0x00, 0x22, 0x98, 0x1F, 0xE0, 0xB0, 0x2C, 0xA3, 0x09, 0x85, 0x50, 0xA3, +0x0B, 0x85, 0x52, 0x20, 0xA7, 0x45, 0x22, 0x94, 0x1F, 0xE0, 0xA5, 0xBE, 0x48, 0xA5, 0xBC, 0x48, +0xA2, 0x02, 0x10, 0x22, 0x00, 0x00, 0xE1, 0xB0, 0x06, 0x20, 0x78, 0x60, 0x4C, 0x55, 0xFF, 0x48, +0x20, 0x78, 0x60, 0xFA, 0x4C, 0x58, 0xFF, 0x48, 0xA5, 0xBC, 0x05, 0xBE, 0xF0, 0x13, 0xA2, 0xBC, +0x00, 0x20, 0x22, 0x46, 0xA5, 0xBE, 0x48, 0xA5, 0xBC, 0x48, 0xA2, 0x02, 0x10, 0x22, 0x00, 0x00, +0xE1, 0x20, 0x78, 0x60, 0xFA, 0x4C, 0x58, 0xFF, 0xA2, 0x50, 0x00, 0x20, 0x22, 0x46, 0xA2, 0x60, +0x00, 0x20, 0x22, 0x46, 0x60, 0x20, 0xB3, 0x0D, 0xA3, 0x0D, 0x85, 0x50, 0xA3, 0x0F, 0x85, 0x52, +0xA2, 0x50, 0x00, 0x20, 0x07, 0x46, 0x85, 0x54, 0x86, 0x56, 0xA7, 0x54, 0xC9, 0x0A, 0x00, 0xD0, +0x44, 0xA3, 0x0B, 0x85, 0xB8, 0xA3, 0x09, 0x85, 0xB6, 0xA0, 0x02, 0x00, 0xB7, 0x54, 0x18, 0x65, +0xB6, 0x97, 0x54, 0xA0, 0x04, 0x00, 0xB7, 0x54, 0x18, 0x65, 0xB8, 0x97, 0x54, 0xA0, 0x06, 0x00, +0xB7, 0x54, 0x38, 0xE5, 0xB6, 0x97, 0x54, 0xA0, 0x08, 0x00, 0xB7, 0x54, 0x38, 0xE5, 0xB8, 0x97, +0x54, 0xA2, 0x50, 0x00, 0x20, 0x22, 0x46, 0x4C, 0x81, 0xFF, 0x48, 0xA2, 0x50, 0x00, 0x20, 0x22, +0x46, 0xFA, 0x4C, 0x84, 0xFF, 0xA3, 0x0B, 0xAA, 0x20, 0xF3, 0x60, 0xA3, 0x09, 0xAA, 0x20, 0xF3, +0x60, 0x80, 0xDE, 0xA5, 0x50, 0x85, 0x60, 0xA5, 0x52, 0x85, 0x62, 0xA5, 0x54, 0x85, 0x64, 0xA5, +0x56, 0x85, 0x66, 0xA7, 0x54, 0x0A, 0x85, 0xC4, 0xA9, 0x08, 0x00, 0x85, 0xBA, 0x22, 0x98, 0x1F, +0xE0, 0xB0, 0x74, 0xA0, 0x02, 0x00, 0xB7, 0xC0, 0x85, 0xC4, 0xC9, 0x05, 0x00, 0x10, 0x2D, 0xA2, +0xBC, 0x00, 0x20, 0x22, 0x46, 0xA5, 0xBE, 0x48, 0xA5, 0xBC, 0x48, 0xA2, 0x02, 0x10, 0x22, 0x00, +0x00, 0xE1, 0xB0, 0x13, 0xA5, 0x52, 0x48, 0xA5, 0x50, 0x48, 0xA2, 0x04, 0x6A, 0x22, 0x00, 0x00, +0xE1, 0xB0, 0x04, 0xFA, 0x82, 0x8A, 0xFF, 0xAA, 0x7A, 0x4C, 0x84, 0xFF, 0xA0, 0x04, 0x00, 0xB7, +0xC0, 0x48, 0xC8, 0xC8, 0xB7, 0xC0, 0xAA, 0x68, 0x97, 0xC0, 0x8A, 0x88, 0x88, 0x97, 0xC0, 0xC8, +0xC8, 0xC8, 0xC8, 0xC4, 0xC4, 0xD0, 0xE8, 0x98, 0x4A, 0x4A, 0x3A, 0x85, 0xC4, 0x22, 0x90, 0x1F, +0xE0, 0x22, 0x94, 0x1F, 0xE0, 0xB0, 0x2F, 0xA5, 0xBE, 0x48, 0xA5, 0xBC, 0x48, 0xA2, 0x02, 0x10, +0x22, 0x00, 0x00, 0xE1, 0xB0, 0x39, 0x60, 0x48, 0xA2, 0x50, 0x00, 0x20, 0x22, 0x46, 0xA5, 0xBC, +0x05, 0xBE, 0xF0, 0x0D, 0xA5, 0xBE, 0x48, 0xA5, 0xBC, 0x48, 0xA2, 0x02, 0x10, 0x22, 0x00, 0x00, +0xE1, 0xFA, 0x7A, 0x4C, 0x84, 0xFF, 0x48, 0xA2, 0x50, 0x00, 0x20, 0x22, 0x46, 0xA5, 0xBE, 0x48, +0xA5, 0xBC, 0x48, 0xA2, 0x02, 0x10, 0x22, 0x00, 0x00, 0xE1, 0xFA, 0x7A, 0x4C, 0x84, 0xFF, 0xAA, +0x7A, 0x4C, 0x84, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x0D, 0x85, 0x50, 0xA3, 0x0F, 0x85, 0x52, 0xA3, +0x0B, 0x85, 0xB8, 0xA3, 0x09, 0x85, 0xB6, 0xA2, 0x50, 0x00, 0x20, 0x07, 0x46, 0x85, 0x54, 0x86, +0x56, 0xA0, 0x02, 0x00, 0xB7, 0x54, 0x18, 0x65, 0xB6, 0x97, 0x54, 0xA0, 0x04, 0x00, 0xB7, 0x54, +0x18, 0x65, 0xB8, 0x97, 0x54, 0xA0, 0x06, 0x00, 0xB7, 0x54, 0x18, 0x65, 0xB6, 0x97, 0x54, 0xA0, +0x08, 0x00, 0xB7, 0x54, 0x18, 0x65, 0xB8, 0x97, 0x54, 0xA9, 0x0A, 0x00, 0xC7, 0x54, 0xF0, 0x2C, +0xA8, 0xB7, 0x54, 0x18, 0x65, 0xB6, 0x97, 0x54, 0xC8, 0xC8, 0xB7, 0x54, 0x18, 0x65, 0xB8, 0x97, +0x54, 0xC8, 0xC8, 0xB7, 0x54, 0x18, 0x65, 0xB8, 0x97, 0x54, 0xC8, 0xC8, 0xB7, 0x54, 0xC9, 0xFF, +0x3F, 0xD0, 0xE9, 0xC8, 0xC8, 0xB7, 0x54, 0xC9, 0xFF, 0x3F, 0xD0, 0xD7, 0xA2, 0x50, 0x00, 0x20, +0x22, 0x46, 0x4C, 0x81, 0xFF, 0x20, 0xB3, 0x0D, 0x20, 0x4C, 0x63, 0xA2, 0x06, 0x00, 0xB5, 0xDA, +0xD5, 0xE2, 0xD0, 0x06, 0xCA, 0xCA, 0x10, 0xF6, 0x80, 0x2A, 0x22, 0xC8, 0x1F, 0xE0, 0xA3, 0x11, +0x85, 0x50, 0xA3, 0x13, 0x85, 0x52, 0x20, 0xA7, 0x45, 0xA7, 0x54, 0xC9, 0x0A, 0x00, 0xD0, 0x1A, +0xA5, 0x54, 0x85, 0x64, 0xA5, 0x56, 0x85, 0x66, 0xA0, 0x02, 0x00, 0x20, 0x77, 0x64, 0xA0, 0x06, +0x00, 0x20, 0x77, 0x64, 0x20, 0xB2, 0x45, 0x4C, 0x55, 0xFF, 0x0A, 0x18, 0x69, 0x04, 0x00, 0xA2, +0xBC, 0x00, 0x20, 0x5C, 0x46, 0x90, 0x0B, 0x48, 0xA2, 0x50, 0x00, 0x20, 0x22, 0x46, 0xFA, 0x4C, +0x58, 0xFF, 0x85, 0xC0, 0x86, 0xC2, 0xA0, 0x02, 0x00, 0xA9, 0x04, 0x00, 0x97, 0xC0, 0x22, 0x84, +0x1F, 0xE0, 0x90, 0x1E, 0x48, 0xA2, 0xBC, 0x00, 0x20, 0x22, 0x46, 0xA5, 0xBE, 0x48, 0xA5, 0xBC, +0x48, 0xA2, 0x02, 0x10, 0x22, 0x00, 0x00, 0xE1, 0xA2, 0x50, 0x00, 0x20, 0x22, 0x46, 0xFA, 0x4C, +0x58, 0xFF, 0xA0, 0x02, 0x00, 0xB7, 0xC0, 0x85, 0xEA, 0xA0, 0x04, 0x00, 0x84, 0xEE, 0xA4, 0xEE, +0xC4, 0xEA, 0x10, 0x21, 0x84, 0xEC, 0xB7, 0xC0, 0x85, 0xF0, 0xC8, 0xC8, 0xB7, 0xC0, 0x85, 0xF2, +0xC8, 0xC8, 0x84, 0xEE, 0x20, 0xBC, 0x63, 0xA4, 0xEC, 0xA5, 0xF0, 0x97, 0xC0, 0xC8, 0xC8, 0xA5, +0xF2, 0x97, 0xC0, 0x80, 0xD9, 0xA5, 0xEA, 0x4A, 0x4A, 0x3A, 0x85, 0xC4, 0x22, 0x90, 0x1F, 0xE0, +0x22, 0x8C, 0x1F, 0xE0, 0x22, 0x94, 0x1F, 0xE0, 0xA2, 0x50, 0x00, 0x20, 0x22, 0x46, 0xA5, 0xBE, +0x48, 0xA5, 0xBC, 0x48, 0xA2, 0x02, 0x10, 0x22, 0x00, 0x00, 0xE1, 0xB0, 0x1B, 0x4C, 0x55, 0xFF, +0x48, 0xA2, 0x50, 0x00, 0x20, 0x22, 0x46, 0xA5, 0xBE, 0x48, 0xA5, 0xBC, 0x48, 0xA2, 0x02, 0x10, +0x22, 0x00, 0x00, 0xE1, 0xFA, 0x4C, 0x58, 0xFF, 0xAA, 0x4C, 0x58, 0xFF, 0xA3, 0x0F, 0x85, 0x2A, +0xA3, 0x11, 0x85, 0x2C, 0xA7, 0x2A, 0x85, 0xDA, 0xA0, 0x02, 0x00, 0xB7, 0x2A, 0x85, 0xDC, 0xA0, +0x04, 0x00, 0xB7, 0x2A, 0x85, 0xDE, 0xA0, 0x06, 0x00, 0xB7, 0x2A, 0x85, 0xE0, 0xA3, 0x0B, 0x85, +0x2A, 0xA3, 0x0D, 0x85, 0x2C, 0xA7, 0x2A, 0x85, 0xE2, 0xA0, 0x02, 0x00, 0xB7, 0x2A, 0x85, 0xE4, +0xA0, 0x04, 0x00, 0xB7, 0x2A, 0x85, 0xE6, 0xA0, 0x06, 0x00, 0xB7, 0x2A, 0x85, 0xE8, 0x60, 0x38, +0xA5, 0xDE, 0xE5, 0xDA, 0x85, 0xFA, 0x4A, 0x85, 0x04, 0x38, 0xA5, 0xE0, 0xE5, 0xDC, 0x85, 0xFC, +0x4A, 0x85, 0x06, 0x38, 0xA5, 0xE6, 0xE5, 0xE2, 0x85, 0x00, 0x38, 0xE5, 0xFA, 0x85, 0xF6, 0x38, +0xA5, 0xE8, 0xE5, 0xE4, 0x85, 0x02, 0x38, 0xE5, 0xFC, 0x85, 0xF8, 0x6B, 0x64, 0xF4, 0x38, 0xA5, +0xF0, 0xE5, 0xDA, 0xA6, 0xF6, 0xF0, 0x4F, 0xAA, 0x10, 0x06, 0x49, 0xFF, 0xFF, 0x1A, 0xE6, 0xF4, +0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, +0x00, 0x00, 0x48, 0xA5, 0x00, 0x48, 0xA2, 0x0B, 0x09, 0x22, 0x00, 0x00, 0xE1, 0x18, 0xA5, 0x04, +0x63, 0x01, 0x83, 0x01, 0xA9, 0x00, 0x00, 0x63, 0x03, 0x83, 0x03, 0xF4, 0x00, 0x00, 0xA5, 0xFA, +0x48, 0xA2, 0x0B, 0x0D, 0x22, 0x00, 0x00, 0xE1, 0x68, 0xFA, 0xFA, 0xFA, 0xA6, 0xF4, 0xF0, 0x06, +0x49, 0xFF, 0xFF, 0x1A, 0x64, 0xF4, 0x18, 0x65, 0xE2, 0x85, 0xF0, 0x38, 0xA5, 0xF2, 0xE5, 0xDC, +0xA6, 0xF8, 0xF0, 0x4D, 0xAA, 0x10, 0x06, 0x49, 0xFF, 0xFF, 0x1A, 0xE6, 0xF4, 0xF4, 0x00, 0x00, +0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x48, +0xA5, 0x02, 0x48, 0xA2, 0x0B, 0x09, 0x22, 0x00, 0x00, 0xE1, 0x18, 0xA5, 0x06, 0x63, 0x01, 0x83, +0x01, 0xA9, 0x00, 0x00, 0x63, 0x03, 0x83, 0x03, 0xF4, 0x00, 0x00, 0xA5, 0xFC, 0x48, 0xA2, 0x0B, +0x0D, 0x22, 0x00, 0x00, 0xE1, 0x68, 0xFA, 0xFA, 0xFA, 0xA6, 0xF4, 0xF0, 0x04, 0x49, 0xFF, 0xFF, +0x1A, 0x18, 0x65, 0xE4, 0x85, 0xF2, 0x60, 0xB7, 0x64, 0x85, 0xF0, 0xC8, 0xC8, 0xB7, 0x64, 0x85, +0xF2, 0x5A, 0x20, 0xBC, 0x63, 0x7A, 0xA5, 0xF2, 0x97, 0x64, 0x88, 0x88, 0xA5, 0xF0, 0x97, 0x64, +0x60, 0x20, 0xB3, 0x0D, 0x20, 0x4C, 0x63, 0x22, 0xC8, 0x1F, 0xE0, 0xA3, 0x11, 0x85, 0x64, 0xA3, +0x13, 0x85, 0x66, 0xA0, 0x00, 0x00, 0x20, 0x77, 0x64, 0xA0, 0x04, 0x00, 0x20, 0x77, 0x64, 0x4C, +0x55, 0xFF, 0x20, 0xB3, 0x0D, 0x20, 0x4C, 0x63, 0x22, 0xC8, 0x1F, 0xE0, 0xA3, 0x11, 0x85, 0x64, +0xA3, 0x13, 0x85, 0x66, 0xA0, 0x00, 0x00, 0x20, 0x77, 0x64, 0x4C, 0x55, 0xFF, 0x20, 0xB3, 0x0D, +0xA3, 0x09, 0x85, 0xD6, 0xA9, 0x00, 0x00, 0x22, 0x3E, 0x65, 0xFE, 0xA5, 0xDE, 0x83, 0x0B, 0x4C, +0x60, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0x85, 0xDA, 0xA3, 0x0B, 0x85, 0xDC, 0xA7, 0xDA, 0x29, +0xFF, 0x00, 0x85, 0xD8, 0xE6, 0xDA, 0xD0, 0x02, 0xE6, 0xDC, 0xA9, 0x01, 0x00, 0x22, 0x3E, 0x65, +0xFE, 0xA5, 0xDE, 0x83, 0x0D, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x0B, 0x85, 0xDA, 0xA3, +0x0D, 0x85, 0xDC, 0xA3, 0x09, 0x85, 0xD8, 0xA9, 0x01, 0x00, 0x22, 0x3E, 0x65, 0xFE, 0xA5, 0xDE, +0x83, 0x0F, 0x4C, 0x76, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0x85, 0xDA, 0xA3, 0x0B, 0x85, 0xDC, +0xA9, 0x02, 0x00, 0x22, 0x3E, 0x65, 0xFE, 0xA5, 0xDE, 0x83, 0x0D, 0x4C, 0x6B, 0xFF, 0x85, 0x38, +0x20, 0xC5, 0x0D, 0xB0, 0x04, 0x5C, 0x2C, 0x1E, 0xE0, 0x8B, 0xA0, 0x28, 0x00, 0xB7, 0x2A, 0x48, +0xC8, 0xB7, 0x2A, 0x83, 0x02, 0x6B, 0xA5, 0x38, 0x0A, 0xAA, 0x7C, 0x5D, 0x65, 0x63, 0x65, 0x71, +0x65, 0x71, 0x65, 0x22, 0x64, 0x1F, 0xE0, 0x22, 0x50, 0x1F, 0xE0, 0x29, 0xFF, 0x00, 0x85, 0xDE, +0x6B, 0x64, 0xAC, 0x22, 0x54, 0x1F, 0xE0, 0xB0, 0x08, 0x22, 0x64, 0x1F, 0xE0, 0x22, 0x78, 0x1F, +0xE0, 0xA5, 0xAC, 0x85, 0xDE, 0x6B, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0x85, 0xD6, 0xA9, 0x00, 0x00, +0x22, 0xE7, 0x65, 0xFE, 0x4C, 0x60, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0x85, 0xDA, 0xA3, 0x0B, +0x85, 0xDC, 0xA7, 0xDA, 0x29, 0xFF, 0x00, 0x85, 0xD8, 0xE6, 0xDA, 0xD0, 0x02, 0xE6, 0xDC, 0xA9, +0x01, 0x00, 0x22, 0xE7, 0x65, 0xFE, 0x4C, 0x6B, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x0B, 0x85, 0xDA, +0xA3, 0x0D, 0x85, 0xDC, 0xA3, 0x09, 0x85, 0xD8, 0xA9, 0x01, 0x00, 0x22, 0xE7, 0x65, 0xFE, 0x4C, +0x76, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0x85, 0xDA, 0xA3, 0x0B, 0x85, 0xDC, 0xA9, 0x02, 0x00, +0x22, 0xE7, 0x65, 0xFE, 0x4C, 0x6B, 0xFF, 0x85, 0x38, 0x20, 0xC5, 0x0D, 0xB0, 0x04, 0x5C, 0x04, +0x1E, 0xE0, 0x8B, 0xA0, 0x00, 0x00, 0xB7, 0x2A, 0x48, 0xC8, 0xB7, 0x2A, 0x83, 0x02, 0x6B, 0xA9, +0x00, 0x00, 0x22, 0xF8, 0x1E, 0xE0, 0xA5, 0x38, 0x0A, 0xAA, 0x7C, 0x0D, 0x66, 0x13, 0x66, 0x6E, +0x66, 0x6E, 0x66, 0x22, 0x3C, 0x1E, 0xE0, 0x22, 0xA0, 0x1E, 0xE0, 0x22, 0x64, 0x1F, 0xE0, 0xA0, +0x42, 0x00, 0xB7, 0x24, 0x85, 0xAC, 0x22, 0x58, 0x1F, 0xE0, 0x90, 0x11, 0x22, 0x50, 0x1F, 0xE0, +0x29, 0xFF, 0x00, 0x18, 0x65, 0xAC, 0xA0, 0x42, 0x00, 0x97, 0x24, 0x80, 0x2C, 0x22, 0xF4, 0x1F, +0xE0, 0x22, 0x68, 0x1F, 0xE0, 0x22, 0x74, 0x1F, 0xE0, 0xA5, 0x90, 0x18, 0x65, 0xA0, 0xA0, 0x42, +0x00, 0x97, 0x24, 0x22, 0xB0, 0x1F, 0xE0, 0x22, 0x5C, 0x1F, 0xE0, 0xB0, 0x08, 0x22, 0x60, 0x1F, +0xE0, 0x22, 0xF4, 0x1E, 0xE0, 0x22, 0x7C, 0x1F, 0xE0, 0x22, 0xA8, 0x1E, 0xE0, 0x6B, 0x22, 0x54, +0x1F, 0xE0, 0x90, 0x01, 0x6B, 0x22, 0x3C, 0x1E, 0xE0, 0x22, 0xA0, 0x1E, 0xE0, 0x22, 0x64, 0x1F, +0xE0, 0xA0, 0x42, 0x00, 0xB7, 0x24, 0x85, 0xAC, 0x22, 0x58, 0x1F, 0xE0, 0x90, 0x07, 0x22, 0x78, +0x1F, 0xE0, 0x82, 0x84, 0x00, 0x22, 0xF4, 0x1F, 0xE0, 0xA2, 0x00, 0x02, 0xB5, 0x00, 0x85, 0x2A, +0xA5, 0x06, 0x18, 0x65, 0x2A, 0xC5, 0xAC, 0x10, 0x07, 0x22, 0x78, 0x1F, 0xE0, 0x82, 0x69, 0x00, +0x85, 0xAA, 0xA5, 0x02, 0x38, 0xE5, 0x2A, 0x85, 0xA8, 0xA5, 0xAC, 0xC5, 0xA8, 0x10, 0x15, 0x22, +0x50, 0x1F, 0xE0, 0x29, 0xFF, 0x00, 0x18, 0x65, 0xAC, 0x85, 0xAC, 0x22, 0x54, 0x1F, 0xE0, 0x90, +0xE8, 0x82, 0x45, 0x00, 0x22, 0x68, 0x1F, 0xE0, 0xA5, 0xAA, 0x38, 0xE5, 0xA0, 0x85, 0x96, 0x22, +0x74, 0x1F, 0xE0, 0x22, 0x54, 0x1F, 0xE0, 0x90, 0x09, 0xA5, 0x90, 0x18, 0x65, 0xA0, 0x85, 0xAC, +0x80, 0x11, 0xA5, 0x96, 0xC5, 0x90, 0x10, 0xE7, 0xA5, 0x90, 0x18, 0x65, 0xA0, 0x85, 0xAC, 0x22, +0x78, 0x1F, 0xE0, 0x22, 0xB0, 0x1F, 0xE0, 0x22, 0x5C, 0x1F, 0xE0, 0xB0, 0x08, 0x22, 0x60, 0x1F, +0xE0, 0x22, 0xF4, 0x1E, 0xE0, 0x22, 0x7C, 0x1F, 0xE0, 0xA5, 0xAC, 0xA0, 0x42, 0x00, 0x97, 0x24, +0x22, 0xA8, 0x1E, 0xE0, 0x6B, 0xA2, 0x00, 0x01, 0xB5, 0x04, 0xD0, 0x1B, 0xA5, 0x9E, 0xC5, 0xE0, +0x10, 0x02, 0xA5, 0xE0, 0x18, 0x65, 0xF4, 0x18, 0x65, 0xF2, 0xA6, 0xF0, 0xF0, 0x01, 0x1A, 0x18, +0x65, 0xEE, 0xA6, 0xEC, 0xF0, 0x01, 0x1A, 0x1A, 0xA2, 0x00, 0x02, 0x95, 0x00, 0x6B, 0x20, 0xB3, +0x0D, 0xA3, 0x0D, 0x85, 0xD6, 0xA3, 0x09, 0x85, 0xD2, 0xA3, 0x0B, 0x85, 0xD4, 0xA9, 0x00, 0x00, +0x22, 0xCF, 0x67, 0xFE, 0x4C, 0x76, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x0D, 0x85, 0xDA, 0xA3, 0x0F, +0x85, 0xDC, 0xA7, 0xDA, 0x29, 0xFF, 0x00, 0x85, 0xD8, 0xE6, 0xDA, 0xD0, 0x02, 0xE6, 0xDC, 0xA3, +0x09, 0x85, 0xD2, 0xA3, 0x0B, 0x85, 0xD4, 0xA9, 0x01, 0x00, 0x22, 0xCF, 0x67, 0xFE, 0x4C, 0x81, +0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x0F, 0x85, 0xDA, 0xA3, 0x11, 0x85, 0xDC, 0xA3, 0x0D, 0x85, 0xD8, +0xA3, 0x09, 0x85, 0xD2, 0xA3, 0x0B, 0x85, 0xD4, 0xA9, 0x01, 0x00, 0x22, 0xCF, 0x67, 0xFE, 0x4C, +0x4A, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, 0x0D, 0x85, 0xDA, 0xA3, 0x0F, 0x85, 0xDC, 0xA3, 0x09, 0x85, +0xD2, 0xA3, 0x0B, 0x85, 0xD4, 0xA9, 0x02, 0x00, 0x22, 0xCF, 0x67, 0xFE, 0x4C, 0x81, 0xFF, 0x85, +0x38, 0x20, 0xC5, 0x0D, 0xB0, 0x04, 0x5C, 0x30, 0x1E, 0xE0, 0x8B, 0xA0, 0x2C, 0x00, 0xB7, 0x2A, +0x48, 0xC8, 0xB7, 0x2A, 0x83, 0x02, 0x6B, 0xA5, 0x38, 0x0A, 0xAA, 0x7C, 0xEE, 0x67, 0xF4, 0x67, +0x6A, 0x68, 0x6A, 0x68, 0x22, 0x64, 0x1F, 0xE0, 0xA0, 0x42, 0x00, 0xB7, 0x24, 0x85, 0x92, 0x22, +0x50, 0x1F, 0xE0, 0xAA, 0x29, 0xFF, 0x00, 0x18, 0x65, 0x92, 0x85, 0x90, 0xB7, 0x7C, 0x85, 0x2C, +0xC8, 0xC8, 0xB7, 0x7C, 0x38, 0xE5, 0x2C, 0xD0, 0x03, 0x82, 0x28, 0x00, 0x85, 0x2E, 0x8A, 0xEB, +0x29, 0xFF, 0x00, 0x18, 0x65, 0x8C, 0x18, 0x65, 0x92, 0x85, 0xCE, 0x18, 0x65, 0x2E, 0x85, 0xD0, +0x22, 0xB4, 0x1F, 0xE0, 0xA5, 0xCE, 0xC5, 0x92, 0x10, 0x02, 0x85, 0x92, 0xA5, 0xD0, 0xC5, 0x90, +0x30, 0x02, 0x85, 0x90, 0xA5, 0x92, 0xA0, 0x02, 0x00, 0x97, 0xD2, 0xA5, 0x90, 0xA0, 0x06, 0x00, +0x97, 0xD2, 0xA0, 0x40, 0x00, 0xB7, 0x24, 0xAA, 0x38, 0xE5, 0x84, 0xA0, 0x00, 0x00, 0x97, 0xD2, +0x8A, 0x18, 0x65, 0xE2, 0xA0, 0x04, 0x00, 0x97, 0xD2, 0x6B, 0xA0, 0x42, 0x00, 0xB7, 0x24, 0x85, +0x92, 0x85, 0x90, 0xA9, 0xFF, 0x3F, 0x85, 0xCE, 0xA9, 0x01, 0xC0, 0x85, 0xD0, 0x22, 0x54, 0x1F, +0xE0, 0x90, 0x03, 0x82, 0x4E, 0x00, 0x22, 0x64, 0x1F, 0xE0, 0x22, 0x50, 0x1F, 0xE0, 0xAA, 0x29, +0xFF, 0x00, 0x85, 0x2A, 0xA5, 0x90, 0x85, 0x98, 0x18, 0x65, 0x2A, 0x85, 0x90, 0xB7, 0x7C, 0x85, +0x2C, 0xC8, 0xC8, 0xB7, 0x7C, 0x38, 0xE5, 0x2C, 0xD0, 0x03, 0x82, 0x1D, 0x00, 0x85, 0x2E, 0x8A, +0xEB, 0x29, 0xFF, 0x00, 0x18, 0x65, 0x8C, 0x18, 0x65, 0x98, 0xAA, 0xC5, 0xCE, 0x10, 0x02, 0x85, +0xCE, 0x18, 0x65, 0x2E, 0xC5, 0xD0, 0x30, 0x02, 0x85, 0xD0, 0x22, 0x54, 0x1F, 0xE0, 0x90, 0xBA, +0x22, 0xB4, 0x1F, 0xE0, 0xA5, 0xCE, 0xC5, 0x92, 0x30, 0x02, 0xA5, 0x92, 0xA0, 0x02, 0x00, 0x97, +0xD2, 0xA5, 0xD0, 0xC5, 0x90, 0x10, 0x02, 0xA5, 0x90, 0xA0, 0x06, 0x00, 0x97, 0xD2, 0xA0, 0x40, +0x00, 0xB7, 0x24, 0xAA, 0x38, 0xE5, 0x84, 0xA0, 0x00, 0x00, 0x97, 0xD2, 0x8A, 0x18, 0x65, 0xE2, +0xA0, 0x04, 0x00, 0x97, 0xD2, 0x6B, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0x85, 0x2E, 0xA3, 0x0B, 0x85, +0x30, 0x22, 0xF8, 0x1F, 0xE0, 0x4C, 0x6B, 0xFF, 0x22, 0x64, 0x1F, 0xE0, 0xA5, 0x84, 0x87, 0x2E, +0xA5, 0xE2, 0xA0, 0x02, 0x00, 0x97, 0x2E, 0xA5, 0xE0, 0x18, 0x65, 0xF4, 0xA0, 0x04, 0x00, 0x97, +0x2E, 0xA5, 0xE4, 0xA0, 0x06, 0x00, 0x97, 0x2E, 0x6B, 0x20, 0xB3, 0x0D, 0x22, 0xB8, 0x1E, 0xE0, +0x83, 0x09, 0x4C, 0x3F, 0xFF, 0xA9, 0x0C, 0x00, 0x6B, 0x85, 0x2A, 0x86, 0x2C, 0xA0, 0x02, 0x00, +0xB7, 0x2A, 0xAA, 0xA7, 0x2A, 0x60, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0x85, 0xD2, 0xA3, 0x0B, 0x85, +0xD4, 0x22, 0x6B, 0x69, 0xFE, 0xA0, 0x04, 0x00, 0x4C, 0x1F, 0xFF, 0xA9, 0xFE, 0xFF, 0x87, 0xD2, +0xA9, 0x00, 0x00, 0xA0, 0x02, 0x00, 0x97, 0xD2, 0xA9, 0x08, 0x00, 0xA0, 0x04, 0x00, 0x97, 0xD2, +0xA9, 0xFE, 0x00, 0xA0, 0x08, 0x00, 0x97, 0xD2, 0xA9, 0xE0, 0x77, 0xA0, 0x06, 0x00, 0x97, 0xD2, +0xA9, 0xFE, 0x00, 0xA0, 0x0C, 0x00, 0x97, 0xD2, 0xA9, 0xA9, 0x69, 0xA0, 0x0A, 0x00, 0x97, 0xD2, +0xA9, 0x0C, 0x00, 0xA0, 0x0E, 0x00, 0x97, 0xD2, 0x6B, 0x07, 0x53, 0x68, 0x61, 0x73, 0x74, 0x6F, +0x6E, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0x85, 0x2E, 0xA3, 0x0B, 0x85, 0xD2, 0xA3, 0x0D, 0x85, 0xD4, +0x22, 0xCE, 0x69, 0xFE, 0xA5, 0x2E, 0x83, 0x0F, 0xA0, 0x06, 0x00, 0x4C, 0x1F, 0xFF, 0xA0, 0x76, +0x00, 0xB7, 0x24, 0x85, 0x30, 0x88, 0x88, 0xB7, 0x24, 0x85, 0x2A, 0xA7, 0x2A, 0x85, 0x70, 0xA0, +0x02, 0x00, 0xB7, 0x2A, 0x85, 0x72, 0xA7, 0x70, 0x0A, 0x18, 0x65, 0x70, 0x85, 0x74, 0xA5, 0x72, +0x69, 0x00, 0x00, 0x85, 0x76, 0xA6, 0x2E, 0x64, 0x2E, 0xCA, 0xCA, 0x10, 0x03, 0x82, 0x77, 0x00, +0xA0, 0x02, 0x00, 0xB7, 0x70, 0xA0, 0x00, 0x00, 0x97, 0xD2, 0xE6, 0x2E, 0xE6, 0x2E, 0xCA, 0xCA, +0x10, 0x03, 0x82, 0x62, 0x00, 0xA0, 0x04, 0x00, 0xB7, 0x70, 0xA0, 0x02, 0x00, 0x97, 0xD2, 0xE6, +0x2E, 0xE6, 0x2E, 0xCA, 0xCA, 0x10, 0x03, 0x82, 0x4D, 0x00, 0xA0, 0x06, 0x00, 0xB7, 0x70, 0xA0, +0x04, 0x00, 0x97, 0xD2, 0xE6, 0x2E, 0xE6, 0x2E, 0xCA, 0xCA, 0x10, 0x03, 0x82, 0x38, 0x00, 0xA0, +0x08, 0x00, 0xB7, 0x70, 0xA0, 0x06, 0x00, 0x97, 0xD2, 0xE6, 0x2E, 0xE6, 0x2E, 0xCA, 0xCA, 0x10, +0x03, 0x82, 0x23, 0x00, 0xA0, 0x06, 0x00, 0xB7, 0x74, 0xA0, 0x08, 0x00, 0x97, 0xD2, 0xE6, 0x2E, +0xE6, 0x2E, 0xCA, 0xCA, 0x10, 0x03, 0x82, 0x0E, 0x00, 0xA0, 0x0A, 0x00, 0xB7, 0x70, 0xA0, 0x0A, +0x00, 0x97, 0xD2, 0xE6, 0x2E, 0xE6, 0x2E, 0x6B, 0x20, 0xB3, 0x0D, 0xA3, 0x0B, 0x85, 0x56, 0xA3, +0x09, 0x85, 0x50, 0x22, 0x8D, 0x6A, 0xFE, 0xA0, 0x04, 0x00, 0x4C, 0x1F, 0xFF, 0xA5, 0x56, 0x18, +0x65, 0x56, 0x65, 0x56, 0x69, 0x24, 0x00, 0x1A, 0x85, 0x56, 0x65, 0x28, 0x0A, 0x0A, 0x85, 0xD4, +0xA5, 0x4A, 0xC5, 0x50, 0x30, 0x06, 0x85, 0x50, 0x64, 0xD2, 0x80, 0x05, 0xA9, 0x01, 0x00, 0x85, +0xD2, 0xA5, 0xD4, 0x4A, 0x4A, 0x4A, 0x4A, 0x85, 0x54, 0xA5, 0x48, 0xC5, 0x54, 0x30, 0x0B, 0x85, +0x54, 0xA2, 0x00, 0x01, 0xB5, 0x04, 0x85, 0x56, 0x80, 0x16, 0xA9, 0x01, 0x00, 0x85, 0xD2, 0xA2, +0x00, 0x01, 0xB5, 0x04, 0xF0, 0x08, 0xC5, 0x56, 0x30, 0x06, 0x85, 0x56, 0x80, 0x02, 0x64, 0x56, +0xA5, 0xD2, 0xF0, 0x04, 0x22, 0xAC, 0x1F, 0xE0, 0x6B, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0x85, 0xD2, +0xA3, 0x0B, 0x85, 0xD4, 0x22, 0xB8, 0x1E, 0xE0, 0x85, 0x2E, 0x22, 0xCE, 0x69, 0xFE, 0xA0, 0x04, +0x00, 0x4C, 0x1F, 0xFF, 0xA5, 0xD6, 0x22, 0xE8, 0x1F, 0xE0, 0x89, 0xFF, 0x00, 0xF0, 0x0C, 0xA6, +0xF6, 0xF0, 0x04, 0x22, 0xEC, 0x1F, 0xE0, 0x22, 0xF0, 0x1F, 0xE0, 0x6B, 0xC5, 0x88, 0x30, 0x06, +0xC5, 0x8A, 0x30, 0x05, 0xF0, 0x03, 0xA5, 0x8A, 0x1A, 0x38, 0xE5, 0x88, 0x0A, 0xA8, 0xB7, 0x80, +0xC9, 0xFF, 0xFF, 0xD0, 0x04, 0xA4, 0x8E, 0xB7, 0x80, 0x6B, 0xAA, 0xA5, 0xF6, 0x89, 0x01, 0x00, +0xF0, 0x07, 0x8A, 0x29, 0x00, 0xFF, 0x05, 0xE0, 0x6B, 0x89, 0x02, 0x00, 0xF0, 0x07, 0x8A, 0x29, +0x00, 0xFF, 0x05, 0xF8, 0x6B, 0x8A, 0x6B, 0x18, 0x65, 0xF4, 0xAA, 0xA5, 0x94, 0x18, 0x65, 0xF0, +0x85, 0x94, 0x8A, 0x65, 0xF2, 0xA6, 0xD6, 0xE0, 0x20, 0x00, 0xD0, 0x0B, 0xAA, 0xA5, 0x94, 0x18, +0x65, 0xEC, 0x85, 0x94, 0x8A, 0x65, 0xEE, 0x6B, 0xA5, 0x38, 0xC9, 0x02, 0x00, 0xF0, 0x15, 0xA5, +0xD8, 0xF0, 0x22, 0xA7, 0xDA, 0x29, 0xFF, 0x00, 0x85, 0xD6, 0xC6, 0xD8, 0xE6, 0xDA, 0xD0, 0x02, +0xE6, 0xDC, 0x18, 0x6B, 0xA7, 0xDA, 0x29, 0xFF, 0x00, 0xF0, 0x0A, 0x85, 0xD6, 0xE6, 0xDA, 0xD0, +0x02, 0xE6, 0xDC, 0x18, 0x6B, 0x38, 0x6B, 0x22, 0x50, 0x1F, 0xE0, 0x29, 0xFF, 0x00, 0x18, 0x65, +0xAC, 0x85, 0xAC, 0x22, 0x54, 0x1F, 0xE0, 0x90, 0xEE, 0x6B, 0xA0, 0x72, 0x00, 0xB7, 0x24, 0x30, +0x16, 0xA9, 0x01, 0xC0, 0x85, 0x00, 0x85, 0x02, 0xA9, 0xFF, 0x3F, 0x85, 0x04, 0x85, 0x06, 0x22, +0x94, 0x1E, 0xE0, 0xB0, 0x03, 0x18, 0x6B, 0x38, 0x6B, 0xA5, 0xCE, 0xC5, 0x92, 0x30, 0x02, 0xA5, +0x92, 0x18, 0x65, 0xA0, 0xC5, 0x02, 0x30, 0x02, 0x85, 0x02, 0xA9, 0x01, 0x00, 0x18, 0x65, 0xA2, +0xC5, 0x00, 0x30, 0x02, 0x85, 0x00, 0xA5, 0xD0, 0x1A, 0xC5, 0x90, 0x10, 0x02, 0xA5, 0x90, 0x18, +0x65, 0xA0, 0xC5, 0x06, 0x10, 0x02, 0x85, 0x06, 0xA5, 0x02, 0xC5, 0x06, 0x30, 0x03, 0x82, 0x17, +0x00, 0xA5, 0xCA, 0x1A, 0x18, 0x65, 0xA2, 0xC5, 0x04, 0x10, 0x02, 0x85, 0x04, 0xA5, 0x00, 0xC5, +0x04, 0x30, 0x03, 0x82, 0x02, 0x00, 0x18, 0x6B, 0x38, 0x6B, 0xA5, 0x04, 0x3A, 0x38, 0xE5, 0x00, +0x85, 0xC8, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xD4, 0x12, 0xA5, 0x00, 0x38, 0xE5, 0x14, 0x48, +0xA2, 0x0B, 0x09, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x85, 0x2A, 0x68, 0x85, 0x2C, 0xA5, 0x0E, 0x18, +0x65, 0x2A, 0x85, 0xB6, 0xA5, 0x10, 0x65, 0x2C, 0x85, 0xB8, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, +0xD4, 0xC4, 0xA5, 0x00, 0x38, 0xE5, 0xA2, 0x3A, 0x48, 0xA2, 0x0B, 0x09, 0x22, 0x00, 0x00, 0xE1, +0x68, 0x85, 0x2A, 0x68, 0x85, 0x2C, 0xA5, 0xAE, 0x18, 0x65, 0x2A, 0x85, 0xB2, 0xA5, 0xB0, 0x65, +0x2C, 0x85, 0xB4, 0xA5, 0x02, 0x38, 0xE5, 0x16, 0x4A, 0x24, 0x0B, 0x30, 0x05, 0x29, 0xF8, 0xFF, +0x80, 0x04, 0x4A, 0x29, 0xFC, 0xFF, 0x85, 0xBC, 0xA5, 0x02, 0x38, 0xE5, 0xA0, 0x4A, 0x4A, 0x4A, +0x4A, 0x85, 0x2A, 0x0A, 0x85, 0xBA, 0xA5, 0x06, 0x3A, 0x38, 0xE5, 0xA0, 0x4A, 0x4A, 0x4A, 0x4A, +0x38, 0xE5, 0x2A, 0x85, 0xC6, 0x6B, 0x8B, 0xA0, 0x76, 0x00, 0xB7, 0x24, 0x85, 0x2C, 0x88, 0x88, +0xB7, 0x24, 0x85, 0x2A, 0xA7, 0x2A, 0x85, 0x70, 0xA0, 0x02, 0x00, 0xB7, 0x2A, 0x85, 0x72, 0xA7, +0x70, 0x0A, 0x18, 0x65, 0x70, 0x85, 0x74, 0xA5, 0x72, 0x69, 0x00, 0x00, 0x85, 0x76, 0x85, 0x7A, +0x85, 0x82, 0xD4, 0x71, 0xAB, 0xAB, 0xA6, 0x74, 0xBD, 0x02, 0x00, 0x85, 0x88, 0xBD, 0x04, 0x00, +0x85, 0x8A, 0x1A, 0x38, 0xE5, 0x88, 0x0A, 0x85, 0x8E, 0xBD, 0x06, 0x00, 0x85, 0xE0, 0xBD, 0x08, +0x00, 0x85, 0x8C, 0xA9, 0x00, 0x01, 0xA0, 0x08, 0x00, 0xD7, 0x70, 0x10, 0x09, 0xA0, 0x0A, 0x00, +0xB7, 0x70, 0x85, 0x9E, 0x80, 0x11, 0xA0, 0x06, 0x00, 0xB7, 0x74, 0xA0, 0x0C, 0x00, 0xD7, 0x74, +0x10, 0x02, 0xB7, 0x74, 0x18, 0x65, 0x8C, 0x85, 0x9E, 0xBD, 0x0E, 0x00, 0x85, 0xCA, 0xBD, 0x12, +0x00, 0x85, 0x84, 0xBD, 0x14, 0x00, 0x85, 0xE2, 0xBD, 0x16, 0x00, 0x85, 0xE4, 0xBD, 0x10, 0x00, +0x0A, 0x18, 0x69, 0x10, 0x00, 0x90, 0x02, 0xE6, 0x82, 0x18, 0x65, 0x74, 0x90, 0x02, 0xE6, 0x82, +0x85, 0x80, 0xA5, 0x82, 0x85, 0x7E, 0xA5, 0x8E, 0x18, 0x69, 0x04, 0x00, 0x85, 0x2A, 0xA5, 0x80, +0x38, 0xE5, 0x2A, 0x85, 0x7C, 0xB0, 0x02, 0xC6, 0x7E, 0xA9, 0x1A, 0x00, 0x18, 0x65, 0x74, 0x85, +0x78, 0x90, 0x02, 0xE6, 0x7A, 0xBD, 0x18, 0x00, 0x0A, 0x85, 0x86, 0xA0, 0x04, 0x00, 0xB7, 0x70, +0x49, 0xFF, 0xFF, 0xA0, 0x80, 0x00, 0x37, 0x24, 0x85, 0xE6, 0x64, 0xF4, 0x89, 0x01, 0x00, 0xF0, +0x02, 0xE6, 0xF4, 0xA0, 0x84, 0x00, 0xB7, 0x24, 0x85, 0xEC, 0xC8, 0xC8, 0xB7, 0x24, 0x85, 0xEE, +0xA0, 0x88, 0x00, 0xB7, 0x24, 0x85, 0xF0, 0xC8, 0xC8, 0xB7, 0x24, 0x85, 0xF2, 0xA0, 0x7C, 0x00, +0xB7, 0x24, 0x85, 0xF6, 0xA9, 0x00, 0x80, 0x85, 0x94, 0xA5, 0xF6, 0x29, 0x02, 0x00, 0xF0, 0x0C, +0xA9, 0x30, 0x00, 0x22, 0xE8, 0x1F, 0xE0, 0x29, 0xFF, 0x00, 0x85, 0xF8, 0xAB, 0x6B, 0xA6, 0x46, +0xA5, 0x44, 0x20, 0x49, 0x69, 0x86, 0xB0, 0x85, 0xAE, 0xA5, 0x48, 0x0A, 0x85, 0xC4, 0xA5, 0xAC, +0x38, 0xE5, 0x16, 0x29, 0x0F, 0x00, 0x85, 0x2A, 0xA2, 0x00, 0x02, 0xB5, 0x00, 0x18, 0x69, 0x20, +0x00, 0x29, 0xF0, 0xFF, 0x05, 0x2A, 0x85, 0x92, 0x85, 0x90, 0xA5, 0xAC, 0x38, 0xE5, 0x92, 0x85, +0xA0, 0xA0, 0x40, 0x00, 0xB7, 0x24, 0x38, 0xE5, 0x84, 0x3A, 0x85, 0xA2, 0xA9, 0xFF, 0x3F, 0x85, +0xCE, 0xA9, 0x01, 0xC0, 0x85, 0xD0, 0x6B, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, +0xF4, 0x0F, 0x00, 0xA5, 0x0A, 0x48, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xA2, +0x02, 0x09, 0x22, 0x00, 0x00, 0xE1, 0x90, 0x03, 0xFA, 0xFA, 0x6B, 0x68, 0x85, 0x44, 0x68, 0x85, +0x46, 0xA9, 0x00, 0x00, 0x6B, 0x8B, 0xA5, 0xCE, 0x0A, 0x85, 0x2A, 0x18, 0x65, 0xAE, 0x85, 0xB2, +0xA5, 0xB0, 0x69, 0x00, 0x00, 0x85, 0xB4, 0xD4, 0xB3, 0xAB, 0xAB, 0xA5, 0xD0, 0x0A, 0x38, 0xE5, +0x2A, 0x85, 0xEA, 0xA5, 0xCA, 0x85, 0xC8, 0xA9, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x91, 0xB2, 0xC4, +0xEA, 0xF0, 0x04, 0xC8, 0xC8, 0x80, 0xF6, 0xC6, 0xC8, 0xF0, 0x11, 0xA5, 0xB2, 0x18, 0x65, 0xC4, +0x85, 0xB2, 0x90, 0x06, 0xE6, 0xB4, 0xD4, 0xB3, 0xAB, 0xAB, 0x80, 0xDB, 0xAB, 0x6B, 0xA5, 0xD0, +0xC5, 0xCE, 0x10, 0x02, 0x80, 0x12, 0x4A, 0x4A, 0x4A, 0x4A, 0x85, 0xD0, 0xA5, 0xCE, 0x4A, 0x4A, +0x4A, 0x4A, 0x85, 0xCE, 0x22, 0x70, 0x1F, 0xE0, 0x6B, 0x64, 0xE8, 0x80, 0x05, 0xA9, 0xFF, 0xFF, +0x85, 0xE8, 0xA5, 0xE6, 0xF0, 0x14, 0x89, 0x01, 0x00, 0xF0, 0x06, 0x22, 0xB8, 0x1F, 0xE0, 0xA5, +0xE6, 0x89, 0x04, 0x00, 0xF0, 0x04, 0x22, 0xBC, 0x1F, 0xE0, 0x6B, 0xA5, 0xD0, 0xC5, 0xCE, 0x10, +0x01, 0x6B, 0xE6, 0xD0, 0xA5, 0xE8, 0xF0, 0x01, 0x6B, 0x8B, 0xA5, 0xCA, 0x85, 0xC8, 0xA5, 0xCE, +0x4A, 0x4A, 0x4A, 0x29, 0xFE, 0xFF, 0x85, 0x2A, 0x18, 0x65, 0xAE, 0x85, 0xB2, 0xA5, 0xB0, 0x69, +0x00, 0x00, 0x85, 0xB4, 0xD4, 0xB3, 0xAB, 0xAB, 0xA5, 0xD0, 0x4A, 0x4A, 0x4A, 0x29, 0xFE, 0xFF, +0x38, 0xE5, 0x2A, 0xD0, 0x03, 0x82, 0x48, 0x00, 0x85, 0xEA, 0xA4, 0xEA, 0xB1, 0xB2, 0xEB, 0x4A, +0x85, 0x2A, 0xBB, 0x88, 0x88, 0x84, 0x30, 0xB1, 0xB2, 0xEB, 0x4A, 0x85, 0x2E, 0xA5, 0x2A, 0x90, +0x03, 0x09, 0x00, 0x80, 0x9B, 0xEB, 0x11, 0xB2, 0x91, 0xB2, 0xA4, 0x30, 0xF0, 0x06, 0xA5, 0x2E, +0x85, 0x2A, 0x80, 0xDE, 0xA5, 0x2E, 0xEB, 0x12, 0xB2, 0x92, 0xB2, 0xC6, 0xC8, 0xF0, 0x2F, 0xA5, +0xB2, 0x18, 0x65, 0xC4, 0x85, 0xB2, 0x90, 0x06, 0xE6, 0xB4, 0xD4, 0xB3, 0xAB, 0xAB, 0x80, 0xBA, +0xB2, 0xB2, 0xEB, 0x4A, 0xEB, 0x12, 0xB2, 0x92, 0xB2, 0xC6, 0xC8, 0xF0, 0x11, 0xA5, 0xB2, 0x18, +0x65, 0xC4, 0x85, 0xB2, 0x90, 0x06, 0xE6, 0xB4, 0xD4, 0xB3, 0xAB, 0xAB, 0x80, 0xE2, 0xAB, 0x6B, +0xA5, 0xE2, 0xC9, 0x02, 0x00, 0xF0, 0x03, 0x10, 0x06, 0x6B, 0xA9, 0x00, 0x00, 0x80, 0x03, 0xA9, +0xFF, 0xFF, 0x85, 0x2C, 0xA5, 0xD0, 0xC5, 0xCE, 0x10, 0x10, 0xA5, 0x90, 0xC5, 0x92, 0xD0, 0x01, +0x6B, 0x3A, 0x85, 0xD0, 0xA5, 0x92, 0x85, 0xCE, 0x80, 0x11, 0xA5, 0x90, 0x3A, 0xC5, 0xD0, 0x30, +0x02, 0x85, 0xD0, 0xA5, 0x92, 0xC5, 0xCE, 0x10, 0x02, 0x85, 0xCE, 0xA5, 0xE8, 0xF0, 0x01, 0x6B, +0xA5, 0xCE, 0x4A, 0x4A, 0x4A, 0x29, 0xFE, 0xFF, 0x85, 0x2A, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, +0xD4, 0xC4, 0xD4, 0x84, 0xA2, 0x0B, 0x09, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x18, 0x65, 0xAE, 0x85, +0xB6, 0x68, 0x65, 0xB0, 0x85, 0xB8, 0xA5, 0xB6, 0x18, 0x65, 0x2A, 0x85, 0xB6, 0x90, 0x02, 0xE6, +0xB8, 0xA5, 0xB6, 0x18, 0x65, 0xC4, 0x85, 0xB2, 0xA5, 0xB8, 0x69, 0x00, 0x00, 0x85, 0xB4, 0x85, +0xD4, 0xA5, 0xB2, 0x18, 0x65, 0xC4, 0x85, 0xD2, 0x90, 0x02, 0xE6, 0xD4, 0x8B, 0xD4, 0xB3, 0xAB, +0xAB, 0xA5, 0xD0, 0x4A, 0x4A, 0x4A, 0x29, 0xFE, 0xFF, 0x38, 0xE5, 0x2A, 0xD0, 0x03, 0x82, 0x69, +0x00, 0x85, 0xEA, 0xA8, 0xB1, 0xB2, 0xEB, 0x4A, 0xEB, 0x85, 0x2A, 0x64, 0x2E, 0xB1, 0xB2, 0xEB, +0x0A, 0xEB, 0x05, 0x2A, 0x85, 0x2A, 0x90, 0x05, 0xA9, 0x00, 0x01, 0x85, 0x2E, 0xB7, 0xD2, 0x25, +0x2C, 0x17, 0xB6, 0x05, 0x2A, 0x85, 0x2A, 0x88, 0x88, 0xB1, 0xB2, 0xEB, 0x4A, 0xEB, 0x05, 0x2E, +0x85, 0x2E, 0x90, 0x07, 0xA9, 0x80, 0x00, 0x05, 0x2A, 0x85, 0x2A, 0xA5, 0x2A, 0x49, 0xFF, 0xFF, +0xC8, 0xC8, 0x11, 0xB2, 0x91, 0xB2, 0x88, 0x88, 0xF0, 0x06, 0xA5, 0x2E, 0x85, 0x2A, 0x80, 0xBB, +0xA7, 0xD2, 0x25, 0x2C, 0x07, 0xB6, 0x05, 0x2E, 0x85, 0x2E, 0xB2, 0xB2, 0xEB, 0x0A, 0xEB, 0x05, +0x2E, 0x49, 0xFF, 0xFF, 0x12, 0xB2, 0x92, 0xB2, 0x80, 0x20, 0x85, 0xEA, 0xA7, 0xD2, 0x25, 0x2C, +0x07, 0xB6, 0x85, 0x2A, 0xB2, 0xB2, 0xEB, 0xAA, 0x4A, 0xEB, 0x05, 0x2A, 0x85, 0x2A, 0x8A, 0x0A, +0xEB, 0x05, 0x2A, 0x49, 0xFF, 0xFF, 0x12, 0xB2, 0x92, 0xB2, 0xA5, 0xCE, 0x29, 0x0F, 0x00, 0x0A, +0xAA, 0xBF, 0x87, 0x49, 0xFE, 0x32, 0xB2, 0x92, 0xB2, 0xA5, 0xD0, 0x29, 0x0F, 0x00, 0x0A, 0xAA, +0xBF, 0xA7, 0x49, 0xFE, 0xA4, 0xEA, 0x31, 0xB2, 0x91, 0xB2, 0xAB, 0x6B, 0x8B, 0xA5, 0x90, 0x85, +0x98, 0x22, 0x50, 0x1F, 0xE0, 0xAA, 0x29, 0xFF, 0x00, 0x18, 0x65, 0x90, 0x85, 0x90, 0xB7, 0x7C, +0x85, 0x2C, 0xC8, 0xC8, 0xB7, 0x7C, 0x3A, 0xA8, 0x38, 0xE5, 0x2C, 0x10, 0x03, 0x82, 0x3B, 0x01, +0x85, 0x2A, 0x8A, 0xEB, 0x29, 0xFF, 0x00, 0x18, 0x65, 0x8C, 0x18, 0x65, 0x98, 0x85, 0x98, 0xC5, +0xCE, 0x10, 0x02, 0x85, 0xCE, 0x18, 0x65, 0x2A, 0xC5, 0xD0, 0x30, 0x02, 0x85, 0xD0, 0xA5, 0x2C, +0x29, 0x0F, 0x00, 0x85, 0x2E, 0x0A, 0xAA, 0xBF, 0x87, 0x49, 0xFE, 0x85, 0xA4, 0xA5, 0x2C, 0x4A, +0x4A, 0x4A, 0x29, 0xFE, 0xFF, 0x85, 0x9C, 0x18, 0x65, 0x78, 0x85, 0xB6, 0xA5, 0x7A, 0x69, 0x00, +0x00, 0x85, 0xB8, 0x98, 0x29, 0x0F, 0x00, 0x0A, 0xAA, 0xBF, 0xA7, 0x49, 0xFE, 0x85, 0xA6, 0xA5, +0x98, 0x4A, 0x4A, 0x4A, 0x29, 0xFE, 0xFF, 0xAA, 0xA5, 0x98, 0x29, 0x0F, 0x00, 0x38, 0xE5, 0x2E, +0x10, 0x06, 0x18, 0x69, 0x10, 0x00, 0xCA, 0xCA, 0x0A, 0x85, 0x42, 0x8A, 0x18, 0x65, 0xAE, 0x85, +0xB2, 0xA5, 0xB0, 0x69, 0x00, 0x00, 0x85, 0xB4, 0xD4, 0xB3, 0xAB, 0xAB, 0xA5, 0xCA, 0x85, 0xC8, +0x98, 0x4A, 0x4A, 0x4A, 0x29, 0xFE, 0xFF, 0x38, 0xE5, 0x9C, 0xD0, 0x03, 0x82, 0x69, 0x00, 0x85, +0xEA, 0xA0, 0x00, 0x00, 0xA7, 0xB6, 0x25, 0xA4, 0xF0, 0x1E, 0x85, 0x9A, 0x22, 0xDE, 0x38, 0xFE, +0x11, 0xB2, 0x91, 0xB2, 0xA5, 0x9A, 0x22, 0x69, 0x39, 0xFE, 0xC8, 0xC8, 0x11, 0xB2, 0x91, 0xB2, +0xC4, 0xEA, 0xF0, 0x08, 0xB7, 0xB6, 0xD0, 0xE2, 0xC8, 0xC8, 0x80, 0xF4, 0xB7, 0xB6, 0x25, 0xA6, +0xF0, 0x16, 0x85, 0x9A, 0x22, 0xDE, 0x38, 0xFE, 0x11, 0xB2, 0x91, 0xB2, 0xA5, 0x9A, 0x22, 0x69, +0x39, 0xFE, 0xC8, 0xC8, 0x11, 0xB2, 0x91, 0xB2, 0xC6, 0xC8, 0xF0, 0x5F, 0xA5, 0xB2, 0x18, 0x65, +0xC4, 0x85, 0xB2, 0x90, 0x06, 0xE6, 0xB4, 0xD4, 0xB3, 0xAB, 0xAB, 0xA5, 0xB6, 0x18, 0x65, 0x86, +0x85, 0xB6, 0x90, 0x02, 0xE6, 0xB8, 0x80, 0x99, 0xA5, 0xA6, 0x25, 0xA4, 0x85, 0xA4, 0xA0, 0x02, +0x00, 0xA7, 0xB6, 0x25, 0xA4, 0xF0, 0x14, 0x85, 0x9A, 0x22, 0xDE, 0x38, 0xFE, 0x12, 0xB2, 0x92, +0xB2, 0xA5, 0x9A, 0x22, 0x69, 0x39, 0xFE, 0x11, 0xB2, 0x91, 0xB2, 0xC6, 0xC8, 0xF0, 0x1C, 0xA5, +0xB2, 0x18, 0x65, 0xC4, 0x85, 0xB2, 0x90, 0x06, 0xE6, 0xB4, 0xD4, 0xB3, 0xAB, 0xAB, 0xA5, 0xB6, +0x18, 0x65, 0x86, 0x85, 0xB6, 0x90, 0x02, 0xE6, 0xB8, 0x80, 0xC6, 0xAB, 0x6B, 0xA5, 0x56, 0xD0, +0x0E, 0xA5, 0x52, 0x18, 0x65, 0x52, 0x65, 0x52, 0x69, 0x24, 0x00, 0x85, 0xD2, 0x80, 0x04, 0xA5, +0x52, 0x85, 0xD2, 0xA5, 0xD2, 0x1A, 0x18, 0x65, 0x28, 0x0A, 0x0A, 0x4A, 0x4A, 0x4A, 0x29, 0xFE, +0xFF, 0x85, 0xC4, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xD4, 0xC4, 0xD4, 0x50, 0xA2, 0x0B, 0x09, +0x22, 0x00, 0x00, 0xE1, 0xD4, 0x46, 0xD4, 0x44, 0xA2, 0x02, 0x19, 0x22, 0x00, 0x00, 0xE1, 0x90, +0x01, 0x6B, 0xA5, 0x50, 0x85, 0x4A, 0xA5, 0xC4, 0x4A, 0x85, 0x48, 0xA5, 0x56, 0xD0, 0x0A, 0xA9, +0x00, 0x00, 0xA2, 0x00, 0x01, 0x95, 0x04, 0x80, 0x07, 0xA5, 0x52, 0xA2, 0x00, 0x01, 0x95, 0x04, +0xA6, 0x46, 0xA5, 0x44, 0x20, 0x49, 0x69, 0x86, 0xB0, 0x85, 0xAE, 0xA9, 0x00, 0x00, 0x85, 0xCE, +0xA5, 0x48, 0x3A, 0x85, 0xD0, 0xA5, 0x4A, 0x85, 0xCA, 0x22, 0x70, 0x1F, 0xE0, 0x18, 0xA9, 0x00, +0x00, 0x6B, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xA5, 0x54, 0x0A, 0x85, 0xC4, 0x48, 0xD4, 0x50, +0xA2, 0x0B, 0x09, 0x22, 0x00, 0x00, 0xE1, 0xD4, 0x46, 0xD4, 0x44, 0xA2, 0x02, 0x19, 0x22, 0x00, +0x00, 0xE1, 0x90, 0x01, 0x6B, 0xA5, 0x50, 0x85, 0x4A, 0xA5, 0x54, 0x85, 0x48, 0xA5, 0x56, 0xA2, +0x00, 0x01, 0x95, 0x04, 0xA6, 0x46, 0xA5, 0x44, 0x20, 0x49, 0x69, 0x86, 0xB0, 0x85, 0xAE, 0xA9, +0x00, 0x00, 0x85, 0xCE, 0xA5, 0x48, 0x3A, 0x85, 0xD0, 0xA5, 0x4A, 0x85, 0xCA, 0x22, 0x70, 0x1F, +0xE0, 0x18, 0xA9, 0x00, 0x00, 0x6B, 0xA0, 0x82, 0x00, 0xB7, 0x24, 0x85, 0x30, 0x22, 0xF0, 0x1E, +0xE0, 0x64, 0x2A, 0xA0, 0x7C, 0x00, 0xB7, 0x24, 0x29, 0x04, 0x00, 0xF0, 0x02, 0xC6, 0x2A, 0xA0, +0x8C, 0x00, 0xB7, 0x24, 0x24, 0x2A, 0x30, 0x06, 0xAA, 0xA5, 0x0C, 0x20, 0xD9, 0x16, 0x85, 0x2E, +0xA0, 0x8E, 0x00, 0xB7, 0x24, 0x24, 0x2A, 0x30, 0x06, 0xAA, 0xA5, 0x0C, 0x20, 0xD9, 0x16, 0x85, +0xBE, 0x22, 0xC0, 0x1E, 0xE0, 0xA5, 0x00, 0x85, 0x40, 0x22, 0x98, 0x1E, 0xE0, 0xA5, 0x30, 0x29, +0xFF, 0x7F, 0xC9, 0x04, 0x00, 0xB0, 0x03, 0x4C, 0x0C, 0x74, 0xA5, 0xA4, 0xD0, 0x04, 0x22, 0xCC, +0x1E, 0xE0, 0xA5, 0xC6, 0x85, 0xCC, 0xA5, 0xBA, 0x85, 0x2C, 0xA5, 0xBC, 0x85, 0x2A, 0xA5, 0xA4, +0xF0, 0x04, 0x22, 0xCC, 0x1E, 0xE0, 0x24, 0x30, 0x30, 0x60, 0x24, 0x0B, 0x30, 0x2E, 0xA4, 0x2C, +0xB7, 0xB2, 0xF0, 0x16, 0x22, 0x00, 0x1E, 0xE0, 0xA4, 0x2C, 0xC8, 0xB7, 0xB2, 0xC8, 0x84, 0x2C, +0x22, 0x00, 0x1E, 0xE0, 0xC6, 0xCC, 0x10, 0xE6, 0x80, 0x5E, 0xC8, 0xC8, 0x84, 0x2C, 0xA5, 0x2A, +0x18, 0x69, 0x08, 0x00, 0x85, 0x2A, 0xC6, 0xCC, 0x10, 0xD4, 0x80, 0x4C, 0xA4, 0x2C, 0xB7, 0xB2, +0xF0, 0x16, 0x22, 0x00, 0x1E, 0xE0, 0xA4, 0x2C, 0xC8, 0xB7, 0xB2, 0xC8, 0x84, 0x2C, 0x22, 0x00, +0x1E, 0xE0, 0xC6, 0xCC, 0x10, 0xE6, 0x80, 0x30, 0xC8, 0xC8, 0x84, 0x2C, 0xA5, 0x2A, 0x1A, 0x1A, +0x1A, 0x1A, 0x85, 0x2A, 0xC6, 0xCC, 0x10, 0xD4, 0x80, 0x1E, 0xA4, 0x2C, 0xB7, 0xB2, 0x49, 0xFF, +0xFF, 0x22, 0x00, 0x1E, 0xE0, 0xA4, 0x2C, 0xC8, 0xB7, 0xB2, 0x49, 0xFF, 0xFF, 0xC8, 0x84, 0x2C, +0x22, 0x00, 0x1E, 0xE0, 0xC6, 0xCC, 0x10, 0xE2, 0xA5, 0xB2, 0x18, 0x65, 0xC4, 0x85, 0xB2, 0x90, +0x02, 0xE6, 0xB4, 0xA5, 0xB6, 0x18, 0x65, 0x12, 0x85, 0xB6, 0x90, 0x02, 0xE6, 0xB8, 0xE6, 0x40, +0xC6, 0xC8, 0x30, 0x03, 0x4C, 0x52, 0x73, 0x22, 0x9C, 0x1E, 0xE0, 0x6B, 0xA5, 0xC6, 0x85, 0xCC, +0xA5, 0xBA, 0x85, 0x2C, 0xA5, 0xBC, 0x85, 0x2A, 0x22, 0xCC, 0x1E, 0xE0, 0x24, 0x30, 0x30, 0x1A, +0xA4, 0x2C, 0xB7, 0xB2, 0x22, 0x00, 0x1E, 0xE0, 0xA4, 0x2C, 0xC8, 0xB7, 0xB2, 0xC8, 0x84, 0x2C, +0x22, 0x00, 0x1E, 0xE0, 0xC6, 0xCC, 0x10, 0xE8, 0x80, 0x1E, 0xA4, 0x2C, 0xB7, 0xB2, 0x49, 0xFF, +0xFF, 0x22, 0x00, 0x1E, 0xE0, 0xA4, 0x2C, 0xC8, 0xB7, 0xB2, 0x49, 0xFF, 0xFF, 0xC8, 0x84, 0x2C, +0x22, 0x00, 0x1E, 0xE0, 0xC6, 0xCC, 0x10, 0xE2, 0xA5, 0xB2, 0x18, 0x65, 0xC4, 0x85, 0xB2, 0x90, +0x02, 0xE6, 0xB4, 0xA5, 0xB6, 0x18, 0x65, 0x12, 0x85, 0xB6, 0x90, 0x02, 0xE6, 0xB8, 0xE6, 0x40, +0xC6, 0xC8, 0x10, 0x98, 0x22, 0x9C, 0x1E, 0xE0, 0x6B, 0x5C, 0x44, 0x75, 0xFE, 0x5C, 0xB3, 0x75, +0xFE, 0x5C, 0x15, 0x76, 0xFE, 0x5C, 0x7D, 0x76, 0xFE, 0x5C, 0xEA, 0x76, 0xFE, 0x5C, 0x3B, 0x77, +0xFE, 0x5C, 0x7D, 0x77, 0xFE, 0x5C, 0xC5, 0x77, 0xFE, 0x5C, 0xEB, 0x74, 0xFE, 0x5C, 0x74, 0x75, +0xFE, 0x5C, 0xD6, 0x75, 0xFE, 0x5C, 0x38, 0x76, 0xFE, 0x5C, 0xA3, 0x76, 0xFE, 0x5C, 0x11, 0x77, +0xFE, 0x5C, 0x53, 0x77, 0xFE, 0x5C, 0x95, 0x77, 0xFE, 0x24, 0x0B, 0x10, 0x17, 0x29, 0x7F, 0x00, +0x0A, 0x0A, 0xAA, 0xBF, 0x79, 0x74, 0xFE, 0x8F, 0x00, 0x1E, 0xE0, 0xBF, 0x7B, 0x74, 0xFE, 0x8F, +0x02, 0x1E, 0xE0, 0x6B, 0x29, 0x7F, 0x00, 0x0A, 0x0A, 0xAA, 0xBF, 0x99, 0x74, 0xFE, 0x8F, 0x00, +0x1E, 0xE0, 0xBF, 0x9B, 0x74, 0xFE, 0x8F, 0x02, 0x1E, 0xE0, 0x6B, 0x29, 0xFF, 0x00, 0x0A, 0x0A, +0xAA, 0xBF, 0x3D, 0x4C, 0xFE, 0xA8, 0xBF, 0x3B, 0x4C, 0xFE, 0xBB, 0xA8, 0x25, 0x2E, 0x85, 0xC0, +0x98, 0x49, 0xFF, 0xFF, 0x25, 0xBE, 0x05, 0xC0, 0x85, 0xC0, 0xA4, 0x2A, 0xB7, 0x4C, 0x49, 0xFF, +0xFF, 0x37, 0xB6, 0x85, 0xC2, 0xB7, 0x4C, 0x25, 0xC0, 0x05, 0xC2, 0x97, 0xB6, 0xC8, 0xC8, 0x8A, +0x25, 0x2E, 0x85, 0xC0, 0x8A, 0x49, 0xFF, 0xFF, 0x25, 0xBE, 0x05, 0xC0, 0x85, 0xC0, 0xB7, 0x4C, +0x49, 0xFF, 0xFF, 0x37, 0xB6, 0x85, 0xC2, 0xB7, 0x4C, 0x25, 0xC0, 0x05, 0xC2, 0x97, 0xB6, 0xC8, +0xC8, 0x84, 0x2A, 0x6B, 0x29, 0xFF, 0x00, 0x0A, 0xAA, 0xBF, 0x3B, 0x50, 0xFE, 0xA8, 0x25, 0x2E, +0x85, 0xC0, 0x98, 0x49, 0xFF, 0xFF, 0x25, 0xBE, 0x05, 0xC0, 0x85, 0xC0, 0xA4, 0x2A, 0xB7, 0x4C, +0x49, 0xFF, 0xFF, 0x37, 0xB6, 0x85, 0xC2, 0xB7, 0x4C, 0x25, 0xC0, 0x05, 0xC2, 0x97, 0xB6, 0xC8, +0xC8, 0x84, 0x2A, 0x6B, 0x29, 0xFF, 0x00, 0x0A, 0x0A, 0xAA, 0xBF, 0x3D, 0x4C, 0xFE, 0xA8, 0xBF, +0x3B, 0x4C, 0xFE, 0xBB, 0xA8, 0x25, 0x2E, 0x85, 0xC0, 0x98, 0x49, 0xFF, 0xFF, 0x25, 0xBE, 0x05, +0xC0, 0xA4, 0x2A, 0x37, 0x4C, 0x17, 0xB6, 0x97, 0xB6, 0xC8, 0xC8, 0x8A, 0x25, 0x2E, 0x85, 0xC0, +0x8A, 0x49, 0xFF, 0xFF, 0x25, 0xBE, 0x05, 0xC0, 0x37, 0x4C, 0x17, 0xB6, 0x97, 0xB6, 0xC8, 0xC8, +0x84, 0x2A, 0x6B, 0x29, 0xFF, 0x00, 0x0A, 0xAA, 0xBF, 0x3B, 0x50, 0xFE, 0xA8, 0x25, 0x2E, 0x85, +0xC0, 0x98, 0x49, 0xFF, 0xFF, 0x25, 0xBE, 0x05, 0xC0, 0xA4, 0x2A, 0x37, 0x4C, 0x17, 0xB6, 0x97, +0xB6, 0xC8, 0xC8, 0x84, 0x2A, 0x6B, 0x29, 0xFF, 0x00, 0x0A, 0x0A, 0xAA, 0xBF, 0x3D, 0x4C, 0xFE, +0xA8, 0xBF, 0x3B, 0x4C, 0xFE, 0xBB, 0xA8, 0x25, 0x2E, 0x85, 0xC0, 0x98, 0x49, 0xFF, 0xFF, 0x25, +0xBE, 0x05, 0xC0, 0xA4, 0x2A, 0x37, 0x4C, 0x57, 0xB6, 0x97, 0xB6, 0xC8, 0xC8, 0x8A, 0x25, 0x2E, +0x85, 0xC0, 0x8A, 0x49, 0xFF, 0xFF, 0x25, 0xBE, 0x05, 0xC0, 0x37, 0x4C, 0x57, 0xB6, 0x97, 0xB6, +0xC8, 0xC8, 0x84, 0x2A, 0x6B, 0x29, 0xFF, 0x00, 0x0A, 0xAA, 0xBF, 0x3B, 0x50, 0xFE, 0xA8, 0x25, +0x2E, 0x85, 0xC0, 0x98, 0x49, 0xFF, 0xFF, 0x25, 0xBE, 0x05, 0xC0, 0xA4, 0x2A, 0x37, 0x4C, 0x57, +0xB6, 0x97, 0xB6, 0xC8, 0xC8, 0x84, 0x2A, 0x6B, 0x29, 0xFF, 0x00, 0x0A, 0x0A, 0xAA, 0xBF, 0x3D, +0x4C, 0xFE, 0xA8, 0xBF, 0x3B, 0x4C, 0xFE, 0xBB, 0xA8, 0x25, 0x2E, 0x85, 0xC0, 0x98, 0x49, 0xFF, +0xFF, 0x25, 0xBE, 0x05, 0xC0, 0xA4, 0x2A, 0x37, 0x4C, 0x49, 0xFF, 0xFF, 0x37, 0xB6, 0x97, 0xB6, +0xC8, 0xC8, 0x8A, 0x25, 0x2E, 0x85, 0xC0, 0x8A, 0x49, 0xFF, 0xFF, 0x25, 0xBE, 0x05, 0xC0, 0x37, +0x4C, 0x49, 0xFF, 0xFF, 0x37, 0xB6, 0x97, 0xB6, 0xC8, 0xC8, 0x84, 0x2A, 0x6B, 0x29, 0xFF, 0x00, +0x0A, 0xAA, 0xBF, 0x3B, 0x50, 0xFE, 0xA8, 0x25, 0x2E, 0x85, 0xC0, 0x98, 0x49, 0xFF, 0xFF, 0x25, +0xBE, 0x05, 0xC0, 0xA4, 0x2A, 0x37, 0x4C, 0x49, 0xFF, 0xFF, 0x37, 0xB6, 0x97, 0xB6, 0xC8, 0xC8, +0x84, 0x2A, 0x6B, 0x29, 0xFF, 0x00, 0x0A, 0x0A, 0xAA, 0xBF, 0x3D, 0x4C, 0xFE, 0xA8, 0xBF, 0x3B, +0x4C, 0xFE, 0xBB, 0xA8, 0x25, 0x2E, 0x85, 0xC0, 0x98, 0xA4, 0x2A, 0x37, 0x4C, 0x49, 0xFF, 0xFF, +0x37, 0xB6, 0x85, 0xC2, 0xB7, 0x4C, 0x25, 0xC0, 0x05, 0xC2, 0x97, 0xB6, 0xC8, 0xC8, 0x8A, 0x25, +0x2E, 0x85, 0xC0, 0x8A, 0x37, 0x4C, 0x49, 0xFF, 0xFF, 0x37, 0xB6, 0x85, 0xC2, 0xB7, 0x4C, 0x25, +0xC0, 0x05, 0xC2, 0x97, 0xB6, 0xC8, 0xC8, 0x84, 0x2A, 0x6B, 0x29, 0xFF, 0x00, 0x0A, 0xAA, 0xBF, +0x3B, 0x50, 0xFE, 0xAA, 0x25, 0x2E, 0x85, 0xC0, 0x8A, 0xA4, 0x2A, 0x37, 0x4C, 0x49, 0xFF, 0xFF, +0x37, 0xB6, 0x85, 0xC2, 0xB7, 0x4C, 0x25, 0xC0, 0x05, 0xC2, 0x97, 0xB6, 0xC8, 0xC8, 0x84, 0x2A, +0x6B, 0x29, 0xFF, 0x00, 0x0A, 0x0A, 0xAA, 0xBF, 0x3D, 0x4C, 0xFE, 0xA8, 0xBF, 0x3B, 0x4C, 0xFE, +0xBB, 0x25, 0x2E, 0xA4, 0x2A, 0x37, 0x4C, 0x17, 0xB6, 0x97, 0xB6, 0xC8, 0xC8, 0x8A, 0x25, 0x2E, +0x37, 0x4C, 0x17, 0xB6, 0x97, 0xB6, 0xC8, 0xC8, 0x84, 0x2A, 0x6B, 0x29, 0xFF, 0x00, 0x0A, 0xAA, +0xBF, 0x3B, 0x50, 0xFE, 0x25, 0x2E, 0xA4, 0x2A, 0x37, 0x4C, 0x17, 0xB6, 0x97, 0xB6, 0xC8, 0xC8, +0x84, 0x2A, 0x6B, 0x29, 0xFF, 0x00, 0x0A, 0x0A, 0xAA, 0xBF, 0x3D, 0x4C, 0xFE, 0xA8, 0xBF, 0x3B, +0x4C, 0xFE, 0xBB, 0x25, 0x2E, 0xA4, 0x2A, 0x37, 0x4C, 0x57, 0xB6, 0x97, 0xB6, 0xC8, 0xC8, 0x8A, +0x25, 0x2E, 0x37, 0x4C, 0x57, 0xB6, 0x97, 0xB6, 0xC8, 0xC8, 0x84, 0x2A, 0x6B, 0x29, 0xFF, 0x00, +0x0A, 0xAA, 0xBF, 0x3B, 0x50, 0xFE, 0x25, 0x2E, 0xA4, 0x2A, 0x37, 0x4C, 0x57, 0xB6, 0x97, 0xB6, +0xC8, 0xC8, 0x84, 0x2A, 0x6B, 0x29, 0xFF, 0x00, 0x0A, 0x0A, 0xAA, 0xBF, 0x3D, 0x4C, 0xFE, 0xA8, +0xBF, 0x3B, 0x4C, 0xFE, 0xBB, 0x25, 0x2E, 0xA4, 0x2A, 0x37, 0x4C, 0x49, 0xFF, 0xFF, 0x37, 0xB6, +0x97, 0xB6, 0xC8, 0xC8, 0x8A, 0x25, 0x2E, 0x37, 0x4C, 0x49, 0xFF, 0xFF, 0x37, 0xB6, 0x97, 0xB6, +0xC8, 0xC8, 0x84, 0x2A, 0x6B, 0x29, 0xFF, 0x00, 0x0A, 0xAA, 0xBF, 0x3B, 0x50, 0xFE, 0x25, 0x2E, +0xA4, 0x2A, 0x37, 0x4C, 0x49, 0xFF, 0xFF, 0x37, 0xB6, 0x97, 0xB6, 0xC8, 0xC8, 0x84, 0x2A, 0x6B, +0xE6, 0x77, 0xFE, 0x00, 0x00, 0x00, 0x06, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0x08, 0x00, 0x01, 0x01, +0x0C, 0x00, 0x01, 0x90, 0x00, 0x00, 0xFF, 0x00, 0x0C, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0A, 0x00, +0x08, 0x00, 0x2F, 0x03, 0x07, 0x00, 0x01, 0x00, 0x01, 0x00, 0x45, 0x00, 0x18, 0x00, 0x40, 0xCF, +0x36, 0xC2, 0x18, 0x18, 0xC7, 0x80, 0x00, 0x00, 0x00, 0xCF, 0x31, 0xE7, 0xB0, 0xF9, 0xEF, 0xDE, +0x78, 0x03, 0x03, 0x0F, 0x3E, 0x7B, 0xE7, 0xBE, 0xFF, 0xDE, 0xCF, 0xC3, 0xC7, 0x84, 0x18, 0xDE, +0xF9, 0xEF, 0x9E, 0xFF, 0x3C, 0x78, 0x79, 0xE7, 0xFF, 0xE0, 0xF3, 0x00, 0x30, 0x18, 0x00, 0x18, +0x07, 0x03, 0x06, 0x1E, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x3F, 0xC3, 0x9A, 0x4F, 0x3C, 0x27, 0x29, 0x24, 0x31, 0x87, 0x24, 0xC9, 0x80, 0x08, 0x81, 0x89, +0x1E, 0x34, 0xB2, 0x33, 0x06, 0x24, 0xC8, 0xCC, 0x18, 0x91, 0x8E, 0x11, 0xE7, 0x03, 0xDC, 0xF8, +0x1D, 0x17, 0x20, 0x3F, 0xBE, 0x00, 0x01, 0x99, 0x88, 0x0E, 0x7D, 0xFC, 0x00, 0xCF, 0xBC, 0xF0, +0x00, 0x00, 0x6C, 0x00, 0xF0, 0xC0, 0x20, 0x00, 0x00, 0x01, 0x0C, 0xB9, 0x7F, 0x00, 0x00, 0x06, +0xDB, 0x6C, 0x02, 0x12, 0xFF, 0xFC, 0x10, 0x00, 0xE0, 0x8F, 0x3F, 0xEF, 0xAD, 0x20, 0xD8, 0x64, +0x8C, 0x00, 0x01, 0x93, 0xF3, 0x3C, 0xF3, 0xC3, 0x00, 0xF3, 0xCC, 0x06, 0x01, 0x99, 0xC1, 0xCF, +0x3C, 0xF3, 0xC6, 0x33, 0xCD, 0x83, 0xCD, 0x86, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0x33, 0x3C, 0x78, +0x79, 0xE6, 0x1E, 0x30, 0x35, 0x80, 0x18, 0x18, 0x00, 0x18, 0x0C, 0x03, 0x00, 0x06, 0x0C, 0x00, +0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x70, 0x19, 0xE6, 0x49, +0xC0, 0x00, 0x60, 0xC9, 0x81, 0x32, 0x40, 0x10, 0x42, 0xC0, 0x33, 0x58, 0x4C, 0x61, 0x8B, 0x01, +0x31, 0x86, 0x2C, 0x07, 0xFB, 0x13, 0x1C, 0x07, 0xF2, 0xCD, 0xE9, 0xBC, 0x03, 0x66, 0x63, 0x00, +0x63, 0x0D, 0x88, 0x13, 0x32, 0xD8, 0x09, 0xB9, 0xE7, 0x98, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x01, +0x20, 0x00, 0x00, 0x00, 0x93, 0x4E, 0xCC, 0x00, 0x00, 0x0D, 0x9B, 0xCC, 0x85, 0x00, 0xC7, 0x8C, +0x6C, 0x0D, 0xF3, 0x6F, 0x36, 0xDA, 0x1A, 0x30, 0xF0, 0x33, 0x0C, 0x00, 0x03, 0x33, 0x30, 0x30, +0xF3, 0xFB, 0xE1, 0xB3, 0xCF, 0x6C, 0xFC, 0xC1, 0xCD, 0xCF, 0x3C, 0x33, 0xC6, 0x30, 0xCD, 0x83, +0xD9, 0x87, 0x7E, 0xF3, 0xCF, 0x3C, 0xF0, 0x33, 0x3C, 0x7B, 0x6F, 0x66, 0x36, 0x18, 0x38, 0xC0, +0x0B, 0xFF, 0x3C, 0xFB, 0xDF, 0x7F, 0xEE, 0x3E, 0x6D, 0xFD, 0xF3, 0xDF, 0x3F, 0xB7, 0xBE, 0xCF, +0x1E, 0x1E, 0x79, 0xFE, 0x46, 0x20, 0x03, 0xCF, 0x61, 0xF0, 0x0F, 0x66, 0x00, 0x00, 0x3E, 0x01, +0x8F, 0x3C, 0xF0, 0x0F, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x01, 0x99, 0x9B, 0x7B, +0x07, 0x87, 0xF4, 0xFB, 0x09, 0x50, 0x1F, 0xE6, 0x67, 0x00, 0x66, 0x06, 0xD6, 0x61, 0x98, 0xDB, +0xF1, 0x99, 0xE7, 0x9B, 0xDC, 0x78, 0x6C, 0x00, 0xC3, 0x1E, 0x51, 0x9E, 0x60, 0x03, 0xC0, 0x00, +0xCC, 0x7B, 0x80, 0x0D, 0xB6, 0xD8, 0x08, 0xB3, 0xB3, 0x64, 0x86, 0x1B, 0xFF, 0xFC, 0x06, 0xCF, +0x84, 0x1A, 0x30, 0x3F, 0xFF, 0x1F, 0x86, 0x33, 0x30, 0x63, 0xB3, 0x0F, 0x33, 0x1E, 0xCC, 0x18, +0x00, 0x63, 0x55, 0xCF, 0xEC, 0x33, 0xF7, 0xB7, 0xFD, 0x83, 0xF1, 0x87, 0xFF, 0xF3, 0xFB, 0x3F, +0x9E, 0x33, 0x36, 0xDB, 0x66, 0x3C, 0x66, 0x0C, 0x30, 0x00, 0x06, 0x79, 0xE7, 0x9E, 0x6C, 0xCF, +0x36, 0x1E, 0xCD, 0xB7, 0x9E, 0x79, 0xE7, 0xCC, 0x18, 0xCF, 0x1E, 0xDB, 0xD9, 0x8D, 0x86, 0x18, +0x06, 0x79, 0xE1, 0x8C, 0x39, 0xE6, 0xFB, 0xEF, 0xE6, 0xFB, 0xF9, 0xE7, 0x9B, 0xF9, 0xF7, 0x73, +0x7C, 0xF3, 0xCF, 0x66, 0xF6, 0x79, 0xE7, 0x9F, 0xEE, 0xC7, 0xCC, 0xFF, 0xF2, 0xCF, 0x00, 0x00, +0x06, 0x67, 0xEB, 0x6D, 0xFB, 0x0D, 0xFE, 0x6F, 0x8C, 0xD9, 0xB1, 0x99, 0xE7, 0x98, 0x67, 0x9D, +0xEF, 0xF1, 0x8F, 0xE1, 0x53, 0x33, 0x30, 0x06, 0x6F, 0x3E, 0xCF, 0xCC, 0xFF, 0xF0, 0x00, 0x03, +0xF0, 0x73, 0xF3, 0xE4, 0x85, 0x31, 0xF7, 0xEC, 0x0F, 0xE2, 0xCB, 0x2C, 0x30, 0x33, 0x0C, 0x00, +0x0C, 0x33, 0x30, 0xC0, 0xFF, 0x0F, 0x33, 0x33, 0x7C, 0x0C, 0xFC, 0xC6, 0x55, 0xFF, 0x3C, 0x33, +0xC6, 0x33, 0xCD, 0x83, 0xD9, 0x86, 0xBD, 0xF3, 0xC3, 0x3D, 0x83, 0x33, 0x36, 0xDB, 0x6F, 0x18, +0xC6, 0x06, 0x30, 0x00, 0x06, 0x79, 0xE1, 0x9F, 0xEC, 0xCF, 0x36, 0x1F, 0x8D, 0xB7, 0x9E, 0x79, +0xE7, 0x87, 0x98, 0xCD, 0xB6, 0xD9, 0x9B, 0x98, 0x46, 0x20, 0x06, 0x79, 0xE1, 0xEF, 0x39, 0xE7, +0x9E, 0x79, 0xE7, 0x9E, 0x78, 0x7F, 0xFE, 0x5F, 0xB3, 0x33, 0x67, 0x9E, 0x79, 0xE7, 0x9E, 0x79, +0xE7, 0x99, 0x80, 0xC3, 0x0C, 0xFB, 0xF3, 0x01, 0xE0, 0x00, 0x1F, 0xFE, 0x73, 0x9A, 0x61, 0x98, +0x66, 0x79, 0x88, 0xD9, 0xB1, 0x8F, 0xBD, 0x9B, 0xFF, 0xAF, 0x0C, 0x31, 0x83, 0x1E, 0x8E, 0x61, +0x98, 0x06, 0x79, 0xE3, 0xCC, 0xCF, 0xC0, 0x00, 0x00, 0x00, 0x08, 0xB7, 0xC7, 0xCC, 0x96, 0xE0, +0xE7, 0xF0, 0x06, 0xDA, 0xD5, 0xE6, 0x30, 0x34, 0x8C, 0x00, 0x18, 0x32, 0x31, 0x8C, 0xC3, 0xCF, +0x36, 0x33, 0x0C, 0x06, 0x01, 0x80, 0x5B, 0xCF, 0x3C, 0xF3, 0xC6, 0x33, 0xCD, 0xB3, 0xCD, 0x86, +0x3C, 0xF3, 0xC3, 0x3C, 0xF3, 0x33, 0x33, 0x8C, 0xD9, 0x99, 0x86, 0x03, 0x30, 0x00, 0x06, 0x79, +0xE7, 0x9E, 0x0C, 0x7F, 0x36, 0x1E, 0xCD, 0xB7, 0x9E, 0x79, 0xE7, 0x80, 0xDB, 0xCD, 0xB3, 0x33, +0xCD, 0xB0, 0x66, 0x60, 0x07, 0xFF, 0xE7, 0x89, 0xF9, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE1, +0x86, 0x98, 0x33, 0x33, 0x67, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x99, 0x80, 0x7B, 0x17, 0xB9, +0x7B, 0x00, 0x00, 0x00, 0x0C, 0x66, 0x63, 0xB2, 0x60, 0x01, 0xFE, 0xF9, 0x90, 0xD9, 0xB1, 0x80, +0x00, 0x96, 0x61, 0xCF, 0x3C, 0x31, 0x83, 0x20, 0x8B, 0x33, 0x30, 0x07, 0xFF, 0xE3, 0xCC, 0xCC, +0x00, 0x00, 0x00, 0x00, 0x85, 0x1B, 0xFF, 0xFC, 0x6C, 0x40, 0x43, 0x6C, 0x00, 0x0F, 0x83, 0x3B, +0x18, 0x60, 0x00, 0x60, 0x70, 0x3C, 0xFF, 0xF7, 0x83, 0x79, 0xE6, 0x1E, 0x7B, 0x63, 0x03, 0x06, +0x40, 0xCF, 0xE7, 0xBE, 0xFE, 0x1E, 0xCF, 0xDE, 0xC7, 0xFE, 0x3C, 0x5E, 0xC1, 0xEC, 0xDE, 0x31, +0xE3, 0x8C, 0xD9, 0x99, 0xFE, 0x01, 0x30, 0x00, 0x03, 0xFF, 0x3C, 0xFB, 0xCC, 0x8F, 0x3F, 0xDE, +0x7F, 0xB7, 0x9B, 0xDF, 0x3F, 0x87, 0x8E, 0x7C, 0xE3, 0x36, 0x71, 0xFE, 0x66, 0x60, 0x06, 0x79, +0xBD, 0xF8, 0x6F, 0x3C, 0xFB, 0xEF, 0xBE, 0xFB, 0xEF, 0x3C, 0xF3, 0xEF, 0x7F, 0xFF, 0xE6, 0xF3, +0xCF, 0x3C, 0xF3, 0xEF, 0xBE, 0xF9, 0x80, 0x17, 0xE0, 0xC1, 0x76, 0x00, 0x00, 0x00, 0x00, 0x67, +0xBE, 0x6D, 0xFF, 0xFE, 0x67, 0x2F, 0x22, 0xDB, 0x65, 0x9F, 0xBD, 0x9B, 0xDC, 0xF1, 0xEC, 0x0F, +0x02, 0x00, 0xF9, 0x9E, 0x66, 0xDE, 0x79, 0xBE, 0x7F, 0x7B, 0x80, 0x00, 0x00, 0x00, 0x02, 0x23, +0xCF, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x07, 0x80, 0x00, 0xC0, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, +0xF0, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x70, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, +0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x80, 0x10, 0x03, 0x81, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, +0x7C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x07, 0x00, 0x0E, 0x00, 0x15, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, +0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, +0x1E, 0x00, 0x24, 0x00, 0x2B, 0x00, 0x32, 0x00, 0x39, 0x00, 0x40, 0x00, 0x42, 0x00, 0x47, 0x00, +0x4C, 0x00, 0x52, 0x00, 0x58, 0x00, 0x5B, 0x00, 0x61, 0x00, 0x63, 0x00, 0x6A, 0x00, 0x70, 0x00, +0x76, 0x00, 0x7C, 0x00, 0x82, 0x00, 0x88, 0x00, 0x8E, 0x00, 0x94, 0x00, 0x9A, 0x00, 0xA0, 0x00, +0xA6, 0x00, 0xA8, 0x00, 0xAB, 0x00, 0xB0, 0x00, 0xB6, 0x00, 0xBB, 0x00, 0xC1, 0x00, 0xC8, 0x00, +0xCE, 0x00, 0xD4, 0x00, 0xDA, 0x00, 0xE0, 0x00, 0xE5, 0x00, 0xEA, 0x00, 0xF0, 0x00, 0xF6, 0x00, +0xFA, 0x00, 0x00, 0x01, 0x07, 0x01, 0x0D, 0x01, 0x14, 0x01, 0x1A, 0x01, 0x20, 0x01, 0x26, 0x01, +0x2C, 0x01, 0x32, 0x01, 0x38, 0x01, 0x3E, 0x01, 0x44, 0x01, 0x4B, 0x01, 0x53, 0x01, 0x59, 0x01, +0x5F, 0x01, 0x65, 0x01, 0x69, 0x01, 0x70, 0x01, 0x74, 0x01, 0x7A, 0x01, 0x82, 0x01, 0x85, 0x01, +0x8B, 0x01, 0x91, 0x01, 0x97, 0x01, 0x9D, 0x01, 0xA3, 0x01, 0xA8, 0x01, 0xAE, 0x01, 0xB4, 0x01, +0xB8, 0x01, 0xBD, 0x01, 0xC3, 0x01, 0xC7, 0x01, 0xCF, 0x01, 0xD5, 0x01, 0xDB, 0x01, 0xE1, 0x01, +0xE7, 0x01, 0xEC, 0x01, 0xF2, 0x01, 0xF8, 0x01, 0xFE, 0x01, 0x05, 0x02, 0x0D, 0x02, 0x13, 0x02, +0x19, 0x02, 0x1F, 0x02, 0x25, 0x02, 0x27, 0x02, 0x2D, 0x02, 0x35, 0x02, 0x35, 0x02, 0x3B, 0x02, +0x41, 0x02, 0x47, 0x02, 0x4C, 0x02, 0x53, 0x02, 0x59, 0x02, 0x5F, 0x02, 0x65, 0x02, 0x6B, 0x02, +0x71, 0x02, 0x77, 0x02, 0x7D, 0x02, 0x83, 0x02, 0x89, 0x02, 0x8F, 0x02, 0x95, 0x02, 0x9B, 0x02, +0xA1, 0x02, 0xA5, 0x02, 0xA9, 0x02, 0xAD, 0x02, 0xB1, 0x02, 0xB7, 0x02, 0xBD, 0x02, 0xC3, 0x02, +0xC9, 0x02, 0xCF, 0x02, 0xD5, 0x02, 0xDB, 0x02, 0xE1, 0x02, 0xE7, 0x02, 0xED, 0x02, 0xF3, 0x02, +0xF8, 0x02, 0xFD, 0x02, 0x04, 0x03, 0x0A, 0x03, 0x0D, 0x03, 0x12, 0x03, 0x18, 0x03, 0x1E, 0x03, +0x23, 0x03, 0x2C, 0x03, 0x2F, 0x03, 0x33, 0x03, 0x39, 0x03, 0x41, 0x03, 0x48, 0x03, 0x4F, 0x03, +0x55, 0x03, 0x5A, 0x03, 0x5F, 0x03, 0x65, 0x03, 0x6B, 0x03, 0x71, 0x03, 0x77, 0x03, 0x7E, 0x03, +0x85, 0x03, 0x8B, 0x03, 0x91, 0x03, 0x97, 0x03, 0x9D, 0x03, 0xA7, 0x03, 0xAE, 0x03, 0xB4, 0x03, +0xB6, 0x03, 0xBC, 0x03, 0xC4, 0x03, 0xCA, 0x03, 0xD0, 0x03, 0xD5, 0x03, 0xDD, 0x03, 0xE5, 0x03, +0xED, 0x03, 0xED, 0x03, 0xF3, 0x03, 0xF9, 0x03, 0x00, 0x04, 0x08, 0x04, 0x12, 0x04, 0x15, 0x04, +0x1C, 0x04, 0x22, 0x04, 0x28, 0x04, 0x2B, 0x04, 0x2E, 0x04, 0x33, 0x04, 0x3A, 0x04, 0x40, 0x04, +0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, +0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, +0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, +0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, +0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x47, 0x04, 0x4E, 0x04, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0x04, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0x04, 0x00, 0x06, 0x02, 0x08, 0x01, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x01, 0x06, 0x02, +0x07, 0x01, 0x07, 0x01, 0x07, 0x00, 0x08, 0x01, 0x05, 0x01, 0x08, 0x01, 0x04, 0x01, 0x08, 0x00, +0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, +0x08, 0x01, 0x08, 0x01, 0x04, 0x01, 0x05, 0x01, 0x07, 0x01, 0x08, 0x01, 0x07, 0x01, 0x08, 0x01, +0x08, 0x00, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x07, 0x01, 0x07, 0x01, 0x08, 0x01, +0x08, 0x01, 0x08, 0x02, 0x08, 0x01, 0x09, 0x01, 0x08, 0x01, 0x09, 0x01, 0x08, 0x01, 0x08, 0x01, +0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x09, 0x01, 0x09, 0x00, +0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x06, 0x01, 0x08, 0x00, 0x06, 0x01, 0x08, 0x01, 0x08, 0x00, +0x05, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x07, 0x01, 0x08, 0x01, +0x08, 0x01, 0x06, 0x01, 0x07, 0x01, 0x08, 0x01, 0x08, 0x02, 0x09, 0x00, 0x08, 0x01, 0x08, 0x01, +0x08, 0x01, 0x08, 0x01, 0x07, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x09, 0x01, 0x09, 0x00, +0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x06, 0x02, 0x08, 0x01, 0x09, 0x00, 0x01, 0x00, +0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x07, 0x01, 0x09, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, +0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, +0x08, 0x01, 0x08, 0x01, 0x06, 0x01, 0x06, 0x01, 0x06, 0x01, 0x06, 0x01, 0x08, 0x01, 0x08, 0x01, +0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, +0x08, 0x01, 0x07, 0x01, 0x07, 0x01, 0x08, 0x00, 0x08, 0x01, 0x07, 0x02, 0x07, 0x01, 0x08, 0x01, +0x08, 0x01, 0x07, 0x01, 0x0B, 0x01, 0x07, 0x02, 0x06, 0x01, 0x08, 0x01, 0x0A, 0x01, 0x09, 0x01, +0x08, 0x00, 0x08, 0x01, 0x07, 0x01, 0x07, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, +0x08, 0x00, 0x08, 0x00, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x0C, 0x01, 0x09, 0x01, +0x08, 0x01, 0x06, 0x02, 0x08, 0x01, 0x08, 0x00, 0x08, 0x01, 0x08, 0x01, 0x07, 0x01, 0x08, 0x00, +0x08, 0x00, 0x08, 0x00, 0x04, 0x03, 0x08, 0x01, 0x08, 0x01, 0x09, 0x01, 0x0A, 0x01, 0x0C, 0x01, +0x05, 0x01, 0x08, 0x00, 0x08, 0x01, 0x08, 0x01, 0x05, 0x01, 0x05, 0x01, 0x07, 0x01, 0x08, 0x00, +0x08, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0x01, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x00, +0x08, 0x00, 0xFF, 0xFF, 0x20, 0xB3, 0x0D, 0x20, 0xF0, 0x82, 0x38, 0xA5, 0xAA, 0xE5, 0xA6, 0x85, +0xB0, 0x38, 0xA5, 0xAC, 0xE5, 0xA8, 0x85, 0xAE, 0xA2, 0x00, 0x00, 0x22, 0xE2, 0x80, 0xFE, 0xAA, +0xA0, 0x04, 0x00, 0x4C, 0x22, 0xFF, 0x20, 0xB3, 0x0D, 0x20, 0xF0, 0x82, 0xA2, 0x01, 0x00, 0x22, +0xE2, 0x80, 0xFE, 0xAA, 0xA0, 0x04, 0x00, 0x4C, 0x22, 0xFF, 0x20, 0xB3, 0x0D, 0x20, 0xF0, 0x82, +0xA2, 0x02, 0x00, 0x22, 0xE2, 0x80, 0xFE, 0xAA, 0xA0, 0x04, 0x00, 0x4C, 0x22, 0xFF, 0x20, 0xB3, +0x0D, 0x20, 0xF0, 0x82, 0xA2, 0x03, 0x00, 0x22, 0xE2, 0x80, 0xFE, 0xAA, 0xA0, 0x04, 0x00, 0x4C, +0x22, 0xFF, 0x20, 0xB3, 0x0D, 0x22, 0x40, 0x1E, 0xE0, 0xA3, 0x0D, 0x83, 0x09, 0xA3, 0x0F, 0x83, +0x0B, 0x20, 0xF0, 0x82, 0xA2, 0x04, 0x00, 0x22, 0xE2, 0x80, 0xFE, 0xAA, 0xA0, 0x08, 0x00, 0x4C, +0x22, 0xFF, 0x86, 0x38, 0x20, 0xC5, 0x0D, 0xB0, 0x1F, 0xA9, 0x68, 0x01, 0x85, 0xD2, 0x64, 0xD4, +0xA2, 0x00, 0x02, 0x38, 0xA5, 0xAA, 0xE5, 0xA6, 0x95, 0x08, 0x38, 0xA5, 0xAC, 0xE5, 0xA8, 0x95, +0x0A, 0xA9, 0x50, 0x00, 0x5C, 0xC0, 0x1F, 0xE0, 0x8B, 0xA0, 0x10, 0x00, 0xB7, 0x2A, 0x48, 0xC8, +0xB7, 0x2A, 0x83, 0x02, 0x6B, 0xA9, 0x60, 0x00, 0x80, 0x08, 0xA9, 0x50, 0x00, 0x80, 0x03, 0xA9, +0x40, 0x00, 0x85, 0x3A, 0x22, 0xF8, 0x1E, 0xE0, 0x90, 0x01, 0x6B, 0x64, 0xEE, 0xA5, 0x38, 0xD0, +0x18, 0xA5, 0x3A, 0xC9, 0x60, 0x00, 0xF0, 0x0C, 0x20, 0x21, 0x54, 0x90, 0x07, 0x22, 0x9C, 0x1F, +0xE0, 0x90, 0x01, 0x6B, 0xE6, 0xEE, 0x82, 0x24, 0x05, 0x4C, 0xAB, 0x21, 0x20, 0xB3, 0x0D, 0x20, +0x0E, 0x83, 0xA2, 0x00, 0x02, 0xB5, 0x08, 0x85, 0xB0, 0xB5, 0x0A, 0x85, 0xAE, 0xA3, 0x0D, 0x83, +0x09, 0xA3, 0x0F, 0x83, 0x0B, 0x20, 0xF0, 0x82, 0xA2, 0x00, 0x00, 0x22, 0xFE, 0x81, 0xFE, 0xAA, +0xA0, 0x08, 0x00, 0x4C, 0x22, 0xFF, 0x20, 0xB3, 0x0D, 0x20, 0x0E, 0x83, 0xA3, 0x0D, 0x83, 0x09, +0xA3, 0x0F, 0x83, 0x0B, 0x20, 0xF0, 0x82, 0xA2, 0x01, 0x00, 0x22, 0xFE, 0x81, 0xFE, 0xAA, 0xA0, +0x08, 0x00, 0x4C, 0x22, 0xFF, 0x20, 0xB3, 0x0D, 0x20, 0x0E, 0x83, 0xA3, 0x0D, 0x83, 0x09, 0xA3, +0x0F, 0x83, 0x0B, 0x20, 0xF0, 0x82, 0xA2, 0x02, 0x00, 0x22, 0xFE, 0x81, 0xFE, 0xAA, 0xA0, 0x08, +0x00, 0x4C, 0x22, 0xFF, 0x20, 0xB3, 0x0D, 0x20, 0x0E, 0x83, 0xA3, 0x0D, 0x83, 0x09, 0xA3, 0x0F, +0x83, 0x0B, 0x20, 0xF0, 0x82, 0xA2, 0x03, 0x00, 0x22, 0xFE, 0x81, 0xFE, 0xAA, 0xA0, 0x08, 0x00, +0x4C, 0x22, 0xFF, 0x20, 0xB3, 0x0D, 0x22, 0x40, 0x1E, 0xE0, 0xA2, 0x00, 0x02, 0xA3, 0x0D, 0x95, +0x08, 0xA3, 0x0F, 0x95, 0x0A, 0xA3, 0x11, 0x83, 0x09, 0xA3, 0x13, 0x83, 0x0B, 0x20, 0xF0, 0x82, +0xA2, 0x04, 0x00, 0x22, 0xFE, 0x81, 0xFE, 0xAA, 0xA0, 0x0C, 0x00, 0x4C, 0x22, 0xFF, 0x86, 0x38, +0x20, 0xC5, 0x0D, 0xB0, 0x0E, 0xA9, 0x68, 0x01, 0x85, 0xD2, 0x64, 0xD4, 0xA9, 0x40, 0x00, 0x5C, +0xC0, 0x1F, 0xE0, 0x8B, 0xA0, 0x0C, 0x00, 0xB7, 0x2A, 0x48, 0xC8, 0xB7, 0x2A, 0x83, 0x02, 0x6B, +0x20, 0xB3, 0x0D, 0x20, 0x1A, 0x83, 0xA3, 0x0D, 0x83, 0x09, 0xA3, 0x0F, 0x83, 0x0B, 0x20, 0xF0, +0x82, 0xA2, 0x00, 0x00, 0x22, 0xC4, 0x82, 0xFE, 0xAA, 0xA0, 0x08, 0x00, 0x4C, 0x22, 0xFF, 0x20, +0xB3, 0x0D, 0x20, 0x1A, 0x83, 0xA3, 0x0D, 0x83, 0x09, 0xA3, 0x0F, 0x83, 0x0B, 0x20, 0xF0, 0x82, +0xA2, 0x01, 0x00, 0x22, 0xC4, 0x82, 0xFE, 0xAA, 0xA0, 0x08, 0x00, 0x4C, 0x22, 0xFF, 0x20, 0xB3, +0x0D, 0x20, 0x1A, 0x83, 0xA3, 0x0D, 0x83, 0x09, 0xA3, 0x0F, 0x83, 0x0B, 0x20, 0xF0, 0x82, 0xA2, +0x02, 0x00, 0x22, 0xC4, 0x82, 0xFE, 0xAA, 0xA0, 0x08, 0x00, 0x4C, 0x22, 0xFF, 0x20, 0xB3, 0x0D, +0x20, 0x1A, 0x83, 0xA3, 0x0D, 0x83, 0x09, 0xA3, 0x0F, 0x83, 0x0B, 0x20, 0xF0, 0x82, 0xA2, 0x03, +0x00, 0x22, 0xC4, 0x82, 0xFE, 0xAA, 0xA0, 0x08, 0x00, 0x4C, 0x22, 0xFF, 0x20, 0xB3, 0x0D, 0x22, +0x40, 0x1E, 0xE0, 0xA3, 0x0F, 0x85, 0xD4, 0xA3, 0x0D, 0x85, 0xD2, 0xA3, 0x11, 0x83, 0x09, 0xA3, +0x13, 0x83, 0x0B, 0x20, 0xF0, 0x82, 0xA2, 0x04, 0x00, 0x22, 0xC4, 0x82, 0xFE, 0xAA, 0xA0, 0x0C, +0x00, 0x4C, 0x22, 0xFF, 0x86, 0x38, 0x20, 0xC5, 0x0D, 0xB0, 0x18, 0xA2, 0x00, 0x02, 0x38, 0xA5, +0xAA, 0xE5, 0xA6, 0x95, 0x08, 0x38, 0xA5, 0xAC, 0xE5, 0xA8, 0x95, 0x0A, 0xA9, 0x60, 0x00, 0x5C, +0xC0, 0x1F, 0xE0, 0x8B, 0xA0, 0x14, 0x00, 0xB7, 0x2A, 0x48, 0xC8, 0xB7, 0x2A, 0x83, 0x02, 0x6B, +0xA3, 0x0B, 0x85, 0x2A, 0xA3, 0x0D, 0x85, 0x2C, 0xA2, 0x06, 0x02, 0xA0, 0x06, 0x00, 0xDA, 0xBB, +0xB7, 0x2A, 0x95, 0xA6, 0xFA, 0x95, 0x00, 0xCA, 0xCA, 0x88, 0x88, 0x10, 0xF1, 0x60, 0xA2, 0x00, +0x02, 0xA3, 0x0B, 0x95, 0x08, 0xA3, 0x0D, 0x95, 0x0A, 0x60, 0xA3, 0x0D, 0x85, 0xD4, 0xA3, 0x0B, +0x85, 0xD2, 0x60, 0x64, 0x2C, 0x06, 0x30, 0x26, 0x2C, 0xF0, 0x13, 0xA5, 0x2E, 0x49, 0xFF, 0xFF, +0x1A, 0x85, 0x2E, 0xF0, 0x02, 0xC6, 0x30, 0xA5, 0x30, 0x49, 0xFF, 0xFF, 0x85, 0x30, 0x38, 0xA5, +0x2E, 0xE9, 0xF4, 0x01, 0xB0, 0x02, 0xC6, 0x30, 0x64, 0x2A, 0x80, 0x02, 0xE6, 0x2A, 0x20, 0xB2, +0x83, 0xA5, 0xE4, 0xC5, 0x30, 0x30, 0xF5, 0xD0, 0x06, 0xA5, 0xE2, 0xC5, 0x2E, 0x30, 0xED, 0xA5, +0x2C, 0xF0, 0x08, 0x38, 0xA9, 0xB4, 0x00, 0xE5, 0x2A, 0x85, 0x2A, 0x6B, 0xA5, 0x2A, 0x80, 0x04, +0x38, 0xE9, 0xB4, 0x00, 0xC9, 0xB4, 0x00, 0x10, 0xF7, 0xAA, 0x10, 0x06, 0x18, 0x69, 0xB4, 0x00, +0x30, 0xFA, 0x85, 0x2A, 0x64, 0x2C, 0xC9, 0x5B, 0x00, 0x30, 0x0C, 0xE6, 0x2C, 0x38, 0xE9, 0xB4, +0x00, 0x49, 0xFF, 0xFF, 0x1A, 0x85, 0x2A, 0x20, 0xB2, 0x83, 0xA5, 0x2C, 0xD0, 0x13, 0xA5, 0xE2, +0x49, 0xFF, 0xFF, 0x1A, 0x85, 0xE2, 0xD0, 0x02, 0xC6, 0xE4, 0xA5, 0xE4, 0x49, 0xFF, 0xFF, 0x85, +0xE4, 0x6B, 0xA9, 0x5A, 0x00, 0xC5, 0x2A, 0xD0, 0x0B, 0xA9, 0xFF, 0x3F, 0x85, 0xE4, 0xA9, 0xFF, +0xFF, 0x85, 0xE2, 0x60, 0x64, 0xE4, 0xA5, 0x2A, 0xC9, 0x2D, 0x00, 0x30, 0x13, 0xE6, 0xE4, 0xC9, +0x40, 0x00, 0x30, 0x0C, 0xAA, 0xBF, 0xAD, 0x83, 0xFE, 0x29, 0xFF, 0x00, 0x85, 0xE4, 0xA5, 0x2A, +0x0A, 0xAA, 0xBF, 0x07, 0x84, 0xFE, 0x85, 0xE2, 0x60, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, +0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x06, 0x07, +0x08, 0x09, 0x0B, 0x0E, 0x13, 0x1C, 0x39, 0x00, 0x00, 0x78, 0x04, 0xF1, 0x08, 0x6B, 0x0D, 0xE7, +0x11, 0x66, 0x16, 0xE8, 0x1A, 0x6F, 0x1F, 0xFA, 0x23, 0x8C, 0x28, 0x24, 0x2D, 0xC3, 0x31, 0x6A, +0x36, 0x1A, 0x3B, 0xD4, 0x3F, 0x98, 0x44, 0x68, 0x49, 0x44, 0x4E, 0x2E, 0x53, 0x26, 0x58, 0x2D, +0x5D, 0x45, 0x62, 0x6E, 0x67, 0xAA, 0x6C, 0xFB, 0x71, 0x60, 0x77, 0xDC, 0x7C, 0x70, 0x82, 0x1E, +0x88, 0xE7, 0x8D, 0xCD, 0x93, 0xD2, 0x99, 0xF7, 0x9F, 0x40, 0xA6, 0xAD, 0xAC, 0x41, 0xB3, 0xFF, +0xB9, 0xE9, 0xC0, 0x02, 0xC8, 0x4E, 0xCF, 0xCF, 0xD6, 0x8A, 0xDE, 0x81, 0xE6, 0xB9, 0xEE, 0x37, +0xF7, 0x00, 0x00, 0x19, 0x09, 0x87, 0x12, 0x51, 0x1C, 0x7F, 0x26, 0x17, 0x31, 0x22, 0x3C, 0xAA, +0x47, 0xB9, 0x53, 0x5B, 0x60, 0x98, 0x6D, 0x89, 0x7B, 0x35, 0x8A, 0xAF, 0x99, 0x0E, 0xAA, 0x68, +0xBB, 0xD6, 0xCD, 0x77, 0xE1, 0x6E, 0xF6, 0xE1, 0x0C, 0xFE, 0x24, 0xFC, 0x3E, 0x19, 0x5B, 0x9F, +0x79, 0xE7, 0x9A, 0x5B, 0xBF, 0x7A, 0xE7, 0xE3, 0x13, 0x56, 0x45, 0xC7, 0x7C, 0x68, 0xBB, 0xC2, +0x02, 0xDB, 0x54, 0x62, 0xB4, 0x01, 0x25, 0xD9, 0xAB, 0x51, 0x50, 0x88, 0x1D, 0xF3, 0x24, 0xAD, +0x83, 0x17, 0x6E, 0xF5, 0x4C, 0xBD, 0x14, 0xD7, 0xA2, 0x30, 0x4A, 0xFF, 0xFF, 0xB5, 0x08, 0x10, +0x05, 0xA9, 0x00, 0x00, 0x95, 0x08, 0xB5, 0x0A, 0x10, 0x05, 0xA9, 0x00, 0x00, 0x95, 0x0A, 0x38, +0xB5, 0x06, 0xF5, 0x02, 0xD5, 0x0A, 0x10, 0x02, 0x95, 0x0A, 0x38, 0xB5, 0x04, 0xF5, 0x00, 0xD5, +0x08, 0x10, 0x02, 0x95, 0x08, 0xA9, 0x00, 0x00, 0x95, 0x0C, 0x95, 0x10, 0x95, 0x18, 0x95, 0x1A, +0x95, 0x1C, 0x95, 0x1E, 0x95, 0x16, 0xB5, 0x06, 0x95, 0x0E, 0xB5, 0x02, 0x95, 0x12, 0x64, 0x2A, +0xB5, 0x0A, 0x85, 0x2C, 0x46, 0x2C, 0x66, 0x2A, 0x18, 0xB5, 0x10, 0x65, 0x2A, 0x95, 0x10, 0xB5, +0x12, 0x65, 0x2C, 0x95, 0x12, 0x38, 0xB5, 0x0C, 0xE5, 0x2A, 0x95, 0x0C, 0xB5, 0x0E, 0xE5, 0x2C, +0x95, 0x0E, 0x18, 0xA9, 0x00, 0x80, 0x75, 0x0C, 0x95, 0x0C, 0x90, 0x02, 0xF6, 0x0E, 0xB5, 0x08, +0x49, 0xFF, 0xFF, 0x1A, 0x1A, 0x95, 0x30, 0xB5, 0x08, 0x0A, 0x3A, 0x95, 0x14, 0xDA, 0xF4, 0x00, +0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, +0xB5, 0x08, 0x48, 0xB5, 0x0A, 0x48, 0xA2, 0x0B, 0x0E, 0x22, 0x00, 0x00, 0xE1, 0xA3, 0x03, 0x48, +0xA3, 0x03, 0x48, 0xA2, 0x0B, 0x0C, 0x22, 0x00, 0x00, 0xE1, 0xA3, 0x09, 0xAA, 0x68, 0x95, 0x20, +0x0A, 0x95, 0x28, 0x68, 0x95, 0x22, 0x2A, 0x95, 0x2A, 0x68, 0x95, 0x24, 0x2A, 0x95, 0x2C, 0x68, +0x95, 0x26, 0x2A, 0x95, 0x2E, 0xFA, 0x6B, 0xA5, 0x40, 0xD5, 0x00, 0x30, 0x04, 0xD5, 0x04, 0x30, +0x4B, 0x6B, 0xB5, 0x0C, 0x18, 0x69, 0x00, 0x80, 0x95, 0x0C, 0x90, 0x02, 0xF6, 0x0E, 0xB5, 0x10, +0x38, 0xE9, 0x00, 0x80, 0x95, 0x10, 0xB0, 0x02, 0xD6, 0x12, 0x18, 0xB5, 0x18, 0x75, 0x20, 0x95, +0x18, 0xB5, 0x1A, 0x75, 0x22, 0x95, 0x1A, 0xB5, 0x1C, 0x75, 0x24, 0x95, 0x1C, 0xB5, 0x1E, 0x75, +0x26, 0x95, 0x1E, 0x18, 0xB5, 0x20, 0x75, 0x28, 0x95, 0x20, 0xB5, 0x22, 0x75, 0x2A, 0x95, 0x22, +0xB5, 0x24, 0x75, 0x2C, 0x95, 0x24, 0xB5, 0x26, 0x75, 0x2E, 0x95, 0x26, 0xB5, 0x1E, 0xD5, 0x16, +0x90, 0xB0, 0xD0, 0x06, 0xB5, 0x1C, 0xD5, 0x14, 0x90, 0xA8, 0x80, 0x4A, 0x38, 0xB5, 0x0C, 0xE9, +0x00, 0x80, 0x95, 0x0C, 0xB0, 0x02, 0xD6, 0x0E, 0x18, 0xB5, 0x10, 0x69, 0x00, 0x80, 0x95, 0x10, +0x90, 0x02, 0xF6, 0x12, 0x38, 0xB5, 0x20, 0xF5, 0x28, 0x95, 0x20, 0xB5, 0x22, 0xF5, 0x2A, 0x95, +0x22, 0xB5, 0x24, 0xF5, 0x2C, 0x95, 0x24, 0xB5, 0x26, 0xF5, 0x2E, 0x95, 0x26, 0x38, 0xB5, 0x18, +0xF5, 0x20, 0x95, 0x18, 0xB5, 0x1A, 0xF5, 0x22, 0x95, 0x1A, 0xB5, 0x1C, 0xF5, 0x24, 0x95, 0x1C, +0xB5, 0x1E, 0xF5, 0x26, 0x95, 0x1E, 0xB5, 0x16, 0xD5, 0x1E, 0x90, 0xB0, 0xD0, 0x06, 0xB5, 0x14, +0xD5, 0x1C, 0x90, 0xA8, 0xB5, 0x30, 0x1A, 0x85, 0x2A, 0x1A, 0x95, 0x30, 0x64, 0x2C, 0xA5, 0x2A, +0x10, 0x05, 0xA9, 0xFF, 0xFF, 0x85, 0x2C, 0x06, 0x2A, 0x26, 0x2C, 0x06, 0x2A, 0x26, 0x2C, 0x38, +0xB5, 0x14, 0xE5, 0x2A, 0x95, 0x14, 0xB5, 0x16, 0xE5, 0x2C, 0x95, 0x16, 0x6B, 0x20, 0x73, 0x86, +0x4C, 0xAB, 0x21, 0xA0, 0x44, 0x00, 0xB7, 0x24, 0xF0, 0x0B, 0x85, 0x2E, 0xC8, 0xC8, 0xB7, 0x24, +0xF0, 0x03, 0x85, 0x30, 0x60, 0x68, 0x18, 0xA9, 0x00, 0x00, 0x6B, 0xA5, 0xD2, 0xD0, 0x01, 0x6B, +0x8B, 0x22, 0xC0, 0x1E, 0xE0, 0x22, 0xE8, 0x1E, 0xE0, 0xA5, 0xD2, 0x10, 0x0B, 0x18, 0x65, 0xD4, +0x85, 0xD4, 0x49, 0xFF, 0xFF, 0x1A, 0x85, 0xD2, 0x64, 0xAE, 0xC9, 0x68, 0x01, 0x30, 0x03, 0x82, +0x1C, 0x01, 0xA5, 0xD4, 0x20, 0x59, 0x8A, 0x85, 0xD4, 0x18, 0x65, 0xD2, 0x20, 0x59, 0x8A, 0x85, +0xF0, 0xA2, 0x00, 0x02, 0x18, 0xB5, 0x00, 0x75, 0x04, 0x4A, 0x85, 0xB4, 0x18, 0xB5, 0x02, 0x75, +0x06, 0x4A, 0x85, 0xF2, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x38, 0xB5, 0x06, 0xF5, 0x02, 0x48, +0x38, 0xB5, 0x04, 0xF5, 0x00, 0x85, 0xAE, 0x48, 0xA2, 0x0B, 0x0E, 0x22, 0x00, 0x00, 0xE1, 0x68, +0x85, 0xE6, 0x68, 0x85, 0xE8, 0xA5, 0xD4, 0x85, 0x2A, 0x22, 0xD8, 0x1F, 0xE0, 0xF4, 0x00, 0x00, +0xF4, 0x00, 0x00, 0xD4, 0xE4, 0xD4, 0xE2, 0xD4, 0xE8, 0xD4, 0xE6, 0xA2, 0x0B, 0x0F, 0x22, 0x00, +0x00, 0xE1, 0x68, 0x85, 0xDE, 0x68, 0x85, 0xE0, 0xA5, 0xF0, 0x85, 0x2A, 0x22, 0xD8, 0x1F, 0xE0, +0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xD4, 0xE4, 0xD4, 0xE2, 0xD4, 0xE8, 0xD4, 0xE6, 0xA2, 0x0B, +0x0F, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x85, 0xE2, 0x68, 0x85, 0xE4, 0xF4, 0x00, 0x00, 0xF4, 0x00, +0x00, 0xA5, 0xAE, 0x4A, 0x49, 0xFF, 0xFF, 0x1A, 0x85, 0xAE, 0x48, 0xF4, 0x00, 0x00, 0xD4, 0xE0, +0xD4, 0xDE, 0xA2, 0x0B, 0x0F, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x85, 0xE6, 0x68, 0x18, 0x65, 0xF2, +0x85, 0xE8, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xD4, 0xAE, 0xF4, 0x00, 0x00, 0xD4, 0xE4, 0xD4, +0xE2, 0xA2, 0x0B, 0x0F, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x85, 0xEA, 0x68, 0x18, 0x65, 0xF2, 0x85, +0xEC, 0xA5, 0xD4, 0xC9, 0xB4, 0x00, 0x10, 0x06, 0x38, 0xE9, 0x5A, 0x00, 0x80, 0x06, 0x38, 0xA9, +0x0E, 0x01, 0xE5, 0xD4, 0x85, 0xDA, 0xA5, 0xF0, 0xC9, 0xB4, 0x00, 0x10, 0x06, 0x38, 0xE9, 0x5A, +0x00, 0x80, 0x06, 0x38, 0xA9, 0x0E, 0x01, 0xE5, 0xF0, 0x85, 0xDC, 0x64, 0xB2, 0xA9, 0xB4, 0x00, +0xC5, 0xD2, 0x30, 0x15, 0xD0, 0x0B, 0xA5, 0xD4, 0xC9, 0x5A, 0x00, 0xD0, 0x0C, 0xE6, 0xB2, 0x80, +0x08, 0xA5, 0xDA, 0x05, 0xDC, 0x30, 0x02, 0xE6, 0xB2, 0xA9, 0x01, 0x00, 0x85, 0xAE, 0xA2, 0x00, +0x02, 0x22, 0xBD, 0x84, 0xFE, 0xB5, 0x08, 0x4A, 0x85, 0x2A, 0x75, 0x00, 0x85, 0xD6, 0x38, 0xB5, +0x04, 0xE5, 0x2A, 0x85, 0xD8, 0x64, 0xB0, 0xA2, 0x00, 0x02, 0xA5, 0xEE, 0xF0, 0x65, 0xA2, 0x00, +0x02, 0x20, 0x73, 0x86, 0x38, 0xB5, 0x06, 0xE5, 0x30, 0x85, 0xF4, 0x18, 0xB5, 0x02, 0x65, 0x30, +0x85, 0xF2, 0xC5, 0xF4, 0x10, 0x4D, 0x38, 0xB5, 0x04, 0xE5, 0x2E, 0x85, 0xF0, 0x18, 0xB5, 0x00, +0x65, 0x2E, 0x85, 0xEE, 0xC5, 0xF0, 0x10, 0x3B, 0xE6, 0xB0, 0xA2, 0x32, 0x02, 0xA5, 0xF4, 0x95, +0x06, 0xA5, 0xF2, 0x95, 0x02, 0xA5, 0xF0, 0x95, 0x04, 0xA5, 0xEE, 0x95, 0x00, 0xA2, 0x00, 0x02, +0xA5, 0x30, 0x0A, 0x49, 0xFF, 0xFF, 0x1A, 0x18, 0x75, 0x0A, 0x85, 0xF4, 0xA5, 0x2E, 0x0A, 0x49, +0xFF, 0xFF, 0x1A, 0x18, 0x75, 0x08, 0xA2, 0x32, 0x02, 0x95, 0x08, 0xA5, 0xF4, 0x95, 0x0A, 0x22, +0xBD, 0x84, 0xFE, 0xA2, 0x00, 0x02, 0xB5, 0x00, 0x85, 0x40, 0x38, 0xE5, 0x14, 0x20, 0xE6, 0x23, +0x20, 0x0E, 0x24, 0x22, 0xCC, 0x1E, 0xE0, 0xA2, 0x00, 0x02, 0xB5, 0x10, 0x85, 0xF6, 0xB5, 0x0E, +0x85, 0xF8, 0xA5, 0x40, 0xC5, 0xD6, 0x30, 0x04, 0xC5, 0xD8, 0x30, 0x12, 0xA2, 0x00, 0x02, 0x22, +0x87, 0x85, 0xFE, 0xA5, 0xB0, 0xF0, 0x07, 0xA2, 0x32, 0x02, 0x22, 0x87, 0x85, 0xFE, 0xA5, 0xAE, +0xD0, 0x03, 0x82, 0x4B, 0x01, 0xA5, 0x40, 0xC5, 0xB4, 0xD0, 0x31, 0xA5, 0xDA, 0x49, 0xFF, 0xFF, +0x1A, 0x85, 0xDA, 0xA5, 0xDC, 0x49, 0xFF, 0xFF, 0x1A, 0x85, 0xDC, 0x64, 0xB2, 0xA9, 0xB4, 0x00, +0xC5, 0xD2, 0x30, 0x15, 0xD0, 0x0A, 0xA5, 0xD4, 0xC9, 0x0E, 0x01, 0xD0, 0x0C, 0x82, 0x71, 0x01, +0xA5, 0xDA, 0x05, 0xDC, 0x30, 0x03, 0x82, 0x68, 0x01, 0x20, 0x6C, 0x8A, 0xA5, 0xB2, 0xF0, 0x03, +0x82, 0x57, 0x01, 0xA5, 0x40, 0xC5, 0x00, 0x10, 0x03, 0x82, 0x4E, 0x01, 0xA2, 0x00, 0x02, 0xB5, +0x12, 0xA4, 0xDA, 0x10, 0x06, 0xC5, 0xE8, 0x10, 0x02, 0xA5, 0xE8, 0x85, 0xEE, 0xB5, 0x0E, 0xA4, +0xDC, 0x10, 0x08, 0xC5, 0xEC, 0x30, 0x04, 0xF0, 0x02, 0xA5, 0xEC, 0x85, 0xF0, 0xA5, 0xB0, 0xF0, +0x0D, 0xA2, 0x32, 0x02, 0xA5, 0x40, 0xD5, 0x00, 0x30, 0x04, 0xD5, 0x04, 0x30, 0x3E, 0xA2, 0x00, +0x02, 0xA5, 0xEE, 0xC5, 0xF0, 0x10, 0x0C, 0x85, 0xA8, 0xA5, 0xF0, 0x85, 0xAC, 0x20, 0x95, 0x8A, +0x82, 0x07, 0x01, 0xA5, 0xDA, 0x25, 0xDC, 0x10, 0x20, 0xA9, 0xB4, 0x00, 0xC5, 0xD2, 0x10, 0x19, +0xB5, 0x12, 0x85, 0xA8, 0xA5, 0xF0, 0x85, 0xAC, 0x20, 0x95, 0x8A, 0xA2, 0x00, 0x02, 0xA5, 0xEE, +0x85, 0xA8, 0xB5, 0x0E, 0x85, 0xAC, 0x20, 0x95, 0x8A, 0x82, 0xDE, 0x00, 0xA2, 0x32, 0x02, 0xB5, +0x12, 0xA4, 0xDC, 0x10, 0x08, 0xC5, 0xEC, 0x30, 0x04, 0xF0, 0x02, 0xA5, 0xEC, 0x85, 0xF2, 0xB5, +0x0E, 0xA4, 0xDA, 0x10, 0x06, 0xC5, 0xE8, 0x10, 0x02, 0xA5, 0xE8, 0x85, 0xF4, 0xA5, 0xEE, 0xC5, +0xF0, 0x10, 0x17, 0x85, 0xA8, 0xA5, 0xF2, 0x85, 0xAC, 0x20, 0x95, 0x8A, 0xA5, 0xF4, 0x85, 0xA8, +0xA5, 0xF0, 0x85, 0xAC, 0x20, 0x95, 0x8A, 0x82, 0xA0, 0x00, 0xA5, 0xDA, 0x25, 0xDC, 0x30, 0x03, +0x82, 0x97, 0x00, 0xA9, 0xB4, 0x00, 0xC5, 0xD2, 0x30, 0x03, 0x82, 0x8D, 0x00, 0xA5, 0xF2, 0xC5, +0xF0, 0xD0, 0x0D, 0xA5, 0xEE, 0x85, 0xA8, 0xA2, 0x32, 0x02, 0xB5, 0x12, 0x85, 0xAC, 0x80, 0x0E, +0xA5, 0xEE, 0xC5, 0xF4, 0xD0, 0x0B, 0xB5, 0x0E, 0x85, 0xA8, 0xA5, 0xF0, 0x85, 0xAC, 0x20, 0x95, +0x8A, 0xA2, 0x00, 0x02, 0xB5, 0x12, 0x85, 0xA8, 0xA5, 0xF2, 0x85, 0xAC, 0x20, 0x95, 0x8A, 0xA2, +0x00, 0x02, 0xA5, 0xF4, 0x85, 0xA8, 0xB5, 0x0E, 0x85, 0xAC, 0x20, 0x95, 0x8A, 0x82, 0x4A, 0x00, +0xA5, 0x40, 0xC5, 0x00, 0x10, 0x03, 0x82, 0x41, 0x00, 0xA5, 0xB0, 0xF0, 0x2F, 0xA2, 0x32, 0x02, +0xA5, 0x40, 0xD5, 0x00, 0x30, 0x26, 0xD5, 0x04, 0x10, 0x22, 0xA2, 0x00, 0x02, 0xB5, 0x0E, 0x48, +0xB5, 0x12, 0x85, 0xA8, 0xA2, 0x32, 0x02, 0xB5, 0x0E, 0x48, 0xB5, 0x12, 0x85, 0xAC, 0x20, 0x95, +0x8A, 0x68, 0x85, 0xA8, 0x68, 0x85, 0xAC, 0x20, 0x95, 0x8A, 0x80, 0x0E, 0xA2, 0x00, 0x02, 0xB5, +0x12, 0x85, 0xA8, 0xB5, 0x0E, 0x85, 0xAC, 0x20, 0x95, 0x8A, 0xA5, 0x40, 0x1A, 0xC5, 0x04, 0x30, +0x02, 0xAB, 0x6B, 0x85, 0x40, 0xA5, 0xAE, 0xF0, 0x1A, 0x18, 0xA5, 0xDE, 0x65, 0xE6, 0x85, 0xE6, +0xA5, 0xE0, 0x65, 0xE8, 0x85, 0xE8, 0x18, 0xA5, 0xE2, 0x65, 0xEA, 0x85, 0xEA, 0xA5, 0xE4, 0x65, +0xEC, 0x85, 0xEC, 0x20, 0x41, 0x24, 0x82, 0x07, 0xFE, 0x10, 0x0B, 0x18, 0x69, 0x68, 0x01, 0x30, +0xFA, 0x60, 0x38, 0xE9, 0x68, 0x01, 0xC9, 0x68, 0x01, 0x10, 0xF7, 0x60, 0xA5, 0xDA, 0xA6, 0xDC, +0x86, 0xDA, 0x85, 0xDC, 0xA5, 0xE6, 0xA6, 0xEA, 0x86, 0xE6, 0x85, 0xEA, 0xA5, 0xE8, 0xA6, 0xEC, +0x86, 0xE8, 0x85, 0xEC, 0xA5, 0xDE, 0xA6, 0xE2, 0x86, 0xDE, 0x85, 0xE2, 0xA5, 0xE0, 0xA6, 0xE4, +0x86, 0xE0, 0x85, 0xE4, 0x60, 0xA5, 0xAC, 0xC5, 0x02, 0x30, 0x24, 0xC5, 0x06, 0x30, 0x04, 0xA5, +0x06, 0x85, 0xAC, 0xA5, 0xA8, 0xC5, 0x06, 0x10, 0x16, 0xC5, 0x02, 0x10, 0x04, 0xA5, 0x02, 0x85, +0xA8, 0xA5, 0xA8, 0xC5, 0xAC, 0x10, 0x08, 0x22, 0x70, 0x1E, 0xE0, 0x22, 0x00, 0x1E, 0xE0, 0x60, +0xA2, 0x00, 0x02, 0x22, 0xA4, 0x1F, 0xE0, 0xB5, 0x12, 0x85, 0xF6, 0xB5, 0x0E, 0x85, 0xF8, 0xB5, +0x08, 0x4A, 0x18, 0x75, 0x00, 0x85, 0xD6, 0x18, 0x75, 0x04, 0x38, 0xF5, 0x00, 0x38, 0xF5, 0x08, +0x85, 0xD8, 0xA2, 0xBC, 0x00, 0x20, 0x07, 0x46, 0x85, 0xC0, 0x86, 0xC2, 0xA0, 0x02, 0x00, 0xB7, +0xC0, 0x85, 0xC6, 0xA2, 0x00, 0x02, 0xB5, 0x00, 0x85, 0x40, 0xA5, 0xF6, 0x20, 0x5B, 0x8B, 0xA5, +0xF8, 0x20, 0x5B, 0x8B, 0xA5, 0x40, 0xC5, 0xD6, 0x30, 0x04, 0xC5, 0xD8, 0x30, 0x2B, 0xA2, 0x00, +0x02, 0x22, 0xA0, 0x1F, 0xE0, 0xB5, 0x12, 0xC5, 0xF6, 0xF0, 0x0C, 0x20, 0x5B, 0x8B, 0xA5, 0xF6, +0x20, 0x5B, 0x8B, 0xB5, 0x12, 0x85, 0xF6, 0xB5, 0x0E, 0xC5, 0xF8, 0xF0, 0x0C, 0x20, 0x5B, 0x8B, +0xA5, 0xF8, 0x20, 0x5B, 0x8B, 0xB5, 0x0E, 0x85, 0xF8, 0xA5, 0x40, 0x1A, 0x85, 0x40, 0xD5, 0x04, +0x30, 0xC2, 0xA5, 0xF6, 0x20, 0x5B, 0x8B, 0xA5, 0xF8, 0x20, 0x5B, 0x8B, 0xA0, 0x02, 0x00, 0xA5, +0xC6, 0x97, 0xC0, 0xA2, 0xBC, 0x00, 0x20, 0x22, 0x46, 0x18, 0x6B, 0xAA, 0x18, 0xA5, 0xC6, 0xA8, +0x69, 0x04, 0x00, 0x85, 0xC6, 0xC7, 0xC0, 0x90, 0x18, 0xF0, 0x16, 0xDA, 0x5A, 0x18, 0x69, 0x00, +0x04, 0xB0, 0x1D, 0xA2, 0xBC, 0x00, 0x20, 0x35, 0x46, 0xB0, 0x18, 0x85, 0xC0, 0x86, 0xC2, 0x7A, +0xFA, 0xA5, 0x40, 0x97, 0xC0, 0xC8, 0xC8, 0x8A, 0x97, 0xC0, 0xC8, 0xC8, 0xA2, 0x00, 0x02, 0x60, +0xA9, 0x33, 0x04, 0x7A, 0xFA, 0xFA, 0x48, 0xA2, 0xBC, 0x00, 0x20, 0x22, 0x46, 0x38, 0x68, 0x6B, +0xA2, 0x00, 0x00, 0x80, 0x0D, 0xA2, 0x01, 0x00, 0x80, 0x08, 0xA2, 0x02, 0x00, 0x80, 0x03, 0xA2, +0x03, 0x00, 0x20, 0xB3, 0x0D, 0xA3, 0x09, 0x85, 0x50, 0xA3, 0x0B, 0x85, 0x52, 0x22, 0xDF, 0x8B, +0xFE, 0xAA, 0x4C, 0x6E, 0xFF, 0x20, 0xB3, 0x0D, 0x22, 0x40, 0x1E, 0xE0, 0xA3, 0x0D, 0x85, 0x50, +0xA3, 0x0F, 0x85, 0x52, 0xA2, 0x04, 0x00, 0x22, 0xDF, 0x8B, 0xFE, 0xAA, 0x4C, 0x84, 0xFF, 0x86, +0x38, 0x20, 0xC5, 0x0D, 0xB0, 0x04, 0x5C, 0x1C, 0x1E, 0xE0, 0x8B, 0xA0, 0x18, 0x00, 0xB7, 0x2A, +0x48, 0xC8, 0xB7, 0x2A, 0x83, 0x02, 0x6B, 0xA9, 0x70, 0x00, 0x22, 0xF8, 0x1E, 0xE0, 0x90, 0x01, +0x6B, 0xA5, 0x38, 0xF0, 0x0E, 0x3A, 0x0A, 0xAA, 0x7C, 0x0B, 0x8C, 0x22, 0x8C, 0x38, 0x8C, 0x4E, +0x8C, 0x64, 0x8C, 0x20, 0xC0, 0x23, 0xA5, 0x50, 0xA6, 0x52, 0x20, 0x16, 0x8D, 0xA9, 0x00, 0x00, +0x18, 0x6B, 0x20, 0xC0, 0x23, 0x20, 0x8E, 0x8C, 0x20, 0xB0, 0x8C, 0xB0, 0x09, 0x22, 0x1C, 0x1F, +0xE0, 0x48, 0x20, 0x0A, 0x8D, 0x68, 0x80, 0x3F, 0x20, 0xC0, 0x23, 0x20, 0x8E, 0x8C, 0x20, 0xB0, +0x8C, 0xB0, 0x09, 0x22, 0x20, 0x1F, 0xE0, 0x48, 0x20, 0x0A, 0x8D, 0x68, 0x80, 0x29, 0x20, 0xC0, +0x23, 0x20, 0x8E, 0x8C, 0x20, 0xB0, 0x8C, 0xB0, 0x09, 0x22, 0x24, 0x1F, 0xE0, 0x48, 0x20, 0x0A, +0x8D, 0x68, 0x80, 0x13, 0x20, 0x8E, 0x8C, 0x20, 0xB0, 0x8C, 0xB0, 0x09, 0x22, 0x28, 0x1F, 0xE0, +0x48, 0x20, 0x0A, 0x8D, 0x68, 0x80, 0x00, 0xAA, 0xA0, 0x72, 0x00, 0x68, 0x97, 0x24, 0xA0, 0x94, +0x00, 0x68, 0x97, 0x24, 0xC8, 0xC8, 0x68, 0x97, 0x24, 0x8A, 0xC9, 0x01, 0x00, 0x6B, 0xFA, 0xA0, +0x96, 0x00, 0xB7, 0x24, 0x48, 0x88, 0x88, 0xB7, 0x24, 0x48, 0xA9, 0x00, 0x00, 0x97, 0x24, 0xC8, +0xC8, 0x97, 0x24, 0xA0, 0x72, 0x00, 0xB7, 0x24, 0x48, 0xA9, 0x00, 0x00, 0x97, 0x24, 0xDA, 0x60, +0xD4, 0x52, 0xD4, 0x50, 0xA2, 0x04, 0x6D, 0x22, 0x00, 0x00, 0xE1, 0x90, 0x03, 0xFA, 0xFA, 0x60, +0x68, 0xFA, 0x20, 0x16, 0x8D, 0xB0, 0x23, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xA2, 0x04, 0x67, +0x22, 0x00, 0x00, 0xE1, 0xB0, 0x14, 0xA3, 0x03, 0x48, 0xA3, 0x03, 0x48, 0xA2, 0x04, 0x6E, 0x22, +0x00, 0x00, 0xE1, 0xFA, 0x86, 0x70, 0xFA, 0x86, 0x72, 0x60, 0x48, 0xA0, 0x96, 0x00, 0xB7, 0x24, +0x48, 0xA9, 0x00, 0x00, 0x97, 0x24, 0x88, 0x88, 0xB7, 0x24, 0x48, 0xA9, 0x00, 0x00, 0x97, 0x24, +0xA2, 0x02, 0x10, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x38, 0x60, 0xD4, 0x72, 0xD4, 0x70, 0xA2, 0x04, +0x68, 0x22, 0x00, 0x00, 0xE1, 0x60, 0xDA, 0x48, 0x48, 0x48, 0x0B, 0x3B, 0x5B, 0xA0, 0x04, 0x00, +0xB7, 0x07, 0x09, 0x00, 0x80, 0x97, 0x07, 0xA7, 0x07, 0x85, 0x03, 0x88, 0x88, 0xB7, 0x07, 0x85, +0x05, 0xA9, 0x0A, 0x00, 0xC7, 0x03, 0xB0, 0x55, 0xA8, 0xB7, 0x03, 0xAA, 0xC8, 0xC8, 0xB7, 0x03, +0xC8, 0xC8, 0x5A, 0x48, 0xDA, 0xA2, 0x04, 0x3A, 0x22, 0x00, 0x00, 0xE1, 0x68, 0xC7, 0x03, 0xB0, +0x2A, 0xA8, 0xB7, 0x03, 0xAA, 0xC8, 0xC8, 0xB7, 0x03, 0xC8, 0xC8, 0x5A, 0x48, 0xDA, 0xA2, 0x04, +0x3C, 0x22, 0x00, 0x00, 0xE1, 0x90, 0xE5, 0x7A, 0x48, 0xA0, 0x04, 0x00, 0xB7, 0x07, 0x29, 0xFF, +0x7F, 0x97, 0x07, 0x68, 0x2B, 0xFA, 0xFA, 0xFA, 0xFA, 0x38, 0x60, 0xA0, 0x0C, 0x00, 0xB7, 0x03, +0x48, 0x88, 0x88, 0xB7, 0x03, 0x48, 0xA2, 0x04, 0x3C, 0x22, 0x00, 0x00, 0xE1, 0xA0, 0x04, 0x00, +0xB7, 0x07, 0x29, 0xFF, 0x7F, 0x97, 0x07, 0x2B, 0x68, 0x68, 0x68, 0xFA, 0x60, 0x20, 0xB3, 0x0D, +0xA0, 0x98, 0x00, 0xB7, 0x24, 0xC8, 0xC8, 0x17, 0x24, 0xF0, 0x06, 0xA2, 0x40, 0x04, 0x4C, 0x42, +0xFF, 0xA9, 0x00, 0x01, 0xA6, 0x0A, 0xA0, 0x00, 0x00, 0x20, 0x24, 0x11, 0x90, 0x04, 0xAA, 0x4C, +0x42, 0xFF, 0x86, 0x50, 0x84, 0x52, 0xA0, 0x98, 0x00, 0x8A, 0x97, 0x24, 0xC8, 0xC8, 0xA5, 0x52, +0x97, 0x24, 0x20, 0xA7, 0x45, 0xA9, 0x0A, 0x00, 0x87, 0x54, 0xA0, 0x02, 0x00, 0xA9, 0x00, 0x00, +0x97, 0x54, 0xC8, 0xC8, 0xC0, 0x0A, 0x00, 0x90, 0xF7, 0xA5, 0x50, 0x83, 0x09, 0xA5, 0x52, 0x83, +0x0B, 0x20, 0xB2, 0x45, 0xA2, 0x04, 0x27, 0x22, 0x00, 0x00, 0xE1, 0x4C, 0x3F, 0xFF, 0x20, 0xB3, +0x0D, 0xA0, 0x98, 0x00, 0xB7, 0x24, 0x85, 0x50, 0xA9, 0x00, 0x00, 0x97, 0x24, 0xC8, 0xC8, 0xB7, +0x24, 0x85, 0x52, 0xA9, 0x00, 0x00, 0x97, 0x24, 0xA5, 0x50, 0x05, 0x52, 0xD0, 0x06, 0xA2, 0x41, +0x04, 0x4C, 0x42, 0xFF, 0x20, 0xA7, 0x45, 0xA7, 0x54, 0xF4, 0x00, 0x00, 0x48, 0xD4, 0x52, 0xD4, +0x50, 0x20, 0xB2, 0x45, 0xA2, 0x02, 0x19, 0x22, 0x00, 0x00, 0xE1, 0x90, 0x04, 0xAA, 0x4C, 0x42, +0xFF, 0x20, 0xA7, 0x45, 0xA7, 0x54, 0xC9, 0x0A, 0x00, 0xF0, 0x52, 0xA0, 0x0A, 0x00, 0xB7, 0x54, +0x85, 0xA6, 0x85, 0xAA, 0xC8, 0xC8, 0xB7, 0x54, 0x85, 0xA8, 0x85, 0xAC, 0xA0, 0x0E, 0x00, 0xB7, +0x54, 0xC5, 0xA6, 0x10, 0x02, 0x85, 0xA6, 0xC5, 0xAA, 0x30, 0x02, 0x85, 0xAA, 0xC8, 0xC8, 0xB7, +0x54, 0xC5, 0xA8, 0x10, 0x02, 0x85, 0xA8, 0xC5, 0xAC, 0x30, 0x02, 0x85, 0xAC, 0xC8, 0xC8, 0x98, +0xC7, 0x54, 0x90, 0xDB, 0xA0, 0x02, 0x00, 0xA5, 0xA6, 0x97, 0x54, 0xA5, 0xA8, 0xC8, 0xC8, 0x97, +0x54, 0xA5, 0xAA, 0xC8, 0xC8, 0x97, 0x54, 0xA5, 0xAC, 0xC8, 0xC8, 0x97, 0x54, 0x20, 0xB2, 0x45, +0xA2, 0x04, 0x28, 0x22, 0x00, 0x00, 0xE1, 0x4C, 0x3F, 0xFF, 0xA3, 0x07, 0xAA, 0xA3, 0x09, 0x48, +0xDA, 0xA2, 0x02, 0x10, 0x22, 0x00, 0x00, 0xE1, 0xAA, 0x4C, 0xC7, 0xFF, 0x20, 0xB3, 0x0D, 0xA3, +0x0D, 0x85, 0x50, 0xA3, 0x0F, 0x85, 0x52, 0x20, 0xA7, 0x45, 0xA0, 0x02, 0x00, 0xB7, 0x54, 0x18, +0x63, 0x09, 0x97, 0x54, 0xC8, 0xC8, 0xB7, 0x54, 0x18, 0x63, 0x0B, 0x97, 0x54, 0xC8, 0xC8, 0x98, +0xC7, 0x54, 0x90, 0xE9, 0x20, 0xB2, 0x45, 0x4C, 0x81, 0xFF, 0x20, 0xB3, 0x0D, 0x20, 0x4C, 0x63, +0x22, 0xC8, 0x1F, 0xE0, 0xA3, 0x11, 0x85, 0x60, 0xA3, 0x13, 0x85, 0x62, 0x20, 0xB8, 0x45, 0xF4, +0x02, 0x00, 0xA3, 0x01, 0xC7, 0x64, 0xB0, 0x0E, 0xA8, 0x20, 0x77, 0x64, 0xA3, 0x01, 0x18, 0x69, +0x04, 0x00, 0x83, 0x01, 0x80, 0xEC, 0x68, 0x20, 0xC3, 0x45, 0x4C, 0x55, 0xFF, 0xA0, 0x98, 0x00, +0xB7, 0x24, 0x85, 0x50, 0xC8, 0xC8, 0xB7, 0x24, 0x85, 0x52, 0x05, 0x50, 0xD0, 0x05, 0x18, 0xA9, +0x00, 0x00, 0x6B, 0x20, 0xA7, 0x45, 0xA5, 0xAC, 0x38, 0xE5, 0xA8, 0x10, 0x04, 0x49, 0xFF, 0xFF, +0x1A, 0x85, 0x2A, 0xA5, 0xAA, 0x38, 0xE5, 0xA6, 0xF0, 0x52, 0x10, 0x04, 0x49, 0xFF, 0xFF, 0x1A, +0xC5, 0x2A, 0x90, 0x02, 0xA5, 0x2A, 0x1A, 0xA0, 0x02, 0x00, 0x18, 0x77, 0x54, 0x97, 0x54, 0xA7, +0x54, 0xC9, 0x0A, 0x00, 0xF0, 0x36, 0xA0, 0x0C, 0x00, 0xB7, 0x54, 0x38, 0xE5, 0xAC, 0x10, 0x04, +0x49, 0xFF, 0xFF, 0x1A, 0x85, 0x2A, 0x88, 0x88, 0xB7, 0x54, 0x38, 0xE5, 0xAA, 0x10, 0x04, 0x49, +0xFF, 0xFF, 0x1A, 0xC5, 0x2A, 0x90, 0x02, 0xA5, 0x2A, 0x1A, 0xA0, 0x02, 0x00, 0x18, 0x77, 0x54, +0xC9, 0xF8, 0x1F, 0x90, 0x07, 0x20, 0xB2, 0x45, 0xA9, 0x42, 0x04, 0x6B, 0xF4, 0x00, 0x00, 0xF4, +0x00, 0x00, 0xD4, 0x52, 0xD4, 0x50, 0xA2, 0x02, 0x18, 0x22, 0x00, 0x00, 0xE1, 0x90, 0x04, 0xFA, +0xFA, 0x80, 0x56, 0x68, 0xFA, 0x38, 0xE9, 0x04, 0x00, 0xC7, 0x54, 0x90, 0x2F, 0xF0, 0x2D, 0xA7, +0x54, 0xC9, 0x0A, 0x00, 0xD0, 0x0E, 0xA8, 0xA5, 0xA6, 0x97, 0x54, 0xC8, 0xC8, 0xA5, 0xA8, 0x97, +0x54, 0xC8, 0xC8, 0x98, 0xA8, 0xA5, 0xAA, 0x97, 0x54, 0xC8, 0xC8, 0xA5, 0xAC, 0x97, 0x54, 0xC8, +0xC8, 0x98, 0x87, 0x54, 0x20, 0xB2, 0x45, 0x18, 0xA9, 0x00, 0x00, 0x6B, 0x18, 0x69, 0x04, 0x01, +0xF4, 0x00, 0x00, 0x48, 0xD4, 0x52, 0xD4, 0x50, 0x20, 0xB2, 0x45, 0xA2, 0x02, 0x19, 0x22, 0x00, +0x00, 0xE1, 0xB0, 0x05, 0x20, 0xA7, 0x45, 0x80, 0xB6, 0x6B, 0x2D, 0x00, 0x00, 0x00, 0xBD, 0x90, +0xFE, 0x00, 0x14, 0x91, 0xFE, 0x00, 0x14, 0x91, 0xFE, 0x00, 0x32, 0x91, 0xFE, 0x00, 0x17, 0x91, +0xFE, 0x00, 0x3A, 0x91, 0xFE, 0x00, 0x14, 0x91, 0xFE, 0x00, 0x14, 0x91, 0xFE, 0x00, 0x5C, 0x91, +0xFE, 0x00, 0x80, 0x91, 0xFE, 0x00, 0xA2, 0x91, 0xFE, 0x00, 0xBA, 0x91, 0xFE, 0x00, 0xD6, 0x91, +0xFE, 0x00, 0x88, 0x93, 0xFE, 0x00, 0x47, 0x95, 0xFE, 0x00, 0x7B, 0x96, 0xFE, 0x00, 0xA3, 0x96, +0xFE, 0x00, 0xC8, 0x96, 0xFE, 0x00, 0xA8, 0x97, 0xFE, 0x00, 0x65, 0x98, 0xFE, 0x00, 0xF9, 0x98, +0xFE, 0x00, 0x08, 0x99, 0xFE, 0x00, 0x63, 0x99, 0xFE, 0x00, 0x57, 0x9B, 0xFE, 0x00, 0xA1, 0x99, +0xFE, 0x00, 0x46, 0x9B, 0xFE, 0x00, 0x35, 0x9B, 0xFE, 0x00, 0xB7, 0x99, 0xFE, 0x00, 0x74, 0x9A, +0xFE, 0x00, 0x22, 0x9A, 0xFE, 0x00, 0x54, 0x9A, 0xFE, 0x00, 0x51, 0x9D, 0xFE, 0x00, 0x59, 0x9E, +0xFE, 0x00, 0x08, 0x9F, 0xFE, 0x00, 0x81, 0x9F, 0xFE, 0x00, 0xC4, 0xA0, 0xFE, 0x00, 0xB2, 0xA0, +0xFE, 0x00, 0xEF, 0xA0, 0xFE, 0x00, 0x57, 0xA3, 0xFE, 0x00, 0xBB, 0xA4, 0xFE, 0x00, 0xB7, 0xA6, +0xFE, 0x00, 0xF6, 0xA6, 0xFE, 0x00, 0x12, 0xA7, 0xFE, 0x00, 0x2E, 0xA7, 0xFE, 0x00, 0x8B, 0xA9, +0x00, 0x00, 0x8F, 0xD8, 0x00, 0xE1, 0x8F, 0xDA, 0x00, 0xE1, 0x8F, 0xDC, 0x00, 0xE1, 0x8F, 0xDE, +0x00, 0xE1, 0xE2, 0x20, 0x8F, 0xD4, 0x0F, 0xE1, 0x3A, 0x8F, 0xCF, 0x00, 0xE1, 0x8F, 0xE0, 0x00, +0xE1, 0xC2, 0x20, 0xA9, 0x02, 0x00, 0xA2, 0x01, 0x41, 0xA0, 0x08, 0x00, 0x20, 0x24, 0x11, 0x90, +0x10, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x25, 0x00, 0xA2, 0x03, 0x15, 0x22, 0x00, 0x00, +0xE1, 0x8A, 0x8F, 0xD0, 0x0F, 0xE1, 0x98, 0x8F, 0xD2, 0x0F, 0xE1, 0x20, 0x43, 0x91, 0xA9, 0x01, +0x41, 0x9D, 0x00, 0x00, 0xAB, 0x4C, 0x8B, 0xFF, 0xA9, 0x00, 0x00, 0x8F, 0xD8, 0x00, 0xE1, 0x8F, +0xDA, 0x00, 0xE1, 0xE2, 0x20, 0x3A, 0x8F, 0xCF, 0x00, 0xE1, 0x8F, 0xE0, 0x00, 0xE1, 0xC2, 0x20, +0x4C, 0x8B, 0xFF, 0xA9, 0x00, 0x02, 0x83, 0x07, 0x4C, 0x8B, 0xFF, 0xA9, 0xFF, 0xFF, 0x83, 0x07, +0x4C, 0x8B, 0xFF, 0xAF, 0xD0, 0x0F, 0xE1, 0xAA, 0xAF, 0xD2, 0x0F, 0xE1, 0xEB, 0x48, 0xAB, 0xAB, +0xBD, 0x00, 0x00, 0xBC, 0x02, 0x00, 0xAA, 0x98, 0xEB, 0x48, 0xAB, 0xAB, 0x60, 0x0B, 0x3B, 0x5B, +0xE2, 0x30, 0xA0, 0x00, 0xA2, 0x00, 0xB7, 0x09, 0x9F, 0xC0, 0x02, 0xE1, 0xCA, 0x88, 0xD0, 0xF6, +0xE2, 0x30, 0x22, 0x80, 0x00, 0xE1, 0xC2, 0x30, 0x4C, 0xC3, 0xFF, 0xA2, 0x07, 0x03, 0x4C, 0xC6, +0xFF, 0x0B, 0x3B, 0x5B, 0xE2, 0x30, 0x22, 0x84, 0x00, 0xE1, 0xA2, 0x00, 0xA0, 0x00, 0xC2, 0x30, +0xB0, 0xE9, 0xE2, 0x30, 0xBF, 0xC0, 0x02, 0xE1, 0x97, 0x09, 0xCA, 0x88, 0xD0, 0xF6, 0xC2, 0x30, +0x4C, 0xC3, 0xFF, 0xE2, 0x30, 0x22, 0x84, 0x00, 0xE1, 0xA3, 0x07, 0xAA, 0xA3, 0x09, 0x9F, 0xC0, +0x02, 0xE1, 0x22, 0x80, 0x00, 0xE1, 0xC2, 0x30, 0x4C, 0xC2, 0xFF, 0xE2, 0x30, 0x22, 0x84, 0x00, +0xE1, 0xA3, 0x07, 0xAA, 0xBF, 0xC0, 0x02, 0xE1, 0x83, 0x09, 0xC2, 0x30, 0xB0, 0x03, 0x4C, 0xB7, +0xFF, 0xA2, 0x33, 0x01, 0x4C, 0xBC, 0xFF, 0xE2, 0x30, 0x22, 0x8C, 0x00, 0xE1, 0xC2, 0x30, 0x90, +0x06, 0xA2, 0x07, 0x03, 0x4C, 0x90, 0xFF, 0x08, 0x78, 0x8B, 0xF4, 0xE1, 0xE1, 0xAB, 0xAB, 0x0B, +0x3B, 0x5B, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xAD, 0xE3, +0x03, 0x48, 0xAD, 0xE1, 0x03, 0x48, 0xF4, 0x01, 0x00, 0xF4, 0x80, 0x51, 0x22, 0x7F, 0x93, 0xFE, +0x68, 0x8D, 0xE9, 0x03, 0x8D, 0xF1, 0x03, 0x68, 0x8D, 0xEB, 0x03, 0x8D, 0xF3, 0x03, 0x68, 0x8D, +0xED, 0x03, 0x68, 0x8D, 0xEF, 0x03, 0x0E, 0xF1, 0x03, 0x2E, 0xF3, 0x03, 0x0E, 0xF1, 0x03, 0x2E, +0xF3, 0x03, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xAD, 0xF3, +0x03, 0x48, 0xAD, 0xF1, 0x03, 0x48, 0xF4, 0x00, 0x00, 0xF4, 0xB5, 0x05, 0x22, 0x7F, 0x93, 0xFE, +0x18, 0x68, 0x8D, 0xF1, 0x03, 0x69, 0x04, 0x00, 0xE2, 0x20, 0x85, 0x0E, 0xC2, 0x20, 0x18, 0xAD, +0xF1, 0x03, 0x69, 0x70, 0x07, 0x8D, 0xF1, 0x03, 0x68, 0x8D, 0xF3, 0x03, 0xA9, 0x3B, 0x00, 0x8D, +0xF5, 0x03, 0x9C, 0xF7, 0x03, 0xA9, 0x03, 0x00, 0x2D, 0xF1, 0x03, 0xD0, 0x03, 0xEE, 0xF5, 0x03, +0x68, 0x8D, 0xF1, 0x03, 0x68, 0x8D, 0xF3, 0x03, 0x4E, 0xF3, 0x03, 0x6E, 0xF1, 0x03, 0x4E, 0xF3, +0x03, 0x6E, 0xF1, 0x03, 0xA9, 0x01, 0x00, 0x8D, 0xF9, 0x03, 0xAD, 0xF1, 0x03, 0xCD, 0xF5, 0x03, +0x90, 0x19, 0xEE, 0xF9, 0x03, 0xEE, 0xF9, 0x03, 0x38, 0xAD, 0xF1, 0x03, 0xED, 0xF5, 0x03, 0x8D, +0xF1, 0x03, 0xAD, 0xF3, 0x03, 0xED, 0xF7, 0x03, 0x8D, 0xF3, 0x03, 0xA0, 0x07, 0x00, 0x0E, 0xF1, +0x03, 0x2E, 0xF3, 0x03, 0x88, 0xD0, 0xF7, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x18, 0xA9, 0x47, +0x00, 0x6D, 0xF1, 0x03, 0x8D, 0xF1, 0x03, 0x48, 0xA9, 0x00, 0x00, 0x6D, 0xF3, 0x03, 0x8D, 0xF3, +0x03, 0xF4, 0x4F, 0x0F, 0x22, 0x84, 0x93, 0xFE, 0x18, 0x68, 0x6D, 0xF9, 0x03, 0x8D, 0xF3, 0x03, +0xE2, 0x20, 0x3A, 0x85, 0x10, 0xC2, 0x20, 0x68, 0xA0, 0x07, 0x00, 0x4A, 0x88, 0xD0, 0xFC, 0xE2, +0x20, 0x85, 0x0F, 0xC2, 0x20, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, +0x00, 0xAD, 0xEF, 0x03, 0x48, 0xAD, 0xED, 0x03, 0x48, 0xF4, 0x00, 0x00, 0xF4, 0x10, 0x0E, 0x22, +0x7F, 0x93, 0xFE, 0x68, 0xFA, 0xE2, 0x20, 0x85, 0x0D, 0xC2, 0x20, 0x68, 0xFA, 0xF4, 0x00, 0x00, +0xF4, 0x00, 0x00, 0x48, 0xF4, 0x3C, 0x00, 0x22, 0x84, 0x93, 0xFE, 0x68, 0xE2, 0x20, 0x85, 0x0C, +0x68, 0x85, 0x0B, 0x68, 0xC2, 0x30, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, +0x00, 0x00, 0x18, 0xA9, 0x05, 0x00, 0x6F, 0xE9, 0x03, 0xE1, 0xAA, 0xA9, 0x00, 0x00, 0x6F, 0xEB, +0x03, 0xE1, 0x48, 0xDA, 0xF4, 0x00, 0x00, 0xF4, 0x07, 0x00, 0x22, 0x7F, 0x93, 0xFE, 0x68, 0x68, +0x68, 0x1A, 0xFA, 0xE2, 0x20, 0x85, 0x12, 0xC2, 0x20, 0x2B, 0xAB, 0x28, 0x4C, 0x8B, 0xFF, 0x22, +0xB1, 0xC8, 0xFE, 0x6B, 0x22, 0x07, 0xC8, 0xFE, 0x6B, 0x08, 0x78, 0x8B, 0xF4, 0xE1, 0xE1, 0xAB, +0xAB, 0x0B, 0x3B, 0x5B, 0xE2, 0x30, 0x8B, 0x4B, 0xAB, 0xA4, 0x10, 0xA5, 0x0E, 0x29, 0x03, 0xD0, +0x06, 0xC0, 0x01, 0xD0, 0x02, 0xA0, 0x0C, 0xA5, 0x0F, 0xD9, 0x3B, 0x95, 0xC2, 0x30, 0x90, 0x0A, +0xAB, 0x2B, 0xAB, 0x28, 0xA2, 0x01, 0x03, 0x4C, 0xD2, 0xFF, 0xAB, 0xF4, 0x00, 0x00, 0xF4, 0x00, +0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xA5, 0x0D, 0x29, 0xFF, 0x00, 0x48, 0xF4, 0x3C, 0x00, +0x22, 0x36, 0x95, 0xFE, 0x18, 0xA5, 0x0C, 0x29, 0xFF, 0x00, 0x63, 0x01, 0x83, 0x01, 0xA9, 0x00, +0x00, 0x63, 0x03, 0x83, 0x03, 0x68, 0xFA, 0x48, 0xF4, 0x3C, 0x00, 0x22, 0x36, 0x95, 0xFE, 0x18, +0xA5, 0x0B, 0x29, 0xFF, 0x00, 0x63, 0x01, 0x83, 0x01, 0xA9, 0x00, 0x00, 0x63, 0x03, 0x83, 0x03, +0x68, 0x8D, 0xE9, 0x03, 0x68, 0x8D, 0xEB, 0x03, 0xA5, 0x0F, 0x29, 0xFF, 0x00, 0x8D, 0xED, 0x03, +0x9C, 0xEF, 0x03, 0xA5, 0x10, 0x29, 0xFF, 0x00, 0x1A, 0x8D, 0xF1, 0x03, 0x9C, 0xF3, 0x03, 0xA5, +0x0E, 0x29, 0xFF, 0x00, 0x18, 0x69, 0x6C, 0x07, 0x8D, 0xF5, 0x03, 0x8D, 0xF9, 0x03, 0x9C, 0xF7, +0x03, 0x9C, 0xFB, 0x03, 0x38, 0xAD, 0xF5, 0x03, 0xE9, 0x70, 0x07, 0x8D, 0xF5, 0x03, 0xF4, 0x00, +0x00, 0xF4, 0x00, 0x00, 0x48, 0xF4, 0xB5, 0x05, 0x22, 0x36, 0x95, 0xFE, 0x18, 0xA9, 0x03, 0x00, +0x63, 0x01, 0x83, 0x01, 0xA9, 0x00, 0x00, 0x63, 0x03, 0x4A, 0x83, 0x03, 0xA3, 0x01, 0x6A, 0x83, +0x01, 0xA3, 0x03, 0x4A, 0x83, 0x03, 0x8D, 0xF7, 0x03, 0xA3, 0x01, 0x6A, 0x83, 0x01, 0x8D, 0xF5, +0x03, 0x68, 0x18, 0x6D, 0xED, 0x03, 0x8D, 0xED, 0x03, 0x68, 0x6D, 0xEF, 0x03, 0x8D, 0xEF, 0x03, +0xCE, 0xF1, 0x03, 0xAD, 0xF1, 0x03, 0xC9, 0x02, 0x00, 0x90, 0x21, 0xCE, 0xF1, 0x03, 0xCE, 0xF1, +0x03, 0xA9, 0x3B, 0x00, 0x8D, 0xF5, 0x03, 0xAD, 0xF9, 0x03, 0x29, 0x03, 0x00, 0xD0, 0x03, 0xEE, +0xF5, 0x03, 0x18, 0xAD, 0xF5, 0x03, 0x6D, 0xED, 0x03, 0x8D, 0xED, 0x03, 0xF4, 0x00, 0x00, 0xF4, +0x00, 0x00, 0xAD, 0xF1, 0x03, 0x48, 0xA9, 0x4D, 0x0F, 0x48, 0x22, 0x36, 0x95, 0xFE, 0x18, 0xA9, +0x34, 0x00, 0x63, 0x01, 0x83, 0x01, 0xA9, 0x00, 0x00, 0x63, 0x03, 0x83, 0x03, 0x68, 0x8D, 0xF1, +0x03, 0x68, 0x8D, 0xF3, 0x03, 0xA0, 0x07, 0x00, 0x4E, 0xF3, 0x03, 0x6E, 0xF1, 0x03, 0x88, 0xD0, +0xF7, 0x18, 0xAD, 0xED, 0x03, 0x6D, 0xF1, 0x03, 0x8D, 0xED, 0x03, 0xAD, 0xEF, 0x03, 0x6D, 0xF3, +0x03, 0x8D, 0xEF, 0x03, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0xC0, 0xA8, 0xAD, 0xED, 0x03, +0x48, 0x22, 0x36, 0x95, 0xFE, 0xA3, 0x01, 0x0A, 0x83, 0x01, 0xA3, 0x03, 0x2A, 0x83, 0x03, 0x18, +0x68, 0x6D, 0xE9, 0x03, 0x8D, 0xE5, 0x03, 0x68, 0x6D, 0xEB, 0x03, 0x8D, 0xE7, 0x03, 0xE2, 0x30, +0x22, 0x88, 0x00, 0xE1, 0xC2, 0x30, 0x2B, 0xAB, 0x2A, 0x28, 0x6A, 0xB0, 0x03, 0x4C, 0xCD, 0xFF, +0xA2, 0x07, 0x03, 0x4C, 0xD2, 0xFF, 0x22, 0xE9, 0xC7, 0xFE, 0x6B, 0x1F, 0x1C, 0x1F, 0x1E, 0x1F, +0x1E, 0x1F, 0x1F, 0x1E, 0x1F, 0x1E, 0x1F, 0x1D, 0x8B, 0x0B, 0x3B, 0x5B, 0xF4, 0x00, 0x00, 0xF4, +0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x22, 0x4C, 0x96, 0xFE, 0x90, 0x03, 0x4C, 0x40, +0x96, 0xA6, 0x0A, 0xE2, 0x20, 0xA5, 0x0C, 0x48, 0xAB, 0x0B, 0x3B, 0x5B, 0xA9, 0xA0, 0x9D, 0x08, +0x00, 0x9D, 0x11, 0x00, 0xAF, 0xF5, 0x02, 0xE1, 0xC2, 0x20, 0x08, 0xA0, 0xA0, 0xA0, 0xA5, 0x05, +0x28, 0xD0, 0x21, 0xA0, 0xC1, 0xCD, 0x29, 0xFF, 0x00, 0xC9, 0x0C, 0x00, 0x90, 0x03, 0xA0, 0xD0, +0xCD, 0xC9, 0x0D, 0x00, 0x90, 0x06, 0x38, 0xE9, 0x0C, 0x00, 0x80, 0x08, 0xC9, 0x00, 0x00, 0xD0, +0x03, 0xA9, 0x0C, 0x00, 0x20, 0x51, 0x96, 0x9D, 0x09, 0x00, 0x98, 0x9D, 0x12, 0x00, 0xA5, 0x04, +0x20, 0x51, 0x96, 0x9D, 0x0C, 0x00, 0xA5, 0x03, 0x20, 0x51, 0x96, 0x9D, 0x0F, 0x00, 0xA5, 0x08, +0x1A, 0x20, 0x51, 0x96, 0x9D, 0x00, 0x00, 0xA5, 0x07, 0x1A, 0x20, 0x51, 0x96, 0x9D, 0x03, 0x00, +0xA5, 0x06, 0x20, 0x51, 0x96, 0x9D, 0x06, 0x00, 0xE2, 0x20, 0xA9, 0xBA, 0x9D, 0x0B, 0x00, 0x9D, +0x0E, 0x00, 0xA9, 0xAF, 0x9D, 0x02, 0x00, 0x9D, 0x05, 0x00, 0xA0, 0xA0, 0x00, 0xBD, 0x09, 0x00, +0xC9, 0xB0, 0xD0, 0x04, 0x98, 0x9D, 0x09, 0x00, 0xBD, 0x00, 0x00, 0xC9, 0xB0, 0xD0, 0x04, 0x98, +0x9D, 0x00, 0x00, 0xBD, 0x03, 0x00, 0xC9, 0xB0, 0xD0, 0x04, 0x98, 0x9D, 0x03, 0x00, 0xAF, 0xF4, +0x02, 0xE1, 0xC2, 0x20, 0xF0, 0x20, 0x29, 0xFF, 0x00, 0x48, 0xBD, 0x03, 0x00, 0xA8, 0xBD, 0x00, +0x00, 0x9D, 0x03, 0x00, 0x98, 0x9D, 0x00, 0x00, 0x68, 0x3A, 0xF0, 0x0A, 0xBD, 0x06, 0x00, 0x9D, +0x00, 0x00, 0x98, 0x9D, 0x06, 0x00, 0x2B, 0x68, 0x68, 0x68, 0x68, 0x2B, 0xAB, 0x4C, 0xC2, 0xFF, +0x68, 0x68, 0x68, 0x68, 0x2B, 0xAB, 0xA2, 0x07, 0x03, 0x4C, 0xC7, 0xFF, 0x22, 0xD7, 0x91, 0xFE, +0x6B, 0x48, 0xDA, 0x5A, 0x0B, 0x3B, 0x5B, 0xE2, 0x30, 0xA0, 0x02, 0xA2, 0x09, 0xA9, 0x00, 0x18, +0x2A, 0xC9, 0x0A, 0x90, 0x02, 0xE9, 0x0A, 0x26, 0x07, 0xCA, 0xD0, 0xF4, 0x09, 0xB0, 0x48, 0x88, +0xD0, 0xE9, 0xC2, 0x30, 0x68, 0x85, 0x07, 0x2B, 0x7A, 0xFA, 0x68, 0x60, 0xA3, 0x0B, 0x29, 0xFF, +0x00, 0xC9, 0x2D, 0x00, 0xB0, 0x18, 0x0A, 0x0A, 0xAA, 0xA3, 0x06, 0x29, 0x00, 0xFF, 0x09, 0x5C, +0x00, 0x9F, 0x00, 0x00, 0xE1, 0xA3, 0x08, 0x9F, 0x02, 0x00, 0xE1, 0x4C, 0xCD, 0xFF, 0xA2, 0x01, +0x03, 0x4C, 0xD2, 0xFF, 0xA3, 0x07, 0x29, 0xFF, 0x00, 0xC9, 0x2D, 0x00, 0xB0, 0x15, 0x0A, 0x0A, +0xAA, 0xBF, 0x01, 0x00, 0xE1, 0x83, 0x09, 0xBF, 0x03, 0x00, 0xE1, 0x29, 0xFF, 0x00, 0x83, 0x0B, +0x4C, 0xB7, 0xFF, 0xA2, 0x01, 0x03, 0x4C, 0xBC, 0xFF, 0x0B, 0x3B, 0x5B, 0x08, 0x78, 0xA9, 0x74, +0x98, 0x48, 0xEB, 0x29, 0x00, 0xFF, 0x09, 0x5C, 0x00, 0x8F, 0x30, 0x00, 0xE1, 0x68, 0x29, 0x00, +0xFF, 0x09, 0xFE, 0x00, 0xEB, 0x8F, 0x32, 0x00, 0xE1, 0x8B, 0xE2, 0x20, 0xA5, 0x0B, 0x48, 0xAB, +0xC2, 0x30, 0xA5, 0x09, 0xAA, 0xBD, 0x06, 0x00, 0xC9, 0x5A, 0xA5, 0xF0, 0x06, 0xA2, 0x04, 0x03, +0x82, 0x75, 0x00, 0xAF, 0xD8, 0x00, 0xE1, 0xC5, 0x09, 0xD0, 0x0D, 0xAF, 0xDA, 0x00, 0xE1, 0xC5, +0x0B, 0xD0, 0x05, 0xA2, 0x03, 0x03, 0x80, 0x60, 0xAF, 0xD8, 0x00, 0xE1, 0x0F, 0xDA, 0x00, 0xE1, +0xD0, 0x29, 0xA5, 0x09, 0x8F, 0xD8, 0x00, 0xE1, 0xA5, 0x0B, 0x8F, 0xDA, 0x00, 0xE1, 0xE2, 0x20, +0xAF, 0xDA, 0x00, 0xE1, 0x48, 0xAB, 0xC2, 0x20, 0xAF, 0xD8, 0x00, 0xE1, 0xAA, 0xA9, 0x00, 0x00, +0x9D, 0x00, 0x00, 0x9D, 0x02, 0x00, 0xAB, 0x28, 0x4C, 0xC3, 0xFF, 0xE2, 0x20, 0xAF, 0xDA, 0x00, +0xE1, 0x48, 0xAB, 0xC2, 0x20, 0xAF, 0xD8, 0x00, 0xE1, 0xAA, 0xBD, 0x06, 0x00, 0xC9, 0x5A, 0xA5, +0xF0, 0x05, 0xA2, 0x05, 0x00, 0x80, 0x11, 0xBD, 0x00, 0x00, 0xC5, 0x09, 0xD0, 0x0F, 0xBD, 0x02, +0x00, 0xC5, 0x0B, 0xD0, 0x08, 0xA2, 0x03, 0x03, 0xAB, 0x28, 0x4C, 0xC6, 0xFF, 0xBD, 0x00, 0x00, +0x1D, 0x02, 0x00, 0xF0, 0x0F, 0xE2, 0x20, 0xBD, 0x02, 0x00, 0x48, 0xC2, 0x20, 0xBD, 0x00, 0x00, +0xAA, 0xAB, 0x80, 0xC6, 0xA5, 0x0B, 0x9D, 0x02, 0x00, 0xA5, 0x09, 0x9D, 0x00, 0x00, 0xAA, 0xE2, +0x20, 0xA5, 0x0B, 0x48, 0xAB, 0xC2, 0x20, 0x80, 0x94, 0x0B, 0x3B, 0x5B, 0x08, 0x78, 0x8B, 0xE2, +0x20, 0xA9, 0xE1, 0x48, 0xAB, 0xC2, 0x20, 0xA2, 0xD8, 0x00, 0xBD, 0x00, 0x00, 0x1D, 0x02, 0x00, +0xF0, 0x2E, 0xC2, 0x20, 0xBD, 0x00, 0x00, 0xC5, 0x09, 0xD0, 0x27, 0xE2, 0x20, 0xBD, 0x02, 0x00, +0xC5, 0x0B, 0xD0, 0x1E, 0x8B, 0xDA, 0x48, 0xC2, 0x20, 0xBD, 0x00, 0x00, 0xAA, 0xAB, 0xBD, 0x02, +0x00, 0xA8, 0xBD, 0x00, 0x00, 0xFA, 0xAB, 0x9D, 0x00, 0x00, 0x98, 0x9D, 0x02, 0x00, 0x80, 0x5A, +0x80, 0x6C, 0xE2, 0x20, 0xBD, 0x02, 0x00, 0x48, 0xC2, 0x20, 0xBD, 0x00, 0x00, 0xAA, 0xAB, 0xBD, +0x06, 0x00, 0xC9, 0x5A, 0xA5, 0xF0, 0x08, 0xA2, 0x05, 0x03, 0xAB, 0x28, 0x4C, 0xC6, 0xFF, 0xBD, +0x00, 0x00, 0x1D, 0x02, 0x00, 0xF0, 0x47, 0xBD, 0x00, 0x00, 0xC5, 0x09, 0xD0, 0x31, 0xBD, 0x02, +0x00, 0xC5, 0x0B, 0xD0, 0x2A, 0x8B, 0xDA, 0xE2, 0x20, 0xBD, 0x02, 0x00, 0x48, 0xC2, 0x20, 0xBD, +0x00, 0x00, 0xAA, 0xAB, 0xBD, 0x00, 0x00, 0x85, 0x09, 0xBD, 0x02, 0x00, 0x85, 0x0B, 0xFA, 0xAB, +0xA5, 0x09, 0x9D, 0x00, 0x00, 0xA5, 0x0B, 0x9D, 0x02, 0x00, 0xAB, 0x28, 0x4C, 0xC3, 0xFF, 0xE2, +0x20, 0xBD, 0x02, 0x00, 0x48, 0xC2, 0x20, 0xBD, 0x00, 0x00, 0xAA, 0xAB, 0x80, 0xA1, 0xAB, 0x28, +0xA2, 0x06, 0x03, 0x4C, 0xC6, 0xFF, 0xA9, 0x00, 0x00, 0x8F, 0xD8, 0x00, 0xE1, 0x8F, 0xDA, 0x00, +0xE1, 0x4C, 0x8B, 0xFF, 0xC2, 0x30, 0xAF, 0xDC, 0x00, 0xE1, 0x1A, 0x8F, 0xDC, 0x00, 0xE1, 0xD0, +0x09, 0xAF, 0xDE, 0x00, 0xE1, 0x1A, 0x8F, 0xDE, 0x00, 0xE1, 0xC2, 0x30, 0xAF, 0xD8, 0x00, 0xE1, +0xAA, 0x0F, 0xDA, 0x00, 0xE1, 0xF0, 0x5B, 0x8B, 0xE2, 0x20, 0xAF, 0xDA, 0x00, 0xE1, 0x48, 0xAB, +0xC2, 0x20, 0xBD, 0x06, 0x00, 0xC9, 0x5A, 0xA5, 0xF0, 0x10, 0xF4, 0x08, 0x03, 0xF4, 0x00, 0x00, +0xF4, 0x00, 0x00, 0xA2, 0x03, 0x15, 0x22, 0x00, 0x00, 0xE1, 0xBD, 0x04, 0x00, 0xF0, 0x1B, 0xDE, +0x04, 0x00, 0xD0, 0x16, 0x8B, 0xDA, 0x4B, 0xF4, 0xD3, 0x98, 0x8B, 0x18, 0x8A, 0x69, 0x07, 0x00, +0x48, 0xE2, 0x30, 0x6B, 0x18, 0xFB, 0xC2, 0x30, 0xFA, 0xAB, 0xBD, 0x00, 0x00, 0x1D, 0x02, 0x00, +0xF0, 0x0F, 0xE2, 0x20, 0xBD, 0x02, 0x00, 0x48, 0xC2, 0x20, 0xBD, 0x00, 0x00, 0xAA, 0xAB, 0x80, +0xB1, 0xAB, 0xE2, 0x30, 0x8F, 0x47, 0xC0, 0x00, 0x18, 0x6B, 0x18, 0xA3, 0x07, 0x03, 0x07, 0xD0, +0x01, 0x38, 0x8B, 0x68, 0x68, 0x5C, 0x1C, 0x00, 0xE1, 0xA3, 0x07, 0x0A, 0x0A, 0xC9, 0x3C, 0x00, +0x90, 0x06, 0xA2, 0x01, 0x03, 0x4C, 0xBC, 0xFF, 0xAA, 0xBF, 0x28, 0x99, 0xFE, 0x83, 0x09, 0xBF, +0x2A, 0x99, 0xFE, 0x83, 0x0B, 0x4C, 0xB7, 0xFF, 0xC3, 0x00, 0xE1, 0x00, 0xC4, 0x00, 0xE1, 0x00, +0xC7, 0x00, 0xE1, 0x00, 0xC8, 0x00, 0xE1, 0x00, 0xC9, 0x00, 0xE1, 0x00, 0xDC, 0x00, 0xE1, 0x00, +0xCA, 0x00, 0xE1, 0x00, 0xCB, 0x00, 0xE1, 0x00, 0xCC, 0x00, 0xE1, 0x00, 0x08, 0x01, 0xE1, 0x00, +0xE1, 0x00, 0xE1, 0x00, 0xE0, 0x00, 0xE1, 0x00, 0xB8, 0x02, 0xE1, 0x00, 0xD0, 0x1D, 0xE1, 0x00, +0x04, 0x01, 0xE1, 0x00, 0x20, 0x6A, 0x9B, 0x90, 0x03, 0x4C, 0x90, 0xFF, 0x08, 0x78, 0x20, 0x96, +0x9B, 0xE2, 0x30, 0xAF, 0xE0, 0x00, 0xE1, 0xAA, 0xBF, 0x78, 0x05, 0x00, 0x83, 0x0D, 0xBF, 0x78, +0x04, 0x00, 0x83, 0x0C, 0xBF, 0xF8, 0x05, 0x00, 0x83, 0x0B, 0xBF, 0xF8, 0x04, 0x00, 0x83, 0x0A, +0xBF, 0x78, 0x07, 0x00, 0x83, 0x09, 0xBF, 0xF8, 0x07, 0x00, 0x83, 0x08, 0xC2, 0x30, 0x28, 0x4C, +0x8B, 0xFF, 0x20, 0x6A, 0x9B, 0x90, 0x03, 0x4C, 0xBC, 0xFF, 0x08, 0x78, 0xA3, 0x08, 0x29, 0x0F, +0x00, 0x20, 0x8C, 0x9B, 0x28, 0x4C, 0xB7, 0xFF, 0x08, 0xA3, 0x08, 0x8F, 0xBE, 0x02, 0xE1, 0xA3, +0x0A, 0x8F, 0xBA, 0x02, 0xE1, 0xA3, 0x0C, 0x8F, 0xBC, 0x02, 0xE1, 0xA3, 0x0E, 0x8F, 0xB8, 0x02, +0xE1, 0x20, 0x6A, 0x9B, 0x90, 0x04, 0x28, 0x4C, 0xDD, 0xFF, 0x78, 0xE2, 0x30, 0xA3, 0x0F, 0x8F, +0x78, 0x05, 0x00, 0xA3, 0x0E, 0x8F, 0x78, 0x04, 0x00, 0xA3, 0x0D, 0x8F, 0xF8, 0x05, 0x00, 0xA3, +0x0C, 0x8F, 0xF8, 0x04, 0x00, 0xC2, 0x30, 0xA9, 0x00, 0x00, 0x20, 0xA5, 0x9B, 0xE2, 0x30, 0xA3, +0x0B, 0x8F, 0x78, 0x05, 0x00, 0xA3, 0x0A, 0x8F, 0x78, 0x04, 0x00, 0xA3, 0x09, 0x8F, 0xF8, 0x05, +0x00, 0xA3, 0x08, 0x8F, 0xF8, 0x04, 0x00, 0xC2, 0x30, 0xA9, 0x01, 0x00, 0x20, 0xA5, 0x9B, 0x28, +0x4C, 0xD8, 0xFF, 0x20, 0x6A, 0x9B, 0x90, 0x03, 0x4C, 0xC7, 0xFF, 0x08, 0x78, 0xE2, 0x30, 0xAF, +0xE0, 0x00, 0xE1, 0xAA, 0xA3, 0x0B, 0x9F, 0x78, 0x05, 0x00, 0xA3, 0x0A, 0x9F, 0x78, 0x04, 0x00, +0xA3, 0x09, 0x9F, 0xF8, 0x05, 0x00, 0xA3, 0x08, 0x9F, 0xF8, 0x04, 0x00, 0xC2, 0x30, 0x20, 0xA0, +0x9B, 0x28, 0x4C, 0xC2, 0xFF, 0x20, 0x6A, 0x9B, 0x90, 0x03, 0x4C, 0x90, 0xFF, 0x08, 0x78, 0x20, +0x91, 0x9B, 0xE2, 0x30, 0xAF, 0xE0, 0x00, 0xE1, 0xAA, 0xBF, 0x78, 0x07, 0x00, 0x83, 0x08, 0xC2, +0x30, 0x28, 0x4C, 0x8B, 0xFF, 0x20, 0x6A, 0x9B, 0x90, 0x03, 0x4C, 0x90, 0xFF, 0x0B, 0x3B, 0x5B, +0xE2, 0x30, 0xAF, 0xE0, 0x00, 0xE1, 0xC9, 0x03, 0xD0, 0x0A, 0xAF, 0x17, 0xC0, 0x00, 0x29, 0x80, +0xF0, 0x0C, 0xD0, 0x27, 0xAA, 0xAD, 0x2D, 0xC0, 0x6A, 0xCA, 0x10, 0xFC, 0xB0, 0x1D, 0xC2, 0x30, +0xAF, 0xBE, 0x02, 0xE1, 0x85, 0x09, 0xAF, 0xBA, 0x02, 0xE1, 0x85, 0x0B, 0xAF, 0xBC, 0x02, 0xE1, +0x85, 0x0D, 0xAF, 0xB8, 0x02, 0xE1, 0x85, 0x0F, 0x4C, 0x8C, 0xFF, 0x08, 0x78, 0xE2, 0x30, 0x8B, +0xF4, 0x00, 0x00, 0xAB, 0xAB, 0xAF, 0xE0, 0x00, 0xE1, 0x09, 0xC0, 0xAA, 0x0A, 0x0A, 0x0A, 0x0A, +0xA8, 0x9C, 0xF8, 0x04, 0xA9, 0x4E, 0x8D, 0x78, 0x04, 0x20, 0x1D, 0x9B, 0x85, 0x09, 0xCE, 0x78, +0x04, 0x20, 0x1D, 0x9B, 0x85, 0x0D, 0xCE, 0x78, 0x04, 0x20, 0x1D, 0x9B, 0x85, 0x0A, 0xCE, 0x78, +0x04, 0x20, 0x1D, 0x9B, 0x85, 0x0E, 0xCE, 0x78, 0x04, 0x20, 0x1D, 0x9B, 0x85, 0x0B, 0xCE, 0x78, +0x04, 0x20, 0x1D, 0x9B, 0x85, 0x0F, 0xCE, 0x78, 0x04, 0x20, 0x1D, 0x9B, 0x85, 0x0C, 0xCE, 0x78, +0x04, 0x20, 0x1D, 0x9B, 0x85, 0x10, 0xAB, 0x28, 0xC2, 0x30, 0x4C, 0x8C, 0xFF, 0xAF, 0xE0, 0x00, +0xE1, 0x09, 0xC0, 0xAA, 0x0A, 0x0A, 0x0A, 0x0A, 0xA8, 0xA9, 0x00, 0xC2, 0x30, 0x20, 0xAF, 0x9B, +0xE2, 0x30, 0xAD, 0x78, 0x05, 0x60, 0x20, 0x6A, 0x9B, 0x90, 0x03, 0x4C, 0x90, 0xFF, 0x08, 0x78, +0x20, 0x9B, 0x9B, 0x28, 0x4C, 0x8B, 0xFF, 0x20, 0x6A, 0x9B, 0x90, 0x03, 0x4C, 0x90, 0xFF, 0x08, +0x78, 0x20, 0xAA, 0x9B, 0x28, 0x4C, 0x8B, 0xFF, 0x08, 0x78, 0x20, 0xB4, 0x9B, 0x90, 0x07, 0x28, +0xA2, 0x02, 0x03, 0x4C, 0xBC, 0xFF, 0x28, 0x4C, 0xB7, 0xFF, 0xE2, 0x20, 0xAF, 0xE0, 0x00, 0xE1, +0x30, 0x13, 0x09, 0xC0, 0xEB, 0xA9, 0x0B, 0xAA, 0xC2, 0x20, 0xBF, 0x00, 0x00, 0x00, 0xC9, 0x01, +0x20, 0xD0, 0x02, 0x18, 0x60, 0xC2, 0x30, 0x38, 0xA2, 0x09, 0x03, 0x60, 0xF4, 0x12, 0xC0, 0x80, +0x7A, 0xF4, 0x13, 0xC0, 0x80, 0x75, 0xF4, 0x14, 0xC0, 0x80, 0x70, 0xF4, 0x15, 0xC0, 0x80, 0x6B, +0xF4, 0x16, 0xC0, 0x80, 0x66, 0xF4, 0x17, 0xC0, 0x80, 0x61, 0xF4, 0x18, 0xC0, 0x80, 0x5C, 0xF4, +0x1A, 0xC0, 0x80, 0x57, 0xE2, 0x30, 0xA3, 0x0A, 0x8B, 0xF4, 0x00, 0x00, 0xAB, 0xAB, 0xC9, 0x00, +0xF0, 0x14, 0xC2, 0x30, 0x29, 0x07, 0x00, 0xEB, 0x09, 0x0B, 0xC0, 0xAA, 0xBD, 0x00, 0x00, 0xC9, +0x01, 0x20, 0xF0, 0x27, 0xD0, 0x18, 0xC2, 0x30, 0xA2, 0x0B, 0xC7, 0xBD, 0x00, 0x00, 0xC9, 0x01, +0x20, 0xF0, 0x18, 0x8A, 0x38, 0xE9, 0x00, 0x01, 0xAA, 0xC9, 0x0B, 0xC0, 0xD0, 0xED, 0xE2, 0x20, +0xA9, 0x80, 0x8F, 0xE0, 0x00, 0xE1, 0xC2, 0x30, 0xAB, 0x38, 0x60, 0xAB, 0x8A, 0xEB, 0xE2, 0x30, +0x29, 0x07, 0x8F, 0xE0, 0x00, 0xE1, 0xC2, 0x30, 0xF4, 0x19, 0xC0, 0x48, 0x0B, 0x3B, 0x5B, 0xE2, +0x20, 0xAF, 0xE0, 0x00, 0xE1, 0xC2, 0x20, 0x10, 0x12, 0xC2, 0x30, 0xF4, 0x09, 0x03, 0xF4, 0x00, +0x00, 0xF4, 0x00, 0x00, 0xA2, 0x03, 0x15, 0x22, 0x00, 0x00, 0xE1, 0xEB, 0x29, 0x00, 0x07, 0x09, +0x00, 0x10, 0xAA, 0xBF, 0x0B, 0xB0, 0x00, 0xC9, 0x01, 0x20, 0xD0, 0xDD, 0x8A, 0x29, 0xFF, 0xEF, +0x05, 0x05, 0x85, 0x05, 0xAA, 0xE2, 0x20, 0xBF, 0x00, 0x00, 0x00, 0x3A, 0x85, 0x05, 0xAF, 0xE0, +0x00, 0xE1, 0x09, 0xC0, 0xAA, 0x0A, 0x0A, 0x0A, 0x0A, 0xA8, 0xC2, 0x20, 0x2B, 0x68, 0xE2, 0x30, +0x48, 0x8B, 0xA9, 0x00, 0x48, 0xAB, 0xAD, 0x36, 0xC0, 0x48, 0xAD, 0x68, 0xC0, 0x48, 0xA9, 0x08, +0x8D, 0x68, 0xC0, 0x0B, 0x3B, 0x5B, 0xDA, 0xC2, 0x20, 0xA5, 0x07, 0x1A, 0xEB, 0xE2, 0x20, 0xC9, +0xC8, 0xB0, 0x2A, 0x29, 0xF0, 0xC9, 0xC0, 0xD0, 0x24, 0xC2, 0x20, 0xA5, 0x07, 0x1A, 0xEB, 0xE2, +0x20, 0x29, 0x07, 0xC9, 0x03, 0xD0, 0x08, 0xAF, 0x17, 0xC0, 0x00, 0x29, 0x80, 0x80, 0x0B, 0xAA, +0xAD, 0x2D, 0xC0, 0x6A, 0xCA, 0x10, 0xFC, 0xA9, 0x00, 0x6A, 0x1C, 0x36, 0xC0, 0xFA, 0xC2, 0x30, +0x8A, 0xEB, 0xE2, 0x20, 0x98, 0xC2, 0x20, 0xAA, 0x3B, 0xA8, 0xE2, 0x20, 0xEB, 0x3A, 0xF0, 0x0A, +0xA9, 0x01, 0xEB, 0xAF, 0x00, 0x01, 0x01, 0xC2, 0x20, 0x1B, 0x5A, 0xC2, 0x20, 0x8A, 0xE2, 0x30, +0xA8, 0xEB, 0xAA, 0x0B, 0xF4, 0xEA, 0x9C, 0xAD, 0x15, 0xC0, 0x48, 0xC2, 0x20, 0xA5, 0x07, 0x48, +0xE2, 0x30, 0xA5, 0x06, 0xF4, 0x00, 0x00, 0x2B, 0x82, 0x1F, 0x00, 0x2B, 0x85, 0x07, 0x08, 0x68, +0x85, 0x08, 0xC2, 0x30, 0x68, 0x1B, 0xE2, 0x30, 0x2B, 0x68, 0x8D, 0x68, 0xC0, 0x68, 0x8D, 0x36, +0xC0, 0xAB, 0xE2, 0x30, 0x68, 0x68, 0x28, 0xC2, 0x30, 0x60, 0xEB, 0x8A, 0xC2, 0x30, 0xFA, 0x4B, +0xF4, 0x33, 0x9D, 0xF4, 0xD3, 0xF8, 0xDA, 0xE2, 0x30, 0xAA, 0xEB, 0xEB, 0xAF, 0x36, 0xC0, 0x00, +0x29, 0x7F, 0x0F, 0x37, 0x01, 0xE1, 0x8F, 0x36, 0xC0, 0x00, 0xEB, 0x8B, 0xF4, 0xB4, 0xF8, 0x8F, +0x06, 0xC0, 0x00, 0x6B, 0xE2, 0x30, 0xEB, 0x8B, 0xF4, 0x00, 0x00, 0xAB, 0xAB, 0xA9, 0x80, 0x0C, +0x36, 0xC0, 0xA3, 0x02, 0x10, 0x07, 0x8D, 0x07, 0xC0, 0xAB, 0x68, 0xEB, 0x60, 0x8D, 0x06, 0xC0, +0x80, 0xF7, 0x0B, 0x8B, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, +0xF4, 0x00, 0x00, 0x3B, 0x5B, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xAF, 0xD2, 0x0F, 0xE1, 0x48, +0xAF, 0xD0, 0x0F, 0xE1, 0x48, 0xA2, 0x02, 0x18, 0x22, 0x00, 0x00, 0xE1, 0xFA, 0x86, 0x05, 0x86, +0x09, 0xE8, 0xE8, 0x68, 0xAF, 0xD2, 0x0F, 0xE1, 0xA8, 0x5A, 0xAF, 0xD0, 0x0F, 0xE1, 0x48, 0xF4, +0x00, 0x00, 0xDA, 0x5A, 0x48, 0xA2, 0x02, 0x19, 0x22, 0x00, 0x00, 0xE1, 0xA2, 0x02, 0x20, 0x22, +0x00, 0x00, 0xE1, 0x20, 0x43, 0x91, 0x86, 0x01, 0x84, 0x03, 0xA4, 0x05, 0xF0, 0x04, 0x88, 0x88, +0x84, 0x05, 0xA5, 0x14, 0x29, 0x00, 0xF0, 0x1A, 0x85, 0x07, 0x29, 0x00, 0xF0, 0xD0, 0x05, 0xA2, +0x01, 0x03, 0x80, 0x3F, 0xA5, 0x14, 0x29, 0x00, 0x0F, 0x85, 0x14, 0xC0, 0x00, 0x00, 0xF0, 0x1C, +0xB7, 0x01, 0x29, 0xFF, 0xF0, 0xC5, 0x07, 0xF0, 0x09, 0xC0, 0x00, 0x00, 0xF0, 0x0E, 0x88, 0x88, +0x80, 0xEE, 0xE6, 0x07, 0xA4, 0x05, 0xC6, 0x09, 0xC6, 0x09, 0xD0, 0xE4, 0xA5, 0x07, 0x05, 0x14, +0x85, 0x16, 0xA4, 0x05, 0xC8, 0xC8, 0x97, 0x01, 0xA2, 0x00, 0x00, 0x29, 0xFF, 0x00, 0xD0, 0x03, +0xA2, 0x0B, 0x03, 0xDA, 0xAF, 0xD2, 0x0F, 0xE1, 0x48, 0xAF, 0xD0, 0x0F, 0xE1, 0x48, 0xA2, 0x02, +0x22, 0x22, 0x00, 0x00, 0xE1, 0xFA, 0x68, 0x68, 0x68, 0x68, 0x68, 0xAB, 0x2B, 0xE0, 0x00, 0x00, +0xD0, 0x03, 0x4C, 0xB7, 0xFF, 0xDA, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xAF, 0xD2, 0x0F, 0xE1, +0x48, 0xAF, 0xD0, 0x0F, 0xE1, 0x48, 0xA2, 0x02, 0x18, 0x22, 0x00, 0x00, 0xE1, 0x38, 0xA3, 0x01, +0xE9, 0x02, 0x00, 0x83, 0x01, 0xAF, 0xD2, 0x0F, 0xE1, 0x48, 0xAF, 0xD0, 0x0F, 0xE1, 0x48, 0xA2, +0x02, 0x19, 0x22, 0x00, 0x00, 0xE1, 0xFA, 0x4C, 0xBC, 0xFF, 0x0B, 0x8B, 0xF4, 0x00, 0x00, 0xF4, +0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x3B, 0x5B, 0xA5, 0x12, 0x29, 0xFF, 0xF0, 0x85, +0x12, 0xAF, 0xD2, 0x0F, 0xE1, 0xA8, 0x5A, 0xAF, 0xD0, 0x0F, 0xE1, 0x48, 0x5A, 0x48, 0xF4, 0x00, +0x00, 0xF4, 0x00, 0x00, 0x5A, 0x48, 0xA2, 0x02, 0x18, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x85, 0x05, +0x68, 0xA2, 0x02, 0x20, 0x22, 0x00, 0x00, 0xE1, 0x20, 0x43, 0x91, 0x86, 0x01, 0x84, 0x03, 0xA5, +0x05, 0xF0, 0x26, 0xA0, 0x00, 0x00, 0xB7, 0x01, 0x29, 0xFF, 0xF0, 0xC5, 0x12, 0xF0, 0x08, 0xC8, +0xC8, 0xC4, 0x05, 0xD0, 0xF1, 0xF0, 0x12, 0xE6, 0x07, 0xC4, 0x05, 0xF0, 0x0C, 0xC8, 0xC8, 0xB7, +0x01, 0x88, 0x88, 0x97, 0x01, 0xC8, 0xC8, 0x80, 0xF0, 0x06, 0x07, 0xA2, 0x02, 0x22, 0x22, 0x00, +0x00, 0xE1, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xAF, 0xD2, 0x0F, 0xE1, 0x48, 0xAF, 0xD0, 0x0F, +0xE1, 0x48, 0xA2, 0x02, 0x18, 0x22, 0x00, 0x00, 0xE1, 0x38, 0xA3, 0x01, 0xE5, 0x07, 0x83, 0x01, +0xAF, 0xD2, 0x0F, 0xE1, 0x48, 0xAF, 0xD0, 0x0F, 0xE1, 0x48, 0xA2, 0x02, 0x19, 0x22, 0x00, 0x00, +0xE1, 0x68, 0x68, 0x68, 0x68, 0xAB, 0x4C, 0xB8, 0xFF, 0x0B, 0x8B, 0xF4, 0x00, 0x00, 0xF4, 0x00, +0x00, 0xF4, 0x00, 0x00, 0x3B, 0x5B, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xAF, 0xD2, 0x0F, 0xE1, +0xA8, 0x5A, 0xAF, 0xD0, 0x0F, 0xE1, 0x48, 0x5A, 0x48, 0xA2, 0x02, 0x20, 0x22, 0x00, 0x00, 0xE1, +0xA2, 0x02, 0x18, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x85, 0x05, 0x68, 0x20, 0x43, 0x91, 0x86, 0x01, +0x84, 0x03, 0xA5, 0x10, 0x29, 0xFF, 0xF0, 0x85, 0x10, 0xA0, 0x00, 0x00, 0xC4, 0x05, 0xF0, 0x0D, +0xB7, 0x01, 0x29, 0xFF, 0xF0, 0xC5, 0x10, 0xF0, 0x06, 0xC8, 0xC8, 0x80, 0xEF, 0x64, 0x05, 0xAF, +0xD2, 0x0F, 0xE1, 0x48, 0xAF, 0xD0, 0x0F, 0xE1, 0x48, 0xA2, 0x02, 0x22, 0x22, 0x00, 0x00, 0xE1, +0x68, 0x68, 0x68, 0xAB, 0xC9, 0x00, 0x00, 0xF0, 0x03, 0x4C, 0xB8, 0xFF, 0xA2, 0x0B, 0x03, 0x4C, +0xBB, 0xFF, 0xA3, 0x07, 0x0A, 0xAA, 0xE0, 0x20, 0x00, 0xB0, 0x12, 0xF4, 0x95, 0x9F, 0xBF, 0xA3, +0x9F, 0xFE, 0x48, 0xE2, 0x30, 0x60, 0xC2, 0x30, 0xB0, 0x03, 0x4C, 0xB7, 0xFF, 0xA2, 0x01, 0x03, +0x4C, 0xBC, 0xFF, 0xC2, 0x9F, 0x16, 0xA0, 0x2C, 0xA0, 0x37, 0xA0, 0x42, 0xA0, 0x4D, 0xA0, 0x58, +0xA0, 0x63, 0xA0, 0x9A, 0xA0, 0x9B, 0xA0, 0x9C, 0xA0, 0xA7, 0xA0, 0x6E, 0xA0, 0x79, 0xA0, 0x84, +0xA0, 0x8F, 0xA0, 0xA9, 0x80, 0x8F, 0xD4, 0x0F, 0xE1, 0xC2, 0x30, 0xA9, 0x01, 0x00, 0x8F, 0x50, +0x01, 0xE1, 0xA9, 0x5A, 0xA5, 0x8F, 0x52, 0x01, 0xE1, 0xA9, 0x06, 0xA0, 0x48, 0xEB, 0x29, 0x00, +0xFF, 0x09, 0x5C, 0x00, 0x8F, 0x54, 0x01, 0xE1, 0x68, 0x29, 0x00, 0xFF, 0x09, 0xFE, 0x00, 0xEB, +0x8F, 0x56, 0x01, 0xE1, 0xF4, 0xE1, 0x00, 0xF4, 0x4C, 0x01, 0xA2, 0x03, 0x12, 0x22, 0x00, 0x00, +0xE1, 0xE2, 0x30, 0x18, 0x80, 0x27, 0xA9, 0x01, 0x8F, 0x50, 0x01, 0xE1, 0xAF, 0x00, 0xC0, 0x00, +0x10, 0x04, 0x5C, 0x3C, 0x00, 0xE1, 0x6B, 0xA9, 0x00, 0x8F, 0xD4, 0x0F, 0xE1, 0xC2, 0x30, 0xF4, +0xE1, 0x00, 0xF4, 0x4C, 0x01, 0xA2, 0x03, 0x13, 0x22, 0x00, 0x00, 0xE1, 0x60, 0xAF, 0x41, 0xC0, +0x00, 0x09, 0x08, 0x8F, 0x41, 0xC0, 0x00, 0x60, 0xAF, 0x41, 0xC0, 0x00, 0x29, 0xF7, 0x8F, 0x41, +0xC0, 0x00, 0x60, 0xAF, 0x41, 0xC0, 0x00, 0x09, 0x10, 0x8F, 0x41, 0xC0, 0x00, 0x60, 0xAF, 0x41, +0xC0, 0x00, 0x29, 0xEF, 0x8F, 0x41, 0xC0, 0x00, 0x60, 0xAF, 0x23, 0xC0, 0x00, 0x09, 0x04, 0x8F, +0x23, 0xC0, 0x00, 0x60, 0xAF, 0x23, 0xC0, 0x00, 0x29, 0xFB, 0x8F, 0x23, 0xC0, 0x00, 0x60, 0xAF, +0x23, 0xC0, 0x00, 0x09, 0x02, 0x8F, 0x23, 0xC0, 0x00, 0x60, 0xAF, 0x23, 0xC0, 0x00, 0x29, 0xFD, +0x8F, 0x23, 0xC0, 0x00, 0x60, 0xAF, 0x23, 0xC0, 0x00, 0x09, 0x01, 0x8F, 0x23, 0xC0, 0x00, 0x60, +0xAF, 0x23, 0xC0, 0x00, 0x29, 0xFE, 0x8F, 0x23, 0xC0, 0x00, 0x60, 0x60, 0x60, 0xAF, 0x27, 0xC0, +0x00, 0x09, 0x10, 0x8F, 0x27, 0xC0, 0x00, 0x60, 0xAF, 0x27, 0xC0, 0x00, 0x29, 0xEF, 0x8F, 0x27, +0xC0, 0x00, 0x60, 0x08, 0x78, 0xAF, 0xDC, 0x00, 0xE1, 0x83, 0x08, 0xAF, 0xDE, 0x00, 0xE1, 0x83, +0x0A, 0x28, 0x4C, 0x8B, 0xFF, 0x0B, 0x3B, 0x5B, 0xA5, 0x09, 0x3A, 0xF4, 0xD7, 0xA0, 0x48, 0xA4, +0x0B, 0xA6, 0x0D, 0xA5, 0x0F, 0x82, 0x86, 0xFB, 0x08, 0x29, 0xFF, 0x00, 0x85, 0x15, 0x86, 0x13, +0x84, 0x11, 0xA3, 0x01, 0x29, 0xC7, 0x00, 0xEB, 0x85, 0x17, 0xC2, 0x20, 0x28, 0x4C, 0xD9, 0xFF, +0x0B, 0x3B, 0x38, 0xE9, 0x14, 0x00, 0x1B, 0x5B, 0xA7, 0x27, 0xAA, 0xA0, 0x02, 0x00, 0xB7, 0x27, +0x85, 0x03, 0x86, 0x01, 0xA7, 0x23, 0x85, 0x11, 0xA5, 0x1D, 0x38, 0xE9, 0x05, 0x00, 0x18, 0x65, +0x1F, 0x85, 0x09, 0xA5, 0x21, 0x85, 0x07, 0x69, 0x00, 0x00, 0x85, 0x0B, 0xA5, 0x1F, 0x85, 0x05, +0xA9, 0x00, 0x00, 0xA8, 0x97, 0x05, 0x85, 0x13, 0xE6, 0x13, 0xA9, 0xFF, 0xFF, 0x85, 0x0D, 0x85, +0x0F, 0x20, 0x33, 0xA3, 0x90, 0x03, 0x4C, 0xC7, 0xA1, 0xA2, 0x01, 0x00, 0x20, 0x33, 0xA3, 0xB0, +0x29, 0xE0, 0x40, 0x00, 0xF0, 0x24, 0xA5, 0x11, 0xF0, 0x20, 0x38, 0xE9, 0x04, 0x00, 0x90, 0x1A, +0xA5, 0x01, 0x18, 0x69, 0x04, 0x00, 0x85, 0x01, 0xA5, 0x03, 0x69, 0x00, 0x00, 0x85, 0x03, 0xE8, +0xA5, 0x11, 0x38, 0xE9, 0x04, 0x00, 0x85, 0x11, 0x80, 0xD2, 0xCA, 0xDA, 0x20, 0x18, 0xA3, 0xF0, +0x2B, 0x68, 0x09, 0x80, 0x00, 0xA0, 0x00, 0x00, 0x97, 0x05, 0xB7, 0x01, 0xC8, 0x97, 0x05, 0xC8, +0xB7, 0x01, 0x85, 0x13, 0xC8, 0x97, 0x05, 0xA5, 0x05, 0x85, 0x0D, 0x18, 0x69, 0x05, 0x00, 0x85, +0x05, 0xA5, 0x07, 0x85, 0x0F, 0x69, 0x00, 0x00, 0x85, 0x07, 0x80, 0x25, 0x68, 0x09, 0xC0, 0x00, +0x87, 0x05, 0xA0, 0x03, 0x00, 0xB7, 0x01, 0x85, 0x13, 0xA0, 0x01, 0x00, 0x97, 0x05, 0xA5, 0x05, +0x85, 0x0D, 0x18, 0x69, 0x02, 0x00, 0x85, 0x05, 0xA5, 0x07, 0x85, 0x0F, 0x69, 0x00, 0x00, 0x85, +0x07, 0xA2, 0x04, 0x00, 0x4C, 0x1D, 0xA2, 0x20, 0x33, 0xA3, 0x90, 0x06, 0xC8, 0xC0, 0x04, 0x00, +0x90, 0xF5, 0x5A, 0xA0, 0x00, 0x00, 0x20, 0x18, 0xA3, 0x8A, 0xFA, 0xA0, 0x00, 0x00, 0x48, 0x8A, +0x38, 0xE3, 0x01, 0x90, 0x03, 0xA3, 0x01, 0xAA, 0x68, 0x8A, 0xC5, 0x11, 0x90, 0x02, 0xA6, 0x11, +0xA5, 0x13, 0xEB, 0xC5, 0x13, 0xD0, 0x59, 0xA5, 0x0F, 0xC9, 0xFF, 0xFF, 0xF0, 0x52, 0xB7, 0x0D, +0x29, 0xFF, 0x00, 0xC9, 0xC0, 0x00, 0xD0, 0x48, 0x8A, 0x18, 0x69, 0x03, 0x00, 0x09, 0x40, 0x00, +0x48, 0xB7, 0x0D, 0x29, 0x00, 0xFF, 0x97, 0x0D, 0x68, 0x17, 0x0D, 0x97, 0x0D, 0x8A, 0x18, 0x65, +0x01, 0x85, 0x01, 0xA5, 0x03, 0x69, 0x00, 0x00, 0x85, 0x03, 0xDA, 0xA5, 0x11, 0x38, 0xE3, 0x01, +0xFA, 0x85, 0x11, 0xC9, 0x00, 0x00, 0xD0, 0x03, 0x4C, 0xDE, 0xA2, 0xA5, 0x07, 0xC5, 0x0B, 0xD0, +0x09, 0xA5, 0x05, 0xC5, 0x09, 0x90, 0x03, 0x4C, 0xDE, 0xA2, 0xA0, 0x00, 0x00, 0x4C, 0x31, 0xA1, +0xE0, 0x03, 0x00, 0x90, 0x36, 0xF0, 0x05, 0xA9, 0xC0, 0x00, 0x80, 0x03, 0xA9, 0x42, 0x00, 0x48, +0xB7, 0x01, 0x29, 0xFF, 0x00, 0xEB, 0x97, 0x05, 0x68, 0x17, 0x05, 0x97, 0x05, 0x9B, 0x88, 0xB7, +0x01, 0x85, 0x13, 0xA0, 0x00, 0x00, 0xA5, 0x05, 0x85, 0x0D, 0x18, 0x69, 0x02, 0x00, 0x85, 0x05, +0xA5, 0x07, 0x85, 0x0F, 0x69, 0x00, 0x00, 0x85, 0x07, 0x80, 0x92, 0xA5, 0x0F, 0xC9, 0xFF, 0xFF, +0xF0, 0x3D, 0xB7, 0x0D, 0x29, 0xC0, 0x00, 0xC9, 0x00, 0x00, 0xD0, 0x33, 0xB7, 0x0D, 0x29, 0xFF, +0x00, 0xC9, 0x3F, 0x00, 0xF0, 0x29, 0xE0, 0x02, 0x00, 0xD0, 0x08, 0xC9, 0x3E, 0x00, 0xD0, 0x03, +0xA2, 0x01, 0x00, 0x8A, 0x18, 0x77, 0x0D, 0x97, 0x0D, 0xB7, 0x01, 0x85, 0x13, 0x97, 0x05, 0x8A, +0x18, 0x65, 0x05, 0x85, 0x05, 0xA5, 0x07, 0x69, 0x00, 0x00, 0x85, 0x07, 0x4C, 0x1D, 0xA2, 0xB7, +0x01, 0x85, 0x13, 0x29, 0xFF, 0x00, 0xEB, 0x97, 0x05, 0xA2, 0x01, 0x00, 0x80, 0x98, 0xA5, 0x05, +0x38, 0xE5, 0x1F, 0x85, 0x2B, 0xA5, 0x01, 0x38, 0xE7, 0x27, 0x48, 0xA7, 0x23, 0x38, 0xE3, 0x01, +0x87, 0x23, 0x68, 0xA5, 0x01, 0x87, 0x27, 0xA5, 0x03, 0xA0, 0x02, 0x00, 0x97, 0x27, 0xA5, 0x15, +0x5B, 0xA3, 0x17, 0x83, 0x25, 0xA3, 0x19, 0x83, 0x27, 0xA3, 0x1B, 0x83, 0x29, 0x3B, 0x18, 0x69, +0x24, 0x00, 0x1B, 0xA9, 0x00, 0x00, 0x18, 0x6B, 0xA2, 0x01, 0x00, 0xB7, 0x01, 0xEB, 0xD7, 0x01, +0xD0, 0x10, 0xE8, 0xC8, 0xD7, 0x01, 0xD0, 0x0A, 0xE8, 0xC8, 0xD7, 0x01, 0xD0, 0x04, 0xE8, 0xE0, +0x04, 0x00, 0x60, 0x5A, 0xB7, 0x01, 0xC8, 0xC8, 0xC8, 0xC8, 0xD7, 0x01, 0xD0, 0x17, 0x88, 0x88, +0xB7, 0x01, 0xC8, 0xC8, 0xC8, 0xC8, 0xD7, 0x01, 0xD0, 0x0B, 0xA5, 0x11, 0x38, 0xE9, 0x08, 0x00, +0x30, 0x03, 0x7A, 0x18, 0x60, 0x7A, 0x38, 0x60, 0x0B, 0x3B, 0x38, 0xE9, 0x14, 0x00, 0x1B, 0x5B, +0xA7, 0x21, 0xAA, 0xA0, 0x02, 0x00, 0xB7, 0x21, 0x85, 0x07, 0x86, 0x05, 0xA7, 0x1D, 0x85, 0x11, +0xA5, 0x27, 0x85, 0x01, 0x18, 0x65, 0x25, 0x85, 0x09, 0xA5, 0x29, 0x85, 0x03, 0x69, 0x00, 0x00, +0x85, 0x0B, 0xA0, 0x00, 0x00, 0xB7, 0x01, 0x85, 0x0D, 0x29, 0x3F, 0x00, 0xAA, 0xE6, 0x01, 0xD0, +0x02, 0xE6, 0x03, 0x24, 0x0C, 0x30, 0x04, 0x70, 0x0D, 0x80, 0x08, 0x70, 0x16, 0x80, 0x1C, 0x68, +0x4C, 0x81, 0xA4, 0x48, 0x80, 0x1B, 0xA5, 0x0D, 0x29, 0x00, 0xFF, 0x48, 0xEB, 0x03, 0x01, 0x83, +0x01, 0x80, 0x0E, 0xE8, 0x8A, 0x0A, 0x0A, 0xAA, 0xCA, 0x80, 0xEB, 0xE8, 0x8A, 0x0A, 0xAA, 0xCA, +0x48, 0xE4, 0x11, 0xB0, 0xDA, 0xA9, 0x01, 0x00, 0x24, 0x0C, 0x70, 0x09, 0x30, 0x04, 0x8A, 0x1A, +0x80, 0x03, 0xA9, 0x04, 0x00, 0x18, 0x65, 0x01, 0x48, 0xA5, 0x03, 0x69, 0x00, 0x00, 0xC5, 0x0B, +0x90, 0x09, 0x68, 0xC5, 0x09, 0x90, 0x05, 0xF0, 0x03, 0x80, 0xB4, 0x68, 0xE0, 0x00, 0x00, 0x30, +0x51, 0x24, 0x0C, 0x30, 0x36, 0x70, 0x1A, 0xE0, 0x00, 0x00, 0xF0, 0x09, 0xB7, 0x01, 0x97, 0x05, +0xC8, 0xC8, 0x4C, 0x3E, 0xA4, 0xE2, 0x20, 0xB7, 0x01, 0x97, 0x05, 0xC2, 0x20, 0xC8, 0x4C, 0x3E, +0xA4, 0xE0, 0x00, 0x00, 0xF0, 0x09, 0xA3, 0x01, 0x97, 0x05, 0xC8, 0xC8, 0x4C, 0x3E, 0xA4, 0xE2, +0x20, 0xA3, 0x01, 0x97, 0x05, 0xC2, 0x20, 0xC8, 0x4C, 0x3E, 0xA4, 0x70, 0xE4, 0xA7, 0x01, 0x97, +0x05, 0x5A, 0xA0, 0x02, 0x00, 0xB7, 0x01, 0x7A, 0xC8, 0xC8, 0x97, 0x05, 0xC8, 0xC8, 0xCA, 0xCA, +0x80, 0xAD, 0x68, 0xA5, 0x0D, 0x29, 0x3F, 0x00, 0x1A, 0x24, 0x0C, 0x30, 0x13, 0x50, 0x03, 0xA9, +0x01, 0x00, 0x18, 0x65, 0x01, 0x85, 0x01, 0xA5, 0x03, 0x69, 0x00, 0x00, 0x85, 0x03, 0x80, 0x07, +0x70, 0xED, 0xA9, 0x04, 0x00, 0x80, 0xEB, 0x98, 0x18, 0x65, 0x05, 0x85, 0x05, 0xA5, 0x07, 0x69, +0x00, 0x00, 0x85, 0x07, 0x98, 0x85, 0x0D, 0xA5, 0x11, 0x38, 0xE5, 0x0D, 0x85, 0x11, 0x4C, 0x82, +0xA3, 0xA5, 0x01, 0x38, 0xE5, 0x27, 0x3A, 0x85, 0x2B, 0xA5, 0x05, 0x38, 0xE7, 0x21, 0x48, 0xA7, +0x1D, 0x38, 0xE3, 0x01, 0x87, 0x1D, 0x68, 0xA5, 0x05, 0x87, 0x21, 0xA5, 0x07, 0xA0, 0x02, 0x00, +0x97, 0x21, 0xA5, 0x15, 0x5B, 0xA3, 0x17, 0x83, 0x25, 0xA3, 0x19, 0x83, 0x27, 0xA3, 0x1B, 0x83, +0x29, 0x3B, 0x18, 0x69, 0x24, 0x00, 0x1B, 0xA9, 0x00, 0x00, 0x18, 0x6B, 0x0B, 0x3B, 0x38, 0xE9, +0x14, 0x00, 0x1B, 0x5B, 0xA7, 0x31, 0x85, 0x09, 0x85, 0x01, 0xA0, 0x02, 0x00, 0xB7, 0x31, 0x85, +0x0B, 0x85, 0x03, 0xA7, 0x2D, 0x85, 0x0D, 0xC5, 0x21, 0xB0, 0x02, 0x85, 0x21, 0xC5, 0x27, 0xB0, +0x02, 0x85, 0x27, 0xA7, 0x1D, 0x85, 0x13, 0xA5, 0x29, 0x85, 0x05, 0xAA, 0xA5, 0x2B, 0x85, 0x07, +0xD0, 0x07, 0xE0, 0x00, 0x00, 0xD0, 0x02, 0x80, 0x34, 0xA5, 0x0D, 0x38, 0xE5, 0x27, 0xF0, 0x05, +0x90, 0x03, 0x4C, 0x1A, 0xA5, 0xA5, 0x0D, 0x85, 0x27, 0x20, 0x70, 0xA6, 0xF0, 0x1F, 0xA9, 0x00, +0x00, 0x87, 0x1D, 0x85, 0x35, 0xC6, 0x35, 0x4C, 0x31, 0xA6, 0xAA, 0xA5, 0x27, 0x20, 0x70, 0xA6, +0xF0, 0x0B, 0xE6, 0x01, 0xD0, 0x02, 0xE6, 0x03, 0xCA, 0x10, 0xF0, 0x80, 0xE1, 0xA5, 0x23, 0xD0, +0x17, 0xA5, 0x25, 0xD0, 0x13, 0xA5, 0x27, 0xD0, 0x02, 0x85, 0x0D, 0x20, 0x4B, 0xA6, 0xA9, 0x00, +0x00, 0x85, 0x35, 0x87, 0x1D, 0x4C, 0x1C, 0xA6, 0x20, 0x4B, 0xA6, 0xA0, 0x02, 0x00, 0xA7, 0x31, +0x18, 0x67, 0x2D, 0x85, 0x05, 0xB7, 0x31, 0x69, 0x00, 0x00, 0x85, 0x07, 0xA5, 0x0D, 0x48, 0xA5, +0x27, 0x38, 0xE5, 0x21, 0x87, 0x1D, 0xA5, 0x01, 0x18, 0x65, 0x21, 0x85, 0x0F, 0xA5, 0x03, 0x69, +0x00, 0x00, 0x85, 0x11, 0xC5, 0x07, 0xB0, 0x0D, 0xA7, 0x1D, 0x10, 0x1C, 0x18, 0x65, 0x0D, 0x85, +0x0D, 0x83, 0x01, 0x80, 0x13, 0xD0, 0x06, 0xA5, 0x05, 0xC5, 0x0F, 0xB0, 0xEB, 0xA5, 0x05, 0x38, +0xE5, 0x01, 0x85, 0x21, 0x68, 0x4C, 0xFF, 0xA5, 0xFA, 0xA5, 0x0B, 0x48, 0xA5, 0x09, 0x48, 0xA5, +0x11, 0x48, 0xA5, 0x0F, 0x48, 0xF4, 0x00, 0x00, 0xDA, 0xA2, 0x02, 0x2B, 0x22, 0x00, 0x00, 0xE1, +0xA5, 0x27, 0x38, 0xE5, 0x21, 0xF0, 0x48, 0x90, 0x46, 0x48, 0xA5, 0x09, 0x18, 0x65, 0x0D, 0x85, +0x0F, 0xAA, 0xA5, 0x0B, 0x69, 0x00, 0x00, 0x85, 0x11, 0x8A, 0x38, 0xE3, 0x01, 0x85, 0x0F, 0xA5, +0x11, 0xE9, 0x00, 0x00, 0x85, 0x11, 0xA7, 0x0F, 0x29, 0x00, 0xFF, 0x05, 0x13, 0x87, 0x0F, 0xA5, +0x13, 0xEB, 0x05, 0x13, 0xAA, 0xA3, 0x01, 0x29, 0x01, 0x00, 0xF0, 0x0B, 0x68, 0x3A, 0xF0, 0x0F, +0x48, 0xE6, 0x0F, 0xD0, 0x02, 0xE6, 0x10, 0x7A, 0x8A, 0x88, 0x88, 0x97, 0x0F, 0xD0, 0xFA, 0xA5, +0x21, 0xF0, 0x19, 0xA5, 0x25, 0x48, 0xA5, 0x23, 0x48, 0xA5, 0x03, 0x48, 0xA5, 0x01, 0x48, 0xF4, +0x00, 0x00, 0xA5, 0x21, 0x48, 0xA2, 0x02, 0x2B, 0x22, 0x00, 0x00, 0xE1, 0xA0, 0x02, 0x00, 0xA5, +0x01, 0x18, 0x65, 0x21, 0x87, 0x31, 0xA5, 0x03, 0x69, 0x00, 0x00, 0x97, 0x31, 0xA5, 0x0D, 0x87, +0x2D, 0xA5, 0x15, 0x5B, 0xA3, 0x17, 0x83, 0x2F, 0xA3, 0x19, 0x83, 0x31, 0xA3, 0x1B, 0x83, 0x33, +0x3B, 0x18, 0x69, 0x2E, 0x00, 0x1B, 0xA9, 0x00, 0x00, 0x18, 0x6B, 0xA5, 0x01, 0x18, 0x65, 0x27, +0x85, 0x0F, 0xA5, 0x03, 0x69, 0x00, 0x00, 0x85, 0x11, 0xA5, 0x0F, 0x38, 0xE5, 0x09, 0x85, 0x05, +0xA5, 0x0D, 0x38, 0xE5, 0x05, 0x85, 0x0D, 0xA5, 0x0F, 0x85, 0x09, 0xA5, 0x11, 0x85, 0x0B, 0x60, +0xA0, 0x00, 0x00, 0xDA, 0xC9, 0x00, 0x00, 0xD0, 0x05, 0xA9, 0x00, 0x00, 0x80, 0x1A, 0x48, 0x29, +0x01, 0x00, 0xF0, 0x22, 0xA7, 0x01, 0x29, 0xFF, 0x00, 0x48, 0xA7, 0x05, 0x29, 0xFF, 0x00, 0xC3, +0x01, 0xF0, 0x0A, 0x68, 0x68, 0xA9, 0x01, 0x00, 0xFA, 0xC9, 0x00, 0x00, 0x60, 0x68, 0x68, 0x3A, +0xF0, 0x11, 0x48, 0xA0, 0x01, 0x00, 0xFA, 0xB7, 0x01, 0xD7, 0x05, 0xD0, 0xE8, 0xC8, 0xC8, 0xCA, +0xCA, 0xD0, 0xF4, 0xA9, 0x00, 0x00, 0x80, 0xE0, 0x0B, 0x3B, 0x5B, 0x64, 0x09, 0xE2, 0x20, 0xAF, +0xD4, 0x0F, 0xE1, 0x04, 0x09, 0xAF, 0x41, 0xC0, 0x00, 0x48, 0x29, 0x08, 0xF0, 0x04, 0xA9, 0x40, +0x04, 0x09, 0x68, 0x29, 0x10, 0x0A, 0x04, 0x09, 0xAF, 0x23, 0xC0, 0x00, 0x48, 0x29, 0x04, 0x0A, +0x0A, 0x04, 0x09, 0xAF, 0x27, 0xC0, 0x00, 0x29, 0x10, 0x4A, 0x4A, 0x04, 0x09, 0x68, 0x29, 0x03, +0x04, 0x09, 0xC2, 0x30, 0x4C, 0x8C, 0xFF, 0xA3, 0x0D, 0x8F, 0xD0, 0x1D, 0xE1, 0xA3, 0x09, 0x8F, +0xD2, 0x1D, 0xE1, 0xA3, 0x0B, 0x8F, 0xD4, 0x1D, 0xE1, 0xA3, 0x07, 0x8F, 0xD6, 0x1D, 0xE1, 0x5C, +0xD8, 0xFF, 0xFE, 0xAF, 0xD0, 0x1D, 0xE1, 0x83, 0x0D, 0xAF, 0xD2, 0x1D, 0xE1, 0x83, 0x09, 0xAF, +0xD4, 0x1D, 0xE1, 0x83, 0x0B, 0xAF, 0xD6, 0x1D, 0xE1, 0x83, 0x07, 0x5C, 0x8B, 0xFF, 0xFE, 0xA2, +0x08, 0x00, 0xA9, 0xDD, 0xFB, 0x48, 0xCA, 0xD0, 0xFC, 0xA2, 0x03, 0x24, 0x22, 0x00, 0x00, 0xE1, +0x68, 0x68, 0x68, 0x68, 0x4C, 0x8B, 0xFF, 0x25, 0x00, 0x00, 0x00, 0xDA, 0xA7, 0xFE, 0x00, 0x06, +0xA8, 0xFE, 0x00, 0x06, 0xA8, 0xFE, 0x00, 0x09, 0xA8, 0xFE, 0x00, 0xDA, 0xA7, 0xFE, 0x00, 0x11, +0xA8, 0xFE, 0x00, 0x06, 0xA8, 0xFE, 0x00, 0x06, 0xA8, 0xFE, 0x00, 0x19, 0xA8, 0xFE, 0x00, 0x37, +0xA8, 0xFE, 0x00, 0x3C, 0xA8, 0xFE, 0x00, 0x41, 0xA8, 0xFE, 0x00, 0x5F, 0xA8, 0xFE, 0x00, 0x64, +0xA8, 0xFE, 0x00, 0x69, 0xA8, 0xFE, 0x00, 0x90, 0xA8, 0xFE, 0x00, 0x95, 0xA8, 0xFE, 0x00, 0x9A, +0xA8, 0xFE, 0x00, 0xC1, 0xA8, 0xFE, 0x00, 0xC6, 0xA8, 0xFE, 0x00, 0xCB, 0xA8, 0xFE, 0x00, 0x4B, +0xA9, 0xFE, 0x00, 0x7E, 0xA9, 0xFE, 0x00, 0xA7, 0xA9, 0xFE, 0x00, 0xAA, 0xA9, 0xFE, 0x00, 0xFC, +0xA9, 0xFE, 0x00, 0xFF, 0xA9, 0xFE, 0x00, 0x1E, 0xAA, 0xFE, 0x00, 0x21, 0xAA, 0xFE, 0x00, 0x4C, +0xAA, 0xFE, 0x00, 0x4F, 0xAA, 0xFE, 0x00, 0x7B, 0xAA, 0xFE, 0x00, 0x7E, 0xAA, 0xFE, 0x00, 0x9B, +0xAA, 0xFE, 0x00, 0xE3, 0xAA, 0xFE, 0x00, 0x2F, 0xAB, 0xFE, 0x00, 0x8B, 0xF4, 0x15, 0xE1, 0xAB, +0xAB, 0xA2, 0x0E, 0x00, 0x9E, 0xB0, 0x15, 0xCA, 0xCA, 0x10, 0xF9, 0xA9, 0xFF, 0x80, 0x8D, 0xAA, +0x15, 0x8D, 0xAC, 0x15, 0x8D, 0xAE, 0x15, 0xA9, 0x03, 0x00, 0x8D, 0xB3, 0x15, 0x8D, 0xB7, 0x15, +0x8D, 0xBB, 0x15, 0xAB, 0x4C, 0x8B, 0xFF, 0x4C, 0x8B, 0xFF, 0xA9, 0x00, 0x02, 0x83, 0x07, 0x4C, +0x8B, 0xFF, 0xA9, 0xFF, 0xFF, 0x83, 0x07, 0x4C, 0x8B, 0xFF, 0xA2, 0x00, 0x00, 0x0B, 0x3B, 0x5B, +0x8B, 0xF4, 0x15, 0xE1, 0xAB, 0xAB, 0xE2, 0x20, 0xA5, 0x09, 0x9D, 0xAB, 0x15, 0xA5, 0x0B, 0x9D, +0xAA, 0x15, 0xAB, 0xC2, 0x20, 0x4C, 0xC3, 0xFF, 0xA2, 0x02, 0x00, 0x80, 0xE0, 0xA2, 0x04, 0x00, +0x80, 0xDB, 0xA2, 0x00, 0x00, 0x0B, 0x3B, 0x5B, 0x8B, 0xF4, 0x15, 0xE1, 0xAB, 0xAB, 0xE2, 0x20, +0xBD, 0xAB, 0x15, 0x85, 0x09, 0xBD, 0xAA, 0x15, 0x85, 0x0B, 0xC2, 0x20, 0xAB, 0x4C, 0x8C, 0xFF, +0xA2, 0x02, 0x00, 0x80, 0xE0, 0xA2, 0x04, 0x00, 0x80, 0xDB, 0xA2, 0x00, 0x00, 0x0B, 0x8B, 0x3B, +0x5B, 0xF4, 0x15, 0xE1, 0xAB, 0xAB, 0x8A, 0x0A, 0x0A, 0xA8, 0xE2, 0x20, 0xA5, 0x0E, 0x9D, 0xB0, +0x15, 0xC2, 0x20, 0xA5, 0x0A, 0x99, 0xB3, 0x15, 0xA5, 0x0C, 0x99, 0xB5, 0x15, 0xAB, 0x4C, 0xCE, +0xFF, 0xA2, 0x01, 0x00, 0x80, 0xD7, 0xA2, 0x02, 0x00, 0x80, 0xD2, 0xA2, 0x00, 0x00, 0x0B, 0x8B, +0x3B, 0x5B, 0xF4, 0x15, 0xE1, 0xAB, 0xAB, 0x8A, 0x0A, 0x0A, 0xA8, 0xE2, 0x20, 0xBD, 0xB0, 0x15, +0x85, 0x0E, 0xC2, 0x20, 0xB9, 0xB3, 0x15, 0x85, 0x0A, 0xB9, 0xB5, 0x15, 0x85, 0x0C, 0xAB, 0x4C, +0x8C, 0xFF, 0xA2, 0x01, 0x00, 0x80, 0xD7, 0xA2, 0x02, 0x00, 0x80, 0xD2, 0x0B, 0x8B, 0xF4, 0x00, +0x00, 0x3B, 0x5B, 0xE2, 0x30, 0xA5, 0x0C, 0xC9, 0x03, 0x90, 0x0A, 0xC2, 0x30, 0xA2, 0x01, 0x0C, +0xAB, 0x2B, 0x4C, 0xBC, 0xFF, 0xF4, 0x15, 0xE1, 0xAB, 0xAB, 0xA8, 0xB9, 0xB0, 0x15, 0xD0, 0x29, +0x98, 0x0A, 0x0A, 0xAA, 0xC2, 0x20, 0xBD, 0xB3, 0x15, 0xEB, 0x09, 0x00, 0xC0, 0xC0, 0x00, 0xD0, +0x06, 0x8F, 0x38, 0x00, 0x00, 0x80, 0x10, 0xC0, 0x02, 0xD0, 0x08, 0x48, 0xAF, 0x36, 0x00, 0x00, +0x85, 0x01, 0x68, 0x8F, 0x36, 0x00, 0x00, 0xE2, 0x20, 0xA9, 0x00, 0x20, 0xF9, 0xAC, 0x48, 0x48, +0x29, 0x7F, 0xC2, 0x30, 0xF4, 0x00, 0x00, 0x20, 0x6F, 0xAB, 0xFA, 0x68, 0x08, 0x29, 0xC0, 0x00, +0xC9, 0x80, 0x00, 0xD0, 0x0E, 0xAF, 0x36, 0x00, 0x00, 0x8F, 0xBF, 0x15, 0xE1, 0xA5, 0x01, 0x8F, +0x36, 0x00, 0x00, 0x28, 0x68, 0xAB, 0x2B, 0xB0, 0x99, 0x4C, 0xB7, 0xFF, 0x0B, 0x8B, 0x3B, 0x5B, +0xE2, 0x30, 0xA5, 0x0C, 0xC9, 0x03, 0x90, 0x07, 0xA2, 0x01, 0xAB, 0x2B, 0x4C, 0xBC, 0xFF, 0xA8, +0xF4, 0x15, 0xE1, 0xAB, 0xAB, 0xB9, 0xB0, 0x15, 0xF0, 0xEE, 0xA9, 0x04, 0x20, 0xF9, 0xAC, 0xC2, +0x30, 0xA6, 0x0A, 0xDA, 0x20, 0x6F, 0xAB, 0xFA, 0xAB, 0x2B, 0xB0, 0xE0, 0x4C, 0xC2, 0xFF, 0x0B, +0x8B, 0x3B, 0x5B, 0xE2, 0x30, 0xA5, 0x0C, 0xC9, 0x03, 0x90, 0x07, 0xA2, 0x01, 0xAB, 0x2B, 0x4C, +0xC7, 0xFF, 0xA8, 0xA9, 0x03, 0x20, 0xF9, 0xAC, 0xC2, 0x30, 0xA6, 0x0A, 0xDA, 0x20, 0x6F, 0xAB, +0xFA, 0xAB, 0x2B, 0xB0, 0xEA, 0x4C, 0xC2, 0xFF, 0xB8, 0x50, 0x02, 0xE2, 0x40, 0xA3, 0x07, 0x20, +0xB6, 0xA9, 0x5C, 0xBC, 0xFF, 0xFE, 0x70, 0x0D, 0x2F, 0xAC, 0x15, 0xE1, 0x0F, 0xAD, 0x15, 0xE1, +0xA0, 0x01, 0x00, 0x80, 0x0B, 0x2F, 0xAE, 0x15, 0xE1, 0x0F, 0xAF, 0x15, 0xE1, 0xA0, 0x02, 0x00, +0x48, 0x5A, 0xA9, 0x02, 0x00, 0xE2, 0x30, 0x20, 0xF9, 0xAC, 0xC2, 0x30, 0x7A, 0x20, 0x6F, 0xAB, +0xE2, 0x20, 0x98, 0x4A, 0x29, 0x40, 0xB8, 0x08, 0x03, 0x01, 0x83, 0x01, 0x28, 0xC2, 0x20, 0xB0, +0x05, 0xA2, 0x00, 0x00, 0x80, 0x05, 0x8A, 0x09, 0x00, 0x0C, 0xAA, 0x68, 0x60, 0xB8, 0x50, 0x02, +0xE2, 0x40, 0x20, 0x2A, 0xAA, 0xB0, 0x14, 0xA9, 0x0D, 0x00, 0x20, 0xB6, 0xA9, 0xB0, 0x0C, 0x98, +0x29, 0x40, 0x00, 0xF0, 0x06, 0xA9, 0x0A, 0x00, 0x20, 0xB6, 0xA9, 0x5C, 0xC7, 0xFF, 0xFE, 0xB8, +0x50, 0x02, 0xE2, 0x40, 0x20, 0x2A, 0xAA, 0x4C, 0x1B, 0xAA, 0x48, 0x0B, 0x3B, 0x5B, 0xA7, 0x0D, +0x29, 0xFF, 0x00, 0x1A, 0x85, 0x03, 0xA0, 0x01, 0x00, 0xC4, 0x03, 0xF0, 0x0C, 0xB7, 0x0D, 0x5A, +0x20, 0xB6, 0xA9, 0x7A, 0xC8, 0xB0, 0x03, 0x80, 0xF0, 0x18, 0x2B, 0x68, 0x60, 0xB8, 0x50, 0x02, +0xE2, 0x40, 0x0B, 0x3B, 0x5B, 0x08, 0x18, 0xA5, 0x0D, 0x65, 0x0B, 0x85, 0x0D, 0xA5, 0x0F, 0x69, +0x00, 0x00, 0x85, 0x0F, 0x28, 0x64, 0x0B, 0xA4, 0x0B, 0xC4, 0x09, 0xF0, 0x0B, 0xB7, 0x0D, 0x20, +0xB6, 0xA9, 0xB0, 0x04, 0xE6, 0x0B, 0x80, 0xEF, 0x5C, 0xDC, 0xFF, 0xFE, 0xB8, 0x50, 0x02, 0xE2, +0x40, 0x0B, 0x3B, 0x5B, 0xA0, 0x00, 0x00, 0xB7, 0x09, 0x29, 0xFF, 0x00, 0xF0, 0x0A, 0x5A, 0x20, +0xB6, 0xA9, 0x7A, 0xC8, 0xB0, 0x02, 0x80, 0xEF, 0x5C, 0xC6, 0xFF, 0xFE, 0x0B, 0x3B, 0x5B, 0x20, +0xC1, 0xAA, 0xB0, 0x1A, 0x2F, 0xAA, 0x15, 0xE1, 0x0F, 0xAB, 0x15, 0xE1, 0x85, 0x0B, 0xA4, 0x09, +0xF0, 0x09, 0xB8, 0x48, 0xA2, 0x0C, 0x18, 0x22, 0x00, 0x00, 0xE1, 0x4C, 0xB8, 0xFF, 0x4C, 0xBB, +0xFF, 0xA0, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xE2, 0x30, 0xA9, 0x01, 0x20, 0xF9, 0xAC, 0xC2, 0x30, +0x20, 0x6F, 0xAB, 0xE2, 0x30, 0x98, 0x0A, 0x29, 0x40, 0xB8, 0x08, 0x03, 0x01, 0x83, 0x01, 0x28, +0xC2, 0x30, 0x68, 0x60, 0x0B, 0x3B, 0x5B, 0x08, 0x18, 0xA5, 0x0D, 0x65, 0x0F, 0x85, 0x0F, 0xA9, +0x00, 0x00, 0x65, 0x11, 0x85, 0x11, 0x28, 0x64, 0x0D, 0x48, 0xA5, 0x09, 0x48, 0x22, 0x2B, 0xAB, +0xFE, 0xB0, 0x24, 0x8B, 0x18, 0xE6, 0x0D, 0xA6, 0x0F, 0xE2, 0x20, 0xA5, 0x11, 0x48, 0xAB, 0xA3, +0x02, 0x9D, 0x00, 0x00, 0xC2, 0x20, 0xAB, 0x68, 0xE6, 0x0F, 0xD0, 0x02, 0xE6, 0x11, 0xA5, 0x0D, +0xC5, 0x0B, 0xD0, 0xD5, 0x4C, 0x97, 0xFF, 0x68, 0x4C, 0x9A, 0xFF, 0x22, 0x9C, 0xAA, 0xFE, 0x6B, +0x0B, 0x3B, 0x5B, 0x64, 0x13, 0x48, 0xA5, 0x09, 0x48, 0x22, 0x2B, 0xAB, 0xFE, 0x68, 0xB0, 0x2C, +0xE2, 0x20, 0xC5, 0x0B, 0xC2, 0x20, 0xF0, 0x21, 0xEB, 0xA6, 0x0F, 0xE2, 0x20, 0x8B, 0xA5, 0x11, +0x48, 0xAB, 0xEB, 0x9D, 0x00, 0x00, 0xAB, 0xC2, 0x20, 0xE6, 0x0F, 0xD0, 0x02, 0xE6, 0x11, 0xE6, +0x13, 0xF0, 0x09, 0xA5, 0x13, 0xC5, 0x0D, 0xD0, 0xCC, 0x4C, 0x97, 0xFF, 0x4C, 0x9A, 0xFF, 0x8B, +0x0B, 0xE2, 0x20, 0x48, 0xF4, 0x15, 0xE1, 0xAB, 0xAB, 0xB9, 0xB0, 0x15, 0xC9, 0x02, 0xD0, 0x52, +0xE2, 0x10, 0x98, 0x0A, 0x0A, 0xAA, 0xC2, 0x10, 0xA3, 0x01, 0x48, 0x29, 0x07, 0x83, 0x01, 0x0A, +0x18, 0x63, 0x01, 0x83, 0x01, 0xC2, 0x20, 0x29, 0xFF, 0x00, 0x18, 0x7D, 0xB3, 0x15, 0xA8, 0xA9, +0x00, 0x00, 0x7D, 0xB5, 0x15, 0xAA, 0x4B, 0xF4, 0xC5, 0xAB, 0xE2, 0x20, 0x8A, 0x48, 0x5A, 0xC2, +0x20, 0x38, 0xA3, 0x01, 0xE9, 0x01, 0x00, 0x83, 0x01, 0xE2, 0x20, 0xA3, 0x03, 0xE9, 0x00, 0x83, +0x03, 0xC2, 0x20, 0xA3, 0x0E, 0x6B, 0x83, 0x08, 0xE2, 0x20, 0x68, 0x68, 0xA8, 0xC2, 0x20, 0x2B, +0xAB, 0x60, 0xAF, 0x68, 0xC0, 0x00, 0x48, 0xA9, 0x08, 0x8F, 0x68, 0xC0, 0x00, 0xF4, 0x00, 0x00, +0x3B, 0x5B, 0xA9, 0x00, 0xEB, 0x98, 0x0A, 0x0A, 0xA8, 0xA5, 0x04, 0x29, 0x0F, 0x0A, 0xAA, 0x24, +0x04, 0xA5, 0x04, 0x3A, 0xC2, 0x30, 0xD0, 0x05, 0xA9, 0x0C, 0xFD, 0x80, 0x29, 0xE2, 0x20, 0x3A, +0xC2, 0x20, 0xD0, 0x05, 0xA9, 0xED, 0xFD, 0x80, 0x1D, 0xE2, 0x20, 0x29, 0x0F, 0xC2, 0x20, 0xF0, +0xF3, 0xB9, 0xB3, 0x15, 0xEB, 0x09, 0x00, 0xC0, 0xE2, 0x20, 0x4B, 0xAB, 0x1D, 0xD9, 0xAC, 0x50, +0x05, 0xAA, 0xBF, 0x00, 0x00, 0x00, 0xC2, 0x20, 0xF4, 0xA4, 0xAC, 0x3A, 0x48, 0x1A, 0xEB, 0xAA, +0x0A, 0x0A, 0x0A, 0x0A, 0xA8, 0xA3, 0x01, 0x1A, 0x29, 0x00, 0xFF, 0xDA, 0x5A, 0xAA, 0x50, 0x2A, +0xE2, 0x20, 0xBF, 0x05, 0x00, 0x00, 0xEB, 0xBF, 0x07, 0x00, 0x00, 0xC2, 0x20, 0xC9, 0x18, 0x38, +0xF0, 0x36, 0xC2, 0x30, 0x68, 0x68, 0x68, 0x68, 0x68, 0xE2, 0x30, 0x68, 0x8F, 0x68, 0xC0, 0x00, +0x68, 0x2B, 0xAB, 0xC2, 0x30, 0xA9, 0x01, 0x0C, 0x38, 0x60, 0xE2, 0x20, 0xA5, 0x04, 0x29, 0x0F, +0x3A, 0xF0, 0x15, 0x3A, 0xF0, 0x12, 0xA0, 0x0A, 0x00, 0xBF, 0x00, 0x00, 0x00, 0xF0, 0xD3, 0xDF, +0x00, 0x00, 0x00, 0xD0, 0xCD, 0x88, 0x10, 0xF7, 0xE2, 0x20, 0x7A, 0xFA, 0x24, 0x04, 0xC2, 0x20, +0x10, 0x0E, 0xAF, 0x36, 0x00, 0x00, 0x85, 0x01, 0xAF, 0xBF, 0x15, 0xE1, 0x8F, 0x36, 0x00, 0x00, +0xA5, 0x0A, 0x82, 0xB9, 0xEF, 0x85, 0x0A, 0x08, 0xE2, 0x20, 0xA5, 0x04, 0xC9, 0x4B, 0xF0, 0x03, +0x28, 0x18, 0x08, 0xE2, 0x20, 0x24, 0x04, 0xC2, 0x20, 0x10, 0x0E, 0xAF, 0x36, 0x00, 0x00, 0x8F, +0xBF, 0x15, 0xE1, 0xA5, 0x01, 0x8F, 0x36, 0x00, 0x00, 0x28, 0x68, 0xE2, 0x20, 0x68, 0x8F, 0x68, +0xC0, 0x00, 0x68, 0xA8, 0xC2, 0x30, 0x2B, 0xAB, 0x60, 0x00, 0xC0, 0x0C, 0xFD, 0xED, 0xFD, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x0E, 0xC0, 0x0F, 0xC0, 0x10, +0xC0, 0x12, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8B, 0xF4, 0x15, 0xE1, 0xAB, 0xAB, 0x48, +0xB9, 0xB0, 0x15, 0xF0, 0x07, 0x3A, 0xD0, 0x04, 0x68, 0x09, 0x48, 0x48, 0xC0, 0x02, 0xD0, 0x04, +0x68, 0x09, 0x80, 0x48, 0x68, 0xAB, 0x60, 0x08, 0x78, 0xF4, 0x12, 0x00, 0xF4, 0xFE, 0x00, 0xF4, +0xB9, 0xAD, 0xA2, 0x03, 0x10, 0x22, 0x00, 0x00, 0xE1, 0xA9, 0xFF, 0x00, 0x8F, 0x67, 0x1D, 0xE0, +0xA9, 0xF7, 0xB7, 0x8F, 0x8A, 0x1D, 0xE0, 0xA9, 0x00, 0x00, 0x8F, 0x7C, 0x1D, 0xE0, 0xA9, 0x08, +0x00, 0x8F, 0x88, 0x1D, 0xE0, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x50, 0xA2, 0x03, 0x20, 0x22, 0x00, +0x00, 0xE1, 0x68, 0x8F, 0x82, 0x1D, 0xE0, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, +0xF4, 0x20, 0x00, 0xAF, 0x82, 0x1D, 0xE0, 0x48, 0xF4, 0x08, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, +0x00, 0xA2, 0x02, 0x09, 0x22, 0x00, 0x00, 0xE1, 0xB0, 0x2F, 0x68, 0x8F, 0x84, 0x1D, 0xE0, 0x68, +0x8F, 0x86, 0x1D, 0xE0, 0xF4, 0xFE, 0x00, 0xF4, 0x29, 0xB8, 0x22, 0xAB, 0xAD, 0xFE, 0xF4, 0xFE, +0x00, 0xF4, 0x29, 0xB8, 0xF4, 0xFE, 0x00, 0xF4, 0xC1, 0xB4, 0xA2, 0x05, 0x13, 0x22, 0x00, 0x00, +0xE1, 0x22, 0x6E, 0xC0, 0xFF, 0x28, 0x4C, 0x8B, 0xFF, 0x00, 0x11, 0x22, 0x57, 0xB8, 0xFE, 0x6B, +0xE2, 0x30, 0x22, 0xB9, 0xAD, 0xFE, 0xC2, 0x30, 0x6B, 0x08, 0xAF, 0x67, 0x1D, 0xE0, 0x1A, 0xF0, +0x03, 0x82, 0x83, 0x00, 0xC2, 0x30, 0xAF, 0xFF, 0x00, 0xE1, 0xF0, 0x25, 0xF4, 0x00, 0x00, 0xF4, +0xFE, 0x00, 0xF4, 0xB0, 0xAD, 0xA2, 0x07, 0x09, 0x22, 0x00, 0x00, 0xE1, 0x68, 0xE2, 0x30, 0xAF, +0x67, 0x1D, 0xE0, 0x3A, 0xC9, 0xFF, 0xF0, 0x02, 0xA9, 0xFF, 0x8F, 0x67, 0x1D, 0xE0, 0xAB, 0x18, +0x6B, 0x3B, 0x8F, 0x9C, 0x1D, 0xE0, 0x8B, 0xA2, 0x00, 0x01, 0xA0, 0x00, 0x03, 0xA9, 0xFF, 0x00, +0x54, 0xE0, 0x00, 0xAB, 0xA9, 0xFB, 0x01, 0x1B, 0xA2, 0x05, 0x0B, 0x22, 0x00, 0x00, 0xE1, 0xA2, +0x05, 0x11, 0x22, 0x00, 0x00, 0xE1, 0xA2, 0x05, 0x0C, 0x22, 0x00, 0x00, 0xE1, 0xA9, 0xFF, 0x00, +0x8F, 0x67, 0x1D, 0xE0, 0xE2, 0x30, 0x8B, 0x68, 0x8F, 0x00, 0x1D, 0xE0, 0xC2, 0x30, 0xA2, 0x00, +0x03, 0xA0, 0x00, 0x01, 0xA9, 0xFF, 0x00, 0x54, 0x00, 0xE0, 0xAF, 0x9C, 0x1D, 0xE0, 0x1B, 0xE2, +0x30, 0xAF, 0x00, 0x1D, 0xE0, 0x48, 0xAB, 0x28, 0x18, 0x6B, 0x4C, 0x8B, 0xFF, 0x4C, 0x8B, 0xFF, +0xA9, 0x00, 0x02, 0x83, 0x07, 0x4C, 0x8B, 0xFF, 0xE2, 0x30, 0xA9, 0xFF, 0x8F, 0x67, 0x1D, 0xE0, +0xC2, 0x30, 0x4C, 0x8B, 0xFF, 0xA9, 0xFF, 0xFF, 0x83, 0x07, 0x4C, 0x8B, 0xFF, 0x1C, 0x00, 0x00, +0x00, 0x16, 0xAD, 0xFE, 0x00, 0x49, 0xAE, 0xFE, 0x00, 0x4C, 0xAE, 0xFE, 0x00, 0x4F, 0xAE, 0xFE, +0x00, 0x57, 0xAE, 0xFE, 0x00, 0x64, 0xAE, 0xFE, 0x00, 0x8A, 0xFF, 0xFE, 0x00, 0x8A, 0xFF, 0xFE, +0x00, 0xDC, 0xAE, 0xFE, 0x00, 0x17, 0xAF, 0xFE, 0x00, 0xCA, 0xAF, 0xFE, 0x00, 0x46, 0xB2, 0xFE, +0x00, 0x8A, 0xFF, 0xFE, 0x00, 0x8A, 0xFF, 0xFE, 0x00, 0x56, 0xB8, 0xFE, 0x00, 0x8A, 0xFF, 0xFE, +0x00, 0xE3, 0xB4, 0xFE, 0x00, 0x8A, 0xFF, 0xFE, 0x00, 0x39, 0xBA, 0xFE, 0x00, 0x96, 0xBA, 0xFE, +0x00, 0x8A, 0xFF, 0xFE, 0x00, 0x8A, 0xFF, 0xFE, 0x00, 0x8A, 0xFF, 0xFE, 0x00, 0x8A, 0xFF, 0xFE, +0x00, 0x8A, 0xFF, 0xFE, 0x00, 0xBD, 0xB3, 0xFE, 0x00, 0x8A, 0xFF, 0xFE, 0x00, 0x8B, 0x20, 0xE5, +0xAE, 0xAB, 0x4C, 0x8B, 0xFF, 0xC2, 0x30, 0xA2, 0x00, 0x04, 0xA0, 0x00, 0x0C, 0xA9, 0xFF, 0x03, +0x54, 0xE0, 0x00, 0xA2, 0x00, 0x04, 0xA0, 0x00, 0x10, 0xA9, 0xFF, 0x03, 0x54, 0xE0, 0x01, 0xA2, +0x00, 0x04, 0xA0, 0x00, 0x14, 0xA9, 0xFF, 0x03, 0x54, 0xE0, 0xE0, 0xA2, 0x00, 0x04, 0xA0, 0x00, +0x18, 0xA9, 0xFF, 0x03, 0x54, 0xE0, 0xE1, 0x60, 0x8B, 0x20, 0x20, 0xAF, 0xAB, 0x4C, 0x8B, 0xFF, +0xC2, 0x30, 0xA2, 0x07, 0x00, 0xEC, 0x6A, 0x1D, 0xF0, 0x08, 0xE0, 0x03, 0x00, 0xF0, 0x03, 0x20, +0x66, 0xAF, 0xCA, 0xD0, 0xF0, 0xA2, 0x00, 0x0C, 0xA0, 0x00, 0x04, 0xA9, 0xFF, 0x03, 0x54, 0x00, +0xE0, 0xA2, 0x00, 0x10, 0xA0, 0x00, 0x04, 0xA9, 0xFF, 0x03, 0x54, 0x01, 0xE0, 0xA2, 0x00, 0x14, +0xA0, 0x00, 0x04, 0xA9, 0xFF, 0x03, 0x54, 0xE0, 0xE0, 0xA2, 0x00, 0x18, 0xA0, 0x00, 0x04, 0xA9, +0xFF, 0x03, 0x54, 0xE1, 0xE0, 0x60, 0xE2, 0x30, 0xBF, 0x78, 0x04, 0x00, 0x9F, 0x78, 0x14, 0xE0, +0x9F, 0x78, 0x0C, 0xE0, 0xBF, 0xF8, 0x04, 0x00, 0x9F, 0xF8, 0x14, 0xE0, 0x9F, 0xF8, 0x0C, 0xE0, +0xBF, 0x78, 0x05, 0x00, 0x9F, 0x78, 0x15, 0xE0, 0x9F, 0x78, 0x0D, 0xE0, 0xBF, 0xF8, 0x05, 0x00, +0x9F, 0xF8, 0x15, 0xE0, 0x9F, 0xF8, 0x0D, 0xE0, 0xBF, 0x78, 0x06, 0x00, 0x9F, 0x78, 0x16, 0xE0, +0x9F, 0x78, 0x0E, 0xE0, 0xBF, 0xF8, 0x06, 0x00, 0x9F, 0xF8, 0x16, 0xE0, 0x9F, 0xF8, 0x0E, 0xE0, +0xBF, 0x78, 0x07, 0x00, 0x9F, 0x78, 0x17, 0xE0, 0x9F, 0x78, 0x0F, 0xE0, 0xBF, 0xF8, 0x07, 0x00, +0x9F, 0xF8, 0x17, 0xE0, 0x9F, 0xF8, 0x0F, 0xE0, 0xC2, 0x30, 0x60, 0xE2, 0x30, 0x8B, 0x68, 0x8F, +0x00, 0x1D, 0xE0, 0xA9, 0xE0, 0x48, 0xAB, 0xA9, 0x00, 0x8D, 0x02, 0x1D, 0xAD, 0x68, 0xC0, 0x8D, +0x03, 0x1D, 0xA9, 0x0C, 0x8D, 0x68, 0xC0, 0x8B, 0xAD, 0x02, 0x1D, 0xC2, 0x30, 0x10, 0x03, 0x4C, +0x5F, 0xB1, 0xF0, 0x08, 0xA2, 0xC3, 0x00, 0xA0, 0x20, 0x1D, 0x80, 0x06, 0xA2, 0xC3, 0x00, 0xA0, +0x39, 0x1D, 0xA9, 0x0C, 0x00, 0x54, 0xE0, 0xE1, 0xE2, 0x30, 0xAC, 0x02, 0x1D, 0xAF, 0xD7, 0x00, +0xE1, 0x99, 0x61, 0x1D, 0xC2, 0x30, 0x98, 0xF0, 0x08, 0xA2, 0x08, 0x01, 0xA0, 0x2D, 0x1D, 0x80, +0x06, 0xA2, 0x08, 0x01, 0xA0, 0x4C, 0x1D, 0xA9, 0x13, 0x00, 0x54, 0xE0, 0xE1, 0xAB, 0x0B, 0x68, +0x8D, 0x63, 0x1D, 0xA9, 0x00, 0x00, 0x48, 0x2B, 0xE2, 0x30, 0xAD, 0x18, 0xC0, 0x8D, 0x04, 0x1D, +0xAD, 0x29, 0xC0, 0x8D, 0x18, 0x1D, 0xC2, 0x30, 0xAD, 0x1A, 0xC0, 0x8D, 0x1A, 0x1D, 0xAD, 0x1C, +0xC0, 0x8D, 0x1C, 0x1D, 0xAD, 0x1E, 0xC0, 0x8D, 0x1E, 0x1D, 0x20, 0xE5, 0xAE, 0xA2, 0x00, 0x00, +0xA0, 0x00, 0x1C, 0xA9, 0xFF, 0x00, 0x54, 0xE0, 0x00, 0x20, 0x61, 0xB1, 0xAF, 0x34, 0x01, 0xE1, +0x8D, 0x16, 0x1D, 0xE2, 0x30, 0x38, 0x22, 0x94, 0x00, 0xE1, 0xAD, 0x17, 0xC0, 0x8D, 0x65, 0x1D, +0xAD, 0x29, 0xC0, 0x29, 0x7F, 0x8D, 0x29, 0xC0, 0x8D, 0x51, 0xC0, 0x8D, 0x52, 0xC0, 0x8D, 0x54, +0xC0, 0xA9, 0xFF, 0x8F, 0x32, 0x00, 0x00, 0xC2, 0x30, 0x48, 0x48, 0x48, 0xA2, 0x0C, 0x13, 0x22, +0x00, 0x00, 0xE1, 0x68, 0x8D, 0xA2, 0x1D, 0x68, 0x8D, 0xA4, 0x1D, 0x68, 0x8D, 0xA6, 0x1D, 0x48, +0x48, 0xA2, 0x0C, 0x0D, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x8D, 0x9E, 0x1D, 0x68, 0x8D, 0xA0, 0x1D, +0x48, 0x48, 0x48, 0xA2, 0x0C, 0x12, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x8D, 0xB4, 0x1D, 0x68, 0x8D, +0xB6, 0x1D, 0x68, 0x8D, 0xB8, 0x1D, 0x48, 0x48, 0xA2, 0x0C, 0x0C, 0x22, 0x00, 0x00, 0xE1, 0x68, +0x8D, 0xBA, 0x1D, 0x68, 0x8D, 0xBC, 0x1D, 0xF4, 0xFF, 0x00, 0xF4, 0x00, 0x00, 0xA2, 0x0C, 0x0A, +0x22, 0x00, 0x00, 0xE1, 0x90, 0x02, 0x00, 0x01, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x03, +0x00, 0xA2, 0x0C, 0x10, 0x22, 0x00, 0x00, 0xE1, 0x90, 0x02, 0x00, 0x02, 0xE2, 0x30, 0xA2, 0x00, +0xAD, 0x05, 0xC3, 0xC9, 0x38, 0xD0, 0x0C, 0xAD, 0x07, 0xC3, 0xC9, 0x18, 0xD0, 0x05, 0xE8, 0xD0, +0xEF, 0x80, 0x05, 0x8D, 0x0A, 0xC0, 0x80, 0xE8, 0xC2, 0x30, 0xF4, 0x01, 0x00, 0xA2, 0x0C, 0x15, +0x22, 0x00, 0x00, 0xE1, 0x90, 0x02, 0x00, 0x03, 0xF4, 0x00, 0x00, 0xF4, 0x19, 0x00, 0xA2, 0x03, +0x0C, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x8D, 0x66, 0x1D, 0xD0, 0x0A, 0xF4, 0x11, 0x00, 0xA2, 0x0C, +0x18, 0x22, 0x00, 0x00, 0xE1, 0xA9, 0x00, 0x00, 0x48, 0xAB, 0xAB, 0x58, 0x4C, 0x8B, 0xFF, 0x00, +0xFF, 0xA9, 0x00, 0xC7, 0x8D, 0x6C, 0x1D, 0xAD, 0x6C, 0x1D, 0x48, 0xE2, 0x30, 0xA0, 0x0C, 0xB3, +0x01, 0xC9, 0x20, 0xD0, 0x08, 0xA0, 0xFB, 0xB3, 0x01, 0xC9, 0xD6, 0xF0, 0x1B, 0xC2, 0x30, 0x68, +0xAD, 0x6C, 0x1D, 0xEB, 0x3A, 0xC9, 0xC0, 0x00, 0xF0, 0x06, 0xEB, 0x8D, 0x6C, 0x1D, 0x80, 0xD7, +0xA9, 0xFF, 0xFF, 0x8D, 0x68, 0x1D, 0x80, 0x6B, 0xC2, 0x30, 0x68, 0xEB, 0x29, 0x0F, 0x00, 0x8D, +0x6A, 0x1D, 0x18, 0x69, 0xF8, 0x07, 0xAA, 0xE2, 0x20, 0xB5, 0x00, 0xF0, 0x20, 0x8D, 0x68, 0x1D, +0xE2, 0x30, 0xAF, 0xE0, 0x00, 0xE1, 0x48, 0xAD, 0x6A, 0x1D, 0x8F, 0xE0, 0x00, 0xE1, 0xC2, 0x30, +0xA9, 0x00, 0x00, 0x48, 0xA2, 0x03, 0x19, 0x22, 0x00, 0x00, 0xE1, 0x80, 0x0A, 0xC2, 0x30, 0xA9, +0x00, 0x00, 0x8D, 0x68, 0x1D, 0x80, 0x2C, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, +0xF4, 0x00, 0x00, 0xA2, 0x03, 0x1D, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x8D, 0x0B, 0x1D, 0x68, 0x8D, +0x07, 0x1D, 0x68, 0x8D, 0x09, 0x1D, 0x68, 0x8D, 0x05, 0x1D, 0xE2, 0x30, 0x68, 0x8F, 0xE0, 0x00, +0xE1, 0xC2, 0x30, 0x60, 0xAD, 0x68, 0x1D, 0x30, 0x3D, 0xF0, 0x3B, 0xE2, 0x30, 0xAF, 0xE0, 0x00, +0xE1, 0x48, 0xAD, 0x6A, 0x1D, 0x8F, 0xE0, 0x00, 0xE1, 0xC2, 0x30, 0xAD, 0x68, 0x1D, 0x48, 0xA2, +0x03, 0x19, 0x22, 0x00, 0x00, 0xE1, 0xAD, 0x05, 0x1D, 0x48, 0xAD, 0x09, 0x1D, 0x48, 0xAD, 0x07, +0x1D, 0x48, 0xAD, 0x0B, 0x1D, 0x48, 0xA2, 0x03, 0x1C, 0x22, 0x00, 0x00, 0xE1, 0xE2, 0x30, 0x68, +0x8F, 0xE0, 0x00, 0xE1, 0xC2, 0x30, 0x60, 0x78, 0xE2, 0x30, 0xA9, 0xE0, 0x48, 0xAB, 0xAD, 0x04, +0x1D, 0x30, 0x05, 0x8D, 0x00, 0xC0, 0x80, 0x03, 0x8D, 0x01, 0xC0, 0xAD, 0x1F, 0x1D, 0x30, 0x05, +0x8D, 0x0C, 0xC0, 0x80, 0x03, 0x8D, 0x0D, 0xC0, 0x8B, 0xAD, 0x02, 0x1D, 0xC2, 0x30, 0xF0, 0x08, +0xA2, 0x20, 0x1D, 0xA0, 0xC3, 0x00, 0x80, 0x06, 0xA2, 0x39, 0x1D, 0xA0, 0xC3, 0x00, 0xA9, 0x0C, +0x00, 0x54, 0xE1, 0xE0, 0xE2, 0x30, 0xAB, 0xAC, 0x02, 0x1D, 0xB9, 0x61, 0x1D, 0x8F, 0xD7, 0x00, +0xE1, 0x8B, 0xC2, 0x30, 0x98, 0xF0, 0x08, 0xA2, 0x2D, 0x1D, 0xA0, 0x08, 0x01, 0x80, 0x06, 0xA2, +0x4C, 0x1D, 0xA0, 0x08, 0x01, 0xA9, 0x13, 0x00, 0x54, 0xE1, 0xE0, 0x20, 0x20, 0xAF, 0xA2, 0x00, +0x1C, 0xA0, 0x00, 0x00, 0xA9, 0xFF, 0x00, 0x54, 0x00, 0xE0, 0xAB, 0x20, 0x04, 0xB2, 0xAD, 0x16, +0x1D, 0x8F, 0x34, 0x01, 0xE1, 0xAD, 0x63, 0x1D, 0x48, 0x2B, 0xE2, 0x30, 0xAD, 0x18, 0x1D, 0x29, +0xC0, 0x0D, 0x29, 0xC0, 0x8D, 0x29, 0xC0, 0xAD, 0x1E, 0x1D, 0x10, 0x05, 0x8D, 0x0F, 0xC0, 0x80, +0x03, 0x8D, 0x0E, 0xC0, 0xAD, 0x1A, 0x1D, 0x10, 0x05, 0x8D, 0x51, 0xC0, 0x80, 0x03, 0x8D, 0x50, +0xC0, 0xAD, 0x1B, 0x1D, 0x10, 0x05, 0x8D, 0x53, 0xC0, 0x80, 0x03, 0x8D, 0x52, 0xC0, 0xAD, 0x1C, +0x1D, 0x10, 0x05, 0x8D, 0x55, 0xC0, 0x80, 0x03, 0x8D, 0x54, 0xC0, 0xAD, 0x1D, 0x1D, 0x10, 0x05, +0x8D, 0x57, 0xC0, 0x80, 0x03, 0x8D, 0x56, 0xC0, 0xAD, 0x65, 0x1D, 0x10, 0x05, 0x8D, 0x0B, 0xC0, +0x80, 0x4B, 0x8D, 0x0A, 0xC0, 0xC2, 0x30, 0xAD, 0xA6, 0x1D, 0x48, 0xAD, 0xA4, 0x1D, 0x48, 0xAD, +0xA2, 0x1D, 0x48, 0xA2, 0x0C, 0x10, 0x22, 0x00, 0x00, 0xE1, 0xAD, 0xA0, 0x1D, 0x48, 0xAD, 0x9E, +0x1D, 0x48, 0xA2, 0x0C, 0x0A, 0x22, 0x00, 0x00, 0xE1, 0xAD, 0xB8, 0x1D, 0x48, 0xAD, 0xB6, 0x1D, +0x48, 0xAD, 0xB4, 0x1D, 0x48, 0xA2, 0x0C, 0x0F, 0x22, 0x00, 0x00, 0xE1, 0xAD, 0xBC, 0x1D, 0x48, +0xAD, 0xBA, 0x1D, 0x48, 0xA2, 0x0C, 0x09, 0x22, 0x00, 0x00, 0xE1, 0xE2, 0x30, 0xAD, 0x03, 0x1D, +0x8D, 0x68, 0xC0, 0xC2, 0x30, 0xF4, 0x00, 0x00, 0xF4, 0x20, 0x00, 0xA2, 0x03, 0x0C, 0x22, 0x00, +0x00, 0xE1, 0x68, 0xE2, 0x30, 0xD0, 0x0C, 0xAF, 0x1A, 0x01, 0xE1, 0x29, 0x7F, 0x8F, 0x1A, 0x01, +0xE1, 0x80, 0x0A, 0xAF, 0x1A, 0x01, 0xE1, 0x09, 0x80, 0x8F, 0x1A, 0x01, 0xE1, 0xC2, 0x30, 0xF4, +0x00, 0x00, 0xF4, 0x1E, 0x00, 0xA2, 0x03, 0x0C, 0x22, 0x00, 0x00, 0xE1, 0x68, 0xE2, 0x30, 0x8F, +0xCA, 0x00, 0xE1, 0xAF, 0x00, 0x1D, 0xE0, 0x48, 0xAB, 0xC2, 0x30, 0x4C, 0x8B, 0xFF, 0x08, 0x78, +0xA3, 0x08, 0xC9, 0x0A, 0x00, 0xD0, 0x1F, 0xA9, 0x04, 0xB8, 0x8F, 0x8A, 0x1D, 0xE0, 0xE2, 0x30, +0x22, 0xB9, 0xAD, 0xFE, 0xC2, 0x30, 0xA9, 0xF7, 0xB7, 0x8F, 0x8A, 0x1D, 0xE0, 0xA9, 0x01, 0x00, +0x83, 0x18, 0x28, 0x4C, 0xE9, 0xFF, 0xA9, 0x00, 0x00, 0x83, 0x18, 0x28, 0x4C, 0xE9, 0xFF, 0xA0, +0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, +0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, +0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xA0, 0x00, 0x5A, 0xA0, 0x41, 0xA0, 0xC4, 0xE5, 0xF3, 0xEB, +0xA0, 0xC1, 0xE3, 0xE3, 0xE5, 0xF3, 0xF3, 0xEF, 0xF2, 0xE9, 0xE5, 0xF3, 0xA0, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5F, +0x00, 0x5A, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, +0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, +0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x5F, 0x00, 0x5A, 0xFF, 0x24, 0xA0, 0x5F, 0x00, +0x5A, 0xA0, 0xD3, 0xE5, 0xEC, 0xE5, 0xE3, 0xF4, 0xBA, 0xA0, 0x4A, 0xA0, 0x4B, 0xA0, 0xA0, 0xA0, +0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xCF, 0xF0, +0xE5, 0xEE, 0xBA, 0xA0, 0x4D, 0xA0, 0xA0, 0x5F, 0x00, 0xA0, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, +0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, +0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, +0x00, 0x18, 0xB4, 0xFE, 0x00, 0xD1, 0xB4, 0xFE, 0x00, 0xDF, 0xB4, 0xFE, 0x00, 0x70, 0xB4, 0xFE, +0x00, 0xC3, 0xEF, 0xEE, 0xF4, 0xF2, 0xEF, 0xEC, 0xA0, 0xD0, 0xE1, 0xEE, 0xE5, 0xEC, 0x00, 0xD1, +0xF5, 0xE9, 0xF4, 0x00, 0x8B, 0xF4, 0xE0, 0xE0, 0xAB, 0xAB, 0xF4, 0xFF, 0x00, 0xF4, 0x00, 0x00, +0xA2, 0x0C, 0x0A, 0x22, 0x00, 0x00, 0xE1, 0x90, 0x02, 0x00, 0x01, 0xF4, 0x00, 0x00, 0xF4, 0x00, +0x00, 0xF4, 0x03, 0x00, 0xA2, 0x0C, 0x10, 0x22, 0x00, 0x00, 0xE1, 0x90, 0x02, 0x00, 0x02, 0xE2, +0x30, 0xA2, 0x00, 0xAD, 0x05, 0xC3, 0xC9, 0x38, 0xD0, 0x0C, 0xAD, 0x07, 0xC3, 0xC9, 0x18, 0xD0, +0x05, 0xE8, 0xD0, 0xEF, 0x80, 0x05, 0x8D, 0x0A, 0xC0, 0x80, 0xE8, 0xA9, 0xFF, 0x8F, 0x32, 0x00, +0x00, 0xC2, 0x30, 0xF4, 0x01, 0x00, 0xA2, 0x0C, 0x15, 0x22, 0x00, 0x00, 0xE1, 0x90, 0x02, 0x00, +0x03, 0xF4, 0x00, 0x00, 0xF4, 0x19, 0x00, 0xA2, 0x03, 0x0C, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x8D, +0x66, 0x1D, 0x20, 0x97, 0xB7, 0xA9, 0x0C, 0x00, 0x20, 0x75, 0xB7, 0xA9, 0x1B, 0x00, 0x20, 0x75, +0xB7, 0xAD, 0x66, 0x1D, 0xD0, 0x18, 0xA9, 0x11, 0x00, 0x20, 0x75, 0xB7, 0xA9, 0x00, 0x00, 0x8D, +0x72, 0x1D, 0x8D, 0x76, 0x1D, 0x8D, 0x7E, 0x1D, 0xA9, 0x27, 0x00, 0x8D, 0x80, 0x1D, 0x20, 0x4A, +0xB7, 0xF4, 0xFE, 0x00, 0xF4, 0xEF, 0xB3, 0xA2, 0x0C, 0x20, 0x22, 0x00, 0x00, 0xE1, 0x20, 0x6E, +0xB7, 0xAD, 0xAC, 0x1D, 0x85, 0x3C, 0xAD, 0xAE, 0x1D, 0x85, 0x3E, 0xA0, 0x02, 0x00, 0xB7, 0x3C, +0x48, 0xA7, 0x3C, 0x48, 0xA2, 0x0C, 0x20, 0x22, 0x00, 0x00, 0xE1, 0x20, 0x6E, 0xB7, 0xF4, 0xFE, +0x00, 0xF4, 0x41, 0xB4, 0xA2, 0x0C, 0x20, 0x22, 0x00, 0x00, 0xE1, 0xAD, 0x7E, 0x1D, 0x8D, 0x72, +0x1D, 0x20, 0x6E, 0xB7, 0xF4, 0x13, 0x00, 0xFA, 0xCA, 0x30, 0x29, 0xDA, 0xF4, 0x5A, 0x00, 0xA2, +0x0C, 0x18, 0x22, 0x00, 0x00, 0xE1, 0xAD, 0x80, 0x1D, 0x8D, 0x72, 0x1D, 0x20, 0x4A, 0xB7, 0xF4, +0x5F, 0x00, 0xA2, 0x0C, 0x18, 0x22, 0x00, 0x00, 0xE1, 0xAD, 0x7E, 0x1D, 0x8D, 0x72, 0x1D, 0x20, +0x6E, 0xB7, 0x80, 0xD3, 0xAD, 0xAC, 0x1D, 0x85, 0x3C, 0xAD, 0xAE, 0x1D, 0x85, 0x3E, 0xA0, 0x0E, +0x00, 0xB7, 0x3C, 0x48, 0x88, 0x88, 0xB7, 0x3C, 0x48, 0xA2, 0x0C, 0x20, 0x22, 0x00, 0x00, 0xE1, +0x20, 0x6E, 0xB7, 0xF4, 0xFE, 0x00, 0xF4, 0x99, 0xB4, 0xA2, 0x0C, 0x20, 0x22, 0x00, 0x00, 0xE1, +0xA9, 0x18, 0x00, 0x20, 0x75, 0xB7, 0xA9, 0xFF, 0x00, 0x8D, 0xB0, 0x1D, 0x18, 0xAD, 0x76, 0x1D, +0x69, 0x02, 0x00, 0x8D, 0x72, 0x1D, 0x18, 0xAD, 0x78, 0x1D, 0x69, 0x04, 0x00, 0x8D, 0x74, 0x1D, +0x8D, 0x6E, 0x1D, 0x20, 0x4A, 0xB7, 0xAD, 0x7C, 0x1D, 0x18, 0x69, 0x05, 0x00, 0xCD, 0x7A, 0x1D, +0x90, 0x03, 0xAD, 0x7A, 0x1D, 0x8D, 0x70, 0x1D, 0xF4, 0xFF, 0x00, 0xF4, 0x80, 0x00, 0xA2, 0x0C, +0x0A, 0x22, 0x00, 0x00, 0xE1, 0x20, 0x11, 0xB9, 0x62, 0x05, 0x00, 0xAD, 0x8A, 0x1D, 0x3A, 0x48, +0x60, 0x29, 0x7F, 0x00, 0xC9, 0x0D, 0x00, 0xD0, 0x03, 0x4C, 0xCB, 0xB7, 0xC9, 0x0B, 0x00, 0xF0, +0x60, 0xC9, 0x0A, 0x00, 0xF0, 0x11, 0xC9, 0x1B, 0x00, 0xD0, 0x03, 0x82, 0x8E, 0x00, 0xA9, 0x07, +0x00, 0x20, 0x75, 0xB7, 0x82, 0xD1, 0xFF, 0xC2, 0x30, 0x20, 0x4A, 0xB7, 0xAC, 0xB0, 0x1D, 0xA9, +0x00, 0x00, 0x20, 0x62, 0xB9, 0xAD, 0xB0, 0x1D, 0xC9, 0xFF, 0x00, 0xD0, 0x0E, 0xAD, 0x6E, 0x1D, +0x8D, 0x74, 0x1D, 0x20, 0x4A, 0xB7, 0xA9, 0x00, 0x00, 0x80, 0x19, 0x1A, 0xCD, 0x7C, 0x1D, 0x90, +0x05, 0xF0, 0x03, 0xA9, 0xFF, 0x00, 0x48, 0xAD, 0x74, 0x1D, 0x1A, 0x8D, 0x74, 0x1D, 0x20, 0x4A, +0xB7, 0x68, 0x80, 0x00, 0x8D, 0xB0, 0x1D, 0xA8, 0xA9, 0xFF, 0x00, 0x20, 0x62, 0xB9, 0x82, 0x87, +0xFF, 0xC2, 0x30, 0x20, 0x4A, 0xB7, 0xAC, 0xB0, 0x1D, 0xA9, 0x00, 0x00, 0x20, 0x62, 0xB9, 0xAD, +0xB0, 0x1D, 0xD0, 0x0E, 0xAD, 0x70, 0x1D, 0x8D, 0x74, 0x1D, 0x20, 0x4A, 0xB7, 0xA9, 0xFF, 0x00, +0x80, 0xD2, 0xAD, 0x74, 0x1D, 0x3A, 0x8D, 0x74, 0x1D, 0x20, 0x4A, 0xB7, 0xAD, 0xB0, 0x1D, 0xC9, +0xFF, 0x00, 0xD0, 0x05, 0xAD, 0x7C, 0x1D, 0x80, 0xBB, 0x3A, 0x80, 0xB8, 0x20, 0x4A, 0xB7, 0xAC, +0xB0, 0x1D, 0xA9, 0x00, 0x00, 0x20, 0x62, 0xB9, 0xAD, 0x70, 0x1D, 0x8D, 0x74, 0x1D, 0x20, 0x4A, +0xB7, 0xA9, 0xFF, 0x00, 0x8D, 0xB0, 0x1D, 0xA8, 0x20, 0x62, 0xB9, 0x82, 0x2A, 0xFF, 0xE2, 0x30, +0xA9, 0xFF, 0x85, 0x32, 0xC2, 0x30, 0xAB, 0x4C, 0x8B, 0xFF, 0xE2, 0x30, 0xAD, 0x72, 0x1D, 0x85, +0x24, 0xAD, 0x74, 0x1D, 0x85, 0x25, 0xC2, 0x30, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0xF4, +0x22, 0xFC, 0xA2, 0x03, 0x24, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x68, 0x68, 0x68, 0x60, 0xEE, 0x74, +0x1D, 0x20, 0x4A, 0xB7, 0x60, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, +0x00, 0x48, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0xED, 0xFD, 0xA2, 0x03, 0x24, 0x22, 0x00, +0x00, 0xE1, 0x68, 0x68, 0x68, 0x68, 0x60, 0xA9, 0x04, 0x00, 0x8D, 0x6E, 0x1D, 0xA9, 0x12, 0x00, +0x8D, 0x70, 0x1D, 0xA9, 0x14, 0x00, 0x8D, 0x72, 0x1D, 0x8D, 0x7E, 0x1D, 0xA9, 0x3B, 0x00, 0x8D, +0x80, 0x1D, 0xA9, 0x00, 0x00, 0x8D, 0x74, 0x1D, 0xA9, 0x14, 0x00, 0x8D, 0x76, 0x1D, 0xA9, 0x00, +0x00, 0x8D, 0x78, 0x1D, 0xA9, 0x12, 0x00, 0x8D, 0x7A, 0x1D, 0x60, 0xC2, 0x30, 0xAD, 0xB0, 0x1D, +0xF0, 0x10, 0xC9, 0xFF, 0x00, 0xF0, 0x1D, 0xE2, 0x30, 0xFA, 0xC2, 0x30, 0x20, 0xF8, 0xB9, 0x4C, +0xE4, 0xB4, 0xE2, 0x30, 0x68, 0x8B, 0xA9, 0x00, 0x48, 0xAB, 0x22, 0x90, 0x00, 0xE1, 0xAB, 0xC2, +0x30, 0x4C, 0xE4, 0xB4, 0x4C, 0x3E, 0xB7, 0xE2, 0x30, 0xAD, 0x00, 0xC0, 0x10, 0xF9, 0x8D, 0x10, +0xC0, 0xC2, 0x30, 0x60, 0xF4, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xF4, 0xE0, 0x00, 0xF4, 0x8C, 0x1D, +0xA2, 0x06, 0x0A, 0x22, 0x00, 0x00, 0xE1, 0x68, 0xF0, 0xEA, 0xAD, 0x8C, 0x1D, 0xC9, 0x03, 0x00, +0xD0, 0xE2, 0xAD, 0x8E, 0x1D, 0x29, 0xFF, 0x00, 0x60, 0x2D, 0xB8, 0xFE, 0x00, 0x16, 0xC1, 0xEC, +0xF4, 0xE5, 0xF2, 0xEE, 0xE1, 0xF4, 0xE5, 0xA0, 0xC4, 0xE9, 0xF3, 0xF0, 0xEC, 0xE1, 0xF9, 0xA0, +0xCD, 0xEF, 0xE4, 0xE5, 0x48, 0xB8, 0xFE, 0x00, 0xE2, 0x30, 0x8B, 0xA9, 0x00, 0x48, 0xAB, 0x22, +0xA4, 0x00, 0xE1, 0xAB, 0xC2, 0x30, 0x6B, 0xAF, 0x7C, 0x1D, 0xE0, 0xC9, 0x0D, 0x00, 0xB0, 0x55, +0x8B, 0xF4, 0xE0, 0xE0, 0xAB, 0xAB, 0xAD, 0x88, 0x1D, 0x4A, 0x4A, 0xD0, 0x03, 0x20, 0xC7, 0xB8, +0xAD, 0x86, 0x1D, 0x48, 0xAD, 0x84, 0x1D, 0x48, 0xA2, 0x02, 0x20, 0x22, 0x00, 0x00, 0xE1, 0xAD, +0x84, 0x1D, 0x85, 0x3C, 0xAD, 0x86, 0x1D, 0x85, 0x3E, 0x20, 0xBB, 0xB8, 0xAD, 0x7C, 0x1D, 0x0A, +0x0A, 0xA8, 0xA3, 0x08, 0x97, 0x40, 0xA3, 0x0A, 0xC8, 0xC8, 0x97, 0x40, 0xEE, 0x7C, 0x1D, 0xAD, +0x86, 0x1D, 0x48, 0xAD, 0x84, 0x1D, 0x48, 0xA2, 0x02, 0x22, 0x22, 0x00, 0x00, 0xE1, 0xCE, 0x88, +0x1D, 0xAB, 0x4C, 0xC2, 0xFF, 0xA9, 0x01, 0x05, 0x4C, 0xC7, 0xFF, 0xA0, 0x02, 0x00, 0xA7, 0x3C, +0x85, 0x40, 0xB7, 0x3C, 0x85, 0x42, 0x60, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xAD, 0x86, 0x1D, +0x48, 0xAD, 0x84, 0x1D, 0x48, 0xA2, 0x02, 0x18, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x85, 0x3C, 0x68, +0x85, 0x3E, 0xA5, 0x3C, 0x18, 0x69, 0x20, 0x00, 0x85, 0x3C, 0xA5, 0x3E, 0x69, 0x00, 0x00, 0x85, +0x3E, 0xA5, 0x3E, 0x48, 0xA5, 0x3C, 0x48, 0xAD, 0x86, 0x1D, 0x48, 0xAD, 0x84, 0x1D, 0x48, 0xA2, +0x02, 0x19, 0x22, 0x00, 0x00, 0xE1, 0xAD, 0x88, 0x1D, 0x18, 0x69, 0x08, 0x00, 0x8D, 0x88, 0x1D, +0x60, 0x20, 0xD7, 0xB9, 0xAD, 0x72, 0x1D, 0x48, 0x18, 0x69, 0x02, 0x00, 0x8D, 0x72, 0x1D, 0x48, +0x20, 0x4A, 0xB7, 0xA9, 0x00, 0x00, 0xA8, 0x5A, 0x20, 0x62, 0xB9, 0xAE, 0x7C, 0x1D, 0xF0, 0x19, +0xDA, 0x20, 0x6E, 0xB7, 0xA3, 0x03, 0x1A, 0x83, 0x03, 0xA8, 0xA9, 0x00, 0x00, 0x20, 0x62, 0xB9, +0xA3, 0x01, 0x3A, 0x83, 0x01, 0xD0, 0xEA, 0xAA, 0x7A, 0x7A, 0xAD, 0x70, 0x1D, 0x8D, 0x74, 0x1D, +0x68, 0x8D, 0x72, 0x1D, 0x20, 0x4A, 0xB7, 0xA9, 0xFF, 0x00, 0xA0, 0xFF, 0x00, 0x20, 0x62, 0xB9, +0x68, 0x60, 0xC9, 0x00, 0x00, 0xD0, 0x0A, 0xE2, 0x30, 0xA9, 0xFF, 0x85, 0x32, 0xC2, 0x30, 0x80, +0x08, 0xE2, 0x30, 0xA9, 0x7F, 0x85, 0x32, 0xC2, 0x30, 0xC0, 0x00, 0x00, 0xD0, 0x07, 0xA0, 0x06, +0x00, 0x20, 0xBB, 0xB9, 0x60, 0xC0, 0xFF, 0x00, 0xD0, 0x07, 0xA0, 0x0A, 0x00, 0x20, 0xBB, 0xB9, +0x60, 0xAD, 0xA8, 0x1D, 0x85, 0x40, 0xAD, 0xAA, 0x1D, 0x85, 0x42, 0x98, 0x3A, 0x0A, 0x0A, 0xA8, +0xB7, 0x40, 0x85, 0x3C, 0xC8, 0xC8, 0xB7, 0x40, 0x85, 0x3E, 0x20, 0xBB, 0xB8, 0xA5, 0x42, 0x48, +0xA5, 0x40, 0x48, 0xA2, 0x0C, 0x1A, 0x22, 0x00, 0x00, 0xE1, 0x60, 0x5A, 0xAD, 0xAC, 0x1D, 0x85, +0x3C, 0xAD, 0xAE, 0x1D, 0x85, 0x3E, 0x7A, 0xB7, 0x3C, 0x48, 0x88, 0x88, 0xB7, 0x3C, 0x48, 0xA2, +0x0C, 0x20, 0x22, 0x00, 0x00, 0xE1, 0x60, 0xAD, 0x86, 0x1D, 0x48, 0x85, 0x3E, 0xAD, 0x84, 0x1D, +0x48, 0x85, 0x3C, 0xA2, 0x02, 0x20, 0x22, 0x00, 0x00, 0xE1, 0x20, 0xBB, 0xB8, 0xA5, 0x40, 0x8D, +0xA8, 0x1D, 0xA5, 0x42, 0x8D, 0xAA, 0x1D, 0x60, 0x78, 0xA8, 0xE2, 0x30, 0xA9, 0xFF, 0x85, 0x32, +0xC2, 0x30, 0xAD, 0xA8, 0x1D, 0x85, 0x40, 0xAD, 0xAA, 0x1D, 0x85, 0x42, 0x98, 0x3A, 0x0A, 0x0A, +0xA8, 0xB7, 0x40, 0x85, 0x3C, 0xC8, 0xC8, 0xB7, 0x40, 0x85, 0x3E, 0x20, 0xBB, 0xB8, 0xA7, 0x40, +0x29, 0xFF, 0x00, 0xA8, 0xC8, 0x4B, 0x62, 0x0F, 0x00, 0xB7, 0x40, 0xAA, 0xC8, 0xC8, 0xB7, 0x40, +0xE2, 0x20, 0x48, 0xC2, 0x30, 0xCA, 0xDA, 0x58, 0x6B, 0x60, 0x8B, 0xA5, 0x3C, 0x48, 0xA5, 0x3E, +0x48, 0xA5, 0x40, 0x48, 0xA5, 0x42, 0x48, 0xA9, 0xE0, 0xE0, 0x48, 0xAB, 0xAB, 0xA3, 0x10, 0x8D, +0xAC, 0x1D, 0xA3, 0x12, 0x8D, 0xAE, 0x1D, 0xAD, 0x86, 0x1D, 0x85, 0x3E, 0x48, 0xAD, 0x84, 0x1D, +0x85, 0x3C, 0x48, 0xA2, 0x02, 0x20, 0x22, 0x00, 0x00, 0xE1, 0x20, 0xBB, 0xB8, 0xA0, 0x02, 0x00, +0xA3, 0x14, 0x87, 0x40, 0xA3, 0x16, 0x97, 0x40, 0xAD, 0x86, 0x1D, 0x48, 0xAD, 0x84, 0x1D, 0x48, +0xA2, 0x02, 0x22, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x85, 0x42, 0x68, 0x85, 0x40, 0x68, 0x85, 0x3E, +0x68, 0x85, 0x3C, 0xAB, 0x4C, 0xD8, 0xFF, 0xAF, 0xAC, 0x1D, 0xE0, 0x83, 0x07, 0xAF, 0xAE, 0x1D, +0xE0, 0x83, 0x09, 0x4C, 0x8B, 0xFF, 0x00, 0x80, 0x00, 0x10, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, +0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, +0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00, 0x02, 0x00, 0x10, 0x00, 0x04, +0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x32, 0x00, 0x00, 0x00, 0x28, 0x00, +0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0A, 0x00, +0x00, 0x00, 0x10, 0x1A, 0x00, 0x00, 0x00, 0x6A, 0xBB, 0xFE, 0x00, 0x6D, 0xBB, 0xFE, 0x00, 0xDE, +0xBD, 0xFE, 0x00, 0xA0, 0xBE, 0xFE, 0x00, 0xA8, 0xBE, 0xFE, 0x00, 0xB6, 0xBE, 0xFE, 0x00, 0x8A, +0xFF, 0xFE, 0x00, 0x8A, 0xFF, 0xFE, 0x00, 0xBB, 0xBE, 0xFE, 0x00, 0xCF, 0xBE, 0xFE, 0x00, 0x34, +0xC0, 0xFE, 0x00, 0x41, 0xC0, 0xFE, 0x00, 0x80, 0xC0, 0xFE, 0x00, 0xC0, 0xC0, 0xFE, 0x00, 0x19, +0xC1, 0xFE, 0x00, 0x6B, 0xC1, 0xFE, 0x00, 0x9A, 0xC1, 0xFE, 0x00, 0xC7, 0xC1, 0xFE, 0x00, 0xF4, +0xC1, 0xFE, 0x00, 0x06, 0xC2, 0xFE, 0x00, 0x91, 0xC2, 0xFE, 0x00, 0xEE, 0xC2, 0xFE, 0x00, 0xB1, +0xC3, 0xFE, 0x00, 0xBE, 0xC3, 0xFE, 0x00, 0xCF, 0xC3, 0xFE, 0x00, 0x4C, 0x8B, 0xFF, 0xC9, 0x00, +0x00, 0xF0, 0x06, 0xA2, 0x01, 0x06, 0x4C, 0xB1, 0xFF, 0x0B, 0xA3, 0x15, 0x5B, 0xA2, 0xFE, 0x00, +0x74, 0x00, 0xCA, 0xCA, 0x10, 0xFA, 0xA9, 0x00, 0x00, 0xA2, 0x0A, 0x00, 0x9F, 0xE1, 0x00, 0xE1, +0xCA, 0xCA, 0x10, 0xF8, 0xA3, 0x09, 0x85, 0x60, 0xA3, 0x13, 0xD0, 0x03, 0xA9, 0x14, 0x00, 0xC9, +0x38, 0x0E, 0x90, 0x06, 0xA2, 0x06, 0x06, 0x4C, 0xB0, 0xFF, 0x1A, 0x85, 0x2C, 0x0A, 0x0A, 0x0A, +0x18, 0x65, 0x2C, 0x0A, 0xA6, 0x60, 0xA0, 0x04, 0x00, 0x20, 0x24, 0x11, 0x90, 0x06, 0xA2, 0x07, +0x06, 0x4C, 0xB0, 0xFF, 0x86, 0x24, 0x84, 0x26, 0x20, 0x94, 0xC4, 0xA6, 0x2C, 0xA0, 0x02, 0x00, +0xA9, 0xFF, 0xFF, 0x97, 0x28, 0x98, 0x18, 0x69, 0x12, 0x00, 0xA8, 0xCA, 0xD0, 0xF2, 0xA9, 0xEE, +0xEE, 0xA0, 0x02, 0x00, 0x97, 0x28, 0x20, 0xC0, 0xC4, 0xA9, 0xFF, 0xFF, 0x85, 0x22, 0x08, 0x08, +0x68, 0x85, 0x5E, 0x78, 0x48, 0xA2, 0x03, 0x29, 0x22, 0x00, 0x00, 0xE1, 0x68, 0xEB, 0x2A, 0x26, +0x58, 0x2A, 0x26, 0x5A, 0x48, 0x48, 0xF4, 0x0D, 0x00, 0x22, 0x1F, 0x11, 0xFE, 0x68, 0x85, 0x42, +0x68, 0x85, 0x44, 0x48, 0x48, 0xF4, 0x0F, 0x00, 0x22, 0x1F, 0x11, 0xFE, 0x68, 0x85, 0x46, 0x68, +0x85, 0x48, 0x48, 0x48, 0xF4, 0x12, 0x00, 0x22, 0x1F, 0x11, 0xFE, 0x68, 0x85, 0x4A, 0x68, 0x85, +0x4C, 0x48, 0x48, 0xF4, 0x13, 0x00, 0x22, 0x1F, 0x11, 0xFE, 0x68, 0x85, 0x4E, 0x68, 0x85, 0x50, +0x48, 0x48, 0xF4, 0x0C, 0x00, 0x22, 0x1F, 0x11, 0xFE, 0x68, 0x85, 0x52, 0x68, 0x85, 0x54, 0xF4, +0x0D, 0x00, 0xF4, 0xFE, 0x00, 0xF4, 0xC8, 0xC5, 0x22, 0x1A, 0x11, 0xFE, 0xF4, 0x0F, 0x00, 0xF4, +0xFE, 0x00, 0xF4, 0x8D, 0xC5, 0x22, 0x1A, 0x11, 0xFE, 0xF4, 0x12, 0x00, 0xF4, 0xFE, 0x00, 0xF4, +0x86, 0xC6, 0x22, 0x1A, 0x11, 0xFE, 0xF4, 0x13, 0x00, 0xF4, 0xFE, 0x00, 0xF4, 0xA0, 0xC6, 0x22, +0x1A, 0x11, 0xFE, 0xF4, 0x0C, 0x00, 0xF4, 0xFE, 0x00, 0xF4, 0x74, 0x98, 0x22, 0x1A, 0x11, 0xFE, +0x48, 0xF4, 0x2B, 0x00, 0xA2, 0x03, 0x0C, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x85, 0x56, 0xD0, 0x13, +0xF4, 0x01, 0x00, 0xF4, 0xFE, 0x00, 0xF4, 0x02, 0xBB, 0xF4, 0x04, 0x00, 0xA2, 0x09, 0x09, 0x22, +0x00, 0x00, 0xE1, 0xF4, 0x02, 0x00, 0xA2, 0x03, 0x23, 0x22, 0x00, 0x00, 0xE1, 0xF4, 0x00, 0x00, +0xA2, 0x03, 0x23, 0x22, 0x00, 0x00, 0xE1, 0xF4, 0x0A, 0x00, 0xA2, 0x03, 0x23, 0x22, 0x00, 0x00, +0xE1, 0xAF, 0xDF, 0x00, 0xE1, 0x30, 0x0E, 0xEB, 0x29, 0xFF, 0x00, 0xAA, 0xBF, 0xF8, 0x07, 0x00, +0x29, 0x0F, 0x00, 0x85, 0x5C, 0xF4, 0x00, 0x00, 0xA2, 0x03, 0x18, 0x22, 0x00, 0x00, 0xE1, 0xB0, +0x69, 0xE6, 0x3E, 0xAF, 0xE0, 0x00, 0xE1, 0x29, 0xFF, 0x00, 0xC9, 0x04, 0x00, 0xD0, 0x19, 0xE2, +0x30, 0xAF, 0x2D, 0xC0, 0x00, 0xC2, 0x30, 0x29, 0x10, 0x00, 0xD0, 0x0C, 0xF4, 0x07, 0x00, 0xA2, +0x03, 0x19, 0x22, 0x00, 0x00, 0xE1, 0x80, 0x42, 0xF4, 0x01, 0x00, 0xA2, 0x03, 0x19, 0x22, 0x00, +0x00, 0xE1, 0xA9, 0x01, 0x00, 0x85, 0x40, 0x8F, 0xF1, 0x00, 0xE1, 0xA9, 0x5A, 0xA5, 0x8F, 0xF3, +0x00, 0xE1, 0xA9, 0xB7, 0xC6, 0x48, 0xEB, 0x29, 0x00, 0xFF, 0x09, 0x5C, 0x00, 0x8F, 0xF5, 0x00, +0xE1, 0x68, 0x29, 0x00, 0xFF, 0x09, 0xFE, 0x00, 0xEB, 0x8F, 0xF7, 0x00, 0xE1, 0xF4, 0xE1, 0x00, +0xF4, 0xED, 0x00, 0xA2, 0x03, 0x12, 0x22, 0x00, 0x00, 0xE1, 0xA3, 0x11, 0x48, 0x8F, 0xE9, 0x00, +0xE1, 0xA3, 0x11, 0x38, 0xE9, 0x01, 0x00, 0x48, 0xA3, 0x11, 0x48, 0x8F, 0xEB, 0x00, 0xE1, 0xA3, +0x11, 0x38, 0xE9, 0x01, 0x00, 0x48, 0xA2, 0x03, 0x1C, 0x22, 0x00, 0x00, 0xE1, 0xA3, 0x11, 0x48, +0xA3, 0x11, 0x38, 0xE9, 0x01, 0x00, 0x48, 0xA3, 0x11, 0x48, 0xA3, 0x11, 0x38, 0xE9, 0x01, 0x00, +0x48, 0xA2, 0x03, 0x2A, 0x22, 0x00, 0x00, 0xE1, 0xA2, 0x03, 0x1A, 0x22, 0x00, 0x00, 0xE1, 0xB0, +0x19, 0x48, 0x48, 0x48, 0xA2, 0x03, 0x17, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x8F, 0xE7, 0x00, 0xE1, +0x68, 0x8F, 0xEB, 0x00, 0xE1, 0x68, 0x8F, 0xE9, 0x00, 0xE1, 0xAF, 0xE9, 0x00, 0xE1, 0x48, 0xAF, +0xEB, 0x00, 0xE1, 0x48, 0x22, 0x60, 0x00, 0xE1, 0xA3, 0x15, 0xF4, 0x00, 0x00, 0xF4, 0x06, 0x00, +0xF4, 0x00, 0x00, 0x48, 0xA2, 0x01, 0x0D, 0x22, 0x00, 0x00, 0xE1, 0x58, 0x4C, 0xAD, 0xFF, 0x0B, +0x5B, 0xD0, 0x06, 0xA2, 0x03, 0x06, 0x4C, 0x8F, 0xFF, 0x78, 0xF4, 0xE1, 0x00, 0xF4, 0xED, 0x00, +0xA2, 0x03, 0x13, 0x22, 0x00, 0x00, 0xE1, 0xA5, 0x56, 0xD0, 0x13, 0xF4, 0x01, 0x00, 0xF4, 0xFE, +0x00, 0xF4, 0x02, 0xBB, 0xF4, 0x05, 0x00, 0xA2, 0x09, 0x09, 0x22, 0x00, 0x00, 0xE1, 0xA5, 0x5A, +0xD0, 0x0A, 0xF4, 0x03, 0x00, 0xA2, 0x03, 0x23, 0x22, 0x00, 0x00, 0xE1, 0xA5, 0x58, 0xD0, 0x0A, +0xF4, 0x01, 0x00, 0xA2, 0x03, 0x23, 0x22, 0x00, 0x00, 0xE1, 0xA5, 0x3E, 0xF0, 0x0A, 0xA5, 0x5C, +0x48, 0xA2, 0x03, 0x19, 0x22, 0x00, 0x00, 0xE1, 0xF4, 0x0D, 0x00, 0xA5, 0x44, 0x48, 0xA5, 0x42, +0x48, 0x22, 0x1A, 0x11, 0xFE, 0xF4, 0x0F, 0x00, 0xA5, 0x48, 0x48, 0xA5, 0x46, 0x48, 0x22, 0x1A, +0x11, 0xFE, 0xF4, 0x12, 0x00, 0xA5, 0x4C, 0x48, 0xA5, 0x4A, 0x48, 0x22, 0x1A, 0x11, 0xFE, 0xF4, +0x13, 0x00, 0xA5, 0x50, 0x48, 0xA5, 0x4E, 0x48, 0x22, 0x1A, 0x11, 0xFE, 0xF4, 0x0C, 0x00, 0xA5, +0x54, 0x48, 0xA5, 0x52, 0x48, 0x22, 0x1A, 0x11, 0xFE, 0xA5, 0x26, 0x48, 0xA5, 0x24, 0x48, 0xA2, +0x02, 0x10, 0x22, 0x00, 0x00, 0xE1, 0xF4, 0x00, 0x00, 0xF4, 0x06, 0x00, 0xF4, 0x00, 0x00, 0xF4, +0x00, 0x00, 0xA2, 0x01, 0x0D, 0x22, 0x00, 0x00, 0xE1, 0xA5, 0x5E, 0x48, 0x28, 0x28, 0x4C, 0x8C, +0xFF, 0xA9, 0x00, 0x02, 0x83, 0x07, 0x4C, 0x8B, 0xFF, 0xC9, 0x00, 0x00, 0xF0, 0x06, 0xA2, 0x02, +0x06, 0x4C, 0x90, 0xFF, 0x4C, 0x8B, 0xFF, 0x83, 0x07, 0x4C, 0x8B, 0xFF, 0x0B, 0x5B, 0xD0, 0x06, +0xA2, 0x03, 0x06, 0x4C, 0x8F, 0xFF, 0x83, 0x09, 0xA9, 0x01, 0x00, 0x85, 0x38, 0x4C, 0x8C, 0xFF, +0x0B, 0x5B, 0xD0, 0x06, 0xA2, 0x03, 0x06, 0x4C, 0xD1, 0xFF, 0xE6, 0x3A, 0xA3, 0x09, 0x85, 0x10, +0xA3, 0x0B, 0x85, 0x12, 0x20, 0x3A, 0xBF, 0x20, 0x41, 0xBF, 0xD0, 0x24, 0x20, 0xAB, 0xBF, 0xD0, +0x1F, 0x20, 0xCC, 0xBF, 0xD0, 0x1A, 0x20, 0xEC, 0xBF, 0xD0, 0x15, 0xAF, 0xE1, 0x00, 0xE1, 0xF0, +0x32, 0xF4, 0x00, 0x00, 0x18, 0x7B, 0x69, 0x00, 0x00, 0x48, 0x22, 0x23, 0xC0, 0xFE, 0x80, 0x1B, +0xA5, 0x3A, 0xF0, 0x1C, 0xF4, 0x00, 0x00, 0xA0, 0x0E, 0x00, 0xB7, 0x10, 0x48, 0x88, 0x88, 0x10, +0xF9, 0xA2, 0x05, 0x1A, 0x22, 0x00, 0x00, 0xE1, 0x68, 0xF0, 0x05, 0xA9, 0x00, 0x00, 0x80, 0x03, +0xA9, 0x01, 0x00, 0x83, 0x0F, 0x64, 0x3A, 0x4C, 0xCE, 0xFF, 0xA9, 0x00, 0x00, 0x20, 0x09, 0xC0, +0x60, 0xA3, 0x0F, 0x29, 0x00, 0x01, 0xF0, 0x51, 0xA5, 0x82, 0xD0, 0x4E, 0xA5, 0x80, 0xF0, 0x49, +0xA0, 0x02, 0x00, 0xA5, 0x84, 0x97, 0x10, 0xC8, 0xC8, 0xA5, 0x86, 0x97, 0x10, 0xA9, 0x01, 0x00, +0x85, 0x20, 0xA5, 0x88, 0xF0, 0x14, 0xA5, 0x84, 0xF0, 0x10, 0xA0, 0x04, 0x00, 0xB7, 0x84, 0x45, +0x8C, 0x10, 0x07, 0xA5, 0x20, 0x09, 0x02, 0x00, 0x85, 0x20, 0xA0, 0x0E, 0x00, 0xB7, 0x10, 0x05, +0x20, 0x97, 0x10, 0xA5, 0x3A, 0xF0, 0x0A, 0xA5, 0x82, 0xF0, 0x04, 0x64, 0x82, 0x80, 0x02, 0x64, +0x80, 0xA9, 0x08, 0x00, 0x87, 0x10, 0xA9, 0x01, 0x00, 0x60, 0x64, 0x20, 0xA0, 0x02, 0x00, 0xA5, +0x88, 0x97, 0x10, 0xC8, 0xC8, 0xA5, 0x8A, 0x97, 0x10, 0x80, 0xB7, 0xA3, 0x0F, 0x29, 0x00, 0x02, +0xF0, 0x19, 0xA5, 0x36, 0xF0, 0x15, 0xA3, 0x0F, 0x20, 0xEE, 0xBF, 0xD0, 0x0E, 0xA5, 0x3A, 0xF0, +0x02, 0x64, 0x36, 0xA9, 0x09, 0x00, 0x87, 0x10, 0xA9, 0x01, 0x00, 0x60, 0xE6, 0x62, 0xA3, 0x0F, +0x20, 0x09, 0xC0, 0x64, 0x62, 0xAF, 0xE1, 0x00, 0xE1, 0xF0, 0x0E, 0xA5, 0x10, 0x85, 0x14, 0xA5, +0x12, 0x85, 0x16, 0xA2, 0x04, 0x00, 0x20, 0x7A, 0xC5, 0xA7, 0x10, 0x60, 0xA3, 0x0F, 0x29, 0x40, +0x00, 0xF0, 0x15, 0xA5, 0x38, 0xF0, 0x11, 0xF4, 0x00, 0x00, 0xA5, 0x12, 0x48, 0xA5, 0x10, 0x48, +0xA2, 0x0E, 0x0A, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x60, 0xF4, 0x00, 0x00, 0x48, 0xA5, 0x12, 0x48, +0xA5, 0x10, 0x48, 0xA5, 0x3A, 0xF0, 0x06, 0x22, 0x29, 0xC0, 0xFE, 0x80, 0x04, 0x22, 0x2F, 0xC0, +0xFE, 0x68, 0x60, 0x7B, 0x22, 0x42, 0xC0, 0xFE, 0x6B, 0x7B, 0x22, 0xEF, 0xC2, 0xFE, 0x6B, 0x7B, +0x22, 0xB2, 0xC3, 0xFE, 0x6B, 0x0B, 0x5B, 0xD0, 0x06, 0xA2, 0x03, 0x06, 0x4C, 0xD1, 0xFF, 0x4C, +0xDC, 0xBE, 0x0B, 0x5B, 0xD0, 0x06, 0xA2, 0x03, 0x06, 0x4C, 0xC6, 0xFF, 0x08, 0x78, 0xA3, 0x0A, +0x85, 0x1C, 0xA3, 0x0C, 0x85, 0x1E, 0xA0, 0x00, 0x00, 0x20, 0x2B, 0xC5, 0xAF, 0xE1, 0x00, 0xE1, +0xF0, 0x0E, 0xA5, 0x1C, 0x85, 0x14, 0xA5, 0x1E, 0x85, 0x16, 0xA2, 0x01, 0x00, 0x20, 0x7A, 0xC5, +0xA5, 0x1E, 0x48, 0xA5, 0x1C, 0x48, 0xA2, 0x04, 0x85, 0x22, 0x00, 0x00, 0xE1, 0x28, 0x4C, 0xC3, +0xFF, 0x0B, 0x5B, 0xD0, 0x06, 0xA2, 0x03, 0x06, 0x4C, 0xBB, 0xFF, 0xA3, 0x09, 0xC9, 0x02, 0x00, +0x90, 0x06, 0xA2, 0x05, 0x06, 0x4C, 0xBB, 0xFF, 0x0A, 0xAA, 0xAF, 0xE7, 0x00, 0xE1, 0x3F, 0xA6, +0xBA, 0xFE, 0xF0, 0x03, 0xA9, 0x01, 0x00, 0x83, 0x0B, 0xAF, 0xE1, 0x00, 0xE1, 0xF0, 0x0F, 0x64, +0x16, 0x18, 0x3B, 0x69, 0x0B, 0x00, 0x85, 0x14, 0xA2, 0x02, 0x00, 0x20, 0x7A, 0xC5, 0x4C, 0xB8, +0xFF, 0x0B, 0x5B, 0xD0, 0x06, 0xA2, 0x03, 0x06, 0x4C, 0xBB, 0xFF, 0xA3, 0x09, 0xC9, 0x02, 0x00, +0x90, 0x06, 0xA2, 0x05, 0x06, 0x4C, 0xBB, 0xFF, 0xF4, 0x00, 0x00, 0x48, 0x22, 0x0E, 0xC1, 0xFE, +0x68, 0xF0, 0x26, 0xE6, 0x32, 0xA3, 0x09, 0x85, 0x34, 0xF4, 0x00, 0x00, 0xF4, 0x07, 0x00, 0xF4, +0x00, 0x00, 0x7B, 0x18, 0x69, 0x00, 0x00, 0x48, 0x22, 0x14, 0xC1, 0xFE, 0x64, 0x32, 0x68, 0xD0, +0x05, 0xA9, 0x01, 0x00, 0x80, 0x03, 0xA9, 0x00, 0x00, 0x83, 0x0B, 0x4C, 0xB8, 0xFF, 0x7B, 0x22, +0x81, 0xC0, 0xFE, 0x6B, 0x7B, 0x22, 0x35, 0xC0, 0xFE, 0x6B, 0x0B, 0x5B, 0xD0, 0x06, 0xA2, 0x03, +0x06, 0x4C, 0xBB, 0xFF, 0xA3, 0x09, 0xC9, 0x02, 0x00, 0x90, 0x06, 0xA2, 0x05, 0x06, 0x4C, 0xBB, +0xFF, 0xF4, 0x00, 0x00, 0x48, 0x22, 0x60, 0xC1, 0xFE, 0x68, 0xD0, 0x1F, 0xE6, 0x32, 0xA3, 0x09, +0x85, 0x34, 0xF4, 0x00, 0x00, 0xF4, 0x04, 0x00, 0xF4, 0x00, 0x00, 0x7B, 0x18, 0x69, 0x00, 0x00, +0x48, 0x22, 0x66, 0xC1, 0xFE, 0x64, 0x32, 0x68, 0xA9, 0x00, 0x00, 0x83, 0x0B, 0x4C, 0xB8, 0xFF, +0x7B, 0x22, 0xC1, 0xC0, 0xFE, 0x6B, 0x7B, 0x22, 0xD0, 0xBE, 0xFE, 0x6B, 0xC9, 0x00, 0x00, 0xD0, +0x06, 0xA2, 0x03, 0x06, 0x4C, 0x90, 0xFF, 0xAF, 0xDC, 0x00, 0xE1, 0x83, 0x07, 0xAF, 0xDE, 0x00, +0xE1, 0x83, 0x09, 0xAF, 0xE1, 0x00, 0xE1, 0xF0, 0x0F, 0x64, 0x16, 0x18, 0x3B, 0x69, 0x07, 0x00, +0x85, 0x14, 0xA2, 0x00, 0x00, 0x20, 0x7A, 0xC5, 0x4C, 0x8B, 0xFF, 0xC9, 0x00, 0x00, 0xD0, 0x06, +0xA2, 0x03, 0x06, 0x4C, 0x90, 0xFF, 0xF4, 0x00, 0x00, 0xF4, 0x2E, 0x00, 0xA2, 0x03, 0x0C, 0x22, +0x00, 0x00, 0xE1, 0x68, 0x0A, 0x0A, 0xAA, 0xBF, 0xDA, 0xBA, 0xFE, 0x83, 0x07, 0xE8, 0xE8, 0xBF, +0xDA, 0xBA, 0xFE, 0x83, 0x09, 0x4C, 0x8B, 0xFF, 0xC9, 0x00, 0x00, 0xD0, 0x06, 0xA2, 0x03, 0x06, +0x4C, 0x90, 0xFF, 0xF4, 0x00, 0x00, 0xF4, 0x2F, 0x00, 0xA2, 0x03, 0x0C, 0x22, 0x00, 0x00, 0xE1, +0x68, 0x0A, 0x0A, 0xAA, 0xBF, 0xEE, 0xBA, 0xFE, 0x83, 0x07, 0xE8, 0xE8, 0xBF, 0xEE, 0xBA, 0xFE, +0x83, 0x09, 0x4C, 0x8B, 0xFF, 0x0B, 0x5B, 0xD0, 0x06, 0xA2, 0x03, 0x06, 0x4C, 0x8F, 0xFF, 0xA9, +0x01, 0x00, 0x85, 0x36, 0x4C, 0x8C, 0xFF, 0x0B, 0x5B, 0xD0, 0x06, 0xA2, 0x03, 0x06, 0x4C, 0xD1, +0xFF, 0xA3, 0x0D, 0xC9, 0x10, 0x00, 0x90, 0x06, 0xA2, 0x04, 0x06, 0x4C, 0xD1, 0xFF, 0x08, 0x78, +0x0A, 0xAA, 0xBF, 0xAA, 0xBA, 0xFE, 0x25, 0x22, 0xD0, 0x09, 0xA9, 0x01, 0x00, 0x83, 0x10, 0x28, +0x4C, 0xCE, 0xFF, 0xA3, 0x0E, 0xC9, 0x05, 0x00, 0xD0, 0x04, 0xA5, 0x2E, 0xD0, 0xEC, 0x20, 0x94, +0xC4, 0xA0, 0x02, 0x00, 0xA6, 0x2C, 0xB7, 0x28, 0xC9, 0xFF, 0xFF, 0xF0, 0x11, 0x18, 0x98, 0x69, +0x12, 0x00, 0xA8, 0xCA, 0xD0, 0xF0, 0xA4, 0x2E, 0xB7, 0x28, 0x85, 0x2E, 0xC8, 0xC8, 0x18, 0x98, +0x65, 0x28, 0x85, 0x1C, 0xA9, 0x00, 0x00, 0x65, 0x2A, 0x85, 0x1E, 0x88, 0x88, 0x84, 0x1A, 0xA3, +0x0E, 0x87, 0x1C, 0xA0, 0x02, 0x00, 0xA3, 0x0A, 0x97, 0x1C, 0xC8, 0xC8, 0xA3, 0x0C, 0x97, 0x1C, +0x20, 0xE1, 0xC4, 0x20, 0x41, 0xC4, 0x20, 0xC0, 0xC4, 0x28, 0xA9, 0x00, 0x00, 0x83, 0x0F, 0x4C, +0xCE, 0xFF, 0x0B, 0x5B, 0xD0, 0x06, 0xA2, 0x03, 0x06, 0x4C, 0xC6, 0xFF, 0x08, 0x78, 0x20, 0x94, +0xC4, 0xA5, 0x2E, 0x85, 0x1A, 0xA8, 0xF0, 0x3E, 0xC8, 0xC8, 0xB7, 0x28, 0xC9, 0x10, 0x00, 0x90, +0x10, 0xF4, 0x81, 0x06, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xA2, 0x03, 0x15, 0x22, 0x00, 0x00, +0xE1, 0x0A, 0xAA, 0xBF, 0xAA, 0xBA, 0xFE, 0xAA, 0x23, 0x0A, 0xD0, 0x18, 0x8A, 0x23, 0x0C, 0xF0, +0x08, 0xA9, 0xFF, 0xFF, 0x97, 0x28, 0x20, 0x5D, 0xC4, 0xA4, 0x1A, 0xB7, 0x28, 0x85, 0x1A, 0xA8, +0xD0, 0xC6, 0x80, 0x02, 0xB7, 0x28, 0x83, 0x0E, 0x20, 0xC0, 0xC4, 0x28, 0x4C, 0xC3, 0xFF, 0x0B, +0x5B, 0xD0, 0x06, 0xA2, 0x03, 0x06, 0x4C, 0xD1, 0xFF, 0xE6, 0x3C, 0x08, 0x78, 0x20, 0x94, 0xC4, +0xA3, 0x0E, 0xF0, 0x4A, 0xA5, 0x2E, 0x85, 0x1A, 0xA8, 0xF0, 0x43, 0xC8, 0xC8, 0xB7, 0x28, 0xC9, +0x10, 0x00, 0x90, 0x10, 0xF4, 0x81, 0x06, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xA2, 0x03, 0x15, +0x22, 0x00, 0x00, 0xE1, 0x0A, 0xAA, 0xBF, 0xAA, 0xBA, 0xFE, 0x23, 0x0E, 0xF0, 0x17, 0xA5, 0x32, +0xF0, 0x3E, 0xB7, 0x28, 0xC9, 0x03, 0x00, 0xB0, 0x37, 0x18, 0x98, 0x69, 0x02, 0x00, 0xA8, 0xB7, +0x28, 0xC5, 0x34, 0xF0, 0x2B, 0xA4, 0x1A, 0xB7, 0x28, 0x85, 0x1A, 0xA8, 0xD0, 0xBD, 0xA5, 0x62, +0xD0, 0x19, 0xA3, 0x0A, 0x85, 0x1C, 0xA3, 0x0C, 0x85, 0x1E, 0xA9, 0x00, 0x00, 0x87, 0x1C, 0xA0, +0x02, 0x00, 0x97, 0x1C, 0xC8, 0xC8, 0x97, 0x1C, 0x20, 0xE1, 0xC4, 0xA9, 0x00, 0x00, 0x80, 0x37, +0xA3, 0x0A, 0x85, 0x10, 0xA3, 0x0C, 0x85, 0x12, 0x18, 0xA5, 0x1A, 0x69, 0x02, 0x00, 0x65, 0x28, +0x85, 0x1C, 0xA9, 0x00, 0x00, 0x65, 0x2A, 0x85, 0x1E, 0xA0, 0x0E, 0x00, 0xB7, 0x1C, 0x97, 0x10, +0x88, 0x88, 0x10, 0xF8, 0xA5, 0x3C, 0xF0, 0x0C, 0xA9, 0xFF, 0xFF, 0xA4, 0x1A, 0xC8, 0xC8, 0x97, +0x28, 0x20, 0x5D, 0xC4, 0xA9, 0x01, 0x00, 0x83, 0x10, 0x64, 0x3C, 0x20, 0xC0, 0xC4, 0x28, 0x4C, +0xCE, 0xFF, 0x0B, 0x5B, 0xD0, 0x06, 0xA2, 0x03, 0x06, 0x4C, 0xD1, 0xFF, 0x4C, 0xFB, 0xC2, 0x0B, +0x5B, 0xD0, 0x06, 0xA2, 0x03, 0x06, 0x4C, 0xBB, 0xFF, 0xA3, 0x09, 0x85, 0x22, 0x4C, 0xB8, 0xFF, +0x0B, 0x5B, 0xD0, 0x06, 0xA2, 0x03, 0x06, 0x4C, 0x9A, 0xFF, 0xA3, 0x09, 0x8F, 0xE7, 0x00, 0xE1, +0xA3, 0x0B, 0x8F, 0xEB, 0x00, 0xE1, 0xA3, 0x0D, 0x8F, 0xE9, 0x00, 0xE1, 0xA5, 0x40, 0xD0, 0x2D, +0xE2, 0x30, 0xAF, 0xE0, 0x00, 0xE1, 0x30, 0x21, 0xAA, 0xAF, 0xE9, 0x00, 0xE1, 0x9F, 0x78, 0x04, +0x00, 0xAF, 0xEA, 0x00, 0xE1, 0x9F, 0x78, 0x05, 0x00, 0xAF, 0xEB, 0x00, 0xE1, 0x9F, 0xF8, 0x04, +0x00, 0xAF, 0xEC, 0x00, 0xE1, 0x9F, 0xF8, 0x05, 0x00, 0xC2, 0x30, 0x80, 0x11, 0xAF, 0xE9, 0x00, +0xE1, 0x48, 0xAF, 0xEB, 0x00, 0xE1, 0x48, 0xA2, 0x03, 0x1E, 0x22, 0x00, 0x00, 0xE1, 0xA3, 0x0F, +0xAA, 0xA3, 0x11, 0x22, 0x3C, 0xC4, 0xFE, 0xC2, 0x30, 0x4C, 0x97, 0xFF, 0x48, 0xDA, 0x4C, 0xFF, +0xC5, 0xA9, 0x00, 0x00, 0xA4, 0x1A, 0x97, 0x28, 0xA5, 0x2E, 0xD0, 0x08, 0xA5, 0x1A, 0x85, 0x2E, +0x85, 0x30, 0x80, 0x08, 0xA5, 0x1A, 0xA4, 0x30, 0x97, 0x28, 0x85, 0x30, 0x60, 0xA5, 0x2E, 0xC5, +0x1A, 0xF0, 0x0C, 0xA8, 0xB7, 0x28, 0xC5, 0x1A, 0xF0, 0x18, 0xB7, 0x28, 0xD0, 0xF5, 0x60, 0xA4, +0x1A, 0xB7, 0x28, 0x85, 0x2E, 0xA5, 0x1A, 0xC5, 0x30, 0xD0, 0xF3, 0xA9, 0x00, 0x00, 0x85, 0x30, +0x80, 0xEC, 0xBB, 0xA4, 0x1A, 0xB7, 0x28, 0x9B, 0x97, 0x28, 0xA5, 0x1A, 0xC5, 0x30, 0xD0, 0xDE, +0x86, 0x30, 0x80, 0xDA, 0xA5, 0x24, 0x05, 0x26, 0xD0, 0x10, 0xF4, 0x82, 0x06, 0xF4, 0x00, 0x00, +0xF4, 0x00, 0x00, 0xA2, 0x03, 0x15, 0x22, 0x00, 0x00, 0xE1, 0xA0, 0x04, 0x00, 0xB7, 0x24, 0x09, +0x00, 0x80, 0x97, 0x24, 0xA0, 0x02, 0x00, 0xA7, 0x24, 0x85, 0x28, 0xB7, 0x24, 0x85, 0x2A, 0x60, +0xA5, 0x24, 0x05, 0x26, 0xD0, 0x10, 0xF4, 0x82, 0x06, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xA2, +0x03, 0x15, 0x22, 0x00, 0x00, 0xE1, 0xA0, 0x04, 0x00, 0xB7, 0x24, 0x29, 0xFF, 0x7F, 0x97, 0x24, +0x60, 0xAF, 0xDC, 0x00, 0xE1, 0xA0, 0x06, 0x00, 0x97, 0x1C, 0xAF, 0xDE, 0x00, 0xE1, 0xC8, 0xC8, +0x97, 0x1C, 0xA0, 0x0A, 0x00, 0x20, 0x2B, 0xC5, 0xA7, 0x1C, 0xF0, 0x05, 0xC9, 0x06, 0x00, 0x90, +0x17, 0xE2, 0x30, 0xAF, 0x25, 0xC0, 0x00, 0x48, 0xA9, 0x00, 0x48, 0xC2, 0x30, 0x20, 0x3A, 0xC5, +0x68, 0x98, 0xA0, 0x0E, 0x00, 0x97, 0x1C, 0x60, 0xA0, 0x04, 0x00, 0xB7, 0x1C, 0xA0, 0x0E, 0x00, +0x97, 0x1C, 0xA9, 0x00, 0x00, 0xA0, 0x04, 0x00, 0x97, 0x1C, 0x60, 0xAF, 0xEB, 0x00, 0xE1, 0x97, +0x1C, 0xC8, 0xC8, 0xAF, 0xE9, 0x00, 0xE1, 0x97, 0x1C, 0x60, 0xA0, 0x00, 0x00, 0xA2, 0x00, 0x00, +0xAF, 0xE7, 0x00, 0xE1, 0x3F, 0xA6, 0xBA, 0xFE, 0xD0, 0x05, 0x98, 0x09, 0x80, 0x00, 0xA8, 0xA2, +0x02, 0x00, 0xAF, 0xE7, 0x00, 0xE1, 0x3F, 0xA6, 0xBA, 0xFE, 0xD0, 0x05, 0x98, 0x09, 0x40, 0x00, +0xA8, 0xA2, 0x0E, 0x00, 0xA3, 0x03, 0x48, 0xA3, 0x01, 0x0A, 0x83, 0x01, 0x90, 0x06, 0x98, 0x1F, +0xCA, 0xBA, 0xFE, 0xA8, 0xCA, 0xCA, 0x10, 0xEF, 0x68, 0x60, 0xAF, 0xE1, 0x00, 0xE1, 0xF0, 0x0C, +0x48, 0xDA, 0xA5, 0x16, 0x48, 0xA5, 0x14, 0x48, 0x22, 0xE3, 0x00, 0xE1, 0x60, 0xA9, 0x00, 0x48, +0xAF, 0x00, 0xC0, 0x00, 0x29, 0x7F, 0x48, 0xAF, 0x25, 0xC0, 0x00, 0x48, 0xA9, 0x00, 0x48, 0x8F, +0x10, 0xC0, 0x00, 0xC2, 0x30, 0x20, 0x3A, 0xC5, 0x68, 0xFA, 0xF4, 0x00, 0x00, 0x29, 0x00, 0x08, +0xD0, 0x05, 0xF4, 0x03, 0x00, 0x80, 0x03, 0xF4, 0x05, 0x00, 0x5A, 0xDA, 0xA2, 0x06, 0x14, 0x22, +0x00, 0x00, 0xE1, 0x68, 0xE2, 0x30, 0x18, 0x6B, 0xC2, 0x30, 0xF4, 0x00, 0x00, 0xA2, 0x03, 0x1F, +0x22, 0x00, 0x00, 0xE1, 0xE2, 0x30, 0xAF, 0x25, 0xC0, 0x00, 0x48, 0xA9, 0x00, 0x48, 0xC2, 0x30, +0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xA2, 0x03, 0x17, 0x22, 0x00, 0x00, 0xE1, +0x68, 0x8F, 0xE7, 0x00, 0xE1, 0x68, 0x8F, 0xEB, 0x00, 0xE1, 0x68, 0x8F, 0xE9, 0x00, 0xE1, 0xAF, +0xE9, 0x00, 0xE1, 0x48, 0xAF, 0xEB, 0x00, 0xE1, 0x48, 0x22, 0x60, 0x00, 0xE1, 0xA3, 0x03, 0x29, +0x04, 0x00, 0xD0, 0x04, 0x68, 0x68, 0x80, 0x6A, 0x20, 0x3A, 0xC5, 0x68, 0x68, 0x5A, 0xF4, 0x00, +0x00, 0xF4, 0x00, 0x00, 0x98, 0x29, 0x80, 0x00, 0xD0, 0x10, 0xAF, 0xE7, 0x00, 0xE1, 0x0A, 0x0A, +0xB0, 0x18, 0xF4, 0x01, 0x00, 0xA9, 0x00, 0x00, 0x80, 0x36, 0xAF, 0xE7, 0x00, 0xE1, 0x0A, 0x0A, +0x90, 0x08, 0xF4, 0x02, 0x00, 0xA9, 0x00, 0x00, 0x80, 0x26, 0xA3, 0x05, 0xA8, 0x29, 0x40, 0x00, +0xD0, 0x10, 0xAF, 0xE7, 0x00, 0xE1, 0xEB, 0x4A, 0xB0, 0x25, 0xF4, 0x01, 0x00, 0xA9, 0x01, 0x00, +0x80, 0x0E, 0xAF, 0xE7, 0x00, 0xE1, 0xEB, 0x4A, 0x90, 0x15, 0xF4, 0x02, 0x00, 0xA9, 0x01, 0x00, +0x5A, 0x48, 0x83, 0x09, 0xA2, 0x06, 0x14, 0x22, 0x00, 0x00, 0xE1, 0xA3, 0x03, 0xF0, 0xCB, 0x68, +0x68, 0x68, 0xE2, 0x30, 0x18, 0x6B, 0xC2, 0x30, 0xF4, 0x00, 0x00, 0xF4, 0x0A, 0x00, 0xF4, 0x00, +0x00, 0xF4, 0x00, 0x00, 0xA2, 0x06, 0x14, 0x22, 0x00, 0x00, 0xE1, 0x68, 0xE2, 0x30, 0x18, 0x6B, +0xC2, 0x30, 0xF4, 0x00, 0x00, 0xF4, 0x28, 0x00, 0xF4, 0x00, 0x00, 0xA2, 0x06, 0x15, 0x22, 0x00, +0x00, 0xE1, 0x68, 0xE2, 0x30, 0x18, 0x6B, 0xC2, 0x30, 0xA9, 0x01, 0x00, 0x8F, 0xF1, 0x00, 0xE1, +0xF4, 0x00, 0x00, 0xE2, 0x30, 0xAF, 0x25, 0xC0, 0x00, 0x48, 0xA9, 0x00, 0x48, 0xC2, 0x30, 0xF4, +0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xA2, 0x03, 0x17, 0x22, 0x00, 0x00, 0xE1, 0xA0, +0x00, 0x00, 0xA3, 0x01, 0x29, 0x00, 0x20, 0xF0, 0x08, 0xA3, 0x09, 0x09, 0x02, 0x00, 0x83, 0x09, +0xC8, 0xA3, 0x01, 0x0A, 0x90, 0x05, 0x0A, 0x90, 0x18, 0xB0, 0x03, 0x0A, 0xB0, 0x13, 0xA3, 0x01, +0xEB, 0xAA, 0x29, 0x10, 0x00, 0xF0, 0x06, 0x8A, 0x4A, 0x90, 0x06, 0xB0, 0x0C, 0x8A, 0x4A, 0x90, +0x08, 0xA3, 0x09, 0x09, 0x04, 0x00, 0x83, 0x09, 0xC8, 0x98, 0xF0, 0x03, 0x4C, 0xF0, 0xC5, 0x68, +0x68, 0x68, 0x68, 0x68, 0xE2, 0x30, 0x6B, 0x2B, 0x00, 0x00, 0x00, 0x8A, 0xFF, 0xFE, 0x00, 0x8A, +0xFF, 0xFE, 0x00, 0x8A, 0xFF, 0xFE, 0x00, 0xD8, 0xC7, 0xFE, 0x00, 0x8A, 0xFF, 0xFE, 0x00, 0xE0, +0xC7, 0xFE, 0x00, 0x8A, 0xFF, 0xFE, 0x00, 0x8A, 0xFF, 0xFE, 0x00, 0xE8, 0xC7, 0xFE, 0x00, 0x18, +0xC8, 0xFE, 0x00, 0x06, 0xC8, 0xFE, 0x00, 0x80, 0xC8, 0xFE, 0x00, 0xB0, 0xC8, 0xFE, 0x00, 0xF4, +0xC8, 0xFE, 0x00, 0x70, 0xC9, 0xFE, 0x00, 0x75, 0xC9, 0xFE, 0x00, 0x66, 0xC9, 0xFE, 0x00, 0x6B, +0xC9, 0xFE, 0x00, 0xE9, 0xCA, 0xFE, 0x00, 0xFF, 0xCA, 0xFE, 0x00, 0xB2, 0xCB, 0xFE, 0x00, 0xBE, +0xCB, 0xFE, 0x00, 0xDA, 0xCC, 0xFE, 0x00, 0x43, 0xCE, 0xFE, 0x00, 0x4A, 0xCE, 0xFE, 0x00, 0x54, +0xCE, 0xFE, 0x00, 0x86, 0xCE, 0xFE, 0x00, 0x59, 0xCE, 0xFE, 0x00, 0x8B, 0xCE, 0xFE, 0x00, 0x89, +0xCA, 0xFE, 0x00, 0x8E, 0xCA, 0xFE, 0x00, 0xC5, 0xCE, 0xFE, 0x00, 0xCA, 0xCE, 0xFE, 0x00, 0x1A, +0xCF, 0xFE, 0x00, 0x37, 0xCF, 0xFE, 0x00, 0x92, 0xCF, 0xFE, 0x00, 0xB4, 0xCF, 0xFE, 0x00, 0x4B, +0xD0, 0xFE, 0x00, 0xC8, 0xD0, 0xFE, 0x00, 0x56, 0xD1, 0xFE, 0x00, 0x96, 0xD1, 0xFE, 0x00, 0x7D, +0xD2, 0xFE, 0x00, 0xA2, 0xFF, 0xFF, 0x4C, 0x90, 0xFF, 0xA9, 0x00, 0x02, 0x83, 0x07, 0x4C, 0x8B, +0xFF, 0xA9, 0xFF, 0xFF, 0x83, 0x07, 0x4C, 0x8B, 0xFF, 0x0B, 0x3B, 0x5B, 0xA5, 0x09, 0x85, 0x0D, +0xA9, 0x00, 0x00, 0xA0, 0x11, 0x00, 0x18, 0x6A, 0x66, 0x0D, 0x90, 0x03, 0x18, 0x65, 0x0B, 0x88, +0xD0, 0xF5, 0x85, 0x0F, 0x4C, 0xC3, 0xFF, 0x0B, 0x3B, 0x5B, 0x22, 0x5D, 0xC8, 0xFE, 0xB0, 0x03, +0x4C, 0xC3, 0xFF, 0xA2, 0x01, 0x0B, 0x4C, 0xC6, 0xFF, 0x0B, 0x3B, 0x5B, 0xA5, 0x0B, 0x48, 0x45, +0x09, 0x48, 0xA5, 0x0B, 0x10, 0x06, 0x49, 0xFF, 0xFF, 0x1A, 0x85, 0x0B, 0xA5, 0x09, 0x10, 0x06, +0x49, 0xFF, 0xFF, 0x1A, 0x85, 0x09, 0x22, 0x5D, 0xC8, 0xFE, 0xB0, 0x19, 0x68, 0x10, 0x08, 0xA5, +0x0D, 0x49, 0xFF, 0xFF, 0x1A, 0x85, 0x0D, 0x68, 0x10, 0x08, 0xA5, 0x0F, 0x49, 0xFF, 0xFF, 0x1A, +0x85, 0x0F, 0x4C, 0xC3, 0xFF, 0x68, 0x68, 0xA2, 0x01, 0x0B, 0x4C, 0xC6, 0xFF, 0x64, 0x0F, 0xA5, +0x09, 0xD0, 0x02, 0x38, 0x6B, 0xA5, 0x0B, 0x85, 0x0D, 0xA0, 0x10, 0x00, 0x38, 0x26, 0x0D, 0x26, +0x0F, 0x38, 0xA5, 0x0F, 0xE5, 0x09, 0x90, 0x02, 0x85, 0x0F, 0x88, 0xD0, 0xF0, 0x26, 0x0D, 0x18, +0x6B, 0x0B, 0x3B, 0x5B, 0x64, 0x15, 0x64, 0x17, 0xA5, 0x09, 0x85, 0x11, 0xA5, 0x0B, 0x85, 0x13, +0xA0, 0x21, 0x00, 0x18, 0x66, 0x17, 0x66, 0x15, 0x66, 0x13, 0x66, 0x11, 0x90, 0x0D, 0x18, 0xA5, +0x0D, 0x65, 0x15, 0x85, 0x15, 0xA5, 0x0F, 0x65, 0x17, 0x85, 0x17, 0x88, 0xD0, 0xE6, 0x4C, 0xD9, +0xFF, 0x0B, 0x3B, 0x5B, 0xA5, 0x0D, 0x85, 0x11, 0xA5, 0x0F, 0x85, 0x13, 0x64, 0x15, 0x64, 0x17, +0xA5, 0x09, 0x05, 0x0B, 0xD0, 0x03, 0x38, 0x80, 0x26, 0xA0, 0x20, 0x00, 0x38, 0x26, 0x11, 0x26, +0x13, 0x26, 0x15, 0x26, 0x17, 0x38, 0xA5, 0x15, 0xE5, 0x09, 0xAA, 0xA5, 0x17, 0xE5, 0x0B, 0x90, +0x04, 0x85, 0x17, 0x86, 0x15, 0x88, 0xD0, 0xE5, 0x26, 0x11, 0x26, 0x13, 0x4C, 0xD9, 0xFF, 0xA2, +0x01, 0x0B, 0x4C, 0xDC, 0xFF, 0x0B, 0x3B, 0x5B, 0xA5, 0x09, 0xD0, 0x07, 0xA9, 0xFF, 0x7F, 0x85, +0x0F, 0x80, 0x61, 0x45, 0x0B, 0x48, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xA5, 0x0B, 0x10, 0x04, +0x49, 0xFF, 0xFF, 0x1A, 0x48, 0xA5, 0x09, 0x10, 0x04, 0x49, 0xFF, 0xFF, 0x1A, 0x48, 0xA2, 0x0B, +0x0B, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x85, 0x0F, 0xFA, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, +0x00, 0x00, 0xF4, 0x00, 0x00, 0xDA, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xA5, 0x09, 0x10, 0x04, +0x49, 0xFF, 0xFF, 0x1A, 0x48, 0xA2, 0x0B, 0x0D, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x85, 0x0D, 0x68, +0x68, 0x68, 0x68, 0x10, 0x0F, 0xA9, 0x00, 0x00, 0x38, 0xE5, 0x0D, 0x85, 0x0D, 0xA9, 0x00, 0x00, +0xE5, 0x0F, 0x85, 0x0F, 0x4C, 0xC3, 0xFF, 0xA0, 0x10, 0x00, 0x80, 0x0D, 0xA0, 0x1E, 0x00, 0x80, +0x08, 0xA0, 0x00, 0x00, 0x80, 0x03, 0xA0, 0xE1, 0xFF, 0x0B, 0x3B, 0x5B, 0x64, 0x11, 0x64, 0x13, +0xA5, 0x0F, 0x45, 0x0B, 0x48, 0xA5, 0x0F, 0x10, 0x0F, 0xA9, 0x00, 0x00, 0x38, 0xE5, 0x0D, 0x85, +0x0D, 0xA9, 0x00, 0x00, 0xE5, 0x0F, 0x85, 0x0F, 0xA5, 0x0B, 0x10, 0x0F, 0xA9, 0x00, 0x00, 0x38, +0xE5, 0x09, 0x85, 0x09, 0xA9, 0x00, 0x00, 0xE5, 0x0B, 0x85, 0x0B, 0x98, 0xD0, 0x33, 0xA0, 0x20, +0x00, 0x06, 0x11, 0x26, 0x13, 0x2A, 0x30, 0x51, 0x26, 0x09, 0x26, 0x0B, 0x90, 0x14, 0xAA, 0x18, +0xA5, 0x0D, 0x65, 0x11, 0x85, 0x11, 0xA5, 0x0F, 0x65, 0x13, 0x85, 0x13, 0x8A, 0x90, 0x03, 0x1A, +0x30, 0x37, 0x88, 0xD0, 0xDC, 0x06, 0x11, 0xA6, 0x13, 0x86, 0x11, 0x85, 0x13, 0xB0, 0x3E, 0x90, +0x46, 0x10, 0x59, 0x46, 0x13, 0x66, 0x11, 0x66, 0x0B, 0x66, 0x09, 0x90, 0x0D, 0x18, 0xA5, 0x0D, +0x65, 0x11, 0x85, 0x11, 0xA5, 0x0F, 0x65, 0x13, 0x85, 0x13, 0xC8, 0x30, 0xE6, 0xD0, 0x1A, 0x46, +0x09, 0x90, 0x16, 0x06, 0x0D, 0x26, 0x0F, 0x90, 0xE5, 0x64, 0x11, 0xA9, 0x00, 0x80, 0x85, 0x13, +0x68, 0x30, 0x26, 0xC6, 0x11, 0xC6, 0x13, 0x80, 0x20, 0x24, 0x0B, 0x10, 0x06, 0xE6, 0x11, 0xD0, +0x02, 0xE6, 0x13, 0x24, 0x13, 0x30, 0xE2, 0x68, 0x10, 0x0F, 0xA9, 0x00, 0x00, 0x38, 0xE5, 0x11, +0x85, 0x11, 0xA9, 0x00, 0x00, 0xE5, 0x13, 0x85, 0x13, 0x4C, 0xD9, 0xFF, 0xA5, 0x0D, 0x85, 0x11, +0x64, 0x0D, 0xA5, 0x0F, 0x85, 0x13, 0x64, 0x0F, 0x5A, 0xA0, 0x20, 0x00, 0x18, 0x26, 0x11, 0x26, +0x13, 0x26, 0x0D, 0x26, 0x0F, 0x38, 0xA5, 0x0D, 0xE5, 0x09, 0xAA, 0xA5, 0x0F, 0xE5, 0x0B, 0x90, +0x04, 0x85, 0x0F, 0x86, 0x0D, 0x88, 0xD0, 0xE5, 0x7A, 0x26, 0x11, 0x26, 0x13, 0x30, 0x9A, 0x26, +0x0D, 0x26, 0x0F, 0x38, 0xA5, 0x0D, 0xE5, 0x09, 0xAA, 0xA5, 0x0F, 0xE5, 0x0B, 0x90, 0x04, 0x85, +0x0F, 0x86, 0x0D, 0x88, 0x10, 0xE3, 0xB0, 0x95, 0x90, 0x9D, 0xA2, 0x0E, 0x40, 0x80, 0x03, 0xA2, +0x00, 0x40, 0x0B, 0x3B, 0x5B, 0xA9, 0x00, 0x00, 0xA8, 0x97, 0x09, 0xC8, 0xC8, 0x97, 0x09, 0xC8, +0xC8, 0xA5, 0x0F, 0x48, 0x10, 0x11, 0xA9, 0x00, 0x00, 0x38, 0xE5, 0x0D, 0x85, 0x0D, 0xA9, 0x00, +0x00, 0xE5, 0x0F, 0x85, 0x0F, 0x80, 0x18, 0xD0, 0x16, 0xA5, 0x0D, 0xD0, 0x0D, 0x97, 0x09, 0xC8, +0xC8, 0x97, 0x09, 0xC8, 0xC8, 0x97, 0x09, 0x68, 0x80, 0x1D, 0xCA, 0x06, 0x0D, 0x26, 0x0F, 0x10, +0xF9, 0xA5, 0x0D, 0x97, 0x09, 0xC8, 0xC8, 0xA5, 0x0F, 0x97, 0x09, 0xC8, 0xC8, 0x68, 0x85, 0x0F, +0x8A, 0x0A, 0x06, 0x0F, 0x6A, 0x97, 0x09, 0x4C, 0xD9, 0xFF, 0x0B, 0x3B, 0x5B, 0xA6, 0x0B, 0x86, +0x0D, 0xA5, 0x09, 0x10, 0x08, 0xE8, 0xE0, 0x00, 0x80, 0xF0, 0x02, 0x86, 0x0D, 0x4C, 0xC3, 0xFF, +0x0B, 0x3B, 0x5B, 0x64, 0x0F, 0x38, 0xA5, 0x0B, 0xE9, 0x00, 0x40, 0x90, 0x07, 0x85, 0x0B, 0xA9, +0x00, 0x40, 0x85, 0x0F, 0xA9, 0x00, 0x10, 0x85, 0x0D, 0x38, 0xA5, 0x0B, 0xE5, 0x0F, 0x90, 0x0F, +0xE5, 0x0D, 0x90, 0x0B, 0x85, 0x0B, 0x18, 0xA5, 0x0F, 0x65, 0x0D, 0x65, 0x0D, 0x85, 0x0F, 0x06, +0x09, 0x26, 0x0B, 0x46, 0x0D, 0x90, 0xE2, 0xA5, 0x09, 0xAA, 0x64, 0x09, 0x66, 0x09, 0x38, 0xE5, +0x0D, 0xA8, 0xA5, 0x0B, 0xE5, 0x0F, 0x90, 0x1B, 0x48, 0x98, 0xE5, 0x09, 0xA8, 0x68, 0xE9, 0x00, +0x00, 0x90, 0x10, 0x85, 0x0B, 0xBB, 0x18, 0xA5, 0x0D, 0x65, 0x09, 0x65, 0x09, 0x85, 0x0D, 0x90, +0x02, 0xE6, 0x0F, 0x8A, 0x0A, 0xAA, 0x26, 0x0B, 0x46, 0x09, 0x90, 0xD2, 0x38, 0xE5, 0x0D, 0xA8, +0xA5, 0x0B, 0xE5, 0x0F, 0x90, 0x18, 0x48, 0xA5, 0x09, 0xE9, 0x00, 0x80, 0x98, 0xE5, 0x09, 0xA8, +0x68, 0xE5, 0x09, 0x90, 0x09, 0x85, 0x0B, 0xBB, 0xE6, 0x0D, 0xD0, 0x02, 0xE6, 0x0F, 0x8A, 0x2A, +0x26, 0x0B, 0x38, 0xE5, 0x0D, 0xA8, 0xA5, 0x0B, 0xE5, 0x0F, 0x90, 0x14, 0x48, 0xA5, 0x09, 0xE9, +0x00, 0x40, 0x98, 0xE5, 0x09, 0x68, 0xE5, 0x09, 0x90, 0x06, 0xE6, 0x0D, 0xD0, 0x02, 0xE6, 0x0F, +0x4C, 0xC3, 0xFF, 0x0B, 0x3B, 0x5B, 0xA2, 0x02, 0x00, 0x24, 0x0B, 0x30, 0x0F, 0x10, 0x1C, 0x0B, +0x3B, 0x5B, 0xA2, 0x00, 0x00, 0x24, 0x0B, 0x10, 0x12, 0xA2, 0x04, 0x00, 0x38, 0xA9, 0x00, 0x00, +0xE5, 0x09, 0x85, 0x09, 0xA9, 0x00, 0x00, 0xE5, 0x0B, 0x85, 0x0B, 0xA0, 0x10, 0x00, 0x38, 0xA5, +0x0B, 0xE9, 0x88, 0x64, 0x30, 0x02, 0x85, 0x0B, 0x26, 0x09, 0x26, 0x0B, 0x88, 0xD0, 0xEF, 0x18, +0x8A, 0x65, 0x09, 0x48, 0x4A, 0x90, 0x07, 0xA9, 0x10, 0xC9, 0xE5, 0x0B, 0x85, 0x0B, 0x64, 0x09, +0x46, 0x0B, 0x66, 0x09, 0x46, 0x0B, 0x66, 0x09, 0x46, 0x0B, 0x66, 0x09, 0x48, 0x48, 0xD4, 0x0B, +0xD4, 0x09, 0xD4, 0x0B, 0xD4, 0x09, 0xA2, 0x0B, 0x10, 0x22, 0x00, 0x00, 0xE1, 0x7A, 0x84, 0x0D, +0xFA, 0x86, 0x0F, 0x68, 0x48, 0x1A, 0x29, 0x02, 0x00, 0xD0, 0x4B, 0x48, 0x48, 0xDA, 0x5A, 0xF4, +0xA2, 0x10, 0xF4, 0xE5, 0x08, 0xA2, 0x0B, 0x10, 0x22, 0x00, 0x00, 0xE1, 0x18, 0x68, 0x69, 0x4D, +0x31, 0xA8, 0x68, 0x69, 0xB3, 0xAA, 0x48, 0x48, 0x48, 0x5A, 0xD4, 0x0F, 0xD4, 0x0D, 0xA2, 0x0B, +0x10, 0x22, 0x00, 0x00, 0xE1, 0x18, 0x68, 0x69, 0x09, 0xD6, 0xA8, 0x68, 0x69, 0xFF, 0x7F, 0x48, +0x48, 0x48, 0x5A, 0xD4, 0x0B, 0xD4, 0x09, 0xA2, 0x0B, 0x10, 0x22, 0x00, 0x00, 0xE1, 0x7A, 0x84, +0x0D, 0xFA, 0x86, 0x0F, 0x80, 0x4D, 0x48, 0x48, 0xDA, 0x5A, 0xF4, 0x6E, 0xFA, 0xF4, 0x42, 0x2A, +0xA2, 0x0B, 0x10, 0x22, 0x00, 0x00, 0xE1, 0x18, 0x68, 0x69, 0x9A, 0xF2, 0xA8, 0x68, 0x69, 0xA7, +0x2A, 0x48, 0x48, 0x48, 0x5A, 0xD4, 0x0F, 0xD4, 0x0D, 0xA2, 0x0B, 0x10, 0x22, 0x00, 0x00, 0xE1, +0x18, 0x68, 0x69, 0xA7, 0x11, 0xA8, 0x68, 0x69, 0x00, 0x80, 0x48, 0x48, 0x48, 0x5A, 0xD4, 0x0F, +0xD4, 0x0D, 0xA2, 0x0B, 0x10, 0x22, 0x00, 0x00, 0xE1, 0x18, 0x68, 0x85, 0x0D, 0x68, 0x69, 0x00, +0x40, 0x85, 0x0F, 0x68, 0x29, 0x04, 0x00, 0xF0, 0x0F, 0x38, 0xA9, 0x00, 0x00, 0xE5, 0x0D, 0x85, +0x0D, 0xA9, 0x00, 0x00, 0xE5, 0x0F, 0x85, 0x0F, 0x4C, 0xC3, 0xFF, 0x0B, 0x3B, 0x5B, 0x64, 0x11, +0xA5, 0x0B, 0x0A, 0x66, 0x11, 0x10, 0x0F, 0xA9, 0x00, 0x00, 0x38, 0xE5, 0x09, 0x85, 0x09, 0xA9, +0x00, 0x00, 0xE5, 0x0B, 0x85, 0x0B, 0xA5, 0x0F, 0x0A, 0x66, 0x11, 0x10, 0x0F, 0xA9, 0x00, 0x00, +0x38, 0xE5, 0x0D, 0x85, 0x0D, 0xA9, 0x00, 0x00, 0xE5, 0x0F, 0x85, 0x0F, 0x38, 0xA5, 0x0D, 0xE5, +0x09, 0xA5, 0x0F, 0xE5, 0x0B, 0x66, 0x11, 0xD4, 0x11, 0x64, 0x13, 0xA5, 0x0F, 0x05, 0x0D, 0xD0, +0x05, 0x64, 0x11, 0x82, 0xE3, 0x00, 0xA5, 0x0B, 0x05, 0x09, 0xF0, 0xF5, 0x48, 0x48, 0xA5, 0x11, +0x30, 0x0A, 0xD4, 0x0F, 0xD4, 0x0D, 0xD4, 0x0B, 0xD4, 0x09, 0x80, 0x08, 0xD4, 0x0B, 0xD4, 0x09, +0xD4, 0x0F, 0xD4, 0x0D, 0xA2, 0x0B, 0x12, 0x22, 0x00, 0x00, 0xE1, 0x7A, 0x84, 0x09, 0xFA, 0x86, +0x0B, 0x48, 0x48, 0xDA, 0x5A, 0xDA, 0x5A, 0xA2, 0x0B, 0x10, 0x22, 0x00, 0x00, 0xE1, 0x7A, 0x84, +0x0D, 0xFA, 0x86, 0x0F, 0x48, 0x48, 0xDA, 0x5A, 0xF4, 0x3F, 0xFF, 0xF4, 0x62, 0xFE, 0xA2, 0x0B, +0x10, 0x22, 0x00, 0x00, 0xE1, 0x18, 0x68, 0x69, 0xFE, 0x92, 0xA8, 0x68, 0x69, 0x5E, 0x03, 0x48, +0x48, 0x48, 0x5A, 0xD4, 0x0F, 0xD4, 0x0D, 0xA2, 0x0B, 0x10, 0x22, 0x00, 0x00, 0xE1, 0x18, 0x68, +0x69, 0xF2, 0x77, 0xA8, 0x68, 0x69, 0x8C, 0xF8, 0x48, 0x48, 0x48, 0x5A, 0xD4, 0x0F, 0xD4, 0x0D, +0xA2, 0x0B, 0x10, 0x22, 0x00, 0x00, 0xE1, 0x18, 0x68, 0x69, 0x2C, 0xF7, 0xA8, 0x68, 0x69, 0x62, +0x0C, 0x48, 0x48, 0x48, 0x5A, 0xD4, 0x0F, 0xD4, 0x0D, 0xA2, 0x0B, 0x10, 0x22, 0x00, 0x00, 0xE1, +0x18, 0x68, 0x69, 0xBE, 0x4E, 0xA8, 0x68, 0x69, 0xB6, 0xEA, 0x48, 0x48, 0x48, 0x5A, 0xD4, 0x0F, +0xD4, 0x0D, 0xA2, 0x0B, 0x10, 0x22, 0x00, 0x00, 0xE1, 0x18, 0x68, 0x69, 0x73, 0xA0, 0xA8, 0x68, +0x69, 0xFF, 0x3F, 0x48, 0x48, 0x48, 0x5A, 0xD4, 0x0B, 0xD4, 0x09, 0xA2, 0x0B, 0x10, 0x22, 0x00, +0x00, 0xE1, 0x68, 0x7A, 0x84, 0x11, 0x0A, 0x26, 0x11, 0x26, 0x13, 0x0A, 0x26, 0x11, 0x26, 0x13, +0x0A, 0x90, 0x06, 0xE6, 0x11, 0xD0, 0x02, 0xE6, 0x13, 0x68, 0x0A, 0x85, 0x0D, 0xB0, 0x0E, 0xA9, +0x20, 0x92, 0xE5, 0x11, 0x85, 0x11, 0xA9, 0x01, 0x00, 0xE5, 0x13, 0x85, 0x13, 0x06, 0x0D, 0x90, +0x0E, 0xA9, 0x40, 0x24, 0xE5, 0x11, 0x85, 0x11, 0xA9, 0x03, 0x00, 0xE5, 0x13, 0x85, 0x13, 0x06, +0x0D, 0x90, 0x0E, 0xA9, 0x00, 0x00, 0xE5, 0x11, 0x85, 0x11, 0xA9, 0x00, 0x00, 0xE5, 0x13, 0x85, +0x13, 0x4C, 0xD9, 0xFF, 0x0B, 0x3B, 0x5B, 0xA5, 0x0B, 0x80, 0x05, 0x0B, 0x3B, 0x5B, 0xA5, 0x09, +0x85, 0x0D, 0x4C, 0xC3, 0xFF, 0xA2, 0x0F, 0x00, 0x80, 0x03, 0xA2, 0x0D, 0x00, 0x0B, 0x3B, 0x5B, +0xA5, 0x09, 0x85, 0x0D, 0xA5, 0x0B, 0x85, 0x0F, 0x48, 0x10, 0x11, 0xA9, 0x00, 0x00, 0x38, 0xE5, +0x0D, 0x85, 0x0D, 0xA9, 0x00, 0x00, 0xE5, 0x0F, 0x85, 0x0F, 0x30, 0x33, 0x06, 0x0D, 0x26, 0x0F, +0x30, 0x2D, 0xCA, 0x10, 0xF7, 0x80, 0x7F, 0xA2, 0x0F, 0x00, 0x80, 0x03, 0xA2, 0x0D, 0x00, 0x0B, +0x3B, 0x5B, 0xA5, 0x09, 0x85, 0x0D, 0xA5, 0x0B, 0x85, 0x0F, 0x48, 0x10, 0x0F, 0xA9, 0x00, 0x00, +0x38, 0xE5, 0x0D, 0x85, 0x0D, 0xA9, 0x00, 0x00, 0xE5, 0x0F, 0x85, 0x0F, 0x8A, 0x80, 0x44, 0x64, +0x0D, 0xA9, 0x00, 0x80, 0x85, 0x0F, 0x68, 0x30, 0x5F, 0xC6, 0x0D, 0xC6, 0x0F, 0x80, 0x59, 0x64, +0x0D, 0x64, 0x0F, 0x68, 0x80, 0x52, 0xA2, 0x0E, 0x40, 0x80, 0x03, 0xA2, 0x00, 0x40, 0x0B, 0x3B, +0x5B, 0xA0, 0x04, 0x00, 0xB7, 0x09, 0x85, 0x0D, 0xC8, 0xC8, 0xB7, 0x09, 0x85, 0x0F, 0xC8, 0xC8, +0xB7, 0x09, 0x48, 0x29, 0xFF, 0x7F, 0x85, 0x09, 0x8A, 0x18, 0xE5, 0x09, 0x30, 0xC1, 0xC9, 0x21, +0x00, 0x10, 0xCC, 0x46, 0x0F, 0x66, 0x0D, 0x3A, 0x10, 0xF9, 0x90, 0x06, 0xE6, 0x0D, 0xD0, 0x02, +0xE6, 0x0F, 0x24, 0x0F, 0x30, 0xA9, 0x68, 0x10, 0x0F, 0xA9, 0x00, 0x00, 0x38, 0xE5, 0x0D, 0x85, +0x0D, 0xA9, 0x00, 0x00, 0xE5, 0x0F, 0x85, 0x0F, 0x4C, 0xC3, 0xFF, 0x0B, 0xF4, 0x00, 0x00, 0xF4, +0x00, 0x00, 0x3B, 0x5B, 0xA5, 0x13, 0x85, 0x01, 0x20, 0x59, 0xCF, 0x68, 0x68, 0xE0, 0x00, 0x00, +0xD0, 0x03, 0x4C, 0xD9, 0xFF, 0x4C, 0xDC, 0xFF, 0x0B, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x3B, +0x5B, 0xA5, 0x13, 0x85, 0x01, 0xA5, 0x15, 0x85, 0x03, 0x20, 0x59, 0xCF, 0x68, 0x68, 0xE0, 0x00, +0x00, 0xD0, 0x03, 0x4C, 0x97, 0xFF, 0x4C, 0x9A, 0xFF, 0xA4, 0x0D, 0x88, 0x30, 0x1A, 0xA5, 0x01, +0x29, 0x0F, 0x00, 0x20, 0x86, 0xCF, 0xE2, 0x30, 0x97, 0x0F, 0xC2, 0x30, 0xA2, 0x04, 0x00, 0x46, +0x03, 0x66, 0x01, 0xCA, 0xD0, 0xF9, 0x80, 0xE3, 0xA5, 0x01, 0x05, 0x03, 0xD0, 0x04, 0xA2, 0x00, +0x00, 0x60, 0xA2, 0x04, 0x0B, 0x60, 0xC9, 0x0A, 0x00, 0x90, 0x04, 0x18, 0x69, 0x07, 0x00, 0x69, +0x30, 0x00, 0x60, 0x0B, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x3B, 0x5B, 0x20, +0xD3, 0xCF, 0x68, 0x85, 0x15, 0x68, 0xD0, 0x06, 0xFA, 0xD0, 0x07, 0x4C, 0xCE, 0xFF, 0xA2, 0x03, +0x0B, 0x68, 0x4C, 0xD1, 0xFF, 0x0B, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x3B, +0x5B, 0x20, 0xD3, 0xCF, 0x68, 0x85, 0x15, 0x68, 0x85, 0x17, 0xFA, 0xD0, 0x03, 0x4C, 0xCE, 0xFF, +0x4C, 0xD1, 0xFF, 0xA0, 0x00, 0x00, 0xA2, 0x00, 0x00, 0x88, 0xC8, 0xC4, 0x0F, 0xB0, 0x41, 0xB7, +0x11, 0x29, 0x7F, 0x00, 0xC9, 0x20, 0x00, 0xF0, 0xF1, 0xC4, 0x0F, 0xB0, 0x2B, 0xB7, 0x11, 0x29, +0x7F, 0x00, 0x20, 0x23, 0xD0, 0x85, 0x05, 0xA5, 0x03, 0xC9, 0x00, 0x10, 0x90, 0x01, 0xE8, 0x06, +0x01, 0x26, 0x03, 0x06, 0x01, 0x26, 0x03, 0x06, 0x01, 0x26, 0x03, 0x06, 0x01, 0x26, 0x03, 0xA5, +0x01, 0x05, 0x05, 0x85, 0x01, 0xC8, 0x80, 0xD1, 0xE0, 0x00, 0x00, 0xF0, 0x03, 0xA2, 0x03, 0x0B, +0x86, 0x05, 0x60, 0xC9, 0x3A, 0x00, 0x90, 0x16, 0xC9, 0x47, 0x00, 0x90, 0x09, 0xC9, 0x67, 0x00, +0xB0, 0x13, 0x38, 0xE9, 0x20, 0x00, 0xC9, 0x41, 0x00, 0x90, 0x0A, 0xE9, 0x07, 0x00, 0x38, 0xE9, +0x30, 0x00, 0x90, 0x01, 0x60, 0x68, 0xA2, 0x02, 0x0B, 0x4C, 0x20, 0xD0, 0x0B, 0xF4, 0x00, 0x00, +0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x3B, 0x5B, 0xA4, 0x11, 0xA5, 0x17, 0x85, 0x01, 0x10, 0x0C, +0xA5, 0x0F, 0xF0, 0x08, 0x38, 0xA9, 0x00, 0x00, 0xE5, 0x01, 0x85, 0x01, 0x88, 0x30, 0x51, 0x64, +0x05, 0xA2, 0x10, 0x00, 0x18, 0x26, 0x01, 0x26, 0x05, 0x38, 0xA5, 0x05, 0xE9, 0x0A, 0x00, 0x90, +0x02, 0x85, 0x05, 0xCA, 0xD0, 0xEF, 0x26, 0x01, 0xA5, 0x05, 0x18, 0x69, 0x30, 0x00, 0xE2, 0x30, +0x97, 0x13, 0xC2, 0x30, 0xA5, 0x01, 0xD0, 0xD4, 0xA5, 0x0F, 0xF0, 0x10, 0xA5, 0x17, 0x10, 0x0C, +0x88, 0x30, 0x1D, 0xA9, 0x2D, 0x00, 0xE2, 0x30, 0x97, 0x13, 0xC2, 0x30, 0x88, 0x30, 0x0B, 0xE2, +0x30, 0xA9, 0x20, 0x97, 0x13, 0x88, 0x10, 0xF9, 0xC2, 0x30, 0x68, 0x68, 0x68, 0x4C, 0x97, 0xFF, +0xA2, 0x04, 0x0B, 0x68, 0x68, 0x68, 0x4C, 0x9A, 0xFF, 0x0B, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, +0xF4, 0x00, 0x00, 0x3B, 0x5B, 0xA4, 0x11, 0xA5, 0x17, 0x85, 0x01, 0xA5, 0x19, 0x85, 0x03, 0x10, +0x13, 0xA5, 0x0F, 0xF0, 0x0F, 0x38, 0xA9, 0x00, 0x00, 0xE5, 0x01, 0x85, 0x01, 0xA9, 0x00, 0x00, +0xE5, 0x03, 0x85, 0x03, 0x88, 0x30, 0x57, 0x64, 0x05, 0xA2, 0x20, 0x00, 0x18, 0x26, 0x01, 0x26, +0x03, 0x26, 0x05, 0x38, 0xA5, 0x05, 0xE9, 0x0A, 0x00, 0x90, 0x02, 0x85, 0x05, 0xCA, 0xD0, 0xED, +0x26, 0x01, 0x26, 0x03, 0xA5, 0x05, 0x18, 0x69, 0x30, 0x00, 0xE2, 0x30, 0x97, 0x13, 0xC2, 0x30, +0xA5, 0x01, 0x05, 0x02, 0xD0, 0xCE, 0xA5, 0x0F, 0xF0, 0x10, 0xA5, 0x19, 0x10, 0x0C, 0x88, 0x30, +0x1D, 0xA9, 0x2D, 0x00, 0xE2, 0x30, 0x97, 0x13, 0xC2, 0x30, 0x88, 0x30, 0x0B, 0xE2, 0x30, 0xA9, +0x20, 0x97, 0x13, 0x88, 0x10, 0xF9, 0xC2, 0x30, 0x68, 0x68, 0x68, 0x4C, 0xA2, 0xFF, 0xA2, 0x04, +0x0B, 0x68, 0x68, 0x68, 0x4C, 0xA5, 0xFF, 0x0B, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, +0x00, 0x3B, 0x5B, 0x20, 0xE4, 0xD1, 0x68, 0x85, 0x17, 0x68, 0xD0, 0x24, 0xA5, 0x0F, 0xF0, 0x0F, +0xA5, 0x17, 0xC9, 0x00, 0x80, 0xD0, 0x05, 0xC0, 0x00, 0x00, 0xD0, 0x03, 0x0A, 0xB0, 0x11, 0xFA, +0xD0, 0x12, 0x98, 0xF0, 0x08, 0x38, 0xA9, 0x00, 0x00, 0xE5, 0x17, 0x85, 0x17, 0x4C, 0xD9, 0xFF, +0xA2, 0x03, 0x0B, 0x68, 0x4C, 0xDC, 0xFF, 0x0B, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, +0x00, 0x3B, 0x5B, 0x20, 0xE4, 0xD1, 0x68, 0x85, 0x17, 0x68, 0x85, 0x19, 0xA5, 0x0F, 0xF0, 0x15, +0xA5, 0x19, 0xC9, 0x00, 0x80, 0xD0, 0x09, 0xA5, 0x17, 0xD0, 0x05, 0xC0, 0x00, 0x00, 0xD0, 0x05, +0xA5, 0x19, 0x0A, 0xB0, 0x18, 0xFA, 0xD0, 0x19, 0x98, 0xF0, 0x0F, 0x38, 0xA9, 0x00, 0x00, 0xE5, +0x17, 0x85, 0x17, 0xA9, 0x00, 0x00, 0xE5, 0x19, 0x85, 0x19, 0x4C, 0xD9, 0xFF, 0xA2, 0x03, 0x0B, +0x68, 0x4C, 0xDC, 0xFF, 0xA0, 0x00, 0x00, 0xA2, 0x00, 0x00, 0x88, 0xC8, 0xC4, 0x11, 0x90, 0x01, +0x60, 0xB7, 0x13, 0x29, 0x7F, 0x00, 0xC9, 0x20, 0x00, 0xF0, 0xF0, 0xE4, 0x0F, 0xF0, 0x11, 0xC9, +0x2B, 0x00, 0xD0, 0x03, 0xC8, 0x80, 0x09, 0xC9, 0x2D, 0x00, 0xD0, 0x04, 0xC8, 0xA2, 0xFF, 0x00, +0xDA, 0xA2, 0x00, 0x00, 0xC4, 0x11, 0xB0, 0x54, 0xB7, 0x13, 0x29, 0x7F, 0x00, 0xC9, 0x30, 0x00, +0x90, 0x56, 0xC9, 0x3A, 0x00, 0xB0, 0x51, 0x38, 0xE9, 0x30, 0x00, 0x85, 0x05, 0x06, 0x01, 0x26, +0x03, 0x90, 0x01, 0xE8, 0xA5, 0x03, 0x85, 0x17, 0xA5, 0x01, 0x06, 0x01, 0x26, 0x03, 0x90, 0x01, +0xE8, 0x06, 0x01, 0x26, 0x03, 0x90, 0x02, 0xE8, 0x18, 0x65, 0x01, 0x85, 0x01, 0xA5, 0x17, 0x65, +0x03, 0x85, 0x03, 0x90, 0x02, 0xE8, 0x18, 0xA5, 0x01, 0x65, 0x05, 0x85, 0x01, 0x90, 0x0A, 0xA5, +0x03, 0x69, 0x00, 0x00, 0x85, 0x03, 0x90, 0x01, 0xE8, 0xC8, 0x80, 0xA8, 0xE0, 0x00, 0x00, 0xF0, +0x03, 0xA2, 0x03, 0x0B, 0x86, 0x05, 0x7A, 0x60, 0xA2, 0x02, 0x0B, 0x4C, 0x74, 0xD2, 0xE2, 0x30, +0xA3, 0x07, 0x29, 0xF0, 0x4A, 0x4A, 0x4A, 0x4A, 0x20, 0xB1, 0xD2, 0x83, 0x0B, 0xA3, 0x07, 0x29, +0x0F, 0x20, 0xB1, 0xD2, 0x83, 0x0C, 0xA3, 0x08, 0x29, 0xF0, 0x4A, 0x4A, 0x4A, 0x4A, 0x20, 0xB1, +0xD2, 0x83, 0x09, 0xA3, 0x08, 0x29, 0x0F, 0x20, 0xB1, 0xD2, 0x83, 0x0A, 0xC2, 0x30, 0x4C, 0xB7, +0xFF, 0xC9, 0x0A, 0x90, 0x03, 0x18, 0x69, 0x07, 0x69, 0x30, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x8A, +0xFF, 0xFE, 0x00, 0xEA, 0xD2, 0xFE, 0x00, 0x09, 0xD3, 0xFE, 0x00, 0x1F, 0xD3, 0xFE, 0x00, 0x8A, +0xFF, 0xFE, 0x00, 0x27, 0xD3, 0xFE, 0x00, 0x8A, 0xFF, 0xFE, 0x00, 0x8A, 0xFF, 0xFE, 0x00, 0xB7, +0xD3, 0xFE, 0x00, 0x46, 0xE9, 0xFE, 0x00, 0x14, 0xEF, 0xFE, 0x00, 0xA3, 0x07, 0x0B, 0x5B, 0x64, +0x18, 0x64, 0x1A, 0x64, 0x1C, 0x2B, 0xF4, 0x00, 0x00, 0xF4, 0x0A, 0x00, 0xF4, 0x00, 0x00, 0x48, +0xA2, 0x01, 0x0D, 0x22, 0x00, 0x00, 0xE1, 0x4C, 0xB7, 0xFF, 0xF4, 0x00, 0x00, 0xF4, 0x0A, 0x00, +0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xA2, 0x01, 0x0D, 0x22, 0x00, 0x00, 0xE1, 0x4C, 0x8B, 0xFF, +0xA9, 0x00, 0x02, 0x83, 0x07, 0x4C, 0x8B, 0xFF, 0xC9, 0x00, 0x00, 0xF0, 0xF6, 0xA9, 0xFF, 0xFF, +0x80, 0xF1, 0x08, 0x00, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x18, 0x00, +0x0C, 0x00, 0x06, 0x00, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x16, 0x00, +0x0A, 0x00, 0x08, 0x00, 0x06, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x08, 0x00, 0x18, 0x00, +0x0C, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x80, 0x3F, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0x00, +0x00, 0x00, 0x01, 0x3C, 0x81, 0x3F, 0x1E, 0x40, 0x0E, 0x40, 0x3E, 0x40, 0x00, 0x00, 0x42, 0x00, +0x37, 0x00, 0x1A, 0x00, 0x22, 0x00, 0x12, 0x00, 0x42, 0x00, 0x62, 0x00, 0x62, 0x00, 0xFF, 0x7F, +0xFF, 0x43, 0x7F, 0x40, 0x1E, 0x40, 0x0E, 0x40, 0x3E, 0x40, 0xFF, 0x7F, 0x30, 0x49, 0x4E, 0x4E, +0x00, 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x00, +0x00, 0x40, 0x00, 0x40, 0x00, 0x80, 0x00, 0x80, 0x22, 0x64, 0x00, 0xE1, 0x0B, 0x5B, 0x68, 0x85, +0x06, 0x8B, 0x8B, 0x68, 0x85, 0x08, 0x4B, 0xAB, 0x80, 0x04, 0x22, 0x64, 0x00, 0xE1, 0x68, 0x85, +0x00, 0x68, 0x85, 0x02, 0x68, 0x85, 0x04, 0x64, 0x38, 0x64, 0x1E, 0x64, 0x4E, 0x64, 0x50, 0x68, +0x85, 0x0A, 0xEB, 0xA8, 0x29, 0x07, 0x00, 0x0A, 0x85, 0x2E, 0xAA, 0x98, 0x29, 0x70, 0x00, 0xF0, +0x03, 0x4A, 0x4A, 0x4A, 0x85, 0x30, 0xA5, 0x0A, 0x29, 0x1F, 0x00, 0x85, 0x36, 0xA8, 0x4A, 0x90, +0x05, 0xB9, 0xAC, 0xD4, 0x48, 0x60, 0xC9, 0x07, 0x00, 0x90, 0x09, 0xC9, 0x0F, 0x00, 0xD0, 0x72, +0xA6, 0x2E, 0x86, 0x30, 0x86, 0x32, 0xA6, 0x30, 0x86, 0x2E, 0x20, 0xAB, 0xD8, 0xA5, 0x10, 0x85, +0x0C, 0xA5, 0x12, 0x85, 0x0E, 0x20, 0x6D, 0xD8, 0xA6, 0x32, 0x86, 0x2E, 0xBC, 0x52, 0xD3, 0xC4, +0x42, 0x10, 0x02, 0xA4, 0x42, 0x84, 0x34, 0x20, 0xAB, 0xD8, 0xA5, 0x3C, 0x45, 0x46, 0x85, 0x50, +0xA5, 0x30, 0x85, 0x2E, 0xA9, 0xFD, 0xFF, 0xC5, 0x3A, 0x10, 0x06, 0xC5, 0x44, 0x30, 0x2F, 0x10, +0x1B, 0xC5, 0x44, 0x30, 0x06, 0xA5, 0x58, 0xC5, 0x72, 0x90, 0x11, 0x20, 0x4E, 0xD8, 0x38, 0xB0, +0x0E, 0x20, 0x1E, 0xD7, 0xA2, 0x01, 0x01, 0x86, 0x20, 0x4C, 0xFE, 0xD7, 0x20, 0x8C, 0xD8, 0xA5, +0x36, 0xC9, 0x08, 0x00, 0xF0, 0xEE, 0xC9, 0x0A, 0x00, 0xF0, 0xE6, 0x4C, 0xFB, 0xD7, 0xAD, 0xA9, +0xD4, 0x48, 0xA4, 0x36, 0xB9, 0x89, 0xD4, 0x48, 0x60, 0x9D, 0xDC, 0x92, 0xDC, 0xDC, 0xE7, 0x0B, +0xDE, 0xC8, 0xD4, 0xC8, 0xD4, 0x20, 0xDF, 0x5E, 0xD5, 0x6D, 0xD5, 0x88, 0xD5, 0xCA, 0xD5, 0xE2, +0xD5, 0x9D, 0xD5, 0x13, 0xD6, 0x79, 0xD6, 0x8A, 0xD6, 0xFA, 0xD7, 0x2B, 0xD8, 0x25, 0xD7, 0x2B, +0xD7, 0x32, 0xD7, 0x3B, 0xD7, 0x32, 0xE6, 0xEE, 0xE0, 0x46, 0xD7, 0x76, 0xD7, 0x99, 0xD7, 0x00, +0x00, 0xCF, 0xD7, 0xDE, 0xD7, 0xEF, 0xD7, 0xD5, 0xD7, 0x68, 0xAD, 0xAB, 0xD4, 0x48, 0xA5, 0x3A, +0x30, 0x05, 0xA9, 0xFF, 0xFF, 0x80, 0x05, 0xAA, 0xE8, 0x30, 0x01, 0x8A, 0xA6, 0x3C, 0xD0, 0x04, +0x49, 0xFF, 0xFF, 0x1A, 0x85, 0x24, 0xA5, 0x44, 0x30, 0x05, 0xA9, 0xFF, 0xFF, 0x80, 0x05, 0xAA, +0xE8, 0x30, 0x01, 0x8A, 0xA6, 0x46, 0xD0, 0x04, 0x49, 0xFF, 0xFF, 0x1A, 0xC5, 0x24, 0x30, 0x50, +0xD0, 0x57, 0x4A, 0x90, 0x42, 0x38, 0xA5, 0x48, 0xE5, 0x3E, 0xA8, 0xA5, 0x4A, 0xE5, 0x40, 0x30, +0x3B, 0xD0, 0x42, 0x98, 0xD0, 0x3F, 0xA6, 0x4C, 0xE4, 0x42, 0x10, 0x12, 0xA6, 0x42, 0x74, 0x72, +0xCA, 0xCA, 0xE4, 0x4C, 0xD0, 0xF8, 0xA6, 0x42, 0x10, 0x0A, 0x74, 0x58, 0xCA, 0xCA, 0xE4, 0x42, +0xD0, 0xF8, 0xA6, 0x4C, 0x86, 0x24, 0xA2, 0xFE, 0xFF, 0xE8, 0xE8, 0xB5, 0x72, 0xD5, 0x58, 0x90, +0x0B, 0xD0, 0x12, 0xE4, 0x24, 0x30, 0xF2, 0xA2, 0x02, 0x00, 0x80, 0x10, 0xA5, 0x46, 0xD0, 0x09, +0xA2, 0x80, 0x80, 0x80, 0x07, 0xA5, 0x46, 0xD0, 0xF7, 0xA2, 0x40, 0x40, 0x86, 0x20, 0x60, 0x68, +0x85, 0x0C, 0x68, 0x85, 0x0E, 0x20, 0xAB, 0xD8, 0xA5, 0x30, 0x85, 0x2E, 0x80, 0x15, 0x68, 0x85, +0x0C, 0x68, 0x85, 0x0E, 0xA5, 0x2E, 0x85, 0x32, 0xA5, 0x30, 0x85, 0x2E, 0x20, 0xAB, 0xD8, 0xA5, +0x32, 0x85, 0x2E, 0x20, 0x8C, 0xD8, 0x4C, 0xFB, 0xD7, 0xA5, 0x2E, 0x85, 0x30, 0x20, 0xAB, 0xD8, +0xA5, 0x10, 0x85, 0x0C, 0xA5, 0x12, 0x85, 0x0E, 0x20, 0x25, 0xE0, 0x4C, 0xFB, 0xD7, 0x20, 0xAB, +0xD8, 0xA5, 0x10, 0x85, 0x14, 0xA5, 0x12, 0x85, 0x16, 0xA5, 0x10, 0x85, 0x0C, 0xA5, 0x12, 0x85, +0x0E, 0x20, 0x6D, 0xD8, 0x18, 0x68, 0xAA, 0x65, 0x48, 0x85, 0x48, 0x8A, 0x30, 0x04, 0xA5, 0x38, +0xF0, 0x03, 0xA9, 0xFF, 0xFF, 0x65, 0x4A, 0x85, 0x4A, 0x80, 0xB8, 0x20, 0xAB, 0xD8, 0xA5, 0x10, +0x85, 0x0C, 0xA5, 0x12, 0x85, 0x0E, 0x20, 0x8C, 0xD8, 0xA5, 0x4E, 0x30, 0x03, 0x20, 0x48, 0xE5, +0x4C, 0xFB, 0xD7, 0x20, 0xAB, 0xD8, 0xA5, 0x10, 0x85, 0x0C, 0xA5, 0x12, 0x85, 0x0E, 0x20, 0x8C, +0xD8, 0xA5, 0x4E, 0x30, 0x1C, 0xA5, 0x1C, 0x85, 0x34, 0x09, 0x00, 0xC0, 0x85, 0x1C, 0x20, 0x48, +0xE5, 0xA5, 0x34, 0x29, 0x00, 0xC0, 0x85, 0x34, 0xA5, 0x1C, 0x29, 0xFF, 0x3F, 0x05, 0x34, 0x85, +0x1C, 0x4C, 0xFB, 0xD7, 0xA5, 0x2E, 0x85, 0x30, 0x20, 0xAB, 0xD8, 0xA5, 0x10, 0x85, 0x0C, 0xA5, +0x12, 0x85, 0x0E, 0xAD, 0xA9, 0xD4, 0x48, 0xA5, 0x44, 0x30, 0x3B, 0xA9, 0x02, 0x00, 0x85, 0x56, +0x38, 0xA5, 0x48, 0xE9, 0xFF, 0x3F, 0x85, 0x8E, 0xA5, 0x4A, 0xE5, 0x38, 0x85, 0x8C, 0x10, 0x0F, +0x38, 0xA5, 0x38, 0xE5, 0x8E, 0x85, 0x8E, 0xA5, 0x38, 0xE5, 0x8C, 0x85, 0x8C, 0xE6, 0x50, 0x64, +0x54, 0xA9, 0x1E, 0x40, 0x85, 0x52, 0x20, 0xC1, 0xDD, 0xA5, 0x4E, 0x10, 0x08, 0x24, 0x1C, 0x10, +0x04, 0x70, 0x02, 0xE6, 0x50, 0x60, 0x1A, 0xD0, 0x0B, 0xA9, 0x08, 0x00, 0x20, 0x21, 0xD7, 0xE6, +0x50, 0x4C, 0x07, 0xD7, 0x1A, 0xF0, 0xFA, 0x4C, 0x8C, 0xD8, 0x20, 0xAB, 0xD8, 0xA5, 0x44, 0x29, +0xFF, 0x00, 0x0A, 0x46, 0x46, 0x6A, 0x85, 0x20, 0x4C, 0x2C, 0xD8, 0x20, 0xCE, 0xD4, 0x8A, 0x29, +0x00, 0xC0, 0xD0, 0x03, 0x4C, 0x4E, 0xD8, 0x64, 0x46, 0x85, 0x24, 0x10, 0x02, 0xE6, 0x46, 0x45, +0x3C, 0x85, 0x50, 0xA5, 0x1C, 0x48, 0x29, 0xFF, 0x3F, 0x05, 0x24, 0x85, 0x1C, 0x64, 0x44, 0x64, +0x48, 0xA9, 0x00, 0xF0, 0x85, 0x4A, 0x64, 0x4C, 0xA9, 0x00, 0x80, 0x85, 0x72, 0xA5, 0x3A, 0xC9, +0xFE, 0xFF, 0xD0, 0x10, 0x64, 0x3A, 0x64, 0x3E, 0xA9, 0xFF, 0x0F, 0x85, 0x40, 0x64, 0x42, 0xA9, +0x00, 0x80, 0x85, 0x58, 0x20, 0x9E, 0xDC, 0x20, 0xB8, 0xDA, 0x68, 0x29, 0x00, 0xC0, 0x85, 0x34, +0xA5, 0x1C, 0x29, 0xFF, 0x3F, 0x05, 0x34, 0x85, 0x1C, 0xA5, 0x1E, 0x29, 0x06, 0x00, 0xF0, 0x0F, +0x29, 0x02, 0x00, 0xD0, 0x06, 0xA5, 0x4E, 0x30, 0x08, 0x10, 0x04, 0xA5, 0x8C, 0x10, 0x02, 0x64, +0x1E, 0x60, 0xA9, 0xFF, 0xFF, 0xD0, 0x03, 0xA9, 0xFE, 0xFF, 0x85, 0x4E, 0xA9, 0xFE, 0xFF, 0x85, +0x56, 0x60, 0x64, 0x56, 0x09, 0x00, 0x40, 0x85, 0x8C, 0xA9, 0xFD, 0xFF, 0x85, 0x4E, 0xA9, 0x01, +0x00, 0x05, 0x1E, 0x85, 0x1E, 0x60, 0x68, 0x85, 0x1C, 0x4C, 0x2C, 0xD8, 0xA6, 0x1C, 0x86, 0x20, +0x4C, 0x2C, 0xD8, 0x68, 0x85, 0x18, 0x68, 0x85, 0x1A, 0x4C, 0x2C, 0xD8, 0xA6, 0x18, 0x86, 0x20, +0xA4, 0x1A, 0x84, 0x22, 0x4C, 0x2C, 0xD8, 0x68, 0x85, 0x10, 0x68, 0x85, 0x12, 0xBC, 0x32, 0xD3, +0xE0, 0x06, 0x00, 0xB0, 0x0A, 0xB7, 0x10, 0x49, 0x00, 0x80, 0x97, 0x10, 0x4C, 0x2C, 0xD8, 0xE0, +0x0C, 0x00, 0xB0, 0xF1, 0xBB, 0xA4, 0x38, 0x38, 0xA5, 0x38, 0xF7, 0x10, 0x97, 0x10, 0xC8, 0xCA, +0xC8, 0xCA, 0x10, 0xF4, 0x4C, 0x2C, 0xD8, 0x68, 0x85, 0x10, 0x68, 0x85, 0x12, 0xBC, 0x32, 0xD3, +0xB7, 0x10, 0xE0, 0x06, 0x00, 0xB0, 0x08, 0x29, 0xFF, 0x7F, 0x97, 0x10, 0x4C, 0x2C, 0xD8, 0xE0, +0x0C, 0x00, 0xB0, 0xF3, 0x0A, 0xB0, 0xCD, 0x4C, 0x2C, 0xD8, 0x68, 0x85, 0x0C, 0x68, 0x85, 0x0E, +0x68, 0x85, 0x10, 0x68, 0x85, 0x12, 0xBC, 0x32, 0xD3, 0xB7, 0x10, 0xA6, 0x30, 0xBC, 0x32, 0xD3, +0xE0, 0x06, 0x00, 0xB0, 0x0C, 0x0A, 0x08, 0xB7, 0x0C, 0x0A, 0x28, 0x6A, 0x97, 0x0C, 0x4C, 0x2C, +0xD8, 0xE0, 0x0C, 0x00, 0xB0, 0xEF, 0x57, 0x10, 0x29, 0x00, 0x80, 0xD0, 0x97, 0x4C, 0x2C, 0xD8, +0x68, 0xD0, 0x2D, 0x4C, 0x2C, 0xD8, 0x68, 0xEB, 0x25, 0x1C, 0x85, 0x20, 0x4C, 0x2C, 0xD8, 0x68, +0x85, 0x14, 0x68, 0x85, 0x16, 0xA4, 0x38, 0xA5, 0x1C, 0x97, 0x14, 0x64, 0x1C, 0x4C, 0x2C, 0xD8, +0xA5, 0x1C, 0xEB, 0x85, 0x1E, 0x68, 0x85, 0x1C, 0x4C, 0xFE, 0xD7, 0x20, 0xF6, 0xD9, 0xA5, 0x1E, +0x29, 0x1F, 0x00, 0x24, 0x1C, 0xF0, 0x20, 0xA4, 0x18, 0xD0, 0x13, 0xA4, 0x1A, 0xF0, 0x18, 0x80, +0x0D, 0xA4, 0x19, 0xA5, 0x18, 0xD0, 0x01, 0x88, 0x3A, 0x5A, 0x8B, 0x83, 0x01, 0x6B, 0x22, 0x11, +0xD8, 0xFE, 0xA5, 0x1E, 0x29, 0x1F, 0x00, 0xEB, 0x05, 0x1C, 0x85, 0x1C, 0x24, 0x20, 0xA5, 0x20, +0xA4, 0x21, 0xAA, 0x29, 0x00, 0xFF, 0xD4, 0x04, 0xD4, 0x02, 0xD4, 0x00, 0x08, 0xA5, 0x08, 0x48, +0xAB, 0xAB, 0xA5, 0x06, 0x5B, 0xA5, 0x38, 0x28, 0x18, 0x22, 0x68, 0x00, 0xE1, 0x6B, 0xA5, 0x3A, +0x85, 0x4E, 0xA5, 0x3C, 0x85, 0x50, 0xA5, 0x3E, 0x85, 0x52, 0xA5, 0x40, 0x85, 0x54, 0xA6, 0x42, +0x86, 0x56, 0x30, 0x08, 0xB5, 0x58, 0x95, 0x8C, 0xCA, 0xCA, 0x10, 0xF8, 0x60, 0xA5, 0x44, 0x85, +0x3A, 0xA5, 0x46, 0x85, 0x3C, 0xA5, 0x48, 0x85, 0x3E, 0xA5, 0x4A, 0x85, 0x40, 0xA6, 0x4C, 0x86, +0x42, 0x30, 0x08, 0xB5, 0x72, 0x95, 0x58, 0xCA, 0xCA, 0x10, 0xF8, 0x60, 0xA5, 0x44, 0x85, 0x4E, +0xA5, 0x46, 0x85, 0x50, 0xA5, 0x48, 0x85, 0x52, 0xA5, 0x4A, 0x85, 0x54, 0xA6, 0x4C, 0x86, 0x56, +0x30, 0x08, 0xB5, 0x72, 0x95, 0x8C, 0xCA, 0xCA, 0x10, 0xF8, 0x60, 0xFA, 0x68, 0x85, 0x10, 0x68, +0x85, 0x12, 0xDA, 0x64, 0x44, 0x64, 0x46, 0x64, 0x4A, 0xA6, 0x2E, 0xBC, 0x32, 0xD3, 0xE0, 0x06, +0x00, 0x90, 0x6E, 0xE0, 0x0C, 0x00, 0xB0, 0x69, 0x64, 0x74, 0x64, 0x76, 0x64, 0x78, 0xB7, 0x10, +0x10, 0x29, 0xBB, 0xA4, 0x46, 0xE6, 0x46, 0x38, 0xA5, 0x44, 0xF7, 0x10, 0x95, 0x72, 0xC8, 0xCA, +0xC8, 0xCA, 0x10, 0xF4, 0xAA, 0x10, 0x21, 0xA5, 0x2E, 0xC9, 0x0A, 0x00, 0xD0, 0x1A, 0x64, 0x4C, +0xA9, 0x16, 0x40, 0x85, 0x72, 0xA9, 0xFD, 0xFF, 0x85, 0x44, 0x60, 0xBB, 0xA4, 0x46, 0xB7, 0x10, +0x95, 0x72, 0xC8, 0xCA, 0xC8, 0xCA, 0x10, 0xF6, 0xA5, 0x72, 0xD0, 0x17, 0xA5, 0x74, 0x85, 0x72, +0xA5, 0x76, 0x85, 0x74, 0xA5, 0x78, 0x85, 0x76, 0x64, 0x78, 0x88, 0x88, 0xD0, 0xEA, 0x64, 0x4C, +0x4C, 0xA2, 0xD9, 0x98, 0x85, 0x4C, 0x0A, 0x0A, 0x0A, 0x69, 0xFE, 0x3F, 0x85, 0x48, 0x4C, 0xE3, +0xD9, 0xB7, 0x10, 0x0A, 0x26, 0x46, 0x4A, 0x85, 0x48, 0xA2, 0xFE, 0xFF, 0x86, 0x4C, 0x88, 0x88, +0xE8, 0xE8, 0xB7, 0x10, 0xF0, 0x02, 0x86, 0x4C, 0x95, 0x72, 0x88, 0x88, 0x10, 0xF2, 0xA4, 0x2E, +0xF0, 0x3D, 0xC0, 0x0C, 0x00, 0xB0, 0x38, 0xBE, 0x32, 0xD3, 0x86, 0x4C, 0x74, 0x72, 0xBE, 0x60, +0xD3, 0x46, 0x48, 0x66, 0x72, 0x66, 0x74, 0x66, 0x76, 0x66, 0x78, 0xCA, 0xD0, 0xF3, 0xA5, 0x48, +0x38, 0xD0, 0x05, 0xE6, 0x44, 0xE6, 0x48, 0x18, 0x66, 0x72, 0x66, 0x74, 0x66, 0x76, 0x66, 0x78, +0x20, 0xE7, 0xD9, 0xA5, 0x48, 0xD9, 0x6A, 0xD3, 0xB0, 0x21, 0x79, 0x64, 0xD3, 0x85, 0x48, 0xA5, +0x48, 0xD0, 0x06, 0xA6, 0x72, 0x30, 0x02, 0xE6, 0x44, 0xC9, 0xFF, 0x7F, 0xF0, 0x0D, 0xA6, 0x4C, +0x10, 0x41, 0xA9, 0xFF, 0xFF, 0x85, 0x44, 0x3A, 0x85, 0x4C, 0x60, 0xA5, 0x72, 0xA2, 0xFE, 0xFF, +0xA4, 0x4C, 0x30, 0x19, 0xD0, 0x05, 0xC9, 0x00, 0x80, 0xF0, 0x12, 0xCA, 0x09, 0x00, 0x40, 0xC5, +0x72, 0xF0, 0x0A, 0xCA, 0x85, 0x72, 0xA5, 0x1E, 0x09, 0x01, 0x00, 0x85, 0x1E, 0x86, 0x44, 0x4C, +0xE7, 0xD9, 0xA6, 0x4C, 0x18, 0x36, 0x72, 0xCA, 0xCA, 0x10, 0xFA, 0xA5, 0x48, 0xD0, 0x02, 0xC6, +0x4A, 0xC6, 0x48, 0xA5, 0x72, 0x10, 0xEB, 0xA6, 0x4C, 0x30, 0x0A, 0xB5, 0x72, 0xD0, 0x06, 0xCA, +0xCA, 0x86, 0x4C, 0x10, 0xF6, 0x60, 0xA6, 0x2E, 0xA4, 0x4E, 0x30, 0x2B, 0x20, 0xB8, 0xDA, 0xA6, +0x2E, 0xD0, 0x03, 0x4C, 0x8C, 0xDA, 0xE0, 0x06, 0x00, 0x90, 0x4F, 0xE0, 0x0C, 0x00, 0xB0, 0x7C, +0xBC, 0x32, 0xD3, 0xA6, 0x50, 0xF0, 0x0E, 0xBB, 0x38, 0xA5, 0x38, 0xF5, 0x8C, 0x95, 0x8C, 0xCA, +0xCA, 0x10, 0xF6, 0xA6, 0x38, 0xF0, 0x7E, 0xC8, 0xD0, 0x12, 0x64, 0x56, 0xA5, 0x56, 0xC6, 0x56, +0xE0, 0x06, 0x00, 0x90, 0x5A, 0xE0, 0x0C, 0x00, 0x90, 0x58, 0xB0, 0x53, 0xBD, 0x8E, 0xD3, 0x85, +0x52, 0xE0, 0x06, 0x00, 0x90, 0xB9, 0xE0, 0x0C, 0x00, 0xB0, 0xB4, 0x20, 0x1E, 0xD7, 0xBC, 0x32, +0xD3, 0x64, 0x56, 0xA6, 0x56, 0xA9, 0x00, 0x80, 0xD0, 0x4D, 0xBC, 0x60, 0xD3, 0xA6, 0x56, 0x30, +0x07, 0x18, 0x36, 0x8C, 0xCA, 0xCA, 0x10, 0xFA, 0xA6, 0x4E, 0xE8, 0xD0, 0x03, 0x8A, 0xF0, 0x1F, +0x10, 0x01, 0x38, 0xA6, 0x2E, 0xA5, 0x52, 0xFD, 0x64, 0xD3, 0x85, 0x52, 0x18, 0xA6, 0x56, 0x30, +0x06, 0x36, 0x8C, 0xCA, 0xCA, 0x10, 0xFA, 0x26, 0x52, 0x88, 0xD0, 0xF0, 0xA5, 0x52, 0x0A, 0x46, +0x50, 0x6A, 0xA6, 0x2E, 0xBC, 0x32, 0xD3, 0x97, 0x0C, 0xA2, 0xFF, 0xFF, 0x88, 0x30, 0x0E, 0xE4, +0x56, 0x10, 0x0B, 0xE8, 0x88, 0xB5, 0x8C, 0x97, 0x0C, 0xE8, 0x88, 0x10, 0xF2, 0x60, 0xA9, 0x00, +0x00, 0x88, 0x97, 0x0C, 0x88, 0x10, 0xFA, 0x60, 0xA6, 0x2E, 0xA9, 0xC0, 0x00, 0x25, 0x1C, 0xF0, +0x0A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0xC5, 0x2E, 0x90, 0x01, 0xAA, 0x86, 0x32, 0xE0, 0x0E, 0x00, +0xF0, 0x20, 0x18, 0xBD, 0x70, 0xD3, 0xE5, 0x52, 0x85, 0xBE, 0xA5, 0x38, 0xE5, 0x54, 0x30, 0x12, +0x85, 0xC0, 0xE6, 0xBE, 0xD0, 0x02, 0xE6, 0xC0, 0xBD, 0x70, 0xD3, 0x85, 0x52, 0x64, 0x54, 0x20, +0x8C, 0xE8, 0xA4, 0x32, 0xBE, 0x42, 0xD3, 0x86, 0x2A, 0x88, 0x30, 0x4D, 0x88, 0xD0, 0x23, 0xA9, +0x04, 0x00, 0xC5, 0x56, 0x10, 0x47, 0xA5, 0x92, 0x29, 0x00, 0x08, 0x85, 0x26, 0xA5, 0x92, 0x29, +0x00, 0x04, 0x85, 0x24, 0xA5, 0x92, 0x85, 0x28, 0x29, 0x00, 0xF8, 0x85, 0x92, 0xA9, 0xFF, 0x03, +0xD0, 0x22, 0x88, 0x88, 0xD0, 0x23, 0xA5, 0x56, 0xF0, 0x23, 0xA5, 0x8E, 0x29, 0x00, 0x01, 0x85, +0x26, 0xA5, 0x8E, 0x29, 0x80, 0x00, 0x85, 0x24, 0xA5, 0x8E, 0x85, 0x28, 0x29, 0x00, 0xFF, 0x85, +0x8E, 0xA9, 0x7F, 0x00, 0x25, 0x28, 0x18, 0x90, 0x17, 0xE4, 0x56, 0x30, 0x03, 0x4C, 0xF9, 0xDB, +0xB5, 0x8C, 0x29, 0x01, 0x00, 0x85, 0x26, 0x64, 0x24, 0xE8, 0xE8, 0xB5, 0x8C, 0x0A, 0x66, 0x24, +0xA8, 0xD0, 0x0A, 0xE4, 0x56, 0x10, 0x06, 0xE8, 0xE8, 0x15, 0x8C, 0xF0, 0xF6, 0x85, 0x28, 0xA6, +0x2A, 0x86, 0x56, 0x05, 0x24, 0xF0, 0x6C, 0xA5, 0x1E, 0x09, 0x10, 0x00, 0xA6, 0x8C, 0x30, 0x0F, +0xA4, 0x32, 0xC0, 0x06, 0x00, 0x90, 0x05, 0xC0, 0x0C, 0x00, 0x90, 0x03, 0x09, 0x02, 0x00, 0x85, +0x1E, 0xA9, 0x00, 0xC0, 0x24, 0x1C, 0xF0, 0x10, 0x30, 0x06, 0xA5, 0x50, 0xF0, 0x14, 0xD0, 0x43, +0x70, 0x41, 0xA5, 0x50, 0xD0, 0x0C, 0xF0, 0x3B, 0xA5, 0x24, 0xF0, 0x37, 0xA5, 0x28, 0x05, 0x26, +0xF0, 0x31, 0xA4, 0x32, 0xBE, 0x42, 0xD3, 0x88, 0x30, 0x18, 0x88, 0xD0, 0x05, 0xA9, 0x00, 0x08, +0xD0, 0x07, 0x88, 0x88, 0xD0, 0x0C, 0xA9, 0x00, 0x01, 0x18, 0x75, 0x8C, 0x95, 0x8C, 0x90, 0x13, +0xB0, 0x04, 0xF6, 0x8C, 0xD0, 0x0D, 0xCA, 0xCA, 0x10, 0xF8, 0x38, 0x66, 0x8C, 0xE6, 0x52, 0xD0, +0x02, 0xE6, 0x54, 0xA6, 0x56, 0xB5, 0x8C, 0xD0, 0x10, 0xC6, 0x56, 0xC6, 0x56, 0x10, 0xF4, 0xA4, +0x2E, 0xB9, 0x70, 0xD3, 0x85, 0x52, 0x4C, 0x02, 0xD7, 0xA4, 0x32, 0xC0, 0x06, 0x00, 0x90, 0x38, +0xC0, 0x0C, 0x00, 0xB0, 0x2E, 0xA6, 0x8C, 0x10, 0x1C, 0xA5, 0x50, 0xF0, 0x19, 0xA5, 0x54, 0xD0, +0x15, 0xA5, 0x52, 0xD9, 0x8E, 0xD3, 0xD0, 0x0B, 0xA5, 0x56, 0xD0, 0x0A, 0xE0, 0x00, 0x80, 0xF0, +0x04, 0xD0, 0x03, 0xB0, 0x01, 0x60, 0xA9, 0x00, 0x80, 0x85, 0x8C, 0x64, 0x56, 0x20, 0x1E, 0xD7, +0x4C, 0x07, 0xD7, 0xC0, 0x0E, 0x00, 0xF0, 0xED, 0xA5, 0x54, 0x30, 0xE9, 0xD0, 0x07, 0xA5, 0x52, +0xD9, 0x8E, 0xD3, 0x90, 0xE0, 0xA5, 0x1E, 0x09, 0x14, 0x00, 0x85, 0x1E, 0x64, 0x54, 0xB9, 0x8E, +0xD3, 0x85, 0x52, 0xA9, 0x00, 0xC0, 0x24, 0x1C, 0xF0, 0x08, 0x50, 0x10, 0x30, 0x12, 0xA5, 0x50, +0xD0, 0x0E, 0xA4, 0x2E, 0xB9, 0x8E, 0xD3, 0x85, 0x52, 0x4C, 0x07, 0xD7, 0xA5, 0x50, 0xD0, 0xF2, +0xC6, 0x52, 0xBE, 0x42, 0xD3, 0x86, 0x56, 0xA9, 0xFF, 0xFF, 0x95, 0x8C, 0xCA, 0xCA, 0x10, 0xFA, +0x88, 0x88, 0xD0, 0x05, 0xA9, 0x00, 0xF8, 0x85, 0x92, 0x88, 0x88, 0xD0, 0x98, 0xA9, 0x00, 0xFF, +0x85, 0x8E, 0x60, 0xA9, 0x01, 0x00, 0x45, 0x46, 0x85, 0x46, 0x45, 0x3C, 0x85, 0x50, 0xA6, 0x3A, +0x30, 0x09, 0xA4, 0x44, 0x10, 0x27, 0xC8, 0xF0, 0x10, 0x30, 0x08, 0xA4, 0x44, 0xE8, 0x30, 0x06, +0xC8, 0xF0, 0x13, 0x4C, 0x8C, 0xD8, 0xC8, 0x30, 0x03, 0x4C, 0x4E, 0xD8, 0xA5, 0x50, 0xF0, 0xF9, +0xA9, 0x02, 0x40, 0x4C, 0x12, 0xD7, 0xA5, 0x50, 0xF0, 0xEF, 0x4C, 0xE5, 0xDD, 0x38, 0xA5, 0x3E, +0xE5, 0x48, 0x85, 0xBE, 0xA5, 0x40, 0xE5, 0x4A, 0x85, 0xC0, 0x30, 0x1F, 0xA5, 0x44, 0x85, 0x4E, +0xA5, 0x3C, 0x85, 0x50, 0xA5, 0x3E, 0x85, 0x52, 0xA5, 0x40, 0x85, 0x54, 0xA6, 0x4C, 0x86, 0x56, +0xB5, 0x72, 0x95, 0x8C, 0xCA, 0xCA, 0x10, 0xF8, 0x4C, 0x41, 0xDD, 0xA5, 0x3A, 0x85, 0x4E, 0xA5, +0x46, 0x85, 0x50, 0xA5, 0x48, 0x85, 0x52, 0xA5, 0x4A, 0x85, 0x54, 0xA6, 0x42, 0x86, 0x56, 0xB5, +0x58, 0x95, 0x8C, 0xCA, 0xCA, 0x10, 0xF8, 0xA5, 0x3C, 0x85, 0x46, 0xA6, 0x4C, 0x86, 0x42, 0xB5, +0x72, 0x95, 0x58, 0xCA, 0xCA, 0x10, 0xF8, 0xA6, 0x2E, 0xBC, 0x52, 0xD3, 0xC4, 0x42, 0x10, 0x02, +0xA4, 0x42, 0x84, 0x34, 0x38, 0xA5, 0x38, 0xE5, 0xBE, 0x85, 0xBE, 0xA5, 0x38, 0xE5, 0xC0, 0x85, +0xC0, 0x20, 0x8C, 0xE8, 0xA6, 0x56, 0xE4, 0x42, 0x10, 0x08, 0xE8, 0xE8, 0x86, 0x56, 0x74, 0x8C, +0x10, 0xF4, 0xA5, 0x46, 0x45, 0x50, 0xD0, 0x3D, 0xA6, 0x42, 0x18, 0xB5, 0x58, 0x75, 0x8C, 0x95, +0x8C, 0xCA, 0xCA, 0x10, 0xF6, 0x90, 0x2D, 0xA6, 0x56, 0x9B, 0xA6, 0x38, 0x76, 0x8C, 0xE8, 0x88, +0xE8, 0x88, 0x10, 0xF8, 0xE6, 0x52, 0xD0, 0x02, 0xE6, 0x54, 0x90, 0x18, 0xA6, 0x56, 0xE4, 0x34, +0x90, 0x07, 0xB5, 0x8C, 0x09, 0x01, 0x00, 0xD0, 0x09, 0xE8, 0xE8, 0x86, 0x56, 0xE6, 0x26, 0xA9, +0x00, 0x80, 0x95, 0x8C, 0x60, 0xA6, 0x42, 0xE4, 0x56, 0x10, 0x08, 0xE8, 0xE8, 0x86, 0x42, 0x74, +0x58, 0x10, 0xF4, 0x38, 0xB5, 0x58, 0xF5, 0x8C, 0x95, 0x8C, 0xCA, 0xCA, 0x10, 0xF6, 0xB0, 0x11, +0xA6, 0x56, 0x38, 0xA5, 0x38, 0xF5, 0x8C, 0x95, 0x8C, 0xCA, 0xCA, 0x10, 0xF6, 0xA5, 0x46, 0x85, +0x50, 0xA5, 0x8C, 0xD0, 0x44, 0xA2, 0xFE, 0xFF, 0xA5, 0x56, 0xF0, 0x19, 0x4A, 0xE8, 0xE8, 0xB4, +0x8E, 0x94, 0x8C, 0x3A, 0xD0, 0xF7, 0x86, 0x56, 0xA5, 0x52, 0xE9, 0x0F, 0x00, 0x85, 0x52, 0xB0, +0xE0, 0xC6, 0x54, 0x90, 0xDC, 0x64, 0x50, 0xA5, 0x1C, 0x29, 0x00, 0xC0, 0x0A, 0x90, 0x04, 0xD0, +0x02, 0x26, 0x50, 0x4C, 0x02, 0xD7, 0xA6, 0x56, 0x18, 0x36, 0x8C, 0xCA, 0xCA, 0x10, 0xFA, 0xA5, +0x52, 0xD0, 0x02, 0xC6, 0x54, 0xC6, 0x52, 0xA5, 0x8C, 0x10, 0xEB, 0x60, 0xA6, 0x3A, 0x30, 0x10, +0xA4, 0x44, 0x10, 0x1C, 0xC8, 0x30, 0x10, 0xA9, 0x08, 0x00, 0x20, 0x21, 0xD7, 0x4C, 0x07, 0xD7, +0xE4, 0x44, 0xF0, 0x06, 0xE8, 0x30, 0xF6, 0x4C, 0x02, 0xD7, 0xA9, 0x04, 0x40, 0x4C, 0x12, 0xD7, +0x20, 0xEA, 0xDE, 0xA6, 0x30, 0xBD, 0x7E, 0xD3, 0x85, 0x26, 0x46, 0x26, 0x46, 0x26, 0x46, 0x26, +0x46, 0x26, 0x29, 0x0F, 0x00, 0x85, 0x28, 0x64, 0x56, 0x20, 0xB5, 0xDE, 0xA6, 0x56, 0xA5, 0x24, +0x95, 0x8C, 0xE6, 0x56, 0xE6, 0x56, 0xC6, 0x26, 0xD0, 0xEF, 0xA4, 0x28, 0x20, 0xB8, 0xDE, 0xA5, +0x24, 0x4A, 0x6A, 0xC6, 0x28, 0xD0, 0xFB, 0xA6, 0x56, 0x95, 0x8C, 0xA6, 0x42, 0xB5, 0x58, 0xD0, +0x06, 0xCA, 0xCA, 0x10, 0xF8, 0x30, 0x09, 0xA6, 0x56, 0xA9, 0x01, 0x00, 0x15, 0x8C, 0x95, 0x8C, +0x38, 0xA5, 0x3E, 0xE5, 0x48, 0x85, 0x52, 0xA5, 0x40, 0xE5, 0x4A, 0x85, 0x54, 0xA5, 0x8C, 0x0A, +0xB0, 0x09, 0xA6, 0x56, 0x18, 0x36, 0x8C, 0xCA, 0xCA, 0x10, 0xFA, 0xA5, 0x52, 0x69, 0xFE, 0x3F, +0x85, 0x52, 0xA5, 0x54, 0x65, 0x38, 0x85, 0x54, 0xA6, 0x56, 0xB5, 0x8C, 0xD0, 0x06, 0xC6, 0x56, +0xC6, 0x56, 0x10, 0xF4, 0x60, 0xA0, 0x10, 0x00, 0x64, 0x24, 0xA5, 0x58, 0xC5, 0x72, 0x90, 0x1B, +0xA6, 0x4C, 0xB5, 0x58, 0xF5, 0x72, 0x95, 0x58, 0xCA, 0xCA, 0x10, 0xF6, 0xB0, 0x0D, 0xA6, 0x4C, +0xB5, 0x58, 0x75, 0x72, 0x95, 0x58, 0xCA, 0xCA, 0x10, 0xF6, 0x18, 0x26, 0x24, 0xA6, 0x42, 0x18, +0x36, 0x58, 0xCA, 0xCA, 0x10, 0xFA, 0x88, 0xD0, 0xD1, 0x60, 0xA6, 0x38, 0xA5, 0x42, 0x4A, 0x76, +0x58, 0xE8, 0xE8, 0x3A, 0x10, 0xF9, 0x90, 0x06, 0x86, 0x42, 0x74, 0x58, 0x76, 0x58, 0xA6, 0x38, +0xA5, 0x4C, 0x4A, 0x76, 0x72, 0xE8, 0xE8, 0x3A, 0x10, 0xF9, 0x90, 0x06, 0x86, 0x4C, 0x74, 0x72, +0x76, 0x72, 0xA6, 0x42, 0xE4, 0x4C, 0xB0, 0x08, 0xE8, 0xE8, 0x86, 0x42, 0x74, 0x58, 0x10, 0xF4, +0x60, 0xA5, 0x50, 0x4A, 0x64, 0x20, 0x66, 0x20, 0xEB, 0x05, 0x20, 0x85, 0x20, 0xA5, 0x3C, 0x85, +0x50, 0xA5, 0x3A, 0xA6, 0x44, 0x30, 0x03, 0xA8, 0x10, 0x13, 0xC9, 0xFE, 0xFF, 0xF0, 0x08, 0xE0, +0xFF, 0xFF, 0xF0, 0x03, 0x4C, 0x4E, 0xD8, 0xA9, 0x09, 0x40, 0x4C, 0x12, 0xD7, 0x20, 0xEA, 0xDE, +0x64, 0x24, 0x38, 0xA5, 0x3E, 0xE5, 0x48, 0x85, 0x52, 0xA5, 0x40, 0xE5, 0x4A, 0x85, 0x54, 0xE6, +0x52, 0xD0, 0x02, 0xE6, 0x54, 0x24, 0x54, 0x30, 0x7C, 0xA0, 0x01, 0x00, 0x20, 0xB8, 0xDE, 0xA4, +0x52, 0xF0, 0x03, 0x20, 0xBA, 0xDE, 0xC6, 0x54, 0x30, 0x07, 0xA4, 0x38, 0x20, 0xBA, 0xDE, 0x80, +0xF5, 0x18, 0xA5, 0x48, 0xE5, 0x38, 0x85, 0x52, 0xA5, 0x4A, 0xE5, 0x38, 0x85, 0x54, 0x46, 0x24, +0xA5, 0x24, 0x85, 0x2A, 0x90, 0x39, 0xA6, 0x42, 0xB5, 0x58, 0xD0, 0x08, 0xCA, 0xCA, 0x10, 0xF8, +0x46, 0x24, 0x90, 0x0D, 0xA5, 0x2A, 0x65, 0x38, 0x85, 0x2A, 0xA5, 0x50, 0x49, 0x01, 0x00, 0x85, +0x50, 0xA6, 0x4C, 0x36, 0x72, 0xCA, 0xCA, 0x10, 0xFA, 0xA6, 0x4C, 0xE4, 0x42, 0xB0, 0x06, 0xE8, +0xE8, 0x74, 0x72, 0x10, 0xF6, 0xB5, 0x72, 0xF5, 0x58, 0x95, 0x58, 0xCA, 0xCA, 0x10, 0xF6, 0xA5, +0x2A, 0x29, 0x7F, 0x00, 0x05, 0x20, 0x85, 0x20, 0xA6, 0x42, 0xB5, 0x58, 0xD0, 0x14, 0xCA, 0xCA, +0x10, 0xF8, 0x4C, 0x02, 0xD7, 0x38, 0xA5, 0x3E, 0x65, 0x38, 0x85, 0x52, 0xA5, 0x40, 0x65, 0x38, +0x85, 0x54, 0xA6, 0x42, 0x86, 0x56, 0xB5, 0x58, 0x95, 0x8C, 0xCA, 0xCA, 0x10, 0xF8, 0xAA, 0x30, +0x23, 0xA6, 0x56, 0x18, 0x36, 0x8C, 0xCA, 0xCA, 0x10, 0xFA, 0xA5, 0x52, 0xD0, 0x02, 0xC6, 0x54, +0xC6, 0x52, 0xA5, 0x8C, 0x10, 0xEB, 0xA6, 0x56, 0x30, 0x0A, 0xB5, 0x8C, 0xD0, 0x06, 0xCA, 0xCA, +0x86, 0x56, 0x10, 0xF6, 0x60, 0xA5, 0x46, 0x85, 0x50, 0xF0, 0x12, 0xA5, 0x44, 0x10, 0x05, 0xC9, +0xFE, 0xFF, 0xD0, 0x06, 0xA9, 0x01, 0x40, 0x4C, 0x12, 0xD7, 0x4C, 0x8C, 0xD8, 0xA5, 0x44, 0x30, +0xF9, 0x20, 0xFE, 0xDE, 0x18, 0xA9, 0x01, 0x40, 0x65, 0x48, 0x85, 0x52, 0xA5, 0x38, 0x65, 0x4A, +0x85, 0x54, 0xA5, 0x54, 0x0A, 0x66, 0x54, 0x66, 0x52, 0xB0, 0x03, 0x20, 0xFE, 0xDE, 0xA6, 0x2E, +0xBC, 0x7E, 0xD3, 0xA9, 0x00, 0x20, 0x64, 0x56, 0xA6, 0x56, 0x85, 0x8C, 0x85, 0x24, 0xF0, 0x2E, +0x46, 0x24, 0x90, 0x1A, 0xA9, 0x00, 0x80, 0x85, 0x24, 0xE6, 0x56, 0xE6, 0x56, 0xA6, 0x56, 0x74, +0x8C, 0xA6, 0x4C, 0xE4, 0x56, 0xB0, 0x06, 0xE8, 0xE8, 0x86, 0x4C, 0x74, 0x72, 0x18, 0xA6, 0x4C, +0x36, 0x72, 0xCA, 0xCA, 0x10, 0xFA, 0xA6, 0x56, 0xB5, 0x8C, 0x05, 0x24, 0x95, 0x8C, 0xA5, 0x72, +0xC5, 0x8C, 0x90, 0x29, 0xA6, 0x56, 0xB5, 0x72, 0xF5, 0x8C, 0x95, 0x72, 0xCA, 0xCA, 0x10, 0xF6, +0xA6, 0x56, 0x90, 0x0F, 0x18, 0xA5, 0x24, 0x75, 0x8C, 0x95, 0x8C, 0x90, 0x18, 0xA5, 0x38, 0xCA, +0xCA, 0x10, 0xF4, 0xB5, 0x72, 0x75, 0x8C, 0x95, 0x72, 0xCA, 0xCA, 0x10, 0xF6, 0xA6, 0x56, 0xA5, +0x24, 0x55, 0x8C, 0x95, 0x8C, 0x88, 0x10, 0x98, 0xA6, 0x4C, 0xB5, 0x72, 0xD0, 0x06, 0xCA, 0xCA, +0x10, 0xF8, 0x30, 0x08, 0xA6, 0x56, 0xA5, 0x24, 0x15, 0x8C, 0x95, 0x8C, 0x4C, 0x01, 0xE0, 0x68, +0x85, 0x14, 0x68, 0x85, 0x16, 0x20, 0xAB, 0xD8, 0x68, 0x85, 0x0C, 0x68, 0x85, 0x0E, 0xA4, 0x38, +0xB7, 0x0C, 0x85, 0xAC, 0xA5, 0x46, 0x97, 0x14, 0xC8, 0xC8, 0xB7, 0x0C, 0x85, 0xAE, 0xA5, 0x44, +0x10, 0x5E, 0xE2, 0x30, 0x49, 0xFF, 0xAA, 0xBD, 0x9C, 0xD3, 0xA0, 0x05, 0x97, 0x14, 0xE0, 0x02, +0xA9, 0x01, 0x90, 0x31, 0xA6, 0x4C, 0xE8, 0xE8, 0x86, 0x24, 0xA2, 0x00, 0xB5, 0x73, 0x4A, 0x4A, +0x4A, 0x4A, 0x20, 0x60, 0xE1, 0xB5, 0x73, 0x29, 0x0F, 0x20, 0x60, 0xE1, 0xB5, 0x72, 0x4A, 0x4A, +0x4A, 0x4A, 0x20, 0x60, 0xE1, 0xB5, 0x72, 0x29, 0x0F, 0x20, 0x60, 0xE1, 0xE8, 0xE8, 0xE4, 0x24, +0x90, 0xDA, 0x98, 0xE9, 0x04, 0xA0, 0x04, 0x97, 0x14, 0xC2, 0x30, 0x4C, 0xFE, 0xD7, 0xE2, 0x30, +0xC9, 0x0A, 0xB0, 0x04, 0x09, 0x30, 0x90, 0x02, 0x69, 0x56, 0xC8, 0x97, 0x14, 0x60, 0xC2, 0x30, +0xA9, 0x0E, 0x00, 0x85, 0x30, 0xA5, 0xAC, 0xD0, 0x0A, 0xA5, 0xAE, 0x30, 0x02, 0xD0, 0x04, 0x64, +0xAE, 0xE6, 0xAE, 0x20, 0x7C, 0xE2, 0x20, 0xD2, 0xE3, 0x38, 0xA5, 0xAC, 0xD0, 0x06, 0xA5, 0xAE, +0x85, 0xA6, 0xB0, 0x06, 0xA5, 0xA8, 0x65, 0xAE, 0x85, 0xA6, 0x30, 0x0D, 0x38, 0xA9, 0x1C, 0x00, +0xE5, 0xA6, 0x10, 0x05, 0xA9, 0x1C, 0x00, 0x85, 0xA6, 0x18, 0xA5, 0xA6, 0xE5, 0xA8, 0x85, 0xAA, +0x85, 0x24, 0xA5, 0xA6, 0x30, 0x02, 0xD0, 0x04, 0x64, 0xA6, 0xE6, 0xA6, 0xA0, 0x02, 0x00, 0x38, +0xA5, 0x38, 0xE5, 0xAA, 0x97, 0x14, 0x20, 0x74, 0xE3, 0x20, 0x48, 0xE5, 0x64, 0x58, 0x64, 0x42, +0xA5, 0x4E, 0x30, 0x59, 0x64, 0x28, 0x38, 0xA5, 0x52, 0xE9, 0xFF, 0x3F, 0x85, 0x2C, 0x29, 0x0F, +0x00, 0x85, 0x2A, 0x46, 0x2C, 0x46, 0x2C, 0x46, 0x2C, 0x46, 0x2C, 0x64, 0xC2, 0xF8, 0xA6, 0xC2, +0xE4, 0x56, 0xF0, 0x02, 0x10, 0x04, 0xB5, 0x8C, 0x85, 0x24, 0xE6, 0xC2, 0xE6, 0xC2, 0xA9, 0x0F, +0x00, 0xC6, 0x2C, 0x10, 0x02, 0xA5, 0x2A, 0x85, 0x26, 0xA6, 0x38, 0xA4, 0x28, 0x06, 0x24, 0xB5, +0x58, 0x75, 0x58, 0x95, 0x58, 0xE8, 0xE8, 0x88, 0x10, 0xF5, 0x90, 0x08, 0x74, 0x58, 0x36, 0x58, +0x86, 0x42, 0xE6, 0x28, 0xC6, 0x26, 0x10, 0xE1, 0x24, 0x2C, 0x10, 0xC2, 0xD8, 0xE2, 0x30, 0xA0, +0x04, 0x38, 0x98, 0x65, 0xA6, 0x85, 0x24, 0xA6, 0x42, 0xB5, 0x59, 0xF0, 0x01, 0xE8, 0xA9, 0xF0, +0x35, 0x58, 0xF0, 0x0F, 0xB5, 0x58, 0x4A, 0x4A, 0x4A, 0x4A, 0x09, 0x30, 0xC8, 0xC4, 0x24, 0xB0, +0x1F, 0x97, 0x14, 0xB5, 0x58, 0x29, 0x0F, 0x09, 0x30, 0xC8, 0xC4, 0x24, 0xB0, 0x12, 0x97, 0x14, +0xCA, 0x10, 0xE1, 0x38, 0x98, 0xE9, 0x04, 0xA0, 0x04, 0x97, 0x14, 0xC2, 0x30, 0x4C, 0xFE, 0xD7, +0xC2, 0x30, 0x20, 0x17, 0xE3, 0x64, 0x1E, 0xE6, 0xA8, 0x4C, 0x89, 0xE1, 0xA5, 0x44, 0x85, 0xB0, +0xA5, 0x46, 0x85, 0xB2, 0xA5, 0x48, 0x85, 0xB4, 0xA5, 0x4A, 0x85, 0xB6, 0xA6, 0x4C, 0x86, 0xB8, +0x30, 0x08, 0xB5, 0x72, 0x95, 0xC4, 0xCA, 0xCA, 0x10, 0xF8, 0x60, 0xA5, 0x44, 0x85, 0xBA, 0xA5, +0x46, 0x85, 0xBC, 0xA5, 0x48, 0x85, 0xBE, 0xA5, 0x4A, 0x85, 0xC0, 0xA6, 0x4C, 0x86, 0xC2, 0x30, +0x08, 0xB5, 0x72, 0x95, 0xDE, 0xCA, 0xCA, 0x10, 0xF8, 0x60, 0xA5, 0x4E, 0x85, 0x44, 0xA5, 0x50, +0x85, 0x46, 0xA5, 0x52, 0x85, 0x48, 0xA5, 0x54, 0x85, 0x4A, 0xA6, 0x56, 0x86, 0x4C, 0x30, 0x08, +0xB5, 0x8C, 0x95, 0x72, 0xCA, 0xCA, 0x10, 0xF8, 0x60, 0xA5, 0x4E, 0x85, 0xBA, 0xA5, 0x50, 0x85, +0xBC, 0xA5, 0x52, 0x85, 0xBE, 0xA5, 0x54, 0x85, 0xC0, 0xA6, 0x56, 0x86, 0xC2, 0x30, 0x08, 0xB5, +0x8C, 0x95, 0xDE, 0xCA, 0xCA, 0x10, 0xF8, 0x60, 0xA5, 0xB0, 0x85, 0x3A, 0xA5, 0xB2, 0x85, 0x3C, +0xA5, 0xB4, 0x85, 0x3E, 0xA5, 0xB6, 0x85, 0x40, 0xA6, 0xB8, 0x86, 0x42, 0x30, 0x08, 0xB5, 0xC4, +0x95, 0x58, 0xCA, 0xCA, 0x10, 0xF8, 0x60, 0xA5, 0xB0, 0x85, 0x44, 0xA5, 0xB2, 0x85, 0x46, 0xA5, +0xB4, 0x85, 0x48, 0xA5, 0xB6, 0x85, 0x4A, 0xA6, 0xB8, 0x86, 0x4C, 0x30, 0x08, 0xB5, 0xC4, 0x95, +0x72, 0xCA, 0xCA, 0x10, 0xF8, 0x60, 0xA5, 0xBA, 0x85, 0x3A, 0xA5, 0xBC, 0x85, 0x3C, 0xA5, 0xBE, +0x85, 0x3E, 0xA5, 0xC0, 0x85, 0x40, 0xA6, 0xC2, 0x86, 0x42, 0x30, 0x08, 0xB5, 0xDE, 0x95, 0x58, +0xCA, 0xCA, 0x10, 0xF8, 0x60, 0xA5, 0xBA, 0x85, 0x44, 0xA5, 0xBC, 0x85, 0x46, 0xA5, 0xBE, 0x85, +0x48, 0xA5, 0xC0, 0x85, 0x4A, 0xA6, 0xC2, 0x86, 0x4C, 0x30, 0x08, 0xB5, 0xDE, 0x95, 0x72, 0xCA, +0xCA, 0x10, 0xF8, 0x60, 0xD0, 0x03, 0x4C, 0x8C, 0xD8, 0x85, 0x2C, 0x30, 0x02, 0x85, 0xAA, 0xA5, +0x1C, 0x29, 0x00, 0xC0, 0x48, 0x0A, 0x64, 0x32, 0x26, 0x32, 0x0A, 0x26, 0x32, 0xF0, 0x14, 0x06, +0x24, 0x26, 0x32, 0xA5, 0x46, 0x4A, 0x26, 0x32, 0x26, 0x32, 0xA6, 0x32, 0xBD, 0x98, 0xD3, 0x45, +0x1C, 0x85, 0x1C, 0x20, 0x11, 0xE4, 0xA5, 0xB2, 0x85, 0x50, 0x20, 0xF8, 0xE2, 0xA9, 0xFF, 0x3F, +0x25, 0x1C, 0x85, 0x1C, 0x68, 0x05, 0x1C, 0x85, 0x1C, 0xA6, 0x30, 0x86, 0x2E, 0xBC, 0x52, 0xD3, +0xC4, 0x42, 0x10, 0x02, 0xA4, 0x42, 0x84, 0x34, 0x24, 0x2C, 0x10, 0x03, 0x4C, 0xDD, 0xE7, 0x4C, +0x0C, 0xDE, 0xA9, 0x1F, 0x9A, 0x85, 0x24, 0x38, 0xA5, 0x48, 0xE9, 0xFF, 0x3F, 0xA8, 0x85, 0x26, +0x85, 0x28, 0x10, 0x02, 0xE6, 0x24, 0xA5, 0x72, 0x85, 0x2A, 0xA5, 0x38, 0xA2, 0x0F, 0x00, 0x46, +0x2A, 0x90, 0x02, 0x65, 0x24, 0x6A, 0xCA, 0xD0, 0xF6, 0xA2, 0x11, 0x00, 0x06, 0x28, 0x66, 0x26, +0x90, 0x02, 0x65, 0x24, 0x6A, 0xCA, 0xD0, 0xF6, 0xBB, 0x10, 0x03, 0x18, 0xE5, 0x24, 0x85, 0xA8, +0x60, 0xA5, 0xAA, 0x20, 0x62, 0xE4, 0x46, 0xAA, 0x46, 0xAA, 0x46, 0xAA, 0x46, 0xAA, 0xD0, 0x01, +0x60, 0xA2, 0x0E, 0x00, 0x86, 0x2E, 0xBD, 0x52, 0xD3, 0x85, 0x34, 0x20, 0x9B, 0xE2, 0x64, 0x50, +0xA9, 0x10, 0x00, 0x20, 0x65, 0xE4, 0x4C, 0x4B, 0xE4, 0x20, 0x55, 0xE3, 0x20, 0xD9, 0xE2, 0x20, +0x6D, 0xD8, 0x20, 0xDD, 0xE7, 0x20, 0xB8, 0xDA, 0x20, 0xBA, 0xE2, 0x46, 0xAA, 0x90, 0xF0, 0x20, +0x36, 0xE3, 0x20, 0x9B, 0xE2, 0x20, 0xDD, 0xE7, 0x20, 0xB8, 0xDA, 0xA5, 0xAA, 0xD0, 0xDA, 0x4C, +0xBA, 0xE2, 0x29, 0x0F, 0x00, 0x0A, 0x85, 0x24, 0x0A, 0x0A, 0x65, 0x24, 0xA8, 0x64, 0x44, 0x64, +0x46, 0x64, 0x4A, 0xB9, 0xA6, 0xE4, 0x0A, 0x26, 0x46, 0x4A, 0x85, 0x48, 0xA2, 0x06, 0x00, 0xB9, +0xA4, 0xE4, 0x85, 0x72, 0xB9, 0xA2, 0xE4, 0x85, 0x74, 0xB9, 0xA0, 0xE4, 0x85, 0x76, 0xB9, 0x9E, +0xE4, 0x85, 0x78, 0xD0, 0x06, 0xCA, 0xCA, 0xB5, 0x72, 0xF0, 0xFA, 0x86, 0x4C, 0x60, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, +0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x05, 0x40, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xFA, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x9C, 0x0C, 0x40, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xC3, 0x0F, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x24, 0xF4, 0x12, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x96, 0x98, 0x16, 0x40, 0x00, 0x00, +0x00, 0x00, 0x00, 0x20, 0xBC, 0xBE, 0x19, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x6B, 0xEE, +0x1C, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0x02, 0x95, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, +0x40, 0xB7, 0x43, 0xBA, 0x23, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA5, 0xD4, 0xE8, 0x26, 0x40, +0x00, 0x00, 0x00, 0x00, 0x2A, 0xE7, 0x84, 0x91, 0x2A, 0x40, 0x00, 0x00, 0x00, 0x80, 0xF4, 0x20, +0xE6, 0xB5, 0x2D, 0x40, 0x00, 0x00, 0x00, 0xA0, 0x31, 0xA9, 0x5F, 0xE3, 0x30, 0x40, 0x00, 0x00, +0x00, 0x04, 0xBF, 0xC9, 0x1B, 0x8E, 0x34, 0x40, 0x64, 0x26, 0x64, 0x24, 0x38, 0xA5, 0x52, 0xE9, +0xFF, 0x3F, 0x85, 0xBE, 0xA5, 0x54, 0xE5, 0x38, 0x85, 0xC0, 0x10, 0x13, 0xA6, 0x38, 0xA9, 0xFF, +0xFF, 0xC5, 0xBE, 0xD0, 0x5E, 0xC5, 0xC0, 0xD0, 0x5A, 0xA9, 0x00, 0x80, 0xD0, 0x3C, 0x60, 0xA5, +0xBE, 0x29, 0x0F, 0x00, 0xAA, 0x38, 0xA5, 0x38, 0x6A, 0xCA, 0x10, 0xFC, 0x85, 0x2A, 0xA8, 0x46, +0xC0, 0x66, 0xBE, 0x46, 0xC0, 0x66, 0xBE, 0x46, 0xC0, 0x66, 0xBE, 0x66, 0xBE, 0x06, 0xBE, 0xA6, +0xC0, 0xD0, 0xDB, 0xA6, 0xBE, 0xE4, 0x56, 0xF0, 0x02, 0xB0, 0xD3, 0x35, 0x8C, 0x85, 0x26, 0x98, +0x4A, 0xD0, 0x07, 0x6A, 0xE4, 0x56, 0x10, 0xC6, 0xE8, 0xE8, 0xA8, 0x35, 0x8C, 0x85, 0x24, 0x55, +0x8C, 0x95, 0x8C, 0x98, 0xA4, 0x38, 0x3A, 0xF0, 0x04, 0x35, 0x8C, 0xD0, 0x0A, 0xE4, 0x56, 0x10, +0x0C, 0xE8, 0xE8, 0xB5, 0x8C, 0xF0, 0xF6, 0xA8, 0x55, 0x8C, 0x95, 0x8C, 0x98, 0x05, 0x24, 0xF0, +0x4B, 0xA5, 0x1E, 0x09, 0x10, 0x00, 0x85, 0x1E, 0x86, 0x56, 0xA9, 0x00, 0xC0, 0x24, 0x1C, 0xF0, +0x10, 0x30, 0x06, 0xA5, 0x50, 0xF0, 0x13, 0xD0, 0x43, 0x70, 0x41, 0xA5, 0x50, 0xD0, 0x0B, 0xF0, +0x3B, 0xA5, 0x24, 0xF0, 0x37, 0x98, 0x05, 0x26, 0xF0, 0x32, 0xA6, 0xC0, 0x30, 0x1F, 0xA6, 0xBE, +0x18, 0xA5, 0x2A, 0x75, 0x8C, 0x95, 0x8C, 0x90, 0x13, 0xB0, 0x04, 0xF6, 0x8C, 0xD0, 0x0D, 0xCA, +0xCA, 0x10, 0xF8, 0x38, 0x66, 0x8C, 0xE6, 0x52, 0xD0, 0x02, 0xE6, 0x54, 0x60, 0x64, 0x54, 0xA9, +0xFF, 0x3F, 0x85, 0x52, 0x64, 0x56, 0xA9, 0x00, 0x80, 0x85, 0x8C, 0x60, 0xA6, 0xC0, 0x10, 0xEC, +0x4C, 0x02, 0xD7, 0x86, 0x30, 0x68, 0x85, 0x0C, 0x68, 0x85, 0x0E, 0x68, 0x85, 0x14, 0x68, 0x85, +0x16, 0xAD, 0xA9, 0xD4, 0x48, 0x64, 0x46, 0x64, 0x50, 0xA4, 0x38, 0xB7, 0x14, 0xF0, 0x04, 0xE6, +0x46, 0xE6, 0x50, 0xA0, 0x04, 0x00, 0xB7, 0x14, 0x29, 0xFF, 0x00, 0xF0, 0x1D, 0x85, 0xA6, 0xC8, +0x84, 0x24, 0xC9, 0x1D, 0x00, 0x90, 0x04, 0xA9, 0x1C, 0x00, 0x18, 0x69, 0x04, 0x00, 0x85, 0x26, +0xB7, 0x14, 0x29, 0xFF, 0x00, 0xC9, 0x30, 0x00, 0xD0, 0x03, 0x4C, 0x02, 0xD7, 0x29, 0xDF, 0x00, +0xC9, 0x49, 0x00, 0xD0, 0x03, 0x4C, 0x07, 0xD7, 0xC9, 0x4E, 0x00, 0xD0, 0x71, 0xA9, 0xFD, 0xFF, +0x85, 0x4E, 0x64, 0x56, 0x64, 0x8C, 0xA6, 0x56, 0xE6, 0x26, 0x64, 0x28, 0xC8, 0xC4, 0x26, 0xB0, +0x37, 0xE2, 0x30, 0xB7, 0x14, 0xC2, 0x30, 0x29, 0xFF, 0x00, 0xC9, 0x41, 0x00, 0x90, 0x03, 0x69, +0x08, 0x00, 0x29, 0x0F, 0x00, 0xC0, 0x0A, 0x00, 0xF0, 0x14, 0x06, 0x28, 0xB0, 0x10, 0x16, 0x8C, +0x16, 0x8C, 0x16, 0x8C, 0x16, 0x8C, 0x66, 0x28, 0x15, 0x8C, 0x95, 0x8C, 0x80, 0xCE, 0xE8, 0xE8, +0x86, 0x56, 0x74, 0x8C, 0xF6, 0x8C, 0x80, 0xE6, 0x8A, 0xF0, 0x08, 0x24, 0x28, 0x30, 0x04, 0x16, +0x8C, 0x90, 0xFC, 0xA9, 0x00, 0x40, 0x24, 0x8C, 0xD0, 0x05, 0xA5, 0x8C, 0x4C, 0x14, 0xD7, 0xA5, +0x8C, 0x29, 0xFF, 0x00, 0xD0, 0x07, 0xA9, 0x17, 0x40, 0x05, 0x8C, 0x85, 0x8C, 0x60, 0x64, 0x4C, +0x64, 0x72, 0x64, 0x44, 0xA0, 0x02, 0x00, 0xB7, 0x14, 0x85, 0xAA, 0x10, 0x5C, 0xA4, 0x26, 0xE2, +0x30, 0xB7, 0x14, 0xC2, 0x30, 0x29, 0x0F, 0x00, 0xD0, 0x4F, 0xC6, 0x26, 0xE6, 0xAA, 0x30, 0xED, +0x10, 0x47, 0xC6, 0xAA, 0xA5, 0x72, 0x29, 0x00, 0xE0, 0xF0, 0x05, 0x20, 0xBD, 0xE7, 0x64, 0x72, +0xA6, 0x4C, 0x18, 0xB5, 0x72, 0x2A, 0x95, 0x58, 0x95, 0x72, 0xCA, 0xCA, 0x10, 0xF5, 0xA0, 0x02, +0x00, 0xA6, 0x4C, 0x36, 0x72, 0xCA, 0xCA, 0x10, 0xFA, 0x88, 0xD0, 0xF5, 0xA6, 0x4C, 0xB5, 0x58, +0x75, 0x72, 0x95, 0x72, 0xCA, 0xCA, 0x10, 0xF6, 0x90, 0x03, 0x20, 0xBD, 0xE7, 0xA4, 0x24, 0xC4, +0x26, 0xE6, 0x24, 0x90, 0x04, 0xA4, 0x24, 0xB0, 0x1D, 0xA4, 0x24, 0xE2, 0x30, 0xB7, 0x14, 0xC2, +0x30, 0x29, 0x0F, 0x00, 0xA6, 0x4C, 0x18, 0x75, 0x72, 0x95, 0x72, 0x90, 0x09, 0xA5, 0x38, 0xCA, +0xCA, 0x10, 0xF4, 0x20, 0xBD, 0xE7, 0xC4, 0x26, 0x90, 0x9A, 0xA5, 0xAA, 0xF0, 0x07, 0x30, 0x05, +0xC0, 0x20, 0x00, 0x90, 0x8D, 0xA5, 0x72, 0xD0, 0x03, 0x4C, 0x02, 0xD7, 0xA5, 0x4C, 0x0A, 0x0A, +0x0A, 0x69, 0x0E, 0x40, 0x85, 0x48, 0x64, 0x4A, 0x24, 0x72, 0x30, 0x03, 0x20, 0xD2, 0xD9, 0x20, +0x7C, 0xE2, 0xA5, 0xAA, 0x85, 0x24, 0x49, 0xFF, 0xFF, 0x1A, 0x4C, 0x74, 0xE3, 0xA6, 0x4C, 0xE0, +0x1A, 0x00, 0xB0, 0x12, 0xE6, 0x4C, 0xE6, 0x4C, 0xB5, 0x72, 0x95, 0x74, 0xCA, 0xCA, 0x10, 0xF8, +0xA9, 0x01, 0x00, 0x85, 0x72, 0x60, 0xA9, 0x11, 0x40, 0x68, 0x4C, 0x12, 0xD7, 0xA6, 0x3A, 0x30, +0x09, 0xA4, 0x44, 0x10, 0x1C, 0xC8, 0xF0, 0x0A, 0x30, 0x0E, 0xA4, 0x44, 0xE8, 0x30, 0x06, 0xC8, +0x30, 0x09, 0x4C, 0x02, 0xD7, 0xC8, 0xF0, 0x03, 0x4C, 0x07, 0xD7, 0xA9, 0x08, 0x40, 0x4C, 0x12, +0xD7, 0xA6, 0x42, 0x86, 0x56, 0x86, 0x26, 0x46, 0x26, 0x74, 0x8C, 0xCA, 0xCA, 0x10, 0xFA, 0xA6, +0x4C, 0xB5, 0x72, 0x85, 0x24, 0xA0, 0x0F, 0x00, 0x46, 0x24, 0x90, 0x0D, 0x18, 0xA6, 0x42, 0xB5, +0x8C, 0x75, 0x58, 0x95, 0x8C, 0xCA, 0xCA, 0x10, 0xF6, 0xA5, 0x26, 0xA6, 0x38, 0x76, 0x8C, 0xE8, +0xE8, 0x3A, 0x10, 0xF9, 0x90, 0x18, 0xA6, 0x56, 0xE4, 0x34, 0x90, 0x07, 0xB5, 0x8C, 0x09, 0x01, +0x00, 0xD0, 0x09, 0xE8, 0xE8, 0x86, 0x56, 0xE6, 0x26, 0xA9, 0x00, 0x80, 0x95, 0x8C, 0x88, 0x10, +0xC7, 0xC6, 0x4C, 0xC6, 0x4C, 0x10, 0xB8, 0x18, 0xA5, 0x3E, 0x65, 0x48, 0x85, 0x52, 0xA5, 0x40, +0x65, 0x4A, 0x85, 0x54, 0xA5, 0x8C, 0x0A, 0xB0, 0x09, 0xA6, 0x56, 0x18, 0x36, 0x8C, 0xCA, 0xCA, +0x10, 0xFA, 0xA5, 0x52, 0xE9, 0xFE, 0x3F, 0x85, 0x52, 0xA5, 0x54, 0xE5, 0x38, 0x85, 0x54, 0xA6, +0x56, 0xB5, 0x8C, 0xD0, 0x06, 0xC6, 0x56, 0xC6, 0x56, 0x10, 0xF4, 0x60, 0xA6, 0x2E, 0xA5, 0xC0, +0xD0, 0x0A, 0xA5, 0xBE, 0xD0, 0x01, 0x60, 0xDD, 0x7E, 0xD3, 0x90, 0x05, 0xBD, 0x7E, 0xD3, 0x85, +0xBE, 0xBC, 0x52, 0xD3, 0xC4, 0x56, 0x10, 0x02, 0xA4, 0x56, 0x84, 0x26, 0x64, 0x28, 0xA5, 0xBE, +0x29, 0x0F, 0x00, 0xF0, 0x48, 0xC9, 0x09, 0x00, 0x90, 0x16, 0xA6, 0x56, 0x18, 0x36, 0x8C, 0xCA, +0xCA, 0x10, 0xFA, 0x26, 0x28, 0xE6, 0xBE, 0xA5, 0xBE, 0x29, 0x0F, 0x00, 0xD0, 0xEC, 0xF0, 0x2D, +0xA6, 0x38, 0x18, 0x76, 0x8C, 0x8A, 0x45, 0x56, 0xF0, 0x04, 0xE8, 0xE8, 0xD0, 0xF5, 0x90, 0x14, +0xE4, 0x26, 0x10, 0x09, 0xE8, 0xE8, 0x86, 0x56, 0xA9, 0x00, 0x80, 0xD0, 0x05, 0xB5, 0x8C, 0x09, +0x01, 0x00, 0x95, 0x8C, 0xC6, 0xBE, 0xA5, 0xBE, 0x29, 0x0F, 0x00, 0xD0, 0xD3, 0x64, 0x2A, 0xA5, +0xBE, 0x4A, 0x4A, 0x4A, 0x4A, 0xF0, 0x24, 0xA8, 0xA6, 0x56, 0xE4, 0x26, 0x30, 0x08, 0xB5, 0x8C, +0xF0, 0x0C, 0x85, 0x2A, 0xD0, 0x08, 0xE6, 0x56, 0xE6, 0x56, 0xB5, 0x8C, 0x95, 0x8E, 0xCA, 0xCA, +0x10, 0xF8, 0xA5, 0x28, 0x85, 0x8C, 0x64, 0x28, 0x88, 0xD0, 0xDD, 0xA5, 0x2A, 0xF0, 0x0B, 0xA6, +0x56, 0xB5, 0x8C, 0x09, 0x01, 0x00, 0x95, 0x8C, 0xD0, 0x0C, 0xA6, 0x56, 0xB5, 0x8C, 0xD0, 0x06, +0xC6, 0x56, 0xC6, 0x56, 0x10, 0xF4, 0x60, 0x22, 0x64, 0x00, 0xE1, 0x0B, 0x5B, 0x68, 0x85, 0x06, +0x8B, 0x8B, 0x68, 0x85, 0x08, 0x4B, 0xAB, 0x68, 0x85, 0x00, 0x68, 0x85, 0x02, 0x68, 0x85, 0x04, +0xFA, 0xAD, 0xAB, 0xD4, 0x48, 0xE0, 0x01, 0x00, 0x10, 0x03, 0x4C, 0x22, 0xEC, 0xD0, 0x03, 0x4C, +0x75, 0xE9, 0x4C, 0x1C, 0xEC, 0xA2, 0x00, 0x00, 0x68, 0x95, 0x80, 0xE8, 0xE8, 0xE0, 0x0E, 0x00, +0xD0, 0xF6, 0xA5, 0x80, 0x48, 0xE2, 0x30, 0xA0, 0x00, 0xB7, 0x8A, 0x85, 0x80, 0xA0, 0x02, 0xB7, +0x8A, 0x85, 0x81, 0xC8, 0xB7, 0x8A, 0x30, 0x08, 0xD0, 0x75, 0xA5, 0x81, 0x10, 0x0A, 0x30, 0x6F, +0x49, 0xFF, 0xD0, 0x6B, 0xA5, 0x81, 0x10, 0x67, 0xA0, 0x05, 0xB7, 0x86, 0xBB, 0x95, 0x8A, 0x88, +0x10, 0xF8, 0xA5, 0x8E, 0xF0, 0x59, 0xC9, 0x1D, 0xB0, 0x55, 0xA0, 0x00, 0x38, 0xA9, 0x2D, 0x24, +0x8A, 0xD0, 0x06, 0xA5, 0x80, 0xD0, 0x06, 0xA9, 0x20, 0x18, 0xC8, 0x97, 0x82, 0xA9, 0x03, 0x65, +0x86, 0x85, 0x86, 0x90, 0x0A, 0xE6, 0x87, 0xD0, 0x06, 0xE6, 0x88, 0xD0, 0x02, 0xE6, 0x89, 0xA5, +0x8F, 0xC9, 0x3F, 0xF0, 0x2A, 0xC9, 0x30, 0xD0, 0x0B, 0xA2, 0x00, 0x86, 0x8C, 0x86, 0x8D, 0xE8, +0x86, 0x8E, 0xD0, 0x2D, 0x29, 0xDF, 0xC9, 0x4E, 0xF0, 0x5A, 0xC9, 0x49, 0xD0, 0x23, 0xA9, 0x49, +0xC8, 0x97, 0x82, 0xA9, 0x4E, 0xC8, 0x97, 0x82, 0xA9, 0x46, 0xC8, 0x97, 0x82, 0xD0, 0x0D, 0xA9, +0x3F, 0xA0, 0x01, 0x97, 0x82, 0x98, 0x88, 0x97, 0x82, 0xC2, 0x30, 0x60, 0x98, 0xA0, 0x00, 0xF0, +0xF6, 0xA6, 0x80, 0xD0, 0x31, 0xC8, 0xB7, 0x86, 0x97, 0x82, 0xC6, 0x8E, 0xA5, 0x81, 0xC9, 0x02, +0x10, 0x08, 0xA9, 0x01, 0x85, 0x81, 0xA6, 0x8E, 0xF0, 0x11, 0xA9, 0x2E, 0xC8, 0x97, 0x82, 0xA6, +0x8E, 0xF0, 0x08, 0xB7, 0x86, 0xC8, 0x97, 0x82, 0xCA, 0xD0, 0xF8, 0xA9, 0xFF, 0x45, 0x8E, 0x30, +0x75, 0x18, 0x90, 0xBB, 0xF0, 0x72, 0xA5, 0x8D, 0x30, 0x08, 0xD0, 0xB3, 0xA5, 0x8C, 0x10, 0x0A, +0x30, 0xAD, 0x49, 0xFF, 0xD0, 0xA9, 0xA5, 0x8C, 0x10, 0xA5, 0xA5, 0x8C, 0x18, 0x65, 0x8E, 0x70, +0x9E, 0xAA, 0x30, 0x56, 0xF0, 0x54, 0xA5, 0x8C, 0x18, 0x10, 0x1B, 0x65, 0x8E, 0xC8, 0xB7, 0x86, +0x97, 0x82, 0xCA, 0xD0, 0xF8, 0xA9, 0x2E, 0xC8, 0x97, 0x82, 0xA6, 0x8C, 0xB7, 0x86, 0xC8, 0x97, +0x82, 0xE8, 0x30, 0xF8, 0x10, 0x6D, 0xA6, 0x8E, 0xC8, 0xB7, 0x86, 0x97, 0x82, 0xCA, 0xD0, 0xF8, +0x98, 0x65, 0x8C, 0x70, 0xAC, 0xC9, 0x51, 0x10, 0xA8, 0xA6, 0x8C, 0xF0, 0x0A, 0xA9, 0x30, 0xC8, +0x97, 0x82, 0xCA, 0xD0, 0xFA, 0x86, 0x8C, 0xE4, 0x81, 0x10, 0x48, 0xC0, 0x50, 0xB0, 0x6D, 0xA9, +0x2E, 0xC8, 0x97, 0x82, 0xD0, 0x3D, 0x30, 0x3D, 0xF0, 0x6A, 0xCA, 0x8A, 0xE8, 0x18, 0x65, 0x86, +0x85, 0x86, 0xA9, 0xFF, 0x65, 0x87, 0x85, 0x87, 0xA9, 0x30, 0xC8, 0x97, 0x82, 0xA9, 0x2E, 0xC8, +0x97, 0x82, 0x8A, 0xF0, 0x0C, 0xA9, 0x30, 0xC8, 0xC0, 0x51, 0xB0, 0x40, 0x97, 0x82, 0xE8, 0xD0, +0xF6, 0x98, 0x18, 0x65, 0x8E, 0xC9, 0x51, 0x10, 0x33, 0xA6, 0x8E, 0xB7, 0x86, 0xC8, 0x97, 0x82, +0xCA, 0xD0, 0xF8, 0xA5, 0x8C, 0x18, 0x65, 0x81, 0x70, 0x22, 0x30, 0x14, 0xF0, 0x12, 0xAA, 0x84, +0x81, 0x18, 0x65, 0x81, 0xC9, 0x51, 0x10, 0x14, 0xA9, 0x30, 0xC8, 0x97, 0x82, 0xCA, 0xD0, 0xFA, +0xA6, 0x80, 0xF0, 0x5E, 0x98, 0xA0, 0x00, 0x97, 0x82, 0xC2, 0x30, 0x60, 0xA9, 0x3F, 0xA0, 0x01, +0x97, 0x82, 0xD0, 0xF0, 0x85, 0x8F, 0xC8, 0x97, 0x82, 0xA9, 0x41, 0xC8, 0x97, 0x82, 0x84, 0x8B, +0xA9, 0x4E, 0xC8, 0x97, 0x82, 0xA9, 0x28, 0xC8, 0x97, 0x82, 0x84, 0x81, 0xC8, 0xC8, 0xC8, 0xA9, +0x29, 0xC8, 0x97, 0x82, 0x98, 0xA0, 0x00, 0x97, 0x82, 0x98, 0xA4, 0x8B, 0xA6, 0x8E, 0xE0, 0x06, +0x90, 0x02, 0xA2, 0x05, 0xCA, 0xF0, 0x15, 0x0A, 0x0A, 0x0A, 0x0A, 0x85, 0x8C, 0xB7, 0x86, 0xC9, +0x40, 0x90, 0x02, 0x69, 0x08, 0x29, 0x0F, 0x05, 0x8C, 0xC8, 0xD0, 0xE8, 0x85, 0x8C, 0xA9, 0xFC, +0xD0, 0x31, 0xC0, 0x54, 0xB0, 0xA6, 0xA9, 0x65, 0xC8, 0x97, 0x82, 0xA5, 0x8E, 0x65, 0x8C, 0x85, +0x8C, 0x8A, 0x65, 0x8D, 0x85, 0x8D, 0x70, 0x94, 0x30, 0x04, 0xA9, 0x2B, 0xD0, 0x0D, 0x38, 0x8A, +0xE5, 0x8C, 0x85, 0x8C, 0x8A, 0xE5, 0x8D, 0x85, 0x8D, 0xA9, 0x2D, 0xC8, 0x97, 0x82, 0xA9, 0xFA, +0xE8, 0x84, 0x81, 0x85, 0x8B, 0xA9, 0x00, 0x85, 0x86, 0x85, 0x87, 0x85, 0x88, 0xF8, 0xA0, 0x08, +0x16, 0x8C, 0xA5, 0x86, 0x65, 0x86, 0x85, 0x86, 0xA5, 0x87, 0x65, 0x87, 0x85, 0x87, 0xA5, 0x88, +0x65, 0x88, 0x85, 0x88, 0x88, 0xD0, 0xE9, 0xCA, 0x10, 0xE4, 0xD8, 0xA4, 0x81, 0xA2, 0x02, 0xB5, +0x86, 0x4A, 0x4A, 0x4A, 0x4A, 0xF0, 0x02, 0x85, 0x8B, 0xE6, 0x8B, 0x30, 0x09, 0x09, 0x30, 0xC8, +0xC0, 0x51, 0xB0, 0x90, 0x97, 0x82, 0xB5, 0x86, 0x29, 0x0F, 0xF0, 0x02, 0x85, 0x8B, 0xE6, 0x8B, +0x30, 0x09, 0x09, 0x30, 0xC8, 0xC0, 0x51, 0xB0, 0xE9, 0x97, 0x82, 0xCA, 0x10, 0xD1, 0xA5, 0x8F, +0xC9, 0x4E, 0xF0, 0x05, 0x98, 0xA0, 0x00, 0x97, 0x82, 0xC2, 0x30, 0x60, 0xA2, 0x00, 0x00, 0x4C, +0x25, 0xEC, 0xA2, 0x01, 0x00, 0x86, 0xB0, 0x7A, 0xA2, 0x00, 0x00, 0x68, 0x95, 0x80, 0xE8, 0xE8, +0xE0, 0x10, 0x00, 0x90, 0xF6, 0x5A, 0xA2, 0x10, 0x00, 0xCA, 0xCA, 0x74, 0xA0, 0xD0, 0xFA, 0x9B, +0xE2, 0x30, 0xB7, 0x88, 0x85, 0xA0, 0x85, 0xA2, 0xA6, 0xB0, 0xF0, 0x0C, 0xB7, 0x8C, 0x85, 0xA4, +0xC8, 0xB7, 0x88, 0xF0, 0x0F, 0x4C, 0x0F, 0xEE, 0xC8, 0xB7, 0x88, 0x85, 0xA1, 0x85, 0xA3, 0x18, +0x65, 0x8D, 0x85, 0x8D, 0x18, 0xA5, 0x84, 0x69, 0x04, 0x85, 0x90, 0xA5, 0x85, 0x69, 0x00, 0x85, +0x91, 0xA5, 0x86, 0x69, 0x00, 0x85, 0x92, 0xA5, 0x87, 0x69, 0x00, 0x85, 0x93, 0xA0, 0x09, 0xB9, +0x0B, 0xEF, 0x97, 0x84, 0x88, 0x10, 0xF8, 0x20, 0x02, 0xED, 0xC9, 0x20, 0xF0, 0xF9, 0xC9, 0x09, +0xF0, 0xF5, 0xC9, 0x2B, 0xF0, 0x0E, 0xC9, 0x2D, 0xD0, 0x0D, 0xA9, 0x01, 0xA0, 0x00, 0x97, 0x84, +0x98, 0xC8, 0x97, 0x84, 0x20, 0x02, 0xED, 0xC9, 0x30, 0x90, 0x0D, 0xD0, 0x19, 0x38, 0x26, 0xA6, +0x20, 0xE9, 0xEE, 0x20, 0x02, 0xED, 0xB0, 0xF3, 0xC9, 0x2E, 0xF0, 0x70, 0xA5, 0xA6, 0xF0, 0x03, +0x4C, 0xCF, 0xED, 0x4C, 0x9F, 0xEE, 0xC9, 0x3A, 0x90, 0x0A, 0xA4, 0xA6, 0xD0, 0x03, 0x4C, 0x24, +0xEE, 0x4C, 0x68, 0xED, 0x20, 0xE9, 0xEE, 0x20, 0xEF, 0xEC, 0x90, 0x04, 0xC9, 0x3A, 0x90, 0xF7, +0xC9, 0x2E, 0xD0, 0xED, 0x20, 0x02, 0xED, 0xB0, 0x03, 0x4C, 0xCF, 0xED, 0x4C, 0x64, 0xED, 0xA4, +0xAA, 0xC0, 0x1C, 0xB0, 0x07, 0xC8, 0x84, 0xAA, 0x97, 0x90, 0xD0, 0x06, 0xE6, 0xAD, 0xD0, 0x02, +0xE6, 0xAE, 0xA9, 0x02, 0x85, 0xA9, 0x20, 0xF9, 0xEE, 0x90, 0x0F, 0xA4, 0xA0, 0xB7, 0x8C, 0xE6, +0xA0, 0xD0, 0x04, 0xE6, 0xA1, 0xE6, 0x8D, 0xC9, 0x30, 0x60, 0xE6, 0xA7, 0xA4, 0xA9, 0x68, 0x88, +0xD0, 0xFC, 0xA4, 0xA3, 0x30, 0x03, 0x4C, 0x9F, 0xEE, 0x4C, 0xD7, 0xED, 0x20, 0x02, 0xED, 0xF0, +0x10, 0x90, 0x04, 0xC9, 0x3A, 0x90, 0x1A, 0xA6, 0xA6, 0xD0, 0x2D, 0x4C, 0x9F, 0xEE, 0x4C, 0xCF, +0xED, 0x38, 0x26, 0xA6, 0x20, 0xE9, 0xEE, 0xA6, 0xAD, 0xD0, 0x02, 0xC6, 0xAE, 0xC6, 0xAD, 0xD0, +0xDB, 0x20, 0xE9, 0xEE, 0xA6, 0xAD, 0xD0, 0x02, 0xC6, 0xAE, 0xC6, 0xAD, 0x20, 0xEF, 0xEC, 0xB0, +0x03, 0x4C, 0xCF, 0xED, 0xC9, 0x3A, 0x90, 0xE9, 0x20, 0xF0, 0xEE, 0xA6, 0xA2, 0xD0, 0x02, 0xC6, +0xA3, 0xC6, 0xA2, 0xC9, 0x45, 0xF0, 0x04, 0xC9, 0x65, 0xD0, 0x4D, 0x20, 0x02, 0xED, 0xC9, 0x2B, +0xF0, 0x06, 0xC9, 0x2D, 0xD0, 0x05, 0xE6, 0xA8, 0x20, 0x02, 0xED, 0xC9, 0x30, 0x90, 0x39, 0xC9, +0x3A, 0xB0, 0x35, 0x20, 0xE9, 0xEE, 0x29, 0x0F, 0xAA, 0x06, 0xAB, 0x26, 0xAC, 0xA5, 0xAC, 0x85, +0xAF, 0xA5, 0xAB, 0x0A, 0x26, 0xAF, 0x0A, 0x26, 0xAF, 0x65, 0xAB, 0x85, 0xAB, 0xA5, 0xAF, 0x65, +0xAC, 0x85, 0xAC, 0x18, 0x8A, 0x65, 0xAB, 0x85, 0xAB, 0x90, 0x02, 0xE6, 0xAC, 0xA9, 0x14, 0xC5, +0xAC, 0xB0, 0x02, 0x85, 0xAC, 0x4C, 0x88, 0xED, 0xA4, 0xA3, 0x30, 0x03, 0x4C, 0x9F, 0xEE, 0xA6, +0xA0, 0xD0, 0x02, 0xC6, 0xA1, 0xC6, 0xA0, 0xA0, 0x00, 0xA5, 0xAA, 0xD0, 0x0F, 0xA5, 0xA6, 0xF0, +0x2E, 0xA9, 0x01, 0x97, 0x90, 0xC8, 0xA9, 0x30, 0x97, 0x90, 0xD0, 0x23, 0x97, 0x90, 0xA5, 0xA8, +0xF0, 0x0D, 0x38, 0xA9, 0x00, 0xE5, 0xAB, 0x85, 0xAB, 0xA9, 0x00, 0xE5, 0xAC, 0x85, 0xAC, 0xA0, +0x02, 0x18, 0xA5, 0xAB, 0x65, 0xAD, 0x97, 0x84, 0xC8, 0xA5, 0xAC, 0x65, 0xAE, 0x97, 0x84, 0xA0, +0x00, 0xA5, 0xA0, 0x97, 0x88, 0xA5, 0xA7, 0x97, 0x80, 0x98, 0xC8, 0x97, 0x80, 0xA5, 0xA1, 0x97, +0x88, 0xC2, 0x30, 0x60, 0xA6, 0xA0, 0xD0, 0x02, 0xC6, 0xA1, 0xC6, 0xA0, 0x20, 0xD0, 0xEE, 0xC9, +0x49, 0xD0, 0x03, 0x4C, 0xAA, 0xEE, 0xC9, 0x4E, 0xD0, 0x65, 0x20, 0xD0, 0xEE, 0xC9, 0x41, 0xD0, +0x5E, 0x20, 0xD0, 0xEE, 0xC9, 0x4E, 0xD0, 0x57, 0xA0, 0x02, 0xA9, 0x34, 0x97, 0x90, 0xA9, 0x30, +0xC8, 0xC8, 0x97, 0x90, 0xC8, 0x97, 0x90, 0x20, 0xF0, 0xEE, 0x20, 0x02, 0xED, 0xC9, 0x28, 0xD0, +0x3E, 0x20, 0x02, 0xED, 0x90, 0x1C, 0xC9, 0x3A, 0xB0, 0x35, 0x29, 0x0F, 0x85, 0xAF, 0x06, 0xA5, +0xA5, 0xA5, 0x0A, 0x0A, 0x18, 0x65, 0xA5, 0x18, 0x65, 0xAF, 0x85, 0xA5, 0x4C, 0x61, 0xEE, 0x20, +0x02, 0xED, 0xC9, 0x29, 0xD0, 0x19, 0xA5, 0xA5, 0x4A, 0x4A, 0x4A, 0x4A, 0x20, 0xE0, 0xEE, 0xA0, +0x04, 0x97, 0x90, 0xA5, 0xA5, 0x29, 0x0F, 0x20, 0xE0, 0xEE, 0xC8, 0x97, 0x90, 0xD0, 0x24, 0xA6, +0xA2, 0x86, 0xA0, 0xA6, 0xA3, 0x86, 0xA1, 0x4C, 0xD7, 0xED, 0x20, 0xD0, 0xEE, 0xC9, 0x4E, 0xD0, +0xEE, 0x20, 0xD0, 0xEE, 0xC9, 0x46, 0xD0, 0xE7, 0xA0, 0x00, 0xA9, 0x01, 0x97, 0x90, 0xA9, 0x49, +0xC8, 0x97, 0x90, 0x20, 0xE9, 0xEE, 0x20, 0xF9, 0xEE, 0xB0, 0x02, 0xE6, 0xA7, 0x4C, 0x0F, 0xEE, +0xA9, 0x04, 0x20, 0x04, 0xED, 0xC9, 0x61, 0x90, 0x06, 0xC9, 0x7B, 0xB0, 0x02, 0x29, 0xDF, 0x60, +0xC9, 0x0A, 0x90, 0x02, 0x69, 0x06, 0x69, 0x30, 0x60, 0xA2, 0xFF, 0x86, 0xA2, 0x86, 0xA3, 0x60, +0xA6, 0xA0, 0x86, 0xA2, 0xA6, 0xA1, 0x86, 0xA3, 0x60, 0xA6, 0xB0, 0xF0, 0x05, 0xA6, 0xA4, 0xE4, +0xA0, 0x60, 0x38, 0xA4, 0xA0, 0xB7, 0x8C, 0xD0, 0x01, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x05, +0x4E, 0x30, 0x30, 0x31, 0x31, 0x22, 0x64, 0x00, 0xE1, 0x0B, 0x5B, 0x68, 0x85, 0x06, 0x8B, 0x8B, +0x68, 0x85, 0x08, 0x4B, 0xAB, 0x80, 0x04, 0x22, 0x64, 0x00, 0xE1, 0x68, 0x85, 0xF3, 0x68, 0x85, +0xF1, 0x68, 0x85, 0xEF, 0xE2, 0x30, 0x68, 0x85, 0x62, 0x68, 0x18, 0x66, 0x62, 0xA6, 0x62, 0xBD, +0xCE, 0xEF, 0x85, 0x63, 0x68, 0x85, 0xAA, 0x68, 0x85, 0xAB, 0x68, 0x85, 0xAC, 0x68, 0xDA, 0xA0, +0x09, 0xBB, 0xB7, 0xAA, 0x95, 0x82, 0x88, 0xCA, 0x10, 0xF8, 0xFA, 0xA5, 0x6A, 0x85, 0xB0, 0xA5, +0x6B, 0x85, 0xB1, 0xA5, 0x6C, 0x85, 0xB2, 0xA5, 0x6D, 0x85, 0xB3, 0xA5, 0x63, 0x30, 0x03, 0x4C, +0xF6, 0xEF, 0xA5, 0x62, 0xC9, 0x08, 0xF0, 0x2E, 0x68, 0x85, 0xAD, 0x68, 0x85, 0xAE, 0x68, 0x85, +0xAF, 0x68, 0xDA, 0xA0, 0x09, 0xBB, 0xB7, 0xAD, 0x95, 0x96, 0x88, 0xCA, 0x10, 0xF8, 0xFA, 0xA5, +0xAD, 0x85, 0x7C, 0xA5, 0xAE, 0x85, 0x7D, 0xA5, 0xAF, 0x85, 0x7E, 0x20, 0xDF, 0xEF, 0x86, 0x6A, +0x29, 0x80, 0x85, 0x6B, 0x80, 0x06, 0x68, 0x85, 0x70, 0x68, 0x85, 0x71, 0xA9, 0xC0, 0x25, 0x63, +0x49, 0xC0, 0xD0, 0x46, 0x68, 0x85, 0xAD, 0x68, 0x85, 0xAE, 0x68, 0x85, 0xAF, 0x68, 0xDA, 0xA0, +0x09, 0xBB, 0xB7, 0xAD, 0x95, 0xA0, 0x88, 0xCA, 0x10, 0xF8, 0xFA, 0x4C, 0x0F, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, +0x30, 0xA6, 0x7C, 0x0B, 0x8B, 0xA5, 0x7E, 0x48, 0x80, 0x05, 0x0B, 0x8B, 0xF4, 0x00, 0x00, 0xDA, +0xA9, 0x1C, 0x00, 0x4C, 0xF2, 0xF0, 0xA9, 0x00, 0x85, 0x6A, 0xA2, 0x0A, 0xB5, 0x81, 0x95, 0x9F, +0xCA, 0xD0, 0xF9, 0xA5, 0xAA, 0x85, 0xAD, 0xA5, 0xAB, 0x85, 0xAE, 0xA5, 0xAC, 0x85, 0xAF, 0xA5, +0xAD, 0x85, 0x7C, 0xA5, 0xAE, 0x85, 0x7D, 0xA5, 0xAF, 0x85, 0x7E, 0x20, 0xDF, 0xEF, 0x86, 0x6C, +0x29, 0x80, 0x85, 0x6D, 0xC2, 0x30, 0xA5, 0xEF, 0x48, 0xA5, 0xF1, 0x48, 0xA5, 0xF3, 0x48, 0x20, +0x72, 0xF0, 0xA5, 0xAC, 0x48, 0xA5, 0xAB, 0x48, 0xA5, 0xAA, 0x48, 0xA5, 0x69, 0x48, 0xA5, 0x68, +0x48, 0xA5, 0xB0, 0x48, 0xA5, 0xB1, 0x48, 0xA5, 0xB2, 0x48, 0xA5, 0xB3, 0x48, 0xA5, 0x6A, 0xC9, +0xFE, 0x10, 0x0D, 0xA2, 0x04, 0x20, 0x63, 0xF2, 0xA2, 0x02, 0x20, 0xD4, 0xF0, 0x4C, 0x6F, 0xF0, +0xA5, 0x6C, 0xC9, 0xFE, 0x10, 0x1D, 0xA2, 0x04, 0xA0, 0x00, 0xA9, 0x0E, 0x20, 0xD8, 0xF0, 0x4C, +0x56, 0xF3, 0x0B, 0x8B, 0xF4, 0x00, 0x00, 0x18, 0x7B, 0x69, 0x68, 0x00, 0x48, 0xA9, 0x17, 0x00, +0x4C, 0xF2, 0xF0, 0xA5, 0x62, 0x0A, 0xA8, 0xB9, 0x91, 0xF0, 0x48, 0xB9, 0x90, 0xF0, 0x48, 0x60, +0xA8, 0xF3, 0xA8, 0xF3, 0xA8, 0xF3, 0xA8, 0xF3, 0xD5, 0xF4, 0xD5, 0xF4, 0x52, 0xF5, 0x52, 0xF5, +0x13, 0xF6, 0x0D, 0xF7, 0x02, 0xF8, 0x6C, 0xF8, 0x47, 0xFE, 0xA7, 0xFC, 0xFA, 0xFC, 0xBD, 0xFD, +0x07, 0xFF, 0xA2, 0x0E, 0xA0, 0x00, 0xA9, 0x04, 0xD0, 0x1E, 0xA2, 0x0C, 0xA0, 0x0E, 0xD0, 0xF6, +0xA2, 0x28, 0xA0, 0x0C, 0xD0, 0xF0, 0xA2, 0x02, 0xA0, 0x62, 0xD0, 0xEA, 0xA0, 0x00, 0xA9, 0x0C, +0xD0, 0x06, 0xA2, 0x1C, 0xA0, 0x00, 0xA9, 0x00, 0x85, 0x7C, 0xC2, 0x30, 0x0B, 0x8B, 0x20, 0x5B, +0xF1, 0xDA, 0x48, 0xBB, 0xA0, 0x00, 0x00, 0x20, 0x5B, 0xF1, 0xDA, 0x48, 0xE2, 0x30, 0x98, 0x48, +0xA5, 0x7C, 0x48, 0xC2, 0x30, 0x22, 0xA4, 0xF3, 0xFE, 0xE2, 0x30, 0x08, 0x68, 0xAB, 0x2B, 0x48, +0x28, 0x60, 0x85, 0x7C, 0xC2, 0x30, 0x0B, 0x8B, 0x20, 0x5B, 0xF1, 0xDA, 0x48, 0xBB, 0xA0, 0x04, +0x00, 0x80, 0xD4, 0xC2, 0x30, 0x0B, 0x8B, 0x20, 0x5B, 0xF1, 0xDA, 0x48, 0xE2, 0x30, 0xA9, 0x00, +0x48, 0x98, 0xD0, 0xCE, 0x64, 0x7E, 0xC2, 0x30, 0x0B, 0x8B, 0x18, 0x7B, 0x79, 0x42, 0xFC, 0x85, +0x7C, 0xA7, 0x7C, 0x48, 0xE2, 0x30, 0xA9, 0x04, 0x48, 0x8A, 0x4C, 0xF2, 0xF0, 0x0B, 0x8B, 0x98, +0x80, 0xB0, 0xA2, 0x62, 0xC2, 0x30, 0x0B, 0x8B, 0x20, 0x5B, 0xF1, 0xDA, 0x48, 0x5A, 0xE2, 0x30, +0xC2, 0x30, 0x22, 0x9F, 0xF3, 0xFE, 0xAB, 0x2B, 0xE2, 0x30, 0x60, 0x08, 0xE2, 0x30, 0xE0, 0x14, +0x90, 0x10, 0xE0, 0x5C, 0xB0, 0x0C, 0xA9, 0x00, 0x48, 0xC2, 0x30, 0xBD, 0x42, 0xFC, 0x8B, 0xFA, +0x80, 0x0A, 0xC2, 0x30, 0x18, 0x7B, 0x7D, 0x42, 0xFC, 0xA2, 0x00, 0x00, 0x28, 0x60, 0xA9, 0x0E, +0xD0, 0x0A, 0xA2, 0x0E, 0xA9, 0x10, 0xD0, 0x04, 0xA9, 0x0C, 0xA4, 0xC3, 0xC2, 0x30, 0x29, 0xFF, +0x00, 0x85, 0x7C, 0x18, 0x7B, 0x7D, 0x42, 0xFC, 0x85, 0xEF, 0xB9, 0x42, 0xFC, 0x85, 0x7F, 0xA6, +0x7C, 0x18, 0x7B, 0x7D, 0x42, 0xFC, 0x85, 0x7C, 0xE2, 0x30, 0xA0, 0x00, 0xB1, 0x7F, 0x85, 0xF2, +0xA2, 0x02, 0xA0, 0x0E, 0x20, 0xC8, 0xF1, 0xA0, 0x04, 0x20, 0xEE, 0xF1, 0xA2, 0x0A, 0xA0, 0x00, +0x20, 0xC8, 0xF1, 0xC6, 0xF2, 0xD0, 0xF0, 0x60, 0x18, 0x8A, 0x65, 0x7F, 0x85, 0x7F, 0xA5, 0x80, +0x69, 0x00, 0x85, 0x80, 0xA2, 0x00, 0x0B, 0x8B, 0xDA, 0x8B, 0x48, 0xA5, 0x7F, 0x48, 0xF4, 0x00, +0x00, 0xA5, 0xF0, 0x48, 0xA5, 0xEF, 0x48, 0xA9, 0x00, 0x48, 0x98, 0x4C, 0xF2, 0xF0, 0x0B, 0x8B, +0xF4, 0x00, 0x00, 0xA5, 0x7D, 0x48, 0xA5, 0x7C, 0x80, 0xE3, 0xA9, 0x02, 0xD0, 0x0A, 0xA9, 0x04, +0xD0, 0x06, 0xA9, 0x01, 0xD0, 0x02, 0xA9, 0x10, 0x85, 0x64, 0xC2, 0x30, 0xA0, 0x03, 0x00, 0x20, +0x3D, 0xF1, 0x86, 0xC5, 0x84, 0xC6, 0xA5, 0x64, 0x49, 0xFF, 0x25, 0xC6, 0x85, 0xC6, 0x0B, 0x8B, +0xA5, 0xC6, 0x48, 0xA5, 0xC5, 0x48, 0x48, 0xA9, 0x01, 0x4C, 0xF2, 0xF0, 0xA9, 0x04, 0xD0, 0x0E, +0xA9, 0x02, 0xD0, 0x0A, 0xA9, 0x08, 0xD0, 0x06, 0xA9, 0x01, 0xD0, 0x02, 0xA9, 0x10, 0x85, 0x64, +0xA2, 0x15, 0xD0, 0x16, 0xA9, 0x02, 0xD0, 0x0E, 0xA9, 0x04, 0xD0, 0x0A, 0xA9, 0x08, 0xD0, 0x06, +0xA9, 0x01, 0xD0, 0x02, 0xA9, 0x10, 0x85, 0x64, 0xA2, 0x1B, 0xA9, 0x00, 0x85, 0x65, 0xA0, 0x5C, +0x4C, 0x24, 0xF1, 0xA0, 0x00, 0x20, 0x5B, 0xF1, 0x85, 0x7C, 0xEB, 0x85, 0x7D, 0x86, 0x7E, 0x64, +0x81, 0xC2, 0x30, 0x18, 0x7B, 0x79, 0x42, 0xFC, 0x85, 0x7F, 0xA0, 0x08, 0x00, 0xB7, 0x7C, 0x97, +0x7F, 0x88, 0x88, 0x10, 0xF8, 0xE2, 0x30, 0x60, 0x38, 0xA9, 0x00, 0xE5, 0xC5, 0x85, 0xC5, 0xA9, +0x00, 0xE5, 0xC6, 0x85, 0xC6, 0x60, 0xAD, 0xA8, 0xFA, 0x85, 0xC5, 0xAD, 0xA9, 0xFA, 0x85, 0xC6, +0xDA, 0xA0, 0x09, 0xBB, 0xB7, 0x7F, 0x95, 0xDB, 0x88, 0xCA, 0x10, 0xF8, 0xFA, 0xA2, 0x10, 0x20, +0x8E, 0xF6, 0x20, 0x06, 0xF3, 0x70, 0x0C, 0xF0, 0x0A, 0xA2, 0x24, 0xA0, 0x10, 0x20, 0x2D, 0xF5, +0x20, 0xF7, 0xF2, 0x20, 0x06, 0xF3, 0x70, 0x07, 0xF0, 0x05, 0xA2, 0x24, 0x4C, 0xD1, 0xF2, 0xA2, +0x10, 0xA0, 0x0A, 0xA9, 0x10, 0x20, 0x02, 0xF1, 0x4C, 0xF7, 0xF2, 0x0B, 0x8B, 0xA5, 0xC6, 0x48, +0xA5, 0xC5, 0x48, 0xA9, 0x00, 0x48, 0xA5, 0xF1, 0x48, 0xA5, 0xF0, 0x48, 0xA5, 0xEF, 0x48, 0xA9, +0x00, 0x48, 0xA9, 0x18, 0x4C, 0xF2, 0xF0, 0xC2, 0x30, 0xA6, 0x7F, 0x20, 0xEA, 0xEF, 0x10, 0x03, +0x20, 0x88, 0xF2, 0x4C, 0xDB, 0xF2, 0xA2, 0x24, 0xA0, 0x10, 0xA9, 0x08, 0x4C, 0xD8, 0xF0, 0xA2, +0x3A, 0xD0, 0x18, 0xA2, 0x3C, 0xD0, 0x14, 0xA2, 0x1C, 0xD0, 0x10, 0xA2, 0x1E, 0xD0, 0x0C, 0x20, +0x34, 0xF2, 0xA2, 0x3E, 0xD0, 0x05, 0x20, 0x34, 0xF2, 0xA2, 0x40, 0x20, 0x63, 0xF2, 0x4C, 0x56, +0xF3, 0xA5, 0x6F, 0xD0, 0x05, 0xA9, 0x7F, 0x4C, 0x3C, 0xF3, 0xA9, 0xFF, 0x85, 0x8B, 0xA9, 0xFF, +0x85, 0x8A, 0xA9, 0x40, 0x85, 0x89, 0xA5, 0x6E, 0x85, 0x88, 0xA9, 0x00, 0xA2, 0x05, 0x95, 0x82, +0xCA, 0x10, 0xFB, 0x20, 0x38, 0xF2, 0x68, 0x85, 0x6D, 0x68, 0x85, 0x6C, 0x68, 0x85, 0x6B, 0x68, +0x85, 0x6A, 0x68, 0x85, 0x66, 0x68, 0x85, 0x67, 0x68, 0x85, 0xAA, 0x68, 0x85, 0xAB, 0x68, 0x85, +0xAC, 0xA0, 0x09, 0xDA, 0xBB, 0xB5, 0x82, 0x97, 0xAA, 0x88, 0xCA, 0x10, 0xF8, 0xFA, 0xC2, 0x30, +0x68, 0x85, 0xEF, 0x68, 0x85, 0xF1, 0x68, 0x85, 0xF3, 0xA5, 0x66, 0x48, 0xF4, 0x19, 0x00, 0xA5, +0xF3, 0x48, 0xA5, 0xF1, 0x48, 0xA5, 0xEF, 0x48, 0x22, 0x68, 0x00, 0xE1, 0x4C, 0xCA, 0xD3, 0x22, +0x27, 0xEF, 0xFE, 0x6B, 0x22, 0xCA, 0xD3, 0xFE, 0x6B, 0xA5, 0x6C, 0xC9, 0xFE, 0xF0, 0x11, 0xA9, +0x02, 0x24, 0x62, 0xD0, 0x1D, 0xA5, 0x6C, 0x30, 0x2F, 0xA5, 0x6D, 0x30, 0x0A, 0x4C, 0x2C, 0xF4, +0xA5, 0x6D, 0xD0, 0x03, 0x4C, 0x22, 0xF3, 0xA5, 0x6D, 0x85, 0x6F, 0xA9, 0x24, 0x85, 0x6E, 0x4C, +0x31, 0xF3, 0xA5, 0x6C, 0x10, 0x03, 0x4C, 0x56, 0xF3, 0xA2, 0x1E, 0xA0, 0x00, 0x20, 0x0A, 0xF3, +0x70, 0xE5, 0x30, 0x02, 0xD0, 0xE1, 0x30, 0x03, 0x4C, 0x26, 0xF3, 0x20, 0x17, 0xF4, 0x20, 0xD2, +0xF0, 0xA2, 0x00, 0xA0, 0x2A, 0x20, 0x0A, 0xF3, 0x30, 0x32, 0xF0, 0x30, 0x50, 0x2E, 0xA2, 0x26, +0xA0, 0x00, 0x20, 0x0A, 0xF3, 0x30, 0x25, 0xF0, 0x23, 0x20, 0x12, 0xF4, 0x20, 0x8C, 0xF4, 0x4C, +0x67, 0xF4, 0xA2, 0x0C, 0x4C, 0x63, 0xF2, 0xA2, 0x00, 0xA0, 0x0C, 0x4C, 0x65, 0xF2, 0xA2, 0x00, +0xA0, 0x0E, 0x4C, 0x65, 0xF2, 0xA2, 0x00, 0xA0, 0x10, 0x4C, 0x65, 0xF2, 0x20, 0x17, 0xF4, 0xA2, +0x0C, 0xA0, 0x1A, 0x20, 0x13, 0xF1, 0xA2, 0x0C, 0x20, 0x88, 0xF6, 0x20, 0xB2, 0xF5, 0xA2, 0x0C, +0x20, 0x88, 0xF6, 0xA2, 0x00, 0xA0, 0x26, 0x20, 0x0A, 0xF3, 0x30, 0x0E, 0xF0, 0x0C, 0x50, 0x0A, +0xA2, 0x1C, 0xA0, 0x0C, 0x20, 0xD6, 0xF0, 0x20, 0x75, 0xF4, 0xA2, 0x1C, 0x20, 0x2B, 0xF5, 0x20, +0x8C, 0xF4, 0xA2, 0x0C, 0x20, 0xD4, 0xF0, 0xA9, 0x01, 0x24, 0x62, 0xD0, 0x05, 0xA2, 0x38, 0x20, +0xB4, 0xF0, 0x4C, 0x56, 0xF3, 0xC2, 0x30, 0x0B, 0x8B, 0xA9, 0xFF, 0xFF, 0x48, 0xF4, 0x00, 0x00, +0x18, 0x7B, 0x69, 0x82, 0x00, 0x48, 0xA9, 0x18, 0x00, 0x4C, 0xF2, 0xF0, 0x20, 0x7F, 0xF6, 0xE0, +0xFF, 0xD0, 0x01, 0x60, 0xE0, 0x00, 0xF0, 0x05, 0xA2, 0x38, 0x4C, 0xD0, 0xF4, 0x20, 0x1E, 0xF4, +0xA2, 0x20, 0x20, 0xD4, 0xF0, 0xA2, 0x00, 0xA0, 0x0E, 0x20, 0xBC, 0xF6, 0xA2, 0x0E, 0xA0, 0x10, +0x20, 0x65, 0xF2, 0xA2, 0x0E, 0x20, 0xBC, 0xF0, 0xA2, 0x00, 0xA0, 0x14, 0x20, 0x7E, 0xF1, 0xA2, +0x10, 0x20, 0xB4, 0xF0, 0xA2, 0x10, 0xA0, 0x16, 0x20, 0x7E, 0xF1, 0x20, 0xFA, 0xF1, 0xA2, 0x10, +0x20, 0xBA, 0xF6, 0x4C, 0x3C, 0xF2, 0xA5, 0x6C, 0x10, 0x11, 0xC9, 0xFF, 0xF0, 0x07, 0xA5, 0x6D, +0x30, 0x06, 0x4C, 0x56, 0xF3, 0x4C, 0x17, 0xF3, 0x4C, 0x0F, 0xF3, 0xA9, 0x01, 0x24, 0x62, 0xF0, +0x06, 0x20, 0x20, 0xF5, 0x4C, 0x17, 0xF5, 0x20, 0x32, 0xF5, 0x20, 0x48, 0xF2, 0xF0, 0x18, 0x20, +0x08, 0xF5, 0x20, 0x30, 0xF2, 0x4C, 0x0F, 0xF3, 0x20, 0x3C, 0xF2, 0xA5, 0x6D, 0x30, 0x05, 0x68, +0x68, 0x4C, 0x22, 0xF3, 0x4C, 0xFE, 0xF1, 0x20, 0xCF, 0xF5, 0x20, 0xAF, 0xF5, 0x4C, 0x56, 0xF3, +0x20, 0x17, 0xF4, 0x20, 0x92, 0xF6, 0x20, 0x06, 0xF2, 0xA2, 0x0C, 0xA0, 0x00, 0xA9, 0x02, 0x4C, +0xD8, 0xF0, 0x20, 0x17, 0xF4, 0xA2, 0x38, 0x20, 0xCC, 0xF0, 0xA2, 0x00, 0xA0, 0x0C, 0x20, 0x2D, +0xF5, 0xA2, 0x38, 0xA0, 0x0C, 0x20, 0xBC, 0xF6, 0x20, 0x92, 0xF6, 0xA2, 0x38, 0x20, 0xBA, 0xF6, +0x4C, 0x06, 0xF2, 0xA5, 0x6C, 0x10, 0x0E, 0xC9, 0xFF, 0xF0, 0x07, 0xA5, 0x6D, 0x10, 0x03, 0x4C, +0x1B, 0xF3, 0x4C, 0x56, 0xF3, 0xA9, 0x01, 0x24, 0x62, 0xF0, 0x18, 0xA5, 0x6C, 0xF0, 0x0E, 0xA2, +0x38, 0x20, 0xB4, 0xF0, 0x20, 0x30, 0xF2, 0x20, 0x3C, 0xF2, 0x4C, 0xAC, 0xF5, 0x20, 0x20, 0xF5, +0x4C, 0x95, 0xF5, 0xA5, 0x6C, 0xD0, 0xED, 0x20, 0x32, 0xF5, 0x20, 0x48, 0xF2, 0xF0, 0x06, 0x20, +0x08, 0xF5, 0x4C, 0x1B, 0xF3, 0x20, 0xCF, 0xF5, 0xA2, 0x0C, 0xA0, 0x3A, 0x20, 0x0A, 0xF3, 0xF0, +0x0B, 0x20, 0xAF, 0xF5, 0xA2, 0x1C, 0x20, 0x2B, 0xF5, 0x20, 0xFA, 0xF1, 0x4C, 0x56, 0xF3, 0x20, +0xD2, 0xF0, 0xC2, 0x30, 0x18, 0x7B, 0x69, 0x82, 0x00, 0x85, 0xEF, 0xE2, 0x30, 0x64, 0xF1, 0xC2, +0x30, 0x18, 0x7B, 0x69, 0xC7, 0x00, 0x85, 0x7F, 0xE2, 0x30, 0x64, 0x81, 0x4C, 0x96, 0xF2, 0xA2, +0x00, 0xA0, 0x3A, 0x20, 0x0A, 0xF3, 0x30, 0x05, 0x70, 0x03, 0xD0, 0x01, 0x60, 0x20, 0x25, 0xF4, +0xA2, 0x10, 0xA0, 0x10, 0x20, 0xB6, 0xF0, 0xA0, 0x18, 0x20, 0x82, 0xF1, 0x20, 0xB2, 0xF0, 0xA0, +0x1A, 0x20, 0x82, 0xF1, 0xA2, 0x00, 0xA0, 0x0E, 0x20, 0x2D, 0xF5, 0xA2, 0x20, 0x20, 0xB4, 0xF0, +0xA2, 0x0E, 0x20, 0xBA, 0xF6, 0x20, 0x3C, 0xF2, 0x4C, 0xFA, 0xF1, 0xA5, 0x70, 0x85, 0xC5, 0xA5, +0x71, 0x85, 0xC6, 0x60, 0xA5, 0x70, 0x05, 0x71, 0xD0, 0x03, 0x4C, 0x17, 0xF3, 0xA5, 0x6C, 0x10, +0x2F, 0x20, 0x0B, 0xF6, 0x46, 0xC6, 0x66, 0xC5, 0xB0, 0x03, 0x20, 0x8C, 0xF6, 0xA5, 0x71, 0x30, +0x03, 0x4C, 0x56, 0xF3, 0xA5, 0x6C, 0xC9, 0xFF, 0xF0, 0x0B, 0x20, 0x7F, 0xF6, 0x30, 0x03, 0x4C, +0x0F, 0xF3, 0x4C, 0x13, 0xF3, 0x20, 0x7F, 0xF6, 0x30, 0x03, 0x4C, 0x1F, 0xF3, 0x4C, 0x26, 0xF3, +0x20, 0xD4, 0xF7, 0xA5, 0xF3, 0xD0, 0x06, 0x20, 0x98, 0xF6, 0x4C, 0x56, 0xF3, 0x20, 0x7F, 0xF6, +0x29, 0x80, 0x48, 0x20, 0x8C, 0xF6, 0xA2, 0x06, 0xA0, 0x02, 0xA9, 0x0E, 0x20, 0x02, 0xF1, 0x20, +0xF0, 0xF6, 0x68, 0x10, 0x07, 0x46, 0x70, 0x90, 0x03, 0x20, 0x86, 0xF6, 0x4C, 0x56, 0xF3, 0xA2, +0x00, 0xA0, 0x1C, 0x4C, 0x13, 0xF1, 0xA2, 0x00, 0xA0, 0x0D, 0xD0, 0xF7, 0xA2, 0x00, 0xA0, 0x0F, +0xD0, 0xF1, 0xA2, 0x0C, 0xA0, 0x14, 0xD0, 0xEB, 0x20, 0x1E, 0xF4, 0x20, 0xD5, 0xF6, 0xA5, 0x71, +0x30, 0x07, 0xA2, 0x0C, 0xA0, 0x00, 0x4C, 0x12, 0xF4, 0xA2, 0x1C, 0x20, 0x63, 0xF2, 0x20, 0x44, +0xF2, 0xD0, 0x0E, 0x20, 0x48, 0xF2, 0xD0, 0x09, 0xA2, 0x0C, 0xA0, 0x00, 0xA9, 0x06, 0x4C, 0xD8, +0xF0, 0x20, 0xFE, 0xF1, 0x20, 0xFA, 0xF1, 0xA2, 0x0E, 0x20, 0xBA, 0xF6, 0x20, 0xD4, 0xF7, 0x20, +0xD5, 0xF6, 0x4C, 0xA2, 0xF6, 0xA2, 0x1C, 0x20, 0x19, 0xF4, 0x4C, 0xE2, 0xF6, 0xA2, 0x00, 0x20, +0xB4, 0xF0, 0x46, 0xF2, 0x90, 0x05, 0xA2, 0x00, 0x20, 0xC2, 0xF0, 0xA5, 0xF2, 0xD0, 0xEE, 0x60, +0xA2, 0x00, 0x20, 0x09, 0xF7, 0xA0, 0x02, 0x20, 0x42, 0xF1, 0x20, 0xC6, 0xF0, 0xA0, 0x0A, 0x20, +0x42, 0xF1, 0xA2, 0x62, 0x4C, 0x63, 0xF2, 0xA2, 0x04, 0xA0, 0x62, 0x4C, 0x65, 0xF2, 0xA5, 0x6D, +0x30, 0x16, 0x20, 0x6D, 0xF7, 0x4C, 0x56, 0xF3, 0x68, 0x68, 0x20, 0x06, 0xF2, 0xA9, 0x25, 0x85, +0x6E, 0xA5, 0x6B, 0x85, 0x6F, 0x4C, 0x31, 0xF3, 0xA5, 0x6A, 0xC9, 0xFE, 0xF0, 0xEC, 0xA2, 0x02, +0x20, 0x19, 0xF4, 0xA2, 0x02, 0x20, 0x94, 0xF6, 0xA2, 0x02, 0x20, 0x94, 0xF6, 0x20, 0x54, 0xF2, +0xD0, 0xD8, 0xA2, 0x20, 0xA0, 0x0C, 0x20, 0xBC, 0xF6, 0x20, 0x92, 0xF6, 0xC2, 0x30, 0xA0, 0x03, +0x00, 0x20, 0x3D, 0xF1, 0x86, 0xC3, 0x84, 0xC4, 0x20, 0x06, 0xF2, 0x20, 0x8C, 0xF6, 0x20, 0x6D, +0xF7, 0xA9, 0x10, 0x24, 0xC4, 0xF0, 0x03, 0x20, 0x86, 0xF6, 0x4C, 0x56, 0xF3, 0xA5, 0x6C, 0xC9, +0xFF, 0xD0, 0x19, 0xA5, 0x6A, 0xC9, 0xFF, 0xD0, 0x03, 0x4C, 0x18, 0xF7, 0xA5, 0x6B, 0x10, 0x07, +0x20, 0x34, 0xF2, 0xA2, 0x3E, 0xD0, 0x02, 0xA2, 0x3A, 0x4C, 0x63, 0xF2, 0x10, 0x09, 0xA5, 0x6A, +0xC9, 0xFF, 0xD0, 0x19, 0x4C, 0x18, 0xF7, 0xA5, 0x6A, 0xC9, 0xFE, 0xD0, 0x10, 0xA2, 0x00, 0xA0, +0x1C, 0x20, 0x0A, 0xF3, 0x30, 0x07, 0x70, 0x05, 0xD0, 0x03, 0x4C, 0x18, 0xF7, 0xA2, 0x02, 0xA0, +0x06, 0xA9, 0x10, 0x20, 0x02, 0xF1, 0xA9, 0x11, 0x85, 0x64, 0xA2, 0x1B, 0x20, 0x5E, 0xF2, 0xF0, +0x06, 0x20, 0x02, 0xF2, 0x4C, 0xEF, 0xF7, 0x20, 0x02, 0xF2, 0x20, 0xD4, 0xF7, 0xA5, 0xF3, 0xD0, +0x1E, 0x4C, 0x98, 0xF6, 0xA5, 0x70, 0x85, 0xF2, 0xA5, 0x71, 0x85, 0xF3, 0xA5, 0x71, 0x10, 0x0E, +0x20, 0x0B, 0xF6, 0x20, 0x88, 0xF2, 0xA5, 0xC5, 0x85, 0xF2, 0xA5, 0xC6, 0x85, 0xF3, 0x60, 0x20, +0x06, 0xF2, 0x18, 0xA5, 0x6A, 0x20, 0xF0, 0xF6, 0xA5, 0x6A, 0x18, 0xA5, 0x6A, 0x10, 0x03, 0x4C, +0x06, 0xF2, 0x60, 0xA2, 0x04, 0xA0, 0x1E, 0x20, 0x0A, 0xF3, 0xF0, 0x05, 0x70, 0x16, 0x4C, 0x68, +0xF8, 0xA5, 0x6A, 0xC9, 0xFF, 0xD0, 0x03, 0x4C, 0x17, 0xF3, 0xA5, 0x6B, 0x10, 0x03, 0x4C, 0x1F, +0xF3, 0x4C, 0x0F, 0xF3, 0xA5, 0x6A, 0xC9, 0xFF, 0xF0, 0xED, 0x10, 0x12, 0xA5, 0x6C, 0xC9, 0xFF, +0xD0, 0x03, 0x4C, 0x68, 0xF8, 0xA5, 0x6B, 0x45, 0x6D, 0xD0, 0xE6, 0x4C, 0x22, 0xF3, 0x20, 0x07, +0xF7, 0xA0, 0x06, 0x20, 0xF7, 0xF6, 0x20, 0xFE, 0xF1, 0x20, 0xFA, 0xF1, 0x20, 0x54, 0xF2, 0xF0, +0x14, 0x20, 0x7F, 0xF6, 0xE0, 0x00, 0xF0, 0x0D, 0xE0, 0xFE, 0xD0, 0x06, 0x20, 0x2C, 0xF2, 0x4C, +0x56, 0xF3, 0x20, 0x30, 0xF2, 0x4C, 0x56, 0xF3, 0xA9, 0x26, 0x4C, 0x1F, 0xF7, 0xA2, 0x04, 0xA0, +0x1E, 0x20, 0x0A, 0xF3, 0x30, 0xF2, 0x70, 0x02, 0xD0, 0xEE, 0x30, 0x14, 0x70, 0x12, 0xD0, 0x10, +0xA5, 0x6A, 0xC9, 0xFF, 0xF0, 0x10, 0xA5, 0x6B, 0x30, 0x03, 0x4C, 0x1F, 0xF3, 0x4C, 0x1B, 0xF3, +0xA5, 0x6A, 0xC9, 0xFF, 0xD0, 0x03, 0x4C, 0x0F, 0xF3, 0xA5, 0x6C, 0xC9, 0xFF, 0xF0, 0x05, 0x10, +0x1D, 0x4C, 0xA9, 0xF8, 0xA2, 0x02, 0x4C, 0x2B, 0xF3, 0xA5, 0x6B, 0x10, 0xE9, 0xA2, 0x02, 0xA0, +0x1E, 0x20, 0x0A, 0xF3, 0xF0, 0xD7, 0x30, 0x03, 0x4C, 0x13, 0xF3, 0x4C, 0x29, 0xF3, 0xA5, 0x6A, +0x10, 0x17, 0xA5, 0x6B, 0x45, 0x6D, 0xD0, 0xDC, 0xA2, 0x1C, 0x20, 0x20, 0xF4, 0xA2, 0x04, 0xA0, +0x0E, 0x20, 0xBC, 0xF6, 0xA2, 0x0E, 0x4C, 0x2B, 0xF3, 0x20, 0x07, 0xF7, 0xA2, 0x04, 0xA0, 0x12, +0x20, 0x65, 0xF2, 0xA5, 0x6C, 0xD0, 0x05, 0xA0, 0x06, 0x20, 0x42, 0xF1, 0x20, 0xC6, 0xF0, 0xA2, +0x62, 0x20, 0x88, 0xF6, 0xA5, 0x6C, 0xF0, 0x0B, 0xA0, 0x0C, 0x20, 0x42, 0xF1, 0x20, 0x3C, 0xF2, +0x4C, 0x08, 0xF9, 0xA0, 0x0E, 0x20, 0x42, 0xF1, 0xA2, 0x62, 0x20, 0x88, 0xF6, 0xA2, 0x12, 0xA0, +0x62, 0x20, 0xBC, 0xF6, 0x20, 0xFA, 0xF1, 0x20, 0xFE, 0xF1, 0x20, 0x02, 0xF7, 0xC2, 0x30, 0x18, +0x7B, 0x69, 0x82, 0x00, 0x85, 0x7C, 0xE2, 0x30, 0x64, 0x7E, 0x20, 0xDF, 0xEF, 0x8A, 0xC9, 0xFE, +0xD0, 0x06, 0x20, 0x2C, 0xF2, 0x4C, 0x3F, 0xF9, 0xC9, 0x00, 0xF0, 0x03, 0x20, 0x30, 0xF2, 0x4C, +0x56, 0xF3, 0x05, 0x00, 0xFF, 0x3B, 0xCE, 0xF6, 0xAF, 0x46, 0x46, 0xB9, 0xF6, 0x3F, 0xEB, 0xFB, +0x61, 0x4D, 0x21, 0x32, 0xF4, 0x94, 0xF9, 0x3F, 0x93, 0x78, 0x44, 0xD9, 0x03, 0x89, 0x97, 0xDC, +0xFB, 0x3F, 0x05, 0x1D, 0xCA, 0x57, 0x46, 0x39, 0x9E, 0x9F, 0xFF, 0x3F, 0x9A, 0xDC, 0xEC, 0x46, +0x3A, 0xC5, 0x6B, 0xCD, 0x01, 0xC0, 0xE0, 0xFC, 0xE6, 0xBA, 0xE7, 0x97, 0x83, 0xB4, 0x01, 0x40, +0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x3F, 0x1D, 0x5E, 0x0A, 0xCE, +0xC3, 0x35, 0x18, 0xB8, 0x00, 0xC0, 0x96, 0x1A, 0xF4, 0xDD, 0x0E, 0xDF, 0x3E, 0xFA, 0xFF, 0x3F, +0x03, 0x00, 0x79, 0x9B, 0x20, 0x1B, 0xC8, 0x90, 0x88, 0xFF, 0xEE, 0xBF, 0x2F, 0x27, 0x13, 0xB8, +0xEF, 0x84, 0x5C, 0xDA, 0xF9, 0x3F, 0x45, 0xFD, 0x0F, 0xF8, 0xEA, 0xBA, 0xD3, 0x97, 0x03, 0x40, +0x0C, 0xFF, 0xBE, 0x95, 0xA1, 0x71, 0x86, 0xAB, 0x09, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0xFF, 0x3F, 0xB4, 0x5A, 0x4B, 0x98, 0x02, 0x70, 0x48, 0xD5, 0x06, 0x40, +0x80, 0x07, 0xB7, 0x96, 0x2E, 0x61, 0x75, 0xF7, 0x0A, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x80, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xBF, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, +0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x0D, 0x40, 0x84, 0x64, 0xDE, 0xF9, +0x33, 0xF3, 0x04, 0xB5, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFE, 0x3F, +0x84, 0x64, 0xDE, 0xF9, 0x33, 0xF3, 0x04, 0xB5, 0xFE, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x80, 0xFD, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFE, 0x3F, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFE, 0x3F, 0x35, 0xC2, 0x68, 0x21, 0xA2, 0xDA, 0x0F, 0xC9, +0xFF, 0x3F, 0x35, 0xC2, 0x68, 0x21, 0xA2, 0xDA, 0x0F, 0xC9, 0xFE, 0x3F, 0x9B, 0x4A, 0xBB, 0xA2, +0x58, 0x54, 0xF8, 0xAD, 0x00, 0x40, 0xAC, 0x79, 0xCF, 0xD1, 0xF7, 0x17, 0x72, 0xB1, 0xFE, 0x3F, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x3F, 0x30, 0x5A, 0xA8, 0xA6, 0x44, 0xB8, 0xD8, 0x88, +0x07, 0x40, 0x20, 0x23, 0x79, 0x09, 0x49, 0x8A, 0x15, 0x8A, 0x0E, 0x40, 0x2B, 0xF2, 0x63, 0xFE, +0x26, 0xFE, 0xA9, 0xFA, 0x13, 0x40, 0x03, 0x00, 0xF5, 0xCB, 0xF5, 0x43, 0xAE, 0x86, 0x50, 0xC2, +0xFE, 0xBF, 0xA2, 0x6B, 0xE7, 0xBE, 0x66, 0xEC, 0x76, 0x9E, 0x06, 0x40, 0x01, 0xAA, 0xC4, 0xC4, +0xD6, 0xA1, 0x51, 0xAF, 0x0C, 0xC0, 0xCE, 0xF6, 0x97, 0xA9, 0xC4, 0xFE, 0x1B, 0xA7, 0x11, 0x40, +0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x3F, 0x85, 0x96, 0xDF, 0xFB, +0x95, 0x6A, 0xD9, 0xA6, 0x07, 0x40, 0x6B, 0x15, 0x5D, 0xE8, 0x65, 0xEA, 0xA7, 0xC7, 0x0E, 0x40, +0xB2, 0x52, 0x17, 0x7B, 0x1C, 0x87, 0x6E, 0xD2, 0x14, 0x40, 0x03, 0x00, 0x58, 0xD7, 0xF6, 0xA6, +0xD7, 0x18, 0x7E, 0xD5, 0xFB, 0xBF, 0x72, 0xD0, 0xB3, 0x32, 0x7E, 0x93, 0x64, 0xE3, 0x03, 0x40, +0x45, 0xC0, 0x6B, 0x58, 0x56, 0x40, 0x2D, 0xA6, 0x0A, 0xC0, 0x7A, 0x8C, 0x0F, 0x52, 0x68, 0xAF, +0x49, 0x8C, 0x10, 0x40, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xBF, +0x55, 0x09, 0xC0, 0x83, 0x24, 0x03, 0x13, 0xB5, 0x05, 0x40, 0xCF, 0xE0, 0x62, 0x57, 0x42, 0xB2, +0xFF, 0xD1, 0x09, 0xC0, 0xAB, 0x66, 0x76, 0x93, 0x09, 0x93, 0x90, 0xE1, 0x0A, 0x40, 0x03, 0x00, +0x38, 0x28, 0x9B, 0xD7, 0x63, 0x33, 0xFC, 0xB1, 0xE9, 0xBF, 0xD1, 0x4C, 0xC7, 0x3E, 0xD8, 0x71, +0x9D, 0xAA, 0xFD, 0x3F, 0xBB, 0x7D, 0x65, 0xB9, 0x24, 0x8E, 0xCD, 0xE9, 0x03, 0xC0, 0x36, 0x18, +0x4B, 0x9D, 0x70, 0x36, 0x9A, 0xF0, 0x07, 0x40, 0x04, 0x00, 0xAD, 0x5D, 0xFA, 0x2A, 0xAE, 0x1E, +0xD3, 0x98, 0xFF, 0x3F, 0xD9, 0xEF, 0xCD, 0xB3, 0xD8, 0x4C, 0x79, 0x8F, 0x03, 0x40, 0x68, 0xB3, +0xB8, 0x70, 0x85, 0xED, 0x37, 0x8E, 0x05, 0x40, 0xB8, 0xF3, 0x59, 0xAC, 0xA1, 0xBE, 0xA4, 0xCD, +0x05, 0x40, 0x56, 0xC6, 0xF0, 0x4C, 0x55, 0x9C, 0x05, 0xC4, 0x04, 0x40, 0x04, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x3F, 0x30, 0x0E, 0x92, 0x1F, 0x13, 0x6C, 0x3B, 0xA2, +0x02, 0x40, 0x6F, 0x48, 0x3A, 0xFA, 0x3D, 0x59, 0xC8, 0xC3, 0x03, 0x40, 0x45, 0xD9, 0xF5, 0xDD, +0x38, 0x68, 0xAE, 0x82, 0x03, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x6A, 0xE2, 0x98, 0x81, 0x2C, 0x3A, 0xCD, 0x93, 0xFE, 0x3F, 0x62, 0x64, 0xDB, 0x5F, 0xB1, 0x86, +0x2A, 0xDC, 0xFA, 0x3F, 0x8A, 0xB1, 0x6A, 0xF6, 0xF4, 0xA2, 0x30, 0x89, 0xFD, 0x3F, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x4E, 0x83, 0x0D, 0x40, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, +0x1D, 0x40, 0x82, 0x00, 0x96, 0x00, 0xA0, 0x00, 0x70, 0x00, 0xC3, 0x00, 0xC5, 0x00, 0xC7, 0x00, +0xD1, 0x00, 0xDB, 0x00, 0xE5, 0x00, 0x42, 0xF9, 0x80, 0xF9, 0xA0, 0xF9, 0xCA, 0xF9, 0xEA, 0xF9, +0xF4, 0xF9, 0xFE, 0xF9, 0x08, 0xFA, 0x12, 0xFA, 0x1C, 0xFA, 0x26, 0xFA, 0x30, 0xFA, 0x3A, 0xFA, +0x44, 0xFA, 0x4E, 0xFA, 0x58, 0xFA, 0x62, 0xFA, 0x6C, 0xFA, 0x76, 0xFA, 0x80, 0xFA, 0x8A, 0xFA, +0x94, 0xFA, 0x9E, 0xFA, 0xAC, 0xFA, 0xD6, 0xFA, 0x00, 0xFB, 0x2A, 0xFB, 0x54, 0xFB, 0x7E, 0xFB, +0xA8, 0xFB, 0xDC, 0xFB, 0x10, 0xFC, 0x1A, 0xFC, 0x24, 0xFC, 0x2E, 0xFC, 0x38, 0xFC, 0x64, 0x00, +0x66, 0x00, 0x68, 0x00, 0xB4, 0x00, 0xA8, 0xFA, 0x20, 0xE6, 0xFD, 0xD0, 0x03, 0x4C, 0x56, 0xF3, +0x10, 0x03, 0x4C, 0x31, 0xF3, 0x20, 0x0E, 0xFD, 0xA9, 0x01, 0x24, 0xF4, 0xD0, 0x06, 0x20, 0x2F, +0xFD, 0x4C, 0xC7, 0xFC, 0x20, 0x74, 0xFD, 0xA9, 0x00, 0x85, 0xF5, 0xA5, 0xF4, 0x29, 0x03, 0x38, +0xE9, 0x02, 0x85, 0xF4, 0xA5, 0xF5, 0xE9, 0x00, 0x85, 0xF5, 0x30, 0x03, 0x20, 0x86, 0xF6, 0x20, +0xFA, 0xF1, 0x20, 0x3C, 0xF2, 0x20, 0x7F, 0xF6, 0xE0, 0x01, 0xD0, 0x03, 0x20, 0x30, 0xF2, 0x4C, +0x56, 0xF3, 0xA5, 0x6D, 0x85, 0x6F, 0xA9, 0x21, 0x85, 0x6E, 0x60, 0x20, 0xF2, 0xFC, 0xA0, 0x00, +0x84, 0xF5, 0xC8, 0x84, 0xF4, 0xA5, 0x6C, 0xC9, 0xFF, 0xD0, 0xA5, 0x4C, 0x17, 0xF3, 0xA2, 0x32, +0x20, 0xCC, 0xF0, 0x64, 0xC6, 0x8A, 0x29, 0x7F, 0x85, 0xC5, 0xC0, 0x00, 0xF0, 0x03, 0x20, 0x88, +0xF2, 0x18, 0xA5, 0xF4, 0x65, 0xC5, 0x85, 0xF4, 0xA5, 0xF5, 0x65, 0xC6, 0x85, 0xF5, 0x60, 0xA9, +0x42, 0x20, 0x4B, 0xFD, 0xA2, 0x62, 0x20, 0xBC, 0xF0, 0xA2, 0x0E, 0x4C, 0x2B, 0xF5, 0x20, 0x4B, +0xFD, 0x20, 0xBA, 0xF0, 0xA2, 0x62, 0xA0, 0x12, 0x4C, 0x65, 0xF2, 0x85, 0xC3, 0x20, 0x17, 0xF4, +0xA2, 0x0C, 0x20, 0xC2, 0xF0, 0xA2, 0x0C, 0x20, 0x09, 0xF7, 0xA2, 0x00, 0x20, 0xC8, 0xF0, 0xA2, +0x10, 0x20, 0x88, 0xF1, 0xE6, 0xC3, 0xE6, 0xC3, 0xA2, 0x0E, 0x20, 0x88, 0xF1, 0xA2, 0x10, 0xA0, +0x0E, 0x4C, 0xBC, 0xF6, 0xA9, 0x46, 0x20, 0x3E, 0xFD, 0x20, 0xBA, 0xF0, 0xA2, 0x0C, 0xA0, 0x2C, +0x20, 0x0A, 0xF3, 0x70, 0x14, 0x20, 0xC0, 0xF0, 0xA2, 0x0C, 0xA0, 0x0E, 0x20, 0x2D, 0xF5, 0xA2, +0x0E, 0x20, 0x63, 0xF2, 0xA2, 0x1C, 0x4C, 0xD4, 0xF0, 0x20, 0x8C, 0xF6, 0xA2, 0x28, 0x20, 0x2B, +0xF5, 0x20, 0x17, 0xF4, 0x20, 0xC0, 0xF0, 0xA2, 0x0C, 0x20, 0xB4, 0xF0, 0xA2, 0x0E, 0x20, 0x2B, +0xF5, 0xA2, 0x0C, 0x20, 0xD4, 0xF0, 0x20, 0x86, 0xF6, 0xA2, 0x30, 0x4C, 0xD4, 0xF0, 0x20, 0xE6, +0xFD, 0x10, 0x03, 0x4C, 0x31, 0xF3, 0xD0, 0x03, 0x4C, 0x56, 0xF3, 0x20, 0x0E, 0xFD, 0x20, 0xF2, +0xFD, 0x66, 0xF4, 0x90, 0x0E, 0x20, 0x86, 0xF6, 0x20, 0xA3, 0xFE, 0x20, 0x4C, 0xF2, 0xF0, 0x03, +0x20, 0x86, 0xF6, 0x4C, 0xDF, 0xFC, 0x20, 0xF2, 0xFC, 0x64, 0xF5, 0x64, 0xF4, 0xA5, 0x6C, 0xC9, +0xFF, 0x60, 0xA9, 0x4A, 0x20, 0x3E, 0xFD, 0xA2, 0x12, 0x20, 0xBC, 0xF0, 0xA2, 0x0C, 0xA0, 0x2C, +0x20, 0x0A, 0xF3, 0x70, 0x13, 0xA2, 0x22, 0xA0, 0x12, 0x20, 0xBC, 0xF6, 0xA2, 0x12, 0xA0, 0x0E, +0x20, 0xD6, 0xF0, 0xA2, 0x0E, 0x4C, 0xD4, 0xF0, 0x20, 0x25, 0xF4, 0xA2, 0x2E, 0xA0, 0x10, 0x20, +0x2D, 0xF5, 0xA2, 0x22, 0xA0, 0x10, 0x20, 0xBC, 0xF6, 0xA2, 0x0C, 0xA0, 0x10, 0x20, 0xB6, 0xF0, +0xA2, 0x0E, 0xA0, 0x10, 0x20, 0xD6, 0xF0, 0xA2, 0x2C, 0x20, 0xC2, 0xF0, 0xA2, 0x0C, 0xA0, 0x10, +0x20, 0xD6, 0xF0, 0xA2, 0x10, 0x4C, 0xD4, 0xF0, 0xA5, 0x6C, 0xC9, 0xFF, 0x10, 0x0F, 0xA2, 0x32, +0x20, 0x63, 0xF2, 0xA5, 0x6D, 0x10, 0x03, 0x20, 0x86, 0xF6, 0x4C, 0x5F, 0xFE, 0xD0, 0x03, 0x4C, +0x56, 0xF3, 0x20, 0x8C, 0xF6, 0x20, 0x72, 0xFE, 0xA5, 0x6D, 0x10, 0x03, 0x20, 0x86, 0xF6, 0x4C, +0xDF, 0xFC, 0xA9, 0x00, 0x85, 0xF4, 0xA2, 0x00, 0xA0, 0x1C, 0x20, 0x0A, 0xF3, 0x30, 0x09, 0xF0, +0x07, 0xA9, 0x01, 0x85, 0xF4, 0x20, 0xA3, 0xFE, 0xA2, 0x00, 0xA0, 0x02, 0x20, 0x65, 0xF2, 0xA2, +0x00, 0xA0, 0x56, 0x20, 0x0A, 0xF3, 0x70, 0x17, 0xA9, 0x4E, 0x20, 0x4B, 0xFD, 0x20, 0xB2, 0xF0, +0x4C, 0xF7, 0xFE, 0x20, 0x17, 0xF4, 0xA2, 0x1C, 0x20, 0x63, 0xF2, 0x20, 0xB8, 0xF6, 0x60, 0x20, +0x17, 0xF4, 0xA2, 0x52, 0x20, 0xC2, 0xF0, 0xA2, 0x1C, 0x20, 0x27, 0xF4, 0xA2, 0x0C, 0xA0, 0x10, +0x20, 0xBC, 0xF6, 0xA2, 0x1C, 0xA0, 0x10, 0x20, 0xD6, 0xF0, 0xA2, 0x1C, 0xA0, 0x0C, 0x20, 0xD6, +0xF0, 0xA2, 0x52, 0x20, 0x2B, 0xF5, 0xA2, 0x00, 0x20, 0x46, 0xFD, 0x20, 0xB8, 0xF6, 0xA2, 0x10, +0xA0, 0x12, 0x20, 0xBC, 0xF6, 0xA9, 0x4E, 0x20, 0x4B, 0xFD, 0x20, 0xB2, 0xF0, 0xA2, 0x54, 0x20, +0xD4, 0xF0, 0xA2, 0x12, 0x20, 0xD4, 0xF0, 0xA2, 0x02, 0x20, 0x2B, 0xF5, 0xA5, 0xF4, 0xD0, 0x03, +0x4C, 0x86, 0xF6, 0xA2, 0x32, 0x4C, 0xD4, 0xF0, 0xA2, 0x58, 0x20, 0xB4, 0xF0, 0xA2, 0x5A, 0x20, +0xCC, 0xF0, 0x20, 0x7F, 0xF6, 0x10, 0x05, 0xA2, 0x5A, 0x20, 0xD4, 0xF0, 0x4C, 0x56, 0xF3, 0xA2, +0x00, 0x00, 0x22, 0x68, 0x00, 0xE1, 0x80, 0x03, 0xA2, 0x00, 0x00, 0x2B, 0x5C, 0x0B, 0xBF, 0xFF, +0xA2, 0x00, 0x00, 0x22, 0x68, 0x00, 0xE1, 0x80, 0xF3, 0xA2, 0x00, 0x00, 0x80, 0xEE, 0x0B, 0xA2, +0x00, 0x00, 0x2B, 0xA0, 0x00, 0x00, 0x4C, 0x33, 0xFF, 0x0B, 0xA2, 0x00, 0x00, 0x2B, 0xA0, 0x0A, +0x00, 0x4C, 0x33, 0xFF, 0x0B, 0xA2, 0x00, 0x00, 0x2B, 0xA0, 0x0C, 0x00, 0x4C, 0x33, 0xFF, 0x0B, +0xA2, 0x00, 0x00, 0x2B, 0xA0, 0x02, 0x00, 0x4C, 0x33, 0xFF, 0x0B, 0xA2, 0x00, 0x00, 0x2B, 0xA0, +0x04, 0x00, 0x4C, 0x33, 0xFF, 0x0B, 0xA2, 0x00, 0x00, 0x2B, 0xA0, 0x06, 0x00, 0x4C, 0x33, 0xFF, +0x0B, 0xA2, 0x00, 0x00, 0x2B, 0xA0, 0x08, 0x00, 0x4C, 0x33, 0xFF, 0x0B, 0xA2, 0x00, 0x00, 0x2B, +0xA0, 0x00, 0x00, 0x4C, 0x2C, 0xFF, 0x0B, 0xA2, 0x00, 0x00, 0x2B, 0xA0, 0x0A, 0x00, 0x4C, 0x2C, +0xFF, 0x0B, 0xA2, 0x00, 0x00, 0x2B, 0xA0, 0x0C, 0x00, 0x4C, 0x2C, 0xFF, 0x0B, 0xA2, 0x00, 0x00, +0x2B, 0xA0, 0x0E, 0x00, 0x4C, 0x2C, 0xFF, 0x0B, 0xA2, 0x00, 0x00, 0x2B, 0xA0, 0x02, 0x00, 0x4C, +0x2C, 0xFF, 0x0B, 0xA2, 0x00, 0x00, 0x2B, 0xA0, 0x04, 0x00, 0x4C, 0x2C, 0xFF, 0x0B, 0xA2, 0x00, +0x00, 0x2B, 0xA0, 0x06, 0x00, 0x4C, 0x2C, 0xFF, 0x0B, 0xA2, 0x00, 0x00, 0x2B, 0xA0, 0x08, 0x00, +0x4C, 0x2C, 0xFF, 0xA2, 0xFF, 0xFF, 0x4C, 0x90, 0xFF, 0x0B, 0xA2, 0x00, 0x00, 0x2B, 0xA0, 0x10, +0x00, 0x4C, 0x2C, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x30, 0x00, 0x00, 0x00, 0xED, 0x01, 0xFF, 0x00, 0x82, 0x04, 0xFF, 0x00, 0xCE, 0x04, 0xFF, 0x00, +0xE4, 0x04, 0xFF, 0x00, 0xEC, 0x04, 0xFF, 0x00, 0xFE, 0x04, 0xFF, 0x00, 0x06, 0x01, 0xFF, 0x00, +0x06, 0x01, 0xFF, 0x00, 0x06, 0x05, 0xFF, 0x00, 0x66, 0x05, 0xFF, 0x00, 0xC4, 0x05, 0xFF, 0x00, +0x06, 0x01, 0xFF, 0x00, 0x06, 0x01, 0xFF, 0x00, 0x06, 0x01, 0xFF, 0x00, 0x06, 0x01, 0xFF, 0x00, +0xFA, 0x05, 0xFF, 0x00, 0x0B, 0x06, 0xFF, 0x00, 0x37, 0x06, 0xFF, 0x00, 0x45, 0x06, 0xFF, 0x00, +0x06, 0x01, 0xFF, 0x00, 0x06, 0x01, 0xFF, 0x00, 0x06, 0x01, 0xFF, 0x00, 0x06, 0x01, 0xFF, 0x00, +0x7F, 0x06, 0xFF, 0x00, 0x97, 0x06, 0xFF, 0x00, 0xB1, 0x07, 0xFF, 0x00, 0xE3, 0x07, 0xFF, 0x00, +0x0F, 0x08, 0xFF, 0x00, 0x3A, 0x08, 0xFF, 0x00, 0x4B, 0x08, 0xFF, 0x00, 0x56, 0x08, 0xFF, 0x00, +0x6C, 0x08, 0xFF, 0x00, 0x81, 0x08, 0xFF, 0x00, 0xCF, 0x08, 0xFF, 0x00, 0xE4, 0x08, 0xFF, 0x00, +0x04, 0x09, 0xFF, 0x00, 0x23, 0x09, 0xFF, 0x00, 0x06, 0x01, 0xFF, 0x00, 0x06, 0x01, 0xFF, 0x00, +0x4D, 0x09, 0xFF, 0x00, 0x8A, 0x09, 0xFF, 0x00, 0xC7, 0x09, 0xFF, 0x00, 0x13, 0x0A, 0xFF, 0x00, +0x06, 0x01, 0xFF, 0x00, 0x06, 0x01, 0xFF, 0x00, 0x06, 0x01, 0xFF, 0x00, 0x06, 0x01, 0xFF, 0x00, +0x10, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, +0xE4, 0x04, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFE, 0x04, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, +0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x78, 0x13, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, +0xA3, 0x11, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, +0x22, 0x89, 0x01, 0xFF, 0x4C, 0xC4, 0x01, 0x22, 0x88, 0x16, 0xE1, 0x5C, 0x8C, 0x16, 0xE1, 0x00, +0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, +0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x02, +0x04, 0x02, 0x06, 0x04, 0x04, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x81, 0x04, +0xFF, 0x5C, 0x82, 0x04, 0xFF, 0x5C, 0x99, 0x01, 0xFF, 0x5C, 0xC4, 0x01, 0xFF, 0x5C, 0x38, 0x0A, +0xFF, 0x5C, 0x27, 0x0B, 0xFF, 0x5C, 0x8C, 0x0C, 0xFF, 0x5C, 0x16, 0x0D, 0xFF, 0x5C, 0x27, 0x0E, +0xFF, 0x5C, 0xEA, 0x0E, 0xFF, 0x5C, 0xD2, 0x0F, 0xFF, 0x5C, 0xFC, 0x0F, 0xFF, 0x5C, 0x74, 0x10, +0xFF, 0x5C, 0x72, 0x10, 0xFF, 0x5C, 0x32, 0x03, 0xFF, 0x8A, 0xEB, 0xE2, 0x30, 0x29, 0xFF, 0xAA, +0xA9, 0xE1, 0x48, 0xBF, 0x3D, 0x01, 0xFF, 0x80, 0x0E, 0x8A, 0xEB, 0xE2, 0x30, 0x29, 0xFF, 0xAA, +0xA9, 0xE1, 0x48, 0xBF, 0x0E, 0x01, 0xFF, 0xC2, 0x30, 0xFA, 0x7A, 0x29, 0xFF, 0x00, 0x48, 0x3B, +0x38, 0xE9, 0x24, 0x00, 0x1B, 0x8B, 0x0B, 0x5B, 0x64, 0x23, 0x64, 0x01, 0x5A, 0xDA, 0x22, 0x64, +0x00, 0xE1, 0xAB, 0x6B, 0x22, 0x68, 0x00, 0xE1, 0xA6, 0x25, 0xA5, 0x2B, 0x95, 0x2B, 0xA5, 0x29, +0x95, 0x29, 0xA5, 0x27, 0x95, 0x27, 0x3B, 0x18, 0x65, 0x25, 0x69, 0x29, 0x00, 0xAA, 0x2B, 0xAB, +0x68, 0xC9, 0x01, 0x00, 0x9A, 0xB0, 0x01, 0x6B, 0x6B, 0xA9, 0x00, 0x00, 0x18, 0x6B, 0xAF, 0xFE, +0x15, 0xE1, 0x10, 0x0E, 0x22, 0x88, 0x16, 0xE1, 0x22, 0xB8, 0x16, 0xE1, 0xB0, 0x08, 0x5C, 0x8C, +0x16, 0xE1, 0x22, 0x99, 0x01, 0xFF, 0xA9, 0x00, 0x00, 0xA2, 0x00, 0x05, 0x9D, 0xFE, 0x15, 0xCA, +0xCA, 0x10, 0xF9, 0xA9, 0xE8, 0x1A, 0xAA, 0x9F, 0xFC, 0xFF, 0xE0, 0xA9, 0xE1, 0x00, 0x9F, 0xFE, +0xFF, 0xE0, 0x8A, 0x38, 0xE9, 0x14, 0x00, 0xAA, 0x9D, 0x20, 0x00, 0xA9, 0xE1, 0x00, 0x9D, 0x22, +0x00, 0x8A, 0xC9, 0x00, 0x17, 0xD0, 0xE0, 0xA9, 0x00, 0x00, 0x8D, 0x74, 0x17, 0x8D, 0x76, 0x17, +0x8D, 0x84, 0x17, 0x8D, 0x86, 0x17, 0xA2, 0x1E, 0x00, 0xBF, 0xDC, 0x02, 0xFF, 0x9D, 0x00, 0x16, +0xCA, 0xCA, 0x10, 0xF5, 0xA2, 0x00, 0x00, 0x9B, 0xBF, 0xAC, 0x02, 0xFF, 0x99, 0x00, 0x17, 0xBF, +0xAE, 0x02, 0xFF, 0x99, 0x02, 0x17, 0xBF, 0xB0, 0x02, 0xFF, 0x99, 0x08, 0x17, 0xBF, 0xB2, 0x02, +0xFF, 0x99, 0x0A, 0x17, 0xA9, 0x00, 0xC0, 0x99, 0x04, 0x17, 0x8A, 0x18, 0x69, 0x08, 0x00, 0xAA, +0x98, 0x69, 0x14, 0x00, 0xA8, 0xC9, 0x78, 0x00, 0x90, 0xCE, 0x20, 0xFC, 0x02, 0x8D, 0x3E, 0x17, +0x8A, 0x8D, 0x46, 0x17, 0xA2, 0x3A, 0x00, 0xBF, 0x4D, 0x01, 0xFF, 0x9D, 0x80, 0x16, 0xCA, 0xCA, +0x10, 0xF5, 0xA9, 0xFF, 0xFF, 0x8D, 0xFE, 0x15, 0x5C, 0x8C, 0x16, 0xE1, 0x00, 0x00, 0x00, 0x00, +0x00, 0x08, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0xC0, 0x01, 0x00, +0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0xDE, 0x00, 0x00, 0xC0, 0xE0, 0x00, +0x00, 0x60, 0x00, 0x00, 0x00, 0xC0, 0xE1, 0x00, 0x00, 0x40, 0x1E, 0xFF, 0x00, 0x17, 0xE1, 0x00, +0x00, 0x00, 0x00, 0x00, 0x78, 0x17, 0xE1, 0x00, 0x14, 0x17, 0xE1, 0x00, 0x28, 0x17, 0xE1, 0x00, +0x3C, 0x17, 0xE1, 0x00, 0x50, 0x17, 0xE1, 0x00, 0x64, 0x17, 0xE1, 0x00, 0xA9, 0x00, 0x00, 0x85, +0x03, 0xA9, 0x7F, 0x00, 0x85, 0x05, 0x49, 0xFF, 0xFF, 0x87, 0x03, 0xC6, 0x05, 0x1A, 0xC9, 0xFE, +0xFF, 0xD0, 0xF6, 0xA9, 0x7F, 0x00, 0x85, 0x05, 0x49, 0xFF, 0xFF, 0xA2, 0x60, 0x00, 0xC7, 0x03, +0xF0, 0x09, 0xE8, 0xC6, 0x05, 0x1A, 0xC9, 0xFE, 0xFF, 0xD0, 0xF3, 0xA5, 0x05, 0x1A, 0x8D, 0x24, +0x16, 0x60, 0x20, 0x9E, 0x03, 0xD0, 0x65, 0x20, 0xDB, 0x03, 0xA2, 0x04, 0x00, 0x20, 0x3F, 0x04, +0xA2, 0x08, 0x00, 0x20, 0x3F, 0x04, 0x20, 0xF5, 0x0A, 0x20, 0xD6, 0x0D, 0xF0, 0x4C, 0xA0, 0x06, +0x00, 0xB7, 0x0F, 0x89, 0x00, 0xFF, 0xD0, 0x0E, 0xC9, 0xFF, 0x00, 0xD0, 0xEC, 0x88, 0x88, 0xB7, +0x0F, 0x89, 0x00, 0x10, 0xD0, 0xE3, 0xA5, 0x0F, 0x85, 0x17, 0xA5, 0x11, 0x85, 0x19, 0xA5, 0x15, +0x48, 0xA5, 0x13, 0x48, 0x20, 0xA8, 0x0C, 0xA0, 0x06, 0x00, 0xB7, 0x17, 0x29, 0x00, 0xFF, 0xF0, +0x0E, 0xA5, 0x19, 0xC9, 0xE1, 0x00, 0xD0, 0x0A, 0xA5, 0x17, 0xC9, 0x00, 0x1B, 0xB0, 0x03, 0x20, +0x57, 0x0D, 0x68, 0x85, 0x13, 0x68, 0x85, 0x15, 0x80, 0xAF, 0x18, 0x6B, 0x38, 0x6B, 0xA2, 0x00, +0x00, 0x20, 0xBF, 0x03, 0xD0, 0x34, 0xA5, 0x1F, 0xC9, 0x00, 0xC0, 0xD0, 0x2D, 0xA5, 0x21, 0xC9, +0xE1, 0x00, 0xD0, 0x26, 0xA2, 0x04, 0x00, 0x20, 0xBF, 0x03, 0xD0, 0x1E, 0xA2, 0x08, 0x00, 0x20, +0xF8, 0x0A, 0xF0, 0x16, 0x20, 0xD6, 0x0D, 0xF0, 0x11, 0xA0, 0x0C, 0x00, 0xB7, 0x13, 0xC5, 0x0F, +0xD0, 0x08, 0xC8, 0xC8, 0xB7, 0x13, 0xC5, 0x11, 0xF0, 0xEA, 0x60, 0xAF, 0x00, 0x16, 0xE1, 0x85, +0x17, 0xAF, 0x02, 0x16, 0xE1, 0x85, 0x19, 0xA0, 0x10, 0x00, 0xB7, 0x17, 0xAA, 0xC8, 0xC8, 0xB7, +0x17, 0x85, 0x19, 0x86, 0x17, 0x05, 0x19, 0xF0, 0x2E, 0xA0, 0x04, 0x00, 0xB7, 0x17, 0x89, 0x00, +0x10, 0xF0, 0xE4, 0xA0, 0x08, 0x00, 0xB7, 0x17, 0x38, 0xE9, 0x0E, 0x00, 0xAA, 0xA8, 0xB7, 0x17, +0x29, 0x00, 0xFF, 0xF0, 0x13, 0x98, 0x38, 0xE9, 0x14, 0x00, 0xC9, 0x14, 0x00, 0xB0, 0xEE, 0xA8, +0xA9, 0xFF, 0xFF, 0x97, 0x17, 0x80, 0xC0, 0x60, 0x8A, 0xA8, 0xB7, 0x17, 0x29, 0x00, 0xFF, 0xF0, +0x05, 0xA9, 0xFF, 0x00, 0x97, 0x17, 0x98, 0x38, 0xE9, 0x14, 0x00, 0x10, 0xEC, 0x80, 0xA8, 0xBF, +0x02, 0x16, 0xE1, 0x48, 0xBF, 0x00, 0x16, 0xE1, 0x48, 0x68, 0x85, 0x17, 0x68, 0x85, 0x19, 0x05, +0x17, 0xF0, 0x2D, 0xA0, 0x12, 0x00, 0xB7, 0x17, 0x48, 0x88, 0x88, 0xB7, 0x17, 0x48, 0xA0, 0x06, +0x00, 0xB7, 0x17, 0xC9, 0xFF, 0x00, 0x90, 0xE1, 0x08, 0x20, 0xA8, 0x0C, 0x28, 0xF0, 0x0C, 0xA5, +0x18, 0xC9, 0x17, 0xE1, 0x90, 0xD3, 0xC9, 0x1B, 0xE1, 0xB0, 0xCE, 0x20, 0x57, 0x0D, 0x80, 0xC9, +0x60, 0x6B, 0x6B, 0x22, 0x88, 0x16, 0xE1, 0xA5, 0x2A, 0x18, 0x69, 0x01, 0x00, 0x85, 0x03, 0xA5, +0x2C, 0x69, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x85, 0x05, 0x20, 0xF5, 0x0A, 0x20, 0xD6, 0x0D, 0xF0, +0x19, 0xA5, 0x03, 0xC5, 0x1B, 0xA5, 0x05, 0xE5, 0x1D, 0x90, 0x0F, 0xA5, 0x03, 0xC5, 0x1F, 0xA5, +0x05, 0xE5, 0x21, 0xB0, 0xE7, 0xA9, 0x00, 0x00, 0x80, 0x05, 0xA0, 0x06, 0x00, 0xB7, 0x0F, 0x85, +0x2D, 0x89, 0x00, 0xF0, 0xD0, 0x05, 0xA9, 0x07, 0x02, 0x85, 0x01, 0x5C, 0x8C, 0x16, 0xE1, 0x22, +0x88, 0x16, 0xE1, 0xAF, 0x81, 0x01, 0xFF, 0x8D, 0xB4, 0x16, 0xAF, 0x83, 0x01, 0xFF, 0x8D, 0xB6, +0x16, 0x5C, 0x8C, 0x16, 0xE1, 0xA9, 0x00, 0x02, 0x83, 0x07, 0x4C, 0xE9, 0x01, 0x22, 0x88, 0x16, +0xE1, 0x20, 0x9E, 0x03, 0xF0, 0x05, 0xA9, 0x01, 0x02, 0x85, 0x01, 0x5C, 0x8C, 0x16, 0xE1, 0xA9, +0xFF, 0xFF, 0x83, 0x07, 0x4C, 0xE9, 0x01, 0x22, 0x88, 0x16, 0xE1, 0xA9, 0xFF, 0xFF, 0x85, 0x09, +0x22, 0x9C, 0x16, 0xE1, 0x90, 0x25, 0xA2, 0x0A, 0x00, 0xB5, 0x2D, 0x95, 0x03, 0xCA, 0xCA, 0x10, +0xF8, 0xA5, 0x09, 0xF0, 0x11, 0xA5, 0x0B, 0x05, 0x0D, 0xF0, 0x28, 0x22, 0x90, 0x16, 0xE1, 0x90, +0x0A, 0x20, 0x50, 0x0C, 0x80, 0x11, 0xA9, 0x07, 0x02, 0x80, 0x03, 0xA9, 0x01, 0x02, 0x85, 0x01, +0x20, 0x57, 0x0D, 0x64, 0x17, 0x64, 0x19, 0xA5, 0x17, 0x85, 0x39, 0xA5, 0x19, 0x85, 0x3B, 0x5C, +0x8C, 0x16, 0xE1, 0xA5, 0x07, 0x89, 0x03, 0xC0, 0xF0, 0x05, 0xA9, 0x04, 0x02, 0x80, 0xDF, 0x20, +0x72, 0x0C, 0x20, 0xCE, 0x0D, 0x80, 0xE0, 0x22, 0x88, 0x16, 0xE1, 0x20, 0x9A, 0x0E, 0xA7, 0x17, +0xA0, 0x02, 0x00, 0x17, 0x17, 0xF0, 0x09, 0xA9, 0x03, 0x02, 0x85, 0x01, 0x5C, 0x8C, 0x16, 0xE1, +0x20, 0xA8, 0x0C, 0xA2, 0x0A, 0x00, 0xB5, 0x31, 0x95, 0x03, 0xCA, 0xCA, 0x10, 0xF8, 0xA5, 0x09, +0xF0, 0x11, 0xA5, 0x0B, 0x05, 0x0D, 0xF0, 0x1C, 0x22, 0x90, 0x16, 0xE1, 0x90, 0x0A, 0x20, 0x50, +0x0C, 0x80, 0x0D, 0xA9, 0x07, 0x02, 0x80, 0x03, 0xA9, 0x01, 0x02, 0x85, 0x01, 0x20, 0xCE, 0x0D, +0x5C, 0x8C, 0x16, 0xE1, 0xA5, 0x07, 0x89, 0x03, 0xC0, 0xF0, 0x05, 0xA9, 0x04, 0x02, 0x80, 0xEB, +0x20, 0x72, 0x0C, 0x80, 0xE8, 0x22, 0x88, 0x16, 0xE1, 0x20, 0x9A, 0x0E, 0x20, 0x7F, 0x0C, 0xA5, +0x03, 0x05, 0x05, 0xF0, 0x05, 0xA9, 0x03, 0x02, 0x80, 0x1B, 0xA5, 0x07, 0x89, 0x03, 0x00, 0xF0, +0x05, 0xA9, 0x08, 0x02, 0x80, 0x0F, 0xA5, 0x0B, 0x05, 0x0D, 0xF0, 0x0B, 0x22, 0x98, 0x16, 0xE1, +0x90, 0x05, 0xA9, 0x01, 0x02, 0x85, 0x01, 0x5C, 0x8C, 0x16, 0xE1, 0x22, 0x88, 0x16, 0xE1, 0x20, +0x9A, 0x0E, 0x20, 0xA8, 0x0C, 0x20, 0x57, 0x0D, 0x5C, 0x8C, 0x16, 0xE1, 0x22, 0x88, 0x16, 0xE1, +0x20, 0xA2, 0x08, 0xB0, 0x0D, 0x20, 0x26, 0x06, 0xAD, 0x06, 0x16, 0xAA, 0xAD, 0x04, 0x16, 0x20, +0x26, 0x06, 0x5C, 0x8C, 0x16, 0xE1, 0x20, 0x2E, 0x0C, 0x90, 0x0C, 0x48, 0xDA, 0x20, 0xA8, 0x0C, +0x20, 0x57, 0x0D, 0xFA, 0x68, 0x80, 0xEF, 0x60, 0x22, 0x88, 0x16, 0xE1, 0x20, 0x9A, 0x0E, 0x20, +0x61, 0x06, 0x5C, 0x8C, 0x16, 0xE1, 0x22, 0x88, 0x16, 0xE1, 0x20, 0xA2, 0x08, 0xB0, 0x0E, 0x20, +0x2E, 0x0C, 0x90, 0x09, 0x48, 0xDA, 0x20, 0x61, 0x06, 0xFA, 0x68, 0x80, 0xF2, 0x5C, 0x8C, 0x16, +0xE1, 0xA0, 0x04, 0x00, 0xB7, 0x17, 0x30, 0x0D, 0x89, 0x00, 0x03, 0xF0, 0x0D, 0x20, 0xA8, 0x0C, +0x20, 0xCE, 0x0D, 0x80, 0x0A, 0xA9, 0x04, 0x02, 0x80, 0x03, 0xA9, 0x05, 0x02, 0x85, 0x01, 0x60, +0x22, 0x88, 0x16, 0xE1, 0x20, 0x9A, 0x0E, 0xA0, 0x08, 0x00, 0xB7, 0x17, 0x85, 0x31, 0xC8, 0xC8, +0xB7, 0x17, 0x85, 0x33, 0x5C, 0x8C, 0x16, 0xE1, 0x22, 0x88, 0x16, 0xE1, 0x20, 0x9A, 0x0E, 0x20, +0x7F, 0x0C, 0xA5, 0x03, 0x05, 0x05, 0xD0, 0x06, 0xA5, 0x0B, 0x05, 0x0D, 0xD0, 0x42, 0xA6, 0x0D, +0xA5, 0x33, 0x86, 0x33, 0x85, 0x0D, 0xA6, 0x0B, 0xA5, 0x31, 0x86, 0x31, 0x85, 0x0B, 0x38, 0xE5, +0x31, 0xAA, 0xA5, 0x0D, 0xE5, 0x33, 0xD0, 0x03, 0x8A, 0xF0, 0x22, 0xB0, 0x35, 0xA5, 0x0B, 0x05, +0x0D, 0xD0, 0x0D, 0xA5, 0x07, 0x89, 0x03, 0xC0, 0xD0, 0x1B, 0x20, 0xA8, 0x0C, 0x20, 0xCE, 0x0D, +0xA0, 0x08, 0x00, 0xA5, 0x0B, 0x97, 0x17, 0xC8, 0xC8, 0xA5, 0x0D, 0x97, 0x17, 0x4C, 0xAE, 0x07, +0xA9, 0x02, 0x02, 0x80, 0x08, 0xA9, 0x04, 0x02, 0x80, 0x03, 0xA9, 0x01, 0x02, 0x85, 0x01, 0x4C, +0xAE, 0x07, 0xA5, 0x03, 0x85, 0x1B, 0x85, 0x2D, 0xA5, 0x05, 0x85, 0x1D, 0x85, 0x2F, 0x05, 0x03, +0xF0, 0x4A, 0xA0, 0x00, 0x00, 0xB7, 0x13, 0x85, 0x1F, 0xC8, 0xC8, 0xB7, 0x13, 0x85, 0x21, 0xA5, +0x07, 0x48, 0x09, 0x00, 0x40, 0x85, 0x07, 0x22, 0x94, 0x16, 0xE1, 0x68, 0x85, 0x07, 0x90, 0x26, +0xA0, 0x08, 0x00, 0xA5, 0x0B, 0x97, 0x17, 0xC8, 0xC8, 0xA5, 0x0D, 0x97, 0x17, 0xA0, 0x00, 0x00, +0xA5, 0x1B, 0x97, 0x17, 0xC8, 0xC8, 0xA5, 0x1D, 0x97, 0x17, 0xC5, 0x05, 0xD0, 0x44, 0xA5, 0x1B, +0xC5, 0x03, 0xF0, 0x99, 0x80, 0x3C, 0x24, 0x07, 0x30, 0x9B, 0x70, 0x99, 0xA0, 0x04, 0x00, 0xA5, +0x07, 0x29, 0xFF, 0xFC, 0x97, 0x17, 0x22, 0x90, 0x16, 0xE1, 0xA0, 0x04, 0x00, 0xA5, 0x07, 0x97, +0x17, 0x90, 0x87, 0xA5, 0x11, 0x48, 0xA5, 0x0F, 0x48, 0x20, 0xA8, 0x0C, 0x68, 0x85, 0x0F, 0x68, +0x85, 0x11, 0xA0, 0x10, 0x00, 0xB7, 0x0F, 0x85, 0x13, 0xC8, 0xC8, 0xB7, 0x0F, 0x85, 0x15, 0x20, +0x50, 0x0C, 0xA5, 0x1B, 0x85, 0x07, 0xA5, 0x1D, 0x85, 0x09, 0xA5, 0x2D, 0x85, 0x03, 0xA5, 0x2F, +0x85, 0x05, 0xA5, 0x31, 0x85, 0x0B, 0xA5, 0x33, 0x85, 0x0D, 0x22, 0xA4, 0x16, 0xE1, 0x5C, 0x8C, +0x16, 0xE1, 0x22, 0x88, 0x16, 0xE1, 0x64, 0x31, 0x64, 0x33, 0x20, 0xF5, 0x0A, 0x20, 0xD6, 0x0D, +0xF0, 0x16, 0xA5, 0x2D, 0xC5, 0x1B, 0xA5, 0x2F, 0xE5, 0x1D, 0x90, 0x0C, 0xA5, 0x2D, 0xC5, 0x1F, +0xA5, 0x2F, 0xE5, 0x21, 0x90, 0x0A, 0x80, 0xE5, 0xA5, 0x0F, 0x85, 0x31, 0xA5, 0x11, 0x85, 0x33, +0x5C, 0x8C, 0x16, 0xE1, 0x22, 0x88, 0x16, 0xE1, 0x64, 0x2D, 0x64, 0x2F, 0x20, 0xF5, 0x0A, 0x20, +0xD6, 0x0D, 0xF0, 0x18, 0x38, 0xA5, 0x1F, 0xE5, 0x1B, 0xAA, 0xA5, 0x21, 0xE5, 0x1D, 0xA8, 0x18, +0x8A, 0x65, 0x2D, 0x85, 0x2D, 0x98, 0x65, 0x2F, 0x85, 0x2F, 0x80, 0xE3, 0x5C, 0x8C, 0x16, 0xE1, +0x22, 0x88, 0x16, 0xE1, 0x64, 0x2D, 0x64, 0x2F, 0x20, 0xF5, 0x0A, 0x20, 0xD6, 0x0D, 0xF0, 0x17, +0x38, 0xA5, 0x1F, 0xE5, 0x1B, 0xAA, 0xA5, 0x21, 0xE5, 0x1D, 0xA8, 0xE4, 0x2D, 0xE5, 0x2F, 0x90, +0xEA, 0x86, 0x2D, 0x84, 0x2F, 0x80, 0xE4, 0x5C, 0x8C, 0x16, 0xE1, 0x22, 0x88, 0x16, 0xE1, 0x64, +0x2D, 0xAD, 0x24, 0x16, 0x1A, 0x1A, 0x85, 0x2F, 0x5C, 0x8C, 0x16, 0xE1, 0x22, 0x88, 0x16, 0xE1, +0x20, 0x9A, 0x0E, 0x5C, 0x8C, 0x16, 0xE1, 0x22, 0x88, 0x16, 0xE1, 0xAD, 0xCB, 0x00, 0x29, 0xFF, +0x00, 0xD0, 0x06, 0x64, 0x07, 0x22, 0xAC, 0x16, 0xE1, 0x5C, 0x8C, 0x16, 0xE1, 0x22, 0x88, 0x16, +0xE1, 0x20, 0x9A, 0x0E, 0xA0, 0x04, 0x00, 0xB7, 0x17, 0x09, 0x00, 0x80, 0x97, 0x17, 0x5C, 0x8C, +0x16, 0xE1, 0x22, 0x88, 0x16, 0xE1, 0x20, 0xA2, 0x08, 0xB0, 0x13, 0x20, 0x2E, 0x0C, 0x90, 0x0E, +0x48, 0xA0, 0x04, 0x00, 0xB7, 0x17, 0x09, 0x00, 0x80, 0x97, 0x17, 0x68, 0x80, 0xED, 0x5C, 0x8C, +0x16, 0xE1, 0xA5, 0x2D, 0x89, 0x00, 0xF0, 0xF0, 0x20, 0x85, 0x09, 0x09, 0x00, 0xF0, 0x89, 0x00, +0x0F, 0xF0, 0x03, 0x09, 0x00, 0x0F, 0x89, 0xFF, 0x00, 0xF0, 0x03, 0x09, 0xFF, 0x00, 0x85, 0x2D, +0xAD, 0x02, 0x16, 0xAA, 0xAD, 0x00, 0x16, 0x18, 0x60, 0xA9, 0x07, 0x02, 0x85, 0x01, 0x38, 0x60, +0x22, 0x88, 0x16, 0xE1, 0x20, 0x9A, 0x0E, 0xA0, 0x04, 0x00, 0xB7, 0x17, 0x29, 0xFF, 0x7F, 0x97, +0x17, 0x5C, 0x8C, 0x16, 0xE1, 0x22, 0x88, 0x16, 0xE1, 0x20, 0xA2, 0x08, 0xB0, 0x13, 0x20, 0x2E, +0x0C, 0x90, 0x0E, 0x48, 0xA0, 0x04, 0x00, 0xB7, 0x17, 0x29, 0xFF, 0x7F, 0x97, 0x17, 0x68, 0x80, +0xED, 0x5C, 0x8C, 0x16, 0xE1, 0x22, 0x88, 0x16, 0xE1, 0x20, 0x9A, 0x0E, 0xA5, 0x31, 0x29, 0x03, +0x00, 0xEB, 0x85, 0x31, 0xA0, 0x04, 0x00, 0xB7, 0x17, 0x29, 0xFF, 0xFC, 0x05, 0x31, 0x97, 0x17, +0x5C, 0x8C, 0x16, 0xE1, 0x22, 0x88, 0x16, 0xE1, 0xA5, 0x2F, 0x29, 0x03, 0x00, 0xEB, 0x85, 0x2F, +0x20, 0xA2, 0x08, 0xB0, 0x15, 0x20, 0x2E, 0x0C, 0x90, 0x10, 0x48, 0xA0, 0x04, 0x00, 0xB7, 0x17, +0x29, 0xFF, 0xFC, 0x05, 0x2F, 0x97, 0x17, 0x68, 0x80, 0xEB, 0x5C, 0x8C, 0x16, 0xE1, 0x22, 0x88, +0x16, 0xE1, 0xA5, 0x31, 0x85, 0x17, 0xA5, 0x33, 0x85, 0x19, 0x20, 0xA2, 0x0E, 0xA5, 0x2D, 0x85, +0x0B, 0xA5, 0x2F, 0x85, 0x0D, 0xA7, 0x31, 0x85, 0x07, 0xA0, 0x02, 0x00, 0xB7, 0x31, 0x85, 0x09, +0x05, 0x07, 0xF0, 0x10, 0xA5, 0x35, 0x85, 0x03, 0xA5, 0x37, 0x85, 0x05, 0x22, 0xA4, 0x16, 0xE1, +0x5C, 0x8C, 0x16, 0xE1, 0xA9, 0x02, 0x02, 0x85, 0x01, 0x80, 0xF5, 0x22, 0x88, 0x16, 0xE1, 0xA5, +0x35, 0x85, 0x17, 0xA5, 0x37, 0x85, 0x19, 0x20, 0xA2, 0x0E, 0xA5, 0x2D, 0x85, 0x0B, 0xA5, 0x2F, +0x85, 0x0D, 0xA5, 0x31, 0x85, 0x07, 0xA5, 0x33, 0x85, 0x09, 0xA7, 0x35, 0x85, 0x03, 0xA0, 0x02, +0x00, 0xB7, 0x35, 0x85, 0x05, 0x05, 0x03, 0xF0, 0x08, 0x22, 0xA4, 0x16, 0xE1, 0x5C, 0x8C, 0x16, +0xE1, 0xA9, 0x02, 0x02, 0x85, 0x01, 0x80, 0xF5, 0x22, 0x88, 0x16, 0xE1, 0xA5, 0x31, 0x85, 0x17, +0xA5, 0x33, 0x85, 0x19, 0x20, 0xA2, 0x0E, 0xA5, 0x35, 0x85, 0x17, 0xA5, 0x37, 0x85, 0x19, 0x20, +0xA2, 0x0E, 0xA5, 0x2D, 0x85, 0x0B, 0xA5, 0x2F, 0x85, 0x0D, 0xA7, 0x31, 0x85, 0x07, 0xA0, 0x02, +0x00, 0xB7, 0x31, 0x85, 0x09, 0x05, 0x07, 0xF0, 0x14, 0xA7, 0x35, 0x85, 0x03, 0xB7, 0x35, 0x85, +0x05, 0x05, 0x03, 0xF0, 0x08, 0x22, 0xA4, 0x16, 0xE1, 0x5C, 0x8C, 0x16, 0xE1, 0xA9, 0x02, 0x02, +0x85, 0x01, 0x80, 0xF5, 0x22, 0x88, 0x16, 0xE1, 0xA5, 0x2D, 0x85, 0x0B, 0xA5, 0x2F, 0x85, 0x0D, +0xA5, 0x31, 0x85, 0x07, 0xA5, 0x33, 0x85, 0x09, 0xA5, 0x35, 0x85, 0x03, 0xA5, 0x37, 0x85, 0x05, +0x22, 0xA4, 0x16, 0xE1, 0x5C, 0x8C, 0x16, 0xE1, 0xA5, 0x07, 0x89, 0x02, 0x00, 0xF0, 0x05, 0x09, +0x01, 0x40, 0x85, 0x07, 0x89, 0x00, 0x40, 0xF0, 0x57, 0x89, 0x00, 0x10, 0xF0, 0x14, 0xA2, 0x14, +0x00, 0x20, 0xF8, 0x0A, 0x20, 0xD6, 0x0D, 0xF0, 0x07, 0x22, 0x94, 0x16, 0xE1, 0x90, 0xF5, 0x6B, +0xA5, 0x07, 0xA2, 0x0C, 0x00, 0x89, 0x01, 0x00, 0xF0, 0x0C, 0xA5, 0x05, 0xF0, 0x17, 0xC9, 0xE0, +0x00, 0x90, 0x03, 0xA2, 0x14, 0x00, 0x20, 0xF8, 0x0A, 0x20, 0xD6, 0x0D, 0xF0, 0x07, 0x22, 0x94, +0x16, 0xE1, 0x90, 0xF5, 0x6B, 0x20, 0xF5, 0x0A, 0x20, 0xD6, 0x0D, 0xA5, 0x1D, 0xD0, 0x07, 0x22, +0x94, 0x16, 0xE1, 0x90, 0xF3, 0x6B, 0x22, 0xA8, 0x16, 0xE1, 0x90, 0x03, 0x4C, 0x38, 0x0A, 0x6B, +0x89, 0x01, 0x00, 0xF0, 0x09, 0xA5, 0x05, 0xF0, 0x30, 0xC9, 0xE0, 0x00, 0xB0, 0x14, 0xA2, 0x14, +0x00, 0x20, 0x03, 0x0B, 0x20, 0xF0, 0x0D, 0xA5, 0x1D, 0xF0, 0x07, 0x22, 0x94, 0x16, 0xE1, 0x90, +0xF3, 0x6B, 0xA2, 0x1C, 0x00, 0x20, 0x03, 0x0B, 0x20, 0xF0, 0x0D, 0xA5, 0x1D, 0xC9, 0xE0, 0x00, +0x90, 0x07, 0x22, 0x94, 0x16, 0xE1, 0x90, 0xF0, 0x6B, 0xA2, 0x0C, 0x00, 0x20, 0x03, 0x0B, 0x20, +0xF0, 0x0D, 0xF0, 0x07, 0x22, 0x94, 0x16, 0xE1, 0x90, 0xF5, 0x6B, 0x22, 0xA8, 0x16, 0xE1, 0x90, +0x03, 0x4C, 0x38, 0x0A, 0x6B, 0xA2, 0x00, 0x00, 0xBD, 0x00, 0x16, 0x85, 0x13, 0xBD, 0x02, 0x16, +0x85, 0x15, 0x60, 0xBD, 0x00, 0x16, 0x85, 0x0F, 0xBD, 0x02, 0x16, 0x85, 0x11, 0x60, 0xA2, 0x1C, +0x00, 0xA5, 0x07, 0x89, 0x01, 0x00, 0xF0, 0x0A, 0xA5, 0x05, 0xF0, 0x07, 0x4A, 0xD0, 0x03, 0xA2, +0x10, 0x00, 0x60, 0xA2, 0x0C, 0x00, 0x60, 0xA5, 0x1B, 0xC5, 0x1F, 0xD0, 0x08, 0xA5, 0x1D, 0xC5, +0x21, 0xD0, 0x02, 0x18, 0x6B, 0xA5, 0x07, 0x4A, 0x90, 0x14, 0xA8, 0xA5, 0x21, 0xC5, 0x05, 0x90, +0x39, 0xA5, 0x05, 0xC5, 0x1D, 0x90, 0x33, 0xF0, 0x04, 0x85, 0x1D, 0x64, 0x1B, 0x98, 0x4A, 0x90, +0x14, 0xA8, 0xA5, 0x1F, 0xC5, 0x03, 0xA5, 0x21, 0xE5, 0x05, 0x90, 0xD7, 0xA5, 0x03, 0xC5, 0x1B, +0x90, 0xD1, 0x85, 0x1B, 0x98, 0x4A, 0x24, 0x07, 0x50, 0x13, 0x90, 0x11, 0xA8, 0xA9, 0xFF, 0x00, +0x14, 0x1B, 0xF0, 0x08, 0xE6, 0x1C, 0xA5, 0x20, 0xC5, 0x1C, 0x90, 0xB7, 0x98, 0x4A, 0x90, 0x1F, +0xA4, 0x21, 0xC0, 0x02, 0x00, 0x90, 0xAC, 0xA2, 0xFF, 0x5F, 0xC0, 0xE0, 0x00, 0x90, 0x10, 0xF0, +0x03, 0xA2, 0xFF, 0x9F, 0xE4, 0x1B, 0x90, 0x07, 0xE4, 0x1F, 0xB0, 0x97, 0xE8, 0x86, 0x1B, 0x4A, +0x24, 0x07, 0x50, 0x3B, 0x90, 0x2A, 0xA5, 0x21, 0xC5, 0x1D, 0xF0, 0x24, 0x48, 0xA5, 0x1F, 0x48, +0x64, 0x1F, 0xA5, 0x1D, 0x1A, 0x85, 0x21, 0x22, 0xD0, 0x0B, 0xFF, 0xB0, 0x10, 0xA5, 0x1F, 0x85, +0x1B, 0xA5, 0x21, 0x85, 0x1D, 0x68, 0x85, 0x1F, 0x68, 0x85, 0x21, 0x80, 0xD9, 0x68, 0x68, 0x6B, +0x38, 0xA5, 0x1F, 0xE5, 0x1B, 0xA8, 0xA5, 0x21, 0xE5, 0x1D, 0xC4, 0x0B, 0xE5, 0x0D, 0x6B, 0x90, +0x29, 0xA5, 0x1D, 0xC5, 0x21, 0xF0, 0x23, 0x48, 0xA5, 0x1B, 0x48, 0x64, 0x1B, 0xA5, 0x21, 0x85, +0x1D, 0x22, 0x0A, 0x0C, 0xFF, 0xB0, 0xD6, 0xA5, 0x1B, 0x85, 0x1F, 0xA5, 0x1D, 0x85, 0x21, 0x3A, +0xC3, 0x03, 0xD0, 0xEB, 0x68, 0x85, 0x1B, 0x68, 0x85, 0x1D, 0x38, 0xA5, 0x1F, 0xE5, 0x0B, 0xAA, +0xA5, 0x07, 0x29, 0x04, 0x00, 0xF0, 0x05, 0x8A, 0x29, 0x00, 0xFF, 0xAA, 0xA5, 0x21, 0xE5, 0x0D, +0x90, 0x0B, 0xA8, 0xE4, 0x1B, 0xE5, 0x1D, 0x90, 0x04, 0x86, 0x1B, 0x84, 0x1D, 0x6B, 0x18, 0x85, +0x17, 0x86, 0x19, 0x05, 0x19, 0xF0, 0x18, 0xA0, 0x06, 0x00, 0xB7, 0x17, 0x25, 0x2D, 0xC5, 0x09, +0xF0, 0x01, 0x18, 0xA0, 0x12, 0x00, 0xB7, 0x17, 0xAA, 0x88, 0x88, 0xB7, 0x17, 0x90, 0xE0, 0x60, +0xA0, 0x10, 0x00, 0xA5, 0x17, 0x97, 0x0F, 0xC8, 0xC8, 0xA5, 0x19, 0x97, 0x0F, 0xA0, 0x0C, 0x00, +0xA5, 0x17, 0x97, 0x13, 0xC8, 0xC8, 0xA5, 0x19, 0x97, 0x13, 0xA5, 0x1B, 0x85, 0x03, 0xA5, 0x1D, +0x85, 0x05, 0xA0, 0x12, 0x00, 0xBB, 0xB5, 0x03, 0x97, 0x17, 0x88, 0x88, 0x10, 0xF7, 0x60, 0xA0, +0x12, 0x00, 0xBB, 0xB7, 0x17, 0x95, 0x03, 0x88, 0x88, 0x10, 0xF7, 0x60, 0x20, 0x7F, 0x0C, 0xA5, +0x03, 0x05, 0x05, 0xD0, 0x11, 0x20, 0xA8, 0x0C, 0x22, 0x90, 0x16, 0xE1, 0x90, 0x05, 0x20, 0x50, +0x0C, 0x18, 0x6B, 0x20, 0xCE, 0x0D, 0x38, 0x6B, 0xA0, 0x0C, 0x00, 0xB7, 0x17, 0x85, 0x0F, 0xC8, +0xC8, 0xB7, 0x17, 0x85, 0x11, 0xA0, 0x10, 0x00, 0xB7, 0x17, 0x85, 0x13, 0xC8, 0xC8, 0xB7, 0x17, +0x85, 0x15, 0xA5, 0x13, 0x05, 0x15, 0xF0, 0x0D, 0xA0, 0x0C, 0x00, 0xA5, 0x0F, 0x97, 0x13, 0xC8, +0xC8, 0xA5, 0x11, 0x97, 0x13, 0xA5, 0x0F, 0x05, 0x11, 0xF0, 0x0E, 0xA0, 0x10, 0x00, 0xA5, 0x13, +0x97, 0x0F, 0xC8, 0xC8, 0xA5, 0x15, 0x97, 0x0F, 0x60, 0xA2, 0x08, 0x00, 0xA5, 0x17, 0xCD, 0x08, +0x16, 0xD0, 0x07, 0xA5, 0x19, 0xCD, 0x0A, 0x16, 0xF0, 0x11, 0xA5, 0x17, 0xCD, 0x04, 0x16, 0xD0, +0x14, 0xA5, 0x19, 0xCD, 0x06, 0x16, 0xD0, 0x0D, 0xA2, 0x04, 0x00, 0xA5, 0x13, 0x9D, 0x00, 0x16, +0xA5, 0x15, 0x9D, 0x02, 0x16, 0x60, 0xAD, 0x08, 0x16, 0x85, 0x17, 0xAD, 0x0A, 0x16, 0x85, 0x19, +0x05, 0x17, 0xD0, 0x0E, 0xA9, 0x32, 0x00, 0x22, 0xA0, 0x16, 0xE1, 0x90, 0x29, 0x20, 0xAE, 0x0D, +0x80, 0xE4, 0xA0, 0x10, 0x00, 0xB7, 0x17, 0x85, 0x0F, 0x8D, 0x08, 0x16, 0xC8, 0xC8, 0xB7, 0x17, +0x8D, 0x0A, 0x16, 0x85, 0x11, 0x05, 0x0F, 0xF0, 0x0C, 0xA9, 0x00, 0x00, 0xA0, 0x0C, 0x00, 0x97, +0x0F, 0xC8, 0xC8, 0x97, 0x0F, 0x38, 0x6B, 0xA0, 0x14, 0x00, 0xA2, 0x08, 0x00, 0xA5, 0x19, 0xF0, +0x4C, 0x5A, 0x88, 0x88, 0xBD, 0x02, 0x16, 0x97, 0x17, 0x85, 0x15, 0x88, 0x88, 0xBD, 0x00, 0x16, +0x97, 0x17, 0x85, 0x13, 0xA5, 0x17, 0x9D, 0x00, 0x16, 0xA5, 0x19, 0x9D, 0x02, 0x16, 0xA9, 0x00, +0x00, 0xA0, 0x0E, 0x00, 0x97, 0x17, 0x88, 0x88, 0x97, 0x17, 0xA0, 0x00, 0x00, 0x97, 0x17, 0xC8, +0xC8, 0x97, 0x17, 0x68, 0xA4, 0x15, 0xF0, 0x15, 0xA0, 0x0C, 0x00, 0x38, 0xE9, 0x14, 0x00, 0x18, +0x65, 0x17, 0x97, 0x13, 0xC8, 0xC8, 0xA5, 0x19, 0x69, 0x00, 0x00, 0x97, 0x13, 0x60, 0xA2, 0x08, +0x00, 0x98, 0x38, 0xE9, 0x14, 0x00, 0xA8, 0xA5, 0x17, 0x18, 0x69, 0x14, 0x00, 0x85, 0x17, 0xA5, +0x19, 0x69, 0x00, 0x00, 0x85, 0x19, 0x4C, 0x5D, 0x0D, 0xA2, 0x04, 0x00, 0x80, 0xE3, 0xA0, 0x14, +0x00, 0xA2, 0x04, 0x00, 0x80, 0x87, 0xE2, 0x10, 0xA5, 0x13, 0x85, 0x0F, 0xA5, 0x15, 0x85, 0x11, +0xA0, 0x10, 0xB7, 0x0F, 0x85, 0x13, 0xA0, 0x12, 0xB7, 0x0F, 0x85, 0x15, 0xF0, 0x36, 0x80, 0x18, +0xE2, 0x10, 0xA5, 0x0F, 0x85, 0x13, 0xA5, 0x11, 0x85, 0x15, 0xA0, 0x0C, 0xB7, 0x13, 0x85, 0x0F, +0xA0, 0x0E, 0xB7, 0x13, 0x85, 0x11, 0xF0, 0x1C, 0xA0, 0x08, 0x18, 0xB7, 0x0F, 0x67, 0x0F, 0x85, +0x1B, 0xA0, 0x0A, 0xB7, 0x0F, 0xA0, 0x02, 0x77, 0x0F, 0x85, 0x1D, 0xB7, 0x13, 0x85, 0x21, 0xA7, +0x13, 0x85, 0x1F, 0xC8, 0xC2, 0x10, 0x60, 0x1A, 0x0A, 0x0A, 0x85, 0x0B, 0x0A, 0x0A, 0x65, 0x0B, +0x85, 0x0B, 0x64, 0x0D, 0xA9, 0x08, 0xD0, 0x85, 0x07, 0x22, 0x90, 0x16, 0xE1, 0x90, 0x5A, 0xA5, +0x1B, 0x85, 0x17, 0xA5, 0x1D, 0x85, 0x19, 0x20, 0x50, 0x0C, 0xA9, 0xFF, 0x00, 0xA0, 0x06, 0x00, +0x97, 0x17, 0xA5, 0x0B, 0x85, 0x1B, 0x64, 0x03, 0x64, 0x05, 0x64, 0x07, 0x64, 0x0B, 0x64, 0x0D, +0xA0, 0x14, 0x00, 0x98, 0x38, 0xE9, 0x14, 0x00, 0x18, 0x65, 0x17, 0x85, 0x0F, 0xA5, 0x19, 0x69, +0x00, 0x00, 0x85, 0x11, 0x98, 0x18, 0x69, 0x14, 0x00, 0x18, 0x65, 0x17, 0x85, 0x13, 0xA5, 0x19, +0x69, 0x00, 0x00, 0x85, 0x15, 0xA2, 0x00, 0x00, 0xB5, 0x03, 0x97, 0x17, 0xC8, 0xC8, 0xE8, 0xE8, +0xE0, 0x14, 0x00, 0x90, 0xF3, 0xC4, 0x1B, 0x90, 0xCA, 0x6B, 0xA5, 0x2D, 0x85, 0x17, 0xA5, 0x2F, +0x85, 0x19, 0xF0, 0x3C, 0xA0, 0x0C, 0x00, 0xB7, 0x17, 0x85, 0x0F, 0xC8, 0xC8, 0xB7, 0x17, 0x85, +0x11, 0x05, 0x0F, 0xF0, 0x12, 0xA0, 0x10, 0x00, 0xB7, 0x0F, 0xC5, 0x17, 0xD0, 0x22, 0xC8, 0xC8, +0xB7, 0x0F, 0xC5, 0x19, 0xD0, 0x1A, 0x60, 0xA2, 0x08, 0x00, 0xA5, 0x17, 0xDF, 0x00, 0x16, 0xE1, +0xD0, 0x08, 0xA5, 0x19, 0xDF, 0x02, 0x16, 0xE1, 0xF0, 0xEC, 0xCA, 0xCA, 0xCA, 0xCA, 0x10, 0xEA, +0xA9, 0x06, 0x02, 0x85, 0x01, 0x68, 0x5C, 0x8C, 0x16, 0xE1, 0xA5, 0x0B, 0xD0, 0x05, 0xC6, 0x0D, +0x10, 0x01, 0x6B, 0xC6, 0x0B, 0xA6, 0x03, 0xE4, 0x07, 0xA5, 0x05, 0xE5, 0x09, 0xB0, 0x6A, 0x8A, +0x65, 0x0B, 0xAA, 0xA5, 0x05, 0x65, 0x0D, 0x29, 0xFF, 0x00, 0x09, 0x00, 0x6B, 0x48, 0xA5, 0x0B, +0x85, 0x13, 0x65, 0x07, 0xA8, 0xA5, 0x0D, 0x65, 0x09, 0xEB, 0x09, 0x44, 0x00, 0x48, 0x80, 0x14, +0x85, 0x0D, 0xA3, 0x02, 0xE0, 0xFF, 0xFF, 0xD0, 0x03, 0xE9, 0x00, 0x01, 0xC0, 0xFF, 0xFF, 0xD0, +0x01, 0x3A, 0x83, 0x02, 0xE4, 0x13, 0xB0, 0x02, 0x86, 0x13, 0xC4, 0x13, 0xB0, 0x02, 0x84, 0x13, +0xA9, 0x0F, 0xFF, 0x48, 0xA9, 0x00, 0x50, 0x48, 0x3B, 0x18, 0x69, 0x04, 0x00, 0x48, 0xA5, 0x13, +0x6B, 0xA5, 0x0B, 0x18, 0xE5, 0x13, 0x85, 0x0B, 0x85, 0x13, 0xA5, 0x0D, 0xE9, 0x00, 0x00, 0x10, +0xBF, 0x68, 0x68, 0xF4, 0xE1, 0xE1, 0xAB, 0xAB, 0x6B, 0xA4, 0x07, 0xA5, 0x05, 0x29, 0xFF, 0x00, +0x09, 0x00, 0x6B, 0x48, 0xA5, 0x09, 0xEB, 0x09, 0x54, 0x00, 0x48, 0xA5, 0x0B, 0x85, 0x13, 0x80, +0x14, 0x85, 0x0D, 0xA3, 0x02, 0xE0, 0x01, 0x00, 0xB0, 0x03, 0x69, 0x00, 0x01, 0xC0, 0x00, 0x00, +0xD0, 0x01, 0x1A, 0x83, 0x02, 0x8A, 0x49, 0xFF, 0xFF, 0xC5, 0x13, 0xB0, 0x02, 0x85, 0x13, 0x98, +0x49, 0xFF, 0xFF, 0xC5, 0x13, 0xB0, 0x02, 0x85, 0x13, 0xA9, 0x0F, 0xFF, 0x48, 0xA9, 0x00, 0xB9, +0x48, 0x3B, 0x18, 0x69, 0x04, 0x00, 0x48, 0xA5, 0x13, 0x6B, 0xA5, 0x0B, 0x18, 0xE5, 0x13, 0x85, +0x0B, 0x85, 0x13, 0xA5, 0x0D, 0xE9, 0x00, 0x00, 0x10, 0xB7, 0x68, 0x68, 0xF4, 0xE1, 0xE1, 0xAB, +0xAB, 0x6B, 0x18, 0xAD, 0xCB, 0x00, 0x29, 0xFF, 0x00, 0xD0, 0x20, 0xE6, 0x23, 0xA5, 0x23, 0xC9, +0x01, 0x00, 0xF0, 0x12, 0x22, 0xB0, 0x16, 0xE1, 0xB0, 0x0C, 0xA5, 0x23, 0x22, 0xB4, 0x16, 0xE1, +0x90, 0x09, 0x22, 0xB0, 0x16, 0xE1, 0x22, 0xAC, 0x16, 0xE1, 0x38, 0x6B, 0x20, 0x0E, 0x0B, 0x0B, +0x3B, 0x38, 0xE9, 0x24, 0x00, 0x1B, 0x5B, 0x20, 0x03, 0x0B, 0xA5, 0x0F, 0x85, 0x13, 0xA5, 0x11, +0x85, 0x15, 0xA0, 0x0E, 0x00, 0xB7, 0x13, 0x85, 0x11, 0x88, 0x88, 0xB7, 0x13, 0x85, 0x0F, 0x05, +0x11, 0xF0, 0x47, 0x88, 0x88, 0xB7, 0x0F, 0xBB, 0x95, 0x03, 0x88, 0x88, 0xC0, 0x04, 0x00, 0xB0, +0xF4, 0x89, 0x00, 0xC0, 0xD0, 0xD4, 0xBB, 0xB7, 0x0F, 0x95, 0x03, 0x95, 0x1B, 0xB7, 0x13, 0x95, +0x1F, 0x88, 0x88, 0x10, 0xF1, 0x22, 0x94, 0x16, 0xE1, 0xA5, 0x1B, 0xC5, 0x03, 0xD0, 0x06, 0xA5, +0x1D, 0xC5, 0x05, 0xF0, 0xB5, 0xA5, 0x1B, 0x87, 0x0F, 0x85, 0x07, 0xA0, 0x02, 0x00, 0xA5, 0x1D, +0x97, 0x0F, 0x85, 0x09, 0x22, 0xA4, 0x16, 0xE1, 0x80, 0xA0, 0x3B, 0x18, 0x69, 0x24, 0x00, 0x1B, +0x2B, 0x6B, 0x18, 0x6B, 0xC9, 0x05, 0x00, 0x90, 0x02, 0x18, 0x6B, 0xA6, 0x0B, 0x86, 0x1F, 0xA6, +0x0D, 0x86, 0x21, 0xC2, 0x10, 0x20, 0x0E, 0x0B, 0xE2, 0x10, 0xBD, 0x00, 0x16, 0x85, 0x1B, 0xBD, +0x02, 0x16, 0x85, 0x1D, 0xA0, 0x0E, 0xB7, 0x1B, 0x85, 0x11, 0xA0, 0x0C, 0xB7, 0x1B, 0x85, 0x0F, +0x20, 0xF8, 0x10, 0x90, 0x48, 0x20, 0x46, 0x11, 0xA5, 0x23, 0xC9, 0x02, 0x00, 0xF0, 0x0E, 0xA5, +0x13, 0x85, 0x1B, 0xA5, 0x15, 0x85, 0x1D, 0xA5, 0x21, 0x10, 0xE5, 0x80, 0x2A, 0xA0, 0x06, 0xB7, +0x1B, 0x29, 0xFF, 0xF0, 0x48, 0xA5, 0x13, 0x85, 0x1B, 0xA5, 0x15, 0x85, 0x1D, 0x20, 0xF8, 0x10, +0x90, 0x10, 0xA0, 0x06, 0xB7, 0x1B, 0x29, 0xFF, 0xF0, 0xC3, 0x01, 0xD0, 0xF0, 0x20, 0x46, 0x11, +0x80, 0xE3, 0x68, 0xA5, 0x1F, 0x10, 0x9C, 0xC6, 0x23, 0xC2, 0x10, 0x38, 0x6B, 0xE6, 0x23, 0xA5, +0x23, 0xC9, 0x05, 0x00, 0x90, 0x8D, 0x80, 0xEF, 0xA6, 0x23, 0xBF, 0x40, 0x11, 0xFF, 0x29, 0x00, +0xFF, 0x48, 0xA5, 0x1B, 0x85, 0x13, 0xA5, 0x1D, 0x85, 0x15, 0xA5, 0x0F, 0x85, 0x1B, 0xA5, 0x11, +0x85, 0x1D, 0xA0, 0x0E, 0xB7, 0x1B, 0x85, 0x11, 0xA0, 0x0C, 0xB7, 0x1B, 0x85, 0x0F, 0x05, 0x11, +0xF0, 0x1E, 0xA5, 0x07, 0x89, 0x08, 0x00, 0xF0, 0x07, 0xA0, 0x02, 0xB7, 0x1B, 0x4A, 0xF0, 0x10, +0xA0, 0x04, 0xB7, 0x1B, 0x30, 0xCC, 0x29, 0x00, 0x03, 0xC3, 0x01, 0x90, 0xC5, 0x38, 0x68, 0x60, +0x18, 0x68, 0x60, 0x03, 0x02, 0x01, 0x8B, 0xA0, 0x10, 0xA5, 0x13, 0x97, 0x0F, 0xAD, 0x04, 0x16, +0x48, 0x97, 0x1B, 0xA0, 0x12, 0xA5, 0x15, 0x97, 0x0F, 0xAD, 0x06, 0x16, 0x97, 0x1B, 0xA8, 0x5A, +0xA0, 0x0E, 0xA5, 0x11, 0x97, 0x13, 0xA0, 0x0C, 0xA5, 0x0F, 0x97, 0x13, 0xA9, 0x00, 0x00, 0x97, +0x1B, 0xA0, 0x0E, 0x97, 0x1B, 0xA0, 0x02, 0x97, 0x1B, 0x87, 0x1B, 0xA5, 0x1D, 0x8D, 0x06, 0x16, +0xA5, 0x1B, 0x8D, 0x04, 0x16, 0xAB, 0xA0, 0x0C, 0x93, 0x01, 0xA5, 0x1D, 0xA0, 0x0E, 0x93, 0x01, +0x68, 0xAB, 0xA0, 0x08, 0xA5, 0x1F, 0x18, 0xF7, 0x1B, 0x85, 0x1F, 0xA0, 0x0A, 0xA5, 0x21, 0xF7, +0x1B, 0x85, 0x21, 0x60, 0xAF, 0x42, 0x16, 0xE1, 0x83, 0x07, 0xAF, 0x44, 0x16, 0xE1, 0x83, 0x09, +0x4C, 0xE9, 0x01, 0x9C, 0x42, 0x16, 0x9C, 0x44, 0x16, 0x9C, 0x46, 0x16, 0x9C, 0x48, 0x16, 0x9C, +0x4A, 0x16, 0xA9, 0x01, 0x00, 0x85, 0x09, 0xE2, 0x30, 0xAD, 0x24, 0x16, 0x3A, 0x3A, 0x0A, 0xCD, +0xF7, 0x02, 0x90, 0x03, 0xAD, 0xF7, 0x02, 0xAA, 0xC2, 0x30, 0x8A, 0x0A, 0xF0, 0x58, 0x48, 0x22, +0xA0, 0x16, 0xE1, 0x90, 0x50, 0x20, 0xC9, 0x0D, 0xA5, 0x17, 0x8D, 0x46, 0x16, 0xA5, 0x19, 0x8D, +0x48, 0x16, 0x68, 0xAA, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x8D, 0x40, 0x16, 0xA0, 0x04, 0x00, 0xA9, +0x08, 0x00, 0x97, 0x17, 0xC8, 0xC8, 0xC8, 0xC8, 0xA9, 0x00, 0x40, 0x97, 0x17, 0xC8, 0xC8, 0xA9, +0x00, 0x00, 0x97, 0x17, 0x98, 0x18, 0x69, 0x0E, 0x00, 0xA8, 0xCA, 0xD0, 0xE2, 0xAD, 0xF6, 0x02, +0x29, 0xFF, 0x00, 0xEB, 0x4A, 0x4A, 0x38, 0xE9, 0x20, 0x00, 0x30, 0x07, 0x48, 0x20, 0x42, 0x12, +0x68, 0x80, 0xF3, 0x18, 0x60, 0x68, 0x38, 0x60, 0xAF, 0x4A, 0x00, 0x00, 0xD0, 0x09, 0xAF, 0x48, +0x00, 0x00, 0xCD, 0x40, 0x16, 0x90, 0x03, 0x4C, 0xA9, 0x12, 0x48, 0x29, 0xE0, 0xFF, 0x4A, 0x48, +0x4A, 0x4A, 0x63, 0x01, 0xFA, 0x6D, 0x46, 0x16, 0x85, 0x17, 0xAD, 0x48, 0x16, 0x69, 0x00, 0x00, +0x85, 0x19, 0xF0, 0x4A, 0xA0, 0x00, 0x00, 0xB7, 0x17, 0x85, 0x03, 0xC8, 0xC8, 0xB7, 0x17, 0x85, +0x05, 0xA5, 0x05, 0xD0, 0x22, 0x22, 0x98, 0x16, 0xE1, 0xB0, 0x33, 0xA5, 0x0B, 0xA8, 0x18, 0x6D, +0x42, 0x16, 0x8D, 0x42, 0x16, 0xAD, 0x44, 0x16, 0x69, 0x00, 0x00, 0x8D, 0x44, 0x16, 0xA9, 0x00, +0x00, 0x88, 0x88, 0x97, 0x03, 0xD0, 0xFA, 0x68, 0x29, 0x1F, 0x00, 0xEB, 0x0A, 0x65, 0x03, 0x85, +0x03, 0xA5, 0x05, 0x69, 0x00, 0x00, 0x85, 0x05, 0x60, 0xA9, 0x2D, 0x00, 0x80, 0x04, 0xA9, 0x27, +0x00, 0x68, 0x85, 0x01, 0x38, 0x60, 0xC9, 0x05, 0x00, 0xF0, 0x6B, 0x2C, 0x4A, 0x16, 0x30, 0x66, +0x48, 0xA9, 0x00, 0x00, 0x20, 0x42, 0x12, 0xB0, 0x5C, 0xAF, 0x00, 0xBF, 0x00, 0xA2, 0x40, 0x00, +0xA0, 0x0E, 0x04, 0x29, 0xFF, 0x00, 0xF0, 0x26, 0xAD, 0x40, 0x16, 0x4A, 0x4A, 0x4A, 0x4A, 0xA8, +0xEB, 0x0A, 0x29, 0x0F, 0x00, 0xAA, 0xBF, 0x57, 0x13, 0xFF, 0xBB, 0xA0, 0x00, 0x0C, 0x97, 0x03, +0xC8, 0xC8, 0xA9, 0xFF, 0xFF, 0xCA, 0xD0, 0xF6, 0xA2, 0x00, 0x00, 0xA0, 0x29, 0x04, 0xAD, 0x40, +0x16, 0x97, 0x03, 0xBF, 0x27, 0x13, 0xFF, 0xE8, 0xE8, 0xC9, 0xFE, 0xFE, 0xD0, 0x0B, 0xBF, 0x27, +0x13, 0xFF, 0xF0, 0x0B, 0xE8, 0xE8, 0xA8, 0x80, 0xEA, 0x97, 0x03, 0xC8, 0xC8, 0x80, 0xE4, 0xA9, +0xFF, 0xFF, 0x8D, 0x4A, 0x16, 0x68, 0x60, 0xFE, 0xFE, 0x02, 0x04, 0x03, 0x00, 0xF4, 0x52, 0x41, +0x4D, 0x35, 0x00, 0xFE, 0xFE, 0x22, 0x04, 0xC3, 0x27, 0x0D, 0x00, 0x00, 0x06, 0xFE, 0xFE, 0x00, +0x06, 0x02, 0x00, 0x04, 0x00, 0xFE, 0xFE, 0x00, 0x08, 0x03, 0x00, 0x05, 0x00, 0xFE, 0xFE, 0x00, +0x0A, 0x04, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x3F, 0x00, +0x1F, 0x00, 0x0F, 0x00, 0x07, 0x00, 0x03, 0xFE, 0xFE, 0x02, 0x04, 0x06, 0x00, 0x00, 0x00, 0x04, +0x52, 0x41, 0x4D, 0x35, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x22, 0x89, 0x01, 0xFF, 0xAF, 0x45, 0x00, +0x00, 0x29, 0xFF, 0x00, 0xC9, 0x0A, 0x00, 0x90, 0x08, 0xE9, 0x40, 0x00, 0xC9, 0x0A, 0x00, 0xB0, +0x29, 0x20, 0xB6, 0x12, 0x0A, 0xAA, 0xFC, 0xA6, 0x13, 0xE2, 0x20, 0xA5, 0x01, 0x8F, 0x50, 0x00, +0x00, 0xC2, 0x20, 0x4C, 0xC4, 0x01, 0xC0, 0x13, 0x2A, 0x14, 0x4E, 0x14, 0xBF, 0x13, 0x6D, 0x14, +0x7C, 0x14, 0xBA, 0x13, 0xBA, 0x13, 0xBA, 0x13, 0xBA, 0x13, 0xA9, 0x01, 0x00, 0x85, 0x01, 0x60, +0xAF, 0x48, 0x00, 0x00, 0x29, 0xFF, 0x00, 0xF0, 0x0B, 0xC9, 0x03, 0x00, 0xF0, 0x06, 0xA9, 0x21, +0x00, 0x85, 0x01, 0x60, 0x48, 0xAF, 0x42, 0x00, 0x00, 0x85, 0x07, 0xAF, 0x44, 0x00, 0x00, 0x29, +0xFF, 0x00, 0x85, 0x09, 0xA0, 0x02, 0x00, 0xAF, 0x45, 0x00, 0x00, 0x29, 0x40, 0x00, 0xF0, 0x01, +0xC8, 0xA9, 0x00, 0x00, 0x97, 0x07, 0xC8, 0xC8, 0xAF, 0x40, 0x16, 0xE1, 0xAA, 0xF0, 0x03, 0xA9, +0xF8, 0x00, 0x09, 0xE8, 0x00, 0x87, 0x07, 0x8A, 0xBB, 0xA0, 0x01, 0x00, 0x97, 0x07, 0x9B, 0x68, +0xF0, 0x12, 0xE2, 0x30, 0xA2, 0x00, 0xBF, 0x93, 0x14, 0xFF, 0x97, 0x07, 0xC8, 0xE8, 0xE0, 0x15, +0x90, 0xF4, 0xC2, 0x30, 0x98, 0x8F, 0x51, 0x00, 0x00, 0x60, 0x20, 0x38, 0x12, 0xB0, 0x1E, 0xAF, +0x42, 0x00, 0x00, 0x85, 0x07, 0xAF, 0x44, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x85, 0x09, 0x64, 0x0D, +0xA9, 0x00, 0x02, 0x85, 0x0B, 0x8F, 0x51, 0x00, 0x00, 0x22, 0xA4, 0x16, 0xE1, 0x60, 0x20, 0x38, +0x12, 0xB0, 0x19, 0xA5, 0x03, 0x85, 0x07, 0xA5, 0x05, 0x85, 0x09, 0xAF, 0x42, 0x00, 0x00, 0x85, +0x03, 0xAF, 0x44, 0x00, 0x00, 0x29, 0xFF, 0x00, 0x85, 0x05, 0x80, 0xD2, 0x60, 0xAF, 0x48, 0x00, +0x00, 0x29, 0xFF, 0x00, 0xF0, 0x05, 0xA9, 0x21, 0x00, 0x85, 0x01, 0x60, 0xA9, 0x00, 0x00, 0x8F, +0x51, 0x00, 0x00, 0xAD, 0x40, 0x16, 0xD0, 0x0A, 0x20, 0xB3, 0x11, 0x90, 0x05, 0xA9, 0x28, 0x00, +0x85, 0x01, 0x60, 0x07, 0x52, 0x41, 0x4D, 0x43, 0x41, 0x52, 0x44, 0x20, 0x20, 0x20, 0x20, 0x20, +0x20, 0x20, 0x20, 0x20, 0x00, 0xC0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xC2, 0x30, 0xF4, 0xFF, 0x00, 0xF4, 0x91, 0x1A, 0xA2, 0x05, 0x0F, 0x22, 0x00, 0x00, 0xE1, 0x6B, +0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xA2, 0x0C, 0x13, 0x22, 0x00, 0x00, 0xE1, +0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, 0xA2, 0x0C, 0x0D, 0x22, 0x00, 0x00, 0xE1, 0xF4, 0xFF, 0x00, +0xF4, 0x80, 0x00, 0xA2, 0x0C, 0x0A, 0x22, 0x00, 0x00, 0xE1, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x00, +0xF4, 0x03, 0x00, 0xA2, 0x0C, 0x10, 0x22, 0x00, 0x00, 0xE1, 0xF4, 0x00, 0x00, 0xA2, 0x0C, 0x15, +0x22, 0x00, 0x00, 0xE1, 0xF4, 0x01, 0x00, 0xA2, 0x0C, 0x15, 0x22, 0x00, 0x00, 0xE1, 0xC2, 0x30, +0xF4, 0xFF, 0x00, 0xF4, 0xE3, 0x19, 0xA2, 0x0C, 0x1A, 0x22, 0x00, 0x00, 0xE1, 0xF4, 0x00, 0x00, +0xF4, 0x00, 0x00, 0xA2, 0x0C, 0x22, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x29, 0x7F, 0x00, 0xC9, 0x61, +0x00, 0x90, 0x03, 0x49, 0x20, 0x00, 0xC9, 0x55, 0x00, 0xF0, 0x20, 0xC9, 0x50, 0x00, 0xF0, 0x20, +0xC9, 0x46, 0x00, 0xF0, 0x20, 0xC9, 0x51, 0x00, 0xD0, 0xD3, 0xC2, 0x30, 0xA2, 0x0C, 0x0A, 0x22, +0x00, 0x00, 0xE1, 0xA2, 0x0C, 0x10, 0x22, 0x00, 0x00, 0xE1, 0x6B, 0xA2, 0x00, 0x00, 0x80, 0x0A, +0xA2, 0x04, 0x00, 0x80, 0x05, 0xA2, 0x08, 0x00, 0x80, 0x00, 0x08, 0x78, 0xBF, 0x00, 0x16, 0xE1, +0x85, 0x82, 0xBF, 0x02, 0x16, 0xE1, 0x85, 0x84, 0x64, 0x80, 0x64, 0x9D, 0x64, 0x9F, 0xF4, 0xFF, +0x00, 0xF4, 0x16, 0x1A, 0xA2, 0x0C, 0x1A, 0x22, 0x00, 0x00, 0xE1, 0xE2, 0x30, 0xA5, 0x82, 0x05, +0x83, 0x05, 0x84, 0xD0, 0x1F, 0xA5, 0x9D, 0x05, 0x9E, 0x05, 0xA0, 0xF0, 0x13, 0xA2, 0x3C, 0xBF, +0x52, 0x1A, 0xFF, 0x95, 0xA1, 0xCA, 0x10, 0xF7, 0xA2, 0x1D, 0x20, 0x9A, 0x19, 0x20, 0xCF, 0x19, +0x28, 0x4C, 0x5E, 0x18, 0x64, 0xA1, 0xA0, 0x13, 0xB7, 0x82, 0xBB, 0x95, 0x85, 0x88, 0x10, 0xF8, +0xC2, 0x20, 0x64, 0x99, 0x64, 0x9B, 0xA5, 0x95, 0x05, 0x97, 0xF0, 0x2F, 0xA0, 0x02, 0xA7, 0x95, +0x17, 0x95, 0xF0, 0x27, 0xA7, 0x95, 0x38, 0xE7, 0x82, 0x85, 0x99, 0xB7, 0x95, 0xF7, 0x82, 0x85, +0x9B, 0xA5, 0x99, 0x38, 0xE5, 0x8D, 0x85, 0x99, 0xA5, 0x9B, 0xE5, 0x8F, 0x85, 0x9B, 0xA5, 0x99, +0x18, 0x65, 0x9D, 0x85, 0x9D, 0xA5, 0x9B, 0x65, 0x9F, 0x85, 0x9F, 0xE6, 0x80, 0xE2, 0x30, 0xA2, +0x00, 0x20, 0xA1, 0x19, 0xA2, 0x02, 0x20, 0x9A, 0x19, 0xA2, 0x05, 0x20, 0x9A, 0x19, 0xA2, 0x09, +0x20, 0xA1, 0x19, 0xA2, 0x0B, 0x20, 0xA1, 0x19, 0xA2, 0x0D, 0x20, 0x93, 0x19, 0xA2, 0x11, 0x20, +0x9A, 0x19, 0xA2, 0x15, 0x20, 0x9A, 0x19, 0xA5, 0x99, 0x05, 0x9A, 0x05, 0x9B, 0xF0, 0x05, 0xA2, +0x19, 0x20, 0x9A, 0x19, 0x20, 0xCF, 0x19, 0xA2, 0x03, 0xB5, 0x95, 0x95, 0x82, 0xCA, 0x10, 0xF9, +0x4C, 0xDD, 0x18, 0xDA, 0xB5, 0x83, 0x20, 0xB1, 0x19, 0xFA, 0xDA, 0xB5, 0x82, 0x20, 0xB1, 0x19, +0xFA, 0xDA, 0xB5, 0x81, 0x20, 0xB1, 0x19, 0xFA, 0xB5, 0x80, 0x20, 0xB1, 0x19, 0x20, 0xCB, 0x19, +0x60, 0x48, 0x4A, 0x4A, 0x4A, 0x4A, 0x20, 0xBC, 0x19, 0x68, 0x29, 0x0F, 0x09, 0xB0, 0xC9, 0xBA, +0x90, 0x02, 0x69, 0x06, 0xA6, 0xA1, 0x95, 0xA2, 0xE6, 0xA1, 0x60, 0xA9, 0xA0, 0x80, 0xF5, 0xC2, +0x30, 0xF4, 0x00, 0x00, 0xF4, 0xA1, 0x00, 0xA2, 0x0C, 0x1A, 0x22, 0x00, 0x00, 0xE1, 0xE2, 0x30, +0x64, 0xA1, 0x60, 0x32, 0xD5, 0xBD, 0xA0, 0xD5, 0xF3, 0xE5, 0xE4, 0xA0, 0xEC, 0xE9, 0xF3, 0xF4, +0xA0, 0xA0, 0xD0, 0xBD, 0xA0, 0xD0, 0xF5, 0xF2, 0xE7, 0xE5, 0xA0, 0xEC, 0xE9, 0xF3, 0xF4, 0xA0, +0xA0, 0xC6, 0xBD, 0xA0, 0xC6, 0xF2, 0xE5, 0xE5, 0xA0, 0xEC, 0xE9, 0xF3, 0xF4, 0xA0, 0xA0, 0xD1, +0xBD, 0xA0, 0xD1, 0xF5, 0xE9, 0xF4, 0x3B, 0x8D, 0x8D, 0xA3, 0xA0, 0xA0, 0xA0, 0xA0, 0xC8, 0xE1, +0xEE, 0xE4, 0xEC, 0xE5, 0xA0, 0xA0, 0xC1, 0xE4, 0xE4, 0xF2, 0xA0, 0xA0, 0xC1, 0xF4, 0xF4, 0xF2, +0xA0, 0xA0, 0xC9, 0xC4, 0xA0, 0xA0, 0xA0, 0xA0, 0xD3, 0xE9, 0xFA, 0xE5, 0xA0, 0xA0, 0xA0, 0xA0, +0xD0, 0xF2, 0xE5, 0xF6, 0xA0, 0xA0, 0xA0, 0xCE, 0xE5, 0xF8, 0xF4, 0xA0, 0xA0, 0xA0, 0xC6, 0xF2, +0xE5, 0xE5, 0x35, 0x8D, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, +0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, +0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xD4, 0xEF, 0xF4, 0xE1, 0xEC, 0xA0, 0xC6, 0xF2, 0xE5, 0xE5, +0xA0, 0xCD, 0xE5, 0xED, 0xEF, 0xF2, 0xF9, 0xA0, 0xBD, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, +0xA0, 0x95, 0x1A, 0xFF, 0x00, 0x0D, 0x4D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x50, 0x65, 0x65, +0x6B, 0x65, 0x72, 0x10, 0x18, 0xFF, 0x00, 0xAA, 0x18, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x4C, 0x7E, 0x1D, 0x4C, 0x22, 0x1E, 0x20, 0x7E, 0x1D, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x27, 0x27, +0xFF, 0x20, 0x69, 0x2A, 0xFF, 0x10, 0x0D, 0x2D, 0xFF, 0x10, 0x48, 0x26, 0xFF, 0x20, 0x68, 0x26, +0xFF, 0x20, 0xC1, 0x28, 0xFF, 0x00, 0x3B, 0x2A, 0xFF, 0x10, 0x60, 0x2C, 0xFF, 0x10, 0x67, 0x2D, +0xFF, 0x10, 0xF1, 0x2D, 0xFF, 0x10, 0xAF, 0x35, 0xFF, 0x0E, 0x17, 0x36, 0xFF, 0x0E, 0x3C, 0x34, +0xFF, 0x0E, 0x9F, 0x37, 0xFF, 0x0E, 0xA0, 0x3B, 0xFF, 0x0E, 0xF2, 0x37, 0xFF, 0x0E, 0xF7, 0x37, +0xFF, 0x0E, 0xAE, 0x1F, 0xFF, 0x20, 0x7E, 0x21, 0xFF, 0x20, 0x75, 0x23, 0xFF, 0x20, 0x97, 0x23, +0xFF, 0x20, 0x5A, 0x24, 0xFF, 0x20, 0x9F, 0x22, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x22, 0x24, +0xFF, 0x20, 0x0B, 0xA9, 0x00, 0x00, 0x5B, 0x8B, 0xF4, 0xE1, 0xE1, 0xAB, 0xAB, 0xE2, 0x20, 0xAD, +0x68, 0xC0, 0x48, 0xAD, 0x83, 0xC0, 0xAD, 0x83, 0xC0, 0xAD, 0x36, 0xC0, 0x48, 0x09, 0x80, 0x8D, +0x36, 0xC0, 0xC2, 0x30, 0x5A, 0xDA, 0xA2, 0x80, 0x00, 0xA9, 0x08, 0x00, 0x20, 0x35, 0x1D, 0xFA, +0x7A, 0x84, 0x82, 0x86, 0x80, 0xA0, 0x01, 0x00, 0xB7, 0x80, 0x29, 0xFF, 0x00, 0x0A, 0x0A, 0xAA, +0xBD, 0x00, 0xD6, 0x85, 0x84, 0xBD, 0x02, 0xD6, 0xAA, 0x29, 0xFF, 0x00, 0x85, 0x86, 0x05, 0x84, +0xF0, 0x5A, 0x8A, 0xEB, 0x29, 0xFF, 0x00, 0x48, 0xA2, 0x88, 0x00, 0x20, 0x35, 0x1D, 0x18, 0xD4, +0x82, 0xD4, 0x80, 0x8B, 0x22, 0x2A, 0x1D, 0xFF, 0xAB, 0xC2, 0x31, 0x68, 0x85, 0x80, 0x68, 0x85, +0x82, 0x68, 0x69, 0x08, 0x00, 0xAA, 0xE2, 0x31, 0xA0, 0x02, 0xA7, 0x80, 0x30, 0x04, 0xB7, 0x80, +0x30, 0xFC, 0xB7, 0x80, 0xF0, 0x02, 0x10, 0x06, 0x18, 0xF4, 0x00, 0x00, 0x80, 0x03, 0xF4, 0x88, +0x88, 0xC2, 0x30, 0x08, 0x8A, 0xA0, 0x80, 0x00, 0x20, 0x5C, 0x1D, 0x28, 0x68, 0xE2, 0x30, 0xFA, +0x8E, 0x36, 0xC0, 0xFA, 0x8E, 0x68, 0xC0, 0xC2, 0x30, 0xAB, 0x2B, 0x60, 0xA0, 0x02, 0x00, 0xA9, +0x01, 0x01, 0x97, 0x80, 0x18, 0xA9, 0x00, 0x00, 0x80, 0xB8, 0xDC, 0x84, 0x00, 0x20, 0x72, 0x1C, +0x6B, 0xE2, 0x41, 0x80, 0x01, 0xB8, 0xC2, 0x31, 0x09, 0x00, 0x00, 0xF0, 0x1A, 0x8B, 0x48, 0x08, +0xAC, 0x04, 0xDA, 0x6D, 0x04, 0xDA, 0x8D, 0x04, 0xDA, 0x28, 0x68, 0x3A, 0x70, 0x05, 0x54, 0xE1, +0x00, 0xAB, 0x60, 0x54, 0xE1, 0xE1, 0xAB, 0x60, 0xE2, 0x40, 0x80, 0x01, 0xB8, 0xC2, 0x31, 0x3A, +0x30, 0xF5, 0x8B, 0x48, 0x08, 0xAD, 0x04, 0xDA, 0xE3, 0x02, 0x28, 0xAA, 0x68, 0xDA, 0x70, 0x05, +0x54, 0x00, 0xE1, 0x80, 0x03, 0x54, 0xE1, 0xE1, 0x68, 0xAB, 0x8D, 0x04, 0xDA, 0x60, 0x08, 0x8B, +0x20, 0xF5, 0x1D, 0xC2, 0x30, 0xA9, 0x74, 0xDC, 0x8D, 0x04, 0xDA, 0xA9, 0x00, 0x00, 0x8D, 0x00, +0xD6, 0xA2, 0x00, 0xD6, 0xA0, 0x01, 0xD6, 0xA9, 0xFE, 0x03, 0x54, 0xE1, 0xE1, 0xA2, 0x0A, 0x1C, +0xA0, 0x00, 0xD6, 0xA9, 0x67, 0x00, 0x54, 0xE1, 0xFF, 0xA2, 0x67, 0x29, 0xA0, 0xD8, 0xDD, 0xA9, +0x62, 0x00, 0x54, 0xE1, 0xFF, 0xA2, 0xD5, 0x1D, 0xA0, 0x00, 0x10, 0xA9, 0x1F, 0x00, 0x54, 0xE1, +0xFF, 0xA9, 0x5C, 0xDF, 0x8F, 0x36, 0x10, 0xE1, 0xA9, 0x33, 0xFF, 0x8F, 0x38, 0x10, 0xE1, 0x20, +0x13, 0x1E, 0xAB, 0x28, 0x60, 0x6B, 0x00, 0x00, 0x00, 0x6B, 0x00, 0x00, 0x00, 0x5C, 0xAB, 0xC7, +0x00, 0x5C, 0x1C, 0x21, 0xFF, 0x5C, 0x32, 0x1E, 0xFF, 0x5C, 0x2D, 0x1D, 0xFF, 0x5C, 0x91, 0x2F, +0xFF, 0x5C, 0x95, 0x2F, 0xFF, 0xE2, 0x30, 0xA9, 0xE1, 0x48, 0xAB, 0xAD, 0x68, 0xC0, 0x2C, 0x83, +0xC0, 0x2C, 0x83, 0xC0, 0x8D, 0x4A, 0xDA, 0xAD, 0x36, 0xC0, 0x8D, 0x4B, 0xDA, 0x09, 0x80, 0x8D, +0x36, 0xC0, 0x60, 0xE2, 0x30, 0xAD, 0x4B, 0xDA, 0x8D, 0x36, 0xC0, 0xAD, 0x4A, 0xDA, 0x8D, 0x68, +0xC0, 0x60, 0x08, 0x8B, 0x20, 0xF5, 0x1D, 0xC2, 0x30, 0x22, 0x10, 0x10, 0xE1, 0x20, 0x13, 0x1E, +0xAB, 0x28, 0x6B, 0xC2, 0x30, 0xA3, 0x05, 0x85, 0x88, 0xA9, 0xE1, 0x00, 0x85, 0x8A, 0xBB, 0xB7, +0x88, 0x85, 0x8C, 0xC8, 0xC8, 0xB7, 0x88, 0x85, 0x8E, 0x9B, 0x8C, 0x44, 0xDA, 0xA5, 0x8C, 0x05, +0x8E, 0xF0, 0x2D, 0xB7, 0x8C, 0x85, 0x90, 0xBB, 0xC8, 0xC8, 0xB7, 0x8C, 0x85, 0x92, 0xDA, 0x9B, +0xF4, 0x67, 0x1E, 0xA3, 0x07, 0x3A, 0x48, 0x60, 0xC2, 0x30, 0x7A, 0xB0, 0x13, 0xA5, 0x8C, 0x85, +0x88, 0xA5, 0x8E, 0x85, 0x8A, 0xA5, 0x90, 0x85, 0x8C, 0xA5, 0x92, 0x85, 0x8E, 0x82, 0xCD, 0xFF, +0xA3, 0x01, 0x83, 0x05, 0x3B, 0x18, 0x69, 0x04, 0x00, 0x1B, 0x60, 0xBB, 0xA5, 0x90, 0x97, 0x88, +0xC8, 0xC8, 0xA5, 0x92, 0x97, 0x88, 0xAC, 0x64, 0xDE, 0xF0, 0x1E, 0xA5, 0x8E, 0xD9, 0x4A, 0xDA, +0xD0, 0x11, 0xA5, 0x8C, 0xD9, 0x48, 0xDA, 0xD0, 0x0A, 0xA5, 0x88, 0x99, 0x48, 0xDA, 0xA5, 0x8A, +0x99, 0x4A, 0xDA, 0x88, 0x88, 0x88, 0x88, 0xD0, 0xE2, 0xA5, 0x88, 0x85, 0x8C, 0xA5, 0x8A, 0x85, +0x8E, 0x9B, 0x60, 0x20, 0x8B, 0x1E, 0x6B, 0xAE, 0x64, 0xDE, 0xE8, 0xE8, 0xE8, 0xE8, 0x8E, 0x64, +0xDE, 0xA5, 0x8C, 0x9D, 0x48, 0xDA, 0xA5, 0x8E, 0x9D, 0x4A, 0xDA, 0x60, 0xAE, 0x64, 0xDE, 0xBD, +0x4A, 0xDA, 0x85, 0x8E, 0xBD, 0x48, 0xDA, 0x85, 0x8C, 0xCA, 0xCA, 0xCA, 0xCA, 0xB7, 0x8C, 0x85, +0x90, 0xC8, 0xC8, 0xB7, 0x8C, 0x85, 0x92, 0x88, 0x88, 0x8E, 0x64, 0xDE, 0x60, 0xFA, 0x68, 0x85, +0x8C, 0x68, 0x85, 0x8E, 0x68, 0x85, 0x88, 0xDA, 0xBB, 0xB1, 0x88, 0x97, 0x8C, 0xC8, 0xC8, 0xB1, +0x88, 0x97, 0x8C, 0xA5, 0x8E, 0x91, 0x88, 0x9B, 0xA5, 0x8C, 0x91, 0x88, 0xAC, 0x64, 0xDE, 0xF0, +0x1F, 0xA5, 0x88, 0xD9, 0x48, 0xDA, 0xD0, 0x12, 0xA9, 0xE1, 0x00, 0xD9, 0x4A, 0xDA, 0xD0, 0x0A, +0xA5, 0x8E, 0x99, 0x4A, 0xDA, 0xA5, 0x8C, 0x99, 0x48, 0xDA, 0x88, 0x88, 0x88, 0x88, 0xD0, 0xE1, +0x60, 0xC2, 0x30, 0xBB, 0x9C, 0x14, 0xDA, 0x9C, 0x16, 0xDA, 0x68, 0x85, 0x9C, 0x68, 0x38, 0xE9, +0x08, 0x00, 0x85, 0x94, 0x4B, 0x4B, 0x68, 0x85, 0x96, 0xF4, 0x6C, 0x1F, 0x20, 0x33, 0x1E, 0xD4, +0x9C, 0xAD, 0x14, 0xDA, 0x60, 0xE2, 0x30, 0xA9, 0x01, 0x8D, 0x16, 0xDA, 0xE2, 0x70, 0xA0, 0x07, +0xC8, 0xB7, 0x94, 0xF0, 0xFB, 0x10, 0x08, 0x1A, 0xF0, 0x20, 0x3A, 0x29, 0x7F, 0xC2, 0x40, 0x5A, +0xA8, 0xB7, 0xA0, 0x70, 0x03, 0xB9, 0x0A, 0xDA, 0x7A, 0xAE, 0x16, 0xDA, 0xF0, 0x04, 0x97, 0x8C, +0x80, 0xDE, 0xD7, 0x8C, 0xF0, 0xDA, 0x18, 0xC2, 0x30, 0x60, 0xAE, 0x16, 0xDA, 0xD0, 0xF8, 0xC2, +0x30, 0xA5, 0x8C, 0x85, 0x80, 0xA5, 0x8E, 0x85, 0x82, 0xEE, 0x14, 0xDA, 0x38, 0x60, 0x20, 0x99, +0x2F, 0xE2, 0x30, 0xA0, 0x19, 0xB7, 0x80, 0xC9, 0x09, 0x90, 0x07, 0xC2, 0x30, 0xA9, 0x0B, 0x05, +0x80, 0x5A, 0xC2, 0x30, 0xA2, 0x1F, 0x20, 0xA0, 0xFF, 0x00, 0xA9, 0x00, 0x00, 0x20, 0xE5, 0x26, +0xD0, 0x4A, 0xE2, 0x30, 0x8A, 0xA0, 0x08, 0x97, 0x80, 0xA0, 0x20, 0xB7, 0x80, 0xA0, 0x28, 0x97, +0x80, 0xA9, 0x00, 0xA0, 0x22, 0x97, 0x80, 0xC2, 0x30, 0xF4, 0x27, 0xDE, 0xD4, 0x82, 0xD4, 0x80, +0xA0, 0x23, 0x00, 0x20, 0xFD, 0x1E, 0xEE, 0x62, 0xDE, 0xAD, 0x62, 0xDE, 0xEB, 0xA0, 0x0D, 0x00, +0x97, 0x80, 0x20, 0x49, 0x21, 0xF0, 0x12, 0xC2, 0x30, 0xC9, 0x05, 0x03, 0xD0, 0x0B, 0xA9, 0x01, +0x05, 0xA0, 0x02, 0x00, 0x97, 0x80, 0x4C, 0xB2, 0x21, 0x4C, 0xD7, 0x20, 0x4C, 0xDC, 0x20, 0xC2, +0x30, 0xF4, 0xE1, 0xE1, 0xAB, 0xAB, 0xA2, 0x80, 0x00, 0xA9, 0x28, 0x00, 0x20, 0x35, 0x1D, 0xA6, +0x80, 0xA0, 0xE1, 0x00, 0x86, 0xA0, 0x84, 0xA2, 0xD4, 0xA1, 0xAB, 0xAB, 0x9C, 0x42, 0xDA, 0x20, +0x8C, 0x27, 0xE2, 0x30, 0xD0, 0x21, 0xAD, 0x0A, 0xDA, 0x29, 0xC0, 0xC9, 0x80, 0xD0, 0x18, 0xF4, +0x27, 0xDE, 0xF4, 0xD7, 0x29, 0xA0, 0x23, 0x20, 0x41, 0x1F, 0xE2, 0x30, 0xF0, 0x09, 0xAD, 0x0B, +0xDA, 0xA0, 0x19, 0xD7, 0x80, 0x90, 0x15, 0xC2, 0x20, 0x38, 0xA9, 0x00, 0x80, 0x20, 0x60, 0x2C, +0xC2, 0x30, 0xA0, 0x80, 0x00, 0xA9, 0x28, 0x00, 0x20, 0x5C, 0x1D, 0x6B, 0xAA, 0xBF, 0x09, 0x2A, +0xFF, 0xA0, 0x21, 0x37, 0x80, 0xF0, 0xE0, 0xC2, 0x30, 0x8A, 0x0A, 0x0A, 0x48, 0x0A, 0x63, 0x01, +0xFA, 0xA0, 0x1A, 0x00, 0x20, 0x9B, 0x27, 0xD0, 0xD7, 0xE2, 0x30, 0xA0, 0x22, 0xB7, 0x80, 0x1A, +0x97, 0x80, 0xA0, 0x21, 0xAE, 0x0B, 0xDA, 0xAD, 0x0A, 0xDA, 0x29, 0x10, 0xF0, 0x08, 0xBF, 0x11, +0x2A, 0xFF, 0x37, 0x80, 0x80, 0x06, 0xBF, 0x09, 0x2A, 0xFF, 0x57, 0x80, 0x97, 0x80, 0x08, 0xAD, +0x0A, 0xDA, 0x29, 0x08, 0xF0, 0x03, 0x20, 0x49, 0x21, 0x28, 0xD0, 0x09, 0xC2, 0x30, 0xAD, 0x42, +0xDA, 0x22, 0xB2, 0x21, 0xFF, 0x80, 0x99, 0xC2, 0x30, 0xA9, 0xFF, 0x05, 0xC2, 0x30, 0xA0, 0x02, +0x00, 0x97, 0x80, 0x20, 0xA9, 0x2F, 0xE2, 0x30, 0x09, 0x00, 0x10, 0x01, 0x6B, 0xE2, 0x30, 0xA7, +0x80, 0x10, 0xF9, 0xA0, 0x02, 0xB7, 0x80, 0x30, 0xF3, 0xA0, 0x04, 0xC2, 0x30, 0xAA, 0xB7, 0x80, +0x85, 0x84, 0xC8, 0xC8, 0xB7, 0x80, 0x85, 0x86, 0x05, 0x84, 0xF0, 0xE0, 0x20, 0xC7, 0x1E, 0xAD, +0x44, 0xDA, 0x48, 0x22, 0x1C, 0x21, 0xFF, 0x7A, 0x20, 0xDC, 0x1E, 0x6B, 0xC2, 0x30, 0x3B, 0xAA, +0xA5, 0x86, 0xF0, 0x0C, 0xDA, 0x8B, 0x22, 0xA1, 0xC7, 0x00, 0xC2, 0x30, 0xAB, 0x68, 0x1B, 0x6B, +0xE0, 0x00, 0x02, 0x90, 0x0B, 0xAF, 0x00, 0x01, 0x01, 0x29, 0xFF, 0x00, 0x09, 0x00, 0x01, 0x1B, +0x38, 0xDA, 0x8B, 0x22, 0xA0, 0xC7, 0x00, 0x80, 0xE1, 0xE2, 0x30, 0xA0, 0x1F, 0xB7, 0x80, 0xA0, +0x27, 0x97, 0x80, 0xA0, 0x1E, 0xB7, 0x80, 0x29, 0x20, 0x09, 0x40, 0xE2, 0x30, 0x8D, 0x0A, 0xDA, +0xA0, 0x21, 0xB7, 0x80, 0x8D, 0x0B, 0xDA, 0xC2, 0x31, 0xA5, 0x80, 0x69, 0x0F, 0x00, 0x85, 0xA4, +0xA5, 0x82, 0x69, 0x00, 0x00, 0x85, 0xA6, 0xA9, 0xFF, 0x00, 0x20, 0x07, 0x28, 0x60, 0xC2, 0x30, +0x20, 0x99, 0x2F, 0xA0, 0x02, 0x00, 0xA9, 0x00, 0x00, 0x97, 0x80, 0xA5, 0x80, 0x85, 0xA0, 0xA5, +0x82, 0x85, 0xA2, 0xF4, 0x27, 0xDE, 0xF4, 0xE9, 0x29, 0xA0, 0x23, 0x00, 0x20, 0x41, 0x1F, 0xF0, +0x0B, 0xA9, 0x07, 0x05, 0x22, 0xB2, 0x21, 0xFF, 0x20, 0xA9, 0x2F, 0x6B, 0xA9, 0x03, 0x05, 0x4C, +0xDC, 0x20, 0xC2, 0x30, 0x48, 0xF4, 0x27, 0xDE, 0xA0, 0x23, 0x00, 0x20, 0xEE, 0x21, 0xF0, 0x23, +0x68, 0x48, 0xC9, 0x01, 0x05, 0xF0, 0x13, 0xA0, 0x1E, 0x00, 0xB7, 0x80, 0x29, 0x20, 0x00, 0xF0, +0x09, 0xA9, 0xC0, 0x00, 0x20, 0x5B, 0x21, 0x80, 0x01, 0x48, 0xE2, 0x30, 0xA0, 0x08, 0xB7, 0x80, +0x20, 0x14, 0x27, 0xC2, 0x30, 0x68, 0xA0, 0x02, 0x00, 0x97, 0x80, 0x4C, 0xED, 0x20, 0xC2, 0x30, +0x9C, 0x14, 0xDA, 0x68, 0x85, 0x94, 0xF4, 0x02, 0x22, 0x20, 0x33, 0x1E, 0xD4, 0x94, 0xAD, 0x14, +0xDA, 0x60, 0xA5, 0x80, 0xC5, 0x8C, 0xD0, 0x0E, 0xA5, 0x82, 0xC5, 0x8E, 0xD0, 0x08, 0x20, 0x8B, +0x1E, 0x38, 0xEE, 0x14, 0xDA, 0x60, 0x18, 0x60, 0xF4, 0x27, 0xDE, 0xF4, 0x65, 0x22, 0xA0, 0x23, +0x00, 0x20, 0x33, 0x1E, 0xF4, 0x52, 0xDE, 0xF4, 0x31, 0x22, 0xA0, 0x00, 0x00, 0x20, 0x33, 0x1E, +0x60, 0xE2, 0x31, 0xA0, 0x0F, 0xB7, 0x8C, 0xED, 0x40, 0xDA, 0xF0, 0x06, 0x90, 0x04, 0x97, 0x8C, +0x18, 0x60, 0xC2, 0x30, 0xA5, 0x8C, 0x85, 0x80, 0xA5, 0x8E, 0x85, 0x82, 0x20, 0x04, 0x25, 0x08, +0xA0, 0x00, 0x00, 0x20, 0x8B, 0x1E, 0x28, 0xF0, 0xE7, 0x20, 0x99, 0x2F, 0xA9, 0x05, 0x05, 0x22, +0xDC, 0x20, 0xFF, 0x80, 0xDB, 0xA5, 0x8C, 0x85, 0x80, 0xA5, 0x8E, 0x85, 0x82, 0xE2, 0x31, 0xA0, +0x27, 0xB7, 0x80, 0xED, 0x40, 0xDA, 0x97, 0x80, 0xF0, 0x02, 0xB0, 0x10, 0xA0, 0x28, 0xB7, 0x80, +0xF0, 0x0C, 0x3A, 0xC9, 0xFE, 0xF0, 0x02, 0x97, 0x80, 0x20, 0x49, 0x21, 0x18, 0x60, 0xC2, 0x30, +0xA0, 0x23, 0x00, 0x20, 0x8B, 0x1E, 0xA9, 0x08, 0x05, 0x22, 0xD9, 0x21, 0xFF, 0x80, 0xED, 0xE2, +0x30, 0x20, 0x99, 0x2F, 0xA0, 0x08, 0xB7, 0x80, 0x20, 0xA9, 0x28, 0xD0, 0x1F, 0xE2, 0x30, 0xA0, +0x15, 0xB7, 0x80, 0x29, 0x20, 0xF0, 0x12, 0x20, 0xD9, 0x22, 0xC2, 0x30, 0xD0, 0x05, 0xA9, 0x03, +0x05, 0x80, 0x09, 0x20, 0xCF, 0x22, 0x4C, 0xD7, 0x20, 0x20, 0xCF, 0x22, 0x4C, 0xDC, 0x20, 0xE2, +0x30, 0xA0, 0x16, 0xB7, 0x80, 0x20, 0x13, 0x23, 0x60, 0xC2, 0x30, 0xA5, 0x80, 0x85, 0xA0, 0xA5, +0x82, 0x85, 0xA2, 0xF4, 0x52, 0xDE, 0xF4, 0xF1, 0x29, 0xA0, 0x00, 0x00, 0x20, 0x41, 0x1F, 0x08, +0xF0, 0x1F, 0xA0, 0x04, 0x00, 0xA5, 0xA0, 0x48, 0x97, 0x80, 0xC8, 0xC8, 0xA5, 0xA2, 0x48, 0x97, +0x80, 0xE2, 0x30, 0xA0, 0x0F, 0xA9, 0x78, 0x97, 0x80, 0xC2, 0x30, 0x68, 0x85, 0x82, 0x68, 0x85, +0x80, 0x28, 0x60, 0xE2, 0x30, 0x48, 0xA0, 0x0F, 0xB7, 0x80, 0xAA, 0x68, 0x3F, 0x11, 0x2A, 0xFF, +0x48, 0xA9, 0x80, 0x8D, 0x0A, 0xDA, 0xA9, 0xFF, 0x8D, 0x0B, 0xDA, 0x68, 0xF0, 0x44, 0xEE, 0x0B, +0xDA, 0x4A, 0x48, 0x90, 0xF6, 0xD0, 0x0C, 0xA0, 0x15, 0xB7, 0x80, 0x29, 0x08, 0x0D, 0x0A, 0xDA, +0x8D, 0x0A, 0xDA, 0xAD, 0x0B, 0xDA, 0xAA, 0x1A, 0xA0, 0x10, 0xD7, 0x80, 0x90, 0x0A, 0xD0, 0xDB, +0xA9, 0x10, 0x0D, 0x0A, 0xDA, 0x8D, 0x0A, 0xDA, 0xA0, 0x15, 0xB7, 0x80, 0x29, 0x20, 0x0D, 0x0A, +0xDA, 0x8D, 0x0A, 0xDA, 0x8A, 0x0A, 0x0A, 0x48, 0x0A, 0x63, 0x01, 0xFA, 0x20, 0x07, 0x28, 0xF0, +0xBA, 0x7A, 0xC2, 0x30, 0x60, 0x20, 0x99, 0x2F, 0xA0, 0x04, 0x00, 0xB7, 0x80, 0xA2, 0x7D, 0x24, +0xA0, 0xFF, 0x00, 0x20, 0xE5, 0x26, 0xD0, 0x0C, 0xE2, 0x30, 0x8A, 0xA0, 0x04, 0x97, 0x80, 0xC2, +0x30, 0xA9, 0x00, 0x00, 0x4C, 0xDC, 0x20, 0x20, 0x99, 0x2F, 0xC2, 0x30, 0xA0, 0x02, 0x00, 0xA9, +0x00, 0x00, 0x97, 0x80, 0xE2, 0x30, 0xA0, 0x04, 0xB7, 0x80, 0x85, 0x98, 0x20, 0x14, 0x27, 0xF0, +0x03, 0x4C, 0xDC, 0x20, 0xF4, 0x39, 0xDE, 0xF4, 0xD0, 0x23, 0xA0, 0x1D, 0x00, 0x20, 0x33, 0x1E, +0xF4, 0x52, 0xDE, 0xF4, 0xF8, 0x23, 0xA0, 0x00, 0x00, 0x20, 0x33, 0x1E, 0x20, 0xA9, 0x2F, 0x6B, +0xE2, 0x30, 0xA0, 0x08, 0xB7, 0x8C, 0xC5, 0x98, 0xF0, 0x02, 0x18, 0x60, 0xC2, 0x30, 0xA5, 0x8C, +0x85, 0x80, 0xA5, 0x8E, 0x85, 0x82, 0xA0, 0x1D, 0x00, 0x20, 0x8B, 0x1E, 0x20, 0x99, 0x2F, 0xA9, +0x09, 0x05, 0x22, 0xDC, 0x20, 0xFF, 0x18, 0x60, 0xE2, 0x30, 0xA0, 0x08, 0xB7, 0x8C, 0xC5, 0x98, +0xF0, 0x02, 0x18, 0x60, 0xC2, 0x30, 0xA5, 0x8C, 0x85, 0x94, 0x85, 0x80, 0xA5, 0x8E, 0x85, 0x96, +0x85, 0x82, 0xA0, 0x00, 0x00, 0x20, 0x8B, 0x1E, 0x20, 0xE5, 0x25, 0x20, 0xC4, 0x25, 0xF0, 0xD6, +0x80, 0xCA, 0xC2, 0x30, 0x20, 0x99, 0x2F, 0xA0, 0x02, 0x00, 0xA9, 0x00, 0x00, 0x97, 0x80, 0xA5, +0x80, 0x85, 0xA0, 0xA5, 0x82, 0x85, 0xA2, 0xF4, 0x52, 0xDE, 0xF4, 0x01, 0x2A, 0xA0, 0x00, 0x00, +0x20, 0x41, 0x1F, 0xF0, 0x0F, 0x20, 0xF9, 0x24, 0xF0, 0x06, 0xA9, 0x0D, 0x05, 0x4C, 0xDC, 0x20, +0x20, 0xA9, 0x2F, 0x6B, 0xA9, 0x03, 0x05, 0x4C, 0xDC, 0x20, 0xE2, 0x30, 0x20, 0x99, 0x2F, 0xA0, +0x08, 0xB7, 0x80, 0x20, 0xA9, 0x28, 0xF0, 0x03, 0x4C, 0xDC, 0x20, 0xC2, 0x30, 0xF4, 0x39, 0xDE, +0xD4, 0x82, 0xD4, 0x80, 0xA0, 0x1D, 0x00, 0x20, 0xFD, 0x1E, 0x4C, 0xD7, 0x20, 0xC2, 0x30, 0xF4, +0xE1, 0xE1, 0xAB, 0xAB, 0xA9, 0x28, 0x00, 0xA2, 0x80, 0x00, 0x20, 0x35, 0x1D, 0xA6, 0x80, 0xA0, +0xE1, 0x00, 0x86, 0xA0, 0x84, 0xA2, 0xD4, 0xA1, 0xAB, 0xAB, 0x9C, 0x42, 0xDA, 0x20, 0x8C, 0x27, +0xE2, 0x30, 0xD0, 0x3D, 0xAD, 0x0A, 0xDA, 0xAA, 0x0A, 0x10, 0x36, 0xB0, 0x40, 0x8A, 0x29, 0x20, +0xF0, 0x6F, 0x20, 0xB3, 0x25, 0xF0, 0x6A, 0xA0, 0x0F, 0xA9, 0x78, 0x97, 0x80, 0x20, 0xC4, 0x25, +0xE2, 0x30, 0xF0, 0x1D, 0xAD, 0x0B, 0xDA, 0xA0, 0x16, 0x37, 0x80, 0x48, 0x20, 0x13, 0x23, 0xE2, +0x30, 0x68, 0xAA, 0xA0, 0x16, 0x57, 0x80, 0x48, 0x8A, 0x97, 0x80, 0x68, 0xF0, 0x03, 0x20, 0xD8, +0x25, 0xC2, 0x20, 0x38, 0xA9, 0x00, 0x80, 0x20, 0x60, 0x2C, 0x4C, 0x70, 0x20, 0x20, 0xB3, 0x25, +0xF0, 0xEF, 0x20, 0xF9, 0x24, 0xF0, 0xEA, 0x80, 0x1A, 0xC2, 0x30, 0xF4, 0x52, 0xDE, 0xA0, 0x00, +0x00, 0x20, 0xEE, 0x21, 0xA5, 0x80, 0x85, 0x94, 0xA5, 0x82, 0x85, 0x96, 0x20, 0xE5, 0x25, 0x20, +0xC4, 0x25, 0x60, 0x20, 0x99, 0x2F, 0xC2, 0x30, 0xAD, 0x42, 0xDA, 0x22, 0xDC, 0x20, 0xFF, 0x80, +0xC0, 0xC2, 0x30, 0xF4, 0x39, 0xDE, 0xF4, 0xE7, 0x29, 0xA0, 0x1D, 0x00, 0x20, 0x41, 0x1F, 0xF0, +0xB0, 0x18, 0xA5, 0x80, 0x69, 0x0F, 0x00, 0x85, 0xA4, 0xA5, 0x82, 0x69, 0x00, 0x00, 0x85, 0xA6, +0x20, 0xAA, 0x27, 0xD0, 0xA5, 0xD4, 0x82, 0xD4, 0x80, 0x20, 0x9C, 0x25, 0xE2, 0x30, 0xF4, 0x39, +0xDE, 0xA0, 0x1D, 0x20, 0xEE, 0x21, 0xE2, 0x30, 0xA0, 0x1C, 0xAD, 0x0B, 0xDA, 0x97, 0x80, 0xA0, +0x1B, 0xAD, 0x0A, 0xDA, 0x97, 0x80, 0x29, 0x20, 0xF0, 0xA9, 0x20, 0x24, 0x26, 0xF0, 0x22, 0xA9, +0x00, 0x00, 0xA0, 0x04, 0x00, 0x97, 0x94, 0xC8, 0xC8, 0x97, 0x94, 0xF4, 0x52, 0xDE, 0xD4, 0x96, +0xD4, 0x94, 0xD4, 0x96, 0xD4, 0x94, 0x20, 0x9C, 0x25, 0xA0, 0x00, 0x00, 0x20, 0xFD, 0x1E, 0x80, +0x82, 0xC2, 0x30, 0xA9, 0x02, 0x01, 0x8D, 0x42, 0xDA, 0x82, 0x77, 0xFF, 0xFA, 0x68, 0x85, 0x8C, +0x68, 0x85, 0x8E, 0xF4, 0xD7, 0x29, 0x68, 0x85, 0x94, 0x4B, 0x4B, 0x68, 0x85, 0x96, 0xDA, 0x20, +0x65, 0x1F, 0x60, 0xC2, 0x30, 0xF4, 0x52, 0xDE, 0xF4, 0xDF, 0x29, 0xA0, 0x00, 0x00, 0x20, 0x41, +0x1F, 0xE2, 0x30, 0x60, 0xC2, 0x30, 0xA0, 0x04, 0x00, 0xB7, 0x80, 0x48, 0xC8, 0xC8, 0xB7, 0x80, +0x85, 0x82, 0x68, 0x85, 0x80, 0x05, 0x82, 0x60, 0xE2, 0x30, 0xA0, 0x1B, 0x97, 0x80, 0xA0, 0x17, +0x22, 0xFB, 0x20, 0xFF, 0x60, 0xC2, 0x30, 0xAD, 0x4E, 0xDE, 0x87, 0x94, 0xA0, 0x02, 0x00, 0xAD, +0x50, 0xDE, 0x97, 0x94, 0xA5, 0x94, 0x8D, 0x4E, 0xDE, 0xA5, 0x96, 0x8D, 0x50, 0xDE, 0x60, 0xC2, +0x30, 0xA9, 0x74, 0xDA, 0x85, 0x94, 0xA9, 0xE1, 0x00, 0x85, 0x96, 0xA2, 0x20, 0x00, 0x20, 0xE5, +0x25, 0x18, 0xA5, 0x94, 0x69, 0x10, 0x00, 0x85, 0x94, 0xA5, 0x96, 0x69, 0x00, 0x00, 0x85, 0x96, +0xCA, 0xD0, 0xEB, 0x60, 0xC2, 0x30, 0xF4, 0x4E, 0xDE, 0xF4, 0x3B, 0x26, 0x64, 0x94, 0x64, 0x96, +0xA0, 0x00, 0x00, 0x20, 0x33, 0x1E, 0xA5, 0x94, 0x05, 0x96, 0x60, 0xA5, 0x8C, 0x85, 0x94, 0xA5, +0x8E, 0x85, 0x96, 0x20, 0x8B, 0x1E, 0x38, 0x60, 0xC2, 0x30, 0x20, 0x99, 0x2F, 0xF4, 0x4E, 0xDE, +0xD4, 0x82, 0xD4, 0x80, 0xA0, 0x0C, 0x00, 0x20, 0xFD, 0x1E, 0xA0, 0x08, 0x00, 0xAD, 0x00, 0xDA, +0x97, 0x80, 0xA9, 0xFF, 0x01, 0x4C, 0xDC, 0x20, 0xC2, 0x30, 0x20, 0x99, 0x2F, 0xF4, 0x4E, 0xDE, +0xA0, 0x0C, 0x00, 0x20, 0xEE, 0x21, 0xF0, 0x06, 0xA9, 0x00, 0x00, 0x4C, 0xDC, 0x20, 0xA9, 0x03, +0x01, 0x80, 0xF8, 0x29, 0xFF, 0x00, 0x8D, 0x40, 0xDA, 0x18, 0x6D, 0x00, 0xDA, 0x8D, 0x00, 0xDA, +0xA9, 0x28, 0x00, 0xA2, 0x80, 0x00, 0x20, 0x35, 0x1D, 0x20, 0x18, 0x22, 0xF4, 0x4E, 0xDE, 0xF4, +0xB2, 0x26, 0xA0, 0x0C, 0x00, 0x20, 0x33, 0x1E, 0xA9, 0x28, 0x00, 0xA0, 0x80, 0x00, 0x20, 0x5C, +0x1D, 0x60, 0x38, 0xA0, 0x0A, 0x00, 0xB7, 0x8C, 0xED, 0x40, 0xDA, 0x97, 0x8C, 0xF0, 0x04, 0x90, +0x02, 0x18, 0x60, 0xA0, 0x08, 0x00, 0xAD, 0x00, 0xDA, 0x97, 0x8C, 0xA5, 0x8C, 0x85, 0x80, 0xA5, +0x8E, 0x85, 0x82, 0xA0, 0x0C, 0x00, 0x20, 0x8B, 0x1E, 0x20, 0x99, 0x2F, 0xA9, 0x00, 0x00, 0x22, +0xDC, 0x20, 0xFF, 0x80, 0xDC, 0x8E, 0x1D, 0xDA, 0x8C, 0x1F, 0xDA, 0xE2, 0x30, 0x8D, 0x1C, 0xDA, +0xA9, 0x0B, 0x8D, 0x19, 0xDA, 0x20, 0xFE, 0x26, 0xF0, 0x03, 0xA9, 0x0C, 0x05, 0x60, 0xC2, 0x30, +0xA2, 0x18, 0xDA, 0xA0, 0xE1, 0x00, 0x20, 0x72, 0x1C, 0xE2, 0x30, 0xAE, 0x1C, 0xDA, 0xC2, 0x30, +0xAD, 0x1A, 0xDA, 0x60, 0xE2, 0x30, 0x8D, 0x1C, 0xDA, 0xA9, 0x0C, 0x8D, 0x19, 0xDA, 0x20, 0xFE, +0x26, 0xF0, 0x03, 0xA9, 0x02, 0x05, 0x60, 0xA9, 0x5C, 0x62, 0x8F, 0x10, 0x10, 0xE1, 0xA9, 0x27, +0xFF, 0x8F, 0x12, 0x10, 0xE1, 0xC2, 0x30, 0xA2, 0xCA, 0x29, 0xA0, 0x3D, 0xDE, 0xA9, 0x0C, 0x00, +0x54, 0xE1, 0xFF, 0xE2, 0x30, 0xA9, 0x00, 0xA0, 0x20, 0x99, 0x49, 0xDE, 0x88, 0xD0, 0xFA, 0xC2, +0x31, 0x22, 0x93, 0x2A, 0xFF, 0xAA, 0xD0, 0x09, 0xEE, 0x68, 0xDE, 0x20, 0x58, 0x3D, 0x20, 0xFF, +0x25, 0x6B, 0xA9, 0x74, 0xDC, 0x8D, 0x04, 0xDA, 0xA2, 0x80, 0x00, 0xA9, 0x28, 0x00, 0x20, 0x35, +0x1D, 0x9C, 0xE1, 0xDD, 0xA9, 0xD8, 0xDD, 0x85, 0x80, 0xA9, 0xE1, 0x00, 0x85, 0x82, 0x22, 0x35, +0x27, 0xFF, 0xA0, 0x80, 0x00, 0xA9, 0x28, 0x00, 0x20, 0x5C, 0x1D, 0x6B, 0xC2, 0x30, 0xA2, 0x3D, +0xDE, 0xA0, 0xE1, 0x00, 0x20, 0x72, 0x1C, 0xAD, 0x3F, 0xDE, 0x60, 0xC2, 0x31, 0x77, 0x80, 0x85, +0xA4, 0xC8, 0xC8, 0xA9, 0x00, 0x00, 0x77, 0x80, 0x85, 0xA6, 0xC2, 0x30, 0x9C, 0x42, 0xDA, 0xA9, +0x00, 0x08, 0x8D, 0x18, 0xDA, 0x8D, 0x21, 0xDA, 0xA0, 0x06, 0x00, 0xAD, 0x0E, 0xDA, 0x97, 0xA4, +0xAD, 0x10, 0xDA, 0xC8, 0xC8, 0x97, 0xA4, 0xA0, 0x02, 0x00, 0xB7, 0xA4, 0x8D, 0x1E, 0xDA, 0xC8, +0xC8, 0xB7, 0xA4, 0x8D, 0x20, 0xDA, 0xA0, 0x00, 0x00, 0xB7, 0xA4, 0x8D, 0x1C, 0xDA, 0x20, 0xFE, +0x26, 0xF0, 0x13, 0xC9, 0x02, 0x02, 0xF0, 0x0E, 0xC9, 0x09, 0x02, 0xD0, 0x15, 0xAD, 0x23, 0xDA, +0x09, 0x00, 0x80, 0x8D, 0x23, 0xDA, 0xAD, 0x23, 0xDA, 0xA0, 0x0A, 0x00, 0x97, 0xA4, 0xAD, 0x42, +0xDA, 0x60, 0x8D, 0x42, 0xDA, 0x80, 0xEF, 0xC2, 0x30, 0xAA, 0xA9, 0x00, 0x0D, 0x8D, 0x18, 0xDA, +0xE2, 0x30, 0xA9, 0x03, 0x8D, 0x22, 0xDA, 0xA0, 0x08, 0xB7, 0x80, 0x8D, 0x21, 0xDA, 0xA0, 0x1E, +0xB7, 0x80, 0x29, 0x01, 0x8D, 0x1C, 0xDA, 0xC2, 0x20, 0xA0, 0x09, 0xB7, 0x80, 0x8D, 0x1D, 0xDA, +0xA0, 0x0B, 0xB7, 0x80, 0x8D, 0x1F, 0xDA, 0xA9, 0x2C, 0xDA, 0x8D, 0x23, 0xDA, 0xA9, 0xE1, 0x00, +0x8D, 0x25, 0xDA, 0x8A, 0xE8, 0xF0, 0x10, 0x18, 0xA0, 0x11, 0x77, 0x80, 0x85, 0xA4, 0xA0, 0x13, +0xA9, 0x00, 0x00, 0x77, 0x80, 0x85, 0xA6, 0xA0, 0x0D, 0xB7, 0x80, 0x8D, 0x0C, 0xDA, 0xA0, 0x06, +0xB7, 0xA4, 0x8D, 0x0E, 0xDA, 0xC8, 0xC8, 0xB7, 0xA4, 0x8D, 0x10, 0xDA, 0xA9, 0x0A, 0xDA, 0x8D, +0x34, 0xDA, 0xA9, 0xE1, 0x00, 0x8D, 0x36, 0xDA, 0xA9, 0x08, 0x00, 0x8D, 0x32, 0xDA, 0xA0, 0x02, +0xB7, 0xA4, 0x8D, 0x3A, 0xDA, 0xC8, 0xC8, 0xB7, 0xA4, 0x8D, 0x3C, 0xDA, 0xA0, 0x00, 0xB7, 0xA4, +0xAE, 0x0A, 0xDA, 0xE0, 0xC0, 0xD0, 0x03, 0xA9, 0x00, 0x00, 0x8D, 0x38, 0xDA, 0xA9, 0xFF, 0xFF, +0x8D, 0x3E, 0xDA, 0x20, 0xFE, 0x26, 0xE2, 0x30, 0x60, 0xC2, 0x30, 0x20, 0x36, 0x36, 0xE0, 0x7D, +0x24, 0xD0, 0x0A, 0x98, 0x29, 0xFF, 0x00, 0xC9, 0xFF, 0x00, 0xD0, 0x01, 0x60, 0xA9, 0x02, 0x05, +0x60, 0x9C, 0x46, 0xDA, 0xA0, 0xE1, 0x00, 0xA2, 0xD8, 0xDD, 0x20, 0x72, 0x1C, 0xA0, 0xE1, 0x00, +0xA2, 0xEE, 0xDD, 0x20, 0x72, 0x1C, 0xAD, 0x05, 0xDE, 0x29, 0xFF, 0x00, 0xF0, 0x77, 0xE2, 0x30, +0xA2, 0x27, 0xA9, 0xA0, 0x9F, 0x80, 0x04, 0x00, 0xCA, 0x10, 0xF9, 0xA9, 0xAE, 0x8D, 0x48, 0xDA, +0xA0, 0x03, 0xB9, 0x74, 0xDD, 0x99, 0x0F, 0xDE, 0x88, 0x10, 0xF7, 0xC2, 0x30, 0xA9, 0x01, 0x00, +0x8D, 0x1B, 0xDE, 0xA9, 0x00, 0x08, 0x8D, 0x31, 0xDE, 0xA9, 0x00, 0x00, 0x8D, 0x33, 0xDE, 0xE2, +0x30, 0xA9, 0x01, 0x8D, 0x27, 0xDE, 0xC2, 0x30, 0xA0, 0xE1, 0x00, 0xA2, 0x06, 0xDE, 0x20, 0x72, +0x1C, 0xB0, 0xAA, 0xE2, 0x30, 0xAD, 0x48, 0xDA, 0xAE, 0x46, 0xDA, 0xE8, 0xE0, 0x29, 0x90, 0x07, +0xA2, 0x01, 0x49, 0x80, 0x8D, 0x48, 0xDA, 0x8E, 0x46, 0xDA, 0x9F, 0x7F, 0x04, 0x00, 0xEE, 0x1C, +0xDE, 0xAD, 0x35, 0xDE, 0xD0, 0x09, 0x18, 0xEE, 0x32, 0xDE, 0xEE, 0x32, 0xDE, 0x80, 0xC0, 0xC2, +0x30, 0x5C, 0x00, 0x08, 0x00, 0xF4, 0x00, 0x00, 0xAB, 0xAB, 0x38, 0xFB, 0xAD, 0x81, 0xC0, 0xA9, +0xC7, 0x85, 0x01, 0x5C, 0xBA, 0xFA, 0x00, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x2A, 0xFF, 0x00, 0x01, 0x1E, 0x00, 0x00, 0x64, 0x00, 0x74, +0xDD, 0xE1, 0x00, 0x01, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x2F, +0xDE, 0xE1, 0x00, 0x00, 0x02, 0x14, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, +0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, +0x0A, 0xDA, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x0C, 0x0E, 0x82, 0x03, 0xFF, 0x0D, +0x09, 0x0A, 0x0C, 0x0E, 0x82, 0x03, 0xFF, 0x0D, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x05, +0xFF, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0xFF, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, +0xFF, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0xFF, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, +0x80, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0x01, 0x3D, 0x0A, 0x41, 0x70, 0x70, +0x6C, 0x65, 0x20, 0x2F, 0x2F, 0x67, 0x73, 0x01, 0x2A, 0x28, 0x29, 0xFF, 0x00, 0xF0, 0x06, 0x09, +0x00, 0x02, 0x80, 0x01, 0x28, 0xA0, 0x02, 0x00, 0x97, 0x80, 0x6B, 0x20, 0x99, 0x2F, 0x08, 0xA0, +0x06, 0x00, 0xB7, 0x80, 0x8D, 0x9C, 0x10, 0xC8, 0xC8, 0xB7, 0x80, 0x8D, 0x9E, 0x10, 0xE2, 0x20, +0xA0, 0x04, 0x00, 0xB7, 0x80, 0x8D, 0x94, 0x10, 0xA0, 0x05, 0x00, 0xB7, 0x80, 0x8D, 0x96, 0x10, +0x20, 0xFC, 0x30, 0x20, 0xA9, 0x2F, 0x4C, 0x29, 0x2A, 0x08, 0xA0, 0x04, 0x00, 0xA9, 0xA8, 0xC7, +0x97, 0x80, 0xA9, 0x00, 0x00, 0xC8, 0xC8, 0x97, 0x80, 0xC8, 0xC8, 0xAD, 0x10, 0xD0, 0x97, 0x80, +0xC8, 0xC8, 0xAD, 0x13, 0xD0, 0x97, 0x80, 0xC8, 0xA9, 0x00, 0x10, 0x97, 0x80, 0xA9, 0x00, 0x00, +0x4C, 0x29, 0x2A, 0x08, 0xE2, 0x20, 0xC2, 0x10, 0xB0, 0x22, 0xA0, 0x04, 0x00, 0xB7, 0x80, 0x10, +0x16, 0xA0, 0x09, 0x00, 0x5A, 0xB7, 0x80, 0x38, 0x20, 0x93, 0x2A, 0x09, 0x00, 0xD0, 0x05, 0xA9, +0x0A, 0x7A, 0x80, 0x05, 0x7A, 0x97, 0x80, 0xA9, 0x00, 0x4C, 0x29, 0x2A, 0x48, 0xAD, 0xE7, 0x02, +0xF0, 0x05, 0x68, 0xA9, 0x00, 0x28, 0x60, 0xA2, 0x38, 0xC0, 0xA0, 0x45, 0xC0, 0xA9, 0x04, 0x48, +0xA9, 0x4A, 0x48, 0xAD, 0xE1, 0x02, 0xF0, 0x0A, 0xE8, 0x88, 0xA9, 0x20, 0x83, 0x02, 0xA9, 0x8A, +0x83, 0x01, 0x8E, 0xA0, 0x10, 0x8C, 0x8D, 0x10, 0x86, 0x88, 0xE8, 0xE8, 0x86, 0x8A, 0x08, 0x78, +0xA9, 0x00, 0x92, 0x88, 0xA9, 0x09, 0x92, 0x88, 0xA3, 0x02, 0x92, 0x88, 0x28, 0x68, 0x08, 0xC2, +0x20, 0x9C, 0x4E, 0x10, 0xA2, 0x4E, 0x10, 0x9B, 0xC8, 0xA9, 0x0E, 0x00, 0x54, 0xE1, 0xE1, 0xCE, +0x5D, 0x10, 0xA9, 0x2E, 0x00, 0x54, 0xE1, 0xE1, 0xE2, 0x34, 0xA2, 0x00, 0xA0, 0x1E, 0xBF, 0xEB, +0x2B, 0xFF, 0x92, 0x88, 0xE8, 0x88, 0xD0, 0xF6, 0x28, 0x20, 0x31, 0x33, 0xA2, 0x63, 0xE2, 0x8E, +0xB1, 0x10, 0xA9, 0xE0, 0x8D, 0xB3, 0x10, 0xA2, 0x00, 0xE0, 0x8E, 0xAD, 0x10, 0x8E, 0xA9, 0x10, +0xC2, 0x20, 0x9E, 0x00, 0x00, 0xA2, 0xA6, 0xFD, 0x8E, 0xAF, 0x10, 0x4B, 0x4B, 0x68, 0x29, 0xFF, +0x00, 0xF4, 0x00, 0x00, 0xF4, 0x04, 0x00, 0xF4, 0x03, 0x23, 0xF4, 0x08, 0x00, 0x48, 0xF4, 0x60, +0x2E, 0xA2, 0x03, 0x10, 0xDA, 0xF4, 0x0E, 0x00, 0x48, 0xF4, 0x1A, 0x2F, 0x22, 0x00, 0x00, 0xE1, +0xFA, 0xD0, 0xF9, 0xE2, 0x20, 0x68, 0x8D, 0x03, 0x01, 0x68, 0xD0, 0x16, 0xC2, 0x30, 0xF4, 0x00, +0x00, 0xF4, 0x80, 0x00, 0xA2, 0x03, 0x0C, 0x22, 0x00, 0x00, 0xE1, 0x68, 0xE2, 0x20, 0x1A, 0xF0, +0x01, 0x3A, 0x9C, 0x52, 0x10, 0xA2, 0x7F, 0x00, 0x1A, 0xD0, 0x0F, 0x20, 0x3D, 0x2C, 0xAD, 0x90, +0x10, 0x09, 0x80, 0xC9, 0xFF, 0xD0, 0x11, 0x3A, 0x80, 0x0E, 0x3A, 0xD0, 0x0B, 0x20, 0x3D, 0x2C, +0xAD, 0x90, 0x10, 0x29, 0x7F, 0xD0, 0x01, 0x1A, 0xDA, 0x48, 0x20, 0x09, 0x2C, 0x68, 0xFA, 0xB0, +0x14, 0x8D, 0x52, 0x10, 0xC2, 0x30, 0x48, 0x48, 0xF4, 0x80, 0x00, 0xA2, 0x03, 0x0B, 0x22, 0x00, +0x00, 0xE1, 0x68, 0x28, 0x60, 0x1A, 0xC9, 0xFF, 0xD0, 0x04, 0xA9, 0x80, 0x80, 0x06, 0xC9, 0x80, +0xD0, 0x02, 0xA9, 0x01, 0xCA, 0xD0, 0xD1, 0xA9, 0xFF, 0x28, 0x60, 0x01, 0x00, 0x0F, 0x00, 0x04, +0x20, 0x03, 0xD0, 0x05, 0xE9, 0xC0, 0x80, 0x05, 0xE1, 0x07, 0x7E, 0x0A, 0xE0, 0x0B, 0xF2, 0x0C, +0x06, 0x0D, 0x00, 0x0E, 0xC1, 0x0E, 0x21, 0x01, 0x08, 0xA2, 0x78, 0x00, 0x09, 0x00, 0x30, 0x03, +0xA2, 0x14, 0x00, 0x8D, 0x94, 0x10, 0x8D, 0x95, 0x10, 0x08, 0x48, 0x78, 0xA9, 0x06, 0x92, 0x88, +0x68, 0x92, 0x88, 0x28, 0xA9, 0x81, 0x8D, 0x96, 0x10, 0x9C, 0x91, 0x10, 0xDA, 0x20, 0xFC, 0x30, +0xFA, 0xAD, 0x91, 0x10, 0xF0, 0x02, 0x38, 0x60, 0xCA, 0xD0, 0xF1, 0x18, 0x60, 0x08, 0xC2, 0x20, +0xAD, 0x8E, 0x10, 0x29, 0x00, 0xFF, 0x48, 0x0A, 0x18, 0x63, 0x01, 0x18, 0x6D, 0x8F, 0x10, 0x83, +0x01, 0xAD, 0x8F, 0x10, 0x0A, 0x0A, 0x18, 0x63, 0x01, 0x1A, 0x8D, 0x8F, 0x10, 0x68, 0x28, 0x60, +0x08, 0xB0, 0x31, 0xA0, 0x06, 0x00, 0xB7, 0x80, 0xAA, 0xC8, 0xC8, 0xB7, 0x80, 0x48, 0xA0, 0x04, +0x00, 0xB7, 0x80, 0x48, 0xA0, 0x0A, 0x00, 0xB7, 0x80, 0x29, 0xFF, 0x00, 0xF0, 0x03, 0xA9, 0x00, +0x80, 0x03, 0x01, 0x7A, 0x7A, 0x38, 0x20, 0x60, 0x2C, 0x48, 0x8A, 0xA0, 0x0B, 0x00, 0x97, 0x80, +0x68, 0x4C, 0x29, 0x2A, 0x20, 0x99, 0x2F, 0xC2, 0x30, 0x48, 0xAD, 0x57, 0x10, 0xD0, 0x08, 0xA9, +0x01, 0x00, 0xFA, 0x28, 0x4C, 0xA9, 0x2F, 0x68, 0xF4, 0x00, 0x00, 0x48, 0x29, 0xFF, 0x7F, 0x48, +0xAD, 0xAB, 0x10, 0xC3, 0x01, 0xB0, 0x09, 0x83, 0x01, 0xA9, 0x02, 0x00, 0x83, 0x05, 0x80, 0x0B, +0xF0, 0x09, 0xA3, 0x03, 0x10, 0x05, 0xA9, 0x09, 0x00, 0x83, 0x05, 0xA9, 0x54, 0x00, 0x85, 0x84, +0x84, 0x85, 0xA9, 0xE1, 0x6B, 0x85, 0x86, 0x9B, 0xAE, 0x57, 0x10, 0xA3, 0x01, 0xF0, 0x07, 0x3A, +0x8B, 0x22, 0x84, 0x00, 0x00, 0xAB, 0xAD, 0xAB, 0x10, 0x38, 0xE3, 0x01, 0x8D, 0xAB, 0x10, 0xAD, +0x57, 0x10, 0x18, 0x63, 0x01, 0x8D, 0x57, 0x10, 0xFA, 0x68, 0x10, 0x0C, 0x9C, 0x57, 0x10, 0xDA, +0xE2, 0x20, 0x20, 0xC8, 0x33, 0xC2, 0x20, 0xFA, 0x68, 0x28, 0x4C, 0xA9, 0x2F, 0x08, 0xA0, 0x04, +0x00, 0xB7, 0x80, 0xAA, 0xC8, 0xC8, 0xB7, 0x80, 0xA8, 0x20, 0x99, 0x2F, 0xAD, 0x57, 0x10, 0x48, +0xAD, 0xAB, 0x10, 0x48, 0xDA, 0xAD, 0xA9, 0x10, 0xAA, 0x18, 0x69, 0x06, 0x00, 0x8D, 0x57, 0x10, +0xBD, 0x02, 0x00, 0x69, 0x03, 0x00, 0x8D, 0xAB, 0x10, 0x5A, 0xA0, 0x08, 0x00, 0x97, 0x80, 0x7A, +0xFA, 0xA9, 0x10, 0x00, 0x38, 0x20, 0x60, 0x2C, 0xC9, 0x02, 0x00, 0xD0, 0x03, 0xA9, 0x00, 0x00, +0x09, 0x00, 0x00, 0xF0, 0x03, 0x09, 0x00, 0x01, 0x7A, 0x8C, 0xAB, 0x10, 0x7A, 0x8C, 0x57, 0x10, +0x28, 0x20, 0xA9, 0x2F, 0x4C, 0x34, 0x2A, 0x08, 0xB0, 0x18, 0xA0, 0x05, 0x00, 0xB7, 0x80, 0xAA, +0xC8, 0xC8, 0xB7, 0x80, 0x48, 0xA0, 0x04, 0x00, 0xB7, 0x80, 0x7A, 0x38, 0x20, 0x67, 0x2D, 0x4C, +0x29, 0x2A, 0xE2, 0x20, 0xDA, 0x5A, 0x20, 0x99, 0x2F, 0xC9, 0xFF, 0xD0, 0x14, 0xAE, 0x59, 0x10, +0xD0, 0x3B, 0xAE, 0x5B, 0x10, 0xD0, 0x36, 0x7A, 0x8C, 0x5B, 0x10, 0xFA, 0x8E, 0x59, 0x10, 0x80, +0x25, 0x20, 0xD3, 0x2D, 0xB0, 0x27, 0xAE, 0xA4, 0x10, 0x10, 0x04, 0xA9, 0x07, 0x80, 0x20, 0x09, +0x00, 0xF0, 0x02, 0x10, 0x04, 0xA9, 0x05, 0x80, 0x16, 0x9D, 0x5D, 0x10, 0xC2, 0x20, 0x68, 0x9D, +0x7D, 0x10, 0x68, 0x9D, 0x6D, 0x10, 0xA9, 0x00, 0xEA, 0x28, 0x4C, 0xA9, 0x2F, 0xA9, 0x06, 0x7A, +0xFA, 0x80, 0xF6, 0xA0, 0xFF, 0xFF, 0xA2, 0x10, 0x00, 0x8C, 0xA4, 0x10, 0xCA, 0xCA, 0x10, 0x02, +0x18, 0x60, 0xDD, 0x5D, 0x10, 0xD0, 0x02, 0x38, 0x60, 0xBC, 0x5C, 0x10, 0x10, 0xEE, 0x9B, 0x80, +0xE8, 0x08, 0xE2, 0x20, 0xA0, 0x04, 0x00, 0xB7, 0x80, 0x20, 0x99, 0x2F, 0xC9, 0xFF, 0xD0, 0x16, +0xAE, 0x59, 0x10, 0xD0, 0x05, 0xAE, 0x5B, 0x10, 0xF0, 0x11, 0xA2, 0x00, 0x00, 0x8E, 0x59, 0x10, +0x8E, 0x5B, 0x10, 0x8A, 0x80, 0x0F, 0x20, 0xD3, 0x2D, 0xB0, 0x04, 0xA9, 0x08, 0x80, 0x06, 0xA9, +0xFF, 0x9D, 0x5D, 0x10, 0x1A, 0x28, 0x20, 0xA9, 0x2F, 0x4C, 0x29, 0x2A, 0x08, 0xC2, 0x30, 0xDA, +0xA2, 0x80, 0x00, 0xA9, 0x10, 0x00, 0x20, 0x35, 0x1D, 0xFA, 0x28, 0x60, 0x08, 0xC2, 0x30, 0xDA, +0xA0, 0x80, 0x00, 0xA9, 0x10, 0x00, 0x20, 0x5C, 0x1D, 0xFA, 0x28, 0x60, 0xAD, 0x68, 0xC0, 0x7A, +0x48, 0x5A, 0xAD, 0x83, 0xC0, 0xAD, 0x83, 0xC0, 0x60, 0x7A, 0x68, 0x8D, 0x68, 0xC0, 0x5A, 0x60, +0xC2, 0x10, 0xAE, 0xA0, 0x10, 0xBD, 0x02, 0x00, 0x8D, 0xA8, 0x10, 0x20, 0x4C, 0x2E, 0x20, 0x2C, +0x2E, 0x86, 0x88, 0xE8, 0xE8, 0x86, 0x8A, 0x9C, 0x54, 0x10, 0xAD, 0xA8, 0x10, 0x30, 0x03, 0x4C, +0x00, 0x2F, 0x38, 0x20, 0x9B, 0x30, 0x90, 0xF7, 0x20, 0x9B, 0x30, 0xB0, 0xF2, 0xAD, 0x54, 0x10, +0x30, 0xED, 0xEE, 0x05, 0x01, 0xF0, 0x03, 0x8D, 0x91, 0x10, 0xAD, 0x52, 0x10, 0xF0, 0xE0, 0xAD, +0xA8, 0x10, 0xC9, 0x84, 0xD0, 0x4C, 0xAE, 0xB1, 0x10, 0x86, 0x8C, 0xAE, 0xB3, 0x10, 0x86, 0x8E, +0xEE, 0x51, 0x10, 0x9C, 0x93, 0x10, 0xAD, 0x05, 0x01, 0xD0, 0x05, 0x20, 0x31, 0x33, 0x80, 0x08, +0xAE, 0x06, 0x01, 0xA9, 0x85, 0x20, 0x10, 0x32, 0xAC, 0xAF, 0x10, 0xF0, 0x0E, 0x20, 0xFB, 0x2F, +0x9C, 0x51, 0x10, 0xAD, 0x93, 0x10, 0xF0, 0x2B, 0x20, 0x43, 0x33, 0xAD, 0x53, 0x10, 0xD0, 0x23, +0xEE, 0x53, 0x10, 0x20, 0x5E, 0x2F, 0x58, 0x22, 0x36, 0x10, 0xE1, 0x78, 0x20, 0x7A, 0x2F, 0xCE, +0x53, 0x10, 0xC9, 0x81, 0xD0, 0x0A, 0xAE, 0x06, 0x01, 0xA9, 0x82, 0x20, 0x10, 0x32, 0x80, 0x03, +0x20, 0x31, 0x33, 0x20, 0x3C, 0x2E, 0x20, 0x59, 0x2E, 0xE2, 0x30, 0xA9, 0x03, 0x8D, 0x39, 0xC0, +0xAD, 0x39, 0xC0, 0x0D, 0x03, 0x01, 0x83, 0x04, 0x18, 0x6B, 0x08, 0x8B, 0xE2, 0x20, 0xC2, 0x10, +0xA9, 0xE1, 0x48, 0xAB, 0x8D, 0x47, 0xC0, 0xEE, 0x55, 0x10, 0xAD, 0x53, 0x10, 0xD0, 0x2B, 0x20, +0x4C, 0x2E, 0x20, 0x5E, 0x2F, 0x20, 0x2C, 0x2E, 0xAD, 0x55, 0x10, 0x9C, 0x55, 0x10, 0xEE, 0x53, +0x10, 0xC2, 0x20, 0x58, 0x20, 0x83, 0x26, 0xE2, 0x20, 0x22, 0x36, 0x10, 0xE1, 0x78, 0xCE, 0x53, +0x10, 0x20, 0x3C, 0x2E, 0x20, 0x7A, 0x2F, 0x20, 0x59, 0x2E, 0xAB, 0x28, 0x18, 0x6B, 0x08, 0xC2, +0x30, 0xA2, 0xC3, 0x00, 0xA9, 0x09, 0x00, 0x20, 0x31, 0x1D, 0xA2, 0x08, 0x01, 0xA9, 0x13, 0x00, +0x20, 0x31, 0x1D, 0xE2, 0x20, 0x9C, 0xCB, 0x00, 0x28, 0x60, 0x08, 0xC2, 0x30, 0xA0, 0x08, 0x01, +0xA9, 0x13, 0x00, 0x20, 0x58, 0x1D, 0xA0, 0xC3, 0x00, 0xA9, 0x09, 0x00, 0x20, 0x58, 0x1D, 0x28, +0x60, 0x20, 0x99, 0x2F, 0x6B, 0x20, 0xA9, 0x2F, 0x6B, 0x48, 0x08, 0xE2, 0x20, 0x8B, 0xA9, 0xE1, +0x48, 0xAB, 0xEE, 0x53, 0x10, 0xAB, 0x28, 0x68, 0x60, 0x48, 0xDA, 0x08, 0xE2, 0x20, 0xC2, 0x10, +0x8B, 0xA9, 0xE1, 0x48, 0xAB, 0x20, 0x4C, 0x2E, 0x08, 0x78, 0xCE, 0x53, 0x10, 0xD0, 0x33, 0xAE, +0xA9, 0x10, 0xBD, 0x01, 0x00, 0xF0, 0x15, 0xEE, 0x53, 0x10, 0x28, 0x08, 0x20, 0x2C, 0x2E, 0x22, +0x36, 0x10, 0xE1, 0x20, 0x3C, 0x2E, 0x78, 0xCE, 0x53, 0x10, 0xD0, 0x16, 0xAD, 0x55, 0x10, 0xF0, +0x11, 0x9C, 0x55, 0x10, 0xEE, 0x53, 0x10, 0x28, 0x08, 0xC2, 0x30, 0x20, 0x83, 0x26, 0x78, 0xCE, +0x53, 0x10, 0x28, 0x20, 0x59, 0x2E, 0xAB, 0x28, 0xFA, 0x68, 0x60, 0x9C, 0x54, 0x10, 0xA0, 0x00, +0x00, 0xA2, 0x64, 0x00, 0x18, 0x08, 0x38, 0x08, 0x08, 0x08, 0xB2, 0x88, 0x29, 0x01, 0xD0, 0x06, +0xCA, 0xD0, 0xF7, 0x4C, 0x7C, 0x30, 0xB2, 0x8A, 0x99, 0xA6, 0x10, 0xC8, 0xA2, 0x07, 0x00, 0xC0, +0x03, 0x00, 0xD0, 0xE6, 0xAD, 0xA8, 0x10, 0x30, 0x37, 0xAD, 0x51, 0x10, 0xF0, 0x51, 0xAC, 0xAF, +0x10, 0xAD, 0xA8, 0x10, 0xC9, 0x02, 0xD0, 0x0C, 0x38, 0x20, 0x9B, 0x30, 0x97, 0x8C, 0xC8, 0x28, +0xB0, 0xF7, 0xDA, 0xDA, 0x64, 0x80, 0x64, 0x81, 0x18, 0x20, 0x9B, 0x30, 0xAD, 0x54, 0x10, 0x30, +0x2E, 0xAD, 0x52, 0x10, 0xF0, 0x29, 0xEE, 0x93, 0x10, 0xA6, 0x80, 0x8E, 0xA2, 0x10, 0x80, 0x1F, +0x38, 0x20, 0x9B, 0x30, 0x90, 0x16, 0x20, 0x9B, 0x30, 0xB0, 0x11, 0xAD, 0x54, 0x10, 0x30, 0x0F, +0xAD, 0xA8, 0x10, 0xC9, 0x85, 0xD0, 0x08, 0x8D, 0x92, 0x10, 0x80, 0x03, 0xCE, 0x54, 0x10, 0xFA, +0xFA, 0xAD, 0x54, 0x10, 0x30, 0x0B, 0xAD, 0xA6, 0x10, 0xCD, 0x95, 0x10, 0xD0, 0x03, 0x8D, 0x91, +0x10, 0x4C, 0x31, 0x33, 0x38, 0x2A, 0x85, 0x80, 0xE2, 0x20, 0x18, 0xB2, 0x88, 0x29, 0x01, 0xD0, +0x10, 0xA2, 0x07, 0x00, 0xB2, 0x88, 0x29, 0x01, 0xD0, 0x07, 0xCA, 0xD0, 0xF7, 0xA9, 0x08, 0x80, +0x2A, 0x92, 0x88, 0xB2, 0x88, 0x29, 0xA0, 0xD0, 0x20, 0xB2, 0x8A, 0x90, 0x02, 0x38, 0x60, 0x97, +0x8C, 0xC8, 0xF0, 0x11, 0xC2, 0x20, 0x29, 0xFF, 0x00, 0x65, 0x80, 0x30, 0xC7, 0x18, 0x2A, 0x85, +0x80, 0xE2, 0x20, 0x80, 0xC6, 0xA9, 0x10, 0x80, 0x02, 0x30, 0x10, 0x09, 0x80, 0xAA, 0xAD, 0x54, +0x10, 0x29, 0x01, 0x18, 0xD0, 0x04, 0x8A, 0x0C, 0x54, 0x10, 0x60, 0xA9, 0x01, 0x92, 0x88, 0xB2, +0x88, 0x29, 0x60, 0xD0, 0xE6, 0xA9, 0x01, 0x8D, 0x54, 0x10, 0x18, 0x60, 0x08, 0xE2, 0x20, 0xAD, +0x96, 0x10, 0xC9, 0x81, 0xF0, 0x2E, 0xC2, 0x20, 0xAE, 0x9C, 0x10, 0x86, 0x8C, 0xAE, 0x9E, 0x10, +0x86, 0x8E, 0xA9, 0x58, 0x02, 0xA0, 0x00, 0x00, 0x48, 0xB7, 0x8C, 0x1A, 0xF0, 0x13, 0x68, 0x38, +0xF7, 0x8C, 0x10, 0x05, 0xA9, 0x03, 0x00, 0x28, 0x60, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0x80, +0xE7, 0x68, 0xE2, 0x20, 0xAE, 0xA0, 0x10, 0x86, 0x88, 0xE8, 0xE8, 0x86, 0x8A, 0xA9, 0x01, 0x0C, +0x41, 0xC0, 0xAD, 0x4E, 0x10, 0x20, 0x5B, 0x32, 0x90, 0x0A, 0xF0, 0x08, 0x2E, 0x50, 0x10, 0x9C, +0x4E, 0x10, 0x80, 0x10, 0xAD, 0x4F, 0x10, 0x20, 0x5B, 0x32, 0xB0, 0x08, 0x4E, 0x50, 0x10, 0xA9, +0xFF, 0x8D, 0x4F, 0x10, 0xAD, 0x50, 0x10, 0x8D, 0x97, 0x10, 0x0E, 0x4F, 0x10, 0x0E, 0x4E, 0x10, +0xA2, 0x20, 0x20, 0x8E, 0x98, 0x10, 0x28, 0x08, 0x20, 0x3D, 0x2C, 0xA0, 0xA0, 0x0F, 0xAE, 0x8D, +0x10, 0xBD, 0x00, 0x00, 0x20, 0x0F, 0x32, 0xBD, 0x00, 0x00, 0xF0, 0x08, 0x88, 0xD0, 0xF2, 0x20, +0x31, 0x33, 0x80, 0xE2, 0xA0, 0x04, 0x00, 0x20, 0x6C, 0x32, 0xB0, 0xDA, 0xAD, 0x90, 0x10, 0x2D, +0x97, 0x10, 0xC2, 0x20, 0x29, 0x0F, 0x00, 0xA8, 0xE2, 0x20, 0xF0, 0x05, 0x20, 0x6C, 0x32, 0xB0, +0x42, 0x78, 0x9C, 0x92, 0x10, 0xAE, 0x94, 0x10, 0xA9, 0x81, 0xCD, 0x96, 0x10, 0xF0, 0x02, 0xA9, +0x84, 0x20, 0x10, 0x32, 0xAD, 0x94, 0x10, 0x1A, 0xF0, 0x37, 0x20, 0xFB, 0x2F, 0xAD, 0x96, 0x10, +0xC9, 0x81, 0xD0, 0x07, 0xAD, 0x91, 0x10, 0xF0, 0x07, 0x28, 0x60, 0xAD, 0x92, 0x10, 0xD0, 0x29, +0xA9, 0x01, 0x0C, 0x4E, 0x10, 0x38, 0x2E, 0x97, 0x10, 0xA9, 0x04, 0xCE, 0x98, 0x10, 0xF0, 0x1E, +0x82, 0x83, 0xFF, 0xA9, 0x01, 0x0C, 0x4F, 0x10, 0xCE, 0x99, 0x10, 0xD0, 0xF3, 0xA9, 0x04, 0x80, +0x0D, 0xA0, 0x01, 0x00, 0x20, 0x6C, 0x32, 0xB0, 0xD7, 0x20, 0x8A, 0x32, 0xA9, 0x00, 0x28, 0x60, +0x48, 0x20, 0x20, 0x32, 0xAD, 0x95, 0x10, 0xAA, 0x20, 0x51, 0x32, 0x68, 0xAA, 0x4C, 0x06, 0x33, +0xA9, 0x03, 0x92, 0x88, 0xA9, 0xD0, 0x92, 0x88, 0xA9, 0x05, 0xA8, 0x92, 0x88, 0xA9, 0xE3, 0x92, +0x88, 0x98, 0x92, 0x88, 0xA9, 0xE1, 0x92, 0x88, 0x98, 0x92, 0x88, 0xA9, 0xEB, 0x92, 0x88, 0xA0, +0x1C, 0x00, 0x88, 0xD0, 0xFD, 0xA9, 0x80, 0x92, 0x88, 0x8A, 0x92, 0x8A, 0xA9, 0xC0, 0x92, 0x88, +0x60, 0xB2, 0x88, 0x29, 0x04, 0xF0, 0xFA, 0x8A, 0x92, 0x8A, 0x60, 0xA2, 0x07, 0x00, 0xA0, 0x00, +0x00, 0x0A, 0x90, 0x01, 0xC8, 0xCA, 0x10, 0xF9, 0xC0, 0x02, 0x00, 0x60, 0x84, 0x92, 0xA0, 0x07, +0x00, 0xAE, 0x8D, 0x10, 0xBD, 0x00, 0x00, 0x20, 0x0F, 0x32, 0xBD, 0x00, 0x00, 0xD0, 0x09, 0x88, +0xD0, 0xF2, 0xC6, 0x92, 0xD0, 0xE8, 0x18, 0x60, 0x38, 0x60, 0xC2, 0x20, 0xAD, 0x9C, 0x10, 0x85, +0x8C, 0xAD, 0x9E, 0x10, 0x85, 0x8E, 0xA7, 0x8C, 0x48, 0xA0, 0x02, 0x00, 0xB7, 0x8C, 0x85, 0x8F, +0xC8, 0xC8, 0xB7, 0x8C, 0x85, 0x91, 0xC8, 0xC8, 0x84, 0x92, 0xE2, 0x20, 0xAD, 0x94, 0x10, 0xAA, +0x20, 0x20, 0x32, 0xAD, 0x95, 0x10, 0xAA, 0x20, 0x51, 0x32, 0xAD, 0x96, 0x10, 0x85, 0x94, 0xA0, +0x00, 0x00, 0xFA, 0xB2, 0x88, 0x29, 0x04, 0xF0, 0xFA, 0xA5, 0x94, 0x92, 0x8A, 0xB7, 0x8F, 0x85, +0x94, 0xC8, 0xCA, 0xD0, 0xEE, 0xC2, 0x21, 0xA4, 0x92, 0xB7, 0x8C, 0xD0, 0x09, 0x98, 0x69, 0x06, +0x00, 0xA8, 0xB7, 0x8C, 0xF0, 0xF7, 0xAA, 0x1A, 0xF0, 0x17, 0xC8, 0xC8, 0xB7, 0x8C, 0x85, 0x8F, +0xC8, 0xC8, 0xE2, 0x20, 0xB7, 0x8C, 0x85, 0x91, 0xC8, 0xC8, 0x84, 0x92, 0xA0, 0x00, 0x00, 0x80, +0xC2, 0xE2, 0x20, 0xA5, 0x94, 0xAA, 0x20, 0x51, 0x32, 0xB2, 0x88, 0x29, 0x40, 0xF0, 0xFA, 0xB2, +0x88, 0x29, 0x04, 0xF0, 0xFA, 0xA2, 0x10, 0x00, 0xCA, 0xD0, 0xFD, 0xA9, 0x05, 0x92, 0x88, 0xA9, +0xE3, 0x92, 0x88, 0xA2, 0x2A, 0x00, 0xCA, 0xD0, 0xFD, 0xA9, 0x05, 0x92, 0x88, 0xA9, 0xE1, 0x92, +0x88, 0x08, 0x78, 0xF4, 0xDD, 0x00, 0xF4, 0x30, 0x23, 0xF4, 0x03, 0xD0, 0x68, 0x92, 0x88, 0xD0, +0xFB, 0x28, 0x60, 0xC2, 0x20, 0xAE, 0xAD, 0x10, 0x88, 0x98, 0x38, 0xED, 0xAF, 0x10, 0x9D, 0x02, +0x00, 0xB7, 0x8C, 0x29, 0xFF, 0x00, 0x48, 0xAD, 0xA2, 0x10, 0x6A, 0x08, 0x2A, 0x28, 0x6A, 0x38, +0xE3, 0x01, 0x9D, 0x04, 0x00, 0x68, 0xAD, 0xA6, 0x10, 0x9D, 0x06, 0x00, 0xE2, 0x20, 0xAD, 0xA8, +0x10, 0x9D, 0x08, 0x00, 0xC2, 0x20, 0x98, 0x18, 0x6D, 0xB1, 0x10, 0x18, 0x69, 0x63, 0x02, 0x8D, +0xB1, 0x10, 0x30, 0x0B, 0xA9, 0x63, 0xE2, 0x8D, 0xB1, 0x10, 0xE2, 0x20, 0xEE, 0x56, 0x10, 0xE2, +0x20, 0xAE, 0xAD, 0x10, 0xAD, 0x56, 0x10, 0xC2, 0x21, 0xF0, 0x13, 0xAC, 0xA9, 0x10, 0xCC, 0xB1, +0x10, 0xB0, 0x0B, 0xA9, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x8D, 0xAF, 0x10, 0x80, 0x17, 0x38, 0xAD, +0xB1, 0x10, 0xE9, 0x63, 0x02, 0x9D, 0x00, 0x00, 0x8D, 0xAD, 0x10, 0xAA, 0x9E, 0x00, 0x00, 0xA9, +0xA6, 0xFD, 0x8D, 0xAF, 0x10, 0xE2, 0x20, 0x60, 0xAE, 0xA9, 0x10, 0xBC, 0x00, 0x00, 0xCC, 0xA9, +0x10, 0xB0, 0x03, 0x9C, 0x56, 0x10, 0x8C, 0xA9, 0x10, 0xAC, 0xAF, 0x10, 0xF0, 0xB1, 0x60, 0x08, +0xAD, 0x53, 0x10, 0xC9, 0x01, 0xD0, 0x0A, 0xC2, 0x20, 0xAE, 0xA9, 0x10, 0xBD, 0x00, 0x00, 0xD0, +0x02, 0x28, 0x6B, 0x86, 0x80, 0xBD, 0x02, 0x00, 0x8D, 0xAB, 0x10, 0x8A, 0x18, 0x69, 0x09, 0x00, +0x8D, 0x57, 0x10, 0xE2, 0x20, 0xBD, 0x08, 0x00, 0x20, 0xD3, 0x2D, 0x90, 0x16, 0xC2, 0x20, 0xBC, +0x7D, 0x10, 0xBD, 0x6D, 0x10, 0x85, 0x84, 0x84, 0x86, 0x22, 0x1C, 0x21, 0xFF, 0xE2, 0x20, 0xC2, +0x10, 0x80, 0xBD, 0xAC, 0x59, 0x10, 0xD0, 0x0A, 0xAC, 0x5B, 0x10, 0xD0, 0x05, 0x20, 0xC8, 0x33, +0x80, 0xAE, 0xC2, 0x20, 0xAD, 0x59, 0x10, 0xAC, 0x5B, 0x10, 0x80, 0xD9, 0xA0, 0x09, 0x00, 0xB7, +0x80, 0x20, 0x36, 0x36, 0xF0, 0x09, 0xA6, 0x80, 0xA4, 0x82, 0x20, 0x58, 0x34, 0x80, 0x03, 0xA9, +0x02, 0x03, 0xA0, 0x02, 0x00, 0x97, 0x80, 0x6B, 0x86, 0x88, 0x84, 0x8A, 0x20, 0x99, 0x2F, 0xE2, +0x10, 0xA0, 0x0B, 0xB7, 0x88, 0x85, 0x84, 0x8D, 0x29, 0xD0, 0xA0, 0x0D, 0xB7, 0x88, 0x85, 0x86, +0x8D, 0x2B, 0xD0, 0xA0, 0x05, 0xB7, 0x88, 0xF0, 0x05, 0xCD, 0x10, 0xD0, 0xD0, 0x30, 0xA9, 0x05, +0x00, 0x87, 0x84, 0xEB, 0x8D, 0x16, 0xD0, 0xE2, 0x30, 0xA0, 0x07, 0xB7, 0x88, 0x8D, 0x27, 0xD0, +0xC8, 0xB7, 0x88, 0x8D, 0x18, 0xD0, 0xA0, 0x09, 0xB7, 0x88, 0x8D, 0x19, 0xD0, 0xC8, 0xB7, 0x88, +0x8D, 0x1A, 0xD0, 0xA2, 0x01, 0x8E, 0x28, 0xD0, 0x64, 0x8B, 0xC2, 0x20, 0x80, 0x74, 0xA9, 0x0D, +0x00, 0x87, 0x84, 0xEB, 0x8D, 0x16, 0xD0, 0xA0, 0x05, 0xB7, 0x88, 0x8D, 0x1A, 0xD0, 0xAD, 0x10, +0xD0, 0x8D, 0x1C, 0xD0, 0xE2, 0x30, 0xA0, 0x07, 0xB7, 0x88, 0x8D, 0x1E, 0xD0, 0xC8, 0xB7, 0x88, +0x8D, 0x20, 0xD0, 0xAD, 0x12, 0xD0, 0x8D, 0x1F, 0xD0, 0xA0, 0x09, 0xB7, 0x88, 0x8D, 0x21, 0xD0, +0xC8, 0xB7, 0x88, 0x8D, 0x22, 0xD0, 0xC2, 0x20, 0xA2, 0x02, 0x8E, 0x28, 0xD0, 0x9C, 0x18, 0xD0, +0xA0, 0x04, 0xB7, 0x88, 0xAA, 0x86, 0x8B, 0xF0, 0x11, 0xA9, 0x1A, 0xD0, 0x85, 0x88, 0xA2, 0xE1, +0x86, 0x8A, 0x64, 0x8C, 0xA9, 0x09, 0x00, 0x20, 0x90, 0x35, 0xAD, 0x10, 0xD0, 0xF0, 0x0D, 0xAE, +0x13, 0xD0, 0xD0, 0x0B, 0xC2, 0x30, 0xA9, 0x06, 0x03, 0x4C, 0x8C, 0x35, 0xAE, 0x1E, 0xD0, 0x8E, +0x27, 0xD0, 0xA0, 0x02, 0xA9, 0x16, 0xD0, 0x97, 0x84, 0xA0, 0x04, 0xA9, 0xE1, 0x00, 0x97, 0x84, +0x18, 0xA9, 0x06, 0x00, 0x65, 0x84, 0x85, 0x84, 0xA7, 0x84, 0x30, 0x2F, 0x18, 0xAD, 0x16, 0xD0, +0xEB, 0x67, 0x84, 0xC9, 0x4B, 0x02, 0x90, 0x07, 0xC2, 0x30, 0xA9, 0x05, 0x03, 0x80, 0x3D, 0xEB, +0x8D, 0x16, 0xD0, 0xA6, 0x8B, 0xF0, 0xD9, 0xA0, 0x02, 0xB7, 0x84, 0x85, 0x88, 0xA0, 0x04, 0xB7, +0x84, 0xAA, 0x86, 0x8A, 0xA7, 0x84, 0x20, 0x90, 0x35, 0x80, 0xC5, 0xA6, 0x8B, 0xF0, 0x09, 0xA5, +0x8C, 0xD0, 0x01, 0x3A, 0xEB, 0x8D, 0x18, 0xD0, 0xC2, 0x30, 0xA9, 0x00, 0x07, 0x8D, 0x23, 0xD0, +0xA2, 0x23, 0xD0, 0xA0, 0xE1, 0x00, 0x20, 0x72, 0x1C, 0xAD, 0x25, 0xD0, 0x20, 0xA9, 0x2F, 0x60, +0xC2, 0x30, 0xA0, 0x00, 0x00, 0xAA, 0xE8, 0xCA, 0xF0, 0x12, 0xB7, 0x88, 0x29, 0xFF, 0x00, 0x18, +0x65, 0x8C, 0x18, 0x10, 0x01, 0x38, 0x2A, 0x85, 0x8C, 0xC8, 0x80, 0xEB, 0xE2, 0x10, 0x60, 0xE2, +0x30, 0xA0, 0x04, 0xB7, 0x80, 0xC2, 0x30, 0x30, 0x50, 0xD0, 0x29, 0xAE, 0x31, 0xD0, 0xE8, 0xE8, +0xE8, 0xE8, 0xE0, 0xFC, 0x01, 0x90, 0x03, 0xA2, 0x00, 0x00, 0xEC, 0x31, 0xD0, 0xF0, 0x3F, 0x3C, +0x35, 0xD2, 0x30, 0xEA, 0x8E, 0x31, 0xD0, 0x8A, 0x4A, 0x4A, 0xE2, 0x30, 0x69, 0x80, 0xA0, 0x04, +0x97, 0x80, 0xC2, 0x30, 0x29, 0xFF, 0x00, 0x0A, 0x0A, 0xAA, 0xA9, 0x03, 0x03, 0x3C, 0x35, 0xD0, +0x30, 0x1F, 0xA0, 0x05, 0x00, 0xB7, 0x80, 0x9D, 0x33, 0xD0, 0xC8, 0xC8, 0xB7, 0x80, 0x09, 0x00, +0x80, 0x9D, 0x35, 0xD0, 0xA9, 0x00, 0x00, 0x80, 0x08, 0xA9, 0x04, 0x03, 0x80, 0x03, 0xA9, 0x01, +0x03, 0xA0, 0x02, 0x00, 0x97, 0x80, 0x6B, 0xA0, 0x04, 0x00, 0xB7, 0x80, 0x29, 0xFF, 0x00, 0x0A, +0x0A, 0xAA, 0xA9, 0x02, 0x03, 0x3C, 0x35, 0xD0, 0x10, 0x06, 0x9E, 0x35, 0xD0, 0xA9, 0x00, 0x00, +0xA0, 0x02, 0x00, 0x97, 0x80, 0x6B, 0x29, 0xFF, 0x00, 0x0A, 0x0A, 0xAA, 0x3C, 0x35, 0xD0, 0x10, +0x0A, 0xBC, 0x35, 0xD0, 0xBD, 0x33, 0xD0, 0xAA, 0xC2, 0x02, 0x60, 0xA2, 0x00, 0x00, 0x9B, 0x60, +0xA0, 0xE1, 0x00, 0x38, 0x20, 0x60, 0x2C, 0x18, 0xA8, 0xF0, 0x04, 0x20, 0x60, 0x36, 0x38, 0x60, +0x38, 0xA9, 0x00, 0x80, 0x4C, 0x60, 0x2C, 0x20, 0x15, 0x37, 0xF0, 0x03, 0x4C, 0x11, 0x37, 0x18, +0xA9, 0x0E, 0x00, 0x65, 0x80, 0x8D, 0x14, 0xD0, 0xA9, 0x05, 0x00, 0xA2, 0x03, 0xD0, 0x20, 0x50, +0x36, 0x90, 0x01, 0x6B, 0xE2, 0x10, 0xA2, 0x01, 0x8E, 0x02, 0xD0, 0xAD, 0x05, 0xD0, 0x8D, 0x0D, +0xD0, 0xAE, 0x07, 0xD0, 0x8E, 0x0F, 0xD0, 0xAE, 0x00, 0xD0, 0x8E, 0x0B, 0xD0, 0xAE, 0x01, 0xD0, +0x8E, 0x0C, 0xD0, 0x9C, 0x09, 0xD0, 0x80, 0x45, 0x20, 0x15, 0x37, 0xD0, 0x64, 0xA0, 0x0B, 0x00, +0xB1, 0x80, 0xF0, 0x08, 0xEB, 0xA0, 0x04, 0x00, 0xD1, 0x80, 0xD0, 0x55, 0x18, 0xA9, 0x16, 0x00, +0x65, 0x80, 0x8D, 0x14, 0xD0, 0xA9, 0x0D, 0x00, 0xA2, 0x03, 0xD0, 0x20, 0x50, 0x36, 0xB0, 0x3E, +0xE2, 0x10, 0xA2, 0x02, 0x8E, 0x02, 0xD0, 0xAD, 0x07, 0xD0, 0xF0, 0x05, 0xCD, 0x10, 0xD0, 0xD0, +0x2E, 0xAE, 0x0B, 0xD0, 0xEC, 0x12, 0xD0, 0xF0, 0x04, 0xE0, 0xFF, 0xD0, 0x22, 0xAE, 0x0D, 0xD0, +0xF0, 0x1D, 0x8A, 0xC2, 0x30, 0x20, 0x36, 0x36, 0xF0, 0x17, 0x86, 0x84, 0x98, 0x29, 0xFF, 0x00, +0x85, 0x86, 0x05, 0x84, 0xF0, 0x0B, 0xA9, 0x00, 0xD0, 0x85, 0x80, 0x4C, 0x1C, 0x21, 0x6B, 0xC2, +0x30, 0x20, 0x60, 0x36, 0x6B, 0xF4, 0xE1, 0xE1, 0xAB, 0xAB, 0xA0, 0x06, 0x00, 0xB1, 0x80, 0x8D, +0x00, 0xD0, 0xA0, 0x09, 0x00, 0xB1, 0x80, 0xEB, 0x29, 0xFF, 0x03, 0xA0, 0x02, 0x00, 0xD1, 0x80, +0x60, 0xF4, 0xE1, 0xE1, 0xAB, 0xAB, 0xAD, 0x0F, 0xD0, 0x29, 0xFF, 0x00, 0xC9, 0x01, 0x00, 0xD0, +0x4A, 0xA9, 0x04, 0x00, 0xA2, 0x2D, 0xD0, 0x20, 0x50, 0x36, 0xB0, 0x42, 0xE2, 0x30, 0xAD, 0x2F, +0xD0, 0xC9, 0x08, 0xD0, 0x34, 0xAD, 0x30, 0xD0, 0x8D, 0x13, 0xD0, 0xC2, 0x30, 0xAD, 0x2D, 0xD0, +0x8D, 0x10, 0xD0, 0xA9, 0x69, 0x01, 0x8D, 0x3D, 0xD4, 0xAD, 0x33, 0xD4, 0xD0, 0x1D, 0xA9, 0x80, +0x04, 0x8D, 0x33, 0xD4, 0xA9, 0x8F, 0x37, 0x8D, 0x37, 0xD4, 0xA9, 0xFF, 0x00, 0x8D, 0x39, 0xD4, +0xA2, 0x33, 0xD4, 0xA0, 0xE1, 0x00, 0x20, 0x72, 0x1C, 0xC2, 0x30, 0x20, 0x60, 0x36, 0x6B, 0xF4, +0xE1, 0xE1, 0xAB, 0xAB, 0xE2, 0x30, 0x9C, 0x13, 0xD0, 0xC2, 0x30, 0x9C, 0x33, 0xD4, 0x6B, 0xA0, +0x08, 0x00, 0xB7, 0x80, 0x18, 0x69, 0x09, 0x00, 0x85, 0x88, 0xA0, 0x0A, 0x00, 0xB7, 0x80, 0x85, +0x8A, 0xE2, 0x30, 0xA0, 0x00, 0xA2, 0x02, 0x20, 0xAA, 0x3A, 0xA8, 0xC2, 0x30, 0xB7, 0x88, 0xC9, +0x01, 0x2A, 0xF0, 0x05, 0xA9, 0x06, 0x04, 0x80, 0x21, 0xE2, 0x30, 0xA0, 0x11, 0xB7, 0x80, 0xC2, +0x30, 0xF0, 0x08, 0x20, 0xB3, 0x3A, 0xA9, 0x00, 0x00, 0x80, 0x0F, 0x20, 0x32, 0x3B, 0xF0, 0x22, +0xA9, 0x02, 0x04, 0x80, 0x05, 0xC2, 0x30, 0xA9, 0x08, 0x04, 0xA0, 0x02, 0x00, 0x97, 0x80, 0x4C, +0x91, 0x38, 0xA0, 0x17, 0x00, 0x80, 0x03, 0xA0, 0x14, 0x00, 0xE2, 0x30, 0xA9, 0x00, 0x97, 0x80, +0xC2, 0x30, 0xAD, 0x56, 0xD4, 0xD0, 0xDE, 0x20, 0x99, 0x2F, 0xA9, 0xFF, 0x04, 0xA0, 0x02, 0x00, +0x97, 0x80, 0xE2, 0x30, 0xEE, 0x4F, 0xD4, 0xA0, 0x0D, 0xB7, 0x80, 0xA0, 0x0F, 0x97, 0x80, 0x20, +0xA6, 0x38, 0xC2, 0x30, 0xA5, 0x80, 0x8D, 0x55, 0xD4, 0xA5, 0x82, 0x8D, 0x57, 0xD4, 0x20, 0xA9, +0x2F, 0x6B, 0xF4, 0xE1, 0xE1, 0xAB, 0xAB, 0xC2, 0x20, 0xAD, 0x56, 0xD4, 0x85, 0x81, 0xF0, 0x15, +0xE2, 0x30, 0xAD, 0x55, 0xD4, 0x85, 0x80, 0xA0, 0x0F, 0xB7, 0x80, 0xF0, 0x0B, 0x38, 0xE9, 0x01, +0x97, 0x80, 0x20, 0xA6, 0x38, 0xC2, 0x30, 0x6B, 0x9C, 0x6E, 0xD4, 0x9C, 0x6F, 0xD4, 0xA0, 0x01, +0xB7, 0x80, 0xC9, 0x10, 0xC2, 0x30, 0xF0, 0x05, 0xB0, 0x08, 0x20, 0xB3, 0x3A, 0xA9, 0x00, 0x00, +0x80, 0x03, 0xA9, 0x03, 0x04, 0xA0, 0x02, 0x00, 0x97, 0x80, 0x9C, 0x56, 0xD4, 0xAD, 0x6E, 0xD4, +0xF0, 0x0F, 0xA9, 0x00, 0x05, 0x8D, 0x6E, 0xD4, 0xA2, 0x6E, 0xD4, 0xA0, 0xE1, 0x00, 0x20, 0x72, +0x1C, 0xA0, 0x04, 0x00, 0xB7, 0x80, 0x85, 0x84, 0xC8, 0xC8, 0xB7, 0x80, 0x85, 0x86, 0x05, 0x84, +0xF0, 0x03, 0x4C, 0x1C, 0x21, 0x6B, 0xA0, 0x0C, 0xB7, 0x80, 0xA0, 0x0E, 0x97, 0x80, 0xA9, 0x21, +0x8D, 0x4E, 0xD4, 0xA0, 0x01, 0xB7, 0x80, 0xC9, 0x11, 0xC2, 0x20, 0xF0, 0x15, 0x9C, 0x44, 0xD4, +0xAE, 0x13, 0xD0, 0xD0, 0x03, 0xCA, 0x80, 0x05, 0xA0, 0x11, 0x8C, 0x4E, 0xD4, 0x8E, 0x46, 0xD4, +0x80, 0x0F, 0xA0, 0x10, 0xB7, 0x80, 0x8D, 0x44, 0xD4, 0xA0, 0x12, 0xB7, 0x80, 0xA8, 0x8C, 0x46, +0xD4, 0xA0, 0x02, 0x8C, 0x49, 0xD4, 0x8C, 0x48, 0xD4, 0x8C, 0x47, 0xD4, 0x8C, 0x53, 0xD4, 0xAD, +0x10, 0xD0, 0x8D, 0x50, 0xD4, 0xA7, 0x80, 0xEB, 0xAA, 0xA0, 0x08, 0xB7, 0x80, 0xE0, 0x0E, 0xD0, +0x03, 0x69, 0x08, 0x00, 0x85, 0x88, 0x8D, 0x67, 0xD4, 0xA0, 0x0A, 0xB7, 0x80, 0x85, 0x8A, 0x8D, +0x69, 0xD4, 0xE2, 0x30, 0xA0, 0x00, 0x20, 0xA8, 0x3A, 0x8D, 0x65, 0xD4, 0x9C, 0x66, 0xD4, 0xAD, +0x12, 0xD0, 0x8D, 0x52, 0xD4, 0x9C, 0x54, 0xD4, 0x9C, 0x43, 0xD4, 0xC2, 0x30, 0xA9, 0x59, 0xD4, +0x8D, 0x4A, 0xD4, 0xA9, 0xE1, 0x00, 0x8D, 0x4C, 0xD4, 0xA2, 0x3F, 0xD4, 0xA0, 0xE1, 0x00, 0x20, +0x58, 0x34, 0xA0, 0x0C, 0x00, 0xB7, 0x80, 0x29, 0xFF, 0x00, 0x8D, 0x78, 0xD4, 0xA9, 0x80, 0x04, +0x8D, 0x6E, 0xD4, 0xA9, 0x32, 0x38, 0x8D, 0x72, 0xD4, 0xA9, 0xFF, 0x00, 0x8D, 0x74, 0xD4, 0xA2, +0x6E, 0xD4, 0xA0, 0xE1, 0x00, 0x20, 0x72, 0x1C, 0xE2, 0x30, 0x60, 0xF4, 0xE1, 0xE1, 0xAB, 0xAB, +0xA2, 0x88, 0x00, 0xA9, 0x06, 0x00, 0x20, 0x35, 0x1D, 0xE2, 0x30, 0xA9, 0x02, 0xCD, 0x0F, 0xD0, +0xD0, 0x27, 0xC2, 0x30, 0xAD, 0x14, 0xD0, 0x85, 0x88, 0xE2, 0x30, 0xA9, 0xE1, 0x85, 0x8A, 0xA0, +0x00, 0xB1, 0x88, 0xAA, 0x29, 0x0F, 0xF0, 0x11, 0x8D, 0x6D, 0xD4, 0x8A, 0x29, 0xF0, 0xC9, 0x30, +0xF0, 0x16, 0xC9, 0x20, 0xD0, 0x03, 0x20, 0x08, 0x3C, 0xC2, 0x30, 0x20, 0x60, 0x36, 0xA0, 0x88, +0x00, 0xA9, 0x06, 0x00, 0x20, 0x5C, 0x1D, 0x6B, 0xC2, 0x30, 0xAD, 0x56, 0xD4, 0x85, 0x81, 0xE2, +0x30, 0xF0, 0xE6, 0xAD, 0x4F, 0xD4, 0xA0, 0x01, 0xD1, 0x88, 0xD0, 0xDD, 0xAD, 0x55, 0xD4, 0x85, +0x80, 0xA0, 0x01, 0xB7, 0x80, 0xC9, 0x10, 0xF0, 0x29, 0xB0, 0x07, 0xC2, 0x30, 0xA9, 0x02, 0x04, +0x80, 0x17, 0xA0, 0x05, 0xB1, 0x88, 0xA0, 0x14, 0x97, 0x80, 0x88, 0xD7, 0x80, 0xC2, 0x30, 0xD0, +0x05, 0xA9, 0x00, 0x00, 0x80, 0x03, 0xA9, 0x07, 0x04, 0x48, 0x22, 0xA9, 0x39, 0xFF, 0x68, 0x4C, +0x75, 0x38, 0xC2, 0x30, 0x18, 0xA5, 0x88, 0x69, 0x02, 0x00, 0x85, 0x88, 0xE2, 0x30, 0xCE, 0x6D, +0xD4, 0x30, 0x96, 0xC2, 0x30, 0xA0, 0x12, 0x00, 0xB7, 0x80, 0x85, 0x84, 0xE2, 0x30, 0xA0, 0x14, +0xB7, 0x80, 0x85, 0x86, 0xA0, 0x17, 0xB7, 0x80, 0xAA, 0xE8, 0x86, 0x8C, 0xC6, 0x8C, 0xF0, 0x30, +0xA0, 0x04, 0xB7, 0x84, 0xD1, 0x88, 0xD0, 0x11, 0x88, 0x10, 0xF7, 0x20, 0xA6, 0x3A, 0x18, 0x65, +0x88, 0x85, 0x88, 0x90, 0xC9, 0xE6, 0x89, 0x80, 0xC5, 0xA0, 0x05, 0xA2, 0x03, 0x38, 0x98, 0x77, +0x84, 0xA8, 0xCA, 0xD0, 0xF8, 0x18, 0x65, 0x84, 0x85, 0x84, 0x90, 0xD0, 0xE6, 0x85, 0x80, 0xCC, +0x20, 0xA6, 0x3A, 0xAA, 0xC2, 0x20, 0x29, 0xFF, 0x00, 0x18, 0x65, 0x84, 0x38, 0xA0, 0x12, 0xF7, +0x80, 0xA0, 0x10, 0xD7, 0x80, 0xE2, 0x30, 0xF0, 0x02, 0xB0, 0x23, 0x9B, 0x88, 0x30, 0x06, 0xB1, +0x88, 0x97, 0x84, 0x80, 0xF7, 0xA0, 0x17, 0x18, 0xB7, 0x80, 0x69, 0x01, 0x97, 0x80, 0x88, 0xD7, +0x80, 0xF0, 0x03, 0x8A, 0x80, 0xA8, 0xC2, 0x30, 0xA9, 0x00, 0x00, 0x4C, 0xF9, 0x39, 0xC2, 0x30, +0xA9, 0x04, 0x04, 0x4C, 0xF9, 0x39, 0xA0, 0x05, 0xA2, 0x03, 0x38, 0x98, 0x77, 0x88, 0xA8, 0xCA, +0xD0, 0xF8, 0x60, 0x20, 0x99, 0x2F, 0xE2, 0x30, 0xA0, 0x10, 0xB7, 0x80, 0x85, 0x8C, 0x64, 0x8D, +0xC2, 0x20, 0xA6, 0x8D, 0xE8, 0x86, 0x8D, 0xAD, 0x7E, 0xD4, 0x85, 0x84, 0xAD, 0x80, 0xD4, 0x85, +0x86, 0xA5, 0x85, 0xF0, 0x1F, 0xA0, 0x07, 0xB7, 0x84, 0xAA, 0xE4, 0x8C, 0xD0, 0x08, 0xA6, 0x8D, +0xF0, 0xEF, 0xC5, 0x8C, 0xF0, 0xDC, 0xA0, 0x02, 0xB7, 0x84, 0x48, 0xA7, 0x84, 0x85, 0x84, 0x68, +0x85, 0x86, 0x80, 0xDD, 0xA0, 0x0A, 0xB7, 0x80, 0x85, 0x86, 0xA0, 0x08, 0xB7, 0x80, 0x85, 0x84, +0xAD, 0x7E, 0xD4, 0x87, 0x84, 0xAD, 0x80, 0xD4, 0xA0, 0x02, 0x97, 0x84, 0xA5, 0x84, 0x8D, 0x7E, +0xD4, 0xA5, 0x86, 0x8D, 0x80, 0xD4, 0xAD, 0x10, 0xD0, 0xA0, 0x04, 0x97, 0x84, 0xA5, 0x8C, 0xA0, +0x07, 0x97, 0x84, 0xE2, 0x30, 0xAD, 0x12, 0xD0, 0xA0, 0x06, 0x97, 0x84, 0xC2, 0x30, 0x20, 0xA9, +0x2F, 0x60, 0xE2, 0x30, 0xA0, 0x00, 0x20, 0xA8, 0x3A, 0x85, 0x8C, 0xC2, 0x30, 0xAD, 0x7E, 0xD4, +0x85, 0x84, 0xAD, 0x80, 0xD4, 0x85, 0x86, 0xA5, 0x85, 0xF0, 0x54, 0x18, 0xA5, 0x84, 0x69, 0x09, +0x00, 0x85, 0x84, 0xE2, 0x30, 0xA4, 0x8C, 0x88, 0xB7, 0x84, 0xC9, 0x61, 0x90, 0x06, 0xC9, 0x7B, +0xB0, 0x02, 0x29, 0xDF, 0x85, 0x83, 0xB7, 0x88, 0xC9, 0x61, 0x90, 0x06, 0xC9, 0x7B, 0xB0, 0x02, +0x29, 0xDF, 0xC5, 0x83, 0xD0, 0x11, 0x88, 0x10, 0xDF, 0xC2, 0x30, 0x38, 0xA5, 0x84, 0xE9, 0x09, +0x00, 0x85, 0x84, 0xA9, 0x01, 0x00, 0x60, 0xC2, 0x30, 0x38, 0xA5, 0x84, 0xE9, 0x09, 0x00, 0x85, +0x84, 0xA0, 0x02, 0x00, 0xB7, 0x84, 0xAA, 0xA7, 0x84, 0x85, 0x84, 0x86, 0x86, 0x80, 0xA8, 0x60, +0x20, 0x99, 0x2F, 0xA0, 0x04, 0x00, 0xB7, 0x80, 0x85, 0x88, 0xA0, 0x06, 0x00, 0xB7, 0x80, 0x85, +0x8A, 0x20, 0x32, 0x3B, 0xF0, 0x46, 0xAD, 0x7E, 0xD4, 0x85, 0x88, 0xC5, 0x84, 0x08, 0xAD, 0x80, +0xD4, 0x85, 0x8A, 0x28, 0xD0, 0x04, 0xC5, 0x86, 0xF0, 0x20, 0xA7, 0x88, 0xAA, 0xA0, 0x02, 0x00, +0xB7, 0x88, 0xC5, 0x86, 0xD0, 0x04, 0xE4, 0x84, 0xF0, 0x06, 0x86, 0x88, 0x85, 0x8A, 0x80, 0xEA, +0xA7, 0x84, 0x87, 0x88, 0xB7, 0x84, 0x97, 0x88, 0x80, 0x0D, 0xA0, 0x02, 0x00, 0xB7, 0x84, 0x8D, +0x80, 0xD4, 0xA7, 0x84, 0x8D, 0x7E, 0xD4, 0xA9, 0x00, 0x00, 0x80, 0x03, 0xA9, 0x03, 0x04, 0xA0, +0x02, 0x00, 0x97, 0x80, 0x20, 0xA9, 0x2F, 0x6B, 0xA0, 0x01, 0xB1, 0x88, 0x8D, 0x83, 0xD4, 0xA0, +0x04, 0xB1, 0x88, 0xCD, 0x12, 0xD0, 0xC2, 0x20, 0xD0, 0x0E, 0xA0, 0x02, 0xB1, 0x88, 0xF0, 0x05, +0xCD, 0x10, 0xD0, 0xD0, 0x03, 0xE2, 0x30, 0x60, 0x20, 0x00, 0x3D, 0xAD, 0x7E, 0xD4, 0x85, 0x84, +0xAD, 0x80, 0xD4, 0x85, 0x86, 0xA5, 0x85, 0xF0, 0x7C, 0xA0, 0x07, 0x84, 0x8C, 0xA0, 0x09, 0x84, +0x8D, 0x20, 0x0A, 0x3D, 0xD0, 0x05, 0x20, 0x0A, 0x3D, 0xF0, 0x0E, 0xA0, 0x02, 0xB7, 0x84, 0x48, +0xA7, 0x84, 0x85, 0x84, 0x68, 0x85, 0x86, 0x80, 0xDC, 0xAD, 0x10, 0xD0, 0xA0, 0x04, 0x97, 0x84, +0xE2, 0x30, 0x38, 0xA4, 0x8D, 0x98, 0x77, 0x84, 0x38, 0xE9, 0x04, 0xC2, 0x20, 0x29, 0xFF, 0x00, +0xA6, 0x8B, 0x9D, 0x84, 0xD4, 0xE8, 0xE8, 0x18, 0xA5, 0x84, 0x69, 0x04, 0x00, 0x9D, 0x84, 0xD4, +0xE8, 0xE8, 0xA5, 0x86, 0x9D, 0x84, 0xD4, 0xE8, 0xE8, 0x86, 0x8B, 0xAC, 0x82, 0xD4, 0xC8, 0x8C, +0x82, 0xD4, 0xC0, 0x04, 0xD0, 0xB5, 0xC2, 0x30, 0xA2, 0x84, 0x00, 0xA9, 0x07, 0x00, 0x20, 0x35, +0x1D, 0xE2, 0x10, 0x20, 0xC0, 0x3C, 0xC2, 0x30, 0xA0, 0x84, 0x00, 0xA9, 0x07, 0x00, 0x20, 0x5C, +0x1D, 0xE2, 0x10, 0x80, 0x96, 0xAE, 0x82, 0xD4, 0xF0, 0x03, 0x20, 0xC0, 0x3C, 0xE2, 0x30, 0x60, +0xA9, 0xFF, 0xFF, 0xA6, 0x8B, 0x9D, 0x84, 0xD4, 0xA0, 0x02, 0xB1, 0x88, 0x8D, 0x44, 0xD4, 0xA0, +0x04, 0xB1, 0x88, 0x8D, 0x46, 0xD4, 0xE2, 0x30, 0x9C, 0x43, 0xD4, 0xAD, 0x82, 0xD4, 0x09, 0x30, +0x8D, 0x82, 0xD4, 0xC2, 0x30, 0xA9, 0x84, 0xD4, 0x8D, 0x4A, 0xD4, 0xA9, 0xE1, 0x00, 0x8D, 0x4C, +0xD4, 0xA2, 0x3F, 0xD4, 0xA0, 0xE1, 0x00, 0x20, 0x58, 0x34, 0xE2, 0x10, 0x20, 0x00, 0x3D, 0x60, +0xA2, 0x0C, 0x86, 0x8B, 0xA2, 0x00, 0x8E, 0x82, 0xD4, 0x60, 0xA4, 0x8C, 0xB1, 0x88, 0xC9, 0x01, +0x3D, 0xF0, 0x31, 0xE2, 0x30, 0xAA, 0xA4, 0x8C, 0xE6, 0x8C, 0xB1, 0x88, 0xC9, 0x61, 0x90, 0x06, +0xC9, 0x7B, 0xB0, 0x02, 0x29, 0xDF, 0x85, 0x83, 0xA4, 0x8D, 0xE6, 0x8D, 0xB7, 0x84, 0xC9, 0x61, +0x90, 0x06, 0xC9, 0x7B, 0xB0, 0x02, 0x29, 0xDF, 0xC5, 0x83, 0xD0, 0x05, 0xCA, 0x10, 0xD7, 0xE2, +0x02, 0xC2, 0x20, 0x60, 0xC8, 0xC8, 0x84, 0x8C, 0xA4, 0x8D, 0xE2, 0x30, 0xB7, 0x84, 0x38, 0x65, +0x8D, 0x85, 0x8D, 0xE2, 0x02, 0xC2, 0x20, 0x60, 0x9C, 0x00, 0xD0, 0xA2, 0x00, 0xD0, 0xA0, 0x01, +0xD0, 0xA9, 0xA8, 0x04, 0x54, 0xE1, 0xE1, 0xE2, 0x30, 0xA0, 0x09, 0xB7, 0x80, 0x8D, 0x12, 0xD0, +0xC2, 0x30, 0xA9, 0x07, 0x00, 0x8D, 0x5F, 0xD4, 0xA9, 0x4E, 0xD4, 0x8D, 0x61, 0xD4, 0xA9, 0xE1, +0x00, 0x8D, 0x63, 0xD4, 0xA9, 0xFF, 0xFF, 0x8D, 0x6B, 0xD4, 0xA9, 0x02, 0x00, 0x8D, 0x8A, 0xD4, +0xA9, 0x82, 0xD4, 0x8D, 0x8C, 0xD4, 0xA9, 0xE1, 0x00, 0x8D, 0x8E, 0xD4, 0xA9, 0x01, 0x00, 0xA2, +0x67, 0x36, 0xA0, 0xFF, 0x00, 0x38, 0x20, 0x67, 0x2D, 0xA9, 0x02, 0x00, 0xA2, 0xA8, 0x36, 0xA0, +0xFF, 0x00, 0x38, 0x20, 0x67, 0x2D, 0xA2, 0xD2, 0x3D, 0xA0, 0xFF, 0x00, 0x20, 0x72, 0x1C, 0xA2, +0xDB, 0x3D, 0xA0, 0xFF, 0x00, 0x20, 0x72, 0x1C, 0xA2, 0xE4, 0x3D, 0xA0, 0xFF, 0x00, 0x20, 0x72, +0x1C, 0x60, 0x00, 0x0B, 0x00, 0x00, 0x01, 0x31, 0x37, 0xFF, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x02, +0x6B, 0x39, 0xFF, 0x00, 0x00, 0x07, 0x00, 0x00, 0xFF, 0x01, 0xEE, 0x3D, 0xFF, 0x00, 0x06, 0x00, +0xF6, 0x3D, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x06, 0x01, 0x01, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, +0x15, 0x00, 0x00, 0x00, 0x8A, 0x3E, 0xFF, 0x00, 0x88, 0x3F, 0xFF, 0x00, 0x3C, 0x40, 0xFF, 0x00, +0x55, 0x40, 0xFF, 0x00, 0x60, 0x40, 0xFF, 0x00, 0x29, 0x43, 0xFF, 0x00, 0xB6, 0x3E, 0xFF, 0x00, +0xB6, 0x3E, 0xFF, 0x00, 0xA4, 0x41, 0xFF, 0x00, 0x52, 0x41, 0xFF, 0x00, 0x6D, 0x40, 0xFF, 0x00, +0x1B, 0x42, 0xFF, 0x00, 0xF2, 0x41, 0xFF, 0x00, 0xF1, 0x43, 0xFF, 0x00, 0x5A, 0x42, 0xFF, 0x00, +0x3B, 0x43, 0xFF, 0x00, 0x47, 0x43, 0xFF, 0x00, 0x82, 0x43, 0xFF, 0x00, 0xB4, 0x43, 0xFF, 0x00, +0x66, 0x47, 0xFF, 0x00, 0x2B, 0xA2, 0x00, 0x00, 0x80, 0x01, 0x2B, 0x98, 0x9B, 0xAA, 0xE0, 0x00, +0x00, 0xF0, 0x1E, 0x08, 0x0B, 0x3B, 0x48, 0x2B, 0xA3, 0x08, 0x95, 0x08, 0xA3, 0x06, 0x95, 0x06, +0xA3, 0x04, 0x95, 0x04, 0x3B, 0x83, 0x04, 0x8A, 0x18, 0x63, 0x04, 0x69, 0x03, 0x00, 0x2B, 0x28, +0x1B, 0x98, 0xC9, 0x01, 0x00, 0x90, 0x03, 0x09, 0x00, 0x08, 0x6B, 0x08, 0x78, 0x20, 0x2F, 0x41, +0xA2, 0x1F, 0x00, 0xA9, 0x00, 0x00, 0xE2, 0x20, 0x9F, 0xB0, 0x1D, 0xE1, 0xCA, 0x10, 0xF9, 0xAF, +0xCA, 0x00, 0xE1, 0x0A, 0x0A, 0x0A, 0x0A, 0x8F, 0xB0, 0x1D, 0xE1, 0xAF, 0xD6, 0x00, 0xE1, 0xD0, +0x03, 0x20, 0xBD, 0x3E, 0x28, 0xC2, 0x20, 0xA0, 0x00, 0x00, 0x4C, 0x55, 0x3E, 0xA9, 0x20, 0x0F, +0xCA, 0x00, 0xE1, 0x8F, 0x3C, 0xC0, 0xE1, 0xA9, 0xE1, 0x8F, 0x3E, 0xC0, 0xE1, 0xA9, 0x3E, 0x8F, +0x3D, 0xC0, 0xE1, 0x20, 0x0C, 0x3F, 0xC2, 0x20, 0xA9, 0xF4, 0x3F, 0x8F, 0x49, 0x01, 0xE1, 0x8F, +0xBE, 0x1D, 0xE1, 0xE2, 0x20, 0xA9, 0xFF, 0x8F, 0x4B, 0x01, 0xE1, 0x8F, 0xC0, 0x1D, 0xE1, 0xA9, +0x5C, 0x8F, 0x48, 0x01, 0xE1, 0x8F, 0xBD, 0x1D, 0xE1, 0xC2, 0x20, 0xF4, 0x0B, 0x00, 0xF4, 0xFF, +0x00, 0xF4, 0xF4, 0x3F, 0xA2, 0x03, 0x10, 0x22, 0x00, 0x00, 0xE1, 0x60, 0x08, 0x78, 0xA9, 0x20, +0x0F, 0xCA, 0x00, 0xE1, 0x8F, 0x3C, 0xC0, 0xE1, 0xA9, 0x20, 0x8F, 0x3E, 0xC0, 0xE1, 0xA9, 0x00, +0x20, 0x7E, 0x3F, 0xA9, 0x00, 0x8F, 0x3E, 0xC0, 0xE1, 0xA9, 0x00, 0x20, 0x7E, 0x3F, 0xA9, 0x40, +0x8F, 0x3E, 0xC0, 0xE1, 0xA9, 0x00, 0x8F, 0xB1, 0x1D, 0xE1, 0x20, 0x7E, 0x3F, 0xA9, 0x80, 0x8F, +0x3E, 0xC0, 0xE1, 0xA9, 0x00, 0x20, 0x7E, 0x3F, 0xA9, 0xC0, 0x8F, 0x3E, 0xC0, 0xE1, 0xA9, 0x00, +0x20, 0x7E, 0x3F, 0xA9, 0xA0, 0x8F, 0x3E, 0xC0, 0xE1, 0xA9, 0x01, 0x20, 0x7E, 0x3F, 0xAF, 0xCA, +0x00, 0xE1, 0x29, 0x0F, 0x8F, 0x3C, 0xC0, 0xE1, 0xA9, 0xE0, 0x8F, 0x3E, 0xC0, 0xE1, 0xAF, 0x3D, +0xC0, 0xE1, 0xA2, 0x22, 0x00, 0xAF, 0x3D, 0xC0, 0xE1, 0xCA, 0xD0, 0xF9, 0x28, 0x60, 0xA2, 0x20, +0x00, 0x8F, 0x3D, 0xC0, 0xE1, 0xCA, 0xD0, 0xF9, 0x60, 0xAF, 0xD6, 0x00, 0xE1, 0x29, 0xFF, 0x00, +0xF0, 0x09, 0xA2, 0x10, 0x00, 0xA0, 0x02, 0x00, 0x4C, 0x5B, 0x3E, 0x20, 0x34, 0x40, 0xF0, 0x0B, +0xA2, 0x18, 0x00, 0xA0, 0x02, 0x00, 0x4C, 0x5B, 0x3E, 0xC2, 0x20, 0xA3, 0x07, 0x8F, 0xB7, 0x1D, +0xE1, 0xF4, 0x00, 0x00, 0xF4, 0x08, 0x00, 0xF4, 0x00, 0x00, 0x48, 0xA2, 0x01, 0x0D, 0x22, 0x00, +0x00, 0xE1, 0x0B, 0xAF, 0xB7, 0x1D, 0xE1, 0x5B, 0xA2, 0xFA, 0x00, 0xE2, 0x20, 0xA9, 0x00, 0x95, +0x00, 0xCA, 0x10, 0xFB, 0x2B, 0xA9, 0xFF, 0x8F, 0xB6, 0x1D, 0xE1, 0x8F, 0xC1, 0x1D, 0xE1, 0xC2, +0x20, 0xF4, 0xFF, 0x00, 0xF4, 0x16, 0x46, 0xA2, 0x08, 0x12, 0x22, 0x00, 0x00, 0xE1, 0xA0, 0x02, +0x00, 0x4C, 0x55, 0x3E, 0xC2, 0x30, 0xF4, 0xFF, 0x08, 0xF4, 0xFF, 0x00, 0xF4, 0x06, 0x40, 0xA2, +0x03, 0x15, 0x22, 0x00, 0x00, 0xE1, 0x2D, 0x00, 0x0D, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, +0x0A, 0x00, 0x0A, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x55, 0x6E, 0x63, 0x6C, 0x61, 0x69, +0x6D, 0x65, 0x64, 0x20, 0x53, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x72, +0x75, 0x70, 0x74, 0x20, 0xE2, 0x20, 0xAF, 0xB6, 0x1D, 0xE1, 0xC2, 0x20, 0x60, 0x08, 0x78, 0xA9, +0x00, 0x00, 0xF4, 0x00, 0x00, 0xF4, 0x08, 0x00, 0xF4, 0x00, 0x00, 0x48, 0xA2, 0x01, 0x0D, 0x22, +0x00, 0x00, 0xE1, 0x82, 0x3A, 0xFE, 0xA9, 0x00, 0x02, 0x83, 0x07, 0xA0, 0x00, 0x00, 0x4C, 0x55, +0x3E, 0xE2, 0x20, 0x20, 0x0C, 0x3F, 0xC2, 0x20, 0xA0, 0x00, 0x00, 0x4C, 0x55, 0x3E, 0xA9, 0x7B, +0x40, 0x83, 0x07, 0xA9, 0xFF, 0x00, 0x83, 0x09, 0x4C, 0xB5, 0x3E, 0xA3, 0x40, 0xFF, 0x00, 0xB4, +0x40, 0xFF, 0x00, 0xA8, 0x40, 0xFF, 0x00, 0xB9, 0x40, 0xFF, 0x00, 0xAF, 0x40, 0xFF, 0x00, 0xBC, +0x40, 0xFF, 0x00, 0xF0, 0x40, 0xFF, 0x00, 0x00, 0x41, 0xFF, 0x00, 0x20, 0x41, 0xFF, 0x00, 0xE1, +0x40, 0xFF, 0x00, 0x20, 0xCF, 0x40, 0x80, 0x03, 0x20, 0xC1, 0x40, 0xAF, 0x3D, 0xC0, 0xE1, 0xAF, +0x3D, 0xC0, 0xE1, 0x6B, 0x20, 0xCF, 0x40, 0x80, 0x03, 0x20, 0xC1, 0x40, 0x8F, 0x3D, 0xC0, 0xE1, +0x6B, 0x48, 0xC2, 0x20, 0x8A, 0x8F, 0x3E, 0xC0, 0xE1, 0xE2, 0x20, 0xA9, 0x60, 0x80, 0x08, 0x48, +0x8A, 0x8F, 0x3E, 0xC0, 0xE1, 0xA9, 0x20, 0x0F, 0xCA, 0x00, 0xE1, 0x8F, 0x3C, 0xC0, 0xE1, 0x68, +0x60, 0xAF, 0x3C, 0xC0, 0xE1, 0x29, 0xD0, 0x0F, 0xCA, 0x00, 0xE1, 0x8F, 0x3C, 0xC0, 0xE1, 0x6B, +0x00, 0x10, 0x08, 0x18, 0x04, 0x14, 0x0C, 0x1C, 0x02, 0x12, 0x0A, 0x1A, 0x06, 0x16, 0x0E, 0x1E, +0x00, 0x00, 0x08, 0x08, 0x04, 0x04, 0x0C, 0x0C, 0x02, 0x02, 0x0A, 0x0A, 0x06, 0x06, 0x0E, 0x0E, +0x01, 0x01, 0x09, 0x09, 0x05, 0x05, 0x0D, 0x0D, 0x03, 0x03, 0x0B, 0x0B, 0x07, 0x07, 0x0F, 0x0F, +0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90, 0xA0, 0xB0, 0xC0, 0xD0, 0xE0, 0xE2, +0x20, 0xC2, 0x10, 0xA9, 0x00, 0x8F, 0x3E, 0xC0, 0xE1, 0x8F, 0x3F, 0xC0, 0xE1, 0xA9, 0x60, 0x0F, +0xCA, 0x00, 0xE1, 0x8F, 0x3C, 0xC0, 0xE1, 0xA9, 0x80, 0x8F, 0x3D, 0xC0, 0xE1, 0xE8, 0xD0, 0xF9, +0xC2, 0x30, 0x60, 0xAF, 0xD6, 0x00, 0xE1, 0x29, 0xFF, 0x00, 0xF0, 0x09, 0xA2, 0x10, 0x00, 0xA0, +0x08, 0x00, 0x4C, 0x5B, 0x3E, 0x0B, 0xA3, 0x09, 0xAA, 0x3A, 0x18, 0x63, 0x0B, 0x90, 0x09, 0xA2, +0x11, 0x00, 0xA0, 0x08, 0x00, 0x4C, 0x5A, 0x3E, 0xA0, 0x00, 0x00, 0xA3, 0x0B, 0x8F, 0x3E, 0xC0, +0xE1, 0x3B, 0x5B, 0xE2, 0x20, 0xA9, 0x60, 0x0F, 0xCA, 0x00, 0xE1, 0x8F, 0x3C, 0xC0, 0xE1, 0xAF, +0x3D, 0xC0, 0xE1, 0xAF, 0x3D, 0xC0, 0xE1, 0x97, 0x0D, 0xC8, 0xCA, 0xD0, 0xF6, 0xC2, 0x20, 0xA0, +0x08, 0x00, 0x4C, 0x54, 0x3E, 0xAF, 0xD6, 0x00, 0xE1, 0x29, 0xFF, 0x00, 0xF0, 0x09, 0xA9, 0x10, +0x00, 0xA0, 0x08, 0x00, 0x4C, 0x5B, 0x3E, 0x0B, 0xA3, 0x09, 0xAA, 0x3A, 0x18, 0x63, 0x0B, 0x90, +0x09, 0xA2, 0x11, 0x00, 0xA0, 0x08, 0x00, 0x4C, 0x5A, 0x3E, 0xA0, 0x00, 0x00, 0xA3, 0x0B, 0x8F, +0x3E, 0xC0, 0xE1, 0x3B, 0x5B, 0xE2, 0x20, 0xA9, 0x60, 0x0F, 0xCA, 0x00, 0xE1, 0x8F, 0x3C, 0xC0, +0xE1, 0xB7, 0x0D, 0x8F, 0x3D, 0xC0, 0xE1, 0xC8, 0xCA, 0xD0, 0xF6, 0xC2, 0x20, 0xA0, 0x08, 0x00, +0x4C, 0x54, 0x3E, 0x20, 0x39, 0x42, 0xA3, 0x09, 0xB0, 0x10, 0x8F, 0x3D, 0xC0, 0xE1, 0x8F, 0x3D, +0xC0, 0xE1, 0xC2, 0x20, 0xA0, 0x04, 0x00, 0x4C, 0x55, 0x3E, 0x8F, 0xB0, 0x1D, 0xE1, 0x4A, 0x4A, +0x4A, 0x4A, 0x8F, 0xCA, 0x00, 0xE1, 0x8F, 0x3C, 0xC0, 0xE1, 0x80, 0xE6, 0x20, 0x39, 0x42, 0xB0, +0x0A, 0xAF, 0x3D, 0xC0, 0xE1, 0xAF, 0x3D, 0xC0, 0xE1, 0x80, 0x04, 0xAF, 0xB0, 0x1D, 0xE1, 0x83, +0x09, 0xC2, 0x20, 0xA0, 0x02, 0x00, 0x4C, 0x55, 0x3E, 0xE2, 0x20, 0xA3, 0x09, 0xC9, 0x0F, 0xB0, +0x19, 0xEB, 0xA9, 0x00, 0xEB, 0xAA, 0xBF, 0xF0, 0x40, 0xFF, 0x69, 0x40, 0x8F, 0x3E, 0xC0, 0xE1, +0xA9, 0x20, 0x0F, 0xCA, 0x00, 0xE1, 0x8F, 0x3C, 0xC0, 0xE1, 0x60, 0x0B, 0x8B, 0x08, 0x78, 0x48, +0x2B, 0xE2, 0x20, 0xA9, 0xE1, 0x48, 0xAB, 0xAF, 0x3C, 0xC0, 0xE1, 0x29, 0xF0, 0x0F, 0xCA, 0x00, +0xE1, 0x48, 0x29, 0x0F, 0x8F, 0x3C, 0xC0, 0xE1, 0xC2, 0x20, 0xAF, 0xB2, 0x1D, 0xE1, 0x23, 0x0C, +0x8F, 0xB4, 0x1D, 0xE1, 0x4F, 0xB2, 0x1D, 0xE1, 0x8F, 0xB2, 0x1D, 0xE1, 0xA2, 0x10, 0x00, 0xCA, +0xC2, 0x20, 0xAF, 0xB4, 0x1D, 0xE1, 0x0A, 0x8F, 0xB4, 0x1D, 0xE1, 0xB0, 0x04, 0xF0, 0x7C, 0x80, +0xEE, 0xE2, 0x20, 0xBF, 0xF0, 0x40, 0xFF, 0x48, 0x18, 0x69, 0x00, 0x8F, 0x3E, 0xC0, 0xE1, 0xA9, +0x00, 0x8F, 0x3D, 0xC0, 0xE1, 0x8F, 0x3D, 0xC0, 0xE1, 0xA3, 0x01, 0x18, 0x65, 0x20, 0x8F, 0x3E, +0xC0, 0xE1, 0xA9, 0x00, 0x8F, 0x3D, 0xC0, 0xE1, 0x8F, 0x3D, 0xC0, 0xE1, 0xA9, 0x14, 0x3A, 0xD0, +0xFD, 0xA3, 0x01, 0x18, 0x69, 0xA0, 0x8F, 0x3E, 0xC0, 0xE1, 0xAF, 0x3D, 0xC0, 0xE1, 0xAF, 0x3D, +0xC0, 0xE1, 0x29, 0xF7, 0x09, 0x01, 0x8F, 0x3D, 0xC0, 0xE1, 0xEE, 0x3E, 0xC0, 0x8F, 0x3D, 0xC0, +0xE1, 0x68, 0x69, 0x40, 0x8F, 0x3E, 0xC0, 0xE1, 0xA9, 0x00, 0x8F, 0x3D, 0xC0, 0xE1, 0xEE, 0x3E, +0xC0, 0x8F, 0x3D, 0xC0, 0xE1, 0xAF, 0xB6, 0x1D, 0xE1, 0xF0, 0x84, 0xDA, 0xBF, 0x20, 0x41, 0xFF, +0xAA, 0xA9, 0x00, 0x95, 0x00, 0x95, 0x01, 0xFA, 0x82, 0x74, 0xFF, 0xE2, 0x20, 0x68, 0x8F, 0x3C, +0xC0, 0xE1, 0x28, 0xAB, 0xA0, 0x02, 0x00, 0x4C, 0x54, 0x3E, 0xE2, 0x20, 0xAF, 0xC1, 0x1D, 0xE1, +0x83, 0x07, 0x83, 0x08, 0xC2, 0x20, 0xA0, 0x00, 0x00, 0x4C, 0x55, 0x3E, 0xAF, 0xB2, 0x1D, 0xE1, +0x83, 0x07, 0xA0, 0x00, 0x00, 0x4C, 0x55, 0x3E, 0xC9, 0x00, 0x00, 0xF0, 0x2D, 0x0B, 0x48, 0x2B, +0xA3, 0x09, 0xC9, 0x0F, 0x00, 0x90, 0x09, 0xA2, 0x13, 0x00, 0xA0, 0x02, 0x00, 0x4C, 0x5A, 0x3E, +0xAA, 0xE2, 0x30, 0xA9, 0xFF, 0xEB, 0xBF, 0x20, 0x41, 0xFF, 0xAA, 0xC2, 0x30, 0xB5, 0x00, 0xEB, +0xC2, 0x30, 0x83, 0x0B, 0xA0, 0x02, 0x00, 0x4C, 0x54, 0x3E, 0xA2, 0x12, 0x00, 0xA0, 0x02, 0x00, +0x4C, 0x5B, 0x3E, 0xAF, 0xB6, 0x1D, 0xE1, 0x29, 0xFF, 0x00, 0xD0, 0x09, 0xA2, 0x12, 0x00, 0xA0, +0x04, 0x00, 0x4C, 0x5B, 0x3E, 0xF4, 0x0B, 0x00, 0xA3, 0x0B, 0x48, 0xA3, 0x0B, 0x48, 0xA2, 0x03, +0x10, 0x22, 0x00, 0x00, 0xE1, 0xE2, 0x20, 0xA9, 0xFF, 0x8F, 0xB9, 0x1D, 0xE1, 0xC2, 0x20, 0xA0, +0x04, 0x00, 0x4C, 0x55, 0x3E, 0xAF, 0xB6, 0x1D, 0xE1, 0x29, 0xFF, 0x00, 0xD0, 0x09, 0xA2, 0x12, +0x00, 0xA0, 0x04, 0x00, 0x4C, 0x5B, 0x3E, 0xAF, 0xBE, 0x1D, 0xE1, 0x83, 0x0B, 0xAF, 0xC0, 0x1D, +0xE1, 0x29, 0xFF, 0x00, 0x83, 0x0D, 0xA3, 0x07, 0x8F, 0xBE, 0x1D, 0xE1, 0xA3, 0x08, 0x8F, 0xBF, +0x1D, 0xE1, 0x08, 0xE2, 0x20, 0xA9, 0x5C, 0x8F, 0xBD, 0x1D, 0xE1, 0x28, 0xA0, 0x04, 0x00, 0x4C, +0x55, 0x3E, 0x0B, 0x08, 0x78, 0x20, 0x56, 0x44, 0xB0, 0x54, 0xDA, 0x20, 0x25, 0x45, 0xFA, 0xE2, +0x30, 0xDA, 0xB5, 0x01, 0x29, 0x0F, 0xAA, 0xBF, 0xF0, 0x40, 0xFF, 0x18, 0x69, 0xA0, 0x8F, 0x3E, +0xC0, 0xE1, 0xAF, 0xCA, 0x00, 0xE1, 0x8F, 0x3C, 0xC0, 0xE1, 0xFA, 0xB5, 0x01, 0x29, 0xF0, 0x09, +0x0E, 0x24, 0xFA, 0xF0, 0x02, 0x29, 0xFA, 0x8F, 0x3D, 0xC0, 0xE1, 0xC2, 0x30, 0xB5, 0x01, 0x29, +0x0F, 0x00, 0xA8, 0xA9, 0x00, 0x00, 0x38, 0x2A, 0x18, 0x88, 0x10, 0xFB, 0x0F, 0xB2, 0x1D, 0xE1, +0x8F, 0xB2, 0x1D, 0xE1, 0xA2, 0x00, 0x00, 0x28, 0xA0, 0x06, 0x00, 0x4C, 0x54, 0x3E, 0xAA, 0x28, +0xA0, 0x06, 0x00, 0x4C, 0x5A, 0x3E, 0xE2, 0x30, 0xA3, 0x11, 0x29, 0x0F, 0xC9, 0x0F, 0x90, 0x03, +0x82, 0x96, 0x00, 0xAA, 0xBF, 0x20, 0x41, 0xFF, 0xAA, 0xAF, 0xB6, 0x1D, 0xE1, 0xD0, 0x03, 0x82, +0x79, 0x00, 0xAF, 0xB8, 0x1D, 0xE1, 0x48, 0xAF, 0xB7, 0x1D, 0xE1, 0x48, 0x2B, 0xB5, 0x00, 0x29, +0x0F, 0xF0, 0x03, 0x82, 0x6C, 0x00, 0x0F, 0xB9, 0x1D, 0xE1, 0xD0, 0x03, 0x82, 0x78, 0x00, 0xC2, +0x20, 0xA3, 0x0C, 0x85, 0xF3, 0xA3, 0x0D, 0x85, 0xF4, 0xA0, 0x0C, 0xB7, 0xF3, 0x95, 0x07, 0xC8, +0xB7, 0xF3, 0x95, 0x08, 0xC8, 0xC8, 0xC8, 0xE2, 0x20, 0xB7, 0xF3, 0x95, 0x0E, 0xC2, 0x20, 0xA3, +0x10, 0x29, 0xFF, 0x00, 0xC9, 0x01, 0x00, 0xD0, 0x47, 0xA3, 0x10, 0x95, 0x00, 0xA0, 0x00, 0xB7, +0xF3, 0x95, 0x02, 0xC8, 0xB7, 0xF3, 0x95, 0x03, 0xC8, 0xC8, 0xC8, 0xB7, 0xF3, 0x95, 0x05, 0xA0, +0x08, 0xB7, 0xF3, 0x95, 0x0A, 0xE2, 0x30, 0xA0, 0x0A, 0xB7, 0xF3, 0xC2, 0x30, 0x29, 0x07, 0x00, +0xDA, 0x0A, 0xAA, 0xBF, 0x15, 0x45, 0xFF, 0xFA, 0x95, 0x0C, 0x60, 0xC2, 0x20, 0xA9, 0x12, 0x00, +0x38, 0x60, 0xC2, 0x20, 0xA9, 0x15, 0x00, 0x38, 0x60, 0xC2, 0x20, 0xA9, 0x13, 0x00, 0x38, 0x60, +0xC2, 0x20, 0xA9, 0x14, 0x00, 0x38, 0x60, 0xC2, 0x20, 0xA9, 0x17, 0x00, 0x38, 0x60, 0xC2, 0x20, +0xA9, 0x16, 0x00, 0x38, 0x60, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, +0x20, 0x00, 0x40, 0x00, 0x80, 0xC2, 0x30, 0xA0, 0x00, 0x00, 0x98, 0xE2, 0x20, 0xDA, 0xB5, 0x01, +0x29, 0x0F, 0xAA, 0xBF, 0xF0, 0x40, 0xFF, 0xFA, 0x48, 0x85, 0xF6, 0xA9, 0x03, 0x95, 0x0F, 0x20, +0xBA, 0x46, 0xE2, 0x20, 0x68, 0x1A, 0x85, 0xF6, 0xB5, 0x00, 0x10, 0x32, 0xC2, 0x20, 0xB5, 0x07, +0x15, 0x08, 0xD0, 0x0D, 0xC6, 0xF6, 0x20, 0x84, 0x45, 0xE2, 0x20, 0xA9, 0xFF, 0x85, 0xFA, 0x80, +0x22, 0x20, 0x7F, 0x46, 0xE2, 0x20, 0x34, 0x00, 0x10, 0x12, 0x20, 0x84, 0x45, 0xC2, 0x20, 0xB5, +0x07, 0x15, 0x08, 0xD0, 0x07, 0xE2, 0x20, 0xA9, 0x03, 0x20, 0x4D, 0x47, 0x80, 0x05, 0x20, 0xBA, +0x46, 0x64, 0xFA, 0x60, 0x08, 0x8B, 0x86, 0xF7, 0xE2, 0x30, 0xA9, 0xE1, 0x48, 0xAB, 0xA9, 0x00, +0x0F, 0xCA, 0x00, 0xE1, 0x8D, 0x3C, 0xC0, 0xA0, 0x0A, 0xB7, 0xF3, 0x29, 0x07, 0x0A, 0x0A, 0x0A, +0x17, 0xF3, 0xEB, 0xA5, 0xF6, 0x18, 0x69, 0xC0, 0xAA, 0xEB, 0x8E, 0x3E, 0xC0, 0x8D, 0x3D, 0xC0, +0xA9, 0x00, 0x18, 0x65, 0xF6, 0xAA, 0xA0, 0x06, 0xB7, 0xF3, 0x8E, 0x3E, 0xC0, 0x8D, 0x3D, 0xC0, +0xA9, 0x20, 0x18, 0x65, 0xF6, 0xAA, 0xA0, 0x07, 0xB7, 0xF3, 0x8E, 0x3E, 0xC0, 0x8D, 0x3D, 0xC0, +0xA9, 0x40, 0x18, 0x65, 0xF6, 0xAA, 0xA0, 0x10, 0xB7, 0xF3, 0xF0, 0x06, 0x8E, 0x3E, 0xC0, 0x8D, +0x3D, 0xC0, 0xA9, 0x80, 0x18, 0x65, 0xF6, 0xA8, 0xA6, 0xF7, 0xB5, 0x0B, 0x48, 0x98, 0x6A, 0x68, +0x90, 0x03, 0x18, 0x75, 0x0D, 0xBB, 0x8E, 0x3E, 0xC0, 0x8D, 0x3D, 0xC0, 0xA9, 0xA0, 0x18, 0x65, +0xF6, 0x48, 0xA6, 0xF7, 0xB5, 0x01, 0x29, 0xF0, 0x09, 0x0F, 0xFA, 0x8E, 0x3E, 0xC0, 0x8D, 0x3D, +0xC0, 0xA6, 0xF7, 0xAB, 0x28, 0x60, 0x0B, 0xAF, 0xB8, 0x1D, 0xE1, 0x48, 0xAF, 0xB7, 0x1D, 0xE1, +0x48, 0x2B, 0xAF, 0xCC, 0x00, 0xE1, 0xE2, 0x30, 0x18, 0x6A, 0x29, 0x1F, 0x85, 0xF6, 0xC9, 0x1E, +0x90, 0x06, 0x22, 0x65, 0x46, 0xFF, 0x80, 0x10, 0xAA, 0xBF, 0x00, 0x41, 0xFF, 0xAA, 0xBF, 0x20, +0x41, 0xFF, 0xAA, 0x08, 0x20, 0x69, 0x46, 0x28, 0xE2, 0x20, 0xAF, 0xCA, 0x00, 0xE1, 0x8F, 0x3C, +0xC0, 0xE1, 0xA9, 0xE0, 0x8F, 0x3E, 0xC0, 0xE1, 0xAF, 0x3D, 0xC0, 0xE1, 0xAF, 0x3D, 0xC0, 0xE1, +0x10, 0xC4, 0x2B, 0x18, 0x6B, 0x5C, 0x48, 0x01, 0xE1, 0xB5, 0x00, 0xF0, 0x47, 0x29, 0x0F, 0xC9, +0x01, 0xD0, 0x42, 0xB5, 0x00, 0x10, 0x43, 0xC2, 0x20, 0xB5, 0x07, 0x15, 0x08, 0xF0, 0x2E, 0xB5, +0x00, 0x29, 0x7F, 0xFF, 0x48, 0xB5, 0x09, 0x29, 0xFF, 0x00, 0x48, 0xB5, 0x07, 0x48, 0xA9, 0x00, +0x00, 0x95, 0x00, 0x3B, 0x38, 0xE9, 0x09, 0x00, 0x1B, 0x20, 0x56, 0x44, 0x3B, 0x18, 0x69, 0x0F, +0x00, 0x1B, 0xE2, 0x20, 0xA9, 0x03, 0x95, 0x0F, 0x20, 0xBA, 0x46, 0x80, 0x07, 0xE2, 0x20, 0xA9, +0x01, 0x20, 0x4D, 0x47, 0x60, 0x22, 0xBD, 0x1D, 0xE1, 0x60, 0xA9, 0x60, 0x0F, 0xCA, 0x00, 0xE1, +0x8F, 0x3C, 0xC0, 0xE1, 0xA5, 0xF6, 0xC2, 0x30, 0x6A, 0xB5, 0x0A, 0x90, 0x03, 0x18, 0x75, 0x0C, +0x8F, 0x3E, 0xC0, 0xE1, 0x08, 0xB5, 0x02, 0x85, 0xF0, 0xB5, 0x03, 0x85, 0xF1, 0xB5, 0x0C, 0xEB, +0x85, 0xF8, 0xA0, 0x00, 0x00, 0xB5, 0x05, 0xF0, 0x21, 0xE2, 0x30, 0xB7, 0xF0, 0x8F, 0x3D, 0xC0, +0xE1, 0xC8, 0xD0, 0xF7, 0xC2, 0x20, 0xE6, 0xF1, 0xD6, 0x05, 0xF0, 0x0E, 0xC6, 0xF8, 0xD0, 0xE9, +0xA5, 0xF0, 0x95, 0x02, 0xA5, 0xF1, 0x95, 0x03, 0x80, 0x2B, 0xA5, 0xF8, 0x3A, 0xF0, 0x0D, 0xE2, +0x30, 0xA9, 0x00, 0xA0, 0x40, 0x8F, 0x3D, 0xC0, 0xE1, 0x88, 0xD0, 0xF9, 0xE2, 0x20, 0xA9, 0x80, +0x15, 0x00, 0x95, 0x00, 0xC2, 0x20, 0xB5, 0x07, 0x15, 0x08, 0xD0, 0x09, 0xE2, 0x20, 0xA9, 0x03, +0x20, 0x4D, 0x47, 0x80, 0x16, 0xE2, 0x20, 0xA5, 0xF6, 0x29, 0x01, 0x18, 0xD0, 0x01, 0x38, 0x2A, +0x35, 0x0F, 0xF0, 0x07, 0x55, 0x0F, 0x95, 0x0F, 0x20, 0x84, 0x45, 0x28, 0x60, 0x48, 0xA9, 0x00, +0x0F, 0xCA, 0x00, 0xE1, 0x8F, 0x3C, 0xC0, 0xE1, 0x18, 0xA5, 0xF6, 0x69, 0xA0, 0x8F, 0x3E, 0xC0, +0xE1, 0x68, 0x8F, 0x3D, 0xC0, 0xE1, 0x60, 0x08, 0x78, 0xA3, 0x08, 0xC9, 0x0F, 0x00, 0xB0, 0x43, +0xAA, 0xBF, 0xF0, 0x40, 0xFF, 0x29, 0xFF, 0x00, 0x69, 0xA0, 0x00, 0xAA, 0xA8, 0xE2, 0x20, 0x22, +0xA3, 0x40, 0xFF, 0x83, 0x0A, 0x22, 0xAF, 0x40, 0xFF, 0x29, 0x01, 0x23, 0x0A, 0xF0, 0x19, 0xA2, +0x08, 0x00, 0xCA, 0xD0, 0xFD, 0xBB, 0x22, 0xA3, 0x40, 0xFF, 0x83, 0x0A, 0x22, 0xAF, 0x40, 0xFF, +0x29, 0x01, 0x23, 0x0A, 0xF0, 0x02, 0xA9, 0xFF, 0x83, 0x0A, 0x83, 0x0B, 0x28, 0xA0, 0x02, 0x00, +0x4C, 0x55, 0x3E, 0x28, 0xA2, 0x13, 0x00, 0xA0, 0x02, 0x00, 0x4C, 0x5B, 0x3E, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x4C, 0x0C, 0x48, 0x4C, 0x65, 0x49, 0x4C, 0x52, 0x4F, 0x4C, 0xC8, 0x52, 0x5A, 0x48, 0x8E, 0xF8, +0x07, 0x20, 0x3C, 0x4F, 0xBF, 0x82, 0x00, 0xE1, 0x08, 0xA9, 0xFF, 0x70, 0x01, 0x1A, 0x9F, 0x82, +0x00, 0xE1, 0x28, 0x50, 0x1C, 0xD0, 0x03, 0x20, 0x28, 0x54, 0xE4, 0x37, 0xD0, 0x0B, 0xA9, 0x07, +0xC5, 0x36, 0xF0, 0x05, 0x85, 0x36, 0x18, 0x80, 0x08, 0xE4, 0x39, 0xD0, 0xF9, 0xA9, 0x05, 0x85, +0x38, 0xB0, 0x03, 0x4C, 0xC2, 0x48, 0x68, 0x2C, 0x1F, 0xC0, 0x30, 0x04, 0xA4, 0x24, 0x91, 0x28, +0xEB, 0xAD, 0x15, 0xC0, 0x48, 0x8D, 0x07, 0xC0, 0xEB, 0x80, 0x2D, 0x3C, 0xB8, 0x04, 0x50, 0x1C, +0x20, 0xEB, 0x49, 0x80, 0x23, 0x68, 0x20, 0xFC, 0xCE, 0x10, 0x20, 0x20, 0x7D, 0x4B, 0xB0, 0xEB, +0x29, 0x5F, 0xC9, 0x51, 0xF0, 0x04, 0xC9, 0x52, 0xD0, 0x0E, 0xA9, 0x98, 0x7A, 0x30, 0x03, 0x8D, +0x06, 0xC0, 0x7A, 0x6B, 0x18, 0x20, 0x1D, 0x4E, 0x20, 0xC9, 0xCE, 0x48, 0x20, 0xE6, 0x4A, 0xB0, +0x09, 0xBD, 0x38, 0x07, 0x29, 0x10, 0xF0, 0xCD, 0x80, 0xF2, 0xA8, 0x68, 0x5A, 0x20, 0xE7, 0xCD, +0x68, 0xBC, 0x38, 0x04, 0xF0, 0x12, 0x09, 0x80, 0xC9, 0x91, 0xF0, 0xDC, 0xC9, 0xFF, 0xF0, 0xD8, +0xC9, 0x92, 0xF0, 0xD0, 0xC9, 0x94, 0xF0, 0xCD, 0x3C, 0xB8, 0x04, 0x50, 0xBF, 0x20, 0x94, 0xF8, +0x80, 0xC6, 0xBD, 0x38, 0x07, 0x0A, 0x7A, 0x5A, 0xBD, 0x38, 0x05, 0x89, 0x80, 0xD0, 0x61, 0xBD, +0x38, 0x06, 0x08, 0xA5, 0x24, 0x28, 0xB0, 0x23, 0xF0, 0x08, 0xDD, 0x38, 0x06, 0x90, 0x03, 0xBD, +0xB8, 0x06, 0xDD, 0xB8, 0x06, 0xB0, 0x10, 0xC9, 0x08, 0xF0, 0x04, 0xC9, 0x10, 0xD0, 0x12, 0x09, +0xF0, 0x3D, 0xB8, 0x06, 0x18, 0x65, 0x24, 0x85, 0x24, 0x80, 0x06, 0xC5, 0x21, 0x90, 0x02, 0x64, +0x24, 0xBD, 0xB8, 0x05, 0x89, 0x08, 0xF0, 0x15, 0xBD, 0x38, 0x06, 0xF0, 0x10, 0xBD, 0xB8, 0x06, +0xDD, 0x38, 0x06, 0x90, 0x08, 0xA9, 0x1A, 0xC0, 0x80, 0x6A, 0x20, 0x04, 0x4A, 0x7A, 0x5A, 0xBD, +0xB8, 0x06, 0xC5, 0x24, 0xB0, 0x0A, 0xA9, 0x40, 0xC0, 0x80, 0x6A, 0x20, 0x04, 0x4A, 0x80, 0xD1, +0x98, 0x20, 0xE6, 0x49, 0x3C, 0x38, 0x07, 0x30, 0x29, 0xBD, 0x38, 0x06, 0xF0, 0x10, 0x38, 0xBD, +0xB8, 0x06, 0xFD, 0x38, 0x06, 0xC9, 0xF8, 0x90, 0x05, 0x18, 0x65, 0x21, 0x80, 0x0A, 0xBD, 0x38, +0x05, 0x29, 0x08, 0xF0, 0x03, 0xBD, 0xB8, 0x06, 0x85, 0x24, 0x2C, 0x1F, 0xC0, 0x10, 0x03, 0x8D, +0x7B, 0x05, 0x68, 0x7A, 0x6B, 0x20, 0x40, 0x4F, 0x8E, 0xF8, 0x07, 0xEB, 0x98, 0x48, 0x29, 0xF0, +0xA8, 0x68, 0x29, 0x07, 0x5A, 0xEB, 0x48, 0xEB, 0x3A, 0xD0, 0x3F, 0x68, 0x48, 0x4A, 0xD0, 0x60, +0xBD, 0xB8, 0x05, 0x89, 0x40, 0xF0, 0x16, 0x8B, 0xB0, 0x06, 0x38, 0x20, 0xB1, 0x53, 0x80, 0x04, +0x18, 0x20, 0x9B, 0x53, 0xE2, 0x30, 0x38, 0xD0, 0x01, 0x18, 0xAB, 0x80, 0x31, 0xB0, 0x0C, 0xBD, +0x38, 0x07, 0x89, 0x02, 0xD0, 0x28, 0x20, 0xB2, 0x4A, 0x80, 0x23, 0x89, 0x10, 0xD0, 0x1F, 0x20, +0x7A, 0xC1, 0x4A, 0x90, 0x19, 0x20, 0xDA, 0x55, 0x80, 0x14, 0x3A, 0xD0, 0x07, 0x68, 0x48, 0x20, +0xE6, 0x49, 0x80, 0x0A, 0x3A, 0xD0, 0x0C, 0x68, 0x20, 0xE6, 0x4A, 0x90, 0xFB, 0x48, 0x68, 0x7A, +0xA2, 0x00, 0x6B, 0x20, 0x28, 0x54, 0xBD, 0x38, 0x07, 0x29, 0xBF, 0x9D, 0x38, 0x07, 0x80, 0xEE, +0xA2, 0x40, 0x68, 0x7A, 0x18, 0x6B, 0x20, 0x7D, 0x4B, 0x90, 0x4F, 0x3C, 0x38, 0x07, 0x10, 0x14, +0xC9, 0x91, 0xF0, 0x10, 0xAC, 0x15, 0xC0, 0x5A, 0x8D, 0x07, 0xC0, 0x20, 0x97, 0xF8, 0x7A, 0x30, +0x03, 0x8D, 0x06, 0xC0, 0xA8, 0xBD, 0xB8, 0x05, 0x89, 0x40, 0x08, 0x98, 0x28, 0xF0, 0x43, 0x08, +0x78, 0x48, 0x8B, 0x38, 0x20, 0x9B, 0x53, 0xE2, 0x30, 0xD0, 0x20, 0xAB, 0xBD, 0xB8, 0x05, 0x89, +0x02, 0xD0, 0x19, 0xBD, 0x38, 0x07, 0x89, 0x02, 0xD0, 0x12, 0xBF, 0xDE, 0x4D, 0xFF, 0xA8, 0xB9, +0xFD, 0xBF, 0x89, 0x04, 0xF0, 0x06, 0x68, 0x28, 0x80, 0x1F, 0x60, 0xAB, 0x68, 0x38, 0x20, 0xF6, +0x52, 0x90, 0x04, 0x28, 0x08, 0x80, 0xF6, 0x28, 0x48, 0x89, 0x60, 0xF0, 0x03, 0xFE, 0xB8, 0x06, +0x80, 0x49, 0x48, 0x20, 0xB2, 0x4A, 0x90, 0xFB, 0x68, 0x48, 0x89, 0x60, 0xF0, 0x03, 0xFE, 0xB8, +0x06, 0xBD, 0xB8, 0x05, 0x89, 0x40, 0xD0, 0x1C, 0xBF, 0xD5, 0x14, 0xE1, 0x30, 0x16, 0xBD, 0x38, +0x07, 0x89, 0x20, 0xF0, 0x0F, 0x20, 0x16, 0x4B, 0x90, 0x03, 0x20, 0xEB, 0x55, 0xBD, 0x38, 0x07, +0x29, 0x02, 0xD0, 0xCF, 0xBF, 0xDE, 0x4D, 0xFF, 0xA8, 0xBF, 0xD5, 0x14, 0xE1, 0x2A, 0x68, 0x48, +0x90, 0x06, 0x22, 0x2A, 0x10, 0xE1, 0x80, 0x03, 0x99, 0xFF, 0xBF, 0x3C, 0x38, 0x07, 0x49, 0x0D, +0x0A, 0xD0, 0x0D, 0x50, 0x06, 0xA9, 0x14, 0x6A, 0x20, 0x04, 0x4A, 0x64, 0x24, 0x9E, 0xB8, 0x06, +0x68, 0x60, 0x20, 0x7A, 0xC1, 0x18, 0x49, 0x2C, 0xEB, 0xBD, 0x38, 0x07, 0x89, 0x04, 0xF0, 0x06, +0xEB, 0x89, 0x20, 0xD0, 0x14, 0xEB, 0xBD, 0xB8, 0x05, 0x89, 0x20, 0xF0, 0x06, 0xEB, 0x89, 0x08, +0xD0, 0x07, 0xEB, 0xEB, 0x89, 0x04, 0xD0, 0x0D, 0x38, 0xBD, 0xB8, 0x05, 0x29, 0xFD, 0xB0, 0x02, +0x09, 0x02, 0x9D, 0xB8, 0x05, 0x60, 0xBD, 0xB8, 0x05, 0x89, 0x40, 0xF0, 0x16, 0x18, 0x20, 0x40, +0x53, 0x90, 0x2E, 0x50, 0x2C, 0x48, 0xBF, 0xDE, 0x4D, 0xFF, 0xA8, 0x18, 0x20, 0x2A, 0x52, 0x68, +0x38, 0x80, 0x1E, 0xBD, 0xB8, 0x05, 0x89, 0x10, 0xF0, 0x0C, 0x29, 0xEF, 0x9D, 0xB8, 0x05, 0xBF, +0xD7, 0x14, 0xE1, 0x38, 0x80, 0x0B, 0x20, 0x7A, 0xC1, 0x29, 0x01, 0x18, 0xF0, 0x03, 0x20, 0x24, +0x4B, 0x60, 0x00, 0x80, 0xBF, 0xD5, 0x14, 0xE1, 0x10, 0x06, 0x22, 0x2E, 0x10, 0xE1, 0x80, 0x08, +0x20, 0x61, 0x4B, 0x90, 0x2B, 0xB9, 0xFF, 0xBF, 0x48, 0x09, 0x80, 0xA8, 0xBD, 0x38, 0x07, 0x89, +0x08, 0xD0, 0x04, 0xC0, 0x8A, 0xF0, 0x12, 0x89, 0x20, 0xF0, 0x10, 0xC0, 0x91, 0xD0, 0x04, 0x29, +0xFD, 0x80, 0x06, 0xC0, 0x93, 0xD0, 0x04, 0x09, 0x02, 0x18, 0xB0, 0x38, 0x9D, 0x38, 0x07, 0x68, +0x60, 0x38, 0xBD, 0x38, 0x05, 0x29, 0x02, 0xD0, 0x13, 0xA9, 0x01, 0x20, 0xCE, 0x55, 0x29, 0x50, +0xF0, 0x0A, 0x1D, 0x38, 0x05, 0x9D, 0x38, 0x05, 0xB9, 0xFF, 0xBF, 0x18, 0x60, 0x48, 0x3C, 0xB8, +0x04, 0x30, 0x1F, 0xBC, 0x38, 0x05, 0x30, 0x17, 0x5D, 0x38, 0x04, 0x0A, 0xD0, 0x11, 0xAF, 0x34, +0x01, 0xE1, 0x8F, 0x8B, 0x15, 0xE1, 0xA9, 0xBF, 0x8F, 0x34, 0x01, 0xE1, 0x4C, 0xB7, 0x4C, 0x38, +0x68, 0x60, 0xEB, 0xBF, 0xDE, 0x4D, 0xFF, 0xA8, 0xEB, 0x29, 0x5F, 0x48, 0xBD, 0xB8, 0x04, 0x89, +0x08, 0xD0, 0x03, 0x68, 0x80, 0x5F, 0x68, 0x48, 0xC9, 0x00, 0xD0, 0x04, 0x18, 0x68, 0x80, 0xE0, +0xBD, 0xB8, 0x04, 0x48, 0x29, 0x07, 0x9D, 0xB8, 0x03, 0x68, 0x29, 0xF0, 0x9D, 0xB8, 0x04, 0x68, +0xDA, 0x48, 0xBD, 0xB8, 0x03, 0xAA, 0x68, 0xC9, 0x45, 0xD0, 0x03, 0x4C, 0x5F, 0x4C, 0xC9, 0x44, +0xF0, 0x7F, 0xFA, 0xDA, 0xDD, 0x38, 0x04, 0x08, 0x48, 0xBD, 0xB8, 0x03, 0xAA, 0x68, 0x28, 0xF0, +0x15, 0xC9, 0x0D, 0xF0, 0x1A, 0xFA, 0xAF, 0x8B, 0x15, 0xE1, 0x8F, 0x34, 0x01, 0xE1, 0x1E, 0xB8, +0x04, 0x5E, 0xB8, 0x04, 0x80, 0x99, 0xFA, 0xDA, 0xFE, 0xB8, 0x04, 0xBD, 0xB8, 0x03, 0xAA, 0xBF, +0x97, 0x4E, 0xFF, 0x80, 0x0C, 0xDA, 0xA2, 0x07, 0xDF, 0x97, 0x4E, 0xFF, 0xF0, 0x73, 0xCA, 0x10, +0xF7, 0xA2, 0x0C, 0xDF, 0x8A, 0x4E, 0xFF, 0xD0, 0x03, 0x4C, 0xAE, 0x4C, 0xCA, 0x10, 0xF4, 0xFA, +0x68, 0x48, 0x29, 0x7F, 0xC9, 0x20, 0xB0, 0x03, 0x9D, 0x38, 0x04, 0x49, 0x30, 0xC9, 0x0A, 0xB0, +0x38, 0xA0, 0x0A, 0x6F, 0x8A, 0x15, 0xE1, 0x88, 0xD0, 0xF9, 0x48, 0xA9, 0x80, 0x1D, 0xB8, 0x05, +0x9D, 0xB8, 0x05, 0x68, 0x80, 0x73, 0xA9, 0x4C, 0x28, 0xB0, 0xC6, 0xA9, 0x4B, 0x80, 0xC2, 0x38, +0x90, 0x18, 0x08, 0xE0, 0x00, 0xF0, 0xEF, 0xE0, 0x07, 0xD0, 0x03, 0x4C, 0x52, 0x4E, 0xE0, 0x06, +0xF0, 0x5E, 0xE0, 0x05, 0xF0, 0x78, 0x4C, 0xE1, 0x4C, 0xBD, 0xB8, 0x04, 0x4A, 0xB0, 0x38, 0xAF, +0x8B, 0x15, 0xE1, 0x8F, 0x34, 0x01, 0xE1, 0x08, 0x1E, 0xB8, 0x04, 0x28, 0x7E, 0xB8, 0x04, 0x68, +0x60, 0xC9, 0x42, 0xD0, 0x0C, 0x8A, 0xFA, 0xDA, 0x48, 0xBD, 0xB8, 0x05, 0xFA, 0x89, 0x80, 0xD0, +0x0D, 0x8A, 0xFA, 0x1D, 0xB8, 0x04, 0x09, 0x08, 0x9D, 0xB8, 0x04, 0x38, 0x80, 0xD9, 0xA9, 0x4D, +0x48, 0xBF, 0x63, 0x4E, 0xFF, 0x48, 0x60, 0xBD, 0xB8, 0x04, 0x29, 0xC0, 0x9D, 0xB8, 0x04, 0xBD, +0xB8, 0x05, 0x29, 0x7F, 0x9D, 0xB8, 0x05, 0xA9, 0x00, 0x8F, 0x8A, 0x15, 0xE1, 0x38, 0x80, 0xB7, +0x28, 0xFA, 0xA9, 0xF7, 0x3D, 0xB8, 0x05, 0x90, 0x02, 0x09, 0x08, 0x9D, 0xB8, 0x05, 0x4C, 0x79, +0x4C, 0x8A, 0x18, 0x0A, 0x69, 0x03, 0xAA, 0x28, 0xB0, 0x01, 0xE8, 0x4C, 0x31, 0x4D, 0x28, 0xFA, +0x08, 0x78, 0xBF, 0xDE, 0x4D, 0xFF, 0xA8, 0xBD, 0xB8, 0x05, 0x29, 0xBF, 0x90, 0x02, 0x09, 0x40, +0x9D, 0xB8, 0x05, 0x20, 0xDE, 0x52, 0x28, 0x90, 0x08, 0xDA, 0x20, 0xBC, 0x53, 0x20, 0xC4, 0x51, +0xFA, 0x4C, 0x41, 0x4D, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x9E, 0x38, 0x06, 0xA9, 0x80, 0x1D, 0x38, +0x05, 0x9D, 0x38, 0x05, 0x80, 0x1B, 0x7A, 0xAF, 0x8A, 0x15, 0xE1, 0xF0, 0x05, 0x99, 0x38, 0x06, +0xF0, 0x7A, 0xB9, 0x38, 0x07, 0x3F, 0x70, 0x4E, 0xFF, 0x1F, 0x7D, 0x4E, 0xFF, 0x99, 0x38, 0x07, +0xBB, 0x4C, 0x79, 0x4C, 0xAF, 0x8A, 0x15, 0xE1, 0xBB, 0x5F, 0x55, 0x15, 0xE1, 0x29, 0x03, 0x5F, +0x55, 0x15, 0xE1, 0x9F, 0x55, 0x15, 0xE1, 0xFA, 0xDA, 0x20, 0x7A, 0xC2, 0xFA, 0x80, 0xE2, 0xAF, +0x8A, 0x15, 0xE1, 0x48, 0x29, 0x03, 0x49, 0x03, 0xAA, 0xBF, 0x09, 0x55, 0xFF, 0xBB, 0x5F, 0x53, +0x15, 0xE1, 0x29, 0xC0, 0x5F, 0x53, 0x15, 0xE1, 0x9F, 0x53, 0x15, 0xE1, 0x4A, 0x5F, 0x57, 0x15, +0xE1, 0x29, 0x60, 0x5F, 0x57, 0x15, 0xE1, 0x9F, 0x57, 0x15, 0xE1, 0x68, 0x0A, 0xBB, 0x5F, 0x55, +0x15, 0xE1, 0x29, 0x08, 0x80, 0xB9, 0xAF, 0x8A, 0x15, 0xE1, 0xD0, 0x03, 0x20, 0xFD, 0x54, 0x20, +0x03, 0x55, 0x80, 0xB3, 0xFA, 0xDA, 0xBF, 0xD5, 0x14, 0xE1, 0x30, 0x24, 0xBB, 0xBF, 0x57, 0x15, +0xE1, 0x48, 0x09, 0x10, 0xA2, 0x05, 0x20, 0xC1, 0x55, 0x18, 0xA2, 0xF7, 0xA9, 0xF3, 0x3A, 0xD0, +0xFD, 0x6A, 0x49, 0x80, 0x2A, 0xB0, 0xF5, 0xCA, 0xD0, 0xF2, 0x68, 0xA2, 0x05, 0x20, 0xC1, 0x55, +0xFA, 0x4C, 0x41, 0x4D, 0x18, 0xB0, 0x38, 0xFA, 0x20, 0x1D, 0x4E, 0x4C, 0x79, 0x4C, 0xFA, 0xDA, +0xAD, 0x15, 0xC0, 0x48, 0x8D, 0x07, 0xC0, 0xBD, 0x38, 0x05, 0x29, 0x04, 0xF0, 0x16, 0x18, 0x20, +0x1D, 0x4E, 0xAD, 0x1F, 0xC0, 0x0A, 0x20, 0x59, 0xCF, 0xB0, 0x09, 0x20, 0x2C, 0xFB, 0xA9, 0xFF, +0x8F, 0x8B, 0x15, 0xE1, 0x68, 0x30, 0x03, 0x8D, 0x06, 0xC0, 0xFA, 0xDA, 0xBD, 0xB8, 0x05, 0x29, +0x40, 0xF0, 0xBD, 0x20, 0xDE, 0x52, 0xFA, 0xDA, 0x20, 0xE9, 0x4E, 0x80, 0xB3, 0xBD, 0xB8, 0x04, +0x89, 0x40, 0x90, 0x16, 0xD0, 0x2B, 0xE4, 0x39, 0xD0, 0x27, 0x09, 0x40, 0x48, 0xAF, 0x8B, 0x15, +0xE1, 0x8F, 0x8C, 0x15, 0xE1, 0x68, 0xA0, 0xDF, 0x80, 0x0B, 0xF0, 0x15, 0x29, 0xBF, 0x48, 0xAF, +0x8C, 0x15, 0xE1, 0xA8, 0x68, 0x9D, 0xB8, 0x04, 0x98, 0x8F, 0x8B, 0x15, 0xE1, 0x8F, 0x34, 0x01, +0xE1, 0x60, 0x28, 0xFA, 0xA9, 0xF7, 0x3D, 0x38, 0x05, 0x90, 0x02, 0x09, 0x08, 0x9D, 0x38, 0x05, +0x4C, 0x79, 0x4C, 0x30, 0x30, 0x30, 0x25, 0x25, 0x95, 0x5E, 0x43, 0xD3, 0xDD, 0xA3, 0xD5, 0x17, +0x7F, 0xBF, 0xBF, 0x7F, 0xFF, 0xDF, 0xDF, 0xEF, 0xEF, 0xF7, 0xF7, 0x7F, 0x7F, 0x80, 0x00, 0x40, +0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x08, 0x80, 0x00, 0x49, 0x4B, 0x4C, 0x4E, 0x0D, 0x42, +0x44, 0x50, 0x51, 0x52, 0x53, 0x54, 0x5A, 0x4C, 0x58, 0x46, 0x4D, 0x45, 0x42, 0x43, 0x41, 0x3C, +0x3B, 0xDA, 0xF4, 0x00, 0x00, 0xF4, 0x00, 0x80, 0xA2, 0x03, 0x20, 0x22, 0x00, 0x00, 0xE1, 0x68, +0xFA, 0x08, 0xE0, 0xC1, 0x00, 0xF0, 0x01, 0xE8, 0x9F, 0x08, 0x15, 0xE1, 0x28, 0xB0, 0x29, 0xA2, +0x00, 0x00, 0xDA, 0xDA, 0xDA, 0xF4, 0x00, 0x10, 0x48, 0xF4, 0x08, 0x40, 0xDA, 0xDA, 0xA2, 0x02, +0x09, 0x22, 0x00, 0x00, 0xE1, 0xFA, 0x68, 0xB0, 0x0F, 0x8B, 0xEB, 0x48, 0xAB, 0xAB, 0xBD, 0x00, +0x00, 0x48, 0xBD, 0x02, 0x00, 0xAA, 0x68, 0xAB, 0x60, 0x8B, 0xF4, 0xE1, 0xE1, 0xAB, 0xAB, 0x18, +0x20, 0x18, 0x54, 0xC2, 0x30, 0xDA, 0xA9, 0x00, 0x00, 0x48, 0x48, 0xB9, 0xDA, 0x1D, 0x48, 0xB9, +0xD8, 0x1D, 0x48, 0xA2, 0x02, 0x1A, 0x22, 0x00, 0x00, 0xE1, 0xA3, 0x01, 0x03, 0x03, 0x38, 0xF0, +0x1F, 0xA2, 0x02, 0x10, 0x22, 0x00, 0x00, 0xE1, 0xB0, 0x16, 0xFA, 0xDA, 0xE0, 0xC1, 0x00, 0xF0, +0x01, 0xE8, 0xBF, 0x08, 0x15, 0xE1, 0x48, 0xA2, 0x03, 0x21, 0x22, 0x00, 0x00, 0xE1, 0x80, 0x02, +0xFA, 0x68, 0xFA, 0xE2, 0x30, 0xB0, 0x03, 0x9E, 0x3D, 0x0F, 0xAB, 0x60, 0x08, 0x38, 0x80, 0x02, +0x08, 0x18, 0x48, 0xBD, 0x38, 0x05, 0x29, 0xFB, 0x90, 0x02, 0x09, 0x04, 0x9D, 0x38, 0x05, 0x68, +0x28, 0x60, 0x8B, 0xEB, 0xA5, 0x00, 0x48, 0xA5, 0x01, 0x48, 0xA5, 0x02, 0x48, 0xEB, 0x85, 0x00, +0x86, 0x01, 0x84, 0x02, 0xA0, 0x01, 0xB7, 0x00, 0xC9, 0x19, 0xB0, 0x5D, 0x4A, 0xAA, 0xBF, 0xE0, +0x4F, 0xFF, 0xA0, 0x00, 0x57, 0x00, 0xD0, 0x13, 0xBF, 0x03, 0x50, 0xFF, 0x48, 0xBF, 0xF6, 0x4F, +0xFF, 0x48, 0xAE, 0xF8, 0x07, 0xBF, 0xDE, 0x4D, 0xFF, 0xA8, 0x60, 0xA9, 0x01, 0x80, 0x3C, 0xA0, +0x04, 0xBD, 0x38, 0x07, 0x90, 0x02, 0xB7, 0x00, 0x9D, 0x38, 0x07, 0x97, 0x00, 0xC8, 0xBD, 0xB8, +0x05, 0x90, 0x02, 0xB7, 0x00, 0x9D, 0xB8, 0x05, 0x97, 0x00, 0xC8, 0xBD, 0x38, 0x05, 0x90, 0x02, +0xB7, 0x00, 0x9D, 0x38, 0x05, 0x97, 0x00, 0xC8, 0xBD, 0xB8, 0x04, 0x90, 0x02, 0xB7, 0x00, 0x9D, +0xB8, 0x04, 0x97, 0x00, 0x18, 0xA9, 0x00, 0x80, 0x03, 0xA9, 0x02, 0x38, 0xA0, 0x02, 0x97, 0x00, +0xC8, 0xA9, 0x00, 0x97, 0x00, 0x68, 0x85, 0x02, 0x68, 0x85, 0x01, 0x68, 0x85, 0x00, 0xAB, 0x6B, +0x03, 0x00, 0x00, 0x03, 0x04, 0x03, 0x03, 0x00, 0x04, 0x04, 0x02, 0x04, 0x04, 0x00, 0x00, 0x00, +0x03, 0x03, 0x03, 0x03, 0x04, 0x00, 0x8E, 0xC8, 0xC8, 0x89, 0x99, 0xAF, 0x77, 0xC8, 0x16, 0x0F, +0x4A, 0x50, 0x8D, 0x4F, 0x4F, 0x4F, 0xC2, 0xC2, 0xC2, 0x50, 0x4F, 0x50, 0x50, 0x50, 0x50, 0xC1, +0x20, 0x35, 0x50, 0xE2, 0x40, 0x80, 0x04, 0xB8, 0x20, 0x18, 0x54, 0xBB, 0xA0, 0x04, 0xBF, 0xD8, +0x1D, 0xE1, 0x50, 0x02, 0xB7, 0x00, 0x9F, 0xD8, 0x1D, 0xE1, 0x97, 0x00, 0xE8, 0xC8, 0xC0, 0x0A, +0x90, 0xEC, 0x4C, 0xC4, 0x4F, 0x20, 0x18, 0x54, 0xDA, 0xBB, 0xC2, 0x20, 0xA9, 0x00, 0x00, 0x9F, +0xDE, 0x1D, 0xE1, 0x9F, 0xE0, 0x1D, 0xE1, 0xE2, 0x20, 0xFA, 0x60, 0x20, 0x35, 0x50, 0x4C, 0xC4, +0x4F, 0xB0, 0x05, 0x20, 0x9B, 0x53, 0x80, 0x03, 0x20, 0xB1, 0x53, 0xA0, 0x04, 0x00, 0x97, 0x00, +0xC8, 0xC8, 0xAF, 0xDC, 0x00, 0xE1, 0xE0, 0xC2, 0x00, 0x90, 0x01, 0xE8, 0x38, 0xFF, 0xD9, 0x14, +0xE1, 0x97, 0x00, 0xE2, 0x30, 0x4C, 0xC4, 0x4F, 0x5A, 0xDA, 0x08, 0xA0, 0x08, 0xA9, 0x03, 0xE0, +0xC1, 0xF0, 0x02, 0xA9, 0x07, 0xAA, 0x28, 0x08, 0xB7, 0x00, 0xB0, 0x04, 0xBF, 0xC1, 0x15, 0xE1, +0x97, 0x00, 0x9F, 0xC1, 0x15, 0xE1, 0xCA, 0x88, 0xC0, 0x06, 0x10, 0xEA, 0xA9, 0x5C, 0x9F, 0xC1, +0x15, 0xE1, 0x28, 0xFA, 0xB0, 0x08, 0x7A, 0xBF, 0xE1, 0x14, 0xE1, 0x4C, 0xCA, 0xC2, 0xA0, 0x04, +0xB7, 0x00, 0x9F, 0xDD, 0x14, 0xE1, 0x29, 0xEA, 0x7A, 0x48, 0xA9, 0x0F, 0xAA, 0x20, 0xCE, 0x55, +0x03, 0x01, 0xAB, 0x4C, 0xC5, 0xC2, 0xAD, 0x68, 0xC0, 0x48, 0x29, 0x8F, 0x8D, 0x68, 0xC0, 0x9C, +0xA2, 0x15, 0x9C, 0xA3, 0x15, 0x8B, 0xF4, 0x00, 0x00, 0xAB, 0xAB, 0xA2, 0xC1, 0xBF, 0xDE, 0x4D, +0xFF, 0xA8, 0xA9, 0x03, 0x20, 0xCE, 0x55, 0x2F, 0x04, 0x01, 0xE1, 0xC9, 0x08, 0xB0, 0x21, 0xE8, +0x88, 0xC9, 0x00, 0xD0, 0x1E, 0xAF, 0xA2, 0x15, 0xE1, 0xF0, 0x04, 0x22, 0xC1, 0x15, 0xE1, 0xAF, +0xA3, 0x15, 0xE1, 0xF0, 0x04, 0x22, 0xC5, 0x15, 0xE1, 0x18, 0xAB, 0x68, 0x8D, 0x68, 0xC0, 0x6B, +0x4A, 0x4A, 0x4A, 0xEB, 0xBD, 0xB8, 0x05, 0x89, 0x40, 0x38, 0xF0, 0xEE, 0xB9, 0xFD, 0xBF, 0x48, +0x5F, 0xDF, 0x14, 0xE1, 0x3F, 0xDD, 0x14, 0xE1, 0x1F, 0xE1, 0x14, 0xE1, 0x9F, 0xE1, 0x14, 0xE1, +0x68, 0x29, 0xFA, 0x9F, 0xDF, 0x14, 0xE1, 0xEB, 0x4A, 0x90, 0x26, 0xA9, 0x0F, 0x20, 0xCE, 0x55, +0x29, 0xFD, 0xDA, 0xA2, 0x0F, 0x20, 0xC1, 0x55, 0xFA, 0x20, 0xB2, 0x4A, 0xA9, 0x10, 0x99, 0xFD, +0xBF, 0xBD, 0x38, 0x07, 0x89, 0x02, 0xD0, 0x83, 0xB9, 0xFD, 0xBF, 0x89, 0x04, 0xF0, 0x2A, 0x80, +0x03, 0x4A, 0x90, 0x2D, 0xA9, 0x28, 0x99, 0xFD, 0xBF, 0xBD, 0xB8, 0x05, 0x89, 0x02, 0xD0, 0x19, +0xBD, 0x38, 0x07, 0x89, 0x02, 0xD0, 0x12, 0x38, 0x20, 0x40, 0x53, 0xB0, 0x0F, 0xBD, 0xB8, 0x05, +0x89, 0x01, 0xF0, 0x05, 0x20, 0x91, 0x52, 0xD0, 0xC8, 0x4C, 0xDB, 0x50, 0x99, 0xFF, 0xBF, 0x80, +0xF8, 0x5A, 0x20, 0x24, 0x4B, 0x7A, 0x90, 0x23, 0x18, 0x20, 0xF6, 0x52, 0xB0, 0x1D, 0xDA, 0xE0, +0xC2, 0x90, 0x01, 0xE8, 0xAF, 0xDC, 0x00, 0xE1, 0x9F, 0xD9, 0x14, 0xE1, 0xAF, 0xDD, 0x00, 0xE1, +0x9F, 0xDA, 0x14, 0xE1, 0xFA, 0x50, 0x04, 0x38, 0x20, 0x2A, 0x52, 0xB9, 0xFD, 0xBF, 0x4A, 0xB0, +0xD0, 0x4C, 0x51, 0x51, 0xBF, 0xD5, 0x14, 0xE1, 0x10, 0x01, 0x60, 0xBF, 0xDE, 0x4D, 0xFF, 0xA8, +0xDA, 0xA9, 0x02, 0xA2, 0x09, 0x20, 0xC1, 0x55, 0xFA, 0xAF, 0x04, 0x01, 0xE1, 0xE0, 0xC2, 0x90, +0x04, 0x09, 0x07, 0x80, 0x02, 0x09, 0x38, 0x8F, 0x04, 0x01, 0xE1, 0xBD, 0xB8, 0x05, 0x89, 0x20, +0x08, 0xBD, 0x38, 0x07, 0x29, 0x04, 0xF0, 0x02, 0xA9, 0x20, 0x28, 0xF0, 0x02, 0x09, 0x08, 0x09, +0x02, 0xA2, 0x0F, 0x20, 0xC1, 0x55, 0xA9, 0x13, 0xA2, 0x01, 0x20, 0xC1, 0x55, 0x08, 0x78, 0xA9, +0xFF, 0x8F, 0x27, 0x00, 0xE1, 0xA9, 0x50, 0x8F, 0x26, 0x00, 0xE1, 0xA9, 0xC6, 0x8F, 0x25, 0x00, +0xE1, 0x28, 0x58, 0xA9, 0x0A, 0xA2, 0x09, 0x4C, 0xC1, 0x55, 0xA9, 0x00, 0x90, 0x02, 0xA9, 0x04, +0x5D, 0xB8, 0x05, 0x29, 0x04, 0xF0, 0x3D, 0x5D, 0xB8, 0x05, 0x9D, 0xB8, 0x05, 0xDA, 0xBD, 0x38, +0x07, 0x48, 0x89, 0x04, 0xF0, 0x10, 0xBB, 0xBF, 0x57, 0x15, 0xE1, 0x49, 0x80, 0x9F, 0x57, 0x15, +0xE1, 0xA2, 0x05, 0x20, 0xC1, 0x55, 0x68, 0x89, 0x20, 0xF0, 0x18, 0x08, 0x78, 0xB9, 0xFD, 0xBF, +0x89, 0x04, 0xF0, 0xF9, 0xA9, 0x28, 0x99, 0xFD, 0xBF, 0xA9, 0x93, 0xB0, 0x02, 0xA9, 0x91, 0x99, +0xFF, 0xBF, 0x28, 0xFA, 0x60, 0xA0, 0x02, 0xE0, 0xC2, 0xBB, 0x90, 0x02, 0xA2, 0x05, 0x18, 0xBF, +0xA4, 0x15, 0xE1, 0xE9, 0x00, 0x48, 0xCA, 0x88, 0x10, 0xF5, 0xFA, 0x7A, 0x68, 0xDA, 0x5A, 0x48, +0x6B, 0x5A, 0xDA, 0x38, 0x20, 0x35, 0x50, 0xFA, 0xDA, 0x5A, 0xAF, 0xF8, 0x07, 0x00, 0x48, 0x22, +0x75, 0x52, 0xFF, 0x68, 0x8F, 0xF8, 0x07, 0x00, 0x8A, 0xFA, 0x9F, 0xE0, 0x1D, 0xE1, 0x98, 0x9F, +0xE1, 0x1D, 0xE1, 0x1F, 0xE0, 0x1D, 0xE1, 0xEB, 0xFA, 0x7A, 0xEB, 0xD0, 0x0A, 0x08, 0xBD, 0xB8, +0x05, 0x29, 0xFE, 0x9D, 0xB8, 0x05, 0x28, 0x60, 0xA2, 0xC1, 0xBF, 0xD5, 0x14, 0xE1, 0x30, 0x01, +0xE8, 0x38, 0x20, 0x40, 0x53, 0xB0, 0x06, 0x20, 0x91, 0x52, 0xD0, 0xEC, 0x18, 0x6B, 0xBF, 0xDE, +0x4D, 0xFF, 0xA8, 0xDA, 0x20, 0xB3, 0x55, 0xFA, 0xB9, 0xFF, 0xBF, 0xA9, 0xD0, 0x99, 0xFD, 0xBF, +0xA9, 0x28, 0x99, 0xFD, 0xBF, 0x60, 0xDA, 0x5A, 0x8B, 0x48, 0x48, 0x20, 0xB1, 0x53, 0xD0, 0x04, +0x68, 0x38, 0x80, 0x36, 0xFA, 0xE2, 0x40, 0x48, 0xB9, 0xDC, 0x1D, 0x4A, 0x4A, 0xC3, 0x01, 0x68, +0xB0, 0x01, 0xB8, 0x08, 0x78, 0x5A, 0x20, 0x82, 0x53, 0xB9, 0xE0, 0x1D, 0xA8, 0x8A, 0xE2, 0x20, +0x97, 0x00, 0xC2, 0x20, 0xC8, 0x98, 0x7A, 0x48, 0x20, 0x82, 0x53, 0x68, 0xD9, 0xDC, 0x1D, 0x90, +0x03, 0xA9, 0x00, 0x00, 0x99, 0xE0, 0x1D, 0x28, 0x18, 0x8A, 0xE2, 0x30, 0xAB, 0x7A, 0xFA, 0x60, +0xDA, 0x5A, 0x8B, 0x20, 0x9B, 0x53, 0xF0, 0x33, 0xE2, 0x40, 0x48, 0xB9, 0xDC, 0x1D, 0x4A, 0x4A, +0xC3, 0x01, 0x68, 0xB0, 0x01, 0xB8, 0x38, 0x08, 0x78, 0x20, 0x82, 0x53, 0x5A, 0xB9, 0xDE, 0x1D, +0xA8, 0xB7, 0x00, 0xAA, 0x98, 0x1A, 0x7A, 0x48, 0x20, 0x82, 0x53, 0x68, 0xD9, 0xDC, 0x1D, 0x90, +0x03, 0xA9, 0x00, 0x00, 0x99, 0xDE, 0x1D, 0x28, 0x8A, 0x80, 0x01, 0x18, 0xE2, 0x30, 0xAB, 0x7A, +0xFA, 0x60, 0xB9, 0xD8, 0x1D, 0x48, 0xA5, 0x00, 0x99, 0xD8, 0x1D, 0x68, 0x85, 0x00, 0xB9, 0xDA, +0x1D, 0x48, 0xA5, 0x02, 0x99, 0xDA, 0x1D, 0x68, 0x85, 0x02, 0x60, 0xA9, 0xE1, 0x48, 0xAB, 0x20, +0x18, 0x54, 0xC2, 0x30, 0xB9, 0xE0, 0x1D, 0x38, 0xF9, 0xDE, 0x1D, 0xB0, 0x03, 0x79, 0xDC, 0x1D, +0x60, 0x20, 0x9B, 0x53, 0x38, 0xF9, 0xDC, 0x1D, 0x49, 0xFF, 0xFF, 0x60, 0xDA, 0x8B, 0xF4, 0xE1, +0xE1, 0xAB, 0xAB, 0x18, 0x20, 0x18, 0x54, 0xBD, 0x3D, 0x0F, 0xD0, 0x3F, 0xFE, 0x3D, 0x0F, 0xC2, +0x30, 0x5A, 0x20, 0xA1, 0x4E, 0x7A, 0x08, 0x90, 0x0E, 0xA2, 0xE1, 0x00, 0xA9, 0x00, 0x1E, 0xC0, +0x00, 0x00, 0xF0, 0x03, 0xA9, 0x00, 0x1F, 0x99, 0xD8, 0x1D, 0x8A, 0x99, 0xDA, 0x1D, 0x28, 0xA9, +0x80, 0x00, 0xB0, 0x03, 0xA9, 0x00, 0x08, 0x99, 0xDC, 0x1D, 0x99, 0xE6, 0x1D, 0x18, 0x79, 0xD8, +0x1D, 0x99, 0xE2, 0x1D, 0x90, 0x01, 0xE8, 0x8A, 0x99, 0xE4, 0x1D, 0xE2, 0x30, 0xAB, 0xFA, 0x18, +0x20, 0x35, 0x50, 0x38, 0x20, 0x35, 0x50, 0x60, 0xEB, 0xA9, 0x00, 0x90, 0x02, 0xA9, 0x0A, 0xE0, +0xC2, 0x90, 0x02, 0x69, 0x13, 0xA8, 0xEB, 0x60, 0xDA, 0xBF, 0xDE, 0x4D, 0xFF, 0xA8, 0x20, 0x1E, +0x55, 0xBF, 0xD5, 0x14, 0xE1, 0x30, 0x09, 0xA9, 0x00, 0x20, 0xCE, 0x55, 0xC9, 0x40, 0xF0, 0xF7, +0xA2, 0x07, 0x20, 0xED, 0x54, 0x29, 0x01, 0x38, 0x2A, 0xEB, 0xA2, 0x08, 0x20, 0xED, 0x54, 0x49, +0x02, 0x4A, 0xEB, 0x2A, 0xEB, 0x4A, 0xEB, 0x2A, 0xBB, 0x09, 0x40, 0x9F, 0x55, 0x15, 0xE1, 0xA2, +0x07, 0x20, 0xED, 0x54, 0x4A, 0x29, 0x03, 0xAA, 0xBF, 0x09, 0x55, 0xFF, 0xBB, 0x9F, 0x53, 0x15, +0xE1, 0x4A, 0x09, 0x0A, 0x9F, 0x57, 0x15, 0xE1, 0x20, 0xFD, 0x54, 0xFA, 0xDA, 0x20, 0x2E, 0x55, +0xA9, 0x00, 0xA2, 0x0B, 0xEB, 0x20, 0xED, 0x54, 0x4A, 0xEB, 0x90, 0x04, 0x1F, 0x0D, 0x55, 0xFF, +0xCA, 0x10, 0xF1, 0x7A, 0x49, 0x08, 0x99, 0x38, 0x07, 0x29, 0x01, 0xD0, 0x02, 0xA9, 0x09, 0x99, +0x38, 0x04, 0xA2, 0x05, 0x20, 0xED, 0x54, 0xF0, 0x02, 0xA9, 0x40, 0xEB, 0xA2, 0x09, 0x20, 0xED, +0x54, 0x4A, 0xEB, 0x90, 0x02, 0x09, 0x20, 0xBB, 0x9D, 0xB8, 0x05, 0xA2, 0x01, 0x20, 0xED, 0x54, +0xAA, 0xBF, 0x19, 0x55, 0xFF, 0x99, 0x38, 0x06, 0xBB, 0x9E, 0xB8, 0x04, 0x9E, 0xB8, 0x06, 0xBD, +0x38, 0x05, 0x29, 0x04, 0x9D, 0x38, 0x05, 0xA9, 0x00, 0x9F, 0xDD, 0x14, 0xE1, 0xBD, 0xB8, 0x05, +0x89, 0x40, 0xF0, 0x08, 0xDA, 0x20, 0xBC, 0x53, 0x20, 0xC4, 0x51, 0xFA, 0x60, 0xAD, 0xF8, 0x07, +0x4A, 0x90, 0x05, 0xBF, 0xC0, 0x02, 0xE1, 0x60, 0xBF, 0xCC, 0x02, 0xE1, 0x60, 0xA2, 0x06, 0x20, +0xED, 0x54, 0x1A, 0xBB, 0x9F, 0x59, 0x15, 0xE1, 0x60, 0x01, 0x81, 0x41, 0xC1, 0x01, 0x00, 0x08, +0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x28, 0x48, 0x50, 0x84, 0xBF, 0xD5, +0x14, 0xE1, 0x30, 0xD8, 0xBB, 0xBF, 0x76, 0x55, 0xFF, 0xA2, 0x09, 0x4C, 0xC1, 0x55, 0xBF, 0xD5, +0x14, 0xE1, 0x30, 0xC8, 0xB9, 0xFD, 0xBF, 0xBB, 0xBF, 0x55, 0x15, 0xE1, 0xA2, 0x04, 0x20, 0xC1, +0x55, 0xBB, 0xA9, 0x00, 0xA2, 0x01, 0x20, 0xC1, 0x55, 0xBB, 0xBF, 0x53, 0x15, 0xE1, 0x48, 0x29, +0xFE, 0xA2, 0x03, 0x20, 0xC1, 0x55, 0xBB, 0xBF, 0x57, 0x15, 0xE1, 0x48, 0x29, 0xF7, 0xA2, 0x05, +0x20, 0xC1, 0x55, 0xA9, 0xD2, 0xC0, 0x3C, 0xF0, 0x02, 0xA9, 0x52, 0xA2, 0x0B, 0x20, 0xC1, 0x55, +0xBB, 0xBF, 0x59, 0x15, 0xE1, 0x29, 0x0F, 0xAA, 0xDA, 0xBF, 0xD7, 0xC2, 0xFF, 0xA2, 0x0C, 0x20, +0xC1, 0x55, 0xFA, 0xBF, 0xE7, 0xC2, 0xFF, 0xA2, 0x0D, 0x20, 0xC1, 0x55, 0xA2, 0x0E, 0xA9, 0x00, +0x20, 0xC1, 0x55, 0xA2, 0x0E, 0xA9, 0x01, 0x20, 0xC1, 0x55, 0x68, 0x09, 0x08, 0xA2, 0x05, 0x20, +0xC1, 0x55, 0x68, 0x09, 0x01, 0xA2, 0x03, 0x20, 0xC1, 0x55, 0xA9, 0x00, 0xA2, 0x0F, 0x4C, 0xC1, +0x55, 0x0A, 0x0A, 0xBF, 0xD5, 0x14, 0xE1, 0x30, 0x07, 0xA9, 0x00, 0xA2, 0x01, 0x20, 0xC1, 0x55, +0x60, 0x08, 0x78, 0x48, 0x8A, 0x99, 0xFD, 0xBF, 0x68, 0x99, 0xFD, 0xBF, 0x28, 0x60, 0x08, 0x78, +0x99, 0xFD, 0xBF, 0xB9, 0xFD, 0xBF, 0xEB, 0x28, 0xEB, 0x60, 0x20, 0x61, 0x4B, 0x90, 0x18, 0xBD, +0x38, 0x07, 0x89, 0x20, 0xF0, 0x11, 0x20, 0x24, 0x4B, 0x90, 0x0C, 0x9F, 0xD7, 0x14, 0xE1, 0xBD, +0xB8, 0x05, 0x09, 0x10, 0x9D, 0xB8, 0x05, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x20, 0xAF, 0x5D, 0x9C, 0x51, 0x0F, 0xA9, 0xA5, 0xCD, 0xB6, 0x0F, 0xF0, 0x23, 0x8D, 0xB6, 0x0F, +0xA9, 0x03, 0x20, 0xAE, 0x5F, 0x20, 0x52, 0x56, 0x38, 0x6E, 0x56, 0x0F, 0xA9, 0xFA, 0x8D, 0x26, +0x0F, 0x8D, 0x27, 0x0F, 0x20, 0x5D, 0x56, 0x20, 0x6B, 0x56, 0x20, 0xE0, 0x5D, 0x20, 0xAB, 0x64, +0x2C, 0x56, 0x0F, 0x30, 0x0C, 0xAE, 0x56, 0x0F, 0x8E, 0x28, 0x0F, 0x20, 0x16, 0x5E, 0x20, 0xCC, +0x5E, 0x20, 0x58, 0x58, 0x2C, 0xE8, 0xC0, 0x9C, 0x31, 0xC0, 0x18, 0xAD, 0x4B, 0x0F, 0xF0, 0x01, +0x38, 0x60, 0xA9, 0x04, 0x8D, 0x4F, 0x0F, 0xA9, 0x80, 0x8D, 0x50, 0x0F, 0x60, 0xA2, 0x41, 0xBF, +0x00, 0x58, 0xFF, 0x9F, 0x6D, 0x0F, 0xE1, 0xCA, 0x10, 0xF5, 0x60, 0xA2, 0x15, 0xBF, 0x42, 0x58, +0xFF, 0x9D, 0x57, 0x0F, 0xCA, 0x10, 0xF6, 0x60, 0xA9, 0x28, 0x38, 0x8D, 0x4B, 0x0F, 0x60, 0x20, +0xA4, 0x5C, 0xA9, 0x01, 0x85, 0x45, 0xA9, 0xFF, 0x8D, 0x51, 0x0F, 0x20, 0x7A, 0x59, 0xB0, 0x00, +0x60, 0x96, 0x19, 0x19, 0x19, 0x19, 0x00, 0x01, 0x98, 0x99, 0x02, 0x03, 0x9C, 0x04, 0x05, 0x06, +0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0x07, 0x08, 0xA8, 0xA9, 0xAA, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, +0xB0, 0xB1, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0xB8, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, +0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0x1B, 0xCC, 0x1C, 0x1D, 0x1E, +0xD0, 0xD1, 0xD2, 0x1F, 0xD4, 0xD5, 0x20, 0x21, 0xD8, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, +0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0x29, 0x2A, 0x2B, 0xE8, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, +0xF0, 0xF1, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0xF8, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, +0x96, 0x97, 0x9A, 0x9B, 0x9D, 0x9E, 0x9F, 0xA6, 0xA7, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB2, 0xB3, +0xB4, 0xB5, 0xB6, 0xB7, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, 0xCB, 0xCD, 0xCE, 0xCF, 0xD3, +0xD6, 0xD7, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE5, 0xE6, 0xE7, 0xE9, 0xEA, 0xEB, 0xEC, +0xED, 0xEE, 0xEF, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, +0x96, 0x97, 0x9A, 0x9B, 0x9D, 0x9E, 0x9F, 0xA6, 0xA7, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB2, 0xB3, +0xB4, 0xB5, 0xB6, 0xB7, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, 0xCB, 0xCD, 0xCE, 0xCF, 0xD3, +0xD6, 0xD7, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE5, 0xE6, 0xE7, 0xE9, 0xEA, 0xEB, 0xEC, +0xED, 0xEE, 0xEF, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, +0x96, 0x97, 0x9A, 0x9B, 0x9D, 0x9E, 0x9F, 0xA6, 0xA7, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB2, 0xB3, +0xB4, 0xB5, 0xB6, 0xB7, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, 0xCB, 0xCD, 0xCE, 0xCF, 0xD3, +0xD6, 0xD7, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE5, 0xE6, 0xE7, 0xE9, 0xEA, 0xEB, 0xEC, +0xED, 0xEE, 0xEF, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, +0x96, 0x97, 0x9A, 0x9B, 0x9D, 0x9E, 0x9F, 0xA6, 0xA7, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB2, 0xB3, +0xB4, 0xB5, 0xB6, 0xB7, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, 0xCB, 0xCD, 0xCE, 0xCF, 0xD3, +0xD6, 0xD7, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE5, 0xE6, 0xE7, 0xE9, 0xEA, 0xEB, 0xEC, +0xED, 0xEE, 0xEF, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, +0x40, 0x00, 0x5C, 0xC8, 0x61, 0xFF, 0x5C, 0xC8, 0x61, 0xFF, 0x5C, 0x44, 0x62, 0xFF, 0x5C, 0x44, +0x62, 0xFF, 0x5C, 0x9E, 0x63, 0xFF, 0x5C, 0x9E, 0x63, 0xFF, 0x5C, 0x29, 0x5E, 0xFF, 0x5C, 0x29, +0x5E, 0xFF, 0x5C, 0x37, 0x5A, 0xFF, 0x5C, 0x37, 0x5A, 0xFF, 0x5C, 0x8D, 0x5A, 0xFF, 0x5C, 0x8D, +0x5A, 0xFF, 0x5C, 0xFC, 0x5B, 0xFF, 0x5C, 0xFC, 0x5B, 0xFF, 0x5C, 0x5C, 0x58, 0xFF, 0x5C, 0x5C, +0x58, 0xFF, 0xFF, 0xAD, 0xAA, 0xD5, 0xFF, 0xFC, 0xF3, 0xCF, 0x3F, 0xFF, 0xFF, 0xAA, 0xDE, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0xAA, 0xD5, 0xFF, 0x5C, 0xA7, 0x0F, 0xE1, 0xAD, 0x39, 0x0F, 0xD0, +0x10, 0xA2, 0x00, 0xA5, 0x5A, 0xCD, 0x20, 0x0F, 0xF0, 0x01, 0xE8, 0x8E, 0x28, 0x0F, 0x20, 0x10, +0x5E, 0xA5, 0x45, 0xF0, 0x08, 0xA2, 0x06, 0x9E, 0x43, 0x0F, 0xCA, 0x10, 0xFA, 0x9C, 0x4B, 0x0F, +0xA5, 0x45, 0xC9, 0x0A, 0x90, 0x05, 0xA9, 0x01, 0x82, 0xEF, 0xFD, 0xAA, 0xBF, 0xB6, 0x58, 0xFF, +0x29, 0x7F, 0xC5, 0x46, 0xF0, 0x05, 0xA9, 0x04, 0x82, 0xDF, 0xFD, 0x8A, 0x0A, 0xAA, 0x7C, 0xA2, +0x58, 0x60, 0xC0, 0x58, 0x7A, 0x59, 0x7D, 0x59, 0x33, 0x5A, 0x28, 0x5C, 0x69, 0x5C, 0x86, 0x58, +0x86, 0x58, 0x7F, 0x56, 0x95, 0x5C, 0x03, 0x03, 0x83, 0x01, 0x83, 0x02, 0x01, 0x01, 0x04, 0x84, +0xA5, 0x48, 0xC9, 0x08, 0x90, 0x03, 0x82, 0x65, 0x03, 0x0A, 0xAA, 0xBF, 0xD7, 0x58, 0xFF, 0x48, +0xBF, 0xD6, 0x58, 0xFF, 0x48, 0x60, 0x1F, 0x59, 0x2D, 0x5C, 0x2D, 0x5C, 0xE5, 0x58, 0x2D, 0x5C, +0x10, 0x59, 0xFA, 0x64, 0x1A, 0x65, 0x20, 0x20, 0x59, 0x9B, 0xA2, 0x00, 0xBF, 0xFC, 0x58, 0xFF, +0x97, 0x42, 0xC8, 0xE8, 0xE0, 0x15, 0x90, 0xF4, 0xBB, 0xA0, 0x00, 0x60, 0x08, 0x44, 0x49, 0x53, +0x4B, 0x20, 0x33, 0x2E, 0x35, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x01, 0xC0, 0x00, +0x10, 0xA0, 0x08, 0xB9, 0x43, 0x0F, 0x97, 0x42, 0x88, 0xD0, 0xF8, 0x9C, 0x4B, 0x0F, 0x18, 0x60, +0x38, 0x20, 0x38, 0x5F, 0xA0, 0x00, 0x9C, 0x4B, 0x0F, 0xA9, 0xFC, 0xA2, 0x02, 0x06, 0x68, 0x90, +0x04, 0x5F, 0x77, 0x59, 0xFF, 0xCA, 0x10, 0xF5, 0x2C, 0x1E, 0x0F, 0x70, 0x02, 0x29, 0xFE, 0x97, +0x42, 0xC8, 0xAE, 0x28, 0x0F, 0x3C, 0x24, 0x0F, 0x30, 0x0C, 0xA9, 0x20, 0x97, 0x42, 0xC8, 0xA9, +0x03, 0x97, 0x42, 0xC8, 0x80, 0x0A, 0xA9, 0x40, 0x97, 0x42, 0xC8, 0xA9, 0x06, 0x97, 0x42, 0xC8, +0xA9, 0x00, 0x97, 0x42, 0xC8, 0x2C, 0x1E, 0x0F, 0x50, 0x03, 0x97, 0x42, 0xC8, 0xBB, 0xA0, 0x00, +0x8C, 0x31, 0xC0, 0x8C, 0xEA, 0xC0, 0x60, 0x01, 0x10, 0x04, 0x18, 0x80, 0x1C, 0xA2, 0xAF, 0xA0, +0x00, 0xAD, 0x51, 0x0F, 0xD0, 0x0F, 0xA0, 0x04, 0x9E, 0x00, 0x0C, 0x9E, 0x00, 0x0D, 0x9E, 0x00, +0x0E, 0xCA, 0x88, 0xD0, 0xF3, 0x20, 0x20, 0x63, 0x38, 0x20, 0x38, 0x5F, 0x90, 0x01, 0x60, 0x20, +0x9B, 0x60, 0xB0, 0xFA, 0x20, 0xE6, 0x5F, 0xA9, 0x04, 0x8D, 0x35, 0x0F, 0xA9, 0x96, 0x8D, 0x37, +0x0F, 0xAD, 0x35, 0x0F, 0xC9, 0x02, 0xD0, 0x03, 0x20, 0xA6, 0x5E, 0x20, 0x25, 0x5E, 0x90, 0x16, +0xCE, 0x35, 0x0F, 0xD0, 0xEC, 0xF0, 0x62, 0xEE, 0x45, 0x0F, 0xCE, 0x37, 0x0F, 0xF0, 0x5A, 0xAD, +0x37, 0x0F, 0xC9, 0x4B, 0xF0, 0xE2, 0x20, 0xC4, 0x61, 0xB0, 0xEC, 0xAD, 0x32, 0x0F, 0x85, 0x68, +0xAD, 0x34, 0x0F, 0x0A, 0x0A, 0x46, 0x68, 0x6A, 0x4A, 0xCD, 0x29, 0x0F, 0xF0, 0x0E, 0xAE, 0x28, +0x0F, 0x9D, 0x22, 0x0F, 0xA9, 0x04, 0x0C, 0x44, 0x0F, 0x4C, 0xC0, 0x59, 0xA5, 0x68, 0x0A, 0x0A, +0x0A, 0x4D, 0x2B, 0x0F, 0x30, 0xC1, 0xAD, 0x33, 0x0F, 0xCD, 0x2A, 0x0F, 0xD0, 0xB9, 0xA5, 0x45, +0xC9, 0x01, 0xD0, 0x1A, 0x20, 0x40, 0x62, 0xB0, 0xAE, 0x20, 0x59, 0x64, 0x18, 0xAD, 0x44, 0x0F, +0xF0, 0x05, 0xA9, 0x67, 0x82, 0x53, 0xFC, 0x18, 0x60, 0xA9, 0x27, 0x82, 0x4C, 0xFC, 0x20, 0x9A, +0x63, 0x18, 0x60, 0x5C, 0x8F, 0x0F, 0xE1, 0xA9, 0x03, 0x20, 0xAE, 0x5F, 0x38, 0x20, 0x38, 0x5F, +0xB0, 0x46, 0x20, 0xA6, 0x5E, 0xB0, 0x39, 0x9C, 0x2B, 0x0F, 0x9C, 0x29, 0x0F, 0xA9, 0x0A, 0x85, +0x6A, 0x20, 0x89, 0x5A, 0xB0, 0x2A, 0x20, 0xF8, 0x5B, 0x90, 0x07, 0xC6, 0x6A, 0xD0, 0xF2, 0x4C, +0x80, 0x5A, 0x20, 0x43, 0x65, 0x2C, 0x50, 0x0F, 0x10, 0x0A, 0xA9, 0x80, 0x4D, 0x2B, 0x0F, 0x8D, +0x2B, 0x0F, 0xD0, 0xD9, 0xEE, 0x29, 0x0F, 0xAD, 0x29, 0x0F, 0xC9, 0x50, 0x90, 0xCF, 0x18, 0x60, +0x20, 0xCC, 0x5E, 0xA9, 0x27, 0x82, 0xF2, 0xFB, 0x60, 0x5C, 0x97, 0x0F, 0xE1, 0x20, 0x25, 0x5E, +0x20, 0x41, 0x5B, 0x20, 0x7A, 0x5B, 0x20, 0x24, 0x5F, 0xAD, 0x2B, 0x0F, 0xD0, 0x16, 0xAD, 0x29, +0x0F, 0x29, 0x0F, 0xD0, 0x0F, 0xAD, 0x29, 0x0F, 0x4A, 0x4A, 0x4A, 0x4A, 0xAA, 0xBF, 0x91, 0x56, +0xFF, 0x20, 0x84, 0x5E, 0x20, 0x2D, 0x62, 0x64, 0x68, 0x2C, 0xED, 0xC0, 0x8D, 0xEF, 0xC0, 0xA9, +0x00, 0xA2, 0xC8, 0x85, 0x69, 0xA0, 0x04, 0xB9, 0x5C, 0x0F, 0x2C, 0xEC, 0xC0, 0x10, 0xFB, 0x8D, +0xED, 0xC0, 0x88, 0x10, 0xF2, 0xCA, 0xD0, 0xED, 0xC6, 0x69, 0x10, 0xE9, 0xC2, 0x10, 0xE2, 0x20, +0xA0, 0x18, 0x03, 0xB9, 0x00, 0x0C, 0x2C, 0xEC, 0xC0, 0x10, 0xFB, 0x8D, 0xED, 0xC0, 0x88, 0xD0, +0xF2, 0xE2, 0x10, 0xE6, 0x68, 0xA4, 0x68, 0xCC, 0x2C, 0x0F, 0xB0, 0x38, 0xA9, 0xFF, 0x2C, 0xEC, +0xC0, 0x10, 0xFB, 0x8D, 0xED, 0xC0, 0xB6, 0x4E, 0xBF, 0x00, 0x57, 0xFF, 0x8D, 0xD2, 0x0E, 0x8D, +0xC2, 0x0E, 0xA9, 0xFF, 0x2C, 0xEC, 0xC0, 0x10, 0xFB, 0x8D, 0xED, 0xC0, 0x8A, 0x45, 0x5B, 0xAA, +0xBF, 0x00, 0x57, 0xFF, 0x8D, 0xCF, 0x0E, 0xA9, 0xFF, 0x2C, 0xEC, 0xC0, 0x10, 0xFB, 0x8D, 0xED, +0xC0, 0x4C, 0xDC, 0x5A, 0x2C, 0xEC, 0xC0, 0x70, 0xFB, 0xAD, 0xEE, 0xC0, 0xAD, 0xEC, 0xC0, 0x18, +0x60, 0xA9, 0x96, 0xA2, 0x00, 0x9D, 0x00, 0x0C, 0x9D, 0x00, 0x0D, 0x9D, 0x00, 0x0E, 0xCA, 0xD0, +0xF4, 0xA2, 0x15, 0xBD, 0x57, 0x0F, 0x9D, 0xC2, 0x0E, 0xCA, 0x10, 0xF7, 0xA2, 0x40, 0xA0, 0x04, +0xB9, 0x5C, 0x0F, 0x9D, 0xD8, 0x0E, 0xCA, 0x30, 0x05, 0x88, 0x10, 0xF4, 0x30, 0xF0, 0xA2, 0x02, +0xBD, 0x61, 0x0F, 0x9D, 0x00, 0x0C, 0xCA, 0x10, 0xF7, 0x60, 0xA9, 0xFF, 0xA2, 0x0B, 0x95, 0x4E, +0xCA, 0x10, 0xFB, 0xE8, 0xA0, 0x00, 0x94, 0x4E, 0xC8, 0xCC, 0x2C, 0x0F, 0xB0, 0x17, 0x8A, 0x18, +0x6D, 0x4F, 0x0F, 0xAA, 0xEC, 0x2C, 0x0F, 0x90, 0x05, 0x8A, 0xED, 0x2C, 0x0F, 0xAA, 0x34, 0x4E, +0x30, 0xE4, 0xE8, 0x80, 0xEF, 0xAD, 0x29, 0x0F, 0x29, 0x3F, 0x85, 0x5B, 0xAA, 0xBF, 0x00, 0x57, +0xFF, 0x8D, 0xD3, 0x0E, 0xAD, 0x29, 0x0F, 0x0A, 0x0A, 0xA9, 0x00, 0x2A, 0x2C, 0x2B, 0x0F, 0x10, +0x02, 0x49, 0x20, 0xAA, 0x45, 0x5B, 0x85, 0x5B, 0xBF, 0x00, 0x57, 0xFF, 0x8D, 0xD1, 0x0E, 0xAD, +0x4F, 0x0F, 0x2C, 0x50, 0x0F, 0x10, 0x02, 0x09, 0x20, 0xAA, 0x45, 0x5B, 0x85, 0x5B, 0x48, 0xBF, +0x00, 0x57, 0xFF, 0x8D, 0xD0, 0x0E, 0x68, 0xAA, 0xBF, 0x00, 0x57, 0xFF, 0x8D, 0xCF, 0x0E, 0xA9, +0x96, 0x8D, 0xD2, 0x0E, 0x8D, 0xC2, 0x0E, 0x60, 0x5C, 0x9F, 0x0F, 0xE1, 0xA9, 0x02, 0x20, 0x89, +0x5E, 0xAD, 0x2C, 0x0F, 0x85, 0x69, 0x20, 0xC4, 0x61, 0xB0, 0x1B, 0xAE, 0x33, 0x0F, 0xEC, 0x2C, +0x0F, 0xB0, 0x13, 0xB5, 0x4E, 0x30, 0x0F, 0xA9, 0xFF, 0x95, 0x4E, 0x20, 0x40, 0x62, 0xB0, 0x06, +0xC6, 0x69, 0xD0, 0xE2, 0x18, 0x60, 0x38, 0x60, 0xA5, 0x48, 0xC9, 0x0B, 0x90, 0x05, 0xA9, 0x21, +0x82, 0x47, 0xFA, 0x0A, 0xAA, 0xBF, 0x41, 0x5C, 0xFF, 0x48, 0xBF, 0x40, 0x5C, 0xFF, 0x48, 0x60, +0x58, 0x5C, 0x55, 0x5C, 0x55, 0x5C, 0x55, 0x5C, 0x65, 0x5C, 0xAF, 0x5C, 0x0E, 0x5D, 0x37, 0x5D, +0x4E, 0x5D, 0x83, 0x5D, 0x94, 0x5D, 0x4C, 0x2E, 0x5C, 0x20, 0x52, 0x56, 0x20, 0x5D, 0x56, 0x4C, +0x6B, 0x56, 0x4C, 0x2E, 0x5C, 0x60, 0x4C, 0xCC, 0x5E, 0xAD, 0x39, 0x0F, 0xD0, 0x06, 0xA9, 0x40, +0x8D, 0x4B, 0x0F, 0x60, 0x9C, 0x28, 0x0F, 0xA5, 0x5A, 0xAC, 0x20, 0x0F, 0xF0, 0xF0, 0xC0, 0x40, +0x90, 0x05, 0x8D, 0x20, 0x0F, 0x80, 0x0A, 0xAC, 0x21, 0x0F, 0xC0, 0x40, 0x90, 0xE0, 0x8D, 0x21, +0x0F, 0xCE, 0x39, 0x0F, 0x60, 0x20, 0xA4, 0x5C, 0xA9, 0x02, 0x85, 0x45, 0xA9, 0xFF, 0x8D, 0x51, +0x0F, 0x4C, 0x7D, 0x59, 0xA2, 0x00, 0xB5, 0x4A, 0x95, 0x48, 0xE8, 0xE0, 0x04, 0x90, 0xF7, 0x60, +0xA9, 0x04, 0x20, 0xF9, 0x5C, 0xB0, 0x52, 0xB7, 0x42, 0x48, 0x29, 0x7F, 0xF0, 0x35, 0x3A, 0xC9, +0x08, 0xB0, 0x30, 0x0A, 0x0A, 0x0A, 0xAA, 0xA9, 0x22, 0x9F, 0x6F, 0x0F, 0xE1, 0x80, 0x06, 0xB7, +0x42, 0x9F, 0x6F, 0x0F, 0xE1, 0xE8, 0xC8, 0xC0, 0x06, 0x90, 0xF4, 0x68, 0x10, 0x12, 0xA9, 0xFF, +0x9F, 0x72, 0x0F, 0xE1, 0xA9, 0xAF, 0x9F, 0x70, 0x0F, 0xE1, 0xA9, 0x5C, 0x9F, 0x71, 0x0F, 0xE1, +0x82, 0x12, 0x00, 0x68, 0xA9, 0x30, 0x82, 0x81, 0xF9, 0xA0, 0x00, 0xD7, 0x42, 0xD0, 0x0B, 0xC8, +0xB7, 0x42, 0xD0, 0x06, 0xC8, 0x18, 0x9C, 0x4B, 0x0F, 0x60, 0xA9, 0x22, 0x82, 0x6B, 0xF9, 0xA9, +0x04, 0x20, 0xF9, 0x5C, 0xB0, 0xF3, 0xB7, 0x42, 0xF0, 0x19, 0xC9, 0x09, 0xB0, 0xD5, 0x0A, 0x0A, +0x0A, 0x1A, 0xAA, 0xA0, 0x08, 0xBF, 0x00, 0x58, 0xFF, 0x9F, 0x6D, 0x0F, 0xE1, 0xCA, 0x88, 0xD0, +0xF4, 0x80, 0xBD, 0x20, 0x5D, 0x56, 0x80, 0xB8, 0x20, 0x66, 0x5D, 0xB0, 0x0F, 0xB7, 0x42, 0xAA, +0xC8, 0xB7, 0x42, 0x9D, 0x57, 0x0F, 0xC8, 0xE8, 0xC6, 0x68, 0xD0, 0xF5, 0x82, 0xB6, 0xFF, 0x20, +0x66, 0x5D, 0xB0, 0x0F, 0xB7, 0x42, 0xAA, 0xBF, 0x42, 0x58, 0xFF, 0x9D, 0x57, 0x0F, 0xE8, 0xC6, +0x68, 0xD0, 0xF4, 0x82, 0x9F, 0xFF, 0xA0, 0x01, 0xB7, 0x42, 0xD0, 0x0F, 0x88, 0xB7, 0x42, 0x3A, +0x85, 0x68, 0xA0, 0x02, 0x18, 0x77, 0x42, 0xC9, 0x17, 0x90, 0x05, 0xA9, 0x22, 0x82, 0xFA, 0xF8, +0x9C, 0x4B, 0x0F, 0x60, 0xA9, 0x01, 0x20, 0xF9, 0x5C, 0xB0, 0xF0, 0xB7, 0x42, 0x29, 0x80, 0x8D, +0x50, 0x0F, 0x82, 0x70, 0xFF, 0xA9, 0x01, 0x20, 0xF9, 0x5C, 0xB0, 0xDF, 0xB7, 0x42, 0xF0, 0x0A, +0xC9, 0x0D, 0xB0, 0x06, 0x8D, 0x4F, 0x0F, 0x82, 0x5B, 0xFF, 0xA9, 0x32, 0x82, 0xCB, 0xF8, 0xA9, +0xE1, 0x48, 0xAB, 0xAD, 0x36, 0xC0, 0x29, 0xFB, 0x09, 0x80, 0x8D, 0x36, 0xC0, 0x86, 0x5A, 0xA9, +0x40, 0x8D, 0x31, 0xC0, 0xA5, 0x45, 0x29, 0x40, 0x8D, 0x1E, 0x0F, 0xA5, 0x45, 0x29, 0xBF, 0x85, +0x45, 0xA9, 0x0F, 0xA8, 0x8B, 0x20, 0x46, 0x65, 0xAB, 0xAD, 0xEC, 0xC0, 0xAD, 0xE9, 0xC0, 0x60, +0x9C, 0x28, 0x0F, 0xAE, 0x28, 0x0F, 0x20, 0x16, 0x5E, 0x20, 0xDA, 0x64, 0xB0, 0x14, 0xA9, 0x02, +0x20, 0xA4, 0x5F, 0x30, 0x0D, 0x20, 0x78, 0x5F, 0x20, 0xC4, 0x61, 0x24, 0x68, 0x10, 0x03, 0x20, +0xCC, 0x5E, 0xEE, 0x28, 0x0F, 0xAD, 0x28, 0x0F, 0xC9, 0x02, 0x90, 0xD7, 0x60, 0xAE, 0x28, 0x0F, +0x38, 0xBD, 0x20, 0x0F, 0xF0, 0x07, 0xBD, 0xEA, 0xC0, 0xAD, 0xE9, 0xC0, 0x18, 0x60, 0xAD, 0xE8, +0xC0, 0x60, 0x8D, 0x29, 0x0F, 0x5C, 0x87, 0x0F, 0xE1, 0xAE, 0x28, 0x0F, 0x3C, 0x22, 0x0F, 0x10, +0x05, 0x20, 0xA6, 0x5E, 0xB0, 0x32, 0x20, 0x78, 0x5F, 0x38, 0xAE, 0x28, 0x0F, 0xBD, 0x22, 0x0F, +0xED, 0x29, 0x0F, 0xF0, 0x12, 0xA0, 0x01, 0xB0, 0x06, 0xA0, 0x00, 0x49, 0xFF, 0x69, 0x01, 0xAA, +0x98, 0x20, 0xAE, 0x5F, 0x20, 0x71, 0x5E, 0xAE, 0x28, 0x0F, 0xAD, 0x29, 0x0F, 0x9D, 0x22, 0x0F, +0x20, 0x41, 0x60, 0x8D, 0x2C, 0x0F, 0x18, 0x60, 0xA9, 0x02, 0x0D, 0x44, 0x0F, 0x8D, 0x44, 0x0F, +0x60, 0xA9, 0x04, 0x20, 0xAE, 0x5F, 0x20, 0xA7, 0x5F, 0x10, 0xFB, 0xCA, 0xD0, 0xF3, 0xA2, 0x4F, +0xCA, 0xD0, 0xFD, 0x60, 0x48, 0x20, 0x89, 0x5E, 0x68, 0x85, 0x69, 0xAD, 0x36, 0xC0, 0x48, 0x29, +0x7F, 0x8D, 0x36, 0xC0, 0xA9, 0x64, 0x85, 0x68, 0xC6, 0x68, 0xEA, 0xD0, 0xFB, 0xC6, 0x69, 0xD0, +0xF3, 0x68, 0x8D, 0x36, 0xC0, 0x60, 0xA9, 0x01, 0x20, 0xAE, 0x5F, 0xA2, 0x50, 0x20, 0x71, 0x5E, +0xA2, 0x50, 0xA9, 0x07, 0x20, 0x89, 0x5E, 0xA9, 0x0A, 0x20, 0xA4, 0x5F, 0x10, 0x06, 0xCA, 0xD0, +0xF1, 0x38, 0x80, 0x01, 0x18, 0xAE, 0x28, 0x0F, 0x9E, 0x22, 0x0F, 0x60, 0xA9, 0x02, 0x20, 0xA4, +0x5F, 0x30, 0x4F, 0xA9, 0x09, 0x20, 0xAE, 0x5F, 0xA9, 0xC8, 0x20, 0x89, 0x5E, 0xA9, 0x03, 0x8D, +0x35, 0x0F, 0xAE, 0x28, 0x0F, 0x8E, 0x56, 0x0F, 0xA9, 0x0D, 0x20, 0xAE, 0x5F, 0xA9, 0xC3, 0x8D, +0x37, 0x0F, 0xA9, 0x0A, 0x20, 0x89, 0x5E, 0xA9, 0x02, 0x20, 0xA4, 0x5F, 0x30, 0x0F, 0xCE, 0x37, +0x0F, 0xD0, 0xEF, 0xCE, 0x35, 0x0F, 0xD0, 0xE0, 0xA9, 0x27, 0x82, 0x6D, 0xF7, 0xAE, 0x28, 0x0F, +0x38, 0x6E, 0x56, 0x0F, 0x38, 0x7E, 0x22, 0x0F, 0xA9, 0xFA, 0x9D, 0x26, 0x0F, 0xA9, 0x01, 0x20, +0x89, 0x5E, 0x18, 0x60, 0xA9, 0x0B, 0x20, 0xA4, 0x5F, 0x2C, 0xEE, 0xC0, 0x30, 0xFB, 0x60, 0x20, +0xA4, 0x5F, 0x2C, 0xEE, 0xC0, 0x10, 0xFB, 0x60, 0x08, 0xA2, 0x02, 0xBF, 0x75, 0x5F, 0xFF, 0x20, +0xA4, 0x5F, 0x0A, 0x66, 0x68, 0xCA, 0x10, 0xF3, 0x28, 0xA9, 0x2F, 0x24, 0x68, 0x70, 0x21, 0x08, +0xA5, 0x45, 0xF0, 0x15, 0xAD, 0x1E, 0x0F, 0xF0, 0x10, 0xA5, 0x68, 0x29, 0x20, 0xF0, 0x0A, 0xA9, +0x03, 0x20, 0xAE, 0x5F, 0x28, 0xA9, 0x2E, 0x80, 0x07, 0x28, 0x90, 0x08, 0x30, 0x05, 0xA9, 0x2B, +0x82, 0x07, 0xF7, 0x18, 0x60, 0x06, 0x02, 0x0C, 0xA9, 0x08, 0x20, 0xA4, 0x5F, 0x10, 0x14, 0x20, +0xB1, 0x5F, 0xAE, 0x28, 0x0F, 0xBD, 0x26, 0x0F, 0x20, 0x84, 0x5E, 0xA9, 0x19, 0x9D, 0x26, 0x0F, +0x20, 0x84, 0x5E, 0x60, 0xAD, 0x31, 0xC0, 0x29, 0x7F, 0x2C, 0x2B, 0x0F, 0x10, 0x02, 0x09, 0x80, +0x8D, 0x31, 0xC0, 0x60, 0x20, 0xB8, 0x5F, 0x2C, 0xED, 0xC0, 0xAD, 0xEE, 0xC0, 0x60, 0x20, 0xB8, +0x5F, 0x2C, 0xE7, 0xC0, 0x2C, 0xE6, 0xC0, 0x60, 0x2C, 0xE0, 0xC0, 0x2C, 0xE3, 0xC0, 0x2C, 0xE6, +0xC0, 0x2C, 0xE4, 0xC0, 0x4A, 0x90, 0x03, 0x2C, 0xE5, 0xC0, 0x4A, 0x48, 0xAD, 0x31, 0xC0, 0x29, +0x7F, 0x90, 0x02, 0x09, 0x80, 0x8D, 0x31, 0xC0, 0x68, 0x4A, 0x90, 0x03, 0x2C, 0xE1, 0xC0, 0x4A, +0xB0, 0x03, 0x2C, 0xE2, 0xC0, 0x60, 0xA5, 0x48, 0x29, 0x3F, 0x8D, 0x2A, 0x0F, 0xA5, 0x48, 0xA2, +0x06, 0x46, 0x49, 0x6A, 0xCA, 0xD0, 0xFA, 0xAE, 0x28, 0x0F, 0x3C, 0x24, 0x0F, 0x10, 0x03, 0x18, +0x69, 0x0D, 0xDA, 0xAA, 0xBF, 0x75, 0x60, 0xFF, 0x48, 0xBF, 0x4F, 0x60, 0xFF, 0xA8, 0x68, 0xFA, +0x18, 0xAE, 0x28, 0x0F, 0x6D, 0x2A, 0x0F, 0x48, 0x20, 0x3A, 0x60, 0x85, 0x68, 0x68, 0xC5, 0x68, +0x90, 0x06, 0xC8, 0xE5, 0x68, 0x4C, 0x17, 0x60, 0x8C, 0x29, 0x0F, 0x8D, 0x2A, 0x0F, 0x3C, 0x24, +0x0F, 0x10, 0x03, 0x4E, 0x29, 0x0F, 0x6E, 0x2B, 0x0F, 0x60, 0x98, 0x3C, 0x24, 0x0F, 0x10, 0x01, +0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x38, 0x8D, 0x2D, 0x0F, 0xA9, 0x0C, 0xED, 0x2D, 0x0F, 0x60, 0x00, +0x05, 0x0A, 0x10, 0x15, 0x1B, 0x21, 0x28, 0x2E, 0x35, 0x3C, 0x44, 0x4C, 0x00, 0x05, 0x0A, 0x10, +0x15, 0x1A, 0x20, 0x25, 0x2B, 0x31, 0x37, 0x3D, 0x43, 0x49, 0x50, 0x56, 0x5C, 0x63, 0x6A, 0x71, +0x78, 0x80, 0x88, 0x90, 0x98, 0x00, 0x04, 0x08, 0x00, 0x09, 0x07, 0x06, 0x00, 0x04, 0x03, 0x04, +0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00, 0x09, 0x07, 0x05, 0x03, 0x01, 0x02, 0x06, +0x00, 0x04, 0x08, 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00, 0xA9, 0x00, 0xAE, 0x28, 0x0F, +0x3C, 0x24, 0x0F, 0x10, 0x01, 0x1A, 0xAA, 0xC2, 0x10, 0xA6, 0x4A, 0xD0, 0x09, 0xA6, 0x48, 0xE0, +0x40, 0x06, 0xE2, 0x10, 0x90, 0x98, 0xE2, 0x10, 0xA9, 0x2D, 0x82, 0xBD, 0xF5, 0x20, 0x40, 0x03, +0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, +0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, +0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, +0xC0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, +0xC0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, +0xC0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, +0xC0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, +0xC0, 0x00, 0x40, 0x80, 0xC0, 0x00, 0x40, 0x80, 0xC0, 0x00, 0x40, 0x80, 0xC0, 0x00, 0x40, 0x80, +0xC0, 0x00, 0x40, 0x80, 0xC0, 0x00, 0x40, 0x80, 0xC0, 0x00, 0x40, 0x80, 0xC0, 0x00, 0x40, 0x80, +0xC0, 0x00, 0x40, 0x80, 0xC0, 0x00, 0x40, 0x80, 0xC0, 0x00, 0x40, 0x80, 0xC0, 0x00, 0x40, 0x80, +0xC0, 0x00, 0x40, 0x80, 0xC0, 0x00, 0x40, 0x80, 0xC0, 0x00, 0x40, 0x80, 0xC0, 0x00, 0x40, 0x80, +0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0x5C, 0x6F, 0x0F, 0xE1, 0x20, 0x24, 0x5F, 0x20, 0x2D, 0x62, 0xA9, 0x07, +0x85, 0x68, 0xA0, 0x9E, 0xA2, 0x02, 0x88, 0xD0, 0x04, 0xC6, 0x68, 0x30, 0x49, 0xAD, 0xEC, 0xC0, +0x10, 0xFB, 0xDD, 0x69, 0x0F, 0xD0, 0xED, 0xCA, 0x10, 0xEC, 0xA0, 0x04, 0x64, 0x5B, 0xAE, 0xEC, +0xC0, 0x10, 0xFB, 0xBF, 0x00, 0x56, 0xFF, 0x99, 0x30, 0x0F, 0x45, 0x5B, 0x85, 0x5B, 0x88, 0x10, +0xED, 0xA8, 0xD0, 0x22, 0xAD, 0xEC, 0xC0, 0x10, 0xFB, 0xCD, 0x63, 0x0F, 0xD0, 0x18, 0xAD, 0xEC, +0xC0, 0x10, 0xFB, 0xCD, 0x62, 0x0F, 0xD0, 0x0E, 0xAE, 0x28, 0x0F, 0xAD, 0x31, 0x0F, 0x0A, 0x0A, +0x0A, 0x7E, 0x24, 0x0F, 0x18, 0x60, 0xA9, 0x20, 0x0C, 0x44, 0x0F, 0x38, 0x60, 0xA9, 0x01, 0x2C, +0x2B, 0x0F, 0x10, 0x02, 0xA9, 0x03, 0x20, 0xA4, 0x5F, 0xAD, 0xEC, 0xC0, 0xAD, 0xEC, 0xC0, 0x60, +0x5C, 0x77, 0x0F, 0xE1, 0x64, 0x5E, 0x64, 0x5D, 0x64, 0x5C, 0xA0, 0x19, 0xA2, 0x02, 0x88, 0xF0, +0x1B, 0xAD, 0xEC, 0xC0, 0x10, 0xFB, 0xDD, 0x58, 0x0F, 0xD0, 0xF1, 0xCA, 0x10, 0xF0, 0xAE, 0xEC, +0xC0, 0x10, 0xFB, 0xBF, 0x00, 0x56, 0xFF, 0xCD, 0x33, 0x0F, 0xF0, 0x03, 0x4C, 0x1E, 0x63, 0xA0, +0xAF, 0x4C, 0x8C, 0x62, 0xAE, 0xEC, 0xC0, 0x10, 0xFB, 0xBF, 0x00, 0x56, 0xFF, 0xA6, 0x66, 0x1F, +0x41, 0x61, 0xFF, 0x45, 0x5D, 0x99, 0x01, 0x0E, 0x65, 0x5C, 0x85, 0x5C, 0xAE, 0xEC, 0xC0, 0x10, +0xFB, 0xBF, 0x00, 0x56, 0xFF, 0x85, 0x66, 0x06, 0x5C, 0x90, 0x02, 0xE6, 0x5C, 0xAE, 0xEC, 0xC0, +0x10, 0xFB, 0xBF, 0x00, 0x56, 0xFF, 0xA6, 0x66, 0x1F, 0xC1, 0x60, 0xFF, 0x45, 0x5C, 0x99, 0x00, +0x0C, 0x65, 0x5E, 0xAE, 0xEC, 0xC0, 0x10, 0xFB, 0x85, 0x5E, 0xBF, 0x00, 0x56, 0xFF, 0xA6, 0x66, +0x1F, 0x01, 0x61, 0xFF, 0x45, 0x5E, 0x99, 0x00, 0x0D, 0x65, 0x5D, 0x85, 0x5D, 0x88, 0xD0, 0xA4, +0xAE, 0xEC, 0xC0, 0x10, 0xFB, 0xBF, 0x00, 0x56, 0xFF, 0xAA, 0xBF, 0x41, 0x61, 0xFF, 0x85, 0x66, +0xBF, 0x01, 0x61, 0xFF, 0x85, 0x67, 0xBF, 0xC1, 0x60, 0xFF, 0xA0, 0x02, 0xAE, 0xEC, 0xC0, 0x10, +0xFB, 0x29, 0xC0, 0x1F, 0x00, 0x56, 0xFF, 0xBB, 0xD5, 0x5C, 0xD0, 0x16, 0xB5, 0x65, 0x88, 0x10, +0xEB, 0xA0, 0x02, 0xAD, 0xEC, 0xC0, 0x10, 0xFB, 0xD9, 0x61, 0x0F, 0xD0, 0x09, 0x88, 0xD0, 0xF3, +0x18, 0x60, 0xA9, 0x10, 0xD0, 0x02, 0xA9, 0x08, 0x0D, 0x44, 0x0F, 0x8D, 0x44, 0x0F, 0x38, 0x60, +0xC2, 0x10, 0x64, 0x5E, 0x64, 0x5D, 0x64, 0x5C, 0x80, 0x0E, 0xB7, 0x42, 0x65, 0x5C, 0x85, 0x5C, +0xB7, 0x42, 0x45, 0x5D, 0x9D, 0x01, 0x0E, 0xC8, 0x06, 0x5C, 0x90, 0x02, 0xE6, 0x5C, 0xB7, 0x42, +0x65, 0x5E, 0x85, 0x5E, 0xB7, 0x42, 0x45, 0x5C, 0x9D, 0x00, 0x0C, 0xC8, 0xB7, 0x42, 0x65, 0x5D, +0x85, 0x5D, 0xB7, 0x42, 0x45, 0x5E, 0x9D, 0x00, 0x0D, 0xC8, 0xCA, 0xD0, 0xCD, 0xE2, 0x10, 0xA5, +0x5C, 0x4A, 0x4A, 0x45, 0x5D, 0x29, 0x3F, 0x45, 0x5D, 0x4A, 0x4A, 0x45, 0x5E, 0x29, 0x3F, 0x45, +0x5E, 0x4A, 0x4A, 0x85, 0x5F, 0xA9, 0x00, 0xEB, 0xAD, 0xAF, 0x0C, 0x85, 0x63, 0xC2, 0x20, 0x0A, +0x0A, 0xE2, 0x20, 0xAD, 0xAF, 0x0D, 0x85, 0x64, 0xC2, 0x20, 0x0A, 0x0A, 0xE2, 0x20, 0xAD, 0xAF, +0x0E, 0x85, 0x65, 0xC2, 0x20, 0x0A, 0x0A, 0xE2, 0x20, 0x60, 0x5C, 0x7F, 0x0F, 0xE1, 0x2C, 0xED, +0xC0, 0xA9, 0xFF, 0x8D, 0xEF, 0xC0, 0xA0, 0x07, 0xB9, 0x58, 0x0F, 0x2C, 0xEC, 0xC0, 0x10, 0xFB, +0x8D, 0xED, 0xC0, 0x88, 0x10, 0xF2, 0xAE, 0x33, 0x0F, 0xBF, 0x00, 0x57, 0xFF, 0x09, 0x80, 0x2C, +0xEC, 0xC0, 0x10, 0xFB, 0x8D, 0xED, 0xC0, 0xA0, 0xAE, 0x80, 0x19, 0xA6, 0x65, 0xB9, 0x01, 0x0E, +0x85, 0x65, 0xC2, 0x20, 0x0A, 0x0A, 0xE2, 0x20, 0xBF, 0x00, 0x57, 0xFF, 0x2C, 0xEC, 0xC0, 0x10, +0xFB, 0x8D, 0xED, 0xC0, 0xEB, 0xAA, 0xBF, 0x00, 0x57, 0xFF, 0x2C, 0xEC, 0xC0, 0x10, 0xFB, 0x8D, +0xED, 0xC0, 0xA6, 0x63, 0xB9, 0x00, 0x0C, 0x85, 0x63, 0xC2, 0x20, 0x0A, 0x0A, 0xE2, 0x20, 0xBF, +0x00, 0x57, 0xFF, 0x2C, 0xEC, 0xC0, 0x10, 0xFB, 0x8D, 0xED, 0xC0, 0xA6, 0x64, 0xB9, 0x00, 0x0D, +0x85, 0x64, 0xC2, 0x20, 0x0A, 0x0A, 0xE2, 0x20, 0xBF, 0x00, 0x57, 0xFF, 0x2C, 0xEC, 0xC0, 0x10, +0xFB, 0x8D, 0xED, 0xC0, 0x88, 0xC0, 0xFF, 0xD0, 0xA2, 0xA0, 0x03, 0xBB, 0xB5, 0x5C, 0x29, 0x3F, +0xAA, 0xBF, 0x00, 0x57, 0xFF, 0x2C, 0xEC, 0xC0, 0x10, 0xFB, 0x8D, 0xED, 0xC0, 0x88, 0x10, 0xEB, +0xA0, 0x02, 0xB9, 0x61, 0x0F, 0x2C, 0xEC, 0xC0, 0x10, 0xFB, 0x8D, 0xED, 0xC0, 0x88, 0x10, 0xF2, +0x2C, 0xEC, 0xC0, 0x70, 0xFB, 0x2C, 0xEE, 0xC0, 0x60, 0x08, 0xFB, 0x08, 0x18, 0xFB, 0xC2, 0x10, +0xE2, 0x20, 0xA0, 0x00, 0x00, 0xA2, 0xAB, 0x00, 0xAD, 0x51, 0x0F, 0xF0, 0x03, 0xA2, 0xAF, 0x00, +0xBD, 0x00, 0x0C, 0x97, 0x42, 0xC8, 0x20, 0x9D, 0x64, 0xB0, 0x17, 0xBD, 0x00, 0x0D, 0x97, 0x42, +0xC8, 0x20, 0x9D, 0x64, 0xB0, 0x0C, 0xBD, 0x00, 0x0E, 0x97, 0x42, 0xCA, 0xC8, 0x20, 0x9D, 0x64, +0x90, 0xDE, 0x5A, 0x68, 0xEB, 0x68, 0x28, 0xFB, 0x28, 0xA8, 0xEB, 0xAA, 0x60, 0xAD, 0x51, 0x0F, +0xD0, 0x05, 0xC0, 0x00, 0x02, 0x80, 0x03, 0xC0, 0x0C, 0x02, 0x60, 0xA9, 0x80, 0x8D, 0x24, 0x0F, +0x8D, 0x25, 0x0F, 0x9C, 0x20, 0x0F, 0x9C, 0x21, 0x0F, 0x9C, 0x39, 0x0F, 0xA2, 0x01, 0x8E, 0x28, +0x0F, 0x20, 0x16, 0x5E, 0x20, 0xDA, 0x64, 0xB0, 0x08, 0xEE, 0x39, 0x0F, 0xA9, 0x40, 0x9D, 0x20, +0x0F, 0xCA, 0x8E, 0x28, 0x0F, 0x10, 0xEA, 0x4C, 0x1E, 0x5E, 0xA9, 0x00, 0x20, 0xAE, 0x5F, 0x20, +0xA4, 0x5F, 0x30, 0x15, 0xA9, 0x01, 0x20, 0xAE, 0x5F, 0x20, 0xA4, 0x5F, 0x10, 0x0B, 0xA9, 0x00, +0x20, 0xAE, 0x5F, 0x20, 0xA4, 0x5F, 0x18, 0x10, 0x01, 0x38, 0x60, 0x18, 0xFB, 0x08, 0xC2, 0x30, +0xA0, 0x00, 0x00, 0xA9, 0x1E, 0x0F, 0x97, 0x42, 0xC8, 0xC8, 0xA9, 0xE1, 0x00, 0x97, 0x42, 0x28, +0xC8, 0xC8, 0xBB, 0xA0, 0x00, 0x9C, 0x4B, 0x0F, 0xFB, 0x18, 0x60, 0x18, 0xFB, 0x08, 0xC2, 0x30, +0xA0, 0x00, 0x00, 0xA9, 0x00, 0x0C, 0x97, 0x42, 0xC8, 0xC8, 0xA9, 0xE1, 0x00, 0x97, 0x42, 0x80, +0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x4C, 0x6F, 0x70, 0x4C, 0x62, 0x68, 0x4C, 0x54, 0x6A, 0xA9, 0x60, 0xAA, 0x86, 0x2B, 0x85, 0x4F, +0xBD, 0x8E, 0xC0, 0xBD, 0x8C, 0xC0, 0xB9, 0xEA, 0xC0, 0xBD, 0x89, 0xC0, 0xA0, 0x50, 0xBD, 0x80, +0xC0, 0x98, 0x29, 0x03, 0x0A, 0x05, 0x2B, 0xAA, 0xBD, 0x81, 0xC0, 0xA9, 0x56, 0x08, 0x78, 0x20, +0xA8, 0xFC, 0x28, 0x88, 0x10, 0xE8, 0x85, 0x26, 0x85, 0x3D, 0x85, 0x41, 0x18, 0xA0, 0x32, 0xBD, +0x8C, 0xC0, 0x30, 0x04, 0x88, 0x10, 0xF8, 0x38, 0x08, 0xA2, 0x03, 0xA0, 0x00, 0x86, 0x3C, 0x8A, +0x0A, 0x24, 0x3C, 0xF0, 0x11, 0x05, 0x3C, 0x49, 0xFF, 0x29, 0x7E, 0xB0, 0x09, 0x4A, 0xD0, 0xFB, +0x98, 0x9F, 0x56, 0x03, 0x00, 0xC8, 0xE8, 0x10, 0xE4, 0xA9, 0x08, 0x85, 0x27, 0xA0, 0x7F, 0x28, +0x6B, 0xA9, 0x00, 0x8F, 0xB1, 0x0F, 0xE1, 0x4C, 0x16, 0x70, 0x20, 0x84, 0x69, 0xA2, 0x60, 0xA0, +0x07, 0x20, 0x54, 0x6A, 0x20, 0x42, 0x6F, 0xBD, 0x8A, 0xC0, 0xBD, 0x89, 0xC0, 0xBD, 0x88, 0xC0, +0x20, 0xC8, 0x68, 0x20, 0x42, 0x6F, 0xBD, 0x8A, 0xC0, 0xBD, 0x89, 0xC0, 0xA0, 0x8C, 0xBD, 0x8E, +0xC0, 0x30, 0x07, 0x88, 0xD0, 0xF8, 0x38, 0x4C, 0xFD, 0x66, 0xBD, 0x81, 0xC0, 0xA0, 0x05, 0xA9, +0xFF, 0x9D, 0x8F, 0xC0, 0xB9, 0xE7, 0xC5, 0x1E, 0x8C, 0xC0, 0x90, 0xFB, 0x9D, 0x8D, 0xC0, 0x88, +0x10, 0xF2, 0xA5, 0x60, 0x09, 0x80, 0x20, 0x90, 0x68, 0x20, 0x8E, 0x68, 0xA5, 0x61, 0x20, 0x90, +0x68, 0x20, 0x8E, 0x68, 0x20, 0x8E, 0x68, 0xA5, 0x4F, 0x09, 0x80, 0x20, 0x90, 0x68, 0xA5, 0x4E, +0x09, 0x80, 0x20, 0x90, 0x68, 0xA5, 0x4F, 0xF0, 0x10, 0xA0, 0xFF, 0xA5, 0x5F, 0x20, 0x10, 0x67, +0xC8, 0xB7, 0x57, 0x09, 0x80, 0xC4, 0x4F, 0x90, 0xF4, 0xA5, 0x4E, 0xD0, 0x03, 0x4C, 0xCD, 0x66, +0xA0, 0x00, 0xA5, 0x41, 0x20, 0x10, 0x67, 0xA5, 0x50, 0x09, 0x80, 0x20, 0x10, 0x67, 0xB7, 0x5B, +0x85, 0x50, 0x0A, 0x26, 0x41, 0xC8, 0xD0, 0x04, 0xE6, 0x5C, 0x80, 0x02, 0x48, 0x68, 0xA9, 0x02, +0x05, 0x41, 0x85, 0x41, 0xA5, 0x51, 0x09, 0x80, 0x20, 0x10, 0x67, 0xB7, 0x5B, 0x85, 0x51, 0x0A, +0x26, 0x41, 0xC8, 0xA5, 0x52, 0x09, 0x80, 0x20, 0x10, 0x67, 0xB7, 0x5B, 0x85, 0x52, 0x0A, 0x26, +0x41, 0xC8, 0xA5, 0x53, 0x09, 0x80, 0x20, 0x10, 0x67, 0xB7, 0x5B, 0x85, 0x53, 0x0A, 0x26, 0x41, +0xC8, 0xD0, 0x04, 0xE6, 0x5C, 0x80, 0x02, 0x48, 0x68, 0xA5, 0x54, 0x09, 0x80, 0x20, 0x10, 0x67, +0xB7, 0x5B, 0x85, 0x54, 0x0A, 0x26, 0x41, 0xC8, 0xA5, 0x55, 0x09, 0x80, 0x20, 0x10, 0x67, 0xB7, +0x5B, 0x85, 0x55, 0x0A, 0x26, 0x41, 0xC8, 0xA5, 0x56, 0x09, 0x80, 0x20, 0x10, 0x67, 0xB7, 0x5B, +0x85, 0x56, 0x0A, 0x26, 0x41, 0xC8, 0xC6, 0x4E, 0xF0, 0x03, 0x4C, 0x42, 0x66, 0xA5, 0x40, 0x09, +0xAA, 0x20, 0x10, 0x67, 0xA5, 0x40, 0x4A, 0x09, 0xAA, 0x20, 0x90, 0x68, 0xA9, 0xC8, 0x20, 0x90, +0x68, 0xBD, 0x8C, 0xC0, 0x29, 0x40, 0xD0, 0xF9, 0x9D, 0x8D, 0xC0, 0xA0, 0x1C, 0x88, 0xD0, 0x07, +0xA9, 0x01, 0xA2, 0x60, 0x38, 0xB0, 0x06, 0xBD, 0x8E, 0xC0, 0x30, 0xF1, 0x18, 0xBD, 0x80, 0xC0, +0xBD, 0x8C, 0xC0, 0x4B, 0xAB, 0x60, 0x20, 0x0B, 0x67, 0xEA, 0xEA, 0xEA, 0x60, 0x4C, 0xF2, 0x66, +0x1E, 0x8C, 0xC0, 0x90, 0xFB, 0x9D, 0x8D, 0xC0, 0x60, 0xA9, 0x00, 0x85, 0x40, 0xA5, 0x57, 0x85, +0x5B, 0xA5, 0x58, 0x85, 0x5C, 0xA5, 0x59, 0x85, 0x5D, 0x20, 0xC8, 0x68, 0x20, 0x42, 0x6F, 0xBD, +0x8D, 0xC0, 0xBD, 0x8E, 0xC0, 0x30, 0x07, 0x20, 0x62, 0x68, 0xA2, 0x60, 0x80, 0xF4, 0xBD, 0x81, +0xC0, 0xA0, 0x00, 0xAF, 0xEC, 0xC0, 0xE1, 0x88, 0xF0, 0xC3, 0xC9, 0xC3, 0xD0, 0xF5, 0xA0, 0x06, +0x20, 0x57, 0x68, 0x29, 0x7F, 0xF4, 0x00, 0x00, 0xAB, 0xAB, 0x99, 0x4E, 0x00, 0x49, 0x80, 0x45, +0x40, 0x85, 0x40, 0x88, 0x10, 0xEA, 0xA5, 0x4F, 0xF0, 0x27, 0x18, 0x65, 0x57, 0x85, 0x5B, 0xA5, +0x58, 0x69, 0x00, 0x85, 0x5C, 0xA0, 0x00, 0x20, 0x57, 0x68, 0x0A, 0x85, 0x41, 0x20, 0x57, 0x68, +0x06, 0x41, 0xB0, 0x02, 0x49, 0x80, 0x97, 0x57, 0x45, 0x40, 0x85, 0x40, 0xC8, 0xC4, 0x4F, 0x90, +0xEC, 0xA0, 0x00, 0xA5, 0x4E, 0x48, 0xD0, 0x03, 0x4C, 0x1F, 0x68, 0x20, 0x57, 0x68, 0x85, 0x5F, +0x4A, 0x4A, 0x4A, 0x29, 0x0F, 0xAA, 0xA5, 0x5F, 0x29, 0x07, 0x85, 0x5F, 0x20, 0x57, 0x68, 0x5F, +0xA7, 0xC5, 0x00, 0x97, 0x5B, 0x45, 0x40, 0x85, 0x40, 0xC8, 0xD0, 0x02, 0xE6, 0x5C, 0x20, 0x57, +0x68, 0x5F, 0xB7, 0xC5, 0x00, 0x97, 0x5B, 0x45, 0x40, 0x85, 0x40, 0xC8, 0x20, 0x57, 0x68, 0x5F, +0xC7, 0xC5, 0x00, 0x97, 0x5B, 0x45, 0x40, 0x85, 0x40, 0xC8, 0x20, 0x57, 0x68, 0x5F, 0xD7, 0xC5, +0x00, 0x97, 0x5B, 0x45, 0x40, 0x85, 0x40, 0xC8, 0xD0, 0x02, 0xE6, 0x5C, 0xA6, 0x5F, 0x20, 0x57, +0x68, 0x5F, 0xB7, 0xC5, 0x00, 0x97, 0x5B, 0x45, 0x40, 0x85, 0x40, 0xC8, 0x20, 0x57, 0x68, 0x5F, +0xC7, 0xC5, 0x00, 0x97, 0x5B, 0x45, 0x40, 0x85, 0x40, 0xC8, 0x20, 0x57, 0x68, 0x5F, 0xD7, 0xC5, +0x00, 0x97, 0x5B, 0x45, 0x40, 0x85, 0x40, 0xC8, 0xC6, 0x4E, 0xF0, 0x03, 0x4C, 0x9B, 0x67, 0x20, +0x57, 0x68, 0x85, 0x5F, 0x68, 0x85, 0x4E, 0x20, 0x57, 0x68, 0x38, 0x2A, 0x25, 0x5F, 0x45, 0x40, +0xAA, 0x20, 0x57, 0x68, 0xC9, 0xC8, 0xD0, 0x16, 0x8A, 0xAA, 0xD0, 0x16, 0x20, 0x42, 0x6F, 0xAD, +0xED, 0xC0, 0xAD, 0xEE, 0xC0, 0x30, 0xFB, 0xAD, 0xE0, 0xC0, 0x18, 0x4B, 0xAB, 0x60, 0xA9, 0x20, +0xD0, 0x02, 0xA9, 0x10, 0x38, 0x80, 0xF4, 0xF4, 0xE1, 0xFF, 0xAB, 0xAD, 0xEC, 0xC0, 0x10, 0xFB, +0xAB, 0x60, 0xAD, 0xC5, 0x0F, 0x29, 0x04, 0xD0, 0x24, 0x20, 0x8C, 0x6F, 0x20, 0x70, 0x6F, 0xAD, +0xC8, 0x0F, 0x8D, 0x36, 0xC0, 0x58, 0xEA, 0x78, 0xAD, 0x36, 0xC0, 0x8D, 0xC8, 0x0F, 0x29, 0xFB, +0x09, 0x80, 0x8D, 0x36, 0xC0, 0xE2, 0x30, 0x20, 0x4D, 0x6F, 0x20, 0x9F, 0x6F, 0x60, 0xA9, 0x80, +0xBC, 0x8C, 0xC0, 0x10, 0xFB, 0x9D, 0x8D, 0xC0, 0x45, 0x40, 0x85, 0x40, 0x60, 0x20, 0xD6, 0x68, +0x20, 0x42, 0x6F, 0xBD, 0x81, 0xC0, 0xBD, 0x85, 0xC0, 0xA0, 0x50, 0x20, 0xB5, 0x68, 0x20, 0xD6, +0x68, 0x4B, 0xAB, 0xA0, 0x0A, 0x20, 0xBC, 0x68, 0x88, 0xD0, 0xFA, 0x60, 0xA2, 0xBB, 0xCA, 0xEA, +0x80, 0x00, 0xEA, 0x80, 0x00, 0xD0, 0xF7, 0x60, 0xA2, 0x60, 0x20, 0x42, 0x6F, 0xBD, 0x83, 0xC0, +0xBD, 0x87, 0xC0, 0x4B, 0xAB, 0x60, 0xA2, 0x60, 0x20, 0x42, 0x6F, 0xBD, 0x80, 0xC0, 0xBD, 0x82, +0xC0, 0xBD, 0x84, 0xC0, 0xBD, 0x86, 0xC0, 0x4B, 0xAB, 0x60, 0xA9, 0x05, 0xA0, 0x00, 0x20, 0x13, +0x69, 0x90, 0x09, 0xA9, 0x80, 0x8F, 0xFD, 0x06, 0x00, 0x20, 0x1A, 0x6E, 0x60, 0x20, 0x13, 0x69, +0x90, 0xFA, 0x20, 0xF3, 0x68, 0x4B, 0xAB, 0xAF, 0xB9, 0x0F, 0xE1, 0x85, 0x50, 0xAF, 0xBA, 0x0F, +0xE1, 0x85, 0x51, 0xA9, 0xE8, 0xA0, 0x03, 0x8F, 0xB1, 0x0F, 0xE1, 0x98, 0x8F, 0xB3, 0x0F, 0xE1, +0xA5, 0x50, 0x8F, 0xB9, 0x0F, 0xE1, 0xA5, 0x51, 0x8F, 0xBA, 0x0F, 0xE1, 0x20, 0xBA, 0x65, 0xAF, +0xB9, 0x0F, 0xE1, 0x85, 0x50, 0xAF, 0xBA, 0x0F, 0xE1, 0x85, 0x51, 0x90, 0x0F, 0x8B, 0x20, 0x42, +0x6F, 0xCE, 0xB1, 0x0F, 0xD0, 0x07, 0xCE, 0xB3, 0x0F, 0x10, 0x02, 0xAB, 0x60, 0xAB, 0x80, 0xD0, +0xA9, 0x05, 0x8F, 0xB1, 0x0F, 0xE1, 0x20, 0x19, 0x67, 0x90, 0x13, 0xA0, 0x01, 0x20, 0xB5, 0x68, +0x20, 0xF2, 0x66, 0xAF, 0xB1, 0x0F, 0xE1, 0x3A, 0x8F, 0xB1, 0x0F, 0xE1, 0xD0, 0xE8, 0x60, 0x00, +0x24, 0x49, 0x00, 0x04, 0x01, 0x00, 0x01, 0x02, 0x04, 0x09, 0x12, 0x00, 0x01, 0x02, 0x04, 0x01, +0x02, 0x00, 0x7F, 0xFF, 0xA6, 0x51, 0xF0, 0x17, 0xA5, 0x58, 0x85, 0x5C, 0xA9, 0x80, 0xE0, 0x01, +0xF0, 0x04, 0xE6, 0x5C, 0xA9, 0x00, 0x18, 0x65, 0x57, 0x85, 0x5B, 0x90, 0x02, 0xE6, 0x5C, 0xBD, +0x6F, 0x69, 0x85, 0x4E, 0xBD, 0x72, 0x69, 0x85, 0x4F, 0xA2, 0x05, 0xA5, 0x50, 0x85, 0x5F, 0x29, +0x07, 0xA8, 0x06, 0x5F, 0x90, 0x15, 0xBD, 0x7B, 0x69, 0x18, 0x65, 0x4F, 0xC9, 0x07, 0x90, 0x02, +0xE9, 0x07, 0x85, 0x4F, 0xBD, 0x75, 0x69, 0x65, 0x4E, 0x85, 0x4E, 0xCA, 0x30, 0x06, 0xD0, 0xE2, +0x98, 0x4C, 0xB9, 0x69, 0xA5, 0x58, 0x48, 0xA9, 0x00, 0xA6, 0x51, 0xF0, 0x16, 0xBC, 0x81, 0x69, +0x57, 0x57, 0x57, 0x5B, 0x88, 0xD0, 0xF9, 0x57, 0x57, 0x57, 0x5B, 0xE0, 0x01, 0xF0, 0x02, 0xE6, +0x58, 0xE6, 0x58, 0xA4, 0x50, 0xF0, 0x09, 0x57, 0x57, 0x57, 0x57, 0x88, 0xD0, 0xFB, 0x57, 0x57, +0x85, 0x40, 0x68, 0x85, 0x58, 0xA4, 0x4F, 0x88, 0xA9, 0x00, 0x85, 0x5F, 0xB7, 0x57, 0x0A, 0x66, +0x5F, 0x88, 0x10, 0xF8, 0x38, 0x66, 0x5F, 0xA5, 0x4F, 0x18, 0x65, 0x57, 0x85, 0x5B, 0xA5, 0x58, +0x69, 0x00, 0x85, 0x5C, 0xA5, 0x59, 0x69, 0x00, 0x85, 0x5D, 0xA5, 0x5A, 0x69, 0x00, 0x85, 0x5E, +0x20, 0x47, 0x6F, 0xA0, 0x06, 0x38, 0xB7, 0x5B, 0x99, 0x50, 0x00, 0x30, 0x01, 0x18, 0x66, 0x41, +0x88, 0x10, 0xF2, 0x4B, 0xAB, 0x38, 0x66, 0x41, 0xA5, 0x5B, 0x18, 0x69, 0x07, 0x85, 0x5B, 0x90, +0x02, 0xE6, 0x5C, 0x60, 0x20, 0x42, 0x6F, 0xAD, 0xE8, 0xC0, 0xAD, 0xED, 0xC0, 0x80, 0x04, 0x98, +0x8D, 0xEF, 0xC0, 0x98, 0x4D, 0xEE, 0xC0, 0x29, 0x1F, 0xD0, 0xF4, 0x4B, 0xAB, 0x60, 0xA2, 0x60, +0x20, 0x42, 0x6F, 0xBD, 0x8E, 0xC0, 0xBD, 0x8D, 0xC0, 0xBD, 0x8E, 0xC0, 0x29, 0x20, 0xD0, 0xF9, +0xBD, 0x8C, 0xC0, 0x5A, 0xA0, 0xD9, 0x88, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xD0, 0xF7, 0x7A, +0x4B, 0xAB, 0x60, 0xA5, 0x4E, 0xA8, 0xA2, 0x00, 0x86, 0x4E, 0xA2, 0x03, 0x0A, 0x26, 0x4E, 0xCA, +0xD0, 0xFA, 0x18, 0x65, 0x4F, 0x90, 0x02, 0xE6, 0x4E, 0x84, 0x4F, 0x38, 0xE5, 0x4F, 0xB0, 0x02, +0xC6, 0x4E, 0xA4, 0x4E, 0x60, 0x4B, 0xAB, 0x90, 0x03, 0x4C, 0xC8, 0x6F, 0xD8, 0xAF, 0xB0, 0x0F, +0xE1, 0x30, 0x28, 0xC2, 0x20, 0xA3, 0x07, 0x8F, 0xB4, 0x0F, 0xE1, 0x85, 0x57, 0x64, 0x59, 0xA0, +0x01, 0xE2, 0x20, 0xB7, 0x57, 0x29, 0x40, 0x08, 0x68, 0xC2, 0x20, 0x29, 0x02, 0x00, 0x49, 0x02, +0x00, 0x18, 0x69, 0x03, 0x00, 0x63, 0x07, 0x83, 0x07, 0xE2, 0x20, 0x08, 0xA3, 0x01, 0x8F, 0xC5, +0x0F, 0xE1, 0x78, 0x20, 0x4D, 0x6F, 0x20, 0x6E, 0x6A, 0xAF, 0xFD, 0x06, 0x00, 0xC9, 0xA5, 0xD0, +0x10, 0xAF, 0xB6, 0x0F, 0xE1, 0xC9, 0xA5, 0xD0, 0x08, 0x49, 0xFF, 0x4F, 0xB7, 0x0F, 0xE1, 0xF0, +0x05, 0xA9, 0x00, 0x20, 0x1A, 0x6E, 0xAF, 0xB0, 0x0F, 0xE1, 0x10, 0x0F, 0xA2, 0x05, 0xB5, 0x42, +0x95, 0x45, 0xCA, 0x10, 0xF9, 0x64, 0x4B, 0x64, 0x4C, 0x64, 0x4D, 0xA5, 0x46, 0x2A, 0x08, 0x2A, +0x2A, 0x28, 0x2A, 0x29, 0x03, 0x49, 0x02, 0xAA, 0xE8, 0x86, 0x46, 0x64, 0x59, 0xAF, 0xB0, 0x0F, +0xE1, 0x10, 0x03, 0x4C, 0x1C, 0x6C, 0xA0, 0x01, 0xB7, 0x57, 0x85, 0x45, 0xC8, 0xC2, 0x30, 0xB7, +0x57, 0xAA, 0xE2, 0x20, 0x24, 0x45, 0x50, 0x08, 0xC2, 0x20, 0xC8, 0xC8, 0xB7, 0x57, 0x85, 0x59, +0x86, 0x57, 0xE2, 0x30, 0xA5, 0x45, 0x29, 0xBF, 0xAA, 0xA9, 0x01, 0xE0, 0x0A, 0x90, 0x03, 0x4C, +0x7E, 0x6D, 0xA0, 0x00, 0xB7, 0x57, 0x85, 0x60, 0xC8, 0xB7, 0x57, 0x85, 0x46, 0xC2, 0x20, 0xA5, +0x45, 0x85, 0x42, 0xE2, 0x20, 0xA2, 0x0B, 0xA0, 0x0B, 0x70, 0x02, 0xA0, 0x08, 0xB7, 0x57, 0x95, +0x42, 0xCA, 0x88, 0xC0, 0x01, 0xD0, 0xF6, 0x50, 0x10, 0xC2, 0x30, 0xA6, 0x42, 0xA5, 0x44, 0x85, +0x42, 0xA5, 0x45, 0x85, 0x43, 0x86, 0x45, 0xE2, 0x30, 0x4B, 0xAB, 0xA5, 0x46, 0xD0, 0x6D, 0x24, +0x45, 0x70, 0x03, 0x20, 0xC2, 0x6D, 0xA5, 0x45, 0x29, 0xBF, 0xAA, 0xBF, 0x9D, 0xC5, 0x00, 0x29, +0x7F, 0xA8, 0xA9, 0x04, 0xC4, 0x60, 0xD0, 0xA7, 0xE0, 0x05, 0xD0, 0x15, 0xA9, 0xFF, 0x8F, 0xB6, +0x0F, 0xE1, 0xA9, 0x00, 0x20, 0x1A, 0x6E, 0xA9, 0x00, 0x20, 0x42, 0x6F, 0x4C, 0xA4, 0x6D, 0x80, +0x8E, 0x8A, 0xD0, 0x21, 0xA9, 0x21, 0xA6, 0x48, 0xD0, 0x85, 0x8A, 0xA0, 0x07, 0x97, 0x42, 0x88, +0xD0, 0xFB, 0xAF, 0xB8, 0x0F, 0xE1, 0x97, 0x42, 0xC8, 0xA9, 0x00, 0x97, 0x42, 0xA9, 0x08, 0x88, +0x20, 0x38, 0x6F, 0x80, 0xD2, 0xC9, 0x04, 0xD0, 0x0B, 0xA6, 0x48, 0xF0, 0x0B, 0xCA, 0xF0, 0x08, +0xA9, 0x21, 0xD0, 0xCB, 0xA9, 0x11, 0xD0, 0xC7, 0xA9, 0x1F, 0xD0, 0xC3, 0xAF, 0xB8, 0x0F, 0xE1, +0xAA, 0xA9, 0x28, 0xE4, 0x46, 0x90, 0xEB, 0xA9, 0x09, 0x85, 0x50, 0x64, 0x51, 0xA9, 0x45, 0x85, +0x57, 0x64, 0x58, 0x64, 0x59, 0x64, 0x5A, 0xAF, 0xB0, 0x0F, 0xE1, 0x10, 0x12, 0xA6, 0x45, 0xBF, +0x9D, 0xC5, 0x00, 0x29, 0x7F, 0x85, 0x60, 0xA5, 0x45, 0xD0, 0x04, 0x85, 0x48, 0x85, 0x49, 0xA5, +0x60, 0xA6, 0x46, 0x86, 0x60, 0x85, 0x46, 0x8A, 0xC9, 0x05, 0xB0, 0x4E, 0xCA, 0x20, 0x42, 0x6F, +0xBD, 0xC0, 0x0F, 0x85, 0x60, 0xCD, 0xBF, 0x0F, 0xB0, 0x40, 0x24, 0x45, 0x70, 0x03, 0x20, 0xC2, +0x6D, 0xA5, 0x60, 0xCD, 0xBC, 0x0F, 0xF0, 0x16, 0xCD, 0xBD, 0x0F, 0xF0, 0x25, 0x20, 0xB2, 0x6F, +0x20, 0x00, 0x56, 0x85, 0x50, 0x8E, 0xB4, 0x0F, 0x8C, 0xB5, 0x0F, 0x4C, 0x58, 0x6D, 0x20, 0xB2, +0x6F, 0x20, 0xAA, 0x70, 0xA5, 0x51, 0x8F, 0xB4, 0x0F, 0xE1, 0xA5, 0x52, 0x8F, 0xB5, 0x0F, 0xE1, +0x80, 0xE9, 0x20, 0xB2, 0x6F, 0x20, 0x12, 0x71, 0x80, 0xEA, 0xA5, 0x45, 0x29, 0x40, 0x09, 0x80, +0x85, 0x61, 0x20, 0xD6, 0x68, 0x20, 0xFD, 0x68, 0xB0, 0x61, 0xC2, 0x20, 0xA5, 0x47, 0x85, 0x57, +0x64, 0x59, 0xE2, 0x20, 0x24, 0x45, 0x50, 0x13, 0xC2, 0x20, 0xA5, 0x42, 0x85, 0x57, 0xE2, 0x20, +0xA5, 0x47, 0xEB, 0xA5, 0x44, 0xC2, 0x20, 0x85, 0x59, 0xE2, 0x20, 0xA5, 0x45, 0x29, 0xBF, 0xAA, +0xBD, 0x9D, 0xC5, 0x10, 0x3D, 0xE0, 0x04, 0xD0, 0x17, 0xA0, 0x01, 0xB7, 0x57, 0xAA, 0x88, 0xB7, +0x57, 0x48, 0x18, 0xA9, 0x02, 0x65, 0x57, 0x85, 0x57, 0x68, 0x90, 0x12, 0xE6, 0x58, 0x80, 0x0E, +0xE0, 0x02, 0xD0, 0x06, 0xA9, 0x00, 0xA2, 0x02, 0xD0, 0x04, 0xA6, 0x4A, 0xA5, 0x49, 0x86, 0x51, +0x85, 0x50, 0xA9, 0x82, 0x85, 0x61, 0x20, 0xEA, 0x68, 0x90, 0x07, 0x20, 0x42, 0x6F, 0xA9, 0x06, +0xD0, 0x5C, 0xAF, 0xB0, 0x0F, 0xE1, 0x10, 0x0C, 0xA5, 0x45, 0xD0, 0x08, 0xA9, 0x48, 0xA2, 0x00, +0x85, 0x57, 0x86, 0x58, 0x20, 0x50, 0x69, 0x90, 0x16, 0xAF, 0xC7, 0x0F, 0xE1, 0x3A, 0x8F, 0xC7, +0x0F, 0xE1, 0xF0, 0xD7, 0xA5, 0x60, 0xA6, 0x46, 0x86, 0x60, 0x85, 0x46, 0x82, 0xD8, 0xFE, 0x20, +0x93, 0x6A, 0x20, 0x38, 0x6F, 0x20, 0x42, 0x6F, 0xA5, 0x45, 0xD0, 0x20, 0xAD, 0xB0, 0x0F, 0x10, +0x1B, 0xA5, 0x49, 0x8D, 0xB4, 0x0F, 0xA5, 0x4A, 0x8D, 0xB5, 0x0F, 0xA5, 0x48, 0x4A, 0x4A, 0x4A, +0x90, 0x04, 0xA9, 0x2B, 0x80, 0x08, 0x4A, 0x4A, 0xA9, 0x2F, 0x90, 0x02, 0xA5, 0x50, 0x20, 0x42, +0x6F, 0x8D, 0xB1, 0x0F, 0xAA, 0xF0, 0x1D, 0x48, 0xAD, 0xB0, 0x0F, 0x2A, 0x68, 0x90, 0x15, 0xA2, +0x00, 0xC9, 0x40, 0xB0, 0x0E, 0xA2, 0x27, 0xC9, 0x2B, 0xF0, 0x09, 0xC9, 0x28, 0xF0, 0x05, 0xC9, +0x2F, 0xF0, 0x01, 0x8A, 0x8D, 0xB2, 0x0F, 0x8B, 0x20, 0xE7, 0x6D, 0x20, 0x70, 0x6F, 0xAB, 0x28, +0xAD, 0xB4, 0x0F, 0xAA, 0xAD, 0xB2, 0x0F, 0x48, 0xAD, 0xB5, 0x0F, 0xA8, 0x18, 0x68, 0xF0, 0x01, +0x38, 0x6B, 0xA5, 0x45, 0xC9, 0x08, 0xB0, 0x04, 0x64, 0x4C, 0x64, 0x4D, 0xC2, 0x20, 0xA5, 0x47, +0x85, 0x42, 0xA5, 0x49, 0x85, 0x48, 0xA5, 0x4B, 0x85, 0x4A, 0xA5, 0x4C, 0x85, 0x4B, 0xE2, 0x30, +0x64, 0x47, 0x64, 0x44, 0x64, 0x4D, 0x60, 0x20, 0x42, 0x6F, 0xAD, 0xE8, 0xC0, 0x2C, 0xED, 0xC0, +0xA9, 0x2B, 0x8D, 0xEF, 0xC0, 0xA0, 0x05, 0x88, 0xD0, 0xFD, 0xAD, 0xEE, 0xC0, 0x29, 0x20, 0xD0, +0xF9, 0xA0, 0x00, 0xA2, 0x60, 0x20, 0x54, 0x6A, 0x20, 0x42, 0x6F, 0xAD, 0xEC, 0xC0, 0xAD, 0xE2, +0xC0, 0xAD, 0xE6, 0xC0, 0xAD, 0xE8, 0xC0, 0x4B, 0xAB, 0x60, 0x48, 0x20, 0x9D, 0x68, 0x68, 0xAA, +0xA5, 0x45, 0x48, 0xA5, 0x46, 0x48, 0xA5, 0x48, 0x48, 0xA5, 0x60, 0x48, 0x86, 0x48, 0xA9, 0x05, +0x85, 0x45, 0x64, 0x60, 0xA9, 0x02, 0x85, 0x46, 0xAF, 0xFD, 0x06, 0x00, 0xC9, 0xA5, 0xF0, 0x08, +0xAF, 0xBF, 0x0F, 0xE1, 0x85, 0x60, 0x80, 0x4B, 0xA9, 0x00, 0xAA, 0x9F, 0xBC, 0x0F, 0xE1, 0xE8, +0xE0, 0x04, 0xD0, 0xF7, 0x8A, 0x9F, 0xBF, 0x0F, 0xE1, 0xCA, 0xD0, 0xF8, 0xE6, 0x60, 0x20, 0xAA, +0x70, 0xB0, 0x08, 0xA5, 0x60, 0x8F, 0xBC, 0x0F, 0xE1, 0xE6, 0x60, 0xA6, 0x60, 0xA9, 0x01, 0x20, +0x12, 0x71, 0xB0, 0x08, 0xA5, 0x60, 0x8F, 0xBD, 0x0F, 0xE1, 0xE6, 0x60, 0xA5, 0x60, 0x8F, 0xBE, +0x0F, 0xE1, 0x80, 0x02, 0xE6, 0x60, 0xA6, 0x60, 0xDA, 0xA9, 0x01, 0x20, 0x00, 0x56, 0xFA, 0x86, +0x60, 0x90, 0xF1, 0xA9, 0x45, 0x85, 0x57, 0x64, 0x58, 0x64, 0x59, 0xA5, 0x45, 0x29, 0x40, 0x09, +0x80, 0x85, 0x61, 0x20, 0xD6, 0x68, 0xA5, 0x60, 0x8F, 0xBF, 0x0F, 0xE1, 0x80, 0x02, 0xE6, 0x60, +0xA9, 0x09, 0x85, 0x50, 0x64, 0x51, 0x20, 0xBA, 0x65, 0x90, 0x05, 0xC6, 0x60, 0x4C, 0xC7, 0x6E, +0x20, 0x19, 0x67, 0xA5, 0x50, 0xF0, 0xE7, 0x20, 0x42, 0x6F, 0xA5, 0x60, 0x8D, 0xB8, 0x0F, 0x68, +0x85, 0x60, 0x68, 0x85, 0x48, 0x68, 0x85, 0x46, 0x68, 0x85, 0x45, 0xA9, 0xA5, 0x8D, 0xB6, 0x0F, +0x49, 0xFF, 0x8D, 0xB7, 0x0F, 0xA9, 0xA5, 0xCF, 0xFD, 0x06, 0x00, 0x8F, 0xFD, 0x06, 0x00, 0xD0, +0x46, 0xA2, 0x01, 0xAD, 0xB8, 0x0F, 0xCD, 0xBE, 0x0F, 0xB0, 0x03, 0x8E, 0xBE, 0x0F, 0xAD, 0xE8, +0x02, 0x8F, 0xC6, 0x0F, 0xE1, 0xC9, 0x08, 0xF0, 0x11, 0xC9, 0x09, 0xF0, 0x12, 0xA9, 0x01, 0xCD, +0xBC, 0x0F, 0xF0, 0x10, 0xCD, 0xBD, 0x0F, 0xF0, 0x0B, 0x60, 0xAD, 0xBC, 0x0F, 0x80, 0x08, 0xAD, +0xBD, 0x0F, 0x80, 0x03, 0xAD, 0xBE, 0x0F, 0x8D, 0xC0, 0x0F, 0xAA, 0xF0, 0x0A, 0xCA, 0xF0, 0x07, +0x8A, 0x9D, 0xC0, 0x0F, 0xCA, 0xD0, 0xF9, 0x60, 0x8F, 0xB4, 0x0F, 0xE1, 0x98, 0x8F, 0xB5, 0x0F, +0xE1, 0x60, 0xF4, 0xE1, 0xE1, 0x80, 0x03, 0xF4, 0x00, 0x00, 0xAB, 0xAB, 0x60, 0x8B, 0xC2, 0x30, +0xA9, 0x2E, 0x00, 0xA0, 0xE2, 0x14, 0xA2, 0x40, 0x00, 0x54, 0xE1, 0x00, 0xE2, 0x30, 0xF4, 0xE1, +0xE1, 0xAB, 0xAB, 0xAD, 0x2D, 0xC0, 0x8D, 0xC4, 0x0F, 0x29, 0x9F, 0x8D, 0x2D, 0xC0, 0xAB, 0x60, +0x8B, 0xC2, 0x30, 0xA9, 0x2E, 0x00, 0xA2, 0xE2, 0x14, 0xA0, 0x40, 0x00, 0x54, 0x00, 0xE1, 0xE2, +0x30, 0x20, 0x42, 0x6F, 0xAD, 0xC4, 0x0F, 0x8D, 0x2D, 0xC0, 0xAB, 0x60, 0x8B, 0xC2, 0x30, 0xA9, +0x2E, 0x00, 0xA0, 0x12, 0x15, 0xA2, 0x40, 0x00, 0x54, 0xE1, 0x00, 0xE2, 0x30, 0xAB, 0x60, 0x8B, +0xC2, 0x30, 0xA9, 0x2E, 0x00, 0xA2, 0x12, 0x15, 0xA0, 0x40, 0x00, 0x54, 0x00, 0xE1, 0xE2, 0x30, +0xAB, 0x60, 0xAD, 0xB0, 0x0F, 0x10, 0x0C, 0xA5, 0x45, 0xD0, 0x08, 0xA9, 0x48, 0xA2, 0x00, 0x85, +0x42, 0x86, 0x43, 0xA6, 0x60, 0xA5, 0x46, 0x60, 0xA9, 0xA5, 0x8F, 0xFD, 0x06, 0x00, 0xAF, 0xB6, +0x0F, 0xE1, 0xC9, 0xA5, 0xD0, 0x12, 0x49, 0xFF, 0x4F, 0xB7, 0x0F, 0xE1, 0xD0, 0x0A, 0xAF, 0xE8, +0x02, 0xE1, 0xCF, 0xC6, 0x0F, 0xE1, 0xF0, 0x06, 0xA9, 0xAA, 0x8F, 0xB6, 0x0F, 0xE1, 0xA0, 0x05, +0xB9, 0x69, 0x70, 0x20, 0x47, 0x6F, 0x99, 0x42, 0x00, 0x4B, 0xAB, 0x88, 0x10, 0xF2, 0x22, 0xBC, +0x6A, 0xFF, 0xB0, 0x12, 0xAF, 0x00, 0x08, 0x00, 0xAA, 0xCA, 0xD0, 0x0A, 0xAF, 0x01, 0x08, 0x00, +0xF0, 0x04, 0xA2, 0x50, 0x18, 0x6B, 0x18, 0xFB, 0x08, 0xE2, 0x30, 0xA5, 0x01, 0xCF, 0xF8, 0x07, +0x00, 0xF0, 0x40, 0x20, 0x47, 0x6F, 0xAD, 0x2D, 0xC0, 0x48, 0x29, 0x9F, 0x8D, 0x2D, 0xC0, 0xAD, +0x68, 0xC0, 0x48, 0xA9, 0x08, 0x8D, 0x68, 0xC0, 0x38, 0xFB, 0x08, 0x22, 0x87, 0xC5, 0x00, 0x28, +0xFB, 0xA2, 0x00, 0xAF, 0xB1, 0x0F, 0xE1, 0xD0, 0x02, 0xA2, 0x01, 0xC9, 0x28, 0xD0, 0x02, 0xA2, +0x02, 0xC9, 0x2F, 0xD0, 0x02, 0xA2, 0x03, 0x8A, 0x20, 0x80, 0xC0, 0x68, 0x8D, 0x68, 0xC0, 0x68, +0x8D, 0x2D, 0xC0, 0xA9, 0x27, 0x28, 0xFB, 0x38, 0x6B, 0x01, 0x50, 0x00, 0x08, 0x00, 0x00, 0x08, +0x78, 0xA3, 0x01, 0x8F, 0xC5, 0x0F, 0xE1, 0x8B, 0x20, 0x42, 0x6F, 0x20, 0x4D, 0x6F, 0xAF, 0x36, +0xC0, 0x00, 0x48, 0x29, 0xFB, 0x09, 0x80, 0x8D, 0x36, 0xC0, 0x8B, 0xA9, 0xFF, 0x8F, 0xB6, 0x0F, +0xE1, 0xA9, 0xA5, 0x8F, 0xFD, 0x06, 0x00, 0xA9, 0x00, 0x20, 0x1A, 0x6E, 0x20, 0xE7, 0x6D, 0xAB, +0x68, 0x8D, 0x36, 0xC0, 0x20, 0x70, 0x6F, 0xAB, 0x28, 0x60, 0x8B, 0x20, 0x42, 0x6F, 0xAD, 0x68, +0xC0, 0x48, 0xA5, 0x45, 0x29, 0x0F, 0xA8, 0xC2, 0x30, 0xA9, 0xFC, 0x02, 0x6A, 0x88, 0x10, 0xFC, +0xE2, 0x30, 0xAD, 0x68, 0xC0, 0x29, 0x30, 0xF0, 0x12, 0xB0, 0x09, 0x29, 0x10, 0xF0, 0x0C, 0x20, +0xF8, 0x70, 0x80, 0x07, 0x29, 0x20, 0xF0, 0x03, 0x20, 0xF8, 0x70, 0xC2, 0x30, 0xA2, 0x0D, 0x0A, +0x22, 0x00, 0x00, 0xE1, 0xE2, 0x30, 0x68, 0x8D, 0x68, 0xC0, 0xAB, 0x90, 0x04, 0xA9, 0x27, 0x85, +0x50, 0x18, 0xA5, 0x50, 0xF0, 0x01, 0x38, 0x60, 0xA5, 0x44, 0xF0, 0x04, 0xC9, 0xE0, 0xD0, 0x11, +0xA9, 0x30, 0x1C, 0x68, 0xC0, 0xA5, 0x43, 0xC9, 0xD0, 0xB0, 0x06, 0xC9, 0x02, 0x90, 0x02, 0xE6, +0x44, 0x60, 0xA5, 0x45, 0x29, 0x3F, 0xC9, 0x05, 0xD0, 0x0F, 0xA2, 0x05, 0xBF, 0x00, 0x00, 0xF0, +0xDF, 0x3A, 0x71, 0xFF, 0xD0, 0x0E, 0xCA, 0x10, 0xF3, 0x22, 0x07, 0x00, 0xF0, 0x18, 0xA5, 0x50, +0xF0, 0x01, 0x38, 0x60, 0x38, 0xA9, 0x27, 0x85, 0x50, 0x60, 0xD2, 0xCF, 0xCD, 0xC4, 0xC9, 0xD3, +0x80, 0x1B, 0x16, 0xE7, 0x79, 0xAC, 0x74, 0x97, 0x77, 0x86, 0x7C, 0x32, 0x78, 0x42, 0x76, 0x32, +0x7A, 0x0B, 0x7B, 0x01, 0x7C, 0x97, 0x7A, 0x74, 0x78, 0x35, 0x7D, 0xEB, 0x71, 0x78, 0xC2, 0x30, +0xA2, 0x00, 0x08, 0x9F, 0x00, 0x00, 0xE0, 0x9F, 0x00, 0x00, 0xE1, 0xE8, 0xE0, 0x00, 0xC0, 0x90, +0xF2, 0xA9, 0x2B, 0x74, 0x8F, 0x1D, 0x00, 0xE1, 0xE2, 0x30, 0xA9, 0xFF, 0x8F, 0x1F, 0x00, 0xE1, +0x20, 0x25, 0x74, 0x9C, 0x34, 0xC0, 0x9C, 0x21, 0xC0, 0x0E, 0xF4, 0x03, 0x9C, 0x2D, 0xC0, 0xA9, +0x04, 0x8D, 0x3C, 0xC0, 0x9C, 0x59, 0xC0, 0x9C, 0xE2, 0xC0, 0x9C, 0x5B, 0xC0, 0x9C, 0xE4, 0xC0, +0xAD, 0x46, 0xC0, 0x10, 0x41, 0x20, 0xF6, 0x73, 0xAD, 0x0E, 0x03, 0x8D, 0x21, 0x03, 0xE2, 0x30, +0xAD, 0x61, 0xC0, 0x30, 0x27, 0xC2, 0x30, 0x9C, 0x1B, 0x03, 0xAD, 0x10, 0x03, 0xCF, 0x50, 0x73, +0xFF, 0xD0, 0x0E, 0xAD, 0x11, 0x03, 0xCF, 0x51, 0x73, 0xFF, 0xD0, 0x05, 0xAD, 0x13, 0x03, 0x80, +0x1A, 0xA9, 0xFF, 0xFF, 0x8D, 0x15, 0x03, 0xE2, 0x30, 0x82, 0x86, 0x00, 0xC2, 0x30, 0x9C, 0x1B, +0x03, 0xAD, 0x13, 0x03, 0x80, 0x05, 0xC2, 0x30, 0xA9, 0xFF, 0xFF, 0x8D, 0x1F, 0x03, 0xA9, 0x42, +0x71, 0x85, 0xF9, 0xAF, 0x42, 0x71, 0xFF, 0x29, 0xFF, 0x00, 0x4A, 0x8D, 0x23, 0x03, 0x8D, 0x25, +0x03, 0x18, 0xFB, 0xC2, 0x30, 0xA2, 0xFF, 0x01, 0x9A, 0x9C, 0x29, 0x03, 0x9C, 0x15, 0x03, 0x9C, +0x17, 0x03, 0xE6, 0xF9, 0x4B, 0xAB, 0xB2, 0xF9, 0x20, 0x25, 0x74, 0x85, 0xFB, 0xE6, 0xF9, 0x38, +0xAD, 0x25, 0x03, 0xED, 0x23, 0x03, 0x1A, 0x8D, 0x15, 0x03, 0x22, 0x05, 0x73, 0xFF, 0x78, 0x20, +0x25, 0x74, 0x90, 0x7C, 0x18, 0xFB, 0xE2, 0x30, 0xA9, 0x00, 0x8F, 0x35, 0xC0, 0xE0, 0xA9, 0xFF, +0x8D, 0x1B, 0x03, 0x20, 0x7B, 0x73, 0xAE, 0x15, 0x03, 0x8E, 0x00, 0x03, 0xAE, 0x17, 0x03, 0x8E, +0x02, 0x03, 0xE2, 0x10, 0x20, 0xDF, 0x73, 0x9C, 0x59, 0xC0, 0x9C, 0xE2, 0xC0, 0xAD, 0x46, 0xC0, +0x30, 0x4E, 0xA2, 0x00, 0x9C, 0x27, 0x03, 0x9C, 0x5A, 0xC0, 0x9C, 0xE5, 0xC0, 0xBF, 0xA3, 0x72, +0xFF, 0xF0, 0x05, 0x20, 0x9C, 0x73, 0x80, 0xF5, 0xA9, 0xFF, 0x8D, 0x1D, 0x03, 0x20, 0xDF, 0x73, +0x20, 0x42, 0x74, 0xA9, 0xFF, 0x8D, 0x29, 0x03, 0x20, 0xDF, 0x73, 0xA9, 0x8D, 0x20, 0x89, 0x74, +0xA9, 0x8A, 0x20, 0x89, 0x74, 0x18, 0xFB, 0xE2, 0x30, 0xC2, 0x10, 0xA2, 0x10, 0x27, 0xA9, 0x05, +0x82, 0xB7, 0x00, 0xA0, 0xD3, 0xF9, 0xF3, 0xF4, 0xE5, 0xED, 0xA0, 0xC2, 0xE1, 0xE4, 0xBA, 0x00, +0x18, 0xFB, 0xE2, 0x30, 0xA9, 0x00, 0x8F, 0x35, 0xC0, 0xE0, 0x20, 0xDF, 0x73, 0xCE, 0x23, 0x03, +0x30, 0x03, 0x82, 0x3C, 0xFF, 0xAD, 0x46, 0xC0, 0x10, 0x58, 0xAD, 0x1B, 0x03, 0x30, 0x28, 0x9C, +0x58, 0xC0, 0x9C, 0xE3, 0xC0, 0xC2, 0x30, 0xEE, 0x08, 0x03, 0xEE, 0x06, 0x03, 0xCE, 0x21, 0x03, +0xF0, 0x03, 0x82, 0xD0, 0xFE, 0x20, 0x0B, 0x74, 0x9C, 0x5A, 0xC0, 0x9C, 0xE5, 0xC0, 0xAD, 0x61, +0xC0, 0x10, 0x03, 0x82, 0x67, 0xFE, 0xDB, 0xC2, 0x30, 0xEE, 0x0A, 0x03, 0xAD, 0x06, 0x03, 0x8D, +0x0C, 0x03, 0x80, 0xD6, 0x60, 0x9C, 0x1D, 0x03, 0x6E, 0x1F, 0x03, 0x90, 0xF7, 0xE2, 0x30, 0xEE, +0x34, 0xC0, 0x20, 0x7B, 0x73, 0xE2, 0x30, 0x20, 0xDF, 0x73, 0xA9, 0x80, 0x8D, 0x36, 0xC0, 0x6C, +0xFB, 0x00, 0x20, 0x7B, 0x73, 0xE2, 0x30, 0x9C, 0x58, 0xC0, 0x9C, 0xE3, 0xC0, 0x9C, 0x5A, 0xC0, +0x9C, 0xE5, 0xC0, 0xA2, 0x00, 0x9C, 0x27, 0x03, 0xBF, 0x43, 0x73, 0xFF, 0xF0, 0x15, 0x20, 0x9C, +0x73, 0x80, 0xF5, 0xA0, 0xD3, 0xF9, 0xF3, 0xF4, 0xE5, 0xED, 0xA0, 0xC7, 0xEF, 0xEF, 0xE4, 0x00, +0xCB, 0xD2, 0xC7, 0xC2, 0x10, 0xA2, 0xE8, 0x03, 0xA9, 0x11, 0xA8, 0x98, 0x20, 0xA8, 0xFC, 0x2C, +0x30, 0xC0, 0xCA, 0xD0, 0xF6, 0xAD, 0x1D, 0x03, 0xF0, 0x01, 0xDB, 0x0E, 0x46, 0xC0, 0xAD, 0x61, +0xC0, 0xB0, 0x03, 0x2D, 0x62, 0xC0, 0x10, 0xF3, 0x82, 0xE2, 0xFD, 0xC2, 0x10, 0xE2, 0x20, 0x9C, +0x00, 0xC0, 0x9C, 0x0C, 0xC0, 0x9C, 0x51, 0xC0, 0x9C, 0x54, 0xC0, 0xA9, 0x01, 0x8D, 0x29, 0xC0, +0xA0, 0x00, 0x04, 0xA9, 0xA0, 0x99, 0x00, 0x04, 0x88, 0x10, 0xFA, 0x60, 0xE2, 0x30, 0xAE, 0x27, +0x03, 0x9D, 0xD0, 0x07, 0xAE, 0x1D, 0x03, 0xE0, 0x00, 0xF0, 0x18, 0xAE, 0x27, 0x03, 0x9D, 0xF1, +0x03, 0x9D, 0x72, 0x04, 0x9D, 0xF3, 0x04, 0xAE, 0x29, 0x03, 0xE0, 0x00, 0xF0, 0x05, 0x20, 0x89, +0x74, 0x18, 0xFB, 0xAE, 0x27, 0x03, 0xEE, 0x27, 0x03, 0x60, 0x48, 0x6A, 0x6A, 0x6A, 0x6A, 0x20, +0xD3, 0x73, 0x68, 0x29, 0x0F, 0xC9, 0x0A, 0x90, 0x02, 0x69, 0x06, 0x69, 0xB0, 0x80, 0xBD, 0xA9, +0x0F, 0x8D, 0x27, 0x03, 0xA0, 0x00, 0x5A, 0xB9, 0x15, 0x03, 0x20, 0xCA, 0x73, 0x7A, 0xC8, 0x5A, +0xC0, 0x04, 0xD0, 0xF3, 0x7A, 0x60, 0xE2, 0x30, 0x22, 0x84, 0x00, 0xE1, 0xC2, 0x30, 0xA2, 0x61, +0x03, 0xA0, 0x00, 0x03, 0xA9, 0x15, 0x00, 0x54, 0x00, 0xE1, 0x60, 0xA2, 0x00, 0x03, 0xA0, 0x61, +0x03, 0xA9, 0x15, 0x00, 0x54, 0xE1, 0x00, 0xE2, 0x30, 0xAD, 0x61, 0xC0, 0x30, 0x04, 0x22, 0x80, +0x00, 0xE1, 0xE2, 0x30, 0x60, 0xF4, 0x00, 0x00, 0xAB, 0xAB, 0x60, 0x18, 0xFB, 0xC2, 0x30, 0xA2, +0xFF, 0x01, 0x9A, 0x20, 0x25, 0x74, 0xA9, 0x00, 0x00, 0x5B, 0x1A, 0x8F, 0x18, 0x03, 0x00, 0x82, +0xF2, 0xFD, 0xA9, 0x04, 0x8D, 0x68, 0xC0, 0xA2, 0x0C, 0xBF, 0x92, 0x74, 0xFF, 0x9F, 0xC0, 0x02, +0xE1, 0xCA, 0x10, 0xF5, 0xA9, 0xC1, 0x8D, 0xF8, 0x07, 0xAD, 0xFF, 0xCF, 0xAD, 0x0D, 0xC1, 0x85, +0x10, 0xA9, 0xC1, 0x85, 0x11, 0xAD, 0x0F, 0xC1, 0x85, 0x12, 0xA9, 0xC1, 0x85, 0x13, 0xA9, 0x0E, +0xAA, 0xBF, 0x9E, 0x74, 0xFF, 0x9D, 0x00, 0x20, 0xCA, 0x10, 0xF6, 0xA2, 0xC1, 0xA0, 0x10, 0x22, +0x00, 0x20, 0x00, 0xA9, 0xAA, 0x20, 0x89, 0x74, 0x60, 0xA2, 0xC1, 0xA0, 0x10, 0x22, 0x07, 0x20, +0x00, 0x60, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x06, 0x02, 0x01, 0x01, 0x00, 0x20, 0x04, +0x20, 0x6B, 0x6C, 0x10, 0x00, 0x20, 0x0B, 0x20, 0x6B, 0x6C, 0x12, 0x00, 0x2C, 0x50, 0xC0, 0x2C, +0x52, 0xC0, 0x2C, 0x57, 0xC0, 0x20, 0xAB, 0x75, 0xB0, 0x52, 0xC2, 0x10, 0xE2, 0x20, 0xEE, 0x34, +0xC0, 0xA9, 0x00, 0x20, 0x0D, 0x75, 0xB0, 0x3A, 0xEE, 0x34, 0xC0, 0xA9, 0xC1, 0x8D, 0x29, 0xC0, +0xA9, 0x01, 0x20, 0x0D, 0x75, 0xB0, 0x2B, 0x20, 0x07, 0x76, 0xB0, 0x26, 0xEE, 0x34, 0xC0, 0xA9, +0x01, 0x8D, 0x29, 0xC0, 0xA9, 0xE0, 0x20, 0x0D, 0x75, 0xB0, 0x17, 0x20, 0x07, 0x76, 0xB0, 0x12, +0xEE, 0x34, 0xC0, 0xA9, 0xC1, 0x8D, 0x29, 0xC0, 0xA9, 0xE1, 0x20, 0x0D, 0x75, 0xB0, 0x03, 0x20, +0x07, 0x76, 0xE2, 0x30, 0xB0, 0x01, 0x6B, 0xA5, 0xF0, 0x8D, 0x16, 0x03, 0x6B, 0x85, 0xF0, 0xC2, +0x10, 0xE2, 0x20, 0xA2, 0x00, 0x04, 0xA0, 0xFF, 0xBF, 0x20, 0x3F, 0x75, 0xB0, 0x20, 0xAD, 0x8B, +0xC0, 0xAD, 0x8B, 0xC0, 0xA2, 0x00, 0xD0, 0xA0, 0xFF, 0xDF, 0x20, 0x3F, 0x75, 0xB0, 0x0F, 0xAD, +0x83, 0xC0, 0xAD, 0x83, 0xC0, 0xA2, 0x00, 0xD0, 0xA0, 0xFF, 0xFF, 0x20, 0x3F, 0x75, 0x60, 0x84, +0xF2, 0x86, 0xF4, 0xA2, 0x00, 0x00, 0x86, 0x04, 0xA5, 0xF0, 0x85, 0x06, 0xA9, 0x00, 0x85, 0x07, +0xA2, 0x02, 0x00, 0x86, 0x09, 0xA4, 0xF4, 0xA5, 0x07, 0x49, 0xFF, 0x85, 0x0B, 0x97, 0x04, 0xC8, +0xC4, 0xF2, 0x90, 0xF9, 0xA6, 0x09, 0xA4, 0xF4, 0xA5, 0x07, 0xCA, 0x10, 0x05, 0xA2, 0x02, 0x00, +0x97, 0x04, 0xC8, 0xC4, 0xF2, 0x90, 0xF3, 0xA5, 0x09, 0xD0, 0x08, 0xA5, 0x07, 0xC9, 0xFF, 0xD0, +0x02, 0x18, 0x60, 0xA6, 0x09, 0xA4, 0xF4, 0xA5, 0x0B, 0xCA, 0x10, 0x05, 0xA2, 0x02, 0x00, 0xA5, +0x07, 0xD7, 0x04, 0xD0, 0x0F, 0xC8, 0xC4, 0xF2, 0x90, 0xED, 0xC6, 0x09, 0x10, 0xB7, 0xA5, 0x07, +0x49, 0xFF, 0x80, 0xAA, 0x57, 0x04, 0x8D, 0x17, 0x03, 0x38, 0x60, 0x9C, 0x16, 0x03, 0x9C, 0x17, +0x03, 0xC2, 0x10, 0xA0, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x48, 0xA9, 0xFE, 0xA2, 0x00, 0x00, 0x99, +0x00, 0x00, 0xD9, 0x00, 0x00, 0xD0, 0x25, 0x38, 0x2A, 0xE8, 0xE0, 0x08, 0x00, 0xD0, 0xF0, 0xCA, +0xA9, 0x80, 0x99, 0x00, 0x00, 0xD9, 0x00, 0x00, 0xD0, 0x12, 0x4A, 0xCA, 0x10, 0xF4, 0x68, 0x99, +0x00, 0x00, 0xC8, 0xC0, 0x00, 0x04, 0xD0, 0xCE, 0xE2, 0x10, 0x18, 0x60, 0xE2, 0x10, 0x59, 0x00, +0x00, 0x8D, 0x17, 0x03, 0x9C, 0x16, 0x03, 0x38, 0x60, 0xE2, 0x10, 0x57, 0x04, 0x8D, 0x17, 0x03, +0xA5, 0xF0, 0x8D, 0x16, 0x03, 0x38, 0x60, 0xC2, 0x10, 0xA0, 0x00, 0x00, 0x86, 0x04, 0xA5, 0xF0, +0x85, 0x06, 0xB7, 0x04, 0x48, 0xA9, 0xFE, 0xA2, 0x00, 0x00, 0x97, 0x04, 0xD7, 0x04, 0xD0, 0xD9, +0x38, 0x2A, 0xE8, 0xE0, 0x08, 0x00, 0xD0, 0xF2, 0xCA, 0xA9, 0x80, 0x97, 0x04, 0xD7, 0x04, 0xD0, +0xC8, 0x4A, 0xCA, 0x10, 0xF6, 0x68, 0x97, 0x04, 0xC8, 0xC0, 0x00, 0x04, 0xD0, 0xD4, 0xE2, 0x10, +0x18, 0x60, 0x20, 0x4B, 0x76, 0xB0, 0x03, 0x20, 0xC9, 0x76, 0x6B, 0x78, 0x9C, 0x0C, 0x08, 0x9C, +0x16, 0x03, 0x20, 0x7A, 0x77, 0xA9, 0xFF, 0x8D, 0x0E, 0x08, 0xA9, 0x02, 0x8D, 0x0D, 0x08, 0x20, +0x95, 0x76, 0x30, 0x23, 0xA9, 0x0C, 0x8D, 0x0D, 0x08, 0x20, 0x8E, 0x76, 0x30, 0x19, 0xEE, 0x0D, +0x08, 0x20, 0x8E, 0x76, 0x30, 0x11, 0xA9, 0xFA, 0x8D, 0x0E, 0x08, 0xA9, 0x0F, 0x8D, 0x0D, 0x08, +0x20, 0x8E, 0x76, 0x30, 0x02, 0x18, 0x60, 0xA9, 0x01, 0x8D, 0x16, 0x03, 0x38, 0x60, 0xA0, 0x3B, +0x20, 0x9F, 0x76, 0x30, 0x09, 0xA0, 0x3C, 0x20, 0x9F, 0x76, 0x30, 0x02, 0xA9, 0x00, 0x60, 0xAD, +0x0D, 0x08, 0x99, 0xFD, 0xBF, 0xAD, 0x0C, 0x08, 0x2D, 0x0E, 0x08, 0x8D, 0x0F, 0x08, 0x99, 0xFD, +0xBF, 0xAD, 0x0D, 0x08, 0x99, 0xFD, 0xBF, 0xB9, 0xFD, 0xBF, 0xCD, 0x0F, 0x08, 0xD0, 0x07, 0xCE, +0x0C, 0x08, 0xD0, 0xDB, 0xF0, 0xD6, 0xA9, 0x80, 0x60, 0x78, 0x20, 0x7A, 0x77, 0xA0, 0x3C, 0x20, +0x63, 0x77, 0x20, 0xE8, 0x76, 0xD0, 0x0C, 0xA0, 0x3B, 0x20, 0x63, 0x77, 0x20, 0xE8, 0x76, 0xD0, +0x02, 0x18, 0x60, 0x8D, 0x16, 0x03, 0x38, 0x60, 0x9C, 0x0C, 0x08, 0x9C, 0x00, 0x08, 0x9C, 0x01, +0x08, 0xA9, 0x00, 0x99, 0xFD, 0xBF, 0xB9, 0xFD, 0xBF, 0x29, 0x04, 0xD0, 0x08, 0xCE, 0x00, 0x08, +0xD0, 0xEF, 0xA9, 0x05, 0x60, 0xAD, 0x0C, 0x08, 0x99, 0xFF, 0xBF, 0x9C, 0x00, 0x08, 0xA9, 0x01, +0x99, 0xFD, 0xBF, 0xB9, 0xFD, 0xBF, 0x29, 0x01, 0xD0, 0x0D, 0xCE, 0x00, 0x08, 0xD0, 0xEF, 0xCE, +0x01, 0x08, 0xD0, 0xEA, 0xA9, 0x06, 0x60, 0x9C, 0x00, 0x08, 0x9C, 0x01, 0x08, 0xA9, 0x00, 0x99, +0xFD, 0xBF, 0xB9, 0xFD, 0xBF, 0x29, 0x01, 0xD0, 0x08, 0xCE, 0x00, 0x08, 0xD0, 0xEF, 0xA9, 0x07, +0x60, 0xB9, 0xFF, 0xBF, 0xCD, 0x0C, 0x08, 0xF0, 0x03, 0xA9, 0x08, 0x60, 0xA9, 0x01, 0x99, 0xFD, +0xBF, 0xB9, 0xFD, 0xBF, 0x29, 0x70, 0xF0, 0x03, 0xA9, 0x09, 0x60, 0xCE, 0x0C, 0x08, 0xD0, 0x8B, +0xA9, 0x00, 0x60, 0xA2, 0x00, 0xBF, 0x87, 0x77, 0xFF, 0x99, 0xFD, 0xBF, 0xE8, 0xBF, 0x87, 0x77, +0xFF, 0x99, 0xFD, 0xBF, 0xE8, 0xE0, 0x10, 0xD0, 0xEC, 0x60, 0xA0, 0x3C, 0xA9, 0x09, 0x99, 0xFD, +0xBF, 0xA9, 0xC0, 0x99, 0xFD, 0xBF, 0x60, 0x09, 0x00, 0x04, 0x4C, 0x0B, 0xD0, 0x0C, 0x5E, 0x0D, +0x00, 0x0E, 0x13, 0x03, 0xC1, 0x05, 0x6A, 0x4B, 0xAB, 0xA9, 0x01, 0xA0, 0x29, 0xBE, 0x07, 0x78, +0xE0, 0xFF, 0xF0, 0x4A, 0x9F, 0x00, 0xC0, 0x00, 0xBE, 0x08, 0x78, 0x20, 0x25, 0x74, 0x1E, 0x00, +0xC0, 0x90, 0x47, 0xC9, 0x00, 0xF0, 0x20, 0x89, 0x0C, 0xD0, 0x19, 0x20, 0x25, 0x74, 0x1C, 0x68, +0xC0, 0xF0, 0x37, 0x1E, 0x00, 0xC0, 0xB0, 0x32, 0x0C, 0x68, 0xC0, 0xD0, 0x2D, 0x1E, 0x00, 0xC0, +0x90, 0x28, 0x80, 0x03, 0x0C, 0x68, 0xC0, 0x4B, 0xAB, 0xBE, 0x06, 0x78, 0x9F, 0x00, 0xC0, 0x00, +0xBE, 0x08, 0x78, 0x20, 0x25, 0x74, 0x1E, 0x00, 0xC0, 0xB0, 0x0F, 0x4B, 0xAB, 0x88, 0x88, 0x0A, +0x88, 0x10, 0xAA, 0xA9, 0x0C, 0x8D, 0x68, 0xC0, 0x18, 0x6B, 0x8D, 0x16, 0x03, 0x8E, 0x17, 0x03, +0x22, 0xF3, 0x77, 0xFF, 0x38, 0x6B, 0x0A, 0x0B, 0x17, 0x00, 0x01, 0x18, 0x50, 0x51, 0x1A, 0x52, +0x53, 0x1B, 0x56, 0x57, 0x1D, 0x0E, 0x0F, 0x1E, 0x0C, 0x0D, 0x1F, 0x08, 0x09, 0x16, 0x54, 0x55, +0x1C, 0x02, 0x03, 0x13, 0x04, 0x05, 0x14, 0x8B, 0x83, 0x11, 0x81, 0x8B, 0x12, 0xFF, 0x28, 0x06, +0x07, 0x15, 0xA9, 0x80, 0x8D, 0x36, 0xC0, 0x20, 0x5C, 0x78, 0xA0, 0x01, 0xE0, 0x19, 0xF0, 0x04, +0xE0, 0x1A, 0xD0, 0x10, 0x9C, 0x36, 0xC0, 0x20, 0x5C, 0x78, 0xA0, 0x02, 0xE0, 0x0C, 0xF0, 0xA8, +0xE0, 0x0D, 0xF0, 0xA4, 0x8C, 0x16, 0x03, 0x8E, 0x17, 0x03, 0x38, 0x6B, 0xA2, 0x00, 0xAF, 0x2E, +0xC0, 0x00, 0xCF, 0x2E, 0xC0, 0x00, 0xF0, 0xFA, 0xAF, 0x2E, 0xC0, 0x00, 0xE8, 0xCF, 0x2E, 0xC0, +0x00, 0xF0, 0xF9, 0x60, 0x20, 0x7D, 0x78, 0xB0, 0x03, 0x20, 0x35, 0x79, 0x6B, 0x78, 0xAF, 0x11, +0x00, 0xE1, 0x8D, 0x0C, 0x70, 0xAF, 0x12, 0x00, 0xE1, 0x8D, 0x08, 0x70, 0xAF, 0x13, 0x00, 0xE1, +0x8D, 0x0A, 0x70, 0xA9, 0x28, 0x8F, 0x11, 0x00, 0xE1, 0xA9, 0x79, 0x8F, 0x12, 0x00, 0xE1, 0xA9, +0xFF, 0x8F, 0x13, 0x00, 0xE1, 0x9C, 0x41, 0xC0, 0x9C, 0x00, 0x08, 0x9C, 0x01, 0x08, 0x9C, 0x00, +0x70, 0x58, 0x9C, 0x47, 0xC0, 0xA9, 0x08, 0x8D, 0x41, 0xC0, 0xAD, 0x00, 0x70, 0xC9, 0x01, 0xF0, +0x0E, 0xCE, 0x00, 0x08, 0xD0, 0xF4, 0xCE, 0x01, 0x08, 0xD0, 0xEF, 0xA9, 0x01, 0x80, 0x37, 0xAD, +0x02, 0x70, 0x29, 0x08, 0xD0, 0x04, 0xA9, 0x02, 0x80, 0x2C, 0x9C, 0x00, 0x08, 0x9C, 0x01, 0x08, +0x9C, 0x47, 0xC0, 0xA9, 0x10, 0x8D, 0x41, 0xC0, 0xAD, 0x00, 0x70, 0xC9, 0x02, 0xF0, 0x0E, 0xCE, +0x00, 0x08, 0xD0, 0xF4, 0xCE, 0x01, 0x08, 0xD0, 0xEF, 0xA9, 0x03, 0x80, 0x09, 0xAD, 0x02, 0x70, +0x29, 0x10, 0xD0, 0x05, 0xA9, 0x04, 0x8D, 0x16, 0x03, 0x78, 0xAD, 0x0C, 0x70, 0x8F, 0x11, 0x00, +0xE1, 0xAD, 0x08, 0x70, 0x8F, 0x12, 0x00, 0xE1, 0xAD, 0x0A, 0x70, 0x8F, 0x13, 0x00, 0xE1, 0xAD, +0x16, 0x03, 0xF0, 0x02, 0x38, 0x60, 0x18, 0x60, 0x9C, 0x41, 0xC0, 0xAD, 0x46, 0xC0, 0x8D, 0x02, +0x70, 0xEE, 0x00, 0x70, 0x40, 0xE2, 0x30, 0x78, 0xAF, 0x11, 0x00, 0xE1, 0x8D, 0x0C, 0x70, 0xAF, +0x12, 0x00, 0xE1, 0x8D, 0x08, 0x70, 0xAF, 0x13, 0x00, 0xE1, 0x8D, 0x0A, 0x70, 0xA9, 0xC8, 0x8F, +0x11, 0x00, 0xE1, 0xA9, 0x79, 0x8F, 0x12, 0x00, 0xE1, 0xA9, 0xFF, 0x8F, 0x13, 0x00, 0xE1, 0x9C, +0x23, 0xC0, 0x9C, 0x32, 0xC0, 0x9C, 0x06, 0x70, 0x9C, 0x00, 0x70, 0x9C, 0x01, 0x08, 0xA9, 0x10, +0x8D, 0x02, 0x08, 0x58, 0xA9, 0x04, 0x8D, 0x23, 0xC0, 0xAD, 0x00, 0x70, 0xC9, 0x01, 0xF0, 0x13, +0xCE, 0x00, 0x08, 0xD0, 0xF4, 0xCE, 0x01, 0x08, 0xD0, 0xEF, 0xCE, 0x02, 0x08, 0xD0, 0xEA, 0xA9, +0x05, 0x80, 0x0B, 0xAD, 0x02, 0x70, 0x29, 0xC4, 0xC9, 0xC4, 0xF0, 0x05, 0xA9, 0x06, 0x8D, 0x16, +0x03, 0x78, 0x9C, 0x23, 0xC0, 0xA9, 0x01, 0x8D, 0x29, 0xC0, 0xAD, 0x0C, 0x70, 0x8F, 0x11, 0x00, +0xE1, 0xAD, 0x08, 0x70, 0x8F, 0x12, 0x00, 0xE1, 0xAD, 0x0A, 0x70, 0x8F, 0x13, 0x00, 0xE1, 0xAD, +0x16, 0x03, 0xF0, 0x02, 0x38, 0x60, 0x18, 0x60, 0xAD, 0x23, 0xC0, 0x8D, 0x02, 0x70, 0xAD, 0x06, +0x70, 0xF0, 0x0D, 0xAE, 0x04, 0x70, 0xA9, 0xBF, 0x3F, 0x00, 0x9D, 0x01, 0x9F, 0x00, 0x9D, 0x01, +0x9C, 0x23, 0xC0, 0xEE, 0x00, 0x70, 0x40, 0x20, 0xAB, 0x75, 0xC2, 0x30, 0xB0, 0x29, 0x64, 0xFD, +0xF4, 0xFE, 0xFE, 0xAB, 0xAB, 0xA0, 0xFF, 0xFF, 0x20, 0x22, 0x7A, 0x4B, 0xAB, 0xA0, 0xFF, 0xFF, +0x20, 0x26, 0x7A, 0xC9, 0x34, 0x12, 0xD0, 0x02, 0x18, 0x6B, 0x8F, 0x16, 0x03, 0x00, 0xA9, 0xD2, +0xCD, 0x8F, 0x00, 0x05, 0x00, 0x38, 0x6B, 0xA9, 0x01, 0x00, 0x8D, 0x18, 0x03, 0x8D, 0x16, 0x03, +0x38, 0x6B, 0xA9, 0x00, 0x00, 0x18, 0x88, 0x71, 0xFD, 0x88, 0xF0, 0x03, 0x88, 0xD0, 0xF8, 0x71, +0xFD, 0x60, 0xF4, 0xE1, 0xE1, 0xAB, 0xAB, 0x22, 0x8C, 0x00, 0xE1, 0xC2, 0x30, 0xAD, 0xE1, 0x03, +0x8D, 0x00, 0x09, 0xAD, 0xE3, 0x03, 0x8D, 0x02, 0x09, 0xA9, 0x01, 0x00, 0x8D, 0xE5, 0x03, 0x9C, +0xE7, 0x03, 0x20, 0x84, 0x7A, 0xF0, 0x05, 0x20, 0x84, 0x7A, 0xD0, 0x26, 0xAF, 0xE3, 0x03, 0xE1, +0xCD, 0xE7, 0x03, 0xD0, 0x1D, 0x18, 0x2E, 0xE5, 0x03, 0x2E, 0xE7, 0x03, 0x90, 0xE4, 0xAD, 0x00, +0x09, 0x8D, 0xE5, 0x03, 0xAD, 0x02, 0x09, 0x8D, 0xE7, 0x03, 0xE2, 0x30, 0x22, 0x88, 0x00, 0xE1, +0x18, 0x6B, 0x38, 0x6B, 0xE2, 0x30, 0x22, 0x88, 0x00, 0xE1, 0x22, 0x8C, 0x00, 0xE1, 0xC2, 0x30, +0xAD, 0xE1, 0x03, 0xCD, 0xE5, 0x03, 0x60, 0x9C, 0x35, 0xC0, 0xC2, 0x30, 0xA9, 0x00, 0x04, 0x85, +0x0A, 0x64, 0x0C, 0xA9, 0x5A, 0x5A, 0x20, 0xE9, 0x7A, 0xE6, 0x0C, 0x20, 0xE9, 0x7A, 0xE2, 0x20, +0xA9, 0x01, 0x8D, 0x35, 0xC0, 0xC2, 0x10, 0xA9, 0xA5, 0x8D, 0x00, 0x08, 0x20, 0xE9, 0x7A, 0xC6, +0x0C, 0x20, 0xE9, 0x7A, 0x20, 0xF6, 0x7A, 0xB0, 0x1A, 0xE6, 0x0C, 0x20, 0xF6, 0x7A, 0xB0, 0x13, +0xA9, 0x5A, 0x8D, 0x00, 0x08, 0xA9, 0xE0, 0x85, 0x0C, 0x20, 0xF6, 0x7A, 0xB0, 0x05, 0xE6, 0x0C, +0x20, 0xF6, 0x7A, 0xE2, 0x30, 0x9C, 0x35, 0xC0, 0x60, 0xA0, 0x00, 0x00, 0x97, 0x0A, 0xC8, 0xC8, +0xC0, 0x00, 0x04, 0xD0, 0xF7, 0x60, 0xA0, 0x00, 0x00, 0xB7, 0x0A, 0xCD, 0x00, 0x08, 0xD0, 0x09, +0xC8, 0xC8, 0xC0, 0x00, 0x04, 0xD0, 0xF2, 0x18, 0x60, 0x38, 0x60, 0xC2, 0x30, 0xA9, 0x00, 0x08, +0x85, 0x10, 0x64, 0x12, 0x20, 0x99, 0x7B, 0xA0, 0xFF, 0x98, 0x99, 0xFF, 0x08, 0x88, 0xD0, 0xF9, +0x20, 0x5D, 0x7B, 0xB0, 0x23, 0xA2, 0x05, 0x8E, 0x27, 0x03, 0xAE, 0x27, 0x03, 0xBF, 0x7E, 0x7B, +0xFF, 0xA0, 0xFF, 0x99, 0xFF, 0x08, 0x88, 0xD0, 0xFA, 0x20, 0x5D, 0x7B, 0xB0, 0x07, 0xCE, 0x27, +0x03, 0x10, 0xE7, 0x80, 0x0E, 0xEE, 0x16, 0x03, 0xEE, 0x16, 0x03, 0x8D, 0x17, 0x03, 0x8C, 0x18, +0x03, 0x38, 0x6B, 0xC2, 0x30, 0xA2, 0x00, 0x08, 0x20, 0x84, 0x7B, 0x18, 0x6B, 0xC2, 0x30, 0xA2, +0x00, 0x09, 0x20, 0x84, 0x7B, 0xA9, 0x00, 0x0A, 0x85, 0x10, 0x20, 0x99, 0x7B, 0xA0, 0xFC, 0xB9, +0xFF, 0x08, 0xD9, 0xFF, 0x09, 0xD0, 0x05, 0x88, 0xD0, 0xF5, 0x18, 0x60, 0x38, 0x60, 0xAA, 0x55, +0x00, 0xFF, 0xCC, 0x33, 0xA0, 0xC0, 0x02, 0xA9, 0xFF, 0x00, 0x54, 0xE1, 0x00, 0xE2, 0x30, 0x22, +0x80, 0x00, 0xE1, 0x20, 0x25, 0x74, 0xC2, 0x30, 0x60, 0xE2, 0x30, 0x8B, 0x08, 0x78, 0xA2, 0x00, +0x9B, 0xE2, 0x40, 0x20, 0xB5, 0x7B, 0x5A, 0x9B, 0x97, 0x10, 0x7A, 0xE8, 0xC8, 0xD0, 0xF2, 0x28, +0x18, 0xE2, 0x30, 0xAB, 0x60, 0x48, 0x98, 0x48, 0x29, 0xE0, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x09, +0x38, 0x50, 0x02, 0x09, 0x80, 0xEB, 0x68, 0x29, 0x1F, 0x0A, 0x0A, 0xEB, 0x08, 0x20, 0xE4, 0x7B, +0xEB, 0x20, 0xE4, 0x7B, 0x28, 0x68, 0x20, 0xE5, 0x7B, 0x48, 0xAD, 0x34, 0xC0, 0x29, 0xDF, 0x8D, +0x34, 0xC0, 0x68, 0x60, 0xB8, 0x8D, 0x33, 0xC0, 0xAD, 0x34, 0xC0, 0x29, 0x3F, 0x70, 0x04, 0x09, +0xA0, 0x80, 0x02, 0x09, 0xE0, 0x8D, 0x34, 0xC0, 0xAD, 0x34, 0xC0, 0x30, 0xFB, 0xAD, 0x33, 0xC0, +0x60, 0xC2, 0x30, 0xA9, 0x00, 0x14, 0x8D, 0x00, 0x0B, 0xA9, 0x04, 0x0B, 0x85, 0x10, 0xE2, 0x30, +0x20, 0x47, 0x7C, 0xB0, 0x28, 0x92, 0x10, 0xC2, 0x30, 0xE6, 0x10, 0xEE, 0x00, 0x0B, 0xAD, 0x00, +0x0B, 0xC9, 0x00, 0x20, 0x30, 0xE8, 0xA9, 0x04, 0x0B, 0x85, 0xFD, 0xA0, 0xFF, 0x0B, 0x20, 0x22, +0x7A, 0xC9, 0x72, 0xF7, 0xF0, 0x05, 0xC9, 0x72, 0x26, 0xD0, 0x07, 0x18, 0x6B, 0xA9, 0x01, 0x8D, +0x18, 0x03, 0x8D, 0x16, 0x03, 0x38, 0x6B, 0xC2, 0x20, 0xA9, 0x00, 0x00, 0x8F, 0xD6, 0x0F, 0xE1, +0x8F, 0xD8, 0x0F, 0xE1, 0x8F, 0xDA, 0x0F, 0xE1, 0xF4, 0x00, 0x00, 0xF4, 0x02, 0x0B, 0xF4, 0x00, +0x00, 0xF4, 0x00, 0x0B, 0xF4, 0x09, 0x00, 0x48, 0x8B, 0xA2, 0xFF, 0xDA, 0xF4, 0x7C, 0x7C, 0xAF, +0x2E, 0x80, 0xFF, 0xAA, 0xDA, 0xAF, 0x2C, 0x80, 0xFF, 0x48, 0xC2, 0x30, 0x6B, 0xE2, 0x30, 0x68, +0x68, 0x68, 0xAD, 0x02, 0x0B, 0x60, 0xF4, 0xE1, 0x00, 0xAB, 0xAD, 0x35, 0xC0, 0x48, 0xA9, 0x5F, +0x8D, 0x35, 0xC0, 0xA2, 0x03, 0xBF, 0x31, 0x7D, 0xFF, 0x85, 0xF0, 0x85, 0x06, 0xDA, 0xC2, 0x30, +0x64, 0x04, 0xA0, 0x00, 0x04, 0xA2, 0xFE, 0xBF, 0x20, 0x02, 0x7D, 0xE2, 0x20, 0xAD, 0x8B, 0xC0, +0xAD, 0x8B, 0xC0, 0xC2, 0x20, 0xA0, 0x00, 0xD0, 0xA2, 0xFE, 0xFF, 0x20, 0x02, 0x7D, 0xE2, 0x30, +0xFA, 0xCA, 0x10, 0xD1, 0xA2, 0x03, 0xBF, 0x31, 0x7D, 0xFF, 0x85, 0xF0, 0x85, 0x06, 0xDA, 0xC2, +0x30, 0x64, 0x04, 0xA0, 0x00, 0x04, 0xA2, 0xFE, 0xBF, 0x20, 0x13, 0x7D, 0xB0, 0x13, 0xE2, 0x20, +0xAD, 0x8B, 0xC0, 0xAD, 0x8B, 0xC0, 0xC2, 0x20, 0xA0, 0x00, 0xD0, 0xA2, 0xFE, 0xFF, 0x20, 0x13, +0x7D, 0xE2, 0x30, 0xFA, 0xB0, 0x03, 0xCA, 0x10, 0xCD, 0x2C, 0x81, 0xC0, 0x68, 0x8D, 0x35, 0xC0, +0xAB, 0x6B, 0x86, 0xF2, 0xBB, 0x98, 0x18, 0x65, 0xF0, 0x9B, 0x97, 0x04, 0xC8, 0xC8, 0xC4, 0xF2, +0x90, 0xF2, 0x60, 0x86, 0xF2, 0xBB, 0x98, 0x18, 0x65, 0xF0, 0x9B, 0xD7, 0x04, 0xD0, 0x08, 0xC8, +0xC8, 0xC4, 0xF2, 0x90, 0xF0, 0x18, 0x60, 0x8D, 0x16, 0x03, 0x98, 0xEB, 0x8D, 0x17, 0x03, 0x38, +0x60, 0x00, 0x01, 0xE0, 0xE1, 0x18, 0xFB, 0xC2, 0x30, 0x8B, 0x0B, 0x3B, 0x38, 0xE9, 0x10, 0x00, +0x1B, 0x1A, 0x48, 0x2B, 0xF4, 0x00, 0x00, 0xAB, 0xAB, 0x20, 0x2D, 0x7F, 0xE2, 0x30, 0x20, 0x94, +0x7D, 0x90, 0x04, 0xA9, 0x01, 0xB0, 0x1E, 0x20, 0xD9, 0x7D, 0x90, 0x04, 0xA9, 0x02, 0xB0, 0x15, +0x20, 0x37, 0x7E, 0x90, 0x04, 0xA9, 0x03, 0xB0, 0x0C, 0x20, 0x81, 0x7E, 0x90, 0x04, 0xA9, 0x04, +0xB0, 0x03, 0x20, 0xB6, 0x7E, 0xE2, 0x30, 0x9C, 0x16, 0x03, 0x9C, 0x17, 0x03, 0x8D, 0x18, 0x03, +0xA9, 0x0C, 0x8D, 0x15, 0x03, 0x08, 0x20, 0x2D, 0x7F, 0xFA, 0x3B, 0x18, 0x69, 0x10, 0x1B, 0xDA, +0x28, 0x2B, 0xAB, 0x6B, 0xC2, 0x10, 0x9C, 0x3E, 0xC0, 0x9C, 0x3F, 0xC0, 0xA9, 0x40, 0x8D, 0x3C, +0xC0, 0xAD, 0x3C, 0xC0, 0xAD, 0x3D, 0xC0, 0xA0, 0x00, 0x00, 0xA2, 0x07, 0x00, 0xBF, 0xD1, 0x7D, +0xFF, 0x8D, 0x3D, 0xC0, 0x20, 0xCA, 0x7D, 0xDF, 0xD1, 0x7D, 0xFF, 0xD0, 0x65, 0xCA, 0x10, 0xED, +0x88, 0x8C, 0x3E, 0xC0, 0xD0, 0xE4, 0xE2, 0x10, 0x18, 0x60, 0xAD, 0x3D, 0xC0, 0xAD, 0x3D, 0xC0, +0x60, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0xA9, 0x60, 0x8D, 0x3C, 0xC0, 0xAD, 0x3C, +0xC0, 0xAD, 0x3D, 0xC0, 0xC2, 0x10, 0xA2, 0x01, 0x00, 0x20, 0x25, 0x7E, 0x8E, 0x3E, 0xC0, 0xA9, +0xA5, 0x8D, 0x3D, 0xC0, 0x9C, 0x3E, 0xC0, 0x9C, 0x3F, 0xC0, 0xA0, 0x00, 0x00, 0xAD, 0x3D, 0xC0, +0xAD, 0x3D, 0xC0, 0xC9, 0xA5, 0xF0, 0x10, 0x88, 0xD0, 0xF6, 0xC2, 0x20, 0x8A, 0x0A, 0xAA, 0xE2, +0x20, 0x90, 0xD6, 0xE2, 0x30, 0x18, 0x60, 0xE8, 0xE8, 0xEC, 0x3E, 0xC0, 0x08, 0xCA, 0xCA, 0x28, +0xF0, 0xE5, 0xE2, 0x31, 0x60, 0xDA, 0xA2, 0x00, 0x00, 0x9C, 0x3E, 0xC0, 0x9C, 0x3F, 0xC0, 0x9C, +0x3D, 0xC0, 0xCA, 0xD0, 0xFA, 0xFA, 0x60, 0x9C, 0x3E, 0xC0, 0x9C, 0x3C, 0xC0, 0xAD, 0x3D, 0xC0, +0xA0, 0x00, 0xA2, 0x07, 0xBF, 0xD1, 0x7D, 0xFF, 0xDA, 0xBB, 0x3F, 0x79, 0x7E, 0xFF, 0x85, 0x08, +0x8D, 0x3D, 0xC0, 0x20, 0xCA, 0x7D, 0x3F, 0x79, 0x7E, 0xFF, 0xFA, 0xC5, 0x08, 0xD0, 0x18, 0xCA, +0x10, 0xE2, 0xEE, 0x3E, 0xC0, 0xAD, 0x3E, 0xC0, 0xC9, 0xE0, 0xF0, 0x09, 0x2A, 0x2A, 0x2A, 0x2A, +0x29, 0x07, 0xA8, 0x80, 0xCD, 0x18, 0x60, 0x38, 0x60, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xF6, 0x7F, +0x00, 0x9C, 0x3E, 0xC0, 0x9C, 0x3F, 0xC0, 0x9C, 0x3C, 0xC0, 0xA9, 0xA5, 0x8D, 0x3D, 0xC0, 0xA9, +0x40, 0x8D, 0x3C, 0xC0, 0xA9, 0x5A, 0x8D, 0x3D, 0xC0, 0x9C, 0x3C, 0xC0, 0x20, 0xCA, 0x7D, 0xC9, +0xA5, 0xD0, 0x11, 0x8D, 0x3D, 0xC0, 0xA9, 0x40, 0x8D, 0x3C, 0xC0, 0x20, 0xCA, 0x7D, 0xC9, 0x5A, +0xD0, 0x02, 0x18, 0x60, 0x38, 0x60, 0x08, 0xE2, 0x30, 0x20, 0x2D, 0x7F, 0x20, 0xAD, 0x7F, 0x64, +0x00, 0x64, 0x02, 0x64, 0x03, 0xA9, 0x20, 0x85, 0x06, 0xC2, 0x20, 0xA9, 0xD5, 0x7F, 0x8F, 0x11, +0x00, 0xE1, 0xA9, 0x7F, 0xFF, 0x8F, 0x12, 0x00, 0xE1, 0xE2, 0x20, 0x58, 0xA9, 0x80, 0xA2, 0x40, +0xA0, 0x20, 0x20, 0x7A, 0x7F, 0xA9, 0x08, 0xA2, 0x20, 0x20, 0xA2, 0x7F, 0x1A, 0xE8, 0xC6, 0x06, +0xD0, 0xF7, 0x24, 0x06, 0xD0, 0x1B, 0xA5, 0x00, 0xC9, 0x20, 0x90, 0x06, 0xA2, 0x00, 0x28, 0x18, +0x90, 0x1B, 0xA5, 0x00, 0x18, 0x69, 0xA0, 0xAA, 0xA9, 0x08, 0x20, 0xA2, 0x7F, 0xA9, 0xFF, 0x85, +0x06, 0xC2, 0x20, 0xC6, 0x02, 0xE2, 0x20, 0xD0, 0xD9, 0xA2, 0x05, 0x28, 0x38, 0x08, 0xE2, 0x20, +0xAD, 0x3C, 0xC0, 0x29, 0xF0, 0x09, 0x08, 0x8D, 0x3C, 0xC0, 0x8A, 0x28, 0x60, 0x08, 0xE2, 0x30, +0xA9, 0x3E, 0xA2, 0xE1, 0x20, 0xA2, 0x7F, 0xA9, 0x00, 0xAA, 0xA0, 0x60, 0x20, 0x7A, 0x7F, 0xA9, +0x3F, 0xA2, 0xC0, 0xA0, 0x20, 0x20, 0x7A, 0x7F, 0xA9, 0x00, 0xA2, 0x80, 0xA0, 0x10, 0x20, 0x7A, +0x7F, 0xA9, 0x80, 0xA2, 0x90, 0xA0, 0x10, 0x20, 0x7A, 0x7F, 0xA9, 0x01, 0xA2, 0xA0, 0xA0, 0x20, +0x20, 0x7A, 0x7F, 0xA9, 0x04, 0x8D, 0x3C, 0xC0, 0xA9, 0xE0, 0x8D, 0x3E, 0xC0, 0xA2, 0x22, 0xAD, +0x3D, 0xC0, 0xCA, 0x10, 0xFA, 0x28, 0xEE, 0x34, 0xC0, 0x60, 0xDA, 0x08, 0xE2, 0x30, 0x8E, 0x3E, +0xC0, 0xA2, 0x24, 0x8E, 0x3C, 0xC0, 0x8D, 0x3D, 0xC0, 0x88, 0xD0, 0xFA, 0x28, 0xFA, 0x60, 0x08, +0xE2, 0x30, 0x8E, 0x3E, 0xC0, 0xA9, 0x24, 0x8D, 0x3C, 0xC0, 0xAD, 0x3D, 0xC0, 0xAD, 0x3D, 0xC0, +0x28, 0x60, 0x08, 0xC2, 0x30, 0xA0, 0x01, 0x00, 0x20, 0x7A, 0x7F, 0x28, 0x60, 0x48, 0xDA, 0x08, +0xC2, 0x10, 0xE2, 0x20, 0xA2, 0x00, 0x00, 0x8E, 0x3E, 0xC0, 0xA9, 0x64, 0x8D, 0x3C, 0xC0, 0xA9, +0x00, 0xC9, 0x00, 0xD0, 0x05, 0x1A, 0x8D, 0x3D, 0xC0, 0xCA, 0x8D, 0x3D, 0xC0, 0x1A, 0xCA, 0xD0, +0xF0, 0x28, 0xFA, 0x68, 0x60, 0x48, 0xDA, 0x08, 0xE2, 0x30, 0xA2, 0xE0, 0x20, 0x8F, 0x7F, 0x0A, +0xB0, 0x15, 0x4A, 0x4A, 0x29, 0x1F, 0x64, 0x02, 0x64, 0x03, 0x18, 0x69, 0xA0, 0xAA, 0xA9, 0x01, +0x20, 0xA2, 0x7F, 0xE6, 0x00, 0x64, 0x06, 0x28, 0xFA, 0x68, 0x18, 0x40, 0x00, 0x00, 0x42, 0x71, +0x17, 0x00, 0x00, 0x00, 0x5B, 0x80, 0xFF, 0x00, 0x94, 0x80, 0xFF, 0x00, 0x94, 0x80, 0xFF, 0x00, +0x96, 0x80, 0xFF, 0x00, 0x94, 0x80, 0xFF, 0x00, 0x9C, 0x80, 0xFF, 0x00, 0x94, 0x80, 0xFF, 0x00, +0x94, 0x80, 0xFF, 0x00, 0x9D, 0x82, 0xFF, 0x00, 0xBE, 0x82, 0xFF, 0x00, 0xDB, 0x82, 0xFF, 0x00, +0xFB, 0x84, 0xFF, 0x00, 0x14, 0x83, 0xFF, 0x00, 0x5E, 0x83, 0xFF, 0x00, 0xA2, 0x80, 0xFF, 0x00, +0xAE, 0x80, 0xFF, 0x00, 0xBA, 0x80, 0xFF, 0x00, 0xE3, 0x80, 0xFF, 0x00, 0xCF, 0x80, 0xFF, 0x00, +0xFB, 0x80, 0xFF, 0x00, 0x3D, 0x82, 0xFF, 0x00, 0x90, 0x82, 0xFF, 0x00, 0xE2, 0x10, 0x8B, 0x20, +0x82, 0xF8, 0xA9, 0x40, 0x00, 0x8D, 0xD6, 0x0F, 0x9C, 0xD8, 0x0F, 0x9C, 0xDA, 0x0F, 0xA2, 0x0A, +0x9E, 0xD0, 0x03, 0xCA, 0x10, 0xFA, 0xA2, 0x5C, 0x8E, 0xDC, 0x03, 0xA2, 0xFF, 0x8E, 0x47, 0x00, +0xA9, 0x8A, 0x81, 0x8D, 0x45, 0x00, 0xA2, 0xFF, 0x8E, 0x43, 0x00, 0xA9, 0x85, 0x84, 0x8D, 0x41, +0x00, 0xC2, 0x10, 0x80, 0x35, 0x80, 0x34, 0x8B, 0xA9, 0x00, 0x02, 0x80, 0x2B, 0x8B, 0xA9, 0xFF, +0xFF, 0x80, 0x25, 0x8B, 0x20, 0x82, 0xF8, 0xA9, 0x40, 0x00, 0x0C, 0xD6, 0x0F, 0x80, 0x1B, 0x8B, +0x20, 0x82, 0xF8, 0xA9, 0x40, 0x00, 0x1C, 0xD6, 0x0F, 0x80, 0x0F, 0x8B, 0x20, 0x82, 0xF8, 0xA9, +0x00, 0x00, 0x2C, 0xD5, 0x0F, 0x50, 0x01, 0x1A, 0x83, 0x08, 0xAB, 0xA9, 0x00, 0x00, 0x18, 0x6B, +0x0B, 0x08, 0x8B, 0x20, 0xAF, 0x84, 0x1B, 0xA0, 0x0B, 0x00, 0xB9, 0xD0, 0x03, 0x97, 0x20, 0x88, +0x10, 0xF8, 0x80, 0x12, 0x0B, 0x08, 0x8B, 0x20, 0xAF, 0x84, 0x1B, 0xA0, 0x0B, 0x00, 0xB7, 0x20, +0x99, 0xD0, 0x03, 0x88, 0x10, 0xF8, 0xA2, 0x04, 0x00, 0x4C, 0xBD, 0x84, 0x0B, 0x08, 0x8B, 0x20, +0xAF, 0x84, 0x1B, 0xA5, 0x25, 0xD0, 0x77, 0x20, 0xB2, 0x83, 0xB0, 0x72, 0xA5, 0x20, 0x29, 0x0F, +0x09, 0xF0, 0x20, 0xD6, 0x83, 0xB0, 0x67, 0xC2, 0x20, 0x7B, 0x69, 0x0A, 0x00, 0x5B, 0xE2, 0x20, +0x20, 0x56, 0x84, 0x08, 0xC2, 0x20, 0x7B, 0xE9, 0x09, 0x00, 0x5B, 0xE2, 0x20, 0x28, 0xB0, 0x4E, +0xA5, 0x0A, 0xF0, 0x3A, 0xAD, 0xD8, 0x0F, 0xC9, 0x10, 0xB0, 0x3B, 0xA8, 0x0A, 0x0A, 0xEB, 0xA9, +0x00, 0xEB, 0xAA, 0xC8, 0x98, 0x8D, 0xD9, 0x0F, 0x8D, 0xD8, 0x0F, 0xA5, 0x20, 0x9D, 0x4A, 0x15, +0xA5, 0x22, 0x9D, 0x4B, 0x15, 0xA5, 0x23, 0x9D, 0x4C, 0x15, 0xA5, 0x24, 0x9D, 0x4D, 0x15, 0x9C, +0xDA, 0x0F, 0x9C, 0xDB, 0x0F, 0x20, 0xEE, 0x83, 0xA2, 0x06, 0x00, 0x4C, 0xBD, 0x84, 0x20, 0xEE, +0x83, 0xA0, 0x83, 0x00, 0x80, 0x0E, 0x20, 0xEE, 0x83, 0xA0, 0x84, 0x00, 0x80, 0x06, 0x20, 0xEE, +0x83, 0xA0, 0x10, 0x00, 0xA2, 0x06, 0x00, 0x4C, 0xC4, 0x84, 0x0B, 0x08, 0x8B, 0xC2, 0x30, 0x20, +0xAF, 0x84, 0x1B, 0xAD, 0xD6, 0x0F, 0x30, 0x34, 0xCE, 0xD9, 0x0F, 0x30, 0x34, 0xAD, 0xDA, 0x0F, +0xCD, 0xD8, 0x0F, 0x90, 0x05, 0xA9, 0x00, 0x8D, 0xDA, 0x0F, 0xEE, 0xDA, 0x0F, 0x0A, 0x0A, 0xEB, +0xA9, 0x00, 0xEB, 0xAA, 0xA0, 0x17, 0x82, 0x8C, 0xDD, 0x03, 0xA9, 0xFF, 0x8D, 0xDF, 0x03, 0xBD, +0x4A, 0x15, 0x09, 0xC0, 0x8D, 0x26, 0xC0, 0xA9, 0x80, 0x0C, 0xD6, 0x0F, 0xC2, 0x30, 0x4C, 0xEE, +0x84, 0xA9, 0x0F, 0x8D, 0xDA, 0x0F, 0xAD, 0xDA, 0x0F, 0xC9, 0x02, 0xD0, 0x01, 0x3A, 0x09, 0x70, +0x20, 0xA2, 0x83, 0xCE, 0xDA, 0x0F, 0x10, 0xEE, 0xAD, 0xD8, 0x0F, 0x8D, 0xDA, 0x0F, 0xCE, 0xDA, +0x0F, 0xAD, 0xDA, 0x0F, 0x30, 0x13, 0x0A, 0x0A, 0xEB, 0xA9, 0x00, 0xEB, 0xA8, 0xB9, 0x4A, 0x15, +0x29, 0x0F, 0x09, 0x50, 0x20, 0xA2, 0x83, 0x80, 0xE5, 0xAD, 0xDB, 0x0F, 0x8D, 0xDA, 0x0F, 0xAD, +0xD8, 0x0F, 0x8D, 0xD9, 0x0F, 0x80, 0xB5, 0xA5, 0x00, 0xF0, 0x1F, 0x4B, 0x62, 0x1A, 0x00, 0xAD, +0xD8, 0x0F, 0x8D, 0xD9, 0x0F, 0xAD, 0xDA, 0x0F, 0x3A, 0x8D, 0xDB, 0x0F, 0x0A, 0x0A, 0xAA, 0xBD, +0x4D, 0x15, 0x48, 0xC2, 0x30, 0xBD, 0x4B, 0x15, 0x3A, 0x48, 0xE2, 0x30, 0x18, 0x6B, 0x0B, 0x08, +0x8B, 0x20, 0xAF, 0x84, 0x1B, 0xAD, 0xD6, 0x0F, 0xE2, 0x30, 0x30, 0x3A, 0xAE, 0xD8, 0x0F, 0xCA, +0x30, 0x3B, 0x8A, 0x0A, 0x0A, 0xA8, 0xB9, 0x4A, 0x15, 0xC5, 0x20, 0xD0, 0xF2, 0xC2, 0x20, 0xB9, +0x50, 0x15, 0x99, 0x4C, 0x15, 0xB9, 0x4E, 0x15, 0x99, 0x4A, 0x15, 0xC8, 0xC8, 0xC8, 0xC8, 0xE8, +0xEC, 0xD8, 0x0F, 0x90, 0xEA, 0xCE, 0xD8, 0x0F, 0xAE, 0xD8, 0x0F, 0x8E, 0xD9, 0x0F, 0x9C, 0xDA, +0x0F, 0xA2, 0x02, 0x4C, 0xBD, 0x84, 0xA0, 0x82, 0xA2, 0x02, 0x4C, 0xC4, 0x84, 0xA0, 0x10, 0x80, +0xF7, 0xA9, 0x00, 0x00, 0x8F, 0xD8, 0x0F, 0xE1, 0x8F, 0xDA, 0x0F, 0xE1, 0x18, 0x6B, 0x0B, 0x08, +0x8B, 0x20, 0xAF, 0x84, 0x1B, 0x20, 0x9B, 0x83, 0xB0, 0x0D, 0x20, 0xC3, 0x83, 0xB0, 0x08, 0x20, +0xEE, 0x83, 0xA2, 0x08, 0x00, 0x80, 0x4F, 0x20, 0xEE, 0x83, 0xA2, 0x08, 0x00, 0x80, 0x50, 0x0B, +0x08, 0x8B, 0x20, 0xAF, 0x84, 0x1B, 0x20, 0x9B, 0x83, 0xB0, 0xEC, 0xA0, 0x00, 0x00, 0xC4, 0x26, +0xB0, 0xDD, 0x20, 0x42, 0x84, 0xB0, 0xE0, 0x97, 0x22, 0xC8, 0x80, 0xF2, 0x0B, 0x08, 0x8B, 0x20, +0xAF, 0x84, 0x1B, 0x20, 0x9B, 0x83, 0xB0, 0x21, 0xA7, 0x22, 0x20, 0xD6, 0x83, 0xB0, 0x1A, 0xA0, +0x01, 0x00, 0xB7, 0x22, 0x20, 0xD6, 0x83, 0xB0, 0x10, 0x20, 0x42, 0x84, 0xB0, 0x0B, 0x87, 0x26, +0x20, 0xEE, 0x83, 0xA2, 0x0A, 0x00, 0x4C, 0xBD, 0x84, 0x20, 0xEE, 0x83, 0xA2, 0x0A, 0x00, 0xA0, +0x10, 0x00, 0x4C, 0xC4, 0x84, 0x08, 0xE2, 0x20, 0x8B, 0xA9, 0xE1, 0x48, 0xAB, 0xA3, 0x0E, 0xF0, +0x05, 0xA0, 0x10, 0x09, 0x80, 0x23, 0xA9, 0x80, 0x0C, 0xD6, 0x0F, 0xF0, 0x05, 0xA0, 0x82, 0x09, +0x80, 0x17, 0xA3, 0x0B, 0x8D, 0xDD, 0x03, 0xA3, 0x0C, 0x8D, 0xDE, 0x03, 0xA3, 0x0D, 0x8D, 0xDF, +0x03, 0xA3, 0x09, 0x8D, 0x26, 0xC0, 0xA0, 0x00, 0x00, 0xAB, 0x28, 0xA3, 0x05, 0x83, 0x0B, 0xA3, +0x03, 0x83, 0x09, 0xA3, 0x01, 0x83, 0x07, 0x68, 0x68, 0x68, 0x98, 0xC9, 0x01, 0x00, 0x6B, 0x0B, +0x08, 0x8B, 0x20, 0xAF, 0x84, 0x1B, 0xA5, 0x25, 0xD0, 0x47, 0xA9, 0x80, 0x0C, 0xD6, 0x0F, 0xD0, +0x19, 0xA4, 0x22, 0x8C, 0xDD, 0x03, 0xA5, 0x24, 0x8D, 0xDF, 0x03, 0x20, 0x9B, 0x83, 0xB0, 0x13, +0xA5, 0x26, 0x20, 0xD6, 0x83, 0xB0, 0x0C, 0x4C, 0xAF, 0x82, 0xA2, 0x08, 0x00, 0xA0, 0x82, 0x00, +0x4C, 0xC4, 0x84, 0xA9, 0x80, 0x1C, 0xD6, 0x0F, 0x4C, 0xB7, 0x82, 0x20, 0xB2, 0x83, 0xB0, 0x11, +0xA5, 0x20, 0x20, 0xD6, 0x83, 0xB0, 0x0A, 0x29, 0x10, 0xF0, 0x06, 0xAD, 0x26, 0xC0, 0x0C, 0xD7, +0x0F, 0x60, 0xAD, 0xD6, 0x0F, 0x10, 0x0A, 0x20, 0x56, 0x84, 0xB0, 0x06, 0xA9, 0x20, 0x0C, 0xD6, +0x0F, 0x18, 0x60, 0xA0, 0x00, 0x00, 0xC4, 0x26, 0xB0, 0x0A, 0xB7, 0x22, 0x20, 0xD6, 0x83, 0xB0, +0x04, 0xC8, 0x80, 0xF2, 0x18, 0x60, 0xAA, 0xAD, 0x27, 0xC0, 0x6A, 0x8A, 0xB0, 0x0F, 0x8D, 0x26, +0xC0, 0xA2, 0x4C, 0x1D, 0xCA, 0xF0, 0x6D, 0xAD, 0x27, 0xC0, 0x6A, 0xB0, 0xF7, 0x60, 0xE2, 0x30, +0xA9, 0x50, 0x2D, 0xD7, 0x0F, 0x8D, 0xD7, 0x0F, 0xF0, 0x27, 0xC9, 0x40, 0xD0, 0x0A, 0x8B, 0xA9, +0x00, 0x48, 0xAB, 0x22, 0x50, 0x00, 0xE1, 0xAB, 0xAD, 0xD7, 0x0F, 0x0A, 0x0A, 0xF0, 0x12, 0x90, +0x03, 0x8D, 0x10, 0xC0, 0xA9, 0x00, 0x8D, 0xD7, 0x0F, 0x8B, 0x48, 0xAB, 0x22, 0x4C, 0x00, 0xE1, +0xAB, 0xA9, 0x20, 0x1C, 0xD6, 0x0F, 0xF0, 0x15, 0xA9, 0x80, 0x1C, 0xD6, 0x0F, 0xF0, 0x0E, 0xF4, +0x00, 0x00, 0x0B, 0xE2, 0x30, 0x22, 0xDC, 0x03, 0xE1, 0xC2, 0x30, 0x68, 0x68, 0xE2, 0x20, 0xC2, +0x10, 0x60, 0x18, 0xA2, 0x4C, 0x1D, 0xCA, 0xF0, 0x0B, 0xAD, 0x27, 0xC0, 0x29, 0x20, 0xF0, 0xF6, +0xAD, 0x26, 0xC0, 0x60, 0x38, 0x60, 0x20, 0x42, 0x84, 0xB0, 0x24, 0x30, 0x05, 0x0C, 0xD7, 0x0F, +0x80, 0xF4, 0x29, 0x7F, 0x0C, 0xD7, 0x0F, 0x29, 0x07, 0x85, 0x00, 0xEB, 0xA9, 0x00, 0xEB, 0xA8, +0xF0, 0x0C, 0xC8, 0x20, 0x42, 0x84, 0xB0, 0x07, 0xBB, 0x95, 0x00, 0x88, 0xD0, 0xF5, 0x60, 0xA9, +0x80, 0x1C, 0xD6, 0x0F, 0x60, 0xA8, 0x0B, 0x08, 0x8B, 0xC2, 0x30, 0x20, 0xAF, 0x84, 0x1B, 0xA9, +0x80, 0x1C, 0xD6, 0x0F, 0x98, 0x20, 0x67, 0x84, 0x90, 0x04, 0xA9, 0x00, 0x85, 0x00, 0xF4, 0x00, +0x00, 0x0B, 0xE2, 0x30, 0x22, 0xDC, 0x03, 0xE1, 0xC2, 0x30, 0x68, 0x68, 0x4C, 0xEE, 0x84, 0x78, +0x3B, 0x38, 0xE9, 0x13, 0x00, 0x5B, 0x3A, 0x20, 0x82, 0xF8, 0xE2, 0x20, 0x60, 0xC2, 0x30, 0xA0, +0x00, 0x00, 0x80, 0x07, 0xC2, 0x30, 0x98, 0x09, 0x00, 0x09, 0xA8, 0xA5, 0x1E, 0x95, 0x1E, 0xA5, +0x1C, 0x95, 0x1C, 0xA5, 0x1A, 0x95, 0x1A, 0x86, 0x14, 0x3B, 0x18, 0x69, 0x16, 0x00, 0x1B, 0x65, +0x14, 0x69, 0x04, 0x00, 0xAA, 0xAB, 0x28, 0x2B, 0x98, 0xC9, 0x01, 0x00, 0x9A, 0x6B, 0x3B, 0x18, +0x69, 0x16, 0x00, 0x1B, 0xAB, 0x28, 0x2B, 0x18, 0x6B, 0x4C, 0xE5, 0x85, 0xC2, 0x10, 0xA2, 0x70, +0x17, 0xCA, 0xF0, 0x09, 0xAD, 0x26, 0xC0, 0xAD, 0x27, 0xC0, 0x6A, 0xB0, 0xF4, 0xA2, 0x4C, 0x1D, +0xA9, 0x07, 0x8D, 0x26, 0xC0, 0xCA, 0xF0, 0x09, 0xAD, 0x26, 0xC0, 0xAD, 0x27, 0xC0, 0x6A, 0xB0, +0xF4, 0x20, 0x6A, 0x86, 0xB0, 0xD3, 0x20, 0x81, 0x86, 0xB0, 0xCE, 0xA9, 0x00, 0x8D, 0xD7, 0x0F, +0x8D, 0xD6, 0x0F, 0xA9, 0xFF, 0x20, 0xA8, 0xFC, 0xAD, 0x61, 0xC0, 0x8D, 0x40, 0x01, 0x2A, 0xAD, +0x62, 0xC0, 0x8D, 0x41, 0x01, 0x10, 0x0B, 0x90, 0x09, 0xE2, 0x30, 0x20, 0xB8, 0xA1, 0x5C, 0x40, +0x71, 0xFF, 0xAD, 0x46, 0xC0, 0x30, 0xF2, 0xAD, 0x40, 0x01, 0x0D, 0x41, 0x01, 0x10, 0x0A, 0xA9, +0x00, 0x8F, 0xF4, 0x03, 0x00, 0x8F, 0xF3, 0x03, 0x00, 0xA9, 0x73, 0x20, 0xA2, 0x83, 0xC2, 0x30, +0xA9, 0xB5, 0xFF, 0x8F, 0x4E, 0x00, 0xE1, 0x8F, 0x52, 0x00, 0xE1, 0xA9, 0x5C, 0xDE, 0x8F, 0x4C, +0x00, 0xE1, 0x8F, 0x50, 0x00, 0xE1, 0xF4, 0xE1, 0x00, 0xF4, 0x68, 0x01, 0xF4, 0xFF, 0x00, 0xF4, +0xA8, 0x86, 0xF4, 0x09, 0x00, 0x4B, 0x62, 0x04, 0x00, 0x22, 0xDC, 0x82, 0xFF, 0x6B, 0xE2, 0x20, +0xAD, 0x68, 0x01, 0xC9, 0xA5, 0xF0, 0x24, 0x9C, 0xFF, 0x15, 0x9C, 0x7D, 0x01, 0xC2, 0x30, 0xA9, +0x00, 0x00, 0x8F, 0xF3, 0x03, 0x00, 0xF4, 0x02, 0x00, 0xF4, 0xFF, 0x00, 0xF4, 0xA6, 0x86, 0xF4, +0x08, 0x00, 0x4B, 0x62, 0x04, 0x00, 0x22, 0x9E, 0x82, 0xFF, 0x6B, 0xE2, 0x30, 0x20, 0x77, 0xA6, +0xF4, 0x01, 0x00, 0x4B, 0x62, 0x04, 0x00, 0x22, 0x9E, 0x82, 0xFF, 0x6B, 0xB0, 0x07, 0xE2, 0x20, +0xA9, 0x0F, 0x20, 0xA2, 0x83, 0xB0, 0x72, 0xA0, 0x00, 0x00, 0x20, 0x42, 0x84, 0xB0, 0x6A, 0x99, +0x01, 0x03, 0xC8, 0x98, 0xCD, 0x01, 0x03, 0x90, 0xF1, 0xF0, 0xEF, 0xA9, 0x0E, 0x20, 0xA2, 0x83, +0xB0, 0x57, 0xA0, 0x00, 0x00, 0x20, 0x42, 0x84, 0xB0, 0x4F, 0x99, 0xF8, 0x02, 0xC8, 0x98, 0xCD, +0xF8, 0x02, 0x90, 0xF1, 0xF0, 0xEF, 0xA9, 0xB3, 0x20, 0xA2, 0x83, 0xB0, 0x3C, 0xA9, 0x03, 0x20, +0xD6, 0x83, 0xB0, 0x35, 0xAD, 0xF3, 0x02, 0x1A, 0x20, 0xD6, 0x83, 0xB0, 0x2C, 0xA9, 0x05, 0x20, +0xA2, 0x83, 0xB0, 0x25, 0xA9, 0xFF, 0x20, 0xD6, 0x83, 0xB0, 0x1E, 0xA9, 0x04, 0x20, 0xA2, 0x83, +0xB0, 0x17, 0x20, 0x6A, 0x86, 0xB0, 0x12, 0xA9, 0x06, 0x20, 0xA2, 0x83, 0xB0, 0x0B, 0x20, 0x81, +0x86, 0xB0, 0x06, 0x20, 0xEE, 0x83, 0xE2, 0x30, 0x60, 0xE2, 0x30, 0x20, 0xB8, 0xA1, 0xF4, 0x11, +0x09, 0x20, 0x77, 0xA6, 0x8B, 0x38, 0x5C, 0xE6, 0xA4, 0xFF, 0xA9, 0x00, 0x0D, 0xF0, 0x02, 0x0A, +0x0A, 0x0D, 0xEB, 0x02, 0x0A, 0x0D, 0xF2, 0x02, 0x0A, 0x0D, 0xF1, 0x02, 0x0A, 0x0A, 0x4C, 0xD6, +0x83, 0xA9, 0x32, 0x20, 0xD6, 0x83, 0xB0, 0xD0, 0xAD, 0xE9, 0x02, 0x0A, 0x0A, 0x0A, 0x0A, 0x0D, +0xEA, 0x02, 0x20, 0xD6, 0x83, 0xB0, 0xC1, 0xAD, 0xED, 0x02, 0x0A, 0x0A, 0x0A, 0x0A, 0x0D, 0xEC, +0x02, 0x49, 0x07, 0x4C, 0xD6, 0x83, 0x51, 0xA5, 0x51, 0x00, 0xA0, 0xA0, 0xA0, 0xCD, 0xE1, 0xF2, +0xE3, 0xE8, 0xA0, 0xB1, 0xB7, 0xAC, 0xA0, 0xB1, 0xB9, 0xB8, 0xB7, 0x29, 0x8A, 0x37, 0x8A, 0x4E, +0x8A, 0x66, 0x8A, 0xDC, 0x89, 0xE2, 0x89, 0xE6, 0x89, 0xEB, 0x89, 0xF6, 0x89, 0x00, 0x8A, 0x03, +0x8A, 0x07, 0x8A, 0x7F, 0x8A, 0x70, 0x8B, 0x14, 0x8A, 0x22, 0x8A, 0xA0, 0x8A, 0xA5, 0x8A, 0xAB, +0x8A, 0xB5, 0x8A, 0xBF, 0x8A, 0xCB, 0x8A, 0x96, 0x8A, 0x9B, 0x8A, 0xE0, 0x8A, 0x07, 0x8B, 0x95, +0x8C, 0x9C, 0x8C, 0xA1, 0x8C, 0xAD, 0x8C, 0xB2, 0x8C, 0xB9, 0x8C, 0xBE, 0x8C, 0xCA, 0x8C, 0xD4, +0x8C, 0x84, 0x8F, 0xDC, 0x8C, 0xE0, 0x8C, 0xF0, 0x8C, 0xFB, 0x8C, 0x13, 0x8D, 0x22, 0x8D, 0x26, +0x8D, 0x2F, 0x8D, 0x33, 0x8D, 0x41, 0x8D, 0x47, 0x8D, 0x54, 0x8D, 0x65, 0x8D, 0x77, 0x8D, 0x7B, +0x8D, 0xD0, 0x8A, 0x82, 0x8D, 0x86, 0x8D, 0x90, 0x8D, 0x96, 0x8D, 0x84, 0x8F, 0x4F, 0x8B, 0xA1, +0x8C, 0x1C, 0x8E, 0x23, 0x8E, 0x2A, 0x8E, 0x31, 0x8E, 0x38, 0x8E, 0x3F, 0x8E, 0x46, 0x8E, 0x84, +0x8F, 0x4D, 0x8E, 0x59, 0x8E, 0x69, 0x8E, 0x78, 0x8E, 0x8A, 0x8E, 0x96, 0x8E, 0xA2, 0x8E, 0xAE, +0x8E, 0x2E, 0x8B, 0xBA, 0x8E, 0xCE, 0x8E, 0xE4, 0x8E, 0xF3, 0x8E, 0x03, 0x8F, 0x08, 0x8F, 0x0B, +0x8F, 0x0F, 0x8F, 0x84, 0x8F, 0x15, 0x8F, 0x19, 0x8F, 0x1F, 0x8F, 0x0F, 0x8F, 0x25, 0x8F, 0x3A, +0x8F, 0x58, 0x8B, 0x84, 0x8F, 0x42, 0x8B, 0x4F, 0x8F, 0x60, 0x8F, 0x74, 0x8F, 0x86, 0x8F, 0x84, +0x8F, 0x8C, 0x8F, 0x92, 0x8F, 0x99, 0x8F, 0x9E, 0x8F, 0xA7, 0x8F, 0xA9, 0x8F, 0xAB, 0x8F, 0xAD, +0x8F, 0xB0, 0x8F, 0xB2, 0x8F, 0xB5, 0x8F, 0xB7, 0x8F, 0xB9, 0x8F, 0xBC, 0x8F, 0xC1, 0x8F, 0xC4, +0x8F, 0xC7, 0x8F, 0xCA, 0x8F, 0xCE, 0x8F, 0xD2, 0x8F, 0xD6, 0x8F, 0xDA, 0x8F, 0xDE, 0x8F, 0xE2, +0x8F, 0xE6, 0x8F, 0xEB, 0x8F, 0xEE, 0x8F, 0xF1, 0x8F, 0xF4, 0x8F, 0xF7, 0x8F, 0xFA, 0x8F, 0xFD, +0x8F, 0x00, 0x90, 0x03, 0x90, 0x06, 0x90, 0x0A, 0x90, 0x0E, 0x90, 0x13, 0x90, 0xA7, 0x8F, 0xAB, +0x8F, 0x9F, 0x8D, 0xA4, 0x8D, 0xAC, 0x8D, 0xB5, 0x8D, 0xBB, 0x8D, 0xC5, 0x8D, 0xCE, 0x8D, 0xD9, +0x8D, 0xE3, 0x8D, 0xE8, 0x8D, 0xEE, 0x8D, 0xF8, 0x8D, 0xFC, 0x8D, 0x07, 0x8E, 0x0D, 0x8E, 0x17, +0x8E, 0x1D, 0x90, 0xB5, 0x8F, 0x1F, 0x90, 0x25, 0x90, 0x29, 0x90, 0x2F, 0x90, 0x35, 0x90, 0x3C, +0x90, 0x43, 0x90, 0x49, 0x90, 0x50, 0x90, 0x56, 0x90, 0x65, 0x90, 0x6C, 0x90, 0x72, 0x90, 0x7A, +0x90, 0x80, 0x90, 0x85, 0x90, 0x8C, 0x90, 0x93, 0x90, 0x9D, 0x90, 0xA2, 0x90, 0xA7, 0x90, 0xA9, +0x90, 0xAB, 0x90, 0xAD, 0x90, 0xAF, 0x90, 0xB1, 0x90, 0xB3, 0x90, 0xB5, 0x90, 0xB7, 0x90, 0xB9, +0x90, 0xBB, 0x90, 0xBD, 0x90, 0x22, 0x8C, 0x2F, 0x8C, 0x3F, 0x8C, 0x4F, 0x8C, 0x5F, 0x8C, 0x6F, +0x8C, 0x7F, 0x8C, 0x8E, 0x8C, 0x22, 0x8C, 0x37, 0x8C, 0x57, 0x8C, 0x6F, 0x8C, 0x8E, 0x8C, 0xBF, +0x90, 0xC5, 0x90, 0x22, 0x8C, 0x28, 0x8C, 0x2F, 0x8C, 0x37, 0x8C, 0x3F, 0x8C, 0x47, 0x8C, 0x4F, +0x8C, 0x57, 0x8C, 0x5F, 0x8C, 0x67, 0x8C, 0x6F, 0x8C, 0x77, 0x8C, 0x7F, 0x8C, 0x87, 0x8C, 0x8E, +0x8C, 0xD2, 0x90, 0xC9, 0x90, 0xDE, 0x90, 0xC9, 0x90, 0xE8, 0x90, 0xC9, 0x90, 0xFD, 0x90, 0xC9, +0x90, 0x07, 0x91, 0xC9, 0x90, 0x11, 0x91, 0xC9, 0x90, 0x1A, 0x91, 0xC9, 0x90, 0x2C, 0x91, 0x21, +0x8E, 0x28, 0x8E, 0x2F, 0x8E, 0x36, 0x8E, 0x3D, 0x8E, 0x44, 0x8E, 0x4B, 0x8E, 0xD4, 0x8C, 0x30, +0x91, 0x38, 0x91, 0x40, 0x91, 0x48, 0x91, 0x50, 0x91, 0x55, 0x91, 0x5C, 0x91, 0x63, 0x91, 0x7A, +0x91, 0x7D, 0x91, 0x81, 0x91, 0x8C, 0x91, 0xFA, 0xBB, 0x11, 0xBB, 0x1E, 0xBB, 0x46, 0xBB, 0x58, +0xBB, 0x68, 0xBB, 0x7F, 0xBB, 0x1E, 0x30, 0x3C, 0x3A, 0x25, 0x32, 0x12, 0x12, 0x55, 0x5B, 0x5D, +0x75, 0x66, 0x5E, 0x3D, 0x3D, 0x73, 0xA2, 0xA8, 0xAA, 0xBE, 0xB3, 0xAB, 0x8A, 0x96, 0xC0, 0xD8, +0xDE, 0xE0, 0xF4, 0xE9, 0xE1, 0xC0, 0xCC, 0xF6, 0x84, 0xFF, 0xF2, 0xFF, 0xFE, 0xFF, 0x10, 0xFE, +0x80, 0xF0, 0x80, 0xFE, 0x00, 0xF0, 0x00, 0xF0, 0xFC, 0xFF, 0xFF, 0xFF, 0x00, 0xFA, 0xD9, 0x53, +0x11, 0xF9, 0x1C, 0x19, 0x1C, 0x1C, 0xD8, 0x00, 0x2B, 0x31, 0x61, 0x3A, 0x50, 0x44, 0x3B, 0x25, +0x25, 0x59, 0x64, 0x66, 0x6B, 0x6B, 0x6B, 0x6B, 0x6D, 0x7C, 0x84, 0x6B, 0x6B, 0x6B, 0x87, 0x89, +0x8B, 0x8B, 0x8B, 0x6B, 0x9B, 0x9D, 0x9D, 0x6B, 0xBD, 0xC5, 0xC5, 0xC5, 0x6B, 0x6B, 0xCA, 0x6B, +0xCC, 0xCC, 0xDB, 0xDD, 0xDF, 0xE1, 0xE3, 0xE5, 0xE7, 0xE9, 0xF3, 0xF6, 0xCA, 0x02, 0x05, 0x02, +0x02, 0x02, 0x02, 0x0F, 0x08, 0x03, 0x02, 0x02, 0x02, 0x02, 0x05, 0x02, 0x02, 0x02, 0x02, 0x0F, +0x08, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x10, 0x10, 0x10, 0x02, 0x0F, 0x0F, 0x02, 0x02, 0x02, +0x02, 0x02, 0x02, 0x02, 0x02, 0x0A, 0x80, 0xC0, 0x02, 0x08, 0x05, 0x05, 0x05, 0x02, 0x02, 0x02, +0x02, 0x03, 0x02, 0x80, 0x80, 0x0C, 0x1F, 0x64, 0x03, 0x18, 0x3C, 0x3C, 0x02, 0x1F, 0x1C, 0x1F, +0x1E, 0x1F, 0x1E, 0x1F, 0x1F, 0x1E, 0x1F, 0x1E, 0x1F, 0x1D, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, +0x0D, 0x06, 0x02, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x06, 0x02, 0x01, +0x01, 0x00, 0x00, 0x00, 0x0F, 0x06, 0x06, 0x00, 0x05, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x08, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x0A, 0x00, 0x01, 0x02, 0x03, +0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x54, 0x69, 0x6D, 0x65, +0x3D, 0xA0, 0x53, 0x74, 0x65, 0xF0, 0x54, 0x72, 0x61, 0x63, 0xE5, 0x43, 0x62, 0x61, 0x6E, 0x6B, +0x20, 0x28, 0x30, 0x2F, 0x31, 0xA9, 0x44, 0x65, 0x63, 0x69, 0x6D, 0x61, 0x6C, 0x2D, 0x3E, 0xA0, +0x48, 0x65, 0x78, 0x2D, 0x3E, 0x20, 0xA4, 0x54, 0x6F, 0x6F, 0x6C, 0x20, 0x65, 0x72, 0x72, 0x6F, +0x72, 0x2D, 0x3E, 0xA0, 0x20, 0x43, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x20, 0x50, 0x61, 0x6E, +0x65, 0xEC, 0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0xBA, 0x0E, 0xA0, 0xC9, 0xAF, 0xCF, 0xA0, 0xE5, +0xF2, 0xF2, 0xEF, 0xF2, 0xA1, 0x8D, 0x00, 0x0A, 0xA0, 0xCE, 0xEF, 0xF4, 0xA0, 0xE1, 0xA0, 0xF3, +0xF4, 0xE1, 0xF2, 0xF4, 0xF5, 0xF0, 0xA0, 0xE4, 0xE9, 0xF3, 0xEB, 0xA1, 0x8D, 0x00, 0x0A, 0xA0, +0xCE, 0xEF, 0xA0, 0xE4, 0xE5, 0xF6, 0xE9, 0xE3, 0xE5, 0xA0, 0xE3, 0xEF, 0xEE, 0xEE, 0xE5, 0xE3, +0xF4, 0xE5, 0xE4, 0xA1, 0x8D, 0x00, 0x0A, 0xA0, 0xC3, 0xE8, 0xE5, 0xE3, 0xEB, 0xA0, 0xF3, 0xF4, +0xE1, 0xF2, 0xF4, 0xF5, 0xF0, 0xA0, 0xE4, 0xE5, 0xF6, 0xE9, 0xE3, 0xE5, 0xA1, 0x8D, 0x00, 0x08, +0xA0, 0xC6, 0xE1, 0xF4, 0xE1, 0xEC, 0xA0, 0xF3, 0xF9, 0xF3, 0xF4, 0xE5, 0xED, 0xA0, 0xE5, 0xF2, +0xF2, 0xEF, 0xF2, 0xAD, 0xBE, 0xA0, 0x00, 0xA0, 0x0D, 0xDF, 0xA0, 0x00, 0xA0, 0x0D, 0x4C, 0xA0, +0x00, 0xA0, 0x4A, 0xA0, 0x4B, 0x00, 0xA0, 0x48, 0xA0, 0x55, 0x00, 0x12, 0xA0, 0xCF, 0xF0, 0xE5, +0xEE, 0xBA, 0xA0, 0x4D, 0x00, 0x02, 0xA0, 0xD3, 0xE1, 0xF6, 0xE5, 0xBA, 0xA0, 0x4D, 0x00, 0x02, +0xA0, 0xC3, 0xE1, 0xEE, 0xE3, 0xE5, 0xEC, 0xBA, 0xC5, 0xF3, 0xE3, 0x00, 0x5A, 0x0D, 0xA0, 0x5F, +0x00, 0x53, 0xD3, 0xE3, 0xF2, 0xE5, 0xE5, 0xEE, 0xA0, 0xC3, 0xEF, 0xEC, 0xEF, 0xF2, 0xF3, 0x53, +0x00, 0x53, 0xD7, 0xC1, 0xD2, 0xCE, 0xC9, 0xCE, 0xC7, 0xBA, 0xA0, 0xD0, 0xF2, 0xE9, 0xEE, 0xF4, +0xE5, 0xF2, 0xA0, 0xAF, 0xA0, 0xCD, 0xEF, 0xE4, 0xE5, 0xED, 0xA0, 0xAF, 0xA0, 0xC1, 0xF0, 0xF0, +0xEC, 0xE5, 0xD4, 0xE1, 0xEC, 0xEB, 0x53, 0x00, 0x53, 0xE3, 0xE1, 0xEE, 0xEE, 0xEF, 0xF4, 0xA0, +0xE2, 0xE5, 0xA0, 0xE1, 0xE3, 0xF4, 0xE9, 0xF6, 0xE5, 0xA0, 0xE1, 0xF4, 0xA0, 0xF4, 0xE8, 0xE5, +0xA0, 0xF3, 0xE1, 0xED, 0xE5, 0xA0, 0xF4, 0xE9, 0xED, 0xE5, 0xA1, 0xA1, 0xA1, 0x53, 0x00, 0x53, +0xC1, 0xE4, 0xF6, 0xE1, 0xEE, 0xE3, 0xE5, 0xE4, 0xA0, 0xC6, 0xE5, 0xE1, 0xF4, 0xF5, 0xF2, 0xE5, +0xF3, 0x53, 0x00, 0x53, 0xD2, 0xC1, 0xCD, 0xA0, 0xD3, 0xF4, 0xE1, 0xF4, 0xF5, 0xF3, 0x53, 0x00, +0x53, 0xC8, 0xE5, 0xF2, 0xF4, 0xFA, 0xBA, 0xA0, 0x00, 0x53, 0xCC, 0xE1, 0xF2, 0xE7, 0xE5, 0xF3, +0xF4, 0xA0, 0xD3, 0xE5, 0xEC, 0xE5, 0xE3, 0xF4, 0xE1, 0xE2, 0xEC, 0xE5, 0xBA, 0x03, 0xA0, 0x00, +0x02, 0xA0, 0xB1, 0xBD, 0xC5, 0xEE, 0xF4, 0xE5, 0xF2, 0xA0, 0xF4, 0xE8, 0xE5, 0xA0, 0xC3, 0xEF, +0xEE, 0xF4, 0xF2, 0xEF, 0xEC, 0xA0, 0xD0, 0xE1, 0xEE, 0xE5, 0xEC, 0xAE, 0x8D, 0x8D, 0xA0, 0xA0, +0xB2, 0xBD, 0xD3, 0xE5, 0xF4, 0xA0, 0xF3, 0xF9, 0xF3, 0xF4, 0xE5, 0xED, 0xA0, 0xF3, 0xF4, 0xE1, +0xEE, 0xE4, 0xE1, 0xF2, 0xE4, 0xF3, 0xA0, 0xE1, 0xEE, 0xE4, 0xA0, 0xB6, 0xB0, 0xA0, 0xE8, 0xE5, +0xF2, 0xF4, 0xFA, 0xAE, 0x8D, 0x8D, 0xA0, 0xA0, 0xB3, 0xBD, 0xD3, 0xE5, 0xF4, 0xA0, 0xF3, 0xF9, +0xF3, 0xF4, 0xE5, 0xED, 0xA0, 0xF3, 0xF4, 0xE1, 0xEE, 0xE4, 0xE1, 0xF2, 0xE4, 0xF3, 0xA0, 0xE1, +0xEE, 0xE4, 0xA0, 0xB5, 0xB0, 0xA0, 0xE8, 0xE5, 0xF2, 0xF4, 0xFA, 0xAE, 0x8D, 0x8D, 0xA0, 0xA0, +0xB4, 0xBD, 0xC3, 0xEF, 0xEE, 0xF4, 0xE9, 0xEE, 0xF5, 0xE5, 0xA0, 0xF2, 0xE5, 0xF3, 0xF4, 0xE1, +0xF2, 0xF4, 0xE9, 0xEE, 0xE7, 0xA0, 0xF4, 0xE8, 0xE5, 0xA0, 0xF3, 0xF9, 0xF3, 0xF4, 0xE5, 0xED, +0xAE, 0x08, 0x8D, 0x05, 0xA0, 0xD0, 0xF2, 0xE5, 0xF3, 0xF3, 0xA0, 0xB1, 0xAC, 0xB2, 0xAC, 0xB3, +0xA0, 0xEF, 0xF2, 0xA0, 0xB4, 0xA0, 0xF4, 0xEF, 0xA0, 0xE3, 0xEF, 0xEE, 0xF4, 0xE9, 0xEE, 0xF5, +0xE5, 0xAE, 0x00, 0x5A, 0xAA, 0x0E, 0x53, 0x5F, 0x00, 0x5A, 0x53, 0xAA, 0x0D, 0x53, 0x5F, 0x00, +0x5A, 0x53, 0x53, 0xAA, 0x0C, 0x53, 0x5F, 0x00, 0x5A, 0x03, 0x53, 0xAA, 0x0B, 0x53, 0x5F, 0x00, +0x5A, 0x04, 0x53, 0xAA, 0x0A, 0x53, 0x5F, 0x00, 0x5A, 0x05, 0x53, 0xAA, 0x09, 0x53, 0x5F, 0x00, +0x5A, 0x06, 0x53, 0xAA, 0x08, 0x53, 0x5F, 0x00, 0x5A, 0x07, 0x53, 0xAA, 0x07, 0x53, 0x5F, 0x00, +0x5A, 0x08, 0x53, 0xAA, 0x06, 0x53, 0x5F, 0x00, 0x5A, 0x09, 0x53, 0xAA, 0x05, 0x53, 0x5F, 0x00, +0x5A, 0x0A, 0x53, 0xAA, 0x04, 0x53, 0x5F, 0x00, 0x5A, 0x0B, 0x53, 0xAA, 0x03, 0x53, 0x5F, 0x00, +0x5A, 0x0C, 0x53, 0xAA, 0x53, 0x53, 0x5F, 0x00, 0x5A, 0x0D, 0x53, 0xAA, 0x53, 0x5F, 0x00, 0x5A, +0x0E, 0x53, 0xAA, 0x5F, 0x00, 0x44, 0x69, 0x73, 0x70, 0x6C, 0x61, 0xF9, 0x53, 0x6F, 0x75, 0x6E, +0xE4, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x53, 0x70, 0x65, 0x65, 0xE4, 0x43, 0x6C, 0x6F, +0x63, 0xEB, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0xF3, 0x53, 0x6C, 0x6F, 0x74, 0xF3, 0x50, 0x72, +0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x50, 0x6F, 0x72, 0xF4, 0x4D, 0x6F, 0x64, 0x65, 0x6D, 0x20, +0x50, 0x6F, 0x72, 0xF4, 0x52, 0x41, 0x4D, 0x20, 0x44, 0x69, 0x73, 0xEB, 0x51, 0x75, 0x69, 0xF4, +0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x65, 0xE4, +0x4C, 0x69, 0x6E, 0x65, 0x20, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0xE8, 0x44, 0x65, 0x6C, 0x65, 0x74, +0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x4C, 0x46, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, +0x20, 0x43, 0xD2, 0x41, 0x64, 0x64, 0x20, 0x4C, 0x46, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, +0x43, 0xD2, 0x45, 0x63, 0x68, 0xEF, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x69, 0x6E, 0xE7, 0x42, +0x61, 0x75, 0xE4, 0x44, 0x61, 0x74, 0x61, 0x2F, 0x53, 0x74, 0x6F, 0x70, 0x20, 0x42, 0x69, 0x74, +0xF3, 0x50, 0x61, 0x72, 0x69, 0x74, 0xF9, 0x44, 0x43, 0x44, 0x20, 0x48, 0x61, 0x6E, 0x64, 0x73, +0x68, 0x61, 0x6B, 0xE5, 0x44, 0x53, 0x52, 0x2F, 0x44, 0x54, 0x52, 0x20, 0x48, 0x61, 0x6E, 0x64, +0x73, 0x68, 0x61, 0x6B, 0xE5, 0x58, 0x4F, 0x4E, 0x2F, 0x58, 0x4F, 0x46, 0x46, 0x20, 0x48, 0x61, +0x6E, 0x64, 0x73, 0x68, 0x61, 0x6B, 0xE5, 0x54, 0x79, 0x70, 0xE5, 0x43, 0x6F, 0x6C, 0x75, 0x6D, +0x6E, 0xF3, 0x54, 0x65, 0x78, 0xF4, 0x42, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0xE4, +0x42, 0x6F, 0x72, 0x64, 0x65, 0xF2, 0x53, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0xF3, 0x42, +0x6C, 0x61, 0x63, 0xEB, 0x44, 0x65, 0x65, 0x70, 0x20, 0x52, 0x65, 0xE4, 0x44, 0x61, 0x72, 0x6B, +0x20, 0x42, 0x6C, 0x75, 0xE5, 0x50, 0x75, 0x72, 0x70, 0x6C, 0xE5, 0x44, 0x61, 0x72, 0x6B, 0x20, +0x47, 0x72, 0x65, 0x65, 0xEE, 0x44, 0x61, 0x72, 0x6B, 0x20, 0x47, 0x72, 0x61, 0xF9, 0x4D, 0x65, +0x64, 0x69, 0x75, 0x6D, 0x20, 0x42, 0x6C, 0x75, 0xE5, 0x4C, 0x69, 0x67, 0x68, 0x74, 0x20, 0x42, +0x6C, 0x75, 0xE5, 0x42, 0x72, 0x6F, 0x77, 0xEE, 0x4F, 0x72, 0x61, 0x6E, 0x67, 0xE5, 0x4C, 0x69, +0x67, 0x68, 0x74, 0x20, 0x47, 0x72, 0x61, 0xF9, 0x50, 0x69, 0x6E, 0xEB, 0x4C, 0x69, 0x67, 0x68, +0x74, 0x20, 0x47, 0x72, 0x65, 0x65, 0xEE, 0x59, 0x65, 0x6C, 0x6C, 0x6F, 0xF7, 0x41, 0x71, 0x75, +0x61, 0x6D, 0x61, 0x72, 0x69, 0x6E, 0xE5, 0x57, 0x68, 0x69, 0x74, 0xE5, 0x53, 0x6C, 0x6F, 0x74, +0x20, 0xB1, 0x00, 0x53, 0x6C, 0x6F, 0x74, 0x20, 0xB2, 0x00, 0x53, 0x6C, 0x6F, 0x74, 0x20, 0xB3, +0x00, 0x53, 0x6C, 0x6F, 0x74, 0x20, 0xB4, 0x00, 0x53, 0x6C, 0x6F, 0x74, 0x20, 0xB5, 0x00, 0x53, +0x6C, 0x6F, 0x74, 0x20, 0xB6, 0x00, 0x53, 0x6C, 0x6F, 0x74, 0x20, 0xB7, 0x00, 0x53, 0x74, 0x61, +0x72, 0x74, 0x75, 0x70, 0x20, 0x53, 0x6C, 0x6F, 0xF4, 0x44, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, +0x20, 0x4C, 0x61, 0x6E, 0x67, 0x75, 0x61, 0x67, 0xE5, 0x4B, 0x65, 0x79, 0x62, 0x6F, 0x61, 0x72, +0x64, 0x20, 0x4C, 0x61, 0x79, 0x6F, 0x75, 0xF4, 0x4B, 0x65, 0x79, 0x62, 0x6F, 0x61, 0x72, 0x64, +0x20, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x69, 0x6E, 0xE7, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, +0x20, 0x53, 0x70, 0x65, 0x65, 0xE4, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x20, 0x44, 0x65, 0x6C, +0x61, 0xF9, 0x44, 0x6F, 0x75, 0x62, 0x6C, 0x65, 0x20, 0x43, 0x6C, 0x69, 0x63, 0xEB, 0x43, 0x75, +0x72, 0x73, 0x6F, 0x72, 0x20, 0x46, 0x6C, 0x61, 0x73, 0xE8, 0x53, 0x68, 0x69, 0x66, 0x74, 0x20, +0x43, 0x61, 0x70, 0x73, 0x2F, 0x4C, 0x6F, 0x77, 0x65, 0x72, 0x63, 0x61, 0x73, 0xE5, 0x46, 0x61, +0x73, 0x74, 0x20, 0x53, 0x70, 0x61, 0x63, 0x65, 0x2F, 0x44, 0x65, 0x6C, 0x65, 0x74, 0x65, 0x20, +0x4B, 0x65, 0x79, 0xF3, 0x44, 0x75, 0x61, 0x6C, 0x20, 0x53, 0x70, 0x65, 0x65, 0x64, 0x20, 0x4B, +0x65, 0x79, 0xF3, 0x48, 0x69, 0x67, 0x68, 0x20, 0x53, 0x70, 0x65, 0x65, 0x64, 0x20, 0x4D, 0x6F, +0x75, 0x73, 0xE5, 0x4D, 0x6F, 0x6E, 0x74, 0xE8, 0x44, 0x61, 0xF9, 0x59, 0x65, 0x61, 0xF2, 0x46, +0x6F, 0x72, 0x6D, 0x61, 0xF4, 0x48, 0x6F, 0x75, 0xF2, 0x4D, 0x69, 0x6E, 0x75, 0x74, 0xE5, 0x53, +0x65, 0x63, 0x6F, 0x6E, 0xE4, 0x4D, 0x69, 0x6E, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x52, 0x41, 0x4D, +0x20, 0x44, 0x69, 0x73, 0x6B, 0x20, 0x53, 0x69, 0x7A, 0xE5, 0x4D, 0x61, 0x78, 0x69, 0x6D, 0x75, +0x6D, 0x20, 0x52, 0x41, 0x4D, 0x20, 0x44, 0x69, 0x73, 0x6B, 0x20, 0x53, 0x69, 0x7A, 0xE5, 0x52, +0x41, 0x4D, 0x20, 0x44, 0x69, 0x73, 0x6B, 0x20, 0x53, 0x69, 0x7A, 0x65, 0x3A, 0x08, 0x20, 0xA0, +0x54, 0x6F, 0x74, 0x61, 0x6C, 0x20, 0x52, 0x41, 0x4D, 0x20, 0x69, 0x6E, 0x20, 0x55, 0x73, 0x65, +0x3A, 0x05, 0x20, 0xA0, 0x54, 0x6F, 0x74, 0x61, 0x6C, 0x20, 0x46, 0x72, 0x65, 0x65, 0x20, 0x52, +0x41, 0x4D, 0x3A, 0x07, 0x20, 0xA0, 0x56, 0x6F, 0x6C, 0x75, 0x6D, 0xE5, 0x20, 0x50, 0x69, 0x74, +0x63, 0xE8, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x65, 0xF2, 0x4D, 0x6F, 0x64, 0x65, 0xED, 0x55, 0x6E, +0x6C, 0x69, 0x6D, 0x69, 0x74, 0x65, 0xE4, 0x34, 0xB0, 0x37, 0xB2, 0x38, 0xB0, 0x31, 0x33, 0xB2, +0x4E, 0xEF, 0x59, 0x65, 0xF3, 0x35, 0xB0, 0x37, 0xB5, 0x31, 0x31, 0xB0, 0x31, 0x33, 0x34, 0x2E, +0xB5, 0x31, 0x35, 0xB0, 0x33, 0x30, 0xB0, 0x36, 0x30, 0xB0, 0x31, 0x32, 0x30, 0xB0, 0x31, 0x38, +0x30, 0xB0, 0x32, 0x34, 0x30, 0xB0, 0x33, 0x36, 0x30, 0xB0, 0x34, 0x38, 0x30, 0xB0, 0x37, 0x32, +0x30, 0xB0, 0x39, 0x36, 0x30, 0xB0, 0x31, 0x39, 0x32, 0x30, 0xB0, 0x35, 0x2F, 0xB1, 0x35, 0x2F, +0xB2, 0x36, 0x2F, 0xB1, 0x36, 0x2F, 0xB2, 0x37, 0x2F, 0xB1, 0x37, 0x2F, 0xB2, 0x38, 0x2F, 0xB1, +0x38, 0x2F, 0xB2, 0x4F, 0x64, 0xE4, 0x45, 0x76, 0x65, 0xEE, 0x4E, 0x6F, 0x6E, 0xE5, 0x43, 0x6F, +0x6C, 0x6F, 0xF2, 0x4D, 0x6F, 0x6E, 0x6F, 0x63, 0x68, 0x72, 0x6F, 0x6D, 0xE5, 0x36, 0xB0, 0x55, +0x2E, 0x53, 0x2E, 0x41, 0xAE, 0x55, 0x2E, 0x4B, 0xAE, 0x46, 0x72, 0x65, 0x6E, 0x63, 0xE8, 0x44, +0x61, 0x6E, 0x69, 0x73, 0xE8, 0x53, 0x70, 0x61, 0x6E, 0x69, 0x73, 0xE8, 0x49, 0x74, 0x61, 0x6C, +0x69, 0x61, 0xEE, 0x47, 0x65, 0x72, 0x6D, 0x61, 0xEE, 0x53, 0x77, 0x65, 0x64, 0x69, 0x73, 0xE8, +0x44, 0x76, 0x6F, 0x72, 0x61, 0xEB, 0x46, 0x72, 0x65, 0x6E, 0x63, 0x68, 0x20, 0x43, 0x61, 0x6E, +0x61, 0x64, 0x69, 0x61, 0xEE, 0x46, 0x6C, 0x65, 0x6D, 0x69, 0x73, 0xE8, 0x48, 0x65, 0x62, 0x72, +0x65, 0xF7, 0x4A, 0x61, 0x70, 0x61, 0x6E, 0x65, 0x73, 0xE5, 0x41, 0x72, 0x61, 0x62, 0x69, 0xE3, +0x47, 0x72, 0x65, 0x65, 0xEB, 0x54, 0x75, 0x72, 0x6B, 0x69, 0x73, 0xE8, 0x46, 0x69, 0x6E, 0x6E, +0x69, 0x73, 0xE8, 0x50, 0x6F, 0x72, 0x74, 0x75, 0x67, 0x75, 0x65, 0x73, 0xE5, 0x54, 0x61, 0x6D, +0x69, 0xEC, 0x48, 0x69, 0x6E, 0x64, 0xF5, 0x54, 0xB1, 0x54, 0xB2, 0x54, 0xB3, 0x54, 0xB4, 0x54, +0xB5, 0x54, 0xB6, 0x4C, 0xB1, 0x4C, 0xB2, 0x4C, 0xB3, 0x4C, 0xB4, 0x4C, 0xB5, 0x4C, 0xB6, 0x4E, +0x6F, 0x72, 0x6D, 0x61, 0xEC, 0x46, 0x61, 0x73, 0xF4, 0x59, 0x6F, 0x75, 0x72, 0x20, 0x43, 0x61, +0x72, 0xE4, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x50, 0x6F, 0x72, 0xF4, 0x4D, 0x6F, +0x64, 0x65, 0x6D, 0x20, 0x50, 0x6F, 0x72, 0xF4, 0x42, 0x75, 0x69, 0x6C, 0x74, 0x2D, 0x69, 0x6E, +0x20, 0x54, 0x65, 0x78, 0x74, 0x20, 0x44, 0x69, 0x73, 0x70, 0x6C, 0x61, 0xF9, 0x4D, 0x6F, 0x75, +0x73, 0x65, 0x20, 0x50, 0x6F, 0x72, 0xF4, 0x53, 0x6D, 0x61, 0x72, 0x74, 0x20, 0x50, 0x6F, 0x72, +0xF4, 0x44, 0x69, 0x73, 0x6B, 0x20, 0x50, 0x6F, 0x72, 0xF4, 0x42, 0x75, 0x69, 0x6C, 0x74, 0x2D, +0x69, 0x6E, 0x20, 0x41, 0x70, 0x70, 0x6C, 0x65, 0x54, 0x61, 0x6C, 0xEB, 0x53, 0x63, 0x61, 0xEE, +0x52, 0x4F, 0x4D, 0x20, 0x44, 0x69, 0x73, 0xEB, 0x4D, 0x4D, 0x2F, 0x44, 0x44, 0x2F, 0x59, 0xD9, +0x44, 0x44, 0x2F, 0x4D, 0x4D, 0x2F, 0x59, 0xD9, 0x59, 0x59, 0x2F, 0x4D, 0x4D, 0x2F, 0x44, 0xC4, +0x41, 0x4D, 0x2D, 0x50, 0xCD, 0x32, 0x34, 0x20, 0x48, 0x6F, 0x75, 0xF2, 0x03, 0xA0, 0xD4, 0xF5, +0xF2, 0xEE, 0x00, 0x20, 0x41, 0x6C, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x74, 0x65, 0x20, 0x44, 0x69, +0x73, 0x70, 0x6C, 0x61, 0x79, 0x20, 0x4D, 0x6F, 0x64, 0xE5, 0x20, 0x4F, 0xEE, 0x20, 0x4F, 0x66, +0xE6, 0x10, 0xA0, 0xC1, 0xE3, 0xE3, 0xE5, 0xF0, 0xF4, 0xA0, 0x4D, 0x00, 0x57, 0x65, 0x6C, 0x63, +0x6F, 0x6D, 0x65, 0x2E, 0x2E, 0x2E, 0x43, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x2D, 0x59, 0x20, +0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x65, 0x78, 0x69, 0x74, 0xF3, 0xAD, 0x15, 0xC0, 0x48, +0x20, 0x76, 0xA9, 0x20, 0xC8, 0x9B, 0xA2, 0x01, 0xA0, 0x01, 0xA9, 0xF9, 0x20, 0x28, 0x96, 0x20, +0x39, 0x98, 0xA2, 0x01, 0xA0, 0x0B, 0xA9, 0xF8, 0x20, 0x28, 0x96, 0xA9, 0xF9, 0x20, 0x80, 0xC0, +0xAF, 0x7C, 0x01, 0xE1, 0xD0, 0x04, 0xA9, 0xFA, 0x80, 0x02, 0xA9, 0xFB, 0x20, 0x80, 0xC0, 0xA2, +0x01, 0xA0, 0x16, 0xA9, 0x14, 0x20, 0x28, 0x96, 0xA9, 0xFC, 0x20, 0x80, 0xC0, 0x20, 0x27, 0x98, +0x20, 0x74, 0xCF, 0x10, 0xFB, 0xC9, 0x8D, 0xF0, 0x09, 0xC9, 0x9B, 0xF0, 0x12, 0x20, 0x5D, 0xA0, +0x80, 0xEE, 0x20, 0xFC, 0xA8, 0xAF, 0x7C, 0x01, 0xE1, 0x49, 0xFF, 0x8F, 0x7C, 0x01, 0xE1, 0x4C, +0xBC, 0x93, 0x78, 0xA9, 0x10, 0x1C, 0x27, 0xC0, 0x58, 0x20, 0x2B, 0xFA, 0xF0, 0x03, 0x8D, 0x0A, +0xC0, 0xA9, 0x11, 0x20, 0x71, 0xA9, 0x20, 0xC8, 0x9B, 0xA9, 0x80, 0x8D, 0x36, 0xC0, 0x8F, 0x37, +0x01, 0xE1, 0x0A, 0x9C, 0xF3, 0x03, 0x9C, 0xF4, 0x03, 0xA0, 0x08, 0xA2, 0x00, 0xA9, 0x0D, 0x20, +0x28, 0x96, 0x20, 0x27, 0x98, 0x8D, 0x06, 0xC0, 0xAD, 0x00, 0xC0, 0x10, 0xFB, 0x8D, 0x10, 0xC0, +0xC9, 0xB1, 0xF0, 0x24, 0xC9, 0xB2, 0xF0, 0x0D, 0xC9, 0xB3, 0xF0, 0x0D, 0xC9, 0xB4, 0xF0, 0x17, +0x20, 0x5D, 0xA0, 0x80, 0xE3, 0x5C, 0x01, 0xB5, 0xFF, 0x22, 0x01, 0xB5, 0xFF, 0xA9, 0x01, 0x8F, +0xDD, 0x02, 0xE1, 0x5C, 0x1C, 0xB5, 0xFF, 0x6B, 0xAF, 0xD9, 0x02, 0xE1, 0xF0, 0x05, 0xA9, 0x1B, +0x20, 0x71, 0xA9, 0xAD, 0x15, 0xC0, 0x48, 0x08, 0x78, 0xAD, 0x27, 0xC0, 0x85, 0xB0, 0xAD, 0x23, +0xC0, 0x85, 0xB1, 0xA9, 0x04, 0x1C, 0x27, 0xC0, 0x0C, 0x23, 0xC0, 0x9C, 0x32, 0xC0, 0xC2, 0x20, +0xAF, 0x54, 0x00, 0xE1, 0x85, 0xB2, 0xAF, 0x56, 0x00, 0xE1, 0x85, 0xB4, 0x4B, 0xA2, 0x9B, 0xDA, +0x68, 0x8F, 0x56, 0x00, 0xE1, 0xA9, 0x5C, 0xE2, 0x8F, 0x54, 0x00, 0xE1, 0xE2, 0x30, 0x28, 0x22, +0x3E, 0xB5, 0xFF, 0x38, 0x22, 0x94, 0x00, 0xE1, 0xA2, 0x02, 0x20, 0x79, 0xA6, 0xA2, 0x0D, 0x0C, +0x22, 0x00, 0x00, 0xE1, 0xA3, 0x01, 0x85, 0x5C, 0xA3, 0x03, 0x85, 0x5E, 0xA2, 0x02, 0x1D, 0x22, +0x00, 0x00, 0xE1, 0xA3, 0x01, 0x85, 0x50, 0x85, 0x58, 0xA3, 0x03, 0x85, 0x52, 0x38, 0xE9, 0x04, +0x00, 0x85, 0x5A, 0xD0, 0x0C, 0x8F, 0xF6, 0x02, 0xE1, 0xE2, 0x30, 0x22, 0x80, 0x00, 0xE1, 0xC2, +0x30, 0xA2, 0x02, 0x1B, 0x22, 0x00, 0x00, 0xE1, 0xA3, 0x01, 0x85, 0x54, 0xA3, 0x03, 0x85, 0x56, +0xA5, 0x50, 0x38, 0xE5, 0x54, 0x85, 0x60, 0xA5, 0x52, 0xE5, 0x56, 0x85, 0x62, 0x68, 0x68, 0xE2, +0x30, 0x20, 0xC8, 0x9B, 0xA0, 0x00, 0x20, 0xA8, 0x9A, 0xA2, 0x01, 0xA0, 0x00, 0x20, 0x14, 0x96, +0xA9, 0xDF, 0x20, 0x1E, 0x97, 0xA9, 0x0A, 0x85, 0x00, 0x78, 0xA5, 0x00, 0x85, 0x01, 0xA9, 0x0A, +0x85, 0x00, 0xA0, 0x01, 0x20, 0xA8, 0x9A, 0x20, 0x2E, 0x96, 0x20, 0x39, 0x98, 0x20, 0xBB, 0x9A, +0x20, 0x5D, 0x96, 0xA9, 0x04, 0x85, 0x25, 0xA9, 0x1A, 0x48, 0xE6, 0x25, 0x38, 0xE9, 0x1A, 0xC5, +0x01, 0xD0, 0x03, 0x20, 0xD7, 0x9B, 0xA4, 0x25, 0xA2, 0x04, 0xA3, 0x01, 0x20, 0x28, 0x96, 0x20, +0xC8, 0x9B, 0x68, 0x1A, 0xC9, 0x25, 0x90, 0xE1, 0x20, 0x4F, 0x9A, 0xC9, 0x8D, 0xF0, 0x13, 0xC9, +0x9B, 0xF0, 0x09, 0xC9, 0x00, 0xF0, 0xCC, 0x20, 0x5D, 0xA0, 0x80, 0xC7, 0xA9, 0x0A, 0x85, 0x01, +0x80, 0xC1, 0xA6, 0x01, 0x86, 0x00, 0xE0, 0x0A, 0xD0, 0x29, 0x08, 0x78, 0xA5, 0xB1, 0x8D, 0x23, +0xC0, 0xA5, 0xB0, 0x8D, 0x27, 0xC0, 0xC2, 0x30, 0xA5, 0xB2, 0x8F, 0x54, 0x00, 0xE1, 0xA5, 0xB4, +0x8F, 0x56, 0x00, 0xE1, 0xE2, 0x30, 0x28, 0x38, 0x22, 0x94, 0x00, 0xE1, 0x68, 0x30, 0x03, 0x8D, +0x06, 0xC0, 0x6B, 0x78, 0x20, 0x2E, 0x96, 0x20, 0x1A, 0x97, 0xA2, 0x00, 0xA0, 0x02, 0x20, 0x14, +0x96, 0x20, 0x0E, 0x97, 0xA2, 0x01, 0xA0, 0x04, 0x20, 0x12, 0x97, 0xA2, 0x01, 0xA0, 0x03, 0x20, +0x14, 0x96, 0x20, 0x08, 0xAC, 0x18, 0xA5, 0x00, 0x69, 0x1A, 0x20, 0x80, 0xC0, 0x20, 0x16, 0x97, +0x64, 0x01, 0xA0, 0x04, 0x20, 0xA8, 0x9A, 0xA0, 0x04, 0x20, 0x9F, 0x96, 0x20, 0xBB, 0x9A, 0x20, +0x5D, 0x96, 0xA2, 0x04, 0x20, 0x79, 0xA6, 0xA2, 0x03, 0x0D, 0x22, 0x00, 0x00, 0xE1, 0xE2, 0x30, +0x68, 0x85, 0x6A, 0x68, 0x85, 0x69, 0x68, 0x85, 0x68, 0x68, 0xC9, 0x64, 0x90, 0x02, 0xE9, 0x64, +0x85, 0x66, 0x68, 0x85, 0x65, 0x68, 0x85, 0x64, 0x68, 0x68, 0xAF, 0xF4, 0x02, 0xE1, 0x85, 0x67, +0xAF, 0xF5, 0x02, 0xE1, 0x85, 0x6B, 0x64, 0x02, 0x20, 0x51, 0x98, 0x64, 0x01, 0xA5, 0x01, 0x85, +0x02, 0x48, 0x20, 0x51, 0x98, 0x68, 0x85, 0x01, 0x20, 0x4F, 0x9A, 0xC9, 0x00, 0xF0, 0xEE, 0xC9, +0x9B, 0xD0, 0x08, 0x38, 0x22, 0x94, 0x00, 0xE1, 0x4C, 0x39, 0x93, 0xC9, 0x8D, 0xD0, 0x5A, 0xA5, +0x00, 0xC9, 0x06, 0xD0, 0x06, 0xA9, 0x00, 0x8F, 0x43, 0x01, 0xE1, 0xC9, 0x07, 0xD0, 0x06, 0xA9, +0x00, 0x8F, 0x44, 0x01, 0xE1, 0xC9, 0x03, 0xD0, 0x26, 0xA5, 0x64, 0x48, 0xA5, 0x65, 0x48, 0xA5, +0x66, 0xC9, 0x28, 0xB0, 0x03, 0x18, 0x69, 0x64, 0x48, 0xA5, 0x68, 0x48, 0xA5, 0x69, 0x48, 0xA5, +0x6A, 0x48, 0xC2, 0x30, 0xA2, 0x03, 0x0E, 0x22, 0x00, 0x00, 0xE1, 0xE2, 0x30, 0x80, 0x0F, 0xC9, +0x08, 0xD0, 0x0B, 0xC2, 0x30, 0xA2, 0x0D, 0x0B, 0x22, 0x00, 0x00, 0xE1, 0xE2, 0x30, 0x20, 0xE9, +0x97, 0xB0, 0x8A, 0x22, 0x80, 0x00, 0xE1, 0x80, 0x9A, 0x48, 0x24, 0x1F, 0x70, 0x2E, 0x20, 0x41, +0x9B, 0xFA, 0x20, 0xCB, 0x94, 0x20, 0xE9, 0x97, 0x4C, 0x3D, 0x94, 0xE0, 0x88, 0xF0, 0x15, 0x1A, +0xC5, 0x05, 0x90, 0x02, 0xA9, 0x00, 0x97, 0xAD, 0x18, 0xA5, 0x01, 0xAA, 0x65, 0xA3, 0x20, 0x79, +0x98, 0x4C, 0xAE, 0x98, 0xAA, 0xD0, 0x02, 0xA5, 0x05, 0x3A, 0x80, 0xEA, 0x20, 0x41, 0x9B, 0xA6, +0x00, 0xF0, 0x16, 0xE0, 0x01, 0xF0, 0x5E, 0xE0, 0x03, 0xF0, 0x08, 0xE0, 0x08, 0xF0, 0x07, 0x68, +0x4C, 0x39, 0x93, 0x4C, 0xB8, 0x95, 0x4C, 0x78, 0x95, 0xA5, 0x01, 0xC9, 0x06, 0xD0, 0x10, 0x68, +0xA2, 0x02, 0xBF, 0xA4, 0x89, 0xFF, 0x9F, 0xDA, 0x02, 0xE1, 0xCA, 0x10, 0xF5, 0x80, 0x1B, 0xC9, +0x02, 0xB0, 0x03, 0x4C, 0xBE, 0x94, 0x20, 0x41, 0x9B, 0xFA, 0xE0, 0x88, 0xF0, 0x1A, 0x1A, 0xC5, +0x05, 0x90, 0x02, 0xA9, 0x00, 0x20, 0xAB, 0x9B, 0xB0, 0xF4, 0xA5, 0x01, 0x48, 0xA0, 0x05, 0x84, +0x25, 0x64, 0x01, 0x20, 0xF8, 0x98, 0x80, 0x5E, 0xAA, 0xD0, 0x02, 0xA5, 0x05, 0x3A, 0x20, 0xAB, +0x9B, 0xB0, 0xF5, 0x80, 0xE5, 0xFA, 0x20, 0xCB, 0x94, 0xAD, 0x3C, 0xC0, 0x29, 0xF0, 0x0F, 0xDE, +0x02, 0xE1, 0x8D, 0x3C, 0xC0, 0x29, 0x0F, 0x8F, 0xCA, 0x00, 0xE1, 0x0A, 0x0A, 0x0A, 0x0A, 0x8F, +0xB0, 0x1D, 0xE1, 0x20, 0x5D, 0xA0, 0x80, 0x31, 0xFA, 0xE0, 0x88, 0xF0, 0x2F, 0x1A, 0xA6, 0x05, +0xF0, 0x06, 0xC5, 0x05, 0x90, 0x02, 0xA9, 0x00, 0x97, 0xAD, 0xC0, 0x01, 0xF0, 0x0B, 0xC8, 0xD7, +0xAD, 0x90, 0x0B, 0xF0, 0x09, 0x97, 0xAD, 0x80, 0x05, 0x88, 0xD7, 0xAD, 0x90, 0xF7, 0xA5, 0x01, +0x48, 0x64, 0x01, 0x20, 0x70, 0x99, 0x68, 0x85, 0x01, 0x4C, 0x3D, 0x94, 0xAA, 0xD0, 0x06, 0xA6, +0x05, 0xF0, 0x02, 0xA5, 0x05, 0x3A, 0x80, 0xD0, 0x20, 0xEE, 0x95, 0xB9, 0x64, 0x00, 0xFA, 0xE0, +0x88, 0xF0, 0x23, 0x1A, 0xC5, 0x05, 0x90, 0x02, 0xA9, 0x00, 0x99, 0x64, 0x00, 0xA5, 0x67, 0x8F, +0xF4, 0x02, 0xE1, 0xA5, 0x6B, 0x8F, 0xF5, 0x02, 0xE1, 0xA5, 0x01, 0x48, 0x64, 0x01, 0x20, 0xEE, +0x95, 0x20, 0xB5, 0x99, 0x80, 0xC0, 0xAA, 0xD0, 0x02, 0xA5, 0x05, 0x3A, 0x80, 0xDC, 0xC0, 0x03, +0xB0, 0x1F, 0xA6, 0x64, 0xA5, 0x66, 0x29, 0x03, 0xD0, 0x06, 0xE0, 0x01, 0xD0, 0x02, 0xA2, 0x0C, +0xBF, 0x7D, 0x89, 0xFF, 0xC0, 0x01, 0xD0, 0x02, 0x85, 0x05, 0x3A, 0xC5, 0x65, 0xB0, 0x02, 0x85, +0x65, 0x60, 0xA2, 0x00, 0x48, 0x8A, 0x18, 0x2C, 0x1F, 0xC0, 0x10, 0x02, 0x69, 0x14, 0xAA, 0x20, +0x68, 0xA9, 0x68, 0x60, 0xA9, 0x16, 0xA2, 0x17, 0x20, 0x14, 0x96, 0x4C, 0x80, 0xC0, 0xA2, 0x01, +0xA0, 0x01, 0xA9, 0x0E, 0x80, 0xF2, 0x18, 0xB7, 0xA4, 0x77, 0xAD, 0x80, 0xEE, 0xA0, 0x01, 0x5A, +0x20, 0x12, 0x96, 0xA9, 0x5A, 0x20, 0x59, 0xA9, 0x7A, 0x5A, 0xA2, 0x27, 0x20, 0x14, 0x96, 0xA9, +0x5F, 0x20, 0x59, 0xA9, 0x7A, 0xC8, 0xC0, 0x16, 0x90, 0xE5, 0xF0, 0xE3, 0x60, 0x20, 0x3D, 0x96, +0xA2, 0x02, 0xA0, 0x16, 0xA9, 0x0F, 0x20, 0x28, 0x96, 0xA5, 0x00, 0xC9, 0x0A, 0xF0, 0x0B, 0xA9, +0x11, 0x20, 0x80, 0xC0, 0xA5, 0x04, 0xC9, 0x01, 0xF0, 0x05, 0xA9, 0x10, 0x20, 0x80, 0xC0, 0xA5, +0x1F, 0x29, 0x30, 0x0A, 0x0A, 0x0A, 0x08, 0x30, 0x04, 0xA9, 0x12, 0x80, 0x07, 0xA9, 0x14, 0x20, +0x80, 0xC0, 0xA9, 0x13, 0x20, 0x80, 0xC0, 0x28, 0x90, 0x03, 0x20, 0xA9, 0x96, 0xA0, 0x17, 0xA2, +0x01, 0x20, 0x14, 0x96, 0xA9, 0x4C, 0x4C, 0x1E, 0x97, 0xA0, 0x05, 0x20, 0x24, 0x96, 0xA0, 0x06, +0xA9, 0x15, 0x20, 0x26, 0x96, 0xA0, 0x07, 0xA9, 0x15, 0x20, 0x26, 0x96, 0x08, 0x78, 0xC2, 0x30, +0xF4, 0x00, 0x00, 0xF4, 0x6F, 0x00, 0xA2, 0x03, 0x0F, 0x22, 0x00, 0x00, 0xE1, 0xE2, 0x30, 0xA2, +0x19, 0xA0, 0x06, 0x20, 0x14, 0x96, 0xAF, 0xF5, 0x02, 0xE1, 0xF0, 0x03, 0x20, 0x08, 0xAC, 0xA2, +0x09, 0xBF, 0x6F, 0x00, 0x00, 0xDA, 0x20, 0x59, 0xA9, 0xFA, 0xE8, 0xE0, 0x14, 0x90, 0xF2, 0xA2, +0x1A, 0xA0, 0x07, 0x20, 0x14, 0x96, 0xA2, 0x00, 0xBF, 0x6F, 0x00, 0x00, 0xDA, 0x20, 0x59, 0xA9, +0xFA, 0xE8, 0xE0, 0x08, 0x90, 0xF2, 0x28, 0xA0, 0x08, 0xA9, 0x17, 0x4C, 0x26, 0x96, 0xA9, 0x5C, +0x80, 0x0F, 0xA9, 0x4C, 0x80, 0x12, 0xA9, 0x20, 0x80, 0x07, 0xA9, 0xA0, 0x80, 0x0A, 0x48, 0x80, +0x03, 0x48, 0xA9, 0x5A, 0x20, 0x59, 0xA9, 0x68, 0x48, 0xA5, 0x24, 0x2C, 0x1F, 0xC0, 0x10, 0x06, +0xAD, 0x7B, 0x05, 0x38, 0xE9, 0x14, 0xAA, 0x68, 0xE0, 0x27, 0xB0, 0x24, 0xDA, 0x48, 0x20, 0x59, +0xA9, 0x68, 0xFA, 0xE8, 0x80, 0xF2, 0x20, 0x43, 0x9B, 0xA8, 0xC2, 0x20, 0xE0, 0x02, 0x90, 0x23, +0xF0, 0x0F, 0xE0, 0x05, 0xF0, 0x0F, 0xE0, 0x06, 0xF0, 0x0F, 0xE0, 0x07, 0xF0, 0x0F, 0xE2, 0x30, +0x60, 0xA5, 0x59, 0x80, 0x0A, 0xA5, 0x5D, 0x80, 0x06, 0xA5, 0x61, 0x80, 0x02, 0xA5, 0x55, 0x4A, +0x4A, 0x80, 0x2A, 0xC2, 0x20, 0xA9, 0x00, 0x80, 0x85, 0x1B, 0x64, 0x1D, 0xF4, 0x00, 0x00, 0xF4, +0x00, 0x00, 0x18, 0x88, 0xC0, 0xFF, 0xF0, 0x10, 0xA3, 0x01, 0x65, 0x1B, 0x83, 0x01, 0xA3, 0x03, +0x65, 0x1D, 0x83, 0x03, 0x63, 0x01, 0x80, 0xEB, 0xFA, 0x68, 0x4A, 0x4A, 0xFA, 0xE2, 0x30, 0xEB, +0xAA, 0xEB, 0x18, 0x85, 0x3E, 0x86, 0x3F, 0x66, 0x34, 0xA0, 0x05, 0xA2, 0x11, 0xA9, 0x00, 0x18, +0x2A, 0xC9, 0x0A, 0x90, 0x02, 0xE9, 0x0A, 0x26, 0x3E, 0x26, 0x3F, 0xCA, 0xD0, 0xF2, 0x09, 0xB0, +0x48, 0x88, 0xD0, 0xE7, 0xA0, 0x04, 0x68, 0xC9, 0xB0, 0xD0, 0x15, 0x24, 0x34, 0x30, 0x0A, 0xBB, +0xF0, 0x0A, 0x5A, 0x48, 0x20, 0x08, 0xAC, 0x68, 0x7A, 0x88, 0x10, 0xEA, 0x4C, 0x59, 0xA9, 0x68, +0x5A, 0x20, 0x59, 0xA9, 0x7A, 0x88, 0x10, 0xF7, 0x60, 0xA5, 0x00, 0xC9, 0x05, 0xD0, 0x31, 0xAF, +0xE1, 0x02, 0xE1, 0x0F, 0xE2, 0x02, 0xE1, 0x0F, 0xE7, 0x02, 0xE1, 0xD0, 0x12, 0xA9, 0x18, 0xA0, +0x0F, 0x20, 0x08, 0x98, 0xA9, 0x19, 0xA0, 0x10, 0xA2, 0x01, 0x20, 0x28, 0x96, 0x38, 0x60, 0xA0, +0x0F, 0x20, 0x16, 0x98, 0xA0, 0x10, 0xA2, 0x01, 0x20, 0x14, 0x96, 0xA9, 0xA0, 0x20, 0x1E, 0x97, +0x18, 0x60, 0xA9, 0x53, 0x4C, 0x59, 0xA9, 0xA2, 0x01, 0xA0, 0x00, 0x20, 0x14, 0x96, 0xA9, 0xDF, +0x20, 0x1E, 0x97, 0x20, 0x3D, 0x96, 0x4C, 0x9D, 0x96, 0x20, 0x16, 0x97, 0xA2, 0x01, 0xA0, 0x02, +0x20, 0x14, 0x96, 0xA9, 0x4C, 0x4C, 0x1E, 0x97, 0x4C, 0xF8, 0x98, 0x4C, 0xB5, 0x99, 0x4C, 0x70, +0x99, 0xA0, 0x05, 0x84, 0x25, 0xA6, 0x00, 0xF0, 0xEF, 0xE0, 0x03, 0xF0, 0xEE, 0xE0, 0x08, 0xF0, +0xED, 0x20, 0x38, 0x9B, 0xA2, 0x00, 0x20, 0x79, 0x98, 0x34, 0x83, 0x30, 0x03, 0x20, 0xAE, 0x98, +0xE6, 0x25, 0x1A, 0xE8, 0xE4, 0x04, 0x90, 0xEE, 0x60, 0x48, 0xDA, 0xB5, 0x83, 0x08, 0xA3, 0x02, +0xC5, 0x02, 0xD0, 0x03, 0x20, 0xD7, 0x9B, 0x18, 0xA9, 0x05, 0x63, 0x02, 0xA8, 0xA2, 0x04, 0xA3, +0x03, 0x20, 0x28, 0x96, 0x28, 0x08, 0x30, 0x12, 0xA9, 0xBA, 0x20, 0x59, 0xA9, 0x20, 0xC8, 0x9B, +0x20, 0x08, 0xAC, 0xA3, 0x02, 0x85, 0x01, 0x20, 0x02, 0x9B, 0x28, 0xFA, 0x68, 0x60, 0x48, 0xDA, +0xA6, 0x01, 0xB4, 0x93, 0xB7, 0xAD, 0xA6, 0x00, 0xE0, 0x04, 0xD0, 0x13, 0xBB, 0xF0, 0x0B, 0xC0, +0x02, 0xB0, 0x0C, 0xAA, 0xBF, 0x02, 0x03, 0xE1, 0x80, 0x05, 0xAA, 0xBF, 0xF9, 0x02, 0xE1, 0x18, +0x77, 0xA4, 0x20, 0x80, 0xC0, 0xA6, 0x01, 0xB4, 0x93, 0x20, 0x1A, 0x97, 0x20, 0xE2, 0x98, 0xFA, +0x68, 0x60, 0xB7, 0xAD, 0xD7, 0xAA, 0x08, 0xA9, 0xA0, 0xA2, 0x02, 0xA4, 0x25, 0x20, 0x14, 0x96, +0x28, 0xD0, 0x02, 0xA9, 0x44, 0x4C, 0x59, 0xA9, 0x20, 0x38, 0x9B, 0xA2, 0x00, 0x20, 0x79, 0x98, +0x48, 0xDA, 0xE0, 0x08, 0xD0, 0x14, 0xAF, 0xDD, 0x02, 0xE1, 0xD0, 0x04, 0xA9, 0x9B, 0x80, 0x02, +0xA9, 0x6D, 0x20, 0x80, 0xC0, 0x20, 0x22, 0x98, 0x80, 0x49, 0xFA, 0x68, 0x34, 0x83, 0x30, 0x45, +0x48, 0xDA, 0xB5, 0x83, 0xC9, 0x06, 0xD0, 0x30, 0xA2, 0x03, 0x20, 0x43, 0x9B, 0xD7, 0xAA, 0xD0, +0x18, 0xA2, 0x04, 0x20, 0x43, 0x9B, 0xD7, 0xAA, 0xD0, 0x0F, 0xA2, 0x05, 0x20, 0x43, 0x9B, 0xD7, +0xAA, 0xD0, 0x06, 0xA9, 0x6C, 0xE2, 0x02, 0x80, 0x02, 0xA9, 0x6B, 0x08, 0x20, 0x80, 0xC0, 0x20, +0x08, 0xAC, 0x28, 0x20, 0xE6, 0x98, 0x80, 0x0B, 0xC9, 0x02, 0x90, 0x04, 0xC9, 0x06, 0xB0, 0x03, +0x20, 0xAE, 0x98, 0xFA, 0x68, 0xE6, 0x25, 0x1A, 0xE8, 0xE4, 0x04, 0x90, 0x90, 0x4C, 0x6E, 0xB7, +0xA0, 0x05, 0x84, 0x25, 0x20, 0x38, 0x9B, 0xA2, 0x00, 0xDA, 0x48, 0x20, 0x79, 0x98, 0x20, 0x46, +0x97, 0xA3, 0x02, 0xC9, 0x03, 0xF0, 0x12, 0xC9, 0x04, 0xF0, 0x0E, 0xA9, 0xCB, 0x20, 0x59, 0xA9, +0xA3, 0x02, 0xC9, 0x02, 0xD0, 0x03, 0x20, 0x22, 0x98, 0xA3, 0x02, 0xAA, 0xA3, 0x01, 0xE0, 0x01, +0xF0, 0x04, 0xE0, 0x00, 0xD0, 0x04, 0x9B, 0x20, 0xE2, 0x98, 0xE6, 0x25, 0x68, 0x1A, 0xFA, 0xE8, +0xE4, 0x04, 0x90, 0xC5, 0x60, 0xAF, 0xF5, 0x02, 0xE1, 0xF0, 0x07, 0xA0, 0xA0, 0xBB, 0xA5, 0x68, +0x80, 0x17, 0xA2, 0xD0, 0xA5, 0x68, 0xC9, 0x0C, 0x90, 0x06, 0xF0, 0x0B, 0xE9, 0x0C, 0x80, 0x07, +0xAA, 0xD0, 0x02, 0xA9, 0x0C, 0xA2, 0xC1, 0xA0, 0xCD, 0x86, 0x6D, 0x84, 0x6E, 0x85, 0x6C, 0xA0, +0x05, 0x84, 0x25, 0xA6, 0x00, 0x20, 0x38, 0x9B, 0xA2, 0x00, 0x48, 0xDA, 0x20, 0x79, 0x98, 0x20, +0x43, 0x9B, 0xE0, 0x03, 0xF0, 0x31, 0xE0, 0x04, 0xF0, 0x37, 0xE0, 0x08, 0xF0, 0x1F, 0xA6, 0x01, +0xE0, 0x05, 0xD0, 0x02, 0xA0, 0x08, 0xB9, 0x64, 0x00, 0xC0, 0x00, 0xF0, 0x04, 0xC0, 0x01, 0xD0, +0x01, 0x1A, 0xA2, 0x00, 0x38, 0x20, 0xA3, 0x97, 0x20, 0x08, 0xAC, 0x80, 0x14, 0xA0, 0x01, 0x20, +0x36, 0x96, 0xA0, 0x01, 0x4C, 0xD9, 0x98, 0xA0, 0x00, 0x20, 0x36, 0x96, 0xA0, 0x00, 0x20, 0xE2, +0x98, 0xFA, 0xDA, 0xE0, 0x05, 0xD0, 0x0D, 0xA5, 0x6D, 0x20, 0x59, 0xA9, 0xA5, 0x6E, 0x20, 0x59, +0xA9, 0x20, 0x08, 0xAC, 0xFA, 0x68, 0x1A, 0xE8, 0xE6, 0x25, 0xE4, 0x04, 0x90, 0x9C, 0x60, 0x58, +0x20, 0x84, 0x9A, 0xC9, 0x8B, 0xF0, 0x05, 0xC9, 0x8A, 0xF0, 0x13, 0x60, 0xA5, 0x01, 0xD0, 0x04, +0xA5, 0x04, 0x85, 0x01, 0xC6, 0x01, 0xA6, 0x01, 0xB5, 0x83, 0x30, 0xF0, 0x80, 0x13, 0xA5, 0x01, +0x1A, 0xC5, 0x04, 0x90, 0x04, 0xA9, 0xFF, 0x85, 0x01, 0xE6, 0x01, 0xA6, 0x01, 0xB5, 0x83, 0x30, +0xED, 0xA9, 0x00, 0x60, 0x20, 0x74, 0xCF, 0x10, 0xFB, 0xC9, 0x8B, 0xF0, 0x19, 0xC9, 0x8A, 0xF0, +0x15, 0xC9, 0x88, 0xF0, 0x12, 0xC9, 0x95, 0xF0, 0x0E, 0xC9, 0x9B, 0xF0, 0x09, 0xC9, 0x8D, 0xF0, +0x05, 0x20, 0x5D, 0xA0, 0x80, 0xDE, 0x18, 0x60, 0xA5, 0x22, 0x48, 0x64, 0x24, 0x84, 0x25, 0x84, +0x22, 0x20, 0x6C, 0xA9, 0x20, 0x76, 0xA9, 0x68, 0x85, 0x22, 0x60, 0xA6, 0x00, 0xBF, 0xFE, 0x88, +0xFF, 0x85, 0x1F, 0x29, 0x0F, 0x85, 0x04, 0x8A, 0x0A, 0xAA, 0xBF, 0xE9, 0x88, 0xFF, 0xEB, 0xBF, +0xE8, 0x88, 0xFF, 0xA2, 0x00, 0x20, 0xF6, 0x9A, 0xE0, 0x08, 0x90, 0xF9, 0xEB, 0x20, 0xF6, 0x9A, +0xE0, 0x10, 0x90, 0xF9, 0xA2, 0x00, 0x9B, 0xB5, 0x83, 0xC9, 0x80, 0x94, 0x93, 0xE8, 0xB0, 0x01, +0xC8, 0xE0, 0x10, 0x90, 0xF2, 0x60, 0x4A, 0x48, 0xA0, 0x80, 0xB0, 0x01, 0x9B, 0x94, 0x83, 0x68, +0xE8, 0x60, 0x8B, 0x4B, 0xAB, 0xA6, 0x00, 0xBD, 0xC5, 0x88, 0x85, 0xA4, 0xBD, 0xD6, 0x88, 0x85, +0xAA, 0xBD, 0xDF, 0x88, 0x85, 0xAD, 0xBD, 0xCD, 0x88, 0x85, 0xA7, 0xA9, 0xE1, 0x85, 0xAF, 0x4B, +0x68, 0x85, 0xA6, 0x85, 0xAC, 0x85, 0xA9, 0xA9, 0x89, 0x85, 0xA5, 0x85, 0xAB, 0x85, 0xA8, 0xA9, +0x02, 0x85, 0xAE, 0x8A, 0x0A, 0xAA, 0xAB, 0x60, 0xA6, 0x00, 0xBF, 0x09, 0x89, 0xFF, 0x85, 0xA3, +0x60, 0xA6, 0x01, 0x86, 0x01, 0x20, 0x02, 0x9B, 0xA6, 0x01, 0xB4, 0x93, 0xB7, 0xA7, 0x10, 0x56, +0x48, 0xA5, 0x00, 0xC9, 0x03, 0xF0, 0x37, 0xC9, 0x04, 0xF0, 0x3D, 0x5A, 0xA0, 0xFF, 0xC2, 0x20, +0xF4, 0x00, 0x00, 0xF4, 0x00, 0x80, 0xA5, 0x58, 0x85, 0x1B, 0xA5, 0x5A, 0x85, 0x1D, 0xC9, 0x80, +0x00, 0xB0, 0x11, 0xC8, 0x38, 0xC8, 0xA5, 0x1B, 0xE3, 0x01, 0x85, 0x1B, 0xA5, 0x1D, 0xE3, 0x03, +0x85, 0x1D, 0xB0, 0xF0, 0x84, 0x05, 0x68, 0x68, 0xE2, 0x30, 0x7A, 0x68, 0x80, 0x1A, 0x68, 0x8B, +0x4B, 0xAB, 0xB9, 0x75, 0x89, 0xAB, 0x80, 0x0E, 0x68, 0x0A, 0x30, 0x06, 0xAF, 0xF8, 0x02, 0xE1, +0x80, 0x04, 0xAF, 0x01, 0x03, 0xE1, 0x85, 0x05, 0xB7, 0xAD, 0x60, 0x48, 0x97, 0xAD, 0xA6, 0x01, +0xE0, 0x03, 0xF0, 0x07, 0xE0, 0x04, 0xF0, 0x03, 0x68, 0x18, 0x60, 0xAF, 0xDA, 0x02, 0xE1, 0xCF, +0xDB, 0x02, 0xE1, 0xD0, 0xF3, 0x68, 0x38, 0x60, 0x48, 0xDA, 0x5A, 0x20, 0x84, 0xFE, 0xA9, 0x1B, +0x20, 0x59, 0xA9, 0x7A, 0xFA, 0x68, 0x60, 0x48, 0xDA, 0x5A, 0xA9, 0x7F, 0x85, 0x32, 0xA9, 0x18, +0x80, 0xEE, 0x20, 0x17, 0x9C, 0xD4, 0x28, 0xD4, 0x24, 0xA6, 0x00, 0xBF, 0xFE, 0x88, 0xFF, 0x0A, +0x0A, 0x10, 0x12, 0x9C, 0x7B, 0x04, 0xA5, 0x32, 0x48, 0x20, 0xC8, 0x9B, 0x20, 0xBC, 0x96, 0x68, +0x30, 0x03, 0x20, 0xD7, 0x9B, 0xC2, 0x30, 0x68, 0x85, 0x24, 0x68, 0x85, 0x28, 0xE2, 0x30, 0x20, +0x1A, 0x9C, 0x9C, 0x32, 0xC0, 0x18, 0x6B, 0xE2, 0x40, 0x50, 0xB8, 0xA2, 0x00, 0xA0, 0x78, 0xA9, +0x04, 0x84, 0x09, 0x85, 0x0A, 0xA0, 0x00, 0x50, 0x06, 0xB1, 0x09, 0x95, 0x0B, 0x80, 0x04, 0xB5, +0x0B, 0x91, 0x09, 0xE8, 0xA0, 0x80, 0x50, 0x06, 0xB1, 0x09, 0x95, 0x0B, 0x80, 0x04, 0xB5, 0x0B, +0x91, 0x09, 0xE8, 0xA5, 0x0A, 0x1A, 0xC9, 0x08, 0x90, 0xD9, 0xA0, 0x7B, 0xC4, 0x09, 0xD0, 0xCF, +0x60, 0xD8, 0x7C, 0x55, 0x9C, 0xA2, 0x9D, 0xBE, 0x9D, 0xE2, 0x9C, 0x5F, 0x9C, 0xC9, 0x9C, 0xBB, +0xB0, 0x1F, 0xA0, 0xC4, 0xC4, 0x39, 0xD0, 0x04, 0xA4, 0x38, 0xF0, 0x15, 0x48, 0xDA, 0x29, 0x7F, +0xC9, 0x02, 0xB0, 0x09, 0x08, 0x78, 0x20, 0x59, 0xC4, 0x20, 0x91, 0xC4, 0x28, 0xFA, 0x68, 0x80, +0x47, 0xEB, 0xA3, 0x07, 0xA8, 0xEB, 0x91, 0x28, 0xA0, 0x05, 0x84, 0x38, 0x08, 0x78, 0x22, 0xE2, +0x9C, 0xFF, 0xAD, 0x7C, 0x04, 0xAE, 0x7C, 0x05, 0xA0, 0x05, 0x20, 0x37, 0x9F, 0xAD, 0xFC, 0x04, +0xAE, 0xFC, 0x05, 0xA0, 0x0C, 0x20, 0x37, 0x9F, 0xAD, 0x00, 0xC0, 0x0A, 0x08, 0xAD, 0x7C, 0x07, +0x2A, 0x2A, 0x2A, 0x29, 0x03, 0x49, 0x03, 0x1A, 0x28, 0xA2, 0x00, 0xA0, 0x10, 0x20, 0x48, 0x9F, +0xA9, 0x8D, 0x8D, 0x11, 0x02, 0xA2, 0x11, 0x28, 0x6B, 0xA2, 0x04, 0xBF, 0xB7, 0x02, 0xE1, 0x48, +0xCA, 0xD0, 0xF8, 0x68, 0x9D, 0x7C, 0x04, 0x68, 0x9D, 0x7C, 0x05, 0x8A, 0x30, 0xEA, 0xA2, 0x80, +0x80, 0xF1, 0x08, 0x78, 0x20, 0xD2, 0xC4, 0x90, 0x10, 0xAD, 0x7C, 0x07, 0x49, 0x90, 0xAA, 0x29, +0x80, 0xA8, 0x8A, 0x29, 0x10, 0x0A, 0x0A, 0x0A, 0xAA, 0xA9, 0x20, 0x1C, 0x7C, 0x07, 0x98, 0x29, +0x3F, 0x48, 0x8A, 0x29, 0x3F, 0x03, 0x01, 0xF0, 0x05, 0xA9, 0x20, 0x0C, 0x7C, 0x07, 0x68, 0xAD, +0x7C, 0x07, 0x48, 0x29, 0x2E, 0x8D, 0x7C, 0x07, 0x68, 0x29, 0x90, 0x0A, 0x90, 0x09, 0xF0, 0x0D, +0xA9, 0x41, 0x0C, 0x7C, 0x07, 0x80, 0x0A, 0xF0, 0x08, 0xA9, 0x01, 0x80, 0xF5, 0xA9, 0x40, 0x80, +0xF1, 0x98, 0x2A, 0x8A, 0xB0, 0x09, 0x30, 0x0D, 0xA9, 0x90, 0x0C, 0x7C, 0x07, 0x80, 0x0A, 0x30, +0x08, 0xA9, 0x10, 0x80, 0xF5, 0xA9, 0x80, 0x80, 0xF1, 0x8A, 0x29, 0x7F, 0xAA, 0x0A, 0x10, 0x07, +0x8A, 0x09, 0x80, 0xA2, 0xFF, 0x80, 0x03, 0x8A, 0xA2, 0x00, 0xDA, 0x48, 0x98, 0x29, 0x7F, 0xA8, +0x0A, 0x10, 0x07, 0x98, 0x09, 0x80, 0xA0, 0xFF, 0x80, 0x03, 0x98, 0xA0, 0x00, 0x5A, 0x48, 0xAD, +0xFC, 0x05, 0x8D, 0xFC, 0x06, 0x68, 0x18, 0x6D, 0xFC, 0x04, 0x8D, 0xFC, 0x04, 0x68, 0x6D, 0xFC, +0x05, 0x8D, 0xFC, 0x05, 0x20, 0x8B, 0x9E, 0xAD, 0x7C, 0x05, 0x8D, 0xFC, 0x06, 0x68, 0x18, 0x6D, +0x7C, 0x04, 0x8D, 0x7C, 0x04, 0x68, 0x6D, 0x7C, 0x05, 0x8D, 0x7C, 0x05, 0x20, 0x76, 0x9E, 0x28, +0x18, 0x6B, 0xC2, 0x30, 0xA9, 0x00, 0x00, 0x8F, 0xB8, 0x02, 0xE1, 0x8F, 0xBA, 0x02, 0xE1, 0xA9, +0xFF, 0x03, 0x8F, 0xBC, 0x02, 0xE1, 0x8F, 0xBE, 0x02, 0xE1, 0xE2, 0x30, 0x80, 0x22, 0x29, 0x01, +0xAA, 0xF0, 0x01, 0xE8, 0xAD, 0x78, 0x04, 0x9F, 0xB8, 0x02, 0xE1, 0xAD, 0x78, 0x05, 0x9F, 0xB9, +0x02, 0xE1, 0xAD, 0xF8, 0x04, 0x9F, 0xBC, 0x02, 0xE1, 0xAD, 0xF8, 0x05, 0x9F, 0xBD, 0x02, 0xE1, +0xA2, 0x00, 0xA9, 0xC0, 0x1C, 0xFC, 0x07, 0x1C, 0x7C, 0x06, 0x20, 0x4C, 0x9E, 0x0C, 0xFC, 0x07, +0x20, 0x69, 0x9E, 0xB0, 0x07, 0x2C, 0xFC, 0x07, 0x22, 0x0C, 0x9E, 0xFF, 0xA2, 0x02, 0x20, 0x4C, +0x9E, 0x0C, 0x7C, 0x06, 0x20, 0x69, 0x9E, 0xB0, 0x42, 0x2C, 0x7C, 0x06, 0x70, 0x3D, 0x10, 0x02, +0xE2, 0x40, 0xC2, 0x30, 0xBF, 0xB8, 0x02, 0xE1, 0x70, 0x21, 0x89, 0x00, 0xFF, 0xD0, 0x1C, 0x89, +0x80, 0x00, 0xF0, 0x17, 0x09, 0x00, 0xFF, 0x9F, 0xB8, 0x02, 0xE1, 0xE2, 0x30, 0xA9, 0x40, 0xE0, +0x02, 0xD0, 0x04, 0x0C, 0x7C, 0x06, 0x6B, 0x0C, 0xFC, 0x07, 0x6B, 0xA8, 0xBF, 0xBC, 0x02, 0xE1, +0x9F, 0xB8, 0x02, 0xE1, 0x98, 0x9F, 0xBC, 0x02, 0xE1, 0xE2, 0x30, 0x6B, 0xBF, 0xBD, 0x02, 0xE1, +0x08, 0xBF, 0xB9, 0x02, 0xE1, 0x30, 0x09, 0x28, 0x30, 0x03, 0xA9, 0x00, 0x60, 0xA9, 0xC0, 0x60, +0x28, 0x30, 0x03, 0xA9, 0x40, 0x60, 0xA9, 0x80, 0x60, 0xC2, 0x30, 0xBF, 0xBC, 0x02, 0xE1, 0xDF, +0xB8, 0x02, 0xE1, 0xE2, 0x30, 0x60, 0xA0, 0x00, 0xBB, 0xEB, 0xB9, 0x7C, 0x04, 0xEB, 0xA8, 0x50, +0x05, 0x2C, 0xFC, 0x07, 0x80, 0x14, 0x2C, 0xFC, 0x07, 0x80, 0x1D, 0xA0, 0x80, 0xA2, 0x02, 0xEB, +0xB9, 0x7C, 0x04, 0xEB, 0xA8, 0x50, 0x0E, 0x2C, 0x7C, 0x06, 0x30, 0x07, 0x50, 0x23, 0x98, 0x30, +0x20, 0x10, 0x37, 0x50, 0x35, 0x2C, 0x7C, 0x06, 0x08, 0x98, 0x30, 0x29, 0x28, 0x30, 0x10, 0x50, +0x47, 0xC2, 0x30, 0xEB, 0xDF, 0xBC, 0x02, 0xE1, 0xE2, 0x30, 0xF0, 0x02, 0xB0, 0x03, 0x60, 0x70, +0x37, 0x9B, 0xF0, 0x02, 0xA0, 0x80, 0xBF, 0xBC, 0x02, 0xE1, 0x99, 0x7C, 0x04, 0xBF, 0xBD, 0x02, +0xE1, 0x99, 0x7C, 0x05, 0x60, 0x28, 0x30, 0x20, 0x70, 0x12, 0x9B, 0xF0, 0x02, 0xA0, 0x80, 0xBF, +0xB8, 0x02, 0xE1, 0x99, 0x7C, 0x04, 0xBF, 0xB9, 0x02, 0xE1, 0x80, 0xE5, 0xEB, 0xC2, 0x30, 0xDF, +0xB8, 0x02, 0xE1, 0xE2, 0x30, 0x90, 0xE3, 0x60, 0x98, 0x30, 0x17, 0xAD, 0xFC, 0x06, 0x10, 0x17, +0x38, 0x9B, 0xF0, 0x02, 0xA0, 0x80, 0xF9, 0x7C, 0x05, 0x70, 0x0C, 0x2C, 0xFC, 0x06, 0x10, 0xCA, +0x30, 0xAF, 0xAD, 0xFC, 0x06, 0x10, 0xE9, 0x9B, 0xF0, 0x02, 0xA0, 0x80, 0xB9, 0x7C, 0x05, 0xC2, +0x30, 0xEB, 0xDF, 0xBC, 0x02, 0xE1, 0xE2, 0x30, 0xF0, 0x02, 0xB0, 0x95, 0xC2, 0x30, 0xDF, 0xB8, +0x02, 0xE1, 0xE2, 0x30, 0x90, 0xA4, 0x60, 0xE0, 0x80, 0x90, 0x0D, 0x49, 0xFF, 0x69, 0x00, 0x48, +0x8A, 0x49, 0xFF, 0x69, 0x00, 0xAA, 0x68, 0x38, 0x8D, 0x21, 0x02, 0x8E, 0x20, 0x02, 0xA9, 0xAB, +0x90, 0x02, 0xA9, 0xAD, 0x48, 0xA9, 0xAC, 0x99, 0x01, 0x02, 0x20, 0x62, 0x9F, 0x68, 0x99, 0x00, +0x02, 0x60, 0xA2, 0x11, 0xA9, 0x00, 0x18, 0x2A, 0xC9, 0x0A, 0x90, 0x02, 0xE9, 0x0A, 0x2E, 0x21, +0x02, 0x2E, 0x20, 0x02, 0xCA, 0xD0, 0xF0, 0x09, 0xB0, 0x99, 0x00, 0x02, 0x88, 0xF0, 0x08, 0xC0, +0x07, 0xF0, 0x04, 0xC0, 0x0E, 0xD0, 0xDB, 0x60, 0xAD, 0x15, 0xC0, 0x48, 0x8D, 0x07, 0xC0, 0xF4, +0xF2, 0x9F, 0x98, 0x30, 0x30, 0x08, 0xC9, 0x05, 0xB0, 0x04, 0x0A, 0x28, 0x80, 0x17, 0x28, 0xAD, +0xFB, 0x04, 0x29, 0xD6, 0x08, 0x98, 0x0A, 0x28, 0xD0, 0x0B, 0x18, 0x69, 0x1E, 0x48, 0x20, 0x73, +0xC9, 0x20, 0x97, 0xCD, 0x68, 0x9B, 0xAA, 0xBF, 0xD6, 0x9F, 0xFF, 0x48, 0xBF, 0xD5, 0x9F, 0xFF, +0x48, 0xBB, 0xA3, 0x0A, 0x60, 0x08, 0x0A, 0x28, 0x9B, 0xAA, 0xBF, 0x12, 0xA0, 0xFF, 0x48, 0xBF, +0x11, 0xA0, 0xFF, 0x80, 0xEB, 0x4F, 0xC8, 0xF3, 0xB2, 0xED, 0xB2, 0x26, 0xB3, 0x20, 0xB3, 0x54, +0xB2, 0x6F, 0xB2, 0x0E, 0xB3, 0xAA, 0xB2, 0x4B, 0xB3, 0x5A, 0xB2, 0xE0, 0xB2, 0x9D, 0xB2, 0x08, +0xB3, 0xCC, 0xB2, 0x83, 0x06, 0x68, 0x30, 0x03, 0x8D, 0x06, 0xC0, 0x6B, 0x00, 0xB3, 0xB2, 0x83, +0xCB, 0x3F, 0xCC, 0xAE, 0xB2, 0x4B, 0xB3, 0x1A, 0xCC, 0x70, 0xB3, 0x3B, 0xB3, 0x08, 0xB3, 0xC1, +0xB2, 0x51, 0xAA, 0xA9, 0xB4, 0x9C, 0xB3, 0xF5, 0xB3, 0x01, 0xB0, 0x0F, 0xB2, 0xC1, 0xA2, 0xCD, +0xA2, 0xA7, 0xA6, 0xD5, 0xA2, 0x27, 0xAB, 0x7F, 0xB4, 0x7C, 0xB3, 0x35, 0xB0, 0xCC, 0xA6, 0xBC, +0xA6, 0xD8, 0xA7, 0x7D, 0xA1, 0x9E, 0xA9, 0xFD, 0xA3, 0xCD, 0xB1, 0x89, 0xA1, 0xEA, 0xA0, 0x0C, +0xAC, 0x31, 0xA5, 0xA2, 0xAC, 0x12, 0xAC, 0x9A, 0xC9, 0xA3, 0xC9, 0x3D, 0xA2, 0x5C, 0xA0, 0xCF, +0xAA, 0x63, 0xA0, 0x0C, 0xA6, 0x7F, 0xA9, 0x94, 0xB6, 0x93, 0xBB, 0x9F, 0xA4, 0x22, 0x6C, 0x00, +0xE1, 0xB0, 0x01, 0x60, 0x08, 0x78, 0xA9, 0xB0, 0x20, 0xA8, 0xFC, 0xAD, 0x36, 0xC0, 0x48, 0x29, +0x7F, 0x8D, 0x36, 0xC0, 0xDA, 0x8B, 0x20, 0x82, 0xF8, 0xAD, 0xDF, 0x02, 0x49, 0x0F, 0x8D, 0x6D, +0x01, 0x9C, 0x6E, 0x01, 0xC2, 0x20, 0xA9, 0x88, 0x88, 0x8D, 0x69, 0x01, 0xA9, 0x00, 0x20, 0x8D, +0x6B, 0x01, 0xE2, 0x30, 0xAD, 0xCA, 0x00, 0x8D, 0x6F, 0x01, 0x48, 0x18, 0xC2, 0x30, 0xAC, 0x6D, +0x01, 0xA2, 0x50, 0x02, 0x88, 0xD0, 0x0B, 0xAC, 0x6D, 0x01, 0x2E, 0x69, 0x01, 0x90, 0x03, 0xAD, +0x30, 0xC0, 0xCA, 0xD0, 0x18, 0xA2, 0x50, 0x02, 0xE2, 0x20, 0xAD, 0x6F, 0x01, 0xF0, 0x19, 0x3A, +0x8D, 0x6F, 0x01, 0x8D, 0xCA, 0x00, 0x8D, 0x3C, 0xC0, 0xC2, 0x20, 0x80, 0x06, 0xA9, 0x05, 0x00, +0x3A, 0xD0, 0xFD, 0xCE, 0x6B, 0x01, 0xD0, 0xCC, 0xE2, 0x30, 0x68, 0x8D, 0xCA, 0x00, 0x8D, 0x3C, +0xC0, 0xAB, 0xFA, 0xA0, 0x00, 0x68, 0x8D, 0x36, 0xC0, 0x28, 0x60, 0x20, 0x32, 0xA1, 0x60, 0xA9, +0xFF, 0x8F, 0x34, 0x01, 0xE1, 0x8B, 0xA9, 0xE1, 0x48, 0xAB, 0x9C, 0x36, 0x01, 0x9C, 0xD7, 0x00, +0x9C, 0xCB, 0x00, 0x9C, 0x01, 0x01, 0xC2, 0x20, 0x9C, 0x03, 0x01, 0x9C, 0x43, 0x01, 0x9C, 0xC3, +0x00, 0x9C, 0xC5, 0x00, 0xA9, 0x01, 0x00, 0x8D, 0x74, 0x01, 0xA9, 0x5A, 0xA5, 0x8D, 0x76, 0x01, +0xA9, 0xA9, 0xFF, 0x8D, 0x7A, 0x01, 0xA9, 0x5C, 0x8C, 0x8D, 0x78, 0x01, 0xE2, 0x30, 0x9C, 0x7C, +0x01, 0xAB, 0x8B, 0x8B, 0x20, 0x82, 0xF8, 0xAD, 0x68, 0xC0, 0x29, 0xFE, 0x8D, 0x2D, 0x01, 0xA3, +0x0B, 0x29, 0x80, 0x0D, 0x35, 0xC0, 0x8D, 0x2E, 0x01, 0x68, 0x8D, 0x2B, 0x01, 0x8D, 0x2C, 0x01, +0x8D, 0x3E, 0x01, 0xC2, 0x30, 0x7B, 0x8D, 0x28, 0x01, 0x3B, 0x18, 0x69, 0x0B, 0x00, 0x8D, 0x26, +0x01, 0xA9, 0x01, 0x01, 0x8D, 0x2F, 0x01, 0x8D, 0x31, 0x01, 0xE2, 0x30, 0xA0, 0x05, 0xA9, 0x00, +0x99, 0x20, 0x01, 0x88, 0x10, 0xFA, 0x8D, 0x2A, 0x01, 0x8C, 0x33, 0x01, 0xAB, 0x60, 0xA9, 0x00, +0xA2, 0x02, 0x9F, 0x30, 0x01, 0xE1, 0xCA, 0x10, 0xF9, 0x60, 0xAD, 0x36, 0xC0, 0x48, 0x29, 0x7F, +0x08, 0x78, 0x8D, 0x36, 0xC0, 0xAD, 0x70, 0xC0, 0xA0, 0x00, 0xEA, 0xEA, 0xBD, 0x64, 0xC0, 0x10, +0x04, 0xC8, 0xD0, 0xF8, 0x88, 0x28, 0x68, 0x8D, 0x36, 0xC0, 0x60, 0xE2, 0x30, 0xEB, 0xA9, 0x80, +0x0C, 0x36, 0xC0, 0xEB, 0x8D, 0x07, 0xC0, 0x60, 0x8B, 0x20, 0x82, 0xF8, 0xA2, 0x27, 0xBF, 0xD2, +0xBB, 0xFF, 0x9D, 0x80, 0x00, 0xBF, 0xC2, 0xBB, 0xFF, 0x9D, 0x10, 0x00, 0xCA, 0x10, 0xEF, 0xA2, +0x17, 0x9E, 0xA8, 0x00, 0xCA, 0x10, 0xFA, 0xA9, 0xFF, 0x8D, 0xC2, 0x00, 0xA9, 0x4C, 0x8F, 0xD0, +0x03, 0x00, 0x8F, 0xF5, 0x03, 0x00, 0x8F, 0xF8, 0x03, 0x00, 0xC2, 0x30, 0xA9, 0x65, 0xFF, 0x8F, +0xFE, 0x03, 0x00, 0x8F, 0xD1, 0x03, 0x00, 0x8F, 0xF9, 0x03, 0x00, 0xA9, 0x03, 0xE0, 0x8F, 0xF6, +0x03, 0x00, 0xA9, 0xBB, 0x86, 0x8D, 0xC0, 0x00, 0xA2, 0x5C, 0x00, 0xA0, 0xB5, 0xFF, 0xA9, 0x5C, +0xDE, 0x9D, 0x20, 0x00, 0x98, 0x9D, 0x22, 0x00, 0xCA, 0xCA, 0xCA, 0xCA, 0x10, 0xED, 0xA9, 0x86, +0xB6, 0x8D, 0x51, 0x00, 0xA9, 0x5C, 0x84, 0x8D, 0x7C, 0x00, 0xA9, 0xA6, 0xFF, 0x8D, 0x7E, 0x00, +0xE2, 0x30, 0xA9, 0xFF, 0x8D, 0x53, 0x00, 0x9C, 0xD6, 0x00, 0xAB, 0x4C, 0x15, 0xB7, 0xC2, 0x10, +0xA2, 0xFF, 0x07, 0xA9, 0xB2, 0x9F, 0x00, 0x08, 0xE0, 0xCA, 0x10, 0xF9, 0xE2, 0x30, 0xAD, 0x68, +0xC0, 0x48, 0x8D, 0x06, 0xC0, 0xA9, 0xC1, 0x85, 0x01, 0x64, 0x00, 0xA2, 0x03, 0xBF, 0x67, 0xFB, +0xFF, 0xA8, 0xBF, 0x6B, 0xFB, 0xFF, 0xD1, 0x00, 0xD0, 0x0B, 0xCA, 0x10, 0xF0, 0xA5, 0x01, 0x29, +0x07, 0xAA, 0x9E, 0xF8, 0x07, 0xE6, 0x01, 0xA5, 0x01, 0xC9, 0xC8, 0x90, 0xDE, 0x68, 0x8D, 0x68, +0xC0, 0x22, 0x00, 0x00, 0xFE, 0x90, 0x08, 0xA9, 0x00, 0x8F, 0xFF, 0x15, 0xE1, 0x80, 0xF2, 0xA9, +0x00, 0x8F, 0xFE, 0x0F, 0xE1, 0x8F, 0xFF, 0x0F, 0xE1, 0x22, 0xF2, 0xB4, 0xFF, 0x20, 0x40, 0x65, +0x4C, 0x00, 0x1C, 0x08, 0xE2, 0x30, 0xAF, 0x7D, 0x01, 0xE1, 0x10, 0x09, 0x29, 0xBF, 0x8F, 0x7D, +0x01, 0xE1, 0x20, 0x9F, 0xA9, 0x28, 0x6B, 0x29, 0x0F, 0x09, 0xB0, 0xC9, 0xBA, 0x90, 0x02, 0x69, +0x06, 0x60, 0x22, 0x74, 0x00, 0xE1, 0xA9, 0x06, 0x90, 0x03, 0x20, 0x80, 0xC0, 0x60, 0x22, 0x78, +0x00, 0xE1, 0xA9, 0x05, 0x80, 0xF2, 0xA4, 0x34, 0xB9, 0x00, 0x02, 0xC9, 0xA0, 0xD0, 0x03, 0xC8, +0xD0, 0xF6, 0xC8, 0x84, 0x34, 0xA2, 0x10, 0xDF, 0xEA, 0xC0, 0xFF, 0xF0, 0x69, 0xCA, 0x10, 0xF7, +0x88, 0xB9, 0x00, 0x02, 0xC9, 0xA0, 0xD0, 0x03, 0xC8, 0x80, 0xF6, 0xE2, 0x40, 0xC9, 0xAB, 0xF0, +0x04, 0xC9, 0xAD, 0xD0, 0x01, 0xB8, 0x20, 0x77, 0xA6, 0xE2, 0x30, 0xA9, 0x02, 0x48, 0x5A, 0xA2, +0x00, 0xE8, 0xC8, 0xB9, 0x00, 0x02, 0xC9, 0x8D, 0xF0, 0x06, 0x49, 0xB0, 0xC9, 0x0A, 0x90, 0xF1, +0xC2, 0x30, 0xDA, 0x50, 0x05, 0xF4, 0x00, 0x00, 0x80, 0x03, 0xF4, 0x01, 0x00, 0xA2, 0x0B, 0x29, +0x22, 0x00, 0x00, 0xE1, 0xE2, 0x30, 0xA9, 0x09, 0x20, 0x80, 0xC0, 0xA3, 0x03, 0xAA, 0xA3, 0x04, +0x20, 0x2B, 0xA9, 0xFA, 0x68, 0x20, 0x2B, 0xA9, 0x68, 0x68, 0x20, 0xCC, 0xAB, 0xA2, 0x0A, 0x68, +0xCA, 0xD0, 0xFC, 0x4C, 0x63, 0xA9, 0xE0, 0x05, 0x90, 0x2A, 0xE0, 0x0F, 0xB0, 0x06, 0x8A, 0x69, +0x05, 0xAA, 0x80, 0x25, 0xD0, 0x03, 0x4C, 0x31, 0xA8, 0xA9, 0x08, 0x20, 0x80, 0xC0, 0xB8, 0x20, +0xB0, 0xA3, 0x20, 0x08, 0xAC, 0xA9, 0xFB, 0x20, 0x59, 0xA9, 0xE2, 0x40, 0x20, 0xB0, 0xA3, 0x20, +0x7F, 0xAD, 0x80, 0xC6, 0x8A, 0x0A, 0xAA, 0xC2, 0x20, 0xA5, 0x3E, 0xE0, 0x0F, 0x90, 0x06, 0xE0, +0x13, 0xF0, 0x02, 0x29, 0x01, 0x9F, 0x20, 0x01, 0xE1, 0xE2, 0x30, 0xA3, 0x07, 0x29, 0x7F, 0x48, +0xAF, 0x2E, 0x01, 0xE1, 0x29, 0x80, 0x8F, 0x37, 0x01, 0xE1, 0x03, 0x01, 0xFA, 0x83, 0x07, 0x60, +0x08, 0xC2, 0x30, 0xAF, 0x40, 0x01, 0xE1, 0x48, 0xA5, 0x3E, 0x48, 0xF4, 0x00, 0x00, 0xF4, 0x00, +0x02, 0xF4, 0x10, 0x00, 0xA9, 0x01, 0x00, 0x70, 0x01, 0x3A, 0x48, 0xA2, 0x0B, 0x27, 0x22, 0x00, +0x00, 0xE1, 0x28, 0xA2, 0xFF, 0xE8, 0xE0, 0x10, 0xB0, 0x23, 0xBD, 0x00, 0x02, 0xC9, 0x20, 0xF0, +0xF4, 0x50, 0x0E, 0xC9, 0x2D, 0xF0, 0x0A, 0xA9, 0xAB, 0xDA, 0x20, 0x59, 0xA9, 0xFA, 0xBD, 0x00, +0x02, 0x09, 0x80, 0xDA, 0x20, 0x59, 0xA9, 0xFA, 0xE8, 0xE0, 0x10, 0x90, 0xF1, 0x60, 0xAD, 0xFB, +0x04, 0x10, 0x2F, 0xC9, 0xFF, 0xF0, 0x2B, 0x2C, 0x1F, 0xC0, 0x10, 0x23, 0xC2, 0x30, 0xA2, 0x05, +0x09, 0x22, 0x00, 0x00, 0xE1, 0xE2, 0x30, 0xA9, 0x8D, 0x20, 0x71, 0xA9, 0x20, 0x17, 0x9C, 0xC2, +0x30, 0xA2, 0x05, 0x0A, 0x22, 0x00, 0x00, 0xE1, 0xE2, 0x30, 0x20, 0x1A, 0x9C, 0x80, 0x03, 0x20, +0xEB, 0xCC, 0xC2, 0x30, 0xAF, 0x16, 0x01, 0xE1, 0x48, 0x3A, 0x3A, 0x85, 0x3A, 0xE2, 0x30, 0x8B, +0x20, 0x82, 0xF8, 0xA2, 0x0B, 0xBD, 0x08, 0x01, 0x9D, 0x20, 0x01, 0xCA, 0x10, 0xF7, 0x8E, 0x39, +0x01, 0xAD, 0x18, 0x01, 0x8D, 0x2D, 0x01, 0x29, 0x04, 0x4A, 0x4A, 0x8D, 0x2F, 0x01, 0xAD, 0x1A, +0x01, 0x29, 0x80, 0x48, 0xAD, 0x19, 0x01, 0x03, 0x01, 0x8D, 0x2E, 0x01, 0x68, 0xAD, 0x15, 0x01, +0x8D, 0x2C, 0x01, 0x8D, 0x3E, 0x01, 0xAD, 0x2A, 0x01, 0x29, 0x30, 0x4A, 0x20, 0x7B, 0xF8, 0x8D, +0x30, 0x01, 0xA9, 0x00, 0x2A, 0x8D, 0x31, 0x01, 0xAD, 0x14, 0x01, 0x29, 0x01, 0x8D, 0x32, 0x01, +0xAB, 0x20, 0xA3, 0xAC, 0xA9, 0x00, 0x8F, 0x39, 0x01, 0xE1, 0x68, 0x85, 0x3A, 0x68, 0x85, 0x3B, +0x20, 0x57, 0xA9, 0xA2, 0x00, 0xDA, 0x20, 0x08, 0xAC, 0xBF, 0xEA, 0xC0, 0xFF, 0x20, 0x59, 0xA9, +0xA9, 0xBD, 0x20, 0x59, 0xA9, 0xFA, 0xDA, 0xE0, 0x0A, 0xB0, 0x22, 0xE0, 0x05, 0xB0, 0x10, 0x8A, +0x0A, 0xAA, 0xBF, 0x21, 0x01, 0xE1, 0x20, 0x2F, 0xA9, 0xBF, 0x20, 0x01, 0xE1, 0x80, 0x04, 0xBF, +0x25, 0x01, 0xE1, 0x20, 0x2F, 0xA9, 0xFA, 0xE8, 0xE0, 0x0E, 0x90, 0xC9, 0x60, 0xBF, 0x25, 0x01, +0xE1, 0x20, 0x25, 0xA9, 0x80, 0xF0, 0x78, 0xA9, 0x00, 0x00, 0x5B, 0x48, 0xAB, 0xAB, 0xA3, 0x04, +0x85, 0xFB, 0xA3, 0x06, 0x85, 0xFD, 0xA3, 0x08, 0xA2, 0x7F, 0x01, 0x9A, 0x48, 0xE2, 0x30, 0x08, +0xA9, 0x80, 0x8F, 0x37, 0x01, 0xE1, 0x8D, 0x07, 0xC0, 0xA9, 0x08, 0x0C, 0x68, 0xC0, 0x20, 0x4E, +0xFE, 0x20, 0xEB, 0xCC, 0x20, 0x76, 0xA9, 0x28, 0xB0, 0x19, 0xA7, 0xFB, 0x1A, 0x85, 0xFF, 0xA0, +0x01, 0xB7, 0xFB, 0x09, 0x80, 0x5A, 0x20, 0x59, 0xA9, 0x7A, 0xC8, 0xC4, 0xFF, 0x90, 0xF2, 0x58, +0xB0, 0x1F, 0x18, 0x08, 0x20, 0x7B, 0xA9, 0x20, 0x76, 0xA9, 0xA2, 0x00, 0xA0, 0x05, 0x20, 0x68, +0xA9, 0x28, 0x08, 0xB0, 0x04, 0xA9, 0x03, 0x80, 0x02, 0xA9, 0x0C, 0x20, 0x80, 0xC0, 0x28, 0x90, +0x05, 0xFA, 0x7A, 0x20, 0x2A, 0xA9, 0x8D, 0x0F, 0xC0, 0x20, 0x5D, 0xA0, 0xA9, 0x0B, 0x85, 0x22, +0xA0, 0x00, 0xF0, 0x05, 0xA9, 0xDF, 0x99, 0xA8, 0x05, 0xA9, 0x41, 0x99, 0xA9, 0x05, 0x20, 0x89, +0xA5, 0xC8, 0xC0, 0x26, 0x90, 0xEC, 0x88, 0xA9, 0x4C, 0x99, 0xA9, 0x05, 0xA9, 0x40, 0x99, 0xA8, +0x05, 0x20, 0x89, 0xA5, 0x88, 0xD0, 0xF0, 0x80, 0xD9, 0xAD, 0x00, 0xC0, 0x8D, 0x10, 0xC0, 0xC9, +0x8E, 0xD0, 0x0D, 0xAD, 0x62, 0xC0, 0x10, 0x08, 0xAD, 0x61, 0xC0, 0x10, 0x03, 0x20, 0xAB, 0xA5, +0xAD, 0x19, 0xC0, 0x10, 0xFB, 0xAD, 0x19, 0xC0, 0x30, 0xFB, 0x60, 0x5A, 0xA9, 0x0C, 0x85, 0x25, +0x64, 0x24, 0x20, 0x6C, 0xA9, 0xA9, 0xFE, 0x22, 0x98, 0x00, 0xE1, 0xA9, 0x80, 0x1C, 0x36, 0xC0, +0xA2, 0x10, 0xA9, 0xFF, 0x20, 0xA8, 0xFC, 0xCA, 0xD0, 0xF8, 0xA9, 0x80, 0x0C, 0x36, 0xC0, 0x20, +0x76, 0xA9, 0x7A, 0x60, 0x18, 0xC2, 0x30, 0xAF, 0x40, 0x01, 0xE1, 0x90, 0x03, 0x49, 0xFF, 0xFF, +0x48, 0xA5, 0x3E, 0x90, 0x03, 0x49, 0xFF, 0xFF, 0x65, 0x3C, 0x85, 0x3E, 0xAF, 0x46, 0x01, 0xE1, +0x63, 0x01, 0x83, 0x01, 0xE2, 0x30, 0x20, 0x08, 0xA6, 0xFA, 0x68, 0x20, 0x2B, 0xA9, 0xA5, 0x3F, +0xA6, 0x3E, 0x20, 0x2B, 0xA9, 0x4C, 0xCC, 0xAB, 0xA9, 0x0A, 0x4C, 0x80, 0xC0, 0xC9, 0xAD, 0xF0, +0xC4, 0xC9, 0xAB, 0xF0, 0xBF, 0xC9, 0xAA, 0xF0, 0x01, 0x18, 0x08, 0xA2, 0x04, 0x20, 0x79, 0xA6, +0xAF, 0x46, 0x01, 0xE1, 0x48, 0xA5, 0x3C, 0x48, 0xAF, 0x40, 0x01, 0xE1, 0x48, 0xA5, 0x3E, 0x48, +0xA2, 0x0B, 0x0C, 0xB0, 0x03, 0xA2, 0x0B, 0x0D, 0x22, 0x00, 0x00, 0xE1, 0xE2, 0x30, 0xA2, 0x00, +0x68, 0x95, 0x3C, 0xE8, 0xE0, 0x08, 0xD0, 0xF8, 0x28, 0x08, 0xB0, 0x05, 0xA9, 0xD2, 0x20, 0x59, +0xA9, 0x20, 0x08, 0xA6, 0xA2, 0x07, 0xB5, 0x3C, 0xDA, 0x20, 0x2F, 0xA9, 0xE0, 0x04, 0xD0, 0x10, +0xA3, 0x02, 0x6A, 0xB0, 0x0B, 0x20, 0x50, 0xA9, 0xA9, 0xD1, 0x20, 0x59, 0xA9, 0x20, 0x08, 0xA6, +0xFA, 0xCA, 0x10, 0xE2, 0x28, 0x80, 0x8E, 0xA2, 0x03, 0xC2, 0x30, 0x68, 0xF4, 0x00, 0x00, 0xCA, +0xD0, 0xFA, 0x48, 0x60, 0xA2, 0x06, 0x00, 0xBF, 0x00, 0x00, 0xF8, 0xDF, 0xA0, 0xA6, 0xFF, 0xD0, +0x0D, 0xCA, 0xCA, 0x10, 0xF2, 0x22, 0x20, 0x00, 0xF8, 0xAF, 0x08, 0x00, 0xF8, 0x6B, 0x38, 0x6B, +0xD2, 0xCF, 0xCD, 0xD4, 0xCF, 0xCF, 0xCC, 0xD3, 0x20, 0xBF, 0xA7, 0xAD, 0x32, 0x01, 0x6A, 0xAD, +0x0E, 0x01, 0x1A, 0x1A, 0x1A, 0xB0, 0x01, 0x1A, 0x8D, 0x0E, 0x01, 0x80, 0x5F, 0x18, 0xAF, 0x3E, +0x01, 0xE1, 0xF0, 0x13, 0xAF, 0x32, 0x01, 0xE1, 0xF0, 0x0D, 0x4C, 0x5D, 0xA0, 0x38, 0xAF, 0x3E, +0x01, 0xE1, 0xF0, 0x03, 0x4C, 0x5D, 0xA0, 0x8B, 0xAD, 0x68, 0xC0, 0x48, 0x20, 0xBF, 0xA7, 0xAE, +0x35, 0xC0, 0xDA, 0xBA, 0x8E, 0x3C, 0x01, 0x08, 0xC9, 0x00, 0x02, 0xB0, 0x0A, 0xCD, 0x3C, 0x01, +0x70, 0x05, 0x90, 0x03, 0xAD, 0x3C, 0x01, 0x28, 0x48, 0xA3, 0x06, 0xAA, 0x68, 0xE2, 0x30, 0x50, +0x03, 0x8D, 0x09, 0xC0, 0x1B, 0xB0, 0x06, 0x4B, 0xF4, 0x9D, 0xA7, 0x90, 0x0E, 0x4B, 0xF4, 0x9E, +0xA7, 0xA2, 0x5C, 0xDA, 0xF4, 0x18, 0xFB, 0xC2, 0x20, 0x3B, 0x48, 0x3B, 0xE2, 0x30, 0x50, 0x03, +0x8D, 0x09, 0xC0, 0x1B, 0xA2, 0x0B, 0xBD, 0x20, 0x01, 0x9D, 0x08, 0x01, 0xCA, 0x10, 0xF7, 0xAD, +0x2D, 0x01, 0x29, 0xFB, 0x48, 0xAD, 0x2F, 0x01, 0x0A, 0x0A, 0x03, 0x01, 0x8D, 0x18, 0x01, 0x68, +0xAD, 0x36, 0xC0, 0x29, 0x7F, 0x48, 0xAD, 0x2E, 0x01, 0x48, 0x29, 0x80, 0x03, 0x02, 0x8D, 0x1A, +0x01, 0x68, 0x29, 0x7F, 0x8D, 0x19, 0x01, 0x68, 0xAD, 0x32, 0x01, 0x8D, 0x14, 0x01, 0xAD, 0x30, +0x01, 0x0A, 0x0D, 0x31, 0x01, 0x0A, 0x0A, 0x0A, 0x0A, 0x48, 0xAD, 0x12, 0x01, 0x29, 0xCF, 0x03, +0x01, 0xFA, 0xAA, 0xAC, 0x32, 0x01, 0xD0, 0x04, 0xAD, 0x3E, 0x01, 0x48, 0xC2, 0x20, 0xAD, 0x3A, +0x01, 0x48, 0xDA, 0x3B, 0x8D, 0x0E, 0x01, 0xDA, 0xE2, 0x30, 0xAD, 0x3C, 0x01, 0x8F, 0x00, 0x01, +0x01, 0xAF, 0xF8, 0x07, 0x00, 0x8D, 0x1B, 0x01, 0xEE, 0xCB, 0x00, 0x4C, 0x3E, 0xBA, 0xD8, 0x18, +0xFB, 0xE2, 0x30, 0x8D, 0x08, 0xC0, 0xC2, 0x30, 0x20, 0x82, 0xF8, 0xAD, 0x3C, 0x01, 0x1B, 0x68, +0x8D, 0x35, 0xC0, 0xE2, 0x30, 0xF4, 0x00, 0x00, 0x2B, 0x68, 0x20, 0x72, 0xB4, 0xAB, 0x60, 0x78, +0x20, 0x62, 0xFE, 0x20, 0x82, 0xF8, 0xE2, 0x40, 0xAD, 0x2D, 0x01, 0x30, 0x01, 0xB8, 0xC2, 0x30, +0xA5, 0x3A, 0x8D, 0x3A, 0x01, 0xAD, 0x26, 0x01, 0x60, 0xC2, 0x30, 0xAD, 0x01, 0x02, 0x8F, 0x3C, +0x01, 0xE1, 0xE2, 0x30, 0xA8, 0xC8, 0xC8, 0xA2, 0x00, 0xBD, 0x03, 0x02, 0x48, 0xE8, 0x88, 0xD0, +0xF8, 0xC2, 0x30, 0xFA, 0x22, 0x00, 0x00, 0xE1, 0x48, 0x48, 0xE2, 0x30, 0x20, 0x57, 0xA9, 0xA9, +0x0B, 0x20, 0x80, 0xC0, 0xFA, 0x7A, 0x20, 0x2A, 0xA9, 0x20, 0x57, 0xA9, 0xC2, 0x30, 0x68, 0xF0, +0x0B, 0xC9, 0x10, 0x00, 0xB0, 0x06, 0xAF, 0x3C, 0x01, 0xE1, 0x80, 0x04, 0xAF, 0x3D, 0x01, 0xE1, +0xE2, 0x30, 0xA8, 0xF0, 0xB3, 0x88, 0x68, 0x5A, 0x20, 0x2F, 0xA9, 0x20, 0x08, 0xAC, 0x7A, 0x80, +0xF2, 0x20, 0xA4, 0xA8, 0xA4, 0x34, 0xB9, 0x00, 0x02, 0xC9, 0xBD, 0xD0, 0x9B, 0xE6, 0x34, 0x9C, +0x00, 0x02, 0xA4, 0x34, 0x20, 0xA9, 0xB1, 0x84, 0x34, 0xC9, 0xC6, 0xF0, 0x29, 0x20, 0xD3, 0xA8, +0xF0, 0xF0, 0x48, 0xAD, 0x00, 0x02, 0xC9, 0x02, 0xB0, 0x03, 0xFA, 0xCA, 0xDA, 0xC9, 0x02, 0xD0, +0x0C, 0x68, 0xC9, 0x28, 0xB0, 0x03, 0x18, 0x69, 0x64, 0x48, 0xAD, 0x00, 0x02, 0xC9, 0x06, 0xB0, +0x22, 0xEE, 0x00, 0x02, 0x80, 0xCC, 0x20, 0xD3, 0xA8, 0xF0, 0x04, 0x48, 0xEE, 0x00, 0x02, 0xAE, +0x00, 0x02, 0xE0, 0x06, 0xB0, 0x0D, 0x8A, 0xF0, 0x04, 0x68, 0xCA, 0x80, 0xF9, 0x20, 0x5D, 0xA0, +0x4C, 0x4D, 0xA3, 0xC2, 0x30, 0xA2, 0x03, 0x0E, 0x22, 0x00, 0x00, 0xE1, 0xE2, 0x30, 0x20, 0xA4, +0xA8, 0x4C, 0x4D, 0xA3, 0x20, 0x57, 0xA9, 0xA9, 0x04, 0x20, 0x80, 0xC0, 0x08, 0x78, 0xF4, 0xE1, +0x00, 0xF4, 0x08, 0x01, 0xC2, 0x30, 0xA2, 0x03, 0x0F, 0x22, 0x00, 0x00, 0xE1, 0xE2, 0x30, 0xA2, +0x00, 0xBF, 0x08, 0x01, 0xE1, 0xDA, 0x20, 0x59, 0xA9, 0xFA, 0xE8, 0xE0, 0x14, 0x90, 0xF2, 0x28, +0x4C, 0x57, 0xA9, 0xAF, 0x42, 0x01, 0xE1, 0x08, 0xA5, 0x3E, 0x48, 0x29, 0x0F, 0x85, 0x3E, 0x68, +0x20, 0x7B, 0xF8, 0xAA, 0x20, 0xEB, 0xA8, 0xA5, 0x3E, 0x28, 0x60, 0xA9, 0x0A, 0x85, 0x3C, 0xA5, +0x3C, 0x18, 0xCA, 0x30, 0x06, 0x65, 0x3E, 0x85, 0x3E, 0x80, 0xF4, 0x60, 0xF4, 0x61, 0xF9, 0x80, +0x31, 0xF4, 0x19, 0xFC, 0x80, 0x2C, 0x20, 0x12, 0xA9, 0xA6, 0x3C, 0xA4, 0x3D, 0xF4, 0x98, 0xFD, +0x80, 0x20, 0x20, 0x57, 0xA9, 0xAF, 0x3E, 0x01, 0xE1, 0x20, 0x2F, 0xA9, 0xA9, 0xAF, 0x80, 0x39, +0xF4, 0x66, 0xFD, 0x80, 0x0D, 0xF4, 0xE2, 0xFD, 0x80, 0x08, 0x98, 0x20, 0x2F, 0xA9, 0x8A, 0xF4, +0xD9, 0xFD, 0xEB, 0x8A, 0xC2, 0x30, 0xFA, 0x4B, 0xF4, 0xAA, 0xA1, 0xF4, 0xD3, 0xF8, 0xDA, 0xE2, +0x30, 0xAA, 0xEB, 0xEB, 0x20, 0xD6, 0xFF, 0xEB, 0x8B, 0xF4, 0xB4, 0xF8, 0x8D, 0x06, 0xC0, 0x6B, +0xA2, 0x03, 0xF4, 0x49, 0xF9, 0x80, 0xDB, 0xA9, 0x8D, 0xF4, 0xEC, 0xFD, 0x80, 0xD4, 0xF4, 0xEF, +0xFD, 0x80, 0xCF, 0xF4, 0x6B, 0xFF, 0x80, 0xDB, 0x86, 0x24, 0x84, 0x25, 0xF4, 0x21, 0xFC, 0x80, +0xC1, 0xF4, 0xFF, 0xC2, 0x80, 0xBC, 0xF4, 0x57, 0xFC, 0x80, 0xB7, 0xF4, 0x42, 0xFE, 0x80, 0xB2, +0xA9, 0x98, 0x20, 0x71, 0xA9, 0xA9, 0x00, 0x8F, 0x36, 0x01, 0xE1, 0x60, 0xA9, 0x01, 0x8F, 0x74, +0x01, 0xE1, 0xC2, 0x30, 0xA2, 0x00, 0x08, 0x9B, 0xA9, 0xFF, 0x03, 0x54, 0xE0, 0x00, 0x6B, 0xAF, +0x7D, 0x01, 0xE1, 0x0A, 0x30, 0x15, 0xC2, 0x30, 0xF4, 0xFF, 0x00, 0xF4, 0xC2, 0xA9, 0xA2, 0x05, +0x0F, 0x22, 0x00, 0x00, 0xE1, 0x22, 0x00, 0x18, 0xFF, 0xE2, 0x30, 0xA9, 0xC0, 0x8F, 0x7D, 0x01, +0xE1, 0x60, 0xC6, 0xA9, 0xFF, 0x00, 0x0D, 0xD6, 0xE9, 0xF3, 0xE9, 0xF4, 0xA0, 0xCD, 0xEF, 0xEE, +0xE9, 0xF4, 0xEF, 0xF2, 0xDC, 0xA9, 0xFF, 0x00, 0x48, 0xAA, 0xFF, 0x00, 0xE2, 0x30, 0x78, 0xF4, +0x00, 0x00, 0xAB, 0xAB, 0xA2, 0x02, 0xBD, 0xF8, 0x03, 0x48, 0xCA, 0x10, 0xF9, 0xA9, 0x4C, 0x8D, +0xF8, 0x03, 0xA9, 0xFB, 0x8D, 0xF9, 0x03, 0x9C, 0xFA, 0x03, 0xA2, 0x08, 0xB5, 0xF7, 0x48, 0xCA, +0x10, 0xFA, 0x8B, 0x4B, 0xAB, 0xA2, 0x08, 0xBD, 0x49, 0xAA, 0x95, 0xF7, 0xCA, 0x10, 0xF8, 0xAB, +0x4B, 0x68, 0x85, 0xFF, 0xAD, 0x68, 0xC0, 0x48, 0x20, 0x76, 0xA9, 0xA9, 0xFD, 0x20, 0x80, 0xC0, +0x68, 0x8D, 0x68, 0xC0, 0x38, 0xFB, 0x5C, 0xF7, 0x00, 0x00, 0x68, 0x68, 0xF4, 0x00, 0x00, 0xAB, +0xAB, 0x18, 0xFB, 0x58, 0xA2, 0x00, 0x68, 0x95, 0xF7, 0xE8, 0xE0, 0x09, 0x90, 0xF8, 0x68, 0x9D, +0xEF, 0x03, 0xE0, 0x0B, 0x90, 0xF3, 0xC2, 0x30, 0x6B, 0x58, 0x4C, 0x69, 0xFF, 0x78, 0x5C, 0x2A, +0xAA, 0x00, 0x20, 0x06, 0xA9, 0xA5, 0x3D, 0x85, 0x43, 0xA5, 0x3C, 0x85, 0x42, 0x20, 0x26, 0xB4, +0x20, 0x2F, 0xA9, 0x20, 0xBA, 0xFC, 0xB0, 0x0C, 0x20, 0x75, 0xFE, 0x25, 0x3C, 0xF0, 0x05, 0x20, +0x08, 0xAC, 0x80, 0xE9, 0xA5, 0x43, 0x85, 0x3D, 0xA5, 0x42, 0x85, 0x3C, 0xA9, 0xAD, 0x20, 0x59, +0xA9, 0x20, 0x28, 0xB4, 0x09, 0x80, 0xC9, 0xA0, 0x90, 0x04, 0xC9, 0xFF, 0xD0, 0x02, 0xA9, 0xAE, +0xA8, 0xA5, 0x24, 0xF0, 0x0F, 0xC9, 0x27, 0x08, 0x98, 0x20, 0x59, 0xA9, 0x28, 0x90, 0x09, 0x20, +0x01, 0xA9, 0x80, 0x04, 0x98, 0x20, 0x59, 0xA9, 0xAD, 0x00, 0xC0, 0x29, 0x7F, 0xC9, 0x18, 0xD0, +0x04, 0x2C, 0x10, 0xC0, 0x60, 0x20, 0xBA, 0xFC, 0xB0, 0x15, 0x20, 0x75, 0xFE, 0x25, 0x3C, 0xD0, +0xC0, 0x80, 0x8F, 0xC2, 0x20, 0x18, 0x98, 0x65, 0x3A, 0x85, 0x40, 0xE2, 0x20, 0xA2, 0x40, 0x60, +0x48, 0x29, 0x03, 0xA8, 0x68, 0x4A, 0x4A, 0xAA, 0xBF, 0xE8, 0xAA, 0xFF, 0x88, 0x30, 0x04, 0x4A, +0x4A, 0x80, 0xF9, 0x29, 0x03, 0x85, 0x2F, 0x60, 0x04, 0x14, 0x04, 0x28, 0x05, 0x14, 0x08, 0x28, +0x06, 0x15, 0x04, 0x2A, 0x05, 0x15, 0x08, 0x2A, 0x04, 0x14, 0x04, 0x2A, 0x05, 0x54, 0x08, 0x28, +0x04, 0x14, 0x04, 0x2A, 0x05, 0x14, 0x08, 0x28, 0x04, 0x15, 0x00, 0x2A, 0x05, 0x15, 0x08, 0x08, +0x15, 0x15, 0x04, 0x2A, 0x05, 0x15, 0x08, 0x2A, 0x05, 0x15, 0x04, 0x2A, 0x05, 0x14, 0x08, 0x28, +0x05, 0x15, 0x04, 0x2A, 0x05, 0x14, 0x08, 0x28, 0x20, 0x62, 0xFE, 0xAF, 0x30, 0x01, 0xE1, 0xA2, +0xED, 0x20, 0x84, 0xAD, 0xAF, 0x31, 0x01, 0xE1, 0xA2, 0xF8, 0x20, 0x84, 0xAD, 0xAF, 0x2F, 0x01, +0xE1, 0xA2, 0xCC, 0x20, 0x84, 0xAD, 0xA9, 0x07, 0x20, 0x80, 0xC0, 0x20, 0xCC, 0xAB, 0x38, 0xA5, +0x23, 0xE5, 0x22, 0x38, 0xE9, 0x04, 0x30, 0x74, 0xF0, 0x72, 0x48, 0xA0, 0x00, 0x20, 0x64, 0xB3, +0xC9, 0x22, 0xF0, 0x2F, 0xC9, 0x20, 0xD0, 0x58, 0x20, 0x63, 0xB3, 0x0F, 0x3E, 0x01, 0xE1, 0xD0, +0x4F, 0x20, 0x63, 0xB3, 0xC9, 0xBF, 0xD0, 0x48, 0xA3, 0x01, 0xC9, 0x03, 0x90, 0x53, 0x20, 0xA3, +0xAC, 0x20, 0xF2, 0xAB, 0x68, 0x3A, 0x48, 0x20, 0xD4, 0xAB, 0xA0, 0x01, 0x20, 0xD6, 0xAB, 0x68, +0x3A, 0x80, 0x34, 0x20, 0x63, 0xB3, 0xC9, 0xA8, 0xD0, 0x26, 0x20, 0x63, 0xB3, 0xC9, 0x00, 0xD0, +0x1F, 0x20, 0x63, 0xB3, 0xC9, 0xE1, 0xD0, 0x18, 0xA3, 0x01, 0xC9, 0x03, 0x90, 0x23, 0x20, 0xA3, +0xAC, 0x20, 0xF2, 0xAB, 0x68, 0x3A, 0x48, 0xA0, 0x01, 0x20, 0xD6, 0xAB, 0xA0, 0x03, 0x80, 0xCC, +0x20, 0xA3, 0xAC, 0x20, 0xF2, 0xAB, 0x68, 0x3A, 0xF0, 0x02, 0x10, 0x8E, 0x20, 0x57, 0xA9, 0x80, +0x37, 0x68, 0x80, 0xF8, 0xA0, 0x00, 0x5A, 0x20, 0xFE, 0xAB, 0x7A, 0x84, 0x2F, 0x20, 0x84, 0xAC, +0xA2, 0x05, 0x20, 0x52, 0xA9, 0xA4, 0x2F, 0x20, 0x64, 0xB3, 0x5A, 0x20, 0x2F, 0xA9, 0x7A, 0x88, +0x10, 0xF5, 0x20, 0x53, 0xF9, 0x85, 0x3A, 0x84, 0x3B, 0x85, 0x40, 0x84, 0x41, 0x60, 0x20, 0x12, +0xA9, 0xA6, 0x3A, 0xA4, 0x3B, 0x20, 0x0D, 0xA9, 0xA9, 0xA0, 0x4C, 0x59, 0xA9, 0x20, 0xFE, 0xAB, +0x20, 0x64, 0xB3, 0x4A, 0x85, 0x3F, 0xA8, 0x08, 0x08, 0x90, 0x04, 0x29, 0x0F, 0x09, 0x80, 0x4A, +0xAA, 0xBF, 0x9B, 0xAD, 0xFF, 0x20, 0x79, 0xF8, 0x28, 0x90, 0x02, 0x69, 0x07, 0x85, 0x2E, 0xAA, +0xE0, 0x08, 0xD0, 0x16, 0xA5, 0x3F, 0x29, 0x04, 0xF0, 0x06, 0xAF, 0x30, 0x01, 0xE1, 0x80, 0x04, +0xAF, 0x31, 0x01, 0xE1, 0xD0, 0x04, 0xA9, 0x02, 0x80, 0x08, 0xBF, 0xFA, 0xAD, 0xFF, 0x85, 0x3F, +0x29, 0x03, 0x85, 0x2F, 0x98, 0x28, 0x90, 0x18, 0x29, 0x07, 0xC9, 0x05, 0xD0, 0x03, 0x88, 0x80, +0x20, 0x98, 0xC9, 0x44, 0xF0, 0x06, 0x29, 0x70, 0x09, 0x09, 0x80, 0x17, 0xA9, 0x12, 0x80, 0x13, +0x29, 0x03, 0xC9, 0x03, 0xD0, 0x0C, 0x98, 0xC9, 0x4F, 0xF0, 0x06, 0x29, 0x70, 0x09, 0x07, 0x80, +0x02, 0x88, 0x98, 0x60, 0xA0, 0x00, 0x20, 0x64, 0xB3, 0xE6, 0x40, 0xD0, 0x02, 0xE6, 0x41, 0x20, +0x2F, 0xA9, 0xA2, 0x01, 0x20, 0x52, 0xA9, 0xC4, 0x2F, 0xC8, 0x90, 0xEA, 0xA2, 0x03, 0xC0, 0x04, +0x90, 0xF2, 0x60, 0x20, 0x0D, 0xAC, 0x48, 0x20, 0x84, 0xAC, 0x7A, 0xDA, 0xBB, 0xBF, 0x29, 0xAE, +0xFF, 0x85, 0x2C, 0xBF, 0xA9, 0xAE, 0xFF, 0x85, 0x2D, 0x20, 0x08, 0xAC, 0xFA, 0xA9, 0x00, 0xA0, +0x05, 0x06, 0x2D, 0x26, 0x2C, 0x2A, 0x88, 0xD0, 0xF8, 0x69, 0xBF, 0x20, 0x59, 0xA9, 0xCA, 0xD0, +0xEC, 0x20, 0x08, 0xAC, 0xA5, 0x2E, 0xAA, 0xBF, 0xFA, 0xAD, 0xFF, 0x0A, 0x08, 0xBF, 0xE3, 0xAD, +0xFF, 0x85, 0x2E, 0xA2, 0x08, 0xA4, 0x2F, 0xE0, 0x05, 0xF0, 0x27, 0x06, 0x2E, 0x90, 0x18, 0xBF, +0x10, 0xAE, 0xFF, 0x28, 0x08, 0x10, 0x04, 0xBF, 0x20, 0xAE, 0xFF, 0x20, 0x59, 0xA9, 0xBF, 0x18, +0xAE, 0xFF, 0xF0, 0x03, 0x20, 0x59, 0xA9, 0xCA, 0xD0, 0xDD, 0x28, 0x60, 0x88, 0x30, 0xDC, 0x20, +0x2F, 0xA9, 0xA5, 0x2E, 0xC9, 0xF8, 0x20, 0x64, 0xB3, 0x85, 0x3F, 0x90, 0xEF, 0xFA, 0x88, 0x5A, +0xF0, 0x16, 0x48, 0x20, 0x64, 0xB3, 0x85, 0x3E, 0x65, 0x3A, 0xAA, 0x68, 0x65, 0x3B, 0xA8, 0x8A, +0x18, 0x69, 0x02, 0xAA, 0x90, 0x0B, 0x80, 0x08, 0x38, 0x20, 0x56, 0xF9, 0xAA, 0xE8, 0xD0, 0x01, +0xC8, 0x20, 0x2A, 0xA9, 0x20, 0x08, 0xAC, 0xA9, 0xFB, 0x20, 0x59, 0xA9, 0xA5, 0x3F, 0x10, 0x1D, +0xA9, 0xAD, 0x20, 0x59, 0xA9, 0x18, 0x68, 0x48, 0xF0, 0x0A, 0xA5, 0x3E, 0x49, 0xFF, 0x69, 0x01, +0x85, 0x3E, 0x80, 0x01, 0x38, 0xA5, 0x3F, 0x49, 0xFF, 0x69, 0x00, 0x80, 0x07, 0xA9, 0xAB, 0x20, +0x59, 0xA9, 0xA5, 0x3F, 0x20, 0x2F, 0xA9, 0x68, 0xF0, 0x05, 0xA5, 0x3E, 0x20, 0x2F, 0xA9, 0xA9, +0xFD, 0x4C, 0x59, 0xA9, 0xDA, 0x20, 0x25, 0xA9, 0xA9, 0xBD, 0x20, 0x59, 0xA9, 0x68, 0x48, 0x20, +0x59, 0xA9, 0x68, 0xC9, 0xCC, 0xD0, 0x01, 0x60, 0x4C, 0x50, 0xA9, 0xBB, 0xBB, 0xCC, 0x99, 0x52, +0xDB, 0xCC, 0xE9, 0xA9, 0xBB, 0xCC, 0x99, 0x52, 0xDD, 0xCC, 0xEE, 0xBC, 0xB9, 0xCC, 0x99, 0x52, +0xD9, 0xCC, 0xEA, 0x3C, 0xBB, 0xCC, 0x94, 0x52, 0xDD, 0xCC, 0xE6, 0x32, 0xBB, 0xCC, 0x99, 0x52, +0x1D, 0xCC, 0xE9, 0x88, 0xBB, 0xCC, 0x99, 0x52, 0x1D, 0xCC, 0xFE, 0x08, 0xBB, 0xCC, 0x99, 0x52, +0xDB, 0xCC, 0xE4, 0x08, 0xBB, 0xCC, 0x99, 0x52, 0xD9, 0xCC, 0xE6, 0xB9, 0xE3, 0x40, 0x21, 0xC8, +0xD5, 0x47, 0xA6, 0x80, 0x10, 0x1F, 0x1F, 0x42, 0x42, 0x4A, 0x42, 0x80, 0x00, 0x00, 0x00, 0x00, +0x08, 0x08, 0x10, 0x43, 0x4A, 0x08, 0x04, 0x47, 0x43, 0x42, 0x01, 0x01, 0x01, 0x02, 0x02, 0x01, +0x02, 0x02, 0x01, 0x02, 0x03, 0x01, 0x00, 0x01, 0x02, 0x02, 0x01, 0x01, 0x03, 0x01, 0x01, 0x41, +0x41, 0xAC, 0xA9, 0xAC, 0xAC, 0xAC, 0xA4, 0xA8, 0xA3, 0xD9, 0x00, 0xD3, 0xD8, 0xD9, 0x00, 0x00, +0x00, 0xAC, 0xDD, 0xAC, 0xAC, 0xAC, 0xA4, 0xDB, 0xA3, 0x1C, 0x24, 0xAD, 0x8A, 0x8A, 0x15, 0xAD, +0x15, 0x1C, 0x84, 0xAC, 0xA9, 0x23, 0x53, 0xAC, 0x00, 0x5D, 0x5D, 0x1A, 0x8B, 0x8B, 0x9C, 0x1A, +0x9C, 0x1B, 0x13, 0x1A, 0xAD, 0xA1, 0x29, 0x1A, 0x00, 0x9D, 0xC1, 0x75, 0x8A, 0x8A, 0x6D, 0x5B, +0x6D, 0x1D, 0x34, 0x75, 0xA9, 0x23, 0x8A, 0x5B, 0x00, 0x9D, 0x89, 0xA5, 0x9D, 0x8B, 0x9C, 0x5B, +0x9C, 0x1D, 0x11, 0xA5, 0xA9, 0xA1, 0x8B, 0x5B, 0x00, 0x1C, 0x1C, 0xA5, 0x8A, 0x29, 0xAE, 0xA5, +0xA5, 0x19, 0xA5, 0xA5, 0xAE, 0xAE, 0xAE, 0xA5, 0x00, 0x69, 0x69, 0x69, 0x8B, 0xA8, 0xA8, 0x69, +0x69, 0x19, 0x69, 0x69, 0xAE, 0x23, 0xAD, 0x69, 0x00, 0x24, 0x99, 0x24, 0xC0, 0x53, 0x29, 0x24, +0x29, 0x1B, 0x23, 0x89, 0xA5, 0x23, 0x8A, 0x5B, 0x00, 0x24, 0xA1, 0x24, 0xC8, 0x53, 0x7C, 0x24, +0x53, 0x19, 0xA0, 0x89, 0xC9, 0xA1, 0x8B, 0x5D, 0x00, 0xD8, 0x22, 0x06, 0x4A, 0x62, 0x1A, 0x06, +0x1A, 0x5A, 0xC4, 0xC6, 0x28, 0x48, 0xC8, 0xC6, 0x00, 0x26, 0x1A, 0xAA, 0x4A, 0x62, 0x1A, 0xAA, +0x1A, 0x94, 0xCA, 0xAA, 0x08, 0x88, 0x88, 0xAA, 0x00, 0x54, 0x5C, 0xE2, 0x58, 0x44, 0x26, 0xA2, +0x26, 0xC8, 0x26, 0xDE, 0x0A, 0x54, 0x74, 0xA2, 0x00, 0x68, 0xA6, 0x76, 0x5A, 0x44, 0x26, 0xA2, +0x26, 0xE8, 0x48, 0x76, 0x48, 0x94, 0x74, 0xA2, 0x00, 0xC4, 0xDA, 0x74, 0x46, 0xB4, 0x44, 0x74, +0x72, 0x08, 0x44, 0x74, 0x74, 0x84, 0x68, 0x76, 0x00, 0x74, 0x72, 0x74, 0x46, 0xB4, 0xB2, 0x74, +0x72, 0x28, 0x44, 0x74, 0xB2, 0x6E, 0x32, 0x74, 0x00, 0x74, 0xA2, 0x74, 0x94, 0xF4, 0xB2, 0x74, +0x88, 0xCC, 0xA2, 0x94, 0x62, 0x4A, 0x72, 0x9A, 0x00, 0x72, 0xA2, 0x72, 0xC4, 0xF2, 0x22, 0x72, +0xC8, 0xA4, 0xC8, 0x84, 0x0C, 0x8A, 0x72, 0x26, 0x00, 0xAF, 0x42, 0x01, 0xE1, 0xC9, 0x03, 0xB0, +0x20, 0xA5, 0x3D, 0xC9, 0x82, 0xF0, 0x1D, 0xC9, 0x62, 0xF0, 0x19, 0xA4, 0x41, 0xA6, 0x40, 0xD0, +0x01, 0x88, 0xCA, 0x8A, 0x18, 0xE5, 0x3A, 0x85, 0x40, 0x10, 0x01, 0xC8, 0x98, 0xE5, 0x3B, 0xF0, +0x10, 0x4C, 0xCC, 0xAF, 0xC2, 0x30, 0xA5, 0x40, 0x3A, 0x3A, 0x18, 0xE5, 0x3A, 0x85, 0x40, 0xE2, +0x30, 0x20, 0xE3, 0xB1, 0x20, 0x50, 0xA9, 0x20, 0x01, 0xA9, 0x20, 0x01, 0xA9, 0x20, 0xA3, 0xAC, +0x20, 0xF2, 0xAB, 0x80, 0x66, 0xA5, 0x3D, 0x20, 0x13, 0xAC, 0xDA, 0x48, 0xA6, 0x2E, 0xBF, 0xE3, +0xAD, 0xFF, 0x85, 0x2E, 0x68, 0xAA, 0xBF, 0xA9, 0xAE, 0xFF, 0xC5, 0x42, 0xD0, 0x35, 0xBF, 0x29, +0xAE, 0xFF, 0xC5, 0x43, 0xD0, 0x2D, 0xA4, 0x2E, 0xC0, 0x1F, 0xD0, 0x0A, 0xFA, 0x4C, 0x29, 0xAF, +0x4C, 0x93, 0xB0, 0x4C, 0x7C, 0xB0, 0xFA, 0xA5, 0x2C, 0xC5, 0x2E, 0xD0, 0x17, 0xAF, 0x42, 0x01, +0xE1, 0xC5, 0x3F, 0xF0, 0xAC, 0xE0, 0x08, 0xD0, 0x0B, 0xC9, 0x01, 0xF0, 0xF6, 0xC9, 0x02, 0xF0, +0xF2, 0xD0, 0x01, 0xFA, 0xC6, 0x3D, 0xD0, 0xAD, 0xC6, 0x35, 0xF0, 0xA9, 0xA4, 0x34, 0x98, 0xAA, +0x20, 0x52, 0xA9, 0xA9, 0xDE, 0x20, 0x59, 0xA9, 0x20, 0x5D, 0xA0, 0x20, 0x20, 0xA9, 0xA9, 0x00, +0x85, 0x31, 0xA8, 0xAD, 0x00, 0x02, 0xC9, 0xA0, 0xF0, 0xB6, 0xC9, 0xBA, 0xF0, 0x37, 0xC9, 0xA2, +0xF0, 0x61, 0xC9, 0x8D, 0xD0, 0xAD, 0xC2, 0x30, 0x68, 0x8F, 0x30, 0x01, 0xE1, 0xE2, 0x30, 0x4C, +0x4D, 0xA3, 0xC2, 0x30, 0xAF, 0x30, 0x01, 0xE1, 0x48, 0xE2, 0x30, 0xA9, 0xA1, 0x85, 0x33, 0xAD, +0x01, 0x02, 0xC9, 0x8D, 0xF0, 0xC5, 0xA0, 0x00, 0xB9, 0x01, 0x02, 0x99, 0x00, 0x02, 0xC8, 0xC0, +0x20, 0xD0, 0xF5, 0x80, 0xB9, 0xC8, 0x84, 0x34, 0xA4, 0x34, 0x20, 0xA9, 0xB1, 0x84, 0x34, 0x20, +0x1C, 0xB2, 0xD0, 0xF4, 0x80, 0xA5, 0xA9, 0xBA, 0x85, 0x31, 0xA4, 0x34, 0xA5, 0x40, 0x85, 0x3A, +0xA5, 0x41, 0x85, 0x3B, 0x88, 0x20, 0x58, 0xB0, 0xC9, 0x8D, 0xF0, 0x04, 0xC8, 0x84, 0x34, 0x60, +0x4C, 0x4D, 0xA3, 0x20, 0x58, 0xB0, 0x80, 0xDC, 0xC8, 0xB9, 0x00, 0x02, 0xC9, 0x8D, 0xF0, 0x1B, +0xC9, 0xA2, 0xF0, 0x17, 0x5A, 0x2F, 0x33, 0x01, 0xE1, 0x48, 0xA0, 0x00, 0x20, 0xC3, 0xAA, 0x68, +0x20, 0x2B, 0xB4, 0x64, 0x2F, 0x20, 0xF2, 0xAB, 0x7A, 0x80, 0xDD, 0x60, 0x20, 0xD0, 0xB1, 0xC9, +0x93, 0xD0, 0x1E, 0x20, 0x62, 0xFE, 0xF0, 0x19, 0xB9, 0x00, 0x02, 0xC9, 0xA2, 0xF0, 0xC4, 0xC9, +0xBA, 0xF0, 0x92, 0xA9, 0x03, 0x85, 0x3D, 0x20, 0x13, 0xFF, 0x0A, 0xE9, 0xBE, 0xC9, 0xC2, 0xB0, +0x03, 0x4C, 0xCE, 0xAF, 0x0A, 0x0A, 0xA2, 0x04, 0x0A, 0x26, 0x42, 0x26, 0x43, 0xCA, 0x10, 0xF8, +0xC6, 0x3D, 0xF0, 0xF4, 0x10, 0xE1, 0xA2, 0x07, 0x64, 0x3E, 0x20, 0x13, 0xFF, 0x84, 0x34, 0xDF, +0x11, 0xAE, 0xFF, 0xF0, 0x0A, 0xDF, 0x21, 0xAE, 0xFF, 0xD0, 0x1C, 0xA9, 0x40, 0x85, 0x3E, 0xC9, +0xA4, 0xD0, 0x03, 0xC8, 0x80, 0x11, 0x20, 0x13, 0xFF, 0xDF, 0x19, 0xAE, 0xFF, 0xF0, 0x0A, 0xBF, +0x19, 0xAE, 0xFF, 0xF0, 0x03, 0xA4, 0x34, 0x18, 0x88, 0x26, 0x2C, 0xE0, 0x05, 0xD0, 0x36, 0xA5, +0x3E, 0x48, 0x20, 0xA9, 0xB1, 0x8B, 0x20, 0x82, 0xF8, 0x4E, 0x42, 0x01, 0xAB, 0x90, 0x03, 0x20, +0x07, 0xB2, 0x68, 0x85, 0x3E, 0xAF, 0x42, 0x01, 0xE1, 0x29, 0x01, 0xF0, 0x04, 0xA9, 0x01, 0x80, +0x02, 0xA9, 0x00, 0x8F, 0x30, 0x01, 0xE1, 0x8F, 0x31, 0x01, 0xE1, 0xA5, 0x3F, 0xF0, 0x01, 0xE8, +0x86, 0x35, 0xA2, 0x05, 0x88, 0x86, 0x3D, 0xCA, 0x10, 0x90, 0xA5, 0x3E, 0x0F, 0x42, 0x01, 0xE1, +0x8F, 0x42, 0x01, 0xE1, 0x84, 0x34, 0xB9, 0x00, 0x02, 0xC9, 0xBB, 0xF0, 0x07, 0xC9, 0x8D, 0xF0, +0x03, 0x4C, 0x81, 0xB0, 0x4C, 0x75, 0xAF, 0x70, 0x08, 0xB0, 0x25, 0xC9, 0xA0, 0xD0, 0x20, 0xE2, +0x40, 0xB9, 0x00, 0x02, 0xC9, 0xA7, 0xF0, 0x14, 0xC9, 0x8D, 0xD0, 0x03, 0xB8, 0xF0, 0x5D, 0xA2, +0x07, 0x20, 0x07, 0xB2, 0x2F, 0x33, 0x01, 0xE1, 0xC8, 0xD0, 0x0B, 0x60, 0xA9, 0x99, 0xC8, 0x60, +0xA2, 0x03, 0x0A, 0x0A, 0x0A, 0x0A, 0x8B, 0x20, 0x82, 0xF8, 0x0A, 0xC2, 0x30, 0x26, 0x3E, 0x2E, +0x40, 0x01, 0xE2, 0x30, 0xCA, 0x10, 0xF3, 0xAB, 0xA5, 0x31, 0xD0, 0x13, 0xA2, 0x01, 0xB5, 0x3E, +0x95, 0x3C, 0x95, 0x40, 0xBF, 0x40, 0x01, 0xE1, 0x9F, 0x46, 0x01, 0xE1, 0xCA, 0xF0, 0xEF, 0xE8, +0xF0, 0xFD, 0x20, 0x07, 0xB2, 0x70, 0xAA, 0x80, 0x13, 0xB8, 0xC2, 0x30, 0xA9, 0x00, 0x00, 0x85, +0x3E, 0x8F, 0x40, 0x01, 0xE1, 0xE2, 0x30, 0x8F, 0x42, 0x01, 0xE1, 0xAA, 0x20, 0xCA, 0xFC, 0x49, +0xB0, 0xC9, 0x0A, 0x90, 0xAB, 0x08, 0x69, 0x88, 0x28, 0xC9, 0xFA, 0x4C, 0x47, 0xB1, 0xA4, 0x34, +0x20, 0xA9, 0xB1, 0xC9, 0xA8, 0xD0, 0x98, 0xA5, 0x31, 0xD0, 0xF5, 0xA5, 0x3E, 0x8F, 0x3E, 0x01, +0xE1, 0x80, 0xED, 0xA5, 0x40, 0x85, 0x3E, 0xA5, 0x41, 0x85, 0x3F, 0xA4, 0x2F, 0xC0, 0x03, 0xF0, +0x05, 0xB9, 0x3D, 0x00, 0x80, 0x04, 0xAF, 0x40, 0x01, 0xE1, 0x48, 0x20, 0xC3, 0xAA, 0x68, 0x20, +0x2B, 0xB4, 0xC6, 0x2F, 0x10, 0xE5, 0x60, 0x8B, 0x20, 0x82, 0xF8, 0xEE, 0x42, 0x01, 0xAB, 0x60, +0xA2, 0xBA, 0x86, 0x31, 0xA6, 0x40, 0x86, 0x3A, 0xA6, 0x41, 0x86, 0x3B, 0xEB, 0xAF, 0x42, 0x01, +0xE1, 0x4A, 0x90, 0x01, 0x1A, 0xC9, 0x05, 0x90, 0x02, 0xA9, 0x04, 0x3A, 0xAA, 0x85, 0x2F, 0xEB, +0xC9, 0xC6, 0x08, 0xDA, 0xA5, 0x3E, 0x85, 0x3D, 0xA5, 0x3F, 0x85, 0x40, 0xAF, 0x40, 0x01, 0xE1, +0x85, 0x41, 0xAF, 0x41, 0x01, 0xE1, 0x8F, 0x40, 0x01, 0xE1, 0x20, 0xE3, 0xB1, 0x68, 0x85, 0x2F, +0x20, 0xF2, 0xAB, 0x28, 0x60, 0xA5, 0x22, 0x85, 0x25, 0x64, 0x24, 0xA4, 0x24, 0xA5, 0x25, 0x48, +0x20, 0x9C, 0xCD, 0x20, 0x11, 0xB3, 0xA0, 0x00, 0x68, 0x1A, 0xC5, 0x23, 0x90, 0xF1, 0xB0, 0x29, +0xA5, 0x22, 0x48, 0x20, 0x9C, 0xCD, 0xA5, 0x28, 0x85, 0x2A, 0xA5, 0x29, 0x85, 0x2B, 0xA4, 0x21, +0x88, 0x68, 0x1A, 0xC5, 0x23, 0xB0, 0x0D, 0x48, 0x20, 0x9C, 0xCD, 0xB1, 0x28, 0x91, 0x2A, 0x88, +0x10, 0xF9, 0x30, 0xE2, 0xA0, 0x00, 0x20, 0x11, 0xB3, 0xA5, 0x25, 0x4C, 0x9C, 0xCD, 0xA9, 0x28, +0x85, 0x21, 0xA9, 0x18, 0x85, 0x23, 0x3A, 0x85, 0x25, 0xD0, 0xF0, 0xA4, 0x2A, 0x80, 0x62, 0xA4, +0x2A, 0x4C, 0x43, 0xCC, 0x20, 0x37, 0xCC, 0xAD, 0x7B, 0x05, 0x85, 0x24, 0x8D, 0x7B, 0x04, 0x4C, +0x97, 0xCD, 0xB4, 0x00, 0xF0, 0x0F, 0xC0, 0x1B, 0xF0, 0x0E, 0x20, 0x19, 0xCD, 0xB4, 0x00, 0xF0, +0x04, 0xA9, 0xFD, 0x95, 0x01, 0xB5, 0x01, 0x60, 0xA5, 0x37, 0xC9, 0xC3, 0xD0, 0xF3, 0x4C, 0x32, +0xC8, 0xA4, 0x24, 0xB1, 0x28, 0x48, 0x29, 0x3F, 0x09, 0x40, 0x91, 0x28, 0x68, 0x60, 0xA8, 0xA5, +0x28, 0x4C, 0x64, 0xCA, 0x20, 0xAD, 0xCD, 0xDA, 0xA2, 0x03, 0xDF, 0xFA, 0xC3, 0xFF, 0xD0, 0x04, +0xBF, 0xFB, 0xC0, 0xFF, 0xCA, 0x10, 0xF3, 0xFA, 0x60, 0x20, 0xB8, 0xCD, 0x09, 0x80, 0x60, 0xA4, +0x24, 0xA9, 0xA0, 0x2C, 0x1E, 0xC0, 0x10, 0x06, 0x24, 0x32, 0x30, 0x02, 0xA9, 0x20, 0x4C, 0x4E, +0xCC, 0xA8, 0xA5, 0x28, 0x4C, 0x9C, 0xCD, 0x2C, 0x1F, 0xC0, 0x10, 0x03, 0x4C, 0x54, 0xC8, 0xA4, +0x24, 0x91, 0x28, 0x20, 0xC9, 0xCE, 0x20, 0xFC, 0xCE, 0x10, 0xFB, 0x60, 0x20, 0x9E, 0xB2, 0x2C, +0x1F, 0xC0, 0x10, 0x02, 0x06, 0x21, 0xA5, 0x25, 0x8D, 0xFB, 0x05, 0x60, 0xA9, 0xFF, 0x8D, 0xFB, +0x04, 0xAD, 0x58, 0xC0, 0xAD, 0x5A, 0xC0, 0xAD, 0x5D, 0xC0, 0xAD, 0x5F, 0xC0, 0xA9, 0x08, 0x8D, +0x35, 0xC0, 0x60, 0xC8, 0x08, 0x5A, 0xDA, 0x20, 0xC3, 0xAA, 0x20, 0x28, 0xB4, 0xFA, 0x7A, 0x28, +0x60, 0xA4, 0x24, 0xB1, 0x28, 0x2C, 0x1F, 0xC0, 0x30, 0xF6, 0x4C, 0xD2, 0xCE, 0xAF, 0x3E, 0x01, +0xE1, 0x8F, 0x3F, 0x01, 0xE1, 0xA4, 0x42, 0xC2, 0x30, 0xA5, 0x3C, 0x85, 0x42, 0xC6, 0x3E, 0xE2, +0x30, 0x98, 0xA2, 0x42, 0x20, 0x2B, 0xB4, 0xC2, 0x30, 0xE6, 0x42, 0xE2, 0x30, 0xAD, 0x68, 0xC0, +0xCD, 0x83, 0xC0, 0xCD, 0x83, 0xC0, 0x48, 0x8B, 0x29, 0xF2, 0x48, 0xAF, 0x2F, 0x01, 0xE1, 0x0A, +0x0A, 0x03, 0x01, 0x8D, 0x68, 0xC0, 0x68, 0x3B, 0xEB, 0x48, 0xEB, 0x48, 0x4B, 0xF4, 0xEF, 0xB3, +0xA9, 0x5C, 0x48, 0xAF, 0x3E, 0x01, 0xE1, 0x48, 0xAF, 0x3F, 0x01, 0xE1, 0x48, 0xA9, 0x54, 0x48, +0xC2, 0x20, 0x38, 0xA5, 0x3E, 0xE5, 0x3C, 0x48, 0xA2, 0xA9, 0xDA, 0xA5, 0x42, 0x48, 0xA2, 0xA0, +0xDA, 0xA5, 0x3C, 0x48, 0xA2, 0xA2, 0xDA, 0x3B, 0xA2, 0x00, 0xDA, 0xC2, 0x30, 0x48, 0x6B, 0xA3, +0x11, 0x1B, 0xE2, 0x30, 0x80, 0x79, 0x20, 0x26, 0xB4, 0x48, 0xA2, 0x42, 0x20, 0x28, 0xB4, 0x85, +0x40, 0x68, 0xC5, 0x40, 0xF0, 0x1A, 0x48, 0x20, 0x06, 0xA9, 0x68, 0x20, 0x2F, 0xA9, 0x20, 0x08, +0xAC, 0xA9, 0xA8, 0x20, 0x59, 0xA9, 0xA5, 0x40, 0x20, 0x2F, 0xA9, 0xA9, 0xA9, 0x20, 0x59, 0xA9, +0x20, 0xB4, 0xFC, 0x90, 0xD1, 0x60, 0xA2, 0x3C, 0xB8, 0x50, 0x02, 0xE2, 0x40, 0xEB, 0xAD, 0x68, +0xC0, 0xCD, 0x83, 0xC0, 0xCD, 0x83, 0xC0, 0x48, 0x8B, 0x29, 0xF2, 0x48, 0xAF, 0x2F, 0x01, 0xE1, +0x0A, 0x0A, 0x03, 0x01, 0x83, 0x01, 0xAF, 0x39, 0x01, 0xE1, 0xF0, 0x06, 0xAF, 0x2D, 0x01, 0xE1, +0x83, 0x01, 0x68, 0x8D, 0x68, 0xC0, 0xE0, 0x42, 0x90, 0x06, 0xAF, 0x3F, 0x01, 0xE1, 0xB0, 0x04, +0xAF, 0x3E, 0x01, 0xE1, 0x48, 0xAB, 0xEB, 0x50, 0x04, 0x81, 0x00, 0x80, 0x02, 0xA1, 0x00, 0xEB, +0xAB, 0x68, 0x29, 0xBF, 0x2C, 0x1C, 0xC0, 0x10, 0x02, 0x09, 0x40, 0x8D, 0x68, 0xC0, 0xEB, 0x60, +0xAD, 0x00, 0x02, 0xF0, 0x15, 0x8B, 0x68, 0x8F, 0x3E, 0x01, 0xE1, 0x9C, 0x00, 0x02, 0xA9, 0xBA, +0x85, 0x31, 0xA9, 0x02, 0x85, 0x41, 0x3A, 0x85, 0x40, 0x60, 0xAF, 0x42, 0x01, 0xE1, 0xF0, 0x03, +0x20, 0x10, 0xB2, 0xA5, 0x3A, 0x3A, 0x8D, 0x00, 0x02, 0x60, 0xA5, 0x3C, 0x48, 0xA5, 0x3D, 0x48, +0xA0, 0x01, 0x20, 0x26, 0xB4, 0xD9, 0x00, 0x02, 0xD0, 0x29, 0x20, 0xBA, 0xFC, 0xB0, 0x30, 0xC8, +0xCC, 0x00, 0x02, 0x90, 0xED, 0xF0, 0xEB, 0x68, 0x68, 0xA5, 0x3D, 0x48, 0xA5, 0x3C, 0x48, 0xED, +0x00, 0x02, 0x85, 0x3C, 0xB0, 0x02, 0xC6, 0x3D, 0x20, 0x06, 0xA9, 0x68, 0x85, 0x3C, 0x68, 0x85, +0x3D, 0x80, 0xC7, 0x68, 0x85, 0x3D, 0x68, 0x85, 0x3C, 0x20, 0xBA, 0xFC, 0x90, 0xBC, 0x60, 0x68, +0x68, 0x60, 0xA9, 0x37, 0xA0, 0x55, 0x20, 0x64, 0xB6, 0xA9, 0x31, 0xA0, 0x00, 0x20, 0x64, 0xB6, +0x6B, 0x08, 0x78, 0xA2, 0x00, 0xBF, 0x8A, 0x89, 0xFF, 0x9F, 0xC0, 0x02, 0xE1, 0xE8, 0xE0, 0x52, +0x90, 0xF3, 0xA9, 0xFF, 0x9F, 0xC0, 0x02, 0xE1, 0xE8, 0xD0, 0xF9, 0x28, 0x08, 0x78, 0x8B, 0x20, +0x82, 0xF8, 0x20, 0x1D, 0xB6, 0x8E, 0xBC, 0x03, 0x8D, 0xBE, 0x03, 0xE2, 0x30, 0xA2, 0x00, 0x9B, +0xB8, 0xBD, 0xC0, 0x02, 0x20, 0x35, 0xB6, 0xE8, 0xC8, 0xD0, 0xF5, 0xAB, 0x28, 0x6B, 0x8B, 0x08, +0x78, 0x20, 0x82, 0xF8, 0xA2, 0x00, 0x9B, 0xE2, 0x40, 0x20, 0x35, 0xB6, 0x9D, 0xC0, 0x02, 0xE0, +0x29, 0xF0, 0x1C, 0xE0, 0x2A, 0xF0, 0x1C, 0xE0, 0x36, 0xF0, 0x24, 0xE0, 0x37, 0xF0, 0x20, 0xE0, +0x38, 0xB0, 0x06, 0xDF, 0x3D, 0x89, 0xFF, 0x80, 0x14, 0xD0, 0x0C, 0xC9, 0x09, 0x80, 0x0E, 0xC9, +0x08, 0x80, 0x0A, 0xC9, 0x11, 0x80, 0x06, 0xE0, 0x52, 0xB0, 0x04, 0xC9, 0x20, 0xB0, 0x17, 0xE8, +0xC8, 0xD0, 0xC4, 0x20, 0x1D, 0xB6, 0xEC, 0xBC, 0x03, 0xD0, 0x0B, 0xCD, 0xBE, 0x03, 0xD0, 0x06, +0x28, 0x18, 0xE2, 0x30, 0xAB, 0x6B, 0xE2, 0x30, 0x22, 0x01, 0xB5, 0xFF, 0x28, 0x38, 0xAB, 0x6B, +0x08, 0x78, 0x8B, 0x20, 0x82, 0xF8, 0x9C, 0xE0, 0x03, 0xA0, 0x00, 0xEE, 0xE0, 0x03, 0xF0, 0x2C, +0xA2, 0x00, 0xA9, 0xFD, 0x18, 0x69, 0x04, 0x48, 0x09, 0x80, 0xE2, 0x40, 0x20, 0x65, 0xB6, 0xC0, +0x00, 0xD0, 0x05, 0x9D, 0xE1, 0x03, 0x80, 0x08, 0xDD, 0xE1, 0x03, 0xF0, 0x03, 0x68, 0x80, 0xD9, +0x68, 0xE8, 0xE0, 0x04, 0x90, 0xDE, 0xBB, 0xD0, 0x07, 0xC8, 0x80, 0xCF, 0xAB, 0x28, 0x38, 0x6B, +0xAB, 0x28, 0x18, 0x6B, 0x08, 0x78, 0xA9, 0x00, 0x48, 0xA2, 0x00, 0xA9, 0xFD, 0x18, 0x69, 0x04, +0x48, 0xBF, 0xE5, 0x03, 0xE1, 0xA8, 0xA3, 0x01, 0x20, 0x64, 0xB6, 0x68, 0xE8, 0xE0, 0x04, 0x90, +0xEC, 0x22, 0xA0, 0xB5, 0xFF, 0xA2, 0x03, 0xBF, 0xE1, 0x03, 0xE1, 0xDF, 0xE5, 0x03, 0xE1, 0xD0, +0x06, 0xCA, 0x10, 0xF3, 0x68, 0x80, 0xCA, 0x68, 0x3A, 0xD0, 0xCD, 0x80, 0xC0, 0xA2, 0xFA, 0xC2, +0x20, 0x18, 0xA9, 0x00, 0x00, 0x2A, 0x7D, 0xC0, 0x02, 0xCA, 0xE0, 0xFF, 0xD0, 0xF7, 0xC2, 0x30, +0xAA, 0x49, 0xAA, 0xAA, 0x60, 0x48, 0x98, 0x48, 0x29, 0xE0, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x09, +0x38, 0x50, 0x02, 0x09, 0x80, 0xEB, 0x68, 0x29, 0x1F, 0x0A, 0x0A, 0xEB, 0x08, 0x20, 0x69, 0xB6, +0xEB, 0x20, 0x69, 0xB6, 0x28, 0x68, 0x20, 0x6A, 0xB6, 0x48, 0xAD, 0x34, 0xC0, 0x29, 0xDF, 0x8D, +0x34, 0xC0, 0x68, 0x60, 0xB8, 0x5A, 0x08, 0x80, 0xE8, 0xB8, 0x8D, 0x33, 0xC0, 0xAD, 0x34, 0xC0, +0x29, 0x3F, 0x70, 0x04, 0x09, 0xA0, 0x80, 0x02, 0x09, 0xE0, 0x8D, 0x34, 0xC0, 0xAD, 0x34, 0xC0, +0x30, 0xFB, 0xAD, 0x33, 0xC0, 0x60, 0xAF, 0x34, 0x01, 0xE1, 0x48, 0x20, 0x95, 0xB6, 0x68, 0x8F, +0x34, 0x01, 0xE1, 0x18, 0x6B, 0xA9, 0x0B, 0x8D, 0x39, 0xC0, 0xA9, 0xD2, 0x8D, 0x39, 0xC0, 0x20, +0xEF, 0xA0, 0x22, 0x3E, 0xB5, 0xFF, 0x8B, 0x20, 0x82, 0xF8, 0xA2, 0x07, 0xBF, 0x4C, 0x00, 0xE1, +0x48, 0xCA, 0x10, 0xF8, 0x20, 0xFC, 0x84, 0x20, 0xFC, 0x84, 0xA2, 0x00, 0x68, 0x9F, 0x4C, 0x00, +0xE1, 0xE8, 0xE0, 0x08, 0xD0, 0xF6, 0xAB, 0x20, 0xEB, 0xB6, 0xD0, 0x09, 0xAF, 0x38, 0x01, 0xE1, +0x20, 0x2A, 0xB7, 0x38, 0x90, 0x18, 0x22, 0xF4, 0xB6, 0xFF, 0x20, 0xEB, 0xB6, 0xD0, 0x0B, 0xC2, +0x30, 0xA2, 0x01, 0x05, 0x22, 0x00, 0x00, 0xE1, 0xE2, 0x30, 0x60, 0xAD, 0xF3, 0x03, 0x49, 0xA5, +0xCD, 0xF4, 0x03, 0x60, 0x08, 0x78, 0xAD, 0x68, 0xC0, 0x48, 0x29, 0xFE, 0x09, 0x08, 0x8D, 0x68, +0xC0, 0x08, 0x20, 0x37, 0xB7, 0x28, 0xB0, 0x03, 0x20, 0x15, 0xB7, 0x20, 0xE1, 0xF9, 0x68, 0x8D, +0x68, 0xC0, 0x28, 0x18, 0x6B, 0xA2, 0x07, 0xA9, 0x00, 0x1F, 0xE0, 0x02, 0xE1, 0x0A, 0xCA, 0xD0, +0xF8, 0x29, 0xF6, 0x8D, 0x2D, 0xC0, 0x8F, 0x38, 0x01, 0xE1, 0x8D, 0x0A, 0xC0, 0xAF, 0xE3, 0x02, +0xE1, 0xF0, 0x03, 0x8D, 0x0B, 0xC0, 0x60, 0x22, 0x3E, 0xB5, 0xFF, 0x8B, 0x20, 0x82, 0xF8, 0x9C, +0x39, 0x01, 0x18, 0xAD, 0xE0, 0x02, 0x6A, 0x6A, 0x8D, 0x37, 0x01, 0x20, 0x6E, 0xB7, 0xAD, 0x3C, +0xC0, 0x29, 0xF0, 0x0D, 0xDE, 0x02, 0x8D, 0x3C, 0xC0, 0xAD, 0xDE, 0x02, 0x8D, 0xCA, 0x00, 0x0A, +0x0A, 0x0A, 0x0A, 0x8D, 0xB0, 0x1D, 0x20, 0xEA, 0xC3, 0x20, 0xCB, 0x85, 0xAB, 0x60, 0x8B, 0x20, +0x82, 0xF8, 0xAD, 0xDA, 0x02, 0x0A, 0x0A, 0x0A, 0x0A, 0x0D, 0xDB, 0x02, 0x8D, 0x22, 0xC0, 0xAD, +0x34, 0xC0, 0x29, 0xF0, 0x0D, 0xDC, 0x02, 0x8D, 0x34, 0xC0, 0xA9, 0xF0, 0x1C, 0x2B, 0xC0, 0xAD, +0xE9, 0x02, 0x0A, 0x0D, 0xDD, 0x02, 0x0A, 0x0A, 0x0A, 0x0A, 0x09, 0x08, 0x0C, 0x2B, 0xC0, 0xA9, +0x20, 0x1C, 0x29, 0xC0, 0x18, 0xAD, 0xD8, 0x02, 0x6A, 0x6A, 0x8D, 0x21, 0xC0, 0x6A, 0x6A, 0x0C, +0x29, 0xC0, 0xAB, 0x60, 0x90, 0x04, 0x5C, 0x18, 0x00, 0xE1, 0x5C, 0x14, 0x00, 0xE1, 0x18, 0xFB, +0xB0, 0x04, 0xE2, 0x40, 0x80, 0x06, 0xFB, 0xB8, 0x68, 0x09, 0x10, 0x48, 0x18, 0xFB, 0xC2, 0x30, +0x08, 0x8B, 0xF4, 0xE1, 0xE1, 0xAB, 0x8D, 0x08, 0x01, 0xAD, 0x35, 0xC0, 0x8D, 0x19, 0x01, 0x09, +0x00, 0x80, 0x29, 0x1E, 0x9F, 0x8D, 0x35, 0xC0, 0x8E, 0x0A, 0x01, 0x8C, 0x0C, 0x01, 0x7B, 0x8D, +0x10, 0x01, 0xA9, 0x00, 0x00, 0x5B, 0xE2, 0x30, 0x90, 0x06, 0xA3, 0x04, 0x29, 0x10, 0x69, 0x70, +0x70, 0x5D, 0xA9, 0x03, 0x8D, 0x39, 0xC0, 0xAD, 0x39, 0xC0, 0x2C, 0x03, 0x01, 0xF0, 0x30, 0x48, +0x29, 0x07, 0xD0, 0x12, 0xAD, 0x3B, 0xC0, 0x8D, 0x05, 0x01, 0xAD, 0x3B, 0xC0, 0x8D, 0x06, 0x01, +0x22, 0x20, 0x00, 0xE1, 0x80, 0x10, 0xAD, 0x3A, 0xC0, 0x8D, 0x05, 0x01, 0xAD, 0x3A, 0xC0, 0x8D, +0x06, 0x01, 0x22, 0x20, 0x00, 0xE1, 0xA9, 0x00, 0x6A, 0x8D, 0x01, 0x01, 0x68, 0x80, 0x03, 0x9C, +0x01, 0x01, 0x48, 0x2D, 0x04, 0x01, 0xF0, 0x13, 0x22, 0x24, 0x00, 0xE1, 0x6E, 0x01, 0x01, 0x68, +0xAD, 0x01, 0x01, 0xD0, 0x09, 0xC2, 0x30, 0xAB, 0x4C, 0x86, 0xBA, 0x68, 0xD0, 0xF2, 0xB8, 0xC2, +0x30, 0xAB, 0x68, 0x8D, 0x13, 0x01, 0x9C, 0xC3, 0x00, 0x9C, 0xC5, 0x00, 0x50, 0x1E, 0xE2, 0x10, +0x7A, 0x5A, 0x8C, 0x12, 0x01, 0x84, 0x48, 0xA3, 0x02, 0x8D, 0x16, 0x01, 0x85, 0x3A, 0xA0, 0x00, +0xAD, 0x14, 0x01, 0x4A, 0xB0, 0x03, 0xA3, 0x04, 0xA8, 0x8C, 0x15, 0x01, 0x3B, 0x8D, 0x0E, 0x01, +0xE2, 0x30, 0xEB, 0x49, 0x01, 0xD0, 0x0A, 0xAE, 0x16, 0xC0, 0x10, 0x0D, 0xEB, 0x8F, 0x01, 0x01, +0x01, 0xA9, 0x01, 0xEB, 0xAF, 0x00, 0x01, 0x01, 0x1B, 0xAD, 0x68, 0xC0, 0x8D, 0x18, 0x01, 0xAE, +0x18, 0xC0, 0x10, 0x02, 0x29, 0xBF, 0x29, 0x40, 0x09, 0x08, 0x8D, 0x68, 0xC0, 0xAF, 0xF8, 0x07, +0x00, 0x8D, 0x1B, 0x01, 0x50, 0x06, 0x9C, 0xC6, 0x00, 0x4C, 0xB6, 0xBA, 0xEE, 0xCB, 0x00, 0xAD, +0x01, 0x01, 0xF0, 0x0A, 0x8D, 0xC6, 0x00, 0xA9, 0x00, 0x48, 0xAB, 0x4C, 0xAF, 0xBA, 0xA9, 0x00, +0x48, 0xAB, 0xAD, 0x23, 0xC0, 0x10, 0x0F, 0x29, 0x22, 0x4A, 0x4A, 0x90, 0x09, 0xF0, 0x07, 0x22, +0x28, 0x00, 0xE1, 0x4C, 0x33, 0xBA, 0xAD, 0x3C, 0xC0, 0x29, 0xF0, 0x48, 0xC2, 0x30, 0xAD, 0x3E, +0xC0, 0x48, 0xE2, 0x30, 0xA9, 0xE0, 0x8D, 0x3E, 0xC0, 0xAD, 0x3C, 0xC0, 0x29, 0x90, 0x0F, 0xCA, +0x00, 0xE1, 0x8D, 0x3C, 0xC0, 0xAD, 0x3D, 0xC0, 0xAD, 0x3D, 0xC0, 0x8F, 0xCC, 0x00, 0xE1, 0x30, +0x17, 0x22, 0x2C, 0x00, 0xE1, 0xC2, 0x30, 0x68, 0x8D, 0x3E, 0xC0, 0xE2, 0x30, 0x68, 0x0F, 0xCA, +0x00, 0xE1, 0x8D, 0x3C, 0xC0, 0x4C, 0x33, 0xBA, 0xC2, 0x30, 0x68, 0x8D, 0x3E, 0xC0, 0xE2, 0x30, +0x68, 0x0F, 0xCA, 0x00, 0xE1, 0x8D, 0x3C, 0xC0, 0xAD, 0x46, 0xC0, 0x2D, 0x41, 0xC0, 0x8F, 0xC3, +0x00, 0xE1, 0x29, 0x18, 0x48, 0x29, 0x08, 0xF0, 0x1A, 0x22, 0x30, 0x00, 0xE1, 0xAF, 0xD7, 0x00, +0xE1, 0xD0, 0x0C, 0x90, 0x0E, 0xA9, 0x08, 0x1C, 0x41, 0xC0, 0x8D, 0x47, 0xC0, 0x80, 0x04, 0x38, +0x20, 0xA3, 0xBA, 0xAD, 0x27, 0xC0, 0x8F, 0xC5, 0x00, 0xE1, 0x0A, 0x10, 0x0C, 0x90, 0x0A, 0x22, +0x34, 0x00, 0xE1, 0xB8, 0x20, 0xA3, 0xBA, 0x80, 0x02, 0xE2, 0x40, 0x68, 0xD0, 0x04, 0x50, 0x69, +0x70, 0x0A, 0x29, 0x10, 0xF0, 0x63, 0x22, 0x38, 0x00, 0xE1, 0x80, 0x5A, 0xAF, 0xC5, 0x00, 0xE1, +0x29, 0x30, 0x0A, 0x0A, 0x0A, 0x10, 0x55, 0x90, 0x53, 0xAD, 0x26, 0xC0, 0x8F, 0xC4, 0x00, 0xE1, +0x10, 0x07, 0x22, 0x40, 0x00, 0xE1, 0x20, 0xA3, 0xBA, 0xAF, 0xC4, 0x00, 0xE1, 0x29, 0x08, 0xF0, +0x07, 0x22, 0x44, 0x00, 0xE1, 0x20, 0xA3, 0xBA, 0xAF, 0xC4, 0x00, 0xE1, 0x29, 0x20, 0xF0, 0x07, +0x22, 0x48, 0x00, 0xE1, 0x20, 0xA3, 0xBA, 0xAF, 0xC4, 0x00, 0xE1, 0x29, 0x50, 0x0A, 0x0A, 0xF0, +0x09, 0x90, 0x03, 0x8D, 0x10, 0xC0, 0x22, 0x4C, 0x00, 0xE1, 0xAF, 0xC4, 0x00, 0xE1, 0xC9, 0x40, +0xD0, 0x07, 0x22, 0x50, 0x00, 0xE1, 0x20, 0xA3, 0xBA, 0x4C, 0xAF, 0xBA, 0xAF, 0xC5, 0x00, 0xE1, +0xA8, 0x29, 0x0C, 0x4A, 0x4A, 0x4A, 0x90, 0x08, 0xF0, 0x06, 0x22, 0x3C, 0x00, 0xE1, 0x80, 0x23, +0xAD, 0x23, 0xC0, 0x10, 0x0E, 0x29, 0x44, 0x0A, 0x0A, 0xF0, 0x08, 0x90, 0x06, 0x22, 0x54, 0x00, +0xE1, 0x80, 0x10, 0xAD, 0x23, 0xC0, 0x10, 0x10, 0x29, 0x11, 0x4A, 0x90, 0x0B, 0xF0, 0x09, 0x22, +0x58, 0x00, 0xE1, 0x90, 0x31, 0x4C, 0xB5, 0xBA, 0x22, 0x5C, 0x00, 0xE1, 0x80, 0xF5, 0x68, 0x18, +0xFB, 0xAF, 0xC6, 0x00, 0xE1, 0x0A, 0x8F, 0xC6, 0x00, 0xE1, 0xD0, 0x69, 0xA9, 0x80, 0x0C, 0x36, +0xC0, 0xAF, 0x1B, 0x01, 0xE1, 0x8D, 0xF8, 0x07, 0xC2, 0x10, 0xEB, 0xA9, 0x00, 0xAA, 0x2C, 0xFF, +0xCF, 0xBD, 0x00, 0x00, 0xE2, 0x10, 0xA9, 0xE1, 0x48, 0xAB, 0xAD, 0x8B, 0xC0, 0xAD, 0x8B, 0xC0, +0xAD, 0x18, 0x01, 0x8D, 0x68, 0xC0, 0xCE, 0xCB, 0x00, 0xC2, 0x30, 0x9C, 0xC3, 0x00, 0xAD, 0x0E, +0x01, 0x1B, 0xAD, 0x13, 0x01, 0x48, 0xAD, 0x10, 0x01, 0x5B, 0xAC, 0x0C, 0x01, 0xAE, 0x0A, 0x01, +0xAD, 0x19, 0x01, 0x8D, 0x35, 0xC0, 0xAD, 0x08, 0x01, 0xAB, 0x28, 0xB0, 0x01, 0x40, 0xFB, 0x5C, +0x72, 0xC0, 0x00, 0x90, 0x09, 0xAF, 0xC6, 0x00, 0xE1, 0x6A, 0x8F, 0xC6, 0x00, 0xE1, 0x60, 0xAF, +0xC6, 0x00, 0xE1, 0xF0, 0x8A, 0xB8, 0xA9, 0x00, 0x48, 0xAB, 0xAD, 0x68, 0xC0, 0xAE, 0x18, 0xC0, +0x10, 0x02, 0x29, 0xBF, 0x29, 0x40, 0x09, 0x08, 0x8D, 0x68, 0xC0, 0xA9, 0x80, 0x1C, 0x36, 0xC0, +0x50, 0x0B, 0x22, 0x70, 0x00, 0xE1, 0xB0, 0x03, 0x4C, 0xAF, 0xBA, 0xE2, 0x40, 0xC2, 0x20, 0x3B, +0xA2, 0x6B, 0xDA, 0x4B, 0xF4, 0x3D, 0xBA, 0x48, 0x38, 0xFB, 0xA9, 0x04, 0x48, 0x70, 0x04, 0x5C, +0x3D, 0xFD, 0x00, 0xAF, 0x08, 0x01, 0xE1, 0x85, 0x45, 0xAF, 0x0A, 0x01, 0xE1, 0x85, 0x46, 0xAF, +0x0C, 0x01, 0xE1, 0x85, 0x47, 0xAF, 0x0E, 0x01, 0xE1, 0x85, 0x49, 0x38, 0xFB, 0x5C, 0x56, 0xFA, +0x00, 0x0F, 0xA0, 0xC1, 0xF0, 0xF0, 0xEC, 0xE5, 0xA0, 0xC9, 0xC9, 0xE7, 0xF3, 0x00, 0x43, 0x6F, +0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x41, 0x70, 0x70, 0x6C, 0x65, 0x20, 0x43, 0x6F, +0x6D, 0x70, 0x75, 0x74, 0x65, 0x72, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x20, 0x31, 0x39, 0x37, +0x37, 0x2D, 0x31, 0x39, 0x38, 0xB7, 0x00, 0x00, 0xC6, 0xE5, 0xF2, 0xEE, 0xA0, 0xC2, 0xE1, 0xE3, +0xE8, 0xED, 0xE1, 0xEE, 0xA0, 0xCA, 0xF2, 0xAE, 0x00, 0x00, 0xB1, 0xB9, 0xB7, 0xB7, 0xA0, 0xCD, +0xE9, 0xE3, 0xF2, 0xEF, 0xF3, 0xEF, 0xE6, 0xF4, 0x0A, 0xA0, 0xC1, 0xEC, 0xEC, 0xA0, 0xD2, 0xE9, +0xE7, 0xE8, 0xF4, 0xF3, 0xA0, 0xD2, 0xE5, 0xF3, 0xE5, 0xF2, 0xF6, 0xE5, 0xE4, 0xAE, 0x00, 0x0D, +0xA0, 0xD2, 0xCF, 0xCD, 0xA0, 0xD6, 0xE5, 0xF2, 0xF3, 0xE9, 0xEF, 0xEE, 0xA0, 0x00, 0x00, 0x13, +0x00, 0x00, 0x15, 0x17, 0x20, 0xB8, 0xA1, 0xA2, 0x00, 0xC2, 0x20, 0x18, 0x8B, 0x4B, 0xAB, 0xBC, +0x8E, 0xBB, 0xAB, 0x8A, 0x69, 0xFF, 0x00, 0xDA, 0x48, 0xE2, 0x30, 0x20, 0x12, 0x96, 0xC2, 0x30, +0x68, 0x20, 0x85, 0xC0, 0xFA, 0xE8, 0xE0, 0x06, 0x90, 0xDF, 0xE2, 0x30, 0xAD, 0x59, 0xFB, 0x4C, +0x2F, 0xA9, 0x5C, 0xCC, 0xB7, 0xFF, 0x5C, 0xBE, 0xB7, 0xFF, 0x5C, 0xBE, 0xB7, 0xFF, 0x5C, 0xE6, +0xA4, 0xFF, 0x5C, 0x1C, 0xB5, 0xFF, 0x5C, 0x3E, 0xB5, 0xFF, 0x5C, 0xE4, 0xB5, 0xFF, 0x5C, 0xA0, +0xB5, 0xFF, 0x5C, 0x83, 0x92, 0xFF, 0x5C, 0xF4, 0xB6, 0xFF, 0x5C, 0xF3, 0xC4, 0xFF, 0x5C, 0xF7, +0xC4, 0xFF, 0x5C, 0x19, 0xFE, 0x00, 0x5C, 0xAC, 0x91, 0xFF, 0x00, 0xC6, 0xE9, 0xF2, 0xED, 0xF7, +0xE1, 0xF2, 0xE5, 0x07, 0xA0, 0xD4, 0xEF, 0xEF, 0xEC, 0xF3, 0x09, 0xA0, 0xC8, 0xE1, 0xF2, 0xE4, +0xF7, 0xE1, 0xF2, 0xE5, 0x8D, 0xA0, 0xC7, 0xA0, 0xC1, 0xEE, 0xE4, 0xF2, 0xE1, 0xE4, 0xE5, 0x06, +0xA0, 0xC5, 0xA0, 0xC2, 0xE5, 0xF2, 0xEE, 0xF3, 0x07, 0xA0, 0xC7, 0xA0, 0xCB, 0xEE, 0xF5, 0xF4, +0xF3, 0xEF, 0xEE, 0x8D, 0xA0, 0xCD, 0xA0, 0xC1, 0xF3, 0xEB, 0xE9, 0xEE, 0xF3, 0x07, 0xA0, 0xC1, +0xA0, 0xC3, 0xE1, 0xE2, 0xF2, 0xE1, 0xEC, 0x06, 0xA0, 0xD2, 0xA0, 0xCB, 0xF5, 0xF2, 0xE9, 0xE8, +0xE1, 0xF2, 0xE1, 0xA0, 0xC6, 0xA0, 0xC2, 0xE1, 0xE3, 0xE8, 0xED, 0xE1, 0xEE, 0xA0, 0xCA, 0xF2, +0xAA, 0x02, 0xA0, 0xC3, 0xA0, 0xC5, 0xF7, 0xF9, 0x09, 0xA0, 0xCA, 0xA0, 0xCD, 0xE1, 0xE3, 0xD0, +0xE8, 0xE5, 0xE5, 0x8D, 0xA0, 0xD0, 0xA0, 0xC2, 0xE1, 0xF5, 0xED, 0x09, 0xA0, 0xD3, 0xA0, 0xC7, +0xEC, 0xE1, 0xF3, 0xF3, 0xAA, 0x06, 0xA0, 0xD2, 0xA0, 0xCD, 0xEF, 0xEF, 0xF2, 0xE5, 0xAA, 0x8D, +0xA0, 0xD2, 0xA0, 0xC4, 0xEF, 0xF5, 0xE3, 0xE5, 0xF4, 0xF4, 0xE5, 0x05, 0xA0, 0xCB, 0xA0, 0xC8, +0xE1, 0xEE, 0xF3, 0xEF, 0xEE, 0x06, 0xA0, 0xCA, 0xA0, 0xD2, 0xE9, 0xE3, 0xEB, 0xE1, 0xF2, 0xE4, +0x8D, 0xA0, 0xC5, 0xA0, 0xCC, 0xE1, 0xE9, 0x0A, 0xA0, 0xC3, 0xA0, 0xCC, 0xE5, 0xF7, 0xE9, 0xF3, +0x07, 0xA0, 0xD4, 0xA0, 0xD2, 0xF5, 0xE4, 0xE9, 0xEE, 0x8D, 0xA0, 0xD2, 0xA0, 0xCD, 0xEF, 0xEE, +0xF4, 0xE1, 0xE7, 0xEE, 0xE5, 0x05, 0xA0, 0xC2, 0xA0, 0xCD, 0xE1, 0xF2, 0xEB, 0xF3, 0x07, 0xA0, +0xCC, 0xA0, 0xD4, 0xE8, 0xEF, 0xED, 0xF0, 0xF3, 0xEF, 0xEE, 0xA0, 0xD0, 0xA0, 0xD2, 0xE5, 0xE9, +0xE3, 0xE8, 0xE5, 0xF2, 0xF4, 0x05, 0xA0, 0xC4, 0xA0, 0xCF, 0xEC, 0xE9, 0xF6, 0xE5, 0xF2, 0x05, +0xA0, 0xC4, 0xE9, 0xE1, 0xE7, 0xF3, 0x8D, 0xA0, 0xC7, 0xA0, 0xD3, 0xE5, 0xE9, 0xF4, 0xFA, 0x08, +0xA0, 0xCA, 0xA0, 0xD7, 0xEF, 0xF2, 0xF4, 0xE8, 0xE9, 0xEE, 0xE7, 0xF4, 0xEF, 0xEE, 0x01, 0xA0, +0xD2, 0xA0, 0xC3, 0xE1, 0xF2, 0xF2, 0x8D, 0xA0, 0xD2, 0xA0, 0xD7, 0xE9, 0xEC, 0xEC, 0xE9, 0xE1, +0xED, 0xF3, 0x13, 0xA0, 0xCB, 0xA0, 0xC7, 0xF2, 0xE1, 0xE2, 0xE5, 0x8D, 0xA0, 0x1D, 0xA0, 0xCA, +0xA0, 0xD2, 0xE5, 0xF9, 0xEE, 0xEF, 0xEC, 0xE4, 0xF3, 0xC4, 0xA0, 0xC8, 0xE9, 0xEC, 0xEC, 0xED, +0xE1, 0xEE, 0xAD, 0xAD, 0xC8, 0xA0, 0xCC, 0xE5, 0xE8, 0xF4, 0xED, 0xE1, 0xEE, 0xAD, 0xAD, 0xCA, +0xA0, 0xCD, 0xE5, 0xE4, 0xE9, 0xE3, 0xE1, 0xAD, 0xAD, 0xCE, 0xA0, 0xD3, 0xF4, 0xE1, 0xF2, 0xEB, +0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xA0, 0x20, 0x40, 0x21, 0xE0, 0x21, 0x80, 0x22, 0x20, 0x23, +0xC0, 0x23, 0x60, 0x24, 0x00, 0x25, 0xA0, 0x25, 0x40, 0x26, 0xE0, 0x26, 0x80, 0x27, 0x20, 0x28, +0xC0, 0x28, 0x60, 0x29, 0x00, 0x2A, 0xA0, 0x2A, 0x40, 0x2B, 0xE0, 0x2B, 0x80, 0x2C, 0x20, 0x2D, +0xC0, 0x2D, 0x60, 0x2E, 0x00, 0x2F, 0xA0, 0x2F, 0x40, 0x30, 0xE0, 0x30, 0x80, 0x31, 0x20, 0x32, +0xC0, 0x32, 0x60, 0x33, 0x00, 0x34, 0xA0, 0x34, 0x40, 0x35, 0xE0, 0x35, 0x80, 0x36, 0x20, 0x37, +0xC0, 0x37, 0x60, 0x38, 0x00, 0x39, 0xA0, 0x39, 0x40, 0x3A, 0xE0, 0x3A, 0x80, 0x3B, 0x20, 0x3C, +0xC0, 0x3C, 0x60, 0x3D, 0x00, 0x3E, 0xA0, 0x3E, 0x40, 0x3F, 0xE0, 0x3F, 0x80, 0x40, 0x20, 0x41, +0xC0, 0x41, 0x60, 0x42, 0x00, 0x43, 0xA0, 0x43, 0x40, 0x44, 0xE0, 0x44, 0x80, 0x45, 0x20, 0x46, +0xC0, 0x46, 0x60, 0x47, 0x00, 0x48, 0xA0, 0x48, 0x40, 0x49, 0xE0, 0x49, 0x80, 0x4A, 0x20, 0x4B, +0xC0, 0x4B, 0x60, 0x4C, 0x00, 0x4D, 0xA0, 0x4D, 0x40, 0x4E, 0xE0, 0x4E, 0x80, 0x4F, 0x20, 0x50, +0xC0, 0x50, 0x60, 0x51, 0x00, 0x52, 0xA0, 0x52, 0x40, 0x53, 0xE0, 0x53, 0x80, 0x54, 0x20, 0x55, +0xC0, 0x55, 0x60, 0x56, 0x00, 0x57, 0xA0, 0x57, 0x40, 0x58, 0xE0, 0x58, 0x80, 0x59, 0x20, 0x5A, +0xC0, 0x5A, 0x60, 0x5B, 0x00, 0x5C, 0xA0, 0x5C, 0x40, 0x5D, 0xE0, 0x5D, 0x80, 0x5E, 0x20, 0x5F, +0xC0, 0x5F, 0x60, 0x60, 0x00, 0x61, 0xA0, 0x61, 0x40, 0x62, 0xE0, 0x62, 0x80, 0x63, 0x20, 0x64, +0xC0, 0x64, 0x60, 0x65, 0x00, 0x66, 0xA0, 0x66, 0x40, 0x67, 0xE0, 0x67, 0x80, 0x68, 0x20, 0x69, +0xC0, 0x69, 0x60, 0x6A, 0x00, 0x6B, 0xA0, 0x6B, 0x40, 0x6C, 0xE0, 0x6C, 0x80, 0x6D, 0x20, 0x6E, +0xC0, 0x6E, 0x60, 0x6F, 0x00, 0x70, 0xA0, 0x70, 0x40, 0x71, 0xE0, 0x71, 0x80, 0x72, 0x20, 0x73, +0xC0, 0x73, 0x60, 0x74, 0x00, 0x75, 0xA0, 0x75, 0x40, 0x76, 0xE0, 0x76, 0x80, 0x77, 0x20, 0x78, +0xC0, 0x78, 0x60, 0x79, 0x00, 0x7A, 0xA0, 0x7A, 0x40, 0x7B, 0xE0, 0x7B, 0x80, 0x7C, 0x20, 0x7D, +0xC0, 0x7D, 0x60, 0x7E, 0x00, 0x7F, 0xA0, 0x7F, 0x40, 0x80, 0xE0, 0x80, 0x80, 0x81, 0x20, 0x82, +0xC0, 0x82, 0x60, 0x83, 0x00, 0x84, 0xA0, 0x84, 0x40, 0x85, 0xE0, 0x85, 0x80, 0x86, 0x20, 0x87, +0xC0, 0x87, 0x60, 0x88, 0x00, 0x89, 0xA0, 0x89, 0x40, 0x8A, 0xE0, 0x8A, 0x80, 0x8B, 0x20, 0x8C, +0xC0, 0x8C, 0x60, 0x8D, 0x00, 0x8E, 0xA0, 0x8E, 0x40, 0x8F, 0xE0, 0x8F, 0x80, 0x90, 0x20, 0x91, +0xC0, 0x91, 0x60, 0x92, 0x00, 0x93, 0xA0, 0x93, 0x40, 0x94, 0xE0, 0x94, 0x80, 0x95, 0x20, 0x96, +0xC0, 0x96, 0x60, 0x97, 0x00, 0x98, 0xA0, 0x98, 0x40, 0x99, 0xE0, 0x99, 0x80, 0x9A, 0x20, 0x9B, +0xC0, 0x9B, 0x60, 0x9C, 0x2B, 0x80, 0x04, 0x2B, 0xA2, 0x00, 0x00, 0x5A, 0x3B, 0x18, 0x63, 0x01, +0xA8, 0x3B, 0xDA, 0xAA, 0x8B, 0xF4, 0x00, 0x00, 0xAB, 0xAB, 0xBD, 0x07, 0x00, 0x99, 0x07, 0x00, +0xBD, 0x05, 0x00, 0x99, 0x05, 0x00, 0xBD, 0x03, 0x00, 0x99, 0x03, 0x00, 0xAB, 0xFA, 0x3B, 0x18, +0x63, 0x01, 0x69, 0x02, 0x00, 0x1B, 0x8A, 0xC9, 0x01, 0x00, 0x6B, 0xA0, 0x04, 0x00, 0x80, 0xC8, +0xA0, 0x00, 0x00, 0x80, 0xC3, 0x0B, 0x00, 0x00, 0x00, 0x70, 0xBF, 0xFF, 0x00, 0x9F, 0xBF, 0xFF, +0x00, 0x9F, 0xBF, 0xFF, 0x00, 0xA1, 0xBF, 0xFF, 0x00, 0x72, 0xBF, 0xFF, 0x00, 0xA6, 0xBF, 0xFF, +0x00, 0x3F, 0xBF, 0xFF, 0x00, 0x3F, 0xBF, 0xFF, 0x00, 0xB6, 0xBF, 0xFF, 0x00, 0xAD, 0xBF, 0xFF, +0x00, 0x18, 0xB0, 0x38, 0xA9, 0x00, 0x00, 0x8F, 0xFF, 0x00, 0xE1, 0xA9, 0xFF, 0x00, 0x8F, 0xEF, +0x1D, 0xE0, 0xB0, 0xBC, 0xA9, 0x5C, 0xC0, 0x8F, 0x65, 0x00, 0xE1, 0xA9, 0xEA, 0xBF, 0x8F, 0x69, +0x00, 0xE1, 0xE2, 0x30, 0xA9, 0xFF, 0x8F, 0x67, 0x00, 0xE1, 0x8F, 0x6B, 0x00, 0xE1, 0xC2, 0x30, +0x80, 0x9E, 0xA9, 0x00, 0x02, 0x80, 0x03, 0xA9, 0xFF, 0xFF, 0x83, 0x07, 0x80, 0x92, 0xA9, 0xFF, +0x00, 0x8F, 0xEF, 0x1D, 0xE0, 0x80, 0x89, 0xE2, 0x30, 0x8B, 0xA9, 0xE0, 0x48, 0xAB, 0xAD, 0xEF, +0x1D, 0x1A, 0xC9, 0x04, 0xB0, 0x19, 0x8D, 0xEF, 0x1D, 0x0A, 0x0A, 0xAA, 0xC2, 0x30, 0xA3, 0x08, +0x9D, 0xDF, 0x1D, 0xE8, 0xE8, 0xA3, 0x0A, 0x9D, 0xDF, 0x1D, 0xA9, 0xFF, 0x00, 0x80, 0x05, 0xC2, +0x30, 0xA9, 0x00, 0x00, 0x83, 0x0C, 0xAB, 0x4C, 0x3B, 0xBF, 0x08, 0x78, 0x48, 0xDA, 0x5A, 0xAF, +0xFF, 0x00, 0xE1, 0x3A, 0x30, 0x08, 0x8F, 0xFF, 0x00, 0xE1, 0xF0, 0x09, 0x80, 0x54, 0xA9, 0x00, +0x00, 0x8F, 0xFF, 0x00, 0xE1, 0xE2, 0x30, 0x8B, 0xA9, 0xE0, 0x48, 0xAB, 0xAD, 0xDE, 0x1D, 0xD0, +0x3E, 0xA9, 0x01, 0x8D, 0xDE, 0x1D, 0xAD, 0xEF, 0x1D, 0x30, 0x31, 0x4B, 0x62, 0x0B, 0x00, 0xAD, +0xE1, 0x1D, 0x48, 0xC2, 0x30, 0xAD, 0xDF, 0x1D, 0x3A, 0x48, 0x6B, 0xE2, 0x30, 0xA9, 0xE0, 0x48, +0xAB, 0x78, 0xA2, 0x00, 0xC2, 0x30, 0xBD, 0xE3, 0x1D, 0x9D, 0xDF, 0x1D, 0xE8, 0xE8, 0xE0, 0x0C, +0x00, 0xF0, 0xF3, 0x90, 0xF1, 0xE2, 0x30, 0xCE, 0xEF, 0x1D, 0x10, 0xCA, 0x9C, 0xDE, 0x1D, 0xAB, +0xC2, 0x30, 0x7A, 0xFA, 0x68, 0x28, 0x6B, 0xAF, 0xFF, 0x00, 0xE1, 0x6B, 0x08, 0x78, 0x48, 0xAF, +0xFF, 0x00, 0xE1, 0x1A, 0x8F, 0xFF, 0x00, 0xE1, 0x80, 0xEA, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xA3, +0xA2, 0xE2, 0x40, 0x50, 0xB8, 0x5C, 0x10, 0x00, 0xE1, 0x38, 0x90, 0x18, 0x5C, 0xB4, 0xB7, 0xFF, +0xC2, 0x30, 0x29, 0xFF, 0x00, 0xA4, 0x06, 0x5A, 0xA4, 0x08, 0x5A, 0x0A, 0xA8, 0xAF, 0xC0, 0x00, +0xE1, 0x85, 0x06, 0xAF, 0xC1, 0x00, 0xE1, 0x85, 0x07, 0xB7, 0x06, 0x85, 0x06, 0xE2, 0x70, 0xA7, +0x06, 0xF0, 0x18, 0xC9, 0x20, 0x90, 0x2A, 0xB8, 0xA7, 0x06, 0xF0, 0x1A, 0xC9, 0x20, 0x90, 0x21, +0x70, 0x04, 0x30, 0x0F, 0x09, 0x80, 0x08, 0x20, 0x59, 0xA9, 0x28, 0xE6, 0x06, 0xD0, 0xE9, 0xE6, +0x07, 0x80, 0xE5, 0x20, 0x59, 0xA9, 0xC2, 0x30, 0x68, 0x85, 0x08, 0x68, 0x85, 0x06, 0xE2, 0x30, +0x60, 0xA8, 0xE6, 0x06, 0xD0, 0x02, 0xE6, 0x07, 0xA7, 0x06, 0x5A, 0x70, 0x02, 0x09, 0x80, 0x08, +0x20, 0x59, 0xA9, 0x28, 0x7A, 0x88, 0xD0, 0xF0, 0x80, 0xD1, 0xC1, 0xD8, 0xD9, 0xD3, 0xC4, 0xD0, +0xC2, 0xCB, 0xCD, 0xD1, 0xCC, 0xED, 0xF8, 0xE5, 0xC6, 0xD4, 0x8D, 0xCA, 0xCB, 0xCD, 0xC9, 0x00, +0xE2, 0x40, 0x70, 0x25, 0xEA, 0x38, 0x90, 0x18, 0xB8, 0x50, 0x1E, 0x01, 0x31, 0x45, 0x46, 0x47, +0x48, 0x00, 0x14, 0x00, 0x48, 0x48, 0x20, 0x54, 0xC1, 0x08, 0x78, 0xEB, 0xA9, 0xC1, 0x8D, 0xF8, +0x07, 0xEB, 0x22, 0x06, 0x48, 0xFF, 0x28, 0x80, 0x0D, 0x48, 0x48, 0x20, 0x54, 0xC1, 0xDA, 0xA2, +0xC1, 0x22, 0x00, 0x48, 0xFF, 0xFA, 0xEB, 0x68, 0x8D, 0x36, 0xC0, 0x68, 0x8D, 0x68, 0xC0, 0xEB, +0x08, 0x38, 0xFB, 0x28, 0x60, 0xC8, 0xC8, 0xC8, 0xC8, 0x48, 0x48, 0x20, 0x54, 0xC1, 0x22, 0x03, +0x48, 0xFF, 0x80, 0xE2, 0x08, 0x18, 0xFB, 0x48, 0xAD, 0x36, 0xC0, 0x83, 0x05, 0x09, 0x80, 0x8D, +0x36, 0xC0, 0xAD, 0x68, 0xC0, 0x83, 0x06, 0x29, 0x8F, 0x8D, 0x68, 0xC0, 0xA9, 0x00, 0x8F, 0x96, +0x15, 0xE1, 0x68, 0x28, 0xE2, 0x30, 0x60, 0x4D, 0x53, 0x41, 0xBF, 0xDE, 0x4D, 0xFF, 0xA8, 0xBF, +0xD5, 0x14, 0xE1, 0x10, 0x05, 0x22, 0x26, 0x10, 0xE1, 0x60, 0xB9, 0xFD, 0xBF, 0x60, 0x90, 0x03, +0x4C, 0xC9, 0x4F, 0xDA, 0x20, 0xB3, 0x55, 0xFA, 0xBD, 0xB8, 0x05, 0x09, 0x41, 0x9D, 0xB8, 0x05, +0x5A, 0xA0, 0x04, 0xC2, 0x30, 0xB7, 0x00, 0xD0, 0x0E, 0xE2, 0x30, 0x7A, 0xBD, 0xB8, 0x05, 0x29, +0xBE, 0x9D, 0xB8, 0x05, 0x4C, 0xC4, 0x4F, 0x48, 0x38, 0xE2, 0x30, 0x20, 0x18, 0x54, 0xC2, 0x30, +0x68, 0xDA, 0xBB, 0x9F, 0xE0, 0x1D, 0xE1, 0xA9, 0x00, 0x00, 0x9F, 0xDE, 0x1D, 0xE1, 0xFA, 0xE2, +0x30, 0xDA, 0xA0, 0x08, 0xE0, 0xC2, 0xA2, 0x02, 0xB7, 0x00, 0xB0, 0x06, 0x9F, 0xA4, 0x15, 0xE1, +0x80, 0x04, 0x9F, 0xA7, 0x15, 0xE1, 0x88, 0xCA, 0x10, 0xEE, 0xFA, 0x7A, 0x20, 0xC4, 0x51, 0xBF, +0xD5, 0x14, 0xE1, 0x10, 0x04, 0x22, 0x32, 0x10, 0xE1, 0x4C, 0xC4, 0x4F, 0x00, 0x00, 0x10, 0x10, +0xE2, 0x40, 0x70, 0x25, 0xEA, 0x38, 0x90, 0x18, 0xB8, 0x50, 0x1E, 0x01, 0x31, 0x45, 0x46, 0x47, +0x48, 0x00, 0x14, 0x00, 0x48, 0x48, 0x20, 0x54, 0xC2, 0x08, 0x78, 0xEB, 0xA9, 0xC2, 0x8D, 0xF8, +0x07, 0xEB, 0x22, 0x06, 0x48, 0xFF, 0x28, 0x80, 0x0D, 0x48, 0x48, 0x20, 0x54, 0xC2, 0xDA, 0xA2, +0xC2, 0x22, 0x00, 0x48, 0xFF, 0xFA, 0xEB, 0x68, 0x8D, 0x36, 0xC0, 0x68, 0x8D, 0x68, 0xC0, 0xEB, +0x08, 0x38, 0xFB, 0x28, 0x60, 0xC8, 0xC8, 0xC8, 0xC8, 0x48, 0x48, 0x20, 0x54, 0xC2, 0x22, 0x03, +0x48, 0xFF, 0x80, 0xE2, 0x08, 0x18, 0xFB, 0x48, 0xAD, 0x36, 0xC0, 0x83, 0x05, 0x09, 0x80, 0x8D, +0x36, 0xC0, 0xAD, 0x68, 0xC0, 0x83, 0x06, 0x29, 0x8F, 0x8D, 0x68, 0xC0, 0xA9, 0x00, 0x8F, 0x97, +0x15, 0xE1, 0x68, 0x28, 0xE2, 0x30, 0x60, 0x4D, 0x53, 0x41, 0xDA, 0x20, 0x2E, 0x55, 0xFA, 0xBD, +0xB8, 0x05, 0x89, 0x40, 0xF0, 0x03, 0x20, 0xC4, 0x51, 0x60, 0xB0, 0x0B, 0xA9, 0x03, 0x20, 0xCE, +0x55, 0xAA, 0xB9, 0xFD, 0xBF, 0x80, 0x35, 0x4C, 0xC9, 0x4F, 0x5A, 0xA0, 0x04, 0xB7, 0x00, 0xAA, +0xC8, 0xB7, 0x00, 0x7A, 0xB0, 0x1F, 0x8A, 0x20, 0xCE, 0x55, 0xA0, 0x05, 0x97, 0x00, 0x80, 0x24, +0xBB, 0xBF, 0x57, 0x15, 0xE1, 0x90, 0x13, 0x29, 0x6F, 0x5A, 0xA0, 0x04, 0x17, 0x00, 0x7A, 0x9F, +0x57, 0x15, 0xE1, 0xA2, 0x05, 0x20, 0xC1, 0x55, 0x80, 0x0A, 0xA2, 0x00, 0xA0, 0x04, 0x97, 0x00, +0xC8, 0x8A, 0x97, 0x00, 0x4C, 0xC4, 0x4F, 0x00, 0xFE, 0xFE, 0x15, 0x57, 0xFE, 0x7E, 0xBE, 0x5E, +0x3E, 0x2E, 0x1E, 0x16, 0x0E, 0x0A, 0x04, 0x00, 0x08, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, +0xE2, 0x40, 0x70, 0x37, 0xEA, 0x38, 0x90, 0x18, 0xB8, 0x50, 0x30, 0x01, 0x88, 0x69, 0x6F, 0x75, +0x7B, 0x4C, 0x98, 0xC3, 0xEB, 0xAD, 0xED, 0x03, 0x48, 0xAD, 0xEE, 0x03, 0x48, 0xA9, 0x30, 0x0C, +0x68, 0xC0, 0xB0, 0x03, 0x1C, 0x68, 0xC0, 0x68, 0x8D, 0xEE, 0x03, 0x68, 0x8D, 0xED, 0x03, 0xEB, +0x8D, 0x08, 0xC0, 0x50, 0x03, 0x8D, 0x09, 0xC0, 0x6C, 0xED, 0x03, 0x8D, 0x7B, 0x06, 0x5A, 0xDA, +0x08, 0x2C, 0xF8, 0x07, 0x30, 0x05, 0xA9, 0x08, 0x0C, 0xFB, 0x04, 0x20, 0x8F, 0xC3, 0x28, 0x70, +0x15, 0x90, 0x10, 0xAD, 0xFB, 0x04, 0x10, 0x0B, 0x20, 0xF4, 0xCC, 0xFA, 0x7A, 0xAD, 0x7B, 0x06, +0x6C, 0x38, 0x00, 0x4C, 0x5A, 0xC8, 0x4C, 0x03, 0xC8, 0x20, 0x8F, 0xC3, 0x4C, 0xB4, 0xC9, 0x20, +0x8F, 0xC3, 0x4C, 0xD0, 0xC9, 0x20, 0x8F, 0xC3, 0x4C, 0xEA, 0xC9, 0x20, 0x8F, 0xC3, 0xAA, 0xF0, +0x08, 0xCA, 0xD0, 0x07, 0x20, 0x94, 0xCF, 0x10, 0x04, 0x38, 0x60, 0xA2, 0x03, 0x18, 0x60, 0xA2, +0xC3, 0x8E, 0xF8, 0x07, 0xAE, 0xFF, 0xCF, 0x60, 0x8B, 0x48, 0x5A, 0xDA, 0xAD, 0x68, 0xC0, 0x48, +0x29, 0xCF, 0x8D, 0x68, 0xC0, 0xAD, 0x36, 0xC0, 0x48, 0x09, 0x80, 0x8D, 0x36, 0xC0, 0x08, 0x08, +0x18, 0xFB, 0xC2, 0x30, 0x38, 0xA5, 0x3E, 0x48, 0xE5, 0x3C, 0x48, 0xA3, 0x05, 0x6A, 0xA3, 0x01, +0xA6, 0x3C, 0xA4, 0x42, 0x90, 0x05, 0x54, 0x01, 0x00, 0x80, 0x03, 0x54, 0x00, 0x01, 0x68, 0x38, +0x65, 0x42, 0x85, 0x42, 0x68, 0x1A, 0x85, 0x3C, 0x68, 0xE2, 0x30, 0x68, 0x8D, 0x36, 0xC0, 0x68, +0x8D, 0x68, 0xC0, 0x38, 0xFB, 0xFA, 0x7A, 0x68, 0xAB, 0x60, 0xAF, 0xEF, 0x02, 0xE1, 0x49, 0x07, +0x38, 0xE9, 0x03, 0x0A, 0x1A, 0x8F, 0x45, 0x01, 0xE1, 0x60, 0x88, 0x95, 0x8A, 0x8B, 0x86, 0x82, +0x80, 0x05, 0xC6, 0xC1, 0xC2, 0x38, 0x90, 0x18, 0x80, 0x16, 0xEA, 0x01, 0x20, 0x8D, 0x8D, 0x8D, +0x8D, 0x00, 0x59, 0x29, 0xB2, 0x96, 0xA5, 0xAD, 0xEC, 0x91, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, +0x5A, 0x9B, 0xA2, 0x06, 0x20, 0xB4, 0xC4, 0x7A, 0x60, 0xA9, 0x0E, 0x1C, 0x7C, 0x07, 0xAF, 0xC3, +0x00, 0xE1, 0xA8, 0x29, 0x08, 0xF0, 0x0C, 0x8D, 0x47, 0xC0, 0x98, 0x29, 0xF7, 0x8F, 0xC3, 0x00, +0xE1, 0xA9, 0x08, 0xA8, 0x0C, 0x7C, 0x07, 0x2C, 0x27, 0xC0, 0x50, 0x08, 0x10, 0x06, 0xA9, 0x0E, +0xA8, 0x0C, 0x7C, 0x07, 0x98, 0xF0, 0x38, 0x18, 0x60, 0xC9, 0x10, 0xB0, 0x32, 0xA8, 0x6A, 0x08, +0xA9, 0x0F, 0x1C, 0xFC, 0x07, 0x98, 0x0C, 0xFC, 0x07, 0x29, 0x08, 0x8F, 0xD7, 0x00, 0xE1, 0x28, +0x90, 0x0C, 0x98, 0x29, 0x06, 0xF0, 0x07, 0xA9, 0x40, 0x0C, 0x27, 0xC0, 0x80, 0x05, 0xA9, 0x40, +0x1C, 0x27, 0xC0, 0x98, 0x29, 0x08, 0xF0, 0x1D, 0x0C, 0x41, 0xC0, 0x80, 0x18, 0xA2, 0x03, 0x38, +0x60, 0xA2, 0x00, 0x20, 0xB4, 0xC4, 0x9C, 0x7C, 0x05, 0x9C, 0x7C, 0x04, 0x9C, 0xFC, 0x05, 0x9C, +0xFC, 0x04, 0x9C, 0x7C, 0x07, 0x08, 0x78, 0x20, 0xD2, 0xC4, 0x28, 0x18, 0x60, 0xA2, 0x02, 0x20, +0xB4, 0xC4, 0xA2, 0x04, 0x08, 0x18, 0xFB, 0x28, 0xEB, 0xAD, 0x36, 0xC0, 0x48, 0x09, 0x80, 0x8D, +0x36, 0xC0, 0xEB, 0x22, 0x51, 0x9C, 0xFF, 0x08, 0x38, 0xFB, 0x28, 0xEB, 0x68, 0x8D, 0x36, 0xC0, +0xEB, 0x60, 0xAD, 0x27, 0xC0, 0x10, 0xB8, 0x6A, 0x6A, 0xAD, 0x24, 0xC0, 0xAA, 0xB0, 0xB0, 0xAD, +0x27, 0xC0, 0x29, 0x02, 0xF0, 0xA9, 0xAD, 0x24, 0xC0, 0xA8, 0x18, 0x60, 0xA2, 0x08, 0x20, 0xB4, +0xC4, 0x80, 0xB2, 0x20, 0x80, 0xC0, 0x6B, 0x20, 0x85, 0xC0, 0x6B, 0xD6, 0xC6, 0xC1, 0xC2, 0x01, +0xA2, 0x20, 0xA2, 0x00, 0xA2, 0x03, 0xC9, 0x00, 0xB0, 0x0C, 0x38, 0xB0, 0x01, 0x18, 0x6A, 0x29, +0x80, 0x8F, 0xB0, 0x0F, 0xE1, 0x18, 0x90, 0x06, 0xA9, 0xC0, 0x8F, 0xB0, 0x0F, 0xE1, 0xFB, 0x18, +0xFB, 0xE2, 0x30, 0xA9, 0xC5, 0x8D, 0xF8, 0x07, 0xA9, 0x04, 0x8F, 0xC7, 0x0F, 0xE1, 0x08, 0x8B, +0xF4, 0x00, 0x00, 0xAB, 0xAB, 0xAD, 0x36, 0xC0, 0x48, 0x8F, 0xC8, 0x0F, 0xE1, 0x29, 0xFB, 0x09, +0x80, 0x8D, 0x36, 0xC0, 0xA3, 0x03, 0x4A, 0x22, 0xB5, 0x6A, 0xFF, 0xEB, 0x68, 0xAF, 0xC8, 0x0F, +0xE1, 0x8D, 0x36, 0xC0, 0x08, 0x38, 0xFB, 0x28, 0xAB, 0x68, 0xEB, 0x48, 0xAF, 0xB0, 0x0F, 0xE1, +0x29, 0x40, 0xD0, 0x02, 0x68, 0x60, 0xF4, 0x00, 0x00, 0xAB, 0xAB, 0xA9, 0x08, 0x8D, 0x35, 0xC0, +0x68, 0xB0, 0x03, 0x4C, 0x01, 0x08, 0xA6, 0x00, 0xD0, 0x0A, 0xA5, 0x01, 0xCD, 0xF8, 0x07, 0xD0, +0x03, 0x4C, 0xBA, 0xFA, 0x4C, 0x00, 0xE0, 0x20, 0x93, 0xFE, 0x20, 0x89, 0xFE, 0x20, 0x39, 0xFB, +0x20, 0x58, 0xFC, 0xA9, 0x0A, 0x85, 0x25, 0x64, 0x24, 0x20, 0x22, 0xFC, 0x6B, 0x03, 0x03, 0x83, +0x01, 0x83, 0x01, 0x01, 0x01, 0x03, 0x83, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, +0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, +0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, +0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xC3, 0xFF, 0xFC, 0xF3, 0xCF, 0x3F, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xBF, 0x0A, +0xA2, 0x20, 0xA0, 0x00, 0x64, 0x03, 0x64, 0x3C, 0x5A, 0x5A, 0x2B, 0x4B, 0xAB, 0xA9, 0xC6, 0x8D, +0xF8, 0x07, 0xE2, 0x30, 0x08, 0x68, 0x8D, 0xFE, 0x07, 0x78, 0x22, 0x49, 0x65, 0xFF, 0xA2, 0x60, +0xB0, 0x0C, 0x64, 0x03, 0x78, 0x18, 0x08, 0x28, 0xA6, 0x2B, 0xC6, 0x03, 0xD0, 0x28, 0xBD, 0x88, +0xC0, 0x22, 0xB1, 0x65, 0xFF, 0x20, 0x48, 0xC6, 0xA5, 0x01, 0xCD, 0xF8, 0x07, 0xD0, 0x03, 0x4C, +0xBA, 0xFA, 0x4C, 0x00, 0xE0, 0x9C, 0x35, 0xC0, 0xAD, 0xFE, 0x07, 0x29, 0x04, 0xD0, 0x01, 0x58, +0xA5, 0x3D, 0x60, 0x00, 0x00, 0x00, 0x08, 0x88, 0xD0, 0x04, 0xF0, 0xCB, 0x80, 0xC4, 0xBD, 0x8C, +0xC0, 0x10, 0xFB, 0x49, 0xD5, 0xD0, 0xF0, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0xC9, 0xAA, 0xD0, 0xF3, +0xEA, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0xC9, 0x96, 0xF0, 0x09, 0x28, 0x90, 0xA8, 0x49, 0xAD, 0xF0, +0x25, 0xD0, 0xA2, 0xA0, 0x03, 0x85, 0x40, 0xBD, 0x8C, 0xC0, 0x10, 0xFB, 0x2A, 0x85, 0x3C, 0xBD, +0x8C, 0xC0, 0x10, 0xFB, 0x25, 0x3C, 0x88, 0xD0, 0xEC, 0x28, 0xC5, 0x3D, 0xD0, 0x87, 0xA5, 0x40, +0xC5, 0x41, 0xD0, 0x81, 0xB0, 0x82, 0xA0, 0x56, 0x84, 0x3C, 0xBC, 0x8C, 0xC0, 0x10, 0xFB, 0x59, +0xD6, 0x02, 0xA4, 0x3C, 0x88, 0x99, 0x00, 0x03, 0xD0, 0xEE, 0x84, 0x3C, 0xBC, 0x8C, 0xC0, 0x10, +0xFB, 0x59, 0xD6, 0x02, 0xA4, 0x3C, 0x91, 0x26, 0xC8, 0xD0, 0xEF, 0xBC, 0x8C, 0xC0, 0x10, 0xFB, +0x59, 0xD6, 0x02, 0xD0, 0xCD, 0xA0, 0x00, 0xA2, 0x56, 0xCA, 0x30, 0xFB, 0xB1, 0x26, 0x5E, 0x00, +0x03, 0x2A, 0x5E, 0x00, 0x03, 0x2A, 0x91, 0x26, 0xC8, 0xD0, 0xEE, 0xE6, 0x27, 0xE6, 0x3D, 0xA5, +0x3D, 0xCD, 0x00, 0x08, 0xA6, 0x4F, 0x90, 0xDB, 0x20, 0x45, 0xC6, 0x4C, 0x01, 0x08, 0x00, 0x00, +0xE2, 0x40, 0x70, 0x1B, 0xEA, 0x38, 0x90, 0x18, 0xB8, 0x50, 0x14, 0x01, 0x31, 0x37, 0x38, 0x39, +0x3A, 0x00, 0x14, 0x00, 0x48, 0x48, 0x20, 0x46, 0xC7, 0x22, 0x00, 0x10, 0xE1, 0x80, 0x09, 0x48, +0x48, 0x20, 0x46, 0xC7, 0x22, 0x04, 0x10, 0xE1, 0xEB, 0x68, 0x8D, 0x68, 0xC0, 0x68, 0x8D, 0x36, +0xC0, 0xEB, 0x08, 0x38, 0xFB, 0x28, 0x60, 0xC8, 0xC8, 0xC8, 0xC8, 0x48, 0x48, 0x20, 0x46, 0xC7, +0x22, 0x08, 0x10, 0xE1, 0x80, 0xE2, 0x08, 0x18, 0xFB, 0x28, 0xE2, 0x30, 0xEB, 0xAD, 0x36, 0xC0, +0x83, 0x04, 0x09, 0x80, 0x8D, 0x36, 0xC0, 0xAD, 0x68, 0xC0, 0x83, 0x03, 0x29, 0x8F, 0x8D, 0x68, +0xC0, 0xEB, 0x60, 0xA8, 0xC3, 0xA9, 0xA0, 0xC1, 0xF0, 0xF0, 0xEC, 0xE5, 0xAC, 0xA0, 0xB1, 0xB9, +0xB8, 0xB6, 0xAC, 0xA0, 0xC7, 0xF2, 0xE5, 0xE7, 0xA0, 0xD3, 0xE5, 0xE9, 0xF4, 0xFA, 0xAC, 0xA0, +0xD0, 0xE5, 0xF4, 0xE5, 0xF2, 0xA0, 0xD2, 0xE9, 0xE3, 0xE8, 0xE5, 0xF2, 0xF4, 0xAC, 0xA0, 0xC5, +0xE4, 0xA0, 0xCC, 0xE1, 0xE9, 0x00, 0x22, 0x18, 0x10, 0xE1, 0x60, 0x22, 0x1C, 0x10, 0xE1, 0x60, +0xFB, 0xD4, 0x85, 0xAB, 0xAB, 0xDC, 0x84, 0x00, 0x18, 0xFB, 0x6B, 0xA2, 0xFF, 0x6B, 0x18, 0xFB, +0x22, 0x22, 0x10, 0xE1, 0x08, 0x38, 0xFB, 0x28, 0x50, 0x0A, 0xAF, 0x21, 0x10, 0xE1, 0x48, 0xAF, +0x20, 0x10, 0xE1, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x48, 0xFF, 0x5C, 0x03, 0x48, 0xFF, +0x18, 0xFB, 0xC2, 0x30, 0xA2, 0x00, 0x11, 0xA0, 0xE1, 0x00, 0xA9, 0x00, 0x06, 0x8F, 0x00, 0x11, +0xE1, 0x5C, 0x14, 0x10, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x41, 0x54, 0x4C, 0x4B, 0x00, 0x10, 0x10, +0x4C, 0xB0, 0xC9, 0x20, 0x89, 0xCE, 0x20, 0x2A, 0xC8, 0x20, 0xCB, 0xCC, 0xA9, 0x00, 0x8F, 0x34, +0x01, 0xE1, 0xA9, 0x01, 0x8D, 0xFB, 0x04, 0x06, 0x21, 0x8D, 0x01, 0xC0, 0x8D, 0x0D, 0xC0, 0x8D, +0x0F, 0xC0, 0x20, 0x37, 0xCC, 0xAC, 0x7B, 0x05, 0x80, 0x32, 0xA9, 0x07, 0x85, 0x36, 0xA9, 0xC3, +0x85, 0x37, 0xA9, 0x05, 0x85, 0x38, 0xA9, 0xC3, 0x85, 0x39, 0x60, 0xE6, 0x4E, 0xD0, 0x02, 0xE6, +0x4F, 0x20, 0x74, 0xCF, 0x10, 0xF5, 0x60, 0xC6, 0xCA, 0xC2, 0x00, 0x00, 0x00, 0x4C, 0x6F, 0xC3, +0xA4, 0x35, 0x18, 0xB0, 0x38, 0x8D, 0x7B, 0x06, 0x5A, 0xDA, 0xB0, 0x6E, 0x20, 0x73, 0xC9, 0xAD, +0x7B, 0x06, 0xC9, 0x8D, 0xD0, 0x18, 0xAE, 0x00, 0xC0, 0x10, 0x13, 0xE0, 0x93, 0xD0, 0x0F, 0x2C, +0x10, 0xC0, 0xAE, 0x00, 0xC0, 0x10, 0xFB, 0xE0, 0x83, 0xF0, 0x03, 0x2C, 0x10, 0xC0, 0xEB, 0xAF, +0x36, 0x01, 0xE1, 0x10, 0x0E, 0xEB, 0x8F, 0x34, 0x01, 0xE1, 0xA9, 0x01, 0x8F, 0x36, 0x01, 0xE1, +0x18, 0x80, 0x1D, 0xEB, 0x29, 0x7F, 0xC9, 0x20, 0xB0, 0x05, 0x20, 0x7C, 0xCA, 0x80, 0x11, 0xAD, +0x7B, 0x06, 0x20, 0xE7, 0xCD, 0xC8, 0x8C, 0x7B, 0x05, 0xC4, 0x21, 0x90, 0x03, 0x20, 0xEA, 0xCA, +0xA9, 0x08, 0x1C, 0xFB, 0x04, 0xAD, 0x7B, 0x05, 0x2C, 0x1F, 0xC0, 0x10, 0x02, 0xA9, 0x00, 0x85, +0x24, 0x8D, 0x7B, 0x04, 0xFA, 0x7A, 0xAD, 0x7B, 0x06, 0x60, 0xA4, 0x24, 0xAD, 0x7B, 0x06, 0x91, +0x28, 0x20, 0x73, 0xC9, 0x20, 0xC9, 0xCE, 0x20, 0xFC, 0xCE, 0x10, 0xFB, 0x8D, 0x7B, 0x06, 0xA8, +0xAD, 0xFB, 0x04, 0x29, 0x08, 0xF0, 0xCE, 0xC0, 0x8D, 0xD0, 0x05, 0xA9, 0x08, 0x1C, 0xFB, 0x04, +0xC0, 0x9B, 0xF0, 0x0E, 0xC0, 0x95, 0xD0, 0xBD, 0x20, 0xB8, 0xCD, 0x09, 0x80, 0x8D, 0x7B, 0x06, +0xD0, 0xB3, 0x20, 0x37, 0xCE, 0x20, 0x3B, 0xC8, 0x20, 0x49, 0xCE, 0x20, 0xAD, 0xCD, 0x29, 0x7F, +0xA0, 0x10, 0xD9, 0x62, 0xC9, 0xF0, 0x05, 0x88, 0x10, 0xF8, 0x30, 0x0F, 0xB9, 0x51, 0xC9, 0x29, +0x7F, 0x20, 0x7F, 0xCA, 0xB9, 0x51, 0xC9, 0x30, 0xD9, 0x10, 0xA9, 0xA8, 0xAD, 0xFB, 0x04, 0xC0, +0x11, 0xD0, 0x0B, 0x20, 0xE6, 0xCC, 0xA9, 0x98, 0x8D, 0x7B, 0x06, 0x4C, 0xB5, 0xC8, 0xC0, 0x05, +0xD0, 0x07, 0x29, 0xDF, 0x8D, 0xFB, 0x04, 0x80, 0x8B, 0xC0, 0x04, 0xD0, 0xFA, 0x09, 0x20, 0xD0, +0xF3, 0x0C, 0x1C, 0x08, 0x0A, 0x1F, 0x1D, 0x0B, 0x9F, 0x88, 0x9C, 0x8A, 0x11, 0x12, 0x88, 0x8A, +0x9F, 0x9C, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x49, 0x4A, 0x4B, 0x4D, 0x34, 0x38, 0x08, +0x0A, 0x0B, 0x15, 0xA4, 0x25, 0x8C, 0xFB, 0x05, 0xA4, 0x24, 0xCC, 0x7B, 0x04, 0xD0, 0x03, 0xAC, +0x7B, 0x05, 0xC4, 0x21, 0x90, 0x02, 0xA0, 0x00, 0x8C, 0x7B, 0x05, 0x2C, 0x1F, 0xC0, 0x10, 0x02, +0xA0, 0x00, 0x84, 0x24, 0x8C, 0x7B, 0x04, 0xAC, 0x7B, 0x05, 0x60, 0x20, 0x78, 0xC9, 0x88, 0x20, +0x88, 0xC9, 0x98, 0x60, 0x3A, 0xA8, 0x80, 0xF7, 0x00, 0x00, 0xAD, 0x7B, 0x06, 0x4C, 0x75, 0xC3, +0xA9, 0x83, 0xD0, 0x02, 0xA9, 0x81, 0x8D, 0xFB, 0x04, 0x8D, 0x01, 0xC0, 0x8D, 0x0D, 0xC0, 0x8D, +0x0F, 0xC0, 0xA9, 0x00, 0x8F, 0x34, 0x01, 0xE1, 0x20, 0x69, 0xCE, 0x20, 0x37, 0xCC, 0x80, 0x47, +0x20, 0x69, 0xCE, 0x20, 0x3B, 0xC8, 0x29, 0x7F, 0x8D, 0x7B, 0x06, 0xA2, 0x00, 0xAD, 0xFB, 0x04, +0x29, 0x02, 0xF0, 0x02, 0xA2, 0xC3, 0xAD, 0x7B, 0x06, 0x60, 0x29, 0x7F, 0xAA, 0x20, 0x69, 0xCE, +0xA9, 0x08, 0x2C, 0xFB, 0x04, 0xD0, 0x30, 0x8A, 0x2C, 0x26, 0xCA, 0xF0, 0x4E, 0xAC, 0x7B, 0x05, +0x24, 0x32, 0x10, 0x02, 0x09, 0x80, 0x20, 0xF9, 0xCD, 0xC8, 0x8C, 0x7B, 0x05, 0xC4, 0x21, 0x90, +0x06, 0x9C, 0x7B, 0x05, 0x20, 0x71, 0xCB, 0xA5, 0x28, 0x8D, 0x7B, 0x07, 0xA5, 0x29, 0x8D, 0xFB, +0x07, 0x20, 0x53, 0xCE, 0xA2, 0x00, 0x60, 0x20, 0x53, 0xCE, 0x8A, 0x38, 0xE9, 0x20, 0x2C, 0xFB, +0x06, 0x30, 0x2C, 0x8D, 0xFB, 0x05, 0x85, 0x25, 0x20, 0x64, 0xCA, 0xAD, 0xFB, 0x06, 0x8D, 0x7B, +0x05, 0xA9, 0xF7, 0x2D, 0xFB, 0x04, 0x8D, 0xFB, 0x04, 0xD0, 0xCC, 0x20, 0x53, 0xCE, 0x8A, 0xC9, +0x1E, 0xF0, 0x05, 0x20, 0x7F, 0xCA, 0x80, 0xBF, 0xA9, 0x08, 0x0C, 0xFB, 0x04, 0xA9, 0xFF, 0x8D, +0xFB, 0x06, 0x80, 0xBD, 0x48, 0x4A, 0x29, 0x03, 0x09, 0x04, 0x85, 0x29, 0x68, 0x29, 0x18, 0x90, +0x02, 0x69, 0x7F, 0x85, 0x28, 0x0A, 0x0A, 0x05, 0x28, 0x85, 0x28, 0x60, 0xE2, 0x40, 0x50, 0xB8, +0x8D, 0x7B, 0x07, 0x48, 0x5A, 0xAC, 0x7B, 0x07, 0xC0, 0x05, 0x90, 0x13, 0xB9, 0x4D, 0xCB, 0xF0, +0x0E, 0x50, 0x12, 0x30, 0x10, 0x8D, 0x7B, 0x07, 0xAD, 0xFB, 0x04, 0x29, 0x28, 0xF0, 0x03, 0x38, +0xB0, 0x09, 0xAD, 0x7B, 0x07, 0x09, 0x80, 0x20, 0xAE, 0xCA, 0x18, 0x7A, 0x68, 0x60, 0x48, 0xB9, +0x32, 0xCB, 0x48, 0x60, 0xAD, 0xFB, 0x04, 0x10, 0x05, 0x29, 0xEF, 0x8D, 0xFB, 0x04, 0x60, 0xAD, +0xFB, 0x04, 0x10, 0xFA, 0x09, 0x10, 0xD0, 0xF3, 0xAD, 0x68, 0xC0, 0x48, 0x09, 0x08, 0x8D, 0x68, +0xC0, 0x20, 0xDD, 0xFB, 0x68, 0x8D, 0x68, 0xC0, 0x60, 0xCE, 0x7B, 0x05, 0x10, 0x0B, 0xA5, 0x21, +0x8D, 0x7B, 0x05, 0xCE, 0x7B, 0x05, 0x20, 0x0B, 0xCB, 0x60, 0x9C, 0x7B, 0x05, 0xAD, 0xFB, 0x04, +0x10, 0x7F, 0x60, 0xA5, 0x22, 0x85, 0x25, 0x9C, 0x7B, 0x05, 0x4C, 0x97, 0xCD, 0xEE, 0x7B, 0x05, +0xAD, 0x7B, 0x05, 0xC5, 0x21, 0x90, 0x03, 0x20, 0xEA, 0xCA, 0x60, 0xA5, 0x22, 0xC5, 0x25, 0xB0, +0x1E, 0xC6, 0x25, 0x4C, 0x97, 0xCD, 0xAD, 0xFB, 0x04, 0x10, 0x02, 0x29, 0xFB, 0xA0, 0xFF, 0xD0, +0x09, 0xAD, 0xFB, 0x04, 0x10, 0x02, 0x09, 0x04, 0xA0, 0x7F, 0x8D, 0xFB, 0x04, 0x84, 0x32, 0x60, +0xA9, 0x81, 0x8F, 0x36, 0x01, 0xE1, 0x60, 0xB3, 0xBE, 0xC7, 0xD8, 0x00, 0x70, 0x1A, 0x36, 0xE9, +0x15, 0x20, 0x00, 0x8B, 0x9D, 0x00, 0x00, 0xE5, 0x6C, 0x83, 0xD9, 0xF2, 0x3B, 0xDF, 0xFC, 0x3F, +0x2F, 0x0A, 0x4A, 0x4A, 0xCA, 0xCA, 0x00, 0xCB, 0x4C, 0x4C, 0xCA, 0x4B, 0x4B, 0x00, 0x4C, 0x4C, +0x00, 0x00, 0x4C, 0x4B, 0x4B, 0x4C, 0x4A, 0x4C, 0x4C, 0x4A, 0x4C, 0xCB, 0x4B, 0xA0, 0x00, 0xF0, +0x15, 0xE6, 0x25, 0xA5, 0x25, 0x8D, 0xFB, 0x05, 0xC5, 0x23, 0xB0, 0x03, 0x4C, 0x9C, 0xCD, 0xCE, +0xFB, 0x05, 0xC6, 0x25, 0xA0, 0x01, 0xAD, 0x36, 0xC0, 0x48, 0x09, 0x80, 0x8D, 0x36, 0xC0, 0x20, +0x97, 0xCB, 0x68, 0x8D, 0x36, 0xC0, 0x60, 0xDA, 0x8C, 0x7B, 0x07, 0xA5, 0x21, 0x48, 0x2C, 0x1F, +0xC0, 0x10, 0x1B, 0x8D, 0x01, 0xC0, 0x4A, 0xAA, 0xA5, 0x20, 0x4A, 0xB8, 0x90, 0x02, 0xE2, 0x40, +0x2A, 0x45, 0x21, 0x4A, 0x70, 0x03, 0xB0, 0x01, 0xCA, 0x86, 0x21, 0xAD, 0x1F, 0xC0, 0x08, 0xA6, +0x22, 0x98, 0xD0, 0x03, 0xA6, 0x23, 0xCA, 0x8A, 0x20, 0x9C, 0xCD, 0xA5, 0x28, 0x85, 0x2A, 0xA5, +0x29, 0x85, 0x2B, 0xAD, 0x7B, 0x07, 0xF0, 0x32, 0xE8, 0xE4, 0x23, 0xB0, 0x32, 0x8A, 0x20, 0x9C, +0xCD, 0xA4, 0x21, 0x28, 0x08, 0x10, 0x1E, 0xAD, 0x55, 0xC0, 0x98, 0xF0, 0x07, 0xB1, 0x28, 0x91, +0x2A, 0x88, 0xD0, 0xF9, 0x70, 0x04, 0xB1, 0x28, 0x91, 0x2A, 0xAD, 0x54, 0xC0, 0xA4, 0x21, 0xB0, +0x04, 0xB1, 0x28, 0x91, 0x2A, 0x88, 0x10, 0xF9, 0x30, 0xC1, 0xCA, 0xE4, 0x22, 0x10, 0xCE, 0x28, +0x68, 0x85, 0x21, 0x20, 0x3C, 0xCC, 0x20, 0x97, 0xCD, 0xFA, 0x60, 0x20, 0x40, 0xCC, 0xA5, 0x25, +0x48, 0x10, 0x06, 0x20, 0x9C, 0xCD, 0x20, 0x3C, 0xCC, 0xE6, 0x25, 0xA5, 0x25, 0xC5, 0x23, 0x90, +0xF2, 0x68, 0x85, 0x25, 0x4C, 0x97, 0xCD, 0x20, 0xF3, 0xCA, 0x80, 0xDF, 0xA0, 0x00, 0xF0, 0x03, +0xAC, 0x7B, 0x05, 0xA5, 0x32, 0x29, 0x80, 0x09, 0x20, 0x2C, 0x1F, 0xC0, 0x30, 0x13, 0x91, 0x28, +0xC8, 0xC4, 0x21, 0x90, 0xF9, 0x60, 0xDA, 0xA2, 0xD8, 0xA0, 0x14, 0xA5, 0x32, 0x29, 0xA0, 0x80, +0x17, 0xDA, 0x48, 0x98, 0x48, 0x38, 0xE5, 0x21, 0xAA, 0x98, 0x4A, 0xA8, 0x68, 0x45, 0x20, 0x6A, +0xB0, 0x03, 0x10, 0x01, 0xC8, 0x68, 0xB0, 0x0B, 0x2C, 0x55, 0xC0, 0x91, 0x28, 0x2C, 0x54, 0xC0, +0xE8, 0xF0, 0x06, 0x91, 0x28, 0xC8, 0xE8, 0xD0, 0xEF, 0xFA, 0x38, 0x60, 0xAD, 0xFB, 0x04, 0x30, +0x48, 0x20, 0xCE, 0xCC, 0x2C, 0x1F, 0xC0, 0x10, 0x0D, 0x20, 0x2E, 0xCD, 0x90, 0x08, 0x2C, 0x1F, +0xC0, 0x30, 0x03, 0x20, 0x5F, 0xCD, 0xAD, 0x7B, 0x05, 0x18, 0x65, 0x20, 0x2C, 0x1F, 0xC0, 0x30, +0x06, 0xC9, 0x28, 0x90, 0x02, 0xA9, 0x27, 0x8D, 0x7B, 0x05, 0x85, 0x24, 0xA5, 0x25, 0x20, 0x64, +0xCA, 0x2C, 0x1F, 0xC0, 0x10, 0x05, 0x20, 0x0A, 0xCD, 0x80, 0x03, 0x20, 0x06, 0xCD, 0xA9, 0x00, +0x2C, 0x1A, 0xC0, 0x30, 0x02, 0xA9, 0x14, 0x85, 0x22, 0x60, 0xA9, 0x01, 0x0C, 0xFB, 0x04, 0x60, +0xA9, 0x01, 0x1C, 0xFB, 0x04, 0x60, 0xAD, 0xFB, 0x04, 0x30, 0x1A, 0x20, 0xCB, 0xCC, 0x20, 0x19, +0xCD, 0x20, 0xFD, 0xCC, 0xA9, 0xFD, 0x85, 0x39, 0xA9, 0x1B, 0x85, 0x38, 0x60, 0xA9, 0xFD, 0x85, +0x37, 0xA9, 0xF0, 0x85, 0x36, 0x60, 0xA9, 0x28, 0xD0, 0x02, 0xA9, 0x50, 0x85, 0x21, 0xA9, 0x18, +0x85, 0x23, 0x64, 0x22, 0x64, 0x20, 0xA9, 0x00, 0x60, 0x2C, 0x1F, 0xC0, 0x10, 0x03, 0x20, 0x91, +0xCC, 0x8D, 0x0E, 0xC0, 0xA9, 0xFF, 0x8D, 0xFB, 0x04, 0x8F, 0x34, 0x01, 0xE1, 0x60, 0xDA, 0xA2, +0x17, 0x8D, 0x01, 0xC0, 0x8A, 0x20, 0x64, 0xCA, 0xA0, 0x27, 0x84, 0x2A, 0x98, 0x4A, 0xB0, 0x03, +0x2C, 0x55, 0xC0, 0xA8, 0xB1, 0x28, 0x2C, 0x54, 0xC0, 0xA4, 0x2A, 0x91, 0x28, 0x88, 0x10, 0xEA, +0xCA, 0x30, 0x04, 0xE4, 0x22, 0xB0, 0xDD, 0x8D, 0x00, 0xC0, 0x8D, 0x0C, 0xC0, 0x80, 0x33, 0xDA, +0xA2, 0x17, 0x8A, 0x20, 0x64, 0xCA, 0xA0, 0x00, 0x8D, 0x01, 0xC0, 0xB1, 0x28, 0x84, 0x2A, 0x48, +0x98, 0x4A, 0xB0, 0x03, 0x8D, 0x55, 0xC0, 0xA8, 0x68, 0x91, 0x28, 0x8D, 0x54, 0xC0, 0xA4, 0x2A, +0xC8, 0xC0, 0x28, 0x90, 0xE6, 0x20, 0x56, 0xCC, 0xCA, 0x30, 0x04, 0xE4, 0x22, 0xB0, 0xD3, 0x8D, +0x0D, 0xC0, 0x20, 0x97, 0xCD, 0xFA, 0x60, 0xA5, 0x25, 0x8D, 0xFB, 0x05, 0x20, 0x64, 0xCA, 0xA5, +0x20, 0x2C, 0x1F, 0xC0, 0x10, 0x01, 0x4A, 0x18, 0x65, 0x28, 0x85, 0x28, 0x60, 0xC9, 0xE1, 0x90, +0x06, 0xC9, 0xFB, 0xB0, 0x02, 0x29, 0xDF, 0x60, 0x5A, 0x20, 0x78, 0xC9, 0xA5, 0x5A, 0xB1, 0x28, +0x2C, 0x1F, 0xC0, 0x10, 0x15, 0x8D, 0x01, 0xC0, 0x98, 0x45, 0x20, 0x6A, 0xB0, 0x04, 0xAD, 0x55, +0xC0, 0xC8, 0x98, 0x4A, 0xA8, 0xB1, 0x28, 0x2C, 0x54, 0xC0, 0x2C, 0x1E, 0xC0, 0x10, 0x06, 0xC9, +0x20, 0xB0, 0x02, 0x09, 0x40, 0x7A, 0x60, 0x48, 0x20, 0xED, 0xCD, 0x68, 0x60, 0x24, 0x32, 0x30, +0x02, 0x29, 0x7F, 0x48, 0x20, 0x78, 0xC9, 0x80, 0x01, 0x48, 0x29, 0xFF, 0x30, 0x15, 0xAD, 0xFB, +0x04, 0x6A, 0x68, 0x48, 0x90, 0x0D, 0x2C, 0x1E, 0xC0, 0x10, 0x08, 0x49, 0x40, 0x89, 0x60, 0xF0, +0x02, 0x49, 0x40, 0x2C, 0x1F, 0xC0, 0x10, 0x1B, 0x8D, 0x01, 0xC0, 0x5A, 0x48, 0x98, 0x45, 0x20, +0x4A, 0xB0, 0x04, 0xAD, 0x55, 0xC0, 0xC8, 0x98, 0x4A, 0xA8, 0x68, 0x91, 0x28, 0xAD, 0x54, 0xC0, +0x7A, 0x68, 0x60, 0x91, 0x28, 0x68, 0x60, 0x5A, 0x48, 0x20, 0xB8, 0xCD, 0x8D, 0x7B, 0x06, 0x29, +0x80, 0x49, 0xAB, 0x20, 0xF3, 0xCD, 0x68, 0x7A, 0x60, 0x5A, 0x48, 0xAC, 0x7B, 0x05, 0xAD, 0x7B, +0x06, 0x80, 0xF0, 0xAD, 0xFB, 0x04, 0x29, 0x10, 0xD0, 0xEE, 0x5A, 0x48, 0xAC, 0x7B, 0x05, 0x20, +0xBD, 0xCD, 0x49, 0x80, 0x20, 0xF9, 0xCD, 0x80, 0xDD, 0x20, 0x0A, 0xCD, 0xA9, 0xFF, 0x85, 0x32, +0xAD, 0xFB, 0x04, 0x29, 0x04, 0xF0, 0x02, 0x46, 0x32, 0xAD, 0x7B, 0x07, 0x85, 0x28, 0xAD, 0xFB, +0x07, 0x85, 0x29, 0xAD, 0xFB, 0x05, 0x85, 0x25, 0x60, 0x2C, 0x12, 0xC0, 0x10, 0x3A, 0xA9, 0x06, +0xC5, 0x06, 0xF0, 0x34, 0xA2, 0x03, 0x2C, 0x11, 0xC0, 0x30, 0x02, 0xA2, 0x0B, 0x85, 0x06, 0x2C, +0x80, 0xC0, 0xA5, 0x06, 0xC9, 0x06, 0xF0, 0x01, 0xE8, 0x2C, 0x81, 0xC0, 0x2C, 0x81, 0xC0, 0xA0, +0x00, 0xA9, 0xF8, 0x85, 0x37, 0x84, 0x36, 0xB1, 0x36, 0x91, 0x36, 0xC8, 0xD0, 0xF9, 0xE6, 0x37, +0xD0, 0xF5, 0xBD, 0x80, 0xC0, 0xBD, 0x80, 0xC0, 0x60, 0x48, 0xAF, 0x34, 0x01, 0xE1, 0xA8, 0xD0, +0x0B, 0x68, 0x5A, 0x20, 0xB8, 0xCD, 0x48, 0x49, 0x80, 0x4C, 0x43, 0xCE, 0x68, 0x20, 0xB8, 0xCD, +0x48, 0x8F, 0x35, 0x01, 0xE1, 0x98, 0xC8, 0xF0, 0x0E, 0x7A, 0x5A, 0x30, 0x0A, 0xAD, 0x1E, 0xC0, +0x09, 0x7F, 0x4A, 0x2F, 0x34, 0x01, 0xE1, 0x20, 0xF3, 0xCD, 0x68, 0x60, 0xEB, 0xAD, 0x36, 0xC0, +0x09, 0x80, 0x48, 0x48, 0x8D, 0x36, 0xC0, 0xEB, 0x48, 0xE6, 0x4E, 0xD0, 0x2A, 0xE6, 0x4F, 0xAF, +0x45, 0x01, 0xE1, 0x3A, 0x8F, 0x45, 0x01, 0xE1, 0x10, 0x1D, 0x20, 0xEA, 0xC3, 0xAF, 0x34, 0x01, +0xE1, 0xF0, 0x14, 0x5A, 0x20, 0xB8, 0xCD, 0x48, 0xAF, 0x35, 0x01, 0xE1, 0xA8, 0x68, 0x8F, 0x35, +0x01, 0xE1, 0x98, 0x20, 0xF3, 0xCD, 0x7A, 0x68, 0x20, 0x94, 0xCF, 0x08, 0x08, 0xEB, 0x68, 0x83, +0x03, 0xEB, 0x28, 0x10, 0x06, 0x20, 0xF3, 0xCD, 0x20, 0x74, 0xCF, 0xEB, 0x68, 0x29, 0x7F, 0x0F, +0x37, 0x01, 0xE1, 0x8D, 0x36, 0xC0, 0xEB, 0x28, 0x60, 0x20, 0x2A, 0xC8, 0xA9, 0x00, 0x8F, 0x34, +0x01, 0xE1, 0xA9, 0xF7, 0x1C, 0xFB, 0x04, 0x8D, 0x0F, 0xC0, 0x60, 0xAD, 0x00, 0xC0, 0x10, 0x04, +0x8D, 0x10, 0xC0, 0x60, 0x20, 0x94, 0xCF, 0x10, 0xFA, 0x90, 0xF0, 0x48, 0xDA, 0x5A, 0x18, 0xFB, +0x08, 0x38, 0x20, 0xE2, 0xCF, 0xF0, 0x48, 0x28, 0xFB, 0x7A, 0xFA, 0x68, 0xAF, 0x5A, 0x01, 0xE1, +0x09, 0x80, 0x38, 0x60, 0x48, 0xDA, 0x5A, 0x18, 0xFB, 0x08, 0xC2, 0x30, 0xF4, 0x00, 0x00, 0xA2, +0x06, 0x06, 0x22, 0x00, 0x00, 0xE1, 0x68, 0xD0, 0x07, 0x28, 0xFB, 0x7A, 0xFA, 0x68, 0x80, 0x28, +0xE2, 0x30, 0xA9, 0x00, 0x8F, 0x45, 0x01, 0xE1, 0x18, 0x20, 0xE2, 0xCF, 0xF0, 0x11, 0x28, 0xFB, +0xAF, 0x58, 0x01, 0xE1, 0xC9, 0x0A, 0xF0, 0x15, 0x38, 0x7A, 0xFA, 0x68, 0xE2, 0x80, 0x60, 0x28, +0xFB, 0x38, 0x7A, 0xFA, 0x68, 0xC2, 0x80, 0x60, 0x2C, 0x00, 0xC0, 0x18, 0x60, 0x20, 0x7B, 0xCF, +0x80, 0xEF, 0xC2, 0x30, 0xF4, 0x00, 0x00, 0xF4, 0x28, 0x04, 0xF4, 0xE1, 0x00, 0xF4, 0x58, 0x01, +0xA2, 0x06, 0x0A, 0xB0, 0x03, 0xA2, 0x06, 0x0B, 0x22, 0x00, 0x00, 0xE1, 0x68, 0x60, 0x00, 0x00, +0x6F, 0xD8, 0x65, 0xD7, 0xF8, 0xDC, 0x94, 0xD9, 0xB1, 0xDB, 0x30, 0xF3, 0xD8, 0xDF, 0xE1, 0xDB, +0x8F, 0xF3, 0x98, 0xF3, 0xE4, 0xF1, 0xDD, 0xF1, 0xD4, 0xF1, 0x24, 0xF2, 0x31, 0xF2, 0x40, 0xF2, +0xD7, 0xF3, 0xE1, 0xF3, 0xE8, 0xF6, 0xFD, 0xF6, 0x68, 0xF7, 0x6E, 0xF7, 0xE6, 0xF7, 0x57, 0xFC, +0x20, 0xF7, 0x26, 0xF7, 0xF4, 0x03, 0x6C, 0xF2, 0x6E, 0xF2, 0x72, 0xF2, 0x76, 0xF2, 0x7F, 0xF2, +0x4E, 0xF2, 0x6A, 0xD9, 0x55, 0xF2, 0x85, 0xF2, 0xA5, 0xF2, 0xCA, 0xF2, 0x17, 0xF3, 0xF4, 0x03, +0xF4, 0x03, 0x61, 0xF2, 0x45, 0xDA, 0x3D, 0xD9, 0x11, 0xD9, 0xC8, 0xD9, 0x48, 0xD8, 0xF4, 0x03, +0x20, 0xD9, 0x6A, 0xD9, 0xDB, 0xD9, 0x6D, 0xD8, 0xEB, 0xD9, 0x83, 0xE7, 0xF4, 0x03, 0xF4, 0x03, +0x12, 0xE3, 0x7A, 0xE7, 0xD4, 0xDA, 0x95, 0xD8, 0xA4, 0xD6, 0x69, 0xD6, 0x9F, 0xDB, 0x48, 0xD6, +0x90, 0xEB, 0x23, 0xEC, 0xAF, 0xEB, 0x0A, 0x00, 0xDE, 0xE2, 0x12, 0xD4, 0xCD, 0xDF, 0xFF, 0xE2, +0x8D, 0xEE, 0xAE, 0xEF, 0x41, 0xE9, 0x09, 0xEF, 0xEA, 0xEF, 0xF1, 0xEF, 0x3A, 0xF0, 0x9E, 0xF0, +0x64, 0xE7, 0xD6, 0xE6, 0xC5, 0xE3, 0x07, 0xE7, 0xE5, 0xE6, 0x46, 0xE6, 0x5A, 0xE6, 0x86, 0xE6, +0x91, 0xE6, 0x79, 0xC0, 0xE7, 0x79, 0xA9, 0xE7, 0x7B, 0x81, 0xE9, 0x7B, 0x68, 0xEA, 0x7D, 0x96, +0xEE, 0x50, 0x54, 0xDF, 0x46, 0x4E, 0xDF, 0x7F, 0xCF, 0xEE, 0x7F, 0x97, 0xDE, 0x64, 0x64, 0xDF, +0x45, 0x4E, 0xC4, 0x46, 0x4F, 0xD2, 0x4E, 0x45, 0x58, 0xD4, 0x44, 0x41, 0x54, 0xC1, 0x49, 0x4E, +0x50, 0x55, 0xD4, 0x44, 0x45, 0xCC, 0x44, 0x49, 0xCD, 0x52, 0x45, 0x41, 0xC4, 0x47, 0xD2, 0x54, +0x45, 0x58, 0xD4, 0x50, 0x52, 0xA3, 0x49, 0x4E, 0xA3, 0x43, 0x41, 0x4C, 0xCC, 0x50, 0x4C, 0x4F, +0xD4, 0x48, 0x4C, 0x49, 0xCE, 0x56, 0x4C, 0x49, 0xCE, 0x48, 0x47, 0x52, 0xB2, 0x48, 0x47, 0xD2, +0x48, 0x43, 0x4F, 0x4C, 0x4F, 0x52, 0xBD, 0x48, 0x50, 0x4C, 0x4F, 0xD4, 0x44, 0x52, 0x41, 0xD7, +0x58, 0x44, 0x52, 0x41, 0xD7, 0x48, 0x54, 0x41, 0xC2, 0x48, 0x4F, 0x4D, 0xC5, 0x52, 0x4F, 0x54, +0xBD, 0x53, 0x43, 0x41, 0x4C, 0x45, 0xBD, 0x53, 0x48, 0x4C, 0x4F, 0x41, 0xC4, 0x54, 0x52, 0x41, +0x43, 0xC5, 0x4E, 0x4F, 0x54, 0x52, 0x41, 0x43, 0xC5, 0x4E, 0x4F, 0x52, 0x4D, 0x41, 0xCC, 0x49, +0x4E, 0x56, 0x45, 0x52, 0x53, 0xC5, 0x46, 0x4C, 0x41, 0x53, 0xC8, 0x43, 0x4F, 0x4C, 0x4F, 0x52, +0xBD, 0x50, 0x4F, 0xD0, 0x56, 0x54, 0x41, 0xC2, 0x48, 0x49, 0x4D, 0x45, 0x4D, 0xBA, 0x4C, 0x4F, +0x4D, 0x45, 0x4D, 0xBA, 0x4F, 0x4E, 0x45, 0x52, 0xD2, 0x52, 0x45, 0x53, 0x55, 0x4D, 0xC5, 0x52, +0x45, 0x43, 0x41, 0x4C, 0xCC, 0x53, 0x54, 0x4F, 0x52, 0xC5, 0x53, 0x50, 0x45, 0x45, 0x44, 0xBD, +0x4C, 0x45, 0xD4, 0x47, 0x4F, 0x54, 0xCF, 0x52, 0x55, 0xCE, 0x49, 0xC6, 0x52, 0x45, 0x53, 0x54, +0x4F, 0x52, 0xC5, 0xA6, 0x47, 0x4F, 0x53, 0x55, 0xC2, 0x52, 0x45, 0x54, 0x55, 0x52, 0xCE, 0x52, +0x45, 0xCD, 0x53, 0x54, 0x4F, 0xD0, 0x4F, 0xCE, 0x57, 0x41, 0x49, 0xD4, 0x4C, 0x4F, 0x41, 0xC4, +0x53, 0x41, 0x56, 0xC5, 0x44, 0x45, 0xC6, 0x50, 0x4F, 0x4B, 0xC5, 0x50, 0x52, 0x49, 0x4E, 0xD4, +0x43, 0x4F, 0x4E, 0xD4, 0x4C, 0x49, 0x53, 0xD4, 0x43, 0x4C, 0x45, 0x41, 0xD2, 0x47, 0x45, 0xD4, +0x4E, 0x45, 0xD7, 0x54, 0x41, 0x42, 0xA8, 0x54, 0xCF, 0x46, 0xCE, 0x53, 0x50, 0x43, 0xA8, 0x54, +0x48, 0x45, 0xCE, 0x41, 0xD4, 0x4E, 0x4F, 0xD4, 0x53, 0x54, 0x45, 0xD0, 0xAB, 0xAD, 0xAA, 0xAF, +0xDE, 0x41, 0x4E, 0xC4, 0x4F, 0xD2, 0xBE, 0xBD, 0xBC, 0x53, 0x47, 0xCE, 0x49, 0x4E, 0xD4, 0x41, +0x42, 0xD3, 0x55, 0x53, 0xD2, 0x46, 0x52, 0xC5, 0x53, 0x43, 0x52, 0x4E, 0xA8, 0x50, 0x44, 0xCC, +0x50, 0x4F, 0xD3, 0x53, 0x51, 0xD2, 0x52, 0x4E, 0xC4, 0x4C, 0x4F, 0xC7, 0x45, 0x58, 0xD0, 0x43, +0x4F, 0xD3, 0x53, 0x49, 0xCE, 0x54, 0x41, 0xCE, 0x41, 0x54, 0xCE, 0x50, 0x45, 0x45, 0xCB, 0x4C, +0x45, 0xCE, 0x53, 0x54, 0x52, 0xA4, 0x56, 0x41, 0xCC, 0x41, 0x53, 0xC3, 0x43, 0x48, 0x52, 0xA4, +0x4C, 0x45, 0x46, 0x54, 0xA4, 0x52, 0x49, 0x47, 0x48, 0x54, 0xA4, 0x4D, 0x49, 0x44, 0xA4, 0x00, +0x4E, 0x45, 0x58, 0x54, 0x20, 0x57, 0x49, 0x54, 0x48, 0x4F, 0x55, 0x54, 0x20, 0x46, 0x4F, 0xD2, +0x53, 0x59, 0x4E, 0x54, 0x41, 0xD8, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4E, 0x20, 0x57, 0x49, 0x54, +0x48, 0x4F, 0x55, 0x54, 0x20, 0x47, 0x4F, 0x53, 0x55, 0xC2, 0x4F, 0x55, 0x54, 0x20, 0x4F, 0x46, +0x20, 0x44, 0x41, 0x54, 0xC1, 0x49, 0x4C, 0x4C, 0x45, 0x47, 0x41, 0x4C, 0x20, 0x51, 0x55, 0x41, +0x4E, 0x54, 0x49, 0x54, 0xD9, 0x4F, 0x56, 0x45, 0x52, 0x46, 0x4C, 0x4F, 0xD7, 0x4F, 0x55, 0x54, +0x20, 0x4F, 0x46, 0x20, 0x4D, 0x45, 0x4D, 0x4F, 0x52, 0xD9, 0x55, 0x4E, 0x44, 0x45, 0x46, 0x27, +0x44, 0x20, 0x53, 0x54, 0x41, 0x54, 0x45, 0x4D, 0x45, 0x4E, 0xD4, 0x42, 0x41, 0x44, 0x20, 0x53, +0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0xD4, 0x52, 0x45, 0x44, 0x49, 0x4D, 0x27, 0x44, 0x20, +0x41, 0x52, 0x52, 0x41, 0xD9, 0x44, 0x49, 0x56, 0x49, 0x53, 0x49, 0x4F, 0x4E, 0x20, 0x42, 0x59, +0x20, 0x5A, 0x45, 0x52, 0xCF, 0x49, 0x4C, 0x4C, 0x45, 0x47, 0x41, 0x4C, 0x20, 0x44, 0x49, 0x52, +0x45, 0x43, 0xD4, 0x54, 0x59, 0x50, 0x45, 0x20, 0x4D, 0x49, 0x53, 0x4D, 0x41, 0x54, 0x43, 0xC8, +0x53, 0x54, 0x52, 0x49, 0x4E, 0x47, 0x20, 0x54, 0x4F, 0x4F, 0x20, 0x4C, 0x4F, 0x4E, 0xC7, 0x46, +0x4F, 0x52, 0x4D, 0x55, 0x4C, 0x41, 0x20, 0x54, 0x4F, 0x4F, 0x20, 0x43, 0x4F, 0x4D, 0x50, 0x4C, +0x45, 0xD8, 0x43, 0x41, 0x4E, 0x27, 0x54, 0x20, 0x43, 0x4F, 0x4E, 0x54, 0x49, 0x4E, 0x55, 0xC5, +0x55, 0x4E, 0x44, 0x45, 0x46, 0x27, 0x44, 0x20, 0x46, 0x55, 0x4E, 0x43, 0x54, 0x49, 0x4F, 0xCE, +0x20, 0x45, 0x52, 0x52, 0x4F, 0x52, 0x07, 0x00, 0x20, 0x49, 0x4E, 0x20, 0x00, 0x0D, 0x42, 0x52, +0x45, 0x41, 0x4B, 0x07, 0x00, 0xBA, 0xE8, 0xE8, 0xE8, 0xE8, 0xBD, 0x01, 0x01, 0xC9, 0x81, 0xD0, +0x21, 0xA5, 0x86, 0xD0, 0x0A, 0xBD, 0x02, 0x01, 0x85, 0x85, 0xBD, 0x03, 0x01, 0x85, 0x86, 0xDD, +0x03, 0x01, 0xD0, 0x07, 0xA5, 0x85, 0xDD, 0x02, 0x01, 0xF0, 0x07, 0x8A, 0x18, 0x69, 0x12, 0xAA, +0xD0, 0xD8, 0x60, 0x20, 0xE3, 0xD3, 0x85, 0x6D, 0x84, 0x6E, 0x38, 0xA5, 0x96, 0xE5, 0x9B, 0x85, +0x5E, 0xA8, 0xA5, 0x97, 0xE5, 0x9C, 0xAA, 0xE8, 0x98, 0xF0, 0x23, 0xA5, 0x96, 0x38, 0xE5, 0x5E, +0x85, 0x96, 0xB0, 0x03, 0xC6, 0x97, 0x38, 0xA5, 0x94, 0xE5, 0x5E, 0x85, 0x94, 0xB0, 0x08, 0xC6, +0x95, 0x90, 0x04, 0xB1, 0x96, 0x91, 0x94, 0x88, 0xD0, 0xF9, 0xB1, 0x96, 0x91, 0x94, 0xC6, 0x97, +0xC6, 0x95, 0xCA, 0xD0, 0xF2, 0x60, 0x0A, 0x69, 0x36, 0xB0, 0x35, 0x85, 0x5E, 0xBA, 0xE4, 0x5E, +0x90, 0x2E, 0x60, 0xC4, 0x70, 0x90, 0x28, 0xD0, 0x04, 0xC5, 0x6F, 0x90, 0x22, 0x48, 0xA2, 0x09, +0x98, 0x48, 0xB5, 0x93, 0xCA, 0x10, 0xFA, 0x20, 0x84, 0xE4, 0xA2, 0xF7, 0x68, 0x95, 0x9D, 0xE8, +0x30, 0xFA, 0x68, 0xA8, 0x68, 0xC4, 0x70, 0x90, 0x06, 0xD0, 0x05, 0xC5, 0x6F, 0xB0, 0x01, 0x60, +0xA2, 0x4D, 0x24, 0xD8, 0x10, 0x03, 0x4C, 0xE9, 0xF2, 0x20, 0xFB, 0xDA, 0x20, 0x5A, 0xDB, 0xBD, +0x60, 0xD2, 0x48, 0x20, 0x5C, 0xDB, 0xE8, 0x68, 0x10, 0xF5, 0x20, 0x83, 0xD6, 0xA9, 0x50, 0xA0, +0xD3, 0x20, 0x3A, 0xDB, 0xA4, 0x76, 0xC8, 0xF0, 0x03, 0x20, 0x19, 0xED, 0x20, 0xFB, 0xDA, 0xA2, +0xDD, 0x20, 0x2E, 0xD5, 0x86, 0xB8, 0x84, 0xB9, 0x46, 0xD8, 0x20, 0xB1, 0x00, 0xAA, 0xF0, 0xEC, +0xA2, 0xFF, 0x86, 0x76, 0x90, 0x06, 0x20, 0x59, 0xD5, 0x4C, 0x05, 0xD8, 0xA6, 0xAF, 0x86, 0x69, +0xA6, 0xB0, 0x86, 0x6A, 0x20, 0x0C, 0xDA, 0x20, 0x59, 0xD5, 0x84, 0x0F, 0x20, 0x1A, 0xD6, 0x90, +0x44, 0xA0, 0x01, 0xB1, 0x9B, 0x85, 0x5F, 0xA5, 0x69, 0x85, 0x5E, 0xA5, 0x9C, 0x85, 0x61, 0xA5, +0x9B, 0x88, 0xF1, 0x9B, 0x18, 0x65, 0x69, 0x85, 0x69, 0x85, 0x60, 0xA5, 0x6A, 0x69, 0xFF, 0x85, +0x6A, 0xE5, 0x9C, 0xAA, 0x38, 0xA5, 0x9B, 0xE5, 0x69, 0xA8, 0xB0, 0x03, 0xE8, 0xC6, 0x61, 0x18, +0x65, 0x5E, 0x90, 0x03, 0xC6, 0x5F, 0x18, 0xB1, 0x5E, 0x91, 0x60, 0xC8, 0xD0, 0xF9, 0xE6, 0x5F, +0xE6, 0x61, 0xCA, 0xD0, 0xF2, 0xAD, 0x00, 0x02, 0xF0, 0x38, 0xA5, 0x73, 0xA4, 0x74, 0x85, 0x6F, +0x84, 0x70, 0xA5, 0x69, 0x85, 0x96, 0x65, 0x0F, 0x85, 0x94, 0xA4, 0x6A, 0x84, 0x97, 0x90, 0x01, +0xC8, 0x84, 0x95, 0x20, 0x93, 0xD3, 0xA5, 0x50, 0xA4, 0x51, 0x8D, 0xFE, 0x01, 0x8C, 0xFF, 0x01, +0xA5, 0x6D, 0xA4, 0x6E, 0x85, 0x69, 0x84, 0x6A, 0xA4, 0x0F, 0xB9, 0xFB, 0x01, 0x88, 0x91, 0x9B, +0xD0, 0xF8, 0x20, 0x65, 0xD6, 0xA5, 0x67, 0xA4, 0x68, 0x85, 0x5E, 0x84, 0x5F, 0x18, 0xA0, 0x01, +0xB1, 0x5E, 0xD0, 0x0B, 0xA5, 0x69, 0x85, 0xAF, 0xA5, 0x6A, 0x85, 0xB0, 0x4C, 0x3C, 0xD4, 0xA0, +0x04, 0xC8, 0xB1, 0x5E, 0xD0, 0xFB, 0xC8, 0x98, 0x65, 0x5E, 0xAA, 0xA0, 0x00, 0x91, 0x5E, 0xA5, +0x5F, 0x69, 0x00, 0xC8, 0x91, 0x5E, 0x86, 0x5E, 0x85, 0x5F, 0x90, 0xD2, 0xA2, 0x80, 0x86, 0x33, +0x20, 0x6A, 0xFD, 0xE0, 0xEF, 0x90, 0x02, 0xA2, 0xEF, 0xA9, 0x00, 0x9D, 0x00, 0x02, 0x8A, 0xF0, +0x0B, 0xBD, 0xFF, 0x01, 0x29, 0x7F, 0x9D, 0xFF, 0x01, 0xCA, 0xD0, 0xF5, 0xA9, 0x00, 0xA2, 0xFF, +0xA0, 0x01, 0x60, 0x20, 0x0C, 0xFD, 0x29, 0x7F, 0x60, 0xA6, 0xB8, 0xCA, 0xA0, 0x04, 0x84, 0x13, +0x24, 0xD6, 0x10, 0x08, 0x68, 0x68, 0x20, 0x65, 0xD6, 0x4C, 0xD2, 0xD7, 0xE8, 0x20, 0xB5, 0xD8, +0x24, 0x13, 0x70, 0x04, 0xC9, 0x20, 0xF0, 0xF4, 0x85, 0x0E, 0xC9, 0x22, 0xF0, 0x74, 0x70, 0x4D, +0xC9, 0x3F, 0xD0, 0x04, 0xA9, 0xBA, 0xD0, 0x45, 0xC9, 0x30, 0x90, 0x04, 0xC9, 0x3C, 0x90, 0x3D, +0x84, 0xAD, 0xA9, 0xD0, 0x85, 0x9D, 0xA9, 0xCF, 0x85, 0x9E, 0xA0, 0x00, 0x84, 0x0F, 0x88, 0x86, +0xB8, 0xCA, 0xC8, 0xD0, 0x02, 0xE6, 0x9E, 0xE8, 0x20, 0xB5, 0xD8, 0xC9, 0x20, 0xF0, 0xF8, 0x38, +0xF1, 0x9D, 0xF0, 0xEE, 0xC9, 0x80, 0xD0, 0x41, 0x05, 0x0F, 0xC9, 0xC5, 0xD0, 0x0D, 0x20, 0xB0, +0xD8, 0xC9, 0x4E, 0xF0, 0x34, 0xC9, 0x4F, 0xF0, 0x30, 0xA9, 0xC5, 0xA4, 0xAD, 0xE8, 0xC8, 0x99, +0xFB, 0x01, 0xB9, 0xFB, 0x01, 0xF0, 0x39, 0x38, 0xE9, 0x3A, 0xF0, 0x04, 0xC9, 0x49, 0xD0, 0x02, +0x85, 0x13, 0x38, 0xE9, 0x78, 0xD0, 0x86, 0x85, 0x0E, 0x20, 0xB5, 0xD8, 0xF0, 0xDF, 0xC5, 0x0E, +0xF0, 0xDB, 0xC8, 0x99, 0xFB, 0x01, 0xE8, 0xD0, 0xF0, 0xA6, 0xB8, 0xE6, 0x0F, 0xB1, 0x9D, 0xC8, +0xD0, 0x02, 0xE6, 0x9E, 0x0A, 0x90, 0xF6, 0xB1, 0x9D, 0xD0, 0x9D, 0x20, 0xC3, 0xD8, 0x10, 0xBB, +0x99, 0xFD, 0x01, 0xC6, 0xB9, 0xA9, 0xFF, 0x85, 0xB8, 0x60, 0xA5, 0x67, 0xA6, 0x68, 0xA0, 0x01, +0x85, 0x9B, 0x86, 0x9C, 0xB1, 0x9B, 0xF0, 0x1F, 0xC8, 0xC8, 0xA5, 0x51, 0xD1, 0x9B, 0x90, 0x18, +0xF0, 0x03, 0x88, 0xD0, 0x09, 0xA5, 0x50, 0x88, 0xD1, 0x9B, 0x90, 0x0C, 0xF0, 0x0A, 0x88, 0xB1, +0x9B, 0xAA, 0x88, 0xB1, 0x9B, 0xB0, 0xD7, 0x18, 0x60, 0xD0, 0xFD, 0xA9, 0x00, 0x85, 0xD6, 0xA8, +0x91, 0x67, 0xC8, 0x91, 0x67, 0xA5, 0x67, 0x69, 0x02, 0x85, 0x69, 0x85, 0xAF, 0xA5, 0x68, 0x69, +0x00, 0x85, 0x6A, 0x85, 0xB0, 0x20, 0x97, 0xD6, 0xA9, 0x00, 0xD0, 0x2A, 0xA5, 0x73, 0xA4, 0x74, +0x85, 0x6F, 0x84, 0x70, 0xA5, 0x69, 0xA4, 0x6A, 0x85, 0x6B, 0x84, 0x6C, 0x85, 0x6D, 0x84, 0x6E, +0x20, 0x49, 0xD8, 0xA2, 0x55, 0x86, 0x52, 0x68, 0xA8, 0x68, 0xA2, 0xF8, 0x9A, 0x48, 0x98, 0x48, +0xA9, 0x00, 0x85, 0x7A, 0x85, 0x14, 0x60, 0x18, 0xA5, 0x67, 0x69, 0xFF, 0x85, 0xB8, 0xA5, 0x68, +0x69, 0xFF, 0x85, 0xB9, 0x60, 0x90, 0x0A, 0xF0, 0x08, 0xC9, 0xC9, 0xF0, 0x04, 0xC9, 0x2C, 0xD0, +0xE5, 0x20, 0x0C, 0xDA, 0x20, 0x1A, 0xD6, 0x20, 0xB7, 0x00, 0xF0, 0x10, 0xC9, 0xC9, 0xF0, 0x04, +0xC9, 0x2C, 0xD0, 0x84, 0x20, 0xB1, 0x00, 0x20, 0x0C, 0xDA, 0xD0, 0xCA, 0x68, 0x68, 0xA5, 0x50, +0x05, 0x51, 0xD0, 0x06, 0xA9, 0xFF, 0x85, 0x50, 0x85, 0x51, 0xA0, 0x01, 0xB1, 0x9B, 0xF0, 0x44, +0x20, 0x58, 0xD8, 0x20, 0xFB, 0xDA, 0xC8, 0xB1, 0x9B, 0xAA, 0xC8, 0xB1, 0x9B, 0xC5, 0x51, 0xD0, +0x04, 0xE4, 0x50, 0xF0, 0x02, 0xB0, 0x2D, 0x84, 0x85, 0x20, 0xD3, 0xD8, 0xA9, 0x20, 0xA4, 0x85, +0x29, 0x7F, 0x20, 0x5C, 0xDB, 0x20, 0xDD, 0xD8, 0xEA, 0x90, 0x07, 0x20, 0xFB, 0xDA, 0xA9, 0x05, +0x85, 0x24, 0xC8, 0xB1, 0x9B, 0xD0, 0x1D, 0xA8, 0xB1, 0x9B, 0xAA, 0xC8, 0xB1, 0x9B, 0x86, 0x9B, +0x85, 0x9C, 0xD0, 0xB6, 0xA9, 0x0D, 0x20, 0x5C, 0xDB, 0x4C, 0xD2, 0xD7, 0xC8, 0xD0, 0x02, 0xE6, +0x9E, 0xB1, 0x9D, 0x60, 0x10, 0xCC, 0x38, 0xE9, 0x7F, 0xAA, 0x84, 0x85, 0xA0, 0xD0, 0x84, 0x9D, +0xA0, 0xCF, 0x84, 0x9E, 0xA0, 0xFF, 0xCA, 0xF0, 0x07, 0x20, 0x2C, 0xD7, 0x10, 0xFB, 0x30, 0xF6, +0xA9, 0x20, 0x20, 0x5C, 0xDB, 0x20, 0x2C, 0xD7, 0x30, 0x05, 0x20, 0x5C, 0xDB, 0xD0, 0xF6, 0x20, +0x5C, 0xDB, 0xA9, 0x20, 0xD0, 0x98, 0xA9, 0x80, 0x85, 0x14, 0x20, 0x46, 0xDA, 0x20, 0x65, 0xD3, +0xD0, 0x05, 0x8A, 0x69, 0x0F, 0xAA, 0x9A, 0x68, 0x68, 0xA9, 0x09, 0x20, 0xD6, 0xD3, 0x20, 0xA3, +0xD9, 0x18, 0x98, 0x65, 0xB8, 0x48, 0xA5, 0xB9, 0x69, 0x00, 0x48, 0xA5, 0x76, 0x48, 0xA5, 0x75, +0x48, 0xA9, 0xC1, 0x20, 0xC0, 0xDE, 0x20, 0x6A, 0xDD, 0x20, 0x67, 0xDD, 0xA5, 0xA2, 0x09, 0x7F, +0x25, 0x9E, 0x85, 0x9E, 0xA9, 0xAF, 0xA0, 0xD7, 0x85, 0x5E, 0x84, 0x5F, 0x4C, 0x20, 0xDE, 0xA9, +0x13, 0xA0, 0xE9, 0x20, 0xF9, 0xEA, 0x20, 0xB7, 0x00, 0xC9, 0xC7, 0xD0, 0x06, 0x20, 0xB1, 0x00, +0x20, 0x67, 0xDD, 0x20, 0x82, 0xEB, 0x20, 0x15, 0xDE, 0xA5, 0x86, 0x48, 0xA5, 0x85, 0x48, 0xA9, +0x81, 0x48, 0xBA, 0x86, 0xF8, 0x20, 0x58, 0xD8, 0xA5, 0xB8, 0xA4, 0xB9, 0xA6, 0x76, 0xE8, 0xF0, +0x04, 0x85, 0x79, 0x84, 0x7A, 0xA0, 0x00, 0xB1, 0xB8, 0xD0, 0x57, 0xA0, 0x02, 0xB1, 0xB8, 0x18, +0xF0, 0x34, 0xC8, 0xB1, 0xB8, 0x85, 0x75, 0xC8, 0xB1, 0xB8, 0x85, 0x76, 0x98, 0x65, 0xB8, 0x85, +0xB8, 0x90, 0x02, 0xE6, 0xB9, 0x24, 0xF2, 0x10, 0x14, 0xA6, 0x76, 0xE8, 0xF0, 0x0F, 0xA9, 0x23, +0x20, 0x5C, 0xDB, 0xA6, 0x75, 0xA5, 0x76, 0x20, 0x24, 0xED, 0x20, 0x57, 0xDB, 0x20, 0xB1, 0x00, +0x20, 0x28, 0xD8, 0x4C, 0xD2, 0xD7, 0xF0, 0x62, 0xF0, 0x2D, 0xE9, 0x80, 0x90, 0x11, 0xC9, 0x40, +0xB0, 0x14, 0x0A, 0xA8, 0xB9, 0x01, 0xD0, 0x48, 0xB9, 0x00, 0xD0, 0x48, 0x4C, 0xB1, 0x00, 0x4C, +0x46, 0xDA, 0xC9, 0x3A, 0xF0, 0xBF, 0x4C, 0xC9, 0xDE, 0x38, 0xA5, 0x67, 0xE9, 0x01, 0xA4, 0x68, +0xB0, 0x01, 0x88, 0x85, 0x7D, 0x84, 0x7E, 0x60, 0xAD, 0x00, 0xC0, 0xC9, 0x83, 0xF0, 0x01, 0x60, +0x20, 0x53, 0xD5, 0xA2, 0xFF, 0x24, 0xD8, 0x10, 0x03, 0x4C, 0xE9, 0xF2, 0xC9, 0x03, 0xB0, 0x01, +0x18, 0xD0, 0x3C, 0xA5, 0xB8, 0xA4, 0xB9, 0xA6, 0x76, 0xE8, 0xF0, 0x0C, 0x85, 0x79, 0x84, 0x7A, +0xA5, 0x75, 0xA4, 0x76, 0x85, 0x77, 0x84, 0x78, 0x68, 0x68, 0xA9, 0x5D, 0xA0, 0xD3, 0x90, 0x03, +0x4C, 0x31, 0xD4, 0x4C, 0x3C, 0xD4, 0xD0, 0x17, 0xA2, 0xD2, 0xA4, 0x7A, 0xD0, 0x03, 0x4C, 0x12, +0xD4, 0xA5, 0x79, 0x85, 0xB8, 0x84, 0xB9, 0xA5, 0x77, 0xA4, 0x78, 0x85, 0x75, 0x84, 0x76, 0x60, +0xBD, 0x01, 0x02, 0x10, 0x11, 0xA5, 0x0E, 0xF0, 0x16, 0xC9, 0x22, 0xF0, 0x12, 0xA5, 0x13, 0xC9, +0x49, 0xF0, 0x0C, 0xBD, 0x00, 0x02, 0x08, 0xC9, 0x61, 0x90, 0x02, 0x29, 0x5F, 0x28, 0x60, 0xBD, +0x00, 0x02, 0x60, 0x48, 0xA9, 0x20, 0x20, 0x5C, 0xDB, 0x68, 0x4C, 0x24, 0xED, 0xA5, 0x24, 0xC9, +0x21, 0x2C, 0x1F, 0xC0, 0x10, 0x05, 0xAD, 0x7B, 0x05, 0xC9, 0x49, 0x60, 0xAD, 0x50, 0xC0, 0x20, +0xF7, 0xD8, 0xA9, 0x14, 0x4C, 0x4B, 0xFB, 0xA0, 0x27, 0x84, 0x2D, 0x20, 0xCB, 0xF3, 0xA9, 0x27, +0x90, 0x01, 0x2A, 0xA8, 0xA9, 0x00, 0x85, 0x30, 0x20, 0x8B, 0xF7, 0x88, 0x10, 0xF6, 0x60, 0x00, +0x00, 0x00, 0x08, 0xC6, 0x76, 0x28, 0xD0, 0x03, 0x4C, 0x65, 0xD6, 0x20, 0x6C, 0xD6, 0x4C, 0x35, +0xD9, 0xA9, 0x03, 0x20, 0xD6, 0xD3, 0xA5, 0xB9, 0x48, 0xA5, 0xB8, 0x48, 0xA5, 0x76, 0x48, 0xA5, +0x75, 0x48, 0xA9, 0xB0, 0x48, 0x20, 0xB7, 0x00, 0x20, 0x3E, 0xD9, 0x4C, 0xD2, 0xD7, 0x20, 0x0C, +0xDA, 0x20, 0xA6, 0xD9, 0xA5, 0x76, 0xC5, 0x51, 0xB0, 0x0B, 0x98, 0x38, 0x65, 0xB8, 0xA6, 0xB9, +0x90, 0x07, 0xE8, 0xB0, 0x04, 0xA5, 0x67, 0xA6, 0x68, 0x20, 0x1E, 0xD6, 0x90, 0x1E, 0xA5, 0x9B, +0xE9, 0x01, 0x85, 0xB8, 0xA5, 0x9C, 0xE9, 0x00, 0x85, 0xB9, 0x60, 0xD0, 0xFD, 0xA9, 0xFF, 0x85, +0x85, 0x20, 0x65, 0xD3, 0x9A, 0xC9, 0xB0, 0xF0, 0x0B, 0xA2, 0x16, 0x2C, 0xA2, 0x5A, 0x4C, 0x12, +0xD4, 0x4C, 0xC9, 0xDE, 0x68, 0x68, 0xC0, 0x42, 0xF0, 0x3B, 0x85, 0x75, 0x68, 0x85, 0x76, 0x68, +0x85, 0xB8, 0x68, 0x85, 0xB9, 0x20, 0xA3, 0xD9, 0x98, 0x18, 0x65, 0xB8, 0x85, 0xB8, 0x90, 0x02, +0xE6, 0xB9, 0x60, 0xA2, 0x3A, 0x2C, 0xA2, 0x00, 0x86, 0x0D, 0xA0, 0x00, 0x84, 0x0E, 0xA5, 0x0E, +0xA6, 0x0D, 0x85, 0x0D, 0x86, 0x0E, 0xB1, 0xB8, 0xF0, 0xE8, 0xC5, 0x0E, 0xF0, 0xE4, 0xC8, 0xC9, +0x22, 0xD0, 0xF3, 0xF0, 0xE9, 0x68, 0x68, 0x68, 0x60, 0x20, 0x7B, 0xDD, 0x20, 0xB7, 0x00, 0xC9, +0xAB, 0xF0, 0x05, 0xA9, 0xC4, 0x20, 0xC0, 0xDE, 0xA5, 0x9D, 0xD0, 0x05, 0x20, 0xA6, 0xD9, 0xF0, +0xB7, 0x20, 0xB7, 0x00, 0xB0, 0x03, 0x4C, 0x3E, 0xD9, 0x4C, 0x28, 0xD8, 0x20, 0xF8, 0xE6, 0x48, +0xC9, 0xB0, 0xF0, 0x04, 0xC9, 0xAB, 0xD0, 0x89, 0xC6, 0xA1, 0xD0, 0x04, 0x68, 0x4C, 0x2A, 0xD8, +0x20, 0xB1, 0x00, 0x20, 0x0C, 0xDA, 0xC9, 0x2C, 0xF0, 0xEE, 0x68, 0x60, 0xA2, 0x00, 0x86, 0x50, +0x86, 0x51, 0xB0, 0xF7, 0xE9, 0x2F, 0x85, 0x0D, 0xA5, 0x51, 0x85, 0x5E, 0xC9, 0x19, 0xB0, 0xD4, +0xA5, 0x50, 0x0A, 0x26, 0x5E, 0x0A, 0x26, 0x5E, 0x65, 0x50, 0x85, 0x50, 0xA5, 0x5E, 0x65, 0x51, +0x85, 0x51, 0x06, 0x50, 0x26, 0x51, 0xA5, 0x50, 0x65, 0x0D, 0x85, 0x50, 0x90, 0x02, 0xE6, 0x51, +0x20, 0xB1, 0x00, 0x4C, 0x12, 0xDA, 0x20, 0xE3, 0xDF, 0x85, 0x85, 0x84, 0x86, 0xA9, 0xD0, 0x20, +0xC0, 0xDE, 0xA5, 0x12, 0x48, 0xA5, 0x11, 0x48, 0x20, 0x7B, 0xDD, 0x68, 0x2A, 0x20, 0x6D, 0xDD, +0xD0, 0x18, 0x68, 0x10, 0x12, 0x20, 0x72, 0xEB, 0x20, 0x0C, 0xE1, 0xA0, 0x00, 0xA5, 0xA0, 0x91, +0x85, 0xC8, 0xA5, 0xA1, 0x91, 0x85, 0x60, 0x4C, 0x27, 0xEB, 0x68, 0xA0, 0x02, 0xB1, 0xA0, 0xC5, +0x70, 0x90, 0x17, 0xD0, 0x07, 0x88, 0xB1, 0xA0, 0xC5, 0x6F, 0x90, 0x0E, 0xA4, 0xA1, 0xC4, 0x6A, +0x90, 0x08, 0xD0, 0x0D, 0xA5, 0xA0, 0xC5, 0x69, 0xB0, 0x07, 0xA5, 0xA0, 0xA4, 0xA1, 0x4C, 0xB7, +0xDA, 0xA0, 0x00, 0xB1, 0xA0, 0x20, 0xD5, 0xE3, 0xA5, 0x8C, 0xA4, 0x8D, 0x85, 0xAB, 0x84, 0xAC, +0x20, 0xD4, 0xE5, 0xA9, 0x9D, 0xA0, 0x00, 0x85, 0x8C, 0x84, 0x8D, 0x20, 0x35, 0xE6, 0xA0, 0x00, +0xB1, 0x8C, 0x91, 0x85, 0xC8, 0xB1, 0x8C, 0x91, 0x85, 0xC8, 0xB1, 0x8C, 0x91, 0x85, 0x60, 0x20, +0x3D, 0xDB, 0x20, 0xB7, 0x00, 0xF0, 0x24, 0xF0, 0x29, 0xC9, 0xC0, 0xF0, 0x3C, 0xC9, 0xC3, 0x18, +0xF0, 0x37, 0xC9, 0x2C, 0x18, 0xF0, 0x1C, 0xC9, 0x3B, 0xF0, 0x44, 0x20, 0x7B, 0xDD, 0x24, 0x11, +0x30, 0xDD, 0x20, 0x34, 0xED, 0x20, 0xE7, 0xE3, 0x4C, 0xCF, 0xDA, 0xA9, 0x0D, 0x20, 0x5C, 0xDB, +0x49, 0xFF, 0x60, 0x20, 0xDD, 0xD8, 0x30, 0x09, 0xC9, 0x18, 0x90, 0x05, 0x20, 0xFB, 0xDA, 0xD0, +0x1E, 0x69, 0x10, 0x29, 0xF0, 0xAA, 0x38, 0xB0, 0x0C, 0x08, 0x20, 0xF5, 0xE6, 0xC9, 0x29, 0xD0, +0x62, 0x28, 0x90, 0x07, 0xCA, 0x20, 0xCB, 0xF7, 0x90, 0x05, 0xAA, 0xE8, 0xCA, 0xD0, 0x06, 0x20, +0xB1, 0x00, 0x4C, 0xD7, 0xDA, 0x20, 0x57, 0xDB, 0xD0, 0xF2, 0x20, 0xE7, 0xE3, 0x20, 0x00, 0xE6, +0xAA, 0xA0, 0x00, 0xE8, 0xCA, 0xF0, 0xBB, 0xB1, 0x5E, 0x20, 0x5C, 0xDB, 0xC8, 0xC9, 0x0D, 0xD0, +0xF3, 0x20, 0x00, 0xDB, 0x4C, 0x44, 0xDB, 0xA9, 0x20, 0x2C, 0xA9, 0x3F, 0x09, 0x80, 0xC9, 0xA0, +0x90, 0x02, 0x05, 0xF3, 0x20, 0xED, 0xFD, 0x29, 0x7F, 0x48, 0xA5, 0xF1, 0x20, 0xA8, 0xFC, 0x68, +0x60, 0xA5, 0x15, 0xF0, 0x12, 0x30, 0x04, 0xA0, 0xFF, 0xD0, 0x04, 0xA5, 0x7B, 0xA4, 0x7C, 0x85, +0x75, 0x84, 0x76, 0x4C, 0xC9, 0xDE, 0x68, 0x24, 0xD8, 0x10, 0x05, 0xA2, 0xFE, 0x4C, 0xE9, 0xF2, +0xA9, 0xEF, 0xA0, 0xDC, 0x20, 0x3A, 0xDB, 0xA5, 0x79, 0xA4, 0x7A, 0x85, 0xB8, 0x84, 0xB9, 0x60, +0x20, 0x06, 0xE3, 0xA2, 0x01, 0xA0, 0x02, 0xA9, 0x00, 0x8D, 0x01, 0x02, 0xA9, 0x40, 0x20, 0xEB, +0xDB, 0x60, 0xC9, 0x22, 0xD0, 0x0E, 0x20, 0x81, 0xDE, 0xA9, 0x3B, 0x20, 0xC0, 0xDE, 0x20, 0x3D, +0xDB, 0x4C, 0xC7, 0xDB, 0x20, 0x5A, 0xDB, 0x20, 0x06, 0xE3, 0xA9, 0x2C, 0x8D, 0xFF, 0x01, 0x20, +0x2C, 0xD5, 0xAD, 0x00, 0x02, 0xC9, 0x03, 0xD0, 0x10, 0x4C, 0x63, 0xD8, 0x20, 0x5A, 0xDB, 0x4C, +0x2C, 0xD5, 0xA6, 0x7D, 0xA4, 0x7E, 0xA9, 0x98, 0x2C, 0xA9, 0x00, 0x85, 0x15, 0x86, 0x7F, 0x84, +0x80, 0x20, 0xE3, 0xDF, 0x85, 0x85, 0x84, 0x86, 0xA5, 0xB8, 0xA4, 0xB9, 0x85, 0x87, 0x84, 0x88, +0xA6, 0x7F, 0xA4, 0x80, 0x86, 0xB8, 0x84, 0xB9, 0x20, 0xB7, 0x00, 0xD0, 0x1E, 0x24, 0x15, 0x50, +0x0E, 0x20, 0x0C, 0xFD, 0x29, 0x7F, 0x8D, 0x00, 0x02, 0xA2, 0xFF, 0xA0, 0x01, 0xD0, 0x08, 0x30, +0x7F, 0x20, 0x5A, 0xDB, 0x20, 0xDC, 0xDB, 0x86, 0xB8, 0x84, 0xB9, 0x20, 0xB1, 0x00, 0x24, 0x11, +0x10, 0x31, 0x24, 0x15, 0x50, 0x09, 0xE8, 0x86, 0xB8, 0xA9, 0x00, 0x85, 0x0D, 0xF0, 0x0C, 0x85, +0x0D, 0xC9, 0x22, 0xF0, 0x07, 0xA9, 0x3A, 0x85, 0x0D, 0xA9, 0x2C, 0x18, 0x85, 0x0E, 0xA5, 0xB8, +0xA4, 0xB9, 0x69, 0x00, 0x90, 0x01, 0xC8, 0x20, 0xED, 0xE3, 0x20, 0x3D, 0xE7, 0x20, 0x7B, 0xDA, +0x4C, 0x72, 0xDC, 0x48, 0xAD, 0x00, 0x02, 0xF0, 0x30, 0x68, 0x20, 0x4A, 0xEC, 0xA5, 0x12, 0x20, +0x63, 0xDA, 0x20, 0xB7, 0x00, 0xF0, 0x07, 0xC9, 0x2C, 0xF0, 0x03, 0x4C, 0x71, 0xDB, 0xA5, 0xB8, +0xA4, 0xB9, 0x85, 0x7F, 0x84, 0x80, 0xA5, 0x87, 0xA4, 0x88, 0x85, 0xB8, 0x84, 0xB9, 0x20, 0xB7, +0x00, 0xF0, 0x33, 0x20, 0xBE, 0xDE, 0x4C, 0xF1, 0xDB, 0xA5, 0x15, 0xD0, 0xCC, 0x4C, 0x86, 0xDB, +0x20, 0xA3, 0xD9, 0xC8, 0xAA, 0xD0, 0x12, 0xA2, 0x2A, 0xC8, 0xB1, 0xB8, 0xF0, 0x5F, 0xC8, 0xB1, +0xB8, 0x85, 0x7B, 0xC8, 0xB1, 0xB8, 0xC8, 0x85, 0x7C, 0xB1, 0xB8, 0xAA, 0x20, 0x98, 0xD9, 0xE0, +0x83, 0xD0, 0xDD, 0x4C, 0x2B, 0xDC, 0xA5, 0x7F, 0xA4, 0x80, 0xA6, 0x15, 0x10, 0x03, 0x4C, 0x53, +0xD8, 0xA0, 0x00, 0xB1, 0x7F, 0xF0, 0x07, 0xA9, 0xDF, 0xA0, 0xDC, 0x4C, 0x3A, 0xDB, 0x60, 0x3F, +0x45, 0x58, 0x54, 0x52, 0x41, 0x20, 0x49, 0x47, 0x4E, 0x4F, 0x52, 0x45, 0x44, 0x0D, 0x00, 0x3F, +0x52, 0x45, 0x45, 0x4E, 0x54, 0x45, 0x52, 0x0D, 0x00, 0xD0, 0x04, 0xA0, 0x00, 0xF0, 0x03, 0x20, +0xE3, 0xDF, 0x85, 0x85, 0x84, 0x86, 0x20, 0x65, 0xD3, 0xF0, 0x04, 0xA2, 0x00, 0xF0, 0x69, 0x9A, +0xE8, 0xE8, 0xE8, 0xE8, 0x8A, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0x86, 0x60, 0xA0, 0x01, 0x20, +0xF9, 0xEA, 0xBA, 0xBD, 0x09, 0x01, 0x85, 0xA2, 0xA5, 0x85, 0xA4, 0x86, 0x20, 0xBE, 0xE7, 0x20, +0x27, 0xEB, 0xA0, 0x01, 0x20, 0xB4, 0xEB, 0xBA, 0x38, 0xFD, 0x09, 0x01, 0xF0, 0x17, 0xBD, 0x0F, +0x01, 0x85, 0x75, 0xBD, 0x10, 0x01, 0x85, 0x76, 0xBD, 0x12, 0x01, 0x85, 0xB8, 0xBD, 0x11, 0x01, +0x85, 0xB9, 0x4C, 0xD2, 0xD7, 0x8A, 0x69, 0x11, 0xAA, 0x9A, 0x20, 0xB7, 0x00, 0xC9, 0x2C, 0xD0, +0xF1, 0x20, 0xB1, 0x00, 0x20, 0xFF, 0xDC, 0x20, 0x7B, 0xDD, 0x18, 0x24, 0x38, 0x24, 0x11, 0x30, +0x03, 0xB0, 0x03, 0x60, 0xB0, 0xFD, 0xA2, 0xA3, 0x4C, 0x12, 0xD4, 0xA6, 0xB8, 0xD0, 0x02, 0xC6, +0xB9, 0xC6, 0xB8, 0xA2, 0x00, 0x24, 0x48, 0x8A, 0x48, 0xA9, 0x01, 0x20, 0xD6, 0xD3, 0x20, 0x60, +0xDE, 0xA9, 0x00, 0x85, 0x89, 0x20, 0xB7, 0x00, 0x38, 0xE9, 0xCF, 0x90, 0x17, 0xC9, 0x03, 0xB0, +0x13, 0xC9, 0x01, 0x2A, 0x49, 0x01, 0x45, 0x89, 0xC5, 0x89, 0x90, 0x61, 0x85, 0x89, 0x20, 0xB1, +0x00, 0x4C, 0x98, 0xDD, 0xA6, 0x89, 0xD0, 0x2C, 0xB0, 0x7B, 0x69, 0x07, 0x90, 0x77, 0x65, 0x11, +0xD0, 0x03, 0x4C, 0x97, 0xE5, 0x69, 0xFF, 0x85, 0x5E, 0x0A, 0x65, 0x5E, 0xA8, 0x68, 0xD9, 0xB2, +0xD0, 0xB0, 0x67, 0x20, 0x6A, 0xDD, 0x48, 0x20, 0xFD, 0xDD, 0x68, 0xA4, 0x87, 0x10, 0x17, 0xAA, +0xF0, 0x56, 0xD0, 0x5F, 0x46, 0x11, 0x8A, 0x2A, 0xA6, 0xB8, 0xD0, 0x02, 0xC6, 0xB9, 0xC6, 0xB8, +0xA0, 0x1B, 0x85, 0x89, 0xD0, 0xD7, 0xD9, 0xB2, 0xD0, 0xB0, 0x48, 0x90, 0xD9, 0xB9, 0xB4, 0xD0, +0x48, 0xB9, 0xB3, 0xD0, 0x48, 0x20, 0x10, 0xDE, 0xA5, 0x89, 0x4C, 0x86, 0xDD, 0x4C, 0xC9, 0xDE, +0xA5, 0xA2, 0xBE, 0xB2, 0xD0, 0xA8, 0x68, 0x85, 0x5E, 0xE6, 0x5E, 0x68, 0x85, 0x5F, 0x98, 0x48, +0x20, 0x72, 0xEB, 0xA5, 0xA1, 0x48, 0xA5, 0xA0, 0x48, 0xA5, 0x9F, 0x48, 0xA5, 0x9E, 0x48, 0xA5, +0x9D, 0x48, 0x6C, 0x5E, 0x00, 0xA0, 0xFF, 0x68, 0xF0, 0x23, 0xC9, 0x64, 0xF0, 0x03, 0x20, 0x6A, +0xDD, 0x84, 0x87, 0x68, 0x4A, 0x85, 0x16, 0x68, 0x85, 0xA5, 0x68, 0x85, 0xA6, 0x68, 0x85, 0xA7, +0x68, 0x85, 0xA8, 0x68, 0x85, 0xA9, 0x68, 0x85, 0xAA, 0x45, 0xA2, 0x85, 0xAB, 0xA5, 0x9D, 0x60, +0xA9, 0x00, 0x85, 0x11, 0x20, 0xB1, 0x00, 0xB0, 0x03, 0x4C, 0x4A, 0xEC, 0x20, 0x7D, 0xE0, 0xB0, +0x64, 0xC9, 0x2E, 0xF0, 0xF4, 0xC9, 0xC9, 0xF0, 0x55, 0xC9, 0xC8, 0xF0, 0xE7, 0xC9, 0x22, 0xD0, +0x0F, 0xA5, 0xB8, 0xA4, 0xB9, 0x69, 0x00, 0x90, 0x01, 0xC8, 0x20, 0xE7, 0xE3, 0x4C, 0x3D, 0xE7, +0xC9, 0xC6, 0xD0, 0x10, 0xA0, 0x18, 0xD0, 0x38, 0xA5, 0x9D, 0xD0, 0x03, 0xA0, 0x01, 0x2C, 0xA0, +0x00, 0x4C, 0x01, 0xE3, 0xC9, 0xC2, 0xD0, 0x03, 0x4C, 0x54, 0xE3, 0xC9, 0xD2, 0x90, 0x03, 0x4C, +0x0C, 0xDF, 0x20, 0xBB, 0xDE, 0x20, 0x7B, 0xDD, 0xA9, 0x29, 0x2C, 0xA9, 0x28, 0x2C, 0xA9, 0x2C, +0xA0, 0x00, 0xD1, 0xB8, 0xD0, 0x03, 0x4C, 0xB1, 0x00, 0xA2, 0x10, 0x4C, 0x12, 0xD4, 0xA0, 0x15, +0x68, 0x68, 0x4C, 0xD7, 0xDD, 0x20, 0xE3, 0xDF, 0x85, 0xA0, 0x84, 0xA1, 0xA6, 0x11, 0xF0, 0x05, +0xA2, 0x00, 0x86, 0xAC, 0x60, 0xA6, 0x12, 0x10, 0x0D, 0xA0, 0x00, 0xB1, 0xA0, 0xAA, 0xC8, 0xB1, +0xA0, 0xA8, 0x8A, 0x4C, 0xF2, 0xE2, 0x4C, 0xF9, 0xEA, 0x20, 0xB1, 0x00, 0x20, 0xEC, 0xF1, 0x8A, +0xA4, 0xF0, 0x20, 0xA6, 0xF7, 0xA8, 0x20, 0x01, 0xE3, 0x4C, 0xB8, 0xDE, 0xC9, 0xD7, 0xF0, 0xE9, +0x0A, 0x48, 0xAA, 0x20, 0xB1, 0x00, 0xE0, 0xCF, 0x90, 0x20, 0x20, 0xBB, 0xDE, 0x20, 0x7B, 0xDD, +0x20, 0xBE, 0xDE, 0x20, 0x6C, 0xDD, 0x68, 0xAA, 0xA5, 0xA1, 0x48, 0xA5, 0xA0, 0x48, 0x8A, 0x48, +0x20, 0xF8, 0xE6, 0x68, 0xA8, 0x8A, 0x48, 0x4C, 0x3F, 0xDF, 0x20, 0xB2, 0xDE, 0x68, 0xA8, 0xB9, +0xDC, 0xCF, 0x85, 0x91, 0xB9, 0xDD, 0xCF, 0x85, 0x92, 0x20, 0x90, 0x00, 0x4C, 0x6A, 0xDD, 0xA5, +0xA5, 0x05, 0x9D, 0xD0, 0x0B, 0xA5, 0xA5, 0xF0, 0x04, 0xA5, 0x9D, 0xD0, 0x03, 0xA0, 0x00, 0x2C, +0xA0, 0x01, 0x4C, 0x01, 0xE3, 0x20, 0x6D, 0xDD, 0xB0, 0x13, 0xA5, 0xAA, 0x09, 0x7F, 0x25, 0xA6, +0x85, 0xA6, 0xA9, 0xA5, 0xA0, 0x00, 0x20, 0xB2, 0xEB, 0xAA, 0x4C, 0xB0, 0xDF, 0xA9, 0x00, 0x85, +0x11, 0xC6, 0x89, 0x20, 0x00, 0xE6, 0x85, 0x9D, 0x86, 0x9E, 0x84, 0x9F, 0xA5, 0xA8, 0xA4, 0xA9, +0x20, 0x04, 0xE6, 0x86, 0xA8, 0x84, 0xA9, 0xAA, 0x38, 0xE5, 0x9D, 0xF0, 0x08, 0xA9, 0x01, 0x90, +0x04, 0xA6, 0x9D, 0xA9, 0xFF, 0x85, 0xA2, 0xA0, 0xFF, 0xE8, 0xC8, 0xCA, 0xD0, 0x07, 0xA6, 0xA2, +0x30, 0x0F, 0x18, 0x90, 0x0C, 0xB1, 0xA8, 0xD1, 0x9E, 0xF0, 0xEF, 0xA2, 0xFF, 0xB0, 0x02, 0xA2, +0x01, 0xE8, 0x8A, 0x2A, 0x25, 0x16, 0xF0, 0x02, 0xA9, 0x01, 0x4C, 0x93, 0xEB, 0x20, 0xFB, 0xE6, +0x20, 0x1E, 0xFB, 0x4C, 0x01, 0xE3, 0x20, 0xBE, 0xDE, 0xAA, 0x20, 0xE8, 0xDF, 0x20, 0xB7, 0x00, +0xD0, 0xF4, 0x60, 0xA2, 0x00, 0x20, 0xB7, 0x00, 0x86, 0x10, 0x85, 0x81, 0x20, 0xB7, 0x00, 0x20, +0x7D, 0xE0, 0xB0, 0x03, 0x4C, 0xC9, 0xDE, 0xA2, 0x00, 0x86, 0x11, 0x86, 0x12, 0x4C, 0x07, 0xE0, +0x4C, 0x28, 0xF1, 0x4C, 0x3C, 0xD4, 0x00, 0x20, 0xB1, 0x00, 0x90, 0x05, 0x20, 0x7D, 0xE0, 0x90, +0x0B, 0xAA, 0x20, 0xB1, 0x00, 0x90, 0xFB, 0x20, 0x7D, 0xE0, 0xB0, 0xF6, 0xC9, 0x24, 0xD0, 0x06, +0xA9, 0xFF, 0x85, 0x11, 0xD0, 0x10, 0xC9, 0x25, 0xD0, 0x13, 0xA5, 0x14, 0x30, 0xC6, 0xA9, 0x80, +0x85, 0x12, 0x05, 0x81, 0x85, 0x81, 0x8A, 0x09, 0x80, 0xAA, 0x20, 0xB1, 0x00, 0x86, 0x82, 0x38, +0x05, 0x14, 0xE9, 0x28, 0xD0, 0x03, 0x4C, 0x1E, 0xE1, 0x24, 0x14, 0x30, 0x02, 0x70, 0xF7, 0xA9, +0x00, 0x85, 0x14, 0xA5, 0x69, 0xA6, 0x6A, 0xA0, 0x00, 0x86, 0x9C, 0x85, 0x9B, 0xE4, 0x6C, 0xD0, +0x04, 0xC5, 0x6B, 0xF0, 0x22, 0xA5, 0x81, 0xD1, 0x9B, 0xD0, 0x08, 0xA5, 0x82, 0xC8, 0xD1, 0x9B, +0xF0, 0x6C, 0x88, 0x18, 0xA5, 0x9B, 0x69, 0x07, 0x90, 0xE1, 0xE8, 0xD0, 0xDC, 0xC9, 0x41, 0x90, +0x05, 0xE9, 0x5B, 0x38, 0xE9, 0xA5, 0x60, 0x68, 0x48, 0xC9, 0xD7, 0xD0, 0x0F, 0xBA, 0xBD, 0x02, +0x01, 0xC9, 0xDE, 0xD0, 0x07, 0xA9, 0x9A, 0xA0, 0xE0, 0x60, 0x00, 0x00, 0xA5, 0x6B, 0xA4, 0x6C, +0x85, 0x9B, 0x84, 0x9C, 0xA5, 0x6D, 0xA4, 0x6E, 0x85, 0x96, 0x84, 0x97, 0x18, 0x69, 0x07, 0x90, +0x01, 0xC8, 0x85, 0x94, 0x84, 0x95, 0x20, 0x93, 0xD3, 0xA5, 0x94, 0xA4, 0x95, 0xC8, 0x85, 0x6B, +0x84, 0x6C, 0xA0, 0x00, 0xA5, 0x81, 0x91, 0x9B, 0xC8, 0xA5, 0x82, 0x91, 0x9B, 0xA9, 0x00, 0xC8, +0x91, 0x9B, 0xC8, 0x91, 0x9B, 0xC8, 0x91, 0x9B, 0xC8, 0x91, 0x9B, 0xC8, 0x91, 0x9B, 0xA5, 0x9B, +0x18, 0x69, 0x02, 0xA4, 0x9C, 0x90, 0x01, 0xC8, 0x85, 0x83, 0x84, 0x84, 0x60, 0xA5, 0x0F, 0x0A, +0x69, 0x05, 0x65, 0x9B, 0xA4, 0x9C, 0x90, 0x01, 0xC8, 0x85, 0x94, 0x84, 0x95, 0x60, 0x90, 0x80, +0x00, 0x00, 0x20, 0xB1, 0x00, 0x20, 0x67, 0xDD, 0xA5, 0xA2, 0x30, 0x0D, 0xA5, 0x9D, 0xC9, 0x90, +0x90, 0x09, 0xA9, 0xFE, 0xA0, 0xE0, 0x20, 0xB2, 0xEB, 0xD0, 0x7E, 0x4C, 0xF2, 0xEB, 0xA5, 0x14, +0xD0, 0x47, 0xA5, 0x10, 0x05, 0x12, 0x48, 0xA5, 0x11, 0x48, 0xA0, 0x00, 0x98, 0x48, 0xA5, 0x82, +0x48, 0xA5, 0x81, 0x48, 0x20, 0x02, 0xE1, 0x68, 0x85, 0x81, 0x68, 0x85, 0x82, 0x68, 0xA8, 0xBA, +0xBD, 0x02, 0x01, 0x48, 0xBD, 0x01, 0x01, 0x48, 0xA5, 0xA0, 0x9D, 0x02, 0x01, 0xA5, 0xA1, 0x9D, +0x01, 0x01, 0xC8, 0x20, 0xB7, 0x00, 0xC9, 0x2C, 0xF0, 0xD2, 0x84, 0x0F, 0x20, 0xB8, 0xDE, 0x68, +0x85, 0x11, 0x68, 0x85, 0x12, 0x29, 0x7F, 0x85, 0x10, 0xA6, 0x6B, 0xA5, 0x6C, 0x86, 0x9B, 0x85, +0x9C, 0xC5, 0x6E, 0xD0, 0x04, 0xE4, 0x6D, 0xF0, 0x3F, 0xA0, 0x00, 0xB1, 0x9B, 0xC8, 0xC5, 0x81, +0xD0, 0x06, 0xA5, 0x82, 0xD1, 0x9B, 0xF0, 0x16, 0xC8, 0xB1, 0x9B, 0x18, 0x65, 0x9B, 0xAA, 0xC8, +0xB1, 0x9B, 0x65, 0x9C, 0x90, 0xD7, 0xA2, 0x6B, 0x2C, 0xA2, 0x35, 0x4C, 0x12, 0xD4, 0xA2, 0x78, +0xA5, 0x10, 0xD0, 0xF7, 0xA5, 0x14, 0xF0, 0x02, 0x38, 0x60, 0x20, 0xED, 0xE0, 0xA5, 0x0F, 0xA0, +0x04, 0xD1, 0x9B, 0xD0, 0xE1, 0x4C, 0x4B, 0xE2, 0xA5, 0x14, 0xF0, 0x05, 0xA2, 0x2A, 0x4C, 0x12, +0xD4, 0x20, 0xED, 0xE0, 0x20, 0xE3, 0xD3, 0xA9, 0x00, 0xA8, 0x85, 0xAE, 0xA2, 0x05, 0xA5, 0x81, +0x91, 0x9B, 0x10, 0x01, 0xCA, 0xC8, 0xA5, 0x82, 0x91, 0x9B, 0x10, 0x02, 0xCA, 0xCA, 0x86, 0xAD, +0xA5, 0x0F, 0xC8, 0xC8, 0xC8, 0x91, 0x9B, 0xA2, 0x0B, 0xA9, 0x00, 0x24, 0x10, 0x50, 0x08, 0x68, +0x18, 0x69, 0x01, 0xAA, 0x68, 0x69, 0x00, 0xC8, 0x91, 0x9B, 0xC8, 0x8A, 0x91, 0x9B, 0x20, 0xAD, +0xE2, 0x86, 0xAD, 0x85, 0xAE, 0xA4, 0x5E, 0xC6, 0x0F, 0xD0, 0xDC, 0x65, 0x95, 0xB0, 0x5D, 0x85, +0x95, 0xA8, 0x8A, 0x65, 0x94, 0x90, 0x03, 0xC8, 0xF0, 0x52, 0x20, 0xE3, 0xD3, 0x85, 0x6D, 0x84, +0x6E, 0xA9, 0x00, 0xE6, 0xAE, 0xA4, 0xAD, 0xF0, 0x05, 0x88, 0x91, 0x94, 0xD0, 0xFB, 0xC6, 0x95, +0xC6, 0xAE, 0xD0, 0xF5, 0xE6, 0x95, 0x38, 0xA5, 0x6D, 0xE5, 0x9B, 0xA0, 0x02, 0x91, 0x9B, 0xA5, +0x6E, 0xC8, 0xE5, 0x9C, 0x91, 0x9B, 0xA5, 0x10, 0xD0, 0x62, 0xC8, 0xB1, 0x9B, 0x85, 0x0F, 0xA9, +0x00, 0x85, 0xAD, 0x85, 0xAE, 0xC8, 0x68, 0xAA, 0x85, 0xA0, 0x68, 0x85, 0xA1, 0xD1, 0x9B, 0x90, +0x0E, 0xD0, 0x06, 0xC8, 0x8A, 0xD1, 0x9B, 0x90, 0x07, 0x4C, 0x96, 0xE1, 0x4C, 0x10, 0xD4, 0xC8, +0xA5, 0xAE, 0x05, 0xAD, 0x18, 0xF0, 0x0A, 0x20, 0xAD, 0xE2, 0x8A, 0x65, 0xA0, 0xAA, 0x98, 0xA4, +0x5E, 0x65, 0xA1, 0x86, 0xAD, 0xC6, 0x0F, 0xD0, 0xCA, 0x85, 0xAE, 0xA2, 0x05, 0xA5, 0x81, 0x10, +0x01, 0xCA, 0xA5, 0x82, 0x10, 0x02, 0xCA, 0xCA, 0x86, 0x64, 0xA9, 0x00, 0x20, 0xB6, 0xE2, 0x8A, +0x65, 0x94, 0x85, 0x83, 0x98, 0x65, 0x95, 0x85, 0x84, 0xA8, 0xA5, 0x83, 0x60, 0x84, 0x5E, 0xB1, +0x9B, 0x85, 0x64, 0x88, 0xB1, 0x9B, 0x85, 0x65, 0xA9, 0x10, 0x85, 0x99, 0xA2, 0x00, 0xA0, 0x00, +0x8A, 0x0A, 0xAA, 0x98, 0x2A, 0xA8, 0xB0, 0xA4, 0x06, 0xAD, 0x26, 0xAE, 0x90, 0x0B, 0x18, 0x8A, +0x65, 0x64, 0xAA, 0x98, 0x65, 0x65, 0xA8, 0xB0, 0x93, 0xC6, 0x99, 0xD0, 0xE3, 0x60, 0xA5, 0x11, +0xF0, 0x03, 0x20, 0x00, 0xE6, 0x20, 0x84, 0xE4, 0x38, 0xA5, 0x6F, 0xE5, 0x6D, 0xA8, 0xA5, 0x70, +0xE5, 0x6E, 0xA2, 0x00, 0x86, 0x11, 0x85, 0x9E, 0x84, 0x9F, 0xA2, 0x90, 0x4C, 0x9B, 0xEB, 0xA4, +0x24, 0xA9, 0x00, 0x38, 0xF0, 0xEC, 0xA6, 0x76, 0xE8, 0xD0, 0xA1, 0xA2, 0x95, 0x2C, 0xA2, 0xE0, +0x4C, 0x12, 0xD4, 0x20, 0x41, 0xE3, 0x20, 0x06, 0xE3, 0x20, 0xBB, 0xDE, 0xA9, 0x80, 0x85, 0x14, +0x20, 0xE3, 0xDF, 0x20, 0x6A, 0xDD, 0x20, 0xB8, 0xDE, 0xA9, 0xD0, 0x20, 0xC0, 0xDE, 0x48, 0xA5, +0x84, 0x48, 0xA5, 0x83, 0x48, 0xA5, 0xB9, 0x48, 0xA5, 0xB8, 0x48, 0x20, 0x95, 0xD9, 0x4C, 0xAF, +0xE3, 0xA9, 0xC2, 0x20, 0xC0, 0xDE, 0x09, 0x80, 0x85, 0x14, 0x20, 0xEA, 0xDF, 0x85, 0x8A, 0x84, +0x8B, 0x4C, 0x6A, 0xDD, 0x20, 0x41, 0xE3, 0xA5, 0x8B, 0x48, 0xA5, 0x8A, 0x48, 0x20, 0xB2, 0xDE, +0x20, 0x6A, 0xDD, 0x68, 0x85, 0x8A, 0x68, 0x85, 0x8B, 0xA0, 0x02, 0xB1, 0x8A, 0x85, 0x83, 0xAA, +0xC8, 0xB1, 0x8A, 0xF0, 0x99, 0x85, 0x84, 0xC8, 0xB1, 0x83, 0x48, 0x88, 0x10, 0xFA, 0xA4, 0x84, +0x20, 0x2B, 0xEB, 0xA5, 0xB9, 0x48, 0xA5, 0xB8, 0x48, 0xB1, 0x8A, 0x85, 0xB8, 0xC8, 0xB1, 0x8A, +0x85, 0xB9, 0xA5, 0x84, 0x48, 0xA5, 0x83, 0x48, 0x20, 0x67, 0xDD, 0x68, 0x85, 0x8A, 0x68, 0x85, +0x8B, 0x20, 0xB7, 0x00, 0xF0, 0x03, 0x4C, 0xC9, 0xDE, 0x68, 0x85, 0xB8, 0x68, 0x85, 0xB9, 0xA0, +0x00, 0x68, 0x91, 0x8A, 0x68, 0xC8, 0x91, 0x8A, 0x68, 0xC8, 0x91, 0x8A, 0x68, 0xC8, 0x91, 0x8A, +0x68, 0xC8, 0x91, 0x8A, 0x60, 0x20, 0x6A, 0xDD, 0xA0, 0x00, 0x20, 0x36, 0xED, 0x68, 0x68, 0xA9, +0xFF, 0xA0, 0x00, 0xF0, 0x12, 0xA6, 0xA0, 0xA4, 0xA1, 0x86, 0x8C, 0x84, 0x8D, 0x20, 0x52, 0xE4, +0x86, 0x9E, 0x84, 0x9F, 0x85, 0x9D, 0x60, 0xA2, 0x22, 0x86, 0x0D, 0x86, 0x0E, 0x85, 0xAB, 0x84, +0xAC, 0x85, 0x9E, 0x84, 0x9F, 0xA0, 0xFF, 0xC8, 0xB1, 0xAB, 0xF0, 0x0C, 0xC5, 0x0D, 0xF0, 0x04, +0xC5, 0x0E, 0xD0, 0xF3, 0xC9, 0x22, 0xF0, 0x01, 0x18, 0x84, 0x9D, 0x98, 0x65, 0xAB, 0x85, 0xAD, +0xA6, 0xAC, 0x90, 0x01, 0xE8, 0x86, 0xAE, 0xA5, 0xAC, 0xF0, 0x04, 0xC9, 0x02, 0xD0, 0x0B, 0x98, +0x20, 0xD5, 0xE3, 0xA6, 0xAB, 0xA4, 0xAC, 0x20, 0xE2, 0xE5, 0xA6, 0x52, 0xE0, 0x5E, 0xD0, 0x05, +0xA2, 0xBF, 0x4C, 0x12, 0xD4, 0xA5, 0x9D, 0x95, 0x00, 0xA5, 0x9E, 0x95, 0x01, 0xA5, 0x9F, 0x95, +0x02, 0xA0, 0x00, 0x86, 0xA0, 0x84, 0xA1, 0x88, 0x84, 0x11, 0x86, 0x53, 0xE8, 0xE8, 0xE8, 0x86, +0x52, 0x60, 0x46, 0x13, 0x48, 0x49, 0xFF, 0x38, 0x65, 0x6F, 0xA4, 0x70, 0xB0, 0x01, 0x88, 0xC4, +0x6E, 0x90, 0x11, 0xD0, 0x04, 0xC5, 0x6D, 0x90, 0x0B, 0x85, 0x6F, 0x84, 0x70, 0x85, 0x71, 0x84, +0x72, 0xAA, 0x68, 0x60, 0xA2, 0x4D, 0xA5, 0x13, 0x30, 0xB8, 0x20, 0x84, 0xE4, 0xA9, 0x80, 0x85, +0x13, 0x68, 0xD0, 0xD0, 0xA6, 0x73, 0xA5, 0x74, 0x86, 0x6F, 0x85, 0x70, 0xA0, 0x00, 0x84, 0x8B, +0xA5, 0x6D, 0xA6, 0x6E, 0x85, 0x9B, 0x86, 0x9C, 0xA9, 0x55, 0xA2, 0x00, 0x85, 0x5E, 0x86, 0x5F, +0xC5, 0x52, 0xF0, 0x05, 0x20, 0x23, 0xE5, 0xF0, 0xF7, 0xA9, 0x07, 0x85, 0x8F, 0xA5, 0x69, 0xA6, +0x6A, 0x85, 0x5E, 0x86, 0x5F, 0xE4, 0x6C, 0xD0, 0x04, 0xC5, 0x6B, 0xF0, 0x05, 0x20, 0x19, 0xE5, +0xF0, 0xF3, 0x85, 0x94, 0x86, 0x95, 0xA9, 0x03, 0x85, 0x8F, 0xA5, 0x94, 0xA6, 0x95, 0xE4, 0x6E, +0xD0, 0x07, 0xC5, 0x6D, 0xD0, 0x03, 0x4C, 0x62, 0xE5, 0x85, 0x5E, 0x86, 0x5F, 0xA0, 0x00, 0xB1, +0x5E, 0xAA, 0xC8, 0xB1, 0x5E, 0x08, 0xC8, 0xB1, 0x5E, 0x65, 0x94, 0x85, 0x94, 0xC8, 0xB1, 0x5E, +0x65, 0x95, 0x85, 0x95, 0x28, 0x10, 0xD3, 0x8A, 0x30, 0xD0, 0xC8, 0xB1, 0x5E, 0xA0, 0x00, 0x0A, +0x69, 0x05, 0x65, 0x5E, 0x85, 0x5E, 0x90, 0x02, 0xE6, 0x5F, 0xA6, 0x5F, 0xE4, 0x95, 0xD0, 0x04, +0xC5, 0x94, 0xF0, 0xBA, 0x20, 0x23, 0xE5, 0xF0, 0xF3, 0xB1, 0x5E, 0x30, 0x35, 0xC8, 0xB1, 0x5E, +0x10, 0x30, 0xC8, 0xB1, 0x5E, 0xF0, 0x2B, 0xC8, 0xB1, 0x5E, 0xAA, 0xC8, 0xB1, 0x5E, 0xC5, 0x70, +0x90, 0x06, 0xD0, 0x1E, 0xE4, 0x6F, 0xB0, 0x1A, 0xC5, 0x9C, 0x90, 0x16, 0xD0, 0x04, 0xE4, 0x9B, +0x90, 0x10, 0x86, 0x9B, 0x85, 0x9C, 0xA5, 0x5E, 0xA6, 0x5F, 0x85, 0x8A, 0x86, 0x8B, 0xA5, 0x8F, +0x85, 0x91, 0xA5, 0x8F, 0x18, 0x65, 0x5E, 0x85, 0x5E, 0x90, 0x02, 0xE6, 0x5F, 0xA6, 0x5F, 0xA0, +0x00, 0x60, 0xA6, 0x8B, 0xF0, 0xF7, 0xA5, 0x91, 0x29, 0x04, 0x4A, 0xA8, 0x85, 0x91, 0xB1, 0x8A, +0x65, 0x9B, 0x85, 0x96, 0xA5, 0x9C, 0x69, 0x00, 0x85, 0x97, 0xA5, 0x6F, 0xA6, 0x70, 0x85, 0x94, +0x86, 0x95, 0x20, 0x9A, 0xD3, 0xA4, 0x91, 0xC8, 0xA5, 0x94, 0x91, 0x8A, 0xAA, 0xE6, 0x95, 0xA5, +0x95, 0xC8, 0x91, 0x8A, 0x4C, 0x88, 0xE4, 0xA5, 0xA1, 0x48, 0xA5, 0xA0, 0x48, 0x20, 0x60, 0xDE, +0x20, 0x6C, 0xDD, 0x68, 0x85, 0xAB, 0x68, 0x85, 0xAC, 0xA0, 0x00, 0xB1, 0xAB, 0x18, 0x71, 0xA0, +0x90, 0x05, 0xA2, 0xB0, 0x4C, 0x12, 0xD4, 0x20, 0xD5, 0xE3, 0x20, 0xD4, 0xE5, 0xA5, 0x8C, 0xA4, +0x8D, 0x20, 0x04, 0xE6, 0x20, 0xE6, 0xE5, 0xA5, 0xAB, 0xA4, 0xAC, 0x20, 0x04, 0xE6, 0x20, 0x2A, +0xE4, 0x4C, 0x95, 0xDD, 0xA0, 0x00, 0xB1, 0xAB, 0x48, 0xC8, 0xB1, 0xAB, 0xAA, 0xC8, 0xB1, 0xAB, +0xA8, 0x68, 0x86, 0x5E, 0x84, 0x5F, 0xA8, 0xF0, 0x0A, 0x48, 0x88, 0xB1, 0x5E, 0x91, 0x71, 0x98, +0xD0, 0xF8, 0x68, 0x18, 0x65, 0x71, 0x85, 0x71, 0x90, 0x02, 0xE6, 0x72, 0x60, 0x20, 0x6C, 0xDD, +0xA5, 0xA0, 0xA4, 0xA1, 0x85, 0x5E, 0x84, 0x5F, 0x20, 0x35, 0xE6, 0x08, 0xA0, 0x00, 0xB1, 0x5E, +0x48, 0xC8, 0xB1, 0x5E, 0xAA, 0xC8, 0xB1, 0x5E, 0xA8, 0x68, 0x28, 0xD0, 0x13, 0xC4, 0x70, 0xD0, +0x0F, 0xE4, 0x6F, 0xD0, 0x0B, 0x48, 0x18, 0x65, 0x6F, 0x85, 0x6F, 0x90, 0x02, 0xE6, 0x70, 0x68, +0x86, 0x5E, 0x84, 0x5F, 0x60, 0xC4, 0x54, 0xD0, 0x0C, 0xC5, 0x53, 0xD0, 0x08, 0x85, 0x52, 0xE9, +0x03, 0x85, 0x53, 0xA0, 0x00, 0x60, 0x20, 0xFB, 0xE6, 0x8A, 0x48, 0xA9, 0x01, 0x20, 0xDD, 0xE3, +0x68, 0xA0, 0x00, 0x91, 0x9E, 0x68, 0x68, 0x4C, 0x2A, 0xE4, 0x20, 0xB9, 0xE6, 0xD1, 0x8C, 0x98, +0x90, 0x04, 0xB1, 0x8C, 0xAA, 0x98, 0x48, 0x8A, 0x48, 0x20, 0xDD, 0xE3, 0xA5, 0x8C, 0xA4, 0x8D, +0x20, 0x04, 0xE6, 0x68, 0xA8, 0x68, 0x18, 0x65, 0x5E, 0x85, 0x5E, 0x90, 0x02, 0xE6, 0x5F, 0x98, +0x20, 0xE6, 0xE5, 0x4C, 0x2A, 0xE4, 0x20, 0xB9, 0xE6, 0x18, 0xF1, 0x8C, 0x49, 0xFF, 0x4C, 0x60, +0xE6, 0xA9, 0xFF, 0x85, 0xA1, 0x20, 0xB7, 0x00, 0xC9, 0x29, 0xF0, 0x06, 0x20, 0xBE, 0xDE, 0x20, +0xF8, 0xE6, 0x20, 0xB9, 0xE6, 0xCA, 0x8A, 0x48, 0x18, 0xA2, 0x00, 0xF1, 0x8C, 0xB0, 0xB8, 0x49, +0xFF, 0xC5, 0xA1, 0x90, 0xB3, 0xA5, 0xA1, 0xB0, 0xAF, 0x20, 0xB8, 0xDE, 0x68, 0xA8, 0x68, 0x85, +0x91, 0x68, 0x68, 0x68, 0xAA, 0x68, 0x85, 0x8C, 0x68, 0x85, 0x8D, 0xA5, 0x91, 0x48, 0x98, 0x48, +0xA0, 0x00, 0x8A, 0xF0, 0x1D, 0x60, 0x20, 0xDC, 0xE6, 0x4C, 0x01, 0xE3, 0x20, 0xFD, 0xE5, 0xA2, +0x00, 0x86, 0x11, 0xA8, 0x60, 0x20, 0xDC, 0xE6, 0xF0, 0x08, 0xA0, 0x00, 0xB1, 0x5E, 0xA8, 0x4C, +0x01, 0xE3, 0x4C, 0x99, 0xE1, 0x20, 0xB1, 0x00, 0x20, 0x67, 0xDD, 0x20, 0x08, 0xE1, 0xA6, 0xA0, +0xD0, 0xF0, 0xA6, 0xA1, 0x4C, 0xB7, 0x00, 0x20, 0xDC, 0xE6, 0xD0, 0x03, 0x4C, 0x4E, 0xE8, 0xA6, +0xB8, 0xA4, 0xB9, 0x86, 0xAD, 0x84, 0xAE, 0xA6, 0x5E, 0x86, 0xB8, 0x18, 0x65, 0x5E, 0x85, 0x60, +0xA6, 0x5F, 0x86, 0xB9, 0x90, 0x01, 0xE8, 0x86, 0x61, 0xA0, 0x00, 0xB1, 0x60, 0x48, 0xA9, 0x00, +0x91, 0x60, 0x20, 0xB7, 0x00, 0x20, 0x4A, 0xEC, 0x68, 0xA0, 0x00, 0x91, 0x60, 0xA6, 0xAD, 0xA4, +0xAE, 0x86, 0xB8, 0x84, 0xB9, 0x60, 0x20, 0x67, 0xDD, 0x20, 0x52, 0xE7, 0x20, 0xBE, 0xDE, 0x4C, +0xF8, 0xE6, 0xA5, 0x9D, 0xC9, 0x91, 0xB0, 0x9A, 0x20, 0xF2, 0xEB, 0xA5, 0xA0, 0xA4, 0xA1, 0x84, +0x50, 0x85, 0x51, 0x60, 0xA5, 0x50, 0x48, 0xA5, 0x51, 0x48, 0x20, 0x52, 0xE7, 0xA0, 0x00, 0xB1, +0x50, 0xA8, 0x68, 0x85, 0x51, 0x68, 0x85, 0x50, 0x4C, 0x01, 0xE3, 0x20, 0x46, 0xE7, 0x8A, 0xA0, +0x00, 0x91, 0x50, 0x60, 0x20, 0x46, 0xE7, 0x86, 0x85, 0xA2, 0x00, 0x20, 0xB7, 0x00, 0xF0, 0x03, +0x20, 0x4C, 0xE7, 0x86, 0x86, 0xA0, 0x00, 0xB1, 0x50, 0x45, 0x86, 0x25, 0x85, 0xF0, 0xF8, 0x60, +0xA9, 0x64, 0xA0, 0xEE, 0x4C, 0xBE, 0xE7, 0x20, 0xE3, 0xE9, 0xA5, 0xA2, 0x49, 0xFF, 0x85, 0xA2, +0x45, 0xAA, 0x85, 0xAB, 0xA5, 0x9D, 0x4C, 0xC1, 0xE7, 0x20, 0xF0, 0xE8, 0x90, 0x3C, 0x20, 0xE3, +0xE9, 0xD0, 0x03, 0x4C, 0x53, 0xEB, 0xA6, 0xAC, 0x86, 0x92, 0xA2, 0xA5, 0xA5, 0xA5, 0xA8, 0xF0, +0xCE, 0x38, 0xE5, 0x9D, 0xF0, 0x24, 0x90, 0x12, 0x84, 0x9D, 0xA4, 0xAA, 0x84, 0xA2, 0x49, 0xFF, +0x69, 0x00, 0xA0, 0x00, 0x84, 0x92, 0xA2, 0x9D, 0xD0, 0x04, 0xA0, 0x00, 0x84, 0xAC, 0xC9, 0xF9, +0x30, 0xC7, 0xA8, 0xA5, 0xAC, 0x56, 0x01, 0x20, 0x07, 0xE9, 0x24, 0xAB, 0x10, 0x57, 0xA0, 0x9D, +0xE0, 0xA5, 0xF0, 0x02, 0xA0, 0xA5, 0x38, 0x49, 0xFF, 0x65, 0x92, 0x85, 0xAC, 0xB9, 0x04, 0x00, +0xF5, 0x04, 0x85, 0xA1, 0xB9, 0x03, 0x00, 0xF5, 0x03, 0x85, 0xA0, 0xB9, 0x02, 0x00, 0xF5, 0x02, +0x85, 0x9F, 0xB9, 0x01, 0x00, 0xF5, 0x01, 0x85, 0x9E, 0xB0, 0x03, 0x20, 0x9E, 0xE8, 0xA0, 0x00, +0x98, 0x18, 0xA6, 0x9E, 0xD0, 0x4A, 0xA6, 0x9F, 0x86, 0x9E, 0xA6, 0xA0, 0x86, 0x9F, 0xA6, 0xA1, +0x86, 0xA0, 0xA6, 0xAC, 0x86, 0xA1, 0x84, 0xAC, 0x69, 0x08, 0xC9, 0x20, 0xD0, 0xE4, 0xA9, 0x00, +0x85, 0x9D, 0x85, 0xA2, 0x60, 0x65, 0x92, 0x85, 0xAC, 0xA5, 0xA1, 0x65, 0xA9, 0x85, 0xA1, 0xA5, +0xA0, 0x65, 0xA8, 0x85, 0xA0, 0xA5, 0x9F, 0x65, 0xA7, 0x85, 0x9F, 0xA5, 0x9E, 0x65, 0xA6, 0x85, +0x9E, 0x4C, 0x8D, 0xE8, 0x69, 0x01, 0x06, 0xAC, 0x26, 0xA1, 0x26, 0xA0, 0x26, 0x9F, 0x26, 0x9E, +0x10, 0xF2, 0x38, 0xE5, 0x9D, 0xB0, 0xC7, 0x49, 0xFF, 0x69, 0x01, 0x85, 0x9D, 0x90, 0x0E, 0xE6, +0x9D, 0xF0, 0x42, 0x66, 0x9E, 0x66, 0x9F, 0x66, 0xA0, 0x66, 0xA1, 0x66, 0xAC, 0x60, 0xA5, 0xA2, +0x49, 0xFF, 0x85, 0xA2, 0xA5, 0x9E, 0x49, 0xFF, 0x85, 0x9E, 0xA5, 0x9F, 0x49, 0xFF, 0x85, 0x9F, +0xA5, 0xA0, 0x49, 0xFF, 0x85, 0xA0, 0xA5, 0xA1, 0x49, 0xFF, 0x85, 0xA1, 0xA5, 0xAC, 0x49, 0xFF, +0x85, 0xAC, 0xE6, 0xAC, 0xD0, 0x0E, 0xE6, 0xA1, 0xD0, 0x0A, 0xE6, 0xA0, 0xD0, 0x06, 0xE6, 0x9F, +0xD0, 0x02, 0xE6, 0x9E, 0x60, 0xA2, 0x45, 0x4C, 0x12, 0xD4, 0xA2, 0x61, 0xB4, 0x04, 0x84, 0xAC, +0xB4, 0x03, 0x94, 0x04, 0xB4, 0x02, 0x94, 0x03, 0xB4, 0x01, 0x94, 0x02, 0xA4, 0xA4, 0x94, 0x01, +0x69, 0x08, 0x30, 0xE8, 0xF0, 0xE6, 0xE9, 0x08, 0xA8, 0xA5, 0xAC, 0xB0, 0x14, 0x16, 0x01, 0x90, +0x02, 0xF6, 0x01, 0x76, 0x01, 0x76, 0x01, 0x76, 0x02, 0x76, 0x03, 0x76, 0x04, 0x6A, 0xC8, 0xD0, +0xEC, 0x18, 0x60, 0x81, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7F, 0x5E, 0x56, 0xCB, 0x79, 0x80, 0x13, +0x9B, 0x0B, 0x64, 0x80, 0x76, 0x38, 0x93, 0x16, 0x82, 0x38, 0xAA, 0x3B, 0x20, 0x80, 0x35, 0x04, +0xF3, 0x34, 0x81, 0x35, 0x04, 0xF3, 0x34, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x31, 0x72, 0x17, +0xF8, 0x20, 0x82, 0xEB, 0xF0, 0x02, 0x10, 0x03, 0x4C, 0x99, 0xE1, 0xA5, 0x9D, 0xE9, 0x7F, 0x48, +0xA9, 0x80, 0x85, 0x9D, 0xA9, 0x2D, 0xA0, 0xE9, 0x20, 0xBE, 0xE7, 0xA9, 0x32, 0xA0, 0xE9, 0x20, +0x66, 0xEA, 0xA9, 0x13, 0xA0, 0xE9, 0x20, 0xA7, 0xE7, 0xA9, 0x18, 0xA0, 0xE9, 0x20, 0x5C, 0xEF, +0xA9, 0x37, 0xA0, 0xE9, 0x20, 0xBE, 0xE7, 0x68, 0x20, 0xD5, 0xEC, 0xA9, 0x3C, 0xA0, 0xE9, 0x20, +0xE3, 0xE9, 0xD0, 0x03, 0x4C, 0xE2, 0xE9, 0x20, 0x0E, 0xEA, 0xA9, 0x00, 0x85, 0x62, 0x85, 0x63, +0x85, 0x64, 0x85, 0x65, 0xA5, 0xAC, 0x20, 0xB0, 0xE9, 0xA5, 0xA1, 0x20, 0xB0, 0xE9, 0xA5, 0xA0, +0x20, 0xB0, 0xE9, 0xA5, 0x9F, 0x20, 0xB0, 0xE9, 0xA5, 0x9E, 0x20, 0xB5, 0xE9, 0x4C, 0xE6, 0xEA, +0xD0, 0x03, 0x4C, 0xDA, 0xE8, 0x4A, 0x09, 0x80, 0xA8, 0x90, 0x19, 0x18, 0xA5, 0x65, 0x65, 0xA9, +0x85, 0x65, 0xA5, 0x64, 0x65, 0xA8, 0x85, 0x64, 0xA5, 0x63, 0x65, 0xA7, 0x85, 0x63, 0xA5, 0x62, +0x65, 0xA6, 0x85, 0x62, 0x66, 0x62, 0x66, 0x63, 0x66, 0x64, 0x66, 0x65, 0x66, 0xAC, 0x98, 0x4A, +0xD0, 0xD6, 0x60, 0x85, 0x5E, 0x84, 0x5F, 0xA0, 0x04, 0xB1, 0x5E, 0x85, 0xA9, 0x88, 0xB1, 0x5E, +0x85, 0xA8, 0x88, 0xB1, 0x5E, 0x85, 0xA7, 0x88, 0xB1, 0x5E, 0x85, 0xAA, 0x45, 0xA2, 0x85, 0xAB, +0xA5, 0xAA, 0x09, 0x80, 0x85, 0xA6, 0x88, 0xB1, 0x5E, 0x85, 0xA5, 0xA5, 0x9D, 0x60, 0xA5, 0xA5, +0xF0, 0x1F, 0x18, 0x65, 0x9D, 0x90, 0x04, 0x30, 0x1D, 0x18, 0x2C, 0x10, 0x14, 0x69, 0x80, 0x85, +0x9D, 0xD0, 0x03, 0x4C, 0x52, 0xE8, 0xA5, 0xAB, 0x85, 0xA2, 0x60, 0xA5, 0xA2, 0x49, 0xFF, 0x30, +0x05, 0x68, 0x68, 0x4C, 0x4E, 0xE8, 0x4C, 0xD5, 0xE8, 0x20, 0x63, 0xEB, 0xAA, 0xF0, 0x10, 0x18, +0x69, 0x02, 0xB0, 0xF2, 0xA2, 0x00, 0x86, 0xAB, 0x20, 0xCE, 0xE7, 0xE6, 0x9D, 0xF0, 0xE7, 0x60, +0x84, 0x20, 0x00, 0x00, 0x00, 0x20, 0x63, 0xEB, 0xA9, 0x50, 0xA0, 0xEA, 0xA2, 0x00, 0x86, 0xAB, +0x20, 0xF9, 0xEA, 0x4C, 0x69, 0xEA, 0x20, 0xE3, 0xE9, 0xF0, 0x76, 0x20, 0x72, 0xEB, 0xA9, 0x00, +0x38, 0xE5, 0x9D, 0x85, 0x9D, 0x20, 0x0E, 0xEA, 0xE6, 0x9D, 0xF0, 0xBA, 0xA2, 0xFC, 0xA9, 0x01, +0xA4, 0xA6, 0xC4, 0x9E, 0xD0, 0x10, 0xA4, 0xA7, 0xC4, 0x9F, 0xD0, 0x0A, 0xA4, 0xA8, 0xC4, 0xA0, +0xD0, 0x04, 0xA4, 0xA9, 0xC4, 0xA1, 0x08, 0x2A, 0x90, 0x09, 0xE8, 0x95, 0x65, 0xF0, 0x32, 0x10, +0x34, 0xA9, 0x01, 0x28, 0xB0, 0x0E, 0x06, 0xA9, 0x26, 0xA8, 0x26, 0xA7, 0x26, 0xA6, 0xB0, 0xE6, +0x30, 0xCE, 0x10, 0xE2, 0xA8, 0xA5, 0xA9, 0xE5, 0xA1, 0x85, 0xA9, 0xA5, 0xA8, 0xE5, 0xA0, 0x85, +0xA8, 0xA5, 0xA7, 0xE5, 0x9F, 0x85, 0xA7, 0xA5, 0xA6, 0xE5, 0x9E, 0x85, 0xA6, 0x98, 0x4C, 0xA6, +0xEA, 0xA9, 0x40, 0xD0, 0xCE, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x85, 0xAC, 0x28, 0x4C, 0xE6, +0xEA, 0xA2, 0x85, 0x4C, 0x12, 0xD4, 0xA5, 0x62, 0x85, 0x9E, 0xA5, 0x63, 0x85, 0x9F, 0xA5, 0x64, +0x85, 0xA0, 0xA5, 0x65, 0x85, 0xA1, 0x4C, 0x2E, 0xE8, 0x85, 0x5E, 0x84, 0x5F, 0xA0, 0x04, 0xB1, +0x5E, 0x85, 0xA1, 0x88, 0xB1, 0x5E, 0x85, 0xA0, 0x88, 0xB1, 0x5E, 0x85, 0x9F, 0x88, 0xB1, 0x5E, +0x85, 0xA2, 0x09, 0x80, 0x85, 0x9E, 0x88, 0xB1, 0x5E, 0x85, 0x9D, 0x84, 0xAC, 0x60, 0xA2, 0x98, +0x2C, 0xA2, 0x93, 0xA0, 0x00, 0xF0, 0x04, 0xA6, 0x85, 0xA4, 0x86, 0x20, 0x72, 0xEB, 0x86, 0x5E, +0x84, 0x5F, 0xA0, 0x04, 0xA5, 0xA1, 0x91, 0x5E, 0x88, 0xA5, 0xA0, 0x91, 0x5E, 0x88, 0xA5, 0x9F, +0x91, 0x5E, 0x88, 0xA5, 0xA2, 0x09, 0x7F, 0x25, 0x9E, 0x91, 0x5E, 0x88, 0xA5, 0x9D, 0x91, 0x5E, +0x84, 0xAC, 0x60, 0xA5, 0xAA, 0x85, 0xA2, 0xA2, 0x05, 0xB5, 0xA4, 0x95, 0x9C, 0xCA, 0xD0, 0xF9, +0x86, 0xAC, 0x60, 0x20, 0x72, 0xEB, 0xA2, 0x06, 0xB5, 0x9C, 0x95, 0xA4, 0xCA, 0xD0, 0xF9, 0x86, +0xAC, 0x60, 0xA5, 0x9D, 0xF0, 0xFB, 0x06, 0xAC, 0x90, 0xF7, 0x20, 0xC6, 0xE8, 0xD0, 0xF2, 0x4C, +0x8F, 0xE8, 0xA5, 0x9D, 0xF0, 0x09, 0xA5, 0xA2, 0x2A, 0xA9, 0xFF, 0xB0, 0x02, 0xA9, 0x01, 0x60, +0x20, 0x82, 0xEB, 0x85, 0x9E, 0xA9, 0x00, 0x85, 0x9F, 0xA2, 0x88, 0xA5, 0x9E, 0x49, 0xFF, 0x2A, +0xA9, 0x00, 0x85, 0xA1, 0x85, 0xA0, 0x86, 0x9D, 0x85, 0xAC, 0x85, 0xA2, 0x4C, 0x29, 0xE8, 0x46, +0xA2, 0x60, 0x85, 0x60, 0x84, 0x61, 0xA0, 0x00, 0xB1, 0x60, 0xC8, 0xAA, 0xF0, 0xC4, 0xB1, 0x60, +0x45, 0xA2, 0x30, 0xC2, 0xE4, 0x9D, 0xD0, 0x21, 0xB1, 0x60, 0x09, 0x80, 0xC5, 0x9E, 0xD0, 0x19, +0xC8, 0xB1, 0x60, 0xC5, 0x9F, 0xD0, 0x12, 0xC8, 0xB1, 0x60, 0xC5, 0xA0, 0xD0, 0x0B, 0xC8, 0xA9, +0x7F, 0xC5, 0xAC, 0xB1, 0x60, 0xE5, 0xA1, 0xF0, 0x28, 0xA5, 0xA2, 0x90, 0x02, 0x49, 0xFF, 0x4C, +0x88, 0xEB, 0xA5, 0x9D, 0xF0, 0x4A, 0x38, 0xE9, 0xA0, 0x24, 0xA2, 0x10, 0x09, 0xAA, 0xA9, 0xFF, +0x85, 0xA4, 0x20, 0xA4, 0xE8, 0x8A, 0xA2, 0x9D, 0xC9, 0xF9, 0x10, 0x06, 0x20, 0xF0, 0xE8, 0x84, +0xA4, 0x60, 0xA8, 0xA5, 0xA2, 0x29, 0x80, 0x46, 0x9E, 0x05, 0x9E, 0x85, 0x9E, 0x20, 0x07, 0xE9, +0x84, 0xA4, 0x60, 0xA5, 0x9D, 0xC9, 0xA0, 0xB0, 0x20, 0x20, 0xF2, 0xEB, 0x84, 0xAC, 0xA5, 0xA2, +0x84, 0xA2, 0x49, 0x80, 0x2A, 0xA9, 0xA0, 0x85, 0x9D, 0xA5, 0xA1, 0x85, 0x0D, 0x4C, 0x29, 0xE8, +0x85, 0x9E, 0x85, 0x9F, 0x85, 0xA0, 0x85, 0xA1, 0xA8, 0x60, 0xA0, 0x00, 0xA2, 0x0A, 0x94, 0x99, +0xCA, 0x10, 0xFB, 0x90, 0x0F, 0xC9, 0x2D, 0xD0, 0x04, 0x86, 0xA3, 0xF0, 0x04, 0xC9, 0x2B, 0xD0, +0x05, 0x20, 0xB1, 0x00, 0x90, 0x5B, 0xC9, 0x2E, 0xF0, 0x2E, 0xC9, 0x45, 0xD0, 0x30, 0x20, 0xB1, +0x00, 0x90, 0x17, 0xC9, 0xC9, 0xF0, 0x0E, 0xC9, 0x2D, 0xF0, 0x0A, 0xC9, 0xC8, 0xF0, 0x08, 0xC9, +0x2B, 0xF0, 0x04, 0xD0, 0x07, 0x66, 0x9C, 0x20, 0xB1, 0x00, 0x90, 0x5C, 0x24, 0x9C, 0x10, 0x0E, +0xA9, 0x00, 0x38, 0xE5, 0x9A, 0x4C, 0xA0, 0xEC, 0x66, 0x9B, 0x24, 0x9B, 0x50, 0xC3, 0xA5, 0x9A, +0x38, 0xE5, 0x99, 0x85, 0x9A, 0xF0, 0x12, 0x10, 0x09, 0x20, 0x55, 0xEA, 0xE6, 0x9A, 0xD0, 0xF9, +0xF0, 0x07, 0x20, 0x39, 0xEA, 0xC6, 0x9A, 0xD0, 0xF9, 0xA5, 0xA3, 0x30, 0x01, 0x60, 0x4C, 0xD0, +0xEE, 0x48, 0x24, 0x9B, 0x10, 0x02, 0xE6, 0x99, 0x20, 0x39, 0xEA, 0x68, 0x38, 0xE9, 0x30, 0x20, +0xD5, 0xEC, 0x4C, 0x61, 0xEC, 0x48, 0x20, 0x63, 0xEB, 0x68, 0x20, 0x93, 0xEB, 0xA5, 0xAA, 0x45, +0xA2, 0x85, 0xAB, 0xA6, 0x9D, 0x4C, 0xC1, 0xE7, 0xA5, 0x9A, 0xC9, 0x0A, 0x90, 0x09, 0xA9, 0x64, +0x24, 0x9C, 0x30, 0x11, 0x4C, 0xD5, 0xE8, 0x0A, 0x0A, 0x18, 0x65, 0x9A, 0x0A, 0x18, 0xA0, 0x00, +0x71, 0xB8, 0x38, 0xE9, 0x30, 0x85, 0x9A, 0x4C, 0x87, 0xEC, 0x9B, 0x3E, 0xBC, 0x1F, 0xFD, 0x9E, +0x6E, 0x6B, 0x27, 0xFD, 0x9E, 0x6E, 0x6B, 0x28, 0x00, 0xA9, 0x58, 0xA0, 0xD3, 0x20, 0x31, 0xED, +0xA5, 0x76, 0xA6, 0x75, 0x85, 0x9E, 0x86, 0x9F, 0xA2, 0x90, 0x38, 0x20, 0xA0, 0xEB, 0x20, 0x34, +0xED, 0x4C, 0x3A, 0xDB, 0xA0, 0x01, 0xA9, 0x2D, 0x88, 0x24, 0xA2, 0x10, 0x04, 0xC8, 0x99, 0xFF, +0x00, 0x85, 0xA2, 0x84, 0xAD, 0xC8, 0xA9, 0x30, 0xA6, 0x9D, 0xD0, 0x03, 0x4C, 0x57, 0xEE, 0xA9, +0x00, 0xE0, 0x80, 0xF0, 0x02, 0xB0, 0x09, 0xA9, 0x14, 0xA0, 0xED, 0x20, 0x7F, 0xE9, 0xA9, 0xF7, +0x85, 0x99, 0xA9, 0x0F, 0xA0, 0xED, 0x20, 0xB2, 0xEB, 0xF0, 0x1E, 0x10, 0x12, 0xA9, 0x0A, 0xA0, +0xED, 0x20, 0xB2, 0xEB, 0xF0, 0x02, 0x10, 0x0E, 0x20, 0x39, 0xEA, 0xC6, 0x99, 0xD0, 0xEE, 0x20, +0x55, 0xEA, 0xE6, 0x99, 0xD0, 0xDC, 0x20, 0xA0, 0xE7, 0x20, 0xF2, 0xEB, 0xA2, 0x01, 0xA5, 0x99, +0x18, 0x69, 0x0A, 0x30, 0x09, 0xC9, 0x0B, 0xB0, 0x06, 0x69, 0xFF, 0xAA, 0xA9, 0x02, 0x38, 0xE9, +0x02, 0x85, 0x9A, 0x86, 0x99, 0x8A, 0xF0, 0x02, 0x10, 0x13, 0xA4, 0xAD, 0xA9, 0x2E, 0xC8, 0x99, +0xFF, 0x00, 0x8A, 0xF0, 0x06, 0xA9, 0x30, 0xC8, 0x99, 0xFF, 0x00, 0x84, 0xAD, 0xA0, 0x00, 0xA2, +0x80, 0xA5, 0xA1, 0x18, 0x79, 0x6C, 0xEE, 0x85, 0xA1, 0xA5, 0xA0, 0x79, 0x6B, 0xEE, 0x85, 0xA0, +0xA5, 0x9F, 0x79, 0x6A, 0xEE, 0x85, 0x9F, 0xA5, 0x9E, 0x79, 0x69, 0xEE, 0x85, 0x9E, 0xE8, 0xB0, +0x04, 0x10, 0xDE, 0x30, 0x02, 0x30, 0xDA, 0x8A, 0x90, 0x04, 0x49, 0xFF, 0x69, 0x0A, 0x69, 0x2F, +0xC8, 0xC8, 0xC8, 0xC8, 0x84, 0x83, 0xA4, 0xAD, 0xC8, 0xAA, 0x29, 0x7F, 0x99, 0xFF, 0x00, 0xC6, +0x99, 0xD0, 0x06, 0xA9, 0x2E, 0xC8, 0x99, 0xFF, 0x00, 0x84, 0xAD, 0xA4, 0x83, 0x8A, 0x49, 0xFF, +0x29, 0x80, 0xAA, 0xC0, 0x24, 0xD0, 0xAA, 0xA4, 0xAD, 0xB9, 0xFF, 0x00, 0x88, 0xC9, 0x30, 0xF0, +0xF8, 0xC9, 0x2E, 0xF0, 0x01, 0xC8, 0xA9, 0x2B, 0xA6, 0x9A, 0xF0, 0x2E, 0x10, 0x08, 0xA9, 0x00, +0x38, 0xE5, 0x9A, 0xAA, 0xA9, 0x2D, 0x99, 0x01, 0x01, 0xA9, 0x45, 0x99, 0x00, 0x01, 0x8A, 0xA2, +0x2F, 0x38, 0xE8, 0xE9, 0x0A, 0xB0, 0xFB, 0x69, 0x3A, 0x99, 0x03, 0x01, 0x8A, 0x99, 0x02, 0x01, +0xA9, 0x00, 0x99, 0x04, 0x01, 0xF0, 0x08, 0x99, 0xFF, 0x00, 0xA9, 0x00, 0x99, 0x00, 0x01, 0xA9, +0x00, 0xA0, 0x01, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x0A, 0x1F, 0x00, 0x00, 0x98, 0x96, +0x80, 0xFF, 0xF0, 0xBD, 0xC0, 0x00, 0x01, 0x86, 0xA0, 0xFF, 0xFF, 0xD8, 0xF0, 0x00, 0x00, 0x03, +0xE8, 0xFF, 0xFF, 0xFF, 0x9C, 0x00, 0x00, 0x00, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x63, 0xEB, +0xA9, 0x64, 0xA0, 0xEE, 0x20, 0xF9, 0xEA, 0xF0, 0x70, 0xA5, 0xA5, 0xD0, 0x03, 0x4C, 0x50, 0xE8, +0xA2, 0x8A, 0xA0, 0x00, 0x20, 0x2B, 0xEB, 0xA5, 0xAA, 0x10, 0x0F, 0x20, 0x23, 0xEC, 0xA9, 0x8A, +0xA0, 0x00, 0x20, 0xB2, 0xEB, 0xD0, 0x03, 0x98, 0xA4, 0x0D, 0x20, 0x55, 0xEB, 0x98, 0x48, 0x20, +0x41, 0xE9, 0xA9, 0x8A, 0xA0, 0x00, 0x20, 0x7F, 0xE9, 0x20, 0x09, 0xEF, 0x68, 0x4A, 0x90, 0x0A, +0xA5, 0x9D, 0xF0, 0x06, 0xA5, 0xA2, 0x49, 0xFF, 0x85, 0xA2, 0x60, 0x81, 0x38, 0xAA, 0x3B, 0x29, +0x07, 0x71, 0x34, 0x58, 0x3E, 0x56, 0x74, 0x16, 0x7E, 0xB3, 0x1B, 0x77, 0x2F, 0xEE, 0xE3, 0x85, +0x7A, 0x1D, 0x84, 0x1C, 0x2A, 0x7C, 0x63, 0x59, 0x58, 0x0A, 0x7E, 0x75, 0xFD, 0xE7, 0xC6, 0x80, +0x31, 0x72, 0x18, 0x10, 0x81, 0x00, 0x00, 0x00, 0x00, 0xA9, 0xDB, 0xA0, 0xEE, 0x20, 0x7F, 0xE9, +0xA5, 0xAC, 0x69, 0x50, 0x90, 0x03, 0x20, 0x7A, 0xEB, 0x85, 0x92, 0x20, 0x66, 0xEB, 0xA5, 0x9D, +0xC9, 0x88, 0x90, 0x03, 0x20, 0x2B, 0xEA, 0x20, 0x23, 0xEC, 0xA5, 0x0D, 0x18, 0x69, 0x81, 0xF0, +0xF3, 0x38, 0xE9, 0x01, 0x48, 0xA2, 0x05, 0xB5, 0xA5, 0xB4, 0x9D, 0x95, 0x9D, 0x94, 0xA5, 0xCA, +0x10, 0xF5, 0xA5, 0x92, 0x85, 0xAC, 0x20, 0xAA, 0xE7, 0x20, 0xD0, 0xEE, 0xA9, 0xE0, 0xA0, 0xEE, +0x20, 0x72, 0xEF, 0xA9, 0x00, 0x85, 0xAB, 0x68, 0x20, 0x10, 0xEA, 0x60, 0x85, 0xAD, 0x84, 0xAE, +0x20, 0x21, 0xEB, 0xA9, 0x93, 0x20, 0x7F, 0xE9, 0x20, 0x76, 0xEF, 0xA9, 0x93, 0xA0, 0x00, 0x4C, +0x7F, 0xE9, 0x85, 0xAD, 0x84, 0xAE, 0x20, 0x1E, 0xEB, 0xB1, 0xAD, 0x85, 0xA3, 0xA4, 0xAD, 0xC8, +0x98, 0xD0, 0x02, 0xE6, 0xAE, 0x85, 0xAD, 0xA4, 0xAE, 0x20, 0x7F, 0xE9, 0xA5, 0xAD, 0xA4, 0xAE, +0x18, 0x69, 0x05, 0x90, 0x01, 0xC8, 0x85, 0xAD, 0x84, 0xAE, 0x20, 0xBE, 0xE7, 0xA9, 0x98, 0xA0, +0x00, 0xC6, 0xA3, 0xD0, 0xE4, 0x60, 0x98, 0x35, 0x44, 0x7A, 0x68, 0x28, 0xB1, 0x46, 0x20, 0x82, +0xEB, 0xAA, 0x30, 0x18, 0xA9, 0xC9, 0xA0, 0x00, 0x20, 0xF9, 0xEA, 0x8A, 0xF0, 0xE7, 0xA9, 0xA6, +0xA0, 0xEF, 0x20, 0x7F, 0xE9, 0xA9, 0xAA, 0xA0, 0xEF, 0x20, 0xBE, 0xE7, 0xA6, 0xA1, 0xA5, 0x9E, +0x85, 0xA1, 0x86, 0x9E, 0xA9, 0x00, 0x85, 0xA2, 0xA5, 0x9D, 0x85, 0xAC, 0xA9, 0x80, 0x85, 0x9D, +0x20, 0x2E, 0xE8, 0xA2, 0xC9, 0xA0, 0x00, 0x4C, 0x2B, 0xEB, 0xA9, 0x66, 0xA0, 0xF0, 0x20, 0xBE, +0xE7, 0x20, 0x63, 0xEB, 0xA9, 0x6B, 0xA0, 0xF0, 0xA6, 0xAA, 0x20, 0x5E, 0xEA, 0x20, 0x63, 0xEB, +0x20, 0x23, 0xEC, 0xA9, 0x00, 0x85, 0xAB, 0x20, 0xAA, 0xE7, 0xA9, 0x70, 0xA0, 0xF0, 0x20, 0xA7, +0xE7, 0xA5, 0xA2, 0x48, 0x10, 0x0D, 0x20, 0xA0, 0xE7, 0xA5, 0xA2, 0x30, 0x09, 0xA5, 0x16, 0x49, +0xFF, 0x85, 0x16, 0x20, 0xD0, 0xEE, 0xA9, 0x70, 0xA0, 0xF0, 0x20, 0xBE, 0xE7, 0x68, 0x10, 0x03, +0x20, 0xD0, 0xEE, 0xA9, 0x75, 0xA0, 0xF0, 0x4C, 0x5C, 0xEF, 0x20, 0x21, 0xEB, 0xA9, 0x00, 0x85, +0x16, 0x20, 0xF1, 0xEF, 0xA2, 0x8A, 0xA0, 0x00, 0x20, 0xE7, 0xEF, 0xA9, 0x93, 0xA0, 0x00, 0x20, +0xF9, 0xEA, 0xA9, 0x00, 0x85, 0xA2, 0xA5, 0x16, 0x20, 0x62, 0xF0, 0xA9, 0x8A, 0xA0, 0x00, 0x4C, +0x66, 0xEA, 0x48, 0x4C, 0x23, 0xF0, 0x81, 0x49, 0x0F, 0xDA, 0xA2, 0x83, 0x49, 0x0F, 0xDA, 0xA2, +0x7F, 0x00, 0x00, 0x00, 0x00, 0x05, 0x84, 0xE6, 0x1A, 0x2D, 0x1B, 0x86, 0x28, 0x07, 0xFB, 0xF8, +0x87, 0x99, 0x68, 0x89, 0x01, 0x87, 0x23, 0x35, 0xDF, 0xE1, 0x86, 0xA5, 0x5D, 0xE7, 0x28, 0x83, +0x49, 0x0F, 0xDA, 0xA2, 0xA6, 0xD3, 0xC1, 0xC8, 0xD4, 0xC8, 0xD5, 0xC4, 0xCE, 0xCA, 0xA5, 0xA2, +0x48, 0x10, 0x03, 0x20, 0xD0, 0xEE, 0xA5, 0x9D, 0x48, 0xC9, 0x81, 0x90, 0x07, 0xA9, 0x13, 0xA0, +0xE9, 0x20, 0x66, 0xEA, 0xA9, 0xCE, 0xA0, 0xF0, 0x20, 0x5C, 0xEF, 0x68, 0xC9, 0x81, 0x90, 0x07, +0xA9, 0x66, 0xA0, 0xF0, 0x20, 0xA7, 0xE7, 0x68, 0x10, 0x03, 0x4C, 0xD0, 0xEE, 0x60, 0x0B, 0x76, +0xB3, 0x83, 0xBD, 0xD3, 0x79, 0x1E, 0xF4, 0xA6, 0xF5, 0x7B, 0x83, 0xFC, 0xB0, 0x10, 0x7C, 0x0C, +0x1F, 0x67, 0xCA, 0x7C, 0xDE, 0x53, 0xCB, 0xC1, 0x7D, 0x14, 0x64, 0x70, 0x4C, 0x7D, 0xB7, 0xEA, +0x51, 0x7A, 0x7D, 0x63, 0x30, 0x88, 0x7E, 0x7E, 0x92, 0x44, 0x99, 0x3A, 0x7E, 0x4C, 0xCC, 0x91, +0xC7, 0x7F, 0xAA, 0xAA, 0xAA, 0x13, 0x81, 0x00, 0x00, 0x00, 0x00, 0xE6, 0xB8, 0xD0, 0x02, 0xE6, +0xB9, 0xAD, 0x60, 0xEA, 0xC9, 0x3A, 0xB0, 0x0A, 0xC9, 0x20, 0xF0, 0xEF, 0x38, 0xE9, 0x30, 0x38, +0xE9, 0xD0, 0x60, 0x80, 0x4F, 0xC7, 0x52, 0x58, 0xA2, 0xFF, 0x86, 0x76, 0xA2, 0xFB, 0x9A, 0xA9, +0x28, 0xA0, 0xF1, 0x85, 0x01, 0x84, 0x02, 0x85, 0x04, 0x84, 0x05, 0x20, 0x73, 0xF2, 0xA9, 0x4C, +0x85, 0x00, 0x85, 0x03, 0x85, 0x90, 0x85, 0x0A, 0xA9, 0x99, 0xA0, 0xE1, 0x85, 0x0B, 0x84, 0x0C, +0xA2, 0x1C, 0xBD, 0x0A, 0xF1, 0x95, 0xB0, 0x86, 0xF1, 0xCA, 0xD0, 0xF6, 0x86, 0xF2, 0x8A, 0x85, +0xA4, 0x85, 0x54, 0x48, 0xA9, 0x03, 0x85, 0x8F, 0x20, 0xFB, 0xDA, 0xA9, 0x01, 0x8D, 0xFD, 0x01, +0x8D, 0xFC, 0x01, 0xA2, 0x55, 0x86, 0x52, 0xA9, 0x00, 0xA0, 0x08, 0x85, 0x50, 0x84, 0x51, 0xA0, +0x00, 0xE6, 0x51, 0xB1, 0x50, 0x49, 0xFF, 0x91, 0x50, 0xD1, 0x50, 0xD0, 0x08, 0x49, 0xFF, 0x91, +0x50, 0xD1, 0x50, 0xF0, 0xEC, 0xA4, 0x50, 0xA5, 0x51, 0x29, 0xF0, 0x84, 0x73, 0x85, 0x74, 0x84, +0x6F, 0x85, 0x70, 0xA2, 0x00, 0xA0, 0x08, 0x86, 0x67, 0x84, 0x68, 0xA0, 0x00, 0x84, 0xD6, 0x98, +0x91, 0x67, 0xE6, 0x67, 0xD0, 0x02, 0xE6, 0x68, 0xA5, 0x67, 0xA4, 0x68, 0x20, 0xE3, 0xD3, 0x20, +0x4B, 0xD6, 0xA9, 0x3A, 0xA0, 0xDB, 0x85, 0x04, 0x84, 0x05, 0xA9, 0x3C, 0xA0, 0xD4, 0x85, 0x01, +0x84, 0x02, 0x6C, 0x01, 0x00, 0x20, 0x67, 0xDD, 0x20, 0x52, 0xE7, 0x6C, 0x50, 0x00, 0x20, 0xF8, +0xE6, 0x8A, 0x4C, 0x8B, 0xFE, 0x20, 0xF8, 0xE6, 0x8A, 0x4C, 0x95, 0xFE, 0x20, 0xF8, 0xE6, 0xE0, +0x50, 0xB0, 0x13, 0x86, 0xF0, 0xA9, 0x2C, 0x20, 0xC0, 0xDE, 0x20, 0xF8, 0xE6, 0xE0, 0x30, 0xB0, +0x05, 0x86, 0x2C, 0x86, 0x2D, 0x60, 0x4C, 0x99, 0xE1, 0x20, 0xEC, 0xF1, 0xE4, 0xF0, 0xB0, 0x08, +0xA5, 0xF0, 0x85, 0x2C, 0x85, 0x2D, 0x86, 0xF0, 0xA9, 0xC5, 0x20, 0xC0, 0xDE, 0x20, 0xF8, 0xE6, +0xE0, 0x50, 0xB0, 0xE2, 0x60, 0x20, 0xEC, 0xF1, 0xA4, 0xF0, 0x20, 0x75, 0xF7, 0x8A, 0x4C, 0x9F, +0xF3, 0x00, 0x20, 0xD9, 0xF8, 0xA4, 0x2C, 0x20, 0x75, 0xF7, 0xE0, 0x30, 0xB0, 0xC8, 0x4C, 0x96, +0xF7, 0x20, 0x09, 0xF2, 0x8A, 0xA8, 0x20, 0x75, 0xF7, 0xA5, 0xF0, 0x4C, 0x83, 0xF7, 0x00, 0x20, +0xF8, 0xE6, 0x8A, 0x4C, 0x64, 0xF8, 0x20, 0xF8, 0xE6, 0xCA, 0x8A, 0xC9, 0x18, 0xB0, 0xA7, 0x4C, +0x5B, 0xFB, 0x20, 0xF8, 0xE6, 0x8A, 0x49, 0xFF, 0xAA, 0xE8, 0x86, 0xF1, 0x60, 0x38, 0x90, 0x18, +0x66, 0xF2, 0x60, 0xA9, 0xFF, 0xD0, 0x02, 0xA9, 0x3F, 0xA2, 0x00, 0x85, 0x32, 0x86, 0xF3, 0x60, +0xA9, 0x7F, 0xA2, 0x40, 0xD0, 0xF5, 0x20, 0x67, 0xDD, 0x20, 0x52, 0xE7, 0xA5, 0x50, 0xC5, 0x6D, +0xA5, 0x51, 0xE5, 0x6E, 0xB0, 0x03, 0x4C, 0x10, 0xD4, 0xA5, 0x50, 0x85, 0x73, 0x85, 0x6F, 0xA5, +0x51, 0x85, 0x74, 0x85, 0x70, 0x60, 0x20, 0x67, 0xDD, 0x20, 0x52, 0xE7, 0xA5, 0x50, 0xC5, 0x73, +0xA5, 0x51, 0xE5, 0x74, 0xB0, 0xE0, 0xA5, 0x50, 0xC5, 0x69, 0xA5, 0x51, 0xE5, 0x6A, 0x90, 0xD6, +0xA5, 0x50, 0x85, 0x69, 0xA5, 0x51, 0x85, 0x6A, 0x4C, 0x6C, 0xD6, 0xA9, 0xAB, 0x20, 0xC0, 0xDE, +0xA5, 0xB8, 0x85, 0xF4, 0xA5, 0xB9, 0x85, 0xF5, 0x38, 0x66, 0xD8, 0xA5, 0x75, 0x85, 0xF6, 0xA5, +0x76, 0x85, 0xF7, 0x20, 0xA6, 0xD9, 0x4C, 0x98, 0xD9, 0x86, 0xDE, 0xA6, 0xF8, 0x86, 0xDF, 0xA5, +0x75, 0x85, 0xDA, 0xA5, 0x76, 0x85, 0xDB, 0xA5, 0x79, 0x85, 0xDC, 0xA5, 0x7A, 0x85, 0xDD, 0xA5, +0xF4, 0x85, 0xB8, 0xA5, 0xF5, 0x85, 0xB9, 0xA5, 0xF6, 0x85, 0x75, 0xA5, 0xF7, 0x85, 0x76, 0x20, +0xB7, 0x00, 0x20, 0x3E, 0xD9, 0x4C, 0xD2, 0xD7, 0xA5, 0xDA, 0x85, 0x75, 0xA5, 0xDB, 0x85, 0x76, +0xA5, 0xDC, 0x85, 0xB8, 0xA5, 0xDD, 0x85, 0xB9, 0xA6, 0xDF, 0x9A, 0x4C, 0xD2, 0xD7, 0x4C, 0xC9, +0xDE, 0xB0, 0xFB, 0xA6, 0xAF, 0x86, 0x69, 0xA6, 0xB0, 0x86, 0x6A, 0x20, 0x0C, 0xDA, 0x20, 0x1A, +0xD6, 0xA5, 0x9B, 0x85, 0x60, 0xA5, 0x9C, 0x85, 0x61, 0xA9, 0x2C, 0x20, 0xC0, 0xDE, 0x20, 0x0C, +0xDA, 0xE6, 0x50, 0xD0, 0x02, 0xE6, 0x51, 0x20, 0x1A, 0xD6, 0xA5, 0x9B, 0xC5, 0x60, 0xA5, 0x9C, +0xE5, 0x61, 0xB0, 0x01, 0x60, 0xA0, 0x00, 0xB1, 0x9B, 0x91, 0x60, 0xE6, 0x9B, 0xD0, 0x02, 0xE6, +0x9C, 0xE6, 0x60, 0xD0, 0x02, 0xE6, 0x61, 0xA5, 0x69, 0xC5, 0x9B, 0xA5, 0x6A, 0xE5, 0x9C, 0xB0, +0xE6, 0xA6, 0x61, 0xA4, 0x60, 0xD0, 0x01, 0xCA, 0x88, 0x86, 0x6A, 0x84, 0x69, 0x4C, 0xF2, 0xD4, +0xAD, 0x56, 0xC0, 0xAD, 0x53, 0xC0, 0x4C, 0xEC, 0xD8, 0xAD, 0x54, 0xC0, 0x4C, 0x39, 0xFB, 0x4A, +0x08, 0x20, 0x47, 0xF8, 0x28, 0xA9, 0x0F, 0x90, 0x02, 0x69, 0xE0, 0x85, 0x2E, 0x5A, 0x20, 0xBB, +0xF7, 0x90, 0x0A, 0xDA, 0xA5, 0x30, 0xAA, 0x4A, 0x8A, 0x6A, 0x38, 0x85, 0x30, 0x20, 0x0E, 0xF8, +0x90, 0x07, 0xAD, 0x54, 0xC0, 0x86, 0x30, 0xFA, 0x18, 0x7A, 0x60, 0x20, 0x3A, 0xF9, 0x49, 0x80, +0x2D, 0x18, 0xC0, 0x2D, 0x1F, 0xC0, 0x0A, 0x60, 0x2C, 0x55, 0xC0, 0x2C, 0x52, 0xC0, 0xA9, 0x40, +0xD0, 0x08, 0xA9, 0x20, 0x2C, 0x54, 0xC0, 0x2C, 0x53, 0xC0, 0x85, 0xE6, 0xAD, 0x57, 0xC0, 0xAD, +0x50, 0xC0, 0xA9, 0x00, 0x85, 0x1C, 0xA5, 0xE6, 0x85, 0x1B, 0xA0, 0x00, 0x84, 0x1A, 0xA5, 0x1C, +0x91, 0x1A, 0x20, 0x7E, 0xF4, 0xC8, 0xD0, 0xF6, 0xE6, 0x1B, 0xA5, 0x1B, 0x29, 0x1F, 0xD0, 0xEE, +0x60, 0x85, 0xE2, 0x86, 0xE0, 0x84, 0xE1, 0x48, 0x29, 0xC0, 0x85, 0x26, 0x4A, 0x4A, 0x05, 0x26, +0x85, 0x26, 0x68, 0x85, 0x27, 0x0A, 0x0A, 0x0A, 0x26, 0x27, 0x0A, 0x26, 0x27, 0x0A, 0x66, 0x26, +0xA5, 0x27, 0x29, 0x1F, 0x05, 0xE6, 0x85, 0x27, 0x8A, 0xC0, 0x00, 0xF0, 0x05, 0xA0, 0x23, 0x69, +0x04, 0xC8, 0xE9, 0x07, 0xB0, 0xFB, 0x84, 0xE5, 0xAA, 0xBD, 0xB9, 0xF4, 0x85, 0x30, 0x98, 0x4A, +0xA5, 0xE4, 0x85, 0x1C, 0xB0, 0x28, 0x60, 0x20, 0x11, 0xF4, 0xA5, 0x1C, 0x51, 0x26, 0x25, 0x30, +0x51, 0x26, 0x91, 0x26, 0x60, 0x10, 0x23, 0xA5, 0x30, 0x4A, 0xB0, 0x05, 0x49, 0xC0, 0x85, 0x30, +0x60, 0x88, 0x10, 0x02, 0xA0, 0x27, 0xA9, 0xC0, 0x85, 0x30, 0x84, 0xE5, 0xA5, 0x1C, 0x0A, 0xC9, +0xC0, 0x10, 0x06, 0xA5, 0x1C, 0x49, 0x7F, 0x85, 0x1C, 0x60, 0xA5, 0x30, 0x0A, 0x49, 0x80, 0x30, +0xDD, 0xA9, 0x81, 0xC8, 0xC0, 0x28, 0x90, 0xE0, 0xA0, 0x00, 0xB0, 0xDC, 0x18, 0xA5, 0xD1, 0x29, +0x04, 0xF0, 0x25, 0xA9, 0x7F, 0x25, 0x30, 0x31, 0x26, 0xD0, 0x19, 0xE6, 0xEA, 0xA9, 0x7F, 0x25, +0x30, 0x10, 0x11, 0x18, 0xA5, 0xD1, 0x29, 0x04, 0xF0, 0x0E, 0xB1, 0x26, 0x45, 0x1C, 0x25, 0x30, +0xD0, 0x02, 0xE6, 0xEA, 0x51, 0x26, 0x91, 0x26, 0xA5, 0xD1, 0x65, 0xD3, 0x29, 0x03, 0xC9, 0x02, +0x6A, 0xB0, 0x92, 0x30, 0x30, 0x18, 0xA5, 0x27, 0x2C, 0xB9, 0xF5, 0xD0, 0x22, 0x06, 0x26, 0xB0, +0x1A, 0x2C, 0xCD, 0xF4, 0xF0, 0x05, 0x69, 0x1F, 0x38, 0xB0, 0x12, 0x69, 0x23, 0x48, 0xA5, 0x26, +0x69, 0xB0, 0xB0, 0x02, 0x69, 0xF0, 0x85, 0x26, 0x68, 0xB0, 0x02, 0x69, 0x1F, 0x66, 0x26, 0x69, +0xFC, 0x85, 0x27, 0x60, 0x18, 0xA5, 0x27, 0x69, 0x04, 0x2C, 0xB9, 0xF5, 0xD0, 0xF3, 0x06, 0x26, +0x90, 0x18, 0x69, 0xE0, 0x18, 0x2C, 0x08, 0xF5, 0xF0, 0x12, 0xA5, 0x26, 0x69, 0x50, 0x49, 0xF0, +0xF0, 0x02, 0x49, 0xF0, 0x85, 0x26, 0xA5, 0xE6, 0x90, 0x02, 0x69, 0xE0, 0x66, 0x26, 0x90, 0xD1, +0x48, 0xA9, 0x00, 0x85, 0xE0, 0x85, 0xE1, 0x85, 0xE2, 0x68, 0x48, 0x38, 0xE5, 0xE0, 0x48, 0x8A, +0xE5, 0xE1, 0x85, 0xD3, 0xB0, 0x0A, 0x68, 0x49, 0xFF, 0x69, 0x01, 0x48, 0xA9, 0x00, 0xE5, 0xD3, +0x85, 0xD1, 0x85, 0xD5, 0x68, 0x85, 0xD0, 0x85, 0xD4, 0x68, 0x85, 0xE0, 0x86, 0xE1, 0x98, 0x18, +0xE5, 0xE2, 0x90, 0x04, 0x49, 0xFF, 0x69, 0xFE, 0x85, 0xD2, 0x84, 0xE2, 0x66, 0xD3, 0x38, 0xE5, +0xD0, 0xAA, 0xA9, 0xFF, 0xE5, 0xD1, 0x85, 0x1D, 0xA4, 0xE5, 0xB0, 0x05, 0x0A, 0x20, 0x65, 0xF4, +0x38, 0xA5, 0xD4, 0x65, 0xD2, 0x85, 0xD4, 0xA5, 0xD5, 0xE9, 0x00, 0x85, 0xD5, 0xB1, 0x26, 0x45, +0x1C, 0x25, 0x30, 0x51, 0x26, 0x91, 0x26, 0xE8, 0xD0, 0x04, 0xE6, 0x1D, 0xF0, 0x62, 0xA5, 0xD3, +0xB0, 0xDA, 0x20, 0xD3, 0xF4, 0x18, 0xA5, 0xD4, 0x65, 0xD0, 0x85, 0xD4, 0xA5, 0xD5, 0x65, 0xD1, +0x50, 0xD9, 0x81, 0x82, 0x84, 0x88, 0x90, 0xA0, 0xC0, 0x1C, 0xFF, 0xFE, 0xFA, 0xF4, 0xEC, 0xE1, +0xD4, 0xC5, 0xB4, 0xA1, 0x8D, 0x78, 0x61, 0x49, 0x31, 0x18, 0xFF, 0xA5, 0x26, 0x0A, 0xA5, 0x27, +0x29, 0x03, 0x2A, 0x05, 0x26, 0x0A, 0x0A, 0x0A, 0x85, 0xE2, 0xA5, 0x27, 0x4A, 0x4A, 0x29, 0x07, +0x05, 0xE2, 0x85, 0xE2, 0xA5, 0xE5, 0x0A, 0x65, 0xE5, 0x0A, 0xAA, 0xCA, 0xA5, 0x30, 0x29, 0x7F, +0xE8, 0x4A, 0xD0, 0xFC, 0x85, 0xE1, 0x8A, 0x18, 0x65, 0xE5, 0x90, 0x02, 0xE6, 0xE1, 0x85, 0xE0, +0x60, 0x86, 0x1A, 0x84, 0x1B, 0xAA, 0x4A, 0x4A, 0x4A, 0x4A, 0x85, 0xD3, 0x8A, 0x29, 0x0F, 0xAA, +0xBC, 0xBA, 0xF5, 0x84, 0xD0, 0x49, 0x0F, 0xAA, 0xBC, 0xBB, 0xF5, 0xC8, 0x84, 0xD2, 0xA4, 0xE5, +0xA2, 0x00, 0x86, 0xEA, 0xA1, 0x1A, 0x85, 0xD1, 0xA2, 0x80, 0x86, 0xD4, 0x86, 0xD5, 0xA6, 0xE7, +0xA5, 0xD4, 0x38, 0x65, 0xD0, 0x85, 0xD4, 0x90, 0x04, 0x20, 0xB3, 0xF4, 0x18, 0xA5, 0xD5, 0x65, +0xD2, 0x85, 0xD5, 0x90, 0x03, 0x20, 0xB4, 0xF4, 0xCA, 0xD0, 0xE5, 0xA5, 0xD1, 0x4A, 0x4A, 0x4A, +0xD0, 0xD4, 0xE6, 0x1A, 0xD0, 0x02, 0xE6, 0x1B, 0xA1, 0x1A, 0xD0, 0xCA, 0x60, 0x86, 0x1A, 0x84, +0x1B, 0xAA, 0x4A, 0x4A, 0x4A, 0x4A, 0x85, 0xD3, 0x8A, 0x29, 0x0F, 0xAA, 0xBC, 0xBA, 0xF5, 0x84, +0xD0, 0x49, 0x0F, 0xAA, 0xBC, 0xBB, 0xF5, 0xC8, 0x84, 0xD2, 0xA4, 0xE5, 0xA2, 0x00, 0x86, 0xEA, +0xA1, 0x1A, 0x85, 0xD1, 0xA2, 0x80, 0x86, 0xD4, 0x86, 0xD5, 0xA6, 0xE7, 0xA5, 0xD4, 0x38, 0x65, +0xD0, 0x85, 0xD4, 0x90, 0x04, 0x20, 0x9C, 0xF4, 0x18, 0xA5, 0xD5, 0x65, 0xD2, 0x85, 0xD5, 0x90, +0x03, 0x20, 0x9D, 0xF4, 0xCA, 0xD0, 0xE5, 0xA5, 0xD1, 0x4A, 0x4A, 0x4A, 0xD0, 0xD4, 0xE6, 0x1A, +0xD0, 0x02, 0xE6, 0x1B, 0xA1, 0x1A, 0xD0, 0xCA, 0x60, 0x20, 0x67, 0xDD, 0x20, 0x52, 0xE7, 0xA4, +0x51, 0xA6, 0x50, 0xC0, 0x01, 0x90, 0x06, 0xD0, 0x1D, 0xE0, 0x18, 0xB0, 0x19, 0x8A, 0x48, 0x98, +0x48, 0xA9, 0x2C, 0x20, 0xC0, 0xDE, 0x20, 0xF8, 0xE6, 0xE0, 0xC0, 0xB0, 0x09, 0x86, 0x9D, 0x68, +0xA8, 0x68, 0xAA, 0xA5, 0x9D, 0x60, 0x4C, 0x06, 0xF2, 0x20, 0xF8, 0xE6, 0xE0, 0x08, 0xB0, 0xF6, +0xBD, 0xF6, 0xF6, 0x85, 0xE4, 0x60, 0x00, 0x2A, 0x55, 0x7F, 0x80, 0xAA, 0xD5, 0xFF, 0xC9, 0xC1, +0xF0, 0x0D, 0x20, 0xB9, 0xF6, 0x20, 0x57, 0xF4, 0x20, 0xB7, 0x00, 0xC9, 0xC1, 0xD0, 0xE6, 0x20, +0xC0, 0xDE, 0x20, 0xB9, 0xF6, 0x84, 0x9D, 0xA8, 0x8A, 0xA6, 0x9D, 0x20, 0x3A, 0xF5, 0x4C, 0x08, +0xF7, 0x20, 0xF8, 0xE6, 0x86, 0xF9, 0x60, 0x20, 0xF8, 0xE6, 0x86, 0xE7, 0x60, 0x20, 0xF8, 0xE6, +0xA5, 0xE8, 0x85, 0x1A, 0xA5, 0xE9, 0x85, 0x1B, 0x8A, 0xA2, 0x00, 0xC1, 0x1A, 0xF0, 0x02, 0xB0, +0xA5, 0x0A, 0x90, 0x03, 0xE6, 0x1B, 0x18, 0xA8, 0xB1, 0x1A, 0x65, 0x1A, 0xAA, 0xC8, 0xB1, 0x1A, +0x65, 0xE9, 0x85, 0x1B, 0x86, 0x1A, 0x20, 0xB7, 0x00, 0xC9, 0xC5, 0xD0, 0x09, 0x20, 0xC0, 0xDE, +0x20, 0xB9, 0xF6, 0x20, 0x11, 0xF4, 0xA5, 0xF9, 0x60, 0x20, 0x2D, 0xF7, 0x4C, 0x05, 0xF6, 0x20, +0x2D, 0xF7, 0x4C, 0x61, 0xF6, 0x20, 0xCB, 0xF3, 0xB0, 0x04, 0xC0, 0x28, 0xB0, 0xC1, 0xC0, 0x50, +0xB0, 0xBD, 0x60, 0x48, 0xA5, 0x2D, 0xC9, 0x30, 0x68, 0xB0, 0xB4, 0x48, 0x20, 0x9F, 0xF3, 0x68, +0xC5, 0x2D, 0x1A, 0x90, 0xF6, 0x60, 0x8A, 0xA4, 0xF0, 0x20, 0x9F, 0xF3, 0xC4, 0x2C, 0xB0, 0xF5, +0xC8, 0x20, 0xAD, 0xF3, 0x80, 0xF6, 0x48, 0x20, 0xBB, 0xF7, 0x68, 0x08, 0x20, 0x71, 0xF8, 0x28, +0x90, 0x08, 0x8D, 0x54, 0xC0, 0xC9, 0x08, 0x0A, 0x29, 0x0F, 0x60, 0x20, 0xCB, 0xF3, 0x90, 0x0A, +0x98, 0x49, 0x01, 0x4A, 0xA8, 0x90, 0x03, 0xAD, 0x55, 0xC0, 0x60, 0x8A, 0x2C, 0x1F, 0xC0, 0x30, +0x12, 0x2C, 0x85, 0x24, 0x38, 0x8A, 0xE5, 0x24, 0x60, 0xA9, 0x40, 0x85, 0x14, 0x20, 0xE3, 0xDF, +0x64, 0x14, 0x60, 0xED, 0x7B, 0x05, 0x60, 0x20, 0xF8, 0xE6, 0xCA, 0xA9, 0x28, 0xC5, 0x21, 0xB0, +0x02, 0xA5, 0x21, 0x20, 0xD2, 0xF7, 0x86, 0x24, 0x90, 0xDE, 0xAA, 0x20, 0xFB, 0xDA, 0x80, 0xEB, +0x4A, 0x08, 0x20, 0x47, 0xF8, 0x28, 0xA9, 0x0F, 0x90, 0x02, 0x69, 0xE0, 0x85, 0x2E, 0xB1, 0x26, +0x45, 0x30, 0x25, 0x2E, 0x51, 0x26, 0x91, 0x26, 0x60, 0x20, 0x00, 0xF8, 0xC4, 0x2C, 0xB0, 0x11, +0xC8, 0x20, 0x0E, 0xF8, 0x90, 0xF6, 0x69, 0x01, 0x48, 0x20, 0x00, 0xF8, 0x68, 0xC5, 0x2D, 0x90, +0xF5, 0x60, 0xA0, 0x2F, 0xD0, 0x02, 0xA0, 0x27, 0x84, 0x2D, 0xA0, 0x27, 0xA9, 0x00, 0x85, 0x30, +0x20, 0x28, 0xF8, 0x88, 0x10, 0xF6, 0x60, 0x48, 0x4A, 0x29, 0x03, 0x09, 0x04, 0x85, 0x27, 0x68, +0x29, 0x18, 0x90, 0x02, 0x69, 0x7F, 0x85, 0x26, 0x0A, 0x0A, 0x05, 0x26, 0x85, 0x26, 0x60, 0xA5, +0x30, 0x18, 0x69, 0x03, 0x29, 0x0F, 0x85, 0x30, 0x0A, 0x0A, 0x0A, 0x0A, 0x05, 0x30, 0x85, 0x30, +0x60, 0x4A, 0x08, 0x20, 0x47, 0xF8, 0xB1, 0x26, 0x28, 0x90, 0x04, 0x4A, 0x4A, 0x4A, 0x4A, 0x29, +0x0F, 0x60, 0xF4, 0xE1, 0xE1, 0xAB, 0xAB, 0x60, 0xA0, 0x94, 0x80, 0x10, 0xA1, 0x3A, 0x38, 0x90, +0x18, 0x4C, 0xCC, 0xFF, 0x4C, 0x59, 0xA9, 0x4C, 0x5E, 0xA9, 0xA0, 0xA0, 0x08, 0x18, 0xFB, 0x28, +0xE2, 0x30, 0x48, 0xAD, 0x36, 0xC0, 0x48, 0x09, 0x80, 0x8D, 0x36, 0xC0, 0x22, 0x88, 0x9F, 0xFF, +0x68, 0x8D, 0x36, 0xC0, 0x68, 0x08, 0x38, 0xFB, 0x28, 0x60, 0x9C, 0x00, 0x08, 0x18, 0xFB, 0xC2, +0x30, 0xA2, 0x00, 0x08, 0x9B, 0xC8, 0xA9, 0xFE, 0xB7, 0x54, 0x00, 0x00, 0x80, 0xE7, 0x00, 0x00, +0xA0, 0x99, 0x80, 0xC8, 0x08, 0x18, 0xFB, 0x28, 0x6B, 0x20, 0xF8, 0xE6, 0xE0, 0x50, 0xB0, 0x11, +0x86, 0xF0, 0x20, 0xBE, 0xDE, 0x20, 0xF8, 0xE6, 0xE0, 0x50, 0x86, 0x2C, 0x86, 0x2D, 0x4C, 0x0C, +0xF2, 0x4C, 0x06, 0xF2, 0x20, 0xBA, 0xF8, 0x20, 0x60, 0xFB, 0xA0, 0x9D, 0x20, 0x9C, 0xF8, 0x20, +0xDA, 0xF9, 0xAF, 0x41, 0x01, 0xE1, 0x30, 0x01, 0x60, 0x18, 0xFB, 0x22, 0x12, 0x92, 0xFF, 0x38, +0xFB, 0x4C, 0x62, 0xFA, 0x5A, 0xA0, 0x9A, 0x90, 0x02, 0xA0, 0x9F, 0x20, 0x9C, 0xF8, 0x7A, 0x60, +0xEB, 0xAF, 0x36, 0x01, 0xE1, 0x4A, 0x90, 0x06, 0xD0, 0x04, 0x8F, 0x36, 0x01, 0xE1, 0xEB, 0x60, +0xC6, 0xAE, 0xA0, 0xC2, 0xE1, 0xE3, 0xE8, 0xED, 0xE1, 0xEE, 0xAD, 0x46, 0xC0, 0x0A, 0x0A, 0x60, +0x98, 0x20, 0xDA, 0xFD, 0x8A, 0x4C, 0xDA, 0xFD, 0xA2, 0x03, 0xA9, 0xA0, 0x20, 0xED, 0xFD, 0xCA, +0xD0, 0xF8, 0x60, 0x38, 0xA5, 0x2F, 0xA4, 0x3B, 0xAA, 0x10, 0x01, 0x88, 0x65, 0x3A, 0x90, 0x01, +0xC8, 0x60, 0xE2, 0x40, 0x18, 0xFB, 0x08, 0xC2, 0x30, 0x50, 0xB8, 0xF4, 0xE1, 0x00, 0xF4, 0x70, +0x01, 0xA2, 0x03, 0x12, 0x70, 0x03, 0xA2, 0x03, 0x13, 0x22, 0x00, 0x00, 0xE1, 0xB0, 0xEB, 0x28, +0xA9, 0x08, 0x0C, 0x41, 0xC0, 0xFB, 0x60, 0xBC, 0xB2, 0xBE, 0x9A, 0xEF, 0xC4, 0xE9, 0xA9, 0xBB, +0xA6, 0xA4, 0x06, 0x95, 0x07, 0x02, 0x05, 0x00, 0xF1, 0xEB, 0x93, 0xA7, 0xC6, 0x99, 0x96, 0xED, +0xEC, 0x9B, 0xF5, 0xF3, 0xEA, 0xEE, 0xAB, 0xAD, 0xA3, 0xF8, 0x9C, 0xC7, 0xAC, 0x12, 0xC9, 0xDA, +0xDB, 0x8C, 0xDD, 0x96, 0xEB, 0x0A, 0x0A, 0xDC, 0xFD, 0x83, 0x7F, 0xD4, 0xD0, 0xCF, 0xD6, 0x0A, +0x0A, 0xF5, 0x00, 0xD5, 0xD8, 0xD7, 0xD1, 0xD3, 0xD2, 0xBE, 0xCE, 0xE0, 0x4D, 0x0A, 0x0A, 0xB3, +0xCD, 0x18, 0xFB, 0x08, 0x22, 0x03, 0x1C, 0xFF, 0x28, 0xFB, 0x78, 0xA9, 0x10, 0x0C, 0x27, 0xC0, +0x58, 0xAF, 0x38, 0x01, 0xE1, 0x8D, 0x2D, 0xC0, 0xA4, 0x00, 0x5A, 0xA4, 0x01, 0x5A, 0xA9, 0x00, +0x48, 0xA9, 0xC8, 0x64, 0x00, 0x85, 0x01, 0x18, 0x68, 0x2A, 0x48, 0xA0, 0x05, 0xC6, 0x01, 0xA5, +0x01, 0xC9, 0xC4, 0x90, 0x14, 0xB1, 0x00, 0xD9, 0x01, 0xFB, 0xD0, 0xEB, 0x88, 0x88, 0x10, 0xF5, +0xB1, 0x00, 0xF0, 0xE4, 0x1A, 0xD0, 0xE0, 0xF0, 0xDF, 0x68, 0x7A, 0x84, 0x01, 0x7A, 0x84, 0x00, +0x4C, 0xDB, 0xFF, 0xAF, 0xD9, 0x02, 0xE1, 0xD0, 0x02, 0x1A, 0x60, 0xA2, 0x00, 0xAD, 0x05, 0xC3, +0xC9, 0x38, 0xD0, 0x0A, 0xAD, 0x07, 0xC3, 0xC9, 0x18, 0xD0, 0x03, 0xE8, 0xD0, 0xEF, 0x60, 0x00, +0x4C, 0x74, 0xC0, 0x20, 0x3A, 0xFF, 0x20, 0xDA, 0xF9, 0x4C, 0x6C, 0xFF, 0x28, 0x20, 0x4C, 0xFF, +0x68, 0x85, 0x3A, 0x68, 0x85, 0x3B, 0x6C, 0xF0, 0x03, 0xA0, 0x93, 0x20, 0x9C, 0xF8, 0x80, 0xE3, +0x00, 0x00, 0xA9, 0x01, 0x0C, 0x29, 0xC0, 0xA9, 0xFB, 0x78, 0xD8, 0x1B, 0x20, 0x36, 0xFE, 0xA9, +0x0C, 0x8D, 0x68, 0xC0, 0xA0, 0x09, 0x20, 0x9C, 0xF8, 0xAD, 0xFF, 0xCF, 0x2C, 0x10, 0xC0, 0x20, +0x23, 0xFA, 0xD0, 0x03, 0x20, 0x12, 0xFD, 0x20, 0x9A, 0xF8, 0xAD, 0xF3, 0x03, 0x49, 0xA5, 0xCD, +0xF4, 0x03, 0xD0, 0x12, 0xAD, 0xF2, 0x03, 0xD0, 0x42, 0xA9, 0xE0, 0xCD, 0xF3, 0x03, 0xD0, 0x3B, +0xA0, 0x03, 0x4C, 0xE6, 0xFE, 0x00, 0x20, 0xF4, 0xF8, 0xA2, 0x05, 0xBD, 0xFC, 0xFA, 0x9D, 0xEF, +0x03, 0xCA, 0xD0, 0xF7, 0x80, 0x2B, 0x85, 0x01, 0x64, 0x00, 0xA0, 0x05, 0xC6, 0x01, 0xA9, 0x00, +0xA5, 0x01, 0xC9, 0xC0, 0xF0, 0x32, 0x8D, 0xF8, 0x07, 0xB1, 0x00, 0xD9, 0x01, 0xFB, 0xD0, 0xEA, +0x88, 0x88, 0x10, 0xF5, 0x6C, 0x00, 0x00, 0xA0, 0xA5, 0x80, 0x1F, 0x20, 0xD1, 0xF9, 0x6C, 0xF2, +0x03, 0xAF, 0xE8, 0x02, 0xE1, 0xF0, 0x0D, 0xC9, 0x07, 0xF0, 0x39, 0x90, 0x02, 0xA9, 0x05, 0x09, +0xC0, 0x1A, 0x80, 0xC2, 0xA9, 0xC8, 0x80, 0xBE, 0xA0, 0x98, 0x4C, 0x9C, 0xF8, 0x59, 0xFA, 0x00, +0xE0, 0x45, 0x20, 0xFF, 0x00, 0xFF, 0x03, 0xFF, 0x3C, 0xC1, 0xF0, 0xF0, 0xEC, 0xE5, 0xA0, 0xDD, +0xDB, 0xC4, 0xC2, 0xC1, 0xFF, 0xC3, 0xFF, 0xFF, 0xCD, 0xC1, 0xD8, 0xD9, 0xD0, 0xD3, 0x4C, 0xEB, +0xFB, 0x4C, 0xE6, 0xFB, 0x2C, 0x2D, 0xC0, 0x30, 0xC6, 0x4C, 0xE0, 0xC7, 0x4C, 0x7B, 0xA9, 0xA9, +0x00, 0x85, 0x48, 0xAD, 0x56, 0xC0, 0xAD, 0x54, 0xC0, 0xAD, 0x51, 0xC0, 0xA9, 0x00, 0xF0, 0x0B, +0xAD, 0x50, 0xC0, 0xAD, 0x53, 0xC0, 0x20, 0x36, 0xF8, 0xA9, 0x14, 0x85, 0x22, 0xA9, 0x00, 0x85, +0x20, 0xA0, 0x0C, 0x80, 0xA5, 0x7F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x85, 0x25, 0x4C, 0x22, 0xFC, +0x20, 0x58, 0xFC, 0xA0, 0xA4, 0x80, 0x93, 0x05, 0x07, 0x0B, 0xFB, 0x38, 0x18, 0x01, 0xD6, 0xAD, +0xF3, 0x03, 0x49, 0xA5, 0x8D, 0xF4, 0x03, 0x60, 0xC9, 0x8D, 0xD0, 0x18, 0xAC, 0x00, 0xC0, 0x10, +0x13, 0xC0, 0x93, 0xD0, 0x0F, 0x2C, 0x10, 0xC0, 0xAC, 0x00, 0xC0, 0x10, 0xFB, 0xC0, 0x83, 0xF0, +0x03, 0x2C, 0x10, 0xC0, 0x80, 0x67, 0xA8, 0xB9, 0x48, 0xFA, 0x20, 0xAC, 0xFB, 0x20, 0x02, 0xFD, +0xC9, 0xCE, 0xB0, 0x08, 0xC9, 0xC9, 0x90, 0x04, 0xC9, 0xCC, 0xD0, 0xEA, 0xC9, 0xB8, 0x38, 0xD0, +0x7B, 0x80, 0x01, 0x06, 0x20, 0x2B, 0xFA, 0xD0, 0x73, 0x20, 0x90, 0xFC, 0x4C, 0xEF, 0xFE, 0x00, +0xE0, 0x48, 0x4A, 0x29, 0x03, 0x09, 0x04, 0x85, 0x29, 0x68, 0x29, 0x18, 0x90, 0x02, 0x69, 0x7F, +0x85, 0x28, 0x0A, 0x0A, 0x05, 0x28, 0x85, 0x28, 0x60, 0xC9, 0x87, 0xD0, 0x1F, 0xA0, 0x9E, 0x80, +0x48, 0xEA, 0x80, 0xF9, 0x80, 0xF7, 0xBD, 0x64, 0xC0, 0x10, 0xFB, 0xA0, 0x95, 0x80, 0x3A, 0x00, +0xA4, 0x24, 0x91, 0x28, 0xE6, 0x24, 0xA5, 0x24, 0xC5, 0x21, 0xB0, 0x66, 0x60, 0x80, 0x5D, 0xB0, +0xEF, 0xA8, 0x10, 0xEC, 0xC9, 0x8D, 0xF0, 0x5A, 0xC9, 0x8A, 0xF0, 0x5A, 0xC9, 0x88, 0xD0, 0x75, +0x5A, 0xA0, 0x9B, 0x20, 0x9C, 0xF8, 0x30, 0x63, 0x7A, 0x60, 0xA5, 0x22, 0xC5, 0x25, 0xB0, 0xDC, +0xC6, 0x25, 0xA5, 0x25, 0x85, 0x28, 0x98, 0xA0, 0x04, 0x4C, 0x9C, 0xF8, 0x49, 0xC0, 0xF0, 0x28, +0x69, 0xFD, 0x90, 0xC0, 0xF0, 0xDA, 0x69, 0xFD, 0x90, 0x2C, 0xF0, 0xDE, 0x69, 0xFD, 0x90, 0x5C, +0xD0, 0xBA, 0xA0, 0x0A, 0xD0, 0xE3, 0x2C, 0x1F, 0xC0, 0x10, 0x04, 0xA0, 0x00, 0x80, 0xDA, 0x98, +0x48, 0x20, 0x78, 0xFB, 0x68, 0xA4, 0x35, 0x60, 0xA0, 0x05, 0x80, 0xCD, 0xEB, 0x4C, 0xEB, 0xFC, +0x00, 0x00, 0xA9, 0x00, 0x85, 0x24, 0xE6, 0x25, 0xA5, 0x25, 0xC5, 0x23, 0x90, 0xB6, 0xC6, 0x25, +0xA0, 0x06, 0x80, 0xB5, 0x90, 0x02, 0x25, 0x32, 0x4C, 0xF7, 0xFD, 0xA5, 0x21, 0xA0, 0x9C, 0x20, +0x9C, 0xF8, 0x7A, 0x80, 0x95, 0xC9, 0x9E, 0xF0, 0x03, 0x4C, 0xD9, 0xFB, 0xA9, 0x81, 0x80, 0x02, +0xA9, 0x40, 0x8F, 0x36, 0x01, 0xE1, 0x60, 0xA0, 0x97, 0x80, 0x8E, 0x00, 0x38, 0x90, 0x18, 0x84, +0x2A, 0xA0, 0x07, 0xB0, 0x84, 0xC8, 0x80, 0x81, 0x48, 0xAD, 0x36, 0xC0, 0xEB, 0xA9, 0x80, 0x1C, +0x36, 0xC0, 0x80, 0x25, 0xE6, 0x42, 0xD0, 0x02, 0xE6, 0x43, 0xA5, 0x3C, 0xC5, 0x3E, 0xA5, 0x3D, +0xE5, 0x3F, 0xE6, 0x3C, 0xD0, 0x02, 0xE6, 0x3D, 0x60, 0x60, 0xB9, 0x00, 0x02, 0xC8, 0xC9, 0xE1, +0x90, 0x06, 0xC9, 0xFB, 0xB0, 0x02, 0x29, 0xDF, 0x60, 0x68, 0x38, 0x48, 0xE9, 0x01, 0xD0, 0xFC, +0x68, 0xE9, 0x01, 0xD0, 0xF6, 0xEB, 0x8D, 0x36, 0xC0, 0xEB, 0x60, 0xAF, 0x36, 0x01, 0xE1, 0x0A, +0x30, 0x20, 0xEB, 0x90, 0x08, 0x8F, 0x34, 0x01, 0xE1, 0xA9, 0x01, 0x80, 0x95, 0xC9, 0xA0, 0x4C, +0xFF, 0xFB, 0x20, 0x0C, 0xFD, 0xA0, 0x01, 0x80, 0x90, 0x4E, 0xF8, 0x07, 0xA0, 0x0B, 0xD0, 0x0F, +0x80, 0x06, 0xA0, 0xA2, 0x80, 0x83, 0x00, 0x00, 0x6C, 0x38, 0x00, 0xA0, 0x03, 0x80, 0xE8, 0x20, +0x9C, 0xF8, 0x80, 0xEC, 0x20, 0x20, 0xF9, 0xB0, 0x4C, 0xC9, 0x88, 0x80, 0x25, 0x00, 0x00, 0x20, +0x02, 0xFD, 0x20, 0xA0, 0xFB, 0x20, 0x09, 0xFD, 0xC9, 0x9B, 0xF0, 0xF3, 0x60, 0x6C, 0xFE, 0x03, +0xA0, 0x0D, 0x20, 0x9C, 0xF8, 0xA4, 0x24, 0x9D, 0x00, 0x02, 0x20, 0xED, 0xFD, 0xBD, 0x00, 0x02, +0x80, 0xD2, 0xF0, 0x1D, 0xC9, 0x98, 0xF0, 0x0A, 0xE0, 0xF8, 0x90, 0x03, 0x20, 0x3A, 0xFF, 0xE8, +0xD0, 0x13, 0xA9, 0xDC, 0x20, 0xED, 0xFD, 0x20, 0x8E, 0xFD, 0xA5, 0x33, 0x20, 0xED, 0xFD, 0xA2, +0x01, 0x8A, 0xF0, 0xF3, 0xCA, 0x20, 0x35, 0xFD, 0xC9, 0x95, 0xD0, 0x08, 0xB1, 0x28, 0x2C, 0x1F, +0xC0, 0x30, 0xBD, 0xEA, 0x20, 0xBE, 0xFD, 0xC9, 0x8D, 0xD0, 0xBF, 0x20, 0x9C, 0xFC, 0xA9, 0x8D, +0x80, 0x5B, 0xA4, 0x3D, 0xA6, 0x3C, 0x20, 0x8E, 0xFD, 0x20, 0x40, 0xF9, 0xA0, 0x00, 0xA9, 0xBA, +0x80, 0x4B, 0x20, 0x75, 0xFE, 0x05, 0x3C, 0x85, 0x3E, 0xA5, 0x3D, 0x85, 0x3F, 0x4C, 0x6D, 0xFE, +0x48, 0x68, 0xF0, 0xF9, 0xC9, 0xAE, 0xF0, 0xF5, 0x5A, 0xA0, 0xA1, 0x4C, 0x1B, 0xF9, 0xC9, 0xFF, +0xD0, 0x11, 0xEB, 0xAF, 0x36, 0x01, 0xE1, 0x0A, 0xEB, 0x90, 0x06, 0x2C, 0x1F, 0xC0, 0x10, 0x03, +0x1A, 0x29, 0x88, 0x9D, 0x00, 0x02, 0x60, 0x4C, 0x46, 0xFC, 0x48, 0x4A, 0x4A, 0x4A, 0x4A, 0x20, +0xE5, 0xFD, 0x68, 0x29, 0x0F, 0x09, 0xB0, 0xC9, 0xBA, 0x90, 0x02, 0x69, 0x06, 0x6C, 0x36, 0x00, +0x48, 0xC9, 0xA0, 0x4C, 0x74, 0xFC, 0x48, 0x84, 0x35, 0xA8, 0x68, 0x80, 0xDA, 0xC6, 0x34, 0xF0, +0xA1, 0xCA, 0xD0, 0x0C, 0xC9, 0xBA, 0xD0, 0xA8, 0x4C, 0xDA, 0xFE, 0xA4, 0x34, 0xB9, 0xFF, 0x01, +0x85, 0x31, 0x60, 0x18, 0xFB, 0x5C, 0xA0, 0x00, 0xE1, 0x38, 0xFB, 0x4C, 0xF8, 0x03, 0x00, 0xAD, +0x55, 0xFB, 0xAE, 0x57, 0xFB, 0xAC, 0x59, 0xFB, 0x18, 0x60, 0x00, 0x00, 0xB1, 0x3C, 0x91, 0x42, +0x20, 0xB4, 0xFC, 0x90, 0xF7, 0x60, 0x8F, 0x00, 0x01, 0x01, 0x8F, 0x01, 0x01, 0x01, 0xA0, 0xA3, +0x20, 0x9C, 0xF8, 0x20, 0x84, 0xFE, 0x20, 0x2F, 0xFB, 0x20, 0x93, 0xFE, 0x80, 0x3B, 0xA9, 0x80, +0x1C, 0x29, 0xC0, 0xAD, 0x51, 0xC0, 0xAD, 0x52, 0xC0, 0x64, 0x22, 0x80, 0x53, 0x00, 0xA0, 0x83, +0x80, 0x11, 0x8A, 0xF0, 0x07, 0xB5, 0x3C, 0x95, 0x3A, 0xCA, 0x10, 0xF9, 0x60, 0x48, 0x98, 0x09, +0x80, 0xA8, 0x68, 0x80, 0x36, 0xA5, 0x21, 0xC9, 0x48, 0xA9, 0x0F, 0xB0, 0x02, 0xA9, 0x07, 0x60, +0xA0, 0x3F, 0xD0, 0x02, 0xA0, 0xFF, 0x84, 0x32, 0x60, 0xA9, 0x00, 0x85, 0x3E, 0xA2, 0x38, 0xA0, +0x1B, 0xD0, 0x08, 0xA9, 0x00, 0x85, 0x3E, 0xA2, 0x36, 0xA0, 0xF0, 0xA5, 0x3E, 0x29, 0x0F, 0xF0, +0x04, 0x09, 0xC0, 0xA0, 0x00, 0x94, 0x00, 0x95, 0x01, 0xA0, 0x0E, 0x80, 0x36, 0x4C, 0x03, 0xE0, +0xAD, 0x54, 0xC0, 0x60, 0x80, 0x5A, 0x20, 0x62, 0xFE, 0x20, 0x3F, 0xFF, 0x6C, 0x3A, 0x00, 0xAD, +0xD0, 0x03, 0xC9, 0x4C, 0xF0, 0x01, 0x60, 0x4C, 0xD0, 0x03, 0x4C, 0xD7, 0xFA, 0x60, 0xC8, 0xC8, +0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0x80, +0x8C, 0xA0, 0x96, 0x4C, 0x9C, 0xF8, 0x8C, 0xF2, 0x03, 0x20, 0xD1, 0xF9, 0x4C, 0x00, 0xE0, 0x68, +0x68, 0xA9, 0x98, 0x4C, 0xED, 0xFD, 0x20, 0xFD, 0xFD, 0x68, 0x68, 0x80, 0x6F, 0x60, 0xAF, 0x3E, +0x01, 0xE1, 0x8F, 0x3F, 0x01, 0xE1, 0xA2, 0x01, 0xB5, 0x3E, 0x95, 0x42, 0xCA, 0x10, 0xF9, 0x60, +0xC8, 0x80, 0xBB, 0x20, 0xCA, 0xFC, 0xC9, 0xA0, 0xF0, 0xF9, 0x60, 0xB0, 0x6D, 0xC9, 0xA0, 0xD0, +0x28, 0xB9, 0x00, 0x02, 0xA2, 0x07, 0xC9, 0x8D, 0xF0, 0x7D, 0xC8, 0xD0, 0x63, 0xA9, 0xC5, 0x20, +0xED, 0xFD, 0xA9, 0xD2, 0x20, 0xED, 0xFD, 0x20, 0xED, 0xFD, 0xA9, 0x87, 0x4C, 0xED, 0xFD, 0xA5, +0x48, 0x48, 0xA5, 0x45, 0xA6, 0x46, 0xA4, 0x47, 0x28, 0x60, 0x85, 0x45, 0x86, 0x46, 0x84, 0x47, +0x08, 0x68, 0x85, 0x48, 0xBA, 0x86, 0x49, 0xD8, 0x60, 0x20, 0x43, 0xFE, 0x80, 0x07, 0xA9, 0xAA, +0x85, 0x33, 0x4C, 0x67, 0xFD, 0xD8, 0x4C, 0x43, 0xFA, 0x20, 0xE1, 0xFE, 0xEA, 0x20, 0x5E, 0xFF, +0x20, 0xD1, 0xFF, 0x20, 0x88, 0xF8, 0x84, 0x34, 0xA0, 0x25, 0x88, 0x30, 0xE8, 0xD9, 0x87, 0xF9, +0xD0, 0xF8, 0x20, 0xBE, 0xFF, 0xA4, 0x34, 0x4C, 0x73, 0xFF, 0xA2, 0x03, 0x0A, 0x0A, 0x0A, 0x0A, +0x0A, 0x26, 0x3E, 0x26, 0x3F, 0xCA, 0x10, 0xF8, 0xA5, 0x31, 0xD0, 0x06, 0xB5, 0x3F, 0x95, 0x3D, +0x95, 0x41, 0xE8, 0xF0, 0xF3, 0xD0, 0x06, 0xA2, 0x00, 0x86, 0x3E, 0x86, 0x3F, 0x20, 0xCA, 0xFC, +0xEA, 0x49, 0xB0, 0xC9, 0x0A, 0x90, 0xD3, 0x69, 0x88, 0xC9, 0xFA, 0x4C, 0x1B, 0xFF, 0xA9, 0xFE, +0x48, 0xB9, 0xAC, 0xF9, 0x48, 0xA5, 0x31, 0xA0, 0x00, 0x84, 0x31, 0x60, 0xA0, 0x00, 0x80, 0x20, +0xEF, 0x64, 0x34, 0x20, 0xC7, 0xFF, 0xAD, 0x36, 0xC0, 0x29, 0x7F, 0x0F, 0x37, 0x01, 0xE1, 0x8D, +0x36, 0xC0, 0x60, 0x00, 0x7B, 0xC0, 0x71, 0xC0, 0x79, 0xC0, 0xFB, 0x03, 0xE6, 0xE2, 0x74, 0xC0, +0x4C, 0x14, 0xF9, 0x00, 0x7B, 0xC0, 0xE9, 0x67, 0x79, 0xC0, 0xFB, 0x03, 0x62, 0xFA, 0x74, 0xC0}; + + diff --git a/Common/svnversion.h b/Common/svnversion.h new file mode 100644 index 0000000..6b52a2c --- /dev/null +++ b/Common/svnversion.h @@ -0,0 +1,56 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#define ACTIVEGSMAJOR 3 +#define ACTIVEGSMINOR 7 +#ifdef KEGS_BETAVERSION +#define ACTIVEGSSTATE " BETA" +#else +#define ACTIVEGSSTATE "" +#endif + +#define ACTIVEGSBUILD 1199 +#define ACTIVEGSDATE "2015-06-02 22:41:06" + +#define STRINGIFY(x) #x +#define TOSTRING(x) STRINGIFY(x) + +#if defined(_DEBUG)|| defined(_GLIBCXX_DEBUG) +#define ACTIVEGSRELEASE " [Debug]" +#else +#define ACTIVEGSRELEASE +#endif + +#if defined(_WIN32) + #if defined(XP_WIN32) + #define ACTIVEGSAPP "Win32/Plugin" + #elif defined(_USRDLL) + #define ACTIVEGSAPP "Win32/ActiveX" + #else + #define ACTIVEGSAPP "Win32" + #endif +#elif defined(ACTIVEGS_ANDROID) + #define ACTIVEGSAPP "Android" + #elif defined(ACTIVEIPHONE) + # define ACTIVEGSAPP "iPhone" + #else + // MAC + # if defined(ACTIVEGSPLUGIN) + #define ACTIVEGSAPP "MacOSX/Plugin" + #else + #define ACTIVEGSAPP "MacOSX" + # endif + #endif + +#ifdef __LP64__ +#define ACTIVEGSARCHI " (64BITS)" +#else +#define ACTIVEGSARCHI +#endif +#define ACTIVEGSBUILDSTR TOSTRING(ACTIVEGSMAJOR) "." TOSTRING(ACTIVEGSMINOR) "." TOSTRING(ACTIVEGSBUILD) ACTIVEGSRELEASE +#define ACTIVEGSVERSIONSTR "ActiveGS v" TOSTRING(ACTIVEGSMAJOR) "." TOSTRING(ACTIVEGSMINOR) "." TOSTRING(ACTIVEGSBUILD) ACTIVEGSRELEASE ACTIVEGSSTATE +#define ACTIVEGSVERSIONSTRFULL "ActiveGS " ACTIVEGSAPP " v" TOSTRING(ACTIVEGSMAJOR) "." TOSTRING(ACTIVEGSMINOR) "." TOSTRING(ACTIVEGSBUILD) ACTIVEGSRELEASE ACTIVEGSSTATE ACTIVEGSARCHI + diff --git a/Common/svnversion.h.ref b/Common/svnversion.h.ref new file mode 100644 index 0000000..9e1c08f --- /dev/null +++ b/Common/svnversion.h.ref @@ -0,0 +1,51 @@ + +#define ACTIVEGSMAJOR $MAJORVER$ +#define ACTIVEGSMINOR $MINORVER$ +#ifdef KEGS_BETAVERSION +#define ACTIVEGSSTATE " BETA" +#else +#define ACTIVEGSSTATE "" +#endif + +#define ACTIVEGSBUILD $WCREV$ +#define ACTIVEGSDATE "$WCNOW$" + +#define STRINGIFY(x) #x +#define TOSTRING(x) STRINGIFY(x) + +#if defined(_DEBUG)|| defined(_GLIBCXX_DEBUG) +#define ACTIVEGSRELEASE " [Debug]" +#else +#define ACTIVEGSRELEASE +#endif + +#if defined(_WIN32) + #if defined(XP_WIN32) + #define ACTIVEGSAPP "Win32/Plugin" + #elif defined(_USRDLL) + #define ACTIVEGSAPP "Win32/ActiveX" + #else + #define ACTIVEGSAPP "Win32" + #endif +#elif defined(ACTIVEGS_ANDROID) + #define ACTIVEGSAPP "Android" + #elif defined(ACTIVEIPHONE) + # define ACTIVEGSAPP "iPhone" + #else + // MAC + # if defined(ACTIVEGSPLUGIN) + #define ACTIVEGSAPP "MacOSX/Plugin" + #else + #define ACTIVEGSAPP "MacOSX" + # endif + #endif + +#ifdef __LP64__ +#define ACTIVEGSARCHI " (64BITS)" +#else +#define ACTIVEGSARCHI +#endif +#define ACTIVEGSBUILDSTR TOSTRING(ACTIVEGSMAJOR) "." TOSTRING(ACTIVEGSMINOR) "." TOSTRING(ACTIVEGSBUILD) ACTIVEGSRELEASE +#define ACTIVEGSVERSIONSTR "ActiveGS v" TOSTRING(ACTIVEGSMAJOR) "." TOSTRING(ACTIVEGSMINOR) "." TOSTRING(ACTIVEGSBUILD) ACTIVEGSRELEASE ACTIVEGSSTATE +#define ACTIVEGSVERSIONSTRFULL "ActiveGS " ACTIVEGSAPP " v" TOSTRING(ACTIVEGSMAJOR) "." TOSTRING(ACTIVEGSMINOR) "." TOSTRING(ACTIVEGSBUILD) ACTIVEGSRELEASE ACTIVEGSSTATE ACTIVEGSARCHI + diff --git a/DefaultPackage/BLUE_HELMET.FTA b/DefaultPackage/BLUE_HELMET.FTA new file mode 100644 index 0000000000000000000000000000000000000000..f7ee374186b9da76713d4d0ab5ee64bd9dcc74bf GIT binary patch literal 819264 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

bx63~*AIAUptY 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�M(N- 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

2x(JF7}kh&B?D>`vjs<8y`O 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 zAs_^VfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{ zAs_^VfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{ zAs_^VfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{ zAs_^VfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{ zAs_^VfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{ zAs_^VfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{ zAs_^VfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{ zAs_^VfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{ zAs_^VfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{ zAs_^VfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{ zAs_^VfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{ zAs_^VfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{ zAs_^VfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{ zAs_^VfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{ zAs_^VfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnMr{ zAs_^VfDjM@LO=)z0U;m+gn$qb0zyCt2mv7=1cZPP5CTF#2nYcoAOwVf5D)@FKnT2J G2>gEmKfO-? literal 0 HcmV?d00001 diff --git a/DefaultPackage/BOUNCIN_FERNO.FTA b/DefaultPackage/BOUNCIN_FERNO.FTA new file mode 100644 index 0000000000000000000000000000000000000000..ce003d9fa4587182e1ebf78343624a9dadd38fb2 GIT binary patch literal 819264 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�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 gDM;x3|cu|}Wr8h0Ox`iu0 zxaxq1wc{tsnnkj*2i2zV0%hW(5_a_ks#S#kxR2(=Z8&O2qBe>pR$rh&2ts5Vqv(y; zj_@_*FE5Wk0{|LUxd{`{MLB_*se}*SsWzjoALZ$y>JMGw6SI$5vp5nf`^Pegkt*yW zy^aRO0Qi9h@lswZ^hi<&9Uc)ateLta6Pe}UQU)%Xaovbs5WC|$UO+hxF-Mnjf!%bm zi?uW8utLBtHbWUj*(9b+vPFrL`=F^VzW_azt&S}(h?npRfTQ6l-xuAfKp8oG?+>CZwAuuBjPf5g1+R)33U+&H(XT9N4uhMRLcmQ98j&9FEi$*pzs0@hca3k=4V}>Cv5T89&jVhKIPp6M^tR6*F;oO3rp;l_V^^xM529@3bkT!q-9a`0HdM95?6i;Bv4nQIhJwpg;9r#b z6%QDQ0cMDU7jdwmlq3Lx?7$I4_i$)*YQ|*}vx}LIp1N0Wq(p%*`iKNK z5RP((tUH7dv9Wj?1;;o|k3w}o42~~!C*W8!CJ0kmO_Z6#O=hfoxjS9L!WCB>%Q#mt zJt{JC?0BW_P?^vj0VHY;LyJK9e0*>aDvmzh9qsHM4x1iTjZvAEPy-o5dx!!^bj6s4 z$CU{5#AgDbJHss6Su^@$cubG7)~IQZ+#(Q$P(#hQAdK!P4~lxHPzua?y2n`s4x>Y% zq2W=J6CVq$N3mxFS7`QXce+Xh_#!0597sEY=4HUiPU;$VFnZHHB216r@oA!ZlMWe~ zD4tB>o3a`ys}k*?4QPf>XE18yYD8qkX1YR3SD4xGsH2PQ4V?n6Ty$sJ6l+<@1LJWO~#< zW|$H0YSBG@Xm}|5j5@T+!G5{Hj#9C-G&;G&!1)@QQZQ z_?%_~KI}v_)ZMQ%i|MG8O-u17REmf}qeD?;6Fy$3b3kQ-9f8ZE%kAhN#;2>GG=Nb# z)YSovA4RGu^o1K@c<6!}itOV91k8F_Uq|PV-W8(WEY+B<;X^z3Iq3s+jQDuGW1Yh$ z9vVAqF48@Hv`2Wm$zU)V6us@odgNALoHesVX=;y$T<8we4t2C1>s4~WBy@D~MlG~? z)SCC9yH2l__qDZj3~F4_YIp@{;s_Asl3_rHTVqN|XG=?`#K$S6N+}r20B}s+WJ&nILFfO#}NTQ8hQ>l!>y>V zA?xot*4W%JpmWEHqvG8J+%Bk;a&dfqw;rE!*wxnD*wQ_0^rb2j?EWo$*eKMI!SF`F z)^)785w3E%EtDUlORB7t!$>8M;ZZ_d*4x(H)Pxv}#+4|EcV6HGMxl)yNN3ZjB%RHu z-_h19H3}(wYTq;-Dn>F=!e=!&%^G>{vBt(0++a{ygV`}^h7Wmi9Cxb|xLs>dNjjPu znpzNG(m7*=3AE0z_R&%%isIusd2efdeRB)qS0*7@nM5l!qtHb$g);0`wWPBN@h{A- z<$@^7A+{qzQo-VRhe_7k+CYKfL50B`DNe9vRwttf+`2gJP)Ace@-=#;8jCkonVO~h zKm^_hZruw`s}jId?&6?A?;z-DcDA}w7G|HrFx-K)x3={RYs?-%Uv0*{ltL2Q!m92& z*4*53tfOC{=lmk{gk0b*6ASPT<1o0Q6$!!k%rj>wJ31{+j>Q#HFl21%f%ev8ZHUmw z^;RKP7zgHP?YJ79#Rma6ji3yg+q(yqCOBcrKn|K2YLj8V$ELx@ZgzCwg2J%Y>JH<> zhG)@Es4r&|A)m{n=_qrUVL(BV{1_2tY63PgY~}!O*A4f=PVPc@No{fX6GhNw z8o`^f5zLN4`xfP3FYaLC>M@n#2&Kxn+e^TqdlDkWp_dKx(laRe|Ji#F=(esiU6hoQ zN#rIwj%y-Yc3dR6OR{>UB=+7r34j2IMu6zO6OHHu3&0BY-bs;Ep?bF@+j1}IlT0Qa zdy>peo#cJ{P_mueS(7zu-kNpadiTgCL7a1TKl}XU`@f$fRvI0FmJVuNA*|ew6mEJs zpGmK*q*WkCSPk-uxPlSNv(p;Es>a)0Bj!}mX}ALZa1?KKhaw$h+9NF?B*w5B6hbyw zOc*o$9MB)U% zm;tGC`r#tLz~Y(kU_aF(D+i$`0gj@Ec;?55z`IXLn{;VVH4+Z;Hw8YI=r5q1_T9# z5%G@O>#!q1fff*>If*ESt^%lO3spKu% zp+X^mq*4eedLw{aNJEd1Zt^n0%u2yxj|(UmE_oNi_RxTc-vDTHoHndGoCi;e5HBpi zc=56$@Si4%)`z@lH6TX^c{eD*@h*cR2mTQNC9v5cVFnpH=--G(m0(w;P{@!Ia6SlT zB0|YR0{WpoBal^su7ih}yi4Kj50bqY6zCXR@YR4A9~ajh+9M& zCP)&}c?(hB33V>6Ao3j~TO#a}^Q87VA~lj&S3;~yiif~^Taut|Co(H>v_M72?Ub`+ zMa+SmLS`N!8s%sqwLsJY5elSXN|3>O*ar2Uh{Qz0B^o#pCMo$6wi6;G!T3NipF*La z&O->I&aX&mSQtcJhmZv=ka&AgJvmR=Mj+;q#4iv)DP@Gn?L?0wf;GffN?U=h^@TD5 z&R?Q+5W$`3@I(fM>Eo8F1TBSV;6#n2Wb0e!DJ_;#aP+se4#>)oy~%kya(zP0BnlXW ze8PJCMe*bUO4EZ9Oq~VE@=7aFJxE*0{gk3eF-{W|1wt&{=QWMQJTo&A_GLUP!l;%e&So|b}~-XEl_Uo zHBM0n)k<;!R_?6^P*&8i6Y1lth9_W!jbdjij})b6}Qflf~nHc0Gy`IV<}LxL5%@9d21L}Mt~YZ zGC(MwoLo7`U*vvLz%8AbjKS^Gq>Z;vlcl!O0BVGZ21s4DG6X1|DD+ehR&FO}$^Eyg zzr9j#Eip1lm_+J4Y5(mNL@A%R^*=hjveZ{vN6xRzGAW;QZl(Dv#Z%{QSHDs`wF1c` zudFa~J5~Faw^Id>`*Dhx4_CT}8Thh%+)k<|H{Wjk?bB5E|EhS>JN$pE`jz4N%I&v% zPj#N^KIz|=7p%;|7q^rCVRToP_m|aElTRKF(m(3<+q3h<;FGm`>-4Sr|F_;zi({qs zFK+*v`$_vr>%Kfs&F}5rtqea|I@H)ulmC^@Q=^aD|LOv=x^ML!?fa|FV{oYHBP*Y3 zKF(8%|BLc(k!s&QP0p{ZTw+|fHFsq2zqsIw^VHz2l>XPJsrzv@2I)Wi0Q!Y(waiL7 zTjlHN37N#K;-X3!Qf@&A*Qxam$c_=0iqB$lwcfUfTMN0jq+0I_w}k^{WZkm(+M*o+ zqqw@7r*brf>`ERIcGs9gU0o5sNmyN@_lCQB+nmVQD3BT59s`84O18q)+7oSZYuFWB zy}xx}V$h=$^0@+q#im7`@#18}dIa@|$ZPHl$k?!thYb`A=hpq|sFPxokwJ7+NB{TtuIDj

HI}OXn6k?Q(8eK?z$Z7OPEe#I$ur?2^j7^qeYF)98r{OVN5Ir!=pS z0UciN2tt}}3mEw&8OeFomX@(oIPX(em*nNs5OQkrGy%jAcB|R>iSc~FTo7@2X0@@veI>5CT@dO}8aVIBw;1R8gwb7*8BWD*u9>^Yb( zuyo8_ICrGK(a5I6aiPKA-a9& zIV~-2&%qp#yLIuhFR z#YUVT8t8Nj^W*pLIZz-E!moI2EbJvo!1fyM=GKH^eVs56d$p&pxN)mu0y>vL-)M&3Q%}I?)dtjiu*$q<)gcG%d!xgK|cAw8_kaB5dEUC4jd!WB3f?St+q)b&ysHk1! z#;Y?y531tHjh?o?zMfV;q-Pn@BO?PFBIt-M5oSt^nZ{Dz)Di7$LK;TUaw72wa`7M| z5HS$qB~Owhy8TVzW|Cr$5^eM(w>6whFqawYkYL9X@FRTNXTuf&xe5D{lE~knJ5WJ! z^SRwYfJu=shYT;I1|&w&N+JLApc(0mu3#vDxbpz)G-@fT23eoYLaYu#zCa4y!PC?f z1lf-Vc@T+FQUj5%&Z0)T&sx4v3EAD-+ycfR)!5wmIq<(cU@W!2iIAp`;~ z^wsMm96C}>YmBfC!6R&uGxJiCGYV_mebdLzot_R`CDl-4g$iRG(t0&E*6RetDF+Xx zRO(wNmoHsD-tEyMsW1~TOABmIEs=m(T#>$i@BVC|f8gkq8)rwtb}1cjHW&f?p-?0e zG}o4=AK1Mwy}GVr=KR$&lU-g_H31)M?14s51o(}DlC*=n_og$AEfXitpPcIPsB5@< zsSeL&N2D>}Qq!{&_V02 zHWrIqAk>)MExjZC(T)ZqC->0y&9Cms;?=cHpFA@c_2~snp2imJ8k?OQ>u)skbN0Nr z@wv@OY-`7n^A{HS14Hg;*yMOJrd}ZtLD_2fWHfUj*6r23*gR}GVGsEq5yp-o3Uh~NFNwqCY zm(c%aqnOW^8NDq%Ba^f9qn$2s)~3hqd+@mgUc>ywE2qYrOfpf8%It3j?drtzP=`mJ z^V*XSKk{6nuyN}2g%d+TJr<+Z76Q0nU~H@>?2=?{ee#jDFQtjYN6wvD81So+T2zPS z)IU5tGSm??^3t}fd-Qudi?y9cFP)v~aL9R_8m%kRJv=otIne4=l*hgJ*hA07F&yI; zuAQH2GxA|6P&(Us$LEjC47a&z^LIXd|FSczM7f zW)_uj_1?ywv8n0Ns83n8@5#H?Jh`jFcjBE-KE5&Cpcc?+TvZ*m<$+;<4Ykaq=O6g? zQ`-ycrZ2z!;hRexPPKp|f}sIsl1?(g{OqkyKK|VHJY)Z{%Qvqd?Q3#rfYd~qMW7@i zZ9$8qcpvaKq}(*P0u4T^lAgSM%l5cpbwmH`iDQ#kG>w6J zyB@P3L7L6_IyE~hZqMGN3az(mY;J0>CmL;yg!~qTh!0Q%+#@P>UUFh$HcRho9~>L# zf>p4stu5?;fFQtgZ80c0g&;C3;F$xheM8-mmPlJT($VhG!b&ZcAmN;pU6h+&P$sk^ zcBQwi!Qa>vYVGRu837Hb#e=Swvx@SIODZL9ScR}HlU(vmU7dciuOTs*S}S9glvdJN zY9HXvolQ;)H0Xx*js~PV7m-B98X32e#$@sJ{s@Rvf@ZvRY=O3pMt~n+M;9xUQZB-u z1TtHw74|BO9jxBowjLCqL&ENwTBJHB01BPA8RjmZNyMpD8|yoV@d`6acpN}4q(VSj z^|nx3XKRB^MlWNFb>4y5>1cyRT3rQ34p`IWdaFCq-4zZPxdnL@e6??MX>p*@B4t%n zuwl*?Ypt$^u7RGgTS-e#$)(GE6UR@Ew>lJzl2Qf|vdMu>i42VPHP;D?4(&^>P&Le+ zJ3rm#kd)^aF%ZI`clet-hsSyYI!^Z9?T1TLAv{S7oi0gPR$iq*sx|wXJNie*y4=!= zq^+9{mTALBuU|jfX%!ZwWmbr^R=lwKM(|Ruj~vL+6RNZk}i}^Kui@Dj)=g zaC&06J7}b*?0E5|gLHG>nRnkl(PFI5IG9XV+3><1otzqoxa7rgn_hS|j%gn`|KYpG zo3+f8J@HjqPwU9^?Cf-J&?Ly&`NH#C4zXPm7e9RGShJ=oepdoZ=k1z3x;Rhvy{fcr z&p*E{vD!U-`MsM*!|IB--N|fiaQOJC6N{5w4pDK!)(y|^OyPLvF1&U9c$>N;et#NM z6B;{l=H%jJr;T55__YliccpMV)90>VJJG2wO+K7TQ?*Q=$uzvbDD+Y&2{Jttnjerm)oDoo90DEtG9%gak+VT-Udam#ZXw!{@{qRZE=otp_u zN;2|j5>MaU(c??wVM}dg;-;t9Z`zxs=vuyZ{qnJ>vLdgrLgeg1bnwxMuuV!!c=@Sk zUfPwZ>^}A8Th~rRm9+dKobMQ!J#loj$tEp7_~N?ny|h19(|h*qx2_!R*3yeg=~8>^ z(ERekP?N2;aQ}wyta~}WL^p8hz3b-}qgr|iovpC9jvQH@?Z=xSW9RoCd1`wG!#a8W z?MusZ?J8P1o3C>!%mS8f7$wKy38)&MYpDwc5l5 zJ2yPO_QeE-vF+IFuP;yb*4NTlB9*gcXm069e^Ad!dF6ZSp52-$@(mojd~vZqYyp26 z#LwvX!qK@dm$Yo(`X|4)aZj1Cef0RHGvi^uLC6wdBkrGGT$*S#akIBQ{lwERC30PT zGp8;b>+{yBcxa@wLw%q!~LG&YfKz3ur_frcmdL z&Kz4_oar*tlXtFPyKYl5%i41c6xc%^1((GX8iIXCjxR4ww;5=O+n)Z;Q(IH3or5PX zonIPokcV4jY8aS1zC4e`K}&e;na7{mn#OaFEMLB~)MKq>(da@;)8LU4%k#r621de` zXP;WXIYrf}^4w6^%u3p_;Th`u(22`em!cL42j|TVy>ll{ z%nr8Jagttp{<#gCQU#uYW0$TTi<+gpigKPg*fq0sbY=*z>GT~hZrJc@63^X#^y1Z{ zofZkNqLOb8bWAQRP7QW=WVyRv-nj9l_-a@G;)N?q9agEJoF*`PBV+UP69ZiVWpUh= zmtWd+h-r(?o;r7=y-rcXV2F&~=7GuS@xh)(13hWmD=)pepJ4*(^vqnVT`giV2&S)R zY!c_2O{}zCn_u00fNpFWS~@=7;?T)>Jh{aaZ0jEx?(b{0^K;_1zWU0+3U#1=VQI9< zsZ((I3ad8|?it4U4wtCl@QzKJ4^=2V-7|B8A-i5xQ=_u^v9k>hBF?}gElb_IY0IH< ziKBgdvOid7)Jba9j(`_$6~r<01l9Dc1Fvn5FB8?Z42*R9;bc}y_4N&Ye>mC;(!2&e zEAQ~m9r2|EeBR$#4`ZW7W%32Rz9z&2boVx!xy5M*b{{GM<$Ft4*adGr6c7mFz986Y zy1HBK!m`|iJ#i&GDNvq`cKFN9Hg_-xmgNwM=IHcD8O3S)4i;7mwVp`7wX_7?;GOieM0>j>iuwv`Tn9o+dDU;`HKxPm&+E zXU~DeVy;waff6)6J>F{IG3YE+)9l%crzRStg@<--+jTgns#axf8l0G&9dA-Iii;S^ z$l|3Nmya~7isN@|er()I91$;xx@cgm4UYDF%T*9?Qp;9kTcR3}D+=SgbckD{9QU`ixm*#uw^};H; z$kj27Eo!LUtrIhH5AENzJ+4qx7nxX`?Q3wT1U#jyxodcAB--XR8zhYMggvkANTRD7 zhUcb7q7BFytg~SzqFwFHey39>D9PHtX=_}8z}+)3IX=(~kGa_a4|k|3%Y8MrUS5+Jo*otKI8C7^DySM1xbqD^1?{^42ttp)z_uM}z!FDCXD2!v0?_6hE<0d8F2FYJuu>$)?LCkqcD6)^CWqU=v0YDW z?iK=4a=MH%dJf2g@s0|#bd8O5!_nh)z^3j%Vsp2%&ZOe!B_|~(W(a-l?E^F8Z2`9% z4m`6Jm3xErMr|!EUHm?mPD`ag2dLbBsM8wHE2zJ9QP{gH&6H2aD2x&z*iH9>8H8K;D{W=;u2j`bhER1z} z;e8ZV+{uOh7H>V^luF1d`*!V5 zDMNq&V8IAM^!6-XJa=j?8gv45tX1$!GxqO3lu^n>)_bEuX{c)$K6&-RiSdXVelnd_ z!K=vGzdsSM2cyfbgbUgpp1O4X(y^fs9Q(iuDfo=M!-vz0D!95jqqs(4@)iynt4ek0cdLA-}4Mqw@40d+U>rFOLTewQQyk8L;KTs`B#6k_r}w zR#qiY2gc96`^m=_M|@gAC8GvTIJLBz&VW3`U=$THMY^W>EARi{qjQ69Rdp%7Mv1hF zG9H^%QBX=R$;oF+jBQ76eDuQ)PW8JL48$YJm3nxYxz$B^g=INum;+ny>G!|?{Wp(y z+eBq0RYHZ%VuC(H&(6#*NKY@THF}57fB4D!mydKOeqd}b*t@6fhwyANkE^i5;u-g)oM3-hgY5&;aH26wQ*WvD4n+56hoy@>@}Yuo(g z_dd9OY80wEVqrCo26*`mkdAl1wslWhd9AbW__cRGdVMkKma*6(sNzkHZo8r~W#8@{ zyAKwyRo>y{*KfXkWh!hHGl9EzH3ENO#_M|zULL75v5ADOT)%dHETj{$SR!K(#;$rj zGxfl}J$sW&0GnwaUpjOC+_4eAs)oxI8AFkf*P$#syl>zBxNMHr?(d#Ca_rdA*?zC0 z25clIKbZMVH3fJz#U+)>9Sso}7G`Fq$2wd}a52L+*aX9Lb$;BA9q~C#V?%UsYIb^f zptrNZuBjDDw0gTg1d~kO!L2(}Dr+4bQ}eS^qkXN-0Mr;{&>!_id%dNWQIN1>Z$`D+ z-GBVd;`C^Ds2=ZF0I?7V4Q2$Rj8&Mp>rfs?-#C5#$|=O8)f-_RQ;7+60jy{SIj1Q3 zU}9mlrQ_JuH?AHZ37KR9L9JK_@3s=gFg$)GnJLKyeCNQax88sI)R0%jtwJ!YM1kD! zpbk?>`IUv)8O2in@agxy|L&OqkEFb$sDvSf2U`h2Mgm^=vVuYeVvjC-{G)fz^f?6u zAPlO&iyXP3HDUk|Se3MDu_>}}?ZY3uz1(ePXB|w=E*Bw}woxnNfL4c5B~+Q~dzasM z`{uQ!b{#$QaC~-!Km#w0iVN@sgCWp4gKcAH-?(w%)Ko}Xl97~<&8$Tvvr$AVDJv{y zDx6_h$Sz(zw>TDc@QZV@)AOrkfIDblC(q8v7GW9{}@7M)gB&IXkv@^W)Zv*Y*1mq|S%umAWLKY4Sh+bt_W zBr$^}19(xdudOUfKd?QXCJP+-@bh2);+^?s9X%ttfPqaMh$fY+x;QswKLW&5Ehm5c z+dqE(!4V%n^WcHha{hxpJ!J?<~(5^j)isU}vJL;rW zMLEd{NohGWbN~6D{NXSE`tF>wX!mQ|;_|hP9nC?fxFjnxIU%*MtlBz!>6735;j^1F z&f;C0U)z_fZ0JHTjkGu;Eg>P3#umHAFMaTffBo6DQA_!OEnD^!$l+!| zcC8^aasI7Oe*DSB0TVrC=hoeY5_@A;n?qcg86S_(9G$mg>I}I2uAOMtF>(&O48#}D#W__a0`s?c}a;mbah}5Y%QmbPYt!# z%Q=+@OJ%^mh!--}eM)jZ+t@aH`qYV|Gd&?#$$3?kWdQGKY+koXM$b*pDCX7mFJHcJ za(=MUqQs8DV)GE+X|OwCU8QBEVVTvBUA%d1d8)%LMXU<9TA)zNu;p0+=A&h#7qJw< z+3WA$JT=m2tS%@3&8F07)f;VgSa7%%85t!I))sF5;Qcd00aaOQY9U?`b@gEMudFRpkY_xfL?^(AoEX_~C^CD>H2$Ua<_7yScr+*$WRz37~W|xp(ZsyPte` zvEM{b-L+$1CPV3I?e1vt8byqvTtMX%fys++z5o8X9s@mf_m2J9bfu@Gr!(v`)X)lY z@@dt|(CkIf;GF8z(D06p%c)YjJ9@ez0i%#!n3YfGs+*5oeEr6?rHHa3746Hb*0@_? z?4j<@E@txe?F;8GzkX?^L0*=6@L+NwOi``TXvD1%&~md&*aBnp$f@&}P7Zrzzh4#`s7p-JW2@gEa7QfjUCZ;oM)93<2<~G zQ%B)4YS8m5b73$N>gt<2qfl{hzL3n8w`Xec=+baN$E(QBET|Iey=|}oB1safte}8V zqj7hGE@x@LtKpYtW)@e=OaXZ7!hVyqnpRTE!a{8yoS2{MsVAoRoN}Jh3d3cj(SC5%DOQ1zGtJ%e#j9F;tAQN*^O94`WC*%k81~BGh>{Q%zocQYl}ib2W91%p6;q3@eHby!z}b+3L3W*WWk^ zy{RZZDVJU?h5cl5`Qq8Rurz!33+pyyYTD;+ymM|ipe{`!ar1nmr|ZboH!dwjBx$cb z^XPLKn#hrxA6%UZ8!A(gEH0O$clVrp`|T@>Eu!RCpLld*wmPzO^ZhsHVJyo!xNm<( zmC8MM@uT;z&V_jK&wuy3oANXr$8Nm$=3=W!n7eP=zKlw_f8xq}@17s`vJbxS^fOzF z&D}??zW>Go9N4+LH}6X;mp9E^x%uXa0SE2CD=)pghh~dTUwP-sOuI{zy=Qw|dby@~ z?!whGb6w`rxNX~aCUBk6nJd@NO?EhWDSP%D%3xXAX3w6RA8LYX30|Rmk*gD?(dCIY z3p?dNTymk<1wHb}P}nIgPEAP9Whm;SGqC53H0u~C2NN@B+ECBv)L3i1PFR+mQ$pu! zy-~1s&Gq@@6{(47#X?(aZ+~A~yIjp-$M0 z*|aLI#O!n;7{Ttr^6YA|3Mz`qs^s3DfmSE+dsYhd?f|UvW{0D`xwtu$X$bi<+t~Y; z*ZXE)F?2~Qe1*%Rf`tT8a|^G`zh|Jbe*au0U1L2gX|Lo}_2to!*jl4fI4j%;_oK;k zgk}HV{mW8Z;<>~?2JoVH zaB^w(`0~}u*Ixhl{da%(Kx6l9Wv(G>OmrwuspMUw& zpZ@IQk3abM-5WPAUO##2{NmF5!uVu#qA%JR4TXcAraF@gii%tz5b_z7ov zlMe5R+qrZ9_7}Eqe&wYXpWpDz(;H!leEhrX9)I#XkF8z1_QA*3KK|I+XPO#=zGwg811YH)NNH1A0b&uZKq6HbtVV~+>kj(>8}9Ce_iS`(bpFVZBPSM4 z9Y3{v_QdHkXU?8Jb^7GFQzuTIz*ooTPs}dP9z8NXF*P|d6P*|i4|O-SbrH;OSl?(i zYpo`^wMHRR)1_ii#`6fqmd>s!XA~kiV`T+g@ug*zw8~;`aXFg~@wBX#Rmib&Sd}F>ycS~EOt*Nb{2l$7!Ffh5D&Eba5P(xF5pvjE@TbtM9up9Ljc;QtliB2xn z)=EVx1V=~#IuS5sf*Q7*U0ow$v$&P~3O*9o(77ac4!&av#2h(>96>r7eVxu`c9Q5} zpF2?B>I^k|TUvu{jg1|hp`O;xNJ}`{66|QKZ}j^d9*5P8@D>1OMb%Y;B4$}OJr7Bd zQZnQ7lJ@1sA52O*oRAuya4_{?YI;&~etLEe4O#Kyal}olGxuAaY0pY^~0v z)mXJ!vl=S8#U#-vtU58&Y?)pzhGJvn>11N1M5Pr6zSGhmdO!~&Tfo){k@o(EZ+mA;b0mV)Md0F5dDV2I)Vl)Qe^9Z~T+?7U?9-(hq18kN$go=_NHo1lb zvMJOW;A@cbNTyP#2;^J=JiAmOlFKB3cT44RM6;30wU`r~L7^}x6)Gd1c%>9KDUk{a zf6IZSM#U&rtpfB1@q$VMEdalpN%XZ7;lehj7eQeT7i_|AB5QI0?pqS_Rqu$O3ZM zT;MM7z?tG}Y-$K0+9}-J+}Z*_BO*Mobb~DczZ==foOTjir%}UPi=YP~vT<>$8SH8% zi@`*E2opU0RHj>I1q074oeA!Db~U>OkrO2RKn4&#LJ$Cu1P~u_n+O#^>?;77B%sqy zkY)%pwE zKqVCOxuG|ZI06sC7Huwo;t`;01a}0ud zr_)Lq^fJ67@pi1JWYCau4P@#_=F8)AF?0ev2Ivj?Vlp5u8)29ASVjR~LjX~34GqYM zi)grDAQXUa3{D5+8M9dtaf+CFHHijA2wP2!fLFuk@~hb-!x`{d$S+XMt>FlGLJ?np z{J{WTAixo^7a-e(hK1Bqhz%g20reh82zdFy+)pSdLVi*c{%-=yq96Pl2n8g`)JV8E z5L|d1V40Q3N!Bu6jerX(3ot-2K!`!7VM8mUmzUGZN-HW#D@setOTf2ZLIWu$qKN1; zkX`^^il`Kwt`c2&2H^a`8H5v8q7g0UH>W51ouT`HYWM3@j_8 zP-e1_w-}ERVssFy17323R|)9rS5t^d^`a!qGvoGLNxT` z$wH(Fk}s3zMX4bV42g|V%ds1hjR#K-o+A~iN1PEtdvO4ILxOwcAlOh~zg3WZ7qL9} zi7#LpC0CHx7VPC11+uRrW*?h7Y9ho8EA`xB)@PJ@|JcV%bk!kb?D85x>#zta8(70enK(G~t(~j}RD+>`bcv&ED3h*R8#9}=B zEDo}AW7SoFYo-hjLuo0n!KD>QkY0)0-3+WmHrdROcoI3ZVHDv~{PH03mf|H$Vt*_q zk_)%qjnF70fVnJefyg`wSyM`~|lceNK>iI{<5D|!{jXZKRIvqP4Hf$CPnlhFv9y7!^ zBkdi8WGoI6CZz!|l)&^6!v#_RY(>}y5bK5K2RKeId4jwMMaGtknLrGc&5k%B603s{ z5-c1{JDNe(nuKh<*xwM+Msh2Xtcuiu$BOKFB%Te|DY5mDl}jqde;|e+QUw)~PfCO| zfq()8T;Zu8@&{rruom!-Vjv;gA08VA9xgb45e|hHiX}!5v@k3H1~rLiQL98+m04}n zN(dAFU&Pa$`W%VEem7*nsO$+LfP0kGH7DuW(a{p?KVhcrMV(=^Ylot zCNl{zkI_E2kVY$E+Snv8pG7JIOY}==kau&t~S5hP@JF5@g7_5 zGnJ)hv0Q_rJwbEX-gLfq{Nj|2o3y9GJal$6V6519fD^j-#;~(;`>rC}+?9oPP5Sy* zSRI$&J8I8)<+bAa#Vf}n@~qvjW(UvQyxdT*>*ehFiSuVVr4{?O7ikBtzuqZ1v?WE+ zed_dpiIuoDL)>=u-BDxqt9u3EGne`;yp(N;qV^Nl7A(cPcT_ekUY&CAa<&~3G#|UP z=&9JVJ-`0Q>+^1Y-rfV%!PyJPLhJ*tWmu=L9re}Z#>dgUQ>Tx%a^rU-X-6-dZmuoP zI8apAzjV4^ma*+%ZP%%b-KvV5q-<5|_=!1F>7HGT#<@$g7G_aO8s7~cahRE~JJULL z=0t!~P>@WsbSy4)aCh%3Q;(dO3QJ2ECE2yEwuLDRJ2Qn|2b`T>R7KB(KVx_#q$taw ztC}Zz8x7UW;&frCYid|c%gdGq+NYxyAPtIX`mXlA79p*&vJP*+us|+NVdzw?V-2C& z+$x@CurKVFax2of8rQ%`z*Jq%s9v% zbaP9`K%iQ{XIkCEbv_}>lDI*945b| zH#$&XRaI2&Y98$~tAqy=>AJDS@fLATR*5J`L`a8T+c`Bes4gkU zDRhN9fpnK}3wbkcWXzpL&c#V zn``ppGKHa;rC~oeJH1rhG&t05C$0mYv3a1Q(OOf@5df~z7$CvV;2YN3VZ!$qWn5OR z*6KrqgR=%40)e@sGI@)WkN>3`Sbq>x>;o|f|Il|!N z@ux3v5^4wI*f)?$d!Og0!T5Xm{ZBs`??3( z>!pke21n^_Yj1Ign3Yw^`sTJ~L{q@uueSLcT;Popt8IwE2B(ok4DLC19i$SuR%=1r zG6|~HBXY;CgPx&ty6hH>R3jB5)&wc)&Cnw?b#BD)W zh|8>#f&sqXiy(FdsBjQDj-l4Whz6cJlUc7Z83^*g;V_xdA)OJ5Bv^0MwSe_IfyW|} zDx#mTsu931Rhb-wco4P;3^KSRv`Pfy8wu5q76Ked;JqLjl7YCv?)SUQ@>+??id+ds zl}0X7=z-j_gZV>_co&bo4uuHOWGakiQ!0-a21wO*kz zpa~Z6b|8S!YylMkDgmR69qR!nk!u4%=n#rvWdZ2`XpnG^-U{j=OaM_@%r^W%!nYA9 z4E4dHhD3!9I|1xeDiDhVO0GINNDa(T8tn-3k{Rn@wUti~R;sF6m0ElkD zIcU*<#|fM?u&wDdFzIM*5EJ!K0uZMLlLmAx=qrf9BC+>4NJcvn2dX0UeULbTlY$Y* zSV#Dm5TYaoPX-tkwP>#v@oP>*i(xI3NHr&LB@(sSN$7CYa&*E>WPeZ|0kwsi%vhu= zLOZDyAO|c2tYe$i0G$QTht~&48$kbhJ9=EF7V;6k=5O@dv=V_(X{sl43}B2zM@|EI zCXuSaw@K&>2u&5}$*D*+Xf0IAIr3nMuoCScudLHag(8K~6$rWwpo&4%0b)HYmI% z*uvE$ei*(kgtr+$y$6;mBcX24y9sNb4iY&SKcEZNIiM~Zv14fUE*EAAbr6yQ81-PD z21h5FKnT|~gw=o${-HDwe-eHp5=sXxhH%-LP@`Ul$_*Ba4U7$V(gBEp0uJ&9{D#+y zuq=>U3Hh5EcoJymRBSJz5@F?mEr?u&Wi!&GA+gi`X@O@;*RmK;UZEkZi0z~ z*wcuTgr9^Ifv6_1Vv)9BO0dF7f#~+ihZXgRgePOv!T3P*E7Xj;Q5^^|Q6V%HFi>Hn zNf16t0YfLI3dCrbV?yzOfyG0D?ke2M0fMpGYG?!kA|wd8Az8aa=Dw+=D}m}OGoN;M|XZD0^!(xBKMNk>RAP}@k- zAwpM4wUD$6+7|i*1`G@#=?OI)xNc?8$#u}|$r>SpMLN1NT2z5#Qb<>*X5$lCX;d39 zHmDG@K}h599r>0z|3$m0-h6pGxt0`!Yspk%Xfci$WWrHGYR5uEi|~<}1FDs1Fd9d- zh)gsYG*T#;UhZtBabN_Z?K0DYBFk$3Hb=@(x{%?Lpp-` zsjg5Rr9P8RlMZ5~ktwIzO0|$Y^TYsz3drkY9SdcLy4R|a9F zJ~EtChgSNw(w&uILmTiXDFy%ICsyCB)qvT-s=U_FTztlP zQW~j?tWEMIIaYqJEI|w`S$60Ebx=2wOVD)kJ-(){TRBU9QZ-PsK&FA}2U$-mU*8^s zFE3yD6ce+Of+PxXd8DZUP8lKvQ0syEEn9UHsqf%W?e1a*<=^B;Zs=daxHr+z0$Ei{r2;pfB)@EN5{JxY>H|`s%+V? z?&14Zf9;MtR^9RS)%QKJ4jBeAOSvk0V|3!!#kW5C>8HQ`?H~X2$KU_2U;Xl@AK$#Z zJTutp1t6;=hUZRP zxc>HsKlsT%{_JP}_>&)g{N9^a&LS?UtI>@(EP7F9!v5`>UR?joQ|s2Pd-8kFAzAC5 zL#cUXETPI$-`LSVF@NGLQi~$b9!W|2*7YmrmKUdnpdi_FQZA!7C*{!I9h+Z%VdIAN z>o>mm@|Nv;4kc$7(SfVBdYU@=$L5Y99q{WnNUF9sZd|=|?&Q(AvHq@>0C4xUTzYYC zdeXstyS8uLvU&67EnByfY&2=vBvp=7YeAAlq?MhVTSCS$q|v@~@%-7-CypMO8Xbs6 zLLLb8Vji=+Feg3fFyPC(cJAD{YtKF;!%0U%6(-VL=&eW(ij>5old}uRdv)>@GI=Z? zUpg`~IWo}QPRP>$j~8;86=3DdNKH8jX*SjSeG?M-R5BW)wqc5Ww0kHI0_1jO3Fx1 zGAh+IAu1zj=#hn}70I!B`uYc`qaTr6U4#=43}SFWlif{9l?4*@^0HF+HH(WuL|0Zp z5<0>wMUori4GxKm~}m2ty{Bi%9Y#(8PtC!Inm-FF|!dL{Nnc z4mbg9?Q9k)k~$dh*AO=ia@N9ANpX#>Fp*L0mdM~0jxkqC z7ZH2{aHEknlfqFtvHr7Il)nnD2eg?Q3Q8cNSW3Sr9DvF%noSi>+zu<8aNwY(N+%u% zG@S72!KFdy|5#M}Bw45c*PT zV2H$oX(YtB@FA?!0Pii;0jdwA2Bg7374Xjx#|asC2uJYGz&-2-`yHtRbBao+TBrfS zDgnhP)d@2CR3(^J;y3|$AJq>G6X^#z*kAMmUJ|$=Q47R)h=znhnDhjwRH`1*8FYsn z_}z?kgRvsuYC>^`xgcUZ#5c?a)txVDLRC~<_(c{b)gLk=w>m_GZ>mRx*YVC-`HCC=E{x95L_*-Rc*ae{!HA92h%PhS6K;81cdoWdy1h78vnx z-L4OV*o0vu2kBTdad%+|NqwjgE>yz*vQi`QpHfv4hYuM`ims8kqNoZWBOZrfTBV1aC4NY`0rL+HmUt)_~CZ66Rm{ z->{%4a%W64CHLNL12qKH7_2k{UiZH`K(Rpi;Lrwm-Y^D~gZhhR5IGp_z(7z9p;|%^ z*Qoi+1AhnnfFoeyfw`bY0z*MsLeyRe)EExp00h$`;gTeTmc-jf+q?sAgdqWQW2J_M zs1|4u)g-D-@PSjULbFJ_NVC2?NJFV6p-mVbw2AnvS6W3ii|C-FT@KJO|CddJ;zrsAy9t3c5!eA~9!8BEq$w*0)hY}XnKo*)R)z~! zE{d=b%b2K1P)mva4U`RqvwtOR+tT9>LLb` z3^_?&Q1U{CpouGB;=gSpz(Y*7x|L@GA^?I0Yxw|6Anzii=@kPO0AEo@XSAg;><`ts z)H*A69#vp4*w^lBMvN$2mqw)qd@mZFK*{I1YE80Yi9uskmTr$_`$ao54E$uKI5GBN zMlST*2fm`?#>TFB>g7%QnKYrm*U>kCtnsHVTz~5)um9uke)roy{reXR?|arPYYYIzu?|O0jD-V6+*~jj@=dT*@-}~cE+f zGv9q-S5jQUzJs}WOreyk@U*tLI**JD_AM-5JoDiPZ~f@U|Mr7l{N!K$D?Ry7ul@6< zfB4hQcR%^)M;~2&7=qMU-foML45V4pAbcVg(88&Na2_DhmBFNz*E#i83miZyxkLpo znM75?6N{_a1qhvEBo}1lWaOr#CS)b2@7uKf1tdD#xaH+7FFg6wi_dLY_r!DSzw`9> z9=!k2b`KyqGMNl96m zfK@Fb4hCP7r=hd2Eg0^bBr5OeOIP2&@y;hd`s}yA`~4sP)6xDhFCLt`7{Pf-8MU>^W>9H zJ^tw0$De%ap~u%f{@_F3y8D5L9=h|M`|f_|o^Rgu%{BLa{hMnZyyxx*9{%pP?_Trp z1NS|&=HZ9F{pfeT`<-=9JhSepXTJCB#x1Yz-2LjdeFyjK*mF4Xz`lb?iOBO@nx2(S z2Ryq9s8|MoU7Q*KRfQ^WVo89p2frSs!s#(fA=ZNX09rv4U^Oj)E|7b+MF*fdMY~(T zVb+I0=4cz3^rO9DMCA?iAYF4;xV5XPu{F{e@-;^SzF?#w;I8+W%>f6@_(%Z;FNIMG z)R4GVZ%~PVAtwpAM1mT~)-{5vYPN`5jbIE8zq*RX1Z0rT2fneIjmUdClh3LE{EIND z^BL6)P=xZ?d@;l$g&Js8NX2kr$aFgBl1dn;p*g_|=zwSrucX}x5G|6ez;6q;sypa~ zKiKU6@uSz}CbWh1KDdYNKDXI|Bo#<=1`!w5Wt|EcPUJ`jf;YDUSTC7K2qd7mR>|c8 zmM-Q9kiAR@jzG3h1lSw2IX0WiW21GoEJlqKim8Cb;|go}T!87sJdiX9R0=7K26{ap ze+sSAU{kB?F0BQG*#P)bBC;potZ#s9rA*LAdn5-DZcn z2h<)?RKODsS&6_SOmKIZ4VHR`4k{zwV75A)iD+vCNbE41;Prv*4R0q=#Y`|B!zK^D zdb1MtW-}#v7~n|-b0Yj@cqbvd2Yk6meWsRcO-ePQA>e4lu$rMVf?!c&!XIW6lvKM~ zN>J>u*c+u%y&6H|Dxe*e$l4|Ym<`ET#kD*MSRSG1BS8e02P2O_j3{2A5V{+WEf8@q zWYD#FKpb-=Agq)t!~y`yZ|1q0%Fxi`jyBN!ag+KY}2iwLsS+X)f$9M))a# z{lr%~ytS1I&}sq;4;KO&1y`^ZNos)ngsd!;L2QINDwBXR0>Y{s*+7t@1u%J;SfW5< zrBVUXmdLRpi8Na)L@PvM+yo#w#7((`;O;>74qAHP{LxLYzY?#gP9qU(fV@!v`VSze zTxTS{Xk^~OO2mE!DpHLW^!P~hhRSO}M+wqQ846V@h$KytegJU}q@!4-Q9)x?C?Uy0 z?017{EMoxl<|1-BAZF7oZ^ zpd{cwjG_jG5)~L8QMe+}Bdi`g%Swd?B!CFwP)gvg$7!4az#U!3RtYr&iUwvv1rP>i z67XCo0+=B32eKu}LA)o$m$(ZhBZ`FhSs`U3GY^9Pv558X#}Qr9gx3&$k!1yu9hM)A z9<{#UbH)0{H%MZGZW3rV77{E&q`B}t6Z|9mRRmm(#fGn`^@cKaDk>BMSc(-uFnW)w z)#N^co4_JfQxIW1TUZ{HN}xd$8WcdeN{x^OAO{eA&@EM^5?0c3*Zhi}aY+M?V}dNLufszSj)56K;vIzq?*moKJ)fQ&Je7*@E< z(F8mh$N+&4M2*8jM}{M%M5+S9gM^UaQW+)>VI=4Uyy6NCax}pqi1!4b13F?k!AN3^ z)Id~FohALmqlY@d(1H^>Y@=XK|`s|p*JWQ0tA^XbO4Es z2z(k1#uR8#5!GlF*64~d28SW$8*@W02fmxUS;+Flx`YiECE-9gErvybU0jJ7!zf}k zVpk#Slx#LYB+Ce|E>)LUPL>5~f*ME-2w6tR??7-CXg%-;q=!W71|Wc}Mm41{qVGWU z;u-=IKqJT)kdY%_VFIxYYSCsCgYy_Dln!4zmMa!9mN<3=;wi^pgb0^B#K4%7O@kDU z2MN0feqp50350TChLuQUNpg*0WUx4hNrD<3taS_^dW8@8N!A)*DHtMLi00wI+Ky3! zDkSFr9{;}{0Yi*Isf<;UF}Uxm0|CD%{)~+^RKEBRF){f0jhL7l>Hk8GFMnS9%IDkP zQ?+&a5bEcNs6mYw-DDVzGqJOZIbP_sVlaD`m@1~n4Sik1s$Deur)xTTzNvdq>XD4fHW^wtP z>-t;oe(+Jp_rL$iM;|o5W#ks#_2y&io_k@_Z};pwl$eSfQ-vi6M1oW1@0K02kF=Zm z`CpAb|GQ;(QFGZv=2G=-Z-}XHS*rjak7-@7)gd=Nq9)SCLrRZPVR%{{2-O)#CN;k& zf~-cGzgzYXs4<~_I;s>UsvLP$15YAyCR&wj8aI7M8be|=PWUDxO~oa7vKC2DEvfBM zE0gFYlCQ42|NHrWas=R4B;L>7|H(T4PpWIxt>gcsHvLbw<+C+0F@O2tfFg*; zuKLDXZ#6u!>U_rj%>8eyj=2yUv-(G?SN(EZ%=riI{WThK=2273z4x0p`;Dttoe!*z zxw^&?d*S9G|2?Y@ZT!pXn2Wn(ZruFW)uxAyix0=1|IMSZ7eh&=@t9A4lC*Bsr8WB> zHOAb1zxhztfkWZYsnvH}`R4Ce8@Czf?z_{p`lt8Do_qGrn45il>sMWf;O2kh#$H@a zZvN#x-#pNkSG4Bf5o7G?{V{jth2LLo9gI0QxH{(bHBXqH+dmZc-x&_aymS9I&+U!5 z+22%cj*W>tyz1P&kHua}iaB?G%sW_P@W{^04vF!PT*^ z-}~g9u@|0*xiES`5pGqeI=}vnw^pk*th#XF;n;J@G3OqMIiD1Bel+IYH6I^K_=h{r z?~S><&N%R(skwP|?1gnP=T~>)_bCj-H}63~7c=gRx#Yil-<_+jz7})o&Xy-uU8q_W zbN=p~v6ox!yEFERBIb>|PUD6>F_+(aF!s`5=W0{T#Yb12kGV69@r)UCxDvm1^^rSc zE^dgqxc*+@zEwBR|KayZcf5JOF{bm8Z?3u-v*yoN9<|=J>P{0q=IY%~#-4jH=G?>+ zvFFZrqtO1p-1x?-^Q(pb>*se|{nM#kH^1gjr8=(|)AM(zHrf%FaQ6O?Vb2g$FyPB@uGzV+0ZkS=(qu*CI};Jt!i3D#?c zfVQznDTdhoHm5qiypP^3OE9bRhdvcRr@Me=w+uYRn z3vJb5Ed>&qo15wy>Fkjzt=2bz0vFSTa4LCsQuqhtYis|@Zz>d_J)y%BbdrC8Kqs^Z z4vXzsOsN|$cu6}(Ck9i0$PNgmP>@>MoL55HtrIEuD{60!MC$4yrxyt7u5#88&J)|T zkx1%hN?a|5Cs0u9+%2}hu4RgYIf8%h3?Y#CW4RU?cNxZb74CgI3Emw~-u76n_6l;rk#Dzx zI*!!UYPTvB$N#Kl^Qoh5lU0|Z7QD|>m##|^I*C*EmfK1>p!Zs z?v&HWe<>b|M&6LB!{L_wex<_Kr7`8|$a@`|$h6DkTJkMo0`-?vwoBCeB86{cGY$(u z^^C;Vw3X9Ys=zXNTzcy$P4sv95pcX>eZ&id}+#y4(8KmG5f2_66GMuZD8 zcqKnY$!Zeqfa8Fhk)@{~>vQ zUphlt+0}95Gj<#bi1_HI)P44t{-jkmH(Tw*CJNy%Qw|M zs;atu`QF`#`+^iNTaI)C>|YGImW3l zCB3DzzE`tNSEf_=cXUn`J;{xutqu$We?W{hrdoeOo|(xM{53_AE@-V*3Z!jIKAUDi zO!S;RQk$vvtYx3pJUd-N$@70x1JU${8l-(qjbhQ*QIEp{9nIM0hrn7!iW-zC-dW~v|6Up~;1eQET*7Q9h zcxyAQFCsA$h-%Xm{!U{ea^H4BTUk#P=2W&u$Fym(O*gjEz|`_Qrf+Plt4~w@ zwP%|Vg`u;D6Bnb*`H!@nZLSpx4RW9^9t|H+>$YfDn5ZXIoA6-uVW!B{v09ypkuR45 z4eJE&K7s9{m zWD3lq+aSUKH^EilSbv{R2pp!9OUd^fc{Tb3gV5&IQgAdo9nxASGCtQh%sNqx^V!JW zRWMea!J5|aH2(N8c}D4EVUdi!zrxu#=tMf>T3w(7gVcsZ#F%N&q;e*{dF)l5kr^_b z*;+Y~Jd6T2A*-Q9fjkrGoJ;;wzf}mwQYoA$r&2JJ1+>f{r=ivaPopm={G1K%R$X0f zGJ<}1kzGbk_@~H?wRDB4suDwuk4hc^#Uin}VUgrFP?sAPJxp;^QOka_dE_mPb(m~L zBjF=;WJm}G4c6dDlO{P$@X87nkA_MWn-9nPW07#Ed5fe8D z?fa=(Px{QmVjz{WUoJ2$V(~>*u(eIFPM1fsY=q$SRHi`z z8o{QsFO0Uzgb@tWpbrvFNk(IBcdF83oOf9CCuds0GhvKXAib$lA!}0P;niIE_?L@B z?}vSh%wReJEK=EUja*l!G0Oz|c%;Qi3iEW9Vq*%DOnSwKiKfJYg4*NYTd;Ug)jkyk zDdARgZJIS{n^gl%)7T>NeRO{==b0#L(&T&V501BJrqY|m_j+U{CPM?-exx@g%L)2P z*2yQpwYa$Uci>ulFSt&DjRXqWCs4 zdvmN!b#(z*;nN}+u45T2A9yc81&u0o!ggjnSrBYu*)*cL=bQf~ibBT29u!S5y1V^9eQEh!Vyoc>Far z^?#_TnZETr`wayWH^jHtPLA4=d@m{y{eD8_$wgMBY>+X%=!n<4%5*73n&0n?qqZvB zW}=YV$5*M+MlQg3oMyU?6|%46Whs`C`V^CX!wk{m{kk^(b@L--Z!db}Yn|D?Q!vN3 zq?y0o`OSle6+t~|>uRSIN)YA61QH>hu+*y2;^N}0TeDDSlg%l$hu5P=UMWS^HHpDrBn7Q>CO2!of(SubpQpsN{Pa)4? zb}v&WN7KzCi{*sIMw?uf{9`NJu7}y~ur?qIzRR`VfSR!1**n~l){tj1L_>{4nM#=9 zOk=~5#{ERWlv}mattoiY_l&xrf#@@J!DMZ{U`A#qHsZfSg)c=9C-@UK3qDoyy;gNP zy8%(4L)nip2Ade(pZx~=~iWlJpFFjW-uj=G+h-` zOInSECmNfD%Fw0{HMS@UM`(pm-F^cK)hw1S&jEw6O?U6m9Pyls5uxE0T=Rhbl z)^ZV(p->PBvzdIV#5BP}>4N7`HhsK&#$dW1tq)r;-+RRL09(W!Wtt0#iz*Qc z*BN97llfH+*Isq#!l6QoPGd^IB;rTx7Is1V>fFs29>g5LS6fT3#x9K5q6hOsvDjD( zpT)&4fcpd)s$Y*vrfZm1nTyeYJaq}PA}^4P0T#OpB?b zXB_5$s^Pdyt7{sm@Tt_8l~S+)6{Idz*ypBHA^vVE{eS;WLR&33?L1AUG$9pHThKm*w^S);WYz( zOYqBH6@tN(ZZvNY>9za!3ZM3+Q0LbTl49q5dxg(;{$#I!bI-nJ_#ybBes_NLe&%mx zyU#VB4!x8Z@-y^=%FJ(~ioT z9aS}JhwYhc-803yXOi{(Ov7V)Q>MI=d9bQR*XaDymPQ-2;QA3{`TcH4`@&$~miyp4 znTEHm2Pa!EONQ&LhAlOQG0(E2-)F(WKUj5*2ai~9-A3|dNlPs4XMft_cfxt!$u2pZ2{> zwGz7j{8Ve-66%!pJiYyzEY05un_h8PY1miGBt!6}6(xhJY2G*dW{mrM=63`3a@T${ zz2y5tIFa(*^pf99u_`;IB@?QeT~wmS@Zl0cL~=!gQSxy10;i7 z(?F(?YdXkua?J#pNv>HSv&c0YWHz}nK{Cme1(HRsY>;en%>kK1u3V5@a@`DaGr8u2 z%qLeqNItn_5Sd(N5Hq<7KnlpU5M&{_7J)1x*R3G8l4}Xb5^~)EatFEY0=bJ^OF@>B zYdOera@`GbH@Q}TtRUA9L4HWCl^`q0^&^lUk*frxgj}mZR+DQj$Xarhf|QbL1IPw) zJpl3mxgG*}h+GeYJWQ@fK^`U7V<3-_>j{u2$h8q!bEk@T-l^gJcj~waoO*5rXA(DrGlkp2IgFdbIf7fn zIf@&_na1tn9Lr7P9M7%egmos8)4*-yOy_2DW^hY6r*UIBr*nHbXL6G{XK|}JXLG|j zGr8@YS=@ZiY;Hm49BxEsF1MreW^PL7d~QuAteH7U zox8bTo%P(c&OO|_&Q}KN?r5mQWr<7#SRNGW}THiEwong9rddUo$X`3lu z-*-KmWw^n8L&`2j7pEtQw`En~|K#qQ#gyXhX=J@Sga73^Na58Xd3xsO)bR?7GH z-Oqkx__6!PB_*`Vwn|>zx0Bdf*z0TfnfqrY z&(P0pKbKh_w$~df-IXPqsmfL*SNB!3ErzY`ttBHT=T;i;@@UMca$=OMNe~Um9L^zg)75cH4H#b$xZL-tdb1m6APtBs*9+I6OOs z#_3s;teL8@8N*V9v5jXAPO)AtK2%lX`s-iyul;q8;OYnM2Ti%6e=TLN;2H)xY_D*r zvIdh1e&%z2xIq+OqrJjwB7PP4RpD2IUmbq+_)Xd?dSxo+Y}B}$e>yhY+a!35^NoPfMOoeamU!Orhq&!<mX`CU<{%p0l1}t(+DQd`_KO{%x|gGA$m6Ui~JqN?kng1?~sEIc#w} zUOlYxFa6vP=v3~75tyZY%Klt7f^<6FqG$1;8<tzy)S+_&AEPOTA93~vL=R^?bF)>Yde*%$DeJha{C zZKph;){d~pcD&=zp+h#C+kM&Xw*CFj=kIi!XbrUQ^Lo14JAnD`{B$1eI&SOm+K&4@ zw(b+*u&2xR?@dkrZforbg*>gt10C%H;{J|RXIF=>>nO1A+TJ;BJ7Vh$c)GegwyvY6 z+mD`j_h46`)qk|>UE9(2cWoV^z)767`8s?jJfXkiGV}$kI{ksx?g4yv#|gCZc)gI_ zJ;;5C#XCm>q0s4r;iG}$5cbc0!Y8@|t%Hq1P#p3)1Fc8Ho>0f}A$SM+*=6${KWYnm z!tZ#xAQjAx*xo(be%kiV(XIowcRlR^NIu%t6*zwMMCdqRZi3WajqubWq;XQte%ih<~9y)FFc68ZJcbw?5 zc}{z}_t{QDGxWfA_|U)G9RKm}==AA>+${}5to}8H1-n{3@ZYhD5NkNe@tf6Wd>l^2*}*4Inu`MY+aYT6X!+_raK@y;EFoi2Ly zJpSUPQQ3aiPByVt`R#o>nY8IXezvK2=i+$s0$>siJ8`jlzNRMST~u5ribZEbNitzi zL$bj4(+RwM6B#n5&&tf6JMWfTZkabXJ9F0b48w%6X`@GvP8&0B!o*32$@no$nmA$n zIQ}z!0**~G7z~ppO~kQ*9~_#9gZROr2?GZ~29M#BADe)7|JBccHh=ShXPmI~AxR2_ zQmIm@H5#o>m!MBfN=i;i9X5Q#$WhR6?4XM28B?cSH)H1Yvu59znT5Ar;GgH*GCzNT zydZ!6EjQ=R#k(-FGH;wc>-w29@XSs|`aplijUAIVdeq1f!-u7&Bqt>$>JxN2twy6( zsgz0uf76J_-&688`uvMO6MnP7eO{YMJ3-QR-`8L?R;%9B;J${|m|3m)Hw@7Cy{VXS znY5CnTG23>s#OiblxoeJx)~JL8mU@02oYz*FKbDv78|l;;L_89OE*+&8pN#cA>e|q zVnh0B&MFm<)O0}7#cJJ~dd@G4s`Uf>8m0)qWmH`gnF<`h1Gr?ZWVniZlLq99)zpwV z3@wUwp@kVruGKUMsnxoMl&rr;NvB_XxIw8Q?8+ff61G>BsHa4 zTsx$6>ac&MMk=6)hO1C+GhIXKHO7D2MQ&yot|4nO)JUa4H3l7>p83x#J=9>zK-i_i z<*=oyfp|C#LpU`U5lR2Vorq=L0nrFKS?Oq&&Z8AA5UoZu%R&@f^Ziw@Ap>Bf&rtLu zOB#&X02_uPi$}WHkj)`H&G?6=AsY$uCZa!?$HY~pB2PGc6&r?S16)u5Fg`R5St&!Q zf;hPb=BdXy8-@X#Qw(r%7QiX!;GmKN2`ut{3??x8F_^&MG6)&S*ulK#Y0HbkjE*=j z3fGtXLy34(HBb(QIxr-Go0=;N6=C3EgAxX+$W;l(44j1$C=A?=G-aSGgNgKgSHNWo zx{^K(-~po}ZeVo7kddbRgOM`1krn}L9*{dwCx&sO4<-K9QnCq@Rq(u4;D3`Q~o7d{O_WX z^gM@$@*bfuP}=@E@9*=Tm*CVPsNo;fKy7Uph7!TkcZl&&K}pu8{w?~dU!-)PQGf=} zJmGZ>!=?(?h+qL>$48t7)Q+pQ`C79E1CLSTKw+2+@Zd0p zfc|IoWH9S3JnKTa(5AHT4u%`6286K7o1a4d(bj-v3Pk(|!MMWdc{EC5|Sd zYHEVr#3lti*QA1Jn=}}3n{=o=O?niurX;!=piMRoew~Bg;9xrkJ2<$JgAZ`t?5>bA5BXz@HX8c3~}z`;P*NBLk|9!gFofq&p7xZ2gj~~ z8A^XsB?@X&6@tELiwJOy2=KG8Thn$pt?7Ajh_eARil%f-e3~+lPfgP#fTv3U&y)b3 zg(}lDTN(npIrtq8ewTy29PH=dAP0vyxcwTqL;>(>1;A^O*G;7gfHx=ren0{6LkfT& zRt#|_CBUK*V1*K3l@ef$5@4MYV7(IHB;^p;#=)<1@EaU#=U@j1H*)X+4nA}ZEUN%E zs{k%g0lZKJ@FEq!x2gbMq5}91)ez@C4t}45Kjh$#Irvi!{)~e!a&YV#n5hA-R0CY4 z26&4a;2Jf+&#D35t_Jvd^$=$R_NO$ZYXHvB06a|t@N^BpGc^Fu(f~YLGX!>X@H-s* zE(d!#*w4X14i0f}`!#Th7U0!dfY)jPF4Y3OK@0E$T7VzY0{pOch%@N`7IgqCbO5V# z0Bdvr>vRC?bpR*nhQKxsew~Bg;9xrkJ2<$JgAZ`QygJajgOb>9S9^fiHz+3bH*XRL$RuAxY zJ;2ZFhd3J&0ZvZ@I3p3@X^8+&PXu^oBEYi}0iK;W1a@=qI~@Ej2YWf#&%r?s4sme% zHE>B1z^ju0UYi7PX%fI2k^p`n3E+p40Dd@Wh%+SvEG7f2NCsGy46r5{U|ll6`ecBU zlB<*ct^ob!I^35_*(P=>ev{!o&wppI#jNCCT=@J?AO8JYe`q?=+~Rzjzi6=aUC;lt zy#L+!U%l^tjr{MX-~Y5e<0lf0V7JHPv6uMvJUnpdJw+?rDQqU2z~a|iZz1ngCJtu_Y%&v)$V&-AK&??;PL5+SH3+JoEp=lUIrdUw=~4Onrls?HtjIZV3tE3Xv2NxR$$ zHq)Wcv|^nb`>R*e34x|85d$+RIE&iy=>rl;RjDOULDo;j;N#@kz$`xye8VW1#)cOP z9tQ=`W*@s}2@JEbxS&DdnML7&c7+vMg}0`B-SRuJJ5YYYvaV9dt|(uwRr-fv^D8!p zZY_uu4z?ebQBk9n{N<&~PO2pDkl>=4ty-loZ{10ifZctb33x)IV&l35K>~w-UMSjH zI$W%BkbgCuBxwcyd$wH_e1V3V=hT#MT%ruFBi?qoG37;J^MV9{2HGkW~>naGGgvCdM%Ec76m>gnXK6Q-PeL*1x z@4#Mtz?O)Jq#pE3+B8b4+{cVsJo}(EI|PoLyZesH+nKQx4>4%74UdT&jUYV>rqZUp zqNl)^ZLye`#$s`Z=kuw3?ym1dPoZ2;uu!{Mo86}pxT<~!g_uM>kk#aOktc_OQ?kt| z!wT-vZgJ3uXqQ8tS;m6NLPp`eIC3gMfKGi=Ca<=xSS^H$3qBV;Vquj~>7bADDSQWc z*OE8mo`p*B*kcr2FW(`C3I?Pkn$HPVv8Z~r6yj#dsNxC3n}9zo$+siGzYb>CLe6j zVa9o}X!_;>3A}*;2Qv0@E#Ko3+7uNVCs=M`qR>5j#1cH%(`EudDB9>yT*#-kX(F}F z81ZWbG(5dtE))YKEZmqT|RX|%7@snU3~Wwlcl!dg_b`G5Y|mO4)N3p zI+;)B{*Btp9m2`Sfmsg@$dQ7Z9ExMus4fOvr$l z6(@7J?T@`EQC}hQH9-*kTOC60O;~2lD6Cr`Y#m|{mQn?8jM@sxo5N9%*^?p21%=yQ zE~-jY)3E`YK~h-UurVfe0GGWyK@ffG0bE|V9&gO5+r3ZYS)QHgkiJ5c!iYs%*A-is zTG@RUIQs5}+`9!+`82gvD`(3p0h%N1+efTlx7;YJl*bW9K?i-ZY_!QiUn5|UBb^EO zIEfS3ss4$@EeYS^I6V33;GvI;vzaKuj9~{|7>vSCV9>w(?SYS%XF5b22|4I9KoFsy zm}d$2cIoeqEjJ9H+QLfedW=r1wTRA73eAHDq2+6G1G4g@!kECFe^yIv+U2wO<0pT_ zQ)M`hGWLWeKVIqB)u_CM#`v#H_X&QrPKM;$KC`7ol%nkIpN$`185e`kgAZWTZD)Ldze+ZS3`t1#J zrHYBu1!Q!(*>4KXN&F-JO$ajRxR3n zZw;Pra8UGy!h(W(w(V1Tav5OIwHO8i;)dzw<=K}--?aNp#g;XKh`eb7o}{966BWVNWXnupNX$kpo;fI#Gsi=( zz(5@_{!ZmXwJlz5Tp*~Bz5%oxmT~v;iBiC_Prx^>o>;g}D+LN}=MM-41`3O5l*)&q zTWrbx3#s_iVmWkNpp4=It-^0C*e9Z41l39`TyDV=U&d_n(-PYHgzV+UpDKbV$l3c8 zaO+^RDU-y2#V}J0UTuWj^%rDK5Ve8Fb}jsl z&N35WpQ-3b3`>c43Y^V6AmZr+QKT7b9Liu3w?dm%NMd)DSRJg4&Dw}_3p3|tLaVK{ z5`|$KKh2TEBKb!P$4kq$9Nf2TDH+O2NLFos8n()KRPbS{wg!*!33k)XYyVg|2M-9r zJ|h>%6D0X%Jks3DMwZlBr{SPy)>}-vTP`wZuFr3>j-HoDFN% zkYN*ZjPj0T^VlK*+xPJ-wY+w8WxAj+h_^kNDTztjGI>P!N0zZH*)Uh|h+0z_Q>GBNr`IniZpEQi!X!7;=i#9#vMx15d6|PN5vbxZ4a9RJSt2)FNw&xQw!v zlCo$@iAV-gW=^YIee|}e4#79|i6rxy^f?vPo2plD`T1h_bSX&=RnQ>O58NvGRwmP& zql(Rc5~)35YUXt>zMv$UllgDAo)_u3MB*A!RH!iYEq5E1>dXf5F2mfTifUXHkxbLf z^M3hjc>Nw(qI5^f@eGn47nS`B9k|%bTw^mEq>?N|r>Zk$Da~24c$a-qws=p8L|MS* z7!*%TQDr7>bnKu0?F03xL(5WONL#_Q%5~eGG!aeLgi_@x57gD43GS$vvi+rLmNl#Hz$7VE zFzMGXzi0Q|(^osxZQ|W)*VjAi>i37*+F~YQM^7je^`qNsq-Sm&F)e4?6NYJ(n|~KO zTNe7ybt|TZp19?i9pTS*x4kiK!Tmd4312+3zvf_5sA+A{meTr{ExR(|p}8+EtbchG z(WqBKubinla5*3NsJ z#Kdj87)k5bZ98(HuI`nVua(bfnN1GfvpVC+sn0ANId={+y6DBw?1t6To-{bN6&3Bbn-}l;Gn4k7ge?N zMo%9+>kP*tO$|r(hZ@$~eqfgF-Bos=?N>zO?!4`+^UU7fXj_k?W@4b+eDJK}&|43@ z+_Gv>IQGlZJ!iv%W_hKtCHV5DUuI?)L`Q;8RljS0aDQW?v+1DYxt?$+)E?`3s&e6$ z%x9L2T32@9tz|{KK8wXBJoi@9Q{gj*e!VajX}9kvs&-B?9gI#g_nr+pHrLcG6PHQ% z?sjN=Bcf+xqGz0gF$L?5#u^WOw&^YBs>PX~G&s+O3s7DTIIP=#nVDm7DE$lfHyk+9 zvcK`|BhK)0X?wWEAXRREVZ}c4GlipfZ9DMR^2NJsi=tOVYtyc9&)Y8-Mq|ByIOwR3 zutVcbv7WPSp-?!mt#0jvClp>N0G#@vgq43v$M=P`_s1GNHi32 zOKSg=P|xnVm(4kuP}ES=(y-rF*w}lVOPP>2N`qDR#mIlJD{A3-$R3WI^tjJ0#hf?&2!9^s5^G9z=o64+;dv1YB3 zW0x+r*$P@>4$%*=`M}F-7MdMO-;{e=8u+7d`+Lv&pPLYAgX4qYlY82>++*!*_bV2%WvL(x!MVB^%%g`3(!VMmHr-Shc6 z^QHb?hvdBzDvFhBNqxJ-z+%#TQbqCY6?LRQwg7+>|I+(gA5^K*b=#7Lvu!MqbyXS0N z@k%gvu}z*ZT4B9-PPDr5q+vADFH~MyZ^azuPIg)DHAsRFfpjr+ps9NO8WJkD3&!$# zp`h*+=eHJE56LxeVSkU!d@=Yd$L91v-KOxp1&ie2^4VA3UM+2wo|cPPB-$Qn&o2!1 zhI>9Jh=pPeTX&ZoxcJ`UqeSDQp~(xc$WO@(mjL>dvEgW0rSiH083WQv`C@zUGj_4}^WMJ(9nVF=y`j3j(fia}pAuPQ4W0nSGj({N zj=hOz%OfqJUs~E@N47OQ)pD`jq4obt9^0#AsRB(1U9wz?ox9({M5Y>+JTo43h(07t z|HbyUef2MsBf(o-z6~a>zoV$X!DN(sL{lVu&Tr}Y#5yc;F%UjqART5Q$n!;edmNG{ zH$g}zPbBnwOovsk#dZ1XX8LyvrxB@1b${#b9Q zVZYs>_LY`DyT5T};k-0)LVxt^A1x7^ska?*njQ;>W9?;y>WdH+ROc13iy0<7*c)l7 z5GyA~0|(lBz7(rx%M)Vz%;JP-I~EfBDXZiaBI{XYQm<37@KdIzAgg^rWp7)<{xa2*Emx|mOKdwIq_ywVsC$Mv89Y@wz7+{OZ~r4D}3Sz`C_PfALeS_4fRJ3 z_JS(qFBB}=f|&=VB@z~DC0Ua$M`v4yb?^za@5*njiTp{~pRvfd)}3cbGgay27AVdLdz*c3U|+isp%#wJcPO-t@FQp1mf=`u}9^{gY@-w#iC48o#bGbr(xc zP0>eD1wER-1+dt(I_tQz#TnigbYs(nhYoUn~e z%x9643Ty1rICCy}CicfpC^la&Yten7O4jIM4R8OWrUes0$HzE@fp6>n#(!6C8p+ zdhRZ>@P$Ia6+n3Qm2;7{U5JbQkyxZRQ>@1F)F}ub_Y1zt&}|pkX_k<7sXw_g{caY+ z)8G?h(HzC*nOAx-(+^gY2X^)D!`kl^*jLJyuS6nkb#PbY4O0yEklvH!ne10AQ{Fy|QKxi##V-`;$!*FGZ$qu3|8;|4Q$hmFixH;OT}ZQ^9i&yCEFAc=j~Z zb2_a3s6waJ_pym`x|TXq7nnwko{NCOyAocs)U*EHQ|1+HV*K1BY4bBOv}se$#!5jt z=5;@^+T?iXtV8nmMlU%wkHb}9P{G$#y^)B*9P9mw`3~8^E=|KKoo`}PYfjt2dXr2m z!21DKBEzhmDp^HgEt6ymyL2V~*Y=q6r(yLC}k;dCFuv!@RzIxPVy-q7RlcS-f!b7 z688^+ar`g2h%6|5v0EknN{o{VjU14(*u!izi=NAZDuKJuJKa}7;KU0uM7YWqyQIg@EV!Q?R`4s}u4N+QYXzR^ zf2Dv1jeNH-og8ymQ{;KP4?&eYYM?Kp-sAlXAHh1G40|DN{Xdp-7*FoV7yJ~BfL-JLV_ZD0z^`lCQ z@{|?iAI+}Ag)9bcEGPt(qgf(s7{8P#dRCE7&-%DVZ8wr{3ht69WW4g~c61>y8+!dv z<|`ah3h(|~Oj?MR*+%42YWm+~K3are^pS5Yx^FgNt3V6#){Et|?ThFiXI#y8k z(DGBtOragsV+?tKX-n1M5q|XMPq6BjM{8qcva~pNnn*<@&Xtx&9$wnsO%~^Q(La=JcVN&J_c*7lTH`(cI|8qiDy-xTX zuUgRAtCDadp5m8pkwTsMzposjW6|E1%&j()K4Q$%x8@2euR_k#TfrM^~UUY}hRF=6REuW^rEyohS+s}z}JlPfV3 zQ0irAR49awD+<-xP-c=C$kS)G+7;)~q7&Hn)VNiJxf{NE75E6}>rE*-rsz|mH-w-uPPcJA^2P~W z^Np9((y_=T&Rfl>h2m<3cbqi9+s8v8$dSt z8za0cYAjXT;g?pEAP$^TQ+LSN4I!aCE(F58zn1ZN2Zyy7hhShycB{Tsf=#_@x}7UJ zzy$K>Jy?&Egixh;)!PGrdEH!rY~sP8KycVa4?;t1Z*GC8K)c$iuwk081iZWp1n$2; zyw)y8&%iz2w(lcn0MIhZ3V=UePj)E^VcxdpcEK{B%z*b6K=DC(p$3^Ea4 zJ1NO7d0Pg&2H4dW0sQIBZhYk-Q49?yFA7Yk)tIkVBQ%U>$gcDvJ9^ax11c|e+hhm{ z4m5$UqBcZqOCFCMC6~<4w-~!eOMW=Y3Ja>m&x~iFcvV|#x3RUC>}tQ77P;dH%{;Zz zZ=8S5oLx(LwREAm<>toy_Ucf6B+{MNhk#q^ZZSsHQUDodZrIcCQj(fU)HoUlOn zdS&Q7we%G(SG*~hf8Qa}vDQApdJBEAGNcy2?nAPu>AanO?v_-tMj=gKtsWB}LW!lBIF)GdRC3*0SBGqH*@{k2@sCkWkk`czHl!1`V~X{SyOS&|)Il09;()P1~lNuE%( zl>ByFxA4=)RI(B)naammnVgK$Wqd&hl~MpF3M^rcZT-+Pa`W+Qm07Bn3zp*j!4$ZU zIty7(H8SbFEIajR*!)%=D;nJKl;?-+Vwa^mZ%HU@`OvPxHB~+@MY14t-G`U=F(fIS z)$6PoY&^35n9+^;C(6o1JDt>_*9A$I);zpkEx*91-5g$WykLo4c?=DU*b#<;b4;2i zS#S89TJvWYV8qZrB39vO$9%Bw#2+VB>PRHXY|I}eVku8sncp3aR4aTq(>B1PbG!*@ zA5dafBSsR$PJ4xtsZb{d)Cm7T@P=A5#7cuiU%{ysGQTE8sxB+PasI z=-y7d(5BDShr)Jc=X_MjW+;jauuu`}Otg#L`cUY4OM;tP^D^~z^?Pb4>3>8{d*=iUTf4CeWp+_Mk3`FQ7(tfZY?f|PZWoXi&cduuz(5+hwOA_ z7HhE!9XtY~30CC0(h^M*+HbK7J&3Dgy(>rX8>*4~-eq`3eA!1YEJm}A-z^i)W`@0W9E^z?jBpCESXWnE6| zN6T7ItTfs+-udBTlomT#-P)CTD?R$E)|^)R=J3j#@ck=Esj|2cDg7{-w%hoTesf;& zGGpFK;|a9STlrB)N(vyH`R)0ix;bWKl1k1;wZ!xwYRv1-??$vIb>z{PgCzpkE;XGs zhTM|q9jXrqPHz;BG_Xck=nw{O+-4T$$qfj-6a@R@=X&Z5uepAv<3HC-@v+LYo& z)K}CV5kCKl7mrRod357j;iXW>uIfb9$eK@=TI^O{IAYfd#<7pVcIAmy_`)EmzP8hk z+{MM=U!&yYp>%vbfsUbi+{q^er@cHNhAD|RlBBsBWur|1o~Q1D=q!z(?ltvTUkvY`2DPI=At>lF&L{A6yHXl=kM zDn#T#laH1eKav(L%PU4ED8HDqzT)Zn1%eXM@i89}8<^0Th}b-dRF*8pJjvXRI2o@9 zBXEvo(Fxpwcu1BwUk(p^hkIM=vA`CZ!}rNzwnE2@Tgx-0uK5QxmL8BLC4e2Md%(7r zu1CoovV7+fxq;f#nd0Yo{qi%sFn7#-UBrsPu>oiWvK*EVdF*2QobqQI#P**nC=_fw zut1QI@EsZ7sD&;dyATB)weVRnO3PBhJj2s?@H){iWBqSDK2UW#)>qVI!JQ(VLNv#h zQb=gDmq#srrp6l{^_%PJWJv_B-B?<_HE^>+c??jn_307Fm5Qx%SP^ zU~voJ`5V`793v>ao2l&!`P{cc2O6j;ijk4y+c%=C9%y{RPGMuvSNcHkFQTfmfdb!B z@G5IQ&T;GssL5gTL&2Ym5=_C@)=En^d@BL@Wf&E3iTplh7J#0&Q^**cC{)%3$4Qle z1%eRT+8}t!IT$^N&n>S&Y5^Dk7YsF_`4a_eU{B+GVe=lm82bykA`)wmFmvMZ;!8mP zLMVoTCGrlnz+c+lXQ#HG$wEkP4b;_bmI4CiSkL!vwmB{s=az2xb-}mT)A+4`PW3GN z2+nHnU552?w494uv7b~#V|Ws)92SOGFdqRauzuA=)EwP+$3u zUO*Kg)hSfobCA*XC|@G;U|{!tVcBXI-Y;%FflApsvLf=BE`R(%+l2T`-68x*=!l)*g-jCJd}O+;)#(&oD+RH+CA2!N;jt zA@4)$*W-Wu8RyQ|c}vUfVho8_j-Zz!sNUgm3hM60)a~qy^`)g12?eF=@lWkajeCpi zba758{*hVfnmKDVF#SF5IfYggVq(3~ILEHOG#8=vxY4-Au4!>6yd?@zJ3Zzeh`DhJ zp&Jn=BI2;;8~30g0;-tYBEKy90#{7JNtF_{*tn!1G#__lPDXDLEcBNS;1V-zRLr2zUX*WHt(aTYicpVN&p!u@mE~K2&ek zcZTdzH%5T3q~Erx#epH93uCZ8udj1{C$)CAUf6-q#4zxvl7iXv2}XjeqQ4&tFl&$^ z#?H*v&b;nURFmXdH%9R=VS0tAzqOO}cInhSLbst72DXUN*lm=GqLFS3pB5mHJ@I|Q zsfXlHrvigRp_|k~uzBSwv3q{#zTuM8hO}M~i(ROzi{(XAMD1zEz_9=Rv-tlT7yx+k zwyVWsk?x_~_4TW*u@8FpNypQErDVB$j&L5K&aY+{y7#e|MHB+L6qH_<@mg`5Lu{i~ zS=_Dor&Ead<9Pxa;Y8nH!QmwvR&4E!evpetDsT?vzYmR2jDk}s$cIK=IdF03YyJ<6 zGRJyzg>F6q1jQ0oFg>{2(Pf*lyB{2C;GSFQzH*unBFf{9mT zsq>a*yLck&G^-2F7b*j}yhLCSVVlDW;RN(*Gob9xYiq^=K^9)*8_-wP)$PgUqsXyb z>{+i^B8m}S(U-%bXXdvSWAs&a%)@d)mTX54Q0+S*&iD8dQRv|zn}unAC|4LdjwvBd zV_iEml@B+kP6#GG#rz;kw#f~-d|>Fnd7SY;motDx1=CdY@Km(7cp0uIKg{LU8NvVx z%tb!ROCJrKX~&`V!KU39gS&4TjfvZ^O8j}gxOio*gsTq@L4oBKUPXc9)P{NMaDK<) z1MFMItK9h@BnwucusbYNJ}@jE0~k{^9t%-;gHMLuzlNTtV7&JE3q*!@&F2oxvF~^1 za^HuH@vZznSK=Rb_-0av$1W7Re*pgtoLdl&|3B<~3w%`7wf8>H$z#ZbS0Vu+j3WdZ zhG3AOf}9L9L41+gOya8&$2@$)Es(VL_Fhf^6~9}R-g@h&t(ab?c(v{4qt&W-ug9NF z!Xto!FI2=^RMb|9qM%;ueE+r2IWuP_GkHLuwQYV`d!Mr(YpuQZ-fOS@ID7tdQ|nDl zO{=AB=?#V-(l z)zXxA6O`Or=7_qpoD|(`1;+D^SnR`=EAno@`DWoQ%1xu_&N-w%dHl{6=*QK_T5Uiv z?-aT_W{a4Z?OZlYXd~_S4!ZOP3<2S9@$haz+q3t>@^Y7g*6`L=m+&rG^Dob)$=o(! z&)$9I6)pwiYwHGS->(Gr2ZTO#g0N*a+40-w?s+43zNOl(S+IdMLO>`Yj%0VlHQGhS z=|BBI645DIjQdAP0v_58Sf$I6_KzZMa2@Q%rw^Y%ZFGNdhR78bYUKdeR-d2-4|65e zY~UQ^M=re_is>U!er+;)9n+8l$=c`unV@HI6BMgA2jW`iDg(XwdLp<1bp5l~tF3E` zMEV5dozrN*{ZcG{cFybF+wN0$mBX%FJxAGwxR+h*xji3jfSN3y(;%;U_VseC?8rOI z$*y!MTf3jdf()hcenn~KsFic(%zd`J{DUi9I~^wFyKNW_Hn4z!^~3Trv3OEW_9H$C z!+?tJ)?z$6tnGt6)Xm9U{1Wymv^k;OfORvkK1I~g@^{8f#OI%J2`>z9!^pn@s=rj2 zyl1cQ{7O;Z{8QLNFb#Rvcd-|{HwfP}(B`fZpWpJ1&}J$I7!1_sakhLSW;LWepMdR5 zy(_L2OyiPfiF@A2U$tl72+V5t>}nIq(ylce_TTdzt~O7;J{=2+7kK})L25AO{1P?^ zI6%s`VT^{2YuIz@24Wwi_RSf6!L&9}Mr6pqGBFa8#&|&(scm2v8To9}u3uj*QZI)p zc;TDFhhsiEaJawPAbp~S5OU&5UFW7gt*maxs%m(2+1B+U3%z0|t zeXcEEV1E_kIN989Eyk}J+}-BivuDPs!kP_OUGo3ehr70SckgL(ZH6Hh{?-QZ?F+o# z4N}L)Uhl~pb_FhIuXN$NifJ1#HkSkEoHsVySnh5^-uH4S z&75Ivqjz~EkH@L!F(9rtXr=p1mK-wy*4g9y!}6<;q-l*eh>ia`6gk7`*J&pWV|eCi?b%G{#p@ zQ{s8X6c~jYq=PQDySrWzFdl}C?q{zQ_fc=hrZf}{i7@7KfsjV)UIJVeW1J> zOQ6z61{&cKh5ca!>)f@W&FuUgh9uE~$YGHdTAGY!&lC>Lp|veCN0vMT8*90NQ35H* zfB&gxbLUC4DyEClXSv;2n|-&u``OWF$_PWIaB+L!166o;&zzr&KQo?EpbWapSgs<& z{NJib*BcuR=EmE`r*H$+Gc2ptb7%HPg4Z)eo+d9*+T8~|wAX6gt3H13Gwc`G&=6Fe z{nh=w_|nU-?0)sN*Z2I@m26-IitqmoEcstus^Pe!&d?S1ViCK+I8PG__hED>!)#eE zW6#${+Zv0|8GYLCGpMW73Imf=aCRK#{Xu6N)F4z@Z%;b0JVO^iTi?=E6* z)Kshi^o9|_tS~d#Xir9y@=ry4gKbLkDu>+Utp%$U5h`mq~WAOE9 z*bQrHC=$1Zi-euSCO0((OQcThuL(eT5S;A1T*sY}+l$z%wf72JPR8ssR5Lcv`2U1W z3KDHCVvCJ)*cRX`DPo;+IMj5nyrr=w{6B)U*^EPyt)LOE2^LA6`L(V0irpcMt%zM_ z;7dT1E*xrBq%BSPm0?BLL^6?ULX8vT?HJYZdZVEPYoC^$!yDMX(Fg^@6D8?odKAaA z=R??&VMW3kLoOCx(4thd)rL|tLEIVQFKdiB_z)?lIx0MAK#Zl&6tOi%F?(SwhUb@x zpxN%mL}a)=0p=>j;BCi9Jya7FfoP4P6bsJ>!yzo0@Yg?~qDJYV#+9N7{?{1a#)jJ{ zy|yM4#Woq;w#l3HWX;zlss)YKSyLr{5wiEPuj+LrLW650ub zFj43l4e{?0%y*xr;I~aQj7UJ4naT;M{RQqZPuFop#~O^xqJYaY>`VV#@tJq_w0G@*^Rk^%uG-HFz< zjOw*%MlhdkImEW+7ij;%wuD1yd5=?u#i-cY)}}5&*(#gOK^8sKY*q$;fabPR*nBB_PN-sCx1sWtCxz!5 zis%>iAfv8xSa%LuGaA)htAEBgv99l6bCK=1ly%~`U-+LZi}WW+9xpVZBY{R^O_A93 zB->G-q3s0~d3!c$p@{AN0m%sob{1&CCxz$A3$!QME}nN}O{nH_sk|@{Xn&v@ZEpBUFo>%cjOsiN1PW@b^Z3tQvW+M1huDCyKoDCAIMzjnYul*Z`XM zZy1ywv;j5fixLg`Mry+o(1stQF0q=cx!?q4TaupJVZVif+g3qGq2JzUjH|(?%^K99 zTqA38=t*^Zs7P31$kpebmjAAXQ`PYCY@y-cL`g=i-)PjxH4~)g-o>KHypKst-^S;ZrHL$KS_A*)>Z}qG*Mq|fE2XUg|MjQ)XDGHlvpsC3~ zA`P#P#ZOc=7PXy(-IniYT9H6n9*X@G%xv?2>x*pD3~WeldIlEh=7;I@2UOel4A>Y&(k8MuE=7lfxnXL&L75xHk}d>) zDhhNu`ZnWIZe;wxxRt$L#IA?caS;L(_9_{Iqh{zQpx|1V$-#Ys3|ptwcvX|9Ru-}D zr?jXZ#<)us4Qz;WPwo3}h}pSD>M%4U;;9 zr(@w1-3{%Hj;?GkD0>7uL8^xH-@h~iXR)2RY}4JW>rOpN=E`zo2HSoC%-kTBnGs^( zG0JX%h$QW2NOGrfqNJM-_fi7Lr`7PYtx>jpEsWwK+$l8++Wc-&*iy*0f;4b`*LWE1 zHOjX9gl&!zS)Qi)aba@~R@1l@i6U)Zh>bVW0Awx?Gaq?>`G3@1))ot%-D0n@-Gh3pEHOw&1 zGw@jj>KvxuiMl2?H(VfZlfyH_txa!0Urpxk*UdE>h0XbmFjco~WSvb-HAT`}Q;FNnq3RO?O<3J;(r|Wsl}Hx( zmNU>iZ)KaFU|S1d$ZgI=&_;Ug=I*x1H09}%e=c;eTH3H`9Cg!Ym{nl@Ho36~2Upl8 z*u2{|vW|KUh=Lo1j!}*1xLv=+eO?`-aaR{UiBf`^XSIB5+r7HRz9X(GVqZ-|JKv@- zd_c0}JnfIVrp?3|e+`%ApcjjsoqDy*LSZE|7T>SW6jtX&sgGY`{1Lgfj)3->g@>*J zJ^ZW6;K>3$t^Y69u@2Qtq8J)mQv(nI z6M{j;Y8X1PCTD;6taYyb8!oT%27X{~Z|d*sy& z_77Q)ddGIOx+=3uT^^>hr5-ly{&9=mWP9ZYhu!9S;jDaU!+Z<~G3N2~TpLl|DOj+#t6ft3iVwN%& zi>XUIhdfPc%(c>U7%{Cbidn~Sy++n;p3gjMvtrrzcs@tWo!J!g5WW=gLzmi?||nk&xd(9^BVIM zp&N>_{#Uoq@%I9ymB8LN|L6Dn-g-N2+}}c=wf^_FP}H<#ywZ*Jzvd!g*WuP%#TWhw zr!Ezt!Dwn3EACnmTo9Gk8nsaYA1y{O5&IM7I`zg}OwkMlhq|Kd<>ky3mGMguTv-cXmqRt9SK-PkoZN`YugD9c;wN*-K06zTVn9}$CJx0yP6lKALrAvF!WMYKjUm>P!&g%Ps_BfhH7w zUl6~-nuc5ZG3-78{p&?8rMnH2i~Zm+sw-G_bZcKAfyoa(pZyXB;EL#~n)z7&W?#lM zcVk!)J5Yh*%NW*q&2@y7HVW8`TvbLbURt8!0%BuRI2gqiAA0vIB+1Xfa}%a%tx@UI z+E`R<0&#TzPwS95>lv_ms1^l5sEWtBrl@!&mEm0&9xJ zy`a)2qm^lNQa?+;8W4MV1sCi7FIg8_VOK41pHCdTyj&5`kvm{C1~maE8EO=v<69ak z4Mr(1$BPi>0@TD_&ei@)*d_!l0#)*NN7=ikEX2+_bV{kp$WgGRiR#%6&i7j~*z{v? z8nT7(GFL|*KoVV;zeOce6p%P>+>n1t@4ElOSVI9E` zl|f$|8X5+q-s>fjPFiBgp`8Zx>XWP=&ixxB2HF-Ng9W($WG)Dliqti%=p8V9B` z-?W8dwv12KRYpM{74xbK)p3u3I{!2b@>dyP>~5>Btuos(c)@H3)Ef@}JHshxOhwUw z1=J6J_yoA=4B3Va*dA+$ty>=2e`EHaP} zGHz9tpnBgmNfof|@)Y^$eqgilj9akEEM2`jA*a5Oy2J{6rbNW!@N&_!M>JPPG zncg5O+qI#qjdX@2MR%N@+$-i&X%0XX2D|w$+5~@;TS#8rK zy=RJqt%d5g1rsGyAUD8_gC&e73eQPit#E zgIXw-+`G_gYh&0aYOwfjs|hZTN^hHO25l{`-@S?+jtW;8Zau0ux8Tfv zcF2|6c8v%Dy@8Fi8i+?lEWSU}*E4xR@LqMh>^5~kXU!s1>sdxkNLhs< z?uMzb)KmFWU4<^+L;av*N$is)by0rk#?u1WNN9>NATBNo#?| znDdMjUV>u(1n=RN#;EiYgHyW8u%&jFQL_lW@87^w_q|#z^4x|b5D*HAa9e9GFi1q3 zKS6mpfl9E-wZxK7AhxIyjEmzuqY;!^P&k)aIKAb3p|hq=5x*>-=?*l`#3pH!ePxXs zhZhN*jf)Z2ia~@cOh+k`Rl&H9ltALzMS5cCB)Zd#~tvZGavpPD*AZ_ChE3pvLgrqIu#=85& zH9G5RT3)#f@+qGg6}LiOc4ZwH7Y-j*q?bt6HC{=8j{XXRe@(bnkl@u{cI|38bu$ zczQhc5((W{04^FQ${_UjzrQF6?0@&Y_y6$64?aB5^U=o#Kl${~Uleo4ftmREpTE(C zfUofT58;iK!TZ|qLkkKmmujw?V?B(_I(3!7ltb7>z}(E$wYX7Z3u>UVyST-<+E^TG z)E2Zx)vnl~8X0;`osaQgp}}eoHEN+1HDlL$V6D~2b>V2%pVqUj&Fl~BSw{tXG1P=f zd^kAvCXZa(Si?d!+U*P1Y1rq*c|d7>8~(3k?`+ZT)$h`999$09v`ZcN*;**9wXbg0 zJeV*36n7NqGw!OCW~^UzC3|zdKIP-PDm^&%dK!D>63n3_ltm6IH@Nh6SP+uw8;yK2F%;(SNC}&^}(@hLC)0XJ8(v-OY_F=`CyzY|hnGZCHVRGPa>M zO*n_2ChrpdNpnP9O?@4dRxeK+gKlW`S;TlL0b>)6NBKlZLu4x=V8<;?F|yaF}RfSTA; zC9!wBtZSyO&eWwbGgnEm9I0 zPXC;FrpIDa*y7jRV=vBRjv7E~wm{9J^_pNYcrm*X@HY=IuMq?zoE^=v18 zZa~ofm2GY+sthlu)~mw)Q>xK=*HvPDM0jf=Y7lK`CVLY%Ib)o@OZz5!`QW?~u}eMN zz!Zp5?OM{Ju{z8-)Gmy)?>wdp6YkO1>pw%LJ&);fs+!@b2LH@7sf+Qw??V&+tBJL^zS6Dn2hc5V1N zcIrLB)6j%_gvw9XvD0SC9fJ1Jy6vmf&&?Fxb?i_)#i4cV^B6RZSYUWNxq0MV+gLeW%^&U**ctr)cA~e0)_92G>H+hekPk%p;*Gsy3oTXLpXr z>6C3k6WGS3nbaiFFxe$ScDw;l@0F?dzC9B^%FSLmZKlxWXI&+%Gl#v#8{#2R>5jdR z&AGd&Y*A^o!J4oU8`kb!K<%Ls?V*NiGbk|mgI0E-p&o9G*L<~A^HFxAfjX^5okEu# zZZzu@GyOG2(czYA)Js(DK)p0ly|}t)9qApkKZU)&9*61K9vrNxhE7A9SDITINvHiM zwfP`ckd(KO@M`up8tv(9kJ8l0u%rMXa)b5buyu{e5SA)Z{2t+!J3eU>k5SVYyH9t`MRaYXg>OO z4(nX64_}9s22x@(@c}&RSg(8SfQ=hH!m4oCgB?vva8=2Iliw8NcYdLvITP6#6JmD; zXR?h*~0G^y}Y77!?<$dcABn-)`AAk#7l`uoCEaPoprn1`% z`B<%7XVrXmcX#&_EDPV+To@g>pU;c;pCi{K3&|lBz6eZ zwgRG8V=+`*Yc%T?qc(>6Xyx^>(N?!Ih6cW4b|d zFAS0bg5a~Ocmt$rM8nEw-DhHZ8Pj?NyTq&&DVxk@=30SiX9G2}TLT_NSY?chtzar7 zpmeP~T+N!fp1}&0!oF=_g1#IU{C=oY33d1wjCn}H^MEMebE214#tv6wHjC1@VzCvN z&_b>96}f#-=*oPIcH(;;uM$|#-mi%`J#3`=ozBKU=q6ecyu* z6{gUG(z=47zf!5|z&ZLW9x(%X3!**1d(wHzAI(Om;YJ>_)!}I~RzlXG=v%EOMT>vv zW3BZld^PW5E-VPBja=tS(4e0;W8KIVYvJWrQT}?X{0a_cqVTj}azJ5WgQ2YTw2YC} zfwHzxSzWLz_@e82w!4Ab3NzV@&9T;c>R;bmtFAoULjCLZv({1P5?^pa?)!3d(;iqmvu(D+ zUYNah=BnAZeYQ4kFFcTBFFZi@!WR#I@xVH}8uA_0@P9Py9(bV$xWRC42B2pXPyThcn}7|gR$8C(Y)7aVdWnA_kEfOcKr@>)GsvxX4h!! zX1hjn)`}l7w2E2-&8CH+i|S%lXS@<|bo^{G5zaSFgfta~=0GWSk*V;I(Dp<2s=x;X zMS``^X<7^OENkIc8v5?i`H;5(Xoz*HCpalc|3pt;&0O@mQn8epL(R*xn5E)TvCiVB;l$4L9wY;G3Z93T5_ zv*5Oy*%#a_xIZ2hHwzwo@WK0+#A5Yzt*zC=&L@3&2>NnGVyN1;UAOImwQ22w&m4Ba z0~zdsFV?9L7W56-1xsS}4Elz2&Cj80(i;V9*RH)eqfvmX7Vd|xp*~uz37*bGC&hUG z^UQ|9E4ZE^){WJ!yK&+jE4-@>*HWxd)ZZJTia-2|P>ZV#lN>oJ-(YxRhpBcIvvy&V zLNV^dOy--$Dt#%8+Ahy`NcM*@hR28em9f}TXy*E1XL(%L2B5uKvesb35gR(|+4IrJ(TgsO3j4{{ z?q_hviaoI3Xb7>MVS%N0w%xA9Zm(>;y>gv~Ed+@4ZVV?k86(k~u~aN~;HzvZMZ0ET zM)Zont}$?UbF-keo71_~hFrj;rJnho`zz;pDl6`+WOr0@3r%|K`#A1T1u2p6(Lt2G zjFzQHZ?PO4`AQ7Y<@y7_hv^3u_Z?}i62M@B(f9#A8khp3cD{hq9Vo@42RvU%$m}_Z8UPxpysfV>nOY!rGp7tN0(Y4bS#{Venauo74h5av7 zquHK|u(QFX{5?kjtlbSdVrtIG(YUtjG$#+TmptD?n`vct1*sUVtxKEdqa0ZhZGp7S zV0+i=to#fNw`Z(hrC|GDlOFr>t^iHXL+q8*8pEz%Vz=bwaSW4knx-Rb%AotDJ?LUT z8zSh$u1Z_f+*NrQBkUIEWc}&H0NZQu-I0jHSisvv?3{qWDpmv-mhe06eHmDNuh>)e zjWgTMa16m`Y@E63jHmy1V|)niP8x!{X$byu$CusfJY}ejvWmQK;%wMKRL3&2I-Ny z*IrqH4a0-&mCNAC+OIU(+BDkT*Z3S&UQ60e(mc`+{)6G>iKOoKpKU!Xf0c;yb1;g6 z8Vf3}Wk#XJ zxQWeU602Z6F`TtKC%X(4;OWuD8?&^O%`Am&&p4#x=Ns|m5|h3ytWxx0J@a~6msTwO z)q-|SYOln<*yFCuf~HB@{ld?B?d*5NpR}GPQr21k4fr1H`Nll$0oTaNo_6|Q+Fl83 zqXXr=SvU8~cCj<~=>J4~h_^@or=MV7^3i{DJjxpVhYLG44-51Rs~qX}++Jxb(q7wa zI}#QECUj|52L9J!0d!}u0KQ!3fszYBI|N8O6q!oSE%n-`+mXQ_*tl`y6B!Kx%n~=> zx4>4Ap1b+j)vl%N_Wi5yT&5+1sPZ$K%bkr&GGfpm3d7K#dC*2&Xd^u_`Rwd6hBks$ z!qn`}1)3n>V9mD-RQj*xFa1>|>OAIZm0Hysd)RU&2J4qIO_1K9Lm&U5NjR}D_QTeTY?22jPwwMPM<&u`No}9CLP*Y1$Qyx$I z*-h)(*0VO_AnIn>veu<{uJz1A-BeVxX04^=X;_K}c}?{Ecs`5G!{Azh!Ie(Xx_;rg z$>q&iV#nULM4}Vwr1gy9SY-{0th~daTo+IVsW_?6-GF*_AyxLYu7pSYt7dA+6Q~ zwx7<^G2kq#Sjx(-U+9s36p(&YDaU$x6zSa*TVys&k*%}XO9dzf1~3+DKPz|Mk1J7# zSbGpO-^TcX)q*p~KI!K6$-#pj6v_3Q1t{mdGL)&T6>W3fd05?nmGVyzIX6zeMCalU z8OqtRbXtC5$pD55mAQ^l2G%AA}o~KSg(FWPg~hRbc)0 z(aL48aB!ut$5V!zUdvc(&o$p9Q(ihy!!|9#f^8Ff$Fsf-|B#V<@3r| zc|}?C0^n?U6RTQ3Wn1si=VB9K?)p_%&?W+leRbD-&u5r5Ok>ZL#mdUcP&#U25=tkb zbW%-^AqnqeTs4gpWK1zqzOs!JoUm950noBQl4Y_tVSV(nOb*y_D|Jj88&Egz*apa+ znQe0&2FTn!Ggr;s`=>o|1LQ-?04dOEOCf8xik}Pk@FKdm@)aDFdn;~Z?6z!-J-eB- zXU|^P7<*%}-EkY^z3Wy@gpKjxd(89UhX-I|9Eio<%gXC`h;6z9x8O&0?7P3+msyde z@aByb3|V7k{~qw*2?|m;$Eagp97KOb-7(Z%40YFox?74id$6!a!AF9)XTDs5ozxS{ zTFWFfs~*py1ue*Xa3=fxB2?*eVRPn6d3PrJ>?}!j9)Lv$Hv6TZCL%s zp(rR+oGk5kbhnoJy*%^5oVJH`EO?_A(6{9K=jK4!bnK3g)b=30cQ^Zr5905|qvBKe z0|ySghYL`lKVWB*fPWnD;Hd$J=Nyard(sZwe{u}nA7&W3zgl-tp1-WTXjLrck>|V0 zQAf<92{&PRE5lfg-_F_nNXV~avA@Au?2j+#|)+(vI zEQ+O`y8}=#*xaFI_N(n>cC5#j#mdpg%ga1X3(>{P(Z$Pqq=o1-@AWt9PK=j(?BUTK zFF&*c5_4@j?)F)HoSeItPpn^wud07_AZcPfPsrgJ%t3K34T>b@_@MX|9~8NCoulGN znlJY^tESaa2=xX&4oQsl^gv8&Ss64bMp7uoXzmS0*}-yFwyd0a?uJf_68mU(1aU6$caUZ~j5b!@9>|Gh zwLw|XXb^S%5GUk@bGxKR5=)-Jk(P`f^w6o53Aom!4YOfE*4f|g-)EnH@xS=}A>6+q z;tMy`m6e^7>mHWp$sayqCkOXr}=g zVX_O54afxy19$+#0V4sU0fm4uF5N%Y1U7cMj*WA03XlORAggz|ya@9m&Wki&r1i2p zGUh9B$Yn73obnu8zF-3+m6LG2S@i5xxhr#52~YQr7658-T(;LL}eUApdH8vG**v$bCXULvFY{H+*MqvtE%~jrb$A$erXPcR}Dxim6M2Fsp zGI~Xtr-tzqIvV|pox(0g`%3Yl%TAFI4sAA5z7&3*JWIX|e!e_gu7^KDK3$F=-zdg8 zN%lil390PCsU}zCtKg3N{kRPiNfxO*+3$nrt;E4&5^s|&-r#fI$k&5?x(&XewKiS%k<4@-_@P>7@bfI6xTSZDDBLxl)4K)wSh^oJR4Yj5wV*QuC*lBMGNBGfq35?K^4M&$e%;;e7gz0nSP3aoThT z>vKL!jsec8nQ@k+w734=sZ7KtE6t2^u;o4;I7u514HW8G<5}qjJ#dmMBZw?;lB&Cf zz)1yqaLNRoA?>jQkugrsP4p)9rYD2Gd@^9NOD~yXf)~$Tgn2XY7D0F>5LtxNix9n& zhJxNajFo6v0$NrEevUjmf%`dZEM{S3VRgP{?!uyCb*P&GfLzzCvpl4Y193Za%!RNx93eq#dqq9rEz>OXrhyLphHGtG66zTyn zIAiK1C+iIb4OPIE16*+!5H74rG;jbe7W8vmV;U9$7uFdPFd$qbfQv(+9{k4COD5?J z;~LHdCahK@U_h9#KGMLUP@f7+ue>wB%p+B%07A=^&hm;vAv-RVI^amAxGeg12j2CvrM`m6&K-1;JyR2O0S3A zeo5&y+`W=qlLOmNq)y~CIk`j65?p#Q^XR3;$U`t5Fb+_Z3P^*ssCYOeQ;OL~=_mkd zv=lRtQfQ=7w7gQZuTr#)Qndp3v!J1i8Jmb+GXeBZw0Hn6hV?CmI&^|abqdK8JHs)< zVOSSqXoU>39ESBWhIKQ1OKz^MN$>@tHL$X%tQ6~aRmkOIrDGs3yQ~8)6Va*DgX|uQ z=3)Jpxe0v?ZXk(ba9Rv$6ocDhNTe7X7egw=*8I%Jxh>Sya_})lorU%~Nj(kjNh;=w zzG8JA+!Ix-fcT2k5ZpqBRV3Dr>prVM&x(%>f9HfGcD!ZM!0V{Dn~sx;lvT_^-9H1f zt5W|=tny6pSHPX*KOOE#{<(0A{TO}xC;I2ZE%IX}(O>9CtLV#3Z4X09v1%MqH{Ape z(2hwha40Dzs5nbqpf{kmCE&PF93H^v($LEdEP`%N3$$7oSk&9~9D_P<7#%nd-1Tw; z=YhMl!1+3_w|h*u8xuGO-1Tw;=YYGk!1+3-w|k`ARZZ}pg*DZ}Ouip_wBf|S!jh{M z?t@#r*=}GV_)H5ySgnDDz1<__Gjs1Qxq7tTFtLGnN^xiD!OOtkg5YJ~CCMFnE+D0o z8?e)n>VgMYA%Rd3mRYiUOn8{mKz%XA1rHa3hxtL+g~{$Q;bB?>Y|e%h7d(W)LuC+F zX|j7Pcwo~TKqr%{@>um0N~502-PzndgS%&v%PM=jN6Kl*M6-`&@~Mx3SJX}>7aSuN z9Fu!0cW3kTKJ|;jrPyL(+C<_k7rFBsvgrh{{p32?XJSCL~vp-%U z?xO_od5OrU5|RJsDG@XYN|e?`i4cwwk$Wn4XY-U)BFvccsE*(>A4&k9mxz2S5&3_H z65Xz5odw&N;9LMk>#Azg=kEyjg#ZD-Jir{lX@FS(vewH0(*RQeSiSQ3022Y2JFz|i zGrbhLM4Lb+K8_b%qGiExqidHt#Xm-JZewSnjAtGOke>`ycuxgq8ecg(6S|^|yH-6j z)U^{-ysL;)(H5$hS`I51v({uNv?wp`)oKV+l>?&_n_52a@A)j*q?gOFtxdHY>&Q5r z(;(aR_gmc$P2dDo_G4b2C$MaPU>fFWi0u=ad2XioC;I357s$Zf`zaBtG2rDXzhUC_ z1AiK*VtzknK~qfZ;K{;XLixw~C;LzHpCjretRZV4Z&MSr%KdYz$U5%F&rDxUqR58% z3;f^kpXy)4E*6L%xBcF5QR@4Y-dxOPfymk5Ce^pN8z>iQoT|#Hvf=(RR?DuCh@*UZ z_Fe9fw_SEnW#8qew94=nWuA(~f zH5TZa%vZM3tQQqyeY6;DvKXtF#aOp0#(HG2kb`q+#cZDLyUL~KG(Z!%05t_wblO9`mR!uisqC-S>?}}a{bm(+5`NVpFXS1OGTG1Eq#N z4JjQBsPY6(uK`@80@0>0|F{N=yN0VyO?$FX&VfaPb|9l}WvmR#SRt0NQY>S|Se5x1 zO2|isJmm3!;>lR=q}uSENF~8~Cq2{ZaACz?1pa!)PlBc`fmfyzpk7ffhRYzmv?VDS zU`a}Z%#>1Pm6sx`Lj6{m&4<*IV6UE)^iJ^}Zqt@BAJ&`UV(l3&Y#7_J#oJUKHkrFV z#8~z%V#e~Y6SzAXF{oRg2Y~waWdoqAd=h|7PvWG6bK#^6t(So^Vlq%h%%CZo@^Df< zUS&2Z?@c3zYNdNNCAE zfFZ6oVDvr?blfK&A36+l{yUppfs$HK9D&txIiMb}7=V^q{A~bQb1_y6i_yx9F9KlI zt{5jFifaK_Ju9vOd<$>^;F|!<)r%Ja&IgeEP${|9YBIGJUz9Qr-Lf#B= zw?RWX6F?We$OfWWWzil=x>Xi!4Lq6vx{aV~fn8Sehmvl*ypWH^0rgv0-$b@n!W9cO ztQLqTaCZ!MVcUqc%3B*YNtRsmfknxlR)T7)s zXs9O>I1e~AR8?3{XNR~89^WT-J|58%HpFQea;3A?ZpJn15O%%dfWvM*tZ4` z1t;nmcs+6vN$+e>Qxp8 z_0Z)uXwX9@fcmid>p zih8{4SVhn{KzF#<$WNq92Ip4pNQx$BKnPp{v)CviD*+Ibb~ktH3CjdAa1fiyK3Ov zh@2Z?Xt}8ZNA9^tAe&>tjV+sK4lB#TPCYAQDQ@ci2g6uKki&hP6=VJ^njwq*ADA1oijD0(~A!?Boj9#S4YN;lUpa3&N2-RN0}%MHr(VakqfIq=o?NLjGPj9 z?0QVaKd|uBTsSenSQ&Q8Q`|{<5VlbQl56c4awBnWQe1EYt1SV?o*R-AWTRG*Y*Jis zGZx&$;ka>=&1I9~f}0b-O&pFFH_T1k^mbJ@X5AjZ2*7BxcyN}0fpKT+BWF9a!^{@! zbj?&|jrHco4EgKj$|;F~KOZld4V)uq$|UZRwC19I$FhO787H+8J`$2!pjUxf0**B` z=V-vnlBqd4%=GLmYo;`2xU-CZTT~fl;jl}R-1C#HAEy*EJ!jTFPPr#bIV*{#$;I)Z zoLpL)vXj%HeRh`nF81ac+OcQKVe@-{oMa#S;W>wR%&~i7aT*NN>2?pC4#+Lg&(5pD zua(p3kfC*DZD?4X5yB1XXDsv=spVKI>nE-t$50#3>hMBE!j3C z`3<~8gLRL+Y*mX(vt5vzsZQ+h!S zuE+w|O~p6c5z@<<=wvR5v$V&fR7B5NTDw(ZrHuu!(~OeT7vO|bUmW)pOJ$&VyJpP( zk%}!H2D2q6_(|r|`TfAfNG z;YUmBF1+aCOD_HPWsB=Ck6h8v2&?96`X>#^-`BM8VEdtmo_PF;#~*9&+R?SczQT_} zfBWlSKl1DLj_z%CU^|6A^2lSqc`P164;1?Fqrb+jfLrL#ilfkno_ONX$J(EJ=6CV* zX6SDodboYpb6b-`AOH2EkHkahfv5fL!w)~&i-(6Ed-#cm(u9IuZw!w<@_3q?34im* zqp7zTz9Ta>8TVOXc5n>AJql;Gj{<+mfbt$4je+rZd}su)QkQ_b6xmJI>md&l=IMca zq>V$Gv{>=0=YX_%NE?SVX$z2+1JYvEFac@O79uSNq|HIvIMnG8@RxwedOcPgO+Z@g zbR+<2K`#MFI|gYvAgzkDaX?z&NdVFoAuR`_m60|Mcj)z44K@LBBI4qJIGj8%0dcS& z6M(oA5y#A*Sm4Slo04KHPh zRZ4nC_y9_XwSXg{WXrREN*BsmDLTYFZ;SqncH#uz3AkYZ-^1aC0i4~$4Ffp6i4(Ut zzv(N4o9)A?a-ZtMX>gz9gVpTIMgAn9+BP||{fxBG&U|RUbe7jgvKkIR|0J9~^b;Rn zwE-^M&mAc4#b%zPN?)fpKsE_ThZAYgKN6534R)>?;*c)QblgOVewYFc*ex}oIb(T9 z#sTP%fq{vK-(QqcM;s5~io*oQGlfs?Rj+pa#(jmMbuhTtTTFvLIc%~+N0Pprkn)at zPm5!vLti>|XZq*#IPP%hQRL%#)hu5r^daRj{k{Cz9)C?AU+D>`L)2$)nCHlA<7iEj zj`EsmlX3T*Hkr4+((JqYCxevc0#T)*pp0R`n8x%lNaI zb~-;9&hKr({+#KTj6)0ZRB^ZOXEqM43_Tj8pC3b$f=Mwq5>I-{!_H zD@LNEUU8ewFq*S*g_a!pkFP@h1SIkYyy)fL2Q7SrGZk<$2;+00n9_J0Ks_RWuN(s7 zr(?FCm@`+g<}_GrtiT2efpPs%#P|>>>H;2HM_SKZ=l#}!AMq$zU=)Sf?b`X=iaVBZ zUcFbTY<@ENkSv$@(dGyKq?&WQkDk|yH#)Cw*8uPL7T?L?Hg67GsWj5yw(<7uqgE|k zd8s(xQ`fV zju>!rHOdh2OxAJpx-aQV2Y-2?(kz-+nJ~yk~k2o&Y?U!$rmb5BRd7%JE#{c(&uo zcZOGu1|IMl89P}IVopp@W%>4dNk8vqddwYRYe!B59<&P^svOT0R${%|ex`Im&jLMy z*@L`_pgsPPHl9cz8P!6GEBldL8kE3 zc>6uoH}g->vr;rI(M(M{wC@voY4_eV3sZQQY`s@lzKvr-O1fj8k6H33nXqtz9)+{8 z$tMd};F;u@;M0t!G-kf!_sLecnU6X01usCWiUUTG_%nr1w%*Ztc{u7*VAEh*PlHZc zgcNZ=&iJz(Zl^(ijK|p=1M|5^cP`R!ANiAfiX*VY?RV4&BMxjAQb3C&c#Ip3YngxmR!n(CV`+@psa+)d&uO}LpVIqi{z^~=+I&J%Z&cyfdXdp&1L=?r&1 zJ2CXjk;XaVZW0bhc(B)Vrj*Wb=d%+-zZ~JT6Y7n-NjTDko2io1rVDf8p=W2B1V5#@ zY?^}D(p=)ebSbs@6vTav$jRN*xYFDp?wg{Nrk}`VhuD7a7!zY6oSu^3?7RuT0BM|k zGQm$GCsN}sEO3n5ChamLV$D#~9ayN1FOk}&TAJ(O6q4!n$72vTc7eN@CU@o=Xz)-c z4QIN{se9+>jmw#asG9Fi{G~YC)wg7WGdS0{bqu_77j$@70=pURbe(A^T_UX=W2R1o zC#N#QowQ9(^SEA4v|G_?zoMVG6tP}UHP6cEjZRtHZgN=iTe@_13fni+4E(LH^fngq zN9#Y3?JuZv1pYnI$vFK@Py+Y{zz@K8LF!CE1>khRT!03c52ykx1Yj&vF$Ss^Ot(g2 zd!)8TYv3eG8ap0T>@pp@l02QZlqI~BJFGZZ0t0%VjFTDn^_j=M?O&cUUH76^yi)*} z^?HHddlCSauop88FJ>=Z%!Is{Re3Q(^Nt2!2I~AQ&G1F>Jjv;tyw#=TY3A=v zUeZ0=_!530&sPe~oD56iJfz}Df~VcjRboQ2%y?xj#z+jgjVSJ+-XFOPo@fYH{DVRI+wRnXBsF97=9 zhxKG1biEI&{F#2i%)BALPCtacMJww$_Nw%##d?l#lODv_kbwO@D;Cn1p<6{#2x!idh2#^ymAKmdcah&)zpq#!G1k zFPjX0fwwn!I4#0w^J%sb;2VMQa)gP`E;psI`BaHd?D?ewpH&VgpLY4pbB>w#1b&Ve z`~r8wRPYC%@R3Z?@(GJ5ke7@v9iMd1ZV7e+2z(ab>G(9u@8P}FEi6i@cUzt|pYSu_ zP36}tzl|5?26Di6PJeuRtbNsl9H@Ob<(kYd@N&y48E>K;B>2u$Z>fCu!q06o6Mye^ z0e-<>Z}9MT?c_V&9%RTt&dhIreIY%+XusUvOUBF4Z-Z#V{e!1>|H8~OK=(abec99l zX1^i%Qkxs7pU?-*mM#Ndz&m(=T#?V#Pd0C682Sv4qxiu-+kBaMZG1=WPuKJ19KIKK z7`r#XI;{e~k__JhKm1g%7^LYOn8k}aiUI#6|(^=n8y$3lw*Su7!x=N zzpkW!7pzkR3Ih{yGfx)Y=&a)C0Pfjt$i*A1)xgNWiFnJy8=Y4i9vF-DVXRBgNq6#9 z%g^-AhGUd+q@(mIt#jD<@NDKa)1~5J!!b`q+SKq&?>sH6*P)=9TDD9ytBAiLqG{7e z^;3DV%Sp8DIP&|GtuwtXTW5Y-*3NXq3%%Pk2O`@ltKRK$*feaKso|O4ZJJJg2p5$z z&eH(fkj;Zl%l1>l3Gbh)J_jOOyHBO^Z_Cy$kL{o)#e?-Pq#6gR!zWu{#=4E0yaMN z9Vei`aWXvU$WM8opJ}8`0sFKw&9-T#O|w6m`S_CPQ~o1`KOfzCnNjPtK!#7+NG(L^ z3SlMTnSKXC#^@-m+sYL*+S*a&sSCXl?4Kzo=Xi&bqFXDZjBK=`dTp)wUQyEW`7x(iPlh-tUp?RFIV5~ky=N8GW=_K-<7-I>V|JLiE8rGv zzfjM~V%MVIA0>E;yl1m(72SJ+_bl?+2`tI?7I>?8{3vgb$7iGm{gW|nV0?PVdC%pv z2Fa6mgg20xw?dpQufjc3rHpQyqOXhw2W&h$U!mNVPh8SFNsjxF9FK?OoIXj8$3t@5 z2bVm41WWcEyqO%bYYTwC1mWyjSRJ5?Cx=TMz)}HyxS)<$(6(Koi*Qhd3z`TAMW>rA zD_cJ7+PWkvsT61Rg$)!ESP3I>KUj&|63*oJS94U(R0*?dW#WVL$Db^|aAOQ_t@ws$ zd<61Mb!&0oLO{cu94?hC)u*!IMjws?--#4Qs(~ZLZGw&noXK;i_@&H@83o=3(>5dC z$OTlwOn!e7N{tV=19MCXWqu+a&9=AzYuI#SP^#NR_t63mv`1QhG}Qoa%}0YFmG?~V z5nlv1dqGAS{7m`MhX-;3rw8!+*XjL6Ju)d$i<(byF9UsO@2tS=z?I0G*1t}Vltl2G zzNv04@&;xFnvhS;dq)PpKYVN!15c<)?g!*lpGLG+{5~kV7%ili zD^Ha#o~6q(W!#2GIc+x}T6p3e@V~RuNBR`6O6Od4p@5~ z=5yk!%L9&GH#}pmWdfct=Q07$m}{AUXX`7%;8;9kreXq~aW2&aJY&vb0-kYx(gZxa z@yy{SJ&5_{zyNc}_*ZbqHxu~=1jq;L$^_(_f#(4M@<~X`VS>)!CxGVt0DQg4fNNj? zd}vuFEXtU_#KPCxU*Momyc`J+59$rTKQKUA$kz#ZLIb`r=s+@zc^J)Q!k>LS{8&&o>(?y1NnPc1{m^he{^X=>ral&OH))qJDm&fy z83b+e&37jc$4>fY9S6Cro$j%&d$UakdD}wC;d2Qj`DW~~X#HkS4)Pvlx_JWm3dTbJ zuoBCscmFVIk!G5q>i?$x3UWQt+x6!VMW^db)4%SUmv%hut^b2ue;$q7m;UdI3v;{* za?L$dZu&7WJs0LU9pvNXv2auE0Nf}u#I{qy#;`~GdHVIaY`p(mYP;k!_`b1ztQ`4H z;O=O0y(76h+<&g`8mt0(;A6&GoCm)V{xJW!-Yej{{ng&fX@2kjmUl7ttBWr)-;2Mk z;47+P%*MoFjNCkOWe<0Ui}XBF{5EzjMvIuMsVB&b;f|FrCqCpWVDF7o8?jb2QpN4h zc)o_xa6523xg~IMn!w`U_J^Px)yJkBC_&nCU`@*^#}L=YaW2Q#tv)iftH0MrKmGhT zx2vyPePn7^U$_48cYOu>{z%5bW7Iz~wX3gN|H#y?{>u8txv;kS1&_5K?61RqQVzac zxfE+|9H#3HSXWJk$pgShRDm_Vy9}I*frkUu;5kQ&tleg;r>lsMAfAIGKE4Z$_(sHY z!0vMc@-$#K(8d$rp+>qZk&Xk>0bd|eq0@Kk{I*>?eSCEt>90Y04uv{Hde$qwDM1-| zs2m}sJXoVP)%29M zNGGJZ{c>`zu+-B(GS1h^Sa+9;vDRD++;N!RD{sczHAf+z1xJT}sQEn_e1{>6m<70D zF22|BAj0q--)|_yeh|uEk_jg0UYs%WBHoJ=EMDw=c)ftQoRN<|S2*@9h7f0bPh$vi z#`imh5T|o5gv+wav7dpq$-_`5N&bD-&eZ}dJk$FGoz8~RJr|kl3H88n55~85@FrNh zW~um7-}}eyE-BQvOIPCD9lpGcL)U8JEiyo0CHLtvl?82$z@5Rj|?gUJge~fp!)cATW}1JnjBo{mqASrGvkp zqIJmdWKo}Sz>)ET?~%}N6EIzmh>tt^GWF}$Bks>xs2{46OupHV%>GaHnA&bq>(iOO zFT75AUQ569)lQsr?es&5-&qbDKhbpZnM%)&x6}8(iB_%glQ_$l6rClftNKe&EW zxF*rQsI5)MT@5){)y0o3!BUh(?#kR%xtqn^9PYZwEoE{Zt;)*z*4qgFHp+S{;BR~_ z6e)}N+c+x@tBJ^0Y`uB;o6mZi#NSG+x2g12>Xu8%FJXA{v+HH^sVx3GP~I8c{k!{Se+3cY7^Q&QXc@_>ijcn3i1`F6 zcxUlY9>c>@Qzr75PYzmhY+9HB;u``d080VrA=G>VJ?q_0Wrn1tOXRSh=me@&Hu_~F zE_cww48sY)Gm0budI|w@$ksE@9l$T8Po$@|g5ZtkyFqQ5xVI z0esez17E;_FCS?gkP#o!0AD`vSx*jpK?lA(;B!Dmd`JU)dBA5qIq+3E@S%^GXU0uG zBR=X&EZ_z{>&b!dEC;^$xpUydb4GkTE|3F!){_I@*$#YJz~g|7_#9~hS&nv!yOHDV zCVuuEIPshjS5i6$uJawZ(83bu=lj5wl+J;x+JQ?1t~gA#TCk(7#p5WQ1IGmp9MmQq zVD<#?#d`$#)GHh~9ccrW4q=Fo)DTXLR@XN>(pPX!(^nc97S*=`Fn}rd= zC$m}_Tgas}L+j=YF;0v<;G6h8wtNqz6x_9L+B^K(@lA3jzWsHkyiK26oM!k7cRAk| zPUY>y&wX;i_g}cn`MwBy>#`qiDf{!g{)=!sMK6FJ%k@LMfKRx7tneN`;IuE{wBh7G2=K#I57f_;DV#H zt{-F7u>;Nn&Z~e2xZokJ>&L#!u>;NnzG(mtaQzscj~{T_bW%t5!}VVd+Q$tzZG6Q6 z+Hj%C{_L(F_EB%(eBvAv_=M}f0%?vLaN78y2DIV&VZ$9i;Iwga3$)?-v3GdGA^jdeU|$>l9{#9creav;+f5&ETu_=4K}UWt^((SA|NsN7&joD@A_WMyzz!qd4kO9c8=e*;MrUBO+yZ_55bns*X#(0=Og&X#ztaw&y(5@|XL|3?x6@Nvjz^(i`DTin zyN+i&-tz5yHh!k$AP0>J%x8`XIq>oO@d%|f#J8Q+&U>^pZG4%0n@(Rcvt>uVojx5t zC;xW5w`8$(DrjE(1c?)0ynL3-?00X;0`wI7L{B0w#oM?u`Kfsax0~yvyO(%ay?hAU z=fLkvGGqk)!VyUs{{F(*9y0bG7|7o(4-{`Z z@ae&~i~m1+@8RFpm8A*x?o4maIWIQnoO77@gLeOe&0%)2Im~9Z$=a$Gr78lX7|LDU z1A?Fk8w6+olt_8iSlXg(b<2`lqFr6H@%z4WZhG&5q%66rx__f`Ne}nkd+y2i+;hYG z;^M{A=g(ez-oDdD+4GA}E}y?{w`W%uS6{zgOfNrQ`N_)Kpwr*z?zGilad2^U5ev82 z=+l=kUSD0jxVl8cvoD{$z}tkiIKf8K{>Zo_| z`>40Mald`;P4J+y&hC9cz0IFU#H-7Tr>$2nzrK3*;*x~S2WRue;qYvwH|wvw_h|TF zFn{mv#zwn69rO;4C#SOk`o7a%nGH@>R@XN1Vr6vD8?7X=+bjDgqm_rf2R%?S{H*oK zv#Zw5Pd4rv*Te*Jr}g6HRqL~_pFanL-uPf;^?Muo(;)-S7J=T@Q!uS{@y*3EF!=dp z>$d=Y@X<=|VQ)C}}hj(ChAIb-Sv|epc7|D4)$kk7~u&E7QP~mFav2x{l9Q zzSrrrBeKS-Oc~y9iT_0S>E&|}dKLv8xze#e?Uj?GUMe(Zfmmy2?E2=i1yy-*`T51w zvu`e)RcDKn$!s_uJ{$nV2p|%clPRe=JQSUH?j0Nq7iUn#*reJ*l3D|;hwZl2Ug?ke zKg9{}%3v~u+Jrh##Mv|m zQtwP50?#^Lu@IfJ#1-&uS$!V)b~{#|x7(@7jjTRTtR4-=kS0}7PqIPrp9=BpY3rv@ zgl{fiz54n^W(=P`zxeX2*KP;&HfE`3iwCgn`Cz)3AN9rtYSmt|1Iequ!?CqM{@49p3E?-vRZ}RIPF}lU}$_L40El*1W_?`_=aY<1T=on3=y4f{tX z$gI-+joVb(y+x(%?ORmZ*}6rg-P<6(*NC_T7c}s|s9P;txz}@_8FdFo! zK`bEqt-Td@&Ay5{Stp~1qf!*s#|V}(TEJh1G5zoma0VF6XZ!t?)%P~u!z-E&{-R^M zvqjB@J}2pQLEk2dh0v>KFRn(H-&{T)fBoerm#=E|AZ59J>vkOq^@bgvRC+K&8qMY_ z6AW84sI`rQjRTL>B)+t^rUwO%DBF^)m!(5cV)H+ zYs0IJ4g$Ol8aHVOrK!Psx4B6dP1@@6NslDoyZ76UOD3THQ7Ipq%2zMJ&e!y*3=Usk zf%ebaPZ*yHgJ08Nboac~f_tje{q)u4C5F_TyK<131PN!Z6MXVDzve_2=C;RIVfOBU! z2A9)cCnF$4&%Uxhg*?asIC;@xF7P(fovaRq)WPVaWAmGnDFT<)$G@d14$He%emI%7 z_|v97=0Sr;8yug^&llmB)osKD<91IEp*%4pG@aJRC&O< z`*v9O2V=yyRjh@U|CM2(l6Qjj=G$T28ciP6u$~Sd9L-zK?01j#;k=jgy44zC-q<>X zH?3*{ETnZXL~%{xfv-7sm|D!gKU-jqFj!>e2q|Zi@#4|ZdF#<2D+lPw`1|t((hZBe zehd0B8O>V1_G`c9{YpbVIz@1=w1o6JAfSJ9sQnQXy@kxga9qI}YDXX?HT#p({&4*L z!@+bsF@3z=s-eHVlR>V(%jyg3lj-DOGFx=%VUbZ0>Ij8DYz=3vN7LcFWC&`{5dsWg zO&Lk2V=r&DhL)%aT~dRM-n@RRr69Z2qWCg6ZjwepR!)YujG~<30rkTS^^*~VIcN>X zv%xe+1za3QHs+v@5fekdMRH!Ai!U!XY7GCp92oX7fDOl|gIr2=X=Gf_@NTvCdtj>2 z$XNm&!PWKV!^yZ{RgPX!{}%Wa^&tXd`{idvIaxj(%%|r+Y+(7;MuED5xYl?A&COW? z91p>EdEQF7Bu^TO^5GcndkX!klpplwy$06YnpCk|NM>mN#&5J9^`_(D_(AJ8e=|el zd~*8z(P%N6!0L1K4hDzAu`*br^Sqq1m6mbfy|#z5-4(=V2qg{<_g6T{F^6yqd~Z;l z!_(2ogN7FH-ycojN&2Vr)?hk?Ae|1@@({wSjE4Ku-t?R{&6lE<51WpeTa7}DR?i!$ zmIW${!9m5h{RaO)euZ7NSPgjeC&$OI{2AW=CjVsI%{fQ;`=0==e>$DfDJUqYw?3Lo zhmT=py%EBKZfmQx-P&#aVEo~)w_5k^wOS8h^TWPguD9;#Mb`ED$7pm&X{qx1Pk+zwS47En~2DrKhxU-W%e+UHU!x0B9B7Jf9 zle?eZeae@k$qCg_FS8CejKm+eGV(J3vy)zbfac;E=Vn>c1I*awd}*TPTk933eL5ZE z#s2AVbbz)+vkXF{Hj?XFw_L^_-`giOnk-oWGvJbty&U8P%cZ8lF4hN4~M~MGs@YRFX4~*xS!3^eZg&*JhNW3aS0Y=q7 z4nw#J_7nve9Wb)n?-TrH2Cg+9%<`f8j-vM;1tTz_who6=STgF5O#^)PXbzqkwxiy3 zA=7{x_Md~Z{-}2>fuzDpowxbf!`cH<8KFCj+~dVb4{6U(($}a`6wQan11wmC8YiRE z?3eT)y*xTUIT|3#5GxO+!^uJVeK34DOusn(IN_M{hexC%!sBLoMEWF@VtySSx6>n5 zs6r|772$C&JtCvY1W0&OVWTJa)B6Ez30a*`or(GM>!VX>06a%3p^Htwkkbqekp~Qq z$Qgylj3>xcg;FG7!sCPVh-5@4&6xK=Dn(8=RLC$sPNf;1lT><=9zRNtnKEPqWlD3J z>OM@5kJ2OZ5&<2gBf{h3^w>MWaGrivBypRcOB)}KGEF)hWx8}Y%CzZll<5;3RMrT; zy6v`%Q<}eWG&oz?)StFJZ)|RC0+yBIF+3OLY~WyMG4cG&Ec?2*KpOO+3H&Uo_10!MAz_3DSdc(70ll*1_+KJN@ zer27gjscUCyaCL$_!*esTmvNZ5EUqO%zm57H#b<{AVsHap!g;<5kWy0bNOe_R^LG} zC~}Olp81$SX3tqyhN*!uKYuNpWvZaAB4zZ+4PdfvRXrm70mU%W0Edl3+x&S6 z91c$r%0_C5>H$jDl8;`l$3RpV91Ifpkk?93Q#s*;I)%+|TnmDo25|W^REJ#}YdTI3 zD>x0N5A|}YOsHee2BNE~lxKRKdiLI|4giEYtPkuA#OAF*5I`i#x-<}5v4{A&QZcm!|zkb^|}*Al{JO&|)1 znCEb)%Mh-Y8`eh1AYzfz9DA-17|MwS>Kll|Zw0~$G!PH22LUz9u?x=yFOKSTn#`@- z5MEZturL?Onz4tvA{(Yzxz{%kANcFcgfc8B(f~Twi-M33n~+3p*GS+NpEL7waE8Sw zg2<}o%^IHzp&lC{S!l?|gna&7Bg(L_@lo6i$S1c?}EHj6%KP z*+85ch^(0-d2M+ik%!k-&B00IoLK34kjSGOK;+t)o*kSKa#jP;(3|Sy<%LAfYanhw z-oOD~RISGb!c@gy^Sue!X|{5<3WCp7ixc?JGS*<-PAYX_a< znre%jz!d0sL>Guh&T?KJ5JZDSJvLXXyo5sDWp#pllzIrrpr<-t1g2CFtB)6CuI*n_ z7EjwV*0|%v_Q~K$iHRq@xO1bkjUw%4d1t%tfAN6+t$+L9`FH=lfB!%D5C5b8_)q*N z|7rU_`_KQ2|MI{3um79>_P_h@|K$JhKmJeu^Z)X{{%uFqP5a_DvQ1hM z(t20h!*~E8mT~jce!ssmo-Az5!*+d!XYF{>E~x$qHcPT=*0%jm*b3Fl8n&&GaJwBQ z+G5Y0Yy~>p)Eo;OXPp=*UJ&src1TAi?81g!V^?oQC~*f`Bo)=uMniDY_7x^3lRQz1 zgk@}G>kH*RNr8?#a905;R_|h?8?x2fJ?s06NgH?Hp;%`@y4^b+Vs5A*Gdg}SkodD* zy{pK%lYDzSjZ$_o3l6Ff#^l4r(O}9An{g8*X_F8mMeVj%(>A_UZi3zJuJ7yycoa5e zo!|jPqLB5u3NSz}x(?H6reIe$HgNL9bW(fkv`6###m{ChzkczQTmS@9W^}-p+9RbM zf@zoaS)@B{J)F(4dHR9x{Y(17oqw(tQV{*bU;Psr4Ejh4(jXKf@TkY#`(mCpM?#dD zOs;Jt2B{H&K=LO+2|0*TemJuOLpCbd*%arVbPxxK;Rplz(#}Fj1$DJ`fTxnM&oZ0> zs@B;Cf3Y%peH{>9)PY>hh8-FNL0q|)n|mBG?^7Y7@Gd7u;4I0YN-r?v^iD_MovC)% zkWO>3z36fwoi3eLE{4=~4#w=vbs&k|J9#s?S2`4#4#@UDC@9(3z&d35!^Kh^ISc0k zh@D|2o|H$=R#tK1BFcCZ2jJXqQ}U+Z+aSAOANO1N{#NY+zAsC`c3<&fc7$DA+`0-L zLv=tgj^*z;x-yRPhEnLq^y^;&Xo}<~x!nX0DMYK!s4Fk~R zMQN4E+hn`3Z}Eu3QFPX=3*QCbdih!F(=RSwU3_|V`RX-}z-T-&|8Ou{>1<=hs=Z7L ztiWjd*Pqh%i&%Pi=zFiMIE;G+AsjrK&Cgcs+$0ynb%bXyelSP;z@tp_g>?aEQ@W&V ztT8TN{4h48VN=}Um~76Kqm#Y7*P(Yc)5ifI8z-z5!pv~CG`VDqQ(c4`cCPghn#5y6 z)(S&$A6U+@S$$IRh&f$y57v3zbMz9K>SN>#*zeCcUXla!Cpt@$24pA5W@jaIS)5m2VGLnVlS8>`!{r1IM+9&YmFuF+Gh7+u?dDQC-mZM zQd6k6EXt#K5^{p$rZUzHI8QI)VEeZLu8=&L-N|DA^bniEeRQvez=#^Md7Do$;?&Lj zhiz8HAsYsroI*Z^p71ypj>hPWk9LF`S*9+LB=I35hLr+Fm8x$~y;<4md|?tLW&Mb$ z*dEX}vtq0gNzE$5tr5>acD*ttdKtF1FW}9EWx;f^5yKiT8b&QCV;#*Lbz87rlKLjw}WPYuR!;9H!;*kK+F)idyUi^Lde-c zsRJGhZpn6X#=YZ#xs&2851NVGwLMK_s;$=n(L$R(1`Qk7Y0u<_fiA&8s%BNw0n~ml z7TqKQwy zG^jTe=(z#1k9Gs~(V z3{JJw%)3f}nL%@Dl>mc~l?D{U>ar6M48zHL>>}6%wlrBRS*Eq}W(vxhVHL6&*XFu4 zTuqe<47hYU!sQt9sJx5hx$Zk^J%9GuRcr0w!6CQ|XS@b!&{6UUlJTd0d@?s$)=MqQ zr#8+mOmQog;&MRjjpjoPME-=~*q;zt`4dLeTD{aFe^SLY`dEM3icj76RH8%BIeF#V z*fU}u#{p53KOyG1C0?nXny^0u!zUw;Pe%N5YzU_MHsW9;lbd_7j8RsBVzu>Bh^&}o zZ>JJi#$m6H#PwwfhfG#U&>cz|V>!G*NK@km1%fo}t)_9wxMrj}aa<5V-41Sn6Bs0| z_?vl3{$uSnt>LD%G`RLRFEL~D?)J+2!x!H?d;JV|qm`hxy>ElDZ7_D&j)8;zVXBN^ z_N)$bkp#+Fx04oddt~=R;lK<_?r*fM0I8GSc~NpSKxTUGMeSanXG#1lre*c@clYjw z|A(G*Q1iQaxpj9V{;~PA@lb3BA$qZ1bo6y1#R%pZ;qbKk(9iVG~03Yh&xaz&Ml*4C92EesVzb zUt8)SfFaP>A%Naz%TNaGE6G?gFi#}_VeanWxEJ7HY`Xq zPWe0MRQP3_@?XxW0L3^Jei>1bQTPdD!%O2-0ArjAzl>9{rZ^RTInZWC8Ki^n*52B6H~IUm%KP0afbFuvrY@SvA?$_J3)R9<#WXLH__2shcwZ;N6=oE*49bpJpe&V^9S*qD z!tXK)sndW?SbY^W%dppy`4b`G*W|^$8^Duk0y|NRMEqd-;GF9W2}Py(@{%pfP{3s< zi!ZRj$Gcp*S=w-!TzCtUYY9bJ6HKSn^kuZY3&~Je70JB4VAgjFQ(T7s+sLLSn$6{+ zG4EHC%kG`+d%np_ZM8kad}AgYX<3t9SPpoy{{b%5kni6fN6a|ETgcty1qOye38KK5eX2az;*G9c862Pb zHF9BzROZNAK-YO&=#OBr^v-_2CQX%haIW)$$?(puEu~d4Q!23TKkSVxzGy|;*OgQI z!x>Z&St(tLq+jfRj@!Vv&R~5%#7!G!dw4oyrO;LqRAspgB5IXIMA2n*V1|=ML|$Qo zNd&DrKn{2a^8N%@4ga3vzMT;rs8QgE3(VeTrjL}|Oo622-i zfx0^8=d9&zg}7DDd4kFff(_^!P7OQ}C z{es11M>a`{<@QTMqD?>+;f^zdRNGk9!@!0JiHlr)orb5L;ZB_+>~mWj;9xoX#@?!Q zC8LC*O>L-&n+;~Op=Xt&V$)uX?|ibG587T;0}E>cv37i|Zm0(4VNEm?b`Q&$lqq|4 zuCf>yj;8Elgc??k@d;%sIK#{xPFhJM?xyN&E)(Dae%x2|V1js|kCXO%9rTzr@B-;L z-L-c+2EYNZvvBLOc(j%_&n0$J8Ixq-(2RjyHOGQ|)5f~2eyoNL!^)ew(Lfcu@!2PZ zuNJFooCH&KaTUzqV1aY{M0eFj_QeOM$8aU}5udfVY{32QtY1|Xbn3y0mWfs8n$SmF z#-MJ&62-`l7ro)Mtp^Cm&_ejn*axg4_)san12$U3h&wtddRJIm29*JXsNaOC)8UVbUOOgYrAuc4pOUK1~8B0glnG2S>yFl;@HRWa?UcS%Xu|JWSWu|sCwbKpv z+)-ez#Gi08^6_Lm*~nTjL&Qk@2?Ihb61D3NeG+V?H;h>6A@8F7r@X|43RB7rphD*0JeGrv$d1G zVI94Z*7B*Z-+kYJg$a%rhUrG!p<9WL>?aoNK6!cZ>M1T>fBn_-i%&1VynKNxuWhdb zbAoZVDduJ>{n46oY`lTCYbo07V9gq*cHB_fwp}KRllj!ftvv3EJ1I2zDYsyyces?_ zen7{4mgKr;#lVi!Y+JnM*#{3-mE~?2CKF`87dUew>0PbYgkz3GWmk=Ly%-H=bK(>n zJ40X2K>W3Bu%{pP0+6t-X{>$AU{?tndaug+ti4U6D|2ozT{CWNmEOIB)M!4xPAbqo z!EP7>wltbZtoY8@6v?)2fjS-n{dX$Ilf);TCV&+@IQpPnyrvyvTmysgO5>ux4kEAw z0zoV9@Foniq0;yebgxNC`7WvprCwaso(-cma9aUyui>1L_*=;_FL$TV?WZN7Q6;xs z3C`B%{f5(ug0ua}mZS`O=)mj{unps7`q-|$Bmn>*T+5JP!%v3>`EJ@vfdii zgkyKIZ+59})OqMI??AE&8$wD1IzS-r8;D}ZB&4P`RAd6eeTBWzqK~--w(MDGXz|v^ zr1=R*fWtc&@(ResG??FxlDNKg)0743VsRybvTgSX%{3*eEIov<*hXft1~-BZ2Q$D8 z9SEh=IyZI;815J?VKf|-v5g3lyN*#T5UMC~%Kxa`9eY?cl$i_pn@pf4lzgrvJO;|K9h1xBcH8 z|998_-SdBY{_np3+xLGD{NI89d-z`bs!s1D)9-v0DugA{Rg;|*cmdTD?@IxscQHhC z|IK5+E_=+M=-N(sx1j|l9H!%u<5Bz|)EYnTb!QV_2N^y4{EI7`BKpkYw$m{y;r}w1 zRjap`>b+>IhG@zU4Mtx@C)ao~P%cGh1Jma$_{4=Yq_r7TTBZ?pb%2=k~S9k~|nTSv;I7 zW%z-m3NG=lueLd$u>MqvA0E2Gp#-&S(^$!{<~#Qh`eQtj@0KyT#bC%<<;J9f3K$l@ z1H|%WG~9xOH>RK<02!*}@!-Xs01Z_(YBcffP5UgmtPX$dG7LG)xQTsqIi_Xx@!im@ zjyL8MIV&qi$njmrcD;(Ffd)T!Q+Qnu}+gFZFuf6VI3wx~L zpGH00G->-~wEf(+r~1xNZG*?EM7$QioW`36U|NHjBg%<27l)%BE*@5>!RVCbzHN^` z9!kc+5onrU#1|FHiT?OE`)G zK-NZ<=D)9N5+rDd8U|2lk+6@4WUxkwG620pq#YK4<#yr<^XS=rCy_uN>^thS-opVt zePGZMQw=z#yAE0c?V?i?Gy{p$y|ah~Or8rI9r03JJTD{&sSo}v(6N~Eme4B8`?}09+#{bWIj5 z)DjKiyqSKyfdTPT-Xv)+h`@^+JSB1)V5yBcsI{$KQ|Nlv;g}Nc9Wz1PLHI2}z;4)I zurN1ExH`_W=61UY>M)xX>*Pd5$X$p0qW~FFC?M0-B!G-$n*fFy(k)4lb74PdIp6e7 z*4YW*ahY!#lx6>?gW6-LT4q=W-RjyrFlf)k+QCMAQCwPh9r zq$OL!JW|FFnn0I8jZ-MR>Di89JOn7!q@$AS<`NtPG&{xv-{y7^eS280501%Q563O6 zV*?bW8sOp>ZGR%J$KeTs?r~5Uu}t{5##lQ{tjL~kg@@SGg{rv|1}x=ZL-tR>FOeZ0 zLA@j;;onLpKqDxi^g?L300JA|k{uz)F!>~QKv)GHTaEUSG|POa zMe{)+T^|{*mkJ60gP9GsvalxNdxq}jCW1+2HS9$&!0d&ZZqdsbFa-I)I^H-W+-x^S zU1c?}*ffZ7h*e1b&6Es~IlZw8QOTiwDHyR~oWiQdFR^W^F27%fF6O1J7ev~Szdj@x z=S`733d9%n;oF0U%BTz?z$oXRsAmM9vmW}>JB7ouPZt45##_AW_uTYt(}_{66+0Mq zzlRA2^wj@y6T;q)9;ul-25_AcT_?Pv{Q6+~K14ct4MP-Q{ zfSv=cK(Mr>;b19SuGuENm3w0dn~Vv}s%Y=5$AS0F_{WsrjSN(x1bK^`2PfH))iqlo&o?T?1D^-JxNXx~fxg*tt_l-NE(cU?X*KHFfj>FjXkEb)ikDP}!oH(23q^nY)64F85Q7W)}PuD3s%lj%rqzknZS&bLv*j z(D#KY0+Z)UW_Sz3sWrg5g#0H zML5ha4JK1=p^<8#a#-(yPQ$IobuZi@+Qy7vc<8f58~c?oKG_e{u~*jCtR@diE#ff~;|fWofqR8yqBQ4dKj^w? zv`5}l=Cdu-Od)PL&LaeJhAM~2;1C$WV&IOL?pxc`Zf9s{U`7Z5sup#ho##VguqgQb zC7MwI8H3*pN^PN5%XTROXo8Hvf;7YgQyx>bI5$T~JGL>fm;=-9;#PGr6voL>Hex;iX=NSFVIj6N|AA&}+JA zj#PW_T{L8QH=zW^+=vpZyMHlvHSW%b9LmY90ywxeiRn$NC0gP(BD62+B!2pEzozT( zgnUG@=mM`wsewof=1mTIN&aQ2-Rtqpa3G;_ci(HC38Qn}hQF}yhnmDOcWcb!pt67R zGgeo~j)VDdzPc2+D|Wc@waeNyZOW;P0Gy%v>TT#I5#-U$8gD|CGHMQl`TJ(uzPO1& zhV*6wJ$tcb67KDxk(}`RfVTGA{LW^+7(Y(%@j%p8WjqUXf<-;cI$Ca89viLgg?w^| zC7G8%Hv#oD4H$1*u(-C11xOK!t=bAdIm2sivJ;wMoKzF=NKMe&k|w*>#B$Vdl4C%( z$=lw0+<~D970R^woW^L?k8y!7#xOLvi6i5^LO*iV%e@>oP>_NXY^#^K#We-#vYU8e zMOj|LFFu_3yn|x#FV-&nmc@{{0DLExTQ#i52CpYQB{y#4V1uRF5}=_^%N4f9(TE@z z7FRCJN|zd*Q{WN>GO7>#A_!yN7?3UJeci7ip(>2|-V zo*0#@L;77=9g?`yFv#2|Y-bGgBneZ4U}xkpLJk$#K7}{XVhmTe(_&Z;I&o#}2Cd8%68SytCOc7- z8QO&?i#gjjvI6Nt5rdG(Y#=8qLPV3ZoaOp`=8ng-Hx{3#Vi-W&^Wfah98=QTFiAg& zqV`-~-fyG3Ns)CmvJ?8cbcAXiHZ}MrcG-SeW_xtV11dGfhz52TrQxPax6u42G${Uz zs}hwGG9`Ro0^B**M(B)DaTy`9EjX-H3lCVSGJCmxE)dxA4P6!{4H0I z8o6CzNy+?dvqai+m3s9N{JqoID~50a%;GqrEccPQik(}y3Lomj z!VDt~+4F`$g=ST6>`&bx`^ZK`D4gpprzi-)Hk@C-mG}j|5TK2=1D+|o-OwEy^``wE zHz?%>hOX?&?JzyDIgd{=Ot2wGVnOhT80A6VgaK*t0@D7`pf|N6C5ChstAeKWS zb1~awC4!C7N%f17QZMzc!T=sl<*+PfHz!ac(M}3Ef*w7dsldxKXWBO&XD)VWEGI5` z9Rjl)G38rXSd9XKYK48OcFqxViTE<+&*5ol_$D{HB}tYdVb)YEh{u?UD<%-LxlZmWkwdz@fxU?ZgE#aP z*)0Fe^8Z4TWTo|3hU_wQPe$WohVn`+y9rUT#vnxGyO8 zJFqC8$TW+J24)roPaaG1KEGRo+WtdgP}>!Q+TBM`SsGMK{4!xcx6{9Ej_l9a)0@S4 z;Pi5P%03YD4$O%$p2bJy09E8qvM#?{YufokVof_$YvOi~(wcT}Jv{xH(Mey3{MP9L zaC*5l<=>5Z2j=9X6C7R~i)^^fN2k2c@7A7n|1j9oWU^Z<_=J6@wzQLCJfG?zv!al> z@)zgX;mkpr6y}Oy5j>A_MA?M~d1Gz=4>7P7xz6U9mJBqkzB)0*c#!^}4qAHm05T z8Zvk>3C7hb=CkgsBj1sunifq+4)bJ{DkzQTTGB!e_95H4ldbZ`6!5K5aBq@H$XH1l zq)$2i+4~}s|DCd$i`3=NPTYW2ww?JprePhIS3CTCxCQ|l*TTi`Ht^ zo22F-Ep6H;jzcyXh)lvJ6Spx}i<92mUJJ{RUfRJl><+P2zkml8Iz_$`dvZe6b6nwo z2~yx%(#sB*q_d#uC>%4-P;>s}U9zi8^6{J(xL9MHovIV#VpiVU+Q)F1i{{l!GkmmR zWJlmK*s<$mitSX} zmOEqdzqgOY;c%i!Zrz!Ej|Roihtk|1;G+)2i0l2BX=^BRP206I7h>RWjC(@oK?&2r z9rY55_rf6!@XH&t)dA2vv%!z@4})yt5q(xz&5sI~@Wc_01hJ}_v08F*>)lwGK2yT2 zAa+MuSbR74EQ&dj>16^EK*XLiRTS09)Qr`(yE=FaUaluT;(K=*y3F$NjQs`?X1mSR z#-{6&$S5lhLWZl8_4vh|@|5;YkGwRyp+!itT*ROV+BaI5dK+)B~%+IkJdkjkL5;qwL;XfdDX6D_?rNCjC|*M}Bkr zSmr>|-UadZno|=;lgSKA2EKc%3<6hwUUIR`ZxTveewBExVZ60@H(VF@G1Nnu6`;70sq^xX&r#EiCW* z0221`+_)9qJ<)r*`GTi^cxM$k0LnQIz~~KdkQYZ52ExGsMbqQAJDtY>Vh--Tdt4zF zSTHmVP3#~7$hzPzj#wTxUlo9H7yw(WR^xfG{=T+0=JkX5ra~|kE0^`; zuE&fB9^0KmuqiXAFmlIDYjL|)ApvY`Cz0=kyOuy?JoOf@KCI(Pl6h>Pzssj68nif=#m8kAcNi|kbh#uzTskPtfn|7gQ;gmez1 zX#j0O`;U_|<%>pM)^=xpvN{H^np%%YaG>+mMrC&}uFr&&YtpYD&hx7$XlC zVtz8cKf#em8F@sT`4xYK;ep0&uTU?D%376d{I(Q_t{}zWqN0joq8yMk?MpMpn>mXk ztZZzG95B}}b5I`e+q@~!Nd+Mb#MV&L$4SMukt4;nUta1mKlkG;nJT$LH|(6fMjvw2 zYxahA9{r@aE8D8yWOVt!MC;|ACor1^ZDCL-^Z;LxknG%cM_JXv1l4YtS_*t!FK?%o zM#~b#j4zv1GrpuSY*L=xvJf+|q7E$N9q2ThB3(q*qC8i@2$nm-n{+f*uvvyFjd&1P zj8;)?8Wc>-40R!cShuEP6q!qpGE1GX5G}pXYXaW>t(k6uwUt+lIyCkX# z6ZIiZ+A_VTb`u$^1e=OZI)VXHVvRT7ZymuD$+HNM?&wCm;J0gtMXDkzZ=vNBONDr5 zRgA~Lq*)mwepNY16)NyTLZRG{MExxiVi`S2i7gSn?AHrkRM(oX4%n3sDAzvdS01?#17si_!NMJv$%N>S4nPEzO|9zp(wA5K#}_I$sGTl z$?ontvRIipgb$b4wFKcS+i2(?8&P^O`OJ6&p+I1~EHA<5hmSP#Vf?P1Ih(ZZAPFT7 zc;)^cK1HIr76Qq`(-Cifpls}JVt#=l)!Zp-!VN8{+1c1CtAYV#)hYwa4{u})WV1&- zetdySDR<)M7~@Q66F0;yzbO2=H|@4v&ayx0O%IlO?#anuyf_^4Bq)cH)is9ioZfS0 zg{dts&BM9+>0mxRH-ll}ps~rFbu1i`CR5rIhDV&Ot8orvX{Xmi$WbzaJVPYG%M%`9 zbLI^9Vd~p8RLk%+u!clYw~J3Q(2PR_XXC`Gms{)6VEkZylp}9kZDQH=*qe~$5-|L_ zX;AJ~6h6#O{?X~!N7xLdKtwi9h2!ccNJYFW4B_p=4Y_bc7C$^3j2Qn(H#p}8v!=88 z>BC27=Z`=BKc4*d;{Uw(;L|L z{@?%aSN^O&`;Yw5U;T6b+&}Nn{|o-YzvwUiOa9Wo>@WW-{>s1Vul{TP+Q06v{~P|s zzv*xOTmIJ8-}blv9e?NF^>_b0fA8P-_x}U`;6L;a|0DnCKlYFR6aVBt^-upZ|Li~a z&;JYm;=lAS|11CMzxJ>Hu|NJN@BJIU@=NpQkG#>JKl(2I{OYg%>MsrXzXH|3mk%b0 zE)cC?5s3fC2NSGdGJSwgRxuBP<-|ve$Ajqvrn<(OAoBHKS#PImE!uZPv);KKKz=w0&lg&2U45ps`doZ-w|7`u7i^t!;JpQsE3|4pj5L*Hq{5&4aOua~yl4`EY)E zp!)Yycj)k7a56t){q3TdpWF@&c8WLQGpuaGE{LQkXg|96<}xn@S|nWkfXGZ z&p7wSLw;HcU*I)3;wN48Vs_L!5w?T8%~DN)#vPmjq_o?UDoHG<; z1+#C-S#z7RcJmi*9D0MPur)auo(){s_98Sn30CFxf^CJLZejKlU!1jW?Wbri3xM^J zmDtsU_T2VMqV3mw+UpM%MUllk{(51%1H!NQ0Nc&%hrx6kg$fQC&DyK>cwgTVvtRo? zEYc3gSo*i$c)5kN(&=%ieK0u2&E-%jt66Y6KLaJCsgEBt|JZygc=IP)3TmS-XUTnP{6NyVAYu8k(Y7I z9zQ@$e9y&dA*}uY-y*_gfj?Q<^|I-J=EgY^E^FrG0kFoW{344{w{$p4Y~oWJAN}m; z%a$C+7Y`=*-PLd1W}@Gl*_SV=Qy9kdAxb`@zdOuZoaCv5lOue2hTp_m4dE111SsRo zA!?=1K(Ti0-)_#Qq{PM>rG*QmI~6aFCdV*%1VIVI1z!TosHq}hE2vC2CTIrv?l3%C!i58vK@6z{ zmUC}H){h64q2e3&Wz<_>7xG10%okx@c0NE{;vZQs6!K5GRgn~Nn|Y16jDkda2Fsjc z(l^ieWV+AT(vY#<7x-8owVtU8WQ^uV!`kb0eI=P##|l&qeOpwijs(efv0ej9pIENJ z${=*)^rW5G@ZdEW(JlsO;lrz$F48duw0O}@tSME<;D(PmV~3}vp@?nl!^>DoImNBI z<3dD8=}n>G&=Zql1}Gs|*g)Lm1IHDw@v{Z2uwyCau8W2gwhe2cUP@>3dw{~CO3gAP zLS7e0RFx>vtx*-D3+IK-yK2gq#vC`xB;uthp^vSz`v4cR{K*=4-X~*Yvb^Ve{Vj zzBk^r#+)17MUoD0x3}+Z-M`z}?%u_J#EM#U7wQ)Pqp1LU)5Cf1E|Rx++uhu{i_g*C z?cT?~o7Q-AFnKh-yKC?FKn&h*lBn?h^yKbdY`xXN%iX*8H?3nJ#nBTSh&ArtSB>o* z)d+(ZxEO0}@2SRaM>XWa(5t-$Vtc@E5BO~uejlBJEgfSUG=TI9Ws_1;n;=seyFR>y z)VmDxy^RgOwB!K#WAld07fV@fpqbOgyp8W-JD4HJjCU!%$B#mD*vRU0nZkd<10W}U z5c=@8ygn_|KnLM~Di4X+aciTs4%wd7MJQuC7jd^Ewr(4*ma!RluH z))UI&SR6LZ=bI*}Q`5_fr^hdmQ3Org7k@s$f970K6|TtCByL*s0Hzd`wUU0Vu5CfJ z$T~FVm*Nz#gir$+(a!xtz()nFnduicj4Q0(JcLgOwd2NrZX{9cuI0Y7KH7eOiP#Sq z#rJ<5G#ZkC>$cC5JYbE#~^A2KziHpo9@mHc( z%d1F$%+D88VGWr{ql0qkz!yT^5GJJI8H3yy&bn*g6^0J>X8o1-MEH;9?|B+=Zl!RU zcRApa_Z;+==?^)~_n1{BDO|pf(8GFn}37ojAoAd%Sev;87?+u0UIPn z+SH*I9yRsE5W#v%IwOEnP9XB}arIkYC=Izrq?tU;e&#d~m2e?6a~^C{nXkxBH7}|Y zr&I<#ht?6slQB*%sg_9~S#x@?*J&iF@+bF)h=-O5Bq|!}c$b-lB~vodl1hd@Ri@K# zm+9xkfnX@4?#?>GuDXOuB~k@9sh=n75i2m^fPEC~waWPL)<`cgmeUAVZX5dZOF1#xNHzdZt?&=?|}`! z`s#Eg8p$j?90Xu@LXcVx+HJ^Y`qyY?N;sC`E%|^%Fb3*oa_h=>J-I%_R_KkTS*}j| za8iO!RT`KF1S-HlVk%t5JVk)cKu!nojWddE30IJYN30OedO45u6-cnBiDf>E4=u<+ z6`Nt2-NwR3a{a(1^-~B_=zNQGe096#ni|YB?@!Ri}j3` zv10ht8f`fWFn61Z%|t|V@~m#jX*8BCHAW;;xnOH+0~FxI5h>Y^1@a zRcr*X6MNErR=!yZEdoklDU<{#gBzi-dt0Q5Z+*?CTp~!nu&%;{YU}k^uby39zUJBi zQrYGSD@y?Ee${p#7>Qi@HgS1zc4~z0LKX;bR*?O=MsDJ3<<6$u?1@=?Q9k&|%T=#|6aE_^@5TM650 zBktO`x3`fuwdq7}V*{JI)&sY)nMGRqIDz^YDS_Q`z>n>W37LcLL?{p&t)zV($Q6-! zm@*>jm7VjfL}HYky7-vLKH;WjdeDc%gTaJ^>8z6dYU>}n-Wn4(&j`+r@Rh~#w791N z{f#sEoEa_^W#eYHGNbK~3@_rTg@jSu84T9>CO@t8g7p(l%ejI=X~d=iX031osOFot z)e|^a%Y;O|8#c(h0rXpRbLetq-=P~nluO}MyTQJj3N>(KK~pyy z_B~SK7rZXgs zuk)(1_%-Y*f}kniW`NZe!tM6ev3GQD15?K3ElevR9@;tBD4LP(kEG{(fwIu1?Vy@; zk`0aj2gAcd95^3GUiJ2R*Y&KVFnf_ViE4f$8-Qc%D&e-ews*MqZbgHye_baU;9)*P z!(Vg+$%TL|+5plUkMITTN`Ikp^ZHJh+=rw>@P9&b$0!XO7t zzB%l!!S-Y##yDhU9Ra^!U;5yxl>u$?o%HC-`WD8q-@`-o8@lqD4>Pb4li-ywGDEgp zzhRdgbhCNFDiqap&0esI8Yaz-Lmk?Magia53v-tOb9sO-Sts!@BRi2bP??_IlU)|s?_w<< zVp29A>2c{M_RC-oG@=YDZ*_5?ObSS#`09~$(;!e|jkf5TK(7<=;Cc~T_&-EQ!sRHR z4e)2m)|hNl=03~okwl;6f!>gny(NE)6V;tSNjhOJ8WV>eHzv_p2GYhA&a*Ncez78i zh{1LonA=1plPgr606U#sO&#l2A|9KxXA#bT z-)YT0ef9GB^Va3lXIJKrd^*vLRI)4!%V4Nc{IO(RM>Zt+3M#Qm_g;L=QLDJd`({}w zK|^!rZg=x--0dEpa1@en!>U^L19hUsZdZhAz!VKsLbx=v^Pqx^WyLmf+q0rdAVMc% zh`bRLAr4jI{%brt6cCZFTU&~ONcFZ(w(kfx9{6tX{09Nk?|Xj4H-UR0W7H<3I)rcn%(<%I@|Zc{SRciFFlNgGigJUjhYBj#;WqA?2`8JGj!tJtKb>MOuf0fgb7i|F#S99XdVv*y za=peWhlyJ6x)a6R)G2Z;%7P$Ncm`VEr6NOQzWW&=A6-)^^z!2CUtB; zm0H?Ryo9hyr+G)xN@;qjlyNY_HHnxRVV43n)LE69zLE)?>+Ei?V|!iUIydpBn5pq> zyIkEGcH~v3YS3)W(<(>j0lYe|LR(WG#R_CN@)5)oGh+++gb+^1qyH@4w*&NESB4aj z-@_64dfgPnC_c{^RdRtu1t+CSwE}v`-1iY44xZ%x$kf|fmJ99r{B=I3GjCEI$zp_R zJyj1S#1O|Yv9P2Pk;Hps!u_Sh*+P%prc)Ra%|A4Nbi?JRPBBDfGCAB2^Sw+3;#dcb zI4mOj&BJ0EuvN|(?jxO+wcQ>RZFkBk#O}c68%KcnDmCeP<@wP-Zq`h*cc8sN>c3dJ61NYA$1v&!#)Kh-t{~}S*f2f9elULa ziYiiP5rL9w%C><~q6b-iN7ML2FWQVM6~Y#lFwM!@es3(tP{Y%j ztFd{00V{|}i79ozT20Q9eF#+;WN`@)!J7LxD=d?9e9z$-c88O6X+DmOL7sN)=u(^6 z{>qbHOt(TLHijSIj)hF1$`5F7uVt&1X$W(Mg|hPKHj(7mn|k&USW;sH z_9U;K1dSt}@uYGE%jIvUcCU9&Fwr*f5k?p zIQ3@}I>laLXvjR@a*tp2VGZ7r!-ytew3Fc2qP5$%GLsjjj4I%tzY2LP+(&>E9roG`nzAO&mnSMh9X^MU(pVpWz;l?|9y*SXS z67N-|$u5jroJq|5QG|y+arPgBEB8XHj)atsW-yqmej`U`@ftm- zt)T@Hd9PuPeMY@~948?kh`)||S#!IWvfeyraFusi^D67CcmM1~v@E&sI5^0{$eh4C zu}*cwvO*dB+Z8%?1|PG8VHmuF-R3d~E=#bhtCDX&6jjow_Otcq0#_@vzPxyWrQ%oE z#0l|Ecx4XuEu>*rOQ+P*Deib!;W->Ua4O6%^zqRH)9{Fob6`a0SsT%b23Rsa9N>iC z{XnDxNXynJSYdF}xxasKcdffU*uT5Bz1hQ^5(?$QWef#gnvZVndT7HboTby|Lmc}9 z|LJ6mqTuh5+u}-lm~3HjQ{y_NZB22}D$X)Cw(V5g;^rXpuGTa;)28{Ur8%u8vV9>A zEfWxO1y)B{fgDw^JE7@s-O6+l>XB))wZr&IC0hYsb+eT^(TU~SqHNx(~v#*{3^!`Xtk7*1ui@!fqSrYOA1bzAJ-Jz;Ai~C zok8d>V!qntodFp>+;z(Nq)0;59D0h)jNnG#6<`J@wPc6uo#ljT4z)?uF$E0PqoRoR z(*BXHs^||TMs1}zX-4Zu-6+ik#b2}_dpLg&&Jq3%E<5KB-Y1nfA-k@vj`w+Wgm2eY zH~i1s;Dimg+&H}w4rVGam)Ys`5LYpUC2jOES_wDK(O2g&NwVx0v2MLho>1BUl2=P-=*OueZ*oT6Lprs`aL} z$bo5uZ{JdNzl8$QVmNrdi3V~rXRyW%OLaC%L$H^K1I$R`kneXj1Tx9d*m;V=@5)bn zcLqrfdMkdw(J%8(f_)o)1P+k=+uGz?>H)pQThVPZk48NZ>?L$Jo2BI@f=QYkGQVw_ z!1BVFyg;M4N2;2dav4S6rGv7;#6ti__QqERJmxO_YCXS;urmEhV=8-u6G#zO)X0Ql z@jlhm6SY`oYn0|$U}g_w%RUYkyEO;5U*_#_pp>YnrV@ zMLN%{X%iPF*G|iT0%OZ2D)3;`n-XFYeodf?zgfNYca& zx^>#Y^^Y2GLb-Vae6|5GBR*Bx4lTtq+&4O&RUxHmUmR~kaz%8l*;ejZ2r)~Jaxc7Q z-00Z$#h9ZwM2tx>*)L5DiJEjh)Yv37;Yaf%ku$Smf|Um-mZQjEgw(2OM(wVnYw3$2 zG-bY=D%U>4+Iz?_umj%*)83bMi|R8YER0u$cET=I`NPku!EM>*GpkV*s*W z*nA*@=8q!x@QFXE)IZmbAk;aL*k zIqL=YQn>(e!`htJyQFJ8OqjucRMhcw4j0F%0_FqD`0AwUwBTf4EIVqRO7G! zUeI&N+Az=tVz6|CgFPoByf%(2MTef_4K3^4?XB<)C}tOhGz-j!vVO|srYH4iS_Jtb zdqN(n_f4joTv%DBq)yxI&BKw30*Cb-cIsfUtBn`Rk;zU`hK@m!FSrht`S$Gg0-!~U z=KvggMj1OvnrZn$CEpZs#W(gsW1n6mu^=Uk0GAP`{sqJQA$!Uni|6tO^f)s(3y;A! zS|4s!;sN#WYkzQreT?b1AEOAbdq=qC1S=V#VVX{BKnh=xm8HAFD@&{wSY8h=TyFW=z2J>xUXv9=;q)NkU1XS3Y;m8-a!VwjN z+SPHyODdso^k?Bn=(MChu7|e16T+}HAuMiJ@dZcZ@tB5g#G7sd>Dxe1mA9NKMCp7R z-X^?-q;#N)B&fR{Ns@mnBvJA0n5#($M_$9RVG$@hlZB+L8GH43o$vQb>6d)Yrtfa# z1>uVuRu<1y+R{$-U?tcPx0#q5O0yD%Px&s^#)ZY@g<%strsw#ig{Hcqzd9^dZn%zd zt?}Nry;7d~<^?1NU&ik}Vfsc(rWX!xpwb6Je1VQHVin9$U5r*O)PNs`OP6^NL4AvL ze(r1c=HJ6s+R!`oChJ{bt#`gjy`RV4&&%G=+ur+mrFSk^&qD85*p9SgOHb(CclQLs zbbQBp=bO~~F#Er40dCLX9NK*XnkA~bg zC#!+Wv^nc9>qcVIp+$J1d)C&Bsla$}Q1D)@9(NSk@V zYdT5WVj{*>_cpVgLJ4gu)lMJa8#c^BKf)q++);dFH37KT&%<2Hk%djze2NRpj}jUd zmBbh;5`ju3x-#TDEv&?}_$fEUy?0vBQ2f9u<((Erg;oX@s&EZ;kuvNkx)oilSEmY5 zmThCha8}vc9A8w0k#?CKg$+SlKz}J&<3Wpz7>*wfXTyD7#Y>B;6mk26oaheN390EX z$x35hQ=gsdIt4Ec9KA5$)w^sb>@i!2brMMuU&J~I15-{RR^Lr_1SZ=hd7N5dpl?uP zTZe1hQ#YHlSpc85N;GJxI-)++H))Af-#M5_v_T{)ROlqpknij^Bl!7HV%xo!Y*B{@ zY_~9M&M06Mq>W_sJC#c#z;GJ7O6@f!36XiX-TG}^GVur|#T+Y+`e!c;7xRJeZ`K*y z5yzY6UEqLasH0W`>TkOXJnrj_y9*n(cZ-@>GsGB`5R1s=o4ygM!gz5=45y+veieD1 z>OSOHGoPa0G~{Vaq)d%7SycB2@(_*hC%x_Ph)IqdRX9##N(FVXhir5NbE|_RWyg`A zc5=qF?7D%jd7Ptz;9h>+utw#N_J_I6(jhNkrWAgv<=a@RI}bG6X%3XCn(VK`w>oxJ zFvS^EozSU|W1&2A#$;O>QIf~6ZIWSM@OhCuVX^;vEkQ{u77?zJwL7U#m5Ov)MRg;|$SCOj9XjLaBAFX@@p~cjO z-FHgTwL_IyA56zHYzP(I2EO}YONPo(i-|F=s4|a$Q7e^SH)ySPFpM!R5r+qW`MC^O z*{y#0umh8elk12R#~;i)Y~{k22B}L{U@J7DTSIKB2K|x6#Rcg2G2pBvDlte@`(+*Z zmUlnAWcRG9tc{a^b_$9qIOOSE6O8BSK7w*=6_H@HZIV{TI&LFgVX71^Q4v*Gi}QSGqY;erh7C~f;O;~7KUX#MhU!Pt&3|9 znGYII@F|}$ZnvWj!6P9N*z4H9#v92nM4<$4Ll#(TC#obZBcuYTX>Yh!j1)6s^^1a2 zGKW4b1z%w@=bvB3rLX+1YN`VjPYgnTARMVo|Hvwx7+_dXe())z7P^OuJ?&M(?hxGy+Fs`aaf|AB04#NlSTs=~n*IkYw&B z&qL_KIGu81ng$ZoE{u@ZRmTZKqQEds3=A$dp{XuQ5H2M!QbMf!WdjcHccU&kTKrPf zc_!ZS6^8HlGE(8tH&N7fUeaA{~8iZyShI;B5zZ1y`a*-Qn( zfhF|P573u>D5(XxRPNV7F%ehp+MgTp?yA$2>z1f(BiYK$*W9EfN~54m+L|zp4x$nk zz9L-u@>mNnsu*7oCFL7`O+0~Q<2DW}Pw^Qz!fSyily>HWOwV+f?Io3o8?$&=vj zqsL75{D&pqkSBSn3>b9w(QXrRJYzw;mQhtV~%n_Ke zd#r?;$bbk3FO-GhaWB(g`y#M$Jv>vH6IYtycO!g2b@=p=^sh9!nuXAm3v;=tht1dn z2Qi}n!9!xI`Z7N8tFcBydAH1MDA|%Hx=uQlsk)9Qkh`qkf;IcFJM>-q1@(eVLWo8M zqnFUt(AI)fSm(Ay-sV^K`9s?df_?oC_wb-k1&eU;j0gs|vFmfb&iyr>gRqVio`u&Y zn>B+G20FvW)S42?Fd<^{M~_K=6zD2*RYAHL*GM7q+=0S~^5NmGp`1?W@Ukuxrr@vf z35U-x=y5YTBj5}%`jN_U9V$!9MOG?h3;t zGCc|vBk>ul6L++w#wP!!gDKR~w|K+|I74cl0x-q`;rIo@*>c;ZrVk#BuOhC2Hpo=t zzC}PWyx@JX&qLJ4Xyb#^g9o^ig?DL0C54yw$-mC+r7(>epv%5v)idgI%xMHgjHIe^ zY^9#DB_i%uY6=e|F6~mH+_W`G{0N_&(X7W_As>l#MH1^fm-RG3W{wA1ENra*DLU z(8*cm8WJp&(&IgtOmq=t*rUfyVK75%{$#nJ_*TVCGDN%R8U>AAS1U#$W7nwB*fp*+ z3UdJOe+e#mKr1$&pb?j9MZ*Q95f?l+;_|qT3oXT0 zVCc#Q6AT;P*P=I^V#(ebtBoN9X9&N@Sb@ZZ3aA`k!+0s3Y>#(|hALublRFwuYeaSs zN83DUkp_FS%!gOO$Y6fH3&*?U)fQX9iKA!kzGwQRFuJIDm@_bxS*A{z3<4ZhEkr=j zH|&A8z!hHUkl)&FltVBD4)Y|h6pD2&nfPNN5(fK0B&lkY2sl=eh-z1`;>c)?1AjfO zRIMkt4I^fyo^|i>uWe8l8qPeQKvcQM(RQzfZwcClIFe+8!ypQnV>fN!W`mdYfDRBf zz<}%lDA@x>M|;3Z9xLoyb$MtD08q$fNsi5KSgdz!(Fv2*`EYGOL~aUI($FrWQa8qu zA`F-bLqr6mPN4|7hRx?7WD5SngRm(~ljUkUA8Ka;qB-Ft3c$V4K8`b-zgx2!IA~%7 z=Nm2=9TMJD@UVfe0iLqbjrjTZIE5cRo_RP$1V!v~m4cvfX*)(3{{#HYO`i`=OTcjr3c?g+)} zguAm;xH~rqcW0?^(Ui1g!o7t>?&QKPEpkU(+sUMxDa%re+{vXI_E@{VIK)i08N{Ws z-KonKezXKx5$#@GVtdy~Z0|;i@q|vZIquygF@Aw4HZ6Q8nnGfGnZ$B_EK&8nTw;Ye z?nz*KZz!<6YXs&Hn+4Wg=0NdfmPD{QP|)H6bC9{fe3Y=UFrF=?)5fGHY~MisiHn?Z zM2Wg>0al15l?~_MHTf_E4B^$`p0cJG8uE8(D_yo&kt)Q9A)%7?_r$crD(K6XA~>QV zAW7qThPpwNpf!5LQQ2Okg-~Qw0hYsIBZ)H|YCw#^8VyStERGW=r75CvRf;V>N4!QM zDcv$2JV4-Wr{w#5fe?yiX?7J*%HtvB;fvTs;VB0%-}aAWu{uNk`c8-Y&e@;6x7E)a zoYCb~?}1Rh4E?e%HB1b`G})lL4j6+la&wZL0yk7^;uwnK{!{|q68Oyw;qGRJuw_u1 zz!G6pEf99#f}0RVXxV@;l6@t@9)VUxjN$^}Z6SO=L%0(zRARrtUF*w{!x5}Fe7{84 zfvcgV$H9N8D=$n@?yyu>9d$eI&8NdN=5JWbzXlpx6?>g_n7v5Jvr<3Jcpz;(L;$`I z!qP_-08zJ>wDmg(8{1lniYwpo;~e2 zePrJ&@1Onn(~H-atxsP*y==8wu%{p6^Ddv@Yr+@Luby3f{q&N4mD^|#=W&%=PT&2N zp5ad!QAJ;5F5L_>WIMx1!Ss<J@g^{b25UzkTLeQ+O66`$rDPNpHR zWiA?*(Zd5WhMAq7l<%4Gp`n!xjmsQqO0=qOoH+%eOb8`tmy?~biQGW2i0|xjD~=hJ z4oUdFpFld7&hqrAI^ZRXfst_}#oYlKj{?l>s)9EM44fk1kjxbEQ77xf!{=)G_^_X? zM8-5}5ySYZUwT=1>@udwLKoo_-$qn|dc^TCWb9+roP+e=cUtmYY+xTtOsHA0eZQit!ArU{`?+9)e{> zy~pMH1AIE5I1^f0{py;A(c2q64D}Aa*;tr?2@&?(f`Q;LQGeEA?i+GF=(QMYQ;hLw zgt!{bOx;J0+o=kLvT?%U=}CAARiizJBD3UNpQ1(5B0RK>J(mt6D607(yL}&1ydIWs zdn5KHG_cUE@O@T$gJnv8b1>{Zn2hlir&IefN+7ndqd+!!5uVM9p)YBCBOL+D*ev&J zdB?e53=kt^wNqz@5}tfE?S4+hsrJK3_to$=8s>A*XMy0k0L# zv9YI)P1ifglbb?wb{7x<49r{_ixZ?Z9=9~ z#+*3z8Fjj*&YM+r4*B(@((abYg@DX=qSc7~vMEHw{TfvcBxb7Y^MFRNzoja(w`Nt2 zZyHq@Z%Yk|q=}s%JF2gTzashV-EelKAVGYC&daLH?8Q|!>nxBJ+m|XUB7+;okK~3C z(Z)8Wvd$cN;BzLZpxD@A7lr`yz~#Ldm5dr3`OiUHP2Xq~N&cG7l zca3q$j2ld<5yKL~wd^dbRybK16wHS1dw$i9QOG}&Kb!}CC!+$;&rHI^*)S>;iX2oS zYZwVFEw9;@FacKm%$A($Ms<2iTVij`wiMqq+7jM2Xl5gZzhrh5RVbfV+z_2ztHupB zS<&T^Q&AhP^#mS=HDdcM*<5y9!LiZadHdR~+-x;OqQS;)HqK^q z3!9%ab91U2x%`&q#@?FEExu_qHzn0;3R?>FW+iQ;DDX0lM^KDXVV5^sHb7*8f`+pUjsz8KfY!nZU#_SS56 z@lB)I;caOOZ#_;lQuiI3pfmQDgObviZZOA2%$Kw9?7HB6d9$UadF}b23D2o!x)S3R?!PQi|<3y1g17?_&>o zKDTEFV7t1lNL}XV9lfTS*^v*Mj+SScq3&mvAZNwmTd_6-;d2Yw2LU*Sqa^=E01YNq z>gKmlhH73Iuc73};dKdR>|4AkI=7@-g!`n&#ngJ|O)xEi#1+f@2)v(N@S6bAH4y2P z{<@CNTQ&>JUjv-9%s-l7*%V;Z!&*&A=0+;2A%trd1Pj;pV2fcihE;ePt?kwD#AYjD zrvu1_orFXUGd_V2F0+DfPq;0XLEGucN+bIiYN^Hg6Ks^co|yvnWS_S)Q&e<|HNNVi z$8adbcadJhSj(#TwPM}C+Z=08Sh+~-JLu%J*=weE`_P8KX+R?3z*S!-CAP>jhHh@b zb|<6YyQd_npuw`qu?ADg@sAc`pOvNhzy$fY~Q|7fv|jd(m~AxZ8!EAAi@=D zqwZv+5529t-+K1qo6A>Mtiak#nY#+E?>V!`lNo&*}0It zN|p2!nYjuRzOzY{j^wMckMqeC)r>oPn}l-})hQ3BJx%5vte!|Td(!Wol1 zNl4sR#hcshSv$X|2MJT3w(0nI$e;$#886ca_X%m>jCcDmUbSxj)4gG{gDnf$q_>s=$tFvK*Ewl(0llc`*@zi8DI-@0*V!P}~q@sEUJq z`Z@Y*+uOsFAe?5#;=twXgt6b2!yZry*Bt@szUaiH^$ufzj0=%8=*x|4LY;z5Ikb{d z4bWQs?aD)6k!JqLmcjgDUCTa5w`r)T!=)n^9csR_RLX_aH9lH zL69}v1SHJT34)~dW=7$302sp0N;6haHTu~E!*A^;H^9zVq8Gb442 z6Rn_1HP{{}8~DQBo7(b-#XWu0vkzJxX;RYVsa8mPucsGlrVpElaJ}HXhQp z*-0i;-APc2X0^jx`J$7zol|J}?nXx*307p=y{CUV{7SWuAckQGp)=&=JvehR>NX9U z&t5bPn&3a6Z?#iPIrOchU=~!%JIUE`-bV+QJ|m({g0@o-cLaENFGDaMe8(fIF5Fu> zqS_?Ftbw*;^7W^bMk8o&o5bZ3&v@pc4v}>A!(|T%? zD~n#?nocJCVAat8AFaz&PF9<2EjmOSAhSuW?w6yB!w2edji+H*gSn+yBV4fDnkMJ9 zDM6sFom#`o#96jYB+_wf>rYBD~ij`R`L zR*Kx)Y#UwR13nh7+tpY&^F6a3SN)Vf?|I@`Z+h$Un7_ECj}1RqW;yn0a(n;nwaf3MA8AvY6x}=m4xZc*yC;*_SSm z#>lQv3b(~(Xf4=Q77^QWnk26t=R7n&kN9n{;HG>JEgc1?Ck80N!&hJDUi)SWDjpmS zLaLGM^eByiCQL*aF-Wg=sTiwT7-lejvMOG6>h*5oN*d^#FE-HK%$G1ZsNwTQlD!RI zD1mR!mpBwNpm0&^K}<(M9Ekau>NGc@OfBLF8@-t6;>bF~si?th@yIMS zgM?8_0NSC3%|>i)YU5T6VndgrD%_q-?`^c^PjW-_A38tec!WR#qYb6%9145$B5ORe z$r}yDs$4Wn7iwCwmtVhl`ok|TUR->B`3hk|xI|7O#4(b=3;cJ5oYmb{?_=- zgspD}^17QsCC4up!c+c`lMA~)>E*%Y#Zv$?cQnA6-#*q1%p1Ai!`FOBV1GWv@GAB( z*QAjgN0gp_rOs7lI>0?lj5YM@pf?97*NHF`%G92J6#yZs8VdzmJLNEeQEB{gh7~U! z#N&`Zx_Eu%sFyDpn?HndjdjgU zin`I~S6`&+{MA(7rq1NX;j7Ev8>I&N+0OSUC9Jx4#-FI))7O_zO&j7>n@m_}wwt2|xtn5}jU-nZRlrvzhcBL8jbA={eVKXI zXi=*)DbwxmZFFD-_>)sE<+t~t97~P;4c;#Ulq3=SI)u{L_<=hx+(wXS0xa5zZ0ym+ zH<$JS4YjLUN?{*WL4S{+79ISl;pWH#sr*$G*eXApUg^-AgcpTa=y6U!3l6Kb^B3eL zEaSwLY31N>pR1F14KrM~h3>7alb6v=S^3t+T`1m4`15}7c&O3w8XeYX%OtI2mu&{2 z2@)4#8mv^6yxA_B4car=rnTz}uLZE;|3kacije9%FsmKCl!4k5 zJ)_&ol6A5B{O+@#bI$2F+s`@2-%iUp=bUrSYdObfcsb|5 zZgJciQBorj1V`OHgD7zZ3R;pD{tyV#`hi50F>1$jaKTRAK-Kxms(z>vVGJLtNbqN6aEpzxX zhj*4qYISUMtF=iwZxWl{=;Gz@)cQ(OZ*#kN`!oC{eUW+z7y>8-R%?M-64AR{+5(kI zTWE23d4c~~txgKYN|jux3Rh0YkQ~h6hlguj2{ZE-Ke(%93|w~}_VJZH6v>)a=5^&( zS+h!fQN2)D==RLLfHPyMD#`1Y!wcNh|7tv&kyTi)$`{ZPplI2_N7a%}=?>%#?(OA$ zuCxREd_4jZT0k!nOB0-H9q_fYQmHy>Jm~bme~5?E#SDyaJOm;+s{K-Z(6*$iaUCwB zBAtSuLy*uw6ltnrYCJVB;%3A{iU;ChPYsjfq1e5LT)IK7xjvlV<6KfF)DFM=*l|1Y zQGC?82?FDbNDLw?d7`TLL^%+59&_}f6#DQT?KO|8hc~Oh9vf zqQ)#}1eL58xFmVPI&KJEhKO|?wE9S*ah@0Kr)D*9$Pk;zo}VXx(I7#>!g4QuEelp& zlkC6@>qq%Ei%5)`&RBRnun~_<~tbNDcTK(?I0d$>`5x8puQw z=k)8I1v2MTI?ijKl*UbIZK!x0cx&x6dXQH8B^E$q5UGZ_syZ#CjEcGb;QHc=9kDtV z&sG~8G>|hX8~^Fa+3hv%AMvFvP59LSE}39p_7C_?1X}_NvM#a1>4ZpA-6*>~@O%}8 z_|aB*V{;?YRpO~Lu*4Vj+&87tqBinoL8Hw~qs2-wvoR0H&o-eJX+90i(qvj99C-JT z2HVFYZ&YBPWBvZ?kVqnT6rZ=09w!tVYU#oh&ygY#H`k!Ps6|Rrd=nL~oI&Q~F5M(| zn0bi|jYJ~z#`&g*sw40s`o^=@qpkBg2kp5D@0@xf#Z zo8&Lm5F4v(ZOA9e;5GW)Ayv)$XR3B^m45|WaH{2T6+cvy1Xw!=jzjtWrGMF9{#X2! zzx3<(&oA@OuV3_k2_G>;6q5hn@84hJH46x{ztr+?`yBLgy)8m&AQH1vJ z=0WH28t-a4?62t;%&>xis969}exgszV@Met2wK2(#0p^yH6gbFp>&0aKWNR(?NEqy zC+#ZYTXmG$&uz5VpUpCQ)t{}+I+}5nX0`ZbK<>QWhZhrt>^a8a=w}!A2bfJeXU}D) z2LHM-armCoEFHwv23U%=);`?Xc`-{6q`n+aM<=(Fg9*}rUtGSqd-v{#w@H=zxNu5# zI6Jt{wG6Dp)sqY0xh>H-n_Rwld9*uv1p?;4g%=7~(Ln}gD2*0^hBgXYU%{FsrQ4-? zJ^4X1`A%{=d^MVS=)&+ytjG9no<(TMFQ(`zy!!1Zt$W+mi$zCE!m?mjv^xi47@T|5GHyRD_)Y*a*(w z!glTq(&JTCN&lbt%1l)xNqlvr zWSos&pJ9%OIN$Uy@WrLD7sx5m9iNVL4b&W-?4beZMPp39LneTypGZ+JlFwnSWfvK1 zDAyir#cr)6E;{TaXQ#_Rb)jI@1TGJj@kmmJ*ULz%N@F7$&tW9HO95549q#**0w(uT zFNH=j|Ess?Qfzp_eauHiKO!%XZ}zcC%fAW&wm|E+bI8!00C+Lgo@{fG^m3mJ&JfF0 zC;thcOayXqNj-p(mK&RkpJ1n?HyI+voB_k$f41m-05i;cM9M_ufD{=S!)a%P+-rVk zJbaZCdyD{q9v4~>5#Nok7xzV+)5u^Fpry!)AoWRg{r#+^d-oUow%u8P|rzP zHw-8d!Xiw)w{~LkWD8xHZ`>CB&&#X>vAj>I;At*g z@_fgWO|M&470UJJ>3;rIfAwGU*Zy^X{on96{!M@L-}1NqZGZdU@pt}RfA`<>_x^o< z|3B~#{zL!pKk|?MWB>R+@lXC!|MWle&;E1&{J-!o{!9Pzzw)pCYybMc@o)ZHKTlx4 zg0aQ_zs_G@0SrISE+Mhv_={NkwSZp%+`6;;PvP_N;CMPYJ%wO%b8l~w=reZ1Fh`P8 z=qYZ7UD;0ob9Q(-dBG_Lw}I;roithit?CLe8>Os*63n`XyRsr-shse}>}FyIAIj0X zMc%<#MyFa2zpV|bq0Q*a(W$;cF2)!>fpoC3O`uMIE8lQUFh zTHkuLi(kA*a2+3N#dj;^SEX|nQz5v1eGkFQ{Qq7W$@@AE<1&A)?DDE}c*hCz*(QfxU60=_K($SucrXUPf zW3=(OJsr7b5JNzB*l)Ccfb?>J(ItRi4p9-%&orOj-fR~Jhe#@8rIy@|C_lS}y@$I^ zSwvvb(M9OCu(#7}_BuG+*J5_Ui_yg_873#=*%w9>Kl3!q5fs0NDe~Q+MrY>C+ox zYf7+yG;L4e>34bvIq%`*(oyezQS8!FeCt@B=|>@brEl^#6=@GM1ag`3oOUPB0v>KGiFrl>va>h2XnZ*wpHg5^ zvU9k0Ll&(}(=i|1zdur^QZPpk)k5?p?i%YJSbX$=|x0jO1LZMEvH?N*}%-@4Q)wM(6Lv0ZAHOWk%=2z8+X#1YEH za;aS}m&=uMwY*ubmAA_EPO($!lslD9wG0+Ytwy=osh3;jcDYmTR*IDpPNm{crBbO@ zHaV49tFl$8ck7kyN~6-Ov?}dNhuMG4Cx@M~BbDH~=r3S1xB$+WvVHMZqHhKKXXSZ;PeE7dmeqeS_jNtw|Jcm%J<7cX&~mF`w~6K|)p z3!C3F=tit%jXvTfAYPdA61W`pnvRA{Y*3RX8`(%=5HJ#`VNM7H7Ak7|{7v$VOIw#u zkHfY&1jfZR3<&)f?MOyuYYkF~*A(uP$Z-&pQrR$g_69x*Y#QLRkGX=HnsKC{z=Ft_ zq?@>m76+jwAR>(M(;cOcfp4dRb>s^Uob#7PG#pk-x{}mz>q^`m=}K5ET@g73M^@-c z{08d^9T-%A&!7T+4%3L*BBQi1GbAu4znb!f9o+1|NPxUE!5Vxz9pQ2iy&?pk@_`&p zz!U~TaLTkrx70~)qGV#^L4H{UphbU^0Uwb?u*R4oGQu+`iacw1Fjf1BG^!|;H#e=_ zTe6SXh2tylk(s$2zYo^tcAR4LduMQ(yH_!nBAeoEU{Xk`bCMlTIyN#6i!4Cn)Tq+9 zJX(1^I`Wj|WYbr`&{W6olcA}O^BC%gKom1GGManjT?3gzjMtiqEJHoXyBggGj^a(|RZ zsL%MRdqbnZCue2nRMzq2)%oe@A_Of=U(t49zmJ1zCRa|mF51VY(7INcS zASlBv4!VE*C>Aej+I#4hgh>EspHN$`odq01lE%7Q`nQ2cxh241|J zApG_ku`F72T4i=F=gdKwd*_oG{L9H%GP#@r{Vyd_<3Pn~2pDlLGj>#Xx__wG7(7N6 zgv6Zi66<8#c7tlbuBYY5Hb6X1fWx?0_n#!+{VpgY3I2!LxeHp|do!BdPG)dZRp*Ss zW1nCS+QXAQfB9xM27?`%j?xem1rF7kYxib24dER`#xrCH3;faf6BlxZXd`F>kujq2 zi@Q9}#C^ej=kQ^FZwIGm`^YOzona_LcwS6MYxH!6oC@@VRTp6~T2g2*X=z}DT0%Gf zjvCk#jjjBH?Yv^wS%pWbtU8-AAT|((O~orZ#*IfWY+Q-w@rE|g?hIUfLv8>9e)Yg5 zswyO$lh}l081nPsEWxjYGeKr|sa8}{%#=wC3JISDAGAP(8yiWJX(6IcJfo(gi_0l! zI!XHby8`6!Ea5bLgumcXBV5z%7Rzl00#K6NM9pVZd&J}fOCKzg4yL0_;Fp&lFdC)N z7?-k(F1i%zVOsD+$zqWh6q62$A}Vf0zsBjm&J%JJ#78*jL5LI>4IW@qkVb)+0DRe= zR>P=ezz(#2Haz=cQ5|!b(%>M0@`6f%b|2cx#o`m3dyHS-do9y)GJP>T zbFpsI4@IyE+6++{G?rKZ&96#2Bj@)<&!3Nv$53R+WQsT&cN+vuF6y9zFd5hGX#m`b zyddd%z>-hg=keL?WOyO+d_2LyQ0YUHuw@u@QQL%Ym={hhfEaurF-CHEPI`=5&pQ$Z zV5pIJTuGo3S!4{9^Nq$ZmY)Vi^+%(rY8w?D zl|(TN)V-o(WuJq3R`ysRBXc%A1Q;>PI-v2JL>BpM`Fx0_yNH6@7SV_;n9_$ilzpI? z7^D!XRuMB_wB32M!~7W)JBEm8oi2`FLg&j0P{{cuOe(Yo)uF|#w;{x^&L4LhAb>Ph zGkxzSrNBX`?a0YgTZ}P)8**_lK{S+Re}>mS#m0x{2fK);9_(Xlho(Sw>tT~735@=S zYV~Je7b9{-1X+ete1CR2#MtbS8o-YMqG}WajFiZ5I{iT1iaw0j*%=T`VGPs^<2vH_ ziZh~#F*}2%i_}CfD`-HwAEeo;~Bc+@&G$eu>dpiz_81QDW-&e7xvyTaVXmZ0o525l0&n$R27TihQF zfr@Xe<*;8SpsV6B64=%Yd;rQSZL#yKlp5@qt~FW)$0XRiU}5b;$zT%T7g@k*Ot`yf zg$b3Yo;saP@JUrF2^mbr;v{%bDmHnx^%cVY0^>`}a&=K3luAuVqSh)`+KQKXAH$QM zUP4olA+z(5oY#i|MQ>%ERaI)5BMm`#a-QJK^MYE$o*9U)rh^6f{Go3i&n1UQy6PvyQrosdtB4 z{`y&>8_9-xL(mj@9j!UwsAGnmZr=?R1QkKszKs~JLm}u&?JjPF+NIE!O%v}c;6$Zv z0&l=*-^A)BJx3EbPkqFTMTf!(ruWG#G|3^9Uv?KGyb|+`YEt*d)~zhg)fUl|tAmb9 z4CS6MHNQAsWzXmqtIf<`di@IXA-y4!P0+{KPsj2|jh39cB0IV}ogTL0&4=@M`&x`y zTySaOmR{VDMs-;SdXqjKzj%3(i3f92bG;}Opda7bhX>EFD~${C4Cn;Pww#6yW*)+f!$!^8R4PrY!?G*uez7hIDKzS1o9s0F2UabXU>o(h1WA2^9yB%uXN6fax`!3FXAifRnd&59rb4zYDw($wQ{ltP1l{#B_pkQ=PD37Bx z;eM7Y2M(kVy6A4H#qL`;h(&doy^>Gu#?xpM*O5qda)n&A>f#cGFxEv}s|nSHhQQiJ z-2%*3i0Nd7C2D4&JPv56IuK1QeHe|Y4e?ysBKuLz07ij~Y0RV@_lSzJWaW+>h%`4E&6z~CB`>zM{k-vF41z@Pyjbqy+IUkVzy3eYd^C+fPN(8>}z;dm#W^1-#M-%oZ)6wZu<%L76n{DnGTl8CN)i(VzU^FJyFfn`(m6g0;AVrSP-SlgW>?pZaQAHbx z3o${Xt-7KIi!H#AEFi0pDbPkFTHc^ZT`x$zv0ek%@}?$0*SBbApx_{kdkkFD7_mOM zYnm^Vfr~=R(6a}2d()96%*05Rn?TzU3sZ8J7g13)&5ethnb z`>VjiFO9ER2PWZ|gmmjoA)(L_yxDa)cqSE_q<0H02m4UR#IM=qjc*Pw+%*S=h6zaU zpoFXzFHW4^$VZaG&=fwe2^A&Bv@m*6Au4a8)ZWus#&guayrHCu_SL92ehO0RzbP!T zO0b{RpnAY(Cl2U|ns-}Zu2Ex2bc{2gjATpkWmG)MHIU8AjUm*mNk#K+6(B=^)#R-eZ8f=psC~tKH8bi~1-BQEWTT5jn3N~;=<&Xm{2)j@m z`9rY~4U1msraf^2URDfnBNK_89%~!$I1H%F6n<+!;N}{jZ`T06S!ke$sKJ$HfR#GU z-y|cy5Gxn$EgMk9!`OW?vf9vU}=RCW>PA!j7m}gnj zMg;W-xT{Qd`+P?>x@k4B;H0PFFaK;I0asEaO~ja)#s z;I!)d5S(*17b5?Y`8V+DSEP*EpPQN;4kSqcp`%P3h?;D(?J~(_%&j zNK9UXR9d-#rhUd7fEwZO_QHC^%2mY3pDFq=-UDOZS;m*AxT2<0C-zFbIJMnOVzdcK zkQOzQZx65q{K4A;O66mnYGF5TfUwtWWbmLG*SqYJtLjtUjLBu+$y6W;OEjt#$?~Lw zMRBoic!eeVLl?;Oq{x!gMpClgg~SS>kt{b^MTDp&wed5Ymf}J@O=Qs#F29$nRVAD2 zAw0=JD=s)VQ4q^BjxLo#0XycE9F*f8-YdikFH$n_Rx;Jnj%0=jeQt;@$9z=j_%=n6 z6z0XEHmb-~K1oq$dUM?5*=)T+qI?Qf#(wG z8BbY9ryC#LZGEKH1Ka%2>!+u0loZNMeJ!Rz{^GPsbs`Ei3@u?~jU~r5Mb=c&s9j1A z20?_$jSjEIsKG^AXusTq(~y^&E~ZdK4+PLtkP`oxOoErq-i4hxCCk;SXzd`v>`z>A zQS_o`b86U#a)w(x4~c3{pi?=cTFA7(PhEG2)i;}eC6)?~=Sv#3B@!TBF9zX^aguEw8oqr zajMP?2|i>h$40n)rdk}Q5^nKU@{Q6h{Cx*`E-dFg<7*#%-gwlxi`ygn`ybs~*YgA* z4Bw#e?rvkRaUX|H@v792v)S_MexuiTj6(frsMf!6uQ#Nkzdt-3{>-{)?CtE{?H)GR zzQXx#O+3RVS*sL+vLk9(w1Ewgevs;r+DVQD8CPOc!8 z!cf(5@L)PQnam(0fuFJuE&Exzmc(+H{ud-!_F1>lHCKZWdRkzL$`+p~>2&5od0EQ! zxl?lO#A5mNqnItR!OU*rG;k+`tjF~hrUxe&mUaw8ibB=8Zg}qW?3`Wf+NJU48UU~= zH{zJuFLzbD4tYQfo~RPkrWfdoDFy~dQ z9pFNwbqpx0F#XGyV12C=rg=Mj46j&*Ugs8*U<~=hPp!i^CDUNmt5^b&PP{%rS3}4S z*Hf+*>`7r#;JR4tap^BeGbCHWt5yf zGY>Dd4mAWQdw1~t6E8|S+1wDk;XveSUOu?!KoCGliNj7YHI+EHw}t&m^wi1Yd_SUB z*YO^A2r3k~Z<|l%#GjKQh+d$K8)6Nn2f1C^8%_!#0CIWo=+*h;(eU&V3l?E(4)3Ki zNUdX76KVkynAdzuuKr+jft0N0V`@-r=*Z6l+;0GQ5FwST+JifxafB3MgHVFDusR|Y zAR~dN)QcfvG$?llqY}4nl7k@3{1eE|)O4RH`LvEmuzuY>J z>^g81ChKvOvhy<`*6Q#nP#Mi+kOG=3wF_4DPNhLO>?Z>wPP-Z2DB(+br94RPs9~Wo zSIi&*Wlc|*V*uQ0R}$>nN2Edgzg;?2cZCjs1yzgh$sl%v}Cx;gJBU}Rn7 zd$3LmBW?n?@~x#bhNu%g>IeE%`5IW2S)PVV>n@cP*avZ>G$csAW0poP)mJzl97+%- z7wis{x$?HRfgJC~bqz2!zv$P!39M@Bf?JoqDNYrDRrFgw;5JnO%%RTKmY=J7;Tz9m ziu;8d8NCx?DU9lxINuQ;D^W*KE`O*oBhkhDa16H58X(!G%R>`~gPo)$u|TAh*oT>R zFHbMVO(u5VNg9_I$gb09AyRb47dRF1+*Op1IDJ{VTSUe3_Q&6U*!y^!{*Ako1?uhy z!&(p&3trsvfg&A`km)l%PQnMdhvf)gQ;^GBs=WW@i2kaeAWyBy`5S$*&$Ar$nKiFP znBTmY#U)ZYbRlkV-wy}$t{Iq;;{dpz1ZBL^PK>JTv(RTx0ZbmDi2D^s2m6sMu#6yw5>t@**Cqr=G&S&MrCo3NHF z7QP;}!7uNHEbla*WQ@wNyA*+?5HM)kDLsb!lRzUIk#2?vjqe!Vxf7a$9z;qu0o@I$ zaSs>~r`7dyO)8)S0*8#iWr#Y4H<>76Wg4*O$`rTcKnIjO%&1-{oKIiqjx_Vqk*bWe zsAEtovHt8Fz~p%Whl+J3BUcNPmKju-x;p#lY@V0JTVgjzptS6&(8f+SAOVV*rN^h2 z$oEWe4*WuL4Nq{uhns%zoEZK0NFcC)2FTlDhN$ExBm1^^+kgz@7tB!;r(ux5jPn6V zo_;Y(KKS4RqXyzmbn@}#Sx}%*kU@kHP7m0U`CIliDEl6i@)k-%hhk-wB}Z~96i;*4 zmx7Ee_hgIN!lm1ZoMz&nm=WB_v!B>5=B<6Ihy+hIs%0Btao`%cL`&|&WritAdbaPt zrho_86N224v}AYa8zO+a6-MTpchWt5pJzN$RM&2LdFGgUhZjuRfs+bnQaX z!PKQSw(vvYJ6xf1YY7u>5UU%!$A}+>7j^PxR1?-qWY^Nf( z1OfJyvrVP1lA0}$aL+hB0qms*d?YbbJEKP;%K!QfHqt&v&BE zOiSUt9q{o`>6De3&#C5Lb7(fY7$HIQ6%OX$V^_Fw;3Bz+qkT0Q05Txr%ruA`Y1Sza zB$(I1Qrkm<`B^8!Tx;b@Fc}(2rJY#HvPHuOxG=^mkxh}!YL?F64oQR@P(n?`a+a)D zx~k~X(;VP=UK$tKMsvk7if*14=*#8xIGIEdQkOE?n=-_1v8-l>CVwJ3P)dYQt}&pQ zB3J){hiJn|(zC=(V=tMelLF$}+g7T=qTb|wI2bmQR_Gf-qG>g55-evM8Y?p-q-GfL zV8Blym|*v3pCZ5xA&4~2Mr3$q2yskt0F??H!b=M(q*g#QdoG9suerlKp5QbQGIF7D zaElRTR;JIVVJg)=#XK^cAc3k1z#sVz9SBR+po)P9dfq}MBy3=iVnF7-t$O;{<;Dg&MijYSNJuTW%_cBl2OqV-D)#g$Q zIzd6&zo(GQrZej`>DFi^sfA2UkSc!A1hHoFb$gMF8n_W;qJ7=C@H``$s11~fhfhZW z2dHFbm#^!(h!paV?uD#zivc=|Zm_To^w6i@EoNjnpccpV=_z5e+-VB&3A}t$(WYCZ`2z+!{@Acif~(mV zZng%|_8@SM@!a6;1T)S?%r49%@H|Hu?ZPZZk%0wW4~ry1jd=2Akl-t5RqQnSCcOTW zYaES=Qd7bII>O0&D`BwIO47?KkRZBi5#Mfb_biHtV~Kx2ICcye4H46S+0;EX32@>5 zKCIsenI;5M%7b3+xkw&I;o+{5VJq{Df*!o9@v5DFkeNh00YLr$|yKcKE5Mx1AV zyMUu?)kyBD%!7l;Od~pA6)3F?(jc-A{)wQ)TPc7P;S9jZ_%?bdJmvQt5Cd)MKeAaO z%NUK0=^in^N%#!siqj&O3#g!Z( zezIibz2rk?Q>sVSDBfAGLE@UcE6ly3;%c4Zs|I?Fij@mzr608#)(~JIrSbwps(O%t z00#F#^o7{DsK2y4Fv5zttJ~8&F+{PkLfafa0JOZ^qkqVcqw~rTtldM0DsrB2!U2tt zVYmMnRB2FA0)|LvKNBDy}{)f~@ zi9fRK-?Elf)K2lY)nXle8~xBi7Pt{@ELTVV4L!QPVu)BJHK>PP!L}}>l2w(W6!cP( z0Z}UZT2dpg8plr63P@!-)LN|XfRQ0W&+?elm#^=Ba0^+F(}$9%Pv4`}LM7=sa9c~X zaIP<_%zxY;)ORBW=-t??S0R?uqMh)KsD-_?y zcO!oJmwxjv{ia{~ZSSM2-{|8TNP&O*-}!g{y?_5d_z(Z1|M)-oPye&u{+}2Ai*Fzb z?*wx8(=YGT**CB;GXrp7jkiT2B|Pa(Uf{MIq~ZB z*G1Vn(h6m*FN?_O<@trR!axN}`t&800zx>$^A$nRG4yJ^2m_Ai2i%vtE!bI+b19%?zi%^?*AhxjUs z`(>2|pYI&D9%!iyPXiJ?(u$-XGgy{GyNeJ6|DXY7qykC_|TfA{%BmPN!IRQD4xGYxxWvMy{X8?rJO zGKu0gQD&WV73HQfUWecaWJdxQ2<|Xm%;dW`e|@0e@52?2B#rEezq-VAow6a17J$k% zX>A}5DXHJ72-=NLO8m$vAeD-kAaXrz^o;8RQ|~u3&yvg^hw-8jx#gNO=4W5&nBYdv znCn}heT3FKp^1}(F6y9tx}0$TnNT_E;`iqD9)5}g@7LiIgRUYoeBikpg)Y4JM~I=l z1n@PR71r)2*>cd@UYQ2eR-8Vr$=nNRla>c2g%c-f4Kws&PI>!7Mw$OXv}53)zXd)ga=fOX(KghJG?1;E{luh=s)M;Nmh6r-3h> zXLEy;aiNNkLIipnNv~=6Tu11{PgYd}=>%6sMlJscJuxNHO4vDW8aCCZPt;S6k20zC z^cET7)L%?{hU!8(vX1_qk~0yTMIiBb>J^a6YvyVIX0$~p5CTEL-OB}z62_Y>Br3Nb zW8XyrjJWHqJH}2YLyuT(wD4SbdQLs&)71B#K~-z0@}|Qc&2=+L3Md;PDJ@je#4m>9 zxhIge_;(=HA_>yeba$pH)uFf=WI2&?!&@j)@=KWZ9`i-hi98Aje@ZJw7n?E{BU&}U z@1nHFQ}9xVvFNQ4M%)FP#re7guv^ktba*C$qVZ0&J(v{mb zgr?yNBkZSif$3@aHgR*Ew4%ROZXT&QokaAIguT5rr`t9DObti}LN)UprvDet^v3y(YS9U}MFH z?wt)(sZe<~k$|hI8_cdw*qq$Syr^J)?dTZP9nd8~QxSaEgH2L^VVfS*`cT-s3SfM8 zIYL8}*aiatj>~0ohK|zRuKZ*>BZMICJ<~Zwo~k?DElYd3r7ieYId$hs?G{ROzW=b- zdDyqjC_G~IfgMGe^O?W6EOGAzE?KE4C3V%}{1?BXF-6A3P0OxHCv?4?JxoH`Q5Ftl zD330g5+#yi@M)-?A2aLt|MQoA+Dyw@@}_C;n^u$mHj7*Q&q8!>-%AZ=cqz!X+f>jC z#bs4O1!0zn#?O8R3VMR8>qYwg*nBrh*hpsgS z7D6^bb)6Tk+A|flX633au`Jr>&E>8Q){8Q;v@=^Y=`dKm0WyCO%vM*{(C%9;Z}d8Q z_YWW3Dd7;OU?Hv4%DK5@1G=FFhfL?$fn%U@2QK9ejFg1bm};fM!MB^%6}<@EKt+Kn z7B`4^H2y*L5{v=A@z?nhsexbW;ZE})Vn4zB5}}(Nh8}K@QuNG&U z-U?-f5`nCE%9ct{#ss9jnMI9!b2qX%G%)%27s<`0X>~`wUM{Z_CQ}Z1mdl>(q4>DZ6QM6&Q{JC9an^j^-Z% z!@ZZ7;<54)O!U*7IRwH{?=VWH8r-ay$tDD@Zdj;LOJe_gI?_|aU>E9uzG;31o-7zw zd6yk|j-!$2>ASGr$^eofJqV?c3dL%l@uA)*U>GZ>T16eNl5>4^pY52nDfgh_%av34TQJ}z@XMC69S_DK}dd#jx*jCbEgFJwDCjZG;o^I<sQLBa=8kP*lWoXOS<@U zv#-h&cwf~jOc5;N2cvjK+j`_d4SV}MZqCyk`W;bOko)?`HV$w(b!f?7DSzr52r)4MhN+F3p{BJV zFWIglSY=gY%k=mxIg%OyhUJt&0W+NLBcghIURLBp(&Z&O+}!!{x5pOTkU)a6n6fIk z>`nMjz+XNivBV7!IjmVh9OubQ_nr>mX8Q?RdMp0Z$-=ZqUm4!2Q0xx9WOaa zRO{KQad8WIqqU&IYTMZS+QR>lG`P9FUEHozctbiqc8$Bwqt0cQ(?KNnJyr1~=NcB6 zb$su+(I_@r_}(*j&JZqP0F=gz(|f(VeS3YgQNxEgWcsd`n|R)Cc5g%BaX&-qbWpa{ zPL)-*qzrFDy=vw5daYEeu?#mMOIs-`7jw!QQpTH}Ifm4$RMTZu^p`F}jK>9|U6Qn( zy>-(G!MmJ~xHD8I#TM{KOu&D^o$nT0MG#_4X8c8&IfKs!h$`%ic^q26yoYD7 zDSY}3+(`e1g8X0pSO4{Y^WXk=|NZ~)KmJeu^Z)X{{%`;L|FQPLhd0*0^?!bJ^V_#J zZhu2@x(?Xc{EyW0bvpWn)-71FSqZZb(PU1>hls88%Y0@6M?s@Wd=w|K(4JhljEVI+ z{$T4B-{}OugcxTZE)ufth$kN+M^0S36q=G;{H=e3Wa8Tra7y(MdD_ zvpqe;B$s*Pi^TzNAOMU~PdyRnt}EN+5RYEg0Xn#h6@?n{N%&A)b~qk#A>3*Vq?8|J zMR1gldb0-+W%!;BD?{_*knJB~*MeQJL;#n6@ob$iw9ofFE9bMgJV;+bV}+7k_eyuT z9ym^YA?w+2h6C8{n^^cj+zGa9^q3lgN~nGlAG(y!+wcUdeAwy(teE5)SHCu6&tMK# zg9M6eP4EME5%QCz^3l=qEQPsv5wv72!bL(h&kH)@E(4w!RQRqc%mh={;)81~b8NpSPj7!jWALU;7&HwGBRP zlLKG-5xx?ZhL3dtUjg6y;s&_Tp1gVRz?j2u7zC9RC&7Acyb!LmAEDKQ2Wh^bHd)Eq z5t_FW!IR>e!-DpM)mhMfpe)cfc_^~842mcs3)%`RVH1fEA&8)q=@j6@Tx%1ZLEmFe z1++j=lq3(ZtAKHk*fu8|EcS454zY7aTlnJW03tYF2w|BoL=M(`A(rae&#uQp=AE-0 z!c2=3bM<}j0DpymE(4Kl?|Q*SFAxS&%JB@nMa^RcEjxf5N3|>(L=|Nm*_9y7yaSnE z!Vwxu)XLv5h0&=NIL-LWu)*CTtHFUzV>rO4E8%dHehv=wWpH?U;6pGgz#)030S<2) zm(yb*969u;=D`tL~nB2{_0E&d6UWPkd20FTN;5rW<*E zbdZwNh(zAF$2^rKZyrx$8P>Vv`d?Ls=^8|`V?IX&P>u}e@Qg~c{on{`q9#8ip@U^L zIferh!@_*ox0B-li^!17ZJkpBUl4DD7+(X6Cmy+!Cuk8(uE(Ub0>}};0C0+UkQBB1 zUJ)->*U(pyx_)$}x_%@?LA^Y6{V1cZ(YdN?SWK_3Q-x06S%{0806c2$>a5ZS5q>Fs zSH&9i@g1Z=QKhe>lU?Pwd8vAx_EuY1D(iw+v8M|7IkmZhpnTNkJd!ygBvp}vRs8yF z4g|nN--!aW*874Zrtw>_XhjMKf=0G94=`;WA(4A;4fm)^BMs9{R$r>t*9*y8TrR^0AR2=0MLo} z-4O*=^t-V%h$yhiLbH(vKn?}oafR7{?9AiomzKm-1jd$@4)cuB4T47tF(=q zvtZ^`c2?sQUVc_xT6$Q$(YjJhmMX72qm|(j_4!U}O&J04m8~fk0wLleGnVGt01F~) zCAOG!vnrUGE6BAfTOu2uk+uco0;q4libQ<)D(x#v2iD8ezKd3oj5~YLcK)OkI?-k! zR+0WI5x@dXM8@Cq3X*q7t-OMCm4nU3-uX3FkiK@-W>ZH;%f*~WQ7p1-1Su$iU+JF73i7O%z5an>Jxs|=)~0cI^`>@4asBEZpQ75nF`Z3 zGE=F-%v^@V(mH9c`k?dqN}F}9wV|7$E+Vwl47tin=zT@|1wMGr1kOzFcs}cNA|2n? zn&b)>OpHZpt>lynfLL`-FQp7sYE0GioL<`0G3ClR%_U4Us}~~`EdV1tSDoxjfqf5n z#$?J&_N7C=wJ}+ZZcG+P`2EjQy?1_ifxAjiumdc6dDuAT4jEvVO%Yj)TX={Sj_`r# zXq!)pyu~*UR|}n%NEK$*TUrzAE&cI!>n#T=ZK(8vZBgxySvE*+34B=DA7Dk9YPyu! zYvATZ?UR{0i~EchFmV0gWaTX3=K8eH1?0iG>h9ZIpL!j!@G;77xe^)}gXI!{o$9Ov zP`{;DE+7^4Oqtw*VChU;AO@mK7mC5E8(wLa zq0ePvAh|wQukNBgL1wz?cmdRcpCUjr6%xnp45~m3&+2bBWBojc+S`zLjr_ z(CtzQNPD#sanE|SQaI0h)4=jJ#pd_z)e?CXfcLM?6t~3+;%&TI>2sL?T;Ho@Hu7?( zmhn?tqBzURB0rH+g^ro2LYh-)vYeUMa$H>O!>P=rGt^ZMD$|DqR%{=u%*aJsF?yBO zI;5wg$otkh@6(fYR9lfmYH)LHs3%kG$B9HN5$11-IAr};kF0vJ{xOaF6+WySB2Wz) zrV^Eug#c28^OMeL(D&@aW+h^&pW!MmnRHjQf3K5H9ajmhFP(HtVahl4@6&O0RCAMV zDLAh3btWA}W3g5GrtBcBIO%X!4d)CbSfEFckS@nHHNI^xe<3W+FDs`GW$`Mv#sG7Q z$sO*{R(zOCKD-=07R1V~E?QC7hl5|~x`S`%Da&76u>dIWLqVIrtcFK zmcc~NVXw_to9wMHY>M{0!@!0&g$6+7t6B<^2egbouBN;12j?O~p#cgyq14q}6{e8t zlWy-}szt+lm`d)JZ_hzot<(k3)KrT(1LzeE4>2xe z@hn;uVh!);^g?@2P7iT0DttQ{XP}Hb1e7Y=xNOM_x9w<9UD##f-~cKt7Vb!9Quz40 z=B0wd;c-|b`kn-_oMdr`dj3jq01(C#5W&fYK=vaL!{bnkl$Xq7zRiVO5y*wrkAouJX0=y(k>|jQRwgD|sAOLSL@t zS&wKT=b_JEwM2jh=&NCM=b=Y)&(EdM!?lW57$Aen13;1qK$p|Ql(XW5ZyZ4%U_!Vf zLs9XZ=hvp-v8Vk~K*iOu_R-ojZXckp2Ep~vSMkTe94U)4e z^oxYVLyt-8dFP?u+|+MxrPctI@+NM zPo!J#TSj_r&bx!7)KHheXgO1U913o zBysc5#}oxYJnOFky`L}u-UI5Puhw(aTB(={XDl)2F-itKLmNTaECqBy)M#rvCu&qK zZh^Y0mmm+i9`aO#PwC~-!+}r7c?APFR50Ex6aeI^!7uPs-0m{is=#>}s8zRpp_ky; z4#->j=N{sCdc7xzqu|9ND*?(Wi{ts>ak~~blr6wVf8^re1roz~fn0SVx&jWtRCye# z^&tA5KgG0^dx^Rx4q^VRibG1JL<&_TI2C{?<0j8Jxr(_I&x9-CPAii@k+*_7nsAZ) zgb1OheKBoZ6v|w!&)I0SM1 zigAcw`Uc>D^>7X!BH364hvoV-ElXbkA65@)__?d{6Ym&YB|pK|zLoq$6!r5MVU!%& zN0HXmXur(*W@vxyd3>cEfDhumB|ncLRDPsf96b5G+V!@%TnR*(=Sg}6cYWP@B|dQc z=Xru)iZ28{rhFnKz25=md6c}@l(WAk-kT@fd%}~OxIs)kHxOd+BYEg!lsxn?paJ?Q zauK-n{zFL%!x_~a=%WZv1byI=hdy4jdFYD><~VzwOZ(iV%oXzaw$yd)Qen-dO#7A z_t1MlWAkami-Iv}I)&zdei@h1dyY7+yxND)26=GlB~c7!mFP@oii^IHEAvj#8OfZ{ zTo<`$A1BQ1L>5@1Ur5uHAmF4%W~qGdOiN9OSz6_Xr&6m%mexY4ae}4wQ0iHMRGU!h zg$ADn4y9g;6pNiudWFWo=RiZ-sh{1I zavm0yavm0yavm0yavm0yavm0y@-?t% z`MK$Nfdr^f>UmME_sitUet2! zMJ?A})N<`bE!SSua_vPe*Iv}FVJ~XA_M(<+FKW5=qLynfYPt5JmTNC+x%Q%V4STVb zYcIBP?ZsBEz1YgN7hAdZVk_5PY~|XEt!vnedak{w=h};UuDz(|+KYOwy{PBfi+ZlT zs9(cg)N}1cJ=b2;bL~Yv*Iv|f?L|G;Uet5#Mg1D~VmsGfZ0FjG?Oc1Yoog?)bM3`; zuD#gKwHMphuosP7d(p_X7mZwd(a5zIja++y4=M(&?AI5KTzk>DhP}X-8biO{b~keE zMI+ZUwHKXSd(p|Y7oA*t(Yc1bz*(LgP20`27u{TY(ap6N z-CTRo&9xWZTzk>Y*b79;t{2Sv#XXz%bwKum-tON1!4La`!-tPPfBfV}KmL`cKRNoX zU&qM57-M9PeCp#b254Uk6t|MS(d(pfHhwjHA>Wi_TI7Ainm6kR78lkYBk;@r_XdY+ z`?x-`FgTu$MrSw@j+1(*fs5w(z3%DJ!T4AT<#XBvq%XdhoP|Q^3{5Aer$_wuC#r5& z*cS`-o>@_;hW;;x(~G0Q`E-22TIE9F@Mjn78T;z(@$=_0NU<ao8k)*ruPIoBToMy|iOUew=E z`m=i0!{Zj><%15sz|Hf3JWo#=Vz&5NANLj*>91bOvBZ^ z+d79IH2J<_At@X|bsIxyw2gzm2M>PWPVx5v6}D_~-M4nY<}G~W6HkxVZWIeoPbZUe zzQVWTJ!^TH19lytZjoaFQQ&j9{*qtul4kfmu>Y)kG5Jo?oLrtAkIzu*{*+MK9Zk*DVCw;22SYu+ClnL{R&OCJ9=Teumlu!wAv2iTRlIDJ;P^+XuI8kSBmF$$Nd%2 z)^UiyuiYpc&VHzNvA7Y(=FTIy$@1-iX~=51-ohkN5^Ql_%@|XstPf0^XgRjP$X4nRw zE2IHX*86-ohS_;@cIYcYd2e#Wl7e(9<_QL~V5KlbxPqD8C^-6?Is8Yh;glEA zH`Y8Eadp+{aQ0HDt{)o*ne~SsQy)Dy^fAbeKEnvYN&*ZaTuLa@w2p;RzudTUxOU@P zG~h?H;o&cUs<`frUf2PNZ_&($8uE*Hqed`{o||CH!2@0nBi60OBkA6{fd%;bwlKx^ z&uJJ@BsC}$@ob?s>W!XXU_Rip#=M{~HF4r+eirIRdArE(X0sW1euS z3yI?H(XNknwg^->|DY@%mAQ3Ts)_iadqEOcCBn?Rf*0$(67ULJC zLaV6rH(W^+%_W^`LE7{=NQ_Ozpgth~0tc-TQkEjmNz74c8-U=0GiqqFZ-cP{pu$tF zhbe+i751=FuaErb?>f&X`POSQ|GI@`{lht0&EbS{%CeFnPPs8jzMcoLfC}U zBWYQP-U)S|Ht-K{I(!0w?>&TxXcRvN$1&~UCpI>MTX_d$3l7=`PZ>Lw)~JOBckcW| zDG?3kI;Rd1LlXL@`CHrvtlI>VPkyJMOamw#0PHLJf-uf?B3WmE>S;rL8=~g1f%+jf zh1g)LJbANe;-ynldRGM!H-Q4lH?2^{q=@fqK}AkZT6&R7%=a$51yQ;v!7K9?Xyj8b z?Lka9wLbZZ(P9~Kb`vI$Dk%a)*dBNe=NZoBohr4VxMM&V%gl}SZC{+>N&kD?jy3rML zC~l7ynW+V?HiuJ@G-!p#T)gqq9K-1-@$5^6XD3MtgE>K?Nlw)eW%gkF;^hc-8GWjc znsDYNFQ%g*VhG6v%yk&W9AQ5yl{?%Cej+~IGpD752JR*NX9VZ>c$7RFUA%?}Nq-+( z19a)V6D7mPh%3kn3038H?5_wdQ7;53Or6UOrZg^IdthoY2%-Pb3F={81kXVgr7CeH z5oeFdC@D%XS@7kp-`aL$Z%bI zfWX~g_~i&5=t1-HA)dHcu%84unCp+aozU{gN zzIIhtt)!y&&n#d=M+qxhn}>){FfPRf?vFx9iHbWL-C+y%*WMX44qR(-D9@#Q;W(;H zYzd$<9G>SkHliX8$~<#=A_56Rcv^#igb<#r6GTrqB%nT_*D`2|u9GzwM$npw7O392 zfv_zH$utpUeW&8r?$VRgX(qKzTuhb91jFim?OyWi4V3#E#7W%xTC|^u9u`orJU3wO zWFb593-I3BVE774E-c3j2zm2|w7Us;{We5T?yS=jm4wTG4>AG^OyEkCkrx~0!|#2l z7(;!1&+!O!4*EQwOC%2(Vm;z;08r>cf&XwAdL0&oe4?kpGUZ~>Hp)dH5=Ci6-CEt{ z{8TW6VC$NNPof2ovRos;BFcbuXs|vDus(}mRqG1>4YA93QA=}clHtgdHV+o-Tr7k! z&~nA#>M%bum`?)C_{^Ay0l${wB5@M+($bXLH@3oVYV`IdM|u;XjR3rcArVwZ;4c|eR4CyLOLMnOZ;iw=AY z4iV>ChGys1^%tRQ-8)G4;UjW6U3_6(yb4{s$|3tYHoq#+TfHInJzgfem$NaJ%X0v| zvfgH{xBa7m^=2zD30Xz>X)*0@<2>6R8V7e-wzuGPx5r};mP?#1LVZb4+Y>0tGM#2`;Tx5jzm)~Kgx?9A_o`^(9 z$SiWnbP&`82ZT(xxYWXdMPIEnaw&IYze11*sE)6z6e>+m|6GC~z7tncps|MGig9>) ze0hp>VseHZ>+{KMd@-J!fem5f2PD%#C%sBo9qw_-{)+elh;w3_TeY!|ztTW@*>KJ~ zo8zl(xQmCPmKF~Oo(@6rAx1VJT@NvEbRnRa-GB}b7l@VW)ZDBPt26P0T!(AuoZx#g zHb?qa^1bBKgq{V+GQ`j6=p;D>%(G;8evYu+`0T~qyLa*O5-*hj$>lkoPr~!bg|zuQR;_W@IqeD8bb-}|21__cqbgW064ZJPTJTRVFnbvymN{ku?x(ov>`dtC7P zpwT}}_Pfd9gHAGdxVziwC#CJ}QqtP*^*XJ?o&7z)lHb;s9`yI`_Zw*2PMS}W?}YN5 zPQTwt`i&=hjfd?!{hii>M!)S}!;$pA_wn&z)K2d2-+$QY`CFpo-y4v_dOfqG{J_y=Rx`&Nqx3k;q^Z_PF@tvgI*n5&R8~xi!yR)|gP#gXJ&SB$W z@9?(otG&Owv$ylZhaJ@EHJ&Jfon~WjxYOB7cK06+2A%#A#yCXWzrN!^=Mg%106Gjn zvF_pLgz2OGz21|gyWdZq>_6-$ohO~aN68~V3{;ci-I8y8vs?o8p4_2)eB1S%B>sIU zihudnU{Sx-fnc>E;r+(mpx2;yB|CeE`$=c-es5>+K!}~R9`r$(!v_$lm3vPXdgnOa~vlonk= zX<2}2;p8RsDF4+hFc`U04$Uy3_WEdedO0F|Y(SbxL1CaZ^&2rl3RltB$;T*zwR&Z^ z100)oz|WS_iZ3G(F=|4ixQ4(j-$K_9qH{-v4sEP4YUAmA`3pawvf5lQ4 zp@W_WZ-TwD(VrfuSix~=kdxlwMGTjfr< z%QQBQi0dA3CugMwM%OD1FuhgjRJz#B=;Gg2rD?Sqc)NvKyx##gFO<9JqlLa2=yR)# z1%fbs6C>dc17Rmw*#tb>A}Te&ST(qCi3%WxFbf`S;MEiiw*_0=tS^)x{-gux0jV@P zDa}AZtL139;NKN%VJYzNaIL@p@DRF~-_*brF+N8|oq5>+E(18-OS@=%IUJu3kqMy7 z1H?A*2MHFOa@2nQJ;S;h0+KAHY9V@)exZS^u!GJ-#XfR9Kq^h*fY%wuUF#2@9iNPz zzxY~mO@9#wvHag(M9{t#m?VfQUwz?HW}N~^Q%OTDp%h4>yC#(v)zifLO4dRTVQGu_ zE{{&J<*#wEn;_WY#(JyMBlY*$X{Sq+^uy7?Fd@eXEdnm~;T4YawU0 ztt+TH_rfj>(5~#R0N+)Fprq#tR90!eD?7QbUD<*CJj?@vRw<_|J>H@(KoV$4#iODp zT;^NYQFVJ!2`%ijI$vNDSr3tT1YzzS2Lr9F()<{9kX&Ctb$h7nEV+(hN67sc5fR&7 zN~}`O7%DOPqEZR8vXkC6h920o^BIy?dQTNZ$4^;wQDGwMZ#Kaj&&S1)9)d6)8f5 zH1*`CjS;nI!JTm}A`QtFg1g7cLzPm5T1lZQsUFQ4qZ#n9O0GqEj7VmJhBS?=Elj~K zA7il=P8*HDok$Dgn_7CNarqdLdKNR|i5O{Nbfud2imqby+-wC!7^!D=B_gL?r7zbC z%GN3=txSn8A3Uw;n_=*!nm%F_HknOBMw%XndSdHN=h+E$D-wp335YRYYy#383>q>r z0T_JI{74NR+lG|=(NoiDcewK2Z2l3hDxl^_1Lv?&~E2g z&U33|EmoO>DKnF@SnB*J=B?;%JiB(ojUhLmc&I#Ui^X7)BQrzW5V?9OVZa$KCq5bb z6XYsof7&bApG8s<*&ke|zi^&Mcjvy7VM>cnWPdRDyk<~8<9!;Vm<*t_*HN)C@)yj> z!2%!ii+77kcGyeuV`Z}IFNy;*WnDzh{kC$^S40Zs-dy6hzcy@7!8V6B8DS)<)wdx}thr#I*n_OSVM)Vp7VE<P)9P7Bd)bZ6IFQ?BkfL{KYf7g)4#n(E;{5G3dixE&~b&7gLghKvd;nJhKEx zz8QTvl3;kXu=nh6j7BIC$#v%6XMDPp=^USfFC zQWj-lbHffvp>mDP7Y8hTzL*Jq;)N_aZE3C22apwn^a19o07(~*f@blME+j>FSsMPn zTZES#ESuY*CQ=2o6_25ZpAbFS%v$Hw+uRsi?{=CTOSb-n{Is#r0cb3>2!VWlTu?@D za#<{3k`0{FW*0v8_Xl|Ba!H8yt_zIC4S$4j0j|{OF#Jk*m}4WuDG<#v#xQvJaaH?? zqw)5$wTVo|d>}33Pbu$tPHvKHP8vLS!*MabLS~2;81NfYg?W8)hR3zkqcI{#vh}E{ zV4HZjDq8N)Hh%OlKNJSe4?e_rr;d=OguDhJ9|R#!33tH+_~|R0MLpHM$;R4E8vyB> zl-R-K)#&0Savu&SoUq1nsu?oSS9X5U!SLev<@aZ&8<1}~PP)7n1ZRa>m0X!}L#Z%O z6w<=riNd6?y@{N+IKE(Nl{-{h$RH;uIr<92yW`W*o@|v84|_%2C=Koql@Vq zm9JRI)G^-v`RGja3V%?msBCnxM|{FQfL)48RCJJNpB|MWvYydpO3X)hKT;MQPTv@E zJb#?(ifob1;E!6lmAw{^`v@%2F^KCt3>@c%bUXK6lJ`@k02G_HN+g`rb(jmV{n2x! zC--&yL+f-h8}aE%iBn6mRFJgF6*6g+pzNN$Le}&tqsJ&QeLxzL*ZrX4ua^I@V-BMzzvqgqM9lt?1O7S6R6|Nh&Q9!DwU@i2V~l zj3g`UQ{kt|mlrZ;XowDS4BS-yF~uE3c*=szZaUSPCaCv-D6iYL%0Wk=r3$0H;VDD8 zmzx?J5)~B(1@7l8r7KMhpaON|X)#}c}iz<>2Sw^D{iq#Z)b5kfV+m5#bAnEgfkm&g- zlSgp~TFA}^=jCYcd6cxz9oul)7ShNg%ISvT)Gs4)-unt?e!n^U$%n{U4o<1=!h_0S z4uYkydIe`$^i`$cOcSdBdHl^9nB3Srf4)Zl7mb|y(neKz4zJnBG=h#K>y`AJ)b0y@ z);P$V@^&Lpe$XBMr;-GB{uUE^H*n;uRJ?;cE0!bWyubF*=Z#05yGZov?|*a;u_LwW z@&<)>cN=?+`<*^tl^S{sn2qi?dX2{@?8uclfER@~?rCoL{o&~l{=IZDI6wwnhpj<2 zx(iZz(C-X7dxtE>x5#`kAz_)qfJE<|e)7>lokhrb@YTNGc_>BnMyv52KA50EezbED^2CW1LmQ;Eam#lGgO-RHGi1P>kQFqPMuhf>n+R?ni}5c1T7*i zHEn|}*wPo~fX_ATHRQPVqV2r?kfnzTA56#2*~RYg3`<*Be*dPrEpNsbdlQ@taM0j1 z8#lW|t!=kkSP^>s3mtNX4hu@Z_0e*9Ye?aw>0uFC46w$X<}hstrk<0EvR`z%5hmZ{#T@XhL(y zg)VrB$t6!%LZbyqw{wO(bdyxQbSpcJP>E+j-6dcq>C|iUQ)<~1g176Ie+rJO5YRMS zWJdE$j->3fOe?I`)#pmtSYuX~NFWgjlP? zC-Rt84_dg=EQKrU^a>?aRSbP1r(#UxRi}vu#gLZM1hzRr$BM=Dj7c$#b@8~LTZ@Ye z&MHsI4xAAsjINnF^y1YE2%(%*bx-VE0w549Bm+7cNl&=EZWW!B#@3;DrAkRDf6N1u zOre%jF{Uk4-OuYAL2Xg;A z<4Vv{@luAtOz%%SUa2VgC+*LqLKxO_yKfR0VR23BR3ae$;SJ)2chU?0Q<(aak1-ARm=JAG|J_CDu> zLn)XW(S^heVZTTFy@$IU_%iSwVZ9rL_I|71xz7UJ!PzMc+6^dQeQFovWKZi5)YOue z%nFFUc7tUp6EMGpNx%f{5 z8|Xts`zyRaig(N)=IM4>j#{$n56?YZIxBlCP&&BKP4{4`1uPVgs4w}hBu}l$`5S$5 z2lx8C1Wt=Ehp;iD`PqQN1sA|lcx8tJqUw*qu9xa4YYmJB7X24{6#yn3P{dgB5h6Z( zd_s#BYKYCGmexoF-nz<=ZxL6%&{>e)RzV>+h+2F}0~hZ}&ZjR*0_Jpb zc|m!dD-_+mL7&DI9|$@($Ja} z*4FUy=J@RR^zsCKqTh?;`DB`$OwLBO6~m}BgJ^;QmJMhyelChjdK=G@;_c-1$N@RT zri0^vAdmXEz;ui|r_Ooy^n(vR@O@FEFhCCq6bdqqGF0- zOOE7JD4yo7FNONq_#)X#0CMSe@?rv-aZt<%M*8e0&WNwgH>zbD(SBMZ?h_etiX7%e z;)f~9?OJ@44uCI7<3aZA$f8%+%1g@1T#7(BCZl^#rYGDL5w-bkvR$7X?>9={76GbI zx}wPhsV1vmC@)5UPitJLQlq+P+$u~@RWa%)9%)%yr){^lT+Yq z0+TxxDiZ|QFwQoWzDjD!K*&AgN}i7*J>VmWIfboCO)6UR+2nG1jOdG-17hCpp;#u# zPcL7cCt&n6sk8T)mjDuhH?fHnR7?sSd^&?g2l!V6fDJB2IJ^A{XS$z(lnEs5=Hv|0 z#?B!LBGfqWnvesi;Hfp+FCK zm*&-)wCg;-^Gr@ht9qg?bfo3wm9x&%k#)GEoOW{_s zsd(#@O)X|@V$yXOo}Ae29|h+Ro0I6}s#MkZOu7phqADgo;=U7Esvgo+Sq;y{6UNtY za!|>6rz}89+jBI z-N>_BZ8)|9VZWwu&DC*nO%#Iop^|k_Xp1y^ zz+cB6d+m5r&AxE6G>EhZfphB&sX=gkFx70x?7B>1yK|(`KAcn*{0dhj5&FZ2k}_EE z6%;CV)O-`U;hPt^OW=_z3hvj@h)ZiJ;a^swmxXd+|0|M`hV{3Ivuz;DZ^j1TSMc`+ zV#vip=j+R@{YH%Rn|_Di{L8=Pcl@1x>+k%#{I0*-@BVxIp1;@c{rmjBzu)iw2mFD5 z&>#GV{Gor?AO1)Dk;xzRNB=Q@>>u~X{|SHMpY+@QE+G;w`4Re(%Y06nt*?!`ZZP!h4{RfY7ZMe&`?C zR1J&+bK~y_yUL^K^zs~AfVPLq`B=`}PXgy2t^BukH2H$T%_VB zRV&`ZAf03Tptg+!g)RJlvs>KU-Y#xeD#dQOT951M^wEUlVTbXH#Xo{$=&M*5A04l zdLgsXMRGE{fbTIp`+}|rqSC0xk85|%ZT7oR3n0l zDe)I{2yOzd!;Yu86>vt6I2wjv9xiSHhd`c)P-*-%~YaM;Q0czlZGB7$pZf7iEF2S!Ff1BB^? z>>PKDGBL;FYsFeCTJFGc2RRH!K1U z?dT_(h)1;yWREKy;ido35ksyn70*LKYKRuBLJ}JpfONS1&ol?(W zFe8W<)lD*$i3qIsF-YNJa)ij6_>nq~$ZKwH;_{=Kow8tFMBhsU0R;_hZel6G3-|?i z1=*#8yB2yMlY5$JYY`~DEfW+#5C@uD`_!&Tm)_bFDU~csN1Wc;V=Kh1|0EEsz|uqx(r7CMs)F7Q4y-?^>{Nu@O#`*Wd5?qBZulC9mpV{Q zJdZ)f9bm7pfcc?)vITT9WYAA`^vb(16qD}c)o1gs zOiADP$^0wWP-z7~UA~;9gjpJcJ_!=`bs=ElKCu(gThZ~{&~$~6)s)$pq%oC^N!hlP z9a{IbM(p(oH~VXP!U+c%#>!SgYTBoc1tV~$fC~bym{~VcEZmE>4N(z0e)g?41TFaN zw)WPGsLf4K_Qqd0S5~Y;HNh$$zue>r|izvZ27TR8#DQqe%XePtP%~ z!V2h#7t~7s$p?fzknYB#F)pgzoxnGoOgXQJxZtZe-uTJF3K-v1L}riCv7c|ni#uQd z4T7~dQ6vE)k{`hYK~R1GIpgvc?H|0YT}0-fT}6J^+ckDd3JCdJcp-CslCX#OOa<}M z6*|IF939)p?9`pRz*UkaUMQs^4-$g(i4>Wz6NKLXKlZ)^u&U}>d*7RZQ3!(=Qmcmu zgfPS~Xc2>iAr=$?8I)RIdn1Vw3kee9v(o_!i z{vQgpJ$s=XIlBkAj{1uvpJCG1sH-bN4kR_?C=})n;?diF%`}MLCteOZV&uA8bEeQ~ ze{;d^EvAHyVnig|q_sILe4c}o(r|2NwMwuziilLwyN*PUln$fzQcEW`IuFmnkl49J zfiAlwIbWPRgYWCKww&3Fo1INI)%Mt?-y)fwqUZ~i#Up-V1K2EOl9n2GPFVnviO6m4 zuJT)mbZ1zp^{z5rKPlTig)2};*{Jp_9LC%M0eSQYSO^l$Tn(rR2G2CTb;#`bqC-W$ zSYL@L+L2}BR-c)O9e+^oe9+&uw05MJz&Ab!g6GW4SYoi7y?#G7_*$gd8!+&`S$DiBM`3v!Vt((f+;Ta-Q1BAA=VIhQTMAw zn|AHh-6sQ?el7sa`@92tsxTKBd#j8Os*H(rKKL|P0@_8WKLAVjuiAf z2zefaJl>*@stUhYJ`hgTk^Cr)(%h&^->VCky;bb2gMQ0=y;Aw?2dTVx$1G!;?myuU ziTXgJ3!o{YSMj*3xU%%8bdST6Q7d}n5quc#$XTZLuPZ8pT-SJT=O1EBaJdsK=r4AR zzN}oM7uJ_DbVZv&$w5c6F8Xd*+TR!nIF!u=zm%9$w51T}D=NM`M( z2_>tbV6VbB(x}l!GLIvk=ew&Q3WOYx6?QsPz*v1-Zr=MVzLip_WO|AZDPU63t<+hn zFhDJIGGAIaLd*nJXtpAp_3mp&TmW{5#i*w)wR6AVx#4xh7_Sk!7e#UA)nfI^fFSeA#+ ziTLAZxn!*ZfUSE&bq^^vx&a~UgO)g8;8Ux8;9cFEy-?IaIEe=^WJih;B{q%arNG5D zEIQD9LXTv*F_;w*tac=)6!c2?=W?(a9mhB@`>`xpm;{#b)5GyB9& zBc{JBPk}IOnDtEN3oToLy<~HT#w*P<6EYVy6Zu+TyRSr8u{>t@hA=9s7X0=D0$NMX?XdUaj2T zXh^J?dBcekez2!3gv%Klf?7{j?12l-jZH1BMorB@`8th`w_?rIzp!$J#~wL@ucM(l z`eQx#Qjz>cn_5EQ3|2$fSq zAt;u|O0g~p_4id8)!@D+eEs-ct~Yb>en01RnE|;-ZxDO|2|o78r<&g7?F&q%5BVdh zfDLFHxbfmcGl~cO5k-K+9BzCUdN#i6TIDaNhi)A=OX4d6@TQ%lYIoxO^O!W=mF_*+ zJ|*2Ep@cq^b@1HT_kfIr96NWa^*r`e;zN0ezzUA+sC>;|R^`VrrIyxBvd@!2d6l2} zd^HzZ&+Wsg!{H%~Lcf^nFD=G~nwH?Jn*v1nW^l`1eD(_8eky@IP*!C?uij+!CH^f3 zoOJ`^_@VgqvE(C+9U(?A=L}S1CUTKGPGDzngN4I>LxK%&o^LW_t7)jY(hPjv3m@)!7qkLqa1YN-((3}i zTNePT;FpR)R}`j`8u+@H{&E`2$BbCzXCLCJ`GX4|=)N@Tdfta5_zLg2mLq40eJ{67 z$h(~Ppts-*{4#bs?9{MU$WtsgJo$yQkr~(@@*P9u;MQV!*2hV>r?!FpFGhj0lw-}8 z$eL6)`AGI-W$Yx(IHA77DYqJO=j>Jjo}Ubcb+trUjcb z&bA5)QM;f{wIFE zg!tsbL~GNFn4?^U)0`i=1~Smpg7ZHgpr^DpViNRSa2f&pfUvCINk0FHGbeohi#+ZS zJRM}v$N(Pf;2C*>Le|n0)XRFU=aKe&6NAPRXd@RXT2H`%gwscSLfZ39*hzC98O$|y zAx1G4EvXx}Cy7LxU`yBv9rOz}-$?0Fl+S%z#1AYSuX zz#7js`6V&XoNvA44^hU(D^64kFZ>+TF!e{@VNyfB!EhB9Z0HoFj)kVW*^v%qoj74S z>rb9)^sld}+=S)MP3wLoRIWSvo0eAWpchs|)36n0kI!!ws5^NNc#!jL~R`c19$+HMf;Be}?ou#n3gjZNZBx``mj+Wx)4&>sPX*hWTVuN3g zm1%n;);}p)^mKQ=oOVd?bc60OcovaOdhCy(EP_K8h{G~M5^%)nJeZxoPVyCgU$uH#kb$N19k5m&mOTx;!w6 zoD;ZdhQ)F=t2=wL=^|VXs8_>#4ZOcTGih4*5Oh{(`#vpx8(^o)p>dm- z9o0$(+*Xb^k(YYB{U;Vs0#HLWCy9rN4Ga_4GWS>m4;8oPp5PfwJ9@I><$^MmwX~iA zt`9ECwCN*iQ0$VQHv+eq{SsoNjoWsDWu%8N%j!RFHsqhC^kEz#X=*ugs+NbBFx@pm znLqY^b5QCmn4xku@r?^qEJ;%84kpiq4UTO)(frF5C&PxlA*?EBG(7{OyMsf~6!6y|Bb+hhV5YySYz}``hTJ-a` z;0UG9hx?S@wL~X$$x@&FBDE6_vKY~hgmN~)N?4)k97_zM>uvJI$~&U z>f1p@aXwF#(P*~p9>ZEVVO|rL*rIZz7G~Z_1M7lVpKXS;4((BGpW4PqE;SiY8l(B# zff}v17*rCVvS-d?5&Qm9ezz z3t<-l$c^$X4Y+R@`?SGjn7M4*5u3*0t3Zu8-y3H|@)G+6coP%s_24w3FArj%H-T zMY)cFQ@t2v;TovJ5~7gfs(=aNT3_hi;Fvy;7p#Cp7yYOVPGKCz z1VFry5r|~P0o=xd{~cS&`5j3f#njK-iw`sm&|VZJb~TOXtrhfQz+T2y0j}3e8jx+GBi@B5HVU_L8}Ramm-3rm4e~d zMmerD!yN$FRndSU`T_QtKwLGRIL~@vHxYJrV7zEOz}!J;ML-KY;i$bSt#vWSjt8`~ zL1I3$sSSF}QXD`aQeC(84sKedwsE}WLX)WmG@gN)7eOrN#AY_unjamqnjX^j1+ucx zHl#dBt!9PH9WC`k6R2(9@iKo$0p?^#q0RXZQwAG%8HCP^Uld`Z?B%S1e#`D~ zGK|PWhfwAIS}j3k>WUz;^n17~7QKR*l-YzWwSdQ-BK>CXP1fC}=il-Q-V%EFx5w=s zwQ6QkdEE}!b(XTop&@)}a!n|$U8utbwB{G)l14WPlL@wCO;{#?$%ex1osnnBx7N)Z z&G2wY6Tv-f)m|KaVM>{~>9^39>BmmKBZVw(gJ-zuz4w~W9S5&LGK$-Y&Z^7sD!7)p zt!n8eTW`dH7T8q?b(){nhC_>_+Y+M?b*6eOQ<6DDUVxLAgA;clU~46t3CKxn!gMMT z9N<86rU7^F2uZXw04H*WKh7Il>dx2T>*By;)>@t|Qz<-!rnWNyaMzt8W++K?`#Wl7 zP1K^FMFe8XnIqezmQ$%Gh*}+4MZ=-!fZQRMKs#Dljn)z^B-cW$$UbatXl*^G>&%)q z$#MY28?G6GhZ>rPxp6RZG6?S(?mEDh-UgE`s0z}I?!ZWMQuzSV>uEt0i^J!nOZVXX z$9uRZC{m-bD9>CD9*JZHo8is2XsScUg_Lfk&Zep8Ju(od#_CZH}CH!sHH1p=cz|pe*I+Mwr646(d~+k~IvE z(eX(aoH>R>CWMm_C^51yGH@Q0D*_iZcB}d3tb7=swhpmFL|@Z4hPGLbuJ)tPuCs;J z4<&1bpF<1dbO=ZnSuR{ zA2dT)TCqMq3;}cJn<>7SkA|$iJH=`%woS<&8PPf6>wf5XmgPl|c4~W;4at~Lq&au* zqrs%(9XZWNe0ai&3lmPX8zLxo_?+E+R;TkrHdd$asKUL{T;n#6j8bkmvQRuk%no0q z%h^K?6On_@*;H%2BqA9dj7W9_E>Uw5l(z_JEbL)35~pOO((e^k3%5I3xV@^S0au4# zu7z9w@)p`YH%FUfmS4~75$WlXdV^5XjP*PB`!wK-x5T{ZOk*wMjxwvm_E(*d!AVKm zYFdlvvqKFZH#W%{a{CTLZW%J1Z$v(yZEh3+9X@o)^W^Ku2|;Qt2&`3)kPT_?<%$?t z8uR5;Uu_wR*MuH(S-p@k(QZ-1iWMh>na$er*l{*2Z@?V0(dvx$GL4vs*5YBi(Nf_H zkuh@3NV)=AB)hk+weGx0YeCo!Q6vd{b`G1EoKC1*L`t-9<-|ETVp0m8zG%-;cp`hr zw8Z(=@;OILR&WF(Mv8^9ViCQ7FYcCE?a5^Qp-AH-_97c9Vo;C6_ti-zk}iq9i?Xt;?g#JL$>jDvL4oCwOQ zt`L`4Ro6Dq9HhsfqvM(Vc&BAjeRrjdc&n(V)^iR5mN9(&U;N~ahqH# zVwx>KHTGq+itiBP3T%i($b{=C9M~#0Z{1`xwVr@+3~inb3h57ccPfKURpSf!7DAZp zwZzLf5S)%~kRa^U6y=y0I6H)tB=T=ZPKN^xXS9OdM zpg4ud4~_^kYjhR0QEC~YVft10gvrU0L}({3MSO~>$yp<`vMG~?Mvq~Ao;PJu*R6Z+ zEKj6rTi6*b{J=}mGzv@>;lj+utSd|F34TZV_UIg^@Ul0)=^a)2cq;4@d=boAQ6mz) zcw5dXqAJNgki-g4%jpXjoI`b8ajTja1YJR{SU6-Z1Rgnru z<3z&AGQI2))4gH8Q_Z{7)S~ZZg}?#*FgfdG{Uh(A9jtz65J>sbEWOVGVu<)Dx0ca zPQhV^tgK2u zfX|p?6U_}gQu;eSdC(Q%o&_|A(k}--rupeGE4mN;@_yl$+YY+z` zb#)_I+|jqS7IIvkt1s9_QEuZG*I2302_>W#1{Q(&10gTIt?L8 zFakkdO}Q(~q+uI%(C@^`yxfWuu8wO2;Tt4}1MtK1D93a9Df95T)6RO^eoEZu3MJ5tB;h>g-$Rnz^~vx=7DD z5%pWWU>mVO3p)edumudjrCNvX9f?emZIhK)X4vIivURS{nrDk^oVdiFpbwvMLlJ0@~Of}uvhd=kQNBgrN*aHc6)czx~qajC_L)#&A|2R3(K4QnOv@vgpX-W_Nay3NkK4#EReFHocr?7{7x> znLsHPW{=U8Y)6JP1`&u{2>UBN$?aXoVRFZgb~=ww*|HNZUd{&&iwZTO4>=+Ur-vgQ zt~zs_(nesruN`%e&9)IGhzmPZ#A#@74lE8=c4V5%*P|mh`bDQGVOGs>dR{r-eD19F zjD@#e>h_`O^tM~(sFM|U`MS{AYv&B3iDN>y6F7T@rVCCF=?mcON!_VXL}p`Wwa?XY zU+ww)dR?}+qzvw|3F#W4YIT&$u2?8j$F;(4waZY;scA>HTe^t{S9!UmbJw3XP@K9= zWLDO!T~43V)^;xI(usrBIlYq||{T#k8VzYIsO^aN+vY46e3#_apOv}QW^yxP34|n9ylY-S|of3_P ziAU?q{_q2~9da5p8gWJ2d)9s);aB3av%%inu}wZ|aaxw*d50*r12w>=hujgz`3@f8 zk}n--ot9QOW-Zyxs|f-!goceX8eDTpx<;3$`y;fQ7XvW#EbkkxnpgzMhggc6%qno56&V-q6zzd_f> zYD&0WDpd`+a_F1To4qhUnw$ycSfjBaXg~W*7YNnaHk@I{({B<+SA5J`x73{Gbf1H4 z@LCGD8z?dMt#RbGMf>xk36!k`R?pNNaKhC zpkQ6DfXh=if`+-X(PGL3%ZNY*f zHX(3&w3fftZPjDf%!73@CNRgW&xQ(DMB-(iIW}$SE)3rj61D~FEaJ>5>713!=R0n0 z&|<7^7Y~YnAbT3loZyYFO?vw%orf3BoHO90)p8!S`?%)4hUT-nU9_g8fKb~^f3B5| zLrN#AFuT=!YgZ{Noi2% z%#GRQbTn?G{Dxzg^3}}5{a4xzr! z?p1IUU4f$u#`dtH!?5XXzQ&cyzkH#ulHBh#ZIw>7`rFz;<*3G1nY=DEQqR%LIp;5Y zV2L#PdMMLSbMs`gCJIK0(NX=h{GtwJPw~haPBi^7l@1AIdZfc@3%<4&MMF=vUsgbt3^)rIE2*dd$a#T@<6%{ZWnvVfm_11P?Jigb`$Cm0_mV5?adRO z9ZE30EY|U&Tv#br^5kKEkaJ~SyYkM^oELWb9ABQEWmsX!5?*0#kC>9*oF=9DBywm5 zwOj-oe-8fvMgzwV%Wj88Ay&9$4*Xu*T;X-k{cg<|gA?eG;13 zoyKdZT7PG51+kACWFJ5MCfo5hwKb(1cgVHk{Np|xP=rPY)hZI z&}IoFqLhbvLaI{G0z#gMK*ha1!N^e%R+GY_h9| zoM#Fma<9eQvM0sC#Su&`dPk&-fV@oeQ0rY`nl0AG5OKM)e<8C~d>HTWBjTuw|ICG; ze>>D#(8TgflWk2Kq87~MxC#%6 z%PTrU80i6&izUi7RczX}Y5S%fn|5x(T@*E&*6-Q0e($FB`#0g}G=3HMZN-m>d0|EQ z4!rEb4~ffb@k8?RefS|mMLB-RP_Yd^D+A6ct*=0a3ZSk)h6*6BK!&Zrz7-j^0{d2E z*a{U`O4y1FTY-HmGHeC*t;nzy*ta3WHela|4BNKjXJyz1?AwrG8?bLfhHb#U4H>or z`*vj54(!{JVLL8uloGZh!**cbjttv@9Y@n~aTG} zfPDut>;U$i$gmUGcOt`1VBd)hJ9n8Gb|S-0VBd)hJAr*CGVB8OUC6Kt*mohrF0^x( zm0=gK??Q%Mz`hF^DuKNc87hIj5*aFiy%HHJE6oxrk)aaUE0LiR*lUoX2H0zmp$6D% zkf8?ctg$lG0DBEG)Bt-8GSmWlEi%*sdo4250(&ho@Nx}lbS*N}0(&ho>;ZOoP-XQ` za~@d|$J{hOAgk~M>LfgYT;vH{=o#V%?yo*_qLscd&Hn2vKqTP^B(*sK)s~J2ifyQ& zbTs>xml&DZF+fyDlG%R{)pYqY};$`w4)sK*s%k3*|8V>vXe-6l2dju-L6VJ zRk9N+YiORCs5rz>tD3EdtzouWvihD1)L_qEl)IO#w~vk9&(T+2#?cI70b_YZ1!=K$ z8=agcI*unzFEk4T6aFD(Kr)iBl08vg%daX)x;=X}=};zUr-?_>Y{Q7Hz=ysSV%yscyK_Kv|jItK6T7`&@vaAn8f z^0LdoFVoKQ%QUq7GA%8?OjFC*R!pn5w;R_*!48nE=lZ@K?Y9>(0zrT;5!8t2c=sS9 z_?bwF+PZJkukEMui<0D(8g{hd11ZTw0v2IPz0xA-_JPs)JurEp^eQ8x zK+|kGdf}|zSSGHn$o&R-?K*5uJ@{t8U$NOdV_jN~;Q)Sc0ye)>!>igNCvPT$l#>+& zpX2@~LGF`t?)uWLaL2obg?Th%d2%YoaED4WGv`MTVv3#aGL4knb5lZ zCvjZZycH048#$~=XN=D>2qJQ5xMll?<#6hh&Il9|QUoI+LdHNuM3^rxBF<+Uk&brD z1`(l*)z(mC$kieVNT<+BTPRs*c`pPDEvtoKG+%&H1GIj{SJ1V>=UD#N0J_ITos*)& z_hxDgJQ0Jt>+}qZR6Ggm*q6sd1UapF3+C95g|FkujX#Vk-%(nQp-InfB)dEI30O!p z!)ks-e`szc=gAil^(!t+2w>?9pD{$BZ|9P=H+?g9*&e75=2tKv#kuu{ml^YGaOM@& zpb*vwtr>&42;D(Mr2Xj*;S0c6yC;WcigME3Oo|wZllW z*X3qnUBos=`Ri-T?8`H8A*3k~r6$`PH9<17e%l;Xa6lbp6KW>jCSuthA2e9BHjsN3k8mI*ND3 zN{8cXp1SH~j@tZ6SV5E7tPLSZYZh4MsE#DI;Esxf!5vl5a4Gyivo5>BQTDGpE?d4d zN?xpR6fJ4ZqAMIlhru01Yq*)AL#9TL;}%ibV0U@uwtBn9Q6vZ}*UR&MEuGU*Zo5c~ zY)F3dL#rZ3v>1^up@r@ZFT^~K;Aw%DF3QpUc&MYi{?!-yxN@yltp0Mapz>mx<( zPzR9jn(4D~xKRwSMV;r^Y%w2i?2fOmA&Y z;0HaOyAJeDuF&Nv6x`-VY4i>CyxpaABb0UC9)z+*M9R0`P_!*ZNlF@ zzp}n(pHOP%c>WFen*~a3dZKS9)%CBe+W&XiuUBf#&@26^z?YT!sWB<9Aa_AdZqn`9 zOLOy#N3)ma=j7!YBU4gGt3V&6Ua)T*f8g83?J09pCaS;}K;2)d7bRy#R?f2Qf~7`Q zwy`YpfkoMw1uD=_sUM9o7UyMU=L>vk=A)T8i;Qt95U6K5OKCmNF`&YqoNOi9X^Gi&1H z3>COdsWiiwnQI|47G)a?3YO+el`?bl`HoU@jfHtja~{vjU6#4X7=pSk$jr|+vU82E zD0LH`lZ}U#qAo^efw3&FV8Oy{W7P05!*3ow*2pR_mSjGfZR8d#UcNNvk%H_LV>;TE zrqsB_d5=o%rIbZ^xeu|mi;^-Q%O;(dvTE! z#xNs$8A!rfEy;N-dl9Q856LMLlp1ds8My#Gn3uaC6Daa?78fj9mYKU;$hIics_v}3 z#f!6t8;|A{J+u$iskvEc?de?i{Tr8y5}8~I>BW0X>5 znTwX?EGq!=%z|Zki!+yzucSi-8;eE}M7o6im~Xalgw@$2jB!MZs!M00uBbw$v1DoX z;+$;c1QZCtE6WO&3s3h_Y9&TvKDh&>E-J{0L^56aa1j1x_px;pcRJz_!EPKy^KnrLqPCs7QjAUP=K+sJfA}?GzfIf zgxw-~JQ)QhDD{$I%*kGaAxydH7&7C=DK(ZHz<#oLGZk&RMM#XcNWEd*2BOKS%!hEq7x_>xkq%@)`L7VHNJyJS)JElPdG z>fABLgNwckLUK5guiJOoay?izIVclzau+Ph$z7hEKb*~3LhjMR0b&A^5C^s9d3I`k zHkdyrHw#i=xrpo~nKGWuQd5jslreb^pxhkI8>5k&1!U$xq=4lg%gNVBAs3a}mbqj} z!MDLiOBNO6llAhA2lH}JjusOdtq3JlEiV^iZ&@~Yog;b_`1vkO+{Q9ahZL`1Hl^?Z zn$MY-=gyord1{6+J7ey=*)yzpd3tCv1{J^`kO8?O>@Z9gWJ3(G!>A}=1fVNSWgtIC zrdLeIxgv5ODM*5}lX#;5L(1$lCo-TKu^94&A|;cf>n4bd92v4Yciw^p5F{zaJrseE zvX5eRL}!~~|8YL!E(qd%H!ciI`L)YJow=9rP;Ztk;b+NgojwmlD<4@}D+W?i%(PTPoP;!)6+CdOQnwh!jHH?K zCQYA~aUayKIR><`yXQ@tJ2zvt%>>lOvW8B(27>@M`}+&3ekO-afl@d(1K7qZb*s?V(qUwF7A3-_ ztEQ>VG0tJmu6`hAK^`(>8$*`n6<|KX)RDI|GxwqF

9ah<62XF7y*ls+f`-Tp}77 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 ah65Q6WH^xFK!yVu4rDlx;lRnmf&UMvA*BNV literal 0 HcmV?d00001 diff --git a/DefaultPackage/DELTA.FTA b/DefaultPackage/DELTA.FTA new file mode 100644 index 0000000000000000000000000000000000000000..20537fff1c4b464b38b7cd68623f92f924192e7e GIT binary patch literal 819264 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⋙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

    X0&h(w)8Y)TZV?9v|K+tACVchMKAM)~DsZeMr@ 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%0Ah$Zg?u?K@Q51argpPJD3mB$Tb0UIrA#W8 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 !O-O<`dWp3!ZMv1MSHX+Q;j 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

    d(ymRUMYwzI-m-F&eI!SeoRMM7 z&CTF)5lR>r9UhkkVde-2mr%A+k;10IH}lM8rn2I~y6VwOzy0;?h@Q`g3_G%O&4$CC z37JJ@<>h9RP9cqB_&Qr2u<;H-XmAvsYqce}ZY@anp9z2mGMGoTDwulOw=YScokmvB~y=D9?kNcWkx|VoEa*uBS5(4h`pqZTaMj18$U%hyZFFD>)G% z*+U(z6?&tgL`1PZ;1rgSscPuH^!@Xv4<}6gP&=CgZgIl&SYJ!WV4l{XP7evP_ot>J zKv&EaBxPmk^-9F^%0oIo+D@Fg_4|wG&%ZN!eev2`AFbH2*U^I!7FPB? zVX^F_L|ImI=XiTQ-^cQx#Stryz{uFx1jK7|MLBI(zyIszh%{)Y#SvHk@IX3UQGVjv zCoi8pIIf}lhw!*8w|(ok?Q;vJauwMom6A`VF`@FU$ua3wT!(%8Li4%@8*}&(kg;p2J>I z2uVnY4vkDG8vOO2=a*~f?nfQG$o@e-FClAzP9uV^mN#@eVcWNtmeW`PoMmJd%C+UHNbMqE^GfN zZhArUsdHCHnv^tG_welI;qEfF^O`R$yg2gA)c6n=d(W_BLArp;PR*`q?QUqU?QAy7 z<9t2b10v!$sTul)zT1!g^X&OGqx&bM`CmGPM}_&gxVeO|RAtQ&>?|)YH|8X`Z20KI zrE7M$(p2r!ckfK}7iLPc%&o_dw-+Z;0vS0iLmfp)KKnLox20nBM5{MewRg6ZO6l&d zwzfz19k#V|v#~pB@5Rs!{)mox@k0e=-@4rnfGCELqXn9dkrCZZYnO^Ibez;*L)cMwLbzmAN??3tD=j&sAJp;!Yba9^h z4tvLC=9iS^t9UU%UV-6~(&0-NC)zZ0o1HscC_FC3({ju9opx@1zWx#1qVY%A+xcn4 z%#HN*^$!XLB7wqBE2tkjee=%sv)y@Ir~Uig=v;P$yVW5pj~H==9s$$}tSY zEz7=GxfSc&8#h{5MW%OOfBDag7tdc@sulTI9kdQWato7{h=ni}7!c{Ivc7Y-uJq=R zcYe8UuSXOji~ZfK4(;7<<4sM;sc7x%?H}qN89qMLR*0M|XP~N*6{>=|k;~tGd#PI& zWxZ{iZD?{I2-|uaQ~)HKltdYEk`}*iss9BI(q){ z?=d~q=71fUmB?q%C{gr8g`udfxo_lnZ&NWs%%j2r{CwQq-FyN<$o_s%KMUu}^?BK8 z9A;up-}OiLF7z0saY2FM{Ot1f6I0N#tJLyBoE^Nw7);1xA#{fe=8{C;JTTN&z;|2w z)+=+~TzS~pFPxcPGIZ_tCx89@)5B{g>vJUu5&j+_5m-BEcC8mLCdH)J}c-7cBqh<-Vd!c`_F(!(jm4aJXW5Ny{h*e-)aP zXtFPsL-NvS9yUkqFmbdzh2F}apclwP< zepZJ(uv;Nuh52Fyo|mREw+v5Bo$PHiD;eHa)~>-}VSWw=H?H{Xqh+i1k<%N7#wMnw zPoD)Yc4Dw5S3vP{^NHqX7gRU3v^G_la?ez8XY7j;3UHsGIPi9=wL@vMWK=( z6U|6W;ZnoAJREEe?cKR+AC_pnLgLc%%d1<4F8%uS_isjPv{-$jGE;NwJ3FiLC4vMj zB}H>mHM-o)G$MRlqR28B%>^0U0L!n4N9*~^4+V*|wZ|rI{`mZ#=Pw@J8Eq*_V+Oj| zI`~lHISfWD8_))cro8jy_;7Q1zB-NSZFSh*)6f0zns;8C^XkH-d&2c6zxn;IXHTF0 zb^mk=^7OLBtZ+{^cPwCvl*RR3y)D)GIf_)Mvn7fU<-(x^f^-lPNs07x*t2fU%8fg$ zgOf_f?*IM#`J;Phj@1-HNzbg;q^I!MtcU=w0G1*jh&8E<2=&X%mj*MToz zpEGCP`=77bcF-r$IC%3ZeDB5cU(U7^E8+v}k2?Cm`Djs5vB@f9V^{xR54K4)Vpe3J zk6(B!D=y4=@7M3WzUYIERv}EWu6E?&w+|kCckkZq^P~0o;`nesFTY5hqOj0_jHE(C zc1nD_DBD=17Sf_A(Q)h)d8UFx-uu;(*WXyY5Xi;uyrBRz9Q|6U7w=|lw#60j($*u>ttX=)(^7r3;fBBkyZfx_ZKhXCt zUOfHbe5WCq7ENQs27B5$x`#5Q#hqgl!%fAx|KD7{`~Pe8zh{B}S^xYu{tFA5|FhhQ z{2IGu7@JslAnmmyEr>t1uUZ?tcdp5I#^caTvAAaDMIw}$pZz}Z?4Re)pFe#z`+EB1 zN%!;L?idwI9PrDpW`B=3AS_)icx%p_Id8l=f8Lj`zx(d;558LY^_sO#t5zQf@{A4d ztMcVMc!@;}ERFs1^5u)aj$fhX+ig00VBPjj;mp(%m6I=jx$)QEXP@1;{^;iApMLq~ z+k1Cz+`4gQ>f-pxtCQn^+nk;}b+W7Jm?0%IOUm{3Oo|Uy%Oc(E+aLA1* zP71OQ;jxZ*DNq0Or*GW3bam?Dd6ar;a_aQ)(cux0K|#`~FH&Wg zE3%mGUi2hcvhVukYxfaX<+%$NEq;6P+e_a6@XeCO)5 z%jYI811fX=%+#q<<0poIgzfEXZD;|=vcw=4Q0dSi^|$%#(=Rt|`eNC_H{W{q!}mX4 z^5N2@%RXPdZsqFD>vwLoJAByQCp;iDD3qZs&@iy$cJ1tm^t{H&>CWO2Q(=v_LsX6- zBREKqOW_N6ofG}#>db~4x5vkNa9?@-;^i|FS1w(cJ`D?ujSdYB4Rip7+}T=@lV4J7 zNDX%nqDJ}d`QoD$8`iE_zT~atOF+GYZZ5tjqR%z(IdiCO!v7xD(*REcj zo;rWw9MS6p5%>6Te-D7Doh>ybz_8}ZInm)k0lxM-)~s5&YTcSImVWZdXJ4%%P&q4B zuG_F~&F0PPHh~80;Bv&u#UqrDWClrgMQ!K#izkNq8@tDk)fti9<8A8~9Lc7I)7VLx zqSDU(_G7~XV^=SO12lEv`sMQ%rzg*zIXyWsJ_?Z1P;U4DLf8~7UX1WYi+rI+nO~SHmqO2_N%W}5yYQ0D_5=Gym5=grcDQI zERQ(YxxJ8377)Lgjw(qrA z^YzM=M8nstUAuPuj-8vg?6o{-<#5C%1bKw4_>}yv(NG3R~Ac4*0a9M0_N~XC~E6Xr;PfiXrHuj&r1W5SE`1Dyoz(>c& zXF=e=kO9lu)=<~bR9mhUBQ7~Z6y@RQ84?-nuxr!Sy;e5+H?LZ`X7lddTi32ywRRiu zP22Z@A8Ixg*R;3QR+XCcio|%XfRALiL^hMb5~_>^nc|GnzVVUH z`ev+KO`RMb#^cENiQ^~6#!d|N4xssc;L)}x8pSXmWkWjY1wY%1g7>~BPN}yb`u;7E#E_OT% z_uNc=wm~BkXH^XhcQ@8`j8C5#AL=_Xb#`KG7)0=s#|L`*2m8_eodgOTAmlPb7U-c$ z+>`965>R6Zo^< z9*}9lFKeo+GUpSlvJ5eo7EPtagnHWB*f}}c9Nf8W$8J#eF!DBU-MZak+ZK!6dk$DT zdIW@15X_`DmRFV(lr=O~6az4)O;2Q}q^HoMO6S6XlML zV#%hL<5G~lTef!o;TXyW& zwtW{A671|<1EU#Ct|+6hysW6Wys9+cU^MBo(~^W@A^M(4j|>f`@nxCWnmlkB+Pb=r z^$%fNov19jsODiiY2Y)Ikb9gKPMYFiXl&i)jaRC_CQmGJmeMt$FATouGrp=`;#tpaQ2Fi}eWyCpUMeqx*O5 z-VXpb3}CTi$F74%fkn4;38gcz(1e8{wYH#GClf0TCId2q5rGf*uY?yJgarkGP$16C zEiNgmZfpkuxx0rTkrTa6*dA|tfkOtnuBoOLIN-8;9T0&ARk{#Kc6>H1A_y2kZxDzr z4+H(Ye-A;x-?itEjqQ~jz?x8@Yba!FY^&ji(ItJT!;bROvP^c@4u>)RMpd%EW#S$Tl8W9>!3G;KY zwFc492K?*2`}glZaM%h+b{oLuqarC-dqb*#LYe}&h)f9@5b}QIQk7n>NaiI=BuGY1 zgc@@O!gq?zWwlMsEp4zt7XgAspLce307Tu@(NbUE($?BgYA_f}N(wbZx*mWP$s9U` z5<`m$_OQ3bW{{)Rfj#>U9zJSoXMOmPwR>1hba+@a2RTBi=`tac$`r`b`OJ8TYfCe= zy6kk+M3t>TVlWbgWlHo;QDJd;12Eh`;bW@rXlv~{2K9mVj_%Hu257Rh)Rq(!nao)A zL*ia$raUzX(|SBTh7uY8`@1+f+S{VX4_P@l*;^sLj6#JZI#IePT_NGn;@C+TuW<=% zCY>kOWQ&tiGjny>2xZ8{BX|b*e7ZbC0T|3xnBnUiTiO6U2MQYSc>;gl+|mkidP!+T zxlx~^$;nY6k5ep6B)GEiF^KsI4)S%gw{vuI1P2`dadPzu4v&nYagn?!Kp2IXL#MMj zv@nD<#M7w^E;3G$7y|kzL4GdMYXBhD;71Q&TRS@%D@x07 z=`GTMB&byp$sNGzazUYn2ZV-&1b8|-08;4e0ErS8cmLqfh-f-TgseTRD#}t21{O~Z z3k(X6il)XfKmq0>=OZI4CoexAkXvFpQ)#q19k93gMsrDNSy?5V4FulCHb6P+>YLgi zK!FhHs*18=1F?gq&Qi)CfzAiwJ3cNd91F+6K5ouV;37KN+k+|}5J<+FZ!(c1f{YZY zSip^sjSM9Rg@i>$$I?&(K61O#m72V~Jbiv~VXjJ<1r{`-LUQua!G%R8OoeroWtC0s zU9Al@^)0yRtFOj(NJW{c00?-3K%5Dp0#aQ0y!hCt$jHd>Ku<8JJ=~q_>|H$lKzR&~ z24oL;rgEgzNz;-NXcWM@iSnsbfX9=CDWWum8eOT)&C{uo2MQc4;Myvkv9z?vP*7Ia zTwj66tJY3jud300qWs#r>M~QI(TE;XsWds+NbAAOk;o!2)R=~WAog%|a&U6>^zruc z35;ZLknjiJM@mjA4vIkqLV@h3(pbqzl@ucV2jM}OM#1wZvIdbWt;$yA6qs>$iIE5r zH^AdHjRg9?4oL2%CIrD?^%b*kK6se~2^)F#$X^pCahX&Cd>Inpe?evEppv5WOu(8od0@eV z^KUkng2Y_~7vqnKY6@iHwK=339flyH<)}0rv)rl_-@#K)x|8Ca@T>F(@8kF$jqyV?F}+ zn1yLasnX&KhF~ttVWLDfiwP|NaLE&ic1F4lE60n%krMZi}P?_naD+jU=R%XU~*7U5W!uJjA3w+G3Ydy^uTYJ zb-zT!i$X_&4kWu^HnWbH24S9J*#EyKC?j5_rL*vHl%KCBP_+buoq%}*bb-Wgq`?z} z2LdCG7m-|z^P>D1N?2%U2pJMlpu-aG2;Y}xYk`_a_v=(3nE((0B^4NrlZdGVQ$@Cl zV9^&8L+Jy4ZZ7%n%S@opi-_X${?Fnub088J$$H3;N0BI)NL)uIEi&`bBe>8+M-rVs zTRu8~Lc@}%SfSSD0d8){1BwP?pUYyU0TG6HBn52KHce;7;$;%UpjTM6a2)Fw+82ANb8|F zck+^c-8=I>+8JKJQ8rJXn;O58J@>7-AMA@MjZ(E^2 z`}#Wz-d*db>P)RXdFJA&8)r!i=6|@AoKq{So0vL3akuH?1@k`M6K0d7`m=spFIEg!-ex-{lu2voKW0z`{u-zm#@6B zaPBfEVF$l-;O4E#8#8m}Em-)qmwZ@QHhlH^)V;r#FP#6@TEDDuarKFdSEqhFyJ*pZ z54MHqMwN}H&R#tCh%;yY{7-g86!vMFPoKGX;py_%=D+sY{upzezT?8#b5~wKbZ-9g z!}PM^qV7u<&)=LOy}IDF&#e<`H0ER1ub#X65=)h@t#IHs%F70B-Z=N&p9|+NnE#cF zpjB2mbnDiIpH9B=+QNmaz0!LWbtmrLy!eNLG;iVS>wOi&nGGlJ-n{&D|AGaJ-rf?F zJ+5vVyM620%l8*7dj0(!VY+j=_R}|R-}-0O+=Z`yyq99QWav11<<`BIRbZF7?!(a~^A^4NwH>ScO2xpX%XfZJFPOXNtyPYk z>Z#h1tC#QoabOPKuXW|ujW?dSdF`90pOfY-TD;yvP~X#b^6s_!&-aq%z5e!QpVa2I z&QtgA+aXrU z``r(}72C{N@YW{>BQ!%*gJ-{c@Rz&Is|yz|I~tQWRzGt7hlfwUJT!07+beA8`O}Rj zE`9&gv#nck`jt-c#w#r+uipRp3H5`yufMz2om+aV{nYjQzdgu!bKV>8Z}j3<{@6Wn z>zhYY+}Gy4`Qa8nLG>@ar|;bPy&`DNYj1tLJxEylsQ=8p`;YzoNv|zlx+_H7@bmEW z{qLTx3c~x(_J&ED?u}l2@bKwYchdZ~mmdsQv|KxN<;P$Dq+5~Zzw@O{Om_S9wCKH6PV}5(<7clw`t!JO_p5Jyu-+pff9Ux1%}0OBBUa9P>!Z!SyyD5R3*Y?q zco+4Z*WO-gLFSiUp1Az&qsL!HESUe!XS+j16%S5b{qE84Q68@>T=K>KNJ;JAQ`dj| zNTV2@dhMAiWp8lLfUqf25e5YSxZtL^=KRv(D8nf(`_g5SU6Bybbef#SRlP+}e z>mPk>O-nQOKKSAH7dGiG^A>-y#-1fDpLqD=qN?t%hrd0&bSz;l>4O!!y^?bpXMT9}OmB!?hP35FWI=B8%)`H59#RFqOx9$@)~FUc=or0K439v`Fe+FSwZv6 zU(fHfE1X|@^~wB{6o@;P1Y1;e&a7QPp+KF_I{nTa+`BZc2U!RUc4w9&2XGY zTD{9RL2Yb8#*UL2PZ{Z6kfQ`A~F5Ze_>J^G5<+GTyezzMd*Vu4(=869?nd5xY#=YLGTyx{& znJ0S&gqE+8wj2uL=9b~~e{#F|yI+}WaWpDbU*0fBCzW4E0kW!)UZa{H&cXxMpcZ$0^A%qZuLkJ=62?@d7wFO#g zyIt>gtGoMNzQgDD`u+L5X6~7DCv$J^oH@^PejH_G8wo+QErRpf`^fK)<~~tUHNn}B zRa9a70OjxhI^GiE6d?izwh1L5T6pw5Y#kjg0l97BoKf2~NIm*)vDWH$7orGwrp?{M z^rLUdEA{SIAzD`6C8!<({pg3y(L&pE5Ir0Jik?0a`)KYvBg^b0#K1PBsvk|}A0fU_ zQuKr%#tz|C0~qS;QP3+wjG6$%#3{OZV2HkPWcv;m2}r=^E(uiwSo-s$h<8K5PaqIW z_tcsJ9OIX-n8O~wM-X8fugtmuJmb^;Z!1WT+mO2se))|9MEViqznLbNYY=(oz+yO> z#5h78jaA!Tfath|R-p#T%%h|)ykc`vh`C32T{nixJaYX)%QQF%vGs~>8o<(+M?qh4 z37WzX2cNi>AsmDLzs^4~QL2IvN8g0jVLXElj&6GcWCb8j{wZyE0)x8x&tbb4U`#s) zrXdLg1_g8U4C(d=0&xw_MiNOZO8(IX+yUro4@X=zE6`-ekh8H4<6c#S@ zXs+JuGUTLhR9QQb#u`E%jaM3-gWL#+sp=ronf*Wg%PH1515pS`sOus!=xs-TGV(M| zK@7rDV0{!erR3;0LaNdUh(~lr>j0HQh(7uW9U~_M35v}^VQC{6_oFu*!A}Gs;R!ii zIQmGB$I;6c_s1YTI-#J4#NfaykDfI++=D>ElS)8^ICjzD(Mq`)a4$T$3pbLSRC*nT#UVX9`pnA!RNO1EPa83;ks;ClK2TE?PC_IT zvS353k*=#pKjY)2Pe9C4@(@@Sr#|}VU4NvwFvLH-s1wU#XKx(6X!Cz41W9;W(o0}6 z0>1pW)989vP#`qmca z6BR`v=Tq{aL>8+y;^=oul+-E6qx3>JFqb-U^y5&dxQKvyW-$`aqPe_1df5^1Kv>W% zx2y}tB1-Qc?ZDjc2nnU-SM-sX1DD?&EmhcF6FdRrKL<$+g!=b?W^xTK37)AeuE)|C z#e+wGaud|f30^8Lh7#$N(D(oSLJ5^VEqE)xsD;cV7{34S4aWDeh>%QfDU!rM-`_cU z*6Dipgs^dbSqG8U@p$)W4eEG9_+)5dWjBFTQFw4PQ)YQZNHnjgrk_Yi+<)<9EZy+D z(Bp~t9*3f+d5H{&V25`TOK=EYA5OH@^~5{NL3KmXlnce*QbQnk1O zNx&8M{{FwEdW-8P&f1q$cj1PDzdipxS!8%o_;Nx?Z7;r0_kXJ&Sn1m5Pu!|4Z|K9f zi+x>rkBd?~Bl5Vb9E!o$+8*uf_j)}!byBvoqGcGHG5OyQt1$a}Cq*?Is*uBdu1A0T zGFxqOP2`ewRSjymUGeDcuiRYiOCmRe%E4=)QS!gNA1TQy=T1JzEwArJ7eyQ`9S(%b zik_0{sA%dNh}}Dy-0E}_JAGCaSJg7mWqI^ zyWrYK-NedRFobg!Se?Ler4x2H56 zeIFZ6R=Fhl&=*zR+UoWD(btLINSX6zrJ|Z@S{t>FzI~ZO`iY&ppp;ux(^~QH=<6?I z_0A8@UDk$H)WUP*j=nwPlv~|Cd);)XybhN5^yvFCCD-u!+1qyPvie5XBD1ecLHh0fn*UA~l%QgKOxC75JyLI-KK_NUhQ~5uT;ntj_cm2XWi`uH3 zl!qV<;CoYy#?^}t?SM*h%$;xl{{68&Sn<+jakrlAj1YM++;7!>G8eB(`V2iy^Na!J zUzNIvoxdg59%0e@Kk?B?4)Jan#!`eD|$;kWg;<37Nqq3%}6o2 zapsP8)_8o_{jdN2{SP`;=jxez2D!Xg|2xNtL&$Ko%V!>#mQrIpq=C7=8v_+CoOxtZ zI}~XX2=Mn}PwDe##T^@4!i?Gg{*vV+e)hbiE4(~V`8YB4bDHhLvlnH&QCYr{AHm&z zOfbJIdPP2>81A|vFJ0!=*9_AS*IGZ{`r?+HvYuu zUO6Eu@7_3|ehZZ2{^!>g^$WshmAsqV71aI$?*3GyBzoe!N?=QwSoAl5-=s;OK5cvo_jqwaq^ZyT$k0US08{oTh_OPPu(|8>Cq6` z`h4{D%c}8Jp)(RzS-sMi4nF<&{o|b01;Mj2c6mJy)PDwvslSaYi3*-qbSmz;QvBh| z|Nj1wA$v;jf~rS(+Zo=kz}?qa@e_g~Rclu|Fpua^F0u;bzWzF#OMB8m9zAC2ce6 zPEGyr`M>XP*s>x5=M|i?s)d$*{qn!>`=p0L0+%&B@(TsIe|-J>+a~&^pukl*BJO9Fz|3wkUw z`pY!pynw)MlfYE-ncYwSetyR-ISCQEYZ00xiF@M>dhsVvHZY{rh31 zUtbWIbBYN}oc{3XpPy%tcLW4(>UzdFjV^uq`swXR{TYbhJyX9(%ig^&e}CK~C zKePft6z1D+fB(MH55$7bJh2aPN00ve?eCwa5sCtktEw&`_SmJrzI=Yet^?$+dxjqV zzQ~==U;o&_6^THE9$Wah_flVf{r2;6cbpL9q=b#H-75X(Z{OaIHCqTkE-Ki2IY8$= ze);l(QVvK^clBJ{@{yZgKL4?S$vX`Z6f<+Pe}{hg>C5|BWReg>xb9lO%bOcC!|a*d?ttAe*0sOQ5Gx&IU{Fo+RbGB^6ig};T$hPfy)YJhMyXz zK7RRaxhug~K=8Jzsqwe+)xSReFaZsHBp@uNW9&8Gvj63e7pzL(^8zQOjSMGeQ>?bxdE4(0={$<2)+D^1hPB zA3XThmk&GSY%2qi(~p$3j~ETxUw+>vq?_xDh>9ue{lkVn2N<7brh8KKv9iI>+@}4{ zzi(objdV_)6;n1lKntUji6Eg5Lh}+ZrZT^Wmk-kCkGEM~1dP|F$+5qjm4fmB&i)LnFBL{~KTP z_O+{G${83AVfoXsKN>e~UK3N!9b}UhKmWcyl%R3#?)Aq?IRk9U)aO6ev56X29^ZJZ zR0{CeU%zi)k~FSJ+!Rx;=wnjYpZ{3HB&uDKxh1At+s~v>zkvQJnwJ%Bizzqu(rMT) ze{2k;Xk1b}#@#ep*T)Z=*fgz6igz9>HFQ#_$WI@(uo>Ey-sLL*LtBWH z_78vV(TWW(i#`-rX>BHuyMFq#PcJdPBJx;5r5TE&_Wu0&1*6>Ts<4ElN>kG?75(nZ z0lUofvhWirH7pEA9r*dnKBL&^l8~gd2DfFHI`I3a=d?n-^Fop`ItTD!O8@VFJ)`97 zoD-6gGx!PM-VcB75VEvH1*H{CzCee`y&wPD#y?d%BP63}{jG7B)cxth%0QCBNnsgf zpCve+*!K7D3#bT*6KCbr(%Vo(eEYxer(yp0g{~`TA*;Ix!|4CL<5#-e5R_0dSb_GC zhUx#kWENXr5>QaF{MOh<9$xrokD6m33Q<*e{Z!vi9(wh82cM>X5~8XZL4^&G2Y>&# zhE9+_0a4YdtZEr1_I~?qp(|WM2%>68FM;8Ro!@_+g8SbW6i~BxUDb-mb^ZI6TjP3N zKt#joze*%wxbNtIQDAWaa#JT}rJ<8BH1+Q`E?MIwMA;aX4@HwO@Bdor36~UtXxY3k zZN?IN|M_VG=6hEFqT~I)Vi+FZbM%5yVhc7E2HBW~b^;cEw1rRAI|aFKPRVQTBMq&8 zU+M}5muq|cm)|r*8u;IPZi6e>A{k}ls)08HM?1K5{Zo*OcH0F_Jw(jf_r;FDCt$Sj zZ+TD*ap2$g>>98ig_xsCDqC@&`!@F2`dRmnMbK^{X7T%6o3FSaL@R5p5H>^_{PzcD zr9BXKvYX7TfaCD!qpiUdol_8zprf3oE@(Gh$O->B+S3>Xl2%yAP~3T za?9a(JmzSvFF{iTax&#G7g)zGeH&|Xdn5?a9#1Q69U=|=_ll5j2DFPpj|;hL0!_yM z@H08z_^NLh*t#`(1o)!?9h%c_|AQ9>R8>?}DA}k>DUs_oknnK+Fm7H&K zQ&2D+nO6bIhZBxAI}^0d37*-BE2`-rk%9GkUs(}B$*(D8@O~P3;Ug{I?2hn>N zP7Iy&`LH)d=Zeso(WrvTPCSi#w1S9MJ12be_k_ZlE+T~jE)S4Db3*Yj38eW`sjPoF zrLK~vPB}McRwB?e>f#4nmf5|N7wf}wsyi_Z%KO9a1f82FZ%@SLSA!@A?eiWgM*Zq( zslB+Ox;`?Kdb9)&SGjyvhnG-X-%DZAj;87Y6)s+MEd}y7eKaQHXr$Cr_QJK)z?2GT zKZC*ko0;zS}DKcfncW-v#-((;_7E?0;zm&eGSUhdfg%VS@}7=U+yitLzQgVdvz^=41RHE6+vtrUK3;sRD{& zvN=cG5>NTta#-ECvSti}!~Sog(nsl@T(5XkF?5hR!v45i@2B!W8g)Iau(6*q!g;$1 z4c2@l-FPlAr=gp`9@*MQgz1S(mtXYDY(U{hIMeUDW6h-`)70G3Y7jt~g!hG%ZZG#F zI8i$eY#&)%?!TOTH>D>|=m%lNuptJQ`_p`luZEN<>q0{WD;m+pj>v<|cQytiY;?%L|9K9{_KtOk|On}6OM zXsqVnbHyqJtT*21*oRI)ZF1sWmW`=wCvy1wPuLWDO-uT@8$m^_!)*TOYfi4Ku1WW$ ztKKyZt|aK~jvnD2&=L$V6LpYZogUH_?dt!2RJm1Ya z3U^h^@oCEtcVcRtm+fYgg19E(k_8{)O-yZavfS*mQ?5U8$!Q%132oc-3|GfWiyM-j zxd=ReeEI;B=c=k^odLL_NyV)k8Ul#?&z?0t#A;ttCA)cmh4;Z9+r7al(etL$Y= zOfCFc8|0Kcd|6U9sgGT*JV~Jp0^k3;Vl*Ow3cE1#LOB! z%`=#G=ANocP8(@_dTzff+9Q#EL0rYRxPv-1Gyh{lh-XppWf}R9%0AZg%;LKef4|NL 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

    U1WH z#fG_ZuhVAKnN7}MB3~+Ji>aW?=EkmC?N%$ojZbg3@7g`Vo!F7eFu^i`9id zG@eKVVReH3u=ML}o&aLdd0kMm=&{FUe;^!+L_?tjLdb-}K9A3-H`%e%b}u&R@tJL2 zZ@}sI* z1MLV#Jd)dF(C_#7y)K{M0WE}vas;tk7NZlp6A6R@2+Ea=hXW3a%L*r})9aPENOlyN zU@#Dj#1ON~j~AlmA?_Id^LWfQv)y91xOszA_arku#7e?ZaeAEi1QAU=o?r|y%e;t%g`hfquLK9ho?47vEFOqO z;~+)2BZL+6xV-^4vTt)ZE%@EKW~#)0v=oIaP=iS%7KD!zah z#XT4adXOQnKLQ&m7+4Ag3fKsR>JNCadcf~@dp%x+qQ`D{LeYTR=0d1YkJF8!?Uu#8 z?!Z5{vB>wk+Im_a?|LiS_Lhflef*s*p@(mM?42KOdHo~rY-zc#rR5_nC%cb5*mdk& z``Hu9qQ7gp?`K;6?1NbNV_5hPTJXyQ?=)aZzW(_LoNVhn*V6LA?;q^z>=9^+9DjrzYJ;AGc3TT91C{XrE@( zc2w4P8|_DRMnv{9sE?|Uz$1@5a`dQVx25HmUQ_m`Z`3h~%*w0rOGjEh+Va8X8~l{v z_TPU=C*$wG5UnvBK`<=|rxgyN-j;A;$^x>Myp>2}sL4@#g<|n|Dw{(DvP3lGM;(lp zvAs$h=5S9#4z})ikBL1Mn=8_K)tk91@Wq2VDUMP$zTjEniLQ2YhAF6kJs$?M& z4&zg75EYUvidd&gC@WdGnGXauRN4c{p)82H%89lKfy~g=%H}Kc^JPRRi}{_>9W&nd zBd@nm{)PO4Xn^R+ps{hIR)_PykllW3Hw{*F0pbWRh%l?gY$A%tcj)=poM;G}#Sl^K zyog$d{^zuGGc7KE0{=p9X=7(&9?@Qdc0EF8s?{2c4^!xs#X3UKRr1LYdd5b*&S*nC zQH0RVARZ#(5xNljPmgGu(-I63fgPjqL~&_pZhm=nv7ArGLmmqvpd#uux~3`oL%ABR zhoE;FLZ1ZDAZ-pb$kLU=%Y_#{G9y0-k!LneX*90&{ao?dD__34vAck(NbTgLTB}uQjQO2_PpDPrTU$r04y!l6zSG#)+TU9( z;!JjEN5(Xo@o}vUeY-$Bn~jGfnN+}HFc~ysi1w&PxJPtxP5RX3gIwjQS6|p&J=kB$ z_^{#We%w*xw|R55TDgL#yVVSW)P@j>+pM2Nltk>Q%^ikgAQrS4&1StCkxZww8lBtj znpt04-nsGY_5FkWm1;hM?!H~8v7*=KjRQZ6D>XCOL?RY+n#`stwH9$%5#QTjcEZ-> zcB5ZtljxKHMaaicv0AQQxxSA%TwG9_Eg_bq--aH!QD;IpP+ugG&So>|bTaI9I;>)^ zK}IB~Ck{61sBkzQM}OLFN8jFIx4L8LLS*BYHvRF8pRESZi+lL(oNPH+Md zLs6v$(7p3ZCoqVr9yLGWSmIadqy~KmpeeO>I1oXdi`39TR~C{Q8I>^>#^69{Cs5Bz zO)V915PfT@n|<<00I?vY0!KGis`Ma2E6T^=a1?QG@g8sG8~iPGKmL)>N7okRhBO7&qYq6cR}arAPV?A&f}zf!7y72x-Iv4$GlM zq;A=sFk@|R07XRhS5{CmgR+Bnl22@0$r9FTW=sm1{Eo8c3-}NZ7#l@aFh(5FHvMxbM9 z8_>@}PSDXpJkS`<<{*Y-7???63j+f?ihTMp{PViq_<@0)6!vg9fi>a?D~h@S`9?y%VHQXLlRTyykqB1T;P96B^LTpu+Cz}eyFdu>-?1^+V zXmKxIM_!XjgqF=>t|*3Z(WrflcXoPQ+8F(CHV$_ups^*Z3#^a z9VKopy534Il#X|E`&b3r$E!IpBKbll zTc`;lkw9E#(;}#05}2}-AyzcxiA$4-A}{AO>M^vx(iHk6CbKW>2`OJhyr|5uJ|^3w zR+4(r9}8m@9Ia5$BY*iq*o5*QR`sB2#B5;D?e{xT>oWHMKoMcONPhR1?(`%)$*CyCGIa%uGT zVmM(uGO21tTzE+x@ys#TiwO3PP}Js5C*t{ZZegK{8!49OC6IUt-NYz5ZJ0_kV=ct8 zm%O6}N41A~rOAYf0#!ajl`GNiF=WsoBE8XIv7tYT=`?I060x|m@lYm}ovY1Mmsb{Q z$arN2dmY7jD;alS12&9W9H^Z97|fvJkO6ommzDMe#R7AG7GxQTn-I|2B+Dwb53=Tr z;Fgj!f}h7TNK_srf?-Fsl*M2@ghTDZ$OoNVn;qR`R6Hoim@dU+Hx4f1OviE32Bivg z+5wJ{2;$Y75iuO|hEnh1FuUDRTm(vmLfLo zs#MJ~f$a_l9f4#dl8UEGGudJV0q${Y8EW}Fnm7q5ZnYq$J^JgYGSNSeDf%dt*$he$ z8Y5wVxJ70g3>daxHykj+22eet%P38N&mE57az!kjOJ_>O9CibDS78%UI?%e~Kw&^5 zmj#eDHzvI!7@uX)G$7VIianZoWK_neMuP-xH<^{=h0_g<0on-Z@%QmL8(|T+O!#K>U z;4n&m1ZOuWkqdl=K|}-vv{;>6sxK`q)#oe4BBILs@iiFa(me=IZ_-a|^v+;3nw?wQ*l6IH zy{q%3EUu(YYbHmBhsRXYCWjAqugxyhm+QC%vXF}UT~;KB*$KI3l`hnlmR6UR7OTZX z)a|rPO{+9ot=?d_f2YYUOw30S)0p6+?J{F z!GViIBNI~=Pb6KeEv;gJjk`xvA(ut3QB90b;@YJ<7)Nc2%5HJKTEr#00M2HM2^D}F zb0={$1_?QyE?m6Ts3s>>S{BHiDyPzzhjw za8We|(y|;l>6&?j4O1#Om2tMC0OLG|D5`waA7~hys1!mN&!Q8E^Bd&={uuq@ltYeO zsE}|Tpt{0gwi&05c3%qjjxOOrTlK}oGWN=((~J)fj;N+BHV-bx)ljIG7psMAGKedF zDD$|AJBP0G& zJ{9x3ZOUnGc6iaNPooY%6%a$a=L9__k5CrT(^9I@bPA0YI;X{Jp$eNb2AvClK8GQ+rF>A)o+ z+)OGJ2<9KK%Q(WAXfPRc(#1+HAC7&rp>tEH5w3p`gUPI09PL z__$h!Erc+kQJJmI$vG8|1aScr?IdQ$F!_OdLU9l4j9j5bMeda98MPm3aZHM&G4{dP zgbEFZ!HVmYXpUuu3_~e7nWe6rGu$=cikcCV05M$l%Uk&@{&e<+UoaB)1b zg){~eSOL>Na^~YmCveK58IjI6jx}mFC)y$DV9VH2N)k4WvV;x+CRvaeiXUbSLug^p z*O!iy7v(pZ!fmQ(FUr`7q*T%lRDEW&*2-Ss7GBIt;qb{>BBze*1qzguRT&t`3qx3? zr;a)T15(h2BQiw92ok-^yE`iLg3>;tAydYO(hfx-B&_J{;HK#$W>?(MP`WN?L_8=t z=&WI0GKJKn%7vEnI6P>qQi+PG<1KY*M`dk$Uw9D#nzFA%yY;N$}kpP z0W^RZ8=|R}7Dm}&41r~6hZNC$ly)2Axx4eCs2QS>IQm`4d;!%khJ*vkWsC?*<-!NDD7ld0B`6oTGBbp+~Cd2Zq9!F3)Dr%onoh6ng41?nBygU{OSI;N^Is2uhqGjFziNa(xPWD?@ad>X4=%g;B<#&1G>Cz(9uka-KDZ;3%fBl)~8@ z#A7l=b`LKUTIC#-u7w<7Ib-e)^pPz&Rpe4Xstd`xl!&+x%Yl|&12!xzD9V&_%?w}3 zDzY>8wkwAa=Oqe+PpUl0rE=Ctc4Y6BGZU!j11hCT2KGn<(+)CEfQm%AUU_sBS_hRY+14@FUgWpDpBT@`8=tM@V|6yky5iXE0qIsbT_Y3 z%HDe6sL3!ElMt5%RL;jv~bH7qB3XSJnv)$9B3qTx8%vDVJN$Z z{>WE~~9%3dhDAgju& znVhm&WzVpr^Bz0y2>GHRykNy*=?ym@8T*)R;lZd3{sFC!A@Yw zrmm7PEcEv`C7Z)b+3edt-u_HcQt}B{IVZq(w>DMMmrW=IMBtUz-3%ZxWhW$YG4mqR#F!BBdT^pBg#~A75@&Vu2w@2s>|p9g z+747p*bjW8lnePAZLRDW@-9a}Ichj;m}J5kA?2lsfz6@kg*kJXV@Bp>E?MdcR2_06 zB0D&y(!$`tp%zDFhErL-R7g;wQ5t08PC2YXDlg<-ITm8r6ql4_ADaz5N~lybQWv(g zoNn#v#vL{-KY9;FOG~gN=yDx#$rauA$d7xkcN{r_UymFKwtNEjl`iXP6VX*ty>DC92 z^`3k1ttI&j1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun z0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP z3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbF zC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epy zpa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O z0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun z0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP z3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbF zC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epy zpa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O z0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun z0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP z3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbF zC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epy zpa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O z0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun z0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP z3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbF zC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epy zpa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O z0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun b0u-PC1t>rP3Q&Lo6rcbFC_sV#p9TI8Wi<>; literal 0 HcmV?d00001 diff --git a/DefaultPackage/NUCLEUS.FTA b/DefaultPackage/NUCLEUS.FTA new file mode 100644 index 0000000000000000000000000000000000000000..bd5221baea86aa9394b3fdb8c7bd3faba7ed5792 GIT binary patch literal 819264 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 zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly mK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfWU8!!2bk;Sx3MC literal 0 HcmV?d00001 diff --git a/DefaultPackage/Oil_Landers.fta b/DefaultPackage/Oil_Landers.fta new file mode 100644 index 0000000000000000000000000000000000000000..124926cf72fbd349d0b026e30dd551445f9bbc92 GIT binary patch literal 819264 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
      QK28lbrQ}47=k)>KCL#2uW0|RIfwOS!RMu2WA zio3l4Xfs+|K^nx;X+mU0y2YvKh*42T+I3WVHbfy%P&5^09)$K|dcSm3$vd zWU~47T3kpfV2M*qLV3Bq zR#ot($b@53EF)miBo)9Q2zFTw3zn&|nK`?|6B3efAzfN3C$p>T^_+sp)oPk8lo&6p zxQIzIh=5L$Ry%QBqht)63Nc|iQK=NOrBXpw2sI8{G*iplRdC#b0HH+fpcMffZc>m$ zmKWnOjtz%-mc&q0;XZIWA_(CS8DbP&oep!+bVknR zqbNnO6Qi+MA}+<^v8b|yk|4zY_#&|<6 zii^MpqDn-7+XE@grx#WpLE<4HmCNT#)%t3qQf{m^%2Ff}W=Ir(m8L2H2S}2@ARmgN z7^bj+d?XT4SekSqp32B_N|GdwQlwZ;QG^L4+AyOKPDweZ_#KjoScFtKF~IF`L5MO{ zXo%y&iphiL8H(ZK>0~^e%Pae?SSl&D!DuuQ6L>DnOEFQ|RBV``g39_UbRtfNa1;Un zpAQ7!fMSIwg0z@O$(h2^@=B$UQ}{KWQ~ngk1?U9;uiK>v-%h6o#u<(ilqLJ)L@E1? zqiKc{MTLM=;!yq(PbFhgG{P%Z2%3rT9Isrl)f8-L8%zwz+5Sq+v}!rOVd=@SXe=>y zsqEWYh@vy?&9 z5n%evBjL~gw|8<`qn1}e1yk|;*FR zi5Y^B^GSpK6~I@tYTFRlfvPQHtn!wfP*t*cuBJ)b^yvD(`umHX8!={?IG=sTbO4Gs zkTKz`orCZ@jI(vs!t}E|nM`9vZLInyrx$brpIEI;ZoJuD)5NM(K)$HMv}nDI9cV4o zkO9Xi1?5Nor+0MqKaHtqX)i%_{({!4vpKdX4tX@gTo!DXZL)p_GTJ42x%W#({n@v1 z(-?y{h5P-s>>D%&w+bLAozW%6iXGi4q2W|U#+K}P0owlXCJp|eGD#*|oT<=fVJ4bc zuuQ5n%%pw8))qV!t&QT9)$(QO@L0+!QnKkD<=APXFSWJq+lvQN`)fWNy#oaA>KeyIDknotMKP2 zj1w5^@32%X>LYF>{%!4pqYU>WGOm|fI&1W=TJg80AwAw zN5lyj6ag4UlOD#6(}-OLa7mMeOcW|8w>k(yPvJ1;$)Y%G6gdsfV=(U&Nh6jva-<%Hacxm3IexB@URwI)Wry8e4LE}l+lxrWVW>R zD9no*7PI9bm=x?NZjqVE4ZtASl*a%`!Y-JUs8JFpStHIlP>!;3$_fJ&m6(`eJw=mc z!%b}hl5QXRyFnYz)QH83!Ra!RSECpmLk z4?TH@6z$n_+bHgKw$Jb=pBOky>-y4c4@KY7>JDK1?AZU&rE@p4e_B7F%%)E+T*i{= z;pQW3Xlz}732xT<>*axVe^EQOdVy!s58=Iu%M<;arukXRsmo3NKtq?wJA_;wHD6Tt zm11JA(pkQG{;bL9Zhmo}0i8pycY}8}oG%U>moMToI;PW3x3ICHvrdqdet!ctYE+lI zi_iIFi*mj;mbR1liG*j(mUB+XAxU4X>rInmz53->tjLg-?_0_;Otu_?8^ro}&_d-t zK_HF6c$WSsmz|6yE|}mNV-ze!l1z`m2CV~r(os4^^F>|pxTE(}hKxY0VuKAhQ>mG8 zTc1I-{iqJ9iK`bA+q-}rbwU6z;DxWy3 zq`3pP&FQu~+b4pmXVL--r%$kp#<$5_?4cf*(QZS$8w3X6!mIMIUga3TzdRtE>K?n8 zOOwP5PE;5*sZwLhpGYR7wzs?Zu$^TtjCuG~!?t6HBU%doF*Iy%cG?nX`VVgvi^WIx zRez?2H;`pcjm^Y_T+MOzZ8}FC9u#_CJ5Lvh7k{{<{-IcLFEfbA?C{)gL6^EgCni5V z1;5v$fI#l+&cJuP(YrGH;THKQ6c4cxl#)=a{aXs5_I9Yc1w zb_~F{wtpt67`_;LpTX@A(;H3Aq(f)tSL<%XrZVGYImZIJVH+({s})dfbST28EW@l> zXTwBN$*-tUg|QNm6d(&|6c|LnVGyMVh#?RRfJx=j8SlnXm;q5*(TX4lcS~+E;RZ>7 zB9-%pI8micFbRrZn}vBhOL?3M)VO8To^&XBCP@Gs3t~8guuhJE;j{u|A^}RUf<|tE zAP|rTARbbl#oI*8#w##@@+9IUb2hugDaYOfv2H~&w18>UNEb}D>I{z)kn+mu!6?yY zFJn52Bn2Cq1?`~7f))O;98+E89WM|;sh7-N!BTGkw}8>w4t6vKEt z3`saJED3;kY=)pHh=@5DgwWL-Bn*p6pca`kBrx28P>d7D3DIFoQx=305C=_AxE(E; zJrxT@nmEP7rWAw@kfYr&Mlb*b^Q4(YcsHcv2`4E!2!Iw4yW~*zY}rDfVA2A!D2}o~ z%#BhW5g{E3P=Q;~2J#r`z(og%(l%b{Flbmw1B8j=0Y{86NPv=8NDqsGwBj>$b4ttL zMrb9w2$UzL=LM|{d3eN`)zh3Y>2@R#C#O_<5KIwD?h{c(tYtt($u$s;BpvQFi18pS zLhdApksc*o3O1gz2ndd2&a@N4Pztpqlzi)$xoEw%bEN(0y&ICXZwyeWmHY6dZ=uxyMNePL?2nZE0 z8%g1ilK6>4(G2q`e_6ZOQU^D}Jq(Qdsm+IP0gNN;R^QPl&( z{m@(LBKO}uiVdATcMdLs8KXCHdI&rKg6dWsHC>edVl$+v1x()|PK zZjc~4cTQs6Z)o~$CkJUpA^B8e_6f9EO?Mc_fJQgquB1PEg6hs*9&i>8l{==0egM#e zWR^%!>AG7rdC}$+@9cd-3{AXq(TN{_v{8MhU#m`LQ5FIcIaYG^dJLC^)!g#~t$7cLBu73#*ZXjgT;Ggf*2X~lBB+YZX_!?k?76xp|L@6kDI^ue9-L{I-1 zFVqj}M6bSUOzBQLIodPv=A}aGumfrozcj`_d@A$|SOz=^;pqw3H)J#_){4XRBGmW# zSduQ@OMr$^2IAoPolrfaB=O~%@*qWK5IXs!T0Ri^FxCRTLFU)GU<9t&*O7XPW! zH_Q(Yz_IOHq}rg;00MJ*59{l*TYBjBc2>kas)?Bi`M0RO&7A25grsyUJ#p1zFcGa+ zlGYBW-ZpjWlyI2nR&_ZNGJOB(x$~lJ2EOqedM75lJ`npXp=%c`ul21W!?{}tB(3iv z90L#6%~00eGqG`^gHM?6U0zOT`NJyFjThb=J3$TAFRqSu%&*Z;y6K8E+27ti1Am45 z9m+a&2|0n{F|5y1pRjEcnq*UDD!4IYLYRT84yVB4AQID|JcKcJna~$GJxw{3z7|q4 z8I-^*q#Gj~R9y>}4K!|-oHPy#9*Tr0-iDH%KO#3rxoHT8JsgS>Z~|~rtQ)};dIKaN z0=KiAne|A}Oi?hByhot{2@IC(B*A(hl5#8csRtz)t;jiP1_10a#9njL01ntmL}Z*4 z=O8g>!RRayCOTmh5E{p6y@xUJ98_ktb_z8TM1p4w+rv0(R-hKal=hC6lzJRi6b~5_ zr344tjIhOmuG@-P^@e$@I%8QKvfpypt2mw1L-2%+cPH1~?Q%C^8Fm*G30)t{j*6>) zK_C2w7OKyc2kx8gtw|NFpQ$=yPmHn3@Fdw!Gqytkl$pX?Iqa>nQ!%eN+W=HCn@IhD zY!Y`#xuZ4VLk3L0O3_u#*B8bP-oOovWz~^P*ph+=B}PG;E|)~x6+?4Ehjzg+XPF@X zuYdJIKWs5u=!AO%L1oZcv8lNs3&ne00a8^97$-aolGVHrdOqrbRm5b?A(kCf7Si1@ zI-waIYD15qW)k-pW(+oubou`o$|aaC(A`sZ$^{D=v%z(H6YyxrAzGyC$tnbB9h%t8 z*#CavSV*5Kn$-zQApwE>ghDG7Fia7t{{J5Va0sUxP#c}ozU^i;&=XTXX`1}WjNl{h zzj#bPYw*4~Yg5giDkjzc(q~zlyYf0cHE@?L76FMp%%o3lc_FO#Z~8QhO* zf&MFfN&EKixZL2vWed}+{^K!_>lyr;K8uxjiE5Kq-glDz@zb93n-pj8dIhce7#ciBEtF^pA?e;pugK^qHFt20oC-M86V`6(cd`=-Sb!bdGwc^ z=#pmgExlvqc;%N;Ks$D3T#atC8%uiVoxY(-!MVR154;8aNV&4J(YVRd7Q1D^hnFe$ zFDKRAs@^dYC>}(i3*F0HFz?*2hvqIljcWe;&|7NwlAy6Y%)Fm4k$+QmdIpAOR=lAqL7!I`KI4?);DX zwY`%g3K!V%ysfrUohQb{)Gh;r#C9V`DIYB5M`*FpCYGN#spD)u8;0@5G zd21P+XBY=SFtpF7Pod?0lb>Gr@mTaBH2Fn?j-Kn0{B+J+C@feP{DV-x>PX<$06llG zGRJBC4Z7RgGSPw$7bd;U{oPDX?)d$7)zPO4q!gCgYw@-IqL)@Kw$cy@jR0RrN5Y*` zIdes2_YX0x@;swumQIDa8f~=?arOo?=kGQ#WxTg-&1h%3O?WSfAE{`j*KftgjyNkr zc#|1rot&yMYk)3ZFeNDyy@Vdc7gY1ikTQ9GmT}t^2&H{?p97zpWB1!joKNDeXkNFd z+ifTwpe-n&{N#gzi=@db5hmY)-a=2}IXbSG^8$Su6A)ME{@tANlN$kQ!DL5AEc2Ga zQM0jxj*ra0r}Z_LywRS8$w>#ZeJn>8#%Jc8sYYwpM+(-tO!;KRcF|sOWp%5!#;)JxzmE&EdM$T`zY`NPgy)vmtM zzfgYo;r=OcUq~RN2iu#r+s{Uo-91vsLCU%_up0fCHc;7GYVLG#}?>n^)3JpE2?EhG8IKMO@<~-nkEeqCJYgR00DvkQGf_gpdi2y zDAE)unlx#eGA&xNELoN;Td^zK`RV*lo1U~w*LGXC^{(66ZRb4O*>vNxHf8ML- zk?qHnNC4j-@B4l}pZD`+MP9+3pcsl-Sz|3PCmgOPS~{7+!diJz^4U>00YI+8=lvPh z>GF(KEtg}A*4Nr*DWC@dOh`G_HUEjm+OkNd4wTL&Oj4OKz~F6bWl zJjFS;3xE*I)wK_Vh9cK9G=;nUkwl`JHN_A|lZX_{%v6#D8t}Nd>iw9%_`^>M<~FXF zjG`vk!o-XvDH7Jhfv_TLJWr&}U?kS+oz3Z18uPgPF1tWsiojV$Ii;{3Ut60$DpiV_ z80SzLU@tY9g7$5hq42OLLbALrYCIhRZK$854Bg6UT9Tt-hf_1q=ap43o{HFA-Y_q+ zRyLhUt04XI2Qh|;0xYP-^rS9}0?UO11WxN(HeXPavdLpEkHZsYOe?KRvJztmh2RuL zRMkQzla`?&$caUTq{>I4z?HB{Q4lzWm1QF)aU4r1a1DUKlm4I|C4#X60E$dfR>ioc z#aLb;D3V~ABuFTAEiNW7DNYC&5p+iMd`c1gZXd}cORB<&Btr3NHI+6JNllVds)YyJ zxjJ)akRN{2O=aEU_;?t zkNwe?9HWlT79`Q57-pEK<>s zhm$IcZ+w&rIb2AfAZ8`R*NS4ah&!KZ4#~B*|Lo%;)!y!6vgS-$iutsprP=m=t+_K~ zR_+zSxF8&@tuC)A&;XQ5)Fq_#p_Wc*?)GaI-fjyLw{s=h>)C}ym+$2Tmp{bHW-W`i ze|?7|v9fx%lHr1}cwGy%Jha6|X$x=9s9rZl&ljt>+u21+^}9v7qtni$GP5e~cxszd zet)He`~7ZNTUpY=tzG`i((1h;)4X+yE0L{Q1cJ!vnVVI-`I}q)>06(E)Sy~-wP2Oy z6{TZmi=Qto7ehOq`lda(`pL(0oNJ$rUAuiV>1*2?q02Xml%r)|*r>l&mxKHEI;F+8 z*HqLIj%za|zUym$xRom1|LK~E`F(6^t)aSFTb)vNxhldN+xTpKE~^o~Fqy2*&6<&* zo3yGc#lVg&+cCYiF(=x$Z|xKccUNcP3@wOSqb!Y6FkKejg?s?u&=o* zT3)-!SK{vQb6P25aZX1&uH=`NlZ4mS6%tfc z1_qA`DYfOB^QCC0b(@XNZ7i=+t*z~(4o$U8v(JYag`2BjGt{xG1GDB?T;3!_^yXqf~=8Fap9mOSJv`*F3_?!AjI?4a=DN~yqy?tWUZ)cXDg@8 zEZ;Lpr`Lh=>6Ke68gB1I+AEWpt}vhSaUATqJaR; zWzz+o^x9k@t-5-5DS^A%J0O_XQUwvG2r*ZyNT{Qw!zWsEYqJ_1?(o`aX(pQpwK_xj z`qIr(%x$xyNo%2OQ9cYMqbwiiLQdF;wb}L6Vup3w-C)*J)Z)2|(t)A|i!v-h@tjpm6;i1w90cDr3vvYe7IYn9n#*w=-TNvjGy-Hf3nbw28|weLf*lu@jj z5)yRVNjYt$Q`!3b{9H;8`+aT~29bl)h&b!VA{_4UhB*neUo%;SVWUw&5Ud0Q5?K}G zkjLewA~dHddM1}iWmSO)Lq7+fFcLBoV`W2Bq9RTL^&=Kk0t;f8s3;VU(@au>_z>e* zUCP8bKEm+O^`8|5pU3G$e55KSA_#%R7&)(kD}*c;*=^E$~<)Qn@V1wC{_x|5wMM6!jN+sj0%wpmE{UFUvm+h;$$c)Xci%5Evw)>9ty^i zsamNlVq}D16rk=g8iHa{;0RBYO{S8HCMH-<@#LxHzA`UDN}P)|QUojQ4$fo=}uD zL!qsmtxhg8|HeWk>vy;UHb(QW<3%ovD*=)xK#i>H^UDjBLZ_o`TToaIZt`XsrB#fE zorrH$xmZHtVm$&Q_d{*9IX1pXvr)7oX_i8(Ej>*gA72+<&V)m#< zz#;wS@T$35nAZwU()-8lfq;{v=fj^01wgUG2BJX_a7t)at|d(!Wy5Z}H;~HZXW2DM z3NsR>goTjX;gRV|8v2^Dxb8qakub|~u-uuH0BI48%4|f3X$u)_MC4*}EG6j#5v3(j z5b-!E$)yaPQt&`j<}4}B@g$+sTA20)K}2p8718D4fe9)EVsRf&YoQbxC!~y!V)s2uhns~ZVC>flC^hLu8O2wl|NGlPm4Z3pV>YO3Dx}NTA zVP^}g229vVM;D6y{{xa+rQFg<5mhQwIUJa_PYGRI7}nC_;r5U zUfr6h|J4HSXy0aw;%3gM6~pbF`)p=*{)3fxK;COhI?cJ-OnuesbL@o_MP6*AlyK`_ zPsq5rvNWssZSuo$1=n*Xl~cF)d|k0*CBLlE?w$KQVb)k%C_;7RkMGT`gmjJfO1V&g z3;8mYxw!`3;@sKE7meBs0hO}5;=$ewk|j%_tNcDvVN)wbCCh-DLA!%XNCxX;X&+s- z%d==~&agDgXTvZ;&kL+3MIbw+7&BMTBpJufuJpd#Yoazo1_j=`vo+v|&Xo#pHUvBn ziLx_AMT2^DCsLwv>(KNo&}OW)HOvL1wM99X@b1}avtfyBs#FvOicEQ81vgvGM5>yj zB}CYx%d6&mBDj5K&cw(v=QjRaO@i#}2z6HSf(SobSnp&={4No0U>JY_m$MJ%^B)VpJ(d+mR%nXuNI8 zHN4I3b+>9u^>nrt4kg^pnCKu^lVR{JYKbXa>edIkoagpMxBzM_s(Ma~dS!>r;t=(A zT+)L3Y|tnuFV%=d+_#HS6r+4QZKl|k5a$e79Bx)5ZBBJ{2K{vA?yO}A9Xq{H1ZJ}& zpb1!7aRkCna-&gS)dIV=Y_pN|d-ZH8ytf63QO1fTXz6f}bovPt7t@Jc2KR*nXd+vX zAP`akkq7~QBc1v*HJ_BkV-5H0hnmSh=1kagM63CiVb zg{W9uUdfw6#E(EzS(Ks8G!!L?7$p#r4i=)EV@DU5N);9$u0?%lD#u$z7+V7hA`FMAZ}UNEcDC7 zP#X6^H4!t?io#KlKb!GrprfNR$ZPp*NdX2H!x#wcilQaTAc7*{GTl+$fG|jKF|CkJ zCgfNIMIn_?L=MU~Ax<(VDZpmI%d(yVZC)HhP#k=J42q;lJ|@$++u=jvdS$VZjbkpG zpTJ|380U3R@#!KKj7DTw1q|dVJfD&T3E&t zb&?A~8AmCamDfy}L@_)>;Gr-BV*gYML^=d0KNU?S7$G5$DB=maP?F$OL6Sj%Dodtn zCbbm&fCiCX7no?2py?>6EM1`p^qk1CD25_<7)r|wC>#}#$fdMQE}Mc$!jd6)#yHKz z3@w+@Wg_CVM=3=$vsNN0(k!HdJQvrMg#O@%Sqy6aP>6su5Xx_kk$KrPG+ls2Cdzu+ zEM$OBCc|g|WhjQDaEJ+{46T)L%c_!02r9H^z+3}(13@{?QaP3mli)fM3cwR1n2@eK!dN4sy61glioRSz8Wzc8@hpa7?ujK(CctDbZENGR;bqk@(NiEp_CxeJM4;Xr$9hgWN?FVELZ8UX|XQ4+OM(MkXt zF0-h2Un`i@h&n8`oRQ?gJq*&JFdB{!lvXTMGO|RH1W8jI52AEAA+jXmx7&STMzM;s zD~+uAAQgwf^*I~?T-2)7Y6V7@C&_3u9D?VK)A3BckdrZY``%6`3Ugl3EkGjRzTr+u z0y1dLO6N1BLeW&opw}G;;$hgqGNvW7QEw=M5-f$&@I%F7J|mNuA3;3<(J zNfu`ro+J?&hZK? zxwvkMF&UP<1gomm=JRo>e50nwJl4_Wa(SFyN(5!D!omDC6~oXq+7Tded3C*!!<(Di zJ#u|vbuP;bfp#B?Fp`?qM27Ptu|yKIw>sT!Cw<=BOw8bIEjAaW?H_KJX>4*I3dg1_r#LILIV#3gFb5Q zUcOX|cDmYt`Oq{4)PW!-4<*xPJ?)j4JzPn%)=Lp*D2PgnSxo0#eiRcE*?dk{H5_vC zKuk{;4NDJW5P6ck+lJ6_ZDk?*VEou1hB#23;5C7OfsDs#E)m6KoX%#|jKTZ-K@XNx zTv z0A$jfgbO5%MI;O+Uv}0god59Mh($r5(E)9DF>ToDT}SOo--k}Ojs77hzSTruVv%k`N| zG8)0q2(EB2(>XFO$61Dw1jFI$eEaAot zIs(Q}lqi`=sg#Uaa)Nwti2&}xpHLvfSTiKWw}u#zHGjH3yF%>yOiQy{T_|cQ-r9=L zxm*88-3)d-)>ZefYhqg)ho+X_FN&CLR~IAd<&}WX(}{?0E;mYK>yyp^TUg5iKJ6j% zH`i`f;=8uFJ6U5r&tQ&yP9c|`ug3zeV1SsJgDorJbOPWjn^?2Q){Gc)vvZ4*+leq@ zZAHO-5pSs0uo@-F<|ji;zN$xghYd~E>i1XTh~4}6_6Hz&QE`OfE#@~WY1Ol%*(->} z1r@_&uixY)BS$#`zOb_PMq>sLNjnyUr|j54bCLS3dSkK9V=NM+O$p-yJNAVXt+ZSU zdr2EvvC3)PwG|R+d9}<-j_uq1NwZY9f`P!UXr-|6$-5cHz8z26Gg%`|wC+ICg^l~m z39uWY6t-B((e|LLHDa1_O7M7soLH=tjAV#R#>|2qwQXze@aM}VOCtSzZlRiEY_{h1 zM7jFrtPyFmcLt>8Sv?tU-|LlYZ+x<1M0dJTvR&uDy$ z4+%u|1nc)YTEVz-zMdg%tsUW5Wn+0Z9*B4t5K%J_ODJouS}Y_X7vKTWhxi(m1&~4U zQ3=FzoI*h|kWZ%oL6Ql-x6>QIBsrJQ0$+fznM@_GK}Lo0stjU2HjG5+FhVjAU8~t* zCT*s3@u;V>(-9yPGnWMrUqT^6_BaJCRfQ}ZD*KqD#n~DWW@fBKDdKdKKGA@8;(}3{ zR>@ES`uS&yT#16LnWYO$#k}S0Y_s7>R?je!@gT7SXpN5LXAQw{?6lc|7?77Z5ANWh z+GZ)IHxjQD3OW+@N0c;W3EPQ?Tv)79oWtQ2a}{%yKuKpr-&Lef$tEyV^yVM@rrq7VD9h?tB; zAt6ns%cZnLLA<9D7I05-f~JzWjKSj2at#9`V$MB~o{QO;qRK&nAs6a-EgE)(I0d*i z*qCS{Oh5?bh$t@S%#4W#91dL0R&xo029iZERLK6LYWn74MQwR{SF_hrEGvrAm|V$# zy*kn9)|A>J;E3Cu0S^TLhZF-Gu$Yl6G#}pL<+-(aT@UYdJ0qEzSyiYc&(%tqoZIPm zT2S=$EbeJ}Iv7(|ECO%uj3sLKp!Ro0Tsx8?ljlKbus19wSLbq7g-?rcfvKd!*SSS5 zSgU1xZ`;#;v--wTS|j{&%AB_dZtphAL9dr38RT#7SZU?Wb&-yF*)*wT!;H`&fgM$Y zl?=}|4<66oykFtt{yiiY1ZY{ocaa=YzX_e0j(s6*<%6I6klV56@rM|dvy=|X)eNC) z`89~n4yR-`mTxUkE&hEwcnwb*Q8luQ#NFw;qE-w8kSQBxHn7Fh-d?(0U&^qucPAfq z|l<3<3oh6wE1g2lM`l~i6Pb+SWO9K{t;%Xr{rKo<>kpP~x)?iMnfTc&M#(V@&n zytLaMVQWP(CvJ-*rQA(jVUU>G5wF^WSs}y(+MPtDsLUw)0;*j9;i?wixfP@(DEogB2yP93m-2GqNH1S6KT5l|g7#6~$ z<(Wi+YW7&c+)YkaD8xfEf%uxGtft+5pVOC^1#B!nRLxv_`~_!AylkSjA#yS9rQHJgUxJwgcU?sT9y zS667S`dG7u0wi=S4zEFCji3=ugzi$FAy}x%lTe|>B`zFg zL|F#LQlfbrgk>!7lW`FJk__&J+Ll&~RLX#apF$&ylqy$JriA*Ou<&sL6upT!s7yi3 z4NZ;)kgh5f35P?J0NI-WxCzdH$AkfHsWPPBzEFT>KvNq}s8F-#Ae9D=RN`4#;c+w? z2*Za%a-tAC3$%491&Nak?R)rW93+I{*8na>%1p$@Hy?I&o0hCIiNW>~w zrVROQm{K9p6JnsyPRm@1;u1KE+DTMHM1KI`w1t(Ng!yqv*G%w!g3d57;00hPgi_F+ z7E@y}GA8i?9ggRqt&_9wYU^N=jrF-ahq{qis<5Ex9v6W0@sg%_w>`N_D%@MTYtjB7 zit5?yEyERXbUEXd+FcRf@p!A>sN9-0*dP$n1<-rbzGzBMr3lB~F5IfWwq6l^zKEJ? zR5Qxc_NTXa$eLUi{4Rf7tIRJMoZlPei?g$hczY1o&}1D*mSD4AuoiBWqyAlXt}r{F zCD4a#_GoGOQ%lG9?eopZ%L`g(m&Y$xXP`PkxA?=cMPpr|nRXThbljkwt~i#Qn`L;a zldXv9oal*yHZjG~gcagoa)L5Kf*MRBSaU&5Lqx(%BnFBAu@GYzZ@U+wPKO&yZbQXVDI0LWp%Aic#qKHYy9BZjwh$QJL zETXqMtD*QuX)PArvjecCQdy;gs5_dnlB&ni)d_%g&P-;cwq)8{Sio~ukic-$fEnjR z12#F8od;(*yv+dtKV|YED6aw711x2s0V%&1ik)PFO)vqV6oHS@pl|`!4^$fPc`_RG zBM%~ep;k7NmdG(s)N%26l%xfyCjeQBOR^;b|HVPnfx9U#N2~Y?HX$s?bSxs61 z27@LB0m4d#bCxtJ;)f>h1UPLI7=r+g!#}v)C^Vpg^S8`#pu7dOk|spK+027VnOc1= z141$?2;3VZ@d!f3)NFO7oHbPdqJXJN7cCz1*;;&*V&qDC+5k*PfQJPQ$ugj%QJRT! zQc{a2H6FpJAc8VL*zv3=s7YvJCZbUgszGsPBxNQT@Zp@6&Vv{S^}&|PSow^=0NtzT zg^~rLViq>-1k`-+7C^4CB*PIAfDzdkptE3&j7tfDp~4<_h=iC>us8~!B*1^5NCfUM z;Pqo%Tro@8M6RUb0ha@;$RU)(qfoHNpoXRSFr&v2U*&jYbhfmdb_$hJ*=6ZU4^p=7{nh0k}_S&n<>ocblX{! zjFq#LHXC=_o44$f()sl_i-JtG?eWKq*}JzFi`bsWo_ex{ZsgJ%`B*q3c%q!MO*Rvi z_gB?;aLNx09ic&dy*WeQ!yR1$MTFiTwJ4&V&O@nGzNtp^yd5tHh%Q*i~8`uDxw+3UGKn zVB69aRI7_Q1fZpWw6TsD@lH+nblqY)TDOYvg^bE>?{ovBzmVnZ9#1lR^X{zXY;Lj9 z+T2{1nL=yiI$U=<4x;O|q!`%lZpjtW^GdYM7l9ZoMR64LdgYm7f_u`5N0<2fT)X>e z9?H#9S)oD{SIa0wr)wW7izZ9sewoje=9bc&S9uunomyul*lgdPByQcmU1xA-gej&) zCh7#$feaKz3^bU~h>=Rfcx66_f~cL7iU@f8;Y>Bp>L^aKGs!$~7*0YI1)B2({83cNVEW@a>hysGB3IP}mh#hDB9Sl@mcURCChp`ZCPA)vP#l$!TV^gE;{xf0 zTa|(pXl@7pL(>G0LX?%Nv*iLX+$x&380%e zY|c2K?MOTt1Cgz03JDBa>Q$wzS;=_F74+f}KB=ek;F>83R<@c}W3VT3oC*LC23oR& zP>7i{nUiOgs>UX;ESJJLD8QYF9isstHzBcub|y&39*EmOAV(-XAutj{0!Ag4P|*k5 zPc^v!2n#3}RLX$th$eBCO{ma@Bf!A~de#6Fh8PauGb>9p3EHs`!pLGQP0Msvkqa>+ z1Z=Wmq@mRegDM0T;d<3pQ(kh#(VPydFjbVOQh>(vsA){l;lk;J2A2)#FcUX3851fc;B}zhh(*HQ5J%+`1tuQyx;u$TAy>`n z7AL|5vTT&V2$*6F$3{bTl!)oMlBp^Gq5qf2ldb2{`!}1KHvfHVVE1Oz!<&yFOZ#2V zY&Ly<^O2@c8hx$Pn@z~3GSqeMPAmS8yIzTmPskT%-;1oJn?CsECyl0`_dK)NXgc@d zBi~+m#MgzmKrerL~X$ z`NzeL&0qca?eG8m&bj}g$iI32#%eVs&lA1#ddUCcsYmGkZ@l>IH}^jJ@YZL)2&X~r z{*MzOw>35Wr>3UQHht~6riY(v`uumkxxe)fa*ynH?XEs644o)=Z#PC}UwL=+lef>2?I={BX_N9lN z-~9b&wteR5uYTrR+n;;%cfY--=`&ww`r5uPKit~%nLU5_%(f>#^X#J!KXmj9PkX-e zmBa2Y?Kt@@XYe>T?0#9uyT#M~b5oA#sWS^pr=~AmDBYTQ=d$+dm5sO3AKW;9efj4% zUb!=K>-NV>YoFYH=f@Y{c>Vj=Kl%8L+?9`h{MMU|4?cY5!<&Ed>U-BV&Td?N=dD*R zXMcWU?Y~{Ff4^$}=34il3 z|Ng-9ZBOj){KA&cJ^e`2!;dsI?R;>dpM7v`{~uq!3$Ok0mzw_I$tD<-{Re*kv6h{? z_V;+chZ8$Trn;Las~obp&d+{0p}w+mtMSf_GoQYH@72G!^U9xW{N2YN{LO2hZ2tDz zum9o0Pygl4r<;HK$zT5J%^&^6=7%3_{`mf1zxT#(e)-X#zPJ48W_9tCAKbq&|35#x z_~~-#^#-^~F6CbNP#FOuv9a09>51a#bb|{BODvcjrTdU^Mja8^Npqrgx1sFo8;ON| zvIObqfa%|TVshxq`;}+C2X-I-UWnYj`}yXbFYIl8?vX9u`SRCxeEHi49{qCD!_Mb^ z|MPqQ%QIj9z5n{nXSQtL)3oEs9S6Sk+|C!DcxZ>?*%x+w^N;sWcK+^*VYKaKy#IMb z>Fza^XbBormy+hKsyzMrjp_Gpy#A+u^Na6)@b~}pufP21&;D}rxA!-H`_~`-eDfdw z;cwsi%}+o2tH1r|{@Wkjnmhl4*Ct9At665eLEwqwv;EIZcYgv4kIw z4|Wd%oz_xLA0Mzz(n@S{SUA-^R_O5=dJj5I9ull0PMJfokzkh}8SD%lL;WxL9Y+rA z6x_Z84(tgZv-7xT-|^mv2M(<1IySpe?jJt<*q0uD?vXEkXUkLH`u0oD?tk`MhtUHzTQ6a!`nw0mhvm}{*im6)cDblKKl5bAHDbUpWgcPr+0q%H?RHV#_Rv|@xtxjzI$hN@xAxoy0Neh z-huPCrY_E<&s4@U1~i(C5R>|W6T{tykDoaCoR@0#dcJqynE%P$A=e&fu;UrT-yG;d zJlH_ci8C10H*|bpEC{U={R8#nSh`=%^pDqu=+x*KN#_iB;}K zb$z3$>A>$jBlbS`^nvNapT(>8Z$G}bd3tm6w+)53Q>_yI9g#gxHX#bK+i9De{O8R- zakcK;kL-EmOJ6x~VDv|S_2#?PNpa&Zesx1klj-AA!UbfJEEeDjH|{9JGs4LJ2iN_b zF9tq8<^w=5VB_XmPZdN z4@aMQyt$|U+|QNwdVJIAzmZ?Pk?1XzUm$y(%Hu5`tc3SB(nxG_>7YMbS6)2YxsKRH z-8V{XqpSB7ezCix|4OX(U3i$BD3mT$K^&)S4EI0GEgcy%GWG^oD z7J5SG7^L7hb)b7`cb_uFP2$zdj`^j%UzkkFjp@_Q>i)mHv;Sk{pNAR~r5DX{@{a<|PfEZ#!3>ogO*fZ7&XV zFZtvtW_o{PV0iFg)7U&WKX>Ya`es`D;q2>qrsDBgqoU$`>3~BfTMu)B^KAAG(ti>i z=_QqY4(EO|iLT?^!<~XPU8Zl9&%XMrs(H$@M@IV2%=F7=nKLiyQmE-0zTP?ZM8C~u zKRaY|`TJz$lin(vWk=7DYp>k-q+U)pzz^cZC!4p*Rs3%JYV}m(##-Z(o(bBKRr*kQ z$R20MmzDPEF{C^`ba2ZvCtH8#v&ey$$i;#-|I_L2Z9A~tu5MO5U7So^T+P0=SiJJa zkB4c0^;&TMF>bic&Kw)X(<8qAa}&FR$4+$ih8BzI(RVK{vM2kMoF|D4dJ*RQMIblK zG*a!B(-FrRLQX#4XVZe`(8=i=(|4vU-JI_3Q6uc+X_wG1oMK(h5r<669HUGQ^)41_ zvR;xei#J4qJ_t;cOQetP7nE^r_5#w~J8}Bho?$=ZotTE=OBySK#6XuT)60o2`9So! zX!kb6)w=K4h=PN0pjlmIaYHG-Vk%>o%`qLD?0CAl_;sIKq{q^h zJV+A(Sv*uui{pbznd?sTQzJ@rAk;e%aUtPm*R%3eG<04*1746-`w7$KGbb1vnSfSu zkxzo_SnA9qHC&mrriMjU9#n^>HD@0-eoCI0RS>3^Je9>2`SegS+H)8?$qxWCmY$Xi z8y_`dSpBSA+_=@_rzg~7M7VYLaVkI}!m!KEQ1WpPKYeQPlNIYyNgO?_cl(i-L%rY{ zIoPL7UOJzgDNhCa#*Pfg?%olrk?IScwDm=qQE_1S7#HacI)>y6lV|RfvgIq)$xHnK zQ@S)VJ#nfW8|pjR-m)FUpCak=`Xjfz@j4h6$UUEPwxOJ{GNe*2x}*~a2*Mh+d>^Zd>eZO8kq z)SbJx-(0_vzc<)-{N?uNzIW&lG74UZ%Brdp&WYLpwWoIz4gW{3vlU z*mdL}X+LtZ|3oUEUjSsGCW~i?$iZ-EsMk1YN28O2V9zpC&Q8gKIW(22j|(SG#)T98 z(y`;cCosO7X!Sd>6Cj0}sL9|X2^wWMzj<1;Or9&`6Dd75I;fY#iBVFF4iIDG3`j5X zl^8p!D0IvR%CrGEsy!v1yV$rtmn-FpYMMd#NGup7K!tYP?mE;J>?Nb4&|x}2h43CI zXfxSM=L#3*M^8;m7^>87ciUdH?QMnNiwYV$FeWN^FYP=Mf@9;Rvg3(@aen32C-2<5 zJ%8nt!X59FF=D(tS*)JBbZ+T3oF}4^ZI3q?Ie9W&7*mG_vjO2)SLfl@ZjeG2 zPmP}eczjsIV=--*?EzCkOPf&P4n$R(kie~QFa=Go6A%0@ zvlI&w(?K}pO_9`C!W^CeLGXw+l^yC2IwJn?K;Maeus4enLmaKe;)5rsD9QALzvIb% zbxc2#znC?%XUDUJvt=+GF6FY|N5smbJeVBQ(jf3)x9iQYb1HBaRyN`(jgkRt;ipy8DNEx`^>PR?GQf9-B9#U0$< z-2C+3{V$vtFRomgnr~#r(!;%m1qs3{Z!AoWhW0hvc5gY*?(4O#EM!u%*|Cbr3|ZCX z#f3N5il^9@zUOG!`oe*rk2$-PA2SMLrSr)?vvlq1{P#D`omP(RKm5}3J35YskHqKC zo*L2g(-+SUiP`1VrG-~777W_vceibC58$DrnHg(zFn+3DpJvR3>&utdm(EU(9QFqs zEqh!f7Kl_PHHnPXW~$>OGuKy_F0E9j#;BvH$F`#*+8g!{oCb^x$zQ0QRi;+2FE2Fe zXC_8MQE(F3)7{^5ETEWb3}>sgb6I_HZFTYd`ARm~*MHLg(k=%}MFPRmF=?Q8yjneL zTwJ?;ZT@s6ZwMk4cE7Nj9w3llU<^dDqm$K2?(~hd)hiY2OiEFQiDNJAJpuy5z{@8` zhp8l(KbMTP_3PJWlj-cZnqp5JvF+u!-tIt$APtOxYj`D}fAz-dm7E9=?itW=I=<(R zfeyjt5Qm`U09O8~SMFV3uBoCmnm;4pM_<}A!1s0gI{d=}a1hK`VLE&N_UgPfJZz+D zX(s$~s|#jg$kld&v!=n5v|ugWzj?Ki;6~J$b82tM-rN_XPaN&)Amk#bNzLihYj0kk zvm`23x^QL~K>q{K!-IMbID7NOVg_u2&%J$Txdf7__{H;64B~7*GSq)Ebm#>yv|Lvv z^;G8aJ2x*)#QX7ly)w}o?6RF4?2Y<5yF#bIQq(d}r@#N^%9*jDC|9i&70h$6v!CsY zxZ9mvzFI$*GBamhzcV)>4`Ab!b9n)Ixy#v4^&dU>Vjyv5X1)Nq*vy+ZO4@KAZI#QD z{YMXXdVuHk+MNB#a$|8ilbX8p+7&pm^W+$qxlZ)>Uw+9m5IgSf^d-!5i&u&%t9a$s zIX%u2lSVE#77jQLdSvowmn%Avs$E|ynCaTW)v2*zQcUZoPmgpT?KpTsIpKZDHT9=qU%No^D)8s`cxu7mH`>V7;qwC*#(*G%_am zUh2UP2b?GI@ls=c{(9p=<-7%MUksKolQBVO4*ThFyC*7uK&fDn%nI$ND0w zF)9pby#c)c*dBK;O_i=(yKv#wt=Y2$a1b0MdPbp(Zcy#R$-cwS9c9SD3#;?zF225T zp_q>yqx&O0qpHXZ$Rfe?9^B<;Nqz3>#hFVVyjDD$V*)406VZ4Aq|vJ0%Mk~k5A^es zmoL?4uYGhkcP>L8^Yw&IN+W{_r28a9uTwe)GojB;f+FdviGPRJ=z0#!~ip8 z4M;@Cp+mz`_T0t#+Q!@0&)4**??AwV^8(Anvu0dA0SyR(n66%&ySs5`rExxid0sf= zih{lE&{$@|jE4>#2f6R*%7xX}Z>__c6C*FT9&ix-{hSJfTxP`U?*X~aRQbZjYs+i5 zuR&*(vt{o=Aozw)!TG0CgYKT*;F12^*(FFOkH99?ix;HQo zJ#t9M6>q(9tMSUaSB$=+ozFdSI1&-e@v-w)(iqO6&JKC%+`ZS9FTV9|Bi`dZu6hTa$GeD0B5$3p6-D_^Y@M$r_L@fm*FS__dzF>x%~ZC=5KxQR&@wQ2+a3|ePgO6i&Zl}J{)30Gq59QZ z*Is$^op~$jYy0lAd+bbHJ9GZZT5S|XUhX&%8J)j+WQYTZ33gQ~H7v6AWQJahu6!847G4>p$Im|Nmdi>K>*FU#@Fh1vt( zaxw6*s-sW0*+xYTVHzZ?wNF2#fhHaA$xFiI$t@>kEN2)6G$J? zGhUuwdUY;6X$-Obkt2t@`k@=)jLeJ~q7V-D_Op|7^Gnw%mYEod^&L{7#bd?Psr8ch?3~_5Jp*7 zM~3@zvyI#+IE^P$2|UL2^iQ9k98pG29v#sUa4O{Hvvw!Jl02J{{GXoxz#hqh@@dBDe}Y- zcH-RP^3-^2bmVvh7_sA0xqj`+)VMT00&TlJaE{+;c>Bpw`N3IY)XAgNWPSDqn91qm zq_c;@0)m>Uuazeha}aY!d(og=xO909IHm~^wf7R;C&2rE;aYBNVmyL6pgtnTVar*` z>!)?j*Gb|*$w(Ad7t%(0use7#dIC-!oV&C>mzl~Yh=W~V^lli5%8iBLwJY-@x$!(Vy-Y0?mp-Y`-YAB{OWqCRvPELFSsH>Z9*Gex|Tl& zP;}_Pp->PGzPj|vYV`s*g}Pci-F=p+j;+kq%85w$=-z|=f$_5om%qPs8T2#AOV4{k zO3D~btu4$>4TMj)ciMf5IeYo)?HiZRpJMzSdtN?aOpMFLmDL%IM7v*l2Kw6b^K&;h zZiCZm&*8S`T=c}Lvrzj=7zQuRb6^(DaD>V z>D~RU7sc%S<@tLb-Mwfr$LxE*>lugkCFAbfmqtNQ;@tY^;nDM#FE4!fgF;JbG zn|`|jY_s5Ex_-SzQ74tMQ*^qb=s=jJZ{=+~cC)&AqoeOsQ3jmBfy zSMM*%!viNew|-+^{^F&^(x3m$2ibUE(Ej{W`v>B~BNtwMy$*(_p_VP*IGUfmH2cOc ze|5_m?)AU4=i9ack)N2mbEiBe^?90~+KJ~b&R%`*mw$ToR181Tv1@B*pCH01-RmV? z?6L2B_E6sxkar*b;@x@Zygc0g?6aLXW0vP{ES)!ojvv_F8SGD8y#D$}Ke%&I8#v*9 zVQWk0@!_f3rK^`OjB|%u{~w;-Ji3wdywgo*CYhWW&y6R^89T9OoLqU2Bx`rK+D)}c zkz$igk)nVG8Uz{y2oMAa7Epyk6$(|T1%;)s6n20hK!D)ZWRuM%dly@3OD)TiCEN1I zn;c8Av)yDe6Hk&m$<58ZGpFy5o^$Rw`a?%hfvEla-tYZA&)C^ns&H`l&bPmLxcSSU z|K-8wjJfLi)}_6Tl=tkUWg--++&X;cwO6jLCa_Zf^h0O*9p%dU#^%ndWH~ounPMWX z!^79^T))(n=1hZ6esy>tT&k?CUfgW6wt1J?7ftkDzH#T)rHv&KfBq|{pEHFE)zyvF z9;SFf_jx**T|Kyb`+B!iZBDzqwaiEHdZMeD&!O zhcluzds|1~cy7T#6)O3qm8;jc^5snE+;fjVXZAR`^y0=!D!Zh^Mj3BZQ`MEL`zy(8 zVt(S8<72a42kao54Y|6kL+lBFQmnFeuv3*2lIQI4e%t(&kitEKkSa)8lgsvkv$);2vFUrh;^{gNRpkcejPd2z|cqxeLU+Yep!qRBMI$Vq!tV zY$g_4+`Wi2Rw(dN-wVE=Z^j+3wU_GoYE29;uhl@!=bBcx?V$ZDkpEzK(K5LsJ-SdnFSi-Ln_Q&Z9cvw$Qo7 z&1NB8$doRvmNb!WUaYCy!nD&kbpdJ@r&-myYn6PmkXgI5l*gQHy_c23UaS4Ww2Oi4 z@7wdXPEnnK}AYRAhSF#GbFn!KD zZw-e0GgFMbboBMg#+9ALLR#c;0%Ek!W{J$&LZsL3j4CUgf)>vm9IRFKB#(eeJQ{RC zsp)i}O~pRPWLBH`l(KSjuU*c>k)lr_CpK+~hNhhe`+4Ws(rP)I(yraUxLDGZ3>56> zTXDMNc{GmBxqUOydPh%bt;1`bnvUL6G!a0d>EMLfX@}oEKRXj|ErIgCcXwy0oYiuO zz{SFFLc}Ak>FK!zpUs>+pC0*aSdv&>% zuj(->4$eCfOv-aJmh;q{-4f0%RWj{scek763f^V30_()QpmDQ~b2AGF%`rN>1!zZF4$w>q~=KzwKob$(5t{hyydT?<$oruw)6l_|xy2eC^ zsTYQhKaWs&`tt27S8gBla@af&hbE}HR7H}{HGX#Bi8FHmC?6i~-gxCwB@q`w3@j6s z1R$ncP1#5 zZ-3+VjmL`2UR+(@St%*=7bed1ojN&Wq}AH1cW!U5l%!acizOGkn|r%U`S7e| zeCYJ?=SFOiB%W1Q*IF7}72!m+y}5UFqb>$#3}Zum$A`~PM@ySm_jY@Y1TS!WW_fk@ z#(qbO%-dfa9Xk0ngUy|&Z0xM>bSq#NL(bjVzIkK2E{8nlL9aP+#%2#DYb)K}b}J{u zxNx=GyK(Et7r`H90j!vx!>1 zwz^SQ#VFleS-XAv#?ffX4UF5+bI6KvEXa#^^p@iSo9K40ynOpgH4!Bo=O)h%AiP6F z8C6TxR#ysgl&`OB+<5sWsD@$R1;dMH#-=Y!hoY34iZ@r53$cjSS=qgPd%u~+g9Ws* zF_Y8b4zml%gwpCl<(#OjY@r6USyUqnj`Nde&siNHDUyLyJkeTSR)uVHW#{1LmF28N z&s{K&8%&NFw>Rt&l2T^5(-bnf<;|UI*ESnTo^)S0_oD6m%$&;~^d#b9vAt4?>!p>Q z-Rpb3Qk?ZWrm*Mm8Kb~Qr4?K+E7_c0-`w3f*lgqe@j9l?O`o^Vp-?v`rX;n#vZNRC ztxLO?c6y7+DEvL=Y<955+%7knOi0>duU;)p)_< zwvZfz)77P=m1;@vZf`6?M)qn;wH1ijZoH6Y#vI#2}d$nRkkC6*A9=FZ% zlGA%37*dKTomacdP~&ztKuLzA8c%!gjMZ$InRPQ%5+0NqhVR8vrMuQBXZ1AZBF;I7 z#dzM~BpEW>KyG(&72da6t6ME<*#vCQE=+6A*`~apju(2}MzP(i6pQd0m-DGKjvkVO z7tB*OGaU^_8XGHx%F1%NSZY-3P^}$W}TYyMc!2vUMuIT z6@)GEgDG-;X4*LgY7{GoxTxBfHj3cr;h*G@sE`T-iD~<^IiQG=lFaKEa&@xBN&)}K zs1BhwkMdubw#~%kR8m2uv$Jt=F;gx>R|9EOz#EtkP(JGgD-DHBQdX5kl>cg3sB}uj z1o%#F|2!G+oVR+RY0D|_C3SjhO$e~$~7UhVV!-;ED^&*5kS-kIjPRIQGyxTGz!@<_*Sh`X@I<)Zh zRP>a<5VOu1v@kd=LA_ot#X@nMvStmo1z4SO*f}3gyT|Lcxsr{=T7r(`D)m|wN4|oi zi>NR$JL9s?dYm?{zPOkNe5q8emCKbO?&F?R$Jr1rN=du&Fal=yOLKT=_j7-42{f zF|>hV=g?LkfYq_30TUgD3=3nmc6YgoLx;_=b0(`R1Nc~7V#s*`Cp?>7>UNh(Nn96m zh(K6P4z}4{u4iy8=F`PuF<0w!mTPD_hv93+X@{{8)#0V0%u@4#e4&uXJGRp*s@UA) zb~Thg&PR=o6lZgmBl>nhH>$35+^ zoexHupcJHF2%Gmq%eA=G#a~Yzoj4E1P}T)X>%!I^V<@PzwQT9)W(PxnI1i`Xtix`b z4WTV}83}S4lW-=ZcXrl0;76cG(?92)w$GxKtJA3!;?&V3J(^wI+U>P#NRT5OFy{ou znPJLkJHsYjgKf8^c8YNa!`= zTnI(j)MBHQmxI9ofkMv8_U=Ut6U7J}oS$>glaXjd!)2D`f`Q;dFj8K>bg5TLV=Mw0 z)*R&OJd|>^Vm^(8RDcZgFivi?^C~n#@QV2%$^y+K4i55x0G_-Oy3|I=G^AY! zbRoH_m5Ru5K`tk-;TRvG{e+s=!RJsQfy4LnsUkj?R7K)LM?W9*;}pO)@XKNE6)6^p zLpc~%j}SE^7mG$n9|?O}19dSTs(4WdD+OrolCX|3q=3(Z-f&)T)YA!>;}!fUTExl7 zCRI5KX(u0Li8)R$E|sBD`{n0670cmpB;$}(g=28yEzBu;yf ziyMZxSTy9H*NUyBTvEg#!QYQyg%OLS_-iN=x*BCe;RyB)ER|wwxdN+PloJ(MWJA1yw;fn@A(;1~EL1Ml zb}NUI!SOi10uvF`awUta54Q~rYpjr2TCQX0&2y0XVGPRi>2f)V%^941;0&bFa=WPF z>!ZRiuL!ss%LRxls7Qp3;N!$nr=cBveU!&SEM$Mu(I^Ew9|5OEh>QC2a`EWYa@bxJ zA~8wP3n?5sHUifjoPy0x6XS*$F4kxaSEMMbI_91sGQt7?l9cnyof0k;;g_GskiCID zPK&{}1;HKU(n_t$76CLA(Fumf<>~vyt-0O936Qs!h{)? zi{T_E5^+S4C`e?IODk)*sEufPH1rxssx=O#mj1~ySkzuZO%v7FnweP!*NjK zN+d{)4zQA8~f#s)CynXHG~|7Q5Xt9w@)uw=hk!Q9+RtIFC$-3JX%P-tN|N z@HGCfzfOm7>OnzLq$uQ)d<-M<&SD;u)uRKCA5TZ3DLJnG3U85-l7h-aPXXhE$Q=uI zK(*jQZ3)RVUiXiqEs}Alyh|f|c2;2hs_LUSE6Hb&!_AaP27kp?W{n_hh*lE7OtC z1U8*mD0aIDczDeu^b~Hp4e<}z)9$#VeJIa+Tvt>Z}4`iJREA>iF84u8#30mjmn-bGnewTCH}0lLdtXfi@8!9DrVlQcuXqPS>c}ha6>_a|5IPf%e|AQw80Qx)@8jde{ zx9vBMA!S`}>9WC(rGH0&HwW0=w^~)l@Trs3=4*!~$&Wy9Hz1TUuPJ5cBsI)Pw{O;+ zp2<_A-WzLc;00I=tTqIm@OwUa@`Q6B)A-YSH0d;)aERZ#DUS?z#sa+oa%=O4JmbMi zJi7*FfQbf)i}}u*UAGAxR(nHmjr}zv;Ge+8cG> z>8Bob`V)sO#fnObOS-njx(L%r-;jZ2_O>+7#8Y;u_nmbedGs-x`pz}M?6uqNPg(1Q zYh^Jo@#x7w_rrB6V72v+YPS`?(K&(0Fe7j7w>%RkMx6B9y8^`!CR^cM)#gWPX@G1p z<+X-)1j!%a-j)~;JSKPNZNg--3&zRZI=iD&<|qB&GrigJ0d3)y-ls;;n_{jZ zyG{6I)`l;29YQn``aI z1q0+_(%E#lDxL<=<~ZQ;^q$ETecAfQRtmbqMt~3 zgxBO@oBOy?-2)KDbJ8fKwDkk^q%mN$H0#Dm$MGlKdb_i$Ob!@9pa*bT;B5|VGvE<@ zCygn+`{scN?5>UP>}Dv*XAzo|L!bT1fQ;h1xUh_M(XP&T1AAdAPeof;AC=;ppl}A9r0pa0W`CmK=@?-2-k+8te35V zf?owA$LbbQ2!LeGH9A6)P6l8F&gX$m2;t#+8Lw9c=v8QyQ6h%(9N;EG20aU_02T`g z-3QI+r33~+Rip>yI-r1@LfJ=&T%7~VkoKD_ej3FB50olS2QbiuQVA?(Mr=0)m!D+a zCJ!Flo=FQ~Lns{NVhpWIf}PQ|I%o_j&OaVNERkc5(x9Z8k$ea&0zxQj3Nqas+`%fK zcMS~AkHUG#*19JVf0VSGCivYnP{klDxNTlAAsHS|LJV3N1=V&5Ln0puiXWDTK|}X~ zNQZ+!*g>F!5}O30(&Hy+0?BcKBmI6}^9M*sqDff+w$?{u%tY+9&LnVA*`Aex( zAw#)XtpF!MSwcF{E8=hP5@kMZ^s*A*dxZPwL}U_2OgqZ%0*%k>0R)U8SSl1Cn|j^v6_5$>j=ozmq<|Sb*2E8_lS( zjyV8110Rnj{bJJ(a8eb_Os8LM?&h46P9OFLkw})XPD0XP^Vk>^|LiV?MQD+5iM&Om zbY(&k9HSi>P1vHZYG4vRFzwY%!UtxeP&NxxiUDE_0|U3yEP9NpTDPG?jHowtyDr$A z9$iU|OOjJ-?`^kvH?r`A-_AjB;dOC%GXdn}Cp;uA<7Xv6LSyg}){&I9vv|w^R*@0L zCv1MQ(Wxe?KrD`$tz?Gqtr-n~f2~!0lsIWTay00zl*ef4^9o|==4%iM4-fg3)Zuy) zPx6T&f4$V)k=!m*|Cm?GRNJnA+BZ%qnb$Hd&-h8;zqSv$b=G2?oFtS+wI!7e4o|f1r?*6MC-$?&y7bWc-uF2Mc6a99v z+_~1m&wtR)+e(M%i!lw1JvmAOGO?$445x?O{Px~vhcZvtpJY1R!H&X7;GB=c7t}pa ztYZU%b}e_ir?ck%Q}C$VR^@Gx^~+|LV^S^D*VkdbmE6z?kS} z^n`uDFwSe6?W)gWa!U1HL-5eQ*)d4hIDeh^{9iO))6`8Y#uJRxm8vi1}>nsJAr`B=;+%wXdRXwG@K%G%pu(-iJ{2= zED`l1L;!-jbYltBdhx1e%;2%-QV!nXd0;{6_XEw`yOLs+4nN*qD0stk4R+pwYE%Kafi0?`Y~H1qVGee zd(A`-XC5D>2e+s#VI3pHoUnB*R}}-3cr7I`E-^aZ`Q2R4A*_+c0{bvy(W;%4mNL_v zT-dIXZjV`Tg3sf(jg9&~JaMh#q+9$zCN)IaI5x*}ywOR@Ou5IPUDoF z@F|2Aaz~d)yN&wbfgf{r6bl{(?^?2_h-=;y z;kBu<(ruG2hus8}SW58Pt)5cP@I#tV2y*yMXCFzH$UPA=52Gq&%1wt4164mzZmiKV z=$GE>|DMY@9H2)I_0xW$=Q~_qWBjKBESIXL?9QPv3)rR_;p}q;?hjm(C!Zn+|K;z<4t*FOj)yZT2GD{_8qyKRV(({oGEFT z)l5!~1geF)Z1>m#oxZRbyf7)Psl=>~DES5!=^xTR_d39AMRS%7S^=094dlavuQ!M)!x4ZOhn~ zxGlQ7+ZaFLblRnB0BMrrUO+k(2E0@vB}?y&4Z18e_ioiojZd6t?t^y6pBUl*9o^F> zjHc70(*ByNxyB|4EFJwoI5j?Gw|DXO8gM+N=-a4X+b11~veK-(2CRh5t8`U>LtF%0 zL#eW7(%WCM?OXRP&aqLMZ05F_IUZPGIK35z*XaSvL&d8Od;~DIq(Y!)-XD^NLp2wmTh=WO3;LCQZ4$csmv{8d%gR0ahUT zlzif(sWNuUE<0so{K*q3JEh~*FXVoJF&<}r*G%y%ZfV@aGe z%GA1WN4w^y;P$df_JriJj!}NLDwILrkPr| zj0cviAx{DWii|>eNv;8eTI&({^NfeTV|e!w^>LHnz9D}=>%$h(UG=xQf^TxnB2Zca ztk5IU08oLi*~+IM4VdrBH)XHh4j0I*b5rCIQi|;068^^HrYq!tg0_q*xl||DfdT)@g`qK$|KR zO3jRF1gek$jSl0bfXD;ZCz$NkjHqet0>ysb@npbL-^YW0+%{(8nAXk1uGedXpy>#g z?6)|a`VobiaQWTp+MdR>M${)KJ!11!i665VhU|g8YfZ?<2#AGz85Wc>_=Ek>>o7j2 z+|eWeWMs?W0C=}+sW%yu;e-u~GwrRz207*;O_W_~O9DZvqTqzujSWC4RV`sMI&L-u zcIr)H#NlSRGP)N;6u)zn+2H|V+au&sFgKA-hf^pOS}lUHx&jVIfsQQeG@rfsG=G1VxLTM8M6GCNIYT(mYP* zgtclx!T*)uG$5!FdSwG1?WA znZW8l!3Y)|7&<4(pX``zpI__i+&ACIjXqBGj~#mNzTX7;@$+4)lVdui9fR$}7Y~LF zp4R4vw=It2$1Oy8?bTMoH*$KyufJNCET@Luxx!YVIkKU0mPtS8Bv4faCwZn9)-0qckiobO&M-;!10%=2X`}+} z4wLe-gjsU8Gbr|n!c!D4vQnJ`07vQQ=2YMs?oJ~&ga<*3viW?9Y})}>K9!j;5v;OJ zI9aYe$&n6jT;r={x1CAU1Lmp;lDw2dR8ys`#|!qg!1$K2qv(6&`rn}5EpilC1O z`Wd(!>3}F{STg|@|Hw<{C;T+#A0X4A2})%#0|IqU7BO=Zu@$I%ehIm*qe-R!v#rJl z2ynZ69&oJjbfJ}m2vj@fG&JysEY_Mt+C!xhP=nJFPuP7R$rB#0Ecig9;}c8(+%wqN zT4j`xG27L&vY2Bi7i@WxlVG%?X&dCP0(1fymef&umRRuW@ZCpc02vTuj52|8Ry6@H z^^(LOf9c(0J7o{?a)FggYKtOKp z=-l9N;>6&sDyo{q`i}rXHVQ>hfm4r`jFnOXrw+y=rx8yyAM^n@DtxM{iWn3?xujs} zUGidzOyOW*$pDy87^=W1Is#V%44VRh9_0lb^Axhas4rl?&N1o{OWx&i*g)6!`3TzU zv;&LU&534rA8JJ+xOOeUKg^Q|A}Xb>#Pto1KH{g!t!|f3Y4UE#{s0Q+exr+!H(5o( zLEDsahY~gMh>4TAUP1x_UoNG}vf%M})Lg2pByIm(^Ag|^N})_0{cLog zgN=W5#h4&st&UqrUT>D_J;9?41D51oC%3CC9T+pL{qByzuBcpdOXv!H$|*OU5nipA zyRbwIjh25G0G}S%?PUoNGNKRXUA>pu?~$yff7J2tnp4@))^8LtfzuuI@|V76N@rHf!>hcBr*k9=g!;@kd zA2u1ap7|qZoprDtD&rTODOZkJ<9i;_X10!c-Q`36JF=M{GTLx<E&XDm)!gOO zz$7YALV>%mv=3CZo$>mKT1&H~^; zq0SH6h9uEFY8w4@Tlm%wzj2USmgF<-Q1eu92pytNA?(bT}b%| z%OrDBCo+wmjfWoDEABMv)qv4F;jh|W+1n-V#MHaH}sN7gCpi; zJN9jlLy%L2Ezw4v5J*hz8Nh47JFQoFm-FngN&((XnJ25zl*lwG#Fs()t<-hR~|=`*80u5*KPT<1zMjsZgdITFzkbc z-K{cbpB&<0J^|N!Xu_>q@1_Epo;oc#z61$n;Efv%J87DfHesZrhb*Ti$V{iyAVAXc zi+@B*rLmKE>Y8tk8y}Z^<#!JQI9bM=SgN;N#|KY)c}#`1z_8g&HrK27o+2%MO7$IH zB0e)YaYNgGcgN*4Ot{(IS6aEb0Ze6PmZV#}>ua$(&&9SFOZG*7x z@O97dxLf7-njJh2jfgFywbkpMbOpM!N%Qo}%--oca@qXqy~5!d@o>N8xLw;+CI9hL zV=7sy@9-)fX$>^Q}Qc;wW*ek(sJF&|jeU9-2p$Cq>U(*s1n%*ng7YQ;nqLYVqa zl}Bw=X^MdW0NGf8f}~~8Z=iX1YoKGPj%XzXEB7XY+e!qQ)iM&+c8bPh7N)`s$=JMh zht2F1w1i9$JUK}`AY1n7x{j%E2|m|Eiz_F3iqnb717)@mS_v3VtUCDow35Nx1m(y8 zO318*@o-iCP4Awu?1lWil-Vf==qGnk4wz9X2MW9@MfgaM$6@jc1yqP3SD-n-+#2o- zQ&^L(x%Ujh=~0t8!IjDh6z7dTA16_`Oi)^|`+;7RbvZ)_EV|I~q9)lCFmm9hIvV!F z@sdsP8e}h)JyU^%({FTp`~r#IF#^IGA1|abo%K#t2{`Bgnio+-hfsnlKgtYg47YCI zvtyyqPO`3ua>-flg+Ud zX0)D0y<3(r#N@mX;b0!=rT{xP+634ya5Y!aKS*FTJYe<(1pEt__Ey!fgHfTD(Mo0v zDJ3#t)8q_;;)fsaCL@aU498&*0+uo+MlL&D-ztct7b6y+ z16bt6v$aG*0gGm6BA^hIlk)N@bdY9R9W1-LfnddA7=iGSi@*voO{#jX@3 z37fgp*0r^q+lN6DFO@jK$D)JA?etJs4fhhft^|BwKl3a+d36-(;W1%EgW#4FcgvG8 zyN0Y8t`0V+l5l%~xZ}VUNU;i5D^!gN@LCluVU(8^+}=qK22q%$CfrU=FR5jh-C|a4 zf=TgMagFg(`;DS1{L=g>*U=i=hEu<)d;jl}rdq zyolDJa2$DdXC%Lv!V*G;mpG*o=Q8;?TAtK&HZF?u1jV#LbZD=qU8c)9;;epiZ;$@O zV?~`fIdt=TAN>6L%XY_qc$?PhWq%!Wh=O zKR-BJ{u5bz_GI{2;j^y){tw^$aHH_-V_!BAPg##mJ+{z;(qk}w@aj*mM*XcDfA>#+ z_0HC*p~<=8;kWl2(RO&|+)EFgn)&3hFT61Iw7FuB{(R#nfAh2V3UZ(0jdz=-W5KQosHVr%>UJB#-o+0MLt<0n7)>+j#%Z%LV8;getb+{b?X6Yh90_o<2a_2ta?(5F7p zXJ{INF6#PszxRv9KmX_ZAH8|-<6oeg%KP+_|NcK5n|Nj>bH?z@@fuABq1St_edp@m zZrt^!zwpp+k?#+jI5|$w&%J;GoB!bbkM7_9^YUFUr$nC|{mqlS~|NHm9{-Y1xedDc7eWCB1;nzQX>|Z=}YU%`?d->0PcK`m@zq`0X zXVtVc?>=}cl~FJM?f0&J`}+FeOGER) zEb%HGe10T8IN=%0O0k3Xp)~rrCr{pd_rY(cx;O4${p;ZWkk9(>J^%4%KN7!r>kHMF z20v$Ttd2ipUg!?vP&wt_w&-mH5 zpP9%$91o_y{fqne@8Dp**>vsgAN$oaFV$k(ty?$U4<7rCf3f{nA2w{n#~z)^EW{xd zU#DMP?B0Ll&;I(oclTd-y-}3TP0X0w&ph_<6Ap*I_T!&lE^J>GUr)w=LZSye6$C8#~bYyC6=F_8- zkssh1ZGTwII2zlpyMKOPT=9zu}YlH5&5|nf&tl3EG;ZICeJJmyX0F?7 zeQtHtGyg%Mef5R#H#3tfELH!?{7moCpS*i#BmaU+E_9urdvWmh-oNr}uKxVnm(K01 z{%dD;uCn&Qa=7`}s^!_w6i1mm-@jJ(ici)$H}_Xe!=@<3JU4aWh4p{n|F4eoz{Zqz zYmL|0QRdygUz>iO8tb1;l-B3Z)yiYPcKL3X<$uV(Bz$Mn zkB_M53y++i{f{RHpM5cz(29$H{=J{wzrIss2ad0qD8K0}88hZ~jdw4ke!TIGe};{S zcYN$OeNUdgvUsC*iZ%bbYj*3sw_gbiwYq=tP4fL)!@m((e$f5YH{N$u8iRcQSflp6 z;3q5ZQggdYOM!peev00gH>oxuM!TLH;m;Re8-MZpTYk8g8h>~))8FERZ7W+2^ew%S zy#vhl_w1Kn$$fP&Xxq>X=lno9U zHQPRGf7?$CJbGti_KStZ+-pC3-%5un9dfzX6MgJPxzUgjjAhjay|K- zcUNyZ#=iR1r_-hOoBW;D`mL3>zUO|n{QSj#qr^S`MW0fC_PqEXey`6wZ%fb14-Z}p z&m_LJd%g6>SN{6_B6mJ8;$3(fL(JFcvo`;UuiV(!E5~LBi|6YWdtc)2f7bgy|9@;b zzkkDYXL(GnUw=@#f1cTY+CXeLZd_=5`?V{VTZ*SFC6#~i*w9an zuWRe}*A_alExB)o=VH|Jq2UXn{qlcfZ{0FiKJ%FD&42Ul5EE&KHuAmBPIkYPz3Ew6 zIP)(*|H-oZ_r-RZwB5S&cWW2F^e-fJ%>uax$xQgqZX^YN*@ukKB`3Zbvf>!YWh zAB;3&ul(^xKmO@IHm-!u^}YDW*Lq9B=JxmRwS!Btb@XA&RCM8d$aXgPjqP6h$=hq( zW6ku^#mApLxX}2P?AxGSb?&_%>F3QSw5echCHwZmv(0DclH)%WW_MD|M(e*&@oabD0q(@8N0fpKZ)JW!^-RI$SSaywf|&cN z&{<`}Z$UX-qhA>Nvg_Vm>bjQss^cl*8_UAn!FFsWR2hyenpN{wLqd2XK{z zS}&WX0<&{5EJH1QtNq`4FJ7Qe+%EPDcP}Unk+~b!4Xr4fv5E_`2b)vW?lqI-pE3_? z8=m}uOz&RGY;`DoX>sYLAn}+fe0edv@g3i(p#5v<;DYhd^t?N(uWa35O&iMB58~|Z z2YYkRdG`Mkm3w*eQQF%IJU1uzjZ{5T%H)|9YV}g<#w*_`C{I6I;OE)+a#e~aeUUih z(0qk&UB8w$3)M@*hUcUU15cb)zE;e=@#@8*i@SZ}t*@`qPdRy1hDt8(jDehu?OgWC zlK2I6H9oSiqNhUXGx?Vnm772{yO0lXrjJivgqRAFOX3>=&%z^a~g5E;Bu0bB=TMH#e6yqYL(Ib7t6`x^u7W zye#Ma-h=6Y>1*TmKb%QkefQcMrOHzAU{X^HVb^(sBX~#_4`Ocfe4X4rV;Qk{E;Q$f z=JmVTx*%s0t8ZM?l9AxS)yeGz{-SW&Xq;x*>1jFFD&JT%7)CR1$}1ORU-cz7Z)RPd znXCmoG+(+>=3iSFc=0($oGH9|6$CeLV(-HS+O`$%(`TMLcVWgm8-M58Dv9K&tpo3j$ta4mgd*7F;L=_SW8d zXRY&g>8kQ#G5q{_J(?V!u{8~gH?vazlk>N_TJd6$8k`Dhl^ebDrWngKUR%0cc(v5m zGz;`(r}$2zie|Y<$wdyB4cpb6L0xMUmwG}YdytHueZgQjFC^%utJqOnn__yq+NhANt}~oLNP5M}fNyaI8^rQi;pAt~8bs*^a){c>U@N1Ld`u3zT}PL1q&h;Ys({ zXXYqo#w|0|6*AiL8DHQ1#=G1`%HOIjx0I-nx5~)ZsGAGZk=Y^hbTA(j>zsTsa%r(H zc;!f_(OGg$yvWE*>N~|;$T61*b-TCMDjo!_CxJ4Po~2Ssclpk%&8RFF^x8%tDe#)d zGvgn9apH+trdsy;m!wXiB`qtPOWGpB5CxK+&q+;RGsmuI%i$S6HSK<6DjX=kQd|lN z4lV$}W9hYT+-Uj8SW>^Zl%e8%I8CuWgWc==vxZ!xRPaKhP~UH}Ru?6(-_ zoZRZ}Mkg7npAQCN{BkmRF;zimD2renWjJSFNK>(?h{IpeK=FzP&z~pD<+XAlN0)c` zWLRE_wz~D?f)j0CQs_l$?AcQ;Pl!)um9kQ7UcP&s%toft+r`GEIeg9j< zNbsqCb|vP#;4Qb$WC9E2gp<8~xll41FUHC;p{yg11R|Wuux~2y*ebYj$~YV&Crw2Y2NyR=$V4qXKM|~;VNTJ+xtU;A zX)2N{pl~5(yR0G0g7C7J^xGm>D!JO&?b6;k2Lg0Tf}p}O7=O#T1*{?Ekba++RX#ND zGtkn~tvrv!4HsjW)EdGwT0un{<~-jxyqLF6v*l)*n{x}XW~0!|FGew_ex^G6t8eurQlAy$_%8|KRsgN(wA^XUjTwd&~b&&&OAt+A>Q-d~7I1!%nX_eJh zR4FdX+F~)FD8RNMQ6{l7F?B9l?IE|B50gT1X@5NfOkbicM}|fgTz;KhkX|~+BRB^1 zS?zLVujTT4STV2Z#gr1r6_d?$h>y<9@?JU-_v#{|SMIqeku9XMmo64ki>qzgiPBzS zDcjEG^{^!zRvjT^e44;BPMYV^%WH*}k}OL~HrJ%*=b7-L5SmeQQn|Ug3_*zTC99fk zaKThM-7L?KnW#OJfR2t76*qlIuFifnaOV`EsVt8By*LSWhy;G31XFqb0>OKOf+Vi~_b zTFEUg>se9o^RcK_)?-p!3IlqBigvmrxL+K7kwkpd*HXmoy1p(Vg;dvbz=u+dYP#&t<;wnJ?CeFacUkZa!Tw} zQ-xZb=i-rkU8C5zw3JHfDJEuj1a%@BTk2GH(t!&hWCZim^KPnH>Esp{)9Az^P3|cn ztCtGEbyVBUil2-*hdil9BDa*vRTd~By^%`h=e-NoR4PXCO<)`$EicDH2n`j;NJ-D` z>Ow9<&QG7icQ3Zmob4sA951Ds8?8+0#aViuP$~&eWqW;HNh?uQQD@OXEydtxlnePQ z%ZglT zo0ZTYVO?Ocl0nDg!9YZasBwQV5@gr%8DTCEjW1-Hg?zEvY4Wp(!U&~WBH}i3^;`?h z>V8Ko<_?5dy^xcbd8ts&t(7<}H5Z$o$>wu0%-@#*eCsF+tWQzYNS#4BmkF^#I>H5n zB3jZFG9YHfbUq)=BLdWvLmVA}T}vQmUT`|HjSMZMl%S7G#Y@YQw2;qe3ihB;kR8*c zl&`XL3$&PCthF^pjjNRysi{dhWHV4$clOOA_TFITqRBK$x*O|@X(3xvLKgFd+0;@3 z)?&#Ys?2*}YhPJb>_h-d1Bc`6kao2!Lnt+ye& zroB>{A&D?wFD!G!f@40O0FzQJ)N=CNyokj=mC};+3_TOkV?rZSNzN~X$Qf3sGl$WIb7C1}vH$U=&K$2@TX*Hty?pNmI%A(3F>Lb_ex*B2@Og3}o?mX4C07o69HZkwYjBnbMswKXdWjE35R$8PF@{J) zsB|&u^)gDKR?!wHDOqSP5VIaWqUDjFr?b35vVlOXyxyvy$&iVvIYiSFz!hiYL_Xe@ zJpeCc%WPb$CgZVKNzL%k7@eQPWZO1d8@28K=RwMC7I^9h|x zg25MxXbA*mkwGT>5!N>&*3SF7=8NRBLoxumW}+?0G2xK#p_ zoJRZ<0 z2&wXH8XkMFD}s($N{P`}AdE<9LkgnPM)3bu$U^<8&&SQzb;iz2TT% zOe--Vkr5EvE`wAMilypc;?Uuv&Ymdw|FQQia8Vsu-nW~FkSK^IJC8USY20LICQg)g zvT@=lw%uqn7>)QM7!c(pEsqv?$fFw?n#QIZP?5F~f}-LxzKt0&h6XeyA;v@}F*8HL zB$*j^6N$6C-+oSZcKZ9Ds@qRmH1qg<*_{w```)Tk=bSoq>YTcDt4?8ed~trIrDaEb z74}7MEXGdW%{7Ik8?odCfqis^Rp?Nb8beKa{-#P)ef@^2n$4D`T9XlRUyTN1dAY7E zH+w^IHKKkPYcNcy*q~0$)#VpqqfAYGlX+`RX?{*_r4gIbbMvuHwzAH$Wpi0^PHuUn zsZL*Gz_DJHIQ>Pv0UzS3je5jYSXWT9xkgu6X~y~;Y-%;aX*4ui>afW?e}e|Aqbg|e z4Yo2C=Vot0T%u}2QCVGOL!;5GuQXxvabazN4y$T6l;}1UVC28KO0#JbcKu>+Jq6pY z*@Uy*Hx!l^ZAM^648FG;byY=$SP_Y#T0TN^m1)p0<}DQld~wrnEUBzSbiHCtaiyh7 zUs6_xjpg{r*VtI8#j7CV=4xr*b6IIw8P1DG7^7lrbFVNOHWig>%gXBz%AyXt)AKj3 z%PYr6)GAahw?toqP*DhOsfBASHDW<50F90m;t*9@l(&21YKxhiJHMOOc`NfsB z2p#}qfbG-f2CUr7&(+rHwfJgTjgU`>(pFYiv7s0N`l>4R}$z{c07hBB{yrv2p_RA~4Z&hh6_WKuCBjy2Y zT1`#$hK(g!-6l<5L50p(MeET@EA_g{y3Ho++sFRrjrhh~S8G7etwP8JydG45H1+xk;UyZ%N1^Fc#H)%@s&~ig1Nd{dC+lRH< zN~~L|sjjTX5s--OP+MJvMO%79jZu&9y72#H*f0*U;~OLFlD4KA<7Ai!Y|MvsFn~R* zK7_?8!ZDPH8&Fz-MFQSd}YTux1~jF_qnmgP=-hBJlj-> z4c0nrXNL%|@qQD62VkFjk+#}UU1Kn!`UP0O2BBetIl@X*>#?8?{fVMRAdUex(N|Ps zo3p;O2%&H`VXG}bvH!gayRI?zEkg-}z`=%k#EH=BaVQ`X5Me@#7R16bfJ466fQ@4b zAxbce`1Dw(2EGvypb}Wn&LucKls1*qt|!Eo$AGhvLQqiT9qe+)DznN;#9X9J`}jay z4#Z#-Gd<86Z00W4LSkrlU6~dKN^>*r0ucWdQwfdu=LyH^jdYgFGYATI?0;P7 zAKkleJjr>X^muS$1Y%Z}t_(4Q;n-M)NC(Lx0Hq?4^FU}gIaZh>V-OsgiZMv%BhTZ& z437v*_Z*P@5Px%f9t=~%3{h)Yt{EF=9+W47yajDN>t4g*i)jUR3v_i&AmK;{wAI>*iU%rPWO} zOwC?lctD%JAU@}rk{C_Gg7o6J1?`f(x^J{URx-6c)Ec+IydqAsdZunsN>0Lp{N+jU z+VrXIleDYV|D?t98aT69Jc^l zh~jaqcHv`<^3?nVx|t>N;`Dj>^VIW8=VUL?#xKys&DTy(s+yjN2%akp(+j2pp>E#V z#KNi8xTNLl)+Iijmma6ZsS75#MyE9J39~?_qU|aV%IBbi{*JjVz8>2BN=^z$s zOjG^}jZLn#{a|nUielTOy}FrNUA)Hpm^C50urxhYmtMF+m#U3#NYbPunxc7y?irh^ zX_Yoxty3piuwo`PKea*8n6F7_N>4Sfu*BEq7_f05uUMC^)jfV9L9Np!s1MF;)U7b- z5>2|*THB9KBw&e~In}WAU~HpKQ-MP(^YgTpIPKPFw&&|sThq0M6x)JBC|;Egzz#%8 zFfTZyTc%_J^*r>J#_s*0t#{*^{mX zuG(VrI%_`mALz7(%trHym*cdZsRm8E>XiiTsTJF`wb_^+IGA8XWZUeR_Re7CW(Pu{Ebe+rIpSPGf7xGj%TAYt}SkxYv=c?Tp`R z&bMqYHtV$pvvz9<&b7@xq|7lTpJ>6AvWnyU~Q+i$*SAlWN6oR=I=FYTN(^a+jYBZ^_?c;R#Q{0d3){FDr;Hv9jETsvvBe!PJ?0!l1P^>9nWPciYOhZ`E42)?$gSsnulDyr>2?TWP1Z z)oeAOHtjmA$*@;%*=lT8|14pz4b`)$?O5q&)#LnX!)}vlYh#nX&1eHl#fR{M&~Dh? zxV>Vp&T7+cw;Hsk)ooiF%F!sDrPi$$Q>y_(uv%?ri4}Q=^0y;Ogw>YUw$)gCBE6{{ zOZ9Z7b{v1&RN7jlwIN(+V}rKIRr4jCc8tBS3t($LHm0K^pi`CVG_6nX&o0KewAh@3JR~-$arQbE zNn#N{R-%Eo>{>OFZ7Xc~+I(!vH){-3wgKC7)CL{Sh{!KCr&_YBGL88f#KkMsmE>S8 zoYt@cK>1p%SIjA_U2VzMViICS`)Z)nscrFELz2FvB()(MTQ|!q(zPWyx*UBr)~w}M zAtFS!+E7rCXIiZ_CmBmL*!GrUO;2q_=oM|YR*M71)djVgJqaHDHyX7OOBdhSVw@qL!?~;=bZi zDvuR#I@p7fOiPL>U0ax1o2mzEYK^`iv!ZaFAytdTZkaf+xu6OMC#yAvl&X9U;Wn=Z zdEBZ&0o1SzwM2vU_gG)2DaP!#eqDhf8|NJB@(@10b{)7**}4{jz%oa*F259!iZps0 zvW}XTYp}WAkg3IPR1KI!L?(?c(}Z(+)y8!ofrd&lBUe+KRD}&WI3cB?pcn}95T*+J zrx*&ei(w~qDHe5ko;JTwpK3-Mpfnf+p1kaaoYlJ%G-kCn+nf!aN_E*K+Wb^&I@aCl zazMARn8aYp#+Q&(OUXJ+Cu+7PTJp6xV;oq~@+pnjX$R)Eudc!#4{IhCl;&$}DHuy- zBJ`d)sR2!B)~XFyv8SsluE;i(Mb=@wRQD%wWfMR-`reo*oL5C)uxh_i&m~LH`Y|DfAXmO@h1`K zMm=}t{I~^i&t_&MEJ<9wCQXgqBI^+`C8JPZjd)~OV!Lru8D132^*h?PRc_o^SWvO| zm2*dJ*dv`L@?Hvd9w6*OyeC*&(1L94U zl;hQ6efqiryxXkDy8W#3`YoG_5DGiJ#I|?W_VTRcHThdR5J<3P>*m^Rtt~tE96Gdj z_ntj%w(TZeDPCGIXs)cW;Hyz>EoSgY6g9?*tYz`fA=Y`}y12)tJ~k(QZRYByelkNb zck#-kq-9SpUcM?lXG5+!BP}fhvlSH0tq{?aF@&ZuuW5S|PF}!U&DH}aU)YV1XO#^H zUi|5)1BgXzZaH}L@a}CjTAgvr_69?7?z)W3^*I@dOXHWVNO*SD8cl@(0pD~+>*3=E zJNF+ruzz=hCi&UKq_yeksq4xcY^`m!rlz(7FB~~~^7P5W9nCoAyP?5UjZl%f#rkS( zL3T!3#s+=eW-Y!Lr{(FlY_G4}xIRl$wawPjy0f{yuF>{<$G*-z?X8Ha*o3f(m?=Xr zGrW~xz7$~<40!P~Zr+UjI2%${CZ?{>Lk#-4Ps~s*T#@+fV&%-)^ROd$`O-yC$0x2` zmxbf(*QRCVAz&9p-r7hnlUR~kR<1`7LId7nDoxfs`*v+N*BI(-`;Q*Rl08%1*4B>Q zIH^cqp*LuV5j8Sz`HO40tA*fLcOWz0xlUs#3q z#5BtWgc7v2wBQ7yhUT`8J-ga)5J%Hi3)$}CP2e6uxvHwGtE&(Qtx8{2jjImPW0Tip zsMVQC@lVFiTlmbfQr4Zeruxms&5gEQyIT>qcC)FWX03y6S(8?x2wHoV6SqO}(-L953vTKM$hXO=8owhVz1l2+r~ zcqY<@6yJ0r07U$KOYOx3!6Zyr6 zdxscmIQmVk&d$YL0qs)R-ny$}?|vMc!m5YrZ#9%`fRRyWt;@s*uY!B$F?o?b(?7l z5CPkuwG{FVT;t6dH3wgKqs8n3#rw>_Df8)TR;^gNblLKi2`jM|1dYFJ#mZ+BS3Q@M zoQ$B->6uyT^=QGIJOqX-DyBb(l2)qgD=TpjT%8309*s3PtFFG@0;2*Q!yjJoS-3aE zbK|Om_=uR0sK)VKE$w^vA3XfR@e`*`96hvu&#soHIz6I0=43+xShl?h-@>qUcjxYX zunY$dQvLVu-TnN|9nDSK(4?4S;qSPJB3M)ev&aI~VSb|)aeW)>Ezq5MM5M&zD`M#( zDk0Ps4FJ{=-;ky)Q1MclVL>!bO*TnU9~ZDF~xXe@Uwn6VdQ!cdq)W>Cg{ee;@%05&*Q1CWz>d1c1h_!fXwh6x^_x z7$#)&6H*oY5qM=aCU6_JHsdSl{zFHO9y@;g_^}rdA^iE4?NqILvk7ctHjFC9cLAgz zR&G%}<_(PpaY*;EgQi_abj>{{Ivd+Ap6qC;Ycb>*^vSCV3m45=lr%SbZrrlCxl88e zZ84SAww^s#-FB(3-gFSBW){{Tux-jOGGr{*WzUP8pQZf9{Je)BTv)hhUUgGh<;C}3 zK6CX?|MrX52Zr9g^2X@{r_VGNZP~IiA^y?F7Aqc${*HXgq(^2=pR!;X#tAJQ^^LD| zb)2~J;jw+4_U1yPwJ{-6pE^H9lbWTDTZmWxnGY{YT{JHPG0ttB&HH-J?m2n&ioLb% z{d29I$J&ZES@h~nx{b>;rle)bnaw$CQgSR-oNmx~u(jpbuJ+ECPFq`g`Yam@YqMr6 zXZ=XAChbQL$JJ#oT&O8uRaCnstI1leZtiI_HNR?ad-e5`eMf4WI(HQ&>vcsI9F8v#2vuo~EAh#KL&x%$(Y+dD-=w6gh?QnI>cEyev!Fa%?xvGgKQ-p6fb& z^3unL+wCX!loweG=cU!9%}6d<^0>Ogws=8i&dSWXlFYKolIoTtXHFjLdH2ne@7j-^ z$B8e6ru=0Y@!$UbqWMwxsxoFwT3nVkc~M#X5{=QAvT@h3U1u&2oICc>(A&pe{rtqX zmyeptcU33FrzI?iUzn1B&(E1FE0389EqZ*CYAe(2t1Hx)+O4LJEjnwnB_*e+dR2Db z@)iESemU4AtbD8z>>y2&p56`vldF9;$TaN5XOlqu8Nl+)u zoVn^HVl1o?Tg+v2ayW zy>Z_zOJi%#V9)6x$EB7xK0V*|(#!h1*2Xy1vciRvm5)b$FK+hz-%egOX?{Xdo*I_z zz`4`516Qte9PK;Vs@qearq-n-uFTUUrPVd(tuZuh%*Q#DYD;TLeto^6`IQ!9%dW%5 zLfcuxqMVL$g?w33++y{@+3Nh9<%_bbEhRZ+M#Hwo`g0wd&h}W!8k^Ngl}#lJ5|0{Z zW$tP<)^;AOv+cvXyZvNgO4+vjgoKP4-+X-5GN*^0vNS^5U5Tm#@Ef z`Hhc%b@j@{eP>_Vmai_)R4C>xdE!S)W=&pMmc2Z=-jrRq=d4wC#y&7>C-FCd(NFG%;;=i6`!Wd zU%4`AQQWd+b7wC=Fs!tNbF*s8%l914&e_tbTV>j3OvP!6W%;%B7Spy92U{DD9y@*D z%*8j4G`F5STdS!zQE26r37Z<@sU6^(w>~S zrBz?F=U}6uW#560rXwd0+HCCyUb5QGA69SLRlnegO?k5(NhnT2_UT&(l z|F-Mse>n!uzW=As&m26_TA#NvZrQBJDCIXK_fLf*7~z=bk-g@h+}1J zh099n;h}ANw(My$bkrwhZ80rdvn^*~s-bL6W=rj=Re6?KQ}BW&PdU6TrP_Yf(lqc} zTjTlnS~6>omMzaIOMEQRkT88l{F;n}#Ih}wDMj@yI9jD?+kw*;k2Uwaz0J~dwKczS zOR7?tFmK}b6#$`hUSN8UWy@ygY+b?4sfC}}&`T!dKE zS&LR_%CmFIHm)f$-xeYM|7HIYZ1nZiK;btxy;DJ zsiPSi)$s|NDoxobtsRxRBS#x|UAela>D;A#I@_@=nYw1p%FK;P^Ay!Zaf$l8Rb~33 zw3aqw*_I=RJNH=+oY>Q(t3KM6u`0hQFJ(#G+LqCi*1hdm*MT1U>%VyK7azX+ z>QS6aXwj!FSAOp?rE=0ks=430?|bv-KBP=bTUpk*&vN9$_fKE`!ZGym8}_c34|bGf zXC^A;lOw}NOC%3G^vL}WC*~|ksNA>3)^)h=jW<7f_uSw|=Z<#0vTxhbj>3%ml0{D} ziGL*gJF{m#s><4!Vmj7!=E_IE9r(!cn`5sJUG1@P}7BZI`ZYQExf0X<2Gn{Eya{7EejgXQXT_GSu6)7#q*D z?s@s-$(PRboITcc_Dr?zuq7#FNwVrum1_RrcF3^l&U;e3_G z+=>^@o$NTiv%aM&S8K>BD&0`huvxDuoh}J`=!s?NMJJB;96S2SAOG+N$L|Imzr^XV z8S-b8Q@{VfKa3p}A{{p_ihrUz`oS=AH4HZP4)hxKfUn& zzx?9H9~__j>OVgJ;Nwp}|MZjJ{=EO-Mcp*;=(>$C;j{gz`g8 z+w<1HqF`IG_AU7p%@uiTtBW_*m*qBC>P=gB+00d@rmaPlt($E}PyOsb z=cz*nj_)!wRzEBW2^{s^C*S>-&;Q%;&dw{XGbB?#%#k!5FUieJpYzZ{9B!+ay<(<( z{rp5pboGyG+xo5?-g&;i@&7vBf9{-PM?ur!*Ds#1e{}ZZjsHB~`{u8Hf9>aQz4^ww zSGs!Ne(mBfjyAsZ@h7D#GP06aBjVV`<_vYUYW4p0vPDU@w&im)izBm_NaQQ$FAR?P z(f6L#sU-i9`t(yN1zYyof7VdCZENM$_5;V8UOd*={`%{CbPZ?!{SSlhzuR@Py)r+u z@^E#jxnMIwJs*7gwKG3^tNVpBZ~Xky+1+Q(>^gbs*iT>BdkoW3JGM7gBrI5}lK*7# z4`;{7=OK#J!noqK>S|s2;-}ZIo1>4j@Hu70Kx z$A^>^Zqjd9n~}UMVa z^-R--t@@`nWGq~-ULHNGVTVpvtw&g|ywt>Jo{XLS+k;a|NQ=oPlx{VKmPNJKm6B?>o?zf0Y{EuZST|1{P?>; z0i(V(CiI&@;lbbj@jrh5$>a@~%|jGyvth@H1N#o{JhcDR*%!|C9XZw6+`9RBYi)In zNw;p%kDp!=vs^LfndNDkv>d&q!M5|@k(ZCY@WP&>M=uS1cKwrI_So7Riwl!h#7_SH zBj0@JQCZ}J_Xh{@zu8Rtlxv0wbv z@Bi&T|LYH5xc+Ya_s}nYd+9>g3p<{#(X3yWo%2-e^dC$ZBl1B%!GZS%jg5#@t;{!e zy!hgaZ@+i#H(z}5hd&N|{=1L<{fjUD?dl<8b(wnE8g(WXQD>7r%OK^0V`Q z{Lep*ob>2q`E0ymCueWiV1C}VrOC3nrb=&X-d9(D=H;!e`}fyZ<7CKn8MP$|$xl6l zQ(CaL>tI85bxvk(R_*g!N}u0tdg08zBaJpQmUv`j)mlnxo1fpZrNi7%U9-KdZtM0_ zomi3i%!0*F&U<=Q()kGio=$!UKL0RiqL@0$+`JU>0N8G|=ByV>8(h&piq$g7*5pH&U{%1wWPfh*Dl(|Vo zmX_|ux*9{}iw!MD&-VO>{aF3Fg_@r{J~M7rYQj@9e)x}*9-8!M>>c@zVSKaehTk>e z=%*eC7N*ui5+C-?aCd+uyv_zW3NMb9;ZEy?x*~ey_aa zdAV}c-v0Bel-~C~@(-ObxA$B+-+uY6E3aLB?Si@e{9Er}F8u=j%e z9~!6q&^Yaf#u+~}&iJ8m=9Jmoez_mQ^As^jmdTkU2TWIbyrp>p6o;jOvtend!LT%N zF)YmwjpKf39QQ-xxE~tF{m?k>hlU>#ekk}MFdRP#@J+M%)yrJp`!4jf@3Fshc;NWq z0Rp~?j&QZ7|MI1)hXzi%U{Bl*co?j`ug_mcqK?x0=4H}w+);BiQDLl z6Eo+>iJ6LVeRAeg7Y9)>k=S73yYlm%yQt>*x82o5NvBP@yLz7RsOSk-S-&*}C{^{Y z>dLwgNr~5)7d?K$Z>^oF&T9X!^b+6r=C{86z=ZES_}z(-vZzV__|U`uD{FcCO2Pko z|J@$+e`${4-nF5MQ4@pq1y=<+!n^KGk;Vwm2c8W#hAa(ogbM;fERFaV?#ktN!=I57 z?g+;}|G(kk;WzPzAHTmhU2^Al!=I6IQ@DwLet#V|@gInbKaOF~ltP^O|Dg<)!)|z8 z-LUML9w8>s!1X4<lU=TEsYn$a@PMU2z0BZVBVg z%O&!u_6T8Ik4z$ysUmviL2~&tl(`~E#|V?oD<#TkyG)Sv04`c36QX*Rfyx+X{d ztzbL^$fD%YcDdjW#RX*#IE&?(r~zj{#LqHivGQ1%PsVvAFwY^mM0KMmH~{ag@-EJZ zbdM|uwUdK5RTJz5Ks+J@!7Jy;rYV8w0?Y0JQZE3BQmH_#fGPTd40lm}Am&`8oN0b? z6qMsb67uwuNHT;y3$F)Q%70)b3YDMRPTWRrYg&=3kVV=vV)N(pf)WI@wN z6J2NsfUAK*CWW^2fG#LOV?4R-rDkWy?D7D)To$DO-99vOlp9y9Qi@i!Gsb%5lqs9& zBBVkxH5dId#qO39OT7$Dplp%{Aaxj$KJOtaxghJ6OQA}AvVbTT7}cehv3_2z05LIZ z)EGg|*yni{+&SpD-cNH>z=c49x|3pgbD&@Ab`kl{&GXRE3;G=Y!`}Fe5;Q zr2S4_L4c}yn=FY;b`eH^ipV{Si0O95oI;NGciv>c=8**{dStlCP%-a3YUNj%9EYKd z>LaeFy$Z9Y?7?k7G{Y&3c}L*b{oOHnLNxyDBTPGmV3C zp&vu#V|s|QK(9`tP+kxMF_q6CV=f31A;2eJ5H1V_3_*IRZOnxs$&fFAM7VK&KrtX0 zlu*OUW5g#XSdSolK*eq-*-g;U4Pgu!DJtd&bU1DeN|Z7QO7RDeVuQp^2#Vn*NC@G@ zq{59`=ZyhIGZm9gaXxqzb4YISVve9&U#ghdSxLbK-(UHzVA7K-x(9PWzlaQtfq>fYQ=5C8! zpl-#9dGsH2wm}Eu`20l_QkGX&@ z3~oLAC{T&Ug*+pSO97J>)vLPxYMLCm&@#Y9U33q{`5SylhW zC6J5@25Qn6r*$FAHpy9TMC&3|`V=GY#K<`$BUqQ)7W1_(qq%h$$fx%n%(nDk#cSc98ljZ{?9C&W#F+Nn*&lNHJvK zIyG`JP=i(B)aVAq@KObx8o|5}ldva}hzPrkZow)Wzr{ubjFZVCT_|pAUA#tLcA3ga z^R~uC91l9jO0jaOQ}4mEmqqa$H{m4 zU%5#H(GLTeWQuq{90;Y!^)evw-WQ0uL;&!9?VBr^BkzTS?ZNzpBob37aJY7wwSe38 zc-Qyu`?*5l9d{%z@6x)v@aj(3yYS*n#km)Egpjs-d2zUThty0i946Bdf;;ZN?SeuO zLVApWMx$l$!yco;DE0acG8%R4WkC=~?E`KN1TY-V{vf(@yHJ4(G zj7EV!&^3gmAVUB~0snMDhzka(lw{Pwx^pryrV4d+<7@3r&VPNj)!~j9uz1Jx0saynA@z<5Q&-C z5Obh7xN-wI%_;#o@5P~%6G$|zY=DO0N1!;~ab~*>t3nAZ(U|qb91iAm(fPeVJ*S{t zgCLHDPk(t2cUaDChBsFPf5Vv((r&s+{7vry$6(x0f7uvpyj6dT&BY_-migM{f#3o2 zHS=v!f*H(!IIlB66Feb9H(Uk8Z1y%8q8y;tN+{a!Z1yHa*>D+tv+>5nv(3Y^MISJR zAm~06Z$>T>A)G;v`IP}a%D#u@SN;}Y#w!CM*GO^$!-=v<9U^*F81?6agt}S3;t0hT z7yrcmvKopV6;kD|7t~SR^1?(hBkG!yz^tFxQHKMGofD|Uw}y~wZXiz;VNFOX;?5Qc zT{FH)uW2-+FlxZnYF}$8UQYkAW_G>Z{;j(OjMv|&FaEF4R9KC`Yl8WM8<#Q1{=toF z4&f3;mlB8LcVGYa6_WtoF#gW|zW4nfJTm$3tj?a*mC~PQ!r$F}gakA90m{IoL21E- zql_UtLJ!{4b#MRZfiXj2SSP}lg0S@<{x9Ns7i99g;m@=}};=f8_ zBNPu}3aeTL9(W_5MpVvS)#26Qjbz8CJ;B*Tu_zSF5Zt7CIviq)IUL>8cwG2S&bk52 zn^*|PFIwPRAWxN||NJ!A?*xDURgg-A@FFPBnnoc!=x%hv3H07dP(?%nh}t_;Nvbzm z5I<-^2=gY%{H9P%NeXBNen;a1BSp8s_72H<3@8JXn01vTEd&HGQs-l&>DF0whAIS$ z>KGPkNiYCZQlv1}?_oJqMC758?t_sEY+M2Fp-lWo+$e5Bg@6V;6H|mwA>2K#G1q1RhJ#j7i#WO@?`iGg<#IUg{9FPqvkzgk_6;BGr@f|B;M+Xo zHwbKWb(xeSVo`Plp6lu&yrT$_OhzB`**7NKVl^&aU6jgREFDy`@jiVZ#Y!R!TY>tQ zUFU|nx<+6T$d7U4K@52m5RIeDGlB4WaO+ODqSQL<^& z49>gD;b*%Jq-}q;>+EH;IM4M=Gj*A|&J7MB*9}N|6eV0irChD#K zuA}Zf?b&hTWV7GsI_ti>9A5W8S3+9q>N*e>b3N1S(u?*k#e)&Zb^$tB7!$1=H%B>5 zE{|eu3z^hKkWA3Le(%Lb?p4S~O=S|P!)@@?elSLNqi}aQyx;yU#g3qz{h;TaHkQ)* zC-hGk8XWpego{8L=ceo2xs!5P#JFf>*S*vzXYCJk8T%t2P~j2$-1d>RU@(Mq-?VA> zDW(R_cu(7JSNuBovkCqDZWQi7t^bnZxu8V4L#{{KSeDjr??>;RAi|ACn#k4U$v;ub ze=Li5fU7?^GS>C?L`N;yD#_p8D_zMGn<7DHaqZG17-qS`zC}fKM0Ot*9Z9g`s zL_}N;=UHOP7)t54L+50XV4Q%Uh$3f|@{d23N68{&3Pl9xtqzs2_xDF$v_DYy&3@v| zPYUpP0zuHsT#bvAO(FrnT=kP#?FS2b0pEx zipXGD{{+&T?tWo{qCeCQF8Wym-627w-rxP8Lae!;>Vr76Cg?MWm#Xh1{-C8I?vuDr zM$Nm?-%qsd{h|H+697c@zRd%`MnM}QAniv+rU)(R=Iy|pPn00He-QG)2XAv?J^ewP zkk1XTP>4BpKw4AezUo-YZLZwaq5@cK8a&~S_%SHBA_VasLd)Nw%*>A7o+Hl^oL{i% z!#HH-%KEe5+2F*#7iIYFl#fr^XqAX@Sbho9OxGTnovrD|B9lo%%2rwv}TNOW3{z?J}t!=fvKWQ>5Fc~la+k$MHbdr!c=G7M!Hl7KNn6acUs zU))$J!t`JZ6?3fqHfLhl^0aQ+nTZuEY{Mn6^>hWm7+`lG#$~|oEbVtsl0+HfEUu7a zX8@HBq0(%dqMa5o$^tO{BF8TH-Q5Wy9w=y+9YaDxg=tE!eQyv;05&tZP>H+TFfJ4K zfx1y)V;e^k$a(SF7KZ^=^du*i;hRN0vGCPNq92nA)5Lvqv2w{YCjx+j5%*?N&*G!y zRCTx85rjT)V)rPGp(IAMK6_0)QQXH+_&A7hz35|h>=6;UxS;F-UiW@fZv-SWA1e+7 zQn2QWLfp0LSsXk2P+ZYJ+S4KrFYb45t4le~(*{AH;bwG{Xjg#+x^AaUkuGVHJopws zj}5Sbs31->_Wn_#i5!l?{|;GS3_bk;WT1!v2*J$&TLXr*@>m1rxqa5NIJKy&xB&JQ zuI8lDY^$u;IX&3+Duq`cvBFeB+;ZzdBiaKR{hQvEyjf&KU>;lqxVH03!RA1A-B1X! zCvHk;Rg^=svwgqLvVCk{BSFKaVEvtd)voAew7t|_lwNpT8+zR(V_7NMOc15Q3OW>V zX(ZMkJGc6}wW*icH|$A;<&(+IdsGVGjDU<89aIZuHVRuul@hGWlQS(5ro}30H>uK- zhHHB;Q#Dp-8s2-riuf87g-2@uv7&xYb4zM;6A+*cHI z*XPA%yz|8dba|Es19N)4cOD1N;X99ShiuYF$k0`Mw7K<1wap5>@(a11CaaGy4p;(LO#YAmoz*tiw}6;Pid>lzWiz9#w;icLIob zCxFJV1X2pm&FLQK-GgVKc0T~E`vEAu9vHel))(Bn+C6Z(2A4kLPT=7wxN+eSx4*lJ zljETAHrVkg?n?14&iBbX%SStlxu8)MAB?``X^SU$dfv3mb=@@wRL;5c-h~5czBEVT z0;Zd9(U)S2J~OuC;95NAsL0|vEwuLree?+Vmn_olEP%)(0-RECbVNiCM&rzZPNLP_ z7|S(W)j}cRgj*YE5PZVcovIJ zyU3;rY0QUhtGtBg%5d_}*iS2hzeZyLf@Myd4e1Gw3MrJOB&{StxpK&6&}8I!*DCJPtYiULRxn0>x0Uul#&>)Y{JC67ly-NHaZH<-2(#S5f)PcY?4e7kOXfD&RJhS z)4V=YzX3Gsi-MD0Wevc)fF}~a^Sm@&;gKOu`(C7GXBZHQMe5|j1J0)ydkmzhyib)~ ze5Ozqb&(nb^@R)hl1T1#A%Qkgs}d6IRroTToC{NS@fls&YiJe10Fgr8Y#RM8s&a0K zBbYP?swF77JbNJ9FM|V2kVyIbIX6ofiMkqg_@wLIr(kNOOYteDL*4lKD44p4$S2K# z`kP+8>$Lk^bF-$Quur?rV!qZ@8yY{uWW~1(Y({ z%1in!Qllw(pNUd`lcyu5jb#(BmxjWIFy}>6m)wddsA?*_PP+t2#C+yI{mqGvm^PNp zr`oX#xjzxpVT>3|95t7U#OPEEqUAN6Iedb1#FR0Z`y403>^hr_MU4;}HGl@gkyb6*IPJ+dE@pfGAHGE+S%yUTb5y z_d@TU^d0H{$Oz z+K6t%;}aagFxT*K~)Z`C~kghz9} zP!IafVn_d*Lm>%zAPgb!uE(?_RPGl1Mo$}IWbDsHFx3EW2$A3p6T-u+jf`oSm+-*E z;)!?%V;dRSFi+t^=8U!A6Qpfqbissxfp-%D1P0Je;0$dbL{U{VrM^Aj}zg+8-v#cfn>nr zoiG6nULU-UOoYS;(^)(P^h3eFAM)d0!ntpf-N`q>lscIjt;6IkF{KMb>;Z2{g<8VG zjFe|IDh7q?9*yS5Q~C2sU&ecR@q}I6x{%8uW?_ssPb%ZRgV#ltEJ7HuE2@znf9B73 zeHkC;!BH4wAdqq!LEcBX!IQ;^MCi8B7!u;c(;Z%)?%E%^m|<}joqEHAFuFU^FrRl@ zx9ILJ;vQaZ3)sVeN7o#N@wP5f#ON8M2QeUc~I)POmX|e-{RTb(x~*ooSw{#!%tf2jq2qxgkf4f7e8x$GGu!wyrt7yPqTsbxjENcklT2 z(xvnQBE~vmVxq`C#sTByF~paVISpUF1Pl(qm(i22F_4nmwPN;f7MuO^NOP^hyhGZX zkX3DxqmFt3ro#gf$wwE$#1&{XnuTjs8BLs+VxULgl-1U0SL4JwJOcWa@`~LRKRM{h3PPY%lSd8N2M#&~GrHLbQ%p!KP=-C#O9l&rZ{rQml6!HfC_~*dNk^NoThH z71K&As3!2iDZptWLKOc<_vI%#smiWEeG299cv3*@^vc7cYI^6NQUi{#JI{6xUe(5GG{ z#*YzD;M~v_6a0Xthq!r0i+P_4I^&Aj0igD0__z7QGEv9kJ=02 z=UF&pP^MC!{%jDr_@5CN{B%%-sw*I^Kqd(VBp3vGERo>xVTB3|fjiLe2RGPfe4f|< zRJU-?zaAVUc{v&W<)Bh{hzSPF4Sfokp&+Vzj&LGf_Cp{X!tN0KVAFyJQinHElBk%Z@=5a^gju zfcIa!27y8t`Zaz(1zy^;Fh@2heEP~z*vH19Art7Gql}?*9(Wxh-p}j|uMzNs_pJxf zYJ)?-8_97A!eG~6}P8bq?jm-qVMoWDx9}JsuDeUt ztGT7%;Rhg zyN7&lx-m2Df`GvqQ1=t+k7Pjo9l|^`#8CGm*FN}b{0N`P2E!sA>_;hSSOlRC0~ml@ zN{&qnP`@2*C<1tfFzlm9Qp`ah8$<$jup?_UumfE`Qu?VX(y*xy5~om0CpvWCu+J`0 zePkTeiH_Cr62Sr85JNYPJrO#F7o9>jlSB&HekO89_JA_OP(MbQN-Kr1uwSE5hCaK5 zCt|UJI3EwT=!t4hHy;m%$r(O;v2@}KgGEBIA#jJj@>#!PND6Kg!q_l~8;4={0~A$5 z`3icNKu?erYKRM!d+?fJMecCUaoB zgd3Z-bVS>#5YYVKO$bvB1t1%yLkbIFA3{(8)sU1WNMK6|-4XJoLKDKvUvvoB($z#X>^`(sMOE`=`*Djc;V zwCi5PG!g&%`usP(?fdV0|2M|g7$M&5#>gucr_8A+3Q@Si!3T~klA#j8Z0r;;iGtVA z_zeFpL)Upp2bEMgBsW>nZU-VT0ge@fg9}G&qA`e~!-`^L=PDYA6ar&q=_19g(h=ZU z*nz?o6ix?WmxwMAMPMh~cQbH>Ln$ykjAx|-0eygi!uqHj0U*V>z-S1!N(_|nGfIrl z!*GRBZTRMXf)=_R6pH8`+=5fe1Adgnl^Aqm>}4>>U@*iL;tx3-_d1agv)zoUC`T8b z5ELR|kgUD=a#AF02sx!<*np653c!YvBs>)EX0@fOlQ$9<-j`bEAu*EXwNL-jAWa>ay&~bo{yFqz<{qcxV9$<;Q z*chzFBBO*rlwUV%Lyv~Iy$FGl)fpG|k2eW5Ew7^!rIMPGktH~$wH#?T@q{E$ry{PF z#ycX(60Lw?9ak8pbO4BTkc?D*l#jZI!huj=gpf62tm7>KsBpHU134^`6lpWH9ed#F z24oyL>63)<7mhSU7p)+UFlRuTBHVlnebK2HC`l5F1#`d@P92*Hha>J+Fp)36fpb}ApXZQaSh(ZJ6RM)0g73%x)o+TAMf7 zTht{`Yt#n6B0d(yjUV z3yZk%cpyUrLxl>8awVj!ZtmX-dPaLfn9v_o5D8R@g$%-pwFonZoIt`-epyF*H zDnwf72P0$-!E&1kW|<;=lTyUqk0j0+<50=_4M`cPqzK>;AYRPg=TSgJ#2Vr)*iunN zIaP2hvZzE&A?%w#$!xW^P{B5XqkwHN*St}<&U1|yD}hc%e33#3N?{bSNb)7a0N(-h zI8Mtg)A5uif-omT&s?S)YcOS^WyEG@odZHtI)cS=)Wyh9Fr>`HR-k9n*;ptA|1Gw> z7dBFUR*ba?%r)^BO7@O77H5`WWPOyuLT-AniuQ(5QvU)xQw?0fCF!}t4hsN(3;B?5 zB{il-K?fuc5-I`#6kZV7^h?-~AAo98e|Ggqq}s79o+ORYsc4_LN(#&@QU?Vi3IyJR z%tT?ZU+Os!HT5z==(Il+0+Ph%GFb|;YS0?$^-PCQe|P6W$+ukA4DAM4z6uPeo2VV^ z3vf6-o4M$V5U3b$X@UrcG6ShtTaxChn202HF%yICmeIuvd)03eAa+rS#J zhw%w;AVV|oHsw0nM^gq=5B_Lpq^LX72#raI(cuMQ%#`FgffnVM<6z?wJfk4BJqq?v zi+B}+xpCs}qp4FykBfo_o`iJxSWCs+kidB1B)Oh(n$DUNEs_AV#l@(ra;P5(fmg>V zaTggrAnjp2n8|{TTAWo>MS*y#-1~YvAdZ1r2^9b?fRY`g|Eblji_%YOX+^K`ML(nh_nJ`aZ_%_)(G%CM=>tIEUbbhjPi)!=PczN99n6xomEF@KV6g zFkXOxjFPggH9sq2OC%> zY*aJk_lRAA>djwsM1e7>QIoJ?8?Pi>4GDnE7HWqF>i>j}I+OEliizAQ4jOKf?PN$} z9fW{+HYb7}XdBW9i}NMQdB;i8&=*9-mZI{+f{OuHdEOgI)k*M-HRsrbS$y)6o~;09 zCysk)Zdsu3RIGL+GpF%zCwa68$L7y9?eV*)!;AD~R^^_fPq(qB}IG_qa ztTqrJ>y#DXoiu?oNri@hMj)S!$8Vyg!3F`q-8jNnJ1}los$KYoGn0ehO4ULWQ%^x- z;$jDR8evLNxPo#KUKv*oN)V{=aAB|>@4?1sl%~RrIOh#-U<^w)EI0Vzxo#NbGF5Zh z4p>B|u26tz&}WQL0X#59@b-^nB0;IFQD}mQ*yT_3&P}>6LUjwH0Sa(lfOWBMY80`M z2*&Em`U%pRV2Bl1UzDo=aQG-9fG4K?l!6XQZi4;Cdl1xvL`%ZrZw-KEJx~Orw_I?| zn1N@5+`EMdgqzCnD(plGtWK!091wsEOZm=Ob}Us1w$udrk2bZ88yscFi>J36h(j@w3r{J_YrVN?hpkbGIV$n zH5I&xZbBJKSX=6?u&IJ%>c=!{!V^)rPd@fz*Mlm4iu)lwEtx++F@<1*AdDaTkywx! zT*;iNUeAF`=XgB_7o@qLp*k7K?#EAt*?(_u@H;5-eSwIMHCDiNtUydA&8Yg06QrZMZuCO)0I4t5da!0OjjBn10|ja z8_?rnEb|G9NIVL&D+Js;NOyrU6y~WOSH;)>*;p9kz=>cT7$SwhiArIXLdKveiI-7~ zrSkkLDBQS!SsLks7p1@&&^j{|6BUunEdWHLfNJT|_$jKGiom5YWSUhmf+}9X13*+UFf5d= zicw7wR7(_Ciy8xvDLjoaqlyVvF$5wU*aVBJn0q)PppTydN1=-0`63iyL6w)r!|+iO z5oC^{AWbMpE=aBra06}%l1HT_<0lQ=6ePn@i20NXGRP*t0)VimF({j6Nakq;$%twL z2%vMKQKTt_34rEhL|lXhDVz?3UXVtd1c3w!RwN6f(t?QvV1|9<><}kBAE_ekAONBS z90ii-HfS00OHi5CnRH z-tb!}NKJtVL9U`Ec`RUs=H!q9f&Z&1M1STmXi`Fy3tXz1P%)Bt=!C^|f@a2E`uTTtu>VR(d40PYa1 zFvL_sx?=~53p>DT=#CwrP33e}cng#xZ*c+01O=I1Trkb1Ap48^h_N_}L^2yfmdqCJ zL(+X?=_!!eO1If1`$}dwh@((M5NKc|b$k!=4ZAv8#LCiP325pnFcLmZ8i_8UK#C+9 zB&GMogNu9bi;qyvM!%iS9s^+t33jw-g~_@Gj_nqH7|4wzGrTagL=~Vgs_e>*tILu~ zBUKox2myVdJO`!G(dH1@IaJe-0@M^L#?%MuMqUHPE^sQko@ivF$vRTOz}aN|FzUpW z{&^T+e4T_%jYj@NDn4f{=^83VFS7#4PokX2C@Uv|G7O~Q2;5qeFAvIjB_hDc%SSal1ML9zh#3a}OyCS&@L8NyL%pa9bVBbi(vFpxB8L_r#c zeCe=;-D#r)p^%xy3Nj=tM>>k^rxHCOfDVFQDpDL&%vCi!*e`7hYj(8FRY_P>UZ zHo}D1ehD3K$oJdWDHx+f7O9F5#=S=2oLtAlu$A#*woK{Fo{BJy?DQBGAsyK`TSlPl z@vJn3aul<%)ZMNCav>7AQS9iMXy?&0R|LdlM`4QetUw^M0NnEUVl2S0TuuQ9DX5w> zLd1q`E;z>qQ7Y|pp=iMDBDLRTKBB0iycla2g@y;+d#-=e|UfGw<{y0I7fo6_6U1FcHZ4>TjPa-C@6?2e#Qdu5R)v$xsM0Ij711KM}cCeMMP1kE(A^Y#C2Xq zQ!Osrf&gAHeBEGLKm`IK{e#kJ2vKrnM8G(T#09z(E>;>jo?B=bQ4kN5akLCJvX=ol z59hkVLe;uqq`=n)BdP_eRCx;*#%^u_hGXa zsS2-Dba`wm?~w<|ab86P`Vx~e1+xQ+Ub%}XgQEb@%(b!$3jmFf)=Z2(`QriUm5*MI z0MeqPaGAy)r|Y1|*v?bN7(V~-2>a{;bKQ&p?{ZCdiT`VOXM6gW|NjU1$hdwnew@NKg%{IYDjsQPiR3xXpC3u%r_JiL8l~doiQK1pgUBLTst<;HJUhuB+BUFe% zuaX5vVzeHC0Xy~X@f3g+9#vw8F>s-yaWz>G1RP*ih{Yh7dLEr$;`VEH8qZU(Pq;QZ zV@Qbf1t2@cW1Rv5-uHr6apbb0xfGrbrR8u;V5K)g;`U20gcr$YN2?-Y;lgpo*En}T z1!v||B`mT4d!~p8goE<}5TY)!^NpA%lEKTv^HH=1)(BKfVv#_i$=H%B;?|X&^y3Kx zJP4bKR}BW|g#sy*3;#;ynx5E6Kd#cK`*PWEf_v;3(l_y)9-Plh0;boTZ(&P(KsCnfn4{@TbQ?>i;RPbc7BkN}3Ysu)Ova8rZA z(~V<+_=Apvz`eP>zgHF*g`fjog)j;f zl@TRa986*atsqvZ7fy4Us}So$oEa1x&-DWZsb|ppFn@(+@5sIKU_#8up=FrnGC@%X z8RsrZVMEw?EOTf~gK-y)aH+pixLLdj)7!5?9w=f$vM6sFn2HKY3;<0GttKAL5U|iG zQfIL~I?E@T%mmZ^UL5fg5aGoE!fplJ8ch*#5Ou{Nx#dw5@{SmfP$y!);GG{sRMs_I zlpPZDXz(*mM#arO#i2B0glLcy8$khwF~{I3JmQ_AY)NkoNYVSIi1z_*{uOeJL3vzZ z5fKp5Gt>(RJ$RAEIBxM6ct9nc=zQ?PrQl4E!u2?92}L${8zx>a!iC6{mTSfj5Fx{O z!)U%fG<2Ost`w0|?semkWr#99Fd8k_cw9?Q&goT#W4AtMXSNqV!>2Tw2SE3n27O1K(Hu=LM_)V*FU)S!L^|w z9~$Nx<{Ly~$oRoEKzP^WJTwwLgDOH)ApY^@dFFo|C!TKJo1w{#V_f1HQw+9G7;@3aG75}^m1fvE-05PFH z7`ir`0=$>lM^P6#;A40rgb{iY0;GT+ujY<5-gC{!8{25HFw!o?q6#qd;2*AAZ2gW;;+<+&BKg$66p&>PoCW#RV+|dXTuF=`2zog|GhMok47>!a!!6`M2 z2JZ7D^5w0c4;}7X0*&SYDPHK^5#OYsG~Scam$QNYkG*#fj{CaqJb%CL20#D=h;D+6 zvyl~c6J*WS)}%~=R<>$(vqH1GUHiu<5ea~QZB^{xQM0u>m8}th+V^-SlSRfRhx?da zgR&LvYu1E36YV3rrl80Tkd*iUDcW%+v<*P8qimFjXlZ9>Czk9n_VYdW{(k-I2S|}r z5;=x!qJNKj&pG$pbI&>V+5MgAO`d!>nLeq;E)W$6qNWpAvZM`y_J2Oq{*L zA1mT?xg4M-LLNj{Hc^r>NPcGM^$$bC2Wgse_MMWU)v9DCTY3hMMKsG(G(UK&+RLQLDLki=R;q%jDsnNQrTFpd_J zYYr_cAqlB@yax;_my51-REK%nF}Rc7ls%e0<*M>8Di7#~o!->8U%dTcHrQDG zAtW?yg!ZVJObyzHmcP`XeOOsb9cfEqn=*e|3e<;9Rq6=)@Dh}IcqF3i?cYgDTH8rW zx|5dlCvF>gu=C$fDhK|<|L8ydPyW;Y>_7k8oRay8{4W*#_Y>LrAUMs2-^^bh`L~}6 zf+xceCJ<0g4W~<)v5u+E*{-==^W6(Qi@htm*ZOMxTYJuh+8h5Q|NdS6{RjM;=HCSW zbY?*BqJN*}`rqN7%00us)BO8&{_W*omVZ&XpW`~uzr*|+;@`i{za0NmE-JJ0yTgke z8Q7759U1uXmw`VDTsAY#nc#D5ZE>nrCt^6PVy9#H{j4rt#Q^B+i_XI+GmHOS!YXh; z{#_oDa5iIg%ls{p0*+@@E-wcpJ#mL@I0MWBzQQM5)CmKga6KM}qzq)cbykM|>HkXp)nVkiJVKSQ=mX*vBK+tmH5BSvE%_+B46RCN9Cjb-+lLl-z&< zY}^mtP-0I@b|9rfn|TveD3dkFJD%h->?!7xu<3;)eRNcCV_i3E)!P zD$jp0FwrIS(n*nuuHWg2o*My%LihDMR|^;h|1aWn^}h){{lE0@efpWd@i$NZ`v-pM z(|_Y{J|kV22^M<7zdb-IrF5pFvujs(Pw(!&{yjVl^v3^DV;=Fpzx!){@7Mo}x!?Hv zpZolov;W}SfB9ei*Z<8w{BQreFU+5R_KRP7?l+(R@BfGY@qhZC|Iz>QS}~KhOM&&hPJfzvqX$ ze}wV3@pg|tenk2)=EjyQ?%tSI;Lok9Tw&CXiuFY|qh!?ROUMvS|eERh0r z1Ax4lfs*KE-()^p5S2p3_TOwS?|_FSgUjkt9;l)WyV#grI#wzchQCgLoUQ7)0SkO& z#zz$vI6PgR4JQVerXHRy&8B8X2C7!AyHFS=>qY7K@F#9-7M>X!VXyd5)~4c>=_!Du z4$n?ksd6G)j;^6f)prwSDzJ^bG%NsCfB(!V8-tWVFhlESo+Qd}c&0p-8p#fjIPCCD zX)HZTQ;XE*v!8{b#oSGq8wVm) zI1Xyxgxh2+oSqp2FTBl?LoqczHa`o*;Cm3UI>OQ!ItUW1^+^@a!m=N-DD|M2o^~ znK84hI6y@Z6bI-uSb~sB4IL--s#yFHeON*{kaQ z!y?K5(BXEwOdAb^zTy&A&>pU%GMsHYhM;n^{8$9*@Kkv=bvi$A6-jId%b4R~0FEos zX2REzlGF@WOC9Pk(T4Evo0(#4P-J_6FiQX>!xaZ{ifavqJt>o-sKFj&W_qeLmZFH} z?i}^IvMs5*9N-ah7X)2{XpYIzybaRMl=_pyd9MTEGWWvhS)X0?p zX+t*X9d%~J&!u3O5e!_O!Go#Uh~lo4>zZMS%y9#Za;r>o&_yZ^Y1=0<2Bh;C6O0C7 z9WmWt>;~Q;c;P^cGvzvi#f}6+p7>=+QW%!V$0N`|r8paU(5dOu`D|c+rFIN7%*{;A z8fawI_o0S-XIer9KT4_L(v-qGAt#X-T%F-K1OG(Us5LqfYiLe@?A)(`DCsA;WL;3Z z0O^G^JT`Tem#OKQDa7DP&~3b|h_4Aa9X2QjEor zGy%oQ`z6KuDsCX?IvRX}^2-j&WS--iSIGE0J(=Gp3AQkxXHz>U-2r37nsf|BGW)9n z6Ef_vD}X^hP8^c)X#qnT5Cp2qfG-ughT^8Bf;1x1WsNI+YF3J%VAO88-YxHQ9=0TgO59mpNK@X1$4EC4c?BSW|;%sJS(pwSaatuJ3W2Gmi zfAyNiX*T<6fc-)&2~A^=HQ3XcsnN2=vMK)tONRCB7#oA*m8t2kYj84#5V8!$O5-yf zj^#OMZ>*I8vz@b5OnT5!9Sf(Xz7D0S%qX}z0&_!_IOVMoNQ-5xQaMpAL(e$eXG7e4 zEX*M?Z>E{nrphPy3sX{4mD%vLOnnA*7EWTe!?1$ZogBF>2r_*rUHN5L!;IVk$h8KZ zfcfY_#2;@#6}v05Q5A#u(c_kMI5mb*&*a7oCK?n` z&e|ZOQZGP9i-p3_81ikOL^7l0_@@>U&qQsFn72iST_`#sLQ_FlEM+r?)KZ|Bw(vIA zfSxXb} zbJ}EIt3k$~N-S|ovN9s{+>waD$Zj|S(Z_Pe^7jV?F#^S4F;H@Nn+;Wb<^aG8{k%R3l{~V;~QW;#)-^ajFo2DU?H667N`6o~8mqSq^p?Oj7OINHv(G zZiY=$(^HeQm(@DNeQ11!3K2-T)YFqVz;w2gLada`lm?em;X+0GJ-ig~W ze+H3ee`p1vTiYnwJghp5cu#!Z@%!LDn01srQ z?*Xiir5RW+y^BuO2=b&&GEPvVQq9G8Ej!_93DHi0Y{`Z(Plb8!)hC76L=1$8zk6MhSc~rk*~g-^@&K*a$%fPfb;4({waK+=B_pjTMJbL5a4wu{X+$R`S>i$TULA zS*wynyJz2Iu}o?3Mqq$%<9$M(o1kqiP!91B88$1G8j{NBP8D;^Ixt0sa|(k+foPI! z0P5nI4hBaws4z*gD9k<6Ap@*v^9Pk3!x5xvSgOb7;!3IPaU;CNeL!1>^IiQ?6aXF{O3 z4yPxN50fqqR!mP;OKDB_nQI95Y5V_;{qB?)S+teE}t$DJi+@IDo;vc+;n)fG=BO3kmO{P;ewT(8XFsbS}^&l z2QYCI_$R35L&)5N12=tUbf_@?G%^lcZ2chU3@-RavWF%|fUC>g`0QtV`C_3og1x^H zupz`CkIz2s`x2#BVX%W|7nSn4EG50M%MXrOLxhqNgCz=eyX!;K3ihamd<}i5rVe|b zNH2p3Z{o1V6`A|x9&xsIP+CKVG@mVNpx|`LCE}P_QLvqRL<9jbw<=<*KszQA-x#0K z=#oERaG^${GMkHN&SwwFtzcHlEF?>IgM#4tYg&d4byX@rCB9_L2=~vx4VlASp+ThATpJj}dK+*SJG}(i;K6GlsH*7-VUkTuUKdN`Mctr#@{yMp(v<2SH?GY!Zo* z&DP=L6gkw+&jGjKYkCJ+p|!HZRck;H9y;xunDObU2^6TakC+UA;roX}aRa3Ir38#h zd4NK|4UM6oQR1pG%xHpn;gfqyg`x84Bl0kURCTIzY#zHzWC(EOy(%A8W$TT}7APEHiS*Lo0FI*^qR0{lE zUQH5qE7XGGWQ2l#&K<&;jvBwDrdk)vN5jTfgHBjgf|X0i2|di^lHY;Uo)#oMt;}+*(n7TM+pWR)9^_ONJY$lbv_iBTb^=p z5)(3@8_7xN_5kRI%d-Kh3ZGIY5G}~8#IyO#v-b8i^aRZ%iSYMih;mK${p}?NA^&nqnY?Of1R!Yz2WVd8%7P+c=)xGP$&FeEdYZz&gnK zOypQLdu%ie;D(^ed1RW$$PX(MW&A{#?VmC;#=Xo;SxiYjc*ep_%W=t~MVatH4kHel zg^Ur+AWon=;tz+XE3?7Vnz*{xM4ZsiL^~&O7Iy{Z$tSG}1;VM>na}w8_yz>G6cw>W zs3|lmkIExZ2=!U}0-~b_SQxyfye@ZPO&}kQ9lvjXT)j*RvQ}HtXRbikd-y6-Jatgb^X0op@41 zQ%=wH%=BlF$J6;7Ec4M#>2+Hd!#N${sX0C{D8fp_yaB6U0Ye={NC$n)!l`(WBEr*r zBPofL<`rdwF|{)a%_38_dR7KF#*p#sMjaZ*6r9>hODt|{jb+J9{;Pa3Tr?}gloSnQ zjWr%(c*9c+%h_L5JeFc=@c3s~E}dl7$(Obn1QuXs65$u%WdE52P;PYG$c^zsX9NB+ z>vgB}D8h~dXN-5Pc82+sV$8ofI+V9!FnW9EuqQDAhOU)>!EkUqCV;?@H4*|0nYxJ<_Y&xyumNj*$WVldG)VgQ zgA=d~2lj@C2wg}tXjiE`VFcI^2R=%|50>fKsS`vq+@1NJjvp2Sx0d>@xCaXuDbo23 zosabI4GpKGpjcuMKo1lc$DE5`!*#}-L=$x{O@_CD0*S@;6eyA{fo-NB*FeG0_?V}_ zS}&zDLM3oc$yB?+-eVo)yl_teK~?-~&1xDb@M1%CB9Nw#Xk0S|;efTp^Po_fauhTy zW@5px0)+R`5T+5;L9T}ocd>u6tf+1Ry@e5sdR6tljI5QKr!f1+O zpnc0HszhuR4Q@alORu@+LmFr_o>pn9**IJ4;+-cUJLspTP3@-*_$rE^)G07miP<5Y zi)Ws(vD`p{AHwQ=e4N2){1-@I0F4uuX_%2Fx*(5{Y0HI#+Zpj+D*7Hnpc4U+-imuu zV?ei9?WySr&ASI_c+{dsB21X$noh@7je)Y^s2)cI3);nzMj|A>bv{UU!zsGX;G;_Y z01KgE27jrn;6hs(LWRyF>ZOlVQ#5F#CukTvkj)kENrO2D5+6^4{h(>fqvNv^a*nnq z0juvwz-pod#ZM!F+d2v1;0b~-+mpaFpLGTAxwMiI<`rjTXlzGDkR<{rGGs%e?KIXK zC}kr3MJP0!l0Cvqnq|T1Db&^WGz>Z#@O`3vP8Kpdef%h{IyB%d zO;3bFXNV1+0?8|S zA~H};e4&6P^C9`+z4pqNAkd1kP;iF+#vevSyQ-$5bQ|H1qUb~iDrj=4RU8z;!q$A} zA85`*ef?-mx+zqeUsRUZWlyYthEylBF4xB_b)d9-O<}fM^M*8o@|)xc&}+`Y+^0NB z^mu?a8(N!H5l7UPLeTm(eO%|Nlh*osHNS(I8@{KsyW;Y`o{-vYu3%6Cx2F%kpGny= z5oqSr1boAx5?odopOyb;YabJmj4g4SfM!(5=;@lGQ`T*8#0!n zUewxn3nHF5BaFxwo(SNOAHIr{rOjK07*<(ZCIhV0yH|V z2)AgY$*~a(DYIF+os|$FD2+MvG~DJ~2aifd7Yc6=1<;tbymdPeV7xY%Oht|VZbO2vUa(uTrTp?$wUr~PuAS_J}4(3T8 z?Gy#g!zRjm5XcnK(gWPf!?G^$?6!XC(F_JB-jRy>p%9%b^tQal%R#hBUf9EctuX1_ zQL{QgB`#`i$P#)!a1E9DCEyFq9`Q(wSo%Ywn8}&k*zOLQVzb9)*{u^Iyb{#xzUhgA z;k8j&M?3o&Z7c#DG)l!f#%U3X;p$t-+tbH&tI0gbV3eDzanqn<5ux%(7GnW0wGn5+ zPqR$38NX(<$R-z73m#}l1U3h3o5)x*p|$}t?0^uO=N5emr?`ZjO^CZf`4POjEUa#B z#R{eMtU`d8VNEwJqGMQ5mZoZ z>};uMy$)^Wl#yX%rL;W?Yqp7s5l|05fbbCOc(Ux0A&bgb6XBQSYNo{g4WaAWH%YW) zswhn_91!JD#?5HL5#5GakJ6%)iVLI%i=}bYp4z35k87Vts2xuwg)Vl%TVkBdU?oo$ z-1&eA^AW<-DFt3^C3tY0ogVbNOp5QsFaR!1oEYY7U!}aP4KBoB83iVs(Ns&KdEYih zC>7PA6Cj_}=e=ww&kR)@Qs2r5>F80``wDW{*8jz!^EO9w_9Ix}_D!Wq=3t?cEXTyrxoiQAiN(;ttMJ_;^rFr&w@*Op&)tMP6aBZNgI9jaXWMG&E44B1yFl#4buEeIX5yLDG zbb6+&@oF7NgwV_-svQ07IOAwU+fA{{Wp?zap&rT~V!!R=h{p}>SY#KD74AxDDl;jk z1>9!B@%qwq9cnX;y@GvwS%5~{T8_6N3USJY2o_2?3Mo`(!OY~fIBbXqhsL$b)XXLx zxTbNTx3O#-DY4I1du337mD9zcB27k8W^}qj&_Qc0)_SBgw2TNH$7PewN@G@WX|)Q3 zgD3aI_PrXb!Kyi|3$)Aco1UqHb^`dQhJA=7jb$(}HL!p+tFG2oQIIqvO(=T?$BJd* zUUDsf8fFjK!jBlt&W`e^Uq>*6Qu!2L zG9il_)O+nx;hmyQ2Z2!E%Eazt6ugHO_|MnbCn8QhZmK z=Zt2xUm4k5LcWgJ=CAADCMa4C5 zQeJ^H@g@AOOj=7C+DKVE2uf5f_Kp~p)>3Iumqs=HV*90{)hTnCqW#vmNi22<5(SGz zZ7Uit<_>Y9Z)Y}>;f{| z=d`4Us%e%DPDGgvp@4?aPhmf-_1MMJ8iK8aiXsRFrv17*@3b20y3`hDKsqvNlOr-U z{Y-32t>pvc6A~m3kn};Ubtgjm)u6c5`)>3$5Vf5lO-NA60Nzs~9Y|)7{y;j6+Mm6_ zr@viS#lTV7CU@{~#<$zy9`sU~Aoz%8K1k6?t!S$Avke^;x4&WfB2F4a1t`SHI-S1~ z?Pot>0JVWD0_b|hbxTv|Q5|jo51SZ5NlfDOjFD)Ekqo3MQa84f>mS=etej@ROI{)x zE3-x;3JK34=iY$BR2F?=?nLBNG_~3hIdtk7t%3qFA~HNRb5wjxz{C;B#xPxPc)^We zT04Bhhsv`f`=&Hmjmfl;D^)G$Er%VFwR&32lrt(L3Ih6T1i3YkQCwQVGekPk! zaHZ<$q?_cjL8iexxfe^vaV{91i-B4f8R-TTJ>nzH9%z{n6I7m2oG2o+1MQ8F8C2St zKT<7p9Ft3B<^+Q&CfQ0UAmvL&QDX;k=9E0M!~6l{J`E)3WVDYkG46l|M~{sar#kQ! zj7r&iJQKI(ixkrSl0P206bwpOXGEdFLm%qQuC%c2E(e}`noklf(_}HfB3N?3#-SBh zTt;!+CFQaNmPiXK_BSNLS1#<*19ONkYyE0=ij!68u_L*G6`5>!iC;kj8jsI9x{5h@ zDe``?*+m`6+9glou)5^3t5GVY*=!480nkLO5r$cf;;UjAbWM)fSqa6NGGVq@rbXSh zNyKCq%Gkm?dKAxuX{dlnQspYcS@{$r{#Y@>F3*U4>FPm)HKapK-Pl4K93m`3Z0R_T zNdP1SkEy8KjAgtWJ8FaRAIcADmk;wKTmt;2v2I#Kef8xxRfmZrTTEWVSL7|hJceTx zMY+C3h>gq$WR_Z2AvS`;o^Z^)B$$evB6M<*(}SrVlw3h7~?uB9qX@_)j{AruRIHWdT zMP}+7ywL!f4)6@oVyBj7<=&ftR6{6R;aWp@$E!w{(<_?7W*wbziiSp!-^QNrh=}AnG=)opRzvkOVRIfyh zHLO2HNt;hQH>{l;{i}vH$emKB!kN-|DS_646reRXfEX2MQ7PJ@(hyYDG3dI>xD(6 z$N`n}BLhRgUzxkZ8i;`*= zXpIrGc}_EMTHJ!zEWhGBV5%5i#}VWTyc{rU!0VW#Et3S=9IR|}sMTS`bRA}r)gCDw zUl?JNoNJJ_oBWkJpO3IJJ03F_}6N1#$vM(`pnporQqLkuOkoK_1J!`sDOEt)+e@@c=VNs z{{uSyus0!dt^u|izTfb=!K259-Xf+E`rr`gKQ8p6v9IpXXU14zc~VYGF*sV^UgFTZ zK!QyC09j1x+;@Rl2AJmiy@$3ze#ZJDgPq_Geg}w; z${V-+BdGQAD0>@lA?YqdOpsDiGih7xiHIShZbN>by#MWjxOL1nB~kFhh6i|Y+e>)8 zOjP^*t`Vj!CC&)4P_qZ)sZnI23tD{CU79JW0bKW)gtrajO3PVGZQ8PHNJMMvNHyqS zngEP)&<|#96$$oF4wt8%CZsx`YYN$ttyL&7a}zoo76OgCHNR;a$93q6HoMuygw1Un z0U4|WZY4NigP;5~PiOa*pQJ$$v`?E$2*J7yBbKoRxvOvP$183P=3WlIQRCB`SC}C6 z->gNm7|pQ;Zbk9ft9WNTNe$eD3vp2Ps-8)i2jMlMmpbOj#)Qy?X0LJ(0o*jMN{s{8 zfLE|-pNq_%9PtHUwhD|0!VnM|Vz93P!VZ#Vrb-k`rB4h1=#z{#3$PxI0<3Yl%IRZP zZXyf3Cq{^=*z7fT(1%a+QOWeQl}x7*GUXddJz+-)piFyUB=3ZA} zqTnkKYNP@&%Uo8|#^cW4i7+s}?6e$BI0`+4dY(|cvl#4Ql%lPe;GH~Ru2xjz=i?eP zMRGQgnC}S%f9Wel8-q_3XFEsTa<;2M6cR|ZEHyQI!c{m7$&yt?6T?$fI9{)y=@#4Z zm?;x-%%o>eAE9msL0RL##{%h3q*K8{DzUBRXtJ*MvT!JaWhyG~pZ%4*c7zh%$-#_| z!DOpTSTKtkWDiiDl}ti|B9!$2;tLfP2u>n6T{MRUD2t;tS2vZEV!7^UE^mQAS3R9Z z)v!!(%vD!t*TuKA@@DAEm=04<(ixS>quGP`iqw{`{{(RsmJ5bP3m88-LT;C}-8MFh z{=q4!8!0&b3?0qphMChGq2J_;TO8;h)38kL&_tf`(HS@*EFh+^3*7%0$EER091v7N zj?aA`*$*?J(14(O^M#{Gc;z$!AjXD;lND29EH90FC5qM05#I3Bv_U$u8`%93#ZVq$UiMHr1GF#1S=Z zGLnD7GB_y{J`E~sq+)AKgz+LPbmi50E%W+u;V~-%A+2qyNV8@eKL&`jLhT5#>S31 zKqZE^g@=mj-rj!AWT7{W)~bOe+2gb@@s4GkjeuQfM|<@v~*)Q~7S zEcOn5a(eceBMt(bWP8X_*n{6;%#jX~Hb7~jjOy_?4XYqq}T?n{_f@ zu#-5|V7Fqo2qoU*P#zs`H4ZIJr69`U%yG5B@ss)7Q8t4~YI+$hNAPMT(U=%(=&|u7 zQnj$7N0IrsTIzV7QKN`E?dwHjANAEh#tPi2nex=qY=$MUiTn*}?Jt&QWw7XrGAOd8qxmu;OiMe6u9i)qg;L&Rwn6iJ%!PGWyQ=_h~$+fS`O561Su^VcAHQ`^SnqO%F!_^9!U#WS# zdff)^5eURn(!9Yx!lST9^62f61u3pW_(^wf%;!E8-D}>)J#L|u*I>)*J{8?F<<)&) z_r)MQbmaFys^nofl)Ai)K>6QLzuvq3$fdMrB>fov_rLyc|NH;(+yCeP_0@|nEx!Ca zuY9e#wESb(h({nf)$-pX0Q<45`s=+D-Nmka=RfNFwM?*QvG+5nCxhS2e09&-)jV%F=R{U1N`xSAwN$g|P5gWre5}U+uBaNH4Jg zhKE|<&0QNNv2R{m#N6wSKGvwRx#dEj*9Wf+hr>r$cWr&k3ff+)e6;>LMP)K=;jr_v_g&P3ZF2aw$#j>ETPHTOM92rIa+az#?&i(j3vJCH*;g%>PL( zeZco!!j}uyYQ+tkF;XwSK6tFnH9lqpyVuoyV{N_G->>9Ryr|z$yX{RnuJ3VguGewL z*VJykPT=0cjzT?l^SBGFz?j}fc#?t=0S7j5D9NAUXt4?nud*sHq4-$RZP z^gaMQYm3VJi-X4!7dYU}`0Z^iDqn+M|3nv**Q=!5>uvwKFVBT5?=L#tt7LgC6Lj|X z*EXqAzdm@Z`MS%ON!ES%F&6eQDF|1V2!KAevZB9B*`<}@O0djE&b`Bz^oL|kc|D5- z5FJA*SaeLWuuKZF+^eVwE`0M*BDqWc)xj&$Ax9ctUKYG;u@D?wE-mw3s;*x5;AK?S zFgbp+bb0FF@Uf**kuA5&g;e37YqJns1_3)_q**9)d`Vgm8nj!bu~49h5k2EH2U2UL zLlvgsiNaS3#q2H$Mv9?RB?)3xY22j-3UgNqU3qpNF|tiP7|^3^4mhZ`=%{WQ?$pV+ zqByn{*Z7BA0!OLbFnX6d>@-g0_cjzRxWXDeDds+x#9~g#C0Y*wu8>B2nl%Cn1xz8^ zmeD9@@TtsFBNML_IyrwrJAk6`oMlESl3I#&xniQoAZ=4D0gch)pe+^B%&?Q~%NQ{F zZQBx^zHw0H;b04)suhwrWuwoRgHuaLMk60G#{FoJvYDMmF1G+f8XPPQS|;^b$#4=- zEOHu=eiUYrE(v3kY_hJvMk@(t22k0oswO}!UCzp$^E$nheQf1QgB%Ji7MUHHE4Ao-tgujcRj;o!BE7`ZA`k04$}mg{h2>!~{u8~VIaFF=&{c*3acMXv*~%S^REVew zbKItKzSo-G?`?jM`p?nBv1vx0;_KyvnFd}w2qV~-Y1NI!T$7pJn>5o@iHeb^)6?d0 z$L2U5lPF{iO8lJi@mP)OVs?dlJ2R~+HeQ>{n^hAcyAT$;P!Xoau-?WRx`bH&=35aSG6jicjar)o3PHf zF+ADpH9(}ARURX@otdsHgF1X^q5GO?XTI-irp2Y$qC(4(>|KI)?!C7R_CCvOfFmEB zd8P+hW(XSVdxsTXT|%3nFH%c`v7%ifS#54DHW+-X} zj@3ah3CJz87eFtEb&i;9Mp&c95(lpWyh4IV#UnG>EQ8j>K~}m{xGLjKaIrGHT*wp- zmY$4X;&P~FaHJ%ygv!&(4&M?<76c{NS-UM?z z^_N;7Ew?^e`aqA`RBQvj4H3{1cbccG&7;PO!!p;wV{&=pS-80snS5Lj>BhH3@c7aM zqh}ejEb&Bu>Y@{sVd!9bt;kYV4sSv@4Tu%clpWV3Xj?*4cwuorjUeP96reVM+AymN z^UM=ogCTLSMW@C+_CMl`BQr1*MkR~-D$v*vM(VLkHkjpy<=I)ma9OgU$B0?BxqoBJ zsPUvWc<;8dpLmsiNVO@kmHz&2mRbwJCtlqOzu&e*cxE@dZ*v8eIMb%Ym964d>icUc z=>CMiPB&vpJ-PM$D|6|&Gb)xk5Zz=RrCe#Q|LmQ)^|@MYZgcL;TeaF-rMXm$KyTlg ztDUXs#roXb**o^OEymJZ$Jxy@wX>U_J^NN|uG|V`uEzgBbss3f*|1BwTEDY? zr&enMbY}C+rU2FE*6&c_UgYdP`_@}E0Xn-$g-U{;@?7`&`W;8lnc}9Q*rrVYq5W^I z^OyfO0_lVl0V&R<)@yg}1*Kn5L^M?M)4=1(T+f|3$KkoNXAMJJT0Z2SKXYX*y>`b- zlD}!e8$S8{D{I9yB$m0r0e{`56!j@}$4dF@mQor?3?BsifG%3zr;ZkwOk-+~YWkz_ zUHI6F<_ZU0RIX9VHN(zdMOmP(8q~mL?7XI%B)*q5x4EF~e`9s03WDQOSW2YN6!{X$ zpj_%YT0lc4^@`I0VW9C_VEhs&*`19Qur!aAFdZO`!U*q_I%t8hl{&LqRH*=0*<9Ve z8wd^iG%CQ#MEan?-JzJ%0U7B4b}Obn5h(#S_J{Q;cwA7*BF*%?pjr9W8&Dbau=f_g=eahv88=h%w}P0jqS%=Okp<2LMeT&kOZ zdvr0}e1LLZ5jc3<>_SBl35w<$4sWapC>DOgv_j_@9Qo!_UK3cU=$arxT}+|PDFccy zEYJ$+#vlW7Asv8gEjOE!W$e(n#K>pHkUmJXtg-ZE^J88!?Xjc{YJP?-sxO-+c#VJq z=UenKLy*n=?po@Oi^By6UlUlx7RqRgAX>>tv6Auit@IW@(Tw2Tud@c-_Yk-E-0ucK zu@72CrxbSh`kw zyP?Kj&f(VHex+8U3RjD@{>4RVboAHwtyvYoHCO3>d$AVSpWyAqS19`mXB>2Y1q^Su z7GHeDfWH!`c+kK2N;yc?7B?u(gN@69Sn3vc0LA|Keo+H4zUW3=l#mk5uNMcUiog9k z8$9NpLEdwygFH>;9sMxn5RC1!y96nl>u~Z?=RGb|Jo~J z{357oF>UYsjA;Ag`3;Ij(4ZY?f3mni#h~_Ge%}Tf5NpQ^8^POOtM&f@YWQf=Ft!4mMc)PUmU4DYQg^m8~mH$3-8)6@g>m_20dvRuo*( z2%NR-mdXLHX5eymCvXNAnJ)Z-*asi)dg?Te^|GJ#8D`aHlVJaM>44hZTil7n&x-QB zkfl4dTo-?^(LZePZq;IV{b&-Z)u0ZEzq?YbrJ$x54D`d~TjHK**`WSsb@Q0+;1w<8 zkLo@CIL!iM4Wf*HyG=J)83<&JrN%$_8T40Hy1@aXDa(rk#&e+E;sVLli+)VREsE+@ zU0}RUtH1v~6QLyvhM}-5Iue|!&)oa&ptlYfy`t7fO z<9EOLd;j#KLfW4T9jVs;{#@{WbdU_EXS)`9*7|n#e`%N39=F-6{$ty|cJ_ZI_J0wE zDX(0!P;|T9Ulzt~-u-1u6ZIgjz24dWwX^+;=)!jE$}9l;9U?v)mDo1+rRF;oor|O zmrhFTZ2w}h`!9a`mmR0ct-oF?)-s!Z;d+_yDJxMNZYAYoO$S76_ui%zx)T@bezR1n z5d!Wnv1X;%Y_$|VRdf3X2`RIjV(0&@ZcPU#@hNa_1aJOmP4{8{FP3ce zt2+qZYE&% zSr2NPPb~+XYc;!bwQFlZ|5Ka3Hrvn`q&NpkD zAXw*kaDU0J9-wBe|EaaFtL9U+%u{Q=y$uv^hqLzPU;ifSe5zUcm*1q*#Hst&%)Ys~ zw!XGb2fJRSW67%k{cCIMRUQ(VM+!awpbTZ!)=BW``}duaLh?YWZLV#Qi-In%(d!=s zR0>e!+V}m87y{^HVkuV;`iqh$5t>wkAMa+yl@hw?)MO(LXSozx4LnZGP1> zq~J$95ug%`XB@fLZp_tX&~I%tK!^;0_{+FiyUi~vGW~1C+TOLNBwjEbIg4I51M)j5 zJ)oxy&{F{V=EmmQQ&sAh);iSrYu_xcbw33d_wrs~7`=euZ@~6>jpY&-#kBxw>f-@o zsfT*$Rar~3em6ja)}MN=H9d`YRmNpWXV4#M!`}^vNC?E*>vNrRbKmFEty8(jn|JK- zKZt=417mx`Wec3`?BR@<#mqz-rFQmkMoXN2o7c`B&YeA+2e$myt(JY2J9{|&4ox)f z&K}O4J)F^A(49S;wzGR@4<|c_9&Sq~4(a1~lHV-_UAb=za7ytTB+TTrViF)bygt76 z-Qe-HuPYng`r}^@^rx{{r}l;B*2%Ef7jBYrjLlBpvp$xoyK=OWh6!_rCYlHCQLc}CXdvy_oxAG_QcjIxovt92ax;+u?u=C$vQV!ht*0;a2 zy0-qt#&^H>2XFr2|NTdA{qdi?eRs3=&b$B5Kl^|G`TzGX{`C8QN!uMYt9AQd)03#+ zU((+Jj^_+?4~gAJhjSW5Lb9T09vm#&Teq+BKg z=y&4Br;qYoVIK1_te{YTOy+YPObSvX6*8VuUKEgKnAE!V{E(i1GVh*uC^u;y@O&VY z=gK7i9euov#M(JMtxVX{6IpvodfD879jeMqpX7z*hyOM-P^13tiCOoKZ164bDl^3+ zst1wryI&E^PMSwL=X@o|P(MHLZ8a0HBrx``EnTp^h9A*u9x4gF|C*{2+gjdNijl|N z7Xx2q=I8*caM4Fr$&^d-_PmghvR!0?jBkF~HyB{EeR7pT`({ZGOCjZEhh7SieVr_> z(N|Ybj!@|5qYpVI3hg4bYmofLDjBxP*?!cZS*mppZ5KIT?UNF5hJV^j{$n-`E0E9w&ZA0wflbqD#Y<4o=Kl42%cEtUV^aCyw9 z@@G;LXJfAyHrDgS3`^rb{7DidyUhAD;8SEWCfR#}1`&MFXYfBx!s_F$teT)NTSnQ~ z3)xi)7JRz?(sZ1zAEGQbxzF0Jaw0ZQYH20sFV~avtB(aSB6QWs$N@6^l3zSUYU(Ht ze{hI||JfkQ-M(sE{aIHoEZ6hxlhd4GI>|#F_Kz0WU;p|5*+nqmdJl@`bdc%qYp~v+y^BEAlXaUnp69a!-RsM> zj@s(EAXvXt3%*qif-mX8<~0gks)d{9uofzlqRg^5USekftLCdOaqHiuYnwMz?l}kR zA`zZtcA9i<3T!vmohm@CNIebLuKA*XycmPrq{sya@;Pek;ubjFHR^QMRu|6&y4uAm zyB@2AU|tOR9VQj9vT2oFMw0P0ILf;f&U1(Och}xo-s;-g`T+%>t1XjeA+vZf(8J)~+gfc79R=ANp4dTZey^D@QDmdaN8y?H~kHSdtW2R3TCr|GSEk&@!& zhh4e2wKTtLe*U+%wuGv<6m}0*4Fz=^S%DHzinGO1%Zjm)=|k$W9?kk z-vfHr`LD&u&I{QK#jP%fOs{+0>wA^<$fC;IBBMap3$I7W!ubo8`SAS9b!@!vb?*(^ zcEugKdi8Db&ErPB{6-z$IXu$dn{|A=?{)7D-*&|#d{Om#;=3uXTF+4oe7n~h@wxXg zzIMfv_*DI#_|}{7_0jE7@2P$6eT+}H?=SeV3wbJ@#HahPc}PUUA_h4~bpX0b;&bm~ ze7cxVutUWY_}KI%b~TNnN5S`oz%`PWz}L~gDSDc9&Lbd1uU?pE+l_S-3~g#)NB`K&m(I`=_bv3I+K})EqB+3_V%I~=lp{&>UdQwfyKvb*ev&*A=;bx`Qwb`VI zx5xOtYa?Chs8{s>J)f51y0q2CC-R7>xK!(GGH6YByn?R1v$Pey=TMkG_TGFTXQ-{S z6ni#FC6?gUb};A91-n=7=RSWY^5+Qo>Kg=AL7J!FXAB;=L7t+hoQHpF8S|Q=few-th`0eaSQOnI#xuv!@+F} z4kmE|@qVMvNHK4T5}lY-8yAWoqbVL4j#l>zIDtRVoB(9$`FXizE!ZL>LXm{icwcPi zVGzSB*6VWnURVUa{ESo}k8E31%|76L8iwJE(U|wO;$f$P`+8E%o?_F$O7gE6jWnV) zfxK1DPBu;pBF53bUCkcf1E5h+k0!os=hO?$eH7rmS`))|;<0Vt2#ph9U*q0F*UYq! z1RCw*K>ahyTuUCXNn&)Z_N``*g<%(TuM-0B9BE=9NSWlXGTI&%=_dB5*$EWV=hlfF zY>#wvb47D~vs4e>(wfoS(%0R!HDU|fBgMnFV1OL`hd}y{q6#fYp95;F<=U{9*A_N- zXr$2GjFbq#y^xwQ?^3Mc;gKe%WAd+ieTgYy z-PuXbSsi8t5E3|&OqLtwe3tuR-sLgN$Jy;%B;(JvE|Z(A)e$7ohH}N&-*n&hdaULz z^_ssVq;}iReex5;2znjmB|H+}fbB#Vr_FmMZJiT=ZU_|J2c#@X9i+vp=oy*}QOJOE zy}x9EtH?jv6iCF*+NlA?#rqem&Vm%sZfu}Hy4css>lPU6UyVTOb!z^L4Sw7zAn|oJ zUw4wcTNljYS9J>+yLuP#7W5ui^Yiko`02ahLGHqTQ~AZO$@7%cWY)0n22khcgH>Ki z6ZCSyyS^JLyTk`H7Z(L|)oOL{1~AK8L=Cyz{gT0^bt?1M zFkPKLFYubT&Ig*E%4^#d^e*z?+>Hw=*}M@pl<7s6KJ;wOX0; z)Ox9E-b~L+)I3K`L&j)q0t@akzQ?3UA7sb0kM#aD{V+?tLnF_9m}azv5n#8+I*NF->-P zEwi?^dAoK~J7hO+6CSy+JeQiAyV+PWs9jl0t@LlI7@5mqzLi=}mMSxg+H5MeXvIjg zDXJXWsMu=NAziJCy+PZOLYrP|D(O%+!E9Ud!qP%z=QEz=FLLY~YhYEUyKt%Ors>t)*70o0XN|W@+upO1Q$$rIny+C{(kd zA6U_-Ev+q6Y`v;_t7ICwxml%RYDK^GnzZ8OWSd=0^;~$1BVnPK9_}_VAeQ4U>|@A1 z=NA^9ZLJxu^fULqjeF&4BVg=qRfpOeWqM^(0P;o>Q$1RS<6+QUTnH{Cfw6Gkzqusz zm0HIpb#)`NXA7)oyuN}JSezOE3b8|dRV%ZY&&3**d_8Dt^!T8 z>b`7$mz=n-B;@kZ04{^H5t>Q+D*X#m&hkAdh3x^lo_|<~@O>r0K-YZ|r4I#QQJq^{ zORrY-qn>!6W|veGWhUvUQ~6N@T3zc<31Hj8%4M8`05&;h)Ia1n6|>b zv;jij2sqd*eNecl=+$P(Kr01hsS6wZ2z&3%QmuQHfbv%q=zCtD-F9OuTtPY9qY0T6 zzH07AlYp(DN}|!_RSUhgyXFz4x?f%|)_OLtpAUM@->hw3uO?8fDu~D+cQV+*t#Fm9 z(YpYjGu*ISp-a;RD5bC#AqsoGP?}4Bz8Wl6=fcn5jpF{!1wQ#J?<2VWUFf#5x=>tPF7a{%?K|& zBv2^Qn9Cq*O;ANDQ0we?08-mS{c>?G{ka!|7s_+t=i;t>FsQ!!>ZJCZ$4*N=$_wFz z7n`{1GyE;aY3#zzA~VKwVOhEVQ%j8=ISoZ@l}G)-=O+UuyzGK_=-2>0e8;5 z^dipxqP|2jw^}vyw%oy95&*n3H+N=Z*}ULR#zOG&S+IBZ;&rXdGwzuC9POBYbq@c| z5l~?t%Jr(%UF54Us*A(hIk(8~9H=|x>(%tEV{UFO=>Ed1XoB0&)wAemyxm;4OE?w* zRY_FNhyd{7z;mc5m|vDYX{{+83A(15HPz(EevMhp7g}pxTv`Yh7OHcdw^aG;MmgyA zM9J1=OukD+}o!ANaRCFt)Vg=aU&fDnT^dmF$j;;g#nH_ly_VBO&U?1m#$bX<6` zPMe^0nrAN~5|9}r0W5B@d}Q3(PS|k90dfsGw;dqJA|HO8EFg8*ogC!nuOMd=R)U;nAQ^l2Dns#NaiODXblr$+GeEQg*S-2YHo&9{LvVJ3j3xfo^qmAT!BY>fLi ziVOY!1jBocu0aeOoGyEf$Dm=~0a7lj%xhQiF$A5o=T{rRrWuOAQC;Y}@M0bE85+_D z=+!SIAUg_s5bQ2^-NP#+FZ_I!J<#A-W*XfHSUvE$^VNmjgccn4ppX$6ER^RujoveK zqlbEad0`iVq#nGX5umxXP^FNxx=^q~3!tBWF)8ipkFW=)!omDJ66-}{nYnA{IpJOv zrDu2(_P9wZXjIP^K*xqjBhLc!d$0kDS0hk-0EWO&pH(#B7{^$0Pf zq5*2b1x5hva2mi=HF<-4Nr*j5VjgQo8<=n{DS*sOQ7R|`IxRQ{$lc<0_sg}_uPg^n z93U8;G8i*ps!>0ap=5lNQ$Q#9Hy}lBlX04usOR15xS)f2n2zUF_*Fm=~51`kU?Gv*~<6 zg9MXjwgUsC;o-sJn2LP@`_<*SaBj^F5eM`o0bSn)C`8v}2?2Ujzg?y&!Gu&oYX^oQ z==ri>-mJqsvw^YmFg3W0*M{K?ot9Y;HZzbbR<~2i7ei+bba5`jzGwsa`Dz{H=WiQG zYrDplf%JEP?D;a+X0I{g3m9bA^qUAJRA#V~vR}c=Y#^1R)L}!(8vb(NhgFXTy}tuu zu)wt}`vMTV=ViP*KUcLfNSDMh^D;ocuq4M~5!2%U+jt^e)wS?!G`4yy6yxp$xaS3W zX@MPxw3jd~3Wp(RWst)Q4B;25LANtRi&xEvXh?QvD2Cj*0&aKcN zjprlca)(r|;L4rIqWT&RN4R3Z-~M?__HZboHKWC8pH`|Aft8)nBN_RY@D_~Q{# zVI8EwnG~Js-99$^=Lg`X9gz4`akkSRknrX0Y>mo8u9fF_jLN5`pUG##Qo z$u{^L)KU4L;+zb}7yMa?>DlpnsNjxFP+>Hm&rF}r4)_Xo z{>CbBnkQMoot!vTKRMwm*jXGZ*ts67VCQH8?N84Rgq8Xc3RSR^PEI(N*~4yUbf|2n zeXa%{tc^xBZK5?PSVSIXs&GmMW2YIua zBFmq?;l#imS2>IiVi@LVWC(F|xF=)nd`-TpJ7%Kf1)cF34ULU_P9sq6VZ$iWv5M&2 zk3UTG8cP!nN*=N8Z#u;hLunXqI`iO91sVMuGU_}>jG>uOj#^-&YrIQmOquD~1lUn|4 zNLpt@>L55%lgq06XOVVnT+0C?VCY23NG>a#MeF^c5sCigV4&sf6PTKh9SMY;YC&Ih zBu|q>Fq#iVm8CTr&m&1h?39Xw5uG!+W;8S(lq&P(p~hoMSEI_Dzgbb8mg7=%H*-7vCc7fbVqX|Dmslpr$uM2m{latKAGa*cOrR^ zhc6>pGo9{89KWgtJ&6NR*Fcaw+H>8SsG-a7A3B=N4G-%45BQQtq!i5P;`I#A?u={AiNty32u^^Mn4wa6$TFrW)WR;pvQeCef zC%O&?o7I4;#KEt|Q&ra`;da(Ym6}IA!%K36YHK`SbsYh-!$?*Ml~5n!Xhy2EIcIg9 zp*qT8NmXeW(pID8#Fe_q9b{64DDqoPp(s(q>71hBy zS2P-ta$_1#Yb8sXz%`!QQl437FRlmny7BN<<7-@--N)FLm8cU^U!x2+Q9afhi8O`g@}Z zW9sfbB`G{MdvExE53EpNN4}zKVT`T=&U?kzU~<>6V5okXvdi1R)!PquasAPup)q#; z`*G*M`#<>Mzx>e_123KF= z_S$~*TA4<^9aODuckQBHx*zv)BCF%&8BqVG6?v|vV+U#Xqav1>%N-XU`#c45m!5%%!a}==3MtB=DI@2$yLKBJYeJ`x4(+(Hl<9F%NlgQ*vqy( zQWpyQJZBJqk>Uij?RTVi{FR5%l3vANeDV3diw48?O6q_CFhFiFs`X0;q)jdspwRFA zH=v})m^>e7lQ63v&(*5hdRmRI1OxZDC2Rdd;|vS5P{abqbG4Ev!a4I-Ex;7uQt}sKPzFrW##g8>dSGlP zb->C-P)R4NO-u}K3$#QknQJtSCg_+Jo69x-Hq!8DMH>qx&(+FX9fGC{h>U@?%{>Eg zCcK=16>+h9-9h(of(vk~Lbm~1FrSiMl?K%d2|Li?iO%+td&i>6ejB?cZo)SEX zMtExeS_Y ziSmqHt9xxw3PWSmow!1CN+MCdR(9%PF(zFME3%PY$8Q|r8cqJJh@<=iW-$`+Yj1c2 zMt%5$MZW4IdPTbs=$gIox=s)eg61$^wIyOn06rCb>1IW3M$)YXEIZNidJ_O^yf>xQ zjG{Rb*e+#~4S^eMTK6Lz;MS7h2j+>0e2$@_A^U6bb#!JoVpdD|kiKaSd)gR&R-5GA zF~}-wjEfv}co&bs%aS!S-T%jK6w5#~H0T3mYBDt4ps~CZKm-r%F+5(0&>S>fzi$nr zyaCGxN%KT>BRcem)TtS?!fO&k>H5bm8=-%I)KJ%@?EG0rpo@5*dynG1`N*TNs|Lys zxJ8P4B$HAQ&=N*K8MYI`w;>xO4WRFve+oa!R{(DB;)`tw#=bT{yk?~~x_8<8zR4C=hZEomU_-ubV-krdg;YQocIDEH2g)t(YuwkArN)?QjNXx)z0 zfq4oxd^q}|Jv?@{48q(%{UABEUXR$5#?-Ni)^wR&vkT6pGKqjiA=>Q|alP&-OW|UW zQOPLNwYDU<6HyLU#|KE&bxX4QTn*bSdvLjK2hbk%br=*6PEc!b`IZ}=s*So#)NWXT zakbmTnQt|qR@R`1@cZQWvh?KGn;3Ca_X@seYs6V;w6WQ7BWbHcrQ!_lWHvCB1+tEs zm*+!wp+iJUHRQY8YBh$RNx*GRLHOQ<(!6ypS60obWwpzahBbzzwNw!)HC1#f+8tVQ z2hHP(jR9*_^k|~tX4cT38D|9gE7gCsF`jKn)UAoMCmLpE=wkI~*?D|xshtdXuSAmE zFwpA?5Y!28h04j8xGFbe1`W0S;B3^8s-1|Nuf$A_+H5wbecd>98nxP>tlOtXl!7DR>x7lQqMG0Y{ggC!R@LM@3)ldZSdW@A`1gI+V)~)n|=_Pwtk>$ zZP4ATo~<*;N^WhPtw>O-4YGSy)8Yk2vkk7;<~1W@1TvYC4F{Y2a6c&A zrM&%Z`kV^3_@a@h!^qC?xhsn#aRz`~4$ORX5Jy+)a!Z!S0vpcRS{<9e)XX99$4QBk z_$yyc3pwbqFX=d`;qq5{-QiA)5|(in%fh3T9{NjOC|NBu(*32?a0fuC;Vzbg-v>@; zuH*$sb{BY&c9N60ll?9eO8$LO(T%zao@W%f3!eAj>td?iugYohrW7aryP|}C+HQAE zmDu6=km>(`^Bi!T_0NRKfy!>2~sd^MDUllm}os@;=jw@ zDXItp!@*zy)=pJ_z|4PIly&y+Au|7|GI%kbIts6}fvqRIIp^Fy^WS9~_)AoJxXL#E zIr;lrir{G+{+XoxyX-VZ&wHFiwnNy4i4-dzdd@%P_jF3Fhx66Xz8*EJp0qDY902wY zA?Kg)nKtazT)8=u%ZH!yuO7kZW%3^=BIiMFXkLeSEpm*)c>F6A0U-{fnYD=IcB#zBk}(Qv-&sQLMJ*f55T`4bZ{pFc}9 zW=?F(5o3N333;H#fW=LS=6@WpxD+JvJnxbH??IZB%*AIRh=)r5=P|m3H7)v4Qk+m% zNt6$t{x3plv64U2{C^QUm7%6x0-HqByqNCf|5HvGtf&0Qo&0}tLY)4xzfrmyH|OIB z#!mjf)=be&IwQ%y=2UjliRQ5Flv-=Amx zzc(bCt)$O|nLv)iZ2?C?llIm74&jP8p%|1+R;orEFg=s{`O@;Xq zC86q442&D?Gi(4B#R--PaS~7Si<2?DBwprNn$!mGHI$8jY9&J((v}nWeFJUz(*uw2 ziCCQ@3;edBYc4ve$FI6Wqn=nhq|+1aT!KNqb#C9Jyvq4kS!2*S)0k?Vp-H{qAt$Rq ztm`jV#c>x1Y&eNgSj^rb;kb1a0RssU783=Qghi&7R3aR4oz(j;Xql&u#wsOwL{gF8 z0RWt`fPUW^;KIchqvcm?j!x4>ktv5N(H^U|d*v2A@dF)(vUrm9E6ZdF;9cZiUnI)- zt~)X1x%2+~Ij!B*3CD?icJY;Zu`d}x7v{yopuep3m6+ZR1Nm;W65(BXQJV?6S60-L zmoB)9Y(co8RjtK~RvHwZQl7mxf61x{F|2t1B_tsQGHqMXc!D=>UCaf2&Z)FE0@ECW zXr=coYp25EMOz9JzYVNAe4BEBfrD5Dl+0MNV|qD?XI?^NL{K^c`jSerm(mb$DlvxW zdffn~f3WB_eO!CZN{Ubu&pK2}hXFmCAeST(TBFiZTiDHBXo~nx7=-7L^#~ISW!+_7 z!Y?}8@P$7l#|3pSs&4ApUKl}LwjjI!G!3K|FWOduXtfd$&mytGcj^Qz8#h(D`+DC+ zA@9D#NGI7m6n^pf@1VFetk;Zv4BhVQ0&q7bg8H`gwj=n`MRq?!0QFPz+BA`2L-bt; zVBGmdOX`1#jic$HCgJuha1^i;w)^e{Hb1*v&=g=;eo49K-(#wn;+@sI(S(>xNYA}J zuYJzfv>>WY&oy5rTEe6@Mc8m1)ZUKKzVwDeOH8-B_9r;-ix=aK&aN1(jutlAkN+nQ zz&nywx=DF&mE!+mDcJQ~P3soc)4S+rEqSRFw!;=aiDRk+tEbGxC}k^bN^Z+i>v_)c|>wjn5jrw%kTJt7`AbbE6rc5!dI+ zSS2gO1Gg91mC!L^0THcM%P8WDxhmvpIb15_P#Ks`Uw|mG%{C30I1w-Ch$53>@5)lb zj@bJ$5-1zU;((R2^~0h`=4&R$daVS^Zg{J5G%Bnz(y5`wscLH@WkoM4Z}H-5Cca$z z>MEya;5ONkRIPeNWLpg=#i32gy2`@r-H3NQ0E4Ld1~aN|J4GFxYWpS|c?DvVz4MC~Uv+IS z8wI>^P_6Ai69G^Y5nzn^5}S2Zf3@rji&(3_`ML+G#&hXw8~*SIFBwZ$*@;W-z8h?q z6?Q1C2>0sO95}Cw0BF^#B;u0&d4Ivi#5q((D)=JFq1_rT39D^Otf;;c_iXTfaXzga z)V%yH)5U@cCU#(3+UjxuT>ninTabPc?HG0g)_-uLS6g7e=BrA#QI)N?^C@yq^M(!b z4r44MLWTAz1s!hHQT9rjksS=@OY@!Xb8D8QTHDl(T5m?)JI^-Q=d~C1h1Wg8$fFR@ z^9Ix{Gy>GrCE1w#;w#4&A|s3{bj}XxtWz)2HW-<#(w5{3gJ-M~Y=a+m})N>U9+ zHt=F;F_UXUK;DDdiU^nKH;0Xorw$l-h*}`#JdP0UU5Y-pl9i{}# zUQ>dCN$=XWdPgQeV>0XO*{(XnF(TD3t(yym2~JYmo7CG0$P9&uT)%GZYt!QiiW7Wo z0=(O_vPgF4Se!=J+If=XI%iqRt&^MJY*MB!1-p@%y6#uj62}OMWu4xLy`nrOR#S&M zy5$C8jdtuCxsF~hbOIc+xV}+cEH;KmGz)r!R@ZUo)zQ}N2fj^2c0vQ&f}@vTlZ6E7 z4Sa5bZfFzM1y3dcJwd!{eHWy669%;DPRw%z+Z0hakL#NtUP|4YpS5)}KMC+KG-5jZ z6zN^_^UP80v!zKvG50VY?hOb`0hV+;#@utMFZ_+D0RV{`;5j;igFIyNodLrORnwN<4rk42&L{GU@Wv4f=RYG&c@<)ntp)`bH6yCl&Fz)sb$_pl>g=)FKbXj>3a?NU$VzH)FY z{j%qIY#9107b4V|v(2SWpS>u>VTrPOt%v(jRkCHV2fJ}D(~s(TSZX-!V?JxPv@&Bc z1?ojJ=25Vmr2Xa=X8GDfLEx0p#z6!2BMOLQ{P$HZ#`w)En3K%JJerqMevsN9VRagZ z7K;?<)cA_G7*VpAQ1Ep&;Rx>`VS~VeW|3!S;zw`16uoz18qR@0<;KXNdND=Z zH0!lz+dHwMq9B(mF6vnyy_m`5$YFNOE!zQ(TPkMjWG&xaZ|A?WE0I zIMKTXh6?+-doz{TGsD2?lw+qY8#9b$B|!P9SjHJslPf1!*|^dMx_gSqm{Ou4w23{N z^Thq#+C%%Y(vDCM^1N3k`$H9^3iW_z*u6SQuO~+ljxo(X4tH!#tnQL6R_ww7ns z%o=A)?XpJPY899s<1QNpwVx6UwXv*ion`z*_~#3T4xD!&IYQ-x{t9t=kI+Z8Gk?k)v=@CK@e zJwhkeoErBt7tKLVC8^lng$>T$U`NRw-xFV^x@h+{r8=LSnlj?>+J%WRE*FQ(%j`}s zaIY=d!%b@}3dmwAHKBDQ%7bW#H@JdGyVUV!Zi*eBP#QbkR_BM&jNo*oI4CqlWlL^r z7cX~4mP!*HGw*;#W>{I!Q=?`@amHt))9Z?~4CI!lt&e%1WpB0+GO6#~>2eTU&;f9c zOis^}n4f6B=pG6Oe9*v+Lhep=!#nFc!2clf0*;MWtauTmF1An`x}ujwXp+wsPi}ml z=Yd*R3~gpd@dBm=-Dfdwv3|+sY9L$RZ};(9>XYb2Pw<0MDm1XSs~dnZ+iKk|jNC&3 zBa0eCCODq3d=YQZmc;jYg&z46c$hPU$27DD0M`QpOFhHjA#Nln`a7K;mQF5KHD~E1 z1kzfjbu|It$ejzte7L5a;`9zac4np zAMLpcO;EmE93fRApKyCDR{$e-J*h#AH$x2)d?UpI>U)8%pz^=5}n}@$W7IgqUTa9n10LkLp z_d5MNV&v}C7fI0x|oDJw8YwE=;W%K zVVRtQJJ;-X+Z1P%M>nNxCm6V3p6TCl2VnVHF@On9OLw=P_{vkIJ_}(B|0>No4omM- zG(fIKoiR9_6K*ZUQI~PG8Qj`ou`1M+iNzn`3BLCLG*-j8p57fK3#d%14#SsA?C`$HFw9( zHCX_><`iK!?(H$@{KBiKz<&S1&y!3r*ui4%h-=BvU}U26*Iy3aKp_V#waXk^p2>Xi z7hO~L`RgwSb?zJUxaz+1*Ch_u?tT7xEbEUse?5kK_w&~s7*oKHJAXX}d=KZZN3ieZ z{PhS{$5Rm>-u?Xb2>898zwY7R^ZDx@UQaE*r}Nhn`1g4Jy6^Db&tLZ)-uwCM>R>ks ze;?juo|f-~0LN>iqjYf88kmzRzEm2Ws}^q`M~`DNIh}rV5AgzrLUB{Ph^i zAL#sbhov8fdW>_=4=+vheC)BmIIbhbe}ePZEpqZwBOPe;#X}R5<2`?jHw@@q4Db2; z^#sN5`}}o9{1^X#=dVXN_8!di-p^mx(fkK=BEX>o?>jQ}h<_8qyPv;aQ=feYDE-*; z*X>|(dj3AnU)KTP^!)vtzrL!DKl%CVD!HPg9fzJio`{pmf6V#oR`nEh&AjLH*RPm} zKhgQ?NtgG0{(4uJO#Fg|A9Mb?>-7_#zkUS`{>106tJ6<>{%r!Cb|#0@yDcdtfjx)eVk4A zWzx8NpTDlYTudKF<9l+X$rTdN^jR}@#ZE1;E2(p2?24UBawWL7_x$xeO*&8{X>#YU zcm3uF5dS+qf8GCvC!J`Pb=OnpuiJH_|9!-P13T>``Ywvmcb&f;e}|I$jtV}Oe9hX| zS2=%OSCjk{U;U%<&&U7xpZJsi&cFNbJ@|=VeCWu-f9jKe`jc6H=}?W3p^QS+$kx9#$od0oy@jjhwTtg29FTw8s%D%{r% zd6ru18mk6ZC8z{3F2K&xCKNf|_9v*M-dY3?x{#g;diS@ayiD|(#P0jQfDz+%)!49rn8xDf+${fy)2 z7<2V=_i;qe6D2T|<=TG4(h#m3I>Es1x>JeW z$w}3%#Z}Sl&h9OqPIq?7J3nHd{c{nQFi`Dd7_jdx;z{{*Ox{&RJ4LC`nf`mLq78vg|f6=d~-V1BL0kzbe|gvn6`f29zBV)lWwVqH^d=X`b7CxPbNy?HLD^ zZ-MV#CDGKL6z3RCkj6XrWZaAjEmTr-*qbSLNae`xuCVT=6KL2&j?N0^R?0gTMrRj< zJagKy92Y&Pp4y&nAhvPZTXYn#ZYvU{juGUd1A;;RPW92*Im2y-e>0#_y#qC5lxffF zIP~bwFgF=3x~;@5wzobbWAw8 zMXVisST-%`wsKx0>mFt?DqobT?{lk;f6*Hmeid zG2;?0!Qk;zSn6-yP#|O>hnpmJgCfnjy%fL#rfy&(p-0b+orrZ|kNW$r;I{ib(pq=< z^*#ba3du$QSZ=YV2&DK=Dc+ONVW$!Q=|XJjH!Xm@HNZuDy9FQNhg2d!tb5p#fI^-U zAkp1k?8BON9Cl+r8gj75+^=+L-&3%v&V>I+e=8~8)o;(N<2w_1G!_y60*nwu8Z`W| z2)fziVv9^@FA@6Moj*yg5lhr3Dk(WqqY%-tAQ+cP=;jyWY4?eBYcIi+aA2|2=DOsn z)odimOEn#gIr85t8nn-C%;EqHxrxzAgC4S53xPr2DH0&;1fowN1H#Kt$ zRd?0gK=~MCazQO6mmewJaD~Mc-LTYs+sNR|lVhpU4zpqk;iUr&+B;ql`LgJt$3r#Byjq+*$NFWPZ))@Kdk1P<0B_Yfhl2{NUL)=UxiALvA zib685`Df&xRz_s9q{$>61aI-^*r`ge0g+f1zQ?lcr9;m`XXvfx9GyfUeA35C8A>b> zD(aTVj2k&4i7+8QGMBnMC^3)Tq7h@nspv7O(zGz}Xp9)RSgfY<3aZx@aPLGg>@Ou) z+Tgs2Sgq&_l8se|6V7UrqcCcI9Sa9biEt_z<4xE~H?W0BJO&^Zugk(k&^q_&MMV&V zHY^?z9QOLa)yK%3_S7Pj*eM(WzBACSmnb-aTZChjPujk$~-jNII0Ty2) zk4z>(wo*+fMAiu{Um~Fui#N?Z_1ybNm=uGOA|~O*AjEBWDbiE1b1K3)tFM=A^@Tro zS9Nzsfhc?cL>}ylM=>yyBcrN&Q&chwo2|L35b|^>P%8{&0q&^*M|v*}lY`@Cb!4F% zZM@TYf94Lkv?mhdnsn75CWfd)N<`_g64P-r3Ohqa!QSBHDqT&EAfn)A7(}&^ily*_ zAtBO*-Q5IC1m4b|H#qg&P&`opbut7yUW7y&zV66N5EC}ldcxh4m{XD7sm}?devhSMNAfM;;`pl z2G(-*;lgf4uKI9?JQ_BC!ON|6XFSpoM~-Y7xxIbhtV+ZkW|L24dGMV!c_G)ei1Aq0 zD=A}1C3V7^Z>U1t&Kp3>9%*9anqXsr6+&t_*TTi@HUf#=Ki9r7*MJSJ^4S-W@~jc+)g3%qd|__fEz0TEI|Xh-1E8 zBLAUE+puXJB@&seTGjveAPaC@35T0FtQu6>jyXr_)bQ3qs7GQa$v%dhlYmn1Z zDJWfBHI&Ay_Oqf2Y~eKZf|RMXi_3U;)3GSVcgdB9YjZ2E!8VQVXD^y=oo15Ykj5p> zw9yq;U^@lwW6LMErj9rixZ!qk!k2=VHolfoluEYkZ2B_`D~r$J`b;d5jvS<)hT0f)$^j87DziS1o+@hIL& zD-fU4wiPFV=+KT7ONpInobRc4>85;=7x-9CmgI#_C-2-TuTH)gT&bV8=gaq^a#^<+ z1Z^}(;oLj$@RN4}59X5^@NA{-*5H@BRuHjPDe3l0n>tZge5U|)%J2#`p?%J;MpUcK zL(vvKg1V(Aa2F4K)~dh@ym?_ulkBKffj3lfeavG{U^A)#?{C{|JZeSYxH*V50h!U6 zzExJOEfp1avuh6~_Lq%EuiFHG(rsK2493=rrpZ>aI7st`lN;f`;xD zD!(B=QcEsFexXRh>9)6J#sCacuuT&Df(c977_3@ZH}%?fwuXlqqF8&F!40XBD8hz*91dTmx*`HQOW#wK|Al`XiFc|qkzSwiwskO#T??6`;WsvECj1px-a z{sv{|A`pjt^h#%QZZ7NQ(c z1>cM@jK{&+pvfG#U8Vy`fWB#yGr?u+d$JfDF;&qm+=9Ld^4_6Jar8QhtpLAe89xN7m{x>Oz4 zj+<$4Io^2K*B=PhQ_)U=;~?&C*Y@@;--u}Ia=bT$OYuOG6{Ii1xULMT%--(y@PrX{ z=?kto(35@4tMb-4nmKn)(9sJEn+R>c{c1V>?HA|o<@diSH^zU;N1_2D?oa>u@f!Fu zzx?Sxd-Tu!2Zhf}P96IX|D*r-KlxApv;X|R`17CrFaN?{{M;j-|CPV=m;bB(`oH;a z|GU5P=okL`U;Q7xIQ`g61lE4*Cu)KQ zf2p3be`1{COXR7g;?r0Sl3!|3yD?xS^gH?GdV$06!@A+u;J4|oK1z-P)>c4&t33))Z-rj6CHd>sFw7J&W;!8VhZ*(}Zw4G~h z?Y5rMGpszKxG~x8Yqhu3q0k;oI_wtO@7v|_24L)m?rvD$)sQ~DUAO$eZ1-@w|_ z+G_8DjVIRI_o*2UVyew{BX}_A>_TU=xv{Ysw%6Lb?K-?cdb7zN7~O4wfM$Aud1JG% zakRbBfacy#yBl!Ee}WS4t%m-z+MV5Y)AfhDR=eKX9IdumYZ3C!E-3Falyt5)TkUYo z(dRK-Xx4(GsBU)`&Nu7r#@goA%{E`!YrEfVho}G$^ZZgl@cv+T zCv1kb#cCxCtMyjxT&)@+#$@=xMp&(Vw}Vh&E3Ac8{tp|qut{?v%r(QXvJ}3*-Uw?| zdep+T@M?=on}TdihJU&pR>F2?6P#QW?y%1H>!nJq<`CZuw{{)6FifE-gnbqJT?&Ff z9<+DDjYgxqxCn`6qg<_4YW4P7ogQL3tZp^eHfw9^Vri@zHfxozxmtx$I@OlK{(1|d zA#2yLuMu|IVXajN|7^XX{%dQSVXc0n-Kf>+P8U&y&(dP8>QL9JYg;Wt2)IWCOB1I?$qJETq=R!BB}^0NH6yJD=|aHJ6zipe?hGfjx3(5m8BpF95xGK|CV5D zmCdE_Q)_oy)h*u>>F9s4x!b0pSy>Fv)hdX>kMbZR%27EXq7n^HK;ls_aR0f82(AMTFC{P^Jve9X+m!+Yw*+RiW6V~8l zt%e1`-_ZbHqfcpYv5KKoQFH@2SB1VIvJHLT46knTol$G73Ck+_lPNObL-g2atey+2 zS2r7luxG7a3pY>)93pjC=b7E5@Q4^-V9;N!9@baq7x`hh&xLDv0mBC42_9f;Ved^0 zx5Q2>;e-L659UjQOQqrYQn|EPDh={co-e?+|6VBtOQnx2o-56}27m_VOBDbsmAU%kzVSpd0{YP+F~qV5qqW8Qh5p4mP(oV z#i>${M4}-_CqD8Zg?pF)-w-|di4Y|r=#LP<=X|ip&>~$vXx=pb=LaWC!Th9{;BR2R zps`q9E{#BSUibk-YlTvFaZx-}4I0b=+U-So08Eu~Ko5Z-D9|ZKLgT&G`};OMA0XEB!N8k$t1BTHSTs zsfQ&8Hr5WS*9XQA?QSwfZ<7Og^ly-+rqq8eOqVKvxm)}i{LtS zN8@I-I)C0+9^LBH9m|`G;h=|WZy}TLZLU`1wsyyhR<1^L+iP1tbiC9mW#4xi7EMzZ>t$;i+pWu2k+xNfrQOAk9M$z| zM0IPk;oF)qRi=QOf@`gZ3Dx#4BhwpfY@&Hjb#3>im_wnP5yS1xt<8#SYeysy)`Vbe zH)@fh5LUI`t#zz1Zfo8QX=`ql5=9}b!?(H^E3_V#7mWtK?)pkx3`4eZt~Th{leB{( zvAG(~dlE=nRvYmHyLRJ8NdO7u>+@)ME{_Lf>|?-iYwE!>g|EdL`B}DVFO? zT#jjAUc$$`UGr@t?XdYnV_CNBSSI9|32g1sQSeHd& z;A@M%Z%Z>PZA6hZFUKgla(W>=MEsF!IX&O3#%&w$=jalrqcN&2o_B4lMAnGEvY9Do zmkuT_Ub}9l(K6?di*Miv&cK^-Fl1g9Hu+GD&A`luVouu4hSSvMDwC0?T5n#TXAOw& z7UHIwWBBH|$VNw-%xFepb2W+%BkfvsX;6x9)Dm>HiWfFqidkXOH(^t;nt1D!myW@W zno|myobQYAg^tE%?OcR!t=?EQLu=NfwlU(Pqp{v(`f{Rekxq)g*5<|aLEnZUdKEMp zQCkwf!)D~qw4r!p+YIX--!L(~W`>rujfU+VN0*5sqDxxh+S;wym^Z?XGw>F%-Se^$ zZuzj;jGS$>)wp`y8Du@4huY0GGd`klG!HRNHfsuf8$^X@9@-$zxxTez9zrkHmf{b` zW0KIgHRHInyXMDty}lkBUwzX;Y4hf}bsv{Ht%kGF&GW+%*jC4>nOU5q!&_Cys|8`> zHf9N>WUZUEQi-yf<{In6-VIhcZ5D}L%TN}d1JU9Wpv*2S%HfUn77I1EfZb)Cy1|d# zt=1Gb=KRk-$+A#u*zm>=%fXmgFXuEi z8>~OqcqF8K)Tr!Rf2J0yEa6yx=?`nwj#kCCdW96L#rD>SDu!5Zveav>HKCr}Y_CnW z2eigqqrF{dO{{6X$C?m$ee=uU-S+0i_NJDuTb(eca0P#xVY#|NDo|s2+U_j3|Jc5T zXRA&hzt#j9eBEu|U1~qj*=;r4s$H)81>x52rZmuKvz{!pKm1)Hz0zoY!Nx|5 zqm#h^PrF;Yh4zQ|>ac^fRfBtE-RRV+81Bz&Qe0(iR}L0Q?AJP&V!cJuA9gQ1Sv;}W z93+h=Cs*puf-cVj0FKmcGMu2D|H8`VS~a}7Ua8p%u0|{kYwO@_gthWgc#t)O);}x+ zV4}I(q)Q|0c|uG8w0W!o=QYv-CQKE!<3 z*lKl}>O;D=)@ZFRvQDd(Sj4P{_1-mna#0*=k+eukyI5bXuC*Ji8frv+ zp(ab5E%0fPSO^EuP*`toHP@GHEni=PK}oiTes}AYaQz}YzYohnuTB09&(XIQE>>5| zh42B`Xl%8&c1#;Iw^$-+!`FXx%x^sIu0q zz*^I-Ooa|&KjNn%GFg+HLmW|Dud@(^nPlM^Ym#bO{vIgT` zcY|eXPRI%XYehGeUU@EQNeNFd3iFU=y;&lC?15Ct7Mz|PCs)O<_*R!nBjUC+=vJu# zOXge|PFNWlJ`j#@88(EJ6*G4UYb&K5WY8Kj%OzWGB7vR;Bk7m=^8Hl3ZGe)KiF z-OJDahc<5fc74;6vO(W#@s+*5xvyR6Ompbnv9=IMQsXh~leD)4^X?g;eLCFHMjA z`jcaw2W&^({ywnW$=puKp$@Z?)0y${We|RF@bR(T13>RKUf^%zz|O`lTY?+AuXc6G z=4T<2{lfVDQ=I@JANtbMkB_y~kL3zG^0fnZxA<1yYCXTVpQAMet@qE&JPrksDOYa< zW90+8x5md0ZWPA51(H6VaMUQ$KKb znI95)e^+Sb#>YE+d}RCs$LUyANB(@I{KCe8o#*)>vAa69h{ePj;h$l+gS8EkSNfdR4FBmt~a=>m|dXmxR4nui&3gO&_qKw2s+7iCNaH z{5qUH~DxIck{I4KG}%W7_>TL_aG(Tn3^7l1r?=K zuS>eewU5E4myRq?_s`BAIdaM~*WG35XjhjYUznw&@$WBB=N_B+a-62$&A=4W$=QHV#KCbyh{tA*izUutbK&Prhn%;Xa7&MV+hd|b zS@!nWWq3PyJ9qmiclwTY_|FL3KFZ@>w{<76ivq4SGh=@|`dtf(w;X!Pi?+wMiKCr> z`n>HiLSkTby-Q=uo%eM*pBU>rcsm1u+uWd(7@Y?ll^><4pcCZ4`|tZCk>}S-#~BZ* zq&jaF#xoCkL3nP4JCl+HdYnXovbL?U{YWt?ixQ=yKCxB!YQiaZkf`=IP zm=s5I+zuXqROe`FqzX(fy)(ZtacKM?;yq2wwj%zqPUCrO0yEPc;6m_}?gJ0&9xvm@ zi12IbNY7D`(3AsStu=9fINWMdlE#%{IAa({|X{b97ago>~RVZ?+`{w8iEfxaZw^JZ+{U&H}^YuZg#u# zqva!6Z06VzXqjR)Y7agz7GOG<>h?qXiCRXI|Ip0rS0v;^M{vETA=yJRGJZg>@r_6p zf{|zh9mz@j06II)9i-3Ow}ab9V{$)w;OM=`A>z;%K6D&;|Hi|+6uf^m3JoV;HV%n`aRavHW+syK*E2Jb)h^vvJ*_JZlSfv0C4&mNTPY0&=6 z%ExCPM^wlKho&%0%`5i`{T7>poId(-fZIf@+l9`3+xp7?L@+tJT-8nGc7hJL_Rmo( zolKCs63=lFU^EpT`4RuRsc?lbwluaM^n0?_J#_ZArIVU)+EyT147rI6uCgRQRHonJ zYk@EN=^8oU1Y^C0`F3t`A-KgOyPaFVO_NRz*M%OwcIc%~tQ&VVF}afb%IOkwrcm%F zGj@AvB6}#fJvos*V1N0(G?5z*{Esm%9HPfWjthr)2IaN^GbX{XzH)8i5WxH%zddol ze%+pcu&&%LOynLkv^lOMzaZ5yypYY%JO1H0F%k(s5$HRzAi@xw44w*ZPaMkg=RwCn zN-7BwOBi8V8yA6dXNK4`xVf>yt>Ahb4&(?M`g0QvN*FwT2U`F{Hl zdSJ%&ikP^6LZ~Ltgf0TsW2pJu``h3qQ8+6l-~!=b3=L=WIThsj?UakAjf%C9(n7%K zVi;o+2Y6?o^+Y9}8x7=r#><1o%OQs1pcp1aH_+s_BZ{wq$m870M~XSmhcRQ#_Qx?H z_1u1N;t+Y1G$I~`L=%M=%}B8QpS`+1aex%XGeHbBCiH1KG`hZ{8a4LOrzwXYds&&7 zIIx$MgA)&?SrLZx?+MQ1u%Y1s)%3n-C2|Hb?rbP>jP%$X!q`n2_?K6TComol4@eZbBAbPF#8q%h#Q6{H z=rgjEC9Tx#iZzcb>J;#ujNC7>nHW0i)y0?na4wY@Kj@IBIZ9k(47(9E-`z(%6qV+P zcQ{9jkj)ILxc!ESRNpJ$0Q;fO!0FN3BAa8hJx*c>rx2bXNn+Xh#?~F znEjS$4<5K3=`BINmmy3$w(()~J;7|Pm^Z-%CJM(?$}zH_C!@hN?h_Eu(gR|2b&7QE zKY@>6{qhizGKExAm~+~D z&1PMu<9U!nWACtnTL&g>5>r3Ca{R@DF8tnWfonT3Mq`*w|zFl z<6yT8lJrC?_y;6z=fEWrb2EB#G7L(2h4g!$j4b*ceOf-Ej3V5H z?sfhRFh330f2RB}Cx2dX3`zMB>1d`v`T=P}jG_Ed=l-&2F~pdNp<6OJI-BY7sgZQS zucL7HptsVejP*U)jyDA71Zi#*?mS%(x_L_krA+rZ84xYSg#p@^gGweW21en)W}AtL z&bA0WsJARjL}M`mQF6t9olX*-_A-LFN(K`~#$W`iAlK$|DY(z{A}qHxHJ}L?=E#aM z!`V-Qpi7Fh`YcTJKFE^$_JnqVme>N2MR%gu36wa>92mRJ=tuD(&5;-vmVCkyVCaH7 z8S!6BTaooPNr<$|Jq!ZA5UOhyHq5Uw<3v3cuF4x=MJB_{LYrB!Dcj5HkPt~?3pPHu znm41gA&U7hipI1ta(ja0BNBBCL(XW=D&a(g`ml18>{)R>qSZpo3FrHAEIXip0@MNuN&fs$iOKTI*M(HN56 zQ@-Q40+(}!ypxt9Mz9OO#BO0zqW3i1ykz9*lpDO?ZWUq`&+zMl2qfW(c2uu-X zr2J8aAS(!N5k_xoVJ7urhagFFz{H}gA#;c^@pgJ|9`1(+rg`MxnIcR~Ns0Lm*!GK` z9XkYEMrnoP!KVM7j7u2s0D4)|G3F5E4gug?#!rroXM$T~BnLQahvY#&Nm6>b!ewX! ztn`UCOJ}T6xR#WhK=T$Ie~($u@`8W$n;zTBb%Jfo;eh?+JNIhPoSHI>p8uQULI!i$ zHsBz`riZ=)A+>GudwiQ0jOdp(m+gufy`e<|W63W_;hBzXhTicH&xw&p_=!N@kp&Tk zpf)|Wx$DcHF~t{37t%?QW-&t6>*Y`?=XF-ABuY0hCTW;~}~KyGlTW zKLT`&%NgCcv!Tc*(qlu+v$5e*X@^jG0^{-UfJCdQ$Yvp7_5xSzcQ~%lPHLD)E*vf{ zs(D-i$M!oS8698y9LPvI12-m}OA&${@-#<@YrwEk^J4j6M_ZaB_B*6RUXmn^<)j|` z9&Y5VoBa+CDqAN6#m3|~^fEXE2LUnl(FK#?tM9^ohnh@5e2zsHEzuaYNN)-9y$oU6 zy%I&+;p}&?oz5m5gRb8!N*z;tPciirFzj{!0;~}?9VK1%cri2yzvgmj8 zX+x}3A~Qx<@9of@3eB!#VoEY1+UzfOfI+!bgTHRKBXGMN_aYx`|F-CBw?hm?I5bLq zEKlDfU4}cw1K$&q)2d*F#LwbSu>F*%eULvHwmVF8mqZwK$g$mFZcW;uAjEb@5XD$; z?k=}LbN1V|y_g-xvj;NT?r`p{z$_ZcXUY-ThRVboN&OM+Xr@4i+V7yk1qEooLweYj zO^YK&CEo9#v+Z~ADdoE0huSG4VeEA2DFrsqYw9x94NcuKW_We=p1q%CkU)eFyRELWEq4{)69LQ z8KFV#z_H_@$jy$2kZQ+6mlSLDsk`r()HZi@-HwN>OH~FIKY06BVfzJOqKP%%tp7(efDhX_QHDIFp;iA zW^9abS$iISlwwAVWKN1PPPSPvz)2s?5YXy6qfi^OB1(Ol@llZ6W=Wg_AP+XL5&-Co zUyx|0K`v!es{xo+!|C6cwmtP5npRBNfs%UddKfPlj&?nKijY{b z!v~C*Fiu?Jp9>Ol`!j+xl#Dtw}rijdK zZkqt`uWq{oF5ITa7eMNw-a`=#21jYkojMD-55wy+t34#X`=<6o z?tFWE{O73J?(i#%Ce?Pg7C{ibQ4znkY>$LO_B+dH3sb&}`o3_ti}h_OveP0Z zaf%-AF-7y+NbzZKY@o4^!n=6*%FIq!UTdi&BKv)E`j|3Tm6k4~< zk~(YzyS&>%jJ-fSlo2@<&|loss6~xn_;?$MGrKp4qPvKfrDh*i&=g7_$YgYRJT}5t zKiYV~>p3SFPv&_rn~gzE%H)7zO=cUgl87M}qQYL|ZE89sHOU=d!er$WF>S-dJC^vV zi61kG+P9?|x{u#ozEgkGRFSDIdTkFonAktZ&1@Y0G4m=$D@(yYJjL>C=o_YPI^g;t zDNPa>V~YM5PZM`nLmL? z4-6QdS2boL08v??OlKLlGNEu2*?43lJ?1US(G^PECJI6mlmtW)!XJ<<3W;r^n6aQC zA$=3h(9A9KsyBm76uz82+9rxA&~S~9-_;`npxmOf%u>Q3hjS`Er5{rk0@zR^xj9Xq zE1B_+IA-a_Aoi3zM6QIloDjbwF> z6%+_p zbOFc=P-6u?>B>Yg$%r2xtN6DIq#F zHaagjyK=~wLL=)mHVeVWVi&-z{KOJZK=D+DfZp9Kw0ulb z+bs2Md(O!Tj%zZTjYYH6oA6`WVHi>5m?2{}!#VS5pnQT%3NsUxP#=i=K#u18!1>)c z$A)+0XxIX#m3K~uMs6XFG$bD^6USp92EK|F*?cMIgEP~lGqB7@)2etSj#7^!bEe=uuUD%WIPpg4(-U|`M#l{ zqMdP%A~&&w=*iIiERO^zs@R2SNPz<%6PlQDCL~n!NaZ;ZsvScGye2H7hssXO!6!@? zc!R}8_F>!%bH6+y($CWP&oE^p==k`D0ShFVO!`g2briNOtiX;v2@>3Sj!l>ke_NX{ zQnZq(o)3e8z~1w7e9|+c(5NcJD_cj1CE% z97Y-3EiydBgQHvHa*S8qK8z13;3RQTmY}qV6~nIJ(L`6wxy4nvm8K~%#3XJEDH4Cc zIX^0q^D|!{t3?k4=+S5|vk&9KtaOIr5Rfd9eHi5dQ4Aqsi;+85Z41Uhfxt(Yy!8Gi zE6Qk65*LVSTtu@h!+gJq`zrGU@?k}21tdym;rl+*iYA<$jgNAfJ(x11%^pnSdAA3H z@XD76=;B2=jN5*Zd3B<|3xES75Y!pFJqBJI7!I}CaKO+&7^rIHK zQILnw7R<&iZ5csq#h$nUQVHt^7)u#|a}Kn?fZCh{7YYLWMJcT9?>tw36GvML2JQJs zX(8Hx!5!IvxvR%G%)v7EgP0@*4P@@txUr5SYV*Z;Pqg{60#6nx%!r*OqXM3(i2{HL zh43z6HJ!i+qK`8nYxjkqAqj2w#ixqm!N(Z!V5x~>7A~c9`j!PXS8;-Apkf<2g-AE} zqtTS>=4Bf^rKY+%i55`8*d6pSU{9#(0UZ=+dn!J;5d+FXEK+4HZA)?^?VlN~c<;rJ zwLXY}@I#70%Hb`Tkt9mqPj)L^+@H!yvzCgm`$8<~bgHjv_eBn|OX{zz#yN~c#ys#E z{q}l*;kT=P{c$5&UO)ol1DQDC`BZ%nJYdMD4brCas!`<|cWw4jcy%MK_C1P|XU8ju z#BJb6;dVGqWi*p%kJ`M7Rfx-Epau;%f`V8f*y2FDaM$NE3if6AHTw4RL|7bOv6Kib zE;Z&-8_q#M_^3PtaqgoX_3$g@IdG#;I~<@|E{$XQA~b@snbV>f3Zy$_sR#2EGXz>0 zrHWfJf56QdVuCUQ$`^X!j;$BF^>FV}6pJAIxdqTqdK>{eIY0g94}%7N?brY6|M=Jb zr@#LAZ~V`{`CI?X6EnxZ{5SsQ|N4i4?|)G|-s`mQe^I#qkl^Vd#trbw_~G&4Bg2!! z(<3t@#gWozINBW5?RjqRzw1Bj)A)bfxBb6q;ZbmV8vI_L{!D5<>}=}2pWCq--M9U} zY1#hi`QQI~&;Jftngk=u&0Mqj#>i4LdoAE^aBaC+Xa@7w0=t~I%ct{PKB>!@lg}d>dJj5`E_KcO9`8f{oSqet3>!YD_e4dRUMrzBIu}X9Bbfr>-%XNJ;mn+%I#TcTo z9FB#}K@OCv1Hp+-bs)klAD+sHgBW@ji2AYS`@-_sA)OT!A-R5HuC!RFVcZ!RJaIzVkzZP7TT8BAYE5`Af)1_&b`j-(7GOHJwy~bo+>TE`+1v1at z$^?i&&KQUvkzQR|Jx^95fpRcfl$fg!)_~dN+S1<3wP-X(IL|A%w)b-A>4S66<%P5k z4S7A?yY$YNdtj|xT@EwR2=tC{?4WvoKq6eMEu6BUsGP2bXs^y0Se}dCkvBLV%>e0f zrd<4*X{t6`Ji};IIl?RkeEmf6EP&%9Z&a_GWysz*HGB42SS&6!*`Nz_zDRETV^g1f z35~u{oO||I^T5a(vnLF)NY4f)cMOfc7y-UQ;JVCGiQ4#wA3pZD+It4yz#ylZqwBI= zb;UrRz1A#Lrka`S=k*RD5B-XD9Unh3IW_fp>zcn_sc=NrXw~(h>tcnjvfRp&dU{~> z9LO9z_|TC@KL2^B@+kKJ=f8$im9hHB^-B3!sIJ#)bd^G@*Ldqt4E?eRI*>U;?}s1x z{LG8Ig(2uWS3MTuF(cQj)r-!QFGl{L&JnQhJbviVk%y-yzi3=%PM@Q1t?7oV+n4AY z!@9ot@$rWaA3@-0_~uBdKXGcAS;#ry-o7c=mz5S@4)Ws@zxXh{zxddr#&>S^^s#s8 z9s|eS#}6GjGBx?gG~HP@ef(UZInL2`m9rxppLYSl?PIFhOJli&-e4i>5#u;?_%Mn? zfR}>Im*$q5V~y~_5cXI*8Mu#Q%^nW-D`6)2@fbMje(=zJM~?idN2Wjj==XJGPV&6>b1H+JUf{k4lUy{-jh za27nx^~dR)Utto-te#u~5%v*u|zUOu@&4CkB#mt>k4q^6BA3w2N>8n&; zXnKTo!1M5vxw$0P7Rz8fbLSr#n{$^-1Eskgy<2&tc4@ZfYIy;ro!K-7f02#18RNF-k<3TbYn%=_$0*`o0B*2iXTGR)ox zF@W5{=`dU-D;VVb$V%yI?Y!acE1rJ45}dA1h1si3ES@7df}WX~Ga;th*KAyE2IV3r z>Msa+c4XDQJKO`!`eYN_41T6`=5lj@dFt7ne+t$W&f>=|d#+Yae!Ygj-GyuJd866c z&DJ&pe=)za;8KQhJHm1ciaC~K8!AS z7Ka|)zdv_zxj9H+UO4siH-vIB%y^7dVHZZI4w^o1f9sG*ap z{qW?xO*Ef`Tqtrkm_3C2*N!!FcdrdYv#%jE)4v9>#*J`3cs3HtXyrm^53d&&CD-)y zH-ct`(>1*bO_&4NVI!k=Mdu<4sqFtB{zQLu7J4?ZEBAO%{ zXo{hABFu%SKf%UP6P7ccRz0GHr=BCZ&2HR%4N}r)=0;hz+Bf@kS-`awzGtU@9TIg& z1kFewQTQ|KOg_2q6pLSFP!sgS*M&xsfc@)LGo%=KO~`{UorsYKk9~Qv*>A{45&^Qo z*Vn;)efGqoibIYu1-`+u^)%d{B6q{0JnkH3q?zn|el|gVd=}wAPS2S2Z1x;XWq;@R z<);hHT%$aP99hhZoLWG+8;#%$Os$_M`bN4LD1Hr~#?E<-VZ^_- znX|bn`p-;1W~@3Q47bgXcS&r6FEIwS1qKCcd@?2hz*5*-Z{9hdXC`H!2UnPR%T*Dn z&NHuhF^oiCRo$=8{AxmDqY8~Tyd0UCzcYz%i9~DOljy-mi!|l#EQtb!JNWEMGZRYI z_0vr2X)!R{?0{@N`?`)ck`{sM+u$VOa;aog*ci>tf-krM6lMgOIxsProuxrXW~fBu zZ)V@nTR;;jL?K@h@z-Y=YNK#T8N%IbVD38s?cjz8y$)hAnMS-|{12BeDJ6O31P}M6 zh9E|K<BYp1E>rMe2x| z&HR!)W`|3%8D!*@ya`e~7RwdV@KUpf!2gwL&WwrJUE+1jLt1r|zq1GFm$A6aThD?N zD*AE;?2Z5TjL_eGEv11{H)5udT(j{T?0pjojN7-+WrVkS zCCx8*`^^t;ydk1@Uk7a!9gE)*e8cZZ&GBn!UpWL?=7y05Q%I)xIJg+G!9}`c!o8RW zPSc#-x-QJS*TEbam^88nbK~#nv?7>n+WcJlM-Fq|FxM(E&xCNi^i!wdX_xs!_?w@g zB|=^CsMlkrv#%UEv=U^8Ys8D}#+_F@V&iSS61kmp#>5Av6X(?Rb@Nz^f|khPWN~6U z!mU(2w?2KuZu(Ug@xGl^zN3(S8>{v5lio9w64ZEg*Md>_8sVmgArxNO2qfh9(z)i@ zZW6uCX6-A}Us#dWhc0M#+FF0qh-8b%nr)Q+enNzoPAwFRcdscvYFK-~?$VdLucfFc z2sPC znFbuB$xJl|-(D!5nq_kS)gupFA~Kzl1UH)VMlJJYMm2jykx+&UjeLXmfAAXjr+-be zH^YNmgJzx#x=(mg^lTPMjn7mw{}$=0QiflJ9B*kkb%IwhaSr+2^P-qzq7;kQXN$zf zF-UTZc%|~)a-~vyqR5Jv6hJgHpAK0F?_O6%#GjgzrkVq9 zovxG@PR;(R6?)`nkCP{GR`%T`(d`XBKD+ScbD&z7`wo-`npfs3<#UbaSb^mS7v{*8 zo<3rPzX9QqyRR$R&{6EQtIa3(P#zKGBgdsBQAVBhw@uV7OzG%aB;%G1-wPZVcG8QFQc+8vhqx!{*(k1x&Up7@dzcPPl}sKD9cxn^^{ zP{CD~n!NJr70%tSEIdPIFfmjzfZ4lC3`+CL*YqB=8!h&$8f;_nw|@7vLNL^P=>(fy z>(4myKO@0)_~CIQ&#UVeieJ5>ab^A8#|xB-#aUKex!JEqgB^V7=}Atw%_+HGY7V{; zG*?*@utsel8Pmt?=*~4(o6T3AK3yrzU0ufj2Y538@~_@~okF?h%hNNgK1F}Ecw(`_ z97-sd9g_68-P2Dzwj=U`%gx^PGHy7_!tkz{Hs<^bteJ`MM+m=!x)&>saGwYlXIWimcCag^jY1{h zy!9n5AQzh_HS7e9zL}4&=xy=OEC$VgG|eHpnQtm19x9`q!BZ0X(+zDxPZkegqMYPj z!bPt(S<^RPnVjtr)hmT!-&{#l>C<~kbhY+2szas8aHYbqx~K%Z(??c{TKZR@2fSOb zqTgblr2Ix>cCvUMXT;kQi!Fi7n^~8+v&L`nlHpkEb$Rxx~Uav#3d3 zR4Ca0z)GnPGYy&-<~ST*G_u2Gz78)yCD$y=v9;{(uUy1m;Gd)KS@Jr8q%&Z9%{grW zY{HQGh)n4p8W|?x@$s*(RB|ssg~hxUq1j~X>=NFrB|}B1y;5vLLBl+@kvi2ha~KQ_OTrgnFeIsBCMi?X@3PegN=$w-$$gw z#A)tjl^w7RP%$#Raf1b~=n&~bR^3Kt-ROMh#3zgnN#*$XFKct5M^sXa)e1|?-rAj| z;M41u;o=4c*5qA~J+*wDeBKVwo{4TG@i7p|F+ z3K(|I2j2j9Z%C9B%G?Wv*%^}&XsAO9?LVG*RA|{&I(XzUltb4ptTnL0@v}9JhFIo*G9Nq(8C5*h_Mmb!%P^efvE8$ z*@_7e1V8^ZwlH{Q1)Gg*SydKT$&L;$GI6k7aN_(oh~eR7Rt1$OEh8zP4K5a%2Y9K< z*=q^Z2rncdr#T~|9=^EJ%yIoIS_bm_=jUXo<#Pf0$<{8MVIT)Vk!Ocs_9WgP)-RJj zuAgVN&aM}OCFa;#dEuI1v^_F=a)c476eYrtVP5#n%loQKaJpx;uY5&fU5~bhqhD@| z*Z)d3XRk1Zz$Uw?t|8e7^}pk7%;>k@g^YgsO+@!IwfA=g?Aq%f$I*73`x$Svxu5X{ zng8h%LI2CAY5JAkQ+fr>zDy<*B%6*>w%=oaB_Y~;(t&Ex5p5wFOl!a*t{dt3j<0CcU;QvkL^=6d&XdoRFC;%Lvxxf`Z> z#bCNu!4XKjvNf3Q^=u4dYt(F5`ExJHy7nwhUonBQ`DnRmFngAm9wuHi8qD5Bq6dl> zeFECI#*2a6x=k>9*JmCiUTnRze@XQUcjB|j(nvey_gDhyhT7GjC%u$W?jPJ^&Ei0N z_pU&+9ewYmhU+l6f8B5?_`o|Z5nQKicbXr(afu4VcgpIcE~)H1nA1w}9g=Ye&-Sfy z>YQ@wOS+F3CD6mnT1f&epG8BcL>aN5E0^TrmI06L&44|0A1_Xe65Gr(RXxqzmC5$H zOx8n#%@S1Zv4od+k8mm-%_$xAV5r#=%*+cw^(P4>`#mv)&kxBN$q&V6ln%0WV?fv9 z)XvakEs@J9k$V}py%wcr)O%c|f7WuboN_UDxhHTrR@PruQpM%ge0166Oa8JYNYrRZ z1R+N)KKaQQcFT4kB>{Au^?=V~+;vM_bbVFVUk$RBjbzD2V9hd*9?Lvl=336>4_WdD zbJl0zy0rD zeR}r9*S`LDzVUazdGi1Gd#USx)W6=V{*(CfZ_z*7q@3^1{8H{O_x{cPv-uZ>CbE+~ z(|xl8rNMBxZSQc2>O1fKxxd~sf{W@we_H=Z*{fa=!!ylRs>-Pj(Jy_fT_v*afBjB= zIXKE&t%i1+qgm9#8)x*^CXRk_uMwi1BQYqS<nOfbziAk~@)rugy18+_?qdgL-KeL>G7 zk9_V|9(^NN0?M@nQ;$qdKJhv|9F$1(gYk2poBUIczAlmuR_)AwQ-bogVB{?i1jwFaM=cxd97T0#0EaPWC} zVnTpIsFp07WQB>~lmEoyLuS|7!vUp-si*RMx^`so&>p36L~8`?(9+7RZIC~R@oKr~ z;eL={Rcj^!HKZ?Di$nMW<5MjWpQM;Kju#HX4K*f@&${Juv^D~kZ* zQ?HkFpar!#toAw=iKNwomOmcUkiKj!5ul*dlJ)q$=kY0fu~rB8y@*fO9`UJW__Q=l zYfn%Ad&Z}=vamPeN@yHtA)w7+eKolE2%{EB zR|I3!)oduyoV7;K4lS*`Roo!06xcuuYIAT`6Rc|We5w`5E7lSL3ZYseKDDZJP@+Mr z16+$RYU5)y=2Ojv(m0}L1ntn$TJwC?W4r~mIkcKGhQO zX}U5f(TMppnhsX&5ua){VB;v}bJd6&7j@64S%rZX0@@sT+x2o-)#~|FE09#B@FfBi zlv*M_%^M6VaIFr|_97fCgef2lgIsX(q$yR`=#k0i8PJmjE@y^LN`JZh`3q6^rAKm~ zJw0@Cm2N@)yaA0|5KzyV`E`d!YegZ-nAroK6BBfM|wYd z_5v5NPp&!8n;`8EzO{O?OkL)=P_F z;^rR^))Npn1}{Nw2yz|k2-qu{9vxWJ+3>OH43z5}(bbeG!iLrm0BQ&vs1Wo)-H{(P zv<^c|U-LLDjEDutgMeQN`osdTLXjD5^9ZPf$|5-rQA>71YSIe@Obl2LabdvNpI|d7 z6j{TJ=>W+Q8N$N*ydq7!2pd`0;EF>caNA5Y@B|TWu#}YW^{qA!vN|-mNGHl_#EvH- zRMz3;02^0_G$O}QPKxoEmJ)_8JJpCME;>YxC*e*b;>-qdB<=7*GciPmgdtOp>tkpP z91jq5!VL$8o4}@@8y*jhk$x_F{cuIRIB*gnvz8R17Vki-T#(ylzSW#Ec7!crN6A~H zACJm9*lyjo+I){jtig-gj3e~ZykVGHS80nFvV_r%85hNq>p(h%eiB5KSHjV}@|3gn zV`8ZB0v!^DV*PkDoUC%yYzV*lR-4YAqv0|ycAeu&Y5p?E@_AKQaQDKsg4e!2m$Io# zUS~_4KJH}CnQaE=0D!nXZ(ybsyj>_}Tx6hR8*Gbaw@RW3j?_w>URbimZ1H57Z>KTQ zi2Ie4I_dQm-Lnhk0;in}wwWjkg7ac#&KxQj)K{LbMlz@g6ki_g3@2aEHnU(XEHJ&7KR$l&lT+^QX{Tz`Tsf$8eDQMsA)~)GNiivl6*Xk=qLn@gnra_+@XxMi*^^ zeZ&P0Vej)nf0^%5I|PQhxYxzVrX3njB}XZ_c<7TN69+J1 z@^pHNCl_OB{AeHxJf(%PIZb2;@o6&D5t=mpxbMW_iNh4^q(t!;AYpbPS!|Qn{KHAJ zhmK8xM#tpI23{QKB;q_Yarl$R_6&_D)yvZdkvO(J91o6}Zag?$bDOGs{T03@@=QE* z_|d7fJg7x*B9am)JviM|Y;HAaH2wMB7&ufCX$~_ulY6A`pnZClA`vGVot4zkC{pa1 zBhz$pK`hQghYx?|(WP#2oZLnx7HFl*bN14LhpwqKF%p?YEY)9l=;4QdWv~0B^vrY= z$+bd1KZO=ox~x0l#LtsNj5IwaDU&W=xzKx8{0Q#}&MvnzE$8!)OUaiE*j{>` zlb*MVBh4-6eBMoL)F5aQ<{8b;J^Z=P{iVdC=yEdOf@0gnFk)dMU@~xB<}S%?&ZqNm zxMm4OnjBo4e1yE-!c^w-Pe!iQgLL0AVl4}pQQ(z>Sp{nBU>4vLovrw6qW7&L&wO|Z zeN;0EAsLV1=RWty^lw4ZkkR8LUsiaXtBR;&;Vc+Z(VC=IZ?7oXfm$paMwt?>o1pnwK|}U}BbajnYK(#?7MuHn>K6|m^kU2WEjM;=<7LV>GYduATs6^*OOtG& zsO%+elupM~6jpCYFg())>p?J2hkJS^m9U&uRO?y5AuTH;OM(ZJNSx)H#I7tX>?LBh zI6wrbZ#g1foE|zQR8Cjcm>Yjs%7-CTa^;0Q&*4#Ro3B*qwp&^_69SOEQ`&!}piR~CC86I>D zdL0oA-sH$=Y%Q23leO8J$D}=j#N8?Vj7eYWn$np7G#W#1QS7_XcB74V0_wdUR%@jLhr+AST74=w2M>1414t-7^z&ow$MJkone)7`qwy z#Ta>lA#MFyKc)C~967Rx8XKn)ZerIZ$G0%wKI*>1iXL_87BByK!#-aVDD1U z>n13RQJAx#CWQ^0$l}toT-^{_R+&jE(QTdkQM+krMWsoyXxq;OOCSN@T5C?H=%Bvb z&Nh@J$4P^&&3$a__7-?{0ZPpS@a*MuBCB_v*O9t zRpEj!ZKgBsREo2D}!r#01Q!N&qy zavb$DC&uKE6>>8ce2Zy?*+k?r+;{JlYas+??!L6Ob95iS{Cnru~@jcltVbEtuHwHp%^fBmn((D*_D0){Dkd ztLriu?V!@4EP>TsZ**NJCp{BtN58UQmq%*JWymiSNjTkpyUZB=hRc`rERw}`rPaae zYgl9Ur0rH$E_kS+h0DcZk{d+~-G$kiGbrrjsSZ46wD)N`3^@^i7cW4poYy*Q2!TyRR}E$b#sQ!mkb_GrF(16!cUUMz0VEe0KAy zi_e6+6a@#)9Ys>-p@mWMHgPUca05D+L`*x!$@Y6mbuSG6|LnaBe3jRAC;I6Ddhn1j z$<(Qddl2rueWV=+XzQEw;ey0C)49`jYG^xcGxSc4T{C>B;xcB}#bBX&>8V+Xe zo#aN~#HTS$BJr>!9!3akj$R-*fDG8d1_VMJECuOE(Zd1TvF`uB*52Q@zwaC!@%E(U z*ueMLd+oK?UVH7e)?Ryk39RWv8|>2DT?^E~NL#ExTmd{FnZ#|2u_`Y&%P$nTg7@mW zA)ipX+z34u#x5ZWi;3f}^x)s);6u1YJP~QtemP7bC|PFRZrQ-N8KiO&5Lqzx>RXJg zSd2l6Mk5esR2@b^&)^=fEZNA|Bp5wBzlS8G%oRspd z7@I<&Zds|d0EX*`@AW2#Zjc(??&Ne3V@53V5E8b&Oc=GPeGL5S65$iAyZ5}U%h$$7 zgv~2VzD;|(LEC~YXqj(j(ZrOUsDiS+uVE$9#~w0+fGuTaZ^YwT^VsZ-AVZ7P_U1rp zpqPJejPvWc4+3^Ca|k9Ug9rDnK1>Qg?B12%fB(u?|G%%*Zrt?z*T3;X;_tut;^u$& z*0;Y?SHETJw(T!9G&b$nxoh{!dz$y&6vm8Hmj!t>i6IVx-+}Mx<|2KKfhsLPdiol!Md^rDtFy@JfrMv z^DI6u%M3Mdcs_ySdPuH#6ua}#-QhHDpDgRDMYI=|`y;Se7=|YyT<2SwvBI`N^P)c# zFY2WJ=rwv;hs6In=Qj#Dzl8z)T^mf%H_; zFRq{n2q9Z6glEUmF~-H=8NPTWkm&lFE1+P9vltrCVzk|{5vHJ8C+86>I*Ls(0f#_A zz^e9P%~P!Ca}Zbp3~`7w1_DTeR8R(x7|h97J3@nBK`^7s0-82DshihU1+!%VGzp7H z@#B?H4JxHL-l#-S5t4Y&BgQh2QU>@8MfHF!PLrqElom3weSJ%P! zZ=|BrX2I97jiVve95^2>f$eXK!DWe!GTWZ|l?I`GYem~8Y%O)0fKjl`MS^g@2?oS5 z!2Mpmc*;Bk7imTGz-iI;r?{m-9iZ3=qaRRrwhEfzrl5(4m?5og#uFx;l#(v7U5FzY z2BC8eS*;9&T7~0q7gKyf^ZXvU%#%8lbG6B4ZFk4E)Q|D##Xk}5Gy;}Fa&^%jm}YN z_v;8YHB}jW8c?G%(qW43V2s)7Svvo;RgGI!xj{2K+$T9_RPahoWuop8u-8Hd2R38$= z8S2PZdwFv$wu=0Aw2nG%Z5_L1L%#_r&JFZp$fB>G^JBzJTfuyjycVW0Zm=8b=z<%m zR^~Pb()pey48Dw*Dm5mK+H?$CoVW_c-QT3!3+E1JqE$d7s7xveD+)lLOSP?{EAUNq zWQsD_s)lwj!1WONUfBTXI6V0Q+}ZMSh#C_1>PQy^Y@>I}GKE7ec)2W7*7HFo179R` z+^S3&-I+a^Avm`A4jWXN!Z%4-){`x2d?X>&$rtBl!0q{s404N66~E2=$7gh1cA)W zY&qCcjNCGW$1_;!pgepK8KePi=&cp?MJP3NupW7jQBMoWFti+m0>g2Z{f@b357Mu^ zv9^|{w8Uk%cW)t)ZzTz4&JltEHyp&_CV0IL))v)mcph6X#i%!%w*NKaYc{Xdq(x;Gzt?CO^Yl@yi-n3+m z2O!>42i8cN=YMvvf%%fK-`NF#-kk2&IUJUU-&86cXA+Maz~J{OJn_VVs{5BLK`bossm5I7zNnmdky?aPEJtI26W$UIbo!!YRfWH> zd@10peDaA^)oTE!s_Opbiv>#6Z$U*M7&J(>d>nP0%s5-*{!}Mf9 zBRr|rFI!o#{D~D+GpY?p09*{RX}F%8Tak)p4Hnr<6a^sbQ;v}g2IzrFpg9w;egS9# zHqcyopsHlK!I2wHz!3r$ReAhIYC>)sm|}cNb|T7pK@+EM0yKHPxS$FjckrIToLB;8 zBccYXROXQq(bycAiYFHx1G8$9k*iMv%Vbrt^jsm%T!Nmjc24ZDrmXu?H^5V@SsrJC zVkKBsO){zw(`xw>Npc~^dSzKv)pB6C3UyJ6{g!HkhfxrvO1o_~5>-{9xxpWhx9anBb0DUO%!r68VrUoX z044(^siwVKFIw9MZnh)z=0NRCJVZ$KUak!Y=|kl&D9VM}M)mI)jA>^tt1ZD1KeY4i zap6<8qk4iI?jiObAQ_d8Eny|VW*GIn64mppEe^&lU4!0WHWc!N`buzv^hM9cBh&BH|Wz!h$-z<$-npeB$j?jf_=Ki z<31Qhn%-)Kz<=OvJb>+H6Oe;uWXWmuwMf~SgeC_Ufc6F=q7b}u!0Apw?M8f)Qd-z# z_Sw{Cwgxs&+{{o76PBs2Qmyt0T97R=#?ebJR#rohL-68gWzY?3+f`nPG$LEe=m#5- z!GX4&ggSsmR7a%Q2yxZS)17EXAHsSPW7&+$(v=6EAhDLMELr6b3;C5vv+gR4prR<+=^Y(rlMXe$zFGVwGOW41!=< zvEs?nHRw+@XS;%0AqyC0oA0Y(Q^621u)*)pEGaCrn#YLzb}(#Ox6>L{Y8feA{Hm5N``eNl ze_@t6=?^Meb9&|sRaSd~h_kBu93x&I8LxTZVJx;w9Cnj)~?p07xdSdy*e_jJci<*&GjovrdmiS+5+ z8k$`67=m};d9K|caq*mu)u9%pgB8-j<(0qm>>{)%!1Txso6MZ&dS>M^P=nm;w9m} z;8c$^;dcgN(;uTyBQm$VYdA#!4?cQ>rH{QqsE?fzW{%Cm)9U39FJ9`74>}`F0le)^ z;PGp7r&how)Jh~^+V;w6%g!)F6BaMWC&V7}nNM~opg^J}zf<4|r&EqlHylE3n<^0Z zCW5Z{%a%+B87eNtODY#RJ!6CoA|V-_vJp#@-@Cx8Xrdwg*<;oCf?AwqhN+L)WIO1z zh^InhEXsw87Wv(y&j<&dTc?k{^xKn}B|;8|ucbZudVn@JKI|GM0!_NeRjhKUkV~f4 zS(JnxgBE4`!j4`b7`c-9%ov1jBlb?3g9woBVWezhSSSPmY%3H#A_IrBHqS$Q)L>N* zNJh>H?1Z;0(hMh-m_nO0=0^`x09Ou?Sv1g&bcs$+aS#>*P8mMNvAV zHDwsMTY`ht(hV%WK6LlY4zMV~PQ}J*M2i8qJ>^qtw?9I_WiC-Jn@FT82~Gp@R9LO1 zR_LDD;UEM~#~IB$-y<5OJtkxjx6>DnCL87i0V0@#lPqZWu#VA71J|TI+ruVXnnPrl zDGLuDFxSmdd;SAu!8gaKO6xX^@DI;I*$D+uz84cKpfbIRknjWny2^a$fo%l6k}k|_ z+3z=D*Jb4|h1BWHb8)a4?J?Sd&>zR@fSvL5uCOC8^F1EJVlV7GrFQFcmvqB64Y6WI zfvTe;R;;|i;f5_oGxU36-a$A>CuT78o(;&v6tzua6oqVj82EIiBZP*bPuiT;Ht8W9J(U$z`vKi%*$RZ+~AAyX79ykF*u<8KT&6;4fQhd!j0U+kK->S>;M)~nI zXlw}>*jh^b3t{ag;Iwv!$yvq>Imm0kqB|TLI8KkYL0KWnrWBaX9F_9B3^vr&0QC`Q zY0xEe`r8PqiCU;Qc!?9GwOB4e3=EcVgMbbAStgH9V@+ltC&e+Q1YOQRO>6`sDwiy6 zY&|(wP>3mGKwHF!a!A8+i7dboK#n@~I9Y>9E88*!&6r@K(yC=#Tc*LjW>M1qLG%gY zJ`ZETaIiKTV1@7PWk3BbWCPa-T!1)A~{$g+QI@O7n<3p+QU%IVk1xmQBjf{JRQ2?+f*Q>#gz2NdMmQZQ3`>n5ucnZ zGl?nuRn^QVAVtBcf@cw9ml3%<)Fso!SIfdw@`2y%XDvMYS4u}+ccV7>RVVS3ofk20j z@aPZnN(nrc!)62z=g>99vq2acz`Ckn&`feSF&RSD6=c{RjnVL4Htm-J@fq?f&D&ylh76WCLF$*12avJdN)ZNAFvsO4 zJdo~p%57O4&dp$bgE&XR;}!W6)Pp7raV+*I;-MnpZ;h2LcwY9QW@r#I-kn&WfSX;0gg z$OoYJN{B1V13FexKx^~v(@vTONEC~<2%8QbDC;Es7>vNOSkT#yI#~SBW;_cTLdZ@b zj+mNiBJ7M7A$}wPfzZ(wm2$R8=vE8`!Vp9AMd*9nff-!k1E$VG-J@-x&;)4WHI9Yc{<1yy@-=;aBaR25_Q0jb=VFMv<*8s1=TGtOlc97 znJe~)n6maU;glT)93L_ynJ#HY4-J&du-8<;__g3e`8q_CIRY54^Dqw_Rh>oQ|fD9#$-%Jo3E--vts)38JImmJYapD+m zi$=Amfy(EKNH$&6uC(nqA>)AKqf#Y+Y@vX)IY^c+!is*Mo$ztG3oS+jB9g_`Y;Ga5W)&fFagi_>=Z^P=r;>MWO1?sjHQ9spkN%F?JE}@mFW% zk5@)J7AWEP87b`yDA-(3brGsI0*3=(5JDg6?SaCB8OfZuAk*Xug7R^)qv>MgOC1FAfCinb0r=sJ8DN$-D7XN%EP7$@TLxamilAnq)Cp|zJppzFI)F(V;3Edw39ngt zp|`n1)&U1>1vrwpybb*e7^>5f58)tL zy9s(HnSZ)?ct{h>PjH?1o~W-W%NSIgjU`ydGH|e_jh_k;{D5yWF&eoEq*p{t+#_%d;^-kP z>gz>@A2Casg=5D@qw1M9N@)^6k)V2dkDxi}ih`*t+oU9dC@7$Wpd;G4#NYcT0xe}3 z($7sHBjf#K4U{#Ky@7*s5SpqsuYr-7L((E;fzzNSdq9H+c>)olm71xva|nu-c&K!{ z7^xtr_K;~5`V1bx9D*Z@rH9y>N@nShW{9vA$a4p!7hgXIQw8PEvOM5(ikiF;T3CjZ zDmaj5WIi3F48ufqL_f+IBF{MJwE|@3RFV23l8oQoFFZxuzLYg=%d&7DWQFic)TL9V z&-cKyhI{h(>{L_B!_sxuO3KKDvF~IOMdktDRpIEsTi{p``&!oo`a*!}`{p1f{J6s;QxbXhfg#myfsFF*u@AR6AY%f4;#_zQG8c%Wltp%|dT#I( zBEA5{5f;YcV4_^b;n3Z?1-mvyJrL@h=$Gt_z)nG1QhsTHz;T;R1SvRII5>Xo}Jv(1s)<@r+N%U=o7LO_<3Mo}#IcSb0bzOaxI$ z1IodBGAT6kD&P*#EKi&XP!oef%O?4;AUdX*&qe7@%_iX{WdhLsmY&Z7(o_+3@8dSGR%<`wzqG)Kvx})|1&gJUJrY zwc;RA3C9#^o^`Yf>r&z24V%KnP^Ci%#$rWhHngBzapp{I+2K6piU)DJ``95a1n=V* zSF=-elAriN!yE&GoB>$`GwKkRFi4R>1Q_{PqAXh%nrhi2Jgd&KT|rGheNYrfK$b3mG< z1vLIPr3=BZz#5ncgAh13^eyxf5zW&USMXeP88t)?XQY8nJII{$272dYxxszv;wqs8 z`OZm`gFz5=J4+$wRrpOv9oikB51fb6gX^dRWlP#2CG6@6&U721dW7`~JB8uqkmy01 z>o6Q7e&lFfIy-4rgzI8SGR>OqN%)9qRl0(8yP_2zDHJ=P(`Q=j$ocs;u(c-LjMT;Q zJ|dO5d|^*2sLPWt+AalvcDI^i6g1p{I%Ef@77w_Xp0@iv&8h}Tu6kt9oc+9vZPL%C z0Ub@!QpyyPJ;vu{k z*5?i-*N7y#EYmXNeNGFmO%oZC6pgC~=XO&&mF z)i|@%u2H#SC^^LBEDH4wtbdd}K@2H2@1>&Kq?`1G6qOUT+|QIgvMQ$!>u!Ww zEYxJUkNoB&c0tiaGzj*u-N^JJ;ikg9(;93DHK19bbxDKbG@_|s=q$pXC%^0AUFcA% zaND`z0IGq&;uv>Z!ZbF6MxyZR9JU@h1P7b$;3G+l)0Aq#YzlSdBO6+$OWRD^F%~kXEI~^-ff&vSBXQ6~Iw%NTLjbx7Unwi`#1ZKafpfSashf;zaUHqEKWd;M9&6f~315ShRf|u{Uhj_#uFLT*| zTeUzqHrafEz#I;DO~~o40q&pPZ{Pk`UOkX(ZENr7Jb0+<@R8KfW5>H+J8|;V>u-Gb z^qX&;IeV_>{Dt0&eV6``k|sOV-xN>&k@g<~>t6mpKUbfd+RtYAtC)m1#h-t=`Ty?a z_k$t<6V8u*f%^<0O56(Z?Tvf+{kTk7nuFezBeNfZ8vHGJ`rxCP{on&KTigG1GW+>Q+hBBxN_qX6{pd-eV|J>D zj!wu6hKA|hDML!2N89aqn$d8^(8&z7K0A!VRtC?jX%Pf(*mkD~-q4zU5P%!8;WQfT z>|bAIzo1e2LhO#Y6Q-ff+83eF48PeaLo-;JepnYPyMOMs?DxtI$gq`d+uWJUBC~r+ zL$>ja&s!^V2rQw4fF8B%Im8lzKtmCxr;T+GSDIE2#yE(aG0qDaW8I+8aWsvKJKWax z+r~DYi5ducJw=p-*7XU(eYdPmPZd^S>N?GW09g&Y!%PBApV?0bdg_=7w#yLaV3>n2 z3GFbcX6K6%`Z_ZEX|otDze7Ug>&@(^El(W~p;+57j>JH)?VHQ&$7bp9m5oqBy_ea~ z33#|enfRv8Be0XCI10Og2Jd2yYoGGXfylqnjWScnf=a1GyCl`nf=aAmD%rT zR%Sn>@w=|fetWMov)@LW+3(F2OwBiU2oH+u>%*!2nkAPXQu~RnG572toDm4p`fZf7 ze(3YrHN@{csLUpaQv5a%zM{SMyC>US@zA2V>k-z!JGm~Zf2RzHSfKs6#U%z`U1 zR1&FRlMmj@>US@zpPSVW7Whn=LeZptRgx$2HYD_`G7V&9^P@2?Nds?3Dn9}%k&Z+& z`BkG494y}lP4gPonVL(m}gL_&0RvWWF ziKNC{t*_x|u^8I)3W!U`w>n!nNwo|@W9VQAQtUc;^~|m^lM39+;wN4QafA7;42kdY zDXIQ3Y6Upae=m#Qy)1t4qsrX6m&Gqv7C)1u!}s$C-a|&~1p+E?#olxVKku4t%$J9* zJ`rtC^m*}t-gE{(`Cv0nclf;vT$FS;`!d5EDn?^Bp1%)y^`IER-zl96pF@o_LWw0w zFK#@0Uo`>@wHJPj3lhCJSzN5Y`d;q75Ych+i8N>MkxhD6EyuaAnQ||8UoZo3u0+(5 znaHwoFLxi$lj&}ollM!qL*2{Wry4CbAn)bwV~k-dQ$K9MuASugGkn9-5%+TU`MbVy z`14-wJ|k1^huRnJmGUwf5>OMfgd52rb+=uoH zZ)4`Zz`0=t6dC?RO^#;l%TZ8rZ#dcdauxwFoF{~GN7tmU&Ib(iIu&!c4CD*|Gv?)h zqN=;b`%h5>W=c3|Uv4m=#C(HC7QEuh4B;n85eQd{&hViVca!N%05%r&%0P)0aHge z%;Dtgg94u!K0C>r_;92FT&s{r4odM|<}6Rc4KPX&m2p}DM%)K-9+<|fyf4DX_%t71 z4=UqiVG_H`E4;HjGWjOG+~mntWTRs>tu=HOxBU1EY%ZjoEIh+X1UGp0Tp`jD;zfDO zzSeVvXIY0YuAJd#_3))Vu{QU$rf^bX!wPxzy)!M#TKJJXyee|S*L_Ocjmw#aLpVC81R9c zsOk4?_BusUB3v=o&6z7{)&(Ns65e3i{L>@|Jdh_pgLnv62w83*b)Z7bnaqJPj}*Z- zm{rg~gz2di3sO7a)V=twZZ6><;O0sfVSRc8ij&CPoDfR;$pk^!72hl6ClmrW4_xtC2*H-Bt) zK$UQI{@N1;az=pCIGRlnvs4U9Tfq(f_g&qtc+o=#Q|43zJj`Oo_}fDeL3TET57AjDsBocf#qk{E__D+1aeFjOm;BB|4eB#YgY=LP@@K^qNB zi#W(c(x3{G+)%%?#Os8H6Gkl0NrDyOB#VT01lp=gI!Om8qTC`k_0a+gF37crZ!|Gk z4#cYplE`rbQZCPN0|%Z_00|EXbpY>HGcO)6ALW*qms`!jD8LMgHrrqDWw0B}#;9M^ zgKUMlUj|cN(*AKu-F#+7^N~JrJbdFqm7g*4=F>Eq;5%6X$j4zkm9ryu6-@U|vMCna zYgll>WI@tK%m~g^EWZGRQ>wZPDo<`Yg`8y_e5`HBd|Ax@Oe7o)hkfx@G%sUvW>rVwK^)xL9JT=?PB1M)=q8fzf_2!Cn>s)8bNUg$LCevn)G(~&;9R@o5%){e| zcPW!>byUN<2H4{ZR9;8E~iHkfGAL`*pDnCOAhPG-;II8(5T7g;FcMZs|6z{#v= zV3>2I%mOE}5pTcxQT05t8e3QboE;-_)?;mT&cyZv+7Clu4og|K(R+RmOxu@aaYA)& zgh_qmIe@yirKQ^$IBtf(zehPsL@XSeV!%hn=Ky+Y@R2VT2fQEF*Oj*%2*IQKuANW= zXg2SF#msU8zE{jNO9mD;VxCW3P*|ZPeC;l3elh}snk1LA+<9#y($*y`t?=~Rc|$8X z>*HkR6OjVfh=yCpq)_Z6-<;2__-X~zJS0zmoCqK>O&{^}>qGLuWuY^dndb~Xv>prq zXkj4$@X0VaptO$_9Kz2|S)`!zn}>S^3rkh)49V~4BY@9>p*~$NeqKYsaFLLFbPg6& zq(xf#Ncfri93WU~97H7lg^NldX3z=<5$kJcO!&Kh$cW8AnBwkU@|?b=vPkflP*U{qFbp2$V_GE zCr*s800e>QFKNf`*&p=ixi;JBqmpn>KM%>hXE2bg`>=?Wka4HpYQaB;xg3gLjwm24QC zgkczF@bM*h>1G5ANn0F3gFC6n|L4WTe)nBY{t0 z&)Q2hLV3Y_RGpPE;a1?wZ4e9iSR%&O%a8-OW+6kP4gyb~>~&f;A4oT~QN?^|k$DtZ z*(PfYGV_&d%g#s7nZW~1ql*3hBGN*e+VF@%-n0$a^T!IGkT!_k8Lo_Ac!=%EPr3PqcIflh_5v7dAy>^d0SL=3G2O)PqVGt&!8X zC-snklHHQztL1uH_kHAR-N5%I(WJbe>wb|@-WPfqrp5*U@DSFlxuH)n*48r9Ax;&s z!yOoMbd=Lhn!pzrk@h`!7yjxZ)5-_$LZ4WSz6!pl_@>)hYw+R3H@U6Pb4%|t4=gqY zTK$hDG7r9lqjUwY%m)(fD|}PZ)-s<&d`qgJ1D${bD~De{e2d=5P9 zEW$53FSwcWiRBdUI0{FnAEkH~C1XOac8rBMm2X7E_sGUvG7(an&gD<^% zTjbRhm|Nn|M=gFDk{pVc<#gD2hneSqZ^ep#jS^fx{ouhiglZzr6h20!qw>J`zP#pc z1ZvdE_Bfrn01mD1J$%*B(`-`o#}XMlZK>l&9r>lc@RvV&1fW5h<@V|mhzkKHE}Uba z6+V?`8ZwBoFh1W{a8@%=b(#urq2Qa2`1}r0g_o4=>z5hL1EOiZ%y<+96hm7=d~ZPk ze%q0&u{a#Gj6M=yf_%Mk3(`Jd&^ay$dBYbR>*OAk+lZT5xrxSqOnncW@BOBtz~#65 z2flY@5E)NKzCSuPKJm^Eu3mfhz4w3k!K7DESX4Y?W=UyT`K;M<=2qM{@BXQP{0Kjv zBHJe(7ia%|g!?%a>hXAezF)jPHubNbZ%+SB$}%?$x8_igahUfH*YCI&91N5^ByWU95}#7XnozBRYsvbFSI`}X+Yz&is# z=iu>!uXm)j=dK&BN}Tik;`r5X%l|`(Sa?d`jQij6x_=h(&ArS#>2O!`txo{z;*LdND&wA=_s%r6#4JE`H!+XMtS zCx_Sd*S!FuuJ#Q1Q><;&^5aRWkc zV*S0DOM@7S?<7Y@wr}kw$k#_+Y9IbVX8ZQ-b@7&1!~WRu%a^x0qtS>bnYd4>^QqzC z5dbAk!ViIz@}Pn_Has3XIWaN<{L+`U#sJ2@iys{A9q9*^-+29K8Y5u9oji2#MC^^% z&&#s_NV0Ey;GJFz#J@v<@4P;ij)5*9i{D@A$H~6YbUJe$!~*Ee9gR&gP;rv=jR{iZ z<%asr$%ZX>fo`Bltq|)T9vc`R7|z6rMekLXlyRIG0`td)FURn3U}$0pRTN2-Ya1RM z9zC96L!F&~Cik(+!=thB{&Z|`U_9uOU;6T878m9T7oW&PD{yR1j-=Cwm?k|IPYh(P#uI%bXlHW=$Z|20 z28w7-kaSufymT$`ViN!~T^=47i;WCVjK+FLM}-yGQ(%|CTfmHs4QIw;-=7$WT^ye1 z8^pk&fx$j>^HLvLNum|oP1}paix|6xhVu;#jbx@I;XJ zM#l%^aak69QYS8rVR*?nhA-QOGvfo9i4bdMlr!xs&_$RN^ScwQkb^<}l8KRiv^&yI z4EnDSjf)QFfdvQRV4A7ePdViVxlhMmpb8_pWCrH>Ml^Va&PRGQh%NG-y zlg(Q8_7F%`ggT;>6lRk*wVBWGnREASCpW_q%w0+(nV%! z9x&qK2ACj^0168kLz^&mQ3*r&5)6%yMY$j>Oe2#l)jN^t>xW=>CIIE_iz=j@xgaZm z-@D|ob|YdM@uP(4>w|t18y}VhtNl1e-B45{HD}^!l~pQxQ|)g;`U&@+It^KC3X4#Y zNxK6;k7v?cyvAcMsRZ+j=_pCXu46${PVGq1_Kr6p8;*6zYLVzVb~>JD>n1{NU?_cV zMKo5S51HA<-wltMGO(QzD`}Eb><0;G{g&dvP#*9#eTM7}90>(9122&TA`@u#^sD@K@gmV7^=*Sv?&lk;xyJ zLtA!}%yxMhR5ecfzMDAoCe+9nYuo~fG15<^NJKyrstK%~0GLraWZayJJFJ*x9oR(I z)m{_ZyTPWKwzy3}V-@u)HrN}ZMwT8{J*uz27gk|xoJJj#*+h3o7u9xq(S%3BH=&Mk z^fou}9XcH)Q}5WI&XUaV`Qc1@Xm~Vzu{Q%vVIb2dwZhM*B)6z+G9Ys05|$$&NRsA6 zMD;sEYKs}hesg1o(O_Bf4C#ZL0=8+P8nX6Mw~k=kuU*< zVHH#B9O)hH9ZHYGZiVJJ78?l62I_{s%mKB8#|_!IqWTKB%p~GPo1-gpDScHD?|r*h z7|rn4Zqps%Jt4lV%bOdp9KK`$1c{fT@8ocrKH2!2}d1F{ecV??$~f9)@Q6w+SK10o`91Horjq& zR3S~`}&d>P;z={aT8YuY0 z;3yoUJ|Xq?8^J`Y;n?u`gTup@%#(|wgCf?gJI#G7`XHxi#Dxm(qGoFBEm2D7?d!d| zt(cY;ylX1OHq)wgy82*L+TCXNu zmphv1PlmU0kp4?kMg+XtljQO9p})|G^hQj*Q*WZPZ7Fmj+1{2o)tUqm*niQ|sg+}C zKm|)gb@0+%DW0Fex4cE%$s(Ak%A-y^ARl~^pm#e-)!Lo%btVNbHkfMmkwuKmeh5=_ zFm2>N7>P<$8qWN2@!*ZehT!JwC2zsSJUlVR_vF;Zmv%KkQ-dZ9o`$9cmXIbm*_4%J zWftZG)X_BHKyJt0H7u{(96y%+fs__6fbdhGTT`H3b(i4C%1IMp>s0_xVKzdSCfh5j zP&*ve-by2C8vLnHq68N4+SnwX?g1YJWa?lnhR0itfSt%dxL@oWBQ9_B4h~#Go0!rN zCGbusE{>|6(8(RKI9Sk>;he>d(I3K%o$6Nkg!d#$1gwMnqxzNSkct_*kE+V6ukbh2yZ5HUcLq zlwBV8szfm(6IK%C7#9Bguv~Zbl!%0l3aaeWQ=P}2jZ>GZF1h`ZB2>xNW+Ohha zgr$Sq2qg@^UDFp9vSMxTPJ!ougbySbgal24kV@GS8ykp8GuHyP2BKV#;LSHH=xExk zz@ms;N{?o+acgHQXDMeZYK`>{jbOdx`i4Q|x_+u33Rl-y@}#^mSj)AwYr-XzU~U0` z4HP3GUU*5?HUXJxSmZCU*TN)owRcjHwK$jbIW!!Mr8+xwSR(|poo0vaj|2!P^eId)+fX_K zIf5G4ZyLBffbAyKvKWR3H#E1rajYDY^^I zv=d1XCO1HL4qz&QP`$Aca2H%3)Q6RH0jbQ&O!?`PFEUWZuMt{K!Xq?QCoX+E02=N= z@Z5I6nE)g7wy91c5^8e;UFXz7#$%gz?1w8148`4EcIF*1jqO~(lu~{J)eoOM;R>Fn z=sZ#;CL8CPkqQRzgz}bG&<F8eC-;z3#6)G8C4wtARdo4dPEq4nnVg`CI0ZAt2BS815f)as*hP3BQS3PUrL2LO zDR&|toa*EcpOZp;Y_gr)6?Agf{^Z2l{s89b>W&-ls`Zw;ozvO12g6M-k#qpFMEbM& z!YorexLA0uyCxQ9tZ+?VkTs|dP?J@eS#gxR>hrdlHZP;BE zsJ#9Tr3OM?YLjVCm>fHnHZsk%m_Arp|avqg*z6It9}Vwv8t?IT$-)xIkKj~lZ}$sGo3l+ zfSE%TlV-=SNsGE*`Phql6ueGp?st+71jnp#I{_Fp<&KYhw|5M4K2#-;5z!iu5w=Dm zJv<80s&N}!3d{>3Y^2`!Rjl`6D=$PYAq^K1_@d;6DBlhmVf6sy9|8J62E#u%0c|OY zi$0fiep-?TQ%n>ouGJS2!IOg0DjWC|CLn6Z)q!z5GXukI5+R@|8jqXzfe8Y|y}NfT z)!UthCk5h-G(xnMeFA!?K%>HEe5y?|N8+q~N|0PpGl2pcsSBbOek0T7A_txVSmyI8nFak#q+o$GHU= zYlv9~DfLTfsA=1dtpMK#dtqt~2Y3cbi1h^LaYf|TP&7cy^*8u>2gQqXW8^p%1uhJM z=0rBm_D@JunOLDhu3quWs%pc*nF1Mr4XaB|`?nhzUzrM7Nh(v-;I&3>NZ$%ClUyR% z|J-6zELg4^!4{`19||55cMRJ^G6}lg&S2Nr*xBxDVSu)Y(NP5fJt{2De8`HdSYMYf zk3qkOdUq*(5e5;KdT^EmElVIQF5@Q=1Jc)z7|LYe{~{=j{cPk?lHE~uR$U!-Zh?tU z4#ezTY+vlu@W_?)HM+?yQ}?CE$HDRR>xol^o24mqoK7rzz1?vVyweK}WlTcdX}n;A z4h4;GiGB%R`+5-p3S3EouEgV!7RJV}g7grXj#et+TV%mdchLrnR>tXqRO7wyTc^%6n3-DvPZL}R|z#L}fd)%Vee{7^_!4FVd~sbtY< zaylroPqz9Q){CMXA^#qBKUjk9VRvr^l*CG-rH)@g9dw_yg?A|N&?&m6K^zUGz(BAa zO6Z_%X$!kx?(hpaxtHifA4Iz)0tCFpZn2e1jB`bRFLutx28aqa&vY|r41wor9pz{n zJU)sYBSc0|fSzynPW1JYVJx0@m*_hU`%O8~A@*y*y6D7m@a1f9=@Y;V`W}&o(j^rP zImQTEbBsp;rIj^Y4h0dwi9j9mGY$Pb?avZ%hT}K`cdnG_p|u>pEHjv-gQEnt#&%h+ zxDkLRg1RKE;vMCCKkPTwYFkLhcE>JW!){w_M6{gTq5y3U4i98FCn4fqq@5#Vl1Zqj z$^4yi&YChhYi(Z`ckRycKvcC-RH4zMu*}C|a8M7YC*ENMiZf$ktvNaws~8qi9a3Q-M4R)h=$ixMA#-a4{*mSgOk1Ytj5 z1Zwuw)LB2Q)n_iXn&$utm7n9|w-VCw`4nn?P{D+Iz%b9=Fvdgf5epa4QucLd&;r{{ z;hk_b;8`rxB{6AfJ|l9{9_PX4DmQj@|JmObeq(q5r>n4^dn$1}J1{b`GmKqdAn_8I zf}k87-s~~^z@*qt*#c&TJ?>tyyD==g-^AX5CEf@@RU*WQX&WpKZeW|;Uyb3^N8%*N zM$xQ;;!R*_cUf2dnJ$pjMSbXPYoJ7Ql7u|Qc zLU#DqHacI!=7VYp{5<6xIbU@r2xYm>7aVYb_#DGl zhI)?No@Y4w%D`re(YExQpi0b*4wDZ90^)he(j(*}ExG z%2#K4l(G%*sA}s|(eN$CZG3ci5WyaL)GUISyKskTl~vJT7k8~scmI?g4c}J+c5RbD zI2?W*5aS^n0H6*KcfGL@0X!{cM^dzKqcP@+3BWQ(Hw+v#;+ZjVE3*9Yx%$P$n=3oK zSnk45w&B*q6mVtmv3G)lUbID6mO#^ba#vl(P7M)w;@06qEeR@|9FUzrbF5TMq+Xbg z6!+Xa$9l-lhN_6swR@*fO`_Tc=})5beHaG>dnXJ*cJpBBMaJW*3U?yidkF$r;%=27 zAWtxT+}D_C?>cSjU<3iXfD5Yv)18~Dw5niHWxh>+(^!n-Nt~}Hg7QEJrxbIA2xBjF zV630Phv;P}5`O2)I4mXf@gpIP6$5q4kHVWuv9&$-LyOQO6DzEgkLsO*Y~b~PwT?a^ z3qt9ODeI0QFy?O?XKzlHj&kuqvGjAv(uxpJiZQWUK^ufUODb zWKXYP!&PA$_7F6y<`u z6}C-|f6?F+beh|A?3qyv7$L{ipRr5HL2d`~j54^H+4C6x`1?YH6U$lA=+>521YLcm}lcTrPoBY5Xnq~=JiV4gRq>iRvP6tf|# z_tx65QeC(;XCJcqt`8g`cH*5qHxJLPPB&dQ8fG_6gQQ@TeFZ22L-|ijAXy>>+C2a&9G#(0D4(9|+p(a7izsrG_eWz{F9S8rX zAIpO18d%!z^o}y^2YsRH66<|C&61amGHpDi8YLQ%ywU+Ka1goUFm{niAPgcEillC& z8*isbS*)t?>T%yhU@)u-mOLF?X7k#t!C4_qP6MojRocYtnRQygF=`;(bQ7E26=~Y< zEg@+*?zFA9BzhBry@?F8hlDh_oulz~dWSGvz!5h1DU8MrqA`YGVC)mAV|om6nV>?j zAW$>{9Z=K~1dK4HjyzlQw23Nk@F4RhnhMlPs1b;cR zG)H|wz%9&Kj1`pn49zs*bFv~=q8r0D3-lNk)~tuQ+tY<2tG)0Dfp2X_hAgnT+KM~< za@FwwD!pb_5x^)qVna9_IwdzS{5ctwm?W6doPyEeL%O&)4s_>=ew{<&<=Yzz#Z%|= zg&}5#SunWZaEm+eZDDDe-W#T?QmgTwA+E+nSj{J6XPBi`_RL7?U^%pI2+l=c4FN4N zfuPwz?uw?&{aX@7{RGzHf~MhmGO(stm!^6$>=eDufU#UgvK2yYR2fW8wIb^-b>RM-XRyHH`*%cg~0sIUvr zccH>AK*z!G&AS18H!AD~bohcc??yj&+X}k@eK#uX2K3#iup7`{Mg{m(HouGtF9Z6^ zsPOV0)56QB@G_vkj0!IU`pc-W2hjJR!X7~1g9>}l&po!n9zfrN3VQ&34=OYRdNV3C z19~$mGy{4wDl|8n7Mf9^8PJ>en3^>3E(6=fm-B= zCcO9gfkDp4`^M=-R`%cA1R@DXps3FYKwAbLAa(*n8EB4edr%z{gcCxB7R8anNJkD> zaByTmNKVolRfUY)^f9eNiDC5yQmP?|3JvUfLmOz(&<0c*+EJ;Y1CSd!L7T<~yl9kp zz`iu@ko-2<5$F~K)wmOd8_7|P=AkKr z6;>94Y9a$Pv076*u68t_+76i!yD>I9IO03nf%wh_yxqAIP43)-XFJ|wb*&A4jjAT}pyLm5zfa82pdZAk&nD7rN1Co)1%^Zow z)*XmdkaBJ9N;iIasY~6>QLwvhF8)c zngb95sac<$=p8}}1_aoH$T-=dh_~5{P69fvhk=D)VfS!Co&`>R z=iY2?XeApRtM9QrE@6XGPanxV&`V!i&|A3EH2fEOHq-L?3P@Aju^Zht@sRPH{l?n- zp*OBV>ApbXqd*Oeya)_{$cvDlFY+$#8;nlRCEb9K%Jw#R88}y@04Ws&i3P=i4b9+L zuyGeW<7xxE$BRmTzbX$fXBVxoumN1Ca1r(x93W5Z3+GG zr49Et&26N!6}D>k?Ya6e@O!1Dh1g$_uJG#1Ij;15w}an)({&}-Ijz*va{KAmp!m)5 zu{zW8N=BarS1m1kAKi*?bOP4HJB)2=3ELv>vRdOz_dKhmPf4U`to_9T5htCKT zKadQ+?utD-tE#G&{VbpDMYj8I{RdvP=zD`7IAX`*#rH3k8eYpQuk2V-InTev(E-Jx9D2 zds{j0LGqtq4-kqF-u~PolwF8-cpLeJ@oQuep+?Ie_*bvI@(Q0_xpGC{rcOWlmo<-G z#j|y%zxJh?uU*|EHRQeG_w16szD1Rll|S`UmGjoMdc0i%4y#POo`CojHw~?RVw~#_J$bWlU)}QPyX?`?uz80WXnSj zJ;bZt-rkmV3vhK5)cebynB*0x_oaWwt3%0s@?P<4@9}>pfM4s9<@gbYg_WrVp8IxP z(!G6cT`CK|2hnIM#dg=Vfi9m+;VPB<7zp!x3ReqK3o;ingWVO!GIKKvQb|0MVnV+z zl={lbm4AqGsfY0Xft2F+(E8>5zxr28`+xN>9~}aI53T=SFX?}e>n&#TCH%MCyj_OL zi~p9%Z3MxJWD1Q+yD5@rZ~?JO9sBHOKl_Jrl}z1VS&6Ysa;*L^g=ZgGx^(F$Kl#aD z?ymUpjT<+9IRPmFW?uu5hWa@sQX>wr- zO!*&utUyzPDXvf)?=5~{b@KxPDbL>E-|25}3_tSPFV9o_=8@enmZmxMBe)`dY+UJw z3+LxK*SMVK_QvoNmIQy2LJNc`g;vsH^oq2)+xQulG-D1%B2SuM&Z|iGZ~3+~eolXD zZ_m{&BXlZ*4(5wzFx)!N#+`i)Osds=V#_sW$|f39q**APFvjr>5hGx9&_ z=U?raoUA!_=BDx6^Wd(PPh+vEt$p*2H;CUZ;O5){li#ncb+F&Hif`Xw;m9wyHL>S( zP5c({tNFyrHGlIrYu2p!>eo)!e$IPv&&ogj(=|0~zFI4{!0ySvUb$-3nl+z0{q!Gu z4+8z)`^uC0_CG|>^D1&$6MH7lox6JT^h>4C_?o9d!i^j2pZAjMRsp}S*4EX*oO<5d zb7c4L{WWm6Z$WI#omD7ahqsYmMNVtt)yz;&X5E7~%YTPb|7pnoZS@YN)~sUt&=xn= z{zq?JGW514`A2@)p{)`0yqwm=_h0Q9UO%)hd9(PfOZ9x|YXj@+zB90XV}CCcmY%=c z{+9lyw_n;=w;li0^DPVi>9^|n-=E?(^2=#Wq<&&De(vg7qm4vrT*qxH_3?ltOMu@E z+(y9XwkDES*AJb8))y&!y|<$6`&u*bgYxhHcxx0}K8xN)+MqS@kt}N>`P>iB#cu^a zXsiAY7^M80dGn^ZjpBEI<^78nEmLdaXTJLMle|hLpF2O?e@pmTB@zD;A?G*EZ5DnD zD<4)14S)aSx7Mr@YvO?qKKP>5h9fnuQgthlS0)F#=$|o#-tw2jG4D$2Mk1tj*=NHxRoL9K? z&SfrKxG?3&rq(o_zGX z&6p`TMP>hx{;T-GTMj=ge$m^Z%-tm(P*l8L>51T{4t*a#b32rW`|b$!Ja13(!InL# zpI3)B^~H z`P;nBT)0D2ni?!L061d?2M1FRE?CF)BbgGX>vLZQ+ImaR>vM3&ro6k(eI6GyNY6}9 zFI}HRXq~K5pM*?3gxhuN=8=5xyz=ecXFuYXT7dI^y>w|2zd_N`KRJ0dbqu$lD;@t| z!7bi~=oh+~dVp^64Y5icd#H!&CNTK;$A{+YDnD;t&ubo()sK;WusVMGwb!O?>V8(u z`NMeV4@;o?(}&qrmfE&3pujKLdra{I{pQnyKY#xGc}l;J)#3O1zyJHceI4{$#F?M- zx7bH2go}BcUGK2~zq5y+cl11D#y9CJ&K|hxBO{7Y(3k3suESbstYgnnLznJolrp^Zce#|TfuK_f6axs=bfHgv%b{xN(JR8 zerro>ytN)*U#O`;1^(h;`bAXY+lb%X_1@Y!YfHV;-KCzi%(lsYm6eu$#83XKnHs;a zN_-pf1M%0Et}VSVbfMof2uAT+KX?6H;^);|=r6s{FTIG;FRYUYe(SKcFTYzF-#K#x zzqNBoBK<}2tGNKAl^D3ytV^}dTku6ur*Dve?))WhaeiRvFo31fcozL?`fGH4)T~{r=tbv8WR+hB zH5H2L!b8ai*FBIGVK5!KE`FxD&_CJug>3^-l21^}>H<@bm9;U4-xp6}TPviN;B-)Bhp-&HpWs z^@9OOk)LC_RJ!_K2)~T*->uOPz$3rF_7LQz_=~ic-||KH=dlo8<_0QpfE%xJ70UO_ zZ^JaD|70UX(nhf+R`RQ?1enLNn-P`x*73`R><_fXO6-p;K6pe?Dq6Dm;hgwoV|>F; zu5W&18AOqG3P8ZeBF}Emt>BkWwq=ZcG)W1`C-Nv2<84| zjc<-(YNOnl`Jwpbvn{NA$y)}h%^k!q-`Z;VZ@Myf62A)(p%}U~^qaQKomoF*d_(v| zZw!9X$Dwv>QJF3H8Ry^>CGVWZNcoq4w|};rm3$!ev-XnRvc6S=TeBL(2FP7IMcMm^064vI7SP0V(ekb^v;1CH#EZiOXt<4#+ zkc}U`iZ!8#g}a0wq+52xLKwf?5es(-znl>ZVf=DOEZimhaz-pf@XHyoaJTTw6|oS( zFK5KU-N7%1GZ4`dQT(z?saNsN=~w=4Lw3{ugW#9XTWRT+ugo1D-+a1>9pAiV?l68A zrcmqnc&?#e-ZFO>zdY!9p206~nLCT0Xzac|&kKolwp;n4Uxl9No7SMpo%3ks_8$bc zn;URRzYI#Y*kBU_kZCgnTTnTsZ$u z;`dly-sk+luH!Ui7TrPmO=rK+{>^W{p$~Twzr42DZ1ErDx8H!@{dbQ4@<(f1{H#Tn z{jb`1AIZxBH~UiT^Srj%Y!0s$-$HCtE+{PjWyy2-v!6F6c#%E zL?b?O;FlHgab5VurBr_W;@5#+B;q5AU#^Ic>%s5pxkAtaqm@lH|H;*JMN`mk>WGgB zemNsP0{rrLnhbui$$VvsbK{pwtjV+Mi#U(sxBhfZPfaFMGgK4r&t&=)QUt&C{WY2O z8NTkRsX+z);^*!Xenauh`l0pxnHv7lUpxnXH5vSeu1tqtKHJQWZ{9Lc4JrQ~Gh??N z*3|m`_5D4kdrpIl@{8gZABqnVzf4WfX%sYNa?&raZD#PBu1pxe{(ix4{g4nSCw?_O zKuTW6ks!tPAt!zp!ZI;*H`m}dZ5gb;0sY8Z{XO^_|7+9WEuFvq`~dkBznY$ml5Z;h z3n3J}G5AFvhwfPh5l12XIC2;|{L`PCel@3Sbbi#VU+?!J7yWYBW+JKduPGzqnIn)t zhh?W=&j!5p1%$<_EK~zG@9>+IiWu-bXW0{J)?Zc;avp3N@sj?kS3e| zaumv@-&BMO+qRDB8C+WQP0@vd-_%m*v_C)cm5K6Sh|O>HX31k$bDSx%kK$(j<}GuF z@tc}7=gyrr_~k8ghw;lh0tUalW$r9~I6WRH_Hwn@a;ZO|7BF9I_~%qw9?@U&cIHN3 z26M;1@+Y|!Mmhg=XXA}FdIRNstb&VdbV#}=)~=`N2HLyPqS^LaV7ytZru8)4Xrnh! zKANZ?Qk7cl^q!_jrQ3N6{UFZ|_8V7&eD=pA%G^$bBCzt~2m6h@mlr>jiNL&_w|ViS z{WcwbEOR>%ioo*qzZ^?H^#fV#A2Bw-6lLx-e(U?8b;2-%Wk&TASnzM?s_}D0Bp=4t z*q1P!)}O{-wj7F5M~w9OcHWYH#1B~E4{Qrj+kx8pq4oVa@xyZ%0-4i}4Rt#aiomk? zfndPzoFGaY0~b@^m+2AwScbnlOh5Q89QvU>X%>S$C4NJhyNVxdGY}5{8`8moBa*$#eXbiQgsq5kHw6iXSaFpo-znH9uf{V$|>E{Fvw4w!|y)%bFjN_q@H+{C5w( zh{U+DTa542#>Hu0KIbh1Gw_c6=Ed^bW@i1Erpz6~&hzHQrX~&SH-q0aW$q|`d4U`J zrYV#6^{u_c$0tMuaQ_NS5tA`sVKguvB}@gFNsHkox%azAfqNAA@F=kMCV!syH?#hv zY+1>|nctfESH<|8)2#ok@GU4rfp?xaS@07T->;Zg zFe!gLud>i9dc-U8CJX<0#b`xk;bhUTRg6_EDVmf&o>x`u&G;>EhBsOKn-${~RmGDt z{$0gH1!<@BTQk!u`Mg)+P0sw!74KB6nK@bVe^>mV;+c|3`GYiLrC!+vugse)eXimv zs6JWtLdCU;+OkRc<9YSv-mC_1mN!}cQpLL!_2rYZUafc!<1{IMkW6*9HwQ<}y~)|f zE8ed_pXQve_+iDlIg|3o^N>reV#KTPCg%=Ud{B{@J6YlW_pg8Rw|@KI{LT|ASN-nq z{rLo zlo}~#Rb0gWsBmrO*zxZs4kh2{NF);nj~{POoa#E-k@)-dhq?|P+M8%-NZ@y}?f8if z-gqyep{`fF?uwVtYS*I$-7{bM;{&~q6s-PS<>P=CpIg_^5dXecchF1B^uGC>|Gl!J zVD|P`O5cjLmR2rBfxjuJ{K7_6t~9K4k*=EfAeEf=d%TCcg5D09qxX2wI$A< z%xq{6THoF?|2)ts9Vx0S_6#aN)t$`r%*X%RdgdSfOu{N*-uZ##yyhw z(Se!Xzf5@EqXXsMhN44je{i4_|3160VBKGoeXU%6@t*k{6_%8OAJKyA{%e_*o$xRK z-LdW4=l&g`)Iajk{hyluNa5P=ukS2;_R&H+Ik){q+0jFV-DTVUYuVAmh1~_K@gRPv z5V!Heh1wGSe&9d#%zu2laMJewS_Vp8@Vt?d2cG_jcX;ji15X!w<=@%<7tZr?eO~DO zpX)vr|8!A3IPi1-YB!R!0oAuI#$Lrt_{=k$4==3#iGmj{{A|GsYd=xYf9OED*WLGS z;(iZBUObwP(l{t;u%j@b>N7 zJyN8%I6!zc7~|2Q!-e-1qtibQk~W+J!#p~4$a!+a@KWivLxo5GqHLrE_dX{*j^cXr zz`rl}zv8LF$75$_Z0{^YhwHbd3io@lS}*nuFSfrhR$CbRMqv!^3k)zIQl`Ls@SXl(yw{lBc8WDRk#`w zHvYpIYiD@g^FN&N*0yuS<@MXn7eDY{)_tu0tpvq8_;GUb6F;1B-;A!w$&pVBZ-Y@^ zcnrJ^{_Y2JmwMgbeK&C*nftMYDERX@e@ZA$+lBn$B&WqFw?$$q9f7X0e1X*?>Gu1`6_Yp^|p?aCp%wH;VFL@^7y)v zZJ#cRuP=#>esp`oTnyOr2TGrR;K#N<@MEw3RC&oGMbG}Fw{2Ysm}dL>lJyW{yXOMm zkr|kNYs=6dWuM9iux?@=CB9Jd(t`4m?xMu!O1?%+|N2)c4D7Pq8Z#?}tf}t`Aawh4 zpJQDvY>|0rNi0r|ti*atl#OLgePbt2VuPOKgDKBvPb9$ptPD4M~~@ zzS{ErerxUXxHmU|*7ZzA8@V_cu&<@{*SER_G$i-R-k} z|H%nYj%hjH3PA*BWzQJmf+8#%?x(D8fgkv_#Z0$4^{q$ z>Y&xw)YjJ0@C!vi>eJB?R*{`DZZrP%y*-s70}RIT;eploeQ#6)4CGtjY?k$qGE075G0{fq%uMxUTU$Hr(!iQ)))roa#Ou~t*8yb4+SxNe zYarDYD&=qeOq!Y6nFw{(HfJ!sF@y0CVg zsV6>CW7&N-_dM~D8^@2{{lrJm(DT|R1llIRHaim5GRAuH9OM;V+LB^L>oxP&mG2 zv=ut1XYYi<(LMVoAn!PSPtcZz%Afd1Uq*S`guZiNV+wCA@0f7j-U;XJpU{_y+rA6R z_adicyj6H*NrqMUv2tWwq-mqA!to%fF%XouJ1vfd6C<5FygpTp%jJG>E>jWEuS zocrV1mxph`<(A9Cb8wk+d3Y`^b1x6i!)4y(;Z9sSFApEW<F2z@cpTp(3tHK*`*?3iW_P4>8tHZb8a?91>Ik?QZIy@JbxmSnh;WF>) za3?OESBDSba_H*t5nPU39X^W7(W}G9aXEfjxU88HeiWBSr-Z+a%eSY5 zAIIhKDPj9@@MUUvGA@&+hOfls%BkV2ak+YGcq%Sar-o~Bsht|G$EAL1xDl7eso`c^ znx}?$;<9sUIQu)`%e3$!Toz3WFTrKWwD5hn+&3+}6qlvb!qyYu%QfLtTvD$IkHTft zHQ~{?jJ_tEj!XJA;UF%-Yr^YsS$|Eq7?f><> zrSMyk*xRD%)b@Gyx6g;~eS2-_d}{c<2~Sm@zaRP?Nn7)M>&EeEv|?=&o&O3&V|WWaW0*x_-w zj5{kUQwqpZJG=>(O=o3uZiijD{qpbvTo#;_1$qsTuU#JQ#-;nL?9mf2OHWJ=e-D@M zot1UE1{Ua=E5g%pnSNHb>SaK_d_}kwm)5hgTo1s2J#b}s87|At%8q5gR%Kij9*4`g zv$ATXfGoW#ya|_0XJzAVhaJ29>hJ>=wD<3^>-88;#2 z?s1b-7L8kd$)lHi|C05WSXPGhA?q@0s`YW}v({XzaNHB){%suX&j;rxu~2D{L1os? zoyU*Yj<+I%OS566GBQfTmNlm6&WthPR9qM0Ittf&aK)5$(U&vEzz!FU!==zFO3fHk zG#dXh@b4DTf znV6R<_$KBlLNiYmjHH*O1X3=0s&5h^?TJO7kXg#Hn5B$fY!6P_3}Wa6{-V75;+7@W zlM^HCQ{~pu zTa{W2Dd8#6X#d2(35z~=_WJx+NsYMq-1Sl*> znV2!=1s}FiSw$H9?MTfk!ccI>=&T|em-MV6i~%WyHM25{F3T8Gb7N-FWL!R*Su_Ke zzsxN9IKakb6=76Jq*L)^Wfft>XoNQ%LV68^H3Qd7T*u)$U14tkEuX}{Swe_?=_TuD zTWc|b4xPV$ZRPphJs0j=Nqq5d%tJk5`UqO4?cH%> z<~p=@$7eIwp}jl)GIJf;`z^3%9odtSwGM+~G=CkNpJJ`k=C5;_A6PZ9Gz<=)rgdP# z3#%rQ4}1bE_ypDF)A{-Y1?SUveS(_v=|lPiW#`j}^$A?$lQME083`t?12fm5S24vs z?bJU{%(JrBK?ZzJ6oojX)?xVr{5_A;Vpsy{hO)^L2mqW#5-uc6##+eaH2lLAAW4yV>nPb^ z3nr9jr*x(irrK$>Y1vp;44yN4bm!>8F?Kp8JH}cW!Hn7GcAi@}&OWd9ylkxN1uvLA zzH@xxh4w|Y7iCYdJ{0`W?29`uF8r{4N$n-s6RnQ~KQjB$&Pxmb!v1LON3$ncmjy4I z{jtuE725XYwU=j4wyp?XG5gBSD+{l(udcm1dx|wRICb{4&S{0$*w@xxn?2pSE_mJS z8J#lrQnxlf4TF^g@0||TYGQz-&kJ> zer5JoJHJ}^HT!RC|2F%7S$`M&yV=>D*@ZdwqS{5-i>)QWC9`uoa|`dY@2|Z-d#RNd z%$xl{=L3abx0lr}%YM+x59ZHa-nqPRh5e1%Z)6u(D}yU%uj*V?xY~ZG_Mz;*w;m2Y zJo}rS-z@x={SUSOko}MBk^k<$hxc!uQ5${z_S@%Ur8wiGcdfv~a-<+OSonv#aI^fn z+UVQ&W@Cz`r8)q&jgtDbb8isJQMTAUT>mKQeem^^mlddp&^t1rWJ_0G<5R^+!!Tj15k(8Q+}&cUT`%v1k% znf;MT*(KYoz}GLs>R8R_tl%vlv!9rh9mLF{!EV{(xs0;oZ!Zgc_p%*-cUd5C*^Zpc z0!5c)mjr_W!N8)aS;1#7Ls8z3$_m!-9&2iROwXDZe1*?T$v`-~;0Xs36`ms%&I7U^ zTh@8amLLK6;jPI_|etlxJ|>iNy2!v1-k=~myk^6p8IG3CFR6iF={ z-_wo22KN*5LMUBt?_7#vfXMcyNU*p{DBt-D(A-*& z#x>RjHxzG2GxxOBwFZluDjGsnTLIhQe^RLGIH<}UekeW()E0kgRdpcva(i2_{dn{U z+R_7Z+FT+8TzDD?b~H31ueEU>hzW(7n*s;A`#{5f@H(_?ZbVwk9 z3bcpn$zy^m^`VMN^W3r<`ut9j)&=W=IB6~6gLXz4b$bgS|b_kOU?eAY$x@4Gb#S z9?yJe-`U)MXa8jVrtM7tJKWnJ zQ!v?&XRi^gQ_Q$isdKi!*$3?FPLw0;vU4=K``KsB2r{nD^265LR+107kvy9rGb z2x*wKn%yWMRj><5Kt%PoLJR54#=P(Y7q6jU*^Nc{7t6qaug-tW11?N({bW@*+o7G(^X!>lXFcFdFB(XZDi)2fJ2k zc5jH;p~aO@)1wqRplCz1;)srPqzI#5EYv)fLFa+jXE2!}a@AMf~dvh zYu~F+V|59Jy=+Gk({3~t!KlbcoM@4~j_LE?lb1%D5q5ZD1+VN1n(0yy?E1X+CUUjD zA-DlyZEJg*AyEyamr0GPZ)gZMcAeyH%kEd%dv#)%BrVtwLCdx)RB0I$j0Dw3k2G|5 z9e$l1_iC^i(VGNV9j`j(RcvgsKjb8ZhxB+(+#`t8l9!2u(wex09!f^(A(s}$cW0oR zwfLQ(irKE-lZc-r3p6skJRrueV;|b((MV2-|6t6pyH`rFIYE?Y?HU*?+fJoqW=H>9 zT|LJ-42Uuoks12YmjSv(xg&%9ii#X&M=Lp?#N?>YHQ}uHfaZD+ZLy=qH7j94m)k*< zcvBt(LeUZFNWehq38kzvQ1al15}&I@;_nH#zgHJ>ZUNc*f;P=&AkzPSU&;s!C*uuBzDw6K`1&dOHW%7 zCB>_VPf04O2>Dv$2lfylU^F`#msEvFuhU;Z?m^&ac{4r9Xp$gMLw&)d1 zAwwVIqB-J36F81^$Bh!F6>r-n^~dFa9{0H%V-d=^q*bW7^C6Ms%8*z=U$TjX&^9qF zWCLgsJw!;DvhBy8l60^Js2(RDD%N@Lv>yoyj*_?4|^gs zbNrBHJ3QD#N;J>$M?tY5o+Kbnt^+C3qm50pxegELrQ^ndqH_Vq;EL?Iwy96?CbLYK zFK9pnMr|ownGqX#bIz-5s+}V03FAiS`WO;kQGv zZo9X~9*Eh4{k=oRX4d%zE#ko|gTWW=${G%MrMR||Mr{|6;R$B$rQU-&Aa;_;VAqar zC4b49j;5a2i7qkCZZ7kTI@Sd{4#GyttkD4VX1F;4DW&i&Zh<`qcf(W?wvnDv{s`63 zbTVYm>mAXa*I}roW?`5+(i15NZs=%;_6+hq&h>9sk*8ow#AOC`(v4C=hr4(Uz{V>A zHebQ9`3eq($c-c%V`#pNW8-BUTVBTD=$XS`r6`U+;%8J7+=&R6dCXKw9k*0TmU+#E zA_Vsw6eI6vdbJCs0QBrCM+potXy0Q$s4js3=?8}}V`TA2L+4f~t?oF~jd3=sJ1dqe z3QV~S96t!jFv5?3SR^ivkAEyf4>+do>02+edHGSaT?dk&UmS} zv1`Daurgy~jO}~6PDq1Q;HA%;0kn9lZ z6PY80|3-pTz%a^h`Z!rr*WKM7>y8~Bls3D@lrv@{26`A7wD+Ef0T>mL6z3^Ujx_F* z88%@9U}b>q3k&}fG*YA+0~4*%gzpk%igs%tu;(E3*u(@KU?c6VS{u9K?x-~g?=+m6Q)JbznmsWt0ZouJ=a^df2)!72LKS2&G?NK;!b@fh;8Tp6;LuU>j zZ|;x9m?<_be!SxI9%|!^iFR-a7dj5U6zl1a5r7mpk3!IX_fbm5yK}cdoQJ1g`JKM{ zx;VNR+K#Bu7@RT8=YUVhb9|($!V-}VADMAzEV^Y%>&$_lr;5*$bHi?t0CLLhMyHTE z*wYz5b!7|-byb6CT;{Ti+~6N=Q8VsVcbY*EhS9Esj64cD90&QUdY1zslE}9(?iY z57OZ7?yWmCfN5_r*rt7CawAp|r1f>jqVQA%q7{fk?LGU)mD>{skODS*xarNY%N&+F zYvpv1Z)~}Bgt28swTx%|O>}88dH(0J;%0K>k00XsnWGCeA}ysh9jARHHemPmaglHU z9y$Q-apq6Fr+^Vi*Xbx#3Cm)f5a(#dS-vwpQ&G8v%jDuuWj4FDt0#tMgFx0kr3)*# zM4k-6_E6at=m)d3a==N6$}NJIRWj~!6BEEWU2CXzo8nQTr7Eg1x=&Vl^){D!2g@Ht zJ19=1U1{^u4f&iOHd%V9QdO=3BsUzeM>L~SGl)7qqe3${%^jb?HHIbzBP9fKzw+S@MqIz)D-ls0NjoA#9$L%Qc6k?Cr$ z1OdsGytW2*#;~G$rd56VB>ERxV8JzPk%i8-<2Z4RSXU+D6m9nzsuRI8Q)=vwJ);mTmsP8gas~*P(}g%QeGRKaT0r;rc@h9 zuhJG9#8Qg(xhoG|qHFvOOBnu&IdHHTZ?Wf~3dqQOg%+QIq0;6v_n*c+jj`z9aS{RE zp&1+|)eR0tF=doEiJ;;xQzCG?XE~&2e`tq7&N=^5r-K+dZNWCDE!gg93o@YT*wx!V z=+3O*@CBQPFPLeSj`pF$hhqZ+n(rRRV7tdLIMXlf(UTJYx)bb90_J87vwe+~#<|`f zZX@V`OW4i+W-iKVIPByyK_$`S8b!`LNnv)E5A}YXZZKK|8e+p^tlCkyJNHhs#7yrX_}&JRKgd~@Bw z4aLJZW;ua|b`KXcBpPwnvngT-h%WAbb=~~I~c;=Gz|#AEKE5hDK4=sSfumPyRn@OK{v*-(&D%=h~X$r zfN$gx4`-&&6volt0Z>mO;W^^9*C&l^AWQ8z*cKbW$|L8qJtkm}JhsPsFnf1J-;9UY zUC)j09>nfLdkziB47!JlX+#YKe5Q@3{8neroGLm8{u2>)iSqj43R4;t8@stWe1A;p0{DS zh0oPn;`5zn_Xi&)5O7>$6!y^kX z!|_mLbly{uyQ2oF%|8;9^%1rS)3jV0<{ekDVC$S)@XWczn8mq86})Z4W>s$L2uOL2 zhuaR zyD@gO3!8p1P`8gfKh$G$>o0cV8XIor#$?(udI%xM5H-b90vV8C%6B{dlOAu-wTx1m zeQDR7=(1xy_Qr}$6(x3TQ2maiY~QrK#JG4<2YrhKHISFspcp12lT{q?m>Cgq6i|4z zlc+gVrfYF-LWN0yn^Sob3jwjF@kW8l!~#``3Dt=STM`qtCMIl4OxT{7u)|Fdda#S1 zdkYOsY(!%WA((NDrd^UGQ_Vs-Tb2OjCV5b7UjmeyIirR`s-;*%vSR+M#9|dvtSMPBf0h0Ql^!@)ekQQ^k{i&kEN<*3pG0Z{Gr=D_3N1TWBe`#!i|Ui4hzVVSUZ%$~7fB#W() z-ChSyU_nbZ@9B0Y-;ZXt}UtA+0YN=giHyn@l4>)bClJM*7NR#Fyb`ssq*^;JP zUxrbJp`_vv+%ivI@e|)FhIT+g09P$5krH7_6wGIOIpc|(ZUSbBaDhWTw_%}it2ms9NDvBF6t#p` zti-4uZ)N7I<#2Bg2BW%dl;+NkF&A081A4xMX$Or94qS z;j+JLbegv@HW-$FXa; zZV($)v^v8RAuR*yZKF z(UxiFdhPePXdG}|9CJj&`DO~c5&NUeP{Y`F%F_|W1(QdRq=X}fpQ<=CE=m2+qQTw_%R*?*~T#m0QMh3 z8Xzd5>&11l>zSUJGbWOZmGj~)q0O)XY^*!#lerIWu$B(@tkPM|eTYRaZV-2;29|ZQ zzfh_8P2I+(E%O!&5}!kw&=xz<*WKkTTTmm&1~<5H7^9(z({NK8<94qC<0sV=kY~Kp zH&pirO*M`?G#rZei5QK#YY#@7TQD)N@sQ^W9e%p5uTlg>^%{E1og3^Evzt#c&HRk& zwQ8O}prwvDzR>9924k7gH@rF*x3kaeG2nEpv#Hf{rCd4|V}<59 zQ$&7WiI*wS0*FtQ1~tXosz3{0Q=%XlBD{GqOw@_ovh!LFYc%2TTilPYHZ|&%p1TFp z>5;^Zp1$4fm569U zr@1`wZ*r4FcatdEi+$X{!5QKTX90#04ucZBncRf8mzlT4Y&Y4mEr9c8WYX6Q&qXG^ z%H4Vm;fyW39>AI!S=Juq+qcg98R#e{QKWT4CFI)6gzs{Bq^j*13h(ZWfegchrdD8f z?I7?XL42-j1XZq7ah*5@OSkI8Ts0n^#BzN4pLmj~>H|2}9V!NKSh(xtYu}L6#0Zz!J=)!XvO3IzSHV z^JG!wfzy31h}I6usQ%i~e#EqN$xtImI1_5Ttcck}jaFI?E8j%C&7z@>VzFbwohRNP zewq`+%^lPYCzTu;L2Oi=nw8>0;s4abzaa_+i+lcNqn4TA<# zFo!Y#;?k9grOqyPqLqQre1Kx71af5u9rtom;F z5p8y;l#^2(iX9$+yNNm!C!XkO8_T@hYJGO|x8T`O2I#GPa`Uzk)~N)oYuGMT*ZI&@ zxT#HLUZs^zs#s36!2}Zw(NGIiA|M7wLpBcG^o}N*chv#oZ8h1AnGO7q^B$fq@SJHsgh zoCL9K(}ON!uBIM?5c)ekPROL~(-2tlU-jMZckkK0eIB`S>93BEzCS))YprsYKS+yO z7~bjRy|TuK&!Lsv7HdS<{U$Y3zNNIH8dLAY8GLbXQ(LA&PfW0BBNmrzxUjCzV4Z^Pn4Pgty*)4UZWP`KCcWd66Qlq+u9z zaf9>jC?z6EzB@DB3UlP*Eb|C}pG>xY2rVo=yQ7>~n&$+$hg$)oyF@9ZyQf}w5{Bs_ ztfMDCu*%ya#5hRbvXqieUpt$HjKsQ4^lt!S;L^~KXfDm?a zIkP>GkvZ;bHpn&2qku|mwI0U-iJ3t}*cUw@ieX$Z?a$+A8eAa+oHa>2-w!aPA3S@+5n;lqu@|Jz4OJmk(FBeEBk zYnLbh+s9xo9z>b!vkYJYSNvso0@|f)sJz;zl#FRzBwjDX;b5R>U@9;gP#p`&0840c zl4N)Cusvj)6;+W*6eNvvxyx8~d$T>}{TRTz!*Pbp5}JCkEZ1_x>u~oW=7<`)yI#jz zB0hZjYO=iWBz{i*P%huqo3(ztoM3U=7*~x()$eX5Lzzt3_a-G| zsNi{J=?2ky?u2xYvU-=V+p7QPVAgvf)V#Kij`d#HG~t4Fbi96fTo6s>o($dIEKx<= z`=?NAtV*a#yH*Tx>z=`e1B}!>#~&vr8;1O^u_oU^xPOEr+rgor2 zYMQ#upK6HVX^=ixCqCl>fk7ZKi;K(&L7iMiJO{D+QwaT|nBr_16|r;BVpFLy*uU-6 zgK#!V8>8cHDfJ+9+o^+Nw|_sW2W0l0dQ-FJ&Wu&+f;?(RwxK#vuh8e7^{nU}Af5dX z?A*_l%`#gJ;DKBliTVVNx0V*Z2A>u?`p#4Ym(y=NSeS# zyo)~=6GLON<2Uijeh-sfYVYbAh;iRrUpIm~?n)oT-fNsmGGIrC2K)K09A^Rs?2R&q zY(~g%<+?{M-Zo*wzSaw)DKg~GX2`~H!?h@!3a#r#V0`2)u24{L5*GJ;xr}OBa84q2 zrW;6SC$fyFy?*rW&R~iZn{FD3vq=7ofJ=geIlB?S3+K=nr+#C}eOz~1f9AKa6JNO= zSuz=kOU=?;@5xa^C%4R~ocru9t!QaIO3PQ?5n#7Kg%MRRK~P3o(WBy1ef$xoywvMU z;Wke85!cbRm`i!HKq?5Mb|_96FR}wgKp18qshQ*@&ha zq{;hJfEmGxi;Z-}M4IBa=}M};gast=mRk&b5(IJP{&W~dLZIH2GjgXZE!vo*dMVAB zw9^$9%}r9+o3lGzX)zrml|EC|YDPvX?Y>E)J?}Yl#{-hCIFa*Qo-bW|V>~D@BSA+) zdP=UGhFiQ1qZ&9Mcj(XksE*$yFXgo!y3co0=v8H3++?L7bIdYA06t^NGLA}2Te>Cv zMC>1yDsgFCSuT5!Yw^BSM$u)42#4DeueY28?x<}(1VW3 zVbaS9hD3DyF{Z0!o`}#!yH8$G9Ie5(klX?ru(~BSTs9UK%K#NVAIryvL<+SVW^!3s z(p?eu#kNY7x0@D=5B|4wbuvTWY|^vw5AMNn_h3TYJ1tlqG<=c4KG)PKs~d`|b-L8d zt@5D%gy{!^Ms)=|Gy`{z3EYDrMNxbo959}zk)u^t>3#6triFL$0Rm?})==^;=F>98;cDA(J-8j7iCxiU|Aqwy6TN4s~%j%}=3NXeT$IXcR$M2nl(n3xT)bU+BcVi-C zmfI4M)gJs0d{+eXlR6vcY$bEV83TDa(OC~V##_n+jYRuT=z%pr&aFgFB9{uVd)*Y~ zDW6gpQ|vx`zR;|>iJvi{fP1AXQKhc{R)A&1A=8f1ZnLdK)DM9#tj=##5`-n7zBWC-)!ULw+K2VaCa_;qDLzwK$v>PyBwd z+9hd&t`PdTozOGGqcpsIr0xfWOz;3Q-+eKOBcyfSQk+_Hwc|3=ElW|F3O~eN@GXXE z7a#%h=HAQ77)oG`QV;AEZ?TW%@G7uS?mR&22q*qZP|%N<^$x0nqaSfwDv_Q{s!19) z4QV0uNS*`_Ta7TIS+o9tCnF2)jwn(RFBXv~J|eRlCs~s+&+B*_7j)qn-Y|Z5f5~o{D7s!&D!@)>@?~x%n|A)<%HFl}OOV@f;gdmQlVuubbf?hw{j+Xr> ztV`cgK_n!VZpHg3m_;NzOL8|U=J7gN>; z+$LhSNxB^|rN{qxWt1mpen=Hnx>Z7FY6LyS{un=x!l%8_ZaExCtdho^)ISJ(1Z@#% z5l5I7TC z8II^4IB`V~{R-cWL|JnFBGLo0>PJ(f#T{Pglllbrp02}vptI12fV(L|l#(daEs;pR z7bZ`zl&nSQbrOYpsKoI};=SYniL#|b%_`JiyGAgn%s9o^hp*CmiFu?DIQL>vj1i?p z(peRJWQ}WxIz&@C#nvOn;OX1U&@;9)&mCKdZw0o!Fhy|#B~%AqC>iF%PS6aN1}Nio zbG{EG-F2*Lz5F9Rv*TX|T5?*wFbbnZA`*o(_u`>dfs{f&Aot)VR3h-0)Ja}}*VKeM zgn3R#;EAw&tx7Gfwp-Dg=)qWNx&QZgAAiLY&eQ;NG|imuAl+xg ziMe!q27qH=`==--=9(VfWXS0c=8x~_boqp=S3ulPTnWOWtLZVkbnhFpUQu-o9t@Aa za8GDQ#hAF`2WV|9hI)mJTNt^Nt;c0>Hry*^%>M|b+&OqVz7&n2So#sl8RqP+Pbjzh z(CG`H9G5LU@;G1a7TNO)Wy8*Qe zrc7Ymhm$a)I5LB~{LP^nHeVp-_X)6g({&8f^s$~n9*?=PVyi6?>wt~3j^yobDT>uU zxkiVGlJBC+E64$}fQRv@ll`I{sxdENAQxsu(RmPMoH(qgVHo$KElONt779>@Gw7lL zE{5F|bF0htOu-j4H3i3s3bguQW3G*DRuHE!uf*$&jR?yZ!#PgEP{8+uFv|C&+q50X zYJ8E+DMYByrix9Ko2uNzN+woqs@}9^(^faJiirZZsoG7fW+I9bHV|-P5GEFfwud&c z(VOrB+@@l*(4=nnrB=ZM3+xUzwR#i3&Z(*OC>UxY24uUbjYv?uOf?uPLMW)PzS=NV zWni~zDtV_PRn~xUr<~$j!J~X}iZB02)n}D~BY%^Z09MUlZ44HrH9TRJZ8h$;xB`PM zd9HG2G)ir9kn7m)!u7yVKfkx(o*v`MAHLl$SvW8Z(0(Vt%SBbl7 zxvRq67P+g&-PRhTt+?M-(=c=hf#Qq7?Q+L5J8B|t^+!+Og;?UMbD!|yof*)&)gy3s zqU!iG8Th{HrBwq?xZ)6A#uOv_ZW=}r2YtpMF5L~DJ*3+K&S=AQt_u!s>rM<06dmy= z{j}}}qVlJoSr`1t`VGa;KKJ~_lG3tG|yWiw_6zQNxH(Htaw4b=_*gY^f+ux-*~vhZtket1fPu$4cHYsc2xNB zB*G`3Z^sKX?l-Fur1KM>uj2E5^?X~W8LtU;#ro|?OLGmZS|rwgBHDwH!RGFJl=H6UAyv8Xv1#Zk0oZzndW%3y+iPG6IAzfawPh#BY+ z-yE@zV7n?fi~vZ6zD(zKC%6?Go0m_ZT`>-d`KdpoA@^jo+o7pD3N~PSI8yO4e9YE? zYGh|4Qglw7SAK?CMgZ8WG8pZK2Wx3T3G)=Q_j)~yF%oy1_u{<(DZ#h@%&CIT`IJ{|u3Y>14_{n5_{!0GJ^w^F_<_Wf+BganXWPPoi5C!wef5JK16}+Sm!1^=TGaVOmyHgwJCTtkT21~^pFxRvVDjw*(_Hi_8vnD#;BbmZJD z`&Z4Zg};t^zT1Fzcu(?_V_@;basaw=3~`SLF4+rR0p0;yJ3lr+)$EJn>?3S3?m|}2 zCbscp)E;m@RMPKl{Bx1nza1hp5DmmmKwp3beE?-4!|{1~8xq#jbrNUq+1*hzCu;X0 zm!C0%0I<>+*oJPm2Zmr4e#+|Oep}tANQ2yNM9WH?L>yLi0{GtHM#NseOMo-4IWD2F zCSuy+6tW|Fx3T`M!I*=J3T~f>;nn7zt^trkJ2DvjPyT_9N|&lSL)EW(`;T~3`NTJY zGZk*hdQ&pKJs7|zlxUCGNQ|r(Lyn8kH zs=3=2+$VRm4dzGy0@h1nML83X_)@ExI{eTe{SpX94xBLB-P_#T ze>isV%@ctj&+_54q#9?jQ;xM zw824fj6qukUq@o>h8iS@F;O;bXG6R>Fu?6mqcPA6QOADTLl`}*4B7kw>t767V8FP*qZeavXvgd(tQUgpVf&u)9 zZjj~(gut8_&0rO9RWvtJqjCS-dm=tcF!&Asi|Q|cfz`lkBRT&QoYZe_s^^Q%o?G`vZ>Shl9FAffI%Ics!zkkL(m|#kqGc49 zh27Utn&=+z*RjZufx~df?k?|Be#&jzc)+xLwLTO7I4_lU#j3u_v|*jeuzTzSDf@K7HDAiffe1)$GW>tpp7E8pc8G^`6eJ^7t&(!G^prdvSa`Z zRHc&;8>bkXCrU|AFL};FKaJO8utd6E-|?m(ZxF#S!v^Gvej2@#{NIcSAY3wMT+?dD znL2bU8uJd0PsGfb(jtcC9fptt&uf?thlb!WoNC6{#Q z194Pa3#US-ufj|#hyl2YR9tgO`A=6C7wC`VlHe4T5lBn27$0$1cl^ zoCVO~UK3rJ#25@i>Zt_v63)rJXc~voNcMfV(FwaaqH)cR&REFEnQu5B?uy}+20Q9B zWr!hS9r2s!!#+IN-(CI|tu8;%Oikq+h#)|pI8f_mQbqAz-5A?DjRLQeh+9e!? z_76eQ!Dy;wdr-t>?=Ix;fnt@*qu2ph&^M#T{~7G-cddV}ctxYfwEE_|oA~mHKE$-9HHa+S-YRb1CY<*5Dmubg zXK>E+6^!`XIKmTaPuuJ$SD<8o$ z5=GLIbJk>77q}Bul$NHWM|H9$b{KEUo8Yox%XY^JFiwj*n`;o}0d;r0O2jH%ps5S~ z6XDt5fWrZ7c?RIYmKGu38`fhk12JaLI|u~5Aq@JsNp@N*lO@1yY(fMfLB{$Th^RVN zS%H^L5@g{%Awy~2h+PJUyQ1C7F<4B`_i{5Q_IU8)JW>={DCul1;YMy&3x&lLBQ%$) zD+ajf&Ddc?7;vLUpj{Y0u)!xdK}y5xjUbvakfFUab5K#rk=@YI)>@92o-`4P2lW^A zgfE8}h%QC#h)h?SoG5LInbSDl+tb@m_knggHUzgiLxpK7S;&`JCfTJb+QcYV5BP9q zaDt8)`YHu&MuoMnzznv_4emJ%q|=4Szr%1{cB&MIprv$=dLRVbqT)xBQoe)pb#9WH z3{5nJL9iC?^QKAt))s~oBslz|kuh_0w7G|)IMX3!AA^rYU-U!~@49ijnkzYW53O&m z2Ns#MiyMSVfY(54i2gt~>0};+_8o>w??@!c(%Uo?JSsJy#%`Eccy$I!cw!^~CBvO7 z0@!k+DvIuC(OnHN2uckNn^=~zDidLzgxqjUsFSD=Rc9ty2SO*K{ax(v0f2bw0!!^y z2f2hsbKvRLBWXF`ngf;}&;tPatbA8h^=UicgAe~YF;W=iRTDWV9+Wox$xt4s@+ z`CgpfXY7^kT!;@>5ceEofFk7?HM;cy z!K8P(A^O9!mR?T_pM5rrtIJ}tBA705?x9D{E%@x*p73tp^llMXoAT;webe@jDB!C)^7H{s)1%`g@r>}=|9vJLB{5pel zYNyB104G3o?-Zv!^^Q}adgo4zVcSb(z~P(bv39*9!%P}yKY3dn;5@7*w!cxeMejgQ zvVKkIRhK%y#o%T`M>@PiA)6|AV4>%u#3^m}0s^+qtn45t=I#!N;P7P~!+o8))$vJ1 zl}r*r#W6R^mzgBFN)BpFg23JCCjzE3kC-nqxGFjJtNDfdT-D^>*5M@qDWg*76rfwF zf$k|fw1QISWb)&BH4zg6(#UX6ZK6m@d{bIh#jpg8cA`kKp^6b!4Rl!8C05FZz!N$I zNFyNNOl=J`-zCq4R_R0)TQkk6d;9^Aken|2@K_p~Wu z#;w!^bxD-63-93|=WPobC&Fv2wqhvAkl z(xo{bTw+5MN>TyZ?Bc`scyJU^GcUMtpd>Y}-Ue(oCKOaPPsFjFNQAZWx^2|`54bs}pTPf8Fusow)gUjt@ z);8?tN{%NDC_3z?xR`u8I1kE&tD>&N{|sGDqR>Z~t*Vy4=8r--DRsaj|2qjup)|3f zK{v<2xmJB3HY)um5y|~u|4FDn5NOjMuFw4LUzL4kR@ZpzFV4O6t9CJ6~J7rDnOCM{c6sBz$Gb>QO<}-O?tU&RavZYhs`5GAf zwNDjVLCdoH9@+fpq|V2z&ELk~)L^Rhyj8l*dMx$Z){=C2dTbOPM?XKRbla%MMt^(M z^P^hM+Z(ZwwQba^vmS|jc<0XA^Q}lf5=w4(4>NDF2`<>u@&zOw#=k?E4-Z;aS=sv3nm5zt)kM=Ek+Z@fHyus+j% z`w_J2#qh*67C6v1!5(^~rN)Y+?|<=kbJy(L`S$U`BZo3)z4Ns)r*+PCfj!x<{OT~oH+bUrh3SL$ z{;n`>aR2Y;;kW-Q8_t`zKJCiMmKFWh+e@cT%}#7y@X%X0f4+{34j8)z>uZ9IHNg`# z!8dDyu^Q`(YgVjTwC3;Ed~eMU)=+Xbt+DJ=kGwqoz-Mt;pz-khNgwk&+7j-OR-CR$uOj(~{{oqDCzkSHw`~p&@rv&~oCGdO-s|{S6!WshCq^!5BdEc@7QjR|n$mGM) z?~Ip+tQ6KfEhX^rl+7VPUY9a$)a|ziW~OYeT4QCTZ?44OsSgBZq?A~J>r?9Ovh2;% zYNKOkTSd48(P4+|k_+eU$p4ph&weMm^Z3#mBmMRE6BF}_tkO>Ff+wTddrtX(zZ>}M zsn+=4^}qXFTtdV3zuR-6|9AcMziahBUnmJ4*56(@K!{rFrr%js+NoMAOCf4c{m#1S zRBhU+zAOWAs`e%ntG&rfAoxwcyTDDr?FE)~D$PykyQ$U!NNrq#mFY`B5$k$?kyD9C zhgX|On2&U6%do~>==%wT@0pEj_^emt)F~uffBg;DyT1*ey}rSH(3{qx3$2Et4_h}C z+186iS6JbqY%5fBzg1bZ%zCD1xwXEizzP=qy;WND57u)zoc}{ z{9ekjq93NbJ@c8AiAB$+3>8(R%$<26rLJgh>KBXVrLHKtJ#|shg4Dk+x-<2AMGI4Z zF!Rf)n~J`Yda5WpwR+~_)aQ%tPdzpBfz;=U@^Sq}YH87GTpvy?DS9+@sOX8*p_zfy zl9~UWx^d>uQ=ggHlDcW;uTx)`c|5grW-rpmr)`}1k+jgvDQQ(RuS=^ex+g6^iGux4 z(w_|nwrt(D{m-VcNgDd+9{-UgDM|QZSXjiVPKrgndIw$PyU=T@8)WV|1W&$Gg^DW2sHNfX~u~8XDV;- zj#yp@xZu=?`Dam{Ab(7GM8EI7{F&(cWAo3zUxWU?=mleTD;@vgcfkdx`ugzCLQmo9 z{bMG`H*%J|A%yv#-+Sl4Phb35&CkQNb@dJJ9mfZ`r1$>k2e}pRo%Z>+-gReYW|nQw zxs|W*%%5^)CVo@SbKmUo(yt#OJu_=oQuxdphU1wxW$qvG8&-{j&gYDMw`ZzpM06u=#Yt@S0EY2tgK`xlcFOc#pdB8O0NRF zOM)^vbtG>Dlv#8AZO4P3%DG9fK57n0zd?DaR1$9zbWA== zluEIW$`R1L8TNP=l%>Yy$;T#DA~J4!C7o1bng-6>Cm|-dE@&fsJ+P%D$j(Dux$A7Uz{Zolwe~L zbcyU0&@)?Q0ZW2T(v$s(a~Qq{AMCq9C&hede76q9ca6>|nEd)4(IqLyVB)?0MnspK z=rdI_B03aIj&bhX)8ITEIu<)KN@Aaj{{%D{I%MMK(Qx)Clc~DkQEVR0vqYJkI+DjG z@b_*|CJhUP5eC(}M45~_hbD)I?*ipW=!Ce_{276lNzjoP;ho{2;Uf_^IeO2(3BP3M z2%=pe@&r~29@8n#6G>Ng_)w07?(9$+C=cK1(48epKb2=f=SS&Dqc&I=0sxmWr+0u} z8>AD+tTX+RP)8z?{t|IHK)&>3=$P$*CSH9-&8=yxK8=KqxrwNpXM@LgaZ#QQ-FrZJ zCUoxxC8$q=PTJ&aiQGC3O}r++B|(<};XNjza-KbiWcJRNo8;EP5r1_6-wkz6nbTa~ zBf2T)C7UEbJ;U(Hq{7EXNY5N$@*qk2yeXy?$+}x)8uo2i?I=YyCL_#bA#x;(wOLKfOb~R4@5#oB3ZZphLJaK zd+^tlkGT4?oO~l6PQ_0BJ^@R}lE*X2=YJJj@g1_Urah7RSJuPl{3eaN(o(Hj zTzTh*TZo+lg{jumamYyVZCy*Tj-_GGxG#le&+>Pkbz#-mld0Cj8E8+c)olG!YN`}H z|Bjr3#Y^pvXHB=WKK&8!H+6(WnQjqg$v{p-`SoeOT6Id>=GI4$Qj`7yz zp!mwPi>!;Rd1(vrmn15gERk+~6mXXHIqMVF9r(v4lkb;XV3p#qbhwl=RBcN z@0H$93mKYzv+w?X-~Dpm{oniUzw5jIzTAHmtxU0gC>?mGH5&J8r833;@4owIeD^zj z_Yt|r`vE9BMYgqQ*_pokPxm1yFRcIs5RBN%^ zYx*0aA)0e{Cg7rw&Nd!7XQXUetA1|-mG&iYu355&Q*D~{`$-F@1B2;eaBsQ z&cElbFWU3xm!?|N?G-r%c52F9%kmz|%Pp`!f7j=~blZYdYsPts#B#1B_S}1Jwy(DD zS-yPPqU8_UcjVkZ9e)Z|igG$ozH17pnV-L^VEK~Oi&y0>&-djCrDNyh1pGOx?Jwu8%v<&H z9n16cRxK|8+B|zjZoz}OtL(?^Rm)eevL9T|3hk-OSEH8Pm8f@`y<|$xvSr{-?!zmV zEid5Bs+q`taQTwF`^dFrIrf8VA9N~OHf4FilDzz!RiMsZyc|^8i!&O%o~c0j=5Wy{${_TzHkUb||o zy>@Xy-YWZn)nL<<$HBU_E2Ts4%)4*ZH|+&^D^bauyoYiNR_0wdFK6-BXUv!}ZJND! zipY%8E0!!q^K=HKd#KRmp?5s=!mDC zBNU+*a|;T<6m%)njgq-4?;-R#x)2h7D=05mzU;b%Ir+KEARB0RP98-7;=J%y5tG&6 zL{1*MAn(By%h9nwD8iylNTL)f*sC96(^sy}dkEM>Gw#b-jGmEhUp8g!!)q5qHb@0{ z=n5IS3@lcTnC=j1L;C=;VmYp$WU)&oG^Zek42^Glyr#k2xZUnE1!5-d$OFpUe0zEB zY7z?MQr32~bpCu_2{j(KK_P`RLOFFFc42MqO7x~Ze;Jy5-+d4QA#;VOXs&%<9t;gc z|H}sLjQR8JseoAZ%@yGD{98YF5}mg1{^m-k%1ph?xI1^%>J>!& z&~kRt64l3*fGK(qs=Z)27=d10w0t=vjUAT^om zxe5kuEqfi}uq10OHAxxpmIXGp5b3 z@6H3S(7we>m&5u(Prj9a4#F{AL2?QTpqt-vyWv3^YFf^zx2`H!cHQ6DFk)X&mQmxN z3wZ_8NH~o_LGJyinih58t<&vWpy$)=2dCQ)Ge6f}Ndu7sxmdh(t;h)tSk7vJ_ev_1 zc#b@=grc!IV#ssy!3dWkA?UUl_8e6$^ab#V$p*b50uCt5DeH#jDrYm9a9=-!_igWqLfMfYjLHW5%U4fTr8x) z39Y2hlI{c|gD2Fg7-2njwq*~jx;;SBlmgMBa@lwZ(gNBF| zKz3Iw&xayGfrP~fBP1@Olkqo+A;e1i<90r@h24W*b^ZK95Vq+oPQ8JrEC8DxKp&ts z(aOC1`<53xD4k{m5qb`05qaM_gk^rq-ogrE5kUbIfarjBe?3sik$_Dkeh!LMeC@2ONQOZ=bJf~ol zy$FG;T7xNSo6scXo0v5OL5rs&f)WYJ%V%k1PszuAz=vrej4t^Z20f&iC=8DcR_{v$da{02=B2|bW zba)`P`748}zd<`q#LAi#MLNA+GNyb?$33^{acB^~K!A!K+&{;4}0fpNBDpfx}sH5AM| zI3`1lbhb;lSCMNxZ3qg@hOeUl1rby4v?ZZk~rPU1Vq08d) zB-*ia9?Y|E0TWgY>BRMDr49s~5di94$Z@>1$(%`fJ=^`JJ+%N+0N6jYy2!z>Uo%WvSbPlbCsOWywJ>BrC9%q zS!eNcFk%u7xAyyvaqz$7?ub|R{%YT=`_FBVWNWcny`YRCWI*bSB3)59{%3)=o5l1h3$xS%9 z6NevG0%HTe?I5R6x0%DUc{XHlgPcu@;|}>PIz5`YxyhW{$xpD1aPTKiS9Fiy7Bt1% zd1hjJJ@&^L>%hqQ~>IEYNMR6Xbu*~v3YWcqZ~$=@P|i4nh#3Jsla-! zBM!sEPtSA2QI5_5j^3fwrZ%lh51kANm(01Qa@Zu<#_`<=o&*^K>UdMFJf=$vAL!Mz(&fd961Z88;(>8r+to;g~L2Y z%0iF$v-DtGr-e9PQYqK7L8WJT1g4xe+Q4sIvAfuAbgrDLYj}hMG$ZDq%iykkK^$Tl zaGDKNIE9s`MMF+Ev2v6%}e}&}fKcr)l)QdK^H@o-s@i-8OyK8XS=uF0aap@k#6ihE?E0&}g@4gZznO z+krZmmjiXMDM^kUCZK_=}RlC1h*Wn zK;6sBf8%G~2y9HoyzTFWdDZU&^PH2K{YUJ+2ch#buR=c#23vX-+*954L6%j!GU-p< ziqv7OPB^F+y(V86Q=yfUm|+*|@o5>zM^c%s*g7KLxK3U+v+5+(F3Me1F4ZPmzj93QGFEpsI!dDm|B zx)ujkCpj^lMu+~YCRnP}8`GiZS?>@21cuVs4X1JF7qJitje~_TtxNDXXCs24cSEN* zUB9Z5Sc#87tWWD5(qDD^<^3f6EF$AS50L*j@aNIaky`oZx$Dp4M#{bW0#XMXTT186f;}t0zpH02= z(oQQfs@Cco)oew6vtS^7PYb@fhGAG!TYKOLQ`@@Xpb9Y9D3NN$IYr6SY*h2N>hgxRz^|wsz>%qyV z?xYWnvz?fi`ea(quhVx%QjSl2Cwt;M^_k_9&wUI>^;TMsjS8kzSS>RnqwU)=7TlFy z5_&8R4M?p_opwRfsK^DS$WHww4yxVxa^z&;CC{c#%$xF9>XV&E)1FPcJ@jhJ*CM}M zQ*;ZCI%;0q(1P! zQy-VV)B0||{q}jcPh6a`bmRK89fvajLAnK$kSs<#!7KItr@X&H?s<1%$>X>@9(g-> zQAKLN3Zu_(`T0{R_&>Z6Ea`h}bV~%^t_G{_PJebRTavy2e{eMN_`u|IpH0cL0#}@y z-7>y!a*N&fk(SK9v^59+Q1UaoHDk$`=f?cZ`dN)tQ+jkv$*qD72JHBL z`eWymJRTgS^`pJ^&oeSJ-aa1r^|PbrXZAHLMVZbJv68BdP>eKccd;n2JvfsUoeJ5wXavop`dLDRBpj#`s`>z8i1 zZN|bo@8JVx^wQ_veD^&I=HGc69>?R~=$pTI>&!%0(Z<*`g z|E=@K|1Fz2Vxt13?I)uBgY~_=gMreMTVKGehME2gZRZTfKAE;dgyu{G;wvkM561@V z_Mtl~CyY-(Me$9>L;B5Oz`XE(*?Skju8J#veDdHSLIP+l zYpuPYD`=5|bhoX#EeKetD6D9=?RI}{fFNmkH34f&yUS*mHrw@^*!}mh-IpoQD&Ql8 zcPZ8+BtjcP8nDH7l|+b=6~0N6pt#!R|2gN(%$<9`_xnwFe50Of^uYWC^Z%2@ruhNtz*)>!p3 zbvnE)R=2;t_UPef8*6pU_SmoY)i#;89kGTNj#i(<1x)($&RAo-TZgM+2Wk%-YK=6utt&q!MM%l*DYP%`YJ-UzGmep-Nl4; zR$hON0m;Xc`upZhCL!p!x30Q;-ILEj zaputT9I7gRZp&lHR(tROZiH$01(%NH7Tnl}SXyA(f4mLcprdec55G(LjoxODF#^)z z7G+%K3L>8NULf|7%P1;vT@2k+-q!8kTSr{c^%`ys>>apgl7x~b78wAJE zV&VF_+MRl}5y4%0O_E}FQCh6mVW}4hWI?pfFQ5|bKMRcxbAv+KX$ra9QzD+hcjkh*WeHp5#M%x&*zcwdHtXGAz{7ExYw}@ip!^ z+$ucKg{WzCO8y)?6pe2b!&kY3otc64`YAvn#y-&A*?P351q9_wwka0#TcROF zny-QzfFx_YyyQwiGqI6SzSI41^#`l=?r(TnE(Da@0HMx$TAlSso#k5q%jvcqpc$RN zYA<66Lg?r|T+v9EvsXhP{6fDytKaGmf-`wbg6}S+iwuKJd8XkP4F`YS;IstoGm(Nq z$ST2zUm2Fe7a@wt!O&17ZPNI+URCLp1)|As@tJQiCmEsh2jU4;I-W1L@)xOr zVC;~TIcm2ewY{4`$)rf;RMtQ96O zs58-6$0Ob_(YR51-@#u~GteSj2uFXY8)`t9zF<`TrCWZ5;Aj_QIbR@+URGVbZyya2 zLJq?dLJOSEhFQ$J{^gOxX5!rt+-(#S3}EL2eZ$^n37(~Ggd)efpEh>3A8+qEDq0Sw2-K#NJ()Tg z`prfU-QEj|Qec^@=05cZ%9YI^2nQ$~keTiAmrmmrU>XBoY&&+M4L7?=N7LPqvyfop z8;qeMfgnI73Z;5PgwsXqN6kH@5IkWB=tf~^N30?F^?1iyaFHvnp*@EC-%hr_#C)&I zWoW}9x(di9#R)BKsQvX((j+P+;ZJ>8zG*!MT_TU9rE%(4t(|Qzw((W4G)A2?O-64! z*4}ws27Oba;7KwARsIevwV#kC?XRxd%K%XM2Qb7~MDktUuedd~vdW3wHm~hCX^e6+ zH&};;3XN>+;Krb?)gINVA#vOz8VG}YO9{fit)Ez*Mkvw=5bqR%2uQcOgU>Wzd^PF0 zc^WltN2|nzkq*|R(`h7&t|gg_bavhjHK8Uf7#j>~R$0G|uBWW|$)3$SpP*h$Ok=1< zSgR9m19IYCcW3+QSBMTq6gISbw5i{4@bFP?0Gfgu8MTa~+y~=O@g!R(iXaiI*_YUe zzrO-fgSkWvWaa{?TH3n2gQvZp{p@GB446;@gs^S_k;6!*9zqx=WIz;B+wqq8iIfGa zdF`xaLLSi!qSYJPatmbS>l}ZC-QEg)0jnsIT5)s9NZK1^XGMUP_KhY`eX=Evk%o$0 zxAyV176Q7iSVlL{oN|-ez=@46Wkyt8C*74xrEnWVadfSHIBKmItjq@;*oNGV^WD~% zT)iNp9gAIG4Y!O=jbWrX+)cPPa~T)mNsG1T1s7ihBbT^DWGvR3~m3>pnq! z#^;HUR3e6qY^+9HL^G+ZFrq>P5EMo5Q&irc1dy!j#e^n|v|wJpMU;{zEpo9gI^Vvv zKVHA9j*;M}f*=MSNY+u4(KC#KCDS8JzgZATS?f1z7H}y^eF4cf0qHdJ2~8&)&e92q z7k;C2fXm$1&GbqH0~~v4tUW^azCZh@$Lz0XY^V#JW4HHgYfHz86K-GbeyxM`T%#5Q zab<=^%xsaVzSZk$(IWg4j;_tHv( zo&D*-0xI8rsO14!k0~8sG7CFWBw;_SfduD?`U-E;@tNkX+|cwhBGG&TLu1Te&o_Bv zEV4=t=f^nVbdhzi;gMb$(A-Q)5>BkpMkHdvMLH;{v-`pHs8fm~nSZFZc5giIkLX1Xs3($`Oj03OmD{!p&AV)tEjr5q(GPfhwWBSr zKR?{r+Uh-0xoro?=xwRov3;j40o0a>e@o57T3)`;VEC6Nd;7pepqfn{%R z>oHlfBDx;JdRcoHR$?&g0slY=#dzJ(*?I~}sP__70^vU%NeuV=rkt0+FsG$;D_S9t zcLblMUcmLz0txkN^DdomPmHRg4Hmd z1o8w~1Lwd6(;~60V~D64I}lSg;U$h@5RA0pX0F?sQtGf64vt_P<>S7*`oRA3+J?P6 zP1RE`yKrPdXA-p;wTd}{m0PII-EHyHt^VL{WSZNx^_r34Ga?t(qja5^?N#X^+3!|} zAOkITGDV#XQz^^`AxZbvU_u2EhnbTHG2#V!8ZwhP-8wyw!wRAn*y}4Wg(e*O>NC0( z`Wp6F8fx~*GKPIce}f{(hM;z0CwEm_>~Uefh~Nx|s%v;Xi=>yosv(TNU5>-Qfzj5&PE>G-h|B(!0@TCp8U7se)9f8IzY zmYX(j#NWqo&$!8s>MH}0>Yue2!d6nJP~RU_cg->~TJeA~PKSJ;H6 zOk`&2d^oiK05%K{??1@(akG8spFUV$_xP`?e#KByflfyLcHkK=Gba z5F1OnOOw72r{eADEBtLxGWP%822iFC#Est5t=&iKAhytx+3cTsV8p)Pfv%U(ozX*M zl$e6DKLzoD3Gt!smQIv#p#69&iH!Aic%V^L?4jZx_4wV}bEq2&@K{Qv#N|Buu_pp} zP-4lyZhhFey?Xy)Oo5KKqACa;6o`cjBQDvHl_v5K%)Ob^>*DFgcpm;a{VrJ6NgHY) z%&2fPpEu%|vXQ*&gY~``&yf_cQWes$LMmn?^8iFx)W9$jb)=rGtb?(is3+?yunk0w zBk@gis%hzzjJ(NV=a0}={32Lmg|YZ!J9$rtAiY!Y&5(l1e9M<;L#^Kof0kGs*0VEwes1+QOI&v@kRTp#{W(7EWb>4(Ww;obn%ZU@i&ur+)ExYo+T2_xlr_~z6Lu#{K?$VqSj=4UmQWkaoK83=Kg>69_-klu3M8Ch`jE>jEVy;QXW;hE5myz13y{bL*@9%_8$5neg=9E zO&Q&?YmoQQRQz1zJ=Bb!A>KnR_!;Uww0ca-u3_Foe?O)Lm#}B4jW4R=fA2Z0K2Hwq zu2k2no7L^=Gpaz{ufD0ir+%cisv6a#THxBON9AO^H)DLpO&Ooa_;kjij4x+=BjdXn z>oc}wRA>A$qdB8J;}03bGOx&df98#uGc!Mxd2i-@nQJn?lerFtgH@T0nMX6@nZM5* zn)RNn>#{zQbz9b7Wi8ACawop8T&cAK)Q-%5Q7@`}^7Eql*HHxzsYiYeV>9_&iI3mU z+($nY@IUuL%yam>Y}%+12LoOj|9C6?8}%ce>Uj&?N`DUIJnJl7-KWnw&;O+i?{xit z$XxhKnXrN!y$w`7e+L6oxSfQZ>4O)kpR?8LA9@BLZeGS9IF(d5R{!OPUfT1!GxG<1 z<@ql^bfRujS(VBjls)`uhbJD$8+FSFFMn{|qz67fs%}!rRFyqATg{{txsps$6zCM! z&H2xl{$k&kD_*;)q3H1ri>~%l>0j-PNP78ddkv2jma_sXj?K<(b`=73x(ACnsv-F>Png!h8-@${k zSHo6!3dQmt3Iw0!S$O9ZgH{K>^v~M>xFO9|m#RO(D0h__hmr0E^&yOQQ`M~)@#d&| zFzS6yEx^dPR25d|BLbRt^QwDMz(fHY<>fyUcw7{!+Aaf(SOeNKetLh?*J|*8}{S_Rd&iU z-TZI8FhSqb(?5OSkG1p(1FxQW?SEf? z?2pQLaLT(zXAA*4FL=?KL|48kq`Gp%Z`D!Ns2ay8RUYHTxgqZ((c)puO>ZamZ3FKlXW)vFe-A_r6{y;Z~Q{+;LGvD&($ z8}~`LlN9g1h2*w+iUr}6<4iT<&g_a0H< zOsySwF8dn!lY`4U@w4vbF)*{0xVv_piDTZmp+y3Cu>UONSGu+)p&fFogd){TYNogr>g9m z5j`#7{d$V;nvX;_Z~y?#-|aOuV!THsa+`Z~cg?PC+0kNZPuIlx$-G^!I(u)|IO95v zoH?GS$Lm{_nr^*buj;GUYj)weV3p(P`r}H~x=tV$yWXx>vFlF~SCB4I-mbM!gU3bg zryo*kTiCI6zBsl9h(h;B$JUfFNqA z3O=#>?hpHOG-eTO0iW1#IZ47J;1WB}n$73TroTgryHlnZnr30D!|Xp%>ifoHI^kvo`^tt3 z<)R68sB)ZSqeG1+i3y>~f}8aj*Bv&zmHs~@0yWTa$GOh1X{Zt}ufC^Lb|enr51+ed zdiSe4S(Vw8w%Z=3*Z-`Pydg@s@ z$YwRexQYg<(J#);NwzpXhWmXgG2nU{?wA*nKktwWX?u%ESa;Tl!hISuZ)IUdyvkT3 z^;6%K5OT#0bnABa?uvUV_O^|u>cBW;-En*4Ruq1n?g=n%%F&+X1%;~^8cc;TqJKiI zzKwfhz)?4YVH|ajU9d`f>K>cgRX54t3+JwzB$@HG9B^pOS{*xgCU5m2Y7lA@9ePt) z22~gb_>w4coR41An^W)4g`Ij66}3a}&qX`*Mz^Mm0We5oB<{_tw_SiZf6v~6|5c86 z?R}bH-zK{ns(DA)Z-n?Z7L>i8n`hZO5=jWTi zyD+}KF{9#f;VPwm2>G@urN3`DbyBPUjeAVgACKm;ncaWfElBf1XIA!rfrAELH00u; z!*X(mk4STEZ@uCN1fRDafN6#(wlVs_5s;{dj?{a0xkK)WQ4z7EfckSBjmJ?2&1WqyqHol2|sXgbw)N;$-ir6z< zolZpEP8cNH(}JhHSKwU&=kjqB>!sH_aV*KJ>FzxF7|!w?_<5JO+=0ntljEfmhK1}i zC*U3(&V$I>Ink)OabKexw_z*R!-sI{#Xrfy2NMt19HNsae6AQ@$pt!qA!B0?_M)4& zS8l~CdqyFv$#s>+#+Q!rRnsA5GTGHWLU6=`PUpacl1z&!NM@f0+FxmHYCqlm*xuF` z>^KR#?4QHy z5nz_u$=tZE{dD{|j_so=97N(jPgl1bXRBNM?vHoDBf-fQI+;diBhgBa%sknGZ@l%759p6f+ld<*y*F+B=Un zwVOUgd;vRt=62ot%n{i~5D(*bw!fC{U=nB{!U@nhq^kt^a~(Q1Rc4!sicEHhz<_Ib z-LLF-Sfd*bmA>Q(9=AIIQVpN)dCLIBM;TysU89{2!Q!4f0=sHRD%OJM4#e=BB{_UQ z;uHmSTxvzd=Dp-qjFCs8(uu}7cZp_{p#)cwSP8=h;T6_?o#l{77L+EQtKd6`JvPDfn`xqADhz$Y|ds5}BHlEE6aIWrQ5lhw+het1tB!rmYT4+!T^_ej$`x zp9SAeo|o8NNP9QSSxpK#1fnaI;wT3MRuxOBU>09Oi4P4_Wsc=T%;Tgg4FT|tBUSLZ zg!L6b4VBLUl&vYU1M-nZ4f4Q6LK)cFN1~bk@Hm7cIx-+3rHn$Gt9TTuYl|OGItp#v zL_k@8O(tgra?+sF)`ip2t$of-Cq}|!7Y$gy;9=_*>^}_9>jr`w{BsEa!*U!Smtxi+ z`ol>I;R%_1hU5N7=`}wH#()AFM_m{4<8)^ne6^PvBhmziyW4TT8_bFmHi(65KE%8P zA6cgm33xcNqoWm0PP+Apc}Ewa>onv<7Q1XRr*2}QR+me^BA0s1=5)v*=-T$uAWFECcEh8TR9jB2wswM{`A|`UY6{Oa zUYlqet;cbU8cr%W15S;C&GfAyxVFaEkN8kbY~y38A2=-Qcr6x#_$HE*19n0uI0VJI z9UnAnDqkB0Yppp;i~Kqps1+DxVtQ!tKRbhq$*#v55xR6*>QL=|qKU5w)>q@5|M>bG zDRz);(xJeb64*}N4q^-9ABr>OLKie#OC>|mMHTq4k4{YcUs04KqY^Y98&yeEa8kp> z?Fn#2N_rrIxtwCC6!VqBer9p{p|5@M#~6m!D7gWc7!?2*jvF*gJFWV*zHUeI`t`@C z3JJf|e`;TRvE>-N(>>gJ4D$vs5zQCs#K9yXkUU5p-A{Dzab&?j8Hb<62`{Zm+O|ja z4-yZC`|0F1i|@62z``Pl`83?GT27uu-?nZ7CBvbP)?@I$NyzPskt*_W6BN>;^5c_QX*e=4Ity8#LB6Vi;ReM&G^(e5M)9Y~- zvK}C4Q4i-^53|o*i1J4<1RZN(2T?D<4;uOVXn_wG@<7Amsq|^_wgQY-W2};yA;yIL zGGX}nDI7D!Xb;_U`!1Y3WKrTMu1qkg8dSot1+@zO50ZuzEEdhRr%vlRT^%I4{>rkQ zxXby9&Z58aAQJkz7g9n>Mo5IdlNSSl`AU;H`$ek@zTzMuLOHx=>QQ;`qdezEslp1C zTPwBzrAO<2?HTua?o`(AIZQUbZ_2-PN_X@mBhL%3(dx$I>;RPU$h|5sT6v8%d%WsB z-rhalsXgAAJznb`IS319950erpq7`2hFx&T^WuxGZ~=zi(AoMDrlxQz$v#1xel8pc z`9h9rxOX?ww3FBp652+B$2bmh-^P(_p>$9iZQLmxx6_F`gD?omh2tEzt_0M;q?zVh z4tHzSla(4r*ojuD2Yn)LK+vM}dMJUfv^KVMp6b#S5Fa&_n|UD}O|@MptltL8C1nDQ zwCXIuUSBT0h8Xf{E|@07DT)l`IVFunp7Px(L7~I3>)@7bv-U)H7~Qg(<@UiBUyL1$ zGhFQALxTkYk1slUGs$>{7SV#|GiO_Kh4DW|B;)F(pw_c4h?@Ys`vt{*(;janB#`1m zO9JEsq%ua6e+khvUqWWGE^mg6@Txc;iFpcm%8APX|HN$bLuv2G&^3%dOddpTuqG2#WYT;hG!j&Jn6$87bR^n{iZ=8lz zR#A>djW?E{47W4?WHm3${47;A(xAc$h`w=;l+?{zXf<;WgpDbUJGUvo=V8dSBn8mI z<(@NGmu5N!z_z{t4F?;1(fZ{cXcUy1++^$cO7dB;2R>{$9!)dpX^hx&+*LeDrRFo` zZSn4-@LUW@ExiFp@p<_~W`C@D*ri}`azQ#eSSv6*(R(%N7suhM)q4S}yHIn$(}<@b zHq6|#YOJAT9STY%tsXNkiF+pk>rhQKw*=mBE2#yD^AP8qXzB9Wj~#<2Z#0QqYEa@X zp00~KR+d}r2nuWKO{fU28<3y!w#G@@@_vSln6Nt;Y2ff*HE_BhT4*`kB$sm%>W`ho z{MW-0Fx;BI(1tm%zkpmx;|(Mq6{XR7v=!?JGFKy?#8{s+R(NR;z0_|nMtg0|pC}*T2?wkTQAw=3{b*8>@+=SZ2~gT{Txw6>EG};%QhVzU7J# zeMF*Z+!c1lU)pK%SDtpn8V^Y#GY})m-kMk=`=PJ5dKD@XFt!jFjgp1NXVbUPt;nA# zsR8KewKAb45x$*N>cI4sR7CjjiJ?bGnUn-Ex=q zrdp$JyRBQP?my4!e(d?~jHeDOysgc=2uI#p9vrY}QSo19z*)Rsx+IKX~TJ&WV#bd-7Clx)=T z#BkN}FT+vs6C+j2w}+#Sg4vm6BUB4jQ+A1JsrKfb0T{!}mD)V~`$PBbd+LK(51z)` zyi8U6lZ+?+@x9G!)Dz#p-%ON(MxX_m-%tw%&#OhYAsn|R8<7Ja&fd5qd(FUaWIvp} zf7q`YM^bCEe>tS_B9xh<8oO3cesS=R1|R&|dz&A8-)*-Y&N)1EZRX{SrcA=va1$(k z9}dy8XB@S<9EJR7=r`4ma=x$Lf77S}pncrypC{0+&6szEpbtK9I)+fxhz#JXokEvo zto~(;7m+bNX0wa({re$Ty35_Q?Qb%*hlkS{9;lvpKS;T0(_wWu^Kkazf%D3#z85Cm z4q~nuSf07-OxA6?8nbTOp?=Vq^@B56CBshvnSaZPyz;@jURCtzRaG*)yLuu)b)TB| zJ^Bjd?%qMJdpa(s=+CJAdsO4l-+YE%)~T=l?}-!pRv%qEP%Zkd`uWd?zxKk!55NA| zSCv|{h`|~4`lr_7)2k<%FM9CIqW^q4YtetUXEk5^V0-n%FV1>heQMU?p8G$$YK-dM z`iIpcyHEXo^|0HPrO3j|~>OJLq_mrR7Q+{SodFvk4tW?Kk&6%p>FPgJe$5qV(RmVr02dj>|R{zbs zm1to$lb)JW(o-`0baB3#_i2iLIGf^D^wc3#yrgH|$0f3OUeCN6CHPOUV;i`kLKV;G z*|1p^f2?QTX#HWhTHQMDQvH&lRv$5B@_*;O+=EK~xx1xh)28ylV7?!C86_pdU!8Y| z;&Bn)j_lZt8Ec2A@7@T!{_hK3`EZIFpAq|LM(p8?@}czh{*3aA>G!&flC=tf+y2Sx z$T;z>*u)IHF8Zh8{4yzHNA|TDu^TcrWW+v@u|dTqXHpSta_k3DtU zhUVBupZeCd55;bN3STF_{@7nUh5sjBI%Yh2?8HT}k3F>r2^Qh=>V@uG^~5LceQ$H) zp!aVAJy*|o|GJE_?_H%fEh;O$Ne>v| zF=*XDu;S{>bpy+OfcODr{|d2G_AU6qcpVq{sp^Sb=C}t3y#Cq3r_}3He0;wXL+>8- zCzrqHiuYdmK5z7xtFHdjYsQYd_PTcx9)jk7^7c+@|F9teJG;o2Su;Fu&aA0-BJHpt zp$s!U*dOC$AP$`C;}I+IzU&J)BQt^1N0#V$*L&Vw`O9%|2`4bd!dMtbB~6~>IcAN; znf1j5^QETz`wMVp5=VfzrsTP1&-+6D{1y6G@Zx3n7R)ceiLf0CBIMzDBn}x#~Xu`b3-=ZUYh51Wy6nsTtaZxz6f%1Cf@K)g5iKH;m z;a?=9)7EnQSz290C$%jYA)vjPp9C<|@^N~Nk8R-0DNX_vd3SMBiw&Xzxi|;R>=&;r z0**p7n|kM+Gd?wAu8*QX)&RIsoZwK^$>;2#djW^AV5kgq930U>iurkq=dWB$)uH~p#a}_sK)HGM(eaAn6~%PEf~s0U$8m~+ zg)GRwkDF~c1w1`Je+5#z-6dsr1ZKf&NxIjK!PfojO-e(Ly%NyyXt>Ba=TgF<1nj zUb(lJ4x$zD>5%0s^5zvRE&!^y3z&*M6j@ljeA&_k-g5AGu#mi!_j~j5ip% zXcrwX^70oh1lq^rD~>3M_z0Flz73WY0^f9IE5EQ1Cpq!E!Yf$JM@pCHuSD#<%a$%% zQb3&Q-GozBAwWbH;F!+*`QPGmU&zgc(%DAg!35xfKnMwtT<|^>k}}`B1Lsbbu2@#I z2;ggIz!Q0eE4?qQTtI?w<^91@)_}c8locPK_N_6z1<;C+077~{Pn}^d`hB?uYFuxOr=cE4-@gcQ5KDP>?g@enXVu(}GO~4r> z4#E!x8=atF3H2j%XmA3JfGnXv?1g#X#A&Rel?C_lz#G+MD)f5K_ZLw-f7#0AkfWgB ze6Upk*crVJEnMvL`N|c=A$mHXQKz!z27Msh^u8ifM*jUPiVGpvAh$Rp&b_k=1(bR7@<`pp z{}^Y$k%jq-%@~9ZG2WCguK;j+em%8AN>No5l!Mg z1x^9D`k_*yz?|UC1~cZb#Grm}o*pP6qKogPfou(*_tPb~gE#eof+b9D9E!vX{uR-n zMPn!Hng#P#(wGZQz24`B>jn5VXzEfqv(IWOi5h6Bq7+gu6qRyCA%-3lc3;7L1vD@w zatRYv4+apYeEuFs8-wEvUI{9olxp=z4fY|*yBF1x{6SOApb{8l9bt$QmXMavbs_DS zLxsngVZR`-M!`~{MKmB940}q|TjOV5YzG~3x?XjF75@3 zIfD@30{X$!lyB)+_+LWTT8h~F0D|>$;uiw7hRzX#UZyaSHPNH28>@NVFUs^I`+F`E zEfRa)-8{`ol-1K|ibSdeSRHuMb2l0{;2|Tga6vIXlWxv9r0#}(9@Qln!s}@kyoB{4 znaN_}RR}sJR%;ss(27>lq!$%nbSeh>6fapRB8lh^I?@b-JX73q&#YNA5+y;8tL4dr zft54ucEi;(_$Ytg$|U6&Zjlb0x1@M+!7_*?Vit`3_d)i7%SeDi5H2lRQc&cG8rv)i zT+hfNZY%`*0}^gUYv9_VQ6Pkt+u{CIS-hvbR>?=w8PRai&06|y4 zR1q%YxaUL7xZkc$7$q#+Hm4z^&tke%OnnBTya1hyysDtF7>FbU*tJ--6fcB;3EWZ;sZZ{H2!&?$iqkl zp$8@+WJsq4CBUMr{b591xDZP))bvOW1F*W&FD^j3H6*Ng`UL>|rnBfHs3935i-CA4 znZJlD@_5uI?TkiSyGoPT22#k9t?VQf86=9ub%-66XpYEg|4q~@gsTZR(6oUWv^)x8 zXGAJOSEl(U$|24h$4*HQn7^_B>IDMhP0WJujD#D7*=6yPJdl9?yH*sY1t^eNnViSm zN1Bc!fp|?KQfypr7xw%~5UNKR)My_0Ff4-U$z`Gpbr4EX?K5Ib3j}hR>5OiA2$X&d zqAw|k1P8Ka2{ZwWvY;eMFYxDrW!KMN1`xpEPJzYuEnB>@I0}#zSlpO4`xbPmWmpxR zI(ORCSwPb?UYZF4DU^#U1Jzmd5ht6~3Za{wE|Ru;2dS&`^XJnLA5|2jHcv7|OVEQK zMj8m86@@E#`9<@CU3!Qr=1VKbg4Y&eoTnuUUdOplIxdE*rFjn!!X{|KMC1=d1zv*P z1j8e(*Le39@`8kPRptfDTr9`|23R7ZAl(OC1)49}ac5yD!g7PN#4S`XCn zbdAp|=rj?qkU}A==745~zovqj7^p@f0HZqouJOJ=?nc0T5rr%i$3>9i&4>Dsi%cDs!Tuv3d7>3z%Qw zl~BtT6f6YPaH@u;ML=OXBabHdK5PgN_;VNsv?xhxwHZHI2t}^RkN1mqh$4JQe6%os zsX&7f3VoGXN){$SjcHDwU7n8{8JywW$3*cLWRA#PjaC3K+3-jre$}rV^1W~w7E~8V z1vCtKpVZ^7ufC8311l6Py_d#gKlfD8Xt)RavBADMV=3ll5YF66OwIN3bABNPUbGYR zDq0DI7m>CXHEPn-zIX*u$ILxh*Ab)@V1*G3NUMJ*3eo75p@0{ ztnWvy9C>&8@`oKjV{K;Mvcd(tl8_I#pJ_ zsTiDq@oEL8n8)>*+#R?~Ym1SuJyc#%d4N zLxRnwVZYe-ifknwJ6D5f686Dj6;=Si>`?!p1qEOkN9!X?pbE;w5g0_aPz+=Rhg8e}Fn#V?k$?T{-Am5u=4e4MSOydeVN@o3-c>FsR=JYlO#I z^dBZUYbe4BUlv9gzL;EGR#NAQu%cHaomLZ7y6nuaE~0pLaN(_*WtOA6mt=5Se7X!9O%hDNAfgwc?cuk^8+iz! ztr6%VaJd)C5Bbf56Tu%?*}V_T7;CP_UqL7Nf?W0$S{9rDNf9apRMl-?QUZl;yfaPI z-M~!2XeL>>jCA2p5qeE&+2XItt@!oUkv z(Www9b?3k!iCwA!RY`Tjybg937gpFI2W**?j0V z#zJZ8oH?^*upVN75Z>epq;Trmk_>BpSQe)RaCA)+X_gvkgUP`LtvTh>T0X4|(9k2= z9}oI=O^yAuBBkLaH^202h#*=+TvnissYu@Fl}hQfdP;?IX&s)l6t~+DfPuvw?ym!~!8z$dC+i|Y2#YTj;l6Dr|-3FFSd7f>GUWWn$@tqE!o_QeC zIBJ47U36cbA7a~AZ+X)2AzeGknkDs_cajC(o7>j$*H8Gs#7Q?y{@|be`G-FIksEKi z`7b{Du__6X0M?xGKWO{JIFQjEJ_Mfhm5Zj@J-;AKOlZjpR-m4@7$3zF6yJ?4s9SB2a+uPHH7F_ctm258r`Mo#O-8-JB ziIpfB0ug;fcA|F1<&mW*bn_IZqIUO%cP1m62^!4+^^K__DfqVhVB-i7wiyMMFxS&Y zqqGh}3kJL`z)Npo%h8bD3qBP&;w>QF;O$G<{&ej}iFcTDBR~#<)vFb$g$|15S=*8N zHa|ej1vMl+doxl@Rmk`w)O;*-lEQ4~eSI<`1#*)-eYX`&kELiL&ohsozp?17khLVH zHRoa~strYD7wkMOMX4WIkrBC44I+slq%lNgJApo1iSlq95FqDoBP#G*Km*aUHxCsM zQrm{2mjpYC<@ZQM$yz=nX2PdFS%vcc_HvjZ=#@{Y5W>~SR*c(vahlXJwy4Aqj7=r1 za(!VXjAq8J@h1JbH*w-b{^u;EQ8w@jx;B~BTu)1Rm^Xigruio0pG}(NnN?&=V0lSA zdUKZ7z)_YrAM%%!4acsNbqg_a<*_hm-^wi_b|NEJlF&1;P~5ATt7G4)^XSEtKAX8l z+qW__=noiAd@EOmTI^h@i8Qd_J8jQkVTs2ov3QZehYkM>#m$gTh6!ZyDim^&Lo3^k z)vL2`!9yYg)F+!)HhR@&y3qW5Q&%nmvi$t)UCp2+8lhboqvcj}xPs}Q-0ZbiqgP@S z4JVkItX_$y(Uh>=t7G+=08RiP@FP?YD8?{dHfu;QAjRsgC6G0nyTCTE&`?OvvR1If zM5)YRp+@x42o@!g6|B23MeA&)MS4|~m*{~}Kp}Rp%*8-2Um_~%IG9=60VSBi(tN;J z!n&rgSlncyP-o@MVbZr!+Qag4T!b|&v!(loXzlrICQ}kXi_Ie_rL3kPz>92lsh3U> z0Tcet{eohXk~g6x`D92xR(kmkMHtC5L%=u!<{iBM&ejALfdL$eq035GlIh(pf6YBH zgj(n^CCOXh@43vBX=v&n`(4ru&eDPxpaoa^&((f6C`V*YCu{c}neY-N?T!JsGkU{M z)Y{?j89?7O9CLukeB8Xt|c!ovRko4 z_SO*(EQWl9p_7{haQzgl=dLK-IiO)z|A-hkz($5AuK4xUy$;F`wb6@SVA@H4K zG{P$-vay3PoW_l_GzF%**&JA;qi+!`Cczj$$&jDuK^ru*6W*IqF#3<)-NY7)HVW3$ zYGQteM`RG7W+X8TcDFhMcER8kK4k*2pA?w-pJ z>Qy?D2ap7I{FmVp!c-gIKnaK%;$TCp?S+Y_$>31NaMx&<)n!sH{L%x!;6*Hn5r{Gz z2Fju=hr?w!G`52V&5Tpn4eKUFHB6U|q3*3>i%SC%8RKG9ga8Scu0N6y>d+RPZ~)51w;~DVwub1iMGupMU<^`Nij%lnzh(sbkI0N%J{h& z=+X&{h($v#n~ijRD_zz&WrG^QM8K?_u6A``wNX-}wXv>P>$>K;{)ENnbkk{JL7~l5 z&(mC&4FEhckwO1QgA0pk1AwOx#%7mVm(pnWyli$M)2zuZpdeX!dlw&E6_m*uXQCi0X>lvOS=?<}o%nUMtjOPLRN{|1UC+weN}xKSMS zM>iNX}n{C9aCke)k7y212%?i+;AhuX`M_cj+K^ zWrb4|bF*+reVvVQXiP?!`3b5bne~#`gWAZJy#d&IGwhY653%g!GRU@<7S(7KDo~R2 zAoO%7r&_;&YN##Jk{kD0Ic12h8)a>LS%7F+rEPt}65Bwb72vorN|y1W*+ zz73~8(G5!9aPJRW{MyA@m(AFq6GRlV-?xw5uhzI}ebiX~(pZ2Afn)nC)~b-4sf>Tg z(*cwU;cjRFOL6K%j*Or$x;DT#feItwv$F!0bvEiaVhAi_3T)$3S^`r`f*KB$5QOdQ z41#TiJn>#ieb-?qwtWT!Ul8K~>=pdm6s}QY2>^BmC{Bm&6KcMrEQcY16F5v?-C+BseQ633sW*Wf{QhlNgw&hBra?EjC(#cbH*JgfFF`G zGgt`8ri+tB2j|>1`x7(nc9Kv+e4ES8MQ-%Gj{_UDn2x#pG+CVj?xtyXgPaekr(!>d zoF*YX_G=fz1rS8+$CttTMsWGWe7bA)rzLB6FNpG|dbHrY0lD8PM#gX9c21i<nE#uDN&L^U1&Z)Tcl5*Ps2H|M$7izl8z6K%hn2f1B6~RLNVom=VJ- z&zQ*Y_2jk;>dE+6W`>ggl=@cgApVk}PJEi;dU~3_+N>TycnZbmcBr0Q{HTsx`VGF5 z$Np4Lxys1SP`9Z$RFdk>T%8&3IoUHX>pPjZtJUhhu?qDm^;8yp4W^@*_q>Px4xC1( z-xpt`zKrB$fbZ`z)N0CRp5-QBelwLCkg2Xv(k{e)(^J{Q>Fa0Jcdr|)nkNiFdoop> z`rAyT#gl_=O|r+FG~Oc#&2jQ)@T41Vyx|6K>K!TrUp|7yUc?_V)OS`jqm*1V9lzsG z4OG8VEok9LHBybrnuEWY>MI#zIPDE++sD-dUunkMKd4`*@8ciE-G=wk3Q5%jPB)qV zUg+{30em;Vd$1aU8U?gJn2_D0VeMDI7$$7*iov_j_$ zHS}xE>WYCEuDll1nN1a|OHofoAbg1v|6V72jT0s;n!I;8VPOj?^Ix3!pE}_>Cw$Ne z$DQyQC;UF4lor~$zFT<(FA_ivo=YA5`p6Mo$Ze}suAdB4nIDRU`bxiSv@AVbAD zENRX-;XfJZnu594+Y%FBc_@Y5`F!Xot~??{V7sfH zPPonqA9TV;oN$X1{vRjY<%HjG!UHVrGF6TfzS0SQ-U)xf372wMaQIs%{#{IKiNDtg z|HKJj%mQB0{0)b1R$0Kq?>Q_unL5PB&+QzR^#A6B+nn%+F80$ecfwz_;VjL2R9BYz zF(qfd%2K}k$x9o$wk<(=65Gggr~&EVbOyG)wJp!p}S56Ha)nrF)i|Wa$e$IPvS8_)aH0ooOvN z`JN4DYr0c>wz`MuPCS;a{>kz{wrY0bb1Z$c)jTI$>4c&F;E{4hJK@<*_|qJgdN(=Y z*PQSyE3dNEe>mYTCp^{4rEK+}6K;0GAF{lWt^SI`Qtt*Q{F)PT^!GzzKiL3D-E`V@~*#6Mn^p2cQPSCj-N~v=Pi8)<6!KAR63L=6b@jwww7*3gg#4a8kC!D=d|ZQfx|F zr?L>wOn{X9UqsB_HW~dQ5)i|Fkg%{AQJlYSX3B{qD*0Enc(Oq< z(vlTRyWp(%0elkj!sufEI4tk9>0CI9LPuXq$yk5s(o&R$je^pAtd#mCW1lW?C=hg=t7t^T^15&6IY(jxV!Fxes*kEw(1<^SJ=Q~TuKN#c+cKGIl z!bxrd!6+anIduLTXu1YA@!{u)Ap}>=)*Q9*4sA_{EQ3oFtEwp$}-f zN`!VzZL`@TZ6I7djFil&O>lkkyF6ADLPGclCv-70&gRr+N$Aw3g;EOZ_3&nim+bIn zs3gCQiDx)V?cE%_iRhl;EOqZF;WEzU3}>mnql9cpW|D_Qe$ZXft>I%Va8(JqO!%sj zG@s!NV#*9ip`)A*j$yzLQar+;8Fp^t!;gswyh7D(m~iT9!e(>Pe>N*pd_8HA%teLN5vEO$Zaxtt5-jvQj8 zAR5i_P)H}MC^+Mk&HJVVG%{`7E^-6m(5ciu%tr&+@j@fGJ);^#y-hlu41nCLX1E?w zq~(Mf6tjq{W|9#s+xV31 z-Pg0N7Hh%M&i|yVE!f9f;(^yvl8k-2{U)L~4A4HKEFBApZ?3?RbqTs>%rBg0y!VqC zFFc1vlm>!YL&)UEUv0*yB5X@pDDYueQkMZF8IobuCJv1~esMgt#(w9Uc{Wy0zf!ag zt(mu&1sJUVkh}!rJspvS=AZJ2ti_zgk_m`yFV`HrK?jpM|D>$Vp8~ej_v+XZOvQm; zD2B8I;;v%RG6(ygNjyGV3iCK{R0>!e9SC-itfBV#6m4=y;c}#ONghOYlEbv1f*hmA zd|WQyF`_rnSb7Po>W-!}9=Qn_e3%wGnJfmP$}HDw@uy7X*7fOk3hiYZFSn zKxb-8>2{t{lzxHE)EaD(H1W^W0_#5Zc%BqsjKE7mODO_la_EFD2@WEGr6wj;?Bxi{ zvdPQC;s`OOtAP8nBy=aOTSN1(XC#sr#(K2Y^oiM%oVT@WCx8_iG0xj2W#6+scAK;y zjYKF`j5hW*t;MXf`c20^G#M7pUymoD|?caM}rzI z48UDH4Q##L+>@-BAOd|l`JrG6{g&)HA0A%<+mXo%>eJ;ux;QL$fMRsHPee0Hc-sf) zuy_1KBx0~xGnIYQv$^UgqBwIxNjwSxN?u0OhlSCNAzpdlNpe^?qQvt&GaOMOot0qC z;aranLs1*n1C77u;+`mtKlw@GQobT6^-1CgfbDW9$Q^m0I4TbjR%RSVlA0}XTHC{z zAAPP^gGhUsQ9Px6CXyVa{W3ccy2Ampl>bMcMHH#7PX^PLFyAMH$$__kb=$}bg`yh9 z_X_dxqd<{X@4>k@qs#>d4IH72DzB(Cc*~G;=Gf;}-tVM^Wxi_2J#!pYq;7mGI}`6ABCO&g<~FqU!`LBBGY|I=*|Kf*2*`CrdJ02p{o!NDv=#|7|kPvtbQ;@tNT>;V2q^9G{y!hZOI#U7eb8e@a6Lxo`$Pz3;nCpOb_X@Zn~L37Rr*k3d@SjYv_5(HA3eyCcsy%Q}dhaW0Yd5L}KFRg~`FNigAOi3r)K zz65;SYI`S}$(g|Waei`VKfp=pewVO56G(@tZ9Dx?F#Q~>RPrHKEb*B;nQYcz2J;qN z^LCIHS<@W8sL2cvveHP>bir7Et=#qtqs{2^)(LOwsA4__(lff^3>GZW(tA-#k3)N_T)a6cnIDHLcG-wZ{ zi%ZGRD=v2`O}yOcZGZZj7JB;Q^fh>5`6B$m`Upu`{fzSr(?F=bB~M>RF6&2j-(W|M zI+C5xGYuM2{PM|cCu8IRZTsEA;0L~#q0|>MzL;Us*e{8d>a*M?r7tvXp1uT7ZXXYS zCsu^Ksg8o%3_k4ciE#Vbf_aWju=#DkuP{1f&y|mW(e()YC$RKz>R}m(6r1*3*sf<5ej(#*4J*xv&_#JWgPnbDv z_MLO-XelBeRTuH=gt>Q3105*pvW&r!?yqJJem7$7LCzdo&-B^TK0a3s=lDm}py@N` zPMw3AhjGMZ8QHhYo_%*F$l9?I*#^=ZzFxxbkE$UbpKg;Idi7YnsE20?xw>E9nYYIi>2dJ+yn;w8RQ?LBWK=ow_0iGabW}V z7vwLz_rezWwknNJ`oFCpzOcZ4Ir{^A!f21$!v&YCd4t|iqXx~zDOWn?v?OERp#2%Y z9k@Wv<@ec{FARDrbJUCS}bV6wCVUKuS;VKOeA!Pe+;ZmJXN~D1W4W|BU(! z*Eb`(gtDpcsayH|68(O=x{BX7Oc+(BG6rl=Bg-=JGfI_Z<7ec!vVjyip=>aI#;LL) z_(95{_!&5|EC)ZM29^!S4^ob#$O&ba;%D5zvdi$((^EDoW55?TjJur69(XyIefdBx z`|@kJ?1AIB>}v*c*;ilAWe>TW%f5UFmyMKE_K>T&>}!T_+1Gef_J+YXlwFP=Z*bWa zQsI?U;SHBbV{*8{%cLi#|`Gjj2gvd55A7e9yM4RGmgv78O3Ff%i*$-lFH7J#*E70vd4|##tgYe8Z(p| zGw#YVG-kt)50`oP@rIO*!4FV+HMLMfp)M6Dq=lCX6iP!OEksI(T%Zh-OQ0Bd9k&oP zByvr-f}sEn38hyL450MtYlMbZaE16t{Bgwa8r>LSNZpvrbz`n^8#6{XMi^2z1}T{# z$1wJEW3CYz4jvr{E0y#b$$N`5P+^r?Y6scp%6v;7#>p&7B+rWWLHg6zv>x~}s$&EL1OT8Pp zr2{?Y6Hmy7AMScnxTTkR%&j+$mzLhhE%h!XZry;wuEEdv8_UMw2aUOo8Z&&j+kCWw z2t0A3fHsjq8!n(BC9$wKoI#r?pdlp@!JEjS4HwW1f&1QUq@=Qe8Ioqe40R9uP}%q) z0idP?1VCijKn6=nK`BZjl;VfVRvwq_N!e%&!#$kKMq{Y!p)n-Q&=^7~8skbclua}o zcr{ZUOizd!r7M)Kca2nN_yi!HMw%>D_8MhWWxvDEMXK!g_!$ZpE|~*1y9B{^sj@)`UW6cqgNqRyhTwZtSuTPj5JYY7$^;?tbu^-` zm#=?{;0N$;5?-%VW!EA&8Nt!2>?#Du;@|rv@1JE3SpAneGZl-^R3!4RzA+Syau7{r zApeG|xzr6~l_?1|uO38s0mcTj9j)aC5s<(EwG-$dUIRFq^Kn6`2#tSftHc+F99E2TE#6qcC?V^Xc!hvuAUIC$I3~D)*0dBBm z5Kf7|bSnvoP8pO@mqC>gBAqf=>39eIDfq${7cW`5Z26Z8i&m_>@5}dp<*Tc{_VvI0 zyVZYR{15-Q<{RHE`KNFF^8>NcvIoEYFaO_nzWcrJ|LYI_?ce|7KmY5Y@*l2UxBf>z ze)y5MJF1MQuXFuG{Sf4`7r)MF@Uevm~_Gy z_mKxIqNY>97=o|2m~_JDa-YB#j3M}Xi%BDV4(|~YqNY#`;OjLejqt^r2`u}drceyv z>oq2g@CCR}@MnSL0O7BfF|@L#-tIx5N=RYC?*kGi7{z}FMu1SZzv{=Ev9%VO@F}`PoQr+L7R$-=_mMd zo)5!^m=OLVWBLWYoSgWnAbcDXfGlMKuMV0DSx@G3Ff#A7+Po1p(^-JXO4+ zYJ^@9pr2}*{9H1br$Ejhi5cxAOcVY_jvf)5|I+-;c~Z{Q?cA3#q-TB<299v#fHz`< zJNXRHiYK`#`wzY`W=Vx+?pL`}-w=QuQI)~xs>$xm{T5DT{=fzx4fEe9 z`cjRAng~HNd76*H0QdDL{}FsdV!#)k_B!x|z)KT-li`mL2>8O&-pSK$kRB6;uD|g| z2n2lLX)mu<5zi9+?Zf!)$NsAcOz?%Ky_30XkF<+w1fq~&G;TrY$NoV*gy0L#JFXgS zMUO?E;gJ6AzZ$;Kw0Fda1o#YiW8M__Let)=MEHmo_~~!>MiYGl6A?_E65zAw>v#My zd_nem>%kYmAEr(T_%qbSK;6&%m+==Ie&15?v3%(be?I&5JN_8H0R9r`>wwqa@X7cV zfDcpS0RQ>CN1=Y^Ka3BMFYZHAV*_6hG=A$}_-ObFz$a5
      y{4`_eFC!<&ZKE@>D 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
      PrVw%9pX^1CLexqoS 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

      Q-!zcGKnBiA+@(Di!Qb8|@r7H|xg%X& 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ǁ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

      jj5d$#hGK>B%M)C#*x)2 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≪i;wXUuk0BJ1<8zA{8W~5fz*W+e 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±%D_S_Q{hCZHVTH>?>8_sl1qSf?^mDpiopE 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 K%;A4%{r`U|PuVU2 literal 0 HcmV?d00001 diff --git a/DefaultPackage/XMASDEMO.FTA b/DefaultPackage/XMASDEMO.FTA new file mode 100644 index 0000000000000000000000000000000000000000..1b2ba8e1800621811d027fc19c8aee89f28c2037 GIT binary patch literal 819264 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

      PXyaVX{v+SNN-1%-)Aw&@=|c+HMK2u*sdY5 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ξ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 z⋙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℞^}+uy^}0nJnYCIgI^BeA?Qu= z6ce7;khoySnaO)m+T@~-^E-=o8ntn=kRR^(A-jCfK7`@^`0r^57)qsROUN7CnUBSe zphIxB2|D)+

      -OS;hn83>uDAnlBT+b~YQQ-JW`!QY~>n2b(0 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�H42( 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 wl{Q*F$K?B2upT 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

      R#vA! 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%0AOC-f`j30~ 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

      ToC+xX5tO?(y%7XPU+T$Q;z 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 X_{cZaIai;*wjB$MwMng!d;C8Ep7K0^ literal 0 HcmV?d00001 diff --git a/DefaultPackage/delta_4.png b/DefaultPackage/delta_4.png new file mode 100644 index 0000000000000000000000000000000000000000..4ddd73120c40cf92bc9276d940679390c0524da4 GIT binary patch literal 3709 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 literal 0 HcmV?d00001 diff --git a/DefaultPackage/delta_5.png b/DefaultPackage/delta_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c8a14ba2123ebcfcb18d5644b6f2058c64dd491e GIT binary patch literal 3058 zcmeHI=Udas8vP~IfV*)8L7D-i3IriSC|=@X=n5i5Kq3Kxks>`HiXpO#qJStRD2BEH zr3cofMun9UP)w*&4IqRf1_IIy#S6Rl!~O~P!_J3yX3ja!Gw-}-o_X(`x3~I1OjZm4 zfFEqE(H8&!bb4>yAu6yJD@Qt>0Du5+{;adb-WC8*01yHIGyoU}pilq?19Wu(6bf)~ z0KB|_kPsj)4oFP}^78g2G#b#<1h81Z_&Bh%q^qlof&vb(J*`6sYEK)I>b0j$rNu#M zG#V>Um&IarvznKh9F~@r{yOX5@NWhFk1EiPwyEArMl)^i zz1EC1b@7wVBT@oMndQ%_UmwwG^LX6}{VgfYi|(^wAU)v}t_)ANFHv@uP&E*1 zn0rUDxJ~c7$``8z2kZtVhjAw(_^w-zwXEk32d(u*M_VSL*FNU>3C;WX{z9^i7Fy*G zTnNxvx~7QjejoQvYmGlFG0K!|OYOVbDAou)cIQ)RAm*3kn@jx^lbJ(8gr|r(JaN0K zJikPY)$VTv>!q^#E^=EVHMaR`2ztofvBdD{1iX)2uX-y=qx7H$_U&?>k=XzHI zJLlhC72Tk%RUAosVZ3u-SRv4LFz9xq-A#%9-L}o}w&Kk@`E9>%$E{y67abK?E;Dit(H~jK+phoqm=vL)TtC8aF)*oh`6)GkA)7#BbHieWz61oJpK6q8w2DmlEZ z@`h6-hilE8^>4pxvIyb#DpTUa!9Vpko$htP@)|GJiQrP#w|AL09LXi_KO=IrO~4*7Ko}8eD?CVsV$8{-(vD z{^GTdv0ZV;8|q8ZrzN&eA4ilg2|{*yX5OnM8IV`p^+e?U!h%To=%q!^v9aKr#`h8M zg5~8lZiT4z`ry`7z8-JgP_!dPB|}ceJCWR!pVO7)rpUTglEp^1d`d93P(vQ@tg-7* zlh>&#PrIz>0LPUP-8jdX2)I7_omaR0jGbkI;so!;!otd?y@Hl>eeI9b)d3Y1tmfA= zu}6vZW>jTOkK7{{St5tCtogjp1Pa=%*|QAC@etm9K=fp z@5ICk8`9C3c=J(6=F@9N-VN&`)mjQO4{e>bjiqKP;<2~YzI_;KaL*=vDNMeIS#Nx_ z#u*_@wtz2q(K1bTHK;9DdrY2CC6g`{>FIyr70M#V#@5~Ysse7};V17UE{!Ew4_OzP z8W!eNb8ExpR@#o0wTKPBUW}SCGeIb_WZY9q7wVB8#5C-_B_Q-%o`$}VPIE(!J|yPk z8wPDB>|7YGc!7xtH=kdh(w!~s zrn??h2B@#20cJp)zs80TZUY~~vf4fwHQu}R#^-kA))3p{JxUi#N9ejsp+W!ABTne<(xZg-0Qrf$z>9wqB--?nI12jXdi3nh$YJ1l=sZY( z6vCthUc~NVo%uwp6*rZ$QKPk|#`-r)2x9eKdeOlEP<5Vod4Jv?o|KdmW^hZ!;+NCe z%7mAloO6Rp?UPXz6eGPKE%K%-H3q>dWV7EZd6bC&PT*;#l)qyc4jt+ zhD%*XH{-JX!4KLxJ=P8lMKbcb+$0&aNdEhu7jjO#CiJZ`282!wGzv4EdSjVji4DBf z2GYohQRkF;mm@7w$-3MO9~M@#EJQ$zdhuaWL#iQ4{wN+5Ozelse}Dj?peil!gLHyF zy(RXz7qX3~@;!e!4DXTcoE64)?}EEa8)dzYZbG^|lgkLLk%0FsH>#{Ke>s!uaeNH~ zN{{(A!V+M~+&|gI%}po5BtnNAMZnMWXSI3hU}is<{tghiBRyW+Usc!HndcUq=y%w{ zy!kBV3cZyF693|E--8-14336xK1Eq^V&8%pj6vT<(mggpDl`LyTwD{{Cj0?6{*%VU zfh5!(9tw3k9X0muWhzwENPMUL!^33(Q(vc*V$_Wk{aOxVDQx5nVIE=%L-P0(KGYBS zWW&&o7cvb16I0k*2mf}Y>J;yL$-X;-)BCRC!QZPj{$>D@?q3kr9;+a{4~YYC@&8eK bPp#n_Oo#0Oe^|WB+y`we?9r9x*!cefd`@fg literal 0 HcmV?d00001 diff --git a/DefaultPackage/delta_6.png b/DefaultPackage/delta_6.png new file mode 100644 index 0000000000000000000000000000000000000000..3e729c9317f1bedd38ce910f046fcb66b8544494 GIT binary patch literal 3877 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 CHw~Qt literal 0 HcmV?d00001 diff --git a/DefaultPackage/delta_7.png b/DefaultPackage/delta_7.png new file mode 100644 index 0000000000000000000000000000000000000000..97d00fc857f2f11030d83e5cf0565ed698ac94a9 GIT binary patch literal 4000 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 literal 0 HcmV?d00001 diff --git a/DefaultPackage/floby1.png b/DefaultPackage/floby1.png new file mode 100644 index 0000000000000000000000000000000000000000..674d82b343cd723537414f39033b9b85df458e5f GIT binary patch literal 4233 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 GCFwu#I>@E~ literal 0 HcmV?d00001 diff --git a/DefaultPackage/floby2.png b/DefaultPackage/floby2.png new file mode 100644 index 0000000000000000000000000000000000000000..3445e54d4f87c1ae12925a3aacafb68dc9d930c3 GIT binary patch literal 2222 zcmeH{X;4#F6vtn~i@c*^w*JS2q- zAfW({$3s{t@(u(6$OsGhxa2d)YDI2xmkWVFNK8yb);6+ch&=nZ}D4-E~;EC0=>9NaZ_SI=|D$URDKiZRaaB*iBfy^Y&&%y4r(06_of z>|p16Jpc98!JEZflu3&wel~9rWY0#Q&0|BsBj>j?__MTA&+vORi@O|FaF8q!D7J^U zs6s_p)gt0*@Y$qQEqt>bOK6p3TK)cxr1*{3QUI6w;ZjrHx+aM4^{lzB7QBBLti$&m zffoJecSZ%2HCesHAkp;^jfe`eb4^*Cv1W#f=Az1Yvo*|V zzD;&|WMrYu^mcL&4p9$hR;(zpy=eJ-1F|uBYWR}K>g;GojJs<2>#El?ShyX1-o$+O zlPUFO)1TsV@p{oU@s%P7)Y^&~eJ6>0xP&Xm%u>qYM!a4064<%WzRA7l1P|~UlYW_9 zLN6oNJlGC)M9#Qz%XycrOI3_r;^X2iBFspy8dTUmQqMw>OS-24gQC9swv8Esh143P zh_sg}G9w1A%%ekk<_7CxkFjgNQ~C;jR;3}fv-GK7ClurYf8Y4du^y^X=)AJu-pW_F zVOYEQ#;lGw%z)92)KGpIKj6AxgnQ_T-l`FPu`}?QnW_t)tbfk0ab!*)!W0sevEcug z%xzFiMuK=xS6jDa@0EO=YgR9F(gSBe7#GYLX%9y-L$4pNiRiQh7fi7@zSs)s=;SR{f!O|&%m~1|;p6!tj$$tc z3$pEK?+pWpE*A!ShlgSt=NljMuTE>u6TVeL%w zH&z~lQHo>EC}xb)D%dj?@bnp!ow0KAr-dE^znJ#OFso*_OktVoeZ3OWIUne`%G>pV zIRtXTk47KW(EK}wYSV5g^xSGuFcH`(twB+{yreb}js~PbPQ`ZYj=rc-s<#xw<)*_ztb6SQ9=jr()74c@M1uyd)F1M z9dBZw3SoAbN6j1rJaAncani%uw`sS$3k9w=`E$mxnJR6fZOA=Id1F@`s!7T!L)wo`CKP zXQbI-L7537Dw%0jaO`PzuvFF}94Qwx&TeYh@c~Rar(azs4o2mkLN)LvtWOBSDumU! zBEG#x$&2q&MFO)XL4TGFs(vmf4D$c8-ZFXWKJ6Pgt)&2R8_)@%;Wi2j)W&%zoqHh< zpkCV)j)Qa{tTF>PmqM`Z-$$u@>`05EPM~;=B8H?eOB{*nF?t?4-%Bk`7ZvSwpG~=- zBb!>H1}r$x{1UMFC@lDxdZa9UNyzCRVhkEeoU*I@mekJ@j&?N&=!2O@w?+C$ZO#7} sv#Z76vkx($5)te7U8h+?S0~#~J6g5VPf+p*@=q6VCV4mriL|r-09orRF8}}l literal 0 HcmV?d00001 diff --git a/DefaultPackage/floby3.png b/DefaultPackage/floby3.png new file mode 100644 index 0000000000000000000000000000000000000000..f72eeb56ecc216a75f6cba0a610c107ab89769b9 GIT binary patch literal 2813 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 lhc7){3{9>R%nR6PeKXh6($gd%y^`<(y) literal 0 HcmV?d00001 diff --git a/DefaultPackage/harrier1.png b/DefaultPackage/harrier1.png new file mode 100644 index 0000000000000000000000000000000000000000..12a95571aebd3c9f96c57ce34d5d20298f89fda9 GIT binary patch literal 8293 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 YhqcLz@zJzDd!>M!l#*n{Yombw1J56n-~a#s literal 0 HcmV?d00001 diff --git a/DefaultPackage/list.activegsxml b/DefaultPackage/list.activegsxml new file mode 100644 index 0000000..2747b69 --- /dev/null +++ b/DefaultPackage/list.activegsxml @@ -0,0 +1,361 @@ + + + + + ActiveGS - Best of FTA + + + + Flobynoid + 1987 + Second Sight Software + + + The game was fully programmed by entering each byte code directly onto the sectors using a disk editor (Moby Disk II): + years after, it is hard to imagine that it could even run but, at that time, we didn't know what an assembler was + (nor the difference between object and source code).
      + + Under the Second Sight Software Label, the was presented at the French Apple Expo in 1987, + and sent to major US publishing companies in the USA (Epyx, DataSoft, Electronics Art, ...). + It received very good feedback from those professionals, which impressed the teenagers we were.
      + + Unfortunately, the Apple II was fading away and publishing new titles did not make much sense + while the IIGS was just being launched : eventually, the game finished its life as a freeware for the pleasure of players all around the world! + ]]>
      + floby3.png + APPLE2 + flobynoid (2002).dsk.zip + floby1.png + floby2.png + floby3.png + floby_editor.png + 6 +
      + + + + Star Wizard + 1989 + Sergent Claude + + + 2GS + StarWizard (2002).fta + starwizard_3.png + starwizard_2.png + starwizard_4.png + starwizard_5.png + 5 + + + + + Nucleus + 1989 + FTA + The demo that has made FTA the famous beyond their Dijon & Aix-Les-Bains hideouts !

      +

      + It has evolved from a simple parametric-based animation (thanks to Arkanoid for the sprites!) to a full 3D-powered demo with modern graphics and fancy musics. + Even though there was a bug in the 3D calculation (the shapes should never have collapsed onto themselves), people loved the demo. +

      +

      + In less than 2 weeks, the first version spread quickly from Dijon to Cupertino, + where the Green Software Engineering team reviewed it. Unfortunately, due to a glitch in a low level drive command, it was incompatible with the upcoming ROM03 Motherboard which Apple was about to release. + Through their Switzerland office, Apple sent us a prototype of the ROM03 motherboard to make it work in time for the upcoming AppleFest in San Francisco, + where then VP Jean-Louis Gassée used it during his talk. +

      +

      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≤|goFt4 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 l`LYP-&uef>9*tG%#A + + + Best of + + + + Karateka + 1984 + Jordan Mechner + + thumb_karateka.png + APPLE2 + + karateka.dsk.zip + 6 + joyXScale:1200;joyYScale:1200 + speed:slow;border:black;background:black;font:white;driveEmulation:fast + + + + Prince of Persia + 1989 + Jordan Mechner + + thumb_pop.png + + pop_1.png + pop_2.png + pop_3.png + APPLE2 + pop.2mg.zip + 5 + joyXScale:1000;joyYScale:1200 + speed:normal;border:black;background:black;font:white;driveEmulation:fast + + + \ No newline at end of file diff --git a/DefaultPackage/bluehelmet_1.png b/DefaultPackage/bluehelmet_1.png new file mode 100644 index 0000000000000000000000000000000000000000..26aa66a2d00ae13e4c9dd7f91a41d41ac6906671 GIT binary patch literal 4737 zcmeHKX*kqx+rGz)HA~4-Vg~V-B}=wJwq%R!6OyIKk{C( zQi<$Rb|OPV1{2~P&-=U|-jDBx_uF%RxR3ijuKPI8^E!Xm{o$8jVP?p|Ccp*&;4n72 zXaxX7hraJ-fzsE?@$O6jpuob^MxTBJfC3Qa0MQQQoPjw7pecX|Ks(?96fSKn7m*7A zC7@dz{#k&BQ66gj+{9KKx}P_*g5YHQ;u=73^O2iDv?x6c_+oatz%paDPw3L1^Z z0tyz5r2`KrcsxEAP;zr~=^{ixArgu0fYRRH-UldseSK4aLOC=VUa&2GYyFv4CG#6_N)%pX-BYH zHXb2*N_=DKa!$uP|8eFmX`jN=>A+z5I*!V#S6ef3S@$J^bHL!hq6Bfp`3g$2Nrd;~ z)(zhJ%MJ$AqNM53tyV5!O{d3}SDnf>T_c6GedJHyso34A!asA8P$~>-Xtlc+?9f#j z>J4v;v2MH~r#v)*dE9v^BB(gJF8`F%rs1N|wnnB%Kd0tflZrVk6}&RcQ3mmlNET&2 zIMthRVV6L^xXIEvpLMz)a>A!n2ouNeQ^udSIig0LAE#vpaJUI?33yh7cc^n45YtW$ z=n*w*M|HfdzeB6wh^Py#ESoAH1U#7sJw7`uF1=j}I;XdMp+AR}{Q36tdWDCVz+t;m zkYpQ%6J-sMF*^nP^G6F*SKJfi)AcFu8<#rl5Vcjo1o1u7h*AKBLt)p}+w z+Wapcy9MYSnQ&t4#zfNHOgYy{#=PAH=Moo%R#uWh_9Jnh{7LBa5$XSKg+4;8E`{7A zBXQjS?(zRvkS9%vg&rn!Vw&=(g`O5K`x=+A6P=ZfiB=*;q$@B&_e>ty($%6N``y8;RD*fHMa_-= zoSD4+ed`Ut4tylEL?>g<-Lu4EjMRQZb!`%@A(sidDBJW~SG5NWb4IV2A{P`RqxK0& z0f61!m#EBw=%W3dBIw)J`v5Fpy`u^XqvpRV7`t;3!QY~PwvP5D zbyk*YujH`F+SzVgE_||YbN(wcbPvJyS4S&VjLA|z6t!^eMdCHxnn^29&h6R@!8I=| zS$+jK#|2LOn(;NBWZs^HY2I+MK3Sm_?30H z_ZL%l?qM|QLK!$E)}OIdJDgqg-4XK`US<{=-n7dvrQOu{r@2!uz!Z1(T9}phn z$a?zdhO#cKO`Xwt?7J6EpXfPj)N+h)cya%F`5Oygl+YcNOk61P9J zP`&6+fLtO~k`XrSv~#|do8;h?Gm%2nUE)y9pcCGTL=7NWBQaykM^v9X@l40iWMbQ0 zaK~uuvF&!ahctoM_Vc(x)-`38+E~#-q zYP7*)ofNmpWxzZ0wZ8eAMg1j(4GXg*hHwEbu8v#?sbrQc93F- zB1!jT&_y6}Dyox%m5rc(J4A%^{X2r;F5y!@F>vmu6f`PI;z|8V1P*L#S;}7KDE4*`tZOl=+mbJLt!si-t%1Pv+%hn&yBD6z$X% zS#v51#N~ax@xqCp32DhE76yBQGo7SuSIu)o=DF=0GrGz-eMc?t1KZ) zJIX=*KC)ZXv(8J!kgoK>kWHbF z7a)8(w5N<@(H3qwaK=M0s?Y@q>+xB=+LzZ-Sb&A0)kdkd)4|T1@89~?E|=<;l3)MSo%rZn z@CiRba!1f_Z7+?~6%|y!4?wQ8D4&|huiVbmpbjnlervaQ{IF^xaPP26qb6&YTe(_{ z?)F4fj*#n03^K5lYa}_v8@IErX--*TAEIK=z9BOlno{CA zhN9T#``wAe)Z1A+$nkW``<$|P$y|_&^aU9M_xdi#*+?!xq2Cg|&TMGmKXSnWn(cko z_>_P@oAo?XUio&W15r4Kc^bnUx$aBk)ctYhK?!qmAj^HlrDLu*lkj|@^&CHVDUB2F zBjZtIw>qLUr@ALLxhCXIQ{L1HB*1Y5&F$K&{lQrD>U`MTo$cM-zw0NsJ-SbKAq7V+ zu90Gn864xEnyF4%VEB%vy51y?FlCunMN}>S1*1zJnAh$iUo>s5-}Qq#?IV2^2WI?W zZz=?n6zA7z3A&tw)5pbxRLO5WTy9%0i!x6y_Il)uTq~H&rTrLVUNZu!Zj*kID@lWL zjcKm_ap&P&>=s{Su8545BZY%ipS)(e;DXSxlb^4z*p_H3_&UQJ4MNT`Khul=DZ!P~ zuH&9rB6!1`4*6V8s^H{{yr-p%o%J`?^*KqWXVpJd6e&KwIh0np%{Vb@q*1B9Fm2_I zLomFo{t!6<+tQLO6Efox+-Tr`xH(WR3o7`$26cTtwq#%LiAky1;3&Fd75CUw{h%L(@U^ARbDsp9_A+Kqx)}h) z0xcPT*}n2izC~kBYFTAH{PE+g1ffmyQQt$M`4g`MMBXgRtj=2CeP0>`gjJT8pGlqy z(v2RK=B%tJfA1=%WACWgUpCHX%jkDxb0Dy2Fy~v)tlQU3OtDxzouTl=qS;C@a>x}e z)ATuU`D!L$gtYLTe23bclw~_{YxD)wPddq47bKm9rwDxG8~7$GT{*O2N6(9=z+spt z9WJ63sw=|XPp zI#LfV`L0QWA;`bfkSv-c<*Ozo_;mFxtXN&RJ5|@3!m^%74ozw_vNd6>Y+#Ud_vJ;+ zEmYuZW!!#b;ylEp-~UTIb0t}a{#E*$yCL@{_*I}C4PEao9h`aA7EO~(D!+KeN_DE07i$LUBI%ET)iJ?io0G)HB{sTO(*o{nz3^>Yu@j;fK|+H#V{jP!pW>?o@Y{_fK%Jt=Rr zd&vnql*4EHsMgV2MM={|Lqh)%F0r2;tCyN|@2~hI`Ve$R7Vzu&*V>w5ot??29Uf6w`T&VBCB_j8|fzOg38dhDzMtN;LZ z1AU!q06@@mzx4LKe_uNe!|YvM4}9(G8D6k!Tn|!_WKWp@ZNa3kpPWEB4q$tMn(ob2pQ1GWO4(bH8eDI16p@?_c)-@4i`kD+h1$@Z}VRU z{(}r~pxocmr-$A#xT*{7J1PW2a;|tI;sM}zZlI%y4NP55B}GiC9&agw2h?UV>rUlc zZi&9v_;OwN+ra_eFZ7IO;v3H)ifLVN0Bqh!{zb5=0b6D5q?lx$__fL2*eowj7~k5b!0=0otv8tEeRPeJ4!5o@G(2O*XWH*GI$iyWH*F@ag|nM3KeA8 z!GJ(p7Hm&|_IT7i4{3g?Cq$K5y*!du{pDx1dSr{haFTeE94cC(r>IhvF==mpK~j$K zPU$ZSmp`8ecg1vpkK>1~?Xb`7N`0~IfP2%CuyI_ww(R0NQAGqtpDw;PMz+h6SWtaW zOZ90=ywlQ4|Acw%6CX*V>zwGCx_O;jK{D5(V-FO(E|%YiNL#pJH=ks&-WTN3{J}~qQ&L^>d2=J4AIzJlUnfif zhsdHR*z6Ccne~E*yRWY@PfpiaWJ2XsUKec?+8P-~fVAAP4vOtauy-|7o-+V;$6sTj zj%zSa=}PNU`+(`6VO>{O0p(^5LsTf|?t*yGE5R@D_m~eBvWKte2k?wO_DNr=_;pd- zl>bJiJVnQa@K@d!K&@@`F;Z_C;E8&CQcg`D!(h^C{7J!?@Rch^dO|>+Vh|h0bZ@21 z1+6as9tqh|Ff5ndS(wwKb!5+h9mG>NhveLrZ{ua)0?N@9zj)~hqAnqcyD%TlBtS)!hSO!i%f5oK(xg)r$FlRh@D-glUB>+&a}#>xOvt~U@*c)> zBOJ8;jmF>n8{O~^di)=B{ONrgSi_&jZ}Xi`lpt(!IH)r}9{MbMEN%6IgWCnyo`v(* zRi8jQ-UtJl$}gRnp#!}tm*lLk=ljpTLmHJm*K86cC1PL`YKHK*=FbytJ~|Gck&msT zb0<4B1gPW&^M*t@L^8~XE5hx14z`KUbB*~4yY*|8R7})TcBVw+l0+8Xzv4}(rWY( zT>VouhF7+{ImV{^`HdyXQquQ_O$)wz)D7z~W~VLKG#!5#htZ01CAP$9tHnl7D4kAM z%i3*@eN?u4`L38`XkuKOiQ=L_wr~~7KuWz+v+_xxPrtIL2=lvRsfHxeUIg;1ZYR?- zmN(Gb8$NM;xpqu&J%ikq#^%>5?s)o_aA}%aKQj-9<0b^c^~77(&5dF$5NU?tI>pIX zPFF|f70D?WFzTn1-rkWK6WlPI!sUp!s$k#nGY{+&%gx+_he*+K9a-$!JINWMc`0TI z-Kk%rxmmk3gkSX!bTUq!ig1bUz91#kp7o+UAXMz&_WW9uhOGoV@AdFGdu$@i?J|p~ zv|F25_5web-ss|y(GsJ(IRK@G#RfHE7IMbDRG-NpKiuC)C>I>=3y(OdxA-ud7<}N#~*Tu8vKAGP$c6!54FRO&hQ;wMZ&dM@n3H(5; zSPP-veH;9n0&=inY=xY@dD^fs5{C)3`;B7X0SCjePkR%P=%ZVJ6Y$S3|^PPlRo5|5``lRLy>l>{6o7OCdT@OnfTvoR?f%N<#n+DHdCkY_3JOm4dtNn?_t7?W^+HU?$GVwha) z7&j>Y!M0WRq;7?F!+>x!X!5o-^P9dD6gmJ_7Z^}~;&CZ-j4-wj`MxRk7$KMUG(4DR z?4@nCLs+lH#0WJ-9i7X7q0H$QJgukt`mRaJt!b>7Z_L7adSgQstgvyok6&v?KrQ-Q zw9{Rp;AD^l!G~GJoC|0vF0ck~)3O~L%oKphB`-r-HPB*i&zcl7Qao8m!4WE(x3Rzh zL%YT?t#lUo=kjXjZ~ROud~D2^cDDCI^4%|4#i*j{Ex#l|ynq6f;C*aGB7D0^DTuIj zHBNVv_0SI>ctb+5Nvlk>FPMW{&u(>6xo@4u@qVPA>?tA4(PxTI1-gbFS&=Wg$B;m# z?5)Lv9SuFgY7jN;mo8B2iy{5l=QINZ!3kse$#k5 z3}C8)F?G>%Og$lZ`PV_~f{gl2e~o5-=`K##r5SfK49VYyxZkOZc7<{ttkAL#O2Fpi zOfEkImKzLw2I+;o9;`TjkhSp}QXeqlxXq>6H4zhE^i5p@%^v(}@tqC(iZevbg-`-U zKKYGjsGXzGG=0Vnkcn?;5V@^&N?~E)+~B>25wAg_d510qH54#hS$3LdM8Nr8nR1p& zreE!9#O-z7l9<`z@pl&S>8g><;~By`e2%0N+Fsc5c`rU!RlV_VR!ApIr(-3@ee;{> zDVSKL;L6E8FZUI}rWakke%8%xL)ZO=SQbgPH7pNNPyh5Uv6W#Ib{dyi(Y5q%>{p&r zkzttPchXtPSMdmRYw>U`JDQ5l>imOwG3cUOv~Wt3uc8Rl(miz*UQO2Jd?{#Sng#ZJap{^VJS z9tBP$kh|FBM#L)B3XN^{7FAA;dQ^Up(My9dtwmcEuJDut+|ldPe6O}*5^ZEe>;cu6 z{nzBM{ZeLPmU7r}xh|Pgbo5Ea(ne^_=`qeOp%>)VlK7crp7_l~^Zht-qojtDbi*LR z(Ca+#DVf0WvDJ)@D+jDa;C8q7QaVEs+^$l3aU~)*xQyv!$iI zL5xMnst})jN5Yja=a_sNMx1;*euvK4)qTS4-^?EMf`wmK;dPa2`OO!x#1|y4|DBvv z>*?%aQ}YDsQ_CTS2`ZX_VS?Wy7^;v2NyD-BU=)w5rH^>-WWr3<_<6Kufn|)XyPwWd zs1zO+Nf9L!JGN%7#~|z93>;?(2j7IC*6P~eoqs*m^Sg6u34FUQ(oubRUe)#$#i;+( zAD2q1=y6C@9Hl;YfQ`Xve*9UtuxAwx8%vLJq#!6J%RioUma@a^u3fuiD{Q%~tXp$0 z#|{x>+|1vx`sF;UI&l{1-waR5npds%5=>EpFV_6LkyN@4MG}+aG|*36d%u;Ae=iR( z`cp=peqZ*K*J`yE3cQAB?TvRCv9{l@O*~e5hLAHuN>LuUlH)9@i<|YSXg7hoBUAk^ zXlzQ0PbJK>o_ABy3SShl^Yb8v7MhnTpUqkPzH4{lOrVAnj`ur>9077vpJ&cVES9lY z67ai~Zg*Dj}m7P?sC1}g~-zIkAdn{ZP6?EbJ_hH;o`=coM; zrf3b$y##~I^)HPI^IVGUtTJv*=l=z)FHmfmRX$k|xe)#VW-@@~euuE%%jRLgz7H_G z;fg(GA{_VG>M9Zmb15E$Oj456_z#6(irDXZr*g67qh)cCV~a0XWM~ZOS=+`wP$<_4 zhqi=L+?7QrrHy@$W(YO#cE*Yy5n(+szN&P7c&2*DXeVN4@4~c6lMP2y)Uch=jeN#% zF8=aR%ma&581v+*G@*g2an@|hT^V1eZ5dKTp$oqy0eVIcU-; zbevv+*^?6cRC)q>xlf#y7KtjHs-BON#!pDW@(o+U1ArKB^%=Z$o8@4rV~=MX`^ukJ zlKh@HXT&KaIdujIs}m08@U<-|F(T`$u5%B`*y=f>y>EdivU1*+5Ofq}RpA6zIpm4h z%Vs>AJY=7%LGcT`Qz%wb!?E+?5kUc|9a=x47V~qRvF+nkS6Qpm<(MYA+LmB%Vm$UP z&(7cRO>ouyrfMB@xvGCtC}56$;2i5)ZrdZ(=QgEHQ|~WF`*RF+rJOP#I2~%PJZ%7a i(5XuoK<`5T0-ntCYxk+yO2gq#v4O6!PLbA)@P7lAhh8TD literal 0 HcmV?d00001 diff --git a/DefaultPackage/bouncinferno_1.png b/DefaultPackage/bouncinferno_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d2509612d0689e1689fc34f7f4a056eb78058817 GIT binary patch literal 9265 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 Z=xq*YlArO(|6dn}jD(_i%}*oH{{UP*WB>pF literal 0 HcmV?d00001 diff --git a/DefaultPackage/bouncinferno_2.png b/DefaultPackage/bouncinferno_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f3f234d1f486d8d953d96446c63702b09e96ec8d GIT binary patch literal 1714 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoPjD~;$#u6*%w%9-W(e>JaRqYi?d{{^}%W zQZeW4?e3!41_BO&jdwr%ua99q*bv6_R*6OFyHDC9cA*0I8C!hkf-)6;P;kIMGkktQ z+866(75m#w_bj>JEEIS3y(Z`Xso%CV9cA9eAKmg4NP0)?yI;)3cYJ=$tJl&Ei*9Dc z+_qCse0BCyPlLb4j9c%QbAGXw+3>IB&=+A z{{8h6g1x2jxxZUlW?e1Ga#)|B%W3+zj=8He^KSI()f*PvPqI%?KDLDY%k>+62f2j0 z#5lbJbR4Q3A~$SmQ92rT@D8K4zQl`gtAw+hsU3ft4%QuKdMCao^N`1WV`jHQCz?!k z4n^$W+w^Y-52G;GJ^jQz^X(Q?E-#+;iYxESZN5pLl?x)5ZgS0dr!JksH6!SQ9jE#4 zx#9smv7($JdtNJ@x#|B|a)<1OS*{XZ6K?7M36K9~TP?jr=g?_kxmW4G?zSo?n?K*( zVk38y^-rX7`?(((R`vV1Pb?1nTHNTZ^|$5e`3Y{%&2B06yIw!Pjb-`9n@n+G0dk$& z=4W#LvOvQKKR2@eT%-FO=3Fp3<@}=)zvzb z9xP0G*3in$#&_V#`u%P3@3%h;nSF<`Ta4$;zKyIU&Ih)yOSE6Na%aMmcypb^5Cs%vKWm{dRQItd+Mc6Os-V z#@uDx&i!gxkp98Kh<6P?rE_mlt*N>THnWyY{oXBp<@^`jipT?N5+}8C z&sw(2B4MAJR->}vx8h)@vp28F8|+|tyE&8j+3)@U$smcRcGI$%OXSdce7UHx3vIVCg!02tt^2LJ#7 literal 0 HcmV?d00001 diff --git a/DefaultPackage/bouncinferno_3.png b/DefaultPackage/bouncinferno_3.png new file mode 100644 index 0000000000000000000000000000000000000000..979438ace01a1461891346e1f4c7600ecc4aabad GIT binary patch literal 4713 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 Z5$A8)E${lr*YE#@(2#Iq!~PR_e*#(ZXGZ`4 literal 0 HcmV?d00001 diff --git a/DefaultPackage/bouncinferno_5.png b/DefaultPackage/bouncinferno_5.png new file mode 100644 index 0000000000000000000000000000000000000000..8b765ba8e71fafc669c3c6f00f40b7f00151d07a GIT binary patch literal 2306 zcmeHH?N<|b79JHefGBC8P^bh$3!>8CVhh;9hysxwOzR6pL5-}HlogB`VMG&V(<;y+ zhL*N50v*?MO<`H0A_Ryy1-s%)AQrHo65dUCCy)>_Av4o>_D|@Se(3#h?{j~@=bm%V zbMLude#~aMI(s_<0N@(GBW5=MEZJ(u4=Bs*zWVtCDF7@3K2F#hYfmADN|i=dR#pN) zWlRhSL8MwuG71=407z4(NkbW0D6IgZs#S?3N!s}_uSx)^RH|YCBm|IBfK&mb79gkX zgv!LkLIX)0)+RZU!E`5C9x2 z<71-to++CuD?0U`^6o;(nr8JQp zyLCA_**|Eat$#?_yOOcgE^{r{DnIkcQW2cN%A^|>UJ|}>e8T(T(<8?20#D20Zg{mU z0xlXEzlk0D#l_at&zYKj)GX&X33=Ht>U^%MTs~^UZ8j6=+&$ZKWV)(_ZcCikb4{1% zv4`Js_e=-VSbf+pCXNeMqfx?TCgoyW>hCEii=nU(o!hJ4mcsx}8`zCew)- zH~vewv?*6p*~qFN0&av^1<9k}hk(ZD$>z{Yz->TjGKyM1#S~{m^RFj}W?AFt(fsq+ z<{@Sf+-VA&Ejl)Ls2B`0wKVhzO+?|kp9h3`vp(vhL8o)ZZSkB8qGd_OF+9NHBG;H% zlV~gEADNfEh8ZmU^%Xk)6S=ZkU)Eed)u{}wiw&G@Ezx%-6RW@lxl#8<7?u*eoZp#2 zR9Y7|PAp^*1+?~Irl41%=PNIzPy<1RB-yeMG^AfR9M(9F!FW=`|qde-HWX z*CrOm1>@L;Vsssxsbk(e(b7~qfjq_~+^CmxtoH|BT4#m?)9su@c+h+mxLhBI4ffC$KHLB zk`6dRx2Fdg8i@#O>u+S2{Km_}+|8a>cBaD*jX^dGbF)t}FNdQm%C$*8KyG0!h~XA4 zi9)#6$F;e1JyUa8!XT4M7{ za@j#M({&vcz3|YJu3hb#`%3f0x;F6dMy^dOLC5hx@yT0wP-@LBk*oRod7DU zBxEOU{z7$mkItW6n%>N^)QC?u<*M`jWFhrm_fw_dKadBHKiRu1$EtbmTdUe}0Ha~A zC5dTXYd=3l&WbrYn)`R4>}EMpI_xnQ7J8l$?vZ2bK1>ED6&oG$81;qN20XLy)5z?D zLUkdrB?4Y}w^*THZ$_N`F4RyS;r(cCQFR3OdC%S^a^&sH0Z-`76{pEe{OKf`QNz@4e;nnK$mvvVB#?i^1ZLyz`05z%Pg8Hev@lbT2Y@eR!~ zMeL^S`zgzN3Uu0e)goMG)z}9$cJiu0?`D~wkTm8=7Z)}eSO@MU5bq6+DiS7c_rkX+ ze_LQW{Q4^1XC(nQbK|M*);Jx-&-RRJ^4_dC?fXvig=9HKgi=rYd^@{`$X*gd?pnDX zuDXKeS8){4_thIt89a5L6<0v6^|tTQ%kxc0(%|GJm1!*;xcphWAO8+`qw9_Y-OgR4 zJ@hBEl|w}1%bgY9HxH*A9S{!~Mj|^#&}byw{Pl|&Z-tF?3HWEV0$<_VT6gwZcKxeE O4#dZ@W2(0u{`_~TGgU~y&hL5Ocb++Ol6<_~ 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 literal 0 HcmV?d00001 diff --git a/DefaultPackage/delta_1.png b/DefaultPackage/delta_1.png new file mode 100644 index 0000000000000000000000000000000000000000..56a48e1331ea6e80686ba65abb53e3b1a71baeb4 GIT binary patch literal 1619 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoPjD~;$#u6*%w%9-W(e>JaRqYi?d{{^Q7{?;BOwF|E@&MC`jfrH)7O>#5~nP`y1<8g`ECXVrr(|}jv*Cu z-rjy&v{*r;A<KV+%kE~#dWF|{4Tle zp5|cfDg8D|=&hRXmSoQ@vrR7csb0*x^yI$#hL{h`LVDdV8*Xt}oQRf*km4xMujGJ3IBBt@DY*k>i?&Xen;e23H zklbQc&KsE#2a;r&o=tsxL&xKQ-(se)Es6<#zEYEcQk@NR*;vc z{(Ak7+#;6xlW)uK)E2MNT~sdgy-qvl(K4R{6})-Vf9$>W_;j|~!%y{j-xEHb&GUc% z?YaNI)4ErGcm7%Z`?}ZJhq3j){qEe}{pR1E2iJ~qIx3eFLaX%B+*X{Wrwr^|0L+W%Fw;O)PIS&oH;yxbpZ- r+Zp1=cKg0xp!MKEDbTA0v;I52n2^0MSQ%JtFfe$!`njxgN@xNA`n`7L literal 0 HcmV?d00001 diff --git a/DefaultPackage/delta_2.png b/DefaultPackage/delta_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5abd10d8c62011a3a2f072d66a9c2af61cd623ed GIT binary patch literal 3124 zcmeHJ`9IWq7yrsK3}tz&g(1l{j3Tm*L{b>pmn>N#+hm(;S*H7VkVbZ{%phIKGMd6z zM`WEclBK9dvM)21xMmD4-5;LU^A|k7+|Lj1*E#2N-sf|cA3i75+RE%W_#_wrfaB&@ zO>6*w&FE0><7Pj^+KIkG0AL5KE$mDWRRDkk01^Q306+!!`2h$7fWZJb96%rd4-Wu| z1ds_pLIRMH0c79+9PY>wj|cE1fJ6c)6o5hps8oPXhrwWQegFYE1OJ~6IF#U?AHEEVFt;=X4f9Cx zD+sJ1ArAq7`-{2BCA+96tHr#r6S_jli&_eAFNO+nTZ&2{>pxssrX3t4>5294oK~

      The rest is history ;)

      + +

      + Eventually, Nucleus was later customized to serve as an advertisment for the SPIT company (unfortunately, no copy could be retrieved) +

      + ]]> + nucleus_2.png + nucleus.png + nucleus_2.png + nucleus_c.png + nucleus_t.png + 2GSNUCLEUS.FTA + 5 + + + + Photonix II + 1990 + FTA + + One of the successes of the first version of Nucleus was its very fast loading routines (even though most of the users + only know the ROM03 version which does not include them!) + Those fast routines came originally from SpeedySmith, a very fast disk copier but with limited features and raw (not to say crude) interface. +

      +

      + After having written Nucleus during the summer, the FTA team gathered again the next month (just before going back to college) to create a new program that would be a mix between + Speedysmith (for the copying features) and Nucleus (for the fancy graphics) : this is how Photonix started! +

      +

      + Thanks to the speed of the copy, its large set of features (it was often used by Mac users to quickly format disks for example), and its appealing interface, it became + a very successful shareware program, and we were very pleased to receive (snail) mails from people around the world from persons liking our work and asking us to "keep up the good work" : + : it was then that we learnt how popular that expression was!
      + A commercial version of Photonix was later developed (Photonix II) and sold by Toolbox, before finishing its life as an abandonware. +

      +

      + 15 years later, Photonix was recently brought to life as a prior-artifact in an anti-virus + patent infrigment lawsuit + : good programs never die! +

      + ]]>
      + photonix_2.png + photonix_1.png + photonix_2.png + 2GS + PHOTONIX.FTA + 5 +
      + + + Mini Prix + 1990 + FTA + A very realistic racing game simulation that did not want to compromise the fluidity of the control for the graphic immersion of the player ! + The game could easily win the-smallest-rendering-screen-ever-being-used-in-a-racing-game award, but nevertheless, the game was fun to play: easy to learn, hard to master! + miniprix_2.png + 2GS + MINIPRIX.FTA + miniprix_1.png + miniprix_2.png + miniprix_3.png + 5 + + + + Blue Helmet + 1990 + FTA + + + Even though Blue Helmet was far from being finished, it provided some pretty cool racing experience at the decent frame rate. + ]]> + + bluehelmet_1.png + 2GS + BLUE_HELMET.FTA + bluehelmet_1.png + bluehelmet_2.png + 5 + + + + + Space Harrier Demo + 1990 + FTA + + This project emerged after having seen the Atari ST version that was really appealing, and we wanted to build something similar to bring that hi-speed spirit onto the IIGS. + Actually, the project started with Atari ST development in order to extract (not to say rip) all the sprites from the computer memory while the game was running, + and then to transfer the files back to the IIGS. Exchanging information between computers seems so easy today, but at that time, it has required to build a custom + NULL Modem cable, and find communication software on both machines that would implement the ZModem protocol in a similar way: needless to say that the whole process took several weeks!
      + With those nice looking assets available, it encouraged us to develop some great graphic routines that would nicely use them.
      + The result is one of our favorite productions, and even now, the version easily matches the official Sega version on iPhone (ok, their version is based on the Megadrive port) + ]]>
      + harrier1.png + 2GS + SPACE_HARRIER.FTA + harrier1.png + harrier_1.png + harrier_2.png + harrier_5.png + 5 +
      + + + Modulae + 1990 + FTA + Quite often,a demo starts from a set of small and independent routines developed without any idea on where they could be used. But at a certain point, and that's the magic + of software development, everything naturally fits together : alchemy in action!

      +

      This is how Moduale was created by reuniting all those routines into a nice package : its 3D content was outstanding at that time, and + it was the most polished program we ever produced.

      + ]]>
      + modulae_4.png + 2GS + MODULAE.FTA + modulae_1.png + modulae_10.png + modulae_11.png + modulae_2.png + modulae_3.png + modulae_4.png + modulae_5.png + modulae_6.png + modulae_7.png + modulae_8.png + modulae_9.png + 5 +
      + + + + XMAS Demo + 1990 + FTA/MRZ + After the success of our early programs, we kept on experimenting new techniques to go beyond what we had already done : new options were made possible by having a finer + control over the Apple IIGS hardware (pedal to the metal!), but on the other hand, it meant reprogramming almost every aspect of the computer. In retrospect, a lot of hard work was spent on invisible stuff, but + altogether, it is that continuous effort on every front that gives such a polished result. They were told it was impossible, so they did it. +

      +

      This is how the XMas demo was built, even though the technical exploits slightly outgrow the demo content : it was the first demo with music-enabled loading routines, + overscan scrolls, and more important entirely coded in Geneva!

      + ]]>
      + + xmas_2.png + 2GS + XMASDEMO.FTA + xmas_1.png + xmas_2.png + xmas_3.png + xmas_4.png + xmas_5.png + xmas_6.png + xmas_7.png + xmas_8.png + 5 +
      + + + + + + Oil Landers + 1991 + FTA + A Stellar7 tribute! + 2GS + Oil_Landers.fta + oillanders_1.png + oillanders_1.png + oillanders_2.png + oillanders_3.png + oillanders_4.png + oillanders_5.png + 5 + + + + Boucin'Ferno + 1991 + FTA + Marble madness look alike! + bouncinferno_4.png + 2GS + BOUNCIN_FERNO.FTA + bouncinferno_1.png + bouncinferno_2.png + bouncinferno_3.png + bouncinferno_4.png + bouncinferno_5.png + bouncinferno_6.png + bouncinferno_7.png + 5 + + + + Delta Demo + 1991 + FTA + + The final demo from the FTA

      +

      Even if it looks like a simple demo (as there's just one part), the Delta Demo contained some highly tuned code.
      + * First, for the first time on the IIGS, a MOD based music (thanks Moby!) that would go beyond the 64KB limit of the Ensoniq. + Those routines were later exposed in the NoiseTracker suite
      + *Second, a multi-threading simulator (!) : all the display was performed during the VBL interrupt, while the main processor + was creating the code to display the next object. Once the code was ready, then it was being used by the VBL interrupt, while the main processor works off the next object. + Quite fancy at that time, and this is what has allowed us to create 3D wireframe based real-time (or so) animation at 50hz per second on a 2.8Mhz processor! +

      +

      After having delivered so many products in 2 years, it was time for the team to move onto something else, but this version was a nice goodbye gift. +

      For the record, it was called the Delta demo to honour an Amiga Demo Maker who used to create everything himself : code, art & music! + ]]> + + delta_3.png + 2GS + DELTA.FTA + delta_1.png + delta_2.png + delta_3.png + delta_4.png + delta_5.png + delta_6.png + delta_7.png + 5 + + + + + \ No newline at end of file diff --git a/DefaultPackage/list.xsl b/DefaultPackage/list.xsl new file mode 100644 index 0000000..d7330b9 --- /dev/null +++ b/DefaultPackage/list.xsl @@ -0,0 +1,11 @@ + + + +

      Title

      + +
    1. + +
    2. +
      + + \ No newline at end of file diff --git a/DefaultPackage/miniprix_1.png b/DefaultPackage/miniprix_1.png new file mode 100644 index 0000000000000000000000000000000000000000..51833a2370bdae1dab4f3003bfd4b9b9e64905b8 GIT binary patch literal 3905 zcmeHK_fr$x(mqM(Aqh$m5JE48-b9dIqzFdo0!kC2NR=W&z<|OlO`0GjB&Z;W5EIE&P(fb>j>eKfz@}k7pcAz840KgZF^t3I4h%3bCv|Mo({a0RD&R>p> z#*)-IsJuogcik|o+CtSQS=@)6e@XNY2G}$MVhyqrLacp!1`tV)ANH`(6x0O5Ay2M_ zL_!W%hR;BK=7+_YF8i;T(Fd9FP8bCc#QGs5i+?~it@zX1jlLFUNaxFC4N|3S_}LpW zi1)WPvgoeyyw3|Lr1h4WdX^>;81n3$#Ypo_Pn6x_Lem!e@(nMTp82%L`4Yt;LPp0Wb<8$NND@V6kb^o zgIb5F{ckjvhfn0w=h#n}G{DDTd7C-C(x^1@EpIQfO2o+u{*@D2*p4`!^Ot$}6lT62 z@10kUIMwKKH}@T{l1TTsI>^)h;c^2E7ssYdpR-Zx^x%?YxfL~UcDBAOOV~quSjdhN z^Rb)n_SWXa#|w7J7?N<6l<(mxqyTH>Z=pk8F?t_Fr>++YS4KsJRXZioi~AA6HW5kv z!NKcox^}PjJ)Sd$;1(a2gheIq3~h4<3k!Jv9rOdQr!l=vlQZL1S3R$V;^a55Oz zgCUN$NUEbOBMZrGDT(Co%<3w5`%mSJhpRz4m-+3jF0S$GHA>jWzUJx#39)ZgiEhuY zszsW1b(Wbd70^n0o_z@^>Q}&BP!6dre@{^*IfxLtC$Rn+ct4Ghr);gP{1-(I1ZQk> zwhc4SS`)SY=<#5d{Ao7+1v$}z$gxH{FSU3}81FZ-tjB80Nj~6uOmoUwY!sSSBInXJ zBO+>NCd&AuJ?alTfeXtCyy0QNSBzIU3D$te|I(~_Kv*thH|IBFgYnleUj97P4M6!) z_Fzd#xngy`dQc8vAW)geqsTLt_9rGG z!L4V(ynt5Q=I0k#mP_6oV4`wxhLEUWT^lBGw2REkTmD}(iNmxROJqQMO7 zhE>~Ag<|}-3TNE)-!-?}y6fbVD1#Zub&R=~XU$y7A^dk-+aP-N>E6E4>5;M5djY)E zX54bJW3wI>sQc)liJ?7r^Ew>frbPJAp;>SZeBukF``SIePwy;O`%K-k8Ld&3IlDjSAoiD(Xu%=5K z?%7%lTY=6`dUA$;SPh+K5Jq>m?%)~ddvALGa0S1)aUVU{i5~(XI=_Emcw7#kgvrIs zJdReIKu?*h;7~LJrA3}q_LrLDViw@AZkGU2aNOD9Nb+bhqvsv=?kIOTe|`7!@s*># zOak`wISPiR?B8=XdD=poRxWd`X|^2r#TxZVFS4f!*_?3vG>{LiyN?__H~bT58w&WT zfS`j|fa_x`$GJKdb2hVEO^)JE&%IP4R0s0%tE!!5K7E0|a>pN?ZujG0XyjxwL~+PL zc>6DdaIu?M2B8ovj4gv`zUO|FZ275{WFJ2*Fz;@vn~XJBuuR9Yw_fLVRCzdL)*zMK zD2Af(wIrthE*W=Q+yZ5+dkC;3+;{Vy!4=(v>Bf=+s}R~J7jsp#R6niJ&oj%L`#;7= z39jD|-NC7MEMw{0I9v@J1>e<6J@hurwS(9=A?w7FUS5d^NrW=!1})Wyzm4ta#7MGG z;|BucweIgDgkBIBroilyVh#j9T_D!t@-DFGg>7xit|2|ikQBy|+?rfRS;XbbVJ zOQbSvF8;O8?z!mWJ^~sW#87o3$Mqjzs;XriU`Xw2vSyX?iKw)#6vd53Q$a*(A+rN;xu}xln3jy@snxLfkiHtQs^L`e-?$bnDhL!O_aN`Ty+os9?H?EGhh%$19q-}P5_ zV$_7hH=PzLS*#YZ*9ZwQf$g+~4gva8PG>^WxM#kOXHM|Z$ek2(}+SBc58IVN!^mHho#ykfuclN$8 zl;f=o_~p0k8DyM)dVN>^?x#+WR5TBCYV{+elHgfiRB3%K>|0ssZcMSq2_xFdRvwO^0v#1VZSQ%gc$dpZ`*2^LiM{NKMM-BM?G6! z9CgMZMtn{cA`+~?A^hKARFr2myq{!XapcHcHRp929ln4x4L%x8V`(`~v>j&Cofuom zY+AZ7Ati0syajEf(42i!QPm0A@1NX*JO4@n%`#Wolu>Y*zSMEwzafebQ0+eSHlU*+ z*q=X2^W+3GS6^Zsdk*|MOA8+(O9lP8Uc2s}PX>s#FP48Ap;%?O?KT}dt866Ayo_>~p7bFX6Z#Kps@2p%8qib-jU5Hx!~sdnX_ zg+<6}<=mAkEAK`~2Kp6qUjHQM)pV>ypUwF3hP_IzOLki5@mw8ybAT>gefvc=)#gQe z(%DG1YE*6xgWvg;;zd%Xi?kRR!zvG#>MHv~*B~elUe-r!&0GgUvWABbo!X z8$_&~)>R(dXI?*h*W2npc5sw>XcRi7dGLjwiZb^Dnpmt$>~8P<-Gy5oSNL|Zn(FaV pi@HY(`T3>#>IYL@+Q)eQ{u7&tQ$Huu8UOrmjPx(*QFI(5{sm+a(;ol; literal 0 HcmV?d00001 diff --git a/DefaultPackage/miniprix_2.png b/DefaultPackage/miniprix_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7be732503a597033e42fb3946624853c484cc492 GIT binary patch literal 3075 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 literal 0 HcmV?d00001 diff --git a/DefaultPackage/modulae_10.png b/DefaultPackage/modulae_10.png new file mode 100644 index 0000000000000000000000000000000000000000..9d1df6bd67feb54b4584caab59c834c5d060cf90 GIT binary patch literal 4077 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 literal 0 HcmV?d00001 diff --git a/DefaultPackage/modulae_11.png b/DefaultPackage/modulae_11.png new file mode 100644 index 0000000000000000000000000000000000000000..fa71c9fa64b490b1d90ca7a22f15ad6e9f308243 GIT binary patch literal 4201 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 W{*%vI&$IqnZ)jiBS1(ty3;j131+QQL literal 0 HcmV?d00001 diff --git a/DefaultPackage/modulae_3.png b/DefaultPackage/modulae_3.png new file mode 100644 index 0000000000000000000000000000000000000000..77b6923ce8834fc8919eecca71e905b78674a085 GIT binary patch literal 4659 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 literal 0 HcmV?d00001 diff --git a/DefaultPackage/modulae_4.png b/DefaultPackage/modulae_4.png new file mode 100644 index 0000000000000000000000000000000000000000..da81d2289cee4626d6e350ddb56afd940c46602e GIT binary patch literal 5446 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 vSbo68shdx<+x3y2bD9%E-IYShjT}I{ZD*yn% znVXr|0stXf`%XT1%U6tcW&r>L8%ulBtq>RiFbRx|jHp!VRR9tb6Dun#`vK_h?_U65 zVej6B1+cJX|6Tu8;QyThQdH^St)j5O=2oWI*Zc~?DiSE~7YqPGCFUl^_F*~mxpAi% zs@qNHVp)3Po139W!@e5a6mS@~&`3~M$#5`vyfF5-)332>M)>m3b)Im^Km*>&N3?8{9P`gNWSwtr?>bK94*GVCF;auUkqo z}*tPwat*br*|u`EmP4DZucOxo5w*6{-ZZ!Yu9W8sL7 ztQsKC)RYa@Werz4_ze~!e~g<>PTugU(1s2%%RF@cAL*E zFcnSemgMb_tJ6_F(Vc-`h=^K}3M|!KabJohLyNo$GSdbslsRHVH*}7b>u*4#Sgc3u z^Uc?bYsAFbD&)*ZG{nICMX0s(ffvG|JHx=UY}$t_a|0V1&-W?nOez> z_Np>uXWOA~2_eNPy|w)QF1HDb(;rAhK86KQ$!Zr{t55iEifOxl=CLRBdShwu>Xd)i z=TSiD5oK7;@M6x!ltZK1NZPQc+xdR`o!0~h?rm&rT(e&hE%nBYcCzXN76<62K_Ko$dWp7>vUO}P(3AEj)Io5X!^Duqo zmpGoi0-<%=T6-AbMZ8jO=*l&L(YY(Vloq?S@ z9SI4diE%na3f%TQlL&J6v%1o@_6P6ReQo{W7o<}94o0=jQzAE9f8f#H8X=Y$nHhQL zY7EJtSMe`l(vBjLeC*soWTOAH)E!kMO)zn1^@?o`6|W7-0T(!88{{ z?+aX0sfApG@6O+(S=J8VpJa9u%YZl6$_Mj^NDD4QOZ#YZvaPZu#8PgDV*NS6m(ebgDcB*oX19`! zk=C3sn7wO8R8$tGO*i;>CW4Q@oTn1JGjH7fj$6-g+ny%Xv+TYMbWY%Ys;<(t3yVf(+ zYDnG!*ETNj>nn)1<*v5;Zg5&7A@@kE%7~)di@XA&Jc{09`~Hbk{A%*c`sU&{&46UD z?y+T^Q1W2wLd(_2GKWLR)$6%&@egDP7!xBu8LU%UnQXF1{styd<)6a9XO3z(S2350 z3xwHU{fYCfbU0e|7H6ODMw#}5BI`IT^HpToCuEwZalI%Uuq2M@_fmR@Y;^$h$Y*_#H2F-UVXo?_rkusR`PR3V49WbP7dir! zarXGZl~<*w8oi&Z1H;I>`7iThmcf2Q@l$AmL!{)RICf%{E6WD#7RR?BMcw)+$hib-@Vu^o-Y`$h@6?{nP)_vd7 zaLniuIXjf+lM06SS_1ziv}>jeYNvQ9Wypyy125&}jyoZJ`WbO%Xleef;I#D7A!i3W z^X-f`z-#+Glj1_=_)vgepzkY3sL&6(DAdaP6E1n-sh#$;2Iy|&t8ts;fBPFwygSbh zD6RNTWU&H>J{Ao^ff!2Hf*Kk=5!HE4FTYu3FDy^D`}|aZ5D&h-%A|3t$mq^Mi{&0L zIM1wBEOJcx7ET?}4-n#v<)loK(Tz7w>t~gYqtCxNIT|Z>T{|vAnByZ=zg|*nFVd{8 z>RxH+P1DjPY)n_aHS>=gIbU}ADElTKQkpmUk{OG=lXEvm+9X)y$uN(jv(IZsxa$bG zD|!$-Rux<>?rXZ$ah|3lep;TeH1V}l_?LD`>iF3xbxkN0?ovYwdk@?H)y^UKen0tc z!t`U)1qQggPg|{vlm#|X}uzCko^WeatB6j|?3~E9? za?xwoi5J&=WL1Il*qrLA9alr*C*2fWNUAO`=_Aqu>2}VqWM*5(&i3y=Lufrg7ZDGa z>yR-nP{)zl6TM4{+=`M~)g?zyA7SJA?3~eE(&adp7Pr@()X3&dR#? zzJ-vdWmz8Dvls9sX3T0_JX?3R@>NOj+th83)$Y~HZ@jl-^QsT*`>oh*Dl|NT SNqP34+05LOVp4IKM*kmO?fo7A literal 0 HcmV?d00001 diff --git a/DefaultPackage/modulae_7.png b/DefaultPackage/modulae_7.png new file mode 100644 index 0000000000000000000000000000000000000000..68805f840af3a2a653860cbb9b3ea04b1d33fd13 GIT binary patch literal 5668 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 T4|{X|{khZEA!t`=5g+|Orxfw) literal 0 HcmV?d00001 diff --git a/DefaultPackage/modulae_8.png b/DefaultPackage/modulae_8.png new file mode 100644 index 0000000000000000000000000000000000000000..ee3b160d623bd84af2b647ecb111dc94bfe67e76 GIT binary patch literal 5343 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 JsRlXxzW_RRTQ>jz literal 0 HcmV?d00001 diff --git a/DefaultPackage/modulae_9.png b/DefaultPackage/modulae_9.png new file mode 100644 index 0000000000000000000000000000000000000000..5e98b12c82013b9b2bf631808a7bb2ae6723d8e2 GIT binary patch literal 4999 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 literal 0 HcmV?d00001 diff --git a/DefaultPackage/noisetracker_1.png b/DefaultPackage/noisetracker_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9c8e7e3119bf7193d40ee8a5828d70af43ea5472 GIT binary patch literal 6322 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 literal 0 HcmV?d00001 diff --git a/DefaultPackage/noisetracker_2.png b/DefaultPackage/noisetracker_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fc50b75ac3f76ff0ca9d8247bf3f5f537d38674d GIT binary patch literal 5895 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 qDGk literal 0 HcmV?d00001 diff --git a/DefaultPackage/noisetracker_3.png b/DefaultPackage/noisetracker_3.png new file mode 100644 index 0000000000000000000000000000000000000000..099523be96252b666e331930f0a2d66943bdfd8e GIT binary patch literal 7950 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 literal 0 HcmV?d00001 diff --git a/DefaultPackage/nucleus.png b/DefaultPackage/nucleus.png new file mode 100644 index 0000000000000000000000000000000000000000..fe491faee8d6c6675d2f27983ce6052b15b543c0 GIT binary patch literal 6142 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 If>qf60Ox-!2LJ#7 literal 0 HcmV?d00001 diff --git a/DefaultPackage/nucleus_2.png b/DefaultPackage/nucleus_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f938d0ad4aa9873a245c2b6b75e06c92dee9d2e1 GIT binary patch literal 5911 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 k-FN<1=V4DEUET#mnV5HJp=Bla->344qPjx}Bv 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 vPAT}MEE0al@XCX`(k)THWAqG6Gx7fbTp?+m literal 0 HcmV?d00001 diff --git a/DefaultPackage/nucleus_t.png b/DefaultPackage/nucleus_t.png new file mode 100644 index 0000000000000000000000000000000000000000..f47fe01b37b3afe38e0eaa0d92fcce08625e11ce GIT binary patch literal 2411 zcmeHG_g~Xj7yc4KLI4dIW(fji}g9XOc_n1ZNVBvU4Pea>S5_QL+jW%`XAq;1N6g_h(}Zm+qzh z=b;(g`lh%-LBU4Cn0Uz3Cx~?D!wHMlO{rSkA!?$1%r}Bx#hZ#6iHwTDI)|D>blpG0 zyXq7N<@!(`8^u;QJ=2J+O4O*SxefEll7#$hf9bOAtM=0N(k$40VIC%K6Cn{E>uQgQUX|E8LV&=(Lw> zhI`|iPIatmc4+jI-&PHu<&tst-3=m0nj=-{d)tNBj@L(J)q3R=J|OVm;>5AmqCwj)@sgBSdrA%6DKJZ{kTkx^D9b{kv#QV~ zQF}{KG;UhlrY6=YC|uZkoh>y9e@6Rmf14j_T8ZPKWa5iD7{KGf4huq>Mm9&8RaXRQ z(!G&BQT~)s3}s@#sQc5^n2iyArLoT$VauXRbXhPtx>yTb?wS9#>x=GgcR)IO-Gz$N zms}=#p*LKbn5qHymG5QAp(argPL$bXsv$JuVC94B8}ca|g{5Q8TVP+D_p7&O(d_K{ zc;R=u=UzvGMxr? zBBvl#y<)nLXOv=OHsXJI$%rkqr77jC6dS_nn0uzlIMc^11=#i;AfkZIC{Z0|#g0*PZx!xlgZpOD}>9&oGC_e#ARVa9sKXhXL}(~(C> ze28;pl%Mx2TrYTkO*(qqd2LjB`DQ^jMdae>&K2r8!|uEvJxA9qFxJ)qIVYOiAVcKb zP)KNNqghNM+N--o94} zuYhe|{Pd;Ps%BH(!K_WXA;BWco8sq1OF z(_%I!H|JrCuJxb%C=gMJo#P{W!o?u!*F~N zcSxwjYHNoaxfL~kJXU03rPi8uyiKnAz@46u;0!TiYq`y#qAZJJisux&eG^kVME+XsgtyQhV&G}82TccHNvKjhLZ8Dc_^+58jK{Wbdq&dV+q%WOb z8B%G^ciqueqHer2O(*!BxD z68W!I`+CkN4exdkF+tEUNO$m#7DHwxf?-m`eZ)&}(`r_+3aLrm*V>NYgs-&pyYUyq CKLY*$ literal 0 HcmV?d00001 diff --git a/DefaultPackage/oillanders_1.png b/DefaultPackage/oillanders_1.png new file mode 100644 index 0000000000000000000000000000000000000000..591ca1e21e08ddbb7dba428685eb9bff59fdaa4f GIT binary patch literal 5174 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 X9h8wO@jd(ZE63c##<Eh1?~ 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 XF&uv`_L{=KzFc!-Yop3z)ad^MbM>7M literal 0 HcmV?d00001 diff --git a/DefaultPackage/oillanders_3.png b/DefaultPackage/oillanders_3.png new file mode 100644 index 0000000000000000000000000000000000000000..fa50372060623d0a57ba155da172ad5d4a8db4c0 GIT binary patch literal 4772 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 literal 0 HcmV?d00001 diff --git a/DefaultPackage/oillanders_4.png b/DefaultPackage/oillanders_4.png new file mode 100644 index 0000000000000000000000000000000000000000..71aa39428a81e6a50c77002304ef3c18cf2cb1ef GIT binary patch literal 3044 zcmeHJ`#;m|8=ucMI~X>y<)N_TP!98@XVT&mTbpQ8DJ#;H(31)gIe#3oB8N&jX3|lr zb#%@WMv)atX_}6cutG%mF5my+`+DvluKPN?uj_qX*Zs?V+=ImHEc#{` zOa)Zxt!TJX-h9)V4}-yB9`2qDr3r)aV2Lmah2r7i!BZMMUZV0S6xrF?LZMIsgUMtv zg+j4_{8#+Df&Z%w$V%X)%7IYft{WMs7nmiQrbJy_%|jRro#9Gf=NVNrT%2A|wgQ(J z5&5~hXL{~dO!->?V-|$D_p4zivp6U}f$Y1%_VF$i#qXp3HuJcId2Nd^HyLd|)iu2R zu=W&3LOTNOklGG%#AZ;kfC7|QXClfM6Xc~x#{^&63m_r`Jx@9;8#MKg=}bb>6|{~6x>Kod z`%v*KPeGU7N*C@=EQ2VNE0oa4Z3D&Cj*=~Aafa(WWzNkTRGm-hPNnsN(_m71;J{#W zp?B|!Ngq_dh4Az{RB(W|uKnQ7zpXY?M>B^+RCLOXU{C)(UH;4aUqTOY%HnwMy@&b1 z_VBF8mr3HcjuM|OUUE2RG-H(!Cs6jio>B-_B9mJ`IA+&q`i;OfD=W-y4>>9<`vMv~ zYhOX1%()Nu&F#Nm2sIN;rpZ6n7FB5&FAdl_2zRq|cZq-sI$K3;>~ckDoD6Y!)szrt zXBkwkX?*QD>hu0QNqgUMe_8Br0^tl4S!uEBF}=M9fu%9M0n@Mt?&*ygM;kWM2b7keSOdz|S4X2n!*P2IR9C{QOr zOK$@iLw8bu2qg($hZo!C9SfPz5z$Rp%E2_n`#^z)67vG(+hi@ub5JY96Xb+y4Ii&y z3E!Vo_4P%HcAi0jmK zPW(wD1D4wa)rZ`sx~Lni>4IjAXO?d!!b*<@)OWuA*1%k~W@PNhhbI@2@85iP%f%U& z_T4Izw&X$p$s)uVs1*M`MC9&X=N-&8WU2h8IP%?||v z2(3Ur3t{8-s#T1A72pqt5bW&MDvfU$9>_7ghXU8WLo;P0S!W6#R9nOsvrxLMjGWI(ENE!6-k}|&tuLsZ z{U*ZE_gwU{Ya*Roh$&wNQIwkA!a7`8Qrr~50|-Gjz}VN33bKTUI7{pwQ0D){TUpdS zR{|8JFRWz=7I~bi7Mz;bw22;gn5)Ir`dW%6UJ@h$iz#WSN)(7f)n>t?~C{?)3OGmUGG@}SL8rfM6M zjB8)Q zKdJv(?<4bO5j@%h)hv%}@@W;t^>6Gc2tAhng*18HI%NAX-t>&# z6O|#qkA2AU?M2XoY=er-t1qQT&@&Guf6bn6eTtZ#tmTwE(cu4Lcpq}RAM>}0IC{1gF zUrgRmEUmDHu6#J4sv7ZuIT3`$omD$AR@<--Chpqq&ATu;J^)DTYvz4g)z7MpNQY-@ zspp?P1sBZrhm^$M r5v_>5DteDv|I0tKeveV*NvC;uTL3sxkB`gy^Y?OPu<19Qc}f2T!gD1l literal 0 HcmV?d00001 diff --git a/DefaultPackage/oillanders_5.png b/DefaultPackage/oillanders_5.png new file mode 100644 index 0000000000000000000000000000000000000000..195516cf81b0da01747ec2889ed72edc512c1313 GIT binary patch literal 3103 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 bZ%Hn00*bL&xXrEL@|_MA?P6bd+Arx(qN^lh literal 0 HcmV?d00001 diff --git a/DefaultPackage/photonix_2.png b/DefaultPackage/photonix_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2044f54e1149eb7584de1fcdd2d2f59ab669d6ee GIT binary patch literal 6421 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 literal 0 HcmV?d00001 diff --git a/DefaultPackage/poms_2.png b/DefaultPackage/poms_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e210697b3b54190144c7e7b9494b639d6e415a45 GIT binary patch literal 2536 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 ba)aOaxh#>2xNP&^UuJC$ef3H;c*OqzAzd)P literal 0 HcmV?d00001 diff --git a/DefaultPackage/poms_6.png b/DefaultPackage/poms_6.png new file mode 100644 index 0000000000000000000000000000000000000000..2fa5800d8f1e49a1dff4655eda46f8263b6777d0 GIT binary patch literal 3640 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 literal 0 HcmV?d00001 diff --git a/DefaultPackage/starwizard.png b/DefaultPackage/starwizard.png new file mode 100644 index 0000000000000000000000000000000000000000..d421c999dcc82e271eac2c0c76c09312a3c6a496 GIT binary patch literal 9757 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%0D-mj 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 e7yfa@w(2A|(b)fM+0jzdSFKleMEwtvsKHhM literal 0 HcmV?d00001 diff --git a/DefaultPackage/starwizard_2.png b/DefaultPackage/starwizard_2.png new file mode 100644 index 0000000000000000000000000000000000000000..649a3232570f7f9397786fd1f52034c9e66388e3 GIT binary patch literal 9873 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 tG%JS-RH8SSG{{xlc*Tet- literal 0 HcmV?d00001 diff --git a/DefaultPackage/starwizard_3.png b/DefaultPackage/starwizard_3.png new file mode 100644 index 0000000000000000000000000000000000000000..9579d7cafb04085d30387b61b7dbb3220375b485 GIT binary patch literal 11444 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 F{vRiZdNKe2 literal 0 HcmV?d00001 diff --git a/DefaultPackage/starwizard_4.png b/DefaultPackage/starwizard_4.png new file mode 100644 index 0000000000000000000000000000000000000000..889372c1b414a514266f5fe0f155d04247d124b9 GIT binary patch literal 3570 zcmeH}`9IWq8^%AMnK5ImgR#quh%8wvvgB(kjwOj>%dwPHq|qv5zNUzBEU8dvM3kkF z%8}(uk_w^p5HV<(B%^Gju{=Hh#`8M&57+Cy-uF-U_0yH&?zU50L`ehyAnxR7?*RZr ze(xQ^_}_Z(eMc?;c;N2h>G0dq>2w4^+}+(7C>ur5Dh!*MnfcBCoqrSfzfWK$fO`4& zlcW<)t`4L=@;XT^`AE@=8vzix?qqM{8J+k2L&~G#jbgw(V*bY(bNHfPjRr#3)9K8e z&h^U}zQ|&G+4_ANExp)bfMC~Rk1r9H zz+eY76UU@cBNpDBX}h^r(noVS43g@k*avzz`lzNla1&=N_#m- zKfA3-u^R0=e(T3pWYaLiP?L zx)<{+Lg{k^ta1i7KJok`x&*Vaxw95Xe-#Pnn+AKMBQW|H<^Y%mJYn~k>sMqLYM78u z=6t`Wl3_G4ONF706?HX&mmI-mygunp$y7+Vj;KPENRA4_35o9UQZ@`ZcwL6E8*#5P zW~Z8Mdr7V{{Ov?D~I z4#iu|QEu6a9h`?-?<%ICe3i+4khyI)>^VKwbsScnN$NPD0nF7){{wJEH9;m^bXtZ7 zJvX1Pr!O#d65C@<1P`k?8dwf0!fD-30w!v>-gKVs>K0 zS&W@^eh{sG<-@<4oFFNzJ3POs+FQ@g&Ys-{e`Q;y&K9o1E~m2%C3Pta3W)ZKtkcRM z2^_vZf4Z(vnY$nj6{gfv=i+c|<~SIB_6COXeS%bIG$_0))OL$d_7gn1J6l|7D4Iwg z-h*x#)14{f!wKS*7R@nu;kj}mu%bQQBeQi?9M}HWX~kjf8T2+U+wCH5oTM^CT@MXc zi{Iyr$B5D2e@al(1nrMa%xYS750jI{>oX2fmFSn5QZz{^hIE#*X+N}2S}~+o;nMLT zfllY%s#-p2(|vEk@JN1B0VCI}y@5vO-okZc0$2I9&FtM=G_2j#`pNh7fLa`VV=|8A z#Krx(Ac@G!7SLODFAGcuyJm@7c}}IqQLmn@^eQO|Pq&%T?GNIUrVW#bPQHp}+Lccu zJYr{y`xs?e3DtX;+->>ThzgmjqMVG*#(ie5-`k&!@g!Zo`H_1DS+pKETfE`8Gj3{D z<%^LHr$n=x7dyH*vcx~FRVl=+IFd9H+JN9wC&kz%-z~8>)BM%t@4Q26yfcDQrJ&B? zyZ!SB>K?f?MDF%@b2@n5AOGcELxFbPny;i`h}ZM(zR^qPXB{`wUD2WZ@8Kt$2%C`&79$Hh9 z_9!-3Otnm{V5C(to>_ZMhQGWmzU|^h z$pwBK^BVbm*0NddbS|YwVd3g#Ew@1 zIyy936n=@t;j7E`)cFxX1?8_Fn+8}MVKb>7?)LMdj%m{gC|^55p=a(m)aCcW2SP37 zW|zSxYf^@)e<}Ka$xeuuaR5CF`+!Tz-wm02ZTJyaCAj=S^r~%njcfp=;8H2xJYFuS zvV(i$1@$~MvRT$jP-%VvD&%~$(1G0)_%Es%1e*OA1`LO^!lF~l;%LK zno-Lp8aRy+anNBfi0c zBk-&~Og)3fvF@Ua;PW}Oz<-FWSa+C&XG5C+i@5UpdiGLKyJcZ98?148-o2}^a;jv;tk>5r^@<{GF;uK~;%g_?a z0<%M_63EoM1rc=VNEp~JFgk{GIXFq^OM=bg8N%B8OSGl&$SE zD&-Hz5`f~$OWeDo@}9-w9bccD3ZDQ&wW2zGgsIlo_<{ORB-5N;9=O9q3X||7Qhh}- zf;AsfgA%Azs|}o!;mZ+lA&+%Sx4E2(|0qu#j<#QHDLDf}-0 literal 0 HcmV?d00001 diff --git a/DefaultPackage/starwizard_5.png b/DefaultPackage/starwizard_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b3dda1fbd8de25ce6a4828bf1d181b4a59bf207f GIT binary patch literal 3632 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 literal 0 HcmV?d00001 diff --git a/DefaultPackage/thumb_harrier.png b/DefaultPackage/thumb_harrier.png new file mode 100644 index 0000000000000000000000000000000000000000..58e01793b925732c25a58114057873cdc2c842ec GIT binary patch literal 2442 zcmV;533c{~P)rdJyeKHoKRkLo|NUWG$KqLB_|0P6Dp%h$Mm@=MT8?J+Z-ONaFS?Q zdUFsJSy)_1G&C}YSuM1MIgWHMl9P2D8d@i~PAE50y5FU_@2FQ-suda0ykz`^(z@$`fag1q~)eKrBC_9cP$4nr3L0rysK#5{PL&8T?XH$B( zhVi~`iH4i+pKfPSQERItJSRY+P$VFwl6pzD>9n`+wj?6omyU5qUZfKjXD~%$gpNEE zB{5VY1STj`Zj8w7?7e2WdL$u^S4K#j?zwMDEQHgPEGvO|d3#heEH=4W7ac5glZG7? zkx-CqK|_~|i*ZF_FtbjB|v|?mpkYzkK zmRB6cOiZ3+N;yU)T1`Z zUL=xisftmYnv8gRl`J}}c)WaYsC*I@s}yET9UE*YJ8Jv($yY8j+}f;s-kgxCq|CW^ zoRC;Q9zQCHM_+ohnbD8b(loTPR7q`O!I4QwTtHuYhcZiigq@E(9xNOuW@2QhFf5!z zI%Fg&r=;_`C#+1{^txY>iDa5gWTJc&EFeWJHI#iiLR?-bTwq;nY_Mb`Kdf3AvqzkT zMr4L`be7D7dTd0JTnY>nG)_!NO;18igFHJtsE#~DPP9}!Buq}El)n62i_kYdZ>*kd zBz|0sFa%6wX)H7{EG8s0Mt6K(C{$*dgm67%Rx~s^fV6xxmpg=^00007bV*G`2hs^0 z4<{J@w3oR600uHiL_t(|ob8lF&e_y#)Uc4k&-w- zbZmp+gfS2&V+z>uM@o7S6|K-hJV|1ZA>tH{KY+xei78+WP!W$_#mvBTpol$pY@!|W z98drDd7gLg^Zh>Wz31-!coF)a{|?{B3ZDu--$$*6RD}u6oF8^-sgIm#4V`X9&am@M z6{eGCX3TJ%9UPjQ+g7jcSv?0aR1^$b zs9qS1zQW$=H^Ww+ENCtmU+^^OX`2Ju@aC-A>=5mDvLL$PW*sn zuE)N1AzeTc^|e@XjaIMF}BAv9h?)C_TnMCfyePF){w>Y3YE!f1d+* zr~6ZeRa+NrzKSMyL`5ZZ$R>Bkkw`C9`kxoW!VtFxCc59ihn)LboeF?2erz?wc?rH;c|3c2P@ zCI$!Ee_jXK#pB5FeuAmjsAIwoCYLjf9HY8UP^TWl9nKwP zG#Z(X#BzK*hzs!p<_#Eoq$G8Iz>VPniO0_dv*K>MtSq@c{~f{pJ*^E@BwiY# zAv`fmfMckZTN}M_;hN)_5fR)>?i%j6pEJEPs{&f3p#f8?8X{H(+={48OXH?R+-gXj z#J!Ogy0>ILLBu^FoCq9-1hExtg;J>$iP$2l6hSD2t=IRmX^X2CZ&T1(YuHNYDA|b( z^FCpVMBi*J*$D^6C$j4mHDxt$Vo|*a)_94^ z0)|Xvd(m2_rdAOW!s!kVCkQiK0sSSig+e-8TsEL;>nu=>jdY<<*l6uEmJQyWD5ldB zucz)N4dg(*n}_}`L1<89GT;>%8JS#PU+)#^>^vnodE&NTCneS=Cr3tlIXgSs+EWgv zz~nV?YeOjEX(22U-X{1f7}5gnV)sgSakiK))#J!rQA*4>LWaSN_eoFt+68*FoUq=NsF!TV!Z literal 0 HcmV?d00001 diff --git a/DefaultPackage/thumb_karateka.png b/DefaultPackage/thumb_karateka.png new file mode 100755 index 0000000000000000000000000000000000000000..a6a05582650ce490ab4ab4453873219d5b305e2e GIT binary patch literal 1489 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 literal 0 HcmV?d00001 diff --git a/DefaultPackage/thumb_nucleus.png b/DefaultPackage/thumb_nucleus.png new file mode 100644 index 0000000000000000000000000000000000000000..6cfa48a67da7364438f8f8379f0ca86740499dfd GIT binary patch literal 2516 zcmV;_2`l!AP)yXUR+!k0t9YbTs(d}Y;KT< zI21lDEvA^5uMG*6jEz(h6mSa*f@o)dbaYHGG)y=*a2{MF3@{cEOqmM^S1$}>XJ$tS zEGi5PSOzG$yS!IQPzwtTY>IGHU0$qCOr?yBj35+L5=4!2bchlVTu)pyGBbQ#UsQHf z1cC%i1P5+zZaq3YR90*Z5;SB74NOQ$G!`s0CIpL&jEO`tuc8nhA=i3|@+8XRw8 zWqb+`lnxjS0|XyyAAEp-v_3orVFo06EL476ClyCvBy5~6415waF(rqHU|@7EJiuOD zL>_z`9vp-+9GMw6R53DGV02t!s3aC-q%sUV8bnkXRD?b}R1h!}9(*)1bfiKogcdwB zhBRM?Uu1M{OcqRhBqn4eB%~4)6b%G?HW*A&U}QWzd>RbAw!9`HA{Z8AWM+gM7$h7j zWPFQ%d`3iM8dRK{oTP??luk^M0P}lhJ>V^oRpH3 zfNpHO!o;*zRH%}ak$QY!R$x6oJQNx%gp!nmN=&S(tRQkATxk;800007bV*G`2hs^0 z4<{J@w3oR600w+XL_t(|oSjt*bkkHAzOD-q438K6oEb z>5LeQiBwvQ=~ha#S}8@R%4KNLuznS=MXn+{?aFgAS3O75w9RH~_Wdwz78*3?+idxz z@85_1B?t{vgVQRtkWi9XsPP13FnsLT)#VuAFIrsv#Qeo)XmywJP=?Si``NA?tRFW` zg3f!fezAqX{aq5lN(>?MxRhqu&``*aYZ%3Y0iGoYf^T`OTcuEgYp-^!-J4t+*~1Jn z%-rd*2*ad99-i?GVj(OPQ_`x~Eh<)6SuRw4`+kiA24tC+S=oQdqk^Tui95!x+dBTb zr^eTn`Ht)8*eGVoe7=s3q?kz>errZ{;2bA$oKQTWcK!PO>nDN%logH=JF1)Kd4g>k zAa#<|2b#h(ur*K7o5EqklgNi{wuG*i4^5mnG=y$-uSOz&yt)p&TyNBC7EcZ6dSjz; znbt%w1jA5zY}k{?Glp-}NgeHA+|-7-k%`5i#+it>_DyC9U6TBgVSe*MX|b|=(0BPE zYYe0=$>@d=c)|%e8IX~Ft7x6zur_IKEz2yL1@#ecI?Kpo7{lW@gfgg!^mnT*bNA{o zL9^7?yWRh-`8f2#l?+HPUi~npUtVq@Pr^k7EB*v>gt%G%GxHu89j^u zBto#UcrPlVEV0PA+W&#zwUsN!ARe%3RN=DyD8RoVp!4&?qYzl7#Q5c}JPvB`U_(QJ z<|uC*g}~Of>cPuOfUTk}5GW0Ua7EGm_U0S}ahR56@UlB>oWWG>CCpiaV_v#)9UxUjO{+>Sf_rv>eAh!yZa1U3-WgX~)V%1e{OlC0c;f9}KN|zc zm?H9-;Q%8DIv>st2Tt&YpR7RZ1FOJPFt6zH+fWf^XCsh*Cs?3kDVTzg%i+N{fraO; zm;~qz6(`sOFI)jY*nZDl*)`B(Qrwdcg+OiHo;`zmm`Dx}j{V40+G%XJ?Ub3<4=-$c z@2o;_5QCGXv}jebY%8ciEaG|Ak;8++bKA}_2l?NB_`Dgw{=v)}3$u#o1T-C{H9*Q~ z#UN5H6W=)b3e(TK^Tgv%Mn1f7*-Y27St+npTGCmDPGbt^dWBw-NZCwWck+!93M>CPW-FNB*Pt$?zi_m1zTYQnV*Ju15kS zr6|0T%L7odDloP6>kmpUn7^>d6|jec#|H9T-)9w3&#+aMb#;}9NJJ(rs%8pV2)3-T z=gr@Y7L;C7x?$6%sZ+K*d+RYJBhL|$dJ~kIVE{=WJz^o3a~eyQHQNqSe|9JMhZ(1_ zhi7>f)K(&k3`TNl080M3C^tZ~q|KJv4)c>1 z3LDv2L*j0v3(%CdL~BoK|IY;4nleo_w^5C*9@>){9;T@@GDcN0y$AskmH~!n zVOw}OILW?EU0QgJGe2A(3=YNa^7HYa+!nMh^WjGGJ%9Q9*>Xn{us*; zJ>}=Mf3>t-Ijvp2EB literal 0 HcmV?d00001 diff --git a/DefaultPackage/thumb_photonix.png b/DefaultPackage/thumb_photonix.png new file mode 100644 index 0000000000000000000000000000000000000000..23a90bb1c5c421129067c3943533c7a723762778 GIT binary patch literal 2854 zcmV+>3)%FEP)d}wHhhQcHwMB?P>a707|0@H+rcPRq|WHJOKA{>a5m84>1Ze>}YJXvc$|99MqVYe8R+hI6Nd)Bs@ao zjE?*SIt1)+bOdSypjup`0l#;vz0(3+~ zLh>UzfL@+D}XiOaO+}g~})NC>~92<@-E72z#1nho+ zkRv2XCMQ%aETU~}YzqvePE2hb9IkzQ+$JP^TwIillnf1&930LJ4domgF+4sNINLIyRN*xyc`~MJUeeV9t0d5 z9CUNv3=VvBUR-oa1gst$+-_`u3=9NJ1WXJJY)(um4Gb3x2^?BnS58b^UbtBe3^Wc5 zOitW%J_PKouk7aR{L;iE9waO(T#JsE3<|6)E_}2e9PG=?KJSgR00007bV*G`2hs^0 z4<{J@w3oR600+)VL_t(|oQ+m}coat&-#`o>cA@d8=^f#kqcP zW>dPs3s(`mxW;VZX_lqiCTy)@r8L-wQmUayE~%nY6e5;jpnNAbA<&D110jj!ib|6< zUd8eVLGhhUQrrLfo7wr;+j-~xnBO}mFjZAlP37%0=oLOX^XNm5F5R_#*Jl+?3%s#) z>(*1Jwi*)BEkuLF!XjhAkcecR&=3`VuAJSTRF~ekf7h9xPFB^o1m`Vh`*ZILXJ*fP zT#$QX_ig*(-`xW`p1D~|9v1}+X-^>^dDAatr$VphK@R0P?Je#+O&8)?!*V79ZbfP z*PXcIB$FW6aUA9A_iM*WOKX-ZN)plZ&aB+>+=_~d+}!f=!oBGoKEVni84*H)Q8EI= zD~*D=gc}(oItc|ykWiW+MV%{hzxey6w}7bznRNODUq1NDwf& zTTV&P1u3|Kztu@m)r!I;xrGP+UASb)l0w%9t_I#Bc;-N)IYi#T!a&OHq|sMQBhjMp zlbfC#!KU9F9yVbzEa#;z1Ahe4$2yKijRbFkv8M|PPIJJXt_Hfy7?z-RGlTCXW{3a- z9%jJMU@#c25+dngZ&mMi55L;Ge*LGv>aB8pKn-FM$sojMd9V`)M>qkKn&1uDiXhpq zI7mWpvK&G7ks=TfI~|_AJ{IeB1#lA-gK;)#hAOIp0L&7SNth|qc;A|mybe~TL z4YW`w0$lfpcv=ByDvJz}2#N&#jhg5&VG_c~L_wTSE*EU*>+9Rn=VHsZ=hSf%jN`{^ zYL=^|HKoJwCd8*mTIkLBX70iH7y%Ut6kYV3Z3P^00HyaBOPJREKkC=VTzeNpFGunAzqkgB*}6$Hi_$y(V%pfYG7Lj9Ot>=)U6%04wNpCsV+)&`XD-ZHcw6(# zbLVC@H#g@rH#A(h=>O60UV3Stj4P!8mKw2-WQM&rJ$F1lBNm$hCV0c?paEqWY-!+c ztL9I-a4vgp_Nr8K_NDogaxM)HUM<`Az3+eKXZyO019!jv`hf#7(%E=PrU+aNdUlT= zKfYTREO3!!(GRje$i7gyYVO=s7aOv(=TEAg(Sq-j)ZTziw-58`qNe&X~N);i6!^+x4&@g(y{v0Yu2n?+g1PkUC-B7b6J&b zw_myat`~llmp5kPE3i+=g#Oyvi94;{_JoHpftWy4wxG6l);(i=rFYisXnOzze5z~Z zj&JTb(E{t&Jp9a+Q&+xpCl}E2O8>;#k_jcVN`73@zQIn!h$K)`MwE%`*6rUvA;12_ ziIw^9mIBbYl`GrERq|nUTwDFhab1uptN%J-|GNDX$T~nHaxZgHfLt%zBFir>){8@F zP(o>DBrOthk!Gev_%Mw>k+d`&6~lMXpkhSbzeCFZ07gFxqwBHXIsgCw07*qoM6N<$ Ef&+;qOaK4? literal 0 HcmV?d00001 diff --git a/DefaultPackage/thumb_poms.png b/DefaultPackage/thumb_poms.png new file mode 100644 index 0000000000000000000000000000000000000000..5e3869837f40b0e1c9dd4a85c803d37c6be8b505 GIT binary patch literal 2461 zcmbuAi#L?}8pp?YU7Fs=G?DR=c$-{?PP|9a+ib>bgx6FWgvrjBC-nzr`F+=V68Ey5*N~_r z0)eo`WjE%bsP>9uqOPpSF>Ars1cEYQFV1lSh=4d=Oko1JDgYP(91jjm1h^sm)|OU) zta#zjc>v7h!$z?5dXd1NOShr}WCUTs!f*kH#{q~iN`o<9BrP>)d0@IrPUfIBWpnY#jICKqLUyra&wJqyZd%K4>F^Xdqpcg0nD5lBBh<0W`o- zHXUPNTt%}P$Y*m=g`623RS;HC;_-1iR1hvGmzC2k>0E`n4Z`K|QMLjs0;z)H(_(3^ z6f%H>JU*Zbh%bm++gbr_fF1#u;3>RX) zC`EzDjE*reL5Skx=z<^t*Po9vFw_+VXk4Mf7#UKGg+WA+jeG}-g=@z=fj zXG|Xy-W~5qXF}P$fEP-G&a{>jwA!E%E5p9hO_MhHwyw5$KBa#Uj$Jg}J7`&J@*jbH zY|Zv|b?0Mpn%!S_Mt5+9F3p$Hc^m5l>7E@{Pb24Jm#ybrqx_0z^hLR|aqp(*J}<_+ zn~RGjr%rF3=c{!Y*++%z$RhjpSEQYo%c?KfvM;>r-xs*Tg1j{r{!@!BD!omuo(%`w zNw1haOp`x0ZOWQ(ELzZ8pTz^6HfK30t87c6WWMMOy+s}#-ura4Yy(^}&1m_DPg7t2 z*f*=r@Q}Cv$i8v%{9GOaGM)x)fGYIzZ4PEx|1wLaP7IY)tyVIueLgYs?*KMuz%tJPJOe8=YvQ;Bh^C$wm7ePTp*e{%fC!@{zA zPm0?jNZ8S>_kyEq1G-b9#*(s)M zE!+Kbn}G7XsVF}*GvnO*uOkEH&B40Y!mQ&j7$8JP)Y|-H_0smu#yc*4Ta)spA$n}L z%??wpj;8H|vxV~U<|!9eUYcLIzG}CgaRtM1`;Hg!G-_JGks_tjb1Y~9Q6`kAhIeWTIH;sY9JEaQOAKKIzV}rTHpz;ip|YA3h8mEHZtR^Ra97mk+6ilZ}P7lfF$q zKe~PNFJ`6lNPA|bW40fz_gowM?6dqZMy&PE^rzG(N@pzpMJy0kPkqy9Zg!(7#oa4` zj;mAUzb2NojP1dDFZ0}1y0#m7N*o=!x(^@EmaoJeUH%blndOv2epml@-s1PsqUN5c zE$0m`eqaTE-5<`p+`Ha6=S=O?FNL)$Oq=`B^8BI3`d-oe@WI=;r=|*Wy7w&XPi$f= z*6N(joYq)5vpAN~XK_~TRQLjcQfbc^+Nitpd)acdYxK(U)tgJPZy4B99#pNlGCh7? zZDnRE!Zt%atG2(*Ch9NepG!AAEj8YKef9g+M)_D}q0DaS(~!r(AEmRY5l2l2cWz@D z+ofRHKfXL`S{T~%I`=1|-8b}QLW0Wtwh-laKL;J}4nLW?GdH7YKIxa!df>`^(qog% z5Ayt=(K*AV(+97gpUSr}bxG(-nTxpfTOl=^5nX@M?$494Z$4i))?QH$`|}9zkr6+_ zW77na%Qlt)>HPxN?8ok-MYnwy)rQ6%b^Dn$@CeiQ+A$4o(DmPP%7vOVi zeE%G$uGpmazzvepx#N<%M5;e%tP`21wio|$^ZZW literal 0 HcmV?d00001 diff --git a/DefaultPackage/thumb_pop.png b/DefaultPackage/thumb_pop.png new file mode 100644 index 0000000000000000000000000000000000000000..37382039ffdc477295df3564833a852ec3f94769 GIT binary patch literal 21900 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 Xi#VG#cd$e100000NkvXXu0mjfsN3Vn literal 0 HcmV?d00001 diff --git a/DefaultPackage/thumb_system6.png b/DefaultPackage/thumb_system6.png new file mode 100644 index 0000000000000000000000000000000000000000..2d5aa015aaa51c38cc6fc3080915bdc11c7161a3 GIT binary patch literal 1082 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBM!3-o#Zmhk)z`)E9;1l8sFdSe|Q26kH zf#CzghYt-v3`9WQC>RZa;T!^6wl^*S`j4}~BeIx*f$slFzskrra zS~u5W1s+%Zh0Ra@*YD^*a{a>)8S0F;9lN35x6z)- zXp()pG1CEQE`_q~yBXJTtJ{gJU@YQX;Kh*E5LzR2@wK-?#I%GJjZ5kx*y9>kupK=+bbm(mho`< z-r!D`TrlZi`yN@*T~XU=6LLJXEh8jZ$d+j=gex|h36@T;Z2_&#a q{kQC$Rqs0;=rQ&ZPhVH|OFXOs>a5pW-|GT}7(8A5T-G@yGywqeRe@0e literal 0 HcmV?d00001 diff --git a/DefaultPackage/thumb_xmas.png b/DefaultPackage/thumb_xmas.png new file mode 100644 index 0000000000000000000000000000000000000000..1d6d9b80de91dd480a52352020bfd64faea9b67c GIT binary patch literal 2607 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 RIFkSX002ovPDHLkV1gsz)1d$W literal 0 HcmV?d00001 diff --git a/DefaultPackage/xmas_1.png b/DefaultPackage/xmas_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3a206a0d19c685a3e6dbdad9130eb54b524b9bbf GIT binary patch literal 2120 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 literal 0 HcmV?d00001 diff --git a/DefaultPackage/xmas_4.png b/DefaultPackage/xmas_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f8514af3d9d754bff98390eb5fc14403db31bcd5 GIT binary patch literal 6041 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 AU;qFB literal 0 HcmV?d00001 diff --git a/DefaultPackage/xmas_5.png b/DefaultPackage/xmas_5.png new file mode 100644 index 0000000000000000000000000000000000000000..7c6e010b268c667bc6027f11baa92b83141801ce GIT binary patch literal 5090 zcmeI0_fykNx4^%lcTl8v6%mjU2wfmFY0^vR+ zry{)^t7rPN0e}=RzHhE|IR(G~02ct#O_>DnOkl8p0A4^{{Za=uH3j#g)B%M0C2;s< z3{!x~^b!OD4hX;jEc_A_3W2~Q($i68W$6Gu9So#{nbI%8V#@^7%LL$Mm-O~xFPWI= zHO2RCY)k;)2?VeK7uZNQ#RC9d0KluG@akB+DS$^@HY~mj!1rD@6dn)YFZ=)V|2y!1 zwgbFhkDpxzr}Wb`(4rir=3x|Kzi7;C0RSenuBMuKP~L7nZEmSN%X1U9D_(Ywa!F>B z8X(Kt)zUwzyZ`+0D6kcWs#_R=^ScJ{_w5VSbsP*+)6$Nmtuy{!g8$%0w&prt<(yM5 z95V^2Y!XMDugKF?@jW*|Eu40ITBMgr(5PvxHlw*nX>Ib#X|0CJRK0Fs{ci0w8=%-c zVVhy{>xDo&{R>Za0{r8d$ppcuWzG80=0f7Ex)`oxa%TrR{M?#4(s3f$yb~ls;a?9F zJ>Si9EcljFxL@KqGhmDMUJWH20BS@xns8C+|B{hf^ zgyJm4AbQR~s`3jKdAbHq{qkkaQnp7RF^UYhcK47mN*h{~P!+r5Y@?@jtbiO)m)crP z5Yg*`aa376XQgseLosb9iM2#0vUIMz`P*D;&Y@jp+~GPIy`{w*JfUuBRig28xqBhB1DXUkrt%DGmi5sa@e~i(##MbE zU13e&>95(-uTRX2NxW)?TPsVD_{_-357FF9+#pI7fmj`>RD<2K0!?IB+;S!MHDI=_ zpQoa}m!?s3a_~2`?W7i~xxPbda*D)VTLh*1@9sbArLYY07uE(C)KW9-)+kV#$p;(d#gm6cC9Dk6jMNe?YG8=TV}cIWq-XOPh%A_Xx3#P` zFHlw;gUR;lR~JL+PeKjEPS_}dsHU;r9K}l{ z3Y3{vA1K9w8J=}c%0+h2uqC_Obh^8O{HSaSO-mdkJ^gm1(tWtq4)l1JXc+bnq!`aj zgX6}`%TU{vVchgQ`wFq()bo*&&DIwPGJ7(LE(N#S@uvcE&uZQV*D=k0@|Dvv7G!EmX!fB ze`b(Hs>8_(V@YKfGanwe7yf*FP!7e~2EJep<;pSbF?y1nknf=4AjU3M=q8;VY3b8{ zeXfdscMq<=Hadlc)Lo;&*&-XdxKt?uQT^4N-}%X8=t;S6N6+&hdP!(KkWU<2e}iB92=rElbzQ@V&rX$U4&tNFX?gZQm#T= zfKDD5+3?Qcwp-clOmJ|Aay?jSn;+v~N#$+by}>V9$*o-F_M`i!op?s-gK`^6J_)_I zHWWXLrMi7S4JH?@YZ%)cINCV454t8491ZSfe7sjfdmV>s=LjJIL*M_dWq5n?KE80! z1d{cIQ1_?(Ey)W>-ljX&mPK3B$T5`wLlmE^it>BJZ)&JbyewcrRhT}$HmOD4?<%&l zsa=x7JhLuR*~auXugIy!6oX~F zHE%o6k1LFZfVkrEX*Jkvc3rMGmaj257ox68IaQPcKS1KHD3|HLl z)~`)Z8t#xb&{9mHSGrCr{!pP{ zg2LrGKb~eaeN#dNO@h3$j@I=2uc=O8Mc&maBbQM`p`Sa_!9)<-NlzTVA-EIbM`abk4Jj=h9`n zbrzaP`rI^Ml239}rLN`*UT0!u`~JIoxRB|6?Iiu4h+nS1JColrtCjb@|NiaPNsQ`x z%OBx?j=MZb(+sAZCPE733rNgXO7++7bPI*W?MQ`=vV9W2e7(9KZuK=ph`ZF~t98bk3g47K2CX2{qW~zpp z)i>bsDXMXF9mIUhfv2Hj4SZ|OcMzb@rw_ll2_YQ9>Ut3hJlFV{LW%o?T{{8fLbV{q zJ3hf`!6V8kkrvs}o%P&tZW?W8pMv|9AXS{BS zh;l|2lNk?Y+eUjd9+NUdMWvf(szwGF?O;c{z^kZcrS$e&;B4wAIL5iJ8&{EqnZvu@ zFhe3N^Sex3=H%APaO{_vJxaZLs0yRR^1Xk|7)emc!@DF}i8a=DtZZHcGI(ehZakwN z4Be->rDN|pMdFn)I7^P^v~RGg70>ulB;UD&Gxz2(a9GoTwcp)txi?%g_s+hsvJOk7 ztY2rhl5@^ki!;9V6oe+ZR^W^;{_AU9FnrVlYL$))z4(+yC&LBEd2fihyI|CZT5FTJ zWTZw$6E%-QGgOwBiP6nRtTIikMGx)AG808OIJx51f4>de>G@6TbLrywMPsPkczo&1 zm6q2KGSp}Gt>?GC&xYu~3yc?I7m&a9K~<+u9vOCO%60i%31-MU(addT{*s3B4$-|- zwwbF4|1Vn^zhXkh3xGeN$urE0jz3L8NQh_3?ncPEL;>^(8GD-&x>y<1%ga>aW`xv* zZP(x{l|dIryjUSz#C*vK8DZhCH=Il3+Ag(ZK;Sj45RwFC{(B<@Kw9w@td4~XhduT8 z?4fv!31_yg1KGV<=(F?$CPkV+yx&RSfsrwLq;STr7{2Ha*`rByfRYYtWl7K%MS z%~RMzwC2s|3aS1$dgHh5x_3OCTXWRiifo=WoU=JUj1SuiJbRSfdVbL!aL8do+V4h) z=75L?eV^OkPH5ZKVEhJ;5C_?a-*b7~;i^QSkGNh=aP}{Cxi}%=m)Pjcip;tFkB>tQ%xq8P)7bYCQ78-hfl3VI= z{0k_kOjgcb(M>8liZ)XG^y=1mqt3&zSC*4vW3ME?RB<<)9h5a3DK0#15i$#}dWPW3 zm3SYfjBG6)T(Q<_XKC=MSbI9;FFWs-(+)_S9hX0RT#;tRi?6Q0lW*Fj^A&oSFtF=I zlzTZoF~bD;caf$|t=$;v+=H9?UxV$hruTvC2CH`YJVFi(}4Ntm1HV zdCDu@h*!uD1>%mka%-p`7pxtM>&GABef8sQZF^6Nk4zZk>^Bkfu(pg%kFKDTV;Ra6 zC6gzmHRh}#B7S~lPF*ht{!#5L5&abj6FD&_5>B;8Ezsx0)SnJ@xwsLQv)`8o#J*xG ztp7i*W?(VL^VS&r@{RdZd zQ(yJ;^slD6s~`GdYN9mN6|m6XqXPf{EG0!bZ2$mH>YqP|itx`?FArt`00;n0RbBai zM*!fT>;V9zQd6gL0{}Ar&>r{~vib)%^*_NQ{674j{0}Sb)YN+@0MPi4#`^&PU?A0F z9sro1zdrx~?*B0ly}$pr|9}0z1OFQx5c;MW|F2RMPbD>ZlxZ{y9L9IA4H>@x018$m zIcZ(r+_SusqMg#}V63kc7q-*ORn33mu3s2fw@VyMR6dBu?Y1s;?2q=V_VlCYa_+aSTdg_Yut_6~Jz#0*ey+FW@yGFf zjKQGDHv=>?gxBi@YD6E$=;>l&E~Vv?_=NgHgmuQ{3swhHj=Q%9?!Foo{Kz(bIR_73 z{2snhg8mmHkssn+TT)-K$v88n4ECn@n=*vpK0CK6kC4)$L+Ed(ew393 zc^P1o_bQlcBX#;+yKFc|xJi*^q4FS(>=P^64#|xx68Q^_N)!}4U4YJE1 zq~AM$?|=_A4mYIh>l!!Clo@e4m1N}uXNw}}iWe)T?=t^Ea$P#2LOj(`V@gJV+CQv}dulTe`n)ZCwU zzP?JMb~bmMv?T$^_tuGd)6wbN~Op>&Q%&czS#5!LO<|9o)tMU z(R?5NFv-J__pn${9+X?u*JunH+`d$VnT@OO3H?mfV=Y9?kGH8$F>( z29b6;P{CcB#hSyU%9y)oHVRuF3iEK{-rRT-hzyRdn%2y*Oh9DJUAtjl%LDpWe?C05 zgkF@ZseyFqfEQqi@^J2>Xk>S=<;V!6Or*P=EEaJhMx-*+AY+4PG5xu_OByB!KJF2| zH1DMf_|c_wd6*|hj?6t5?W=63muEKJ{gG1MWq`Ac2TK9IY*q`C^x{Rn3Q~Rc5!K&5 zTSQ?qMI|CTK$0_vWWBU|)EJE|c5__%9E`9pt< z7&01_j`RmQl@nCPc|m#fFZtfM*vJh6AkgpU-gm|QwV*!~f4vT()smv)XEr#yqRspS z+?SB_1J8#jN|kj*`J?sH-O>wMu0M|E`Y=x{c@E^zK1@(wiFjm$(S=0PQ7|cZvMO4B zWEKCeqJKWC)#`MkCejipZnw|Ah%Lk)zvq{!+=$=mKJ_S zJGmS+tic7$fGE0aT+lGF_p$t-;*`o|?FYDRkLcgXKX$wX;dI>$xT>jG9pX#(mUf*t zY}Si6_2-e&{fXzvIg4Q{|4X9@RtuJ$cedGkw$mH~O)8a!WHFmiglZJQsQln`N`X^h za4^P%BKml_@E(D?5K?Y1GKW?6gpvBlbMPzYU{ubIfH9@nW!VfFrpZRPt~H^6&@yo> zt+?mAagAXeP1e*tGSbaA#Q3jdx`GOs2%7dN(d!=qLblWxckmg)FsbjAU38j&@zUBe z8kJaPxk1_s>)uqMx%ZpiaAB#%ntdlsLy+r<_`xtY#91_u#0IBuH(sM559K@r7*fQP)c<_zt@w4Yk)}WNj+*Tq3 z5rGPbNC}e9#We&g`C;IO?GDzYUMb8H84<|XqqjdR0%J8gFhiUq`j_k8u<0ccPH+i=pl^{xK5mctxq~{kX-XcqEZt) zyxQcB1Ob%!@ySY5F7yCIB{hzU^*=OT3VskH}3sZOHA(g;17ej25Aku#RfP$$ZH z7eRjsY>T4=a`HYgD*`(Vd1T18mD4KHW(^?VKP%-cn-?o(mMbDF-lpAQD}7rMPil=p zBawA?vo_XXOweuB4D45;fVM{6ky+5jwr@f6JkGklee<2lQsxHEBDIZg4QL8R&Rx^yOL503Y zI7Jlge3->CxV`o5Z?dY=S5_Nw1(mt&Db2N|cY5R5X0qGD)z>qzr-V8I?|t$Gt1_z> zfc6(MOv7r?OrlBdP^8(ui}mAUNR)e|<<>!4vU~Pu8PuCXB+KDo=rX*365TMGe@IT{ zhx@3qJDv6eoba~_^QjW~>Hcgz?vngMGybWWo6?@>imdPRHlbSR9R>KDKXFePF|jOw z`x&I*x#)ThE{cq}dm#UK@=j5>2`*&UExI*Cj5a=$hqr4f7kVXR(ppqf+;=$KnY=o9!;hpo_)X&k< z_#N3YKA(krwshm<>#j!FI<|g!$+0PgyIrxYZ%SU;{2t~Y+3|sjuU<*Y8+YLRZHbA_ z`UFIpUSV!Y1Ny>?lh@iufL2O2RAaa+*>gbvh@l@8{~K65OAU+k{k+}uW`POR5%T;H zO;2j4J!X zo-V1fWGw?lI(8{0g>|RM-uDV}I@&kx{n`$00Y&s*nXuAWeE*F<4CskG{~7g4OG$rg z!Fa=6GlSaX?v#6_LL&2C}EXUqYnYUCb{4i@<-9kU%8 zT_5afpic0xUJkAu?(Cm?4)4ETNi?8$XcxP`e9{ui|2-op`x2t;HPdBn#CW@m;8AhK z`jM&)>fRqGp}bX%sS$e@YbnzO^mm;lOmvF7-kir$!;~#?8MNO@qAdOU1@*48Ni$8g zSzetVd;n3ItDbK&S4&wuYUCq(^x|apx)R+8-J5!Bu~^fwACVygzZ$kvr8PT5K{Ctb zKkIRrXsC;O7Vaq>l>HTheWC85#+V!_DoJT9EG_%fI_}bHT&fadwvJRUV^g-k@)_d< zJWXd6!81Rdj8@-K$*ZSoK^7A=AGdG+sAgl9e5IRloZ-;5-TBVj^5Jxizv>^>xB#{-C0~2hNxw)c(k5JjcR*e%~2(%S$m}MvU z$d@ErU?^sJ@wbW6=#pRy9d!WN1c`t5V(`LAXN`}cuO$|zHr=vsFOs-p7O*PSGEG&X zEj>)JS`9qIe*{)YOUH+)M{NwGaCb| z3u_*9G0TrVv)|{JI`QVMNL9D%+QN}Fx1;br?MHCtY=Kwt%+#*%V=nt*oe7s(6JA&_ zwy8A2!pGP|cavS-!1t$)XF(|oYO0ufEE^CSa=h~dVcLLJ%HuF zh?%Bnhs~v{VS{IQml-6l9H_S1w1si`ll@WT%w=Eyu3K$$^(Yp3h>tb)%b(uzMz;jc zz=Lzh z45l5hzTA|RR}M`B+{2;PL-xmM$Eis>G<@*%c~h?Tag`aTg76iGi_U#~(F}>6ul%aoi#*vfj~XwYM~h)KJ|2QG(E_@3V_&@ZpLAbjkw9*@l*+xHZ3B}}cvd-s7S`JTjMbx_gz;f00dngjWWc8#z3JSWpRrWAP%*uO z$ob2u*kyo8+@aBQq3kA^(L0DbjiIMR_?uQwx(@W^9?Hpw4$?>c>nkPM;{0Pvg1r1wp%&wkqPQcI=tqXICAELx(ceVlPiTRSWSRjcl{YGb3tp|Jr9>NLIkQc%^H%zz{SMfe&Tct+ozz}55>d!Rd#|A~Kx9^AS@McB1%QZw)stZG$$wxdc*dHx+4H|v8F z-nyIvy+C2-(!L$(`6WkGge@rMb3F3;h*sN<4_u8qi@wz)#LszUbr_HRvb&bNGNB+D zKuH5DP~-5_qWbw)dj-4I=O(f@mKL+3v(Si5;P+jv;PbJmjgj+L-!@X;9*}$ht7)|W ziRiF%4jEgM&BkU&9&4-sx@loQIlHveaO@>x187qCaB@vNIcZtLs)$BgHfJF<_k|4> z^)r-EowxZA&$r3SXnmN^fu4BwRAeT37cgt3N$O;6O%wk?S}_M1F;FNJF#SiE*`w?5={iQ0aa@GK1R~c zONRDYPb7ZMEZ6m; zF)rPcD4=IYG!bx$3>Mi|4GISb-h-$)1an(j(iOOf3!3D01X?O)yGQ)~a;bFFe!N8K zkndtpy<#Qp-)-ah87&Rd!Qj(H-5BwQo45IbfqjaBc-DB4 zDuGcVVvvg9CEsN%0BOZhTyyLs!<`F?7LY#u5*q21z<$E9e@MgRjif9jq(9jraf)aV0u@we#Rj99xFOFM`WZ&p7`-Y|e)Io>qYrYV^MS!S*5Ibyl zT{R~8K?qmlOYKsvpWbh)oCZBCBTzA~SuIB26NPLoP$~vxz|am8V%Y17Iq|DAKMr6a zkX2DgSUU<0)iCvry?O7%ad%atDW)qSx+jAHC8oqQ9l>P)o4c<%PoOA2bW@HItXd$} zsrizAAIeJ8))v}rAv^|LOy>O#KlG2o><|9?4f1ONFpRMQw_!kj6LxB#^GS`5lIT?* z1BZpTSiXJC`xyDnIA$&VN3iHC`a)-$q1P3j$a`va`WZB~Cltb&ro>=P^dHLK4OiF~ za7t#Uw5iddbwi0-F3C-9&eyB$YF|Am?N7yB7i;5%uFM0!IdwiuClD$c=@P*?T68Sz zTf-#>7h99^$bANbnCRmLn&V!npcUM3_6K*h^y`+=%5CAv%F7Dm9mT6)VLbq;@cgh zE}C?T$KgXlLTAloQv`i-r)(Sjxm-Z0mz%Y7picv%Jq@8wl?5pl;_03k)o27SK5D*D z>aovRN@>n1+j{+Dqzk`jw`R8)$9&isSI&~ZH)`0Q;puLcXP2|WTV}QNE zO%E2d2&fEe`{_T{c&Lr!bgSwLaEe0OX3<0tlJEmgC*2a|@@x!%(xC}rdMhVU+$x1XQ+;H*{f? z;-E!eleu*l0*T_B((p&Gv_|?TgxwYF;aB2}Y9DCRbm8*$q^n3gI-VYHu+${Dw9WlP zVut?|!M*V*NMGhC)nR%!zBb>y{>ePgWqGlSbtSI*b zP|B^NJ3S@Az`nBfgGdunb{0M0nlbZF{7?B3bGJEd_>;c4mK-uaH)FUkq&a-sA&`K$ zL$la0AQq&Rt+n({suo_#KvTkce3c*D%;<$9kFbW5LtX*1^DW0z)S|sayY7wJ*d;!xZ_{-ymWo zM@j~+9gF}ZFlbzQxqO3y_D5~%sZTsfGnbmNTOBF!zh|Wo(c}2d-BP4WUt8m_?tPqR zW@gE=@59b{$B`)#$E~fugxD8DC<#VmPID)u z^TF=H(AK~k=2N_##+9=MdVcfy7HE~1c5Sz-7wi-_p^dC|Ed<#o|9tHJTSH4GT+Qo-H1ecrAq?vTcoMCEW zPrcZvAoo@!jr{X{H7cWZB_>iwD*f$>l{d!fNy3M%8mY@}1-mDV^A#RwHiJRb&V;&A zCH^0Nj4x{lZ7R6Uvf=d~>_{$0M|Z!Cc{&%Z+jePArsWBeMX_SjViv3v6$J{UMiR`r zoha@41hoJu^ZS{sw;WX)8#QT-)rFU#W)3D-#yRehJo#}UJj@w9lycLxeGy;4F(0aw ze&-0qwkA*QBVo+*>gWeGq!TnO{S3zm1^-Oe11G)L~c`v#-UC~Mt&MIljIN* zlfLDeX(0nUL!Z`^7ac!^rpe;pA=9~GJw#n^rw>6YE@V(aK8{+vp(60sFj%MLTtJOu zAJOS5&|Vv){?WK&U5!#t2%{i5;$-fuq?;QnEDk+EsHO3D?I>djIh(7IZCyyj5RKcN z{FYL|tx|3h6@ai|ej&U?9fW8T#{RAcUQ$$kXN93~Z~KzWr~ZD(X#;Vuht`SrhcQ=< zi|hH=)%A>Mb;vVE+2%1{_`E6TvXgo;x{Xjs3JWEU4vggXY5lK3Pj-2ud2RDb2|ZNS z+z>h8b42lbuu5Ni!)2FKV?lI5poeibaki^;gYg%die;Uh;L@#oJ0v?;aY`QSviq>_ zwK_USx%R7YO-xR~FSJ1FF+9wUN&mDvo!v)VIzQPW>E~@rHM2U3uKA>;olTnbaO`~7 z-&#?KaOT&p&VvYcSk87>?{|myH4}Wve>61~BXluiHZ1xhbh?frt9Du4+)iUmR!KFF pk4EC1y5k{hoL-dZJaRqW27z7v?3>g@J zii#N+rZ6yUWnj3*!0;Uiz_O#nXb2435UA2n2j&F^_7YEDSN2Psvi#~2|F%ru3Cted zo-U3d6?5L+e7J44f`D6KRqm}H|Mc%{4Jk;IaPj3?IPdRcF%i-I3X@D&hzp%_lIfdl zPHnn#eckkUuXdAFuPmNbKThP`eP^D0#Jn3Xt{l~TXQ{NBv(t*vYR`cu`}WM}+m+w& zYu{Op%Wu6J@0dFn-s@7%J0q38^G5m)ImTO-XKD>{7uB`AnmAqghjIBOhbk9WrLrSW z6GeqZ<~!&*)N_=(-diAH6`2qhcAN3l^a;`-g#zVAb{;&-z`eZSwL8-rv%|`aw;pdR zt9-5~8)BWEBr@cLLW}9h+Pr_5d7jr)^y1i!}&!w8l5z;4)XfeL4fpXWLHS{}G&`J3UwmvHP1QFRywPq|(7wZP z*h=`+_8-ryuQTd9M6S|pPDt9=SXnx0ijP7yv&vx?^&$m_t;*N(B-ivj320bsJBxvv zah}fchiDDs$0Dszfr?S!-Ee{$|FC~gomfGb8|DOKr)q|Z+{Xbg$ tUm5SYrc*XAR(8WY#cB4pYf$1q)I`C64|W^ zC=x&*24w`1QIOKImj;RKl@K(5A!+>DbNUz5`{ADFo_o$c=lR`x?k~=cSSjRwBme+X zxYIW00YJ<`q`MHiM439?bsqqB0nTS#ZAE30G|&M6JdyeuUkUur2#`j!ibR&hBXAD3 z;{6iJC@m#HU2X#az_BiQM*ca6RG3%l6N4rS&p&(+ z(8v;YE|IvT0KS<`K-_uK_hxI+RJl#1wFrnMm&R@ro`VueFn!(X+kMg$vZRqNn_>xD z+(Ot8bki+hvoKN#WBt~#Lma-MW9m(K$2u3BI7*Bg_^mW?e6ueVvvU-_n>zp+ch}ly zF?z0S5BPrS>%!FFUkwpIb6nzgZ)@?~yb2b08SOATZU9pExjQ+ zfI%0wW@Sr#lEs_CI$z$iYx@LA#4tTeKOG@CZ!Y3Bw(SEKN(es$mea)0#dvXi~1 zMji?PzIk1>L8`jAsO4}AHNmW>Uy{z`6skE3{Kq!v{esmaMdjx9Q&X#v!ZB-FPuba9 zfh!?xn?6CI#y&zXsQ*c;L|A>iU*`LmL`r!EqaN9I;LF#mng{2Ly?pZ+tz{ul5_ zK85mGW0=|OGixYPxQO@fb=d(YuEe^Q6s?V2L+kBM+Q!5vjG)*{(0lXIOrd}6v_ABQ zpir0HfOS|cslTbG$ZJdr-wC|lr?^>*4a&}+Ofw}m(3jM*7Mb$kfpk2a#c6QAcqEfE_o(Oe_G)q{KCOgW%?s44cGfo?r z__4SdeW32so42B|XAVL*h`L!Dzi^n@vXH;W7;@v;c^B*@(+renK6j$6frR9Fh4_jg z{6~#|<~f;4!Fn2;lJ2!NRP{*5eR;d*cw@~@EI%wIx?AO~m(dH((2_yMDU9Btgx#hw zbMNKeCU2#rbtkD)Q*lN^_b_+U62 z0S(DjZ_gHg=g<&5DA(XxVs!VjHTXzo99+^O2#cvtw|iKM(Znc!g5`y$Ehb{n&B%Zh zw};8wJ#w<6&L$ww+XRoe{V{jW3M$@td=Nz4U}ywL5}Di_o{i|EtbbTx!L`*%5~}i- zhwv&ebWKRob6mb8cF7=CWXe$d9XeQ_=(#b7R|yQCQud3^>`e|zDKq=mD`dQ6t0prm Ub<08s0%)Bpeg literal 0 HcmV?d00001 diff --git a/Drivers/activegs_driver.cpp b/Drivers/activegs_driver.cpp new file mode 100644 index 0000000..81e0a5e --- /dev/null +++ b/Drivers/activegs_driver.cpp @@ -0,0 +1,17 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "../kegs/src/driver.h" + +extern void default_config_load_roms(); +void activegs_driver() +{ + g_driver.x_config_load_roms = default_config_load_roms; +#if !defined(ACTIVEGSKARATEKA) && defined(DRIVER_IOS) + extern void x_notify_eject(); + g_driver.x_notify_eject = x_notify_eject; +#endif +} diff --git a/Libraries/libpng/png.cpp b/Libraries/libpng/png.cpp new file mode 100644 index 0000000..62b86e1 --- /dev/null +++ b/Libraries/libpng/png.cpp @@ -0,0 +1,922 @@ + +/* png.c - location for general purpose libpng functions + * + * Last changed in libpng 1.2.37 [June 4, 2009] + * For conditions of distribution and use, see copyright notice in png.h + * Copyright (c) 1998-2009 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + */ + +#define PNG_INTERNAL +#define PNG_NO_EXTERN +#include "png.h" + +/* Generate a compiler error if there is an old png.h in the search path. */ +typedef version_1_2_37 Your_png_h_is_not_version_1_2_37; + +/* Version information for C files. This had better match the version + * string defined in png.h. */ + +#ifdef PNG_USE_GLOBAL_ARRAYS +/* png_libpng_ver was changed to a function in version 1.0.5c */ +PNG_CONST char png_libpng_ver[18] = PNG_LIBPNG_VER_STRING; + +#ifdef PNG_READ_SUPPORTED + +/* png_sig was changed to a function in version 1.0.5c */ +/* Place to hold the signature string for a PNG file. */ +PNG_CONST png_byte FARDATA png_sig[8] = {137, 80, 78, 71, 13, 10, 26, 10}; +#endif /* PNG_READ_SUPPORTED */ + +/* Invoke global declarations for constant strings for known chunk types */ +PNG_IHDR; +PNG_IDAT; +PNG_IEND; +PNG_PLTE; +PNG_bKGD; +PNG_cHRM; +PNG_gAMA; +PNG_hIST; +PNG_iCCP; +PNG_iTXt; +PNG_oFFs; +PNG_pCAL; +PNG_sCAL; +PNG_pHYs; +PNG_sBIT; +PNG_sPLT; +PNG_sRGB; +PNG_tEXt; +PNG_tIME; +PNG_tRNS; +PNG_zTXt; + +#ifdef PNG_READ_SUPPORTED +/* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ + +/* Start of interlace block */ +PNG_CONST int FARDATA png_pass_start[] = {0, 4, 0, 2, 0, 1, 0}; + +/* Offset to next interlace block */ +PNG_CONST int FARDATA png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1}; + +/* Start of interlace block in the y direction */ +PNG_CONST int FARDATA png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1}; + +/* Offset to next interlace block in the y direction */ +PNG_CONST int FARDATA png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2}; + +/* Height of interlace block. This is not currently used - if you need + * it, uncomment it here and in png.h +PNG_CONST int FARDATA png_pass_height[] = {8, 8, 4, 4, 2, 2, 1}; +*/ + +/* Mask to determine which pixels are valid in a pass */ +PNG_CONST int FARDATA png_pass_mask[] = {0x80, 0x08, 0x88, 0x22, 0xaa, 0x55, 0xff}; + +/* Mask to determine which pixels to overwrite while displaying */ +PNG_CONST int FARDATA png_pass_dsp_mask[] + = {0xff, 0x0f, 0xff, 0x33, 0xff, 0x55, 0xff}; + +#endif /* PNG_READ_SUPPORTED */ +#endif /* PNG_USE_GLOBAL_ARRAYS */ + +/* Tells libpng that we have already handled the first "num_bytes" bytes + * of the PNG file signature. If the PNG data is embedded into another + * stream we can set num_bytes = 8 so that libpng will not attempt to read + * or write any of the magic bytes before it starts on the IHDR. + */ + +#ifdef PNG_READ_SUPPORTED +void PNGAPI +png_set_sig_bytes(png_structp png_ptr, int num_bytes) +{ + if (png_ptr == NULL) + return; + png_debug(1, "in png_set_sig_bytes"); + if (num_bytes > 8) + png_error(png_ptr, "Too many bytes for PNG signature."); + + png_ptr->sig_bytes = (png_byte)(num_bytes < 0 ? 0 : num_bytes); +} + +/* Checks whether the supplied bytes match the PNG signature. We allow + * checking less than the full 8-byte signature so that those apps that + * already read the first few bytes of a file to determine the file type + * can simply check the remaining bytes for extra assurance. Returns + * an integer less than, equal to, or greater than zero if sig is found, + * respectively, to be less than, to match, or be greater than the correct + * PNG signature (this is the same behaviour as strcmp, memcmp, etc). + */ +int PNGAPI +png_sig_cmp(png_bytep sig, png_size_t start, png_size_t num_to_check) +{ + png_byte png_signature[8] = {137, 80, 78, 71, 13, 10, 26, 10}; + if (num_to_check > 8) + num_to_check = 8; + else if (num_to_check < 1) + return (-1); + + if (start > 7) + return (-1); + + if (start + num_to_check > 8) + num_to_check = 8 - start; + + return ((int)(png_memcmp(&sig[start], &png_signature[start], num_to_check))); +} + +#if defined(PNG_1_0_X) || defined(PNG_1_2_X) +/* (Obsolete) function to check signature bytes. It does not allow one + * to check a partial signature. This function might be removed in the + * future - use png_sig_cmp(). Returns true (nonzero) if the file is PNG. + */ +int PNGAPI +png_check_sig(png_bytep sig, int num) +{ + return ((int)!png_sig_cmp(sig, (png_size_t)0, (png_size_t)num)); +} +#endif +#endif /* PNG_READ_SUPPORTED */ + +#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) +/* Function to allocate memory for zlib and clear it to 0. */ +#ifdef PNG_1_0_X +voidpf PNGAPI +#else +voidpf /* private */ +#endif +png_zalloc(voidpf png_ptr, uInt items, uInt size) +{ + png_voidp ptr; + png_structp p=(png_structp)png_ptr; + png_uint_32 save_flags=p->flags; + png_uint_32 num_bytes; + + if (png_ptr == NULL) + return (NULL); + if (items > PNG_UINT_32_MAX/size) + { + png_warning (p, "Potential overflow in png_zalloc()"); + return (NULL); + } + num_bytes = (png_uint_32)items * size; + + p->flags|=PNG_FLAG_MALLOC_NULL_MEM_OK; + ptr = (png_voidp)png_malloc((png_structp)png_ptr, num_bytes); + p->flags=save_flags; + +#if defined(PNG_1_0_X) && !defined(PNG_NO_ZALLOC_ZERO) + if (ptr == NULL) + return ((voidpf)ptr); + + if (num_bytes > (png_uint_32)0x8000L) + { + png_memset(ptr, 0, (png_size_t)0x8000L); + png_memset((png_bytep)ptr + (png_size_t)0x8000L, 0, + (png_size_t)(num_bytes - (png_uint_32)0x8000L)); + } + else + { + png_memset(ptr, 0, (png_size_t)num_bytes); + } +#endif + return ((voidpf)ptr); +} + +/* Function to free memory for zlib */ +#ifdef PNG_1_0_X +void PNGAPI +#else +void /* private */ +#endif +png_zfree(voidpf png_ptr, voidpf ptr) +{ + png_free((png_structp)png_ptr, (png_voidp)ptr); +} + +/* Reset the CRC variable to 32 bits of 1's. Care must be taken + * in case CRC is > 32 bits to leave the top bits 0. + */ +void /* PRIVATE */ +png_reset_crc(png_structp png_ptr) +{ + png_ptr->crc = crc32(0, Z_NULL, 0); +} + +/* Calculate the CRC over a section of data. We can only pass as + * much data to this routine as the largest single buffer size. We + * also check that this data will actually be used before going to the + * trouble of calculating it. + */ +void /* PRIVATE */ +png_calculate_crc(png_structp png_ptr, png_bytep ptr, png_size_t length) +{ + int need_crc = 1; + + if (png_ptr->chunk_name[0] & 0x20) /* ancillary */ + { + if ((png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_MASK) == + (PNG_FLAG_CRC_ANCILLARY_USE | PNG_FLAG_CRC_ANCILLARY_NOWARN)) + need_crc = 0; + } + else /* critical */ + { + if (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_IGNORE) + need_crc = 0; + } + + if (need_crc) + png_ptr->crc = crc32(png_ptr->crc, ptr, (uInt)length); +} + +/* Allocate the memory for an info_struct for the application. We don't + * really need the png_ptr, but it could potentially be useful in the + * future. This should be used in favour of malloc(png_sizeof(png_info)) + * and png_info_init() so that applications that want to use a shared + * libpng don't have to be recompiled if png_info changes size. + */ +png_infop PNGAPI +png_create_info_struct(png_structp png_ptr) +{ + png_infop info_ptr; + + png_debug(1, "in png_create_info_struct"); + if (png_ptr == NULL) + return (NULL); +#ifdef PNG_USER_MEM_SUPPORTED + info_ptr = (png_infop)png_create_struct_2(PNG_STRUCT_INFO, + png_ptr->malloc_fn, png_ptr->mem_ptr); +#else + info_ptr = (png_infop)png_create_struct(PNG_STRUCT_INFO); +#endif + if (info_ptr != NULL) + png_info_init_3(&info_ptr, png_sizeof(png_info)); + + return (info_ptr); +} + +/* This function frees the memory associated with a single info struct. + * Normally, one would use either png_destroy_read_struct() or + * png_destroy_write_struct() to free an info struct, but this may be + * useful for some applications. + */ +void PNGAPI +png_destroy_info_struct(png_structp png_ptr, png_infopp info_ptr_ptr) +{ + png_infop info_ptr = NULL; + if (png_ptr == NULL) + return; + + png_debug(1, "in png_destroy_info_struct"); + if (info_ptr_ptr != NULL) + info_ptr = *info_ptr_ptr; + + if (info_ptr != NULL) + { + png_info_destroy(png_ptr, info_ptr); + +#ifdef PNG_USER_MEM_SUPPORTED + png_destroy_struct_2((png_voidp)info_ptr, png_ptr->free_fn, + png_ptr->mem_ptr); +#else + png_destroy_struct((png_voidp)info_ptr); +#endif + *info_ptr_ptr = NULL; + } +} + +/* Initialize the info structure. This is now an internal function (0.89) + * and applications using it are urged to use png_create_info_struct() + * instead. + */ +#if defined(PNG_1_0_X) || defined(PNG_1_2_X) +#undef png_info_init +void PNGAPI +png_info_init(png_infop info_ptr) +{ + /* We only come here via pre-1.0.12-compiled applications */ + png_info_init_3(&info_ptr, 0); +} +#endif + +void PNGAPI +png_info_init_3(png_infopp ptr_ptr, png_size_t png_info_struct_size) +{ + png_infop info_ptr = *ptr_ptr; + + if (info_ptr == NULL) + return; + + png_debug(1, "in png_info_init_3"); + + if (png_sizeof(png_info) > png_info_struct_size) + { + png_destroy_struct(info_ptr); + info_ptr = (png_infop)png_create_struct(PNG_STRUCT_INFO); + *ptr_ptr = info_ptr; + } + + /* Set everything to 0 */ + png_memset(info_ptr, 0, png_sizeof(png_info)); +} + +#ifdef PNG_FREE_ME_SUPPORTED +void PNGAPI +png_data_freer(png_structp png_ptr, png_infop info_ptr, + int freer, png_uint_32 mask) +{ + png_debug(1, "in png_data_freer"); + if (png_ptr == NULL || info_ptr == NULL) + return; + if (freer == PNG_DESTROY_WILL_FREE_DATA) + info_ptr->free_me |= mask; + else if (freer == PNG_USER_WILL_FREE_DATA) + info_ptr->free_me &= ~mask; + else + png_warning(png_ptr, + "Unknown freer parameter in png_data_freer."); +} +#endif + +void PNGAPI +png_free_data(png_structp png_ptr, png_infop info_ptr, png_uint_32 mask, + int num) +{ + png_debug(1, "in png_free_data"); + if (png_ptr == NULL || info_ptr == NULL) + return; + +#if defined(PNG_TEXT_SUPPORTED) + /* Free text item num or (if num == -1) all text items */ +#ifdef PNG_FREE_ME_SUPPORTED + if ((mask & PNG_FREE_TEXT) & info_ptr->free_me) +#else + if (mask & PNG_FREE_TEXT) +#endif + { + if (num != -1) + { + if (info_ptr->text && info_ptr->text[num].key) + { + png_free(png_ptr, info_ptr->text[num].key); + info_ptr->text[num].key = NULL; + } + } + else + { + int i; + for (i = 0; i < info_ptr->num_text; i++) + png_free_data(png_ptr, info_ptr, PNG_FREE_TEXT, i); + png_free(png_ptr, info_ptr->text); + info_ptr->text = NULL; + info_ptr->num_text=0; + } + } +#endif + +#if defined(PNG_tRNS_SUPPORTED) + /* Free any tRNS entry */ +#ifdef PNG_FREE_ME_SUPPORTED + if ((mask & PNG_FREE_TRNS) & info_ptr->free_me) +#else + if ((mask & PNG_FREE_TRNS) && (png_ptr->flags & PNG_FLAG_FREE_TRNS)) +#endif + { + png_free(png_ptr, info_ptr->trans); + info_ptr->trans = NULL; + info_ptr->valid &= ~PNG_INFO_tRNS; +#ifndef PNG_FREE_ME_SUPPORTED + png_ptr->flags &= ~PNG_FLAG_FREE_TRNS; +#endif + } +#endif + +#if defined(PNG_sCAL_SUPPORTED) + /* Free any sCAL entry */ +#ifdef PNG_FREE_ME_SUPPORTED + if ((mask & PNG_FREE_SCAL) & info_ptr->free_me) +#else + if (mask & PNG_FREE_SCAL) +#endif + { +#if defined(PNG_FIXED_POINT_SUPPORTED) && !defined(PNG_FLOATING_POINT_SUPPORTED) + png_free(png_ptr, info_ptr->scal_s_width); + png_free(png_ptr, info_ptr->scal_s_height); + info_ptr->scal_s_width = NULL; + info_ptr->scal_s_height = NULL; +#endif + info_ptr->valid &= ~PNG_INFO_sCAL; + } +#endif + +#if defined(PNG_pCAL_SUPPORTED) + /* Free any pCAL entry */ +#ifdef PNG_FREE_ME_SUPPORTED + if ((mask & PNG_FREE_PCAL) & info_ptr->free_me) +#else + if (mask & PNG_FREE_PCAL) +#endif + { + png_free(png_ptr, info_ptr->pcal_purpose); + png_free(png_ptr, info_ptr->pcal_units); + info_ptr->pcal_purpose = NULL; + info_ptr->pcal_units = NULL; + if (info_ptr->pcal_params != NULL) + { + int i; + for (i = 0; i < (int)info_ptr->pcal_nparams; i++) + { + png_free(png_ptr, info_ptr->pcal_params[i]); + info_ptr->pcal_params[i]=NULL; + } + png_free(png_ptr, info_ptr->pcal_params); + info_ptr->pcal_params = NULL; + } + info_ptr->valid &= ~PNG_INFO_pCAL; + } +#endif + +#if defined(PNG_iCCP_SUPPORTED) + /* Free any iCCP entry */ +#ifdef PNG_FREE_ME_SUPPORTED + if ((mask & PNG_FREE_ICCP) & info_ptr->free_me) +#else + if (mask & PNG_FREE_ICCP) +#endif + { + png_free(png_ptr, info_ptr->iccp_name); + png_free(png_ptr, info_ptr->iccp_profile); + info_ptr->iccp_name = NULL; + info_ptr->iccp_profile = NULL; + info_ptr->valid &= ~PNG_INFO_iCCP; + } +#endif + +#if defined(PNG_sPLT_SUPPORTED) + /* Free a given sPLT entry, or (if num == -1) all sPLT entries */ +#ifdef PNG_FREE_ME_SUPPORTED + if ((mask & PNG_FREE_SPLT) & info_ptr->free_me) +#else + if (mask & PNG_FREE_SPLT) +#endif + { + if (num != -1) + { + if (info_ptr->splt_palettes) + { + png_free(png_ptr, info_ptr->splt_palettes[num].name); + png_free(png_ptr, info_ptr->splt_palettes[num].entries); + info_ptr->splt_palettes[num].name = NULL; + info_ptr->splt_palettes[num].entries = NULL; + } + } + else + { + if (info_ptr->splt_palettes_num) + { + int i; + for (i = 0; i < (int)info_ptr->splt_palettes_num; i++) + png_free_data(png_ptr, info_ptr, PNG_FREE_SPLT, i); + + png_free(png_ptr, info_ptr->splt_palettes); + info_ptr->splt_palettes = NULL; + info_ptr->splt_palettes_num = 0; + } + info_ptr->valid &= ~PNG_INFO_sPLT; + } + } +#endif + +#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) + if (png_ptr->unknown_chunk.data) + { + png_free(png_ptr, png_ptr->unknown_chunk.data); + png_ptr->unknown_chunk.data = NULL; + } + +#ifdef PNG_FREE_ME_SUPPORTED + if ((mask & PNG_FREE_UNKN) & info_ptr->free_me) +#else + if (mask & PNG_FREE_UNKN) +#endif + { + if (num != -1) + { + if (info_ptr->unknown_chunks) + { + png_free(png_ptr, info_ptr->unknown_chunks[num].data); + info_ptr->unknown_chunks[num].data = NULL; + } + } + else + { + int i; + + if (info_ptr->unknown_chunks_num) + { + for (i = 0; i < (int)info_ptr->unknown_chunks_num; i++) + png_free_data(png_ptr, info_ptr, PNG_FREE_UNKN, i); + + png_free(png_ptr, info_ptr->unknown_chunks); + info_ptr->unknown_chunks = NULL; + info_ptr->unknown_chunks_num = 0; + } + } + } +#endif + +#if defined(PNG_hIST_SUPPORTED) + /* Free any hIST entry */ +#ifdef PNG_FREE_ME_SUPPORTED + if ((mask & PNG_FREE_HIST) & info_ptr->free_me) +#else + if ((mask & PNG_FREE_HIST) && (png_ptr->flags & PNG_FLAG_FREE_HIST)) +#endif + { + png_free(png_ptr, info_ptr->hist); + info_ptr->hist = NULL; + info_ptr->valid &= ~PNG_INFO_hIST; +#ifndef PNG_FREE_ME_SUPPORTED + png_ptr->flags &= ~PNG_FLAG_FREE_HIST; +#endif + } +#endif + + /* Free any PLTE entry that was internally allocated */ +#ifdef PNG_FREE_ME_SUPPORTED + if ((mask & PNG_FREE_PLTE) & info_ptr->free_me) +#else + if ((mask & PNG_FREE_PLTE) && (png_ptr->flags & PNG_FLAG_FREE_PLTE)) +#endif + { + png_zfree(png_ptr, info_ptr->palette); + info_ptr->palette = NULL; + info_ptr->valid &= ~PNG_INFO_PLTE; +#ifndef PNG_FREE_ME_SUPPORTED + png_ptr->flags &= ~PNG_FLAG_FREE_PLTE; +#endif + info_ptr->num_palette = 0; + } + +#if defined(PNG_INFO_IMAGE_SUPPORTED) + /* Free any image bits attached to the info structure */ +#ifdef PNG_FREE_ME_SUPPORTED + if ((mask & PNG_FREE_ROWS) & info_ptr->free_me) +#else + if (mask & PNG_FREE_ROWS) +#endif + { + if (info_ptr->row_pointers) + { + int row; + for (row = 0; row < (int)info_ptr->height; row++) + { + png_free(png_ptr, info_ptr->row_pointers[row]); + info_ptr->row_pointers[row]=NULL; + } + png_free(png_ptr, info_ptr->row_pointers); + info_ptr->row_pointers=NULL; + } + info_ptr->valid &= ~PNG_INFO_IDAT; + } +#endif + +#ifdef PNG_FREE_ME_SUPPORTED + if (num == -1) + info_ptr->free_me &= ~mask; + else + info_ptr->free_me &= ~(mask & ~PNG_FREE_MUL); +#endif +} + +/* This is an internal routine to free any memory that the info struct is + * pointing to before re-using it or freeing the struct itself. Recall + * that png_free() checks for NULL pointers for us. + */ +void /* PRIVATE */ +png_info_destroy(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_info_destroy"); + + png_free_data(png_ptr, info_ptr, PNG_FREE_ALL, -1); + +#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) + if (png_ptr->num_chunk_list) + { + png_free(png_ptr, png_ptr->chunk_list); + png_ptr->chunk_list=NULL; + png_ptr->num_chunk_list = 0; + } +#endif + + png_info_init_3(&info_ptr, png_sizeof(png_info)); +} +#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */ + +/* This function returns a pointer to the io_ptr associated with the user + * functions. The application should free any memory associated with this + * pointer before png_write_destroy() or png_read_destroy() are called. + */ +png_voidp PNGAPI +png_get_io_ptr(png_structp png_ptr) +{ + if (png_ptr == NULL) + return (NULL); + return (png_ptr->io_ptr); +} + +#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) +#if !defined(PNG_NO_STDIO) +/* Initialize the default input/output functions for the PNG file. If you + * use your own read or write routines, you can call either png_set_read_fn() + * or png_set_write_fn() instead of png_init_io(). If you have defined + * PNG_NO_STDIO, you must use a function of your own because "FILE *" isn't + * necessarily available. + */ +void PNGAPI +png_init_io(png_structp png_ptr, png_FILE_p fp) +{ + png_debug(1, "in png_init_io"); + if (png_ptr == NULL) + return; + png_ptr->io_ptr = (png_voidp)fp; +} +#endif + +#if defined(PNG_TIME_RFC1123_SUPPORTED) +/* Convert the supplied time into an RFC 1123 string suitable for use in + * a "Creation Time" or other text-based time string. + */ +png_charp PNGAPI +png_convert_to_rfc1123(png_structp png_ptr, png_timep ptime) +{ + static PNG_CONST char short_months[12][4] = + {"Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; + + if (png_ptr == NULL) + return (NULL); + if (png_ptr->time_buffer == NULL) + { + png_ptr->time_buffer = (png_charp)png_malloc(png_ptr, (png_uint_32)(29* + png_sizeof(char))); + } + +#if defined(_WIN32_WCE) + { + wchar_t time_buf[29]; + wsprintf(time_buf, TEXT("%d %S %d %02d:%02d:%02d +0000"), + ptime->day % 32, short_months[(ptime->month - 1) % 12], + ptime->year, ptime->hour % 24, ptime->minute % 60, + ptime->second % 61); + WideCharToMultiByte(CP_ACP, 0, time_buf, -1, png_ptr->time_buffer, 29, + NULL, NULL); + } +#else +#ifdef USE_FAR_KEYWORD + { + char near_time_buf[29]; + png_snprintf6(near_time_buf, 29, "%d %s %d %02d:%02d:%02d +0000", + ptime->day % 32, short_months[(ptime->month - 1) % 12], + ptime->year, ptime->hour % 24, ptime->minute % 60, + ptime->second % 61); + png_memcpy(png_ptr->time_buffer, near_time_buf, + 29*png_sizeof(char)); + } +#else + png_snprintf6(png_ptr->time_buffer, 29, "%d %s %d %02d:%02d:%02d +0000", + ptime->day % 32, short_months[(ptime->month - 1) % 12], + ptime->year, ptime->hour % 24, ptime->minute % 60, + ptime->second % 61); +#endif +#endif /* _WIN32_WCE */ + return ((png_charp)png_ptr->time_buffer); +} +#endif /* PNG_TIME_RFC1123_SUPPORTED */ + +#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */ + +png_charp PNGAPI +png_get_copyright(png_structp png_ptr) +{ + png_ptr = png_ptr; /* Silence compiler warning about unused png_ptr */ + return ((png_charp) "\n libpng version 1.2.37 - June 4, 2009\n\ + Copyright (c) 1998-2009 Glenn Randers-Pehrson\n\ + Copyright (c) 1996-1997 Andreas Dilger\n\ + Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.\n"); +} + +/* The following return the library version as a short string in the + * format 1.0.0 through 99.99.99zz. To get the version of *.h files + * used with your application, print out PNG_LIBPNG_VER_STRING, which + * is defined in png.h. + * Note: now there is no difference between png_get_libpng_ver() and + * png_get_header_ver(). Due to the version_nn_nn_nn typedef guard, + * it is guaranteed that png.c uses the correct version of png.h. + */ +png_charp PNGAPI +png_get_libpng_ver(png_structp png_ptr) +{ + /* Version of *.c files used when building libpng */ + png_ptr = png_ptr; /* Silence compiler warning about unused png_ptr */ + return ((png_charp) PNG_LIBPNG_VER_STRING); +} + +png_charp PNGAPI +png_get_header_ver(png_structp png_ptr) +{ + /* Version of *.h files used when building libpng */ + png_ptr = png_ptr; /* Silence compiler warning about unused png_ptr */ + return ((png_charp) PNG_LIBPNG_VER_STRING); +} + +png_charp PNGAPI +png_get_header_version(png_structp png_ptr) +{ + /* Returns longer string containing both version and date */ + png_ptr = png_ptr; /* Silence compiler warning about unused png_ptr */ + return ((png_charp) PNG_HEADER_VERSION_STRING +#ifndef PNG_READ_SUPPORTED + " (NO READ SUPPORT)" +#endif + "\n"); +} + +#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) +#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED +int PNGAPI +png_handle_as_unknown(png_structp png_ptr, png_bytep chunk_name) +{ + /* Check chunk_name and return "keep" value if it's on the list, else 0 */ + int i; + png_bytep p; + if (png_ptr == NULL || chunk_name == NULL || png_ptr->num_chunk_list<=0) + return 0; + p = png_ptr->chunk_list + png_ptr->num_chunk_list*5 - 5; + for (i = png_ptr->num_chunk_list; i; i--, p -= 5) + if (!png_memcmp(chunk_name, p, 4)) + return ((int)*(p + 4)); + return 0; +} +#endif + +/* This function, added to libpng-1.0.6g, is untested. */ +int PNGAPI +png_reset_zstream(png_structp png_ptr) +{ + if (png_ptr == NULL) + return Z_STREAM_ERROR; + return (inflateReset(&png_ptr->zstream)); +} +#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */ + +/* This function was added to libpng-1.0.7 */ +png_uint_32 PNGAPI +png_access_version_number(void) +{ + /* Version of *.c files used when building libpng */ + return((png_uint_32) PNG_LIBPNG_VER); +} + + +#if defined(PNG_READ_SUPPORTED) && defined(PNG_ASSEMBLER_CODE_SUPPORTED) +#if !defined(PNG_1_0_X) +/* This function was added to libpng 1.2.0 */ +int PNGAPI +png_mmx_support(void) +{ + /* Obsolete, to be removed from libpng-1.4.0 */ + return -1; +} +#endif /* PNG_1_0_X */ +#endif /* PNG_READ_SUPPORTED && PNG_ASSEMBLER_CODE_SUPPORTED */ + +#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) +#ifdef PNG_SIZE_T +/* Added at libpng version 1.2.6 */ + PNG_EXTERN png_size_t PNGAPI png_convert_size PNGARG((size_t size)); +png_size_t PNGAPI +png_convert_size(size_t size) +{ + if (size > (png_size_t)-1) + PNG_ABORT(); /* We haven't got access to png_ptr, so no png_error() */ + return ((png_size_t)size); +} +#endif /* PNG_SIZE_T */ + +/* Added at libpng version 1.2.34 and 1.4.0 (moved from pngset.c) */ +#if defined(PNG_cHRM_SUPPORTED) +#if !defined(PNG_NO_CHECK_cHRM) + +/* + * Multiply two 32-bit numbers, V1 and V2, using 32-bit + * arithmetic, to produce a 64 bit result in the HI/LO words. + * + * A B + * x C D + * ------ + * AD || BD + * AC || CB || 0 + * + * where A and B are the high and low 16-bit words of V1, + * C and D are the 16-bit words of V2, AD is the product of + * A and D, and X || Y is (X << 16) + Y. +*/ + +void png_64bit_product (long v1, long v2, unsigned long *hi_product, + unsigned long *lo_product) +{ + int a, b, c, d; + long lo, hi, x, y; + + a = (v1 >> 16) & 0xffff; + b = v1 & 0xffff; + c = (v2 >> 16) & 0xffff; + d = v2 & 0xffff; + + lo = b * d; /* BD */ + x = a * d + c * b; /* AD + CB */ + y = ((lo >> 16) & 0xffff) + x; + + lo = (lo & 0xffff) | ((y & 0xffff) << 16); + hi = (y >> 16) & 0xffff; + + hi += a * c; /* AC */ + + *hi_product = (unsigned long)hi; + *lo_product = (unsigned long)lo; +} + +int /* private */ +png_check_cHRM_fixed(png_structp png_ptr, + png_fixed_point white_x, png_fixed_point white_y, png_fixed_point red_x, + png_fixed_point red_y, png_fixed_point green_x, png_fixed_point green_y, + png_fixed_point blue_x, png_fixed_point blue_y) +{ + int ret = 1; + unsigned long xy_hi,xy_lo,yx_hi,yx_lo; + + png_debug(1, "in function png_check_cHRM_fixed"); + if (png_ptr == NULL) + return 0; + + if (white_x < 0 || white_y <= 0 || + red_x < 0 || red_y < 0 || + green_x < 0 || green_y < 0 || + blue_x < 0 || blue_y < 0) + { + png_warning(png_ptr, + "Ignoring attempt to set negative chromaticity value"); + ret = 0; + } + if (white_x > (png_fixed_point) PNG_UINT_31_MAX || + white_y > (png_fixed_point) PNG_UINT_31_MAX || + red_x > (png_fixed_point) PNG_UINT_31_MAX || + red_y > (png_fixed_point) PNG_UINT_31_MAX || + green_x > (png_fixed_point) PNG_UINT_31_MAX || + green_y > (png_fixed_point) PNG_UINT_31_MAX || + blue_x > (png_fixed_point) PNG_UINT_31_MAX || + blue_y > (png_fixed_point) PNG_UINT_31_MAX ) + { + png_warning(png_ptr, + "Ignoring attempt to set chromaticity value exceeding 21474.83"); + ret = 0; + } + if (white_x > 100000L - white_y) + { + png_warning(png_ptr, "Invalid cHRM white point"); + ret = 0; + } + if (red_x > 100000L - red_y) + { + png_warning(png_ptr, "Invalid cHRM red point"); + ret = 0; + } + if (green_x > 100000L - green_y) + { + png_warning(png_ptr, "Invalid cHRM green point"); + ret = 0; + } + if (blue_x > 100000L - blue_y) + { + png_warning(png_ptr, "Invalid cHRM blue point"); + ret = 0; + } + + png_64bit_product(green_x - red_x, blue_y - red_y, &xy_hi, &xy_lo); + png_64bit_product(green_y - red_y, blue_x - red_x, &yx_hi, &yx_lo); + + if (xy_hi == yx_hi && xy_lo == yx_lo) + { + png_warning(png_ptr, + "Ignoring attempt to set cHRM RGB triangle with zero area"); + ret = 0; + } + + return ret; +} +#endif /* NO_PNG_CHECK_cHRM */ +#endif /* PNG_cHRM_SUPPORTED */ +#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */ diff --git a/Libraries/libpng/png.h b/Libraries/libpng/png.h new file mode 100644 index 0000000..edcd13a --- /dev/null +++ b/Libraries/libpng/png.h @@ -0,0 +1,3690 @@ +/* png.h - header file for PNG reference library + * + * libpng version 1.2.37 - June 4, 2009 + * Copyright (c) 1998-2009 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * Authors and maintainers: + * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat + * libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger + * libpng versions 0.97, January 1998, through 1.2.37 - June 4, 2009: Glenn + * See also "Contributing Authors", below. + * + * Note about libpng version numbers: + * + * Due to various miscommunications, unforeseen code incompatibilities + * and occasional factors outside the authors' control, version numbering + * on the library has not always been consistent and straightforward. + * The following table summarizes matters since version 0.89c, which was + * the first widely used release: + * + * source png.h png.h shared-lib + * version string int version + * ------- ------ ----- ---------- + * 0.89c "1.0 beta 3" 0.89 89 1.0.89 + * 0.90 "1.0 beta 4" 0.90 90 0.90 [should have been 2.0.90] + * 0.95 "1.0 beta 5" 0.95 95 0.95 [should have been 2.0.95] + * 0.96 "1.0 beta 6" 0.96 96 0.96 [should have been 2.0.96] + * 0.97b "1.00.97 beta 7" 1.00.97 97 1.0.1 [should have been 2.0.97] + * 0.97c 0.97 97 2.0.97 + * 0.98 0.98 98 2.0.98 + * 0.99 0.99 98 2.0.99 + * 0.99a-m 0.99 99 2.0.99 + * 1.00 1.00 100 2.1.0 [100 should be 10000] + * 1.0.0 (from here on, the 100 2.1.0 [100 should be 10000] + * 1.0.1 png.h string is 10001 2.1.0 + * 1.0.1a-e identical to the 10002 from here on, the shared library + * 1.0.2 source version) 10002 is 2.V where V is the source code + * 1.0.2a-b 10003 version, except as noted. + * 1.0.3 10003 + * 1.0.3a-d 10004 + * 1.0.4 10004 + * 1.0.4a-f 10005 + * 1.0.5 (+ 2 patches) 10005 + * 1.0.5a-d 10006 + * 1.0.5e-r 10100 (not source compatible) + * 1.0.5s-v 10006 (not binary compatible) + * 1.0.6 (+ 3 patches) 10006 (still binary incompatible) + * 1.0.6d-f 10007 (still binary incompatible) + * 1.0.6g 10007 + * 1.0.6h 10007 10.6h (testing xy.z so-numbering) + * 1.0.6i 10007 10.6i + * 1.0.6j 10007 2.1.0.6j (incompatible with 1.0.0) + * 1.0.7beta11-14 DLLNUM 10007 2.1.0.7beta11-14 (binary compatible) + * 1.0.7beta15-18 1 10007 2.1.0.7beta15-18 (binary compatible) + * 1.0.7rc1-2 1 10007 2.1.0.7rc1-2 (binary compatible) + * 1.0.7 1 10007 (still compatible) + * 1.0.8beta1-4 1 10008 2.1.0.8beta1-4 + * 1.0.8rc1 1 10008 2.1.0.8rc1 + * 1.0.8 1 10008 2.1.0.8 + * 1.0.9beta1-6 1 10009 2.1.0.9beta1-6 + * 1.0.9rc1 1 10009 2.1.0.9rc1 + * 1.0.9beta7-10 1 10009 2.1.0.9beta7-10 + * 1.0.9rc2 1 10009 2.1.0.9rc2 + * 1.0.9 1 10009 2.1.0.9 + * 1.0.10beta1 1 10010 2.1.0.10beta1 + * 1.0.10rc1 1 10010 2.1.0.10rc1 + * 1.0.10 1 10010 2.1.0.10 + * 1.0.11beta1-3 1 10011 2.1.0.11beta1-3 + * 1.0.11rc1 1 10011 2.1.0.11rc1 + * 1.0.11 1 10011 2.1.0.11 + * 1.0.12beta1-2 2 10012 2.1.0.12beta1-2 + * 1.0.12rc1 2 10012 2.1.0.12rc1 + * 1.0.12 2 10012 2.1.0.12 + * 1.1.0a-f - 10100 2.1.1.0a-f (branch abandoned) + * 1.2.0beta1-2 2 10200 2.1.2.0beta1-2 + * 1.2.0beta3-5 3 10200 3.1.2.0beta3-5 + * 1.2.0rc1 3 10200 3.1.2.0rc1 + * 1.2.0 3 10200 3.1.2.0 + * 1.2.1beta1-4 3 10201 3.1.2.1beta1-4 + * 1.2.1rc1-2 3 10201 3.1.2.1rc1-2 + * 1.2.1 3 10201 3.1.2.1 + * 1.2.2beta1-6 12 10202 12.so.0.1.2.2beta1-6 + * 1.0.13beta1 10 10013 10.so.0.1.0.13beta1 + * 1.0.13rc1 10 10013 10.so.0.1.0.13rc1 + * 1.2.2rc1 12 10202 12.so.0.1.2.2rc1 + * 1.0.13 10 10013 10.so.0.1.0.13 + * 1.2.2 12 10202 12.so.0.1.2.2 + * 1.2.3rc1-6 12 10203 12.so.0.1.2.3rc1-6 + * 1.2.3 12 10203 12.so.0.1.2.3 + * 1.2.4beta1-3 13 10204 12.so.0.1.2.4beta1-3 + * 1.0.14rc1 13 10014 10.so.0.1.0.14rc1 + * 1.2.4rc1 13 10204 12.so.0.1.2.4rc1 + * 1.0.14 10 10014 10.so.0.1.0.14 + * 1.2.4 13 10204 12.so.0.1.2.4 + * 1.2.5beta1-2 13 10205 12.so.0.1.2.5beta1-2 + * 1.0.15rc1-3 10 10015 10.so.0.1.0.15rc1-3 + * 1.2.5rc1-3 13 10205 12.so.0.1.2.5rc1-3 + * 1.0.15 10 10015 10.so.0.1.0.15 + * 1.2.5 13 10205 12.so.0.1.2.5 + * 1.2.6beta1-4 13 10206 12.so.0.1.2.6beta1-4 + * 1.0.16 10 10016 10.so.0.1.0.16 + * 1.2.6 13 10206 12.so.0.1.2.6 + * 1.2.7beta1-2 13 10207 12.so.0.1.2.7beta1-2 + * 1.0.17rc1 10 10017 10.so.0.1.0.17rc1 + * 1.2.7rc1 13 10207 12.so.0.1.2.7rc1 + * 1.0.17 10 10017 10.so.0.1.0.17 + * 1.2.7 13 10207 12.so.0.1.2.7 + * 1.2.8beta1-5 13 10208 12.so.0.1.2.8beta1-5 + * 1.0.18rc1-5 10 10018 10.so.0.1.0.18rc1-5 + * 1.2.8rc1-5 13 10208 12.so.0.1.2.8rc1-5 + * 1.0.18 10 10018 10.so.0.1.0.18 + * 1.2.8 13 10208 12.so.0.1.2.8 + * 1.2.9beta1-3 13 10209 12.so.0.1.2.9beta1-3 + * 1.2.9beta4-11 13 10209 12.so.0.9[.0] + * 1.2.9rc1 13 10209 12.so.0.9[.0] + * 1.2.9 13 10209 12.so.0.9[.0] + * 1.2.10beta1-8 13 10210 12.so.0.10[.0] + * 1.2.10rc1-3 13 10210 12.so.0.10[.0] + * 1.2.10 13 10210 12.so.0.10[.0] + * 1.2.11beta1-4 13 10211 12.so.0.11[.0] + * 1.0.19rc1-5 10 10019 10.so.0.19[.0] + * 1.2.11rc1-5 13 10211 12.so.0.11[.0] + * 1.0.19 10 10019 10.so.0.19[.0] + * 1.2.11 13 10211 12.so.0.11[.0] + * 1.0.20 10 10020 10.so.0.20[.0] + * 1.2.12 13 10212 12.so.0.12[.0] + * 1.2.13beta1 13 10213 12.so.0.13[.0] + * 1.0.21 10 10021 10.so.0.21[.0] + * 1.2.13 13 10213 12.so.0.13[.0] + * 1.2.14beta1-2 13 10214 12.so.0.14[.0] + * 1.0.22rc1 10 10022 10.so.0.22[.0] + * 1.2.14rc1 13 10214 12.so.0.14[.0] + * 1.0.22 10 10022 10.so.0.22[.0] + * 1.2.14 13 10214 12.so.0.14[.0] + * 1.2.15beta1-6 13 10215 12.so.0.15[.0] + * 1.0.23rc1-5 10 10023 10.so.0.23[.0] + * 1.2.15rc1-5 13 10215 12.so.0.15[.0] + * 1.0.23 10 10023 10.so.0.23[.0] + * 1.2.15 13 10215 12.so.0.15[.0] + * 1.2.16beta1-2 13 10216 12.so.0.16[.0] + * 1.2.16rc1 13 10216 12.so.0.16[.0] + * 1.0.24 10 10024 10.so.0.24[.0] + * 1.2.16 13 10216 12.so.0.16[.0] + * 1.2.17beta1-2 13 10217 12.so.0.17[.0] + * 1.0.25rc1 10 10025 10.so.0.25[.0] + * 1.2.17rc1-3 13 10217 12.so.0.17[.0] + * 1.0.25 10 10025 10.so.0.25[.0] + * 1.2.17 13 10217 12.so.0.17[.0] + * 1.0.26 10 10026 10.so.0.26[.0] + * 1.2.18 13 10218 12.so.0.18[.0] + * 1.2.19beta1-31 13 10219 12.so.0.19[.0] + * 1.0.27rc1-6 10 10027 10.so.0.27[.0] + * 1.2.19rc1-6 13 10219 12.so.0.19[.0] + * 1.0.27 10 10027 10.so.0.27[.0] + * 1.2.19 13 10219 12.so.0.19[.0] + * 1.2.20beta01-04 13 10220 12.so.0.20[.0] + * 1.0.28rc1-6 10 10028 10.so.0.28[.0] + * 1.2.20rc1-6 13 10220 12.so.0.20[.0] + * 1.0.28 10 10028 10.so.0.28[.0] + * 1.2.20 13 10220 12.so.0.20[.0] + * 1.2.21beta1-2 13 10221 12.so.0.21[.0] + * 1.2.21rc1-3 13 10221 12.so.0.21[.0] + * 1.0.29 10 10029 10.so.0.29[.0] + * 1.2.21 13 10221 12.so.0.21[.0] + * 1.2.22beta1-4 13 10222 12.so.0.22[.0] + * 1.0.30rc1 10 10030 10.so.0.30[.0] + * 1.2.22rc1 13 10222 12.so.0.22[.0] + * 1.0.30 10 10030 10.so.0.30[.0] + * 1.2.22 13 10222 12.so.0.22[.0] + * 1.2.23beta01-05 13 10223 12.so.0.23[.0] + * 1.2.23rc01 13 10223 12.so.0.23[.0] + * 1.2.23 13 10223 12.so.0.23[.0] + * 1.2.24beta01-02 13 10224 12.so.0.24[.0] + * 1.2.24rc01 13 10224 12.so.0.24[.0] + * 1.2.24 13 10224 12.so.0.24[.0] + * 1.2.25beta01-06 13 10225 12.so.0.25[.0] + * 1.2.25rc01-02 13 10225 12.so.0.25[.0] + * 1.0.31 10 10031 10.so.0.31[.0] + * 1.2.25 13 10225 12.so.0.25[.0] + * 1.2.26beta01-06 13 10226 12.so.0.26[.0] + * 1.2.26rc01 13 10226 12.so.0.26[.0] + * 1.2.26 13 10226 12.so.0.26[.0] + * 1.0.32 10 10032 10.so.0.32[.0] + * 1.2.27beta01-06 13 10227 12.so.0.27[.0] + * 1.2.27rc01 13 10227 12.so.0.27[.0] + * 1.0.33 10 10033 10.so.0.33[.0] + * 1.2.27 13 10227 12.so.0.27[.0] + * 1.0.34 10 10034 10.so.0.34[.0] + * 1.2.28 13 10228 12.so.0.28[.0] + * 1.2.29beta01-03 13 10229 12.so.0.29[.0] + * 1.2.29rc01 13 10229 12.so.0.29[.0] + * 1.0.35 10 10035 10.so.0.35[.0] + * 1.2.29 13 10229 12.so.0.29[.0] + * 1.0.37 10 10037 10.so.0.37[.0] + * 1.2.30beta01-04 13 10230 12.so.0.30[.0] + * 1.0.38rc01-08 10 10038 10.so.0.38[.0] + * 1.2.30rc01-08 13 10230 12.so.0.30[.0] + * 1.0.38 10 10038 10.so.0.38[.0] + * 1.2.30 13 10230 12.so.0.30[.0] + * 1.0.39rc01-03 10 10039 10.so.0.39[.0] + * 1.2.31rc01-03 13 10231 12.so.0.31[.0] + * 1.0.39 10 10039 10.so.0.39[.0] + * 1.2.31 13 10231 12.so.0.31[.0] + * 1.2.32beta01-02 13 10232 12.so.0.32[.0] + * 1.0.40rc01 10 10040 10.so.0.40[.0] + * 1.2.32rc01 13 10232 12.so.0.32[.0] + * 1.0.40 10 10040 10.so.0.40[.0] + * 1.2.32 13 10232 12.so.0.32[.0] + * 1.2.33beta01-02 13 10233 12.so.0.33[.0] + * 1.2.33rc01-02 13 10233 12.so.0.33[.0] + * 1.0.41rc01 10 10041 10.so.0.41[.0] + * 1.2.33 13 10233 12.so.0.33[.0] + * 1.0.41 10 10041 10.so.0.41[.0] + * 1.2.34beta01-07 13 10234 12.so.0.34[.0] + * 1.0.42rc01 10 10042 10.so.0.42[.0] + * 1.2.34rc01 13 10234 12.so.0.34[.0] + * 1.0.42 10 10042 10.so.0.42[.0] + * 1.2.34 13 10234 12.so.0.34[.0] + * 1.2.35beta01-03 13 10235 12.so.0.35[.0] + * 1.0.43rc01-02 10 10043 10.so.0.43[.0] + * 1.2.35rc01-02 13 10235 12.so.0.35[.0] + * 1.0.43 10 10043 10.so.0.43[.0] + * 1.2.35 13 10235 12.so.0.35[.0] + * 1.2.36beta01-05 13 10236 12.so.0.36[.0] + * 1.2.36rc01 13 10236 12.so.0.36[.0] + * 1.0.44 10 10044 10.so.0.44[.0] + * 1.2.36 13 10236 12.so.0.36[.0] + * 1.2.37beta01-03 13 10237 12.so.0.37[.0] + * 1.2.37rc01 13 10237 12.so.0.37[.0] + * 1.2.37 13 10237 12.so.0.37[.0] + * + * Henceforth the source version will match the shared-library major + * and minor numbers; the shared-library major version number will be + * used for changes in backward compatibility, as it is intended. The + * PNG_LIBPNG_VER macro, which is not used within libpng but is available + * for applications, is an unsigned integer of the form xyyzz corresponding + * to the source version x.y.z (leading zeros in y and z). Beta versions + * were given the previous public release number plus a letter, until + * version 1.0.6j; from then on they were given the upcoming public + * release number plus "betaNN" or "rcNN". + * + * Binary incompatibility exists only when applications make direct access + * to the info_ptr or png_ptr members through png.h, and the compiled + * application is loaded with a different version of the library. + * + * DLLNUM will change each time there are forward or backward changes + * in binary compatibility (e.g., when a new feature is added). + * + * See libpng.txt or libpng.3 for more information. The PNG specification + * is available as a W3C Recommendation and as an ISO Specification, + * defines should NOT be changed. + */ +#define PNG_INFO_gAMA 0x0001 +#define PNG_INFO_sBIT 0x0002 +#define PNG_INFO_cHRM 0x0004 +#define PNG_INFO_PLTE 0x0008 +#define PNG_INFO_tRNS 0x0010 +#define PNG_INFO_bKGD 0x0020 +#define PNG_INFO_hIST 0x0040 +#define PNG_INFO_pHYs 0x0080 +#define PNG_INFO_oFFs 0x0100 +#define PNG_INFO_tIME 0x0200 +#define PNG_INFO_pCAL 0x0400 +#define PNG_INFO_sRGB 0x0800 /* GR-P, 0.96a */ +#define PNG_INFO_iCCP 0x1000 /* ESR, 1.0.6 */ +#define PNG_INFO_sPLT 0x2000 /* ESR, 1.0.6 */ +#define PNG_INFO_sCAL 0x4000 /* ESR, 1.0.6 */ +#define PNG_INFO_IDAT 0x8000L /* ESR, 1.0.6 */ + +/* This is used for the transformation routines, as some of them + * change these values for the row. It also should enable using + * the routines for other purposes. + */ +typedef struct png_row_info_struct +{ + png_uint_32 width; /* width of row */ + png_uint_32 rowbytes; /* number of bytes in row */ + png_byte color_type; /* color type of row */ + png_byte bit_depth; /* bit depth of row */ + png_byte channels; /* number of channels (1, 2, 3, or 4) */ + png_byte pixel_depth; /* bits per pixel (depth * channels) */ +} png_row_info; + +typedef png_row_info FAR * png_row_infop; +typedef png_row_info FAR * FAR * png_row_infopp; + +/* These are the function types for the I/O functions and for the functions + * that allow the user to override the default I/O functions with his or her + * own. The png_error_ptr type should match that of user-supplied warning + * and error functions, while the png_rw_ptr type should match that of the + * user read/write data functions. + */ +typedef struct png_struct_def png_struct; +typedef png_struct FAR * png_structp; + +typedef void (PNGAPI *png_error_ptr) PNGARG((png_structp, png_const_charp)); +typedef void (PNGAPI *png_rw_ptr) PNGARG((png_structp, png_bytep, png_size_t)); +typedef void (PNGAPI *png_flush_ptr) PNGARG((png_structp)); +typedef void (PNGAPI *png_read_status_ptr) PNGARG((png_structp, png_uint_32, + int)); +typedef void (PNGAPI *png_write_status_ptr) PNGARG((png_structp, png_uint_32, + int)); + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +typedef void (PNGAPI *png_progressive_info_ptr) PNGARG((png_structp, png_infop)); +typedef void (PNGAPI *png_progressive_end_ptr) PNGARG((png_structp, png_infop)); +typedef void (PNGAPI *png_progressive_row_ptr) PNGARG((png_structp, png_bytep, + png_uint_32, int)); +#endif + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_LEGACY_SUPPORTED) +typedef void (PNGAPI *png_user_transform_ptr) PNGARG((png_structp, + png_row_infop, png_bytep)); +#endif + +#if defined(PNG_USER_CHUNKS_SUPPORTED) +typedef int (PNGAPI *png_user_chunk_ptr) PNGARG((png_structp, png_unknown_chunkp)); +#endif +#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) +typedef void (PNGAPI *png_unknown_chunk_ptr) PNGARG((png_structp)); +#endif + +/* Transform masks for the high-level interface */ +#define PNG_TRANSFORM_IDENTITY 0x0000 /* read and write */ +#define PNG_TRANSFORM_STRIP_16 0x0001 /* read only */ +#define PNG_TRANSFORM_STRIP_ALPHA 0x0002 /* read only */ +#define PNG_TRANSFORM_PACKING 0x0004 /* read and write */ +#define PNG_TRANSFORM_PACKSWAP 0x0008 /* read and write */ +#define PNG_TRANSFORM_EXPAND 0x0010 /* read only */ +#define PNG_TRANSFORM_INVERT_MONO 0x0020 /* read and write */ +#define PNG_TRANSFORM_SHIFT 0x0040 /* read and write */ +#define PNG_TRANSFORM_BGR 0x0080 /* read and write */ +#define PNG_TRANSFORM_SWAP_ALPHA 0x0100 /* read and write */ +#define PNG_TRANSFORM_SWAP_ENDIAN 0x0200 /* read and write */ +#define PNG_TRANSFORM_INVERT_ALPHA 0x0400 /* read and write */ +#define PNG_TRANSFORM_STRIP_FILLER 0x0800 /* WRITE only, deprecated */ +/* Added to libpng-1.2.34 */ +#define PNG_TRANSFORM_STRIP_FILLER_BEFORE 0x0800 /* WRITE only */ +#define PNG_TRANSFORM_STRIP_FILLER_AFTER 0x1000 /* WRITE only */ + +/* Flags for MNG supported features */ +#define PNG_FLAG_MNG_EMPTY_PLTE 0x01 +#define PNG_FLAG_MNG_FILTER_64 0x04 +#define PNG_ALL_MNG_FEATURES 0x05 + +typedef png_voidp (*png_malloc_ptr) PNGARG((png_structp, png_size_t)); +typedef void (*png_free_ptr) PNGARG((png_structp, png_voidp)); + +/* The structure that holds the information to read and write PNG files. + * The only people who need to care about what is inside of this are the + * people who will be modifying the library for their own special needs. + * It should NOT be accessed directly by an application, except to store + * the jmp_buf. + */ + +struct png_struct_def +{ +#ifdef PNG_SETJMP_SUPPORTED + jmp_buf jmpbuf; /* used in png_error */ +#endif + png_error_ptr error_fn; /* function for printing errors and aborting */ + png_error_ptr warning_fn; /* function for printing warnings */ + png_voidp error_ptr; /* user supplied struct for error functions */ + png_rw_ptr write_data_fn; /* function for writing output data */ + png_rw_ptr read_data_fn; /* function for reading input data */ + png_voidp io_ptr; /* ptr to application struct for I/O functions */ + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) + png_user_transform_ptr read_user_transform_fn; /* user read transform */ +#endif + +#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) + png_user_transform_ptr write_user_transform_fn; /* user write transform */ +#endif + +/* These were added in libpng-1.0.2 */ +#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED) +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) + png_voidp user_transform_ptr; /* user supplied struct for user transform */ + png_byte user_transform_depth; /* bit depth of user transformed pixels */ + png_byte user_transform_channels; /* channels in user transformed pixels */ +#endif +#endif + + png_uint_32 mode; /* tells us where we are in the PNG file */ + png_uint_32 flags; /* flags indicating various things to libpng */ + png_uint_32 transformations; /* which transformations to perform */ + + z_stream zstream; /* pointer to decompression structure (below) */ + png_bytep zbuf; /* buffer for zlib */ + png_size_t zbuf_size; /* size of zbuf */ + int zlib_level; /* holds zlib compression level */ + int zlib_method; /* holds zlib compression method */ + int zlib_window_bits; /* holds zlib compression window bits */ + int zlib_mem_level; /* holds zlib compression memory level */ + int zlib_strategy; /* holds zlib compression strategy */ + + png_uint_32 width; /* width of image in pixels */ + png_uint_32 height; /* height of image in pixels */ + png_uint_32 num_rows; /* number of rows in current pass */ + png_uint_32 usr_width; /* width of row at start of write */ + png_uint_32 rowbytes; /* size of row in bytes */ + png_uint_32 irowbytes; /* size of current interlaced row in bytes */ + png_uint_32 iwidth; /* width of current interlaced row in pixels */ + png_uint_32 row_number; /* current row in interlace pass */ + png_bytep prev_row; /* buffer to save previous (unfiltered) row */ + png_bytep row_buf; /* buffer to save current (unfiltered) row */ +#ifndef PNG_NO_WRITE_FILTER + png_bytep sub_row; /* buffer to save "sub" row when filtering */ + png_bytep up_row; /* buffer to save "up" row when filtering */ + png_bytep avg_row; /* buffer to save "avg" row when filtering */ + png_bytep paeth_row; /* buffer to save "Paeth" row when filtering */ +#endif + png_row_info row_info; /* used for transformation routines */ + + png_uint_32 idat_size; /* current IDAT size for read */ + png_uint_32 crc; /* current chunk CRC value */ + png_colorp palette; /* palette from the input file */ + png_uint_16 num_palette; /* number of color entries in palette */ + png_uint_16 num_trans; /* number of transparency values */ + png_byte chunk_name[5]; /* null-terminated name of current chunk */ + png_byte compression; /* file compression type (always 0) */ + png_byte filter; /* file filter type (always 0) */ + png_byte interlaced; /* PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */ + png_byte pass; /* current interlace pass (0 - 6) */ + png_byte do_filter; /* row filter flags (see PNG_FILTER_ below ) */ + png_byte color_type; /* color type of file */ + png_byte bit_depth; /* bit depth of file */ + png_byte usr_bit_depth; /* bit depth of users row */ + png_byte pixel_depth; /* number of bits per pixel */ + png_byte channels; /* number of channels in file */ + png_byte usr_channels; /* channels at start of write */ + png_byte sig_bytes; /* magic bytes read/written from start of file */ + +#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) +#ifdef PNG_LEGACY_SUPPORTED + png_byte filler; /* filler byte for pixel expansion */ +#else + png_uint_16 filler; /* filler bytes for pixel expansion */ +#endif +#endif + +#if defined(PNG_bKGD_SUPPORTED) + png_byte background_gamma_type; +# ifdef PNG_FLOATING_POINT_SUPPORTED + float background_gamma; +# endif + png_color_16 background; /* background color in screen gamma space */ +#if defined(PNG_READ_GAMMA_SUPPORTED) + png_color_16 background_1; /* background normalized to gamma 1.0 */ +#endif +#endif /* PNG_bKGD_SUPPORTED */ + +#if defined(PNG_WRITE_FLUSH_SUPPORTED) + png_flush_ptr output_flush_fn;/* Function for flushing output */ + png_uint_32 flush_dist; /* how many rows apart to flush, 0 - no flush */ + png_uint_32 flush_rows; /* number of rows written since last flush */ +#endif + +#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) + int gamma_shift; /* number of "insignificant" bits 16-bit gamma */ +#ifdef PNG_FLOATING_POINT_SUPPORTED + float gamma; /* file gamma value */ + float screen_gamma; /* screen gamma value (display_exponent) */ +#endif +#endif + +#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) + png_bytep gamma_table; /* gamma table for 8-bit depth files */ + png_bytep gamma_from_1; /* converts from 1.0 to screen */ + png_bytep gamma_to_1; /* converts from file to 1.0 */ + png_uint_16pp gamma_16_table; /* gamma table for 16-bit depth files */ + png_uint_16pp gamma_16_from_1; /* converts from 1.0 to screen */ + png_uint_16pp gamma_16_to_1; /* converts from file to 1.0 */ +#endif + +#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_sBIT_SUPPORTED) + png_color_8 sig_bit; /* significant bits in each available channel */ +#endif + +#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) + png_color_8 shift; /* shift for significant bit tranformation */ +#endif + +#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \ + || defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) + png_bytep trans; /* transparency values for paletted files */ + png_color_16 trans_values; /* transparency values for non-paletted files */ +#endif + + png_read_status_ptr read_row_fn; /* called after each row is decoded */ + png_write_status_ptr write_row_fn; /* called after each row is encoded */ +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED + png_progressive_info_ptr info_fn; /* called after header data fully read */ + png_progressive_row_ptr row_fn; /* called after each prog. row is decoded */ + png_progressive_end_ptr end_fn; /* called after image is complete */ + png_bytep save_buffer_ptr; /* current location in save_buffer */ + png_bytep save_buffer; /* buffer for previously read data */ + png_bytep current_buffer_ptr; /* current location in current_buffer */ + png_bytep current_buffer; /* buffer for recently used data */ + png_uint_32 push_length; /* size of current input chunk */ + png_uint_32 skip_length; /* bytes to skip in input data */ + png_size_t save_buffer_size; /* amount of data now in save_buffer */ + png_size_t save_buffer_max; /* total size of save_buffer */ + png_size_t buffer_size; /* total amount of available input data */ + png_size_t current_buffer_size; /* amount of data now in current_buffer */ + int process_mode; /* what push library is currently doing */ + int cur_palette; /* current push library palette index */ + +# if defined(PNG_TEXT_SUPPORTED) + png_size_t current_text_size; /* current size of text input data */ + png_size_t current_text_left; /* how much text left to read in input */ + png_charp current_text; /* current text chunk buffer */ + png_charp current_text_ptr; /* current location in current_text */ +# endif /* PNG_TEXT_SUPPORTED */ +#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ + +#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__) +/* for the Borland special 64K segment handler */ + png_bytepp offset_table_ptr; + png_bytep offset_table; + png_uint_16 offset_table_number; + png_uint_16 offset_table_count; + png_uint_16 offset_table_count_free; +#endif + +#if defined(PNG_READ_DITHER_SUPPORTED) + png_bytep palette_lookup; /* lookup table for dithering */ + png_bytep dither_index; /* index translation for palette files */ +#endif + +#if defined(PNG_READ_DITHER_SUPPORTED) || defined(PNG_hIST_SUPPORTED) + png_uint_16p hist; /* histogram */ +#endif + +#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) + png_byte heuristic_method; /* heuristic for row filter selection */ + png_byte num_prev_filters; /* number of weights for previous rows */ + png_bytep prev_filters; /* filter type(s) of previous row(s) */ + png_uint_16p filter_weights; /* weight(s) for previous line(s) */ + png_uint_16p inv_filter_weights; /* 1/weight(s) for previous line(s) */ + png_uint_16p filter_costs; /* relative filter calculation cost */ + png_uint_16p inv_filter_costs; /* 1/relative filter calculation cost */ +#endif + +#if defined(PNG_TIME_RFC1123_SUPPORTED) + png_charp time_buffer; /* String to hold RFC 1123 time text */ +#endif + +/* New members added in libpng-1.0.6 */ + +#ifdef PNG_FREE_ME_SUPPORTED + png_uint_32 free_me; /* flags items libpng is responsible for freeing */ +#endif + +#if defined(PNG_USER_CHUNKS_SUPPORTED) + png_voidp user_chunk_ptr; + png_user_chunk_ptr read_user_chunk_fn; /* user read chunk handler */ +#endif + +#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) + int num_chunk_list; + png_bytep chunk_list; +#endif + +/* New members added in libpng-1.0.3 */ +#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) + png_byte rgb_to_gray_status; + /* These were changed from png_byte in libpng-1.0.6 */ + png_uint_16 rgb_to_gray_red_coeff; + png_uint_16 rgb_to_gray_green_coeff; + png_uint_16 rgb_to_gray_blue_coeff; +#endif + +/* New member added in libpng-1.0.4 (renamed in 1.0.9) */ +#if defined(PNG_MNG_FEATURES_SUPPORTED) || \ + defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \ + defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED) +/* changed from png_byte to png_uint_32 at version 1.2.0 */ +#ifdef PNG_1_0_X + png_byte mng_features_permitted; +#else + png_uint_32 mng_features_permitted; +#endif /* PNG_1_0_X */ +#endif + +/* New member added in libpng-1.0.7 */ +#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) + png_fixed_point int_gamma; +#endif + +/* New member added in libpng-1.0.9, ifdef'ed out in 1.0.12, enabled in 1.2.0 */ +#if defined(PNG_MNG_FEATURES_SUPPORTED) + png_byte filter_type; +#endif + +#if defined(PNG_1_0_X) +/* New member added in libpng-1.0.10, ifdef'ed out in 1.2.0 */ + png_uint_32 row_buf_size; +#endif + +/* New members added in libpng-1.2.0 */ +#if defined(PNG_ASSEMBLER_CODE_SUPPORTED) +# if !defined(PNG_1_0_X) +# if defined(PNG_MMX_CODE_SUPPORTED) + png_byte mmx_bitdepth_threshold; + png_uint_32 mmx_rowbytes_threshold; +# endif + png_uint_32 asm_flags; +# endif +#endif + +/* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */ +#ifdef PNG_USER_MEM_SUPPORTED + png_voidp mem_ptr; /* user supplied struct for mem functions */ + png_malloc_ptr malloc_fn; /* function for allocating memory */ + png_free_ptr free_fn; /* function for freeing memory */ +#endif + +/* New member added in libpng-1.0.13 and 1.2.0 */ + png_bytep big_row_buf; /* buffer to save current (unfiltered) row */ + +#if defined(PNG_READ_DITHER_SUPPORTED) +/* The following three members were added at version 1.0.14 and 1.2.4 */ + png_bytep dither_sort; /* working sort array */ + png_bytep index_to_palette; /* where the original index currently is */ + /* in the palette */ + png_bytep palette_to_index; /* which original index points to this */ + /* palette color */ +#endif + +/* New members added in libpng-1.0.16 and 1.2.6 */ + png_byte compression_type; + +#ifdef PNG_SET_USER_LIMITS_SUPPORTED + png_uint_32 user_width_max; + png_uint_32 user_height_max; +#endif + +/* New member added in libpng-1.0.25 and 1.2.17 */ +#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) + /* storage for unknown chunk that the library doesn't recognize. */ + png_unknown_chunk unknown_chunk; +#endif + +/* New members added in libpng-1.2.26 */ + png_uint_32 old_big_row_buf_size, old_prev_row_size; + +/* New member added in libpng-1.2.30 */ + png_charp chunkdata; /* buffer for reading chunk data */ + +}; + + +/* This triggers a compiler error in png.c, if png.c and png.h + * do not agree upon the version number. + */ +typedef png_structp version_1_2_37; + +typedef png_struct FAR * FAR * png_structpp; + +/* Here are the function definitions most commonly used. This is not + * the place to find out how to use libpng. See libpng.txt for the + * full explanation, see example.c for the summary. This just provides + * a simple one line description of the use of each function. + */ + +/* Returns the version number of the library */ +extern PNG_EXPORT(png_uint_32,png_access_version_number) PNGARG((void)); + +/* Tell lib we have already handled the first magic bytes. + * Handling more than 8 bytes from the beginning of the file is an error. + */ +extern PNG_EXPORT(void,png_set_sig_bytes) PNGARG((png_structp png_ptr, + int num_bytes)); + +/* Check sig[start] through sig[start + num_to_check - 1] to see if it's a + * PNG file. Returns zero if the supplied bytes match the 8-byte PNG + * signature, and non-zero otherwise. Having num_to_check == 0 or + * start > 7 will always fail (ie return non-zero). + */ +extern PNG_EXPORT(int,png_sig_cmp) PNGARG((png_bytep sig, png_size_t start, + png_size_t num_to_check)); + +/* Simple signature checking function. This is the same as calling + * png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n). + */ +extern PNG_EXPORT(int,png_check_sig) PNGARG((png_bytep sig, int num)); + +/* Allocate and initialize png_ptr struct for reading, and any other memory. */ +extern PNG_EXPORT(png_structp,png_create_read_struct) + PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn)); + +/* Allocate and initialize png_ptr struct for writing, and any other memory */ +extern PNG_EXPORT(png_structp,png_create_write_struct) + PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn)); + +#ifdef PNG_WRITE_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_compression_buffer_size) + PNGARG((png_structp png_ptr)); +#endif + +#ifdef PNG_WRITE_SUPPORTED +extern PNG_EXPORT(void,png_set_compression_buffer_size) + PNGARG((png_structp png_ptr, png_uint_32 size)); +#endif + +/* Reset the compression stream */ +extern PNG_EXPORT(int,png_reset_zstream) PNGARG((png_structp png_ptr)); + +/* New functions added in libpng-1.0.2 (not enabled by default until 1.2.0) */ +#ifdef PNG_USER_MEM_SUPPORTED +extern PNG_EXPORT(png_structp,png_create_read_struct_2) + PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, + png_malloc_ptr malloc_fn, png_free_ptr free_fn)); +extern PNG_EXPORT(png_structp,png_create_write_struct_2) + PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, + png_malloc_ptr malloc_fn, png_free_ptr free_fn)); +#endif + +/* Write a PNG chunk - size, type, (optional) data, CRC. */ +extern PNG_EXPORT(void,png_write_chunk) PNGARG((png_structp png_ptr, + png_bytep chunk_name, png_bytep data, png_size_t length)); + +/* Write the start of a PNG chunk - length and chunk name. */ +extern PNG_EXPORT(void,png_write_chunk_start) PNGARG((png_structp png_ptr, + png_bytep chunk_name, png_uint_32 length)); + +/* Write the data of a PNG chunk started with png_write_chunk_start(). */ +extern PNG_EXPORT(void,png_write_chunk_data) PNGARG((png_structp png_ptr, + png_bytep data, png_size_t length)); + +/* Finish a chunk started with png_write_chunk_start() (includes CRC). */ +extern PNG_EXPORT(void,png_write_chunk_end) PNGARG((png_structp png_ptr)); + +/* Allocate and initialize the info structure */ +extern PNG_EXPORT(png_infop,png_create_info_struct) + PNGARG((png_structp png_ptr)); + +#if defined(PNG_1_0_X) || defined (PNG_1_2_X) +/* Initialize the info structure (old interface - DEPRECATED) */ +extern PNG_EXPORT(void,png_info_init) PNGARG((png_infop info_ptr)); +#undef png_info_init +#define png_info_init(info_ptr) png_info_init_3(&info_ptr,\ + png_sizeof(png_info)); +#endif + +extern PNG_EXPORT(void,png_info_init_3) PNGARG((png_infopp info_ptr, + png_size_t png_info_struct_size)); + +/* Writes all the PNG information before the image. */ +extern PNG_EXPORT(void,png_write_info_before_PLTE) PNGARG((png_structp png_ptr, + png_infop info_ptr)); +extern PNG_EXPORT(void,png_write_info) PNGARG((png_structp png_ptr, + png_infop info_ptr)); + +#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED +/* read the information before the actual image data. */ +extern PNG_EXPORT(void,png_read_info) PNGARG((png_structp png_ptr, + png_infop info_ptr)); +#endif + +#if defined(PNG_TIME_RFC1123_SUPPORTED) +extern PNG_EXPORT(png_charp,png_convert_to_rfc1123) + PNGARG((png_structp png_ptr, png_timep ptime)); +#endif + +#if !defined(_WIN32_WCE) +/* "time.h" functions are not supported on WindowsCE */ +#if defined(PNG_WRITE_tIME_SUPPORTED) +/* convert from a struct tm to png_time */ +extern PNG_EXPORT(void,png_convert_from_struct_tm) PNGARG((png_timep ptime, + struct tm FAR * ttime)); + +/* convert from time_t to png_time. Uses gmtime() */ +extern PNG_EXPORT(void,png_convert_from_time_t) PNGARG((png_timep ptime, + time_t ttime)); +#endif /* PNG_WRITE_tIME_SUPPORTED */ +#endif /* _WIN32_WCE */ + +#if defined(PNG_READ_EXPAND_SUPPORTED) +/* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */ +extern PNG_EXPORT(void,png_set_expand) PNGARG((png_structp png_ptr)); +#if !defined(PNG_1_0_X) +extern PNG_EXPORT(void,png_set_expand_gray_1_2_4_to_8) PNGARG((png_structp + png_ptr)); +#endif +extern PNG_EXPORT(void,png_set_palette_to_rgb) PNGARG((png_structp png_ptr)); +extern PNG_EXPORT(void,png_set_tRNS_to_alpha) PNGARG((png_structp png_ptr)); +#if defined(PNG_1_0_X) || defined (PNG_1_2_X) +/* Deprecated */ +extern PNG_EXPORT(void,png_set_gray_1_2_4_to_8) PNGARG((png_structp png_ptr)); +#endif +#endif + +#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) +/* Use blue, green, red order for pixels. */ +extern PNG_EXPORT(void,png_set_bgr) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED) +/* Expand the grayscale to 24-bit RGB if necessary. */ +extern PNG_EXPORT(void,png_set_gray_to_rgb) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) +/* Reduce RGB to grayscale. */ +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(void,png_set_rgb_to_gray) PNGARG((png_structp png_ptr, + int error_action, double red, double green )); +#endif +extern PNG_EXPORT(void,png_set_rgb_to_gray_fixed) PNGARG((png_structp png_ptr, + int error_action, png_fixed_point red, png_fixed_point green )); +extern PNG_EXPORT(png_byte,png_get_rgb_to_gray_status) PNGARG((png_structp + png_ptr)); +#endif + +extern PNG_EXPORT(void,png_build_grayscale_palette) PNGARG((int bit_depth, + png_colorp palette)); + +#if defined(PNG_READ_STRIP_ALPHA_SUPPORTED) +extern PNG_EXPORT(void,png_set_strip_alpha) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \ + defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) +extern PNG_EXPORT(void,png_set_swap_alpha) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \ + defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) +extern PNG_EXPORT(void,png_set_invert_alpha) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) +/* Add a filler byte to 8-bit Gray or 24-bit RGB images. */ +extern PNG_EXPORT(void,png_set_filler) PNGARG((png_structp png_ptr, + png_uint_32 filler, int flags)); +/* The values of the PNG_FILLER_ defines should NOT be changed */ +#define PNG_FILLER_BEFORE 0 +#define PNG_FILLER_AFTER 1 +/* Add an alpha byte to 8-bit Gray or 24-bit RGB images. */ +#if !defined(PNG_1_0_X) +extern PNG_EXPORT(void,png_set_add_alpha) PNGARG((png_structp png_ptr, + png_uint_32 filler, int flags)); +#endif +#endif /* PNG_READ_FILLER_SUPPORTED || PNG_WRITE_FILLER_SUPPORTED */ + +#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) +/* Swap bytes in 16-bit depth files. */ +extern PNG_EXPORT(void,png_set_swap) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) +/* Use 1 byte per pixel in 1, 2, or 4-bit depth files. */ +extern PNG_EXPORT(void,png_set_packing) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_PACKSWAP_SUPPORTED) || defined(PNG_WRITE_PACKSWAP_SUPPORTED) +/* Swap packing order of pixels in bytes. */ +extern PNG_EXPORT(void,png_set_packswap) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) +/* Converts files to legal bit depths. */ +extern PNG_EXPORT(void,png_set_shift) PNGARG((png_structp png_ptr, + png_color_8p true_bits)); +#endif + +#if defined(PNG_READ_INTERLACING_SUPPORTED) || \ + defined(PNG_WRITE_INTERLACING_SUPPORTED) +/* Have the code handle the interlacing. Returns the number of passes. */ +extern PNG_EXPORT(int,png_set_interlace_handling) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) +/* Invert monochrome files */ +extern PNG_EXPORT(void,png_set_invert_mono) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_BACKGROUND_SUPPORTED) +/* Handle alpha and tRNS by replacing with a background color. */ +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(void,png_set_background) PNGARG((png_structp png_ptr, + png_color_16p background_color, int background_gamma_code, + int need_expand, double background_gamma)); +#endif +#define PNG_BACKGROUND_GAMMA_UNKNOWN 0 +#define PNG_BACKGROUND_GAMMA_SCREEN 1 +#define PNG_BACKGROUND_GAMMA_FILE 2 +#define PNG_BACKGROUND_GAMMA_UNIQUE 3 +#endif + +#if defined(PNG_READ_16_TO_8_SUPPORTED) +/* strip the second byte of information from a 16-bit depth file. */ +extern PNG_EXPORT(void,png_set_strip_16) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_DITHER_SUPPORTED) +/* Turn on dithering, and reduce the palette to the number of colors available. */ +extern PNG_EXPORT(void,png_set_dither) PNGARG((png_structp png_ptr, + png_colorp palette, int num_palette, int maximum_colors, + png_uint_16p histogram, int full_dither)); +#endif + +#if defined(PNG_READ_GAMMA_SUPPORTED) +/* Handle gamma correction. Screen_gamma=(display_exponent) */ +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(void,png_set_gamma) PNGARG((png_structp png_ptr, + double screen_gamma, double default_file_gamma)); +#endif +#endif + +#if defined(PNG_1_0_X) || defined (PNG_1_2_X) +#if defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \ + defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED) +/* Permit or disallow empty PLTE (0: not permitted, 1: permitted) */ +/* Deprecated and will be removed. Use png_permit_mng_features() instead. */ +extern PNG_EXPORT(void,png_permit_empty_plte) PNGARG((png_structp png_ptr, + int empty_plte_permitted)); +#endif +#endif + +#if defined(PNG_WRITE_FLUSH_SUPPORTED) +/* Set how many lines between output flushes - 0 for no flushing */ +extern PNG_EXPORT(void,png_set_flush) PNGARG((png_structp png_ptr, int nrows)); +/* Flush the current PNG output buffer */ +extern PNG_EXPORT(void,png_write_flush) PNGARG((png_structp png_ptr)); +#endif + +/* optional update palette with requested transformations */ +extern PNG_EXPORT(void,png_start_read_image) PNGARG((png_structp png_ptr)); + +/* optional call to update the users info structure */ +extern PNG_EXPORT(void,png_read_update_info) PNGARG((png_structp png_ptr, + png_infop info_ptr)); + +#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED +/* read one or more rows of image data. */ +extern PNG_EXPORT(void,png_read_rows) PNGARG((png_structp png_ptr, + png_bytepp row, png_bytepp display_row, png_uint_32 num_rows)); +#endif + +#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED +/* read a row of data. */ +extern PNG_EXPORT(void,png_read_row) PNGARG((png_structp png_ptr, + png_bytep row, + png_bytep display_row)); +#endif + +#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED +/* read the whole image into memory at once. */ +extern PNG_EXPORT(void,png_read_image) PNGARG((png_structp png_ptr, + png_bytepp image)); +#endif + +/* write a row of image data */ +extern PNG_EXPORT(void,png_write_row) PNGARG((png_structp png_ptr, + png_bytep row)); + +/* write a few rows of image data */ +extern PNG_EXPORT(void,png_write_rows) PNGARG((png_structp png_ptr, + png_bytepp row, png_uint_32 num_rows)); + +/* write the image data */ +extern PNG_EXPORT(void,png_write_image) PNGARG((png_structp png_ptr, + png_bytepp image)); + +/* writes the end of the PNG file. */ +extern PNG_EXPORT(void,png_write_end) PNGARG((png_structp png_ptr, + png_infop info_ptr)); + +#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED +/* read the end of the PNG file. */ +extern PNG_EXPORT(void,png_read_end) PNGARG((png_structp png_ptr, + png_infop info_ptr)); +#endif + +/* free any memory associated with the png_info_struct */ +extern PNG_EXPORT(void,png_destroy_info_struct) PNGARG((png_structp png_ptr, + png_infopp info_ptr_ptr)); + +/* free any memory associated with the png_struct and the png_info_structs */ +extern PNG_EXPORT(void,png_destroy_read_struct) PNGARG((png_structpp + png_ptr_ptr, png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr)); + +/* free all memory used by the read (old method - NOT DLL EXPORTED) */ +/* Debian note: exporting as it is required by legacy applications */ +extern PNG_EXPORT(void,png_read_destroy) PNGARG((png_structp png_ptr, png_infop info_ptr, + png_infop end_info_ptr)); + +/* free any memory associated with the png_struct and the png_info_structs */ +extern PNG_EXPORT(void,png_destroy_write_struct) + PNGARG((png_structpp png_ptr_ptr, png_infopp info_ptr_ptr)); + +/* free any memory used in png_ptr struct (old method - NOT DLL EXPORTED) */ +/* Debian note: exporting as it is required by legacy applications */ +extern PNG_EXPORT(void,png_write_destroy) PNGARG((png_structp png_ptr)); + +/* set the libpng method of handling chunk CRC errors */ +extern PNG_EXPORT(void,png_set_crc_action) PNGARG((png_structp png_ptr, + int crit_action, int ancil_action)); + +/* Values for png_set_crc_action() to say how to handle CRC errors in + * ancillary and critical chunks, and whether to use the data contained + * therein. Note that it is impossible to "discard" data in a critical + * chunk. For versions prior to 0.90, the action was always error/quit, + * whereas in version 0.90 and later, the action for CRC errors in ancillary + * chunks is warn/discard. These values should NOT be changed. + * + * value action:critical action:ancillary + */ +#define PNG_CRC_DEFAULT 0 /* error/quit warn/discard data */ +#define PNG_CRC_ERROR_QUIT 1 /* error/quit error/quit */ +#define PNG_CRC_WARN_DISCARD 2 /* (INVALID) warn/discard data */ +#define PNG_CRC_WARN_USE 3 /* warn/use data warn/use data */ +#define PNG_CRC_QUIET_USE 4 /* quiet/use data quiet/use data */ +#define PNG_CRC_NO_CHANGE 5 /* use current value use current value */ + +/* These functions give the user control over the scan-line filtering in + * libpng and the compression methods used by zlib. These functions are + * mainly useful for testing, as the defaults should work with most users. + * Those users who are tight on memory or want faster performance at the + * expense of compression can modify them. See the compression library + * header file (zlib.h) for an explination of the compression functions. + */ + +/* set the filtering method(s) used by libpng. Currently, the only valid + * value for "method" is 0. + */ +extern PNG_EXPORT(void,png_set_filter) PNGARG((png_structp png_ptr, int method, + int filters)); + +/* Flags for png_set_filter() to say which filters to use. The flags + * are chosen so that they don't conflict with real filter types + * below, in case they are supplied instead of the #defined constants. + * These values should NOT be changed. + */ +#define PNG_NO_FILTERS 0x00 +#define PNG_FILTER_NONE 0x08 +#define PNG_FILTER_SUB 0x10 +#define PNG_FILTER_UP 0x20 +#define PNG_FILTER_AVG 0x40 +#define PNG_FILTER_PAETH 0x80 +#define PNG_ALL_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP | \ + PNG_FILTER_AVG | PNG_FILTER_PAETH) + +/* Filter values (not flags) - used in pngwrite.c, pngwutil.c for now. + * These defines should NOT be changed. + */ +#define PNG_FILTER_VALUE_NONE 0 +#define PNG_FILTER_VALUE_SUB 1 +#define PNG_FILTER_VALUE_UP 2 +#define PNG_FILTER_VALUE_AVG 3 +#define PNG_FILTER_VALUE_PAETH 4 +#define PNG_FILTER_VALUE_LAST 5 + +#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) /* EXPERIMENTAL */ +/* The "heuristic_method" is given by one of the PNG_FILTER_HEURISTIC_ + * defines, either the default (minimum-sum-of-absolute-differences), or + * the experimental method (weighted-minimum-sum-of-absolute-differences). + * + * Weights are factors >= 1.0, indicating how important it is to keep the + * filter type consistent between rows. Larger numbers mean the current + * filter is that many times as likely to be the same as the "num_weights" + * previous filters. This is cumulative for each previous row with a weight. + * There needs to be "num_weights" values in "filter_weights", or it can be + * NULL if the weights aren't being specified. Weights have no influence on + * the selection of the first row filter. Well chosen weights can (in theory) + * improve the compression for a given image. + * + * Costs are factors >= 1.0 indicating the relative decoding costs of a + * filter type. Higher costs indicate more decoding expense, and are + * therefore less likely to be selected over a filter with lower computational + * costs. There needs to be a value in "filter_costs" for each valid filter + * type (given by PNG_FILTER_VALUE_LAST), or it can be NULL if you aren't + * setting the costs. Costs try to improve the speed of decompression without + * unduly increasing the compressed image size. + * + * A negative weight or cost indicates the default value is to be used, and + * values in the range [0.0, 1.0) indicate the value is to remain unchanged. + * The default values for both weights and costs are currently 1.0, but may + * change if good general weighting/cost heuristics can be found. If both + * the weights and costs are set to 1.0, this degenerates the WEIGHTED method + * to the UNWEIGHTED method, but with added encoding time/computation. + */ +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(void,png_set_filter_heuristics) PNGARG((png_structp png_ptr, + int heuristic_method, int num_weights, png_doublep filter_weights, + png_doublep filter_costs)); +#endif +#endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */ + +/* Heuristic used for row filter selection. These defines should NOT be + * changed. + */ +#define PNG_FILTER_HEURISTIC_DEFAULT 0 /* Currently "UNWEIGHTED" */ +#define PNG_FILTER_HEURISTIC_UNWEIGHTED 1 /* Used by libpng < 0.95 */ +#define PNG_FILTER_HEURISTIC_WEIGHTED 2 /* Experimental feature */ +#define PNG_FILTER_HEURISTIC_LAST 3 /* Not a valid value */ + +/* Set the library compression level. Currently, valid values range from + * 0 - 9, corresponding directly to the zlib compression levels 0 - 9 + * (0 - no compression, 9 - "maximal" compression). Note that tests have + * shown that zlib compression levels 3-6 usually perform as well as level 9 + * for PNG images, and do considerably fewer caclulations. In the future, + * these values may not correspond directly to the zlib compression levels. + */ +extern PNG_EXPORT(void,png_set_compression_level) PNGARG((png_structp png_ptr, + int level)); + +extern PNG_EXPORT(void,png_set_compression_mem_level) + PNGARG((png_structp png_ptr, int mem_level)); + +extern PNG_EXPORT(void,png_set_compression_strategy) + PNGARG((png_structp png_ptr, int strategy)); + +extern PNG_EXPORT(void,png_set_compression_window_bits) + PNGARG((png_structp png_ptr, int window_bits)); + +extern PNG_EXPORT(void,png_set_compression_method) PNGARG((png_structp png_ptr, + int method)); + +/* These next functions are called for input/output, memory, and error + * handling. They are in the file pngrio.c, pngwio.c, and pngerror.c, + * and call standard C I/O routines such as fread(), fwrite(), and + * fprintf(). These functions can be made to use other I/O routines + * at run time for those applications that need to handle I/O in a + * different manner by calling png_set_???_fn(). See libpng.txt for + * more information. + */ + +#if !defined(PNG_NO_STDIO) +/* Initialize the input/output for the PNG file to the default functions. */ +extern PNG_EXPORT(void,png_init_io) PNGARG((png_structp png_ptr, png_FILE_p fp)); +#endif + +/* Replace the (error and abort), and warning functions with user + * supplied functions. If no messages are to be printed you must still + * write and use replacement functions. The replacement error_fn should + * still do a longjmp to the last setjmp location if you are using this + * method of error handling. If error_fn or warning_fn is NULL, the + * default function will be used. + */ + +extern PNG_EXPORT(void,png_set_error_fn) PNGARG((png_structp png_ptr, + png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn)); + +/* Return the user pointer associated with the error functions */ +extern PNG_EXPORT(png_voidp,png_get_error_ptr) PNGARG((png_structp png_ptr)); + +/* Replace the default data output functions with a user supplied one(s). + * If buffered output is not used, then output_flush_fn can be set to NULL. + * If PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile time + * output_flush_fn will be ignored (and thus can be NULL). + * It is probably a mistake to use NULL for output_flush_fn if + * write_data_fn is not also NULL unless you have built libpng with + * PNG_WRITE_FLUSH_SUPPORTED undefined, because in this case libpng's + * default flush function, which uses the standard *FILE structure, will + * be used. + */ +extern PNG_EXPORT(void,png_set_write_fn) PNGARG((png_structp png_ptr, + png_voidp io_ptr, png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)); + +/* Replace the default data input function with a user supplied one. */ +extern PNG_EXPORT(void,png_set_read_fn) PNGARG((png_structp png_ptr, + png_voidp io_ptr, png_rw_ptr read_data_fn)); + +/* Return the user pointer associated with the I/O functions */ +extern PNG_EXPORT(png_voidp,png_get_io_ptr) PNGARG((png_structp png_ptr)); + +extern PNG_EXPORT(void,png_set_read_status_fn) PNGARG((png_structp png_ptr, + png_read_status_ptr read_row_fn)); + +extern PNG_EXPORT(void,png_set_write_status_fn) PNGARG((png_structp png_ptr, + png_write_status_ptr write_row_fn)); + +#ifdef PNG_USER_MEM_SUPPORTED +/* Replace the default memory allocation functions with user supplied one(s). */ +extern PNG_EXPORT(void,png_set_mem_fn) PNGARG((png_structp png_ptr, + png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn)); +/* Return the user pointer associated with the memory functions */ +extern PNG_EXPORT(png_voidp,png_get_mem_ptr) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_LEGACY_SUPPORTED) +extern PNG_EXPORT(void,png_set_read_user_transform_fn) PNGARG((png_structp + png_ptr, png_user_transform_ptr read_user_transform_fn)); +#endif + +#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_LEGACY_SUPPORTED) +extern PNG_EXPORT(void,png_set_write_user_transform_fn) PNGARG((png_structp + png_ptr, png_user_transform_ptr write_user_transform_fn)); +#endif + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_LEGACY_SUPPORTED) +extern PNG_EXPORT(void,png_set_user_transform_info) PNGARG((png_structp + png_ptr, png_voidp user_transform_ptr, int user_transform_depth, + int user_transform_channels)); +/* Return the user pointer associated with the user transform functions */ +extern PNG_EXPORT(png_voidp,png_get_user_transform_ptr) + PNGARG((png_structp png_ptr)); +#endif + +#ifdef PNG_USER_CHUNKS_SUPPORTED +extern PNG_EXPORT(void,png_set_read_user_chunk_fn) PNGARG((png_structp png_ptr, + png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn)); +extern PNG_EXPORT(png_voidp,png_get_user_chunk_ptr) PNGARG((png_structp + png_ptr)); +#endif + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +/* Sets the function callbacks for the push reader, and a pointer to a + * user-defined structure available to the callback functions. + */ +extern PNG_EXPORT(void,png_set_progressive_read_fn) PNGARG((png_structp png_ptr, + png_voidp progressive_ptr, + png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn, + png_progressive_end_ptr end_fn)); + +/* returns the user pointer associated with the push read functions */ +extern PNG_EXPORT(png_voidp,png_get_progressive_ptr) + PNGARG((png_structp png_ptr)); + +/* function to be called when data becomes available */ +extern PNG_EXPORT(void,png_process_data) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_bytep buffer, png_size_t buffer_size)); + +/* function that combines rows. Not very much different than the + * png_combine_row() call. Is this even used????? + */ +extern PNG_EXPORT(void,png_progressive_combine_row) PNGARG((png_structp png_ptr, + png_bytep old_row, png_bytep new_row)); +#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ + +extern PNG_EXPORT(png_voidp,png_malloc) PNGARG((png_structp png_ptr, + png_uint_32 size)); + +#if defined(PNG_1_0_X) +# define png_malloc_warn png_malloc +#else +/* Added at libpng version 1.2.4 */ +extern PNG_EXPORT(png_voidp,png_malloc_warn) PNGARG((png_structp png_ptr, + png_uint_32 size)); +#endif + +/* frees a pointer allocated by png_malloc() */ +extern PNG_EXPORT(void,png_free) PNGARG((png_structp png_ptr, png_voidp ptr)); + +#if defined(PNG_1_0_X) +/* Function to allocate memory for zlib. */ +extern PNG_EXPORT(voidpf,png_zalloc) PNGARG((voidpf png_ptr, uInt items, + uInt size)); + +/* Function to free memory for zlib */ +extern PNG_EXPORT(void,png_zfree) PNGARG((voidpf png_ptr, voidpf ptr)); +#endif + +/* Free data that was allocated internally */ +extern PNG_EXPORT(void,png_free_data) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 free_me, int num)); +#ifdef PNG_FREE_ME_SUPPORTED +/* Reassign responsibility for freeing existing data, whether allocated + * by libpng or by the application */ +extern PNG_EXPORT(void,png_data_freer) PNGARG((png_structp png_ptr, + png_infop info_ptr, int freer, png_uint_32 mask)); +#endif +/* assignments for png_data_freer */ +#define PNG_DESTROY_WILL_FREE_DATA 1 +#define PNG_SET_WILL_FREE_DATA 1 +#define PNG_USER_WILL_FREE_DATA 2 +/* Flags for png_ptr->free_me and info_ptr->free_me */ +#define PNG_FREE_HIST 0x0008 +#define PNG_FREE_ICCP 0x0010 +#define PNG_FREE_SPLT 0x0020 +#define PNG_FREE_ROWS 0x0040 +#define PNG_FREE_PCAL 0x0080 +#define PNG_FREE_SCAL 0x0100 +#define PNG_FREE_UNKN 0x0200 +#define PNG_FREE_LIST 0x0400 +#define PNG_FREE_PLTE 0x1000 +#define PNG_FREE_TRNS 0x2000 +#define PNG_FREE_TEXT 0x4000 +#define PNG_FREE_ALL 0x7fff +#define PNG_FREE_MUL 0x4220 /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */ + +#ifdef PNG_USER_MEM_SUPPORTED +extern PNG_EXPORT(png_voidp,png_malloc_default) PNGARG((png_structp png_ptr, + png_uint_32 size)); +extern PNG_EXPORT(void,png_free_default) PNGARG((png_structp png_ptr, + png_voidp ptr)); +#endif + +extern PNG_EXPORT(png_voidp,png_memcpy_check) PNGARG((png_structp png_ptr, + png_voidp s1, png_voidp s2, png_uint_32 size)); + +extern PNG_EXPORT(png_voidp,png_memset_check) PNGARG((png_structp png_ptr, + png_voidp s1, int value, png_uint_32 size)); + +#if defined(USE_FAR_KEYWORD) /* memory model conversion function */ +extern void *png_far_to_near PNGARG((png_structp png_ptr,png_voidp ptr, + int check)); +#endif /* USE_FAR_KEYWORD */ + +#ifndef PNG_NO_ERROR_TEXT +/* Fatal error in PNG image of libpng - can't continue */ +extern PNG_EXPORT(void,png_error) PNGARG((png_structp png_ptr, + png_const_charp error_message)); + +/* The same, but the chunk name is prepended to the error string. */ +extern PNG_EXPORT(void,png_chunk_error) PNGARG((png_structp png_ptr, + png_const_charp error_message)); +#else +/* Fatal error in PNG image of libpng - can't continue */ +extern PNG_EXPORT(void,png_err) PNGARG((png_structp png_ptr)); +#endif + +#ifndef PNG_NO_WARNINGS +/* Non-fatal error in libpng. Can continue, but may have a problem. */ +extern PNG_EXPORT(void,png_warning) PNGARG((png_structp png_ptr, + png_const_charp warning_message)); + +#ifdef PNG_READ_SUPPORTED +/* Non-fatal error in libpng, chunk name is prepended to message. */ +extern PNG_EXPORT(void,png_chunk_warning) PNGARG((png_structp png_ptr, + png_const_charp warning_message)); +#endif /* PNG_READ_SUPPORTED */ +#endif /* PNG_NO_WARNINGS */ + +/* The png_set_ functions are for storing values in the png_info_struct. + * Similarly, the png_get_ calls are used to read values from the + * png_info_struct, either storing the parameters in the passed variables, or + * setting pointers into the png_info_struct where the data is stored. The + * png_get_ functions return a non-zero value if the data was available + * in info_ptr, or return zero and do not change any of the parameters if the + * data was not available. + * + * These functions should be used instead of directly accessing png_info + * to avoid problems with future changes in the size and internal layout of + * png_info_struct. + */ +/* Returns "flag" if chunk data is valid in info_ptr. */ +extern PNG_EXPORT(png_uint_32,png_get_valid) PNGARG((png_structp png_ptr, +png_infop info_ptr, png_uint_32 flag)); + +/* Returns number of bytes needed to hold a transformed row. */ +extern PNG_EXPORT(png_uint_32,png_get_rowbytes) PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +#if defined(PNG_INFO_IMAGE_SUPPORTED) +/* Returns row_pointers, which is an array of pointers to scanlines that was +returned from png_read_png(). */ +extern PNG_EXPORT(png_bytepp,png_get_rows) PNGARG((png_structp png_ptr, +png_infop info_ptr)); +/* Set row_pointers, which is an array of pointers to scanlines for use +by png_write_png(). */ +extern PNG_EXPORT(void,png_set_rows) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_bytepp row_pointers)); +#endif + +/* Returns number of color channels in image. */ +extern PNG_EXPORT(png_byte,png_get_channels) PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +#ifdef PNG_EASY_ACCESS_SUPPORTED +/* Returns image width in pixels. */ +extern PNG_EXPORT(png_uint_32, png_get_image_width) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image height in pixels. */ +extern PNG_EXPORT(png_uint_32, png_get_image_height) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image bit_depth. */ +extern PNG_EXPORT(png_byte, png_get_bit_depth) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image color_type. */ +extern PNG_EXPORT(png_byte, png_get_color_type) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image filter_type. */ +extern PNG_EXPORT(png_byte, png_get_filter_type) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image interlace_type. */ +extern PNG_EXPORT(png_byte, png_get_interlace_type) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image compression_type. */ +extern PNG_EXPORT(png_byte, png_get_compression_type) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image resolution in pixels per meter, from pHYs chunk data. */ +extern PNG_EXPORT(png_uint_32, png_get_pixels_per_meter) PNGARG((png_structp +png_ptr, png_infop info_ptr)); +extern PNG_EXPORT(png_uint_32, png_get_x_pixels_per_meter) PNGARG((png_structp +png_ptr, png_infop info_ptr)); +extern PNG_EXPORT(png_uint_32, png_get_y_pixels_per_meter) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns pixel aspect ratio, computed from pHYs chunk data. */ +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(float, png_get_pixel_aspect_ratio) PNGARG((png_structp +png_ptr, png_infop info_ptr)); +#endif + +/* Returns image x, y offset in pixels or microns, from oFFs chunk data. */ +extern PNG_EXPORT(png_int_32, png_get_x_offset_pixels) PNGARG((png_structp +png_ptr, png_infop info_ptr)); +extern PNG_EXPORT(png_int_32, png_get_y_offset_pixels) PNGARG((png_structp +png_ptr, png_infop info_ptr)); +extern PNG_EXPORT(png_int_32, png_get_x_offset_microns) PNGARG((png_structp +png_ptr, png_infop info_ptr)); +extern PNG_EXPORT(png_int_32, png_get_y_offset_microns) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +#endif /* PNG_EASY_ACCESS_SUPPORTED */ + +/* Returns pointer to signature string read from PNG header */ +extern PNG_EXPORT(png_bytep,png_get_signature) PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +#if defined(PNG_bKGD_SUPPORTED) +extern PNG_EXPORT(png_uint_32,png_get_bKGD) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_color_16p *background)); +#endif + +#if defined(PNG_bKGD_SUPPORTED) +extern PNG_EXPORT(void,png_set_bKGD) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_color_16p background)); +#endif + +#if defined(PNG_cHRM_SUPPORTED) +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_cHRM) PNGARG((png_structp png_ptr, + png_infop info_ptr, double *white_x, double *white_y, double *red_x, + double *red_y, double *green_x, double *green_y, double *blue_x, + double *blue_y)); +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_cHRM_fixed) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_fixed_point *int_white_x, png_fixed_point + *int_white_y, png_fixed_point *int_red_x, png_fixed_point *int_red_y, + png_fixed_point *int_green_x, png_fixed_point *int_green_y, png_fixed_point + *int_blue_x, png_fixed_point *int_blue_y)); +#endif +#endif + +#if defined(PNG_cHRM_SUPPORTED) +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(void,png_set_cHRM) PNGARG((png_structp png_ptr, + png_infop info_ptr, double white_x, double white_y, double red_x, + double red_y, double green_x, double green_y, double blue_x, double blue_y)); +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED +extern PNG_EXPORT(void,png_set_cHRM_fixed) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_fixed_point int_white_x, png_fixed_point int_white_y, + png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point + int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x, + png_fixed_point int_blue_y)); +#endif +#endif + +#if defined(PNG_gAMA_SUPPORTED) +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_gAMA) PNGARG((png_structp png_ptr, + png_infop info_ptr, double *file_gamma)); +#endif +extern PNG_EXPORT(png_uint_32,png_get_gAMA_fixed) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_fixed_point *int_file_gamma)); +#endif + +#if defined(PNG_gAMA_SUPPORTED) +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(void,png_set_gAMA) PNGARG((png_structp png_ptr, + png_infop info_ptr, double file_gamma)); +#endif +extern PNG_EXPORT(void,png_set_gAMA_fixed) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_fixed_point int_file_gamma)); +#endif + +#if defined(PNG_hIST_SUPPORTED) +extern PNG_EXPORT(png_uint_32,png_get_hIST) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_16p *hist)); +#endif + +#if defined(PNG_hIST_SUPPORTED) +extern PNG_EXPORT(void,png_set_hIST) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_16p hist)); +#endif + +extern PNG_EXPORT(png_uint_32,png_get_IHDR) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 *width, png_uint_32 *height, + int *bit_depth, int *color_type, int *interlace_method, + int *compression_method, int *filter_method)); + +extern PNG_EXPORT(void,png_set_IHDR) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 width, png_uint_32 height, int bit_depth, + int color_type, int interlace_method, int compression_method, + int filter_method)); + +#if defined(PNG_oFFs_SUPPORTED) +extern PNG_EXPORT(png_uint_32,png_get_oFFs) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_int_32 *offset_x, png_int_32 *offset_y, + int *unit_type)); +#endif + +#if defined(PNG_oFFs_SUPPORTED) +extern PNG_EXPORT(void,png_set_oFFs) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_int_32 offset_x, png_int_32 offset_y, + int unit_type)); +#endif + +#if defined(PNG_pCAL_SUPPORTED) +extern PNG_EXPORT(png_uint_32,png_get_pCAL) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_charp *purpose, png_int_32 *X0, png_int_32 *X1, + int *type, int *nparams, png_charp *units, png_charpp *params)); +#endif + +#if defined(PNG_pCAL_SUPPORTED) +extern PNG_EXPORT(void,png_set_pCAL) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_charp purpose, png_int_32 X0, png_int_32 X1, + int type, int nparams, png_charp units, png_charpp params)); +#endif + +#if defined(PNG_pHYs_SUPPORTED) +extern PNG_EXPORT(png_uint_32,png_get_pHYs) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)); +#endif + +#if defined(PNG_pHYs_SUPPORTED) +extern PNG_EXPORT(void,png_set_pHYs) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 res_x, png_uint_32 res_y, int unit_type)); +#endif + +extern PNG_EXPORT(png_uint_32,png_get_PLTE) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_colorp *palette, int *num_palette)); + +extern PNG_EXPORT(void,png_set_PLTE) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_colorp palette, int num_palette)); + +#if defined(PNG_sBIT_SUPPORTED) +extern PNG_EXPORT(png_uint_32,png_get_sBIT) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_color_8p *sig_bit)); +#endif + +#if defined(PNG_sBIT_SUPPORTED) +extern PNG_EXPORT(void,png_set_sBIT) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_color_8p sig_bit)); +#endif + +#if defined(PNG_sRGB_SUPPORTED) +extern PNG_EXPORT(png_uint_32,png_get_sRGB) PNGARG((png_structp png_ptr, + png_infop info_ptr, int *intent)); +#endif + +#if defined(PNG_sRGB_SUPPORTED) +extern PNG_EXPORT(void,png_set_sRGB) PNGARG((png_structp png_ptr, + png_infop info_ptr, int intent)); +extern PNG_EXPORT(void,png_set_sRGB_gAMA_and_cHRM) PNGARG((png_structp png_ptr, + png_infop info_ptr, int intent)); +#endif + +#if defined(PNG_iCCP_SUPPORTED) +extern PNG_EXPORT(png_uint_32,png_get_iCCP) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_charpp name, int *compression_type, + png_charpp profile, png_uint_32 *proflen)); + /* Note to maintainer: profile should be png_bytepp */ +#endif + +#if defined(PNG_iCCP_SUPPORTED) +extern PNG_EXPORT(void,png_set_iCCP) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_charp name, int compression_type, + png_charp profile, png_uint_32 proflen)); + /* Note to maintainer: profile should be png_bytep */ +#endif + +#if defined(PNG_sPLT_SUPPORTED) +extern PNG_EXPORT(png_uint_32,png_get_sPLT) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_sPLT_tpp entries)); +#endif + +#if defined(PNG_sPLT_SUPPORTED) +extern PNG_EXPORT(void,png_set_sPLT) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_sPLT_tp entries, int nentries)); +#endif + +#if defined(PNG_TEXT_SUPPORTED) +/* png_get_text also returns the number of text chunks in *num_text */ +extern PNG_EXPORT(png_uint_32,png_get_text) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_textp *text_ptr, int *num_text)); +#endif + +/* + * Note while png_set_text() will accept a structure whose text, + * language, and translated keywords are NULL pointers, the structure + * returned by png_get_text will always contain regular + * zero-terminated C strings. They might be empty strings but + * they will never be NULL pointers. + */ + +#if defined(PNG_TEXT_SUPPORTED) +extern PNG_EXPORT(void,png_set_text) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_textp text_ptr, int num_text)); +#endif + +#if defined(PNG_tIME_SUPPORTED) +extern PNG_EXPORT(png_uint_32,png_get_tIME) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_timep *mod_time)); +#endif + +#if defined(PNG_tIME_SUPPORTED) +extern PNG_EXPORT(void,png_set_tIME) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_timep mod_time)); +#endif + +#if defined(PNG_tRNS_SUPPORTED) +extern PNG_EXPORT(png_uint_32,png_get_tRNS) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_bytep *trans, int *num_trans, + png_color_16p *trans_values)); +#endif + +#if defined(PNG_tRNS_SUPPORTED) +extern PNG_EXPORT(void,png_set_tRNS) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_bytep trans, int num_trans, + png_color_16p trans_values)); +#endif + +#if defined(PNG_tRNS_SUPPORTED) +#endif + +#if defined(PNG_sCAL_SUPPORTED) +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_sCAL) PNGARG((png_structp png_ptr, + png_infop info_ptr, int *unit, double *width, double *height)); +#else +#ifdef PNG_FIXED_POINT_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_get_sCAL_s) PNGARG((png_structp png_ptr, + png_infop info_ptr, int *unit, png_charpp swidth, png_charpp sheight)); +#endif +#endif +#endif /* PNG_sCAL_SUPPORTED */ + +#if defined(PNG_sCAL_SUPPORTED) +#ifdef PNG_FLOATING_POINT_SUPPORTED +extern PNG_EXPORT(void,png_set_sCAL) PNGARG((png_structp png_ptr, + png_infop info_ptr, int unit, double width, double height)); +#else +#ifdef PNG_FIXED_POINT_SUPPORTED +extern PNG_EXPORT(void,png_set_sCAL_s) PNGARG((png_structp png_ptr, + png_infop info_ptr, int unit, png_charp swidth, png_charp sheight)); +#endif +#endif +#endif /* PNG_sCAL_SUPPORTED || PNG_WRITE_sCAL_SUPPORTED */ + +#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) +/* provide a list of chunks and how they are to be handled, if the built-in + handling or default unknown chunk handling is not desired. Any chunks not + listed will be handled in the default manner. The IHDR and IEND chunks + must not be listed. + keep = 0: follow default behaviour + = 1: do not keep + = 2: keep only if safe-to-copy + = 3: keep even if unsafe-to-copy +*/ +extern PNG_EXPORT(void, png_set_keep_unknown_chunks) PNGARG((png_structp + png_ptr, int keep, png_bytep chunk_list, int num_chunks)); +extern PNG_EXPORT(void, png_set_unknown_chunks) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_unknown_chunkp unknowns, int num_unknowns)); +extern PNG_EXPORT(void, png_set_unknown_chunk_location) + PNGARG((png_structp png_ptr, png_infop info_ptr, int chunk, int location)); +extern PNG_EXPORT(png_uint_32,png_get_unknown_chunks) PNGARG((png_structp + png_ptr, png_infop info_ptr, png_unknown_chunkpp entries)); +#endif +#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED +PNG_EXPORT(int,png_handle_as_unknown) PNGARG((png_structp png_ptr, png_bytep + chunk_name)); +#endif + +/* Png_free_data() will turn off the "valid" flag for anything it frees. + If you need to turn it off for a chunk that your application has freed, + you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK); */ +extern PNG_EXPORT(void, png_set_invalid) PNGARG((png_structp png_ptr, + png_infop info_ptr, int mask)); + +#if defined(PNG_INFO_IMAGE_SUPPORTED) +/* The "params" pointer is currently not used and is for future expansion. */ +extern PNG_EXPORT(void, png_read_png) PNGARG((png_structp png_ptr, + png_infop info_ptr, + int transforms, + png_voidp params)); +extern PNG_EXPORT(void, png_write_png) PNGARG((png_structp png_ptr, + png_infop info_ptr, + int transforms, + png_voidp params)); +#endif + +/* Define PNG_DEBUG at compile time for debugging information. Higher + * numbers for PNG_DEBUG mean more debugging information. This has + * only been added since version 0.95 so it is not implemented throughout + * libpng yet, but more support will be added as needed. + */ +#ifdef PNG_DEBUG +#if (PNG_DEBUG > 0) +#if !defined(PNG_DEBUG_FILE) && defined(_MSC_VER) +#include +#if (PNG_DEBUG > 1) +#ifndef _DEBUG +# define _DEBUG +#endif +#ifndef png_debug +#define png_debug(l,m) _RPT0(_CRT_WARN,m PNG_STRING_NEWLINE) +#endif +#ifndef png_debug1 +#define png_debug1(l,m,p1) _RPT1(_CRT_WARN,m PNG_STRING_NEWLINE,p1) +#endif +#ifndef png_debug2 +#define png_debug2(l,m,p1,p2) _RPT2(_CRT_WARN,m PNG_STRING_NEWLINE,p1,p2) +#endif +#endif +#else /* PNG_DEBUG_FILE || !_MSC_VER */ +#ifndef PNG_DEBUG_FILE +#define PNG_DEBUG_FILE stderr +#endif /* PNG_DEBUG_FILE */ + +#if (PNG_DEBUG > 1) +/* Note: ["%s"m PNG_STRING_NEWLINE] probably does not work on + * non-ISO compilers */ +# ifdef __STDC__ +# ifndef png_debug +# define png_debug(l,m) \ + { \ + int num_tabs=l; \ + fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \ + (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":"")))); \ + } +# endif +# ifndef png_debug1 +# define png_debug1(l,m,p1) \ + { \ + int num_tabs=l; \ + fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \ + (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))),p1); \ + } +# endif +# ifndef png_debug2 +# define png_debug2(l,m,p1,p2) \ + { \ + int num_tabs=l; \ + fprintf(PNG_DEBUG_FILE,"%s"m PNG_STRING_NEWLINE,(num_tabs==1 ? "\t" : \ + (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))),p1,p2); \ + } +# endif +# else /* __STDC __ */ +# ifndef png_debug +# define png_debug(l,m) \ + { \ + int num_tabs=l; \ + char format[256]; \ + snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \ + (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \ + m,PNG_STRING_NEWLINE); \ + fprintf(PNG_DEBUG_FILE,format); \ + } +# endif +# ifndef png_debug1 +# define png_debug1(l,m,p1) \ + { \ + int num_tabs=l; \ + char format[256]; \ + snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \ + (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \ + m,PNG_STRING_NEWLINE); \ + fprintf(PNG_DEBUG_FILE,format,p1); \ + } +# endif +# ifndef png_debug2 +# define png_debug2(l,m,p1,p2) \ + { \ + int num_tabs=l; \ + char format[256]; \ + snprintf(format,256,"%s%s%s",(num_tabs==1 ? "\t" : \ + (num_tabs==2 ? "\t\t":(num_tabs>2 ? "\t\t\t":""))), \ + m,PNG_STRING_NEWLINE); \ + fprintf(PNG_DEBUG_FILE,format,p1,p2); \ + } +# endif +# endif /* __STDC __ */ +#endif /* (PNG_DEBUG > 1) */ + +#endif /* _MSC_VER */ +#endif /* (PNG_DEBUG > 0) */ +#endif /* PNG_DEBUG */ +#ifndef png_debug +#define png_debug(l, m) +#endif +#ifndef png_debug1 +#define png_debug1(l, m, p1) +#endif +#ifndef png_debug2 +#define png_debug2(l, m, p1, p2) +#endif + +extern PNG_EXPORT(png_charp,png_get_copyright) PNGARG((png_structp png_ptr)); +extern PNG_EXPORT(png_charp,png_get_header_ver) PNGARG((png_structp png_ptr)); +extern PNG_EXPORT(png_charp,png_get_header_version) PNGARG((png_structp png_ptr)); +extern PNG_EXPORT(png_charp,png_get_libpng_ver) PNGARG((png_structp png_ptr)); + +#ifdef PNG_MNG_FEATURES_SUPPORTED +extern PNG_EXPORT(png_uint_32,png_permit_mng_features) PNGARG((png_structp + png_ptr, png_uint_32 mng_features_permitted)); +#endif + +/* For use in png_set_keep_unknown, added to version 1.2.6 */ +#define PNG_HANDLE_CHUNK_AS_DEFAULT 0 +#define PNG_HANDLE_CHUNK_NEVER 1 +#define PNG_HANDLE_CHUNK_IF_SAFE 2 +#define PNG_HANDLE_CHUNK_ALWAYS 3 + +/* Added to version 1.2.0 */ +#if defined(PNG_ASSEMBLER_CODE_SUPPORTED) +#if defined(PNG_MMX_CODE_SUPPORTED) +#define PNG_ASM_FLAG_MMX_SUPPORT_COMPILED 0x01 /* not user-settable */ +#define PNG_ASM_FLAG_MMX_SUPPORT_IN_CPU 0x02 /* not user-settable */ +#define PNG_ASM_FLAG_MMX_READ_COMBINE_ROW 0x04 +#define PNG_ASM_FLAG_MMX_READ_INTERLACE 0x08 +#define PNG_ASM_FLAG_MMX_READ_FILTER_SUB 0x10 +#define PNG_ASM_FLAG_MMX_READ_FILTER_UP 0x20 +#define PNG_ASM_FLAG_MMX_READ_FILTER_AVG 0x40 +#define PNG_ASM_FLAG_MMX_READ_FILTER_PAETH 0x80 +#define PNG_ASM_FLAGS_INITIALIZED 0x80000000 /* not user-settable */ + +#define PNG_MMX_READ_FLAGS ( PNG_ASM_FLAG_MMX_READ_COMBINE_ROW \ + | PNG_ASM_FLAG_MMX_READ_INTERLACE \ + | PNG_ASM_FLAG_MMX_READ_FILTER_SUB \ + | PNG_ASM_FLAG_MMX_READ_FILTER_UP \ + | PNG_ASM_FLAG_MMX_READ_FILTER_AVG \ + | PNG_ASM_FLAG_MMX_READ_FILTER_PAETH ) +#define PNG_MMX_WRITE_FLAGS ( 0 ) + +#define PNG_MMX_FLAGS ( PNG_ASM_FLAG_MMX_SUPPORT_COMPILED \ + | PNG_ASM_FLAG_MMX_SUPPORT_IN_CPU \ + | PNG_MMX_READ_FLAGS \ + | PNG_MMX_WRITE_FLAGS ) + +#define PNG_SELECT_READ 1 +#define PNG_SELECT_WRITE 2 +#endif /* PNG_MMX_CODE_SUPPORTED */ + +#if !defined(PNG_1_0_X) +/* pngget.c */ +extern PNG_EXPORT(png_uint_32,png_get_mmx_flagmask) + PNGARG((int flag_select, int *compilerID)); + +/* pngget.c */ +extern PNG_EXPORT(png_uint_32,png_get_asm_flagmask) + PNGARG((int flag_select)); + +/* pngget.c */ +extern PNG_EXPORT(png_uint_32,png_get_asm_flags) + PNGARG((png_structp png_ptr)); + +/* pngget.c */ +extern PNG_EXPORT(png_byte,png_get_mmx_bitdepth_threshold) + PNGARG((png_structp png_ptr)); + +/* pngget.c */ +extern PNG_EXPORT(png_uint_32,png_get_mmx_rowbytes_threshold) + PNGARG((png_structp png_ptr)); + +/* pngset.c */ +extern PNG_EXPORT(void,png_set_asm_flags) + PNGARG((png_structp png_ptr, png_uint_32 asm_flags)); + +/* pngset.c */ +extern PNG_EXPORT(void,png_set_mmx_thresholds) + PNGARG((png_structp png_ptr, png_byte mmx_bitdepth_threshold, + png_uint_32 mmx_rowbytes_threshold)); + +#endif /* PNG_1_0_X */ + +#if !defined(PNG_1_0_X) +/* png.c, pnggccrd.c, or pngvcrd.c */ +extern PNG_EXPORT(int,png_mmx_support) PNGARG((void)); +#endif /* PNG_1_0_X */ +#endif /* PNG_ASSEMBLER_CODE_SUPPORTED */ + +/* Strip the prepended error numbers ("#nnn ") from error and warning + * messages before passing them to the error or warning handler. */ +#ifdef PNG_ERROR_NUMBERS_SUPPORTED +extern PNG_EXPORT(void,png_set_strip_error_numbers) PNGARG((png_structp + png_ptr, png_uint_32 strip_mode)); +#endif + +/* Added at libpng-1.2.6 */ +#ifdef PNG_SET_USER_LIMITS_SUPPORTED +extern PNG_EXPORT(void,png_set_user_limits) PNGARG((png_structp + png_ptr, png_uint_32 user_width_max, png_uint_32 user_height_max)); +extern PNG_EXPORT(png_uint_32,png_get_user_width_max) PNGARG((png_structp + png_ptr)); +extern PNG_EXPORT(png_uint_32,png_get_user_height_max) PNGARG((png_structp + png_ptr)); +#endif + + +/* Maintainer: Put new public prototypes here ^, in libpng.3, and project defs */ + +#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED +/* With these routines we avoid an integer divide, which will be slower on + * most machines. However, it does take more operations than the corresponding + * divide method, so it may be slower on a few RISC systems. There are two + * shifts (by 8 or 16 bits) and an addition, versus a single integer divide. + * + * Note that the rounding factors are NOT supposed to be the same! 128 and + * 32768 are correct for the NODIV code; 127 and 32767 are correct for the + * standard method. + * + * [Optimized code by Greg Roelofs and Mark Adler...blame us for bugs. :-) ] + */ + + /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */ + +# define png_composite(composite, fg, alpha, bg) \ + { png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) * (png_uint_16)(alpha) \ + + (png_uint_16)(bg)*(png_uint_16)(255 - \ + (png_uint_16)(alpha)) + (png_uint_16)128); \ + (composite) = (png_byte)((temp + (temp >> 8)) >> 8); } + +# define png_composite_16(composite, fg, alpha, bg) \ + { png_uint_32 temp = (png_uint_32)((png_uint_32)(fg) * (png_uint_32)(alpha) \ + + (png_uint_32)(bg)*(png_uint_32)(65535L - \ + (png_uint_32)(alpha)) + (png_uint_32)32768L); \ + (composite) = (png_uint_16)((temp + (temp >> 16)) >> 16); } + +#else /* standard method using integer division */ + +# define png_composite(composite, fg, alpha, bg) \ + (composite) = (png_byte)(((png_uint_16)(fg) * (png_uint_16)(alpha) + \ + (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \ + (png_uint_16)127) / 255) + +# define png_composite_16(composite, fg, alpha, bg) \ + (composite) = (png_uint_16)(((png_uint_32)(fg) * (png_uint_32)(alpha) + \ + (png_uint_32)(bg)*(png_uint_32)(65535L - (png_uint_32)(alpha)) + \ + (png_uint_32)32767) / (png_uint_32)65535L) + +#endif /* PNG_READ_COMPOSITE_NODIV_SUPPORTED */ + +/* Inline macros to do direct reads of bytes from the input buffer. These + * require that you are using an architecture that uses PNG byte ordering + * (MSB first) and supports unaligned data storage. I think that PowerPC + * in big-endian mode and 680x0 are the only ones that will support this. + * The x86 line of processors definitely do not. The png_get_int_32() + * routine also assumes we are using two's complement format for negative + * values, which is almost certainly true. + */ +#if defined(PNG_READ_BIG_ENDIAN_SUPPORTED) +# define png_get_uint_32(buf) ( *((png_uint_32p) (buf))) +# define png_get_uint_16(buf) ( *((png_uint_16p) (buf))) +# define png_get_int_32(buf) ( *((png_int_32p) (buf))) +#else +extern PNG_EXPORT(png_uint_32,png_get_uint_32) PNGARG((png_bytep buf)); +extern PNG_EXPORT(png_uint_16,png_get_uint_16) PNGARG((png_bytep buf)); +extern PNG_EXPORT(png_int_32,png_get_int_32) PNGARG((png_bytep buf)); +#endif /* !PNG_READ_BIG_ENDIAN_SUPPORTED */ +extern PNG_EXPORT(png_uint_32,png_get_uint_31) + PNGARG((png_structp png_ptr, png_bytep buf)); +/* No png_get_int_16 -- may be added if there's a real need for it. */ + +/* Place a 32-bit number into a buffer in PNG byte order (big-endian). + */ +extern PNG_EXPORT(void,png_save_uint_32) + PNGARG((png_bytep buf, png_uint_32 i)); +extern PNG_EXPORT(void,png_save_int_32) + PNGARG((png_bytep buf, png_int_32 i)); + +/* Place a 16-bit number into a buffer in PNG byte order. + * The parameter is declared unsigned int, not png_uint_16, + * just to avoid potential problems on pre-ANSI C compilers. + */ +extern PNG_EXPORT(void,png_save_uint_16) + PNGARG((png_bytep buf, unsigned int i)); +/* No png_save_int_16 -- may be added if there's a real need for it. */ + +/* ************************************************************************* */ + +/* These next functions are used internally in the code. They generally + * shouldn't be used unless you are writing code to add or replace some + * functionality in libpng. More information about most functions can + * be found in the files where the functions are located. + */ + + +/* Various modes of operation, that are visible to applications because + * they are used for unknown chunk location. + */ +#define PNG_HAVE_IHDR 0x01 +#define PNG_HAVE_PLTE 0x02 +#define PNG_HAVE_IDAT 0x04 +#define PNG_AFTER_IDAT 0x08 /* Have complete zlib datastream */ +#define PNG_HAVE_IEND 0x10 + +#if defined(PNG_INTERNAL) + +/* More modes of operation. Note that after an init, mode is set to + * zero automatically when the structure is created. + */ +#define PNG_HAVE_gAMA 0x20 +#define PNG_HAVE_cHRM 0x40 +#define PNG_HAVE_sRGB 0x80 +#define PNG_HAVE_CHUNK_HEADER 0x100 +#define PNG_WROTE_tIME 0x200 +#define PNG_WROTE_INFO_BEFORE_PLTE 0x400 +#define PNG_BACKGROUND_IS_GRAY 0x800 +#define PNG_HAVE_PNG_SIGNATURE 0x1000 +#define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000 /* Have another chunk after IDAT */ + +/* flags for the transformations the PNG library does on the image data */ +#define PNG_BGR 0x0001 +#define PNG_INTERLACE 0x0002 +#define PNG_PACK 0x0004 +#define PNG_SHIFT 0x0008 +#define PNG_SWAP_BYTES 0x0010 +#define PNG_INVERT_MONO 0x0020 +#define PNG_DITHER 0x0040 +#define PNG_BACKGROUND 0x0080 +#define PNG_BACKGROUND_EXPAND 0x0100 + /* 0x0200 unused */ +#define PNG_16_TO_8 0x0400 +#define PNG_RGBA 0x0800 +#define PNG_EXPAND 0x1000 +#define PNG_GAMMA 0x2000 +#define PNG_GRAY_TO_RGB 0x4000 +#define PNG_FILLER 0x8000L +#define PNG_PACKSWAP 0x10000L +#define PNG_SWAP_ALPHA 0x20000L +#define PNG_STRIP_ALPHA 0x40000L +#define PNG_INVERT_ALPHA 0x80000L +#define PNG_USER_TRANSFORM 0x100000L +#define PNG_RGB_TO_GRAY_ERR 0x200000L +#define PNG_RGB_TO_GRAY_WARN 0x400000L +#define PNG_RGB_TO_GRAY 0x600000L /* two bits, RGB_TO_GRAY_ERR|WARN */ + /* 0x800000L Unused */ +#define PNG_ADD_ALPHA 0x1000000L /* Added to libpng-1.2.7 */ +#define PNG_EXPAND_tRNS 0x2000000L /* Added to libpng-1.2.9 */ + /* 0x4000000L unused */ + /* 0x8000000L unused */ + /* 0x10000000L unused */ + /* 0x20000000L unused */ + /* 0x40000000L unused */ + +/* flags for png_create_struct */ +#define PNG_STRUCT_PNG 0x0001 +#define PNG_STRUCT_INFO 0x0002 + +/* Scaling factor for filter heuristic weighting calculations */ +#define PNG_WEIGHT_SHIFT 8 +#define PNG_WEIGHT_FACTOR (1<<(PNG_WEIGHT_SHIFT)) +#define PNG_COST_SHIFT 3 +#define PNG_COST_FACTOR (1<<(PNG_COST_SHIFT)) + +/* flags for the png_ptr->flags rather than declaring a byte for each one */ +#define PNG_FLAG_ZLIB_CUSTOM_STRATEGY 0x0001 +#define PNG_FLAG_ZLIB_CUSTOM_LEVEL 0x0002 +#define PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL 0x0004 +#define PNG_FLAG_ZLIB_CUSTOM_WINDOW_BITS 0x0008 +#define PNG_FLAG_ZLIB_CUSTOM_METHOD 0x0010 +#define PNG_FLAG_ZLIB_FINISHED 0x0020 +#define PNG_FLAG_ROW_INIT 0x0040 +#define PNG_FLAG_FILLER_AFTER 0x0080 +#define PNG_FLAG_CRC_ANCILLARY_USE 0x0100 +#define PNG_FLAG_CRC_ANCILLARY_NOWARN 0x0200 +#define PNG_FLAG_CRC_CRITICAL_USE 0x0400 +#define PNG_FLAG_CRC_CRITICAL_IGNORE 0x0800 +#define PNG_FLAG_FREE_PLTE 0x1000 +#define PNG_FLAG_FREE_TRNS 0x2000 +#define PNG_FLAG_FREE_HIST 0x4000 +#define PNG_FLAG_KEEP_UNKNOWN_CHUNKS 0x8000L +#define PNG_FLAG_KEEP_UNSAFE_CHUNKS 0x10000L +#define PNG_FLAG_LIBRARY_MISMATCH 0x20000L +#define PNG_FLAG_STRIP_ERROR_NUMBERS 0x40000L +#define PNG_FLAG_STRIP_ERROR_TEXT 0x80000L +#define PNG_FLAG_MALLOC_NULL_MEM_OK 0x100000L +#define PNG_FLAG_ADD_ALPHA 0x200000L /* Added to libpng-1.2.8 */ +#define PNG_FLAG_STRIP_ALPHA 0x400000L /* Added to libpng-1.2.8 */ + /* 0x800000L unused */ + /* 0x1000000L unused */ + /* 0x2000000L unused */ + /* 0x4000000L unused */ + /* 0x8000000L unused */ + /* 0x10000000L unused */ + /* 0x20000000L unused */ + /* 0x40000000L unused */ + +#define PNG_FLAG_CRC_ANCILLARY_MASK (PNG_FLAG_CRC_ANCILLARY_USE | \ + PNG_FLAG_CRC_ANCILLARY_NOWARN) + +#define PNG_FLAG_CRC_CRITICAL_MASK (PNG_FLAG_CRC_CRITICAL_USE | \ + PNG_FLAG_CRC_CRITICAL_IGNORE) + +#define PNG_FLAG_CRC_MASK (PNG_FLAG_CRC_ANCILLARY_MASK | \ + PNG_FLAG_CRC_CRITICAL_MASK) + +/* save typing and make code easier to understand */ + +#define PNG_COLOR_DIST(c1, c2) (abs((int)((c1).red) - (int)((c2).red)) + \ + abs((int)((c1).green) - (int)((c2).green)) + \ + abs((int)((c1).blue) - (int)((c2).blue))) + +/* Added to libpng-1.2.6 JB */ +#define PNG_ROWBYTES(pixel_bits, width) \ + ((pixel_bits) >= 8 ? \ + ((width) * (((png_uint_32)(pixel_bits)) >> 3)) : \ + (( ((width) * ((png_uint_32)(pixel_bits))) + 7) >> 3) ) + +/* PNG_OUT_OF_RANGE returns true if value is outside the range + ideal-delta..ideal+delta. Each argument is evaluated twice. + "ideal" and "delta" should be constants, normally simple + integers, "value" a variable. Added to libpng-1.2.6 JB */ +#define PNG_OUT_OF_RANGE(value, ideal, delta) \ + ( (value) < (ideal)-(delta) || (value) > (ideal)+(delta) ) + +/* variables declared in png.c - only it needs to define PNG_NO_EXTERN */ +#if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN) +/* place to hold the signature string for a PNG file. */ +#ifdef PNG_USE_GLOBAL_ARRAYS + PNG_EXPORT_VAR (PNG_CONST png_byte FARDATA) png_sig[8]; +#else +#endif +#endif /* PNG_NO_EXTERN */ + +/* Constant strings for known chunk types. If you need to add a chunk, + * define the name here, and add an invocation of the macro in png.c and + * wherever it's needed. + */ +#define PNG_IHDR png_byte png_IHDR[5] = { 73, 72, 68, 82, '\0'} +#define PNG_IDAT png_byte png_IDAT[5] = { 73, 68, 65, 84, '\0'} +#define PNG_IEND png_byte png_IEND[5] = { 73, 69, 78, 68, '\0'} +#define PNG_PLTE png_byte png_PLTE[5] = { 80, 76, 84, 69, '\0'} +#define PNG_bKGD png_byte png_bKGD[5] = { 98, 75, 71, 68, '\0'} +#define PNG_cHRM png_byte png_cHRM[5] = { 99, 72, 82, 77, '\0'} +#define PNG_gAMA png_byte png_gAMA[5] = {103, 65, 77, 65, '\0'} +#define PNG_hIST png_byte png_hIST[5] = {104, 73, 83, 84, '\0'} +#define PNG_iCCP png_byte png_iCCP[5] = {105, 67, 67, 80, '\0'} +#define PNG_iTXt png_byte png_iTXt[5] = {105, 84, 88, 116, '\0'} +#define PNG_oFFs png_byte png_oFFs[5] = {111, 70, 70, 115, '\0'} +#define PNG_pCAL png_byte png_pCAL[5] = {112, 67, 65, 76, '\0'} +#define PNG_sCAL png_byte png_sCAL[5] = {115, 67, 65, 76, '\0'} +#define PNG_pHYs png_byte png_pHYs[5] = {112, 72, 89, 115, '\0'} +#define PNG_sBIT png_byte png_sBIT[5] = {115, 66, 73, 84, '\0'} +#define PNG_sPLT png_byte png_sPLT[5] = {115, 80, 76, 84, '\0'} +#define PNG_sRGB png_byte png_sRGB[5] = {115, 82, 71, 66, '\0'} +#define PNG_tEXt png_byte png_tEXt[5] = {116, 69, 88, 116, '\0'} +#define PNG_tIME png_byte png_tIME[5] = {116, 73, 77, 69, '\0'} +#define PNG_tRNS png_byte png_tRNS[5] = {116, 82, 78, 83, '\0'} +#define PNG_zTXt png_byte png_zTXt[5] = {122, 84, 88, 116, '\0'} + +#ifdef PNG_USE_GLOBAL_ARRAYS +PNG_EXPORT_VAR (png_byte FARDATA) png_IHDR[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_IDAT[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_IEND[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_PLTE[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_bKGD[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_cHRM[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_gAMA[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_hIST[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_iCCP[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_iTXt[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_oFFs[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_pCAL[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_sCAL[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_pHYs[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_sBIT[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_sPLT[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_sRGB[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_tEXt[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_tIME[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_tRNS[5]; +PNG_EXPORT_VAR (png_byte FARDATA) png_zTXt[5]; +#endif /* PNG_USE_GLOBAL_ARRAYS */ + +#if defined(PNG_1_0_X) || defined (PNG_1_2_X) +/* Initialize png_ptr struct for reading, and allocate any other memory. + * (old interface - DEPRECATED - use png_create_read_struct instead). + */ +extern PNG_EXPORT(void,png_read_init) PNGARG((png_structp png_ptr)); +#undef png_read_init +#define png_read_init(png_ptr) png_read_init_3(&png_ptr, \ + PNG_LIBPNG_VER_STRING, png_sizeof(png_struct)); +#endif + +extern PNG_EXPORT(void,png_read_init_3) PNGARG((png_structpp ptr_ptr, + png_const_charp user_png_ver, png_size_t png_struct_size)); +#if defined(PNG_1_0_X) || defined (PNG_1_2_X) +extern PNG_EXPORT(void,png_read_init_2) PNGARG((png_structp png_ptr, + png_const_charp user_png_ver, png_size_t png_struct_size, png_size_t + png_info_size)); +#endif + +#if defined(PNG_1_0_X) || defined (PNG_1_2_X) +/* Initialize png_ptr struct for writing, and allocate any other memory. + * (old interface - DEPRECATED - use png_create_write_struct instead). + */ +extern PNG_EXPORT(void,png_write_init) PNGARG((png_structp png_ptr)); +#undef png_write_init +#define png_write_init(png_ptr) png_write_init_3(&png_ptr, \ + PNG_LIBPNG_VER_STRING, png_sizeof(png_struct)); +#endif + +extern PNG_EXPORT(void,png_write_init_3) PNGARG((png_structpp ptr_ptr, + png_const_charp user_png_ver, png_size_t png_struct_size)); +extern PNG_EXPORT(void,png_write_init_2) PNGARG((png_structp png_ptr, + png_const_charp user_png_ver, png_size_t png_struct_size, png_size_t + png_info_size)); + +/* Allocate memory for an internal libpng struct */ +PNG_EXTERN png_voidp png_create_struct PNGARG((int type)); + +/* Free memory from internal libpng struct */ +PNG_EXTERN void png_destroy_struct PNGARG((png_voidp struct_ptr)); + +PNG_EXTERN png_voidp png_create_struct_2 PNGARG((int type, png_malloc_ptr + malloc_fn, png_voidp mem_ptr)); +PNG_EXTERN void png_destroy_struct_2 PNGARG((png_voidp struct_ptr, + png_free_ptr free_fn, png_voidp mem_ptr)); + +/* Free any memory that info_ptr points to and reset struct. */ +PNG_EXTERN void png_info_destroy PNGARG((png_structp png_ptr, + png_infop info_ptr)); + +#ifndef PNG_1_0_X +/* Function to allocate memory for zlib. */ +PNG_EXTERN voidpf png_zalloc PNGARG((voidpf png_ptr, uInt items, uInt size)); + +/* Function to free memory for zlib */ +PNG_EXTERN void png_zfree PNGARG((voidpf png_ptr, voidpf ptr)); + +#ifdef PNG_SIZE_T +/* Function to convert a sizeof an item to png_sizeof item */ + PNG_EXTERN png_size_t PNGAPI png_convert_size PNGARG((size_t size)); +#endif + +/* Next four functions are used internally as callbacks. PNGAPI is required + * but not PNG_EXPORT. PNGAPI added at libpng version 1.2.3. */ + +PNG_EXTERN void PNGAPI png_default_read_data PNGARG((png_structp png_ptr, + png_bytep data, png_size_t length)); + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +PNG_EXTERN void PNGAPI png_push_fill_buffer PNGARG((png_structp png_ptr, + png_bytep buffer, png_size_t length)); +#endif + +PNG_EXTERN void PNGAPI png_default_write_data PNGARG((png_structp png_ptr, + png_bytep data, png_size_t length)); + +#if defined(PNG_WRITE_FLUSH_SUPPORTED) +#if !defined(PNG_NO_STDIO) +PNG_EXTERN void PNGAPI png_default_flush PNGARG((png_structp png_ptr)); +#endif +#endif +#else /* PNG_1_0_X */ +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +PNG_EXTERN void png_push_fill_buffer PNGARG((png_structp png_ptr, + png_bytep buffer, png_size_t length)); +#endif +#endif /* PNG_1_0_X */ + +/* Reset the CRC variable */ +PNG_EXTERN void png_reset_crc PNGARG((png_structp png_ptr)); + +/* Write the "data" buffer to whatever output you are using. */ +PNG_EXTERN void png_write_data PNGARG((png_structp png_ptr, png_bytep data, + png_size_t length)); + +/* Read data from whatever input you are using into the "data" buffer */ +PNG_EXTERN void png_read_data PNGARG((png_structp png_ptr, png_bytep data, + png_size_t length)); + +/* Read bytes into buf, and update png_ptr->crc */ +PNG_EXTERN void png_crc_read PNGARG((png_structp png_ptr, png_bytep buf, + png_size_t length)); + +/* Decompress data in a chunk that uses compression */ +#if defined(PNG_zTXt_SUPPORTED) || defined(PNG_iTXt_SUPPORTED) || \ + defined(PNG_iCCP_SUPPORTED) || defined(PNG_sPLT_SUPPORTED) +PNG_EXTERN void png_decompress_chunk PNGARG((png_structp png_ptr, + int comp_type, png_size_t chunklength, + png_size_t prefix_length, png_size_t *data_length)); +#endif + +/* Read "skip" bytes, read the file crc, and (optionally) verify png_ptr->crc */ +PNG_EXTERN int png_crc_finish PNGARG((png_structp png_ptr, png_uint_32 skip)); + +/* Read the CRC from the file and compare it to the libpng calculated CRC */ +PNG_EXTERN int png_crc_error PNGARG((png_structp png_ptr)); + +/* Calculate the CRC over a section of data. Note that we are only + * passing a maximum of 64K on systems that have this as a memory limit, + * since this is the maximum buffer size we can specify. + */ +PNG_EXTERN void png_calculate_crc PNGARG((png_structp png_ptr, png_bytep ptr, + png_size_t length)); + +#if defined(PNG_WRITE_FLUSH_SUPPORTED) +PNG_EXTERN void png_flush PNGARG((png_structp png_ptr)); +#endif + +/* simple function to write the signature */ +PNG_EXTERN void png_write_sig PNGARG((png_structp png_ptr)); + +/* write various chunks */ + +/* Write the IHDR chunk, and update the png_struct with the necessary + * information. + */ +PNG_EXTERN void png_write_IHDR PNGARG((png_structp png_ptr, png_uint_32 width, + png_uint_32 height, + int bit_depth, int color_type, int compression_method, int filter_method, + int interlace_method)); + +PNG_EXTERN void png_write_PLTE PNGARG((png_structp png_ptr, png_colorp palette, + png_uint_32 num_pal)); + +PNG_EXTERN void png_write_IDAT PNGARG((png_structp png_ptr, png_bytep data, + png_size_t length)); + +PNG_EXTERN void png_write_IEND PNGARG((png_structp png_ptr)); + +#if defined(PNG_WRITE_gAMA_SUPPORTED) +#ifdef PNG_FLOATING_POINT_SUPPORTED +PNG_EXTERN void png_write_gAMA PNGARG((png_structp png_ptr, double file_gamma)); +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED +PNG_EXTERN void png_write_gAMA_fixed PNGARG((png_structp png_ptr, png_fixed_point + file_gamma)); +#endif +#endif + +#if defined(PNG_WRITE_sBIT_SUPPORTED) +PNG_EXTERN void png_write_sBIT PNGARG((png_structp png_ptr, png_color_8p sbit, + int color_type)); +#endif + +#if defined(PNG_WRITE_cHRM_SUPPORTED) +#ifdef PNG_FLOATING_POINT_SUPPORTED +PNG_EXTERN void png_write_cHRM PNGARG((png_structp png_ptr, + double white_x, double white_y, + double red_x, double red_y, double green_x, double green_y, + double blue_x, double blue_y)); +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED +PNG_EXTERN void png_write_cHRM_fixed PNGARG((png_structp png_ptr, + png_fixed_point int_white_x, png_fixed_point int_white_y, + png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point + int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x, + png_fixed_point int_blue_y)); +#endif +#endif + +#if defined(PNG_WRITE_sRGB_SUPPORTED) +PNG_EXTERN void png_write_sRGB PNGARG((png_structp png_ptr, + int intent)); +#endif + +#if defined(PNG_WRITE_iCCP_SUPPORTED) +PNG_EXTERN void png_write_iCCP PNGARG((png_structp png_ptr, + png_charp name, int compression_type, + png_charp profile, int proflen)); + /* Note to maintainer: profile should be png_bytep */ +#endif + +#if defined(PNG_WRITE_sPLT_SUPPORTED) +PNG_EXTERN void png_write_sPLT PNGARG((png_structp png_ptr, + png_sPLT_tp palette)); +#endif + +#if defined(PNG_WRITE_tRNS_SUPPORTED) +PNG_EXTERN void png_write_tRNS PNGARG((png_structp png_ptr, png_bytep trans, + png_color_16p values, int number, int color_type)); +#endif + +#if defined(PNG_WRITE_bKGD_SUPPORTED) +PNG_EXTERN void png_write_bKGD PNGARG((png_structp png_ptr, + png_color_16p values, int color_type)); +#endif + +#if defined(PNG_WRITE_hIST_SUPPORTED) +PNG_EXTERN void png_write_hIST PNGARG((png_structp png_ptr, png_uint_16p hist, + int num_hist)); +#endif + +#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_pCAL_SUPPORTED) || \ + defined(PNG_WRITE_iCCP_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED) +PNG_EXTERN png_size_t png_check_keyword PNGARG((png_structp png_ptr, + png_charp key, png_charpp new_key)); +#endif + +#if defined(PNG_WRITE_tEXt_SUPPORTED) +PNG_EXTERN void png_write_tEXt PNGARG((png_structp png_ptr, png_charp key, + png_charp text, png_size_t text_len)); +#endif + +#if defined(PNG_WRITE_zTXt_SUPPORTED) +PNG_EXTERN void png_write_zTXt PNGARG((png_structp png_ptr, png_charp key, + png_charp text, png_size_t text_len, int compression)); +#endif + +#if defined(PNG_WRITE_iTXt_SUPPORTED) +PNG_EXTERN void png_write_iTXt PNGARG((png_structp png_ptr, + int compression, png_charp key, png_charp lang, png_charp lang_key, + png_charp text)); +#endif + +#if defined(PNG_TEXT_SUPPORTED) /* Added at version 1.0.14 and 1.2.4 */ +PNG_EXTERN int png_set_text_2 PNGARG((png_structp png_ptr, + png_infop info_ptr, png_textp text_ptr, int num_text)); +#endif + +#if defined(PNG_WRITE_oFFs_SUPPORTED) +PNG_EXTERN void png_write_oFFs PNGARG((png_structp png_ptr, + png_int_32 x_offset, png_int_32 y_offset, int unit_type)); +#endif + +#if defined(PNG_WRITE_pCAL_SUPPORTED) +PNG_EXTERN void png_write_pCAL PNGARG((png_structp png_ptr, png_charp purpose, + png_int_32 X0, png_int_32 X1, int type, int nparams, + png_charp units, png_charpp params)); +#endif + +#if defined(PNG_WRITE_pHYs_SUPPORTED) +PNG_EXTERN void png_write_pHYs PNGARG((png_structp png_ptr, + png_uint_32 x_pixels_per_unit, png_uint_32 y_pixels_per_unit, + int unit_type)); +#endif + +#if defined(PNG_WRITE_tIME_SUPPORTED) +PNG_EXTERN void png_write_tIME PNGARG((png_structp png_ptr, + png_timep mod_time)); +#endif + +#if defined(PNG_WRITE_sCAL_SUPPORTED) +#if defined(PNG_FLOATING_POINT_SUPPORTED) && !defined(PNG_NO_STDIO) +PNG_EXTERN void png_write_sCAL PNGARG((png_structp png_ptr, + int unit, double width, double height)); +#else +#ifdef PNG_FIXED_POINT_SUPPORTED +PNG_EXTERN void png_write_sCAL_s PNGARG((png_structp png_ptr, + int unit, png_charp width, png_charp height)); +#endif +#endif +#endif + +/* Called when finished processing a row of data */ +PNG_EXTERN void png_write_finish_row PNGARG((png_structp png_ptr)); + +/* Internal use only. Called before first row of data */ +PNG_EXTERN void png_write_start_row PNGARG((png_structp png_ptr)); + +#if defined(PNG_READ_GAMMA_SUPPORTED) +PNG_EXTERN void png_build_gamma_table PNGARG((png_structp png_ptr)); +#endif + +/* combine a row of data, dealing with alpha, etc. if requested */ +PNG_EXTERN void png_combine_row PNGARG((png_structp png_ptr, png_bytep row, + int mask)); + +#if defined(PNG_READ_INTERLACING_SUPPORTED) +/* expand an interlaced row */ +/* OLD pre-1.0.9 interface: +PNG_EXTERN void png_do_read_interlace PNGARG((png_row_infop row_info, + png_bytep row, int pass, png_uint_32 transformations)); + */ +PNG_EXTERN void png_do_read_interlace PNGARG((png_structp png_ptr)); +#endif + +/* GRR TO DO (2.0 or whenever): simplify other internal calling interfaces */ + +#if defined(PNG_WRITE_INTERLACING_SUPPORTED) +/* grab pixels out of a row for an interlaced pass */ +PNG_EXTERN void png_do_write_interlace PNGARG((png_row_infop row_info, + png_bytep row, int pass)); +#endif + +/* unfilter a row */ +PNG_EXTERN void png_read_filter_row PNGARG((png_structp png_ptr, + png_row_infop row_info, png_bytep row, png_bytep prev_row, int filter)); + +/* Choose the best filter to use and filter the row data */ +PNG_EXTERN void png_write_find_filter PNGARG((png_structp png_ptr, + png_row_infop row_info)); + +/* Write out the filtered row. */ +PNG_EXTERN void png_write_filtered_row PNGARG((png_structp png_ptr, + png_bytep filtered_row)); +/* finish a row while reading, dealing with interlacing passes, etc. */ +PNG_EXTERN void png_read_finish_row PNGARG((png_structp png_ptr)); + +/* initialize the row buffers, etc. */ +PNG_EXTERN void png_read_start_row PNGARG((png_structp png_ptr)); +/* optional call to update the users info structure */ +PNG_EXTERN void png_read_transform_info PNGARG((png_structp png_ptr, + png_infop info_ptr)); + +/* these are the functions that do the transformations */ +#if defined(PNG_READ_FILLER_SUPPORTED) +PNG_EXTERN void png_do_read_filler PNGARG((png_row_infop row_info, + png_bytep row, png_uint_32 filler, png_uint_32 flags)); +#endif + +#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) +PNG_EXTERN void png_do_read_swap_alpha PNGARG((png_row_infop row_info, + png_bytep row)); +#endif + +#if defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) +PNG_EXTERN void png_do_write_swap_alpha PNGARG((png_row_infop row_info, + png_bytep row)); +#endif + +#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) +PNG_EXTERN void png_do_read_invert_alpha PNGARG((png_row_infop row_info, + png_bytep row)); +#endif + +#if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) +PNG_EXTERN void png_do_write_invert_alpha PNGARG((png_row_infop row_info, + png_bytep row)); +#endif + +#if defined(PNG_WRITE_FILLER_SUPPORTED) || \ + defined(PNG_READ_STRIP_ALPHA_SUPPORTED) +PNG_EXTERN void png_do_strip_filler PNGARG((png_row_infop row_info, + png_bytep row, png_uint_32 flags)); +#endif + +#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) +PNG_EXTERN void png_do_swap PNGARG((png_row_infop row_info, png_bytep row)); +#endif + +#if defined(PNG_READ_PACKSWAP_SUPPORTED) || defined(PNG_WRITE_PACKSWAP_SUPPORTED) +PNG_EXTERN void png_do_packswap PNGARG((png_row_infop row_info, png_bytep row)); +#endif + +#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) +PNG_EXTERN int png_do_rgb_to_gray PNGARG((png_structp png_ptr, png_row_infop + row_info, png_bytep row)); +#endif + +#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED) +PNG_EXTERN void png_do_gray_to_rgb PNGARG((png_row_infop row_info, + png_bytep row)); +#endif + +#if defined(PNG_READ_PACK_SUPPORTED) +PNG_EXTERN void png_do_unpack PNGARG((png_row_infop row_info, png_bytep row)); +#endif + +#if defined(PNG_READ_SHIFT_SUPPORTED) +PNG_EXTERN void png_do_unshift PNGARG((png_row_infop row_info, png_bytep row, + png_color_8p sig_bits)); +#endif + +#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) +PNG_EXTERN void png_do_invert PNGARG((png_row_infop row_info, png_bytep row)); +#endif + +#if defined(PNG_READ_16_TO_8_SUPPORTED) +PNG_EXTERN void png_do_chop PNGARG((png_row_infop row_info, png_bytep row)); +#endif + +#if defined(PNG_READ_DITHER_SUPPORTED) +PNG_EXTERN void png_do_dither PNGARG((png_row_infop row_info, + png_bytep row, png_bytep palette_lookup, png_bytep dither_lookup)); + +# if defined(PNG_CORRECT_PALETTE_SUPPORTED) +PNG_EXTERN void png_correct_palette PNGARG((png_structp png_ptr, + png_colorp palette, int num_palette)); +# endif +#endif + +#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) +PNG_EXTERN void png_do_bgr PNGARG((png_row_infop row_info, png_bytep row)); +#endif + +#if defined(PNG_WRITE_PACK_SUPPORTED) +PNG_EXTERN void png_do_pack PNGARG((png_row_infop row_info, + png_bytep row, png_uint_32 bit_depth)); +#endif + +#if defined(PNG_WRITE_SHIFT_SUPPORTED) +PNG_EXTERN void png_do_shift PNGARG((png_row_infop row_info, png_bytep row, + png_color_8p bit_depth)); +#endif + +#if defined(PNG_READ_BACKGROUND_SUPPORTED) +#if defined(PNG_READ_GAMMA_SUPPORTED) +PNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, png_bytep row, + png_color_16p trans_values, png_color_16p background, + png_color_16p background_1, + png_bytep gamma_table, png_bytep gamma_from_1, png_bytep gamma_to_1, + png_uint_16pp gamma_16, png_uint_16pp gamma_16_from_1, + png_uint_16pp gamma_16_to_1, int gamma_shift)); +#else +PNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, png_bytep row, + png_color_16p trans_values, png_color_16p background)); +#endif +#endif + +#if defined(PNG_READ_GAMMA_SUPPORTED) +PNG_EXTERN void png_do_gamma PNGARG((png_row_infop row_info, png_bytep row, + png_bytep gamma_table, png_uint_16pp gamma_16_table, + int gamma_shift)); +#endif + +#if defined(PNG_READ_EXPAND_SUPPORTED) +PNG_EXTERN void png_do_expand_palette PNGARG((png_row_infop row_info, + png_bytep row, png_colorp palette, png_bytep trans, int num_trans)); +PNG_EXTERN void png_do_expand PNGARG((png_row_infop row_info, + png_bytep row, png_color_16p trans_value)); +#endif + +/* The following decodes the appropriate chunks, and does error correction, + * then calls the appropriate callback for the chunk if it is valid. + */ + +/* decode the IHDR chunk */ +PNG_EXTERN void png_handle_IHDR PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +PNG_EXTERN void png_handle_PLTE PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +PNG_EXTERN void png_handle_IEND PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); + +#if defined(PNG_READ_bKGD_SUPPORTED) +PNG_EXTERN void png_handle_bKGD PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +#endif + +#if defined(PNG_READ_cHRM_SUPPORTED) +PNG_EXTERN void png_handle_cHRM PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +#endif + +#if defined(PNG_READ_gAMA_SUPPORTED) +PNG_EXTERN void png_handle_gAMA PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +#endif + +#if defined(PNG_READ_hIST_SUPPORTED) +PNG_EXTERN void png_handle_hIST PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +#endif + +#if defined(PNG_READ_iCCP_SUPPORTED) +extern void png_handle_iCCP PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +#endif /* PNG_READ_iCCP_SUPPORTED */ + +#if defined(PNG_READ_iTXt_SUPPORTED) +PNG_EXTERN void png_handle_iTXt PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +#endif + +#if defined(PNG_READ_oFFs_SUPPORTED) +PNG_EXTERN void png_handle_oFFs PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +#endif + +#if defined(PNG_READ_pCAL_SUPPORTED) +PNG_EXTERN void png_handle_pCAL PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +#endif + +#if defined(PNG_READ_pHYs_SUPPORTED) +PNG_EXTERN void png_handle_pHYs PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +#endif + +#if defined(PNG_READ_sBIT_SUPPORTED) +PNG_EXTERN void png_handle_sBIT PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +#endif + +#if defined(PNG_READ_sCAL_SUPPORTED) +PNG_EXTERN void png_handle_sCAL PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +#endif + +#if defined(PNG_READ_sPLT_SUPPORTED) +extern void png_handle_sPLT PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +#endif /* PNG_READ_sPLT_SUPPORTED */ + +#if defined(PNG_READ_sRGB_SUPPORTED) +PNG_EXTERN void png_handle_sRGB PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +#endif + +#if defined(PNG_READ_tEXt_SUPPORTED) +PNG_EXTERN void png_handle_tEXt PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +#endif + +#if defined(PNG_READ_tIME_SUPPORTED) +PNG_EXTERN void png_handle_tIME PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +#endif + +#if defined(PNG_READ_tRNS_SUPPORTED) +PNG_EXTERN void png_handle_tRNS PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +#endif + +#if defined(PNG_READ_zTXt_SUPPORTED) +PNG_EXTERN void png_handle_zTXt PNGARG((png_structp png_ptr, png_infop info_ptr, + png_uint_32 length)); +#endif + +PNG_EXTERN void png_handle_unknown PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 length)); + +PNG_EXTERN void png_check_chunk_name PNGARG((png_structp png_ptr, + png_bytep chunk_name)); + +/* handle the transformations for reading and writing */ +PNG_EXTERN void png_do_read_transformations PNGARG((png_structp png_ptr)); +PNG_EXTERN void png_do_write_transformations PNGARG((png_structp png_ptr)); + +PNG_EXTERN void png_init_read_transformations PNGARG((png_structp png_ptr)); + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +PNG_EXTERN void png_push_read_chunk PNGARG((png_structp png_ptr, + png_infop info_ptr)); +PNG_EXTERN void png_push_read_sig PNGARG((png_structp png_ptr, + png_infop info_ptr)); +PNG_EXTERN void png_push_check_crc PNGARG((png_structp png_ptr)); +PNG_EXTERN void png_push_crc_skip PNGARG((png_structp png_ptr, + png_uint_32 length)); +PNG_EXTERN void png_push_crc_finish PNGARG((png_structp png_ptr)); +PNG_EXTERN void png_push_save_buffer PNGARG((png_structp png_ptr)); +PNG_EXTERN void png_push_restore_buffer PNGARG((png_structp png_ptr, + png_bytep buffer, png_size_t buffer_length)); +PNG_EXTERN void png_push_read_IDAT PNGARG((png_structp png_ptr)); +PNG_EXTERN void png_process_IDAT_data PNGARG((png_structp png_ptr, + png_bytep buffer, png_size_t buffer_length)); +PNG_EXTERN void png_push_process_row PNGARG((png_structp png_ptr)); +PNG_EXTERN void png_push_handle_unknown PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 length)); +PNG_EXTERN void png_push_have_info PNGARG((png_structp png_ptr, + png_infop info_ptr)); +PNG_EXTERN void png_push_have_end PNGARG((png_structp png_ptr, + png_infop info_ptr)); +PNG_EXTERN void png_push_have_row PNGARG((png_structp png_ptr, png_bytep row)); +PNG_EXTERN void png_push_read_end PNGARG((png_structp png_ptr, + png_infop info_ptr)); +PNG_EXTERN void png_process_some_data PNGARG((png_structp png_ptr, + png_infop info_ptr)); +PNG_EXTERN void png_read_push_finish_row PNGARG((png_structp png_ptr)); +#if defined(PNG_READ_tEXt_SUPPORTED) +PNG_EXTERN void png_push_handle_tEXt PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 length)); +PNG_EXTERN void png_push_read_tEXt PNGARG((png_structp png_ptr, + png_infop info_ptr)); +#endif +#if defined(PNG_READ_zTXt_SUPPORTED) +PNG_EXTERN void png_push_handle_zTXt PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 length)); +PNG_EXTERN void png_push_read_zTXt PNGARG((png_structp png_ptr, + png_infop info_ptr)); +#endif +#if defined(PNG_READ_iTXt_SUPPORTED) +PNG_EXTERN void png_push_handle_iTXt PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 length)); +PNG_EXTERN void png_push_read_iTXt PNGARG((png_structp png_ptr, + png_infop info_ptr)); +#endif + +#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ + +#ifdef PNG_MNG_FEATURES_SUPPORTED +PNG_EXTERN void png_do_read_intrapixel PNGARG((png_row_infop row_info, + png_bytep row)); +PNG_EXTERN void png_do_write_intrapixel PNGARG((png_row_infop row_info, + png_bytep row)); +#endif + +#if defined(PNG_ASSEMBLER_CODE_SUPPORTED) +#if defined(PNG_MMX_CODE_SUPPORTED) +/* png.c */ /* PRIVATE */ +PNG_EXTERN void png_init_mmx_flags PNGARG((png_structp png_ptr)); +#endif +#endif + +#if defined(PNG_INCH_CONVERSIONS) && defined(PNG_FLOATING_POINT_SUPPORTED) +PNG_EXTERN png_uint_32 png_get_pixels_per_inch PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +PNG_EXTERN png_uint_32 png_get_x_pixels_per_inch PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +PNG_EXTERN png_uint_32 png_get_y_pixels_per_inch PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +PNG_EXTERN float png_get_x_offset_inches PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +PNG_EXTERN float png_get_y_offset_inches PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +#if defined(PNG_pHYs_SUPPORTED) +PNG_EXTERN png_uint_32 png_get_pHYs_dpi PNGARG((png_structp png_ptr, +png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)); +#endif /* PNG_pHYs_SUPPORTED */ +#endif /* PNG_INCH_CONVERSIONS && PNG_FLOATING_POINT_SUPPORTED */ + +/* Read the chunk header (length + type name) */ +PNG_EXTERN png_uint_32 png_read_chunk_header PNGARG((png_structp png_ptr)); + +/* Added at libpng version 1.2.34 */ +#if defined(PNG_cHRM_SUPPORTED) +PNG_EXTERN int png_check_cHRM_fixed PNGARG((png_structp png_ptr, + png_fixed_point int_white_x, png_fixed_point int_white_y, + png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point + int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x, + png_fixed_point int_blue_y)); +#endif + +/* Maintainer: Put new private prototypes here ^ and in libpngpf.3 */ + +#endif /* PNG_INTERNAL */ + +#ifdef __cplusplus +} +#endif + +#endif /* PNG_VERSION_INFO_ONLY */ +/* do not put anything past this line */ +#endif /* PNG_H */ diff --git a/Libraries/libpng/pngconf.h b/Libraries/libpng/pngconf.h new file mode 100644 index 0000000..025368d --- /dev/null +++ b/Libraries/libpng/pngconf.h @@ -0,0 +1,1496 @@ + +/* pngconf.h - machine configurable file for libpng + * + * libpng version 1.2.37 - June 4, 2009 + * For conditions of distribution and use, see copyright notice in png.h + * Copyright (c) 1998-2009 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + */ + +/* Any machine specific code is near the front of this file, so if you + * are configuring libpng for a machine, you may want to read the section + * starting here down to where it starts to typedef png_color, png_text, + * and png_info. + */ + +#ifndef PNGCONF_H +#define PNGCONF_H + +#define PNG_1_2_X + +/* + * PNG_USER_CONFIG has to be defined on the compiler command line. This + * includes the resource compiler for Windows DLL configurations. + */ +#ifdef PNG_USER_CONFIG +# ifndef PNG_USER_PRIVATEBUILD +# define PNG_USER_PRIVATEBUILD +# endif +#include "pngusr.h" +#endif + +/* PNG_CONFIGURE_LIBPNG is set by the "configure" script. */ +#ifdef PNG_CONFIGURE_LIBPNG +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#endif + +/* + * Added at libpng-1.2.8 + * + * If you create a private DLL you need to define in "pngusr.h" the followings: + * #define PNG_USER_PRIVATEBUILD + * e.g. #define PNG_USER_PRIVATEBUILD "Build by MyCompany for xyz reasons." + * #define PNG_USER_DLLFNAME_POSTFIX + * e.g. // private DLL "libpng13gx.dll" + * #define PNG_USER_DLLFNAME_POSTFIX "gx" + * + * The following macros are also at your disposal if you want to complete the + * DLL VERSIONINFO structure. + * - PNG_USER_VERSIONINFO_COMMENTS + * - PNG_USER_VERSIONINFO_COMPANYNAME + * - PNG_USER_VERSIONINFO_LEGALTRADEMARKS + */ + +#ifdef __STDC__ +#ifdef SPECIALBUILD +# pragma message("PNG_LIBPNG_SPECIALBUILD (and deprecated SPECIALBUILD)\ + are now LIBPNG reserved macros. Use PNG_USER_PRIVATEBUILD instead.") +#endif + +#ifdef PRIVATEBUILD +# pragma message("PRIVATEBUILD is deprecated.\ + Use PNG_USER_PRIVATEBUILD instead.") +# define PNG_USER_PRIVATEBUILD PRIVATEBUILD +#endif +#endif /* __STDC__ */ + +#ifndef PNG_VERSION_INFO_ONLY + +/* End of material added to libpng-1.2.8 */ + +/* Added at libpng-1.2.19, removed at libpng-1.2.20 because it caused trouble + Restored at libpng-1.2.21 */ +#if !defined(PNG_NO_WARN_UNINITIALIZED_ROW) && \ + !defined(PNG_WARN_UNINITIALIZED_ROW) +# define PNG_WARN_UNINITIALIZED_ROW 1 +#endif +/* End of material added at libpng-1.2.19/1.2.21 */ + +/* This is the size of the compression buffer, and thus the size of + * an IDAT chunk. Make this whatever size you feel is best for your + * machine. One of these will be allocated per png_struct. When this + * is full, it writes the data to the disk, and does some other + * calculations. Making this an extremely small size will slow + * the library down, but you may want to experiment to determine + * where it becomes significant, if you are concerned with memory + * usage. Note that zlib allocates at least 32Kb also. For readers, + * this describes the size of the buffer available to read the data in. + * Unless this gets smaller than the size of a row (compressed), + * it should not make much difference how big this is. + */ + +#ifndef PNG_ZBUF_SIZE +# define PNG_ZBUF_SIZE 8192 +#endif + +/* Enable if you want a write-only libpng */ + +#ifndef PNG_NO_READ_SUPPORTED +# define PNG_READ_SUPPORTED +#endif + +/* Enable if you want a read-only libpng */ + +#ifndef PNG_NO_WRITE_SUPPORTED +# define PNG_WRITE_SUPPORTED +#endif + +/* Enabled by default in 1.2.0. You can disable this if you don't need to + support PNGs that are embedded in MNG datastreams */ +#if !defined(PNG_1_0_X) && !defined(PNG_NO_MNG_FEATURES) +# ifndef PNG_MNG_FEATURES_SUPPORTED +# define PNG_MNG_FEATURES_SUPPORTED +# endif +#endif + +#ifndef PNG_NO_FLOATING_POINT_SUPPORTED +# ifndef PNG_FLOATING_POINT_SUPPORTED +# define PNG_FLOATING_POINT_SUPPORTED +# endif +#endif + +/* If you are running on a machine where you cannot allocate more + * than 64K of memory at once, uncomment this. While libpng will not + * normally need that much memory in a chunk (unless you load up a very + * large file), zlib needs to know how big of a chunk it can use, and + * libpng thus makes sure to check any memory allocation to verify it + * will fit into memory. +#define PNG_MAX_MALLOC_64K + */ +#if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K) +# define PNG_MAX_MALLOC_64K +#endif + +/* Special munging to support doing things the 'cygwin' way: + * 'Normal' png-on-win32 defines/defaults: + * PNG_BUILD_DLL -- building dll + * PNG_USE_DLL -- building an application, linking to dll + * (no define) -- building static library, or building an + * application and linking to the static lib + * 'Cygwin' defines/defaults: + * PNG_BUILD_DLL -- (ignored) building the dll + * (no define) -- (ignored) building an application, linking to the dll + * PNG_STATIC -- (ignored) building the static lib, or building an + * application that links to the static lib. + * ALL_STATIC -- (ignored) building various static libs, or building an + * application that links to the static libs. + * Thus, + * a cygwin user should define either PNG_BUILD_DLL or PNG_STATIC, and + * this bit of #ifdefs will define the 'correct' config variables based on + * that. If a cygwin user *wants* to define 'PNG_USE_DLL' that's okay, but + * unnecessary. + * + * Also, the precedence order is: + * ALL_STATIC (since we can't #undef something outside our namespace) + * PNG_BUILD_DLL + * PNG_STATIC + * (nothing) == PNG_USE_DLL + * + * CYGWIN (2002-01-20): The preceding is now obsolete. With the advent + * of auto-import in binutils, we no longer need to worry about + * __declspec(dllexport) / __declspec(dllimport) and friends. Therefore, + * we don't need to worry about PNG_STATIC or ALL_STATIC when it comes + * to __declspec() stuff. However, we DO need to worry about + * PNG_BUILD_DLL and PNG_STATIC because those change some defaults + * such as CONSOLE_IO and whether GLOBAL_ARRAYS are allowed. + */ +#if defined(__CYGWIN__) +# if defined(ALL_STATIC) +# if defined(PNG_BUILD_DLL) +# undef PNG_BUILD_DLL +# endif +# if defined(PNG_USE_DLL) +# undef PNG_USE_DLL +# endif +# if defined(PNG_DLL) +# undef PNG_DLL +# endif +# if !defined(PNG_STATIC) +# define PNG_STATIC +# endif +# else +# if defined (PNG_BUILD_DLL) +# if defined(PNG_STATIC) +# undef PNG_STATIC +# endif +# if defined(PNG_USE_DLL) +# undef PNG_USE_DLL +# endif +# if !defined(PNG_DLL) +# define PNG_DLL +# endif +# else +# if defined(PNG_STATIC) +# if defined(PNG_USE_DLL) +# undef PNG_USE_DLL +# endif +# if defined(PNG_DLL) +# undef PNG_DLL +# endif +# else +# if !defined(PNG_USE_DLL) +# define PNG_USE_DLL +# endif +# if !defined(PNG_DLL) +# define PNG_DLL +# endif +# endif +# endif +# endif +#endif + +/* This protects us against compilers that run on a windowing system + * and thus don't have or would rather us not use the stdio types: + * stdin, stdout, and stderr. The only one currently used is stderr + * in png_error() and png_warning(). #defining PNG_NO_CONSOLE_IO will + * prevent these from being compiled and used. #defining PNG_NO_STDIO + * will also prevent these, plus will prevent the entire set of stdio + * macros and functions (FILE *, printf, etc.) from being compiled and used, + * unless (PNG_DEBUG > 0) has been #defined. + * + * #define PNG_NO_CONSOLE_IO + * #define PNG_NO_STDIO + */ + +#if defined(_WIN32_WCE) +# include + /* Console I/O functions are not supported on WindowsCE */ +# define PNG_NO_CONSOLE_IO + /* abort() may not be supported on some/all Windows CE platforms */ +# define PNG_ABORT() exit(-1) +# ifdef PNG_DEBUG +# undef PNG_DEBUG +# endif +#endif + +#ifdef PNG_BUILD_DLL +# ifndef PNG_CONSOLE_IO_SUPPORTED +# ifndef PNG_NO_CONSOLE_IO +# define PNG_NO_CONSOLE_IO +# endif +# endif +#endif + +# ifdef PNG_NO_STDIO +# ifndef PNG_NO_CONSOLE_IO +# define PNG_NO_CONSOLE_IO +# endif +# ifdef PNG_DEBUG +# if (PNG_DEBUG > 0) +# include +# endif +# endif +# else +# if !defined(_WIN32_WCE) +/* "stdio.h" functions are not supported on WindowsCE */ +# include +# endif +# endif + +/* This macro protects us against machines that don't have function + * prototypes (ie K&R style headers). If your compiler does not handle + * function prototypes, define this macro and use the included ansi2knr. + * I've always been able to use _NO_PROTO as the indicator, but you may + * need to drag the empty declaration out in front of here, or change the + * ifdef to suit your own needs. + */ +#ifndef PNGARG + +#ifdef OF /* zlib prototype munger */ +# define PNGARG(arglist) OF(arglist) +#else + +#ifdef _NO_PROTO +# define PNGARG(arglist) () +# ifndef PNG_TYPECAST_NULL +# define PNG_TYPECAST_NULL +# endif +#else +# define PNGARG(arglist) arglist +#endif /* _NO_PROTO */ + + +#endif /* OF */ + +#endif /* PNGARG */ + +/* Try to determine if we are compiling on a Mac. Note that testing for + * just __MWERKS__ is not good enough, because the Codewarrior is now used + * on non-Mac platforms. + */ +#ifndef MACOS +# if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \ + defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC) +# define MACOS +# endif +#endif + +/* enough people need this for various reasons to include it here */ +#if !defined(MACOS) && !defined(RISCOS) && !defined(_WIN32_WCE) +# include +#endif + +#if !defined(PNG_SETJMP_NOT_SUPPORTED) && !defined(PNG_NO_SETJMP_SUPPORTED) +# define PNG_SETJMP_SUPPORTED +#endif + +#ifdef PNG_SETJMP_SUPPORTED +/* This is an attempt to force a single setjmp behaviour on Linux. If + * the X config stuff didn't define _BSD_SOURCE we wouldn't need this. + * + * You can bypass this test if you know that your application uses exactly + * the same setjmp.h that was included when libpng was built. Only define + * PNG_SKIP_SETJMP_CHECK while building your application, prior to the + * application's '#include "png.h"'. Don't define PNG_SKIP_SETJMP_CHECK + * while building a separate libpng library for general use. + */ + +# ifndef PNG_SKIP_SETJMP_CHECK +# ifdef __linux__ +# ifdef _BSD_SOURCE +# define PNG_SAVE_BSD_SOURCE +# undef _BSD_SOURCE +# endif +# ifdef _SETJMP_H + /* If you encounter a compiler error here, see the explanation + * near the end of INSTALL. + */ + __pngconf.h__ in libpng already includes setjmp.h; + __dont__ include it again.; +# endif +# endif /* __linux__ */ +# endif /* PNG_SKIP_SETJMP_CHECK */ + + /* include setjmp.h for error handling */ +# include + +# ifdef __linux__ +# ifdef PNG_SAVE_BSD_SOURCE +# ifndef _BSD_SOURCE +# define _BSD_SOURCE +# endif +# undef PNG_SAVE_BSD_SOURCE +# endif +# endif /* __linux__ */ +#endif /* PNG_SETJMP_SUPPORTED */ + +#ifdef BSD +# include +#else +# include +#endif + +/* Other defines for things like memory and the like can go here. */ +#ifdef PNG_INTERNAL + +#include + +/* The functions exported by PNG_EXTERN are PNG_INTERNAL functions, which + * aren't usually used outside the library (as far as I know), so it is + * debatable if they should be exported at all. In the future, when it is + * possible to have run-time registry of chunk-handling functions, some of + * these will be made available again. +#define PNG_EXTERN extern + */ +#define PNG_EXTERN + +/* Other defines specific to compilers can go here. Try to keep + * them inside an appropriate ifdef/endif pair for portability. + */ + +#if defined(PNG_FLOATING_POINT_SUPPORTED) +# if defined(MACOS) + /* We need to check that hasn't already been included earlier + * as it seems it doesn't agree with , yet we should really use + * if possible. + */ +# if !defined(__MATH_H__) && !defined(__MATH_H) && !defined(__cmath__) +# include +# endif +# else +# include +# endif +# if defined(_AMIGA) && defined(__SASC) && defined(_M68881) + /* Amiga SAS/C: We must include builtin FPU functions when compiling using + * MATH=68881 + */ +# include +# endif +#endif + +/* Codewarrior on NT has linking problems without this. */ +#if (defined(__MWERKS__) && defined(WIN32)) || defined(__STDC__) +# define PNG_ALWAYS_EXTERN +#endif + +/* This provides the non-ANSI (far) memory allocation routines. */ +#if defined(__TURBOC__) && defined(__MSDOS__) +# include +# include +#endif + +/* I have no idea why is this necessary... */ +#if defined(_MSC_VER) && (defined(WIN32) || defined(_Windows) || \ + defined(_WINDOWS) || defined(_WIN32) || defined(__WIN32__)) +# include +#endif + +/* This controls how fine the dithering gets. As this allocates + * a largish chunk of memory (32K), those who are not as concerned + * with dithering quality can decrease some or all of these. + */ +#ifndef PNG_DITHER_RED_BITS +# define PNG_DITHER_RED_BITS 5 +#endif +#ifndef PNG_DITHER_GREEN_BITS +# define PNG_DITHER_GREEN_BITS 5 +#endif +#ifndef PNG_DITHER_BLUE_BITS +# define PNG_DITHER_BLUE_BITS 5 +#endif + +/* This controls how fine the gamma correction becomes when you + * are only interested in 8 bits anyway. Increasing this value + * results in more memory being used, and more pow() functions + * being called to fill in the gamma tables. Don't set this value + * less then 8, and even that may not work (I haven't tested it). + */ + +#ifndef PNG_MAX_GAMMA_8 +# define PNG_MAX_GAMMA_8 11 +#endif + +/* This controls how much a difference in gamma we can tolerate before + * we actually start doing gamma conversion. + */ +#ifndef PNG_GAMMA_THRESHOLD +# define PNG_GAMMA_THRESHOLD 0.05 +#endif + +#endif /* PNG_INTERNAL */ + +/* The following uses const char * instead of char * for error + * and warning message functions, so some compilers won't complain. + * If you do not want to use const, define PNG_NO_CONST here. + */ + +#ifndef PNG_NO_CONST +# define PNG_CONST const +#else +# define PNG_CONST +#endif + +/* The following defines give you the ability to remove code from the + * library that you will not be using. I wish I could figure out how to + * automate this, but I can't do that without making it seriously hard + * on the users. So if you are not using an ability, change the #define + * to and #undef, and that part of the library will not be compiled. If + * your linker can't find a function, you may want to make sure the + * ability is defined here. Some of these depend upon some others being + * defined. I haven't figured out all the interactions here, so you may + * have to experiment awhile to get everything to compile. If you are + * creating or using a shared library, you probably shouldn't touch this, + * as it will affect the size of the structures, and this will cause bad + * things to happen if the library and/or application ever change. + */ + +/* Any features you will not be using can be undef'ed here */ + +/* GR-P, 0.96a: Set "*TRANSFORMS_SUPPORTED as default but allow user + * to turn it off with "*TRANSFORMS_NOT_SUPPORTED" or *PNG_NO_*_TRANSFORMS + * on the compile line, then pick and choose which ones to define without + * having to edit this file. It is safe to use the *TRANSFORMS_NOT_SUPPORTED + * if you only want to have a png-compliant reader/writer but don't need + * any of the extra transformations. This saves about 80 kbytes in a + * typical installation of the library. (PNG_NO_* form added in version + * 1.0.1c, for consistency) + */ + +/* The size of the png_text structure changed in libpng-1.0.6 when + * iTXt support was added. iTXt support was turned off by default through + * libpng-1.2.x, to support old apps that malloc the png_text structure + * instead of calling png_set_text() and letting libpng malloc it. It + * was turned on by default in libpng-1.3.0. + */ + +#if defined(PNG_1_0_X) || defined (PNG_1_2_X) +# ifndef PNG_NO_iTXt_SUPPORTED +# define PNG_NO_iTXt_SUPPORTED +# endif +# ifndef PNG_NO_READ_iTXt +# define PNG_NO_READ_iTXt +# endif +# ifndef PNG_NO_WRITE_iTXt +# define PNG_NO_WRITE_iTXt +# endif +#endif + +#if !defined(PNG_NO_iTXt_SUPPORTED) +# if !defined(PNG_READ_iTXt_SUPPORTED) && !defined(PNG_NO_READ_iTXt) +# define PNG_READ_iTXt +# endif +# if !defined(PNG_WRITE_iTXt_SUPPORTED) && !defined(PNG_NO_WRITE_iTXt) +# define PNG_WRITE_iTXt +# endif +#endif + +/* The following support, added after version 1.0.0, can be turned off here en + * masse by defining PNG_LEGACY_SUPPORTED in case you need binary compatibility + * with old applications that require the length of png_struct and png_info + * to remain unchanged. + */ + +#ifdef PNG_LEGACY_SUPPORTED +# define PNG_NO_FREE_ME +# define PNG_NO_READ_UNKNOWN_CHUNKS +# define PNG_NO_WRITE_UNKNOWN_CHUNKS +# define PNG_NO_READ_USER_CHUNKS +# define PNG_NO_READ_iCCP +# define PNG_NO_WRITE_iCCP +# define PNG_NO_READ_iTXt +# define PNG_NO_WRITE_iTXt +# define PNG_NO_READ_sCAL +# define PNG_NO_WRITE_sCAL +# define PNG_NO_READ_sPLT +# define PNG_NO_WRITE_sPLT +# define PNG_NO_INFO_IMAGE +# define PNG_NO_READ_RGB_TO_GRAY +# define PNG_NO_READ_USER_TRANSFORM +# define PNG_NO_WRITE_USER_TRANSFORM +# define PNG_NO_USER_MEM +# define PNG_NO_READ_EMPTY_PLTE +# define PNG_NO_MNG_FEATURES +# define PNG_NO_FIXED_POINT_SUPPORTED +#endif + +/* Ignore attempt to turn off both floating and fixed point support */ +#if !defined(PNG_FLOATING_POINT_SUPPORTED) || \ + !defined(PNG_NO_FIXED_POINT_SUPPORTED) +# define PNG_FIXED_POINT_SUPPORTED +#endif + +#ifndef PNG_NO_FREE_ME +# define PNG_FREE_ME_SUPPORTED +#endif + +#if defined(PNG_READ_SUPPORTED) + +#if !defined(PNG_READ_TRANSFORMS_NOT_SUPPORTED) && \ + !defined(PNG_NO_READ_TRANSFORMS) +# define PNG_READ_TRANSFORMS_SUPPORTED +#endif + +#ifdef PNG_READ_TRANSFORMS_SUPPORTED +# ifndef PNG_NO_READ_EXPAND +# define PNG_READ_EXPAND_SUPPORTED +# endif +# ifndef PNG_NO_READ_SHIFT +# define PNG_READ_SHIFT_SUPPORTED +# endif +# ifndef PNG_NO_READ_PACK +# define PNG_READ_PACK_SUPPORTED +# endif +# ifndef PNG_NO_READ_BGR +# define PNG_READ_BGR_SUPPORTED +# endif +# ifndef PNG_NO_READ_SWAP +# define PNG_READ_SWAP_SUPPORTED +# endif +# ifndef PNG_NO_READ_PACKSWAP +# define PNG_READ_PACKSWAP_SUPPORTED +# endif +# ifndef PNG_NO_READ_INVERT +# define PNG_READ_INVERT_SUPPORTED +# endif +# ifndef PNG_NO_READ_DITHER +# define PNG_READ_DITHER_SUPPORTED +# endif +# ifndef PNG_NO_READ_BACKGROUND +# define PNG_READ_BACKGROUND_SUPPORTED +# endif +# ifndef PNG_NO_READ_16_TO_8 +# define PNG_READ_16_TO_8_SUPPORTED +# endif +# ifndef PNG_NO_READ_FILLER +# define PNG_READ_FILLER_SUPPORTED +# endif +# ifndef PNG_NO_READ_GAMMA +# define PNG_READ_GAMMA_SUPPORTED +# endif +# ifndef PNG_NO_READ_GRAY_TO_RGB +# define PNG_READ_GRAY_TO_RGB_SUPPORTED +# endif +# ifndef PNG_NO_READ_SWAP_ALPHA +# define PNG_READ_SWAP_ALPHA_SUPPORTED +# endif +# ifndef PNG_NO_READ_INVERT_ALPHA +# define PNG_READ_INVERT_ALPHA_SUPPORTED +# endif +# ifndef PNG_NO_READ_STRIP_ALPHA +# define PNG_READ_STRIP_ALPHA_SUPPORTED +# endif +# ifndef PNG_NO_READ_USER_TRANSFORM +# define PNG_READ_USER_TRANSFORM_SUPPORTED +# endif +# ifndef PNG_NO_READ_RGB_TO_GRAY +# define PNG_READ_RGB_TO_GRAY_SUPPORTED +# endif +#endif /* PNG_READ_TRANSFORMS_SUPPORTED */ + +#if !defined(PNG_NO_PROGRESSIVE_READ) && \ + !defined(PNG_PROGRESSIVE_READ_SUPPORTED) /* if you don't do progressive */ +# define PNG_PROGRESSIVE_READ_SUPPORTED /* reading. This is not talking */ +#endif /* about interlacing capability! You'll */ + /* still have interlacing unless you change the following line: */ + +#define PNG_READ_INTERLACING_SUPPORTED /* required in PNG-compliant decoders */ + +#ifndef PNG_NO_READ_COMPOSITE_NODIV +# ifndef PNG_NO_READ_COMPOSITED_NODIV /* libpng-1.0.x misspelling */ +# define PNG_READ_COMPOSITE_NODIV_SUPPORTED /* well tested on Intel, SGI */ +# endif +#endif + +#if defined(PNG_1_0_X) || defined (PNG_1_2_X) +/* Deprecated, will be removed from version 2.0.0. + Use PNG_MNG_FEATURES_SUPPORTED instead. */ +#ifndef PNG_NO_READ_EMPTY_PLTE +# define PNG_READ_EMPTY_PLTE_SUPPORTED +#endif +#endif + +#endif /* PNG_READ_SUPPORTED */ + +#if defined(PNG_WRITE_SUPPORTED) + +# if !defined(PNG_WRITE_TRANSFORMS_NOT_SUPPORTED) && \ + !defined(PNG_NO_WRITE_TRANSFORMS) +# define PNG_WRITE_TRANSFORMS_SUPPORTED +#endif + +#ifdef PNG_WRITE_TRANSFORMS_SUPPORTED +# ifndef PNG_NO_WRITE_SHIFT +# define PNG_WRITE_SHIFT_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_PACK +# define PNG_WRITE_PACK_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_BGR +# define PNG_WRITE_BGR_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_SWAP +# define PNG_WRITE_SWAP_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_PACKSWAP +# define PNG_WRITE_PACKSWAP_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_INVERT +# define PNG_WRITE_INVERT_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_FILLER +# define PNG_WRITE_FILLER_SUPPORTED /* same as WRITE_STRIP_ALPHA */ +# endif +# ifndef PNG_NO_WRITE_SWAP_ALPHA +# define PNG_WRITE_SWAP_ALPHA_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_INVERT_ALPHA +# define PNG_WRITE_INVERT_ALPHA_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_USER_TRANSFORM +# define PNG_WRITE_USER_TRANSFORM_SUPPORTED +# endif +#endif /* PNG_WRITE_TRANSFORMS_SUPPORTED */ + +#if !defined(PNG_NO_WRITE_INTERLACING_SUPPORTED) && \ + !defined(PNG_WRITE_INTERLACING_SUPPORTED) +#define PNG_WRITE_INTERLACING_SUPPORTED /* not required for PNG-compliant + encoders, but can cause trouble + if left undefined */ +#endif + +#if !defined(PNG_NO_WRITE_WEIGHTED_FILTER) && \ + !defined(PNG_WRITE_WEIGHTED_FILTER) && \ + defined(PNG_FLOATING_POINT_SUPPORTED) +# define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED +#endif + +#ifndef PNG_NO_WRITE_FLUSH +# define PNG_WRITE_FLUSH_SUPPORTED +#endif + +#if defined(PNG_1_0_X) || defined (PNG_1_2_X) +/* Deprecated, see PNG_MNG_FEATURES_SUPPORTED, above */ +#ifndef PNG_NO_WRITE_EMPTY_PLTE +# define PNG_WRITE_EMPTY_PLTE_SUPPORTED +#endif +#endif + +#endif /* PNG_WRITE_SUPPORTED */ + +#ifndef PNG_1_0_X +# ifndef PNG_NO_ERROR_NUMBERS +# define PNG_ERROR_NUMBERS_SUPPORTED +# endif +#endif /* PNG_1_0_X */ + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) +# ifndef PNG_NO_USER_TRANSFORM_PTR +# define PNG_USER_TRANSFORM_PTR_SUPPORTED +# endif +#endif + +#ifndef PNG_NO_STDIO +# define PNG_TIME_RFC1123_SUPPORTED +#endif + +/* This adds extra functions in pngget.c for accessing data from the + * info pointer (added in version 0.99) + * png_get_image_width() + * png_get_image_height() + * png_get_bit_depth() + * png_get_color_type() + * png_get_compression_type() + * png_get_filter_type() + * png_get_interlace_type() + * png_get_pixel_aspect_ratio() + * png_get_pixels_per_meter() + * png_get_x_offset_pixels() + * png_get_y_offset_pixels() + * png_get_x_offset_microns() + * png_get_y_offset_microns() + */ +#if !defined(PNG_NO_EASY_ACCESS) && !defined(PNG_EASY_ACCESS_SUPPORTED) +# define PNG_EASY_ACCESS_SUPPORTED +#endif + +/* PNG_ASSEMBLER_CODE was enabled by default in version 1.2.0 + * and removed from version 1.2.20. The following will be removed + * from libpng-1.4.0 +*/ + +#if defined(PNG_READ_SUPPORTED) && !defined(PNG_NO_OPTIMIZED_CODE) +# ifndef PNG_OPTIMIZED_CODE_SUPPORTED +# define PNG_OPTIMIZED_CODE_SUPPORTED +# endif +#endif + +#if defined(PNG_READ_SUPPORTED) && !defined(PNG_NO_ASSEMBLER_CODE) && defined(__i386__) +# ifndef PNG_ASSEMBLER_CODE_SUPPORTED +# define PNG_ASSEMBLER_CODE_SUPPORTED +# endif + +# if defined(__GNUC__) && defined(__x86_64__) && (__GNUC__ < 4) + /* work around 64-bit gcc compiler bugs in gcc-3.x */ +# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE) +# define PNG_NO_MMX_CODE +# endif +# endif + +# if defined(__APPLE__) +# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE) +# define PNG_NO_MMX_CODE +# endif +# endif + +# if (defined(__MWERKS__) && ((__MWERKS__ < 0x0900) || macintosh)) +# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE) +# define PNG_NO_MMX_CODE +# endif +# endif + +# if !defined(PNG_MMX_CODE_SUPPORTED) && !defined(PNG_NO_MMX_CODE) +# define PNG_MMX_CODE_SUPPORTED +# endif + +#endif +/* end of obsolete code to be removed from libpng-1.4.0 */ + +#if !defined(PNG_1_0_X) +#if !defined(PNG_NO_USER_MEM) && !defined(PNG_USER_MEM_SUPPORTED) +# define PNG_USER_MEM_SUPPORTED +#endif +#endif /* PNG_1_0_X */ + +/* Added at libpng-1.2.6 */ +#if !defined(PNG_1_0_X) +#ifndef PNG_SET_USER_LIMITS_SUPPORTED +#if !defined(PNG_NO_SET_USER_LIMITS) && !defined(PNG_SET_USER_LIMITS_SUPPORTED) +# define PNG_SET_USER_LIMITS_SUPPORTED +#endif +#endif +#endif /* PNG_1_0_X */ + +/* Added at libpng-1.0.16 and 1.2.6. To accept all valid PNGS no matter + * how large, set these limits to 0x7fffffffL + */ +#ifndef PNG_USER_WIDTH_MAX +# define PNG_USER_WIDTH_MAX 1000000L +#endif +#ifndef PNG_USER_HEIGHT_MAX +# define PNG_USER_HEIGHT_MAX 1000000L +#endif + +/* Added at libpng-1.2.34 and 1.4.0 */ +#ifndef PNG_STRING_NEWLINE +#define PNG_STRING_NEWLINE "\n" +#endif + +/* These are currently experimental features, define them if you want */ + +/* very little testing */ +/* +#ifdef PNG_READ_SUPPORTED +# ifndef PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED +# define PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED +# endif +#endif +*/ + +/* This is only for PowerPC big-endian and 680x0 systems */ +/* some testing */ +/* +#ifndef PNG_READ_BIG_ENDIAN_SUPPORTED +# define PNG_READ_BIG_ENDIAN_SUPPORTED +#endif +*/ + +/* Buggy compilers (e.g., gcc 2.7.2.2) need this */ +/* +#define PNG_NO_POINTER_INDEXING +*/ + +/* These functions are turned off by default, as they will be phased out. */ +/* +#define PNG_USELESS_TESTS_SUPPORTED +#define PNG_CORRECT_PALETTE_SUPPORTED +*/ + +/* Any chunks you are not interested in, you can undef here. The + * ones that allocate memory may be expecially important (hIST, + * tEXt, zTXt, tRNS, pCAL). Others will just save time and make png_info + * a bit smaller. + */ + +#if defined(PNG_READ_SUPPORTED) && \ + !defined(PNG_READ_ANCILLARY_CHUNKS_NOT_SUPPORTED) && \ + !defined(PNG_NO_READ_ANCILLARY_CHUNKS) +# define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED +#endif + +#if defined(PNG_WRITE_SUPPORTED) && \ + !defined(PNG_WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED) && \ + !defined(PNG_NO_WRITE_ANCILLARY_CHUNKS) +# define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED +#endif + +#ifdef PNG_READ_ANCILLARY_CHUNKS_SUPPORTED + +#ifdef PNG_NO_READ_TEXT +# define PNG_NO_READ_iTXt +# define PNG_NO_READ_tEXt +# define PNG_NO_READ_zTXt +#endif +#ifndef PNG_NO_READ_bKGD +# define PNG_READ_bKGD_SUPPORTED +# define PNG_bKGD_SUPPORTED +#endif +#ifndef PNG_NO_READ_cHRM +# define PNG_READ_cHRM_SUPPORTED +# define PNG_cHRM_SUPPORTED +#endif +#ifndef PNG_NO_READ_gAMA +# define PNG_READ_gAMA_SUPPORTED +# define PNG_gAMA_SUPPORTED +#endif +#ifndef PNG_NO_READ_hIST +# define PNG_READ_hIST_SUPPORTED +# define PNG_hIST_SUPPORTED +#endif +#ifndef PNG_NO_READ_iCCP +# define PNG_READ_iCCP_SUPPORTED +# define PNG_iCCP_SUPPORTED +#endif +#ifndef PNG_NO_READ_iTXt +# ifndef PNG_READ_iTXt_SUPPORTED +# define PNG_READ_iTXt_SUPPORTED +# endif +# ifndef PNG_iTXt_SUPPORTED +# define PNG_iTXt_SUPPORTED +# endif +#endif +#ifndef PNG_NO_READ_oFFs +# define PNG_READ_oFFs_SUPPORTED +# define PNG_oFFs_SUPPORTED +#endif +#ifndef PNG_NO_READ_pCAL +# define PNG_READ_pCAL_SUPPORTED +# define PNG_pCAL_SUPPORTED +#endif +#ifndef PNG_NO_READ_sCAL +# define PNG_READ_sCAL_SUPPORTED +# define PNG_sCAL_SUPPORTED +#endif +#ifndef PNG_NO_READ_pHYs +# define PNG_READ_pHYs_SUPPORTED +# define PNG_pHYs_SUPPORTED +#endif +#ifndef PNG_NO_READ_sBIT +# define PNG_READ_sBIT_SUPPORTED +# define PNG_sBIT_SUPPORTED +#endif +#ifndef PNG_NO_READ_sPLT +# define PNG_READ_sPLT_SUPPORTED +# define PNG_sPLT_SUPPORTED +#endif +#ifndef PNG_NO_READ_sRGB +# define PNG_READ_sRGB_SUPPORTED +# define PNG_sRGB_SUPPORTED +#endif +#ifndef PNG_NO_READ_tEXt +# define PNG_READ_tEXt_SUPPORTED +# define PNG_tEXt_SUPPORTED +#endif +#ifndef PNG_NO_READ_tIME +# define PNG_READ_tIME_SUPPORTED +# define PNG_tIME_SUPPORTED +#endif +#ifndef PNG_NO_READ_tRNS +# define PNG_READ_tRNS_SUPPORTED +# define PNG_tRNS_SUPPORTED +#endif +#ifndef PNG_NO_READ_zTXt +# define PNG_READ_zTXt_SUPPORTED +# define PNG_zTXt_SUPPORTED +#endif +#ifndef PNG_NO_READ_UNKNOWN_CHUNKS +# define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED +# ifndef PNG_UNKNOWN_CHUNKS_SUPPORTED +# define PNG_UNKNOWN_CHUNKS_SUPPORTED +# endif +# ifndef PNG_NO_HANDLE_AS_UNKNOWN +# define PNG_HANDLE_AS_UNKNOWN_SUPPORTED +# endif +#endif +#if !defined(PNG_NO_READ_USER_CHUNKS) && \ + defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) +# define PNG_READ_USER_CHUNKS_SUPPORTED +# define PNG_USER_CHUNKS_SUPPORTED +# ifdef PNG_NO_READ_UNKNOWN_CHUNKS +# undef PNG_NO_READ_UNKNOWN_CHUNKS +# endif +# ifdef PNG_NO_HANDLE_AS_UNKNOWN +# undef PNG_NO_HANDLE_AS_UNKNOWN +# endif +#endif +#ifndef PNG_NO_READ_OPT_PLTE +# define PNG_READ_OPT_PLTE_SUPPORTED /* only affects support of the */ +#endif /* optional PLTE chunk in RGB and RGBA images */ +#if defined(PNG_READ_iTXt_SUPPORTED) || defined(PNG_READ_tEXt_SUPPORTED) || \ + defined(PNG_READ_zTXt_SUPPORTED) +# define PNG_READ_TEXT_SUPPORTED +# define PNG_TEXT_SUPPORTED +#endif + +#endif /* PNG_READ_ANCILLARY_CHUNKS_SUPPORTED */ + +#ifdef PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED + +#ifdef PNG_NO_WRITE_TEXT +# define PNG_NO_WRITE_iTXt +# define PNG_NO_WRITE_tEXt +# define PNG_NO_WRITE_zTXt +#endif +#ifndef PNG_NO_WRITE_bKGD +# define PNG_WRITE_bKGD_SUPPORTED +# ifndef PNG_bKGD_SUPPORTED +# define PNG_bKGD_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_cHRM +# define PNG_WRITE_cHRM_SUPPORTED +# ifndef PNG_cHRM_SUPPORTED +# define PNG_cHRM_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_gAMA +# define PNG_WRITE_gAMA_SUPPORTED +# ifndef PNG_gAMA_SUPPORTED +# define PNG_gAMA_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_hIST +# define PNG_WRITE_hIST_SUPPORTED +# ifndef PNG_hIST_SUPPORTED +# define PNG_hIST_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_iCCP +# define PNG_WRITE_iCCP_SUPPORTED +# ifndef PNG_iCCP_SUPPORTED +# define PNG_iCCP_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_iTXt +# ifndef PNG_WRITE_iTXt_SUPPORTED +# define PNG_WRITE_iTXt_SUPPORTED +# endif +# ifndef PNG_iTXt_SUPPORTED +# define PNG_iTXt_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_oFFs +# define PNG_WRITE_oFFs_SUPPORTED +# ifndef PNG_oFFs_SUPPORTED +# define PNG_oFFs_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_pCAL +# define PNG_WRITE_pCAL_SUPPORTED +# ifndef PNG_pCAL_SUPPORTED +# define PNG_pCAL_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_sCAL +# define PNG_WRITE_sCAL_SUPPORTED +# ifndef PNG_sCAL_SUPPORTED +# define PNG_sCAL_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_pHYs +# define PNG_WRITE_pHYs_SUPPORTED +# ifndef PNG_pHYs_SUPPORTED +# define PNG_pHYs_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_sBIT +# define PNG_WRITE_sBIT_SUPPORTED +# ifndef PNG_sBIT_SUPPORTED +# define PNG_sBIT_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_sPLT +# define PNG_WRITE_sPLT_SUPPORTED +# ifndef PNG_sPLT_SUPPORTED +# define PNG_sPLT_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_sRGB +# define PNG_WRITE_sRGB_SUPPORTED +# ifndef PNG_sRGB_SUPPORTED +# define PNG_sRGB_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_tEXt +# define PNG_WRITE_tEXt_SUPPORTED +# ifndef PNG_tEXt_SUPPORTED +# define PNG_tEXt_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_tIME +# define PNG_WRITE_tIME_SUPPORTED +# ifndef PNG_tIME_SUPPORTED +# define PNG_tIME_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_tRNS +# define PNG_WRITE_tRNS_SUPPORTED +# ifndef PNG_tRNS_SUPPORTED +# define PNG_tRNS_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_zTXt +# define PNG_WRITE_zTXt_SUPPORTED +# ifndef PNG_zTXt_SUPPORTED +# define PNG_zTXt_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_UNKNOWN_CHUNKS +# define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED +# ifndef PNG_UNKNOWN_CHUNKS_SUPPORTED +# define PNG_UNKNOWN_CHUNKS_SUPPORTED +# endif +# ifndef PNG_NO_HANDLE_AS_UNKNOWN +# ifndef PNG_HANDLE_AS_UNKNOWN_SUPPORTED +# define PNG_HANDLE_AS_UNKNOWN_SUPPORTED +# endif +# endif +#endif +#if defined(PNG_WRITE_iTXt_SUPPORTED) || defined(PNG_WRITE_tEXt_SUPPORTED) || \ + defined(PNG_WRITE_zTXt_SUPPORTED) +# define PNG_WRITE_TEXT_SUPPORTED +# ifndef PNG_TEXT_SUPPORTED +# define PNG_TEXT_SUPPORTED +# endif +#endif + +#endif /* PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED */ + +/* Turn this off to disable png_read_png() and + * png_write_png() and leave the row_pointers member + * out of the info structure. + */ +#ifndef PNG_NO_INFO_IMAGE +# define PNG_INFO_IMAGE_SUPPORTED +#endif + +/* need the time information for reading tIME chunks */ +#if defined(PNG_tIME_SUPPORTED) +# if !defined(_WIN32_WCE) + /* "time.h" functions are not supported on WindowsCE */ +# include +# endif +#endif + +/* Some typedefs to get us started. These should be safe on most of the + * common platforms. The typedefs should be at least as large as the + * numbers suggest (a png_uint_32 must be at least 32 bits long), but they + * don't have to be exactly that size. Some compilers dislike passing + * unsigned shorts as function parameters, so you may be better off using + * unsigned int for png_uint_16. Likewise, for 64-bit systems, you may + * want to have unsigned int for png_uint_32 instead of unsigned long. + */ + +typedef unsigned long png_uint_32; +typedef long png_int_32; +typedef unsigned short png_uint_16; +typedef short png_int_16; +typedef unsigned char png_byte; + +/* This is usually size_t. It is typedef'ed just in case you need it to + change (I'm not sure if you will or not, so I thought I'd be safe) */ +#ifdef PNG_SIZE_T + typedef PNG_SIZE_T png_size_t; +# define png_sizeof(x) png_convert_size(sizeof(x)) +#else + typedef size_t png_size_t; +# define png_sizeof(x) sizeof(x) +#endif + +/* The following is needed for medium model support. It cannot be in the + * PNG_INTERNAL section. Needs modification for other compilers besides + * MSC. Model independent support declares all arrays and pointers to be + * large using the far keyword. The zlib version used must also support + * model independent data. As of version zlib 1.0.4, the necessary changes + * have been made in zlib. The USE_FAR_KEYWORD define triggers other + * changes that are needed. (Tim Wegner) + */ + +/* Separate compiler dependencies (problem here is that zlib.h always + defines FAR. (SJT) */ +#ifdef __BORLANDC__ +# if defined(__LARGE__) || defined(__HUGE__) || defined(__COMPACT__) +# define LDATA 1 +# else +# define LDATA 0 +# endif + /* GRR: why is Cygwin in here? Cygwin is not Borland C... */ +# if !defined(__WIN32__) && !defined(__FLAT__) && !defined(__CYGWIN__) +# define PNG_MAX_MALLOC_64K +# if (LDATA != 1) +# ifndef FAR +# define FAR __far +# endif +# define USE_FAR_KEYWORD +# endif /* LDATA != 1 */ + /* Possibly useful for moving data out of default segment. + * Uncomment it if you want. Could also define FARDATA as + * const if your compiler supports it. (SJT) +# define FARDATA FAR + */ +# endif /* __WIN32__, __FLAT__, __CYGWIN__ */ +#endif /* __BORLANDC__ */ + + +/* Suggest testing for specific compiler first before testing for + * FAR. The Watcom compiler defines both __MEDIUM__ and M_I86MM, + * making reliance oncertain keywords suspect. (SJT) + */ + +/* MSC Medium model */ +#if defined(FAR) +# if defined(M_I86MM) +# define USE_FAR_KEYWORD +# define FARDATA FAR +# include +# endif +#endif + +/* SJT: default case */ +#ifndef FAR +# define FAR +#endif + +/* At this point FAR is always defined */ +#ifndef FARDATA +# define FARDATA +#endif + +/* Typedef for floating-point numbers that are converted + to fixed-point with a multiple of 100,000, e.g., int_gamma */ +typedef png_int_32 png_fixed_point; + +/* Add typedefs for pointers */ +typedef void FAR * png_voidp; +typedef png_byte FAR * png_bytep; +typedef png_uint_32 FAR * png_uint_32p; +typedef png_int_32 FAR * png_int_32p; +typedef png_uint_16 FAR * png_uint_16p; +typedef png_int_16 FAR * png_int_16p; +typedef PNG_CONST char FAR * png_const_charp; +typedef char FAR * png_charp; +typedef png_fixed_point FAR * png_fixed_point_p; + +#ifndef PNG_NO_STDIO +#if defined(_WIN32_WCE) +typedef HANDLE png_FILE_p; +#else +typedef FILE * png_FILE_p; +#endif +#endif + +#ifdef PNG_FLOATING_POINT_SUPPORTED +typedef double FAR * png_doublep; +#endif + +/* Pointers to pointers; i.e. arrays */ +typedef png_byte FAR * FAR * png_bytepp; +typedef png_uint_32 FAR * FAR * png_uint_32pp; +typedef png_int_32 FAR * FAR * png_int_32pp; +typedef png_uint_16 FAR * FAR * png_uint_16pp; +typedef png_int_16 FAR * FAR * png_int_16pp; +typedef PNG_CONST char FAR * FAR * png_const_charpp; +typedef char FAR * FAR * png_charpp; +typedef png_fixed_point FAR * FAR * png_fixed_point_pp; +#ifdef PNG_FLOATING_POINT_SUPPORTED +typedef double FAR * FAR * png_doublepp; +#endif + +/* Pointers to pointers to pointers; i.e., pointer to array */ +typedef char FAR * FAR * FAR * png_charppp; + +#if defined(PNG_1_0_X) || defined(PNG_1_2_X) +/* SPC - Is this stuff deprecated? */ +/* It'll be removed as of libpng-1.3.0 - GR-P */ +/* libpng typedefs for types in zlib. If zlib changes + * or another compression library is used, then change these. + * Eliminates need to change all the source files. + */ +typedef charf * png_zcharp; +typedef charf * FAR * png_zcharpp; +typedef z_stream FAR * png_zstreamp; +#endif /* (PNG_1_0_X) || defined(PNG_1_2_X) */ + +/* + * Define PNG_BUILD_DLL if the module being built is a Windows + * LIBPNG DLL. + * + * Define PNG_USE_DLL if you want to *link* to the Windows LIBPNG DLL. + * It is equivalent to Microsoft predefined macro _DLL that is + * automatically defined when you compile using the share + * version of the CRT (C Run-Time library) + * + * The cygwin mods make this behavior a little different: + * Define PNG_BUILD_DLL if you are building a dll for use with cygwin + * Define PNG_STATIC if you are building a static library for use with cygwin, + * -or- if you are building an application that you want to link to the + * static library. + * PNG_USE_DLL is defined by default (no user action needed) unless one of + * the other flags is defined. + */ + +#if !defined(PNG_DLL) && (defined(PNG_BUILD_DLL) || defined(PNG_USE_DLL)) +# define PNG_DLL +#endif +/* If CYGWIN, then disallow GLOBAL ARRAYS unless building a static lib. + * When building a static lib, default to no GLOBAL ARRAYS, but allow + * command-line override + */ +#if defined(__CYGWIN__) +# if !defined(PNG_STATIC) +# if defined(PNG_USE_GLOBAL_ARRAYS) +# undef PNG_USE_GLOBAL_ARRAYS +# endif +# if !defined(PNG_USE_LOCAL_ARRAYS) +# define PNG_USE_LOCAL_ARRAYS +# endif +# else +# if defined(PNG_USE_LOCAL_ARRAYS) || defined(PNG_NO_GLOBAL_ARRAYS) +# if defined(PNG_USE_GLOBAL_ARRAYS) +# undef PNG_USE_GLOBAL_ARRAYS +# endif +# endif +# endif +# if !defined(PNG_USE_LOCAL_ARRAYS) && !defined(PNG_USE_GLOBAL_ARRAYS) +# define PNG_USE_LOCAL_ARRAYS +# endif +#endif + +/* Do not use global arrays (helps with building DLL's) + * They are no longer used in libpng itself, since version 1.0.5c, + * but might be required for some pre-1.0.5c applications. + */ +#if !defined(PNG_USE_LOCAL_ARRAYS) && !defined(PNG_USE_GLOBAL_ARRAYS) +# if defined(PNG_NO_GLOBAL_ARRAYS) || \ + (defined(__GNUC__) && defined(PNG_DLL)) || defined(_MSC_VER) +# define PNG_USE_LOCAL_ARRAYS +# else +# define PNG_USE_GLOBAL_ARRAYS +# endif +#endif + +#if defined(__CYGWIN__) +# undef PNGAPI +# define PNGAPI __cdecl +# undef PNG_IMPEXP +# define PNG_IMPEXP +#endif + +/* If you define PNGAPI, e.g., with compiler option "-DPNGAPI=__stdcall", + * you may get warnings regarding the linkage of png_zalloc and png_zfree. + * Don't ignore those warnings; you must also reset the default calling + * convention in your compiler to match your PNGAPI, and you must build + * zlib and your applications the same way you build libpng. + */ + +#if defined(__MINGW32__) && !defined(PNG_MODULEDEF) +# ifndef PNG_NO_MODULEDEF +# define PNG_NO_MODULEDEF +# endif +#endif + +#if !defined(PNG_IMPEXP) && defined(PNG_BUILD_DLL) && !defined(PNG_NO_MODULEDEF) +# define PNG_IMPEXP +#endif + +#if defined(PNG_DLL) || defined(_DLL) || defined(__DLL__ ) || \ + (( defined(_Windows) || defined(_WINDOWS) || \ + defined(WIN32) || defined(_WIN32) || defined(__WIN32__) )) + +# ifndef PNGAPI +# if defined(__GNUC__) || (defined (_MSC_VER) && (_MSC_VER >= 800)) +# define PNGAPI __cdecl +# else +# define PNGAPI _cdecl +# endif +# endif + +# if !defined(PNG_IMPEXP) && (!defined(PNG_DLL) || \ + 0 /* WINCOMPILER_WITH_NO_SUPPORT_FOR_DECLIMPEXP */) +# define PNG_IMPEXP +# endif + +# if !defined(PNG_IMPEXP) + +# define PNG_EXPORT_TYPE1(type,symbol) PNG_IMPEXP type PNGAPI symbol +# define PNG_EXPORT_TYPE2(type,symbol) type PNG_IMPEXP PNGAPI symbol + + /* Borland/Microsoft */ +# if defined(_MSC_VER) || defined(__BORLANDC__) +# if (_MSC_VER >= 800) || (__BORLANDC__ >= 0x500) +# define PNG_EXPORT PNG_EXPORT_TYPE1 +# else +# define PNG_EXPORT PNG_EXPORT_TYPE2 +# if defined(PNG_BUILD_DLL) +# define PNG_IMPEXP __export +# else +# define PNG_IMPEXP /*__import */ /* doesn't exist AFAIK in + VC++ */ +# endif /* Exists in Borland C++ for + C++ classes (== huge) */ +# endif +# endif + +# if !defined(PNG_IMPEXP) +# if defined(PNG_BUILD_DLL) +# define PNG_IMPEXP __declspec(dllexport) +# else +# define PNG_IMPEXP __declspec(dllimport) +# endif +# endif +# endif /* PNG_IMPEXP */ +#else /* !(DLL || non-cygwin WINDOWS) */ +# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) +# ifndef PNGAPI +# define PNGAPI _System +# endif +# else +# if 0 /* ... other platforms, with other meanings */ +# endif +# endif +#endif + +#ifndef PNGAPI +# define PNGAPI +#endif +#ifndef PNG_IMPEXP +# define PNG_IMPEXP +#endif + +#ifdef PNG_BUILDSYMS +# ifndef PNG_EXPORT +# define PNG_EXPORT(type,symbol) PNG_FUNCTION_EXPORT symbol END +# endif +# ifdef PNG_USE_GLOBAL_ARRAYS +# ifndef PNG_EXPORT_VAR +# define PNG_EXPORT_VAR(type) PNG_DATA_EXPORT +# endif +# endif +#endif + +#ifndef PNG_EXPORT +# define PNG_EXPORT(type,symbol) PNG_IMPEXP type PNGAPI symbol +#endif + +#ifdef PNG_USE_GLOBAL_ARRAYS +# ifndef PNG_EXPORT_VAR +# define PNG_EXPORT_VAR(type) extern PNG_IMPEXP type +# endif +#endif + +/* User may want to use these so they are not in PNG_INTERNAL. Any library + * functions that are passed far data must be model independent. + */ + +#ifndef PNG_ABORT +# define PNG_ABORT() abort() +#endif + +#ifdef PNG_SETJMP_SUPPORTED +# define png_jmpbuf(png_ptr) ((png_ptr)->jmpbuf) +#else +# define png_jmpbuf(png_ptr) \ + (LIBPNG_WAS_COMPILED_WITH__PNG_SETJMP_NOT_SUPPORTED) +#endif + +#if defined(USE_FAR_KEYWORD) /* memory model independent fns */ +/* use this to make far-to-near assignments */ +# define CHECK 1 +# define NOCHECK 0 +# define CVT_PTR(ptr) (png_far_to_near(png_ptr,ptr,CHECK)) +# define CVT_PTR_NOCHECK(ptr) (png_far_to_near(png_ptr,ptr,NOCHECK)) +# define png_snprintf _fsnprintf /* Added to v 1.2.19 */ +# define png_strlen _fstrlen +# define png_memcmp _fmemcmp /* SJT: added */ +# define png_memcpy _fmemcpy +# define png_memset _fmemset +#else /* use the usual functions */ +# define CVT_PTR(ptr) (ptr) +# define CVT_PTR_NOCHECK(ptr) (ptr) +# ifndef PNG_NO_SNPRINTF +# ifdef _MSC_VER +# define png_snprintf _snprintf /* Added to v 1.2.19 */ +# define png_snprintf2 _snprintf +# define png_snprintf6 _snprintf +# else +# define png_snprintf snprintf /* Added to v 1.2.19 */ +# define png_snprintf2 snprintf +# define png_snprintf6 snprintf +# endif +# else + /* You don't have or don't want to use snprintf(). Caution: Using + * sprintf instead of snprintf exposes your application to accidental + * or malevolent buffer overflows. If you don't have snprintf() + * as a general rule you should provide one (you can get one from + * Portable OpenSSH). */ +# define png_snprintf(s1,n,fmt,x1) sprintf(s1,fmt,x1) +# define png_snprintf2(s1,n,fmt,x1,x2) sprintf(s1,fmt,x1,x2) +# define png_snprintf6(s1,n,fmt,x1,x2,x3,x4,x5,x6) \ + sprintf(s1,fmt,x1,x2,x3,x4,x5,x6) +# endif +# define png_strlen strlen +# define png_memcmp memcmp /* SJT: added */ +# define png_memcpy memcpy +# define png_memset memset +#endif +/* End of memory model independent support */ + +/* Just a little check that someone hasn't tried to define something + * contradictory. + */ +#if (PNG_ZBUF_SIZE > 65536L) && defined(PNG_MAX_MALLOC_64K) +# undef PNG_ZBUF_SIZE +# define PNG_ZBUF_SIZE 65536L +#endif + +/* Added at libpng-1.2.8 */ +#endif /* PNG_VERSION_INFO_ONLY */ + +#endif /* PNGCONF_H */ diff --git a/Libraries/libpng/pngerror.cpp b/Libraries/libpng/pngerror.cpp new file mode 100644 index 0000000..71a2e53 --- /dev/null +++ b/Libraries/libpng/pngerror.cpp @@ -0,0 +1,361 @@ + +/* pngerror.c - stub functions for i/o and memory allocation + * + * Last changed in libpng 1.2.37 [June 4, 2009] + * For conditions of distribution and use, see copyright notice in png.h + * Copyright (c) 1998-2009 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This file provides a location for all error handling. Users who + * need special error handling are expected to write replacement functions + * and use png_set_error_fn() to use those functions. See the instructions + * at each function. + */ + +#define PNG_INTERNAL +#include "png.h" +#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) + +static void /* PRIVATE */ +png_default_error PNGARG((png_structp png_ptr, + png_const_charp error_message)); +#ifndef PNG_NO_WARNINGS +static void /* PRIVATE */ +png_default_warning PNGARG((png_structp png_ptr, + png_const_charp warning_message)); +#endif /* PNG_NO_WARNINGS */ + +/* This function is called whenever there is a fatal error. This function + * should not be changed. If there is a need to handle errors differently, + * you should supply a replacement error function and use png_set_error_fn() + * to replace the error function at run-time. + */ +#ifndef PNG_NO_ERROR_TEXT +void PNGAPI +png_error(png_structp png_ptr, png_const_charp error_message) +{ +#ifdef PNG_ERROR_NUMBERS_SUPPORTED + char msg[16]; + if (png_ptr != NULL) + { + if (png_ptr->flags& + (PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT)) + { + if (*error_message == '#') + { + /* Strip "#nnnn " from beginning of error message. */ + int offset; + for (offset = 1; offset<15; offset++) + if (error_message[offset] == ' ') + break; + if (png_ptr->flags&PNG_FLAG_STRIP_ERROR_TEXT) + { + int i; + for (i = 0; i < offset - 1; i++) + msg[i] = error_message[i + 1]; + msg[i - 1] = '\0'; + error_message = msg; + } + else + error_message += offset; + } + else + { + if (png_ptr->flags&PNG_FLAG_STRIP_ERROR_TEXT) + { + msg[0] = '0'; + msg[1] = '\0'; + error_message = msg; + } + } + } + } +#endif + if (png_ptr != NULL && png_ptr->error_fn != NULL) + (*(png_ptr->error_fn))(png_ptr, error_message); + + /* If the custom handler doesn't exist, or if it returns, + use the default handler, which will not return. */ + png_default_error(png_ptr, error_message); +} +#else +void PNGAPI +png_err(png_structp png_ptr) +{ + if (png_ptr != NULL && png_ptr->error_fn != NULL) + (*(png_ptr->error_fn))(png_ptr, '\0'); + + /* If the custom handler doesn't exist, or if it returns, + use the default handler, which will not return. */ + png_default_error(png_ptr, '\0'); +} +#endif /* PNG_NO_ERROR_TEXT */ + +#ifndef PNG_NO_WARNINGS +/* This function is called whenever there is a non-fatal error. This function + * should not be changed. If there is a need to handle warnings differently, + * you should supply a replacement warning function and use + * png_set_error_fn() to replace the warning function at run-time. + */ +void PNGAPI +png_warning(png_structp png_ptr, png_const_charp warning_message) +{ + int offset = 0; + if (png_ptr != NULL) + { +#ifdef PNG_ERROR_NUMBERS_SUPPORTED + if (png_ptr->flags& + (PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT)) +#endif + { + if (*warning_message == '#') + { + for (offset = 1; offset < 15; offset++) + if (warning_message[offset] == ' ') + break; + } + } + } + if (png_ptr != NULL && png_ptr->warning_fn != NULL) + (*(png_ptr->warning_fn))(png_ptr, warning_message + offset); + else + png_default_warning(png_ptr, warning_message + offset); +} +#endif /* PNG_NO_WARNINGS */ + + +/* These utilities are used internally to build an error message that relates + * to the current chunk. The chunk name comes from png_ptr->chunk_name, + * this is used to prefix the message. The message is limited in length + * to 63 bytes, the name characters are output as hex digits wrapped in [] + * if the character is invalid. + */ +#define isnonalpha(c) ((c) < 65 || (c) > 122 || ((c) > 90 && (c) < 97)) +static PNG_CONST char png_digit[16] = { + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'A', 'B', 'C', 'D', 'E', 'F' +}; + +#define PNG_MAX_ERROR_TEXT 64 + +#if !defined(PNG_NO_WARNINGS) || !defined(PNG_NO_ERROR_TEXT) +static void /* PRIVATE */ +png_format_buffer(png_structp png_ptr, png_charp buffer, png_const_charp + error_message) +{ + int iout = 0, iin = 0; + + while (iin < 4) + { + int c = png_ptr->chunk_name[iin++]; + if (isnonalpha(c)) + { + buffer[iout++] = '['; + buffer[iout++] = png_digit[(c & 0xf0) >> 4]; + buffer[iout++] = png_digit[c & 0x0f]; + buffer[iout++] = ']'; + } + else + { + buffer[iout++] = (png_byte)c; + } + } + + if (error_message == NULL) + buffer[iout] = '\0'; + else + { + buffer[iout++] = ':'; + buffer[iout++] = ' '; + png_memcpy(buffer + iout, error_message, PNG_MAX_ERROR_TEXT); + buffer[iout + PNG_MAX_ERROR_TEXT - 1] = '\0'; + } +} + +#ifdef PNG_READ_SUPPORTED +void PNGAPI +png_chunk_error(png_structp png_ptr, png_const_charp error_message) +{ + char msg[18+PNG_MAX_ERROR_TEXT]; + if (png_ptr == NULL) + png_error(png_ptr, error_message); + else + { + png_format_buffer(png_ptr, msg, error_message); + png_error(png_ptr, msg); + } +} +#endif /* PNG_READ_SUPPORTED */ +#endif /* !defined(PNG_NO_WARNINGS) || !defined(PNG_NO_ERROR_TEXT) */ + +#ifndef PNG_NO_WARNINGS +void PNGAPI +png_chunk_warning(png_structp png_ptr, png_const_charp warning_message) +{ + char msg[18+PNG_MAX_ERROR_TEXT]; + if (png_ptr == NULL) + png_warning(png_ptr, warning_message); + else + { + png_format_buffer(png_ptr, msg, warning_message); + png_warning(png_ptr, msg); + } +} +#endif /* PNG_NO_WARNINGS */ + + +/* This is the default error handling function. Note that replacements for + * this function MUST NOT RETURN, or the program will likely crash. This + * function is used by default, or if the program supplies NULL for the + * error function pointer in png_set_error_fn(). + */ +static void /* PRIVATE */ +png_default_error(png_structp png_ptr, png_const_charp error_message) +{ +#ifndef PNG_NO_CONSOLE_IO +#ifdef PNG_ERROR_NUMBERS_SUPPORTED + if (*error_message == '#') + { + /* Strip "#nnnn " from beginning of error message. */ + int offset; + char error_number[16]; + for (offset = 0; offset<15; offset++) + { + error_number[offset] = error_message[offset + 1]; + if (error_message[offset] == ' ') + break; + } + if ((offset > 1) && (offset < 15)) + { + error_number[offset - 1] = '\0'; + fprintf(stderr, "libpng error no. %s: %s", + error_number, error_message + offset + 1); + fprintf(stderr, PNG_STRING_NEWLINE); + } + else + { + fprintf(stderr, "libpng error: %s, offset=%d", + error_message, offset); + fprintf(stderr, PNG_STRING_NEWLINE); + } + } + else +#endif + { + fprintf(stderr, "libpng error: %s", error_message); + fprintf(stderr, PNG_STRING_NEWLINE); + } +#endif + +#ifdef PNG_SETJMP_SUPPORTED + if (png_ptr) + { +# ifdef USE_FAR_KEYWORD + { + jmp_buf jmpbuf; + png_memcpy(jmpbuf, png_ptr->jmpbuf, png_sizeof(jmp_buf)); + longjmp(jmpbuf, 1); + } +# else + longjmp(png_ptr->jmpbuf, 1); +# endif + } +#else + PNG_ABORT(); +#endif +#ifdef PNG_NO_CONSOLE_IO + error_message = error_message; /* Make compiler happy */ +#endif +} + +#ifndef PNG_NO_WARNINGS +/* This function is called when there is a warning, but the library thinks + * it can continue anyway. Replacement functions don't have to do anything + * here if you don't want them to. In the default configuration, png_ptr is + * not used, but it is passed in case it may be useful. + */ +static void /* PRIVATE */ +png_default_warning(png_structp png_ptr, png_const_charp warning_message) +{ +#ifndef PNG_NO_CONSOLE_IO +# ifdef PNG_ERROR_NUMBERS_SUPPORTED + if (*warning_message == '#') + { + int offset; + char warning_number[16]; + for (offset = 0; offset < 15; offset++) + { + warning_number[offset] = warning_message[offset + 1]; + if (warning_message[offset] == ' ') + break; + } + if ((offset > 1) && (offset < 15)) + { + warning_number[offset + 1] = '\0'; + fprintf(stderr, "libpng warning no. %s: %s", + warning_number, warning_message + offset); + fprintf(stderr, PNG_STRING_NEWLINE); + } + else + { + fprintf(stderr, "libpng warning: %s", + warning_message); + fprintf(stderr, PNG_STRING_NEWLINE); + } + } + else +# endif + { + fprintf(stderr, "libpng warning: %s", warning_message); + fprintf(stderr, PNG_STRING_NEWLINE); + } +#else + warning_message = warning_message; /* Make compiler happy */ +#endif + png_ptr = png_ptr; /* Make compiler happy */ +} +#endif /* PNG_NO_WARNINGS */ + +/* This function is called when the application wants to use another method + * of handling errors and warnings. Note that the error function MUST NOT + * return to the calling routine or serious problems will occur. The return + * method used in the default routine calls longjmp(png_ptr->jmpbuf, 1) + */ +void PNGAPI +png_set_error_fn(png_structp png_ptr, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warning_fn) +{ + if (png_ptr == NULL) + return; + png_ptr->error_ptr = error_ptr; + png_ptr->error_fn = error_fn; + png_ptr->warning_fn = warning_fn; +} + + +/* This function returns a pointer to the error_ptr associated with the user + * functions. The application should free any memory associated with this + * pointer before png_write_destroy and png_read_destroy are called. + */ +png_voidp PNGAPI +png_get_error_ptr(png_structp png_ptr) +{ + if (png_ptr == NULL) + return NULL; + return ((png_voidp)png_ptr->error_ptr); +} + + +#ifdef PNG_ERROR_NUMBERS_SUPPORTED +void PNGAPI +png_set_strip_error_numbers(png_structp png_ptr, png_uint_32 strip_mode) +{ + if (png_ptr != NULL) + { + png_ptr->flags &= + ((~(PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT))&strip_mode); + } +} +#endif +#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */ diff --git a/Libraries/libpng/pnggccrd.cpp b/Libraries/libpng/pnggccrd.cpp new file mode 100644 index 0000000..e61523e --- /dev/null +++ b/Libraries/libpng/pnggccrd.cpp @@ -0,0 +1,103 @@ +/* pnggccrd.c was removed from libpng-1.2.20. */ + +/* This code snippet is for use by configure's compilation test. */ + +#if (!defined _MSC_VER) && \ + defined(PNG_ASSEMBLER_CODE_SUPPORTED) && \ + defined(PNG_MMX_CODE_SUPPORTED) + +int PNGAPI png_dummy_mmx_support(void); + +static int _mmx_supported = 2; // 0: no MMX; 1: MMX supported; 2: not tested + +int PNGAPI +png_dummy_mmx_support(void) __attribute__((noinline)); + +int PNGAPI +png_dummy_mmx_support(void) +{ + int result; +#if defined(PNG_MMX_CODE_SUPPORTED) // superfluous, but what the heck + __asm__ __volatile__ ( +#if defined(__x86_64__) + "pushq %%rbx \n\t" // rbx gets clobbered by CPUID instruction + "pushq %%rcx \n\t" // so does rcx... + "pushq %%rdx \n\t" // ...and rdx (but rcx & rdx safe on Linux) + "pushfq \n\t" // save Eflag to stack + "popq %%rax \n\t" // get Eflag from stack into rax + "movq %%rax, %%rcx \n\t" // make another copy of Eflag in rcx + "xorl $0x200000, %%eax \n\t" // toggle ID bit in Eflag (i.e., bit 21) + "pushq %%rax \n\t" // save modified Eflag back to stack + "popfq \n\t" // restore modified value to Eflag reg + "pushfq \n\t" // save Eflag to stack + "popq %%rax \n\t" // get Eflag from stack + "pushq %%rcx \n\t" // save original Eflag to stack + "popfq \n\t" // restore original Eflag +#else + "pushl %%ebx \n\t" // ebx gets clobbered by CPUID instruction + "pushl %%ecx \n\t" // so does ecx... + "pushl %%edx \n\t" // ...and edx (but ecx & edx safe on Linux) + "pushfl \n\t" // save Eflag to stack + "popl %%eax \n\t" // get Eflag from stack into eax + "movl %%eax, %%ecx \n\t" // make another copy of Eflag in ecx + "xorl $0x200000, %%eax \n\t" // toggle ID bit in Eflag (i.e., bit 21) + "pushl %%eax \n\t" // save modified Eflag back to stack + "popfl \n\t" // restore modified value to Eflag reg + "pushfl \n\t" // save Eflag to stack + "popl %%eax \n\t" // get Eflag from stack + "pushl %%ecx \n\t" // save original Eflag to stack + "popfl \n\t" // restore original Eflag +#endif + "xorl %%ecx, %%eax \n\t" // compare new Eflag with original Eflag + "jz 0f \n\t" // if same, CPUID instr. is not supported + + "xorl %%eax, %%eax \n\t" // set eax to zero +// ".byte 0x0f, 0xa2 \n\t" // CPUID instruction (two-byte opcode) + "cpuid \n\t" // get the CPU identification info + "cmpl $1, %%eax \n\t" // make sure eax return non-zero value + "jl 0f \n\t" // if eax is zero, MMX is not supported + + "xorl %%eax, %%eax \n\t" // set eax to zero and... + "incl %%eax \n\t" // ...increment eax to 1. This pair is + // faster than the instruction "mov eax, 1" + "cpuid \n\t" // get the CPU identification info again + "andl $0x800000, %%edx \n\t" // mask out all bits but MMX bit (23) + "cmpl $0, %%edx \n\t" // 0 = MMX not supported + "jz 0f \n\t" // non-zero = yes, MMX IS supported + + "movl $1, %%eax \n\t" // set return value to 1 + "jmp 1f \n\t" // DONE: have MMX support + + "0: \n\t" // .NOT_SUPPORTED: target label for jump instructions + "movl $0, %%eax \n\t" // set return value to 0 + "1: \n\t" // .RETURN: target label for jump instructions +#if defined(__x86_64__) + "popq %%rdx \n\t" // restore rdx + "popq %%rcx \n\t" // restore rcx + "popq %%rbx \n\t" // restore rbx +#else + "popl %%edx \n\t" // restore edx + "popl %%ecx \n\t" // restore ecx + "popl %%ebx \n\t" // restore ebx +#endif + +// "ret \n\t" // DONE: no MMX support + // (fall through to standard C "ret") + + : "=a" (result) // output list + + : // any variables used on input (none) + + // no clobber list +// , "%ebx", "%ecx", "%edx" // GRR: we handle these manually +// , "memory" // if write to a variable gcc thought was in a reg +// , "cc" // "condition codes" (flag bits) + ); + _mmx_supported = result; +#else + _mmx_supported = 0; +#endif /* PNG_MMX_CODE_SUPPORTED */ + + return _mmx_supported; +} +#endif diff --git a/Libraries/libpng/pngget.cpp b/Libraries/libpng/pngget.cpp new file mode 100644 index 0000000..0022d95 --- /dev/null +++ b/Libraries/libpng/pngget.cpp @@ -0,0 +1,939 @@ + +/* pngget.c - retrieval of values from info struct + * + * Last changed in libpng 1.2.37 [June 4, 2009] + * For conditions of distribution and use, see copyright notice in png.h + * Copyright (c) 1998-2009 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + */ + +#define PNG_INTERNAL +#include "png.h" +#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) + +png_uint_32 PNGAPI +png_get_valid(png_structp png_ptr, png_infop info_ptr, png_uint_32 flag) +{ + if (png_ptr != NULL && info_ptr != NULL) + return(info_ptr->valid & flag); + + else + return(0); +} + +png_uint_32 PNGAPI +png_get_rowbytes(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr != NULL && info_ptr != NULL) + return(info_ptr->rowbytes); + + else + return(0); +} + +#if defined(PNG_INFO_IMAGE_SUPPORTED) +png_bytepp PNGAPI +png_get_rows(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr != NULL && info_ptr != NULL) + return(info_ptr->row_pointers); + + else + return(0); +} +#endif + +#ifdef PNG_EASY_ACCESS_SUPPORTED +/* Easy access to info, added in libpng-0.99 */ +png_uint_32 PNGAPI +png_get_image_width(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr != NULL && info_ptr != NULL) + return info_ptr->width; + + return (0); +} + +png_uint_32 PNGAPI +png_get_image_height(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr != NULL && info_ptr != NULL) + return info_ptr->height; + + return (0); +} + +png_byte PNGAPI +png_get_bit_depth(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr != NULL && info_ptr != NULL) + return info_ptr->bit_depth; + + return (0); +} + +png_byte PNGAPI +png_get_color_type(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr != NULL && info_ptr != NULL) + return info_ptr->color_type; + + return (0); +} + +png_byte PNGAPI +png_get_filter_type(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr != NULL && info_ptr != NULL) + return info_ptr->filter_type; + + return (0); +} + +png_byte PNGAPI +png_get_interlace_type(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr != NULL && info_ptr != NULL) + return info_ptr->interlace_type; + + return (0); +} + +png_byte PNGAPI +png_get_compression_type(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr != NULL && info_ptr != NULL) + return info_ptr->compression_type; + + return (0); +} + +png_uint_32 PNGAPI +png_get_x_pixels_per_meter(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr != NULL && info_ptr != NULL) +#if defined(PNG_pHYs_SUPPORTED) + if (info_ptr->valid & PNG_INFO_pHYs) + { + png_debug1(1, "in %s retrieval function", "png_get_x_pixels_per_meter"); + + if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER) + return (0); + + else + return (info_ptr->x_pixels_per_unit); + } +#else + return (0); +#endif + return (0); +} + +png_uint_32 PNGAPI +png_get_y_pixels_per_meter(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr != NULL && info_ptr != NULL) +#if defined(PNG_pHYs_SUPPORTED) + if (info_ptr->valid & PNG_INFO_pHYs) + { + png_debug1(1, "in %s retrieval function", "png_get_y_pixels_per_meter"); + + if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER) + return (0); + + else + return (info_ptr->y_pixels_per_unit); + } +#else + return (0); +#endif + return (0); +} + +png_uint_32 PNGAPI +png_get_pixels_per_meter(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr != NULL && info_ptr != NULL) +#if defined(PNG_pHYs_SUPPORTED) + if (info_ptr->valid & PNG_INFO_pHYs) + { + png_debug1(1, "in %s retrieval function", "png_get_pixels_per_meter"); + + if (info_ptr->phys_unit_type != PNG_RESOLUTION_METER || + info_ptr->x_pixels_per_unit != info_ptr->y_pixels_per_unit) + return (0); + + else + return (info_ptr->x_pixels_per_unit); + } +#else + return (0); +#endif + return (0); +} + +#ifdef PNG_FLOATING_POINT_SUPPORTED +float PNGAPI +png_get_pixel_aspect_ratio(png_structp png_ptr, png_infop info_ptr) + { + if (png_ptr != NULL && info_ptr != NULL) +#if defined(PNG_pHYs_SUPPORTED) + + if (info_ptr->valid & PNG_INFO_pHYs) + { + png_debug1(1, "in %s retrieval function", "png_get_aspect_ratio"); + if (info_ptr->x_pixels_per_unit == 0) + return ((float)0.0); + else + return ((float)((float)info_ptr->y_pixels_per_unit + /(float)info_ptr->x_pixels_per_unit)); + } +#else + return (0.0); +#endif + return ((float)0.0); +} +#endif + +png_int_32 PNGAPI +png_get_x_offset_microns(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr != NULL && info_ptr != NULL) +#if defined(PNG_oFFs_SUPPORTED) + + if (info_ptr->valid & PNG_INFO_oFFs) + { + png_debug1(1, "in %s retrieval function", "png_get_x_offset_microns"); + + if (info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER) + return (0); + + else + return (info_ptr->x_offset); + } +#else + return (0); +#endif + return (0); +} + +png_int_32 PNGAPI +png_get_y_offset_microns(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr != NULL && info_ptr != NULL) + +#if defined(PNG_oFFs_SUPPORTED) + if (info_ptr->valid & PNG_INFO_oFFs) + { + png_debug1(1, "in %s retrieval function", "png_get_y_offset_microns"); + + if (info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER) + return (0); + + else + return (info_ptr->y_offset); + } +#else + return (0); +#endif + return (0); +} + +png_int_32 PNGAPI +png_get_x_offset_pixels(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr != NULL && info_ptr != NULL) + +#if defined(PNG_oFFs_SUPPORTED) + if (info_ptr->valid & PNG_INFO_oFFs) + { + png_debug1(1, "in %s retrieval function", "png_get_x_offset_microns"); + + if (info_ptr->offset_unit_type != PNG_OFFSET_PIXEL) + return (0); + + else + return (info_ptr->x_offset); + } +#else + return (0); +#endif + return (0); +} + +png_int_32 PNGAPI +png_get_y_offset_pixels(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr != NULL && info_ptr != NULL) + +#if defined(PNG_oFFs_SUPPORTED) + if (info_ptr->valid & PNG_INFO_oFFs) + { + png_debug1(1, "in %s retrieval function", "png_get_y_offset_microns"); + + if (info_ptr->offset_unit_type != PNG_OFFSET_PIXEL) + return (0); + + else + return (info_ptr->y_offset); + } +#else + return (0); +#endif + return (0); +} + +#if defined(PNG_INCH_CONVERSIONS) && defined(PNG_FLOATING_POINT_SUPPORTED) +png_uint_32 PNGAPI +png_get_pixels_per_inch(png_structp png_ptr, png_infop info_ptr) +{ + return ((png_uint_32)((float)png_get_pixels_per_meter(png_ptr, info_ptr) + *.0254 +.5)); +} + +png_uint_32 PNGAPI +png_get_x_pixels_per_inch(png_structp png_ptr, png_infop info_ptr) +{ + return ((png_uint_32)((float)png_get_x_pixels_per_meter(png_ptr, info_ptr) + *.0254 +.5)); +} + +png_uint_32 PNGAPI +png_get_y_pixels_per_inch(png_structp png_ptr, png_infop info_ptr) +{ + return ((png_uint_32)((float)png_get_y_pixels_per_meter(png_ptr, info_ptr) + *.0254 +.5)); +} + +float PNGAPI +png_get_x_offset_inches(png_structp png_ptr, png_infop info_ptr) +{ + return ((float)png_get_x_offset_microns(png_ptr, info_ptr) + *.00003937); +} + +float PNGAPI +png_get_y_offset_inches(png_structp png_ptr, png_infop info_ptr) +{ + return ((float)png_get_y_offset_microns(png_ptr, info_ptr) + *.00003937); +} + +#if defined(PNG_pHYs_SUPPORTED) +png_uint_32 PNGAPI +png_get_pHYs_dpi(png_structp png_ptr, png_infop info_ptr, + png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type) +{ + png_uint_32 retval = 0; + + if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs)) + { + png_debug1(1, "in %s retrieval function", "pHYs"); + if (res_x != NULL) + { + *res_x = info_ptr->x_pixels_per_unit; + retval |= PNG_INFO_pHYs; + } + if (res_y != NULL) + { + *res_y = info_ptr->y_pixels_per_unit; + retval |= PNG_INFO_pHYs; + } + if (unit_type != NULL) + { + *unit_type = (int)info_ptr->phys_unit_type; + retval |= PNG_INFO_pHYs; + if (*unit_type == 1) + { + if (res_x != NULL) *res_x = (png_uint_32)(*res_x * .0254 + .50); + if (res_y != NULL) *res_y = (png_uint_32)(*res_y * .0254 + .50); + } + } + } + return (retval); +} +#endif /* PNG_pHYs_SUPPORTED */ +#endif /* PNG_INCH_CONVERSIONS && PNG_FLOATING_POINT_SUPPORTED */ + +/* png_get_channels really belongs in here, too, but it's been around longer */ + +#endif /* PNG_EASY_ACCESS_SUPPORTED */ + +png_byte PNGAPI +png_get_channels(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr != NULL && info_ptr != NULL) + return(info_ptr->channels); + else + return (0); +} + +png_bytep PNGAPI +png_get_signature(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr != NULL && info_ptr != NULL) + return(info_ptr->signature); + else + return (NULL); +} + +#if defined(PNG_bKGD_SUPPORTED) +png_uint_32 PNGAPI +png_get_bKGD(png_structp png_ptr, png_infop info_ptr, + png_color_16p *background) +{ + if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_bKGD) + && background != NULL) + { + png_debug1(1, "in %s retrieval function", "bKGD"); + *background = &(info_ptr->background); + return (PNG_INFO_bKGD); + } + return (0); +} +#endif + +#if defined(PNG_cHRM_SUPPORTED) +#ifdef PNG_FLOATING_POINT_SUPPORTED +png_uint_32 PNGAPI +png_get_cHRM(png_structp png_ptr, png_infop info_ptr, + double *white_x, double *white_y, double *red_x, double *red_y, + double *green_x, double *green_y, double *blue_x, double *blue_y) +{ + if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM)) + { + png_debug1(1, "in %s retrieval function", "cHRM"); + if (white_x != NULL) + *white_x = (double)info_ptr->x_white; + if (white_y != NULL) + *white_y = (double)info_ptr->y_white; + if (red_x != NULL) + *red_x = (double)info_ptr->x_red; + if (red_y != NULL) + *red_y = (double)info_ptr->y_red; + if (green_x != NULL) + *green_x = (double)info_ptr->x_green; + if (green_y != NULL) + *green_y = (double)info_ptr->y_green; + if (blue_x != NULL) + *blue_x = (double)info_ptr->x_blue; + if (blue_y != NULL) + *blue_y = (double)info_ptr->y_blue; + return (PNG_INFO_cHRM); + } + return (0); +} +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED +png_uint_32 PNGAPI +png_get_cHRM_fixed(png_structp png_ptr, png_infop info_ptr, + png_fixed_point *white_x, png_fixed_point *white_y, png_fixed_point *red_x, + png_fixed_point *red_y, png_fixed_point *green_x, png_fixed_point *green_y, + png_fixed_point *blue_x, png_fixed_point *blue_y) +{ + if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM)) + { + png_debug1(1, "in %s retrieval function", "cHRM"); + if (white_x != NULL) + *white_x = info_ptr->int_x_white; + if (white_y != NULL) + *white_y = info_ptr->int_y_white; + if (red_x != NULL) + *red_x = info_ptr->int_x_red; + if (red_y != NULL) + *red_y = info_ptr->int_y_red; + if (green_x != NULL) + *green_x = info_ptr->int_x_green; + if (green_y != NULL) + *green_y = info_ptr->int_y_green; + if (blue_x != NULL) + *blue_x = info_ptr->int_x_blue; + if (blue_y != NULL) + *blue_y = info_ptr->int_y_blue; + return (PNG_INFO_cHRM); + } + return (0); +} +#endif +#endif + +#if defined(PNG_gAMA_SUPPORTED) +#ifdef PNG_FLOATING_POINT_SUPPORTED +png_uint_32 PNGAPI +png_get_gAMA(png_structp png_ptr, png_infop info_ptr, double *file_gamma) +{ + if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA) + && file_gamma != NULL) + { + png_debug1(1, "in %s retrieval function", "gAMA"); + *file_gamma = (double)info_ptr->gamma; + return (PNG_INFO_gAMA); + } + return (0); +} +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED +png_uint_32 PNGAPI +png_get_gAMA_fixed(png_structp png_ptr, png_infop info_ptr, + png_fixed_point *int_file_gamma) +{ + if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA) + && int_file_gamma != NULL) + { + png_debug1(1, "in %s retrieval function", "gAMA"); + *int_file_gamma = info_ptr->int_gamma; + return (PNG_INFO_gAMA); + } + return (0); +} +#endif +#endif + +#if defined(PNG_sRGB_SUPPORTED) +png_uint_32 PNGAPI +png_get_sRGB(png_structp png_ptr, png_infop info_ptr, int *file_srgb_intent) +{ + if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_sRGB) + && file_srgb_intent != NULL) + { + png_debug1(1, "in %s retrieval function", "sRGB"); + *file_srgb_intent = (int)info_ptr->srgb_intent; + return (PNG_INFO_sRGB); + } + return (0); +} +#endif + +#if defined(PNG_iCCP_SUPPORTED) +png_uint_32 PNGAPI +png_get_iCCP(png_structp png_ptr, png_infop info_ptr, + png_charpp name, int *compression_type, + png_charpp profile, png_uint_32 *proflen) +{ + if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_iCCP) + && name != NULL && profile != NULL && proflen != NULL) + { + png_debug1(1, "in %s retrieval function", "iCCP"); + *name = info_ptr->iccp_name; + *profile = info_ptr->iccp_profile; + /* Compression_type is a dummy so the API won't have to change + * if we introduce multiple compression types later. + */ + *proflen = (int)info_ptr->iccp_proflen; + *compression_type = (int)info_ptr->iccp_compression; + return (PNG_INFO_iCCP); + } + return (0); +} +#endif + +#if defined(PNG_sPLT_SUPPORTED) +png_uint_32 PNGAPI +png_get_sPLT(png_structp png_ptr, png_infop info_ptr, + png_sPLT_tpp spalettes) +{ + if (png_ptr != NULL && info_ptr != NULL && spalettes != NULL) + { + *spalettes = info_ptr->splt_palettes; + return ((png_uint_32)info_ptr->splt_palettes_num); + } + return (0); +} +#endif + +#if defined(PNG_hIST_SUPPORTED) +png_uint_32 PNGAPI +png_get_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_16p *hist) +{ + if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_hIST) + && hist != NULL) + { + png_debug1(1, "in %s retrieval function", "hIST"); + *hist = info_ptr->hist; + return (PNG_INFO_hIST); + } + return (0); +} +#endif + +png_uint_32 PNGAPI +png_get_IHDR(png_structp png_ptr, png_infop info_ptr, + png_uint_32 *width, png_uint_32 *height, int *bit_depth, + int *color_type, int *interlace_type, int *compression_type, + int *filter_type) + +{ + if (png_ptr != NULL && info_ptr != NULL && width != NULL && height != NULL && + bit_depth != NULL && color_type != NULL) + { + png_debug1(1, "in %s retrieval function", "IHDR"); + *width = info_ptr->width; + *height = info_ptr->height; + *bit_depth = info_ptr->bit_depth; + if (info_ptr->bit_depth < 1 || info_ptr->bit_depth > 16) + png_error(png_ptr, "Invalid bit depth"); + + *color_type = info_ptr->color_type; + + if (info_ptr->color_type > 6) + png_error(png_ptr, "Invalid color type"); + + if (compression_type != NULL) + *compression_type = info_ptr->compression_type; + + if (filter_type != NULL) + *filter_type = info_ptr->filter_type; + + if (interlace_type != NULL) + *interlace_type = info_ptr->interlace_type; + + /* Check for potential overflow of rowbytes */ + if (*width == 0 || *width > PNG_UINT_31_MAX) + png_error(png_ptr, "Invalid image width"); + + if (*height == 0 || *height > PNG_UINT_31_MAX) + png_error(png_ptr, "Invalid image height"); + + if (info_ptr->width > (PNG_UINT_32_MAX + >> 3) /* 8-byte RGBA pixels */ + - 64 /* bigrowbuf hack */ + - 1 /* filter byte */ + - 7*8 /* rounding of width to multiple of 8 pixels */ + - 8) /* extra max_pixel_depth pad */ + { + png_warning(png_ptr, + "Width too large for libpng to process image data."); + } + + return (1); + } + return (0); +} + +#if defined(PNG_oFFs_SUPPORTED) +png_uint_32 PNGAPI +png_get_oFFs(png_structp png_ptr, png_infop info_ptr, + png_int_32 *offset_x, png_int_32 *offset_y, int *unit_type) +{ + if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs) + && offset_x != NULL && offset_y != NULL && unit_type != NULL) + { + png_debug1(1, "in %s retrieval function", "oFFs"); + *offset_x = info_ptr->x_offset; + *offset_y = info_ptr->y_offset; + *unit_type = (int)info_ptr->offset_unit_type; + return (PNG_INFO_oFFs); + } + return (0); +} +#endif + +#if defined(PNG_pCAL_SUPPORTED) +png_uint_32 PNGAPI +png_get_pCAL(png_structp png_ptr, png_infop info_ptr, + png_charp *purpose, png_int_32 *X0, png_int_32 *X1, int *type, int *nparams, + png_charp *units, png_charpp *params) +{ + if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pCAL) + && purpose != NULL && X0 != NULL && X1 != NULL && type != NULL && + nparams != NULL && units != NULL && params != NULL) + { + png_debug1(1, "in %s retrieval function", "pCAL"); + *purpose = info_ptr->pcal_purpose; + *X0 = info_ptr->pcal_X0; + *X1 = info_ptr->pcal_X1; + *type = (int)info_ptr->pcal_type; + *nparams = (int)info_ptr->pcal_nparams; + *units = info_ptr->pcal_units; + *params = info_ptr->pcal_params; + return (PNG_INFO_pCAL); + } + return (0); +} +#endif + +#if defined(PNG_sCAL_SUPPORTED) +#ifdef PNG_FLOATING_POINT_SUPPORTED +png_uint_32 PNGAPI +png_get_sCAL(png_structp png_ptr, png_infop info_ptr, + int *unit, double *width, double *height) +{ + if (png_ptr != NULL && info_ptr != NULL && + (info_ptr->valid & PNG_INFO_sCAL)) + { + *unit = info_ptr->scal_unit; + *width = info_ptr->scal_pixel_width; + *height = info_ptr->scal_pixel_height; + return (PNG_INFO_sCAL); + } + return(0); +} +#else +#ifdef PNG_FIXED_POINT_SUPPORTED +png_uint_32 PNGAPI +png_get_sCAL_s(png_structp png_ptr, png_infop info_ptr, + int *unit, png_charpp width, png_charpp height) +{ + if (png_ptr != NULL && info_ptr != NULL && + (info_ptr->valid & PNG_INFO_sCAL)) + { + *unit = info_ptr->scal_unit; + *width = info_ptr->scal_s_width; + *height = info_ptr->scal_s_height; + return (PNG_INFO_sCAL); + } + return(0); +} +#endif +#endif +#endif + +#if defined(PNG_pHYs_SUPPORTED) +png_uint_32 PNGAPI +png_get_pHYs(png_structp png_ptr, png_infop info_ptr, + png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type) +{ + png_uint_32 retval = 0; + + if (png_ptr != NULL && info_ptr != NULL && + (info_ptr->valid & PNG_INFO_pHYs)) + { + png_debug1(1, "in %s retrieval function", "pHYs"); + + if (res_x != NULL) + { + *res_x = info_ptr->x_pixels_per_unit; + retval |= PNG_INFO_pHYs; + } + + if (res_y != NULL) + { + *res_y = info_ptr->y_pixels_per_unit; + retval |= PNG_INFO_pHYs; + } + + if (unit_type != NULL) + { + *unit_type = (int)info_ptr->phys_unit_type; + retval |= PNG_INFO_pHYs; + } + } + return (retval); +} +#endif + +png_uint_32 PNGAPI +png_get_PLTE(png_structp png_ptr, png_infop info_ptr, png_colorp *palette, + int *num_palette) +{ + if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_PLTE) + && palette != NULL) + { + png_debug1(1, "in %s retrieval function", "PLTE"); + *palette = info_ptr->palette; + *num_palette = info_ptr->num_palette; + png_debug1(3, "num_palette = %d", *num_palette); + return (PNG_INFO_PLTE); + } + return (0); +} + +#if defined(PNG_sBIT_SUPPORTED) +png_uint_32 PNGAPI +png_get_sBIT(png_structp png_ptr, png_infop info_ptr, png_color_8p *sig_bit) +{ + if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_sBIT) + && sig_bit != NULL) + { + png_debug1(1, "in %s retrieval function", "sBIT"); + *sig_bit = &(info_ptr->sig_bit); + return (PNG_INFO_sBIT); + } + return (0); +} +#endif + +#if defined(PNG_TEXT_SUPPORTED) +png_uint_32 PNGAPI +png_get_text(png_structp png_ptr, png_infop info_ptr, png_textp *text_ptr, + int *num_text) +{ + if (png_ptr != NULL && info_ptr != NULL && info_ptr->num_text > 0) + { + png_debug1(1, "in %s retrieval function", + (png_ptr->chunk_name[0] == '\0' ? "text" + : (png_const_charp)png_ptr->chunk_name)); + + if (text_ptr != NULL) + *text_ptr = info_ptr->text; + + if (num_text != NULL) + *num_text = info_ptr->num_text; + + return ((png_uint_32)info_ptr->num_text); + } + if (num_text != NULL) + *num_text = 0; + return(0); +} +#endif + +#if defined(PNG_tIME_SUPPORTED) +png_uint_32 PNGAPI +png_get_tIME(png_structp png_ptr, png_infop info_ptr, png_timep *mod_time) +{ + if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_tIME) + && mod_time != NULL) + { + png_debug1(1, "in %s retrieval function", "tIME"); + *mod_time = &(info_ptr->mod_time); + return (PNG_INFO_tIME); + } + return (0); +} +#endif + +#if defined(PNG_tRNS_SUPPORTED) +png_uint_32 PNGAPI +png_get_tRNS(png_structp png_ptr, png_infop info_ptr, + png_bytep *trans, int *num_trans, png_color_16p *trans_values) +{ + png_uint_32 retval = 0; + if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_tRNS)) + { + png_debug1(1, "in %s retrieval function", "tRNS"); + if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) + { + if (trans != NULL) + { + *trans = info_ptr->trans; + retval |= PNG_INFO_tRNS; + } + + if (trans_values != NULL) + *trans_values = &(info_ptr->trans_values); + } + else /* if (info_ptr->color_type != PNG_COLOR_TYPE_PALETTE) */ + { + if (trans_values != NULL) + { + *trans_values = &(info_ptr->trans_values); + retval |= PNG_INFO_tRNS; + } + + if (trans != NULL) + *trans = NULL; + } + if (num_trans != NULL) + { + *num_trans = info_ptr->num_trans; + retval |= PNG_INFO_tRNS; + } + } + return (retval); +} +#endif + +#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) +png_uint_32 PNGAPI +png_get_unknown_chunks(png_structp png_ptr, png_infop info_ptr, + png_unknown_chunkpp unknowns) +{ + if (png_ptr != NULL && info_ptr != NULL && unknowns != NULL) + { + *unknowns = info_ptr->unknown_chunks; + return ((png_uint_32)info_ptr->unknown_chunks_num); + } + return (0); +} +#endif + +#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) +png_byte PNGAPI +png_get_rgb_to_gray_status (png_structp png_ptr) +{ + return (png_byte)(png_ptr? png_ptr->rgb_to_gray_status : 0); +} +#endif + +#if defined(PNG_USER_CHUNKS_SUPPORTED) +png_voidp PNGAPI +png_get_user_chunk_ptr(png_structp png_ptr) +{ + return (png_ptr? png_ptr->user_chunk_ptr : NULL); +} +#endif + +#ifdef PNG_WRITE_SUPPORTED +png_uint_32 PNGAPI +png_get_compression_buffer_size(png_structp png_ptr) +{ + return (png_uint_32)(png_ptr? png_ptr->zbuf_size : 0L); +} +#endif + +#ifdef PNG_ASSEMBLER_CODE_SUPPORTED +#ifndef PNG_1_0_X +/* This function was added to libpng 1.2.0 and should exist by default */ +png_uint_32 PNGAPI +png_get_asm_flags (png_structp png_ptr) +{ + /* Obsolete, to be removed from libpng-1.4.0 */ + return (png_ptr? 0L: 0L); +} + +/* This function was added to libpng 1.2.0 and should exist by default */ +png_uint_32 PNGAPI +png_get_asm_flagmask (int flag_select) +{ + /* Obsolete, to be removed from libpng-1.4.0 */ + flag_select=flag_select; + return 0L; +} + + /* GRR: could add this: && defined(PNG_MMX_CODE_SUPPORTED) */ +/* This function was added to libpng 1.2.0 */ +png_uint_32 PNGAPI +png_get_mmx_flagmask (int flag_select, int *compilerID) +{ + /* Obsolete, to be removed from libpng-1.4.0 */ + flag_select=flag_select; + *compilerID = -1; /* unknown (i.e., no asm/MMX code compiled) */ + return 0L; +} + +/* This function was added to libpng 1.2.0 */ +png_byte PNGAPI +png_get_mmx_bitdepth_threshold (png_structp png_ptr) +{ + /* Obsolete, to be removed from libpng-1.4.0 */ + return (png_ptr? 0: 0); +} + +/* This function was added to libpng 1.2.0 */ +png_uint_32 PNGAPI +png_get_mmx_rowbytes_threshold (png_structp png_ptr) +{ + /* Obsolete, to be removed from libpng-1.4.0 */ + return (png_ptr? 0L: 0L); +} +#endif /* ?PNG_1_0_X */ +#endif /* ?PNG_ASSEMBLER_CODE_SUPPORTED */ + +#ifdef PNG_SET_USER_LIMITS_SUPPORTED +/* These functions were added to libpng 1.2.6 */ +png_uint_32 PNGAPI +png_get_user_width_max (png_structp png_ptr) +{ + return (png_ptr? png_ptr->user_width_max : 0); +} +png_uint_32 PNGAPI +png_get_user_height_max (png_structp png_ptr) +{ + return (png_ptr? png_ptr->user_height_max : 0); +} +#endif /* ?PNG_SET_USER_LIMITS_SUPPORTED */ + + +#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */ diff --git a/Libraries/libpng/pngmem.cpp b/Libraries/libpng/pngmem.cpp new file mode 100644 index 0000000..d1999b6 --- /dev/null +++ b/Libraries/libpng/pngmem.cpp @@ -0,0 +1,617 @@ + +/* pngmem.c - stub functions for memory allocation + * + * Last changed in libpng 1.2.37 [June 4, 2009] + * For conditions of distribution and use, see copyright notice in png.h + * Copyright (c) 1998-2009 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This file provides a location for all memory allocation. Users who + * need special memory handling are expected to supply replacement + * functions for png_malloc() and png_free(), and to use + * png_create_read_struct_2() and png_create_write_struct_2() to + * identify the replacement functions. + */ + +#define PNG_INTERNAL +#include "png.h" +#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) + +/* Borland DOS special memory handler */ +#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__) +/* If you change this, be sure to change the one in png.h also */ + +/* Allocate memory for a png_struct. The malloc and memset can be replaced + by a single call to calloc() if this is thought to improve performance. */ +png_voidp /* PRIVATE */ +png_create_struct(int type) +{ +#ifdef PNG_USER_MEM_SUPPORTED + return (png_create_struct_2(type, png_malloc_ptr_NULL, png_voidp_NULL)); +} + +/* Alternate version of png_create_struct, for use with user-defined malloc. */ +png_voidp /* PRIVATE */ +png_create_struct_2(int type, png_malloc_ptr malloc_fn, png_voidp mem_ptr) +{ +#endif /* PNG_USER_MEM_SUPPORTED */ + png_size_t size; + png_voidp struct_ptr; + + if (type == PNG_STRUCT_INFO) + size = png_sizeof(png_info); + else if (type == PNG_STRUCT_PNG) + size = png_sizeof(png_struct); + else + return (png_get_copyright(NULL)); + +#ifdef PNG_USER_MEM_SUPPORTED + if (malloc_fn != NULL) + { + png_struct dummy_struct; + png_structp png_ptr = &dummy_struct; + png_ptr->mem_ptr=mem_ptr; + struct_ptr = (*(malloc_fn))(png_ptr, (png_uint_32)size); + } + else +#endif /* PNG_USER_MEM_SUPPORTED */ + struct_ptr = (png_voidp)farmalloc(size); + if (struct_ptr != NULL) + png_memset(struct_ptr, 0, size); + return (struct_ptr); +} + +/* Free memory allocated by a png_create_struct() call */ +void /* PRIVATE */ +png_destroy_struct(png_voidp struct_ptr) +{ +#ifdef PNG_USER_MEM_SUPPORTED + png_destroy_struct_2(struct_ptr, png_free_ptr_NULL, png_voidp_NULL); +} + +/* Free memory allocated by a png_create_struct() call */ +void /* PRIVATE */ +png_destroy_struct_2(png_voidp struct_ptr, png_free_ptr free_fn, + png_voidp mem_ptr) +{ +#endif + if (struct_ptr != NULL) + { +#ifdef PNG_USER_MEM_SUPPORTED + if (free_fn != NULL) + { + png_struct dummy_struct; + png_structp png_ptr = &dummy_struct; + png_ptr->mem_ptr=mem_ptr; + (*(free_fn))(png_ptr, struct_ptr); + return; + } +#endif /* PNG_USER_MEM_SUPPORTED */ + farfree (struct_ptr); + } +} + +/* Allocate memory. For reasonable files, size should never exceed + * 64K. However, zlib may allocate more then 64K if you don't tell + * it not to. See zconf.h and png.h for more information. zlib does + * need to allocate exactly 64K, so whatever you call here must + * have the ability to do that. + * + * Borland seems to have a problem in DOS mode for exactly 64K. + * It gives you a segment with an offset of 8 (perhaps to store its + * memory stuff). zlib doesn't like this at all, so we have to + * detect and deal with it. This code should not be needed in + * Windows or OS/2 modes, and only in 16 bit mode. This code has + * been updated by Alexander Lehmann for version 0.89 to waste less + * memory. + * + * Note that we can't use png_size_t for the "size" declaration, + * since on some systems a png_size_t is a 16-bit quantity, and as a + * result, we would be truncating potentially larger memory requests + * (which should cause a fatal error) and introducing major problems. + */ + +png_voidp PNGAPI +png_malloc(png_structp png_ptr, png_uint_32 size) +{ + png_voidp ret; + + if (png_ptr == NULL || size == 0) + return (NULL); + +#ifdef PNG_USER_MEM_SUPPORTED + if (png_ptr->malloc_fn != NULL) + ret = ((png_voidp)(*(png_ptr->malloc_fn))(png_ptr, (png_size_t)size)); + else + ret = (png_malloc_default(png_ptr, size)); + if (ret == NULL && (png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0) + png_error(png_ptr, "Out of memory!"); + return (ret); +} + +png_voidp PNGAPI +png_malloc_default(png_structp png_ptr, png_uint_32 size) +{ + png_voidp ret; +#endif /* PNG_USER_MEM_SUPPORTED */ + + if (png_ptr == NULL || size == 0) + return (NULL); + +#ifdef PNG_MAX_MALLOC_64K + if (size > (png_uint_32)65536L) + { + png_warning(png_ptr, "Cannot Allocate > 64K"); + ret = NULL; + } + else +#endif + + if (size != (size_t)size) + ret = NULL; + else if (size == (png_uint_32)65536L) + { + if (png_ptr->offset_table == NULL) + { + /* Try to see if we need to do any of this fancy stuff */ + ret = farmalloc(size); + if (ret == NULL || ((png_size_t)ret & 0xffff)) + { + int num_blocks; + png_uint_32 total_size; + png_bytep table; + int i; + png_byte huge * hptr; + + if (ret != NULL) + { + farfree(ret); + ret = NULL; + } + + if (png_ptr->zlib_window_bits > 14) + num_blocks = (int)(1 << (png_ptr->zlib_window_bits - 14)); + else + num_blocks = 1; + if (png_ptr->zlib_mem_level >= 7) + num_blocks += (int)(1 << (png_ptr->zlib_mem_level - 7)); + else + num_blocks++; + + total_size = ((png_uint_32)65536L) * (png_uint_32)num_blocks+16; + + table = farmalloc(total_size); + + if (table == NULL) + { +#ifndef PNG_USER_MEM_SUPPORTED + if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0) + png_error(png_ptr, "Out Of Memory."); /* Note "O" and "M" */ + else + png_warning(png_ptr, "Out Of Memory."); +#endif + return (NULL); + } + + if ((png_size_t)table & 0xfff0) + { +#ifndef PNG_USER_MEM_SUPPORTED + if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0) + png_error(png_ptr, + "Farmalloc didn't return normalized pointer"); + else + png_warning(png_ptr, + "Farmalloc didn't return normalized pointer"); +#endif + return (NULL); + } + + png_ptr->offset_table = table; + png_ptr->offset_table_ptr = farmalloc(num_blocks * + png_sizeof(png_bytep)); + + if (png_ptr->offset_table_ptr == NULL) + { +#ifndef PNG_USER_MEM_SUPPORTED + if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0) + png_error(png_ptr, "Out Of memory."); /* Note "O" and "M" */ + else + png_warning(png_ptr, "Out Of memory."); +#endif + return (NULL); + } + + hptr = (png_byte huge *)table; + if ((png_size_t)hptr & 0xf) + { + hptr = (png_byte huge *)((long)(hptr) & 0xfffffff0L); + hptr = hptr + 16L; /* "hptr += 16L" fails on Turbo C++ 3.0 */ + } + for (i = 0; i < num_blocks; i++) + { + png_ptr->offset_table_ptr[i] = (png_bytep)hptr; + hptr = hptr + (png_uint_32)65536L; /* "+=" fails on TC++3.0 */ + } + + png_ptr->offset_table_number = num_blocks; + png_ptr->offset_table_count = 0; + png_ptr->offset_table_count_free = 0; + } + } + + if (png_ptr->offset_table_count >= png_ptr->offset_table_number) + { +#ifndef PNG_USER_MEM_SUPPORTED + if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0) + png_error(png_ptr, "Out of Memory."); /* Note "o" and "M" */ + else + png_warning(png_ptr, "Out of Memory."); +#endif + return (NULL); + } + + ret = png_ptr->offset_table_ptr[png_ptr->offset_table_count++]; + } + else + ret = farmalloc(size); + +#ifndef PNG_USER_MEM_SUPPORTED + if (ret == NULL) + { + if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0) + png_error(png_ptr, "Out of memory."); /* Note "o" and "m" */ + else + png_warning(png_ptr, "Out of memory."); /* Note "o" and "m" */ + } +#endif + + return (ret); +} + +/* Free a pointer allocated by png_malloc(). In the default + * configuration, png_ptr is not used, but is passed in case it + * is needed. If ptr is NULL, return without taking any action. + */ +void PNGAPI +png_free(png_structp png_ptr, png_voidp ptr) +{ + if (png_ptr == NULL || ptr == NULL) + return; + +#ifdef PNG_USER_MEM_SUPPORTED + if (png_ptr->free_fn != NULL) + { + (*(png_ptr->free_fn))(png_ptr, ptr); + return; + } + else + png_free_default(png_ptr, ptr); +} + +void PNGAPI +png_free_default(png_structp png_ptr, png_voidp ptr) +{ +#endif /* PNG_USER_MEM_SUPPORTED */ + + if (png_ptr == NULL || ptr == NULL) + return; + + if (png_ptr->offset_table != NULL) + { + int i; + + for (i = 0; i < png_ptr->offset_table_count; i++) + { + if (ptr == png_ptr->offset_table_ptr[i]) + { + ptr = NULL; + png_ptr->offset_table_count_free++; + break; + } + } + if (png_ptr->offset_table_count_free == png_ptr->offset_table_count) + { + farfree(png_ptr->offset_table); + farfree(png_ptr->offset_table_ptr); + png_ptr->offset_table = NULL; + png_ptr->offset_table_ptr = NULL; + } + } + + if (ptr != NULL) + { + farfree(ptr); + } +} + +#else /* Not the Borland DOS special memory handler */ + +/* Allocate memory for a png_struct or a png_info. The malloc and + memset can be replaced by a single call to calloc() if this is thought + to improve performance noticably. */ +png_voidp /* PRIVATE */ +png_create_struct(int type) +{ +#ifdef PNG_USER_MEM_SUPPORTED + return (png_create_struct_2(type, png_malloc_ptr_NULL, png_voidp_NULL)); +} + +/* Allocate memory for a png_struct or a png_info. The malloc and + memset can be replaced by a single call to calloc() if this is thought + to improve performance noticably. */ +png_voidp /* PRIVATE */ +png_create_struct_2(int type, png_malloc_ptr malloc_fn, png_voidp mem_ptr) +{ +#endif /* PNG_USER_MEM_SUPPORTED */ + png_size_t size; + png_voidp struct_ptr; + + if (type == PNG_STRUCT_INFO) + size = png_sizeof(png_info); + else if (type == PNG_STRUCT_PNG) + size = png_sizeof(png_struct); + else + return (NULL); + +#ifdef PNG_USER_MEM_SUPPORTED + if (malloc_fn != NULL) + { + png_struct dummy_struct; + png_structp png_ptr = &dummy_struct; + png_ptr->mem_ptr=mem_ptr; + struct_ptr = (*(malloc_fn))(png_ptr, size); + if (struct_ptr != NULL) + png_memset(struct_ptr, 0, size); + return (struct_ptr); + } +#endif /* PNG_USER_MEM_SUPPORTED */ + +#if defined(__TURBOC__) && !defined(__FLAT__) + struct_ptr = (png_voidp)farmalloc(size); +#else +# if defined(_MSC_VER) && defined(MAXSEG_64K) + struct_ptr = (png_voidp)halloc(size, 1); +# else + struct_ptr = (png_voidp)malloc(size); +# endif +#endif + if (struct_ptr != NULL) + png_memset(struct_ptr, 0, size); + + return (struct_ptr); +} + + +/* Free memory allocated by a png_create_struct() call */ +void /* PRIVATE */ +png_destroy_struct(png_voidp struct_ptr) +{ +#ifdef PNG_USER_MEM_SUPPORTED + png_destroy_struct_2(struct_ptr, png_free_ptr_NULL, png_voidp_NULL); +} + +/* Free memory allocated by a png_create_struct() call */ +void /* PRIVATE */ +png_destroy_struct_2(png_voidp struct_ptr, png_free_ptr free_fn, + png_voidp mem_ptr) +{ +#endif /* PNG_USER_MEM_SUPPORTED */ + if (struct_ptr != NULL) + { +#ifdef PNG_USER_MEM_SUPPORTED + if (free_fn != NULL) + { + png_struct dummy_struct; + png_structp png_ptr = &dummy_struct; + png_ptr->mem_ptr=mem_ptr; + (*(free_fn))(png_ptr, struct_ptr); + return; + } +#endif /* PNG_USER_MEM_SUPPORTED */ +#if defined(__TURBOC__) && !defined(__FLAT__) + farfree(struct_ptr); +#else +# if defined(_MSC_VER) && defined(MAXSEG_64K) + hfree(struct_ptr); +# else + free(struct_ptr); +# endif +#endif + } +} + +/* Allocate memory. For reasonable files, size should never exceed + * 64K. However, zlib may allocate more then 64K if you don't tell + * it not to. See zconf.h and png.h for more information. zlib does + * need to allocate exactly 64K, so whatever you call here must + * have the ability to do that. + */ + + +png_voidp PNGAPI +png_malloc(png_structp png_ptr, png_uint_32 size) +{ + png_voidp ret; + +#ifdef PNG_USER_MEM_SUPPORTED + if (png_ptr == NULL || size == 0) + return (NULL); + + if (png_ptr->malloc_fn != NULL) + ret = ((png_voidp)(*(png_ptr->malloc_fn))(png_ptr, (png_size_t)size)); + else + ret = (png_malloc_default(png_ptr, size)); + if (ret == NULL && (png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0) + png_error(png_ptr, "Out of Memory!"); + return (ret); +} + +png_voidp PNGAPI +png_malloc_default(png_structp png_ptr, png_uint_32 size) +{ + png_voidp ret; +#endif /* PNG_USER_MEM_SUPPORTED */ + + if (png_ptr == NULL || size == 0) + return (NULL); + +#ifdef PNG_MAX_MALLOC_64K + if (size > (png_uint_32)65536L) + { +#ifndef PNG_USER_MEM_SUPPORTED + if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0) + png_error(png_ptr, "Cannot Allocate > 64K"); + else +#endif + return NULL; + } +#endif + + /* Check for overflow */ +#if defined(__TURBOC__) && !defined(__FLAT__) + if (size != (unsigned long)size) + ret = NULL; + else + ret = farmalloc(size); +#else +# if defined(_MSC_VER) && defined(MAXSEG_64K) + if (size != (unsigned long)size) + ret = NULL; + else + ret = halloc(size, 1); +# else + if (size != (size_t)size) + ret = NULL; + else + ret = malloc((size_t)size); +# endif +#endif + +#ifndef PNG_USER_MEM_SUPPORTED + if (ret == NULL && (png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0) + png_error(png_ptr, "Out of Memory"); +#endif + + return (ret); +} + +/* Free a pointer allocated by png_malloc(). If ptr is NULL, return + * without taking any action. + */ +void PNGAPI +png_free(png_structp png_ptr, png_voidp ptr) +{ + if (png_ptr == NULL || ptr == NULL) + return; + +#ifdef PNG_USER_MEM_SUPPORTED + if (png_ptr->free_fn != NULL) + { + (*(png_ptr->free_fn))(png_ptr, ptr); + return; + } + else + png_free_default(png_ptr, ptr); +} +void PNGAPI +png_free_default(png_structp png_ptr, png_voidp ptr) +{ + if (png_ptr == NULL || ptr == NULL) + return; + +#endif /* PNG_USER_MEM_SUPPORTED */ + +#if defined(__TURBOC__) && !defined(__FLAT__) + farfree(ptr); +#else +# if defined(_MSC_VER) && defined(MAXSEG_64K) + hfree(ptr); +# else + free(ptr); +# endif +#endif +} + +#endif /* Not Borland DOS special memory handler */ + +#if defined(PNG_1_0_X) +# define png_malloc_warn png_malloc +#else +/* This function was added at libpng version 1.2.3. The png_malloc_warn() + * function will set up png_malloc() to issue a png_warning and return NULL + * instead of issuing a png_error, if it fails to allocate the requested + * memory. + */ +png_voidp PNGAPI +png_malloc_warn(png_structp png_ptr, png_uint_32 size) +{ + png_voidp ptr; + png_uint_32 save_flags; + if (png_ptr == NULL) + return (NULL); + + save_flags = png_ptr->flags; + png_ptr->flags|=PNG_FLAG_MALLOC_NULL_MEM_OK; + ptr = (png_voidp)png_malloc((png_structp)png_ptr, size); + png_ptr->flags=save_flags; + return(ptr); +} +#endif + +png_voidp PNGAPI +png_memcpy_check (png_structp png_ptr, png_voidp s1, png_voidp s2, + png_uint_32 length) +{ + png_size_t size; + + size = (png_size_t)length; + if ((png_uint_32)size != length) + png_error(png_ptr, "Overflow in png_memcpy_check."); + + return(png_memcpy (s1, s2, size)); +} + +png_voidp PNGAPI +png_memset_check (png_structp png_ptr, png_voidp s1, int value, + png_uint_32 length) +{ + png_size_t size; + + size = (png_size_t)length; + if ((png_uint_32)size != length) + png_error(png_ptr, "Overflow in png_memset_check."); + + return (png_memset (s1, value, size)); + +} + +#ifdef PNG_USER_MEM_SUPPORTED +/* This function is called when the application wants to use another method + * of allocating and freeing memory. + */ +void PNGAPI +png_set_mem_fn(png_structp png_ptr, png_voidp mem_ptr, png_malloc_ptr + malloc_fn, png_free_ptr free_fn) +{ + if (png_ptr != NULL) + { + png_ptr->mem_ptr = mem_ptr; + png_ptr->malloc_fn = malloc_fn; + png_ptr->free_fn = free_fn; + } +} + +/* This function returns a pointer to the mem_ptr associated with the user + * functions. The application should free any memory associated with this + * pointer before png_write_destroy and png_read_destroy are called. + */ +png_voidp PNGAPI +png_get_mem_ptr(png_structp png_ptr) +{ + if (png_ptr == NULL) + return (NULL); + return ((png_voidp)png_ptr->mem_ptr); +} +#endif /* PNG_USER_MEM_SUPPORTED */ +#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */ diff --git a/Libraries/libpng/pngpread.cpp b/Libraries/libpng/pngpread.cpp new file mode 100644 index 0000000..9746c7a --- /dev/null +++ b/Libraries/libpng/pngpread.cpp @@ -0,0 +1,1724 @@ + +/* pngpread.c - read a png file in push mode + * + * Last changed in libpng 1.2.37 [June 4, 2009] + * For conditions of distribution and use, see copyright notice in png.h + * Copyright (c) 1998-2009 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + */ + +#define PNG_INTERNAL +#include "png.h" +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED + +/* Push model modes */ +#define PNG_READ_SIG_MODE 0 +#define PNG_READ_CHUNK_MODE 1 +#define PNG_READ_IDAT_MODE 2 +#define PNG_SKIP_MODE 3 +#define PNG_READ_tEXt_MODE 4 +#define PNG_READ_zTXt_MODE 5 +#define PNG_READ_DONE_MODE 6 +#define PNG_READ_iTXt_MODE 7 +#define PNG_ERROR_MODE 8 + +void PNGAPI +png_process_data(png_structp png_ptr, png_infop info_ptr, + png_bytep buffer, png_size_t buffer_size) +{ + if (png_ptr == NULL || info_ptr == NULL) + return; + + png_push_restore_buffer(png_ptr, buffer, buffer_size); + + while (png_ptr->buffer_size) + { + png_process_some_data(png_ptr, info_ptr); + } +} + +/* What we do with the incoming data depends on what we were previously + * doing before we ran out of data... + */ +void /* PRIVATE */ +png_process_some_data(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr == NULL) + return; + + switch (png_ptr->process_mode) + { + case PNG_READ_SIG_MODE: + { + png_push_read_sig(png_ptr, info_ptr); + break; + } + + case PNG_READ_CHUNK_MODE: + { + png_push_read_chunk(png_ptr, info_ptr); + break; + } + + case PNG_READ_IDAT_MODE: + { + png_push_read_IDAT(png_ptr); + break; + } + +#if defined(PNG_READ_tEXt_SUPPORTED) + case PNG_READ_tEXt_MODE: + { + png_push_read_tEXt(png_ptr, info_ptr); + break; + } + +#endif +#if defined(PNG_READ_zTXt_SUPPORTED) + case PNG_READ_zTXt_MODE: + { + png_push_read_zTXt(png_ptr, info_ptr); + break; + } + +#endif +#if defined(PNG_READ_iTXt_SUPPORTED) + case PNG_READ_iTXt_MODE: + { + png_push_read_iTXt(png_ptr, info_ptr); + break; + } + +#endif + case PNG_SKIP_MODE: + { + png_push_crc_finish(png_ptr); + break; + } + + default: + { + png_ptr->buffer_size = 0; + break; + } + } +} + +/* Read any remaining signature bytes from the stream and compare them with + * the correct PNG signature. It is possible that this routine is called + * with bytes already read from the signature, either because they have been + * checked by the calling application, or because of multiple calls to this + * routine. + */ +void /* PRIVATE */ +png_push_read_sig(png_structp png_ptr, png_infop info_ptr) +{ + png_size_t num_checked = png_ptr->sig_bytes, + num_to_check = 8 - num_checked; + + if (png_ptr->buffer_size < num_to_check) + { + num_to_check = png_ptr->buffer_size; + } + + png_push_fill_buffer(png_ptr, &(info_ptr->signature[num_checked]), + num_to_check); + png_ptr->sig_bytes = (png_byte)(png_ptr->sig_bytes + num_to_check); + + if (png_sig_cmp(info_ptr->signature, num_checked, num_to_check)) + { + if (num_checked < 4 && + png_sig_cmp(info_ptr->signature, num_checked, num_to_check - 4)) + png_error(png_ptr, "Not a PNG file"); + else + png_error(png_ptr, "PNG file corrupted by ASCII conversion"); + } + else + { + if (png_ptr->sig_bytes >= 8) + { + png_ptr->process_mode = PNG_READ_CHUNK_MODE; + } + } +} + +void /* PRIVATE */ +png_push_read_chunk(png_structp png_ptr, png_infop info_ptr) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_CONST PNG_IHDR; + PNG_CONST PNG_IDAT; + PNG_CONST PNG_IEND; + PNG_CONST PNG_PLTE; +#if defined(PNG_READ_bKGD_SUPPORTED) + PNG_CONST PNG_bKGD; +#endif +#if defined(PNG_READ_cHRM_SUPPORTED) + PNG_CONST PNG_cHRM; +#endif +#if defined(PNG_READ_gAMA_SUPPORTED) + PNG_CONST PNG_gAMA; +#endif +#if defined(PNG_READ_hIST_SUPPORTED) + PNG_CONST PNG_hIST; +#endif +#if defined(PNG_READ_iCCP_SUPPORTED) + PNG_CONST PNG_iCCP; +#endif +#if defined(PNG_READ_iTXt_SUPPORTED) + PNG_CONST PNG_iTXt; +#endif +#if defined(PNG_READ_oFFs_SUPPORTED) + PNG_CONST PNG_oFFs; +#endif +#if defined(PNG_READ_pCAL_SUPPORTED) + PNG_CONST PNG_pCAL; +#endif +#if defined(PNG_READ_pHYs_SUPPORTED) + PNG_CONST PNG_pHYs; +#endif +#if defined(PNG_READ_sBIT_SUPPORTED) + PNG_CONST PNG_sBIT; +#endif +#if defined(PNG_READ_sCAL_SUPPORTED) + PNG_CONST PNG_sCAL; +#endif +#if defined(PNG_READ_sRGB_SUPPORTED) + PNG_CONST PNG_sRGB; +#endif +#if defined(PNG_READ_sPLT_SUPPORTED) + PNG_CONST PNG_sPLT; +#endif +#if defined(PNG_READ_tEXt_SUPPORTED) + PNG_CONST PNG_tEXt; +#endif +#if defined(PNG_READ_tIME_SUPPORTED) + PNG_CONST PNG_tIME; +#endif +#if defined(PNG_READ_tRNS_SUPPORTED) + PNG_CONST PNG_tRNS; +#endif +#if defined(PNG_READ_zTXt_SUPPORTED) + PNG_CONST PNG_zTXt; +#endif +#endif /* PNG_USE_LOCAL_ARRAYS */ + /* First we make sure we have enough data for the 4 byte chunk name + * and the 4 byte chunk length before proceeding with decoding the + * chunk data. To fully decode each of these chunks, we also make + * sure we have enough data in the buffer for the 4 byte CRC at the + * end of every chunk (except IDAT, which is handled separately). + */ + if (!(png_ptr->mode & PNG_HAVE_CHUNK_HEADER)) + { + png_byte chunk_length[4]; + + if (png_ptr->buffer_size < 8) + { + png_push_save_buffer(png_ptr); + return; + } + + png_push_fill_buffer(png_ptr, chunk_length, 4); + png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length); + png_reset_crc(png_ptr); + png_crc_read(png_ptr, png_ptr->chunk_name, 4); + png_check_chunk_name(png_ptr, png_ptr->chunk_name); + png_ptr->mode |= PNG_HAVE_CHUNK_HEADER; + } + + if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) + if (png_ptr->mode & PNG_AFTER_IDAT) + png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT; + + if (!png_memcmp(png_ptr->chunk_name, png_IHDR, 4)) + { + if (png_ptr->push_length != 13) + png_error(png_ptr, "Invalid IHDR length"); + + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_handle_IHDR(png_ptr, info_ptr, png_ptr->push_length); + } + + else if (!png_memcmp(png_ptr->chunk_name, png_IEND, 4)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_handle_IEND(png_ptr, info_ptr, png_ptr->push_length); + + png_ptr->process_mode = PNG_READ_DONE_MODE; + png_push_have_end(png_ptr, info_ptr); + } + +#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED + else if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) + png_ptr->mode |= PNG_HAVE_IDAT; + + png_handle_unknown(png_ptr, info_ptr, png_ptr->push_length); + + if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4)) + png_ptr->mode |= PNG_HAVE_PLTE; + + else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) + { + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before IDAT"); + + else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && + !(png_ptr->mode & PNG_HAVE_PLTE)) + png_error(png_ptr, "Missing PLTE before IDAT"); + } + } + +#endif + else if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + png_handle_PLTE(png_ptr, info_ptr, png_ptr->push_length); + } + + else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) + { + /* If we reach an IDAT chunk, this means we have read all of the + * header chunks, and we can start reading the image (or if this + * is called after the image has been read - we have an error). + */ + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before IDAT"); + + else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && + !(png_ptr->mode & PNG_HAVE_PLTE)) + png_error(png_ptr, "Missing PLTE before IDAT"); + + if (png_ptr->mode & PNG_HAVE_IDAT) + { + if (!(png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT)) + if (png_ptr->push_length == 0) + return; + + if (png_ptr->mode & PNG_AFTER_IDAT) + png_error(png_ptr, "Too many IDAT's found"); + } + + png_ptr->idat_size = png_ptr->push_length; + png_ptr->mode |= PNG_HAVE_IDAT; + png_ptr->process_mode = PNG_READ_IDAT_MODE; + png_push_have_info(png_ptr, info_ptr); + png_ptr->zstream.avail_out = (uInt)png_ptr->irowbytes; + png_ptr->zstream.next_out = png_ptr->row_buf; + return; + } + +#if defined(PNG_READ_gAMA_SUPPORTED) + else if (!png_memcmp(png_ptr->chunk_name, png_gAMA, 4)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_handle_gAMA(png_ptr, info_ptr, png_ptr->push_length); + } + +#endif +#if defined(PNG_READ_sBIT_SUPPORTED) + else if (!png_memcmp(png_ptr->chunk_name, png_sBIT, 4)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_handle_sBIT(png_ptr, info_ptr, png_ptr->push_length); + } + +#endif +#if defined(PNG_READ_cHRM_SUPPORTED) + else if (!png_memcmp(png_ptr->chunk_name, png_cHRM, 4)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_handle_cHRM(png_ptr, info_ptr, png_ptr->push_length); + } + +#endif +#if defined(PNG_READ_sRGB_SUPPORTED) + else if (!png_memcmp(png_ptr->chunk_name, png_sRGB, 4)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_handle_sRGB(png_ptr, info_ptr, png_ptr->push_length); + } + +#endif +#if defined(PNG_READ_iCCP_SUPPORTED) + else if (!png_memcmp(png_ptr->chunk_name, png_iCCP, 4)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_handle_iCCP(png_ptr, info_ptr, png_ptr->push_length); + } + +#endif +#if defined(PNG_READ_sPLT_SUPPORTED) + else if (!png_memcmp(png_ptr->chunk_name, png_sPLT, 4)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_handle_sPLT(png_ptr, info_ptr, png_ptr->push_length); + } + +#endif +#if defined(PNG_READ_tRNS_SUPPORTED) + else if (!png_memcmp(png_ptr->chunk_name, png_tRNS, 4)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_handle_tRNS(png_ptr, info_ptr, png_ptr->push_length); + } + +#endif +#if defined(PNG_READ_bKGD_SUPPORTED) + else if (!png_memcmp(png_ptr->chunk_name, png_bKGD, 4)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_handle_bKGD(png_ptr, info_ptr, png_ptr->push_length); + } + +#endif +#if defined(PNG_READ_hIST_SUPPORTED) + else if (!png_memcmp(png_ptr->chunk_name, png_hIST, 4)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_handle_hIST(png_ptr, info_ptr, png_ptr->push_length); + } + +#endif +#if defined(PNG_READ_pHYs_SUPPORTED) + else if (!png_memcmp(png_ptr->chunk_name, png_pHYs, 4)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_handle_pHYs(png_ptr, info_ptr, png_ptr->push_length); + } + +#endif +#if defined(PNG_READ_oFFs_SUPPORTED) + else if (!png_memcmp(png_ptr->chunk_name, png_oFFs, 4)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_handle_oFFs(png_ptr, info_ptr, png_ptr->push_length); + } +#endif + +#if defined(PNG_READ_pCAL_SUPPORTED) + else if (!png_memcmp(png_ptr->chunk_name, png_pCAL, 4)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_handle_pCAL(png_ptr, info_ptr, png_ptr->push_length); + } + +#endif +#if defined(PNG_READ_sCAL_SUPPORTED) + else if (!png_memcmp(png_ptr->chunk_name, png_sCAL, 4)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_handle_sCAL(png_ptr, info_ptr, png_ptr->push_length); + } + +#endif +#if defined(PNG_READ_tIME_SUPPORTED) + else if (!png_memcmp(png_ptr->chunk_name, png_tIME, 4)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_handle_tIME(png_ptr, info_ptr, png_ptr->push_length); + } + +#endif +#if defined(PNG_READ_tEXt_SUPPORTED) + else if (!png_memcmp(png_ptr->chunk_name, png_tEXt, 4)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_push_handle_tEXt(png_ptr, info_ptr, png_ptr->push_length); + } + +#endif +#if defined(PNG_READ_zTXt_SUPPORTED) + else if (!png_memcmp(png_ptr->chunk_name, png_zTXt, 4)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_push_handle_zTXt(png_ptr, info_ptr, png_ptr->push_length); + } + +#endif +#if defined(PNG_READ_iTXt_SUPPORTED) + else if (!png_memcmp(png_ptr->chunk_name, png_iTXt, 4)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + + png_push_handle_iTXt(png_ptr, info_ptr, png_ptr->push_length); + } + +#endif + else + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + png_push_handle_unknown(png_ptr, info_ptr, png_ptr->push_length); + } + + png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER; +} + +void /* PRIVATE */ +png_push_crc_skip(png_structp png_ptr, png_uint_32 skip) +{ + png_ptr->process_mode = PNG_SKIP_MODE; + png_ptr->skip_length = skip; +} + +void /* PRIVATE */ +png_push_crc_finish(png_structp png_ptr) +{ + if (png_ptr->skip_length && png_ptr->save_buffer_size) + { + png_size_t save_size; + + if (png_ptr->skip_length < (png_uint_32)png_ptr->save_buffer_size) + save_size = (png_size_t)png_ptr->skip_length; + else + save_size = png_ptr->save_buffer_size; + + png_calculate_crc(png_ptr, png_ptr->save_buffer_ptr, save_size); + + png_ptr->skip_length -= save_size; + png_ptr->buffer_size -= save_size; + png_ptr->save_buffer_size -= save_size; + png_ptr->save_buffer_ptr += save_size; + } + if (png_ptr->skip_length && png_ptr->current_buffer_size) + { + png_size_t save_size; + + if (png_ptr->skip_length < (png_uint_32)png_ptr->current_buffer_size) + save_size = (png_size_t)png_ptr->skip_length; + else + save_size = png_ptr->current_buffer_size; + + png_calculate_crc(png_ptr, png_ptr->current_buffer_ptr, save_size); + + png_ptr->skip_length -= save_size; + png_ptr->buffer_size -= save_size; + png_ptr->current_buffer_size -= save_size; + png_ptr->current_buffer_ptr += save_size; + } + if (!png_ptr->skip_length) + { + if (png_ptr->buffer_size < 4) + { + png_push_save_buffer(png_ptr); + return; + } + + png_crc_finish(png_ptr, 0); + png_ptr->process_mode = PNG_READ_CHUNK_MODE; + } +} + +void PNGAPI +png_push_fill_buffer(png_structp png_ptr, png_bytep buffer, png_size_t length) +{ + png_bytep ptr; + + if (png_ptr == NULL) + return; + + ptr = buffer; + if (png_ptr->save_buffer_size) + { + png_size_t save_size; + + if (length < png_ptr->save_buffer_size) + save_size = length; + else + save_size = png_ptr->save_buffer_size; + + png_memcpy(ptr, png_ptr->save_buffer_ptr, save_size); + length -= save_size; + ptr += save_size; + png_ptr->buffer_size -= save_size; + png_ptr->save_buffer_size -= save_size; + png_ptr->save_buffer_ptr += save_size; + } + if (length && png_ptr->current_buffer_size) + { + png_size_t save_size; + + if (length < png_ptr->current_buffer_size) + save_size = length; + + else + save_size = png_ptr->current_buffer_size; + + png_memcpy(ptr, png_ptr->current_buffer_ptr, save_size); + png_ptr->buffer_size -= save_size; + png_ptr->current_buffer_size -= save_size; + png_ptr->current_buffer_ptr += save_size; + } +} + +void /* PRIVATE */ +png_push_save_buffer(png_structp png_ptr) +{ + if (png_ptr->save_buffer_size) + { + if (png_ptr->save_buffer_ptr != png_ptr->save_buffer) + { + png_size_t i, istop; + png_bytep sp; + png_bytep dp; + + istop = png_ptr->save_buffer_size; + for (i = 0, sp = png_ptr->save_buffer_ptr, dp = png_ptr->save_buffer; + i < istop; i++, sp++, dp++) + { + *dp = *sp; + } + } + } + if (png_ptr->save_buffer_size + png_ptr->current_buffer_size > + png_ptr->save_buffer_max) + { + png_size_t new_max; + png_bytep old_buffer; + + if (png_ptr->save_buffer_size > PNG_SIZE_MAX - + (png_ptr->current_buffer_size + 256)) + { + png_error(png_ptr, "Potential overflow of save_buffer"); + } + + new_max = png_ptr->save_buffer_size + png_ptr->current_buffer_size + 256; + old_buffer = png_ptr->save_buffer; + png_ptr->save_buffer = (png_bytep)png_malloc(png_ptr, + (png_uint_32)new_max); + png_memcpy(png_ptr->save_buffer, old_buffer, png_ptr->save_buffer_size); + png_free(png_ptr, old_buffer); + png_ptr->save_buffer_max = new_max; + } + if (png_ptr->current_buffer_size) + { + png_memcpy(png_ptr->save_buffer + png_ptr->save_buffer_size, + png_ptr->current_buffer_ptr, png_ptr->current_buffer_size); + png_ptr->save_buffer_size += png_ptr->current_buffer_size; + png_ptr->current_buffer_size = 0; + } + png_ptr->save_buffer_ptr = png_ptr->save_buffer; + png_ptr->buffer_size = 0; +} + +void /* PRIVATE */ +png_push_restore_buffer(png_structp png_ptr, png_bytep buffer, + png_size_t buffer_length) +{ + png_ptr->current_buffer = buffer; + png_ptr->current_buffer_size = buffer_length; + png_ptr->buffer_size = buffer_length + png_ptr->save_buffer_size; + png_ptr->current_buffer_ptr = png_ptr->current_buffer; +} + +void /* PRIVATE */ +png_push_read_IDAT(png_structp png_ptr) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_CONST PNG_IDAT; +#endif + if (!(png_ptr->mode & PNG_HAVE_CHUNK_HEADER)) + { + png_byte chunk_length[4]; + + if (png_ptr->buffer_size < 8) + { + png_push_save_buffer(png_ptr); + return; + } + + png_push_fill_buffer(png_ptr, chunk_length, 4); + png_ptr->push_length = png_get_uint_31(png_ptr, chunk_length); + png_reset_crc(png_ptr); + png_crc_read(png_ptr, png_ptr->chunk_name, 4); + png_ptr->mode |= PNG_HAVE_CHUNK_HEADER; + + if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) + { + png_ptr->process_mode = PNG_READ_CHUNK_MODE; + if (!(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED)) + png_error(png_ptr, "Not enough compressed data"); + return; + } + + png_ptr->idat_size = png_ptr->push_length; + } + if (png_ptr->idat_size && png_ptr->save_buffer_size) + { + png_size_t save_size; + + if (png_ptr->idat_size < (png_uint_32)png_ptr->save_buffer_size) + { + save_size = (png_size_t)png_ptr->idat_size; + + /* Check for overflow */ + if ((png_uint_32)save_size != png_ptr->idat_size) + png_error(png_ptr, "save_size overflowed in pngpread"); + } + else + save_size = png_ptr->save_buffer_size; + + png_calculate_crc(png_ptr, png_ptr->save_buffer_ptr, save_size); + + if (!(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED)) + png_process_IDAT_data(png_ptr, png_ptr->save_buffer_ptr, save_size); + + png_ptr->idat_size -= save_size; + png_ptr->buffer_size -= save_size; + png_ptr->save_buffer_size -= save_size; + png_ptr->save_buffer_ptr += save_size; + } + if (png_ptr->idat_size && png_ptr->current_buffer_size) + { + png_size_t save_size; + + if (png_ptr->idat_size < (png_uint_32)png_ptr->current_buffer_size) + { + save_size = (png_size_t)png_ptr->idat_size; + + /* Check for overflow */ + if ((png_uint_32)save_size != png_ptr->idat_size) + png_error(png_ptr, "save_size overflowed in pngpread"); + } + else + save_size = png_ptr->current_buffer_size; + + png_calculate_crc(png_ptr, png_ptr->current_buffer_ptr, save_size); + if (!(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED)) + png_process_IDAT_data(png_ptr, png_ptr->current_buffer_ptr, save_size); + + png_ptr->idat_size -= save_size; + png_ptr->buffer_size -= save_size; + png_ptr->current_buffer_size -= save_size; + png_ptr->current_buffer_ptr += save_size; + } + if (!png_ptr->idat_size) + { + if (png_ptr->buffer_size < 4) + { + png_push_save_buffer(png_ptr); + return; + } + + png_crc_finish(png_ptr, 0); + png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER; + png_ptr->mode |= PNG_AFTER_IDAT; + } +} + +void /* PRIVATE */ +png_process_IDAT_data(png_structp png_ptr, png_bytep buffer, + png_size_t buffer_length) +{ + int ret; + + if ((png_ptr->flags & PNG_FLAG_ZLIB_FINISHED) && buffer_length) + png_error(png_ptr, "Extra compression data"); + + png_ptr->zstream.next_in = buffer; + png_ptr->zstream.avail_in = (uInt)buffer_length; + for (;;) + { + ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH); + if (ret != Z_OK) + { + if (ret == Z_STREAM_END) + { + if (png_ptr->zstream.avail_in) + png_error(png_ptr, "Extra compressed data"); + + if (!(png_ptr->zstream.avail_out)) + { + png_push_process_row(png_ptr); + } + + png_ptr->mode |= PNG_AFTER_IDAT; + png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED; + break; + } + else if (ret == Z_BUF_ERROR) + break; + + else + png_error(png_ptr, "Decompression Error"); + } + if (!(png_ptr->zstream.avail_out)) + { + if (( +#if defined(PNG_READ_INTERLACING_SUPPORTED) + png_ptr->interlaced && png_ptr->pass > 6) || + (!png_ptr->interlaced && +#endif + png_ptr->row_number == png_ptr->num_rows)) + { + if (png_ptr->zstream.avail_in) + png_warning(png_ptr, "Too much data in IDAT chunks"); + png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED; + break; + } + png_push_process_row(png_ptr); + png_ptr->zstream.avail_out = (uInt)png_ptr->irowbytes; + png_ptr->zstream.next_out = png_ptr->row_buf; + } + + else + break; + } +} + +void /* PRIVATE */ +png_push_process_row(png_structp png_ptr) +{ + png_ptr->row_info.color_type = png_ptr->color_type; + png_ptr->row_info.width = png_ptr->iwidth; + png_ptr->row_info.channels = png_ptr->channels; + png_ptr->row_info.bit_depth = png_ptr->bit_depth; + png_ptr->row_info.pixel_depth = png_ptr->pixel_depth; + + png_ptr->row_info.rowbytes = PNG_ROWBYTES(png_ptr->row_info.pixel_depth, + png_ptr->row_info.width); + + png_read_filter_row(png_ptr, &(png_ptr->row_info), + png_ptr->row_buf + 1, png_ptr->prev_row + 1, + (int)(png_ptr->row_buf[0])); + + png_memcpy_check(png_ptr, png_ptr->prev_row, png_ptr->row_buf, + png_ptr->rowbytes + 1); + + if (png_ptr->transformations || (png_ptr->flags&PNG_FLAG_STRIP_ALPHA)) + png_do_read_transformations(png_ptr); + +#if defined(PNG_READ_INTERLACING_SUPPORTED) + /* Blow up interlaced rows to full size */ + if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE)) + { + if (png_ptr->pass < 6) +/* old interface (pre-1.0.9): + png_do_read_interlace(&(png_ptr->row_info), + png_ptr->row_buf + 1, png_ptr->pass, png_ptr->transformations); + */ + png_do_read_interlace(png_ptr); + + switch (png_ptr->pass) + { + case 0: + { + int i; + for (i = 0; i < 8 && png_ptr->pass == 0; i++) + { + png_push_have_row(png_ptr, png_ptr->row_buf + 1); + png_read_push_finish_row(png_ptr); /* Updates png_ptr->pass */ + } + + if (png_ptr->pass == 2) /* Pass 1 might be empty */ + { + for (i = 0; i < 4 && png_ptr->pass == 2; i++) + { + png_push_have_row(png_ptr, png_bytep_NULL); + png_read_push_finish_row(png_ptr); + } + } + + if (png_ptr->pass == 4 && png_ptr->height <= 4) + { + for (i = 0; i < 2 && png_ptr->pass == 4; i++) + { + png_push_have_row(png_ptr, png_bytep_NULL); + png_read_push_finish_row(png_ptr); + } + } + + if (png_ptr->pass == 6 && png_ptr->height <= 4) + { + png_push_have_row(png_ptr, png_bytep_NULL); + png_read_push_finish_row(png_ptr); + } + + break; + } + + case 1: + { + int i; + for (i = 0; i < 8 && png_ptr->pass == 1; i++) + { + png_push_have_row(png_ptr, png_ptr->row_buf + 1); + png_read_push_finish_row(png_ptr); + } + + if (png_ptr->pass == 2) /* Skip top 4 generated rows */ + { + for (i = 0; i < 4 && png_ptr->pass == 2; i++) + { + png_push_have_row(png_ptr, png_bytep_NULL); + png_read_push_finish_row(png_ptr); + } + } + + break; + } + + case 2: + { + int i; + + for (i = 0; i < 4 && png_ptr->pass == 2; i++) + { + png_push_have_row(png_ptr, png_ptr->row_buf + 1); + png_read_push_finish_row(png_ptr); + } + + for (i = 0; i < 4 && png_ptr->pass == 2; i++) + { + png_push_have_row(png_ptr, png_bytep_NULL); + png_read_push_finish_row(png_ptr); + } + + if (png_ptr->pass == 4) /* Pass 3 might be empty */ + { + for (i = 0; i < 2 && png_ptr->pass == 4; i++) + { + png_push_have_row(png_ptr, png_bytep_NULL); + png_read_push_finish_row(png_ptr); + } + } + + break; + } + + case 3: + { + int i; + + for (i = 0; i < 4 && png_ptr->pass == 3; i++) + { + png_push_have_row(png_ptr, png_ptr->row_buf + 1); + png_read_push_finish_row(png_ptr); + } + + if (png_ptr->pass == 4) /* Skip top two generated rows */ + { + for (i = 0; i < 2 && png_ptr->pass == 4; i++) + { + png_push_have_row(png_ptr, png_bytep_NULL); + png_read_push_finish_row(png_ptr); + } + } + + break; + } + + case 4: + { + int i; + + for (i = 0; i < 2 && png_ptr->pass == 4; i++) + { + png_push_have_row(png_ptr, png_ptr->row_buf + 1); + png_read_push_finish_row(png_ptr); + } + + for (i = 0; i < 2 && png_ptr->pass == 4; i++) + { + png_push_have_row(png_ptr, png_bytep_NULL); + png_read_push_finish_row(png_ptr); + } + + if (png_ptr->pass == 6) /* Pass 5 might be empty */ + { + png_push_have_row(png_ptr, png_bytep_NULL); + png_read_push_finish_row(png_ptr); + } + + break; + } + + case 5: + { + int i; + + for (i = 0; i < 2 && png_ptr->pass == 5; i++) + { + png_push_have_row(png_ptr, png_ptr->row_buf + 1); + png_read_push_finish_row(png_ptr); + } + + if (png_ptr->pass == 6) /* Skip top generated row */ + { + png_push_have_row(png_ptr, png_bytep_NULL); + png_read_push_finish_row(png_ptr); + } + + break; + } + case 6: + { + png_push_have_row(png_ptr, png_ptr->row_buf + 1); + png_read_push_finish_row(png_ptr); + + if (png_ptr->pass != 6) + break; + + png_push_have_row(png_ptr, png_bytep_NULL); + png_read_push_finish_row(png_ptr); + } + } + } + else +#endif + { + png_push_have_row(png_ptr, png_ptr->row_buf + 1); + png_read_push_finish_row(png_ptr); + } +} + +void /* PRIVATE */ +png_read_push_finish_row(png_structp png_ptr) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ + + /* Start of interlace block */ + PNG_CONST int FARDATA png_pass_start[] = {0, 4, 0, 2, 0, 1, 0}; + + /* Offset to next interlace block */ + PNG_CONST int FARDATA png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1}; + + /* Start of interlace block in the y direction */ + PNG_CONST int FARDATA png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1}; + + /* Offset to next interlace block in the y direction */ + PNG_CONST int FARDATA png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2}; + + /* Height of interlace block. This is not currently used - if you need + * it, uncomment it here and in png.h + PNG_CONST int FARDATA png_pass_height[] = {8, 8, 4, 4, 2, 2, 1}; + */ +#endif + + png_ptr->row_number++; + if (png_ptr->row_number < png_ptr->num_rows) + return; + +#if defined(PNG_READ_INTERLACING_SUPPORTED) + if (png_ptr->interlaced) + { + png_ptr->row_number = 0; + png_memset_check(png_ptr, png_ptr->prev_row, 0, + png_ptr->rowbytes + 1); + do + { + png_ptr->pass++; + if ((png_ptr->pass == 1 && png_ptr->width < 5) || + (png_ptr->pass == 3 && png_ptr->width < 3) || + (png_ptr->pass == 5 && png_ptr->width < 2)) + png_ptr->pass++; + + if (png_ptr->pass > 7) + png_ptr->pass--; + + if (png_ptr->pass >= 7) + break; + + png_ptr->iwidth = (png_ptr->width + + png_pass_inc[png_ptr->pass] - 1 - + png_pass_start[png_ptr->pass]) / + png_pass_inc[png_ptr->pass]; + + png_ptr->irowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, + png_ptr->iwidth) + 1; + + if (png_ptr->transformations & PNG_INTERLACE) + break; + + png_ptr->num_rows = (png_ptr->height + + png_pass_yinc[png_ptr->pass] - 1 - + png_pass_ystart[png_ptr->pass]) / + png_pass_yinc[png_ptr->pass]; + + } while (png_ptr->iwidth == 0 || png_ptr->num_rows == 0); + } +#endif /* PNG_READ_INTERLACING_SUPPORTED */ +} + +#if defined(PNG_READ_tEXt_SUPPORTED) +void /* PRIVATE */ +png_push_handle_tEXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 + length) +{ + if (!(png_ptr->mode & PNG_HAVE_IHDR) || (png_ptr->mode & PNG_HAVE_IEND)) + { + png_error(png_ptr, "Out of place tEXt"); + info_ptr = info_ptr; /* To quiet some compiler warnings */ + } + +#ifdef PNG_MAX_MALLOC_64K + png_ptr->skip_length = 0; /* This may not be necessary */ + + if (length > (png_uint_32)65535L) /* Can't hold entire string in memory */ + { + png_warning(png_ptr, "tEXt chunk too large to fit in memory"); + png_ptr->skip_length = length - (png_uint_32)65535L; + length = (png_uint_32)65535L; + } +#endif + + png_ptr->current_text = (png_charp)png_malloc(png_ptr, + (png_uint_32)(length + 1)); + png_ptr->current_text[length] = '\0'; + png_ptr->current_text_ptr = png_ptr->current_text; + png_ptr->current_text_size = (png_size_t)length; + png_ptr->current_text_left = (png_size_t)length; + png_ptr->process_mode = PNG_READ_tEXt_MODE; +} + +void /* PRIVATE */ +png_push_read_tEXt(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr->buffer_size && png_ptr->current_text_left) + { + png_size_t text_size; + + if (png_ptr->buffer_size < png_ptr->current_text_left) + text_size = png_ptr->buffer_size; + + else + text_size = png_ptr->current_text_left; + + png_crc_read(png_ptr, (png_bytep)png_ptr->current_text_ptr, text_size); + png_ptr->current_text_left -= text_size; + png_ptr->current_text_ptr += text_size; + } + if (!(png_ptr->current_text_left)) + { + png_textp text_ptr; + png_charp text; + png_charp key; + int ret; + + if (png_ptr->buffer_size < 4) + { + png_push_save_buffer(png_ptr); + return; + } + + png_push_crc_finish(png_ptr); + +#if defined(PNG_MAX_MALLOC_64K) + if (png_ptr->skip_length) + return; +#endif + + key = png_ptr->current_text; + + for (text = key; *text; text++) + /* Empty loop */ ; + + if (text < key + png_ptr->current_text_size) + text++; + + text_ptr = (png_textp)png_malloc(png_ptr, + (png_uint_32)png_sizeof(png_text)); + text_ptr->compression = PNG_TEXT_COMPRESSION_NONE; + text_ptr->key = key; +#ifdef PNG_iTXt_SUPPORTED + text_ptr->lang = NULL; + text_ptr->lang_key = NULL; +#endif + text_ptr->text = text; + + ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1); + + png_free(png_ptr, key); + png_free(png_ptr, text_ptr); + png_ptr->current_text = NULL; + + if (ret) + png_warning(png_ptr, "Insufficient memory to store text chunk."); + } +} +#endif + +#if defined(PNG_READ_zTXt_SUPPORTED) +void /* PRIVATE */ +png_push_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 + length) +{ + if (!(png_ptr->mode & PNG_HAVE_IHDR) || (png_ptr->mode & PNG_HAVE_IEND)) + { + png_error(png_ptr, "Out of place zTXt"); + info_ptr = info_ptr; /* To quiet some compiler warnings */ + } + +#ifdef PNG_MAX_MALLOC_64K + /* We can't handle zTXt chunks > 64K, since we don't have enough space + * to be able to store the uncompressed data. Actually, the threshold + * is probably around 32K, but it isn't as definite as 64K is. + */ + if (length > (png_uint_32)65535L) + { + png_warning(png_ptr, "zTXt chunk too large to fit in memory"); + png_push_crc_skip(png_ptr, length); + return; + } +#endif + + png_ptr->current_text = (png_charp)png_malloc(png_ptr, + (png_uint_32)(length + 1)); + png_ptr->current_text[length] = '\0'; + png_ptr->current_text_ptr = png_ptr->current_text; + png_ptr->current_text_size = (png_size_t)length; + png_ptr->current_text_left = (png_size_t)length; + png_ptr->process_mode = PNG_READ_zTXt_MODE; +} + +void /* PRIVATE */ +png_push_read_zTXt(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr->buffer_size && png_ptr->current_text_left) + { + png_size_t text_size; + + if (png_ptr->buffer_size < (png_uint_32)png_ptr->current_text_left) + text_size = png_ptr->buffer_size; + + else + text_size = png_ptr->current_text_left; + + png_crc_read(png_ptr, (png_bytep)png_ptr->current_text_ptr, text_size); + png_ptr->current_text_left -= text_size; + png_ptr->current_text_ptr += text_size; + } + if (!(png_ptr->current_text_left)) + { + png_textp text_ptr; + png_charp text; + png_charp key; + int ret; + png_size_t text_size, key_size; + + if (png_ptr->buffer_size < 4) + { + png_push_save_buffer(png_ptr); + return; + } + + png_push_crc_finish(png_ptr); + + key = png_ptr->current_text; + + for (text = key; *text; text++) + /* Empty loop */ ; + + /* zTXt can't have zero text */ + if (text >= key + png_ptr->current_text_size) + { + png_ptr->current_text = NULL; + png_free(png_ptr, key); + return; + } + + text++; + + if (*text != PNG_TEXT_COMPRESSION_zTXt) /* Check compression byte */ + { + png_ptr->current_text = NULL; + png_free(png_ptr, key); + return; + } + + text++; + + png_ptr->zstream.next_in = (png_bytep )text; + png_ptr->zstream.avail_in = (uInt)(png_ptr->current_text_size - + (text - key)); + png_ptr->zstream.next_out = png_ptr->zbuf; + png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; + + key_size = text - key; + text_size = 0; + text = NULL; + ret = Z_STREAM_END; + + while (png_ptr->zstream.avail_in) + { + ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH); + if (ret != Z_OK && ret != Z_STREAM_END) + { + inflateReset(&png_ptr->zstream); + png_ptr->zstream.avail_in = 0; + png_ptr->current_text = NULL; + png_free(png_ptr, key); + png_free(png_ptr, text); + return; + } + if (!(png_ptr->zstream.avail_out) || ret == Z_STREAM_END) + { + if (text == NULL) + { + text = (png_charp)png_malloc(png_ptr, + (png_uint_32)(png_ptr->zbuf_size + - png_ptr->zstream.avail_out + key_size + 1)); + + png_memcpy(text + key_size, png_ptr->zbuf, + png_ptr->zbuf_size - png_ptr->zstream.avail_out); + + png_memcpy(text, key, key_size); + + text_size = key_size + png_ptr->zbuf_size - + png_ptr->zstream.avail_out; + + *(text + text_size) = '\0'; + } + else + { + png_charp tmp; + + tmp = text; + text = (png_charp)png_malloc(png_ptr, text_size + + (png_uint_32)(png_ptr->zbuf_size + - png_ptr->zstream.avail_out + 1)); + + png_memcpy(text, tmp, text_size); + png_free(png_ptr, tmp); + + png_memcpy(text + text_size, png_ptr->zbuf, + png_ptr->zbuf_size - png_ptr->zstream.avail_out); + + text_size += png_ptr->zbuf_size - png_ptr->zstream.avail_out; + *(text + text_size) = '\0'; + } + if (ret != Z_STREAM_END) + { + png_ptr->zstream.next_out = png_ptr->zbuf; + png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; + } + } + else + { + break; + } + + if (ret == Z_STREAM_END) + break; + } + + inflateReset(&png_ptr->zstream); + png_ptr->zstream.avail_in = 0; + + if (ret != Z_STREAM_END) + { + png_ptr->current_text = NULL; + png_free(png_ptr, key); + png_free(png_ptr, text); + return; + } + + png_ptr->current_text = NULL; + png_free(png_ptr, key); + key = text; + text += key_size; + + text_ptr = (png_textp)png_malloc(png_ptr, + (png_uint_32)png_sizeof(png_text)); + text_ptr->compression = PNG_TEXT_COMPRESSION_zTXt; + text_ptr->key = key; +#ifdef PNG_iTXt_SUPPORTED + text_ptr->lang = NULL; + text_ptr->lang_key = NULL; +#endif + text_ptr->text = text; + + ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1); + + png_free(png_ptr, key); + png_free(png_ptr, text_ptr); + + if (ret) + png_warning(png_ptr, "Insufficient memory to store text chunk."); + } +} +#endif + +#if defined(PNG_READ_iTXt_SUPPORTED) +void /* PRIVATE */ +png_push_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 + length) +{ + if (!(png_ptr->mode & PNG_HAVE_IHDR) || (png_ptr->mode & PNG_HAVE_IEND)) + { + png_error(png_ptr, "Out of place iTXt"); + info_ptr = info_ptr; /* To quiet some compiler warnings */ + } + +#ifdef PNG_MAX_MALLOC_64K + png_ptr->skip_length = 0; /* This may not be necessary */ + + if (length > (png_uint_32)65535L) /* Can't hold entire string in memory */ + { + png_warning(png_ptr, "iTXt chunk too large to fit in memory"); + png_ptr->skip_length = length - (png_uint_32)65535L; + length = (png_uint_32)65535L; + } +#endif + + png_ptr->current_text = (png_charp)png_malloc(png_ptr, + (png_uint_32)(length + 1)); + png_ptr->current_text[length] = '\0'; + png_ptr->current_text_ptr = png_ptr->current_text; + png_ptr->current_text_size = (png_size_t)length; + png_ptr->current_text_left = (png_size_t)length; + png_ptr->process_mode = PNG_READ_iTXt_MODE; +} + +void /* PRIVATE */ +png_push_read_iTXt(png_structp png_ptr, png_infop info_ptr) +{ + + if (png_ptr->buffer_size && png_ptr->current_text_left) + { + png_size_t text_size; + + if (png_ptr->buffer_size < png_ptr->current_text_left) + text_size = png_ptr->buffer_size; + + else + text_size = png_ptr->current_text_left; + + png_crc_read(png_ptr, (png_bytep)png_ptr->current_text_ptr, text_size); + png_ptr->current_text_left -= text_size; + png_ptr->current_text_ptr += text_size; + } + if (!(png_ptr->current_text_left)) + { + png_textp text_ptr; + png_charp key; + int comp_flag; + png_charp lang; + png_charp lang_key; + png_charp text; + int ret; + + if (png_ptr->buffer_size < 4) + { + png_push_save_buffer(png_ptr); + return; + } + + png_push_crc_finish(png_ptr); + +#if defined(PNG_MAX_MALLOC_64K) + if (png_ptr->skip_length) + return; +#endif + + key = png_ptr->current_text; + + for (lang = key; *lang; lang++) + /* Empty loop */ ; + + if (lang < key + png_ptr->current_text_size - 3) + lang++; + + comp_flag = *lang++; + lang++; /* Skip comp_type, always zero */ + + for (lang_key = lang; *lang_key; lang_key++) + /* Empty loop */ ; + + lang_key++; /* Skip NUL separator */ + + text=lang_key; + + if (lang_key < key + png_ptr->current_text_size - 1) + { + for (; *text; text++) + /* Empty loop */ ; + } + + if (text < key + png_ptr->current_text_size) + text++; + + text_ptr = (png_textp)png_malloc(png_ptr, + (png_uint_32)png_sizeof(png_text)); + + text_ptr->compression = comp_flag + 2; + text_ptr->key = key; + text_ptr->lang = lang; + text_ptr->lang_key = lang_key; + text_ptr->text = text; + text_ptr->text_length = 0; + text_ptr->itxt_length = png_strlen(text); + + ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1); + + png_ptr->current_text = NULL; + + png_free(png_ptr, text_ptr); + if (ret) + png_warning(png_ptr, "Insufficient memory to store iTXt chunk."); + } +} +#endif + +/* This function is called when we haven't found a handler for this + * chunk. If there isn't a problem with the chunk itself (ie a bad chunk + * name or a critical chunk), the chunk is (currently) silently ignored. + */ +void /* PRIVATE */ +png_push_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 + length) +{ + png_uint_32 skip = 0; + + if (!(png_ptr->chunk_name[0] & 0x20)) + { +#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) + if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name) != + PNG_HANDLE_CHUNK_ALWAYS +#if defined(PNG_READ_USER_CHUNKS_SUPPORTED) + && png_ptr->read_user_chunk_fn == NULL +#endif + ) +#endif + png_chunk_error(png_ptr, "unknown critical chunk"); + + info_ptr = info_ptr; /* To quiet some compiler warnings */ + } + +#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) + if (png_ptr->flags & PNG_FLAG_KEEP_UNKNOWN_CHUNKS) + { +#ifdef PNG_MAX_MALLOC_64K + if (length > (png_uint_32)65535L) + { + png_warning(png_ptr, "unknown chunk too large to fit in memory"); + skip = length - (png_uint_32)65535L; + length = (png_uint_32)65535L; + } +#endif + png_memcpy((png_charp)png_ptr->unknown_chunk.name, + (png_charp)png_ptr->chunk_name, + png_sizeof(png_ptr->unknown_chunk.name)); + png_ptr->unknown_chunk.name[png_sizeof(png_ptr->unknown_chunk.name) - 1] + = '\0'; + + png_ptr->unknown_chunk.size = (png_size_t)length; + + if (length == 0) + png_ptr->unknown_chunk.data = NULL; + + else + { + png_ptr->unknown_chunk.data = (png_bytep)png_malloc(png_ptr, + (png_uint_32)length); + png_crc_read(png_ptr, (png_bytep)png_ptr->unknown_chunk.data, length); + } + +#if defined(PNG_READ_USER_CHUNKS_SUPPORTED) + if (png_ptr->read_user_chunk_fn != NULL) + { + /* Callback to user unknown chunk handler */ + int ret; + ret = (*(png_ptr->read_user_chunk_fn)) + (png_ptr, &png_ptr->unknown_chunk); + + if (ret < 0) + png_chunk_error(png_ptr, "error in user chunk"); + + if (ret == 0) + { + if (!(png_ptr->chunk_name[0] & 0x20)) + if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name) != + PNG_HANDLE_CHUNK_ALWAYS) + png_chunk_error(png_ptr, "unknown critical chunk"); + png_set_unknown_chunks(png_ptr, info_ptr, + &png_ptr->unknown_chunk, 1); + } + } + + else +#endif + png_set_unknown_chunks(png_ptr, info_ptr, &png_ptr->unknown_chunk, 1); + png_free(png_ptr, png_ptr->unknown_chunk.data); + png_ptr->unknown_chunk.data = NULL; + } + + else +#endif + skip=length; + png_push_crc_skip(png_ptr, skip); +} + +void /* PRIVATE */ +png_push_have_info(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr->info_fn != NULL) + (*(png_ptr->info_fn))(png_ptr, info_ptr); +} + +void /* PRIVATE */ +png_push_have_end(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr->end_fn != NULL) + (*(png_ptr->end_fn))(png_ptr, info_ptr); +} + +void /* PRIVATE */ +png_push_have_row(png_structp png_ptr, png_bytep row) +{ + if (png_ptr->row_fn != NULL) + (*(png_ptr->row_fn))(png_ptr, row, png_ptr->row_number, + (int)png_ptr->pass); +} + +void PNGAPI +png_progressive_combine_row (png_structp png_ptr, + png_bytep old_row, png_bytep new_row) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_CONST int FARDATA png_pass_dsp_mask[7] = + {0xff, 0x0f, 0xff, 0x33, 0xff, 0x55, 0xff}; +#endif + if (png_ptr == NULL) + return; + + if (new_row != NULL) /* new_row must == png_ptr->row_buf here. */ + png_combine_row(png_ptr, old_row, png_pass_dsp_mask[png_ptr->pass]); +} + +void PNGAPI +png_set_progressive_read_fn(png_structp png_ptr, png_voidp progressive_ptr, + png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn, + png_progressive_end_ptr end_fn) +{ + if (png_ptr == NULL) + return; + + png_ptr->info_fn = info_fn; + png_ptr->row_fn = row_fn; + png_ptr->end_fn = end_fn; + + png_set_read_fn(png_ptr, progressive_ptr, png_push_fill_buffer); +} + +png_voidp PNGAPI +png_get_progressive_ptr(png_structp png_ptr) +{ + if (png_ptr == NULL) + return (NULL); + + return png_ptr->io_ptr; +} +#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ diff --git a/Libraries/libpng/pngread.cpp b/Libraries/libpng/pngread.cpp new file mode 100644 index 0000000..370ecba --- /dev/null +++ b/Libraries/libpng/pngread.cpp @@ -0,0 +1,1470 @@ + +/* pngread.c - read a PNG file + * + * Last changed in libpng 1.2.37 [June 4, 2009] + * For conditions of distribution and use, see copyright notice in png.h + * Copyright (c) 1998-2009 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This file contains routines that an application calls directly to + * read a PNG file or stream. + */ + +#define PNG_INTERNAL +#include "png.h" +#if defined(PNG_READ_SUPPORTED) + +/* Create a PNG structure for reading, and allocate any memory needed. */ +png_structp PNGAPI +png_create_read_struct(png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn) +{ + +#ifdef PNG_USER_MEM_SUPPORTED + return (png_create_read_struct_2(user_png_ver, error_ptr, error_fn, + warn_fn, png_voidp_NULL, png_malloc_ptr_NULL, png_free_ptr_NULL)); +} + +/* Alternate create PNG structure for reading, and allocate any memory needed. */ +png_structp PNGAPI +png_create_read_struct_2(png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, + png_malloc_ptr malloc_fn, png_free_ptr free_fn) +{ +#endif /* PNG_USER_MEM_SUPPORTED */ + +#ifdef PNG_SETJMP_SUPPORTED + volatile +#endif + png_structp png_ptr; + +#ifdef PNG_SETJMP_SUPPORTED +#ifdef USE_FAR_KEYWORD + jmp_buf jmpbuf; +#endif +#endif + + int i; + + png_debug(1, "in png_create_read_struct"); +#ifdef PNG_USER_MEM_SUPPORTED + png_ptr = (png_structp)png_create_struct_2(PNG_STRUCT_PNG, + (png_malloc_ptr)malloc_fn, (png_voidp)mem_ptr); +#else + png_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG); +#endif + if (png_ptr == NULL) + return (NULL); + + /* Added at libpng-1.2.6 */ +#ifdef PNG_SET_USER_LIMITS_SUPPORTED + png_ptr->user_width_max=PNG_USER_WIDTH_MAX; + png_ptr->user_height_max=PNG_USER_HEIGHT_MAX; +#endif + +#ifdef PNG_SETJMP_SUPPORTED +#ifdef USE_FAR_KEYWORD + if (setjmp(jmpbuf)) +#else + if (setjmp(png_ptr->jmpbuf)) +#endif + { + png_free(png_ptr, png_ptr->zbuf); + png_ptr->zbuf = NULL; +#ifdef PNG_USER_MEM_SUPPORTED + png_destroy_struct_2((png_voidp)png_ptr, + (png_free_ptr)free_fn, (png_voidp)mem_ptr); +#else + png_destroy_struct((png_voidp)png_ptr); +#endif + return (NULL); + } +#ifdef USE_FAR_KEYWORD + png_memcpy(png_ptr->jmpbuf, jmpbuf, png_sizeof(jmp_buf)); +#endif +#endif + +#ifdef PNG_USER_MEM_SUPPORTED + png_set_mem_fn(png_ptr, mem_ptr, malloc_fn, free_fn); +#endif + + png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn); + + if (user_png_ver) + { + i = 0; + do + { + if (user_png_ver[i] != png_libpng_ver[i]) + png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH; + } while (png_libpng_ver[i++]); + } + else + png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH; + + + if (png_ptr->flags & PNG_FLAG_LIBRARY_MISMATCH) + { + /* Libpng 0.90 and later are binary incompatible with libpng 0.89, so + * we must recompile any applications that use any older library version. + * For versions after libpng 1.0, we will be compatible, so we need + * only check the first digit. + */ + if (user_png_ver == NULL || user_png_ver[0] != png_libpng_ver[0] || + (user_png_ver[0] == '1' && user_png_ver[2] != png_libpng_ver[2]) || + (user_png_ver[0] == '0' && user_png_ver[2] < '9')) + { +#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE) + char msg[80]; + if (user_png_ver) + { + png_snprintf(msg, 80, + "Application was compiled with png.h from libpng-%.20s", + user_png_ver); + png_warning(png_ptr, msg); + } + png_snprintf(msg, 80, + "Application is running with png.c from libpng-%.20s", + png_libpng_ver); + png_warning(png_ptr, msg); +#endif +#ifdef PNG_ERROR_NUMBERS_SUPPORTED + png_ptr->flags = 0; +#endif + png_error(png_ptr, + "Incompatible libpng version in application and library"); + } + } + + /* Initialize zbuf - compression buffer */ + png_ptr->zbuf_size = PNG_ZBUF_SIZE; + png_ptr->zbuf = (png_bytep)png_malloc(png_ptr, + (png_uint_32)png_ptr->zbuf_size); + png_ptr->zstream.zalloc = png_zalloc; + png_ptr->zstream.zfree = png_zfree; + png_ptr->zstream.opaque = (voidpf)png_ptr; + + switch (inflateInit(&png_ptr->zstream)) + { + case Z_OK: /* Do nothing */ break; + case Z_MEM_ERROR: + case Z_STREAM_ERROR: png_error(png_ptr, "zlib memory error"); break; + case Z_VERSION_ERROR: png_error(png_ptr, "zlib version error"); break; + default: png_error(png_ptr, "Unknown zlib error"); + } + + png_ptr->zstream.next_out = png_ptr->zbuf; + png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; + + png_set_read_fn(png_ptr, png_voidp_NULL, png_rw_ptr_NULL); + +#ifdef PNG_SETJMP_SUPPORTED +/* Applications that neglect to set up their own setjmp() and then encounter + a png_error() will longjmp here. Since the jmpbuf is then meaningless we + abort instead of returning. */ +#ifdef USE_FAR_KEYWORD + if (setjmp(jmpbuf)) + PNG_ABORT(); + png_memcpy(png_ptr->jmpbuf, jmpbuf, png_sizeof(jmp_buf)); +#else + if (setjmp(png_ptr->jmpbuf)) + PNG_ABORT(); +#endif +#endif + return (png_ptr); +} + +#if defined(PNG_1_0_X) || defined(PNG_1_2_X) +/* Initialize PNG structure for reading, and allocate any memory needed. + This interface is deprecated in favour of the png_create_read_struct(), + and it will disappear as of libpng-1.3.0. */ +#undef png_read_init +void PNGAPI +png_read_init(png_structp png_ptr) +{ + /* We only come here via pre-1.0.7-compiled applications */ + png_read_init_2(png_ptr, "1.0.6 or earlier", 0, 0); +} + +void PNGAPI +png_read_init_2(png_structp png_ptr, png_const_charp user_png_ver, + png_size_t png_struct_size, png_size_t png_info_size) +{ + /* We only come here via pre-1.0.12-compiled applications */ + if (png_ptr == NULL) + return; +#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE) + if (png_sizeof(png_struct) > png_struct_size || + png_sizeof(png_info) > png_info_size) + { + char msg[80]; + png_ptr->warning_fn = NULL; + if (user_png_ver) + { + png_snprintf(msg, 80, + "Application was compiled with png.h from libpng-%.20s", + user_png_ver); + png_warning(png_ptr, msg); + } + png_snprintf(msg, 80, + "Application is running with png.c from libpng-%.20s", + png_libpng_ver); + png_warning(png_ptr, msg); + } +#endif + if (png_sizeof(png_struct) > png_struct_size) + { + png_ptr->error_fn = NULL; +#ifdef PNG_ERROR_NUMBERS_SUPPORTED + png_ptr->flags = 0; +#endif + png_error(png_ptr, + "The png struct allocated by the application for reading is too small."); + } + if (png_sizeof(png_info) > png_info_size) + { + png_ptr->error_fn = NULL; +#ifdef PNG_ERROR_NUMBERS_SUPPORTED + png_ptr->flags = 0; +#endif + png_error(png_ptr, + "The info struct allocated by application for reading is too small."); + } + png_read_init_3(&png_ptr, user_png_ver, png_struct_size); +} +#endif /* PNG_1_0_X || PNG_1_2_X */ + +void PNGAPI +png_read_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver, + png_size_t png_struct_size) +{ +#ifdef PNG_SETJMP_SUPPORTED + jmp_buf tmp_jmp; /* to save current jump buffer */ +#endif + + int i = 0; + + png_structp png_ptr=*ptr_ptr; + + if (png_ptr == NULL) + return; + + do + { + if (user_png_ver[i] != png_libpng_ver[i]) + { +#ifdef PNG_LEGACY_SUPPORTED + png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH; +#else + png_ptr->warning_fn = NULL; + png_warning(png_ptr, + "Application uses deprecated png_read_init() and should be recompiled."); + break; +#endif + } + } while (png_libpng_ver[i++]); + + png_debug(1, "in png_read_init_3"); + +#ifdef PNG_SETJMP_SUPPORTED + /* Save jump buffer and error functions */ + png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof(jmp_buf)); +#endif + + if (png_sizeof(png_struct) > png_struct_size) + { + png_destroy_struct(png_ptr); + *ptr_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG); + png_ptr = *ptr_ptr; + } + + /* Reset all variables to 0 */ + png_memset(png_ptr, 0, png_sizeof(png_struct)); + +#ifdef PNG_SETJMP_SUPPORTED + /* Restore jump buffer */ + png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof(jmp_buf)); +#endif + + /* Added at libpng-1.2.6 */ +#ifdef PNG_SET_USER_LIMITS_SUPPORTED + png_ptr->user_width_max=PNG_USER_WIDTH_MAX; + png_ptr->user_height_max=PNG_USER_HEIGHT_MAX; +#endif + + /* Initialize zbuf - compression buffer */ + png_ptr->zbuf_size = PNG_ZBUF_SIZE; + png_ptr->zbuf = (png_bytep)png_malloc(png_ptr, + (png_uint_32)png_ptr->zbuf_size); + png_ptr->zstream.zalloc = png_zalloc; + png_ptr->zstream.zfree = png_zfree; + png_ptr->zstream.opaque = (voidpf)png_ptr; + + switch (inflateInit(&png_ptr->zstream)) + { + case Z_OK: /* Do nothing */ break; + case Z_MEM_ERROR: + case Z_STREAM_ERROR: png_error(png_ptr, "zlib memory"); break; + case Z_VERSION_ERROR: png_error(png_ptr, "zlib version"); break; + default: png_error(png_ptr, "Unknown zlib error"); + } + + png_ptr->zstream.next_out = png_ptr->zbuf; + png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; + + png_set_read_fn(png_ptr, png_voidp_NULL, png_rw_ptr_NULL); +} + +#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED +/* Read the information before the actual image data. This has been + * changed in v0.90 to allow reading a file that already has the magic + * bytes read from the stream. You can tell libpng how many bytes have + * been read from the beginning of the stream (up to the maximum of 8) + * via png_set_sig_bytes(), and we will only check the remaining bytes + * here. The application can then have access to the signature bytes we + * read if it is determined that this isn't a valid PNG file. + */ +void PNGAPI +png_read_info(png_structp png_ptr, png_infop info_ptr) +{ + if (png_ptr == NULL || info_ptr == NULL) + return; + png_debug(1, "in png_read_info"); + /* If we haven't checked all of the PNG signature bytes, do so now. */ + if (png_ptr->sig_bytes < 8) + { + png_size_t num_checked = png_ptr->sig_bytes, + num_to_check = 8 - num_checked; + + png_read_data(png_ptr, &(info_ptr->signature[num_checked]), num_to_check); + png_ptr->sig_bytes = 8; + + if (png_sig_cmp(info_ptr->signature, num_checked, num_to_check)) + { + if (num_checked < 4 && + png_sig_cmp(info_ptr->signature, num_checked, num_to_check - 4)) + png_error(png_ptr, "Not a PNG file"); + else + png_error(png_ptr, "PNG file corrupted by ASCII conversion"); + } + if (num_checked < 3) + png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE; + } + + for (;;) + { +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_CONST PNG_IHDR; + PNG_CONST PNG_IDAT; + PNG_CONST PNG_IEND; + PNG_CONST PNG_PLTE; +#if defined(PNG_READ_bKGD_SUPPORTED) + PNG_CONST PNG_bKGD; +#endif +#if defined(PNG_READ_cHRM_SUPPORTED) + PNG_CONST PNG_cHRM; +#endif +#if defined(PNG_READ_gAMA_SUPPORTED) + PNG_CONST PNG_gAMA; +#endif +#if defined(PNG_READ_hIST_SUPPORTED) + PNG_CONST PNG_hIST; +#endif +#if defined(PNG_READ_iCCP_SUPPORTED) + PNG_CONST PNG_iCCP; +#endif +#if defined(PNG_READ_iTXt_SUPPORTED) + PNG_CONST PNG_iTXt; +#endif +#if defined(PNG_READ_oFFs_SUPPORTED) + PNG_CONST PNG_oFFs; +#endif +#if defined(PNG_READ_pCAL_SUPPORTED) + PNG_CONST PNG_pCAL; +#endif +#if defined(PNG_READ_pHYs_SUPPORTED) + PNG_CONST PNG_pHYs; +#endif +#if defined(PNG_READ_sBIT_SUPPORTED) + PNG_CONST PNG_sBIT; +#endif +#if defined(PNG_READ_sCAL_SUPPORTED) + PNG_CONST PNG_sCAL; +#endif +#if defined(PNG_READ_sPLT_SUPPORTED) + PNG_CONST PNG_sPLT; +#endif +#if defined(PNG_READ_sRGB_SUPPORTED) + PNG_CONST PNG_sRGB; +#endif +#if defined(PNG_READ_tEXt_SUPPORTED) + PNG_CONST PNG_tEXt; +#endif +#if defined(PNG_READ_tIME_SUPPORTED) + PNG_CONST PNG_tIME; +#endif +#if defined(PNG_READ_tRNS_SUPPORTED) + PNG_CONST PNG_tRNS; +#endif +#if defined(PNG_READ_zTXt_SUPPORTED) + PNG_CONST PNG_zTXt; +#endif +#endif /* PNG_USE_LOCAL_ARRAYS */ + png_uint_32 length = png_read_chunk_header(png_ptr); + PNG_CONST png_bytep chunk_name = png_ptr->chunk_name; + + /* This should be a binary subdivision search or a hash for + * matching the chunk name rather than a linear search. + */ + if (!png_memcmp(chunk_name, png_IDAT, 4)) + if (png_ptr->mode & PNG_AFTER_IDAT) + png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT; + + if (!png_memcmp(chunk_name, png_IHDR, 4)) + png_handle_IHDR(png_ptr, info_ptr, length); + else if (!png_memcmp(chunk_name, png_IEND, 4)) + png_handle_IEND(png_ptr, info_ptr, length); +#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED + else if (png_handle_as_unknown(png_ptr, chunk_name)) + { + if (!png_memcmp(chunk_name, png_IDAT, 4)) + png_ptr->mode |= PNG_HAVE_IDAT; + png_handle_unknown(png_ptr, info_ptr, length); + if (!png_memcmp(chunk_name, png_PLTE, 4)) + png_ptr->mode |= PNG_HAVE_PLTE; + else if (!png_memcmp(chunk_name, png_IDAT, 4)) + { + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before IDAT"); + else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && + !(png_ptr->mode & PNG_HAVE_PLTE)) + png_error(png_ptr, "Missing PLTE before IDAT"); + break; + } + } +#endif + else if (!png_memcmp(chunk_name, png_PLTE, 4)) + png_handle_PLTE(png_ptr, info_ptr, length); + else if (!png_memcmp(chunk_name, png_IDAT, 4)) + { + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before IDAT"); + else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && + !(png_ptr->mode & PNG_HAVE_PLTE)) + png_error(png_ptr, "Missing PLTE before IDAT"); + + png_ptr->idat_size = length; + png_ptr->mode |= PNG_HAVE_IDAT; + break; + } +#if defined(PNG_READ_bKGD_SUPPORTED) + else if (!png_memcmp(chunk_name, png_bKGD, 4)) + png_handle_bKGD(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_cHRM_SUPPORTED) + else if (!png_memcmp(chunk_name, png_cHRM, 4)) + png_handle_cHRM(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_gAMA_SUPPORTED) + else if (!png_memcmp(chunk_name, png_gAMA, 4)) + png_handle_gAMA(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_hIST_SUPPORTED) + else if (!png_memcmp(chunk_name, png_hIST, 4)) + png_handle_hIST(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_oFFs_SUPPORTED) + else if (!png_memcmp(chunk_name, png_oFFs, 4)) + png_handle_oFFs(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_pCAL_SUPPORTED) + else if (!png_memcmp(chunk_name, png_pCAL, 4)) + png_handle_pCAL(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_sCAL_SUPPORTED) + else if (!png_memcmp(chunk_name, png_sCAL, 4)) + png_handle_sCAL(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_pHYs_SUPPORTED) + else if (!png_memcmp(chunk_name, png_pHYs, 4)) + png_handle_pHYs(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_sBIT_SUPPORTED) + else if (!png_memcmp(chunk_name, png_sBIT, 4)) + png_handle_sBIT(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_sRGB_SUPPORTED) + else if (!png_memcmp(chunk_name, png_sRGB, 4)) + png_handle_sRGB(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_iCCP_SUPPORTED) + else if (!png_memcmp(chunk_name, png_iCCP, 4)) + png_handle_iCCP(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_sPLT_SUPPORTED) + else if (!png_memcmp(chunk_name, png_sPLT, 4)) + png_handle_sPLT(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_tEXt_SUPPORTED) + else if (!png_memcmp(chunk_name, png_tEXt, 4)) + png_handle_tEXt(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_tIME_SUPPORTED) + else if (!png_memcmp(chunk_name, png_tIME, 4)) + png_handle_tIME(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_tRNS_SUPPORTED) + else if (!png_memcmp(chunk_name, png_tRNS, 4)) + png_handle_tRNS(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_zTXt_SUPPORTED) + else if (!png_memcmp(chunk_name, png_zTXt, 4)) + png_handle_zTXt(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_iTXt_SUPPORTED) + else if (!png_memcmp(chunk_name, png_iTXt, 4)) + png_handle_iTXt(png_ptr, info_ptr, length); +#endif + else + png_handle_unknown(png_ptr, info_ptr, length); + } +} +#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */ + +/* Optional call to update the users info_ptr structure */ +void PNGAPI +png_read_update_info(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_read_update_info"); + if (png_ptr == NULL) + return; + if (!(png_ptr->flags & PNG_FLAG_ROW_INIT)) + png_read_start_row(png_ptr); + else + png_warning(png_ptr, + "Ignoring extra png_read_update_info() call; row buffer not reallocated"); + png_read_transform_info(png_ptr, info_ptr); +} + +#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED +/* Initialize palette, background, etc, after transformations + * are set, but before any reading takes place. This allows + * the user to obtain a gamma-corrected palette, for example. + * If the user doesn't call this, we will do it ourselves. + */ +void PNGAPI +png_start_read_image(png_structp png_ptr) +{ + png_debug(1, "in png_start_read_image"); + if (png_ptr == NULL) + return; + if (!(png_ptr->flags & PNG_FLAG_ROW_INIT)) + png_read_start_row(png_ptr); +} +#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */ + +#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED +void PNGAPI +png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_CONST PNG_IDAT; + PNG_CONST int png_pass_dsp_mask[7] = {0xff, 0x0f, 0xff, 0x33, 0xff, 0x55, + 0xff}; + PNG_CONST int png_pass_mask[7] = {0x80, 0x08, 0x88, 0x22, 0xaa, 0x55, 0xff}; +#endif + int ret; + if (png_ptr == NULL) + return; + png_debug2(1, "in png_read_row (row %lu, pass %d)", + png_ptr->row_number, png_ptr->pass); + if (!(png_ptr->flags & PNG_FLAG_ROW_INIT)) + png_read_start_row(png_ptr); + if (png_ptr->row_number == 0 && png_ptr->pass == 0) + { + /* Check for transforms that have been set but were defined out */ +#if defined(PNG_WRITE_INVERT_SUPPORTED) && !defined(PNG_READ_INVERT_SUPPORTED) + if (png_ptr->transformations & PNG_INVERT_MONO) + png_warning(png_ptr, "PNG_READ_INVERT_SUPPORTED is not defined."); +#endif +#if defined(PNG_WRITE_FILLER_SUPPORTED) && !defined(PNG_READ_FILLER_SUPPORTED) + if (png_ptr->transformations & PNG_FILLER) + png_warning(png_ptr, "PNG_READ_FILLER_SUPPORTED is not defined."); +#endif +#if defined(PNG_WRITE_PACKSWAP_SUPPORTED) && !defined(PNG_READ_PACKSWAP_SUPPORTED) + if (png_ptr->transformations & PNG_PACKSWAP) + png_warning(png_ptr, "PNG_READ_PACKSWAP_SUPPORTED is not defined."); +#endif +#if defined(PNG_WRITE_PACK_SUPPORTED) && !defined(PNG_READ_PACK_SUPPORTED) + if (png_ptr->transformations & PNG_PACK) + png_warning(png_ptr, "PNG_READ_PACK_SUPPORTED is not defined."); +#endif +#if defined(PNG_WRITE_SHIFT_SUPPORTED) && !defined(PNG_READ_SHIFT_SUPPORTED) + if (png_ptr->transformations & PNG_SHIFT) + png_warning(png_ptr, "PNG_READ_SHIFT_SUPPORTED is not defined."); +#endif +#if defined(PNG_WRITE_BGR_SUPPORTED) && !defined(PNG_READ_BGR_SUPPORTED) + if (png_ptr->transformations & PNG_BGR) + png_warning(png_ptr, "PNG_READ_BGR_SUPPORTED is not defined."); +#endif +#if defined(PNG_WRITE_SWAP_SUPPORTED) && !defined(PNG_READ_SWAP_SUPPORTED) + if (png_ptr->transformations & PNG_SWAP_BYTES) + png_warning(png_ptr, "PNG_READ_SWAP_SUPPORTED is not defined."); +#endif + } + +#if defined(PNG_READ_INTERLACING_SUPPORTED) + /* If interlaced and we do not need a new row, combine row and return */ + if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE)) + { + switch (png_ptr->pass) + { + case 0: + if (png_ptr->row_number & 0x07) + { + if (dsp_row != NULL) + png_combine_row(png_ptr, dsp_row, + png_pass_dsp_mask[png_ptr->pass]); + png_read_finish_row(png_ptr); + return; + } + break; + case 1: + if ((png_ptr->row_number & 0x07) || png_ptr->width < 5) + { + if (dsp_row != NULL) + png_combine_row(png_ptr, dsp_row, + png_pass_dsp_mask[png_ptr->pass]); + png_read_finish_row(png_ptr); + return; + } + break; + case 2: + if ((png_ptr->row_number & 0x07) != 4) + { + if (dsp_row != NULL && (png_ptr->row_number & 4)) + png_combine_row(png_ptr, dsp_row, + png_pass_dsp_mask[png_ptr->pass]); + png_read_finish_row(png_ptr); + return; + } + break; + case 3: + if ((png_ptr->row_number & 3) || png_ptr->width < 3) + { + if (dsp_row != NULL) + png_combine_row(png_ptr, dsp_row, + png_pass_dsp_mask[png_ptr->pass]); + png_read_finish_row(png_ptr); + return; + } + break; + case 4: + if ((png_ptr->row_number & 3) != 2) + { + if (dsp_row != NULL && (png_ptr->row_number & 2)) + png_combine_row(png_ptr, dsp_row, + png_pass_dsp_mask[png_ptr->pass]); + png_read_finish_row(png_ptr); + return; + } + break; + case 5: + if ((png_ptr->row_number & 1) || png_ptr->width < 2) + { + if (dsp_row != NULL) + png_combine_row(png_ptr, dsp_row, + png_pass_dsp_mask[png_ptr->pass]); + png_read_finish_row(png_ptr); + return; + } + break; + case 6: + if (!(png_ptr->row_number & 1)) + { + png_read_finish_row(png_ptr); + return; + } + break; + } + } +#endif + + if (!(png_ptr->mode & PNG_HAVE_IDAT)) + png_error(png_ptr, "Invalid attempt to read row data"); + + png_ptr->zstream.next_out = png_ptr->row_buf; + png_ptr->zstream.avail_out = (uInt)png_ptr->irowbytes; + do + { + if (!(png_ptr->zstream.avail_in)) + { + while (!png_ptr->idat_size) + { + png_crc_finish(png_ptr, 0); + + png_ptr->idat_size = png_read_chunk_header(png_ptr); + if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) + png_error(png_ptr, "Not enough image data"); + } + png_ptr->zstream.avail_in = (uInt)png_ptr->zbuf_size; + png_ptr->zstream.next_in = png_ptr->zbuf; + if (png_ptr->zbuf_size > png_ptr->idat_size) + png_ptr->zstream.avail_in = (uInt)png_ptr->idat_size; + png_crc_read(png_ptr, png_ptr->zbuf, + (png_size_t)png_ptr->zstream.avail_in); + png_ptr->idat_size -= png_ptr->zstream.avail_in; + } + ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH); + if (ret == Z_STREAM_END) + { + if (png_ptr->zstream.avail_out || png_ptr->zstream.avail_in || + png_ptr->idat_size) + png_error(png_ptr, "Extra compressed data"); + png_ptr->mode |= PNG_AFTER_IDAT; + png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED; + break; + } + if (ret != Z_OK) + png_error(png_ptr, png_ptr->zstream.msg ? png_ptr->zstream.msg : + "Decompression error"); + + } while (png_ptr->zstream.avail_out); + + png_ptr->row_info.color_type = png_ptr->color_type; + png_ptr->row_info.width = png_ptr->iwidth; + png_ptr->row_info.channels = png_ptr->channels; + png_ptr->row_info.bit_depth = png_ptr->bit_depth; + png_ptr->row_info.pixel_depth = png_ptr->pixel_depth; + png_ptr->row_info.rowbytes = PNG_ROWBYTES(png_ptr->row_info.pixel_depth, + png_ptr->row_info.width); + + if (png_ptr->row_buf[0]) + png_read_filter_row(png_ptr, &(png_ptr->row_info), + png_ptr->row_buf + 1, png_ptr->prev_row + 1, + (int)(png_ptr->row_buf[0])); + + png_memcpy_check(png_ptr, png_ptr->prev_row, png_ptr->row_buf, + png_ptr->rowbytes + 1); + +#if defined(PNG_MNG_FEATURES_SUPPORTED) + if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) && + (png_ptr->filter_type == PNG_INTRAPIXEL_DIFFERENCING)) + { + /* Intrapixel differencing */ + png_do_read_intrapixel(&(png_ptr->row_info), png_ptr->row_buf + 1); + } +#endif + + + if (png_ptr->transformations || (png_ptr->flags&PNG_FLAG_STRIP_ALPHA)) + png_do_read_transformations(png_ptr); + +#if defined(PNG_READ_INTERLACING_SUPPORTED) + /* Blow up interlaced rows to full size */ + if (png_ptr->interlaced && + (png_ptr->transformations & PNG_INTERLACE)) + { + if (png_ptr->pass < 6) + /* Old interface (pre-1.0.9): + * png_do_read_interlace(&(png_ptr->row_info), + * png_ptr->row_buf + 1, png_ptr->pass, png_ptr->transformations); + */ + png_do_read_interlace(png_ptr); + + if (dsp_row != NULL) + png_combine_row(png_ptr, dsp_row, + png_pass_dsp_mask[png_ptr->pass]); + if (row != NULL) + png_combine_row(png_ptr, row, + png_pass_mask[png_ptr->pass]); + } + else +#endif + { + if (row != NULL) + png_combine_row(png_ptr, row, 0xff); + if (dsp_row != NULL) + png_combine_row(png_ptr, dsp_row, 0xff); + } + png_read_finish_row(png_ptr); + + if (png_ptr->read_row_fn != NULL) + (*(png_ptr->read_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass); +} +#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */ + +#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED +/* Read one or more rows of image data. If the image is interlaced, + * and png_set_interlace_handling() has been called, the rows need to + * contain the contents of the rows from the previous pass. If the + * image has alpha or transparency, and png_handle_alpha()[*] has been + * called, the rows contents must be initialized to the contents of the + * screen. + * + * "row" holds the actual image, and pixels are placed in it + * as they arrive. If the image is displayed after each pass, it will + * appear to "sparkle" in. "display_row" can be used to display a + * "chunky" progressive image, with finer detail added as it becomes + * available. If you do not want this "chunky" display, you may pass + * NULL for display_row. If you do not want the sparkle display, and + * you have not called png_handle_alpha(), you may pass NULL for rows. + * If you have called png_handle_alpha(), and the image has either an + * alpha channel or a transparency chunk, you must provide a buffer for + * rows. In this case, you do not have to provide a display_row buffer + * also, but you may. If the image is not interlaced, or if you have + * not called png_set_interlace_handling(), the display_row buffer will + * be ignored, so pass NULL to it. + * + * [*] png_handle_alpha() does not exist yet, as of this version of libpng + */ + +void PNGAPI +png_read_rows(png_structp png_ptr, png_bytepp row, + png_bytepp display_row, png_uint_32 num_rows) +{ + png_uint_32 i; + png_bytepp rp; + png_bytepp dp; + + png_debug(1, "in png_read_rows"); + if (png_ptr == NULL) + return; + rp = row; + dp = display_row; + if (rp != NULL && dp != NULL) + for (i = 0; i < num_rows; i++) + { + png_bytep rptr = *rp++; + png_bytep dptr = *dp++; + + png_read_row(png_ptr, rptr, dptr); + } + else if (rp != NULL) + for (i = 0; i < num_rows; i++) + { + png_bytep rptr = *rp; + png_read_row(png_ptr, rptr, png_bytep_NULL); + rp++; + } + else if (dp != NULL) + for (i = 0; i < num_rows; i++) + { + png_bytep dptr = *dp; + png_read_row(png_ptr, png_bytep_NULL, dptr); + dp++; + } +} +#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */ + +#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED +/* Read the entire image. If the image has an alpha channel or a tRNS + * chunk, and you have called png_handle_alpha()[*], you will need to + * initialize the image to the current image that PNG will be overlaying. + * We set the num_rows again here, in case it was incorrectly set in + * png_read_start_row() by a call to png_read_update_info() or + * png_start_read_image() if png_set_interlace_handling() wasn't called + * prior to either of these functions like it should have been. You can + * only call this function once. If you desire to have an image for + * each pass of a interlaced image, use png_read_rows() instead. + * + * [*] png_handle_alpha() does not exist yet, as of this version of libpng + */ +void PNGAPI +png_read_image(png_structp png_ptr, png_bytepp image) +{ + png_uint_32 i, image_height; + int pass, j; + png_bytepp rp; + + png_debug(1, "in png_read_image"); + if (png_ptr == NULL) + return; + +#ifdef PNG_READ_INTERLACING_SUPPORTED + pass = png_set_interlace_handling(png_ptr); +#else + if (png_ptr->interlaced) + png_error(png_ptr, + "Cannot read interlaced image -- interlace handler disabled."); + pass = 1; +#endif + + + image_height=png_ptr->height; + png_ptr->num_rows = image_height; /* Make sure this is set correctly */ + + for (j = 0; j < pass; j++) + { + rp = image; + for (i = 0; i < image_height; i++) + { + png_read_row(png_ptr, *rp, png_bytep_NULL); + rp++; + } + } +} +#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */ + +#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED +/* Read the end of the PNG file. Will not read past the end of the + * file, will verify the end is accurate, and will read any comments + * or time information at the end of the file, if info is not NULL. + */ +void PNGAPI +png_read_end(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_read_end"); + if (png_ptr == NULL) + return; + png_crc_finish(png_ptr, 0); /* Finish off CRC from last IDAT chunk */ + + do + { +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_CONST PNG_IHDR; + PNG_CONST PNG_IDAT; + PNG_CONST PNG_IEND; + PNG_CONST PNG_PLTE; +#if defined(PNG_READ_bKGD_SUPPORTED) + PNG_CONST PNG_bKGD; +#endif +#if defined(PNG_READ_cHRM_SUPPORTED) + PNG_CONST PNG_cHRM; +#endif +#if defined(PNG_READ_gAMA_SUPPORTED) + PNG_CONST PNG_gAMA; +#endif +#if defined(PNG_READ_hIST_SUPPORTED) + PNG_CONST PNG_hIST; +#endif +#if defined(PNG_READ_iCCP_SUPPORTED) + PNG_CONST PNG_iCCP; +#endif +#if defined(PNG_READ_iTXt_SUPPORTED) + PNG_CONST PNG_iTXt; +#endif +#if defined(PNG_READ_oFFs_SUPPORTED) + PNG_CONST PNG_oFFs; +#endif +#if defined(PNG_READ_pCAL_SUPPORTED) + PNG_CONST PNG_pCAL; +#endif +#if defined(PNG_READ_pHYs_SUPPORTED) + PNG_CONST PNG_pHYs; +#endif +#if defined(PNG_READ_sBIT_SUPPORTED) + PNG_CONST PNG_sBIT; +#endif +#if defined(PNG_READ_sCAL_SUPPORTED) + PNG_CONST PNG_sCAL; +#endif +#if defined(PNG_READ_sPLT_SUPPORTED) + PNG_CONST PNG_sPLT; +#endif +#if defined(PNG_READ_sRGB_SUPPORTED) + PNG_CONST PNG_sRGB; +#endif +#if defined(PNG_READ_tEXt_SUPPORTED) + PNG_CONST PNG_tEXt; +#endif +#if defined(PNG_READ_tIME_SUPPORTED) + PNG_CONST PNG_tIME; +#endif +#if defined(PNG_READ_tRNS_SUPPORTED) + PNG_CONST PNG_tRNS; +#endif +#if defined(PNG_READ_zTXt_SUPPORTED) + PNG_CONST PNG_zTXt; +#endif +#endif /* PNG_USE_LOCAL_ARRAYS */ + png_uint_32 length = png_read_chunk_header(png_ptr); + PNG_CONST png_bytep chunk_name = png_ptr->chunk_name; + + if (!png_memcmp(chunk_name, png_IHDR, 4)) + png_handle_IHDR(png_ptr, info_ptr, length); + else if (!png_memcmp(chunk_name, png_IEND, 4)) + png_handle_IEND(png_ptr, info_ptr, length); +#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED + else if (png_handle_as_unknown(png_ptr, chunk_name)) + { + if (!png_memcmp(chunk_name, png_IDAT, 4)) + { + if ((length > 0) || (png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT)) + png_error(png_ptr, "Too many IDAT's found"); + } + png_handle_unknown(png_ptr, info_ptr, length); + if (!png_memcmp(chunk_name, png_PLTE, 4)) + png_ptr->mode |= PNG_HAVE_PLTE; + } +#endif + else if (!png_memcmp(chunk_name, png_IDAT, 4)) + { + /* Zero length IDATs are legal after the last IDAT has been + * read, but not after other chunks have been read. + */ + if ((length > 0) || (png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT)) + png_error(png_ptr, "Too many IDAT's found"); + png_crc_finish(png_ptr, length); + } + else if (!png_memcmp(chunk_name, png_PLTE, 4)) + png_handle_PLTE(png_ptr, info_ptr, length); +#if defined(PNG_READ_bKGD_SUPPORTED) + else if (!png_memcmp(chunk_name, png_bKGD, 4)) + png_handle_bKGD(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_cHRM_SUPPORTED) + else if (!png_memcmp(chunk_name, png_cHRM, 4)) + png_handle_cHRM(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_gAMA_SUPPORTED) + else if (!png_memcmp(chunk_name, png_gAMA, 4)) + png_handle_gAMA(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_hIST_SUPPORTED) + else if (!png_memcmp(chunk_name, png_hIST, 4)) + png_handle_hIST(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_oFFs_SUPPORTED) + else if (!png_memcmp(chunk_name, png_oFFs, 4)) + png_handle_oFFs(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_pCAL_SUPPORTED) + else if (!png_memcmp(chunk_name, png_pCAL, 4)) + png_handle_pCAL(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_sCAL_SUPPORTED) + else if (!png_memcmp(chunk_name, png_sCAL, 4)) + png_handle_sCAL(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_pHYs_SUPPORTED) + else if (!png_memcmp(chunk_name, png_pHYs, 4)) + png_handle_pHYs(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_sBIT_SUPPORTED) + else if (!png_memcmp(chunk_name, png_sBIT, 4)) + png_handle_sBIT(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_sRGB_SUPPORTED) + else if (!png_memcmp(chunk_name, png_sRGB, 4)) + png_handle_sRGB(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_iCCP_SUPPORTED) + else if (!png_memcmp(chunk_name, png_iCCP, 4)) + png_handle_iCCP(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_sPLT_SUPPORTED) + else if (!png_memcmp(chunk_name, png_sPLT, 4)) + png_handle_sPLT(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_tEXt_SUPPORTED) + else if (!png_memcmp(chunk_name, png_tEXt, 4)) + png_handle_tEXt(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_tIME_SUPPORTED) + else if (!png_memcmp(chunk_name, png_tIME, 4)) + png_handle_tIME(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_tRNS_SUPPORTED) + else if (!png_memcmp(chunk_name, png_tRNS, 4)) + png_handle_tRNS(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_zTXt_SUPPORTED) + else if (!png_memcmp(chunk_name, png_zTXt, 4)) + png_handle_zTXt(png_ptr, info_ptr, length); +#endif +#if defined(PNG_READ_iTXt_SUPPORTED) + else if (!png_memcmp(chunk_name, png_iTXt, 4)) + png_handle_iTXt(png_ptr, info_ptr, length); +#endif + else + png_handle_unknown(png_ptr, info_ptr, length); + } while (!(png_ptr->mode & PNG_HAVE_IEND)); +} +#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */ + +/* Free all memory used by the read */ +void PNGAPI +png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr, + png_infopp end_info_ptr_ptr) +{ + png_structp png_ptr = NULL; + png_infop info_ptr = NULL, end_info_ptr = NULL; +#ifdef PNG_USER_MEM_SUPPORTED + png_free_ptr free_fn = NULL; + png_voidp mem_ptr = NULL; +#endif + + png_debug(1, "in png_destroy_read_struct"); + if (png_ptr_ptr != NULL) + png_ptr = *png_ptr_ptr; + if (png_ptr == NULL) + return; + +#ifdef PNG_USER_MEM_SUPPORTED + free_fn = png_ptr->free_fn; + mem_ptr = png_ptr->mem_ptr; +#endif + + if (info_ptr_ptr != NULL) + info_ptr = *info_ptr_ptr; + + if (end_info_ptr_ptr != NULL) + end_info_ptr = *end_info_ptr_ptr; + + png_read_destroy(png_ptr, info_ptr, end_info_ptr); + + if (info_ptr != NULL) + { +#if defined(PNG_TEXT_SUPPORTED) + png_free_data(png_ptr, info_ptr, PNG_FREE_TEXT, -1); +#endif + +#ifdef PNG_USER_MEM_SUPPORTED + png_destroy_struct_2((png_voidp)info_ptr, (png_free_ptr)free_fn, + (png_voidp)mem_ptr); +#else + png_destroy_struct((png_voidp)info_ptr); +#endif + *info_ptr_ptr = NULL; + } + + if (end_info_ptr != NULL) + { +#if defined(PNG_READ_TEXT_SUPPORTED) + png_free_data(png_ptr, end_info_ptr, PNG_FREE_TEXT, -1); +#endif +#ifdef PNG_USER_MEM_SUPPORTED + png_destroy_struct_2((png_voidp)end_info_ptr, (png_free_ptr)free_fn, + (png_voidp)mem_ptr); +#else + png_destroy_struct((png_voidp)end_info_ptr); +#endif + *end_info_ptr_ptr = NULL; + } + + if (png_ptr != NULL) + { +#ifdef PNG_USER_MEM_SUPPORTED + png_destroy_struct_2((png_voidp)png_ptr, (png_free_ptr)free_fn, + (png_voidp)mem_ptr); +#else + png_destroy_struct((png_voidp)png_ptr); +#endif + *png_ptr_ptr = NULL; + } +} + +/* Free all memory used by the read (old method) */ +void /* PRIVATE */ +png_read_destroy(png_structp png_ptr, png_infop info_ptr, png_infop end_info_ptr) +{ +#ifdef PNG_SETJMP_SUPPORTED + jmp_buf tmp_jmp; +#endif + png_error_ptr error_fn; + png_error_ptr warning_fn; + png_voidp error_ptr; +#ifdef PNG_USER_MEM_SUPPORTED + png_free_ptr free_fn; +#endif + + png_debug(1, "in png_read_destroy"); + if (info_ptr != NULL) + png_info_destroy(png_ptr, info_ptr); + + if (end_info_ptr != NULL) + png_info_destroy(png_ptr, end_info_ptr); + + png_free(png_ptr, png_ptr->zbuf); + png_free(png_ptr, png_ptr->big_row_buf); + png_free(png_ptr, png_ptr->prev_row); + png_free(png_ptr, png_ptr->chunkdata); +#if defined(PNG_READ_DITHER_SUPPORTED) + png_free(png_ptr, png_ptr->palette_lookup); + png_free(png_ptr, png_ptr->dither_index); +#endif +#if defined(PNG_READ_GAMMA_SUPPORTED) + png_free(png_ptr, png_ptr->gamma_table); +#endif +#if defined(PNG_READ_BACKGROUND_SUPPORTED) + png_free(png_ptr, png_ptr->gamma_from_1); + png_free(png_ptr, png_ptr->gamma_to_1); +#endif +#ifdef PNG_FREE_ME_SUPPORTED + if (png_ptr->free_me & PNG_FREE_PLTE) + png_zfree(png_ptr, png_ptr->palette); + png_ptr->free_me &= ~PNG_FREE_PLTE; +#else + if (png_ptr->flags & PNG_FLAG_FREE_PLTE) + png_zfree(png_ptr, png_ptr->palette); + png_ptr->flags &= ~PNG_FLAG_FREE_PLTE; +#endif +#if defined(PNG_tRNS_SUPPORTED) || \ + defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) +#ifdef PNG_FREE_ME_SUPPORTED + if (png_ptr->free_me & PNG_FREE_TRNS) + png_free(png_ptr, png_ptr->trans); + png_ptr->free_me &= ~PNG_FREE_TRNS; +#else + if (png_ptr->flags & PNG_FLAG_FREE_TRNS) + png_free(png_ptr, png_ptr->trans); + png_ptr->flags &= ~PNG_FLAG_FREE_TRNS; +#endif +#endif +#if defined(PNG_READ_hIST_SUPPORTED) +#ifdef PNG_FREE_ME_SUPPORTED + if (png_ptr->free_me & PNG_FREE_HIST) + png_free(png_ptr, png_ptr->hist); + png_ptr->free_me &= ~PNG_FREE_HIST; +#else + if (png_ptr->flags & PNG_FLAG_FREE_HIST) + png_free(png_ptr, png_ptr->hist); + png_ptr->flags &= ~PNG_FLAG_FREE_HIST; +#endif +#endif +#if defined(PNG_READ_GAMMA_SUPPORTED) + if (png_ptr->gamma_16_table != NULL) + { + int i; + int istop = (1 << (8 - png_ptr->gamma_shift)); + for (i = 0; i < istop; i++) + { + png_free(png_ptr, png_ptr->gamma_16_table[i]); + } + png_free(png_ptr, png_ptr->gamma_16_table); + } +#if defined(PNG_READ_BACKGROUND_SUPPORTED) + if (png_ptr->gamma_16_from_1 != NULL) + { + int i; + int istop = (1 << (8 - png_ptr->gamma_shift)); + for (i = 0; i < istop; i++) + { + png_free(png_ptr, png_ptr->gamma_16_from_1[i]); + } + png_free(png_ptr, png_ptr->gamma_16_from_1); + } + if (png_ptr->gamma_16_to_1 != NULL) + { + int i; + int istop = (1 << (8 - png_ptr->gamma_shift)); + for (i = 0; i < istop; i++) + { + png_free(png_ptr, png_ptr->gamma_16_to_1[i]); + } + png_free(png_ptr, png_ptr->gamma_16_to_1); + } +#endif +#endif +#if defined(PNG_TIME_RFC1123_SUPPORTED) + png_free(png_ptr, png_ptr->time_buffer); +#endif + + inflateEnd(&png_ptr->zstream); +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED + png_free(png_ptr, png_ptr->save_buffer); +#endif + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +#ifdef PNG_TEXT_SUPPORTED + png_free(png_ptr, png_ptr->current_text); +#endif /* PNG_TEXT_SUPPORTED */ +#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ + + /* Save the important info out of the png_struct, in case it is + * being used again. + */ +#ifdef PNG_SETJMP_SUPPORTED + png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof(jmp_buf)); +#endif + + error_fn = png_ptr->error_fn; + warning_fn = png_ptr->warning_fn; + error_ptr = png_ptr->error_ptr; +#ifdef PNG_USER_MEM_SUPPORTED + free_fn = png_ptr->free_fn; +#endif + + png_memset(png_ptr, 0, png_sizeof(png_struct)); + + png_ptr->error_fn = error_fn; + png_ptr->warning_fn = warning_fn; + png_ptr->error_ptr = error_ptr; +#ifdef PNG_USER_MEM_SUPPORTED + png_ptr->free_fn = free_fn; +#endif + +#ifdef PNG_SETJMP_SUPPORTED + png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof(jmp_buf)); +#endif + +} + +void PNGAPI +png_set_read_status_fn(png_structp png_ptr, png_read_status_ptr read_row_fn) +{ + if (png_ptr == NULL) + return; + png_ptr->read_row_fn = read_row_fn; +} + + +#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED +#if defined(PNG_INFO_IMAGE_SUPPORTED) +void PNGAPI +png_read_png(png_structp png_ptr, png_infop info_ptr, + int transforms, + voidp params) +{ + int row; + + if (png_ptr == NULL) + return; +#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) + /* Invert the alpha channel from opacity to transparency + */ + if (transforms & PNG_TRANSFORM_INVERT_ALPHA) + png_set_invert_alpha(png_ptr); +#endif + + /* png_read_info() gives us all of the information from the + * PNG file before the first IDAT (image data chunk). + */ + png_read_info(png_ptr, info_ptr); + if (info_ptr->height > PNG_UINT_32_MAX/png_sizeof(png_bytep)) + png_error(png_ptr, "Image is too high to process with png_read_png()"); + + /* -------------- image transformations start here ------------------- */ + +#if defined(PNG_READ_16_TO_8_SUPPORTED) + /* Tell libpng to strip 16 bit/color files down to 8 bits per color. + */ + if (transforms & PNG_TRANSFORM_STRIP_16) + png_set_strip_16(png_ptr); +#endif + +#if defined(PNG_READ_STRIP_ALPHA_SUPPORTED) + /* Strip alpha bytes from the input data without combining with + * the background (not recommended). + */ + if (transforms & PNG_TRANSFORM_STRIP_ALPHA) + png_set_strip_alpha(png_ptr); +#endif + +#if defined(PNG_READ_PACK_SUPPORTED) && !defined(PNG_READ_EXPAND_SUPPORTED) + /* Extract multiple pixels with bit depths of 1, 2, or 4 from a single + * byte into separate bytes (useful for paletted and grayscale images). + */ + if (transforms & PNG_TRANSFORM_PACKING) + png_set_packing(png_ptr); +#endif + +#if defined(PNG_READ_PACKSWAP_SUPPORTED) + /* Change the order of packed pixels to least significant bit first + * (not useful if you are using png_set_packing). + */ + if (transforms & PNG_TRANSFORM_PACKSWAP) + png_set_packswap(png_ptr); +#endif + +#if defined(PNG_READ_EXPAND_SUPPORTED) + /* Expand paletted colors into true RGB triplets + * Expand grayscale images to full 8 bits from 1, 2, or 4 bits/pixel + * Expand paletted or RGB images with transparency to full alpha + * channels so the data will be available as RGBA quartets. + */ + if (transforms & PNG_TRANSFORM_EXPAND) + if ((png_ptr->bit_depth < 8) || + (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) || + (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS))) + png_set_expand(png_ptr); +#endif + + /* We don't handle background color or gamma transformation or dithering. + */ + +#if defined(PNG_READ_INVERT_SUPPORTED) + /* Invert monochrome files to have 0 as white and 1 as black + */ + if (transforms & PNG_TRANSFORM_INVERT_MONO) + png_set_invert_mono(png_ptr); +#endif + +#if defined(PNG_READ_SHIFT_SUPPORTED) + /* If you want to shift the pixel values from the range [0,255] or + * [0,65535] to the original [0,7] or [0,31], or whatever range the + * colors were originally in: + */ + if ((transforms & PNG_TRANSFORM_SHIFT) + && png_get_valid(png_ptr, info_ptr, PNG_INFO_sBIT)) + { + png_color_8p sig_bit; + + png_get_sBIT(png_ptr, info_ptr, &sig_bit); + png_set_shift(png_ptr, sig_bit); + } +#endif + +#if defined(PNG_READ_BGR_SUPPORTED) + /* Flip the RGB pixels to BGR (or RGBA to BGRA) + */ + if (transforms & PNG_TRANSFORM_BGR) + png_set_bgr(png_ptr); +#endif + +#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) + /* Swap the RGBA or GA data to ARGB or AG (or BGRA to ABGR) + */ + if (transforms & PNG_TRANSFORM_SWAP_ALPHA) + png_set_swap_alpha(png_ptr); +#endif + +#if defined(PNG_READ_SWAP_SUPPORTED) + /* Swap bytes of 16 bit files to least significant byte first + */ + if (transforms & PNG_TRANSFORM_SWAP_ENDIAN) + png_set_swap(png_ptr); +#endif + + /* We don't handle adding filler bytes */ + + /* Optional call to gamma correct and add the background to the palette + * and update info structure. REQUIRED if you are expecting libpng to + * update the palette for you (i.e., you selected such a transform above). + */ + png_read_update_info(png_ptr, info_ptr); + + /* -------------- image transformations end here ------------------- */ + +#ifdef PNG_FREE_ME_SUPPORTED + png_free_data(png_ptr, info_ptr, PNG_FREE_ROWS, 0); +#endif + if (info_ptr->row_pointers == NULL) + { + info_ptr->row_pointers = (png_bytepp)png_malloc(png_ptr, + info_ptr->height * png_sizeof(png_bytep)); + png_memset(info_ptr->row_pointers, 0, info_ptr->height + * png_sizeof(png_bytep)); +#ifdef PNG_FREE_ME_SUPPORTED + info_ptr->free_me |= PNG_FREE_ROWS; +#endif + for (row = 0; row < (int)info_ptr->height; row++) + info_ptr->row_pointers[row] = (png_bytep)png_malloc(png_ptr, + png_get_rowbytes(png_ptr, info_ptr)); + } + + png_read_image(png_ptr, info_ptr->row_pointers); + info_ptr->valid |= PNG_INFO_IDAT; + + /* Read rest of file, and get additional chunks in info_ptr - REQUIRED */ + png_read_end(png_ptr, info_ptr); + + transforms = transforms; /* Quiet compiler warnings */ + params = params; + +} +#endif /* PNG_INFO_IMAGE_SUPPORTED */ +#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */ +#endif /* PNG_READ_SUPPORTED */ diff --git a/Libraries/libpng/pngrio.cpp b/Libraries/libpng/pngrio.cpp new file mode 100644 index 0000000..8e52962 --- /dev/null +++ b/Libraries/libpng/pngrio.cpp @@ -0,0 +1,177 @@ + +/* pngrio.c - functions for data input + * + * Last changed in libpng 1.2.37 [June 4, 2009] + * For conditions of distribution and use, see copyright notice in png.h + * Copyright (c) 1998-2009 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This file provides a location for all input. Users who need + * special handling are expected to write a function that has the same + * arguments as this and performs a similar function, but that possibly + * has a different input method. Note that you shouldn't change this + * function, but rather write a replacement function and then make + * libpng use it at run time with png_set_read_fn(...). + */ + +#define PNG_INTERNAL +#include "png.h" +#if defined(PNG_READ_SUPPORTED) + +/* Read the data from whatever input you are using. The default routine + * reads from a file pointer. Note that this routine sometimes gets called + * with very small lengths, so you should implement some kind of simple + * buffering if you are using unbuffered reads. This should never be asked + * to read more then 64K on a 16 bit machine. + */ +void /* PRIVATE */ +png_read_data(png_structp png_ptr, png_bytep data, png_size_t length) +{ + png_debug1(4, "reading %d bytes", (int)length); + if (png_ptr->read_data_fn != NULL) + (*(png_ptr->read_data_fn))(png_ptr, data, length); + else + png_error(png_ptr, "Call to NULL read function"); +} + +#if !defined(PNG_NO_STDIO) +/* This is the function that does the actual reading of data. If you are + * not reading from a standard C stream, you should create a replacement + * read_data function and use it at run time with png_set_read_fn(), rather + * than changing the library. + */ +#ifndef USE_FAR_KEYWORD +void PNGAPI +png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length) +{ + + + if (png_ptr == NULL) + return; + /* fread() returns 0 on error, so it is OK to store this in a png_size_t + * instead of an int, which is what fread() actually returns. + */ +#if defined(_WIN32_WCE) + DWORD check; + if ( !ReadFile((HANDLE)(png_ptr->io_ptr), data, length, &check, NULL) ) + check = 0; +#else + png_size_t check; + + check = (png_size_t)fread(data, (png_size_t)1, length, + (png_FILE_p)png_ptr->io_ptr); +#endif + + if (check != length) + png_error(png_ptr, "Read Error"); +} +#else +/* This is the model-independent version. Since the standard I/O library + can't handle far buffers in the medium and small models, we have to copy + the data. +*/ + +#define NEAR_BUF_SIZE 1024 +#define MIN(a,b) (a <= b ? a : b) + +static void PNGAPI +png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length) +{ + int check; + png_byte *n_data; + png_FILE_p io_ptr; + + if (png_ptr == NULL) + return; + /* Check if data really is near. If so, use usual code. */ + n_data = (png_byte *)CVT_PTR_NOCHECK(data); + io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr); + if ((png_bytep)n_data == data) + { +#if defined(_WIN32_WCE) + if ( !ReadFile((HANDLE)(png_ptr->io_ptr), data, length, &check, NULL) ) + check = 0; +#else + check = fread(n_data, 1, length, io_ptr); +#endif + } + else + { + png_byte buf[NEAR_BUF_SIZE]; + png_size_t read, remaining, err; + check = 0; + remaining = length; + do + { + read = MIN(NEAR_BUF_SIZE, remaining); +#if defined(_WIN32_WCE) + if ( !ReadFile((HANDLE)(io_ptr), buf, read, &err, NULL) ) + err = 0; +#else + err = fread(buf, (png_size_t)1, read, io_ptr); +#endif + png_memcpy(data, buf, read); /* copy far buffer to near buffer */ + if (err != read) + break; + else + check += err; + data += read; + remaining -= read; + } + while (remaining != 0); + } + if ((png_uint_32)check != (png_uint_32)length) + png_error(png_ptr, "read Error"); +} +#endif +#endif + +/* This function allows the application to supply a new input function + * for libpng if standard C streams aren't being used. + * + * This function takes as its arguments: + * png_ptr - pointer to a png input data structure + * io_ptr - pointer to user supplied structure containing info about + * the input functions. May be NULL. + * read_data_fn - pointer to a new input function that takes as its + * arguments a pointer to a png_struct, a pointer to + * a location where input data can be stored, and a 32-bit + * unsigned int that is the number of bytes to be read. + * To exit and output any fatal error messages the new write + * function should call png_error(png_ptr, "Error msg"). + * May be NULL, in which case libpng's default function will + * be used. + */ +void PNGAPI +png_set_read_fn(png_structp png_ptr, png_voidp io_ptr, + png_rw_ptr read_data_fn) +{ + if (png_ptr == NULL) + return; + png_ptr->io_ptr = io_ptr; + +#if !defined(PNG_NO_STDIO) + if (read_data_fn != NULL) + png_ptr->read_data_fn = read_data_fn; + else + png_ptr->read_data_fn = png_default_read_data; +#else + png_ptr->read_data_fn = read_data_fn; +#endif + + /* It is an error to write to a read device */ + if (png_ptr->write_data_fn != NULL) + { + png_ptr->write_data_fn = NULL; + png_warning(png_ptr, + "It's an error to set both read_data_fn and write_data_fn in the "); + png_warning(png_ptr, + "same structure. Resetting write_data_fn to NULL."); + } + +#if defined(PNG_WRITE_FLUSH_SUPPORTED) + png_ptr->output_flush_fn = NULL; +#endif +} +#endif /* PNG_READ_SUPPORTED */ diff --git a/Libraries/libpng/pngrtran.cpp b/Libraries/libpng/pngrtran.cpp new file mode 100644 index 0000000..af396df --- /dev/null +++ b/Libraries/libpng/pngrtran.cpp @@ -0,0 +1,4382 @@ + +/* pngrtran.c - transforms the data in a row for PNG readers + * + * Last changed in libpng 1.2.37 [June 4, 2009] + * For conditions of distribution and use, see copyright notice in png.h + * Copyright (c) 1998-2009 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This file contains functions optionally called by an application + * in order to tell libpng how to handle data when reading a PNG. + * Transformations that are used in both reading and writing are + * in pngtrans.c. + */ + +#define PNG_INTERNAL +#include "png.h" +#if defined(PNG_READ_SUPPORTED) + +/* Set the action on getting a CRC error for an ancillary or critical chunk. */ +void PNGAPI +png_set_crc_action(png_structp png_ptr, int crit_action, int ancil_action) +{ + png_debug(1, "in png_set_crc_action"); + /* Tell libpng how we react to CRC errors in critical chunks */ + if (png_ptr == NULL) + return; + switch (crit_action) + { + case PNG_CRC_NO_CHANGE: /* Leave setting as is */ + break; + + case PNG_CRC_WARN_USE: /* Warn/use data */ + png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK; + png_ptr->flags |= PNG_FLAG_CRC_CRITICAL_USE; + break; + + case PNG_CRC_QUIET_USE: /* Quiet/use data */ + png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK; + png_ptr->flags |= PNG_FLAG_CRC_CRITICAL_USE | + PNG_FLAG_CRC_CRITICAL_IGNORE; + break; + + case PNG_CRC_WARN_DISCARD: /* Not a valid action for critical data */ + png_warning(png_ptr, + "Can't discard critical data on CRC error."); + case PNG_CRC_ERROR_QUIT: /* Error/quit */ + + case PNG_CRC_DEFAULT: + default: + png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK; + break; + } + + switch (ancil_action) + { + case PNG_CRC_NO_CHANGE: /* Leave setting as is */ + break; + + case PNG_CRC_WARN_USE: /* Warn/use data */ + png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK; + png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_USE; + break; + + case PNG_CRC_QUIET_USE: /* Quiet/use data */ + png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK; + png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_USE | + PNG_FLAG_CRC_ANCILLARY_NOWARN; + break; + + case PNG_CRC_ERROR_QUIT: /* Error/quit */ + png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK; + png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_NOWARN; + break; + + case PNG_CRC_WARN_DISCARD: /* Warn/discard data */ + + case PNG_CRC_DEFAULT: + default: + png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK; + break; + } +} + +#if defined(PNG_READ_BACKGROUND_SUPPORTED) && \ + defined(PNG_FLOATING_POINT_SUPPORTED) +/* Handle alpha and tRNS via a background color */ +void PNGAPI +png_set_background(png_structp png_ptr, + png_color_16p background_color, int background_gamma_code, + int need_expand, double background_gamma) +{ + png_debug(1, "in png_set_background"); + if (png_ptr == NULL) + return; + if (background_gamma_code == PNG_BACKGROUND_GAMMA_UNKNOWN) + { + png_warning(png_ptr, "Application must supply a known background gamma"); + return; + } + + png_ptr->transformations |= PNG_BACKGROUND; + png_memcpy(&(png_ptr->background), background_color, + png_sizeof(png_color_16)); + png_ptr->background_gamma = (float)background_gamma; + png_ptr->background_gamma_type = (png_byte)(background_gamma_code); + png_ptr->transformations |= (need_expand ? PNG_BACKGROUND_EXPAND : 0); +} +#endif + +#if defined(PNG_READ_16_TO_8_SUPPORTED) +/* Strip 16 bit depth files to 8 bit depth */ +void PNGAPI +png_set_strip_16(png_structp png_ptr) +{ + png_debug(1, "in png_set_strip_16"); + if (png_ptr == NULL) + return; + png_ptr->transformations |= PNG_16_TO_8; +} +#endif + +#if defined(PNG_READ_STRIP_ALPHA_SUPPORTED) +void PNGAPI +png_set_strip_alpha(png_structp png_ptr) +{ + png_debug(1, "in png_set_strip_alpha"); + if (png_ptr == NULL) + return; + png_ptr->flags |= PNG_FLAG_STRIP_ALPHA; +} +#endif + +#if defined(PNG_READ_DITHER_SUPPORTED) +/* Dither file to 8 bit. Supply a palette, the current number + * of elements in the palette, the maximum number of elements + * allowed, and a histogram if possible. If the current number + * of colors is greater then the maximum number, the palette will be + * modified to fit in the maximum number. "full_dither" indicates + * whether we need a dithering cube set up for RGB images, or if we + * simply are reducing the number of colors in a paletted image. + */ + +typedef struct png_dsort_struct +{ + struct png_dsort_struct FAR * next; + png_byte left; + png_byte right; +} png_dsort; +typedef png_dsort FAR * png_dsortp; +typedef png_dsort FAR * FAR * png_dsortpp; + +void PNGAPI +png_set_dither(png_structp png_ptr, png_colorp palette, + int num_palette, int maximum_colors, png_uint_16p histogram, + int full_dither) +{ + png_debug(1, "in png_set_dither"); + if (png_ptr == NULL) + return; + png_ptr->transformations |= PNG_DITHER; + + if (!full_dither) + { + int i; + + png_ptr->dither_index = (png_bytep)png_malloc(png_ptr, + (png_uint_32)(num_palette * png_sizeof(png_byte))); + for (i = 0; i < num_palette; i++) + png_ptr->dither_index[i] = (png_byte)i; + } + + if (num_palette > maximum_colors) + { + if (histogram != NULL) + { + /* This is easy enough, just throw out the least used colors. + * Perhaps not the best solution, but good enough. + */ + + int i; + + /* Initialize an array to sort colors */ + png_ptr->dither_sort = (png_bytep)png_malloc(png_ptr, + (png_uint_32)(num_palette * png_sizeof(png_byte))); + + /* Initialize the dither_sort array */ + for (i = 0; i < num_palette; i++) + png_ptr->dither_sort[i] = (png_byte)i; + + /* Find the least used palette entries by starting a + * bubble sort, and running it until we have sorted + * out enough colors. Note that we don't care about + * sorting all the colors, just finding which are + * least used. + */ + + for (i = num_palette - 1; i >= maximum_colors; i--) + { + int done; /* To stop early if the list is pre-sorted */ + int j; + + done = 1; + for (j = 0; j < i; j++) + { + if (histogram[png_ptr->dither_sort[j]] + < histogram[png_ptr->dither_sort[j + 1]]) + { + png_byte t; + + t = png_ptr->dither_sort[j]; + png_ptr->dither_sort[j] = png_ptr->dither_sort[j + 1]; + png_ptr->dither_sort[j + 1] = t; + done = 0; + } + } + if (done) + break; + } + + /* Swap the palette around, and set up a table, if necessary */ + if (full_dither) + { + int j = num_palette; + + /* Put all the useful colors within the max, but don't + * move the others. + */ + for (i = 0; i < maximum_colors; i++) + { + if ((int)png_ptr->dither_sort[i] >= maximum_colors) + { + do + j--; + while ((int)png_ptr->dither_sort[j] >= maximum_colors); + palette[i] = palette[j]; + } + } + } + else + { + int j = num_palette; + + /* Move all the used colors inside the max limit, and + * develop a translation table. + */ + for (i = 0; i < maximum_colors; i++) + { + /* Only move the colors we need to */ + if ((int)png_ptr->dither_sort[i] >= maximum_colors) + { + png_color tmp_color; + + do + j--; + while ((int)png_ptr->dither_sort[j] >= maximum_colors); + + tmp_color = palette[j]; + palette[j] = palette[i]; + palette[i] = tmp_color; + /* Indicate where the color went */ + png_ptr->dither_index[j] = (png_byte)i; + png_ptr->dither_index[i] = (png_byte)j; + } + } + + /* Find closest color for those colors we are not using */ + for (i = 0; i < num_palette; i++) + { + if ((int)png_ptr->dither_index[i] >= maximum_colors) + { + int min_d, k, min_k, d_index; + + /* Find the closest color to one we threw out */ + d_index = png_ptr->dither_index[i]; + min_d = PNG_COLOR_DIST(palette[d_index], palette[0]); + for (k = 1, min_k = 0; k < maximum_colors; k++) + { + int d; + + d = PNG_COLOR_DIST(palette[d_index], palette[k]); + + if (d < min_d) + { + min_d = d; + min_k = k; + } + } + /* Point to closest color */ + png_ptr->dither_index[i] = (png_byte)min_k; + } + } + } + png_free(png_ptr, png_ptr->dither_sort); + png_ptr->dither_sort = NULL; + } + else + { + /* This is much harder to do simply (and quickly). Perhaps + * we need to go through a median cut routine, but those + * don't always behave themselves with only a few colors + * as input. So we will just find the closest two colors, + * and throw out one of them (chosen somewhat randomly). + * [We don't understand this at all, so if someone wants to + * work on improving it, be our guest - AED, GRP] + */ + int i; + int max_d; + int num_new_palette; + png_dsortp t; + png_dsortpp hash; + + t = NULL; + + /* Initialize palette index arrays */ + png_ptr->index_to_palette = (png_bytep)png_malloc(png_ptr, + (png_uint_32)(num_palette * png_sizeof(png_byte))); + png_ptr->palette_to_index = (png_bytep)png_malloc(png_ptr, + (png_uint_32)(num_palette * png_sizeof(png_byte))); + + /* Initialize the sort array */ + for (i = 0; i < num_palette; i++) + { + png_ptr->index_to_palette[i] = (png_byte)i; + png_ptr->palette_to_index[i] = (png_byte)i; + } + + hash = (png_dsortpp)png_malloc(png_ptr, (png_uint_32)(769 * + png_sizeof(png_dsortp))); + png_memset(hash, 0, 769 * png_sizeof(png_dsortp)); + + num_new_palette = num_palette; + + /* Initial wild guess at how far apart the farthest pixel + * pair we will be eliminating will be. Larger + * numbers mean more areas will be allocated, Smaller + * numbers run the risk of not saving enough data, and + * having to do this all over again. + * + * I have not done extensive checking on this number. + */ + max_d = 96; + + while (num_new_palette > maximum_colors) + { + for (i = 0; i < num_new_palette - 1; i++) + { + int j; + + for (j = i + 1; j < num_new_palette; j++) + { + int d; + + d = PNG_COLOR_DIST(palette[i], palette[j]); + + if (d <= max_d) + { + + t = (png_dsortp)png_malloc_warn(png_ptr, + (png_uint_32)(png_sizeof(png_dsort))); + if (t == NULL) + break; + t->next = hash[d]; + t->left = (png_byte)i; + t->right = (png_byte)j; + hash[d] = t; + } + } + if (t == NULL) + break; + } + + if (t != NULL) + for (i = 0; i <= max_d; i++) + { + if (hash[i] != NULL) + { + png_dsortp p; + + for (p = hash[i]; p; p = p->next) + { + if ((int)png_ptr->index_to_palette[p->left] + < num_new_palette && + (int)png_ptr->index_to_palette[p->right] + < num_new_palette) + { + int j, next_j; + + if (num_new_palette & 0x01) + { + j = p->left; + next_j = p->right; + } + else + { + j = p->right; + next_j = p->left; + } + + num_new_palette--; + palette[png_ptr->index_to_palette[j]] + = palette[num_new_palette]; + if (!full_dither) + { + int k; + + for (k = 0; k < num_palette; k++) + { + if (png_ptr->dither_index[k] == + png_ptr->index_to_palette[j]) + png_ptr->dither_index[k] = + png_ptr->index_to_palette[next_j]; + if ((int)png_ptr->dither_index[k] == + num_new_palette) + png_ptr->dither_index[k] = + png_ptr->index_to_palette[j]; + } + } + + png_ptr->index_to_palette[png_ptr->palette_to_index + [num_new_palette]] = png_ptr->index_to_palette[j]; + png_ptr->palette_to_index[png_ptr->index_to_palette[j]] + = png_ptr->palette_to_index[num_new_palette]; + + png_ptr->index_to_palette[j] = (png_byte)num_new_palette; + png_ptr->palette_to_index[num_new_palette] = (png_byte)j; + } + if (num_new_palette <= maximum_colors) + break; + } + if (num_new_palette <= maximum_colors) + break; + } + } + + for (i = 0; i < 769; i++) + { + if (hash[i] != NULL) + { + png_dsortp p = hash[i]; + while (p) + { + t = p->next; + png_free(png_ptr, p); + p = t; + } + } + hash[i] = 0; + } + max_d += 96; + } + png_free(png_ptr, hash); + png_free(png_ptr, png_ptr->palette_to_index); + png_free(png_ptr, png_ptr->index_to_palette); + png_ptr->palette_to_index = NULL; + png_ptr->index_to_palette = NULL; + } + num_palette = maximum_colors; + } + if (png_ptr->palette == NULL) + { + png_ptr->palette = palette; + } + png_ptr->num_palette = (png_uint_16)num_palette; + + if (full_dither) + { + int i; + png_bytep distance; + int total_bits = PNG_DITHER_RED_BITS + PNG_DITHER_GREEN_BITS + + PNG_DITHER_BLUE_BITS; + int num_red = (1 << PNG_DITHER_RED_BITS); + int num_green = (1 << PNG_DITHER_GREEN_BITS); + int num_blue = (1 << PNG_DITHER_BLUE_BITS); + png_size_t num_entries = ((png_size_t)1 << total_bits); + png_ptr->palette_lookup = (png_bytep )png_malloc(png_ptr, + (png_uint_32)(num_entries * png_sizeof(png_byte))); + png_memset(png_ptr->palette_lookup, 0, num_entries * + png_sizeof(png_byte)); + + distance = (png_bytep)png_malloc(png_ptr, (png_uint_32)(num_entries * + png_sizeof(png_byte))); + + png_memset(distance, 0xff, num_entries * png_sizeof(png_byte)); + + for (i = 0; i < num_palette; i++) + { + int ir, ig, ib; + int r = (palette[i].red >> (8 - PNG_DITHER_RED_BITS)); + int g = (palette[i].green >> (8 - PNG_DITHER_GREEN_BITS)); + int b = (palette[i].blue >> (8 - PNG_DITHER_BLUE_BITS)); + + for (ir = 0; ir < num_red; ir++) + { + /* int dr = abs(ir - r); */ + int dr = ((ir > r) ? ir - r : r - ir); + int index_r = (ir << (PNG_DITHER_BLUE_BITS + PNG_DITHER_GREEN_BITS)); + + for (ig = 0; ig < num_green; ig++) + { + /* int dg = abs(ig - g); */ + int dg = ((ig > g) ? ig - g : g - ig); + int dt = dr + dg; + int dm = ((dr > dg) ? dr : dg); + int index_g = index_r | (ig << PNG_DITHER_BLUE_BITS); + + for (ib = 0; ib < num_blue; ib++) + { + int d_index = index_g | ib; + /* int db = abs(ib - b); */ + int db = ((ib > b) ? ib - b : b - ib); + int dmax = ((dm > db) ? dm : db); + int d = dmax + dt + db; + + if (d < (int)distance[d_index]) + { + distance[d_index] = (png_byte)d; + png_ptr->palette_lookup[d_index] = (png_byte)i; + } + } + } + } + } + + png_free(png_ptr, distance); + } +} +#endif + +#if defined(PNG_READ_GAMMA_SUPPORTED) && defined(PNG_FLOATING_POINT_SUPPORTED) +/* Transform the image from the file_gamma to the screen_gamma. We + * only do transformations on images where the file_gamma and screen_gamma + * are not close reciprocals, otherwise it slows things down slightly, and + * also needlessly introduces small errors. + * + * We will turn off gamma transformation later if no semitransparent entries + * are present in the tRNS array for palette images. We can't do it here + * because we don't necessarily have the tRNS chunk yet. + */ +void PNGAPI +png_set_gamma(png_structp png_ptr, double scrn_gamma, double file_gamma) +{ + png_debug(1, "in png_set_gamma"); + if (png_ptr == NULL) + return; + if ((fabs(scrn_gamma * file_gamma - 1.0) > PNG_GAMMA_THRESHOLD) || + (png_ptr->color_type & PNG_COLOR_MASK_ALPHA) || + (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)) + png_ptr->transformations |= PNG_GAMMA; + png_ptr->gamma = (float)file_gamma; + png_ptr->screen_gamma = (float)scrn_gamma; +} +#endif + +#if defined(PNG_READ_EXPAND_SUPPORTED) +/* Expand paletted images to RGB, expand grayscale images of + * less than 8-bit depth to 8-bit depth, and expand tRNS chunks + * to alpha channels. + */ +void PNGAPI +png_set_expand(png_structp png_ptr) +{ + png_debug(1, "in png_set_expand"); + if (png_ptr == NULL) + return; + png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS); + png_ptr->flags &= ~PNG_FLAG_ROW_INIT; +} + +/* GRR 19990627: the following three functions currently are identical + * to png_set_expand(). However, it is entirely reasonable that someone + * might wish to expand an indexed image to RGB but *not* expand a single, + * fully transparent palette entry to a full alpha channel--perhaps instead + * convert tRNS to the grayscale/RGB format (16-bit RGB value), or replace + * the transparent color with a particular RGB value, or drop tRNS entirely. + * IOW, a future version of the library may make the transformations flag + * a bit more fine-grained, with separate bits for each of these three + * functions. + * + * More to the point, these functions make it obvious what libpng will be + * doing, whereas "expand" can (and does) mean any number of things. + * + * GRP 20060307: In libpng-1.4.0, png_set_gray_1_2_4_to_8() was modified + * to expand only the sample depth but not to expand the tRNS to alpha. + */ + +/* Expand paletted images to RGB. */ +void PNGAPI +png_set_palette_to_rgb(png_structp png_ptr) +{ + png_debug(1, "in png_set_palette_to_rgb"); + if (png_ptr == NULL) + return; + png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS); + png_ptr->flags &= ~PNG_FLAG_ROW_INIT; +} + +#if !defined(PNG_1_0_X) +/* Expand grayscale images of less than 8-bit depth to 8 bits. */ +void PNGAPI +png_set_expand_gray_1_2_4_to_8(png_structp png_ptr) +{ + png_debug(1, "in png_set_expand_gray_1_2_4_to_8"); + if (png_ptr == NULL) + return; + png_ptr->transformations |= PNG_EXPAND; + png_ptr->flags &= ~PNG_FLAG_ROW_INIT; +} +#endif + +#if defined(PNG_1_0_X) || defined(PNG_1_2_X) +/* Expand grayscale images of less than 8-bit depth to 8 bits. */ +/* Deprecated as of libpng-1.2.9 */ +void PNGAPI +png_set_gray_1_2_4_to_8(png_structp png_ptr) +{ + png_debug(1, "in png_set_gray_1_2_4_to_8"); + if (png_ptr == NULL) + return; + png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS); +} +#endif + + +/* Expand tRNS chunks to alpha channels. */ +void PNGAPI +png_set_tRNS_to_alpha(png_structp png_ptr) +{ + png_debug(1, "in png_set_tRNS_to_alpha"); + png_ptr->transformations |= (PNG_EXPAND | PNG_EXPAND_tRNS); + png_ptr->flags &= ~PNG_FLAG_ROW_INIT; +} +#endif /* defined(PNG_READ_EXPAND_SUPPORTED) */ + +#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED) +void PNGAPI +png_set_gray_to_rgb(png_structp png_ptr) +{ + png_debug(1, "in png_set_gray_to_rgb"); + png_ptr->transformations |= PNG_GRAY_TO_RGB; + png_ptr->flags &= ~PNG_FLAG_ROW_INIT; +} +#endif + +#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) +#if defined(PNG_FLOATING_POINT_SUPPORTED) +/* Convert a RGB image to a grayscale of the same width. This allows us, + * for example, to convert a 24 bpp RGB image into an 8 bpp grayscale image. + */ + +void PNGAPI +png_set_rgb_to_gray(png_structp png_ptr, int error_action, double red, + double green) +{ + int red_fixed = (int)((float)red*100000.0 + 0.5); + int green_fixed = (int)((float)green*100000.0 + 0.5); + if (png_ptr == NULL) + return; + png_set_rgb_to_gray_fixed(png_ptr, error_action, red_fixed, green_fixed); +} +#endif + +void PNGAPI +png_set_rgb_to_gray_fixed(png_structp png_ptr, int error_action, + png_fixed_point red, png_fixed_point green) +{ + png_debug(1, "in png_set_rgb_to_gray"); + if (png_ptr == NULL) + return; + switch(error_action) + { + case 1: png_ptr->transformations |= PNG_RGB_TO_GRAY; + break; + + case 2: png_ptr->transformations |= PNG_RGB_TO_GRAY_WARN; + break; + + case 3: png_ptr->transformations |= PNG_RGB_TO_GRAY_ERR; + } + if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) +#if defined(PNG_READ_EXPAND_SUPPORTED) + png_ptr->transformations |= PNG_EXPAND; +#else + { + png_warning(png_ptr, + "Cannot do RGB_TO_GRAY without EXPAND_SUPPORTED."); + png_ptr->transformations &= ~PNG_RGB_TO_GRAY; + } +#endif + { + png_uint_16 red_int, green_int; + if (red < 0 || green < 0) + { + red_int = 6968; /* .212671 * 32768 + .5 */ + green_int = 23434; /* .715160 * 32768 + .5 */ + } + else if (red + green < 100000L) + { + red_int = (png_uint_16)(((png_uint_32)red*32768L)/100000L); + green_int = (png_uint_16)(((png_uint_32)green*32768L)/100000L); + } + else + { + png_warning(png_ptr, "ignoring out of range rgb_to_gray coefficients"); + red_int = 6968; + green_int = 23434; + } + png_ptr->rgb_to_gray_red_coeff = red_int; + png_ptr->rgb_to_gray_green_coeff = green_int; + png_ptr->rgb_to_gray_blue_coeff = + (png_uint_16)(32768 - red_int - green_int); + } +} +#endif + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_LEGACY_SUPPORTED) +void PNGAPI +png_set_read_user_transform_fn(png_structp png_ptr, png_user_transform_ptr + read_user_transform_fn) +{ + png_debug(1, "in png_set_read_user_transform_fn"); + if (png_ptr == NULL) + return; +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) + png_ptr->transformations |= PNG_USER_TRANSFORM; + png_ptr->read_user_transform_fn = read_user_transform_fn; +#endif +#ifdef PNG_LEGACY_SUPPORTED + if (read_user_transform_fn) + png_warning(png_ptr, + "This version of libpng does not support user transforms"); +#endif +} +#endif + +/* Initialize everything needed for the read. This includes modifying + * the palette. + */ +void /* PRIVATE */ +png_init_read_transformations(png_structp png_ptr) +{ + png_debug(1, "in png_init_read_transformations"); +#if defined(PNG_USELESS_TESTS_SUPPORTED) + if (png_ptr != NULL) +#endif + { +#if defined(PNG_READ_BACKGROUND_SUPPORTED) || defined(PNG_READ_SHIFT_SUPPORTED) \ + || defined(PNG_READ_GAMMA_SUPPORTED) + int color_type = png_ptr->color_type; +#endif + +#if defined(PNG_READ_EXPAND_SUPPORTED) && defined(PNG_READ_BACKGROUND_SUPPORTED) + +#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED) + /* Detect gray background and attempt to enable optimization + * for gray --> RGB case + * + * Note: if PNG_BACKGROUND_EXPAND is set and color_type is either RGB or + * RGB_ALPHA (in which case need_expand is superfluous anyway), the + * background color might actually be gray yet not be flagged as such. + * This is not a problem for the current code, which uses + * PNG_BACKGROUND_IS_GRAY only to decide when to do the + * png_do_gray_to_rgb() transformation. + */ + if ((png_ptr->transformations & PNG_BACKGROUND_EXPAND) && + !(color_type & PNG_COLOR_MASK_COLOR)) + { + png_ptr->mode |= PNG_BACKGROUND_IS_GRAY; + } else if ((png_ptr->transformations & PNG_BACKGROUND) && + !(png_ptr->transformations & PNG_BACKGROUND_EXPAND) && + (png_ptr->transformations & PNG_GRAY_TO_RGB) && + png_ptr->background.red == png_ptr->background.green && + png_ptr->background.red == png_ptr->background.blue) + { + png_ptr->mode |= PNG_BACKGROUND_IS_GRAY; + png_ptr->background.gray = png_ptr->background.red; + } +#endif + + if ((png_ptr->transformations & PNG_BACKGROUND_EXPAND) && + (png_ptr->transformations & PNG_EXPAND)) + { + if (!(color_type & PNG_COLOR_MASK_COLOR)) /* i.e., GRAY or GRAY_ALPHA */ + { + /* Expand background and tRNS chunks */ + switch (png_ptr->bit_depth) + { + case 1: + png_ptr->background.gray *= (png_uint_16)0xff; + png_ptr->background.red = png_ptr->background.green + = png_ptr->background.blue = png_ptr->background.gray; + if (!(png_ptr->transformations & PNG_EXPAND_tRNS)) + { + png_ptr->trans_values.gray *= (png_uint_16)0xff; + png_ptr->trans_values.red = png_ptr->trans_values.green + = png_ptr->trans_values.blue = png_ptr->trans_values.gray; + } + break; + + case 2: + png_ptr->background.gray *= (png_uint_16)0x55; + png_ptr->background.red = png_ptr->background.green + = png_ptr->background.blue = png_ptr->background.gray; + if (!(png_ptr->transformations & PNG_EXPAND_tRNS)) + { + png_ptr->trans_values.gray *= (png_uint_16)0x55; + png_ptr->trans_values.red = png_ptr->trans_values.green + = png_ptr->trans_values.blue = png_ptr->trans_values.gray; + } + break; + + case 4: + png_ptr->background.gray *= (png_uint_16)0x11; + png_ptr->background.red = png_ptr->background.green + = png_ptr->background.blue = png_ptr->background.gray; + if (!(png_ptr->transformations & PNG_EXPAND_tRNS)) + { + png_ptr->trans_values.gray *= (png_uint_16)0x11; + png_ptr->trans_values.red = png_ptr->trans_values.green + = png_ptr->trans_values.blue = png_ptr->trans_values.gray; + } + break; + + case 8: + + case 16: + png_ptr->background.red = png_ptr->background.green + = png_ptr->background.blue = png_ptr->background.gray; + break; + } + } + else if (color_type == PNG_COLOR_TYPE_PALETTE) + { + png_ptr->background.red = + png_ptr->palette[png_ptr->background.index].red; + png_ptr->background.green = + png_ptr->palette[png_ptr->background.index].green; + png_ptr->background.blue = + png_ptr->palette[png_ptr->background.index].blue; + +#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) + if (png_ptr->transformations & PNG_INVERT_ALPHA) + { +#if defined(PNG_READ_EXPAND_SUPPORTED) + if (!(png_ptr->transformations & PNG_EXPAND_tRNS)) +#endif + { + /* Invert the alpha channel (in tRNS) unless the pixels are + * going to be expanded, in which case leave it for later + */ + int i, istop; + istop=(int)png_ptr->num_trans; + for (i=0; itrans[i] = (png_byte)(255 - png_ptr->trans[i]); + } + } +#endif + + } + } +#endif + +#if defined(PNG_READ_BACKGROUND_SUPPORTED) && defined(PNG_READ_GAMMA_SUPPORTED) + png_ptr->background_1 = png_ptr->background; +#endif +#if defined(PNG_READ_GAMMA_SUPPORTED) && defined(PNG_FLOATING_POINT_SUPPORTED) + + if ((color_type == PNG_COLOR_TYPE_PALETTE && png_ptr->num_trans != 0) + && (fabs(png_ptr->screen_gamma * png_ptr->gamma - 1.0) + < PNG_GAMMA_THRESHOLD)) + { + int i, k; + k=0; + for (i=0; inum_trans; i++) + { + if (png_ptr->trans[i] != 0 && png_ptr->trans[i] != 0xff) + k=1; /* Partial transparency is present */ + } + if (k == 0) + png_ptr->transformations &= ~PNG_GAMMA; + } + + if ((png_ptr->transformations & (PNG_GAMMA | PNG_RGB_TO_GRAY)) && + png_ptr->gamma != 0.0) + { + png_build_gamma_table(png_ptr); +#if defined(PNG_READ_BACKGROUND_SUPPORTED) + if (png_ptr->transformations & PNG_BACKGROUND) + { + if (color_type == PNG_COLOR_TYPE_PALETTE) + { + /* Could skip if no transparency */ + png_color back, back_1; + png_colorp palette = png_ptr->palette; + int num_palette = png_ptr->num_palette; + int i; + if (png_ptr->background_gamma_type == PNG_BACKGROUND_GAMMA_FILE) + { + back.red = png_ptr->gamma_table[png_ptr->background.red]; + back.green = png_ptr->gamma_table[png_ptr->background.green]; + back.blue = png_ptr->gamma_table[png_ptr->background.blue]; + + back_1.red = png_ptr->gamma_to_1[png_ptr->background.red]; + back_1.green = png_ptr->gamma_to_1[png_ptr->background.green]; + back_1.blue = png_ptr->gamma_to_1[png_ptr->background.blue]; + } + else + { + double g, gs; + + switch (png_ptr->background_gamma_type) + { + case PNG_BACKGROUND_GAMMA_SCREEN: + g = (png_ptr->screen_gamma); + gs = 1.0; + break; + + case PNG_BACKGROUND_GAMMA_FILE: + g = 1.0 / (png_ptr->gamma); + gs = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma); + break; + + case PNG_BACKGROUND_GAMMA_UNIQUE: + g = 1.0 / (png_ptr->background_gamma); + gs = 1.0 / (png_ptr->background_gamma * + png_ptr->screen_gamma); + break; + default: + g = 1.0; /* back_1 */ + gs = 1.0; /* back */ + } + + if ( fabs(gs - 1.0) < PNG_GAMMA_THRESHOLD) + { + back.red = (png_byte)png_ptr->background.red; + back.green = (png_byte)png_ptr->background.green; + back.blue = (png_byte)png_ptr->background.blue; + } + else + { + back.red = (png_byte)(pow( + (double)png_ptr->background.red/255, gs) * 255.0 + .5); + back.green = (png_byte)(pow( + (double)png_ptr->background.green/255, gs) * 255.0 + .5); + back.blue = (png_byte)(pow( + (double)png_ptr->background.blue/255, gs) * 255.0 + .5); + } + + back_1.red = (png_byte)(pow( + (double)png_ptr->background.red/255, g) * 255.0 + .5); + back_1.green = (png_byte)(pow( + (double)png_ptr->background.green/255, g) * 255.0 + .5); + back_1.blue = (png_byte)(pow( + (double)png_ptr->background.blue/255, g) * 255.0 + .5); + } + for (i = 0; i < num_palette; i++) + { + if (i < (int)png_ptr->num_trans && png_ptr->trans[i] != 0xff) + { + if (png_ptr->trans[i] == 0) + { + palette[i] = back; + } + else /* if (png_ptr->trans[i] != 0xff) */ + { + png_byte v, w; + + v = png_ptr->gamma_to_1[palette[i].red]; + png_composite(w, v, png_ptr->trans[i], back_1.red); + palette[i].red = png_ptr->gamma_from_1[w]; + + v = png_ptr->gamma_to_1[palette[i].green]; + png_composite(w, v, png_ptr->trans[i], back_1.green); + palette[i].green = png_ptr->gamma_from_1[w]; + + v = png_ptr->gamma_to_1[palette[i].blue]; + png_composite(w, v, png_ptr->trans[i], back_1.blue); + palette[i].blue = png_ptr->gamma_from_1[w]; + } + } + else + { + palette[i].red = png_ptr->gamma_table[palette[i].red]; + palette[i].green = png_ptr->gamma_table[palette[i].green]; + palette[i].blue = png_ptr->gamma_table[palette[i].blue]; + } + } + /* Prevent the transformations being done again, and make sure + * that the now spurious alpha channel is stripped - the code + * has just reduced background composition and gamma correction + * to a simple alpha channel strip. + */ + png_ptr->transformations &= ~PNG_BACKGROUND; + png_ptr->transformations &= ~PNG_GAMMA; + png_ptr->transformations |= PNG_STRIP_ALPHA; + } + /* if (png_ptr->background_gamma_type!=PNG_BACKGROUND_GAMMA_UNKNOWN) */ + else + /* color_type != PNG_COLOR_TYPE_PALETTE */ + { + double m = (double)(((png_uint_32)1 << png_ptr->bit_depth) - 1); + double g = 1.0; + double gs = 1.0; + + switch (png_ptr->background_gamma_type) + { + case PNG_BACKGROUND_GAMMA_SCREEN: + g = (png_ptr->screen_gamma); + gs = 1.0; + break; + + case PNG_BACKGROUND_GAMMA_FILE: + g = 1.0 / (png_ptr->gamma); + gs = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma); + break; + + case PNG_BACKGROUND_GAMMA_UNIQUE: + g = 1.0 / (png_ptr->background_gamma); + gs = 1.0 / (png_ptr->background_gamma * + png_ptr->screen_gamma); + break; + } + + png_ptr->background_1.gray = (png_uint_16)(pow( + (double)png_ptr->background.gray / m, g) * m + .5); + png_ptr->background.gray = (png_uint_16)(pow( + (double)png_ptr->background.gray / m, gs) * m + .5); + + if ((png_ptr->background.red != png_ptr->background.green) || + (png_ptr->background.red != png_ptr->background.blue) || + (png_ptr->background.red != png_ptr->background.gray)) + { + /* RGB or RGBA with color background */ + png_ptr->background_1.red = (png_uint_16)(pow( + (double)png_ptr->background.red / m, g) * m + .5); + png_ptr->background_1.green = (png_uint_16)(pow( + (double)png_ptr->background.green / m, g) * m + .5); + png_ptr->background_1.blue = (png_uint_16)(pow( + (double)png_ptr->background.blue / m, g) * m + .5); + png_ptr->background.red = (png_uint_16)(pow( + (double)png_ptr->background.red / m, gs) * m + .5); + png_ptr->background.green = (png_uint_16)(pow( + (double)png_ptr->background.green / m, gs) * m + .5); + png_ptr->background.blue = (png_uint_16)(pow( + (double)png_ptr->background.blue / m, gs) * m + .5); + } + else + { + /* GRAY, GRAY ALPHA, RGB, or RGBA with gray background */ + png_ptr->background_1.red = png_ptr->background_1.green + = png_ptr->background_1.blue = png_ptr->background_1.gray; + png_ptr->background.red = png_ptr->background.green + = png_ptr->background.blue = png_ptr->background.gray; + } + } + } + else + /* Transformation does not include PNG_BACKGROUND */ +#endif /* PNG_READ_BACKGROUND_SUPPORTED */ + if (color_type == PNG_COLOR_TYPE_PALETTE) + { + png_colorp palette = png_ptr->palette; + int num_palette = png_ptr->num_palette; + int i; + + for (i = 0; i < num_palette; i++) + { + palette[i].red = png_ptr->gamma_table[palette[i].red]; + palette[i].green = png_ptr->gamma_table[palette[i].green]; + palette[i].blue = png_ptr->gamma_table[palette[i].blue]; + } + + /* Done the gamma correction. */ + png_ptr->transformations &= ~PNG_GAMMA; + } + } +#if defined(PNG_READ_BACKGROUND_SUPPORTED) + else +#endif +#endif /* PNG_READ_GAMMA_SUPPORTED && PNG_FLOATING_POINT_SUPPORTED */ +#if defined(PNG_READ_BACKGROUND_SUPPORTED) + /* No GAMMA transformation */ + if ((png_ptr->transformations & PNG_BACKGROUND) && + (color_type == PNG_COLOR_TYPE_PALETTE)) + { + int i; + int istop = (int)png_ptr->num_trans; + png_color back; + png_colorp palette = png_ptr->palette; + + back.red = (png_byte)png_ptr->background.red; + back.green = (png_byte)png_ptr->background.green; + back.blue = (png_byte)png_ptr->background.blue; + + for (i = 0; i < istop; i++) + { + if (png_ptr->trans[i] == 0) + { + palette[i] = back; + } + else if (png_ptr->trans[i] != 0xff) + { + /* The png_composite() macro is defined in png.h */ + png_composite(palette[i].red, palette[i].red, + png_ptr->trans[i], back.red); + png_composite(palette[i].green, palette[i].green, + png_ptr->trans[i], back.green); + png_composite(palette[i].blue, palette[i].blue, + png_ptr->trans[i], back.blue); + } + } + + /* Handled alpha, still need to strip the channel. */ + png_ptr->transformations &= ~PNG_BACKGROUND; + png_ptr->transformations |= PNG_STRIP_ALPHA; + } +#endif /* PNG_READ_BACKGROUND_SUPPORTED */ + +#if defined(PNG_READ_SHIFT_SUPPORTED) + if ((png_ptr->transformations & PNG_SHIFT) && + (color_type == PNG_COLOR_TYPE_PALETTE)) + { + png_uint_16 i; + png_uint_16 istop = png_ptr->num_palette; + int sr = 8 - png_ptr->sig_bit.red; + int sg = 8 - png_ptr->sig_bit.green; + int sb = 8 - png_ptr->sig_bit.blue; + + if (sr < 0 || sr > 8) + sr = 0; + if (sg < 0 || sg > 8) + sg = 0; + if (sb < 0 || sb > 8) + sb = 0; + for (i = 0; i < istop; i++) + { + png_ptr->palette[i].red >>= sr; + png_ptr->palette[i].green >>= sg; + png_ptr->palette[i].blue >>= sb; + } + } +#endif /* PNG_READ_SHIFT_SUPPORTED */ + } +#if !defined(PNG_READ_GAMMA_SUPPORTED) && !defined(PNG_READ_SHIFT_SUPPORTED) \ + && !defined(PNG_READ_BACKGROUND_SUPPORTED) + if (png_ptr) + return; +#endif +} + +/* Modify the info structure to reflect the transformations. The + * info should be updated so a PNG file could be written with it, + * assuming the transformations result in valid PNG data. + */ +void /* PRIVATE */ +png_read_transform_info(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_read_transform_info"); +#if defined(PNG_READ_EXPAND_SUPPORTED) + if (png_ptr->transformations & PNG_EXPAND) + { + if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) + { + if (png_ptr->num_trans && + (png_ptr->transformations & PNG_EXPAND_tRNS)) + info_ptr->color_type = PNG_COLOR_TYPE_RGB_ALPHA; + else + info_ptr->color_type = PNG_COLOR_TYPE_RGB; + info_ptr->bit_depth = 8; + info_ptr->num_trans = 0; + } + else + { + if (png_ptr->num_trans) + { + if (png_ptr->transformations & PNG_EXPAND_tRNS) + info_ptr->color_type |= PNG_COLOR_MASK_ALPHA; +#if 0 /* Removed from libpng-1.2.27 */ + else + info_ptr->color_type |= PNG_COLOR_MASK_COLOR; +#endif + } + if (info_ptr->bit_depth < 8) + info_ptr->bit_depth = 8; + info_ptr->num_trans = 0; + } + } +#endif + +#if defined(PNG_READ_BACKGROUND_SUPPORTED) + if (png_ptr->transformations & PNG_BACKGROUND) + { + info_ptr->color_type &= ~PNG_COLOR_MASK_ALPHA; + info_ptr->num_trans = 0; + info_ptr->background = png_ptr->background; + } +#endif + +#if defined(PNG_READ_GAMMA_SUPPORTED) + if (png_ptr->transformations & PNG_GAMMA) + { +#ifdef PNG_FLOATING_POINT_SUPPORTED + info_ptr->gamma = png_ptr->gamma; +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED + info_ptr->int_gamma = png_ptr->int_gamma; +#endif + } +#endif + +#if defined(PNG_READ_16_TO_8_SUPPORTED) + if ((png_ptr->transformations & PNG_16_TO_8) && (info_ptr->bit_depth == 16)) + info_ptr->bit_depth = 8; +#endif + +#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED) + if (png_ptr->transformations & PNG_GRAY_TO_RGB) + info_ptr->color_type |= PNG_COLOR_MASK_COLOR; +#endif + +#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) + if (png_ptr->transformations & PNG_RGB_TO_GRAY) + info_ptr->color_type &= ~PNG_COLOR_MASK_COLOR; +#endif + +#if defined(PNG_READ_DITHER_SUPPORTED) + if (png_ptr->transformations & PNG_DITHER) + { + if (((info_ptr->color_type == PNG_COLOR_TYPE_RGB) || + (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)) && + png_ptr->palette_lookup && info_ptr->bit_depth == 8) + { + info_ptr->color_type = PNG_COLOR_TYPE_PALETTE; + } + } +#endif + +#if defined(PNG_READ_PACK_SUPPORTED) + if ((png_ptr->transformations & PNG_PACK) && (info_ptr->bit_depth < 8)) + info_ptr->bit_depth = 8; +#endif + + if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) + info_ptr->channels = 1; + else if (info_ptr->color_type & PNG_COLOR_MASK_COLOR) + info_ptr->channels = 3; + else + info_ptr->channels = 1; + +#if defined(PNG_READ_STRIP_ALPHA_SUPPORTED) + if (png_ptr->flags & PNG_FLAG_STRIP_ALPHA) + info_ptr->color_type &= ~PNG_COLOR_MASK_ALPHA; +#endif + + if (info_ptr->color_type & PNG_COLOR_MASK_ALPHA) + info_ptr->channels++; + +#if defined(PNG_READ_FILLER_SUPPORTED) + /* STRIP_ALPHA and FILLER allowed: MASK_ALPHA bit stripped above */ + if ((png_ptr->transformations & PNG_FILLER) && + ((info_ptr->color_type == PNG_COLOR_TYPE_RGB) || + (info_ptr->color_type == PNG_COLOR_TYPE_GRAY))) + { + info_ptr->channels++; + /* If adding a true alpha channel not just filler */ +#if !defined(PNG_1_0_X) + if (png_ptr->transformations & PNG_ADD_ALPHA) + info_ptr->color_type |= PNG_COLOR_MASK_ALPHA; +#endif + } +#endif + +#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED) && \ +defined(PNG_READ_USER_TRANSFORM_SUPPORTED) + if (png_ptr->transformations & PNG_USER_TRANSFORM) + { + if (info_ptr->bit_depth < png_ptr->user_transform_depth) + info_ptr->bit_depth = png_ptr->user_transform_depth; + if (info_ptr->channels < png_ptr->user_transform_channels) + info_ptr->channels = png_ptr->user_transform_channels; + } +#endif + + info_ptr->pixel_depth = (png_byte)(info_ptr->channels * + info_ptr->bit_depth); + + info_ptr->rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, info_ptr->width); + +#if !defined(PNG_READ_EXPAND_SUPPORTED) + if (png_ptr) + return; +#endif +} + +/* Transform the row. The order of transformations is significant, + * and is very touchy. If you add a transformation, take care to + * decide how it fits in with the other transformations here. + */ +void /* PRIVATE */ +png_do_read_transformations(png_structp png_ptr) +{ + png_debug(1, "in png_do_read_transformations"); + if (png_ptr->row_buf == NULL) + { +#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE) + char msg[50]; + + png_snprintf2(msg, 50, + "NULL row buffer for row %ld, pass %d", (long)png_ptr->row_number, + png_ptr->pass); + png_error(png_ptr, msg); +#else + png_error(png_ptr, "NULL row buffer"); +#endif + } +#ifdef PNG_WARN_UNINITIALIZED_ROW + if (!(png_ptr->flags & PNG_FLAG_ROW_INIT)) + /* Application has failed to call either png_read_start_image() + * or png_read_update_info() after setting transforms that expand + * pixels. This check added to libpng-1.2.19 + */ +#if (PNG_WARN_UNINITIALIZED_ROW==1) + png_error(png_ptr, "Uninitialized row"); +#else + png_warning(png_ptr, "Uninitialized row"); +#endif +#endif + +#if defined(PNG_READ_EXPAND_SUPPORTED) + if (png_ptr->transformations & PNG_EXPAND) + { + if (png_ptr->row_info.color_type == PNG_COLOR_TYPE_PALETTE) + { + png_do_expand_palette(&(png_ptr->row_info), png_ptr->row_buf + 1, + png_ptr->palette, png_ptr->trans, png_ptr->num_trans); + } + else + { + if (png_ptr->num_trans && + (png_ptr->transformations & PNG_EXPAND_tRNS)) + png_do_expand(&(png_ptr->row_info), png_ptr->row_buf + 1, + &(png_ptr->trans_values)); + else + png_do_expand(&(png_ptr->row_info), png_ptr->row_buf + 1, + NULL); + } + } +#endif + +#if defined(PNG_READ_STRIP_ALPHA_SUPPORTED) + if (png_ptr->flags & PNG_FLAG_STRIP_ALPHA) + png_do_strip_filler(&(png_ptr->row_info), png_ptr->row_buf + 1, + PNG_FLAG_FILLER_AFTER | (png_ptr->flags & PNG_FLAG_STRIP_ALPHA)); +#endif + +#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) + if (png_ptr->transformations & PNG_RGB_TO_GRAY) + { + int rgb_error = + png_do_rgb_to_gray(png_ptr, &(png_ptr->row_info), png_ptr->row_buf + 1); + if (rgb_error) + { + png_ptr->rgb_to_gray_status=1; + if ((png_ptr->transformations & PNG_RGB_TO_GRAY) == + PNG_RGB_TO_GRAY_WARN) + png_warning(png_ptr, "png_do_rgb_to_gray found nongray pixel"); + if ((png_ptr->transformations & PNG_RGB_TO_GRAY) == + PNG_RGB_TO_GRAY_ERR) + png_error(png_ptr, "png_do_rgb_to_gray found nongray pixel"); + } + } +#endif + +/* From Andreas Dilger e-mail to png-implement, 26 March 1998: + * + * In most cases, the "simple transparency" should be done prior to doing + * gray-to-RGB, or you will have to test 3x as many bytes to check if a + * pixel is transparent. You would also need to make sure that the + * transparency information is upgraded to RGB. + * + * To summarize, the current flow is: + * - Gray + simple transparency -> compare 1 or 2 gray bytes and composite + * with background "in place" if transparent, + * convert to RGB if necessary + * - Gray + alpha -> composite with gray background and remove alpha bytes, + * convert to RGB if necessary + * + * To support RGB backgrounds for gray images we need: + * - Gray + simple transparency -> convert to RGB + simple transparency, + * compare 3 or 6 bytes and composite with + * background "in place" if transparent + * (3x compare/pixel compared to doing + * composite with gray bkgrnd) + * - Gray + alpha -> convert to RGB + alpha, composite with background and + * remove alpha bytes (3x float + * operations/pixel compared with composite + * on gray background) + * + * Greg's change will do this. The reason it wasn't done before is for + * performance, as this increases the per-pixel operations. If we would check + * in advance if the background was gray or RGB, and position the gray-to-RGB + * transform appropriately, then it would save a lot of work/time. + */ + +#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED) + /* If gray -> RGB, do so now only if background is non-gray; else do later + * for performance reasons + */ + if ((png_ptr->transformations & PNG_GRAY_TO_RGB) && + !(png_ptr->mode & PNG_BACKGROUND_IS_GRAY)) + png_do_gray_to_rgb(&(png_ptr->row_info), png_ptr->row_buf + 1); +#endif + +#if defined(PNG_READ_BACKGROUND_SUPPORTED) + if ((png_ptr->transformations & PNG_BACKGROUND) && + ((png_ptr->num_trans != 0 ) || + (png_ptr->color_type & PNG_COLOR_MASK_ALPHA))) + png_do_background(&(png_ptr->row_info), png_ptr->row_buf + 1, + &(png_ptr->trans_values), &(png_ptr->background) +#if defined(PNG_READ_GAMMA_SUPPORTED) + , &(png_ptr->background_1), + png_ptr->gamma_table, png_ptr->gamma_from_1, + png_ptr->gamma_to_1, png_ptr->gamma_16_table, + png_ptr->gamma_16_from_1, png_ptr->gamma_16_to_1, + png_ptr->gamma_shift +#endif +); +#endif + +#if defined(PNG_READ_GAMMA_SUPPORTED) + if ((png_ptr->transformations & PNG_GAMMA) && +#if defined(PNG_READ_BACKGROUND_SUPPORTED) + !((png_ptr->transformations & PNG_BACKGROUND) && + ((png_ptr->num_trans != 0) || + (png_ptr->color_type & PNG_COLOR_MASK_ALPHA))) && +#endif + (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE)) + png_do_gamma(&(png_ptr->row_info), png_ptr->row_buf + 1, + png_ptr->gamma_table, png_ptr->gamma_16_table, + png_ptr->gamma_shift); +#endif + +#if defined(PNG_READ_16_TO_8_SUPPORTED) + if (png_ptr->transformations & PNG_16_TO_8) + png_do_chop(&(png_ptr->row_info), png_ptr->row_buf + 1); +#endif + +#if defined(PNG_READ_DITHER_SUPPORTED) + if (png_ptr->transformations & PNG_DITHER) + { + png_do_dither((png_row_infop)&(png_ptr->row_info), png_ptr->row_buf + 1, + png_ptr->palette_lookup, png_ptr->dither_index); + if (png_ptr->row_info.rowbytes == (png_uint_32)0) + png_error(png_ptr, "png_do_dither returned rowbytes=0"); + } +#endif + +#if defined(PNG_READ_INVERT_SUPPORTED) + if (png_ptr->transformations & PNG_INVERT_MONO) + png_do_invert(&(png_ptr->row_info), png_ptr->row_buf + 1); +#endif + +#if defined(PNG_READ_SHIFT_SUPPORTED) + if (png_ptr->transformations & PNG_SHIFT) + png_do_unshift(&(png_ptr->row_info), png_ptr->row_buf + 1, + &(png_ptr->shift)); +#endif + +#if defined(PNG_READ_PACK_SUPPORTED) + if (png_ptr->transformations & PNG_PACK) + png_do_unpack(&(png_ptr->row_info), png_ptr->row_buf + 1); +#endif + +#if defined(PNG_READ_BGR_SUPPORTED) + if (png_ptr->transformations & PNG_BGR) + png_do_bgr(&(png_ptr->row_info), png_ptr->row_buf + 1); +#endif + +#if defined(PNG_READ_PACKSWAP_SUPPORTED) + if (png_ptr->transformations & PNG_PACKSWAP) + png_do_packswap(&(png_ptr->row_info), png_ptr->row_buf + 1); +#endif + +#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED) + /* If gray -> RGB, do so now only if we did not do so above */ + if ((png_ptr->transformations & PNG_GRAY_TO_RGB) && + (png_ptr->mode & PNG_BACKGROUND_IS_GRAY)) + png_do_gray_to_rgb(&(png_ptr->row_info), png_ptr->row_buf + 1); +#endif + +#if defined(PNG_READ_FILLER_SUPPORTED) + if (png_ptr->transformations & PNG_FILLER) + png_do_read_filler(&(png_ptr->row_info), png_ptr->row_buf + 1, + (png_uint_32)png_ptr->filler, png_ptr->flags); +#endif + +#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) + if (png_ptr->transformations & PNG_INVERT_ALPHA) + png_do_read_invert_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1); +#endif + +#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) + if (png_ptr->transformations & PNG_SWAP_ALPHA) + png_do_read_swap_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1); +#endif + +#if defined(PNG_READ_SWAP_SUPPORTED) + if (png_ptr->transformations & PNG_SWAP_BYTES) + png_do_swap(&(png_ptr->row_info), png_ptr->row_buf + 1); +#endif + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) + if (png_ptr->transformations & PNG_USER_TRANSFORM) + { + if (png_ptr->read_user_transform_fn != NULL) + (*(png_ptr->read_user_transform_fn)) /* User read transform function */ + (png_ptr, /* png_ptr */ + &(png_ptr->row_info), /* row_info: */ + /* png_uint_32 width; width of row */ + /* png_uint_32 rowbytes; number of bytes in row */ + /* png_byte color_type; color type of pixels */ + /* png_byte bit_depth; bit depth of samples */ + /* png_byte channels; number of channels (1-4) */ + /* png_byte pixel_depth; bits per pixel (depth*channels) */ + png_ptr->row_buf + 1); /* start of pixel data for row */ +#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED) + if (png_ptr->user_transform_depth) + png_ptr->row_info.bit_depth = png_ptr->user_transform_depth; + if (png_ptr->user_transform_channels) + png_ptr->row_info.channels = png_ptr->user_transform_channels; +#endif + png_ptr->row_info.pixel_depth = (png_byte)(png_ptr->row_info.bit_depth * + png_ptr->row_info.channels); + png_ptr->row_info.rowbytes = PNG_ROWBYTES(png_ptr->row_info.pixel_depth, + png_ptr->row_info.width); + } +#endif + +} + +#if defined(PNG_READ_PACK_SUPPORTED) +/* Unpack pixels of 1, 2, or 4 bits per pixel into 1 byte per pixel, + * without changing the actual values. Thus, if you had a row with + * a bit depth of 1, you would end up with bytes that only contained + * the numbers 0 or 1. If you would rather they contain 0 and 255, use + * png_do_shift() after this. + */ +void /* PRIVATE */ +png_do_unpack(png_row_infop row_info, png_bytep row) +{ + png_debug(1, "in png_do_unpack"); +#if defined(PNG_USELESS_TESTS_SUPPORTED) + if (row != NULL && row_info != NULL && row_info->bit_depth < 8) +#else + if (row_info->bit_depth < 8) +#endif + { + png_uint_32 i; + png_uint_32 row_width=row_info->width; + + switch (row_info->bit_depth) + { + case 1: + { + png_bytep sp = row + (png_size_t)((row_width - 1) >> 3); + png_bytep dp = row + (png_size_t)row_width - 1; + png_uint_32 shift = 7 - (int)((row_width + 7) & 0x07); + for (i = 0; i < row_width; i++) + { + *dp = (png_byte)((*sp >> shift) & 0x01); + if (shift == 7) + { + shift = 0; + sp--; + } + else + shift++; + + dp--; + } + break; + } + + case 2: + { + + png_bytep sp = row + (png_size_t)((row_width - 1) >> 2); + png_bytep dp = row + (png_size_t)row_width - 1; + png_uint_32 shift = (int)((3 - ((row_width + 3) & 0x03)) << 1); + for (i = 0; i < row_width; i++) + { + *dp = (png_byte)((*sp >> shift) & 0x03); + if (shift == 6) + { + shift = 0; + sp--; + } + else + shift += 2; + + dp--; + } + break; + } + + case 4: + { + png_bytep sp = row + (png_size_t)((row_width - 1) >> 1); + png_bytep dp = row + (png_size_t)row_width - 1; + png_uint_32 shift = (int)((1 - ((row_width + 1) & 0x01)) << 2); + for (i = 0; i < row_width; i++) + { + *dp = (png_byte)((*sp >> shift) & 0x0f); + if (shift == 4) + { + shift = 0; + sp--; + } + else + shift = 4; + + dp--; + } + break; + } + } + row_info->bit_depth = 8; + row_info->pixel_depth = (png_byte)(8 * row_info->channels); + row_info->rowbytes = row_width * row_info->channels; + } +} +#endif + +#if defined(PNG_READ_SHIFT_SUPPORTED) +/* Reverse the effects of png_do_shift. This routine merely shifts the + * pixels back to their significant bits values. Thus, if you have + * a row of bit depth 8, but only 5 are significant, this will shift + * the values back to 0 through 31. + */ +void /* PRIVATE */ +png_do_unshift(png_row_infop row_info, png_bytep row, png_color_8p sig_bits) +{ + png_debug(1, "in png_do_unshift"); + if ( +#if defined(PNG_USELESS_TESTS_SUPPORTED) + row != NULL && row_info != NULL && sig_bits != NULL && +#endif + row_info->color_type != PNG_COLOR_TYPE_PALETTE) + { + int shift[4]; + int channels = 0; + int c; + png_uint_16 value = 0; + png_uint_32 row_width = row_info->width; + + if (row_info->color_type & PNG_COLOR_MASK_COLOR) + { + shift[channels++] = row_info->bit_depth - sig_bits->red; + shift[channels++] = row_info->bit_depth - sig_bits->green; + shift[channels++] = row_info->bit_depth - sig_bits->blue; + } + else + { + shift[channels++] = row_info->bit_depth - sig_bits->gray; + } + if (row_info->color_type & PNG_COLOR_MASK_ALPHA) + { + shift[channels++] = row_info->bit_depth - sig_bits->alpha; + } + + for (c = 0; c < channels; c++) + { + if (shift[c] <= 0) + shift[c] = 0; + else + value = 1; + } + + if (!value) + return; + + switch (row_info->bit_depth) + { + case 2: + { + png_bytep bp; + png_uint_32 i; + png_uint_32 istop = row_info->rowbytes; + + for (bp = row, i = 0; i < istop; i++) + { + *bp >>= 1; + *bp++ &= 0x55; + } + break; + } + + case 4: + { + png_bytep bp = row; + png_uint_32 i; + png_uint_32 istop = row_info->rowbytes; + png_byte mask = (png_byte)((((int)0xf0 >> shift[0]) & (int)0xf0) | + (png_byte)((int)0xf >> shift[0])); + + for (i = 0; i < istop; i++) + { + *bp >>= shift[0]; + *bp++ &= mask; + } + break; + } + + case 8: + { + png_bytep bp = row; + png_uint_32 i; + png_uint_32 istop = row_width * channels; + + for (i = 0; i < istop; i++) + { + *bp++ >>= shift[i%channels]; + } + break; + } + + case 16: + { + png_bytep bp = row; + png_uint_32 i; + png_uint_32 istop = channels * row_width; + + for (i = 0; i < istop; i++) + { + value = (png_uint_16)((*bp << 8) + *(bp + 1)); + value >>= shift[i%channels]; + *bp++ = (png_byte)(value >> 8); + *bp++ = (png_byte)(value & 0xff); + } + break; + } + } + } +} +#endif + +#if defined(PNG_READ_16_TO_8_SUPPORTED) +/* Chop rows of bit depth 16 down to 8 */ +void /* PRIVATE */ +png_do_chop(png_row_infop row_info, png_bytep row) +{ + png_debug(1, "in png_do_chop"); +#if defined(PNG_USELESS_TESTS_SUPPORTED) + if (row != NULL && row_info != NULL && row_info->bit_depth == 16) +#else + if (row_info->bit_depth == 16) +#endif + { + png_bytep sp = row; + png_bytep dp = row; + png_uint_32 i; + png_uint_32 istop = row_info->width * row_info->channels; + + for (i = 0; i> 8)) >> 8; + * + * Approximate calculation with shift/add instead of multiply/divide: + * *dp = ((((png_uint_32)(*sp) << 8) | + * (png_uint_32)((int)(*(sp + 1)) - *sp)) + 128) >> 8; + * + * What we actually do to avoid extra shifting and conversion: + */ + + *dp = *sp + ((((int)(*(sp + 1)) - *sp) > 128) ? 1 : 0); +#else + /* Simply discard the low order byte */ + *dp = *sp; +#endif + } + row_info->bit_depth = 8; + row_info->pixel_depth = (png_byte)(8 * row_info->channels); + row_info->rowbytes = row_info->width * row_info->channels; + } +} +#endif + +#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) +void /* PRIVATE */ +png_do_read_swap_alpha(png_row_infop row_info, png_bytep row) +{ + png_debug(1, "in png_do_read_swap_alpha"); +#if defined(PNG_USELESS_TESTS_SUPPORTED) + if (row != NULL && row_info != NULL) +#endif + { + png_uint_32 row_width = row_info->width; + if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) + { + /* This converts from RGBA to ARGB */ + if (row_info->bit_depth == 8) + { + png_bytep sp = row + row_info->rowbytes; + png_bytep dp = sp; + png_byte save; + png_uint_32 i; + + for (i = 0; i < row_width; i++) + { + save = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = save; + } + } + /* This converts from RRGGBBAA to AARRGGBB */ + else + { + png_bytep sp = row + row_info->rowbytes; + png_bytep dp = sp; + png_byte save[2]; + png_uint_32 i; + + for (i = 0; i < row_width; i++) + { + save[0] = *(--sp); + save[1] = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = save[0]; + *(--dp) = save[1]; + } + } + } + else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) + { + /* This converts from GA to AG */ + if (row_info->bit_depth == 8) + { + png_bytep sp = row + row_info->rowbytes; + png_bytep dp = sp; + png_byte save; + png_uint_32 i; + + for (i = 0; i < row_width; i++) + { + save = *(--sp); + *(--dp) = *(--sp); + *(--dp) = save; + } + } + /* This converts from GGAA to AAGG */ + else + { + png_bytep sp = row + row_info->rowbytes; + png_bytep dp = sp; + png_byte save[2]; + png_uint_32 i; + + for (i = 0; i < row_width; i++) + { + save[0] = *(--sp); + save[1] = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = save[0]; + *(--dp) = save[1]; + } + } + } + } +} +#endif + +#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) +void /* PRIVATE */ +png_do_read_invert_alpha(png_row_infop row_info, png_bytep row) +{ + png_debug(1, "in png_do_read_invert_alpha"); +#if defined(PNG_USELESS_TESTS_SUPPORTED) + if (row != NULL && row_info != NULL) +#endif + { + png_uint_32 row_width = row_info->width; + if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) + { + /* This inverts the alpha channel in RGBA */ + if (row_info->bit_depth == 8) + { + png_bytep sp = row + row_info->rowbytes; + png_bytep dp = sp; + png_uint_32 i; + + for (i = 0; i < row_width; i++) + { + *(--dp) = (png_byte)(255 - *(--sp)); + +/* This does nothing: + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + We can replace it with: +*/ + sp-=3; + dp=sp; + } + } + /* This inverts the alpha channel in RRGGBBAA */ + else + { + png_bytep sp = row + row_info->rowbytes; + png_bytep dp = sp; + png_uint_32 i; + + for (i = 0; i < row_width; i++) + { + *(--dp) = (png_byte)(255 - *(--sp)); + *(--dp) = (png_byte)(255 - *(--sp)); + +/* This does nothing: + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + We can replace it with: +*/ + sp-=6; + dp=sp; + } + } + } + else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) + { + /* This inverts the alpha channel in GA */ + if (row_info->bit_depth == 8) + { + png_bytep sp = row + row_info->rowbytes; + png_bytep dp = sp; + png_uint_32 i; + + for (i = 0; i < row_width; i++) + { + *(--dp) = (png_byte)(255 - *(--sp)); + *(--dp) = *(--sp); + } + } + /* This inverts the alpha channel in GGAA */ + else + { + png_bytep sp = row + row_info->rowbytes; + png_bytep dp = sp; + png_uint_32 i; + + for (i = 0; i < row_width; i++) + { + *(--dp) = (png_byte)(255 - *(--sp)); + *(--dp) = (png_byte)(255 - *(--sp)); +/* + *(--dp) = *(--sp); + *(--dp) = *(--sp); +*/ + sp-=2; + dp=sp; + } + } + } + } +} +#endif + +#if defined(PNG_READ_FILLER_SUPPORTED) +/* Add filler channel if we have RGB color */ +void /* PRIVATE */ +png_do_read_filler(png_row_infop row_info, png_bytep row, + png_uint_32 filler, png_uint_32 flags) +{ + png_uint_32 i; + png_uint_32 row_width = row_info->width; + + png_byte hi_filler = (png_byte)((filler>>8) & 0xff); + png_byte lo_filler = (png_byte)(filler & 0xff); + + png_debug(1, "in png_do_read_filler"); + if ( +#if defined(PNG_USELESS_TESTS_SUPPORTED) + row != NULL && row_info != NULL && +#endif + row_info->color_type == PNG_COLOR_TYPE_GRAY) + { + if (row_info->bit_depth == 8) + { + /* This changes the data from G to GX */ + if (flags & PNG_FLAG_FILLER_AFTER) + { + png_bytep sp = row + (png_size_t)row_width; + png_bytep dp = sp + (png_size_t)row_width; + for (i = 1; i < row_width; i++) + { + *(--dp) = lo_filler; + *(--dp) = *(--sp); + } + *(--dp) = lo_filler; + row_info->channels = 2; + row_info->pixel_depth = 16; + row_info->rowbytes = row_width * 2; + } + /* This changes the data from G to XG */ + else + { + png_bytep sp = row + (png_size_t)row_width; + png_bytep dp = sp + (png_size_t)row_width; + for (i = 0; i < row_width; i++) + { + *(--dp) = *(--sp); + *(--dp) = lo_filler; + } + row_info->channels = 2; + row_info->pixel_depth = 16; + row_info->rowbytes = row_width * 2; + } + } + else if (row_info->bit_depth == 16) + { + /* This changes the data from GG to GGXX */ + if (flags & PNG_FLAG_FILLER_AFTER) + { + png_bytep sp = row + (png_size_t)row_width * 2; + png_bytep dp = sp + (png_size_t)row_width * 2; + for (i = 1; i < row_width; i++) + { + *(--dp) = hi_filler; + *(--dp) = lo_filler; + *(--dp) = *(--sp); + *(--dp) = *(--sp); + } + *(--dp) = hi_filler; + *(--dp) = lo_filler; + row_info->channels = 2; + row_info->pixel_depth = 32; + row_info->rowbytes = row_width * 4; + } + /* This changes the data from GG to XXGG */ + else + { + png_bytep sp = row + (png_size_t)row_width * 2; + png_bytep dp = sp + (png_size_t)row_width * 2; + for (i = 0; i < row_width; i++) + { + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = hi_filler; + *(--dp) = lo_filler; + } + row_info->channels = 2; + row_info->pixel_depth = 32; + row_info->rowbytes = row_width * 4; + } + } + } /* COLOR_TYPE == GRAY */ + else if (row_info->color_type == PNG_COLOR_TYPE_RGB) + { + if (row_info->bit_depth == 8) + { + /* This changes the data from RGB to RGBX */ + if (flags & PNG_FLAG_FILLER_AFTER) + { + png_bytep sp = row + (png_size_t)row_width * 3; + png_bytep dp = sp + (png_size_t)row_width; + for (i = 1; i < row_width; i++) + { + *(--dp) = lo_filler; + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + } + *(--dp) = lo_filler; + row_info->channels = 4; + row_info->pixel_depth = 32; + row_info->rowbytes = row_width * 4; + } + /* This changes the data from RGB to XRGB */ + else + { + png_bytep sp = row + (png_size_t)row_width * 3; + png_bytep dp = sp + (png_size_t)row_width; + for (i = 0; i < row_width; i++) + { + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = lo_filler; + } + row_info->channels = 4; + row_info->pixel_depth = 32; + row_info->rowbytes = row_width * 4; + } + } + else if (row_info->bit_depth == 16) + { + /* This changes the data from RRGGBB to RRGGBBXX */ + if (flags & PNG_FLAG_FILLER_AFTER) + { + png_bytep sp = row + (png_size_t)row_width * 6; + png_bytep dp = sp + (png_size_t)row_width * 2; + for (i = 1; i < row_width; i++) + { + *(--dp) = hi_filler; + *(--dp) = lo_filler; + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + } + *(--dp) = hi_filler; + *(--dp) = lo_filler; + row_info->channels = 4; + row_info->pixel_depth = 64; + row_info->rowbytes = row_width * 8; + } + /* This changes the data from RRGGBB to XXRRGGBB */ + else + { + png_bytep sp = row + (png_size_t)row_width * 6; + png_bytep dp = sp + (png_size_t)row_width * 2; + for (i = 0; i < row_width; i++) + { + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = *(--sp); + *(--dp) = hi_filler; + *(--dp) = lo_filler; + } + row_info->channels = 4; + row_info->pixel_depth = 64; + row_info->rowbytes = row_width * 8; + } + } + } /* COLOR_TYPE == RGB */ +} +#endif + +#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED) +/* Expand grayscale files to RGB, with or without alpha */ +void /* PRIVATE */ +png_do_gray_to_rgb(png_row_infop row_info, png_bytep row) +{ + png_uint_32 i; + png_uint_32 row_width = row_info->width; + + png_debug(1, "in png_do_gray_to_rgb"); + if (row_info->bit_depth >= 8 && +#if defined(PNG_USELESS_TESTS_SUPPORTED) + row != NULL && row_info != NULL && +#endif + !(row_info->color_type & PNG_COLOR_MASK_COLOR)) + { + if (row_info->color_type == PNG_COLOR_TYPE_GRAY) + { + if (row_info->bit_depth == 8) + { + png_bytep sp = row + (png_size_t)row_width - 1; + png_bytep dp = sp + (png_size_t)row_width * 2; + for (i = 0; i < row_width; i++) + { + *(dp--) = *sp; + *(dp--) = *sp; + *(dp--) = *(sp--); + } + } + else + { + png_bytep sp = row + (png_size_t)row_width * 2 - 1; + png_bytep dp = sp + (png_size_t)row_width * 4; + for (i = 0; i < row_width; i++) + { + *(dp--) = *sp; + *(dp--) = *(sp - 1); + *(dp--) = *sp; + *(dp--) = *(sp - 1); + *(dp--) = *(sp--); + *(dp--) = *(sp--); + } + } + } + else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) + { + if (row_info->bit_depth == 8) + { + png_bytep sp = row + (png_size_t)row_width * 2 - 1; + png_bytep dp = sp + (png_size_t)row_width * 2; + for (i = 0; i < row_width; i++) + { + *(dp--) = *(sp--); + *(dp--) = *sp; + *(dp--) = *sp; + *(dp--) = *(sp--); + } + } + else + { + png_bytep sp = row + (png_size_t)row_width * 4 - 1; + png_bytep dp = sp + (png_size_t)row_width * 4; + for (i = 0; i < row_width; i++) + { + *(dp--) = *(sp--); + *(dp--) = *(sp--); + *(dp--) = *sp; + *(dp--) = *(sp - 1); + *(dp--) = *sp; + *(dp--) = *(sp - 1); + *(dp--) = *(sp--); + *(dp--) = *(sp--); + } + } + } + row_info->channels += (png_byte)2; + row_info->color_type |= PNG_COLOR_MASK_COLOR; + row_info->pixel_depth = (png_byte)(row_info->channels * + row_info->bit_depth); + row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width); + } +} +#endif + +#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) +/* Reduce RGB files to grayscale, with or without alpha + * using the equation given in Poynton's ColorFAQ at + * (THIS LINK IS DEAD June 2008) + * New link: + * + * Charles Poynton poynton at poynton.com + * + * Y = 0.212671 * R + 0.715160 * G + 0.072169 * B + * + * We approximate this with + * + * Y = 0.21268 * R + 0.7151 * G + 0.07217 * B + * + * which can be expressed with integers as + * + * Y = (6969 * R + 23434 * G + 2365 * B)/32768 + * + * The calculation is to be done in a linear colorspace. + * + * Other integer coefficents can be used via png_set_rgb_to_gray(). + */ +int /* PRIVATE */ +png_do_rgb_to_gray(png_structp png_ptr, png_row_infop row_info, png_bytep row) + +{ + png_uint_32 i; + + png_uint_32 row_width = row_info->width; + int rgb_error = 0; + + png_debug(1, "in png_do_rgb_to_gray"); + if ( +#if defined(PNG_USELESS_TESTS_SUPPORTED) + row != NULL && row_info != NULL && +#endif + (row_info->color_type & PNG_COLOR_MASK_COLOR)) + { + png_uint_32 rc = png_ptr->rgb_to_gray_red_coeff; + png_uint_32 gc = png_ptr->rgb_to_gray_green_coeff; + png_uint_32 bc = png_ptr->rgb_to_gray_blue_coeff; + + if (row_info->color_type == PNG_COLOR_TYPE_RGB) + { + if (row_info->bit_depth == 8) + { +#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) + if (png_ptr->gamma_from_1 != NULL && png_ptr->gamma_to_1 != NULL) + { + png_bytep sp = row; + png_bytep dp = row; + + for (i = 0; i < row_width; i++) + { + png_byte red = png_ptr->gamma_to_1[*(sp++)]; + png_byte green = png_ptr->gamma_to_1[*(sp++)]; + png_byte blue = png_ptr->gamma_to_1[*(sp++)]; + if (red != green || red != blue) + { + rgb_error |= 1; + *(dp++) = png_ptr->gamma_from_1[ + (rc*red + gc*green + bc*blue)>>15]; + } + else + *(dp++) = *(sp - 1); + } + } + else +#endif + { + png_bytep sp = row; + png_bytep dp = row; + for (i = 0; i < row_width; i++) + { + png_byte red = *(sp++); + png_byte green = *(sp++); + png_byte blue = *(sp++); + if (red != green || red != blue) + { + rgb_error |= 1; + *(dp++) = (png_byte)((rc*red + gc*green + bc*blue)>>15); + } + else + *(dp++) = *(sp - 1); + } + } + } + + else /* RGB bit_depth == 16 */ + { +#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) + if (png_ptr->gamma_16_to_1 != NULL && + png_ptr->gamma_16_from_1 != NULL) + { + png_bytep sp = row; + png_bytep dp = row; + for (i = 0; i < row_width; i++) + { + png_uint_16 red, green, blue, w; + + red = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2; + green = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2; + blue = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2; + + if (red == green && red == blue) + w = red; + else + { + png_uint_16 red_1 = png_ptr->gamma_16_to_1[(red&0xff) >> + png_ptr->gamma_shift][red>>8]; + png_uint_16 green_1 = png_ptr->gamma_16_to_1[(green&0xff) >> + png_ptr->gamma_shift][green>>8]; + png_uint_16 blue_1 = png_ptr->gamma_16_to_1[(blue&0xff) >> + png_ptr->gamma_shift][blue>>8]; + png_uint_16 gray16 = (png_uint_16)((rc*red_1 + gc*green_1 + + bc*blue_1)>>15); + w = png_ptr->gamma_16_from_1[(gray16&0xff) >> + png_ptr->gamma_shift][gray16 >> 8]; + rgb_error |= 1; + } + + *(dp++) = (png_byte)((w>>8) & 0xff); + *(dp++) = (png_byte)(w & 0xff); + } + } + else +#endif + { + png_bytep sp = row; + png_bytep dp = row; + for (i = 0; i < row_width; i++) + { + png_uint_16 red, green, blue, gray16; + + red = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2; + green = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2; + blue = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2; + + if (red != green || red != blue) + rgb_error |= 1; + gray16 = (png_uint_16)((rc*red + gc*green + bc*blue)>>15); + *(dp++) = (png_byte)((gray16>>8) & 0xff); + *(dp++) = (png_byte)(gray16 & 0xff); + } + } + } + } + if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) + { + if (row_info->bit_depth == 8) + { +#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) + if (png_ptr->gamma_from_1 != NULL && png_ptr->gamma_to_1 != NULL) + { + png_bytep sp = row; + png_bytep dp = row; + for (i = 0; i < row_width; i++) + { + png_byte red = png_ptr->gamma_to_1[*(sp++)]; + png_byte green = png_ptr->gamma_to_1[*(sp++)]; + png_byte blue = png_ptr->gamma_to_1[*(sp++)]; + if (red != green || red != blue) + rgb_error |= 1; + *(dp++) = png_ptr->gamma_from_1 + [(rc*red + gc*green + bc*blue)>>15]; + *(dp++) = *(sp++); /* alpha */ + } + } + else +#endif + { + png_bytep sp = row; + png_bytep dp = row; + for (i = 0; i < row_width; i++) + { + png_byte red = *(sp++); + png_byte green = *(sp++); + png_byte blue = *(sp++); + if (red != green || red != blue) + rgb_error |= 1; + *(dp++) = (png_byte)((rc*red + gc*green + bc*blue)>>15); + *(dp++) = *(sp++); /* alpha */ + } + } + } + else /* RGBA bit_depth == 16 */ + { +#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) + if (png_ptr->gamma_16_to_1 != NULL && + png_ptr->gamma_16_from_1 != NULL) + { + png_bytep sp = row; + png_bytep dp = row; + for (i = 0; i < row_width; i++) + { + png_uint_16 red, green, blue, w; + + red = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2; + green = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2; + blue = (png_uint_16)(((*(sp))<<8) | *(sp+1)); sp+=2; + + if (red == green && red == blue) + w = red; + else + { + png_uint_16 red_1 = png_ptr->gamma_16_to_1[(red&0xff) >> + png_ptr->gamma_shift][red>>8]; + png_uint_16 green_1 = png_ptr->gamma_16_to_1[(green&0xff) >> + png_ptr->gamma_shift][green>>8]; + png_uint_16 blue_1 = png_ptr->gamma_16_to_1[(blue&0xff) >> + png_ptr->gamma_shift][blue>>8]; + png_uint_16 gray16 = (png_uint_16)((rc * red_1 + + gc * green_1 + bc * blue_1)>>15); + w = png_ptr->gamma_16_from_1[(gray16&0xff) >> + png_ptr->gamma_shift][gray16 >> 8]; + rgb_error |= 1; + } + + *(dp++) = (png_byte)((w>>8) & 0xff); + *(dp++) = (png_byte)(w & 0xff); + *(dp++) = *(sp++); /* alpha */ + *(dp++) = *(sp++); + } + } + else +#endif + { + png_bytep sp = row; + png_bytep dp = row; + for (i = 0; i < row_width; i++) + { + png_uint_16 red, green, blue, gray16; + red = (png_uint_16)((*(sp)<<8) | *(sp+1)); sp+=2; + green = (png_uint_16)((*(sp)<<8) | *(sp+1)); sp+=2; + blue = (png_uint_16)((*(sp)<<8) | *(sp+1)); sp+=2; + if (red != green || red != blue) + rgb_error |= 1; + gray16 = (png_uint_16)((rc*red + gc*green + bc*blue)>>15); + *(dp++) = (png_byte)((gray16>>8) & 0xff); + *(dp++) = (png_byte)(gray16 & 0xff); + *(dp++) = *(sp++); /* alpha */ + *(dp++) = *(sp++); + } + } + } + } + row_info->channels -= (png_byte)2; + row_info->color_type &= ~PNG_COLOR_MASK_COLOR; + row_info->pixel_depth = (png_byte)(row_info->channels * + row_info->bit_depth); + row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width); + } + return rgb_error; +} +#endif + +/* Build a grayscale palette. Palette is assumed to be 1 << bit_depth + * large of png_color. This lets grayscale images be treated as + * paletted. Most useful for gamma correction and simplification + * of code. + */ +void PNGAPI +png_build_grayscale_palette(int bit_depth, png_colorp palette) +{ + int num_palette; + int color_inc; + int i; + int v; + + png_debug(1, "in png_do_build_grayscale_palette"); + if (palette == NULL) + return; + + switch (bit_depth) + { + case 1: + num_palette = 2; + color_inc = 0xff; + break; + + case 2: + num_palette = 4; + color_inc = 0x55; + break; + + case 4: + num_palette = 16; + color_inc = 0x11; + break; + + case 8: + num_palette = 256; + color_inc = 1; + break; + + default: + num_palette = 0; + color_inc = 0; + break; + } + + for (i = 0, v = 0; i < num_palette; i++, v += color_inc) + { + palette[i].red = (png_byte)v; + palette[i].green = (png_byte)v; + palette[i].blue = (png_byte)v; + } +} + +/* This function is currently unused. Do we really need it? */ +#if defined(PNG_READ_DITHER_SUPPORTED) && defined(PNG_CORRECT_PALETTE_SUPPORTED) +void /* PRIVATE */ +png_correct_palette(png_structp png_ptr, png_colorp palette, + int num_palette) +{ + png_debug(1, "in png_correct_palette"); +#if defined(PNG_READ_BACKGROUND_SUPPORTED) && \ + defined(PNG_READ_GAMMA_SUPPORTED) && defined(PNG_FLOATING_POINT_SUPPORTED) + if (png_ptr->transformations & (PNG_GAMMA | PNG_BACKGROUND)) + { + png_color back, back_1; + + if (png_ptr->background_gamma_type == PNG_BACKGROUND_GAMMA_FILE) + { + back.red = png_ptr->gamma_table[png_ptr->background.red]; + back.green = png_ptr->gamma_table[png_ptr->background.green]; + back.blue = png_ptr->gamma_table[png_ptr->background.blue]; + + back_1.red = png_ptr->gamma_to_1[png_ptr->background.red]; + back_1.green = png_ptr->gamma_to_1[png_ptr->background.green]; + back_1.blue = png_ptr->gamma_to_1[png_ptr->background.blue]; + } + else + { + double g; + + g = 1.0 / (png_ptr->background_gamma * png_ptr->screen_gamma); + + if (png_ptr->background_gamma_type == PNG_BACKGROUND_GAMMA_SCREEN || + fabs(g - 1.0) < PNG_GAMMA_THRESHOLD) + { + back.red = png_ptr->background.red; + back.green = png_ptr->background.green; + back.blue = png_ptr->background.blue; + } + else + { + back.red = + (png_byte)(pow((double)png_ptr->background.red/255, g) * + 255.0 + 0.5); + back.green = + (png_byte)(pow((double)png_ptr->background.green/255, g) * + 255.0 + 0.5); + back.blue = + (png_byte)(pow((double)png_ptr->background.blue/255, g) * + 255.0 + 0.5); + } + + g = 1.0 / png_ptr->background_gamma; + + back_1.red = + (png_byte)(pow((double)png_ptr->background.red/255, g) * + 255.0 + 0.5); + back_1.green = + (png_byte)(pow((double)png_ptr->background.green/255, g) * + 255.0 + 0.5); + back_1.blue = + (png_byte)(pow((double)png_ptr->background.blue/255, g) * + 255.0 + 0.5); + } + + if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) + { + png_uint_32 i; + + for (i = 0; i < (png_uint_32)num_palette; i++) + { + if (i < png_ptr->num_trans && png_ptr->trans[i] == 0) + { + palette[i] = back; + } + else if (i < png_ptr->num_trans && png_ptr->trans[i] != 0xff) + { + png_byte v, w; + + v = png_ptr->gamma_to_1[png_ptr->palette[i].red]; + png_composite(w, v, png_ptr->trans[i], back_1.red); + palette[i].red = png_ptr->gamma_from_1[w]; + + v = png_ptr->gamma_to_1[png_ptr->palette[i].green]; + png_composite(w, v, png_ptr->trans[i], back_1.green); + palette[i].green = png_ptr->gamma_from_1[w]; + + v = png_ptr->gamma_to_1[png_ptr->palette[i].blue]; + png_composite(w, v, png_ptr->trans[i], back_1.blue); + palette[i].blue = png_ptr->gamma_from_1[w]; + } + else + { + palette[i].red = png_ptr->gamma_table[palette[i].red]; + palette[i].green = png_ptr->gamma_table[palette[i].green]; + palette[i].blue = png_ptr->gamma_table[palette[i].blue]; + } + } + } + else + { + int i; + + for (i = 0; i < num_palette; i++) + { + if (palette[i].red == (png_byte)png_ptr->trans_values.gray) + { + palette[i] = back; + } + else + { + palette[i].red = png_ptr->gamma_table[palette[i].red]; + palette[i].green = png_ptr->gamma_table[palette[i].green]; + palette[i].blue = png_ptr->gamma_table[palette[i].blue]; + } + } + } + } + else +#endif +#if defined(PNG_READ_GAMMA_SUPPORTED) + if (png_ptr->transformations & PNG_GAMMA) + { + int i; + + for (i = 0; i < num_palette; i++) + { + palette[i].red = png_ptr->gamma_table[palette[i].red]; + palette[i].green = png_ptr->gamma_table[palette[i].green]; + palette[i].blue = png_ptr->gamma_table[palette[i].blue]; + } + } +#if defined(PNG_READ_BACKGROUND_SUPPORTED) + else +#endif +#endif +#if defined(PNG_READ_BACKGROUND_SUPPORTED) + if (png_ptr->transformations & PNG_BACKGROUND) + { + if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) + { + png_color back; + + back.red = (png_byte)png_ptr->background.red; + back.green = (png_byte)png_ptr->background.green; + back.blue = (png_byte)png_ptr->background.blue; + + for (i = 0; i < (int)png_ptr->num_trans; i++) + { + if (png_ptr->trans[i] == 0) + { + palette[i].red = back.red; + palette[i].green = back.green; + palette[i].blue = back.blue; + } + else if (png_ptr->trans[i] != 0xff) + { + png_composite(palette[i].red, png_ptr->palette[i].red, + png_ptr->trans[i], back.red); + png_composite(palette[i].green, png_ptr->palette[i].green, + png_ptr->trans[i], back.green); + png_composite(palette[i].blue, png_ptr->palette[i].blue, + png_ptr->trans[i], back.blue); + } + } + } + else /* Assume grayscale palette (what else could it be?) */ + { + int i; + + for (i = 0; i < num_palette; i++) + { + if (i == (png_byte)png_ptr->trans_values.gray) + { + palette[i].red = (png_byte)png_ptr->background.red; + palette[i].green = (png_byte)png_ptr->background.green; + palette[i].blue = (png_byte)png_ptr->background.blue; + } + } + } + } +#endif +} +#endif + +#if defined(PNG_READ_BACKGROUND_SUPPORTED) +/* Replace any alpha or transparency with the supplied background color. + * "background" is already in the screen gamma, while "background_1" is + * at a gamma of 1.0. Paletted files have already been taken care of. + */ +void /* PRIVATE */ +png_do_background(png_row_infop row_info, png_bytep row, + png_color_16p trans_values, png_color_16p background +#if defined(PNG_READ_GAMMA_SUPPORTED) + , png_color_16p background_1, + png_bytep gamma_table, png_bytep gamma_from_1, png_bytep gamma_to_1, + png_uint_16pp gamma_16, png_uint_16pp gamma_16_from_1, + png_uint_16pp gamma_16_to_1, int gamma_shift +#endif + ) +{ + png_bytep sp, dp; + png_uint_32 i; + png_uint_32 row_width=row_info->width; + int shift; + + png_debug(1, "in png_do_background"); + if (background != NULL && +#if defined(PNG_USELESS_TESTS_SUPPORTED) + row != NULL && row_info != NULL && +#endif + (!(row_info->color_type & PNG_COLOR_MASK_ALPHA) || + (row_info->color_type != PNG_COLOR_TYPE_PALETTE && trans_values))) + { + switch (row_info->color_type) + { + case PNG_COLOR_TYPE_GRAY: + { + switch (row_info->bit_depth) + { + case 1: + { + sp = row; + shift = 7; + for (i = 0; i < row_width; i++) + { + if ((png_uint_16)((*sp >> shift) & 0x01) + == trans_values->gray) + { + *sp &= (png_byte)((0x7f7f >> (7 - shift)) & 0xff); + *sp |= (png_byte)(background->gray << shift); + } + if (!shift) + { + shift = 7; + sp++; + } + else + shift--; + } + break; + } + + case 2: + { +#if defined(PNG_READ_GAMMA_SUPPORTED) + if (gamma_table != NULL) + { + sp = row; + shift = 6; + for (i = 0; i < row_width; i++) + { + if ((png_uint_16)((*sp >> shift) & 0x03) + == trans_values->gray) + { + *sp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff); + *sp |= (png_byte)(background->gray << shift); + } + else + { + png_byte p = (png_byte)((*sp >> shift) & 0x03); + png_byte g = (png_byte)((gamma_table [p | (p << 2) | + (p << 4) | (p << 6)] >> 6) & 0x03); + *sp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff); + *sp |= (png_byte)(g << shift); + } + if (!shift) + { + shift = 6; + sp++; + } + else + shift -= 2; + } + } + else +#endif + { + sp = row; + shift = 6; + for (i = 0; i < row_width; i++) + { + if ((png_uint_16)((*sp >> shift) & 0x03) + == trans_values->gray) + { + *sp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff); + *sp |= (png_byte)(background->gray << shift); + } + if (!shift) + { + shift = 6; + sp++; + } + else + shift -= 2; + } + } + break; + } + + case 4: + { +#if defined(PNG_READ_GAMMA_SUPPORTED) + if (gamma_table != NULL) + { + sp = row; + shift = 4; + for (i = 0; i < row_width; i++) + { + if ((png_uint_16)((*sp >> shift) & 0x0f) + == trans_values->gray) + { + *sp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff); + *sp |= (png_byte)(background->gray << shift); + } + else + { + png_byte p = (png_byte)((*sp >> shift) & 0x0f); + png_byte g = (png_byte)((gamma_table[p | + (p << 4)] >> 4) & 0x0f); + *sp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff); + *sp |= (png_byte)(g << shift); + } + if (!shift) + { + shift = 4; + sp++; + } + else + shift -= 4; + } + } + else +#endif + { + sp = row; + shift = 4; + for (i = 0; i < row_width; i++) + { + if ((png_uint_16)((*sp >> shift) & 0x0f) + == trans_values->gray) + { + *sp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff); + *sp |= (png_byte)(background->gray << shift); + } + if (!shift) + { + shift = 4; + sp++; + } + else + shift -= 4; + } + } + break; + } + + case 8: + { +#if defined(PNG_READ_GAMMA_SUPPORTED) + if (gamma_table != NULL) + { + sp = row; + for (i = 0; i < row_width; i++, sp++) + { + if (*sp == trans_values->gray) + { + *sp = (png_byte)background->gray; + } + else + { + *sp = gamma_table[*sp]; + } + } + } + else +#endif + { + sp = row; + for (i = 0; i < row_width; i++, sp++) + { + if (*sp == trans_values->gray) + { + *sp = (png_byte)background->gray; + } + } + } + break; + } + + case 16: + { +#if defined(PNG_READ_GAMMA_SUPPORTED) + if (gamma_16 != NULL) + { + sp = row; + for (i = 0; i < row_width; i++, sp += 2) + { + png_uint_16 v; + + v = (png_uint_16)(((*sp) << 8) + *(sp + 1)); + if (v == trans_values->gray) + { + /* Background is already in screen gamma */ + *sp = (png_byte)((background->gray >> 8) & 0xff); + *(sp + 1) = (png_byte)(background->gray & 0xff); + } + else + { + v = gamma_16[*(sp + 1) >> gamma_shift][*sp]; + *sp = (png_byte)((v >> 8) & 0xff); + *(sp + 1) = (png_byte)(v & 0xff); + } + } + } + else +#endif + { + sp = row; + for (i = 0; i < row_width; i++, sp += 2) + { + png_uint_16 v; + + v = (png_uint_16)(((*sp) << 8) + *(sp + 1)); + if (v == trans_values->gray) + { + *sp = (png_byte)((background->gray >> 8) & 0xff); + *(sp + 1) = (png_byte)(background->gray & 0xff); + } + } + } + break; + } + } + break; + } + + case PNG_COLOR_TYPE_RGB: + { + if (row_info->bit_depth == 8) + { +#if defined(PNG_READ_GAMMA_SUPPORTED) + if (gamma_table != NULL) + { + sp = row; + for (i = 0; i < row_width; i++, sp += 3) + { + if (*sp == trans_values->red && + *(sp + 1) == trans_values->green && + *(sp + 2) == trans_values->blue) + { + *sp = (png_byte)background->red; + *(sp + 1) = (png_byte)background->green; + *(sp + 2) = (png_byte)background->blue; + } + else + { + *sp = gamma_table[*sp]; + *(sp + 1) = gamma_table[*(sp + 1)]; + *(sp + 2) = gamma_table[*(sp + 2)]; + } + } + } + else +#endif + { + sp = row; + for (i = 0; i < row_width; i++, sp += 3) + { + if (*sp == trans_values->red && + *(sp + 1) == trans_values->green && + *(sp + 2) == trans_values->blue) + { + *sp = (png_byte)background->red; + *(sp + 1) = (png_byte)background->green; + *(sp + 2) = (png_byte)background->blue; + } + } + } + } + else /* if (row_info->bit_depth == 16) */ + { +#if defined(PNG_READ_GAMMA_SUPPORTED) + if (gamma_16 != NULL) + { + sp = row; + for (i = 0; i < row_width; i++, sp += 6) + { + png_uint_16 r = (png_uint_16)(((*sp) << 8) + *(sp + 1)); + png_uint_16 g = (png_uint_16)(((*(sp+2)) << 8) + *(sp+3)); + png_uint_16 b = (png_uint_16)(((*(sp+4)) << 8) + *(sp+5)); + if (r == trans_values->red && g == trans_values->green && + b == trans_values->blue) + { + /* Background is already in screen gamma */ + *sp = (png_byte)((background->red >> 8) & 0xff); + *(sp + 1) = (png_byte)(background->red & 0xff); + *(sp + 2) = (png_byte)((background->green >> 8) & 0xff); + *(sp + 3) = (png_byte)(background->green & 0xff); + *(sp + 4) = (png_byte)((background->blue >> 8) & 0xff); + *(sp + 5) = (png_byte)(background->blue & 0xff); + } + else + { + png_uint_16 v = gamma_16[*(sp + 1) >> gamma_shift][*sp]; + *sp = (png_byte)((v >> 8) & 0xff); + *(sp + 1) = (png_byte)(v & 0xff); + v = gamma_16[*(sp + 3) >> gamma_shift][*(sp + 2)]; + *(sp + 2) = (png_byte)((v >> 8) & 0xff); + *(sp + 3) = (png_byte)(v & 0xff); + v = gamma_16[*(sp + 5) >> gamma_shift][*(sp + 4)]; + *(sp + 4) = (png_byte)((v >> 8) & 0xff); + *(sp + 5) = (png_byte)(v & 0xff); + } + } + } + else +#endif + { + sp = row; + for (i = 0; i < row_width; i++, sp += 6) + { + png_uint_16 r = (png_uint_16)(((*sp) << 8) + *(sp+1)); + png_uint_16 g = (png_uint_16)(((*(sp+2)) << 8) + *(sp+3)); + png_uint_16 b = (png_uint_16)(((*(sp+4)) << 8) + *(sp+5)); + + if (r == trans_values->red && g == trans_values->green && + b == trans_values->blue) + { + *sp = (png_byte)((background->red >> 8) & 0xff); + *(sp + 1) = (png_byte)(background->red & 0xff); + *(sp + 2) = (png_byte)((background->green >> 8) & 0xff); + *(sp + 3) = (png_byte)(background->green & 0xff); + *(sp + 4) = (png_byte)((background->blue >> 8) & 0xff); + *(sp + 5) = (png_byte)(background->blue & 0xff); + } + } + } + } + break; + } + + case PNG_COLOR_TYPE_GRAY_ALPHA: + { + if (row_info->bit_depth == 8) + { +#if defined(PNG_READ_GAMMA_SUPPORTED) + if (gamma_to_1 != NULL && gamma_from_1 != NULL && + gamma_table != NULL) + { + sp = row; + dp = row; + for (i = 0; i < row_width; i++, sp += 2, dp++) + { + png_uint_16 a = *(sp + 1); + + if (a == 0xff) + { + *dp = gamma_table[*sp]; + } + else if (a == 0) + { + /* Background is already in screen gamma */ + *dp = (png_byte)background->gray; + } + else + { + png_byte v, w; + + v = gamma_to_1[*sp]; + png_composite(w, v, a, background_1->gray); + *dp = gamma_from_1[w]; + } + } + } + else +#endif + { + sp = row; + dp = row; + for (i = 0; i < row_width; i++, sp += 2, dp++) + { + png_byte a = *(sp + 1); + + if (a == 0xff) + { + *dp = *sp; + } +#if defined(PNG_READ_GAMMA_SUPPORTED) + else if (a == 0) + { + *dp = (png_byte)background->gray; + } + else + { + png_composite(*dp, *sp, a, background_1->gray); + } +#else + *dp = (png_byte)background->gray; +#endif + } + } + } + else /* if (png_ptr->bit_depth == 16) */ + { +#if defined(PNG_READ_GAMMA_SUPPORTED) + if (gamma_16 != NULL && gamma_16_from_1 != NULL && + gamma_16_to_1 != NULL) + { + sp = row; + dp = row; + for (i = 0; i < row_width; i++, sp += 4, dp += 2) + { + png_uint_16 a = (png_uint_16)(((*(sp+2)) << 8) + *(sp+3)); + + if (a == (png_uint_16)0xffff) + { + png_uint_16 v; + + v = gamma_16[*(sp + 1) >> gamma_shift][*sp]; + *dp = (png_byte)((v >> 8) & 0xff); + *(dp + 1) = (png_byte)(v & 0xff); + } +#if defined(PNG_READ_GAMMA_SUPPORTED) + else if (a == 0) +#else + else +#endif + { + /* Background is already in screen gamma */ + *dp = (png_byte)((background->gray >> 8) & 0xff); + *(dp + 1) = (png_byte)(background->gray & 0xff); + } +#if defined(PNG_READ_GAMMA_SUPPORTED) + else + { + png_uint_16 g, v, w; + + g = gamma_16_to_1[*(sp + 1) >> gamma_shift][*sp]; + png_composite_16(v, g, a, background_1->gray); + w = gamma_16_from_1[(v&0xff) >> gamma_shift][v >> 8]; + *dp = (png_byte)((w >> 8) & 0xff); + *(dp + 1) = (png_byte)(w & 0xff); + } +#endif + } + } + else +#endif + { + sp = row; + dp = row; + for (i = 0; i < row_width; i++, sp += 4, dp += 2) + { + png_uint_16 a = (png_uint_16)(((*(sp+2)) << 8) + *(sp+3)); + if (a == (png_uint_16)0xffff) + { + png_memcpy(dp, sp, 2); + } +#if defined(PNG_READ_GAMMA_SUPPORTED) + else if (a == 0) +#else + else +#endif + { + *dp = (png_byte)((background->gray >> 8) & 0xff); + *(dp + 1) = (png_byte)(background->gray & 0xff); + } +#if defined(PNG_READ_GAMMA_SUPPORTED) + else + { + png_uint_16 g, v; + + g = (png_uint_16)(((*sp) << 8) + *(sp + 1)); + png_composite_16(v, g, a, background_1->gray); + *dp = (png_byte)((v >> 8) & 0xff); + *(dp + 1) = (png_byte)(v & 0xff); + } +#endif + } + } + } + break; + } + + case PNG_COLOR_TYPE_RGB_ALPHA: + { + if (row_info->bit_depth == 8) + { +#if defined(PNG_READ_GAMMA_SUPPORTED) + if (gamma_to_1 != NULL && gamma_from_1 != NULL && + gamma_table != NULL) + { + sp = row; + dp = row; + for (i = 0; i < row_width; i++, sp += 4, dp += 3) + { + png_byte a = *(sp + 3); + + if (a == 0xff) + { + *dp = gamma_table[*sp]; + *(dp + 1) = gamma_table[*(sp + 1)]; + *(dp + 2) = gamma_table[*(sp + 2)]; + } + else if (a == 0) + { + /* Background is already in screen gamma */ + *dp = (png_byte)background->red; + *(dp + 1) = (png_byte)background->green; + *(dp + 2) = (png_byte)background->blue; + } + else + { + png_byte v, w; + + v = gamma_to_1[*sp]; + png_composite(w, v, a, background_1->red); + *dp = gamma_from_1[w]; + v = gamma_to_1[*(sp + 1)]; + png_composite(w, v, a, background_1->green); + *(dp + 1) = gamma_from_1[w]; + v = gamma_to_1[*(sp + 2)]; + png_composite(w, v, a, background_1->blue); + *(dp + 2) = gamma_from_1[w]; + } + } + } + else +#endif + { + sp = row; + dp = row; + for (i = 0; i < row_width; i++, sp += 4, dp += 3) + { + png_byte a = *(sp + 3); + + if (a == 0xff) + { + *dp = *sp; + *(dp + 1) = *(sp + 1); + *(dp + 2) = *(sp + 2); + } + else if (a == 0) + { + *dp = (png_byte)background->red; + *(dp + 1) = (png_byte)background->green; + *(dp + 2) = (png_byte)background->blue; + } + else + { + png_composite(*dp, *sp, a, background->red); + png_composite(*(dp + 1), *(sp + 1), a, + background->green); + png_composite(*(dp + 2), *(sp + 2), a, + background->blue); + } + } + } + } + else /* if (row_info->bit_depth == 16) */ + { +#if defined(PNG_READ_GAMMA_SUPPORTED) + if (gamma_16 != NULL && gamma_16_from_1 != NULL && + gamma_16_to_1 != NULL) + { + sp = row; + dp = row; + for (i = 0; i < row_width; i++, sp += 8, dp += 6) + { + png_uint_16 a = (png_uint_16)(((png_uint_16)(*(sp + 6)) + << 8) + (png_uint_16)(*(sp + 7))); + if (a == (png_uint_16)0xffff) + { + png_uint_16 v; + + v = gamma_16[*(sp + 1) >> gamma_shift][*sp]; + *dp = (png_byte)((v >> 8) & 0xff); + *(dp + 1) = (png_byte)(v & 0xff); + v = gamma_16[*(sp + 3) >> gamma_shift][*(sp + 2)]; + *(dp + 2) = (png_byte)((v >> 8) & 0xff); + *(dp + 3) = (png_byte)(v & 0xff); + v = gamma_16[*(sp + 5) >> gamma_shift][*(sp + 4)]; + *(dp + 4) = (png_byte)((v >> 8) & 0xff); + *(dp + 5) = (png_byte)(v & 0xff); + } + else if (a == 0) + { + /* Background is already in screen gamma */ + *dp = (png_byte)((background->red >> 8) & 0xff); + *(dp + 1) = (png_byte)(background->red & 0xff); + *(dp + 2) = (png_byte)((background->green >> 8) & 0xff); + *(dp + 3) = (png_byte)(background->green & 0xff); + *(dp + 4) = (png_byte)((background->blue >> 8) & 0xff); + *(dp + 5) = (png_byte)(background->blue & 0xff); + } + else + { + png_uint_16 v, w, x; + + v = gamma_16_to_1[*(sp + 1) >> gamma_shift][*sp]; + png_composite_16(w, v, a, background_1->red); + x = gamma_16_from_1[((w&0xff) >> gamma_shift)][w >> 8]; + *dp = (png_byte)((x >> 8) & 0xff); + *(dp + 1) = (png_byte)(x & 0xff); + v = gamma_16_to_1[*(sp + 3) >> gamma_shift][*(sp + 2)]; + png_composite_16(w, v, a, background_1->green); + x = gamma_16_from_1[((w&0xff) >> gamma_shift)][w >> 8]; + *(dp + 2) = (png_byte)((x >> 8) & 0xff); + *(dp + 3) = (png_byte)(x & 0xff); + v = gamma_16_to_1[*(sp + 5) >> gamma_shift][*(sp + 4)]; + png_composite_16(w, v, a, background_1->blue); + x = gamma_16_from_1[(w & 0xff) >> gamma_shift][w >> 8]; + *(dp + 4) = (png_byte)((x >> 8) & 0xff); + *(dp + 5) = (png_byte)(x & 0xff); + } + } + } + else +#endif + { + sp = row; + dp = row; + for (i = 0; i < row_width; i++, sp += 8, dp += 6) + { + png_uint_16 a = (png_uint_16)(((png_uint_16)(*(sp + 6)) + << 8) + (png_uint_16)(*(sp + 7))); + if (a == (png_uint_16)0xffff) + { + png_memcpy(dp, sp, 6); + } + else if (a == 0) + { + *dp = (png_byte)((background->red >> 8) & 0xff); + *(dp + 1) = (png_byte)(background->red & 0xff); + *(dp + 2) = (png_byte)((background->green >> 8) & 0xff); + *(dp + 3) = (png_byte)(background->green & 0xff); + *(dp + 4) = (png_byte)((background->blue >> 8) & 0xff); + *(dp + 5) = (png_byte)(background->blue & 0xff); + } + else + { + png_uint_16 v; + + png_uint_16 r = (png_uint_16)(((*sp) << 8) + *(sp + 1)); + png_uint_16 g = (png_uint_16)(((*(sp + 2)) << 8) + + *(sp + 3)); + png_uint_16 b = (png_uint_16)(((*(sp + 4)) << 8) + + *(sp + 5)); + + png_composite_16(v, r, a, background->red); + *dp = (png_byte)((v >> 8) & 0xff); + *(dp + 1) = (png_byte)(v & 0xff); + png_composite_16(v, g, a, background->green); + *(dp + 2) = (png_byte)((v >> 8) & 0xff); + *(dp + 3) = (png_byte)(v & 0xff); + png_composite_16(v, b, a, background->blue); + *(dp + 4) = (png_byte)((v >> 8) & 0xff); + *(dp + 5) = (png_byte)(v & 0xff); + } + } + } + } + break; + } + } + + if (row_info->color_type & PNG_COLOR_MASK_ALPHA) + { + row_info->color_type &= ~PNG_COLOR_MASK_ALPHA; + row_info->channels--; + row_info->pixel_depth = (png_byte)(row_info->channels * + row_info->bit_depth); + row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width); + } + } +} +#endif + +#if defined(PNG_READ_GAMMA_SUPPORTED) +/* Gamma correct the image, avoiding the alpha channel. Make sure + * you do this after you deal with the transparency issue on grayscale + * or RGB images. If your bit depth is 8, use gamma_table, if it + * is 16, use gamma_16_table and gamma_shift. Build these with + * build_gamma_table(). + */ +void /* PRIVATE */ +png_do_gamma(png_row_infop row_info, png_bytep row, + png_bytep gamma_table, png_uint_16pp gamma_16_table, + int gamma_shift) +{ + png_bytep sp; + png_uint_32 i; + png_uint_32 row_width=row_info->width; + + png_debug(1, "in png_do_gamma"); + if ( +#if defined(PNG_USELESS_TESTS_SUPPORTED) + row != NULL && row_info != NULL && +#endif + ((row_info->bit_depth <= 8 && gamma_table != NULL) || + (row_info->bit_depth == 16 && gamma_16_table != NULL))) + { + switch (row_info->color_type) + { + case PNG_COLOR_TYPE_RGB: + { + if (row_info->bit_depth == 8) + { + sp = row; + for (i = 0; i < row_width; i++) + { + *sp = gamma_table[*sp]; + sp++; + *sp = gamma_table[*sp]; + sp++; + *sp = gamma_table[*sp]; + sp++; + } + } + else /* if (row_info->bit_depth == 16) */ + { + sp = row; + for (i = 0; i < row_width; i++) + { + png_uint_16 v; + + v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; + *sp = (png_byte)((v >> 8) & 0xff); + *(sp + 1) = (png_byte)(v & 0xff); + sp += 2; + v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; + *sp = (png_byte)((v >> 8) & 0xff); + *(sp + 1) = (png_byte)(v & 0xff); + sp += 2; + v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; + *sp = (png_byte)((v >> 8) & 0xff); + *(sp + 1) = (png_byte)(v & 0xff); + sp += 2; + } + } + break; + } + + case PNG_COLOR_TYPE_RGB_ALPHA: + { + if (row_info->bit_depth == 8) + { + sp = row; + for (i = 0; i < row_width; i++) + { + *sp = gamma_table[*sp]; + sp++; + *sp = gamma_table[*sp]; + sp++; + *sp = gamma_table[*sp]; + sp++; + sp++; + } + } + else /* if (row_info->bit_depth == 16) */ + { + sp = row; + for (i = 0; i < row_width; i++) + { + png_uint_16 v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; + *sp = (png_byte)((v >> 8) & 0xff); + *(sp + 1) = (png_byte)(v & 0xff); + sp += 2; + v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; + *sp = (png_byte)((v >> 8) & 0xff); + *(sp + 1) = (png_byte)(v & 0xff); + sp += 2; + v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; + *sp = (png_byte)((v >> 8) & 0xff); + *(sp + 1) = (png_byte)(v & 0xff); + sp += 4; + } + } + break; + } + + case PNG_COLOR_TYPE_GRAY_ALPHA: + { + if (row_info->bit_depth == 8) + { + sp = row; + for (i = 0; i < row_width; i++) + { + *sp = gamma_table[*sp]; + sp += 2; + } + } + else /* if (row_info->bit_depth == 16) */ + { + sp = row; + for (i = 0; i < row_width; i++) + { + png_uint_16 v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; + *sp = (png_byte)((v >> 8) & 0xff); + *(sp + 1) = (png_byte)(v & 0xff); + sp += 4; + } + } + break; + } + + case PNG_COLOR_TYPE_GRAY: + { + if (row_info->bit_depth == 2) + { + sp = row; + for (i = 0; i < row_width; i += 4) + { + int a = *sp & 0xc0; + int b = *sp & 0x30; + int c = *sp & 0x0c; + int d = *sp & 0x03; + + *sp = (png_byte)( + ((((int)gamma_table[a|(a>>2)|(a>>4)|(a>>6)]) ) & 0xc0)| + ((((int)gamma_table[(b<<2)|b|(b>>2)|(b>>4)])>>2) & 0x30)| + ((((int)gamma_table[(c<<4)|(c<<2)|c|(c>>2)])>>4) & 0x0c)| + ((((int)gamma_table[(d<<6)|(d<<4)|(d<<2)|d])>>6) )); + sp++; + } + } + + if (row_info->bit_depth == 4) + { + sp = row; + for (i = 0; i < row_width; i += 2) + { + int msb = *sp & 0xf0; + int lsb = *sp & 0x0f; + + *sp = (png_byte)((((int)gamma_table[msb | (msb >> 4)]) & 0xf0) + | (((int)gamma_table[(lsb << 4) | lsb]) >> 4)); + sp++; + } + } + + else if (row_info->bit_depth == 8) + { + sp = row; + for (i = 0; i < row_width; i++) + { + *sp = gamma_table[*sp]; + sp++; + } + } + + else if (row_info->bit_depth == 16) + { + sp = row; + for (i = 0; i < row_width; i++) + { + png_uint_16 v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; + *sp = (png_byte)((v >> 8) & 0xff); + *(sp + 1) = (png_byte)(v & 0xff); + sp += 2; + } + } + break; + } + } + } +} +#endif + +#if defined(PNG_READ_EXPAND_SUPPORTED) +/* Expands a palette row to an RGB or RGBA row depending + * upon whether you supply trans and num_trans. + */ +void /* PRIVATE */ +png_do_expand_palette(png_row_infop row_info, png_bytep row, + png_colorp palette, png_bytep trans, int num_trans) +{ + int shift, value; + png_bytep sp, dp; + png_uint_32 i; + png_uint_32 row_width=row_info->width; + + png_debug(1, "in png_do_expand_palette"); + if ( +#if defined(PNG_USELESS_TESTS_SUPPORTED) + row != NULL && row_info != NULL && +#endif + row_info->color_type == PNG_COLOR_TYPE_PALETTE) + { + if (row_info->bit_depth < 8) + { + switch (row_info->bit_depth) + { + case 1: + { + sp = row + (png_size_t)((row_width - 1) >> 3); + dp = row + (png_size_t)row_width - 1; + shift = 7 - (int)((row_width + 7) & 0x07); + for (i = 0; i < row_width; i++) + { + if ((*sp >> shift) & 0x01) + *dp = 1; + else + *dp = 0; + if (shift == 7) + { + shift = 0; + sp--; + } + else + shift++; + + dp--; + } + break; + } + + case 2: + { + sp = row + (png_size_t)((row_width - 1) >> 2); + dp = row + (png_size_t)row_width - 1; + shift = (int)((3 - ((row_width + 3) & 0x03)) << 1); + for (i = 0; i < row_width; i++) + { + value = (*sp >> shift) & 0x03; + *dp = (png_byte)value; + if (shift == 6) + { + shift = 0; + sp--; + } + else + shift += 2; + + dp--; + } + break; + } + + case 4: + { + sp = row + (png_size_t)((row_width - 1) >> 1); + dp = row + (png_size_t)row_width - 1; + shift = (int)((row_width & 0x01) << 2); + for (i = 0; i < row_width; i++) + { + value = (*sp >> shift) & 0x0f; + *dp = (png_byte)value; + if (shift == 4) + { + shift = 0; + sp--; + } + else + shift += 4; + + dp--; + } + break; + } + } + row_info->bit_depth = 8; + row_info->pixel_depth = 8; + row_info->rowbytes = row_width; + } + switch (row_info->bit_depth) + { + case 8: + { + if (trans != NULL) + { + sp = row + (png_size_t)row_width - 1; + dp = row + (png_size_t)(row_width << 2) - 1; + + for (i = 0; i < row_width; i++) + { + if ((int)(*sp) >= num_trans) + *dp-- = 0xff; + else + *dp-- = trans[*sp]; + *dp-- = palette[*sp].blue; + *dp-- = palette[*sp].green; + *dp-- = palette[*sp].red; + sp--; + } + row_info->bit_depth = 8; + row_info->pixel_depth = 32; + row_info->rowbytes = row_width * 4; + row_info->color_type = 6; + row_info->channels = 4; + } + else + { + sp = row + (png_size_t)row_width - 1; + dp = row + (png_size_t)(row_width * 3) - 1; + + for (i = 0; i < row_width; i++) + { + *dp-- = palette[*sp].blue; + *dp-- = palette[*sp].green; + *dp-- = palette[*sp].red; + sp--; + } + + row_info->bit_depth = 8; + row_info->pixel_depth = 24; + row_info->rowbytes = row_width * 3; + row_info->color_type = 2; + row_info->channels = 3; + } + break; + } + } + } +} + +/* If the bit depth < 8, it is expanded to 8. Also, if the already + * expanded transparency value is supplied, an alpha channel is built. + */ +void /* PRIVATE */ +png_do_expand(png_row_infop row_info, png_bytep row, + png_color_16p trans_value) +{ + int shift, value; + png_bytep sp, dp; + png_uint_32 i; + png_uint_32 row_width=row_info->width; + + png_debug(1, "in png_do_expand"); +#if defined(PNG_USELESS_TESTS_SUPPORTED) + if (row != NULL && row_info != NULL) +#endif + { + if (row_info->color_type == PNG_COLOR_TYPE_GRAY) + { + png_uint_16 gray = (png_uint_16)(trans_value ? trans_value->gray : 0); + + if (row_info->bit_depth < 8) + { + switch (row_info->bit_depth) + { + case 1: + { + gray = (png_uint_16)((gray&0x01)*0xff); + sp = row + (png_size_t)((row_width - 1) >> 3); + dp = row + (png_size_t)row_width - 1; + shift = 7 - (int)((row_width + 7) & 0x07); + for (i = 0; i < row_width; i++) + { + if ((*sp >> shift) & 0x01) + *dp = 0xff; + else + *dp = 0; + if (shift == 7) + { + shift = 0; + sp--; + } + else + shift++; + + dp--; + } + break; + } + + case 2: + { + gray = (png_uint_16)((gray&0x03)*0x55); + sp = row + (png_size_t)((row_width - 1) >> 2); + dp = row + (png_size_t)row_width - 1; + shift = (int)((3 - ((row_width + 3) & 0x03)) << 1); + for (i = 0; i < row_width; i++) + { + value = (*sp >> shift) & 0x03; + *dp = (png_byte)(value | (value << 2) | (value << 4) | + (value << 6)); + if (shift == 6) + { + shift = 0; + sp--; + } + else + shift += 2; + + dp--; + } + break; + } + + case 4: + { + gray = (png_uint_16)((gray&0x0f)*0x11); + sp = row + (png_size_t)((row_width - 1) >> 1); + dp = row + (png_size_t)row_width - 1; + shift = (int)((1 - ((row_width + 1) & 0x01)) << 2); + for (i = 0; i < row_width; i++) + { + value = (*sp >> shift) & 0x0f; + *dp = (png_byte)(value | (value << 4)); + if (shift == 4) + { + shift = 0; + sp--; + } + else + shift = 4; + + dp--; + } + break; + } + } + + row_info->bit_depth = 8; + row_info->pixel_depth = 8; + row_info->rowbytes = row_width; + } + + if (trans_value != NULL) + { + if (row_info->bit_depth == 8) + { + gray = gray & 0xff; + sp = row + (png_size_t)row_width - 1; + dp = row + (png_size_t)(row_width << 1) - 1; + for (i = 0; i < row_width; i++) + { + if (*sp == gray) + *dp-- = 0; + else + *dp-- = 0xff; + *dp-- = *sp--; + } + } + + else if (row_info->bit_depth == 16) + { + png_byte gray_high = (gray >> 8) & 0xff; + png_byte gray_low = gray & 0xff; + sp = row + row_info->rowbytes - 1; + dp = row + (row_info->rowbytes << 1) - 1; + for (i = 0; i < row_width; i++) + { + if (*(sp - 1) == gray_high && *(sp) == gray_low) + { + *dp-- = 0; + *dp-- = 0; + } + else + { + *dp-- = 0xff; + *dp-- = 0xff; + } + *dp-- = *sp--; + *dp-- = *sp--; + } + } + + row_info->color_type = PNG_COLOR_TYPE_GRAY_ALPHA; + row_info->channels = 2; + row_info->pixel_depth = (png_byte)(row_info->bit_depth << 1); + row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, + row_width); + } + } + else if (row_info->color_type == PNG_COLOR_TYPE_RGB && trans_value) + { + if (row_info->bit_depth == 8) + { + png_byte red = trans_value->red & 0xff; + png_byte green = trans_value->green & 0xff; + png_byte blue = trans_value->blue & 0xff; + sp = row + (png_size_t)row_info->rowbytes - 1; + dp = row + (png_size_t)(row_width << 2) - 1; + for (i = 0; i < row_width; i++) + { + if (*(sp - 2) == red && *(sp - 1) == green && *(sp) == blue) + *dp-- = 0; + else + *dp-- = 0xff; + *dp-- = *sp--; + *dp-- = *sp--; + *dp-- = *sp--; + } + } + else if (row_info->bit_depth == 16) + { + png_byte red_high = (trans_value->red >> 8) & 0xff; + png_byte green_high = (trans_value->green >> 8) & 0xff; + png_byte blue_high = (trans_value->blue >> 8) & 0xff; + png_byte red_low = trans_value->red & 0xff; + png_byte green_low = trans_value->green & 0xff; + png_byte blue_low = trans_value->blue & 0xff; + sp = row + row_info->rowbytes - 1; + dp = row + (png_size_t)(row_width << 3) - 1; + for (i = 0; i < row_width; i++) + { + if (*(sp - 5) == red_high && + *(sp - 4) == red_low && + *(sp - 3) == green_high && + *(sp - 2) == green_low && + *(sp - 1) == blue_high && + *(sp ) == blue_low) + { + *dp-- = 0; + *dp-- = 0; + } + else + { + *dp-- = 0xff; + *dp-- = 0xff; + } + *dp-- = *sp--; + *dp-- = *sp--; + *dp-- = *sp--; + *dp-- = *sp--; + *dp-- = *sp--; + *dp-- = *sp--; + } + } + row_info->color_type = PNG_COLOR_TYPE_RGB_ALPHA; + row_info->channels = 4; + row_info->pixel_depth = (png_byte)(row_info->bit_depth << 2); + row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width); + } + } +} +#endif + +#if defined(PNG_READ_DITHER_SUPPORTED) +void /* PRIVATE */ +png_do_dither(png_row_infop row_info, png_bytep row, + png_bytep palette_lookup, png_bytep dither_lookup) +{ + png_bytep sp, dp; + png_uint_32 i; + png_uint_32 row_width=row_info->width; + + png_debug(1, "in png_do_dither"); +#if defined(PNG_USELESS_TESTS_SUPPORTED) + if (row != NULL && row_info != NULL) +#endif + { + if (row_info->color_type == PNG_COLOR_TYPE_RGB && + palette_lookup && row_info->bit_depth == 8) + { + int r, g, b, p; + sp = row; + dp = row; + for (i = 0; i < row_width; i++) + { + r = *sp++; + g = *sp++; + b = *sp++; + + /* This looks real messy, but the compiler will reduce + * it down to a reasonable formula. For example, with + * 5 bits per color, we get: + * p = (((r >> 3) & 0x1f) << 10) | + * (((g >> 3) & 0x1f) << 5) | + * ((b >> 3) & 0x1f); + */ + p = (((r >> (8 - PNG_DITHER_RED_BITS)) & + ((1 << PNG_DITHER_RED_BITS) - 1)) << + (PNG_DITHER_GREEN_BITS + PNG_DITHER_BLUE_BITS)) | + (((g >> (8 - PNG_DITHER_GREEN_BITS)) & + ((1 << PNG_DITHER_GREEN_BITS) - 1)) << + (PNG_DITHER_BLUE_BITS)) | + ((b >> (8 - PNG_DITHER_BLUE_BITS)) & + ((1 << PNG_DITHER_BLUE_BITS) - 1)); + + *dp++ = palette_lookup[p]; + } + row_info->color_type = PNG_COLOR_TYPE_PALETTE; + row_info->channels = 1; + row_info->pixel_depth = row_info->bit_depth; + row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width); + } + else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA && + palette_lookup != NULL && row_info->bit_depth == 8) + { + int r, g, b, p; + sp = row; + dp = row; + for (i = 0; i < row_width; i++) + { + r = *sp++; + g = *sp++; + b = *sp++; + sp++; + + p = (((r >> (8 - PNG_DITHER_RED_BITS)) & + ((1 << PNG_DITHER_RED_BITS) - 1)) << + (PNG_DITHER_GREEN_BITS + PNG_DITHER_BLUE_BITS)) | + (((g >> (8 - PNG_DITHER_GREEN_BITS)) & + ((1 << PNG_DITHER_GREEN_BITS) - 1)) << + (PNG_DITHER_BLUE_BITS)) | + ((b >> (8 - PNG_DITHER_BLUE_BITS)) & + ((1 << PNG_DITHER_BLUE_BITS) - 1)); + + *dp++ = palette_lookup[p]; + } + row_info->color_type = PNG_COLOR_TYPE_PALETTE; + row_info->channels = 1; + row_info->pixel_depth = row_info->bit_depth; + row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, row_width); + } + else if (row_info->color_type == PNG_COLOR_TYPE_PALETTE && + dither_lookup && row_info->bit_depth == 8) + { + sp = row; + for (i = 0; i < row_width; i++, sp++) + { + *sp = dither_lookup[*sp]; + } + } + } +} +#endif + +#ifdef PNG_FLOATING_POINT_SUPPORTED +#if defined(PNG_READ_GAMMA_SUPPORTED) +static PNG_CONST int png_gamma_shift[] = + {0x10, 0x21, 0x42, 0x84, 0x110, 0x248, 0x550, 0xff0, 0x00}; + +/* We build the 8- or 16-bit gamma tables here. Note that for 16-bit + * tables, we don't make a full table if we are reducing to 8-bit in + * the future. Note also how the gamma_16 tables are segmented so that + * we don't need to allocate > 64K chunks for a full 16-bit table. + */ +void /* PRIVATE */ +png_build_gamma_table(png_structp png_ptr) +{ + png_debug(1, "in png_build_gamma_table"); + + if (png_ptr->bit_depth <= 8) + { + int i; + double g; + + if (png_ptr->screen_gamma > .000001) + g = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma); + + else + g = 1.0; + + png_ptr->gamma_table = (png_bytep)png_malloc(png_ptr, + (png_uint_32)256); + + for (i = 0; i < 256; i++) + { + png_ptr->gamma_table[i] = (png_byte)(pow((double)i / 255.0, + g) * 255.0 + .5); + } + +#if defined(PNG_READ_BACKGROUND_SUPPORTED) || \ + defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) + if (png_ptr->transformations & ((PNG_BACKGROUND) | PNG_RGB_TO_GRAY)) + { + + g = 1.0 / (png_ptr->gamma); + + png_ptr->gamma_to_1 = (png_bytep)png_malloc(png_ptr, + (png_uint_32)256); + + for (i = 0; i < 256; i++) + { + png_ptr->gamma_to_1[i] = (png_byte)(pow((double)i / 255.0, + g) * 255.0 + .5); + } + + + png_ptr->gamma_from_1 = (png_bytep)png_malloc(png_ptr, + (png_uint_32)256); + + if (png_ptr->screen_gamma > 0.000001) + g = 1.0 / png_ptr->screen_gamma; + + else + g = png_ptr->gamma; /* Probably doing rgb_to_gray */ + + for (i = 0; i < 256; i++) + { + png_ptr->gamma_from_1[i] = (png_byte)(pow((double)i / 255.0, + g) * 255.0 + .5); + + } + } +#endif /* PNG_READ_BACKGROUND_SUPPORTED || PNG_RGB_TO_GRAY_SUPPORTED */ + } + else + { + double g; + int i, j, shift, num; + int sig_bit; + png_uint_32 ig; + + if (png_ptr->color_type & PNG_COLOR_MASK_COLOR) + { + sig_bit = (int)png_ptr->sig_bit.red; + + if ((int)png_ptr->sig_bit.green > sig_bit) + sig_bit = png_ptr->sig_bit.green; + + if ((int)png_ptr->sig_bit.blue > sig_bit) + sig_bit = png_ptr->sig_bit.blue; + } + else + { + sig_bit = (int)png_ptr->sig_bit.gray; + } + + if (sig_bit > 0) + shift = 16 - sig_bit; + + else + shift = 0; + + if (png_ptr->transformations & PNG_16_TO_8) + { + if (shift < (16 - PNG_MAX_GAMMA_8)) + shift = (16 - PNG_MAX_GAMMA_8); + } + + if (shift > 8) + shift = 8; + + if (shift < 0) + shift = 0; + + png_ptr->gamma_shift = (png_byte)shift; + + num = (1 << (8 - shift)); + + if (png_ptr->screen_gamma > .000001) + g = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma); + else + g = 1.0; + + png_ptr->gamma_16_table = (png_uint_16pp)png_malloc(png_ptr, + (png_uint_32)(num * png_sizeof(png_uint_16p))); + png_memset(png_ptr->gamma_16_table, 0, num * png_sizeof(png_uint_16p)); + + if (png_ptr->transformations & (PNG_16_TO_8 | PNG_BACKGROUND)) + { + double fin, fout; + png_uint_32 last, max; + + for (i = 0; i < num; i++) + { + png_ptr->gamma_16_table[i] = (png_uint_16p)png_malloc(png_ptr, + (png_uint_32)(256 * png_sizeof(png_uint_16))); + } + + g = 1.0 / g; + last = 0; + for (i = 0; i < 256; i++) + { + fout = ((double)i + 0.5) / 256.0; + fin = pow(fout, g); + max = (png_uint_32)(fin * (double)((png_uint_32)num << 8)); + while (last <= max) + { + png_ptr->gamma_16_table[(int)(last & (0xff >> shift))] + [(int)(last >> (8 - shift))] = (png_uint_16)( + (png_uint_16)i | ((png_uint_16)i << 8)); + last++; + } + } + while (last < ((png_uint_32)num << 8)) + { + png_ptr->gamma_16_table[(int)(last & (0xff >> shift))] + [(int)(last >> (8 - shift))] = (png_uint_16)65535L; + last++; + } + } + else + { + for (i = 0; i < num; i++) + { + png_ptr->gamma_16_table[i] = (png_uint_16p)png_malloc(png_ptr, + (png_uint_32)(256 * png_sizeof(png_uint_16))); + + ig = (((png_uint_32)i * (png_uint_32)png_gamma_shift[shift]) >> 4); + + for (j = 0; j < 256; j++) + { + png_ptr->gamma_16_table[i][j] = + (png_uint_16)(pow((double)(ig + ((png_uint_32)j << 8)) / + 65535.0, g) * 65535.0 + .5); + } + } + } + +#if defined(PNG_READ_BACKGROUND_SUPPORTED) || \ + defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) + if (png_ptr->transformations & (PNG_BACKGROUND | PNG_RGB_TO_GRAY)) + { + + g = 1.0 / (png_ptr->gamma); + + png_ptr->gamma_16_to_1 = (png_uint_16pp)png_malloc(png_ptr, + (png_uint_32)(num * png_sizeof(png_uint_16p ))); + png_memset(png_ptr->gamma_16_to_1, 0, num * png_sizeof(png_uint_16p)); + + for (i = 0; i < num; i++) + { + png_ptr->gamma_16_to_1[i] = (png_uint_16p)png_malloc(png_ptr, + (png_uint_32)(256 * png_sizeof(png_uint_16))); + + ig = (((png_uint_32)i * + (png_uint_32)png_gamma_shift[shift]) >> 4); + for (j = 0; j < 256; j++) + { + png_ptr->gamma_16_to_1[i][j] = + (png_uint_16)(pow((double)(ig + ((png_uint_32)j << 8)) / + 65535.0, g) * 65535.0 + .5); + } + } + + if (png_ptr->screen_gamma > 0.000001) + g = 1.0 / png_ptr->screen_gamma; + + else + g = png_ptr->gamma; /* Probably doing rgb_to_gray */ + + png_ptr->gamma_16_from_1 = (png_uint_16pp)png_malloc(png_ptr, + (png_uint_32)(num * png_sizeof(png_uint_16p))); + png_memset(png_ptr->gamma_16_from_1, 0, + num * png_sizeof(png_uint_16p)); + + for (i = 0; i < num; i++) + { + png_ptr->gamma_16_from_1[i] = (png_uint_16p)png_malloc(png_ptr, + (png_uint_32)(256 * png_sizeof(png_uint_16))); + + ig = (((png_uint_32)i * + (png_uint_32)png_gamma_shift[shift]) >> 4); + + for (j = 0; j < 256; j++) + { + png_ptr->gamma_16_from_1[i][j] = + (png_uint_16)(pow((double)(ig + ((png_uint_32)j << 8)) / + 65535.0, g) * 65535.0 + .5); + } + } + } +#endif /* PNG_READ_BACKGROUND_SUPPORTED || PNG_RGB_TO_GRAY_SUPPORTED */ + } +} +#endif +/* To do: install integer version of png_build_gamma_table here */ +#endif + +#if defined(PNG_MNG_FEATURES_SUPPORTED) +/* Undoes intrapixel differencing */ +void /* PRIVATE */ +png_do_read_intrapixel(png_row_infop row_info, png_bytep row) +{ + png_debug(1, "in png_do_read_intrapixel"); + if ( +#if defined(PNG_USELESS_TESTS_SUPPORTED) + row != NULL && row_info != NULL && +#endif + (row_info->color_type & PNG_COLOR_MASK_COLOR)) + { + int bytes_per_pixel; + png_uint_32 row_width = row_info->width; + if (row_info->bit_depth == 8) + { + png_bytep rp; + png_uint_32 i; + + if (row_info->color_type == PNG_COLOR_TYPE_RGB) + bytes_per_pixel = 3; + + else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) + bytes_per_pixel = 4; + + else + return; + + for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel) + { + *(rp) = (png_byte)((256 + *rp + *(rp+1))&0xff); + *(rp+2) = (png_byte)((256 + *(rp+2) + *(rp+1))&0xff); + } + } + else if (row_info->bit_depth == 16) + { + png_bytep rp; + png_uint_32 i; + + if (row_info->color_type == PNG_COLOR_TYPE_RGB) + bytes_per_pixel = 6; + + else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) + bytes_per_pixel = 8; + + else + return; + + for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel) + { + png_uint_32 s0 = (*(rp ) << 8) | *(rp + 1); + png_uint_32 s1 = (*(rp + 2) << 8) | *(rp + 3); + png_uint_32 s2 = (*(rp + 4) << 8) | *(rp + 5); + png_uint_32 red = (png_uint_32)((s0 + s1 + 65536L) & 0xffffL); + png_uint_32 blue = (png_uint_32)((s2 + s1 + 65536L) & 0xffffL); + *(rp ) = (png_byte)((red >> 8) & 0xff); + *(rp+1) = (png_byte)(red & 0xff); + *(rp+4) = (png_byte)((blue >> 8) & 0xff); + *(rp+5) = (png_byte)(blue & 0xff); + } + } + } +} +#endif /* PNG_MNG_FEATURES_SUPPORTED */ +#endif /* PNG_READ_SUPPORTED */ diff --git a/Libraries/libpng/pngrutil.cpp b/Libraries/libpng/pngrutil.cpp new file mode 100644 index 0000000..ae1e3f7 --- /dev/null +++ b/Libraries/libpng/pngrutil.cpp @@ -0,0 +1,3244 @@ + +/* pngrutil.c - utilities to read a PNG file + * + * Last changed in libpng 1.2.37 [June 4, 2009] + * For conditions of distribution and use, see copyright notice in png.h + * Copyright (c) 1998-2009 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This file contains routines that are only called from within + * libpng itself during the course of reading an image. + */ + +#define PNG_INTERNAL +#include "png.h" +#if defined(PNG_READ_SUPPORTED) + +#if defined(_WIN32_WCE) && (_WIN32_WCE<0x500) +# define WIN32_WCE_OLD +#endif + +#ifdef PNG_FLOATING_POINT_SUPPORTED +# if defined(WIN32_WCE_OLD) +/* The strtod() function is not supported on WindowsCE */ +__inline double png_strtod(png_structp png_ptr, PNG_CONST char *nptr, char **endptr) +{ + double result = 0; + int len; + wchar_t *str, *end; + + len = MultiByteToWideChar(CP_ACP, 0, nptr, -1, NULL, 0); + str = (wchar_t *)png_malloc(png_ptr, len * png_sizeof(wchar_t)); + if ( NULL != str ) + { + MultiByteToWideChar(CP_ACP, 0, nptr, -1, str, len); + result = wcstod(str, &end); + len = WideCharToMultiByte(CP_ACP, 0, end, -1, NULL, 0, NULL, NULL); + *endptr = (char *)nptr + (png_strlen(nptr) - len + 1); + png_free(png_ptr, str); + } + return result; +} +# else +# define png_strtod(p,a,b) strtod(a,b) +# endif +#endif + +png_uint_32 PNGAPI +png_get_uint_31(png_structp png_ptr, png_bytep buf) +{ +#ifdef PNG_READ_BIG_ENDIAN_SUPPORTED + png_uint_32 i = png_get_uint_32(buf); +#else + /* Avoid an extra function call by inlining the result. */ + png_uint_32 i = ((png_uint_32)(*buf) << 24) + + ((png_uint_32)(*(buf + 1)) << 16) + + ((png_uint_32)(*(buf + 2)) << 8) + + (png_uint_32)(*(buf + 3)); +#endif + if (i > PNG_UINT_31_MAX) + png_error(png_ptr, "PNG unsigned integer out of range."); + return (i); +} +#ifndef PNG_READ_BIG_ENDIAN_SUPPORTED +/* Grab an unsigned 32-bit integer from a buffer in big-endian format. */ +png_uint_32 PNGAPI +png_get_uint_32(png_bytep buf) +{ + png_uint_32 i = ((png_uint_32)(*buf) << 24) + + ((png_uint_32)(*(buf + 1)) << 16) + + ((png_uint_32)(*(buf + 2)) << 8) + + (png_uint_32)(*(buf + 3)); + + return (i); +} + +/* Grab a signed 32-bit integer from a buffer in big-endian format. The + * data is stored in the PNG file in two's complement format, and it is + * assumed that the machine format for signed integers is the same. + */ +png_int_32 PNGAPI +png_get_int_32(png_bytep buf) +{ + png_int_32 i = ((png_int_32)(*buf) << 24) + + ((png_int_32)(*(buf + 1)) << 16) + + ((png_int_32)(*(buf + 2)) << 8) + + (png_int_32)(*(buf + 3)); + + return (i); +} + +/* Grab an unsigned 16-bit integer from a buffer in big-endian format. */ +png_uint_16 PNGAPI +png_get_uint_16(png_bytep buf) +{ + png_uint_16 i = (png_uint_16)(((png_uint_16)(*buf) << 8) + + (png_uint_16)(*(buf + 1))); + + return (i); +} +#endif /* PNG_READ_BIG_ENDIAN_SUPPORTED */ + +/* Read the chunk header (length + type name). + * Put the type name into png_ptr->chunk_name, and return the length. + */ +png_uint_32 /* PRIVATE */ +png_read_chunk_header(png_structp png_ptr) +{ + png_byte buf[8]; + png_uint_32 length; + + /* Read the length and the chunk name */ + png_read_data(png_ptr, buf, 8); + length = png_get_uint_31(png_ptr, buf); + + /* Put the chunk name into png_ptr->chunk_name */ + png_memcpy(png_ptr->chunk_name, buf + 4, 4); + + png_debug2(0, "Reading %s chunk, length = %lu", + png_ptr->chunk_name, length); + + /* Reset the crc and run it over the chunk name */ + png_reset_crc(png_ptr); + png_calculate_crc(png_ptr, png_ptr->chunk_name, 4); + + /* Check to see if chunk name is valid */ + png_check_chunk_name(png_ptr, png_ptr->chunk_name); + + return length; +} + +/* Read data, and (optionally) run it through the CRC. */ +void /* PRIVATE */ +png_crc_read(png_structp png_ptr, png_bytep buf, png_size_t length) +{ + if (png_ptr == NULL) + return; + png_read_data(png_ptr, buf, length); + png_calculate_crc(png_ptr, buf, length); +} + +/* Optionally skip data and then check the CRC. Depending on whether we + * are reading a ancillary or critical chunk, and how the program has set + * things up, we may calculate the CRC on the data and print a message. + * Returns '1' if there was a CRC error, '0' otherwise. + */ +int /* PRIVATE */ +png_crc_finish(png_structp png_ptr, png_uint_32 skip) +{ + png_size_t i; + png_size_t istop = png_ptr->zbuf_size; + + for (i = (png_size_t)skip; i > istop; i -= istop) + { + png_crc_read(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size); + } + if (i) + { + png_crc_read(png_ptr, png_ptr->zbuf, i); + } + + if (png_crc_error(png_ptr)) + { + if (((png_ptr->chunk_name[0] & 0x20) && /* Ancillary */ + !(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN)) || + (!(png_ptr->chunk_name[0] & 0x20) && /* Critical */ + (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_USE))) + { + png_chunk_warning(png_ptr, "CRC error"); + } + else + { + png_chunk_error(png_ptr, "CRC error"); + } + return (1); + } + + return (0); +} + +/* Compare the CRC stored in the PNG file with that calculated by libpng from + * the data it has read thus far. + */ +int /* PRIVATE */ +png_crc_error(png_structp png_ptr) +{ + png_byte crc_bytes[4]; + png_uint_32 crc; + int need_crc = 1; + + if (png_ptr->chunk_name[0] & 0x20) /* ancillary */ + { + if ((png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_MASK) == + (PNG_FLAG_CRC_ANCILLARY_USE | PNG_FLAG_CRC_ANCILLARY_NOWARN)) + need_crc = 0; + } + else /* critical */ + { + if (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_IGNORE) + need_crc = 0; + } + + png_read_data(png_ptr, crc_bytes, 4); + + if (need_crc) + { + crc = png_get_uint_32(crc_bytes); + return ((int)(crc != png_ptr->crc)); + } + else + return (0); +} + +#if defined(PNG_READ_zTXt_SUPPORTED) || defined(PNG_READ_iTXt_SUPPORTED) || \ + defined(PNG_READ_iCCP_SUPPORTED) +/* + * Decompress trailing data in a chunk. The assumption is that chunkdata + * points at an allocated area holding the contents of a chunk with a + * trailing compressed part. What we get back is an allocated area + * holding the original prefix part and an uncompressed version of the + * trailing part (the malloc area passed in is freed). + */ +void /* PRIVATE */ +png_decompress_chunk(png_structp png_ptr, int comp_type, + png_size_t chunklength, + png_size_t prefix_size, png_size_t *newlength) +{ + static PNG_CONST char msg[] = "Error decoding compressed text"; + png_charp text; + png_size_t text_size; + + if (comp_type == PNG_COMPRESSION_TYPE_BASE) + { + int ret = Z_OK; + png_ptr->zstream.next_in = (png_bytep)(png_ptr->chunkdata + prefix_size); + png_ptr->zstream.avail_in = (uInt)(chunklength - prefix_size); + png_ptr->zstream.next_out = png_ptr->zbuf; + png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; + + text_size = 0; + text = NULL; + + while (png_ptr->zstream.avail_in) + { + ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH); + if (ret != Z_OK && ret != Z_STREAM_END) + { + if (png_ptr->zstream.msg != NULL) + png_warning(png_ptr, png_ptr->zstream.msg); + else + png_warning(png_ptr, msg); + inflateReset(&png_ptr->zstream); + png_ptr->zstream.avail_in = 0; + + if (text == NULL) + { + text_size = prefix_size + png_sizeof(msg) + 1; + text = (png_charp)png_malloc_warn(png_ptr, text_size); + if (text == NULL) + { + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + png_error(png_ptr, "Not enough memory to decompress chunk"); + } + png_memcpy(text, png_ptr->chunkdata, prefix_size); + } + + text[text_size - 1] = 0x00; + + /* Copy what we can of the error message into the text chunk */ + text_size = (png_size_t)(chunklength - + (text - png_ptr->chunkdata) - 1); + if (text_size > png_sizeof(msg)) + text_size = png_sizeof(msg); + png_memcpy(text + prefix_size, msg, text_size); + break; + } + if (!png_ptr->zstream.avail_out || ret == Z_STREAM_END) + { + if (text == NULL) + { + text_size = prefix_size + + png_ptr->zbuf_size - png_ptr->zstream.avail_out; + text = (png_charp)png_malloc_warn(png_ptr, text_size + 1); + if (text == NULL) + { + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + png_error(png_ptr, + "Not enough memory to decompress chunk."); + } + png_memcpy(text + prefix_size, png_ptr->zbuf, + text_size - prefix_size); + png_memcpy(text, png_ptr->chunkdata, prefix_size); + *(text + text_size) = 0x00; + } + else + { + png_charp tmp; + + tmp = text; + text = (png_charp)png_malloc_warn(png_ptr, + (png_uint_32)(text_size + + png_ptr->zbuf_size - png_ptr->zstream.avail_out + 1)); + if (text == NULL) + { + png_free(png_ptr, tmp); + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + png_error(png_ptr, + "Not enough memory to decompress chunk.."); + } + png_memcpy(text, tmp, text_size); + png_free(png_ptr, tmp); + png_memcpy(text + text_size, png_ptr->zbuf, + (png_ptr->zbuf_size - png_ptr->zstream.avail_out)); + text_size += png_ptr->zbuf_size - png_ptr->zstream.avail_out; + *(text + text_size) = 0x00; + } + if (ret == Z_STREAM_END) + break; + else + { + png_ptr->zstream.next_out = png_ptr->zbuf; + png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; + } + } + } + if (ret != Z_STREAM_END) + { +#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE) + char umsg[52]; + + if (ret == Z_BUF_ERROR) + png_snprintf(umsg, 52, + "Buffer error in compressed datastream in %s chunk", + png_ptr->chunk_name); + + else if (ret == Z_DATA_ERROR) + png_snprintf(umsg, 52, + "Data error in compressed datastream in %s chunk", + png_ptr->chunk_name); + + else + png_snprintf(umsg, 52, + "Incomplete compressed datastream in %s chunk", + png_ptr->chunk_name); + + png_warning(png_ptr, umsg); +#else + png_warning(png_ptr, + "Incomplete compressed datastream in chunk other than IDAT"); +#endif + text_size = prefix_size; + if (text == NULL) + { + text = (png_charp)png_malloc_warn(png_ptr, text_size+1); + if (text == NULL) + { + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + png_error(png_ptr, "Not enough memory for text."); + } + png_memcpy(text, png_ptr->chunkdata, prefix_size); + } + *(text + text_size) = 0x00; + } + + inflateReset(&png_ptr->zstream); + png_ptr->zstream.avail_in = 0; + + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = text; + *newlength=text_size; + } + else /* if (comp_type != PNG_COMPRESSION_TYPE_BASE) */ + { +#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE) + char umsg[50]; + + png_snprintf(umsg, 50, "Unknown zTXt compression type %d", comp_type); + png_warning(png_ptr, umsg); +#else + png_warning(png_ptr, "Unknown zTXt compression type"); +#endif + + *(png_ptr->chunkdata + prefix_size) = 0x00; + *newlength = prefix_size; + } +} +#endif + +/* Read and check the IDHR chunk */ +void /* PRIVATE */ +png_handle_IHDR(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_byte buf[13]; + png_uint_32 width, height; + int bit_depth, color_type, compression_type, filter_type; + int interlace_type; + + png_debug(1, "in png_handle_IHDR"); + + if (png_ptr->mode & PNG_HAVE_IHDR) + png_error(png_ptr, "Out of place IHDR"); + + /* Check the length */ + if (length != 13) + png_error(png_ptr, "Invalid IHDR chunk"); + + png_ptr->mode |= PNG_HAVE_IHDR; + + png_crc_read(png_ptr, buf, 13); + png_crc_finish(png_ptr, 0); + + width = png_get_uint_31(png_ptr, buf); + height = png_get_uint_31(png_ptr, buf + 4); + bit_depth = buf[8]; + color_type = buf[9]; + compression_type = buf[10]; + filter_type = buf[11]; + interlace_type = buf[12]; + + /* Set internal variables */ + png_ptr->width = width; + png_ptr->height = height; + png_ptr->bit_depth = (png_byte)bit_depth; + png_ptr->interlaced = (png_byte)interlace_type; + png_ptr->color_type = (png_byte)color_type; +#if defined(PNG_MNG_FEATURES_SUPPORTED) + png_ptr->filter_type = (png_byte)filter_type; +#endif + png_ptr->compression_type = (png_byte)compression_type; + + /* Find number of channels */ + switch (png_ptr->color_type) + { + case PNG_COLOR_TYPE_GRAY: + case PNG_COLOR_TYPE_PALETTE: + png_ptr->channels = 1; + break; + + case PNG_COLOR_TYPE_RGB: + png_ptr->channels = 3; + break; + + case PNG_COLOR_TYPE_GRAY_ALPHA: + png_ptr->channels = 2; + break; + + case PNG_COLOR_TYPE_RGB_ALPHA: + png_ptr->channels = 4; + break; + } + + /* Set up other useful info */ + png_ptr->pixel_depth = (png_byte)(png_ptr->bit_depth * + png_ptr->channels); + png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, png_ptr->width); + png_debug1(3, "bit_depth = %d", png_ptr->bit_depth); + png_debug1(3, "channels = %d", png_ptr->channels); + png_debug1(3, "rowbytes = %lu", png_ptr->rowbytes); + png_set_IHDR(png_ptr, info_ptr, width, height, bit_depth, + color_type, interlace_type, compression_type, filter_type); +} + +/* Read and check the palette */ +void /* PRIVATE */ +png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_color palette[PNG_MAX_PALETTE_LENGTH]; + int num, i; +#ifndef PNG_NO_POINTER_INDEXING + png_colorp pal_ptr; +#endif + + png_debug(1, "in png_handle_PLTE"); + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before PLTE"); + + else if (png_ptr->mode & PNG_HAVE_IDAT) + { + png_warning(png_ptr, "Invalid PLTE after IDAT"); + png_crc_finish(png_ptr, length); + return; + } + + else if (png_ptr->mode & PNG_HAVE_PLTE) + png_error(png_ptr, "Duplicate PLTE chunk"); + + png_ptr->mode |= PNG_HAVE_PLTE; + + if (!(png_ptr->color_type&PNG_COLOR_MASK_COLOR)) + { + png_warning(png_ptr, + "Ignoring PLTE chunk in grayscale PNG"); + png_crc_finish(png_ptr, length); + return; + } +#if !defined(PNG_READ_OPT_PLTE_SUPPORTED) + if (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE) + { + png_crc_finish(png_ptr, length); + return; + } +#endif + + if (length > 3*PNG_MAX_PALETTE_LENGTH || length % 3) + { + if (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE) + { + png_warning(png_ptr, "Invalid palette chunk"); + png_crc_finish(png_ptr, length); + return; + } + + else + { + png_error(png_ptr, "Invalid palette chunk"); + } + } + + num = (int)length / 3; + +#ifndef PNG_NO_POINTER_INDEXING + for (i = 0, pal_ptr = palette; i < num; i++, pal_ptr++) + { + png_byte buf[3]; + + png_crc_read(png_ptr, buf, 3); + pal_ptr->red = buf[0]; + pal_ptr->green = buf[1]; + pal_ptr->blue = buf[2]; + } +#else + for (i = 0; i < num; i++) + { + png_byte buf[3]; + + png_crc_read(png_ptr, buf, 3); + /* Don't depend upon png_color being any order */ + palette[i].red = buf[0]; + palette[i].green = buf[1]; + palette[i].blue = buf[2]; + } +#endif + + /* If we actually NEED the PLTE chunk (ie for a paletted image), we do + * whatever the normal CRC configuration tells us. However, if we + * have an RGB image, the PLTE can be considered ancillary, so + * we will act as though it is. + */ +#if !defined(PNG_READ_OPT_PLTE_SUPPORTED) + if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) +#endif + { + png_crc_finish(png_ptr, 0); + } +#if !defined(PNG_READ_OPT_PLTE_SUPPORTED) + else if (png_crc_error(png_ptr)) /* Only if we have a CRC error */ + { + /* If we don't want to use the data from an ancillary chunk, + we have two options: an error abort, or a warning and we + ignore the data in this chunk (which should be OK, since + it's considered ancillary for a RGB or RGBA image). */ + if (!(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_USE)) + { + if (png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN) + { + png_chunk_error(png_ptr, "CRC error"); + } + else + { + png_chunk_warning(png_ptr, "CRC error"); + return; + } + } + /* Otherwise, we (optionally) emit a warning and use the chunk. */ + else if (!(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN)) + { + png_chunk_warning(png_ptr, "CRC error"); + } + } +#endif + + png_set_PLTE(png_ptr, info_ptr, palette, num); + +#if defined(PNG_READ_tRNS_SUPPORTED) + if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) + { + if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_tRNS)) + { + if (png_ptr->num_trans > (png_uint_16)num) + { + png_warning(png_ptr, "Truncating incorrect tRNS chunk length"); + png_ptr->num_trans = (png_uint_16)num; + } + if (info_ptr->num_trans > (png_uint_16)num) + { + png_warning(png_ptr, "Truncating incorrect info tRNS chunk length"); + info_ptr->num_trans = (png_uint_16)num; + } + } + } +#endif + +} + +void /* PRIVATE */ +png_handle_IEND(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_debug(1, "in png_handle_IEND"); + + if (!(png_ptr->mode & PNG_HAVE_IHDR) || !(png_ptr->mode & PNG_HAVE_IDAT)) + { + png_error(png_ptr, "No image in file"); + } + + png_ptr->mode |= (PNG_AFTER_IDAT | PNG_HAVE_IEND); + + if (length != 0) + { + png_warning(png_ptr, "Incorrect IEND chunk length"); + } + png_crc_finish(png_ptr, length); + + info_ptr = info_ptr; /* Quiet compiler warnings about unused info_ptr */ +} + +#if defined(PNG_READ_gAMA_SUPPORTED) +void /* PRIVATE */ +png_handle_gAMA(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_fixed_point igamma; +#ifdef PNG_FLOATING_POINT_SUPPORTED + float file_gamma; +#endif + png_byte buf[4]; + + png_debug(1, "in png_handle_gAMA"); + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before gAMA"); + else if (png_ptr->mode & PNG_HAVE_IDAT) + { + png_warning(png_ptr, "Invalid gAMA after IDAT"); + png_crc_finish(png_ptr, length); + return; + } + else if (png_ptr->mode & PNG_HAVE_PLTE) + /* Should be an error, but we can cope with it */ + png_warning(png_ptr, "Out of place gAMA chunk"); + + if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA) +#if defined(PNG_READ_sRGB_SUPPORTED) + && !(info_ptr->valid & PNG_INFO_sRGB) +#endif + ) + { + png_warning(png_ptr, "Duplicate gAMA chunk"); + png_crc_finish(png_ptr, length); + return; + } + + if (length != 4) + { + png_warning(png_ptr, "Incorrect gAMA chunk length"); + png_crc_finish(png_ptr, length); + return; + } + + png_crc_read(png_ptr, buf, 4); + if (png_crc_finish(png_ptr, 0)) + return; + + igamma = (png_fixed_point)png_get_uint_32(buf); + /* Check for zero gamma */ + if (igamma == 0) + { + png_warning(png_ptr, + "Ignoring gAMA chunk with gamma=0"); + return; + } + +#if defined(PNG_READ_sRGB_SUPPORTED) + if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sRGB)) + if (PNG_OUT_OF_RANGE(igamma, 45500L, 500)) + { + png_warning(png_ptr, + "Ignoring incorrect gAMA value when sRGB is also present"); +#ifndef PNG_NO_CONSOLE_IO + fprintf(stderr, "gamma = (%d/100000)", (int)igamma); +#endif + return; + } +#endif /* PNG_READ_sRGB_SUPPORTED */ + +#ifdef PNG_FLOATING_POINT_SUPPORTED + file_gamma = (float)igamma / (float)100000.0; +# ifdef PNG_READ_GAMMA_SUPPORTED + png_ptr->gamma = file_gamma; +# endif + png_set_gAMA(png_ptr, info_ptr, file_gamma); +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED + png_set_gAMA_fixed(png_ptr, info_ptr, igamma); +#endif +} +#endif + +#if defined(PNG_READ_sBIT_SUPPORTED) +void /* PRIVATE */ +png_handle_sBIT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_size_t truelen; + png_byte buf[4]; + + png_debug(1, "in png_handle_sBIT"); + + buf[0] = buf[1] = buf[2] = buf[3] = 0; + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before sBIT"); + else if (png_ptr->mode & PNG_HAVE_IDAT) + { + png_warning(png_ptr, "Invalid sBIT after IDAT"); + png_crc_finish(png_ptr, length); + return; + } + else if (png_ptr->mode & PNG_HAVE_PLTE) + { + /* Should be an error, but we can cope with it */ + png_warning(png_ptr, "Out of place sBIT chunk"); + } + if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sBIT)) + { + png_warning(png_ptr, "Duplicate sBIT chunk"); + png_crc_finish(png_ptr, length); + return; + } + + if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) + truelen = 3; + else + truelen = (png_size_t)png_ptr->channels; + + if (length != truelen || length > 4) + { + png_warning(png_ptr, "Incorrect sBIT chunk length"); + png_crc_finish(png_ptr, length); + return; + } + + png_crc_read(png_ptr, buf, truelen); + if (png_crc_finish(png_ptr, 0)) + return; + + if (png_ptr->color_type & PNG_COLOR_MASK_COLOR) + { + png_ptr->sig_bit.red = buf[0]; + png_ptr->sig_bit.green = buf[1]; + png_ptr->sig_bit.blue = buf[2]; + png_ptr->sig_bit.alpha = buf[3]; + } + else + { + png_ptr->sig_bit.gray = buf[0]; + png_ptr->sig_bit.red = buf[0]; + png_ptr->sig_bit.green = buf[0]; + png_ptr->sig_bit.blue = buf[0]; + png_ptr->sig_bit.alpha = buf[1]; + } + png_set_sBIT(png_ptr, info_ptr, &(png_ptr->sig_bit)); +} +#endif + +#if defined(PNG_READ_cHRM_SUPPORTED) +void /* PRIVATE */ +png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_byte buf[32]; +#ifdef PNG_FLOATING_POINT_SUPPORTED + float white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y; +#endif + png_fixed_point int_x_white, int_y_white, int_x_red, int_y_red, int_x_green, + int_y_green, int_x_blue, int_y_blue; + + png_uint_32 uint_x, uint_y; + + png_debug(1, "in png_handle_cHRM"); + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before cHRM"); + else if (png_ptr->mode & PNG_HAVE_IDAT) + { + png_warning(png_ptr, "Invalid cHRM after IDAT"); + png_crc_finish(png_ptr, length); + return; + } + else if (png_ptr->mode & PNG_HAVE_PLTE) + /* Should be an error, but we can cope with it */ + png_warning(png_ptr, "Missing PLTE before cHRM"); + + if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM) +#if defined(PNG_READ_sRGB_SUPPORTED) + && !(info_ptr->valid & PNG_INFO_sRGB) +#endif + ) + { + png_warning(png_ptr, "Duplicate cHRM chunk"); + png_crc_finish(png_ptr, length); + return; + } + + if (length != 32) + { + png_warning(png_ptr, "Incorrect cHRM chunk length"); + png_crc_finish(png_ptr, length); + return; + } + + png_crc_read(png_ptr, buf, 32); + if (png_crc_finish(png_ptr, 0)) + return; + + uint_x = png_get_uint_32(buf); + uint_y = png_get_uint_32(buf + 4); + int_x_white = (png_fixed_point)uint_x; + int_y_white = (png_fixed_point)uint_y; + + uint_x = png_get_uint_32(buf + 8); + uint_y = png_get_uint_32(buf + 12); + int_x_red = (png_fixed_point)uint_x; + int_y_red = (png_fixed_point)uint_y; + + uint_x = png_get_uint_32(buf + 16); + uint_y = png_get_uint_32(buf + 20); + int_x_green = (png_fixed_point)uint_x; + int_y_green = (png_fixed_point)uint_y; + + uint_x = png_get_uint_32(buf + 24); + uint_y = png_get_uint_32(buf + 28); + int_x_blue = (png_fixed_point)uint_x; + int_y_blue = (png_fixed_point)uint_y; + +#ifdef PNG_FLOATING_POINT_SUPPORTED + white_x = (float)int_x_white / (float)100000.0; + white_y = (float)int_y_white / (float)100000.0; + red_x = (float)int_x_red / (float)100000.0; + red_y = (float)int_y_red / (float)100000.0; + green_x = (float)int_x_green / (float)100000.0; + green_y = (float)int_y_green / (float)100000.0; + blue_x = (float)int_x_blue / (float)100000.0; + blue_y = (float)int_y_blue / (float)100000.0; +#endif + +#if defined(PNG_READ_sRGB_SUPPORTED) + if ((info_ptr != NULL) && (info_ptr->valid & PNG_INFO_sRGB)) + { + if (PNG_OUT_OF_RANGE(int_x_white, 31270, 1000) || + PNG_OUT_OF_RANGE(int_y_white, 32900, 1000) || + PNG_OUT_OF_RANGE(int_x_red, 64000L, 1000) || + PNG_OUT_OF_RANGE(int_y_red, 33000, 1000) || + PNG_OUT_OF_RANGE(int_x_green, 30000, 1000) || + PNG_OUT_OF_RANGE(int_y_green, 60000L, 1000) || + PNG_OUT_OF_RANGE(int_x_blue, 15000, 1000) || + PNG_OUT_OF_RANGE(int_y_blue, 6000, 1000)) + { + png_warning(png_ptr, + "Ignoring incorrect cHRM value when sRGB is also present"); +#ifndef PNG_NO_CONSOLE_IO +#ifdef PNG_FLOATING_POINT_SUPPORTED + fprintf(stderr, "wx=%f, wy=%f, rx=%f, ry=%f\n", + white_x, white_y, red_x, red_y); + fprintf(stderr, "gx=%f, gy=%f, bx=%f, by=%f\n", + green_x, green_y, blue_x, blue_y); +#else + fprintf(stderr, "wx=%ld, wy=%ld, rx=%ld, ry=%ld\n", + int_x_white, int_y_white, int_x_red, int_y_red); + fprintf(stderr, "gx=%ld, gy=%ld, bx=%ld, by=%ld\n", + int_x_green, int_y_green, int_x_blue, int_y_blue); +#endif +#endif /* PNG_NO_CONSOLE_IO */ + } + return; + } +#endif /* PNG_READ_sRGB_SUPPORTED */ + +#ifdef PNG_FLOATING_POINT_SUPPORTED + png_set_cHRM(png_ptr, info_ptr, + white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y); +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED + png_set_cHRM_fixed(png_ptr, info_ptr, + int_x_white, int_y_white, int_x_red, int_y_red, int_x_green, + int_y_green, int_x_blue, int_y_blue); +#endif +} +#endif + +#if defined(PNG_READ_sRGB_SUPPORTED) +void /* PRIVATE */ +png_handle_sRGB(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + int intent; + png_byte buf[1]; + + png_debug(1, "in png_handle_sRGB"); + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before sRGB"); + else if (png_ptr->mode & PNG_HAVE_IDAT) + { + png_warning(png_ptr, "Invalid sRGB after IDAT"); + png_crc_finish(png_ptr, length); + return; + } + else if (png_ptr->mode & PNG_HAVE_PLTE) + /* Should be an error, but we can cope with it */ + png_warning(png_ptr, "Out of place sRGB chunk"); + + if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sRGB)) + { + png_warning(png_ptr, "Duplicate sRGB chunk"); + png_crc_finish(png_ptr, length); + return; + } + + if (length != 1) + { + png_warning(png_ptr, "Incorrect sRGB chunk length"); + png_crc_finish(png_ptr, length); + return; + } + + png_crc_read(png_ptr, buf, 1); + if (png_crc_finish(png_ptr, 0)) + return; + + intent = buf[0]; + /* Check for bad intent */ + if (intent >= PNG_sRGB_INTENT_LAST) + { + png_warning(png_ptr, "Unknown sRGB intent"); + return; + } + +#if defined(PNG_READ_gAMA_SUPPORTED) && defined(PNG_READ_GAMMA_SUPPORTED) + if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA)) + { + png_fixed_point igamma; +#ifdef PNG_FIXED_POINT_SUPPORTED + igamma=info_ptr->int_gamma; +#else +# ifdef PNG_FLOATING_POINT_SUPPORTED + igamma=(png_fixed_point)(info_ptr->gamma * 100000.); +# endif +#endif + if (PNG_OUT_OF_RANGE(igamma, 45500L, 500)) + { + png_warning(png_ptr, + "Ignoring incorrect gAMA value when sRGB is also present"); +#ifndef PNG_NO_CONSOLE_IO +# ifdef PNG_FIXED_POINT_SUPPORTED + fprintf(stderr, "incorrect gamma=(%d/100000)\n", + (int)png_ptr->int_gamma); +# else +# ifdef PNG_FLOATING_POINT_SUPPORTED + fprintf(stderr, "incorrect gamma=%f\n", png_ptr->gamma); +# endif +# endif +#endif + } + } +#endif /* PNG_READ_gAMA_SUPPORTED */ + +#ifdef PNG_READ_cHRM_SUPPORTED +#ifdef PNG_FIXED_POINT_SUPPORTED + if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM)) + if (PNG_OUT_OF_RANGE(info_ptr->int_x_white, 31270, 1000) || + PNG_OUT_OF_RANGE(info_ptr->int_y_white, 32900, 1000) || + PNG_OUT_OF_RANGE(info_ptr->int_x_red, 64000L, 1000) || + PNG_OUT_OF_RANGE(info_ptr->int_y_red, 33000, 1000) || + PNG_OUT_OF_RANGE(info_ptr->int_x_green, 30000, 1000) || + PNG_OUT_OF_RANGE(info_ptr->int_y_green, 60000L, 1000) || + PNG_OUT_OF_RANGE(info_ptr->int_x_blue, 15000, 1000) || + PNG_OUT_OF_RANGE(info_ptr->int_y_blue, 6000, 1000)) + { + png_warning(png_ptr, + "Ignoring incorrect cHRM value when sRGB is also present"); + } +#endif /* PNG_FIXED_POINT_SUPPORTED */ +#endif /* PNG_READ_cHRM_SUPPORTED */ + + png_set_sRGB_gAMA_and_cHRM(png_ptr, info_ptr, intent); +} +#endif /* PNG_READ_sRGB_SUPPORTED */ + +#if defined(PNG_READ_iCCP_SUPPORTED) +void /* PRIVATE */ +png_handle_iCCP(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +/* Note: this does not properly handle chunks that are > 64K under DOS */ +{ + png_byte compression_type; + png_bytep pC; + png_charp profile; + png_uint_32 skip = 0; + png_uint_32 profile_size, profile_length; + png_size_t slength, prefix_length, data_length; + + png_debug(1, "in png_handle_iCCP"); + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before iCCP"); + else if (png_ptr->mode & PNG_HAVE_IDAT) + { + png_warning(png_ptr, "Invalid iCCP after IDAT"); + png_crc_finish(png_ptr, length); + return; + } + else if (png_ptr->mode & PNG_HAVE_PLTE) + /* Should be an error, but we can cope with it */ + png_warning(png_ptr, "Out of place iCCP chunk"); + + if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_iCCP)) + { + png_warning(png_ptr, "Duplicate iCCP chunk"); + png_crc_finish(png_ptr, length); + return; + } + +#ifdef PNG_MAX_MALLOC_64K + if (length > (png_uint_32)65535L) + { + png_warning(png_ptr, "iCCP chunk too large to fit in memory"); + skip = length - (png_uint_32)65535L; + length = (png_uint_32)65535L; + } +#endif + + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = (png_charp)png_malloc(png_ptr, length + 1); + slength = (png_size_t)length; + png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength); + + if (png_crc_finish(png_ptr, skip)) + { + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + return; + } + + png_ptr->chunkdata[slength] = 0x00; + + for (profile = png_ptr->chunkdata; *profile; profile++) + /* Empty loop to find end of name */ ; + + ++profile; + + /* There should be at least one zero (the compression type byte) + * following the separator, and we should be on it + */ + if ( profile >= png_ptr->chunkdata + slength - 1) + { + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + png_warning(png_ptr, "Malformed iCCP chunk"); + return; + } + + /* Compression_type should always be zero */ + compression_type = *profile++; + if (compression_type) + { + png_warning(png_ptr, "Ignoring nonzero compression type in iCCP chunk"); + compression_type = 0x00; /* Reset it to zero (libpng-1.0.6 through 1.0.8 + wrote nonzero) */ + } + + prefix_length = profile - png_ptr->chunkdata; + png_decompress_chunk(png_ptr, compression_type, + slength, prefix_length, &data_length); + + profile_length = data_length - prefix_length; + + if ( prefix_length > data_length || profile_length < 4) + { + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + png_warning(png_ptr, "Profile size field missing from iCCP chunk"); + return; + } + + /* Check the profile_size recorded in the first 32 bits of the ICC profile */ + pC = (png_bytep)(png_ptr->chunkdata + prefix_length); + profile_size = ((*(pC ))<<24) | + ((*(pC + 1))<<16) | + ((*(pC + 2))<< 8) | + ((*(pC + 3)) ); + + if (profile_size < profile_length) + profile_length = profile_size; + + if (profile_size > profile_length) + { + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + png_warning(png_ptr, "Ignoring truncated iCCP profile."); + return; + } + + png_set_iCCP(png_ptr, info_ptr, png_ptr->chunkdata, + compression_type, png_ptr->chunkdata + prefix_length, profile_length); + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; +} +#endif /* PNG_READ_iCCP_SUPPORTED */ + +#if defined(PNG_READ_sPLT_SUPPORTED) +void /* PRIVATE */ +png_handle_sPLT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +/* Note: this does not properly handle chunks that are > 64K under DOS */ +{ + png_bytep entry_start; + png_sPLT_t new_palette; +#ifdef PNG_NO_POINTER_INDEXING + png_sPLT_entryp pp; +#endif + int data_length, entry_size, i; + png_uint_32 skip = 0; + png_size_t slength; + + png_debug(1, "in png_handle_sPLT"); + + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before sPLT"); + else if (png_ptr->mode & PNG_HAVE_IDAT) + { + png_warning(png_ptr, "Invalid sPLT after IDAT"); + png_crc_finish(png_ptr, length); + return; + } + +#ifdef PNG_MAX_MALLOC_64K + if (length > (png_uint_32)65535L) + { + png_warning(png_ptr, "sPLT chunk too large to fit in memory"); + skip = length - (png_uint_32)65535L; + length = (png_uint_32)65535L; + } +#endif + + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = (png_charp)png_malloc(png_ptr, length + 1); + slength = (png_size_t)length; + png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength); + + if (png_crc_finish(png_ptr, skip)) + { + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + return; + } + + png_ptr->chunkdata[slength] = 0x00; + + for (entry_start = (png_bytep)png_ptr->chunkdata; *entry_start; entry_start++) + /* Empty loop to find end of name */ ; + ++entry_start; + + /* A sample depth should follow the separator, and we should be on it */ + if (entry_start > (png_bytep)png_ptr->chunkdata + slength - 2) + { + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + png_warning(png_ptr, "malformed sPLT chunk"); + return; + } + + new_palette.depth = *entry_start++; + entry_size = (new_palette.depth == 8 ? 6 : 10); + data_length = (slength - (entry_start - (png_bytep)png_ptr->chunkdata)); + + /* Integrity-check the data length */ + if (data_length % entry_size) + { + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + png_warning(png_ptr, "sPLT chunk has bad length"); + return; + } + + new_palette.nentries = (png_int_32) ( data_length / entry_size); + if ((png_uint_32) new_palette.nentries > + (png_uint_32) (PNG_SIZE_MAX / png_sizeof(png_sPLT_entry))) + { + png_warning(png_ptr, "sPLT chunk too long"); + return; + } + new_palette.entries = (png_sPLT_entryp)png_malloc_warn( + png_ptr, new_palette.nentries * png_sizeof(png_sPLT_entry)); + if (new_palette.entries == NULL) + { + png_warning(png_ptr, "sPLT chunk requires too much memory"); + return; + } + +#ifndef PNG_NO_POINTER_INDEXING + for (i = 0; i < new_palette.nentries; i++) + { + png_sPLT_entryp pp = new_palette.entries + i; + + if (new_palette.depth == 8) + { + pp->red = *entry_start++; + pp->green = *entry_start++; + pp->blue = *entry_start++; + pp->alpha = *entry_start++; + } + else + { + pp->red = png_get_uint_16(entry_start); entry_start += 2; + pp->green = png_get_uint_16(entry_start); entry_start += 2; + pp->blue = png_get_uint_16(entry_start); entry_start += 2; + pp->alpha = png_get_uint_16(entry_start); entry_start += 2; + } + pp->frequency = png_get_uint_16(entry_start); entry_start += 2; + } +#else + pp = new_palette.entries; + for (i = 0; i < new_palette.nentries; i++) + { + + if (new_palette.depth == 8) + { + pp[i].red = *entry_start++; + pp[i].green = *entry_start++; + pp[i].blue = *entry_start++; + pp[i].alpha = *entry_start++; + } + else + { + pp[i].red = png_get_uint_16(entry_start); entry_start += 2; + pp[i].green = png_get_uint_16(entry_start); entry_start += 2; + pp[i].blue = png_get_uint_16(entry_start); entry_start += 2; + pp[i].alpha = png_get_uint_16(entry_start); entry_start += 2; + } + pp->frequency = png_get_uint_16(entry_start); entry_start += 2; + } +#endif + + /* Discard all chunk data except the name and stash that */ + new_palette.name = png_ptr->chunkdata; + + png_set_sPLT(png_ptr, info_ptr, &new_palette, 1); + + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + png_free(png_ptr, new_palette.entries); +} +#endif /* PNG_READ_sPLT_SUPPORTED */ + +#if defined(PNG_READ_tRNS_SUPPORTED) +void /* PRIVATE */ +png_handle_tRNS(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_byte readbuf[PNG_MAX_PALETTE_LENGTH]; + + png_debug(1, "in png_handle_tRNS"); + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before tRNS"); + else if (png_ptr->mode & PNG_HAVE_IDAT) + { + png_warning(png_ptr, "Invalid tRNS after IDAT"); + png_crc_finish(png_ptr, length); + return; + } + else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_tRNS)) + { + png_warning(png_ptr, "Duplicate tRNS chunk"); + png_crc_finish(png_ptr, length); + return; + } + + if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY) + { + png_byte buf[2]; + + if (length != 2) + { + png_warning(png_ptr, "Incorrect tRNS chunk length"); + png_crc_finish(png_ptr, length); + return; + } + + png_crc_read(png_ptr, buf, 2); + png_ptr->num_trans = 1; + png_ptr->trans_values.gray = png_get_uint_16(buf); + } + else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB) + { + png_byte buf[6]; + + if (length != 6) + { + png_warning(png_ptr, "Incorrect tRNS chunk length"); + png_crc_finish(png_ptr, length); + return; + } + png_crc_read(png_ptr, buf, (png_size_t)length); + png_ptr->num_trans = 1; + png_ptr->trans_values.red = png_get_uint_16(buf); + png_ptr->trans_values.green = png_get_uint_16(buf + 2); + png_ptr->trans_values.blue = png_get_uint_16(buf + 4); + } + else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) + { + if (!(png_ptr->mode & PNG_HAVE_PLTE)) + { + /* Should be an error, but we can cope with it. */ + png_warning(png_ptr, "Missing PLTE before tRNS"); + } + if (length > (png_uint_32)png_ptr->num_palette || + length > PNG_MAX_PALETTE_LENGTH) + { + png_warning(png_ptr, "Incorrect tRNS chunk length"); + png_crc_finish(png_ptr, length); + return; + } + if (length == 0) + { + png_warning(png_ptr, "Zero length tRNS chunk"); + png_crc_finish(png_ptr, length); + return; + } + png_crc_read(png_ptr, readbuf, (png_size_t)length); + png_ptr->num_trans = (png_uint_16)length; + } + else + { + png_warning(png_ptr, "tRNS chunk not allowed with alpha channel"); + png_crc_finish(png_ptr, length); + return; + } + + if (png_crc_finish(png_ptr, 0)) + { + png_ptr->num_trans = 0; + return; + } + + png_set_tRNS(png_ptr, info_ptr, readbuf, png_ptr->num_trans, + &(png_ptr->trans_values)); +} +#endif + +#if defined(PNG_READ_bKGD_SUPPORTED) +void /* PRIVATE */ +png_handle_bKGD(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_size_t truelen; + png_byte buf[6]; + + png_debug(1, "in png_handle_bKGD"); + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before bKGD"); + else if (png_ptr->mode & PNG_HAVE_IDAT) + { + png_warning(png_ptr, "Invalid bKGD after IDAT"); + png_crc_finish(png_ptr, length); + return; + } + else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && + !(png_ptr->mode & PNG_HAVE_PLTE)) + { + png_warning(png_ptr, "Missing PLTE before bKGD"); + png_crc_finish(png_ptr, length); + return; + } + else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_bKGD)) + { + png_warning(png_ptr, "Duplicate bKGD chunk"); + png_crc_finish(png_ptr, length); + return; + } + + if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) + truelen = 1; + else if (png_ptr->color_type & PNG_COLOR_MASK_COLOR) + truelen = 6; + else + truelen = 2; + + if (length != truelen) + { + png_warning(png_ptr, "Incorrect bKGD chunk length"); + png_crc_finish(png_ptr, length); + return; + } + + png_crc_read(png_ptr, buf, truelen); + if (png_crc_finish(png_ptr, 0)) + return; + + /* We convert the index value into RGB components so that we can allow + * arbitrary RGB values for background when we have transparency, and + * so it is easy to determine the RGB values of the background color + * from the info_ptr struct. */ + if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) + { + png_ptr->background.index = buf[0]; + if (info_ptr && info_ptr->num_palette) + { + if (buf[0] >= info_ptr->num_palette) + { + png_warning(png_ptr, "Incorrect bKGD chunk index value"); + return; + } + png_ptr->background.red = + (png_uint_16)png_ptr->palette[buf[0]].red; + png_ptr->background.green = + (png_uint_16)png_ptr->palette[buf[0]].green; + png_ptr->background.blue = + (png_uint_16)png_ptr->palette[buf[0]].blue; + } + } + else if (!(png_ptr->color_type & PNG_COLOR_MASK_COLOR)) /* GRAY */ + { + png_ptr->background.red = + png_ptr->background.green = + png_ptr->background.blue = + png_ptr->background.gray = png_get_uint_16(buf); + } + else + { + png_ptr->background.red = png_get_uint_16(buf); + png_ptr->background.green = png_get_uint_16(buf + 2); + png_ptr->background.blue = png_get_uint_16(buf + 4); + } + + png_set_bKGD(png_ptr, info_ptr, &(png_ptr->background)); +} +#endif + +#if defined(PNG_READ_hIST_SUPPORTED) +void /* PRIVATE */ +png_handle_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + unsigned int num, i; + png_uint_16 readbuf[PNG_MAX_PALETTE_LENGTH]; + + png_debug(1, "in png_handle_hIST"); + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before hIST"); + else if (png_ptr->mode & PNG_HAVE_IDAT) + { + png_warning(png_ptr, "Invalid hIST after IDAT"); + png_crc_finish(png_ptr, length); + return; + } + else if (!(png_ptr->mode & PNG_HAVE_PLTE)) + { + png_warning(png_ptr, "Missing PLTE before hIST"); + png_crc_finish(png_ptr, length); + return; + } + else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_hIST)) + { + png_warning(png_ptr, "Duplicate hIST chunk"); + png_crc_finish(png_ptr, length); + return; + } + + num = length / 2 ; + if (num != (unsigned int) png_ptr->num_palette || num > + (unsigned int) PNG_MAX_PALETTE_LENGTH) + { + png_warning(png_ptr, "Incorrect hIST chunk length"); + png_crc_finish(png_ptr, length); + return; + } + + for (i = 0; i < num; i++) + { + png_byte buf[2]; + + png_crc_read(png_ptr, buf, 2); + readbuf[i] = png_get_uint_16(buf); + } + + if (png_crc_finish(png_ptr, 0)) + return; + + png_set_hIST(png_ptr, info_ptr, readbuf); +} +#endif + +#if defined(PNG_READ_pHYs_SUPPORTED) +void /* PRIVATE */ +png_handle_pHYs(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_byte buf[9]; + png_uint_32 res_x, res_y; + int unit_type; + + png_debug(1, "in png_handle_pHYs"); + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before pHYs"); + else if (png_ptr->mode & PNG_HAVE_IDAT) + { + png_warning(png_ptr, "Invalid pHYs after IDAT"); + png_crc_finish(png_ptr, length); + return; + } + else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs)) + { + png_warning(png_ptr, "Duplicate pHYs chunk"); + png_crc_finish(png_ptr, length); + return; + } + + if (length != 9) + { + png_warning(png_ptr, "Incorrect pHYs chunk length"); + png_crc_finish(png_ptr, length); + return; + } + + png_crc_read(png_ptr, buf, 9); + if (png_crc_finish(png_ptr, 0)) + return; + + res_x = png_get_uint_32(buf); + res_y = png_get_uint_32(buf + 4); + unit_type = buf[8]; + png_set_pHYs(png_ptr, info_ptr, res_x, res_y, unit_type); +} +#endif + +#if defined(PNG_READ_oFFs_SUPPORTED) +void /* PRIVATE */ +png_handle_oFFs(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_byte buf[9]; + png_int_32 offset_x, offset_y; + int unit_type; + + png_debug(1, "in png_handle_oFFs"); + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before oFFs"); + else if (png_ptr->mode & PNG_HAVE_IDAT) + { + png_warning(png_ptr, "Invalid oFFs after IDAT"); + png_crc_finish(png_ptr, length); + return; + } + else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs)) + { + png_warning(png_ptr, "Duplicate oFFs chunk"); + png_crc_finish(png_ptr, length); + return; + } + + if (length != 9) + { + png_warning(png_ptr, "Incorrect oFFs chunk length"); + png_crc_finish(png_ptr, length); + return; + } + + png_crc_read(png_ptr, buf, 9); + if (png_crc_finish(png_ptr, 0)) + return; + + offset_x = png_get_int_32(buf); + offset_y = png_get_int_32(buf + 4); + unit_type = buf[8]; + png_set_oFFs(png_ptr, info_ptr, offset_x, offset_y, unit_type); +} +#endif + +#if defined(PNG_READ_pCAL_SUPPORTED) +/* Read the pCAL chunk (described in the PNG Extensions document) */ +void /* PRIVATE */ +png_handle_pCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_int_32 X0, X1; + png_byte type, nparams; + png_charp buf, units, endptr; + png_charpp params; + png_size_t slength; + int i; + + png_debug(1, "in png_handle_pCAL"); + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before pCAL"); + else if (png_ptr->mode & PNG_HAVE_IDAT) + { + png_warning(png_ptr, "Invalid pCAL after IDAT"); + png_crc_finish(png_ptr, length); + return; + } + else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_pCAL)) + { + png_warning(png_ptr, "Duplicate pCAL chunk"); + png_crc_finish(png_ptr, length); + return; + } + + png_debug1(2, "Allocating and reading pCAL chunk data (%lu bytes)", + length + 1); + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1); + if (png_ptr->chunkdata == NULL) + { + png_warning(png_ptr, "No memory for pCAL purpose."); + return; + } + slength = (png_size_t)length; + png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength); + + if (png_crc_finish(png_ptr, 0)) + { + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + return; + } + + png_ptr->chunkdata[slength] = 0x00; /* Null terminate the last string */ + + png_debug(3, "Finding end of pCAL purpose string"); + for (buf = png_ptr->chunkdata; *buf; buf++) + /* Empty loop */ ; + + endptr = png_ptr->chunkdata + slength; + + /* We need to have at least 12 bytes after the purpose string + in order to get the parameter information. */ + if (endptr <= buf + 12) + { + png_warning(png_ptr, "Invalid pCAL data"); + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + return; + } + + png_debug(3, "Reading pCAL X0, X1, type, nparams, and units"); + X0 = png_get_int_32((png_bytep)buf+1); + X1 = png_get_int_32((png_bytep)buf+5); + type = buf[9]; + nparams = buf[10]; + units = buf + 11; + + png_debug(3, "Checking pCAL equation type and number of parameters"); + /* Check that we have the right number of parameters for known + equation types. */ + if ((type == PNG_EQUATION_LINEAR && nparams != 2) || + (type == PNG_EQUATION_BASE_E && nparams != 3) || + (type == PNG_EQUATION_ARBITRARY && nparams != 3) || + (type == PNG_EQUATION_HYPERBOLIC && nparams != 4)) + { + png_warning(png_ptr, "Invalid pCAL parameters for equation type"); + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + return; + } + else if (type >= PNG_EQUATION_LAST) + { + png_warning(png_ptr, "Unrecognized equation type for pCAL chunk"); + } + + for (buf = units; *buf; buf++) + /* Empty loop to move past the units string. */ ; + + png_debug(3, "Allocating pCAL parameters array"); + params = (png_charpp)png_malloc_warn(png_ptr, + (png_uint_32)(nparams * png_sizeof(png_charp))) ; + if (params == NULL) + { + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + png_warning(png_ptr, "No memory for pCAL params."); + return; + } + + /* Get pointers to the start of each parameter string. */ + for (i = 0; i < (int)nparams; i++) + { + buf++; /* Skip the null string terminator from previous parameter. */ + + png_debug1(3, "Reading pCAL parameter %d", i); + for (params[i] = buf; buf <= endptr && *buf != 0x00; buf++) + /* Empty loop to move past each parameter string */ ; + + /* Make sure we haven't run out of data yet */ + if (buf > endptr) + { + png_warning(png_ptr, "Invalid pCAL data"); + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + png_free(png_ptr, params); + return; + } + } + + png_set_pCAL(png_ptr, info_ptr, png_ptr->chunkdata, X0, X1, type, nparams, + units, params); + + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + png_free(png_ptr, params); +} +#endif + +#if defined(PNG_READ_sCAL_SUPPORTED) +/* Read the sCAL chunk */ +void /* PRIVATE */ +png_handle_sCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_charp ep; +#ifdef PNG_FLOATING_POINT_SUPPORTED + double width, height; + png_charp vp; +#else +#ifdef PNG_FIXED_POINT_SUPPORTED + png_charp swidth, sheight; +#endif +#endif + png_size_t slength; + + png_debug(1, "in png_handle_sCAL"); + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before sCAL"); + else if (png_ptr->mode & PNG_HAVE_IDAT) + { + png_warning(png_ptr, "Invalid sCAL after IDAT"); + png_crc_finish(png_ptr, length); + return; + } + else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_sCAL)) + { + png_warning(png_ptr, "Duplicate sCAL chunk"); + png_crc_finish(png_ptr, length); + return; + } + + png_debug1(2, "Allocating and reading sCAL chunk data (%lu bytes)", + length + 1); + png_ptr->chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1); + if (png_ptr->chunkdata == NULL) + { + png_warning(png_ptr, "Out of memory while processing sCAL chunk"); + return; + } + slength = (png_size_t)length; + png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength); + + if (png_crc_finish(png_ptr, 0)) + { + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + return; + } + + png_ptr->chunkdata[slength] = 0x00; /* Null terminate the last string */ + + ep = png_ptr->chunkdata + 1; /* Skip unit byte */ + +#ifdef PNG_FLOATING_POINT_SUPPORTED + width = png_strtod(png_ptr, ep, &vp); + if (*vp) + { + png_warning(png_ptr, "malformed width string in sCAL chunk"); + return; + } +#else +#ifdef PNG_FIXED_POINT_SUPPORTED + swidth = (png_charp)png_malloc_warn(png_ptr, png_strlen(ep) + 1); + if (swidth == NULL) + { + png_warning(png_ptr, "Out of memory while processing sCAL chunk width"); + return; + } + png_memcpy(swidth, ep, (png_size_t)png_strlen(ep)); +#endif +#endif + + for (ep = png_ptr->chunkdata; *ep; ep++) + /* Empty loop */ ; + ep++; + + if (png_ptr->chunkdata + slength < ep) + { + png_warning(png_ptr, "Truncated sCAL chunk"); +#if defined(PNG_FIXED_POINT_SUPPORTED) && \ + !defined(PNG_FLOATING_POINT_SUPPORTED) + png_free(png_ptr, swidth); +#endif + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + return; + } + +#ifdef PNG_FLOATING_POINT_SUPPORTED + height = png_strtod(png_ptr, ep, &vp); + if (*vp) + { + png_warning(png_ptr, "malformed height string in sCAL chunk"); + return; + } +#else +#ifdef PNG_FIXED_POINT_SUPPORTED + sheight = (png_charp)png_malloc_warn(png_ptr, png_strlen(ep) + 1); + if (sheight == NULL) + { + png_warning(png_ptr, "Out of memory while processing sCAL chunk height"); + return; + } + png_memcpy(sheight, ep, (png_size_t)png_strlen(ep)); +#endif +#endif + + if (png_ptr->chunkdata + slength < ep +#ifdef PNG_FLOATING_POINT_SUPPORTED + || width <= 0. || height <= 0. +#endif + ) + { + png_warning(png_ptr, "Invalid sCAL data"); + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; +#if defined(PNG_FIXED_POINT_SUPPORTED) && !defined(PNG_FLOATING_POINT_SUPPORTED) + png_free(png_ptr, swidth); + png_free(png_ptr, sheight); +#endif + return; + } + + +#ifdef PNG_FLOATING_POINT_SUPPORTED + png_set_sCAL(png_ptr, info_ptr, png_ptr->chunkdata[0], width, height); +#else +#ifdef PNG_FIXED_POINT_SUPPORTED + png_set_sCAL_s(png_ptr, info_ptr, png_ptr->chunkdata[0], swidth, sheight); +#endif +#endif + + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; +#if defined(PNG_FIXED_POINT_SUPPORTED) && !defined(PNG_FLOATING_POINT_SUPPORTED) + png_free(png_ptr, swidth); + png_free(png_ptr, sheight); +#endif +} +#endif + +#if defined(PNG_READ_tIME_SUPPORTED) +void /* PRIVATE */ +png_handle_tIME(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_byte buf[7]; + png_time mod_time; + + png_debug(1, "in png_handle_tIME"); + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Out of place tIME chunk"); + else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_tIME)) + { + png_warning(png_ptr, "Duplicate tIME chunk"); + png_crc_finish(png_ptr, length); + return; + } + + if (png_ptr->mode & PNG_HAVE_IDAT) + png_ptr->mode |= PNG_AFTER_IDAT; + + if (length != 7) + { + png_warning(png_ptr, "Incorrect tIME chunk length"); + png_crc_finish(png_ptr, length); + return; + } + + png_crc_read(png_ptr, buf, 7); + if (png_crc_finish(png_ptr, 0)) + return; + + mod_time.second = buf[6]; + mod_time.minute = buf[5]; + mod_time.hour = buf[4]; + mod_time.day = buf[3]; + mod_time.month = buf[2]; + mod_time.year = png_get_uint_16(buf); + + png_set_tIME(png_ptr, info_ptr, &mod_time); +} +#endif + +#if defined(PNG_READ_tEXt_SUPPORTED) +/* Note: this does not properly handle chunks that are > 64K under DOS */ +void /* PRIVATE */ +png_handle_tEXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_textp text_ptr; + png_charp key; + png_charp text; + png_uint_32 skip = 0; + png_size_t slength; + int ret; + + png_debug(1, "in png_handle_tEXt"); + + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before tEXt"); + + if (png_ptr->mode & PNG_HAVE_IDAT) + png_ptr->mode |= PNG_AFTER_IDAT; + +#ifdef PNG_MAX_MALLOC_64K + if (length > (png_uint_32)65535L) + { + png_warning(png_ptr, "tEXt chunk too large to fit in memory"); + skip = length - (png_uint_32)65535L; + length = (png_uint_32)65535L; + } +#endif + + png_free(png_ptr, png_ptr->chunkdata); + + png_ptr->chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1); + if (png_ptr->chunkdata == NULL) + { + png_warning(png_ptr, "No memory to process text chunk."); + return; + } + slength = (png_size_t)length; + png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength); + + if (png_crc_finish(png_ptr, skip)) + { + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + return; + } + + key = png_ptr->chunkdata; + + key[slength] = 0x00; + + for (text = key; *text; text++) + /* Empty loop to find end of key */ ; + + if (text != key + slength) + text++; + + text_ptr = (png_textp)png_malloc_warn(png_ptr, + (png_uint_32)png_sizeof(png_text)); + if (text_ptr == NULL) + { + png_warning(png_ptr, "Not enough memory to process text chunk."); + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + return; + } + text_ptr->compression = PNG_TEXT_COMPRESSION_NONE; + text_ptr->key = key; +#ifdef PNG_iTXt_SUPPORTED + text_ptr->lang = NULL; + text_ptr->lang_key = NULL; + text_ptr->itxt_length = 0; +#endif + text_ptr->text = text; + text_ptr->text_length = png_strlen(text); + + ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1); + + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + png_free(png_ptr, text_ptr); + if (ret) + png_warning(png_ptr, "Insufficient memory to process text chunk."); +} +#endif + +#if defined(PNG_READ_zTXt_SUPPORTED) +/* Note: this does not correctly handle chunks that are > 64K under DOS */ +void /* PRIVATE */ +png_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_textp text_ptr; + png_charp text; + int comp_type; + int ret; + png_size_t slength, prefix_len, data_len; + + png_debug(1, "in png_handle_zTXt"); + + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before zTXt"); + + if (png_ptr->mode & PNG_HAVE_IDAT) + png_ptr->mode |= PNG_AFTER_IDAT; + +#ifdef PNG_MAX_MALLOC_64K + /* We will no doubt have problems with chunks even half this size, but + there is no hard and fast rule to tell us where to stop. */ + if (length > (png_uint_32)65535L) + { + png_warning(png_ptr, "zTXt chunk too large to fit in memory"); + png_crc_finish(png_ptr, length); + return; + } +#endif + + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1); + if (png_ptr->chunkdata == NULL) + { + png_warning(png_ptr, "Out of memory processing zTXt chunk."); + return; + } + slength = (png_size_t)length; + png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength); + if (png_crc_finish(png_ptr, 0)) + { + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + return; + } + + png_ptr->chunkdata[slength] = 0x00; + + for (text = png_ptr->chunkdata; *text; text++) + /* Empty loop */ ; + + /* zTXt must have some text after the chunkdataword */ + if (text >= png_ptr->chunkdata + slength - 2) + { + png_warning(png_ptr, "Truncated zTXt chunk"); + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + return; + } + else + { + comp_type = *(++text); + if (comp_type != PNG_TEXT_COMPRESSION_zTXt) + { + png_warning(png_ptr, "Unknown compression type in zTXt chunk"); + comp_type = PNG_TEXT_COMPRESSION_zTXt; + } + text++; /* Skip the compression_method byte */ + } + prefix_len = text - png_ptr->chunkdata; + + png_decompress_chunk(png_ptr, comp_type, + (png_size_t)length, prefix_len, &data_len); + + text_ptr = (png_textp)png_malloc_warn(png_ptr, + (png_uint_32)png_sizeof(png_text)); + if (text_ptr == NULL) + { + png_warning(png_ptr, "Not enough memory to process zTXt chunk."); + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + return; + } + text_ptr->compression = comp_type; + text_ptr->key = png_ptr->chunkdata; +#ifdef PNG_iTXt_SUPPORTED + text_ptr->lang = NULL; + text_ptr->lang_key = NULL; + text_ptr->itxt_length = 0; +#endif + text_ptr->text = png_ptr->chunkdata + prefix_len; + text_ptr->text_length = data_len; + + ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1); + + png_free(png_ptr, text_ptr); + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + if (ret) + png_error(png_ptr, "Insufficient memory to store zTXt chunk."); +} +#endif + +#if defined(PNG_READ_iTXt_SUPPORTED) +/* Note: this does not correctly handle chunks that are > 64K under DOS */ +void /* PRIVATE */ +png_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_textp text_ptr; + png_charp key, lang, text, lang_key; + int comp_flag; + int comp_type = 0; + int ret; + png_size_t slength, prefix_len, data_len; + + png_debug(1, "in png_handle_iTXt"); + + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before iTXt"); + + if (png_ptr->mode & PNG_HAVE_IDAT) + png_ptr->mode |= PNG_AFTER_IDAT; + +#ifdef PNG_MAX_MALLOC_64K + /* We will no doubt have problems with chunks even half this size, but + there is no hard and fast rule to tell us where to stop. */ + if (length > (png_uint_32)65535L) + { + png_warning(png_ptr, "iTXt chunk too large to fit in memory"); + png_crc_finish(png_ptr, length); + return; + } +#endif + + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1); + if (png_ptr->chunkdata == NULL) + { + png_warning(png_ptr, "No memory to process iTXt chunk."); + return; + } + slength = (png_size_t)length; + png_crc_read(png_ptr, (png_bytep)png_ptr->chunkdata, slength); + if (png_crc_finish(png_ptr, 0)) + { + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + return; + } + + png_ptr->chunkdata[slength] = 0x00; + + for (lang = png_ptr->chunkdata; *lang; lang++) + /* Empty loop */ ; + lang++; /* Skip NUL separator */ + + /* iTXt must have a language tag (possibly empty), two compression bytes, + * translated keyword (possibly empty), and possibly some text after the + * keyword + */ + + if (lang >= png_ptr->chunkdata + slength - 3) + { + png_warning(png_ptr, "Truncated iTXt chunk"); + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + return; + } + else + { + comp_flag = *lang++; + comp_type = *lang++; + } + + for (lang_key = lang; *lang_key; lang_key++) + /* Empty loop */ ; + lang_key++; /* Skip NUL separator */ + + if (lang_key >= png_ptr->chunkdata + slength) + { + png_warning(png_ptr, "Truncated iTXt chunk"); + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + return; + } + + for (text = lang_key; *text; text++) + /* Empty loop */ ; + text++; /* Skip NUL separator */ + if (text >= png_ptr->chunkdata + slength) + { + png_warning(png_ptr, "Malformed iTXt chunk"); + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + return; + } + + prefix_len = text - png_ptr->chunkdata; + + key=png_ptr->chunkdata; + if (comp_flag) + png_decompress_chunk(png_ptr, comp_type, + (size_t)length, prefix_len, &data_len); + else + data_len = png_strlen(png_ptr->chunkdata + prefix_len); + text_ptr = (png_textp)png_malloc_warn(png_ptr, + (png_uint_32)png_sizeof(png_text)); + if (text_ptr == NULL) + { + png_warning(png_ptr, "Not enough memory to process iTXt chunk."); + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + return; + } + text_ptr->compression = (int)comp_flag + 1; + text_ptr->lang_key = png_ptr->chunkdata + (lang_key - key); + text_ptr->lang = png_ptr->chunkdata + (lang - key); + text_ptr->itxt_length = data_len; + text_ptr->text_length = 0; + text_ptr->key = png_ptr->chunkdata; + text_ptr->text = png_ptr->chunkdata + prefix_len; + + ret = png_set_text_2(png_ptr, info_ptr, text_ptr, 1); + + png_free(png_ptr, text_ptr); + png_free(png_ptr, png_ptr->chunkdata); + png_ptr->chunkdata = NULL; + if (ret) + png_error(png_ptr, "Insufficient memory to store iTXt chunk."); +} +#endif + +/* This function is called when we haven't found a handler for a + chunk. If there isn't a problem with the chunk itself (ie bad + chunk name, CRC, or a critical chunk), the chunk is silently ignored + -- unless the PNG_FLAG_UNKNOWN_CHUNKS_SUPPORTED flag is on in which + case it will be saved away to be written out later. */ +void /* PRIVATE */ +png_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_uint_32 skip = 0; + + png_debug(1, "in png_handle_unknown"); + + + if (png_ptr->mode & PNG_HAVE_IDAT) + { +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_CONST PNG_IDAT; +#endif + if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) /* Not an IDAT */ + png_ptr->mode |= PNG_AFTER_IDAT; + } + + if (!(png_ptr->chunk_name[0] & 0x20)) + { +#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) + if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name) != + PNG_HANDLE_CHUNK_ALWAYS +#if defined(PNG_READ_USER_CHUNKS_SUPPORTED) + && png_ptr->read_user_chunk_fn == NULL +#endif + ) +#endif + png_chunk_error(png_ptr, "unknown critical chunk"); + } + +#if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) + if ((png_ptr->flags & PNG_FLAG_KEEP_UNKNOWN_CHUNKS) || + (png_ptr->read_user_chunk_fn != NULL)) + { +#ifdef PNG_MAX_MALLOC_64K + if (length > (png_uint_32)65535L) + { + png_warning(png_ptr, "unknown chunk too large to fit in memory"); + skip = length - (png_uint_32)65535L; + length = (png_uint_32)65535L; + } +#endif + png_memcpy((png_charp)png_ptr->unknown_chunk.name, + (png_charp)png_ptr->chunk_name, + png_sizeof(png_ptr->unknown_chunk.name)); + png_ptr->unknown_chunk.name[png_sizeof(png_ptr->unknown_chunk.name)-1] = '\0'; + png_ptr->unknown_chunk.size = (png_size_t)length; + if (length == 0) + png_ptr->unknown_chunk.data = NULL; + else + { + png_ptr->unknown_chunk.data = (png_bytep)png_malloc(png_ptr, length); + png_crc_read(png_ptr, (png_bytep)png_ptr->unknown_chunk.data, length); + } +#if defined(PNG_READ_USER_CHUNKS_SUPPORTED) + if (png_ptr->read_user_chunk_fn != NULL) + { + /* Callback to user unknown chunk handler */ + int ret; + ret = (*(png_ptr->read_user_chunk_fn)) + (png_ptr, &png_ptr->unknown_chunk); + if (ret < 0) + png_chunk_error(png_ptr, "error in user chunk"); + if (ret == 0) + { + if (!(png_ptr->chunk_name[0] & 0x20)) + if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name) != + PNG_HANDLE_CHUNK_ALWAYS) + png_chunk_error(png_ptr, "unknown critical chunk"); + png_set_unknown_chunks(png_ptr, info_ptr, + &png_ptr->unknown_chunk, 1); + } + } + else +#endif + png_set_unknown_chunks(png_ptr, info_ptr, &png_ptr->unknown_chunk, 1); + png_free(png_ptr, png_ptr->unknown_chunk.data); + png_ptr->unknown_chunk.data = NULL; + } + else +#endif + skip = length; + + png_crc_finish(png_ptr, skip); + +#if !defined(PNG_READ_USER_CHUNKS_SUPPORTED) + info_ptr = info_ptr; /* Quiet compiler warnings about unused info_ptr */ +#endif +} + +/* This function is called to verify that a chunk name is valid. + This function can't have the "critical chunk check" incorporated + into it, since in the future we will need to be able to call user + functions to handle unknown critical chunks after we check that + the chunk name itself is valid. */ + +#define isnonalpha(c) ((c) < 65 || (c) > 122 || ((c) > 90 && (c) < 97)) + +void /* PRIVATE */ +png_check_chunk_name(png_structp png_ptr, png_bytep chunk_name) +{ + png_debug(1, "in png_check_chunk_name"); + if (isnonalpha(chunk_name[0]) || isnonalpha(chunk_name[1]) || + isnonalpha(chunk_name[2]) || isnonalpha(chunk_name[3])) + { + png_chunk_error(png_ptr, "invalid chunk type"); + } +} + +/* Combines the row recently read in with the existing pixels in the + row. This routine takes care of alpha and transparency if requested. + This routine also handles the two methods of progressive display + of interlaced images, depending on the mask value. + The mask value describes which pixels are to be combined with + the row. The pattern always repeats every 8 pixels, so just 8 + bits are needed. A one indicates the pixel is to be combined, + a zero indicates the pixel is to be skipped. This is in addition + to any alpha or transparency value associated with the pixel. If + you want all pixels to be combined, pass 0xff (255) in mask. */ + +void /* PRIVATE */ +png_combine_row(png_structp png_ptr, png_bytep row, int mask) +{ + png_debug(1, "in png_combine_row"); + if (mask == 0xff) + { + png_memcpy(row, png_ptr->row_buf + 1, + PNG_ROWBYTES(png_ptr->row_info.pixel_depth, png_ptr->width)); + } + else + { + switch (png_ptr->row_info.pixel_depth) + { + case 1: + { + png_bytep sp = png_ptr->row_buf + 1; + png_bytep dp = row; + int s_inc, s_start, s_end; + int m = 0x80; + int shift; + png_uint_32 i; + png_uint_32 row_width = png_ptr->width; + +#if defined(PNG_READ_PACKSWAP_SUPPORTED) + if (png_ptr->transformations & PNG_PACKSWAP) + { + s_start = 0; + s_end = 7; + s_inc = 1; + } + else +#endif + { + s_start = 7; + s_end = 0; + s_inc = -1; + } + + shift = s_start; + + for (i = 0; i < row_width; i++) + { + if (m & mask) + { + int value; + + value = (*sp >> shift) & 0x01; + *dp &= (png_byte)((0x7f7f >> (7 - shift)) & 0xff); + *dp |= (png_byte)(value << shift); + } + + if (shift == s_end) + { + shift = s_start; + sp++; + dp++; + } + else + shift += s_inc; + + if (m == 1) + m = 0x80; + else + m >>= 1; + } + break; + } + case 2: + { + png_bytep sp = png_ptr->row_buf + 1; + png_bytep dp = row; + int s_start, s_end, s_inc; + int m = 0x80; + int shift; + png_uint_32 i; + png_uint_32 row_width = png_ptr->width; + int value; + +#if defined(PNG_READ_PACKSWAP_SUPPORTED) + if (png_ptr->transformations & PNG_PACKSWAP) + { + s_start = 0; + s_end = 6; + s_inc = 2; + } + else +#endif + { + s_start = 6; + s_end = 0; + s_inc = -2; + } + + shift = s_start; + + for (i = 0; i < row_width; i++) + { + if (m & mask) + { + value = (*sp >> shift) & 0x03; + *dp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff); + *dp |= (png_byte)(value << shift); + } + + if (shift == s_end) + { + shift = s_start; + sp++; + dp++; + } + else + shift += s_inc; + if (m == 1) + m = 0x80; + else + m >>= 1; + } + break; + } + case 4: + { + png_bytep sp = png_ptr->row_buf + 1; + png_bytep dp = row; + int s_start, s_end, s_inc; + int m = 0x80; + int shift; + png_uint_32 i; + png_uint_32 row_width = png_ptr->width; + int value; + +#if defined(PNG_READ_PACKSWAP_SUPPORTED) + if (png_ptr->transformations & PNG_PACKSWAP) + { + s_start = 0; + s_end = 4; + s_inc = 4; + } + else +#endif + { + s_start = 4; + s_end = 0; + s_inc = -4; + } + shift = s_start; + + for (i = 0; i < row_width; i++) + { + if (m & mask) + { + value = (*sp >> shift) & 0xf; + *dp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff); + *dp |= (png_byte)(value << shift); + } + + if (shift == s_end) + { + shift = s_start; + sp++; + dp++; + } + else + shift += s_inc; + if (m == 1) + m = 0x80; + else + m >>= 1; + } + break; + } + default: + { + png_bytep sp = png_ptr->row_buf + 1; + png_bytep dp = row; + png_size_t pixel_bytes = (png_ptr->row_info.pixel_depth >> 3); + png_uint_32 i; + png_uint_32 row_width = png_ptr->width; + png_byte m = 0x80; + + + for (i = 0; i < row_width; i++) + { + if (m & mask) + { + png_memcpy(dp, sp, pixel_bytes); + } + + sp += pixel_bytes; + dp += pixel_bytes; + + if (m == 1) + m = 0x80; + else + m >>= 1; + } + break; + } + } + } +} + +#ifdef PNG_READ_INTERLACING_SUPPORTED +/* OLD pre-1.0.9 interface: +void png_do_read_interlace(png_row_infop row_info, png_bytep row, int pass, + png_uint_32 transformations) + */ +void /* PRIVATE */ +png_do_read_interlace(png_structp png_ptr) +{ + png_row_infop row_info = &(png_ptr->row_info); + png_bytep row = png_ptr->row_buf + 1; + int pass = png_ptr->pass; + png_uint_32 transformations = png_ptr->transformations; +#ifdef PNG_USE_LOCAL_ARRAYS + /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ + /* Offset to next interlace block */ + PNG_CONST int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; +#endif + + png_debug(1, "in png_do_read_interlace"); + if (row != NULL && row_info != NULL) + { + png_uint_32 final_width; + + final_width = row_info->width * png_pass_inc[pass]; + + switch (row_info->pixel_depth) + { + case 1: + { + png_bytep sp = row + (png_size_t)((row_info->width - 1) >> 3); + png_bytep dp = row + (png_size_t)((final_width - 1) >> 3); + int sshift, dshift; + int s_start, s_end, s_inc; + int jstop = png_pass_inc[pass]; + png_byte v; + png_uint_32 i; + int j; + +#if defined(PNG_READ_PACKSWAP_SUPPORTED) + if (transformations & PNG_PACKSWAP) + { + sshift = (int)((row_info->width + 7) & 0x07); + dshift = (int)((final_width + 7) & 0x07); + s_start = 7; + s_end = 0; + s_inc = -1; + } + else +#endif + { + sshift = 7 - (int)((row_info->width + 7) & 0x07); + dshift = 7 - (int)((final_width + 7) & 0x07); + s_start = 0; + s_end = 7; + s_inc = 1; + } + + for (i = 0; i < row_info->width; i++) + { + v = (png_byte)((*sp >> sshift) & 0x01); + for (j = 0; j < jstop; j++) + { + *dp &= (png_byte)((0x7f7f >> (7 - dshift)) & 0xff); + *dp |= (png_byte)(v << dshift); + if (dshift == s_end) + { + dshift = s_start; + dp--; + } + else + dshift += s_inc; + } + if (sshift == s_end) + { + sshift = s_start; + sp--; + } + else + sshift += s_inc; + } + break; + } + case 2: + { + png_bytep sp = row + (png_uint_32)((row_info->width - 1) >> 2); + png_bytep dp = row + (png_uint_32)((final_width - 1) >> 2); + int sshift, dshift; + int s_start, s_end, s_inc; + int jstop = png_pass_inc[pass]; + png_uint_32 i; + +#if defined(PNG_READ_PACKSWAP_SUPPORTED) + if (transformations & PNG_PACKSWAP) + { + sshift = (int)(((row_info->width + 3) & 0x03) << 1); + dshift = (int)(((final_width + 3) & 0x03) << 1); + s_start = 6; + s_end = 0; + s_inc = -2; + } + else +#endif + { + sshift = (int)((3 - ((row_info->width + 3) & 0x03)) << 1); + dshift = (int)((3 - ((final_width + 3) & 0x03)) << 1); + s_start = 0; + s_end = 6; + s_inc = 2; + } + + for (i = 0; i < row_info->width; i++) + { + png_byte v; + int j; + + v = (png_byte)((*sp >> sshift) & 0x03); + for (j = 0; j < jstop; j++) + { + *dp &= (png_byte)((0x3f3f >> (6 - dshift)) & 0xff); + *dp |= (png_byte)(v << dshift); + if (dshift == s_end) + { + dshift = s_start; + dp--; + } + else + dshift += s_inc; + } + if (sshift == s_end) + { + sshift = s_start; + sp--; + } + else + sshift += s_inc; + } + break; + } + case 4: + { + png_bytep sp = row + (png_size_t)((row_info->width - 1) >> 1); + png_bytep dp = row + (png_size_t)((final_width - 1) >> 1); + int sshift, dshift; + int s_start, s_end, s_inc; + png_uint_32 i; + int jstop = png_pass_inc[pass]; + +#if defined(PNG_READ_PACKSWAP_SUPPORTED) + if (transformations & PNG_PACKSWAP) + { + sshift = (int)(((row_info->width + 1) & 0x01) << 2); + dshift = (int)(((final_width + 1) & 0x01) << 2); + s_start = 4; + s_end = 0; + s_inc = -4; + } + else +#endif + { + sshift = (int)((1 - ((row_info->width + 1) & 0x01)) << 2); + dshift = (int)((1 - ((final_width + 1) & 0x01)) << 2); + s_start = 0; + s_end = 4; + s_inc = 4; + } + + for (i = 0; i < row_info->width; i++) + { + png_byte v = (png_byte)((*sp >> sshift) & 0xf); + int j; + + for (j = 0; j < jstop; j++) + { + *dp &= (png_byte)((0xf0f >> (4 - dshift)) & 0xff); + *dp |= (png_byte)(v << dshift); + if (dshift == s_end) + { + dshift = s_start; + dp--; + } + else + dshift += s_inc; + } + if (sshift == s_end) + { + sshift = s_start; + sp--; + } + else + sshift += s_inc; + } + break; + } + default: + { + png_size_t pixel_bytes = (row_info->pixel_depth >> 3); + png_bytep sp = row + (png_size_t)(row_info->width - 1) * pixel_bytes; + png_bytep dp = row + (png_size_t)(final_width - 1) * pixel_bytes; + + int jstop = png_pass_inc[pass]; + png_uint_32 i; + + for (i = 0; i < row_info->width; i++) + { + png_byte v[8]; + int j; + + png_memcpy(v, sp, pixel_bytes); + for (j = 0; j < jstop; j++) + { + png_memcpy(dp, v, pixel_bytes); + dp -= pixel_bytes; + } + sp -= pixel_bytes; + } + break; + } + } + row_info->width = final_width; + row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, final_width); + } +#if !defined(PNG_READ_PACKSWAP_SUPPORTED) + transformations = transformations; /* Silence compiler warning */ +#endif +} +#endif /* PNG_READ_INTERLACING_SUPPORTED */ + +void /* PRIVATE */ +png_read_filter_row(png_structp png_ptr, png_row_infop row_info, png_bytep row, + png_bytep prev_row, int filter) +{ + png_debug(1, "in png_read_filter_row"); + png_debug2(2, "row = %lu, filter = %d", png_ptr->row_number, filter); + switch (filter) + { + case PNG_FILTER_VALUE_NONE: + break; + case PNG_FILTER_VALUE_SUB: + { + png_uint_32 i; + png_uint_32 istop = row_info->rowbytes; + png_uint_32 bpp = (row_info->pixel_depth + 7) >> 3; + png_bytep rp = row + bpp; + png_bytep lp = row; + + for (i = bpp; i < istop; i++) + { + *rp = (png_byte)(((int)(*rp) + (int)(*lp++)) & 0xff); + rp++; + } + break; + } + case PNG_FILTER_VALUE_UP: + { + png_uint_32 i; + png_uint_32 istop = row_info->rowbytes; + png_bytep rp = row; + png_bytep pp = prev_row; + + for (i = 0; i < istop; i++) + { + *rp = (png_byte)(((int)(*rp) + (int)(*pp++)) & 0xff); + rp++; + } + break; + } + case PNG_FILTER_VALUE_AVG: + { + png_uint_32 i; + png_bytep rp = row; + png_bytep pp = prev_row; + png_bytep lp = row; + png_uint_32 bpp = (row_info->pixel_depth + 7) >> 3; + png_uint_32 istop = row_info->rowbytes - bpp; + + for (i = 0; i < bpp; i++) + { + *rp = (png_byte)(((int)(*rp) + + ((int)(*pp++) / 2 )) & 0xff); + rp++; + } + + for (i = 0; i < istop; i++) + { + *rp = (png_byte)(((int)(*rp) + + (int)(*pp++ + *lp++) / 2 ) & 0xff); + rp++; + } + break; + } + case PNG_FILTER_VALUE_PAETH: + { + png_uint_32 i; + png_bytep rp = row; + png_bytep pp = prev_row; + png_bytep lp = row; + png_bytep cp = prev_row; + png_uint_32 bpp = (row_info->pixel_depth + 7) >> 3; + png_uint_32 istop=row_info->rowbytes - bpp; + + for (i = 0; i < bpp; i++) + { + *rp = (png_byte)(((int)(*rp) + (int)(*pp++)) & 0xff); + rp++; + } + + for (i = 0; i < istop; i++) /* Use leftover rp,pp */ + { + int a, b, c, pa, pb, pc, p; + + a = *lp++; + b = *pp++; + c = *cp++; + + p = b - c; + pc = a - c; + +#ifdef PNG_USE_ABS + pa = abs(p); + pb = abs(pc); + pc = abs(p + pc); +#else + pa = p < 0 ? -p : p; + pb = pc < 0 ? -pc : pc; + pc = (p + pc) < 0 ? -(p + pc) : p + pc; +#endif + + /* + if (pa <= pb && pa <= pc) + p = a; + else if (pb <= pc) + p = b; + else + p = c; + */ + + p = (pa <= pb && pa <= pc) ? a : (pb <= pc) ? b : c; + + *rp = (png_byte)(((int)(*rp) + p) & 0xff); + rp++; + } + break; + } + default: + png_warning(png_ptr, "Ignoring bad adaptive filter type"); + *row = 0; + break; + } +} + +#ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED +void /* PRIVATE */ +png_read_finish_row(png_structp png_ptr) +{ +#ifdef PNG_USE_LOCAL_ARRAYS +#ifdef PNG_READ_INTERLACING_SUPPORTED + /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ + + /* Start of interlace block */ + PNG_CONST int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; + + /* Offset to next interlace block */ + PNG_CONST int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; + + /* Start of interlace block in the y direction */ + PNG_CONST int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1}; + + /* Offset to next interlace block in the y direction */ + PNG_CONST int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2}; +#endif /* PNG_READ_INTERLACING_SUPPORTED */ +#endif + + png_debug(1, "in png_read_finish_row"); + png_ptr->row_number++; + if (png_ptr->row_number < png_ptr->num_rows) + return; + +#ifdef PNG_READ_INTERLACING_SUPPORTED + if (png_ptr->interlaced) + { + png_ptr->row_number = 0; + png_memset_check(png_ptr, png_ptr->prev_row, 0, + png_ptr->rowbytes + 1); + do + { + png_ptr->pass++; + if (png_ptr->pass >= 7) + break; + png_ptr->iwidth = (png_ptr->width + + png_pass_inc[png_ptr->pass] - 1 - + png_pass_start[png_ptr->pass]) / + png_pass_inc[png_ptr->pass]; + + png_ptr->irowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, + png_ptr->iwidth) + 1; + + if (!(png_ptr->transformations & PNG_INTERLACE)) + { + png_ptr->num_rows = (png_ptr->height + + png_pass_yinc[png_ptr->pass] - 1 - + png_pass_ystart[png_ptr->pass]) / + png_pass_yinc[png_ptr->pass]; + if (!(png_ptr->num_rows)) + continue; + } + else /* if (png_ptr->transformations & PNG_INTERLACE) */ + break; + } while (png_ptr->iwidth == 0); + + if (png_ptr->pass < 7) + return; + } +#endif /* PNG_READ_INTERLACING_SUPPORTED */ + + if (!(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED)) + { +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_CONST PNG_IDAT; +#endif + char extra; + int ret; + + png_ptr->zstream.next_out = (Byte *)&extra; + png_ptr->zstream.avail_out = (uInt)1; + for (;;) + { + if (!(png_ptr->zstream.avail_in)) + { + while (!png_ptr->idat_size) + { + png_byte chunk_length[4]; + + png_crc_finish(png_ptr, 0); + + png_read_data(png_ptr, chunk_length, 4); + png_ptr->idat_size = png_get_uint_31(png_ptr, chunk_length); + png_reset_crc(png_ptr); + png_crc_read(png_ptr, png_ptr->chunk_name, 4); + if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) + png_error(png_ptr, "Not enough image data"); + + } + png_ptr->zstream.avail_in = (uInt)png_ptr->zbuf_size; + png_ptr->zstream.next_in = png_ptr->zbuf; + if (png_ptr->zbuf_size > png_ptr->idat_size) + png_ptr->zstream.avail_in = (uInt)png_ptr->idat_size; + png_crc_read(png_ptr, png_ptr->zbuf, png_ptr->zstream.avail_in); + png_ptr->idat_size -= png_ptr->zstream.avail_in; + } + ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH); + if (ret == Z_STREAM_END) + { + if (!(png_ptr->zstream.avail_out) || png_ptr->zstream.avail_in || + png_ptr->idat_size) + png_warning(png_ptr, "Extra compressed data"); + png_ptr->mode |= PNG_AFTER_IDAT; + png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED; + break; + } + if (ret != Z_OK) + png_error(png_ptr, png_ptr->zstream.msg ? png_ptr->zstream.msg : + "Decompression Error"); + + if (!(png_ptr->zstream.avail_out)) + { + png_warning(png_ptr, "Extra compressed data."); + png_ptr->mode |= PNG_AFTER_IDAT; + png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED; + break; + } + + } + png_ptr->zstream.avail_out = 0; + } + + if (png_ptr->idat_size || png_ptr->zstream.avail_in) + png_warning(png_ptr, "Extra compression data"); + + inflateReset(&png_ptr->zstream); + + png_ptr->mode |= PNG_AFTER_IDAT; +} +#endif /* PNG_NO_SEQUENTIAL_READ_SUPPORTED */ + +void /* PRIVATE */ +png_read_start_row(png_structp png_ptr) +{ +#ifdef PNG_USE_LOCAL_ARRAYS +#ifdef PNG_READ_INTERLACING_SUPPORTED + /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ + + /* Start of interlace block */ + PNG_CONST int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; + + /* Offset to next interlace block */ + PNG_CONST int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; + + /* Start of interlace block in the y direction */ + PNG_CONST int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1}; + + /* Offset to next interlace block in the y direction */ + PNG_CONST int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2}; +#endif +#endif + + int max_pixel_depth; + png_size_t row_bytes; + + png_debug(1, "in png_read_start_row"); + png_ptr->zstream.avail_in = 0; + png_init_read_transformations(png_ptr); +#ifdef PNG_READ_INTERLACING_SUPPORTED + if (png_ptr->interlaced) + { + if (!(png_ptr->transformations & PNG_INTERLACE)) + png_ptr->num_rows = (png_ptr->height + png_pass_yinc[0] - 1 - + png_pass_ystart[0]) / png_pass_yinc[0]; + else + png_ptr->num_rows = png_ptr->height; + + png_ptr->iwidth = (png_ptr->width + + png_pass_inc[png_ptr->pass] - 1 - + png_pass_start[png_ptr->pass]) / + png_pass_inc[png_ptr->pass]; + + png_ptr->irowbytes = + PNG_ROWBYTES(png_ptr->pixel_depth, png_ptr->iwidth) + 1; + } + else +#endif /* PNG_READ_INTERLACING_SUPPORTED */ + { + png_ptr->num_rows = png_ptr->height; + png_ptr->iwidth = png_ptr->width; + png_ptr->irowbytes = png_ptr->rowbytes + 1; + } + max_pixel_depth = png_ptr->pixel_depth; + +#if defined(PNG_READ_PACK_SUPPORTED) + if ((png_ptr->transformations & PNG_PACK) && png_ptr->bit_depth < 8) + max_pixel_depth = 8; +#endif + +#if defined(PNG_READ_EXPAND_SUPPORTED) + if (png_ptr->transformations & PNG_EXPAND) + { + if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) + { + if (png_ptr->num_trans) + max_pixel_depth = 32; + else + max_pixel_depth = 24; + } + else if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY) + { + if (max_pixel_depth < 8) + max_pixel_depth = 8; + if (png_ptr->num_trans) + max_pixel_depth *= 2; + } + else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB) + { + if (png_ptr->num_trans) + { + max_pixel_depth *= 4; + max_pixel_depth /= 3; + } + } + } +#endif + +#if defined(PNG_READ_FILLER_SUPPORTED) + if (png_ptr->transformations & (PNG_FILLER)) + { + if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) + max_pixel_depth = 32; + else if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY) + { + if (max_pixel_depth <= 8) + max_pixel_depth = 16; + else + max_pixel_depth = 32; + } + else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB) + { + if (max_pixel_depth <= 32) + max_pixel_depth = 32; + else + max_pixel_depth = 64; + } + } +#endif + +#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED) + if (png_ptr->transformations & PNG_GRAY_TO_RGB) + { + if ( +#if defined(PNG_READ_EXPAND_SUPPORTED) + (png_ptr->num_trans && (png_ptr->transformations & PNG_EXPAND)) || +#endif +#if defined(PNG_READ_FILLER_SUPPORTED) + (png_ptr->transformations & (PNG_FILLER)) || +#endif + png_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) + { + if (max_pixel_depth <= 16) + max_pixel_depth = 32; + else + max_pixel_depth = 64; + } + else + { + if (max_pixel_depth <= 8) + { + if (png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA) + max_pixel_depth = 32; + else + max_pixel_depth = 24; + } + else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA) + max_pixel_depth = 64; + else + max_pixel_depth = 48; + } + } +#endif + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) && \ +defined(PNG_USER_TRANSFORM_PTR_SUPPORTED) + if (png_ptr->transformations & PNG_USER_TRANSFORM) + { + int user_pixel_depth = png_ptr->user_transform_depth* + png_ptr->user_transform_channels; + if (user_pixel_depth > max_pixel_depth) + max_pixel_depth=user_pixel_depth; + } +#endif + + /* Align the width on the next larger 8 pixels. Mainly used + * for interlacing + */ + row_bytes = ((png_ptr->width + 7) & ~((png_uint_32)7)); + /* Calculate the maximum bytes needed, adding a byte and a pixel + * for safety's sake + */ + row_bytes = PNG_ROWBYTES(max_pixel_depth, row_bytes) + + 1 + ((max_pixel_depth + 7) >> 3); +#ifdef PNG_MAX_MALLOC_64K + if (row_bytes > (png_uint_32)65536L) + png_error(png_ptr, "This image requires a row greater than 64KB"); +#endif + + if (row_bytes + 64 > png_ptr->old_big_row_buf_size) + { + png_free(png_ptr, png_ptr->big_row_buf); + png_ptr->big_row_buf = (png_bytep)png_malloc(png_ptr, row_bytes + 64); + if (png_ptr->interlaced) + png_memset(png_ptr->big_row_buf, 0, row_bytes + 64); + png_ptr->row_buf = png_ptr->big_row_buf + 32; + png_ptr->old_big_row_buf_size = row_bytes + 64; + } + +#ifdef PNG_MAX_MALLOC_64K + if ((png_uint_32)row_bytes + 1 > (png_uint_32)65536L) + png_error(png_ptr, "This image requires a row greater than 64KB"); +#endif + if ((png_uint_32)row_bytes > (png_uint_32)(PNG_SIZE_MAX - 1)) + png_error(png_ptr, "Row has too many bytes to allocate in memory."); + + if (row_bytes + 1 > png_ptr->old_prev_row_size) + { + png_free(png_ptr, png_ptr->prev_row); + png_ptr->prev_row = (png_bytep)png_malloc(png_ptr, (png_uint_32)( + row_bytes + 1)); + png_memset_check(png_ptr, png_ptr->prev_row, 0, row_bytes + 1); + png_ptr->old_prev_row_size = row_bytes + 1; + } + + png_ptr->rowbytes = row_bytes; + + png_debug1(3, "width = %lu,", png_ptr->width); + png_debug1(3, "height = %lu,", png_ptr->height); + png_debug1(3, "iwidth = %lu,", png_ptr->iwidth); + png_debug1(3, "num_rows = %lu,", png_ptr->num_rows); + png_debug1(3, "rowbytes = %lu,", png_ptr->rowbytes); + png_debug1(3, "irowbytes = %lu", png_ptr->irowbytes); + + png_ptr->flags |= PNG_FLAG_ROW_INIT; +} +#endif /* PNG_READ_SUPPORTED */ diff --git a/Libraries/libpng/pngset.cpp b/Libraries/libpng/pngset.cpp new file mode 100644 index 0000000..fa68a2d --- /dev/null +++ b/Libraries/libpng/pngset.cpp @@ -0,0 +1,1255 @@ + +/* pngset.c - storage of image information into info struct + * + * Last changed in libpng 1.2.37 [June 4, 2009] + * For conditions of distribution and use, see copyright notice in png.h + * Copyright (c) 1998-2009 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * The functions here are used during reads to store data from the file + * into the info struct, and during writes to store application data + * into the info struct for writing into the file. This abstracts the + * info struct and allows us to change the structure in the future. + */ + +#define PNG_INTERNAL +#include "png.h" +#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) + +#if defined(PNG_bKGD_SUPPORTED) +void PNGAPI +png_set_bKGD(png_structp png_ptr, png_infop info_ptr, png_color_16p background) +{ + png_debug1(1, "in %s storage function", "bKGD"); + if (png_ptr == NULL || info_ptr == NULL) + return; + + png_memcpy(&(info_ptr->background), background, png_sizeof(png_color_16)); + info_ptr->valid |= PNG_INFO_bKGD; +} +#endif + +#if defined(PNG_cHRM_SUPPORTED) +#ifdef PNG_FLOATING_POINT_SUPPORTED +void PNGAPI +png_set_cHRM(png_structp png_ptr, png_infop info_ptr, + double white_x, double white_y, double red_x, double red_y, + double green_x, double green_y, double blue_x, double blue_y) +{ + png_debug1(1, "in %s storage function", "cHRM"); + if (png_ptr == NULL || info_ptr == NULL) + return; + + info_ptr->x_white = (float)white_x; + info_ptr->y_white = (float)white_y; + info_ptr->x_red = (float)red_x; + info_ptr->y_red = (float)red_y; + info_ptr->x_green = (float)green_x; + info_ptr->y_green = (float)green_y; + info_ptr->x_blue = (float)blue_x; + info_ptr->y_blue = (float)blue_y; +#ifdef PNG_FIXED_POINT_SUPPORTED + info_ptr->int_x_white = (png_fixed_point)(white_x*100000.+0.5); + info_ptr->int_y_white = (png_fixed_point)(white_y*100000.+0.5); + info_ptr->int_x_red = (png_fixed_point)( red_x*100000.+0.5); + info_ptr->int_y_red = (png_fixed_point)( red_y*100000.+0.5); + info_ptr->int_x_green = (png_fixed_point)(green_x*100000.+0.5); + info_ptr->int_y_green = (png_fixed_point)(green_y*100000.+0.5); + info_ptr->int_x_blue = (png_fixed_point)( blue_x*100000.+0.5); + info_ptr->int_y_blue = (png_fixed_point)( blue_y*100000.+0.5); +#endif + info_ptr->valid |= PNG_INFO_cHRM; +} +#endif /* PNG_FLOATING_POINT_SUPPORTED */ + +#ifdef PNG_FIXED_POINT_SUPPORTED +void PNGAPI +png_set_cHRM_fixed(png_structp png_ptr, png_infop info_ptr, + png_fixed_point white_x, png_fixed_point white_y, png_fixed_point red_x, + png_fixed_point red_y, png_fixed_point green_x, png_fixed_point green_y, + png_fixed_point blue_x, png_fixed_point blue_y) +{ + png_debug1(1, "in %s storage function", "cHRM fixed"); + if (png_ptr == NULL || info_ptr == NULL) + return; + +#if !defined(PNG_NO_CHECK_cHRM) + if (png_check_cHRM_fixed(png_ptr, + white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y)) +#endif + { + info_ptr->int_x_white = white_x; + info_ptr->int_y_white = white_y; + info_ptr->int_x_red = red_x; + info_ptr->int_y_red = red_y; + info_ptr->int_x_green = green_x; + info_ptr->int_y_green = green_y; + info_ptr->int_x_blue = blue_x; + info_ptr->int_y_blue = blue_y; +#ifdef PNG_FLOATING_POINT_SUPPORTED + info_ptr->x_white = (float)(white_x/100000.); + info_ptr->y_white = (float)(white_y/100000.); + info_ptr->x_red = (float)( red_x/100000.); + info_ptr->y_red = (float)( red_y/100000.); + info_ptr->x_green = (float)(green_x/100000.); + info_ptr->y_green = (float)(green_y/100000.); + info_ptr->x_blue = (float)( blue_x/100000.); + info_ptr->y_blue = (float)( blue_y/100000.); +#endif + info_ptr->valid |= PNG_INFO_cHRM; + } +} +#endif /* PNG_FIXED_POINT_SUPPORTED */ +#endif /* PNG_cHRM_SUPPORTED */ + +#if defined(PNG_gAMA_SUPPORTED) +#ifdef PNG_FLOATING_POINT_SUPPORTED +void PNGAPI +png_set_gAMA(png_structp png_ptr, png_infop info_ptr, double file_gamma) +{ + double png_gamma; + png_debug1(1, "in %s storage function", "gAMA"); + if (png_ptr == NULL || info_ptr == NULL) + return; + + /* Check for overflow */ + if (file_gamma > 21474.83) + { + png_warning(png_ptr, "Limiting gamma to 21474.83"); + png_gamma=21474.83; + } + else + png_gamma = file_gamma; + info_ptr->gamma = (float)png_gamma; +#ifdef PNG_FIXED_POINT_SUPPORTED + info_ptr->int_gamma = (int)(png_gamma*100000.+.5); +#endif + info_ptr->valid |= PNG_INFO_gAMA; + if (png_gamma == 0.0) + png_warning(png_ptr, "Setting gamma=0"); +} +#endif +void PNGAPI +png_set_gAMA_fixed(png_structp png_ptr, png_infop info_ptr, png_fixed_point + int_gamma) +{ + png_fixed_point png_gamma; + + png_debug1(1, "in %s storage function", "gAMA"); + if (png_ptr == NULL || info_ptr == NULL) + return; + + if (int_gamma > (png_fixed_point)PNG_UINT_31_MAX) + { + png_warning(png_ptr, "Limiting gamma to 21474.83"); + png_gamma=PNG_UINT_31_MAX; + } + else + { + if (int_gamma < 0) + { + png_warning(png_ptr, "Setting negative gamma to zero"); + png_gamma = 0; + } + else + png_gamma = int_gamma; + } +#ifdef PNG_FLOATING_POINT_SUPPORTED + info_ptr->gamma = (float)(png_gamma/100000.); +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED + info_ptr->int_gamma = png_gamma; +#endif + info_ptr->valid |= PNG_INFO_gAMA; + if (png_gamma == 0) + png_warning(png_ptr, "Setting gamma=0"); +} +#endif + +#if defined(PNG_hIST_SUPPORTED) +void PNGAPI +png_set_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_16p hist) +{ + int i; + + png_debug1(1, "in %s storage function", "hIST"); + if (png_ptr == NULL || info_ptr == NULL) + return; + if (info_ptr->num_palette == 0 || info_ptr->num_palette + > PNG_MAX_PALETTE_LENGTH) + { + png_warning(png_ptr, + "Invalid palette size, hIST allocation skipped."); + return; + } + +#ifdef PNG_FREE_ME_SUPPORTED + png_free_data(png_ptr, info_ptr, PNG_FREE_HIST, 0); +#endif + /* Changed from info->num_palette to PNG_MAX_PALETTE_LENGTH in + * version 1.2.1 + */ + png_ptr->hist = (png_uint_16p)png_malloc_warn(png_ptr, + (png_uint_32)(PNG_MAX_PALETTE_LENGTH * png_sizeof(png_uint_16))); + if (png_ptr->hist == NULL) + { + png_warning(png_ptr, "Insufficient memory for hIST chunk data."); + return; + } + + for (i = 0; i < info_ptr->num_palette; i++) + png_ptr->hist[i] = hist[i]; + info_ptr->hist = png_ptr->hist; + info_ptr->valid |= PNG_INFO_hIST; + +#ifdef PNG_FREE_ME_SUPPORTED + info_ptr->free_me |= PNG_FREE_HIST; +#else + png_ptr->flags |= PNG_FLAG_FREE_HIST; +#endif +} +#endif + +void PNGAPI +png_set_IHDR(png_structp png_ptr, png_infop info_ptr, + png_uint_32 width, png_uint_32 height, int bit_depth, + int color_type, int interlace_type, int compression_type, + int filter_type) +{ + png_debug1(1, "in %s storage function", "IHDR"); + if (png_ptr == NULL || info_ptr == NULL) + return; + + /* Check for width and height valid values */ + if (width == 0 || height == 0) + png_error(png_ptr, "Image width or height is zero in IHDR"); +#ifdef PNG_SET_USER_LIMITS_SUPPORTED + if (width > png_ptr->user_width_max || height > png_ptr->user_height_max) + png_error(png_ptr, "image size exceeds user limits in IHDR"); +#else + if (width > PNG_USER_WIDTH_MAX || height > PNG_USER_HEIGHT_MAX) + png_error(png_ptr, "image size exceeds user limits in IHDR"); +#endif + if (width > PNG_UINT_31_MAX || height > PNG_UINT_31_MAX) + png_error(png_ptr, "Invalid image size in IHDR"); + if ( width > (PNG_UINT_32_MAX + >> 3) /* 8-byte RGBA pixels */ + - 64 /* bigrowbuf hack */ + - 1 /* filter byte */ + - 7*8 /* rounding of width to multiple of 8 pixels */ + - 8) /* extra max_pixel_depth pad */ + png_warning(png_ptr, "Width is too large for libpng to process pixels"); + + /* Check other values */ + if (bit_depth != 1 && bit_depth != 2 && bit_depth != 4 && + bit_depth != 8 && bit_depth != 16) + png_error(png_ptr, "Invalid bit depth in IHDR"); + + if (color_type < 0 || color_type == 1 || + color_type == 5 || color_type > 6) + png_error(png_ptr, "Invalid color type in IHDR"); + + if (((color_type == PNG_COLOR_TYPE_PALETTE) && bit_depth > 8) || + ((color_type == PNG_COLOR_TYPE_RGB || + color_type == PNG_COLOR_TYPE_GRAY_ALPHA || + color_type == PNG_COLOR_TYPE_RGB_ALPHA) && bit_depth < 8)) + png_error(png_ptr, "Invalid color type/bit depth combination in IHDR"); + + if (interlace_type >= PNG_INTERLACE_LAST) + png_error(png_ptr, "Unknown interlace method in IHDR"); + + if (compression_type != PNG_COMPRESSION_TYPE_BASE) + png_error(png_ptr, "Unknown compression method in IHDR"); + +#if defined(PNG_MNG_FEATURES_SUPPORTED) + /* Accept filter_method 64 (intrapixel differencing) only if + * 1. Libpng was compiled with PNG_MNG_FEATURES_SUPPORTED and + * 2. Libpng did not read a PNG signature (this filter_method is only + * used in PNG datastreams that are embedded in MNG datastreams) and + * 3. The application called png_permit_mng_features with a mask that + * included PNG_FLAG_MNG_FILTER_64 and + * 4. The filter_method is 64 and + * 5. The color_type is RGB or RGBA + */ + if ((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE)&&png_ptr->mng_features_permitted) + png_warning(png_ptr, "MNG features are not allowed in a PNG datastream"); + if (filter_type != PNG_FILTER_TYPE_BASE) + { + if (!((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) && + (filter_type == PNG_INTRAPIXEL_DIFFERENCING) && + ((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE) == 0) && + (color_type == PNG_COLOR_TYPE_RGB || + color_type == PNG_COLOR_TYPE_RGB_ALPHA))) + png_error(png_ptr, "Unknown filter method in IHDR"); + if (png_ptr->mode&PNG_HAVE_PNG_SIGNATURE) + png_warning(png_ptr, "Invalid filter method in IHDR"); + } +#else + if (filter_type != PNG_FILTER_TYPE_BASE) + png_error(png_ptr, "Unknown filter method in IHDR"); +#endif + + info_ptr->width = width; + info_ptr->height = height; + info_ptr->bit_depth = (png_byte)bit_depth; + info_ptr->color_type =(png_byte) color_type; + info_ptr->compression_type = (png_byte)compression_type; + info_ptr->filter_type = (png_byte)filter_type; + info_ptr->interlace_type = (png_byte)interlace_type; + if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) + info_ptr->channels = 1; + else if (info_ptr->color_type & PNG_COLOR_MASK_COLOR) + info_ptr->channels = 3; + else + info_ptr->channels = 1; + if (info_ptr->color_type & PNG_COLOR_MASK_ALPHA) + info_ptr->channels++; + info_ptr->pixel_depth = (png_byte)(info_ptr->channels * info_ptr->bit_depth); + + /* Check for potential overflow */ + if (width > (PNG_UINT_32_MAX + >> 3) /* 8-byte RGBA pixels */ + - 64 /* bigrowbuf hack */ + - 1 /* filter byte */ + - 7*8 /* rounding of width to multiple of 8 pixels */ + - 8) /* extra max_pixel_depth pad */ + info_ptr->rowbytes = (png_size_t)0; + else + info_ptr->rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, width); +} + +#if defined(PNG_oFFs_SUPPORTED) +void PNGAPI +png_set_oFFs(png_structp png_ptr, png_infop info_ptr, + png_int_32 offset_x, png_int_32 offset_y, int unit_type) +{ + png_debug1(1, "in %s storage function", "oFFs"); + if (png_ptr == NULL || info_ptr == NULL) + return; + + info_ptr->x_offset = offset_x; + info_ptr->y_offset = offset_y; + info_ptr->offset_unit_type = (png_byte)unit_type; + info_ptr->valid |= PNG_INFO_oFFs; +} +#endif + +#if defined(PNG_pCAL_SUPPORTED) +void PNGAPI +png_set_pCAL(png_structp png_ptr, png_infop info_ptr, + png_charp purpose, png_int_32 X0, png_int_32 X1, int type, int nparams, + png_charp units, png_charpp params) +{ + png_uint_32 length; + int i; + + png_debug1(1, "in %s storage function", "pCAL"); + if (png_ptr == NULL || info_ptr == NULL) + return; + + length = png_strlen(purpose) + 1; + png_debug1(3, "allocating purpose for info (%lu bytes)", + (unsigned long)length); + info_ptr->pcal_purpose = (png_charp)png_malloc_warn(png_ptr, length); + if (info_ptr->pcal_purpose == NULL) + { + png_warning(png_ptr, "Insufficient memory for pCAL purpose."); + return; + } + png_memcpy(info_ptr->pcal_purpose, purpose, (png_size_t)length); + + png_debug(3, "storing X0, X1, type, and nparams in info"); + info_ptr->pcal_X0 = X0; + info_ptr->pcal_X1 = X1; + info_ptr->pcal_type = (png_byte)type; + info_ptr->pcal_nparams = (png_byte)nparams; + + length = png_strlen(units) + 1; + png_debug1(3, "allocating units for info (%lu bytes)", + (unsigned long)length); + info_ptr->pcal_units = (png_charp)png_malloc_warn(png_ptr, length); + if (info_ptr->pcal_units == NULL) + { + png_warning(png_ptr, "Insufficient memory for pCAL units."); + return; + } + png_memcpy(info_ptr->pcal_units, units, (png_size_t)length); + + info_ptr->pcal_params = (png_charpp)png_malloc_warn(png_ptr, + (png_uint_32)((nparams + 1) * png_sizeof(png_charp))); + if (info_ptr->pcal_params == NULL) + { + png_warning(png_ptr, "Insufficient memory for pCAL params."); + return; + } + + png_memset(info_ptr->pcal_params, 0, (nparams + 1) * png_sizeof(png_charp)); + + for (i = 0; i < nparams; i++) + { + length = png_strlen(params[i]) + 1; + png_debug2(3, "allocating parameter %d for info (%lu bytes)", i, + (unsigned long)length); + info_ptr->pcal_params[i] = (png_charp)png_malloc_warn(png_ptr, length); + if (info_ptr->pcal_params[i] == NULL) + { + png_warning(png_ptr, "Insufficient memory for pCAL parameter."); + return; + } + png_memcpy(info_ptr->pcal_params[i], params[i], (png_size_t)length); + } + + info_ptr->valid |= PNG_INFO_pCAL; +#ifdef PNG_FREE_ME_SUPPORTED + info_ptr->free_me |= PNG_FREE_PCAL; +#endif +} +#endif + +#if defined(PNG_READ_sCAL_SUPPORTED) || defined(PNG_WRITE_sCAL_SUPPORTED) +#ifdef PNG_FLOATING_POINT_SUPPORTED +void PNGAPI +png_set_sCAL(png_structp png_ptr, png_infop info_ptr, + int unit, double width, double height) +{ + png_debug1(1, "in %s storage function", "sCAL"); + if (png_ptr == NULL || info_ptr == NULL) + return; + + info_ptr->scal_unit = (png_byte)unit; + info_ptr->scal_pixel_width = width; + info_ptr->scal_pixel_height = height; + + info_ptr->valid |= PNG_INFO_sCAL; +} +#else +#ifdef PNG_FIXED_POINT_SUPPORTED +void PNGAPI +png_set_sCAL_s(png_structp png_ptr, png_infop info_ptr, + int unit, png_charp swidth, png_charp sheight) +{ + png_uint_32 length; + + png_debug1(1, "in %s storage function", "sCAL"); + if (png_ptr == NULL || info_ptr == NULL) + return; + + info_ptr->scal_unit = (png_byte)unit; + + length = png_strlen(swidth) + 1; + png_debug1(3, "allocating unit for info (%u bytes)", + (unsigned int)length); + info_ptr->scal_s_width = (png_charp)png_malloc_warn(png_ptr, length); + if (info_ptr->scal_s_width == NULL) + { + png_warning(png_ptr, + "Memory allocation failed while processing sCAL."); + return; + } + png_memcpy(info_ptr->scal_s_width, swidth, (png_size_t)length); + + length = png_strlen(sheight) + 1; + png_debug1(3, "allocating unit for info (%u bytes)", + (unsigned int)length); + info_ptr->scal_s_height = (png_charp)png_malloc_warn(png_ptr, length); + if (info_ptr->scal_s_height == NULL) + { + png_free (png_ptr, info_ptr->scal_s_width); + info_ptr->scal_s_width = NULL; + png_warning(png_ptr, + "Memory allocation failed while processing sCAL."); + return; + } + png_memcpy(info_ptr->scal_s_height, sheight, (png_size_t)length); + info_ptr->valid |= PNG_INFO_sCAL; +#ifdef PNG_FREE_ME_SUPPORTED + info_ptr->free_me |= PNG_FREE_SCAL; +#endif +} +#endif +#endif +#endif + +#if defined(PNG_pHYs_SUPPORTED) +void PNGAPI +png_set_pHYs(png_structp png_ptr, png_infop info_ptr, + png_uint_32 res_x, png_uint_32 res_y, int unit_type) +{ + png_debug1(1, "in %s storage function", "pHYs"); + if (png_ptr == NULL || info_ptr == NULL) + return; + + info_ptr->x_pixels_per_unit = res_x; + info_ptr->y_pixels_per_unit = res_y; + info_ptr->phys_unit_type = (png_byte)unit_type; + info_ptr->valid |= PNG_INFO_pHYs; +} +#endif + +void PNGAPI +png_set_PLTE(png_structp png_ptr, png_infop info_ptr, + png_colorp palette, int num_palette) +{ + + png_debug1(1, "in %s storage function", "PLTE"); + if (png_ptr == NULL || info_ptr == NULL) + return; + + if (num_palette < 0 || num_palette > PNG_MAX_PALETTE_LENGTH) + { + if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) + png_error(png_ptr, "Invalid palette length"); + else + { + png_warning(png_ptr, "Invalid palette length"); + return; + } + } + + /* + * It may not actually be necessary to set png_ptr->palette here; + * we do it for backward compatibility with the way the png_handle_tRNS + * function used to do the allocation. + */ +#ifdef PNG_FREE_ME_SUPPORTED + png_free_data(png_ptr, info_ptr, PNG_FREE_PLTE, 0); +#endif + + /* Changed in libpng-1.2.1 to allocate PNG_MAX_PALETTE_LENGTH instead + * of num_palette entries, in case of an invalid PNG file that has + * too-large sample values. + */ + png_ptr->palette = (png_colorp)png_malloc(png_ptr, + PNG_MAX_PALETTE_LENGTH * png_sizeof(png_color)); + png_memset(png_ptr->palette, 0, PNG_MAX_PALETTE_LENGTH * + png_sizeof(png_color)); + png_memcpy(png_ptr->palette, palette, num_palette * png_sizeof(png_color)); + info_ptr->palette = png_ptr->palette; + info_ptr->num_palette = png_ptr->num_palette = (png_uint_16)num_palette; + +#ifdef PNG_FREE_ME_SUPPORTED + info_ptr->free_me |= PNG_FREE_PLTE; +#else + png_ptr->flags |= PNG_FLAG_FREE_PLTE; +#endif + + info_ptr->valid |= PNG_INFO_PLTE; +} + +#if defined(PNG_sBIT_SUPPORTED) +void PNGAPI +png_set_sBIT(png_structp png_ptr, png_infop info_ptr, + png_color_8p sig_bit) +{ + png_debug1(1, "in %s storage function", "sBIT"); + if (png_ptr == NULL || info_ptr == NULL) + return; + + png_memcpy(&(info_ptr->sig_bit), sig_bit, png_sizeof(png_color_8)); + info_ptr->valid |= PNG_INFO_sBIT; +} +#endif + +#if defined(PNG_sRGB_SUPPORTED) +void PNGAPI +png_set_sRGB(png_structp png_ptr, png_infop info_ptr, int intent) +{ + png_debug1(1, "in %s storage function", "sRGB"); + if (png_ptr == NULL || info_ptr == NULL) + return; + + info_ptr->srgb_intent = (png_byte)intent; + info_ptr->valid |= PNG_INFO_sRGB; +} + +void PNGAPI +png_set_sRGB_gAMA_and_cHRM(png_structp png_ptr, png_infop info_ptr, + int intent) +{ +#if defined(PNG_gAMA_SUPPORTED) +#ifdef PNG_FLOATING_POINT_SUPPORTED + float file_gamma; +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED + png_fixed_point int_file_gamma; +#endif +#endif +#if defined(PNG_cHRM_SUPPORTED) +#ifdef PNG_FLOATING_POINT_SUPPORTED + float white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y; +#endif + png_fixed_point int_white_x, int_white_y, int_red_x, int_red_y, int_green_x, + int_green_y, int_blue_x, int_blue_y; +#endif + png_debug1(1, "in %s storage function", "sRGB_gAMA_and_cHRM"); + if (png_ptr == NULL || info_ptr == NULL) + return; + + png_set_sRGB(png_ptr, info_ptr, intent); + +#if defined(PNG_gAMA_SUPPORTED) +#ifdef PNG_FLOATING_POINT_SUPPORTED + file_gamma = (float).45455; + png_set_gAMA(png_ptr, info_ptr, file_gamma); +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED + int_file_gamma = 45455L; + png_set_gAMA_fixed(png_ptr, info_ptr, int_file_gamma); +#endif +#endif + +#if defined(PNG_cHRM_SUPPORTED) + int_white_x = 31270L; + int_white_y = 32900L; + int_red_x = 64000L; + int_red_y = 33000L; + int_green_x = 30000L; + int_green_y = 60000L; + int_blue_x = 15000L; + int_blue_y = 6000L; + +#ifdef PNG_FLOATING_POINT_SUPPORTED + white_x = (float).3127; + white_y = (float).3290; + red_x = (float).64; + red_y = (float).33; + green_x = (float).30; + green_y = (float).60; + blue_x = (float).15; + blue_y = (float).06; +#endif + +#if !defined(PNG_NO_CHECK_cHRM) + if (png_check_cHRM_fixed(png_ptr, + int_white_x, int_white_y, int_red_x, int_red_y, int_green_x, + int_green_y, int_blue_x, int_blue_y)) +#endif + { +#ifdef PNG_FIXED_POINT_SUPPORTED + png_set_cHRM_fixed(png_ptr, info_ptr, + int_white_x, int_white_y, int_red_x, int_red_y, int_green_x, + int_green_y, int_blue_x, int_blue_y); +#endif +#ifdef PNG_FLOATING_POINT_SUPPORTED + png_set_cHRM(png_ptr, info_ptr, + white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y); +#endif + } +#endif /* cHRM */ +} +#endif /* sRGB */ + + +#if defined(PNG_iCCP_SUPPORTED) +void PNGAPI +png_set_iCCP(png_structp png_ptr, png_infop info_ptr, + png_charp name, int compression_type, + png_charp profile, png_uint_32 proflen) +{ + png_charp new_iccp_name; + png_charp new_iccp_profile; + png_uint_32 length; + + png_debug1(1, "in %s storage function", "iCCP"); + if (png_ptr == NULL || info_ptr == NULL || name == NULL || profile == NULL) + return; + + length = png_strlen(name)+1; + new_iccp_name = (png_charp)png_malloc_warn(png_ptr, length); + if (new_iccp_name == NULL) + { + png_warning(png_ptr, "Insufficient memory to process iCCP chunk."); + return; + } + png_memcpy(new_iccp_name, name, length); + new_iccp_profile = (png_charp)png_malloc_warn(png_ptr, proflen); + if (new_iccp_profile == NULL) + { + png_free (png_ptr, new_iccp_name); + png_warning(png_ptr, + "Insufficient memory to process iCCP profile."); + return; + } + png_memcpy(new_iccp_profile, profile, (png_size_t)proflen); + + png_free_data(png_ptr, info_ptr, PNG_FREE_ICCP, 0); + + info_ptr->iccp_proflen = proflen; + info_ptr->iccp_name = new_iccp_name; + info_ptr->iccp_profile = new_iccp_profile; + /* Compression is always zero but is here so the API and info structure + * does not have to change if we introduce multiple compression types */ + info_ptr->iccp_compression = (png_byte)compression_type; +#ifdef PNG_FREE_ME_SUPPORTED + info_ptr->free_me |= PNG_FREE_ICCP; +#endif + info_ptr->valid |= PNG_INFO_iCCP; +} +#endif + +#if defined(PNG_TEXT_SUPPORTED) +void PNGAPI +png_set_text(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr, + int num_text) +{ + int ret; + ret = png_set_text_2(png_ptr, info_ptr, text_ptr, num_text); + if (ret) + png_error(png_ptr, "Insufficient memory to store text"); +} + +int /* PRIVATE */ +png_set_text_2(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr, + int num_text) +{ + int i; + + png_debug1(1, "in %s storage function", (png_ptr->chunk_name[0] == '\0' ? + "text" : (png_const_charp)png_ptr->chunk_name)); + + if (png_ptr == NULL || info_ptr == NULL || num_text == 0) + return(0); + + /* Make sure we have enough space in the "text" array in info_struct + * to hold all of the incoming text_ptr objects. + */ + if (info_ptr->num_text + num_text > info_ptr->max_text) + { + if (info_ptr->text != NULL) + { + png_textp old_text; + int old_max; + + old_max = info_ptr->max_text; + info_ptr->max_text = info_ptr->num_text + num_text + 8; + old_text = info_ptr->text; + info_ptr->text = (png_textp)png_malloc_warn(png_ptr, + (png_uint_32)(info_ptr->max_text * png_sizeof(png_text))); + if (info_ptr->text == NULL) + { + png_free(png_ptr, old_text); + return(1); + } + png_memcpy(info_ptr->text, old_text, (png_size_t)(old_max * + png_sizeof(png_text))); + png_free(png_ptr, old_text); + } + else + { + info_ptr->max_text = num_text + 8; + info_ptr->num_text = 0; + info_ptr->text = (png_textp)png_malloc_warn(png_ptr, + (png_uint_32)(info_ptr->max_text * png_sizeof(png_text))); + if (info_ptr->text == NULL) + return(1); +#ifdef PNG_FREE_ME_SUPPORTED + info_ptr->free_me |= PNG_FREE_TEXT; +#endif + } + png_debug1(3, "allocated %d entries for info_ptr->text", + info_ptr->max_text); + } + for (i = 0; i < num_text; i++) + { + png_size_t text_length, key_len; + png_size_t lang_len, lang_key_len; + png_textp textp = &(info_ptr->text[info_ptr->num_text]); + + if (text_ptr[i].key == NULL) + continue; + + key_len = png_strlen(text_ptr[i].key); + + if (text_ptr[i].compression <= 0) + { + lang_len = 0; + lang_key_len = 0; + } + else +#ifdef PNG_iTXt_SUPPORTED + { + /* Set iTXt data */ + if (text_ptr[i].lang != NULL) + lang_len = png_strlen(text_ptr[i].lang); + else + lang_len = 0; + if (text_ptr[i].lang_key != NULL) + lang_key_len = png_strlen(text_ptr[i].lang_key); + else + lang_key_len = 0; + } +#else + { + png_warning(png_ptr, "iTXt chunk not supported."); + continue; + } +#endif + + if (text_ptr[i].text == NULL || text_ptr[i].text[0] == '\0') + { + text_length = 0; +#ifdef PNG_iTXt_SUPPORTED + if (text_ptr[i].compression > 0) + textp->compression = PNG_ITXT_COMPRESSION_NONE; + else +#endif + textp->compression = PNG_TEXT_COMPRESSION_NONE; + } + else + { + text_length = png_strlen(text_ptr[i].text); + textp->compression = text_ptr[i].compression; + } + + textp->key = (png_charp)png_malloc_warn(png_ptr, + (png_uint_32) + (key_len + text_length + lang_len + lang_key_len + 4)); + if (textp->key == NULL) + return(1); + png_debug2(2, "Allocated %lu bytes at %x in png_set_text", + (png_uint_32) + (key_len + lang_len + lang_key_len + text_length + 4), + (int)textp->key); + + png_memcpy(textp->key, text_ptr[i].key,(png_size_t)(key_len)); + *(textp->key + key_len) = '\0'; +#ifdef PNG_iTXt_SUPPORTED + if (text_ptr[i].compression > 0) + { + textp->lang = textp->key + key_len + 1; + png_memcpy(textp->lang, text_ptr[i].lang, lang_len); + *(textp->lang + lang_len) = '\0'; + textp->lang_key = textp->lang + lang_len + 1; + png_memcpy(textp->lang_key, text_ptr[i].lang_key, lang_key_len); + *(textp->lang_key + lang_key_len) = '\0'; + textp->text = textp->lang_key + lang_key_len + 1; + } + else +#endif + { +#ifdef PNG_iTXt_SUPPORTED + textp->lang=NULL; + textp->lang_key=NULL; +#endif + textp->text = textp->key + key_len + 1; + } + if (text_length) + png_memcpy(textp->text, text_ptr[i].text, + (png_size_t)(text_length)); + *(textp->text + text_length) = '\0'; + +#ifdef PNG_iTXt_SUPPORTED + if (textp->compression > 0) + { + textp->text_length = 0; + textp->itxt_length = text_length; + } + else +#endif + { + textp->text_length = text_length; +#ifdef PNG_iTXt_SUPPORTED + textp->itxt_length = 0; +#endif + } + info_ptr->num_text++; + png_debug1(3, "transferred text chunk %d", info_ptr->num_text); + } + return(0); +} +#endif + +#if defined(PNG_tIME_SUPPORTED) +void PNGAPI +png_set_tIME(png_structp png_ptr, png_infop info_ptr, png_timep mod_time) +{ + png_debug1(1, "in %s storage function", "tIME"); + if (png_ptr == NULL || info_ptr == NULL || + (png_ptr->mode & PNG_WROTE_tIME)) + return; + + png_memcpy(&(info_ptr->mod_time), mod_time, png_sizeof(png_time)); + info_ptr->valid |= PNG_INFO_tIME; +} +#endif + +#if defined(PNG_tRNS_SUPPORTED) +void PNGAPI +png_set_tRNS(png_structp png_ptr, png_infop info_ptr, + png_bytep trans, int num_trans, png_color_16p trans_values) +{ + png_debug1(1, "in %s storage function", "tRNS"); + if (png_ptr == NULL || info_ptr == NULL) + return; + + if (trans != NULL) + { + /* + * It may not actually be necessary to set png_ptr->trans here; + * we do it for backward compatibility with the way the png_handle_tRNS + * function used to do the allocation. + */ + +#ifdef PNG_FREE_ME_SUPPORTED + png_free_data(png_ptr, info_ptr, PNG_FREE_TRNS, 0); +#endif + + /* Changed from num_trans to PNG_MAX_PALETTE_LENGTH in version 1.2.1 */ + png_ptr->trans = info_ptr->trans = (png_bytep)png_malloc(png_ptr, + (png_uint_32)PNG_MAX_PALETTE_LENGTH); + if (num_trans > 0 && num_trans <= PNG_MAX_PALETTE_LENGTH) + png_memcpy(info_ptr->trans, trans, (png_size_t)num_trans); + } + + if (trans_values != NULL) + { + int sample_max = (1 << info_ptr->bit_depth); + if ((info_ptr->color_type == PNG_COLOR_TYPE_GRAY && + (int)trans_values->gray > sample_max) || + (info_ptr->color_type == PNG_COLOR_TYPE_RGB && + ((int)trans_values->red > sample_max || + (int)trans_values->green > sample_max || + (int)trans_values->blue > sample_max))) + png_warning(png_ptr, + "tRNS chunk has out-of-range samples for bit_depth"); + png_memcpy(&(info_ptr->trans_values), trans_values, + png_sizeof(png_color_16)); + if (num_trans == 0) + num_trans = 1; + } + + info_ptr->num_trans = (png_uint_16)num_trans; + if (num_trans != 0) + { + info_ptr->valid |= PNG_INFO_tRNS; +#ifdef PNG_FREE_ME_SUPPORTED + info_ptr->free_me |= PNG_FREE_TRNS; +#else + png_ptr->flags |= PNG_FLAG_FREE_TRNS; +#endif + } +} +#endif + +#if defined(PNG_sPLT_SUPPORTED) +void PNGAPI +png_set_sPLT(png_structp png_ptr, + png_infop info_ptr, png_sPLT_tp entries, int nentries) +/* + * entries - array of png_sPLT_t structures + * to be added to the list of palettes + * in the info structure. + * nentries - number of palette structures to be + * added. + */ +{ + png_sPLT_tp np; + int i; + + if (png_ptr == NULL || info_ptr == NULL) + return; + + np = (png_sPLT_tp)png_malloc_warn(png_ptr, + (info_ptr->splt_palettes_num + nentries) * + (png_uint_32)png_sizeof(png_sPLT_t)); + if (np == NULL) + { + png_warning(png_ptr, "No memory for sPLT palettes."); + return; + } + + png_memcpy(np, info_ptr->splt_palettes, + info_ptr->splt_palettes_num * png_sizeof(png_sPLT_t)); + png_free(png_ptr, info_ptr->splt_palettes); + info_ptr->splt_palettes=NULL; + + for (i = 0; i < nentries; i++) + { + png_sPLT_tp to = np + info_ptr->splt_palettes_num + i; + png_sPLT_tp from = entries + i; + png_uint_32 length; + + length = png_strlen(from->name) + 1; + to->name = (png_charp)png_malloc_warn(png_ptr, length); + if (to->name == NULL) + { + png_warning(png_ptr, + "Out of memory while processing sPLT chunk"); + continue; + } + png_memcpy(to->name, from->name, length); + to->entries = (png_sPLT_entryp)png_malloc_warn(png_ptr, + (png_uint_32)(from->nentries * png_sizeof(png_sPLT_entry))); + if (to->entries == NULL) + { + png_warning(png_ptr, + "Out of memory while processing sPLT chunk"); + png_free(png_ptr, to->name); + to->name = NULL; + continue; + } + png_memcpy(to->entries, from->entries, + from->nentries * png_sizeof(png_sPLT_entry)); + to->nentries = from->nentries; + to->depth = from->depth; + } + + info_ptr->splt_palettes = np; + info_ptr->splt_palettes_num += nentries; + info_ptr->valid |= PNG_INFO_sPLT; +#ifdef PNG_FREE_ME_SUPPORTED + info_ptr->free_me |= PNG_FREE_SPLT; +#endif +} +#endif /* PNG_sPLT_SUPPORTED */ + +#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) +void PNGAPI +png_set_unknown_chunks(png_structp png_ptr, + png_infop info_ptr, png_unknown_chunkp unknowns, int num_unknowns) +{ + png_unknown_chunkp np; + int i; + + if (png_ptr == NULL || info_ptr == NULL || num_unknowns == 0) + return; + + np = (png_unknown_chunkp)png_malloc_warn(png_ptr, + (png_uint_32)((info_ptr->unknown_chunks_num + num_unknowns) * + png_sizeof(png_unknown_chunk))); + if (np == NULL) + { + png_warning(png_ptr, + "Out of memory while processing unknown chunk."); + return; + } + + png_memcpy(np, info_ptr->unknown_chunks, + info_ptr->unknown_chunks_num * png_sizeof(png_unknown_chunk)); + png_free(png_ptr, info_ptr->unknown_chunks); + info_ptr->unknown_chunks=NULL; + + for (i = 0; i < num_unknowns; i++) + { + png_unknown_chunkp to = np + info_ptr->unknown_chunks_num + i; + png_unknown_chunkp from = unknowns + i; + + png_memcpy((png_charp)to->name, + (png_charp)from->name, + png_sizeof(from->name)); + to->name[png_sizeof(to->name)-1] = '\0'; + to->size = from->size; + /* Note our location in the read or write sequence */ + to->location = (png_byte)(png_ptr->mode & 0xff); + + if (from->size == 0) + to->data=NULL; + else + { + to->data = (png_bytep)png_malloc_warn(png_ptr, + (png_uint_32)from->size); + if (to->data == NULL) + { + png_warning(png_ptr, + "Out of memory while processing unknown chunk."); + to->size = 0; + } + else + png_memcpy(to->data, from->data, from->size); + } + } + + info_ptr->unknown_chunks = np; + info_ptr->unknown_chunks_num += num_unknowns; +#ifdef PNG_FREE_ME_SUPPORTED + info_ptr->free_me |= PNG_FREE_UNKN; +#endif +} +void PNGAPI +png_set_unknown_chunk_location(png_structp png_ptr, png_infop info_ptr, + int chunk, int location) +{ + if (png_ptr != NULL && info_ptr != NULL && chunk >= 0 && chunk < + (int)info_ptr->unknown_chunks_num) + info_ptr->unknown_chunks[chunk].location = (png_byte)location; +} +#endif + +#if defined(PNG_1_0_X) || defined(PNG_1_2_X) +#if defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \ + defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED) +void PNGAPI +png_permit_empty_plte (png_structp png_ptr, int empty_plte_permitted) +{ + /* This function is deprecated in favor of png_permit_mng_features() + and will be removed from libpng-1.3.0 */ + png_debug(1, "in png_permit_empty_plte, DEPRECATED."); + if (png_ptr == NULL) + return; + png_ptr->mng_features_permitted = (png_byte) + ((png_ptr->mng_features_permitted & (~PNG_FLAG_MNG_EMPTY_PLTE)) | + ((empty_plte_permitted & PNG_FLAG_MNG_EMPTY_PLTE))); +} +#endif +#endif + +#if defined(PNG_MNG_FEATURES_SUPPORTED) +png_uint_32 PNGAPI +png_permit_mng_features (png_structp png_ptr, png_uint_32 mng_features) +{ + png_debug(1, "in png_permit_mng_features"); + if (png_ptr == NULL) + return (png_uint_32)0; + png_ptr->mng_features_permitted = + (png_byte)(mng_features & PNG_ALL_MNG_FEATURES); + return (png_uint_32)png_ptr->mng_features_permitted; +} +#endif + +#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) +void PNGAPI +png_set_keep_unknown_chunks(png_structp png_ptr, int keep, png_bytep + chunk_list, int num_chunks) +{ + png_bytep new_list, p; + int i, old_num_chunks; + if (png_ptr == NULL) + return; + if (num_chunks == 0) + { + if (keep == PNG_HANDLE_CHUNK_ALWAYS || keep == PNG_HANDLE_CHUNK_IF_SAFE) + png_ptr->flags |= PNG_FLAG_KEEP_UNKNOWN_CHUNKS; + else + png_ptr->flags &= ~PNG_FLAG_KEEP_UNKNOWN_CHUNKS; + + if (keep == PNG_HANDLE_CHUNK_ALWAYS) + png_ptr->flags |= PNG_FLAG_KEEP_UNSAFE_CHUNKS; + else + png_ptr->flags &= ~PNG_FLAG_KEEP_UNSAFE_CHUNKS; + return; + } + if (chunk_list == NULL) + return; + old_num_chunks = png_ptr->num_chunk_list; + new_list=(png_bytep)png_malloc(png_ptr, + (png_uint_32) + (5*(num_chunks + old_num_chunks))); + if (png_ptr->chunk_list != NULL) + { + png_memcpy(new_list, png_ptr->chunk_list, + (png_size_t)(5*old_num_chunks)); + png_free(png_ptr, png_ptr->chunk_list); + png_ptr->chunk_list=NULL; + } + png_memcpy(new_list + 5*old_num_chunks, chunk_list, + (png_size_t)(5*num_chunks)); + for (p = new_list + 5*old_num_chunks + 4, i = 0; inum_chunk_list = old_num_chunks + num_chunks; + png_ptr->chunk_list = new_list; +#ifdef PNG_FREE_ME_SUPPORTED + png_ptr->free_me |= PNG_FREE_LIST; +#endif +} +#endif + +#if defined(PNG_READ_USER_CHUNKS_SUPPORTED) +void PNGAPI +png_set_read_user_chunk_fn(png_structp png_ptr, png_voidp user_chunk_ptr, + png_user_chunk_ptr read_user_chunk_fn) +{ + png_debug(1, "in png_set_read_user_chunk_fn"); + if (png_ptr == NULL) + return; + png_ptr->read_user_chunk_fn = read_user_chunk_fn; + png_ptr->user_chunk_ptr = user_chunk_ptr; +} +#endif + +#if defined(PNG_INFO_IMAGE_SUPPORTED) +void PNGAPI +png_set_rows(png_structp png_ptr, png_infop info_ptr, png_bytepp row_pointers) +{ + png_debug1(1, "in %s storage function", "rows"); + + if (png_ptr == NULL || info_ptr == NULL) + return; + + if (info_ptr->row_pointers && (info_ptr->row_pointers != row_pointers)) + png_free_data(png_ptr, info_ptr, PNG_FREE_ROWS, 0); + info_ptr->row_pointers = row_pointers; + if (row_pointers) + info_ptr->valid |= PNG_INFO_IDAT; +} +#endif + +#ifdef PNG_WRITE_SUPPORTED +void PNGAPI +png_set_compression_buffer_size(png_structp png_ptr, + png_uint_32 size) +{ + if (png_ptr == NULL) + return; + png_free(png_ptr, png_ptr->zbuf); + png_ptr->zbuf_size = (png_size_t)size; + png_ptr->zbuf = (png_bytep)png_malloc(png_ptr, size); + png_ptr->zstream.next_out = png_ptr->zbuf; + png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; +} +#endif + +void PNGAPI +png_set_invalid(png_structp png_ptr, png_infop info_ptr, int mask) +{ + if (png_ptr && info_ptr) + info_ptr->valid &= ~mask; +} + + +#ifndef PNG_1_0_X +#ifdef PNG_ASSEMBLER_CODE_SUPPORTED +/* Function was added to libpng 1.2.0 and should always exist by default */ +void PNGAPI +png_set_asm_flags (png_structp png_ptr, png_uint_32 asm_flags) +{ +/* Obsolete as of libpng-1.2.20 and will be removed from libpng-1.4.0 */ + if (png_ptr != NULL) + png_ptr->asm_flags = 0; + asm_flags = asm_flags; /* Quiet the compiler */ +} + +/* This function was added to libpng 1.2.0 */ +void PNGAPI +png_set_mmx_thresholds (png_structp png_ptr, + png_byte mmx_bitdepth_threshold, + png_uint_32 mmx_rowbytes_threshold) +{ +/* Obsolete as of libpng-1.2.20 and will be removed from libpng-1.4.0 */ + if (png_ptr == NULL) + return; + /* Quiet the compiler */ + mmx_bitdepth_threshold = mmx_bitdepth_threshold; + mmx_rowbytes_threshold = mmx_rowbytes_threshold; +} +#endif /* ?PNG_ASSEMBLER_CODE_SUPPORTED */ + +#ifdef PNG_SET_USER_LIMITS_SUPPORTED +/* This function was added to libpng 1.2.6 */ +void PNGAPI +png_set_user_limits (png_structp png_ptr, png_uint_32 user_width_max, + png_uint_32 user_height_max) +{ + /* Images with dimensions larger than these limits will be + * rejected by png_set_IHDR(). To accept any PNG datastream + * regardless of dimensions, set both limits to 0x7ffffffL. + */ + if (png_ptr == NULL) + return; + png_ptr->user_width_max = user_width_max; + png_ptr->user_height_max = user_height_max; +} +#endif /* ?PNG_SET_USER_LIMITS_SUPPORTED */ + +#endif /* ?PNG_1_0_X */ +#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */ diff --git a/Libraries/libpng/pngtrans.cpp b/Libraries/libpng/pngtrans.cpp new file mode 100644 index 0000000..f221f54 --- /dev/null +++ b/Libraries/libpng/pngtrans.cpp @@ -0,0 +1,674 @@ + +/* pngtrans.c - transforms the data in a row (used by both readers and writers) + * + * Last changed in libpng 1.2.36 [May 14, 2009] + * For conditions of distribution and use, see copyright notice in png.h + * Copyright (c) 1998-2009 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + */ + +#define PNG_INTERNAL +#include "png.h" +#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) + +#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) +/* Turn on BGR-to-RGB mapping */ +void PNGAPI +png_set_bgr(png_structp png_ptr) +{ + png_debug(1, "in png_set_bgr"); + if (png_ptr == NULL) + return; + png_ptr->transformations |= PNG_BGR; +} +#endif + +#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) +/* Turn on 16 bit byte swapping */ +void PNGAPI +png_set_swap(png_structp png_ptr) +{ + png_debug(1, "in png_set_swap"); + if (png_ptr == NULL) + return; + if (png_ptr->bit_depth == 16) + png_ptr->transformations |= PNG_SWAP_BYTES; +} +#endif + +#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) +/* Turn on pixel packing */ +void PNGAPI +png_set_packing(png_structp png_ptr) +{ + png_debug(1, "in png_set_packing"); + if (png_ptr == NULL) + return; + if (png_ptr->bit_depth < 8) + { + png_ptr->transformations |= PNG_PACK; + png_ptr->usr_bit_depth = 8; + } +} +#endif + +#if defined(PNG_READ_PACKSWAP_SUPPORTED)||defined(PNG_WRITE_PACKSWAP_SUPPORTED) +/* Turn on packed pixel swapping */ +void PNGAPI +png_set_packswap(png_structp png_ptr) +{ + png_debug(1, "in png_set_packswap"); + if (png_ptr == NULL) + return; + if (png_ptr->bit_depth < 8) + png_ptr->transformations |= PNG_PACKSWAP; +} +#endif + +#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) +void PNGAPI +png_set_shift(png_structp png_ptr, png_color_8p true_bits) +{ + png_debug(1, "in png_set_shift"); + if (png_ptr == NULL) + return; + png_ptr->transformations |= PNG_SHIFT; + png_ptr->shift = *true_bits; +} +#endif + +#if defined(PNG_READ_INTERLACING_SUPPORTED) || \ + defined(PNG_WRITE_INTERLACING_SUPPORTED) +int PNGAPI +png_set_interlace_handling(png_structp png_ptr) +{ + png_debug(1, "in png_set_interlace handling"); + if (png_ptr && png_ptr->interlaced) + { + png_ptr->transformations |= PNG_INTERLACE; + return (7); + } + + return (1); +} +#endif + +#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) +/* Add a filler byte on read, or remove a filler or alpha byte on write. + * The filler type has changed in v0.95 to allow future 2-byte fillers + * for 48-bit input data, as well as to avoid problems with some compilers + * that don't like bytes as parameters. + */ +void PNGAPI +png_set_filler(png_structp png_ptr, png_uint_32 filler, int filler_loc) +{ + png_debug(1, "in png_set_filler"); + if (png_ptr == NULL) + return; + png_ptr->transformations |= PNG_FILLER; + png_ptr->filler = (png_byte)filler; + if (filler_loc == PNG_FILLER_AFTER) + png_ptr->flags |= PNG_FLAG_FILLER_AFTER; + else + png_ptr->flags &= ~PNG_FLAG_FILLER_AFTER; + + /* This should probably go in the "do_read_filler" routine. + * I attempted to do that in libpng-1.0.1a but that caused problems + * so I restored it in libpng-1.0.2a + */ + + if (png_ptr->color_type == PNG_COLOR_TYPE_RGB) + { + png_ptr->usr_channels = 4; + } + + /* Also I added this in libpng-1.0.2a (what happens when we expand + * a less-than-8-bit grayscale to GA? */ + + if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY && png_ptr->bit_depth >= 8) + { + png_ptr->usr_channels = 2; + } +} + +#if !defined(PNG_1_0_X) +/* Added to libpng-1.2.7 */ +void PNGAPI +png_set_add_alpha(png_structp png_ptr, png_uint_32 filler, int filler_loc) +{ + png_debug(1, "in png_set_add_alpha"); + if (png_ptr == NULL) + return; + png_set_filler(png_ptr, filler, filler_loc); + png_ptr->transformations |= PNG_ADD_ALPHA; +} +#endif + +#endif + +#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \ + defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) +void PNGAPI +png_set_swap_alpha(png_structp png_ptr) +{ + png_debug(1, "in png_set_swap_alpha"); + if (png_ptr == NULL) + return; + png_ptr->transformations |= PNG_SWAP_ALPHA; +} +#endif + +#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \ + defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) +void PNGAPI +png_set_invert_alpha(png_structp png_ptr) +{ + png_debug(1, "in png_set_invert_alpha"); + if (png_ptr == NULL) + return; + png_ptr->transformations |= PNG_INVERT_ALPHA; +} +#endif + +#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) +void PNGAPI +png_set_invert_mono(png_structp png_ptr) +{ + png_debug(1, "in png_set_invert_mono"); + if (png_ptr == NULL) + return; + png_ptr->transformations |= PNG_INVERT_MONO; +} + +/* Invert monochrome grayscale data */ +void /* PRIVATE */ +png_do_invert(png_row_infop row_info, png_bytep row) +{ + png_debug(1, "in png_do_invert"); + /* This test removed from libpng version 1.0.13 and 1.2.0: + * if (row_info->bit_depth == 1 && + */ +#if defined(PNG_USELESS_TESTS_SUPPORTED) + if (row == NULL || row_info == NULL) + return; +#endif + if (row_info->color_type == PNG_COLOR_TYPE_GRAY) + { + png_bytep rp = row; + png_uint_32 i; + png_uint_32 istop = row_info->rowbytes; + + for (i = 0; i < istop; i++) + { + *rp = (png_byte)(~(*rp)); + rp++; + } + } + else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA && + row_info->bit_depth == 8) + { + png_bytep rp = row; + png_uint_32 i; + png_uint_32 istop = row_info->rowbytes; + + for (i = 0; i < istop; i+=2) + { + *rp = (png_byte)(~(*rp)); + rp+=2; + } + } + else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA && + row_info->bit_depth == 16) + { + png_bytep rp = row; + png_uint_32 i; + png_uint_32 istop = row_info->rowbytes; + + for (i = 0; i < istop; i+=4) + { + *rp = (png_byte)(~(*rp)); + *(rp+1) = (png_byte)(~(*(rp+1))); + rp+=4; + } + } +} +#endif + +#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) +/* Swaps byte order on 16 bit depth images */ +void /* PRIVATE */ +png_do_swap(png_row_infop row_info, png_bytep row) +{ + png_debug(1, "in png_do_swap"); + if ( +#if defined(PNG_USELESS_TESTS_SUPPORTED) + row != NULL && row_info != NULL && +#endif + row_info->bit_depth == 16) + { + png_bytep rp = row; + png_uint_32 i; + png_uint_32 istop= row_info->width * row_info->channels; + + for (i = 0; i < istop; i++, rp += 2) + { + png_byte t = *rp; + *rp = *(rp + 1); + *(rp + 1) = t; + } + } +} +#endif + +#if defined(PNG_READ_PACKSWAP_SUPPORTED)||defined(PNG_WRITE_PACKSWAP_SUPPORTED) +static PNG_CONST png_byte onebppswaptable[256] = { + 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0, + 0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0, + 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8, + 0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8, + 0x04, 0x84, 0x44, 0xC4, 0x24, 0xA4, 0x64, 0xE4, + 0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4, + 0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC, + 0x1C, 0x9C, 0x5C, 0xDC, 0x3C, 0xBC, 0x7C, 0xFC, + 0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2, + 0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2, + 0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA, + 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA, + 0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6, + 0x16, 0x96, 0x56, 0xD6, 0x36, 0xB6, 0x76, 0xF6, + 0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE, + 0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE, + 0x01, 0x81, 0x41, 0xC1, 0x21, 0xA1, 0x61, 0xE1, + 0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1, + 0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9, + 0x19, 0x99, 0x59, 0xD9, 0x39, 0xB9, 0x79, 0xF9, + 0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5, + 0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5, + 0x0D, 0x8D, 0x4D, 0xCD, 0x2D, 0xAD, 0x6D, 0xED, + 0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD, + 0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3, + 0x13, 0x93, 0x53, 0xD3, 0x33, 0xB3, 0x73, 0xF3, + 0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB, + 0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB, + 0x07, 0x87, 0x47, 0xC7, 0x27, 0xA7, 0x67, 0xE7, + 0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7, + 0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF, + 0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF +}; + +static PNG_CONST png_byte twobppswaptable[256] = { + 0x00, 0x40, 0x80, 0xC0, 0x10, 0x50, 0x90, 0xD0, + 0x20, 0x60, 0xA0, 0xE0, 0x30, 0x70, 0xB0, 0xF0, + 0x04, 0x44, 0x84, 0xC4, 0x14, 0x54, 0x94, 0xD4, + 0x24, 0x64, 0xA4, 0xE4, 0x34, 0x74, 0xB4, 0xF4, + 0x08, 0x48, 0x88, 0xC8, 0x18, 0x58, 0x98, 0xD8, + 0x28, 0x68, 0xA8, 0xE8, 0x38, 0x78, 0xB8, 0xF8, + 0x0C, 0x4C, 0x8C, 0xCC, 0x1C, 0x5C, 0x9C, 0xDC, + 0x2C, 0x6C, 0xAC, 0xEC, 0x3C, 0x7C, 0xBC, 0xFC, + 0x01, 0x41, 0x81, 0xC1, 0x11, 0x51, 0x91, 0xD1, + 0x21, 0x61, 0xA1, 0xE1, 0x31, 0x71, 0xB1, 0xF1, + 0x05, 0x45, 0x85, 0xC5, 0x15, 0x55, 0x95, 0xD5, + 0x25, 0x65, 0xA5, 0xE5, 0x35, 0x75, 0xB5, 0xF5, + 0x09, 0x49, 0x89, 0xC9, 0x19, 0x59, 0x99, 0xD9, + 0x29, 0x69, 0xA9, 0xE9, 0x39, 0x79, 0xB9, 0xF9, + 0x0D, 0x4D, 0x8D, 0xCD, 0x1D, 0x5D, 0x9D, 0xDD, + 0x2D, 0x6D, 0xAD, 0xED, 0x3D, 0x7D, 0xBD, 0xFD, + 0x02, 0x42, 0x82, 0xC2, 0x12, 0x52, 0x92, 0xD2, + 0x22, 0x62, 0xA2, 0xE2, 0x32, 0x72, 0xB2, 0xF2, + 0x06, 0x46, 0x86, 0xC6, 0x16, 0x56, 0x96, 0xD6, + 0x26, 0x66, 0xA6, 0xE6, 0x36, 0x76, 0xB6, 0xF6, + 0x0A, 0x4A, 0x8A, 0xCA, 0x1A, 0x5A, 0x9A, 0xDA, + 0x2A, 0x6A, 0xAA, 0xEA, 0x3A, 0x7A, 0xBA, 0xFA, + 0x0E, 0x4E, 0x8E, 0xCE, 0x1E, 0x5E, 0x9E, 0xDE, + 0x2E, 0x6E, 0xAE, 0xEE, 0x3E, 0x7E, 0xBE, 0xFE, + 0x03, 0x43, 0x83, 0xC3, 0x13, 0x53, 0x93, 0xD3, + 0x23, 0x63, 0xA3, 0xE3, 0x33, 0x73, 0xB3, 0xF3, + 0x07, 0x47, 0x87, 0xC7, 0x17, 0x57, 0x97, 0xD7, + 0x27, 0x67, 0xA7, 0xE7, 0x37, 0x77, 0xB7, 0xF7, + 0x0B, 0x4B, 0x8B, 0xCB, 0x1B, 0x5B, 0x9B, 0xDB, + 0x2B, 0x6B, 0xAB, 0xEB, 0x3B, 0x7B, 0xBB, 0xFB, + 0x0F, 0x4F, 0x8F, 0xCF, 0x1F, 0x5F, 0x9F, 0xDF, + 0x2F, 0x6F, 0xAF, 0xEF, 0x3F, 0x7F, 0xBF, 0xFF +}; + +static PNG_CONST png_byte fourbppswaptable[256] = { + 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, + 0x80, 0x90, 0xA0, 0xB0, 0xC0, 0xD0, 0xE0, 0xF0, + 0x01, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71, + 0x81, 0x91, 0xA1, 0xB1, 0xC1, 0xD1, 0xE1, 0xF1, + 0x02, 0x12, 0x22, 0x32, 0x42, 0x52, 0x62, 0x72, + 0x82, 0x92, 0xA2, 0xB2, 0xC2, 0xD2, 0xE2, 0xF2, + 0x03, 0x13, 0x23, 0x33, 0x43, 0x53, 0x63, 0x73, + 0x83, 0x93, 0xA3, 0xB3, 0xC3, 0xD3, 0xE3, 0xF3, + 0x04, 0x14, 0x24, 0x34, 0x44, 0x54, 0x64, 0x74, + 0x84, 0x94, 0xA4, 0xB4, 0xC4, 0xD4, 0xE4, 0xF4, + 0x05, 0x15, 0x25, 0x35, 0x45, 0x55, 0x65, 0x75, + 0x85, 0x95, 0xA5, 0xB5, 0xC5, 0xD5, 0xE5, 0xF5, + 0x06, 0x16, 0x26, 0x36, 0x46, 0x56, 0x66, 0x76, + 0x86, 0x96, 0xA6, 0xB6, 0xC6, 0xD6, 0xE6, 0xF6, + 0x07, 0x17, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, + 0x87, 0x97, 0xA7, 0xB7, 0xC7, 0xD7, 0xE7, 0xF7, + 0x08, 0x18, 0x28, 0x38, 0x48, 0x58, 0x68, 0x78, + 0x88, 0x98, 0xA8, 0xB8, 0xC8, 0xD8, 0xE8, 0xF8, + 0x09, 0x19, 0x29, 0x39, 0x49, 0x59, 0x69, 0x79, + 0x89, 0x99, 0xA9, 0xB9, 0xC9, 0xD9, 0xE9, 0xF9, + 0x0A, 0x1A, 0x2A, 0x3A, 0x4A, 0x5A, 0x6A, 0x7A, + 0x8A, 0x9A, 0xAA, 0xBA, 0xCA, 0xDA, 0xEA, 0xFA, + 0x0B, 0x1B, 0x2B, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B, + 0x8B, 0x9B, 0xAB, 0xBB, 0xCB, 0xDB, 0xEB, 0xFB, + 0x0C, 0x1C, 0x2C, 0x3C, 0x4C, 0x5C, 0x6C, 0x7C, + 0x8C, 0x9C, 0xAC, 0xBC, 0xCC, 0xDC, 0xEC, 0xFC, + 0x0D, 0x1D, 0x2D, 0x3D, 0x4D, 0x5D, 0x6D, 0x7D, + 0x8D, 0x9D, 0xAD, 0xBD, 0xCD, 0xDD, 0xED, 0xFD, + 0x0E, 0x1E, 0x2E, 0x3E, 0x4E, 0x5E, 0x6E, 0x7E, + 0x8E, 0x9E, 0xAE, 0xBE, 0xCE, 0xDE, 0xEE, 0xFE, + 0x0F, 0x1F, 0x2F, 0x3F, 0x4F, 0x5F, 0x6F, 0x7F, + 0x8F, 0x9F, 0xAF, 0xBF, 0xCF, 0xDF, 0xEF, 0xFF +}; + +/* Swaps pixel packing order within bytes */ +void /* PRIVATE */ +png_do_packswap(png_row_infop row_info, png_bytep row) +{ + png_debug(1, "in png_do_packswap"); + if ( +#if defined(PNG_USELESS_TESTS_SUPPORTED) + row != NULL && row_info != NULL && +#endif + row_info->bit_depth < 8) + { + png_bytep rp, end, table; + + end = row + row_info->rowbytes; + + if (row_info->bit_depth == 1) + table = (png_bytep)onebppswaptable; + else if (row_info->bit_depth == 2) + table = (png_bytep)twobppswaptable; + else if (row_info->bit_depth == 4) + table = (png_bytep)fourbppswaptable; + else + return; + + for (rp = row; rp < end; rp++) + *rp = table[*rp]; + } +} +#endif /* PNG_READ_PACKSWAP_SUPPORTED or PNG_WRITE_PACKSWAP_SUPPORTED */ + +#if defined(PNG_WRITE_FILLER_SUPPORTED) || \ + defined(PNG_READ_STRIP_ALPHA_SUPPORTED) +/* Remove filler or alpha byte(s) */ +void /* PRIVATE */ +png_do_strip_filler(png_row_infop row_info, png_bytep row, png_uint_32 flags) +{ + png_debug(1, "in png_do_strip_filler"); +#if defined(PNG_USELESS_TESTS_SUPPORTED) + if (row != NULL && row_info != NULL) +#endif + { + png_bytep sp=row; + png_bytep dp=row; + png_uint_32 row_width=row_info->width; + png_uint_32 i; + + if ((row_info->color_type == PNG_COLOR_TYPE_RGB || + (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA && + (flags & PNG_FLAG_STRIP_ALPHA))) && + row_info->channels == 4) + { + if (row_info->bit_depth == 8) + { + /* This converts from RGBX or RGBA to RGB */ + if (flags & PNG_FLAG_FILLER_AFTER) + { + dp+=3; sp+=4; + for (i = 1; i < row_width; i++) + { + *dp++ = *sp++; + *dp++ = *sp++; + *dp++ = *sp++; + sp++; + } + } + /* This converts from XRGB or ARGB to RGB */ + else + { + for (i = 0; i < row_width; i++) + { + sp++; + *dp++ = *sp++; + *dp++ = *sp++; + *dp++ = *sp++; + } + } + row_info->pixel_depth = 24; + row_info->rowbytes = row_width * 3; + } + else /* if (row_info->bit_depth == 16) */ + { + if (flags & PNG_FLAG_FILLER_AFTER) + { + /* This converts from RRGGBBXX or RRGGBBAA to RRGGBB */ + sp += 8; dp += 6; + for (i = 1; i < row_width; i++) + { + /* This could be (although png_memcpy is probably slower): + png_memcpy(dp, sp, 6); + sp += 8; + dp += 6; + */ + + *dp++ = *sp++; + *dp++ = *sp++; + *dp++ = *sp++; + *dp++ = *sp++; + *dp++ = *sp++; + *dp++ = *sp++; + sp += 2; + } + } + else + { + /* This converts from XXRRGGBB or AARRGGBB to RRGGBB */ + for (i = 0; i < row_width; i++) + { + /* This could be (although png_memcpy is probably slower): + png_memcpy(dp, sp, 6); + sp += 8; + dp += 6; + */ + + sp+=2; + *dp++ = *sp++; + *dp++ = *sp++; + *dp++ = *sp++; + *dp++ = *sp++; + *dp++ = *sp++; + *dp++ = *sp++; + } + } + row_info->pixel_depth = 48; + row_info->rowbytes = row_width * 6; + } + row_info->channels = 3; + } + else if ((row_info->color_type == PNG_COLOR_TYPE_GRAY || + (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA && + (flags & PNG_FLAG_STRIP_ALPHA))) && + row_info->channels == 2) + { + if (row_info->bit_depth == 8) + { + /* This converts from GX or GA to G */ + if (flags & PNG_FLAG_FILLER_AFTER) + { + for (i = 0; i < row_width; i++) + { + *dp++ = *sp++; + sp++; + } + } + /* This converts from XG or AG to G */ + else + { + for (i = 0; i < row_width; i++) + { + sp++; + *dp++ = *sp++; + } + } + row_info->pixel_depth = 8; + row_info->rowbytes = row_width; + } + else /* if (row_info->bit_depth == 16) */ + { + if (flags & PNG_FLAG_FILLER_AFTER) + { + /* This converts from GGXX or GGAA to GG */ + sp += 4; dp += 2; + for (i = 1; i < row_width; i++) + { + *dp++ = *sp++; + *dp++ = *sp++; + sp += 2; + } + } + else + { + /* This converts from XXGG or AAGG to GG */ + for (i = 0; i < row_width; i++) + { + sp += 2; + *dp++ = *sp++; + *dp++ = *sp++; + } + } + row_info->pixel_depth = 16; + row_info->rowbytes = row_width * 2; + } + row_info->channels = 1; + } + if (flags & PNG_FLAG_STRIP_ALPHA) + row_info->color_type &= ~PNG_COLOR_MASK_ALPHA; + } +} +#endif + +#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) +/* Swaps red and blue bytes within a pixel */ +void /* PRIVATE */ +png_do_bgr(png_row_infop row_info, png_bytep row) +{ + png_debug(1, "in png_do_bgr"); + if ( +#if defined(PNG_USELESS_TESTS_SUPPORTED) + row != NULL && row_info != NULL && +#endif + (row_info->color_type & PNG_COLOR_MASK_COLOR)) + { + png_uint_32 row_width = row_info->width; + if (row_info->bit_depth == 8) + { + if (row_info->color_type == PNG_COLOR_TYPE_RGB) + { + png_bytep rp; + png_uint_32 i; + + for (i = 0, rp = row; i < row_width; i++, rp += 3) + { + png_byte save = *rp; + *rp = *(rp + 2); + *(rp + 2) = save; + } + } + else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) + { + png_bytep rp; + png_uint_32 i; + + for (i = 0, rp = row; i < row_width; i++, rp += 4) + { + png_byte save = *rp; + *rp = *(rp + 2); + *(rp + 2) = save; + } + } + } + else if (row_info->bit_depth == 16) + { + if (row_info->color_type == PNG_COLOR_TYPE_RGB) + { + png_bytep rp; + png_uint_32 i; + + for (i = 0, rp = row; i < row_width; i++, rp += 6) + { + png_byte save = *rp; + *rp = *(rp + 4); + *(rp + 4) = save; + save = *(rp + 1); + *(rp + 1) = *(rp + 5); + *(rp + 5) = save; + } + } + else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) + { + png_bytep rp; + png_uint_32 i; + + for (i = 0, rp = row; i < row_width; i++, rp += 8) + { + png_byte save = *rp; + *rp = *(rp + 4); + *(rp + 4) = save; + save = *(rp + 1); + *(rp + 1) = *(rp + 5); + *(rp + 5) = save; + } + } + } + } +} +#endif /* PNG_READ_BGR_SUPPORTED or PNG_WRITE_BGR_SUPPORTED */ + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_LEGACY_SUPPORTED) +void PNGAPI +png_set_user_transform_info(png_structp png_ptr, png_voidp + user_transform_ptr, int user_transform_depth, int user_transform_channels) +{ + png_debug(1, "in png_set_user_transform_info"); + if (png_ptr == NULL) + return; +#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED) + png_ptr->user_transform_ptr = user_transform_ptr; + png_ptr->user_transform_depth = (png_byte)user_transform_depth; + png_ptr->user_transform_channels = (png_byte)user_transform_channels; +#else + if (user_transform_ptr || user_transform_depth || user_transform_channels) + png_warning(png_ptr, + "This version of libpng does not support user transform info"); +#endif +} +#endif + +/* This function returns a pointer to the user_transform_ptr associated with + * the user transform functions. The application should free any memory + * associated with this pointer before png_write_destroy and png_read_destroy + * are called. + */ +png_voidp PNGAPI +png_get_user_transform_ptr(png_structp png_ptr) +{ + if (png_ptr == NULL) + return (NULL); +#if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED) + return ((png_voidp)png_ptr->user_transform_ptr); +#else + return (NULL); +#endif +} +#endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */ diff --git a/Libraries/libpng/pngvcrd.cpp b/Libraries/libpng/pngvcrd.cpp new file mode 100644 index 0000000..ce4233e --- /dev/null +++ b/Libraries/libpng/pngvcrd.cpp @@ -0,0 +1 @@ +/* pnggvrd.c was removed from libpng-1.2.20. */ diff --git a/Libraries/libpng/pngwio.cpp b/Libraries/libpng/pngwio.cpp new file mode 100644 index 0000000..740b71d --- /dev/null +++ b/Libraries/libpng/pngwio.cpp @@ -0,0 +1,256 @@ + +/* pngwio.c - functions for data output + * + * Last changed in libpng 1.2.37 [June 4, 2009] + * For conditions of distribution and use, see copyright notice in png.h + * Copyright (c) 1998-2009 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This file provides a location for all output. Users who need + * special handling are expected to write functions that have the same + * arguments as these and perform similar functions, but that possibly + * use different output methods. Note that you shouldn't change these + * functions, but rather write replacement functions and then change + * them at run time with png_set_write_fn(...). + */ + +#define PNG_INTERNAL +#include "png.h" +#ifdef PNG_WRITE_SUPPORTED + +/* Write the data to whatever output you are using. The default routine + * writes to a file pointer. Note that this routine sometimes gets called + * with very small lengths, so you should implement some kind of simple + * buffering if you are using unbuffered writes. This should never be asked + * to write more than 64K on a 16 bit machine. + */ + +void /* PRIVATE */ +png_write_data(png_structp png_ptr, png_bytep data, png_size_t length) +{ + if (png_ptr->write_data_fn != NULL ) + (*(png_ptr->write_data_fn))(png_ptr, data, length); + else + png_error(png_ptr, "Call to NULL write function"); +} + +#if !defined(PNG_NO_STDIO) +/* This is the function that does the actual writing of data. If you are + * not writing to a standard C stream, you should create a replacement + * write_data function and use it at run time with png_set_write_fn(), rather + * than changing the library. + */ +#ifndef USE_FAR_KEYWORD +void PNGAPI +png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length) +{ + png_uint_32 check; + + if (png_ptr == NULL) + return; +#if defined(_WIN32_WCE) + if ( !WriteFile((HANDLE)(png_ptr->io_ptr), data, length, &check, NULL) ) + check = 0; +#else + check = fwrite(data, 1, length, (png_FILE_p)(png_ptr->io_ptr)); +#endif + if (check != length) + png_error(png_ptr, "Write Error"); +} +#else +/* This is the model-independent version. Since the standard I/O library + * can't handle far buffers in the medium and small models, we have to copy + * the data. + */ + +#define NEAR_BUF_SIZE 1024 +#define MIN(a,b) (a <= b ? a : b) + +void PNGAPI +png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length) +{ + png_uint_32 check; + png_byte *near_data; /* Needs to be "png_byte *" instead of "png_bytep" */ + png_FILE_p io_ptr; + + if (png_ptr == NULL) + return; + /* Check if data really is near. If so, use usual code. */ + near_data = (png_byte *)CVT_PTR_NOCHECK(data); + io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr); + if ((png_bytep)near_data == data) + { +#if defined(_WIN32_WCE) + if ( !WriteFile(io_ptr, near_data, length, &check, NULL) ) + check = 0; +#else + check = fwrite(near_data, 1, length, io_ptr); +#endif + } + else + { + png_byte buf[NEAR_BUF_SIZE]; + png_size_t written, remaining, err; + check = 0; + remaining = length; + do + { + written = MIN(NEAR_BUF_SIZE, remaining); + png_memcpy(buf, data, written); /* Copy far buffer to near buffer */ +#if defined(_WIN32_WCE) + if ( !WriteFile(io_ptr, buf, written, &err, NULL) ) + err = 0; +#else + err = fwrite(buf, 1, written, io_ptr); +#endif + if (err != written) + break; + + else + check += err; + + data += written; + remaining -= written; + } + while (remaining != 0); + } + if (check != length) + png_error(png_ptr, "Write Error"); +} + +#endif +#endif + +/* This function is called to output any data pending writing (normally + * to disk). After png_flush is called, there should be no data pending + * writing in any buffers. + */ +#if defined(PNG_WRITE_FLUSH_SUPPORTED) +void /* PRIVATE */ +png_flush(png_structp png_ptr) +{ + if (png_ptr->output_flush_fn != NULL) + (*(png_ptr->output_flush_fn))(png_ptr); +} + +#if !defined(PNG_NO_STDIO) +void PNGAPI +png_default_flush(png_structp png_ptr) +{ +#if !defined(_WIN32_WCE) + png_FILE_p io_ptr; +#endif + if (png_ptr == NULL) + return; +#if !defined(_WIN32_WCE) + io_ptr = (png_FILE_p)CVT_PTR((png_ptr->io_ptr)); + fflush(io_ptr); +#endif +} +#endif +#endif + +/* This function allows the application to supply new output functions for + * libpng if standard C streams aren't being used. + * + * This function takes as its arguments: + * png_ptr - pointer to a png output data structure + * io_ptr - pointer to user supplied structure containing info about + * the output functions. May be NULL. + * write_data_fn - pointer to a new output function that takes as its + * arguments a pointer to a png_struct, a pointer to + * data to be written, and a 32-bit unsigned int that is + * the number of bytes to be written. The new write + * function should call png_error(png_ptr, "Error msg") + * to exit and output any fatal error messages. May be + * NULL, in which case libpng's default function will + * be used. + * flush_data_fn - pointer to a new flush function that takes as its + * arguments a pointer to a png_struct. After a call to + * the flush function, there should be no data in any buffers + * or pending transmission. If the output method doesn't do + * any buffering of ouput, a function prototype must still be + * supplied although it doesn't have to do anything. If + * PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile + * time, output_flush_fn will be ignored, although it must be + * supplied for compatibility. May be NULL, in which case + * libpng's default function will be used, if + * PNG_WRITE_FLUSH_SUPPORTED is defined. This is not + * a good idea if io_ptr does not point to a standard + * *FILE structure. + */ +void PNGAPI +png_set_write_fn(png_structp png_ptr, png_voidp io_ptr, + png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn) +{ + if (png_ptr == NULL) + return; + + png_ptr->io_ptr = io_ptr; + +#if !defined(PNG_NO_STDIO) + if (write_data_fn != NULL) + png_ptr->write_data_fn = write_data_fn; + + else + png_ptr->write_data_fn = png_default_write_data; +#else + png_ptr->write_data_fn = write_data_fn; +#endif + +#if defined(PNG_WRITE_FLUSH_SUPPORTED) +#if !defined(PNG_NO_STDIO) + if (output_flush_fn != NULL) + png_ptr->output_flush_fn = output_flush_fn; + + else + png_ptr->output_flush_fn = png_default_flush; +#else + png_ptr->output_flush_fn = output_flush_fn; +#endif +#endif /* PNG_WRITE_FLUSH_SUPPORTED */ + + /* It is an error to read while writing a png file */ + if (png_ptr->read_data_fn != NULL) + { + png_ptr->read_data_fn = NULL; + png_warning(png_ptr, + "Attempted to set both read_data_fn and write_data_fn in"); + png_warning(png_ptr, + "the same structure. Resetting read_data_fn to NULL."); + } +} + +#if defined(USE_FAR_KEYWORD) +#if defined(_MSC_VER) +void *png_far_to_near(png_structp png_ptr, png_voidp ptr, int check) +{ + void *near_ptr; + void FAR *far_ptr; + FP_OFF(near_ptr) = FP_OFF(ptr); + far_ptr = (void FAR *)near_ptr; + + if (check != 0) + if (FP_SEG(ptr) != FP_SEG(far_ptr)) + png_error(png_ptr, "segment lost in conversion"); + + return(near_ptr); +} +# else +void *png_far_to_near(png_structp png_ptr, png_voidp ptr, int check) +{ + void *near_ptr; + void FAR *far_ptr; + near_ptr = (void FAR *)ptr; + far_ptr = (void FAR *)near_ptr; + + if (check != 0) + if (far_ptr != ptr) + png_error(png_ptr, "segment lost in conversion"); + + return(near_ptr); +} +# endif +# endif +#endif /* PNG_WRITE_SUPPORTED */ diff --git a/Libraries/libpng/pngwrite.cpp b/Libraries/libpng/pngwrite.cpp new file mode 100644 index 0000000..bd6263c --- /dev/null +++ b/Libraries/libpng/pngwrite.cpp @@ -0,0 +1,1558 @@ + +/* pngwrite.c - general routines to write a PNG file + * + * Last changed in libpng 1.2.37 [June 4, 2009] + * For conditions of distribution and use, see copyright notice in png.h + * Copyright (c) 1998-2009 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + */ + +/* Get internal access to png.h */ +#define PNG_INTERNAL +#include "png.h" +#ifdef PNG_WRITE_SUPPORTED + +/* Writes all the PNG information. This is the suggested way to use the + * library. If you have a new chunk to add, make a function to write it, + * and put it in the correct location here. If you want the chunk written + * after the image data, put it in png_write_end(). I strongly encourage + * you to supply a PNG_INFO_ flag, and check info_ptr->valid before writing + * the chunk, as that will keep the code from breaking if you want to just + * write a plain PNG file. If you have long comments, I suggest writing + * them in png_write_end(), and compressing them. + */ +void PNGAPI +png_write_info_before_PLTE(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_write_info_before_PLTE"); + if (png_ptr == NULL || info_ptr == NULL) + return; + if (!(png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE)) + { + png_write_sig(png_ptr); /* Write PNG signature */ +#if defined(PNG_MNG_FEATURES_SUPPORTED) + if ((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE)&&(png_ptr->mng_features_permitted)) + { + png_warning(png_ptr, "MNG features are not allowed in a PNG datastream"); + png_ptr->mng_features_permitted=0; + } +#endif + /* Write IHDR information. */ + png_write_IHDR(png_ptr, info_ptr->width, info_ptr->height, + info_ptr->bit_depth, info_ptr->color_type, info_ptr->compression_type, + info_ptr->filter_type, +#if defined(PNG_WRITE_INTERLACING_SUPPORTED) + info_ptr->interlace_type); +#else + 0); +#endif + /* The rest of these check to see if the valid field has the appropriate + * flag set, and if it does, writes the chunk. + */ +#if defined(PNG_WRITE_gAMA_SUPPORTED) + if (info_ptr->valid & PNG_INFO_gAMA) + { +# ifdef PNG_FLOATING_POINT_SUPPORTED + png_write_gAMA(png_ptr, info_ptr->gamma); +#else +#ifdef PNG_FIXED_POINT_SUPPORTED + png_write_gAMA_fixed(png_ptr, info_ptr->int_gamma); +# endif +#endif + } +#endif +#if defined(PNG_WRITE_sRGB_SUPPORTED) + if (info_ptr->valid & PNG_INFO_sRGB) + png_write_sRGB(png_ptr, (int)info_ptr->srgb_intent); +#endif +#if defined(PNG_WRITE_iCCP_SUPPORTED) + if (info_ptr->valid & PNG_INFO_iCCP) + png_write_iCCP(png_ptr, info_ptr->iccp_name, PNG_COMPRESSION_TYPE_BASE, + info_ptr->iccp_profile, (int)info_ptr->iccp_proflen); +#endif +#if defined(PNG_WRITE_sBIT_SUPPORTED) + if (info_ptr->valid & PNG_INFO_sBIT) + png_write_sBIT(png_ptr, &(info_ptr->sig_bit), info_ptr->color_type); +#endif +#if defined(PNG_WRITE_cHRM_SUPPORTED) + if (info_ptr->valid & PNG_INFO_cHRM) + { +#ifdef PNG_FLOATING_POINT_SUPPORTED + png_write_cHRM(png_ptr, + info_ptr->x_white, info_ptr->y_white, + info_ptr->x_red, info_ptr->y_red, + info_ptr->x_green, info_ptr->y_green, + info_ptr->x_blue, info_ptr->y_blue); +#else +# ifdef PNG_FIXED_POINT_SUPPORTED + png_write_cHRM_fixed(png_ptr, + info_ptr->int_x_white, info_ptr->int_y_white, + info_ptr->int_x_red, info_ptr->int_y_red, + info_ptr->int_x_green, info_ptr->int_y_green, + info_ptr->int_x_blue, info_ptr->int_y_blue); +# endif +#endif + } +#endif +#if defined(PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED) + if (info_ptr->unknown_chunks_num) + { + png_unknown_chunk *up; + + png_debug(5, "writing extra chunks"); + + for (up = info_ptr->unknown_chunks; + up < info_ptr->unknown_chunks + info_ptr->unknown_chunks_num; + up++) + { + int keep=png_handle_as_unknown(png_ptr, up->name); + if (keep != PNG_HANDLE_CHUNK_NEVER && + up->location && !(up->location & PNG_HAVE_PLTE) && + !(up->location & PNG_HAVE_IDAT) && + ((up->name[3] & 0x20) || keep == PNG_HANDLE_CHUNK_ALWAYS || + (png_ptr->flags & PNG_FLAG_KEEP_UNSAFE_CHUNKS))) + { + if (up->size == 0) + png_warning(png_ptr, "Writing zero-length unknown chunk"); + png_write_chunk(png_ptr, up->name, up->data, up->size); + } + } + } +#endif + png_ptr->mode |= PNG_WROTE_INFO_BEFORE_PLTE; + } +} + +void PNGAPI +png_write_info(png_structp png_ptr, png_infop info_ptr) +{ +#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED) + int i; +#endif + + png_debug(1, "in png_write_info"); + + if (png_ptr == NULL || info_ptr == NULL) + return; + + png_write_info_before_PLTE(png_ptr, info_ptr); + + if (info_ptr->valid & PNG_INFO_PLTE) + png_write_PLTE(png_ptr, info_ptr->palette, + (png_uint_32)info_ptr->num_palette); + else if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) + png_error(png_ptr, "Valid palette required for paletted images"); + +#if defined(PNG_WRITE_tRNS_SUPPORTED) + if (info_ptr->valid & PNG_INFO_tRNS) + { +#if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) + /* Invert the alpha channel (in tRNS) */ + if ((png_ptr->transformations & PNG_INVERT_ALPHA) && + info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) + { + int j; + for (j=0; j<(int)info_ptr->num_trans; j++) + info_ptr->trans[j] = (png_byte)(255 - info_ptr->trans[j]); + } +#endif + png_write_tRNS(png_ptr, info_ptr->trans, &(info_ptr->trans_values), + info_ptr->num_trans, info_ptr->color_type); + } +#endif +#if defined(PNG_WRITE_bKGD_SUPPORTED) + if (info_ptr->valid & PNG_INFO_bKGD) + png_write_bKGD(png_ptr, &(info_ptr->background), info_ptr->color_type); +#endif +#if defined(PNG_WRITE_hIST_SUPPORTED) + if (info_ptr->valid & PNG_INFO_hIST) + png_write_hIST(png_ptr, info_ptr->hist, info_ptr->num_palette); +#endif +#if defined(PNG_WRITE_oFFs_SUPPORTED) + if (info_ptr->valid & PNG_INFO_oFFs) + png_write_oFFs(png_ptr, info_ptr->x_offset, info_ptr->y_offset, + info_ptr->offset_unit_type); +#endif +#if defined(PNG_WRITE_pCAL_SUPPORTED) + if (info_ptr->valid & PNG_INFO_pCAL) + png_write_pCAL(png_ptr, info_ptr->pcal_purpose, info_ptr->pcal_X0, + info_ptr->pcal_X1, info_ptr->pcal_type, info_ptr->pcal_nparams, + info_ptr->pcal_units, info_ptr->pcal_params); +#endif + +#if defined(PNG_sCAL_SUPPORTED) + if (info_ptr->valid & PNG_INFO_sCAL) +#if defined(PNG_WRITE_sCAL_SUPPORTED) +#if defined(PNG_FLOATING_POINT_SUPPORTED) && !defined(PNG_NO_STDIO) + png_write_sCAL(png_ptr, (int)info_ptr->scal_unit, + info_ptr->scal_pixel_width, info_ptr->scal_pixel_height); +#else /* !FLOATING_POINT */ +#ifdef PNG_FIXED_POINT_SUPPORTED + png_write_sCAL_s(png_ptr, (int)info_ptr->scal_unit, + info_ptr->scal_s_width, info_ptr->scal_s_height); +#endif /* FIXED_POINT */ +#endif /* FLOATING_POINT */ +#else /* !WRITE_sCAL */ + png_warning(png_ptr, + "png_write_sCAL not supported; sCAL chunk not written."); +#endif /* WRITE_sCAL */ +#endif /* sCAL */ + +#if defined(PNG_WRITE_pHYs_SUPPORTED) + if (info_ptr->valid & PNG_INFO_pHYs) + png_write_pHYs(png_ptr, info_ptr->x_pixels_per_unit, + info_ptr->y_pixels_per_unit, info_ptr->phys_unit_type); +#endif /* pHYs */ + +#if defined(PNG_WRITE_tIME_SUPPORTED) + if (info_ptr->valid & PNG_INFO_tIME) + { + png_write_tIME(png_ptr, &(info_ptr->mod_time)); + png_ptr->mode |= PNG_WROTE_tIME; + } +#endif /* tIME */ + +#if defined(PNG_WRITE_sPLT_SUPPORTED) + if (info_ptr->valid & PNG_INFO_sPLT) + for (i = 0; i < (int)info_ptr->splt_palettes_num; i++) + png_write_sPLT(png_ptr, info_ptr->splt_palettes + i); +#endif /* sPLT */ + +#if defined(PNG_WRITE_TEXT_SUPPORTED) + /* Check to see if we need to write text chunks */ + for (i = 0; i < info_ptr->num_text; i++) + { + png_debug2(2, "Writing header text chunk %d, type %d", i, + info_ptr->text[i].compression); + /* An internationalized chunk? */ + if (info_ptr->text[i].compression > 0) + { +#if defined(PNG_WRITE_iTXt_SUPPORTED) + /* Write international chunk */ + png_write_iTXt(png_ptr, + info_ptr->text[i].compression, + info_ptr->text[i].key, + info_ptr->text[i].lang, + info_ptr->text[i].lang_key, + info_ptr->text[i].text); +#else + png_warning(png_ptr, "Unable to write international text"); +#endif + /* Mark this chunk as written */ + info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR; + } + /* If we want a compressed text chunk */ + else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_zTXt) + { +#if defined(PNG_WRITE_zTXt_SUPPORTED) + /* Write compressed chunk */ + png_write_zTXt(png_ptr, info_ptr->text[i].key, + info_ptr->text[i].text, 0, + info_ptr->text[i].compression); +#else + png_warning(png_ptr, "Unable to write compressed text"); +#endif + /* Mark this chunk as written */ + info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_zTXt_WR; + } + else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_NONE) + { +#if defined(PNG_WRITE_tEXt_SUPPORTED) + /* Write uncompressed chunk */ + png_write_tEXt(png_ptr, info_ptr->text[i].key, + info_ptr->text[i].text, + 0); + /* Mark this chunk as written */ + info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR; +#else + /* Can't get here */ + png_warning(png_ptr, "Unable to write uncompressed text"); +#endif + } + } +#endif /* tEXt */ + +#if defined(PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED) + if (info_ptr->unknown_chunks_num) + { + png_unknown_chunk *up; + + png_debug(5, "writing extra chunks"); + + for (up = info_ptr->unknown_chunks; + up < info_ptr->unknown_chunks + info_ptr->unknown_chunks_num; + up++) + { + int keep=png_handle_as_unknown(png_ptr, up->name); + if (keep != PNG_HANDLE_CHUNK_NEVER && + up->location && (up->location & PNG_HAVE_PLTE) && + !(up->location & PNG_HAVE_IDAT) && + ((up->name[3] & 0x20) || keep == PNG_HANDLE_CHUNK_ALWAYS || + (png_ptr->flags & PNG_FLAG_KEEP_UNSAFE_CHUNKS))) + { + png_write_chunk(png_ptr, up->name, up->data, up->size); + } + } + } +#endif +} + +/* Writes the end of the PNG file. If you don't want to write comments or + * time information, you can pass NULL for info. If you already wrote these + * in png_write_info(), do not write them again here. If you have long + * comments, I suggest writing them here, and compressing them. + */ +void PNGAPI +png_write_end(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_write_end"); + if (png_ptr == NULL) + return; + if (!(png_ptr->mode & PNG_HAVE_IDAT)) + png_error(png_ptr, "No IDATs written into file"); + + /* See if user wants us to write information chunks */ + if (info_ptr != NULL) + { +#if defined(PNG_WRITE_TEXT_SUPPORTED) + int i; /* Local index variable */ +#endif +#if defined(PNG_WRITE_tIME_SUPPORTED) + /* Check to see if user has supplied a time chunk */ + if ((info_ptr->valid & PNG_INFO_tIME) && + !(png_ptr->mode & PNG_WROTE_tIME)) + png_write_tIME(png_ptr, &(info_ptr->mod_time)); +#endif +#if defined(PNG_WRITE_TEXT_SUPPORTED) + /* Loop through comment chunks */ + for (i = 0; i < info_ptr->num_text; i++) + { + png_debug2(2, "Writing trailer text chunk %d, type %d", i, + info_ptr->text[i].compression); + /* An internationalized chunk? */ + if (info_ptr->text[i].compression > 0) + { +#if defined(PNG_WRITE_iTXt_SUPPORTED) + /* Write international chunk */ + png_write_iTXt(png_ptr, + info_ptr->text[i].compression, + info_ptr->text[i].key, + info_ptr->text[i].lang, + info_ptr->text[i].lang_key, + info_ptr->text[i].text); +#else + png_warning(png_ptr, "Unable to write international text"); +#endif + /* Mark this chunk as written */ + info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR; + } + else if (info_ptr->text[i].compression >= PNG_TEXT_COMPRESSION_zTXt) + { +#if defined(PNG_WRITE_zTXt_SUPPORTED) + /* Write compressed chunk */ + png_write_zTXt(png_ptr, info_ptr->text[i].key, + info_ptr->text[i].text, 0, + info_ptr->text[i].compression); +#else + png_warning(png_ptr, "Unable to write compressed text"); +#endif + /* Mark this chunk as written */ + info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_zTXt_WR; + } + else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_NONE) + { +#if defined(PNG_WRITE_tEXt_SUPPORTED) + /* Write uncompressed chunk */ + png_write_tEXt(png_ptr, info_ptr->text[i].key, + info_ptr->text[i].text, 0); +#else + png_warning(png_ptr, "Unable to write uncompressed text"); +#endif + + /* Mark this chunk as written */ + info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR; + } + } +#endif +#if defined(PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED) + if (info_ptr->unknown_chunks_num) + { + png_unknown_chunk *up; + + png_debug(5, "writing extra chunks"); + + for (up = info_ptr->unknown_chunks; + up < info_ptr->unknown_chunks + info_ptr->unknown_chunks_num; + up++) + { + int keep=png_handle_as_unknown(png_ptr, up->name); + if (keep != PNG_HANDLE_CHUNK_NEVER && + up->location && (up->location & PNG_AFTER_IDAT) && + ((up->name[3] & 0x20) || keep == PNG_HANDLE_CHUNK_ALWAYS || + (png_ptr->flags & PNG_FLAG_KEEP_UNSAFE_CHUNKS))) + { + png_write_chunk(png_ptr, up->name, up->data, up->size); + } + } + } +#endif + } + + png_ptr->mode |= PNG_AFTER_IDAT; + + /* Write end of PNG file */ + png_write_IEND(png_ptr); + /* This flush, added in libpng-1.0.8, removed from libpng-1.0.9beta03, + * and restored again in libpng-1.2.30, may cause some applications that + * do not set png_ptr->output_flush_fn to crash. If your application + * experiences a problem, please try building libpng with + * PNG_WRITE_FLUSH_AFTER_IEND_SUPPORTED defined, and report the event to + * png-mng-implement at lists.sf.net . This kludge will be removed + * from libpng-1.4.0. + */ +#if defined(PNG_WRITE_FLUSH_SUPPORTED) && \ + defined(PNG_WRITE_FLUSH_AFTER_IEND_SUPPORTED) + png_flush(png_ptr); +#endif +} + +#if defined(PNG_WRITE_tIME_SUPPORTED) +#if !defined(_WIN32_WCE) +/* "time.h" functions are not supported on WindowsCE */ +void PNGAPI +png_convert_from_struct_tm(png_timep ptime, struct tm FAR * ttime) +{ + png_debug(1, "in png_convert_from_struct_tm"); + ptime->year = (png_uint_16)(1900 + ttime->tm_year); + ptime->month = (png_byte)(ttime->tm_mon + 1); + ptime->day = (png_byte)ttime->tm_mday; + ptime->hour = (png_byte)ttime->tm_hour; + ptime->minute = (png_byte)ttime->tm_min; + ptime->second = (png_byte)ttime->tm_sec; +} + +void PNGAPI +png_convert_from_time_t(png_timep ptime, time_t ttime) +{ + struct tm *tbuf; + + png_debug(1, "in png_convert_from_time_t"); + tbuf = gmtime(&ttime); + png_convert_from_struct_tm(ptime, tbuf); +} +#endif +#endif + +/* Initialize png_ptr structure, and allocate any memory needed */ +png_structp PNGAPI +png_create_write_struct(png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn) +{ +#ifdef PNG_USER_MEM_SUPPORTED + return (png_create_write_struct_2(user_png_ver, error_ptr, error_fn, + warn_fn, png_voidp_NULL, png_malloc_ptr_NULL, png_free_ptr_NULL)); +} + +/* Alternate initialize png_ptr structure, and allocate any memory needed */ +png_structp PNGAPI +png_create_write_struct_2(png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, + png_malloc_ptr malloc_fn, png_free_ptr free_fn) +{ +#endif /* PNG_USER_MEM_SUPPORTED */ +#ifdef PNG_SETJMP_SUPPORTED + volatile +#endif + png_structp png_ptr; +#ifdef PNG_SETJMP_SUPPORTED +#ifdef USE_FAR_KEYWORD + jmp_buf jmpbuf; +#endif +#endif + int i; + png_debug(1, "in png_create_write_struct"); +#ifdef PNG_USER_MEM_SUPPORTED + png_ptr = (png_structp)png_create_struct_2(PNG_STRUCT_PNG, + (png_malloc_ptr)malloc_fn, (png_voidp)mem_ptr); +#else + png_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG); +#endif /* PNG_USER_MEM_SUPPORTED */ + if (png_ptr == NULL) + return (NULL); + + /* Added at libpng-1.2.6 */ +#ifdef PNG_SET_USER_LIMITS_SUPPORTED + png_ptr->user_width_max=PNG_USER_WIDTH_MAX; + png_ptr->user_height_max=PNG_USER_HEIGHT_MAX; +#endif + +#ifdef PNG_SETJMP_SUPPORTED +#ifdef USE_FAR_KEYWORD + if (setjmp(jmpbuf)) +#else + if (setjmp(png_ptr->jmpbuf)) +#endif + { + png_free(png_ptr, png_ptr->zbuf); + png_ptr->zbuf=NULL; + png_destroy_struct(png_ptr); + return (NULL); + } +#ifdef USE_FAR_KEYWORD + png_memcpy(png_ptr->jmpbuf, jmpbuf, png_sizeof(jmp_buf)); +#endif +#endif + +#ifdef PNG_USER_MEM_SUPPORTED + png_set_mem_fn(png_ptr, mem_ptr, malloc_fn, free_fn); +#endif /* PNG_USER_MEM_SUPPORTED */ + png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn); + + if (user_png_ver) + { + i=0; + do + { + if (user_png_ver[i] != png_libpng_ver[i]) + png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH; + } while (png_libpng_ver[i++]); + } + + if (png_ptr->flags & PNG_FLAG_LIBRARY_MISMATCH) + { + /* Libpng 0.90 and later are binary incompatible with libpng 0.89, so + * we must recompile any applications that use any older library version. + * For versions after libpng 1.0, we will be compatible, so we need + * only check the first digit. + */ + if (user_png_ver == NULL || user_png_ver[0] != png_libpng_ver[0] || + (user_png_ver[0] == '1' && user_png_ver[2] != png_libpng_ver[2]) || + (user_png_ver[0] == '0' && user_png_ver[2] < '9')) + { +#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE) + char msg[80]; + if (user_png_ver) + { + png_snprintf(msg, 80, + "Application was compiled with png.h from libpng-%.20s", + user_png_ver); + png_warning(png_ptr, msg); + } + png_snprintf(msg, 80, + "Application is running with png.c from libpng-%.20s", + png_libpng_ver); + png_warning(png_ptr, msg); +#endif +#ifdef PNG_ERROR_NUMBERS_SUPPORTED + png_ptr->flags=0; +#endif + png_error(png_ptr, + "Incompatible libpng version in application and library"); + } + } + + /* Initialize zbuf - compression buffer */ + png_ptr->zbuf_size = PNG_ZBUF_SIZE; + png_ptr->zbuf = (png_bytep)png_malloc(png_ptr, + (png_uint_32)png_ptr->zbuf_size); + + png_set_write_fn(png_ptr, png_voidp_NULL, png_rw_ptr_NULL, + png_flush_ptr_NULL); + +#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) + png_set_filter_heuristics(png_ptr, PNG_FILTER_HEURISTIC_DEFAULT, + 1, png_doublep_NULL, png_doublep_NULL); +#endif + +#ifdef PNG_SETJMP_SUPPORTED +/* Applications that neglect to set up their own setjmp() and then encounter + a png_error() will longjmp here. Since the jmpbuf is then meaningless we + abort instead of returning. */ +#ifdef USE_FAR_KEYWORD + if (setjmp(jmpbuf)) + PNG_ABORT(); + png_memcpy(png_ptr->jmpbuf, jmpbuf, png_sizeof(jmp_buf)); +#else + if (setjmp(png_ptr->jmpbuf)) + PNG_ABORT(); +#endif +#endif + return (png_ptr); +} + +/* Initialize png_ptr structure, and allocate any memory needed */ +#if defined(PNG_1_0_X) || defined(PNG_1_2_X) +/* Deprecated. */ +#undef png_write_init +void PNGAPI +png_write_init(png_structp png_ptr) +{ + /* We only come here via pre-1.0.7-compiled applications */ + png_write_init_2(png_ptr, "1.0.6 or earlier", 0, 0); +} + +void PNGAPI +png_write_init_2(png_structp png_ptr, png_const_charp user_png_ver, + png_size_t png_struct_size, png_size_t png_info_size) +{ + /* We only come here via pre-1.0.12-compiled applications */ + if (png_ptr == NULL) return; +#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE) + if (png_sizeof(png_struct) > png_struct_size || + png_sizeof(png_info) > png_info_size) + { + char msg[80]; + png_ptr->warning_fn=NULL; + if (user_png_ver) + { + png_snprintf(msg, 80, + "Application was compiled with png.h from libpng-%.20s", + user_png_ver); + png_warning(png_ptr, msg); + } + png_snprintf(msg, 80, + "Application is running with png.c from libpng-%.20s", + png_libpng_ver); + png_warning(png_ptr, msg); + } +#endif + if (png_sizeof(png_struct) > png_struct_size) + { + png_ptr->error_fn=NULL; +#ifdef PNG_ERROR_NUMBERS_SUPPORTED + png_ptr->flags=0; +#endif + png_error(png_ptr, + "The png struct allocated by the application for writing is too small."); + } + if (png_sizeof(png_info) > png_info_size) + { + png_ptr->error_fn=NULL; +#ifdef PNG_ERROR_NUMBERS_SUPPORTED + png_ptr->flags=0; +#endif + png_error(png_ptr, + "The info struct allocated by the application for writing is too small."); + } + png_write_init_3(&png_ptr, user_png_ver, png_struct_size); +} +#endif /* PNG_1_0_X || PNG_1_2_X */ + + +void PNGAPI +png_write_init_3(png_structpp ptr_ptr, png_const_charp user_png_ver, + png_size_t png_struct_size) +{ + png_structp png_ptr=*ptr_ptr; +#ifdef PNG_SETJMP_SUPPORTED + jmp_buf tmp_jmp; /* To save current jump buffer */ +#endif + + int i = 0; + + if (png_ptr == NULL) + return; + + do + { + if (user_png_ver[i] != png_libpng_ver[i]) + { +#ifdef PNG_LEGACY_SUPPORTED + png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH; +#else + png_ptr->warning_fn=NULL; + png_warning(png_ptr, + "Application uses deprecated png_write_init() and should be recompiled."); + break; +#endif + } + } while (png_libpng_ver[i++]); + + png_debug(1, "in png_write_init_3"); + +#ifdef PNG_SETJMP_SUPPORTED + /* Save jump buffer and error functions */ + png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof(jmp_buf)); +#endif + + if (png_sizeof(png_struct) > png_struct_size) + { + png_destroy_struct(png_ptr); + png_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG); + *ptr_ptr = png_ptr; + } + + /* Reset all variables to 0 */ + png_memset(png_ptr, 0, png_sizeof(png_struct)); + + /* Added at libpng-1.2.6 */ +#ifdef PNG_SET_USER_LIMITS_SUPPORTED + png_ptr->user_width_max=PNG_USER_WIDTH_MAX; + png_ptr->user_height_max=PNG_USER_HEIGHT_MAX; +#endif + +#ifdef PNG_SETJMP_SUPPORTED + /* Restore jump buffer */ + png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof(jmp_buf)); +#endif + + png_set_write_fn(png_ptr, png_voidp_NULL, png_rw_ptr_NULL, + png_flush_ptr_NULL); + + /* Initialize zbuf - compression buffer */ + png_ptr->zbuf_size = PNG_ZBUF_SIZE; + png_ptr->zbuf = (png_bytep)png_malloc(png_ptr, + (png_uint_32)png_ptr->zbuf_size); + +#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) + png_set_filter_heuristics(png_ptr, PNG_FILTER_HEURISTIC_DEFAULT, + 1, png_doublep_NULL, png_doublep_NULL); +#endif +} + +/* Write a few rows of image data. If the image is interlaced, + * either you will have to write the 7 sub images, or, if you + * have called png_set_interlace_handling(), you will have to + * "write" the image seven times. + */ +void PNGAPI +png_write_rows(png_structp png_ptr, png_bytepp row, + png_uint_32 num_rows) +{ + png_uint_32 i; /* Row counter */ + png_bytepp rp; /* Row pointer */ + + png_debug(1, "in png_write_rows"); + + if (png_ptr == NULL) + return; + + /* Loop through the rows */ + for (i = 0, rp = row; i < num_rows; i++, rp++) + { + png_write_row(png_ptr, *rp); + } +} + +/* Write the image. You only need to call this function once, even + * if you are writing an interlaced image. + */ +void PNGAPI +png_write_image(png_structp png_ptr, png_bytepp image) +{ + png_uint_32 i; /* Row index */ + int pass, num_pass; /* Pass variables */ + png_bytepp rp; /* Points to current row */ + + if (png_ptr == NULL) + return; + + png_debug(1, "in png_write_image"); +#if defined(PNG_WRITE_INTERLACING_SUPPORTED) + /* Initialize interlace handling. If image is not interlaced, + * this will set pass to 1 + */ + num_pass = png_set_interlace_handling(png_ptr); +#else + num_pass = 1; +#endif + /* Loop through passes */ + for (pass = 0; pass < num_pass; pass++) + { + /* Loop through image */ + for (i = 0, rp = image; i < png_ptr->height; i++, rp++) + { + png_write_row(png_ptr, *rp); + } + } +} + +/* Called by user to write a row of image data */ +void PNGAPI +png_write_row(png_structp png_ptr, png_bytep row) +{ + if (png_ptr == NULL) + return; + png_debug2(1, "in png_write_row (row %ld, pass %d)", + png_ptr->row_number, png_ptr->pass); + + /* Initialize transformations and other stuff if first time */ + if (png_ptr->row_number == 0 && png_ptr->pass == 0) + { + /* Make sure we wrote the header info */ + if (!(png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE)) + png_error(png_ptr, + "png_write_info was never called before png_write_row."); + + /* Check for transforms that have been set but were defined out */ +#if !defined(PNG_WRITE_INVERT_SUPPORTED) && defined(PNG_READ_INVERT_SUPPORTED) + if (png_ptr->transformations & PNG_INVERT_MONO) + png_warning(png_ptr, "PNG_WRITE_INVERT_SUPPORTED is not defined."); +#endif +#if !defined(PNG_WRITE_FILLER_SUPPORTED) && defined(PNG_READ_FILLER_SUPPORTED) + if (png_ptr->transformations & PNG_FILLER) + png_warning(png_ptr, "PNG_WRITE_FILLER_SUPPORTED is not defined."); +#endif +#if !defined(PNG_WRITE_PACKSWAP_SUPPORTED) && defined(PNG_READ_PACKSWAP_SUPPORTED) + if (png_ptr->transformations & PNG_PACKSWAP) + png_warning(png_ptr, "PNG_WRITE_PACKSWAP_SUPPORTED is not defined."); +#endif +#if !defined(PNG_WRITE_PACK_SUPPORTED) && defined(PNG_READ_PACK_SUPPORTED) + if (png_ptr->transformations & PNG_PACK) + png_warning(png_ptr, "PNG_WRITE_PACK_SUPPORTED is not defined."); +#endif +#if !defined(PNG_WRITE_SHIFT_SUPPORTED) && defined(PNG_READ_SHIFT_SUPPORTED) + if (png_ptr->transformations & PNG_SHIFT) + png_warning(png_ptr, "PNG_WRITE_SHIFT_SUPPORTED is not defined."); +#endif +#if !defined(PNG_WRITE_BGR_SUPPORTED) && defined(PNG_READ_BGR_SUPPORTED) + if (png_ptr->transformations & PNG_BGR) + png_warning(png_ptr, "PNG_WRITE_BGR_SUPPORTED is not defined."); +#endif +#if !defined(PNG_WRITE_SWAP_SUPPORTED) && defined(PNG_READ_SWAP_SUPPORTED) + if (png_ptr->transformations & PNG_SWAP_BYTES) + png_warning(png_ptr, "PNG_WRITE_SWAP_SUPPORTED is not defined."); +#endif + + png_write_start_row(png_ptr); + } + +#if defined(PNG_WRITE_INTERLACING_SUPPORTED) + /* If interlaced and not interested in row, return */ + if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE)) + { + switch (png_ptr->pass) + { + case 0: + if (png_ptr->row_number & 0x07) + { + png_write_finish_row(png_ptr); + return; + } + break; + case 1: + if ((png_ptr->row_number & 0x07) || png_ptr->width < 5) + { + png_write_finish_row(png_ptr); + return; + } + break; + case 2: + if ((png_ptr->row_number & 0x07) != 4) + { + png_write_finish_row(png_ptr); + return; + } + break; + case 3: + if ((png_ptr->row_number & 0x03) || png_ptr->width < 3) + { + png_write_finish_row(png_ptr); + return; + } + break; + case 4: + if ((png_ptr->row_number & 0x03) != 2) + { + png_write_finish_row(png_ptr); + return; + } + break; + case 5: + if ((png_ptr->row_number & 0x01) || png_ptr->width < 2) + { + png_write_finish_row(png_ptr); + return; + } + break; + case 6: + if (!(png_ptr->row_number & 0x01)) + { + png_write_finish_row(png_ptr); + return; + } + break; + } + } +#endif + + /* Set up row info for transformations */ + png_ptr->row_info.color_type = png_ptr->color_type; + png_ptr->row_info.width = png_ptr->usr_width; + png_ptr->row_info.channels = png_ptr->usr_channels; + png_ptr->row_info.bit_depth = png_ptr->usr_bit_depth; + png_ptr->row_info.pixel_depth = (png_byte)(png_ptr->row_info.bit_depth * + png_ptr->row_info.channels); + + png_ptr->row_info.rowbytes = PNG_ROWBYTES(png_ptr->row_info.pixel_depth, + png_ptr->row_info.width); + + png_debug1(3, "row_info->color_type = %d", png_ptr->row_info.color_type); + png_debug1(3, "row_info->width = %lu", png_ptr->row_info.width); + png_debug1(3, "row_info->channels = %d", png_ptr->row_info.channels); + png_debug1(3, "row_info->bit_depth = %d", png_ptr->row_info.bit_depth); + png_debug1(3, "row_info->pixel_depth = %d", png_ptr->row_info.pixel_depth); + png_debug1(3, "row_info->rowbytes = %lu", png_ptr->row_info.rowbytes); + + /* Copy user's row into buffer, leaving room for filter byte. */ + png_memcpy_check(png_ptr, png_ptr->row_buf + 1, row, + png_ptr->row_info.rowbytes); + +#if defined(PNG_WRITE_INTERLACING_SUPPORTED) + /* Handle interlacing */ + if (png_ptr->interlaced && png_ptr->pass < 6 && + (png_ptr->transformations & PNG_INTERLACE)) + { + png_do_write_interlace(&(png_ptr->row_info), + png_ptr->row_buf + 1, png_ptr->pass); + /* This should always get caught above, but still ... */ + if (!(png_ptr->row_info.width)) + { + png_write_finish_row(png_ptr); + return; + } + } +#endif + + /* Handle other transformations */ + if (png_ptr->transformations) + png_do_write_transformations(png_ptr); + +#if defined(PNG_MNG_FEATURES_SUPPORTED) + /* Write filter_method 64 (intrapixel differencing) only if + * 1. Libpng was compiled with PNG_MNG_FEATURES_SUPPORTED and + * 2. Libpng did not write a PNG signature (this filter_method is only + * used in PNG datastreams that are embedded in MNG datastreams) and + * 3. The application called png_permit_mng_features with a mask that + * included PNG_FLAG_MNG_FILTER_64 and + * 4. The filter_method is 64 and + * 5. The color_type is RGB or RGBA + */ + if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) && + (png_ptr->filter_type == PNG_INTRAPIXEL_DIFFERENCING)) + { + /* Intrapixel differencing */ + png_do_write_intrapixel(&(png_ptr->row_info), png_ptr->row_buf + 1); + } +#endif + + /* Find a filter if necessary, filter the row and write it out. */ + png_write_find_filter(png_ptr, &(png_ptr->row_info)); + + if (png_ptr->write_row_fn != NULL) + (*(png_ptr->write_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass); +} + +#if defined(PNG_WRITE_FLUSH_SUPPORTED) +/* Set the automatic flush interval or 0 to turn flushing off */ +void PNGAPI +png_set_flush(png_structp png_ptr, int nrows) +{ + png_debug(1, "in png_set_flush"); + if (png_ptr == NULL) + return; + png_ptr->flush_dist = (nrows < 0 ? 0 : nrows); +} + +/* Flush the current output buffers now */ +void PNGAPI +png_write_flush(png_structp png_ptr) +{ + int wrote_IDAT; + + png_debug(1, "in png_write_flush"); + if (png_ptr == NULL) + return; + /* We have already written out all of the data */ + if (png_ptr->row_number >= png_ptr->num_rows) + return; + + do + { + int ret; + + /* Compress the data */ + ret = deflate(&png_ptr->zstream, Z_SYNC_FLUSH); + wrote_IDAT = 0; + + /* Check for compression errors */ + if (ret != Z_OK) + { + if (png_ptr->zstream.msg != NULL) + png_error(png_ptr, png_ptr->zstream.msg); + else + png_error(png_ptr, "zlib error"); + } + + if (!(png_ptr->zstream.avail_out)) + { + /* Write the IDAT and reset the zlib output buffer */ + png_write_IDAT(png_ptr, png_ptr->zbuf, + png_ptr->zbuf_size); + png_ptr->zstream.next_out = png_ptr->zbuf; + png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; + wrote_IDAT = 1; + } + } while(wrote_IDAT == 1); + + /* If there is any data left to be output, write it into a new IDAT */ + if (png_ptr->zbuf_size != png_ptr->zstream.avail_out) + { + /* Write the IDAT and reset the zlib output buffer */ + png_write_IDAT(png_ptr, png_ptr->zbuf, + png_ptr->zbuf_size - png_ptr->zstream.avail_out); + png_ptr->zstream.next_out = png_ptr->zbuf; + png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; + } + png_ptr->flush_rows = 0; + png_flush(png_ptr); +} +#endif /* PNG_WRITE_FLUSH_SUPPORTED */ + +/* Free all memory used by the write */ +void PNGAPI +png_destroy_write_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr) +{ + png_structp png_ptr = NULL; + png_infop info_ptr = NULL; +#ifdef PNG_USER_MEM_SUPPORTED + png_free_ptr free_fn = NULL; + png_voidp mem_ptr = NULL; +#endif + + png_debug(1, "in png_destroy_write_struct"); + if (png_ptr_ptr != NULL) + { + png_ptr = *png_ptr_ptr; +#ifdef PNG_USER_MEM_SUPPORTED + free_fn = png_ptr->free_fn; + mem_ptr = png_ptr->mem_ptr; +#endif + } + +#ifdef PNG_USER_MEM_SUPPORTED + if (png_ptr != NULL) + { + free_fn = png_ptr->free_fn; + mem_ptr = png_ptr->mem_ptr; + } +#endif + + if (info_ptr_ptr != NULL) + info_ptr = *info_ptr_ptr; + + if (info_ptr != NULL) + { + if (png_ptr != NULL) + { + png_free_data(png_ptr, info_ptr, PNG_FREE_ALL, -1); + +#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) + if (png_ptr->num_chunk_list) + { + png_free(png_ptr, png_ptr->chunk_list); + png_ptr->chunk_list=NULL; + png_ptr->num_chunk_list = 0; + } +#endif + } + +#ifdef PNG_USER_MEM_SUPPORTED + png_destroy_struct_2((png_voidp)info_ptr, (png_free_ptr)free_fn, + (png_voidp)mem_ptr); +#else + png_destroy_struct((png_voidp)info_ptr); +#endif + *info_ptr_ptr = NULL; + } + + if (png_ptr != NULL) + { + png_write_destroy(png_ptr); +#ifdef PNG_USER_MEM_SUPPORTED + png_destroy_struct_2((png_voidp)png_ptr, (png_free_ptr)free_fn, + (png_voidp)mem_ptr); +#else + png_destroy_struct((png_voidp)png_ptr); +#endif + *png_ptr_ptr = NULL; + } +} + + +/* Free any memory used in png_ptr struct (old method) */ +void /* PRIVATE */ +png_write_destroy(png_structp png_ptr) +{ +#ifdef PNG_SETJMP_SUPPORTED + jmp_buf tmp_jmp; /* Save jump buffer */ +#endif + png_error_ptr error_fn; + png_error_ptr warning_fn; + png_voidp error_ptr; +#ifdef PNG_USER_MEM_SUPPORTED + png_free_ptr free_fn; +#endif + + png_debug(1, "in png_write_destroy"); + /* Free any memory zlib uses */ + deflateEnd(&png_ptr->zstream); + + /* Free our memory. png_free checks NULL for us. */ + png_free(png_ptr, png_ptr->zbuf); + png_free(png_ptr, png_ptr->row_buf); +#ifndef PNG_NO_WRITE_FILTER + png_free(png_ptr, png_ptr->prev_row); + png_free(png_ptr, png_ptr->sub_row); + png_free(png_ptr, png_ptr->up_row); + png_free(png_ptr, png_ptr->avg_row); + png_free(png_ptr, png_ptr->paeth_row); +#endif + +#if defined(PNG_TIME_RFC1123_SUPPORTED) + png_free(png_ptr, png_ptr->time_buffer); +#endif + +#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) + png_free(png_ptr, png_ptr->prev_filters); + png_free(png_ptr, png_ptr->filter_weights); + png_free(png_ptr, png_ptr->inv_filter_weights); + png_free(png_ptr, png_ptr->filter_costs); + png_free(png_ptr, png_ptr->inv_filter_costs); +#endif + +#ifdef PNG_SETJMP_SUPPORTED + /* Reset structure */ + png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof(jmp_buf)); +#endif + + error_fn = png_ptr->error_fn; + warning_fn = png_ptr->warning_fn; + error_ptr = png_ptr->error_ptr; +#ifdef PNG_USER_MEM_SUPPORTED + free_fn = png_ptr->free_fn; +#endif + + png_memset(png_ptr, 0, png_sizeof(png_struct)); + + png_ptr->error_fn = error_fn; + png_ptr->warning_fn = warning_fn; + png_ptr->error_ptr = error_ptr; +#ifdef PNG_USER_MEM_SUPPORTED + png_ptr->free_fn = free_fn; +#endif + +#ifdef PNG_SETJMP_SUPPORTED + png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof(jmp_buf)); +#endif +} + +/* Allow the application to select one or more row filters to use. */ +void PNGAPI +png_set_filter(png_structp png_ptr, int method, int filters) +{ + png_debug(1, "in png_set_filter"); + if (png_ptr == NULL) + return; +#if defined(PNG_MNG_FEATURES_SUPPORTED) + if ((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) && + (method == PNG_INTRAPIXEL_DIFFERENCING)) + method = PNG_FILTER_TYPE_BASE; +#endif + if (method == PNG_FILTER_TYPE_BASE) + { + switch (filters & (PNG_ALL_FILTERS | 0x07)) + { +#ifndef PNG_NO_WRITE_FILTER + case 5: + case 6: + case 7: png_warning(png_ptr, "Unknown row filter for method 0"); +#endif /* PNG_NO_WRITE_FILTER */ + case PNG_FILTER_VALUE_NONE: + png_ptr->do_filter=PNG_FILTER_NONE; break; +#ifndef PNG_NO_WRITE_FILTER + case PNG_FILTER_VALUE_SUB: + png_ptr->do_filter=PNG_FILTER_SUB; break; + case PNG_FILTER_VALUE_UP: + png_ptr->do_filter=PNG_FILTER_UP; break; + case PNG_FILTER_VALUE_AVG: + png_ptr->do_filter=PNG_FILTER_AVG; break; + case PNG_FILTER_VALUE_PAETH: + png_ptr->do_filter=PNG_FILTER_PAETH; break; + default: png_ptr->do_filter = (png_byte)filters; break; +#else + default: png_warning(png_ptr, "Unknown row filter for method 0"); +#endif /* PNG_NO_WRITE_FILTER */ + } + + /* If we have allocated the row_buf, this means we have already started + * with the image and we should have allocated all of the filter buffers + * that have been selected. If prev_row isn't already allocated, then + * it is too late to start using the filters that need it, since we + * will be missing the data in the previous row. If an application + * wants to start and stop using particular filters during compression, + * it should start out with all of the filters, and then add and + * remove them after the start of compression. + */ + if (png_ptr->row_buf != NULL) + { +#ifndef PNG_NO_WRITE_FILTER + if ((png_ptr->do_filter & PNG_FILTER_SUB) && png_ptr->sub_row == NULL) + { + png_ptr->sub_row = (png_bytep)png_malloc(png_ptr, + (png_ptr->rowbytes + 1)); + png_ptr->sub_row[0] = PNG_FILTER_VALUE_SUB; + } + + if ((png_ptr->do_filter & PNG_FILTER_UP) && png_ptr->up_row == NULL) + { + if (png_ptr->prev_row == NULL) + { + png_warning(png_ptr, "Can't add Up filter after starting"); + png_ptr->do_filter &= ~PNG_FILTER_UP; + } + else + { + png_ptr->up_row = (png_bytep)png_malloc(png_ptr, + (png_ptr->rowbytes + 1)); + png_ptr->up_row[0] = PNG_FILTER_VALUE_UP; + } + } + + if ((png_ptr->do_filter & PNG_FILTER_AVG) && png_ptr->avg_row == NULL) + { + if (png_ptr->prev_row == NULL) + { + png_warning(png_ptr, "Can't add Average filter after starting"); + png_ptr->do_filter &= ~PNG_FILTER_AVG; + } + else + { + png_ptr->avg_row = (png_bytep)png_malloc(png_ptr, + (png_ptr->rowbytes + 1)); + png_ptr->avg_row[0] = PNG_FILTER_VALUE_AVG; + } + } + + if ((png_ptr->do_filter & PNG_FILTER_PAETH) && + png_ptr->paeth_row == NULL) + { + if (png_ptr->prev_row == NULL) + { + png_warning(png_ptr, "Can't add Paeth filter after starting"); + png_ptr->do_filter &= (png_byte)(~PNG_FILTER_PAETH); + } + else + { + png_ptr->paeth_row = (png_bytep)png_malloc(png_ptr, + (png_ptr->rowbytes + 1)); + png_ptr->paeth_row[0] = PNG_FILTER_VALUE_PAETH; + } + } + + if (png_ptr->do_filter == PNG_NO_FILTERS) +#endif /* PNG_NO_WRITE_FILTER */ + png_ptr->do_filter = PNG_FILTER_NONE; + } + } + else + png_error(png_ptr, "Unknown custom filter method"); +} + +/* This allows us to influence the way in which libpng chooses the "best" + * filter for the current scanline. While the "minimum-sum-of-absolute- + * differences metric is relatively fast and effective, there is some + * question as to whether it can be improved upon by trying to keep the + * filtered data going to zlib more consistent, hopefully resulting in + * better compression. + */ +#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) /* GRR 970116 */ +void PNGAPI +png_set_filter_heuristics(png_structp png_ptr, int heuristic_method, + int num_weights, png_doublep filter_weights, + png_doublep filter_costs) +{ + int i; + + png_debug(1, "in png_set_filter_heuristics"); + if (png_ptr == NULL) + return; + if (heuristic_method >= PNG_FILTER_HEURISTIC_LAST) + { + png_warning(png_ptr, "Unknown filter heuristic method"); + return; + } + + if (heuristic_method == PNG_FILTER_HEURISTIC_DEFAULT) + { + heuristic_method = PNG_FILTER_HEURISTIC_UNWEIGHTED; + } + + if (num_weights < 0 || filter_weights == NULL || + heuristic_method == PNG_FILTER_HEURISTIC_UNWEIGHTED) + { + num_weights = 0; + } + + png_ptr->num_prev_filters = (png_byte)num_weights; + png_ptr->heuristic_method = (png_byte)heuristic_method; + + if (num_weights > 0) + { + if (png_ptr->prev_filters == NULL) + { + png_ptr->prev_filters = (png_bytep)png_malloc(png_ptr, + (png_uint_32)(png_sizeof(png_byte) * num_weights)); + + /* To make sure that the weighting starts out fairly */ + for (i = 0; i < num_weights; i++) + { + png_ptr->prev_filters[i] = 255; + } + } + + if (png_ptr->filter_weights == NULL) + { + png_ptr->filter_weights = (png_uint_16p)png_malloc(png_ptr, + (png_uint_32)(png_sizeof(png_uint_16) * num_weights)); + + png_ptr->inv_filter_weights = (png_uint_16p)png_malloc(png_ptr, + (png_uint_32)(png_sizeof(png_uint_16) * num_weights)); + for (i = 0; i < num_weights; i++) + { + png_ptr->inv_filter_weights[i] = + png_ptr->filter_weights[i] = PNG_WEIGHT_FACTOR; + } + } + + for (i = 0; i < num_weights; i++) + { + if (filter_weights[i] < 0.0) + { + png_ptr->inv_filter_weights[i] = + png_ptr->filter_weights[i] = PNG_WEIGHT_FACTOR; + } + else + { + png_ptr->inv_filter_weights[i] = + (png_uint_16)((double)PNG_WEIGHT_FACTOR*filter_weights[i]+0.5); + png_ptr->filter_weights[i] = + (png_uint_16)((double)PNG_WEIGHT_FACTOR/filter_weights[i]+0.5); + } + } + } + + /* If, in the future, there are other filter methods, this would + * need to be based on png_ptr->filter. + */ + if (png_ptr->filter_costs == NULL) + { + png_ptr->filter_costs = (png_uint_16p)png_malloc(png_ptr, + (png_uint_32)(png_sizeof(png_uint_16) * PNG_FILTER_VALUE_LAST)); + + png_ptr->inv_filter_costs = (png_uint_16p)png_malloc(png_ptr, + (png_uint_32)(png_sizeof(png_uint_16) * PNG_FILTER_VALUE_LAST)); + + for (i = 0; i < PNG_FILTER_VALUE_LAST; i++) + { + png_ptr->inv_filter_costs[i] = + png_ptr->filter_costs[i] = PNG_COST_FACTOR; + } + } + + /* Here is where we set the relative costs of the different filters. We + * should take the desired compression level into account when setting + * the costs, so that Paeth, for instance, has a high relative cost at low + * compression levels, while it has a lower relative cost at higher + * compression settings. The filter types are in order of increasing + * relative cost, so it would be possible to do this with an algorithm. + */ + for (i = 0; i < PNG_FILTER_VALUE_LAST; i++) + { + if (filter_costs == NULL || filter_costs[i] < 0.0) + { + png_ptr->inv_filter_costs[i] = + png_ptr->filter_costs[i] = PNG_COST_FACTOR; + } + else if (filter_costs[i] >= 1.0) + { + png_ptr->inv_filter_costs[i] = + (png_uint_16)((double)PNG_COST_FACTOR / filter_costs[i] + 0.5); + png_ptr->filter_costs[i] = + (png_uint_16)((double)PNG_COST_FACTOR * filter_costs[i] + 0.5); + } + } +} +#endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */ + +void PNGAPI +png_set_compression_level(png_structp png_ptr, int level) +{ + png_debug(1, "in png_set_compression_level"); + if (png_ptr == NULL) + return; + png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_LEVEL; + png_ptr->zlib_level = level; +} + +void PNGAPI +png_set_compression_mem_level(png_structp png_ptr, int mem_level) +{ + png_debug(1, "in png_set_compression_mem_level"); + if (png_ptr == NULL) + return; + png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL; + png_ptr->zlib_mem_level = mem_level; +} + +void PNGAPI +png_set_compression_strategy(png_structp png_ptr, int strategy) +{ + png_debug(1, "in png_set_compression_strategy"); + if (png_ptr == NULL) + return; + png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_STRATEGY; + png_ptr->zlib_strategy = strategy; +} + +void PNGAPI +png_set_compression_window_bits(png_structp png_ptr, int window_bits) +{ + if (png_ptr == NULL) + return; + if (window_bits > 15) + png_warning(png_ptr, "Only compression windows <= 32k supported by PNG"); + else if (window_bits < 8) + png_warning(png_ptr, "Only compression windows >= 256 supported by PNG"); +#ifndef WBITS_8_OK + /* Avoid libpng bug with 256-byte windows */ + if (window_bits == 8) + { + png_warning(png_ptr, "Compression window is being reset to 512"); + window_bits=9; + } +#endif + png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_WINDOW_BITS; + png_ptr->zlib_window_bits = window_bits; +} + +void PNGAPI +png_set_compression_method(png_structp png_ptr, int method) +{ + png_debug(1, "in png_set_compression_method"); + if (png_ptr == NULL) + return; + if (method != 8) + png_warning(png_ptr, "Only compression method 8 is supported by PNG"); + png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_METHOD; + png_ptr->zlib_method = method; +} + +void PNGAPI +png_set_write_status_fn(png_structp png_ptr, png_write_status_ptr write_row_fn) +{ + if (png_ptr == NULL) + return; + png_ptr->write_row_fn = write_row_fn; +} + +#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) +void PNGAPI +png_set_write_user_transform_fn(png_structp png_ptr, png_user_transform_ptr + write_user_transform_fn) +{ + png_debug(1, "in png_set_write_user_transform_fn"); + if (png_ptr == NULL) + return; + png_ptr->transformations |= PNG_USER_TRANSFORM; + png_ptr->write_user_transform_fn = write_user_transform_fn; +} +#endif + + +#if defined(PNG_INFO_IMAGE_SUPPORTED) +void PNGAPI +png_write_png(png_structp png_ptr, png_infop info_ptr, + int transforms, voidp params) +{ + if (png_ptr == NULL || info_ptr == NULL) + return; +#if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) + /* Invert the alpha channel from opacity to transparency */ + if (transforms & PNG_TRANSFORM_INVERT_ALPHA) + png_set_invert_alpha(png_ptr); +#endif + + /* Write the file header information. */ + png_write_info(png_ptr, info_ptr); + + /* ------ these transformations don't touch the info structure ------- */ + +#if defined(PNG_WRITE_INVERT_SUPPORTED) + /* Invert monochrome pixels */ + if (transforms & PNG_TRANSFORM_INVERT_MONO) + png_set_invert_mono(png_ptr); +#endif + +#if defined(PNG_WRITE_SHIFT_SUPPORTED) + /* Shift the pixels up to a legal bit depth and fill in + * as appropriate to correctly scale the image. + */ + if ((transforms & PNG_TRANSFORM_SHIFT) + && (info_ptr->valid & PNG_INFO_sBIT)) + png_set_shift(png_ptr, &info_ptr->sig_bit); +#endif + +#if defined(PNG_WRITE_PACK_SUPPORTED) + /* Pack pixels into bytes */ + if (transforms & PNG_TRANSFORM_PACKING) + png_set_packing(png_ptr); +#endif + +#if defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) + /* Swap location of alpha bytes from ARGB to RGBA */ + if (transforms & PNG_TRANSFORM_SWAP_ALPHA) + png_set_swap_alpha(png_ptr); +#endif + +#if defined(PNG_WRITE_FILLER_SUPPORTED) + /* Pack XRGB/RGBX/ARGB/RGBA into * RGB (4 channels -> 3 channels) */ + if (transforms & PNG_TRANSFORM_STRIP_FILLER_AFTER) + png_set_filler(png_ptr, 0, PNG_FILLER_AFTER); + else if (transforms & PNG_TRANSFORM_STRIP_FILLER_BEFORE) + png_set_filler(png_ptr, 0, PNG_FILLER_BEFORE); +#endif + +#if defined(PNG_WRITE_BGR_SUPPORTED) + /* Flip BGR pixels to RGB */ + if (transforms & PNG_TRANSFORM_BGR) + png_set_bgr(png_ptr); +#endif + +#if defined(PNG_WRITE_SWAP_SUPPORTED) + /* Swap bytes of 16-bit files to most significant byte first */ + if (transforms & PNG_TRANSFORM_SWAP_ENDIAN) + png_set_swap(png_ptr); +#endif + +#if defined(PNG_WRITE_PACKSWAP_SUPPORTED) + /* Swap bits of 1, 2, 4 bit packed pixel formats */ + if (transforms & PNG_TRANSFORM_PACKSWAP) + png_set_packswap(png_ptr); +#endif + + /* ----------------------- end of transformations ------------------- */ + + /* Write the bits */ + if (info_ptr->valid & PNG_INFO_IDAT) + png_write_image(png_ptr, info_ptr->row_pointers); + + /* It is REQUIRED to call this to finish writing the rest of the file */ + png_write_end(png_ptr, info_ptr); + + transforms = transforms; /* Quiet compiler warnings */ + params = params; +} +#endif +#endif /* PNG_WRITE_SUPPORTED */ diff --git a/Libraries/libpng/pngwtran.cpp b/Libraries/libpng/pngwtran.cpp new file mode 100644 index 0000000..ac56339 --- /dev/null +++ b/Libraries/libpng/pngwtran.cpp @@ -0,0 +1,572 @@ + +/* pngwtran.c - transforms the data in a row for PNG writers + * + * Last changed in libpng 1.2.37 [June 4, 2009] + * For conditions of distribution and use, see copyright notice in png.h + * Copyright (c) 1998-2009 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + */ + +#define PNG_INTERNAL +#include "png.h" +#ifdef PNG_WRITE_SUPPORTED + +/* Transform the data according to the user's wishes. The order of + * transformations is significant. + */ +void /* PRIVATE */ +png_do_write_transformations(png_structp png_ptr) +{ + png_debug(1, "in png_do_write_transformations"); + + if (png_ptr == NULL) + return; + +#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) + if (png_ptr->transformations & PNG_USER_TRANSFORM) + if (png_ptr->write_user_transform_fn != NULL) + (*(png_ptr->write_user_transform_fn)) /* User write transform function */ + (png_ptr, /* png_ptr */ + &(png_ptr->row_info), /* row_info: */ + /* png_uint_32 width; width of row */ + /* png_uint_32 rowbytes; number of bytes in row */ + /* png_byte color_type; color type of pixels */ + /* png_byte bit_depth; bit depth of samples */ + /* png_byte channels; number of channels (1-4) */ + /* png_byte pixel_depth; bits per pixel (depth*channels) */ + png_ptr->row_buf + 1); /* start of pixel data for row */ +#endif +#if defined(PNG_WRITE_FILLER_SUPPORTED) + if (png_ptr->transformations & PNG_FILLER) + png_do_strip_filler(&(png_ptr->row_info), png_ptr->row_buf + 1, + png_ptr->flags); +#endif +#if defined(PNG_WRITE_PACKSWAP_SUPPORTED) + if (png_ptr->transformations & PNG_PACKSWAP) + png_do_packswap(&(png_ptr->row_info), png_ptr->row_buf + 1); +#endif +#if defined(PNG_WRITE_PACK_SUPPORTED) + if (png_ptr->transformations & PNG_PACK) + png_do_pack(&(png_ptr->row_info), png_ptr->row_buf + 1, + (png_uint_32)png_ptr->bit_depth); +#endif +#if defined(PNG_WRITE_SWAP_SUPPORTED) + if (png_ptr->transformations & PNG_SWAP_BYTES) + png_do_swap(&(png_ptr->row_info), png_ptr->row_buf + 1); +#endif +#if defined(PNG_WRITE_SHIFT_SUPPORTED) + if (png_ptr->transformations & PNG_SHIFT) + png_do_shift(&(png_ptr->row_info), png_ptr->row_buf + 1, + &(png_ptr->shift)); +#endif +#if defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) + if (png_ptr->transformations & PNG_SWAP_ALPHA) + png_do_write_swap_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1); +#endif +#if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) + if (png_ptr->transformations & PNG_INVERT_ALPHA) + png_do_write_invert_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1); +#endif +#if defined(PNG_WRITE_BGR_SUPPORTED) + if (png_ptr->transformations & PNG_BGR) + png_do_bgr(&(png_ptr->row_info), png_ptr->row_buf + 1); +#endif +#if defined(PNG_WRITE_INVERT_SUPPORTED) + if (png_ptr->transformations & PNG_INVERT_MONO) + png_do_invert(&(png_ptr->row_info), png_ptr->row_buf + 1); +#endif +} + +#if defined(PNG_WRITE_PACK_SUPPORTED) +/* Pack pixels into bytes. Pass the true bit depth in bit_depth. The + * row_info bit depth should be 8 (one pixel per byte). The channels + * should be 1 (this only happens on grayscale and paletted images). + */ +void /* PRIVATE */ +png_do_pack(png_row_infop row_info, png_bytep row, png_uint_32 bit_depth) +{ + png_debug(1, "in png_do_pack"); + if (row_info->bit_depth == 8 && +#if defined(PNG_USELESS_TESTS_SUPPORTED) + row != NULL && row_info != NULL && +#endif + row_info->channels == 1) + { + switch ((int)bit_depth) + { + case 1: + { + png_bytep sp, dp; + int mask, v; + png_uint_32 i; + png_uint_32 row_width = row_info->width; + + sp = row; + dp = row; + mask = 0x80; + v = 0; + + for (i = 0; i < row_width; i++) + { + if (*sp != 0) + v |= mask; + sp++; + if (mask > 1) + mask >>= 1; + else + { + mask = 0x80; + *dp = (png_byte)v; + dp++; + v = 0; + } + } + if (mask != 0x80) + *dp = (png_byte)v; + break; + } + case 2: + { + png_bytep sp, dp; + int shift, v; + png_uint_32 i; + png_uint_32 row_width = row_info->width; + + sp = row; + dp = row; + shift = 6; + v = 0; + for (i = 0; i < row_width; i++) + { + png_byte value; + + value = (png_byte)(*sp & 0x03); + v |= (value << shift); + if (shift == 0) + { + shift = 6; + *dp = (png_byte)v; + dp++; + v = 0; + } + else + shift -= 2; + sp++; + } + if (shift != 6) + *dp = (png_byte)v; + break; + } + case 4: + { + png_bytep sp, dp; + int shift, v; + png_uint_32 i; + png_uint_32 row_width = row_info->width; + + sp = row; + dp = row; + shift = 4; + v = 0; + for (i = 0; i < row_width; i++) + { + png_byte value; + + value = (png_byte)(*sp & 0x0f); + v |= (value << shift); + + if (shift == 0) + { + shift = 4; + *dp = (png_byte)v; + dp++; + v = 0; + } + else + shift -= 4; + + sp++; + } + if (shift != 4) + *dp = (png_byte)v; + break; + } + } + row_info->bit_depth = (png_byte)bit_depth; + row_info->pixel_depth = (png_byte)(bit_depth * row_info->channels); + row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, + row_info->width); + } +} +#endif + +#if defined(PNG_WRITE_SHIFT_SUPPORTED) +/* Shift pixel values to take advantage of whole range. Pass the + * true number of bits in bit_depth. The row should be packed + * according to row_info->bit_depth. Thus, if you had a row of + * bit depth 4, but the pixels only had values from 0 to 7, you + * would pass 3 as bit_depth, and this routine would translate the + * data to 0 to 15. + */ +void /* PRIVATE */ +png_do_shift(png_row_infop row_info, png_bytep row, png_color_8p bit_depth) +{ + png_debug(1, "in png_do_shift"); +#if defined(PNG_USELESS_TESTS_SUPPORTED) + if (row != NULL && row_info != NULL && +#else + if ( +#endif + row_info->color_type != PNG_COLOR_TYPE_PALETTE) + { + int shift_start[4], shift_dec[4]; + int channels = 0; + + if (row_info->color_type & PNG_COLOR_MASK_COLOR) + { + shift_start[channels] = row_info->bit_depth - bit_depth->red; + shift_dec[channels] = bit_depth->red; + channels++; + shift_start[channels] = row_info->bit_depth - bit_depth->green; + shift_dec[channels] = bit_depth->green; + channels++; + shift_start[channels] = row_info->bit_depth - bit_depth->blue; + shift_dec[channels] = bit_depth->blue; + channels++; + } + else + { + shift_start[channels] = row_info->bit_depth - bit_depth->gray; + shift_dec[channels] = bit_depth->gray; + channels++; + } + if (row_info->color_type & PNG_COLOR_MASK_ALPHA) + { + shift_start[channels] = row_info->bit_depth - bit_depth->alpha; + shift_dec[channels] = bit_depth->alpha; + channels++; + } + + /* With low row depths, could only be grayscale, so one channel */ + if (row_info->bit_depth < 8) + { + png_bytep bp = row; + png_uint_32 i; + png_byte mask; + png_uint_32 row_bytes = row_info->rowbytes; + + if (bit_depth->gray == 1 && row_info->bit_depth == 2) + mask = 0x55; + else if (row_info->bit_depth == 4 && bit_depth->gray == 3) + mask = 0x11; + else + mask = 0xff; + + for (i = 0; i < row_bytes; i++, bp++) + { + png_uint_16 v; + int j; + + v = *bp; + *bp = 0; + for (j = shift_start[0]; j > -shift_dec[0]; j -= shift_dec[0]) + { + if (j > 0) + *bp |= (png_byte)((v << j) & 0xff); + else + *bp |= (png_byte)((v >> (-j)) & mask); + } + } + } + else if (row_info->bit_depth == 8) + { + png_bytep bp = row; + png_uint_32 i; + png_uint_32 istop = channels * row_info->width; + + for (i = 0; i < istop; i++, bp++) + { + + png_uint_16 v; + int j; + int c = (int)(i%channels); + + v = *bp; + *bp = 0; + for (j = shift_start[c]; j > -shift_dec[c]; j -= shift_dec[c]) + { + if (j > 0) + *bp |= (png_byte)((v << j) & 0xff); + else + *bp |= (png_byte)((v >> (-j)) & 0xff); + } + } + } + else + { + png_bytep bp; + png_uint_32 i; + png_uint_32 istop = channels * row_info->width; + + for (bp = row, i = 0; i < istop; i++) + { + int c = (int)(i%channels); + png_uint_16 value, v; + int j; + + v = (png_uint_16)(((png_uint_16)(*bp) << 8) + *(bp + 1)); + value = 0; + for (j = shift_start[c]; j > -shift_dec[c]; j -= shift_dec[c]) + { + if (j > 0) + value |= (png_uint_16)((v << j) & (png_uint_16)0xffff); + else + value |= (png_uint_16)((v >> (-j)) & (png_uint_16)0xffff); + } + *bp++ = (png_byte)(value >> 8); + *bp++ = (png_byte)(value & 0xff); + } + } + } +} +#endif + +#if defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) +void /* PRIVATE */ +png_do_write_swap_alpha(png_row_infop row_info, png_bytep row) +{ + png_debug(1, "in png_do_write_swap_alpha"); +#if defined(PNG_USELESS_TESTS_SUPPORTED) + if (row != NULL && row_info != NULL) +#endif + { + if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) + { + /* This converts from ARGB to RGBA */ + if (row_info->bit_depth == 8) + { + png_bytep sp, dp; + png_uint_32 i; + png_uint_32 row_width = row_info->width; + for (i = 0, sp = dp = row; i < row_width; i++) + { + png_byte save = *(sp++); + *(dp++) = *(sp++); + *(dp++) = *(sp++); + *(dp++) = *(sp++); + *(dp++) = save; + } + } + /* This converts from AARRGGBB to RRGGBBAA */ + else + { + png_bytep sp, dp; + png_uint_32 i; + png_uint_32 row_width = row_info->width; + + for (i = 0, sp = dp = row; i < row_width; i++) + { + png_byte save[2]; + save[0] = *(sp++); + save[1] = *(sp++); + *(dp++) = *(sp++); + *(dp++) = *(sp++); + *(dp++) = *(sp++); + *(dp++) = *(sp++); + *(dp++) = *(sp++); + *(dp++) = *(sp++); + *(dp++) = save[0]; + *(dp++) = save[1]; + } + } + } + else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) + { + /* This converts from AG to GA */ + if (row_info->bit_depth == 8) + { + png_bytep sp, dp; + png_uint_32 i; + png_uint_32 row_width = row_info->width; + + for (i = 0, sp = dp = row; i < row_width; i++) + { + png_byte save = *(sp++); + *(dp++) = *(sp++); + *(dp++) = save; + } + } + /* This converts from AAGG to GGAA */ + else + { + png_bytep sp, dp; + png_uint_32 i; + png_uint_32 row_width = row_info->width; + + for (i = 0, sp = dp = row; i < row_width; i++) + { + png_byte save[2]; + save[0] = *(sp++); + save[1] = *(sp++); + *(dp++) = *(sp++); + *(dp++) = *(sp++); + *(dp++) = save[0]; + *(dp++) = save[1]; + } + } + } + } +} +#endif + +#if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) +void /* PRIVATE */ +png_do_write_invert_alpha(png_row_infop row_info, png_bytep row) +{ + png_debug(1, "in png_do_write_invert_alpha"); +#if defined(PNG_USELESS_TESTS_SUPPORTED) + if (row != NULL && row_info != NULL) +#endif + { + if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) + { + /* This inverts the alpha channel in RGBA */ + if (row_info->bit_depth == 8) + { + png_bytep sp, dp; + png_uint_32 i; + png_uint_32 row_width = row_info->width; + for (i = 0, sp = dp = row; i < row_width; i++) + { + /* Does nothing + *(dp++) = *(sp++); + *(dp++) = *(sp++); + *(dp++) = *(sp++); + */ + sp+=3; dp = sp; + *(dp++) = (png_byte)(255 - *(sp++)); + } + } + /* This inverts the alpha channel in RRGGBBAA */ + else + { + png_bytep sp, dp; + png_uint_32 i; + png_uint_32 row_width = row_info->width; + + for (i = 0, sp = dp = row; i < row_width; i++) + { + /* Does nothing + *(dp++) = *(sp++); + *(dp++) = *(sp++); + *(dp++) = *(sp++); + *(dp++) = *(sp++); + *(dp++) = *(sp++); + *(dp++) = *(sp++); + */ + sp+=6; dp = sp; + *(dp++) = (png_byte)(255 - *(sp++)); + *(dp++) = (png_byte)(255 - *(sp++)); + } + } + } + else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) + { + /* This inverts the alpha channel in GA */ + if (row_info->bit_depth == 8) + { + png_bytep sp, dp; + png_uint_32 i; + png_uint_32 row_width = row_info->width; + + for (i = 0, sp = dp = row; i < row_width; i++) + { + *(dp++) = *(sp++); + *(dp++) = (png_byte)(255 - *(sp++)); + } + } + /* This inverts the alpha channel in GGAA */ + else + { + png_bytep sp, dp; + png_uint_32 i; + png_uint_32 row_width = row_info->width; + + for (i = 0, sp = dp = row; i < row_width; i++) + { + /* Does nothing + *(dp++) = *(sp++); + *(dp++) = *(sp++); + */ + sp+=2; dp = sp; + *(dp++) = (png_byte)(255 - *(sp++)); + *(dp++) = (png_byte)(255 - *(sp++)); + } + } + } + } +} +#endif + +#if defined(PNG_MNG_FEATURES_SUPPORTED) +/* Undoes intrapixel differencing */ +void /* PRIVATE */ +png_do_write_intrapixel(png_row_infop row_info, png_bytep row) +{ + png_debug(1, "in png_do_write_intrapixel"); + if ( +#if defined(PNG_USELESS_TESTS_SUPPORTED) + row != NULL && row_info != NULL && +#endif + (row_info->color_type & PNG_COLOR_MASK_COLOR)) + { + int bytes_per_pixel; + png_uint_32 row_width = row_info->width; + if (row_info->bit_depth == 8) + { + png_bytep rp; + png_uint_32 i; + + if (row_info->color_type == PNG_COLOR_TYPE_RGB) + bytes_per_pixel = 3; + else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) + bytes_per_pixel = 4; + else + return; + + for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel) + { + *(rp) = (png_byte)((*rp - *(rp+1))&0xff); + *(rp+2) = (png_byte)((*(rp+2) - *(rp+1))&0xff); + } + } + else if (row_info->bit_depth == 16) + { + png_bytep rp; + png_uint_32 i; + + if (row_info->color_type == PNG_COLOR_TYPE_RGB) + bytes_per_pixel = 6; + else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) + bytes_per_pixel = 8; + else + return; + + for (i = 0, rp = row; i < row_width; i++, rp += bytes_per_pixel) + { + png_uint_32 s0 = (*(rp ) << 8) | *(rp+1); + png_uint_32 s1 = (*(rp+2) << 8) | *(rp+3); + png_uint_32 s2 = (*(rp+4) << 8) | *(rp+5); + png_uint_32 red = (png_uint_32)((s0 - s1) & 0xffffL); + png_uint_32 blue = (png_uint_32)((s2 - s1) & 0xffffL); + *(rp ) = (png_byte)((red >> 8) & 0xff); + *(rp+1) = (png_byte)(red & 0xff); + *(rp+4) = (png_byte)((blue >> 8) & 0xff); + *(rp+5) = (png_byte)(blue & 0xff); + } + } + } +} +#endif /* PNG_MNG_FEATURES_SUPPORTED */ +#endif /* PNG_WRITE_SUPPORTED */ diff --git a/Libraries/libpng/pngwutil.cpp b/Libraries/libpng/pngwutil.cpp new file mode 100644 index 0000000..22a83cc --- /dev/null +++ b/Libraries/libpng/pngwutil.cpp @@ -0,0 +1,2788 @@ + +/* pngwutil.c - utilities to write a PNG file + * + * Last changed in libpng 1.2.36 [June 4, 2009] + * For conditions of distribution and use, see copyright notice in png.h + * Copyright (c) 1998-2009 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + */ + +#define PNG_INTERNAL +#include "png.h" +#ifdef PNG_WRITE_SUPPORTED + +/* Place a 32-bit number into a buffer in PNG byte order. We work + * with unsigned numbers for convenience, although one supported + * ancillary chunk uses signed (two's complement) numbers. + */ +void PNGAPI +png_save_uint_32(png_bytep buf, png_uint_32 i) +{ + buf[0] = (png_byte)((i >> 24) & 0xff); + buf[1] = (png_byte)((i >> 16) & 0xff); + buf[2] = (png_byte)((i >> 8) & 0xff); + buf[3] = (png_byte)(i & 0xff); +} + +/* The png_save_int_32 function assumes integers are stored in two's + * complement format. If this isn't the case, then this routine needs to + * be modified to write data in two's complement format. + */ +void PNGAPI +png_save_int_32(png_bytep buf, png_int_32 i) +{ + buf[0] = (png_byte)((i >> 24) & 0xff); + buf[1] = (png_byte)((i >> 16) & 0xff); + buf[2] = (png_byte)((i >> 8) & 0xff); + buf[3] = (png_byte)(i & 0xff); +} + +/* Place a 16-bit number into a buffer in PNG byte order. + * The parameter is declared unsigned int, not png_uint_16, + * just to avoid potential problems on pre-ANSI C compilers. + */ +void PNGAPI +png_save_uint_16(png_bytep buf, unsigned int i) +{ + buf[0] = (png_byte)((i >> 8) & 0xff); + buf[1] = (png_byte)(i & 0xff); +} + +/* Simple function to write the signature. If we have already written + * the magic bytes of the signature, or more likely, the PNG stream is + * being embedded into another stream and doesn't need its own signature, + * we should call png_set_sig_bytes() to tell libpng how many of the + * bytes have already been written. + */ +void /* PRIVATE */ +png_write_sig(png_structp png_ptr) +{ + png_byte png_signature[8] = {137, 80, 78, 71, 13, 10, 26, 10}; + + /* Write the rest of the 8 byte signature */ + png_write_data(png_ptr, &png_signature[png_ptr->sig_bytes], + (png_size_t)(8 - png_ptr->sig_bytes)); + if (png_ptr->sig_bytes < 3) + png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE; +} + +/* Write a PNG chunk all at once. The type is an array of ASCII characters + * representing the chunk name. The array must be at least 4 bytes in + * length, and does not need to be null terminated. To be safe, pass the + * pre-defined chunk names here, and if you need a new one, define it + * where the others are defined. The length is the length of the data. + * All the data must be present. If that is not possible, use the + * png_write_chunk_start(), png_write_chunk_data(), and png_write_chunk_end() + * functions instead. + */ +void PNGAPI +png_write_chunk(png_structp png_ptr, png_bytep chunk_name, + png_bytep data, png_size_t length) +{ + if (png_ptr == NULL) + return; + png_write_chunk_start(png_ptr, chunk_name, (png_uint_32)length); + png_write_chunk_data(png_ptr, data, (png_size_t)length); + png_write_chunk_end(png_ptr); +} + +/* Write the start of a PNG chunk. The type is the chunk type. + * The total_length is the sum of the lengths of all the data you will be + * passing in png_write_chunk_data(). + */ +void PNGAPI +png_write_chunk_start(png_structp png_ptr, png_bytep chunk_name, + png_uint_32 length) +{ + png_byte buf[8]; + + png_debug2(0, "Writing %s chunk, length = %lu", chunk_name, + (unsigned long)length); + if (png_ptr == NULL) + return; + + /* Write the length and the chunk name */ + png_save_uint_32(buf, length); + png_memcpy(buf + 4, chunk_name, 4); + png_write_data(png_ptr, buf, (png_size_t)8); + /* Put the chunk name into png_ptr->chunk_name */ + png_memcpy(png_ptr->chunk_name, chunk_name, 4); + /* Reset the crc and run it over the chunk name */ + png_reset_crc(png_ptr); + png_calculate_crc(png_ptr, chunk_name, (png_size_t)4); +} + +/* Write the data of a PNG chunk started with png_write_chunk_start(). + * Note that multiple calls to this function are allowed, and that the + * sum of the lengths from these calls *must* add up to the total_length + * given to png_write_chunk_start(). + */ +void PNGAPI +png_write_chunk_data(png_structp png_ptr, png_bytep data, png_size_t length) +{ + /* Write the data, and run the CRC over it */ + if (png_ptr == NULL) + return; + if (data != NULL && length > 0) + { + png_write_data(png_ptr, data, length); + /* Update the CRC after writing the data, + * in case that the user I/O routine alters it. + */ + png_calculate_crc(png_ptr, data, length); + } +} + +/* Finish a chunk started with png_write_chunk_start(). */ +void PNGAPI +png_write_chunk_end(png_structp png_ptr) +{ + png_byte buf[4]; + + if (png_ptr == NULL) return; + + /* Write the crc in a single operation */ + png_save_uint_32(buf, png_ptr->crc); + + png_write_data(png_ptr, buf, (png_size_t)4); +} + +#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_iCCP_SUPPORTED) +/* This pair of functions encapsulates the operation of (a) compressing a + * text string, and (b) issuing it later as a series of chunk data writes. + * The compression_state structure is shared context for these functions + * set up by the caller in order to make the whole mess thread-safe. + */ + +typedef struct +{ + char *input; /* The uncompressed input data */ + int input_len; /* Its length */ + int num_output_ptr; /* Number of output pointers used */ + int max_output_ptr; /* Size of output_ptr */ + png_charpp output_ptr; /* Array of pointers to output */ +} compression_state; + +/* Compress given text into storage in the png_ptr structure */ +static int /* PRIVATE */ +png_text_compress(png_structp png_ptr, + png_charp text, png_size_t text_len, int compression, + compression_state *comp) +{ + int ret; + + comp->num_output_ptr = 0; + comp->max_output_ptr = 0; + comp->output_ptr = NULL; + comp->input = NULL; + comp->input_len = 0; + + /* We may just want to pass the text right through */ + if (compression == PNG_TEXT_COMPRESSION_NONE) + { + comp->input = text; + comp->input_len = text_len; + return((int)text_len); + } + + if (compression >= PNG_TEXT_COMPRESSION_LAST) + { +#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE) + char msg[50]; + png_snprintf(msg, 50, "Unknown compression type %d", compression); + png_warning(png_ptr, msg); +#else + png_warning(png_ptr, "Unknown compression type"); +#endif + } + + /* We can't write the chunk until we find out how much data we have, + * which means we need to run the compressor first and save the + * output. This shouldn't be a problem, as the vast majority of + * comments should be reasonable, but we will set up an array of + * malloc'd pointers to be sure. + * + * If we knew the application was well behaved, we could simplify this + * greatly by assuming we can always malloc an output buffer large + * enough to hold the compressed text ((1001 * text_len / 1000) + 12) + * and malloc this directly. The only time this would be a bad idea is + * if we can't malloc more than 64K and we have 64K of random input + * data, or if the input string is incredibly large (although this + * wouldn't cause a failure, just a slowdown due to swapping). + */ + + /* Set up the compression buffers */ + png_ptr->zstream.avail_in = (uInt)text_len; + png_ptr->zstream.next_in = (Bytef *)text; + png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; + png_ptr->zstream.next_out = (Bytef *)png_ptr->zbuf; + + /* This is the same compression loop as in png_write_row() */ + do + { + /* Compress the data */ + ret = deflate(&png_ptr->zstream, Z_NO_FLUSH); + if (ret != Z_OK) + { + /* Error */ + if (png_ptr->zstream.msg != NULL) + png_error(png_ptr, png_ptr->zstream.msg); + else + png_error(png_ptr, "zlib error"); + } + /* Check to see if we need more room */ + if (!(png_ptr->zstream.avail_out)) + { + /* Make sure the output array has room */ + if (comp->num_output_ptr >= comp->max_output_ptr) + { + int old_max; + + old_max = comp->max_output_ptr; + comp->max_output_ptr = comp->num_output_ptr + 4; + if (comp->output_ptr != NULL) + { + png_charpp old_ptr; + + old_ptr = comp->output_ptr; + comp->output_ptr = (png_charpp)png_malloc(png_ptr, + (png_uint_32) + (comp->max_output_ptr * png_sizeof(png_charpp))); + png_memcpy(comp->output_ptr, old_ptr, old_max + * png_sizeof(png_charp)); + png_free(png_ptr, old_ptr); + } + else + comp->output_ptr = (png_charpp)png_malloc(png_ptr, + (png_uint_32) + (comp->max_output_ptr * png_sizeof(png_charp))); + } + + /* Save the data */ + comp->output_ptr[comp->num_output_ptr] = + (png_charp)png_malloc(png_ptr, + (png_uint_32)png_ptr->zbuf_size); + png_memcpy(comp->output_ptr[comp->num_output_ptr], png_ptr->zbuf, + png_ptr->zbuf_size); + comp->num_output_ptr++; + + /* and reset the buffer */ + png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; + png_ptr->zstream.next_out = png_ptr->zbuf; + } + /* Continue until we don't have any more to compress */ + } while (png_ptr->zstream.avail_in); + + /* Finish the compression */ + do + { + /* Tell zlib we are finished */ + ret = deflate(&png_ptr->zstream, Z_FINISH); + + if (ret == Z_OK) + { + /* Check to see if we need more room */ + if (!(png_ptr->zstream.avail_out)) + { + /* Check to make sure our output array has room */ + if (comp->num_output_ptr >= comp->max_output_ptr) + { + int old_max; + + old_max = comp->max_output_ptr; + comp->max_output_ptr = comp->num_output_ptr + 4; + if (comp->output_ptr != NULL) + { + png_charpp old_ptr; + + old_ptr = comp->output_ptr; + /* This could be optimized to realloc() */ + comp->output_ptr = (png_charpp)png_malloc(png_ptr, + (png_uint_32)(comp->max_output_ptr * + png_sizeof(png_charp))); + png_memcpy(comp->output_ptr, old_ptr, + old_max * png_sizeof(png_charp)); + png_free(png_ptr, old_ptr); + } + else + comp->output_ptr = (png_charpp)png_malloc(png_ptr, + (png_uint_32)(comp->max_output_ptr * + png_sizeof(png_charp))); + } + + /* Save the data */ + comp->output_ptr[comp->num_output_ptr] = + (png_charp)png_malloc(png_ptr, + (png_uint_32)png_ptr->zbuf_size); + png_memcpy(comp->output_ptr[comp->num_output_ptr], png_ptr->zbuf, + png_ptr->zbuf_size); + comp->num_output_ptr++; + + /* and reset the buffer pointers */ + png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; + png_ptr->zstream.next_out = png_ptr->zbuf; + } + } + else if (ret != Z_STREAM_END) + { + /* We got an error */ + if (png_ptr->zstream.msg != NULL) + png_error(png_ptr, png_ptr->zstream.msg); + else + png_error(png_ptr, "zlib error"); + } + } while (ret != Z_STREAM_END); + + /* Text length is number of buffers plus last buffer */ + text_len = png_ptr->zbuf_size * comp->num_output_ptr; + if (png_ptr->zstream.avail_out < png_ptr->zbuf_size) + text_len += png_ptr->zbuf_size - (png_size_t)png_ptr->zstream.avail_out; + + return((int)text_len); +} + +/* Ship the compressed text out via chunk writes */ +static void /* PRIVATE */ +png_write_compressed_data_out(png_structp png_ptr, compression_state *comp) +{ + int i; + + /* Handle the no-compression case */ + if (comp->input) + { + png_write_chunk_data(png_ptr, (png_bytep)comp->input, + (png_size_t)comp->input_len); + return; + } + + /* Write saved output buffers, if any */ + for (i = 0; i < comp->num_output_ptr; i++) + { + png_write_chunk_data(png_ptr, (png_bytep)comp->output_ptr[i], + (png_size_t)png_ptr->zbuf_size); + png_free(png_ptr, comp->output_ptr[i]); + comp->output_ptr[i]=NULL; + } + if (comp->max_output_ptr != 0) + png_free(png_ptr, comp->output_ptr); + comp->output_ptr=NULL; + /* Write anything left in zbuf */ + if (png_ptr->zstream.avail_out < (png_uint_32)png_ptr->zbuf_size) + png_write_chunk_data(png_ptr, png_ptr->zbuf, + (png_size_t)(png_ptr->zbuf_size - png_ptr->zstream.avail_out)); + + /* Reset zlib for another zTXt/iTXt or image data */ + deflateReset(&png_ptr->zstream); + png_ptr->zstream.data_type = Z_BINARY; +} +#endif + +/* Write the IHDR chunk, and update the png_struct with the necessary + * information. Note that the rest of this code depends upon this + * information being correct. + */ +void /* PRIVATE */ +png_write_IHDR(png_structp png_ptr, png_uint_32 width, png_uint_32 height, + int bit_depth, int color_type, int compression_type, int filter_type, + int interlace_type) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_IHDR; +#endif + int ret; + + png_byte buf[13]; /* Buffer to store the IHDR info */ + + png_debug(1, "in png_write_IHDR"); + /* Check that we have valid input data from the application info */ + switch (color_type) + { + case PNG_COLOR_TYPE_GRAY: + switch (bit_depth) + { + case 1: + case 2: + case 4: + case 8: + case 16: png_ptr->channels = 1; break; + default: png_error(png_ptr, "Invalid bit depth for grayscale image"); + } + break; + case PNG_COLOR_TYPE_RGB: + if (bit_depth != 8 && bit_depth != 16) + png_error(png_ptr, "Invalid bit depth for RGB image"); + png_ptr->channels = 3; + break; + case PNG_COLOR_TYPE_PALETTE: + switch (bit_depth) + { + case 1: + case 2: + case 4: + case 8: png_ptr->channels = 1; break; + default: png_error(png_ptr, "Invalid bit depth for paletted image"); + } + break; + case PNG_COLOR_TYPE_GRAY_ALPHA: + if (bit_depth != 8 && bit_depth != 16) + png_error(png_ptr, "Invalid bit depth for grayscale+alpha image"); + png_ptr->channels = 2; + break; + case PNG_COLOR_TYPE_RGB_ALPHA: + if (bit_depth != 8 && bit_depth != 16) + png_error(png_ptr, "Invalid bit depth for RGBA image"); + png_ptr->channels = 4; + break; + default: + png_error(png_ptr, "Invalid image color type specified"); + } + + if (compression_type != PNG_COMPRESSION_TYPE_BASE) + { + png_warning(png_ptr, "Invalid compression type specified"); + compression_type = PNG_COMPRESSION_TYPE_BASE; + } + + /* Write filter_method 64 (intrapixel differencing) only if + * 1. Libpng was compiled with PNG_MNG_FEATURES_SUPPORTED and + * 2. Libpng did not write a PNG signature (this filter_method is only + * used in PNG datastreams that are embedded in MNG datastreams) and + * 3. The application called png_permit_mng_features with a mask that + * included PNG_FLAG_MNG_FILTER_64 and + * 4. The filter_method is 64 and + * 5. The color_type is RGB or RGBA + */ + if ( +#if defined(PNG_MNG_FEATURES_SUPPORTED) + !((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) && + ((png_ptr->mode&PNG_HAVE_PNG_SIGNATURE) == 0) && + (color_type == PNG_COLOR_TYPE_RGB || + color_type == PNG_COLOR_TYPE_RGB_ALPHA) && + (filter_type == PNG_INTRAPIXEL_DIFFERENCING)) && +#endif + filter_type != PNG_FILTER_TYPE_BASE) + { + png_warning(png_ptr, "Invalid filter type specified"); + filter_type = PNG_FILTER_TYPE_BASE; + } + +#ifdef PNG_WRITE_INTERLACING_SUPPORTED + if (interlace_type != PNG_INTERLACE_NONE && + interlace_type != PNG_INTERLACE_ADAM7) + { + png_warning(png_ptr, "Invalid interlace type specified"); + interlace_type = PNG_INTERLACE_ADAM7; + } +#else + interlace_type=PNG_INTERLACE_NONE; +#endif + + /* Save the relevent information */ + png_ptr->bit_depth = (png_byte)bit_depth; + png_ptr->color_type = (png_byte)color_type; + png_ptr->interlaced = (png_byte)interlace_type; +#if defined(PNG_MNG_FEATURES_SUPPORTED) + png_ptr->filter_type = (png_byte)filter_type; +#endif + png_ptr->compression_type = (png_byte)compression_type; + png_ptr->width = width; + png_ptr->height = height; + + png_ptr->pixel_depth = (png_byte)(bit_depth * png_ptr->channels); + png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, width); + /* Set the usr info, so any transformations can modify it */ + png_ptr->usr_width = png_ptr->width; + png_ptr->usr_bit_depth = png_ptr->bit_depth; + png_ptr->usr_channels = png_ptr->channels; + + /* Pack the header information into the buffer */ + png_save_uint_32(buf, width); + png_save_uint_32(buf + 4, height); + buf[8] = (png_byte)bit_depth; + buf[9] = (png_byte)color_type; + buf[10] = (png_byte)compression_type; + buf[11] = (png_byte)filter_type; + buf[12] = (png_byte)interlace_type; + + /* Write the chunk */ + png_write_chunk(png_ptr, (png_bytep)png_IHDR, buf, (png_size_t)13); + + /* Initialize zlib with PNG info */ + png_ptr->zstream.zalloc = png_zalloc; + png_ptr->zstream.zfree = png_zfree; + png_ptr->zstream.opaque = (voidpf)png_ptr; + if (!(png_ptr->do_filter)) + { + if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE || + png_ptr->bit_depth < 8) + png_ptr->do_filter = PNG_FILTER_NONE; + else + png_ptr->do_filter = PNG_ALL_FILTERS; + } + if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_STRATEGY)) + { + if (png_ptr->do_filter != PNG_FILTER_NONE) + png_ptr->zlib_strategy = Z_FILTERED; + else + png_ptr->zlib_strategy = Z_DEFAULT_STRATEGY; + } + if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_LEVEL)) + png_ptr->zlib_level = Z_DEFAULT_COMPRESSION; + if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL)) + png_ptr->zlib_mem_level = 8; + if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_WINDOW_BITS)) + png_ptr->zlib_window_bits = 15; + if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_METHOD)) + png_ptr->zlib_method = 8; + ret = deflateInit2(&png_ptr->zstream, png_ptr->zlib_level, + png_ptr->zlib_method, png_ptr->zlib_window_bits, + png_ptr->zlib_mem_level, png_ptr->zlib_strategy); + if (ret != Z_OK) + { + if (ret == Z_VERSION_ERROR) png_error(png_ptr, + "zlib failed to initialize compressor -- version error"); + if (ret == Z_STREAM_ERROR) png_error(png_ptr, + "zlib failed to initialize compressor -- stream error"); + if (ret == Z_MEM_ERROR) png_error(png_ptr, + "zlib failed to initialize compressor -- mem error"); + png_error(png_ptr, "zlib failed to initialize compressor"); + } + png_ptr->zstream.next_out = png_ptr->zbuf; + png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; + /* libpng is not interested in zstream.data_type */ + /* Set it to a predefined value, to avoid its evaluation inside zlib */ + png_ptr->zstream.data_type = Z_BINARY; + + png_ptr->mode = PNG_HAVE_IHDR; +} + +/* Write the palette. We are careful not to trust png_color to be in the + * correct order for PNG, so people can redefine it to any convenient + * structure. + */ +void /* PRIVATE */ +png_write_PLTE(png_structp png_ptr, png_colorp palette, png_uint_32 num_pal) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_PLTE; +#endif + png_uint_32 i; + png_colorp pal_ptr; + png_byte buf[3]; + + png_debug(1, "in png_write_PLTE"); + if (( +#if defined(PNG_MNG_FEATURES_SUPPORTED) + !(png_ptr->mng_features_permitted & PNG_FLAG_MNG_EMPTY_PLTE) && +#endif + num_pal == 0) || num_pal > 256) + { + if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) + { + png_error(png_ptr, "Invalid number of colors in palette"); + } + else + { + png_warning(png_ptr, "Invalid number of colors in palette"); + return; + } + } + + if (!(png_ptr->color_type&PNG_COLOR_MASK_COLOR)) + { + png_warning(png_ptr, + "Ignoring request to write a PLTE chunk in grayscale PNG"); + return; + } + + png_ptr->num_palette = (png_uint_16)num_pal; + png_debug1(3, "num_palette = %d", png_ptr->num_palette); + + png_write_chunk_start(png_ptr, (png_bytep)png_PLTE, + (png_uint_32)(num_pal * 3)); +#ifndef PNG_NO_POINTER_INDEXING + for (i = 0, pal_ptr = palette; i < num_pal; i++, pal_ptr++) + { + buf[0] = pal_ptr->red; + buf[1] = pal_ptr->green; + buf[2] = pal_ptr->blue; + png_write_chunk_data(png_ptr, buf, (png_size_t)3); + } +#else + /* This is a little slower but some buggy compilers need to do this instead */ + pal_ptr=palette; + for (i = 0; i < num_pal; i++) + { + buf[0] = pal_ptr[i].red; + buf[1] = pal_ptr[i].green; + buf[2] = pal_ptr[i].blue; + png_write_chunk_data(png_ptr, buf, (png_size_t)3); + } +#endif + png_write_chunk_end(png_ptr); + png_ptr->mode |= PNG_HAVE_PLTE; +} + +/* Write an IDAT chunk */ +void /* PRIVATE */ +png_write_IDAT(png_structp png_ptr, png_bytep data, png_size_t length) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_IDAT; +#endif + png_debug(1, "in png_write_IDAT"); + + /* Optimize the CMF field in the zlib stream. */ + /* This hack of the zlib stream is compliant to the stream specification. */ + if (!(png_ptr->mode & PNG_HAVE_IDAT) && + png_ptr->compression_type == PNG_COMPRESSION_TYPE_BASE) + { + unsigned int z_cmf = data[0]; /* zlib compression method and flags */ + if ((z_cmf & 0x0f) == 8 && (z_cmf & 0xf0) <= 0x70) + { + /* Avoid memory underflows and multiplication overflows. + * + * The conditions below are practically always satisfied; + * however, they still must be checked. + */ + if (length >= 2 && + png_ptr->height < 16384 && png_ptr->width < 16384) + { + png_uint_32 uncompressed_idat_size = png_ptr->height * + ((png_ptr->width * + png_ptr->channels * png_ptr->bit_depth + 15) >> 3); + unsigned int z_cinfo = z_cmf >> 4; + unsigned int half_z_window_size = 1 << (z_cinfo + 7); + while (uncompressed_idat_size <= half_z_window_size && + half_z_window_size >= 256) + { + z_cinfo--; + half_z_window_size >>= 1; + } + z_cmf = (z_cmf & 0x0f) | (z_cinfo << 4); + if (data[0] != (png_byte)z_cmf) + { + data[0] = (png_byte)z_cmf; + data[1] &= 0xe0; + data[1] += (png_byte)(0x1f - ((z_cmf << 8) + data[1]) % 0x1f); + } + } + } + else + png_error(png_ptr, + "Invalid zlib compression method or flags in IDAT"); + } + + png_write_chunk(png_ptr, (png_bytep)png_IDAT, data, length); + png_ptr->mode |= PNG_HAVE_IDAT; +} + +/* Write an IEND chunk */ +void /* PRIVATE */ +png_write_IEND(png_structp png_ptr) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_IEND; +#endif + png_debug(1, "in png_write_IEND"); + png_write_chunk(png_ptr, (png_bytep)png_IEND, png_bytep_NULL, + (png_size_t)0); + png_ptr->mode |= PNG_HAVE_IEND; +} + +#if defined(PNG_WRITE_gAMA_SUPPORTED) +/* Write a gAMA chunk */ +#ifdef PNG_FLOATING_POINT_SUPPORTED +void /* PRIVATE */ +png_write_gAMA(png_structp png_ptr, double file_gamma) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_gAMA; +#endif + png_uint_32 igamma; + png_byte buf[4]; + + png_debug(1, "in png_write_gAMA"); + /* file_gamma is saved in 1/100,000ths */ + igamma = (png_uint_32)(file_gamma * 100000.0 + 0.5); + png_save_uint_32(buf, igamma); + png_write_chunk(png_ptr, (png_bytep)png_gAMA, buf, (png_size_t)4); +} +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED +void /* PRIVATE */ +png_write_gAMA_fixed(png_structp png_ptr, png_fixed_point file_gamma) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_gAMA; +#endif + png_byte buf[4]; + + png_debug(1, "in png_write_gAMA"); + /* file_gamma is saved in 1/100,000ths */ + png_save_uint_32(buf, (png_uint_32)file_gamma); + png_write_chunk(png_ptr, (png_bytep)png_gAMA, buf, (png_size_t)4); +} +#endif +#endif + +#if defined(PNG_WRITE_sRGB_SUPPORTED) +/* Write a sRGB chunk */ +void /* PRIVATE */ +png_write_sRGB(png_structp png_ptr, int srgb_intent) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_sRGB; +#endif + png_byte buf[1]; + + png_debug(1, "in png_write_sRGB"); + if (srgb_intent >= PNG_sRGB_INTENT_LAST) + png_warning(png_ptr, + "Invalid sRGB rendering intent specified"); + buf[0]=(png_byte)srgb_intent; + png_write_chunk(png_ptr, (png_bytep)png_sRGB, buf, (png_size_t)1); +} +#endif + +#if defined(PNG_WRITE_iCCP_SUPPORTED) +/* Write an iCCP chunk */ +void /* PRIVATE */ +png_write_iCCP(png_structp png_ptr, png_charp name, int compression_type, + png_charp profile, int profile_len) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_iCCP; +#endif + png_size_t name_len; + png_charp new_name; + compression_state comp; + int embedded_profile_len = 0; + + png_debug(1, "in png_write_iCCP"); + + comp.num_output_ptr = 0; + comp.max_output_ptr = 0; + comp.output_ptr = NULL; + comp.input = NULL; + comp.input_len = 0; + + if ((name_len = png_check_keyword(png_ptr, name, + &new_name)) == 0) + return; + + if (compression_type != PNG_COMPRESSION_TYPE_BASE) + png_warning(png_ptr, "Unknown compression type in iCCP chunk"); + + if (profile == NULL) + profile_len = 0; + + if (profile_len > 3) + embedded_profile_len = + ((*( (png_bytep)profile ))<<24) | + ((*( (png_bytep)profile + 1))<<16) | + ((*( (png_bytep)profile + 2))<< 8) | + ((*( (png_bytep)profile + 3)) ); + + if (profile_len < embedded_profile_len) + { + png_warning(png_ptr, + "Embedded profile length too large in iCCP chunk"); + png_free(png_ptr, new_name); + return; + } + + if (profile_len > embedded_profile_len) + { + png_warning(png_ptr, + "Truncating profile to actual length in iCCP chunk"); + profile_len = embedded_profile_len; + } + + if (profile_len) + profile_len = png_text_compress(png_ptr, profile, + (png_size_t)profile_len, PNG_COMPRESSION_TYPE_BASE, &comp); + + /* Make sure we include the NULL after the name and the compression type */ + png_write_chunk_start(png_ptr, (png_bytep)png_iCCP, + (png_uint_32)(name_len + profile_len + 2)); + new_name[name_len + 1] = 0x00; + png_write_chunk_data(png_ptr, (png_bytep)new_name, + (png_size_t)(name_len + 2)); + + if (profile_len) + png_write_compressed_data_out(png_ptr, &comp); + + png_write_chunk_end(png_ptr); + png_free(png_ptr, new_name); +} +#endif + +#if defined(PNG_WRITE_sPLT_SUPPORTED) +/* Write a sPLT chunk */ +void /* PRIVATE */ +png_write_sPLT(png_structp png_ptr, png_sPLT_tp spalette) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_sPLT; +#endif + png_size_t name_len; + png_charp new_name; + png_byte entrybuf[10]; + int entry_size = (spalette->depth == 8 ? 6 : 10); + int palette_size = entry_size * spalette->nentries; + png_sPLT_entryp ep; +#ifdef PNG_NO_POINTER_INDEXING + int i; +#endif + + png_debug(1, "in png_write_sPLT"); + if ((name_len = png_check_keyword(png_ptr,spalette->name, &new_name))==0) + return; + + /* Make sure we include the NULL after the name */ + png_write_chunk_start(png_ptr, (png_bytep)png_sPLT, + (png_uint_32)(name_len + 2 + palette_size)); + png_write_chunk_data(png_ptr, (png_bytep)new_name, + (png_size_t)(name_len + 1)); + png_write_chunk_data(png_ptr, (png_bytep)&spalette->depth, (png_size_t)1); + + /* Loop through each palette entry, writing appropriately */ +#ifndef PNG_NO_POINTER_INDEXING + for (ep = spalette->entries; epentries + spalette->nentries; ep++) + { + if (spalette->depth == 8) + { + entrybuf[0] = (png_byte)ep->red; + entrybuf[1] = (png_byte)ep->green; + entrybuf[2] = (png_byte)ep->blue; + entrybuf[3] = (png_byte)ep->alpha; + png_save_uint_16(entrybuf + 4, ep->frequency); + } + else + { + png_save_uint_16(entrybuf + 0, ep->red); + png_save_uint_16(entrybuf + 2, ep->green); + png_save_uint_16(entrybuf + 4, ep->blue); + png_save_uint_16(entrybuf + 6, ep->alpha); + png_save_uint_16(entrybuf + 8, ep->frequency); + } + png_write_chunk_data(png_ptr, entrybuf, (png_size_t)entry_size); + } +#else + ep=spalette->entries; + for (i=0; i>spalette->nentries; i++) + { + if (spalette->depth == 8) + { + entrybuf[0] = (png_byte)ep[i].red; + entrybuf[1] = (png_byte)ep[i].green; + entrybuf[2] = (png_byte)ep[i].blue; + entrybuf[3] = (png_byte)ep[i].alpha; + png_save_uint_16(entrybuf + 4, ep[i].frequency); + } + else + { + png_save_uint_16(entrybuf + 0, ep[i].red); + png_save_uint_16(entrybuf + 2, ep[i].green); + png_save_uint_16(entrybuf + 4, ep[i].blue); + png_save_uint_16(entrybuf + 6, ep[i].alpha); + png_save_uint_16(entrybuf + 8, ep[i].frequency); + } + png_write_chunk_data(png_ptr, entrybuf, (png_size_t)entry_size); + } +#endif + + png_write_chunk_end(png_ptr); + png_free(png_ptr, new_name); +} +#endif + +#if defined(PNG_WRITE_sBIT_SUPPORTED) +/* Write the sBIT chunk */ +void /* PRIVATE */ +png_write_sBIT(png_structp png_ptr, png_color_8p sbit, int color_type) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_sBIT; +#endif + png_byte buf[4]; + png_size_t size; + + png_debug(1, "in png_write_sBIT"); + /* Make sure we don't depend upon the order of PNG_COLOR_8 */ + if (color_type & PNG_COLOR_MASK_COLOR) + { + png_byte maxbits; + + maxbits = (png_byte)(color_type==PNG_COLOR_TYPE_PALETTE ? 8 : + png_ptr->usr_bit_depth); + if (sbit->red == 0 || sbit->red > maxbits || + sbit->green == 0 || sbit->green > maxbits || + sbit->blue == 0 || sbit->blue > maxbits) + { + png_warning(png_ptr, "Invalid sBIT depth specified"); + return; + } + buf[0] = sbit->red; + buf[1] = sbit->green; + buf[2] = sbit->blue; + size = 3; + } + else + { + if (sbit->gray == 0 || sbit->gray > png_ptr->usr_bit_depth) + { + png_warning(png_ptr, "Invalid sBIT depth specified"); + return; + } + buf[0] = sbit->gray; + size = 1; + } + + if (color_type & PNG_COLOR_MASK_ALPHA) + { + if (sbit->alpha == 0 || sbit->alpha > png_ptr->usr_bit_depth) + { + png_warning(png_ptr, "Invalid sBIT depth specified"); + return; + } + buf[size++] = sbit->alpha; + } + + png_write_chunk(png_ptr, (png_bytep)png_sBIT, buf, size); +} +#endif + +#if defined(PNG_WRITE_cHRM_SUPPORTED) +/* Write the cHRM chunk */ +#ifdef PNG_FLOATING_POINT_SUPPORTED +void /* PRIVATE */ +png_write_cHRM(png_structp png_ptr, double white_x, double white_y, + double red_x, double red_y, double green_x, double green_y, + double blue_x, double blue_y) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_cHRM; +#endif + png_byte buf[32]; + + png_fixed_point int_white_x, int_white_y, int_red_x, int_red_y, + int_green_x, int_green_y, int_blue_x, int_blue_y; + + png_debug(1, "in png_write_cHRM"); + + int_white_x = (png_uint_32)(white_x * 100000.0 + 0.5); + int_white_y = (png_uint_32)(white_y * 100000.0 + 0.5); + int_red_x = (png_uint_32)(red_x * 100000.0 + 0.5); + int_red_y = (png_uint_32)(red_y * 100000.0 + 0.5); + int_green_x = (png_uint_32)(green_x * 100000.0 + 0.5); + int_green_y = (png_uint_32)(green_y * 100000.0 + 0.5); + int_blue_x = (png_uint_32)(blue_x * 100000.0 + 0.5); + int_blue_y = (png_uint_32)(blue_y * 100000.0 + 0.5); + +#if !defined(PNG_NO_CHECK_cHRM) + if (png_check_cHRM_fixed(png_ptr, int_white_x, int_white_y, + int_red_x, int_red_y, int_green_x, int_green_y, int_blue_x, int_blue_y)) +#endif + { + /* Each value is saved in 1/100,000ths */ + + png_save_uint_32(buf, int_white_x); + png_save_uint_32(buf + 4, int_white_y); + + png_save_uint_32(buf + 8, int_red_x); + png_save_uint_32(buf + 12, int_red_y); + + png_save_uint_32(buf + 16, int_green_x); + png_save_uint_32(buf + 20, int_green_y); + + png_save_uint_32(buf + 24, int_blue_x); + png_save_uint_32(buf + 28, int_blue_y); + + png_write_chunk(png_ptr, (png_bytep)png_cHRM, buf, (png_size_t)32); + } +} +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED +void /* PRIVATE */ +png_write_cHRM_fixed(png_structp png_ptr, png_fixed_point white_x, + png_fixed_point white_y, png_fixed_point red_x, png_fixed_point red_y, + png_fixed_point green_x, png_fixed_point green_y, png_fixed_point blue_x, + png_fixed_point blue_y) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_cHRM; +#endif + png_byte buf[32]; + + png_debug(1, "in png_write_cHRM"); + /* Each value is saved in 1/100,000ths */ +#if !defined(PNG_NO_CHECK_cHRM) + if (png_check_cHRM_fixed(png_ptr, white_x, white_y, red_x, red_y, + green_x, green_y, blue_x, blue_y)) +#endif + { + png_save_uint_32(buf, (png_uint_32)white_x); + png_save_uint_32(buf + 4, (png_uint_32)white_y); + + png_save_uint_32(buf + 8, (png_uint_32)red_x); + png_save_uint_32(buf + 12, (png_uint_32)red_y); + + png_save_uint_32(buf + 16, (png_uint_32)green_x); + png_save_uint_32(buf + 20, (png_uint_32)green_y); + + png_save_uint_32(buf + 24, (png_uint_32)blue_x); + png_save_uint_32(buf + 28, (png_uint_32)blue_y); + + png_write_chunk(png_ptr, (png_bytep)png_cHRM, buf, (png_size_t)32); + } +} +#endif +#endif + +#if defined(PNG_WRITE_tRNS_SUPPORTED) +/* Write the tRNS chunk */ +void /* PRIVATE */ +png_write_tRNS(png_structp png_ptr, png_bytep trans, png_color_16p tran, + int num_trans, int color_type) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_tRNS; +#endif + png_byte buf[6]; + + png_debug(1, "in png_write_tRNS"); + if (color_type == PNG_COLOR_TYPE_PALETTE) + { + if (num_trans <= 0 || num_trans > (int)png_ptr->num_palette) + { + png_warning(png_ptr, "Invalid number of transparent colors specified"); + return; + } + /* Write the chunk out as it is */ + png_write_chunk(png_ptr, (png_bytep)png_tRNS, trans, + (png_size_t)num_trans); + } + else if (color_type == PNG_COLOR_TYPE_GRAY) + { + /* One 16 bit value */ + if (tran->gray >= (1 << png_ptr->bit_depth)) + { + png_warning(png_ptr, + "Ignoring attempt to write tRNS chunk out-of-range for bit_depth"); + return; + } + png_save_uint_16(buf, tran->gray); + png_write_chunk(png_ptr, (png_bytep)png_tRNS, buf, (png_size_t)2); + } + else if (color_type == PNG_COLOR_TYPE_RGB) + { + /* Three 16 bit values */ + png_save_uint_16(buf, tran->red); + png_save_uint_16(buf + 2, tran->green); + png_save_uint_16(buf + 4, tran->blue); + if (png_ptr->bit_depth == 8 && (buf[0] | buf[2] | buf[4])) + { + png_warning(png_ptr, + "Ignoring attempt to write 16-bit tRNS chunk when bit_depth is 8"); + return; + } + png_write_chunk(png_ptr, (png_bytep)png_tRNS, buf, (png_size_t)6); + } + else + { + png_warning(png_ptr, "Can't write tRNS with an alpha channel"); + } +} +#endif + +#if defined(PNG_WRITE_bKGD_SUPPORTED) +/* Write the background chunk */ +void /* PRIVATE */ +png_write_bKGD(png_structp png_ptr, png_color_16p back, int color_type) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_bKGD; +#endif + png_byte buf[6]; + + png_debug(1, "in png_write_bKGD"); + if (color_type == PNG_COLOR_TYPE_PALETTE) + { + if ( +#if defined(PNG_MNG_FEATURES_SUPPORTED) + (png_ptr->num_palette || + (!(png_ptr->mng_features_permitted & PNG_FLAG_MNG_EMPTY_PLTE))) && +#endif + back->index >= png_ptr->num_palette) + { + png_warning(png_ptr, "Invalid background palette index"); + return; + } + buf[0] = back->index; + png_write_chunk(png_ptr, (png_bytep)png_bKGD, buf, (png_size_t)1); + } + else if (color_type & PNG_COLOR_MASK_COLOR) + { + png_save_uint_16(buf, back->red); + png_save_uint_16(buf + 2, back->green); + png_save_uint_16(buf + 4, back->blue); + if (png_ptr->bit_depth == 8 && (buf[0] | buf[2] | buf[4])) + { + png_warning(png_ptr, + "Ignoring attempt to write 16-bit bKGD chunk when bit_depth is 8"); + return; + } + png_write_chunk(png_ptr, (png_bytep)png_bKGD, buf, (png_size_t)6); + } + else + { + if (back->gray >= (1 << png_ptr->bit_depth)) + { + png_warning(png_ptr, + "Ignoring attempt to write bKGD chunk out-of-range for bit_depth"); + return; + } + png_save_uint_16(buf, back->gray); + png_write_chunk(png_ptr, (png_bytep)png_bKGD, buf, (png_size_t)2); + } +} +#endif + +#if defined(PNG_WRITE_hIST_SUPPORTED) +/* Write the histogram */ +void /* PRIVATE */ +png_write_hIST(png_structp png_ptr, png_uint_16p hist, int num_hist) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_hIST; +#endif + int i; + png_byte buf[3]; + + png_debug(1, "in png_write_hIST"); + if (num_hist > (int)png_ptr->num_palette) + { + png_debug2(3, "num_hist = %d, num_palette = %d", num_hist, + png_ptr->num_palette); + png_warning(png_ptr, "Invalid number of histogram entries specified"); + return; + } + + png_write_chunk_start(png_ptr, (png_bytep)png_hIST, + (png_uint_32)(num_hist * 2)); + for (i = 0; i < num_hist; i++) + { + png_save_uint_16(buf, hist[i]); + png_write_chunk_data(png_ptr, buf, (png_size_t)2); + } + png_write_chunk_end(png_ptr); +} +#endif + +#if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_pCAL_SUPPORTED) || \ + defined(PNG_WRITE_iCCP_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED) +/* Check that the tEXt or zTXt keyword is valid per PNG 1.0 specification, + * and if invalid, correct the keyword rather than discarding the entire + * chunk. The PNG 1.0 specification requires keywords 1-79 characters in + * length, forbids leading or trailing whitespace, multiple internal spaces, + * and the non-break space (0x80) from ISO 8859-1. Returns keyword length. + * + * The new_key is allocated to hold the corrected keyword and must be freed + * by the calling routine. This avoids problems with trying to write to + * static keywords without having to have duplicate copies of the strings. + */ +png_size_t /* PRIVATE */ +png_check_keyword(png_structp png_ptr, png_charp key, png_charpp new_key) +{ + png_size_t key_len; + png_charp kp, dp; + int kflag; + int kwarn=0; + + png_debug(1, "in png_check_keyword"); + *new_key = NULL; + + if (key == NULL || (key_len = png_strlen(key)) == 0) + { + png_warning(png_ptr, "zero length keyword"); + return ((png_size_t)0); + } + + png_debug1(2, "Keyword to be checked is '%s'", key); + + *new_key = (png_charp)png_malloc_warn(png_ptr, (png_uint_32)(key_len + 2)); + if (*new_key == NULL) + { + png_warning(png_ptr, "Out of memory while procesing keyword"); + return ((png_size_t)0); + } + + /* Replace non-printing characters with a blank and print a warning */ + for (kp = key, dp = *new_key; *kp != '\0'; kp++, dp++) + { + if ((png_byte)*kp < 0x20 || + ((png_byte)*kp > 0x7E && (png_byte)*kp < 0xA1)) + { +#if !defined(PNG_NO_STDIO) && !defined(_WIN32_WCE) + char msg[40]; + + png_snprintf(msg, 40, + "invalid keyword character 0x%02X", (png_byte)*kp); + png_warning(png_ptr, msg); +#else + png_warning(png_ptr, "invalid character in keyword"); +#endif + *dp = ' '; + } + else + { + *dp = *kp; + } + } + *dp = '\0'; + + /* Remove any trailing white space. */ + kp = *new_key + key_len - 1; + if (*kp == ' ') + { + png_warning(png_ptr, "trailing spaces removed from keyword"); + + while (*kp == ' ') + { + *(kp--) = '\0'; + key_len--; + } + } + + /* Remove any leading white space. */ + kp = *new_key; + if (*kp == ' ') + { + png_warning(png_ptr, "leading spaces removed from keyword"); + + while (*kp == ' ') + { + kp++; + key_len--; + } + } + + png_debug1(2, "Checking for multiple internal spaces in '%s'", kp); + + /* Remove multiple internal spaces. */ + for (kflag = 0, dp = *new_key; *kp != '\0'; kp++) + { + if (*kp == ' ' && kflag == 0) + { + *(dp++) = *kp; + kflag = 1; + } + else if (*kp == ' ') + { + key_len--; + kwarn=1; + } + else + { + *(dp++) = *kp; + kflag = 0; + } + } + *dp = '\0'; + if (kwarn) + png_warning(png_ptr, "extra interior spaces removed from keyword"); + + if (key_len == 0) + { + png_free(png_ptr, *new_key); + *new_key=NULL; + png_warning(png_ptr, "Zero length keyword"); + } + + if (key_len > 79) + { + png_warning(png_ptr, "keyword length must be 1 - 79 characters"); + (*new_key)[79] = '\0'; + key_len = 79; + } + + return (key_len); +} +#endif + +#if defined(PNG_WRITE_tEXt_SUPPORTED) +/* Write a tEXt chunk */ +void /* PRIVATE */ +png_write_tEXt(png_structp png_ptr, png_charp key, png_charp text, + png_size_t text_len) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_tEXt; +#endif + png_size_t key_len; + png_charp new_key; + + png_debug(1, "in png_write_tEXt"); + if ((key_len = png_check_keyword(png_ptr, key, &new_key))==0) + return; + + if (text == NULL || *text == '\0') + text_len = 0; + else + text_len = png_strlen(text); + + /* Make sure we include the 0 after the key */ + png_write_chunk_start(png_ptr, (png_bytep)png_tEXt, + (png_uint_32)(key_len + text_len + 1)); + /* + * We leave it to the application to meet PNG-1.0 requirements on the + * contents of the text. PNG-1.0 through PNG-1.2 discourage the use of + * any non-Latin-1 characters except for NEWLINE. ISO PNG will forbid them. + * The NUL character is forbidden by PNG-1.0 through PNG-1.2 and ISO PNG. + */ + png_write_chunk_data(png_ptr, (png_bytep)new_key, + (png_size_t)(key_len + 1)); + if (text_len) + png_write_chunk_data(png_ptr, (png_bytep)text, (png_size_t)text_len); + + png_write_chunk_end(png_ptr); + png_free(png_ptr, new_key); +} +#endif + +#if defined(PNG_WRITE_zTXt_SUPPORTED) +/* Write a compressed text chunk */ +void /* PRIVATE */ +png_write_zTXt(png_structp png_ptr, png_charp key, png_charp text, + png_size_t text_len, int compression) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_zTXt; +#endif + png_size_t key_len; + char buf[1]; + png_charp new_key; + compression_state comp; + + png_debug(1, "in png_write_zTXt"); + + comp.num_output_ptr = 0; + comp.max_output_ptr = 0; + comp.output_ptr = NULL; + comp.input = NULL; + comp.input_len = 0; + + if ((key_len = png_check_keyword(png_ptr, key, &new_key))==0) + { + png_free(png_ptr, new_key); + return; + } + + if (text == NULL || *text == '\0' || compression==PNG_TEXT_COMPRESSION_NONE) + { + png_write_tEXt(png_ptr, new_key, text, (png_size_t)0); + png_free(png_ptr, new_key); + return; + } + + text_len = png_strlen(text); + + /* Compute the compressed data; do it now for the length */ + text_len = png_text_compress(png_ptr, text, text_len, compression, + &comp); + + /* Write start of chunk */ + png_write_chunk_start(png_ptr, (png_bytep)png_zTXt, + (png_uint_32)(key_len+text_len + 2)); + /* Write key */ + png_write_chunk_data(png_ptr, (png_bytep)new_key, + (png_size_t)(key_len + 1)); + png_free(png_ptr, new_key); + + buf[0] = (png_byte)compression; + /* Write compression */ + png_write_chunk_data(png_ptr, (png_bytep)buf, (png_size_t)1); + /* Write the compressed data */ + png_write_compressed_data_out(png_ptr, &comp); + + /* Close the chunk */ + png_write_chunk_end(png_ptr); +} +#endif + +#if defined(PNG_WRITE_iTXt_SUPPORTED) +/* Write an iTXt chunk */ +void /* PRIVATE */ +png_write_iTXt(png_structp png_ptr, int compression, png_charp key, + png_charp lang, png_charp lang_key, png_charp text) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_iTXt; +#endif + png_size_t lang_len, key_len, lang_key_len, text_len; + png_charp new_lang; + png_charp new_key = NULL; + png_byte cbuf[2]; + compression_state comp; + + png_debug(1, "in png_write_iTXt"); + + comp.num_output_ptr = 0; + comp.max_output_ptr = 0; + comp.output_ptr = NULL; + comp.input = NULL; + + if ((key_len = png_check_keyword(png_ptr, key, &new_key))==0) + return; + + if ((lang_len = png_check_keyword(png_ptr, lang, &new_lang))==0) + { + png_warning(png_ptr, "Empty language field in iTXt chunk"); + new_lang = NULL; + lang_len = 0; + } + + if (lang_key == NULL) + lang_key_len = 0; + else + lang_key_len = png_strlen(lang_key); + + if (text == NULL) + text_len = 0; + else + text_len = png_strlen(text); + + /* Compute the compressed data; do it now for the length */ + text_len = png_text_compress(png_ptr, text, text_len, compression-2, + &comp); + + + /* Make sure we include the compression flag, the compression byte, + * and the NULs after the key, lang, and lang_key parts */ + + png_write_chunk_start(png_ptr, (png_bytep)png_iTXt, + (png_uint_32)( + 5 /* comp byte, comp flag, terminators for key, lang and lang_key */ + + key_len + + lang_len + + lang_key_len + + text_len)); + + /* We leave it to the application to meet PNG-1.0 requirements on the + * contents of the text. PNG-1.0 through PNG-1.2 discourage the use of + * any non-Latin-1 characters except for NEWLINE. ISO PNG will forbid them. + * The NUL character is forbidden by PNG-1.0 through PNG-1.2 and ISO PNG. + */ + png_write_chunk_data(png_ptr, (png_bytep)new_key, + (png_size_t)(key_len + 1)); + + /* Set the compression flag */ + if (compression == PNG_ITXT_COMPRESSION_NONE || \ + compression == PNG_TEXT_COMPRESSION_NONE) + cbuf[0] = 0; + else /* compression == PNG_ITXT_COMPRESSION_zTXt */ + cbuf[0] = 1; + /* Set the compression method */ + cbuf[1] = 0; + png_write_chunk_data(png_ptr, cbuf, (png_size_t)2); + + cbuf[0] = 0; + png_write_chunk_data(png_ptr, (new_lang ? (png_bytep)new_lang : cbuf), + (png_size_t)(lang_len + 1)); + png_write_chunk_data(png_ptr, (lang_key ? (png_bytep)lang_key : cbuf), + (png_size_t)(lang_key_len + 1)); + png_write_compressed_data_out(png_ptr, &comp); + + png_write_chunk_end(png_ptr); + png_free(png_ptr, new_key); + png_free(png_ptr, new_lang); +} +#endif + +#if defined(PNG_WRITE_oFFs_SUPPORTED) +/* Write the oFFs chunk */ +void /* PRIVATE */ +png_write_oFFs(png_structp png_ptr, png_int_32 x_offset, png_int_32 y_offset, + int unit_type) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_oFFs; +#endif + png_byte buf[9]; + + png_debug(1, "in png_write_oFFs"); + if (unit_type >= PNG_OFFSET_LAST) + png_warning(png_ptr, "Unrecognized unit type for oFFs chunk"); + + png_save_int_32(buf, x_offset); + png_save_int_32(buf + 4, y_offset); + buf[8] = (png_byte)unit_type; + + png_write_chunk(png_ptr, (png_bytep)png_oFFs, buf, (png_size_t)9); +} +#endif +#if defined(PNG_WRITE_pCAL_SUPPORTED) +/* Write the pCAL chunk (described in the PNG extensions document) */ +void /* PRIVATE */ +png_write_pCAL(png_structp png_ptr, png_charp purpose, png_int_32 X0, + png_int_32 X1, int type, int nparams, png_charp units, png_charpp params) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_pCAL; +#endif + png_size_t purpose_len, units_len, total_len; + png_uint_32p params_len; + png_byte buf[10]; + png_charp new_purpose; + int i; + + png_debug1(1, "in png_write_pCAL (%d parameters)", nparams); + if (type >= PNG_EQUATION_LAST) + png_warning(png_ptr, "Unrecognized equation type for pCAL chunk"); + + purpose_len = png_check_keyword(png_ptr, purpose, &new_purpose) + 1; + png_debug1(3, "pCAL purpose length = %d", (int)purpose_len); + units_len = png_strlen(units) + (nparams == 0 ? 0 : 1); + png_debug1(3, "pCAL units length = %d", (int)units_len); + total_len = purpose_len + units_len + 10; + + params_len = (png_uint_32p)png_malloc(png_ptr, + (png_uint_32)(nparams * png_sizeof(png_uint_32))); + + /* Find the length of each parameter, making sure we don't count the + null terminator for the last parameter. */ + for (i = 0; i < nparams; i++) + { + params_len[i] = png_strlen(params[i]) + (i == nparams - 1 ? 0 : 1); + png_debug2(3, "pCAL parameter %d length = %lu", i, + (unsigned long) params_len[i]); + total_len += (png_size_t)params_len[i]; + } + + png_debug1(3, "pCAL total length = %d", (int)total_len); + png_write_chunk_start(png_ptr, (png_bytep)png_pCAL, (png_uint_32)total_len); + png_write_chunk_data(png_ptr, (png_bytep)new_purpose, + (png_size_t)purpose_len); + png_save_int_32(buf, X0); + png_save_int_32(buf + 4, X1); + buf[8] = (png_byte)type; + buf[9] = (png_byte)nparams; + png_write_chunk_data(png_ptr, buf, (png_size_t)10); + png_write_chunk_data(png_ptr, (png_bytep)units, (png_size_t)units_len); + + png_free(png_ptr, new_purpose); + + for (i = 0; i < nparams; i++) + { + png_write_chunk_data(png_ptr, (png_bytep)params[i], + (png_size_t)params_len[i]); + } + + png_free(png_ptr, params_len); + png_write_chunk_end(png_ptr); +} +#endif + +#if defined(PNG_WRITE_sCAL_SUPPORTED) +/* Write the sCAL chunk */ +#if defined(PNG_FLOATING_POINT_SUPPORTED) && !defined(PNG_NO_STDIO) +void /* PRIVATE */ +png_write_sCAL(png_structp png_ptr, int unit, double width, double height) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_sCAL; +#endif + char buf[64]; + png_size_t total_len; + + png_debug(1, "in png_write_sCAL"); + + buf[0] = (char)unit; +#if defined(_WIN32_WCE) +/* sprintf() function is not supported on WindowsCE */ + { + wchar_t wc_buf[32]; + size_t wc_len; + swprintf(wc_buf, TEXT("%12.12e"), width); + wc_len = wcslen(wc_buf); + WideCharToMultiByte(CP_ACP, 0, wc_buf, -1, buf + 1, wc_len, NULL, NULL); + total_len = wc_len + 2; + swprintf(wc_buf, TEXT("%12.12e"), height); + wc_len = wcslen(wc_buf); + WideCharToMultiByte(CP_ACP, 0, wc_buf, -1, buf + total_len, wc_len, + NULL, NULL); + total_len += wc_len; + } +#else + png_snprintf(buf + 1, 63, "%12.12e", width); + total_len = 1 + png_strlen(buf + 1) + 1; + png_snprintf(buf + total_len, 64-total_len, "%12.12e", height); + total_len += png_strlen(buf + total_len); +#endif + + png_debug1(3, "sCAL total length = %u", (unsigned int)total_len); + png_write_chunk(png_ptr, (png_bytep)png_sCAL, (png_bytep)buf, total_len); +} +#else +#ifdef PNG_FIXED_POINT_SUPPORTED +void /* PRIVATE */ +png_write_sCAL_s(png_structp png_ptr, int unit, png_charp width, + png_charp height) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_sCAL; +#endif + png_byte buf[64]; + png_size_t wlen, hlen, total_len; + + png_debug(1, "in png_write_sCAL_s"); + + wlen = png_strlen(width); + hlen = png_strlen(height); + total_len = wlen + hlen + 2; + if (total_len > 64) + { + png_warning(png_ptr, "Can't write sCAL (buffer too small)"); + return; + } + + buf[0] = (png_byte)unit; + png_memcpy(buf + 1, width, wlen + 1); /* Append the '\0' here */ + png_memcpy(buf + wlen + 2, height, hlen); /* Do NOT append the '\0' here */ + + png_debug1(3, "sCAL total length = %u", (unsigned int)total_len); + png_write_chunk(png_ptr, (png_bytep)png_sCAL, buf, total_len); +} +#endif +#endif +#endif + +#if defined(PNG_WRITE_pHYs_SUPPORTED) +/* Write the pHYs chunk */ +void /* PRIVATE */ +png_write_pHYs(png_structp png_ptr, png_uint_32 x_pixels_per_unit, + png_uint_32 y_pixels_per_unit, + int unit_type) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_pHYs; +#endif + png_byte buf[9]; + + png_debug(1, "in png_write_pHYs"); + if (unit_type >= PNG_RESOLUTION_LAST) + png_warning(png_ptr, "Unrecognized unit type for pHYs chunk"); + + png_save_uint_32(buf, x_pixels_per_unit); + png_save_uint_32(buf + 4, y_pixels_per_unit); + buf[8] = (png_byte)unit_type; + + png_write_chunk(png_ptr, (png_bytep)png_pHYs, buf, (png_size_t)9); +} +#endif + +#if defined(PNG_WRITE_tIME_SUPPORTED) +/* Write the tIME chunk. Use either png_convert_from_struct_tm() + * or png_convert_from_time_t(), or fill in the structure yourself. + */ +void /* PRIVATE */ +png_write_tIME(png_structp png_ptr, png_timep mod_time) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + PNG_tIME; +#endif + png_byte buf[7]; + + png_debug(1, "in png_write_tIME"); + if (mod_time->month > 12 || mod_time->month < 1 || + mod_time->day > 31 || mod_time->day < 1 || + mod_time->hour > 23 || mod_time->second > 60) + { + png_warning(png_ptr, "Invalid time specified for tIME chunk"); + return; + } + + png_save_uint_16(buf, mod_time->year); + buf[2] = mod_time->month; + buf[3] = mod_time->day; + buf[4] = mod_time->hour; + buf[5] = mod_time->minute; + buf[6] = mod_time->second; + + png_write_chunk(png_ptr, (png_bytep)png_tIME, buf, (png_size_t)7); +} +#endif + +/* Initializes the row writing capability of libpng */ +void /* PRIVATE */ +png_write_start_row(png_structp png_ptr) +{ +#ifdef PNG_WRITE_INTERLACING_SUPPORTED +#ifdef PNG_USE_LOCAL_ARRAYS + /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ + + /* Start of interlace block */ + int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; + + /* Offset to next interlace block */ + int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; + + /* Start of interlace block in the y direction */ + int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1}; + + /* Offset to next interlace block in the y direction */ + int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2}; +#endif +#endif + + png_size_t buf_size; + + png_debug(1, "in png_write_start_row"); + buf_size = (png_size_t)(PNG_ROWBYTES( + png_ptr->usr_channels*png_ptr->usr_bit_depth, png_ptr->width) + 1); + + /* Set up row buffer */ + png_ptr->row_buf = (png_bytep)png_malloc(png_ptr, + (png_uint_32)buf_size); + png_ptr->row_buf[0] = PNG_FILTER_VALUE_NONE; + +#ifndef PNG_NO_WRITE_FILTER + /* Set up filtering buffer, if using this filter */ + if (png_ptr->do_filter & PNG_FILTER_SUB) + { + png_ptr->sub_row = (png_bytep)png_malloc(png_ptr, + (png_uint_32)(png_ptr->rowbytes + 1)); + png_ptr->sub_row[0] = PNG_FILTER_VALUE_SUB; + } + + /* We only need to keep the previous row if we are using one of these. */ + if (png_ptr->do_filter & (PNG_FILTER_AVG | PNG_FILTER_UP | PNG_FILTER_PAETH)) + { + /* Set up previous row buffer */ + png_ptr->prev_row = (png_bytep)png_malloc(png_ptr, + (png_uint_32)buf_size); + png_memset(png_ptr->prev_row, 0, buf_size); + + if (png_ptr->do_filter & PNG_FILTER_UP) + { + png_ptr->up_row = (png_bytep)png_malloc(png_ptr, + (png_uint_32)(png_ptr->rowbytes + 1)); + png_ptr->up_row[0] = PNG_FILTER_VALUE_UP; + } + + if (png_ptr->do_filter & PNG_FILTER_AVG) + { + png_ptr->avg_row = (png_bytep)png_malloc(png_ptr, + (png_uint_32)(png_ptr->rowbytes + 1)); + png_ptr->avg_row[0] = PNG_FILTER_VALUE_AVG; + } + + if (png_ptr->do_filter & PNG_FILTER_PAETH) + { + png_ptr->paeth_row = (png_bytep)png_malloc(png_ptr, + (png_uint_32)(png_ptr->rowbytes + 1)); + png_ptr->paeth_row[0] = PNG_FILTER_VALUE_PAETH; + } + } +#endif /* PNG_NO_WRITE_FILTER */ + +#ifdef PNG_WRITE_INTERLACING_SUPPORTED + /* If interlaced, we need to set up width and height of pass */ + if (png_ptr->interlaced) + { + if (!(png_ptr->transformations & PNG_INTERLACE)) + { + png_ptr->num_rows = (png_ptr->height + png_pass_yinc[0] - 1 - + png_pass_ystart[0]) / png_pass_yinc[0]; + png_ptr->usr_width = (png_ptr->width + png_pass_inc[0] - 1 - + png_pass_start[0]) / png_pass_inc[0]; + } + else + { + png_ptr->num_rows = png_ptr->height; + png_ptr->usr_width = png_ptr->width; + } + } + else +#endif + { + png_ptr->num_rows = png_ptr->height; + png_ptr->usr_width = png_ptr->width; + } + png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; + png_ptr->zstream.next_out = png_ptr->zbuf; +} + +/* Internal use only. Called when finished processing a row of data. */ +void /* PRIVATE */ +png_write_finish_row(png_structp png_ptr) +{ +#ifdef PNG_WRITE_INTERLACING_SUPPORTED +#ifdef PNG_USE_LOCAL_ARRAYS + /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ + + /* Start of interlace block */ + int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; + + /* Offset to next interlace block */ + int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; + + /* Start of interlace block in the y direction */ + int png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1}; + + /* Offset to next interlace block in the y direction */ + int png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2}; +#endif +#endif + + int ret; + + png_debug(1, "in png_write_finish_row"); + /* Next row */ + png_ptr->row_number++; + + /* See if we are done */ + if (png_ptr->row_number < png_ptr->num_rows) + return; + +#ifdef PNG_WRITE_INTERLACING_SUPPORTED + /* If interlaced, go to next pass */ + if (png_ptr->interlaced) + { + png_ptr->row_number = 0; + if (png_ptr->transformations & PNG_INTERLACE) + { + png_ptr->pass++; + } + else + { + /* Loop until we find a non-zero width or height pass */ + do + { + png_ptr->pass++; + if (png_ptr->pass >= 7) + break; + png_ptr->usr_width = (png_ptr->width + + png_pass_inc[png_ptr->pass] - 1 - + png_pass_start[png_ptr->pass]) / + png_pass_inc[png_ptr->pass]; + png_ptr->num_rows = (png_ptr->height + + png_pass_yinc[png_ptr->pass] - 1 - + png_pass_ystart[png_ptr->pass]) / + png_pass_yinc[png_ptr->pass]; + if (png_ptr->transformations & PNG_INTERLACE) + break; + } while (png_ptr->usr_width == 0 || png_ptr->num_rows == 0); + + } + + /* Reset the row above the image for the next pass */ + if (png_ptr->pass < 7) + { + if (png_ptr->prev_row != NULL) + png_memset(png_ptr->prev_row, 0, + (png_size_t)(PNG_ROWBYTES(png_ptr->usr_channels* + png_ptr->usr_bit_depth, png_ptr->width)) + 1); + return; + } + } +#endif + + /* If we get here, we've just written the last row, so we need + to flush the compressor */ + do + { + /* Tell the compressor we are done */ + ret = deflate(&png_ptr->zstream, Z_FINISH); + /* Check for an error */ + if (ret == Z_OK) + { + /* Check to see if we need more room */ + if (!(png_ptr->zstream.avail_out)) + { + png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size); + png_ptr->zstream.next_out = png_ptr->zbuf; + png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; + } + } + else if (ret != Z_STREAM_END) + { + if (png_ptr->zstream.msg != NULL) + png_error(png_ptr, png_ptr->zstream.msg); + else + png_error(png_ptr, "zlib error"); + } + } while (ret != Z_STREAM_END); + + /* Write any extra space */ + if (png_ptr->zstream.avail_out < png_ptr->zbuf_size) + { + png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size - + png_ptr->zstream.avail_out); + } + + deflateReset(&png_ptr->zstream); + png_ptr->zstream.data_type = Z_BINARY; +} + +#if defined(PNG_WRITE_INTERLACING_SUPPORTED) +/* Pick out the correct pixels for the interlace pass. + * The basic idea here is to go through the row with a source + * pointer and a destination pointer (sp and dp), and copy the + * correct pixels for the pass. As the row gets compacted, + * sp will always be >= dp, so we should never overwrite anything. + * See the default: case for the easiest code to understand. + */ +void /* PRIVATE */ +png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass) +{ +#ifdef PNG_USE_LOCAL_ARRAYS + /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ + + /* Start of interlace block */ + int png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0}; + + /* Offset to next interlace block */ + int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1}; +#endif + + png_debug(1, "in png_do_write_interlace"); + /* We don't have to do anything on the last pass (6) */ +#if defined(PNG_USELESS_TESTS_SUPPORTED) + if (row != NULL && row_info != NULL && pass < 6) +#else + if (pass < 6) +#endif + { + /* Each pixel depth is handled separately */ + switch (row_info->pixel_depth) + { + case 1: + { + png_bytep sp; + png_bytep dp; + int shift; + int d; + int value; + png_uint_32 i; + png_uint_32 row_width = row_info->width; + + dp = row; + d = 0; + shift = 7; + for (i = png_pass_start[pass]; i < row_width; + i += png_pass_inc[pass]) + { + sp = row + (png_size_t)(i >> 3); + value = (int)(*sp >> (7 - (int)(i & 0x07))) & 0x01; + d |= (value << shift); + + if (shift == 0) + { + shift = 7; + *dp++ = (png_byte)d; + d = 0; + } + else + shift--; + + } + if (shift != 7) + *dp = (png_byte)d; + break; + } + case 2: + { + png_bytep sp; + png_bytep dp; + int shift; + int d; + int value; + png_uint_32 i; + png_uint_32 row_width = row_info->width; + + dp = row; + shift = 6; + d = 0; + for (i = png_pass_start[pass]; i < row_width; + i += png_pass_inc[pass]) + { + sp = row + (png_size_t)(i >> 2); + value = (*sp >> ((3 - (int)(i & 0x03)) << 1)) & 0x03; + d |= (value << shift); + + if (shift == 0) + { + shift = 6; + *dp++ = (png_byte)d; + d = 0; + } + else + shift -= 2; + } + if (shift != 6) + *dp = (png_byte)d; + break; + } + case 4: + { + png_bytep sp; + png_bytep dp; + int shift; + int d; + int value; + png_uint_32 i; + png_uint_32 row_width = row_info->width; + + dp = row; + shift = 4; + d = 0; + for (i = png_pass_start[pass]; i < row_width; + i += png_pass_inc[pass]) + { + sp = row + (png_size_t)(i >> 1); + value = (*sp >> ((1 - (int)(i & 0x01)) << 2)) & 0x0f; + d |= (value << shift); + + if (shift == 0) + { + shift = 4; + *dp++ = (png_byte)d; + d = 0; + } + else + shift -= 4; + } + if (shift != 4) + *dp = (png_byte)d; + break; + } + default: + { + png_bytep sp; + png_bytep dp; + png_uint_32 i; + png_uint_32 row_width = row_info->width; + png_size_t pixel_bytes; + + /* Start at the beginning */ + dp = row; + /* Find out how many bytes each pixel takes up */ + pixel_bytes = (row_info->pixel_depth >> 3); + /* Loop through the row, only looking at the pixels that + matter */ + for (i = png_pass_start[pass]; i < row_width; + i += png_pass_inc[pass]) + { + /* Find out where the original pixel is */ + sp = row + (png_size_t)i * pixel_bytes; + /* Move the pixel */ + if (dp != sp) + png_memcpy(dp, sp, pixel_bytes); + /* Next pixel */ + dp += pixel_bytes; + } + break; + } + } + /* Set new row width */ + row_info->width = (row_info->width + + png_pass_inc[pass] - 1 - + png_pass_start[pass]) / + png_pass_inc[pass]; + row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth, + row_info->width); + } +} +#endif + +/* This filters the row, chooses which filter to use, if it has not already + * been specified by the application, and then writes the row out with the + * chosen filter. + */ +#define PNG_MAXSUM (((png_uint_32)(-1)) >> 1) +#define PNG_HISHIFT 10 +#define PNG_LOMASK ((png_uint_32)0xffffL) +#define PNG_HIMASK ((png_uint_32)(~PNG_LOMASK >> PNG_HISHIFT)) +void /* PRIVATE */ +png_write_find_filter(png_structp png_ptr, png_row_infop row_info) +{ + png_bytep best_row; +#ifndef PNG_NO_WRITE_FILTER + png_bytep prev_row, row_buf; + png_uint_32 mins, bpp; + png_byte filter_to_do = png_ptr->do_filter; + png_uint_32 row_bytes = row_info->rowbytes; +#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) + int num_p_filters = (int)png_ptr->num_prev_filters; +#endif + + png_debug(1, "in png_write_find_filter"); + /* Find out how many bytes offset each pixel is */ + bpp = (row_info->pixel_depth + 7) >> 3; + + prev_row = png_ptr->prev_row; +#endif + best_row = png_ptr->row_buf; +#ifndef PNG_NO_WRITE_FILTER + row_buf = best_row; + mins = PNG_MAXSUM; + + /* The prediction method we use is to find which method provides the + * smallest value when summing the absolute values of the distances + * from zero, using anything >= 128 as negative numbers. This is known + * as the "minimum sum of absolute differences" heuristic. Other + * heuristics are the "weighted minimum sum of absolute differences" + * (experimental and can in theory improve compression), and the "zlib + * predictive" method (not implemented yet), which does test compressions + * of lines using different filter methods, and then chooses the + * (series of) filter(s) that give minimum compressed data size (VERY + * computationally expensive). + * + * GRR 980525: consider also + * (1) minimum sum of absolute differences from running average (i.e., + * keep running sum of non-absolute differences & count of bytes) + * [track dispersion, too? restart average if dispersion too large?] + * (1b) minimum sum of absolute differences from sliding average, probably + * with window size <= deflate window (usually 32K) + * (2) minimum sum of squared differences from zero or running average + * (i.e., ~ root-mean-square approach) + */ + + + /* We don't need to test the 'no filter' case if this is the only filter + * that has been chosen, as it doesn't actually do anything to the data. + */ + if ((filter_to_do & PNG_FILTER_NONE) && + filter_to_do != PNG_FILTER_NONE) + { + png_bytep rp; + png_uint_32 sum = 0; + png_uint_32 i; + int v; + + for (i = 0, rp = row_buf + 1; i < row_bytes; i++, rp++) + { + v = *rp; + sum += (v < 128) ? v : 256 - v; + } + +#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) + if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) + { + png_uint_32 sumhi, sumlo; + int j; + sumlo = sum & PNG_LOMASK; + sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK; /* Gives us some footroom */ + + /* Reduce the sum if we match any of the previous rows */ + for (j = 0; j < num_p_filters; j++) + { + if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_NONE) + { + sumlo = (sumlo * png_ptr->filter_weights[j]) >> + PNG_WEIGHT_SHIFT; + sumhi = (sumhi * png_ptr->filter_weights[j]) >> + PNG_WEIGHT_SHIFT; + } + } + + /* Factor in the cost of this filter (this is here for completeness, + * but it makes no sense to have a "cost" for the NONE filter, as + * it has the minimum possible computational cost - none). + */ + sumlo = (sumlo * png_ptr->filter_costs[PNG_FILTER_VALUE_NONE]) >> + PNG_COST_SHIFT; + sumhi = (sumhi * png_ptr->filter_costs[PNG_FILTER_VALUE_NONE]) >> + PNG_COST_SHIFT; + + if (sumhi > PNG_HIMASK) + sum = PNG_MAXSUM; + else + sum = (sumhi << PNG_HISHIFT) + sumlo; + } +#endif + mins = sum; + } + + /* Sub filter */ + if (filter_to_do == PNG_FILTER_SUB) + /* It's the only filter so no testing is needed */ + { + png_bytep rp, lp, dp; + png_uint_32 i; + for (i = 0, rp = row_buf + 1, dp = png_ptr->sub_row + 1; i < bpp; + i++, rp++, dp++) + { + *dp = *rp; + } + for (lp = row_buf + 1; i < row_bytes; + i++, rp++, lp++, dp++) + { + *dp = (png_byte)(((int)*rp - (int)*lp) & 0xff); + } + best_row = png_ptr->sub_row; + } + + else if (filter_to_do & PNG_FILTER_SUB) + { + png_bytep rp, dp, lp; + png_uint_32 sum = 0, lmins = mins; + png_uint_32 i; + int v; + +#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) + /* We temporarily increase the "minimum sum" by the factor we + * would reduce the sum of this filter, so that we can do the + * early exit comparison without scaling the sum each time. + */ + if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) + { + int j; + png_uint_32 lmhi, lmlo; + lmlo = lmins & PNG_LOMASK; + lmhi = (lmins >> PNG_HISHIFT) & PNG_HIMASK; + + for (j = 0; j < num_p_filters; j++) + { + if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_SUB) + { + lmlo = (lmlo * png_ptr->inv_filter_weights[j]) >> + PNG_WEIGHT_SHIFT; + lmhi = (lmhi * png_ptr->inv_filter_weights[j]) >> + PNG_WEIGHT_SHIFT; + } + } + + lmlo = (lmlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_SUB]) >> + PNG_COST_SHIFT; + lmhi = (lmhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_SUB]) >> + PNG_COST_SHIFT; + + if (lmhi > PNG_HIMASK) + lmins = PNG_MAXSUM; + else + lmins = (lmhi << PNG_HISHIFT) + lmlo; + } +#endif + + for (i = 0, rp = row_buf + 1, dp = png_ptr->sub_row + 1; i < bpp; + i++, rp++, dp++) + { + v = *dp = *rp; + + sum += (v < 128) ? v : 256 - v; + } + for (lp = row_buf + 1; i < row_bytes; + i++, rp++, lp++, dp++) + { + v = *dp = (png_byte)(((int)*rp - (int)*lp) & 0xff); + + sum += (v < 128) ? v : 256 - v; + + if (sum > lmins) /* We are already worse, don't continue. */ + break; + } + +#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) + if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) + { + int j; + png_uint_32 sumhi, sumlo; + sumlo = sum & PNG_LOMASK; + sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK; + + for (j = 0; j < num_p_filters; j++) + { + if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_SUB) + { + sumlo = (sumlo * png_ptr->inv_filter_weights[j]) >> + PNG_WEIGHT_SHIFT; + sumhi = (sumhi * png_ptr->inv_filter_weights[j]) >> + PNG_WEIGHT_SHIFT; + } + } + + sumlo = (sumlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_SUB]) >> + PNG_COST_SHIFT; + sumhi = (sumhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_SUB]) >> + PNG_COST_SHIFT; + + if (sumhi > PNG_HIMASK) + sum = PNG_MAXSUM; + else + sum = (sumhi << PNG_HISHIFT) + sumlo; + } +#endif + + if (sum < mins) + { + mins = sum; + best_row = png_ptr->sub_row; + } + } + + /* Up filter */ + if (filter_to_do == PNG_FILTER_UP) + { + png_bytep rp, dp, pp; + png_uint_32 i; + + for (i = 0, rp = row_buf + 1, dp = png_ptr->up_row + 1, + pp = prev_row + 1; i < row_bytes; + i++, rp++, pp++, dp++) + { + *dp = (png_byte)(((int)*rp - (int)*pp) & 0xff); + } + best_row = png_ptr->up_row; + } + + else if (filter_to_do & PNG_FILTER_UP) + { + png_bytep rp, dp, pp; + png_uint_32 sum = 0, lmins = mins; + png_uint_32 i; + int v; + + +#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) + if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) + { + int j; + png_uint_32 lmhi, lmlo; + lmlo = lmins & PNG_LOMASK; + lmhi = (lmins >> PNG_HISHIFT) & PNG_HIMASK; + + for (j = 0; j < num_p_filters; j++) + { + if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_UP) + { + lmlo = (lmlo * png_ptr->inv_filter_weights[j]) >> + PNG_WEIGHT_SHIFT; + lmhi = (lmhi * png_ptr->inv_filter_weights[j]) >> + PNG_WEIGHT_SHIFT; + } + } + + lmlo = (lmlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_UP]) >> + PNG_COST_SHIFT; + lmhi = (lmhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_UP]) >> + PNG_COST_SHIFT; + + if (lmhi > PNG_HIMASK) + lmins = PNG_MAXSUM; + else + lmins = (lmhi << PNG_HISHIFT) + lmlo; + } +#endif + + for (i = 0, rp = row_buf + 1, dp = png_ptr->up_row + 1, + pp = prev_row + 1; i < row_bytes; i++) + { + v = *dp++ = (png_byte)(((int)*rp++ - (int)*pp++) & 0xff); + + sum += (v < 128) ? v : 256 - v; + + if (sum > lmins) /* We are already worse, don't continue. */ + break; + } + +#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) + if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) + { + int j; + png_uint_32 sumhi, sumlo; + sumlo = sum & PNG_LOMASK; + sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK; + + for (j = 0; j < num_p_filters; j++) + { + if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_UP) + { + sumlo = (sumlo * png_ptr->filter_weights[j]) >> + PNG_WEIGHT_SHIFT; + sumhi = (sumhi * png_ptr->filter_weights[j]) >> + PNG_WEIGHT_SHIFT; + } + } + + sumlo = (sumlo * png_ptr->filter_costs[PNG_FILTER_VALUE_UP]) >> + PNG_COST_SHIFT; + sumhi = (sumhi * png_ptr->filter_costs[PNG_FILTER_VALUE_UP]) >> + PNG_COST_SHIFT; + + if (sumhi > PNG_HIMASK) + sum = PNG_MAXSUM; + else + sum = (sumhi << PNG_HISHIFT) + sumlo; + } +#endif + + if (sum < mins) + { + mins = sum; + best_row = png_ptr->up_row; + } + } + + /* Avg filter */ + if (filter_to_do == PNG_FILTER_AVG) + { + png_bytep rp, dp, pp, lp; + png_uint_32 i; + for (i = 0, rp = row_buf + 1, dp = png_ptr->avg_row + 1, + pp = prev_row + 1; i < bpp; i++) + { + *dp++ = (png_byte)(((int)*rp++ - ((int)*pp++ / 2)) & 0xff); + } + for (lp = row_buf + 1; i < row_bytes; i++) + { + *dp++ = (png_byte)(((int)*rp++ - (((int)*pp++ + (int)*lp++) / 2)) + & 0xff); + } + best_row = png_ptr->avg_row; + } + + else if (filter_to_do & PNG_FILTER_AVG) + { + png_bytep rp, dp, pp, lp; + png_uint_32 sum = 0, lmins = mins; + png_uint_32 i; + int v; + +#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) + if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) + { + int j; + png_uint_32 lmhi, lmlo; + lmlo = lmins & PNG_LOMASK; + lmhi = (lmins >> PNG_HISHIFT) & PNG_HIMASK; + + for (j = 0; j < num_p_filters; j++) + { + if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_AVG) + { + lmlo = (lmlo * png_ptr->inv_filter_weights[j]) >> + PNG_WEIGHT_SHIFT; + lmhi = (lmhi * png_ptr->inv_filter_weights[j]) >> + PNG_WEIGHT_SHIFT; + } + } + + lmlo = (lmlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_AVG]) >> + PNG_COST_SHIFT; + lmhi = (lmhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_AVG]) >> + PNG_COST_SHIFT; + + if (lmhi > PNG_HIMASK) + lmins = PNG_MAXSUM; + else + lmins = (lmhi << PNG_HISHIFT) + lmlo; + } +#endif + + for (i = 0, rp = row_buf + 1, dp = png_ptr->avg_row + 1, + pp = prev_row + 1; i < bpp; i++) + { + v = *dp++ = (png_byte)(((int)*rp++ - ((int)*pp++ / 2)) & 0xff); + + sum += (v < 128) ? v : 256 - v; + } + for (lp = row_buf + 1; i < row_bytes; i++) + { + v = *dp++ = + (png_byte)(((int)*rp++ - (((int)*pp++ + (int)*lp++) / 2)) & 0xff); + + sum += (v < 128) ? v : 256 - v; + + if (sum > lmins) /* We are already worse, don't continue. */ + break; + } + +#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) + if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) + { + int j; + png_uint_32 sumhi, sumlo; + sumlo = sum & PNG_LOMASK; + sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK; + + for (j = 0; j < num_p_filters; j++) + { + if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_NONE) + { + sumlo = (sumlo * png_ptr->filter_weights[j]) >> + PNG_WEIGHT_SHIFT; + sumhi = (sumhi * png_ptr->filter_weights[j]) >> + PNG_WEIGHT_SHIFT; + } + } + + sumlo = (sumlo * png_ptr->filter_costs[PNG_FILTER_VALUE_AVG]) >> + PNG_COST_SHIFT; + sumhi = (sumhi * png_ptr->filter_costs[PNG_FILTER_VALUE_AVG]) >> + PNG_COST_SHIFT; + + if (sumhi > PNG_HIMASK) + sum = PNG_MAXSUM; + else + sum = (sumhi << PNG_HISHIFT) + sumlo; + } +#endif + + if (sum < mins) + { + mins = sum; + best_row = png_ptr->avg_row; + } + } + + /* Paeth filter */ + if (filter_to_do == PNG_FILTER_PAETH) + { + png_bytep rp, dp, pp, cp, lp; + png_uint_32 i; + for (i = 0, rp = row_buf + 1, dp = png_ptr->paeth_row + 1, + pp = prev_row + 1; i < bpp; i++) + { + *dp++ = (png_byte)(((int)*rp++ - (int)*pp++) & 0xff); + } + + for (lp = row_buf + 1, cp = prev_row + 1; i < row_bytes; i++) + { + int a, b, c, pa, pb, pc, p; + + b = *pp++; + c = *cp++; + a = *lp++; + + p = b - c; + pc = a - c; + +#ifdef PNG_USE_ABS + pa = abs(p); + pb = abs(pc); + pc = abs(p + pc); +#else + pa = p < 0 ? -p : p; + pb = pc < 0 ? -pc : pc; + pc = (p + pc) < 0 ? -(p + pc) : p + pc; +#endif + + p = (pa <= pb && pa <=pc) ? a : (pb <= pc) ? b : c; + + *dp++ = (png_byte)(((int)*rp++ - p) & 0xff); + } + best_row = png_ptr->paeth_row; + } + + else if (filter_to_do & PNG_FILTER_PAETH) + { + png_bytep rp, dp, pp, cp, lp; + png_uint_32 sum = 0, lmins = mins; + png_uint_32 i; + int v; + +#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) + if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) + { + int j; + png_uint_32 lmhi, lmlo; + lmlo = lmins & PNG_LOMASK; + lmhi = (lmins >> PNG_HISHIFT) & PNG_HIMASK; + + for (j = 0; j < num_p_filters; j++) + { + if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_PAETH) + { + lmlo = (lmlo * png_ptr->inv_filter_weights[j]) >> + PNG_WEIGHT_SHIFT; + lmhi = (lmhi * png_ptr->inv_filter_weights[j]) >> + PNG_WEIGHT_SHIFT; + } + } + + lmlo = (lmlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_PAETH]) >> + PNG_COST_SHIFT; + lmhi = (lmhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_PAETH]) >> + PNG_COST_SHIFT; + + if (lmhi > PNG_HIMASK) + lmins = PNG_MAXSUM; + else + lmins = (lmhi << PNG_HISHIFT) + lmlo; + } +#endif + + for (i = 0, rp = row_buf + 1, dp = png_ptr->paeth_row + 1, + pp = prev_row + 1; i < bpp; i++) + { + v = *dp++ = (png_byte)(((int)*rp++ - (int)*pp++) & 0xff); + + sum += (v < 128) ? v : 256 - v; + } + + for (lp = row_buf + 1, cp = prev_row + 1; i < row_bytes; i++) + { + int a, b, c, pa, pb, pc, p; + + b = *pp++; + c = *cp++; + a = *lp++; + +#ifndef PNG_SLOW_PAETH + p = b - c; + pc = a - c; +#ifdef PNG_USE_ABS + pa = abs(p); + pb = abs(pc); + pc = abs(p + pc); +#else + pa = p < 0 ? -p : p; + pb = pc < 0 ? -pc : pc; + pc = (p + pc) < 0 ? -(p + pc) : p + pc; +#endif + p = (pa <= pb && pa <=pc) ? a : (pb <= pc) ? b : c; +#else /* PNG_SLOW_PAETH */ + p = a + b - c; + pa = abs(p - a); + pb = abs(p - b); + pc = abs(p - c); + if (pa <= pb && pa <= pc) + p = a; + else if (pb <= pc) + p = b; + else + p = c; +#endif /* PNG_SLOW_PAETH */ + + v = *dp++ = (png_byte)(((int)*rp++ - p) & 0xff); + + sum += (v < 128) ? v : 256 - v; + + if (sum > lmins) /* We are already worse, don't continue. */ + break; + } + +#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) + if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) + { + int j; + png_uint_32 sumhi, sumlo; + sumlo = sum & PNG_LOMASK; + sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK; + + for (j = 0; j < num_p_filters; j++) + { + if (png_ptr->prev_filters[j] == PNG_FILTER_VALUE_PAETH) + { + sumlo = (sumlo * png_ptr->filter_weights[j]) >> + PNG_WEIGHT_SHIFT; + sumhi = (sumhi * png_ptr->filter_weights[j]) >> + PNG_WEIGHT_SHIFT; + } + } + + sumlo = (sumlo * png_ptr->filter_costs[PNG_FILTER_VALUE_PAETH]) >> + PNG_COST_SHIFT; + sumhi = (sumhi * png_ptr->filter_costs[PNG_FILTER_VALUE_PAETH]) >> + PNG_COST_SHIFT; + + if (sumhi > PNG_HIMASK) + sum = PNG_MAXSUM; + else + sum = (sumhi << PNG_HISHIFT) + sumlo; + } +#endif + + if (sum < mins) + { + best_row = png_ptr->paeth_row; + } + } +#endif /* PNG_NO_WRITE_FILTER */ + /* Do the actual writing of the filtered row data from the chosen filter. */ + + png_write_filtered_row(png_ptr, best_row); + +#ifndef PNG_NO_WRITE_FILTER +#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) + /* Save the type of filter we picked this time for future calculations */ + if (png_ptr->num_prev_filters > 0) + { + int j; + for (j = 1; j < num_p_filters; j++) + { + png_ptr->prev_filters[j] = png_ptr->prev_filters[j - 1]; + } + png_ptr->prev_filters[j] = best_row[0]; + } +#endif +#endif /* PNG_NO_WRITE_FILTER */ +} + + +/* Do the actual writing of a previously filtered row. */ +void /* PRIVATE */ +png_write_filtered_row(png_structp png_ptr, png_bytep filtered_row) +{ + png_debug(1, "in png_write_filtered_row"); + png_debug1(2, "filter = %d", filtered_row[0]); + /* Set up the zlib input buffer */ + + png_ptr->zstream.next_in = filtered_row; + png_ptr->zstream.avail_in = (uInt)png_ptr->row_info.rowbytes + 1; + /* Repeat until we have compressed all the data */ + do + { + int ret; /* Return of zlib */ + + /* Compress the data */ + ret = deflate(&png_ptr->zstream, Z_NO_FLUSH); + /* Check for compression errors */ + if (ret != Z_OK) + { + if (png_ptr->zstream.msg != NULL) + png_error(png_ptr, png_ptr->zstream.msg); + else + png_error(png_ptr, "zlib error"); + } + + /* See if it is time to write another IDAT */ + if (!(png_ptr->zstream.avail_out)) + { + /* Write the IDAT and reset the zlib output buffer */ + png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size); + png_ptr->zstream.next_out = png_ptr->zbuf; + png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; + } + /* Repeat until all data has been compressed */ + } while (png_ptr->zstream.avail_in); + + /* Swap the current and previous rows */ + if (png_ptr->prev_row != NULL) + { + png_bytep tptr; + + tptr = png_ptr->prev_row; + png_ptr->prev_row = png_ptr->row_buf; + png_ptr->row_buf = tptr; + } + + /* Finish row - updates counters and flushes zlib if last row */ + png_write_finish_row(png_ptr); + +#if defined(PNG_WRITE_FLUSH_SUPPORTED) + png_ptr->flush_rows++; + + if (png_ptr->flush_dist > 0 && + png_ptr->flush_rows >= png_ptr->flush_dist) + { + png_write_flush(png_ptr); + } +#endif +} +#endif /* PNG_WRITE_SUPPORTED */ diff --git a/Libraries/unzip101e/crypt.h b/Libraries/unzip101e/crypt.h new file mode 100644 index 0000000..e3c0e51 --- /dev/null +++ b/Libraries/unzip101e/crypt.h @@ -0,0 +1,132 @@ +/* crypt.h -- base code for crypt/uncrypt ZIPfile + + + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant + + This code is a modified version of crypting code in Infozip distribution + + The encryption/decryption parts of this source code (as opposed to the + non-echoing password parts) were originally written in Europe. The + whole source package can be freely distributed, including from the USA. + (Prior to January 2000, re-export from the US was a violation of US law.) + + This encryption code is a direct transcription of the algorithm from + Roger Schlafly, described by Phil Katz in the file appnote.txt. This + file (appnote.txt) is distributed with the PKZIP program (even in the + version without encryption capabilities). + + If you don't need crypting in your application, just define symbols + NOCRYPT and NOUNCRYPT. + + This code support the "Traditional PKWARE Encryption". + + The new AES encryption added on Zip format by Winzip (see the page + http://www.winzip.com/aes_info.htm ) and PKWare PKZip 5.x Strong + Encryption is not supported. +*/ + +#define CRC32(c, b) ((*(pcrc_32_tab+(((int)(c) ^ (b)) & 0xff))) ^ ((c) >> 8)) + +/*********************************************************************** + * Return the next byte in the pseudo-random sequence + */ +static int decrypt_byte(unsigned long* pkeys, const unsigned long* pcrc_32_tab) +{ + unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an + * unpredictable manner on 16-bit systems; not a problem + * with any known compiler so far, though */ + + temp = ((unsigned)(*(pkeys+2)) & 0xffff) | 2; + return (int)(((temp * (temp ^ 1)) >> 8) & 0xff); +} + +/*********************************************************************** + * Update the encryption keys with the next byte of plain text + */ +static int update_keys(unsigned long* pkeys,const unsigned long* pcrc_32_tab,int c) +{ + (*(pkeys+0)) = CRC32((*(pkeys+0)), c); + (*(pkeys+1)) += (*(pkeys+0)) & 0xff; + (*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1; + { + register int keyshift = (int)((*(pkeys+1)) >> 24); + (*(pkeys+2)) = CRC32((*(pkeys+2)), keyshift); + } + return c; +} + + +/*********************************************************************** + * Initialize the encryption keys and the random header according to + * the given password. + */ +static void init_keys(const char* passwd,unsigned long* pkeys,const unsigned long* pcrc_32_tab) +{ + *(pkeys+0) = 305419896L; + *(pkeys+1) = 591751049L; + *(pkeys+2) = 878082192L; + while (*passwd != '\0') { + update_keys(pkeys,pcrc_32_tab,(int)*passwd); + passwd++; + } +} + +#define zdecode(pkeys,pcrc_32_tab,c) \ + (update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys,pcrc_32_tab))) + +#define zencode(pkeys,pcrc_32_tab,c,t) \ + (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), t^(c)) + +#ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED + +#define RAND_HEAD_LEN 12 + /* "last resort" source for second part of crypt seed pattern */ +# ifndef ZCR_SEED2 +# define ZCR_SEED2 3141592654UL /* use PI as default pattern */ +# endif + +static int crypthead(//passwd, buf, bufSize, pkeys, pcrc_32_tab, crcForCrypting) + const char *passwd, /* password string */ + unsigned char *buf, /* where to write header */ + int bufSize, + unsigned long* pkeys, + const unsigned long* pcrc_32_tab, + unsigned long crcForCrypting) +{ + int n; /* index in random header */ + int t; /* temporary */ + int c; /* random byte */ + unsigned char header[RAND_HEAD_LEN-2]; /* random header */ + static unsigned calls = 0; /* ensure different random header each time */ + + if (bufSize> 7) & 0xff; + header[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, c, t); + } + /* Encrypt random header (last two bytes is high word of crc) */ + init_keys(passwd, pkeys, pcrc_32_tab); + for (n = 0; n < RAND_HEAD_LEN-2; n++) + { + buf[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, header[n], t); + } + buf[n++] = zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 16) & 0xff, t); + buf[n++] = zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 24) & 0xff, t); + return n; +} + +#endif diff --git a/Libraries/unzip101e/ioapi.cpp b/Libraries/unzip101e/ioapi.cpp new file mode 100644 index 0000000..880ca4a --- /dev/null +++ b/Libraries/unzip101e/ioapi.cpp @@ -0,0 +1,177 @@ +/* ioapi.c -- IO base function header for compress/uncompress .zip + files using zlib + zip or unzip API + + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant +*/ + +#include +#include +#include + +#include "../zlib123/zlib.h" +#include "ioapi.h" + + + +/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ + +#ifndef SEEK_CUR +#define SEEK_CUR 1 +#endif + +#ifndef SEEK_END +#define SEEK_END 2 +#endif + +#ifndef SEEK_SET +#define SEEK_SET 0 +#endif + +voidpf ZCALLBACK fopen_file_func OF(( + voidpf opaque, + const char* filename, + int mode)); + +uLong ZCALLBACK fread_file_func OF(( + voidpf opaque, + voidpf stream, + void* buf, + uLong size)); + +uLong ZCALLBACK fwrite_file_func OF(( + voidpf opaque, + voidpf stream, + const void* buf, + uLong size)); + +long ZCALLBACK ftell_file_func OF(( + voidpf opaque, + voidpf stream)); + +long ZCALLBACK fseek_file_func OF(( + voidpf opaque, + voidpf stream, + uLong offset, + int origin)); + +int ZCALLBACK fclose_file_func OF(( + voidpf opaque, + voidpf stream)); + +int ZCALLBACK ferror_file_func OF(( + voidpf opaque, + voidpf stream)); + + +voidpf ZCALLBACK fopen_file_func (//opaque, filename, mode) + voidpf opaque, + const char* filename, + int mode) +{ + FILE* file = NULL; + const char* mode_fopen = NULL; + if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) + mode_fopen = "rb"; + else + if (mode & ZLIB_FILEFUNC_MODE_EXISTING) + mode_fopen = "r+b"; + else + if (mode & ZLIB_FILEFUNC_MODE_CREATE) + mode_fopen = "wb"; + + if ((filename!=NULL) && (mode_fopen != NULL)) + file = fopen(filename, mode_fopen); + return file; +} + + +uLong ZCALLBACK fread_file_func (//opaque, stream, buf, size) + voidpf opaque, + voidpf stream, + void* buf, + uLong size) +{ + uLong ret; + ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream); + return ret; +} + + +uLong ZCALLBACK fwrite_file_func (//opaque, stream, buf, size) + voidpf opaque, + voidpf stream, + const void* buf, + uLong size) +{ + uLong ret; + ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream); + return ret; +} + +long ZCALLBACK ftell_file_func (//opaque, stream) + voidpf opaque, + voidpf stream) +{ + long ret; + ret = ftell((FILE *)stream); + return ret; +} + +long ZCALLBACK fseek_file_func (//opaque, stream, offset, origin) + voidpf opaque, + voidpf stream, + uLong offset, + int origin) +{ + int fseek_origin=0; + long ret; + switch (origin) + { + case ZLIB_FILEFUNC_SEEK_CUR : + fseek_origin = SEEK_CUR; + break; + case ZLIB_FILEFUNC_SEEK_END : + fseek_origin = SEEK_END; + break; + case ZLIB_FILEFUNC_SEEK_SET : + fseek_origin = SEEK_SET; + break; + default: return -1; + } + ret = 0; + fseek((FILE *)stream, offset, fseek_origin); + return ret; +} + +int ZCALLBACK fclose_file_func (//opaque, stream) + voidpf opaque, + voidpf stream) +{ + int ret; + ret = fclose((FILE *)stream); + return ret; +} + +int ZCALLBACK ferror_file_func (//opaque, stream) + voidpf opaque, + voidpf stream) +{ + int ret; + ret = ferror((FILE *)stream); + return ret; +} + +void fill_fopen_filefunc (//pzlib_filefunc_def) + zlib_filefunc_def* pzlib_filefunc_def) +{ + pzlib_filefunc_def->zopen_file = fopen_file_func; + pzlib_filefunc_def->zread_file = fread_file_func; + pzlib_filefunc_def->zwrite_file = fwrite_file_func; + pzlib_filefunc_def->ztell_file = ftell_file_func; + pzlib_filefunc_def->zseek_file = fseek_file_func; + pzlib_filefunc_def->zclose_file = fclose_file_func; + pzlib_filefunc_def->zerror_file = ferror_file_func; + pzlib_filefunc_def->opaque = NULL; +} diff --git a/Libraries/unzip101e/ioapi.h b/Libraries/unzip101e/ioapi.h new file mode 100644 index 0000000..e73a3b2 --- /dev/null +++ b/Libraries/unzip101e/ioapi.h @@ -0,0 +1,75 @@ +/* ioapi.h -- IO base function header for compress/uncompress .zip + files using zlib + zip or unzip API + + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant +*/ + +#ifndef _ZLIBIOAPI_H +#define _ZLIBIOAPI_H + + +#define ZLIB_FILEFUNC_SEEK_CUR (1) +#define ZLIB_FILEFUNC_SEEK_END (2) +#define ZLIB_FILEFUNC_SEEK_SET (0) + +#define ZLIB_FILEFUNC_MODE_READ (1) +#define ZLIB_FILEFUNC_MODE_WRITE (2) +#define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3) + +#define ZLIB_FILEFUNC_MODE_EXISTING (4) +#define ZLIB_FILEFUNC_MODE_CREATE (8) + + +#ifndef ZCALLBACK + +#if (defined(WIN32) || defined (WINDOWS) || defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK) +#define ZCALLBACK CALLBACK +#else +#define ZCALLBACK +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, const char* filename, int mode)); +typedef uLong (ZCALLBACK *read_file_func) OF((voidpf opaque, voidpf stream, void* buf, uLong size)); +typedef uLong (ZCALLBACK *write_file_func) OF((voidpf opaque, voidpf stream, const void* buf, uLong size)); +typedef long (ZCALLBACK *tell_file_func) OF((voidpf opaque, voidpf stream)); +typedef long (ZCALLBACK *seek_file_func) OF((voidpf opaque, voidpf stream, uLong offset, int origin)); +typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream)); +typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream)); + +typedef struct zlib_filefunc_def_s +{ + open_file_func zopen_file; + read_file_func zread_file; + write_file_func zwrite_file; + tell_file_func ztell_file; + seek_file_func zseek_file; + close_file_func zclose_file; + testerror_file_func zerror_file; + voidpf opaque; +} zlib_filefunc_def; + + + +void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); + +#define ZREAD(filefunc,filestream,buf,size) ((*((filefunc).zread_file))((filefunc).opaque,filestream,buf,size)) +#define ZWRITE(filefunc,filestream,buf,size) ((*((filefunc).zwrite_file))((filefunc).opaque,filestream,buf,size)) +#define ZTELL(filefunc,filestream) ((*((filefunc).ztell_file))((filefunc).opaque,filestream)) +#define ZSEEK(filefunc,filestream,pos,mode) ((*((filefunc).zseek_file))((filefunc).opaque,filestream,pos,mode)) +#define ZCLOSE(filefunc,filestream) ((*((filefunc).zclose_file))((filefunc).opaque,filestream)) +#define ZERROR(filefunc,filestream) ((*((filefunc).zerror_file))((filefunc).opaque,filestream)) + + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/Libraries/unzip101e/iowin32.cpp b/Libraries/unzip101e/iowin32.cpp new file mode 100644 index 0000000..0c4dbbb --- /dev/null +++ b/Libraries/unzip101e/iowin32.cpp @@ -0,0 +1,274 @@ +/* iowin32.c -- IO base function header for compress/uncompress .zip + files using zlib + zip or unzip API + This IO API version uses the Win32 API (for Microsoft Windows) + + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant +*/ + +#ifdef _WIN32 + +#include + +#include "../zlib123/zlib.h" +#include "ioapi.h" +#include "iowin32.h" + +#ifndef INVALID_HANDLE_VALUE +#define INVALID_HANDLE_VALUE (0xFFFFFFFF) +#endif + +#ifndef INVALID_SET_FILE_POINTER +#define INVALID_SET_FILE_POINTER ((DWORD)-1) +#endif + +voidpf ZCALLBACK win32_open_file_func OF(( + voidpf opaque, + const char* filename, + int mode)); + +uLong ZCALLBACK win32_read_file_func OF(( + voidpf opaque, + voidpf stream, + void* buf, + uLong size)); + +uLong ZCALLBACK win32_write_file_func OF(( + voidpf opaque, + voidpf stream, + const void* buf, + uLong size)); + +long ZCALLBACK win32_tell_file_func OF(( + voidpf opaque, + voidpf stream)); + +long ZCALLBACK win32_seek_file_func OF(( + voidpf opaque, + voidpf stream, + uLong offset, + int origin)); + +int ZCALLBACK win32_close_file_func OF(( + voidpf opaque, + voidpf stream)); + +int ZCALLBACK win32_error_file_func OF(( + voidpf opaque, + voidpf stream)); + +typedef struct +{ + HANDLE hf; + int error; +} WIN32FILE_IOWIN; + +voidpf ZCALLBACK win32_open_file_func (//opaque, filename, mode) + voidpf opaque, + const char* filename, + int mode) +{ + const char* mode_fopen = NULL; + DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ; + HANDLE hFile = 0; + voidpf ret=NULL; + + dwDesiredAccess = dwShareMode = dwFlagsAndAttributes = 0; + + if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) + { + dwDesiredAccess = GENERIC_READ; + dwCreationDisposition = OPEN_EXISTING; + dwShareMode = FILE_SHARE_READ; + } + else + if (mode & ZLIB_FILEFUNC_MODE_EXISTING) + { + dwDesiredAccess = GENERIC_WRITE | GENERIC_READ; + dwCreationDisposition = OPEN_EXISTING; + } + else + if (mode & ZLIB_FILEFUNC_MODE_CREATE) + { + dwDesiredAccess = GENERIC_WRITE | GENERIC_READ; + dwCreationDisposition = CREATE_ALWAYS; + } + + if ((filename!=NULL) && (dwDesiredAccess != 0)) + hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL, + dwCreationDisposition, dwFlagsAndAttributes, NULL); + + if (hFile == INVALID_HANDLE_VALUE) + hFile = NULL; + + if (hFile != NULL) + { + WIN32FILE_IOWIN w32fiow; + w32fiow.hf = hFile; + w32fiow.error = 0; + ret = malloc(sizeof(WIN32FILE_IOWIN)); + if (ret==NULL) + CloseHandle(hFile); + else *((WIN32FILE_IOWIN*)ret) = w32fiow; + } + return ret; +} + + +uLong ZCALLBACK win32_read_file_func (//opaque, stream, buf, size) + voidpf opaque, + voidpf stream, + void* buf, + uLong size) +{ + uLong ret=0; + HANDLE hFile = NULL; + if (stream!=NULL) + hFile = ((WIN32FILE_IOWIN*)stream) -> hf; + if (hFile != NULL) + if (!ReadFile(hFile, buf, size, &ret, NULL)) + { + DWORD dwErr = GetLastError(); + if (dwErr == ERROR_HANDLE_EOF) + dwErr = 0; + ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; + } + + return ret; +} + + +uLong ZCALLBACK win32_write_file_func (//opaque, stream, buf, size) + voidpf opaque, + voidpf stream, + const void* buf, + uLong size) +{ + uLong ret=0; + HANDLE hFile = NULL; + if (stream!=NULL) + hFile = ((WIN32FILE_IOWIN*)stream) -> hf; + + if (hFile !=NULL) + if (!WriteFile(hFile, buf, size, &ret, NULL)) + { + DWORD dwErr = GetLastError(); + if (dwErr == ERROR_HANDLE_EOF) + dwErr = 0; + ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; + } + + return ret; +} + +long ZCALLBACK win32_tell_file_func (//opaque, stream) + voidpf opaque, + voidpf stream) +{ + long ret=-1; + HANDLE hFile = NULL; + if (stream!=NULL) + hFile = ((WIN32FILE_IOWIN*)stream) -> hf; + if (hFile != NULL) + { + DWORD dwSet = SetFilePointer(hFile, 0, NULL, FILE_CURRENT); + if (dwSet == INVALID_SET_FILE_POINTER) + { + DWORD dwErr = GetLastError(); + ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; + ret = -1; + } + else + ret=(long)dwSet; + } + return ret; +} + +long ZCALLBACK win32_seek_file_func (//opaque, stream, offset, origin) + voidpf opaque, + voidpf stream, + uLong offset, + int origin) +{ + DWORD dwMoveMethod=0xFFFFFFFF; + HANDLE hFile = NULL; + + long ret=-1; + if (stream!=NULL) + hFile = ((WIN32FILE_IOWIN*)stream) -> hf; + switch (origin) + { + case ZLIB_FILEFUNC_SEEK_CUR : + dwMoveMethod = FILE_CURRENT; + break; + case ZLIB_FILEFUNC_SEEK_END : + dwMoveMethod = FILE_END; + break; + case ZLIB_FILEFUNC_SEEK_SET : + dwMoveMethod = FILE_BEGIN; + break; + default: return -1; + } + + if (hFile != NULL) + { + DWORD dwSet = SetFilePointer(hFile, offset, NULL, dwMoveMethod); + if (dwSet == INVALID_SET_FILE_POINTER) + { + DWORD dwErr = GetLastError(); + ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr; + ret = -1; + } + else + ret=0; + } + return ret; +} + +int ZCALLBACK win32_close_file_func (//opaque, stream) + voidpf opaque, + voidpf stream) +{ + int ret=-1; + + if (stream!=NULL) + { + HANDLE hFile; + hFile = ((WIN32FILE_IOWIN*)stream) -> hf; + if (hFile != NULL) + { + CloseHandle(hFile); + ret=0; + } + free(stream); + } + return ret; +} + +int ZCALLBACK win32_error_file_func (//opaque, stream) + voidpf opaque, + voidpf stream) +{ + int ret=-1; + if (stream!=NULL) + { + ret = ((WIN32FILE_IOWIN*)stream) -> error; + } + return ret; +} + +void fill_win32_filefunc (//pzlib_filefunc_def) + zlib_filefunc_def* pzlib_filefunc_def) +{ + pzlib_filefunc_def->zopen_file = win32_open_file_func; + pzlib_filefunc_def->zread_file = win32_read_file_func; + pzlib_filefunc_def->zwrite_file = win32_write_file_func; + pzlib_filefunc_def->ztell_file = win32_tell_file_func; + pzlib_filefunc_def->zseek_file = win32_seek_file_func; + pzlib_filefunc_def->zclose_file = win32_close_file_func; + pzlib_filefunc_def->zerror_file = win32_error_file_func; + pzlib_filefunc_def->opaque=NULL; +} + +#endif diff --git a/Libraries/unzip101e/iowin32.h b/Libraries/unzip101e/iowin32.h new file mode 100644 index 0000000..2877392 --- /dev/null +++ b/Libraries/unzip101e/iowin32.h @@ -0,0 +1,25 @@ +/* iowin32.h -- IO base function header for compress/uncompress .zip + files using zlib + zip or unzip API + This IO API version uses the Win32 API (for Microsoft Windows) + + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant +*/ + +#ifdef WIN32 + +#include + + +#ifdef __cplusplus +extern "C" { +#endif + +void fill_win32_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/Libraries/unzip101e/unzip.cpp b/Libraries/unzip101e/unzip.cpp new file mode 100644 index 0000000..4edb523 --- /dev/null +++ b/Libraries/unzip101e/unzip.cpp @@ -0,0 +1,1603 @@ +/* unzip.c -- IO for uncompress .zip files using zlib + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant + + Read unzip.h for more info +*/ + +/* Decryption code comes from crypt.c by Info-ZIP but has been greatly reduced in terms of +compatibility with older software. The following is from the original crypt.c. Code +woven in by Terry Thorsen 1/2003. +*/ +/* + Copyright (c) 1990-2000 Info-ZIP. All rights reserved. + + See the accompanying file LICENSE, version 2000-Apr-09 or later + (the contents of which are also included in zip.h) for terms of use. + If, for some reason, all these files are missing, the Info-ZIP license + also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html +*/ +/* + crypt.c (full version) by Info-ZIP. Last revised: [see crypt.h] + + The encryption/decryption parts of this source code (as opposed to the + non-echoing password parts) were originally written in Europe. The + whole source package can be freely distributed, including from the USA. + (Prior to January 2000, re-export from the US was a violation of US law.) + */ + +/* + This encryption code is a direct transcription of the algorithm from + Roger Schlafly, described by Phil Katz in the file appnote.txt. This + file (appnote.txt) is distributed with the PKZIP program (even in the + version without encryption capabilities). + */ + + +#include +#include +#include +#include "unzip.h" + +#ifdef STDC +# include +# include +# include +#endif +#ifdef NO_ERRNO_H + extern int errno; +#else +# include +#endif + + +#ifndef local +# define local static +#endif +/* compile with -Dlocal if your debugger can't find static symbols */ + + +#ifndef CASESENSITIVITYDEFAULT_NO +# if !defined(unix) && !defined(CASESENSITIVITYDEFAULT_YES) +# define CASESENSITIVITYDEFAULT_NO +# endif +#endif + + +#ifndef UNZ_BUFSIZE +#define UNZ_BUFSIZE (16384) +#endif + +#ifndef UNZ_MAXFILENAMEINZIP +#define UNZ_MAXFILENAMEINZIP (256) +#endif + +#ifndef ALLOC +# define ALLOC(size) (malloc(size)) +#endif +#ifndef TRYFREE +# define TRYFREE(p) {if (p) free(p);} +#endif + +#define SIZECENTRALDIRITEM (0x2e) +#define SIZEZIPLOCALHEADER (0x1e) + + + + +const char unz_copyright[] = + " unzip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll"; + +/* unz_file_info_interntal contain internal info about a file in zipfile*/ +typedef struct unz_file_info_internal_s +{ + uLong offset_curfile;/* relative offset of local header 4 bytes */ +} unz_file_info_internal; + + +/* file_in_zip_read_info_s contain internal information about a file in zipfile, + when reading and decompress it */ +typedef struct +{ + char *read_buffer; /* internal buffer for compressed data */ + z_stream stream; /* zLib stream structure for inflate */ + + uLong pos_in_zipfile; /* position in byte on the zipfile, for fseek*/ + uLong stream_initialised; /* flag set if stream structure is initialised*/ + + uLong offset_local_extrafield;/* offset of the local extra field */ + uInt size_local_extrafield;/* size of the local extra field */ + uLong pos_local_extrafield; /* position in the local extra field in read*/ + + uLong crc32; /* crc32 of all data uncompressed */ + uLong crc32_wait; /* crc32 we must obtain after decompress all */ + uLong rest_read_compressed; /* number of byte to be decompressed */ + uLong rest_read_uncompressed;/*number of byte to be obtained after decomp*/ + zlib_filefunc_def z_filefunc; + voidpf filestream; /* io structore of the zipfile */ + uLong compression_method; /* compression method (0==store) */ + uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ + int raw; +} file_in_zip_read_info_s; + + +/* unz_s contain internal information about the zipfile +*/ +typedef struct +{ + zlib_filefunc_def z_filefunc; + voidpf filestream; /* io structore of the zipfile */ + unz_global_info gi; /* public global information */ + uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ + uLong num_file; /* number of the current file in the zipfile*/ + uLong pos_in_central_dir; /* pos of the current file in the central dir*/ + uLong current_file_ok; /* flag about the usability of the current file*/ + uLong central_pos; /* position of the beginning of the central dir*/ + + uLong size_central_dir; /* size of the central directory */ + uLong offset_central_dir; /* offset of start of central directory with + respect to the starting disk number */ + + unz_file_info cur_file_info; /* public info about the current file in zip*/ + unz_file_info_internal cur_file_info_internal; /* private info about it*/ + file_in_zip_read_info_s* pfile_in_zip_read; /* structure about the current + file if we are decompressing it */ + int encrypted; +# ifndef NOUNCRYPT + unsigned long keys[3]; /* keys defining the pseudo-random sequence */ + const unsigned long* pcrc_32_tab; +# endif +} unz_s; + + +#ifndef NOUNCRYPT +#include "crypt.h" +#endif + +/* =========================================================================== + Read a byte from a gz_stream; update next_in and avail_in. Return EOF + for end of file. + IN assertion: the stream s has been sucessfully opened for reading. +*/ + + +local int unzlocal_getByte OF(( + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream, + int *pi)); + +local int unzlocal_getByte(//pzlib_filefunc_def,filestream,pi) + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream, + int *pi) +{ + unsigned char c; + int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1); + if (err==1) + { + *pi = (int)c; + return UNZ_OK; + } + else + { + if (ZERROR(*pzlib_filefunc_def,filestream)) + return UNZ_ERRNO; + else + return UNZ_EOF; + } +} + + +/* =========================================================================== + Reads a long in LSB order from the given gz_stream. Sets +*/ +local int unzlocal_getShort OF(( + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream, + uLong *pX)); + +local int unzlocal_getShort (//pzlib_filefunc_def,filestream,pX) + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream, + uLong *pX) +{ + uLong x ; + int i; + int err; + + err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); + x = (uLong)i; + + if (err==UNZ_OK) + err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); + x += ((uLong)i)<<8; + + if (err==UNZ_OK) + *pX = x; + else + *pX = 0; + return err; +} + +local int unzlocal_getLong OF(( + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream, + uLong *pX)); + +local int unzlocal_getLong (//pzlib_filefunc_def,filestream,pX) + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream, + uLong *pX) +{ + uLong x ; + int i; + int err; + + err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); + x = (uLong)i; + + if (err==UNZ_OK) + err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); + x += ((uLong)i)<<8; + + if (err==UNZ_OK) + err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); + x += ((uLong)i)<<16; + + if (err==UNZ_OK) + err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); + x += ((uLong)i)<<24; + + if (err==UNZ_OK) + *pX = x; + else + *pX = 0; + return err; +} + + +/* My own strcmpi / strcasecmp */ +local int strcmpcasenosensitive_internal (//fileName1,fileName2) + const char* fileName1, + const char* fileName2) +{ + for (;;) + { + char c1=*(fileName1++); + char c2=*(fileName2++); + if ((c1>='a') && (c1<='z')) + c1 -= 0x20; + if ((c2>='a') && (c2<='z')) + c2 -= 0x20; + if (c1=='\0') + return ((c2=='\0') ? 0 : -1); + if (c2=='\0') + return 1; + if (c1c2) + return 1; + } +} + + +#ifdef CASESENSITIVITYDEFAULT_NO +#define CASESENSITIVITYDEFAULTVALUE 2 +#else +#define CASESENSITIVITYDEFAULTVALUE 1 +#endif + +#ifndef STRCMPCASENOSENTIVEFUNCTION +#define STRCMPCASENOSENTIVEFUNCTION strcmpcasenosensitive_internal +#endif + +/* + Compare two filename (fileName1,fileName2). + If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) + If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi + or strcasecmp) + If iCaseSenisivity = 0, case sensitivity is defaut of your operating system + (like 1 on Unix, 2 on Windows) + +*/ +extern int ZEXPORT unzStringFileNameCompare (//fileName1,fileName2,iCaseSensitivity) + const char* fileName1, + const char* fileName2, + int iCaseSensitivity) +{ + if (iCaseSensitivity==0) + iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE; + + if (iCaseSensitivity==1) + return strcmp(fileName1,fileName2); + + return STRCMPCASENOSENTIVEFUNCTION(fileName1,fileName2); +} + +#ifndef BUFREADCOMMENT +#define BUFREADCOMMENT (0x400) +#endif + +/* + Locate the Central directory of a zipfile (at the end, just before + the global comment) +*/ +local uLong unzlocal_SearchCentralDir OF(( + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream)); + +local uLong unzlocal_SearchCentralDir(//pzlib_filefunc_def,filestream) + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream) +{ + unsigned char* buf; + uLong uSizeFile; + uLong uBackRead; + uLong uMaxBack=0xffff; /* maximum size of global comment */ + uLong uPosFound=0; + + if (ZSEEK(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0) + return 0; + + + uSizeFile = ZTELL(*pzlib_filefunc_def,filestream); + + if (uMaxBack>uSizeFile) + uMaxBack = uSizeFile; + + buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); + if (buf==NULL) + return 0; + + uBackRead = 4; + while (uBackReaduMaxBack) + uBackRead = uMaxBack; + else + uBackRead+=BUFREADCOMMENT; + uReadPos = uSizeFile-uBackRead ; + + uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? + (BUFREADCOMMENT+4) : (uSizeFile-uReadPos); + if (ZSEEK(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0) + break; + + if (ZREAD(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize) + break; + + for (i=(int)uReadSize-3; (i--)>0;) + if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && + ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06)) + { + uPosFound = uReadPos+i; + break; + } + + if (uPosFound!=0) + break; + } + TRYFREE(buf); + return uPosFound; +} + +/* + Open a Zip file. path contain the full pathname (by example, + on a Windows NT computer "c:\\test\\zlib114.zip" or on an Unix computer + "zlib/zlib114.zip". + If the zipfile cannot be opened (file doesn't exist or in not valid), the + return value is NULL. + Else, the return value is a unzFile Handle, usable with other function + of this unzip package. +*/ +extern unzFile ZEXPORT unzOpen2 (//path, pzlib_filefunc_def) + const char *path, + zlib_filefunc_def* pzlib_filefunc_def) +{ + unz_s us; + unz_s *s; + uLong central_pos,uL; + + uLong number_disk; /* number of the current dist, used for + spaning ZIP, unsupported, always 0*/ + uLong number_disk_with_CD; /* number the the disk with central dir, used + for spaning ZIP, unsupported, always 0*/ + uLong number_entry_CD; /* total number of entries in + the central dir + (same than number_entry on nospan) */ + + int err=UNZ_OK; + + if (unz_copyright[0]!=' ') + return NULL; + + if (pzlib_filefunc_def==NULL) + fill_fopen_filefunc(&us.z_filefunc); + else + us.z_filefunc = *pzlib_filefunc_def; + + us.filestream= (*(us.z_filefunc.zopen_file))(us.z_filefunc.opaque, + path, + ZLIB_FILEFUNC_MODE_READ | + ZLIB_FILEFUNC_MODE_EXISTING); + if (us.filestream==NULL) + return NULL; + + central_pos = unzlocal_SearchCentralDir(&us.z_filefunc,us.filestream); + if (central_pos==0) + err=UNZ_ERRNO; + + if (ZSEEK(us.z_filefunc, us.filestream, + central_pos,ZLIB_FILEFUNC_SEEK_SET)!=0) + err=UNZ_ERRNO; + + /* the signature, already checked */ + if (unzlocal_getLong(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) + err=UNZ_ERRNO; + + /* number of this disk */ + if (unzlocal_getShort(&us.z_filefunc, us.filestream,&number_disk)!=UNZ_OK) + err=UNZ_ERRNO; + + /* number of the disk with the start of the central directory */ + if (unzlocal_getShort(&us.z_filefunc, us.filestream,&number_disk_with_CD)!=UNZ_OK) + err=UNZ_ERRNO; + + /* total number of entries in the central dir on this disk */ + if (unzlocal_getShort(&us.z_filefunc, us.filestream,&us.gi.number_entry)!=UNZ_OK) + err=UNZ_ERRNO; + + /* total number of entries in the central dir */ + if (unzlocal_getShort(&us.z_filefunc, us.filestream,&number_entry_CD)!=UNZ_OK) + err=UNZ_ERRNO; + + if ((number_entry_CD!=us.gi.number_entry) || + (number_disk_with_CD!=0) || + (number_disk!=0)) + err=UNZ_BADZIPFILE; + + /* size of the central directory */ + if (unzlocal_getLong(&us.z_filefunc, us.filestream,&us.size_central_dir)!=UNZ_OK) + err=UNZ_ERRNO; + + /* offset of start of central directory with respect to the + starting disk number */ + if (unzlocal_getLong(&us.z_filefunc, us.filestream,&us.offset_central_dir)!=UNZ_OK) + err=UNZ_ERRNO; + + /* zipfile comment length */ + if (unzlocal_getShort(&us.z_filefunc, us.filestream,&us.gi.size_comment)!=UNZ_OK) + err=UNZ_ERRNO; + + if ((central_pospfile_in_zip_read!=NULL) + unzCloseCurrentFile(file); + + ZCLOSE(s->z_filefunc, s->filestream); + TRYFREE(s); + return UNZ_OK; +} + + +/* + Write info about the ZipFile in the *pglobal_info structure. + No preparation of the structure is needed + return UNZ_OK if there is no problem. */ +extern int ZEXPORT unzGetGlobalInfo (//file,pglobal_info) + unzFile file, + unz_global_info *pglobal_info) +{ + unz_s* s; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + *pglobal_info=s->gi; + return UNZ_OK; +} + + +/* + Translate date/time from Dos format to tm_unz (readable more easilty) +*/ +local void unzlocal_DosDateToTmuDate (//ulDosDate, ptm) + uLong ulDosDate, + tm_unz* ptm) +{ + uLong uDate; + uDate = (uLong)(ulDosDate>>16); + ptm->tm_mday = (uInt)(uDate&0x1f) ; + ptm->tm_mon = (uInt)((((uDate)&0x1E0)/0x20)-1) ; + ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980) ; + + ptm->tm_hour = (uInt) ((ulDosDate &0xF800)/0x800); + ptm->tm_min = (uInt) ((ulDosDate&0x7E0)/0x20) ; + ptm->tm_sec = (uInt) (2*(ulDosDate&0x1f)) ; +} + +/* + Get Info about the current file in the zipfile, with internal only info +*/ +local int unzlocal_GetCurrentFileInfoInternal OF((unzFile file, + unz_file_info *pfile_info, + unz_file_info_internal + *pfile_info_internal, + char *szFileName, + uLong fileNameBufferSize, + void *extraField, + uLong extraFieldBufferSize, + char *szComment, + uLong commentBufferSize)); + +local int unzlocal_GetCurrentFileInfoInternal (/*file, + pfile_info, + pfile_info_internal, + szFileName, fileNameBufferSize, + extraField, extraFieldBufferSize, + szComment, commentBufferSize)*/ + unzFile file, + unz_file_info *pfile_info, + unz_file_info_internal *pfile_info_internal, + char *szFileName, + uLong fileNameBufferSize, + void *extraField, + uLong extraFieldBufferSize, + char *szComment, + uLong commentBufferSize) +{ + unz_s* s; + unz_file_info file_info; + unz_file_info_internal file_info_internal; + int err=UNZ_OK; + uLong uMagic; + long lSeek=0; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (ZSEEK(s->z_filefunc, s->filestream, + s->pos_in_central_dir+s->byte_before_the_zipfile, + ZLIB_FILEFUNC_SEEK_SET)!=0) + err=UNZ_ERRNO; + + + /* we check the magic */ + if (err==UNZ_OK) + { + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK) + err=UNZ_ERRNO; + else if (uMagic!=0x02014b50) + err=UNZ_BADZIPFILE; + } + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.version) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.version_needed) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.flag) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.compression_method) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.dosDate) != UNZ_OK) + err=UNZ_ERRNO; + + unzlocal_DosDateToTmuDate(file_info.dosDate,&file_info.tmu_date); + + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.crc) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.compressed_size) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.uncompressed_size) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.size_filename) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.size_file_extra) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.size_file_comment) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.disk_num_start) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.internal_fa) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.external_fa) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info_internal.offset_curfile) != UNZ_OK) + err=UNZ_ERRNO; + + lSeek+=file_info.size_filename; + if ((err==UNZ_OK) && (szFileName!=NULL)) + { + uLong uSizeRead ; + if (file_info.size_filename0) && (fileNameBufferSize>0)) + if (ZREAD(s->z_filefunc, s->filestream,szFileName,uSizeRead)!=uSizeRead) + err=UNZ_ERRNO; + lSeek -= uSizeRead; + } + + + if ((err==UNZ_OK) && (extraField!=NULL)) + { + uLong uSizeRead ; + if (file_info.size_file_extraz_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0) + lSeek=0; + else + err=UNZ_ERRNO; + } + if ((file_info.size_file_extra>0) && (extraFieldBufferSize>0)) + if (ZREAD(s->z_filefunc, s->filestream,extraField,uSizeRead)!=uSizeRead) + err=UNZ_ERRNO; + lSeek += file_info.size_file_extra - uSizeRead; + } + else + lSeek+=file_info.size_file_extra; + + + if ((err==UNZ_OK) && (szComment!=NULL)) + { + uLong uSizeRead ; + if (file_info.size_file_commentz_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0) + lSeek=0; + else + err=UNZ_ERRNO; + } + if ((file_info.size_file_comment>0) && (commentBufferSize>0)) + if (ZREAD(s->z_filefunc, s->filestream,szComment,uSizeRead)!=uSizeRead) + err=UNZ_ERRNO; + lSeek+=file_info.size_file_comment - uSizeRead; + } + else + lSeek+=file_info.size_file_comment; + + if ((err==UNZ_OK) && (pfile_info!=NULL)) + *pfile_info=file_info; + + if ((err==UNZ_OK) && (pfile_info_internal!=NULL)) + *pfile_info_internal=file_info_internal; + + return err; +} + + + +/* + Write info about the ZipFile in the *pglobal_info structure. + No preparation of the structure is needed + return UNZ_OK if there is no problem. +*/ +extern int ZEXPORT unzGetCurrentFileInfo (/*file, + pfile_info, + szFileName, fileNameBufferSize, + extraField, extraFieldBufferSize, + szComment, commentBufferSize)*/ + unzFile file, + unz_file_info *pfile_info, + char *szFileName, + uLong fileNameBufferSize, + void *extraField, + uLong extraFieldBufferSize, + char *szComment, + uLong commentBufferSize) +{ + return unzlocal_GetCurrentFileInfoInternal(file,pfile_info,NULL, + szFileName,fileNameBufferSize, + extraField,extraFieldBufferSize, + szComment,commentBufferSize); +} + +/* + Set the current file of the zipfile to the first file. + return UNZ_OK if there is no problem +*/ +extern int ZEXPORT unzGoToFirstFile (//file) + unzFile file) +{ + int err=UNZ_OK; + unz_s* s; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + s->pos_in_central_dir=s->offset_central_dir; + s->num_file=0; + err=unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, + &s->cur_file_info_internal, + NULL,0,NULL,0,NULL,0); + s->current_file_ok = (err == UNZ_OK); + return err; +} + +/* + Set the current file of the zipfile to the next file. + return UNZ_OK if there is no problem + return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. +*/ +extern int ZEXPORT unzGoToNextFile (//file) + unzFile file) +{ + unz_s* s; + int err; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (!s->current_file_ok) + return UNZ_END_OF_LIST_OF_FILE; + if (s->gi.number_entry != 0xffff) /* 2^16 files overflow hack */ + if (s->num_file+1==s->gi.number_entry) + return UNZ_END_OF_LIST_OF_FILE; + + s->pos_in_central_dir += SIZECENTRALDIRITEM + s->cur_file_info.size_filename + + s->cur_file_info.size_file_extra + s->cur_file_info.size_file_comment ; + s->num_file++; + err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, + &s->cur_file_info_internal, + NULL,0,NULL,0,NULL,0); + s->current_file_ok = (err == UNZ_OK); + return err; +} + + +/* + Try locate the file szFileName in the zipfile. + For the iCaseSensitivity signification, see unzipStringFileNameCompare + + return value : + UNZ_OK if the file is found. It becomes the current file. + UNZ_END_OF_LIST_OF_FILE if the file is not found +*/ +extern int ZEXPORT unzLocateFile (//file, szFileName, iCaseSensitivity) + unzFile file, + const char *szFileName, + int iCaseSensitivity) +{ + unz_s* s; + int err; + + /* We remember the 'current' position in the file so that we can jump + * back there if we fail. + */ + unz_file_info cur_file_infoSaved; + unz_file_info_internal cur_file_info_internalSaved; + uLong num_fileSaved; + uLong pos_in_central_dirSaved; + + + if (file==NULL) + return UNZ_PARAMERROR; + + if (strlen(szFileName)>=UNZ_MAXFILENAMEINZIP) + return UNZ_PARAMERROR; + + s=(unz_s*)file; + if (!s->current_file_ok) + return UNZ_END_OF_LIST_OF_FILE; + + /* Save the current state */ + num_fileSaved = s->num_file; + pos_in_central_dirSaved = s->pos_in_central_dir; + cur_file_infoSaved = s->cur_file_info; + cur_file_info_internalSaved = s->cur_file_info_internal; + + err = unzGoToFirstFile(file); + + while (err == UNZ_OK) + { + char szCurrentFileName[UNZ_MAXFILENAMEINZIP+1]; + err = unzGetCurrentFileInfo(file,NULL, + szCurrentFileName,sizeof(szCurrentFileName)-1, + NULL,0,NULL,0); + if (err == UNZ_OK) + { + if (unzStringFileNameCompare(szCurrentFileName, + szFileName,iCaseSensitivity)==0) + return UNZ_OK; + err = unzGoToNextFile(file); + } + } + + /* We failed, so restore the state of the 'current file' to where we + * were. + */ + s->num_file = num_fileSaved ; + s->pos_in_central_dir = pos_in_central_dirSaved ; + s->cur_file_info = cur_file_infoSaved; + s->cur_file_info_internal = cur_file_info_internalSaved; + return err; +} + + +/* +/////////////////////////////////////////// +// Contributed by Ryan Haksi (mailto://cryogen@infoserve.net) +// I need random access +// +// Further optimization could be realized by adding an ability +// to cache the directory in memory. The goal being a single +// comprehensive file read to put the file I need in a memory. +*/ + +/* +typedef struct unz_file_pos_s +{ + uLong pos_in_zip_directory; // offset in file + uLong num_of_file; // # of file +} unz_file_pos; +*/ + +extern int ZEXPORT unzGetFilePos(//file, file_pos) + unzFile file, + unz_file_pos* file_pos) +{ + unz_s* s; + + if (file==NULL || file_pos==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (!s->current_file_ok) + return UNZ_END_OF_LIST_OF_FILE; + + file_pos->pos_in_zip_directory = s->pos_in_central_dir; + file_pos->num_of_file = s->num_file; + + return UNZ_OK; +} + +extern int ZEXPORT unzGoToFilePos(//file, file_pos) + unzFile file, + unz_file_pos* file_pos) +{ + unz_s* s; + int err; + + if (file==NULL || file_pos==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + + /* jump to the right spot */ + s->pos_in_central_dir = file_pos->pos_in_zip_directory; + s->num_file = file_pos->num_of_file; + + /* set the current file */ + err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, + &s->cur_file_info_internal, + NULL,0,NULL,0,NULL,0); + /* return results */ + s->current_file_ok = (err == UNZ_OK); + return err; +} + +/* +// Unzip Helper Functions - should be here? +/////////////////////////////////////////// +*/ + +/* + Read the local header of the current zipfile + Check the coherency of the local header and info in the end of central + directory about this file + store in *piSizeVar the size of extra info in local header + (filename and size of extra field data) +*/ +local int unzlocal_CheckCurrentFileCoherencyHeader (/*s,piSizeVar, + poffset_local_extrafield, + psize_local_extrafield)*/ + unz_s* s, + uInt* piSizeVar, + uLong *poffset_local_extrafield, + uInt *psize_local_extrafield) +{ + uLong uMagic,uData,uFlags; + uLong size_filename; + uLong size_extra_field; + int err=UNZ_OK; + + *piSizeVar = 0; + *poffset_local_extrafield = 0; + *psize_local_extrafield = 0; + + if (ZSEEK(s->z_filefunc, s->filestream,s->cur_file_info_internal.offset_curfile + + s->byte_before_the_zipfile,ZLIB_FILEFUNC_SEEK_SET)!=0) + return UNZ_ERRNO; + + + if (err==UNZ_OK) + { + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK) + err=UNZ_ERRNO; + else if (uMagic!=0x04034b50) + err=UNZ_BADZIPFILE; + } + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) + err=UNZ_ERRNO; +/* + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.wVersion)) + err=UNZ_BADZIPFILE; +*/ + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&uFlags) != UNZ_OK) + err=UNZ_ERRNO; + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compression_method)) + err=UNZ_BADZIPFILE; + + if ((err==UNZ_OK) && (s->cur_file_info.compression_method!=0) && + (s->cur_file_info.compression_method!=Z_DEFLATED)) + err=UNZ_BADZIPFILE; + + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* date/time */ + err=UNZ_ERRNO; + + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* crc */ + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.crc) && + ((uFlags & 8)==0)) + err=UNZ_BADZIPFILE; + + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* size compr */ + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compressed_size) && + ((uFlags & 8)==0)) + err=UNZ_BADZIPFILE; + + if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* size uncompr */ + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (uData!=s->cur_file_info.uncompressed_size) && + ((uFlags & 8)==0)) + err=UNZ_BADZIPFILE; + + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&size_filename) != UNZ_OK) + err=UNZ_ERRNO; + else if ((err==UNZ_OK) && (size_filename!=s->cur_file_info.size_filename)) + err=UNZ_BADZIPFILE; + + *piSizeVar += (uInt)size_filename; + + if (unzlocal_getShort(&s->z_filefunc, s->filestream,&size_extra_field) != UNZ_OK) + err=UNZ_ERRNO; + *poffset_local_extrafield= s->cur_file_info_internal.offset_curfile + + SIZEZIPLOCALHEADER + size_filename; + *psize_local_extrafield = (uInt)size_extra_field; + + *piSizeVar += (uInt)size_extra_field; + + return err; +} + +/* + Open for reading data the current file in the zipfile. + If there is no error and the file is opened, the return value is UNZ_OK. +*/ +extern int ZEXPORT unzOpenCurrentFile3 (//file, method, level, raw, password) + unzFile file, + int* method, + int* level, + int raw, + const char* password) +{ + int err=UNZ_OK; + uInt iSizeVar; + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + uLong offset_local_extrafield; /* offset of the local extra field */ + uInt size_local_extrafield; /* size of the local extra field */ +# ifndef NOUNCRYPT + char source[12]; +# else + if (password != NULL) + return UNZ_PARAMERROR; +# endif + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (!s->current_file_ok) + return UNZ_PARAMERROR; + + if (s->pfile_in_zip_read != NULL) + unzCloseCurrentFile(file); + + if (unzlocal_CheckCurrentFileCoherencyHeader(s,&iSizeVar, + &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK) + return UNZ_BADZIPFILE; + + pfile_in_zip_read_info = (file_in_zip_read_info_s*) + ALLOC(sizeof(file_in_zip_read_info_s)); + if (pfile_in_zip_read_info==NULL) + return UNZ_INTERNALERROR; + + pfile_in_zip_read_info->read_buffer=(char*)ALLOC(UNZ_BUFSIZE); + pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield; + pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield; + pfile_in_zip_read_info->pos_local_extrafield=0; + pfile_in_zip_read_info->raw=raw; + + if (pfile_in_zip_read_info->read_buffer==NULL) + { + TRYFREE(pfile_in_zip_read_info); + return UNZ_INTERNALERROR; + } + + pfile_in_zip_read_info->stream_initialised=0; + + if (method!=NULL) + *method = (int)s->cur_file_info.compression_method; + + if (level!=NULL) + { + *level = 6; + switch (s->cur_file_info.flag & 0x06) + { + case 6 : *level = 1; break; + case 4 : *level = 2; break; + case 2 : *level = 9; break; + } + } + + if ((s->cur_file_info.compression_method!=0) && + (s->cur_file_info.compression_method!=Z_DEFLATED)) + err=UNZ_BADZIPFILE; + + pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc; + pfile_in_zip_read_info->crc32=0; + pfile_in_zip_read_info->compression_method = + s->cur_file_info.compression_method; + pfile_in_zip_read_info->filestream=s->filestream; + pfile_in_zip_read_info->z_filefunc=s->z_filefunc; + pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile; + + pfile_in_zip_read_info->stream.total_out = 0; + + if ((s->cur_file_info.compression_method==Z_DEFLATED) && + (!raw)) + { + pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; + pfile_in_zip_read_info->stream.zfree = (free_func)0; + pfile_in_zip_read_info->stream.opaque = (voidpf)0; + pfile_in_zip_read_info->stream.next_in = (Bytef*)0; + pfile_in_zip_read_info->stream.avail_in = 0; + + err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS); + if (err == Z_OK) + pfile_in_zip_read_info->stream_initialised=1; + else + { + TRYFREE(pfile_in_zip_read_info); + return err; + } + /* windowBits is passed < 0 to tell that there is no zlib header. + * Note that in this case inflate *requires* an extra "dummy" byte + * after the compressed stream in order to complete decompression and + * return Z_STREAM_END. + * In unzip, i don't wait absolutely Z_STREAM_END because I known the + * size of both compressed and uncompressed data + */ + } + pfile_in_zip_read_info->rest_read_compressed = + s->cur_file_info.compressed_size ; + pfile_in_zip_read_info->rest_read_uncompressed = + s->cur_file_info.uncompressed_size ; + + + pfile_in_zip_read_info->pos_in_zipfile = + s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + + iSizeVar; + + pfile_in_zip_read_info->stream.avail_in = (uInt)0; + + s->pfile_in_zip_read = pfile_in_zip_read_info; + +# ifndef NOUNCRYPT + if (password != NULL) + { + int i; + s->pcrc_32_tab = get_crc_table(); + init_keys(password,s->keys,s->pcrc_32_tab); + if (ZSEEK(s->z_filefunc, s->filestream, + s->pfile_in_zip_read->pos_in_zipfile + + s->pfile_in_zip_read->byte_before_the_zipfile, + SEEK_SET)!=0) + return UNZ_INTERNALERROR; + if(ZREAD(s->z_filefunc, s->filestream,source, 12)<12) + return UNZ_INTERNALERROR; + + for (i = 0; i<12; i++) + zdecode(s->keys,s->pcrc_32_tab,source[i]); + + s->pfile_in_zip_read->pos_in_zipfile+=12; + s->encrypted=1; + } +# endif + + + return UNZ_OK; +} + +extern int ZEXPORT unzOpenCurrentFile (//file) + unzFile file) +{ + return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL); +} + +extern int ZEXPORT unzOpenCurrentFilePassword (//file, password) + unzFile file, + const char* password) +{ + return unzOpenCurrentFile3(file, NULL, NULL, 0, password); +} + +extern int ZEXPORT unzOpenCurrentFile2 (//file,method,level,raw) + unzFile file, + int* method, + int* level, + int raw) +{ + return unzOpenCurrentFile3(file, method, level, raw, NULL); +} + +/* + Read bytes from the current file. + buf contain buffer where data must be copied + len the size of buf. + + return the number of byte copied if somes bytes are copied + return 0 if the end of file was reached + return <0 with error code if there is an error + (UNZ_ERRNO for IO error, or zLib error for uncompress error) +*/ +extern int ZEXPORT unzReadCurrentFile (//file, buf, len) + unzFile file, + voidp buf, + unsigned len) +{ + int err=UNZ_OK; + uInt iRead = 0; + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + + if (pfile_in_zip_read_info->read_buffer == NULL) + return UNZ_END_OF_LIST_OF_FILE; + if (len==0) + return 0; + + pfile_in_zip_read_info->stream.next_out = (Bytef*)buf; + + pfile_in_zip_read_info->stream.avail_out = (uInt)len; + + if ((len>pfile_in_zip_read_info->rest_read_uncompressed) && + (!(pfile_in_zip_read_info->raw))) + pfile_in_zip_read_info->stream.avail_out = + (uInt)pfile_in_zip_read_info->rest_read_uncompressed; + + if ((len>pfile_in_zip_read_info->rest_read_compressed+ + pfile_in_zip_read_info->stream.avail_in) && + (pfile_in_zip_read_info->raw)) + pfile_in_zip_read_info->stream.avail_out = + (uInt)pfile_in_zip_read_info->rest_read_compressed+ + pfile_in_zip_read_info->stream.avail_in; + + while (pfile_in_zip_read_info->stream.avail_out>0) + { + if ((pfile_in_zip_read_info->stream.avail_in==0) && + (pfile_in_zip_read_info->rest_read_compressed>0)) + { + uInt uReadThis = UNZ_BUFSIZE; + if (pfile_in_zip_read_info->rest_read_compressedrest_read_compressed; + if (uReadThis == 0) + return UNZ_EOF; + if (ZSEEK(pfile_in_zip_read_info->z_filefunc, + pfile_in_zip_read_info->filestream, + pfile_in_zip_read_info->pos_in_zipfile + + pfile_in_zip_read_info->byte_before_the_zipfile, + ZLIB_FILEFUNC_SEEK_SET)!=0) + return UNZ_ERRNO; + if (ZREAD(pfile_in_zip_read_info->z_filefunc, + pfile_in_zip_read_info->filestream, + pfile_in_zip_read_info->read_buffer, + uReadThis)!=uReadThis) + return UNZ_ERRNO; + + +# ifndef NOUNCRYPT + if(s->encrypted) + { + uInt i; + for(i=0;iread_buffer[i] = + zdecode(s->keys,s->pcrc_32_tab, + pfile_in_zip_read_info->read_buffer[i]); + } +# endif + + + pfile_in_zip_read_info->pos_in_zipfile += uReadThis; + + pfile_in_zip_read_info->rest_read_compressed-=uReadThis; + + pfile_in_zip_read_info->stream.next_in = + (Bytef*)pfile_in_zip_read_info->read_buffer; + pfile_in_zip_read_info->stream.avail_in = (uInt)uReadThis; + } + + if ((pfile_in_zip_read_info->compression_method==0) || (pfile_in_zip_read_info->raw)) + { + uInt uDoCopy,i ; + + if ((pfile_in_zip_read_info->stream.avail_in == 0) && + (pfile_in_zip_read_info->rest_read_compressed == 0)) + return (iRead==0) ? UNZ_EOF : iRead; + + if (pfile_in_zip_read_info->stream.avail_out < + pfile_in_zip_read_info->stream.avail_in) + uDoCopy = pfile_in_zip_read_info->stream.avail_out ; + else + uDoCopy = pfile_in_zip_read_info->stream.avail_in ; + + for (i=0;istream.next_out+i) = + *(pfile_in_zip_read_info->stream.next_in+i); + + pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32, + pfile_in_zip_read_info->stream.next_out, + uDoCopy); + pfile_in_zip_read_info->rest_read_uncompressed-=uDoCopy; + pfile_in_zip_read_info->stream.avail_in -= uDoCopy; + pfile_in_zip_read_info->stream.avail_out -= uDoCopy; + pfile_in_zip_read_info->stream.next_out += uDoCopy; + pfile_in_zip_read_info->stream.next_in += uDoCopy; + pfile_in_zip_read_info->stream.total_out += uDoCopy; + iRead += uDoCopy; + } + else + { + uLong uTotalOutBefore,uTotalOutAfter; + const Bytef *bufBefore; + uLong uOutThis; + int flush=Z_SYNC_FLUSH; + + uTotalOutBefore = pfile_in_zip_read_info->stream.total_out; + bufBefore = pfile_in_zip_read_info->stream.next_out; + + /* + if ((pfile_in_zip_read_info->rest_read_uncompressed == + pfile_in_zip_read_info->stream.avail_out) && + (pfile_in_zip_read_info->rest_read_compressed == 0)) + flush = Z_FINISH; + */ + err=inflate(&pfile_in_zip_read_info->stream,flush); + + if ((err>=0) && (pfile_in_zip_read_info->stream.msg!=NULL)) + err = Z_DATA_ERROR; + + uTotalOutAfter = pfile_in_zip_read_info->stream.total_out; + uOutThis = uTotalOutAfter-uTotalOutBefore; + + pfile_in_zip_read_info->crc32 = + crc32(pfile_in_zip_read_info->crc32,bufBefore, + (uInt)(uOutThis)); + + pfile_in_zip_read_info->rest_read_uncompressed -= + uOutThis; + + iRead += (uInt)(uTotalOutAfter - uTotalOutBefore); + + if (err==Z_STREAM_END) + return (iRead==0) ? UNZ_EOF : iRead; + if (err!=Z_OK) + break; + } + } + + if (err==Z_OK) + return iRead; + return err; +} + + +/* + Give the current position in uncompressed data +*/ +extern z_off_t ZEXPORT unztell (//file) + unzFile file) +{ + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + return (z_off_t)pfile_in_zip_read_info->stream.total_out; +} + + +/* + return 1 if the end of file was reached, 0 elsewhere +*/ +extern int ZEXPORT unzeof (//file) + unzFile file) +{ + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + if (pfile_in_zip_read_info->rest_read_uncompressed == 0) + return 1; + else + return 0; +} + + + +/* + Read extra field from the current file (opened by unzOpenCurrentFile) + This is the local-header version of the extra field (sometimes, there is + more info in the local-header version than in the central-header) + + if buf==NULL, it return the size of the local extra field that can be read + + if buf!=NULL, len is the size of the buffer, the extra header is copied in + buf. + the return value is the number of bytes copied in buf, or (if <0) + the error code +*/ +extern int ZEXPORT unzGetLocalExtrafield (//file,buf,len) + unzFile file, + voidp buf, + unsigned len) +{ + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + uInt read_now; + uLong size_to_read; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + size_to_read = (pfile_in_zip_read_info->size_local_extrafield - + pfile_in_zip_read_info->pos_local_extrafield); + + if (buf==NULL) + return (int)size_to_read; + + if (len>size_to_read) + read_now = (uInt)size_to_read; + else + read_now = (uInt)len ; + + if (read_now==0) + return 0; + + if (ZSEEK(pfile_in_zip_read_info->z_filefunc, + pfile_in_zip_read_info->filestream, + pfile_in_zip_read_info->offset_local_extrafield + + pfile_in_zip_read_info->pos_local_extrafield, + ZLIB_FILEFUNC_SEEK_SET)!=0) + return UNZ_ERRNO; + + if (ZREAD(pfile_in_zip_read_info->z_filefunc, + pfile_in_zip_read_info->filestream, + buf,read_now)!=read_now) + return UNZ_ERRNO; + + return (int)read_now; +} + +/* + Close the file in zip opened with unzipOpenCurrentFile + Return UNZ_CRCERROR if all the file was read but the CRC is not good +*/ +extern int ZEXPORT unzCloseCurrentFile (//file) + unzFile file) +{ + int err=UNZ_OK; + + unz_s* s; + file_in_zip_read_info_s* pfile_in_zip_read_info; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + pfile_in_zip_read_info=s->pfile_in_zip_read; + + if (pfile_in_zip_read_info==NULL) + return UNZ_PARAMERROR; + + + if ((pfile_in_zip_read_info->rest_read_uncompressed == 0) && + (!pfile_in_zip_read_info->raw)) + { + if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait) + err=UNZ_CRCERROR; + } + + + TRYFREE(pfile_in_zip_read_info->read_buffer); + pfile_in_zip_read_info->read_buffer = NULL; + if (pfile_in_zip_read_info->stream_initialised) + inflateEnd(&pfile_in_zip_read_info->stream); + + pfile_in_zip_read_info->stream_initialised = 0; + TRYFREE(pfile_in_zip_read_info); + + s->pfile_in_zip_read=NULL; + + return err; +} + + +/* + Get the global comment string of the ZipFile, in the szComment buffer. + uSizeBuf is the size of the szComment buffer. + return the number of byte copied or an error code <0 +*/ +extern int ZEXPORT unzGetGlobalComment (//file, szComment, uSizeBuf) + unzFile file, + char *szComment, + uLong uSizeBuf) +{ +// int err=UNZ_OK; + unz_s* s; + uLong uReadThis ; + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + + uReadThis = uSizeBuf; + if (uReadThis>s->gi.size_comment) + uReadThis = s->gi.size_comment; + + if (ZSEEK(s->z_filefunc,s->filestream,s->central_pos+22,ZLIB_FILEFUNC_SEEK_SET)!=0) + return UNZ_ERRNO; + + if (uReadThis>0) + { + *szComment='\0'; + if (ZREAD(s->z_filefunc,s->filestream,szComment,uReadThis)!=uReadThis) + return UNZ_ERRNO; + } + + if ((szComment != NULL) && (uSizeBuf > s->gi.size_comment)) + *(szComment+s->gi.size_comment)='\0'; + return (int)uReadThis; +} + +/* Additions by RX '2004 */ +extern uLong ZEXPORT unzGetOffset (//file) + unzFile file) +{ + unz_s* s; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + if (!s->current_file_ok) + return 0; + if (s->gi.number_entry != 0 && s->gi.number_entry != 0xffff) + if (s->num_file==s->gi.number_entry) + return 0; + return s->pos_in_central_dir; +} + +extern int ZEXPORT unzSetOffset (//file, pos) + unzFile file, + uLong pos) +{ + unz_s* s; + int err; + + if (file==NULL) + return UNZ_PARAMERROR; + s=(unz_s*)file; + + s->pos_in_central_dir = pos; + s->num_file = s->gi.number_entry; /* hack */ + err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, + &s->cur_file_info_internal, + NULL,0,NULL,0,NULL,0); + s->current_file_ok = (err == UNZ_OK); + return err; +} diff --git a/Libraries/unzip101e/unzip.h b/Libraries/unzip101e/unzip.h new file mode 100644 index 0000000..1184783 --- /dev/null +++ b/Libraries/unzip101e/unzip.h @@ -0,0 +1,354 @@ +/* unzip.h -- IO for uncompress .zip files using zlib + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant + + This unzip package allow extract file from .ZIP file, compatible with PKZip 2.04g + WinZip, InfoZip tools and compatible. + + Multi volume ZipFile (span) are not supported. + Encryption compatible with pkzip 2.04g only supported + Old compressions used by old PKZip 1.x are not supported + + + I WAIT FEEDBACK at mail info@winimage.com + Visit also http://www.winimage.com/zLibDll/unzip.htm for evolution + + Condition of use and distribution are the same than zlib : + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + +*/ + +/* for more info about .ZIP format, see + http://www.info-zip.org/pub/infozip/doc/appnote-981119-iz.zip + http://www.info-zip.org/pub/infozip/doc/ + PkWare has also a specification at : + ftp://ftp.pkware.com/probdesc.zip +*/ + +#ifndef _unz_H +#define _unz_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef _ZLIB_H +#include "../zlib123/zlib.h" +#endif + +#ifndef _ZLIBIOAPI_H +#include "ioapi.h" +#endif + +#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) +/* like the STRICT of WIN32, we define a pointer that cannot be converted + from (void*) without cast */ +typedef struct TagunzFile__ { int unused; } unzFile__; +typedef unzFile__ *unzFile; +#else +typedef voidp unzFile; +#endif + + +#define UNZ_OK (0) +#define UNZ_END_OF_LIST_OF_FILE (-100) +#define UNZ_ERRNO (Z_ERRNO) +#define UNZ_EOF (0) +#define UNZ_PARAMERROR (-102) +#define UNZ_BADZIPFILE (-103) +#define UNZ_INTERNALERROR (-104) +#define UNZ_CRCERROR (-105) + +/* tm_unz contain date/time info */ +typedef struct tm_unz_s +{ + uInt tm_sec; /* seconds after the minute - [0,59] */ + uInt tm_min; /* minutes after the hour - [0,59] */ + uInt tm_hour; /* hours since midnight - [0,23] */ + uInt tm_mday; /* day of the month - [1,31] */ + uInt tm_mon; /* months since January - [0,11] */ + uInt tm_year; /* years - [1980..2044] */ +} tm_unz; + +/* unz_global_info structure contain global data about the ZIPfile + These data comes from the end of central dir */ +typedef struct unz_global_info_s +{ + uLong number_entry; /* total number of entries in + the central dir on this disk */ + uLong size_comment; /* size of the global comment of the zipfile */ +} unz_global_info; + + +/* unz_file_info contain information about a file in the zipfile */ +typedef struct unz_file_info_s +{ + uLong version; /* version made by 2 bytes */ + uLong version_needed; /* version needed to extract 2 bytes */ + uLong flag; /* general purpose bit flag 2 bytes */ + uLong compression_method; /* compression method 2 bytes */ + uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ + uLong crc; /* crc-32 4 bytes */ + uLong compressed_size; /* compressed size 4 bytes */ + uLong uncompressed_size; /* uncompressed size 4 bytes */ + uLong size_filename; /* filename length 2 bytes */ + uLong size_file_extra; /* extra field length 2 bytes */ + uLong size_file_comment; /* file comment length 2 bytes */ + + uLong disk_num_start; /* disk number start 2 bytes */ + uLong internal_fa; /* internal file attributes 2 bytes */ + uLong external_fa; /* external file attributes 4 bytes */ + + tm_unz tmu_date; +} unz_file_info; + +extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1, + const char* fileName2, + int iCaseSensitivity)); +/* + Compare two filename (fileName1,fileName2). + If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) + If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi + or strcasecmp) + If iCaseSenisivity = 0, case sensitivity is defaut of your operating system + (like 1 on Unix, 2 on Windows) +*/ + + +extern unzFile ZEXPORT unzOpen OF((const char *path)); +/* + Open a Zip file. path contain the full pathname (by example, + on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer + "zlib/zlib113.zip". + If the zipfile cannot be opened (file don't exist or in not valid), the + return value is NULL. + Else, the return value is a unzFile Handle, usable with other function + of this unzip package. +*/ + +extern unzFile ZEXPORT unzOpen2 OF((const char *path, + zlib_filefunc_def* pzlib_filefunc_def)); +/* + Open a Zip file, like unzOpen, but provide a set of file low level API + for read/write the zip file (see ioapi.h) +*/ + +extern int ZEXPORT unzClose OF((unzFile file)); +/* + Close a ZipFile opened with unzipOpen. + If there is files inside the .Zip opened with unzOpenCurrentFile (see later), + these files MUST be closed with unzipCloseCurrentFile before call unzipClose. + return UNZ_OK if there is no problem. */ + +extern int ZEXPORT unzGetGlobalInfo OF((unzFile file, + unz_global_info *pglobal_info)); +/* + Write info about the ZipFile in the *pglobal_info structure. + No preparation of the structure is needed + return UNZ_OK if there is no problem. */ + + +extern int ZEXPORT unzGetGlobalComment OF((unzFile file, + char *szComment, + uLong uSizeBuf)); +/* + Get the global comment string of the ZipFile, in the szComment buffer. + uSizeBuf is the size of the szComment buffer. + return the number of byte copied or an error code <0 +*/ + + +/***************************************************************************/ +/* Unzip package allow you browse the directory of the zipfile */ + +extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); +/* + Set the current file of the zipfile to the first file. + return UNZ_OK if there is no problem +*/ + +extern int ZEXPORT unzGoToNextFile OF((unzFile file)); +/* + Set the current file of the zipfile to the next file. + return UNZ_OK if there is no problem + return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. +*/ + +extern int ZEXPORT unzLocateFile OF((unzFile file, + const char *szFileName, + int iCaseSensitivity)); +/* + Try locate the file szFileName in the zipfile. + For the iCaseSensitivity signification, see unzStringFileNameCompare + + return value : + UNZ_OK if the file is found. It becomes the current file. + UNZ_END_OF_LIST_OF_FILE if the file is not found +*/ + + +/* ****************************************** */ +/* Ryan supplied functions */ +/* unz_file_info contain information about a file in the zipfile */ +typedef struct unz_file_pos_s +{ + uLong pos_in_zip_directory; /* offset in zip file directory */ + uLong num_of_file; /* # of file */ +} unz_file_pos; + +extern int ZEXPORT unzGetFilePos( + unzFile file, + unz_file_pos* file_pos); + +extern int ZEXPORT unzGoToFilePos( + unzFile file, + unz_file_pos* file_pos); + +/* ****************************************** */ + +extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file, + unz_file_info *pfile_info, + char *szFileName, + uLong fileNameBufferSize, + void *extraField, + uLong extraFieldBufferSize, + char *szComment, + uLong commentBufferSize)); +/* + Get Info about the current file + if pfile_info!=NULL, the *pfile_info structure will contain somes info about + the current file + if szFileName!=NULL, the filemane string will be copied in szFileName + (fileNameBufferSize is the size of the buffer) + if extraField!=NULL, the extra field information will be copied in extraField + (extraFieldBufferSize is the size of the buffer). + This is the Central-header version of the extra field + if szComment!=NULL, the comment string of the file will be copied in szComment + (commentBufferSize is the size of the buffer) +*/ + +/***************************************************************************/ +/* for reading the content of the current zipfile, you can open it, read data + from it, and close it (you can close it before reading all the file) + */ + +extern int ZEXPORT unzOpenCurrentFile OF((unzFile file)); +/* + Open for reading data the current file in the zipfile. + If there is no error, the return value is UNZ_OK. +*/ + +extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file, + const char* password)); +/* + Open for reading data the current file in the zipfile. + password is a crypting password + If there is no error, the return value is UNZ_OK. +*/ + +extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file, + int* method, + int* level, + int raw)); +/* + Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) + if raw==1 + *method will receive method of compression, *level will receive level of + compression + note : you can set level parameter as NULL (if you did not want known level, + but you CANNOT set method parameter as NULL +*/ + +extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file, + int* method, + int* level, + int raw, + const char* password)); +/* + Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) + if raw==1 + *method will receive method of compression, *level will receive level of + compression + note : you can set level parameter as NULL (if you did not want known level, + but you CANNOT set method parameter as NULL +*/ + + +extern int ZEXPORT unzCloseCurrentFile OF((unzFile file)); +/* + Close the file in zip opened with unzOpenCurrentFile + Return UNZ_CRCERROR if all the file was read but the CRC is not good +*/ + +extern int ZEXPORT unzReadCurrentFile OF((unzFile file, + voidp buf, + unsigned len)); +/* + Read bytes from the current file (opened by unzOpenCurrentFile) + buf contain buffer where data must be copied + len the size of buf. + + return the number of byte copied if somes bytes are copied + return 0 if the end of file was reached + return <0 with error code if there is an error + (UNZ_ERRNO for IO error, or zLib error for uncompress error) +*/ + +extern z_off_t ZEXPORT unztell OF((unzFile file)); +/* + Give the current position in uncompressed data +*/ + +extern int ZEXPORT unzeof OF((unzFile file)); +/* + return 1 if the end of file was reached, 0 elsewhere +*/ + +extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, + voidp buf, + unsigned len)); +/* + Read extra field from the current file (opened by unzOpenCurrentFile) + This is the local-header version of the extra field (sometimes, there is + more info in the local-header version than in the central-header) + + if buf==NULL, it return the size of the local extra field + + if buf!=NULL, len is the size of the buffer, the extra header is copied in + buf. + the return value is the number of bytes copied in buf, or (if <0) + the error code +*/ + +/***************************************************************************/ + +/* Get the current file offset */ +extern uLong ZEXPORT unzGetOffset (unzFile file); + +/* Set the current file offset */ +extern int ZEXPORT unzSetOffset (unzFile file, uLong pos); + + + +#ifdef __cplusplus +} +#endif + +#endif /* _unz_H */ diff --git a/Libraries/unzip101e/zip.cpp b/Libraries/unzip101e/zip.cpp new file mode 100644 index 0000000..5941e65 --- /dev/null +++ b/Libraries/unzip101e/zip.cpp @@ -0,0 +1,1219 @@ +/* zip.c -- IO on .zip files using zlib + Version 1.01e, February 12th, 2005 + + 27 Dec 2004 Rolf Kalbermatter + Modification to zipOpen2 to support globalComment retrieval. + + Copyright (C) 1998-2005 Gilles Vollant + + Read zip.h for more info +*/ + + +#include +#include +#include +#include + +#include "zip.h" + +#ifdef STDC +# include +# include +# include +#endif +#ifdef NO_ERRNO_H + extern int errno; +#else +# include +#endif + + +#ifndef local +# define local static +#endif +/* compile with -Dlocal if your debugger can't find static symbols */ + +#ifndef VERSIONMADEBY +# define VERSIONMADEBY (0x0) /* platform depedent */ +#endif + +#ifndef Z_BUFSIZE +#define Z_BUFSIZE (16384) +#endif + +#ifndef Z_MAXFILENAMEINZIP +#define Z_MAXFILENAMEINZIP (256) +#endif + +#ifndef ALLOC +# define ALLOC(size) (malloc(size)) +#endif +#ifndef TRYFREE +# define TRYFREE(p) {if (p) free(p);} +#endif + +/* +#define SIZECENTRALDIRITEM (0x2e) +#define SIZEZIPLOCALHEADER (0x1e) +*/ + +/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ + +#ifndef SEEK_CUR +#define SEEK_CUR 1 +#endif + +#ifndef SEEK_END +#define SEEK_END 2 +#endif + +#ifndef SEEK_SET +#define SEEK_SET 0 +#endif + +#ifndef DEF_MEM_LEVEL +#if MAX_MEM_LEVEL >= 8 +# define DEF_MEM_LEVEL 8 +#else +# define DEF_MEM_LEVEL MAX_MEM_LEVEL +#endif +#endif +const char zip_copyright[] = + " zip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll"; + + +#define SIZEDATA_INDATABLOCK (4096-(4*4)) + +#define LOCALHEADERMAGIC (0x04034b50) +#define CENTRALHEADERMAGIC (0x02014b50) +#define ENDHEADERMAGIC (0x06054b50) + +#define FLAG_LOCALHEADER_OFFSET (0x06) +#define CRC_LOCALHEADER_OFFSET (0x0e) + +#define SIZECENTRALHEADER (0x2e) /* 46 */ + +typedef struct linkedlist_datablock_internal_s +{ + struct linkedlist_datablock_internal_s* next_datablock; + uLong avail_in_this_block; + uLong filled_in_this_block; + uLong unused; /* for future use and alignement */ + unsigned char data[SIZEDATA_INDATABLOCK]; +} linkedlist_datablock_internal; + +typedef struct linkedlist_data_s +{ + linkedlist_datablock_internal* first_block; + linkedlist_datablock_internal* last_block; +} linkedlist_data; + + +typedef struct +{ + z_stream stream; /* zLib stream structure for inflate */ + int stream_initialised; /* 1 is stream is initialised */ + uInt pos_in_buffered_data; /* last written byte in buffered_data */ + + uLong pos_local_header; /* offset of the local header of the file + currenty writing */ + char* central_header; /* central header data for the current file */ + uLong size_centralheader; /* size of the central header for cur file */ + uLong flag; /* flag of the file currently writing */ + + int method; /* compression method of file currenty wr.*/ + int raw; /* 1 for directly writing raw data */ + Byte buffered_data[Z_BUFSIZE];/* buffer contain compressed data to be writ*/ + uLong dosDate; + uLong crc32; + int encrypt; +#ifndef NOCRYPT + unsigned long keys[3]; /* keys defining the pseudo-random sequence */ + const unsigned long* pcrc_32_tab; + int crypt_header_size; +#endif +} curfile_info; + +typedef struct +{ + zlib_filefunc_def z_filefunc; + voidpf filestream; /* io structore of the zipfile */ + linkedlist_data central_dir;/* datablock with central dir in construction*/ + int in_opened_file_inzip; /* 1 if a file in the zip is currently writ.*/ + curfile_info ci; /* info on the file curretly writing */ + + uLong begin_pos; /* position of the beginning of the zipfile */ + uLong add_position_when_writting_offset; + uLong number_entry; +#ifndef NO_ADDFILEINEXISTINGZIP + char *globalcomment; +#endif +} zip_internal; + + + +#ifndef NOCRYPT +#define INCLUDECRYPTINGCODE_IFCRYPTALLOWED +#include "crypt.h" +#endif + +local linkedlist_datablock_internal* allocate_new_datablock() +{ + linkedlist_datablock_internal* ldi; + ldi = (linkedlist_datablock_internal*) + ALLOC(sizeof(linkedlist_datablock_internal)); + if (ldi!=NULL) + { + ldi->next_datablock = NULL ; + ldi->filled_in_this_block = 0 ; + ldi->avail_in_this_block = SIZEDATA_INDATABLOCK ; + } + return ldi; +} + +local void free_datablock(//ldi) + linkedlist_datablock_internal* ldi) +{ + while (ldi!=NULL) + { + linkedlist_datablock_internal* ldinext = ldi->next_datablock; + TRYFREE(ldi); + ldi = ldinext; + } +} + +local void init_linkedlist(//ll) + linkedlist_data* ll) +{ + ll->first_block = ll->last_block = NULL; +} + +local void free_linkedlist(//ll) + linkedlist_data* ll) +{ + free_datablock(ll->first_block); + ll->first_block = ll->last_block = NULL; +} + + +local int add_data_in_datablock(//ll,buf,len) + linkedlist_data* ll, + const void* buf, + uLong len) +{ + linkedlist_datablock_internal* ldi; + const unsigned char* from_copy; + + if (ll==NULL) + return ZIP_INTERNALERROR; + + if (ll->last_block == NULL) + { + ll->first_block = ll->last_block = allocate_new_datablock(); + if (ll->first_block == NULL) + return ZIP_INTERNALERROR; + } + + ldi = ll->last_block; + from_copy = (unsigned char*)buf; + + while (len>0) + { + uInt copy_this; + uInt i; + unsigned char* to_copy; + + if (ldi->avail_in_this_block==0) + { + ldi->next_datablock = allocate_new_datablock(); + if (ldi->next_datablock == NULL) + return ZIP_INTERNALERROR; + ldi = ldi->next_datablock ; + ll->last_block = ldi; + } + + if (ldi->avail_in_this_block < len) + copy_this = (uInt)ldi->avail_in_this_block; + else + copy_this = (uInt)len; + + to_copy = &(ldi->data[ldi->filled_in_this_block]); + + for (i=0;ifilled_in_this_block += copy_this; + ldi->avail_in_this_block -= copy_this; + from_copy += copy_this ; + len -= copy_this; + } + return ZIP_OK; +} + + + +/****************************************************************************/ + +#ifndef NO_ADDFILEINEXISTINGZIP +/* =========================================================================== + Inputs a long in LSB order to the given file + nbByte == 1, 2 or 4 (byte, short or long) +*/ + +local int ziplocal_putValue OF((const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream, uLong x, int nbByte)); +local int ziplocal_putValue (//pzlib_filefunc_def, filestream, x, nbByte) + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream, + uLong x, + int nbByte) +{ + unsigned char buf[4]; + int n; + for (n = 0; n < nbByte; n++) + { + buf[n] = (unsigned char)(x & 0xff); + x >>= 8; + } + if (x != 0) + { /* data overflow - hack for ZIP64 (X Roche) */ + for (n = 0; n < nbByte; n++) + { + buf[n] = 0xff; + } + } + + if (ZWRITE(*pzlib_filefunc_def,filestream,buf,nbByte)!=(uLong)nbByte) + return ZIP_ERRNO; + else + return ZIP_OK; +} + +local void ziplocal_putValue_inmemory OF((void* dest, uLong x, int nbByte)); +local void ziplocal_putValue_inmemory (//dest, x, nbByte) + void* dest, + uLong x, + int nbByte) +{ + unsigned char* buf=(unsigned char*)dest; + int n; + for (n = 0; n < nbByte; n++) { + buf[n] = (unsigned char)(x & 0xff); + x >>= 8; + } + + if (x != 0) + { /* data overflow - hack for ZIP64 */ + for (n = 0; n < nbByte; n++) + { + buf[n] = 0xff; + } + } +} + +/****************************************************************************/ + + +local uLong ziplocal_TmzDateToDosDate(//ptm,dosDate) + const tm_zip* ptm, + uLong dosDate) +{ + uLong year = (uLong)ptm->tm_year; + if (year>1980) + year-=1980; + else if (year>80) + year-=80; + return + (uLong) (((ptm->tm_mday) + (32 * (ptm->tm_mon+1)) + (512 * year)) << 16) | + ((ptm->tm_sec/2) + (32* ptm->tm_min) + (2048 * (uLong)ptm->tm_hour)); +} + + +/****************************************************************************/ + +local int ziplocal_getByte OF(( + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream, + int *pi)); + +local int ziplocal_getByte(//pzlib_filefunc_def,filestream,pi) + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream, + int *pi) +{ + unsigned char c; + int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1); + if (err==1) + { + *pi = (int)c; + return ZIP_OK; + } + else + { + if (ZERROR(*pzlib_filefunc_def,filestream)) + return ZIP_ERRNO; + else + return ZIP_EOF; + } +} + + +/* =========================================================================== + Reads a long in LSB order from the given gz_stream. Sets +*/ +local int ziplocal_getShort OF(( + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream, + uLong *pX)); + +local int ziplocal_getShort (//pzlib_filefunc_def,filestream,pX) + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream, + uLong *pX) +{ + uLong x ; + int i; + int err; + + err = ziplocal_getByte(pzlib_filefunc_def,filestream,&i); + x = (uLong)i; + + if (err==ZIP_OK) + err = ziplocal_getByte(pzlib_filefunc_def,filestream,&i); + x += ((uLong)i)<<8; + + if (err==ZIP_OK) + *pX = x; + else + *pX = 0; + return err; +} + +local int ziplocal_getLong OF(( + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream, + uLong *pX)); + +local int ziplocal_getLong (//pzlib_filefunc_def,filestream,pX) + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream, + uLong *pX) +{ + uLong x ; + int i; + int err; + + err = ziplocal_getByte(pzlib_filefunc_def,filestream,&i); + x = (uLong)i; + + if (err==ZIP_OK) + err = ziplocal_getByte(pzlib_filefunc_def,filestream,&i); + x += ((uLong)i)<<8; + + if (err==ZIP_OK) + err = ziplocal_getByte(pzlib_filefunc_def,filestream,&i); + x += ((uLong)i)<<16; + + if (err==ZIP_OK) + err = ziplocal_getByte(pzlib_filefunc_def,filestream,&i); + x += ((uLong)i)<<24; + + if (err==ZIP_OK) + *pX = x; + else + *pX = 0; + return err; +} + +#ifndef BUFREADCOMMENT +#define BUFREADCOMMENT (0x400) +#endif +/* + Locate the Central directory of a zipfile (at the end, just before + the global comment) +*/ +local uLong ziplocal_SearchCentralDir OF(( + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream)); + +local uLong ziplocal_SearchCentralDir(//pzlib_filefunc_def,filestream) + const zlib_filefunc_def* pzlib_filefunc_def, + voidpf filestream) +{ + unsigned char* buf; + uLong uSizeFile; + uLong uBackRead; + uLong uMaxBack=0xffff; /* maximum size of global comment */ + uLong uPosFound=0; + + if (ZSEEK(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0) + return 0; + + + uSizeFile = ZTELL(*pzlib_filefunc_def,filestream); + + if (uMaxBack>uSizeFile) + uMaxBack = uSizeFile; + + buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); + if (buf==NULL) + return 0; + + uBackRead = 4; + while (uBackReaduMaxBack) + uBackRead = uMaxBack; + else + uBackRead+=BUFREADCOMMENT; + uReadPos = uSizeFile-uBackRead ; + + uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? + (BUFREADCOMMENT+4) : (uSizeFile-uReadPos); + if (ZSEEK(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0) + break; + + if (ZREAD(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize) + break; + + for (i=(int)uReadSize-3; (i--)>0;) + if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && + ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06)) + { + uPosFound = uReadPos+i; + break; + } + + if (uPosFound!=0) + break; + } + TRYFREE(buf); + return uPosFound; +} +#endif /* !NO_ADDFILEINEXISTINGZIP*/ + +/************************************************************/ +extern zipFile ZEXPORT zipOpen2 (//pathname, append, globalcomment, pzlib_filefunc_def) + const char *pathname, + int append, + zipcharpc* globalcomment, + zlib_filefunc_def* pzlib_filefunc_def) +{ + zip_internal ziinit; + zip_internal* zi; + int err=ZIP_OK; + + + if (pzlib_filefunc_def==NULL) + fill_fopen_filefunc(&ziinit.z_filefunc); + else + ziinit.z_filefunc = *pzlib_filefunc_def; + + ziinit.filestream = (*(ziinit.z_filefunc.zopen_file)) + (ziinit.z_filefunc.opaque, + pathname, + (append == APPEND_STATUS_CREATE) ? + (ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_CREATE) : + (ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_EXISTING)); + + if (ziinit.filestream == NULL) + return NULL; + ziinit.begin_pos = ZTELL(ziinit.z_filefunc,ziinit.filestream); + ziinit.in_opened_file_inzip = 0; + ziinit.ci.stream_initialised = 0; + ziinit.number_entry = 0; + ziinit.add_position_when_writting_offset = 0; + init_linkedlist(&(ziinit.central_dir)); + + + zi = (zip_internal*)ALLOC(sizeof(zip_internal)); + if (zi==NULL) + { + ZCLOSE(ziinit.z_filefunc,ziinit.filestream); + return NULL; + } + + /* now we add file in a zipfile */ +# ifndef NO_ADDFILEINEXISTINGZIP + ziinit.globalcomment = NULL; + if (append == APPEND_STATUS_ADDINZIP) + { + uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ + + uLong size_central_dir; /* size of the central directory */ + uLong offset_central_dir; /* offset of start of central directory */ + uLong central_pos,uL; + + uLong number_disk; /* number of the current dist, used for + spaning ZIP, unsupported, always 0*/ + uLong number_disk_with_CD; /* number the the disk with central dir, used + for spaning ZIP, unsupported, always 0*/ + uLong number_entry; + uLong number_entry_CD; /* total number of entries in + the central dir + (same than number_entry on nospan) */ + uLong size_comment; + + central_pos = ziplocal_SearchCentralDir(&ziinit.z_filefunc,ziinit.filestream); + if (central_pos==0) + err=ZIP_ERRNO; + + if (ZSEEK(ziinit.z_filefunc, ziinit.filestream, + central_pos,ZLIB_FILEFUNC_SEEK_SET)!=0) + err=ZIP_ERRNO; + + /* the signature, already checked */ + if (ziplocal_getLong(&ziinit.z_filefunc, ziinit.filestream,&uL)!=ZIP_OK) + err=ZIP_ERRNO; + + /* number of this disk */ + if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&number_disk)!=ZIP_OK) + err=ZIP_ERRNO; + + /* number of the disk with the start of the central directory */ + if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&number_disk_with_CD)!=ZIP_OK) + err=ZIP_ERRNO; + + /* total number of entries in the central dir on this disk */ + if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&number_entry)!=ZIP_OK) + err=ZIP_ERRNO; + + /* total number of entries in the central dir */ + if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&number_entry_CD)!=ZIP_OK) + err=ZIP_ERRNO; + + if ((number_entry_CD!=number_entry) || + (number_disk_with_CD!=0) || + (number_disk!=0)) + err=ZIP_BADZIPFILE; + + /* size of the central directory */ + if (ziplocal_getLong(&ziinit.z_filefunc, ziinit.filestream,&size_central_dir)!=ZIP_OK) + err=ZIP_ERRNO; + + /* offset of start of central directory with respect to the + starting disk number */ + if (ziplocal_getLong(&ziinit.z_filefunc, ziinit.filestream,&offset_central_dir)!=ZIP_OK) + err=ZIP_ERRNO; + + /* zipfile global comment length */ + if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&size_comment)!=ZIP_OK) + err=ZIP_ERRNO; + + if ((central_pos0) + { + ziinit.globalcomment = (char*)ALLOC(size_comment+1); + if (ziinit.globalcomment) + { + size_comment = ZREAD(ziinit.z_filefunc, ziinit.filestream,ziinit.globalcomment,size_comment); + ziinit.globalcomment[size_comment]=0; + } + } + + byte_before_the_zipfile = central_pos - + (offset_central_dir+size_central_dir); + ziinit.add_position_when_writting_offset = byte_before_the_zipfile; + + { + uLong size_central_dir_to_read = size_central_dir; + size_t buf_size = SIZEDATA_INDATABLOCK; + void* buf_read = (void*)ALLOC(buf_size); + if (ZSEEK(ziinit.z_filefunc, ziinit.filestream, + offset_central_dir + byte_before_the_zipfile, + ZLIB_FILEFUNC_SEEK_SET) != 0) + err=ZIP_ERRNO; + + while ((size_central_dir_to_read>0) && (err==ZIP_OK)) + { + uLong read_this = SIZEDATA_INDATABLOCK; + if (read_this > size_central_dir_to_read) + read_this = size_central_dir_to_read; + if (ZREAD(ziinit.z_filefunc, ziinit.filestream,buf_read,read_this) != read_this) + err=ZIP_ERRNO; + + if (err==ZIP_OK) + err = add_data_in_datablock(&ziinit.central_dir,buf_read, + (uLong)read_this); + size_central_dir_to_read-=read_this; + } + TRYFREE(buf_read); + } + ziinit.begin_pos = byte_before_the_zipfile; + ziinit.number_entry = number_entry_CD; + + if (ZSEEK(ziinit.z_filefunc, ziinit.filestream, + offset_central_dir+byte_before_the_zipfile,ZLIB_FILEFUNC_SEEK_SET)!=0) + err=ZIP_ERRNO; + } + + if (globalcomment) + { + *globalcomment = ziinit.globalcomment; + } +# endif /* !NO_ADDFILEINEXISTINGZIP*/ + + if (err != ZIP_OK) + { +# ifndef NO_ADDFILEINEXISTINGZIP + TRYFREE(ziinit.globalcomment); +# endif /* !NO_ADDFILEINEXISTINGZIP*/ + TRYFREE(zi); + return NULL; + } + else + { + *zi = ziinit; + return (zipFile)zi; + } +} + +extern zipFile ZEXPORT zipOpen (//pathname, append) + const char *pathname, + int append) +{ + return zipOpen2(pathname,append,NULL,NULL); +} + +extern int ZEXPORT zipOpenNewFileInZip3 (/*file, filename, zipfi, + extrafield_local, size_extrafield_local, + extrafield_global, size_extrafield_global, + comment, method, level, raw, + windowBits, memLevel, strategy, + password, crcForCrypting)*/ + zipFile file, + const char* filename, + const zip_fileinfo* zipfi, + const void* extrafield_local, + uInt size_extrafield_local, + const void* extrafield_global, + uInt size_extrafield_global, + const char* comment, + int method, + int level, + int raw, + int windowBits, + int memLevel, + int strategy, + const char* password, + uLong crcForCrypting) +{ + zip_internal* zi; + uInt size_filename; + uInt size_comment; + uInt i; + int err = ZIP_OK; + +# ifdef NOCRYPT + if (password != NULL) + return ZIP_PARAMERROR; +# endif + + if (file == NULL) + return ZIP_PARAMERROR; + if ((method!=0) && (method!=Z_DEFLATED)) + return ZIP_PARAMERROR; + + zi = (zip_internal*)file; + + if (zi->in_opened_file_inzip == 1) + { + err = zipCloseFileInZip (file); + if (err != ZIP_OK) + return err; + } + + + if (filename==NULL) + filename="-"; + + if (comment==NULL) + size_comment = 0; + else + size_comment = (uInt)strlen(comment); + + size_filename = (uInt)strlen(filename); + + if (zipfi == NULL) + zi->ci.dosDate = 0; + else + { + if (zipfi->dosDate != 0) + zi->ci.dosDate = zipfi->dosDate; + else zi->ci.dosDate = ziplocal_TmzDateToDosDate(&zipfi->tmz_date,zipfi->dosDate); + } + + zi->ci.flag = 0; + if ((level==8) || (level==9)) + zi->ci.flag |= 2; + if (level==2) + zi->ci.flag |= 4; + if (level==1) + zi->ci.flag |= 6; + if (password != NULL) + zi->ci.flag |= 1; + + zi->ci.crc32 = 0; + zi->ci.method = method; + zi->ci.encrypt = 0; + zi->ci.stream_initialised = 0; + zi->ci.pos_in_buffered_data = 0; + zi->ci.raw = raw; + zi->ci.pos_local_header = ZTELL(zi->z_filefunc,zi->filestream) ; + zi->ci.size_centralheader = SIZECENTRALHEADER + size_filename + + size_extrafield_global + size_comment; + zi->ci.central_header = (char*)ALLOC((uInt)zi->ci.size_centralheader); + + ziplocal_putValue_inmemory(zi->ci.central_header,(uLong)CENTRALHEADERMAGIC,4); + /* version info */ + ziplocal_putValue_inmemory(zi->ci.central_header+4,(uLong)VERSIONMADEBY,2); + ziplocal_putValue_inmemory(zi->ci.central_header+6,(uLong)20,2); + ziplocal_putValue_inmemory(zi->ci.central_header+8,(uLong)zi->ci.flag,2); + ziplocal_putValue_inmemory(zi->ci.central_header+10,(uLong)zi->ci.method,2); + ziplocal_putValue_inmemory(zi->ci.central_header+12,(uLong)zi->ci.dosDate,4); + ziplocal_putValue_inmemory(zi->ci.central_header+16,(uLong)0,4); /*crc*/ + ziplocal_putValue_inmemory(zi->ci.central_header+20,(uLong)0,4); /*compr size*/ + ziplocal_putValue_inmemory(zi->ci.central_header+24,(uLong)0,4); /*uncompr size*/ + ziplocal_putValue_inmemory(zi->ci.central_header+28,(uLong)size_filename,2); + ziplocal_putValue_inmemory(zi->ci.central_header+30,(uLong)size_extrafield_global,2); + ziplocal_putValue_inmemory(zi->ci.central_header+32,(uLong)size_comment,2); + ziplocal_putValue_inmemory(zi->ci.central_header+34,(uLong)0,2); /*disk nm start*/ + + if (zipfi==NULL) + ziplocal_putValue_inmemory(zi->ci.central_header+36,(uLong)0,2); + else + ziplocal_putValue_inmemory(zi->ci.central_header+36,(uLong)zipfi->internal_fa,2); + + if (zipfi==NULL) + ziplocal_putValue_inmemory(zi->ci.central_header+38,(uLong)0,4); + else + ziplocal_putValue_inmemory(zi->ci.central_header+38,(uLong)zipfi->external_fa,4); + + ziplocal_putValue_inmemory(zi->ci.central_header+42,(uLong)zi->ci.pos_local_header- zi->add_position_when_writting_offset,4); + + for (i=0;ici.central_header+SIZECENTRALHEADER+i) = *(filename+i); + + for (i=0;ici.central_header+SIZECENTRALHEADER+size_filename+i) = + *(((const char*)extrafield_global)+i); + + for (i=0;ici.central_header+SIZECENTRALHEADER+size_filename+ + size_extrafield_global+i) = *(comment+i); + if (zi->ci.central_header == NULL) + return ZIP_INTERNALERROR; + + /* write the local header */ + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)LOCALHEADERMAGIC,4); + + if (err==ZIP_OK) + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)20,2);/* version needed to extract */ + if (err==ZIP_OK) + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.flag,2); + + if (err==ZIP_OK) + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.method,2); + + if (err==ZIP_OK) + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.dosDate,4); + + if (err==ZIP_OK) + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* crc 32, unknown */ + if (err==ZIP_OK) + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* compressed size, unknown */ + if (err==ZIP_OK) + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* uncompressed size, unknown */ + + if (err==ZIP_OK) + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_filename,2); + + if (err==ZIP_OK) + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_extrafield_local,2); + + if ((err==ZIP_OK) && (size_filename>0)) + if (ZWRITE(zi->z_filefunc,zi->filestream,filename,size_filename)!=size_filename) + err = ZIP_ERRNO; + + if ((err==ZIP_OK) && (size_extrafield_local>0)) + if (ZWRITE(zi->z_filefunc,zi->filestream,extrafield_local,size_extrafield_local) + !=size_extrafield_local) + err = ZIP_ERRNO; + + zi->ci.stream.avail_in = (uInt)0; + zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; + zi->ci.stream.next_out = zi->ci.buffered_data; + zi->ci.stream.total_in = 0; + zi->ci.stream.total_out = 0; + + if ((err==ZIP_OK) && (zi->ci.method == Z_DEFLATED) && (!zi->ci.raw)) + { + zi->ci.stream.zalloc = (alloc_func)0; + zi->ci.stream.zfree = (free_func)0; + zi->ci.stream.opaque = (voidpf)0; + + if (windowBits>0) + windowBits = -windowBits; + + err = deflateInit2(&zi->ci.stream, level, + Z_DEFLATED, windowBits, memLevel, strategy); + + if (err==Z_OK) + zi->ci.stream_initialised = 1; + } +# ifndef NOCRYPT + zi->ci.crypt_header_size = 0; + if ((err==Z_OK) && (password != NULL)) + { + unsigned char bufHead[RAND_HEAD_LEN]; + unsigned int sizeHead; + zi->ci.encrypt = 1; + zi->ci.pcrc_32_tab = get_crc_table(); + /*init_keys(password,zi->ci.keys,zi->ci.pcrc_32_tab);*/ + + sizeHead=crypthead(password,bufHead,RAND_HEAD_LEN,zi->ci.keys,zi->ci.pcrc_32_tab,crcForCrypting); + zi->ci.crypt_header_size = sizeHead; + + if (ZWRITE(zi->z_filefunc,zi->filestream,bufHead,sizeHead) != sizeHead) + err = ZIP_ERRNO; + } +# endif + + if (err==Z_OK) + zi->in_opened_file_inzip = 1; + return err; +} + +extern int ZEXPORT zipOpenNewFileInZip2(/*file, filename, zipfi, + extrafield_local, size_extrafield_local, + extrafield_global, size_extrafield_global, + comment, method, level, raw)*/ + zipFile file, + const char* filename, + const zip_fileinfo* zipfi, + const void* extrafield_local, + uInt size_extrafield_local, + const void* extrafield_global, + uInt size_extrafield_global, + const char* comment, + int method, + int level, + int raw) +{ + return zipOpenNewFileInZip3 (file, filename, zipfi, + extrafield_local, size_extrafield_local, + extrafield_global, size_extrafield_global, + comment, method, level, raw, + -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, + NULL, 0); +} + +extern int ZEXPORT zipOpenNewFileInZip (/*file, filename, zipfi, + extrafield_local, size_extrafield_local, + extrafield_global, size_extrafield_global, + comment, method, level)*/ + zipFile file, + const char* filename, + const zip_fileinfo* zipfi, + const void* extrafield_local, + uInt size_extrafield_local, + const void* extrafield_global, + uInt size_extrafield_global, + const char* comment, + int method, + int level) +{ + return zipOpenNewFileInZip2 (file, filename, zipfi, + extrafield_local, size_extrafield_local, + extrafield_global, size_extrafield_global, + comment, method, level, 0); +} + +local int zipFlushWriteBuffer(//zi) + zip_internal* zi) +{ + int err=ZIP_OK; + + if (zi->ci.encrypt != 0) + { +#ifndef NOCRYPT + uInt i; + int t; + for (i=0;ici.pos_in_buffered_data;i++) + zi->ci.buffered_data[i] = zencode(zi->ci.keys, zi->ci.pcrc_32_tab, + zi->ci.buffered_data[i],t); +#endif + } + if (ZWRITE(zi->z_filefunc,zi->filestream,zi->ci.buffered_data,zi->ci.pos_in_buffered_data) + !=zi->ci.pos_in_buffered_data) + err = ZIP_ERRNO; + zi->ci.pos_in_buffered_data = 0; + return err; +} + +extern int ZEXPORT zipWriteInFileInZip (//file, buf, len) + zipFile file, + const void* buf, + unsigned len) +{ + zip_internal* zi; + int err=ZIP_OK; + + if (file == NULL) + return ZIP_PARAMERROR; + zi = (zip_internal*)file; + + if (zi->in_opened_file_inzip == 0) + return ZIP_PARAMERROR; + + zi->ci.stream.next_in = (Bytef*)buf; + zi->ci.stream.avail_in = len; + zi->ci.crc32 = crc32(zi->ci.crc32,(const Bytef*)buf,len); + + while ((err==ZIP_OK) && (zi->ci.stream.avail_in>0)) + { + if (zi->ci.stream.avail_out == 0) + { + if (zipFlushWriteBuffer(zi) == ZIP_ERRNO) + err = ZIP_ERRNO; + zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; + zi->ci.stream.next_out = zi->ci.buffered_data; + } + + + if(err != ZIP_OK) + break; + + if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw)) + { + uLong uTotalOutBefore = zi->ci.stream.total_out; + err=deflate(&zi->ci.stream, Z_NO_FLUSH); + zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - uTotalOutBefore) ; + + } + else + { + uInt copy_this,i; + if (zi->ci.stream.avail_in < zi->ci.stream.avail_out) + copy_this = zi->ci.stream.avail_in; + else + copy_this = zi->ci.stream.avail_out; + for (i=0;ici.stream.next_out)+i) = + *(((const char*)zi->ci.stream.next_in)+i); + { + zi->ci.stream.avail_in -= copy_this; + zi->ci.stream.avail_out-= copy_this; + zi->ci.stream.next_in+= copy_this; + zi->ci.stream.next_out+= copy_this; + zi->ci.stream.total_in+= copy_this; + zi->ci.stream.total_out+= copy_this; + zi->ci.pos_in_buffered_data += copy_this; + } + } + } + + return err; +} + +extern int ZEXPORT zipCloseFileInZipRaw (//file, uncompressed_size, crc32) + zipFile file, + uLong uncompressed_size, + uLong crc32) +{ + zip_internal* zi; + uLong compressed_size; + int err=ZIP_OK; + + if (file == NULL) + return ZIP_PARAMERROR; + zi = (zip_internal*)file; + + if (zi->in_opened_file_inzip == 0) + return ZIP_PARAMERROR; + zi->ci.stream.avail_in = 0; + + if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw)) + while (err==ZIP_OK) + { + uLong uTotalOutBefore; + if (zi->ci.stream.avail_out == 0) + { + if (zipFlushWriteBuffer(zi) == ZIP_ERRNO) + err = ZIP_ERRNO; + zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; + zi->ci.stream.next_out = zi->ci.buffered_data; + } + uTotalOutBefore = zi->ci.stream.total_out; + err=deflate(&zi->ci.stream, Z_FINISH); + zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - uTotalOutBefore) ; + } + + if (err==Z_STREAM_END) + err=ZIP_OK; /* this is normal */ + + if ((zi->ci.pos_in_buffered_data>0) && (err==ZIP_OK)) + if (zipFlushWriteBuffer(zi)==ZIP_ERRNO) + err = ZIP_ERRNO; + + if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw)) + { + err=deflateEnd(&zi->ci.stream); + zi->ci.stream_initialised = 0; + } + + if (!zi->ci.raw) + { + crc32 = (uLong)zi->ci.crc32; + uncompressed_size = (uLong)zi->ci.stream.total_in; + } + compressed_size = (uLong)zi->ci.stream.total_out; +# ifndef NOCRYPT + compressed_size += zi->ci.crypt_header_size; +# endif + + ziplocal_putValue_inmemory(zi->ci.central_header+16,crc32,4); /*crc*/ + ziplocal_putValue_inmemory(zi->ci.central_header+20, + compressed_size,4); /*compr size*/ + if (zi->ci.stream.data_type == Z_ASCII) + ziplocal_putValue_inmemory(zi->ci.central_header+36,(uLong)Z_ASCII,2); + ziplocal_putValue_inmemory(zi->ci.central_header+24, + uncompressed_size,4); /*uncompr size*/ + + if (err==ZIP_OK) + err = add_data_in_datablock(&zi->central_dir,zi->ci.central_header, + (uLong)zi->ci.size_centralheader); + free(zi->ci.central_header); + + if (err==ZIP_OK) + { + long cur_pos_inzip = ZTELL(zi->z_filefunc,zi->filestream); + if (ZSEEK(zi->z_filefunc,zi->filestream, + zi->ci.pos_local_header + 14,ZLIB_FILEFUNC_SEEK_SET)!=0) + err = ZIP_ERRNO; + + if (err==ZIP_OK) + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,crc32,4); /* crc 32, unknown */ + + if (err==ZIP_OK) /* compressed size, unknown */ + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,compressed_size,4); + + if (err==ZIP_OK) /* uncompressed size, unknown */ + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,uncompressed_size,4); + + if (ZSEEK(zi->z_filefunc,zi->filestream, + cur_pos_inzip,ZLIB_FILEFUNC_SEEK_SET)!=0) + err = ZIP_ERRNO; + } + + zi->number_entry ++; + zi->in_opened_file_inzip = 0; + + return err; +} + +extern int ZEXPORT zipCloseFileInZip (//file) + zipFile file) +{ + return zipCloseFileInZipRaw (file,0,0); +} + +extern int ZEXPORT zipClose (//file, global_comment) + zipFile file, + const char* global_comment) +{ + zip_internal* zi; + int err = 0; + uLong size_centraldir = 0; + uLong centraldir_pos_inzip; + uInt size_global_comment; + if (file == NULL) + return ZIP_PARAMERROR; + zi = (zip_internal*)file; + + if (zi->in_opened_file_inzip == 1) + { + err = zipCloseFileInZip (file); + } + +#ifndef NO_ADDFILEINEXISTINGZIP + if (global_comment==NULL) + global_comment = zi->globalcomment; +#endif + if (global_comment==NULL) + size_global_comment = 0; + else + size_global_comment = (uInt)strlen(global_comment); + + centraldir_pos_inzip = ZTELL(zi->z_filefunc,zi->filestream); + if (err==ZIP_OK) + { + linkedlist_datablock_internal* ldi = zi->central_dir.first_block ; + while (ldi!=NULL) + { + if ((err==ZIP_OK) && (ldi->filled_in_this_block>0)) + if (ZWRITE(zi->z_filefunc,zi->filestream, + ldi->data,ldi->filled_in_this_block) + !=ldi->filled_in_this_block ) + err = ZIP_ERRNO; + + size_centraldir += ldi->filled_in_this_block; + ldi = ldi->next_datablock; + } + } + free_datablock(zi->central_dir.first_block); + + if (err==ZIP_OK) /* Magic End */ + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)ENDHEADERMAGIC,4); + + if (err==ZIP_OK) /* number of this disk */ + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,2); + + if (err==ZIP_OK) /* number of the disk with the start of the central directory */ + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,2); + + if (err==ZIP_OK) /* total number of entries in the central dir on this disk */ + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->number_entry,2); + + if (err==ZIP_OK) /* total number of entries in the central dir */ + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->number_entry,2); + + if (err==ZIP_OK) /* size of the central directory */ + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_centraldir,4); + + if (err==ZIP_OK) /* offset of start of central directory with respect to the + starting disk number */ + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream, + (uLong)(centraldir_pos_inzip - zi->add_position_when_writting_offset),4); + + if (err==ZIP_OK) /* zipfile comment length */ + err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_global_comment,2); + + if ((err==ZIP_OK) && (size_global_comment>0)) + if (ZWRITE(zi->z_filefunc,zi->filestream, + global_comment,size_global_comment) != size_global_comment) + err = ZIP_ERRNO; + + if (ZCLOSE(zi->z_filefunc,zi->filestream) != 0) + if (err == ZIP_OK) + err = ZIP_ERRNO; + +#ifndef NO_ADDFILEINEXISTINGZIP + TRYFREE(zi->globalcomment); +#endif + TRYFREE(zi); + + return err; +} diff --git a/Libraries/unzip101e/zip.h b/Libraries/unzip101e/zip.h new file mode 100644 index 0000000..63833f1 --- /dev/null +++ b/Libraries/unzip101e/zip.h @@ -0,0 +1,235 @@ +/* zip.h -- IO for compress .zip files using zlib + Version 1.01e, February 12th, 2005 + + Copyright (C) 1998-2005 Gilles Vollant + + This unzip package allow creates .ZIP file, compatible with PKZip 2.04g + WinZip, InfoZip tools and compatible. + Multi volume ZipFile (span) are not supported. + Encryption compatible with pkzip 2.04g only supported + Old compressions used by old PKZip 1.x are not supported + + For uncompress .zip file, look at unzip.h + + + I WAIT FEEDBACK at mail info@winimage.com + Visit also http://www.winimage.com/zLibDll/unzip.html for evolution + + Condition of use and distribution are the same than zlib : + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + +*/ + +/* for more info about .ZIP format, see + http://www.info-zip.org/pub/infozip/doc/appnote-981119-iz.zip + http://www.info-zip.org/pub/infozip/doc/ + PkWare has also a specification at : + ftp://ftp.pkware.com/probdesc.zip +*/ + +#ifndef _zip_H +#define _zip_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef _ZLIB_H +#include "../zlib123/zlib.h" +#endif + +#ifndef _ZLIBIOAPI_H +#include "ioapi.h" +#endif + +#if defined(STRICTZIP) || defined(STRICTZIPUNZIP) +/* like the STRICT of WIN32, we define a pointer that cannot be converted + from (void*) without cast */ +typedef struct TagzipFile__ { int unused; } zipFile__; +typedef zipFile__ *zipFile; +#else +typedef voidp zipFile; +#endif + +#define ZIP_OK (0) +#define ZIP_EOF (0) +#define ZIP_ERRNO (Z_ERRNO) +#define ZIP_PARAMERROR (-102) +#define ZIP_BADZIPFILE (-103) +#define ZIP_INTERNALERROR (-104) + +#ifndef DEF_MEM_LEVEL +# if MAX_MEM_LEVEL >= 8 +# define DEF_MEM_LEVEL 8 +# else +# define DEF_MEM_LEVEL MAX_MEM_LEVEL +# endif +#endif +/* default memLevel */ + +/* tm_zip contain date/time info */ +typedef struct tm_zip_s +{ + uInt tm_sec; /* seconds after the minute - [0,59] */ + uInt tm_min; /* minutes after the hour - [0,59] */ + uInt tm_hour; /* hours since midnight - [0,23] */ + uInt tm_mday; /* day of the month - [1,31] */ + uInt tm_mon; /* months since January - [0,11] */ + uInt tm_year; /* years - [1980..2044] */ +} tm_zip; + +typedef struct +{ + tm_zip tmz_date; /* date in understandable format */ + uLong dosDate; /* if dos_date == 0, tmu_date is used */ +/* uLong flag; */ /* general purpose bit flag 2 bytes */ + + uLong internal_fa; /* internal file attributes 2 bytes */ + uLong external_fa; /* external file attributes 4 bytes */ +} zip_fileinfo; + +typedef const char* zipcharpc; + + +#define APPEND_STATUS_CREATE (0) +#define APPEND_STATUS_CREATEAFTER (1) +#define APPEND_STATUS_ADDINZIP (2) + +extern zipFile ZEXPORT zipOpen OF((const char *pathname, int append)); +/* + Create a zipfile. + pathname contain on Windows XP a filename like "c:\\zlib\\zlib113.zip" or on + an Unix computer "zlib/zlib113.zip". + if the file pathname exist and append==APPEND_STATUS_CREATEAFTER, the zip + will be created at the end of the file. + (useful if the file contain a self extractor code) + if the file pathname exist and append==APPEND_STATUS_ADDINZIP, we will + add files in existing zip (be sure you don't add file that doesn't exist) + If the zipfile cannot be opened, the return value is NULL. + Else, the return value is a zipFile Handle, usable with other function + of this zip package. +*/ + +/* Note : there is no delete function into a zipfile. + If you want delete file into a zipfile, you must open a zipfile, and create another + Of couse, you can use RAW reading and writing to copy the file you did not want delte +*/ + +extern zipFile ZEXPORT zipOpen2 OF((const char *pathname, + int append, + zipcharpc* globalcomment, + zlib_filefunc_def* pzlib_filefunc_def)); + +extern int ZEXPORT zipOpenNewFileInZip OF((zipFile file, + const char* filename, + const zip_fileinfo* zipfi, + const void* extrafield_local, + uInt size_extrafield_local, + const void* extrafield_global, + uInt size_extrafield_global, + const char* comment, + int method, + int level)); +/* + Open a file in the ZIP for writing. + filename : the filename in zip (if NULL, '-' without quote will be used + *zipfi contain supplemental information + if extrafield_local!=NULL and size_extrafield_local>0, extrafield_local + contains the extrafield data the the local header + if extrafield_global!=NULL and size_extrafield_global>0, extrafield_global + contains the extrafield data the the local header + if comment != NULL, comment contain the comment string + method contain the compression method (0 for store, Z_DEFLATED for deflate) + level contain the level of compression (can be Z_DEFAULT_COMPRESSION) +*/ + + +extern int ZEXPORT zipOpenNewFileInZip2 OF((zipFile file, + const char* filename, + const zip_fileinfo* zipfi, + const void* extrafield_local, + uInt size_extrafield_local, + const void* extrafield_global, + uInt size_extrafield_global, + const char* comment, + int method, + int level, + int raw)); + +/* + Same than zipOpenNewFileInZip, except if raw=1, we write raw file + */ + +extern int ZEXPORT zipOpenNewFileInZip3 OF((zipFile file, + const char* filename, + const zip_fileinfo* zipfi, + const void* extrafield_local, + uInt size_extrafield_local, + const void* extrafield_global, + uInt size_extrafield_global, + const char* comment, + int method, + int level, + int raw, + int windowBits, + int memLevel, + int strategy, + const char* password, + uLong crcForCtypting)); + +/* + Same than zipOpenNewFileInZip2, except + windowBits,memLevel,,strategy : see parameter strategy in deflateInit2 + password : crypting password (NULL for no crypting) + crcForCtypting : crc of file to compress (needed for crypting) + */ + + +extern int ZEXPORT zipWriteInFileInZip OF((zipFile file, + const void* buf, + unsigned len)); +/* + Write data in the zipfile +*/ + +extern int ZEXPORT zipCloseFileInZip OF((zipFile file)); +/* + Close the current file in the zipfile +*/ + +extern int ZEXPORT zipCloseFileInZipRaw OF((zipFile file, + uLong uncompressed_size, + uLong crc32)); +/* + Close the current file in the zipfile, for fiel opened with + parameter raw=1 in zipOpenNewFileInZip2 + uncompressed_size and crc32 are value for the uncompressed size +*/ + +extern int ZEXPORT zipClose OF((zipFile file, + const char* global_comment)); +/* + Close the zipfile +*/ + +#ifdef __cplusplus +} +#endif + +#endif /* _zip_H */ diff --git a/Libraries/zlib123/adler32.cpp b/Libraries/zlib123/adler32.cpp new file mode 100644 index 0000000..43357dd --- /dev/null +++ b/Libraries/zlib123/adler32.cpp @@ -0,0 +1,144 @@ +/* adler32.c -- compute the Adler-32 checksum of a data stream + * Copyright (C) 1995-2004 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#define ZLIB_INTERNAL +#include "zlib.h" + +#define BASE 65521UL /* largest prime smaller than 65536 */ +#define NMAX 5552 +/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */ + +#define DO1(buf,i) {adler += (buf)[i]; sum2 += adler;} +#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1); +#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2); +#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4); +#define DO16(buf) DO8(buf,0); DO8(buf,8); + +/* use NO_DIVIDE if your processor does not do division in hardware */ +#ifdef NO_DIVIDE +# define MOD(a) \ + do { \ + if (a >= (BASE << 16)) a -= (BASE << 16); \ + if (a >= (BASE << 15)) a -= (BASE << 15); \ + if (a >= (BASE << 14)) a -= (BASE << 14); \ + if (a >= (BASE << 13)) a -= (BASE << 13); \ + if (a >= (BASE << 12)) a -= (BASE << 12); \ + if (a >= (BASE << 11)) a -= (BASE << 11); \ + if (a >= (BASE << 10)) a -= (BASE << 10); \ + if (a >= (BASE << 9)) a -= (BASE << 9); \ + if (a >= (BASE << 8)) a -= (BASE << 8); \ + if (a >= (BASE << 7)) a -= (BASE << 7); \ + if (a >= (BASE << 6)) a -= (BASE << 6); \ + if (a >= (BASE << 5)) a -= (BASE << 5); \ + if (a >= (BASE << 4)) a -= (BASE << 4); \ + if (a >= (BASE << 3)) a -= (BASE << 3); \ + if (a >= (BASE << 2)) a -= (BASE << 2); \ + if (a >= (BASE << 1)) a -= (BASE << 1); \ + if (a >= BASE) a -= BASE; \ + } while (0) +# define MOD4(a) \ + do { \ + if (a >= (BASE << 4)) a -= (BASE << 4); \ + if (a >= (BASE << 3)) a -= (BASE << 3); \ + if (a >= (BASE << 2)) a -= (BASE << 2); \ + if (a >= (BASE << 1)) a -= (BASE << 1); \ + if (a >= BASE) a -= BASE; \ + } while (0) +#else +# define MOD(a) a %= BASE +# define MOD4(a) a %= BASE +#endif + +/* ========================================================================= */ +uLong ZEXPORT adler32(uLong adler, const Bytef *buf, uInt len) + +{ + unsigned long sum2; + unsigned n; + + /* split Adler-32 into component sums */ + sum2 = (adler >> 16) & 0xffff; + adler &= 0xffff; + + /* in case user likes doing a byte at a time, keep it fast */ + if (len == 1) { + adler += buf[0]; + if (adler >= BASE) + adler -= BASE; + sum2 += adler; + if (sum2 >= BASE) + sum2 -= BASE; + return adler | (sum2 << 16); + } + + /* initial Adler-32 value (deferred check for len == 1 speed) */ + if (buf == Z_NULL) + return 1L; + + /* in case short lengths are provided, keep it somewhat fast */ + if (len < 16) { + while (len--) { + adler += *buf++; + sum2 += adler; + } + if (adler >= BASE) + adler -= BASE; + MOD4(sum2); /* only added so many BASE's */ + return adler | (sum2 << 16); + } + + /* do length NMAX blocks -- requires just one modulo operation */ + while (len >= NMAX) { + len -= NMAX; + n = NMAX / 16; /* NMAX is divisible by 16 */ + do { + DO16(buf); /* 16 sums unrolled */ + buf += 16; + } while (--n); + MOD(adler); + MOD(sum2); + } + + /* do remaining bytes (less than NMAX, still just one modulo) */ + if (len) { /* avoid modulos if none remaining */ + while (len >= 16) { + len -= 16; + DO16(buf); + buf += 16; + } + while (len--) { + adler += *buf++; + sum2 += adler; + } + MOD(adler); + MOD(sum2); + } + + /* return recombined sums */ + return adler | (sum2 << 16); +} + +/* ========================================================================= */ +uLong ZEXPORT adler32_combine(uLong adler1, uLong adler2, z_off_t len2) +{ + unsigned long sum1; + unsigned long sum2; + unsigned rem; + + /* the derivation of this formula is left as an exercise for the reader */ + rem = (unsigned)(len2 % BASE); + sum1 = adler1 & 0xffff; + sum2 = rem * sum1; + MOD(sum2); + sum1 += (adler2 & 0xffff) + BASE - 1; + sum2 += ((adler1 >> 16) & 0xffff) + ((adler2 >> 16) & 0xffff) + BASE - rem; + if (sum1 > BASE) sum1 -= BASE; + if (sum1 > BASE) sum1 -= BASE; + if (sum2 > (BASE << 1)) sum2 -= (BASE << 1); + if (sum2 > BASE) sum2 -= BASE; + return sum1 | (sum2 << 16); +} diff --git a/Libraries/zlib123/compress.cpp b/Libraries/zlib123/compress.cpp new file mode 100644 index 0000000..5f46781 --- /dev/null +++ b/Libraries/zlib123/compress.cpp @@ -0,0 +1,79 @@ +/* compress.c -- compress a memory buffer + * Copyright (C) 1995-2003 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#define ZLIB_INTERNAL +#include "zlib.h" + +/* =========================================================================== + Compresses the source buffer into the destination buffer. The level + parameter has the same meaning as in deflateInit. sourceLen is the byte + length of the source buffer. Upon entry, destLen is the total size of the + destination buffer, which must be at least 0.1% larger than sourceLen plus + 12 bytes. Upon exit, destLen is the actual size of the compressed buffer. + + compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_BUF_ERROR if there was not enough room in the output buffer, + Z_STREAM_ERROR if the level parameter is invalid. +*/ +int ZEXPORT compress2 (//dest, destLen, source, sourceLen, level) + Bytef *dest, + uLongf *destLen, + const Bytef *source, + uLong sourceLen, + int level) +{ + z_stream stream; + int err; + + stream.next_in = (Bytef*)source; + stream.avail_in = (uInt)sourceLen; +#ifdef MAXSEG_64K + /* Check for source > 64K on 16-bit machine: */ + if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR; +#endif + stream.next_out = dest; + stream.avail_out = (uInt)*destLen; + if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; + + stream.zalloc = (alloc_func)0; + stream.zfree = (free_func)0; + stream.opaque = (voidpf)0; + + err = deflateInit(&stream, level); + if (err != Z_OK) return err; + + err = deflate(&stream, Z_FINISH); + if (err != Z_STREAM_END) { + deflateEnd(&stream); + return err == Z_OK ? Z_BUF_ERROR : err; + } + *destLen = stream.total_out; + + err = deflateEnd(&stream); + return err; +} + +/* =========================================================================== + */ +int ZEXPORT compress (//dest, destLen, source, sourceLen) + Bytef *dest, + uLongf *destLen, + const Bytef *source, + uLong sourceLen) +{ + return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION); +} + +/* =========================================================================== + If the default memLevel or windowBits for deflateInit() is changed, then + this function needs to be updated. + */ +uLong ZEXPORT compressBound (//sourceLen) + uLong sourceLen ) +{ + return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + 11; +} diff --git a/Libraries/zlib123/crc32.cpp b/Libraries/zlib123/crc32.cpp new file mode 100644 index 0000000..922c752 --- /dev/null +++ b/Libraries/zlib123/crc32.cpp @@ -0,0 +1,423 @@ +/* crc32.c -- compute the CRC-32 of a data stream + * Copyright (C) 1995-2005 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + * + * Thanks to Rodney Brown for his contribution of faster + * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing + * tables for updating the shift register in one step with three exclusive-ors + * instead of four steps with four exclusive-ors. This results in about a + * factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3. + */ + +/* @(#) $Id$ */ + +/* + Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore + protection on the static variables used to control the first-use generation + of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should + first call get_crc_table() to initialize the tables before allowing more than + one thread to use crc32(). + */ + +#ifdef MAKECRCH +# include +# ifndef DYNAMIC_CRC_TABLE +# define DYNAMIC_CRC_TABLE +# endif /* !DYNAMIC_CRC_TABLE */ +#endif /* MAKECRCH */ + +#include "zutil.h" /* for STDC and FAR definitions */ + +#define local static + +/* Find a four-byte integer type for crc32_little() and crc32_big(). */ +#ifndef NOBYFOUR +# ifdef STDC /* need ANSI C limits.h to determine sizes */ +# include +# define BYFOUR +# if (UINT_MAX == 0xffffffffUL) + typedef unsigned int u4; +# else +# if (ULONG_MAX == 0xffffffffUL) + typedef unsigned long u4; +# else +# if (USHRT_MAX == 0xffffffffUL) + typedef unsigned short u4; +# else +# undef BYFOUR /* can't find a four-byte integer type! */ +# endif +# endif +# endif +# endif /* STDC */ +#endif /* !NOBYFOUR */ + +/* Definitions for doing the crc four data bytes at a time. */ +#ifdef BYFOUR +# define REV(w) (((w)>>24)+(((w)>>8)&0xff00)+ \ + (((w)&0xff00)<<8)+(((w)&0xff)<<24)) + local unsigned long crc32_little OF((unsigned long, + const unsigned char FAR *, unsigned)); + local unsigned long crc32_big OF((unsigned long, + const unsigned char FAR *, unsigned)); +# define TBLS 8 +#else +# define TBLS 1 +#endif /* BYFOUR */ + +/* Local functions for crc concatenation */ +local unsigned long gf2_matrix_times OF((unsigned long *mat, + unsigned long vec)); +local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat)); + +#ifdef DYNAMIC_CRC_TABLE + +local volatile int crc_table_empty = 1; +local unsigned long FAR crc_table[TBLS][256]; +local void make_crc_table OF((void)); +#ifdef MAKECRCH + local void write_table OF((FILE *, const unsigned long FAR *)); +#endif /* MAKECRCH */ +/* + Generate tables for a byte-wise 32-bit CRC calculation on the polynomial: + x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1. + + Polynomials over GF(2) are represented in binary, one bit per coefficient, + with the lowest powers in the most significant bit. Then adding polynomials + is just exclusive-or, and multiplying a polynomial by x is a right shift by + one. If we call the above polynomial p, and represent a byte as the + polynomial q, also with the lowest power in the most significant bit (so the + byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + where a mod b means the remainder after dividing a by b. + + This calculation is done using the shift-register method of multiplying and + taking the remainder. The register is initialized to zero, and for each + incoming bit, x^32 is added mod p to the register if the bit is a one (where + x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by + x (which is shifting right by one and adding x^32 mod p if the bit shifted + out is a one). We start with the highest power (least significant bit) of + q and repeat for all eight bits of q. + + The first table is simply the CRC of all possible eight bit values. This is + all the information needed to generate CRCs on data a byte at a time for all + combinations of CRC register values and incoming bytes. The remaining tables + allow for word-at-a-time CRC calculation for both big-endian and little- + endian machines, where a word is four bytes. +*/ +local void make_crc_table() +{ + unsigned long c; + int n, k; + unsigned long poly; /* polynomial exclusive-or pattern */ + /* terms of polynomial defining this crc (except x^32): */ + static volatile int first = 1; /* flag to limit concurrent making */ + static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; + + /* See if another task is already doing this (not thread-safe, but better + than nothing -- significantly reduces duration of vulnerability in + case the advice about DYNAMIC_CRC_TABLE is ignored) */ + if (first) { + first = 0; + + /* make exclusive-or pattern from polynomial (0xedb88320UL) */ + poly = 0UL; + for (n = 0; n < sizeof(p)/sizeof(unsigned char); n++) + poly |= 1UL << (31 - p[n]); + + /* generate a crc for every 8-bit value */ + for (n = 0; n < 256; n++) { + c = (unsigned long)n; + for (k = 0; k < 8; k++) + c = c & 1 ? poly ^ (c >> 1) : c >> 1; + crc_table[0][n] = c; + } + +#ifdef BYFOUR + /* generate crc for each value followed by one, two, and three zeros, + and then the byte reversal of those as well as the first table */ + for (n = 0; n < 256; n++) { + c = crc_table[0][n]; + crc_table[4][n] = REV(c); + for (k = 1; k < 4; k++) { + c = crc_table[0][c & 0xff] ^ (c >> 8); + crc_table[k][n] = c; + crc_table[k + 4][n] = REV(c); + } + } +#endif /* BYFOUR */ + + crc_table_empty = 0; + } + else { /* not first */ + /* wait for the other guy to finish (not efficient, but rare) */ + while (crc_table_empty) + ; + } + +#ifdef MAKECRCH + /* write out CRC tables to crc32.h */ + { + FILE *out; + + out = fopen("crc32.h", "w"); + if (out == NULL) return; + fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n"); + fprintf(out, " * Generated automatically by crc32.c\n */\n\n"); + fprintf(out, "local const unsigned long FAR "); + fprintf(out, "crc_table[TBLS][256] =\n{\n {\n"); + write_table(out, crc_table[0]); +# ifdef BYFOUR + fprintf(out, "#ifdef BYFOUR\n"); + for (k = 1; k < 8; k++) { + fprintf(out, " },\n {\n"); + write_table(out, crc_table[k]); + } + fprintf(out, "#endif\n"); +# endif /* BYFOUR */ + fprintf(out, " }\n};\n"); + fclose(out); + } +#endif /* MAKECRCH */ +} + +#ifdef MAKECRCH +local void write_table(out, table) + FILE *out; + const unsigned long FAR *table; +{ + int n; + + for (n = 0; n < 256; n++) + fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : " ", table[n], + n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", ")); +} +#endif /* MAKECRCH */ + +#else /* !DYNAMIC_CRC_TABLE */ +/* ======================================================================== + * Tables of CRC-32s of all single-byte values, made by make_crc_table(). + */ +#include "crc32.h" +#endif /* DYNAMIC_CRC_TABLE */ + +/* ========================================================================= + * This function can be used by asm versions of crc32() + */ +const unsigned long FAR * ZEXPORT get_crc_table() +{ +#ifdef DYNAMIC_CRC_TABLE + if (crc_table_empty) + make_crc_table(); +#endif /* DYNAMIC_CRC_TABLE */ + return (const unsigned long FAR *)crc_table; +} + +/* ========================================================================= */ +#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8) +#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1 + +/* ========================================================================= */ +unsigned long ZEXPORT crc32(//crc, buf, len) + unsigned long crc, + const unsigned char FAR *buf, + unsigned len) +{ + if (buf == Z_NULL) return 0UL; + +#ifdef DYNAMIC_CRC_TABLE + if (crc_table_empty) + make_crc_table(); +#endif /* DYNAMIC_CRC_TABLE */ + +#ifdef BYFOUR + if (sizeof(void *) == sizeof(ptrdiff_t)) { + u4 endian; + + endian = 1; + if (*((unsigned char *)(&endian))) + return crc32_little(crc, buf, len); + else + return crc32_big(crc, buf, len); + } +#endif /* BYFOUR */ + crc = crc ^ 0xffffffffUL; + while (len >= 8) { + DO8; + len -= 8; + } + if (len) do { + DO1; + } while (--len); + return crc ^ 0xffffffffUL; +} + +#ifdef BYFOUR + +/* ========================================================================= */ +#define DOLIT4 c ^= *buf4++; \ + c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \ + crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24] +#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4 + +/* ========================================================================= */ +local unsigned long crc32_little(//crc, buf, len) + unsigned long crc, + const unsigned char FAR *buf, + unsigned len) +{ + register u4 c; + register const u4 FAR *buf4; + + c = (u4)crc; + c = ~c; + while (len && ((ptrdiff_t)buf & 3)) { + c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8); + len--; + } + + buf4 = (const u4 FAR *)(const void FAR *)buf; + while (len >= 32) { + DOLIT32; + len -= 32; + } + while (len >= 4) { + DOLIT4; + len -= 4; + } + buf = (const unsigned char FAR *)buf4; + + if (len) do { + c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8); + } while (--len); + c = ~c; + return (unsigned long)c; +} + +/* ========================================================================= */ +#define DOBIG4 c ^= *++buf4; \ + c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \ + crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24] +#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4 + +/* ========================================================================= */ +local unsigned long crc32_big(//crc, buf, len) + unsigned long crc, + const unsigned char FAR *buf, + unsigned len) +{ + register u4 c; + register const u4 FAR *buf4; + + c = REV((u4)crc); + c = ~c; + while (len && ((ptrdiff_t)buf & 3)) { + c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8); + len--; + } + + buf4 = (const u4 FAR *)(const void FAR *)buf; + buf4--; + while (len >= 32) { + DOBIG32; + len -= 32; + } + while (len >= 4) { + DOBIG4; + len -= 4; + } + buf4++; + buf = (const unsigned char FAR *)buf4; + + if (len) do { + c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8); + } while (--len); + c = ~c; + return (unsigned long)(REV(c)); +} + +#endif /* BYFOUR */ + +#define GF2_DIM 32 /* dimension of GF(2) vectors (length of CRC) */ + +/* ========================================================================= */ +local unsigned long gf2_matrix_times(//mat, vec) + unsigned long *mat, + unsigned long vec) +{ + unsigned long sum; + + sum = 0; + while (vec) { + if (vec & 1) + sum ^= *mat; + vec >>= 1; + mat++; + } + return sum; +} + +/* ========================================================================= */ +local void gf2_matrix_square(//square, mat) + unsigned long *square, + unsigned long *mat) +{ + int n; + + for (n = 0; n < GF2_DIM; n++) + square[n] = gf2_matrix_times(mat, mat[n]); +} + +/* ========================================================================= */ +uLong ZEXPORT crc32_combine(//crc1, crc2, len2) + uLong crc1, + uLong crc2, + z_off_t len2) +{ + int n; + unsigned long row; + unsigned long even[GF2_DIM]; /* even-power-of-two zeros operator */ + unsigned long odd[GF2_DIM]; /* odd-power-of-two zeros operator */ + + /* degenerate case */ + if (len2 == 0) + return crc1; + + /* put operator for one zero bit in odd */ + odd[0] = 0xedb88320L; /* CRC-32 polynomial */ + row = 1; + for (n = 1; n < GF2_DIM; n++) { + odd[n] = row; + row <<= 1; + } + + /* put operator for two zero bits in even */ + gf2_matrix_square(even, odd); + + /* put operator for four zero bits in odd */ + gf2_matrix_square(odd, even); + + /* apply len2 zeros to crc1 (first square will put the operator for one + zero byte, eight zero bits, in even) */ + do { + /* apply zeros operator for this bit of len2 */ + gf2_matrix_square(even, odd); + if (len2 & 1) + crc1 = gf2_matrix_times(even, crc1); + len2 >>= 1; + + /* if no more bits set, then done */ + if (len2 == 0) + break; + + /* another iteration of the loop with odd and even swapped */ + gf2_matrix_square(odd, even); + if (len2 & 1) + crc1 = gf2_matrix_times(odd, crc1); + len2 >>= 1; + + /* if no more bits set, then done */ + } while (len2 != 0); + + /* return combined crc */ + crc1 ^= crc2; + return crc1; +} diff --git a/Libraries/zlib123/crc32.h b/Libraries/zlib123/crc32.h new file mode 100644 index 0000000..5de49bc --- /dev/null +++ b/Libraries/zlib123/crc32.h @@ -0,0 +1,441 @@ +/* crc32.h -- tables for rapid CRC calculation + * Generated automatically by crc32.c + */ + +local const unsigned long FAR crc_table[TBLS][256] = +{ + { + 0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL, + 0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL, + 0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL, + 0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL, + 0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL, + 0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL, + 0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL, + 0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL, + 0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL, + 0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL, + 0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL, + 0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL, + 0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL, + 0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL, + 0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL, + 0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL, + 0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL, + 0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL, + 0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL, + 0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL, + 0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL, + 0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL, + 0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL, + 0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL, + 0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL, + 0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL, + 0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL, + 0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL, + 0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL, + 0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL, + 0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL, + 0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL, + 0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL, + 0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL, + 0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL, + 0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL, + 0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL, + 0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL, + 0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL, + 0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL, + 0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL, + 0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL, + 0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL, + 0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL, + 0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL, + 0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL, + 0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL, + 0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL, + 0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL, + 0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL, + 0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL, + 0x2d02ef8dUL +#ifdef BYFOUR + }, + { + 0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL, + 0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL, + 0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL, + 0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL, + 0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL, + 0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL, + 0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL, + 0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL, + 0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL, + 0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL, + 0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL, + 0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL, + 0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL, + 0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL, + 0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL, + 0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL, + 0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL, + 0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL, + 0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL, + 0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL, + 0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL, + 0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL, + 0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL, + 0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL, + 0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL, + 0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL, + 0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL, + 0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL, + 0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL, + 0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL, + 0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL, + 0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL, + 0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL, + 0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL, + 0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL, + 0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL, + 0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL, + 0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL, + 0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL, + 0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL, + 0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL, + 0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL, + 0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL, + 0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL, + 0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL, + 0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL, + 0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL, + 0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL, + 0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL, + 0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL, + 0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL, + 0x9324fd72UL + }, + { + 0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL, + 0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL, + 0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL, + 0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL, + 0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL, + 0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL, + 0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL, + 0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL, + 0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL, + 0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL, + 0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL, + 0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL, + 0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL, + 0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL, + 0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL, + 0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL, + 0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL, + 0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL, + 0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL, + 0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL, + 0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL, + 0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL, + 0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL, + 0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL, + 0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL, + 0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL, + 0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL, + 0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL, + 0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL, + 0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL, + 0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL, + 0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL, + 0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL, + 0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL, + 0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL, + 0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL, + 0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL, + 0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL, + 0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL, + 0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL, + 0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL, + 0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL, + 0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL, + 0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL, + 0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL, + 0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL, + 0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL, + 0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL, + 0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL, + 0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL, + 0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL, + 0xbe9834edUL + }, + { + 0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL, + 0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL, + 0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL, + 0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL, + 0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL, + 0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL, + 0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL, + 0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL, + 0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL, + 0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL, + 0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL, + 0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL, + 0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL, + 0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL, + 0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL, + 0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL, + 0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL, + 0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL, + 0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL, + 0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL, + 0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL, + 0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL, + 0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL, + 0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL, + 0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL, + 0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL, + 0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL, + 0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL, + 0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL, + 0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL, + 0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL, + 0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL, + 0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL, + 0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL, + 0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL, + 0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL, + 0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL, + 0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL, + 0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL, + 0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL, + 0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL, + 0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL, + 0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL, + 0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL, + 0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL, + 0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL, + 0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL, + 0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL, + 0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL, + 0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL, + 0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL, + 0xde0506f1UL + }, + { + 0x00000000UL, 0x96300777UL, 0x2c610eeeUL, 0xba510999UL, 0x19c46d07UL, + 0x8ff46a70UL, 0x35a563e9UL, 0xa395649eUL, 0x3288db0eUL, 0xa4b8dc79UL, + 0x1ee9d5e0UL, 0x88d9d297UL, 0x2b4cb609UL, 0xbd7cb17eUL, 0x072db8e7UL, + 0x911dbf90UL, 0x6410b71dUL, 0xf220b06aUL, 0x4871b9f3UL, 0xde41be84UL, + 0x7dd4da1aUL, 0xebe4dd6dUL, 0x51b5d4f4UL, 0xc785d383UL, 0x56986c13UL, + 0xc0a86b64UL, 0x7af962fdUL, 0xecc9658aUL, 0x4f5c0114UL, 0xd96c0663UL, + 0x633d0ffaUL, 0xf50d088dUL, 0xc8206e3bUL, 0x5e10694cUL, 0xe44160d5UL, + 0x727167a2UL, 0xd1e4033cUL, 0x47d4044bUL, 0xfd850dd2UL, 0x6bb50aa5UL, + 0xfaa8b535UL, 0x6c98b242UL, 0xd6c9bbdbUL, 0x40f9bcacUL, 0xe36cd832UL, + 0x755cdf45UL, 0xcf0dd6dcUL, 0x593dd1abUL, 0xac30d926UL, 0x3a00de51UL, + 0x8051d7c8UL, 0x1661d0bfUL, 0xb5f4b421UL, 0x23c4b356UL, 0x9995bacfUL, + 0x0fa5bdb8UL, 0x9eb80228UL, 0x0888055fUL, 0xb2d90cc6UL, 0x24e90bb1UL, + 0x877c6f2fUL, 0x114c6858UL, 0xab1d61c1UL, 0x3d2d66b6UL, 0x9041dc76UL, + 0x0671db01UL, 0xbc20d298UL, 0x2a10d5efUL, 0x8985b171UL, 0x1fb5b606UL, + 0xa5e4bf9fUL, 0x33d4b8e8UL, 0xa2c90778UL, 0x34f9000fUL, 0x8ea80996UL, + 0x18980ee1UL, 0xbb0d6a7fUL, 0x2d3d6d08UL, 0x976c6491UL, 0x015c63e6UL, + 0xf4516b6bUL, 0x62616c1cUL, 0xd8306585UL, 0x4e0062f2UL, 0xed95066cUL, + 0x7ba5011bUL, 0xc1f40882UL, 0x57c40ff5UL, 0xc6d9b065UL, 0x50e9b712UL, + 0xeab8be8bUL, 0x7c88b9fcUL, 0xdf1ddd62UL, 0x492dda15UL, 0xf37cd38cUL, + 0x654cd4fbUL, 0x5861b24dUL, 0xce51b53aUL, 0x7400bca3UL, 0xe230bbd4UL, + 0x41a5df4aUL, 0xd795d83dUL, 0x6dc4d1a4UL, 0xfbf4d6d3UL, 0x6ae96943UL, + 0xfcd96e34UL, 0x468867adUL, 0xd0b860daUL, 0x732d0444UL, 0xe51d0333UL, + 0x5f4c0aaaUL, 0xc97c0dddUL, 0x3c710550UL, 0xaa410227UL, 0x10100bbeUL, + 0x86200cc9UL, 0x25b56857UL, 0xb3856f20UL, 0x09d466b9UL, 0x9fe461ceUL, + 0x0ef9de5eUL, 0x98c9d929UL, 0x2298d0b0UL, 0xb4a8d7c7UL, 0x173db359UL, + 0x810db42eUL, 0x3b5cbdb7UL, 0xad6cbac0UL, 0x2083b8edUL, 0xb6b3bf9aUL, + 0x0ce2b603UL, 0x9ad2b174UL, 0x3947d5eaUL, 0xaf77d29dUL, 0x1526db04UL, + 0x8316dc73UL, 0x120b63e3UL, 0x843b6494UL, 0x3e6a6d0dUL, 0xa85a6a7aUL, + 0x0bcf0ee4UL, 0x9dff0993UL, 0x27ae000aUL, 0xb19e077dUL, 0x44930ff0UL, + 0xd2a30887UL, 0x68f2011eUL, 0xfec20669UL, 0x5d5762f7UL, 0xcb676580UL, + 0x71366c19UL, 0xe7066b6eUL, 0x761bd4feUL, 0xe02bd389UL, 0x5a7ada10UL, + 0xcc4add67UL, 0x6fdfb9f9UL, 0xf9efbe8eUL, 0x43beb717UL, 0xd58eb060UL, + 0xe8a3d6d6UL, 0x7e93d1a1UL, 0xc4c2d838UL, 0x52f2df4fUL, 0xf167bbd1UL, + 0x6757bca6UL, 0xdd06b53fUL, 0x4b36b248UL, 0xda2b0dd8UL, 0x4c1b0aafUL, + 0xf64a0336UL, 0x607a0441UL, 0xc3ef60dfUL, 0x55df67a8UL, 0xef8e6e31UL, + 0x79be6946UL, 0x8cb361cbUL, 0x1a8366bcUL, 0xa0d26f25UL, 0x36e26852UL, + 0x95770cccUL, 0x03470bbbUL, 0xb9160222UL, 0x2f260555UL, 0xbe3bbac5UL, + 0x280bbdb2UL, 0x925ab42bUL, 0x046ab35cUL, 0xa7ffd7c2UL, 0x31cfd0b5UL, + 0x8b9ed92cUL, 0x1daede5bUL, 0xb0c2649bUL, 0x26f263ecUL, 0x9ca36a75UL, + 0x0a936d02UL, 0xa906099cUL, 0x3f360eebUL, 0x85670772UL, 0x13570005UL, + 0x824abf95UL, 0x147ab8e2UL, 0xae2bb17bUL, 0x381bb60cUL, 0x9b8ed292UL, + 0x0dbed5e5UL, 0xb7efdc7cUL, 0x21dfdb0bUL, 0xd4d2d386UL, 0x42e2d4f1UL, + 0xf8b3dd68UL, 0x6e83da1fUL, 0xcd16be81UL, 0x5b26b9f6UL, 0xe177b06fUL, + 0x7747b718UL, 0xe65a0888UL, 0x706a0fffUL, 0xca3b0666UL, 0x5c0b0111UL, + 0xff9e658fUL, 0x69ae62f8UL, 0xd3ff6b61UL, 0x45cf6c16UL, 0x78e20aa0UL, + 0xeed20dd7UL, 0x5483044eUL, 0xc2b30339UL, 0x612667a7UL, 0xf71660d0UL, + 0x4d476949UL, 0xdb776e3eUL, 0x4a6ad1aeUL, 0xdc5ad6d9UL, 0x660bdf40UL, + 0xf03bd837UL, 0x53aebca9UL, 0xc59ebbdeUL, 0x7fcfb247UL, 0xe9ffb530UL, + 0x1cf2bdbdUL, 0x8ac2bacaUL, 0x3093b353UL, 0xa6a3b424UL, 0x0536d0baUL, + 0x9306d7cdUL, 0x2957de54UL, 0xbf67d923UL, 0x2e7a66b3UL, 0xb84a61c4UL, + 0x021b685dUL, 0x942b6f2aUL, 0x37be0bb4UL, 0xa18e0cc3UL, 0x1bdf055aUL, + 0x8def022dUL + }, + { + 0x00000000UL, 0x41311b19UL, 0x82623632UL, 0xc3532d2bUL, 0x04c56c64UL, + 0x45f4777dUL, 0x86a75a56UL, 0xc796414fUL, 0x088ad9c8UL, 0x49bbc2d1UL, + 0x8ae8effaUL, 0xcbd9f4e3UL, 0x0c4fb5acUL, 0x4d7eaeb5UL, 0x8e2d839eUL, + 0xcf1c9887UL, 0x5112c24aUL, 0x1023d953UL, 0xd370f478UL, 0x9241ef61UL, + 0x55d7ae2eUL, 0x14e6b537UL, 0xd7b5981cUL, 0x96848305UL, 0x59981b82UL, + 0x18a9009bUL, 0xdbfa2db0UL, 0x9acb36a9UL, 0x5d5d77e6UL, 0x1c6c6cffUL, + 0xdf3f41d4UL, 0x9e0e5acdUL, 0xa2248495UL, 0xe3159f8cUL, 0x2046b2a7UL, + 0x6177a9beUL, 0xa6e1e8f1UL, 0xe7d0f3e8UL, 0x2483dec3UL, 0x65b2c5daUL, + 0xaaae5d5dUL, 0xeb9f4644UL, 0x28cc6b6fUL, 0x69fd7076UL, 0xae6b3139UL, + 0xef5a2a20UL, 0x2c09070bUL, 0x6d381c12UL, 0xf33646dfUL, 0xb2075dc6UL, + 0x715470edUL, 0x30656bf4UL, 0xf7f32abbUL, 0xb6c231a2UL, 0x75911c89UL, + 0x34a00790UL, 0xfbbc9f17UL, 0xba8d840eUL, 0x79dea925UL, 0x38efb23cUL, + 0xff79f373UL, 0xbe48e86aUL, 0x7d1bc541UL, 0x3c2ade58UL, 0x054f79f0UL, + 0x447e62e9UL, 0x872d4fc2UL, 0xc61c54dbUL, 0x018a1594UL, 0x40bb0e8dUL, + 0x83e823a6UL, 0xc2d938bfUL, 0x0dc5a038UL, 0x4cf4bb21UL, 0x8fa7960aUL, + 0xce968d13UL, 0x0900cc5cUL, 0x4831d745UL, 0x8b62fa6eUL, 0xca53e177UL, + 0x545dbbbaUL, 0x156ca0a3UL, 0xd63f8d88UL, 0x970e9691UL, 0x5098d7deUL, + 0x11a9ccc7UL, 0xd2fae1ecUL, 0x93cbfaf5UL, 0x5cd76272UL, 0x1de6796bUL, + 0xdeb55440UL, 0x9f844f59UL, 0x58120e16UL, 0x1923150fUL, 0xda703824UL, + 0x9b41233dUL, 0xa76bfd65UL, 0xe65ae67cUL, 0x2509cb57UL, 0x6438d04eUL, + 0xa3ae9101UL, 0xe29f8a18UL, 0x21cca733UL, 0x60fdbc2aUL, 0xafe124adUL, + 0xeed03fb4UL, 0x2d83129fUL, 0x6cb20986UL, 0xab2448c9UL, 0xea1553d0UL, + 0x29467efbUL, 0x687765e2UL, 0xf6793f2fUL, 0xb7482436UL, 0x741b091dUL, + 0x352a1204UL, 0xf2bc534bUL, 0xb38d4852UL, 0x70de6579UL, 0x31ef7e60UL, + 0xfef3e6e7UL, 0xbfc2fdfeUL, 0x7c91d0d5UL, 0x3da0cbccUL, 0xfa368a83UL, + 0xbb07919aUL, 0x7854bcb1UL, 0x3965a7a8UL, 0x4b98833bUL, 0x0aa99822UL, + 0xc9fab509UL, 0x88cbae10UL, 0x4f5def5fUL, 0x0e6cf446UL, 0xcd3fd96dUL, + 0x8c0ec274UL, 0x43125af3UL, 0x022341eaUL, 0xc1706cc1UL, 0x804177d8UL, + 0x47d73697UL, 0x06e62d8eUL, 0xc5b500a5UL, 0x84841bbcUL, 0x1a8a4171UL, + 0x5bbb5a68UL, 0x98e87743UL, 0xd9d96c5aUL, 0x1e4f2d15UL, 0x5f7e360cUL, + 0x9c2d1b27UL, 0xdd1c003eUL, 0x120098b9UL, 0x533183a0UL, 0x9062ae8bUL, + 0xd153b592UL, 0x16c5f4ddUL, 0x57f4efc4UL, 0x94a7c2efUL, 0xd596d9f6UL, + 0xe9bc07aeUL, 0xa88d1cb7UL, 0x6bde319cUL, 0x2aef2a85UL, 0xed796bcaUL, + 0xac4870d3UL, 0x6f1b5df8UL, 0x2e2a46e1UL, 0xe136de66UL, 0xa007c57fUL, + 0x6354e854UL, 0x2265f34dUL, 0xe5f3b202UL, 0xa4c2a91bUL, 0x67918430UL, + 0x26a09f29UL, 0xb8aec5e4UL, 0xf99fdefdUL, 0x3accf3d6UL, 0x7bfde8cfUL, + 0xbc6ba980UL, 0xfd5ab299UL, 0x3e099fb2UL, 0x7f3884abUL, 0xb0241c2cUL, + 0xf1150735UL, 0x32462a1eUL, 0x73773107UL, 0xb4e17048UL, 0xf5d06b51UL, + 0x3683467aUL, 0x77b25d63UL, 0x4ed7facbUL, 0x0fe6e1d2UL, 0xccb5ccf9UL, + 0x8d84d7e0UL, 0x4a1296afUL, 0x0b238db6UL, 0xc870a09dUL, 0x8941bb84UL, + 0x465d2303UL, 0x076c381aUL, 0xc43f1531UL, 0x850e0e28UL, 0x42984f67UL, + 0x03a9547eUL, 0xc0fa7955UL, 0x81cb624cUL, 0x1fc53881UL, 0x5ef42398UL, + 0x9da70eb3UL, 0xdc9615aaUL, 0x1b0054e5UL, 0x5a314ffcUL, 0x996262d7UL, + 0xd85379ceUL, 0x174fe149UL, 0x567efa50UL, 0x952dd77bUL, 0xd41ccc62UL, + 0x138a8d2dUL, 0x52bb9634UL, 0x91e8bb1fUL, 0xd0d9a006UL, 0xecf37e5eUL, + 0xadc26547UL, 0x6e91486cUL, 0x2fa05375UL, 0xe836123aUL, 0xa9070923UL, + 0x6a542408UL, 0x2b653f11UL, 0xe479a796UL, 0xa548bc8fUL, 0x661b91a4UL, + 0x272a8abdUL, 0xe0bccbf2UL, 0xa18dd0ebUL, 0x62defdc0UL, 0x23efe6d9UL, + 0xbde1bc14UL, 0xfcd0a70dUL, 0x3f838a26UL, 0x7eb2913fUL, 0xb924d070UL, + 0xf815cb69UL, 0x3b46e642UL, 0x7a77fd5bUL, 0xb56b65dcUL, 0xf45a7ec5UL, + 0x370953eeUL, 0x763848f7UL, 0xb1ae09b8UL, 0xf09f12a1UL, 0x33cc3f8aUL, + 0x72fd2493UL + }, + { + 0x00000000UL, 0x376ac201UL, 0x6ed48403UL, 0x59be4602UL, 0xdca80907UL, + 0xebc2cb06UL, 0xb27c8d04UL, 0x85164f05UL, 0xb851130eUL, 0x8f3bd10fUL, + 0xd685970dUL, 0xe1ef550cUL, 0x64f91a09UL, 0x5393d808UL, 0x0a2d9e0aUL, + 0x3d475c0bUL, 0x70a3261cUL, 0x47c9e41dUL, 0x1e77a21fUL, 0x291d601eUL, + 0xac0b2f1bUL, 0x9b61ed1aUL, 0xc2dfab18UL, 0xf5b56919UL, 0xc8f23512UL, + 0xff98f713UL, 0xa626b111UL, 0x914c7310UL, 0x145a3c15UL, 0x2330fe14UL, + 0x7a8eb816UL, 0x4de47a17UL, 0xe0464d38UL, 0xd72c8f39UL, 0x8e92c93bUL, + 0xb9f80b3aUL, 0x3cee443fUL, 0x0b84863eUL, 0x523ac03cUL, 0x6550023dUL, + 0x58175e36UL, 0x6f7d9c37UL, 0x36c3da35UL, 0x01a91834UL, 0x84bf5731UL, + 0xb3d59530UL, 0xea6bd332UL, 0xdd011133UL, 0x90e56b24UL, 0xa78fa925UL, + 0xfe31ef27UL, 0xc95b2d26UL, 0x4c4d6223UL, 0x7b27a022UL, 0x2299e620UL, + 0x15f32421UL, 0x28b4782aUL, 0x1fdeba2bUL, 0x4660fc29UL, 0x710a3e28UL, + 0xf41c712dUL, 0xc376b32cUL, 0x9ac8f52eUL, 0xada2372fUL, 0xc08d9a70UL, + 0xf7e75871UL, 0xae591e73UL, 0x9933dc72UL, 0x1c259377UL, 0x2b4f5176UL, + 0x72f11774UL, 0x459bd575UL, 0x78dc897eUL, 0x4fb64b7fUL, 0x16080d7dUL, + 0x2162cf7cUL, 0xa4748079UL, 0x931e4278UL, 0xcaa0047aUL, 0xfdcac67bUL, + 0xb02ebc6cUL, 0x87447e6dUL, 0xdefa386fUL, 0xe990fa6eUL, 0x6c86b56bUL, + 0x5bec776aUL, 0x02523168UL, 0x3538f369UL, 0x087faf62UL, 0x3f156d63UL, + 0x66ab2b61UL, 0x51c1e960UL, 0xd4d7a665UL, 0xe3bd6464UL, 0xba032266UL, + 0x8d69e067UL, 0x20cbd748UL, 0x17a11549UL, 0x4e1f534bUL, 0x7975914aUL, + 0xfc63de4fUL, 0xcb091c4eUL, 0x92b75a4cUL, 0xa5dd984dUL, 0x989ac446UL, + 0xaff00647UL, 0xf64e4045UL, 0xc1248244UL, 0x4432cd41UL, 0x73580f40UL, + 0x2ae64942UL, 0x1d8c8b43UL, 0x5068f154UL, 0x67023355UL, 0x3ebc7557UL, + 0x09d6b756UL, 0x8cc0f853UL, 0xbbaa3a52UL, 0xe2147c50UL, 0xd57ebe51UL, + 0xe839e25aUL, 0xdf53205bUL, 0x86ed6659UL, 0xb187a458UL, 0x3491eb5dUL, + 0x03fb295cUL, 0x5a456f5eUL, 0x6d2fad5fUL, 0x801b35e1UL, 0xb771f7e0UL, + 0xeecfb1e2UL, 0xd9a573e3UL, 0x5cb33ce6UL, 0x6bd9fee7UL, 0x3267b8e5UL, + 0x050d7ae4UL, 0x384a26efUL, 0x0f20e4eeUL, 0x569ea2ecUL, 0x61f460edUL, + 0xe4e22fe8UL, 0xd388ede9UL, 0x8a36abebUL, 0xbd5c69eaUL, 0xf0b813fdUL, + 0xc7d2d1fcUL, 0x9e6c97feUL, 0xa90655ffUL, 0x2c101afaUL, 0x1b7ad8fbUL, + 0x42c49ef9UL, 0x75ae5cf8UL, 0x48e900f3UL, 0x7f83c2f2UL, 0x263d84f0UL, + 0x115746f1UL, 0x944109f4UL, 0xa32bcbf5UL, 0xfa958df7UL, 0xcdff4ff6UL, + 0x605d78d9UL, 0x5737bad8UL, 0x0e89fcdaUL, 0x39e33edbUL, 0xbcf571deUL, + 0x8b9fb3dfUL, 0xd221f5ddUL, 0xe54b37dcUL, 0xd80c6bd7UL, 0xef66a9d6UL, + 0xb6d8efd4UL, 0x81b22dd5UL, 0x04a462d0UL, 0x33cea0d1UL, 0x6a70e6d3UL, + 0x5d1a24d2UL, 0x10fe5ec5UL, 0x27949cc4UL, 0x7e2adac6UL, 0x494018c7UL, + 0xcc5657c2UL, 0xfb3c95c3UL, 0xa282d3c1UL, 0x95e811c0UL, 0xa8af4dcbUL, + 0x9fc58fcaUL, 0xc67bc9c8UL, 0xf1110bc9UL, 0x740744ccUL, 0x436d86cdUL, + 0x1ad3c0cfUL, 0x2db902ceUL, 0x4096af91UL, 0x77fc6d90UL, 0x2e422b92UL, + 0x1928e993UL, 0x9c3ea696UL, 0xab546497UL, 0xf2ea2295UL, 0xc580e094UL, + 0xf8c7bc9fUL, 0xcfad7e9eUL, 0x9613389cUL, 0xa179fa9dUL, 0x246fb598UL, + 0x13057799UL, 0x4abb319bUL, 0x7dd1f39aUL, 0x3035898dUL, 0x075f4b8cUL, + 0x5ee10d8eUL, 0x698bcf8fUL, 0xec9d808aUL, 0xdbf7428bUL, 0x82490489UL, + 0xb523c688UL, 0x88649a83UL, 0xbf0e5882UL, 0xe6b01e80UL, 0xd1dadc81UL, + 0x54cc9384UL, 0x63a65185UL, 0x3a181787UL, 0x0d72d586UL, 0xa0d0e2a9UL, + 0x97ba20a8UL, 0xce0466aaUL, 0xf96ea4abUL, 0x7c78ebaeUL, 0x4b1229afUL, + 0x12ac6fadUL, 0x25c6adacUL, 0x1881f1a7UL, 0x2feb33a6UL, 0x765575a4UL, + 0x413fb7a5UL, 0xc429f8a0UL, 0xf3433aa1UL, 0xaafd7ca3UL, 0x9d97bea2UL, + 0xd073c4b5UL, 0xe71906b4UL, 0xbea740b6UL, 0x89cd82b7UL, 0x0cdbcdb2UL, + 0x3bb10fb3UL, 0x620f49b1UL, 0x55658bb0UL, 0x6822d7bbUL, 0x5f4815baUL, + 0x06f653b8UL, 0x319c91b9UL, 0xb48adebcUL, 0x83e01cbdUL, 0xda5e5abfUL, + 0xed3498beUL + }, + { + 0x00000000UL, 0x6567bcb8UL, 0x8bc809aaUL, 0xeeafb512UL, 0x5797628fUL, + 0x32f0de37UL, 0xdc5f6b25UL, 0xb938d79dUL, 0xef28b4c5UL, 0x8a4f087dUL, + 0x64e0bd6fUL, 0x018701d7UL, 0xb8bfd64aUL, 0xddd86af2UL, 0x3377dfe0UL, + 0x56106358UL, 0x9f571950UL, 0xfa30a5e8UL, 0x149f10faUL, 0x71f8ac42UL, + 0xc8c07bdfUL, 0xada7c767UL, 0x43087275UL, 0x266fcecdUL, 0x707fad95UL, + 0x1518112dUL, 0xfbb7a43fUL, 0x9ed01887UL, 0x27e8cf1aUL, 0x428f73a2UL, + 0xac20c6b0UL, 0xc9477a08UL, 0x3eaf32a0UL, 0x5bc88e18UL, 0xb5673b0aUL, + 0xd00087b2UL, 0x6938502fUL, 0x0c5fec97UL, 0xe2f05985UL, 0x8797e53dUL, + 0xd1878665UL, 0xb4e03addUL, 0x5a4f8fcfUL, 0x3f283377UL, 0x8610e4eaUL, + 0xe3775852UL, 0x0dd8ed40UL, 0x68bf51f8UL, 0xa1f82bf0UL, 0xc49f9748UL, + 0x2a30225aUL, 0x4f579ee2UL, 0xf66f497fUL, 0x9308f5c7UL, 0x7da740d5UL, + 0x18c0fc6dUL, 0x4ed09f35UL, 0x2bb7238dUL, 0xc518969fUL, 0xa07f2a27UL, + 0x1947fdbaUL, 0x7c204102UL, 0x928ff410UL, 0xf7e848a8UL, 0x3d58149bUL, + 0x583fa823UL, 0xb6901d31UL, 0xd3f7a189UL, 0x6acf7614UL, 0x0fa8caacUL, + 0xe1077fbeUL, 0x8460c306UL, 0xd270a05eUL, 0xb7171ce6UL, 0x59b8a9f4UL, + 0x3cdf154cUL, 0x85e7c2d1UL, 0xe0807e69UL, 0x0e2fcb7bUL, 0x6b4877c3UL, + 0xa20f0dcbUL, 0xc768b173UL, 0x29c70461UL, 0x4ca0b8d9UL, 0xf5986f44UL, + 0x90ffd3fcUL, 0x7e5066eeUL, 0x1b37da56UL, 0x4d27b90eUL, 0x284005b6UL, + 0xc6efb0a4UL, 0xa3880c1cUL, 0x1ab0db81UL, 0x7fd76739UL, 0x9178d22bUL, + 0xf41f6e93UL, 0x03f7263bUL, 0x66909a83UL, 0x883f2f91UL, 0xed589329UL, + 0x546044b4UL, 0x3107f80cUL, 0xdfa84d1eUL, 0xbacff1a6UL, 0xecdf92feUL, + 0x89b82e46UL, 0x67179b54UL, 0x027027ecUL, 0xbb48f071UL, 0xde2f4cc9UL, + 0x3080f9dbUL, 0x55e74563UL, 0x9ca03f6bUL, 0xf9c783d3UL, 0x176836c1UL, + 0x720f8a79UL, 0xcb375de4UL, 0xae50e15cUL, 0x40ff544eUL, 0x2598e8f6UL, + 0x73888baeUL, 0x16ef3716UL, 0xf8408204UL, 0x9d273ebcUL, 0x241fe921UL, + 0x41785599UL, 0xafd7e08bUL, 0xcab05c33UL, 0x3bb659edUL, 0x5ed1e555UL, + 0xb07e5047UL, 0xd519ecffUL, 0x6c213b62UL, 0x094687daUL, 0xe7e932c8UL, + 0x828e8e70UL, 0xd49eed28UL, 0xb1f95190UL, 0x5f56e482UL, 0x3a31583aUL, + 0x83098fa7UL, 0xe66e331fUL, 0x08c1860dUL, 0x6da63ab5UL, 0xa4e140bdUL, + 0xc186fc05UL, 0x2f294917UL, 0x4a4ef5afUL, 0xf3762232UL, 0x96119e8aUL, + 0x78be2b98UL, 0x1dd99720UL, 0x4bc9f478UL, 0x2eae48c0UL, 0xc001fdd2UL, + 0xa566416aUL, 0x1c5e96f7UL, 0x79392a4fUL, 0x97969f5dUL, 0xf2f123e5UL, + 0x05196b4dUL, 0x607ed7f5UL, 0x8ed162e7UL, 0xebb6de5fUL, 0x528e09c2UL, + 0x37e9b57aUL, 0xd9460068UL, 0xbc21bcd0UL, 0xea31df88UL, 0x8f566330UL, + 0x61f9d622UL, 0x049e6a9aUL, 0xbda6bd07UL, 0xd8c101bfUL, 0x366eb4adUL, + 0x53090815UL, 0x9a4e721dUL, 0xff29cea5UL, 0x11867bb7UL, 0x74e1c70fUL, + 0xcdd91092UL, 0xa8beac2aUL, 0x46111938UL, 0x2376a580UL, 0x7566c6d8UL, + 0x10017a60UL, 0xfeaecf72UL, 0x9bc973caUL, 0x22f1a457UL, 0x479618efUL, + 0xa939adfdUL, 0xcc5e1145UL, 0x06ee4d76UL, 0x6389f1ceUL, 0x8d2644dcUL, + 0xe841f864UL, 0x51792ff9UL, 0x341e9341UL, 0xdab12653UL, 0xbfd69aebUL, + 0xe9c6f9b3UL, 0x8ca1450bUL, 0x620ef019UL, 0x07694ca1UL, 0xbe519b3cUL, + 0xdb362784UL, 0x35999296UL, 0x50fe2e2eUL, 0x99b95426UL, 0xfcdee89eUL, + 0x12715d8cUL, 0x7716e134UL, 0xce2e36a9UL, 0xab498a11UL, 0x45e63f03UL, + 0x208183bbUL, 0x7691e0e3UL, 0x13f65c5bUL, 0xfd59e949UL, 0x983e55f1UL, + 0x2106826cUL, 0x44613ed4UL, 0xaace8bc6UL, 0xcfa9377eUL, 0x38417fd6UL, + 0x5d26c36eUL, 0xb389767cUL, 0xd6eecac4UL, 0x6fd61d59UL, 0x0ab1a1e1UL, + 0xe41e14f3UL, 0x8179a84bUL, 0xd769cb13UL, 0xb20e77abUL, 0x5ca1c2b9UL, + 0x39c67e01UL, 0x80fea99cUL, 0xe5991524UL, 0x0b36a036UL, 0x6e511c8eUL, + 0xa7166686UL, 0xc271da3eUL, 0x2cde6f2cUL, 0x49b9d394UL, 0xf0810409UL, + 0x95e6b8b1UL, 0x7b490da3UL, 0x1e2eb11bUL, 0x483ed243UL, 0x2d596efbUL, + 0xc3f6dbe9UL, 0xa6916751UL, 0x1fa9b0ccUL, 0x7ace0c74UL, 0x9461b966UL, + 0xf10605deUL +#endif + } +}; diff --git a/Libraries/zlib123/deflate.cpp b/Libraries/zlib123/deflate.cpp new file mode 100644 index 0000000..0ae03ea --- /dev/null +++ b/Libraries/zlib123/deflate.cpp @@ -0,0 +1,1737 @@ +/* deflate.c -- compress data using the deflation algorithm + * Copyright (C) 1995-2005 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* + * ALGORITHM + * + * The "deflation" process depends on being able to identify portions + * of the input text which are identical to earlier input (within a + * sliding window trailing behind the input currently being processed). + * + * The most straightforward technique turns out to be the fastest for + * most input files: try all possible matches and select the longest. + * The key feature of this algorithm is that insertions into the string + * dictionary are very simple and thus fast, and deletions are avoided + * completely. Insertions are performed at each input character, whereas + * string matches are performed only when the previous match ends. So it + * is preferable to spend more time in matches to allow very fast string + * insertions and avoid deletions. The matching algorithm for small + * strings is inspired from that of Rabin & Karp. A brute force approach + * is used to find longer strings when a small match has been found. + * A similar algorithm is used in comic (by Jan-Mark Wams) and freeze + * (by Leonid Broukhis). + * A previous version of this file used a more sophisticated algorithm + * (by Fiala and Greene) which is guaranteed to run in linear amortized + * time, but has a larger average cost, uses more memory and is patented. + * However the F&G algorithm may be faster for some highly redundant + * files if the parameter max_chain_length (described below) is too large. + * + * ACKNOWLEDGEMENTS + * + * The idea of lazy evaluation of matches is due to Jan-Mark Wams, and + * I found it in 'freeze' written by Leonid Broukhis. + * Thanks to many people for bug reports and testing. + * + * REFERENCES + * + * Deutsch, L.P.,"DEFLATE Compressed Data Format Specification". + * Available in http://www.ietf.org/rfc/rfc1951.txt + * + * A description of the Rabin and Karp algorithm is given in the book + * "Algorithms" by R. Sedgewick, Addison-Wesley, p252. + * + * Fiala,E.R., and Greene,D.H. + * Data Compression with Finite Windows, Comm.ACM, 32,4 (1989) 490-595 + * + */ + +/* @(#) $Id$ */ + +#include "deflate.h" + +const char deflate_copyright[] = + " deflate 1.2.3 Copyright 1995-2005 Jean-loup Gailly "; +/* + If you use the zlib library in a product, an acknowledgment is welcome + in the documentation of your product. If for some reason you cannot + include such an acknowledgment, I would appreciate that you keep this + copyright string in the executable of your product. + */ + +/* =========================================================================== + * Function prototypes. + */ +typedef enum { + need_more, /* block not completed, need more input or more output */ + block_done, /* block flush performed */ + finish_started, /* finish started, need only more output at next deflate */ + finish_done /* finish done, accept no more input or output */ +} block_state; + +typedef block_state (*compress_func) OF((deflate_state *s, int flush)); +/* Compression function. Returns the block state after the call. */ + +local void fill_window OF((deflate_state *s)); +local block_state deflate_stored OF((deflate_state *s, int flush)); +local block_state deflate_fast OF((deflate_state *s, int flush)); +#ifndef FASTEST +local block_state deflate_slow OF((deflate_state *s, int flush)); +#endif +local void lm_init OF((deflate_state *s)); +local void putShortMSB OF((deflate_state *s, uInt b)); +local void flush_pending OF((z_streamp strm)); +local int read_buf OF((z_streamp strm, Bytef *buf, unsigned size)); +#ifndef FASTEST +#ifdef ASMV + void match_init OF((void)); /* asm code initialization */ + uInt longest_match OF((deflate_state *s, IPos cur_match)); +#else +local uInt longest_match OF((deflate_state *s, IPos cur_match)); +#endif +#endif +local uInt longest_match_fast OF((deflate_state *s, IPos cur_match)); + +#ifdef DEBUG +local void check_match OF((deflate_state *s, IPos start, IPos match, + int length)); +#endif + +/* =========================================================================== + * Local data + */ + +#define NIL 0 +/* Tail of hash chains */ + +#ifndef TOO_FAR +# define TOO_FAR 4096 +#endif +/* Matches of length 3 are discarded if their distance exceeds TOO_FAR */ + +#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1) +/* Minimum amount of lookahead, except at the end of the input file. + * See deflate.c for comments about the MIN_MATCH+1. + */ + +/* Values for max_lazy_match, good_match and max_chain_length, depending on + * the desired pack level (0..9). The values given below have been tuned to + * exclude worst case performance for pathological files. Better values may be + * found for specific files. + */ +typedef struct config_s { + ush good_length; /* reduce lazy search above this match length */ + ush max_lazy; /* do not perform lazy search above this match length */ + ush nice_length; /* quit search above this match length */ + ush max_chain; + compress_func func; +} config; + +#ifdef FASTEST +local const config configuration_table[2] = { +/* good lazy nice chain */ +/* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */ +/* 1 */ {4, 4, 8, 4, deflate_fast}}; /* max speed, no lazy matches */ +#else +local const config configuration_table[10] = { +/* good lazy nice chain */ +/* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */ +/* 1 */ {4, 4, 8, 4, deflate_fast}, /* max speed, no lazy matches */ +/* 2 */ {4, 5, 16, 8, deflate_fast}, +/* 3 */ {4, 6, 32, 32, deflate_fast}, + +/* 4 */ {4, 4, 16, 16, deflate_slow}, /* lazy matches */ +/* 5 */ {8, 16, 32, 32, deflate_slow}, +/* 6 */ {8, 16, 128, 128, deflate_slow}, +/* 7 */ {8, 32, 128, 256, deflate_slow}, +/* 8 */ {32, 128, 258, 1024, deflate_slow}, +/* 9 */ {32, 258, 258, 4096, deflate_slow}}; /* max compression */ +#endif + +/* Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4 + * For deflate_fast() (levels <= 3) good is ignored and lazy has a different + * meaning. + */ + +#define EQUAL 0 +/* result of memcmp for equal strings */ + +#ifndef NO_DUMMY_DECL +struct static_tree_desc_s {int dummy;}; /* for buggy compilers */ +#endif + +/* =========================================================================== + * Update a hash value with the given input byte + * IN assertion: all calls to to UPDATE_HASH are made with consecutive + * input characters, so that a running hash key can be computed from the + * previous key instead of complete recalculation each time. + */ +#define UPDATE_HASH(s,h,c) (h = (((h)<hash_shift) ^ (c)) & s->hash_mask) + + +/* =========================================================================== + * Insert string str in the dictionary and set match_head to the previous head + * of the hash chain (the most recent string with same hash key). Return + * the previous length of the hash chain. + * If this file is compiled with -DFASTEST, the compression level is forced + * to 1, and no hash chains are maintained. + * IN assertion: all calls to to INSERT_STRING are made with consecutive + * input characters and the first MIN_MATCH bytes of str are valid + * (except for the last MIN_MATCH-1 bytes of the input file). + */ +#ifdef FASTEST +#define INSERT_STRING(s, str, match_head) \ + (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ + match_head = s->head[s->ins_h], \ + s->head[s->ins_h] = (Pos)(str)) +#else +#define INSERT_STRING(s, str, match_head) \ + (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ + match_head = s->prev[(str) & s->w_mask] = s->head[s->ins_h], \ + s->head[s->ins_h] = (Pos)(str)) +#endif + +/* =========================================================================== + * Initialize the hash table (avoiding 64K overflow for 16 bit systems). + * prev[] will be initialized on the fly. + */ +#define CLEAR_HASH(s) \ + s->head[s->hash_size-1] = NIL; \ + zmemzero((Bytef *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head)); + +/* ========================================================================= */ +int ZEXPORT deflateInit_(//strm, level, version, stream_size) + z_streamp strm, + int level, + const char *version, + int stream_size) +{ + return deflateInit2_(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, + Z_DEFAULT_STRATEGY, version, stream_size); + /* To do: ignore strm->next_in if we use it as window */ +} + +/* ========================================================================= */ +int ZEXPORT deflateInit2_(/*strm, level, method, windowBits, memLevel, strategy, + version, stream_size)*/ + z_streamp strm, + int level, + int method, + int windowBits, + int memLevel, + int strategy, + const char *version, + int stream_size) +{ + deflate_state *s; + int wrap = 1; + static const char my_version[] = ZLIB_VERSION; + + ushf *overlay; + /* We overlay pending_buf and d_buf+l_buf. This works since the average + * output size for (length,distance) codes is <= 24 bits. + */ + + if (version == Z_NULL || version[0] != my_version[0] || + stream_size != sizeof(z_stream)) { + return Z_VERSION_ERROR; + } + if (strm == Z_NULL) return Z_STREAM_ERROR; + + strm->msg = Z_NULL; + if (strm->zalloc == (alloc_func)0) { + strm->zalloc = zcalloc; + strm->opaque = (voidpf)0; + } + if (strm->zfree == (free_func)0) strm->zfree = zcfree; + +#ifdef FASTEST + if (level != 0) level = 1; +#else + if (level == Z_DEFAULT_COMPRESSION) level = 6; +#endif + + if (windowBits < 0) { /* suppress zlib wrapper */ + wrap = 0; + windowBits = -windowBits; + } +#ifdef GZIP + else if (windowBits > 15) { + wrap = 2; /* write gzip wrapper instead */ + windowBits -= 16; + } +#endif + if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method != Z_DEFLATED || + windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || + strategy < 0 || strategy > Z_FIXED) { + return Z_STREAM_ERROR; + } + if (windowBits == 8) windowBits = 9; /* until 256-byte window bug fixed */ + s = (deflate_state *) ZALLOC(strm, 1, sizeof(deflate_state)); + if (s == Z_NULL) return Z_MEM_ERROR; + strm->state = (struct internal_state FAR *)s; + s->strm = strm; + + s->wrap = wrap; + s->gzhead = Z_NULL; + s->w_bits = windowBits; + s->w_size = 1 << s->w_bits; + s->w_mask = s->w_size - 1; + + s->hash_bits = memLevel + 7; + s->hash_size = 1 << s->hash_bits; + s->hash_mask = s->hash_size - 1; + s->hash_shift = ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH); + + s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte)); + s->prev = (Posf *) ZALLOC(strm, s->w_size, sizeof(Pos)); + s->head = (Posf *) ZALLOC(strm, s->hash_size, sizeof(Pos)); + + s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */ + + overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2); + s->pending_buf = (uchf *) overlay; + s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L); + + if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL || + s->pending_buf == Z_NULL) { + s->status = FINISH_STATE; + strm->msg = (char*)ERR_MSG(Z_MEM_ERROR); + deflateEnd (strm); + return Z_MEM_ERROR; + } + s->d_buf = overlay + s->lit_bufsize/sizeof(ush); + s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize; + + s->level = level; + s->strategy = strategy; + s->method = (Byte)method; + + return deflateReset(strm); +} + +/* ========================================================================= */ +int ZEXPORT deflateSetDictionary (//strm, dictionary, dictLength) + z_streamp strm, + const Bytef *dictionary, + uInt dictLength) +{ + deflate_state *s; + uInt length = dictLength; + uInt n; + IPos hash_head = 0; + + if (strm == Z_NULL || strm->state == Z_NULL || dictionary == Z_NULL || + strm->state->wrap == 2 || + (strm->state->wrap == 1 && strm->state->status != INIT_STATE)) + return Z_STREAM_ERROR; + + s = strm->state; + if (s->wrap) + strm->adler = adler32(strm->adler, dictionary, dictLength); + + if (length < MIN_MATCH) return Z_OK; + if (length > MAX_DIST(s)) { + length = MAX_DIST(s); + dictionary += dictLength - length; /* use the tail of the dictionary */ + } + zmemcpy(s->window, dictionary, length); + s->strstart = length; + s->block_start = (long)length; + + /* Insert all strings in the hash table (except for the last two bytes). + * s->lookahead stays null, so s->ins_h will be recomputed at the next + * call of fill_window. + */ + s->ins_h = s->window[0]; + UPDATE_HASH(s, s->ins_h, s->window[1]); + for (n = 0; n <= length - MIN_MATCH; n++) { + INSERT_STRING(s, n, hash_head); + } + if (hash_head) hash_head = 0; /* to make compiler happy */ + return Z_OK; +} + +/* ========================================================================= */ +int ZEXPORT deflateReset (//strm) + z_streamp strm) +{ + deflate_state *s; + + if (strm == Z_NULL || strm->state == Z_NULL || + strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) { + return Z_STREAM_ERROR; + } + + strm->total_in = strm->total_out = 0; + strm->msg = Z_NULL; /* use zfree if we ever allocate msg dynamically */ + strm->data_type = Z_UNKNOWN; + + s = (deflate_state *)strm->state; + s->pending = 0; + s->pending_out = s->pending_buf; + + if (s->wrap < 0) { + s->wrap = -s->wrap; /* was made negative by deflate(..., Z_FINISH); */ + } + s->status = s->wrap ? INIT_STATE : BUSY_STATE; + strm->adler = +#ifdef GZIP + s->wrap == 2 ? crc32(0L, Z_NULL, 0) : +#endif + adler32(0L, Z_NULL, 0); + s->last_flush = Z_NO_FLUSH; + + _tr_init(s); + lm_init(s); + + return Z_OK; +} + +/* ========================================================================= */ +int ZEXPORT deflateSetHeader (//strm, head) + z_streamp strm, + gz_headerp head) +{ + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + if (strm->state->wrap != 2) return Z_STREAM_ERROR; + strm->state->gzhead = head; + return Z_OK; +} + +/* ========================================================================= */ +int ZEXPORT deflatePrime (//strm, bits, value) + z_streamp strm, + int bits, + int value) +{ + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + strm->state->bi_valid = bits; + strm->state->bi_buf = (ush)(value & ((1 << bits) - 1)); + return Z_OK; +} + +/* ========================================================================= */ +int ZEXPORT deflateParams(//strm, level, strategy) + z_streamp strm, + int level, + int strategy) +{ + deflate_state *s; + compress_func func; + int err = Z_OK; + + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + s = strm->state; + +#ifdef FASTEST + if (level != 0) level = 1; +#else + if (level == Z_DEFAULT_COMPRESSION) level = 6; +#endif + if (level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) { + return Z_STREAM_ERROR; + } + func = configuration_table[s->level].func; + + if (func != configuration_table[level].func && strm->total_in != 0) { + /* Flush the last buffer: */ + err = deflate(strm, Z_PARTIAL_FLUSH); + } + if (s->level != level) { + s->level = level; + s->max_lazy_match = configuration_table[level].max_lazy; + s->good_match = configuration_table[level].good_length; + s->nice_match = configuration_table[level].nice_length; + s->max_chain_length = configuration_table[level].max_chain; + } + s->strategy = strategy; + return err; +} + +/* ========================================================================= */ +int ZEXPORT deflateTune(//strm, good_length, max_lazy, nice_length, max_chain) + z_streamp strm, + int good_length, + int max_lazy, + int nice_length, + int max_chain) +{ + deflate_state *s; + + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + s = strm->state; + s->good_match = good_length; + s->max_lazy_match = max_lazy; + s->nice_match = nice_length; + s->max_chain_length = max_chain; + return Z_OK; +} + +/* ========================================================================= + * For the default windowBits of 15 and memLevel of 8, this function returns + * a close to exact, as well as small, upper bound on the compressed size. + * They are coded as constants here for a reason--if the #define's are + * changed, then this function needs to be changed as well. The return + * value for 15 and 8 only works for those exact settings. + * + * For any setting other than those defaults for windowBits and memLevel, + * the value returned is a conservative worst case for the maximum expansion + * resulting from using fixed blocks instead of stored blocks, which deflate + * can emit on compressed data for some combinations of the parameters. + * + * This function could be more sophisticated to provide closer upper bounds + * for every combination of windowBits and memLevel, as well as wrap. + * But even the conservative upper bound of about 14% expansion does not + * seem onerous for output buffer allocation. + */ +uLong ZEXPORT deflateBound(//strm, sourceLen) + z_streamp strm, + uLong sourceLen) +{ + deflate_state *s; + uLong destLen; + + /* conservative upper bound */ + destLen = sourceLen + + ((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 11; + + /* if can't get parameters, return conservative bound */ + if (strm == Z_NULL || strm->state == Z_NULL) + return destLen; + + /* if not default parameters, return conservative bound */ + s = strm->state; + if (s->w_bits != 15 || s->hash_bits != 8 + 7) + return destLen; + + /* default settings: return tight bound for that case */ + return compressBound(sourceLen); +} + +/* ========================================================================= + * Put a short in the pending buffer. The 16-bit value is put in MSB order. + * IN assertion: the stream state is correct and there is enough room in + * pending_buf. + */ +local void putShortMSB (//s, b) + deflate_state *s, + uInt b) +{ + put_byte(s, (Byte)(b >> 8)); + put_byte(s, (Byte)(b & 0xff)); +} + +/* ========================================================================= + * Flush as much pending output as possible. All deflate() output goes + * through this function so some applications may wish to modify it + * to avoid allocating a large strm->next_out buffer and copying into it. + * (See also read_buf()). + */ +local void flush_pending(//strm) + z_streamp strm) +{ + unsigned len = strm->state->pending; + + if (len > strm->avail_out) len = strm->avail_out; + if (len == 0) return; + + zmemcpy(strm->next_out, strm->state->pending_out, len); + strm->next_out += len; + strm->state->pending_out += len; + strm->total_out += len; + strm->avail_out -= len; + strm->state->pending -= len; + if (strm->state->pending == 0) { + strm->state->pending_out = strm->state->pending_buf; + } +} + +/* ========================================================================= */ +int ZEXPORT deflate (//strm, flush) + z_streamp strm, + int flush) +{ + int old_flush; /* value of flush param for previous deflate call */ + deflate_state *s; + + if (strm == Z_NULL || strm->state == Z_NULL || + flush > Z_FINISH || flush < 0) { + return Z_STREAM_ERROR; + } + s = strm->state; + + if (strm->next_out == Z_NULL || + (strm->next_in == Z_NULL && strm->avail_in != 0) || + (s->status == FINISH_STATE && flush != Z_FINISH)) { + ERR_RETURN(strm, Z_STREAM_ERROR); + } + if (strm->avail_out == 0) ERR_RETURN(strm, Z_BUF_ERROR); + + s->strm = strm; /* just in case */ + old_flush = s->last_flush; + s->last_flush = flush; + + /* Write the header */ + if (s->status == INIT_STATE) { +#ifdef GZIP + if (s->wrap == 2) { + strm->adler = crc32(0L, Z_NULL, 0); + put_byte(s, 31); + put_byte(s, 139); + put_byte(s, 8); + if (s->gzhead == NULL) { + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, s->level == 9 ? 2 : + (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ? + 4 : 0)); + put_byte(s, OS_CODE); + s->status = BUSY_STATE; + } + else { + put_byte(s, (s->gzhead->text ? 1 : 0) + + (s->gzhead->hcrc ? 2 : 0) + + (s->gzhead->extra == Z_NULL ? 0 : 4) + + (s->gzhead->name == Z_NULL ? 0 : 8) + + (s->gzhead->comment == Z_NULL ? 0 : 16) + ); + put_byte(s, (Byte)(s->gzhead->time & 0xff)); + put_byte(s, (Byte)((s->gzhead->time >> 8) & 0xff)); + put_byte(s, (Byte)((s->gzhead->time >> 16) & 0xff)); + put_byte(s, (Byte)((s->gzhead->time >> 24) & 0xff)); + put_byte(s, s->level == 9 ? 2 : + (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ? + 4 : 0)); + put_byte(s, s->gzhead->os & 0xff); + if (s->gzhead->extra != NULL) { + put_byte(s, s->gzhead->extra_len & 0xff); + put_byte(s, (s->gzhead->extra_len >> 8) & 0xff); + } + if (s->gzhead->hcrc) + strm->adler = crc32(strm->adler, s->pending_buf, + s->pending); + s->gzindex = 0; + s->status = EXTRA_STATE; + } + } + else +#endif + { + uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8; + uInt level_flags; + + if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2) + level_flags = 0; + else if (s->level < 6) + level_flags = 1; + else if (s->level == 6) + level_flags = 2; + else + level_flags = 3; + header |= (level_flags << 6); + if (s->strstart != 0) header |= PRESET_DICT; + header += 31 - (header % 31); + + s->status = BUSY_STATE; + putShortMSB(s, header); + + /* Save the adler32 of the preset dictionary: */ + if (s->strstart != 0) { + putShortMSB(s, (uInt)(strm->adler >> 16)); + putShortMSB(s, (uInt)(strm->adler & 0xffff)); + } + strm->adler = adler32(0L, Z_NULL, 0); + } + } +#ifdef GZIP + if (s->status == EXTRA_STATE) { + if (s->gzhead->extra != NULL) { + uInt beg = s->pending; /* start of bytes to update crc */ + + while (s->gzindex < (s->gzhead->extra_len & 0xffff)) { + if (s->pending == s->pending_buf_size) { + if (s->gzhead->hcrc && s->pending > beg) + strm->adler = crc32(strm->adler, s->pending_buf + beg, + s->pending - beg); + flush_pending(strm); + beg = s->pending; + if (s->pending == s->pending_buf_size) + break; + } + put_byte(s, s->gzhead->extra[s->gzindex]); + s->gzindex++; + } + if (s->gzhead->hcrc && s->pending > beg) + strm->adler = crc32(strm->adler, s->pending_buf + beg, + s->pending - beg); + if (s->gzindex == s->gzhead->extra_len) { + s->gzindex = 0; + s->status = NAME_STATE; + } + } + else + s->status = NAME_STATE; + } + if (s->status == NAME_STATE) { + if (s->gzhead->name != NULL) { + uInt beg = s->pending; /* start of bytes to update crc */ + int val; + + do { + if (s->pending == s->pending_buf_size) { + if (s->gzhead->hcrc && s->pending > beg) + strm->adler = crc32(strm->adler, s->pending_buf + beg, + s->pending - beg); + flush_pending(strm); + beg = s->pending; + if (s->pending == s->pending_buf_size) { + val = 1; + break; + } + } + val = s->gzhead->name[s->gzindex++]; + put_byte(s, val); + } while (val != 0); + if (s->gzhead->hcrc && s->pending > beg) + strm->adler = crc32(strm->adler, s->pending_buf + beg, + s->pending - beg); + if (val == 0) { + s->gzindex = 0; + s->status = COMMENT_STATE; + } + } + else + s->status = COMMENT_STATE; + } + if (s->status == COMMENT_STATE) { + if (s->gzhead->comment != NULL) { + uInt beg = s->pending; /* start of bytes to update crc */ + int val; + + do { + if (s->pending == s->pending_buf_size) { + if (s->gzhead->hcrc && s->pending > beg) + strm->adler = crc32(strm->adler, s->pending_buf + beg, + s->pending - beg); + flush_pending(strm); + beg = s->pending; + if (s->pending == s->pending_buf_size) { + val = 1; + break; + } + } + val = s->gzhead->comment[s->gzindex++]; + put_byte(s, val); + } while (val != 0); + if (s->gzhead->hcrc && s->pending > beg) + strm->adler = crc32(strm->adler, s->pending_buf + beg, + s->pending - beg); + if (val == 0) + s->status = HCRC_STATE; + } + else + s->status = HCRC_STATE; + } + if (s->status == HCRC_STATE) { + if (s->gzhead->hcrc) { + if (s->pending + 2 > s->pending_buf_size) + flush_pending(strm); + if (s->pending + 2 <= s->pending_buf_size) { + put_byte(s, (Byte)(strm->adler & 0xff)); + put_byte(s, (Byte)((strm->adler >> 8) & 0xff)); + strm->adler = crc32(0L, Z_NULL, 0); + s->status = BUSY_STATE; + } + } + else + s->status = BUSY_STATE; + } +#endif + + /* Flush as much pending output as possible */ + if (s->pending != 0) { + flush_pending(strm); + if (strm->avail_out == 0) { + /* Since avail_out is 0, deflate will be called again with + * more output space, but possibly with both pending and + * avail_in equal to zero. There won't be anything to do, + * but this is not an error situation so make sure we + * return OK instead of BUF_ERROR at next call of deflate: + */ + s->last_flush = -1; + return Z_OK; + } + + /* Make sure there is something to do and avoid duplicate consecutive + * flushes. For repeated and useless calls with Z_FINISH, we keep + * returning Z_STREAM_END instead of Z_BUF_ERROR. + */ + } else if (strm->avail_in == 0 && flush <= old_flush && + flush != Z_FINISH) { + ERR_RETURN(strm, Z_BUF_ERROR); + } + + /* User must not provide more input after the first FINISH: */ + if (s->status == FINISH_STATE && strm->avail_in != 0) { + ERR_RETURN(strm, Z_BUF_ERROR); + } + + /* Start a new block or continue the current one. + */ + if (strm->avail_in != 0 || s->lookahead != 0 || + (flush != Z_NO_FLUSH && s->status != FINISH_STATE)) { + block_state bstate; + + bstate = (*(configuration_table[s->level].func))(s, flush); + + if (bstate == finish_started || bstate == finish_done) { + s->status = FINISH_STATE; + } + if (bstate == need_more || bstate == finish_started) { + if (strm->avail_out == 0) { + s->last_flush = -1; /* avoid BUF_ERROR next call, see above */ + } + return Z_OK; + /* If flush != Z_NO_FLUSH && avail_out == 0, the next call + * of deflate should use the same flush parameter to make sure + * that the flush is complete. So we don't have to output an + * empty block here, this will be done at next call. This also + * ensures that for a very small output buffer, we emit at most + * one empty block. + */ + } + if (bstate == block_done) { + if (flush == Z_PARTIAL_FLUSH) { + _tr_align(s); + } else { /* FULL_FLUSH or SYNC_FLUSH */ + _tr_stored_block(s, (char*)0, 0L, 0); + /* For a full flush, this empty block will be recognized + * as a special marker by inflate_sync(). + */ + if (flush == Z_FULL_FLUSH) { + CLEAR_HASH(s); /* forget history */ + } + } + flush_pending(strm); + if (strm->avail_out == 0) { + s->last_flush = -1; /* avoid BUF_ERROR at next call, see above */ + return Z_OK; + } + } + } + Assert(strm->avail_out > 0, "bug2"); + + if (flush != Z_FINISH) return Z_OK; + if (s->wrap <= 0) return Z_STREAM_END; + + /* Write the trailer */ +#ifdef GZIP + if (s->wrap == 2) { + put_byte(s, (Byte)(strm->adler & 0xff)); + put_byte(s, (Byte)((strm->adler >> 8) & 0xff)); + put_byte(s, (Byte)((strm->adler >> 16) & 0xff)); + put_byte(s, (Byte)((strm->adler >> 24) & 0xff)); + put_byte(s, (Byte)(strm->total_in & 0xff)); + put_byte(s, (Byte)((strm->total_in >> 8) & 0xff)); + put_byte(s, (Byte)((strm->total_in >> 16) & 0xff)); + put_byte(s, (Byte)((strm->total_in >> 24) & 0xff)); + } + else +#endif + { + putShortMSB(s, (uInt)(strm->adler >> 16)); + putShortMSB(s, (uInt)(strm->adler & 0xffff)); + } + flush_pending(strm); + /* If avail_out is zero, the application will call deflate again + * to flush the rest. + */ + if (s->wrap > 0) s->wrap = -s->wrap; /* write the trailer only once! */ + return s->pending != 0 ? Z_OK : Z_STREAM_END; +} + +/* ========================================================================= */ +int ZEXPORT deflateEnd (//strm) + z_streamp strm) +{ + int status; + + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + + status = strm->state->status; + if (status != INIT_STATE && + status != EXTRA_STATE && + status != NAME_STATE && + status != COMMENT_STATE && + status != HCRC_STATE && + status != BUSY_STATE && + status != FINISH_STATE) { + return Z_STREAM_ERROR; + } + + /* Deallocate in reverse order of allocations: */ + TRY_FREE(strm, strm->state->pending_buf); + TRY_FREE(strm, strm->state->head); + TRY_FREE(strm, strm->state->prev); + TRY_FREE(strm, strm->state->window); + + ZFREE(strm, strm->state); + strm->state = Z_NULL; + + return status == BUSY_STATE ? Z_DATA_ERROR : Z_OK; +} + +/* ========================================================================= + * Copy the source state to the destination state. + * To simplify the source, this is not supported for 16-bit MSDOS (which + * doesn't have enough memory anyway to duplicate compression states). + */ +int ZEXPORT deflateCopy (//dest, source) + z_streamp dest, + z_streamp source) +{ +#ifdef MAXSEG_64K + return Z_STREAM_ERROR; +#else + deflate_state *ds; + deflate_state *ss; + ushf *overlay; + + + if (source == Z_NULL || dest == Z_NULL || source->state == Z_NULL) { + return Z_STREAM_ERROR; + } + + ss = source->state; + + zmemcpy(dest, source, sizeof(z_stream)); + + ds = (deflate_state *) ZALLOC(dest, 1, sizeof(deflate_state)); + if (ds == Z_NULL) return Z_MEM_ERROR; + dest->state = (struct internal_state FAR *) ds; + zmemcpy(ds, ss, sizeof(deflate_state)); + ds->strm = dest; + + ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte)); + ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos)); + ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos)); + overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2); + ds->pending_buf = (uchf *) overlay; + + if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL || + ds->pending_buf == Z_NULL) { + deflateEnd (dest); + return Z_MEM_ERROR; + } + /* following zmemcpy do not work for 16-bit MSDOS */ + zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte)); + zmemcpy(ds->prev, ss->prev, ds->w_size * sizeof(Pos)); + zmemcpy(ds->head, ss->head, ds->hash_size * sizeof(Pos)); + zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size); + + ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf); + ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush); + ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize; + + ds->l_desc.dyn_tree = ds->dyn_ltree; + ds->d_desc.dyn_tree = ds->dyn_dtree; + ds->bl_desc.dyn_tree = ds->bl_tree; + + return Z_OK; +#endif /* MAXSEG_64K */ +} + +/* =========================================================================== + * Read a new buffer from the current input stream, update the adler32 + * and total number of bytes read. All deflate() input goes through + * this function so some applications may wish to modify it to avoid + * allocating a large strm->next_in buffer and copying from it. + * (See also flush_pending()). + */ +local int read_buf(//strm, buf, size) + z_streamp strm, + Bytef *buf, + unsigned size) +{ + unsigned len = strm->avail_in; + + if (len > size) len = size; + if (len == 0) return 0; + + strm->avail_in -= len; + + if (strm->state->wrap == 1) { + strm->adler = adler32(strm->adler, strm->next_in, len); + } +#ifdef GZIP + else if (strm->state->wrap == 2) { + strm->adler = crc32(strm->adler, strm->next_in, len); + } +#endif + zmemcpy(buf, strm->next_in, len); + strm->next_in += len; + strm->total_in += len; + + return (int)len; +} + +/* =========================================================================== + * Initialize the "longest match" routines for a new zlib stream + */ +local void lm_init (//s) + deflate_state *s) +{ + s->window_size = (ulg)2L*s->w_size; + + CLEAR_HASH(s); + + /* Set the default configuration parameters: + */ + s->max_lazy_match = configuration_table[s->level].max_lazy; + s->good_match = configuration_table[s->level].good_length; + s->nice_match = configuration_table[s->level].nice_length; + s->max_chain_length = configuration_table[s->level].max_chain; + + s->strstart = 0; + s->block_start = 0L; + s->lookahead = 0; + s->match_length = s->prev_length = MIN_MATCH-1; + s->match_available = 0; + s->ins_h = 0; +#ifndef FASTEST +#ifdef ASMV + match_init(); /* initialize the asm code */ +#endif +#endif +} + +#ifndef FASTEST +/* =========================================================================== + * Set match_start to the longest match starting at the given string and + * return its length. Matches shorter or equal to prev_length are discarded, + * in which case the result is equal to prev_length and match_start is + * garbage. + * IN assertions: cur_match is the head of the hash chain for the current + * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 + * OUT assertion: the match length is not greater than s->lookahead. + */ +#ifndef ASMV +/* For 80x86 and 680x0, an optimized version will be provided in match.asm or + * match.S. The code will be functionally equivalent. + */ +local uInt longest_match(//s, cur_match) + deflate_state *s, + IPos cur_match) /* current match */ +{ + unsigned chain_length = s->max_chain_length;/* max hash chain length */ + register Bytef *scan = s->window + s->strstart; /* current string */ + register Bytef *match; /* matched string */ + register int len; /* length of current match */ + int best_len = s->prev_length; /* best match length so far */ + int nice_match = s->nice_match; /* stop if match long enough */ + IPos limit = s->strstart > (IPos)MAX_DIST(s) ? + s->strstart - (IPos)MAX_DIST(s) : NIL; + /* Stop when cur_match becomes <= limit. To simplify the code, + * we prevent matches with the string of window index 0. + */ + Posf *prev = s->prev; + uInt wmask = s->w_mask; + +#ifdef UNALIGNED_OK + /* Compare two bytes at a time. Note: this is not always beneficial. + * Try with and without -DUNALIGNED_OK to check. + */ + register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1; + register ush scan_start = *(ushf*)scan; + register ush scan_end = *(ushf*)(scan+best_len-1); +#else + register Bytef *strend = s->window + s->strstart + MAX_MATCH; + register Byte scan_end1 = scan[best_len-1]; + register Byte scan_end = scan[best_len]; +#endif + + /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. + * It is easy to get rid of this optimization if necessary. + */ + Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); + + /* Do not waste too much time if we already have a good match: */ + if (s->prev_length >= s->good_match) { + chain_length >>= 2; + } + /* Do not look for matches beyond the end of the input. This is necessary + * to make deflate deterministic. + */ + if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; + + Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); + + do { + Assert(cur_match < s->strstart, "no future"); + match = s->window + cur_match; + + /* Skip to next match if the match length cannot increase + * or if the match length is less than 2. Note that the checks below + * for insufficient lookahead only occur occasionally for performance + * reasons. Therefore uninitialized memory will be accessed, and + * conditional jumps will be made that depend on those values. + * However the length of the match is limited to the lookahead, so + * the output of deflate is not affected by the uninitialized values. + */ +#if (defined(UNALIGNED_OK) && MAX_MATCH == 258) + /* This code assumes sizeof(unsigned short) == 2. Do not use + * UNALIGNED_OK if your compiler uses a different size. + */ + if (*(ushf*)(match+best_len-1) != scan_end || + *(ushf*)match != scan_start) continue; + + /* It is not necessary to compare scan[2] and match[2] since they are + * always equal when the other bytes match, given that the hash keys + * are equal and that HASH_BITS >= 8. Compare 2 bytes at a time at + * strstart+3, +5, ... up to strstart+257. We check for insufficient + * lookahead only every 4th comparison; the 128th check will be made + * at strstart+257. If MAX_MATCH-2 is not a multiple of 8, it is + * necessary to put more guard bytes at the end of the window, or + * to check more often for insufficient lookahead. + */ + Assert(scan[2] == match[2], "scan[2]?"); + scan++, match++; + do { + } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) && + *(ushf*)(scan+=2) == *(ushf*)(match+=2) && + *(ushf*)(scan+=2) == *(ushf*)(match+=2) && + *(ushf*)(scan+=2) == *(ushf*)(match+=2) && + scan < strend); + /* The funny "do {}" generates better code on most compilers */ + + /* Here, scan <= window+strstart+257 */ + Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + if (*scan == *match) scan++; + + len = (MAX_MATCH - 1) - (int)(strend-scan); + scan = strend - (MAX_MATCH-1); + +#else /* UNALIGNED_OK */ + + if (match[best_len] != scan_end || + match[best_len-1] != scan_end1 || + *match != *scan || + *++match != scan[1]) continue; + + /* The check at best_len-1 can be removed because it will be made + * again later. (This heuristic is not always a win.) + * It is not necessary to compare scan[2] and match[2] since they + * are always equal when the other bytes match, given that + * the hash keys are equal and that HASH_BITS >= 8. + */ + scan += 2, match++; + Assert(*scan == *match, "match[2]?"); + + /* We check for insufficient lookahead only every 8th comparison; + * the 256th check will be made at strstart+258. + */ + do { + } while (*++scan == *++match && *++scan == *++match && + *++scan == *++match && *++scan == *++match && + *++scan == *++match && *++scan == *++match && + *++scan == *++match && *++scan == *++match && + scan < strend); + + Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + + len = MAX_MATCH - (int)(strend - scan); + scan = strend - MAX_MATCH; + +#endif /* UNALIGNED_OK */ + + if (len > best_len) { + s->match_start = cur_match; + best_len = len; + if (len >= nice_match) break; +#ifdef UNALIGNED_OK + scan_end = *(ushf*)(scan+best_len-1); +#else + scan_end1 = scan[best_len-1]; + scan_end = scan[best_len]; +#endif + } + } while ((cur_match = prev[cur_match & wmask]) > limit + && --chain_length != 0); + + if ((uInt)best_len <= s->lookahead) return (uInt)best_len; + return s->lookahead; +} +#endif /* ASMV */ +#endif /* FASTEST */ + +/* --------------------------------------------------------------------------- + * Optimized version for level == 1 or strategy == Z_RLE only + */ +local uInt longest_match_fast(//s, cur_match) + deflate_state *s, + IPos cur_match) /* current match */ +{ + register Bytef *scan = s->window + s->strstart; /* current string */ + register Bytef *match; /* matched string */ + register int len; /* length of current match */ + register Bytef *strend = s->window + s->strstart + MAX_MATCH; + + /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. + * It is easy to get rid of this optimization if necessary. + */ + Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); + + Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); + + Assert(cur_match < s->strstart, "no future"); + + match = s->window + cur_match; + + /* Return failure if the match length is less than 2: + */ + if (match[0] != scan[0] || match[1] != scan[1]) return MIN_MATCH-1; + + /* The check at best_len-1 can be removed because it will be made + * again later. (This heuristic is not always a win.) + * It is not necessary to compare scan[2] and match[2] since they + * are always equal when the other bytes match, given that + * the hash keys are equal and that HASH_BITS >= 8. + */ + scan += 2, match += 2; + Assert(*scan == *match, "match[2]?"); + + /* We check for insufficient lookahead only every 8th comparison; + * the 256th check will be made at strstart+258. + */ + do { + } while (*++scan == *++match && *++scan == *++match && + *++scan == *++match && *++scan == *++match && + *++scan == *++match && *++scan == *++match && + *++scan == *++match && *++scan == *++match && + scan < strend); + + Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + + len = MAX_MATCH - (int)(strend - scan); + + if (len < MIN_MATCH) return MIN_MATCH - 1; + + s->match_start = cur_match; + return (uInt)len <= s->lookahead ? (uInt)len : s->lookahead; +} + +#ifdef DEBUG +/* =========================================================================== + * Check that the match at match_start is indeed a match. + */ +local void check_match(/*s, start, match, length*/ + deflate_state *s, + IPos start, + IPos match, + int length) +{ + /* check that the match is indeed a match */ + if (zmemcmp(s->window + match, + s->window + start, length) != EQUAL) { + fprintf(stderr, " start %u, match %u, length %d\n", + start, match, length); + do { + fprintf(stderr, "%c%c", s->window[match++], s->window[start++]); + } while (--length != 0); + z_error("invalid match"); + } + if (z_verbose > 1) { + fprintf(stderr,"\\[%d,%d]", start-match, length); + do { putc(s->window[start++], stderr); } while (--length != 0); + } +} +#else +# define check_match(s, start, match, length) +#endif /* DEBUG */ + +/* =========================================================================== + * Fill the window when the lookahead becomes insufficient. + * Updates strstart and lookahead. + * + * IN assertion: lookahead < MIN_LOOKAHEAD + * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD + * At least one byte has been read, or avail_in == 0; reads are + * performed for at least two bytes (required for the zip translate_eol + * option -- not supported here). + */ +local void fill_window(//s) + deflate_state *s) +{ + register unsigned n, m; + register Posf *p; + unsigned more; /* Amount of free space at the end of the window. */ + uInt wsize = s->w_size; + + do { + more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart); + + /* Deal with !@#$% 64K limit: */ + if (sizeof(int) <= 2) { + if (more == 0 && s->strstart == 0 && s->lookahead == 0) { + more = wsize; + + } else if (more == (unsigned)(-1)) { + /* Very unlikely, but possible on 16 bit machine if + * strstart == 0 && lookahead == 1 (input done a byte at time) + */ + more--; + } + } + + /* If the window is almost full and there is insufficient lookahead, + * move the upper half to the lower one to make room in the upper half. + */ + if (s->strstart >= wsize+MAX_DIST(s)) { + + zmemcpy(s->window, s->window+wsize, (unsigned)wsize); + s->match_start -= wsize; + s->strstart -= wsize; /* we now have strstart >= MAX_DIST */ + s->block_start -= (long) wsize; + + /* Slide the hash table (could be avoided with 32 bit values + at the expense of memory usage). We slide even when level == 0 + to keep the hash table consistent if we switch back to level > 0 + later. (Using level 0 permanently is not an optimal usage of + zlib, so we don't care about this pathological case.) + */ + /* %%% avoid this when Z_RLE */ + n = s->hash_size; + p = &s->head[n]; + do { + m = *--p; + *p = (Pos)(m >= wsize ? m-wsize : NIL); + } while (--n); + + n = wsize; +#ifndef FASTEST + p = &s->prev[n]; + do { + m = *--p; + *p = (Pos)(m >= wsize ? m-wsize : NIL); + /* If n is not on any hash chain, prev[n] is garbage but + * its value will never be used. + */ + } while (--n); +#endif + more += wsize; + } + if (s->strm->avail_in == 0) return; + + /* If there was no sliding: + * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && + * more == window_size - lookahead - strstart + * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) + * => more >= window_size - 2*WSIZE + 2 + * In the BIG_MEM or MMAP case (not yet supported), + * window_size == input_size + MIN_LOOKAHEAD && + * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. + * Otherwise, window_size == 2*WSIZE so more >= 2. + * If there was sliding, more >= WSIZE. So in all cases, more >= 2. + */ + Assert(more >= 2, "more < 2"); + + n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more); + s->lookahead += n; + + /* Initialize the hash value now that we have some input: */ + if (s->lookahead >= MIN_MATCH) { + s->ins_h = s->window[s->strstart]; + UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]); +#if MIN_MATCH != 3 + Call UPDATE_HASH() MIN_MATCH-3 more times +#endif + } + /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage, + * but this is not important since only literal bytes will be emitted. + */ + + } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0); +} + +/* =========================================================================== + * Flush the current block, with given end-of-file flag. + * IN assertion: strstart is set to the end of the current match. + */ +#define FLUSH_BLOCK_ONLY(s, eof) { \ + _tr_flush_block(s, (s->block_start >= 0L ? \ + (charf *)&s->window[(unsigned)s->block_start] : \ + (charf *)Z_NULL), \ + (ulg)((long)s->strstart - s->block_start), \ + (eof)); \ + s->block_start = s->strstart; \ + flush_pending(s->strm); \ + Tracev((stderr,"[FLUSH]")); \ +} + +/* Same but force premature exit if necessary. */ +#define FLUSH_BLOCK(s, eof) { \ + FLUSH_BLOCK_ONLY(s, eof); \ + if (s->strm->avail_out == 0) return (eof) ? finish_started : need_more; \ +} + +/* =========================================================================== + * Copy without compression as much as possible from the input stream, return + * the current block state. + * This function does not insert new strings in the dictionary since + * uncompressible data is probably not useful. This function is used + * only for the level=0 compression option. + * NOTE: this function should be optimized to avoid extra copying from + * window to pending_buf. + */ +local block_state deflate_stored(//s, flush) + deflate_state *s, + int flush) +{ + /* Stored blocks are limited to 0xffff bytes, pending_buf is limited + * to pending_buf_size, and each stored block has a 5 byte header: + */ + ulg max_block_size = 0xffff; + ulg max_start; + + if (max_block_size > s->pending_buf_size - 5) { + max_block_size = s->pending_buf_size - 5; + } + + /* Copy as much as possible from input to output: */ + for (;;) { + /* Fill the window as much as possible: */ + if (s->lookahead <= 1) { + + Assert(s->strstart < s->w_size+MAX_DIST(s) || + s->block_start >= (long)s->w_size, "slide too late"); + + fill_window(s); + if (s->lookahead == 0 && flush == Z_NO_FLUSH) return need_more; + + if (s->lookahead == 0) break; /* flush the current block */ + } + Assert(s->block_start >= 0L, "block gone"); + + s->strstart += s->lookahead; + s->lookahead = 0; + + /* Emit a stored block if pending_buf will be full: */ + max_start = s->block_start + max_block_size; + if (s->strstart == 0 || (ulg)s->strstart >= max_start) { + /* strstart == 0 is possible when wraparound on 16-bit machine */ + s->lookahead = (uInt)(s->strstart - max_start); + s->strstart = (uInt)max_start; + FLUSH_BLOCK(s, 0); + } + /* Flush if we may have to slide, otherwise block_start may become + * negative and the data will be gone: + */ + if (s->strstart - (uInt)s->block_start >= MAX_DIST(s)) { + FLUSH_BLOCK(s, 0); + } + } + FLUSH_BLOCK(s, flush == Z_FINISH); + return flush == Z_FINISH ? finish_done : block_done; +} + +/* =========================================================================== + * Compress as much as possible from the input stream, return the current + * block state. + * This function does not perform lazy evaluation of matches and inserts + * new strings in the dictionary only for unmatched strings or for short + * matches. It is used only for the fast compression options. + */ +local block_state deflate_fast(//s, flush) + deflate_state *s, + int flush) +{ + IPos hash_head = NIL; /* head of the hash chain */ + int bflush; /* set if current block must be flushed */ + + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the next match, plus MIN_MATCH bytes to insert the + * string following the next match. + */ + if (s->lookahead < MIN_LOOKAHEAD) { + fill_window(s); + if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) { + return need_more; + } + if (s->lookahead == 0) break; /* flush the current block */ + } + + /* Insert the string window[strstart .. strstart+2] in the + * dictionary, and set hash_head to the head of the hash chain: + */ + if (s->lookahead >= MIN_MATCH) { + INSERT_STRING(s, s->strstart, hash_head); + } + + /* Find the longest match, discarding those <= prev_length. + * At this point we have always match_length < MIN_MATCH + */ + if (hash_head != NIL && s->strstart - hash_head <= MAX_DIST(s)) { + /* To simplify the code, we prevent matches with the string + * of window index 0 (in particular we have to avoid a match + * of the string with itself at the start of the input file). + */ +#ifdef FASTEST + if ((s->strategy != Z_HUFFMAN_ONLY && s->strategy != Z_RLE) || + (s->strategy == Z_RLE && s->strstart - hash_head == 1)) { + s->match_length = longest_match_fast (s, hash_head); + } +#else + if (s->strategy != Z_HUFFMAN_ONLY && s->strategy != Z_RLE) { + s->match_length = longest_match (s, hash_head); + } else if (s->strategy == Z_RLE && s->strstart - hash_head == 1) { + s->match_length = longest_match_fast (s, hash_head); + } +#endif + /* longest_match() or longest_match_fast() sets match_start */ + } + if (s->match_length >= MIN_MATCH) { + check_match(s, s->strstart, s->match_start, s->match_length); + + _tr_tally_dist(s, s->strstart - s->match_start, + s->match_length - MIN_MATCH, bflush); + + s->lookahead -= s->match_length; + + /* Insert new strings in the hash table only if the match length + * is not too large. This saves time but degrades compression. + */ +#ifndef FASTEST + if (s->match_length <= s->max_insert_length && + s->lookahead >= MIN_MATCH) { + s->match_length--; /* string at strstart already in table */ + do { + s->strstart++; + INSERT_STRING(s, s->strstart, hash_head); + /* strstart never exceeds WSIZE-MAX_MATCH, so there are + * always MIN_MATCH bytes ahead. + */ + } while (--s->match_length != 0); + s->strstart++; + } else +#endif + { + s->strstart += s->match_length; + s->match_length = 0; + s->ins_h = s->window[s->strstart]; + UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]); +#if MIN_MATCH != 3 + Call UPDATE_HASH() MIN_MATCH-3 more times +#endif + /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not + * matter since it will be recomputed at next deflate call. + */ + } + } else { + /* No match, output a literal byte */ + Tracevv((stderr,"%c", s->window[s->strstart])); + _tr_tally_lit (s, s->window[s->strstart], bflush); + s->lookahead--; + s->strstart++; + } + if (bflush) FLUSH_BLOCK(s, 0); + } + FLUSH_BLOCK(s, flush == Z_FINISH); + return flush == Z_FINISH ? finish_done : block_done; +} + +#ifndef FASTEST +/* =========================================================================== + * Same as above, but achieves better compression. We use a lazy + * evaluation for matches: a match is finally adopted only if there is + * no better match at the next window position. + */ +local block_state deflate_slow(//s, flush) + deflate_state *s, + int flush) +{ + IPos hash_head = NIL; /* head of hash chain */ + int bflush; /* set if current block must be flushed */ + + /* Process the input block. */ + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the next match, plus MIN_MATCH bytes to insert the + * string following the next match. + */ + if (s->lookahead < MIN_LOOKAHEAD) { + fill_window(s); + if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) { + return need_more; + } + if (s->lookahead == 0) break; /* flush the current block */ + } + + /* Insert the string window[strstart .. strstart+2] in the + * dictionary, and set hash_head to the head of the hash chain: + */ + if (s->lookahead >= MIN_MATCH) { + INSERT_STRING(s, s->strstart, hash_head); + } + + /* Find the longest match, discarding those <= prev_length. + */ + s->prev_length = s->match_length, s->prev_match = s->match_start; + s->match_length = MIN_MATCH-1; + + if (hash_head != NIL && s->prev_length < s->max_lazy_match && + s->strstart - hash_head <= MAX_DIST(s)) { + /* To simplify the code, we prevent matches with the string + * of window index 0 (in particular we have to avoid a match + * of the string with itself at the start of the input file). + */ + if (s->strategy != Z_HUFFMAN_ONLY && s->strategy != Z_RLE) { + s->match_length = longest_match (s, hash_head); + } else if (s->strategy == Z_RLE && s->strstart - hash_head == 1) { + s->match_length = longest_match_fast (s, hash_head); + } + /* longest_match() or longest_match_fast() sets match_start */ + + if (s->match_length <= 5 && (s->strategy == Z_FILTERED +#if TOO_FAR <= 32767 + || (s->match_length == MIN_MATCH && + s->strstart - s->match_start > TOO_FAR) +#endif + )) { + + /* If prev_match is also MIN_MATCH, match_start is garbage + * but we will ignore the current match anyway. + */ + s->match_length = MIN_MATCH-1; + } + } + /* If there was a match at the previous step and the current + * match is not better, output the previous match: + */ + if (s->prev_length >= MIN_MATCH && s->match_length <= s->prev_length) { + uInt max_insert = s->strstart + s->lookahead - MIN_MATCH; + /* Do not insert strings in hash table beyond this. */ + + check_match(s, s->strstart-1, s->prev_match, s->prev_length); + + _tr_tally_dist(s, s->strstart -1 - s->prev_match, + s->prev_length - MIN_MATCH, bflush); + + /* Insert in hash table all strings up to the end of the match. + * strstart-1 and strstart are already inserted. If there is not + * enough lookahead, the last two strings are not inserted in + * the hash table. + */ + s->lookahead -= s->prev_length-1; + s->prev_length -= 2; + do { + if (++s->strstart <= max_insert) { + INSERT_STRING(s, s->strstart, hash_head); + } + } while (--s->prev_length != 0); + s->match_available = 0; + s->match_length = MIN_MATCH-1; + s->strstart++; + + if (bflush) FLUSH_BLOCK(s, 0); + + } else if (s->match_available) { + /* If there was no match at the previous position, output a + * single literal. If there was a match but the current match + * is longer, truncate the previous match to a single literal. + */ + Tracevv((stderr,"%c", s->window[s->strstart-1])); + _tr_tally_lit(s, s->window[s->strstart-1], bflush); + if (bflush) { + FLUSH_BLOCK_ONLY(s, 0); + } + s->strstart++; + s->lookahead--; + if (s->strm->avail_out == 0) return need_more; + } else { + /* There is no previous match to compare with, wait for + * the next step to decide. + */ + s->match_available = 1; + s->strstart++; + s->lookahead--; + } + } + Assert (flush != Z_NO_FLUSH, "no flush?"); + if (s->match_available) { + Tracevv((stderr,"%c", s->window[s->strstart-1])); + _tr_tally_lit(s, s->window[s->strstart-1], bflush); + s->match_available = 0; + } + FLUSH_BLOCK(s, flush == Z_FINISH); + return flush == Z_FINISH ? finish_done : block_done; +} +#endif /* FASTEST */ + +#if 0 +/* =========================================================================== + * For Z_RLE, simply look for runs of bytes, generate matches only of distance + * one. Do not maintain a hash table. (It will be regenerated if this run of + * deflate switches away from Z_RLE.) + */ +local block_state deflate_rle(s, flush) + deflate_state *s; + int flush; +{ + int bflush; /* set if current block must be flushed */ + uInt run; /* length of run */ + uInt max; /* maximum length of run */ + uInt prev; /* byte at distance one to match */ + Bytef *scan; /* scan for end of run */ + + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the longest encodable run. + */ + if (s->lookahead < MAX_MATCH) { + fill_window(s); + if (s->lookahead < MAX_MATCH && flush == Z_NO_FLUSH) { + return need_more; + } + if (s->lookahead == 0) break; /* flush the current block */ + } + + /* See how many times the previous byte repeats */ + run = 0; + if (s->strstart > 0) { /* if there is a previous byte, that is */ + max = s->lookahead < MAX_MATCH ? s->lookahead : MAX_MATCH; + scan = s->window + s->strstart - 1; + prev = *scan++; + do { + if (*scan++ != prev) + break; + } while (++run < max); + } + + /* Emit match if have run of MIN_MATCH or longer, else emit literal */ + if (run >= MIN_MATCH) { + check_match(s, s->strstart, s->strstart - 1, run); + _tr_tally_dist(s, 1, run - MIN_MATCH, bflush); + s->lookahead -= run; + s->strstart += run; + } else { + /* No match, output a literal byte */ + Tracevv((stderr,"%c", s->window[s->strstart])); + _tr_tally_lit (s, s->window[s->strstart], bflush); + s->lookahead--; + s->strstart++; + } + if (bflush) FLUSH_BLOCK(s, 0); + } + FLUSH_BLOCK(s, flush == Z_FINISH); + return flush == Z_FINISH ? finish_done : block_done; +} +#endif diff --git a/Libraries/zlib123/deflate.h b/Libraries/zlib123/deflate.h new file mode 100644 index 0000000..222c53e --- /dev/null +++ b/Libraries/zlib123/deflate.h @@ -0,0 +1,331 @@ +/* deflate.h -- internal compression state + * Copyright (C) 1995-2004 Jean-loup Gailly + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* WARNING: this file should *not* be used by applications. It is + part of the implementation of the compression library and is + subject to change. Applications should only use zlib.h. + */ + +/* @(#) $Id$ */ + +#ifndef DEFLATE_H +#define DEFLATE_H + +#include "zutil.h" + +/* define NO_GZIP when compiling if you want to disable gzip header and + trailer creation by deflate(). NO_GZIP would be used to avoid linking in + the crc code when it is not needed. For shared libraries, gzip encoding + should be left enabled. */ +#ifndef NO_GZIP +# define GZIP +#endif + +/* =========================================================================== + * Internal compression state. + */ + +#define LENGTH_CODES 29 +/* number of length codes, not counting the special END_BLOCK code */ + +#define LITERALS 256 +/* number of literal bytes 0..255 */ + +#define L_CODES (LITERALS+1+LENGTH_CODES) +/* number of Literal or Length codes, including the END_BLOCK code */ + +#define D_CODES 30 +/* number of distance codes */ + +#define BL_CODES 19 +/* number of codes used to transfer the bit lengths */ + +#define HEAP_SIZE (2*L_CODES+1) +/* maximum heap size */ + +#define MAX_BITS 15 +/* All codes must not exceed MAX_BITS bits */ + +#define INIT_STATE 42 +#define EXTRA_STATE 69 +#define NAME_STATE 73 +#define COMMENT_STATE 91 +#define HCRC_STATE 103 +#define BUSY_STATE 113 +#define FINISH_STATE 666 +/* Stream status */ + + +/* Data structure describing a single value and its code string. */ +typedef struct ct_data_s { + union { + ush freq; /* frequency count */ + ush code; /* bit string */ + } fc; + union { + ush dad; /* father node in Huffman tree */ + ush len; /* length of bit string */ + } dl; +} FAR ct_data; + +#define Freq fc.freq +#define Code fc.code +#define Dad dl.dad +#define Len dl.len + +typedef struct static_tree_desc_s static_tree_desc; + +typedef struct tree_desc_s { + ct_data *dyn_tree; /* the dynamic tree */ + int max_code; /* largest code with non zero frequency */ + static_tree_desc *stat_desc; /* the corresponding static tree */ +} FAR tree_desc; + +typedef ush Pos; +typedef Pos FAR Posf; +typedef unsigned IPos; + +/* A Pos is an index in the character window. We use short instead of int to + * save space in the various tables. IPos is used only for parameter passing. + */ + +typedef struct internal_state { + z_streamp strm; /* pointer back to this zlib stream */ + int status; /* as the name implies */ + Bytef *pending_buf; /* output still pending */ + ulg pending_buf_size; /* size of pending_buf */ + Bytef *pending_out; /* next pending byte to output to the stream */ + uInt pending; /* nb of bytes in the pending buffer */ + int wrap; /* bit 0 true for zlib, bit 1 true for gzip */ + gz_headerp gzhead; /* gzip header information to write */ + uInt gzindex; /* where in extra, name, or comment */ + Byte method; /* STORED (for zip only) or DEFLATED */ + int last_flush; /* value of flush param for previous deflate call */ + + /* used by deflate.c: */ + + uInt w_size; /* LZ77 window size (32K by default) */ + uInt w_bits; /* log2(w_size) (8..16) */ + uInt w_mask; /* w_size - 1 */ + + Bytef *window; + /* Sliding window. Input bytes are read into the second half of the window, + * and move to the first half later to keep a dictionary of at least wSize + * bytes. With this organization, matches are limited to a distance of + * wSize-MAX_MATCH bytes, but this ensures that IO is always + * performed with a length multiple of the block size. Also, it limits + * the window size to 64K, which is quite useful on MSDOS. + * To do: use the user input buffer as sliding window. + */ + + ulg window_size; + /* Actual size of window: 2*wSize, except when the user input buffer + * is directly used as sliding window. + */ + + Posf *prev; + /* Link to older string with same hash index. To limit the size of this + * array to 64K, this link is maintained only for the last 32K strings. + * An index in this array is thus a window index modulo 32K. + */ + + Posf *head; /* Heads of the hash chains or NIL. */ + + uInt ins_h; /* hash index of string to be inserted */ + uInt hash_size; /* number of elements in hash table */ + uInt hash_bits; /* log2(hash_size) */ + uInt hash_mask; /* hash_size-1 */ + + uInt hash_shift; + /* Number of bits by which ins_h must be shifted at each input + * step. It must be such that after MIN_MATCH steps, the oldest + * byte no longer takes part in the hash key, that is: + * hash_shift * MIN_MATCH >= hash_bits + */ + + long block_start; + /* Window position at the beginning of the current output block. Gets + * negative when the window is moved backwards. + */ + + uInt match_length; /* length of best match */ + IPos prev_match; /* previous match */ + int match_available; /* set if previous match exists */ + uInt strstart; /* start of string to insert */ + uInt match_start; /* start of matching string */ + uInt lookahead; /* number of valid bytes ahead in window */ + + uInt prev_length; + /* Length of the best match at previous step. Matches not greater than this + * are discarded. This is used in the lazy match evaluation. + */ + + uInt max_chain_length; + /* To speed up deflation, hash chains are never searched beyond this + * length. A higher limit improves compression ratio but degrades the + * speed. + */ + + uInt max_lazy_match; + /* Attempt to find a better match only when the current match is strictly + * smaller than this value. This mechanism is used only for compression + * levels >= 4. + */ +# define max_insert_length max_lazy_match + /* Insert new strings in the hash table only if the match length is not + * greater than this length. This saves time but degrades compression. + * max_insert_length is used only for compression levels <= 3. + */ + + int level; /* compression level (1..9) */ + int strategy; /* favor or force Huffman coding*/ + + uInt good_match; + /* Use a faster search when the previous match is longer than this */ + + int nice_match; /* Stop searching when current match exceeds this */ + + /* used by trees.c: */ + /* Didn't use ct_data typedef below to supress compiler warning */ + struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */ + struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */ + struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */ + + struct tree_desc_s l_desc; /* desc. for literal tree */ + struct tree_desc_s d_desc; /* desc. for distance tree */ + struct tree_desc_s bl_desc; /* desc. for bit length tree */ + + ush bl_count[MAX_BITS+1]; + /* number of codes at each bit length for an optimal tree */ + + int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */ + int heap_len; /* number of elements in the heap */ + int heap_max; /* element of largest frequency */ + /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used. + * The same heap array is used to build all trees. + */ + + uch depth[2*L_CODES+1]; + /* Depth of each subtree used as tie breaker for trees of equal frequency + */ + + uchf *l_buf; /* buffer for literals or lengths */ + + uInt lit_bufsize; + /* Size of match buffer for literals/lengths. There are 4 reasons for + * limiting lit_bufsize to 64K: + * - frequencies can be kept in 16 bit counters + * - if compression is not successful for the first block, all input + * data is still in the window so we can still emit a stored block even + * when input comes from standard input. (This can also be done for + * all blocks if lit_bufsize is not greater than 32K.) + * - if compression is not successful for a file smaller than 64K, we can + * even emit a stored file instead of a stored block (saving 5 bytes). + * This is applicable only for zip (not gzip or zlib). + * - creating new Huffman trees less frequently may not provide fast + * adaptation to changes in the input data statistics. (Take for + * example a binary file with poorly compressible code followed by + * a highly compressible string table.) Smaller buffer sizes give + * fast adaptation but have of course the overhead of transmitting + * trees more frequently. + * - I can't count above 4 + */ + + uInt last_lit; /* running index in l_buf */ + + ushf *d_buf; + /* Buffer for distances. To simplify the code, d_buf and l_buf have + * the same number of elements. To use different lengths, an extra flag + * array would be necessary. + */ + + ulg opt_len; /* bit length of current block with optimal trees */ + ulg static_len; /* bit length of current block with static trees */ + uInt matches; /* number of string matches in current block */ + int last_eob_len; /* bit length of EOB code for last block */ + +#ifdef DEBUG + ulg compressed_len; /* total bit length of compressed file mod 2^32 */ + ulg bits_sent; /* bit length of compressed data sent mod 2^32 */ +#endif + + ush bi_buf; + /* Output buffer. bits are inserted starting at the bottom (least + * significant bits). + */ + int bi_valid; + /* Number of valid bits in bi_buf. All bits above the last valid bit + * are always zero. + */ + +} FAR deflate_state; + +/* Output a byte on the stream. + * IN assertion: there is enough room in pending_buf. + */ +#define put_byte(s, c) {s->pending_buf[s->pending++] = (c);} + + +#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1) +/* Minimum amount of lookahead, except at the end of the input file. + * See deflate.c for comments about the MIN_MATCH+1. + */ + +#define MAX_DIST(s) ((s)->w_size-MIN_LOOKAHEAD) +/* In order to simplify the code, particularly on 16 bit machines, match + * distances are limited to MAX_DIST instead of WSIZE. + */ + + /* in trees.c */ +void _tr_init OF((deflate_state *s)); +int _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc)); +void _tr_flush_block OF((deflate_state *s, charf *buf, ulg stored_len, + int eof)); +void _tr_align OF((deflate_state *s)); +void _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len, + int eof)); + +#define d_code(dist) \ + ((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)]) +/* Mapping from a distance to a distance code. dist is the distance - 1 and + * must not have side effects. _dist_code[256] and _dist_code[257] are never + * used. + */ + +#ifndef DEBUG +/* Inline versions of _tr_tally for speed: */ + +#if defined(GEN_TREES_H) || !defined(STDC) + extern uch _length_code[]; + extern uch _dist_code[]; +#else + extern const uch _length_code[]; + extern const uch _dist_code[]; +#endif + +# define _tr_tally_lit(s, c, flush) \ + { uch cc = (c); \ + s->d_buf[s->last_lit] = 0; \ + s->l_buf[s->last_lit++] = cc; \ + s->dyn_ltree[cc].Freq++; \ + flush = (s->last_lit == s->lit_bufsize-1); \ + } +# define _tr_tally_dist(s, distance, length, flush) \ + { uch len = (length); \ + ush dist = (distance); \ + s->d_buf[s->last_lit] = dist; \ + s->l_buf[s->last_lit++] = len; \ + dist--; \ + s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \ + s->dyn_dtree[d_code(dist)].Freq++; \ + flush = (s->last_lit == s->lit_bufsize-1); \ + } +#else +# define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c) +# define _tr_tally_dist(s, distance, length, flush) \ + flush = _tr_tally(s, distance, length) +#endif + +#endif /* DEFLATE_H */ diff --git a/Libraries/zlib123/inffast.cpp b/Libraries/zlib123/inffast.cpp new file mode 100644 index 0000000..a56a6ba --- /dev/null +++ b/Libraries/zlib123/inffast.cpp @@ -0,0 +1,318 @@ +/* inffast.c -- fast decoding + * Copyright (C) 1995-2004 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#include "zutil.h" +#include "inftrees.h" +#include "inflate.h" +#include "inffast.h" + +#ifndef ASMINF + +/* Allow machine dependent optimization for post-increment or pre-increment. + Based on testing to date, + Pre-increment preferred for: + - PowerPC G3 (Adler) + - MIPS R5000 (Randers-Pehrson) + Post-increment preferred for: + - none + No measurable difference: + - Pentium III (Anderson) + - M68060 (Nikl) + */ +#ifdef POSTINC +# define OFF 0 +# define PUP(a) *(a)++ +#else +# define OFF 1 +# define PUP(a) *++(a) +#endif + +/* + Decode literal, length, and distance codes and write out the resulting + literal and match bytes until either not enough input or output is + available, an end-of-block is encountered, or a data error is encountered. + When large enough input and output buffers are supplied to inflate(), for + example, a 16K input buffer and a 64K output buffer, more than 95% of the + inflate execution time is spent in _this routine. + + Entry assumptions: + + state->mode == LEN + strm->avail_in >= 6 + strm->avail_out >= 258 + start >= strm->avail_out + state->bits < 8 + + On return, state->mode is one of: + + LEN -- ran out of enough output space or enough available input + TYPE -- reached end of block code, inflate() to interpret next block + BAD -- error in block data + + Notes: + + - The maximum input bits used by a length/distance pair is 15 bits for the + length code, 5 bits for the length extra, 15 bits for the distance code, + and 13 bits for the distance extra. This totals 48 bits, or six bytes. + Therefore if strm->avail_in >= 6, then there is enough input to avoid + checking for available input while decoding. + + - The maximum bytes that a single length/distance pair can output is 258 + bytes, which is the maximum length that can be coded. inflate_fast() + requires strm->avail_out >= 258 for each loop to avoid checking for + output space. + */ +void inflate_fast(//strm, start) +z_streamp strm, +unsigned start) /* inflate()'s starting value for strm->avail_out */ +{ + struct inflate_state FAR *state; + unsigned char FAR *in; /* local strm->next_in */ + unsigned char FAR *last; /* while in < last, enough input available */ + unsigned char FAR *out; /* local strm->next_out */ + unsigned char FAR *beg; /* inflate()'s initial strm->next_out */ + unsigned char FAR *end; /* while out < end, enough space available */ +#ifdef INFLATE_STRICT + unsigned dmax; /* maximum distance from zlib header */ +#endif + unsigned wsize; /* window size or zero if not using window */ + unsigned whave; /* valid bytes in the window */ + unsigned write; /* window write index */ + unsigned char FAR *window; /* allocated sliding window, if wsize != 0 */ + unsigned long hold; /* local strm->hold */ + unsigned bits; /* local strm->bits */ + code const FAR *lcode; /* local strm->lencode */ + code const FAR *dcode; /* local strm->distcode */ + unsigned lmask; /* mask for first level of length codes */ + unsigned dmask; /* mask for first level of distance codes */ + code _this; /* retrieved table entry */ + unsigned op; /* code bits, operation, extra bits, or */ + /* window position, window bytes to copy */ + unsigned len; /* match length, unused bytes */ + unsigned dist; /* match distance */ + unsigned char FAR *from; /* where to copy match from */ + + /* copy state to local variables */ + state = (struct inflate_state FAR *)strm->state; + in = strm->next_in - OFF; + last = in + (strm->avail_in - 5); + out = strm->next_out - OFF; + beg = out - (start - strm->avail_out); + end = out + (strm->avail_out - 257); +#ifdef INFLATE_STRICT + dmax = state->dmax; +#endif + wsize = state->wsize; + whave = state->whave; + write = state->write; + window = state->window; + hold = state->hold; + bits = state->bits; + lcode = state->lencode; + dcode = state->distcode; + lmask = (1U << state->lenbits) - 1; + dmask = (1U << state->distbits) - 1; + + /* decode literals and length/distances until end-of-block or not enough + input data or output space */ + do { + if (bits < 15) { + hold += (unsigned long)(PUP(in)) << bits; + bits += 8; + hold += (unsigned long)(PUP(in)) << bits; + bits += 8; + } + _this = lcode[hold & lmask]; + dolen: + op = (unsigned)(_this.bits); + hold >>= op; + bits -= op; + op = (unsigned)(_this.op); + if (op == 0) { /* literal */ + Tracevv((stderr, _this.val >= 0x20 && _this.val < 0x7f ? + "inflate: literal '%c'\n" : + "inflate: literal 0x%02x\n", _this.val)); + PUP(out) = (unsigned char)(_this.val); + } + else if (op & 16) { /* length base */ + len = (unsigned)(_this.val); + op &= 15; /* number of extra bits */ + if (op) { + if (bits < op) { + hold += (unsigned long)(PUP(in)) << bits; + bits += 8; + } + len += (unsigned)hold & ((1U << op) - 1); + hold >>= op; + bits -= op; + } + Tracevv((stderr, "inflate: length %u\n", len)); + if (bits < 15) { + hold += (unsigned long)(PUP(in)) << bits; + bits += 8; + hold += (unsigned long)(PUP(in)) << bits; + bits += 8; + } + _this = dcode[hold & dmask]; + dodist: + op = (unsigned)(_this.bits); + hold >>= op; + bits -= op; + op = (unsigned)(_this.op); + if (op & 16) { /* distance base */ + dist = (unsigned)(_this.val); + op &= 15; /* number of extra bits */ + if (bits < op) { + hold += (unsigned long)(PUP(in)) << bits; + bits += 8; + if (bits < op) { + hold += (unsigned long)(PUP(in)) << bits; + bits += 8; + } + } + dist += (unsigned)hold & ((1U << op) - 1); +#ifdef INFLATE_STRICT + if (dist > dmax) { + strm->msg = (char *)"invalid distance too far back"; + state->mode = BAD; + break; + } +#endif + hold >>= op; + bits -= op; + Tracevv((stderr, "inflate: distance %u\n", dist)); + op = (unsigned)(out - beg); /* max distance in output */ + if (dist > op) { /* see if copy from window */ + op = dist - op; /* distance back in window */ + if (op > whave) { + strm->msg = (char *)"invalid distance too far back"; + state->mode = BAD; + break; + } + from = window - OFF; + if (write == 0) { /* very common case */ + from += wsize - op; + if (op < len) { /* some from window */ + len -= op; + do { + PUP(out) = PUP(from); + } while (--op); + from = out - dist; /* rest from output */ + } + } + else if (write < op) { /* wrap around window */ + from += wsize + write - op; + op -= write; + if (op < len) { /* some from end of window */ + len -= op; + do { + PUP(out) = PUP(from); + } while (--op); + from = window - OFF; + if (write < len) { /* some from start of window */ + op = write; + len -= op; + do { + PUP(out) = PUP(from); + } while (--op); + from = out - dist; /* rest from output */ + } + } + } + else { /* contiguous in window */ + from += write - op; + if (op < len) { /* some from window */ + len -= op; + do { + PUP(out) = PUP(from); + } while (--op); + from = out - dist; /* rest from output */ + } + } + while (len > 2) { + PUP(out) = PUP(from); + PUP(out) = PUP(from); + PUP(out) = PUP(from); + len -= 3; + } + if (len) { + PUP(out) = PUP(from); + if (len > 1) + PUP(out) = PUP(from); + } + } + else { + from = out - dist; /* copy direct from output */ + do { /* minimum length is three */ + PUP(out) = PUP(from); + PUP(out) = PUP(from); + PUP(out) = PUP(from); + len -= 3; + } while (len > 2); + if (len) { + PUP(out) = PUP(from); + if (len > 1) + PUP(out) = PUP(from); + } + } + } + else if ((op & 64) == 0) { /* 2nd level distance code */ + _this = dcode[_this.val + (hold & ((1U << op) - 1))]; + goto dodist; + } + else { + strm->msg = (char *)"invalid distance code"; + state->mode = BAD; + break; + } + } + else if ((op & 64) == 0) { /* 2nd level length code */ + _this = lcode[_this.val + (hold & ((1U << op) - 1))]; + goto dolen; + } + else if (op & 32) { /* end-of-block */ + Tracevv((stderr, "inflate: end of block\n")); + state->mode = TYPE; + break; + } + else { + strm->msg = (char *)"invalid literal/length code"; + state->mode = BAD; + break; + } + } while (in < last && out < end); + + /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ + len = bits >> 3; + in -= len; + bits -= len << 3; + hold &= (1U << bits) - 1; + + /* update state and return */ + strm->next_in = in + OFF; + strm->next_out = out + OFF; + strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last)); + strm->avail_out = (unsigned)(out < end ? + 257 + (end - out) : 257 - (out - end)); + state->hold = hold; + state->bits = bits; + return; +} + +/* + inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe): + - Using bit fields for code structure + - Different op definition to avoid & for extra bits (do & for table bits) + - Three separate decoding do-loops for direct, window, and write == 0 + - Special case for distance > 1 copies to do overlapped load and store copy + - Explicit branch predictions (based on measured branch probabilities) + - Deferring match copy and interspersed it with decoding subsequent codes + - Swapping literal/length else + - Swapping window/direct else + - Larger unrolled copy loops (three is about right) + - Moving len -= 3 statement into middle of loop + */ + +#endif /* !ASMINF */ diff --git a/Libraries/zlib123/inffast.h b/Libraries/zlib123/inffast.h new file mode 100644 index 0000000..614fa78 --- /dev/null +++ b/Libraries/zlib123/inffast.h @@ -0,0 +1,11 @@ +/* inffast.h -- header to use inffast.c + * Copyright (C) 1995-2003 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* WARNING: this file should *not* be used by applications. It is + part of the implementation of the compression library and is + subject to change. Applications should only use zlib.h. + */ + +void inflate_fast OF((z_streamp strm, unsigned start)); diff --git a/Libraries/zlib123/inffixed.h b/Libraries/zlib123/inffixed.h new file mode 100644 index 0000000..423d5c5 --- /dev/null +++ b/Libraries/zlib123/inffixed.h @@ -0,0 +1,94 @@ + /* inffixed.h -- table for decoding fixed codes + * Generated automatically by makefixed(). + */ + + /* WARNING: this file should *not* be used by applications. It + is part of the implementation of the compression library and + is subject to change. Applications should only use zlib.h. + */ + + static const code lenfix[512] = { + {96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48}, + {0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128}, + {0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59}, + {0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176}, + {0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20}, + {21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100}, + {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8}, + {0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216}, + {18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76}, + {0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114}, + {0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2}, + {0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148}, + {20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42}, + {0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86}, + {0,8,22},{64,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15}, + {0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236}, + {16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62}, + {0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142}, + {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31}, + {0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162}, + {0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25}, + {0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105}, + {0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4}, + {0,8,85},{0,8,21},{16,8,258},{19,7,43},{0,8,117},{0,8,53},{0,9,202}, + {17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69}, + {0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125}, + {0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13}, + {0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195}, + {19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35}, + {0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91}, + {0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19}, + {0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246}, + {16,7,5},{0,8,87},{0,8,23},{64,8,0},{19,7,51},{0,8,119},{0,8,55}, + {0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135}, + {0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99}, + {0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190}, + {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16}, + {20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96}, + {0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6}, + {0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209}, + {17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72}, + {0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116}, + {0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4}, + {0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153}, + {20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44}, + {0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82}, + {0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11}, + {0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229}, + {16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58}, + {0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138}, + {0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{64,8,0},{19,7,51}, + {0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173}, + {0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30}, + {0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110}, + {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0}, + {0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195}, + {16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65}, + {0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121}, + {0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9}, + {0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{16,8,258}, + {19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37}, + {0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93}, + {0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23}, + {0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251}, + {16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51}, + {0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131}, + {0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67}, + {0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183}, + {0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23}, + {64,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103}, + {0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9}, + {0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223}, + {18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79}, + {0,9,255} + }; + + static const code distfix[32] = { + {16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025}, + {21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193}, + {18,5,9},{26,5,2049},{22,5,129},{64,5,0},{16,5,2},{23,5,385}, + {19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577}, + {16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073}, + {22,5,193},{64,5,0} + }; diff --git a/Libraries/zlib123/inflate.cpp b/Libraries/zlib123/inflate.cpp new file mode 100644 index 0000000..f892c49 --- /dev/null +++ b/Libraries/zlib123/inflate.cpp @@ -0,0 +1,1368 @@ +/* inflate.c -- zlib decompression + * Copyright (C) 1995-2005 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* + * Change history: + * + * 1.2.beta0 24 Nov 2002 + * - First version -- complete rewrite of inflate to simplify code, avoid + * creation of window when not needed, minimize use of window when it is + * needed, make inffast.c even faster, implement gzip decoding, and to + * improve code readability and style over the previous zlib inflate code + * + * 1.2.beta1 25 Nov 2002 + * - Use pointers for available input and output checking in inffast.c + * - Remove input and output counters in inffast.c + * - Change inffast.c entry and loop from avail_in >= 7 to >= 6 + * - Remove unnecessary second byte pull from length extra in inffast.c + * - Unroll direct copy to three copies per loop in inffast.c + * + * 1.2.beta2 4 Dec 2002 + * - Change external routine names to reduce potential conflicts + * - Correct filename to inffixed.h for fixed tables in inflate.c + * - Make hbuf[] unsigned char to match parameter type in inflate.c + * - Change strm->next_out[-state->offset] to *(strm->next_out - state->offset) + * to avoid negation problem on Alphas (64 bit) in inflate.c + * + * 1.2.beta3 22 Dec 2002 + * - Add comments on state->bits assertion in inffast.c + * - Add comments on op field in inftrees.h + * - Fix bug in reuse of allocated window after inflateReset() + * - Remove bit fields--back to byte structure for speed + * - Remove distance extra == 0 check in inflate_fast()--only helps for lengths + * - Change post-increments to pre-increments in inflate_fast(), PPC biased? + * - Add compile time option, POSTINC, to use post-increments instead (Intel?) + * - Make MATCH copy in inflate() much faster for when inflate_fast() not used + * - Use local copies of stream next and avail values, as well as local bit + * buffer and bit count in inflate()--for speed when inflate_fast() not used + * + * 1.2.beta4 1 Jan 2003 + * - Split ptr - 257 statements in inflate_table() to avoid compiler warnings + * - Move a comment on output buffer sizes from inffast.c to inflate.c + * - Add comments in inffast.c to introduce the inflate_fast() routine + * - Rearrange window copies in inflate_fast() for speed and simplification + * - Unroll last copy for window match in inflate_fast() + * - Use local copies of window variables in inflate_fast() for speed + * - Pull out common write == 0 case for speed in inflate_fast() + * - Make op and len in inflate_fast() unsigned for consistency + * - Add FAR to lcode and dcode declarations in inflate_fast() + * - Simplified bad distance check in inflate_fast() + * - Added inflateBackInit(), inflateBack(), and inflateBackEnd() in new + * source file infback.c to provide a call-back interface to inflate for + * programs like gzip and unzip -- uses window as output buffer to avoid + * window copying + * + * 1.2.beta5 1 Jan 2003 + * - Improved inflateBack() interface to allow the caller to provide initial + * input in strm. + * - Fixed stored blocks bug in inflateBack() + * + * 1.2.beta6 4 Jan 2003 + * - Added comments in inffast.c on effectiveness of POSTINC + * - Typecasting all around to reduce compiler warnings + * - Changed loops from while (1) or do {} while (1) to for (;;), again to + * make compilers happy + * - Changed type of window in inflateBackInit() to unsigned char * + * + * 1.2.beta7 27 Jan 2003 + * - Changed many types to unsigned or unsigned short to avoid warnings + * - Added inflateCopy() function + * + * 1.2.0 9 Mar 2003 + * - Changed inflateBack() interface to provide separate opaque descriptors + * for the in() and out() functions + * - Changed inflateBack() argument and in_func typedef to swap the length + * and buffer address return values for the input function + * - Check next_in and next_out for Z_NULL on entry to inflate() + * + * The history for versions after 1.2.0 are in ChangeLog in zlib distribution. + */ + +#include "zutil.h" +#include "inftrees.h" +#include "inflate.h" +#include "inffast.h" + +#ifdef MAKEFIXED +# ifndef BUILDFIXED +# define BUILDFIXED +# endif +#endif + +/* function prototypes */ +local void fixedtables OF((struct inflate_state FAR *state)); +local int updatewindow OF((z_streamp strm, unsigned out)); +#ifdef BUILDFIXED + void makefixed OF((void)); +#endif +local unsigned syncsearch OF((unsigned FAR *have, unsigned char FAR *buf, + unsigned len)); + +int ZEXPORT inflateReset(//strm) +z_streamp strm) +{ + struct inflate_state FAR *state; + + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + strm->total_in = strm->total_out = state->total = 0; + strm->msg = Z_NULL; + strm->adler = 1; /* to support ill-conceived Java test suite */ + state->mode = HEAD; + state->last = 0; + state->havedict = 0; + state->dmax = 32768U; + state->head = Z_NULL; + state->wsize = 0; + state->whave = 0; + state->write = 0; + state->hold = 0; + state->bits = 0; + state->lencode = state->distcode = state->next = state->codes; + Tracev((stderr, "inflate: reset\n")); + return Z_OK; +} + +int ZEXPORT inflatePrime(//strm, bits, value) +z_streamp strm, +int bits, +int value) +{ + struct inflate_state FAR *state; + + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (bits > 16 || state->bits + bits > 32) return Z_STREAM_ERROR; + value &= (1L << bits) - 1; + state->hold += value << state->bits; + state->bits += bits; + return Z_OK; +} + +int ZEXPORT inflateInit2_(//strm, windowBits, version, stream_size) +z_streamp strm, +int windowBits, +const char *version, +int stream_size) +{ + struct inflate_state FAR *state; + + if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || + stream_size != (int)(sizeof(z_stream))) + return Z_VERSION_ERROR; + if (strm == Z_NULL) return Z_STREAM_ERROR; + strm->msg = Z_NULL; /* in case we return an error */ + if (strm->zalloc == (alloc_func)0) { + strm->zalloc = zcalloc; + strm->opaque = (voidpf)0; + } + if (strm->zfree == (free_func)0) strm->zfree = zcfree; + state = (struct inflate_state FAR *) + ZALLOC(strm, 1, sizeof(struct inflate_state)); + if (state == Z_NULL) return Z_MEM_ERROR; + Tracev((stderr, "inflate: allocated\n")); + strm->state = (struct internal_state FAR *)state; + if (windowBits < 0) { + state->wrap = 0; + windowBits = -windowBits; + } + else { + state->wrap = (windowBits >> 4) + 1; +#ifdef GUNZIP + if (windowBits < 48) windowBits &= 15; +#endif + } + if (windowBits < 8 || windowBits > 15) { + ZFREE(strm, state); + strm->state = Z_NULL; + return Z_STREAM_ERROR; + } + state->wbits = (unsigned)windowBits; + state->window = Z_NULL; + return inflateReset(strm); +} + +int ZEXPORT inflateInit_(//strm, version, stream_size) +z_streamp strm, +const char *version, +int stream_size) +{ + return inflateInit2_(strm, DEF_WBITS, version, stream_size); +} + +/* + Return state with length and distance decoding tables and index sizes set to + fixed code decoding. Normally _this returns fixed tables from inffixed.h. + If BUILDFIXED is defined, then instead _this routine builds the tables the + first time it's called, and returns those tables the first time and + thereafter. This reduces the size of the code by about 2K bytes, in + exchange for a little execution time. However, BUILDFIXED should not be + used for threaded applications, since the rewriting of the tables and virgin + may not be thread-safe. + */ +local void fixedtables(//state) +struct inflate_state FAR *state) +{ +#ifdef BUILDFIXED + static int virgin = 1; + static code *lenfix, *distfix; + static code fixed[544]; + + /* build fixed huffman tables if first call (may not be thread safe) */ + if (virgin) { + unsigned sym, bits; + static code *next; + + /* literal/length table */ + sym = 0; + while (sym < 144) state->lens[sym++] = 8; + while (sym < 256) state->lens[sym++] = 9; + while (sym < 280) state->lens[sym++] = 7; + while (sym < 288) state->lens[sym++] = 8; + next = fixed; + lenfix = next; + bits = 9; + inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); + + /* distance table */ + sym = 0; + while (sym < 32) state->lens[sym++] = 5; + distfix = next; + bits = 5; + inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); + + /* do _this just once */ + virgin = 0; + } +#else /* !BUILDFIXED */ +# include "inffixed.h" +#endif /* BUILDFIXED */ + state->lencode = lenfix; + state->lenbits = 9; + state->distcode = distfix; + state->distbits = 5; +} + +#ifdef MAKEFIXED +#include + +/* + Write out the inffixed.h that is #include'd above. Defining MAKEFIXED also + defines BUILDFIXED, so the tables are built on the fly. makefixed() writes + those tables to stdout, which would be piped to inffixed.h. A small program + can simply call makefixed to do _this: + + void makefixed(void); + + int main(void) + { + makefixed(); + return 0; + } + + Then that can be linked with zlib built with MAKEFIXED defined and run: + + a.out > inffixed.h + */ +void makefixed() +{ + unsigned low, size; + struct inflate_state state; + + fixedtables(&state); + puts(" /* inffixed.h -- table for decoding fixed codes"); + puts(" * Generated automatically by makefixed()."); + puts(" */"); + puts(""); + puts(" /* WARNING: _this file should *not* be used by applications."); + puts(" It is part of the implementation of _this library and is"); + puts(" subject to change. Applications should only use zlib.h."); + puts(" */"); + puts(""); + size = 1U << 9; + printf(" static const code lenfix[%u] = {", size); + low = 0; + for (;;) { + if ((low % 7) == 0) printf("\n "); + printf("{%u,%u,%d}", state.lencode[low].op, state.lencode[low].bits, + state.lencode[low].val); + if (++low == size) break; + putchar(','); + } + puts("\n };"); + size = 1U << 5; + printf("\n static const code distfix[%u] = {", size); + low = 0; + for (;;) { + if ((low % 6) == 0) printf("\n "); + printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits, + state.distcode[low].val); + if (++low == size) break; + putchar(','); + } + puts("\n };"); +} +#endif /* MAKEFIXED */ + +/* + Update the window with the last wsize (normally 32K) bytes written before + returning. If window does not exist yet, create it. This is only called + when a window is already in use, or when output has been written during _this + inflate call, but the end of the deflate stream has not been reached yet. + It is also called to create a window for dictionary data when a dictionary + is loaded. + + Providing output buffers larger than 32K to inflate() should provide a speed + advantage, since only the last 32K of output is copied to the sliding window + upon return from inflate(), and since all distances after the first 32K of + output will fall in the output data, making match copies simpler and faster. + The advantage may be dependent on the size of the processor's data caches. + */ +local int updatewindow(//strm, out) +z_streamp strm, +unsigned out) +{ + struct inflate_state FAR *state; + unsigned copy, dist; + + state = (struct inflate_state FAR *)strm->state; + + /* if it hasn't been done already, allocate space for the window */ + if (state->window == Z_NULL) { + state->window = (unsigned char FAR *) + ZALLOC(strm, 1U << state->wbits, + sizeof(unsigned char)); + if (state->window == Z_NULL) return 1; + } + + /* if window not in use yet, initialize */ + if (state->wsize == 0) { + state->wsize = 1U << state->wbits; + state->write = 0; + state->whave = 0; + } + + /* copy state->wsize or less output bytes into the circular window */ + copy = out - strm->avail_out; + if (copy >= state->wsize) { + zmemcpy(state->window, strm->next_out - state->wsize, state->wsize); + state->write = 0; + state->whave = state->wsize; + } + else { + dist = state->wsize - state->write; + if (dist > copy) dist = copy; + zmemcpy(state->window + state->write, strm->next_out - copy, dist); + copy -= dist; + if (copy) { + zmemcpy(state->window, strm->next_out - copy, copy); + state->write = copy; + state->whave = state->wsize; + } + else { + state->write += dist; + if (state->write == state->wsize) state->write = 0; + if (state->whave < state->wsize) state->whave += dist; + } + } + return 0; +} + +/* Macros for inflate(): */ + +/* check function to use adler32() for zlib or crc32() for gzip */ +#ifdef GUNZIP +# define UPDATE(check, buf, len) \ + (state->flags ? crc32(check, buf, len) : adler32(check, buf, len)) +#else +# define UPDATE(check, buf, len) adler32(check, buf, len) +#endif + +/* check macros for header crc */ +#ifdef GUNZIP +# define CRC2(check, word) \ + do { \ + hbuf[0] = (unsigned char)(word); \ + hbuf[1] = (unsigned char)((word) >> 8); \ + check = crc32(check, hbuf, 2); \ + } while (0) + +# define CRC4(check, word) \ + do { \ + hbuf[0] = (unsigned char)(word); \ + hbuf[1] = (unsigned char)((word) >> 8); \ + hbuf[2] = (unsigned char)((word) >> 16); \ + hbuf[3] = (unsigned char)((word) >> 24); \ + check = crc32(check, hbuf, 4); \ + } while (0) +#endif + +/* Load registers with state in inflate() for speed */ +#define LOAD() \ + do { \ + put = strm->next_out; \ + left = strm->avail_out; \ + next = strm->next_in; \ + have = strm->avail_in; \ + hold = state->hold; \ + bits = state->bits; \ + } while (0) + +/* Restore state from registers in inflate() */ +#define RESTORE() \ + do { \ + strm->next_out = put; \ + strm->avail_out = left; \ + strm->next_in = next; \ + strm->avail_in = have; \ + state->hold = hold; \ + state->bits = bits; \ + } while (0) + +/* Clear the input bit accumulator */ +#define INITBITS() \ + do { \ + hold = 0; \ + bits = 0; \ + } while (0) + +/* Get a byte of input into the bit accumulator, or return from inflate() + if there is no input available. */ +#define PULLBYTE() \ + do { \ + if (have == 0) goto inf_leave; \ + have--; \ + hold += (unsigned long)(*next++) << bits; \ + bits += 8; \ + } while (0) + +/* Assure that there are at least n bits in the bit accumulator. If there is + not enough available input to do that, then return from inflate(). */ +#define NEEDBITS(n) \ + do { \ + while (bits < (unsigned)(n)) \ + PULLBYTE(); \ + } while (0) + +/* Return the low n bits of the bit accumulator (n < 16) */ +#define BITS(n) \ + ((unsigned)hold & ((1U << (n)) - 1)) + +/* Remove n bits from the bit accumulator */ +#define DROPBITS(n) \ + do { \ + hold >>= (n); \ + bits -= (unsigned)(n); \ + } while (0) + +/* Remove zero to seven bits as needed to go to a byte boundary */ +#define BYTEBITS() \ + do { \ + hold >>= bits & 7; \ + bits -= bits & 7; \ + } while (0) + +/* Reverse the bytes in a 32-bit value */ +#define REVERSE(q) \ + ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \ + (((q) & 0xff00) << 8) + (((q) & 0xff) << 24)) + +/* + inflate() uses a state machine to process as much input data and generate as + much output data as possible before returning. The state machine is + structured roughly as follows: + + for (;;) switch (state) { + ... + case STATEn: + if (not enough input data or output space to make progress) + return; + ... make progress ... + state = STATEm; + break; + ... + } + + so when inflate() is called again, the same case is attempted again, and + if the appropriate resources are provided, the machine proceeds to the + next state. The NEEDBITS() macro is usually the way the state evaluates + whether it can proceed or should return. NEEDBITS() does the return if + the requested bits are not available. The typical use of the BITS macros + is: + + NEEDBITS(n); + ... do something with BITS(n) ... + DROPBITS(n); + + where NEEDBITS(n) either returns from inflate() if there isn't enough + input left to load n bits into the accumulator, or it continues. BITS(n) + gives the low n bits in the accumulator. When done, DROPBITS(n) drops + the low n bits off the accumulator. INITBITS() clears the accumulator + and sets the number of available bits to zero. BYTEBITS() discards just + enough bits to put the accumulator on a byte boundary. After BYTEBITS() + and a NEEDBITS(8), then BITS(8) would return the next byte in the stream. + + NEEDBITS(n) uses PULLBYTE() to get an available byte of input, or to return + if there is no input available. The decoding of variable length codes uses + PULLBYTE() directly in order to pull just enough bytes to decode the next + code, and no more. + + Some states loop until they get enough input, making sure that enough + state information is maintained to continue the loop where it left off + if NEEDBITS() returns in the loop. For example, want, need, and keep + would all have to actually be part of the saved state in case NEEDBITS() + returns: + + case STATEw: + while (want < need) { + NEEDBITS(n); + keep[want++] = BITS(n); + DROPBITS(n); + } + state = STATEx; + case STATEx: + + As shown above, if the next state is also the next case, then the break + is omitted. + + A state may also return if there is not enough output space available to + complete that state. Those states are copying stored data, writing a + literal byte, and copying a matching string. + + When returning, a "goto inf_leave" is used to update the total counters, + update the check value, and determine whether any progress has been made + during that inflate() call in order to return the proper return code. + Progress is defined as a change in either strm->avail_in or strm->avail_out. + When there is a window, goto inf_leave will update the window with the last + output written. If a goto inf_leave occurs in the middle of decompression + and there is no window currently, goto inf_leave will create one and copy + output to the window for the next call of inflate(). + + In _this implementation, the flush parameter of inflate() only affects the + return code (per zlib.h). inflate() always writes as much as possible to + strm->next_out, given the space available and the provided input--the effect + documented in zlib.h of Z_SYNC_FLUSH. Furthermore, inflate() always defers + the allocation of and copying into a sliding window until necessary, which + provides the effect documented in zlib.h for Z_FINISH when the entire input + stream available. So the only thing the flush parameter actually does is: + when flush is set to Z_FINISH, inflate() cannot return Z_OK. Instead it + will return Z_BUF_ERROR if it has not reached the end of the stream. + */ + +int ZEXPORT inflate(//strm, flush) +z_streamp strm, +int flush) +{ + struct inflate_state FAR *state; + unsigned char FAR *next; /* next input */ + unsigned char FAR *put; /* next output */ + unsigned have, left; /* available input and output */ + unsigned long hold; /* bit buffer */ + unsigned bits; /* bits in bit buffer */ + unsigned in, out; /* save starting available input and output */ + unsigned copy; /* number of stored or match bytes to copy */ + unsigned char FAR *from; /* where to copy match bytes from */ + code _this; /* current decoding table entry */ + code last; /* parent table entry */ + unsigned len; /* length to copy for repeats, bits to drop */ + int ret; /* return code */ +#ifdef GUNZIP + unsigned char hbuf[4]; /* buffer for gzip header crc calculation */ +#endif + static const unsigned short order[19] = /* permutation of code lengths */ + {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; + + if (strm == Z_NULL || strm->state == Z_NULL || strm->next_out == Z_NULL || + (strm->next_in == Z_NULL && strm->avail_in != 0)) + return Z_STREAM_ERROR; + + state = (struct inflate_state FAR *)strm->state; + if (state->mode == TYPE) state->mode = TYPEDO; /* skip check */ + LOAD(); + in = have; + out = left; + ret = Z_OK; + for (;;) + switch (state->mode) { + case HEAD: + if (state->wrap == 0) { + state->mode = TYPEDO; + break; + } + NEEDBITS(16); +#ifdef GUNZIP + if ((state->wrap & 2) && hold == 0x8b1f) { /* gzip header */ + state->check = crc32(0L, Z_NULL, 0); + CRC2(state->check, hold); + INITBITS(); + state->mode = FLAGS; + break; + } + state->flags = 0; /* expect zlib header */ + if (state->head != Z_NULL) + state->head->done = -1; + if (!(state->wrap & 1) || /* check if zlib header allowed */ +#else + if ( +#endif + ((BITS(8) << 8) + (hold >> 8)) % 31) { + strm->msg = (char *)"incorrect header check"; + state->mode = BAD; + break; + } + if (BITS(4) != Z_DEFLATED) { + strm->msg = (char *)"unknown compression method"; + state->mode = BAD; + break; + } + DROPBITS(4); + len = BITS(4) + 8; + if (len > state->wbits) { + strm->msg = (char *)"invalid window size"; + state->mode = BAD; + break; + } + state->dmax = 1U << len; + Tracev((stderr, "inflate: zlib header ok\n")); + strm->adler = state->check = adler32(0L, Z_NULL, 0); + state->mode = hold & 0x200 ? DICTID : TYPE; + INITBITS(); + break; +#ifdef GUNZIP + case FLAGS: + NEEDBITS(16); + state->flags = (int)(hold); + if ((state->flags & 0xff) != Z_DEFLATED) { + strm->msg = (char *)"unknown compression method"; + state->mode = BAD; + break; + } + if (state->flags & 0xe000) { + strm->msg = (char *)"unknown header flags set"; + state->mode = BAD; + break; + } + if (state->head != Z_NULL) + state->head->text = (int)((hold >> 8) & 1); + if (state->flags & 0x0200) CRC2(state->check, hold); + INITBITS(); + state->mode = TIME; + case TIME: + NEEDBITS(32); + if (state->head != Z_NULL) + state->head->time = hold; + if (state->flags & 0x0200) CRC4(state->check, hold); + INITBITS(); + state->mode = OS; + case OS: + NEEDBITS(16); + if (state->head != Z_NULL) { + state->head->xflags = (int)(hold & 0xff); + state->head->os = (int)(hold >> 8); + } + if (state->flags & 0x0200) CRC2(state->check, hold); + INITBITS(); + state->mode = EXLEN; + case EXLEN: + if (state->flags & 0x0400) { + NEEDBITS(16); + state->length = (unsigned)(hold); + if (state->head != Z_NULL) + state->head->extra_len = (unsigned)hold; + if (state->flags & 0x0200) CRC2(state->check, hold); + INITBITS(); + } + else if (state->head != Z_NULL) + state->head->extra = Z_NULL; + state->mode = EXTRA; + case EXTRA: + if (state->flags & 0x0400) { + copy = state->length; + if (copy > have) copy = have; + if (copy) { + if (state->head != Z_NULL && + state->head->extra != Z_NULL) { + len = state->head->extra_len - state->length; + zmemcpy(state->head->extra + len, next, + len + copy > state->head->extra_max ? + state->head->extra_max - len : copy); + } + if (state->flags & 0x0200) + state->check = crc32(state->check, next, copy); + have -= copy; + next += copy; + state->length -= copy; + } + if (state->length) goto inf_leave; + } + state->length = 0; + state->mode = NAME; + case NAME: + if (state->flags & 0x0800) { + if (have == 0) goto inf_leave; + copy = 0; + do { + len = (unsigned)(next[copy++]); + if (state->head != Z_NULL && + state->head->name != Z_NULL && + state->length < state->head->name_max) + state->head->name[state->length++] = len; + } while (len && copy < have); + if (state->flags & 0x0200) + state->check = crc32(state->check, next, copy); + have -= copy; + next += copy; + if (len) goto inf_leave; + } + else if (state->head != Z_NULL) + state->head->name = Z_NULL; + state->length = 0; + state->mode = COMMENT; + case COMMENT: + if (state->flags & 0x1000) { + if (have == 0) goto inf_leave; + copy = 0; + do { + len = (unsigned)(next[copy++]); + if (state->head != Z_NULL && + state->head->comment != Z_NULL && + state->length < state->head->comm_max) + state->head->comment[state->length++] = len; + } while (len && copy < have); + if (state->flags & 0x0200) + state->check = crc32(state->check, next, copy); + have -= copy; + next += copy; + if (len) goto inf_leave; + } + else if (state->head != Z_NULL) + state->head->comment = Z_NULL; + state->mode = HCRC; + case HCRC: + if (state->flags & 0x0200) { + NEEDBITS(16); + if (hold != (state->check & 0xffff)) { + strm->msg = (char *)"header crc mismatch"; + state->mode = BAD; + break; + } + INITBITS(); + } + if (state->head != Z_NULL) { + state->head->hcrc = (int)((state->flags >> 9) & 1); + state->head->done = 1; + } + strm->adler = state->check = crc32(0L, Z_NULL, 0); + state->mode = TYPE; + break; +#endif + case DICTID: + NEEDBITS(32); + strm->adler = state->check = REVERSE(hold); + INITBITS(); + state->mode = DICT; + case DICT: + if (state->havedict == 0) { + RESTORE(); + return Z_NEED_DICT; + } + strm->adler = state->check = adler32(0L, Z_NULL, 0); + state->mode = TYPE; + case TYPE: + if (flush == Z_BLOCK) goto inf_leave; + case TYPEDO: + if (state->last) { + BYTEBITS(); + state->mode = CHECK; + break; + } + NEEDBITS(3); + state->last = BITS(1); + DROPBITS(1); + switch (BITS(2)) { + case 0: /* stored block */ + Tracev((stderr, "inflate: stored block%s\n", + state->last ? " (last)" : "")); + state->mode = STORED; + break; + case 1: /* fixed block */ + fixedtables(state); + Tracev((stderr, "inflate: fixed codes block%s\n", + state->last ? " (last)" : "")); + state->mode = LEN; /* decode codes */ + break; + case 2: /* dynamic block */ + Tracev((stderr, "inflate: dynamic codes block%s\n", + state->last ? " (last)" : "")); + state->mode = TABLE; + break; + case 3: + strm->msg = (char *)"invalid block type"; + state->mode = BAD; + } + DROPBITS(2); + break; + case STORED: + BYTEBITS(); /* go to byte boundary */ + NEEDBITS(32); + if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { + strm->msg = (char *)"invalid stored block lengths"; + state->mode = BAD; + break; + } + state->length = (unsigned)hold & 0xffff; + Tracev((stderr, "inflate: stored length %u\n", + state->length)); + INITBITS(); + state->mode = COPY; + case COPY: + copy = state->length; + if (copy) { + if (copy > have) copy = have; + if (copy > left) copy = left; + if (copy == 0) goto inf_leave; + zmemcpy(put, next, copy); + have -= copy; + next += copy; + left -= copy; + put += copy; + state->length -= copy; + break; + } + Tracev((stderr, "inflate: stored end\n")); + state->mode = TYPE; + break; + case TABLE: + NEEDBITS(14); + state->nlen = BITS(5) + 257; + DROPBITS(5); + state->ndist = BITS(5) + 1; + DROPBITS(5); + state->ncode = BITS(4) + 4; + DROPBITS(4); +#ifndef PKZIP_BUG_WORKAROUND + if (state->nlen > 286 || state->ndist > 30) { + strm->msg = (char *)"too many length or distance symbols"; + state->mode = BAD; + break; + } +#endif + Tracev((stderr, "inflate: table sizes ok\n")); + state->have = 0; + state->mode = LENLENS; + case LENLENS: + while (state->have < state->ncode) { + NEEDBITS(3); + state->lens[order[state->have++]] = (unsigned short)BITS(3); + DROPBITS(3); + } + while (state->have < 19) + state->lens[order[state->have++]] = 0; + state->next = state->codes; + state->lencode = (code const FAR *)(state->next); + state->lenbits = 7; + ret = inflate_table(CODES, state->lens, 19, &(state->next), + &(state->lenbits), state->work); + if (ret) { + strm->msg = (char *)"invalid code lengths set"; + state->mode = BAD; + break; + } + Tracev((stderr, "inflate: code lengths ok\n")); + state->have = 0; + state->mode = CODELENS; + case CODELENS: + while (state->have < state->nlen + state->ndist) { + for (;;) { + _this = state->lencode[BITS(state->lenbits)]; + if ((unsigned)(_this.bits) <= bits) break; + PULLBYTE(); + } + if (_this.val < 16) { + NEEDBITS(_this.bits); + DROPBITS(_this.bits); + state->lens[state->have++] = _this.val; + } + else { + if (_this.val == 16) { + NEEDBITS(_this.bits + 2); + DROPBITS(_this.bits); + if (state->have == 0) { + strm->msg = (char *)"invalid bit length repeat"; + state->mode = BAD; + break; + } + len = state->lens[state->have - 1]; + copy = 3 + BITS(2); + DROPBITS(2); + } + else if (_this.val == 17) { + NEEDBITS(_this.bits + 3); + DROPBITS(_this.bits); + len = 0; + copy = 3 + BITS(3); + DROPBITS(3); + } + else { + NEEDBITS(_this.bits + 7); + DROPBITS(_this.bits); + len = 0; + copy = 11 + BITS(7); + DROPBITS(7); + } + if (state->have + copy > state->nlen + state->ndist) { + strm->msg = (char *)"invalid bit length repeat"; + state->mode = BAD; + break; + } + while (copy--) + state->lens[state->have++] = (unsigned short)len; + } + } + + /* handle error breaks in while */ + if (state->mode == BAD) break; + + /* build code tables */ + state->next = state->codes; + state->lencode = (code const FAR *)(state->next); + state->lenbits = 9; + ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), + &(state->lenbits), state->work); + if (ret) { + strm->msg = (char *)"invalid literal/lengths set"; + state->mode = BAD; + break; + } + state->distcode = (code const FAR *)(state->next); + state->distbits = 6; + ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, + &(state->next), &(state->distbits), state->work); + if (ret) { + strm->msg = (char *)"invalid distances set"; + state->mode = BAD; + break; + } + Tracev((stderr, "inflate: codes ok\n")); + state->mode = LEN; + case LEN: + if (have >= 6 && left >= 258) { + RESTORE(); + inflate_fast(strm, out); + LOAD(); + break; + } + for (;;) { + _this = state->lencode[BITS(state->lenbits)]; + if ((unsigned)(_this.bits) <= bits) break; + PULLBYTE(); + } + if (_this.op && (_this.op & 0xf0) == 0) { + last = _this; + for (;;) { + _this = state->lencode[last.val + + (BITS(last.bits + last.op) >> last.bits)]; + if ((unsigned)(last.bits + _this.bits) <= bits) break; + PULLBYTE(); + } + DROPBITS(last.bits); + } + DROPBITS(_this.bits); + state->length = (unsigned)_this.val; + if ((int)(_this.op) == 0) { + Tracevv((stderr, _this.val >= 0x20 && _this.val < 0x7f ? + "inflate: literal '%c'\n" : + "inflate: literal 0x%02x\n", _this.val)); + state->mode = LIT; + break; + } + if (_this.op & 32) { + Tracevv((stderr, "inflate: end of block\n")); + state->mode = TYPE; + break; + } + if (_this.op & 64) { + strm->msg = (char *)"invalid literal/length code"; + state->mode = BAD; + break; + } + state->extra = (unsigned)(_this.op) & 15; + state->mode = LENEXT; + case LENEXT: + if (state->extra) { + NEEDBITS(state->extra); + state->length += BITS(state->extra); + DROPBITS(state->extra); + } + Tracevv((stderr, "inflate: length %u\n", state->length)); + state->mode = DIST; + case DIST: + for (;;) { + _this = state->distcode[BITS(state->distbits)]; + if ((unsigned)(_this.bits) <= bits) break; + PULLBYTE(); + } + if ((_this.op & 0xf0) == 0) { + last = _this; + for (;;) { + _this = state->distcode[last.val + + (BITS(last.bits + last.op) >> last.bits)]; + if ((unsigned)(last.bits + _this.bits) <= bits) break; + PULLBYTE(); + } + DROPBITS(last.bits); + } + DROPBITS(_this.bits); + if (_this.op & 64) { + strm->msg = (char *)"invalid distance code"; + state->mode = BAD; + break; + } + state->offset = (unsigned)_this.val; + state->extra = (unsigned)(_this.op) & 15; + state->mode = DISTEXT; + case DISTEXT: + if (state->extra) { + NEEDBITS(state->extra); + state->offset += BITS(state->extra); + DROPBITS(state->extra); + } +#ifdef INFLATE_STRICT + if (state->offset > state->dmax) { + strm->msg = (char *)"invalid distance too far back"; + state->mode = BAD; + break; + } +#endif + if (state->offset > state->whave + out - left) { + strm->msg = (char *)"invalid distance too far back"; + state->mode = BAD; + break; + } + Tracevv((stderr, "inflate: distance %u\n", state->offset)); + state->mode = MATCH; + case MATCH: + if (left == 0) goto inf_leave; + copy = out - left; + if (state->offset > copy) { /* copy from window */ + copy = state->offset - copy; + if (copy > state->write) { + copy -= state->write; + from = state->window + (state->wsize - copy); + } + else + from = state->window + (state->write - copy); + if (copy > state->length) copy = state->length; + } + else { /* copy from output */ + from = put - state->offset; + copy = state->length; + } + if (copy > left) copy = left; + left -= copy; + state->length -= copy; + do { + *put++ = *from++; + } while (--copy); + if (state->length == 0) state->mode = LEN; + break; + case LIT: + if (left == 0) goto inf_leave; + *put++ = (unsigned char)(state->length); + left--; + state->mode = LEN; + break; + case CHECK: + if (state->wrap) { + NEEDBITS(32); + out -= left; + strm->total_out += out; + state->total += out; + if (out) + strm->adler = state->check = + UPDATE(state->check, put - out, out); + out = left; + if (( +#ifdef GUNZIP + state->flags ? hold : +#endif + REVERSE(hold)) != state->check) { + strm->msg = (char *)"incorrect data check"; + state->mode = BAD; + break; + } + INITBITS(); + Tracev((stderr, "inflate: check matches trailer\n")); + } +#ifdef GUNZIP + state->mode = LENGTH; + case LENGTH: + if (state->wrap && state->flags) { + NEEDBITS(32); + if (hold != (state->total & 0xffffffffUL)) { + strm->msg = (char *)"incorrect length check"; + state->mode = BAD; + break; + } + INITBITS(); + Tracev((stderr, "inflate: length matches trailer\n")); + } +#endif + state->mode = DONE; + case DONE: + ret = Z_STREAM_END; + goto inf_leave; + case BAD: + ret = Z_DATA_ERROR; + goto inf_leave; + case MEM: + return Z_MEM_ERROR; + case SYNC: + default: + return Z_STREAM_ERROR; + } + + /* + Return from inflate(), updating the total counts and the check value. + If there was no progress during the inflate() call, return a buffer + error. Call updatewindow() to create and/or update the window state. + Note: a memory error from inflate() is non-recoverable. + */ + inf_leave: + RESTORE(); + if (state->wsize || (state->mode < CHECK && out != strm->avail_out)) + if (updatewindow(strm, out)) { + state->mode = MEM; + return Z_MEM_ERROR; + } + in -= strm->avail_in; + out -= strm->avail_out; + strm->total_in += in; + strm->total_out += out; + state->total += out; + if (state->wrap && out) + strm->adler = state->check = + UPDATE(state->check, strm->next_out - out, out); + strm->data_type = state->bits + (state->last ? 64 : 0) + + (state->mode == TYPE ? 128 : 0); + if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK) + ret = Z_BUF_ERROR; + return ret; +} + +int ZEXPORT inflateEnd(//strm) +z_streamp strm) +{ + struct inflate_state FAR *state; + if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0) + return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (state->window != Z_NULL) ZFREE(strm, state->window); + ZFREE(strm, strm->state); + strm->state = Z_NULL; + Tracev((stderr, "inflate: end\n")); + return Z_OK; +} + +int ZEXPORT inflateSetDictionary(//strm, dictionary, dictLength) +z_streamp strm, +const Bytef *dictionary, +uInt dictLength) +{ + struct inflate_state FAR *state; + unsigned long id; + + /* check state */ + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (state->wrap != 0 && state->mode != DICT) + return Z_STREAM_ERROR; + + /* check for correct dictionary id */ + if (state->mode == DICT) { + id = adler32(0L, Z_NULL, 0); + id = adler32(id, dictionary, dictLength); + if (id != state->check) + return Z_DATA_ERROR; + } + + /* copy dictionary to window */ + if (updatewindow(strm, strm->avail_out)) { + state->mode = MEM; + return Z_MEM_ERROR; + } + if (dictLength > state->wsize) { + zmemcpy(state->window, dictionary + dictLength - state->wsize, + state->wsize); + state->whave = state->wsize; + } + else { + zmemcpy(state->window + state->wsize - dictLength, dictionary, + dictLength); + state->whave = dictLength; + } + state->havedict = 1; + Tracev((stderr, "inflate: dictionary set\n")); + return Z_OK; +} + +int ZEXPORT inflateGetHeader(//strm, head) +z_streamp strm, +gz_headerp head) +{ + struct inflate_state FAR *state; + + /* check state */ + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if ((state->wrap & 2) == 0) return Z_STREAM_ERROR; + + /* save header structure */ + state->head = head; + head->done = 0; + return Z_OK; +} + +/* + Search buf[0..len-1] for the pattern: 0, 0, 0xff, 0xff. Return when found + or when out of input. When called, *have is the number of pattern bytes + found in order so far, in 0..3. On return *have is updated to the new + state. If on return *have equals four, then the pattern was found and the + return value is how many bytes were read including the last byte of the + pattern. If *have is less than four, then the pattern has not been found + yet and the return value is len. In the latter case, syncsearch() can be + called again with more data and the *have state. *have is initialized to + zero for the first call. + */ +local unsigned syncsearch(//have, buf, len) +unsigned FAR *have, +unsigned char FAR *buf, +unsigned len) +{ + unsigned got; + unsigned next; + + got = *have; + next = 0; + while (next < len && got < 4) { + if ((int)(buf[next]) == (got < 2 ? 0 : 0xff)) + got++; + else if (buf[next]) + got = 0; + else + got = 4 - got; + next++; + } + *have = got; + return next; +} + +int ZEXPORT inflateSync(//strm) +z_streamp strm) +{ + unsigned len; /* number of bytes to look at or looked at */ + unsigned long in, out; /* temporary to save total_in and total_out */ + unsigned char buf[4]; /* to restore bit buffer to byte string */ + struct inflate_state FAR *state; + + /* check parameters */ + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (strm->avail_in == 0 && state->bits < 8) return Z_BUF_ERROR; + + /* if first time, start search in bit buffer */ + if (state->mode != SYNC) { + state->mode = SYNC; + state->hold <<= state->bits & 7; + state->bits -= state->bits & 7; + len = 0; + while (state->bits >= 8) { + buf[len++] = (unsigned char)(state->hold); + state->hold >>= 8; + state->bits -= 8; + } + state->have = 0; + syncsearch(&(state->have), buf, len); + } + + /* search available input */ + len = syncsearch(&(state->have), strm->next_in, strm->avail_in); + strm->avail_in -= len; + strm->next_in += len; + strm->total_in += len; + + /* return no joy or set up to restart inflate() on a new block */ + if (state->have != 4) return Z_DATA_ERROR; + in = strm->total_in; out = strm->total_out; + inflateReset(strm); + strm->total_in = in; strm->total_out = out; + state->mode = TYPE; + return Z_OK; +} + +/* + Returns true if inflate is currently at the end of a block generated by + Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP + implementation to provide an additional safety check. PPP uses + Z_SYNC_FLUSH but removes the length bytes of the resulting empty stored + block. When decompressing, PPP checks that at the end of input packet, + inflate is waiting for these length bytes. + */ +int ZEXPORT inflateSyncPoint(//strm) +z_streamp strm) +{ + struct inflate_state FAR *state; + + if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + return state->mode == STORED && state->bits == 0; +} + +int ZEXPORT inflateCopy(//dest, source) +z_streamp dest, +z_streamp source) +{ + struct inflate_state FAR *state; + struct inflate_state FAR *copy; + unsigned char FAR *window; + unsigned wsize; + + /* check input */ + if (dest == Z_NULL || source == Z_NULL || source->state == Z_NULL || + source->zalloc == (alloc_func)0 || source->zfree == (free_func)0) + return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)source->state; + + /* allocate space */ + copy = (struct inflate_state FAR *) + ZALLOC(source, 1, sizeof(struct inflate_state)); + if (copy == Z_NULL) return Z_MEM_ERROR; + window = Z_NULL; + if (state->window != Z_NULL) { + window = (unsigned char FAR *) + ZALLOC(source, 1U << state->wbits, sizeof(unsigned char)); + if (window == Z_NULL) { + ZFREE(source, copy); + return Z_MEM_ERROR; + } + } + + /* copy state */ + zmemcpy(dest, source, sizeof(z_stream)); + zmemcpy(copy, state, sizeof(struct inflate_state)); + if (state->lencode >= state->codes && + state->lencode <= state->codes + ENOUGH - 1) { + copy->lencode = copy->codes + (state->lencode - state->codes); + copy->distcode = copy->codes + (state->distcode - state->codes); + } + copy->next = copy->codes + (state->next - state->codes); + if (window != Z_NULL) { + wsize = 1U << state->wbits; + zmemcpy(window, state->window, wsize); + } + copy->window = window; + dest->state = (struct internal_state FAR *)copy; + return Z_OK; +} diff --git a/Libraries/zlib123/inflate.h b/Libraries/zlib123/inflate.h new file mode 100644 index 0000000..fbbc871 --- /dev/null +++ b/Libraries/zlib123/inflate.h @@ -0,0 +1,115 @@ +/* inflate.h -- internal inflate state definition + * Copyright (C) 1995-2004 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* WARNING: this file should *not* be used by applications. It is + part of the implementation of the compression library and is + subject to change. Applications should only use zlib.h. + */ + +/* define NO_GZIP when compiling if you want to disable gzip header and + trailer decoding by inflate(). NO_GZIP would be used to avoid linking in + the crc code when it is not needed. For shared libraries, gzip decoding + should be left enabled. */ +#ifndef NO_GZIP +# define GUNZIP +#endif + +/* Possible inflate modes between inflate() calls */ +typedef enum { + HEAD, /* i: waiting for magic header */ + FLAGS, /* i: waiting for method and flags (gzip) */ + TIME, /* i: waiting for modification time (gzip) */ + OS, /* i: waiting for extra flags and operating system (gzip) */ + EXLEN, /* i: waiting for extra length (gzip) */ + EXTRA, /* i: waiting for extra bytes (gzip) */ + NAME, /* i: waiting for end of file name (gzip) */ + COMMENT, /* i: waiting for end of comment (gzip) */ + HCRC, /* i: waiting for header crc (gzip) */ + DICTID, /* i: waiting for dictionary check value */ + DICT, /* waiting for inflateSetDictionary() call */ + TYPE, /* i: waiting for type bits, including last-flag bit */ + TYPEDO, /* i: same, but skip check to exit inflate on new block */ + STORED, /* i: waiting for stored size (length and complement) */ + COPY, /* i/o: waiting for input or output to copy stored block */ + TABLE, /* i: waiting for dynamic block table lengths */ + LENLENS, /* i: waiting for code length code lengths */ + CODELENS, /* i: waiting for length/lit and distance code lengths */ + LEN, /* i: waiting for length/lit code */ + LENEXT, /* i: waiting for length extra bits */ + DIST, /* i: waiting for distance code */ + DISTEXT, /* i: waiting for distance extra bits */ + MATCH, /* o: waiting for output space to copy string */ + LIT, /* o: waiting for output space to write literal */ + CHECK, /* i: waiting for 32-bit check value */ + LENGTH, /* i: waiting for 32-bit length (gzip) */ + DONE, /* finished check, done -- remain here until reset */ + BAD, /* got a data error -- remain here until reset */ + MEM, /* got an inflate() memory error -- remain here until reset */ + SYNC /* looking for synchronization bytes to restart inflate() */ +} inflate_mode; + +/* + State transitions between above modes - + + (most modes can go to the BAD or MEM mode -- not shown for clarity) + + Process header: + HEAD -> (gzip) or (zlib) + (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME + NAME -> COMMENT -> HCRC -> TYPE + (zlib) -> DICTID or TYPE + DICTID -> DICT -> TYPE + Read deflate blocks: + TYPE -> STORED or TABLE or LEN or CHECK + STORED -> COPY -> TYPE + TABLE -> LENLENS -> CODELENS -> LEN + Read deflate codes: + LEN -> LENEXT or LIT or TYPE + LENEXT -> DIST -> DISTEXT -> MATCH -> LEN + LIT -> LEN + Process trailer: + CHECK -> LENGTH -> DONE + */ + +/* state maintained between inflate() calls. Approximately 7K bytes. */ +struct inflate_state { + inflate_mode mode; /* current inflate mode */ + int last; /* true if processing last block */ + int wrap; /* bit 0 true for zlib, bit 1 true for gzip */ + int havedict; /* true if dictionary provided */ + int flags; /* gzip header method and flags (0 if zlib) */ + unsigned dmax; /* zlib header max distance (INFLATE_STRICT) */ + unsigned long check; /* protected copy of check value */ + unsigned long total; /* protected copy of output count */ + gz_headerp head; /* where to save gzip header information */ + /* sliding window */ + unsigned wbits; /* log base 2 of requested window size */ + unsigned wsize; /* window size or zero if not using window */ + unsigned whave; /* valid bytes in the window */ + unsigned write; /* window write index */ + unsigned char FAR *window; /* allocated sliding window, if needed */ + /* bit accumulator */ + unsigned long hold; /* input bit accumulator */ + unsigned bits; /* number of bits in "in" */ + /* for string and stored block copying */ + unsigned length; /* literal or length of data to copy */ + unsigned offset; /* distance back to copy string from */ + /* for table and code decoding */ + unsigned extra; /* extra bits needed */ + /* fixed and dynamic code tables */ + code const FAR *lencode; /* starting table for length/literal codes */ + code const FAR *distcode; /* starting table for distance codes */ + unsigned lenbits; /* index bits for lencode */ + unsigned distbits; /* index bits for distcode */ + /* dynamic table building */ + unsigned ncode; /* number of code length code lengths */ + unsigned nlen; /* number of length code lengths */ + unsigned ndist; /* number of distance code lengths */ + unsigned have; /* number of code lengths in lens[] */ + code FAR *next; /* next available space in codes[] */ + unsigned short lens[320]; /* temporary storage for code lengths */ + unsigned short work[288]; /* work area for code table building */ + code codes[ENOUGH]; /* space for code tables */ +}; diff --git a/Libraries/zlib123/inftrees.cpp b/Libraries/zlib123/inftrees.cpp new file mode 100644 index 0000000..5923d37 --- /dev/null +++ b/Libraries/zlib123/inftrees.cpp @@ -0,0 +1,329 @@ +/* inftrees.c -- generate Huffman trees for efficient decoding + * Copyright (C) 1995-2005 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#include "zutil.h" +#include "inftrees.h" + +#define MAXBITS 15 + +const char inflate_copyright[] = + " inflate 1.2.3 Copyright 1995-2005 Mark Adler "; +/* + If you use the zlib library in a product, an acknowledgment is welcome + in the documentation of your product. If for some reason you cannot + include such an acknowledgment, I would appreciate that you keep _this + copyright string in the executable of your product. + */ + +/* + Build a set of tables to decode the provided canonical Huffman code. + The code lengths are lens[0..codes-1]. The result starts at *table, + whose indices are 0..2^bits-1. work is a writable array of at least + lens shorts, which is used as a work area. type is the type of code + to be generated, CODES, LENS, or DISTS. On return, zero is success, + -1 is an invalid code, and +1 means that ENOUGH isn't enough. table + on return points to the next available entry's address. bits is the + requested root table index bits, and on return it is the actual root + table index bits. It will differ if the request is greater than the + longest code or if it is less than the shortest code. + */ +int inflate_table(//type, lens, codes, table, bits, work) +codetype type, +unsigned short FAR *lens, +unsigned codes, +code FAR * FAR *table, +unsigned FAR *bits, +unsigned short FAR *work) +{ + unsigned len; /* a code's length in bits */ + unsigned sym; /* index of code symbols */ + unsigned min, max; /* minimum and maximum code lengths */ + unsigned root; /* number of index bits for root table */ + unsigned curr; /* number of index bits for current table */ + unsigned drop; /* code bits to drop for sub-table */ + int left; /* number of prefix codes available */ + unsigned used; /* code entries in table used */ + unsigned huff; /* Huffman code */ + unsigned incr; /* for incrementing code, index */ + unsigned fill; /* index for replicating entries */ + unsigned low; /* low bits for current root entry */ + unsigned mask; /* mask for low root bits */ + code _this; /* table entry for duplication */ + code FAR *next; /* next available space in table */ + const unsigned short FAR *base; /* base value table to use */ + const unsigned short FAR *extra; /* extra bits table to use */ + int end; /* use base and extra for symbol > end */ + unsigned short count[MAXBITS+1]; /* number of codes of each length */ + unsigned short offs[MAXBITS+1]; /* offsets in table for each length */ + static const unsigned short lbase[31] = { /* Length codes 257..285 base */ + 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, + 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; + static const unsigned short lext[31] = { /* Length codes 257..285 extra */ + 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, + 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 201, 196}; + static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ + 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, + 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, + 8193, 12289, 16385, 24577, 0, 0}; + static const unsigned short dext[32] = { /* Distance codes 0..29 extra */ + 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, + 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, + 28, 28, 29, 29, 64, 64}; + + /* + Process a set of code lengths to create a canonical Huffman code. The + code lengths are lens[0..codes-1]. Each length corresponds to the + symbols 0..codes-1. The Huffman code is generated by first sorting the + symbols by length from short to long, and retaining the symbol order + for codes with equal lengths. Then the code starts with all zero bits + for the first code of the shortest length, and the codes are integer + increments for the same length, and zeros are appended as the length + increases. For the deflate format, these bits are stored backwards + from their more natural integer increment ordering, and so when the + decoding tables are built in the large loop below, the integer codes + are incremented backwards. + + This routine assumes, but does not check, that all of the entries in + lens[] are in the range 0..MAXBITS. The caller must assure _this. + 1..MAXBITS is interpreted as that code length. zero means that that + symbol does not occur in _this code. + + The codes are sorted by computing a count of codes for each length, + creating from that a table of starting indices for each length in the + sorted table, and then entering the symbols in order in the sorted + table. The sorted table is work[], with that space being provided by + the caller. + + The length counts are used for other purposes as well, i.e. finding + the minimum and maximum length codes, determining if there are any + codes at all, checking for a valid set of lengths, and looking ahead + at length counts to determine sub-table sizes when building the + decoding tables. + */ + + /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */ + for (len = 0; len <= MAXBITS; len++) + count[len] = 0; + for (sym = 0; sym < codes; sym++) + count[lens[sym]]++; + + /* bound code lengths, force root to be within code lengths */ + root = *bits; + for (max = MAXBITS; max >= 1; max--) + if (count[max] != 0) break; + if (root > max) root = max; + if (max == 0) { /* no symbols to code at all */ + _this.op = (unsigned char)64; /* invalid code marker */ + _this.bits = (unsigned char)1; + _this.val = (unsigned short)0; + *(*table)++ = _this; /* make a table to force an error */ + *(*table)++ = _this; + *bits = 1; + return 0; /* no symbols, but wait for decoding to report error */ + } + for (min = 1; min <= MAXBITS; min++) + if (count[min] != 0) break; + if (root < min) root = min; + + /* check for an over-subscribed or incomplete set of lengths */ + left = 1; + for (len = 1; len <= MAXBITS; len++) { + left <<= 1; + left -= count[len]; + if (left < 0) return -1; /* over-subscribed */ + } + if (left > 0 && (type == CODES || max != 1)) + return -1; /* incomplete set */ + + /* generate offsets into symbol table for each length for sorting */ + offs[1] = 0; + for (len = 1; len < MAXBITS; len++) + offs[len + 1] = offs[len] + count[len]; + + /* sort symbols by length, by symbol order within each length */ + for (sym = 0; sym < codes; sym++) + if (lens[sym] != 0) work[offs[lens[sym]]++] = (unsigned short)sym; + + /* + Create and fill in decoding tables. In _this loop, the table being + filled is at next and has curr index bits. The code being used is huff + with length len. That code is converted to an index by dropping drop + bits off of the bottom. For codes where len is less than drop + curr, + those top drop + curr - len bits are incremented through all values to + fill the table with replicated entries. + + root is the number of index bits for the root table. When len exceeds + root, sub-tables are created pointed to by the root entry with an index + of the low root bits of huff. This is saved in low to check for when a + new sub-table should be started. drop is zero when the root table is + being filled, and drop is root when sub-tables are being filled. + + When a new sub-table is needed, it is necessary to look ahead in the + code lengths to determine what size sub-table is needed. The length + counts are used for _this, and so count[] is decremented as codes are + entered in the tables. + + used keeps track of how many table entries have been allocated from the + provided *table space. It is checked when a LENS table is being made + against the space in *table, ENOUGH, minus the maximum space needed by + the worst case distance code, MAXD. This should never happen, but the + sufficiency of ENOUGH has not been proven exhaustively, hence the check. + This assumes that when type == LENS, bits == 9. + + sym increments through all symbols, and the loop terminates when + all codes of length max, i.e. all codes, have been processed. This + routine permits incomplete codes, so another loop after _this one fills + in the rest of the decoding tables with invalid code markers. + */ + + /* set up for code type */ + switch (type) { + case CODES: + base = extra = work; /* dummy value--not used */ + end = 19; + break; + case LENS: + base = lbase; + base -= 257; + extra = lext; + extra -= 257; + end = 256; + break; + default: /* DISTS */ + base = dbase; + extra = dext; + end = -1; + } + + /* initialize state for loop */ + huff = 0; /* starting code */ + sym = 0; /* starting code symbol */ + len = min; /* starting code length */ + next = *table; /* current table to fill in */ + curr = root; /* current table index bits */ + drop = 0; /* current bits to drop from code for index */ + low = (unsigned)(-1); /* trigger new sub-table when len > root */ + used = 1U << root; /* use root table entries */ + mask = used - 1; /* mask for comparing low */ + + /* check available table space */ + if (type == LENS && used >= ENOUGH - MAXD) + return 1; + + /* process all codes and make table entries */ + for (;;) { + /* create table entry */ + _this.bits = (unsigned char)(len - drop); + if ((int)(work[sym]) < end) { + _this.op = (unsigned char)0; + _this.val = work[sym]; + } + else if ((int)(work[sym]) > end) { + _this.op = (unsigned char)(extra[work[sym]]); + _this.val = base[work[sym]]; + } + else { + _this.op = (unsigned char)(32 + 64); /* end of block */ + _this.val = 0; + } + + /* replicate for those indices with low len bits equal to huff */ + incr = 1U << (len - drop); + fill = 1U << curr; + min = fill; /* save offset to next table */ + do { + fill -= incr; + next[(huff >> drop) + fill] = _this; + } while (fill != 0); + + /* backwards increment the len-bit code huff */ + incr = 1U << (len - 1); + while (huff & incr) + incr >>= 1; + if (incr != 0) { + huff &= incr - 1; + huff += incr; + } + else + huff = 0; + + /* go to next symbol, update count, len */ + sym++; + if (--(count[len]) == 0) { + if (len == max) break; + len = lens[work[sym]]; + } + + /* create new sub-table if needed */ + if (len > root && (huff & mask) != low) { + /* if first time, transition to sub-tables */ + if (drop == 0) + drop = root; + + /* increment past last table */ + next += min; /* here min is 1 << curr */ + + /* determine length of next table */ + curr = len - drop; + left = (int)(1 << curr); + while (curr + drop < max) { + left -= count[curr + drop]; + if (left <= 0) break; + curr++; + left <<= 1; + } + + /* check for enough space */ + used += 1U << curr; + if (type == LENS && used >= ENOUGH - MAXD) + return 1; + + /* point entry in root table to sub-table */ + low = huff & mask; + (*table)[low].op = (unsigned char)curr; + (*table)[low].bits = (unsigned char)root; + (*table)[low].val = (unsigned short)(next - *table); + } + } + + /* + Fill in rest of table for incomplete codes. This loop is similar to the + loop above in incrementing huff for table indices. It is assumed that + len is equal to curr + drop, so there is no loop needed to increment + through high index bits. When the current sub-table is filled, the loop + drops back to the root table to fill in any remaining entries there. + */ + _this.op = (unsigned char)64; /* invalid code marker */ + _this.bits = (unsigned char)(len - drop); + _this.val = (unsigned short)0; + while (huff != 0) { + /* when done with sub-table, drop back to root table */ + if (drop != 0 && (huff & mask) != low) { + drop = 0; + len = root; + next = *table; + _this.bits = (unsigned char)len; + } + + /* put invalid code marker in table */ + next[huff >> drop] = _this; + + /* backwards increment the len-bit code huff */ + incr = 1U << (len - 1); + while (huff & incr) + incr >>= 1; + if (incr != 0) { + huff &= incr - 1; + huff += incr; + } + else + huff = 0; + } + + /* set return parameters */ + *table += used; + *bits = root; + return 0; +} diff --git a/Libraries/zlib123/inftrees.h b/Libraries/zlib123/inftrees.h new file mode 100644 index 0000000..dc0fd56 --- /dev/null +++ b/Libraries/zlib123/inftrees.h @@ -0,0 +1,55 @@ +/* inftrees.h -- header to use inftrees.c + * Copyright (C) 1995-2005 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* WARNING: this file should *not* be used by applications. It is + part of the implementation of the compression library and is + subject to change. Applications should only use zlib.h. + */ + +/* Structure for decoding tables. Each entry provides either the + information needed to do the operation requested by the code that + indexed that table entry, or it provides a pointer to another + table that indexes more bits of the code. op indicates whether + the entry is a pointer to another table, a literal, a length or + distance, an end-of-block, or an invalid code. For a table + pointer, the low four bits of op is the number of index bits of + that table. For a length or distance, the low four bits of op + is the number of extra bits to get after the code. bits is + the number of bits in this code or part of the code to drop off + of the bit buffer. val is the actual byte to output in the case + of a literal, the base length or distance, or the offset from + the current table to the next table. Each entry is four bytes. */ +typedef struct { + unsigned char op; /* operation, extra bits, table bits */ + unsigned char bits; /* bits in this part of the code */ + unsigned short val; /* offset in table or code value */ +} code; + +/* op values as set by inflate_table(): + 00000000 - literal + 0000tttt - table link, tttt != 0 is the number of table index bits + 0001eeee - length or distance, eeee is the number of extra bits + 01100000 - end of block + 01000000 - invalid code + */ + +/* Maximum size of dynamic tree. The maximum found in a long but non- + exhaustive search was 1444 code structures (852 for length/literals + and 592 for distances, the latter actually the result of an + exhaustive search). The true maximum is not known, but the value + below is more than safe. */ +#define ENOUGH 2048 +#define MAXD 592 + +/* Type of code to build for inftable() */ +typedef enum { + CODES, + LENS, + DISTS +} codetype; + +extern int inflate_table OF((codetype type, unsigned short FAR *lens, + unsigned codes, code FAR * FAR *table, + unsigned FAR *bits, unsigned short FAR *work)); diff --git a/Libraries/zlib123/trees.cpp b/Libraries/zlib123/trees.cpp new file mode 100644 index 0000000..d333342 --- /dev/null +++ b/Libraries/zlib123/trees.cpp @@ -0,0 +1,1222 @@ +/* trees.c -- output deflated data using Huffman coding + * Copyright (C) 1995-2005 Jean-loup Gailly + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* + * ALGORITHM + * + * The "deflation" process uses several Huffman trees. The more + * common source values are represented by shorter bit sequences. + * + * Each code tree is stored in a compressed form which is itself + * a Huffman encoding of the lengths of all the code strings (in + * ascending order by source values). The actual code strings are + * reconstructed from the lengths in the inflate process, as described + * in the deflate specification. + * + * REFERENCES + * + * Deutsch, L.P.,"'Deflate' Compressed Data Format Specification". + * Available in ftp.uu.net:/pub/archiving/zip/doc/deflate-1.1.doc + * + * Storer, James A. + * Data Compression: Methods and Theory, pp. 49-50. + * Computer Science Press, 1988. ISBN 0-7167-8156-5. + * + * Sedgewick, R. + * Algorithms, p290. + * Addison-Wesley, 1983. ISBN 0-201-06672-6. + */ + +/* @(#) $Id$ */ + +/* #define GEN_TREES_H */ + +#include "deflate.h" + +#ifdef DEBUG +# include +#endif + +/* =========================================================================== + * Constants + */ + +#define MAX_BL_BITS 7 +/* Bit length codes must not exceed MAX_BL_BITS bits */ + +#define END_BLOCK 256 +/* end of block literal code */ + +#define REP_3_6 16 +/* repeat previous bit length 3-6 times (2 bits of repeat count) */ + +#define REPZ_3_10 17 +/* repeat a zero length 3-10 times (3 bits of repeat count) */ + +#define REPZ_11_138 18 +/* repeat a zero length 11-138 times (7 bits of repeat count) */ + +local const int extra_lbits[LENGTH_CODES] /* extra bits for each length code */ + = {0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0}; + +local const int extra_dbits[D_CODES] /* extra bits for each distance code */ + = {0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13}; + +local const int extra_blbits[BL_CODES]/* extra bits for each bit length code */ + = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7}; + +local const uch bl_order[BL_CODES] + = {16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15}; +/* The lengths of the bit length codes are sent in order of decreasing + * probability, to avoid transmitting the lengths for unused bit length codes. + */ + +#define Buf_size (8 * 2*sizeof(char)) +/* Number of bits used within bi_buf. (bi_buf might be implemented on + * more than 16 bits on some systems.) + */ + +/* =========================================================================== + * Local data. These are initialized only once. + */ + +#define DIST_CODE_LEN 512 /* see definition of array dist_code below */ + +#if defined(GEN_TREES_H) || !defined(STDC) +/* non ANSI compilers may not accept trees.h */ + +local ct_data static_ltree[L_CODES+2]; +/* The static literal tree. Since the bit lengths are imposed, there is no + * need for the L_CODES extra codes used during heap construction. However + * The codes 286 and 287 are needed to build a canonical tree (see _tr_init + * below). + */ + +local ct_data static_dtree[D_CODES]; +/* The static distance tree. (Actually a trivial tree since all codes use + * 5 bits.) + */ + +uch _dist_code[DIST_CODE_LEN]; +/* Distance codes. The first 256 values correspond to the distances + * 3 .. 258, the last 256 values correspond to the top 8 bits of + * the 15 bit distances. + */ + +uch _length_code[MAX_MATCH-MIN_MATCH+1]; +/* length code for each normalized match length (0 == MIN_MATCH) */ + +local int base_length[LENGTH_CODES]; +/* First normalized length for each code (0 = MIN_MATCH) */ + +local int base_dist[D_CODES]; +/* First normalized distance for each code (0 = distance of 1) */ + +#else +# include "trees.h" +#endif /* GEN_TREES_H */ + +struct static_tree_desc_s { + const ct_data *static_tree; /* static tree or NULL */ + const intf *extra_bits; /* extra bits for each code or NULL */ + int extra_base; /* base index for extra_bits */ + int elems; /* max number of elements in the tree */ + int max_length; /* max bit length for the codes */ +}; + +local static_tree_desc static_l_desc = +{static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS}; + +local static_tree_desc static_d_desc = +{static_dtree, extra_dbits, 0, D_CODES, MAX_BITS}; + +local static_tree_desc static_bl_desc = +{(const ct_data *)0, extra_blbits, 0, BL_CODES, MAX_BL_BITS}; + +/* =========================================================================== + * Local (static) routines in this file. + */ + +local void tr_static_init OF((void)); +local void init_block OF((deflate_state *s)); +local void pqdownheap OF((deflate_state *s, ct_data *tree, int k)); +local void gen_bitlen OF((deflate_state *s, tree_desc *desc)); +local void gen_codes OF((ct_data *tree, int max_code, ushf *bl_count)); +local void build_tree OF((deflate_state *s, tree_desc *desc)); +local void scan_tree OF((deflate_state *s, ct_data *tree, int max_code)); +local void send_tree OF((deflate_state *s, ct_data *tree, int max_code)); +local int build_bl_tree OF((deflate_state *s)); +local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes, + int blcodes)); +local void compress_block OF((deflate_state *s, ct_data *ltree, + ct_data *dtree)); +local void set_data_type OF((deflate_state *s)); +local unsigned bi_reverse OF((unsigned value, int length)); +local void bi_windup OF((deflate_state *s)); +local void bi_flush OF((deflate_state *s)); +local void copy_block OF((deflate_state *s, charf *buf, unsigned len, + int header)); + +#ifdef GEN_TREES_H +local void gen_trees_header OF((void)); +#endif + +#ifndef DEBUG +# define send_code(s, c, tree) send_bits(s, tree[c].Code, tree[c].Len) + /* Send a code of the given tree. c and tree must not have side effects */ + +#else /* DEBUG */ +# define send_code(s, c, tree) \ + { if (z_verbose>2) fprintf(stderr,"\ncd %3d ",(c)); \ + send_bits(s, tree[c].Code, tree[c].Len); } +#endif + +/* =========================================================================== + * Output a short LSB first on the stream. + * IN assertion: there is enough room in pendingBuf. + */ +#define put_short(s, w) { \ + put_byte(s, (uch)((w) & 0xff)); \ + put_byte(s, (uch)((ush)(w) >> 8)); \ +} + +/* =========================================================================== + * Send a value on a given number of bits. + * IN assertion: length <= 16 and value fits in length bits. + */ +#ifdef DEBUG +local void send_bits OF((deflate_state *s, int value, int length)) +/* +local void send_bits(s, value, length) + deflate_state *s; + int value; // value to send + int length; // number of bits +*/ +{ + Tracevv((stderr," l %2d v %4x ", length, value)); + Assert(length > 0 && length <= 15, "invalid length"); + s->bits_sent += (ulg)length; + + /* If not enough room in bi_buf, use (valid) bits from bi_buf and + * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid)) + * unused bits in value. + */ + if (s->bi_valid > (int)Buf_size - length) { + s->bi_buf |= (value << s->bi_valid); + put_short(s, s->bi_buf); + s->bi_buf = (ush)value >> (Buf_size - s->bi_valid); + s->bi_valid += length - Buf_size; + } else { + s->bi_buf |= value << s->bi_valid; + s->bi_valid += length; + } +} +#else /* !DEBUG */ + +#define send_bits(s, value, length) \ +{ int len = length;\ + if (s->bi_valid > (int)Buf_size - len) {\ + int val = value;\ + s->bi_buf |= (val << s->bi_valid);\ + put_short(s, s->bi_buf);\ + s->bi_buf = (ush)val >> (Buf_size - s->bi_valid);\ + s->bi_valid += len - Buf_size;\ + } else {\ + s->bi_buf |= (value) << s->bi_valid;\ + s->bi_valid += len;\ + }\ +} +#endif /* DEBUG */ + + +/* the arguments must not have side effects */ + +/* =========================================================================== + * Initialize the various 'constant' tables. + */ +local void tr_static_init() +{ +#if defined(GEN_TREES_H) || !defined(STDC) + static int static_init_done = 0; + int n; /* iterates over tree elements */ + int bits; /* bit counter */ + int length; /* length value */ + int code; /* code value */ + int dist; /* distance index */ + ush bl_count[MAX_BITS+1]; + /* number of codes at each bit length for an optimal tree */ + + if (static_init_done) return; + + /* For some embedded targets, global variables are not initialized: */ + static_l_desc.static_tree = static_ltree; + static_l_desc.extra_bits = extra_lbits; + static_d_desc.static_tree = static_dtree; + static_d_desc.extra_bits = extra_dbits; + static_bl_desc.extra_bits = extra_blbits; + + /* Initialize the mapping length (0..255) -> length code (0..28) */ + length = 0; + for (code = 0; code < LENGTH_CODES-1; code++) { + base_length[code] = length; + for (n = 0; n < (1< dist code (0..29) */ + dist = 0; + for (code = 0 ; code < 16; code++) { + base_dist[code] = dist; + for (n = 0; n < (1<>= 7; /* from now on, all distances are divided by 128 */ + for ( ; code < D_CODES; code++) { + base_dist[code] = dist << 7; + for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) { + _dist_code[256 + dist++] = (uch)code; + } + } + Assert (dist == 256, "tr_static_init: 256+dist != 512"); + + /* Construct the codes of the static literal tree */ + for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0; + n = 0; + while (n <= 143) static_ltree[n++].Len = 8, bl_count[8]++; + while (n <= 255) static_ltree[n++].Len = 9, bl_count[9]++; + while (n <= 279) static_ltree[n++].Len = 7, bl_count[7]++; + while (n <= 287) static_ltree[n++].Len = 8, bl_count[8]++; + /* Codes 286 and 287 do not exist, but we must include them in the + * tree construction to get a canonical Huffman tree (longest code + * all ones) + */ + gen_codes((ct_data *)static_ltree, L_CODES+1, bl_count); + + /* The static distance tree is trivial: */ + for (n = 0; n < D_CODES; n++) { + static_dtree[n].Len = 5; + static_dtree[n].Code = bi_reverse((unsigned)n, 5); + } + static_init_done = 1; + +# ifdef GEN_TREES_H + gen_trees_header(); +# endif +#endif /* defined(GEN_TREES_H) || !defined(STDC) */ +} + +/* =========================================================================== + * Genererate the file trees.h describing the static trees. + */ +#ifdef GEN_TREES_H +# ifndef DEBUG +# include +# endif + +# define SEPARATOR(i, last, width) \ + ((i) == (last)? "\n};\n\n" : \ + ((i) % (width) == (width)-1 ? ",\n" : ", ")) + +void gen_trees_header() +{ + FILE *header = fopen("trees.h", "w"); + int i; + + Assert (header != NULL, "Can't open trees.h"); + fprintf(header, + "/* header created automatically with -DGEN_TREES_H */\n\n"); + + fprintf(header, "local const ct_data static_ltree[L_CODES+2] = {\n"); + for (i = 0; i < L_CODES+2; i++) { + fprintf(header, "{{%3u},{%3u}}%s", static_ltree[i].Code, + static_ltree[i].Len, SEPARATOR(i, L_CODES+1, 5)); + } + + fprintf(header, "local const ct_data static_dtree[D_CODES] = {\n"); + for (i = 0; i < D_CODES; i++) { + fprintf(header, "{{%2u},{%2u}}%s", static_dtree[i].Code, + static_dtree[i].Len, SEPARATOR(i, D_CODES-1, 5)); + } + + fprintf(header, "const uch _dist_code[DIST_CODE_LEN] = {\n"); + for (i = 0; i < DIST_CODE_LEN; i++) { + fprintf(header, "%2u%s", _dist_code[i], + SEPARATOR(i, DIST_CODE_LEN-1, 20)); + } + + fprintf(header, "const uch _length_code[MAX_MATCH-MIN_MATCH+1]= {\n"); + for (i = 0; i < MAX_MATCH-MIN_MATCH+1; i++) { + fprintf(header, "%2u%s", _length_code[i], + SEPARATOR(i, MAX_MATCH-MIN_MATCH, 20)); + } + + fprintf(header, "local const int base_length[LENGTH_CODES] = {\n"); + for (i = 0; i < LENGTH_CODES; i++) { + fprintf(header, "%1u%s", base_length[i], + SEPARATOR(i, LENGTH_CODES-1, 20)); + } + + fprintf(header, "local const int base_dist[D_CODES] = {\n"); + for (i = 0; i < D_CODES; i++) { + fprintf(header, "%5u%s", base_dist[i], + SEPARATOR(i, D_CODES-1, 10)); + } + + fclose(header); +} +#endif /* GEN_TREES_H */ + +/* =========================================================================== + * Initialize the tree data structures for a new zlib stream. + */ +void _tr_init(//s) + deflate_state *s) +{ + tr_static_init(); + + s->l_desc.dyn_tree = s->dyn_ltree; + s->l_desc.stat_desc = &static_l_desc; + + s->d_desc.dyn_tree = s->dyn_dtree; + s->d_desc.stat_desc = &static_d_desc; + + s->bl_desc.dyn_tree = s->bl_tree; + s->bl_desc.stat_desc = &static_bl_desc; + + s->bi_buf = 0; + s->bi_valid = 0; + s->last_eob_len = 8; /* enough lookahead for inflate */ +#ifdef DEBUG + s->compressed_len = 0L; + s->bits_sent = 0L; +#endif + + /* Initialize the first block of the first file: */ + init_block(s); +} + +/* =========================================================================== + * Initialize a new block. + */ +local void init_block(//s) + deflate_state *s) +{ + int n; /* iterates over tree elements */ + + /* Initialize the trees. */ + for (n = 0; n < L_CODES; n++) s->dyn_ltree[n].Freq = 0; + for (n = 0; n < D_CODES; n++) s->dyn_dtree[n].Freq = 0; + for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0; + + s->dyn_ltree[END_BLOCK].Freq = 1; + s->opt_len = s->static_len = 0L; + s->last_lit = s->matches = 0; +} + +#define SMALLEST 1 +/* Index within the heap array of least frequent node in the Huffman tree */ + + +/* =========================================================================== + * Remove the smallest element from the heap and recreate the heap with + * one less element. Updates heap and heap_len. + */ +#define pqremove(s, tree, top) \ +{\ + top = s->heap[SMALLEST]; \ + s->heap[SMALLEST] = s->heap[s->heap_len--]; \ + pqdownheap(s, tree, SMALLEST); \ +} + +/* =========================================================================== + * Compares to subtrees, using the tree depth as tie breaker when + * the subtrees have equal frequency. This minimizes the worst case length. + */ +#define smaller(tree, n, m, depth) \ + (tree[n].Freq < tree[m].Freq || \ + (tree[n].Freq == tree[m].Freq && depth[n] <= depth[m])) + +/* =========================================================================== + * Restore the heap property by moving down the tree starting at node k, + * exchanging a node with the smallest of its two sons if necessary, stopping + * when the heap property is re-established (each father smaller than its + * two sons). + */ +local void pqdownheap(//s, tree, k) + deflate_state *s, + ct_data *tree, /* the tree to restore */ + int k) /* node to move down */ +{ + int v = s->heap[k]; + int j = k << 1; /* left son of k */ + while (j <= s->heap_len) { + /* Set j to the smallest of the two sons: */ + if (j < s->heap_len && + smaller(tree, s->heap[j+1], s->heap[j], s->depth)) { + j++; + } + /* Exit if v is smaller than both sons */ + if (smaller(tree, v, s->heap[j], s->depth)) break; + + /* Exchange v with the smallest son */ + s->heap[k] = s->heap[j]; k = j; + + /* And continue down the tree, setting j to the left son of k */ + j <<= 1; + } + s->heap[k] = v; +} + +/* =========================================================================== + * Compute the optimal bit lengths for a tree and update the total bit length + * for the current block. + * IN assertion: the fields freq and dad are set, heap[heap_max] and + * above are the tree nodes sorted by increasing frequency. + * OUT assertions: the field len is set to the optimal bit length, the + * array bl_count contains the frequencies for each bit length. + * The length opt_len is updated; static_len is also updated if stree is + * not null. + */ +local void gen_bitlen(//s, desc) + deflate_state *s, + tree_desc *desc) /* the tree descriptor */ +{ + ct_data *tree = desc->dyn_tree; + int max_code = desc->max_code; + const ct_data *stree = desc->stat_desc->static_tree; + const intf *extra = desc->stat_desc->extra_bits; + int base = desc->stat_desc->extra_base; + int max_length = desc->stat_desc->max_length; + int h; /* heap index */ + int n, m; /* iterate over the tree elements */ + int bits; /* bit length */ + int xbits; /* extra bits */ + ush f; /* frequency */ + int overflow = 0; /* number of elements with bit length too large */ + + for (bits = 0; bits <= MAX_BITS; bits++) s->bl_count[bits] = 0; + + /* In a first pass, compute the optimal bit lengths (which may + * overflow in the case of the bit length tree). + */ + tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */ + + for (h = s->heap_max+1; h < HEAP_SIZE; h++) { + n = s->heap[h]; + bits = tree[tree[n].Dad].Len + 1; + if (bits > max_length) bits = max_length, overflow++; + tree[n].Len = (ush)bits; + /* We overwrite tree[n].Dad which is no longer needed */ + + if (n > max_code) continue; /* not a leaf node */ + + s->bl_count[bits]++; + xbits = 0; + if (n >= base) xbits = extra[n-base]; + f = tree[n].Freq; + s->opt_len += (ulg)f * (bits + xbits); + if (stree) s->static_len += (ulg)f * (stree[n].Len + xbits); + } + if (overflow == 0) return; + + Trace((stderr,"\nbit length overflow\n")); + /* This happens for example on obj2 and pic of the Calgary corpus */ + + /* Find the first bit length which could increase: */ + do { + bits = max_length-1; + while (s->bl_count[bits] == 0) bits--; + s->bl_count[bits]--; /* move one leaf down the tree */ + s->bl_count[bits+1] += 2; /* move one overflow item as its brother */ + s->bl_count[max_length]--; + /* The brother of the overflow item also moves one step up, + * but this does not affect bl_count[max_length] + */ + overflow -= 2; + } while (overflow > 0); + + /* Now recompute all bit lengths, scanning in increasing frequency. + * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all + * lengths instead of fixing only the wrong ones. This idea is taken + * from 'ar' written by Haruhiko Okumura.) + */ + for (bits = max_length; bits != 0; bits--) { + n = s->bl_count[bits]; + while (n != 0) { + m = s->heap[--h]; + if (m > max_code) continue; + if ((unsigned) tree[m].Len != (unsigned) bits) { + Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits)); + s->opt_len += ((long)bits - (long)tree[m].Len) + *(long)tree[m].Freq; + tree[m].Len = (ush)bits; + } + n--; + } + } +} + +/* =========================================================================== + * Generate the codes for a given tree and bit counts (which need not be + * optimal). + * IN assertion: the array bl_count contains the bit length statistics for + * the given tree and the field len is set for all tree elements. + * OUT assertion: the field code is set for all tree elements of non + * zero code length. + */ +local void gen_codes (//tree, max_code, bl_count) + ct_data *tree, /* the tree to decorate */ + int max_code, /* largest code with non zero frequency */ + ushf *bl_count) /* number of codes at each bit length */ +{ + ush next_code[MAX_BITS+1]; /* next code value for each bit length */ + ush code = 0; /* running code value */ + int bits; /* bit index */ + int n; /* code index */ + + /* The distribution counts are first used to generate the code values + * without bit reversal. + */ + for (bits = 1; bits <= MAX_BITS; bits++) { + next_code[bits] = code = (code + bl_count[bits-1]) << 1; + } + /* Check that the bit counts in bl_count are consistent. The last code + * must be all ones. + */ + Assert (code + bl_count[MAX_BITS]-1 == (1<dyn_tree; + const ct_data *stree = desc->stat_desc->static_tree; + int elems = desc->stat_desc->elems; + int n, m; /* iterate over heap elements */ + int max_code = -1; /* largest code with non zero frequency */ + int node; /* new node being created */ + + /* Construct the initial heap, with least frequent element in + * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. + * heap[0] is not used. + */ + s->heap_len = 0, s->heap_max = HEAP_SIZE; + + for (n = 0; n < elems; n++) { + if (tree[n].Freq != 0) { + s->heap[++(s->heap_len)] = max_code = n; + s->depth[n] = 0; + } else { + tree[n].Len = 0; + } + } + + /* The pkzip format requires that at least one distance code exists, + * and that at least one bit should be sent even if there is only one + * possible code. So to avoid special checks later on we force at least + * two codes of non zero frequency. + */ + while (s->heap_len < 2) { + node = s->heap[++(s->heap_len)] = (max_code < 2 ? ++max_code : 0); + tree[node].Freq = 1; + s->depth[node] = 0; + s->opt_len--; if (stree) s->static_len -= stree[node].Len; + /* node is 0 or 1 so it does not have extra bits */ + } + desc->max_code = max_code; + + /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, + * establish sub-heaps of increasing lengths: + */ + for (n = s->heap_len/2; n >= 1; n--) pqdownheap(s, tree, n); + + /* Construct the Huffman tree by repeatedly combining the least two + * frequent nodes. + */ + node = elems; /* next internal node of the tree */ + do { + pqremove(s, tree, n); /* n = node of least frequency */ + m = s->heap[SMALLEST]; /* m = node of next least frequency */ + + s->heap[--(s->heap_max)] = n; /* keep the nodes sorted by frequency */ + s->heap[--(s->heap_max)] = m; + + /* Create a new node father of n and m */ + tree[node].Freq = tree[n].Freq + tree[m].Freq; + s->depth[node] = (uch)((s->depth[n] >= s->depth[m] ? + s->depth[n] : s->depth[m]) + 1); + tree[n].Dad = tree[m].Dad = (ush)node; +#ifdef DUMP_BL_TREE + if (tree == s->bl_tree) { + fprintf(stderr,"\nnode %d(%d), sons %d(%d) %d(%d)", + node, tree[node].Freq, n, tree[n].Freq, m, tree[m].Freq); + } +#endif + /* and insert the new node in the heap */ + s->heap[SMALLEST] = node++; + pqdownheap(s, tree, SMALLEST); + + } while (s->heap_len >= 2); + + s->heap[--(s->heap_max)] = s->heap[SMALLEST]; + + /* At this point, the fields freq and dad are set. We can now + * generate the bit lengths. + */ + gen_bitlen(s, (tree_desc *)desc); + + /* The field len is now set, we can generate the bit codes */ + gen_codes ((ct_data *)tree, max_code, s->bl_count); +} + +/* =========================================================================== + * Scan a literal or distance tree to determine the frequencies of the codes + * in the bit length tree. + */ +local void scan_tree (//s, tree, max_code) + deflate_state *s, + ct_data *tree, /* the tree to be scanned */ + int max_code) /* and its largest code of non zero frequency */ +{ + int n; /* iterates over all tree elements */ + int prevlen = -1; /* last emitted length */ + int curlen; /* length of current code */ + int nextlen = tree[0].Len; /* length of next code */ + int count = 0; /* repeat count of the current code */ + int max_count = 7; /* max repeat count */ + int min_count = 4; /* min repeat count */ + + if (nextlen == 0) max_count = 138, min_count = 3; + tree[max_code+1].Len = (ush)0xffff; /* guard */ + + for (n = 0; n <= max_code; n++) { + curlen = nextlen; nextlen = tree[n+1].Len; + if (++count < max_count && curlen == nextlen) { + continue; + } else if (count < min_count) { + s->bl_tree[curlen].Freq += count; + } else if (curlen != 0) { + if (curlen != prevlen) s->bl_tree[curlen].Freq++; + s->bl_tree[REP_3_6].Freq++; + } else if (count <= 10) { + s->bl_tree[REPZ_3_10].Freq++; + } else { + s->bl_tree[REPZ_11_138].Freq++; + } + count = 0; prevlen = curlen; + if (nextlen == 0) { + max_count = 138, min_count = 3; + } else if (curlen == nextlen) { + max_count = 6, min_count = 3; + } else { + max_count = 7, min_count = 4; + } + } +} + +/* =========================================================================== + * Send a literal or distance tree in compressed form, using the codes in + * bl_tree. + */ +local void send_tree (//s, tree, max_code) + deflate_state *s, + ct_data *tree, /* the tree to be scanned */ + int max_code) /* and its largest code of non zero frequency */ +{ + int n; /* iterates over all tree elements */ + int prevlen = -1; /* last emitted length */ + int curlen; /* length of current code */ + int nextlen = tree[0].Len; /* length of next code */ + int count = 0; /* repeat count of the current code */ + int max_count = 7; /* max repeat count */ + int min_count = 4; /* min repeat count */ + + /* tree[max_code+1].Len = -1; */ /* guard already set */ + if (nextlen == 0) max_count = 138, min_count = 3; + + for (n = 0; n <= max_code; n++) { + curlen = nextlen; nextlen = tree[n+1].Len; + if (++count < max_count && curlen == nextlen) { + continue; + } else if (count < min_count) { + do { send_code(s, curlen, s->bl_tree); } while (--count != 0); + + } else if (curlen != 0) { + if (curlen != prevlen) { + send_code(s, curlen, s->bl_tree); count--; + } + Assert(count >= 3 && count <= 6, " 3_6?"); + send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2); + + } else if (count <= 10) { + send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3); + + } else { + send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7); + } + count = 0; prevlen = curlen; + if (nextlen == 0) { + max_count = 138, min_count = 3; + } else if (curlen == nextlen) { + max_count = 6, min_count = 3; + } else { + max_count = 7, min_count = 4; + } + } +} + +/* =========================================================================== + * Construct the Huffman tree for the bit lengths and return the index in + * bl_order of the last bit length code to send. + */ +local int build_bl_tree(//s) + deflate_state *s) +{ + int max_blindex; /* index of last bit length code of non zero freq */ + + /* Determine the bit length frequencies for literal and distance trees */ + scan_tree(s, (ct_data *)s->dyn_ltree, s->l_desc.max_code); + scan_tree(s, (ct_data *)s->dyn_dtree, s->d_desc.max_code); + + /* Build the bit length tree: */ + build_tree(s, (tree_desc *)(&(s->bl_desc))); + /* opt_len now includes the length of the tree representations, except + * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. + */ + + /* Determine the number of bit length codes to send. The pkzip format + * requires that at least 4 bit length codes be sent. (appnote.txt says + * 3 but the actual value used is 4.) + */ + for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) { + if (s->bl_tree[bl_order[max_blindex]].Len != 0) break; + } + /* Update opt_len to include the bit length tree and counts */ + s->opt_len += 3*(max_blindex+1) + 5+5+4; + Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", + s->opt_len, s->static_len)); + + return max_blindex; +} + +/* =========================================================================== + * Send the header for a block using dynamic Huffman trees: the counts, the + * lengths of the bit length codes, the literal tree and the distance tree. + * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. + */ +local void send_all_trees(//s, lcodes, dcodes, blcodes) + deflate_state *s, + int lcodes, + int dcodes, + int blcodes) /* number of codes for each tree */ +{ + int rank; /* index in bl_order */ + + Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes"); + Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, + "too many codes"); + Tracev((stderr, "\nbl counts: ")); + send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */ + send_bits(s, dcodes-1, 5); + send_bits(s, blcodes-4, 4); /* not -3 as stated in appnote.txt */ + for (rank = 0; rank < blcodes; rank++) { + Tracev((stderr, "\nbl code %2d ", bl_order[rank])); + send_bits(s, s->bl_tree[bl_order[rank]].Len, 3); + } + Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); + + send_tree(s, (ct_data *)s->dyn_ltree, lcodes-1); /* literal tree */ + Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); + + send_tree(s, (ct_data *)s->dyn_dtree, dcodes-1); /* distance tree */ + Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); +} + +/* =========================================================================== + * Send a stored block + */ +void _tr_stored_block(//s, buf, stored_len, eof) + deflate_state *s, + charf *buf, /* input block */ + ulg stored_len, /* length of input block */ + int eof) /* true if this is the last block for a file */ +{ + send_bits(s, (STORED_BLOCK<<1)+eof, 3); /* send block type */ +#ifdef DEBUG + s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L; + s->compressed_len += (stored_len + 4) << 3; +#endif + copy_block(s, buf, (unsigned)stored_len, 1); /* with header */ +} + +/* =========================================================================== + * Send one empty static block to give enough lookahead for inflate. + * This takes 10 bits, of which 7 may remain in the bit buffer. + * The current inflate code requires 9 bits of lookahead. If the + * last two codes for the previous block (real code plus EOB) were coded + * on 5 bits or less, inflate may have only 5+3 bits of lookahead to decode + * the last real code. In this case we send two empty static blocks instead + * of one. (There are no problems if the previous block is stored or fixed.) + * To simplify the code, we assume the worst case of last real code encoded + * on one bit only. + */ +void _tr_align(//s) + deflate_state *s) +{ + send_bits(s, STATIC_TREES<<1, 3); + send_code(s, END_BLOCK, static_ltree); +#ifdef DEBUG + s->compressed_len += 10L; /* 3 for block type, 7 for EOB */ +#endif + bi_flush(s); + /* Of the 10 bits for the empty block, we have already sent + * (10 - bi_valid) bits. The lookahead for the last real code (before + * the EOB of the previous block) was thus at least one plus the length + * of the EOB plus what we have just sent of the empty static block. + */ + if (1 + s->last_eob_len + 10 - s->bi_valid < 9) { + send_bits(s, STATIC_TREES<<1, 3); + send_code(s, END_BLOCK, static_ltree); +#ifdef DEBUG + s->compressed_len += 10L; +#endif + bi_flush(s); + } + s->last_eob_len = 7; +} + +/* =========================================================================== + * Determine the best encoding for the current block: dynamic trees, static + * trees or store, and output the encoded block to the zip file. + */ +void _tr_flush_block(//s, buf, stored_len, eof) + deflate_state *s, + charf *buf, /* input block, or NULL if too old */ + ulg stored_len, /* length of input block */ + int eof) /* true if this is the last block for a file */ +{ + ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */ + int max_blindex = 0; /* index of last bit length code of non zero freq */ + + /* Build the Huffman trees unless a stored block is forced */ + if (s->level > 0) { + + /* Check if the file is binary or text */ + if (stored_len > 0 && s->strm->data_type == Z_UNKNOWN) + set_data_type(s); + + /* Construct the literal and distance trees */ + build_tree(s, (tree_desc *)(&(s->l_desc))); + Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, + s->static_len)); + + build_tree(s, (tree_desc *)(&(s->d_desc))); + Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, + s->static_len)); + /* At this point, opt_len and static_len are the total bit lengths of + * the compressed block data, excluding the tree representations. + */ + + /* Build the bit length tree for the above two trees, and get the index + * in bl_order of the last bit length code to send. + */ + max_blindex = build_bl_tree(s); + + /* Determine the best encoding. Compute the block lengths in bytes. */ + opt_lenb = (s->opt_len+3+7)>>3; + static_lenb = (s->static_len+3+7)>>3; + + Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", + opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, + s->last_lit)); + + if (static_lenb <= opt_lenb) opt_lenb = static_lenb; + + } else { + Assert(buf != (char*)0, "lost buf"); + opt_lenb = static_lenb = stored_len + 5; /* force a stored block */ + } + +#ifdef FORCE_STORED + if (buf != (char*)0) { /* force stored block */ +#else + if (stored_len+4 <= opt_lenb && buf != (char*)0) { + /* 4: two words for the lengths */ +#endif + /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. + * Otherwise we can't have processed more than WSIZE input bytes since + * the last block flush, because compression would have been + * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to + * transform a block into a stored block. + */ + _tr_stored_block(s, buf, stored_len, eof); + +#ifdef FORCE_STATIC + } else if (static_lenb >= 0) { /* force static trees */ +#else + } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) { +#endif + send_bits(s, (STATIC_TREES<<1)+eof, 3); + compress_block(s, (ct_data *)static_ltree, (ct_data *)static_dtree); +#ifdef DEBUG + s->compressed_len += 3 + s->static_len; +#endif + } else { + send_bits(s, (DYN_TREES<<1)+eof, 3); + send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1, + max_blindex+1); + compress_block(s, (ct_data *)s->dyn_ltree, (ct_data *)s->dyn_dtree); +#ifdef DEBUG + s->compressed_len += 3 + s->opt_len; +#endif + } + Assert (s->compressed_len == s->bits_sent, "bad compressed size"); + /* The above check is made mod 2^32, for files larger than 512 MB + * and uLong implemented on 32 bits. + */ + init_block(s); + + if (eof) { + bi_windup(s); +#ifdef DEBUG + s->compressed_len += 7; /* align on byte boundary */ +#endif + } + Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, + s->compressed_len-7*eof)); +} + +/* =========================================================================== + * Save the match info and tally the frequency counts. Return true if + * the current block must be flushed. + */ +int _tr_tally (//s, dist, lc) + deflate_state *s, + unsigned dist, /* distance of matched string */ + unsigned lc) /* match length-MIN_MATCH or unmatched char (if dist==0) */ +{ + s->d_buf[s->last_lit] = (ush)dist; + s->l_buf[s->last_lit++] = (uch)lc; + if (dist == 0) { + /* lc is the unmatched char */ + s->dyn_ltree[lc].Freq++; + } else { + s->matches++; + /* Here, lc is the match length - MIN_MATCH */ + dist--; /* dist = match distance - 1 */ + Assert((ush)dist < (ush)MAX_DIST(s) && + (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) && + (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); + + s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++; + s->dyn_dtree[d_code(dist)].Freq++; + } + +#ifdef TRUNCATE_BLOCK + /* Try to guess if it is profitable to stop the current block here */ + if ((s->last_lit & 0x1fff) == 0 && s->level > 2) { + /* Compute an upper bound for the compressed length */ + ulg out_length = (ulg)s->last_lit*8L; + ulg in_length = (ulg)((long)s->strstart - s->block_start); + int dcode; + for (dcode = 0; dcode < D_CODES; dcode++) { + out_length += (ulg)s->dyn_dtree[dcode].Freq * + (5L+extra_dbits[dcode]); + } + out_length >>= 3; + Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ", + s->last_lit, in_length, out_length, + 100L - out_length*100L/in_length)); + if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1; + } +#endif + return (s->last_lit == s->lit_bufsize-1); + /* We avoid equality with lit_bufsize because of wraparound at 64K + * on 16 bit machines and because stored blocks are restricted to + * 64K-1 bytes. + */ +} + +/* =========================================================================== + * Send the block data compressed using the given Huffman trees + */ +local void compress_block(//s, ltree, dtree) + deflate_state *s, + ct_data *ltree, /* literal tree */ + ct_data *dtree) /* distance tree */ +{ + unsigned dist; /* distance of matched string */ + int lc; /* match length or unmatched char (if dist == 0) */ + unsigned lx = 0; /* running index in l_buf */ + unsigned code; /* the code to send */ + int extra; /* number of extra bits to send */ + + if (s->last_lit != 0) do { + dist = s->d_buf[lx]; + lc = s->l_buf[lx++]; + if (dist == 0) { + send_code(s, lc, ltree); /* send a literal byte */ + Tracecv(isgraph(lc), (stderr," '%c' ", lc)); + } else { + /* Here, lc is the match length - MIN_MATCH */ + code = _length_code[lc]; + send_code(s, code+LITERALS+1, ltree); /* send the length code */ + extra = extra_lbits[code]; + if (extra != 0) { + lc -= base_length[code]; + send_bits(s, lc, extra); /* send the extra length bits */ + } + dist--; /* dist is now the match distance - 1 */ + code = d_code(dist); + Assert (code < D_CODES, "bad d_code"); + + send_code(s, code, dtree); /* send the distance code */ + extra = extra_dbits[code]; + if (extra != 0) { + dist -= base_dist[code]; + send_bits(s, dist, extra); /* send the extra distance bits */ + } + } /* literal or match pair ? */ + + /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */ + Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx, + "pendingBuf overflow"); + + } while (lx < s->last_lit); + + send_code(s, END_BLOCK, ltree); + s->last_eob_len = ltree[END_BLOCK].Len; +} + +/* =========================================================================== + * Set the data type to BINARY or TEXT, using a crude approximation: + * set it to Z_TEXT if all symbols are either printable characters (33 to 255) + * or white spaces (9 to 13, or 32); or set it to Z_BINARY otherwise. + * IN assertion: the fields Freq of dyn_ltree are set. + */ +local void set_data_type(//s) + deflate_state *s) +{ + int n; + + for (n = 0; n < 9; n++) + if (s->dyn_ltree[n].Freq != 0) + break; + if (n == 9) + for (n = 14; n < 32; n++) + if (s->dyn_ltree[n].Freq != 0) + break; + s->strm->data_type = (n == 32) ? Z_TEXT : Z_BINARY; +} + +/* =========================================================================== + * Reverse the first len bits of a code, using straightforward code (a faster + * method would use a table) + * IN assertion: 1 <= len <= 15 + */ +local unsigned bi_reverse(//code, len) + unsigned code, /* the value to invert */ + int len) /* its bit length */ +{ + register unsigned res = 0; + do { + res |= code & 1; + code >>= 1, res <<= 1; + } while (--len > 0); + return res >> 1; +} + +/* =========================================================================== + * Flush the bit buffer, keeping at most 7 bits in it. + */ +local void bi_flush(//s) + deflate_state *s) +{ + if (s->bi_valid == 16) { + put_short(s, s->bi_buf); + s->bi_buf = 0; + s->bi_valid = 0; + } else if (s->bi_valid >= 8) { + put_byte(s, (Byte)s->bi_buf); + s->bi_buf >>= 8; + s->bi_valid -= 8; + } +} + +/* =========================================================================== + * Flush the bit buffer and align the output on a byte boundary + */ +local void bi_windup(//s) + deflate_state *s) +{ + if (s->bi_valid > 8) { + put_short(s, s->bi_buf); + } else if (s->bi_valid > 0) { + put_byte(s, (Byte)s->bi_buf); + } + s->bi_buf = 0; + s->bi_valid = 0; +#ifdef DEBUG + s->bits_sent = (s->bits_sent+7) & ~7; +#endif +} + +/* =========================================================================== + * Copy a stored block, storing first the length and its + * one's complement if requested. + */ +local void copy_block(//s, buf, len, header) + deflate_state *s, + charf *buf, /* the input data */ + unsigned len, /* its length */ + int header) /* true if block header must be written */ +{ + bi_windup(s); /* align on byte boundary */ + s->last_eob_len = 8; /* enough lookahead for inflate */ + + if (header) { + put_short(s, (ush)len); + put_short(s, (ush)~len); +#ifdef DEBUG + s->bits_sent += 2*16; +#endif + } +#ifdef DEBUG + s->bits_sent += (ulg)len<<3; +#endif + while (len--) { + put_byte(s, *buf++); + } +} diff --git a/Libraries/zlib123/trees.h b/Libraries/zlib123/trees.h new file mode 100644 index 0000000..1ca868b --- /dev/null +++ b/Libraries/zlib123/trees.h @@ -0,0 +1,128 @@ +/* header created automatically with -DGEN_TREES_H */ + +local const ct_data static_ltree[L_CODES+2] = { +{{ 12},{ 8}}, {{140},{ 8}}, {{ 76},{ 8}}, {{204},{ 8}}, {{ 44},{ 8}}, +{{172},{ 8}}, {{108},{ 8}}, {{236},{ 8}}, {{ 28},{ 8}}, {{156},{ 8}}, +{{ 92},{ 8}}, {{220},{ 8}}, {{ 60},{ 8}}, {{188},{ 8}}, {{124},{ 8}}, +{{252},{ 8}}, {{ 2},{ 8}}, {{130},{ 8}}, {{ 66},{ 8}}, {{194},{ 8}}, +{{ 34},{ 8}}, {{162},{ 8}}, {{ 98},{ 8}}, {{226},{ 8}}, {{ 18},{ 8}}, +{{146},{ 8}}, {{ 82},{ 8}}, {{210},{ 8}}, {{ 50},{ 8}}, {{178},{ 8}}, +{{114},{ 8}}, {{242},{ 8}}, {{ 10},{ 8}}, {{138},{ 8}}, {{ 74},{ 8}}, +{{202},{ 8}}, {{ 42},{ 8}}, {{170},{ 8}}, {{106},{ 8}}, {{234},{ 8}}, +{{ 26},{ 8}}, {{154},{ 8}}, {{ 90},{ 8}}, {{218},{ 8}}, {{ 58},{ 8}}, +{{186},{ 8}}, {{122},{ 8}}, {{250},{ 8}}, {{ 6},{ 8}}, {{134},{ 8}}, +{{ 70},{ 8}}, {{198},{ 8}}, {{ 38},{ 8}}, {{166},{ 8}}, {{102},{ 8}}, +{{230},{ 8}}, {{ 22},{ 8}}, {{150},{ 8}}, {{ 86},{ 8}}, {{214},{ 8}}, +{{ 54},{ 8}}, {{182},{ 8}}, {{118},{ 8}}, {{246},{ 8}}, {{ 14},{ 8}}, +{{142},{ 8}}, {{ 78},{ 8}}, {{206},{ 8}}, {{ 46},{ 8}}, {{174},{ 8}}, +{{110},{ 8}}, {{238},{ 8}}, {{ 30},{ 8}}, {{158},{ 8}}, {{ 94},{ 8}}, +{{222},{ 8}}, {{ 62},{ 8}}, {{190},{ 8}}, {{126},{ 8}}, {{254},{ 8}}, +{{ 1},{ 8}}, {{129},{ 8}}, {{ 65},{ 8}}, {{193},{ 8}}, {{ 33},{ 8}}, +{{161},{ 8}}, {{ 97},{ 8}}, {{225},{ 8}}, {{ 17},{ 8}}, {{145},{ 8}}, +{{ 81},{ 8}}, {{209},{ 8}}, {{ 49},{ 8}}, {{177},{ 8}}, {{113},{ 8}}, +{{241},{ 8}}, {{ 9},{ 8}}, {{137},{ 8}}, {{ 73},{ 8}}, {{201},{ 8}}, +{{ 41},{ 8}}, {{169},{ 8}}, {{105},{ 8}}, {{233},{ 8}}, {{ 25},{ 8}}, +{{153},{ 8}}, {{ 89},{ 8}}, {{217},{ 8}}, {{ 57},{ 8}}, {{185},{ 8}}, +{{121},{ 8}}, {{249},{ 8}}, {{ 5},{ 8}}, {{133},{ 8}}, {{ 69},{ 8}}, +{{197},{ 8}}, {{ 37},{ 8}}, {{165},{ 8}}, {{101},{ 8}}, {{229},{ 8}}, +{{ 21},{ 8}}, {{149},{ 8}}, {{ 85},{ 8}}, {{213},{ 8}}, {{ 53},{ 8}}, +{{181},{ 8}}, {{117},{ 8}}, {{245},{ 8}}, {{ 13},{ 8}}, {{141},{ 8}}, +{{ 77},{ 8}}, {{205},{ 8}}, {{ 45},{ 8}}, {{173},{ 8}}, {{109},{ 8}}, +{{237},{ 8}}, {{ 29},{ 8}}, {{157},{ 8}}, {{ 93},{ 8}}, {{221},{ 8}}, +{{ 61},{ 8}}, {{189},{ 8}}, {{125},{ 8}}, {{253},{ 8}}, {{ 19},{ 9}}, +{{275},{ 9}}, {{147},{ 9}}, {{403},{ 9}}, {{ 83},{ 9}}, {{339},{ 9}}, +{{211},{ 9}}, {{467},{ 9}}, {{ 51},{ 9}}, {{307},{ 9}}, {{179},{ 9}}, +{{435},{ 9}}, {{115},{ 9}}, {{371},{ 9}}, {{243},{ 9}}, {{499},{ 9}}, +{{ 11},{ 9}}, {{267},{ 9}}, {{139},{ 9}}, {{395},{ 9}}, {{ 75},{ 9}}, +{{331},{ 9}}, {{203},{ 9}}, {{459},{ 9}}, {{ 43},{ 9}}, {{299},{ 9}}, +{{171},{ 9}}, {{427},{ 9}}, {{107},{ 9}}, {{363},{ 9}}, {{235},{ 9}}, +{{491},{ 9}}, {{ 27},{ 9}}, {{283},{ 9}}, {{155},{ 9}}, {{411},{ 9}}, +{{ 91},{ 9}}, {{347},{ 9}}, {{219},{ 9}}, {{475},{ 9}}, {{ 59},{ 9}}, +{{315},{ 9}}, {{187},{ 9}}, {{443},{ 9}}, {{123},{ 9}}, {{379},{ 9}}, +{{251},{ 9}}, {{507},{ 9}}, {{ 7},{ 9}}, {{263},{ 9}}, {{135},{ 9}}, +{{391},{ 9}}, {{ 71},{ 9}}, {{327},{ 9}}, {{199},{ 9}}, {{455},{ 9}}, +{{ 39},{ 9}}, {{295},{ 9}}, {{167},{ 9}}, {{423},{ 9}}, {{103},{ 9}}, +{{359},{ 9}}, {{231},{ 9}}, {{487},{ 9}}, {{ 23},{ 9}}, {{279},{ 9}}, +{{151},{ 9}}, {{407},{ 9}}, {{ 87},{ 9}}, {{343},{ 9}}, {{215},{ 9}}, +{{471},{ 9}}, {{ 55},{ 9}}, {{311},{ 9}}, {{183},{ 9}}, {{439},{ 9}}, +{{119},{ 9}}, {{375},{ 9}}, {{247},{ 9}}, {{503},{ 9}}, {{ 15},{ 9}}, +{{271},{ 9}}, {{143},{ 9}}, {{399},{ 9}}, {{ 79},{ 9}}, {{335},{ 9}}, +{{207},{ 9}}, {{463},{ 9}}, {{ 47},{ 9}}, {{303},{ 9}}, {{175},{ 9}}, +{{431},{ 9}}, {{111},{ 9}}, {{367},{ 9}}, {{239},{ 9}}, {{495},{ 9}}, +{{ 31},{ 9}}, {{287},{ 9}}, {{159},{ 9}}, {{415},{ 9}}, {{ 95},{ 9}}, +{{351},{ 9}}, {{223},{ 9}}, {{479},{ 9}}, {{ 63},{ 9}}, {{319},{ 9}}, +{{191},{ 9}}, {{447},{ 9}}, {{127},{ 9}}, {{383},{ 9}}, {{255},{ 9}}, +{{511},{ 9}}, {{ 0},{ 7}}, {{ 64},{ 7}}, {{ 32},{ 7}}, {{ 96},{ 7}}, +{{ 16},{ 7}}, {{ 80},{ 7}}, {{ 48},{ 7}}, {{112},{ 7}}, {{ 8},{ 7}}, +{{ 72},{ 7}}, {{ 40},{ 7}}, {{104},{ 7}}, {{ 24},{ 7}}, {{ 88},{ 7}}, +{{ 56},{ 7}}, {{120},{ 7}}, {{ 4},{ 7}}, {{ 68},{ 7}}, {{ 36},{ 7}}, +{{100},{ 7}}, {{ 20},{ 7}}, {{ 84},{ 7}}, {{ 52},{ 7}}, {{116},{ 7}}, +{{ 3},{ 8}}, {{131},{ 8}}, {{ 67},{ 8}}, {{195},{ 8}}, {{ 35},{ 8}}, +{{163},{ 8}}, {{ 99},{ 8}}, {{227},{ 8}} +}; + +local const ct_data static_dtree[D_CODES] = { +{{ 0},{ 5}}, {{16},{ 5}}, {{ 8},{ 5}}, {{24},{ 5}}, {{ 4},{ 5}}, +{{20},{ 5}}, {{12},{ 5}}, {{28},{ 5}}, {{ 2},{ 5}}, {{18},{ 5}}, +{{10},{ 5}}, {{26},{ 5}}, {{ 6},{ 5}}, {{22},{ 5}}, {{14},{ 5}}, +{{30},{ 5}}, {{ 1},{ 5}}, {{17},{ 5}}, {{ 9},{ 5}}, {{25},{ 5}}, +{{ 5},{ 5}}, {{21},{ 5}}, {{13},{ 5}}, {{29},{ 5}}, {{ 3},{ 5}}, +{{19},{ 5}}, {{11},{ 5}}, {{27},{ 5}}, {{ 7},{ 5}}, {{23},{ 5}} +}; + +const uch _dist_code[DIST_CODE_LEN] = { + 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, + 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, +10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, +11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, +12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, +13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, +13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, +14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, +14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, +14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, +15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, +15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, +15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17, +18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, +23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, +24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, +26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, +26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, +27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, +27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, +28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, +28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, +28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, +29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, +29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, +29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29 +}; + +const uch _length_code[MAX_MATCH-MIN_MATCH+1]= { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, +13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, +17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, +19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, +21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, +22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, +23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, +24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, +25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, +25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, +26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, +26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, +27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28 +}; + +local const int base_length[LENGTH_CODES] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, +64, 80, 96, 112, 128, 160, 192, 224, 0 +}; + +local const int base_dist[D_CODES] = { + 0, 1, 2, 3, 4, 6, 8, 12, 16, 24, + 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, + 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576 +}; + diff --git a/Libraries/zlib123/uncompr.cpp b/Libraries/zlib123/uncompr.cpp new file mode 100644 index 0000000..854a655 --- /dev/null +++ b/Libraries/zlib123/uncompr.cpp @@ -0,0 +1,61 @@ +/* uncompr.c -- decompress a memory buffer + * Copyright (C) 1995-2003 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#define ZLIB_INTERNAL +#include "zlib.h" + +/* =========================================================================== + Decompresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total + size of the destination buffer, which must be large enough to hold the + entire uncompressed data. (The size of the uncompressed data must have + been saved previously by the compressor and transmitted to the decompressor + by some mechanism outside the scope of this compression library.) + Upon exit, destLen is the actual size of the compressed buffer. + This function can be used to decompress a whole file at once if the + input file is mmap'ed. + + uncompress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer, or Z_DATA_ERROR if the input data was corrupted. +*/ +int ZEXPORT uncompress (//dest, destLen, source, sourceLen) + Bytef *dest, + uLongf *destLen, + const Bytef *source, + uLong sourceLen) +{ + z_stream stream; + int err; + + stream.next_in = (Bytef*)source; + stream.avail_in = (uInt)sourceLen; + /* Check for source > 64K on 16-bit machine: */ + if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR; + + stream.next_out = dest; + stream.avail_out = (uInt)*destLen; + if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; + + stream.zalloc = (alloc_func)0; + stream.zfree = (free_func)0; + + err = inflateInit(&stream); + if (err != Z_OK) return err; + + err = inflate(&stream, Z_FINISH); + if (err != Z_STREAM_END) { + inflateEnd(&stream); + if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0)) + return Z_DATA_ERROR; + return err; + } + *destLen = stream.total_out; + + err = inflateEnd(&stream); + return err; +} diff --git a/Libraries/zlib123/zconf.h b/Libraries/zlib123/zconf.h new file mode 100644 index 0000000..e3b0c96 --- /dev/null +++ b/Libraries/zlib123/zconf.h @@ -0,0 +1,332 @@ +/* zconf.h -- configuration of the zlib compression library + * Copyright (C) 1995-2005 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#ifndef ZCONF_H +#define ZCONF_H + +/* + * If you *really* need a unique prefix for all types and library functions, + * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. + */ +#ifdef Z_PREFIX +# define deflateInit_ z_deflateInit_ +# define deflate z_deflate +# define deflateEnd z_deflateEnd +# define inflateInit_ z_inflateInit_ +# define inflate z_inflate +# define inflateEnd z_inflateEnd +# define deflateInit2_ z_deflateInit2_ +# define deflateSetDictionary z_deflateSetDictionary +# define deflateCopy z_deflateCopy +# define deflateReset z_deflateReset +# define deflateParams z_deflateParams +# define deflateBound z_deflateBound +# define deflatePrime z_deflatePrime +# define inflateInit2_ z_inflateInit2_ +# define inflateSetDictionary z_inflateSetDictionary +# define inflateSync z_inflateSync +# define inflateSyncPoint z_inflateSyncPoint +# define inflateCopy z_inflateCopy +# define inflateReset z_inflateReset +# define inflateBack z_inflateBack +# define inflateBackEnd z_inflateBackEnd +# define compress z_compress +# define compress2 z_compress2 +# define compressBound z_compressBound +# define uncompress z_uncompress +# define adler32 z_adler32 +# define crc32 z_crc32 +# define get_crc_table z_get_crc_table +# define zError z_zError + +# define alloc_func z_alloc_func +# define free_func z_free_func +# define in_func z_in_func +# define out_func z_out_func +# define Byte z_Byte +# define uInt z_uInt +# define uLong z_uLong +# define Bytef z_Bytef +# define charf z_charf +# define intf z_intf +# define uIntf z_uIntf +# define uLongf z_uLongf +# define voidpf z_voidpf +# define voidp z_voidp +#endif + +#if defined(__MSDOS__) && !defined(MSDOS) +# define MSDOS +#endif +#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) +# define OS2 +#endif +#if defined(_WINDOWS) && !defined(WINDOWS) +# define WINDOWS +#endif +#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) +# ifndef WIN32 +# define WIN32 +# endif +#endif +#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) +# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) +# ifndef SYS16BIT +# define SYS16BIT +# endif +# endif +#endif + +/* + * Compile with -DMAXSEG_64K if the alloc function cannot allocate more + * than 64k bytes at a time (needed on systems with 16-bit int). + */ +#ifdef SYS16BIT +# define MAXSEG_64K +#endif +#ifdef MSDOS +# define UNALIGNED_OK +#endif + +#ifdef __STDC_VERSION__ +# ifndef STDC +# define STDC +# endif +# if __STDC_VERSION__ >= 199901L +# ifndef STDC99 +# define STDC99 +# endif +# endif +#endif +#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) +# define STDC +#endif +#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) +# define STDC +#endif +#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) +# define STDC +#endif +#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) +# define STDC +#endif + +#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ +# define STDC +#endif + +#ifndef STDC +# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ +# define const /* note: need a more gentle solution here */ +# endif +#endif + +/* Some Mac compilers merge all .h files incorrectly: */ +#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) +# define NO_DUMMY_DECL +#endif + +/* Maximum value for memLevel in deflateInit2 */ +#ifndef MAX_MEM_LEVEL +# ifdef MAXSEG_64K +# define MAX_MEM_LEVEL 8 +# else +# define MAX_MEM_LEVEL 9 +# endif +#endif + +/* Maximum value for windowBits in deflateInit2 and inflateInit2. + * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files + * created by gzip. (Files created by minigzip can still be extracted by + * gzip.) + */ +#ifndef MAX_WBITS +# define MAX_WBITS 15 /* 32K LZ77 window */ +#endif + +/* The memory requirements for deflate are (in bytes): + (1 << (windowBits+2)) + (1 << (memLevel+9)) + that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) + plus a few kilobytes for small objects. For example, if you want to reduce + the default memory requirements from 256K to 128K, compile with + make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" + Of course this will generally degrade compression (there's no free lunch). + + The memory requirements for inflate are (in bytes) 1 << windowBits + that is, 32K for windowBits=15 (default value) plus a few kilobytes + for small objects. +*/ + + /* Type declarations */ + +#ifndef OF /* function prototypes */ +# ifdef STDC +# define OF(args) args +# else +# define OF(args) () +# endif +#endif + +/* The following definitions for FAR are needed only for MSDOS mixed + * model programming (small or medium model with some far allocations). + * This was tested only with MSC; for other MSDOS compilers you may have + * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, + * just define FAR to be empty. + */ +#ifdef SYS16BIT +# if defined(M_I86SM) || defined(M_I86MM) + /* MSC small or medium model */ +# define SMALL_MEDIUM +# ifdef _MSC_VER +# define FAR _far +# else +# define FAR far +# endif +# endif +# if (defined(__SMALL__) || defined(__MEDIUM__)) + /* Turbo C small or medium model */ +# define SMALL_MEDIUM +# ifdef __BORLANDC__ +# define FAR _far +# else +# define FAR far +# endif +# endif +#endif + +#if defined(WINDOWS) || defined(WIN32) + /* If building or using zlib as a DLL, define ZLIB_DLL. + * This is not mandatory, but it offers a little performance increase. + */ +# ifdef ZLIB_DLL +# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) +# ifdef ZLIB_INTERNAL +# define ZEXTERN extern __declspec(dllexport) +# else +# define ZEXTERN extern __declspec(dllimport) +# endif +# endif +# endif /* ZLIB_DLL */ + /* If building or using zlib with the WINAPI/WINAPIV calling convention, + * define ZLIB_WINAPI. + * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. + */ +# ifdef ZLIB_WINAPI +# ifdef FAR +# undef FAR +# endif +# include + /* No need for _export, use ZLIB.DEF instead. */ + /* For complete Windows compatibility, use WINAPI, not __stdcall. */ +# define ZEXPORT WINAPI +# ifdef WIN32 +# define ZEXPORTVA WINAPIV +# else +# define ZEXPORTVA FAR CDECL +# endif +# endif +#endif + +#if defined (__BEOS__) +# ifdef ZLIB_DLL +# ifdef ZLIB_INTERNAL +# define ZEXPORT __declspec(dllexport) +# define ZEXPORTVA __declspec(dllexport) +# else +# define ZEXPORT __declspec(dllimport) +# define ZEXPORTVA __declspec(dllimport) +# endif +# endif +#endif + +#ifndef ZEXTERN +# define ZEXTERN extern +#endif +#ifndef ZEXPORT +# define ZEXPORT +#endif +#ifndef ZEXPORTVA +# define ZEXPORTVA +#endif + +#ifndef FAR +# define FAR +#endif + +#if !defined(__MACTYPES__) +typedef unsigned char Byte; /* 8 bits */ +#endif +typedef unsigned int uInt; /* 16 bits or more */ +typedef unsigned long uLong; /* 32 bits or more */ + +#ifdef SMALL_MEDIUM + /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ +# define Bytef Byte FAR +#else + typedef Byte FAR Bytef; +#endif +typedef char FAR charf; +typedef int FAR intf; +typedef uInt FAR uIntf; +typedef uLong FAR uLongf; + +#ifdef STDC + typedef void const *voidpc; + typedef void FAR *voidpf; + typedef void *voidp; +#else + typedef Byte const *voidpc; + typedef Byte FAR *voidpf; + typedef Byte *voidp; +#endif + +#if 0 /* HAVE_UNISTD_H -- this line is updated by ./configure */ +# include /* for off_t */ +# include /* for SEEK_* and off_t */ +# ifdef VMS +# include /* for off_t */ +# endif +# define z_off_t off_t +#endif +#ifndef SEEK_SET +# define SEEK_SET 0 /* Seek from beginning of file. */ +# define SEEK_CUR 1 /* Seek from current position. */ +# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ +#endif +#ifndef z_off_t +# define z_off_t long +#endif + +#if defined(__OS400__) +# define NO_vsnprintf +#endif + +#if defined(__MVS__) +# define NO_vsnprintf +# ifdef FAR +# undef FAR +# endif +#endif + +/* MVS linker does not support external names larger than 8 bytes */ +#if defined(__MVS__) +# pragma map(deflateInit_,"DEIN") +# pragma map(deflateInit2_,"DEIN2") +# pragma map(deflateEnd,"DEEND") +# pragma map(deflateBound,"DEBND") +# pragma map(inflateInit_,"ININ") +# pragma map(inflateInit2_,"ININ2") +# pragma map(inflateEnd,"INEND") +# pragma map(inflateSync,"INSY") +# pragma map(inflateSetDictionary,"INSEDI") +# pragma map(compressBound,"CMBND") +# pragma map(inflate_table,"INTABL") +# pragma map(inflate_fast,"INFA") +# pragma map(inflate_copyright,"INCOPY") +#endif + +#endif /* ZCONF_H */ diff --git a/Libraries/zlib123/zconf.in.h b/Libraries/zlib123/zconf.in.h new file mode 100644 index 0000000..e3b0c96 --- /dev/null +++ b/Libraries/zlib123/zconf.in.h @@ -0,0 +1,332 @@ +/* zconf.h -- configuration of the zlib compression library + * Copyright (C) 1995-2005 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#ifndef ZCONF_H +#define ZCONF_H + +/* + * If you *really* need a unique prefix for all types and library functions, + * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. + */ +#ifdef Z_PREFIX +# define deflateInit_ z_deflateInit_ +# define deflate z_deflate +# define deflateEnd z_deflateEnd +# define inflateInit_ z_inflateInit_ +# define inflate z_inflate +# define inflateEnd z_inflateEnd +# define deflateInit2_ z_deflateInit2_ +# define deflateSetDictionary z_deflateSetDictionary +# define deflateCopy z_deflateCopy +# define deflateReset z_deflateReset +# define deflateParams z_deflateParams +# define deflateBound z_deflateBound +# define deflatePrime z_deflatePrime +# define inflateInit2_ z_inflateInit2_ +# define inflateSetDictionary z_inflateSetDictionary +# define inflateSync z_inflateSync +# define inflateSyncPoint z_inflateSyncPoint +# define inflateCopy z_inflateCopy +# define inflateReset z_inflateReset +# define inflateBack z_inflateBack +# define inflateBackEnd z_inflateBackEnd +# define compress z_compress +# define compress2 z_compress2 +# define compressBound z_compressBound +# define uncompress z_uncompress +# define adler32 z_adler32 +# define crc32 z_crc32 +# define get_crc_table z_get_crc_table +# define zError z_zError + +# define alloc_func z_alloc_func +# define free_func z_free_func +# define in_func z_in_func +# define out_func z_out_func +# define Byte z_Byte +# define uInt z_uInt +# define uLong z_uLong +# define Bytef z_Bytef +# define charf z_charf +# define intf z_intf +# define uIntf z_uIntf +# define uLongf z_uLongf +# define voidpf z_voidpf +# define voidp z_voidp +#endif + +#if defined(__MSDOS__) && !defined(MSDOS) +# define MSDOS +#endif +#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) +# define OS2 +#endif +#if defined(_WINDOWS) && !defined(WINDOWS) +# define WINDOWS +#endif +#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) +# ifndef WIN32 +# define WIN32 +# endif +#endif +#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) +# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) +# ifndef SYS16BIT +# define SYS16BIT +# endif +# endif +#endif + +/* + * Compile with -DMAXSEG_64K if the alloc function cannot allocate more + * than 64k bytes at a time (needed on systems with 16-bit int). + */ +#ifdef SYS16BIT +# define MAXSEG_64K +#endif +#ifdef MSDOS +# define UNALIGNED_OK +#endif + +#ifdef __STDC_VERSION__ +# ifndef STDC +# define STDC +# endif +# if __STDC_VERSION__ >= 199901L +# ifndef STDC99 +# define STDC99 +# endif +# endif +#endif +#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) +# define STDC +#endif +#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) +# define STDC +#endif +#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) +# define STDC +#endif +#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) +# define STDC +#endif + +#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ +# define STDC +#endif + +#ifndef STDC +# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ +# define const /* note: need a more gentle solution here */ +# endif +#endif + +/* Some Mac compilers merge all .h files incorrectly: */ +#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) +# define NO_DUMMY_DECL +#endif + +/* Maximum value for memLevel in deflateInit2 */ +#ifndef MAX_MEM_LEVEL +# ifdef MAXSEG_64K +# define MAX_MEM_LEVEL 8 +# else +# define MAX_MEM_LEVEL 9 +# endif +#endif + +/* Maximum value for windowBits in deflateInit2 and inflateInit2. + * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files + * created by gzip. (Files created by minigzip can still be extracted by + * gzip.) + */ +#ifndef MAX_WBITS +# define MAX_WBITS 15 /* 32K LZ77 window */ +#endif + +/* The memory requirements for deflate are (in bytes): + (1 << (windowBits+2)) + (1 << (memLevel+9)) + that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) + plus a few kilobytes for small objects. For example, if you want to reduce + the default memory requirements from 256K to 128K, compile with + make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" + Of course this will generally degrade compression (there's no free lunch). + + The memory requirements for inflate are (in bytes) 1 << windowBits + that is, 32K for windowBits=15 (default value) plus a few kilobytes + for small objects. +*/ + + /* Type declarations */ + +#ifndef OF /* function prototypes */ +# ifdef STDC +# define OF(args) args +# else +# define OF(args) () +# endif +#endif + +/* The following definitions for FAR are needed only for MSDOS mixed + * model programming (small or medium model with some far allocations). + * This was tested only with MSC; for other MSDOS compilers you may have + * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, + * just define FAR to be empty. + */ +#ifdef SYS16BIT +# if defined(M_I86SM) || defined(M_I86MM) + /* MSC small or medium model */ +# define SMALL_MEDIUM +# ifdef _MSC_VER +# define FAR _far +# else +# define FAR far +# endif +# endif +# if (defined(__SMALL__) || defined(__MEDIUM__)) + /* Turbo C small or medium model */ +# define SMALL_MEDIUM +# ifdef __BORLANDC__ +# define FAR _far +# else +# define FAR far +# endif +# endif +#endif + +#if defined(WINDOWS) || defined(WIN32) + /* If building or using zlib as a DLL, define ZLIB_DLL. + * This is not mandatory, but it offers a little performance increase. + */ +# ifdef ZLIB_DLL +# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) +# ifdef ZLIB_INTERNAL +# define ZEXTERN extern __declspec(dllexport) +# else +# define ZEXTERN extern __declspec(dllimport) +# endif +# endif +# endif /* ZLIB_DLL */ + /* If building or using zlib with the WINAPI/WINAPIV calling convention, + * define ZLIB_WINAPI. + * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. + */ +# ifdef ZLIB_WINAPI +# ifdef FAR +# undef FAR +# endif +# include + /* No need for _export, use ZLIB.DEF instead. */ + /* For complete Windows compatibility, use WINAPI, not __stdcall. */ +# define ZEXPORT WINAPI +# ifdef WIN32 +# define ZEXPORTVA WINAPIV +# else +# define ZEXPORTVA FAR CDECL +# endif +# endif +#endif + +#if defined (__BEOS__) +# ifdef ZLIB_DLL +# ifdef ZLIB_INTERNAL +# define ZEXPORT __declspec(dllexport) +# define ZEXPORTVA __declspec(dllexport) +# else +# define ZEXPORT __declspec(dllimport) +# define ZEXPORTVA __declspec(dllimport) +# endif +# endif +#endif + +#ifndef ZEXTERN +# define ZEXTERN extern +#endif +#ifndef ZEXPORT +# define ZEXPORT +#endif +#ifndef ZEXPORTVA +# define ZEXPORTVA +#endif + +#ifndef FAR +# define FAR +#endif + +#if !defined(__MACTYPES__) +typedef unsigned char Byte; /* 8 bits */ +#endif +typedef unsigned int uInt; /* 16 bits or more */ +typedef unsigned long uLong; /* 32 bits or more */ + +#ifdef SMALL_MEDIUM + /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ +# define Bytef Byte FAR +#else + typedef Byte FAR Bytef; +#endif +typedef char FAR charf; +typedef int FAR intf; +typedef uInt FAR uIntf; +typedef uLong FAR uLongf; + +#ifdef STDC + typedef void const *voidpc; + typedef void FAR *voidpf; + typedef void *voidp; +#else + typedef Byte const *voidpc; + typedef Byte FAR *voidpf; + typedef Byte *voidp; +#endif + +#if 0 /* HAVE_UNISTD_H -- this line is updated by ./configure */ +# include /* for off_t */ +# include /* for SEEK_* and off_t */ +# ifdef VMS +# include /* for off_t */ +# endif +# define z_off_t off_t +#endif +#ifndef SEEK_SET +# define SEEK_SET 0 /* Seek from beginning of file. */ +# define SEEK_CUR 1 /* Seek from current position. */ +# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ +#endif +#ifndef z_off_t +# define z_off_t long +#endif + +#if defined(__OS400__) +# define NO_vsnprintf +#endif + +#if defined(__MVS__) +# define NO_vsnprintf +# ifdef FAR +# undef FAR +# endif +#endif + +/* MVS linker does not support external names larger than 8 bytes */ +#if defined(__MVS__) +# pragma map(deflateInit_,"DEIN") +# pragma map(deflateInit2_,"DEIN2") +# pragma map(deflateEnd,"DEEND") +# pragma map(deflateBound,"DEBND") +# pragma map(inflateInit_,"ININ") +# pragma map(inflateInit2_,"ININ2") +# pragma map(inflateEnd,"INEND") +# pragma map(inflateSync,"INSY") +# pragma map(inflateSetDictionary,"INSEDI") +# pragma map(compressBound,"CMBND") +# pragma map(inflate_table,"INTABL") +# pragma map(inflate_fast,"INFA") +# pragma map(inflate_copyright,"INCOPY") +#endif + +#endif /* ZCONF_H */ diff --git a/Libraries/zlib123/zlib.h b/Libraries/zlib123/zlib.h new file mode 100644 index 0000000..62d0e46 --- /dev/null +++ b/Libraries/zlib123/zlib.h @@ -0,0 +1,1357 @@ +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.2.3, July 18th, 2005 + + Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + + + The data format used by the zlib library is described by RFCs (Request for + Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt + (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format). +*/ + +#ifndef ZLIB_H +#define ZLIB_H + +#include "zconf.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define ZLIB_VERSION "1.2.3" +#define ZLIB_VERNUM 0x1230 + +/* + The 'zlib' compression library provides in-memory compression and + decompression functions, including integrity checks of the uncompressed + data. This version of the library supports only one compression method + (deflation) but other algorithms will be added later and will have the same + stream interface. + + Compression can be done in a single step if the buffers are large + enough (for example if an input file is mmap'ed), or can be done by + repeated calls of the compression function. In the latter case, the + application must provide more input and/or consume the output + (providing more output space) before each call. + + The compressed data format used by default by the in-memory functions is + the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped + around a deflate stream, which is itself documented in RFC 1951. + + The library also supports reading and writing files in gzip (.gz) format + with an interface similar to that of stdio using the functions that start + with "gz". The gzip format is different from the zlib format. gzip is a + gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. + + This library can optionally read and write gzip streams in memory as well. + + The zlib format was designed to be compact and fast for use in memory + and on communications channels. The gzip format was designed for single- + file compression on file systems, has a larger header than zlib to maintain + directory information, and uses a different, slower check method than zlib. + + The library does not install any signal handler. The decoder checks + the consistency of the compressed data, so the library should never + crash even in case of corrupted input. +*/ + +typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); +typedef void (*free_func) OF((voidpf opaque, voidpf address)); + +struct internal_state; + +typedef struct z_stream_s { + Bytef *next_in; /* next input byte */ + uInt avail_in; /* number of bytes available at next_in */ + uLong total_in; /* total nb of input bytes read so far */ + + Bytef *next_out; /* next output byte should be put there */ + uInt avail_out; /* remaining free space at next_out */ + uLong total_out; /* total nb of bytes output so far */ + + char *msg; /* last error message, NULL if no error */ + struct internal_state FAR *state; /* not visible by applications */ + + alloc_func zalloc; /* used to allocate the internal state */ + free_func zfree; /* used to free the internal state */ + voidpf opaque; /* private data object passed to zalloc and zfree */ + + int data_type; /* best guess about the data type: binary or text */ + uLong adler; /* adler32 value of the uncompressed data */ + uLong reserved; /* reserved for future use */ +} z_stream; + +typedef z_stream FAR *z_streamp; + +/* + gzip header information passed to and from zlib routines. See RFC 1952 + for more details on the meanings of these fields. +*/ +typedef struct gz_header_s { + int text; /* true if compressed data believed to be text */ + uLong time; /* modification time */ + int xflags; /* extra flags (not used when writing a gzip file) */ + int os; /* operating system */ + Bytef *extra; /* pointer to extra field or Z_NULL if none */ + uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ + uInt extra_max; /* space at extra (only when reading header) */ + Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ + uInt name_max; /* space at name (only when reading header) */ + Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ + uInt comm_max; /* space at comment (only when reading header) */ + int hcrc; /* true if there was or will be a header crc */ + int done; /* true when done reading gzip header (not used + when writing a gzip file) */ +} gz_header; + +typedef gz_header FAR *gz_headerp; + +/* + The application must update next_in and avail_in when avail_in has + dropped to zero. It must update next_out and avail_out when avail_out + has dropped to zero. The application must initialize zalloc, zfree and + opaque before calling the init function. All other fields are set by the + compression library and must not be updated by the application. + + The opaque value provided by the application will be passed as the first + parameter for calls of zalloc and zfree. This can be useful for custom + memory management. The compression library attaches no meaning to the + opaque value. + + zalloc must return Z_NULL if there is not enough memory for the object. + If zlib is used in a multi-threaded application, zalloc and zfree must be + thread safe. + + On 16-bit systems, the functions zalloc and zfree must be able to allocate + exactly 65536 bytes, but will not be required to allocate more than this + if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, + pointers returned by zalloc for objects of exactly 65536 bytes *must* + have their offset normalized to zero. The default allocation function + provided by this library ensures this (see zutil.c). To reduce memory + requirements and avoid any allocation of 64K objects, at the expense of + compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h). + + The fields total_in and total_out can be used for statistics or + progress reports. After compression, total_in holds the total size of + the uncompressed data and may be saved for use in the decompressor + (particularly if the decompressor wants to decompress everything in + a single step). +*/ + + /* constants */ + +#define Z_NO_FLUSH 0 +#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */ +#define Z_SYNC_FLUSH 2 +#define Z_FULL_FLUSH 3 +#define Z_FINISH 4 +#define Z_BLOCK 5 +/* Allowed flush values; see deflate() and inflate() below for details */ + +#define Z_OK 0 +#define Z_STREAM_END 1 +#define Z_NEED_DICT 2 +#define Z_ERRNO (-1) +#define Z_STREAM_ERROR (-2) +#define Z_DATA_ERROR (-3) +#define Z_MEM_ERROR (-4) +#define Z_BUF_ERROR (-5) +#define Z_VERSION_ERROR (-6) +/* Return codes for the compression/decompression functions. Negative + * values are errors, positive values are used for special but normal events. + */ + +#define Z_NO_COMPRESSION 0 +#define Z_BEST_SPEED 1 +#define Z_BEST_COMPRESSION 9 +#define Z_DEFAULT_COMPRESSION (-1) +/* compression levels */ + +#define Z_FILTERED 1 +#define Z_HUFFMAN_ONLY 2 +#define Z_RLE 3 +#define Z_FIXED 4 +#define Z_DEFAULT_STRATEGY 0 +/* compression strategy; see deflateInit2() below for details */ + +#define Z_BINARY 0 +#define Z_TEXT 1 +#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ +#define Z_UNKNOWN 2 +/* Possible values of the data_type field (though see inflate()) */ + +#define Z_DEFLATED 8 +/* The deflate compression method (the only one supported in this version) */ + +#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ + +#define zlib_version zlibVersion() +/* for compatibility with versions < 1.0.2 */ + + /* basic functions */ + +ZEXTERN const char * ZEXPORT zlibVersion OF((void)); +/* The application can compare zlibVersion and ZLIB_VERSION for consistency. + If the first character differs, the library code actually used is + not compatible with the zlib.h header file used by the application. + This check is automatically made by deflateInit and inflateInit. + */ + +/* +ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); + + Initializes the internal stream state for compression. The fields + zalloc, zfree and opaque must be initialized before by the caller. + If zalloc and zfree are set to Z_NULL, deflateInit updates them to + use default allocation functions. + + The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: + 1 gives best speed, 9 gives best compression, 0 gives no compression at + all (the input data is simply copied a block at a time). + Z_DEFAULT_COMPRESSION requests a default compromise between speed and + compression (currently equivalent to level 6). + + deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if level is not a valid compression level, + Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible + with the version assumed by the caller (ZLIB_VERSION). + msg is set to null if there is no error message. deflateInit does not + perform any compression: this will be done by deflate(). +*/ + + +ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); +/* + deflate compresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce some + output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. deflate performs one or both of the + following actions: + + - Compress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in and avail_in are updated and + processing will resume at this point for the next call of deflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. This action is forced if the parameter flush is non zero. + Forcing flush frequently degrades the compression ratio, so this parameter + should be set only when necessary (in interactive applications). + Some output may be provided even if flush is not set. + + Before the call of deflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming + more output, and updating avail_in or avail_out accordingly; avail_out + should never be zero before the call. The application can consume the + compressed output when it wants, for example when the output buffer is full + (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK + and with zero avail_out, it must be called again after making room in the + output buffer because there might be more output pending. + + Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to + decide how much data to accumualte before producing output, in order to + maximize compression. + + If the parameter flush is set to Z_SYNC_FLUSH, all pending output is + flushed to the output buffer and the output is aligned on a byte boundary, so + that the decompressor can get all input data available so far. (In particular + avail_in is zero after the call if enough output space has been provided + before the call.) Flushing may degrade compression for some compression + algorithms and so it should be used only when necessary. + + If flush is set to Z_FULL_FLUSH, all output is flushed as with + Z_SYNC_FLUSH, and the compression state is reset so that decompression can + restart from this point if previous compressed data has been damaged or if + random access is desired. Using Z_FULL_FLUSH too often can seriously degrade + compression. + + If deflate returns with avail_out == 0, this function must be called again + with the same value of the flush parameter and more output space (updated + avail_out), until the flush is complete (deflate returns with non-zero + avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that + avail_out is greater than six to avoid repeated flush markers due to + avail_out == 0 on return. + + If the parameter flush is set to Z_FINISH, pending input is processed, + pending output is flushed and deflate returns with Z_STREAM_END if there + was enough output space; if deflate returns with Z_OK, this function must be + called again with Z_FINISH and more output space (updated avail_out) but no + more input data, until it returns with Z_STREAM_END or an error. After + deflate has returned Z_STREAM_END, the only possible operations on the + stream are deflateReset or deflateEnd. + + Z_FINISH can be used immediately after deflateInit if all the compression + is to be done in a single step. In this case, avail_out must be at least + the value returned by deflateBound (see below). If deflate does not return + Z_STREAM_END, then it must be called again as described above. + + deflate() sets strm->adler to the adler32 checksum of all input read + so far (that is, total_in bytes). + + deflate() may update strm->data_type if it can make a good guess about + the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered + binary. This field is only for information purposes and does not affect + the compression algorithm in any manner. + + deflate() returns Z_OK if some progress has been made (more input + processed or more output produced), Z_STREAM_END if all input has been + consumed and all output has been produced (only when flush is set to + Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example + if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible + (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not + fatal, and deflate() can be called again with more input and more output + space to continue compressing. +*/ + + +ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any + pending output. + + deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the + stream state was inconsistent, Z_DATA_ERROR if the stream was freed + prematurely (some input or output was discarded). In the error case, + msg may be set but then points to a static string (which must not be + deallocated). +*/ + + +/* +ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); + + Initializes the internal stream state for decompression. The fields + next_in, avail_in, zalloc, zfree and opaque must be initialized before by + the caller. If next_in is not Z_NULL and avail_in is large enough (the exact + value depends on the compression method), inflateInit determines the + compression method from the zlib header and allocates all data structures + accordingly; otherwise the allocation will be deferred to the first call of + inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to + use default allocation functions. + + inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller. msg is set to null if there is no error + message. inflateInit does not perform any decompression apart from reading + the zlib header if present: this will be done by inflate(). (So next_in and + avail_in may be modified, but next_out and avail_out are unchanged.) +*/ + + +ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); +/* + inflate decompresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. inflate performs one or both of the + following actions: + + - Decompress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in is updated and processing + will resume at this point for the next call of inflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. inflate() provides as much output as possible, until there + is no more input data or no more space in the output buffer (see below + about the flush parameter). + + Before the call of inflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming + more output, and updating the next_* and avail_* values accordingly. + The application can consume the uncompressed output when it wants, for + example when the output buffer is full (avail_out == 0), or after each + call of inflate(). If inflate returns Z_OK and with zero avail_out, it + must be called again after making room in the output buffer because there + might be more output pending. + + The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, + Z_FINISH, or Z_BLOCK. Z_SYNC_FLUSH requests that inflate() flush as much + output as possible to the output buffer. Z_BLOCK requests that inflate() stop + if and when it gets to the next deflate block boundary. When decoding the + zlib or gzip format, this will cause inflate() to return immediately after + the header and before the first block. When doing a raw inflate, inflate() + will go ahead and process the first block, and will return when it gets to + the end of that block, or when it runs out of data. + + The Z_BLOCK option assists in appending to or combining deflate streams. + Also to assist in this, on return inflate() will set strm->data_type to the + number of unused bits in the last byte taken from strm->next_in, plus 64 + if inflate() is currently decoding the last block in the deflate stream, + plus 128 if inflate() returned immediately after decoding an end-of-block + code or decoding the complete header up to just before the first byte of the + deflate stream. The end-of-block will not be indicated until all of the + uncompressed data from that block has been written to strm->next_out. The + number of unused bits may in general be greater than seven, except when + bit 7 of data_type is set, in which case the number of unused bits will be + less than eight. + + inflate() should normally be called until it returns Z_STREAM_END or an + error. However if all decompression is to be performed in a single step + (a single call of inflate), the parameter flush should be set to + Z_FINISH. In this case all pending input is processed and all pending + output is flushed; avail_out must be large enough to hold all the + uncompressed data. (The size of the uncompressed data may have been saved + by the compressor for this purpose.) The next operation on this stream must + be inflateEnd to deallocate the decompression state. The use of Z_FINISH + is never required, but can be used to inform inflate that a faster approach + may be used for the single inflate() call. + + In this implementation, inflate() always flushes as much output as + possible to the output buffer, and always uses the faster approach on the + first call. So the only effect of the flush parameter in this implementation + is on the return value of inflate(), as noted below, or when it returns early + because Z_BLOCK is used. + + If a preset dictionary is needed after this call (see inflateSetDictionary + below), inflate sets strm->adler to the adler32 checksum of the dictionary + chosen by the compressor and returns Z_NEED_DICT; otherwise it sets + strm->adler to the adler32 checksum of all output produced so far (that is, + total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described + below. At the end of the stream, inflate() checks that its computed adler32 + checksum is equal to that saved by the compressor and returns Z_STREAM_END + only if the checksum is correct. + + inflate() will decompress and check either zlib-wrapped or gzip-wrapped + deflate data. The header type is detected automatically. Any information + contained in the gzip header is not retained, so applications that need that + information should instead use raw inflate, see inflateInit2() below, or + inflateBack() and perform their own processing of the gzip header and + trailer. + + inflate() returns Z_OK if some progress has been made (more input processed + or more output produced), Z_STREAM_END if the end of the compressed data has + been reached and all uncompressed output has been produced, Z_NEED_DICT if a + preset dictionary is needed at this point, Z_DATA_ERROR if the input data was + corrupted (input stream not conforming to the zlib format or incorrect check + value), Z_STREAM_ERROR if the stream structure was inconsistent (for example + if next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory, + Z_BUF_ERROR if no progress is possible or if there was not enough room in the + output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and + inflate() can be called again with more input and more output space to + continue decompressing. If Z_DATA_ERROR is returned, the application may then + call inflateSync() to look for a good compression block if a partial recovery + of the data is desired. +*/ + + +ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any + pending output. + + inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state + was inconsistent. In the error case, msg may be set but then points to a + static string (which must not be deallocated). +*/ + + /* Advanced functions */ + +/* + The following functions are needed only in some special applications. +*/ + +/* +ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, + int level, + int method, + int windowBits, + int memLevel, + int strategy)); + + This is another version of deflateInit with more compression options. The + fields next_in, zalloc, zfree and opaque must be initialized before by + the caller. + + The method parameter is the compression method. It must be Z_DEFLATED in + this version of the library. + + The windowBits parameter is the base two logarithm of the window size + (the size of the history buffer). It should be in the range 8..15 for this + version of the library. Larger values of this parameter result in better + compression at the expense of memory usage. The default value is 15 if + deflateInit is used instead. + + windowBits can also be -8..-15 for raw deflate. In this case, -windowBits + determines the window size. deflate() will then generate raw deflate data + with no zlib header or trailer, and will not compute an adler32 check value. + + windowBits can also be greater than 15 for optional gzip encoding. Add + 16 to windowBits to write a simple gzip header and trailer around the + compressed data instead of a zlib wrapper. The gzip header will have no + file name, no extra data, no comment, no modification time (set to zero), + no header crc, and the operating system will be set to 255 (unknown). If a + gzip stream is being written, strm->adler is a crc32 instead of an adler32. + + The memLevel parameter specifies how much memory should be allocated + for the internal compression state. memLevel=1 uses minimum memory but + is slow and reduces compression ratio; memLevel=9 uses maximum memory + for optimal speed. The default value is 8. See zconf.h for total memory + usage as a function of windowBits and memLevel. + + The strategy parameter is used to tune the compression algorithm. Use the + value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a + filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no + string match), or Z_RLE to limit match distances to one (run-length + encoding). Filtered data consists mostly of small values with a somewhat + random distribution. In this case, the compression algorithm is tuned to + compress them better. The effect of Z_FILTERED is to force more Huffman + coding and less string matching; it is somewhat intermediate between + Z_DEFAULT and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as + Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy + parameter only affects the compression ratio but not the correctness of the + compressed output even if it is not set appropriately. Z_FIXED prevents the + use of dynamic Huffman codes, allowing for a simpler decoder for special + applications. + + deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid + method). msg is set to null if there is no error message. deflateInit2 does + not perform any compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the compression dictionary from the given byte sequence + without producing any compressed output. This function must be called + immediately after deflateInit, deflateInit2 or deflateReset, before any + call of deflate. The compressor and decompressor must use exactly the same + dictionary (see inflateSetDictionary). + + The dictionary should consist of strings (byte sequences) that are likely + to be encountered later in the data to be compressed, with the most commonly + used strings preferably put towards the end of the dictionary. Using a + dictionary is most useful when the data to be compressed is short and can be + predicted with good accuracy; the data can then be compressed better than + with the default empty dictionary. + + Depending on the size of the compression data structures selected by + deflateInit or deflateInit2, a part of the dictionary may in effect be + discarded, for example if the dictionary is larger than the window size in + deflate or deflate2. Thus the strings most likely to be useful should be + put at the end of the dictionary, not at the front. In addition, the + current implementation of deflate will use at most the window size minus + 262 bytes of the provided dictionary. + + Upon return of this function, strm->adler is set to the adler32 value + of the dictionary; the decompressor may later use this value to determine + which dictionary has been used by the compressor. (The adler32 value + applies to the whole dictionary even if only a subset of the dictionary is + actually used by the compressor.) If a raw deflate was requested, then the + adler32 value is not computed and strm->adler is not set. + + deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a + parameter is invalid (such as NULL dictionary) or the stream state is + inconsistent (for example if deflate has already been called for this stream + or if the compression method is bsort). deflateSetDictionary does not + perform any compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when several compression strategies will be + tried, for example when there are several ways of pre-processing the input + data with a filter. The streams that will be discarded should then be freed + by calling deflateEnd. Note that deflateCopy duplicates the internal + compression state which can be quite large, so this strategy is slow and + can consume lots of memory. + + deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); +/* + This function is equivalent to deflateEnd followed by deflateInit, + but does not free and reallocate all the internal compression state. + The stream will keep the same compression level and any other attributes + that may have been set by deflateInit2. + + deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being NULL). +*/ + +ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, + int level, + int strategy)); +/* + Dynamically update the compression level and compression strategy. The + interpretation of level and strategy is as in deflateInit2. This can be + used to switch between compression and straight copy of the input data, or + to switch to a different kind of input data requiring a different + strategy. If the compression level is changed, the input available so far + is compressed with the old level (and may be flushed); the new level will + take effect only at the next call of deflate(). + + Before the call of deflateParams, the stream state must be set as for + a call of deflate(), since the currently available input may have to + be compressed and flushed. In particular, strm->avail_out must be non-zero. + + deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source + stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR + if strm->avail_out was zero. +*/ + +ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, + int good_length, + int max_lazy, + int nice_length, + int max_chain)); +/* + Fine tune deflate's internal compression parameters. This should only be + used by someone who understands the algorithm used by zlib's deflate for + searching for the best matching string, and even then only by the most + fanatic optimizer trying to squeeze out the last compressed bit for their + specific input data. Read the deflate.c source code for the meaning of the + max_lazy, good_length, nice_length, and max_chain parameters. + + deflateTune() can be called after deflateInit() or deflateInit2(), and + returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. + */ + +ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, + uLong sourceLen)); +/* + deflateBound() returns an upper bound on the compressed size after + deflation of sourceLen bytes. It must be called after deflateInit() + or deflateInit2(). This would be used to allocate an output buffer + for deflation in a single pass, and so would be called before deflate(). +*/ + +ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + deflatePrime() inserts bits in the deflate output stream. The intent + is that this function is used to start off the deflate output with the + bits leftover from a previous deflate stream when appending to it. As such, + this function can only be used for raw deflate, and must be used before the + first deflate() call after a deflateInit2() or deflateReset(). bits must be + less than or equal to 16, and that many of the least significant bits of + value will be inserted in the output. + + deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, + gz_headerp head)); +/* + deflateSetHeader() provides gzip header information for when a gzip + stream is requested by deflateInit2(). deflateSetHeader() may be called + after deflateInit2() or deflateReset() and before the first call of + deflate(). The text, time, os, extra field, name, and comment information + in the provided gz_header structure are written to the gzip header (xflag is + ignored -- the extra flags are set according to the compression level). The + caller must assure that, if not Z_NULL, name and comment are terminated with + a zero byte, and that if extra is not Z_NULL, that extra_len bytes are + available there. If hcrc is true, a gzip header crc is included. Note that + the current versions of the command-line version of gzip (up through version + 1.3.x) do not support header crc's, and will report that it is a "multi-part + gzip file" and give up. + + If deflateSetHeader is not used, the default gzip header has text false, + the time set to zero, and os set to 255, with no extra, name, or comment + fields. The gzip header is returned to the default state by deflateReset(). + + deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, + int windowBits)); + + This is another version of inflateInit with an extra parameter. The + fields next_in, avail_in, zalloc, zfree and opaque must be initialized + before by the caller. + + The windowBits parameter is the base two logarithm of the maximum window + size (the size of the history buffer). It should be in the range 8..15 for + this version of the library. The default value is 15 if inflateInit is used + instead. windowBits must be greater than or equal to the windowBits value + provided to deflateInit2() while compressing, or it must be equal to 15 if + deflateInit2() was not used. If a compressed stream with a larger window + size is given as input, inflate() will return with the error code + Z_DATA_ERROR instead of trying to allocate a larger window. + + windowBits can also be -8..-15 for raw inflate. In this case, -windowBits + determines the window size. inflate() will then process raw deflate data, + not looking for a zlib or gzip header, not generating a check value, and not + looking for any check values for comparison at the end of the stream. This + is for use with other formats that use the deflate compressed data format + such as zip. Those formats provide their own check values. If a custom + format is developed using the raw deflate format for compressed data, it is + recommended that a check value such as an adler32 or a crc32 be applied to + the uncompressed data as is done in the zlib, gzip, and zip formats. For + most applications, the zlib format should be used as is. Note that comments + above on the use in deflateInit2() applies to the magnitude of windowBits. + + windowBits can also be greater than 15 for optional gzip decoding. Add + 32 to windowBits to enable zlib and gzip decoding with automatic header + detection, or add 16 to decode only the gzip format (the zlib format will + return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is + a crc32 instead of an adler32. + + inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if a parameter is invalid (such as a null strm). msg + is set to null if there is no error message. inflateInit2 does not perform + any decompression apart from reading the zlib header if present: this will + be done by inflate(). (So next_in and avail_in may be modified, but next_out + and avail_out are unchanged.) +*/ + +ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the decompression dictionary from the given uncompressed byte + sequence. This function must be called immediately after a call of inflate, + if that call returned Z_NEED_DICT. The dictionary chosen by the compressor + can be determined from the adler32 value returned by that call of inflate. + The compressor and decompressor must use exactly the same dictionary (see + deflateSetDictionary). For raw inflate, this function can be called + immediately after inflateInit2() or inflateReset() and before any call of + inflate() to set the dictionary. The application must insure that the + dictionary that was used for compression is provided. + + inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a + parameter is invalid (such as NULL dictionary) or the stream state is + inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the + expected one (incorrect adler32 value). inflateSetDictionary does not + perform any decompression: this will be done by subsequent calls of + inflate(). +*/ + +ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); +/* + Skips invalid compressed data until a full flush point (see above the + description of deflate with Z_FULL_FLUSH) can be found, or until all + available input is skipped. No output is provided. + + inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR + if no more input was provided, Z_DATA_ERROR if no flush point has been found, + or Z_STREAM_ERROR if the stream structure was inconsistent. In the success + case, the application may save the current current value of total_in which + indicates where valid compressed data was found. In the error case, the + application may repeatedly call inflateSync, providing more input each time, + until success or end of the input data. +*/ + +ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when randomly accessing a large stream. The + first pass through the stream can periodically record the inflate state, + allowing restarting inflate at those points when randomly accessing the + stream. + + inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); +/* + This function is equivalent to inflateEnd followed by inflateInit, + but does not free and reallocate all the internal decompression state. + The stream will keep attributes that may have been set by inflateInit2. + + inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being NULL). +*/ + +ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + This function inserts bits in the inflate input stream. The intent is + that this function is used to start inflating at a bit position in the + middle of a byte. The provided bits will be used before any bytes are used + from next_in. This function should only be used with raw inflate, and + should be used before the first inflate() call after inflateInit2() or + inflateReset(). bits must be less than or equal to 16, and that many of the + least significant bits of value will be inserted in the input. + + inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, + gz_headerp head)); +/* + inflateGetHeader() requests that gzip header information be stored in the + provided gz_header structure. inflateGetHeader() may be called after + inflateInit2() or inflateReset(), and before the first call of inflate(). + As inflate() processes the gzip stream, head->done is zero until the header + is completed, at which time head->done is set to one. If a zlib stream is + being decoded, then head->done is set to -1 to indicate that there will be + no gzip header information forthcoming. Note that Z_BLOCK can be used to + force inflate() to return immediately after header processing is complete + and before any actual data is decompressed. + + The text, time, xflags, and os fields are filled in with the gzip header + contents. hcrc is set to true if there is a header CRC. (The header CRC + was valid if done is set to one.) If extra is not Z_NULL, then extra_max + contains the maximum number of bytes to write to extra. Once done is true, + extra_len contains the actual extra field length, and extra contains the + extra field, or that field truncated if extra_max is less than extra_len. + If name is not Z_NULL, then up to name_max characters are written there, + terminated with a zero unless the length is greater than name_max. If + comment is not Z_NULL, then up to comm_max characters are written there, + terminated with a zero unless the length is greater than comm_max. When + any of extra, name, or comment are not Z_NULL and the respective field is + not present in the header, then that field is set to Z_NULL to signal its + absence. This allows the use of deflateSetHeader() with the returned + structure to duplicate the header. However if those fields are set to + allocated memory, then the application will need to save those pointers + elsewhere so that they can be eventually freed. + + If inflateGetHeader is not used, then the header information is simply + discarded. The header is always checked for validity, including the header + CRC if present. inflateReset() will reset the process to discard the header + information. The application would need to call inflateGetHeader() again to + retrieve the header from the next gzip stream. + + inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, + unsigned char FAR *window)); + + Initialize the internal stream state for decompression using inflateBack() + calls. The fields zalloc, zfree and opaque in strm must be initialized + before the call. If zalloc and zfree are Z_NULL, then the default library- + derived memory allocation routines are used. windowBits is the base two + logarithm of the window size, in the range 8..15. window is a caller + supplied buffer of that size. Except for special applications where it is + assured that deflate was used with small window sizes, windowBits must be 15 + and a 32K byte window must be supplied to be able to decompress general + deflate streams. + + See inflateBack() for the usage of these routines. + + inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of + the paramaters are invalid, Z_MEM_ERROR if the internal state could not + be allocated, or Z_VERSION_ERROR if the version of the library does not + match the version of the header file. +*/ + +typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *)); +typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); + +ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, + in_func in, void FAR *in_desc, + out_func out, void FAR *out_desc)); +/* + inflateBack() does a raw inflate with a single call using a call-back + interface for input and output. This is more efficient than inflate() for + file i/o applications in that it avoids copying between the output and the + sliding window by simply making the window itself the output buffer. This + function trusts the application to not change the output buffer passed by + the output function, at least until inflateBack() returns. + + inflateBackInit() must be called first to allocate the internal state + and to initialize the state with the user-provided window buffer. + inflateBack() may then be used multiple times to inflate a complete, raw + deflate stream with each call. inflateBackEnd() is then called to free + the allocated state. + + A raw deflate stream is one with no zlib or gzip header or trailer. + This routine would normally be used in a utility that reads zip or gzip + files and writes out uncompressed files. The utility would decode the + header and process the trailer on its own, hence this routine expects + only the raw deflate stream to decompress. This is different from the + normal behavior of inflate(), which expects either a zlib or gzip header and + trailer around the deflate stream. + + inflateBack() uses two subroutines supplied by the caller that are then + called by inflateBack() for input and output. inflateBack() calls those + routines until it reads a complete deflate stream and writes out all of the + uncompressed data, or until it encounters an error. The function's + parameters and return types are defined above in the in_func and out_func + typedefs. inflateBack() will call in(in_desc, &buf) which should return the + number of bytes of provided input, and a pointer to that input in buf. If + there is no input available, in() must return zero--buf is ignored in that + case--and inflateBack() will return a buffer error. inflateBack() will call + out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() + should return zero on success, or non-zero on failure. If out() returns + non-zero, inflateBack() will return with an error. Neither in() nor out() + are permitted to change the contents of the window provided to + inflateBackInit(), which is also the buffer that out() uses to write from. + The length written by out() will be at most the window size. Any non-zero + amount of input may be provided by in(). + + For convenience, inflateBack() can be provided input on the first call by + setting strm->next_in and strm->avail_in. If that input is exhausted, then + in() will be called. Therefore strm->next_in must be initialized before + calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called + immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in + must also be initialized, and then if strm->avail_in is not zero, input will + initially be taken from strm->next_in[0 .. strm->avail_in - 1]. + + The in_desc and out_desc parameters of inflateBack() is passed as the + first parameter of in() and out() respectively when they are called. These + descriptors can be optionally used to pass any information that the caller- + supplied in() and out() functions need to do their job. + + On return, inflateBack() will set strm->next_in and strm->avail_in to + pass back any unused input that was provided by the last in() call. The + return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR + if in() or out() returned an error, Z_DATA_ERROR if there was a format + error in the deflate stream (in which case strm->msg is set to indicate the + nature of the error), or Z_STREAM_ERROR if the stream was not properly + initialized. In the case of Z_BUF_ERROR, an input or output error can be + distinguished using strm->next_in which will be Z_NULL only if in() returned + an error. If strm->next is not Z_NULL, then the Z_BUF_ERROR was due to + out() returning non-zero. (in() will always be called before out(), so + strm->next_in is assured to be defined if out() returns non-zero.) Note + that inflateBack() cannot return Z_OK. +*/ + +ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); +/* + All memory allocated by inflateBackInit() is freed. + + inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream + state was inconsistent. +*/ + +ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); +/* Return flags indicating compile-time options. + + Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: + 1.0: size of uInt + 3.2: size of uLong + 5.4: size of voidpf (pointer) + 7.6: size of z_off_t + + Compiler, assembler, and debug options: + 8: DEBUG + 9: ASMV or ASMINF -- use ASM code + 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention + 11: 0 (reserved) + + One-time table building (smaller code, but not thread-safe if true): + 12: BUILDFIXED -- build static block decoding tables when needed + 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed + 14,15: 0 (reserved) + + Library content (indicates missing functionality): + 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking + deflate code when not needed) + 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect + and decode gzip streams (to avoid linking crc code) + 18-19: 0 (reserved) + + Operation variations (changes in library functionality): + 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate + 21: FASTEST -- deflate algorithm with only one, lowest compression level + 22,23: 0 (reserved) + + The sprintf variant used by gzprintf (zero is best): + 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format + 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! + 26: 0 = returns value, 1 = void -- 1 means inferred string length returned + + Remainder: + 27-31: 0 (reserved) + */ + + + /* utility functions */ + +/* + The following utility functions are implemented on top of the + basic stream-oriented functions. To simplify the interface, some + default options are assumed (compression level and memory usage, + standard memory allocation functions). The source code of these + utility functions can easily be modified if you need special options. +*/ + +ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Compresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total + size of the destination buffer, which must be at least the value returned + by compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + This function can be used to compress a whole file at once if the + input file is mmap'ed. + compress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer. +*/ + +ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen, + int level)); +/* + Compresses the source buffer into the destination buffer. The level + parameter has the same meaning as in deflateInit. sourceLen is the byte + length of the source buffer. Upon entry, destLen is the total size of the + destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + + compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_BUF_ERROR if there was not enough room in the output buffer, + Z_STREAM_ERROR if the level parameter is invalid. +*/ + +ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); +/* + compressBound() returns an upper bound on the compressed size after + compress() or compress2() on sourceLen bytes. It would be used before + a compress() or compress2() call to allocate the destination buffer. +*/ + +ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Decompresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total + size of the destination buffer, which must be large enough to hold the + entire uncompressed data. (The size of the uncompressed data must have + been saved previously by the compressor and transmitted to the decompressor + by some mechanism outside the scope of this compression library.) + Upon exit, destLen is the actual size of the compressed buffer. + This function can be used to decompress a whole file at once if the + input file is mmap'ed. + + uncompress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. +*/ + + +typedef voidp gzFile; + +ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); +/* + Opens a gzip (.gz) file for reading or writing. The mode parameter + is as in fopen ("rb" or "wb") but can also include a compression level + ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for + Huffman only compression as in "wb1h", or 'R' for run-length encoding + as in "wb1R". (See the description of deflateInit2 for more information + about the strategy parameter.) + + gzopen can be used to read a file which is not in gzip format; in this + case gzread will directly read from the file without decompression. + + gzopen returns NULL if the file could not be opened or if there was + insufficient memory to allocate the (de)compression state; errno + can be checked to distinguish the two cases (if errno is zero, the + zlib error is Z_MEM_ERROR). */ + +ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); +/* + gzdopen() associates a gzFile with the file descriptor fd. File + descriptors are obtained from calls like open, dup, creat, pipe or + fileno (in the file has been previously opened with fopen). + The mode parameter is as in gzopen. + The next call of gzclose on the returned gzFile will also close the + file descriptor fd, just like fclose(fdopen(fd), mode) closes the file + descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode). + gzdopen returns NULL if there was insufficient memory to allocate + the (de)compression state. +*/ + +ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); +/* + Dynamically update the compression level or strategy. See the description + of deflateInit2 for the meaning of these parameters. + gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not + opened for writing. +*/ + +ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); +/* + Reads the given number of uncompressed bytes from the compressed file. + If the input file was not in gzip format, gzread copies the given number + of bytes into the buffer. + gzread returns the number of uncompressed bytes actually read (0 for + end of file, -1 for error). */ + +ZEXTERN int ZEXPORT gzwrite OF((gzFile file, + voidpc buf, unsigned len)); +/* + Writes the given number of uncompressed bytes into the compressed file. + gzwrite returns the number of uncompressed bytes actually written + (0 in case of error). +*/ + +ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...)); +/* + Converts, formats, and writes the args to the compressed file under + control of the format string, as in fprintf. gzprintf returns the number of + uncompressed bytes actually written (0 in case of error). The number of + uncompressed bytes written is limited to 4095. The caller should assure that + this limit is not exceeded. If it is exceeded, then gzprintf() will return + return an error (0) with nothing written. In this case, there may also be a + buffer overflow with unpredictable consequences, which is possible only if + zlib was compiled with the insecure functions sprintf() or vsprintf() + because the secure snprintf() or vsnprintf() functions were not available. +*/ + +ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); +/* + Writes the given null-terminated string to the compressed file, excluding + the terminating null character. + gzputs returns the number of characters written, or -1 in case of error. +*/ + +ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); +/* + Reads bytes from the compressed file until len-1 characters are read, or + a newline character is read and transferred to buf, or an end-of-file + condition is encountered. The string is then terminated with a null + character. + gzgets returns buf, or Z_NULL in case of error. +*/ + +ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); +/* + Writes c, converted to an unsigned char, into the compressed file. + gzputc returns the value that was written, or -1 in case of error. +*/ + +ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); +/* + Reads one byte from the compressed file. gzgetc returns this byte + or -1 in case of end of file or error. +*/ + +ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); +/* + Push one character back onto the stream to be read again later. + Only one character of push-back is allowed. gzungetc() returns the + character pushed, or -1 on failure. gzungetc() will fail if a + character has been pushed but not read yet, or if c is -1. The pushed + character will be discarded if the stream is repositioned with gzseek() + or gzrewind(). +*/ + +ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); +/* + Flushes all pending output into the compressed file. The parameter + flush is as in the deflate() function. The return value is the zlib + error number (see function gzerror below). gzflush returns Z_OK if + the flush parameter is Z_FINISH and all output could be flushed. + gzflush should be called only when strictly necessary because it can + degrade compression. +*/ + +ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, + z_off_t offset, int whence)); +/* + Sets the starting position for the next gzread or gzwrite on the + given compressed file. The offset represents a number of bytes in the + uncompressed data stream. The whence parameter is defined as in lseek(2); + the value SEEK_END is not supported. + If the file is opened for reading, this function is emulated but can be + extremely slow. If the file is opened for writing, only forward seeks are + supported; gzseek then compresses a sequence of zeroes up to the new + starting position. + + gzseek returns the resulting offset location as measured in bytes from + the beginning of the uncompressed stream, or -1 in case of error, in + particular if the file is opened for writing and the new starting position + would be before the current position. +*/ + +ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); +/* + Rewinds the given file. This function is supported only for reading. + + gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) +*/ + +ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); +/* + Returns the starting position for the next gzread or gzwrite on the + given compressed file. This position represents a number of bytes in the + uncompressed data stream. + + gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) +*/ + +ZEXTERN int ZEXPORT gzeof OF((gzFile file)); +/* + Returns 1 when EOF has previously been detected reading the given + input stream, otherwise zero. +*/ + +ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); +/* + Returns 1 if file is being read directly without decompression, otherwise + zero. +*/ + +ZEXTERN int ZEXPORT gzclose OF((gzFile file)); +/* + Flushes all pending output if necessary, closes the compressed file + and deallocates all the (de)compression state. The return value is the zlib + error number (see function gzerror below). +*/ + +ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); +/* + Returns the error message for the last error which occurred on the + given compressed file. errnum is set to zlib error number. If an + error occurred in the file system and not in the compression library, + errnum is set to Z_ERRNO and the application may consult errno + to get the exact error code. +*/ + +ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); +/* + Clears the error and end-of-file flags for file. This is analogous to the + clearerr() function in stdio. This is useful for continuing to read a gzip + file that is being written concurrently. +*/ + + /* checksum functions */ + +/* + These functions are not related to compression but are exported + anyway because they might be useful in applications using the + compression library. +*/ + +ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); +/* + Update a running Adler-32 checksum with the bytes buf[0..len-1] and + return the updated checksum. If buf is NULL, this function returns + the required initial value for the checksum. + An Adler-32 checksum is almost as reliable as a CRC32 but can be computed + much faster. Usage example: + + uLong adler = adler32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + adler = adler32(adler, buffer, length); + } + if (adler != original_adler) error(); +*/ + +ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, + z_off_t len2)); +/* + Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 + and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for + each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of + seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. +*/ + +ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); +/* + Update a running CRC-32 with the bytes buf[0..len-1] and return the + updated CRC-32. If buf is NULL, this function returns the required initial + value for the for the crc. Pre- and post-conditioning (one's complement) is + performed within this function so it shouldn't be done by the application. + Usage example: + + uLong crc = crc32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + crc = crc32(crc, buffer, length); + } + if (crc != original_crc) error(); +*/ + +ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); + +/* + Combine two CRC-32 check values into one. For two sequences of bytes, + seq1 and seq2 with lengths len1 and len2, CRC-32 check values were + calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 + check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and + len2. +*/ + + + /* various hacks, don't look :) */ + +/* deflateInit and inflateInit are macros to allow checking the zlib version + * and the compiler's view of z_stream: + */ +ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, + int windowBits, int memLevel, + int strategy, const char *version, + int stream_size)); +ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, + unsigned char FAR *window, + const char *version, + int stream_size)); +#define deflateInit(strm, level) \ + deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream)) +#define inflateInit(strm) \ + inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream)) +#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ + deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ + (strategy), ZLIB_VERSION, sizeof(z_stream)) +#define inflateInit2(strm, windowBits) \ + inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream)) +#define inflateBackInit(strm, windowBits, window) \ + inflateBackInit_((strm), (windowBits), (window), \ + ZLIB_VERSION, sizeof(z_stream)) + + +#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) + struct internal_state {int dummy;}; /* hack for buggy compilers */ +#endif + +ZEXTERN const char * ZEXPORT zError OF((int)); +ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp z)); +ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void)); + +#ifdef __cplusplus +} +#endif + +#endif /* ZLIB_H */ diff --git a/Libraries/zlib123/zutil.cpp b/Libraries/zlib123/zutil.cpp new file mode 100644 index 0000000..e092219 --- /dev/null +++ b/Libraries/zlib123/zutil.cpp @@ -0,0 +1,317 @@ +/* zutil.c -- target dependent utility functions for the compression library + * Copyright (C) 1995-2005 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#include "zutil.h" + +#ifndef NO_DUMMY_DECL +struct internal_state {int dummy;}; /* for buggy compilers */ +#endif + +const char * const z_errmsg[10] = { +"need dictionary", /* Z_NEED_DICT 2 */ +"stream end", /* Z_STREAM_END 1 */ +"", /* Z_OK 0 */ +"file error", /* Z_ERRNO (-1) */ +"stream error", /* Z_STREAM_ERROR (-2) */ +"data error", /* Z_DATA_ERROR (-3) */ +"insufficient memory", /* Z_MEM_ERROR (-4) */ +"buffer error", /* Z_BUF_ERROR (-5) */ +"incompatible version",/* Z_VERSION_ERROR (-6) */ +""}; + + +const char * ZEXPORT zlibVersion() +{ + return ZLIB_VERSION; +} + +uLong ZEXPORT zlibCompileFlags() +{ + uLong flags; + + flags = 0; + switch (sizeof(uInt)) { + case 2: break; + case 4: flags += 1; break; + case 8: flags += 2; break; + default: flags += 3; + } + switch (sizeof(uLong)) { + case 2: break; + case 4: flags += 1 << 2; break; + case 8: flags += 2 << 2; break; + default: flags += 3 << 2; + } + switch (sizeof(voidpf)) { + case 2: break; + case 4: flags += 1 << 4; break; + case 8: flags += 2 << 4; break; + default: flags += 3 << 4; + } + switch (sizeof(z_off_t)) { + case 2: break; + case 4: flags += 1 << 6; break; + case 8: flags += 2 << 6; break; + default: flags += 3 << 6; + } +#ifdef DEBUG + flags += 1 << 8; +#endif +#if defined(ASMV) || defined(ASMINF) + flags += 1 << 9; +#endif +#ifdef ZLIB_WINAPI + flags += 1 << 10; +#endif +#ifdef BUILDFIXED + flags += 1 << 12; +#endif +#ifdef DYNAMIC_CRC_TABLE + flags += 1 << 13; +#endif +#ifdef NO_GZCOMPRESS + flags += 1L << 16; +#endif +#ifdef NO_GZIP + flags += 1L << 17; +#endif +#ifdef PKZIP_BUG_WORKAROUND + flags += 1L << 20; +#endif +#ifdef FASTEST + flags += 1L << 21; +#endif +#ifdef STDC +# ifdef NO_vsnprintf + flags += 1L << 25; +# ifdef HAS_vsprintf_void + flags += 1L << 26; +# endif +# else +# ifdef HAS_vsnprintf_void + flags += 1L << 26; +# endif +# endif +#else + flags += 1L << 24; +# ifdef NO_snprintf + flags += 1L << 25; +# ifdef HAS_sprintf_void + flags += 1L << 26; +# endif +# else +# ifdef HAS_snprintf_void + flags += 1L << 26; +# endif +# endif +#endif + return flags; +} + +#ifdef DEBUG + +# ifndef verbose +# define verbose 0 +# endif +int z_verbose = verbose; + +void z_error (char *m) +{ + fprintf(stderr, "%s\n", m); + exit(1); +} +#endif + +/* exported to allow conversion of error code to string for compress() and + * uncompress() + */ +const char * ZEXPORT zError(//err) + int err) +{ + return ERR_MSG(err); +} + +#if defined(_WIN32_WCE) + /* The Microsoft C Run-Time Library for Windows CE doesn't have + * errno. We define it as a global variable to simplify porting. + * Its value is always 0 and should not be used. + */ + int errno = 0; +#endif + +#ifndef HAVE_MEMCPY + +void zmemcpy(dest, source, len) + Bytef* dest; + const Bytef* source; + uInt len; +{ + if (len == 0) return; + do { + *dest++ = *source++; /* ??? to be unrolled */ + } while (--len != 0); +} + +int zmemcmp(s1, s2, len) + const Bytef* s1; + const Bytef* s2; + uInt len; +{ + uInt j; + + for (j = 0; j < len; j++) { + if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1; + } + return 0; +} + +void zmemzero(dest, len) + Bytef* dest; + uInt len; +{ + if (len == 0) return; + do { + *dest++ = 0; /* ??? to be unrolled */ + } while (--len != 0); +} +#endif + + +#ifdef SYS16BIT + +#ifdef __TURBOC__ +/* Turbo C in 16-bit mode */ + +# define MY_ZCALLOC + +/* Turbo C malloc() does not allow dynamic allocation of 64K bytes + * and farmalloc(64K) returns a pointer with an offset of 8, so we + * must fix the pointer. Warning: the pointer must be put back to its + * original form in order to free it, use zcfree(). + */ + +#define MAX_PTR 10 +/* 10*64K = 640K */ + +local int next_ptr = 0; + +typedef struct ptr_table_s { + voidpf org_ptr; + voidpf new_ptr; +} ptr_table; + +local ptr_table table[MAX_PTR]; +/* This table is used to remember the original form of pointers + * to large buffers (64K). Such pointers are normalized with a zero offset. + * Since MSDOS is not a preemptive multitasking OS, this table is not + * protected from concurrent access. This hack doesn't work anyway on + * a protected system like OS/2. Use Microsoft C instead. + */ + +voidpf zcalloc (voidpf opaque, unsigned items, unsigned size) +{ + voidpf buf = opaque; /* just to make some compilers happy */ + ulg bsize = (ulg)items*size; + + /* If we allocate less than 65520 bytes, we assume that farmalloc + * will return a usable pointer which doesn't have to be normalized. + */ + if (bsize < 65520L) { + buf = farmalloc(bsize); + if (*(ush*)&buf != 0) return buf; + } else { + buf = farmalloc(bsize + 16L); + } + if (buf == NULL || next_ptr >= MAX_PTR) return NULL; + table[next_ptr].org_ptr = buf; + + /* Normalize the pointer to seg:0 */ + *((ush*)&buf+1) += ((ush)((uch*)buf-0) + 15) >> 4; + *(ush*)&buf = 0; + table[next_ptr++].new_ptr = buf; + return buf; +} + +void zcfree (voidpf opaque, voidpf ptr) +{ + int n; + if (*(ush*)&ptr != 0) { /* object < 64K */ + farfree(ptr); + return; + } + /* Find the original pointer */ + for (n = 0; n < next_ptr; n++) { + if (ptr != table[n].new_ptr) continue; + + farfree(table[n].org_ptr); + while (++n < next_ptr) { + table[n-1] = table[n]; + } + next_ptr--; + return; + } + ptr = opaque; /* just to make some compilers happy */ + Assert(0, "zcfree: ptr not found"); +} + +#endif /* __TURBOC__ */ + + +#ifdef M_I86 +/* Microsoft C in 16-bit mode */ + +# define MY_ZCALLOC + +#if (!defined(_MSC_VER) || (_MSC_VER <= 600)) +# define _halloc halloc +# define _hfree hfree +#endif + +voidpf zcalloc (voidpf opaque, unsigned items, unsigned size) +{ + if (opaque) opaque = 0; /* to make compiler happy */ + return _halloc((long)items, size); +} + +void zcfree (voidpf opaque, voidpf ptr) +{ + if (opaque) opaque = 0; /* to make compiler happy */ + _hfree(ptr); +} + +#endif /* M_I86 */ + +#endif /* SYS16BIT */ + + +#ifndef MY_ZCALLOC /* Any system without a special alloc function */ + +#ifndef STDC +extern voidp malloc OF((uInt size)); +extern voidp calloc OF((uInt items, uInt size)); +extern void free OF((voidpf ptr)); +#endif + +voidpf zcalloc (//opaque, items, size) + voidpf opaque, + unsigned items, + unsigned size) +{ + if (opaque) items += size - size; /* make compiler happy */ + return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) : + (voidpf)calloc(items, size); +} + +void zcfree (//opaque, ptr) + voidpf opaque, + voidpf ptr) +{ + free(ptr); + if (opaque) return; /* make compiler happy */ +} + +#endif /* MY_ZCALLOC */ diff --git a/Libraries/zlib123/zutil.h b/Libraries/zlib123/zutil.h new file mode 100644 index 0000000..0ba6e02 --- /dev/null +++ b/Libraries/zlib123/zutil.h @@ -0,0 +1,269 @@ +/* zutil.h -- internal interface and configuration of the compression library + * Copyright (C) 1995-2005 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* WARNING: this file should *not* be used by applications. It is + part of the implementation of the compression library and is + subject to change. Applications should only use zlib.h. + */ + +/* @(#) $Id$ */ + +#ifndef ZUTIL_H +#define ZUTIL_H + +#define ZLIB_INTERNAL +#include "zlib.h" + +#ifdef STDC +# ifndef _WIN32_WCE +# include +# endif +# include +# include +#endif +#ifdef NO_ERRNO_H +# ifdef _WIN32_WCE + /* The Microsoft C Run-Time Library for Windows CE doesn't have + * errno. We define it as a global variable to simplify porting. + * Its value is always 0 and should not be used. We rename it to + * avoid conflict with other libraries that use the same workaround. + */ +# define errno z_errno +# endif + extern int errno; +#else +# ifndef _WIN32_WCE +# include +# endif +#endif + +#ifndef local +# define local static +#endif +/* compile with -Dlocal if your debugger can't find static symbols */ + +typedef unsigned char uch; +typedef uch FAR uchf; +typedef unsigned short ush; +typedef ush FAR ushf; +typedef unsigned long ulg; + +extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ +/* (size given to avoid silly warnings with Visual C++) */ + +#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)] + +#define ERR_RETURN(strm,err) \ + return (strm->msg = (char*)ERR_MSG(err), (err)) +/* To be used only when the state is known to be valid */ + + /* common constants */ + +#ifndef DEF_WBITS +# define DEF_WBITS MAX_WBITS +#endif +/* default windowBits for decompression. MAX_WBITS is for compression only */ + +#if MAX_MEM_LEVEL >= 8 +# define DEF_MEM_LEVEL 8 +#else +# define DEF_MEM_LEVEL MAX_MEM_LEVEL +#endif +/* default memLevel */ + +#define STORED_BLOCK 0 +#define STATIC_TREES 1 +#define DYN_TREES 2 +/* The three kinds of block type */ + +#define MIN_MATCH 3 +#define MAX_MATCH 258 +/* The minimum and maximum match lengths */ + +#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */ + + /* target dependencies */ + +#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32)) +# define OS_CODE 0x00 +# if defined(__TURBOC__) || defined(__BORLANDC__) +# if(__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__)) + /* Allow compilation with ANSI keywords only enabled */ + void _Cdecl farfree( void *block ); + void *_Cdecl farmalloc( unsigned long nbytes ); +# else +# include +# endif +# else /* MSC or DJGPP */ +# include +# endif +#endif + +#ifdef AMIGA +# define OS_CODE 0x01 +#endif + +#if defined(VAXC) || defined(VMS) +# define OS_CODE 0x02 +# define F_OPEN(name, mode) \ + fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512") +#endif + +#if defined(ATARI) || defined(atarist) +# define OS_CODE 0x05 +#endif + +#ifdef OS2 +# define OS_CODE 0x06 +# ifdef M_I86 + #include +# endif +#endif + +#if defined(MACOS) || defined(TARGET_OS_MAC) +# define OS_CODE 0x07 +# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os +# include /* for fdopen */ +# else +# ifndef fdopen +# define fdopen(fd,mode) NULL /* No fdopen() */ +# endif +# endif +#endif + +#ifdef TOPS20 +# define OS_CODE 0x0a +#endif + +#ifdef WIN32 +# ifndef __CYGWIN__ /* Cygwin is Unix, not Win32 */ +# define OS_CODE 0x0b +# endif +#endif + +#ifdef __50SERIES /* Prime/PRIMOS */ +# define OS_CODE 0x0f +#endif + +#if defined(_BEOS_) || defined(RISCOS) +# define fdopen(fd,mode) NULL /* No fdopen() */ +#endif + +#if (defined(_MSC_VER) && (_MSC_VER > 600)) +# if defined(_WIN32_WCE) +# define fdopen(fd,mode) NULL /* No fdopen() */ +# ifndef _PTRDIFF_T_DEFINED + typedef int ptrdiff_t; +# define _PTRDIFF_T_DEFINED +# endif +# else +# define fdopen(fd,type) _fdopen(fd,type) +# endif +#endif + + /* common defaults */ + +#ifndef OS_CODE +# define OS_CODE 0x03 /* assume Unix */ +#endif + +#ifndef F_OPEN +# define F_OPEN(name, mode) fopen((name), (mode)) +#endif + + /* functions */ + +#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550) +# ifndef HAVE_VSNPRINTF +# define HAVE_VSNPRINTF +# endif +#endif +#if defined(__CYGWIN__) +# ifndef HAVE_VSNPRINTF +# define HAVE_VSNPRINTF +# endif +#endif +#ifndef HAVE_VSNPRINTF +# ifdef MSDOS + /* vsnprintf may exist on some MS-DOS compilers (DJGPP?), + but for now we just assume it doesn't. */ +# define NO_vsnprintf +# endif +# ifdef __TURBOC__ +# define NO_vsnprintf +# endif +# ifdef WIN32 + /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */ +# if !defined(vsnprintf) && !defined(NO_vsnprintf) +# define vsnprintf _vsnprintf +# endif +# endif +# ifdef __SASC +# define NO_vsnprintf +# endif +#endif +#ifdef VMS +# define NO_vsnprintf +#endif + +#if defined(pyr) +# define NO_MEMCPY +#endif +#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__) + /* Use our own functions for small and medium model with MSC <= 5.0. + * You may have to use the same strategy for Borland C (untested). + * The __SC__ check is for Symantec. + */ +# define NO_MEMCPY +#endif +#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY) +# define HAVE_MEMCPY +#endif +#ifdef HAVE_MEMCPY +# ifdef SMALL_MEDIUM /* MSDOS small or medium model */ +# define zmemcpy _fmemcpy +# define zmemcmp _fmemcmp +# define zmemzero(dest, len) _fmemset(dest, 0, len) +# else +# define zmemcpy memcpy +# define zmemcmp memcmp +# define zmemzero(dest, len) memset(dest, 0, len) +# endif +#else + extern void zmemcpy OF((Bytef* dest, const Bytef* source, uInt len)); + extern int zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len)); + extern void zmemzero OF((Bytef* dest, uInt len)); +#endif + +/* Diagnostic functions */ +#ifdef DEBUG +# include + extern int z_verbose; + extern void z_error OF((char *m)); +# define Assert(cond,msg) {if(!(cond)) z_error(msg);} +# define Trace(x) {if (z_verbose>=0) fprintf x ;} +# define Tracev(x) {if (z_verbose>0) fprintf x ;} +# define Tracevv(x) {if (z_verbose>1) fprintf x ;} +# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;} +# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;} +#else +# define Assert(cond,msg) +# define Trace(x) +# define Tracev(x) +# define Tracevv(x) +# define Tracec(c,x) +# define Tracecv(c,x) +#endif + + +voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size)); +void zcfree OF((voidpf opaque, voidpf ptr)); + +#define ZALLOC(strm, items, size) \ + (*((strm)->zalloc))((strm)->opaque, (items), (size)) +#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr)) +#define TRY_FREE(s, p) {if (p) ZFREE(s, p);} + +#endif /* ZUTIL_H */ diff --git a/README.images/screen1.png b/README.images/screen1.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9c84c845e7c1d5ff7d9abd5986b88768e64e0d GIT binary patch literal 111790 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%0DfAz&}vkpmBcUH2ig>AIlqM} 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

      !q|3kHeS|2eXgG$-_PH`0IvF$+<^&v4 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 literal 0 HcmV?d00001 diff --git a/README.images/screen2.png b/README.images/screen2.png new file mode 100644 index 0000000000000000000000000000000000000000..2dad4b9143d105ca74897b17fb2b8da38a123ce1 GIT binary patch literal 115335 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 D$KHqy literal 0 HcmV?d00001 diff --git a/README.images/screen4.png b/README.images/screen4.png new file mode 100644 index 0000000000000000000000000000000000000000..d994240d72a73e1deb5820030b2fb61c74f1f764 GIT binary patch literal 109243 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

      )9f{**fHed+2yp1l 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 e+yZAn3;ch2k(DmQ++4E&0000 +#include "../Src/config.h" +#include "../Src/sim65816.h" +#include "../Src/paddles.h" +#include "../Src/video.h" +#include "../Src/adb.h" +#include "../Src/clock.h" +#include "../Src/sound.h" +#include "../Src/driver.h" + +// OG (Not supported Header) +#ifndef _MSC_VER + #include +#else +#ifndef UNDER_CE + #include + #include "../Win/dirent-win32.h" + #define mode_t int +#endif +#define snprintf _snprintf +#endif + +extern int Verbose; +//extern word32 g_vbl_count; +//extern Iwm iwm; + +extern int g_track_bytes_35[]; +extern int g_track_nibs_35[]; +extern int g_c031_disk35; + +//extern int g_cur_a2_stat; +extern byte *g_slow_memory_ptr; +extern byte *g_rom_fc_ff_ptr; +extern byte *g_rom_cards_ptr; +//extern double g_cur_dcycs; +//extern int g_sim65816.g_rom_version; +extern int g_fatal_log; + +//extern word32 g_adb_repeat_vbl; +/* +extern int g_limit_speed; +extern int g_force_depth; +extern int g_raw_serial; +extern int g_serial_out_masking; +extern int g_serial_modem[]; +extern word32 g_mem_size_base; +extern word32 g_mem_size_exp; +extern int g_video_line_update_interval; +extern int g_video_extra_check_inputs; +extern int g_user_halt_bad; +extern int g_joystick_scale_factor_x; +extern int g_joystick_scale_factor_y; +extern int g_joystick_trim_amount_x; +extern int g_joystick_trim_amount_y; +*/ + +extern int g_joystick_type; +extern int g_swap_paddles; +extern int g_invert_paddles; + + +extern int g_screen_index[]; +//extern word32 g_full_refresh_needed; +//extern word32 g_a2_screen_buffer_changed; +//extern int g_a2_new_all_stat[]; +//extern int g_new_a2_stat_cur_line; + +extern int g_key_down; +extern const char* g_kegs_version_str; + +// OG Moved to generic +//int g_config_control_panel = 0; +extern int g_config_control_panel ; +char g_config_kegs_name[1024]; +char g_cfg_cwd_str[CFG_PATH_MAX] = { 0 }; + +int g_config_kegs_auto_update = 1; + +// OG Moved to generic +extern int g_config_kegs_update_needed ; + +const char *g_config_kegs_name_list[] = { + "config.kegs", "kegs_conf", ".config.kegs", 0 +}; + +// OG Moved to generic +//extern int g_highest_smartport_unit ; +int g_reparse_delay = 0; + +// OG Moved to generic +extern int g_user_page2_shadow ; + +byte g_save_text_screen_bytes[0x800]; +// OG Moved to generic +extern int g_save_cur_a2_stat ; +char g_cfg_printf_buf[CFG_PRINTF_BUFSIZE]; +char g_config_kegs_buf[CONF_BUF_LEN]; + +// Moved to generic +extern word32 g_cfg_vbl_count ; + +int g_cfg_curs_x = 0; +int g_cfg_curs_y = 0; +int g_cfg_curs_inv = 0; +int g_cfg_curs_mousetext = 0; + +#define CFG_MAX_OPTS 16 +#define CFG_OPT_MAXSTR 100 + +int g_cfg_opts_vals[CFG_MAX_OPTS]; +char g_cfg_opts_strs[CFG_MAX_OPTS][CFG_OPT_MAXSTR]; +char g_cfg_opt_buf[CFG_OPT_MAXSTR]; + +const char *g_cfg_rom_path = "ROM"; +const char *g_cfg_file_def_name = "Undefined"; +char **g_cfg_file_strptr = 0; +int g_cfg_file_min_size = 1024; +int g_cfg_file_max_size = 2047*1024*1024; + +#define MAX_PARTITION_BLK_SIZE 65536 + +extern Cfg_menu g_cfg_main_menu[]; + +#define KNMP(a) &a, #a, 0 + +Cfg_menu g_cfg_disk_menu[] = { +{ "Disk Configuration", g_cfg_disk_menu, 0, 0, CFGTYPE_MENU }, +{ "s5d1 = ", 0, 0, 0, CFGTYPE_DISK + 0x5000 }, +{ "s5d2 = ", 0, 0, 0, CFGTYPE_DISK + 0x5010 }, +{ "", 0, 0, 0, 0 }, +{ "s6d1 = ", 0, 0, 0, CFGTYPE_DISK + 0x6000 }, +{ "s6d2 = ", 0, 0, 0, CFGTYPE_DISK + 0x6010 }, +{ "", 0, 0, 0, 0 }, +{ "s7d1 = ", 0, 0, 0, CFGTYPE_DISK + 0x7000 }, +{ "s7d2 = ", 0, 0, 0, CFGTYPE_DISK + 0x7010 }, +{ "s7d3 = ", 0, 0, 0, CFGTYPE_DISK + 0x7020 }, +{ "s7d4 = ", 0, 0, 0, CFGTYPE_DISK + 0x7030 }, +{ "s7d5 = ", 0, 0, 0, CFGTYPE_DISK + 0x7040 }, +{ "s7d6 = ", 0, 0, 0, CFGTYPE_DISK + 0x7050 }, +{ "s7d7 = ", 0, 0, 0, CFGTYPE_DISK + 0x7060 }, +{ "s7d8 = ", 0, 0, 0, CFGTYPE_DISK + 0x7070 }, +{ "s7d9 = ", 0, 0, 0, CFGTYPE_DISK + 0x7080 }, +{ "s7d10 = ", 0, 0, 0, CFGTYPE_DISK + 0x7090 }, +{ "s7d11 = ", 0, 0, 0, CFGTYPE_DISK + 0x70a0 }, +{ "", 0, 0, 0, 0 }, +{ "Back to Main Config", g_cfg_main_menu, 0, 0, CFGTYPE_MENU }, +{ 0, 0, 0, 0, 0 }, +}; + +// OG Use define instead of const for joystick_types +#define STRINGIFY(x) #x +#define TOSTRING(x) STRINGIFY(x) + +Cfg_menu g_cfg_joystick_menu[] = { +{ "Joystick Configuration", g_cfg_joystick_menu, 0, 0, CFGTYPE_MENU }, +{ "Joystick Emulation," TOSTRING(JOYSTICK_TYPE_KEYPAD)",Keypad Joystick," TOSTRING(JOYSTICK_TYPE_MOUSE)",Mouse Joystick," TOSTRING(JOYSTICK_TYPE_NATIVE_1)",Native Joystick 1," + TOSTRING(JOYSTICK_TYPE_NATIVE_2)",Native Joystick 2," TOSTRING(JOYSTICK_TYPE_NONE)",No Joystick", KNMP(g_joystick_type), CFGTYPE_INT }, +{ "Joystick Scale X,0x100,Standard,0x119,+10%,0x133,+20%," + "0x150,+30%,0xb0,-30%,0xcd,-20%,0xe7,-10%", + KNMP(g_paddles.g_joystick_scale_factor_x), CFGTYPE_INT }, +{ "Joystick Scale Y,0x100,Standard,0x119,+10%,0x133,+20%," + "0x150,+30%,0xb0,-30%,0xcd,-20%,0xe7,-10%", + KNMP(g_paddles.g_joystick_scale_factor_y), CFGTYPE_INT }, +{ "Joystick Trim X", KNMP(g_paddles.g_joystick_trim_amount_x), CFGTYPE_INT }, +{ "Joystick Trim Y", KNMP(g_paddles.g_joystick_trim_amount_y), CFGTYPE_INT }, +{ "Swap Joystick X and Y,0,Normal operation,1,Paddle 1 and Paddle 0 swapped", + KNMP(g_swap_paddles), CFGTYPE_INT }, +{ "Invert Joystick,0,Normal operation,1,Left becomes right and up becomes down", + KNMP(g_invert_paddles), CFGTYPE_INT }, +{ "", 0, 0, 0, 0 }, +{ "Back to Main Config", g_cfg_main_menu, 0, 0, CFGTYPE_MENU }, +{ 0, 0, 0, 0, 0 }, +}; + +Cfg_menu g_cfg_rom_menu[] = { +{ "ROM File Selection", g_cfg_rom_menu, 0, 0, CFGTYPE_MENU }, +{ "ROM File", KNMP(g_cfg_rom_path), CFGTYPE_FILE }, +{ "", 0, 0, 0, 0 }, +{ "Back to Main Config", g_cfg_main_menu, 0, 0, CFGTYPE_MENU }, +{ 0, 0, 0, 0, 0 }, +}; + +Cfg_menu g_cfg_serial_menu[] = { +{ "Serial Port Configuration", g_cfg_serial_menu, 0, 0, CFGTYPE_MENU }, +{ "Serial Ports,0,Only use sockets 6501-6502,1,Use real ports if avail", + KNMP(g_sim65816.g_raw_serial), CFGTYPE_INT }, +{ "Serial Output,0,Send full 8-bit data,1,Mask off high bit", + KNMP(g_sim65816.g_serial_out_masking), CFGTYPE_INT }, +{ "Modem on port 0 (slot 1),0,Simple socket emulation mode,1,Modem with " + "incoming and outgoing emulation", KNMP(g_sim65816.g_serial_modem[0]), + CFGTYPE_INT }, +{ "Modem on port 1 (slot 2),0,Simple socket emulation mode,1,Modem with " + "incoming and outgoing emulation", KNMP(g_sim65816.g_serial_modem[1]), + CFGTYPE_INT }, +{ "", 0, 0, 0, 0 }, +{ "Back to Main Config", g_cfg_main_menu, 0, 0, CFGTYPE_MENU }, +{ 0, 0, 0, 0, 0 }, +}; + +Cfg_menu g_cfg_main_menu[] = { +{ "KEGS Configuration", g_cfg_main_menu, 0, 0, CFGTYPE_MENU }, +{ "Disk Configuration", g_cfg_disk_menu, 0, 0, CFGTYPE_MENU }, +{ "Joystick Configuration", g_cfg_joystick_menu, 0, 0, CFGTYPE_MENU }, +{ "ROM File Selection", g_cfg_rom_menu, 0, 0, CFGTYPE_MENU }, +{ "Serial Port Configuration", g_cfg_serial_menu, 0, 0, CFGTYPE_MENU }, +{ "Force X-windows display depth", KNMP(g_sim65816.g_force_depth), CFGTYPE_INT }, +{ "Auto-update config.kegs,0,Manual,1,Immediately", + KNMP(g_config_kegs_auto_update), CFGTYPE_INT }, +{ "Speed,0,Unlimited,1,1.0MHz,2,2.8MHz,3,8.0MHz (Zip)", + KNMP(g_sim65816.g_limit_speed), CFGTYPE_INT }, +{ "Expansion Mem Size,0,0MB,0x100000,1MB,0x200000,2MB,0x300000,3MB," + "0x400000,4MB,0x600000,6MB,0x800000,8MB,0xa00000,10MB,0xc00000,12MB," + "0xe00000,14MB", KNMP(g_sim65816.g_mem_size_exp), CFGTYPE_INT }, +{ "3200 Color Enable,0,Auto (Full if fast enough),1,Full (Update every line)," + "8,Off (Update video every 8 lines)", + KNMP(g_sim65816.g_video_line_update_interval), CFGTYPE_INT }, +{ "Keyboard and mouse poll rate,0,60 times per second,1,240 times per second", + KNMP(g_video.g_video_extra_check_inputs), CFGTYPE_INT }, +{ "Code Red Halts,0,Do not stop on bad accesses,1,Enter debugger on bad " + "accesses", KNMP(r_sim65816.g_user_halt_bad), CFGTYPE_INT }, +{ "Enable Text Page 2 Shadow,0,Disabled on ROM 01 (matches real hardware)," + "1,Enabled on ROM 01 and 03", + KNMP(g_user_page2_shadow), CFGTYPE_INT }, +{ "Dump text screen to file", (void *)cfg_text_screen_dump, 0, 0, CFGTYPE_FUNC}, +{ "", 0, 0, 0, 0 }, +{ "Save changes to config.kegs", (void *)config_write_config_kegs_file, 0, 0, + CFGTYPE_FUNC }, +{ "", 0, 0, 0, 0 }, +{ "Exit Config (or press F4)", (void *)cfg_exit, 0, 0, CFGTYPE_FUNC }, +{ 0, 0, 0, 0, 0 }, +}; + + +#define CFG_MAX_DEFVALS 128 +Cfg_defval g_cfg_defvals[CFG_MAX_DEFVALS]; +int g_cfg_defval_index = 0; + +int g_cfg_slotdrive = -1; +int g_cfg_select_partition = -1; +char g_cfg_tmp_path[CFG_PATH_MAX]; +char g_cfg_file_path[CFG_PATH_MAX]; +char g_cfg_file_cachedpath[CFG_PATH_MAX]; +char g_cfg_file_cachedreal[CFG_PATH_MAX]; +char g_cfg_file_curpath[CFG_PATH_MAX]; +char g_cfg_file_shortened[CFG_PATH_MAX]; +char g_cfg_file_match[CFG_PATH_MAX]; + +Cfg_listhdr g_cfg_dirlist = { 0 }; +Cfg_listhdr g_cfg_partitionlist = { 0 }; + +int g_cfg_file_pathfield = 0; + +const char *g_kegs_rom_names[] = { "ROM", "ROM", "ROM.01", "ROM.03", 0 }; + /* First entry is special--it will be overwritten by g_cfg_rom_path */ + +const char *g_kegs_c1rom_names[] = { 0 }; +const char *g_kegs_c2rom_names[] = { 0 }; +const char *g_kegs_c3rom_names[] = { 0 }; +const char *g_kegs_c4rom_names[] = { 0 }; +const char *g_kegs_c5rom_names[] = { 0 }; +const char *g_kegs_c6rom_names[] = { "c600.rom", "controller.rom", "disk.rom", + "DISK.ROM", "diskII.prom", 0 }; +const char *g_kegs_c7rom_names[] = { 0 }; + +const char **g_kegs_rom_card_list[8] = { + 0, g_kegs_c1rom_names, + g_kegs_c2rom_names, g_kegs_c3rom_names, + g_kegs_c4rom_names, g_kegs_c5rom_names, + g_kegs_c6rom_names, g_kegs_c7rom_names }; + + +void +config_init_menus(Cfg_menu *menuptr) +{ + void *voidptr; + const char *name_str; + Cfg_defval *defptr; + char **str_ptr; + char *str; + int type; + int pos; + int val; + + if(menuptr[0].defptr != 0) { + return; + } + menuptr[0].defptr = (void *)1; + pos = 0; + while(pos < 100) { + type = menuptr->cfgtype; + voidptr = menuptr->ptr; + name_str = menuptr->name_str; + if(menuptr->str == 0) { + break; + } + if(name_str != 0) { + defptr = &(g_cfg_defvals[g_cfg_defval_index++]); + if(g_cfg_defval_index >= CFG_MAX_DEFVALS) { + fatal_printf("CFG_MAX_DEFVAL overflow\n"); + my_exit(5); + } + defptr->menuptr = menuptr; + defptr->intval = 0; + defptr->strval = 0; + switch(type) { + case CFGTYPE_INT: + val = *((int *)voidptr); + defptr->intval = val; + menuptr->defptr = &(defptr->intval); + break; + case CFGTYPE_FILE: + str_ptr = (char **)menuptr->ptr; + str = *str_ptr; + // We need to malloc this string since all + // string values must be dynamically alloced + defptr->strval = str; // this can have a copy + *str_ptr = kegs_malloc_str(str); + menuptr->defptr = &(defptr->strval); + break; + default: + fatal_printf("name_str is %p = %s, but type: " + "%d\n", name_str, name_str, type); + my_exit(5); + } + } + if(type == CFGTYPE_MENU) { + config_init_menus((Cfg_menu *)voidptr); + } + pos++; + menuptr++; + } +} + +void +config_init() +{ + int can_create; + + config_init_menus(g_cfg_main_menu); + + // Find the config.kegs file + g_config_kegs_name[0] = 0; + can_create = 1; + setup_kegs_file(&g_config_kegs_name[0], sizeof(g_config_kegs_name), 0, + can_create, &g_config_kegs_name_list[0]); + + config_parse_config_kegs_file(); +} + +void +cfg_exit() +{ + /* printf("In cfg exit\n"); */ + if(g_sim65816.g_rom_version >= 1) { + g_config_control_panel = 0; + } +} + +void +cfg_toggle_config_panel() +{ + g_config_control_panel = !g_config_control_panel; + if(g_sim65816.g_rom_version < 0) { + g_config_control_panel = 1; /* Stay in config mode */ + } +} + +void +cfg_text_screen_dump() +{ + char buf[85]; + const char *filename; + FILE *ofile; + int offset; + int c; + int pos; + int i, j; + + filename = "kegs.screen.dump"; + printf("Writing text screen to the file %s\n", filename); + ofile = fopen(filename, "w"); + if(ofile == 0) { + fatal_printf("Could not write to file %s, (%d)\n", filename, + errno); + return; + } + + for(i = 0; i < 24; i++) { + pos = 0; + for(j = 0; j < 40; j++) { + offset = g_screen_index[i] + j; + if(g_save_cur_a2_stat & ALL_STAT_VID80) { + c = g_save_text_screen_bytes[0x400+offset]; + c = c & 0x7f; + if(c < 0x20) { + c += 0x40; + } + buf[pos++] = c; + } + c = g_save_text_screen_bytes[offset] & 0x7f; + if(c < 0x20) { + c += 0x40; + } + buf[pos++] = c; + } + while((pos > 0) && (buf[pos-1] == ' ')) { + /* try to strip out trailing spaces */ + pos--; + } + buf[pos++] = '\n'; + buf[pos++] = 0; + fputs(buf, ofile); + } + fclose(ofile); +} + +void +config_vbl_update(int doit_3_persec) +{ + if(doit_3_persec) { + if(g_config_kegs_auto_update && g_config_kegs_update_needed) { + config_write_config_kegs_file(); + } + } + return; +} + +void +config_parse_option(char *buf, int pos, int len, int line) +{ + Cfg_menu *menuptr; + Cfg_defval *defptr; + char *nameptr; + char **strptr; + int *iptr; + int num_equals; + int type; + int val; + int c; + int i; + +// warning: modifies buf (turns spaces to nulls) +// parse buf from pos into option, "=" and then "rest" + if(pos >= len) { + /* blank line */ + return; + } + + if(strncmp(&buf[pos], "bram", 4) == 0) { + config_parse_bram(buf, pos+4, len); + return; + } + + // find "name" as first contiguous string + printf("...parse_option: line %d, %p,%p = %s (%s) len:%d\n", line, + &buf[pos], buf, &buf[pos], buf, len); + + nameptr = &buf[pos]; + while(pos < len) { + c = buf[pos]; + if(c == 0 || c == ' ' || c == '\t' || c == '\n') { + break; + } + pos++; + } + buf[pos] = 0; + pos++; + + // Eat up all whitespace and '=' + num_equals = 0; + while(pos < len) { + c = buf[pos]; + if((c == '=') && num_equals == 0) { + pos++; + num_equals++; + } else if(c == ' ' || c == '\t') { + pos++; + } else { + break; + } + } + + /* Look up nameptr to find type */ + type = -1; + defptr = 0; + menuptr = 0; + for(i = 0; i < g_cfg_defval_index; i++) { + defptr = &(g_cfg_defvals[i]); + menuptr = defptr->menuptr; + if(strcmp(menuptr->name_str, nameptr) == 0) { + type = menuptr->cfgtype; + break; + } + } + + switch(type) { + case CFGTYPE_INT: + /* use strtol */ + val = (int)strtol(&buf[pos], 0, 0); + iptr = (int *)menuptr->ptr; + *iptr = val; + break; + case CFGTYPE_FILE: + strptr = (char **)menuptr->ptr; + if(strptr && *strptr) { + free(*strptr); + } + *strptr = kegs_malloc_str(&buf[pos]); + break; + default: + printf("Config file variable %s is unknown type: %d\n", + nameptr, type); + } + +} + +void +config_parse_bram(char *buf, int pos, int len) +{ + int bram_num; + int offset; + int val; + + if((len < (pos+5)) || (buf[pos+1] != '[') || (buf[pos+4] != ']')) { + fatal_printf("While reading config.kegs, found malformed bram " + "statement: %s\n", buf); + return; + } + bram_num = buf[pos] - '0'; + if(bram_num != 1 && bram_num != 3) { + fatal_printf("While reading config.kegs, found bad bram " + "num: %s\n", buf); + return; + } + + bram_num = bram_num >> 1; // turn 3->1 and 1->0 + + offset = strtoul(&(buf[pos+2]), 0, 16); + pos += 5; + while(pos < len) { + while(buf[pos] == ' ' || buf[pos] == '\t' || buf[pos] == 0x0a || + buf[pos] == 0x0d || buf[pos] == '=') { + pos++; + } + val = strtoul(&buf[pos], 0, 16); + clk_bram_set(bram_num, offset, val); + offset++; + pos += 2; + } +} + + +void +x_config_load_roms() +{ + + + struct stat stat_buf; + + int len; + int fd; + int ret; + + + g_sim65816.g_rom_version = -1; + + /* set first entry of g_kegs_rom_names[] to g_cfg_rom_path so that */ + /* it becomes the first place searched. */ + g_kegs_rom_names[0] = g_cfg_rom_path; + setup_kegs_file(&g_cfg_tmp_path[0], CFG_PATH_MAX, -1, 0, + &g_kegs_rom_names[0]); + + if(g_cfg_tmp_path[0] == 0) { + // Just get out, let config interface select ROM + g_config_control_panel = 1; + return; + } + fd = open(&g_cfg_tmp_path[0], O_RDONLY | O_BINARY); + if(fd < 0) { + fatal_printf("Open ROM file %s failed:%d, errno:%d\n", + &g_cfg_tmp_path[0], fd, errno); + g_config_control_panel = 1; + return; + } + + ret = fstat(fd, &stat_buf); + if(ret != 0) { + fatal_printf("fstat returned %d on fd %d, errno: %d\n", + ret, fd, errno); + g_config_control_panel = 1; + return; + } + + len = stat_buf.st_size; + if(len == 128*1024) { + g_sim65816.g_rom_version = 1; + g_sim65816.g_mem_size_base = 256*1024; + memset(&g_rom_fc_ff_ptr[0], 0, 2*65536); + /* Clear banks fc and fd to 0 */ + ret = read(fd, &g_rom_fc_ff_ptr[2*65536], len); + } else if(len == 256*1024) { + g_sim65816.g_rom_version = 3; + g_sim65816.g_mem_size_base = 1024*1024; + ret = read(fd, &g_rom_fc_ff_ptr[0], len); + } else { + fatal_printf("The ROM size should be 128K or 256K, this file " + "is %d bytes\n", len); + g_config_control_panel = 1; + return; + } + + printf("Read: %d bytes of ROM\n", ret); + if(ret != len) { + fatal_printf("errno: %d\n", errno); + g_config_control_panel = 1; + return; + } + close(fd); + +} + +void x_config_load_additional_roms() +{ + int i; + const char **names_ptr; + int fd,len; + int ret; + + for(i = 1; i < 8; i++) { + names_ptr = g_kegs_rom_card_list[i]; + if(names_ptr == 0) { + continue; + } + if(*names_ptr == 0) { + continue; + } + + setup_kegs_file(&g_cfg_tmp_path[0], CFG_PATH_MAX, 1, 0, + names_ptr); + + if(g_cfg_tmp_path[0] != 0) { + fd = open(&(g_cfg_tmp_path[0]), O_RDONLY | O_BINARY); + if(fd < 0) { + fatal_printf("Open card ROM file %s failed: %d " + "err:%d\n", &g_cfg_tmp_path[0], fd, + errno); + continue; + } + + len = 256; + ret = read(fd, &g_rom_cards_ptr[i*0x100], len); + + if(ret != len) { + fatal_printf("While reading card ROM %s, file " + "is too short. (%d) Expected %d bytes, " + "read %d bytes\n", errno, len, ret); + continue; + } + close(fd); + } + } +} + + +void +config_parse_config_kegs_file() +{ + FILE *fconf; + char *buf; + char *ptr; + char *name_ptr; + char *partition_name; + int part_num; + int ejected; + int line; + int pos; + int slot; + int drive; + int size; + int len; + int ret; + int i; + + printf("Parsing config.kegs file\n"); + + clk_bram_zero(); + + g_iwm.g_highest_smartport_unit = -1; + + cfg_get_base_path(&g_cfg_cwd_str[0], g_config_kegs_name, 0); + if(g_cfg_cwd_str[0] != 0) { + ret = chdir(&g_cfg_cwd_str[0]); + if(ret != 0) { + printf("chdir to %s, errno:%d\n", g_cfg_cwd_str, errno); + } + } + + /* In any case, copy the directory path to g_cfg_cwd_str */ + (void)getcwd(&g_cfg_cwd_str[0], CFG_PATH_MAX); + + fconf = fopen(g_config_kegs_name, "r"); + if(fconf == 0) { + fatal_printf("cannot open config.kegs at %s! Stopping!\n", + g_config_kegs_name); + my_exit(3); + } + + line = 0; + while(1) { + buf = &g_config_kegs_buf[0]; + ptr = fgets(buf, CONF_BUF_LEN, fconf); + if(ptr == 0) { + iwm_printf("Done reading disk_conf\n"); + break; + } + + line++; + /* strip off newline(s) */ + len = strlen(buf); + for(i = len - 1; i >= 0; i--) { + if((buf[i] != 0x0d) && (buf[i] != 0x0a)) { + break; + } + len = i; + buf[i] = 0; + } + + iwm_printf("disk_conf[%d]: %s\n", line, buf); + if(len > 0 && buf[0] == '#') { + iwm_printf("Skipping comment\n"); + continue; + } + + /* determine what this is */ + pos = 0; + + while(pos < len && (buf[pos] == ' ' || buf[pos] == '\t') ) { + pos++; + } + if((pos + 4) > len || buf[pos] != 's' || buf[pos+2] != 'd' || + buf[pos+1] > '9' || buf[pos+1] < '0') { + config_parse_option(buf, pos, len, line); + continue; + } + + slot = buf[pos+1] - '0'; + drive = buf[pos+3] - '0'; + + /* skip over slot, drive */ + pos += 4; + if(buf[pos] >= '0' && buf[pos] <= '9') { + drive = drive * 10 + buf[pos] - '0'; + pos++; + } + + /* make s6d1 mean index 0 */ + drive--; + + while(pos < len && (buf[pos] == ' ' || buf[pos] == '\t' || + buf[pos] == '=') ) { + pos++; + } + + ejected = 0; + if(buf[pos] == '#') { + /* disk is ejected, but read all the info anyway */ + ejected = 1; + pos++; + } + + size = 0; + if(buf[pos] == ',') { + /* read optional size parameter */ + pos++; + while(pos < len && buf[pos] >= '0' && buf[pos] <= '9'){ + size = size * 10 + buf[pos] - '0'; + pos++; + } + size = size * 1024; + if(buf[pos] == ',') { + pos++; /* eat trailing ',' */ + } + } + + /* see if it has a partition name */ + partition_name = 0; + part_num = -1; + if(buf[pos] == ':') { + pos++; + /* yup, it's got a partition name! */ + partition_name = &buf[pos]; + while((pos < len) && (buf[pos] != ':')) { + pos++; + } + buf[pos] = 0; /* null terminate partition name */ + pos++; + } + if(buf[pos] == ';') { + pos++; + /* it's got a partition number */ + part_num = 0; + while((pos < len) && (buf[pos] != ':')) { + part_num = (10*part_num) + buf[pos] - '0'; + pos++; + } + pos++; + } + + /* Get filename */ + name_ptr = &(buf[pos]); + if(name_ptr[0] == 0) { + continue; + } + + insert_disk(slot, drive, name_ptr, ejected, size, + partition_name, part_num); + + } + + ret = fclose(fconf); + if(ret != 0) { + fatal_printf("Closing config.kegs ret: %d, errno: %d\n", ret, + errno); + my_exit(4); + } + + iwm_printf("Done parsing disk_conf file\n"); +} + + + +void +config_generate_config_kegs_name(char *outstr, int maxlen, Disk *dsk, + int with_extras) +{ + char *str; + + str = outstr; + + if(with_extras && dsk->fd < 0) { + snprintf(str, maxlen - (str - outstr), "#"); + str = &outstr[strlen(outstr)]; + } + if(with_extras && dsk->force_size > 0) { + snprintf(str, maxlen - (str - outstr), ",%d,", dsk->force_size); + str = &outstr[strlen(outstr)]; + } + if(with_extras && dsk->partition_name != 0) { + snprintf(str, maxlen - (str - outstr), ":%s:", + dsk->partition_name); + str = &outstr[strlen(outstr)]; + } else if(with_extras && dsk->partition_num >= 0) { + snprintf(str, maxlen - (str - outstr), ";%d:", + dsk->partition_num); + str = &outstr[strlen(outstr)]; + } + snprintf(str, maxlen - (str - outstr), "%s", dsk->name_ptr); + + +} + +void +config_write_config_kegs_file() +{ + FILE *fconf; + Disk *dsk; + Cfg_defval *defptr; + Cfg_menu *menuptr; + char *curstr, *defstr; + int defval, curval; + int type; + int slot, drive; + int i; + + printf("Writing config.kegs file to %s\n", g_config_kegs_name); + + fconf = fopen(g_config_kegs_name, "w+"); + if(fconf == 0) { + halt_printf("cannot open %s! Stopping!\n"); + return; + } + + fprintf(fconf, "# KEGS configuration file version %s\n", + g_kegs_version_str); + + for(i = 0; i < MAX_C7_DISKS + 4; i++) { + slot = 7; + drive = i - 4; + if(i < 4) { + slot = (i >> 1) + 5; + drive = i & 1; + } + if(drive == 0) { + fprintf(fconf, "\n"); /* an extra blank line */ + } + + dsk = cfg_get_dsk_from_slot_drive(slot, drive); + if(dsk->name_ptr == 0 && (i > 4)) { + /* No disk, not even ejected--just skip */ + continue; + } + fprintf(fconf, "s%dd%d = ", slot, drive + 1); + if(dsk->name_ptr == 0) { + fprintf(fconf, "\n"); + continue; + } + config_generate_config_kegs_name(&g_cfg_tmp_path[0], + CFG_PATH_MAX, dsk, 1); + fprintf(fconf, "%s\n", &g_cfg_tmp_path[0]); + } + + fprintf(fconf, "\n"); + + /* See if any variables are different than their default */ + for(i = 0; i < g_cfg_defval_index; i++) { + defptr = &(g_cfg_defvals[i]); + menuptr = defptr->menuptr; + defval = defptr->intval; + type = menuptr->cfgtype; + if(type == CFGTYPE_INT) { + curval = *((int *)menuptr->ptr); + if(curval != defval) { + fprintf(fconf, "%s = %d\n", menuptr->name_str, + curval); + } + } + if(type == CFGTYPE_FILE) { + curstr = *((char **)menuptr->ptr); + defstr = *((char **)menuptr->defptr); + if(strcmp(curstr, defstr) != 0) { + fprintf(fconf, "%s = %s\n", menuptr->name_str, + curstr); + } + } + } + + fprintf(fconf, "\n"); + + /* write bram state */ + clk_write_bram(fconf); + + fclose(fconf); + + g_config_kegs_update_needed = 0; +} + + +int +cfg_partition_read_block(int fd, void *buf, int blk, int blk_size) +{ + int ret; + + ret = lseek(fd, blk * blk_size, SEEK_SET); + if(ret != blk * blk_size) { + printf("lseek: %08x, wanted: %08x, errno: %d\n", ret, + blk * blk_size, errno); + return 0; + } + + ret = read(fd, (char *)buf, blk_size); + if(ret != blk_size) { + printf("ret: %08x, wanted %08x, errno: %d\n", ret, blk_size, + errno); + return 0; + } + return ret; +} + +int +cfg_partition_find_by_name_or_num(int fd, const char *partnamestr, int part_num, + Disk *dsk) +{ + Cfg_dirent *direntptr; + int match; + int num_parts; + int i; + + num_parts = cfg_partition_make_list(fd); + + if(num_parts <= 0) { + return -1; + } + + for(i = 0; i < g_cfg_partitionlist.last; i++) { + direntptr = &(g_cfg_partitionlist.direntptr[i]); + match = 0; + if((strncmp(partnamestr, direntptr->name, 32) == 0) && + (part_num < 0)) { + //printf("partition, match1, name:%s %s, part_num:%d\n", + // partnamestr, direntptr->name, part_num); + + match = 1; + } + if((partnamestr == 0) && (direntptr->part_num == part_num)) { + //printf("partition, match2, n:%s, part_num:%d == %d\n", + // direntptr->name, direntptr->part_num, part_num); + match = 1; + } + if(match) { + dsk->image_start = direntptr->image_start; + dsk->image_size = direntptr->size; + //printf("match with image_start: %08x, image_size: " + // "%08x\n", dsk->image_start, dsk->image_size); + + return i; + } + } + + return -1; +} + +int +cfg_partition_make_list(int fd) +{ + Driver_desc *driver_desc_ptr; + Part_map *part_map_ptr; + word32 *blk_bufptr; + word32 start; + word32 len; + word32 data_off; + word32 data_len; + word32 sig; + int size; + int image_start, image_size; + int is_dir; + int block_size; + int map_blks; + int cur_blk; + + block_size = 512; + + cfg_free_alldirents(&g_cfg_partitionlist); + + blk_bufptr = (word32 *)malloc(MAX_PARTITION_BLK_SIZE); + + cfg_partition_read_block(fd, blk_bufptr, 0, block_size); + + driver_desc_ptr = (Driver_desc *)blk_bufptr; + sig = GET_BE_WORD16(driver_desc_ptr->sig); + block_size = GET_BE_WORD16(driver_desc_ptr->blk_size); + if(block_size == 0) { + block_size = 512; + } + if(sig != 0x4552 || block_size < 0x200 || + (block_size > MAX_PARTITION_BLK_SIZE)) { + cfg_printf("Partition error: No driver descriptor map found\n"); + free(blk_bufptr); + return 0; + } + + map_blks = 1; + cur_blk = 0; + size = cfg_get_fd_size(fd); + cfg_file_add_dirent(&g_cfg_partitionlist, "None - Whole image", + is_dir=0, size, 0, -1); + + while(cur_blk < map_blks) { + cur_blk++; + cfg_partition_read_block(fd, blk_bufptr, cur_blk, block_size); + part_map_ptr = (Part_map *)blk_bufptr; + sig = GET_BE_WORD16(part_map_ptr->sig); + if(cur_blk <= 1) { + map_blks = MIN(20, + GET_BE_WORD32(part_map_ptr->map_blk_cnt)); + } + if(sig != 0x504d) { + printf("Partition entry %d bad signature:%04x\n", + cur_blk, sig); + free(blk_bufptr); + return g_cfg_partitionlist.last; + } + + /* found it, check for consistency */ + start = GET_BE_WORD32(part_map_ptr->phys_part_start); + len = GET_BE_WORD32(part_map_ptr->part_blk_cnt); + data_off = GET_BE_WORD32(part_map_ptr->data_start); + data_len = GET_BE_WORD32(part_map_ptr->data_cnt); + if(data_off + data_len > len) { + printf("Poorly formed entry\n"); + continue; + } + + if(data_len < 10 || start < 1) { + printf("Poorly formed entry %d, datalen:%d, " + "start:%08x\n", cur_blk, data_len, start); + continue; + } + + image_size = data_len * block_size; + image_start = (start + data_off) * block_size; + is_dir = 2*(image_size < 800*1024); +#if 0 + printf(" partition add entry %d = %s %d %08x %08x\n", + cur_blk, part_map_ptr->part_name, is_dir, + image_size, image_start); +#endif + + cfg_file_add_dirent(&g_cfg_partitionlist, + part_map_ptr->part_name, is_dir, image_size, + image_start, cur_blk); + } + + free(blk_bufptr); + return g_cfg_partitionlist.last; +} + +int +cfg_maybe_insert_disk(int slot, int drive, const char *namestr) +{ + int num_parts; + int fd; + + fd = open(namestr, O_RDONLY | O_BINARY, 0x1b6); + if(fd < 0) { + fatal_printf("Cannot open disk image: %s\n", namestr); + return 0; + } + + num_parts = cfg_partition_make_list(fd); + close(fd); + + if(num_parts > 0) { + printf("Choose a partition\n"); + g_cfg_select_partition = 1; + } else { + insert_disk(slot, drive, namestr, 0, 0, 0, -1); + return 1; + } + return 0; +} + +int +cfg_stat(char *path, struct stat *sb) +{ + int removed_slash; + int len; + int ret; + + removed_slash = 0; + len = 0; + +#ifdef _WIN32 + /* Windows doesn't like to stat paths ending in a /, so remove it */ + len = strlen(path); + if((len > 1) && (path[len - 1] == '/') ) { + path[len - 1] = 0; /* remove the slash */ + removed_slash = 1; + } +#endif + + ret = stat(path, sb); + +#ifdef _WIN32 + /* put the slash back */ + if(removed_slash) { + path[len - 1] = '/'; + } +#endif + + return ret; +} + +void +cfg_htab_vtab(int x, int y) +{ + if(x > 79) { + x = 0; + } + if(y > 23) { + y = 0; + } + g_cfg_curs_x = x; + g_cfg_curs_y = y; + g_cfg_curs_inv = 0; + g_cfg_curs_mousetext = 0; +} + +void +cfg_home() +{ + int i; + + cfg_htab_vtab(0, 0); + for(i = 0; i < 24; i++) { + cfg_cleol(); + } +} + +void +cfg_cleol() +{ + g_cfg_curs_inv = 0; + g_cfg_curs_mousetext = 0; + cfg_putchar(' '); + while(g_cfg_curs_x != 0) { + cfg_putchar(' '); + } +} + +void +cfg_putchar(int c) +{ + int offset; + int x, y; + + if(c == '\n') { + cfg_cleol(); + return; + } + if(c == '\b') { + g_cfg_curs_inv = !g_cfg_curs_inv; + return; + } + if(c == '\t') { + g_cfg_curs_mousetext = !g_cfg_curs_mousetext; + return; + } + + if (!r_sim65816.is_emulator_initialized()) // OG + return ; + + y = g_cfg_curs_y; + x = g_cfg_curs_x; + + offset = g_screen_index[g_cfg_curs_y]; + if((x & 1) == 0) { + offset += 0x10000; + } + if(g_cfg_curs_inv) { + if(c >= 0x40 && c < 0x60) { + c = c & 0x1f; + } + } else { + c = c | 0x80; + } + if(g_cfg_curs_mousetext) { + c = (c & 0x1f) | 0x40; + } + set_memory_c(0xe00400 + offset + (x >> 1), c, 0); + x++; + if(x >= 80) { + x = 0; + y++; + if(y >= 24) { + y = 0; + } + } + g_cfg_curs_y = y; + g_cfg_curs_x = x; +} + +void +cfg_printf(const char *fmt, ...) +{ + va_list ap; + int c; + int i; + + va_start(ap, fmt); + (void)vsnprintf(g_cfg_printf_buf, CFG_PRINTF_BUFSIZE, fmt, ap); + va_end(ap); + + for(i = 0; i < CFG_PRINTF_BUFSIZE; i++) { + c = g_cfg_printf_buf[i]; + if(c == 0) { + return; + } + cfg_putchar(c); + } +} + +void +cfg_print_num(int num, int max_len) +{ + char buf[64]; + char buf2[64]; + int len; + int cnt; + int c; + int i, j; + + /* Prints right-adjusted "num" in field "max_len" wide */ + snprintf(&buf[0], 64, "%d", num); + len = strlen(buf); + for(i = 0; i < 64; i++) { + buf2[i] = ' '; + } + j = max_len + 1; + buf2[j] = 0; + j--; + cnt = 0; + for(i = len - 1; (i >= 0) && (j >= 1); i--) { + c = buf[i]; + if(c >= '0' && c <= '9') { + if(cnt >= 3) { + buf2[j--] = ','; + cnt = 0; + } + cnt++; + } + buf2[j--] = c; + } + cfg_printf(&buf2[1]); +} + +void +cfg_get_disk_name(char *outstr, int maxlen, int type_ext, int with_extras) +{ + Disk *dsk; + int slot, drive; + + slot = type_ext >> 8; + drive = type_ext & 0xff; + dsk = cfg_get_dsk_from_slot_drive(slot, drive); + + outstr[0] = 0; + if(dsk->name_ptr == 0) { + return; + } + + config_generate_config_kegs_name(outstr, maxlen, dsk, with_extras); +} + +void +cfg_parse_menu(Cfg_menu *menuptr, int menu_pos, int highlight_pos, int change) +{ + char valbuf[CFG_OPT_MAXSTR]; + char **str_ptr; + const char *menustr; + char *curstr, *defstr; + char *str; + char *outstr; + int *iptr; + int val; + int num_opts; + int opt_num; + int bufpos, outpos; + int curval, defval; + int type; + int type_ext; + int opt_get_str; + int separator; + int len; + int c; + int i; + + g_cfg_opt_buf[0] = 0; + + num_opts = 0; + opt_get_str = 0; + separator = ','; + + menuptr += menu_pos; /* move forward to entry menu_pos */ + + menustr = menuptr->str; + type = menuptr->cfgtype; + type_ext = (type >> 4); + type = type & 0xf; + len = strlen(menustr) + 1; + + bufpos = 0; + outstr = &(g_cfg_opt_buf[0]); + + outstr[bufpos++] = ' '; + outstr[bufpos++] = ' '; + outstr[bufpos++] = '\t'; + outstr[bufpos++] = '\t'; + outstr[bufpos++] = ' '; + outstr[bufpos++] = ' '; + + if(menu_pos == highlight_pos) { + outstr[bufpos++] = '\b'; + } + + opt_get_str = 2; + i = -1; + outpos = bufpos; +#if 0 + printf("cfg menu_pos: %d str len: %d\n", menu_pos, len); +#endif + while(++i < len) { + c = menustr[i]; + if(c == separator) { + if(i == 0) { + continue; + } + c = 0; + } + outstr[outpos++] = c; + outstr[outpos] = 0; + if(outpos >= CFG_OPT_MAXSTR) { + fprintf(stderr, "CFG_OPT_MAXSTR exceeded\n"); + my_exit(1); + } + if(c == 0) { + if(opt_get_str == 2) { + outstr = &(valbuf[0]); + bufpos = outpos - 1; + opt_get_str = 0; + } else if(opt_get_str) { +#if 0 + if(menu_pos == highlight_pos) { + printf("menu_pos %d opt %d = %s=%d\n", + menu_pos, num_opts, + g_cfg_opts_strs[num_opts], + g_cfg_opts_vals[num_opts]); + } +#endif + num_opts++; + outstr = &(valbuf[0]); + opt_get_str = 0; + if(num_opts >= CFG_MAX_OPTS) { + fprintf(stderr, "CFG_MAX_OPTS oflow\n"); + my_exit(1); + } + } else { + val = strtoul(valbuf, 0, 0); + g_cfg_opts_vals[num_opts] = val; + outstr = &(g_cfg_opts_strs[num_opts][0]); + opt_get_str = 1; + } + outpos = 0; + outstr[0] = 0; + } + } + + if(menu_pos == highlight_pos) { + g_cfg_opt_buf[bufpos++] = '\b'; + } + + g_cfg_opt_buf[bufpos] = 0; + + // Figure out if we should get a checkmark + curval = -1; + defval = -1; + curstr = 0; + if(type == CFGTYPE_INT) { + iptr = (int*)menuptr->ptr; // OG Added cast + curval = *iptr; + iptr = (int*)menuptr->defptr; // OG Added cast + defval = *iptr; + if(curval == defval) { + g_cfg_opt_buf[3] = 'D'; /* checkmark */ + g_cfg_opt_buf[4] = '\t'; + } + } + if(type == CFGTYPE_FILE) { + str_ptr = (char **)menuptr->ptr; + curstr = *str_ptr; + str_ptr = (char **)menuptr->defptr; + defstr = *str_ptr; + if(strcmp(curstr,defstr) == 0) { + g_cfg_opt_buf[3] = 'D'; /* checkmark */ + g_cfg_opt_buf[4] = '\t'; + } + } + + // If it's a menu, give it a special menu indicator + if(type == CFGTYPE_MENU) { + g_cfg_opt_buf[1] = '\t'; + g_cfg_opt_buf[2] = 'M'; /* return-like symbol */ + g_cfg_opt_buf[3] = '\t'; + g_cfg_opt_buf[4] = ' '; + } + + // Decide what to display on the "right" side + str = 0; + opt_num = -1; + if(type == CFGTYPE_INT || type == CFGTYPE_FILE) { + g_cfg_opt_buf[bufpos++] = ' '; + g_cfg_opt_buf[bufpos++] = '='; + g_cfg_opt_buf[bufpos++] = ' '; + g_cfg_opt_buf[bufpos] = 0; + for(i = 0; i < num_opts; i++) { + if(curval == g_cfg_opts_vals[i]) { + opt_num = i; + break; + } + } + } + + if(change != 0) { + if(type == CFGTYPE_INT) { + if(num_opts > 0) { + opt_num += change; + if(opt_num >= num_opts) { + opt_num = 0; + } + if(opt_num < 0) { + opt_num = num_opts - 1; + } + curval = g_cfg_opts_vals[opt_num]; + } else { + curval += change; + /* HACK: min_val, max_val testing here */ + } + iptr = (int *)menuptr->ptr; + *iptr = curval; + } + g_config_kegs_update_needed = 1; + } + +#if 0 + if(menu_pos == highlight_pos) { + printf("menu_pos %d opt_num %d\n", menu_pos, opt_num); + } +#endif + + if(opt_num >= 0) { + str = &(g_cfg_opts_strs[opt_num][0]); + } else { + if(type == CFGTYPE_INT) { + str = &(g_cfg_opts_strs[0][0]); + snprintf(str, CFG_OPT_MAXSTR, "%d", curval); // OG + } else if (type == CFGTYPE_DISK) { + str = &(g_cfg_opts_strs[0][0]), + cfg_get_disk_name(str, CFG_OPT_MAXSTR, type_ext, 1); + str = cfg_shorten_filename(str, 68); + } else if (type == CFGTYPE_FILE) { + str = &(g_cfg_opts_strs[0][0]); + snprintf(str, CFG_OPT_MAXSTR, "%s", curstr); // OG + str = cfg_shorten_filename(str, 68); + } else { + str=""; + } + } + +#if 0 + if(menu_pos == highlight_pos) { + printf("menu_pos %d buf_pos %d, str is %s, %02x, %02x, " + "%02x %02x\n", + menu_pos, bufpos, str, g_cfg_opt_buf[bufpos-1], + g_cfg_opt_buf[bufpos-2], + g_cfg_opt_buf[bufpos-3], + g_cfg_opt_buf[bufpos-4]); + } +#endif + + g_cfg_opt_buf[bufpos] = 0; + strncpy(&(g_cfg_opt_buf[bufpos]), str, CFG_OPT_MAXSTR - bufpos - 1); + g_cfg_opt_buf[CFG_OPT_MAXSTR-1] = 0; +} + +void +cfg_get_base_path(char *pathptr, const char *inptr, int go_up) +{ + const char *tmpptr; + char *slashptr; + char *outptr; + int add_dotdot, is_dotdot; + int len; + int c; + + /* Take full filename, copy it to pathptr, and truncate at last slash */ + /* inptr and pathptr can be the same */ + /* if go_up is set, then replace a blank dir with ".." */ + /* but first, see if path is currently just ../ over and over */ + /* if so, just tack .. onto the end and return */ + //printf("cfg_get_base start with %s\n", inptr); + + g_cfg_file_match[0] = 0; + tmpptr = inptr; + is_dotdot = 1; + while(1) { + if(tmpptr[0] == 0) { + break; + } + if(tmpptr[0] == '.' && tmpptr[1] == '.' && tmpptr[2] == '/') { + tmpptr += 3; + } else { + is_dotdot = 0; + break; + } + } + slashptr = 0; + outptr = pathptr; + c = -1; + while(c != 0) { + c = *inptr++; + if(c == '/') { + if(*inptr != 0) { /* if not a trailing slash... */ + slashptr = outptr; + } + } + *outptr++ = c; + } + if(!go_up) { + /* if not go_up, copy chopped part to g_cfg_file_match*/ + /* copy from slashptr+1 to end */ + tmpptr = slashptr+1; + if(slashptr == 0) { + tmpptr = pathptr; + } + strncpy(&g_cfg_file_match[0], tmpptr, CFG_PATH_MAX); + /* remove trailing / from g_cfg_file_match */ + len = strlen(&g_cfg_file_match[0]); + if((len > 1) && (len < (CFG_PATH_MAX - 1)) && + g_cfg_file_match[len - 1] == '/') { + g_cfg_file_match[len - 1] = 0; + } + //printf("set g_cfg_file_match to %s\n", &g_cfg_file_match[0]); + } + if(!is_dotdot && (slashptr != 0)) { + slashptr[0] = '/'; + slashptr[1] = 0; + outptr = slashptr + 2; + } + add_dotdot = 0; + if(pathptr[0] == 0 || is_dotdot) { + /* path was blank, or consisted of just ../ pattern */ + if(go_up) { + add_dotdot = 1; + } + } else if(slashptr == 0) { + /* no slashes found, but path was not blank--make it blank */ + if(pathptr[0] == '/') { + pathptr[1] = 0; + } else { + pathptr[0] = 0; + } + } + + if(add_dotdot) { + --outptr; + outptr[0] = '.'; + outptr[1] = '.'; + outptr[2] = '/'; + outptr[3] = 0; + } + + //printf("cfg_get_base end with %s, is_dotdot:%d, add_dotdot:%d\n", + // pathptr, is_dotdot, add_dotdot); +} + +void +cfg_file_init() +{ + int slot, drive; + int i; + + if(g_cfg_slotdrive < 0xfff) { + cfg_get_disk_name(&g_cfg_tmp_path[0], CFG_PATH_MAX, + g_cfg_slotdrive, 0); + + slot = g_cfg_slotdrive >> 8; + drive = g_cfg_slotdrive & 1; + for(i = 0; i < 6; i++) { + if(g_cfg_tmp_path[0] != 0) { + break; + } + /* try to get a starting path from some mounted drive */ + drive = !drive; + if(i & 1) { + slot++; + if(slot >= 8) { + slot = 5; + } + } + cfg_get_disk_name(&g_cfg_tmp_path[0], CFG_PATH_MAX, + (slot << 8) + drive, 0); + } + } else { + // Just use g_cfg_file_def_name + strncpy(&g_cfg_tmp_path[0], g_cfg_file_def_name, CFG_PATH_MAX); + } + + cfg_get_base_path(&g_cfg_file_curpath[0], &g_cfg_tmp_path[0], 0); + g_cfg_dirlist.invalid = 1; +} + +void +cfg_free_alldirents(Cfg_listhdr *listhdrptr) +{ + int i; + + if(listhdrptr->max > 0) { + // Free the old directory listing + for(i = 0; i < listhdrptr->last; i++) { + free(listhdrptr->direntptr[i].name); + } + free(listhdrptr->direntptr); + } + + listhdrptr->direntptr = 0; + listhdrptr->last = 0; + listhdrptr->max = 0; + listhdrptr->invalid = 0; + + listhdrptr->topent = 0; + listhdrptr->curent = 0; +} + + +void +cfg_file_add_dirent(Cfg_listhdr *listhdrptr, const char *nameptr, int is_dir, + int size, int image_start, int part_num) +{ + Cfg_dirent *direntptr; + char *ptr; + int inc_amt; + int namelen; + + namelen = strlen(nameptr); + if(listhdrptr->last >= listhdrptr->max) { + // realloc + inc_amt = MAX(64, listhdrptr->max); + inc_amt = MIN(inc_amt, 1024); + listhdrptr->max += inc_amt; + listhdrptr->direntptr = (Cfg_dirent*)realloc(listhdrptr->direntptr, + listhdrptr->max * sizeof(Cfg_dirent)); + } + ptr = (char*)malloc(namelen+1+is_dir); // OG Added cast + strncpy(ptr, nameptr, namelen+1); + if(is_dir) { + strcat(ptr, "/"); + } +#if 0 + printf("...file entry %d is %s\n", g_cfg_dirlist.last, ptr); +#endif + direntptr = &(listhdrptr->direntptr[listhdrptr->last]); + direntptr->name = ptr; + direntptr->is_dir = is_dir; + direntptr->size = size; + direntptr->image_start = image_start; + direntptr->part_num = part_num; + listhdrptr->last++; +} + +int +cfg_dirent_sortfn(const void *obj1, const void *obj2) +{ + const Cfg_dirent *direntptr1, *direntptr2; + int ret; + + /* Called by qsort to sort directory listings */ + direntptr1 = (const Cfg_dirent *)obj1; + direntptr2 = (const Cfg_dirent *)obj2; +#if defined(MAC) || defined(_WIN32) + // OG + ret = 0; +// ret = strcasecmp(direntptr1->name, direntptr2->name); +#else + ret = strcmp(direntptr1->name, direntptr2->name); +#endif + return ret; +} + +int +cfg_str_match(const char *str1, const char *str2, int len) +{ + const byte *bptr1, *bptr2; + int c, c2; + int i; + + /* basically, work like strcmp, except if str1 ends first, return 0 */ + + bptr1 = (const byte *)str1; + bptr2 = (const byte *)str2; + for(i = 0; i < len; i++) { + c = *bptr1++; + c2 = *bptr2++; + if(c == 0) { + if(i > 0) { + return 0; + } else { + return c - c2; + } + } + if(c != c2) { + return c - c2; + } + } + + return 0; +} + +void +cfg_file_readdir(const char *pathptr) +{ + struct dirent *direntptr; + struct stat stat_buf; + DIR *dirptr; + mode_t fmt; + char *str; + const char *tmppathptr; + int size; + int ret; + int is_dir, is_gz; + int len; + int i; + + if(!strncmp(pathptr, &g_cfg_file_cachedpath[0], CFG_PATH_MAX) && + (g_cfg_dirlist.last > 0) && (g_cfg_dirlist.invalid==0)){ + return; + } + // No match, must read new directory + + // Free all dirents that were cached previously + cfg_free_alldirents(&g_cfg_dirlist); + + strncpy(&g_cfg_file_cachedpath[0], pathptr, CFG_PATH_MAX); + strncpy(&g_cfg_file_cachedreal[0], pathptr, CFG_PATH_MAX); + + str = &g_cfg_file_cachedreal[0]; + + for(i = 0; i < 200; i++) { + len = strlen(str); + if(len <= 0) { + break; + } else if(len < CFG_PATH_MAX-2) { + if(str[len-1] != '/') { + // append / to make various routines work + str[len] = '/'; + str[len+1] = 0; + } + } + ret = cfg_stat(str, &stat_buf); + is_dir = 0; + if(ret == 0) { + fmt = stat_buf.st_mode & S_IFMT; + if(fmt == S_IFDIR) { + // it's a directory + is_dir = 1; + } + } + if(is_dir) { + break; + } else { + // user is entering more path, use base for display + cfg_get_base_path(str, str, 0); + } + } + + tmppathptr = str; + if(str[0] == 0) { + tmppathptr = "."; + } + cfg_file_add_dirent(&g_cfg_dirlist, "..", 1, 0, -1, -1); + + dirptr = opendir(tmppathptr); + if(dirptr == 0) { + printf("Could not open %s as a directory\n", tmppathptr); + return; + } + while(1) { + direntptr = readdir(dirptr); + if(direntptr == 0) { + break; + } + if(!strcmp(".", direntptr->d_name)) { + continue; + } + if(!strcmp("..", direntptr->d_name)) { + continue; + } + // Else, see if it is a directory or a file + snprintf(&g_cfg_tmp_path[0], CFG_PATH_MAX, "%s%s", + &g_cfg_file_cachedreal[0], direntptr->d_name); + ret = cfg_stat(&g_cfg_tmp_path[0], &stat_buf); + len = strlen(g_cfg_tmp_path); + is_dir = 0; + is_gz = 0; + if((len > 3) && (strcmp(&g_cfg_tmp_path[len - 3], ".gz") == 0)){ + is_gz = 1; + } + if(ret != 0) { + printf("stat %s ret %d, errno:%d\n", &g_cfg_tmp_path[0], + ret, errno); + stat_buf.st_size = 0; + continue; // skip it + } else { + fmt = stat_buf.st_mode & S_IFMT; + size = stat_buf.st_size; + if(fmt == S_IFDIR) { + // it's a directory + is_dir = 1; + } else if((fmt == S_IFREG) && (is_gz == 0)) { + if(g_cfg_slotdrive < 0xfff) { + if(size < 140*1024) { + continue; /* skip it */ + } + } else { + /* see if there are size limits */ + if((size < g_cfg_file_min_size) || + (size > g_cfg_file_max_size)) { + continue; /* skip it */ + } + } + } + } + cfg_file_add_dirent(&g_cfg_dirlist, direntptr->d_name, is_dir, + stat_buf.st_size, -1, -1); + } + + /* then sort the results (Mac's HFS+ is sorted, but other FS won't be)*/ + qsort(&(g_cfg_dirlist.direntptr[0]), g_cfg_dirlist.last, + sizeof(Cfg_dirent), cfg_dirent_sortfn); + + g_cfg_dirlist.curent = g_cfg_dirlist.last - 1; + for(i = g_cfg_dirlist.last - 1; i >= 0; i--) { + ret = cfg_str_match(&g_cfg_file_match[0], + g_cfg_dirlist.direntptr[i].name, CFG_PATH_MAX); + if(ret <= 0) { + /* set cur ent to closest filename to the match name */ + g_cfg_dirlist.curent = i; + } + } +} + +char * +cfg_shorten_filename(const char *in_ptr, int maxlen) +{ + char *out_ptr; + int len; + int c; + int i; + + /* Warning: uses a static string, not reentrant! */ + + out_ptr = &(g_cfg_file_shortened[0]); + len = strlen(in_ptr); + maxlen = MIN(len, maxlen); + for(i = 0; i < maxlen; i++) { + c = in_ptr[i] & 0x7f; + if(c < 0x20) { + c = '*'; + } + out_ptr[i] = c; + } + out_ptr[maxlen] = 0; + if(len > maxlen) { + for(i = 0; i < (maxlen/2); i++) { + c = in_ptr[len-i-1] & 0x7f; + if(c < 0x20) { + c = '*'; + } + out_ptr[maxlen-i-1] = c; + } + out_ptr[(maxlen/2) - 1] = '.'; + out_ptr[maxlen/2] = '.'; + out_ptr[(maxlen/2) + 1] = '.'; + } + + return out_ptr; +} + +void +cfg_fix_topent(Cfg_listhdr *listhdrptr) +{ + int num_to_show; + + num_to_show = listhdrptr->num_to_show; + + /* Force curent and topent to make sense */ + if(listhdrptr->curent >= listhdrptr->last) { + listhdrptr->curent = listhdrptr->last - 1; + } + if(listhdrptr->curent < 0) { + listhdrptr->curent = 0; + } + if(abs(listhdrptr->curent - listhdrptr->topent) >= num_to_show) { + listhdrptr->topent = listhdrptr->curent - (num_to_show/2); + } + if(listhdrptr->topent > listhdrptr->curent) { + listhdrptr->topent = listhdrptr->curent - (num_to_show/2); + } + if(listhdrptr->topent < 0) { + listhdrptr->topent = 0; + } +} + +void +cfg_file_draw() +{ + Cfg_listhdr *listhdrptr; + Cfg_dirent *direntptr; + const char *str, *fmt; + int num_to_show; + int yoffset; + int x, y; + int i; + + cfg_file_readdir(&g_cfg_file_curpath[0]); + + for(y = 0; y < 21; y++) { + cfg_htab_vtab(0, y); + cfg_printf("\tZ\t"); + for(x = 1; x < 79; x++) { + cfg_htab_vtab(x, y); + cfg_putchar(' '); + } + cfg_htab_vtab(79, y); + cfg_printf("\t_\t"); + } + + cfg_htab_vtab(1, 0); + cfg_putchar('\b'); + for(x = 1; x < 79; x++) { + cfg_putchar(' '); + } + if(g_cfg_slotdrive < 0xfff) { + cfg_htab_vtab(30, 0); + cfg_printf("\bSelect image for s%dd%d\b", + (g_cfg_slotdrive >> 8), (g_cfg_slotdrive & 0xff) + 1); + } else { + cfg_htab_vtab(5, 0); + cfg_printf("\bSelect file to use as %-40s\b", + cfg_shorten_filename(g_cfg_file_def_name, 40)); + } + + cfg_htab_vtab(2, 1); + cfg_printf("config.kegs path: %-56s", + cfg_shorten_filename(&g_config_kegs_name[0], 56)); + + cfg_htab_vtab(2, 2); + cfg_printf("Current KEGS directory: %-50s", + cfg_shorten_filename(&g_cfg_cwd_str[0], 50)); + + cfg_htab_vtab(2, 3); + + str = ""; + if(g_cfg_file_pathfield) { + str = "\b \b"; + } + cfg_printf("Path: %s%s", + cfg_shorten_filename(&g_cfg_file_curpath[0], 68), str); + + cfg_htab_vtab(0, 4); + cfg_printf(" \t"); + for(x = 1; x < 79; x++) { + cfg_putchar('\\'); + } + cfg_printf("\t "); + + + /* Force curent and topent to make sense */ + listhdrptr = &g_cfg_dirlist; + num_to_show = CFG_NUM_SHOWENTS; + yoffset = 5; + if(g_cfg_select_partition > 0) { + listhdrptr = &g_cfg_partitionlist; + num_to_show -= 2; + cfg_htab_vtab(2, yoffset); + cfg_printf("Select partition of %-50s\n", + cfg_shorten_filename(&g_cfg_file_path[0], 50), str); + yoffset += 2; + } + + listhdrptr->num_to_show = num_to_show; + cfg_fix_topent(listhdrptr); + for(i = 0; i < num_to_show; i++) { + y = i + yoffset; + if(listhdrptr->last > (i + listhdrptr->topent)) { + direntptr = &(listhdrptr-> + direntptr[i + listhdrptr->topent]); + cfg_htab_vtab(2, y); + if(direntptr->is_dir) { + cfg_printf("\tXY\t "); + } else { + cfg_printf(" "); + } + if(direntptr->part_num >= 0) { + cfg_printf("%3d: ", direntptr->part_num); + } + str = cfg_shorten_filename(direntptr->name, 45); + fmt = "%-45s"; + if(i + listhdrptr->topent == listhdrptr->curent) { + if(g_cfg_file_pathfield == 0) { + fmt = "\b%-45s\b"; + } else { + fmt = "%-44s\b \b"; + } + } + cfg_printf(fmt, str); + if(!direntptr->is_dir) { + cfg_print_num(direntptr->size, 13); + } + } + } + + cfg_htab_vtab(1, 5 + CFG_NUM_SHOWENTS); + cfg_putchar('\t'); + for(x = 1; x < 79; x++) { + cfg_putchar('L'); + } + cfg_putchar('\t'); + +} + +void +cfg_partition_selected() +{ + char *str; + const char *part_str; + char *part_str2; + int pos; + int part_num; + + pos = g_cfg_partitionlist.curent; + str = g_cfg_partitionlist.direntptr[pos].name; + part_num = -2; + part_str = 0; + if(str[0] == 0 || (str[0] >= '0' && str[0] <= '9')) { + part_num = g_cfg_partitionlist.direntptr[pos].part_num; + } else { + part_str = str; + } + part_str2 = 0; + if(part_str != 0) { + part_str2 = (char *)malloc(strlen(part_str)+1); + strcpy(part_str2, part_str); + } + + insert_disk(g_cfg_slotdrive >> 8, g_cfg_slotdrive & 0xff, + &(g_cfg_file_path[0]), 0, 0, part_str2, part_num); + if(part_str2 != 0) { + free(part_str2); + } + g_cfg_slotdrive = -1; + g_cfg_select_partition = -1; +} + +void +cfg_file_update_ptr(char *str) +{ + char *newstr; + int len; + + len = strlen(str) + 1; + newstr = (char*)malloc(len); + memcpy(newstr, str, len); + if(g_cfg_file_strptr) { + if(*g_cfg_file_strptr) { + free(*g_cfg_file_strptr); + } + } + *g_cfg_file_strptr = newstr; + if(g_cfg_file_strptr == &(g_cfg_rom_path)) { + printf("Updated ROM file\n"); + load_roms_init_memory(); + } + g_config_kegs_update_needed = 1; +} + +void +cfg_file_selected() +{ + struct stat stat_buf; + char *str; + int fmt; + int ret; + + if(g_cfg_select_partition > 0) { + cfg_partition_selected(); + return; + } + + if(g_cfg_file_pathfield == 0) { + // in file section area of window + str = g_cfg_dirlist.direntptr[g_cfg_dirlist.curent].name; + if(!strcmp(str, "../")) { + /* go up one directory */ + cfg_get_base_path(&g_cfg_file_curpath[0], + &g_cfg_file_curpath[0], 1); + return; + } + + snprintf(&g_cfg_file_path[0], CFG_PATH_MAX, "%s%s", //OG + &g_cfg_file_cachedreal[0], str); + } else { + // just use cfg_file_curpath directly + strncpy(&g_cfg_file_path[0], &g_cfg_file_curpath[0], + CFG_PATH_MAX); + } + + ret = cfg_stat(&g_cfg_file_path[0], &stat_buf); + fmt = stat_buf.st_mode & S_IFMT; + cfg_printf("Stat'ing %s, st_mode is: %08x\n", &g_cfg_file_path[0], + (int)stat_buf.st_mode); + + if(ret != 0) { + printf("stat %s returned %d, errno: %d\n", &g_cfg_file_path[0], + ret, errno); + } else { + if(fmt == S_IFDIR) { + /* it's a directory */ + strncpy(&g_cfg_file_curpath[0], &g_cfg_file_path[0], + CFG_PATH_MAX); + } else { + /* select it */ + if(g_cfg_slotdrive < 0xfff) { + ret = cfg_maybe_insert_disk(g_cfg_slotdrive>>8, + g_cfg_slotdrive & 0xff, + &g_cfg_file_path[0]); + if(ret > 0) { + g_cfg_slotdrive = -1; + } + } else { + cfg_file_update_ptr(&g_cfg_file_path[0]); + g_cfg_slotdrive = -1; + } + } + } +} + + +void +cfg_file_handle_key(int key) +{ + Cfg_listhdr *listhdrptr; + int len; + + if(g_cfg_file_pathfield) { + if(key >= 0x20 && key < 0x7f) { + len = strlen(&g_cfg_file_curpath[0]); + if(len < CFG_PATH_MAX-4) { + g_cfg_file_curpath[len] = key; + g_cfg_file_curpath[len+1] = 0; + } + return; + } + } + + listhdrptr = &g_cfg_dirlist; + if(g_cfg_select_partition > 0) { + listhdrptr = &g_cfg_partitionlist; + } + if( (g_cfg_file_pathfield == 0) && + ((key >= 'a' && key <= 'z') || (key >= 'A' && key <= 'Z')) ) { + /* jump to file starting with this letter */ + g_cfg_file_match[0] = key; + g_cfg_file_match[1] = 0; + g_cfg_dirlist.invalid = 1; /* re-read directory */ + } + + switch(key) { + case 0x1b: + if(g_cfg_slotdrive < 0xfff) { + eject_disk_by_num(g_cfg_slotdrive >> 8, + g_cfg_slotdrive & 0xff); + } + g_cfg_slotdrive = -1; + g_cfg_select_partition = -1; + g_cfg_dirlist.invalid = 1; + break; + case 0x0a: /* down arrow */ + if(g_cfg_file_pathfield == 0) { + listhdrptr->curent++; + cfg_fix_topent(listhdrptr); + } + break; + case 0x0b: /* up arrow */ + if(g_cfg_file_pathfield == 0) { + listhdrptr->curent--; + cfg_fix_topent(listhdrptr); + } + break; + case 0x0d: /* return */ + printf("handling return press\n"); + cfg_file_selected(); + break; + case 0x09: /* tab */ + g_cfg_file_pathfield = !g_cfg_file_pathfield; + break; + case 0x08: /* left arrow */ + case 0x7f: /* delete key */ + if(g_cfg_file_pathfield) { + // printf("left arrow/delete\n"); + len = strlen(&g_cfg_file_curpath[0]) - 1; + if(len >= 0) { + g_cfg_file_curpath[len] = 0; + } + } + break; + default: + printf("key: %02x\n", key); + } +#if 0 + printf("curent: %d, topent: %d, last: %d\n", + g_cfg_dirlist.curent, g_cfg_dirlist.topent, g_cfg_dirlist.last); +#endif +} + +void +config_control_panel() +{ + void (*fn_ptr)(); + const char *str; + Cfg_menu *menuptr; + void *ptr; + int print_eject_help; + int line; + int type; + int match_found; + int menu_line; + int menu_inc; + int max_line; + int key; + int i, j; + + // First, save important text screen state + g_save_cur_a2_stat = g_video.g_cur_a2_stat; + for(i = 0; i < 0x400; i++) { + g_save_text_screen_bytes[i] = g_slow_memory_ptr[0x400+i]; + g_save_text_screen_bytes[0x400+i] =g_slow_memory_ptr[0x10400+i]; + } + + g_video.g_cur_a2_stat = ALL_STAT_TEXT | ALL_STAT_VID80 | ALL_STAT_ANNUNC3 | + (0xf << BIT_ALL_STAT_TEXT_COLOR) | ALL_STAT_ALTCHARSET; + g_video.g_a2_new_all_stat[0] = g_video.g_cur_a2_stat; + g_video.g_new_a2_stat_cur_line = 0; + + cfg_printf("In config_control_panel\n"); + + for(i = 0; i < 20; i++) { + // Toss any queued-up keypresses + if(adb_read_c000() & 0x80) { + (void)adb_access_c010(); + } + } + g_adb.g_adb_repeat_vbl = 0; + g_cfg_vbl_count = 0; + // HACK: Force adb keyboard (and probably mouse) to "normal"... + + g_video.g_full_refresh_needed = -1; + g_video.g_a2_screen_buffer_changed = -1; + + cfg_home(); + j = 0; + + menuptr = g_cfg_main_menu; + if(g_sim65816.g_rom_version < 0) { + /* Must select ROM file */ + menuptr = g_cfg_rom_menu; + } + menu_line = 1; + menu_inc = 1; + g_cfg_slotdrive = -1; + g_cfg_select_partition = -1; + + while(g_config_control_panel) { + if(g_fatal_log > 0) { + x_show_alert(0, 0); + } + cfg_home(); + line = 1; + max_line = 1; + match_found = 0; + print_eject_help = 0; + cfg_printf("%s\n\n", menuptr[0].str); + while(line < 24) { + str = menuptr[line].str; + type = menuptr[line].cfgtype; + ptr = menuptr[line].ptr; + if(str == 0) { + break; + } + if((type & 0xf) == CFGTYPE_DISK) { + print_eject_help = 1; + } + cfg_parse_menu(menuptr, line, menu_line, 0); + if(line == menu_line) { + if(type != 0) { + match_found = 1; + } else if(menu_inc) { + menu_line++; + } else { + menu_line--; + } + } + if(line > max_line) { + max_line = line; + } + + cfg_printf("%s\n", g_cfg_opt_buf); + line++; + } + if((menu_line < 1) && !match_found) { + menu_line = 1; + } + if((menu_line >= max_line) && !match_found) { + menu_line = max_line; + } + + if(g_sim65816.g_rom_version < 0) { + cfg_htab_vtab(0, 21); + cfg_printf("\bYOU MUST SELECT A VALID ROM FILE\b\n"); + } + + cfg_htab_vtab(0, 23); + cfg_printf("Move: \tJ\t \tK\t Change: \tH\t \tU\t \tM\t"); + if(print_eject_help) { + cfg_printf(" Eject: "); + if(g_cfg_slotdrive >= 0) { + cfg_printf("\bESC\b"); + } else { + cfg_printf("E"); + } + } +#if 0 + cfg_htab_vtab(0, 22); + cfg_printf("menu_line: %d line: %d, vbl:%d, adb:%d key_dn:%d\n", + menu_line, line, g_cfg_vbl_count, g_adb_repeat_vbl, + g_key_down); +#endif + + if(g_cfg_slotdrive >= 0) { + cfg_file_draw(); + } + + key = -1; + refresh_video(1); + while(g_config_control_panel) { + refresh_video(1); + + video_update(); + key = adb_read_c000(); + if(key & 0x80) { + key = key & 0x7f; + (void)adb_access_c010(); + break; + } else { + key = -1; + } + micro_sleep(1.0/60.0); + g_cfg_vbl_count++; + if(!match_found) { + break; + } + } + + if((key >= 0) && (g_cfg_slotdrive < 0)) { + // Normal menu system + switch(key) { + case 0x0a: /* down arrow */ + menu_line++; + menu_inc = 1; + break; + case 0x0b: /* up arrow */ + menu_line--; + menu_inc = 0; + if(menu_line < 1) { + menu_line = 1; + } + break; + case 0x15: /* right arrow */ + cfg_parse_menu(menuptr, menu_line,menu_line,1); + break; + case 0x08: /* left arrow */ + cfg_parse_menu(menuptr,menu_line,menu_line,-1); + break; + case 0x0d: + type = menuptr[menu_line].cfgtype; + ptr = menuptr[menu_line].ptr; + switch(type & 0xf) { + case CFGTYPE_MENU: + menuptr = (Cfg_menu *)ptr; + menu_line = 1; + break; + case CFGTYPE_DISK: + g_cfg_slotdrive = type >> 4; + cfg_file_init(); + break; + case CFGTYPE_FUNC: + fn_ptr = (void (*)())ptr; + (*fn_ptr)(); + break; + case CFGTYPE_FILE: + g_cfg_slotdrive = 0xfff; + g_cfg_file_def_name = *((char **)ptr); + g_cfg_file_strptr = (char **)ptr; + cfg_file_init(); + } + break; + case 0x1b: + // Jump to last menu entry + menu_line = max_line; + break; + case 'e': + case 'E': + type = menuptr[menu_line].cfgtype; + if((type & 0xf) == CFGTYPE_DISK) { + eject_disk_by_num(type >> 12, + (type >> 4) & 0xff); + } + break; + default: + printf("key: %02x\n", key); + } + } else if(key >= 0) { + cfg_file_handle_key(key); + } + } + + for(i = 0; i < 0x400; i++) { + set_memory_c(0xe00400+i, g_save_text_screen_bytes[i], 0); + set_memory_c(0xe10400+i, g_save_text_screen_bytes[0x400+i], 0); + } + + // And quit + g_config_control_panel = 0; + g_adb.g_adb_repeat_vbl =g_sim65816.g_vbl_count + 60; + g_video.g_cur_a2_stat = g_save_cur_a2_stat; + change_display_mode(g_sim65816.g_cur_dcycs); + g_video.g_full_refresh_needed = -1; + g_video.g_a2_screen_buffer_changed = -1; +} + + +// extern byte g_bram[2][256]; +// extern byte* g_bram_ptr; +void x_clk_setup_bram_version() +{ + if(g_sim65816.g_rom_version < 3) { + g_clock.g_bram_ptr = (&g_clock.g_bram[0][0]); // ROM 01 + } else { + g_clock.g_bram_ptr = (&g_clock.g_bram[1][0]); // ROM 03 + } +} + + + +// OG Stub to be notified of disk insertion +void x_notify_disk_insertion(int _size, int _start, int _isprodos,int _slot, int _drive) +{ +} + +// Stub to be notified on motor status change +void x_notify_motor_status(int _motorOn,int _slot,int _drive, int _curtrack) +{ +} +// Stub to be notified of disk ejection +void x_notify_disk_ejection(int _slot,int _drive) +{ +} + +void x_exit(int _err) +{ + exit(_err); +} + +void x_update_info(const char* total_mhz) +{ + // OG TODO + /* + char* sp_str; + switch(g_sim65816.g_limit_speed) + { + case 1: sp_str = "1.0 Mhz"; break; + case 2: sp_str = "2.8 Mhz"; break; + case 3: sp_str = "8.0 Mhz"; break; + default: sp_str = "Unlimited"; break; + } + + sprintf(status_buf, "dcycs:%9.1f sim MHz:%s " + "Eff MHz:%s, sec:%1.3f vol:%02x pal:%x, Limit:%s", + dcycs/(1000.0*1000.0), sim_mhz_ptr, total_mhz_ptr, + dtime_diff_1sec, g_sound.g_doc_vol, g_video.g_a2vid_palette, + sp_str); + video_update_status_line(0, status_buf); + */ +} + +void x_refresh_panel(int _panel) +{ +} + +#ifdef DRIVER_WINDOWS +void x_play_sound(enum_sound hSound) +{ +} +#endif + +void +x_dialog_create_kegs_conf(const char *str) +{ + const char *path; + char tmp_buf[512]; + int ret; + + ret = x_show_alert(1, str); + if(ret) { + // Create empty file + path = "~/Library/KEGS"; + snprintf(tmp_buf, 500, "mkdir -p %s", path); + system(tmp_buf); + snprintf(tmp_buf, 500, "touch %s/%s", path, str); + system(tmp_buf); + } +} + + +void kegs_driver() +{ + g_driver.x_config_load_roms = x_config_load_roms; +} \ No newline at end of file diff --git a/kegs/Dummy/joystick_dummy.cpp b/kegs/Dummy/joystick_dummy.cpp new file mode 100644 index 0000000..c81ddba --- /dev/null +++ b/kegs/Dummy/joystick_dummy.cpp @@ -0,0 +1,49 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "../src/defc.h" +#ifndef _MSC_VER // OG Unknown MSFT header +#include +#endif +#include "../src/paddles.h" +#include "../src/moremem.h" + +/* +extern int g_joystick_native_type1; +extern int g_joystick_native_type2; +extern int g_joystick_native_type; +extern int g_paddle_buttons; +extern int g_paddle_val[]; +*/ +void +joystick_init() +{ + g_joystick_native_type1 = -1; + g_joystick_native_type2 = -1; + g_joystick_native_type = -1; +} + +void +joystick_update(double dcycs) +{ + int i; + + for(i = 0; i < 4; i++) { + g_paddles.g_paddle_val[i] = 32767; + } + g_moremem.g_paddle_buttons = 0xc; +} + +void +joystick_update_buttons() +{ +} + +// OG +void joystick_shut() +{ +} + diff --git a/kegs/Dummy/sounddriver_dummy.cpp b/kegs/Dummy/sounddriver_dummy.cpp new file mode 100644 index 0000000..31d2fa4 --- /dev/null +++ b/kegs/Dummy/sounddriver_dummy.cpp @@ -0,0 +1,51 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "../Src/defc.h" +#include "../Src/sound.h" + +//extern int g_audio_rate; + +void x_snd_init(word32 *shmaddr) +{ + +} + +void x_snd_shutdown() +{ + +} + + +void x_snd_child_init() +{ + + set_audio_rate(g_sound.g_audio_rate); + +} + + word32* x_sound_allocate(int size) + { + + return NULL; + } + + void x_sound_free(word32* mem) + { + + } + + +int x_snd_send_audio(byte *ptr, int in_size) +{ + + return in_size; +} + + void x_play_sound(enum_sound _hSound) + { + } + \ No newline at end of file diff --git a/kegs/OSX/2mg.icns b/kegs/OSX/2mg.icns new file mode 100644 index 0000000000000000000000000000000000000000..1e612e0d21cddc3d735e7928d8f6fc5d06c6be9e GIT binary patch literal 74738 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�uEWE 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 literal 0 HcmV?d00001 diff --git a/kegs/OSX/525.icns b/kegs/OSX/525.icns new file mode 100644 index 0000000000000000000000000000000000000000..94e5a90d7a8aa4a7f50feaeb45b8d50a5988b561 GIT binary patch literal 76671 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 +#include "../src/video.h" +#include "../src/graphcounter.h" +#include "../src/async_event.h" +#include "../Src/StdString.h" +#include "../Src/driver.h" + +#ifdef DRIVER_IOS +#include +#include +#else +#include +#include +extern void addConsoleWindow(Kimage*); +#endif + +extern int macUsingCoreGraphics; +extern void addConsoleWindow(Kimage*); + +#ifdef ENABLEQD +extern WindowRef g_main_window; +extern PixMapHandle pixmap_backbuffer; +extern GWorldPtr backbuffer; +#endif + + + +int x_vbl_count = 0; + + +void x_check_system_input_events(void) +{ + /* + while(get_state()==IN_PAUSE && !should_emulator_terminate() ) + micro_sleep(0.1); + */ +} + + +MyString messageLine; +int messageLineVBL=0; + + + +void x_async_refresh(CGContextRef myContext,CGRect myBoundingBox) +{ + +#ifdef ENABLEQD + CEmulatorMac* pEmu = (CEmulatorMac*)CEmulator::theEmulator; + if (!pEmu) return ; +#endif + +#ifndef DRIVER_IOS + x_vbl_count++; +#endif + + addFrameRate(0); + + CHANGE_BORDER(1,0xFF); + + // OG + if (macUsingCoreGraphics) + { + if(r_sim65816.is_emulator_offscreen_available() && g_kimage_offscreen.dev_handle) + { + + /* + void addConsoleWindow(Kimage* _dst); + addConsoleWindow(&g_kimage_offscreen); + */ + + CGContextSaveGState(myContext); + +#ifndef DRIVER_IOS + // CGContextTranslateCTM(myContext,0.0, X_A2_WINDOW_HEIGHT); + CGContextTranslateCTM(myContext,0.0, myBoundingBox.size.height); + CGContextScaleCTM(myContext,1.0,-1.0); +#endif + + + CGImageRef myImage = CGBitmapContextCreateImage((CGContextRef)g_kimage_offscreen.dev_handle); + + + + CGContextDrawImage(myContext, myBoundingBox, myImage);// 6 + +#ifndef VIDEO_SINGLEVLINE + if (r_sim65816.get_video_fx() == VIDEOFX_CRT) + { + + + CGContextSetRGBFillColor(myContext,0,0,0,0.5); + for(int h=0;hwindow_port; + Rect src_rect; + Rect dest_rect; + SetRect(&src_rect,0,0,704,462); + SetRect(&dest_rect,0,0,704,462); + + if (pixmap_backbuffer) + CopyBits( (BitMap *)(*pixmap_backbuffer), + GetPortBitMapForCopyBits(window_port), &src_rect, &dest_rect, + srcCopy, NULL); + +#endif + } + + + CHANGE_BORDER(1,0); + + if (r_sim65816.is_emulator_offscreen_available() && g_driver.x_handle_state_on_paint) + g_driver.x_handle_state_on_paint(myBoundingBox.size.width,myBoundingBox.size.height); + +} + + + +void +x_redraw_status_lines() +{ +} + +void +x_push_done() +{ +} + + +int macmain(int argc, char* argv[]) +{ + update_window(); + return kegsmain(0,NULL); +} + +void +x_full_screen(int do_full) +{ +} + +void x_invalidrect(); + + +int +x_show_alert(int is_fatal, const char *str) +{ + return 0; +} + +void x_refresh_video() +{ + + if (!r_sim65816.is_emulator_offscreen_available()) + { + return ; + } + + x_vbl_count = 0; + +#ifdef ENABLE_GRAPH + g_graph.draw_graph(&g_kimage_offscreen, g_sim65816.g_vbl_count); +#endif + + x_invalidrect(); +} + +#ifdef USE_RASTER + + +int x_init_raster(void* _data) +{ + return 1; +} + + +int x_close_raster() +{ + return 1; +} + +// NANO SLEEP XP http://www.dotnet247.com/247reference/msgs/57/289291.aspx + +int x_wait_for_vbl() +{ + return 1; +} + +int x_wait_for_last_refresh(double _w) +{ + + if (_w<0.0) + { + // on est trop lent : ca a pris plus d'une 1/60ieme de seconde pour construire la frame + return 0 ; + } + +#ifdef DRIVER_IOS + extern int x_frame_rate; + if (x_frame_rate==60 && g_video_offscreen_has_been_modified && !x_vbl_count) +#else + if (g_video_offscreen_has_been_modified && !x_vbl_count) +#endif + { + while(!x_vbl_count && !r_sim65816.should_emulator_terminate()) micro_sleep(0.01); + x_vbl_count--; + } + else + { + if(_w>0.0) + { + double s = get_dtime(); + if (_w>0.01) + micro_sleep(_w); + // sur windows le micro_sleep est lÈgËrement en retard! + while( get_dtime() < s+_w); + } + } + + return 0; +} + +#endif diff --git a/kegs/OSX/macdriver_generic.cpp b/kegs/OSX/macdriver_generic.cpp new file mode 100644 index 0000000..92442a6 --- /dev/null +++ b/kegs/OSX/macdriver_generic.cpp @@ -0,0 +1,782 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#if !defined(DRIVER_OSX) && !defined(DRIVER_IOS) +#error +#endif + +#if defined(DRIVER_IOS) +#include +#include +#include + +#else +#include +#include +#include +#include + +/* +#if !defined(ACTIVEGSPLUGIN) && !defined(ACTIVEGSCOCOA) +#define ENABLEQD +#endif + */ +#endif + +#include + +#include "../src/defc.h" +#include "../src/protos_macdriver.h" +#include "../src/video.h" +#include "../src/raster.h" +#include "../src/sound.h" +#include "../src/StdString.h" + + + +int macUsingCoreGraphics=0; + +word32 g_mac_shift_control_state = 0; + +#ifdef ENABLEQD +WindowRef g_main_window; +CGrafPtr mac_window_port; +#endif + + + + + +//extern Kimage g_mainwin_kimage; + + +extern int Verbose; +/* +extern int g_video_act_width; +extern int g_video_act_height; +extern int g_video_act_margin_left; +extern int g_video_act_margin_right; +extern int g_video_act_margin_top; +extern int g_video_act_margin_bottom; +*/ +// extern int g_screen_depth; +// extern int g_force_depth; + + +//extern int g_screen_mdepth; + + +extern int g_send_sound_to_file; + +//extern int g_quit_sim_now; // OG Not need anymore +extern int g_config_control_panel; + + +int g_auto_repeat_on = -1; +int g_x_shift_control_state = 0; + + +extern int Max_color_size; + +extern word32 g_palette_8to1624[256]; +extern word32 g_a2palette_8to1624[256]; + +int g_alt_left_up = 1; +int g_alt_right_up = 1; + +//extern word32 g_full_refresh_needed; + +//extern int g_border_sides_refresh_needed; +//extern int g_border_special_refresh_needed; +//extern int g_status_refresh_needed; + +extern int g_lores_colors[]; + +extern int g_a2vid_palette; + +//extern int g_installed_full_superhires_colormap; + +//extern int g_screen_redraw_skip_amt; + +//extern word32 g_a2_screen_buffer_changed; + +int g_upd_count = 0; + + + + +void +update_window(void) +{ + + // OG Not needed + /* + SetPortWindowPort(g_main_window); + PenNormal(); + */ + + g_video.g_full_refresh_needed = -1; + g_video.g_a2_screen_buffer_changed = -1; + g_video.g_status_refresh_needed = 1; + g_video.g_border_sides_refresh_needed = 1; + g_video.g_border_special_refresh_needed = 1; + + g_upd_count++; + if(g_upd_count > 250) { + g_upd_count = 0; + } + +} + + +void x_update_modifiers(word32 state) +{ +//#ifndef ACTIVEIPHONE + + word32 state_xor; + int is_up; + + state = state & ( + cmdKey | controlKey | + shiftKey | alphaLock | optionKey + ); + state_xor = g_mac_shift_control_state ^ state; +// if (state_xor) printf("modified:%X\n",state); + is_up = 0; + if(state_xor & controlKey) { + is_up = ((state & controlKey) == 0); + adb_physical_key_update(0x36, is_up); + } + if(state_xor & alphaLock) { + is_up = ((state & alphaLock) == 0); + adb_physical_key_update(0x39, is_up); + } + if(state_xor & shiftKey) { + is_up = ((state & shiftKey) == 0); + adb_physical_key_update(0x38, is_up); + } + if(state_xor & cmdKey) { + is_up = ((state & cmdKey) == 0); + adb_physical_key_update(0x37, is_up); + } + if(state_xor & optionKey) { + is_up = ((state & optionKey) == 0); + adb_physical_key_update(0x3a, is_up); + } +//#endif + + g_mac_shift_control_state = state; +} + + +void +x_update_color(int col_num, int red, int green, int blue, word32 rgb) +{ +} + + +void +x_update_physical_colormap() +{ +} + +void x_show_color_array() +{ + int i; + + for(i = 0; i < 256; i++) { + printf("%02x: %08x\n", i, g_palette_8to1624[i]); + } +} + + + +void +x_get_kimage(Kimage *kimage_ptr) +{ +#ifdef ENABLEQD + PixMapHandle pixmap_handle; + GWorldPtr world; + Rect world_rect; + OSStatus err; +#endif +// word32 *wptr; + byte *ptr; +// int row_bytes; + int width; + int height; + int depth, mdepth; + int size; + + + width = kimage_ptr->width_req; + height = kimage_ptr->height; + depth = kimage_ptr->depth; + mdepth = kimage_ptr->mdepth; + + size = 0; + if(depth == s_video.g_screen_depth) + { + + if (!macUsingCoreGraphics) + + { +#ifdef ENABLEQD + SetRect(&world_rect, 0, 0, width, height); + err = NewGWorld( &world, 0, &world_rect, NULL, NULL, 0); + pixmap_handle = GetGWorldPixMap(world); + err = LockPixels(pixmap_handle); + ptr = (byte *)GetPixBaseAddr(pixmap_handle); + int row_bytes = ((*pixmap_handle)->rowBytes & 0x3fff); + kimage_ptr->width_act = row_bytes / (mdepth >> 3); + mac_printf("Got depth: %d, bitmap_ptr: %p, width: %d\n", depth, ptr, kimage_ptr->width_act); + mac_printf("pixmap->base: %08x, rowbytes: %08x, pixType:%08x\n",(int)(*pixmap_handle)->baseAddr,(*pixmap_handle)->rowBytes,(*pixmap_handle)->pixelType); + word32* wptr = (word32 *)(*pixmap_handle); + mac_printf("wptr: %p=%08x %08x %08x %08x %08x %08x %08x %08x\n",wptr,wptr[0], wptr[1], wptr[2], wptr[3],wptr[4], wptr[5], wptr[6], wptr[7]); + kimage_ptr->dev_handle = pixmap_handle; + kimage_ptr->data_ptr = ptr; +#endif + } + else + { + + + kimage_ptr->width_act = width ; + size = height* kimage_ptr->width_act * mdepth >> 3; + ptr = (byte *)malloc(size); + + if(ptr == 0) { + mac_printf("malloc for data fail, mdepth:%d\n", mdepth); + exit(2); + } + + kimage_ptr->data_ptr = ptr; + kimage_ptr->dev_handle = (void *)-1; + } + } + else { + + /* allocate buffers for video.c to draw into */ + + + kimage_ptr->width_act = width ; + size = height* kimage_ptr->width_act * mdepth >> 3 ; + ptr = (byte *)malloc(size); + + if(ptr == 0) { + mac_printf("malloc for data fail, mdepth:%d\n", mdepth); + exit(2); + } + + kimage_ptr->data_ptr = ptr; + kimage_ptr->dev_handle = (void *)-1; + } + + mac_printf("kim: %p, dev:%p data: %p, size: %08x\n", kimage_ptr, + kimage_ptr->dev_handle, kimage_ptr->data_ptr, size); + +} + + +#ifdef ENABLEQD +PixMapHandle pixmap_backbuffer=NULL; +GWorldPtr backbuffer=NULL; +#endif + +// OG MAx OSX 10.5 and iOS 3.1 do not support passing null while creating bitmapcontext = must provide its own array +#if ( MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_5 ) || ( __IPHONE_OS_VERSION_MAX_REQUIRED < 4000 ) +#define CGBITMAPCONTEXT_REQUIRES_DATA +#endif + + + +void x_video_init() +{ + int lores_col; + int i; + + printf("Preparing graphics system\n"); + + +#ifndef ENABLEQD + s_video.g_screen_depth = s_video.g_screen_mdepth = 32; +#else + // Get screen depth + GDHandle g_gdhandle = GetGDevice(); + s_video.g_screen_mdepth = (**((**g_gdhandle).gdPMap)).pixelSize; + + s_video.g_screen_depth = s_video.g_screen_mdepth; + +#endif + + + if(s_video.g_screen_depth > 16) { + /* 32-bit display */ + s_video.g_red_mask = 0xff; + s_video.g_green_mask = 0xff; + s_video.g_blue_mask = 0xff; + + if (macUsingCoreGraphics) + { + s_video.g_red_left_shift = 0; + s_video.g_green_left_shift = 8; + s_video.g_blue_left_shift = 16; + } + else + { + s_video.g_red_left_shift = 16; + s_video.g_green_left_shift = 8; + s_video.g_blue_left_shift = 0; + + } + + s_video.g_red_right_shift = 0; + s_video.g_green_right_shift = 0; + s_video.g_blue_right_shift = 0; + } else if(s_video.g_screen_depth > 8) { + /* 16-bit display */ + s_video.g_red_mask = 0x1f; + s_video.g_green_mask = 0x1f; + s_video.g_blue_mask = 0x1f; + s_video.g_red_left_shift = 10; + s_video.g_green_left_shift = 5; + s_video.g_blue_left_shift = 0; + s_video.g_red_right_shift = 3; + s_video.g_green_right_shift = 3; + s_video.g_blue_right_shift = 3; + } + + + // OG Create backbuffer +#ifdef USE_RASTER + x_init_raster(NULL); +#endif + + init_kimage(&g_kimage_offscreen,0,s_video.g_screen_depth, s_video.g_screen_mdepth); + g_kimage_offscreen.width_act = X_A2_WINDOW_WIDTH; + g_kimage_offscreen.width_req = X_A2_WINDOW_WIDTH; + g_kimage_offscreen.height = X_A2_WINDOW_HEIGHT; + + + if (!macUsingCoreGraphics) + { + +#ifdef ENABLEQD + /* + Rect r; + SetRect(&r, 0, 0, 704, 462); + NewGWorld( &backbuffer, 0, &r, NULL, NULL, 0); + pixmap_backbuffer = GetGWorldPixMap(backbuffer); + */ + x_get_kimage(&g_kimage_offscreen); + + +#endif + } + else + { + + + + int pixelsWide = g_kimage_offscreen.width_act; + int pixelsHigh = g_kimage_offscreen.height; + int bitmapBytesPerRow = (pixelsWide * 4);// 1 + + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + char* bitmapData = NULL; +#ifdef CGBITMAPCONTEXT_REQUIRES_DATA + int bitmapByteCount = (bitmapBytesPerRow * pixelsHigh); + void* bitmapDataAllocPtr = NULL; + bitmapData = (char*)memalloc_align(bitmapByteCount, 256, &bitmapDataAllocPtr); + if (bitmapData == NULL) + { + fprintf (stderr, "Memory not allocated!"); + return ; + } + g_kimage_offscreen.dev_handle2 = bitmapDataAllocPtr; +#else + bitmapData=NULL; +#endif + CGContextRef offscreenContext = CGBitmapContextCreate (bitmapData,// 4 + pixelsWide, + pixelsHigh, + 8, // bits per component + bitmapBytesPerRow, + colorSpace, + kCGImageAlphaNoneSkipLast); + if (offscreenContext== NULL) + { + #ifdef CGBITMAPCONTEXT_REQUIRES_DATA + if (bitmapDataAllocPtr) + free (bitmapDataAllocPtr);// 5 + bitmapData=NULL; + bitmapDataAllocPtr=NULL; + #endif + printf("context not created"); + return ; + } + + +#ifndef CGBITMAPCONTEXT_REQUIRES_DATA + bitmapData = (char*)CGBitmapContextGetData(offscreenContext); +#endif + if (!bitmapData) + { + printf("video initialization failed..."); + return ; + } + + + g_kimage_offscreen.data_ptr = (byte*)bitmapData; + g_kimage_offscreen.dev_handle = (void*)offscreenContext; + + + CGContextSetRGBFillColor (offscreenContext, 0, 0, 0, 1); + CGContextFillRect (offscreenContext, CGRectMake (0,0, 704, 462 )); + + CGColorSpaceRelease( colorSpace );// 6 + } + + + video_get_kimages(); + + if(s_video.g_screen_depth != 8) { + // Get g_mainwin_kimage + video_get_kimage(&s_video.g_mainwin_kimage, 0, s_video.g_screen_depth, + s_video.g_screen_mdepth); + } + + for(i = 0; i < 256; i++) { + lores_col = g_lores_colors[i & 0xf]; + video_update_color_raw(i, lores_col); + g_a2palette_8to1624[i] = g_palette_8to1624[i]; + } + + s_video.g_installed_full_superhires_colormap = 1; + + fflush(stdout); + +} + + +void x_video_shut() +{ + + + printf("xdriver_end\n"); + + + if (macUsingCoreGraphics) + { + #ifdef CGBITMAPCONTEXT_REQUIRES_DATA + if (g_kimage_offscreen.dev_handle2) + { + free(g_kimage_offscreen.dev_handle2); + g_kimage_offscreen.dev_handle2 = NULL; + // bitmapDataAllocPtr=NULL; + // bitmapData=NULL; + } + + #endif + g_kimage_offscreen.data_ptr = NULL; + if (g_kimage_offscreen.dev_handle) + { + CGContextRelease((CGContextRef)g_kimage_offscreen.dev_handle); + g_kimage_offscreen.dev_handle = NULL; + // bitmapData = NULL; + } + } + else + { +#ifdef ENABLEQD + pixmap_backbuffer = NULL; + DisposeGWorld(backbuffer); + backbuffer = NULL; +#endif + } + +#ifndef ACTIVEGS + extern int g_fatal_log; +if(g_fatal_log >= 0) +{ + x_show_alert(1, 0); +} +#endif +} + + + + +//extern volatile int x_in_async_refresh; + +void +x_push_kimage(Kimage *kimage_ptr, int destx, int desty, int srcx, int srcy, + int width, int height) +{ + + + // OG TO INVESTIGATE + if (!kimage_ptr->data_ptr) + { + printf("x_push_kimage: k_image_ptr not yet initilialized\n"); + return ; + } + + + + if (!g_kimage_offscreen.data_ptr) + { + printf("err:graphic not initialized yet"); + return; + } + int wd = kimage_ptr->width_act * kimage_ptr->mdepth>>3; + int w = width *4; + + // int bitmapBytesPerRow = (pixelsWide * 4);// 1 + int bitmapBytesPerRow = g_kimage_offscreen.width_act * (g_kimage_offscreen.mdepth >> 3); + + byte* ptrdest = g_kimage_offscreen.data_ptr + bitmapBytesPerRow*desty + destx*4; + byte* srcdest = kimage_ptr->data_ptr + wd*srcy + srcx*4; + for(int i=0;idev_handle == (void*)-1) + { + free(kimage_ptr->data_ptr); + kimage_ptr->data_ptr = NULL; + } + else + { + if (!macUsingCoreGraphics) + { +#ifdef ENABLEQD + UnlockPixels((PixMapHandle)kimage_ptr->dev_handle); + kimage_ptr->dev_handle = NULL; + DisposeGWorld((GWorldPtr)kimage_ptr->dev_handle2); + kimage_ptr->dev_handle2 = NULL; +#endif + } + } +} + +// OG Addding ratio +int x_calc_ratio(float&x,float&y) +{ + return 1; +} + + +void x_refresh_buffer() +{ +#ifdef ENABLEQD +Rect src_rect, dest_rect; +CGrafPtr window_port; + +PixMapHandle pixmap_handle = (PixMapHandle)g_kimage_offscreen.dev_handle; +SetRect(&src_rect, 0, 0, g_kimage_offscreen.width_act, g_kimage_offscreen.height); +dest_rect = src_rect; + + SetPortWindowPort(g_main_window); + window_port = GetWindowPort(g_main_window); + + CopyBits( (BitMap *)(*pixmap_handle), + GetPortBitMapForCopyBits(window_port), &src_rect, &dest_rect, + srcCopy, NULL); +#endif +} + +void x_recenter_hw_mouse() +{ + +} + +#if 0 +bool x_load_wav(const char* _Path, unsigned char** _outDataBuffer, unsigned int & _outFileSize, OASound & _sound ) +{ + + CFStringRef rawCFString = CFStringCreateWithCString( NULL, _Path, CFStringGetSystemEncoding() ); + CFURLRef urlRef = CFURLCreateWithFileSystemPath( kCFAllocatorDefault, rawCFString, kCFURLPOSIXPathStyle, FALSE ); + + + AudioFileID aSoundID = 0; + bool bSuccess=FALSE; + + // Open file + OSStatus error = AudioFileOpenURL(/*(CFURLRef)aFileURL*/urlRef, kAudioFileReadPermission, 0, &aSoundID); + if (error == noErr) + { // success + + //get Format + AudioFileTypeID format = 0; + UInt32 sizeFormat = sizeof(AudioFileTypeID); + OSStatus result = AudioFileGetProperty(aSoundID, kAudioFilePropertyFileFormat, &sizeFormat, (void*)&format); + if(result != noErr) + { + printf("cannot find file format"); + goto cleanup; + } + + if (format !=kAudioFileWAVEType) + { + printf("sound format not supported"); + goto cleanup; + + } + + //get DataFormat + AudioStreamBasicDescription dataFormat ; + UInt32 sizeDataFormat = sizeof(AudioStreamBasicDescription); + result = AudioFileGetProperty(aSoundID, kAudioFilePropertyDataFormat, &sizeDataFormat, (void*)&dataFormat); + if(result != noErr) + { + printf("cannot find file dataformat"); + goto cleanup; + } + + _sound.frequency = (int)dataFormat.mSampleRate; + _sound.depth = dataFormat.mBitsPerChannel; + _sound.nbchannel = dataFormat.mChannelsPerFrame; + + //get File size + UInt64 outDataSize = 0; + UInt32 thePropSize = sizeof(UInt64); + result = AudioFileGetProperty(aSoundID, kAudioFilePropertyAudioDataByteCount, + &thePropSize, &outDataSize); + if(result != noErr) + { + printf("cannot find file size"); + goto cleanup; + } + + _outFileSize = (UInt32)outDataSize; + + + + // Create buffer + *_outDataBuffer = (UInt8*)malloc(_outFileSize); + + //copy file into buffer + OSStatus l_readResult = noErr; + l_readResult = AudioFileReadBytes(aSoundID, false, 0, (UInt32*)&_outFileSize, *_outDataBuffer); + + if (l_readResult == noErr) + bSuccess = TRUE; //Ouf! + + } + +cleanup: + + if (!bSuccess) + printf(" --- Error %ld loading sound at path: %s",error,_Path); + else + { + // printf(" --- Sound loaded : %s",_Path); + } + + if (aSoundID) + AudioFileClose(aSoundID); + + if (urlRef) + CFRelease(urlRef); + CFRelease(rawCFString); + + return bSuccess; +} +#endif + + +void x_preload_sounds() +{ + + for(int i=0;i= 3); + +} + + + +pascal OSStatus +quit_event_handler(EventHandlerCallRef call_ref, EventRef event, void *ignore) +{ + OSStatus err; + + err = CallNextEventHandler(call_ref, event); + if(err == noErr) { + g_quit_seen = 1; + } + return err; +} + +void +show_simple_alert(const char *str1,const char *str2, const char *str3, int num) +{ + char buf[256]; + + g_fatal_log_strs[0] = kegs_malloc_str(str1); + g_fatal_log_strs[1] = kegs_malloc_str(str2); + g_fatal_log_strs[2] = kegs_malloc_str(str3); + g_fatal_log = 3; + if(num != 0) { + snprintf(buf, 250, ": %d", num); + g_fatal_log_strs[g_fatal_log++] = kegs_malloc_str(buf); + } + x_show_alert(0, 0); +} + + + +void cfg_toggle_config_panel(); + +pascal OSStatus +my_cmd_handler( EventHandlerCallRef handlerRef, EventRef event, void *userdata) +{ + OSStatus osresult; + HICommand command; + word32 command_id; + + osresult = eventNotHandledErr; + + GetEventParameter(event, kEventParamDirectObject, typeHICommand, NULL, + sizeof(HICommand), NULL, &command); + + command_id = (word32)command.commandID; + switch(command_id) { + case 'Kbep': + SysBeep(10); + osresult = noErr; + break; + case 'abou': + show_simple_alert("KEGSMAC v", (char *)g_kegs_version_str, + ", Copyright 2004 Kent Dickey\n" + "Latest version at http://kegs.sourceforge.net/\n", 0); + osresult = noErr; + break; + case 'KCFG': +#ifdef ACTIVEGS +#else + cfg_toggle_config_panel(); +#endif + osresult = noErr; + break; + case 'quit': + break; + case 'swin': + /* not sure what this is, but Panther sends it */ + break; + default: + printf("commandID %08x unknown\n", command_id); + SysBeep(90); + break; + } + return osresult; +} + + + +pascal OSStatus +my_win_handler(EventHandlerCallRef handlerRef, EventRef event, void *userdata) +{ + OSStatus os_result; + UInt32 event_kind; + + os_result = eventNotHandledErr; + + // SysBeep(1); + + event_kind = GetEventKind(event); + // show_alert("win handler", event_kind); + if(event_kind == kEventWindowDrawContent) + { + update_window(); + } if(event_kind == kEventWindowClose) { + + r_sim65816.quit_emulator(); + +#ifndef ACTIVEGS + g_quit_seen = 1; + my_exit(0); +#else + // OG notify emulator that window has closed + g_main_window = 0; +#endif + } else { + //show_event(GetEventClass(event), event_kind, 0); + update_window(); + } + + return os_result; +} + + +pascal OSStatus +dummy_event_handler(EventHandlerCallRef call_ref, EventRef in_event, + void *ignore) +{ + OSStatus err; + EventHandlerRef installed_handler; + EventTypeSpec event_spec = { kEventClassApplication, kEventAppQuit }; + + // From http://developer.apple.com/qa/qa2001/qa1061.html + // Trick to move main event queue to use ReceiveNextEvent in an event + // handler called by RunApplicationEventLoop + + err = InstallApplicationEventHandler(g_quit_handler_UPP, 1, &event_spec, + NULL, &installed_handler); + + x_async_sound_init(); + kegsmain(g_mac_argc, g_mac_argv); + x_async_snd_shutdown(); + + return noErr; +} + +/* +void add_event_key(int _k,int _u) +{ +} + */ + +void +check_input_events() +{ + OSStatus err; + EventTargetRef target; + EventRef event; + UInt32 event_class, event_kind; + byte mac_keycode; + UInt32 keycode; + UInt32 modifiers; + Point mouse_point, mouse_delta_point; + WindowRef window_ref; + int button, button_state; + EventMouseButton mouse_button; + int handled; + int mouse_events; + int is_up; + int in_win; + int ignore; + + if(g_quit_seen) { + exit(0); + } + + if (!g_main_window) + return ; + SetPortWindowPort(g_main_window); + + mouse_events = 0; + target = GetEventDispatcherTarget(); + while(1) { + err = ReceiveNextEvent(0, NULL, kEventDurationNoWait, + true, &event); + + if(err == eventLoopTimedOutErr) { + break; + } + if(err != noErr) { + printf("ReceiveNextEvent err: %d\n", (int)err); + break; + } + + event_class = GetEventClass(event); + event_kind = GetEventKind(event); + handled = 0; + switch(event_class) { + case kEventClassKeyboard: + handled = 1; + keycode = 0; + modifiers = 0; + GetEventParameter(event, kEventParamKeyMacCharCodes, + typeChar, NULL, sizeof(byte), NULL, + &mac_keycode); + GetEventParameter(event, kEventParamKeyCode, + typeUInt32, NULL, sizeof(UInt32), NULL, + &keycode); + GetEventParameter(event, kEventParamKeyModifiers, + typeUInt32, NULL, sizeof(UInt32), NULL, + &modifiers); + + x_update_modifiers((word32)modifiers); + + // Key up/down event + is_up = -1; + switch(event_kind) { + case kEventRawKeyDown: + is_up = 0; + //printf("key down: %02x, %08x\n", + // (int)mac_keycode, (int)keycode); + break; + case kEventRawKeyUp: + is_up = 1; + //printf("key up: %02x, %08x\n", + // (int)mac_keycode, (int)keycode); + break; + case kEventRawKeyModifiersChanged: + is_up = -1; + //printf("key xxx: %08x\n", (int)modifiers); + break; + } + if(is_up >= 0) { + adb_physical_key_update((int)keycode, is_up); + } + break; + case kEventClassMouse: + handled = 2; + mouse_events++; + GetEventParameter(event, kEventParamMouseLocation, + typeQDPoint, NULL, sizeof(Point), NULL, + &mouse_point); + GetWindowRegion(g_main_window, kWindowContentRgn, + g_event_rgnhandle); + in_win = PtInRgn(mouse_point, g_event_rgnhandle); + // in_win = 1 if it was in the contect region of window + err = GetEventParameter(event, kEventParamMouseDelta, + typeQDPoint, NULL, sizeof(Point), NULL, + &mouse_delta_point); + button = 0; + button_state = -1; + switch(event_kind) { + case kEventMouseDown: + button_state = 7; + handled = 3; + break; + case kEventMouseUp: + button_state = 0; + handled = 3; + break; + } + if(button_state >= 0) { + GetEventParameter(event, kEventParamMouseButton, + typeMouseButton, NULL, + sizeof(EventMouseButton), NULL, + &mouse_button); + button = mouse_button; + if(button > 1) { + button = 4 - button; + button = 1 << button; + } + ignore = (button_state != 0) && + (!in_win || g_ignore_next_click); + ignore = ignore || !g_mainwin_active; + if(ignore) { + // Outside of A2 window, ignore clicks + button = 0; + } + if(button_state == 0) { + g_ignore_next_click = 0; + } + } + + GlobalToLocal(&mouse_point); + + if(g_adb.g_warp_pointer) { + if(err == 0) { + g_mac_mouse_x += mouse_delta_point.h; + g_mac_mouse_y += mouse_delta_point.v; + } + mac_warp_mouse(); + } else { + g_mac_mouse_x = mouse_point.h - + g_video_act_margin_left; + g_mac_mouse_y = mouse_point.v - + g_video_act_margin_top; + } + +#if 0 + printf("Mouse %d at: %d,%d button:%d, button_st:%d\n", + mouse_events, g_mac_mouse_x, g_mac_mouse_y, + button, button_state); + printf("Mouse deltas: err:%d, %d,%d\n", (int)err, + mouse_delta_point.h, mouse_delta_point.v); +#endif + + update_mouse(g_mac_mouse_x, g_mac_mouse_y, + button_state, button & 7); + if(g_adb.g_warp_pointer) { + g_mac_mouse_x = A2_WINDOW_WIDTH/2; + g_mac_mouse_y = A2_WINDOW_HEIGHT/2; + update_mouse(g_mac_mouse_x, g_mac_mouse_y,0,-1); + } + + +#if 0 + // regarde si c'est un double click + int nbclick; + GetEventParameter(event, kEventParamClickCount, + typeUInt32, NULL, + sizeof(typeUInt32), NULL, + &nbclick); + if (nbclick==2) + { + extern void add_simulate_space(); + add_simulate_space(); + } +#endif + + + break; + case kEventClassApplication: + switch(event_kind) { + case kEventAppActivated: + handled = 1; + g_mainwin_active = 1; + window_ref = 0; + GetEventParameter(event, kEventParamWindowRef, + typeWindowRef, NULL, sizeof(WindowRef), + NULL, &window_ref); + if(window_ref == g_main_window) { + g_ignore_next_click = 1; + } + break; + case kEventAppDeactivated: + handled = 1; + g_mainwin_active = 0; + g_ignore_next_click = 1; + break; + } + break; + } + // show_event(event_class, event_kind, handled); + if(handled != 1) { + (void)SendEventToEventTarget(event, target); + } + ReleaseEvent(event); + } + + return; +} + +void +temp_run_application_event_loop(void) +{ + OSStatus err; + EventRef dummy_event; + EventHandlerRef install_handler; + EventTypeSpec event_spec = { 'KWIN', 'KWIN' }; + + // Create UPP for dummy_event_handler and for quit_event_handler + err = noErr; + dummy_event = 0; + + g_dummy_event_handler_UPP = NewEventHandlerUPP(dummy_event_handler); + g_quit_handler_UPP = NewEventHandlerUPP(quit_event_handler); + if((g_dummy_event_handler_UPP == 0) || (g_quit_handler_UPP == 0)) { + err = memFullErr; + } + + if(err == noErr) { + err = InstallApplicationEventHandler(g_dummy_event_handler_UPP, + 1, &event_spec, 0, &install_handler); + if(err == noErr) { + err = MacCreateEvent(NULL, 'KWIN', 'KWIN', + GetCurrentEventTime(), kEventAttributeNone, + &dummy_event); + if(err == noErr) { + err = PostEventToQueue(GetMainEventQueue(), + dummy_event, kEventPriorityHigh); + } + if(err == noErr) { + RunApplicationEventLoop(); + } + + (void)RemoveEventHandler(install_handler); + } + } + + if(dummy_event != NULL) { + ReleaseEvent(dummy_event); + } +} + + + +int +#ifdef ACTIVEGS +macmain +#else +main +#endif +(int argc, char* argv[]) +{ + ProcessSerialNumber my_psn; + + IBNibRef nibRef; + EventHandlerUPP handlerUPP; + EventTypeSpec cmd_event[3]; + GDHandle g_gdhandle ; + Rect win_rect; + OSStatus err; + +#ifndef ACTIVEGS + char *argptr; + int slash_cnt; + int i; + + /* Prepare argv0 */ + slash_cnt = 0; + argptr = argv[0]; + for(i = strlen(argptr); i >= 0; i--) { + if(argptr[i] == '/') { + slash_cnt++; + if(slash_cnt == 3) { + strncpy(&(g_argv0_path[0]), argptr, i); + g_argv0_path[i] = 0; + } + } + } + + printf("g_argv0_path is %s\n", g_argv0_path); + + g_mac_argv[0] = argv[0]; + g_mac_argc = 1; + i = 1; + while((i < argc) && (g_mac_argc < MAX_MAC_ARGS)) { + if(!strncmp(argv[i], "-psn", 4)) { + /* skip this argument */ + } else { + g_mac_argv[g_mac_argc++] = argv[i]; + } + i++; + } +#endif + + InitCursor(); + g_event_rgnhandle = NewRgn(); + g_status_font_family = FMGetFontFamilyFromName("\pCourier"); + + SetRect(&win_rect, 0, 0, X_A2_WINDOW_WIDTH, X_A2_WINDOW_HEIGHT + // OG Remove status line from ActiveGS window +#ifndef ACTIVEGS + + MAX_STATUS_LINES*16 + 8 +#endif + ); + OffsetRect(&win_rect, 64, 50); + + + // Create a Nib reference passing the name of the nib file + // CreateNibReference only searches into the application bundle. + err = CreateNibReference(CFSTR("main"), &nibRef); + require_noerr( err, CantGetNibRef ); + // Once the nib reference is created, set the menu bar. + err = SetMenuBarFromNib(nibRef, CFSTR("MenuBar")); + require_noerr( err, CantSetMenuBar ); + + +#ifndef ACTIVEGS + err = CreateNewWindow(kDocumentWindowClass, + kWindowStandardDocumentAttributes | + kWindowStandardHandlerAttribute, + &win_rect, &g_main_window); + + err = SetWindowTitleWithCFString(g_main_window, CFSTR("KEGSMAC")); +#else + err = CreateNewWindow(kDocumentWindowClass, + (kWindowCloseBoxAttribute /*| kWindowFullZoomAttribute */| kWindowCollapseBoxAttribute /*| kWindowResizableAttribute*/) /*kWindowStandardDocumentAttributes*/ | + kWindowStandardHandlerAttribute, + &win_rect, &g_main_window); + extern CFStringRef activeGSversionSTR; + err = SetWindowTitleWithCFString(g_main_window, activeGSversionSTR); +#endif + + //printf("CreateNewWindow ret: %d, g_main_window: %p\n", (int)err, g_main_window); + + + // We don't need the nib reference anymore. + DisposeNibReference(nibRef); + + SysBeep(120); + + handlerUPP = NewEventHandlerUPP( my_cmd_handler ); + + cmd_event[0].eventClass = kEventClassCommand; + cmd_event[0].eventKind = kEventProcessCommand; + InstallWindowEventHandler(g_main_window, handlerUPP, 1, &cmd_event[0], + (void *)g_main_window, NULL); + + handlerUPP = NewEventHandlerUPP(my_win_handler); + cmd_event[0].eventClass = kEventClassWindow; + cmd_event[0].eventKind = kEventWindowDrawContent; + cmd_event[1].eventClass = kEventClassWindow; + cmd_event[1].eventKind = kEventWindowUpdate; + cmd_event[2].eventClass = kEventClassWindow; + cmd_event[2].eventKind = kEventWindowClose; + err = InstallWindowEventHandler(g_main_window, handlerUPP, 3, + &cmd_event[0], (void *)g_main_window, NULL); + require_noerr(err, CantCreateWindow); + + // Get screen depth + g_gdhandle = GetGDevice(); + s_video.g_screen_mdepth = (**((**g_gdhandle).gdPMap)).pixelSize; + + s_video.g_screen_depth = s_video.g_screen_mdepth; + + if(s_video.g_screen_depth > 16) { + /* 32-bit display */ + s_video.g_red_mask = 0xff; + s_video.g_green_mask = 0xff; + s_video.g_blue_mask = 0xff; + + /* + if (macUsingCoreGraphics) + { + g_red_left_shift = 0; + g_green_left_shift = 8; + g_blue_left_shift = 16; + } + else + */ + { + s_video.g_red_left_shift = 16; + s_video.g_green_left_shift = 8; + s_video.g_blue_left_shift = 0; + + } + + s_video.g_red_right_shift = 0; + s_video.g_green_right_shift = 0; + s_video.g_blue_right_shift = 0; + } else if(s_video.g_screen_depth > 8) { + /* 16-bit display */ + s_video.g_red_mask = 0x1f; + s_video.g_green_mask = 0x1f; + s_video.g_blue_mask = 0x1f; + s_video.g_red_left_shift = 10; + s_video.g_green_left_shift = 5; + s_video.g_blue_left_shift = 0; + s_video.g_red_right_shift = 3; + s_video.g_green_right_shift = 3; + s_video.g_blue_right_shift = 3; + } + + // show_alert("About to show window", (int)g_main_window); + update_main_window_size(); + + update_window(); + + + // The window was created hidden so show it. + ShowWindow( g_main_window ); + BringToFront( g_main_window ); + + update_window(); + + // Make us pop to the front a different way + err = GetCurrentProcess(&my_psn); + if(err == noErr) { + (void)SetFrontProcess(&my_psn); + } + + // Call the event loop + temp_run_application_event_loop(); + return 0; + +CantCreateWindow: +CantSetMenuBar: +CantGetNibRef: + show_simple_alert("ending", "", "error code", err); + return err; +} + +void +x_redraw_status_lines() +{ + // OG Disable status line +#ifndef ACTIVEGS + Rect rect; + Pattern white_pattern; + char tmp_buf[256]; + char *buf; + int len; + int line; + int height; + int margin; + + SetPortWindowPort(g_main_window); + PenNormal(); + height = 16; + margin = 0; + TextFont(g_status_font_family); + TextFace(normal); + TextSize(12); + + SetRect(&rect, 0, X_A2_WINDOW_HEIGHT + margin, X_A2_WINDOW_WIDTH, + X_A2_WINDOW_HEIGHT + margin + MAX_STATUS_LINES*height); + GetQDGlobalsWhite(&white_pattern); + FillRect(&rect, &white_pattern); + + for(line = 0; line < MAX_STATUS_LINES; line++) { + buf = g_status_ptrs[line]; + if(buf == 0) { + /* skip it */ + continue; + } + MoveTo(10, X_A2_WINDOW_HEIGHT + height*line + margin + height); + len = MIN(250, strlen(buf)); + strncpy(&tmp_buf[1], buf, len); + tmp_buf[0] = len; + DrawString((const unsigned char*)&tmp_buf[0]); + } +#endif +} + +void +x_full_screen(int do_full) +{ + +#if 0 + WindowRef new_window; + short width, height; + OSErr ret; + + width = 640; + height = 480; + if(do_full && (g_mac_fullscreen_state == 0)) { + g_main_window_saved = g_main_window; + + GetWindowBounds(g_main_window, kWindowContentRgn, + &g_main_window_saved_rect); + ret = BeginFullScreen(&g_mac_fullscreen_state, 0, + &width, &height, &new_window, 0, 0); + printf("Ret beginfullscreen: %d\n", (int)ret); + printf("New width: %d, new height: %d\n", width, height); + if(ret == noErr) { + g_main_window = new_window; + } else { + g_mac_fullscreen_state = 0; + } + } else if(!do_full && (g_mac_fullscreen_state != 0)) { + ret = EndFullScreen(g_mac_fullscreen_state, 0); + printf("ret endfullscreen: %d\n", (int)ret); + g_main_window = g_main_window_saved; + g_mac_fullscreen_state = 0; + //InitCursor(); + SetWindowBounds(g_main_window, kWindowContentRgn, + &g_main_window_saved_rect); + } + + update_main_window_size(); + + ShowWindow(g_main_window); + BringToFront(g_main_window); + update_window(); +#endif +} + + +void +x_push_done() +{ + + CGrafPtr window_port; + + SetPortWindowPort(g_main_window); + window_port = GetWindowPort(g_main_window); + + QDFlushPortBuffer(window_port, 0); + +} + +void +mac_warp_mouse() +{ +#ifndef ACTIVEGS + Rect port_rect; + Point win_origin_pt; + CGPoint cgpoint; + CGDisplayErr cg_err; + + GetPortBounds(GetWindowPort(g_main_window), &port_rect); + SetPt(&win_origin_pt, port_rect.left, port_rect.top); + LocalToGlobal(&win_origin_pt); + + cgpoint = CGPointMake( (float)(win_origin_pt.h + X_A2_WINDOW_WIDTH/2), + (float)(win_origin_pt.v + X_A2_WINDOW_HEIGHT/2)); + cg_err = CGDisplayMoveCursorToPoint(kCGDirectMainDisplay, cgpoint); +#endif +} + +int x_refresh_video() +{ + void x_refresh_buffer(); + x_refresh_buffer(); + return 1; +} + +#ifdef ACTIVEGS +void x_refresh_panel(enum refreshpanelenum _enum) +{ +} +#endif diff --git a/kegs/OSX/macsnd_driver.cpp b/kegs/OSX/macsnd_driver.cpp new file mode 100644 index 0000000..c8c51e7 --- /dev/null +++ b/kegs/OSX/macsnd_driver.cpp @@ -0,0 +1,194 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#ifndef DRIVER_OSX +#error +#endif + +/************************************************************************/ +/* KEGS: Apple //gs Emulator */ +/* Copyright 2002 by Kent Dickey */ +/* */ +/* This code is covered by the GNU GPL */ +/* */ +/* The KEGS web page is kegs.sourceforge.net */ +/* You may contact the author at: kadickey@alumni.princeton.edu */ +/************************************************************************/ + +const char rcsid_macsnd_driver_c[] = "@(#)$KmKId: macsnd_driver.c,v 1.4 2003-10-17 15:57:40-04 kentd Exp $"; + +#include "defc.h" + +#include + + +#include "sound.h" +#include + +#define MACSND_REBUF_SIZE (64*1024) +#define MACSND_QUANTA 512 +/* MACSND_QUANTA must be >= 128 and a power of 2 */ + +word32 g_macsnd_rebuf[MACSND_REBUF_SIZE]; +volatile word32 *g_macsnd_rebuf_ptr; +volatile word32 *g_macsnd_rebuf_cur; +volatile int g_macsnd_playing = 0; + +extern int Verbose; + +//extern int g_audio_rate; +extern word32 *g_sound_shm_addr; +extern int g_sound_size; + + + +SndChannelPtr g_snd_channel_ptr; +ExtSoundHeader g_snd_hdr; +SndCommand g_snd_cmd; + +void +mac_snd_callback(SndChannelPtr snd_chan_ptr, SndCommand *in_sndcmd) +{ + OSStatus err; + int samps; + + // This is an interrupt routine--no printf, etc! + + samps = g_macsnd_rebuf_ptr - g_macsnd_rebuf_cur; + if(samps < 0) { + samps += MACSND_REBUF_SIZE; + } + + samps = samps & -(MACSND_QUANTA); // quantize to 1024 samples + if(g_macsnd_rebuf_cur + samps > &(g_macsnd_rebuf[MACSND_REBUF_SIZE])) { + samps = &(g_macsnd_rebuf[MACSND_REBUF_SIZE]) - + g_macsnd_rebuf_cur; + } + if(samps > 0) { + g_macsnd_playing = 1; + g_snd_hdr.numFrames = samps; + g_snd_hdr.loopEnd = samps; + g_snd_hdr.samplePtr = (char *)g_macsnd_rebuf_cur; // OG Cast from byte* to ,char* + + g_snd_cmd.cmd = bufferCmd; + g_snd_cmd.param1 = 0; + g_snd_cmd.param2 = (long) &g_snd_hdr; + + g_macsnd_rebuf_cur += samps; + if(g_macsnd_rebuf_cur >= &(g_macsnd_rebuf[MACSND_REBUF_SIZE])) { + g_macsnd_rebuf_cur -= MACSND_REBUF_SIZE; + } + + err = SndDoImmediate(g_snd_channel_ptr, &g_snd_cmd); + + // And set-up callback + g_snd_cmd.cmd = callBackCmd; + g_snd_cmd.param1 = 0; + g_snd_cmd.param2 = 0; + err = SndDoCommand(g_snd_channel_ptr, &g_snd_cmd, TRUE); + } else { + g_macsnd_playing = 0; + } +} + +int x_snd_send_audio(byte *ptr, int in_size) +{ + SndCommand snd_cmd = {0}; + word32 *wptr, *macptr; + word32 *eptr; + int samps; + int i; + + samps = in_size / 4; + wptr = (word32 *)ptr; + macptr = (word32 *)g_macsnd_rebuf_ptr; + eptr = &g_macsnd_rebuf[MACSND_REBUF_SIZE]; + for(i = 0; i < samps; i++) { + *macptr++ = *wptr++; + if(macptr >= eptr) { + macptr = &g_macsnd_rebuf[0]; + } + } + + g_macsnd_rebuf_ptr = macptr; + + if(!g_macsnd_playing) { + mac_snd_callback(g_snd_channel_ptr, &snd_cmd); + } + + return in_size; +} + +void x_snd_child_init() +{ + OSStatus err; + + mac_printf("In mac child\n"); + fflush(stdout); + mac_printf("pid: %d\n", getpid()); + fflush(stdout); + + //return; + + //g_snd_channel_ptr = 0; + err = SndNewChannel(&g_snd_channel_ptr, sampledSynth, initStereo, + NewSndCallBackUPP(mac_snd_callback)); + mac_printf("SndNewChannel ret: %d\n", (int)err); + fflush(stdout); + + memset(&g_snd_hdr, 0, sizeof(g_snd_hdr)); + g_snd_hdr.sampleSize = 16; + g_snd_hdr.numChannels = 2; + g_sound.g_audio_rate = 44100; + g_snd_hdr.sampleRate = g_sound.g_audio_rate << 16; + g_snd_hdr.numFrames = 0; // will be set in mac_send_audio + g_snd_hdr.encode = extSH; + g_snd_hdr.baseFrequency = 0; + g_snd_hdr.samplePtr = 0; + + set_audio_rate(g_sound.g_audio_rate); + + mac_printf("End of child_sound_init_mac\n"); + fflush(stdout); +} + +void x_snd_init(word32 *shmaddr) +{ + g_macsnd_rebuf_cur = &g_macsnd_rebuf[0]; + g_macsnd_rebuf_ptr = &g_macsnd_rebuf[0]; + mac_printf("macsnd_init called\n"); + //child_sound_loop(-1, -1, shmaddr); +} + +void x_snd_shutdown() +{ +} + + + +word32* x_sound_allocate(int size) +{ + word32 *shmaddr; + shmaddr = (word32*)malloc(size); + memset(shmaddr, 0, size); + return shmaddr; +} + + +void x_sound_free(word32* _mem) +{ + if (_mem) + free(_mem); + +} + +void x_async_sound_init() +{ +} + +void x_async_snd_shutdown() +{ +} diff --git a/kegs/OSX/scc_macdriver.cpp b/kegs/OSX/scc_macdriver.cpp new file mode 100644 index 0000000..39f6993 --- /dev/null +++ b/kegs/OSX/scc_macdriver.cpp @@ -0,0 +1,205 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "../src/defc.h" +#include "../src/scc.h" + +#ifndef _WIN32 +# include +#endif + +//extern Scc g_scc.scc_stat[2]; +//extern word32 g_c025_val; + +#if defined(DRIVER_IOS) || defined(DRIVER_OSX) +int +scc_serial_mac_init(int port) +{ + char str_buf[1024]; + Scc *scc_ptr; + int state; + int fd; + + scc_ptr = &(g_scc.scc_stat[port]); + + scc_ptr->state = 0; /* mark as uninitialized */ + + /*sprintf(&str_buf[0], "/dev/tty.USA19QW11P1.1"); */ + sprintf(&str_buf[0], "/dev/tty.USA19H181P1.1"); + /* HACK: fix this... */ + + fd = open(&str_buf[0], O_RDWR | O_NONBLOCK); + + scc_ptr->host_handle = (void *)fd; + scc_ptr->host_handle2 = 0; + + printf("scc_serial_mac_init %d called, fd: %d\n", port, fd); + + if(fd < 0) { + scc_ptr->host_handle = (void *)-1; + return -1; + } + + scc_serial_mac_change_params(port); + + state = 2; /* raw serial */ + scc_ptr->state = state; + + return state; +} + +void +scc_serial_mac_change_params(int port) +{ + struct termios termios_buf; + Scc *scc_ptr; + int fd; + int csz; + int ret; + + scc_ptr = &(g_scc.scc_stat[port]); + + fd = (intptr_t)scc_ptr->host_handle; + printf("scc_serial_mac_change_parms port: %d, fd: %d\n", port, fd); + if(fd <= 0) { + return; + } + + ret = tcgetattr(fd, &termios_buf); + if(ret != 0) { + printf("tcgetattr port%d ret: %d\n", port, ret); + } + +#if 1 + printf("baudrate: %d, iflag:%x, oflag:%x, cflag:%x, lflag:%x\n", + (int)termios_buf.c_ispeed, (int)termios_buf.c_iflag, + (int)termios_buf.c_oflag, (int)termios_buf.c_cflag, + (int)termios_buf.c_lflag); +#endif + + memset(&termios_buf, 0, sizeof(struct termios)); + cfmakeraw(&termios_buf); + cfsetspeed(&termios_buf, scc_ptr->baud_rate); + + csz = scc_ptr->char_size; + termios_buf.c_cflag = CREAD | CLOCAL; + termios_buf.c_cflag |= (csz == 5) ? CS5 : + (csz == 6) ? CS6 : + (csz == 7) ? CS7 : + CS8; + switch((scc_ptr->reg[4] >> 2) & 0x3) { + case 2: // 1.5 stop bits + termios_buf.c_cflag |= CSTOPB; /* no 1.5 stop bit setting.*/ + break; + case 3: // 2 stop bits + termios_buf.c_cflag |= CSTOPB; + break; + } + + switch((scc_ptr->reg[4]) & 0x3) { + case 1: // Odd parity + termios_buf.c_cflag |= (PARENB | PARODD); + break; + case 3: // Even parity + termios_buf.c_cflag |= PARENB; + break; + } + + /* always enabled DTR and RTS control */ + termios_buf.c_cflag |= CDTR_IFLOW | CRTS_IFLOW; + + printf("fd: %d, baudrate: %d, iflag:%x, oflag:%x, cflag:%x, lflag:%x\n", + fd, (int)termios_buf.c_ispeed, (int)termios_buf.c_iflag, + (int)termios_buf.c_oflag, (int)termios_buf.c_cflag, + (int)termios_buf.c_lflag); + ret = tcsetattr(fd, TCSANOW, &termios_buf); + if(ret != 0) { + printf("tcsetattr ret: %d\n", ret); + } +} + +void +scc_serial_mac_fill_readbuf(int port, int space_left, double dcycs) +{ + byte tmp_buf[256]; + Scc *scc_ptr; + int fd; + int i; + size_t ret; + + scc_ptr = &(g_scc.scc_stat[port]); + + fd = (intptr_t)scc_ptr->host_handle; + if(fd <= 0) { + return; + } + + /* Try reading some bytes */ + space_left = MIN(space_left, 256); + ret = read(fd, tmp_buf, space_left); + + if(ret > 0) { + for(i = 0; i < ret; i++) { + scc_add_to_readbuf(port, tmp_buf[i], dcycs); + } + } + +} + +void +scc_serial_mac_empty_writebuf(int port) +{ + Scc *scc_ptr; + int fd; + int rdptr; + int wrptr; + int done; + size_t ret; + int len; + + scc_ptr = &(g_scc.scc_stat[port]); + + fd = (intptr_t)scc_ptr->host_handle; + if(fd <= 0) { + return; + } + + /* Try writing some bytes */ + done = 0; + while(!done) { + rdptr = scc_ptr->out_rdptr; + wrptr = scc_ptr->out_wrptr; + if(rdptr == wrptr) { + //printf("...rdptr == wrptr\n"); + done = 1; + break; + } + len = wrptr - rdptr; + if(len < 0) { + len = SCC_OUTBUF_SIZE - rdptr; + } + if(len > 32) { + len = 32; + } + if(len <= 0) { + done = 1; + break; + } + ret = write(fd, &(scc_ptr->out_buf[rdptr]), len); + + if(ret <= 0) { + done = 1; + break; + } else { + rdptr = rdptr + ret; + if(rdptr >= SCC_OUTBUF_SIZE) { + rdptr = rdptr - SCC_OUTBUF_SIZE; + } + scc_ptr->out_rdptr = rdptr; + } + } +} +#endif /* MAC */ diff --git a/kegs/Src/16inst_c.h b/kegs/Src/16inst_c.h new file mode 100644 index 0000000..8ea653f --- /dev/null +++ b/kegs/Src/16inst_c.h @@ -0,0 +1,3001 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#ifdef ASM +# ifdef INCLUDE_RCSID_S + .stringz "@(#)$KmKId: instable.h,v 1.104 2004-10-05 20:12:08-04 kentd Exp $" +# endif +#endif + +case 0x00: /* brk */ +#ifdef ASM + ldb 1(scratch1),ret0 + ldil l%g_sim65816.g_testing,arg3 + ldil l%g_sim65816.g_num_brk,arg1 + ldw r%g_sim65816.g_testing(arg3),arg3 + INC_KPC_2; + ldw r%g_sim65816.g_num_brk(arg1),arg2 + comib,<> 0,arg3,brk_testing_16 + extru kpc,31,16,arg0 + addi 1,arg2,arg2 + bb,>= psr,23,brk_native_16 + stw arg2,r%g_sim65816.g_num_brk(arg1) + + bl push_16,link + nop + + bl push_8,link + extru psr,31,8,arg0 ;B bit already on in PSR + + ldil l%0xfffe,arg0 + bl get_mem_long_16,link + ldo r%0xfffe(arg0),arg0 + + zdep ret0,31,16,kpc ;set kbank to 0 + +#if 0 + bl set_halt_act,link + ldi 3,arg0 +#endif + + + ldi 0,dbank ;clear dbank in emul mode + b dispatch + depi 1,29,2,psr ;ints masked, decimal off + + +brk_native_16 + stw arg0,STACK_SAVE_COP_ARG0(sp) + bl push_8,link + extru kpc,15,8,arg0 + + bl push_16,link + ldw STACK_SAVE_COP_ARG0(sp),arg0 + + bl push_8,link + extru psr,31,8,arg0 + + ldil l%0xffe6,arg0 + bl get_mem_long_16,link + ldo r%0xffe6(arg0),arg0 + + zdep ret0,31,16,kpc ;zero kbank in kpc + +#if 0 +#endif + bl set_halt_act,link + ldi 3,arg0 + + b dispatch + depi 1,29,2,psr ;ints masked, decimal off + +brk_testing_16 + DEC_KPC2; + CYCLES_PLUS_2 + b dispatch_done + depi RET_BREAK,3,4,ret0 + +#else + GET_1BYTE_ARG; + if(g_sim65816.g_testing) { + CYCLES_PLUS_2; + FINISH(RET_BREAK, arg); + } + g_sim65816.g_num_brk++; + INC_KPC_2; + if(psr & 0x100) { + PUSH16(kpc & 0xffff); + PUSH8(psr & 0xff); + GET_MEMORY16(0xfffe, kpc, 0); + dbank = 0; + } else { + PUSH8(kpc >> 16); + PUSH16(kpc); + PUSH8(psr & 0xff); + GET_MEMORY16(0xffe6, kpc, 0); + halt_printf("Halting for native break!\n"); + } + kpc = kpc & 0xffff; + psr |= 0x4; + psr &= ~(0x8); +#endif + + break; +case 0x01: /* ORA (Dloc,X) */ +/* called with arg = val to ORA in */ + GET_DLOC_X_IND_RD(); + ORA_INST(); + + break; +case 0x02: /* COP */ +#ifdef ASM + ldil l%g_sim65816.g_num_cop,arg1 + INC_KPC_2; + ldw r%g_sim65816.g_num_cop(arg1),arg2 + extru kpc,31,16,arg0 + addi 1,arg2,arg2 + bb,>= psr,23,cop_native_16 + stw arg2,r%g_sim65816.g_num_cop(arg1) + + bl push_16,link + nop + + bl push_8,link + extru psr,31,8,arg0 + + ldil l%0xfff4,arg0 + bl get_mem_long_16,link + ldo r%0xfff4(arg0),arg0 + + ldi 0,dbank ;clear dbank in emul mode + zdep ret0,31,16,kpc ;clear kbank + + bl set_halt_act,link + ldi 3,arg0 + + b dispatch + depi 1,29,2,psr ;ints masked, decimal off + +cop_native_16 + stw arg0,STACK_SAVE_COP_ARG0(sp) + bl push_8,link + extru kpc,15,8,arg0 + + bl push_16,link + ldw STACK_SAVE_COP_ARG0(sp),arg0 + + bl push_8,link + extru psr,31,8,arg0 + + ldil l%0xffe4,arg0 + bl get_mem_long_16,link + ldo r%0xffe4(arg0),arg0 + + zdep ret0,31,16,kpc ;clear kbank + b dispatch + depi 1,29,2,psr ;ints masked, decimal off + + +#else + + GET_1BYTE_ARG + if (arg == 0x93) + { + INC_KPC_2; + int process_marinetti_command(int _command,word32* param, word32& _regx, word32& _regy); + + + int p = xreg*0x10000 + yreg; + word32* ptr = (word32*)&g_memory_ptr[p]; + + int ret = process_marinetti_command(acc,ptr,xreg,yreg); + if (ret) + { + psr |= 1; // SEC + acc = ret; + } + else + { + psr &= ~(0x01); + acc = 0; + } + } + else + if (arg == 0x84) + { + int p = xreg*0x10000 + yreg; + const char* ptr = (const char*)&g_memory_ptr[p]; + printf("%s\n",ptr); + INC_KPC_2; + } + else + { + + g_sim65816.g_num_cop++; + INC_KPC_2; + if(psr & 0x100) + { + halt_printf("Halting for emul COP at %04x\n", kpc); + PUSH16(kpc & 0xffff); + PUSH8(psr & 0xff); + GET_MEMORY16(0xfff4, kpc, 0); + dbank = 0; + } else { + + PUSH8(kpc >> 16); + PUSH16(kpc & 0xffff); + PUSH8(psr & 0xff); + GET_MEMORY16(0xffe4, kpc, 0); + + } + kpc = kpc & 0xffff; + + psr |= 4; + psr &= ~(0x8); +} +#endif + + break; +case 0x03: /* ORA Disp8,S */ + GET_DISP8_S_RD(); + ORA_INST(); + + break; +case 0x04: /* TSB Dloc */ + GET_DLOC_RD(); + TSB_INST(1); + + break; +case 0x05: /* ORA Dloc */ + GET_DLOC_RD(); + ORA_INST(); + + break; +case 0x06: /* ASL Dloc */ + GET_DLOC_RD(); + ASL_INST(1); + + break; +case 0x07: /* ORA [Dloc] */ + GET_DLOC_L_IND_RD(); + ORA_INST(); + + break; +case 0x08: /* PHP */ +#ifdef ASM + dep neg,24,1,psr + ldil l%dispatch,link + INC_KPC_1 + depi 0,30,1,psr + comiclr,<> 0,zero,0 + depi 1,30,1,psr + ldo r%dispatch(link),link + b push_8 + extru psr,31,8,arg0 +#else + INC_KPC_1; + psr = (psr & ~0x82) | ((neg & 1) << 7) | ((!zero) << 1); + PUSH8(psr); +#endif + + break; +case 0x09: /* ORA #imm */ + GET_IMM_MEM(); + ORA_INST(); + + break; +case 0x0a: /* ASL a */ +#ifdef ASM +# ifdef ACC8 + ldi 0xff,scratch1 + sh1add acc,0,scratch3 + INC_KPC_1 + extru scratch3,24,1,neg + and scratch3,scratch1,zero + extru scratch3,23,1,scratch2 + dep zero,31,8,acc + b dispatch + dep scratch2,31,1,psr /* set carry */ +# else + zdepi -1,31,16,scratch1 + sh1add acc,0,scratch3 + INC_KPC_1 + extru scratch3,16,1,neg + and scratch3,scratch1,zero + extru scratch3,15,1,scratch2 + dep scratch2,31,1,psr /* set carry */ + b dispatch + dep zero,31,16,acc +# endif +#else + INC_KPC_1; + tmp1 = acc + acc; +# ifdef ACC8 + SET_CARRY8(tmp1); + acc = (acc & 0xff00) + (tmp1 & 0xff); + SET_NEG_ZERO8(acc & 0xff); +# else + SET_CARRY16(tmp1); + acc = tmp1 & 0xffff; + SET_NEG_ZERO16(acc); +# endif +#endif + + break; +case 0x0b: /* PHD */ +#ifdef ASM + ldil l%dispatch,link + extru direct,31,16,arg0 + INC_KPC_1 + b push_16_unsafe + ldo r%dispatch(link),link +#else + INC_KPC_1; + PUSH16_UNSAFE(direct); +#endif + + break; +case 0x0c: /* TSB abs */ + GET_ABS_RD(); + TSB_INST(0); + + break; +case 0x0d: /* ORA abs */ + GET_ABS_RD(); + ORA_INST(); + + break; +case 0x0e: /* ASL abs */ + GET_ABS_RD(); + ASL_INST(0); + + break; +case 0x0f: /* ORA long */ + GET_LONG_RD(); + ORA_INST(); + + + break; +case 0x10: /* BPL disp8 */ +#ifdef ASM + COND_BR1 + comib,<> 0,neg,inst10_2_16 + COND_BR2 + +inst10_2_16 + COND_BR_UNTAKEN +#else + BRANCH_DISP8(neg == 0); +#endif + + break; +case 0x11: /* ORA (Dloc),y */ + GET_DLOC_IND_Y_RD(); + ORA_INST(); + + break; +case 0x12: /* ORA (Dloc) */ + GET_DLOC_IND_RD(); + ORA_INST(); + + break; +case 0x13: /* ORA (Disp8,s),y */ + GET_DISP8_S_IND_Y_RD(); + ORA_INST(); + + break; +case 0x14: /* TRB Dloc */ + GET_DLOC_RD(); + TRB_INST(1); + + break; +case 0x15: /* ORA Dloc,x */ + GET_DLOC_X_RD(); + ORA_INST(); + + break; +case 0x16: /* ASL Dloc,X */ + GET_DLOC_X_RD(); + ASL_INST(1); + + break; +case 0x17: /* ORA [Dloc],Y */ + GET_DLOC_L_IND_Y_RD(); + ORA_INST(); + + break; +case 0x18: /* CLC */ +#ifdef ASM + INC_KPC_1 + b dispatch + depi 0,31,1,psr /* clear carry */ +#else + psr = psr & (~1); + INC_KPC_1; +#endif + + break; +case 0x19: /* ORA abs,y */ + GET_ABS_Y_RD(); + ORA_INST(); + + + break; +case 0x1a: /* INC a */ +#ifdef ASM +# ifdef ACC8 + ldi 0xff,scratch2 + addi 1,acc,scratch1 + extru scratch1,24,1,neg + INC_KPC_1 + extru scratch1,31,8,zero + b dispatch + dep zero,31,8,acc +# else + zdepi -1,31,16,scratch2 + addi 1,acc,scratch1 + extru scratch1,16,1,neg + INC_KPC_1 + extru scratch1,31,16,zero + b dispatch + dep zero,31,16,acc +# endif +#else + INC_KPC_1; +# ifdef ACC8 + acc = (acc & 0xff00) | ((acc + 1) & 0xff); + SET_NEG_ZERO8(acc & 0xff); +# else + acc = (acc + 1) & 0xffff; + SET_NEG_ZERO16(acc); +# endif +#endif + + break; +case 0x1b: /* TCS */ +#ifdef ASM + copy acc,stack + extru,= psr,23,1,0 /* in emulation mode, stack page 1 */ + depi 1,23,24,stack + INC_KPC_1 + b dispatch + nop +#else + stack = acc; + INC_KPC_1; + if(psr & 0x100) { + stack = (stack & 0xff) + 0x100; + } +#endif + + break; +case 0x1c: /* TRB Abs */ + GET_ABS_RD(); + TRB_INST(0); + + break; +case 0x1d: /* ORA Abs,X */ + GET_ABS_X_RD(); + ORA_INST(); + + break; +case 0x1e: /* ASL Abs,X */ + GET_ABS_X_RD_WR(); + ASL_INST(0); + + break; +case 0x1f: /* ORA Long,X */ + GET_LONG_X_RD(); + ORA_INST(); + + + break; +case 0x20: /* JSR abs */ +#ifdef ASM + addi 2,kpc,arg0 + ldb 1(scratch1),scratch2 + CYCLES_PLUS_2 + ldb 2(scratch1),scratch1 + ldil l%dispatch,link + extru arg0,31,16,arg0 + ldo r%dispatch(link),link + dep scratch2,31,8,kpc + b push_16 + dep scratch1,23,8,kpc +#else + GET_2BYTE_ARG; + INC_KPC_2; + PUSH16(kpc); + kpc = (kpc & 0xff0000) + arg; + CYCLES_PLUS_2; +#endif + + break; +case 0x21: /* AND (Dloc,X) */ +/* called with arg = val to AND in */ + GET_DLOC_X_IND_RD(); + AND_INST(); + + break; +case 0x22: /* JSL Long */ +#ifdef ASM + INC_KPC_3 + ldb 3(scratch1),scratch2 + copy kpc,arg0 + ldb 1(scratch1),kpc + ldb 2(scratch1),scratch1 + CYCLES_PLUS_3 + dep scratch2,15,8,kpc + stw scratch2,STACK_SAVE_INSTR_TMP1(sp) + bl push_24_unsafe,link + dep scratch1,23,8,kpc + + b dispatch + nop +#else + GET_3BYTE_ARG; + tmp1 = arg; + CYCLES_PLUS_3; + INC_KPC_3; + PUSH24_UNSAFE(kpc); + kpc = tmp1 & 0xffffff; +#endif + + break; +case 0x23: /* AND Disp8,S */ +/* called with arg = val to AND in */ + GET_DISP8_S_RD(); + AND_INST(); + + break; +case 0x24: /* BIT Dloc */ + GET_DLOC_RD(); + BIT_INST(); + + break; +case 0x25: /* AND Dloc */ +/* called with arg = val to AND in */ + GET_DLOC_RD(); + AND_INST(); + + break; +case 0x26: /* ROL Dloc */ + GET_DLOC_RD(); +/* save1 is now apple addr */ +/* ret0 is data */ + ROL_INST(1); + + break; +case 0x27: /* AND [Dloc] */ + GET_DLOC_L_IND_RD(); + AND_INST(); + + break; +case 0x28: /* PLP */ +#ifdef ASM + bl pull_8,link + ldi 0,zero + + extru psr,27,2,scratch2 /* save old x & m */ + dep ret0,31,8,psr + CYCLES_PLUS_1 + INC_KPC_1 + extru,<> ret0,30,1,0 + ldi 1,zero + copy scratch2,arg0 + b update_system_state + extru ret0,24,1,neg +#else + PULL8(tmp1); + tmp2 = psr; + CYCLES_PLUS_1; + INC_KPC_1; + psr = (psr & ~0xff) | (tmp1 & 0xff); + zero = !(psr & 2); + neg = (psr >> 7) & 1; + UPDATE_PSR(psr, tmp2); +#endif + + + break; +case 0x29: /* AND #imm */ + GET_IMM_MEM(); + AND_INST(); + + break; +case 0x2a: /* ROL a */ +#ifdef ASM +# ifdef ACC8 + extru psr,31,1,scratch2 + ldi 0xff,scratch1 + sh1add acc,scratch2,scratch3 + INC_KPC_1 + extru scratch3,24,1,neg + and scratch3,scratch1,zero + extru scratch3,23,1,scratch2 + dep zero,31,8,acc + b dispatch + dep scratch2,31,1,psr /* set carry */ +# else + extru psr,31,1,scratch2 + INC_KPC_1 + sh1add acc,scratch2,scratch3 + zdepi -1,31,16,scratch1 + extru scratch3,16,1,neg + and scratch3,scratch1,zero + extru scratch3,15,1,scratch2 + dep scratch2,31,1,psr /* set carry */ + b dispatch + dep zero,31,16,acc +# endif +#else + INC_KPC_1; +# ifdef ACC8 + tmp1 = ((acc & 0xff) << 1) + (psr & 1); + SET_CARRY8(tmp1); + acc = (acc & 0xff00) + (tmp1 & 0xff); + SET_NEG_ZERO8(tmp1 & 0xff); +# else + tmp1 = (acc << 1) + (psr & 1); + SET_CARRY16(tmp1); + acc = (tmp1 & 0xffff); + SET_NEG_ZERO16(acc); +# endif +#endif + + break; +case 0x2b: /* PLD */ +#ifdef ASM + INC_KPC_1 + bl pull_16_unsafe,link + CYCLES_PLUS_1 + extru ret0,31,16,direct + extru ret0,16,1,neg + b dispatch + copy direct,zero +#else + INC_KPC_1; + PULL16_UNSAFE(direct); + CYCLES_PLUS_1; + SET_NEG_ZERO16(direct); +#endif + + break; +case 0x2c: /* BIT abs */ + GET_ABS_RD(); + BIT_INST(); + + break; +case 0x2d: /* AND abs */ + GET_ABS_RD(); + AND_INST(); + + break; +case 0x2e: /* ROL abs */ + GET_ABS_RD(); + ROL_INST(0); + + break; +case 0x2f: /* AND long */ + GET_LONG_RD(); + AND_INST(); + + + break; +case 0x30: /* BMI disp8 */ +#ifdef ASM + COND_BR1 + comib,= 0,neg,inst30_2_16 + COND_BR2 + +inst30_2_16 + COND_BR_UNTAKEN +#else + BRANCH_DISP8(neg); +#endif + + break; +case 0x31: /* AND (Dloc),y */ + GET_DLOC_IND_Y_RD(); + AND_INST(); + + break; +case 0x32: /* AND (Dloc) */ + GET_DLOC_IND_RD(); + AND_INST(); + + break; +case 0x33: /* AND (Disp8,s),y */ + GET_DISP8_S_IND_Y_RD(); + AND_INST(); + + break; +case 0x34: /* BIT Dloc,x */ + GET_DLOC_X_RD(); + BIT_INST(); + + break; +case 0x35: /* AND Dloc,x */ + GET_DLOC_X_RD(); + AND_INST(); + + break; +case 0x36: /* ROL Dloc,X */ + GET_DLOC_X_RD(); + ROL_INST(1); + + break; +case 0x37: /* AND [Dloc],Y */ + GET_DLOC_L_IND_Y_RD(); + AND_INST(); + + break; +case 0x38: /* SEC */ +#ifdef ASM + INC_KPC_1 + b dispatch + depi 1,31,1,psr /* set carry */ +#else + psr = psr | 1; + INC_KPC_1; +#endif + + break; +case 0x39: /* AND abs,y */ + GET_ABS_Y_RD(); + AND_INST(); + + break; +case 0x3a: /* DEC a */ +#ifdef ASM +# ifdef ACC8 + addi -1,acc,scratch1 + extru scratch1,24,1,neg + INC_KPC_1 + extru scratch1,31,8,zero + b dispatch + dep zero,31,8,acc +# else + addi -1,acc,scratch1 + extru scratch1,16,1,neg + INC_KPC_1 + extru scratch1,31,16,zero + b dispatch + dep zero,31,16,acc +# endif +#else + INC_KPC_1; +# ifdef ACC8 + acc = (acc & 0xff00) | ((acc - 1) & 0xff); + SET_NEG_ZERO8(acc & 0xff); +# else + acc = (acc - 1) & 0xffff; + SET_NEG_ZERO16(acc); +# endif +#endif + + break; +case 0x3b: /* TSC */ +/* set N,Z according to 16 bit acc */ +#ifdef ASM + copy stack,acc + extru stack,16,1,neg + INC_KPC_1 + b dispatch + extru acc,31,16,zero +#else + INC_KPC_1; + acc = stack; + SET_NEG_ZERO16(acc); +#endif + + break; +case 0x3c: /* BIT Abs,x */ + GET_ABS_X_RD(); + BIT_INST(); + + break; +case 0x3d: /* AND Abs,X */ + GET_ABS_X_RD(); + AND_INST(); + + break; +case 0x3e: /* ROL Abs,X */ + GET_ABS_X_RD_WR(); + ROL_INST(0); + + break; +case 0x3f: /* AND Long,X */ + GET_LONG_X_RD(); + AND_INST(); + + + break; +case 0x40: /* RTI */ +#ifdef ASM + bb,>= psr,23,rti_native_16 + CYCLES_PLUS_1 +/* emulation */ + bl pull_24,link + ldi 0,zero + + extru psr,27,2,scratch2 + extru ret0,23,16,scratch3 + copy scratch2,arg0 + extru,<> ret0,30,1,0 + ldi 1,zero + dep ret0,31,8,psr + + extru ret0,24,1,neg + b update_system_state + dep scratch3,31,16,kpc + +rti_native_16 + bl pull_8,link + ldi 0,zero + + copy ret0,scratch1 + extru ret0,24,1,neg + dep ret0,31,8,scratch1 + bl pull_24,link + stw scratch1,STACK_SAVE_INSTR_TMP1(sp) + + extru psr,27,2,scratch2 + ldw STACK_SAVE_INSTR_TMP1(sp),psr + extru ret0,31,24,kpc + extru,<> psr,30,1,0 + ldi 1,zero + + b update_system_state_and_change_kbank + copy scratch2,arg0 +#else + CYCLES_PLUS_1 + if(psr & 0x100) { + PULL24(tmp1); + kpc = (kpc & 0xff0000) + ((tmp1 >> 8) & 0xffff); + tmp2 = psr; + psr = (psr & ~0xff) + (tmp1 & 0xff); + neg = (psr >> 7) & 1; + zero = !(psr & 2); + UPDATE_PSR(psr, tmp2); + } else { + PULL8(tmp1); + tmp2 = psr; + psr = (tmp1 & 0xff); + neg = (psr >> 7) & 1; + zero = !(psr & 2); + PULL24(kpc); + UPDATE_PSR(psr, tmp2); + } +#endif + + + break; +case 0x41: /* EOR (Dloc,X) */ +/* called with arg = val to EOR in */ + GET_DLOC_X_IND_RD(); + EOR_INST(); + + break; +case 0x42: /* WDM */ +#ifdef ASM + ldb 1(scratch1),ret0 + CYCLES_PLUS_5 + CYCLES_PLUS_2 + INC_KPC_2 + b dispatch_done + depi RET_WDM,3,4,ret0 +#else + GET_1BYTE_ARG; + INC_KPC_2; + CYCLES_PLUS_5; + CYCLES_PLUS_2; + FINISH(RET_WDM, arg & 0xff); +#endif + + break; +case 0x43: /* EOR Disp8,S */ +/* called with arg = val to EOR in */ + GET_DISP8_S_RD(); + EOR_INST(); + + break; +case 0x44: /* MVP */ +#ifdef ASM + ldb 2(scratch1),scratch2 /* src bank */ + bb,< psr,23,inst44_notnat_16 + ldb 1(scratch1),dbank /* dest bank */ + bb,< psr,27,inst44_notnat_16 + stw scratch2,STACK_SRC_BANK(sp) + +inst44_loop_16 + CYCLES_PLUS_1 + ldw STACK_SRC_BANK(sp),scratch2 + copy xreg,arg0 + + bl get_mem_long_8,link + dep scratch2,15,8,arg0 +/* got byte */ + copy ret0,arg1 + copy yreg,arg0 + bl set_mem_long_8,link + dep dbank,15,8,arg0 +/* wrote byte, dec acc */ + CYCLES_PLUS_2 + fldds 0(fcycles_stop_ptr),fcycles_stop + addi -1,xreg,xreg + zdepi -1,31,16,scratch2 + addi -1,yreg,yreg + addi -1,acc,acc + fcmp,<,dbl fcycles,fcycles_stop + and xreg,scratch2,xreg + extrs acc,31,16,scratch1 + and yreg,scratch2,yreg + + comib,= -1,scratch1,inst44_done_16 + and acc,scratch2,acc + + ftest + b inst44_out_of_time_16 + + CYCLES_PLUS_2 + b inst44_loop_16 + nop + +/* get here if done */ +inst44_done_16 + INC_KPC_3 + b dispatch + nop + +inst44_notnat_16 + copy dbank,ret0 + dep scratch2,23,8,ret0 + CYCLES_PLUS_3 + depi RET_MVP,3,4,ret0 + b dispatch_done + CYCLES_PLUS_2 + +inst44_out_of_time_16 +/* cycle have gone positive, just get out, do not update kpc */ + b,n dispatch +#else + GET_2BYTE_ARG; + /* arg & 0xff = dest bank, arg & 0xff00 = src bank */ + + if(psr & 0x110) { + // OG MVP should work even with no native mode - keep the warning though + printf("MVP but not native m or x!\n"); + /* + halt_printf("MVP but not native m or x!\n"); + break; + */ + } + CYCLES_MINUS_2 + dbank = arg & 0xff; + tmp1 = (arg >> 8) & 0xff; + while(1) { + CYCLES_PLUS_3; + GET_MEMORY8((tmp1 << 16) + xreg, arg); + SET_MEMORY8((dbank << 16) + yreg, arg); + CYCLES_PLUS_2; + xreg = (xreg - 1) & 0xffff; + yreg = (yreg - 1) & 0xffff; + acc = (acc - 1) & 0xffff; + if(acc == 0xffff) { + INC_KPC_3; + break; + } + if(fcycles >= g_sim65816.g_fcycles_stop) { + break; + } + } +#endif + + + break; +case 0x45: /* EOR Dloc */ +/* called with arg = val to EOR in */ + GET_DLOC_RD(); + EOR_INST(); + + break; +case 0x46: /* LSR Dloc */ + GET_DLOC_RD(); +/* save1 is now apple addr */ +/* ret0 is data */ + LSR_INST(1); + + break; +case 0x47: /* EOR [Dloc] */ + GET_DLOC_L_IND_RD(); + EOR_INST(); + + break; +case 0x48: /* PHA */ +#ifdef ASM +# ifdef ACC8 + INC_KPC_1 + ldil l%dispatch,link + extru acc,31,8,arg0 + b push_8 + ldo r%dispatch(link),link +# else + INC_KPC_1 + ldil l%dispatch,link + extru acc,31,16,arg0 + b push_16 + ldo r%dispatch(link),link +# endif +#else + INC_KPC_1; +# ifdef ACC8 + PUSH8(acc); +# else + PUSH16(acc); +# endif +#endif + + break; +case 0x49: /* EOR #imm */ + GET_IMM_MEM(); + EOR_INST(); + + break; +case 0x4a: /* LSR a */ +#ifdef ASM +# ifdef ACC8 + extru acc,31,1,scratch2 + INC_KPC_1 + extru acc,30,7,zero + ldi 0,neg + dep scratch2,31,1,psr /* set carry */ + b dispatch + dep zero,31,8,acc +# else + extru acc,31,1,scratch2 + INC_KPC_1 + extru acc,30,15,zero + ldi 0,neg + dep scratch2,31,1,psr /* set carry */ + b dispatch + dep zero,31,16,acc +# endif +#else + INC_KPC_1; +# ifdef ACC8 + tmp1 = ((acc & 0xff) >> 1); + SET_CARRY8(acc << 8); + acc = (acc & 0xff00) + (tmp1 & 0xff); + SET_NEG_ZERO8(tmp1 & 0xff); +# else + tmp1 = (acc >> 1); + SET_CARRY8((acc << 8)); + acc = (tmp1 & 0xffff); + SET_NEG_ZERO16(acc); +# endif +#endif + + break; +case 0x4b: /* PHK */ +#ifdef ASM + ldil l%dispatch,link + extru kpc,15,8,arg0 + INC_KPC_1 + b push_8 + ldo r%dispatch(link),link +#else + PUSH8(kpc >> 16); + INC_KPC_1; +#endif + + break; +case 0x4c: /* JMP abs */ +#ifdef ASM + ldb 1(scratch1),scratch2 + CYCLES_PLUS_1 + ldb 2(scratch1),scratch1 + dep scratch2,31,8,kpc + b dispatch + dep scratch1,23,8,kpc +#else + GET_2BYTE_ARG; + CYCLES_PLUS_1; + kpc = (kpc & 0xff0000) + arg; +#endif + + + break; +case 0x4d: /* EOR abs */ + GET_ABS_RD(); + EOR_INST(); + + break; +case 0x4e: /* LSR abs */ + GET_ABS_RD(); + LSR_INST(0); + + break; +case 0x4f: /* EOR long */ + GET_LONG_RD(); + EOR_INST(); + + + break; +case 0x50: /* BVC disp8 */ +#ifdef ASM + COND_BR1 + bb,< psr,25,inst50_2_16 + COND_BR2 + +inst50_2_16 + COND_BR_UNTAKEN + +#else + BRANCH_DISP8((psr & 0x40) == 0); +#endif + + break; +case 0x51: /* EOR (Dloc),y */ + GET_DLOC_IND_Y_RD(); + EOR_INST(); + + break; +case 0x52: /* EOR (Dloc) */ + GET_DLOC_IND_RD(); + EOR_INST(); + + break; +case 0x53: /* EOR (Disp8,s),y */ + GET_DISP8_S_IND_Y_RD(); + EOR_INST(); + + break; +case 0x54: /* MVN */ +#ifdef ASM + ldb 2(scratch1),scratch2 /* src bank */ + bb,< psr,23,inst54_notnat_16 + ldb 1(scratch1),dbank /* dest bank */ + bb,< psr,27,inst54_notnat_16 + stw scratch2,STACK_SRC_BANK(sp) + +/* even in 8bit acc mode, use 16-bit accumulator! */ + +inst54_loop_16 + CYCLES_PLUS_1 + ldw STACK_SRC_BANK(sp),scratch2 + copy xreg,arg0 + + bl get_mem_long_8,link + dep scratch2,15,8,arg0 +/* got byte */ + copy ret0,arg1 + copy yreg,arg0 + bl set_mem_long_8,link + dep dbank,15,8,arg0 +/* wrote byte, dec acc */ + CYCLES_PLUS_2 + fldds 0(fcycles_stop_ptr),fcycles_stop + addi 1,xreg,xreg + zdepi -1,31,16,scratch2 + addi 1,yreg,yreg + addi -1,acc,acc + fcmp,<,dbl fcycles,fcycles_stop + and xreg,scratch2,xreg + extrs acc,31,16,scratch1 + and yreg,scratch2,yreg + + comib,= -1,scratch1,inst54_done_16 + and acc,scratch2,acc + ftest + b,n inst54_out_of_time_16 + + CYCLES_PLUS_2 + b inst54_loop_16 + nop + +/* get here if done */ +inst54_done_16 + INC_KPC_3 + b dispatch + nop + +inst54_out_of_time_16 +/* cycle have gone positive, just get out, don't update kpc */ + b,n dispatch + +inst54_notnat_16 + copy dbank,ret0 + dep scratch2,23,8,ret0 + CYCLES_PLUS_3 + depi RET_MVN,3,4,ret0 + b dispatch_done + CYCLES_PLUS_3 +#else + GET_2BYTE_ARG; + /* arg & 0xff = dest bank, arg & 0xff00 = src bank */ + if(psr & 0x110) { + // OG MVP should work even with no native mode - keep the warning though + printf("MVP but not native m or x!\n"); + /* + halt_printf("MVN but not native m or x!\n"); + break; + */ + } + CYCLES_MINUS_2; + dbank = arg & 0xff; + tmp1 = (arg >> 8) & 0xff; + while(1) { + CYCLES_PLUS_3; + GET_MEMORY8((tmp1 << 16) + xreg, arg); + SET_MEMORY8((dbank << 16) + yreg, arg); + CYCLES_PLUS_2; + xreg = (xreg + 1) & 0xffff; + yreg = (yreg + 1) & 0xffff; + acc = (acc - 1) & 0xffff; + if(acc == 0xffff) { + INC_KPC_3; + break; + } + if(fcycles >= g_sim65816.g_fcycles_stop) { + break; + } + } +#endif + + break; +case 0x55: /* EOR Dloc,x */ + GET_DLOC_X_RD(); + EOR_INST(); + + break; +case 0x56: /* LSR Dloc,X */ + GET_DLOC_X_RD(); + LSR_INST(1); + + break; +case 0x57: /* EOR [Dloc],Y */ + GET_DLOC_L_IND_Y_RD(); + EOR_INST(); + + break; +case 0x58: /* CLI */ +#ifdef ASM + INC_KPC_1 + b check_irqs_pending /* check for ints pending! */ + depi 0,29,1,psr /* clear int disable */ +#else + psr = psr & (~4); + INC_KPC_1; + if(((psr & 0x4) == 0) && g_moremem.g_irq_pending) { + FINISH(RET_IRQ, 0); + } +#endif + + break; +case 0x59: /* EOR abs,y */ + GET_ABS_Y_RD(); + EOR_INST(); + + break; +case 0x5a: /* PHY */ +#ifdef ASM + INC_KPC_1 + ldil l%dispatch,link + bb,>= psr,27,phy_16_16 + ldo r%dispatch(link),link + + b push_8 + copy yreg,arg0 + +phy_16_16 + b push_16 + copy yreg,arg0 +#else + INC_KPC_1; + if(psr & 0x10) { + PUSH8(yreg); + } else { + PUSH16(yreg); + } +#endif + + break; +case 0x5b: /* TCD */ +#ifdef ASM + extru acc,31,16,direct + INC_KPC_1 + copy acc,zero + b dispatch + extru acc,16,1,neg +#else + INC_KPC_1; + direct = acc; + SET_NEG_ZERO16(acc); +#endif + + break; +case 0x5c: /* JMP Long */ +#ifdef ASM + ldb 1(scratch1),kpc + ldb 2(scratch1),scratch2 + CYCLES_PLUS_1 + ldb 3(scratch1),arg0 /* new bank */ + dep scratch2,23,8,kpc + b dispatch + dep arg0,15,8,kpc +#else + GET_3BYTE_ARG; + CYCLES_PLUS_1; + kpc = arg; +#endif + + break; +case 0x5d: /* EOR Abs,X */ + GET_ABS_X_RD(); + EOR_INST(); + + break; +case 0x5e: /* LSR Abs,X */ + GET_ABS_X_RD_WR(); + LSR_INST(0); + + break; +case 0x5f: /* EOR Long,X */ + GET_LONG_X_RD(); + EOR_INST(); + + + break; +case 0x60: /* RTS */ +#ifdef ASM + bl pull_16,link + CYCLES_PLUS_2 +/* ret0 is new kpc-1 */ + addi 1,ret0,ret0 + b dispatch + dep ret0,31,16,kpc +#else + CYCLES_PLUS_2 + PULL16(tmp1); + kpc = (kpc & 0xff0000) + ((tmp1 + 1) & 0xffff); +#endif + + + break; +case 0x61: /* ADC (Dloc,X) */ +/* called with arg = val to ADC in */ + GET_DLOC_X_IND_RD(); + ADC_INST(); + + break; +case 0x62: /* PER */ +#ifdef ASM + ldb 1(scratch1),ret0 + INC_KPC_3 + ldb 2(scratch1),scratch1 + CYCLES_PLUS_2 + ldil l%dispatch,link + dep scratch1,23,8,ret0 + ldo r%dispatch(link),link + add kpc,ret0,arg0 + b push_16_unsafe + extru arg0,31,16,arg0 +#else + GET_2BYTE_ARG; + CYCLES_PLUS_2; + INC_KPC_3; + PUSH16_UNSAFE(kpc + arg); +#endif + + break; +case 0x63: /* ADC Disp8,S */ +/* called with arg = val to ADC in */ + GET_DISP8_S_RD(); + ADC_INST(); + + break; +case 0x64: /* STZ Dloc */ + GET_DLOC_ADDR(); + STZ_INST(1); + + break; +case 0x65: /* ADC Dloc */ +/* called with arg = val to ADC in */ + GET_DLOC_RD(); + ADC_INST(); + + break; +case 0x66: /* ROR Dloc */ + GET_DLOC_RD(); +/* save1 is now apple addr */ +/* ret0 is data */ + ROR_INST(1); + + break; +case 0x67: /* ADC [Dloc] */ + GET_DLOC_L_IND_RD(); + ADC_INST(); + + break; +case 0x68: /* PLA */ +#ifdef ASM +# ifdef ACC8 + INC_KPC_1 + bl pull_8,link + CYCLES_PLUS_1 + extru ret0,31,8,zero + extru ret0,24,1,neg + b dispatch + dep ret0,31,8,acc +# else + INC_KPC_1 + bl pull_16,link + CYCLES_PLUS_1 + + extru ret0,31,16,zero + extru ret0,16,1,neg + b dispatch + extru ret0,31,16,acc +# endif +#else + INC_KPC_1; + CYCLES_PLUS_1; +# ifdef ACC8 + PULL8(tmp1); + acc = (acc & 0xff00) + tmp1; + SET_NEG_ZERO8(tmp1); +# else + PULL16(tmp1); + acc = tmp1; + SET_NEG_ZERO16(tmp1); +# endif +#endif + + + break; +case 0x69: /* ADC #imm */ + GET_IMM_MEM(); + ADC_INST(); + + break; +case 0x6a: /* ROR a */ +#ifdef ASM +# ifdef ACC8 + extru psr,31,1,neg + INC_KPC_1 + extru acc,30,7,zero + dep neg,24,1,zero + dep acc,31,1,psr /* set carry */ + b dispatch + dep zero,31,8,acc +# else + extru psr,31,1,neg + INC_KPC_1 + extru acc,30,15,zero + dep neg,16,1,zero + dep acc,31,1,psr /* set carry */ + b dispatch + dep zero,31,16,acc +# endif +#else + INC_KPC_1; +# ifdef ACC8 + tmp1 = ((acc & 0xff) >> 1) + ((psr & 1) << 7); + SET_CARRY8((acc << 8)); + acc = (acc & 0xff00) + (tmp1 & 0xff); + SET_NEG_ZERO8(tmp1 & 0xff); +# else + tmp1 = (acc >> 1) + ((psr & 1) << 15); + SET_CARRY16((acc << 16)); + acc = (tmp1 & 0xffff); + SET_NEG_ZERO16(acc); +# endif +#endif + + break; +case 0x6b: /* RTL */ +#ifdef ASM + bl pull_24,link + CYCLES_PLUS_1 +/* ret0 is new kpc-1 */ + copy ret0,kpc + addi 1,ret0,scratch1 + b dispatch + dep scratch1,31,16,kpc + +#else + CYCLES_PLUS_1; + PULL24(tmp1); + kpc = (tmp1 & 0xff0000) + ((tmp1 + 1) & 0xffff); +#endif + + break; +case 0x6c: /* JMP (abs) */ +#ifdef ASM + ldb 1(scratch1),arg0 + CYCLES_PLUS_1 + ldb 2(scratch1),scratch1 + bl get_mem_long_16,link + dep scratch1,23,8,arg0 +/* ret0 is addr to jump to */ + b dispatch + dep ret0,31,16,kpc +#else + GET_2BYTE_ARG; + CYCLES_PLUS_1; + GET_MEMORY16(arg, tmp1, 1); + kpc = (kpc & 0xff0000) + tmp1; +#endif + + break; +case 0x6d: /* ADC abs */ + GET_ABS_RD(); + ADC_INST(); + + break; +case 0x6e: /* ROR abs */ + GET_ABS_RD(); + ROR_INST(0); + + break; +case 0x6f: /* ADC long */ + GET_LONG_RD(); + ADC_INST(); + + + break; +case 0x70: /* BVS disp8 */ +#ifdef ASM + COND_BR1 + bb,>= psr,25,inst70_2_16 + COND_BR2 + +inst70_2_16 + COND_BR_UNTAKEN +#else + BRANCH_DISP8((psr & 0x40)); +#endif + + break; +case 0x71: /* ADC (Dloc),y */ + GET_DLOC_IND_Y_RD(); + ADC_INST(); + + break; +case 0x72: /* ADC (Dloc) */ + GET_DLOC_IND_RD(); + ADC_INST(); + + break; +case 0x73: /* ADC (Disp8,s),y */ + GET_DISP8_S_IND_Y_RD(); + ADC_INST(); + + break; +case 0x74: /* STZ Dloc,x */ +#ifdef ASM + ldb 1(scratch1),arg0 + GET_DLOC_X_WR(); + STZ_INST(1); +#else + GET_1BYTE_ARG; + GET_DLOC_X_WR(); + STZ_INST(1); +#endif + + break; +case 0x75: /* ADC Dloc,x */ + GET_DLOC_X_RD(); + ADC_INST(); + + break; +case 0x76: /* ROR Dloc,X */ + GET_DLOC_X_RD(); + ROR_INST(1); + + break; +case 0x77: /* ADC [Dloc],Y */ + GET_DLOC_L_IND_Y_RD(); + ADC_INST(); + + break; +case 0x78: /* SEI */ +#ifdef ASM + INC_KPC_1 + b dispatch + depi 1,29,1,psr /* set int disable */ +#else + psr = psr | 4; + INC_KPC_1; +#endif + + break; +case 0x79: /* ADC abs,y */ + GET_ABS_Y_RD(); + ADC_INST(); + + break; +case 0x7a: /* PLY */ +#ifdef ASM + INC_KPC_1 + bb,>= psr,27,inst7a_16bit_16 + nop + + bl pull_8,link + CYCLES_PLUS_1 + + extru ret0,31,8,zero + extru ret0,24,1,neg + b dispatch + copy zero,yreg + +inst7a_16bit_16 + bl pull_16,link + CYCLES_PLUS_1 + + extru ret0,31,16,zero + extru ret0,16,1,neg + b dispatch + copy zero,yreg + +#else + INC_KPC_1; + CYCLES_PLUS_1 + if(psr & 0x10) { + PULL8(yreg); + SET_NEG_ZERO8(yreg); + } else { + PULL16(yreg); + SET_NEG_ZERO16(yreg); + } +#endif + + break; +case 0x7b: /* TDC */ +#ifdef ASM + extru direct,31,16,zero + copy direct,acc + INC_KPC_1 + b dispatch + extru direct,16,1,neg +#else + INC_KPC_1; + acc = direct; + SET_NEG_ZERO16(direct); +#endif + + break; +case 0x7c: /* JMP (Abs,x) */ +/* always access kbank, xreg cannot wrap into next bank */ +#ifdef ASM + ldb 1(scratch1),ret0 + copy kpc,scratch2 + ldb 2(scratch1),scratch1 + dep xreg,31,16,scratch2 + CYCLES_PLUS_2 + dep scratch1,23,8,ret0 + add ret0,scratch2,arg0 + bl get_mem_long_16,link + extru arg0,31,24,arg0 + b dispatch + dep ret0,31,16,kpc +#else + GET_2BYTE_ARG; + arg = (kpc & 0xff0000) + ((xreg + arg) & 0xffff); + CYCLES_PLUS_2; + GET_MEMORY16(arg, tmp1, 1); + kpc = (kpc & 0xff0000) + tmp1; +#endif + + break; +case 0x7d: /* ADC Abs,X */ + GET_ABS_X_RD(); + ADC_INST(); + + break; +case 0x7e: /* ROR Abs,X */ + GET_ABS_X_RD_WR(); + ROR_INST(0); + + break; +case 0x7f: /* ADC Long,X */ + GET_LONG_X_RD(); + ADC_INST(); + + + break; +case 0x80: /* BRA */ +#ifdef ASM + COND_BR1 + COND_BR2 +#else + BRANCH_DISP8(1); +#endif + + + break; +case 0x81: /* STA (Dloc,X) */ + GET_DLOC_X_IND_ADDR(); + STA_INST(0); + + break; +case 0x82: /* BRL disp16 */ +#ifdef ASM + ldb 1(scratch1),ret0 + CYCLES_PLUS_1 + ldb 2(scratch1),scratch1 + addi 3,kpc,scratch2 + dep scratch1,23,8,ret0 + add ret0,scratch2,scratch2 + b dispatch + dep scratch2,31,16,kpc +#else + GET_2BYTE_ARG; + CYCLES_PLUS_1; + kpc = (kpc & 0xff0000) + ((kpc + 3 + arg) & 0xffff); +#endif + + break; +case 0x83: /* STA Disp8,S */ + GET_DISP8_S_ADDR(); + STA_INST(1); + + break; +case 0x84: /* STY Dloc */ + GET_DLOC_ADDR(); + STY_INST(1); + + + break; +case 0x85: /* STA Dloc */ + GET_DLOC_ADDR(); + STA_INST(1); + + break; +case 0x86: /* STX Dloc */ + GET_DLOC_ADDR(); + STX_INST(1); + + + break; +case 0x87: /* STA [Dloc] */ + GET_DLOC_L_IND_ADDR(); + STA_INST(0); + + break; +case 0x88: /* DEY */ +#ifdef ASM + INC_KPC_1 + bb,< psr,27,inst88_8bit_16 + addi -1,yreg,yreg +/* 16 bit */ + extru yreg,31,16,zero + extru yreg,16,1,neg + b dispatch + copy zero,yreg + +inst88_8bit_16 + extru yreg,31,8,zero + extru yreg,24,1,neg + b dispatch + copy zero,yreg +#else + INC_KPC_1; + SET_INDEX_REG(yreg - 1, yreg); +#endif + + break; +case 0x89: /* BIT #imm */ +#ifdef ASM + GET_IMM_MEM(); +# ifdef ACC8 +/* Immediate BIT does not set condition flags */ + and acc,ret0,zero + b dispatch + extru zero,31,8,zero +# else + and acc,ret0,zero + b dispatch + extru zero,31,16,zero +# endif +#else + GET_IMM_MEM(); +# ifdef ACC8 + zero = (acc & arg) & 0xff; +# else + zero = (acc & arg) & 0xffff; +# endif +#endif + + break; +case 0x8a: /* TXA */ +#ifdef ASM +# ifdef ACC8 + extru xreg,31,8,zero + INC_KPC_1 + extru xreg,24,1,neg + b dispatch + dep zero,31,8,acc +# else + extru xreg,31,16,zero + INC_KPC_1 + extru xreg,16,1,neg + b dispatch + zdep zero,31,16,acc +# endif +#else + INC_KPC_1; + arg = xreg; + LDA_INST(); +#endif + + break; +case 0x8b: /* PHB */ +#ifdef ASM + ldil l%dispatch,link + extru dbank,31,8,arg0 + INC_KPC_1 + b push_8 + ldo r%dispatch(link),link +#else + INC_KPC_1; + PUSH8(dbank); +#endif + + break; +case 0x8c: /* STY abs */ + GET_ABS_ADDR(); + STY_INST(0); + + break; +case 0x8d: /* STA abs */ + GET_ABS_ADDR(); + STA_INST(0); + + break; +case 0x8e: /* STX abs */ + GET_ABS_ADDR(); + STX_INST(0); + + + break; +case 0x8f: /* STA long */ + GET_LONG_ADDR(); + STA_INST(0); + + + break; +case 0x90: /* BCC disp8 */ +#ifdef ASM + COND_BR1 + bb,< psr,31,inst90_2_16 + COND_BR2 + +inst90_2_16 + COND_BR_UNTAKEN +#else + BRANCH_DISP8((psr & 0x01) == 0); +#endif + + + break; +case 0x91: /* STA (Dloc),y */ + GET_DLOC_IND_Y_ADDR_FOR_WR(); + STA_INST(0); + + break; +case 0x92: /* STA (Dloc) */ + GET_DLOC_IND_ADDR(); + STA_INST(0); + + break; +case 0x93: /* STA (Disp8,s),y */ + GET_DISP8_S_IND_Y_ADDR(); + STA_INST(0); + + break; +case 0x94: /* STY Dloc,x */ + GET_DLOC_X_ADDR(); + STY_INST(1); + + break; +case 0x95: /* STA Dloc,x */ + GET_DLOC_X_ADDR(); + STA_INST(1); + + break; +case 0x96: /* STX Dloc,Y */ + GET_DLOC_Y_ADDR(); + STX_INST(1); + + break; +case 0x97: /* STA [Dloc],Y */ + GET_DLOC_L_IND_Y_ADDR(); + STA_INST(0); + + break; +case 0x98: /* TYA */ +#ifdef ASM +# ifdef ACC8 + extru yreg,31,8,zero + INC_KPC_1 + extru yreg,24,1,neg + b dispatch + dep zero,31,8,acc +# else + extru yreg,31,16,zero + INC_KPC_1 + extru yreg,16,1,neg + b dispatch + zdep zero,31,16,acc +# endif +#else + INC_KPC_1; + arg = yreg; + LDA_INST(); +#endif + + break; +case 0x99: /* STA abs,y */ + GET_ABS_INDEX_ADDR_FOR_WR(yreg) + STA_INST(0); + + break; +case 0x9a: /* TXS */ +#ifdef ASM + copy xreg,stack + extru,= psr,23,1,0 + depi 1,23,24,stack + INC_KPC_1 + b dispatch + nop +#else + stack = xreg; + if(psr & 0x100) { + stack = 0x100 | (stack & 0xff); + } + INC_KPC_1; +#endif + + + break; +case 0x9b: /* TXY */ +#ifdef ASM + extru xreg,24,1,neg + INC_KPC_1 + extru,<> psr,27,1,0 ;skip next if 8bit + extru xreg,16,1,neg + copy xreg,yreg + b dispatch + copy xreg,zero +#else + SET_INDEX_REG(xreg, yreg); + INC_KPC_1; +#endif + + + break; +case 0x9c: /* STZ Abs */ + GET_ABS_ADDR(); + STZ_INST(0); + + break; +case 0x9d: /* STA Abs,X */ + GET_ABS_INDEX_ADDR_FOR_WR(xreg); + STA_INST(0); + + break; +case 0x9e: /* STZ Abs,X */ + GET_ABS_INDEX_ADDR_FOR_WR(xreg); + STZ_INST(0); + + break; +case 0x9f: /* STA Long,X */ + GET_LONG_X_ADDR_FOR_WR(); + STA_INST(0); + + + break; +case 0xa0: /* LDY #imm */ +#ifdef ASM + INC_KPC_2 + bb,>= psr,27,insta0_16bit_16 + ldb 1(scratch1),zero + + extru zero,24,1,neg + b dispatch + copy zero,yreg +insta0_16bit_16 + ldb 2(scratch1),scratch1 + INC_KPC_1 + CYCLES_PLUS_1 + extru scratch1,24,1,neg + dep scratch1,23,8,zero + b dispatch + copy zero,yreg +#else + INC_KPC_2; + if((psr & 0x10) == 0) { + GET_2BYTE_ARG; + CYCLES_PLUS_1 + INC_KPC_1; + } else { + GET_1BYTE_ARG; + } + SET_INDEX_REG(arg, yreg); +#endif + + + break; +case 0xa1: /* LDA (Dloc,X) */ +/* called with arg = val to LDA in */ + GET_DLOC_X_IND_RD(); + LDA_INST(); + + break; +case 0xa2: /* LDX #imm */ +#ifdef ASM + ldb 1(scratch1),zero + bb,>= psr,27,insta2_16bit_16 + INC_KPC_2; + + extru zero,24,1,neg + b dispatch + copy zero,xreg +insta2_16bit_16 + ldb 2(scratch1),scratch1 + INC_KPC_1 + CYCLES_PLUS_1 + extru scratch1,24,1,neg + dep scratch1,23,8,zero + b dispatch + copy zero,xreg +#else + INC_KPC_2; + if((psr & 0x10) == 0) { + GET_2BYTE_ARG; + CYCLES_PLUS_1 + INC_KPC_1; + } else { + GET_1BYTE_ARG; + } + SET_INDEX_REG(arg, xreg); +#endif + + break; +case 0xa3: /* LDA Disp8,S */ +/* called with arg = val to LDA in */ + GET_DISP8_S_RD(); + LDA_INST(); + + break; +case 0xa4: /* LDY Dloc */ +#ifdef ASM + ldb 1(scratch1),arg0 + GET_DLOC_WR() + b get_yreg_from_mem + nop +#else + C_LDY_DLOC(); +#endif + + break; +case 0xa5: /* LDA Dloc */ +/* called with arg = val to LDA in */ + GET_DLOC_RD(); + LDA_INST(); + + break; +case 0xa6: /* LDX Dloc */ +#ifdef ASM + ldb 1(scratch1),arg0 + GET_DLOC_WR() + b get_xreg_from_mem + nop +#else + C_LDX_DLOC(); +#endif + + break; +case 0xa7: /* LDA [Dloc] */ + GET_DLOC_L_IND_RD(); + LDA_INST(); + + break; +case 0xa8: /* TAY */ +#ifdef ASM + INC_KPC_1 + bb,>= psr,27,insta8_16bit_16 + extru acc,31,8,zero + + extru acc,24,1,neg + b dispatch + copy zero,yreg + +insta8_16bit_16 + extru acc,31,16,zero + extru acc,16,1,neg + b dispatch + copy zero,yreg +#else + INC_KPC_1; + SET_INDEX_REG(acc, yreg); +#endif + + break; +case 0xa9: /* LDA #imm */ + GET_IMM_MEM(); + LDA_INST(); + + break; +case 0xaa: /* TAX */ +#ifdef ASM + INC_KPC_1 + bb,>= psr,27,instaa_16bit_16 + extru acc,31,8,zero + + extru acc,24,1,neg + b dispatch + copy zero,xreg + +instaa_16bit_16 + extru acc,31,16,zero + extru acc,16,1,neg + b dispatch + copy zero,xreg +#else + INC_KPC_1; + SET_INDEX_REG(acc, xreg); +#endif + + break; +case 0xab: /* PLB */ +#ifdef ASM + INC_KPC_1 + bl pull_8,link + CYCLES_PLUS_1 + + extru ret0,31,8,zero + extru ret0,24,1,neg + b dispatch + copy zero,dbank +#else + INC_KPC_1; + CYCLES_PLUS_1 + PULL8(dbank); + SET_NEG_ZERO8(dbank); +#endif + + break; +case 0xac: /* LDY abs */ +#ifdef ASM + GET_ABS_ADDR() + b get_yreg_from_mem + nop +#else + C_LDY_ABS(); +#endif + + + break; +case 0xad: /* LDA abs */ + GET_ABS_RD(); + LDA_INST(); + + break; +case 0xae: /* LDX abs */ +#ifdef ASM + GET_ABS_ADDR() + b get_xreg_from_mem + nop +#else + C_LDX_ABS(); +#endif + + break; +case 0xaf: /* LDA long */ + GET_LONG_RD(); + LDA_INST(); + + + break; +case 0xb0: /* BCS disp8 */ +#ifdef ASM + COND_BR1 + bb,>= psr,31,instb0_2_16 + COND_BR2 + +instb0_2_16 + COND_BR_UNTAKEN +#else + BRANCH_DISP8((psr & 0x01)); +#endif + + break; +case 0xb1: /* LDA (Dloc),y */ + GET_DLOC_IND_Y_RD(); + LDA_INST(); + + break; +case 0xb2: /* LDA (Dloc) */ + GET_DLOC_IND_RD(); + LDA_INST(); + + break; +case 0xb3: /* LDA (Disp8,s),y */ + GET_DISP8_S_IND_Y_RD(); + LDA_INST(); + + break; +case 0xb4: /* LDY Dloc,x */ +#ifdef ASM + ldb 1(scratch1),arg0 + GET_DLOC_X_WR(); + b get_yreg_from_mem + nop +#else + C_LDY_DLOC_X(); +#endif + + break; +case 0xb5: /* LDA Dloc,x */ + GET_DLOC_X_RD(); + LDA_INST(); + + break; +case 0xb6: /* LDX Dloc,y */ +#ifdef ASM + ldb 1(scratch1),arg0 + GET_DLOC_Y_WR(); + b get_xreg_from_mem + nop +#else + C_LDX_DLOC_Y(); +#endif + + break; +case 0xb7: /* LDA [Dloc],Y */ + GET_DLOC_L_IND_Y_RD(); + LDA_INST(); + + break; +case 0xb8: /* CLV */ +#ifdef ASM + INC_KPC_1 + b dispatch + depi 0,25,1,psr /* clear overflow */ +#else + psr = psr & ~0x40; + INC_KPC_1; +#endif + + break; +case 0xb9: /* LDA abs,y */ + GET_ABS_Y_RD(); + LDA_INST(); + + break; +case 0xba: /* TSX */ +#ifdef ASM + INC_KPC_1 + bb,>= psr,27,instba_16bit_16 + extru stack,31,8,zero + + extru stack,24,1,neg + b dispatch + copy zero,xreg +instba_16bit_16 + copy stack,zero + extru stack,16,1,neg + b dispatch + copy zero,xreg +#else + INC_KPC_1; + SET_INDEX_REG(stack, xreg); +#endif + + break; +case 0xbb: /* TYX */ +#ifdef ASM + INC_KPC_1 + bb,>= psr,27,instbb_16bit_16 + copy yreg,xreg + +/* 8 bit */ + extru yreg,24,1,neg + b dispatch + copy yreg,zero +instbb_16bit_16 + extru yreg,16,1,neg + b dispatch + copy yreg,zero +#else + INC_KPC_1; + SET_INDEX_REG(yreg, xreg); +#endif + + break; +case 0xbc: /* LDY Abs,X */ +#ifdef ASM + GET_ABS_INDEX_ADDR_FOR_RD(xreg) + b get_yreg_from_mem + nop +#else + C_LDY_ABS_X(); +#endif + + break; +case 0xbd: /* LDA Abs,X */ + GET_ABS_X_RD(); + LDA_INST(); + + break; +case 0xbe: /* LDX Abs,y */ +#ifdef ASM + GET_ABS_INDEX_ADDR_FOR_RD(yreg) + b get_xreg_from_mem + nop +#else + C_LDX_ABS_Y(); +#endif + + break; +case 0xbf: /* LDA Long,X */ + GET_LONG_X_RD(); + LDA_INST(); + + + break; +case 0xc0: /* CPY #imm */ +#ifdef ASM + ldb 1(scratch1),ret0 + bb,>= psr,27,instc0_16bit_16 + INC_KPC_2; + CMP_INDEX_REG_MEAT8(yreg) +instc0_16bit_16 + ldb 2(scratch1),scratch1 + CYCLES_PLUS_1 + INC_KPC_1 + dep scratch1,23,8,ret0 + CMP_INDEX_REG_MEAT16(yreg) +#else + C_CPY_IMM(); +#endif + + + break; +case 0xc1: /* CMP (Dloc,X) */ +/* called with arg = val to CMP in */ + GET_DLOC_X_IND_RD(); + CMP_INST(); + + break; +case 0xc2: /* REP #imm */ +#ifdef ASM + ldb 1(scratch1),ret0 + extru psr,27,2,arg0 /* save old x & m */ + INC_KPC_2; + dep neg,24,1,psr + CYCLES_PLUS_1 + depi 0,30,1,psr + comiclr,<> 0,zero,0 + depi 1,30,1,psr + andcm psr,ret0,ret0 + ldi 0,zero + extru,<> ret0,30,1,0 + ldi 1,zero + dep ret0,31,8,psr + b update_system_state + extru ret0,24,1,neg +#else + GET_1BYTE_ARG; + tmp2 = psr; + CYCLES_PLUS_1; + INC_KPC_2; + psr = (psr & ~0x82) | ((neg & 1) << 7) | ((!zero) << 1); + psr = psr & ~(arg & 0xff); + zero = !(psr & 2); + neg = (psr >> 7) & 1; + UPDATE_PSR(psr, tmp2); +#endif + + + break; +case 0xc3: /* CMP Disp8,S */ +/* called with arg = val to CMP in */ + GET_DISP8_S_RD(); + CMP_INST(); + + break; +case 0xc4: /* CPY Dloc */ +#ifdef ASM + GET_DLOC_ADDR() + CMP_INDEX_REG_LOAD(instc4_16bit_16, yreg) +#else + C_CPY_DLOC(); +#endif + + + break; +case 0xc5: /* CMP Dloc */ + GET_DLOC_RD(); + CMP_INST(); + + break; +case 0xc6: /* DEC Dloc */ + GET_DLOC_RD(); + DEC_INST(1); + + break; +case 0xc7: /* CMP [Dloc] */ + GET_DLOC_L_IND_RD(); + CMP_INST(); + + break; +case 0xc8: /* INY */ +#ifdef ASM + INC_KPC_1 + addi 1,yreg,yreg + bb,>= psr,27,instc8_16bit_16 + extru yreg,31,8,zero + + extru yreg,24,1,neg + b dispatch + copy zero,yreg + +instc8_16bit_16 + extru yreg,31,16,zero + extru yreg,16,1,neg + b dispatch + copy zero,yreg +#else + INC_KPC_1; + SET_INDEX_REG(yreg + 1, yreg); +#endif + + break; +case 0xc9: /* CMP #imm */ + GET_IMM_MEM(); + CMP_INST(); + + break; +case 0xca: /* DEX */ +#ifdef ASM + INC_KPC_1 + addi -1,xreg,xreg + bb,>= psr,27,instca_16bit_16 + extru xreg,31,8,zero + + extru xreg,24,1,neg + b dispatch + copy zero,xreg + +instca_16bit_16 + extru xreg,31,16,zero + extru xreg,16,1,neg + b dispatch + copy zero,xreg +#else + INC_KPC_1; + SET_INDEX_REG(xreg - 1, xreg); +#endif + + break; +case 0xcb: /* WAI */ +#ifdef ASM + ldil l%g_sim65816.g_wait_pending,scratch1 + CYCLES_FINISH + ldi 1,scratch2 + b dispatch + stw scratch2,r%g_sim65816.g_wait_pending(scratch1) +#else + g_sim65816.g_wait_pending = 1; + CYCLES_FINISH +#endif + + break; +case 0xcc: /* CPY abs */ +#ifdef ASM + GET_ABS_ADDR() + CMP_INDEX_REG_LOAD(instcc_16bit_16, yreg) +#else + C_CPY_ABS(); +#endif + + + + + break; +case 0xcd: /* CMP abs */ + GET_ABS_RD(); + CMP_INST(); + + break; +case 0xce: /* DEC abs */ + GET_ABS_RD(); + DEC_INST(0); + + + break; +case 0xcf: /* CMP long */ + GET_LONG_RD(); + CMP_INST(); + + + break; +case 0xd0: /* BNE disp8 */ +#ifdef ASM + COND_BR1 + comib,= 0,zero,instd0_2_16 + COND_BR2 + +instd0_2_16 + COND_BR_UNTAKEN +#else + BRANCH_DISP8(zero != 0); +#endif + + break; +case 0xd1: /* CMP (Dloc),y */ + GET_DLOC_IND_Y_RD(); + CMP_INST(); + + break; +case 0xd2: /* CMP (Dloc) */ + GET_DLOC_IND_RD(); + CMP_INST(); + + break; +case 0xd3: /* CMP (Disp8,s),y */ + GET_DISP8_S_IND_Y_RD(); + CMP_INST(); + + break; +case 0xd4: /* PEI Dloc */ +#ifdef ASM + GET_DLOC_ADDR() + bl get_mem_long_16,link + CYCLES_PLUS_1 + +/* push ret0 */ + extru ret0,31,16,arg0 + ldil l%dispatch,link + b push_16_unsafe + ldo r%dispatch(link),link +#else + GET_DLOC_ADDR() + GET_MEMORY16(arg, arg, 1); + CYCLES_PLUS_1; + PUSH16_UNSAFE(arg); +#endif + + break; +case 0xd5: /* CMP Dloc,x */ + GET_DLOC_X_RD(); + CMP_INST(); + + break; +case 0xd6: /* DEC Dloc,x */ + GET_DLOC_X_RD(); + DEC_INST(1); + + break; +case 0xd7: /* CMP [Dloc],Y */ + GET_DLOC_L_IND_Y_RD(); + CMP_INST(); + + break; +case 0xd8: /* CLD */ +#ifdef ASM + INC_KPC_1 + b dispatch + depi 0,28,1,psr /* clear decimal */ +#else + psr = psr & (~0x8); + INC_KPC_1; +#endif + + break; +case 0xd9: /* CMP abs,y */ + GET_ABS_Y_RD(); + CMP_INST(); + + break; +case 0xda: /* PHX */ +#ifdef ASM + INC_KPC_1 + bb,>= psr,27,instda_16bit_16 + ldil l%dispatch,link + + extru xreg,31,8,arg0 + b push_8 + ldo r%dispatch(link),link + +instda_16bit_16 + extru xreg,31,16,arg0 + b push_16 + ldo r%dispatch(link),link +#else + INC_KPC_1; + if(psr & 0x10) { + PUSH8(xreg); + } else { + PUSH16(xreg); + } +#endif + + break; +case 0xdb: /* STP */ +#ifdef ASM + ldb 1(scratch1),ret0 + CYCLES_PLUS_1 + b dispatch_done + depi RET_STP,3,4,ret0 +#else + CYCLES_FINISH + FINISH(RET_STP, 0); +#endif + + break; +case 0xdc: /* JML (Abs) */ +#ifdef ASM + ldb 1(scratch1),arg0 + ldb 2(scratch1),scratch1 + CYCLES_PLUS_1 + bl get_mem_long_24,link + dep scratch1,23,8,arg0 + + b dispatch + copy ret0,kpc +#else + GET_2BYTE_ARG; + CYCLES_PLUS_1; + GET_MEMORY24(arg, kpc, 1); +#endif + + break; +case 0xdd: /* CMP Abs,X */ + GET_ABS_X_RD(); + CMP_INST(); + + break; +case 0xde: /* DEC Abs,X */ + GET_ABS_X_RD_WR(); + DEC_INST(0); + + break; +case 0xdf: /* CMP Long,X */ + GET_LONG_X_RD(); + CMP_INST(); + + + break; +case 0xe0: /* CPX #imm */ +#ifdef ASM + ldb 1(scratch1),ret0 + bb,>= psr,27,inste0_16bit_16 + INC_KPC_2; + CMP_INDEX_REG_MEAT8(xreg) +inste0_16bit_16 + ldb 2(scratch1),scratch1 + CYCLES_PLUS_1 + INC_KPC_1 + dep scratch1,23,8,ret0 + CMP_INDEX_REG_MEAT16(xreg) +#else + C_CPX_IMM(); +#endif + + + break; +case 0xe1: /* SBC (Dloc,X) */ +/* called with arg = val to SBC in */ + GET_DLOC_X_IND_RD(); + SBC_INST(); + + break; +case 0xe2: /* SEP #imm */ +#ifdef ASM + ldb 1(scratch1),ret0 + extru psr,27,2,arg0 /* save old x & m */ + INC_KPC_2; + dep neg,24,1,psr + CYCLES_PLUS_1 + depi 0,30,1,psr + comiclr,<> 0,zero,0 + depi 1,30,1,psr + or psr,ret0,ret0 + ldi 0,zero + extru,<> ret0,30,1,0 + ldi 1,zero + dep ret0,31,8,psr + b update_system_state + extru ret0,24,1,neg +#else + GET_1BYTE_ARG; + tmp2 = psr; + CYCLES_PLUS_1; + INC_KPC_2; + psr = (psr & ~0x82) | ((neg & 1) << 7) | ((!zero) << 1); + psr = psr | (arg & 0xff); + zero = !(psr & 2); + neg = (psr >> 7) & 1; + UPDATE_PSR(psr, tmp2); +#endif + + + break; +case 0xe3: /* SBC Disp8,S */ +/* called with arg = val to SBC in */ + GET_DISP8_S_RD(); + SBC_INST(); + + break; +case 0xe4: /* CPX Dloc */ +#ifdef ASM + GET_DLOC_ADDR() + CMP_INDEX_REG_LOAD(inste4_16bit_16, xreg) +#else + C_CPX_DLOC(); +#endif + + + break; +case 0xe5: /* SBC Dloc */ +/* called with arg = val to SBC in */ + GET_DLOC_RD(); + SBC_INST(); + + break; +case 0xe6: /* INC Dloc */ + GET_DLOC_RD(); + INC_INST(1); + + break; +case 0xe7: /* SBC [Dloc] */ + GET_DLOC_L_IND_RD(); + SBC_INST(); + + break; +case 0xe8: /* INX */ +#ifdef ASM + INC_KPC_1 + addi 1,xreg,xreg + bb,>= psr,27,inste8_16bit_16 + extru xreg,31,8,zero + + extru xreg,24,1,neg + b dispatch + copy zero,xreg + +inste8_16bit_16 + extru xreg,31,16,zero + extru xreg,16,1,neg + b dispatch + copy zero,xreg +#else + INC_KPC_1; + SET_INDEX_REG(xreg + 1, xreg); +#endif + + break; +case 0xe9: /* SBC #imm */ + GET_IMM_MEM(); + SBC_INST(); + + break; +case 0xea: /* NOP */ +#ifdef ASM + INC_KPC_1 + b dispatch + nop +#else + INC_KPC_1; +#endif + + break; +case 0xeb: /* XBA */ +#ifdef ASM + extru acc,16,1,neg /* Z and N reflect status of low 8 */ + CYCLES_PLUS_1 /* bits of final acc value! */ + copy acc,scratch1 /* regardlessof ACC 8 or 16 bit */ + extru acc,23,8,acc + INC_KPC_1 + copy acc,zero + b dispatch + dep scratch1,23,8,acc +#else + tmp1 = acc & 0xff; + CYCLES_PLUS_1 + acc = (tmp1 << 8) + (acc >> 8); + INC_KPC_1; + SET_NEG_ZERO8(acc & 0xff); +#endif + + break; +case 0xec: /* CPX abs */ +#ifdef ASM + GET_ABS_ADDR() + CMP_INDEX_REG_LOAD(instec_16bit_16, xreg) +#else + C_CPX_ABS(); +#endif + + + + + break; +case 0xed: /* SBC abs */ + GET_ABS_RD(); + SBC_INST(); + + break; +case 0xee: /* INC abs */ + GET_ABS_RD(); + INC_INST(0); + + + break; +case 0xef: /* SBC long */ + GET_LONG_RD(); + SBC_INST(); + + + break; +case 0xf0: /* BEQ disp8 */ +#ifdef ASM + COND_BR1 + comib,<> 0,zero,instf0_2_16 + COND_BR2 + +instf0_2_16 + COND_BR_UNTAKEN +#else + BRANCH_DISP8(zero == 0); +#endif + + break; +case 0xf1: /* SBC (Dloc),y */ + GET_DLOC_IND_Y_RD(); + SBC_INST(); + + break; +case 0xf2: /* SBC (Dloc) */ + GET_DLOC_IND_RD(); + SBC_INST(); + + break; +case 0xf3: /* SBC (Disp8,s),y */ + GET_DISP8_S_IND_Y_RD(); + SBC_INST(); + + break; +case 0xf4: /* PEA Abs */ +#ifdef ASM + ldb 1(scratch1),arg0 + ldil l%dispatch,link + ldb 2(scratch1),scratch1 + INC_KPC_3 + CYCLES_PLUS_1 + ldo r%dispatch(link),link + b push_16_unsafe + dep scratch1,23,8,arg0 +#else + GET_2BYTE_ARG; + CYCLES_PLUS_1; + INC_KPC_3; + PUSH16_UNSAFE(arg); +#endif + + break; +case 0xf5: /* SBC Dloc,x */ + GET_DLOC_X_RD(); + SBC_INST(); + + break; +case 0xf6: /* INC Dloc,x */ + GET_DLOC_X_RD(); + INC_INST(1); + + break; +case 0xf7: /* SBC [Dloc],Y */ + GET_DLOC_L_IND_Y_RD(); + SBC_INST(); + + break; +case 0xf8: /* SED */ +#ifdef ASM + INC_KPC_1 + b dispatch + depi 1,28,1,psr /* set decimal */ +#else + INC_KPC_1; + psr |= 0x8; +#endif + + break; +case 0xf9: /* SBC abs,y */ + GET_ABS_Y_RD(); + SBC_INST(); + + break; +case 0xfa: /* PLX */ +#ifdef ASM + bb,< psr,27,instfa_8bit_16 + CYCLES_PLUS_1 + + INC_KPC_1 + bl pull_16,link + nop + + extru ret0,31,16,zero + extru ret0,16,1,neg + b dispatch + copy zero,xreg + +instfa_8bit_16 + INC_KPC_1 + bl pull_8,link + nop + + extru ret0,31,8,zero + extru ret0,24,1,neg + b dispatch + copy zero,xreg +#else + INC_KPC_1; + CYCLES_PLUS_1; + if(psr & 0x10) { + PULL8(xreg); + SET_NEG_ZERO8(xreg); + } else { + PULL16(xreg); + SET_NEG_ZERO16(xreg); + } +#endif + + break; +case 0xfb: /* XCE */ +#ifdef ASM + extru psr,27,2,arg0 /* save old x & m */ + INC_KPC_1 + extru psr,23,1,scratch1 /* e bit */ + dep psr,23,1,psr /* copy carry to e bit */ + b update_system_state + dep scratch1,31,1,psr /* copy e bit to carry */ +#else + tmp2 = psr; + INC_KPC_1; + psr = (tmp2 & 0xfe) | ((tmp2 & 1) << 8) | ((tmp2 >> 8) & 1); + UPDATE_PSR(psr, tmp2); +#endif + + break; +case 0xfc: /* JSR (Abs,X) */ +#ifdef ASM + ldb 1(scratch1),ret0 + extru kpc,15,8,scratch2 + ldb 2(scratch1),scratch1 + dep scratch2,15,16,ret0 + INC_KPC_2; + dep scratch1,23,8,ret0 + add xreg,ret0,arg0 + bl get_mem_long_16,link + extru arg0,31,24,arg0 + + CYCLES_PLUS_2 + extru kpc,31,16,arg0 + ldil l%dispatch,link + dep ret0,31,16,kpc + b push_16_unsafe + ldo r%dispatch(link),link +#else + GET_2BYTE_ARG; + INC_KPC_2; + tmp1 = kpc; + arg = (kpc & 0xff0000) + ((arg + xreg) & 0xffff); + GET_MEMORY16(arg, tmp2, 1); + kpc = (kpc & 0xff0000) + tmp2; + CYCLES_PLUS_2 + PUSH16_UNSAFE(tmp1); +#endif + + break; +case 0xfd: /* SBC Abs,X */ + GET_ABS_X_RD(); + SBC_INST(); + + break; +case 0xfe: /* INC Abs,X */ + GET_ABS_X_RD_WR(); + INC_INST(0); + + break; +case 0xff: /* SBC Long,X */ + GET_LONG_X_RD(); + SBC_INST(); + diff --git a/kegs/Src/8inst_c.h b/kegs/Src/8inst_c.h new file mode 100644 index 0000000..9045e02 --- /dev/null +++ b/kegs/Src/8inst_c.h @@ -0,0 +1,3163 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#ifdef ASM +# ifdef INCLUDE_RCSID_S + .stringz "@(#)$KmKId: instable.h,v 1.104 2004-10-05 20:12:08-04 kentd Exp $" +# endif +#endif + +#ifdef _DEBUG +#define ENTER_DEBUGGER() set_halt(HALT_WANTTOBRK) +#else +#define ENTER_DEBUGGER() +#endif + +#define IF_OPCODE_SUPPORTED(_INC) \ + if (g_sim65816.g_6502_emulation && kpc < 0x00C000) \ + { \ + printf("unsupported instruction '%0x' @%0x : replacing by %d NOP\n",opcode,kpc,_INC); \ + ENTER_DEBUGGER(); \ + kpc = (kpc & 0xff0000) + ((kpc + _INC) & 0xffff); \ + } \ + else + +case 0x00: /* brk */ +#ifdef ASM + ldb 1(scratch1),ret0 + ldil l%g_sim65816.g_testing,arg3 + ldil l%g_sim65816.g_num_brk,arg1 + ldw r%g_sim65816.g_testing(arg3),arg3 + INC_KPC_2; + ldw r%g_sim65816.g_num_brk(arg1),arg2 + comib,<> 0,arg3,brk_testing_8 + extru kpc,31,16,arg0 + addi 1,arg2,arg2 + bb,>= psr,23,brk_native_8 + stw arg2,r%g_sim65816.g_num_brk(arg1) + + bl push_16,link + nop + + bl push_8,link + extru psr,31,8,arg0 ;B bit already on in PSR + + ldil l%0xfffe,arg0 + bl get_mem_long_16,link + ldo r%0xfffe(arg0),arg0 + + zdep ret0,31,16,kpc ;set kbank to 0 + +#if 0 + bl set_halt_act,link + ldi 3,arg0 +#endif + + + ldi 0,dbank ;clear dbank in emul mode + b dispatch + depi 1,29,2,psr ;ints masked, decimal off + + +brk_native_8 + stw arg0,STACK_SAVE_COP_ARG0(sp) + bl push_8,link + extru kpc,15,8,arg0 + + bl push_16,link + ldw STACK_SAVE_COP_ARG0(sp),arg0 + + bl push_8,link + extru psr,31,8,arg0 + + ldil l%0xffe6,arg0 + bl get_mem_long_16,link + ldo r%0xffe6(arg0),arg0 + + zdep ret0,31,16,kpc ;zero kbank in kpc + +#if 0 +#endif + bl set_halt_act,link + ldi 3,arg0 + + b dispatch + depi 1,29,2,psr ;ints masked, decimal off + +brk_testing_8 + DEC_KPC2; + CYCLES_PLUS_2 + b dispatch_done + depi RET_BREAK,3,4,ret0 + +#else + GET_1BYTE_ARG; + if(g_sim65816.g_testing) { + CYCLES_PLUS_2; + FINISH(RET_BREAK, arg); + } + g_sim65816.g_num_brk++; + INC_KPC_2; + if(psr & 0x100) { + PUSH16(kpc & 0xffff); + PUSH8(psr & 0xff); + GET_MEMORY16(0xfffe, kpc, 0); + dbank = 0; + } else { + PUSH8(kpc >> 16); + PUSH16(kpc); + PUSH8(psr & 0xff); + GET_MEMORY16(0xffe6, kpc, 0); + halt_printf("Halting for native break!\n"); + } + kpc = kpc & 0xffff; + psr |= 0x4; + psr &= ~(0x8); +#endif + + break; +case 0x01: /* ORA (Dloc,X) */ +/* called with arg = val to ORA in */ + GET_DLOC_X_IND_RD(); + ORA_INST(); + + break; +case 0x02: /* COP */ +#ifdef ASM + ldil l%g_sim65816.g_num_cop,arg1 + INC_KPC_2; + ldw r%g_sim65816.g_num_cop(arg1),arg2 + extru kpc,31,16,arg0 + addi 1,arg2,arg2 + bb,>= psr,23,cop_native_8 + stw arg2,r%g_sim65816.g_num_cop(arg1) + + bl push_16,link + nop + + bl push_8,link + extru psr,31,8,arg0 + + ldil l%0xfff4,arg0 + bl get_mem_long_16,link + ldo r%0xfff4(arg0),arg0 + + ldi 0,dbank ;clear dbank in emul mode + zdep ret0,31,16,kpc ;clear kbank + + bl set_halt_act,link + ldi 3,arg0 + + b dispatch + depi 1,29,2,psr ;ints masked, decimal off + +cop_native_8 + stw arg0,STACK_SAVE_COP_ARG0(sp) + bl push_8,link + extru kpc,15,8,arg0 + + bl push_16,link + ldw STACK_SAVE_COP_ARG0(sp),arg0 + + bl push_8,link + extru psr,31,8,arg0 + + ldil l%0xffe4,arg0 + bl get_mem_long_16,link + ldo r%0xffe4(arg0),arg0 + + zdep ret0,31,16,kpc ;clear kbank + b dispatch + depi 1,29,2,psr ;ints masked, decimal off + + +#else + IF_OPCODE_SUPPORTED(1) + { + g_sim65816.g_num_cop++; + INC_KPC_2; + if(psr & 0x100) { + halt_printf("Halting for emul COP at %04x\n", kpc); + PUSH16(kpc & 0xffff); + PUSH8(psr & 0xff); + GET_MEMORY16(0xfff4, kpc, 0); + dbank = 0; + } else { + PUSH8(kpc >> 16); + PUSH16(kpc & 0xffff); + PUSH8(psr & 0xff); + GET_MEMORY16(0xffe4, kpc, 0); + } + kpc = kpc & 0xffff; + psr |= 4; + psr &= ~(0x8); + } +#endif + + break; +case 0x03: /* ORA Disp8,S */ + IF_OPCODE_SUPPORTED(1) + { + GET_DISP8_S_RD(); + ORA_INST(); + } + break; +case 0x04: /* TSB Dloc */ + GET_DLOC_RD(); + TSB_INST(1); + + break; +case 0x05: /* ORA Dloc */ + GET_DLOC_RD(); + ORA_INST(); + + break; +case 0x06: /* ASL Dloc */ + GET_DLOC_RD(); + ASL_INST(1); + + break; +case 0x07: /* ORA [Dloc] */ + IF_OPCODE_SUPPORTED(1) + { + GET_DLOC_L_IND_RD(); + ORA_INST(); + } + break; +case 0x08: /* PHP */ +#ifdef ASM + dep neg,24,1,psr + ldil l%dispatch,link + INC_KPC_1 + depi 0,30,1,psr + comiclr,<> 0,zero,0 + depi 1,30,1,psr + ldo r%dispatch(link),link + b push_8 + extru psr,31,8,arg0 +#else + INC_KPC_1; + psr = (psr & ~0x82) | ((neg & 1) << 7) | ((!zero) << 1); + PUSH8(psr); +#endif + + break; +case 0x09: /* ORA #imm */ + GET_IMM_MEM(); + ORA_INST(); + + break; +case 0x0a: /* ASL a */ +#ifdef ASM +# ifdef ACC8 + ldi 0xff,scratch1 + sh1add acc,0,scratch3 + INC_KPC_1 + extru scratch3,24,1,neg + and scratch3,scratch1,zero + extru scratch3,23,1,scratch2 + dep zero,31,8,acc + b dispatch + dep scratch2,31,1,psr /* set carry */ +# else + zdepi -1,31,16,scratch1 + sh1add acc,0,scratch3 + INC_KPC_1 + extru scratch3,16,1,neg + and scratch3,scratch1,zero + extru scratch3,15,1,scratch2 + dep scratch2,31,1,psr /* set carry */ + b dispatch + dep zero,31,16,acc +# endif +#else + INC_KPC_1; + tmp1 = acc + acc; +# ifdef ACC8 + SET_CARRY8(tmp1); + acc = (acc & 0xff00) + (tmp1 & 0xff); + SET_NEG_ZERO8(acc & 0xff); +# else + SET_CARRY16(tmp1); + acc = tmp1 & 0xffff; + SET_NEG_ZERO16(acc); +# endif +#endif + + break; +case 0x0b: /* PHD */ +#ifdef ASM + ldil l%dispatch,link + extru direct,31,16,arg0 + INC_KPC_1 + b push_16_unsafe + ldo r%dispatch(link),link +#else + IF_OPCODE_SUPPORTED(1) + { + INC_KPC_1; + PUSH16_UNSAFE(direct); + } +#endif + + break; +case 0x0c: /* TSB abs */ + GET_ABS_RD(); + TSB_INST(0); + + break; +case 0x0d: /* ORA abs */ + GET_ABS_RD(); + ORA_INST(); + + break; +case 0x0e: /* ASL abs */ + GET_ABS_RD(); + ASL_INST(0); + + break; +case 0x0f: /* ORA long */ + IF_OPCODE_SUPPORTED(1) + { + GET_LONG_RD(); + ORA_INST(); + } + + break; +case 0x10: /* BPL disp8 */ +#ifdef ASM + COND_BR1 + comib,<> 0,neg,inst10_2_8 + COND_BR2 + +inst10_2_8 + COND_BR_UNTAKEN +#else + BRANCH_DISP8(neg == 0); +#endif + + break; +case 0x11: /* ORA (Dloc),y */ + GET_DLOC_IND_Y_RD(); + ORA_INST(); + + break; +case 0x12: /* ORA (Dloc) */ + GET_DLOC_IND_RD(); + ORA_INST(); + + break; +case 0x13: /* ORA (Disp8,s),y */ + IF_OPCODE_SUPPORTED(1) + { + GET_DISP8_S_IND_Y_RD(); + ORA_INST(); + } + break; +case 0x14: /* TRB Dloc */ + GET_DLOC_RD(); + TRB_INST(1); + + break; +case 0x15: /* ORA Dloc,x */ + GET_DLOC_X_RD(); + ORA_INST(); + + break; +case 0x16: /* ASL Dloc,X */ + GET_DLOC_X_RD(); + ASL_INST(1); + + break; +case 0x17: /* ORA [Dloc],Y */ + IF_OPCODE_SUPPORTED(1) + { + GET_DLOC_L_IND_Y_RD(); + ORA_INST(); + } + break; +case 0x18: /* CLC */ +#ifdef ASM + INC_KPC_1 + b dispatch + depi 0,31,1,psr /* clear carry */ +#else + psr = psr & (~1); + INC_KPC_1; +#endif + + break; +case 0x19: /* ORA abs,y */ + GET_ABS_Y_RD(); + ORA_INST(); + + + break; +case 0x1a: /* INC a */ +#ifdef ASM +# ifdef ACC8 + ldi 0xff,scratch2 + addi 1,acc,scratch1 + extru scratch1,24,1,neg + INC_KPC_1 + extru scratch1,31,8,zero + b dispatch + dep zero,31,8,acc +# else + zdepi -1,31,16,scratch2 + addi 1,acc,scratch1 + extru scratch1,16,1,neg + INC_KPC_1 + extru scratch1,31,16,zero + b dispatch + dep zero,31,16,acc +# endif +#else + INC_KPC_1; +# ifdef ACC8 + acc = (acc & 0xff00) | ((acc + 1) & 0xff); + SET_NEG_ZERO8(acc & 0xff); +# else + acc = (acc + 1) & 0xffff; + SET_NEG_ZERO16(acc); +# endif +#endif + + break; +case 0x1b: /* TCS */ +#ifdef ASM + copy acc,stack + extru,= psr,23,1,0 /* in emulation mode, stack page 1 */ + depi 1,23,24,stack + INC_KPC_1 + b dispatch + nop +#else + IF_OPCODE_SUPPORTED(1) + { + stack = acc; + INC_KPC_1; + if(psr & 0x100) + { + stack = (stack & 0xff) + 0x100; + } + } +#endif + + break; +case 0x1c: /* TRB Abs */ + GET_ABS_RD(); + TRB_INST(0); + + break; +case 0x1d: /* ORA Abs,X */ + GET_ABS_X_RD(); + ORA_INST(); + + break; +case 0x1e: /* ASL Abs,X */ + GET_ABS_X_RD_WR(); + ASL_INST(0); + + break; +case 0x1f: /* ORA Long,X */ + IF_OPCODE_SUPPORTED(1) + { + GET_LONG_X_RD(); + ORA_INST(); + } + + break; +case 0x20: /* JSR abs */ +#ifdef ASM + addi 2,kpc,arg0 + ldb 1(scratch1),scratch2 + CYCLES_PLUS_2 + ldb 2(scratch1),scratch1 + ldil l%dispatch,link + extru arg0,31,16,arg0 + ldo r%dispatch(link),link + dep scratch2,31,8,kpc + b push_16 + dep scratch1,23,8,kpc +#else + GET_2BYTE_ARG; + INC_KPC_2; + PUSH16(kpc); + kpc = (kpc & 0xff0000) + arg; + CYCLES_PLUS_2; +#endif + + break; +case 0x21: /* AND (Dloc,X) */ +/* called with arg = val to AND in */ + GET_DLOC_X_IND_RD(); + AND_INST(); + + break; +case 0x22: /* JSL Long */ +#ifdef ASM + INC_KPC_3 + ldb 3(scratch1),scratch2 + copy kpc,arg0 + ldb 1(scratch1),kpc + ldb 2(scratch1),scratch1 + CYCLES_PLUS_3 + dep scratch2,15,8,kpc + stw scratch2,STACK_SAVE_INSTR_TMP1(sp) + bl push_24_unsafe,link + dep scratch1,23,8,kpc + + b dispatch + nop +#else + IF_OPCODE_SUPPORTED(2) + { + GET_3BYTE_ARG; + tmp1 = arg; + CYCLES_PLUS_3; + INC_KPC_3; + PUSH24_UNSAFE(kpc); + kpc = tmp1 & 0xffffff; + } +#endif + + break; +case 0x23: /* AND Disp8,S */ +/* called with arg = val to AND in */ + IF_OPCODE_SUPPORTED(1) + { + GET_DISP8_S_RD(); + AND_INST(); + } + break; +case 0x24: /* BIT Dloc */ + GET_DLOC_RD(); + BIT_INST(); + + break; +case 0x25: /* AND Dloc */ +/* called with arg = val to AND in */ + GET_DLOC_RD(); + AND_INST(); + + break; +case 0x26: /* ROL Dloc */ + GET_DLOC_RD(); +/* save1 is now apple addr */ +/* ret0 is data */ + ROL_INST(1); + + break; +case 0x27: /* AND [Dloc] */ + IF_OPCODE_SUPPORTED(1) + { + GET_DLOC_L_IND_RD(); + AND_INST(); + } + break; +case 0x28: /* PLP */ +#ifdef ASM + bl pull_8,link + ldi 0,zero + + extru psr,27,2,scratch2 /* save old x & m */ + dep ret0,31,8,psr + CYCLES_PLUS_1 + INC_KPC_1 + extru,<> ret0,30,1,0 + ldi 1,zero + copy scratch2,arg0 + b update_system_state + extru ret0,24,1,neg +#else + PULL8(tmp1); + tmp2 = psr; + CYCLES_PLUS_1; + INC_KPC_1; + psr = (psr & ~0xff) | (tmp1 & 0xff); + zero = !(psr & 2); + neg = (psr >> 7) & 1; + UPDATE_PSR(psr, tmp2); +#endif + + + break; +case 0x29: /* AND #imm */ + GET_IMM_MEM(); + AND_INST(); + + break; +case 0x2a: /* ROL a */ +#ifdef ASM +# ifdef ACC8 + extru psr,31,1,scratch2 + ldi 0xff,scratch1 + sh1add acc,scratch2,scratch3 + INC_KPC_1 + extru scratch3,24,1,neg + and scratch3,scratch1,zero + extru scratch3,23,1,scratch2 + dep zero,31,8,acc + b dispatch + dep scratch2,31,1,psr /* set carry */ +# else + extru psr,31,1,scratch2 + INC_KPC_1 + sh1add acc,scratch2,scratch3 + zdepi -1,31,16,scratch1 + extru scratch3,16,1,neg + and scratch3,scratch1,zero + extru scratch3,15,1,scratch2 + dep scratch2,31,1,psr /* set carry */ + b dispatch + dep zero,31,16,acc +# endif +#else + INC_KPC_1; +# ifdef ACC8 + tmp1 = ((acc & 0xff) << 1) + (psr & 1); + SET_CARRY8(tmp1); + acc = (acc & 0xff00) + (tmp1 & 0xff); + SET_NEG_ZERO8(tmp1 & 0xff); +# else + tmp1 = (acc << 1) + (psr & 1); + SET_CARRY16(tmp1); + acc = (tmp1 & 0xffff); + SET_NEG_ZERO16(acc); +# endif +#endif + + break; +case 0x2b: /* PLD */ +#ifdef ASM + INC_KPC_1 + bl pull_16_unsafe,link + CYCLES_PLUS_1 + extru ret0,31,16,direct + extru ret0,16,1,neg + b dispatch + copy direct,zero +#else + IF_OPCODE_SUPPORTED(1) + { + INC_KPC_1; + PULL16_UNSAFE(direct); + CYCLES_PLUS_1; + SET_NEG_ZERO16(direct); + } +#endif + + break; +case 0x2c: /* BIT abs */ + GET_ABS_RD(); + BIT_INST(); + + break; +case 0x2d: /* AND abs */ + GET_ABS_RD(); + AND_INST(); + + break; +case 0x2e: /* ROL abs */ + GET_ABS_RD(); + ROL_INST(0); + + break; +case 0x2f: /* AND long */ + IF_OPCODE_SUPPORTED(1) + { + GET_LONG_RD(); + AND_INST(); + } + + break; +case 0x30: /* BMI disp8 */ +#ifdef ASM + COND_BR1 + comib,= 0,neg,inst30_2_8 + COND_BR2 + +inst30_2_8 + COND_BR_UNTAKEN +#else + BRANCH_DISP8(neg); +#endif + + break; +case 0x31: /* AND (Dloc),y */ + GET_DLOC_IND_Y_RD(); + AND_INST(); + + break; +case 0x32: /* AND (Dloc) */ + GET_DLOC_IND_RD(); + AND_INST(); + + break; +case 0x33: /* AND (Disp8,s),y */ + IF_OPCODE_SUPPORTED(1) + { + GET_DISP8_S_IND_Y_RD(); + AND_INST(); + } + break; +case 0x34: /* BIT Dloc,x */ + GET_DLOC_X_RD(); + BIT_INST(); + + break; +case 0x35: /* AND Dloc,x */ + GET_DLOC_X_RD(); + AND_INST(); + + break; +case 0x36: /* ROL Dloc,X */ + GET_DLOC_X_RD(); + ROL_INST(1); + + break; +case 0x37: /* AND [Dloc],Y */ + IF_OPCODE_SUPPORTED(1) + { + GET_DLOC_L_IND_Y_RD(); + AND_INST(); + } + break; +case 0x38: /* SEC */ +#ifdef ASM + INC_KPC_1 + b dispatch + depi 1,31,1,psr /* set carry */ +#else + psr = psr | 1; + INC_KPC_1; +#endif + + break; +case 0x39: /* AND abs,y */ + GET_ABS_Y_RD(); + AND_INST(); + + break; +case 0x3a: /* DEC a */ +#ifdef ASM +# ifdef ACC8 + addi -1,acc,scratch1 + extru scratch1,24,1,neg + INC_KPC_1 + extru scratch1,31,8,zero + b dispatch + dep zero,31,8,acc +# else + addi -1,acc,scratch1 + extru scratch1,16,1,neg + INC_KPC_1 + extru scratch1,31,16,zero + b dispatch + dep zero,31,16,acc +# endif +#else + INC_KPC_1; +# ifdef ACC8 + acc = (acc & 0xff00) | ((acc - 1) & 0xff); + SET_NEG_ZERO8(acc & 0xff); +# else + acc = (acc - 1) & 0xffff; + SET_NEG_ZERO16(acc); +# endif +#endif + + break; +case 0x3b: /* TSC */ +/* set N,Z according to 16 bit acc */ +#ifdef ASM + copy stack,acc + extru stack,16,1,neg + INC_KPC_1 + b dispatch + extru acc,31,16,zero +#else + IF_OPCODE_SUPPORTED(1) + { + INC_KPC_1; + acc = stack; + SET_NEG_ZERO16(acc); + } +#endif + + break; +case 0x3c: /* BIT Abs,x */ + GET_ABS_X_RD(); + BIT_INST(); + + break; +case 0x3d: /* AND Abs,X */ + GET_ABS_X_RD(); + AND_INST(); + + break; +case 0x3e: /* ROL Abs,X */ + GET_ABS_X_RD_WR(); + ROL_INST(0); + + break; +case 0x3f: /* AND Long,X */ + IF_OPCODE_SUPPORTED(1) + { + GET_LONG_X_RD(); + AND_INST(); + } + + break; +case 0x40: /* RTI */ +#ifdef ASM + bb,>= psr,23,rti_native_8 + CYCLES_PLUS_1 +/* emulation */ + bl pull_24,link + ldi 0,zero + + extru psr,27,2,scratch2 + extru ret0,23,16,scratch3 + copy scratch2,arg0 + extru,<> ret0,30,1,0 + ldi 1,zero + dep ret0,31,8,psr + + extru ret0,24,1,neg + b update_system_state + dep scratch3,31,16,kpc + +rti_native_8 + bl pull_8,link + ldi 0,zero + + copy ret0,scratch1 + extru ret0,24,1,neg + dep ret0,31,8,scratch1 + bl pull_24,link + stw scratch1,STACK_SAVE_INSTR_TMP1(sp) + + extru psr,27,2,scratch2 + ldw STACK_SAVE_INSTR_TMP1(sp),psr + extru ret0,31,24,kpc + extru,<> psr,30,1,0 + ldi 1,zero + + b update_system_state_and_change_kbank + copy scratch2,arg0 +#else + CYCLES_PLUS_1 + if(psr & 0x100) { + PULL24(tmp1); + kpc = (kpc & 0xff0000) + ((tmp1 >> 8) & 0xffff); + tmp2 = psr; + psr = (psr & ~0xff) + (tmp1 & 0xff); + neg = (psr >> 7) & 1; + zero = !(psr & 2); + UPDATE_PSR(psr, tmp2); + } else { + PULL8(tmp1); + tmp2 = psr; + psr = (tmp1 & 0xff); + neg = (psr >> 7) & 1; + zero = !(psr & 2); + PULL24(kpc); + UPDATE_PSR(psr, tmp2); + } +#endif + + + break; +case 0x41: /* EOR (Dloc,X) */ +/* called with arg = val to EOR in */ + GET_DLOC_X_IND_RD(); + EOR_INST(); + + break; +case 0x42: /* WDM */ +#ifdef ASM + ldb 1(scratch1),ret0 + CYCLES_PLUS_5 + CYCLES_PLUS_2 + INC_KPC_2 + b dispatch_done + depi RET_WDM,3,4,ret0 +#else + IF_OPCODE_SUPPORTED(2) // 0x42 + { + GET_1BYTE_ARG; + INC_KPC_2; + CYCLES_PLUS_5; + CYCLES_PLUS_2; + FINISH(RET_WDM, arg & 0xff); + } +#endif + + break; +case 0x43: /* EOR Disp8,S */ +/* called with arg = val to EOR in */ + IF_OPCODE_SUPPORTED(1) + { + GET_DISP8_S_RD(); + EOR_INST(); + } + break; +case 0x44: /* MVP */ +#ifdef ASM + ldb 2(scratch1),scratch2 /* src bank */ + bb,< psr,23,inst44_notnat_8 + ldb 1(scratch1),dbank /* dest bank */ + bb,< psr,27,inst44_notnat_8 + stw scratch2,STACK_SRC_BANK(sp) + +inst44_loop_8 + CYCLES_PLUS_1 + ldw STACK_SRC_BANK(sp),scratch2 + copy xreg,arg0 + + bl get_mem_long_8,link + dep scratch2,15,8,arg0 +/* got byte */ + copy ret0,arg1 + copy yreg,arg0 + bl set_mem_long_8,link + dep dbank,15,8,arg0 +/* wrote byte, dec acc */ + CYCLES_PLUS_2 + fldds 0(fcycles_stop_ptr),fcycles_stop + addi -1,xreg,xreg + zdepi -1,31,16,scratch2 + addi -1,yreg,yreg + addi -1,acc,acc + fcmp,<,dbl fcycles,fcycles_stop + and xreg,scratch2,xreg + extrs acc,31,16,scratch1 + and yreg,scratch2,yreg + + comib,= -1,scratch1,inst44_done_8 + and acc,scratch2,acc + + ftest + b inst44_out_of_time_8 + + CYCLES_PLUS_2 + b inst44_loop_8 + nop + +/* get here if done */ +inst44_done_8 + INC_KPC_3 + b dispatch + nop + +inst44_notnat_8 + copy dbank,ret0 + dep scratch2,23,8,ret0 + CYCLES_PLUS_3 + depi RET_MVP,3,4,ret0 + b dispatch_done + CYCLES_PLUS_2 + +inst44_out_of_time_8 +/* cycle have gone positive, just get out, do not update kpc */ + b,n dispatch +#else + IF_OPCODE_SUPPORTED(2) // 0x44 + { + GET_2BYTE_ARG; + /* arg & 0xff = dest bank, arg & 0xff00 = src bank */ + if(psr & 0x110) { + // OG MVP should work even with no native mode - keep the warning though + printf("MVP but not native m or x!\n"); + /* + halt_printf("MVP but not native m or x!\n"); + break; + */ + } + CYCLES_MINUS_2 + dbank = arg & 0xff; + tmp1 = (arg >> 8) & 0xff; + while(1) { + CYCLES_PLUS_3; + GET_MEMORY8((tmp1 << 16) + xreg, arg); + SET_MEMORY8((dbank << 16) + yreg, arg); + CYCLES_PLUS_2; + xreg = (xreg - 1) & 0xffff; + yreg = (yreg - 1) & 0xffff; + acc = (acc - 1) & 0xffff; + if(acc == 0xffff) { + INC_KPC_3; + break; + } + if(fcycles >= g_sim65816.g_fcycles_stop) { + break; + } + } + } +#endif + + + break; +case 0x45: /* EOR Dloc */ +/* called with arg = val to EOR in */ + GET_DLOC_RD(); + EOR_INST(); + + break; +case 0x46: /* LSR Dloc */ + GET_DLOC_RD(); +/* save1 is now apple addr */ +/* ret0 is data */ + LSR_INST(1); + + break; +case 0x47: /* EOR [Dloc] */ + IF_OPCODE_SUPPORTED(1) + { + GET_DLOC_L_IND_RD(); + EOR_INST(); + } + break; +case 0x48: /* PHA */ +#ifdef ASM +# ifdef ACC8 + INC_KPC_1 + ldil l%dispatch,link + extru acc,31,8,arg0 + b push_8 + ldo r%dispatch(link),link +# else + INC_KPC_1 + ldil l%dispatch,link + extru acc,31,16,arg0 + b push_16 + ldo r%dispatch(link),link +# endif +#else + INC_KPC_1; +# ifdef ACC8 + PUSH8(acc); +# else + PUSH16(acc); +# endif +#endif + + break; +case 0x49: /* EOR #imm */ + GET_IMM_MEM(); + EOR_INST(); + + break; +case 0x4a: /* LSR a */ +#ifdef ASM +# ifdef ACC8 + extru acc,31,1,scratch2 + INC_KPC_1 + extru acc,30,7,zero + ldi 0,neg + dep scratch2,31,1,psr /* set carry */ + b dispatch + dep zero,31,8,acc +# else + extru acc,31,1,scratch2 + INC_KPC_1 + extru acc,30,15,zero + ldi 0,neg + dep scratch2,31,1,psr /* set carry */ + b dispatch + dep zero,31,16,acc +# endif +#else + INC_KPC_1; +# ifdef ACC8 + tmp1 = ((acc & 0xff) >> 1); + SET_CARRY8(acc << 8); + acc = (acc & 0xff00) + (tmp1 & 0xff); + SET_NEG_ZERO8(tmp1 & 0xff); +# else + tmp1 = (acc >> 1); + SET_CARRY8((acc << 8)); + acc = (tmp1 & 0xffff); + SET_NEG_ZERO16(acc); +# endif +#endif + + break; +case 0x4b: /* PHK */ +#ifdef ASM + ldil l%dispatch,link + extru kpc,15,8,arg0 + INC_KPC_1 + b push_8 + ldo r%dispatch(link),link +#else + IF_OPCODE_SUPPORTED(1) + { + PUSH8(kpc >> 16); + INC_KPC_1; + } +#endif + + break; +case 0x4c: /* JMP abs */ +#ifdef ASM + ldb 1(scratch1),scratch2 + CYCLES_PLUS_1 + ldb 2(scratch1),scratch1 + dep scratch2,31,8,kpc + b dispatch + dep scratch1,23,8,kpc +#else + GET_2BYTE_ARG; + CYCLES_PLUS_1; + kpc = (kpc & 0xff0000) + arg; +#endif + + + break; +case 0x4d: /* EOR abs */ + GET_ABS_RD(); + EOR_INST(); + + break; +case 0x4e: /* LSR abs */ + GET_ABS_RD(); + LSR_INST(0); + + break; +case 0x4f: /* EOR long */ + IF_OPCODE_SUPPORTED(1) + { + GET_LONG_RD(); + EOR_INST(); + } + + break; +case 0x50: /* BVC disp8 */ +#ifdef ASM + COND_BR1 + bb,< psr,25,inst50_2_8 + COND_BR2 + +inst50_2_8 + COND_BR_UNTAKEN + +#else + BRANCH_DISP8((psr & 0x40) == 0); +#endif + + break; +case 0x51: /* EOR (Dloc),y */ + GET_DLOC_IND_Y_RD(); + EOR_INST(); + + break; +case 0x52: /* EOR (Dloc) */ + GET_DLOC_IND_RD(); + EOR_INST(); + + break; +case 0x53: /* EOR (Disp8,s),y */ + IF_OPCODE_SUPPORTED(1) + { + GET_DISP8_S_IND_Y_RD(); + EOR_INST(); + } + break; +case 0x54: /* MVN */ +#ifdef ASM + ldb 2(scratch1),scratch2 /* src bank */ + bb,< psr,23,inst54_notnat_8 + ldb 1(scratch1),dbank /* dest bank */ + bb,< psr,27,inst54_notnat_8 + stw scratch2,STACK_SRC_BANK(sp) + +/* even in 8bit acc mode, use 16-bit accumulator! */ + +inst54_loop_8 + CYCLES_PLUS_1 + ldw STACK_SRC_BANK(sp),scratch2 + copy xreg,arg0 + + bl get_mem_long_8,link + dep scratch2,15,8,arg0 +/* got byte */ + copy ret0,arg1 + copy yreg,arg0 + bl set_mem_long_8,link + dep dbank,15,8,arg0 +/* wrote byte, dec acc */ + CYCLES_PLUS_2 + fldds 0(fcycles_stop_ptr),fcycles_stop + addi 1,xreg,xreg + zdepi -1,31,16,scratch2 + addi 1,yreg,yreg + addi -1,acc,acc + fcmp,<,dbl fcycles,fcycles_stop + and xreg,scratch2,xreg + extrs acc,31,16,scratch1 + and yreg,scratch2,yreg + + comib,= -1,scratch1,inst54_done_8 + and acc,scratch2,acc + ftest + b,n inst54_out_of_time_8 + + CYCLES_PLUS_2 + b inst54_loop_8 + nop + +/* get here if done */ +inst54_done_8 + INC_KPC_3 + b dispatch + nop + +inst54_out_of_time_8 +/* cycle have gone positive, just get out, don't update kpc */ + b,n dispatch + +inst54_notnat_8 + copy dbank,ret0 + dep scratch2,23,8,ret0 + CYCLES_PLUS_3 + depi RET_MVN,3,4,ret0 + b dispatch_done + CYCLES_PLUS_3 +#else + IF_OPCODE_SUPPORTED(2) // 0x54 + { + + GET_2BYTE_ARG; + /* arg & 0xff = dest bank, arg & 0xff00 = src bank */ + if(psr & 0x110) { + // OG MVN should work even with no native mode - keep the warning though + printf("MVN but not native m or x!\n"); + } + CYCLES_MINUS_2; + dbank = arg & 0xff; + tmp1 = (arg >> 8) & 0xff; + while(1) { + CYCLES_PLUS_3; + GET_MEMORY8((tmp1 << 16) + xreg, arg); + SET_MEMORY8((dbank << 16) + yreg, arg); + CYCLES_PLUS_2; + xreg = (xreg + 1) & 0xffff; + yreg = (yreg + 1) & 0xffff; + acc = (acc - 1) & 0xffff; + if(acc == 0xffff) { + INC_KPC_3; + break; + } + if(fcycles >= g_sim65816.g_fcycles_stop) { + break; + } + } + } +#endif + + break; +case 0x55: /* EOR Dloc,x */ + GET_DLOC_X_RD(); + EOR_INST(); + + break; +case 0x56: /* LSR Dloc,X */ + GET_DLOC_X_RD(); + LSR_INST(1); + + break; +case 0x57: /* EOR [Dloc],Y */ + IF_OPCODE_SUPPORTED(1) + { + GET_DLOC_L_IND_Y_RD(); + EOR_INST(); + } + break; +case 0x58: /* CLI */ +#ifdef ASM + INC_KPC_1 + b check_irqs_pending /* check for ints pending! */ + depi 0,29,1,psr /* clear int disable */ +#else + psr = psr & (~4); + INC_KPC_1; + if(((psr & 0x4) == 0) && g_moremem.g_irq_pending) { + FINISH(RET_IRQ, 0); + } +#endif + + break; +case 0x59: /* EOR abs,y */ + GET_ABS_Y_RD(); + EOR_INST(); + + break; +case 0x5a: /* PHY */ +#ifdef ASM + INC_KPC_1 + ldil l%dispatch,link + bb,>= psr,27,phy_16_8 + ldo r%dispatch(link),link + + b push_8 + copy yreg,arg0 + +phy_16_8 + b push_16 + copy yreg,arg0 +#else + INC_KPC_1; + if(psr & 0x10) { + PUSH8(yreg); + } else { + PUSH16(yreg); + } +#endif + + break; +case 0x5b: /* TCD */ +#ifdef ASM + extru acc,31,16,direct + INC_KPC_1 + copy acc,zero + b dispatch + extru acc,16,1,neg +#else + IF_OPCODE_SUPPORTED(1) + { + INC_KPC_1; + direct = acc; + SET_NEG_ZERO16(acc); + } +#endif + + break; +case 0x5c: /* JMP Long */ +#ifdef ASM + ldb 1(scratch1),kpc + ldb 2(scratch1),scratch2 + CYCLES_PLUS_1 + ldb 3(scratch1),arg0 /* new bank */ + dep scratch2,23,8,kpc + b dispatch + dep arg0,15,8,kpc +#else + IF_OPCODE_SUPPORTED(2) // 0x5C + { + GET_3BYTE_ARG; + CYCLES_PLUS_1; + kpc = arg; + } +#endif + + break; +case 0x5d: /* EOR Abs,X */ + GET_ABS_X_RD(); + EOR_INST(); + + break; +case 0x5e: /* LSR Abs,X */ + GET_ABS_X_RD_WR(); + LSR_INST(0); + + break; +case 0x5f: /* EOR Long,X */ + IF_OPCODE_SUPPORTED(1) + { + GET_LONG_X_RD(); + EOR_INST(); + } + + break; +case 0x60: /* RTS */ +#ifdef ASM + bl pull_16,link + CYCLES_PLUS_2 +/* ret0 is new kpc-1 */ + addi 1,ret0,ret0 + b dispatch + dep ret0,31,16,kpc +#else + CYCLES_PLUS_2 + PULL16(tmp1); + kpc = (kpc & 0xff0000) + ((tmp1 + 1) & 0xffff); +#endif + + + break; +case 0x61: /* ADC (Dloc,X) */ +/* called with arg = val to ADC in */ + GET_DLOC_X_IND_RD(); + ADC_INST(); + + break; +case 0x62: /* PER */ +#ifdef ASM + ldb 1(scratch1),ret0 + INC_KPC_3 + ldb 2(scratch1),scratch1 + CYCLES_PLUS_2 + ldil l%dispatch,link + dep scratch1,23,8,ret0 + ldo r%dispatch(link),link + add kpc,ret0,arg0 + b push_16_unsafe + extru arg0,31,16,arg0 +#else + IF_OPCODE_SUPPORTED(2) // 0x62 + { + GET_2BYTE_ARG; + CYCLES_PLUS_2; + INC_KPC_3; + PUSH16_UNSAFE(kpc + arg); + } +#endif + + break; +case 0x63: /* ADC Disp8,S */ +/* called with arg = val to ADC in */ + IF_OPCODE_SUPPORTED(1) + { + GET_DISP8_S_RD(); + ADC_INST(); + } + break; +case 0x64: /* STZ Dloc */ + GET_DLOC_ADDR(); + STZ_INST(1); + + break; +case 0x65: /* ADC Dloc */ +/* called with arg = val to ADC in */ + GET_DLOC_RD(); + ADC_INST(); + + break; +case 0x66: /* ROR Dloc */ + GET_DLOC_RD(); +/* save1 is now apple addr */ +/* ret0 is data */ + ROR_INST(1); + + break; +case 0x67: /* ADC [Dloc] */ + IF_OPCODE_SUPPORTED(1) + { + GET_DLOC_L_IND_RD(); + ADC_INST(); + } + break; +case 0x68: /* PLA */ +#ifdef ASM +# ifdef ACC8 + INC_KPC_1 + bl pull_8,link + CYCLES_PLUS_1 + extru ret0,31,8,zero + extru ret0,24,1,neg + b dispatch + dep ret0,31,8,acc +# else + INC_KPC_1 + bl pull_16,link + CYCLES_PLUS_1 + + extru ret0,31,16,zero + extru ret0,16,1,neg + b dispatch + extru ret0,31,16,acc +# endif +#else + INC_KPC_1; + CYCLES_PLUS_1; +# ifdef ACC8 + PULL8(tmp1); + acc = (acc & 0xff00) + tmp1; + SET_NEG_ZERO8(tmp1); +# else + PULL16(tmp1); + acc = tmp1; + SET_NEG_ZERO16(tmp1); +# endif +#endif + + + break; +case 0x69: /* ADC #imm */ + GET_IMM_MEM(); + ADC_INST(); + + break; +case 0x6a: /* ROR a */ +#ifdef ASM +# ifdef ACC8 + extru psr,31,1,neg + INC_KPC_1 + extru acc,30,7,zero + dep neg,24,1,zero + dep acc,31,1,psr /* set carry */ + b dispatch + dep zero,31,8,acc +# else + extru psr,31,1,neg + INC_KPC_1 + extru acc,30,15,zero + dep neg,16,1,zero + dep acc,31,1,psr /* set carry */ + b dispatch + dep zero,31,16,acc +# endif +#else + INC_KPC_1; +# ifdef ACC8 + tmp1 = ((acc & 0xff) >> 1) + ((psr & 1) << 7); + SET_CARRY8((acc << 8)); + acc = (acc & 0xff00) + (tmp1 & 0xff); + SET_NEG_ZERO8(tmp1 & 0xff); +# else + tmp1 = (acc >> 1) + ((psr & 1) << 15); + SET_CARRY16((acc << 16)); + acc = (tmp1 & 0xffff); + SET_NEG_ZERO16(acc); +# endif +#endif + + break; +case 0x6b: /* RTL */ +#ifdef ASM + bl pull_24,link + CYCLES_PLUS_1 +/* ret0 is new kpc-1 */ + copy ret0,kpc + addi 1,ret0,scratch1 + b dispatch + dep scratch1,31,16,kpc + +#else + IF_OPCODE_SUPPORTED(1) + { + CYCLES_PLUS_1; + PULL24(tmp1); + kpc = (tmp1 & 0xff0000) + ((tmp1 + 1) & 0xffff); + } +#endif + + break; +case 0x6c: /* JMP (abs) */ +#ifdef ASM + ldb 1(scratch1),arg0 + CYCLES_PLUS_1 + ldb 2(scratch1),scratch1 + bl get_mem_long_16,link + dep scratch1,23,8,arg0 +/* ret0 is addr to jump to */ + b dispatch + dep ret0,31,16,kpc +#else + GET_2BYTE_ARG; + CYCLES_PLUS_1; + GET_MEMORY16(arg, tmp1, 1); + kpc = (kpc & 0xff0000) + tmp1; +#endif + + break; +case 0x6d: /* ADC abs */ + GET_ABS_RD(); + ADC_INST(); + + break; +case 0x6e: /* ROR abs */ + GET_ABS_RD(); + ROR_INST(0); + + break; +case 0x6f: /* ADC long */ + IF_OPCODE_SUPPORTED(1) + { + GET_LONG_RD(); + ADC_INST(); + } + + break; +case 0x70: /* BVS disp8 */ +#ifdef ASM + COND_BR1 + bb,>= psr,25,inst70_2_8 + COND_BR2 + +inst70_2_8 + COND_BR_UNTAKEN +#else + BRANCH_DISP8((psr & 0x40)); +#endif + + break; +case 0x71: /* ADC (Dloc),y */ + GET_DLOC_IND_Y_RD(); + ADC_INST(); + + break; +case 0x72: /* ADC (Dloc) */ + GET_DLOC_IND_RD(); + ADC_INST(); + + break; +case 0x73: /* ADC (Disp8,s),y */ + IF_OPCODE_SUPPORTED(1) + { + GET_DISP8_S_IND_Y_RD(); + ADC_INST(); + } + break; +case 0x74: /* STZ Dloc,x */ +#ifdef ASM + ldb 1(scratch1),arg0 + GET_DLOC_X_WR(); + STZ_INST(1); +#else + GET_1BYTE_ARG; + GET_DLOC_X_WR(); + STZ_INST(1); +#endif + + break; +case 0x75: /* ADC Dloc,x */ + GET_DLOC_X_RD(); + ADC_INST(); + + break; +case 0x76: /* ROR Dloc,X */ + GET_DLOC_X_RD(); + ROR_INST(1); + + break; +case 0x77: /* ADC [Dloc],Y */ + IF_OPCODE_SUPPORTED(1) + { + GET_DLOC_L_IND_Y_RD(); + ADC_INST(); + } + break; +case 0x78: /* SEI */ +#ifdef ASM + INC_KPC_1 + b dispatch + depi 1,29,1,psr /* set int disable */ +#else + psr = psr | 4; + INC_KPC_1; +#endif + + break; +case 0x79: /* ADC abs,y */ + GET_ABS_Y_RD(); + ADC_INST(); + + break; +case 0x7a: /* PLY */ +#ifdef ASM + INC_KPC_1 + bb,>= psr,27,inst7a_16bit_8 + nop + + bl pull_8,link + CYCLES_PLUS_1 + + extru ret0,31,8,zero + extru ret0,24,1,neg + b dispatch + copy zero,yreg + +inst7a_16bit_8 + bl pull_16,link + CYCLES_PLUS_1 + + extru ret0,31,16,zero + extru ret0,16,1,neg + b dispatch + copy zero,yreg + +#else + INC_KPC_1; + CYCLES_PLUS_1 + if(psr & 0x10) { + PULL8(yreg); + SET_NEG_ZERO8(yreg); + } else { + PULL16(yreg); + SET_NEG_ZERO16(yreg); + } +#endif + + break; +case 0x7b: /* TDC */ +#ifdef ASM + extru direct,31,16,zero + copy direct,acc + INC_KPC_1 + b dispatch + extru direct,16,1,neg +#else + IF_OPCODE_SUPPORTED(1) + { + INC_KPC_1; + acc = direct; + SET_NEG_ZERO16(direct); + } +#endif + + break; +case 0x7c: /* JMP (Abs,x) */ +/* always access kbank, xreg cannot wrap into next bank */ +#ifdef ASM + ldb 1(scratch1),ret0 + copy kpc,scratch2 + ldb 2(scratch1),scratch1 + dep xreg,31,16,scratch2 + CYCLES_PLUS_2 + dep scratch1,23,8,ret0 + add ret0,scratch2,arg0 + bl get_mem_long_16,link + extru arg0,31,24,arg0 + b dispatch + dep ret0,31,16,kpc +#else + GET_2BYTE_ARG; + arg = (kpc & 0xff0000) + ((xreg + arg) & 0xffff); + CYCLES_PLUS_2; + GET_MEMORY16(arg, tmp1, 1); + kpc = (kpc & 0xff0000) + tmp1; +#endif + + break; +case 0x7d: /* ADC Abs,X */ + GET_ABS_X_RD(); + ADC_INST(); + + break; +case 0x7e: /* ROR Abs,X */ + GET_ABS_X_RD_WR(); + ROR_INST(0); + + break; +case 0x7f: /* ADC Long,X */ + IF_OPCODE_SUPPORTED(1) + { + GET_LONG_X_RD(); + ADC_INST(); + } + + break; +case 0x80: /* BRA */ +#ifdef ASM + COND_BR1 + COND_BR2 +#else + BRANCH_DISP8(1); +#endif + + + break; +case 0x81: /* STA (Dloc,X) */ + GET_DLOC_X_IND_ADDR(); + STA_INST(0); + + break; +case 0x82: /* BRL disp16 */ +#ifdef ASM + ldb 1(scratch1),ret0 + CYCLES_PLUS_1 + ldb 2(scratch1),scratch1 + addi 3,kpc,scratch2 + dep scratch1,23,8,ret0 + add ret0,scratch2,scratch2 + b dispatch + dep scratch2,31,16,kpc +#else + IF_OPCODE_SUPPORTED(2) + { + GET_2BYTE_ARG; + CYCLES_PLUS_1; + kpc = (kpc & 0xff0000) + ((kpc + 3 + arg) & 0xffff); + } +#endif + + break; +case 0x83: /* STA Disp8,S */ + IF_OPCODE_SUPPORTED(1) + { + GET_DISP8_S_ADDR(); + STA_INST(1); + } + break; +case 0x84: /* STY Dloc */ + GET_DLOC_ADDR(); + STY_INST(1); + + + break; +case 0x85: /* STA Dloc */ + GET_DLOC_ADDR(); + STA_INST(1); + + break; +case 0x86: /* STX Dloc */ + GET_DLOC_ADDR(); + STX_INST(1); + + + break; +case 0x87: /* STA [Dloc] */ + IF_OPCODE_SUPPORTED(1) + { + GET_DLOC_L_IND_ADDR(); + STA_INST(0); + } + break; +case 0x88: /* DEY */ +#ifdef ASM + INC_KPC_1 + bb,< psr,27,inst88_8bit_8 + addi -1,yreg,yreg +/* 16 bit */ + extru yreg,31,16,zero + extru yreg,16,1,neg + b dispatch + copy zero,yreg + +inst88_8bit_8 + extru yreg,31,8,zero + extru yreg,24,1,neg + b dispatch + copy zero,yreg +#else + INC_KPC_1; + SET_INDEX_REG(yreg - 1, yreg); +#endif + + break; +case 0x89: /* BIT #imm */ +#ifdef ASM + GET_IMM_MEM(); +# ifdef ACC8 +/* Immediate BIT does not set condition flags */ + and acc,ret0,zero + b dispatch + extru zero,31,8,zero +# else + and acc,ret0,zero + b dispatch + extru zero,31,16,zero +# endif +#else + GET_IMM_MEM(); +# ifdef ACC8 + zero = (acc & arg) & 0xff; +# else + zero = (acc & arg) & 0xffff; +# endif +#endif + + break; +case 0x8a: /* TXA */ +#ifdef ASM +# ifdef ACC8 + extru xreg,31,8,zero + INC_KPC_1 + extru xreg,24,1,neg + b dispatch + dep zero,31,8,acc +# else + extru xreg,31,16,zero + INC_KPC_1 + extru xreg,16,1,neg + b dispatch + zdep zero,31,16,acc +# endif +#else + INC_KPC_1; + arg = xreg; + LDA_INST(); +#endif + + break; +case 0x8b: /* PHB */ +#ifdef ASM + ldil l%dispatch,link + extru dbank,31,8,arg0 + INC_KPC_1 + b push_8 + ldo r%dispatch(link),link +#else + IF_OPCODE_SUPPORTED(1) + { + INC_KPC_1; + PUSH8(dbank); + } +#endif + + break; +case 0x8c: /* STY abs */ + GET_ABS_ADDR(); + STY_INST(0); + + break; +case 0x8d: /* STA abs */ + GET_ABS_ADDR(); + STA_INST(0); + + break; +case 0x8e: /* STX abs */ + GET_ABS_ADDR(); + STX_INST(0); + + + break; +case 0x8f: /* STA long */ + IF_OPCODE_SUPPORTED(1) + { + GET_LONG_ADDR(); + STA_INST(0); + } + + break; +case 0x90: /* BCC disp8 */ +#ifdef ASM + COND_BR1 + bb,< psr,31,inst90_2_8 + COND_BR2 + +inst90_2_8 + COND_BR_UNTAKEN +#else + BRANCH_DISP8((psr & 0x01) == 0); +#endif + + + break; +case 0x91: /* STA (Dloc),y */ + GET_DLOC_IND_Y_ADDR_FOR_WR(); + STA_INST(0); + + break; +case 0x92: /* STA (Dloc) */ + GET_DLOC_IND_ADDR(); + STA_INST(0); + + break; +case 0x93: /* STA (Disp8,s),y */ + IF_OPCODE_SUPPORTED(1) + { + GET_DISP8_S_IND_Y_ADDR(); + STA_INST(0); + } + break; +case 0x94: /* STY Dloc,x */ + GET_DLOC_X_ADDR(); + STY_INST(1); + + break; +case 0x95: /* STA Dloc,x */ + GET_DLOC_X_ADDR(); + STA_INST(1); + + break; +case 0x96: /* STX Dloc,Y */ + GET_DLOC_Y_ADDR(); + STX_INST(1); + + break; +case 0x97: /* STA [Dloc],Y */ + IF_OPCODE_SUPPORTED(1) + { + GET_DLOC_L_IND_Y_ADDR(); + STA_INST(0); + } + break; +case 0x98: /* TYA */ +#ifdef ASM +# ifdef ACC8 + extru yreg,31,8,zero + INC_KPC_1 + extru yreg,24,1,neg + b dispatch + dep zero,31,8,acc +# else + extru yreg,31,16,zero + INC_KPC_1 + extru yreg,16,1,neg + b dispatch + zdep zero,31,16,acc +# endif +#else + INC_KPC_1; + arg = yreg; + LDA_INST(); +#endif + + break; +case 0x99: /* STA abs,y */ + GET_ABS_INDEX_ADDR_FOR_WR(yreg) + STA_INST(0); + + break; +case 0x9a: /* TXS */ +#ifdef ASM + copy xreg,stack + extru,= psr,23,1,0 + depi 1,23,24,stack + INC_KPC_1 + b dispatch + nop +#else + stack = xreg; + if(psr & 0x100) { + stack = 0x100 | (stack & 0xff); + } + INC_KPC_1; +#endif + + + break; +case 0x9b: /* TXY */ +#ifdef ASM + extru xreg,24,1,neg + INC_KPC_1 + extru,<> psr,27,1,0 ;skip next if 8bit + extru xreg,16,1,neg + copy xreg,yreg + b dispatch + copy xreg,zero +#else + IF_OPCODE_SUPPORTED(1) + { + SET_INDEX_REG(xreg, yreg); + INC_KPC_1; + } +#endif + + + break; +case 0x9c: /* STZ Abs */ + GET_ABS_ADDR(); + STZ_INST(0); + + break; +case 0x9d: /* STA Abs,X */ + GET_ABS_INDEX_ADDR_FOR_WR(xreg); + STA_INST(0); + + break; +case 0x9e: /* STZ Abs,X */ + GET_ABS_INDEX_ADDR_FOR_WR(xreg); + STZ_INST(0); + + break; +case 0x9f: /* STA Long,X */ + IF_OPCODE_SUPPORTED(1) + { + GET_LONG_X_ADDR_FOR_WR(); + STA_INST(0); + } + + break; +case 0xa0: /* LDY #imm */ +#ifdef ASM + INC_KPC_2 + bb,>= psr,27,insta0_16bit_8 + ldb 1(scratch1),zero + + extru zero,24,1,neg + b dispatch + copy zero,yreg +insta0_16bit_8 + ldb 2(scratch1),scratch1 + INC_KPC_1 + CYCLES_PLUS_1 + extru scratch1,24,1,neg + dep scratch1,23,8,zero + b dispatch + copy zero,yreg +#else + INC_KPC_2; + if((psr & 0x10) == 0) { + GET_2BYTE_ARG; + CYCLES_PLUS_1 + INC_KPC_1; + } else { + GET_1BYTE_ARG; + } + SET_INDEX_REG(arg, yreg); +#endif + + + break; +case 0xa1: /* LDA (Dloc,X) */ +/* called with arg = val to LDA in */ + GET_DLOC_X_IND_RD(); + LDA_INST(); + + break; +case 0xa2: /* LDX #imm */ +#ifdef ASM + ldb 1(scratch1),zero + bb,>= psr,27,insta2_16bit_8 + INC_KPC_2; + + extru zero,24,1,neg + b dispatch + copy zero,xreg +insta2_16bit_8 + ldb 2(scratch1),scratch1 + INC_KPC_1 + CYCLES_PLUS_1 + extru scratch1,24,1,neg + dep scratch1,23,8,zero + b dispatch + copy zero,xreg +#else + INC_KPC_2; + if((psr & 0x10) == 0) { + GET_2BYTE_ARG; + CYCLES_PLUS_1 + INC_KPC_1; + } else { + GET_1BYTE_ARG; + } + SET_INDEX_REG(arg, xreg); +#endif + + break; +case 0xa3: /* LDA Disp8,S */ +/* called with arg = val to LDA in */ + IF_OPCODE_SUPPORTED(1) + { + GET_DISP8_S_RD(); + LDA_INST(); + } + break; +case 0xa4: /* LDY Dloc */ +#ifdef ASM + ldb 1(scratch1),arg0 + GET_DLOC_WR() + b get_yreg_from_mem + nop +#else + C_LDY_DLOC(); +#endif + + break; +case 0xa5: /* LDA Dloc */ +/* called with arg = val to LDA in */ + GET_DLOC_RD(); + LDA_INST(); + + break; +case 0xa6: /* LDX Dloc */ +#ifdef ASM + ldb 1(scratch1),arg0 + GET_DLOC_WR() + b get_xreg_from_mem + nop +#else + C_LDX_DLOC(); +#endif + + break; +case 0xa7: /* LDA [Dloc] */ + IF_OPCODE_SUPPORTED(1) + { + GET_DLOC_L_IND_RD(); + LDA_INST(); + } + break; +case 0xa8: /* TAY */ +#ifdef ASM + INC_KPC_1 + bb,>= psr,27,insta8_16bit_8 + extru acc,31,8,zero + + extru acc,24,1,neg + b dispatch + copy zero,yreg + +insta8_16bit_8 + extru acc,31,16,zero + extru acc,16,1,neg + b dispatch + copy zero,yreg +#else + INC_KPC_1; + SET_INDEX_REG(acc, yreg); +#endif + + break; +case 0xa9: /* LDA #imm */ + GET_IMM_MEM(); + LDA_INST(); + + break; +case 0xaa: /* TAX */ +#ifdef ASM + INC_KPC_1 + bb,>= psr,27,instaa_16bit_8 + extru acc,31,8,zero + + extru acc,24,1,neg + b dispatch + copy zero,xreg + +instaa_16bit_8 + extru acc,31,16,zero + extru acc,16,1,neg + b dispatch + copy zero,xreg +#else + INC_KPC_1; + SET_INDEX_REG(acc, xreg); +#endif + + break; +case 0xab: /* PLB */ +#ifdef ASM + INC_KPC_1 + bl pull_8,link + CYCLES_PLUS_1 + + extru ret0,31,8,zero + extru ret0,24,1,neg + b dispatch + copy zero,dbank +#else + IF_OPCODE_SUPPORTED(1) + { + INC_KPC_1; + CYCLES_PLUS_1 + PULL8(dbank); + SET_NEG_ZERO8(dbank); + } +#endif + + break; +case 0xac: /* LDY abs */ +#ifdef ASM + GET_ABS_ADDR() + b get_yreg_from_mem + nop +#else + C_LDY_ABS(); +#endif + + + break; +case 0xad: /* LDA abs */ + GET_ABS_RD(); + LDA_INST(); + + break; +case 0xae: /* LDX abs */ +#ifdef ASM + GET_ABS_ADDR() + b get_xreg_from_mem + nop +#else + C_LDX_ABS(); +#endif + + break; +case 0xaf: /* LDA long */ + IF_OPCODE_SUPPORTED(1) + { + GET_LONG_RD(); + LDA_INST(); + } + + break; +case 0xb0: /* BCS disp8 */ +#ifdef ASM + COND_BR1 + bb,>= psr,31,instb0_2_8 + COND_BR2 + +instb0_2_8 + COND_BR_UNTAKEN +#else + BRANCH_DISP8((psr & 0x01)); +#endif + + break; +case 0xb1: /* LDA (Dloc),y */ + GET_DLOC_IND_Y_RD(); + LDA_INST(); + + break; +case 0xb2: /* LDA (Dloc) */ + GET_DLOC_IND_RD(); + LDA_INST(); + + break; +case 0xb3: /* LDA (Disp8,s),y */ + IF_OPCODE_SUPPORTED(1) + { + GET_DISP8_S_IND_Y_RD(); + LDA_INST(); + } + break; +case 0xb4: /* LDY Dloc,x */ +#ifdef ASM + ldb 1(scratch1),arg0 + GET_DLOC_X_WR(); + b get_yreg_from_mem + nop +#else + C_LDY_DLOC_X(); +#endif + + break; +case 0xb5: /* LDA Dloc,x */ + GET_DLOC_X_RD(); + LDA_INST(); + + break; +case 0xb6: /* LDX Dloc,y */ +#ifdef ASM + ldb 1(scratch1),arg0 + GET_DLOC_Y_WR(); + b get_xreg_from_mem + nop +#else + C_LDX_DLOC_Y(); +#endif + + break; +case 0xb7: /* LDA [Dloc],Y */ + IF_OPCODE_SUPPORTED(1) + { + GET_DLOC_L_IND_Y_RD(); + LDA_INST(); + } + break; +case 0xb8: /* CLV */ +#ifdef ASM + INC_KPC_1 + b dispatch + depi 0,25,1,psr /* clear overflow */ +#else + psr = psr & ~0x40; + INC_KPC_1; +#endif + + break; +case 0xb9: /* LDA abs,y */ + GET_ABS_Y_RD(); + LDA_INST(); + + break; +case 0xba: /* TSX */ +#ifdef ASM + INC_KPC_1 + bb,>= psr,27,instba_16bit_8 + extru stack,31,8,zero + + extru stack,24,1,neg + b dispatch + copy zero,xreg +instba_16bit_8 + copy stack,zero + extru stack,16,1,neg + b dispatch + copy zero,xreg +#else + INC_KPC_1; + SET_INDEX_REG(stack, xreg); +#endif + + break; +case 0xbb: /* TYX */ +#ifdef ASM + INC_KPC_1 + bb,>= psr,27,instbb_16bit_8 + copy yreg,xreg + +/* 8 bit */ + extru yreg,24,1,neg + b dispatch + copy yreg,zero +instbb_16bit_8 + extru yreg,16,1,neg + b dispatch + copy yreg,zero +#else + IF_OPCODE_SUPPORTED(1) + { + INC_KPC_1; + SET_INDEX_REG(yreg, xreg); + } +#endif + + break; +case 0xbc: /* LDY Abs,X */ +#ifdef ASM + GET_ABS_INDEX_ADDR_FOR_RD(xreg) + b get_yreg_from_mem + nop +#else + C_LDY_ABS_X(); +#endif + + break; +case 0xbd: /* LDA Abs,X */ + GET_ABS_X_RD(); + LDA_INST(); + + break; +case 0xbe: /* LDX Abs,y */ +#ifdef ASM + GET_ABS_INDEX_ADDR_FOR_RD(yreg) + b get_xreg_from_mem + nop +#else + C_LDX_ABS_Y(); +#endif + + break; +case 0xbf: /* LDA Long,X */ + IF_OPCODE_SUPPORTED(1) + { + GET_LONG_X_RD(); + LDA_INST(); + } + + break; +case 0xc0: /* CPY #imm */ +#ifdef ASM + ldb 1(scratch1),ret0 + bb,>= psr,27,instc0_16bit_8 + INC_KPC_2; + CMP_INDEX_REG_MEAT8(yreg) +instc0_16bit_8 + ldb 2(scratch1),scratch1 + CYCLES_PLUS_1 + INC_KPC_1 + dep scratch1,23,8,ret0 + CMP_INDEX_REG_MEAT16(yreg) +#else + C_CPY_IMM(); +#endif + + + break; +case 0xc1: /* CMP (Dloc,X) */ +/* called with arg = val to CMP in */ + GET_DLOC_X_IND_RD(); + CMP_INST(); + + break; +case 0xc2: /* REP #imm */ +#ifdef ASM + ldb 1(scratch1),ret0 + extru psr,27,2,arg0 /* save old x & m */ + INC_KPC_2; + dep neg,24,1,psr + CYCLES_PLUS_1 + depi 0,30,1,psr + comiclr,<> 0,zero,0 + depi 1,30,1,psr + andcm psr,ret0,ret0 + ldi 0,zero + extru,<> ret0,30,1,0 + ldi 1,zero + dep ret0,31,8,psr + b update_system_state + extru ret0,24,1,neg +#else + IF_OPCODE_SUPPORTED(2) // 0xC2 + { + GET_1BYTE_ARG; + tmp2 = psr; + CYCLES_PLUS_1; + INC_KPC_2; + psr = (psr & ~0x82) | ((neg & 1) << 7) | ((!zero) << 1); + psr = psr & ~(arg & 0xff); + zero = !(psr & 2); + neg = (psr >> 7) & 1; + UPDATE_PSR(psr, tmp2); + } +#endif + + + break; +case 0xc3: /* CMP Disp8,S */ +/* called with arg = val to CMP in */ + IF_OPCODE_SUPPORTED(1) + { + GET_DISP8_S_RD(); + CMP_INST(); + } + break; +case 0xc4: /* CPY Dloc */ +#ifdef ASM + GET_DLOC_ADDR() + CMP_INDEX_REG_LOAD(instc4_16bit_8, yreg) +#else + C_CPY_DLOC(); +#endif + + + break; +case 0xc5: /* CMP Dloc */ + GET_DLOC_RD(); + CMP_INST(); + + break; +case 0xc6: /* DEC Dloc */ + GET_DLOC_RD(); + DEC_INST(1); + + break; +case 0xc7: /* CMP [Dloc] */ + IF_OPCODE_SUPPORTED(1) + { + GET_DLOC_L_IND_RD(); + CMP_INST(); + } + break; +case 0xc8: /* INY */ +#ifdef ASM + INC_KPC_1 + addi 1,yreg,yreg + bb,>= psr,27,instc8_16bit_8 + extru yreg,31,8,zero + + extru yreg,24,1,neg + b dispatch + copy zero,yreg + +instc8_16bit_8 + extru yreg,31,16,zero + extru yreg,16,1,neg + b dispatch + copy zero,yreg +#else + INC_KPC_1; + SET_INDEX_REG(yreg + 1, yreg); +#endif + + break; +case 0xc9: /* CMP #imm */ + GET_IMM_MEM(); + CMP_INST(); + + break; +case 0xca: /* DEX */ +#ifdef ASM + INC_KPC_1 + addi -1,xreg,xreg + bb,>= psr,27,instca_16bit_8 + extru xreg,31,8,zero + + extru xreg,24,1,neg + b dispatch + copy zero,xreg + +instca_16bit_8 + extru xreg,31,16,zero + extru xreg,16,1,neg + b dispatch + copy zero,xreg +#else + INC_KPC_1; + SET_INDEX_REG(xreg - 1, xreg); +#endif + + break; +case 0xcb: /* WAI */ +#ifdef ASM + ldil l%g_sim65816.g_wait_pending,scratch1 + CYCLES_FINISH + ldi 1,scratch2 + b dispatch + stw scratch2,r%g_sim65816.g_wait_pending(scratch1) +#else + IF_OPCODE_SUPPORTED(1) + { + g_sim65816.g_wait_pending = 1; + CYCLES_FINISH + } +#endif + + break; +case 0xcc: /* CPY abs */ +#ifdef ASM + GET_ABS_ADDR() + CMP_INDEX_REG_LOAD(instcc_16bit_8, yreg) +#else + C_CPY_ABS(); +#endif + + + + + break; +case 0xcd: /* CMP abs */ + GET_ABS_RD(); + CMP_INST(); + + break; +case 0xce: /* DEC abs */ + GET_ABS_RD(); + DEC_INST(0); + + + break; +case 0xcf: /* CMP long */ + IF_OPCODE_SUPPORTED(1) + { + GET_LONG_RD(); + CMP_INST(); + } + + break; +case 0xd0: /* BNE disp8 */ +#ifdef ASM + COND_BR1 + comib,= 0,zero,instd0_2_8 + COND_BR2 + +instd0_2_8 + COND_BR_UNTAKEN +#else + BRANCH_DISP8(zero != 0); +#endif + + break; +case 0xd1: /* CMP (Dloc),y */ + GET_DLOC_IND_Y_RD(); + CMP_INST(); + + break; +case 0xd2: /* CMP (Dloc) */ + GET_DLOC_IND_RD(); + CMP_INST(); + + break; +case 0xd3: /* CMP (Disp8,s),y */ + IF_OPCODE_SUPPORTED(1) + { + GET_DISP8_S_IND_Y_RD(); + CMP_INST(); + } + break; +case 0xd4: /* PEI Dloc */ +#ifdef ASM + GET_DLOC_ADDR() + bl get_mem_long_16,link + CYCLES_PLUS_1 + +/* push ret0 */ + extru ret0,31,16,arg0 + ldil l%dispatch,link + b push_16_unsafe + ldo r%dispatch(link),link +#else + IF_OPCODE_SUPPORTED(2) // 0xD4 + { + GET_DLOC_ADDR() + GET_MEMORY16(arg, arg, 1); + CYCLES_PLUS_1; + PUSH16_UNSAFE(arg); + } +#endif + + break; +case 0xd5: /* CMP Dloc,x */ + GET_DLOC_X_RD(); + CMP_INST(); + + break; +case 0xd6: /* DEC Dloc,x */ + GET_DLOC_X_RD(); + DEC_INST(1); + + break; +case 0xd7: /* CMP [Dloc],Y */ + IF_OPCODE_SUPPORTED(1) + { + GET_DLOC_L_IND_Y_RD(); + CMP_INST(); + } + break; +case 0xd8: /* CLD */ +#ifdef ASM + INC_KPC_1 + b dispatch + depi 0,28,1,psr /* clear decimal */ +#else + psr = psr & (~0x8); + INC_KPC_1; +#endif + + break; +case 0xd9: /* CMP abs,y */ + GET_ABS_Y_RD(); + CMP_INST(); + + break; +case 0xda: /* PHX */ +#ifdef ASM + INC_KPC_1 + bb,>= psr,27,instda_16bit_8 + ldil l%dispatch,link + + extru xreg,31,8,arg0 + b push_8 + ldo r%dispatch(link),link + +instda_16bit_8 + extru xreg,31,16,arg0 + b push_16 + ldo r%dispatch(link),link +#else + INC_KPC_1; + if(psr & 0x10) { + PUSH8(xreg); + } else { + PUSH16(xreg); + } +#endif + + break; +case 0xdb: /* STP */ +#ifdef ASM + ldb 1(scratch1),ret0 + CYCLES_PLUS_1 + b dispatch_done + depi RET_STP,3,4,ret0 +#else + IF_OPCODE_SUPPORTED(1) + { + CYCLES_FINISH + FINISH(RET_STP, 0); + } +#endif + + break; +case 0xdc: /* JML (Abs) */ +#ifdef ASM + ldb 1(scratch1),arg0 + ldb 2(scratch1),scratch1 + CYCLES_PLUS_1 + bl get_mem_long_24,link + dep scratch1,23,8,arg0 + + b dispatch + copy ret0,kpc +#else + IF_OPCODE_SUPPORTED(2) // 0xDC + { + GET_2BYTE_ARG; + CYCLES_PLUS_1; + GET_MEMORY24(arg, kpc, 1); + } +#endif + + break; +case 0xdd: /* CMP Abs,X */ + GET_ABS_X_RD(); + CMP_INST(); + + break; +case 0xde: /* DEC Abs,X */ + GET_ABS_X_RD_WR(); + DEC_INST(0); + + break; +case 0xdf: /* CMP Long,X */ + IF_OPCODE_SUPPORTED(1) + { + GET_LONG_X_RD(); + CMP_INST(); + } + + break; +case 0xe0: /* CPX #imm */ +#ifdef ASM + ldb 1(scratch1),ret0 + bb,>= psr,27,inste0_16bit_8 + INC_KPC_2; + CMP_INDEX_REG_MEAT8(xreg) +inste0_16bit_8 + ldb 2(scratch1),scratch1 + CYCLES_PLUS_1 + INC_KPC_1 + dep scratch1,23,8,ret0 + CMP_INDEX_REG_MEAT16(xreg) +#else + C_CPX_IMM(); +#endif + + + break; +case 0xe1: /* SBC (Dloc,X) */ +/* called with arg = val to SBC in */ + GET_DLOC_X_IND_RD(); + SBC_INST(); + + break; +case 0xe2: /* SEP #imm */ +#ifdef ASM + ldb 1(scratch1),ret0 + extru psr,27,2,arg0 /* save old x & m */ + INC_KPC_2; + dep neg,24,1,psr + CYCLES_PLUS_1 + depi 0,30,1,psr + comiclr,<> 0,zero,0 + depi 1,30,1,psr + or psr,ret0,ret0 + ldi 0,zero + extru,<> ret0,30,1,0 + ldi 1,zero + dep ret0,31,8,psr + b update_system_state + extru ret0,24,1,neg +#else + IF_OPCODE_SUPPORTED(2) // 0xE2 + { + GET_1BYTE_ARG; + tmp2 = psr; + CYCLES_PLUS_1; + INC_KPC_2; + psr = (psr & ~0x82) | ((neg & 1) << 7) | ((!zero) << 1); + psr = psr | (arg & 0xff); + zero = !(psr & 2); + neg = (psr >> 7) & 1; + UPDATE_PSR(psr, tmp2); + } +#endif + + + break; +case 0xe3: /* SBC Disp8,S */ +/* called with arg = val to SBC in */ + IF_OPCODE_SUPPORTED(1) + { + GET_DISP8_S_RD(); + SBC_INST(); + } + break; +case 0xe4: /* CPX Dloc */ +#ifdef ASM + GET_DLOC_ADDR() + CMP_INDEX_REG_LOAD(inste4_16bit_8, xreg) +#else + C_CPX_DLOC(); +#endif + + + break; +case 0xe5: /* SBC Dloc */ +/* called with arg = val to SBC in */ + GET_DLOC_RD(); + SBC_INST(); + + break; +case 0xe6: /* INC Dloc */ + GET_DLOC_RD(); + INC_INST(1); + + break; +case 0xe7: /* SBC [Dloc] */ + IF_OPCODE_SUPPORTED(1) + { + GET_DLOC_L_IND_RD(); + SBC_INST(); + } + break; +case 0xe8: /* INX */ +#ifdef ASM + INC_KPC_1 + addi 1,xreg,xreg + bb,>= psr,27,inste8_16bit_8 + extru xreg,31,8,zero + + extru xreg,24,1,neg + b dispatch + copy zero,xreg + +inste8_16bit_8 + extru xreg,31,16,zero + extru xreg,16,1,neg + b dispatch + copy zero,xreg +#else + INC_KPC_1; + SET_INDEX_REG(xreg + 1, xreg); +#endif + + break; +case 0xe9: /* SBC #imm */ + GET_IMM_MEM(); + SBC_INST(); + + break; +case 0xea: /* NOP */ +#ifdef ASM + INC_KPC_1 + b dispatch + nop +#else + INC_KPC_1; +#endif + + break; +case 0xeb: /* XBA */ +#ifdef ASM + extru acc,16,1,neg /* Z and N reflect status of low 8 */ + CYCLES_PLUS_1 /* bits of final acc value! */ + copy acc,scratch1 /* regardlessof ACC 8 or 16 bit */ + extru acc,23,8,acc + INC_KPC_1 + copy acc,zero + b dispatch + dep scratch1,23,8,acc +#else + IF_OPCODE_SUPPORTED(1) + { + tmp1 = acc & 0xff; + CYCLES_PLUS_1 + acc = (tmp1 << 8) + (acc >> 8); + INC_KPC_1; + SET_NEG_ZERO8(acc & 0xff); + } +#endif + + break; +case 0xec: /* CPX abs */ +#ifdef ASM + GET_ABS_ADDR() + CMP_INDEX_REG_LOAD(instec_16bit_8, xreg) +#else + C_CPX_ABS(); +#endif + + + + + break; +case 0xed: /* SBC abs */ + GET_ABS_RD(); + SBC_INST(); + + break; +case 0xee: /* INC abs */ + GET_ABS_RD(); + INC_INST(0); + + + break; +case 0xef: /* SBC long */ + IF_OPCODE_SUPPORTED(1) + { + GET_LONG_RD(); + SBC_INST(); + } + + break; +case 0xf0: /* BEQ disp8 */ +#ifdef ASM + COND_BR1 + comib,<> 0,zero,instf0_2_8 + COND_BR2 + +instf0_2_8 + COND_BR_UNTAKEN +#else + BRANCH_DISP8(zero == 0); +#endif + + break; +case 0xf1: /* SBC (Dloc),y */ + GET_DLOC_IND_Y_RD(); + SBC_INST(); + + break; +case 0xf2: /* SBC (Dloc) */ + GET_DLOC_IND_RD(); + SBC_INST(); + + break; +case 0xf3: /* SBC (Disp8,s),y */ + IF_OPCODE_SUPPORTED(1) + { + GET_DISP8_S_IND_Y_RD(); + SBC_INST(); + } + break; +case 0xf4: /* PEA Abs */ +#ifdef ASM + ldb 1(scratch1),arg0 + ldil l%dispatch,link + ldb 2(scratch1),scratch1 + INC_KPC_3 + CYCLES_PLUS_1 + ldo r%dispatch(link),link + b push_16_unsafe + dep scratch1,23,8,arg0 +#else + IF_OPCODE_SUPPORTED(2) // 0xF4 + { + GET_2BYTE_ARG; + CYCLES_PLUS_1; + INC_KPC_3; + PUSH16_UNSAFE(arg); + } +#endif + + break; +case 0xf5: /* SBC Dloc,x */ + GET_DLOC_X_RD(); + SBC_INST(); + + break; +case 0xf6: /* INC Dloc,x */ + GET_DLOC_X_RD(); + INC_INST(1); + + break; +case 0xf7: /* SBC [Dloc],Y */ + IF_OPCODE_SUPPORTED(1) + { + GET_DLOC_L_IND_Y_RD(); + SBC_INST(); + } + break; +case 0xf8: /* SED */ +#ifdef ASM + INC_KPC_1 + b dispatch + depi 1,28,1,psr /* set decimal */ +#else + INC_KPC_1; + psr |= 0x8; +#endif + + break; +case 0xf9: /* SBC abs,y */ + GET_ABS_Y_RD(); + SBC_INST(); + + break; +case 0xfa: /* PLX */ +#ifdef ASM + bb,< psr,27,instfa_8bit_8 + CYCLES_PLUS_1 + + INC_KPC_1 + bl pull_16,link + nop + + extru ret0,31,16,zero + extru ret0,16,1,neg + b dispatch + copy zero,xreg + +instfa_8bit_8 + INC_KPC_1 + bl pull_8,link + nop + + extru ret0,31,8,zero + extru ret0,24,1,neg + b dispatch + copy zero,xreg +#else + INC_KPC_1; + CYCLES_PLUS_1; + if(psr & 0x10) { + PULL8(xreg); + SET_NEG_ZERO8(xreg); + } else { + PULL16(xreg); + SET_NEG_ZERO16(xreg); + } +#endif + + break; +case 0xfb: /* XCE */ +#ifdef ASM + extru psr,27,2,arg0 /* save old x & m */ + INC_KPC_1 + extru psr,23,1,scratch1 /* e bit */ + dep psr,23,1,psr /* copy carry to e bit */ + b update_system_state + dep scratch1,31,1,psr /* copy e bit to carry */ +#else + IF_OPCODE_SUPPORTED(1) + { + tmp2 = psr; + INC_KPC_1; + psr = (tmp2 & 0xfe) | ((tmp2 & 1) << 8) | ((tmp2 >> 8) & 1); + UPDATE_PSR(psr, tmp2); + } +#endif + + break; +case 0xfc: /* JSR (Abs,X) */ +#ifdef ASM + ldb 1(scratch1),ret0 + extru kpc,15,8,scratch2 + ldb 2(scratch1),scratch1 + dep scratch2,15,16,ret0 + INC_KPC_2; + dep scratch1,23,8,ret0 + add xreg,ret0,arg0 + bl get_mem_long_16,link + extru arg0,31,24,arg0 + + CYCLES_PLUS_2 + extru kpc,31,16,arg0 + ldil l%dispatch,link + dep ret0,31,16,kpc + b push_16_unsafe + ldo r%dispatch(link),link +#else + IF_OPCODE_SUPPORTED(2) // 0xFC + { + GET_2BYTE_ARG; + INC_KPC_2; + tmp1 = kpc; + arg = (kpc & 0xff0000) + ((arg + xreg) & 0xffff); + GET_MEMORY16(arg, tmp2, 1); + kpc = (kpc & 0xff0000) + tmp2; + CYCLES_PLUS_2 + PUSH16_UNSAFE(tmp1); + } +#endif + + break; +case 0xfd: /* SBC Abs,X */ + GET_ABS_X_RD(); + SBC_INST(); + + break; +case 0xfe: /* INC Abs,X */ + GET_ABS_X_RD_WR(); + INC_INST(0); + + break; +case 0xff: /* SBC Long,X */ + + + IF_OPCODE_SUPPORTED(1) + { + GET_LONG_X_RD(); + SBC_INST(); + } + \ No newline at end of file diff --git a/kegs/Src/GraphCounter.cpp b/kegs/Src/GraphCounter.cpp new file mode 100644 index 0000000..8b0857e --- /dev/null +++ b/kegs/Src/GraphCounter.cpp @@ -0,0 +1,209 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "defc.h" +#include "video.h" +#include "sim65816.h" +#include "GraphCounter.h" +#include "raster.h" + +#ifdef ENABLE_GRAPH + +s_graph g_graph; + +#define GRAPH_X 0 +#define GRAPH_Y 100 + + +void s_graph::add_graph(int _counter, float _value, int _vblcount) +{ + int v = _vblcount%NB_GRAPH_VALUES; + values[_counter][v]=_value; +// printf("addgraph (%d)(%f) vbl:%d %f\n", _counter,g_sim65816.g_last_vbl_dcycs,_vblcount,_value); +} + +s_graph::s_graph() +{ + + memset(this,0,sizeof(*this)); + + // Counter 0 = frame rate + min[0] = 5.0f; + max[0] = 60.0f; + ref[0] = 10.0f; + color[0]=0xFF0000; // RED + + // Counter 1 = frame/sleep precision + min[1] = 55.0f; + max[1] = 65.0f; + ref[1] = 60.0f; + color[1]=0x00FFFF; + + // Counter 2 = c054/page flipping + min[2] = 5.0f; + max[2] = 20.0f; + ref[2] = 10.0f; + color[2]=0xFFFFFF; + + // Counter 3 = sleep precision + min[3] = -.020f; + max[3] = 0.020f; + ref[3] = 0.0f; + color[3]=0x00FF00; + + +} + + + +void s_graph::draw_graph(Kimage* _dest, int _curvbl) +{ + if (!_dest->data_ptr) return ; + // Clear Rect + + int pw = (_dest->mdepth >> 3); + int wd = _dest->width_act*pw; + byte* ptr = _dest->data_ptr + GRAPH_X*pw + GRAPH_Y*wd; + for(int h=0;h=0 && hdata_ptr+ (h+GRAPH_Y)*wd + (v+GRAPH_X)*pw ) ; + *ptr2 = 0xFF; + } + int i = (_curvbl -v + NB_GRAPH_VALUES)%NB_GRAPH_VALUES; + float va = values[c][i]; + m = (va - min[c]); + + h = (int)( m*NB_GRAPH_HEIGHT/d ); + if (h>=0 && hdata_ptr+ (h+GRAPH_Y)*wd + (v+GRAPH_X)*pw ) ; + *ptr = color[c]; + } + + + + } + } +} + +#endif + +#ifdef BORDER_SCAN + +#define NB_BORDER 3 +#define MAX_BORDER 100 +int iBorder[NB_BORDER]; +double reftime=0.0; +int borders[NB_BORDER][MAX_BORDER]; +int colors[NB_BORDER][MAX_BORDER]; + +extern int screenHeight; + +void change_border(int c,int _color) +{ + double t = get_dtime(); + double d = t - reftime; + int l; +#ifdef WIN32 + if (c==2) + { + extern int screenHeight; + l = getScanLine() * (float)X_A2_WINDOW_HEIGHT/(float)screenHeight; + } + else +#endif + l = d * X_A2_WINDOW_HEIGHT / (1/60.0); + + if (l<0) l=0; + if (l>X_A2_WINDOW_HEIGHT) l=X_A2_WINDOW_HEIGHT; + + + borders[c][iBorder[c]]=l; + colors[c][iBorder[c]++]=_color; +// ASSERT(iBorderwidth_act * (image->mdepth >> 3); + + + // cherche le plus petit scanline + int min=1000000; + int imin=-1; + for(int k=0;kdata_ptr ; + for(int i=0;iheight;i+=1) + { + if (i>borders[c][imin] && !done) + { + col = colors[c][imin]; + imin++; + if (imin>=iBorder[c]) + imin=0; + if (imin==istart) + done=1; + + } + for(int j=0;j<32;j++) + ((word32*)ptrdest)[00+j+c*32] = col ; + + // memset(ptrdest,col,bitmapBytesPerRow); + ptrdest += bitmapBytesPerRow; + // col += 10; + } + } +#endif + reset_border(); +} + +void reset_border() +{ + for(int c=0;c> 3 ); + offscreen.size = wb * g_kimage_offscreen.height / STEP ; + offscreen.fastalloc = fastalloc; + offscreen.data = (byte*)x_malloc( offscreen.size,fastalloc ); + if (!offscreen.data) + x_fatal_exit("out of memory error!"); + byte* ptrs = (byte*)g_kimage_offscreen.data_ptr; + byte* ptrd = (byte*)offscreen.data; + + + for(int h=0;h> 3; + + temp.data_ptr = (byte*)malloc(X_A2_WINDOW_WIDTH*X_A2_WINDOW_HEIGHT*pb); + +#ifdef VIDEO_SINGLEVLINE + // restore l'offscreen l'identique + int wb = temp.width_act * pb; + byte* ptrs = (byte*)offscreen.data; + byte* ptrd = (byte*)temp.data_ptr; + + for(int h=0;h pour profiter des effets post prod + x_push_kimage(&temp,0,0,0,0,temp.width_req,temp.height); + + offscreen.releaseuncompressed(); + + // libre le fichier temp + free(temp.data_ptr ); + + refresh_video(1); +// double dtime = get_dtime(); +// double delay = dtime - lastcycs; +// lastcycs = dtime; + +// debug_printf("displaying frame:%d (%f)\n",vbl,delay); +#endif + +} + +void s_savestate::handleKey(int _key,int _isup) +{ + #if (!defined(MAC) || defined(ACTIVEGSPLUGIN)) && !defined(ACTIVEGS_NOSAVESTATE) + if (!_isup && (_key == 0x3B || _key == 0x3C || _key == 0x24 /*RET*/|| _key == 0x60 /*VK_F5*/ ) ) + { + if (_key == 0x24 || _key == 0x60) + { + + r_sim65816.set_state(RUNNING); + return ; + } + + + int next ; + if (iCurState==-1) + { + // TODO A AMELIORER + iCurState = (MAX_STATE+iNextState -1 )%MAX_STATE; + } + + if (_key==0x3B) + { + targetStateSens = 0; + + // vrifie qu'il y a encore une clef + + int next = (MAX_STATE+iCurState -1 )%MAX_STATE; + while(next != iNextState ) + { + if (states[next].isEmpty()) + // plus de clef + break; + if (states[next].fullsave) + { + targetStateSens = -1; + break; + } + next = (MAX_STATE+next -1 )%MAX_STATE; + + } + if (!targetStateSens) + + printf("begin rewind\n"); + + } + else + { + targetStateSens = +1; + next = (MAX_STATE+iCurState +1 )%MAX_STATE; + + if (next == iNextState || states[next].isEmpty() ) + { + targetStateSens = 0; + iCurState=-1; + printf("end rewind\n"); + return ; + } + } + + } +#endif +} + + +int s_savestate::getSavedStateVBL() +{ + return state.param.vbl; + +} + + +void s_savestate::saveState(const char* _filename) +{ + if (r_sim65816.get_state() ==IN_PAUSE) + { + // en pause, sauve immdiatement (sauf si on est en mode rewind + + if (iCurState!=-1) + { + printf("cannot save state if rewind has started"); + return ; + } + if (_filename==NULL) + { + // save to memory + state.save(1,0); + debug_printf("save state @%d \n",state->vbl); + } + else + { + savedState temp; + temp.save(1,0); + temp.writeToDisk(_filename); + } + + return ; + } + + + stateActionRequired=STATE_SAVE; + filename = _filename; + +} + + +void s_savestate::restoreState(const char* _filename) +{ + + + if (r_sim65816.get_state() ==IN_PAUSE) + { + // en pause, on peut faire le restore immdiatement (si on est pas en mode rewind) + + if (iCurState!=-1) + { + printf("cannot restore state if rewind has started"); + return ; + } + if (_filename==NULL) + { + if (!state.isEmpty()) + { + // on est revenu une position quelconque : le rewind n'a plus de sens + state.restore(); + reset_rewind(); + } + } + else + { + savedState temp; + int ret = temp.loadFromDisk(_filename); + if (ret) + { + temp.restore(); + reset_rewind(); + } + } + + return ; + } + + // prpare le save la prochaine boucle + stateActionRequired=STATE_RESTORE; + filename = _filename; + +} + + +void s_savestate::delete_state(int pos) +{ + if (states[pos].isEmpty()) return ; + + states[pos].release(); + + // dtruit les tat prsents jusqu' la prochaine clef + int deleteState=(pos +1 )%MAX_STATE; + while(deleteState!=pos) + { + if (states[deleteState].isEmpty()) break; + if (states[deleteState].fullsave) + // on a trouv la prochaine clef : on s'arrete + break; + // dtruit les cran intermdiaires + states[deleteState].release(); + debug_printf("deleting state:%d\n",deleteState); + deleteState=(deleteState +1 )%MAX_STATE; + } +} + + +void s_savestate::handleState() +{ + +// double d = get_dtime(); + #if (!defined(MAC) || defined(ACTIVEGSPLUGIN)) && !defined(ACTIVEGS_NOSAVESTATE) + + if (r_sim65816.should_emulator_terminate()) +{ + printf("ignoring handleState : emulator is quitting...\n"); + return ; + } + + iCurState = -1; + + int b = r_sim65816.get_rewind_enable(); + + int savescreen = ( b && g_sim65816.g_vbl_count >= nextScreenVBL ) ; + int s = r_sim65816.get_state(); + int fullsave = b && ( g_sim65816.g_vbl_count>=nextStateVBL || s==IN_PAUSE) ; + + if (savescreen||fullsave) + { + nextScreenVBL = g_sim65816.g_vbl_count + VBL_DELAY_BETWEEN_SCREEN ; + + delete_state(iNextState); + + // s'assure que l'on a assez de mmoire libre + int n = (iNextState +1 )%MAX_STATE; + while( 1) + { + int f = get_free_memory_size(); + if ( f> (int)savedState::maxSize*1.20 ) + break; + if (!states[n].isEmpty()) + { + debug_printf("only %dKB remaining : trying to free space\n",f/1024); + delete_state(n); + debug_printf("now %dKB!\n",get_free_memory_size()/1204); + } + n = (n +1 )%MAX_STATE; + if (n == iNextState) + { + x_fatal_exit("err: out of memory error"); + } + + } + + // capture l'tat courant + states[iNextState].save(fullsave,1); + + // positionne la prochaine place libre + iNextState = (iNextState +1 )%MAX_STATE; + + if (fullsave) + nextStateVBL = g_sim65816.g_vbl_count+NB_SCREEN_PER_STATE*VBL_DELAY_BETWEEN_SCREEN; + + } + else + g_compression.process_jobs(1); + + + switch( stateActionRequired) + { + case STATE_SAVE: + // if (filename.IsEmpty()) + if (filename[0]==0) + + { + state.save(1,0); + debug_printf("save state @ \n",state->vbl); + } + else + { + savedState temp; + temp.save(1,0); + temp.writeToDisk(filename); + } + + stateActionRequired = STATE_NONE; + break; + + case STATE_RESTORE: + // if (filename.IsEmpty()) + if (filename[0]==0) + { + if (!state.isEmpty()) + { + // on est revenu une position quelconque : le rewind n'a plus de sens + state.restore(); + reset_rewind(); + } + } + else + { + savedState temp; + int ret = temp.loadFromDisk(filename); + if (ret) + { + temp.restore(); + reset_rewind(); + } + } + + + stateActionRequired = STATE_NONE; + break ; + + case STATE_NONE: + + + // if (r_sim65816.get_state() == IN_PAUSE) + if (s == PAUSE_REQUESTED ) // !!!! L'ETAT PEUT AVOIR CHANGE DEPUIS LE DEBUT DE LA FONCTION : NE LE RELIT PAS! + { + r_sim65816.set_state(IN_PAUSE); + printf("in pause (cache=%dMB, maxStateSize=%dMB)\n",cacheSize/(1024*1024),savedState::maxSize/(1024*1024)); + + while(r_sim65816.get_state() == IN_PAUSE || ( iCurState!=-1 && !states[iCurState].isEmpty() && !states[iCurState].fullsave ) ) + { + if (r_sim65816.should_emulator_terminate()) + { + printf("aborting PAUSE mode...\n"); + r_sim65816.set_state(RUNNING); + return; + } + x_sleep(1); // 50hz + + if (targetStateSens) + { + double dtime = get_dtime(); + double delaysincelastrefresh = dtime - lastrefreshcycs; + if (delaysincelastrefresh > VBL_DELAY_BETWEEN_SCREEN/2/60.0) + { + if (targetStateSens>0) + iCurState = (iCurState +1 )%MAX_STATE; + else + iCurState = (MAX_STATE+iCurState -1 )%MAX_STATE; + + states[iCurState].display(); + + if (states[iCurState].fullsave) + targetStateSens = 0; + else + lastrefreshcycs = dtime; + + } + + } + + } + + printf("out pause\n"); + + + if (iCurState!=-1) + { + + if (!states[iCurState].isEmpty()) + states[iCurState].restore(); + + int n = (iCurState+1)%MAX_STATE; + while(n!=iNextState) + { + delete_state(n); + n = ( n + 1 ) % MAX_STATE; + } + iNextState = (iCurState+1)%MAX_STATE; + + nextScreenVBL = g_sim65816.g_vbl_count + VBL_DELAY_BETWEEN_SCREEN; + nextStateVBL = g_sim65816.g_vbl_count + NB_SCREEN_PER_STATE*VBL_DELAY_BETWEEN_SCREEN; + + } + + } + break; + } +#endif +// double delay = get_dtime() - d; +// g_graph.add_graph(1,delay,g_sim65816.g_vbl_count); + +} + + +#define CHECK_RESTORE_VAR(CLASS,VAR) \ + if ( g_##CLASS.VAR != ((s_##CLASS*)(##CLASS.data))->##VAR) \ + printf("serialization error for var "#CLASS"."#VAR" %d vs. %d",g_##CLASS.VAR,((s_##CLASS*)(##CLASS.data))->##VAR); + +#define CHECK_RESTORE_CLASS(CLASS) \ + if ( sizeof(s_##CLASS) != ((s_##CLASS*)(##CLASS.data))->_size) \ + printf("serialization error for class "#CLASS" %d vs. %d\n",sizeof(s_##CLASS),((s_##CLASS*)(##CLASS.data))->_size ); + +#define SAVE_VERSION 0x01020304 + +void serialize::save(const char*_name,void* _fileptr) +{ + + FILE* f= (FILE*)_fileptr; + fwrite(_name,1,4,f); + word32 version = SAVE_VERSION; + fwrite(&version,1,sizeof(version),f); + fwrite(&size,1,sizeof(size),f); + fwrite(data,1,size,f); + +} + +int serialize::load(const char*_name,void* _fileptr) +{ + char name[5]; + memset(name,0,5); + FILE* f= (FILE*)_fileptr; + fread(name,1,4,f); + if (strcmp(name,_name)) + { + printf("#%s save state name mismatch(%s vs %s)\n",_name,_name,name); + return 0; + } + + word32 version = 0; + fread(&version,1,sizeof(version),f); + if (version != SAVE_VERSION) + { + printf("#%s save state version mismatch(%X vs %X)\n",_name,version,SAVE_VERSION); + return 0; + } + + int nbread = fread(&size,1,sizeof(size),f); + if (nbread !=4) + { + printf("#%s save state size mismatch(%d)\n",_name,size); + return 0; + } + + fastalloc = 0; + data = (void*)malloc(size); + nbread = fread(data,1,size,f); + if (nbread!=size) + { + printf("#%s save state data mismatch(%d vs %d)\n",_name,nbread,size); + return 0; + } + + return 1; +} + +void savedState::writeToDisk(const char* _filename) +{ + if (isEmpty()) + { + printf("nothing to save"); + return ; + } + if (_filename==NULL) + { + printf("no filename"); + return ; + } + FILE* f= fopen(_filename,"wb"); + if (f==NULL) + { + printf("cannot create file"); + return ; + } + + fwrite(¶m,1,sizeof(savedStateParam),f); + + adb.save("adb ",f); + async_event.save("asyn",f); + clock.save("cloc",f); + iwm.save("iwm ",f); + moremem.save("more",f); + paddles.save("padd",f); + scc.save("scc ",f); + sim65816.save("sim6",f); + sound.save("soun",f); + video.save("vide",f); +// offscreen.save("offs",f); ne sauve pas l'offscreen + + + + + fclose(f); +} + +int savedState::loadFromDisk(const char* _filename) +{ + release(); + int ret = loadFromDiskInternal(_filename); + if (!ret) + release(); + return ret; +} + +int savedState::loadFromDiskInternal(const char* _filename) +{ + + FILE* f= fopen(_filename,"rb"); + if (f==NULL) + { + printf("cannot load %s\n",_filename); + return 0; + } + + int nbread = fread(¶m,1,sizeof(savedStateParam),f); + if (nbread!=sizeof(savedStateParam)) + { + printf("could not read savedStateParam\n"); + return 0; + } + if (param.size != sizeof(savedStateParam)) + { + printf("alignement mismatch\n"); + return 0; + } + + if (param.version != SAVEDSTATE_SIG) + { + printf("invalid sig\n"); + return 0; + } + + int ret = adb.load("adb ",f); + if (ret==0) + return 0; + + ret = async_event.load("asyn",f); + if (ret==0) + return 0; + + clock.load("cloc",f); + if (ret==0) + return 0; + + iwm.load("iwm ",f); + if (ret==0) + return 0; + + moremem.load("more",f); + if (ret==0) + return 0; + + paddles.load("padd",f); + if (ret==0) + return 0; + + scc.load("scc ",f); + if (ret==0) + return 0; + + sim65816.load("sim6",f); + if (ret==0) + return 0; + + sound.load("soun",f); + if (ret==0) + return 0; + + video.load("vide",f); + if (ret==0) + return 0; + + offscreen.release(); + /* + offscreen.load("offs",f); + if (ret==0) + return 0; + */ + + + return 1; +} + +void savedState::restore() +{ + //writeToDisk("d:\\temp\\test.bin"); + + if (isEmpty()) + { + printf("nothing to restore!\n"); + return ; + } + +#if (!defined(MAC) || defined(ACTIVEGSPLUGIN)) && !defined(ACTIVEGS_NOSAVESTATE) + + debug_printf("current state :vbl:%d dcycs:%f last_vbl_dcys:%f\n",g_sim65816.g_vbl_count,g_sim65816.g_cur_dcycs,g_sim65816.g_last_vbl_dcycs); + +#ifdef WIN32 + CHECK_RESTORE_CLASS(sim65816); + CHECK_RESTORE_VAR(sim65816,g_mem_size_total); +#endif + g_adb.in(&adb); + g_async_event.in(&async_event); + g_clock.in(&clock); + g_iwm.in(&iwm); + g_moremem.in(&moremem); + g_paddles.in(&paddles); + g_scc.in(&scc); + g_sim65816.in(&sim65816); + g_sound.in(&sound); + g_video.in(&video); + + r_sim65816.request_update_emulator_runtime_config(); + display(); + printf("restoring vbl:%d dcycs:%f last_vbl_dcys:%f\n",param.vbl,param.dcycs,g_sim65816.g_last_vbl_dcycs); + +#endif +} + +void s_savestate::init() +{ +#ifdef WIN32 + MEMORYSTATUS memStatus = {0}; + ::GlobalMemoryStatus(&memStatus); + DWORD dwTotalPhys =memStatus.dwTotalPhys; + printf("Total physical memory: %u MB\n", dwTotalPhys / (1024*1024) ); +#endif + + reset_rewind(); + + stateActionRequired=STATE_NONE; + state.release(); + +#ifdef CACHE_SIZE + cache = (byte*)malloc(CACHE_SIZE); + printf("Nb State = %d\n",MAX_STATE); + printf("Max replay = %fs\n",(float)MAX_STATE/60.0); + printf("Key duration = %fs\n",(float)(NB_SCREEN_PER_STATE*VBL_DELAY_BETWEEN_SCREEN)/60.0); +#else + cache=NULL; +#endif + cachefree = 0; + cachepos = 0; + cacheSize= 0; + + +} + + +void* s_savestate::x_free(void* _data,int _size, int _fastalloc) +{ + if (!cache || !_fastalloc) + { + free(_data); + return NULL; + } + + int pos = (intptr_t)_data - (intptr_t)cache; + + // xxxx#######xxFREEE....POS##### + + //printf("freeing :%d (size:%d)\n",pos,_size); + // POSxxxxxx######xxxxFREEE + + if (cachepos<=pos || cachepos>cachefree) + { + cachepos = pos + _size; + // printf("newpos:%d\n",cachepos); + } + + cacheSize -= _size; + return NULL; +} + +int s_savestate::get_free_memory_size() +{ +#ifdef CACHE_SIZE + int p = cachepos; + int f = cachefree; + + if (f>=p) + // #####POS.....FREE####### + return MAX(p,CACHE_SIZE-f); + else + // ....FREE#####POS... + return p-f; +#else + return 0; +#endif +} + +void* x_free(void* _data,int _size, int _fastalloc) +{ + return g_savestate.x_free(_data,_size,_fastalloc); + +} + +void* s_savestate::x_malloc(int _size, int _fastalloc) +{ + + if (!cache || !_fastalloc) + { + void* p = (void*)malloc(_size); + if (!p) + x_fatal_exit("Out of Memory Error : relaunch with rewind mode off"); + cacheSize+=_size; + return p; + } +#ifndef CACHE_SIZE + // ne doit jamais arriver + return NULL; +#else + int c = cachefree; + + if (c >= cachepos) + { + // ......POS#####################FREE......... + + if (c+_size > CACHE_SIZE) + { + // on boucle + c = 0; + // FREEE......POS#####################00000000 + if (c+_size > cachepos) + { + printf("x_malloc : out of memory error\n"); + return NULL; + } + } + else + { + // ok + } + } + else + { + // ######FREE......POS########################## + + if (c+_size < cachepos) + { + // il y a de la place entre free & pos = on l'utilise + // ok + } + else + { + printf("x_malloc: out of memory error\n"); + return NULL; + + } + } + + cachefree = c+_size; + cacheSize += _size; +// printf("alloc size:%d ptr:%d (cachepos:%d cachefree:%d)\n",_size,c,cachepos,cachefree); + return &cache[c]; +#endif +} + +void* x_malloc(int _size, int _fastalloc) +{ + return g_savestate.x_malloc(_size,_fastalloc); + +} +void* x_realloc(void* ptr,int _newsize, int _formersize) +{ + printf("x_realloc not implemented\n"); + return ptr; + /* + void*p =(void*)x_malloc(_newsize); + memcpy(p,ptr,_newsize); + x_free(ptr,_formersize); + return p; + */ +} + +void s_savestate::reset_state() +{ + state.release(); +} + +void s_savestate::reset_rewind() +{ + printf("reset_rewind\n"); + for(int i=0;i 1100) + #pragma component(browser, off, references, "CStdString") + #pragma warning (disable : 4290) // C++ Exception Specification ignored + #pragma warning (disable : 4127) // Conditional expression is constant + #pragma warning (disable : 4097) // typedef name used as synonym for class name + #if (_MSC_VER >= 1400) // AR: VS2005 and VCExpress + #define _SCL_SECURE_NO_DEPRECATE + #ifndef _INC_CRTDEFS // AR: should be defined before inclusion of + #ifndef _CRT_SECURE_NO_DEPRECATE // OG + #define _CRT_SECURE_NO_DEPRECATE + #endif + #endif + #endif +#endif + +// Borland warnings to turn off + +#ifdef __BORLANDC__ + #pragma option push -w-inl +// #pragma warn -inl // Turn off inline function warnings +#endif + +// SS_IS_INTRESOURCE +// ----------------- +// A copy of IS_INTRESOURCE from VC7. Because old VC6 version of winuser.h +// doesn't have this. + +#define SS_IS_INTRESOURCE(_r) (false) + +#if !defined (SS_ANSI) && defined(_MSC_VER) + #undef SS_IS_INTRESOURCE + #if defined(_WIN64) + #define SS_IS_INTRESOURCE(_r) (((unsigned __int64)(_r) >> 16) == 0) + #else + #define SS_IS_INTRESOURCE(_r) (((unsigned long)(_r) >> 16) == 0) + #endif +#endif + + +// MACRO: SS_UNSIGNED +// ------------------ +// This macro causes the addition of a constructor and assignment operator +// which take unsigned characters. CString has such functions and in order +// to provide maximum CString-compatability, this code needs them as well. +// In practice you will likely never need these functions... + +//#define SS_UNSIGNED + +#if defined(SS_ALLOW_UNSIGNED_CHARS) || defined(_WTL_VER) // AR + #define SS_UNSIGNED +#endif + +// MACRO: SS_SAFE_FORMAT +// --------------------- +// This macro provides limited compatability with a questionable CString +// "feature". You can define it in order to avoid a common problem that +// people encounter when switching from CString to CStdString. +// +// To illustrate the problem -- With CString, you can do this: +// +// CString sName("Joe"); +// CString sTmp; +// sTmp.Format("My name is %s", sName); // WORKS! +// +// However if you were to try this with CStdString, your program would +// crash. +// +// CStdString sName("Joe"); +// CStdString sTmp; +// sTmp.Format("My name is %s", sName); // CRASHES! +// +// You must explicitly call c_str() or cast the object to the proper type +// +// sTmp.Format("My name is %s", sName.c_str()); // WORKS! +// sTmp.Format("My name is %s", static_cast(sName));// WORKS! +// sTmp.Format("My name is %s", (PCSTR)sName); // WORKS! +// +// This is because it is illegal to pass anything but a POD type as a +// variadic argument to a variadic function (i.e. as one of the "..." +// arguments). The type const char* is a POD type. The type CStdString +// is not. Of course, neither is the type CString, but CString lets you do +// it anyway due to the way they laid out the class in binary. I have no +// control over this in CStdString since I derive from whatever +// implementation of basic_string is available. +// +// However if you have legacy code (which does this) that you want to take +// out of the MFC world and you don't want to rewrite all your calls to +// Format(), then you can define this flag and it will no longer crash. +// +// Note however that this ONLY works for Format(), not sprintf, fprintf, +// etc. If you pass a CStdString object to one of those functions, your +// program will crash. Not much I can do to get around this, short of +// writing substitutes for those functions as well. + +#define SS_SAFE_FORMAT // use new template style Format() function + + +// MACRO: SS_NO_IMPLICIT_CAST +// -------------------------- +// Some people don't like the implicit cast to const char* (or rather to +// const CT*) that CStdString (and MFC's CString) provide. That was the +// whole reason I created this class in the first place, but hey, whatever +// bakes your cake. Just #define this macro to get rid of the the implicit +// cast. + +//#define SS_NO_IMPLICIT_CAST // gets rid of operator const CT*() + + +// MACRO: SS_NO_REFCOUNT +// --------------------- +// turns off reference counting at the assignment level. Only needed +// for the version of basic_string<> that comes with Visual C++ versions +// 6.0 or earlier, and only then in some heavily multithreaded scenarios. +// Uncomment it if you feel you need it. + +//#define SS_NO_REFCOUNT + +// MACRO: SS_WIN32 +// --------------- +// When this flag is set, we are building code for the Win32 platform and +// may use Win32 specific functions (such as LoadString). This gives us +// a couple of nice extras for the code. +// +// Obviously, Microsoft's is not the only compiler available for Win32 out +// there. So I can't just check to see if _MSC_VER is defined to detect +// if I'm building on Win32. So for now, if you use MS Visual C++ or +// Borland's compiler, I turn this on. Otherwise you may turn it on +// yourself, if you prefer + +#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(_WIN32) +//OG #define SS_WIN32 +#endif + +// MACRO: SS_ANSI +// -------------- +// When this macro is defined, the code attempts only to use ANSI/ISO +// standard library functions to do it's work. It will NOT attempt to use +// any Win32 of Visual C++ specific functions -- even if they are +// available. You may define this flag yourself to prevent any Win32 +// of VC++ specific functions from being called. + +// If we're not on Win32, we MUST use an ANSI build + +#ifndef SS_WIN32 + #if !defined(SS_NO_ANSI) + #define SS_ANSI + #endif +#endif + +// MACRO: SS_ALLOCA +// ---------------- +// Some implementations of the Standard C Library have a non-standard +// function known as alloca(). This functions allows one to allocate a +// variable amount of memory on the stack. It is needed to implement +// the ASCII/MBCS conversion macros. +// +// I wanted to find some way to determine automatically if alloca() is +// available on this platform via compiler flags but that is asking for +// trouble. The crude test presented here will likely need fixing on +// other platforms. Therefore I'll leave it up to you to fiddle with +// this test to determine if it exists. Just make sure SS_ALLOCA is or +// is not defined as appropriate and you control this feature. + +#if defined(_MSC_VER) && !defined(SS_ANSI) + #define SS_ALLOCA +#endif + + +// MACRO: SS_MBCS +// -------------- +// Setting this macro means you are using MBCS characters. In MSVC builds, +// this macro gets set automatically by detection of the preprocessor flag +// _MBCS. For other platforms you may set it manually if you wish. The +// only effect it currently has is to cause the allocation of more space +// for wchar_t --> char conversions. +// Note that MBCS does not mean UNICODE. +// +// #define SS_MBCS +// + +#ifdef _MBCS + #define SS_MBCS +#endif + + +// MACRO SS_NO_LOCALE +// ------------------ +// If your implementation of the Standard C++ Library lacks the header, +// you can #define this macro to make your code build properly. Note that this +// is some of my newest code and frankly I'm not very sure of it, though it does +// pass my unit tests. + +// Compiler Error regarding _UNICODE and UNICODE +// ----------------------------------------------- +// Microsoft header files are screwy. Sometimes they depend on a preprocessor +// flag named "_UNICODE". Other times they check "UNICODE" (note the lack of +// leading underscore in the second version". In several places, they silently +// "synchronize" these two flags this by defining one of the other was defined. +// In older version of this header, I used to try to do the same thing. +// +// However experience has taught me that this is a bad idea. You get weird +// compiler errors that seem to indicate things like LPWSTR and LPTSTR not being +// equivalent in UNICODE builds, stuff like that (when they MUST be in a proper +// UNICODE build). You end up scratching your head and saying, "But that HAS +// to compile!". +// +// So what should you do if you get this error? +// +// Make sure that both macros (_UNICODE and UNICODE) are defined before this +// file is included. You can do that by either +// +// a) defining both yourself before any files get included +// b) including the proper MS headers in the proper order +// c) including this file before any other file, uncommenting +// the #defines below, and commenting out the #errors +// +// Personally I recommend solution a) but it's your call. + +#ifdef _MSC_VER + #if defined (_UNICODE) && !defined (UNICODE) + #error UNICODE defined but not UNICODE + // #define UNICODE // no longer silently fix this + #endif + #if defined (UNICODE) && !defined (_UNICODE) + #error Warning, UNICODE defined but not _UNICODE + // #define _UNICODE // no longer silently fix this + #endif +#endif + + +// ----------------------------------------------------------------------------- +// MIN and MAX. The Standard C++ template versions go by so many names (at +// at least in the MS implementation) that you never know what's available +// ----------------------------------------------------------------------------- +template +inline const Type& SSMIN(const Type& arg1, const Type& arg2) +{ + return arg2 < arg1 ? arg2 : arg1; +} +template +inline const Type& SSMAX(const Type& arg1, const Type& arg2) +{ + return arg2 > arg1 ? arg2 : arg1; +} + +// If they have not #included W32Base.h (part of my W32 utility library) then +// we need to define some stuff. Otherwise, this is all defined there. + +#if !defined(W32BASE_H) + + // If they want us to use only standard C++ stuff (no Win32 stuff) + + #ifdef SS_ANSI + + // On Win32 we have TCHAR.H so just include it. This is NOT violating + // the spirit of SS_ANSI as we are not calling any Win32 functions here. + + #ifdef SS_WIN32 + + #include + #include + #ifndef STRICT + #define STRICT + #endif + + // ... but on non-Win32 platforms, we must #define the types we need. + + #else + + typedef const char* PCSTR; + typedef char* PSTR; + typedef const wchar_t* PCWSTR; + typedef wchar_t* PWSTR; + #ifdef UNICODE + typedef wchar_t TCHAR; + #else + typedef char TCHAR; + #endif + typedef wchar_t OLECHAR; + + #endif // #ifndef _WIN32 + + + // Make sure ASSERT and verify are defined using only ANSI stuff + + #ifndef ASSERT + #include +#ifndef ASSERT + #define ASSERT(f) assert((f)) +#endif +#endif + #ifndef VERIFY + #ifdef _DEBUG + #define VERIFY(x) ASSERT((x)) + #else + #define VERIFY(x) x + #endif + #endif + + #else // ...else SS_ANSI is NOT defined + + #include + #include + #ifndef STRICT + #define STRICT + #endif + + // Make sure ASSERT and verify are defined + + #ifndef ASSERT + #include + #define ASSERT(f) _ASSERTE((f)) + #endif + #ifndef VERIFY + #ifdef _DEBUG + #define VERIFY(x) ASSERT((x)) + #else + #define VERIFY(x) x + #endif + #endif + + #endif // #ifdef SS_ANSI + + #ifndef UNUSED + #define UNUSED(x) x + #endif + +#endif // #ifndef W32BASE_H + +// Standard headers needed + +#include // basic_string +#include // for_each, etc. +#include // for StdStringLessNoCase, et al +#ifndef SS_NO_LOCALE + #ifdef _WIN32_WCE // AR + #define SS_NO_LOCALE + #else + #include // for various facets + #endif +#endif + +// If this is a recent enough version of VC include comdef.h, so we can write +// member functions to deal with COM types & compiler support classes e.g. +// _bstr_t + +#if defined (_MSC_VER) && (_MSC_VER >= 1100) + #include + #define SS_INC_COMDEF // signal that we #included MS comdef.h file + #define STDSTRING_INC_COMDEF + #define SS_NOTHROW __declspec(nothrow) +#else + #define SS_NOTHROW +#endif + +#ifndef TRACE + #define TRACE_DEFINED_HERE + #define TRACE +#endif + +// Microsoft defines PCSTR, PCWSTR, etc, but no PCTSTR. I hate to use the +// versions with the "L" in front of them because that's a leftover from Win 16 +// days, even though it evaluates to the same thing. Therefore, Define a PCSTR +// as an LPCTSTR. + +#if !defined(PCTSTR) && !defined(PCTSTR_DEFINED) + typedef const TCHAR* PCTSTR; + #define PCTSTR_DEFINED +#endif + +#if !defined(PCOLESTR) && !defined(PCOLESTR_DEFINED) + typedef const OLECHAR* PCOLESTR; + #define PCOLESTR_DEFINED +#endif + +#if !defined(POLESTR) && !defined(POLESTR_DEFINED) + typedef OLECHAR* POLESTR; + #define POLESTR_DEFINED +#endif + +#if !defined(PCUSTR) && !defined(PCUSTR_DEFINED) + typedef const unsigned char* PCUSTR; + typedef unsigned char* PUSTR; + #define PCUSTR_DEFINED +#endif + + +// SGI compiler 7.3 doesnt know these types - oh and btw, remember to use +// -LANG:std in the CXX Flags +#if defined(__sgi) + typedef unsigned long DWORD; + typedef void * LPCVOID; +#endif + + +// SS_USE_FACET macro and why we need it: +// +// Since I'm a good little Standard C++ programmer, I use locales. Thus, I +// need to make use of the use_facet<> template function here. Unfortunately, +// this need is complicated by the fact the MS' implementation of the Standard +// C++ Library has a non-standard version of use_facet that takes more +// arguments than the standard dictates. Since I'm trying to write CStdString +// to work with any version of the Standard library, this presents a problem. +// +// The upshot of this is that I can't do 'use_facet' directly. The MS' docs +// tell me that I have to use a macro, _USE() instead. Since _USE obviously +// won't be available in other implementations, this means that I have to write +// my OWN macro -- SS_USE_FACET -- that evaluates either to _USE or to the +// standard, use_facet. +// +// If you are having trouble with the SS_USE_FACET macro, in your implementation +// of the Standard C++ Library, you can define your own version of SS_USE_FACET. + +#ifndef schMSG + #define schSTR(x) #x + #define schSTR2(x) schSTR(x) + #define schMSG(desc) message(__FILE__ "(" schSTR2(__LINE__) "):" #desc) +#endif + +#ifndef SS_USE_FACET + + // STLPort #defines a macro (__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS) for + // all MSVC builds, erroneously in my opinion. It causes problems for + // my SS_ANSI builds. In my code, I always comment out that line. You'll + // find it in \stlport\config\stl_msvc.h + + #if defined(__SGI_STL_PORT) && (__SGI_STL_PORT >= 0x400 ) + + #if defined(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS) && defined(_MSC_VER) + #ifdef SS_ANSI + #pragma schMSG(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS defined!!) + #endif + #endif + #define SS_USE_FACET(loc, fac) std::use_facet(loc) + + #elif defined(_MSC_VER ) + + #define SS_USE_FACET(loc, fac) std::_USE(loc, fac) + + // ...and + #elif defined(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE) + + #define SS_USE_FACET(loc, fac) std::use_facet(loc, (fac*)0) + + #else + + #define SS_USE_FACET(loc, fac) std::use_facet(loc) + + #endif + +#endif + +// ============================================================================= +// UNICODE/MBCS conversion macros. Made to work just like the MFC/ATL ones. +// ============================================================================= + +#include // Added to Std Library with Amendment #1. + +// First define the conversion helper functions. We define these regardless of +// any preprocessor macro settings since their names won't collide. + +// Not sure if we need all these headers. I believe ANSI says we do. + +#include +#include +#include +#include +#include +#ifndef va_start + #include +#endif + + +#ifdef SS_NO_LOCALE + + #if defined(_WIN32) + + inline PWSTR StdCodeCvt(PWSTR pDstW, int nDst, PCSTR pSrcA, int nSrc, + UINT acp=CP_ACP) + { + ASSERT(0 != pSrcA); + ASSERT(0 != pDstW); + pDstW[0] = '\0'; + MultiByteToWideChar(acp, 0, pSrcA, nSrc, pDstW, nDst); + return pDstW; + } + inline PWSTR StdCodeCvt(PWSTR pDstW, int nDst, PCUSTR pSrcA, int nSrc, + UINT acp=CP_ACP) + { + return StdCodeCvt(pDstW, nDst, (PCSTR)pSrcA, nSrc, acp); + } + + inline PSTR StdCodeCvt(PSTR pDstA, int nDst, PCWSTR pSrcW, int nSrc, + UINT acp=CP_ACP) + { + ASSERT(0 != pDstA); + ASSERT(0 != pSrcW); + pDstA[0] = '\0'; + WideCharToMultiByte(acp, 0, pSrcW, nSrc, pDstA, nDst, 0, 0); + return pDstA; + } + inline PUSTR StdCodeCvt(PUSTR pDstA, int nDst, PCWSTR pSrcW, int nSrc, + UINT acp=CP_ACP) + { + return (PUSTR)StdCodeCvt((PSTR)pDstA, nDst, pSrcW, nSrc, acp); + } + #else + #endif + +#else + + // StdCodeCvt - made to look like Win32 functions WideCharToMultiByte + // and MultiByteToWideChar but uses locales in SS_ANSI + // builds. There are a number of overloads. + // First argument is the destination buffer. + // Second argument is the source buffer + //#if defined (SS_ANSI) || !defined (SS_WIN32) + + // 'SSCodeCvt' - shorthand name for the codecvt facet we use + + typedef std::codecvt SSCodeCvt; + + inline PWSTR StdCodeCvt(PWSTR pDstW, int nDst, PCSTR pSrcA, int nSrc, + const std::locale& loc=std::locale()) + { + ASSERT(0 != pSrcA); + ASSERT(0 != pDstW); + + pDstW[0] = '\0'; + + if ( nSrc > 0 ) + { + PCSTR pNextSrcA = pSrcA; + PWSTR pNextDstW = pDstW; + SSCodeCvt::result res = SSCodeCvt::ok; + const SSCodeCvt& conv = SS_USE_FACET(loc, SSCodeCvt); + SSCodeCvt::state_type st= { 0 }; + res = conv.in(st, + pSrcA, pSrcA + nSrc, pNextSrcA, + pDstW, pDstW + nDst, pNextDstW); + + ASSERT(SSCodeCvt::ok == res); + ASSERT(SSCodeCvt::error != res); + ASSERT(pNextDstW >= pDstW); + ASSERT(pNextSrcA >= pSrcA); + + // Null terminate the converted string + + if ( pNextDstW - pDstW > nDst ) + *(pDstW + nDst) = '\0'; + else + *pNextDstW = '\0'; + } + return pDstW; + } + inline PWSTR StdCodeCvt(PWSTR pDstW, int nDst, PCUSTR pSrcA, int nSrc, + const std::locale& loc=std::locale()) + { + return StdCodeCvt(pDstW, nDst, (PCSTR)pSrcA, nSrc, loc); + } + + inline PSTR StdCodeCvt(PSTR pDstA, int nDst, PCWSTR pSrcW, int nSrc, + const std::locale& loc=std::locale()) + { + ASSERT(0 != pDstA); + ASSERT(0 != pSrcW); + + pDstA[0] = '\0'; + + if ( nSrc > 0 ) + { + PSTR pNextDstA = pDstA; + PCWSTR pNextSrcW = pSrcW; + SSCodeCvt::result res = SSCodeCvt::ok; + const SSCodeCvt& conv = SS_USE_FACET(loc, SSCodeCvt); + SSCodeCvt::state_type st= { 0 }; + res = conv.out(st, + pSrcW, pSrcW + nSrc, pNextSrcW, + pDstA, pDstA + nDst, pNextDstA); + + ASSERT(SSCodeCvt::error != res); + ASSERT(SSCodeCvt::ok == res); // strict, comment out for sanity + ASSERT(pNextDstA >= pDstA); + ASSERT(pNextSrcW >= pSrcW); + + // Null terminate the converted string + + if ( pNextDstA - pDstA > nDst ) + *(pDstA + nDst) = '\0'; + else + *pNextDstA = '\0'; + } + return pDstA; + } + + inline PUSTR StdCodeCvt(PUSTR pDstA, int nDst, PCWSTR pSrcW, int nSrc, + const std::locale& loc=std::locale()) + { + return (PUSTR)StdCodeCvt((PSTR)pDstA, nDst, pSrcW, nSrc, loc); + } + +#endif + + + +// Unicode/MBCS conversion macros are only available on implementations of +// the "C" library that have the non-standard _alloca function. As far as I +// know that's only Microsoft's though I've heard that the function exists +// elsewhere. + +#if defined(SS_ALLOCA) && !defined SS_NO_CONVERSION + + #include // needed for _alloca + + // Define our conversion macros to look exactly like Microsoft's to + // facilitate using this stuff both with and without MFC/ATL + + #ifdef _CONVERSION_USES_THREAD_LOCALE + + #ifndef _DEBUG + #define SSCVT int _cvt; _cvt; UINT _acp=GetACP(); \ + _acp; PCWSTR _pw; _pw; PCSTR _pa; _pa + #else + #define SSCVT int _cvt = 0; _cvt; UINT _acp=GetACP();\ + _acp; PCWSTR _pw=0; _pw; PCSTR _pa=0; _pa + #endif + #define SSA2W(pa) (\ + ((_pa = pa) == 0) ? 0 : (\ + _cvt = (sslen(_pa)),\ + StdCodeCvt((PWSTR) _alloca((_cvt+1)*2), (_cvt+1)*2, \ + _pa, _cvt, _acp))) + #define SSW2A(pw) (\ + ((_pw = pw) == 0) ? 0 : (\ + _cvt = sslen(_pw), \ + StdCodeCvt((LPSTR) _alloca((_cvt+1)*2), (_cvt+1)*2, \ + _pw, _cvt, _acp))) + #else + + #ifndef _DEBUG + #define SSCVT int _cvt; _cvt; UINT _acp=CP_ACP; _acp;\ + PCWSTR _pw; _pw; PCSTR _pa; _pa + #else + #define SSCVT int _cvt = 0; _cvt; UINT _acp=CP_ACP; \ + _acp; PCWSTR _pw=0; _pw; PCSTR _pa=0; _pa + #endif + #define SSA2W(pa) (\ + ((_pa = pa) == 0) ? 0 : (\ + _cvt = (sslen(_pa)),\ + StdCodeCvt((PWSTR) _alloca((_cvt+1)*2), (_cvt+1)*2, \ + _pa, _cvt))) + #define SSW2A(pw) (\ + ((_pw = pw) == 0) ? 0 : (\ + _cvt = (sslen(_pw)),\ + StdCodeCvt((LPSTR) _alloca((_cvt+1)*2), (_cvt+1)*2, \ + _pw, _cvt))) + #endif + + #define SSA2CW(pa) ((PCWSTR)SSA2W((pa))) + #define SSW2CA(pw) ((PCSTR)SSW2A((pw))) + + #ifdef UNICODE + #define SST2A SSW2A + #define SSA2T SSA2W + #define SST2CA SSW2CA + #define SSA2CT SSA2CW + // (Did you get a compiler error here about not being able to convert + // PTSTR into PWSTR? Then your _UNICODE and UNICODE flags are messed + // up. Best bet: #define BOTH macros before including any MS headers.) + inline PWSTR SST2W(PTSTR p) { return p; } + inline PTSTR SSW2T(PWSTR p) { return p; } + inline PCWSTR SST2CW(PCTSTR p) { return p; } + inline PCTSTR SSW2CT(PCWSTR p) { return p; } + #else + #define SST2W SSA2W + #define SSW2T SSW2A + #define SST2CW SSA2CW + #define SSW2CT SSW2CA + inline PSTR SST2A(PTSTR p) { return p; } + inline PTSTR SSA2T(PSTR p) { return p; } + inline PCSTR SST2CA(PCTSTR p) { return p; } + inline PCTSTR SSA2CT(PCSTR p) { return p; } + #endif // #ifdef UNICODE + + #if defined(UNICODE) + // in these cases the default (TCHAR) is the same as OLECHAR + inline PCOLESTR SST2COLE(PCTSTR p) { return p; } + inline PCTSTR SSOLE2CT(PCOLESTR p) { return p; } + inline POLESTR SST2OLE(PTSTR p) { return p; } + inline PTSTR SSOLE2T(POLESTR p) { return p; } + #elif defined(OLE2ANSI) + // in these cases the default (TCHAR) is the same as OLECHAR + inline PCOLESTR SST2COLE(PCTSTR p) { return p; } + inline PCTSTR SSOLE2CT(PCOLESTR p) { return p; } + inline POLESTR SST2OLE(PTSTR p) { return p; } + inline PTSTR SSOLE2T(POLESTR p) { return p; } + #else + //CharNextW doesn't work on Win95 so we use this + #define SST2COLE(pa) SSA2CW((pa)) + #define SST2OLE(pa) SSA2W((pa)) + #define SSOLE2CT(po) SSW2CA((po)) + #define SSOLE2T(po) SSW2A((po)) + #endif + + #ifdef OLE2ANSI + #define SSW2OLE SSW2A + #define SSOLE2W SSA2W + #define SSW2COLE SSW2CA + #define SSOLE2CW SSA2CW + inline POLESTR SSA2OLE(PSTR p) { return p; } + inline PSTR SSOLE2A(POLESTR p) { return p; } + inline PCOLESTR SSA2COLE(PCSTR p) { return p; } + inline PCSTR SSOLE2CA(PCOLESTR p){ return p; } + #else + #define SSA2OLE SSA2W + #define SSOLE2A SSW2A + #define SSA2COLE SSA2CW + #define SSOLE2CA SSW2CA + inline POLESTR SSW2OLE(PWSTR p) { return p; } + inline PWSTR SSOLE2W(POLESTR p) { return p; } + inline PCOLESTR SSW2COLE(PCWSTR p) { return p; } + inline PCWSTR SSOLE2CW(PCOLESTR p){ return p; } + #endif + + // Above we've defined macros that look like MS' but all have + // an 'SS' prefix. Now we need the real macros. We'll either + // get them from the macros above or from MFC/ATL. + + #if defined (USES_CONVERSION) + + #define _NO_STDCONVERSION // just to be consistent + + #else + + #ifdef _MFC_VER + + #include + #define _NO_STDCONVERSION // just to be consistent + + #else + + #define USES_CONVERSION SSCVT + #define A2CW SSA2CW + #define W2CA SSW2CA + #define T2A SST2A + #define A2T SSA2T + #define T2W SST2W + #define W2T SSW2T + #define T2CA SST2CA + #define A2CT SSA2CT + #define T2CW SST2CW + #define W2CT SSW2CT + #define ocslen sslen + #define ocscpy sscpy + #define T2COLE SST2COLE + #define OLE2CT SSOLE2CT + #define T2OLE SST2COLE + #define OLE2T SSOLE2CT + #define A2OLE SSA2OLE + #define OLE2A SSOLE2A + #define W2OLE SSW2OLE + #define OLE2W SSOLE2W + #define A2COLE SSA2COLE + #define OLE2CA SSOLE2CA + #define W2COLE SSW2COLE + #define OLE2CW SSOLE2CW + + #endif // #ifdef _MFC_VER + #endif // #ifndef USES_CONVERSION +#endif // #ifndef SS_NO_CONVERSION + +// Define ostring - generic name for std::basic_string + +#if !defined(ostring) && !defined(OSTRING_DEFINED) + typedef std::basic_string ostring; + #define OSTRING_DEFINED +#endif + +// StdCodeCvt when there's no conversion to be done +inline PSTR StdCodeCvt(PSTR pDst, int nDst, PCSTR pSrc, int nSrc) +{ + int nChars = SSMIN(nSrc, nDst); + + if ( nChars > 0 ) + { + pDst[0] = '\0'; + std::basic_string::traits_type::copy(pDst, pSrc, nChars); +// std::char_traits::copy(pDst, pSrc, nChars); + pDst[nChars] = '\0'; + } + + return pDst; +} +inline PSTR StdCodeCvt(PSTR pDst, int nDst, PCUSTR pSrc, int nSrc) +{ + return StdCodeCvt(pDst, nDst, (PCSTR)pSrc, nSrc); +} +inline PUSTR StdCodeCvt(PUSTR pDst, int nDst, PCSTR pSrc, int nSrc) +{ + return (PUSTR)StdCodeCvt((PSTR)pDst, nDst, pSrc, nSrc); +} + +inline PWSTR StdCodeCvt(PWSTR pDst, int nDst, PCWSTR pSrc, int nSrc) +{ + int nChars = SSMIN(nSrc, nDst); + + if ( nChars > 0 ) + { + pDst[0] = '\0'; + std::basic_string::traits_type::copy(pDst, pSrc, nChars); +// std::char_traits::copy(pDst, pSrc, nChars); + pDst[nChars] = '\0'; + } + + return pDst; +} + + +// Define tstring -- generic name for std::basic_string + +#if !defined(tstring) && !defined(TSTRING_DEFINED) + typedef std::basic_string tstring; + #define TSTRING_DEFINED +#endif + +// a very shorthand way of applying the fix for KB problem Q172398 +// (basic_string assignment bug) + +#if defined ( _MSC_VER ) && ( _MSC_VER < 1200 ) + #define Q172398(x) (x).erase() +#else + #define Q172398(x) +#endif + +// ============================================================================= +// INLINE FUNCTIONS ON WHICH CSTDSTRING RELIES +// +// Usually for generic text mapping, we rely on preprocessor macro definitions +// to map to string functions. However the CStdStr<> template cannot use +// macro-based generic text mappings because its character types do not get +// resolved until template processing which comes AFTER macro processing. In +// other words, the preprocessor macro UNICODE is of little help to us in the +// CStdStr template +// +// Therefore, to keep the CStdStr declaration simple, we have these inline +// functions. The template calls them often. Since they are inline (and NOT +// exported when this is built as a DLL), they will probably be resolved away +// to nothing. +// +// Without these functions, the CStdStr<> template would probably have to broken +// out into two, almost identical classes. Either that or it would be a huge, +// convoluted mess, with tons of "if" statements all over the place checking the +// size of template parameter CT. +// ============================================================================= + +#ifdef SS_NO_LOCALE + + // -------------------------------------------------------------------------- + // Win32 GetStringTypeEx wrappers + // -------------------------------------------------------------------------- + inline bool wsGetStringType(LCID lc, DWORD dwT, PCSTR pS, int nSize, + WORD* pWd) + { + return FALSE; + //OG return FALSE != GetStringTypeExA(lc, dwT, pS, nSize, pWd); + } + inline bool wsGetStringType(LCID lc, DWORD dwT, PCWSTR pS, int nSize, + WORD* pWd) + { + return FALSE != GetStringTypeExW(lc, dwT, pS, nSize, pWd); + } + + + template + inline bool ssisspace (CT t) + { + WORD toYourMother; + return wsGetStringType(GetThreadLocale(), CT_CTYPE1, &t, 1, &toYourMother) + && 0 != (C1_BLANK & toYourMother); + } + + +#endif + +// If they defined SS_NO_REFCOUNT, then we must convert all assignments + +#if defined (_MSC_VER) && (_MSC_VER < 1300) + #ifdef SS_NO_REFCOUNT + #define SSREF(x) (x).c_str() + #else + #define SSREF(x) (x) + #endif +#else + #define SSREF(x) (x) +#endif + +// ----------------------------------------------------------------------------- +// sslen: strlen/wcslen wrappers +// ----------------------------------------------------------------------------- +template inline int sslen(const CT* pT) +{ + return 0 == pT ? 0 : (int)std::basic_string::traits_type::length(pT); +// return 0 == pT ? 0 : std::char_traits::length(pT); +} +inline SS_NOTHROW int sslen(const std::string& s) +{ + return static_cast(s.length()); +} +inline SS_NOTHROW int sslen(const std::wstring& s) +{ + return static_cast(s.length()); +} + +// ----------------------------------------------------------------------------- +// sstolower/sstoupper -- convert characters to upper/lower case +// ----------------------------------------------------------------------------- + +#ifdef SS_NO_LOCALE + inline char sstoupper(char ch) { return (char)::toupper(ch); } + inline wchar_t sstoupper(wchar_t ch){ return (wchar_t)::towupper(ch); } + inline char sstolower(char ch) { return (char)::tolower(ch); } + inline wchar_t sstolower(wchar_t ch){ return (wchar_t)::tolower(ch); } +#else + template + inline CT sstolower(const CT& t, const std::locale& loc = std::locale()) + { + return std::tolower(t, loc); + } + template + inline CT sstoupper(const CT& t, const std::locale& loc = std::locale()) + { + return std::toupper(t, loc); + } +#endif + +// ----------------------------------------------------------------------------- +// ssasn: assignment functions -- assign "sSrc" to "sDst" +// ----------------------------------------------------------------------------- +typedef std::string::size_type SS_SIZETYPE; // just for shorthand, really +typedef std::string::pointer SS_PTRTYPE; +typedef std::wstring::size_type SW_SIZETYPE; +typedef std::wstring::pointer SW_PTRTYPE; + +inline void ssasn(std::string& sDst, const std::string& sSrc) +{ + if ( sDst.c_str() != sSrc.c_str() ) + { + sDst.erase(); + sDst.assign(SSREF(sSrc)); + } +} +inline void ssasn(std::string& sDst, PCSTR pA) +{ + // Watch out for NULLs, as always. + + if ( 0 == pA ) + { + sDst.erase(); + } + + // If pA actually points to part of sDst, we must NOT erase(), but + // rather take a substring + + else if ( pA >= sDst.c_str() && pA <= sDst.c_str() + sDst.size() ) + { + sDst =sDst.substr(static_cast(pA-sDst.c_str())); + } + + // Otherwise (most cases) apply the assignment bug fix, if applicable + // and do the assignment + + else + { + Q172398(sDst); + sDst.assign(pA); + } +} +inline void ssasn(std::string& sDst, const std::wstring& sSrc) +{ + if ( sSrc.empty() ) + { + sDst.erase(); + } + else + { + int nDst = static_cast(sSrc.size()); + + // In MBCS builds, pad the buffer to account for the possibility of + // some 3 byte characters. Not perfect but should get most cases. + +#ifdef SS_MBCS + nDst = static_cast(static_cast(nDst) * 1.3); +#endif + + sDst.resize(nDst+1); + +#ifdef SS_MBCS + PCSTR szCvt = StdCodeCvt(const_cast(sDst.data()), nDst, + sSrc.c_str(), static_cast(sSrc.size())); + + // In MBCS builds, we don't know how long the destination string will be. + + sDst.resize(sslen(szCvt)); +#else +// szCvt; + sDst.resize(sSrc.size()); +#endif + } +} +inline void ssasn(std::string& sDst, PCWSTR pW) +{ + int nSrc = sslen(pW); + if ( nSrc > 0 ) + { + int nSrc = sslen(pW); + int nDst = nSrc; + + // In MBCS builds, pad the buffer to account for the possibility of + // some 3 byte characters. Not perfect but should get most cases. + +#ifdef SS_MBCS + nDst = static_cast(static_cast(nDst) * 1.3); +#endif + + sDst.resize(nDst + 1); +#ifdef SS_MBCS + PCSTR szCvt = StdCodeCvt(const_cast(sDst.data()), nDst, + pW, nSrc); + + // In MBCS builds, we don't know how long the destination string will be. + + + sDst.resize(sslen(szCvt)); +#else + sDst.resize(nDst); + // szCvt; +#endif + } + else + { + sDst.erase(); + } +} +#ifdef _DEBUG +inline void ssasn(std::string& sDst, const int nNull) +{ + ASSERT(nNull==0); +#else + inline void ssasn(std::string& sDst, const int /*nNull*/) +{ +#endif + + sDst.assign(""); +} +inline void ssasn(std::wstring& sDst, const std::wstring& sSrc) +{ + if ( sDst.c_str() != sSrc.c_str() ) + { + sDst.erase(); + sDst.assign(SSREF(sSrc)); + } +} +inline void ssasn(std::wstring& sDst, PCWSTR pW) +{ + // Watch out for NULLs, as always. + + if ( 0 == pW ) + { + sDst.erase(); + } + + // If pW actually points to part of sDst, we must NOT erase(), but + // rather take a substring + + else if ( pW >= sDst.c_str() && pW <= sDst.c_str() + sDst.size() ) + { + sDst = sDst.substr(static_cast(pW-sDst.c_str())); + } + + // Otherwise (most cases) apply the assignment bug fix, if applicable + // and do the assignment + + else + { + Q172398(sDst); + sDst.assign(pW); + } +} +// #undef StrSizeType // AR: never referenced +inline void ssasn(std::wstring& sDst, const std::string& sSrc) +{ + if ( sSrc.empty() ) + { + sDst.erase(); + } + else + { + int nSrc = static_cast(sSrc.size()); + int nDst = nSrc; + + sDst.resize(nSrc+1); + PCWSTR szCvt = StdCodeCvt(const_cast(sDst.data()), nDst, + sSrc.c_str(), nSrc); + +#ifndef _WIN32_WCE // AR: WinCE MultiByteToWideChar() does no multibyte length adjustment + sDst.resize(sslen(szCvt)); +#else + sDst.resize(nDst); +#endif + } +} +inline void ssasn(std::wstring& sDst, PCSTR pA) +{ + int nSrc = sslen(pA); + + if ( 0 == nSrc ) + { + sDst.erase(); + } + else + { + int nDst = nSrc; + sDst.resize(nDst+1); + PCWSTR szCvt = StdCodeCvt(const_cast(sDst.data()), nDst, pA, + nSrc); + +#ifndef _WIN32_WCE // AR: WinCE MultiByteToWideChar() does no multibyte length adjustment + sDst.resize(sslen(szCvt)); +#else + sDst.resize(nDst); +#endif + } +} +#ifdef _DEBUG +inline void ssasn(std::wstring& sDst, const int nNull) +{ + ASSERT(nNull==0); +#else +inline void ssasn(std::wstring& sDst, const int /*nNull*/) +{ +#endif + sDst.assign(L""); +} + + +// ----------------------------------------------------------------------------- +// ssadd: string object concatenation -- add second argument to first +// ----------------------------------------------------------------------------- +inline void ssadd(std::string& sDst, const std::wstring& sSrc) +{ + int nSrc = static_cast(sSrc.size()); + + if ( nSrc > 0 ) + { + int nDst = static_cast(sDst.size()); + int nAdd = nSrc; + + // In MBCS builds, pad the buffer to account for the possibility of + // some 3 byte characters. Not perfect but should get most cases. + +#ifdef SS_MBCS + nAdd = static_cast(static_cast(nAdd) * 1.3); +#endif + + sDst.resize(nDst+nAdd+1); +#ifdef SS_MBCS + PCSTR szCvt = StdCodeCvt(const_cast(sDst.data()+nDst), + nAdd, sSrc.c_str(), nSrc); + + + sDst.resize(nDst + sslen(szCvt)); +#else + sDst.resize(nDst + nAdd); + +#endif + } +} +inline void ssadd(std::string& sDst, const std::string& sSrc) +{ + sDst += sSrc; +} +inline void ssadd(std::string& sDst, PCWSTR pW) +{ + int nSrc = sslen(pW); + if ( nSrc > 0 ) + { + int nDst = static_cast(sDst.size()); + int nAdd = nSrc; + +#ifdef SS_MBCS + nAdd = static_cast(static_cast(nAdd) * 1.3); +#endif + + sDst.resize(nDst + nAdd + 1); +#ifdef SS_MBCS + + PCSTR szCvt = StdCodeCvt(const_cast(sDst.data()+nDst), + nAdd, pW, nSrc); + + sDst.resize(nDst + sslen(szCvt)); +#else + sDst.resize(nDst + nSrc); +#endif + } +} +inline void ssadd(std::string& sDst, PCSTR pA) +{ + if ( pA ) + { + // If the string being added is our internal string or a part of our + // internal string, then we must NOT do any reallocation without + // first copying that string to another object (since we're using a + // direct pointer) + + if ( pA >= sDst.c_str() && pA <= sDst.c_str()+sDst.length()) + { + if ( sDst.capacity() <= sDst.size()+sslen(pA) ) + sDst.append(std::string(pA)); + else + sDst.append(pA); + } + else + { + sDst.append(pA); + } + } +} +inline void ssadd(std::wstring& sDst, const std::wstring& sSrc) +{ + sDst += sSrc; +} +inline void ssadd(std::wstring& sDst, const std::string& sSrc) +{ + if ( !sSrc.empty() ) + { + int nSrc = static_cast(sSrc.size()); + int nDst = static_cast(sDst.size()); + + sDst.resize(nDst + nSrc + 1); +#ifdef SS_MBCS + PCWSTR szCvt = StdCodeCvt(const_cast(sDst.data()+nDst), + nSrc, sSrc.c_str(), nSrc+1); + + + sDst.resize(nDst + sslen(szCvt)); +#else + sDst.resize(nDst + nSrc); + +#endif + } +} +inline void ssadd(std::wstring& sDst, PCSTR pA) +{ + int nSrc = sslen(pA); + + if ( nSrc > 0 ) + { + int nDst = static_cast(sDst.size()); + + sDst.resize(nDst + nSrc + 1); +#ifdef SS_MBCS + + PCWSTR szCvt = StdCodeCvt(const_cast(sDst.data()+nDst), + nSrc, pA, nSrc+1); + + sDst.resize(nDst + sslen(szCvt)); +#else + sDst.resize(nDst + nSrc); +#endif + } +} +inline void ssadd(std::wstring& sDst, PCWSTR pW) +{ + if ( pW ) + { + // If the string being added is our internal string or a part of our + // internal string, then we must NOT do any reallocation without + // first copying that string to another object (since we're using a + // direct pointer) + + if ( pW >= sDst.c_str() && pW <= sDst.c_str()+sDst.length()) + { + if ( sDst.capacity() <= sDst.size()+sslen(pW) ) + sDst.append(std::wstring(pW)); + else + sDst.append(pW); + } + else + { + sDst.append(pW); + } + } +} + + +// ----------------------------------------------------------------------------- +// sscmp: comparison (case sensitive, not affected by locale) +// ----------------------------------------------------------------------------- +template +inline int sscmp(const CT* pA1, const CT* pA2) +{ + CT f; + CT l; + + do + { + f = *(pA1++); + l = *(pA2++); + } while ( (f) && (f == l) ); + + return (int)(f - l); +} + +#ifdef SS_NO_LOCALE // AR: we need these because StdStringxxxNoCasex calls them +inline int ssicmp(const char* pA1, const char* pA2) +{ + return _stricmp(pA1, pA2); +} +inline int ssicmp(const wchar_t* pA1, const wchar_t* pA2) +{ + return _wcsicmp(pA1, pA2); +} +#else +// ----------------------------------------------------------------------------- +// ssicmp: comparison (case INsensitive, not affected by locale) +// ----------------------------------------------------------------------------- +template +inline int ssicmp(const CT* pA1, const CT* pA2) +{ + // Using the "C" locale = "not affected by locale" + + std::locale loc = std::locale::classic(); + const std::ctype& ct = SS_USE_FACET(loc, std::ctype); + CT f; + CT l; + + do + { + f = ct.tolower(*(pA1++)); + l = ct.tolower(*(pA2++)); + } while ( (f) && (f == l) ); + + return (int)(f - l); +} + +// ----------------------------------------------------------------------------- +// ssupr/sslwr: Uppercase/Lowercase conversion functions +// ----------------------------------------------------------------------------- + +template +inline void sslwr(CT* pT, size_t nLen, const std::locale& loc=std::locale()) +{ + SS_USE_FACET(loc, std::ctype).tolower(pT, pT+nLen); +} +template +inline void ssupr(CT* pT, size_t nLen, const std::locale& loc=std::locale()) +{ + SS_USE_FACET(loc, std::ctype).toupper(pT, pT+nLen); +} +#endif // SS_NO_LOCALE // AR +// ----------------------------------------------------------------------------- +// vsprintf/vswprintf or _vsnprintf/_vsnwprintf equivalents. In standard +// builds we can't use _vsnprintf/_vsnwsprintf because they're MS extensions. +// +// ----------------------------------------------------------------------------- +// Borland's headers put some ANSI "C" functions in the 'std' namespace. +// Promote them to the global namespace so we can use them here. + +#if defined(__BORLANDC__) + using std::vsprintf; + using std::vswprintf; +#endif + + // GNU is supposed to have vsnprintf and vsnwprintf. But only the newer + // distributions do. + +#if defined(__GNUC__) + + inline int ssvsprintf(PSTR pA, size_t nCount, PCSTR pFmtA, va_list vl) + { + return vsnprintf(pA, nCount, pFmtA, vl); + } + inline int ssvsprintf(PWSTR pW, size_t nCount, PCWSTR pFmtW, va_list vl) + { + return vswprintf(pW, nCount, pFmtW, vl); + } + + // Microsofties can use +#elif defined(_MSC_VER) && !defined(SS_ANSI) + + inline int ssnprintf(PSTR pA, size_t nCount, PCSTR pFmtA, va_list vl) + { + return _vsnprintf(pA, nCount, pFmtA, vl); + } + inline int ssnprintf(PWSTR pW, size_t nCount, PCWSTR pFmtW, va_list vl) + { + return _vsnwprintf(pW, nCount, pFmtW, vl); + } + +#elif defined (SS_DANGEROUS_FORMAT) // ignore buffer size parameter if needed? + + inline int ssvsprintf(PSTR pA, size_t /*nCount*/, PCSTR pFmtA, va_list vl) + { + return vsprintf(pA, pFmtA, vl); + } + + inline int ssvsprintf(PWSTR pW, size_t nCount, PCWSTR pFmtW, va_list vl) + { + // JMO: Some distributions of the "C" have a version of vswprintf that + // takes 3 arguments (e.g. Microsoft, Borland, GNU). Others have a + // version which takes 4 arguments (an extra "count" argument in the + // second position. The best stab I can take at this so far is that if + // you are NOT running with MS, Borland, or GNU, then I'll assume you + // have the version that takes 4 arguments. + // + // I'm sure that these checks don't catch every platform correctly so if + // you get compiler errors on one of the lines immediately below, it's + // probably because your implemntation takes a different number of + // arguments. You can comment out the offending line (and use the + // alternate version) or you can figure out what compiler flag to check + // and add that preprocessor check in. Regardless, if you get an error + // on these lines, I'd sure like to hear from you about it. + // + // Thanks to Ronny Schulz for the SGI-specific checks here. + +// #if !defined(__MWERKS__) && !defined(__SUNPRO_CC_COMPAT) && !defined(__SUNPRO_CC) + #if !defined(_MSC_VER) \ + && !defined (__BORLANDC__) \ + && !defined(__GNUC__) \ + && !defined(__sgi) + + return vswprintf(pW, nCount, pFmtW, vl); + + // suddenly with the current SGI 7.3 compiler there is no such function as + // vswprintf and the substitute needs explicit casts to compile + + #elif defined(__sgi) + + nCount; + return vsprintf( (char *)pW, (char *)pFmtW, vl); + + #else + + nCount; + return vswprintf(pW, pFmtW, vl); + + #endif + + } + +#else + + // GOT COMPILER PROBLEMS HERE? + // --------------------------- + // Does your compiler choke on one or more of the following 2 functions? It + // probably means that you don't have have either vsnprintf or vsnwprintf in + // your version of the CRT. This is understandable since neither is an ANSI + // "C" function. However it still leaves you in a dilemma. In order to make + // this code build, you're going to have to to use some non-length-checked + // formatting functions that every CRT has: vsprintf and vswprintf. + // + // This is very dangerous. With the proper erroneous (or malicious) code, it + // can lead to buffer overlows and crashing your PC. Use at your own risk + // In order to use them, just #define SS_DANGEROUS_FORMAT at the top of + // this file. + // + // Even THEN you might not be all the way home due to some non-conforming + // distributions. More on this in the comments below. + + inline int ssnprintf(PSTR pA, size_t nCount, PCSTR pFmtA, va_list vl) + { + #ifdef _MSC_VER + return _vsnprintf(pA, nCount, pFmtA, vl); + #else + return vsnprintf(pA, nCount, pFmtA, vl); + #endif + } + + inline int ssnprintf(PWSTR pW, size_t nCount, PCWSTR pFmtW, va_list vl) + { + #ifdef _MSC_VER + return _vsnwprintf(pW, nCount, pFmtW, vl); + #else + return vsnwprintf(pW, nCount, pFmtW, vl); + #endif + } + +#endif + + +// ----------------------------------------------------------------------------- +// ssload: Type safe, overloaded ::LoadString wrappers +// There is no equivalent of these in non-Win32-specific builds. However, I'm +// thinking that with the message facet, there might eventually be one +// ----------------------------------------------------------------------------- +#if defined (SS_WIN32) && !defined(SS_ANSI) + inline int ssload(HMODULE hInst, UINT uId, PSTR pBuf, int nMax) + { +#ifndef _WIN32_WCE // AR: WinCE has no defined LoadStringA + return ::LoadStringA(hInst, uId, pBuf, nMax); +#else + return 0; +#endif + } + inline int ssload(HMODULE hInst, UINT uId, PWSTR pBuf, int nMax) + { + return ::LoadStringW(hInst, uId, pBuf, nMax); + } +#endif + + +// ----------------------------------------------------------------------------- +// sscoll/ssicoll: Collation wrappers +// Note -- with MSVC I have reversed the arguments order here because the +// functions appear to return the opposite of what they should +// ----------------------------------------------------------------------------- +#ifndef SS_NO_LOCALE +template +inline int sscoll(const CT* sz1, int nLen1, const CT* sz2, int nLen2) +{ + const std::collate& coll = + SS_USE_FACET(std::locale(), std::collate); + + return coll.compare(sz2, sz2+nLen2, sz1, sz1+nLen1); +} +template +inline int ssicoll(const CT* sz1, int nLen1, const CT* sz2, int nLen2) +{ + const std::locale loc; + const std::collate& coll = SS_USE_FACET(loc, std::collate); + + // Some implementations seem to have trouble using the collate<> + // facet typedefs so we'll just default to basic_string and hope + // that's what the collate facet uses (which it generally should) + +// std::collate::string_type s1(sz1); +// std::collate::string_type s2(sz2); + const std::basic_string sEmpty; + std::basic_string s1(sz1 ? sz1 : sEmpty.c_str()); + std::basic_string s2(sz2 ? sz2 : sEmpty.c_str()); + + sslwr(const_cast(s1.c_str()), nLen1, loc); + sslwr(const_cast(s2.c_str()), nLen2, loc); + return coll.compare(s2.c_str(), s2.c_str()+nLen2, + s1.c_str(), s1.c_str()+nLen1); +} +#endif + + +// ----------------------------------------------------------------------------- +// ssfmtmsg: FormatMessage equivalents. Needed because I added a CString facade +// Again -- no equivalent of these on non-Win32 builds but their might one day +// be one if the message facet gets implemented +// ----------------------------------------------------------------------------- +#if defined (SS_WIN32) && !defined(SS_ANSI) + inline DWORD ssfmtmsg(DWORD dwFlags, LPCVOID pSrc, DWORD dwMsgId, + DWORD dwLangId, PSTR pBuf, DWORD nSize, + va_list* vlArgs) + { + return FormatMessageA(dwFlags, pSrc, dwMsgId, dwLangId, + pBuf, nSize,vlArgs); + } + inline DWORD ssfmtmsg(DWORD dwFlags, LPCVOID pSrc, DWORD dwMsgId, + DWORD dwLangId, PWSTR pBuf, DWORD nSize, + va_list* vlArgs) + { + return FormatMessageW(dwFlags, pSrc, dwMsgId, dwLangId, + pBuf, nSize,vlArgs); + } +#else +#endif + + + +// FUNCTION: sscpy. Copies up to 'nMax' characters from pSrc to pDst. +// ----------------------------------------------------------------------------- +// FUNCTION: sscpy +// inline int sscpy(PSTR pDst, PCSTR pSrc, int nMax=-1); +// inline int sscpy(PUSTR pDst, PCSTR pSrc, int nMax=-1) +// inline int sscpy(PSTR pDst, PCWSTR pSrc, int nMax=-1); +// inline int sscpy(PWSTR pDst, PCWSTR pSrc, int nMax=-1); +// inline int sscpy(PWSTR pDst, PCSTR pSrc, int nMax=-1); +// +// DESCRIPTION: +// This function is very much (but not exactly) like strcpy. These +// overloads simplify copying one C-style string into another by allowing +// the caller to specify two different types of strings if necessary. +// +// The strings must NOT overlap +// +// "Character" is expressed in terms of the destination string, not +// the source. If no 'nMax' argument is supplied, then the number of +// characters copied will be sslen(pSrc). A NULL terminator will +// also be added so pDst must actually be big enough to hold nMax+1 +// characters. The return value is the number of characters copied, +// not including the NULL terminator. +// +// PARAMETERS: +// pSrc - the string to be copied FROM. May be a char based string, an +// MBCS string (in Win32 builds) or a wide string (wchar_t). +// pSrc - the string to be copied TO. Also may be either MBCS or wide +// nMax - the maximum number of characters to be copied into szDest. Note +// that this is expressed in whatever a "character" means to pDst. +// If pDst is a wchar_t type string than this will be the maximum +// number of wchar_ts that my be copied. The pDst string must be +// large enough to hold least nMaxChars+1 characters. +// If the caller supplies no argument for nMax this is a signal to +// the routine to copy all the characters in pSrc, regardless of +// how long it is. +// +// RETURN VALUE: none +// ----------------------------------------------------------------------------- +template +inline int sscpycvt(CT1* pDst, const CT2* pSrc, int nMax) +{ + // Note -- we assume pDst is big enough to hold pSrc. If not, we're in + // big trouble. No bounds checking. Caveat emptor. + + int nSrc = sslen(pSrc); + + const CT1* szCvt = StdCodeCvt(pDst, nMax, pSrc, nSrc); + + // If we're copying the same size characters, then all the "code convert" + // just did was basically memcpy so the #of characters copied is the same + // as the number requested. I should probably specialize this function + // template to achieve this purpose as it is silly to do a runtime check + // of a fact known at compile time. I'll get around to it. + + return sslen(szCvt); +} + +inline int sscpycvt(PSTR pDst, PCSTR pSrc, int nMax) +{ + int nCount = nMax; + for (; nCount > 0 && *pSrc; ++pSrc, ++pDst, --nCount) + std::basic_string::traits_type::assign(*pDst, *pSrc); + + *pDst = '\0'; + return nMax - nCount; +} +inline int sscpycvt(PWSTR pDst, PCWSTR pSrc, int nMax) +{ + int nCount = nMax; + for (; nCount > 0 && *pSrc; ++pSrc, ++pDst, --nCount) + std::basic_string::traits_type::assign(*pDst, *pSrc); + + *pDst = L'\0'; + return nMax - nCount; +} +inline int sscpycvt(PWSTR pDst, PCSTR pSrc, int nMax) +{ + // Note -- we assume pDst is big enough to hold pSrc. If not, we're in + // big trouble. No bounds checking. Caveat emptor. + + const PWSTR szCvt = StdCodeCvt(pDst, nMax, pSrc, nMax); + return sslen(szCvt); +} + +template +inline int sscpy(CT1* pDst, const CT2* pSrc, int nMax, int nLen) +{ + return sscpycvt(pDst, pSrc, SSMIN(nMax, nLen)); +} +template +inline int sscpy(CT1* pDst, const CT2* pSrc, int nMax) +{ + return sscpycvt(pDst, pSrc, SSMIN(nMax, sslen(pSrc))); +} +template +inline int sscpy(CT1* pDst, const CT2* pSrc) +{ + return sscpycvt(pDst, pSrc, sslen(pSrc)); +} +template +inline int sscpy(CT1* pDst, const std::basic_string& sSrc, int nMax) +{ + return sscpycvt(pDst, sSrc.c_str(), SSMIN(nMax, (int)sSrc.length())); +} +template +inline int sscpy(CT1* pDst, const std::basic_string& sSrc) +{ + return sscpycvt(pDst, sSrc.c_str(), (int)sSrc.length()); +} + +#ifdef SS_INC_COMDEF + template + inline int sscpy(CT1* pDst, const _bstr_t& bs, int nMax) + { + return sscpycvt(pDst, static_cast(bs), + SSMIN(nMax, static_cast(bs.length()))); + } + template + inline int sscpy(CT1* pDst, const _bstr_t& bs) + { + return sscpy(pDst, bs, static_cast(bs.length())); + } +#endif + + +// ----------------------------------------------------------------------------- +// Functional objects for changing case. They also let you pass locales +// ----------------------------------------------------------------------------- + +#ifdef SS_NO_LOCALE + template + struct SSToUpper : public std::unary_function + { + inline CT operator()(const CT& t) const + { + return sstoupper(t); + } + }; + template + struct SSToLower : public std::unary_function + { + inline CT operator()(const CT& t) const + { + return sstolower(t); + } + }; +#else + template + struct SSToUpper : public std::binary_function + { + inline CT operator()(const CT& t, const std::locale& loc) const + { + return sstoupper(t, loc); + } + }; + template + struct SSToLower : public std::binary_function + { + inline CT operator()(const CT& t, const std::locale& loc) const + { + return sstolower(t, loc); + } + }; +#endif + +// This struct is used for TrimRight() and TrimLeft() function implementations. +//template +//struct NotSpace : public std::unary_function +//{ +// const std::locale& loc; +// inline NotSpace(const std::locale& locArg) : loc(locArg) {} +// inline bool operator() (CT t) { return !std::isspace(t, loc); } +//}; +template +struct NotSpace : public std::unary_function +{ + // DINKUMWARE BUG: + // Note -- using std::isspace in a COM DLL gives us access violations + // because it causes the dynamic addition of a function to be called + // when the library shuts down. Unfortunately the list is maintained + // in DLL memory but the function is in static memory. So the COM DLL + // goes away along with the function that was supposed to be called, + // and then later when the DLL CRT shuts down it unloads the list and + // tries to call the long-gone function. + // This is DinkumWare's implementation problem. If you encounter this + // problem, you may replace the calls here with good old isspace() and + // iswspace() from the CRT unless they specify SS_ANSI + +#ifdef SS_NO_LOCALE + + // OG + bool operator() (CT t) const { return !ssisspace(t); } + +#else + const std::locale loc; + NotSpace(const std::locale& locArg=std::locale()) : loc(locArg) {} + bool operator() (CT t) const { return !std::isspace(t, loc); } +#endif +}; + + + + +// Now we can define the template (finally!) +// ============================================================================= +// TEMPLATE: CStdStr +// template class CStdStr : public std::basic_string +// +// REMARKS: +// This template derives from basic_string and adds some MFC CString- +// like functionality +// +// Basically, this is my attempt to make Standard C++ library strings as +// easy to use as the MFC CString class. +// +// Note that although this is a template, it makes the assumption that the +// template argument (CT, the character type) is either char or wchar_t. +// ============================================================================= + +//#define CStdStr _SS // avoid compiler warning 4786 + +// template ARG& FmtArg(ARG& arg) { return arg; } +// PCSTR FmtArg(const std::string& arg) { return arg.c_str(); } +// PCWSTR FmtArg(const std::wstring& arg) { return arg.c_str(); } + +template +struct FmtArg +{ + explicit FmtArg(const ARG& arg) : a_(arg) {} + const ARG& operator()() const { return a_; } + const ARG& a_; +private: + FmtArg& operator=(const FmtArg&) { return *this; } +}; + +template +class CStdStr : public std::basic_string +{ + // Typedefs for shorter names. Using these names also appears to help + // us avoid some ambiguities that otherwise arise on some platforms + + //#define MYBASE std::basic_string // my base class // AR: use the typedef with WTL + typedef typename std::basic_string MYBASE; // my base class + typedef CStdStr MYTYPE; // myself + typedef typename MYBASE::const_pointer PCMYSTR; // PCSTR or PCWSTR + typedef typename MYBASE::pointer PMYSTR; // PSTR or PWSTR + typedef typename MYBASE::iterator MYITER; // my iterator type + typedef typename MYBASE::const_iterator MYCITER; // you get the idea... + typedef typename MYBASE::reverse_iterator MYRITER; + typedef typename MYBASE::size_type MYSIZE; + typedef typename MYBASE::value_type MYVAL; + typedef typename MYBASE::allocator_type MYALLOC; + +public: + // shorthand conversion from PCTSTR to string resource ID + #define SSRES(pctstr) LOWORD(reinterpret_cast(pctstr)) + + bool TryLoad(const void* pT) + { + bool bLoaded = false; + +#if defined(SS_WIN32) && !defined(SS_ANSI) + if ( ( pT != NULL ) && SS_IS_INTRESOURCE(pT) ) + { + UINT nId = LOWORD(reinterpret_cast(pT)); + if ( !LoadString(nId) ) + { + TRACE(_T("Can't load string %u\n"), SSRES(pT)); + } + bLoaded = true; + } +#endif + + return bLoaded; + } + + + // CStdStr inline constructors + CStdStr() + { + } + + /* + // OG Added getExt + PCMYSTR getExt() + { + int pos = ReverseFind('.'); + return c_str()+pos+1; + } + */ + + + CStdStr(const MYTYPE& str) : MYBASE(SSREF(str)) + { + } + + CStdStr(const std::string& str) + { + ssasn(*this, SSREF(str)); + } + + CStdStr(const std::wstring& str) + { + ssasn(*this, SSREF(str)); + } + +#ifndef _WTL_VER // AR: kept the existing for compatibility security + CStdStr(PCMYSTR pT, MYSIZE n) : MYBASE(pT, n) + { + } +#else // AR: WTL::CString exposes constructors with both types + template + CStdStr(const TC* pTC, MYSIZE n) + { + *this = pTC; + this->resize(n); + } +#endif + +#ifdef SS_UNSIGNED + CStdStr(PCUSTR pU) + { + *this = reinterpret_cast(pU); + } +#endif + + CStdStr(PCSTR pA) + { + #ifdef SS_ANSI + *this = pA; + #else + if ( !TryLoad(pA) ) + *this = pA; + #endif + } + + CStdStr(PCWSTR pW) + { + #ifdef SS_ANSI + *this = pW; + #else + if ( !TryLoad(pW) ) + *this = pW; + #endif + } + + CStdStr(MYCITER first, MYCITER last) + : MYBASE(first, last) + { + } + + CStdStr(MYSIZE nSize, MYVAL ch, const MYALLOC& al=MYALLOC()) + : MYBASE(nSize, ch, al) + { + } + + #ifdef SS_INC_COMDEF + CStdStr(const _bstr_t& bstr) + { + if ( bstr.length() > 0 ) + this->append(static_cast(bstr), bstr.length()); + } + #endif + + // CStdStr inline assignment operators -- the ssasn function now takes care + // of fixing the MSVC assignment bug (see knowledge base article Q172398). + MYTYPE& operator=(const MYTYPE& str) + { + ssasn(*this, str); + return *this; + } + + MYTYPE& operator=(const std::string& str) + { + ssasn(*this, str); + return *this; + } + + MYTYPE& operator=(const std::wstring& str) + { + ssasn(*this, str); + return *this; + } + + MYTYPE& operator=(PCSTR pA) + { + ssasn(*this, pA); + return *this; + } + + MYTYPE& operator=(PCWSTR pW) + { + ssasn(*this, pW); + return *this; + } + +#ifdef SS_UNSIGNED + MYTYPE& operator=(PCUSTR pU) + { + ssasn(*this, reinterpret_cast(pU)); + return *this; + } +#endif + + MYTYPE& operator=(CT t) + { + Q172398(*this); + this->assign(1, t); + return *this; + } + + #ifdef SS_INC_COMDEF + MYTYPE& operator=(const _bstr_t& bstr) + { + if ( bstr.length() > 0 ) + { + this->assign(static_cast(bstr), bstr.length()); + return *this; + } + else + { + this->erase(); + return *this; + } + } + #endif + + + // Overloads also needed to fix the MSVC assignment bug (KB: Q172398) + // *** Thanks to Pete The Plumber for catching this one *** + // They also are compiled if you have explicitly turned off refcounting + #if ( defined(_MSC_VER) && ( _MSC_VER < 1200 ) ) || defined(SS_NO_REFCOUNT) + + MYTYPE& assign(const MYTYPE& str) + { + Q172398(*this); + sscpy(GetBuffer(str.size()+1), SSREF(str)); + this->ReleaseBuffer(str.size()); + return *this; + } + + MYTYPE& assign(const MYTYPE& str, MYSIZE nStart, MYSIZE nChars) + { + // This overload of basic_string::assign is supposed to assign up to + // or the NULL terminator, whichever comes first. Since we + // are about to call a less forgiving overload (in which + // must be a valid length), we must adjust the length here to a safe + // value. Thanks to Ullrich Pollähne for catching this bug + + nChars = SSMIN(nChars, str.length() - nStart); + MYTYPE strTemp(str.c_str()+nStart, nChars); + Q172398(*this); + this->assign(strTemp); + return *this; + } + + MYTYPE& assign(const MYBASE& str) + { + ssasn(*this, str); + return *this; + } + + MYTYPE& assign(const MYBASE& str, MYSIZE nStart, MYSIZE nChars) + { + // This overload of basic_string::assign is supposed to assign up to + // or the NULL terminator, whichever comes first. Since we + // are about to call a less forgiving overload (in which + // must be a valid length), we must adjust the length here to a safe + // value. Thanks to Ullrich Pollähne for catching this bug + + nChars = SSMIN(nChars, str.length() - nStart); + + // Watch out for assignment to self + + if ( this == &str ) + { + MYTYPE strTemp(str.c_str() + nStart, nChars); + static_cast(this)->assign(strTemp); + } + else + { + Q172398(*this); + static_cast(this)->assign(str.c_str()+nStart, nChars); + } + return *this; + } + + MYTYPE& assign(const CT* pC, MYSIZE nChars) + { + // Q172398 only fix -- erase before assigning, but not if we're + // assigning from our own buffer + + #if defined ( _MSC_VER ) && ( _MSC_VER < 1200 ) + if ( !this->empty() && + ( pC < this->data() || pC > this->data() + this->capacity() ) ) + { + this->erase(); + } + #endif + Q172398(*this); + static_cast(this)->assign(pC, nChars); + return *this; + } + + MYTYPE& assign(MYSIZE nChars, MYVAL val) + { + Q172398(*this); + static_cast(this)->assign(nChars, val); + return *this; + } + + MYTYPE& assign(const CT* pT) + { + return this->assign(pT, MYBASE::traits_type::length(pT)); + } + + MYTYPE& assign(MYCITER iterFirst, MYCITER iterLast) + { + #if defined ( _MSC_VER ) && ( _MSC_VER < 1200 ) + // Q172398 fix. don't call erase() if we're assigning from ourself + if ( iterFirst < this->begin() || + iterFirst > this->begin() + this->size() ) + { + this->erase() + } + #endif + this->replace(this->begin(), this->end(), iterFirst, iterLast); + return *this; + } + #endif + + + // ------------------------------------------------------------------------- + // CStdStr inline concatenation. + // ------------------------------------------------------------------------- + MYTYPE& operator+=(const MYTYPE& str) + { + ssadd(*this, str); + return *this; + } + + MYTYPE& operator+=(const std::string& str) + { + ssadd(*this, str); + return *this; + } + + MYTYPE& operator+=(const std::wstring& str) + { + ssadd(*this, str); + return *this; + } + + MYTYPE& operator+=(PCSTR pA) + { + ssadd(*this, pA); + return *this; + } + + MYTYPE& operator+=(PCWSTR pW) + { + ssadd(*this, pW); + return *this; + } + + MYTYPE& operator+=(CT t) + { + this->append(1, t); + return *this; + } + #ifdef SS_INC_COMDEF // if we have _bstr_t, define a += for it too. + MYTYPE& operator+=(const _bstr_t& bstr) + { + return this->operator+=(static_cast(bstr)); + } + #endif + + + // ------------------------------------------------------------------------- + // Case changing functions + // ------------------------------------------------------------------------- + +#ifndef SS_NO_LOCALE // AR + MYTYPE& ToUpper(const std::locale& loc=std::locale()) + { + // Note -- if there are any MBCS character sets in which the lowercase + // form a character takes up a different number of bytes than the + // uppercase form, this would probably not work... + + std::transform(this->begin(), + this->end(), + this->begin(), + std::bind2nd(SSToUpper(), loc)); + + // ...but if it were, this would probably work better. Also, this way + // seems to be a bit faster when anything other then the "C" locale is + // used... + +// if ( !empty() ) +// { +// ssupr(this->GetBuf(), this->size(), loc); +// this->RelBuf(); +// } + + return *this; + } + + MYTYPE& ToLower(const std::locale& loc=std::locale()) + { + // Note -- if there are any MBCS character sets in which the lowercase + // form a character takes up a different number of bytes than the + // uppercase form, this would probably not work... + + std::transform(this->begin(), + this->end(), + this->begin(), + std::bind2nd(SSToLower(), loc)); + + // ...but if it were, this would probably work better. Also, this way + // seems to be a bit faster when anything other then the "C" locale is + // used... + +// if ( !empty() ) +// { +// sslwr(this->GetBuf(), this->size(), loc); +// this->RelBuf(); +// } + return *this; + } +#endif + + + MYTYPE& Normalize() + { + return Trim().ToLower(); + } + + + // ------------------------------------------------------------------------- + // CStdStr -- Direct access to character buffer. In the MS' implementation, + // the at() function that we use here also calls _Freeze() providing us some + // protection from multithreading problems associated with ref-counting. + // In VC 7 and later, of course, the ref-counting stuff is gone. + // ------------------------------------------------------------------------- + + CT* GetBuf(int nMinLen=-1) + { + if ( static_cast(this->size()) < nMinLen ) + this->resize(static_cast(nMinLen)); + + return this->empty() ? const_cast(this->data()) : &(this->at(0)); + } + + CT* SetBuf(int nLen) + { + nLen = ( nLen > 0 ? nLen : 0 ); + if ( this->capacity() < 1 && nLen == 0 ) + this->resize(1); + + this->resize(static_cast(nLen)); + return const_cast(this->data()); + } + void RelBuf(int nNewLen=-1) + { + this->resize(static_cast(nNewLen > -1 ? nNewLen : + sslen(this->c_str()))); + } + + void BufferRel() { RelBuf(); } // backwards compatability + CT* Buffer() { return GetBuf(); } // backwards compatability + CT* BufferSet(int nLen) { return SetBuf(nLen);}// backwards compatability + + bool Equals(const CT* pT, bool bUseCase=false) const + { + return 0 == (bUseCase ? this->compare(pT) : ssicmp(this->c_str(), pT)); + } + + // ------------------------------------------------------------------------- + // FUNCTION: CStdStr::Load + // REMARKS: + // Loads string from resource specified by nID + // + // PARAMETERS: + // nID - resource Identifier. Purely a Win32 thing in this case + // + // RETURN VALUE: + // true if successful, false otherwise + // ------------------------------------------------------------------------- + +#ifndef SS_ANSI + + bool Load(UINT nId, HMODULE hModule=NULL) + { + bool bLoaded = false; // set to true of we succeed. + + #ifdef _MFC_VER // When in Rome (or MFC land)... + + // If they gave a resource handle, use it. Note - this is archaic + // and not really what I would recommend. But then again, in MFC + // land, you ought to be using CString for resources anyway since + // it walks the resource chain for you. + + HMODULE hModuleOld = NULL; + + if ( NULL != hModule ) + { + hModuleOld = AfxGetResourceHandle(); + AfxSetResourceHandle(hModule); + } + + // ...load the string + + CString strRes; + bLoaded = FALSE != strRes.LoadString(nId); + + // ...and if we set the resource handle, restore it. + + if ( NULL != hModuleOld ) + AfxSetResourceHandle(hModule); + + if ( bLoaded ) + *this = strRes; + + #else // otherwise make our own hackneyed version of CString's Load + + // Get the resource name and module handle + + if ( NULL == hModule ) + hModule = GetResourceHandle(); + + PCTSTR szName = MAKEINTRESOURCE((nId>>4)+1); // lifted + DWORD dwSize = 0; + + // No sense continuing if we can't find the resource + + HRSRC hrsrc = ::FindResource(hModule, szName, RT_STRING); + + if ( NULL == hrsrc ) + { + TRACE(_T("Cannot find resource %d: 0x%X"), nId, ::GetLastError()); + } + else if ( 0 == (dwSize = ::SizeofResource(hModule, hrsrc) / sizeof(CT))) + { + TRACE(_T("Cant get size of resource %d 0x%X\n"),nId,GetLastError()); + } + else + { + bLoaded = 0 != ssload(hModule, nId, GetBuf(dwSize), dwSize); + ReleaseBuffer(); + } + + #endif // #ifdef _MFC_VER + + if ( !bLoaded ) + TRACE(_T("String not loaded 0x%X\n"), ::GetLastError()); + + return bLoaded; + } + +#endif // #ifdef SS_ANSI + + // ------------------------------------------------------------------------- + // FUNCTION: CStdStr::Format + // void _cdecl Formst(CStdStringA& PCSTR szFormat, ...) + // void _cdecl Format(PCSTR szFormat); + // + // DESCRIPTION: + // This function does sprintf/wsprintf style formatting on CStdStringA + // objects. It looks a lot like MFC's CString::Format. Some people + // might even call this identical. Fortunately, these people are now + // dead... heh heh. + // + // PARAMETERS: + // nId - ID of string resource holding the format string + // szFormat - a PCSTR holding the format specifiers + // argList - a va_list holding the arguments for the format specifiers. + // + // RETURN VALUE: None. + // ------------------------------------------------------------------------- + // formatting (using wsprintf style formatting) + + // If they want a Format() function that safely handles string objects + // without casting + +#ifdef SS_SAFE_FORMAT + + // Question: Joe, you wacky coder you, why do you have so many overloads + // of the Format() function + // Answer: One reason only - CString compatability. In short, by making + // the Format() function a template this way, I can do strong typing + // and allow people to pass CStdString arguments as fillers for + // "%s" format specifiers without crashing their program! The downside + // is that I need to overload on the number of arguments. If you are + // passing more arguments than I have listed below in any of my + // overloads, just add another one. + // + // Yes, yes, this is really ugly. In essence what I am doing here is + // protecting people from a bad (and incorrect) programming practice + // that they should not be doing anyway. I am protecting them from + // themselves. Why am I doing this? Well, if you had any idea the + // number of times I've been emailed by people about this + // "incompatability" in my code, you wouldn't ask. + + void Fmt(const CT* szFmt, ...) + { + va_list argList; + va_start(argList, szFmt); + FormatV(szFmt, argList); + va_end(argList); + } + +#ifndef SS_ANSI + + void Format(UINT nId) + { + MYTYPE strFmt; + if ( strFmt.Load(nId) ) + this->swap(strFmt); + } + template + void Format(UINT nId, const A1& v) + { + MYTYPE strFmt; + if ( strFmt.Load(nId) ) + Fmt(strFmt, FmtArg(v)()); + } + template + void Format(UINT nId, const A1& v1, const A2& v2) + { + MYTYPE strFmt; + if ( strFmt.Load(nId) ) + Fmt(strFmt, FmtArg(v1)(), FmtArg(v2)()); + } + template + void Format(UINT nId, const A1& v1, const A2& v2, const A3& v3) + { + MYTYPE strFmt; + if ( strFmt.Load(nId) ) + { + Fmt(strFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)()); + } + } + template + void Format(UINT nId, const A1& v1, const A2& v2, const A3& v3, + const A4& v4) + { + MYTYPE strFmt; + if ( strFmt.Load(nId) ) + { + Fmt(strFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)()); + } + } + template + void Format(UINT nId, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5) + { + MYTYPE strFmt; + if ( strFmt.Load(nId) ) + { + Fmt(strFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)()); + } + } + template + void Format(UINT nId, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6) + { + MYTYPE strFmt; + if ( strFmt.Load(nId) ) + { + Fmt(strFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(),FmtArg(v5)(), + FmtArg(v6)()); + } + } + template + void Format(UINT nId, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7) + { + MYTYPE strFmt; + if ( strFmt.Load(nId) ) + { + Fmt(strFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(),FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)()); + } + } + template + void Format(UINT nId, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7, + const A8& v8) + { + MYTYPE strFmt; + if ( strFmt.Load(nId) ) + { + Fmt(strFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)(), FmtArg(v8)()); + } + } + template + void Format(UINT nId, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7, + const A8& v8, const A9& v9) + { + MYTYPE strFmt; + if ( strFmt.Load(nId) ) + { + Fmt(strFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)(), FmtArg(v8)(), + FmtArg(v9)()); + } + } + template + void Format(UINT nId, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7, + const A8& v8, const A9& v9, const A10& v10) + { + MYTYPE strFmt; + if ( strFmt.Load(nId) ) + { + Fmt(strFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)(), FmtArg(v8)(), + FmtArg(v9)(), FmtArg(v10)()); + } + } + template + void Format(UINT nId, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7, + const A8& v8, const A9& v9, const A10& v10, const A11& v11) + { + MYTYPE strFmt; + if ( strFmt.Load(nId) ) + { + Fmt(strFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)(), FmtArg(v8)(), + FmtArg(v9)(),FmtArg(v10)(),FmtArg(v11)()); + } + } + template + void Format(UINT nId, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7, + const A8& v8, const A9& v9, const A10& v10, const A11& v11, + const A12& v12) + { + MYTYPE strFmt; + if ( strFmt.Load(nId) ) + { + Fmt(strFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)(), FmtArg(v8)(), + FmtArg(v9)(), FmtArg(v10)(),FmtArg(v11)(), + FmtArg(v12)()); + } + } + template + void Format(UINT nId, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7, + const A8& v8, const A9& v9, const A10& v10, const A11& v11, + const A12& v12, const A13& v13) + { + MYTYPE strFmt; + if ( strFmt.Load(nId) ) + { + Fmt(strFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)(), FmtArg(v8)(), + FmtArg(v9)(), FmtArg(v10)(),FmtArg(v11)(), + FmtArg(v12)(), FmtArg(v13)()); + } + } + template + void Format(UINT nId, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7, + const A8& v8, const A9& v9, const A10& v10, const A11& v11, + const A12& v12, const A13& v13, const A14& v14) + { + MYTYPE strFmt; + if ( strFmt.Load(nId) ) + { + Fmt(strFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)(), FmtArg(v8)(), + FmtArg(v9)(), FmtArg(v10)(),FmtArg(v11)(), + FmtArg(v12)(), FmtArg(v13)(),FmtArg(v14)()); + } + } + template + void Format(UINT nId, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7, + const A8& v8, const A9& v9, const A10& v10, const A11& v11, + const A12& v12, const A13& v13, const A14& v14, const A15& v15) + { + MYTYPE strFmt; + if ( strFmt.Load(nId) ) + { + Fmt(strFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)(), FmtArg(v8)(), + FmtArg(v9)(), FmtArg(v10)(),FmtArg(v11)(), + FmtArg(v12)(),FmtArg(v13)(),FmtArg(v14)(), + FmtArg(v15)()); + } + } + template + void Format(UINT nId, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7, + const A8& v8, const A9& v9, const A10& v10, const A11& v11, + const A12& v12, const A13& v13, const A14& v14, const A15& v15, + const A16& v16) + { + MYTYPE strFmt; + if ( strFmt.Load(nId) ) + { + Fmt(strFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)(), FmtArg(v8)(), + FmtArg(v9)(), FmtArg(v10)(),FmtArg(v11)(), + FmtArg(v12)(),FmtArg(v13)(),FmtArg(v14)(), + FmtArg(v15)(), FmtArg(v16)()); + } + } + template + void Format(UINT nId, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7, + const A8& v8, const A9& v9, const A10& v10, const A11& v11, + const A12& v12, const A13& v13, const A14& v14, const A15& v15, + const A16& v16, const A17& v17) + { + MYTYPE strFmt; + if ( strFmt.Load(nId) ) + { + Fmt(strFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)(), FmtArg(v8)(), + FmtArg(v9)(), FmtArg(v10)(),FmtArg(v11)(), + FmtArg(v12)(),FmtArg(v13)(),FmtArg(v14)(), + FmtArg(v15)(),FmtArg(v16)(),FmtArg(v17)()); + } + } + +#endif // #ifndef SS_ANSI + + // ...now the other overload of Format: the one that takes a string literal + + void Format(const CT* szFmt) + { + *this = szFmt; + } + template + void Format(const CT* szFmt, const A1& v) + { + Fmt(szFmt, FmtArg(v)()); + } + template + void Format(const CT* szFmt, const A1& v1, const A2& v2) + { + Fmt(szFmt, FmtArg(v1)(), FmtArg(v2)()); + } + template + void Format(const CT* szFmt, const A1& v1, const A2& v2, const A3& v3) + { + Fmt(szFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)()); + } + template + void Format(const CT* szFmt, const A1& v1, const A2& v2, const A3& v3, + const A4& v4) + { + Fmt(szFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)()); + } + template + void Format(const CT* szFmt, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5) + { + Fmt(szFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)()); + } + template + void Format(const CT* szFmt, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6) + { + Fmt(szFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)()); + } + template + void Format(const CT* szFmt, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7) + { + Fmt(szFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)()); + } + template + void Format(const CT* szFmt, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7, + const A8& v8) + { + Fmt(szFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)(), FmtArg(v8)()); + } + template + void Format(const CT* szFmt, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7, + const A8& v8, const A9& v9) + { + Fmt(szFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)(), FmtArg(v8)(), + FmtArg(v9)()); + } + template + void Format(const CT* szFmt, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7, + const A8& v8, const A9& v9, const A10& v10) + { + Fmt(szFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)(), FmtArg(v8)(), + FmtArg(v9)(), FmtArg(v10)()); + } + template + void Format(const CT* szFmt, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7, + const A8& v8, const A9& v9, const A10& v10, const A11& v11) + { + Fmt(szFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)(), FmtArg(v8)(), + FmtArg(v9)(),FmtArg(v10)(),FmtArg(v11)()); + } + template + void Format(const CT* szFmt, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7, + const A8& v8, const A9& v9, const A10& v10, const A11& v11, + const A12& v12) + { + Fmt(szFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)(), FmtArg(v8)(), + FmtArg(v9)(), FmtArg(v10)(),FmtArg(v11)(), + FmtArg(v12)()); + } + template + void Format(const CT* szFmt, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7, + const A8& v8, const A9& v9, const A10& v10, const A11& v11, + const A12& v12, const A13& v13) + { + Fmt(szFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)(), FmtArg(v8)(), + FmtArg(v9)(), FmtArg(v10)(),FmtArg(v11)(), + FmtArg(v12)(), FmtArg(v13)()); + } + template + void Format(const CT* szFmt, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7, + const A8& v8, const A9& v9, const A10& v10, const A11& v11, + const A12& v12, const A13& v13, const A14& v14) + { + Fmt(szFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)(), FmtArg(v8)(), + FmtArg(v9)(), FmtArg(v10)(),FmtArg(v11)(), + FmtArg(v12)(), FmtArg(v13)(),FmtArg(v14)()); + } + template + void Format(const CT* szFmt, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7, + const A8& v8, const A9& v9, const A10& v10, const A11& v11, + const A12& v12, const A13& v13, const A14& v14, const A15& v15) + { + Fmt(szFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)(), FmtArg(v8)(), + FmtArg(v9)(), FmtArg(v10)(),FmtArg(v11)(), + FmtArg(v12)(),FmtArg(v13)(),FmtArg(v14)(), + FmtArg(v15)()); + } + template + void Format(const CT* szFmt, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7, + const A8& v8, const A9& v9, const A10& v10, const A11& v11, + const A12& v12, const A13& v13, const A14& v14, const A15& v15, + const A16& v16) + { + Fmt(szFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)(), FmtArg(v8)(), + FmtArg(v9)(), FmtArg(v10)(),FmtArg(v11)(), + FmtArg(v12)(),FmtArg(v13)(),FmtArg(v14)(), + FmtArg(v15)(), FmtArg(v16)()); + } + template + void Format(const CT* szFmt, const A1& v1, const A2& v2, const A3& v3, + const A4& v4, const A5& v5, const A6& v6, const A7& v7, + const A8& v8, const A9& v9, const A10& v10, const A11& v11, + const A12& v12, const A13& v13, const A14& v14, const A15& v15, + const A16& v16, const A17& v17) + { + Fmt(szFmt, FmtArg(v1)(), FmtArg(v2)(), + FmtArg(v3)(), FmtArg(v4)(), FmtArg(v5)(), + FmtArg(v6)(), FmtArg(v7)(), FmtArg(v8)(), + FmtArg(v9)(), FmtArg(v10)(),FmtArg(v11)(), + FmtArg(v12)(),FmtArg(v13)(),FmtArg(v14)(), + FmtArg(v15)(),FmtArg(v16)(),FmtArg(v17)()); + } + +#else // #ifdef SS_SAFE_FORMAT + + +#ifndef SS_ANSI + + void Format(UINT nId, ...) + { + va_list argList; + va_start(argList, nId); + + MYTYPE strFmt; + if ( strFmt.Load(nId) ) + FormatV(strFmt, argList); + + va_end(argList); + } + +#endif // #ifdef SS_ANSI + + void Format(const CT* szFmt, ...) + { + va_list argList; + va_start(argList, szFmt); + FormatV(szFmt, argList); + va_end(argList); + } + +#endif // #ifdef SS_SAFE_FORMAT + + void AppendFormat(const CT* szFmt, ...) + { + va_list argList; + va_start(argList, szFmt); + AppendFormatV(szFmt, argList); + va_end(argList); + } + + #define MAX_FMT_TRIES 5 // #of times we try + #define FMT_BLOCK_SIZE 2048 // # of bytes to increment per try + #define BUFSIZE_1ST 256 + #define BUFSIZE_2ND 512 + #define STD_BUF_SIZE 1024 + + // an efficient way to add formatted characters to the string. You may only + // add up to STD_BUF_SIZE characters at a time, though + void AppendFormatV(const CT* szFmt, va_list argList) + { + CT szBuf[STD_BUF_SIZE]; + int nLen = ssnprintf(szBuf, STD_BUF_SIZE-1, szFmt, argList); + + if ( 0 < nLen ) + this->append(szBuf, nLen); + } + + // ------------------------------------------------------------------------- + // FUNCTION: FormatV + // void FormatV(PCSTR szFormat, va_list, argList); + // + // DESCRIPTION: + // This function formats the string with sprintf style format-specs. + // It makes a general guess at required buffer size and then tries + // successively larger buffers until it finds one big enough or a + // threshold (MAX_FMT_TRIES) is exceeded. + // + // PARAMETERS: + // szFormat - a PCSTR holding the format of the output + // argList - a Microsoft specific va_list for variable argument lists + // + // RETURN VALUE: + // ------------------------------------------------------------------------- + + void FormatV(const CT* szFormat, va_list argList) + { + #ifdef SS_ANSI + + MYTYPE str; + int nLen = sslen(szFormat) + STD_BUF_SIZE; + +// OG replace ssnprint by ssvsprint for mac osx +#if !defined(DRIVER_WINDOWS) + ssvsprintf(str.GetBuffer(nLen), nLen-1, szFormat, argList); +#else + ssnprintf(str.GetBuffer(nLen), nLen-1, szFormat, argList); +#endif + + str.ReleaseBuffer(); + *this = str; + + #else + + CT* pBuf = NULL; + int nChars = 1; + int nUsed = 0; + size_type nActual = 0; + int nTry = 0; + + do + { + // Grow more than linearly (e.g. 512, 1536, 3072, etc) + + nChars += ((nTry+1) * FMT_BLOCK_SIZE); + pBuf = reinterpret_cast(_alloca(sizeof(CT)*nChars)); + nUsed = ssnprintf(pBuf, nChars-1, szFormat, argList); + + // Ensure proper NULL termination. + + nActual = nUsed == -1 ? nChars-1 : SSMIN(nUsed, nChars-1); + pBuf[nActual]= '\0'; + + + } while ( nUsed < 0 && nTry++ < MAX_FMT_TRIES ); + + // assign whatever we managed to format + + this->assign(pBuf, nActual); + + #endif + } + + // ------------------------------------------------------------------------- + // CString Facade Functions: + // + // The following methods are intended to allow you to use this class as a + // near drop-in replacement for CString. + // ------------------------------------------------------------------------- + #ifdef SS_WIN32 + BSTR AllocSysString() const + { + ostring os; + ssasn(os, *this); + return ::SysAllocString(os.c_str()); + } + #endif + +#ifndef SS_NO_LOCALE + int Collate(PCMYSTR szThat) const + { + return sscoll(this->c_str(), this->length(), szThat, sslen(szThat)); + } + + int CollateNoCase(PCMYSTR szThat) const + { + return ssicoll(this->c_str(), this->length(), szThat, sslen(szThat)); + } +#endif + int Compare(PCMYSTR szThat) const + { + return this->compare(szThat); + } + + int CompareNoCase(PCMYSTR szThat) const + { + return ssicmp(this->c_str(), szThat); + } + + int Delete(int nIdx, int nCount=1) + { + if ( nIdx < 0 ) + nIdx = 0; + + if ( nIdx < this->GetLength() ) + this->erase(static_cast(nIdx), static_cast(nCount)); + + return GetLength(); + } + + void Empty() + { + this->erase(); + } + + int Find(CT ch) const + { + MYSIZE nIdx = this->find_first_of(ch); + return static_cast(MYBASE::npos == nIdx ? -1 : nIdx); + } + + int Find(PCMYSTR szSub) const + { + MYSIZE nIdx = this->find(szSub); + return static_cast(MYBASE::npos == nIdx ? -1 : nIdx); + } + + int Find(CT ch, int nStart) const + { + // CString::Find docs say add 1 to nStart when it's not zero + // CString::Find code doesn't do that however. We'll stick + // with what the code does + + MYSIZE nIdx = this->find_first_of(ch, static_cast(nStart)); + return static_cast(MYBASE::npos == nIdx ? -1 : nIdx); + } + + int Find(PCMYSTR szSub, int nStart) const + { + // CString::Find docs say add 1 to nStart when it's not zero + // CString::Find code doesn't do that however. We'll stick + // with what the code does + + MYSIZE nIdx = this->find(szSub, static_cast(nStart)); + return static_cast(MYBASE::npos == nIdx ? -1 : nIdx); + } + + int FindOneOf(PCMYSTR szCharSet) const + { + MYSIZE nIdx = this->find_first_of(szCharSet); + return static_cast(MYBASE::npos == nIdx ? -1 : nIdx); + } + +#ifndef SS_ANSI + void FormatMessage(PCMYSTR szFormat, ...) throw(std::exception) + { + va_list argList; + va_start(argList, szFormat); + PMYSTR szTemp; + if ( ssfmtmsg(FORMAT_MESSAGE_FROM_STRING|FORMAT_MESSAGE_ALLOCATE_BUFFER, + szFormat, 0, 0, + reinterpret_cast(&szTemp), 0, &argList) == 0 || + szTemp == 0 ) + { + throw std::runtime_error("out of memory"); + } + *this = szTemp; + LocalFree(szTemp); + va_end(argList); + } + + void FormatMessage(UINT nFormatId, ...) throw(std::exception) + { + MYTYPE sFormat; + VERIFY(sFormat.LoadString(nFormatId)); + va_list argList; + va_start(argList, nFormatId); + PMYSTR szTemp; + if ( ssfmtmsg(FORMAT_MESSAGE_FROM_STRING|FORMAT_MESSAGE_ALLOCATE_BUFFER, + sFormat, 0, 0, + reinterpret_cast(&szTemp), 0, &argList) == 0 || + szTemp == 0) + { + throw std::runtime_error("out of memory"); + } + *this = szTemp; + LocalFree(szTemp); + va_end(argList); + } +#endif + + // GetAllocLength -- an MSVC7 function but it costs us nothing to add it. + + int GetAllocLength() + { + return static_cast(this->capacity()); + } + + // ------------------------------------------------------------------------- + // GetXXXX -- Direct access to character buffer + // ------------------------------------------------------------------------- + CT GetAt(int nIdx) const + { + return this->at(static_cast(nIdx)); + } + + CT* GetBuffer(int nMinLen=-1) + { + return GetBuf(nMinLen); + } + + CT* GetBufferSetLength(int nLen) + { + return BufferSet(nLen); + } + + // GetLength() -- MFC docs say this is the # of BYTES but + // in truth it is the number of CHARACTERs (chars or wchar_ts) + int GetLength() const + { + return static_cast(this->length()); + } + + int Insert(int nIdx, CT ch) + { + if ( static_cast(nIdx) > this->size()-1 ) + this->append(1, ch); + else + this->insert(static_cast(nIdx), 1, ch); + + return GetLength(); + } + int Insert(int nIdx, PCMYSTR sz) + { + if ( static_cast(nIdx) >= this->size() ) + this->append(sz, static_cast(sslen(sz))); + else + this->insert(static_cast(nIdx), sz); + + return GetLength(); + } + + bool IsEmpty() const + { + return this->empty(); + } + + MYTYPE Left(int nCount) const + { + // Range check the count. + + nCount = SSMAX(0, SSMIN(nCount, static_cast(this->size()))); + return this->substr(0, static_cast(nCount)); + } + +#ifndef SS_ANSI + bool LoadString(UINT nId) + { + return this->Load(nId); + } +#endif + + void MakeLower() + { + ToLower(); + } + + void MakeReverse() + { + std::reverse(this->begin(), this->end()); + } + + void MakeUpper() + { + ToUpper(); + } + + MYTYPE Mid(int nFirst) const + { + return Mid(nFirst, this->GetLength()-nFirst); + } + + MYTYPE Mid(int nFirst, int nCount) const + { + // CString does range checking here. Since we're trying to emulate it, + // we must check too. + + if ( nFirst < 0 ) + nFirst = 0; + if ( nCount < 0 ) + nCount = 0; + + int nSize = static_cast(this->size()); + + if ( nFirst + nCount > nSize ) + nCount = nSize - nFirst; + + if ( nFirst > nSize ) + return MYTYPE(); + + ASSERT(nFirst >= 0); + ASSERT(nFirst + nCount <= nSize); + + return this->substr(static_cast(nFirst), + static_cast(nCount)); + } + + void ReleaseBuffer(int nNewLen=-1) + { + RelBuf(nNewLen); + } + + int Remove(CT ch) + { + MYSIZE nIdx = 0; + int nRemoved = 0; + while ( (nIdx=this->find_first_of(ch)) != MYBASE::npos ) + { + this->erase(nIdx, 1); + nRemoved++; + } + return nRemoved; + } + + int Replace(CT chOld, CT chNew) + { + int nReplaced = 0; + + for ( MYITER iter=this->begin(); iter != this->end(); iter++ ) + { + if ( *iter == chOld ) + { + *iter = chNew; + nReplaced++; + } + } + + return nReplaced; + } + + int Replace(PCMYSTR szOld, PCMYSTR szNew) + { + int nReplaced = 0; + MYSIZE nIdx = 0; + MYSIZE nOldLen = sslen(szOld); + + if ( 0 != nOldLen ) + { + // If the replacement string is longer than the one it replaces, this + // string is going to have to grow in size, Figure out how much + // and grow it all the way now, rather than incrementally + + MYSIZE nNewLen = sslen(szNew); + if ( nNewLen > nOldLen ) + { + int nFound = 0; + while ( nIdx < this->length() && + (nIdx=this->find(szOld, nIdx)) != MYBASE::npos ) + { + nFound++; + nIdx += nOldLen; + } + this->reserve(this->size() + nFound * (nNewLen - nOldLen)); + } + + + static const CT ch = CT(0); + PCMYSTR szRealNew = szNew == 0 ? &ch : szNew; + nIdx = 0; + + while ( nIdx < this->length() && + (nIdx=this->find(szOld, nIdx)) != MYBASE::npos ) + { + this->replace(this->begin()+nIdx, this->begin()+nIdx+nOldLen, + szRealNew); + + nReplaced++; + nIdx += nNewLen; + } + } + + return nReplaced; + } + + int ReverseFind(CT ch) const + { + MYSIZE nIdx = this->find_last_of(ch); + return static_cast(MYBASE::npos == nIdx ? -1 : nIdx); + } + + // ReverseFind overload that's not in CString but might be useful + // OG : had to add (PCMYSTR) cast to cope with XCode compilation issue + int ReverseFind(PCMYSTR szFind, MYSIZE pos=MYBASE::npos) const + { + MYSIZE nIdx = this->rfind(0 == szFind ? (PCMYSTR) MYTYPE() : szFind, pos); + return static_cast(MYBASE::npos == nIdx ? -1 : nIdx); + } + + MYTYPE Right(int nCount) const + { + // Range check the count. + + nCount = SSMAX(0, SSMIN(nCount, static_cast(this->size()))); + return this->substr(this->size()-static_cast(nCount)); + } + + void SetAt(int nIndex, CT ch) + { + ASSERT(this->size() > static_cast(nIndex)); + this->at(static_cast(nIndex)) = ch; + } + +#ifndef SS_ANSI + BSTR SetSysString(BSTR* pbstr) const + { + ostring os; + ssasn(os, *this); + if ( !::SysReAllocStringLen(pbstr, os.c_str(), os.length()) ) + throw std::runtime_error("out of memory"); + + ASSERT(*pbstr != 0); + return *pbstr; + } +#endif + + MYTYPE SpanExcluding(PCMYSTR szCharSet) const + { + MYSIZE pos = this->find_first_of(szCharSet); + return pos == MYBASE::npos ? *this : Left(pos); + } + + MYTYPE SpanIncluding(PCMYSTR szCharSet) const + { + MYSIZE pos = this->find_first_not_of(szCharSet); + return pos == MYBASE::npos ? *this : Left(pos); + } + +#if defined SS_WIN32 && !defined(UNICODE) && !defined(SS_ANSI) + + // CString's OemToAnsi and AnsiToOem functions are available only in + // Unicode builds. However since we're a template we also need a + // runtime check of CT and a reinterpret_cast to account for the fact + // that CStdStringW gets instantiated even in non-Unicode builds. + + void AnsiToOem() + { + if ( sizeof(CT) == sizeof(char) && !empty() ) + { + ::CharToOem(reinterpret_cast(this->c_str()), + reinterpret_cast(GetBuf())); + } + else + { + ASSERT(false); + } + } + + void OemToAnsi() + { + if ( sizeof(CT) == sizeof(char) && !empty() ) + { + ::OemToChar(reinterpret_cast(this->c_str()), + reinterpret_cast(GetBuf())); + } + else + { + ASSERT(false); + } + } + +#endif + + + // ------------------------------------------------------------------------- + // Trim and its variants + // ------------------------------------------------------------------------- + MYTYPE& Trim() + { + return TrimLeft().TrimRight(); + } + + MYTYPE& TrimLeft() + { + this->erase(this->begin(), + std::find_if(this->begin(), this->end(), NotSpace())); + + return *this; + } + + MYTYPE& TrimLeft(CT tTrim) + { + this->erase(0, this->find_first_not_of(tTrim)); + return *this; + } + + MYTYPE& TrimLeft(PCMYSTR szTrimChars) + { + this->erase(0, this->find_first_not_of(szTrimChars)); + return *this; + } + + MYTYPE& TrimRight() + { + // NOTE: When comparing reverse_iterators here (MYRITER), I avoid using + // operator!=. This is because namespace rel_ops also has a template + // operator!= which conflicts with the global operator!= already defined + // for reverse_iterator in the header . + // Thanks to John James for alerting me to this. + + MYRITER it = std::find_if(this->rbegin(), this->rend(), NotSpace()); + if ( !(this->rend() == it) ) + this->erase(this->rend() - it); + + this->erase(!(it == this->rend()) ? this->find_last_of(*it) + 1 : 0); + return *this; + } + + MYTYPE& TrimRight(CT tTrim) + { + MYSIZE nIdx = this->find_last_not_of(tTrim); + this->erase(MYBASE::npos == nIdx ? 0 : ++nIdx); + return *this; + } + + MYTYPE& TrimRight(PCMYSTR szTrimChars) + { + MYSIZE nIdx = this->find_last_not_of(szTrimChars); + this->erase(MYBASE::npos == nIdx ? 0 : ++nIdx); + return *this; + } + + void FreeExtra() + { + MYTYPE mt; + this->swap(mt); + if ( !mt.empty() ) + this->assign(mt.c_str(), mt.size()); + } + + // I have intentionally not implemented the following CString + // functions. You cannot make them work without taking advantage + // of implementation specific behavior. However if you absolutely + // MUST have them, uncomment out these lines for "sort-of-like" + // their behavior. You're on your own. + + CT* LockBuffer() { return GetBuf(); }// won't really lock + void UnlockBuffer() { }; // why have UnlockBuffer w/o LockBuffer? + + // Array-indexing operators. Required because we defined an implicit cast + // to operator const CT* (Thanks to Julian Selman for pointing this out) + + CT& operator[](int nIdx) + { + return static_cast(this)->operator[](static_cast(nIdx)); + } + + const CT& operator[](int nIdx) const + { + return static_cast(this)->operator[](static_cast(nIdx)); + } + + CT& operator[](unsigned int nIdx) + { + return static_cast(this)->operator[](static_cast(nIdx)); + } + + const CT& operator[](unsigned int nIdx) const + { + return static_cast(this)->operator[](static_cast(nIdx)); + } + +#ifndef SS_NO_IMPLICIT_CAST + operator const CT*() const + { + return this->c_str(); + } +#endif + + // IStream related functions. Useful in IPersistStream implementations + +#ifdef SS_INC_COMDEF + + // struct SSSHDR - useful for non Std C++ persistence schemes. + typedef struct SSSHDR + { + BYTE byCtrl; + ULONG nChars; + } SSSHDR; // as in "Standard String Stream Header" + + #define SSSO_UNICODE 0x01 // the string is a wide string + #define SSSO_COMPRESS 0x02 // the string is compressed + + // ------------------------------------------------------------------------- + // FUNCTION: StreamSize + // REMARKS: + // Returns how many bytes it will take to StreamSave() this CStdString + // object to an IStream. + // ------------------------------------------------------------------------- + ULONG StreamSize() const + { + // Control header plus string + ASSERT(this->size()*sizeof(CT) < 0xffffffffUL - sizeof(SSSHDR)); + return (this->size() * sizeof(CT)) + sizeof(SSSHDR); + } + + // ------------------------------------------------------------------------- + // FUNCTION: StreamSave + // REMARKS: + // Saves this CStdString object to a COM IStream. + // ------------------------------------------------------------------------- + HRESULT StreamSave(IStream* pStream) const + { + ASSERT(this->size()*sizeof(CT) < 0xffffffffUL - sizeof(SSSHDR)); + HRESULT hr = E_FAIL; + ASSERT(pStream != 0); + SSSHDR hdr; + hdr.byCtrl = sizeof(CT) == 2 ? SSSO_UNICODE : 0; + hdr.nChars = this->size(); + + + if ( FAILED(hr=pStream->Write(&hdr, sizeof(SSSHDR), 0)) ) + { + TRACE(_T("StreamSave: Cannot write control header, ERR=0x%X\n"),hr); + } + else if ( empty() ) + { + ; // nothing to write + } + else if ( FAILED(hr=pStream->Write(this->c_str(), + this->size()*sizeof(CT), 0)) ) + { + TRACE(_T("StreamSave: Cannot write string to stream 0x%X\n"), hr); + } + + return hr; + } + + + // ------------------------------------------------------------------------- + // FUNCTION: StreamLoad + // REMARKS: + // This method loads the object from an IStream. + // ------------------------------------------------------------------------- + HRESULT StreamLoad(IStream* pStream) + { + ASSERT(pStream != 0); + SSSHDR hdr; + HRESULT hr = E_FAIL; + + if ( FAILED(hr=pStream->Read(&hdr, sizeof(SSSHDR), 0)) ) + { + TRACE(_T("StreamLoad: Cant read control header, ERR=0x%X\n"), hr); + } + else if ( hdr.nChars > 0 ) + { + ULONG nRead = 0; + PMYSTR pMyBuf = BufferSet(hdr.nChars); + + // If our character size matches the character size of the string + // we're trying to read, then we can read it directly into our + // buffer. Otherwise, we have to read into an intermediate buffer + // and convert. + + if ( (hdr.byCtrl & SSSO_UNICODE) != 0 ) + { + ULONG nBytes = hdr.nChars * sizeof(wchar_t); + if ( sizeof(CT) == sizeof(wchar_t) ) + { + if ( FAILED(hr=pStream->Read(pMyBuf, nBytes, &nRead)) ) + TRACE(_T("StreamLoad: Cannot read string: 0x%X\n"), hr); + } + else + { + PWSTR pBufW = reinterpret_cast(_alloca((nBytes)+1)); + if ( FAILED(hr=pStream->Read(pBufW, nBytes, &nRead)) ) + TRACE(_T("StreamLoad: Cannot read string: 0x%X\n"), hr); + else + sscpy(pMyBuf, pBufW, hdr.nChars); + } + } + else + { + ULONG nBytes = hdr.nChars * sizeof(char); + if ( sizeof(CT) == sizeof(char) ) + { + if ( FAILED(hr=pStream->Read(pMyBuf, nBytes, &nRead)) ) + TRACE(_T("StreamLoad: Cannot read string: 0x%X\n"), hr); + } + else + { + PSTR pBufA = reinterpret_cast(_alloca(nBytes)); + if ( FAILED(hr=pStream->Read(pBufA, hdr.nChars, &nRead)) ) + TRACE(_T("StreamLoad: Cannot read string: 0x%X\n"), hr); + else + sscpy(pMyBuf, pBufA, hdr.nChars); + } + } + } + else + { + this->erase(); + } + return hr; + } +#endif // #ifdef SS_INC_COMDEF + +#ifndef SS_ANSI + + // SetResourceHandle/GetResourceHandle. In MFC builds, these map directly + // to AfxSetResourceHandle and AfxGetResourceHandle. In non-MFC builds they + // point to a single static HINST so that those who call the member + // functions that take resource IDs can provide an alternate HINST of a DLL + // to search. This is not exactly the list of HMODULES that MFC provides + // but it's better than nothing. + + #ifdef _MFC_VER + static void SetResourceHandle(HMODULE hNew) + { + AfxSetResourceHandle(hNew); + } + static HMODULE GetResourceHandle() + { + return AfxGetResourceHandle(); + } + #elif defined(_WTL_VER) // AR: WTL has no SetResourceHandle equivalent + static HMODULE GetResourceHandle() + { + #if (_ATL_VER >= 0x0700) + return ATL::_AtlBaseModule.GetResourceInstance(); + #else // !(_ATL_VER >= 0x0700) + return _Module.GetResourceInstance(); + #endif // !(_ATL_VER >= 0x0700) + } + #else + static void SetResourceHandle(HMODULE hNew) + { + SSResourceHandle() = hNew; + } + + static HMODULE GetResourceHandle() + { + return SSResourceHandle(); + } + #endif + +#endif +}; + +// ----------------------------------------------------------------------------- +// MSVC USERS: HOW TO EXPORT CSTDSTRING FROM A DLL +// +// If you are using MS Visual C++ and you want to export CStdStringA and +// CStdStringW from a DLL, then all you need to +// +// 1. make sure that all components link to the same DLL version +// of the CRT (not the static one). +// 2. Uncomment the 3 lines of code below +// 3. #define 2 macros per the instructions in MS KnowledgeBase +// article Q168958. The macros are: +// +// MACRO DEFINTION WHEN EXPORTING DEFINITION WHEN IMPORTING +// ----- ------------------------ ------------------------- +// SSDLLEXP (nothing, just #define it) extern +// SSDLLSPEC __declspec(dllexport) __declspec(dllimport) +// +// Note that these macros must be available to ALL clients who want to +// link to the DLL and use the class. If they +// +// A word of advice: Don't bother. +// +// Really, it is not necessary to export CStdString functions from a DLL. I +// never do. In my projects, I do generally link to the DLL version of the +// Standard C++ Library, but I do NOT attempt to export CStdString functions. +// I simply include the header where it is needed and allow for the code +// redundancy. +// +// That redundancy is a lot less than you think. This class does most of its +// work via the Standard C++ Library, particularly the base_class basic_string<> +// member functions. Most of the functions here are small enough to be inlined +// anyway. Besides, you'll find that in actual practice you use less than 1/2 +// of the code here, even in big projects and different modules will use as +// little as 10% of it. That means a lot less functions actually get linked +// your binaries. If you export this code from a DLL, it ALL gets linked in. +// +// I've compared the size of the binaries from exporting vs NOT exporting. Take +// my word for it -- exporting this code is not worth the hassle. +// +// ----------------------------------------------------------------------------- +//#pragma warning(disable:4231) // non-standard extension ("extern template") +// SSDLLEXP template class SSDLLSPEC CStdStr; +// SSDLLEXP template class SSDLLSPEC CStdStr; + + +// ============================================================================= +// END OF CStdStr INLINE FUNCTION DEFINITIONS +// ============================================================================= + +// Now typedef our class names based upon this humongous template + +typedef CStdStr CStdStringA; // a better std::string +typedef CStdStr CStdStringW; // a better std::wstring +typedef CStdStr CStdStringO; // almost always CStdStringW + +// ----------------------------------------------------------------------------- +// CStdStr addition functions defined as inline +// ----------------------------------------------------------------------------- + + +inline CStdStringA operator+(const CStdStringA& s1, const CStdStringA& s2) +{ + CStdStringA sRet(SSREF(s1)); + sRet.append(s2); + return sRet; +} +inline CStdStringA operator+(const CStdStringA& s1, CStdStringA::value_type t) +{ + CStdStringA sRet(SSREF(s1)); + sRet.append(1, t); + return sRet; +} +inline CStdStringA operator+(const CStdStringA& s1, PCSTR pA) +{ + CStdStringA sRet(SSREF(s1)); + sRet.append(pA); + return sRet; +} +inline CStdStringA operator+(PCSTR pA, const CStdStringA& sA) +{ + CStdStringA sRet; + CStdStringA::size_type nObjSize = sA.size(); + CStdStringA::size_type nLitSize = + static_cast(sslen(pA)); + + sRet.reserve(nLitSize + nObjSize); + sRet.assign(pA); + sRet.append(sA); + return sRet; +} + + +inline CStdStringA operator+(const CStdStringA& s1, const CStdStringW& s2) +{ + return s1 + CStdStringA(s2); +} +inline CStdStringW operator+(const CStdStringW& s1, const CStdStringW& s2) +{ + CStdStringW sRet(SSREF(s1)); + sRet.append(s2); + return sRet; +} +inline CStdStringA operator+(const CStdStringA& s1, PCWSTR pW) +{ + return s1 + CStdStringA(pW); +} + +#ifdef UNICODE + inline CStdStringW operator+(PCWSTR pW, const CStdStringA& sA) + { + return CStdStringW(pW) + CStdStringW(SSREF(sA)); + } + inline CStdStringW operator+(PCSTR pA, const CStdStringW& sW) + { + return CStdStringW(pA) + sW; + } +#else + inline CStdStringA operator+(PCWSTR pW, const CStdStringA& sA) + { + return CStdStringA(pW) + sA; + } + inline CStdStringA operator+(PCSTR pA, const CStdStringW& sW) + { + return pA + CStdStringA(sW); + } +#endif + +// ...Now the wide string versions. +inline CStdStringW operator+(const CStdStringW& s1, CStdStringW::value_type t) +{ + CStdStringW sRet(SSREF(s1)); + sRet.append(1, t); + return sRet; +} +inline CStdStringW operator+(const CStdStringW& s1, PCWSTR pW) +{ + CStdStringW sRet(SSREF(s1)); + sRet.append(pW); + return sRet; +} +inline CStdStringW operator+(PCWSTR pW, const CStdStringW& sW) +{ + CStdStringW sRet; + CStdStringW::size_type nObjSize = sW.size(); + CStdStringA::size_type nLitSize = + static_cast(sslen(pW)); + + sRet.reserve(nLitSize + nObjSize); + sRet.assign(pW); + sRet.append(sW); + return sRet; +} + +inline CStdStringW operator+(const CStdStringW& s1, const CStdStringA& s2) +{ + return s1 + CStdStringW(s2); +} +inline CStdStringW operator+(const CStdStringW& s1, PCSTR pA) +{ + return s1 + CStdStringW(pA); +} + + +// New-style format function is a template + +#ifdef SS_SAFE_FORMAT + +template<> +struct FmtArg +{ + explicit FmtArg(const CStdStringA& arg) : a_(arg) {} + PCSTR operator()() const { return a_.c_str(); } + const CStdStringA& a_; +private: + FmtArg& operator=(const FmtArg&) { return *this; } +}; +template<> +struct FmtArg +{ + explicit FmtArg(const CStdStringW& arg) : a_(arg) {} + PCWSTR operator()() const { return a_.c_str(); } + const CStdStringW& a_; +private: + FmtArg& operator=(const FmtArg&) { return *this; } +}; + +template<> +struct FmtArg +{ + explicit FmtArg(const std::string& arg) : a_(arg) {} + PCSTR operator()() const { return a_.c_str(); } + const std::string& a_; +private: + FmtArg& operator=(const FmtArg&) { return *this; } +}; +template<> +struct FmtArg +{ + explicit FmtArg(const std::wstring& arg) : a_(arg) {} + PCWSTR operator()() const { return a_.c_str(); } + const std::wstring& a_; +private: + FmtArg& operator=(const FmtArg&) {return *this;} +}; +#endif // #ifdef SS_SAFEFORMAT + +#ifndef SS_ANSI + // SSResourceHandle: our MFC-like resource handle + inline HMODULE& SSResourceHandle() + { + static HMODULE hModuleSS = GetModuleHandle(0); + return hModuleSS; + } +#endif + + +// In MFC builds, define some global serialization operators +// Special operators that allow us to serialize CStdStrings to CArchives. +// Note that we use an intermediate CString object in order to ensure that +// we use the exact same format. + +#ifdef _MFC_VER + /* + //OG + inline CArchive& AFXAPI operator<<(CArchive& ar, const CStdStringA& strA) + { + CString strTemp = strA; + return ar << strTemp; + } + inline CArchive& AFXAPI operator<<(CArchive& ar, const CStdStringW& strW) + { + CString strTemp = strW; + return ar << strTemp; + } + */ + + inline CArchive& AFXAPI operator>>(CArchive& ar, CStdStringA& strA) + { + CString strTemp; + ar >> strTemp; + strA = strTemp; + return ar; + } + inline CArchive& AFXAPI operator>>(CArchive& ar, CStdStringW& strW) + { + CString strTemp; + ar >> strTemp; + strW = strTemp; + return ar; + } +#endif // #ifdef _MFC_VER -- (i.e. is this MFC?) + + + +// ----------------------------------------------------------------------------- +// GLOBAL FUNCTION: WUFormat +// CStdStringA WUFormat(UINT nId, ...); +// CStdStringA WUFormat(PCSTR szFormat, ...); +// +// REMARKS: +// This function allows the caller for format and return a CStdStringA +// object with a single line of code. +// ----------------------------------------------------------------------------- + +inline CStdStringA WUFormatA(PCSTR szFormat, ...) +{ + va_list argList; + va_start(argList, szFormat); + CStdStringA strOut; + strOut.FormatV(szFormat, argList); + va_end(argList); + return strOut; +} +inline CStdStringW WUFormatW(PCWSTR szwFormat, ...) +{ + va_list argList; + va_start(argList, szwFormat); + CStdStringW strOut; + strOut.FormatV(szwFormat, argList); + va_end(argList); + return strOut; +} +#ifdef SS_ANSI +#else + inline CStdStringA WUFormatA(UINT nId, ...) + { + va_list argList; + va_start(argList, nId); + + CStdStringA strFmt; + CStdStringA strOut; + if ( strFmt.Load(nId) ) + strOut.FormatV(strFmt, argList); + + va_end(argList); + return strOut; + } + + inline CStdStringW WUFormatW(UINT nId, ...) + { + va_list argList; + va_start(argList, nId); + + CStdStringW strFmt; + CStdStringW strOut; + if ( strFmt.Load(nId) ) + strOut.FormatV(strFmt, argList); + + va_end(argList); + return strOut; + } +#endif // #ifdef SS_ANSI + + + +#if defined(SS_WIN32) && !defined (SS_ANSI) + // ------------------------------------------------------------------------- + // FUNCTION: WUSysMessage + // CStdStringA WUSysMessageA(DWORD dwError, DWORD dwLangId=SS_DEFLANGID); + // CStdStringW WUSysMessageW(DWORD dwError, DWORD dwLangId=SS_DEFLANGID); + // + // DESCRIPTION: + // This function simplifies the process of obtaining a string equivalent + // of a system error code returned from GetLastError(). You simply + // supply the value returned by GetLastError() to this function and the + // corresponding system string is returned in the form of a CStdStringA. + // + // PARAMETERS: + // dwError - a DWORD value representing the error code to be translated + // dwLangId - the language id to use. defaults to english. + // + // RETURN VALUE: + // a CStdStringA equivalent of the error code. Currently, this function + // only returns either English of the system default language strings. + // ------------------------------------------------------------------------- + #define SS_DEFLANGID MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT) + inline CStdStringA WUSysMessageA(DWORD dwError, DWORD dwLangId=SS_DEFLANGID) + { + CHAR szBuf[512]; + + if ( 0 != ::FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwError, + dwLangId, szBuf, 511, NULL) ) + return WUFormatA("%s (0x%X)", szBuf, dwError); + else + return WUFormatA("Unknown error (0x%X)", dwError); + } + inline CStdStringW WUSysMessageW(DWORD dwError, DWORD dwLangId=SS_DEFLANGID) + { + WCHAR szBuf[512]; + + if ( 0 != ::FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwError, + dwLangId, szBuf, 511, NULL) ) + return WUFormatW(L"%s (0x%X)", szBuf, dwError); + else + return WUFormatW(L"Unknown error (0x%X)", dwError); + } +#endif + +// Define TCHAR based friendly names for some of these functions + +#ifdef UNICODE + //#define CStdString CStdStringW + typedef CStdStringW CStdString; + #define WUSysMessage WUSysMessageW + #define WUFormat WUFormatW +#else + //#define CStdString CStdStringA + typedef CStdStringA CStdString; + #define WUSysMessage WUSysMessageA + #define WUFormat WUFormatA +#endif + +// ...and some shorter names for the space-efficient + +#define WUSysMsg WUSysMessage +#define WUSysMsgA WUSysMessageA +#define WUSysMsgW WUSysMessageW +#define WUFmtA WUFormatA +#define WUFmtW WUFormatW +#define WUFmt WUFormat +#define WULastErrMsg() WUSysMessage(::GetLastError()) +#define WULastErrMsgA() WUSysMessageA(::GetLastError()) +#define WULastErrMsgW() WUSysMessageW(::GetLastError()) + + +// ----------------------------------------------------------------------------- +// FUNCTIONAL COMPARATORS: +// REMARKS: +// These structs are derived from the std::binary_function template. They +// give us functional classes (which may be used in Standard C++ Library +// collections and algorithms) that perform case-insensitive comparisons of +// CStdString objects. This is useful for maps in which the key may be the +// proper string but in the wrong case. +// ----------------------------------------------------------------------------- +#define StdStringLessNoCaseW SSLNCW // avoid VC compiler warning 4786 +#define StdStringEqualsNoCaseW SSENCW +#define StdStringLessNoCaseA SSLNCA +#define StdStringEqualsNoCaseA SSENCA + +#ifdef UNICODE + #define StdStringLessNoCase SSLNCW + #define StdStringEqualsNoCase SSENCW +#else + #define StdStringLessNoCase SSLNCA + #define StdStringEqualsNoCase SSENCA +#endif + +struct StdStringLessNoCaseW + : std::binary_function +{ + inline + bool operator()(const CStdStringW& sLeft, const CStdStringW& sRight) const + { return ssicmp(sLeft.c_str(), sRight.c_str()) < 0; } +}; +struct StdStringEqualsNoCaseW + : std::binary_function +{ + inline + bool operator()(const CStdStringW& sLeft, const CStdStringW& sRight) const + { return ssicmp(sLeft.c_str(), sRight.c_str()) == 0; } +}; +struct StdStringLessNoCaseA + : std::binary_function +{ + inline + bool operator()(const CStdStringA& sLeft, const CStdStringA& sRight) const + { return ssicmp(sLeft.c_str(), sRight.c_str()) < 0; } +}; +struct StdStringEqualsNoCaseA + : std::binary_function +{ + inline + bool operator()(const CStdStringA& sLeft, const CStdStringA& sRight) const + { return ssicmp(sLeft.c_str(), sRight.c_str()) == 0; } +}; + +// If we had to define our own version of TRACE above, get rid of it now + +#ifdef TRACE_DEFINED_HERE + #undef TRACE + #undef TRACE_DEFINED_HERE +#endif + + +// These std::swap specializations come courtesy of Mike Crusader. + +//namespace std +//{ +// inline void swap(CStdStringA& s1, CStdStringA& s2) throw() +// { +// s1.swap(s2); +// } +// template<> +// inline void swap(CStdStringW& s1, CStdStringW& s2) throw() +// { +// s1.swap(s2); +// } +//} + +// Turn back on any Borland warnings we turned off. + +#ifdef __BORLANDC__ + #pragma option pop // Turn back on inline function warnings +// #pragma warn +inl // Turn back on inline function warnings +#endif + + +#define MyString CStdStringA // Force Non Unicode + +#endif // #ifndef STDSTRING_H diff --git a/kegs/Src/adb.cpp b/kegs/Src/adb.cpp new file mode 100644 index 0000000..8d0d376 --- /dev/null +++ b/kegs/Src/adb.cpp @@ -0,0 +1,2089 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "adb.h" +#include "moremem.h" +#include "paddles.h" +#include "sim65816.h" +#include "video.h" +#include "iwm.h" +#include "config.h" +#include "async_event.h" +#include "driver.h" + +s_adb g_adb; + +#define SHIFT_DOWN ( (g_adb.g_c025_val & 0x01) ) +#define CTRL_DOWN ( (g_adb.g_c025_val & 0x02) ) +#define CAPS_LOCK_DOWN ( (g_adb.g_c025_val & 0x04) ) +#define OPTION_DOWN ( (g_adb.g_c025_val & 0x40) ) +#define CMD_DOWN ( (g_adb.g_c025_val & 0x80) ) + +#define adb_print printf + +/* Format: a2code, ascii if no shift, ascii if shift, ascii if ctl */ + +const int a2_key_to_ascii[][4] = +{ + { 0x00, 'a', 'A', 0x01 }, + { 0x01, 's', 'S', 0x13 }, + { 0x02, 'd', 'D', 0x04 }, + { 0x03, 'f', 'F', 0x06 }, + { 0x04, 'h', 'H', 0x08 }, + { 0x05, 'g', 'G', 0x07 }, + { 0x06, 'z', 'Z', 0x1a }, + { 0x07, 'x', 'X', 0x18 }, + + { 0x08, 'c', 'C', 0x03 }, + { 0x09, 'v', 'V', 0x16 }, + { 0x0a, -1, -1, -1 }, + { 0x0b, 'b', 'B', 0x02 }, + { 0x0c, 'q', 'Q', 0x11 }, + { 0x0d, 'w', 'W', 0x17 }, + { 0x0e, 'e', 'E', 0x05 }, + { 0x0f, 'r', 'R', 0x12 }, + + { 0x10, 'y', 'Y', 0x19 }, + { 0x11, 't', 'T', 0x14 }, + { 0x12, '1', '!', -1 }, + { 0x13, '2', '@', 0x00 }, + { 0x14, '3', '#', -1 }, + { 0x15, '4', '$', -1 }, + { 0x16, '6', '^', 0x1e }, + { 0x17, '5', '%', -1 }, + + { 0x18, '=', '+', -1 }, + { 0x19, '9', '(', -1 }, + { 0x1a, '7', '&', -1 }, + { 0x1b, '-', '_', 0x1f }, + { 0x1c, '8', '*', -1 }, + { 0x1d, '0', ')', -1 }, + { 0x1e, ']', '}', 0x1d }, + { 0x1f, 'o', 'O', 0x0f }, + + { 0x20, 'u', 'U', 0x15 }, + { 0x21, '[', '{', 0x1b }, + { 0x22, 'i', 'I', 0x09 }, + { 0x23, 'p', 'P', 0x10 }, + { 0x24, 0x0d, 0x0d, -1 }, /* return */ + { 0x25, 'l', 'L', 0x0c }, + { 0x26, 'j', 'J', 0x0a }, + { 0x27, 0x27, '"', -1 }, /* single quote */ + + { 0x28, 'k', 'K', 0x0b }, + { 0x29, ';', ':', -1 }, + { 0x2a, 0x5c, '|', 0x1c }, /* \, | */ + { 0x2b, ',', '<', -1 }, + { 0x2c, '/', '?', 0x7f }, + { 0x2d, 'n', 'N', 0x0e }, + { 0x2e, 'm', 'M', 0x0d }, + { 0x2f, '.', '>', -1 }, + + { 0x30, 0x09, 0x09, -1 }, /* tab */ + { 0x31, ' ', ' ', -1 }, + { 0x32, '`', '~', -1 }, + { 0x33, 0x7f, 0x7f, -1 }, /* Delete */ + { 0x34, -1, -1, -1 }, + { 0x35, 0x1b, 0x1b, -1 }, /* Esc */ + { 0x36, 0x0200, 0x0200, -1 }, /* control */ + { 0x37, 0x8000, 0x8000, -1 }, /* Command */ + + { 0x38, 0x0100, 0x0100, -1 }, /* shift */ + { 0x39, 0x0400, 0x0400, -1 }, /* caps lock */ + { 0x3a, 0x4000, 0x4000, -1 }, /* Option */ + { 0x3b, 0x08, 0x08, -1 }, /* left */ + { 0x3c, 0x15, 0x15, -1 }, /* right */ + { 0x3d, 0x0a, 0x0a, -1 }, /* down */ + { 0x3e, 0x0b, 0x0b, -1 }, /* up arrow */ + { 0x3f, -1, -1, -1 }, + + { 0x40, -1, -1, -1 }, + { 0x41, 0x102e, 0x102c, -1 }, /* keypad . */ + { 0x42, -1, -1, -1 }, + { 0x43, 0x102a, 0x102a, -1 }, /* keypad * */ + { 0x44, -1, -1, -1 }, + { 0x45, 0x102b, 0x102b, -1 }, /* keypad + */ + { 0x46, -1, -1, -1 }, + { 0x47, 0x1018, 0x1018, -1 }, /* keypad Clear */ + + { 0x48, -1, -1, -1 }, + { 0x49, -1, -1, -1 }, + { 0x4a, -1, -1, -1 }, + { 0x4b, 0x102f, 0x102f, -1 }, /* keypad / */ + { 0x4c, 0x100d, 0x100d, -1 }, /* keypad enter */ + { 0x4d, -1, -1, -1 }, + { 0x4e, 0x102d, 0x102d, -1 }, /* keypad - */ + { 0x4f, -1, -1, -1 }, + + { 0x50, -1, -1, -1 }, + { 0x51, 0x103d, 0x103d, -1 }, /* keypad = */ + { 0x52, 0x1030, 0x1030, -1 }, /* keypad 0 */ + { 0x53, 0x1031, 0x1031, -1 }, /* keypad 1 */ + { 0x54, 0x1032, 0x1032, -1 }, /* keypad 2 */ + { 0x55, 0x1033, 0x1033, -1 }, /* keypad 3 */ + { 0x56, 0x1034, 0x1034, -1 }, /* keypad 4 */ + { 0x57, 0x1035, 0x1035, -1 }, /* keypad 5 */ + + { 0x58, 0x1036, 0x1036, -1 }, /* keypad 6 */ + { 0x59, 0x1037, 0x1037, -1 }, /* keypad 7 */ + { 0x5a, 'a', 'A', 0x01 }, /* probably not necessary */ + { 0x5b, 0x1038, 0x1038, -1 }, /* keypad 8 */ + { 0x5c, 0x1039, 0x1039, -1 }, /* keypad 9 */ + { 0x5d, -1, -1, -1 }, + { 0x5e, -1, -1, -1 }, + { 0x5f, -1, -1, -1 }, + + { 0x60, 0x8005, 0x1060, -1 }, /* F5 */ + { 0x61, 0x8006, 0x1061, -1 }, /* F6 */ + { 0x62, 0x8007, 0x1062, -1 }, /* F7 */ + { 0x63, 0x8003, 0x1063, -1 }, /* F3 */ + { 0x64, 0x8008, 0x1064, -1 }, /* F8 */ + { 0x65, 0x8009, 0x1065, -1 }, /* F9 */ + { 0x66, -1, -1, -1 }, + { 0x67, 0x800b, 0x1067, -1 }, /* F11 */ + + { 0x68, -1, -1, -1 }, +// { 0x69, 0x800d, 0x1069, -1 }, /* F13 */ +// OG remap F13 to reset + { 0x69, 0x800c, 0x1069, -1 }, /* F13 */ + { 0x6a, -1, -1, -1 }, + { 0x6b, 0x800e, 0x106b, -1 }, /* F14 */ + { 0x6c, -1, -1, -1 }, + { 0x6d, 0x800a, 0x106d, -1 }, /* F10 */ + { 0x6e, 0x4000, 0x4000, -1 }, /* windows key alias to option */ + { 0x6f, 0x800c, 0x106f, -1 }, /* F12 */ + + { 0x70, -1, -1, -1 }, + { 0x71, 0x800f, 0x1071, -1 }, /* F15 */ + { 0x72, 0x1072, 0x1072, -1 }, /* Help, insert */ + { 0x73, 0x1073, 0x1073, -1 }, /* Home */ + { 0x74, 0x1074, 0x1074, -1 }, /* Page up */ + { 0x75, 0x1075, 0x1075, -1 }, /* keypad delete */ + { 0x76, 0x8004, 0x1076, -1 }, /* F4 */ + { 0x77, 0x1077, 0x1077, -1 }, /* keypad end */ + + { 0x78, 0x8002, 0x1078, -1 }, /* F2 */ + { 0x79, 0x1079, 0x1079, -1 }, /* keypad page down */ + { 0x7a, 0x8001, 0x107a, -1 }, /* F1 */ + { 0x7b, 0x08, 0x08, -1 }, /* left */ /* remapped to 0x3b */ + { 0x7c, 0x15, 0x15, -1 }, /* right */ /* remapped to 0x3c */ + { 0x7d, 0x0a, 0x0a, -1 }, /* down */ /* remapped to 0x3d */ + { 0x7e, 0x0b, 0x0b, -1 }, /* up arrow */ /* remapped to 0x3e */ + { 0x7f, -1, -1, -1 } /* Reset */ +}; + +//extern int g_num_lines_prev_superhires640; +//extern int g_num_lines_prev_superhires; +//extern int g_fast_disk_emul; + +extern int g_swap_paddles; +extern int g_invert_paddles; +extern int g_joystick_type; +//extern int g_a2vid_palette; +extern int g_config_control_panel; +extern word32 g_cfg_vbl_count; + + + +void +adb_init() +{ + int keycode; + int i; + + if(g_adb.g_adb_init) { + halt_printf("g_adb.g_adb_init = %d!\n", g_adb.g_adb_init); + } + g_adb.g_adb_init = 1; + + for(i = 0; i < 128; i++) { + keycode = a2_key_to_ascii[i][0]; + if(keycode != i) { + printf("ADB keycode lost/skipped: i=%x: keycode=%x\n", + i, keycode); + my_exit(1); + } + } + + g_adb.g_c025_val = 0; + + for(i = 0; i < 4; i++) { + g_adb.g_virtual_key_up[i] = -1; + } + + for(i = 0; i < 10; i++) { + g_adb.g_keypad_key_is_down[i] = 0; + } + + adb_reset(); +} + +// OG Added adb_shut() +void adb_shut() +{ + g_adb.g_adb_init = 0; +} + +void +adb_reset() +{ + + g_adb.g_c027_val = 0; + + g_adb.g_key_down = 0; + + g_adb.g_kbd_dev_addr = 2; + g_adb.g_mouse_dev_addr = 3; + + g_adb.g_kbd_ctl_addr = 2; + g_adb.g_mouse_ctl_addr = 3; + + adb_clear_data_int(); + adb_clear_mouse_int(); + adb_clear_kbd_srq(); + + g_adb.g_adb_data_pending = 0; + g_adb.g_adb_interrupt_byte = 0; + g_adb.g_adb_state = ADB_IDLE; + g_adb.g_adb_mouse_coord = 0; + g_adb.g_adb_mouse_valid_data = 0; + + g_adb.g_kbd_reg0_pos = 0; + g_adb.g_kbd_reg3_16bit = 0x602; + + g_adb.g_last_c027_read = 0; +} + + +#define LEN_ADB_LOG 16 +STRUCT(Adb_log) { + word32 addr; + int val; + int state; +}; + +Adb_log g_adb_log[LEN_ADB_LOG]; +int g_adb_log_pos = 0; + +void +adb_log(word32 addr, int val) +{ + int pos; + + pos = g_adb_log_pos; + g_adb_log[pos].addr = addr; + g_adb_log[pos].val = val; + g_adb_log[pos].state = g_adb.g_adb_state; + pos++; + if(pos >= LEN_ADB_LOG) { + pos = 0; + } + g_adb_log_pos = pos; +} + +void +show_adb_log(void) +{ + int pos; + int i; + + pos = g_adb_log_pos; + printf("ADB log pos: %d\n", pos); + for(i = 0; i < LEN_ADB_LOG; i++) { + pos--; + if(pos < 0) { + pos = LEN_ADB_LOG - 1; + } + printf("%d:%d: addr:%04x = %02x, st:%d\n", i, pos, + g_adb_log[pos].addr, g_adb_log[pos].val, + g_adb_log[pos].state); + } + printf("kbd: dev: %x, ctl: %x; mouse: dev: %x, ctl: %x\n", + g_adb.g_kbd_dev_addr, g_adb.g_kbd_ctl_addr, + g_adb.g_mouse_dev_addr, g_adb.g_mouse_ctl_addr); + printf("g_adb.g_adb_state: %d, g_adb.g_adb_interrupt_byte: %02x\n", + g_adb.g_adb_state, g_adb.g_adb_interrupt_byte); +} + +void +adb_error(void) +{ + halt_printf("Adb Error\n"); + + show_adb_log(); +} + + + +void +adb_add_kbd_srq() +{ + if(g_adb.g_kbd_reg3_16bit & 0x200) { + /* generate SRQ */ + g_adb.g_adb_interrupt_byte |= 0x08; + add_irq(IRQ_PENDING_ADB_KBD_SRQ); + } else { + printf("Got keycode but no kbd SRQ!\n"); + } +} + +void +adb_clear_kbd_srq() +{ + remove_irq(IRQ_PENDING_ADB_KBD_SRQ); + + /* kbd SRQ's are the only ones to handle now, so just clean it out */ + g_adb.g_adb_interrupt_byte &= (~(0x08)); +} + +void +adb_add_data_int() +{ + if(g_adb.g_c027_val & ADB_C027_DATA_INT) { + add_irq(IRQ_PENDING_ADB_DATA); + } +} + +void +adb_add_mouse_int() +{ + if(g_adb.g_c027_val & ADB_C027_MOUSE_INT) { + add_irq(IRQ_PENDING_ADB_MOUSE); + } +} + +void +adb_clear_data_int() +{ + remove_irq(IRQ_PENDING_ADB_DATA); +} + +void +adb_clear_mouse_int() +{ + remove_irq(IRQ_PENDING_ADB_MOUSE); +} + + +void +adb_send_bytes(int num_bytes, word32 val0, word32 val1, word32 val2) +{ + word32 val; + int shift_amount; + int i; + + // OG > 12 (instead of >=) + if((num_bytes > 12) || (num_bytes >= MAX_ADB_DATA_PEND)) { + halt_printf("adb_send_bytes: %d is too many!\n", num_bytes); + } + + g_adb.g_adb_state = ADB_SENDING_DATA; + g_adb.g_adb_data_pending = num_bytes; + adb_add_data_int(); + + for(i = 0; i < num_bytes; i++) { + if(i < 4) { + val = val0; + } else if(i < 8) { + val = val1; + } else { + val = val2; + } + + shift_amount = 8*(3 - i&3); // OG on ARM processor, shifting with a negative value does not work as expected : added &3 + g_adb.g_adb_data[i] = (val >> shift_amount) & 0xff; + adb_printf("adb_send_bytes[%d] = %02x\n", i, g_adb.g_adb_data[i]); + } +} + + +void +adb_send_1byte(word32 val) +{ + + if(g_adb.g_adb_data_pending != 0) { + halt_printf("g_adb.g_adb_data_pending: %d\n", g_adb.g_adb_data_pending); + } + + adb_send_bytes(1, val << 24, 0, 0); +} + + + +void +adb_response_packet(int num_bytes, word32 val) +{ + + if(g_adb.g_adb_data_pending != 0) { + halt_printf("adb_response_packet, but pending: %d\n", + g_adb.g_adb_data_pending); + } + + g_adb.g_adb_state = ADB_IDLE; + g_adb.g_adb_data_pending = num_bytes; + g_adb.g_adb_data[0] = val & 0xff; + g_adb.g_adb_data[1] = (val >> 8) & 0xff; + g_adb.g_adb_data[2] = (val >> 16) & 0xff; + g_adb.g_adb_data[3] = (val >> 24) & 0xff; + if(num_bytes) { + g_adb.g_adb_interrupt_byte |= 0x80 + num_bytes - 1; + } else { + g_adb.g_adb_interrupt_byte |= 0x80; + } + + adb_printf("adb_response packet: %d: %08x\n", + num_bytes, val); + + adb_add_data_int(); +} + + +void +adb_kbd_reg0_data(int a2code, int is_up) +{ + if(g_adb.g_kbd_reg0_pos >= MAX_ADB_KBD_REG3) { + /* too many keys, toss */ + halt_printf("Had to toss key: %02x, %d\n", a2code, is_up); + return; + } + + g_adb.g_kbd_reg0_data[g_adb.g_kbd_reg0_pos] = a2code + (is_up << 7); + + adb_printf("g_adb.g_kbd_reg0_data[%d] = %02x\n", g_adb.g_kbd_reg0_pos, + g_adb.g_kbd_reg0_data[g_adb.g_kbd_reg0_pos]); + + g_adb.g_kbd_reg0_pos++; + + adb_add_kbd_srq(); +} + +void +adb_kbd_talk_reg0() +{ + word32 val0, val1; + word32 reg; + int num_bytes; + int num; + int i; + + num = 0; + val0 = g_adb.g_kbd_reg0_data[0]; + val1 = g_adb.g_kbd_reg0_data[1]; + + num_bytes = 0; + if(g_adb.g_kbd_reg0_pos > 0) { + num_bytes = 2; + num = 1; + if((val0 & 0x7f) == 0x7f) { + /* reset */ + val1 = val0; + } else if(g_adb.g_kbd_reg0_pos > 1) { + num = 2; + if((val1 & 0x7f) == 0x7f) { + /* If first byte some other key, don't */ + /* put RESET next! */ + num = 1; + val1 = 0xff; + } + } else { + val1 = 0xff; + } + } + + if(num) { + for(i = num; i < g_adb.g_kbd_reg0_pos; i++) { + g_adb.g_kbd_reg0_data[i-1] = g_adb.g_kbd_reg0_data[i]; + } + g_adb.g_kbd_reg0_pos -= num; + } + + reg = (val0 << 8) + val1; + + adb_printf("adb_kbd_talk0: %04x\n", reg); + + adb_response_packet(num_bytes, reg); + if(g_adb.g_kbd_reg0_pos == 0) { + adb_clear_kbd_srq(); + } +} + +void +adb_set_config(word32 val0, word32 val1, word32 val2) +{ + int new_mouse; + int new_kbd; + int tmp1; + + new_mouse = val0 >> 4; + new_kbd = val0 & 0xf; + if(new_mouse != g_adb.g_mouse_ctl_addr) { + printf("ADB config: mouse from %x to %x!\n", + g_adb.g_mouse_ctl_addr, new_mouse); + adb_error(); + g_adb.g_mouse_ctl_addr = new_mouse; + } + if(new_kbd != g_adb.g_kbd_ctl_addr) { + printf("ADB config: kbd from %x to %x!\n", + g_adb.g_kbd_ctl_addr, new_kbd); + adb_error(); + g_adb.g_kbd_ctl_addr = new_kbd; + } + +#ifdef VIRTUALAPPLE +#pragma message("to replace with bram adb_repeat_dealy") +#else + tmp1 = val2 >> 4; + if(tmp1 == 4) { + g_adb.g_adb_repeat_delay = 0; + } else if(tmp1 < 4) { + g_adb.g_adb_repeat_delay = (tmp1 + 1) * 15; + } else { + halt_printf("Bad ADB repeat delay: %02x\n", tmp1); + } +#endif + + tmp1 = val2 & 0xf; + if(g_sim65816.g_rom_version >= 3) { + tmp1 = 9 - tmp1; + } +#ifndef VIRTUALAPPLE + switch(tmp1) { + case 0: + g_adb.g_adb_repeat_rate = 1; + break; + case 1: + g_adb.g_adb_repeat_rate = 2; + break; + case 2: + g_adb.g_adb_repeat_rate = 3; + break; + case 3: + g_adb.g_adb_repeat_rate = 3; + break; + case 4: + g_adb.g_adb_repeat_rate = 4; + break; + case 5: + g_adb.g_adb_repeat_rate = 5; + break; + case 6: + g_adb.g_adb_repeat_rate = 7; + break; + case 7: + g_adb.g_adb_repeat_rate = 15; + break; + case 8: + /* I don't know what this should be, ROM 03 uses it */ + g_adb.g_adb_repeat_rate = 30; + break; + case 9: + /* I don't know what this should be, ROM 03 uses it */ + g_adb.g_adb_repeat_rate = 60; + break; + default: + halt_printf("Bad repeat rate: %02x\n", tmp1); + } +#endif + +} + +void +adb_set_new_mode(word32 val) +{ + if(val & 0x03) { + printf("Disabling keyboard/mouse:%02x!\n", val); + } + + if(val & 0xa2) { + halt_printf("ADB set mode: %02x!\n", val); + adb_error(); + } + + g_adb.g_adb_mode = val; +} + + +int +adb_read_c026() +{ + word32 ret; + int i; + + ret = 0; + switch(g_adb.g_adb_state) { + case ADB_IDLE: + ret = g_adb.g_adb_interrupt_byte; + g_adb.g_adb_interrupt_byte = 0; + if(g_moremem.g_irq_pending & IRQ_PENDING_ADB_KBD_SRQ) { + g_adb.g_adb_interrupt_byte |= 0x08; + } + if(g_adb.g_adb_data_pending == 0) { + if(ret & 0x80) { + /*halt_*/printf("read_c026: ret:%02x, pend:%d\n", + ret, g_adb.g_adb_data_pending); + } + adb_clear_data_int(); + } + if(g_adb.g_adb_data_pending) { + if(g_adb.g_adb_state != ADB_IN_CMD) { + g_adb.g_adb_state = ADB_SENDING_DATA; + } + } + break; + case ADB_IN_CMD: + ret = 0; + break; + case ADB_SENDING_DATA: + ret = g_adb.g_adb_data[0]; + for(i = 1; i < g_adb.g_adb_data_pending; i++) { + g_adb.g_adb_data[i-1] = g_adb.g_adb_data[i]; + } + g_adb.g_adb_data_pending--; + if(g_adb.g_adb_data_pending <= 0) { + g_adb.g_adb_data_pending = 0; + g_adb.g_adb_state = ADB_IDLE; + adb_clear_data_int(); + } + break; + default: + halt_printf("Bad ADB state: %d!\n", g_adb.g_adb_state); + adb_clear_data_int(); + break; + } + + adb_printf("Reading c026. Returning %02x, st: %02x, pend: %d\n", + ret, g_adb.g_adb_state, g_adb.g_adb_data_pending); + + adb_log(0xc026, ret); + return (ret & 0xff); +} + + +void +adb_write_c026(int val) +{ + word32 tmp; + int dev; + + adb_printf("Writing c026 with %02x\n", val); + adb_log(0x1c026, val); + + + switch(g_adb.g_adb_state) { + case ADB_IDLE: + g_adb.g_adb_cmd = val; + g_adb.g_adb_cmd_so_far = 0; + g_adb.g_adb_cmd_len = 0; + + dev = val & 0xf; + switch(val) { + case 0x01: /* Abort */ + adb_printf("Performing adb abort\n"); + /* adb_abort() */ + break; + case 0x03: /* Flush keyboard buffer */ + adb_printf("Flushing adb keyboard buffer\n"); + /* Do nothing */ + break; + case 0x04: /* Set modes */ + adb_printf("ADB set modes\n"); + g_adb.g_adb_state = ADB_IN_CMD; + g_adb.g_adb_cmd_len = 1; + break; + case 0x05: /* Clear modes */ + adb_printf("ADB clear modes\n"); + g_adb.g_adb_state = ADB_IN_CMD; + g_adb.g_adb_cmd_len = 1; + break; + case 0x06: /* Set config */ + adb_printf("ADB set config\n"); + g_adb.g_adb_state = ADB_IN_CMD; + g_adb.g_adb_cmd_len = 3; + break; + case 0x07: /* Sync */ + adb_printf("Performing sync cmd!\n"); + g_adb.g_adb_state = ADB_IN_CMD; + if(g_sim65816.g_rom_version == 1) { + g_adb.g_adb_cmd_len = 4; + } else { + g_adb.g_adb_cmd_len = 8; + } + break; + case 0x08: /* Write mem */ + adb_printf("Starting write_mem cmd\n"); + g_adb.g_adb_state = ADB_IN_CMD; + g_adb.g_adb_cmd_len = 2; + break; + case 0x09: /* Read mem */ + adb_printf("Performing read_mem cmd!\n"); + g_adb.g_adb_state = ADB_IN_CMD; + g_adb.g_adb_cmd_len = 2; + break; + case 0x0a: /* Read modes byte */ + printf("Performing read_modes cmd!\n"); + /* set_halt(1); */ + adb_send_1byte(g_adb.g_adb_mode); + break; + case 0x0b: /* Read config bytes */ + printf("Performing read_configs cmd!\n"); + tmp = (g_adb.g_mouse_ctl_addr << 20) + + (g_adb.g_kbd_ctl_addr << 16) + + (g_adb.g_adb_char_set << 12) + + (g_adb.g_adb_layout_lang << 8) + + (g_adb.g_adb_repeat_info << 0); + tmp = (0x82U << 24) + tmp; + adb_send_bytes(4, tmp, 0, 0); + break; + case 0x0d: /* Get Version */ + adb_printf("Performing get_version cmd!\n"); + val = 0; + if(g_sim65816.g_rom_version == 1) { + /* ROM 01 = revision 5 */ + val = 5; + } else { + /* ROM 03 checks for rev >= 6 */ + val = 6; + } + adb_send_1byte(val); + break; + + /* + Patch borrowed from 03 + + OG Patch ADB Read for Keyboard & Language support + Just read the value for the micro controler once, and fill counter + series + (instead of reading the value for every time) + + @100 EQU * + LDY #$0000 ;Index to batteryram buffer + LDA #$0A ;Keyboard layout counts +@101 STA |LAYOUTS,Y ;Store to buffer + TYA ;Prepare for next store + CMP |LAYOUTS ;check for end + INY ;Index to next + BCC @101 ;loop till end + + */ + + case 0x0e: /* Read avail char sets */ + adb_printf("Performing read avail char sets cmd!\n"); + // OG : Invert byte => should be taken care by endianness? + // OG : All the indexes must also be sent + + adb_send_bytes(10, // 2 for the index, + 8 for the serie + 0x00080001, + 0x02030405, + 0x06070000); + /* + adb_send_bytes(2, // just 2 bytes + 0x08000000, // number of ch sets=0x8 + 0, 0); + */ + // set_halt(1); + break; + case 0x0f: /* Read avail kbd layouts */ + adb_printf("Performing read avail kbd layouts cmd!\n"); + // OG : Invert byte => should be taken care by endianness? + // OG : All the indexes must also be sent + adb_send_bytes(12, // 2 for the index, + 10 for the serie + 0x000A0001, + 0x02030405, + 0x06070809); + /* + adb_send_bytes(0x2, // number of kbd layouts=0xa + 0x0a000000, 0, 0); + */ + // set_halt(1); + break; + case 0x10: /* Reset */ + printf("ADB reset, cmd 0x10\n"); + do_reset(); + break; + case 0x11: /* Send ADB keycodes */ + adb_printf("Sending ADB keycodes\n"); + g_adb.g_adb_state = ADB_IN_CMD; + g_adb.g_adb_cmd_len = 1; + break; + case 0x12: /* ADB cmd 12: ROM 03 only! */ + if(g_sim65816.g_rom_version >= 3) { + g_adb.g_adb_state = ADB_IN_CMD; + g_adb.g_adb_cmd_len = 2; + } else { + printf("ADB cmd 12, but not ROM 3!\n"); + adb_error(); + } + break; + case 0x13: /* ADB cmd 13: ROM 03 only! */ + if(g_sim65816.g_rom_version >= 3) { + g_adb.g_adb_state = ADB_IN_CMD; + g_adb.g_adb_cmd_len = 2; + } else { + printf("ADB cmd 13, but not ROM 3!\n"); + adb_error(); + } + break; + case 0x73: /* Disable SRQ device 3: mouse */ + adb_printf("Disabling Mouse SRQ's (device 3)\n"); + /* HACK HACK...should deal with SRQs on mouse */ + break; + case 0xb0: case 0xb1: case 0xb2: case 0xb3: + case 0xb4: case 0xb5: case 0xb6: case 0xb7: + case 0xb8: case 0xb9: case 0xba: case 0xbb: + case 0xbc: case 0xbd: case 0xbe: case 0xbf: + /* Listen dev x reg 3 */ + adb_printf("Sending data to dev %x reg 3\n", dev); + g_adb.g_adb_state = ADB_IN_CMD; + g_adb.g_adb_cmd_len = 2; + break; + case 0xc0: case 0xc1: case 0xc2: case 0xc3: + case 0xc4: case 0xc5: case 0xc6: case 0xc7: + case 0xc8: case 0xc9: case 0xca: case 0xcb: + case 0xcc: case 0xcd: case 0xce: case 0xcf: + /* Talk dev x reg 0 */ + adb_printf("Performing talk dev %x reg 0\n", dev); + if(dev == g_adb.g_kbd_dev_addr) { + adb_kbd_talk_reg0(); + } else { + printf("Unknown talk dev %x reg 0!\n", dev); + /* send no data, on SRQ, system polls devs */ + /* so we don't want to send anything */ + adb_error(); + } + break; + case 0xf0: case 0xf1: case 0xf2: case 0xf3: + case 0xf4: case 0xf5: case 0xf6: case 0xf7: + case 0xf8: case 0xf9: case 0xfa: case 0xfb: + case 0xfc: case 0xfd: case 0xfe: case 0xff: + /* Talk dev x reg 3 */ + adb_printf("Performing talk dev %x reg 3\n", dev); + if(dev == g_adb.g_kbd_dev_addr) { + adb_response_packet(2, g_adb.g_kbd_reg3_16bit); + } else { + printf("Performing talk dev %x reg 3!!\n", dev); + adb_error(); + } + break; + default: + /* The Gog's says ACS Demo 2 has a bug and writes to */ + /* c026 */ + // OG + if (val==0x84) + printf("ACS Demo2 (3: Colum& Music scroll) : discarding unknown controller command\n"); + else + halt_printf("ADB ucontroller cmd %02x unknown!\n", val); + + break; + } + break; + case ADB_IN_CMD: + adb_printf("Setting byte %d of cmd %02x to %02x\n", + g_adb.g_adb_cmd_so_far, g_adb.g_adb_cmd, val); + + g_adb.g_adb_cmd_data[g_adb.g_adb_cmd_so_far] = val; + g_adb.g_adb_cmd_so_far++; + if(g_adb.g_adb_cmd_so_far >= g_adb.g_adb_cmd_len) { + adb_printf("Finished cmd %02x\n", g_adb.g_adb_cmd); + do_adb_cmd(); + } + + break; + default: + printf("adb_state: %02x is unknown! Setting it to ADB_IDLE\n", + g_adb.g_adb_state); + g_adb.g_adb_state = ADB_IDLE; + adb_error(); + g_adb.halt_on_all_c027 = 1; + break; + } + return; +} + +void +do_adb_cmd() +{ + int dev; + int new_kbd; + int addr; + int val; + + dev = g_adb.g_adb_cmd & 0xf; + + g_adb.g_adb_state = ADB_IDLE; + + switch(g_adb.g_adb_cmd) { + case 0x04: /* Set modes */ + adb_printf("Performing ADB set mode: OR'ing in %02x\n", + g_adb.g_adb_cmd_data[0]); + + val = g_adb.g_adb_cmd_data[0] | g_adb.g_adb_mode; + adb_set_new_mode(val); + + break; + case 0x05: /* clear modes */ + adb_printf("Performing ADB clear mode: AND'ing in ~%02x\n", + g_adb.g_adb_cmd_data[0]); + + val = g_adb.g_adb_cmd_data[0]; + val = g_adb.g_adb_mode & (~val); + adb_set_new_mode(val); + break; + case 0x06: /* Set config */ + adb_printf("Set ADB config to %02x %02x %02x\n", + g_adb.g_adb_cmd_data[0], g_adb.g_adb_cmd_data[1],g_adb.g_adb_cmd_data[2]); + + adb_set_config(g_adb.g_adb_cmd_data[0], g_adb.g_adb_cmd_data[1], + g_adb.g_adb_cmd_data[2]); + + break; + case 0x07: /* SYNC */ + adb_printf("Performing ADB SYNC\n"); + adb_printf("data: %02x %02x %02x %02x\n", + g_adb.g_adb_cmd_data[0], g_adb.g_adb_cmd_data[1], g_adb.g_adb_cmd_data[2], + g_adb.g_adb_cmd_data[3]); + + adb_set_new_mode(g_adb.g_adb_cmd_data[0]); + adb_set_config(g_adb.g_adb_cmd_data[1], g_adb.g_adb_cmd_data[2], + g_adb.g_adb_cmd_data[3]); + + if(g_sim65816.g_rom_version >= 3) { + adb_printf(" and cmd12:%02x %02x cmd13:%02x %02x\n", + g_adb.g_adb_cmd_data[4], g_adb.g_adb_cmd_data[5], + g_adb.g_adb_cmd_data[6], g_adb.g_adb_cmd_data[7]); + } + break; + case 0x08: /* Write mem */ + addr = g_adb.g_adb_cmd_data[0]; + val = g_adb.g_adb_cmd_data[1]; + write_adb_ram(addr, val); + break; + case 0x09: /* Read mem */ + addr = (g_adb.g_adb_cmd_data[1] << 8) + g_adb.g_adb_cmd_data[0]; + adb_printf("Performing mem read to addr %04x\n", addr); + adb_send_1byte(read_adb_ram(addr)); + break; + case 0x11: /* Send ADB keycodes */ + val = g_adb.g_adb_cmd_data[0]; + adb_printf("Performing send ADB keycodes: %02x\n", val); + adb_virtual_key_update(val & 0x7f, val >> 7); + break; + case 0x12: /* ADB cmd12 */ + adb_printf("Performing ADB cmd 12\n"); + adb_printf("data: %02x %02x\n", g_adb.g_adb_cmd_data[0], + g_adb.g_adb_cmd_data[1]); + break; + case 0x13: /* ADB cmd13 */ + adb_printf("Performing ADB cmd 13\n"); + adb_printf("data: %02x %02x\n", g_adb.g_adb_cmd_data[0], + g_adb.g_adb_cmd_data[1]); + break; + case 0xb0: case 0xb1: case 0xb2: case 0xb3: + case 0xb4: case 0xb5: case 0xb6: case 0xb7: + case 0xb8: case 0xb9: case 0xba: case 0xbb: + case 0xbc: case 0xbd: case 0xbe: case 0xbf: + /* Listen dev x reg 3 */ + if(dev == g_adb.g_kbd_dev_addr) { + if(g_adb.g_adb_cmd_data[1] == 0xfe) { + /* change keyboard addr? */ + new_kbd = g_adb.g_adb_cmd_data[0] & 0xf; + if(new_kbd != dev) { + printf("Moving kbd to dev %x!\n", + new_kbd); + adb_error(); + } + g_adb.g_kbd_dev_addr = new_kbd; + } else if(g_adb.g_adb_cmd_data[1] != 1) { + /* see what new device handler id is */ + printf("KBD listen to dev %x reg 3: 1:%02x\n", + dev, g_adb.g_adb_cmd_data[1]); + adb_error(); + } + if(g_adb.g_adb_cmd_data[0] != (word32)g_adb.g_kbd_dev_addr) { + /* see if app is trying to change addr */ + printf("KBD listen to dev %x reg 3: 0:%02x!\n", + dev, g_adb.g_adb_cmd_data[0]); + adb_error(); + } + g_adb.g_kbd_reg3_16bit = ((g_adb.g_adb_cmd_data[0] & 0xf) << 12) + + (g_adb.g_kbd_reg3_16bit & 0x0fff); + } else if(dev == g_adb.g_mouse_dev_addr) { + if(g_adb.g_adb_cmd_data[0] != (word32)dev) { + /* see if app is trying to change mouse addr */ + printf("MOUS listen to dev %x reg3: 0:%02x!\n", + dev, g_adb.g_adb_cmd_data[0]); + adb_error(); + } + if(g_adb.g_adb_cmd_data[1] != 1 && g_adb.g_adb_cmd_data[1] != 2) { + /* see what new device handler id is */ + printf("MOUS listen to dev %x reg 3: 1:%02x\n", + dev, g_adb.g_adb_cmd_data[1]); + adb_error(); + } + } else { + printf("Listen cmd to dev %x reg3????\n", dev); + printf("data0: %02x, data1: %02x ????\n", + g_adb.g_adb_cmd_data[0], g_adb.g_adb_cmd_data[1]); + adb_error(); + } + break; + default: + printf("Doing adb_cmd %02x: UNKNOWN!\n", g_adb.g_adb_cmd); + break; + } +} + + +int +adb_read_c027() +{ + word32 ret; + + // OG to monitor if mouse is being used! + g_adb.g_last_c027_read = g_sim65816.g_vbl_count; + + if(g_adb.halt_on_all_c027) { + halt_printf("halting on all c027 reads!\n"); + } + + if(g_adb.g_c027_val & (~ADB_C027_NEG_MASK)) { + halt_printf("read_c027: g_adb.g_c027_val: %02x\n", g_adb.g_c027_val); + } + + ret = (g_adb.g_c027_val & ADB_C027_NEG_MASK); + + if(g_adb.g_adb_mouse_valid_data) { + ret |= ADB_C027_MOUSE_DATA; + } + + if(g_adb.g_adb_interrupt_byte != 0) { + ret |= ADB_C027_DATA_VALID; + } else if(g_adb.g_adb_data_pending > 0) { + if((g_adb.g_adb_state != ADB_IN_CMD)) { + ret |= ADB_C027_DATA_VALID; + } + } + + if(g_adb.g_adb_mouse_coord) { + ret |= ADB_C027_MOUSE_COORD; + } + +#if 0 + adb_printf("Read c027: %02x, int_byte: %02x, d_pend: %d\n", + ret, g_adb.g_adb_interrupt_byte, g_adb.g_adb_data_pending); +#endif + +#if 0 + adb_log(0xc027, ret); +#endif + return ret; +} + +void +adb_write_c027(int val) +{ + word32 old_val; + word32 new_int; + word32 old_int; + + adb_printf("Writing c027 with %02x\n", val); + adb_log(0x1c027, val); + + + old_val = g_adb.g_c027_val; + + g_adb.g_c027_val = (val & ADB_C027_NEG_MASK); + new_int = g_adb.g_c027_val & ADB_C027_MOUSE_INT; + old_int = old_val & ADB_C027_MOUSE_INT; + if(!new_int && old_int) { + adb_clear_mouse_int(); + } + + new_int = g_adb.g_c027_val & ADB_C027_DATA_INT; + old_int = old_val & ADB_C027_DATA_INT; + if(!new_int && old_int) { + /* ints were on, now off */ + adb_clear_data_int(); + } + + if(g_adb.g_c027_val & ADB_C027_KBD_INT) { + halt_printf("Can't support kbd interrupts!\n"); + } + + return; +} + +int +read_adb_ram(word32 addr) +{ + int val; + + adb_printf("Reading adb ram addr: %02x\n", addr); + + if(addr >= 0x100) { + if(addr >= 0x1000 && addr < 0x2000) { + /* ROM self-test checksum */ + if(addr == 0x1400) { + val = 0x72; + } else if(addr == 0x1401) { + val = 0xf7; + } else { + val = 0; + } + } else { + printf("adb ram addr out of range: %04x!\n", addr); + val = 0; + } + } else { + val = g_adb.adb_memory[addr]; + if((addr == 0xb) && (g_sim65816.g_rom_version == 1)) { + // read special key state byte for Out of This World + val = (g_adb.g_c025_val >> 1) & 0x43; + val |= (g_adb.g_c025_val << 2) & 0x4; + val |= (g_adb.g_c025_val >> 2) & 0x10; + } + if((addr == 0xc) && (g_sim65816.g_rom_version >= 3)) { + // read special key state byte for Out of This World + val = g_adb.g_c025_val & 0xc7; + printf("val is %02x\n", val); + } + } + + adb_printf("adb_ram returning %02x\n", val); + return val; +} + +void +write_adb_ram(word32 addr, int val) +{ + + adb_printf("Writing adb_ram addr: %02x: %02x\n", addr, val); + + if(addr >= 0x100) { + printf("write adb_ram addr: %02x: %02x!\n", addr, val); + adb_error(); + } else { + g_adb.adb_memory[addr] = val; + } +} + +int +adb_get_keypad_xy(int get_y) +{ + int x, y; + int key; + int num_keys; + int i, j; + + key = 1; + num_keys = 0; + x = 0; + y = 0; + for(i = 0; i < 3; i++) { + for(j = 0; j < 3; j++) { + if(g_adb.g_keypad_key_is_down[key]) { + num_keys++; + x = x + (j - 1)*32768; + y = y + (1 - i)*32768; + } + key++; + } + } + if(num_keys == 0) { + num_keys = 1; + } + + adb_printf("get_xy=%d, num_keys: %d, x:%d, y:%d\n", get_y, + num_keys, x, y); + + if(get_y) { + return y / num_keys; + } else { + return x / num_keys; + } +} + +int is_mouse_used_by_host() +{ + return ! (g_adb.g_last_c027_read < ( g_sim65816.g_vbl_count - 60 ) ); +} + +int +update_mouse(int x, int y, int button_states, int buttons_valid) +{ + double dcycs; + int button1_changed; + int mouse_moved; + int unhide; + int pos; + int i; + +// printf("Mouse at %d, %d (%d) (%d)\n", x, y, button_states,buttons_valid); + + dcycs = g_sim65816.g_cur_dcycs; + + g_adb.g_mouse_raw_x = x; + g_adb.g_mouse_raw_y = y; + + // OG ignore clamping in warp mode + unhide = 0; + if (g_adb.g_warp_pointer!=WARP_POINTER) + { + if(x < 0) { + x = 0; + unhide = 1; + } + if(x >= 640) { + x = 639; + unhide = 1; + } + if(y < 0) { + y = 0; + unhide = 1; + } + if(y >= 400) { + y = 399; + unhide = 1; + } + } + + g_adb.g_unhide_pointer = unhide && (g_adb.g_warp_pointer!=WARP_POINTER); + + if(g_adb.g_warp_pointer!=WARP_POINTER) + { + if(g_adb.g_hide_pointer && g_adb.g_unhide_pointer) { + /* cursor has left a2 window, show it */ + + //OG - Disabling + g_adb.g_hide_pointer = 0; + x_hide_pointer(0); + } + if((g_video.g_num_lines_prev_superhires == 200) && + (g_video.g_num_lines_prev_superhires640 == 0) && + ((g_slow_memory_ptr[0x19d00] & 0x80) == 0)) { + // In 320-mode superhires, cut mouse range in half + x = x >> 1; + } + y = y >> 1; + } + + mouse_compress_fifo(dcycs); + +#if 0 + printf("Update Mouse called with buttons:%d (state:%d) x,y:%d,%d, fifo:%d,%d, " + " a2: %d,%d\n", buttons_valid,button_states, x, y, + g_adb.g_mouse_fifo[0].x, g_mouse_fifo[0].y, + g_adb.g_mouse_a2_x, g_adb.g_mouse_a2_y); +#endif + + if((buttons_valid == -1) &&(g_adb.g_warp_pointer==WARP_POINTER)) { + /* Warping the pointer causes it to jump here...this is not */ + /* real motion, just update info and get out */ + g_adb.g_mouse_a2_x += (x - g_adb.g_mouse_fifo[0].x); + g_adb.g_mouse_a2_y += (y - g_adb.g_mouse_fifo[0].y); + g_adb.g_mouse_fifo[0].x = x; + g_adb.g_mouse_fifo[0].y = y; + return 0; + } + +#if 0 + printf("...real move, warp: %d, %d, new x: %d, %d, a2:%d,%d\n", + g_adb.g_mouse_warp_x, g_adb.g_mouse_warp_y, g_adb.g_mouse_fifo[0].x, + g_adb.g_mouse_fifo[0].y, g_adb.g_mouse_a2_x, g_adb.g_mouse_a2_y); +#endif + + mouse_moved = (g_adb.g_mouse_fifo[0].x != x) || (g_adb.g_mouse_fifo[0].y != y); + + g_adb.g_mouse_a2_x += g_adb.g_mouse_warp_x; + g_adb.g_mouse_a2_y += g_adb.g_mouse_warp_y; + g_adb.g_mouse_fifo[0].x = x; + g_adb.g_mouse_fifo[0].y = y; + g_adb.g_mouse_fifo[0].dcycs = dcycs; + g_adb.g_mouse_warp_x = 0; + g_adb.g_mouse_warp_y = 0; + + button1_changed = (buttons_valid & 1) && ((button_states & 1) != (g_adb.g_mouse_fifo[0].buttons & 1)); + +#if defined(ACTIVEGS) && !defined(MAC) + if (g_adb.g_warp_pointer == WARP_TOUCHSCREEN) + { + + if (buttons_valid==-2) + { + button1_changed = 1; + buttons_valid = 1; + button_states = 1; + printf("*"); + } + else + { + if (!button1_changed) + { + if (!(button_states & 1)) + { + // mouse move => ignored + return 1 ; + } + } + else + { + // chgt de button + // simule un mouse move avant le click + if (button_states & 1) + { + for(int i=0;i<10;i++) + add_event_delay(); + add_event_mouse(g_adb.g_mouse_raw_x,g_adb.g_mouse_raw_y,1,-2); + button1_changed = 0; + buttons_valid = 1; + button_states = 0; + + } + } + } + + // printf("%d %d (%d)\n",x,y,button_states); + } +#endif + + if((button_states & 4) && !(g_adb.g_mouse_fifo[0].buttons & 4) && + (buttons_valid & 4)) { + /* right button pressed */ + adb_increment_speed(); + } + if((button_states & 2) && !(g_adb.g_mouse_fifo[0].buttons & 2) && + (buttons_valid & 2)) { + /* middle button pressed */ + halt2_printf("Middle button pressed\n"); + } + + pos = g_adb.g_mouse_fifo_pos; + if((pos < (ADB_MOUSE_FIFO - 2)) && button1_changed) { + /* copy delta to overflow, set overflow */ + /* overflow ensures the mouse button state is precise at */ + /* button up/down times. Using a mouse event list where */ + /* deltas accumulate until a button change would work, too */ + for(i = pos; i >= 0; i--) { + g_adb.g_mouse_fifo[i + 1] = g_adb.g_mouse_fifo[i]; /* copy struct*/ + } + g_adb.g_mouse_fifo_pos = pos + 1; + } + + + g_adb.g_mouse_fifo[0].buttons = (button_states & buttons_valid) | + (g_adb.g_mouse_fifo[0].buttons & ~buttons_valid); + + + if(mouse_moved || button1_changed) { + if( (g_adb.g_mouse_ctl_addr == g_adb.g_mouse_dev_addr) && + ((g_adb.g_adb_mode & 0x2) == 0)) { + g_adb.g_adb_mouse_valid_data = 1; + adb_add_mouse_int(); + } + } + + return mouse_moved; +} + +// OG Only decrement fifo once per check_input + +void should_decrement_fifo() +{ + if (g_adb.g_need_to_decrement_fifo) + { + g_adb.g_need_to_decrement_fifo = 0; + if (g_adb.g_mouse_fifo_pos) + g_adb.g_mouse_fifo_pos--; + } +} + + +int +mouse_read_c024(double dcycs) +{ + word32 ret; + word32 tool_start; + int em_active; + int target_x, target_y; + int delta_x, delta_y; + int a2_x, a2_y; + int mouse_button; + int clamped; + int pos; + + if(((g_adb.g_adb_mode & 0x2) != 0) || (g_adb.g_mouse_dev_addr != g_adb.g_mouse_ctl_addr)){ + /* mouse is off, return 0, or mouse is not autopoll */ + g_adb.g_adb_mouse_valid_data = 0; + adb_clear_mouse_int(); + return 0; + } + + mouse_compress_fifo(dcycs); + + pos = g_adb.g_mouse_fifo_pos; + target_x = g_adb.g_mouse_fifo[pos].x; + target_y = g_adb.g_mouse_fifo[pos].y; + mouse_button = (g_adb.g_mouse_fifo[pos].buttons & 1); + delta_x = target_x - g_adb.g_mouse_a2_x; + delta_y = target_y - g_adb.g_mouse_a2_y; + + clamped = 0; + if(delta_x > 0x3f) { + delta_x = 0x3f; + clamped = 1; + } else if(delta_x < -0x3f) { + delta_x = -0x3f; + clamped = 1; + } + if(delta_y > 0x3f) { + delta_y = 0x3f; + clamped = 1; + } else if(delta_y < -0x3f) { + delta_y = -0x3f; + clamped = 1; + } + + if(pos > 0) { + /* peek into next entry's button info if we are not clamped */ + /* and we're returning the y-coord */ + if(!clamped && g_adb.g_adb_mouse_coord) { + mouse_button = g_adb.g_mouse_fifo[pos - 1].buttons & 1; + } + } + + if(g_adb.g_adb_mouse_coord) { + /* y coord */ + delta_x = 0; /* clear unneeded x delta */ + } else { + delta_y = 0; /* clear unneeded y delta */ + } + + + adb_printf(" pre a2_x:%02x,%02x,%02x,%02x\n", + g_slow_memory_ptr[0x100e9], g_slow_memory_ptr[0x100ea], + g_slow_memory_ptr[0x100eb], g_slow_memory_ptr[0x100ec]); + adb_printf(" pre a2_x:%02x,%02x,%02x,%02x\n", + g_slow_memory_ptr[0x10190], g_slow_memory_ptr[0x10192], + g_slow_memory_ptr[0x10191], g_slow_memory_ptr[0x10193]); + + /* Update event manager internal state */ + tool_start = (g_slow_memory_ptr[0x103ca] << 16) + + (g_slow_memory_ptr[0x103c9] << 8) + + g_slow_memory_ptr[0x103c8]; + + em_active = 0; + if((tool_start >= 0x20000) && (tool_start < (g_sim65816.g_mem_size_total - 28)) ) { + /* seems to be valid ptr to addr of mem space for tools */ + /* see if event manager appears to be active */ + em_active = g_memory_ptr[tool_start + 6*4] + (g_memory_ptr[tool_start + 6*4 + 1] << 8); + if(g_adb.g_warp_pointer==WARP_POINTER) + { + em_active = 0; + } + } + + a2_x = g_adb.g_mouse_a2_x; + a2_y = g_adb.g_mouse_a2_y; + + if(em_active) { + if((!g_adb.g_hide_pointer) && (g_video.g_num_lines_prev_superhires == 200) && + !g_adb.g_unhide_pointer) { + /* if super-hires and forcing tracking, then hide */ + g_adb.g_hide_pointer = 1; + x_hide_pointer(1); + + } + if(g_adb.g_adb_mouse_coord == 0) { + /* update x coord values */ + g_slow_memory_ptr[0x47c] = a2_x & 0xff; + g_slow_memory_ptr[0x57c] = a2_x >> 8; + g_memory_ptr[0x47c] = a2_x & 0xff; + g_memory_ptr[0x57c] = a2_x >> 8; + + g_slow_memory_ptr[0x10190] = a2_x & 0xff; + g_slow_memory_ptr[0x10192] = a2_x >> 8; + } else { + g_slow_memory_ptr[0x4fc] = a2_y & 0xff; + g_slow_memory_ptr[0x5fc] = a2_y >> 8; + g_memory_ptr[0x4fc] = a2_y & 0xff; + g_memory_ptr[0x5fc] = a2_y >> 8; + + g_slow_memory_ptr[0x10191] = a2_y & 0xff; + g_slow_memory_ptr[0x10193] = a2_y >> 8; + } + } else { + if(g_adb.g_hide_pointer && (g_adb.g_warp_pointer!=WARP_POINTER)) { + g_adb.g_hide_pointer = 0; + x_hide_pointer(0); + } + } + + ret = ((!mouse_button) << 7) + ((delta_x | delta_y) & 0x7f); + if(g_adb.g_adb_mouse_coord) { + g_adb.g_mouse_a2_button = mouse_button; /* y coord has button*/ + } else { + ret |= 0x80; /* mouse button not down on x coord rd */ + } + + a2_x += delta_x; + a2_y += delta_y; + g_adb.g_mouse_a2_x = a2_x; + g_adb.g_mouse_a2_y = a2_y; + if(g_adb.g_mouse_fifo_pos) { + if((target_x == a2_x) && (target_y == a2_y) && (g_adb.g_mouse_a2_button == mouse_button)) + { + // OG + // Only decrement FIFO once per check_inputs + g_adb.g_need_to_decrement_fifo = 1; + //g_adb.g_mouse_fifo_pos--; + // printf("new fifo:%d",g_adb.g_mouse_fifo_pos); + + } + } + + + adb_printf("Read c024, mouse is_y:%d, %02x, vbl:%08x, dcyc:%f, em:%d\n",g_adb.g_adb_mouse_coord, ret, g_sim65816.g_vbl_count, dcycs, em_active); + adb_printf("...mouse targ_x:%d,%d delta_x,y:%d,%d fifo:%d, a2:%d,%d\n", + target_x, target_y, delta_x, delta_y, g_adb.g_mouse_fifo_pos, + a2_x, a2_y); + adb_printf(" post a2_x:%02x,%02x,%02x,%02x\n", + g_slow_memory_ptr[0x10190], g_slow_memory_ptr[0x10192], + g_slow_memory_ptr[0x10191], g_slow_memory_ptr[0x10193]); + + if((g_adb.g_mouse_fifo_pos == 0) && (g_adb.g_mouse_fifo[0].x == a2_x) && + (g_adb.g_mouse_fifo[0].y == a2_y) && + ((g_adb.g_mouse_fifo[0].buttons & 1) == g_adb.g_mouse_a2_button)) { + g_adb.g_adb_mouse_valid_data = 0; + adb_clear_mouse_int(); + } + + g_adb.g_adb_mouse_coord = !g_adb.g_adb_mouse_coord; + return ret; +} + +void +mouse_compress_fifo(double dcycs) +{ + int pos; + + /* The mouse fifo exists so that fast button changes don't get lost */ + /* if the emulator lags behind the mouse events */ + /* But the FIFO means really old mouse events are saved if */ + /* the emulated code isn't looking at the mouse registers */ + /* This routine compresses all mouse events > 0.5 seconds old */ + + for(pos = g_adb.g_mouse_fifo_pos; pos >= 1; pos--) { + if(g_adb.g_mouse_fifo[pos].dcycs < (dcycs - 500*1000.0)) { + /* Remove this entry */ + adb_printf("Old mouse FIFO pos %d removed\n", pos); + g_adb.g_mouse_fifo_pos = pos - 1; + continue; + } + /* Else, stop searching the FIFO */ + break; + } +} + +void +adb_key_event(int a2code, int is_up) +{ + word32 special; + word32 vbl_count; + int key; + int hard_key; + int pos; + int tmp_ascii; + int ascii; + +// printf("adb_key_event, key:%02x, is up:%d g_adb.g_key_down: %02x\n",a2code,is_up, g_key_down); + + if(is_up) { + adb_printf("adb_key_event, key:%02x, is up, g_adb.g_key_down: %02x\n", + a2code, g_adb.g_key_down); + } + + if(a2code < 0 || a2code > 0x7f) { + halt_printf("add_key_event: a2code: %04x!\n", a2code); + return; + } + + if(!is_up && a2code == 0x35) { + /* ESC pressed, see if ctrl & cmd key down */ + + if(CTRL_DOWN && CMD_DOWN) { + /* Desk mgr int */ + printf("Desk mgr int!\n"); + + g_adb.g_adb_interrupt_byte |= 0x20; + adb_add_data_int(); + } + } + + /* convert key to ascii, if possible */ + hard_key = 0; + if(a2_key_to_ascii[a2code][1] & 0xef00) { + /* special key */ + } else { + /* we have ascii */ + hard_key = 1; + } + + pos = 1; + ascii = a2_key_to_ascii[a2code][1]; + if(CAPS_LOCK_DOWN && (ascii >= 'a' && ascii <= 'z')) { + pos = 2; + if(SHIFT_DOWN && (g_adb.g_adb_mode & 0x40)) { + /* xor shift mode--capslock and shift == lowercase */ + pos = 1; + } + } else if(SHIFT_DOWN) { + pos = 2; + } + + ascii = a2_key_to_ascii[a2code][pos]; + if(CTRL_DOWN) { + tmp_ascii = a2_key_to_ascii[a2code][3]; + if(tmp_ascii >= 0) { + ascii = tmp_ascii; + } + } + key = (ascii & 0x7f) + 0x80; + + special = (ascii >> 8) & 0xff; + if(ascii < 0) { + printf("ascii1: %d, a2code: %02x, pos: %d\n", ascii,a2code,pos); + ascii = 0; + special = 0; + } + + + if(!is_up) { + if(hard_key) { + g_adb.g_kbd_buf[g_adb.g_kbd_chars_buffered] = key; + + // printf("adding %X at pos %d\n",key,g_adb.g_kbd_chars_buffered); + g_adb.g_kbd_chars_buffered++; + if(g_adb.g_kbd_chars_buffered >= MAX_KBD_BUF) { + g_adb.g_kbd_chars_buffered = MAX_KBD_BUF - 1; + } + g_adb.g_key_down = 1; + g_adb.g_a2code_down = a2code; + + /* first key down, set up autorepeat */ + vbl_count = g_sim65816.g_vbl_count; + if(g_config_control_panel) { + vbl_count = g_cfg_vbl_count; + } + g_adb.g_adb_repeat_vbl = vbl_count + g_adb.g_adb_repeat_delay; + if(g_adb.g_adb_repeat_delay == 0) { + g_adb.g_key_down = 0; + } + g_adb.g_hard_key_down = 1; + } + + g_adb.g_c025_val = g_adb.g_c025_val | special; + adb_printf("new c025_or: %02x\n", g_adb.g_c025_val); + } else { + if(hard_key && (a2code == g_adb.g_a2code_down)) { + g_adb.g_hard_key_down = 0; + /* Turn off repeat */ + g_adb.g_key_down = 0; + } + + g_adb.g_c025_val = g_adb.g_c025_val & (~ special); + adb_printf("new c025_and: %02x\n", g_adb.g_c025_val); + } + + if(g_adb.g_key_down) { + g_adb.g_c025_val = g_adb.g_c025_val & (~0x20); + } else { + /* If no hard key down, set update mod latch */ + g_adb.g_c025_val = g_adb.g_c025_val | 0x20; + } + +} + +word32 +adb_read_c000() +{ + word32 vbl_count; + + if( ((g_adb.g_kbd_buf[0] & 0x80) == 0) && (g_adb.g_key_down == 0)) { + /* nothing happening, just get out */ + return g_adb.g_kbd_buf[0]; + } + if(g_adb.g_kbd_buf[0] & 0x80) { + /* got one */ + if((g_adb.g_kbd_read_no_update++ > 5) && (g_adb.g_kbd_chars_buffered > 1)) { + /* read 5 times, keys pending, let's move it along */ + printf("Read %02x %d times, tossing\n", g_adb.g_kbd_buf[0], + g_adb.g_kbd_read_no_update); + adb_access_c010(); + } + } else { + vbl_count = g_sim65816.g_vbl_count; + if(g_config_control_panel) { + vbl_count = g_cfg_vbl_count; + } + if(g_adb.g_key_down && vbl_count >= g_adb.g_adb_repeat_vbl) { + /* repeat the g_adb.g_key_down */ + g_adb.g_c025_val |= 0x8; + adb_key_event(g_adb.g_a2code_down, 0); + g_adb.g_adb_repeat_vbl = vbl_count + g_adb.g_adb_repeat_rate; + } + } + + return g_adb.g_kbd_buf[0]; +} + +word32 +adb_access_c010() +{ + int tmp; + int i; + + g_adb.g_kbd_read_no_update = 0; + + tmp = g_adb.g_kbd_buf[0] & 0x7f; + g_adb.g_kbd_buf[0] = tmp; + + tmp = tmp | (g_adb.g_hard_key_down << 7); + if(g_adb.g_kbd_chars_buffered) { + // printf("c010 removing %X ",g_adb.g_kbd_buf[0]); + for(i = 1; i < g_adb.g_kbd_chars_buffered; i++) { + g_adb.g_kbd_buf[i - 1] = g_adb.g_kbd_buf[i]; + } + g_adb.g_kbd_chars_buffered--; + // printf(" @%d\n",g_adb.g_kbd_chars_buffered); + } + + g_adb.g_c025_val = g_adb.g_c025_val & (~ (0x08)); + + return tmp; +} + +word32 +adb_read_c025() +{ + + return g_adb.g_c025_val; +} + +int +adb_is_cmd_key_down() +{ + return CMD_DOWN; +} + +int +adb_is_option_key_down() +{ + return OPTION_DOWN; +} + +void +adb_increment_speed() +{ + // TODO + /* + const char *str; + + g_sim65816.g_limit_speed++; + if(g_sim65816.g_limit_speed > 3) { + g_sim65816.g_limit_speed = 0; + } + + str = ""; + switch(g_sim65816.g_limit_speed) { + case 0: + str = "...as fast as possible!"; + break; + case 1: + str = "...1.024MHz!"; + break; + case 2: + str = "...2.8MHz!"; + break; + case 3: + str = "...8.0MHz!"; + break; + } + printf("Toggling g_sim65816.g_limit_speed to %d%s\n", g_sim65816.g_limit_speed, str); + */ +} + +void +adb_physical_key_update(int a2code, int is_up) +{ + int autopoll; + int special; + int ascii_and_type; + int ascii; + + /* this routine called by xdriver to pass raw codes--handle */ + /* ucontroller and ADB bus protocol issues here */ + /* if autopoll on, pass it on through to c025,c000 regs */ + /* else only put it in kbd reg 3, and pull SRQ if needed */ + +// printf("adb_phys_key_update: %02x, %d (vbl %d)\n", a2code, is_up,g_sim65816.g_vbl_count); + + adb_printf("Handle a2code: %02x, is_up: %d\n", a2code, is_up); + + if(a2code < 0 || a2code > 0x7f) { + halt_printf("a2code: %04x!\n", a2code); + return; + } + + /* + // Remap 0x7b-0x7e to 0x3b-0x3e (arrow keys on new mac keyboards) + if(a2code >= 0x7b && a2code <= 0x7e) { + a2code = a2code - 0x40; + } + */ + + /* Now check for special keys (function keys, etc) */ + ascii_and_type = a2_key_to_ascii[a2code][1]; + special = 0; + if((ascii_and_type & 0xf000) == 0x8000) { + /* special function key */ + special = ascii_and_type & 0xff; + switch(special) { + case 0x01: /* F1 - remap to cmd */ + a2code = 0x37; + special = 0; + break; + case 0x02: /* F2 - remap to option */ + a2code = 0x3a; + special = 0; + break; + case 0x03: /* F3 - remap to escape for OS/2 */ + a2code = 0x35; + special = 0; + break; + case 0x0c: /* F12 - remap to reset */ + a2code = 0x7f; + special = 0; + break; + default: + break; + } + } + + /* Only process reset requests here */ + if(is_up == 0 && a2code == 0x7f && CTRL_DOWN) { + /* Reset pressed! */ + printf("Reset pressed since CTRL_DOWN: %d\n", CTRL_DOWN); + do_reset(); + return; + } + + if(special && !is_up) + { + int handled=0; + if (g_driver.x_handle_fkey) + handled = g_driver.x_handle_fkey(special); + + if (!handled) + switch(special) { + + case 0x05: /* F5 */ + if (r_sim65816.get_state()==RUNNING) + r_sim65816.pause(); + else + r_sim65816.resume(); + break; + +#ifndef ACTIVEGS + case 0x04: /* F4 - Emulator config panel */ + cfg_toggle_config_panel(); + break; + case 0x06: /* F6 - emulator speed */ + if(SHIFT_DOWN) { + halt2_printf("Shift-F6 pressed\n"); + } else { + adb_increment_speed(); + } + break; + case 0x07: /* F7 - fast disk emul */ + g_iwm.g_fast_disk_emul = !g_iwm.g_fast_disk_emul; + printf("g_fast_disk_emul is now %d\n", + g_iwm.g_fast_disk_emul); + break; +#endif + case 0x08: /* F8 - warp pointer */ + switch(g_adb.g_warp_pointer) + { + case WARP_NONE: + g_adb.g_warp_pointer=WARP_POINTER; + g_adb.g_hide_pointer = 1; + extern void x_recenter_hw_mouse(); + x_recenter_hw_mouse(); + printf("switching mouse to WARP_POINTER!\n"); + break; + /* + case WARP_POINTER: + // skip warp on non touch platform + if (g_driver.environment == ENV_TOUCH) + { + g_adb.g_warp_pointer=WARP_TOUCHSCREEN; + g_adb.g_hide_pointer = 0; + printf("switching mouse to WARP_TOUCHSCREEN!\n"); + break; + } + */ + default: // WARP_TOUCHSCREEN + g_adb.g_warp_pointer=WARP_NONE; + g_adb.g_hide_pointer = 0; + printf("switching mouse to WARP_NONE!\n"); + break; + } + x_hide_pointer(g_adb.g_hide_pointer); + + /* + g_adb.g_warp_pointer = !g_adb.g_warp_pointer; + if(g_adb.g_hide_pointer != g_adb.g_warp_pointer) { + g_adb.g_hide_pointer = g_adb.g_warp_pointer; + x_hide_pointer(g_adb.g_hide_pointer); + } + */ + + break; +#ifndef ACTIVEGS + case 0x09: /* F9 - swap paddles */ + if(SHIFT_DOWN) { + g_swap_paddles = !g_swap_paddles; + printf("Swap paddles is now: %d\n", + g_swap_paddles); + } else { + g_invert_paddles = !g_invert_paddles; + printf("Invert paddles is now: %d\n", + g_invert_paddles); + } + break; + case 0x0a: /* F10 - change a2vid paletter */ + change_a2vid_palette((g_video.g_a2vid_palette + 1) & 0xf); + break; + case 0x0b: /* F11 - full screen */ + g_adb.fullscreen = !g_adb.fullscreen; + x_full_screen(g_adb.fullscreen); + break; +#endif + } + + return; + } + /* Handle Keypad Joystick here partly...if keypad key pressed */ + /* while in Keypad Joystick mode, do not pass it on as a key press */ + if((ascii_and_type & 0xff00) == 0x1000) { + /* Keep track of keypad number keys being up or down even */ + /* if joystick mode isn't keypad. This avoid funny cases */ + /* if joystick mode is changed while a key is pressed */ + ascii = ascii_and_type & 0xff; + if(ascii > 0x30 && ascii <= 0x39) { + g_adb.g_keypad_key_is_down[ascii - 0x30] = !is_up; + } + if(g_joystick_type == JOYSTICK_TYPE_KEYPAD) { + /* If Joystick type is keypad, then do not let these */ + /* keypress pass on further, except for cmd/opt */ + if(ascii == 0x30) { + /* remap '0' to cmd */ + a2code = 0x37; + } else if(ascii == 0x2e || ascii == 0x2c) { + /* remap '.' and ',' to option */ + a2code = 0x3a; + } else { + /* Just ignore it in this mode */ + return; + } + } + } + + autopoll = 1; + if(g_adb.g_adb_mode & 1) { + /* autopoll is explicitly off */ + autopoll = 0; + } + if(g_adb.g_kbd_dev_addr != g_adb.g_kbd_ctl_addr) { + /* autopoll is off because ucontroller doesn't know kbd moved */ + autopoll = 0; + } + if(g_config_control_panel) { + /* always do autopoll */ + autopoll = 1; + } + + + if(is_up) { + if(!autopoll) { + /* no auto keys, generate SRQ! */ + adb_kbd_reg0_data(a2code, is_up); + } else { + adb_virtual_key_update(a2code, is_up); + } + } else { + if(!autopoll) { + /* no auto keys, generate SRQ! */ + adb_kbd_reg0_data(a2code, is_up); + } else { + /* was up, now down */ + adb_virtual_key_update(a2code, is_up); + } + } +} + +void +adb_virtual_key_update(int a2code, int is_up) +{ + int i; + int bitpos; + word32 mask; + + adb_printf("Virtual handle a2code: %02x, is_up: %d\n", a2code, is_up); + + if(a2code < 0 || a2code > 0x7f) { + halt_printf("a2code: %04x!\n", a2code); + return; + } + + i = (a2code >> 5) & 3; + bitpos = a2code & 0x1f; + mask = (1 << bitpos); + + if(is_up) { + if(g_adb.g_virtual_key_up[i] & mask) { + /* already up, do nothing */ + } else { + g_adb.g_virtual_key_up[i] |= mask; + adb_key_event(a2code, is_up); + } + } else { + if(g_adb.g_virtual_key_up[i] & mask) { + g_adb.g_virtual_key_up[i] &= (~mask); + adb_key_event(a2code, is_up); + } + } +} + +void +adb_all_keys_up() +{ + word32 mask; + int i, j; + + for(i = 0; i < 4; i++) { + for(j = 0; j < 32; j++) { + mask = 1 << j; + if((g_adb.g_virtual_key_up[i] & mask) == 0) { + /* create key-up event */ + adb_physical_key_update(i*32 + j, 1); + } + } + } +} + +void +adb_kbd_repeat_off() +{ + g_adb.g_key_down = 0; +} diff --git a/kegs/Src/adb.h b/kegs/Src/adb.h new file mode 100644 index 0000000..c2930f3 --- /dev/null +++ b/kegs/Src/adb.h @@ -0,0 +1,186 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + +const char rcsid_adb_h[] = "@(#)$KmKId: adb.h,v 1.11 2004-10-13 23:30:33-04 kentd Exp $"; + +#include "defc.h" + +enum { + ADB_IDLE = 0, + ADB_IN_CMD, + ADB_SENDING_DATA, +}; + +#define ADB_C027_MOUSE_DATA 0x80 +#define ADB_C027_MOUSE_INT 0x40 +#define ADB_C027_DATA_VALID 0x20 +#define ADB_C027_DATA_INT 0x10 +#define ADB_C027_KBD_VALID 0x08 +#define ADB_C027_KBD_INT 0x04 +#define ADB_C027_MOUSE_COORD 0x02 +#define ADB_C027_CMD_FULL 0x01 + +#define ADB_C027_NEG_MASK ( ~ ( \ + ADB_C027_MOUSE_DATA | ADB_C027_DATA_VALID | \ + ADB_C027_KBD_VALID | ADB_C027_MOUSE_COORD | \ + ADB_C027_CMD_FULL)) + + +#ifdef _WIN32 +#pragma pack(push,PRAGMA_PACK_SIZE) +#endif + + +STRUCT(Mouse_fifo) +{ + _ALIGNED(8) double dcycs; + int x; + int y; + int buttons; +} +XCODE_PRAGMA_PACK +; + +enum warpmode +{ + WARP_NONE = 0, + WARP_POINTER, + WARP_TOUCHSCREEN +}; + + +class s_adb : public serialized +{ +public: + int fullscreen ; + int halt_on_all_c027; + word32 g_adb_repeat_delay; + word32 g_adb_repeat_rate; + word32 g_adb_repeat_info; + word32 g_adb_char_set ; + word32 g_adb_layout_lang; + + word32 g_adb_interrupt_byte; + int g_adb_state; + + word32 g_adb_cmd ; + int g_adb_cmd_len; + int g_adb_cmd_so_far ; + word32 g_adb_cmd_data[16]; + +#define MAX_ADB_DATA_PEND 16 + + word32 g_adb_data[MAX_ADB_DATA_PEND]; + int g_adb_data_pending; + + word32 g_c027_val; + word32 g_c025_val; + + byte adb_memory[256]; + + word32 g_adb_mode ; /* mode set via set_modes, clear_modes */ + + enum warpmode g_warp_pointer; + int g_hide_pointer; + int g_unhide_pointer; + + int g_mouse_a2_x ; + int g_mouse_a2_y ; + int g_mouse_a2_button ; + int g_mouse_fifo_pos ; + int g_mouse_raw_x ; + int g_mouse_raw_y; + +#define ADB_MOUSE_FIFO 8 + + Mouse_fifo g_mouse_fifo[ADB_MOUSE_FIFO] ; + + int g_mouse_warp_x ; + int g_mouse_warp_y ; + + int g_adb_mouse_valid_data ; + int g_adb_mouse_coord ; + +#define MAX_KBD_BUF 8 + + int g_key_down ; + int g_hard_key_down ; + int g_a2code_down ; + int g_kbd_read_no_update ; + int g_kbd_chars_buffered ; + int g_kbd_buf[MAX_KBD_BUF]; + + word32 g_adb_repeat_vbl ; + + int g_kbd_dev_addr; /* ADB physical kbd addr */ + int g_mouse_dev_addr ; /* ADB physical mouse addr */ + + int g_kbd_ctl_addr; /* ADB microcontroller's kbd addr */ + int g_mouse_ctl_addr; /* ADB ucontroller's mouse addr*/ + /* above are ucontroller's VIEW of where mouse/kbd */ + /* are...if they are moved, mouse/keyboard funcs */ + /* should stop (c025, c000, c024, etc). */ + + word32 g_virtual_key_up[4]; /* bitmask of all possible 128 a2codes */ + /* indicates which keys are up=1 by bit */ + + int g_keypad_key_is_down[10] ;/* List from 0-9 of which keypad */ + /* keys are currently pressed */ + +#define MAX_ADB_KBD_REG3 16 + + int g_kbd_reg0_pos; + int g_kbd_reg0_data[MAX_ADB_KBD_REG3]; + int g_kbd_reg3_16bit ; /* also set in adb_reset()! */ + + + int g_adb_init; + word32 g_last_c027_read; // OG to monitor if mouse is being used! + + int g_simulate_space; // OG Mouse button can simulate space key + int g_need_to_decrement_fifo; + + s_adb() + { + init(); + } + void init() + { + INIT_SERIALIZED(); + + g_adb_repeat_delay = 45; + g_adb_repeat_rate = 3; + g_adb_repeat_info = 0x23; + g_adb_state = ADB_IDLE; + + g_adb_cmd = (word32)-1; + g_kbd_dev_addr = 2; /* ADB physical kbd addr */ + g_mouse_dev_addr = 3; /* ADB physical mouse addr */ + + g_kbd_ctl_addr = 2; /* ADB microcontroller's kbd addr */ + g_mouse_ctl_addr = 3; /* ADB ucontroller's mouse addr*/ + /* above are ucontroller's VIEW of where mouse/kbd */ + /* are...if they are moved, mouse/keyboard funcs */ + /* should stop (c025, c000, c024, etc). */ + + g_kbd_reg3_16bit = 0x602; /* also set in adb_reset()! */ + g_simulate_space = 1; // OG Mouse button can simulate space key + g_warp_pointer = WARP_NONE; + } + + DEFAULT_SERIALIZE_IN_OUT ; + +} +XCODE_PRAGMA_PACK +; + +#ifdef _WIN32 +#pragma pack(pop) +#endif + +extern s_adb g_adb; diff --git a/kegs/Src/async_event.cpp b/kegs/Src/async_event.cpp new file mode 100644 index 0000000..3961f23 --- /dev/null +++ b/kegs/Src/async_event.cpp @@ -0,0 +1,208 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include +#include "defc.h" +#include "adb.h" +#include "async_event.h" +#include "sim65816.h" +#include "savestate.h" + +extern void x_check_system_input_events(); +extern void x_update_modifiers(word32); + + +s_async_event g_async_event; + +void reset_async_event() +{ + + g_async_event.max_event_key = 0; + g_async_event.cur_event_key = 0; + g_async_event.unstacking_events = 0; + + +} + +void add_event_delay() +{ + g_async_event.mac_events[g_async_event.max_event_key].type = DELAY; + g_async_event.max_event_key = (g_async_event.max_event_key+1)%MAX_MAC_EVENT_KEYS; + +} + +void add_event_key(int _key,int _isup) +{ + +// printf("ADDING %X (%d)\n",_key,_isup); +#ifdef MAC + // Remap 0x7b-0x7e to 0x3b-0x3e (arrow keys on new mac keyboards) + if(_key >= 0x7b && _key <= 0x7e) { + _key = _key - 0x40; + } +#endif + +#ifdef ACTIVEGS + if (r_sim65816.get_state()==IN_PAUSE) + { + g_savestate.handleKey(_key,_isup); + return ; + } +#endif + + if (r_sim65816.get_state()!=RUNNING) return ; + + + g_async_event.mac_events[g_async_event.max_event_key].key = _key; + g_async_event.mac_events[g_async_event.max_event_key].isup = _isup; + g_async_event.mac_events[g_async_event.max_event_key].type = KEY; + + g_async_event.max_event_key = (g_async_event.max_event_key+1)%MAX_MAC_EVENT_KEYS; +} + +/* +void x_add_event_key(int _key, int _up) +{ + add_event_key(_key,_up); +} + */ + + +extern int is_mouse_used_by_host(); + +void simulate_space_event() +{ + if (g_adb.g_simulate_space) + { + // regarde si la souris a été lu depuis 1s => simule un appui barre espace + if (!is_mouse_used_by_host()) //g_last_c027_read < ( g_vbl_count - 60 ) ) + { + printf("Simulate KEY (%X)\n",g_adb.g_simulate_space); + add_event_key(g_adb.g_simulate_space,0); + add_event_key(g_adb.g_simulate_space,1); + } + } +} + +void add_event_mouse(int _x,int _y, int _state, int _button) +{ + + if (r_sim65816.get_state()!=RUNNING) return ; + + g_async_event.mac_events[g_async_event.max_event_key].x = _x; + g_async_event.mac_events[g_async_event.max_event_key].y = _y; + g_async_event.mac_events[g_async_event.max_event_key].state = _state; + g_async_event.mac_events[g_async_event.max_event_key].button = _button; + g_async_event.mac_events[g_async_event.max_event_key].type = MOUSE; + g_async_event.max_event_key = (g_async_event.max_event_key+1)%MAX_MAC_EVENT_KEYS; +} + +void add_event_modifier(unsigned int _mod) +{ + /* + static int lastmod = 0; + if (_mod != lastmod) + printf("newmod:%x\n",_mod); + lastmod = _mod; + */ + if (r_sim65816.get_state()!=RUNNING) return ; + + g_async_event.mac_events[g_async_event.max_event_key].mod = _mod; + g_async_event.mac_events[g_async_event.max_event_key].type = MODIFIERS; + g_async_event.max_event_key = (g_async_event.max_event_key+1)%MAX_MAC_EVENT_KEYS; +} + + + +void check_input_events() +{ + + x_check_system_input_events(); + + g_async_event.unstacking_events = 1; +#define MAX_STACK 100 + int nbstack = 0; + int stacks[MAX_STACK]; + while(g_async_event.cur_event_key!=g_async_event.max_event_key) + { + int i = g_async_event.cur_event_key; + switch(g_async_event.mac_events[i].type) + { + case DELAY: + // skip event + g_async_event.cur_event_key = (g_async_event.cur_event_key+1)%MAX_MAC_EVENT_KEYS; + g_async_event.unstacking_events = 0; + return; + + case MODIFIERS: + x_update_modifiers( g_async_event.mac_events[i].mod); + break; + case KEY: + { + // regarde si on a déjà pushé l'évement dans cette frame + int k = g_async_event.mac_events[i].key; + int delayed=0; + for(int s = 0;s0) // -1 means warp pointer + { + int s = g_async_event.mac_events[i].state & mac_events[i].button; + int nblastvbl = g_vbl_count - g_input_last_vbl; + if (nblastvbl<0) + { + printf("alert !!!"); + } + if ( nblastvbl <= 1 && s!= g_last_button_state ) + { + printf("delaying mouse event %d,%d (%d) (%d)\n",g_async_event.mac_events[i].x,mac_events[i].y,s,nblastvbl); + g_async_event.unstacking_events = 0; + + return; + } + g_input_last_vbl = g_vbl_count ; + g_last_button_state = s; + } + */ + + update_mouse( g_async_event.mac_events[i].x , + g_async_event.mac_events[i].y , + g_async_event.mac_events[i].state , + g_async_event.mac_events[i].button) ; + break; + } + g_async_event.cur_event_key = (g_async_event.cur_event_key+1)%MAX_MAC_EVENT_KEYS; + } + + g_async_event.unstacking_events = 0; + +} + diff --git a/kegs/Src/async_event.h b/kegs/Src/async_event.h new file mode 100644 index 0000000..ab62926 --- /dev/null +++ b/kegs/Src/async_event.h @@ -0,0 +1,57 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + +enum event_type +{ + KEY,MOUSE,MODIFIERS,DELAY +}; + +#define MAX_MAC_EVENT_KEYS 1024 +#ifdef _WIN32 +#pragma pack(push,PRAGMA_PACK_SIZE) +#endif + +typedef struct +{ + enum event_type type; + int key, isup; + int x,y,state,button; + unsigned int mod; + +}struct_event XCODE_PRAGMA_PACK; + + +class s_async_event : public serialized +{ +public: + + int max_event_key ; + int cur_event_key ; + int unstacking_events ; + + struct_event mac_events[MAX_MAC_EVENT_KEYS] ; + + s_async_event() + { + memset(this,0,sizeof(*this)); + } + + DEFAULT_SERIALIZE_IN_OUT ; + +} XCODE_PRAGMA_PACK; + +#ifdef _WIN32 +#pragma pack(pop) +#endif + +extern void add_event_key(int _key,int _isup); +extern void add_event_mouse(int _x,int _y, int _state, int _button); +extern void add_event_modifier(unsigned int _mod); +extern void add_event_delay(); + +extern s_async_event g_async_event; diff --git a/kegs/Src/clock.cpp b/kegs/Src/clock.cpp new file mode 100644 index 0000000..d4f989a --- /dev/null +++ b/kegs/Src/clock.cpp @@ -0,0 +1,383 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "defc.h" +#include +#ifdef _WIN32 +# include +# include +#else +# include +#endif + +#include "clock.h" +#include "moremem.h" +#include "sim65816.h" + +s_clock g_clock; + +extern int Verbose; +//extern word32 g_vbl_count; // OG change int to word32 +//extern int g_rom_version; +extern int g_config_kegs_update_needed; + + +double +get_dtime() +{ +#ifndef _WIN32 + struct timeval tp1; + double dsec; + double dusec; +#endif + + /* Routine used to return actual system time as a double */ + /* No routine cares about the absolute value, only deltas--maybe */ + /* take advantage of that in future to increase usec accuracy */ +double dtime; +#ifdef _WIN32 + LARGE_INTEGER counter; + LARGE_INTEGER frequency; + QueryPerformanceCounter(&counter); + QueryPerformanceFrequency(&frequency); + dtime = (double)counter.QuadPart/(double)frequency.QuadPart; +// dtime = timeGetTime() / 1000.0; +#else + + +# ifdef SOLARIS + gettimeofday(&tp1, (void *)0); +# else + gettimeofday(&tp1, (struct timezone *)0); +# endif + + dsec = (double)tp1.tv_sec; + dusec = (double)tp1.tv_usec; + + dtime = dsec + (dusec / (1000.0 * 1000.0)); +#endif + + return dtime; +} + +int +micro_sleep(double dtime) +{ +#ifndef _WIN32 + struct timeval Timer; + int ret; +#endif + + if(dtime <= 0.0) { + return 0; + } + if(dtime >= 1.0) { + halt_printf("micro_sleep called with %f!!\n", dtime); + return -1; + } + +#if 0 + printf("usleep: %f\n", dtime); +#endif + +#ifdef _WIN32 + Sleep((DWORD)(dtime * 1000)); +#else + Timer.tv_sec = 0; + Timer.tv_usec = (dtime * 1000000.0); + if( (ret = select(0, 0, 0, 0, &Timer)) < 0) { + fprintf(stderr, "micro_sleep (select) ret: %d, errno: %d\n", + ret, errno); + return -1; + } +#endif + return 0; +} + +void +clk_bram_zero() +{ + int i, j; + + /* zero out all bram */ + for(i = 0; i < 2; i++) { + for(j = 0; j < 256; j++) { + g_clock.g_bram[i][j] = 0; + } + } + g_clock.g_bram_ptr = &(g_clock.g_bram[0][0]); +} + +void +clk_bram_set(int bram_num, int offset, int val) +{ + g_clock.g_bram[bram_num][offset] = val; +} + + +extern void x_clk_setup_bram_version(); + +void +clk_setup_bram_version() +{ + x_clk_setup_bram_version(); +} + +void +clk_write_bram(FILE *fconf) +{ + int i, j, k; + + for(i = 0; i < 2; i++) { + fprintf(fconf, "\n"); + for(j = 0; j < 256; j += 16) { + fprintf(fconf, "bram%d[%02x] =", 2*i + 1, j); + for(k = 0; k < 16; k++) { + fprintf(fconf, " %02x", g_clock.g_bram[i][j+k]); + } + fprintf(fconf, "\n"); + } + } +} + +void +update_cur_time() +{ + + time_t cur_time; + unsigned int secs, secs2; + + +#ifdef UNDER_CE // OG Not supported on WIndows CE + /* + SYSTEMTIME stime; + FILETIME ftime; + GetLocalTime(&stime); + SystemTimeToFileTime(&stime,&ftime); + cur_time = ftime.dwLowDateTime; + */ + cur_time = time(0); + + secs=0; + secs2=0; + +#else + struct tm *tm_ptr; + cur_time = time(0); + + /* Figure out the timezone (effectively) by diffing two times. */ + /* this is probably not right for a few hours around daylight savings*/ + /* time transition */ + secs2 = (unsigned int)mktime(gmtime(&cur_time)); + tm_ptr = localtime(&cur_time); + secs = (unsigned int)mktime(tm_ptr); + +#ifdef DRIVER_OSX + /* Mac OS X's mktime function modifies the tm_ptr passed in for */ + /* the CDT timezone and breaks this algorithm. So on a Mac, we */ + /* will use the tm_ptr->gmtoff member to correct the time */ + secs = secs + tm_ptr->tm_gmtoff; +#else + secs = (unsigned int)cur_time - (secs2 - secs); + + if(tm_ptr->tm_isdst) { + /* adjust for daylight savings time */ + secs += 3600; + } +#endif +#endif + /* add in secs to make date based on Apple Jan 1, 1904 instead of */ + /* Unix's Jan 1, 1970 */ + /* So add in 66 years and 17 leap year days (1904 is a leap year) */ + secs += ((66*365) + 17) * (24*3600); + + g_clock.g_clk_cur_time = secs; + + clk_printf("Update g_clock.g_clk_cur_time to %08x\n", g_clock.g_clk_cur_time); + g_clock.g_clk_next_vbl_update = g_sim65816.g_vbl_count + 5; +} + +/* clock_update called by sim65816 every VBL */ +void +clock_update() +{ + /* Nothing to do */ +} + +void +clock_update_if_needed() +{ + int diff; + + diff = g_clock.g_clk_next_vbl_update - g_sim65816.g_vbl_count; + if(diff < 0 || diff > 60) { + /* Been a while, re-read the clock */ + update_cur_time(); + } +} + +void +clock_write_c034(word32 val) +{ + g_moremem.g_c034_val = val & 0x7f; + if((val & 0x80) != 0) { + if((val & 0x20) == 0) { + printf("c034 write not last = 1\n"); + /* set_halt(1); */ + } + do_clock_data(); + } +} + + +void +do_clock_data() +{ + word32 mask; + int read; + int op; + + clk_printf("In do_clock_data, g_clock.g_clk_mode: %02x\n", g_clock.g_clk_mode); + + read = g_moremem.g_c034_val & 0x40; + switch(g_clock.g_clk_mode) { + case CLK_IDLE: + g_clock.g_clk_read = (g_moremem.g_c033_data >> 7) & 1; + g_clock.g_clk_reg1 = (g_moremem.g_c033_data >> 2) & 3; + op = (g_moremem.g_c033_data >> 4) & 7; + if(!read) { + /* write */ + switch(op) { + case 0x0: /* Read/write seconds register */ + g_clock.g_clk_mode = CLK_TIME; + clock_update_if_needed(); + break; + case 0x3: /* internal registers */ + g_clock.g_clk_mode = CLK_INTERNAL; + if(g_clock.g_clk_reg1 & 0x2) { + /* extend BRAM read */ + g_clock.g_clk_mode = CLK_BRAM2; + g_clock.g_clk_reg1 = (g_moremem.g_c033_data & 7) << 5; + } + break; + case 0x2: /* read/write ram 0x10-0x13 */ + g_clock.g_clk_mode = CLK_BRAM1; + g_clock.g_clk_reg1 += 0x10; + break; + case 0x4: /* read/write ram 0x00-0x0f */ + case 0x5: case 0x6: case 0x7: + g_clock.g_clk_mode = CLK_BRAM1; + g_clock.g_clk_reg1 = (g_moremem.g_c033_data >> 2) & 0xf; + break; + default: + halt_printf("Bad c033_data in CLK_IDLE: %02x\n", + g_moremem.g_c033_data); + } + } else { + printf("clk read from IDLE mode!\n"); + /* set_halt(1); */ + g_clock.g_clk_mode = CLK_IDLE; + } + break; + case CLK_BRAM2: + if(!read) { + /* get more bits of bram addr */ + if((g_moremem.g_c033_data & 0x83) == 0x00) { + /* more address bits */ + g_clock.g_clk_reg1 |= ((g_moremem.g_c033_data >> 2) & 0x1f); + g_clock.g_clk_mode = CLK_BRAM1; + } else { + halt_printf("CLK_BRAM2: c033_data: %02x!\n", + g_moremem.g_c033_data); + g_clock.g_clk_mode = CLK_IDLE; + } + } else { + halt_printf("CLK_BRAM2: clock read!\n"); + g_clock.g_clk_mode = CLK_IDLE; + } + break; + case CLK_BRAM1: + /* access battery ram addr g_clock.g_clk_reg1 */ + if(read) { + if(g_clock.g_clk_read) { + /* Yup, read */ + g_moremem.g_c033_data = g_clock.g_bram_ptr[g_clock.g_clk_reg1]; + clk_printf("Reading BRAM loc %02x: %02x\n", + g_clock.g_clk_reg1, g_moremem.g_c033_data); + } else { + halt_printf("CLK_BRAM1: said wr, now read\n"); + } + } else { + if(g_clock.g_clk_read) { + halt_printf("CLK_BRAM1: said rd, now write\n"); + } else { + /* Yup, write */ + clk_printf("Writing BRAM loc %02x with %02x\n",g_clock.g_clk_reg1, g_moremem.g_c033_data); + g_clock.g_bram_ptr[g_clock.g_clk_reg1] = g_moremem.g_c033_data; + g_config_kegs_update_needed = 1; + } + } + g_clock.g_clk_mode = CLK_IDLE; + break; + case CLK_TIME: + if(read) { + if(g_clock.g_clk_read == 0) { + halt_printf("Reading time, but in set mode!\n"); + } + g_moremem.g_c033_data = (g_clock.g_clk_cur_time >> (g_clock.g_clk_reg1 * 8)) & + 0xff; + clk_printf("Returning time byte %d: %02x\n", + g_clock.g_clk_reg1, g_moremem.g_c033_data); + } else { + /* Write */ + if(g_clock.g_clk_read) { + halt_printf("Write time, but in read mode!\n"); + } + clk_printf("Writing TIME loc %d with %02x\n", + g_clock.g_clk_reg1, g_moremem.g_c033_data); + mask = 0xff << (8 * g_clock.g_clk_reg1); + + g_clock.g_clk_cur_time = (g_clock.g_clk_cur_time & (~mask)) | + ((g_moremem.g_c033_data & 0xff) << (8 * g_clock.g_clk_reg1)); + } + g_clock.g_clk_mode = CLK_IDLE; + break; + case CLK_INTERNAL: + if(read) { + printf("Attempting to read internal reg %02x!\n", + g_clock.g_clk_reg1); + } else { + switch(g_clock.g_clk_reg1) { + case 0x0: /* test register */ + if(g_moremem.g_c033_data & 0xc0) { + printf("Writing test reg: %02x!\n", + g_moremem.g_c033_data); + /* set_halt(1); */ + } + break; + case 0x1: /* write protect reg */ + clk_printf("Writing clk wr_protect: %02x\n", + g_moremem.g_c033_data); + if(g_moremem.g_c033_data & 0x80) { + printf("Stop, wr clk wr_prot: %02x\n", + g_moremem.g_c033_data); + /* set_halt(1); */ + } + break; + default: + halt_printf("Writing int reg: %02x with %02x\n", + g_clock.g_clk_reg1, g_moremem.g_c033_data); + } + } + g_clock.g_clk_mode = CLK_IDLE; + break; + default: + halt_printf("clk mode: %d unknown!\n", g_clock.g_clk_mode); + g_clock.g_clk_mode = CLK_IDLE; + break; + } +} + diff --git a/kegs/Src/clock.h b/kegs/Src/clock.h new file mode 100644 index 0000000..48e07a2 --- /dev/null +++ b/kegs/Src/clock.h @@ -0,0 +1,78 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + +#define CLK_IDLE 1 +#define CLK_TIME 2 +#define CLK_INTERNAL 3 +#define CLK_BRAM1 4 +#define CLK_BRAM2 5 + +#ifdef _WIN32 +#pragma pack(push,PRAGMA_PACK_SIZE) +#endif + +class s_clock : public serialized +{ +public: + int g_clk_mode; + int g_clk_read; + int g_clk_reg1 ; + + byte g_bram[2][256]; + byte *g_bram_ptr ; + + word32 g_clk_cur_time ; + int g_clk_next_vbl_update ; + + s_clock() + { + INIT_SERIALIZED(); + + g_clk_mode = CLK_IDLE; + g_clk_cur_time = 0xa0000000; + g_bram_ptr = &(g_bram[0][0]); + } + +#define SERIALIZE_BRAM g_bram_ptr = (byte*)( (g_bram_ptr == &g_bram[0][0])?1:3 ); +#define UNSERIALIZE_BRAM g_bram_ptr = ((intptr_t)g_bram_ptr ==1) ? &g_bram[0][0] : &g_bram[1][0] + + + void in(serialize* _s) + { + byte* ptr = (byte*)_s->data; + int ssize = *(int*)ptr; + if (ssize!= sizeof(*this)) + ALIGNMENT_ERROR("clock",ssize,sizeof(*this)); + + ptr += sizeof(ssize); + + memcpy(this,ptr,sizeof(*this)); + UNSERIALIZE_BRAM ; + } + + int out(serialize* _s, int _fastalloc) + { + int ssize = sizeof(*this); + int size = ssize + sizeof(ssize); + _s->size = size; + _s->fastalloc = _fastalloc; + _s->data = (void*)x_malloc(size,_fastalloc); + byte* ptr = (byte*) _s->data; + memcpy(ptr,&ssize,sizeof(ssize)); + ptr+=sizeof(ssize); + SERIALIZE_BRAM; + memcpy(ptr,this,sizeof(*this)); + UNSERIALIZE_BRAM; + return size; + } + +} XCODE_PRAGMA_PACK; +#ifdef _WIN32 +#pragma pack(pop) +#endif +extern s_clock g_clock; diff --git a/kegs/Src/compile_time.cpp b/kegs/Src/compile_time.cpp new file mode 100644 index 0000000..7a5e877 --- /dev/null +++ b/kegs/Src/compile_time.cpp @@ -0,0 +1,8 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +char g_compile_time[] = "Compiled: " __DATE__ " " __TIME__ ; + diff --git a/kegs/Src/compression.cpp b/kegs/Src/compression.cpp new file mode 100644 index 0000000..b01f0ce --- /dev/null +++ b/kegs/Src/compression.cpp @@ -0,0 +1,305 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "defc.h" +#include "savestate.h" +#include "compression.h" +#include "../../Libraries/zlib123/zlib.h" + +int rleencode(serialize* _data); + +s_compression g_compression; + + +int serialize::expand() +{ + if (!rledata) + { + // printf("cannot expand : no compressed data\n"); + return 0; + } + + if (data) + { + // printf("alreay expanded!"); + return 0; + } + + Bytef* p = (Bytef*)x_malloc(size,fastalloc); + uLongf dsize = size; + ::uncompress(p,&dsize,(const Bytef*)rledata,rlesize); + + // TODO ERROR CHECKING + data = p; + + return 1; +} + + +int serialize::releaseuncompressed() +{ + if (!rledata) + { + // printf("cannot release uncompressed : no compressed data!\n"); + return 0; + } + x_free(data,size,fastalloc); + data = NULL; + return 1; +} + +int serialize::compress() +{ + if (rledata) + { + // printf("already compressed\n"); + return 0; + } + + byte* tmp = (byte*)x_malloc(size,fastalloc); +// rlesize = rleencode(this); + +// double t = get_dtime(); + uLongf destsize = size; + ::compress2 (tmp,&destsize,(const Bytef*)data,size,Z_BEST_SPEED); + rlesize = destsize; +// double delay = get_dtime() - t; +// printf("compressed %d%% in %fs\n",(int)( (float)destsize*100/(float)size ),delay/1000); + + rledata = x_realloc(tmp,rlesize,size); + + releaseuncompressed(); + return 1; +} + +int s_compression::add_job(serialize* _s) +{ + for(int i=0;icompress(); + } + } + } + return 0; +} + +s_compression::~s_compression() +{ + for(int j=0;jsize; + char* ptr = (char*)_data->data; + char currChar = *ptr++; + size--; + + int compressedsize = 0; + + /* read input until there's nothing left */ + while (size) + { + charBuf[count]=currChar; + count++; + + if (count >= MIN_RUN) + { + int i; + + /* check for run charBuf[count - 1] .. charBuf[count - MIN_RUN]*/ + for (i = 2; i <= MIN_RUN; i++) + { + if (currChar != charBuf[count - i]) + { + /* no run */ + i = 0; + break; + } + } + + if (i != 0) + { + /* we have a run write out buffer before run*/ + int nextChar; + + if (count > MIN_RUN) + { + /* block size - 1 followed by contents */ + *out++ = count - MIN_RUN - 1; + compressedsize++; + + memcpy(out,charBuf,count - MIN_RUN); + out+= count - MIN_RUN; + compressedsize += count - MIN_RUN; + + } + + + /* determine run length (MIN_RUN so far) */ + count = MIN_RUN; + + while (size) + { + nextChar = *ptr++; + size--; + if (nextChar == currChar) + { + count++; + if (MAX_RUN == count) + { + /* run is at max length */ + break; + } + } + else + break; + } + + *out++ = (int)(MIN_RUN - 1) - (int)(count); + compressedsize++; + + *out++ = currChar; + compressedsize++; + + if ((size) && (count != MAX_RUN)) + { + /* make run breaker start of next buffer */ + charBuf[0] = nextChar; + count = 1; + } + else + { + /* file or max run ends in a run */ + count = 0; + } + } + } + + if (MAX_READ == count) + { + int i; + + *out++ = MAX_COPY - 1; + compressedsize++; + + memcpy(out,charBuf,MAX_COPY); + compressedsize+=MAX_COPY; + out+=MAX_COPY; + + /* start a new buffer */ + count = MAX_READ - MAX_COPY; + + /* copy excess to front of buffer */ + for (i = 0; i < count; i++) + { + charBuf[i] = charBuf[MAX_COPY + i]; + } + } + + if (size) + { + currChar = *ptr++; + size--; + } + } + + /* write out last buffer */ + if (0 != count) + { + if (count <= MAX_COPY) + { + /* write out entire copy buffer */ + *out++= count -1; + compressedsize++; + + memcpy(out,charBuf,count); + out += count; + compressedsize+=count; + } + else + { + /* we read more than the maximum for a single copy buffer */ + + *out++ = MAX_COPY - 1; + compressedsize++; + + memcpy(out,charBuf,MAX_COPY); + out+=MAX_COPY; + compressedsize+=MAX_COPY; + + /* write out remainder */ + count -= MAX_COPY; + + *out++ = count -1; + compressedsize++; + + memcpy(out,&charBuf[MAX_COPY],count); + out+=count; + compressedsize+=count; + } + } + + printf("compressed from %d to %d\n",_data->size,compressedsize); + return compressedsize; +} + diff --git a/kegs/Src/compression.h b/kegs/Src/compression.h new file mode 100644 index 0000000..d067c8d --- /dev/null +++ b/kegs/Src/compression.h @@ -0,0 +1,36 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + +#define MAX_JOB 32 + +void* x_realloc(void* ptr,int _newsize, int _formersize); +extern void* x_malloc(int size, int fastalloc); +extern void* x_free(void* ptr,int size, int fastalloc); + +extern int cacheSize; + +class serialize; + +class s_compression +{ + + serialize* jobs[MAX_JOB]; + +public: + s_compression() + { + memset(this,0,sizeof(*this)); + } + ~s_compression(); + + int add_job(serialize* _job); + int remove_job(serialize* _job); + int process_jobs(int _nbjob); +}; + +extern s_compression g_compression; \ No newline at end of file diff --git a/kegs/Src/config.h b/kegs/Src/config.h new file mode 100644 index 0000000..60f495f --- /dev/null +++ b/kegs/Src/config.h @@ -0,0 +1,82 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#ifdef INCLUDE_RCSID_C +const char rcsid_config_h[] = "@(#)$KmKId: config.h,v 1.9 2004-11-12 23:10:28-05 kentd Exp $"; +#endif + +#include "iwm.h" + +#define CONF_BUF_LEN 1024 +#define COPY_BUF_SIZE 4096 +#define CFG_PRINTF_BUFSIZE 2048 + +#define CFG_PATH_MAX 1024 + +#define CFG_NUM_SHOWENTS 16 + +#define CFGTYPE_MENU 1 +#define CFGTYPE_INT 2 +#define CFGTYPE_DISK 3 +#define CFGTYPE_FUNC 4 +#define CFGTYPE_FILE 5 +/* CFGTYPE limited to just 4 bits: 0-15 */ + +/* Cfg_menu, Cfg_dirent and Cfg_listhdr are defined in defc.h */ + +STRUCT(Cfg_defval) { + Cfg_menu *menuptr; + int intval; + char *strval; +}; + +/* config.c */ +void config_init_menus(Cfg_menu *menuptr); +void config_init(void); +void cfg_exit(void); +void cfg_toggle_config_panel(void); +void cfg_text_screen_dump(void); +void config_vbl_update(int doit_3_persec); +void config_parse_option(char *buf, int pos, int len, int line); +void config_parse_bram(char *buf, int pos, int len); +void config_load_roms(void); +void config_parse_config_kegs_file(void); +Disk *cfg_get_dsk_from_slot_drive(int slot, int drive); +void config_generate_config_kegs_name(char *outstr, int maxlen, Disk *dsk, int with_extras); +void config_write_config_kegs_file(void); +void insert_disk(int slot, int drive, const char *name, int ejected, int force_size, const char *partition_name, int part_num); +void eject_named_disk(Disk *dsk, const char *name, const char *partition_name); +void eject_disk_by_num(int slot, int drive); +void eject_disk(Disk *dsk); +int cfg_get_fd_size(int fd); +int cfg_partition_read_block(int fd, void *buf, int blk, int blk_size); +int cfg_partition_find_by_name_or_num(int fd, const char *partnamestr, int part_num, Disk *dsk); +int cfg_partition_make_list(int fd); +int cfg_maybe_insert_disk(int slot, int drive, const char *namestr); +int cfg_stat(char *path, struct stat *sb); +void cfg_htab_vtab(int x, int y); +void cfg_home(void); +void cfg_cleol(void); +void cfg_putchar(int c); +void cfg_printf(const char *fmt, ...); +void cfg_print_num(int num, int max_len); +void cfg_get_disk_name(char *outstr, int maxlen, int type_ext, int with_extras); +void cfg_parse_menu(Cfg_menu *menuptr, int menu_pos, int highlight_pos, int change); +void cfg_get_base_path(char *pathptr, const char *inptr, int go_up); +void cfg_file_init(void); +void cfg_free_alldirents(Cfg_listhdr *listhdrptr); +void cfg_file_add_dirent(Cfg_listhdr *listhdrptr, const char *nameptr, int is_dir, int size, int image_start, int part_num); +int cfg_dirent_sortfn(const void *obj1, const void *obj2); +int cfg_str_match(const char *str1, const char *str2, int len); +void cfg_file_readdir(const char *pathptr); +char *cfg_shorten_filename(const char *in_ptr, int maxlen); +void cfg_fix_topent(Cfg_listhdr *listhdrptr); +void cfg_file_draw(void); +void cfg_partition_selected(void); +void cfg_file_update_ptr(char *str); +void cfg_file_selected(void); +void cfg_file_handle_key(int key); +void config_control_panel(void); diff --git a/kegs/Src/config_generic.cpp b/kegs/Src/config_generic.cpp new file mode 100644 index 0000000..4369894 --- /dev/null +++ b/kegs/Src/config_generic.cpp @@ -0,0 +1,718 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "defc.h" +#include "moremem.h" +#include "sim65816.h" +#include "iwm.h" +#include "config.h" +#include "driver.h" + +#ifdef _MSC_VER +#define snprintf _snprintf +#endif + +//extern int g_rom_version; +//extern word32 g_mem_size_base; +extern byte *g_rom_fc_ff_ptr; +extern byte *g_rom_cards_ptr; +//extern word32 g_mem_size_exp; +//extern Iwm iwm; +///extern int Verbose; + +//extern int g_highest_smartport_unit; + +// was in config.cpp + +int g_config_control_panel = 0; +int g_config_kegs_update_needed = 0; +word32 g_cfg_vbl_count = 0; +int g_user_page2_shadow = 1; +int g_save_cur_a2_stat = 0; + +const byte g_rom_c600_rom01_diffs[256] = { + 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0xe2, 0x00, + 0xd0, 0x50, 0x0f, 0x77, 0x5b, 0xb9, 0xc3, 0xb1, + 0xb1, 0xf8, 0xcb, 0x4e, 0xb8, 0x60, 0xc7, 0x2e, + 0xfc, 0xe0, 0xbf, 0x1f, 0x66, 0x37, 0x4a, 0x70, + 0x55, 0x2c, 0x3c, 0xfc, 0xc2, 0xa5, 0x08, 0x29, + 0xac, 0x21, 0xcc, 0x09, 0x55, 0x03, 0x17, 0x35, + 0x4e, 0xe2, 0x0c, 0xe9, 0x3f, 0x9d, 0xc2, 0x06, + 0x18, 0x88, 0x0d, 0x58, 0x57, 0x6d, 0x83, 0x8c, + 0x22, 0xd3, 0x4f, 0x0a, 0xe5, 0xb7, 0x9f, 0x7d, + 0x2c, 0x3e, 0xae, 0x7f, 0x24, 0x78, 0xfd, 0xd0, + 0xb5, 0xd6, 0xe5, 0x26, 0x85, 0x3d, 0x8d, 0xc9, + 0x79, 0x0c, 0x75, 0xec, 0x98, 0xcc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x39, 0x00, 0x35, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, + 0x6c, 0x44, 0xce, 0x4c, 0x01, 0x08, 0x00, 0x00 +}; + +extern void x_config_load_roms(); +extern void x_config_load_additional_roms(); + + + +void +config_load_roms() +{ + int more_than_8mb; + int changed_rom; + int i; + + // OG load roms + if (g_driver.x_config_load_roms==NULL) + x_fatal_exit("missing rom"); + + g_driver.x_config_load_roms(); + + memset(&g_rom_cards_ptr[0], 0, 256*16); + + if (g_sim65816.g_rom_version < 0) + { + // No need to + return ; + } + + /* initialize c600 rom to be diffs from the real ROM, to build-in */ + /* Apple II compatibility without distributing ROMs */ + for(i = 0; i < 256; i++) { + g_rom_cards_ptr[0x600 + i] = g_rom_fc_ff_ptr[0x3c600 + i] ^ + g_rom_c600_rom01_diffs[i]; + } + + if(g_sim65816.g_rom_version >= 3) { + /* some patches */ + g_rom_cards_ptr[0x61b] ^= 0x40; + g_rom_cards_ptr[0x61c] ^= 0x33; + g_rom_cards_ptr[0x632] ^= 0xc0; + g_rom_cards_ptr[0x633] ^= 0x33; + } + + + x_config_load_additional_roms(); + + more_than_8mb = (g_sim65816.g_mem_size_exp > 0x800000); + /* Only do the patch if users wants more than 8MB of expansion mem */ + + changed_rom = 0; + if(g_sim65816.g_rom_version == 1) { + /* make some patches to ROM 01 */ +#if 0 + /* 1: Patch ROM selftest to not do speed test */ + printf("Patching out speed test failures from ROM 01\n"); + g_rom_fc_ff_ptr[0x3785a] = 0x18; + changed_rom = 1; +#endif + +#if 0 + /* 2: Patch ROM selftests not to do tests 2,4 */ + /* 0 = skip, 1 = do it, test 1 is bit 0 of LSByte */ + g_rom_fc_ff_ptr[0x371e9] = 0xf5; + g_rom_fc_ff_ptr[0x371ea] = 0xff; + changed_rom = 1; +#endif + + + if(more_than_8mb) { + /* Geoff Weiss patch to use up to 14MB of RAM */ + g_rom_fc_ff_ptr[0x30302] = 0xdf; + g_rom_fc_ff_ptr[0x30314] = 0xdf; + g_rom_fc_ff_ptr[0x3031c] = 0x00; + changed_rom = 1; + } + + /* Patch ROM selftest to not do ROM cksum if any changes*/ + if(changed_rom) { + g_rom_fc_ff_ptr[0x37a06] = 0x18; + g_rom_fc_ff_ptr[0x37a07] = 0x18; + } + } else if(g_sim65816.g_rom_version == 3) { + /* patch ROM 03 */ + printf("Patching ROM 03 smartport bug\n"); + /* 1: Patch Smartport code to fix a stupid bug */ + /* that causes it to write the IWM status reg into c036, */ + /* which is the system speed reg...it's "safe" since */ + /* IWM status reg bit 4 must be 0 (7MHz)..., otherwise */ + /* it might have turned on shadowing in all banks! */ + g_rom_fc_ff_ptr[0x357c9] = 0x00; + changed_rom = 1; + +#if 0 + /* patch ROM 03 to not to speed test */ + /* skip fast speed test */ + g_rom_fc_ff_ptr[0x36ad7] = 0x18; + g_rom_fc_ff_ptr[0x36ad8] = 0x18; + changed_rom = 1; +#endif + +#if 0 + /* skip slow speed test */ + g_rom_fc_ff_ptr[0x36ae7] = 0x18; + g_rom_fc_ff_ptr[0x36ae8] = 0x6b; + changed_rom = 1; +#endif + +#if 0 + /* 4: Patch ROM 03 selftests not to do tests 1-4 */ + g_rom_fc_ff_ptr[0x364a9] = 0xf0; + g_rom_fc_ff_ptr[0x364aa] = 0xff; + changed_rom = 1; +#endif + + /* ROM tests are in ff/6403-642x, where 6403 = addr of */ + /* test 1, etc. */ + + if(more_than_8mb) { + /* Geoff Weiss patch to use up to 14MB of RAM */ + g_rom_fc_ff_ptr[0x30b] = 0xdf; + g_rom_fc_ff_ptr[0x31d] = 0xdf; + g_rom_fc_ff_ptr[0x325] = 0x00; + changed_rom = 1; + } + + if(changed_rom) { + /* patch ROM 03 selftest to not do ROM cksum */ + g_rom_fc_ff_ptr[0x36cb0] = 0x18; + g_rom_fc_ff_ptr[0x36cb1] = 0x18; + } + + } +} + + + +Disk * +cfg_get_dsk_from_slot_drive(int slot, int drive) +{ + Disk *dsk; + int max_drive; + + /* Get dsk */ + max_drive = 2; + switch(slot) { + case 5: + dsk = &(g_iwm.iwm.drive35[drive]); + break; + case 6: + dsk = &(g_iwm.iwm.drive525[drive]); + break; + default: + max_drive = MAX_C7_DISKS; + dsk = &(g_iwm.iwm.smartport[drive]); + break; + } + + if(drive >= max_drive) { + dsk -= drive; /* move back to drive 0 effectively */ + } + dsk->slot = slot; + dsk->disk = drive+1; + return dsk; +} + + +void +insert_disk(int slot, int drive, const char *name, int ejected, int force_size, + const char *partition_name, int part_num) +{ + byte buf_2img[512]; + Disk *dsk; + + +// char *part_ptr; + int size; +#if 0 +// char *name_ptr; + char *uncomp_ptr, *system_str; + int system_len; +#endif +// int part_len; + int cmp_o, cmp_p, cmp_dot; + int cmp_b, cmp_i, cmp_n; + int can_write; + int len; + int nibs; + int unix_pos; + size_t name_len; + int image_identified; + int exp_size; + int save_track; + int ret; + int tmp; + int i; + + + g_config_kegs_update_needed = 1; + + if((slot < 5) || (slot > 7)) { + fatal_printf("Invalid slot for inserting disk: %d\n", slot); + return; + } + if(drive < 0 || ((slot == 7) && (drive >= MAX_C7_DISKS)) || + ((slot < 7) && (drive > 1))) { + fatal_printf("Invalid drive for inserting disk: %d\n", drive); + return; + } + + dsk = cfg_get_dsk_from_slot_drive(slot, drive); + + // OG Do not insert same disk at same place + if (( dsk->name_ptr && name) && !strcmp(dsk->name_ptr,name)) return ; + +#if 0 + printf("Inserting disk %s (%s or %d) in slot %d, drive: %d\n", name, + partition_name, part_num, slot, drive); +#endif + + dsk->just_ejected = 0; + dsk->force_size = force_size; + + if(dsk->fd >= 0) { + eject_disk(dsk); + } + + // OG check for valid name first + if (!name) return ; + + /* Before opening, make sure no other mounted disk has this name */ + /* If so, unmount it */ + if(!ejected) { + for(i = 0; i < 2; i++) { + eject_named_disk(&g_iwm.iwm.drive525[i], name,partition_name); + eject_named_disk(&g_iwm.iwm.drive35[i], name, partition_name); + } + for(i = 0; i < MAX_C7_DISKS; i++) { + eject_named_disk(&g_iwm.iwm.smartport[i],name,partition_name); + } + } + + /* + if(dsk->name_ptr != 0) { + // free old name_ptr + free(dsk->name_ptr); + } + */ + + name_len = strlen(name); + strncpy(dsk->name_ptr,name,MAX_DISK_NAME); + /* + name_len = strlen(name); + name_ptr = (char *)malloc(name_len + 1); + strncpy(name_ptr, name, name_len + 1); + dsk->name_ptr = name_ptr; + */ + +// dsk->partition_name = 0; + dsk->partition_name[0] = 0; + + if(partition_name != 0) { + /* + part_len = strlen(partition_name) + 1; + part_ptr = (char *)malloc(part_len); + strncpy(part_ptr, partition_name, part_len); + dsk->partition_name = part_ptr; + */ + strncpy(dsk->partition_name,partition_name,MAX_DISK_NAME); + } + dsk->partition_num = part_num; + + iwm_printf("Opening up disk image named: %s\n", dsk->name_ptr); + + if(ejected) { + /* just get out of here */ + dsk->fd = -1; + return; + } + + dsk->fd = -1; + +#ifdef ACTIVEGSKARATEKA + can_write = 0; +#else + can_write = 1; +#endif + +//OG discard .GZ support +#if 0 + if((name_len > 3) && (strcmp(&name_ptr[name_len - 3], ".gz") == 0)) { + + /* it's gzip'ed, try to gunzip it, then unlink the */ + /* uncompressed file */ + + can_write = 0; + + uncomp_ptr = (char *)malloc(name_len + 1); + strncpy(uncomp_ptr, name_ptr, name_len + 1); + uncomp_ptr[name_len - 3] = 0; + + system_len = 2*name_len + 100; + system_str = (char *)malloc(system_len + 1); + snprintf(system_str, system_len, + "set -o noclobber;gunzip -c %c%s%c > %c%s%c", + 0x22, name_ptr, 0x22, + 0x22, uncomp_ptr, 0x22); + /* 0x22 are " to allow spaces in filenames */ + printf("I am uncompressing %s into %s for mounting\n", + name_ptr, uncomp_ptr); + ret = system(system_str); + if(ret == 0) { + /* successfully ran */ + dsk->fd = open(uncomp_ptr, O_RDONLY | O_BINARY, 0x1b6); + iwm_printf("Opening .gz file %s is fd: %d\n", + uncomp_ptr, dsk->fd); + + /* and, unlink the temporary file */ + (void)unlink(uncomp_ptr); + } + free(system_str); + free(uncomp_ptr); + /* Reduce name_len by 3 so that subsequent compares for .po */ + /* look at the correct chars */ + name_len -= 3; + } +#endif // OG + + if(dsk->fd < 0 && can_write) { + dsk->fd = open(dsk->name_ptr, O_RDWR | O_BINARY, 0x1b6); + } + + if(dsk->fd < 0 /*&& can_write*/) { + printf("Trying to open %s read-only, errno: %d\n", dsk->name_ptr, + errno); + dsk->fd = open(dsk->name_ptr, O_RDONLY | O_BINARY, 0x1b6); + can_write = 0; + } + + iwm_printf("open returned: %d\n", dsk->fd); + + if(dsk->fd < 0) { + fatal_printf("Disk image %s does not exist!\n", dsk->name_ptr); + return; + } + + if(can_write != 0) { + dsk->write_prot = 0; + dsk->write_through_to_unix = 1; + } else { + dsk->write_prot = 1; + dsk->write_through_to_unix = 0; + } + + save_track = dsk->cur_qtr_track; /* save arm position */ + dsk->image_type = DSK_TYPE_PRODOS; + dsk->image_start = 0; + + /* See if it is in 2IMG format */ + ret = read(dsk->fd, (char *)&buf_2img[0], 512); + size = force_size; + if(size <= 0) { + size = cfg_get_fd_size(dsk->fd) ; + } + + /* Try to guess that there is a Mac Binary header of 128 bytes */ + /* See if image size & 0xfff = 0x080 which indicates extra 128 bytes */ + if((size & 0xfff) == 0x080) { + printf("Assuming Mac Binary header on %s\n", dsk->name_ptr); + dsk->image_start += 0x80; + } + image_identified = 0; + if(buf_2img[0] == '2' && buf_2img[1] == 'I' && buf_2img[2] == 'M' && + buf_2img[3] == 'G') { + + // OG Put back Gilles Tschopp hack to deal with corrupted 2IMG files + size -= 64; + size = size & -0x1000; + + /* It's a 2IMG disk */ +#ifdef _DEBUG + printf("Image named %s is in 2IMG format\n", dsk->name_ptr); +#endif + image_identified = 1; + + if(buf_2img[12] == 0) { + printf("2IMG is in DOS 3.3 sector order\n"); + dsk->image_type = DSK_TYPE_DOS33; + } + if(buf_2img[19] & 0x80) { + /* disk is locked */ + printf("2IMG is write protected\n"); + dsk->write_prot = 1; + dsk->write_through_to_unix = 0; + } + if((buf_2img[17] & 1) && (dsk->image_type == DSK_TYPE_DOS33)) { + dsk->vol_num = buf_2img[16]; + printf("Setting DOS 3.3 vol num to %d\n", dsk->vol_num); + } + + // OG do not overwrite when 2mg size = 0 + int size2img = (buf_2img[31] << 24) + (buf_2img[30] << 16) + (buf_2img[29] << 8) + buf_2img[28]; + if (size2img) size = size2img; + else printf(".2MG has corrupted size - fixed.\n"); + + unix_pos = (buf_2img[27] << 24) + (buf_2img[26] << 16) + + (buf_2img[25] << 8) + buf_2img[24]; + // Some 2IMG archives have the size byte reversed + if(size == 0x800c00) { + // Byte reversed 0x0c8000 + size = 0x0c8000; + } + dsk->image_start = unix_pos; + dsk->image_size = size; + } + exp_size = 800*1024; + if(dsk->disk_525) { + exp_size = 140*1024; + } + if(!image_identified) { + /* See if it might be the Mac diskcopy format */ + tmp = (buf_2img[0x40] << 24) + (buf_2img[0x41] << 16) + + (buf_2img[0x42] << 8) + buf_2img[0x43]; + if((size >= (exp_size + 0x54)) && (tmp == exp_size)) { + /* It's diskcopy since data size field matches */ + printf("Image named %s is in Mac diskcopy format\n", + dsk->name_ptr); + image_identified = 1; + dsk->image_start += 0x54; + dsk->image_size = exp_size; + dsk->image_type = DSK_TYPE_PRODOS; /* ProDOS */ + } + } + if(!image_identified) { + /* Assume raw image */ + dsk->image_size = size; + dsk->image_type = DSK_TYPE_PRODOS; + if(dsk->disk_525) { + dsk->image_type = DSK_TYPE_DOS33; + + if(name_len >= 4) { + cmp_o = dsk->name_ptr[name_len-1]; + cmp_p = dsk->name_ptr[name_len-2]; + cmp_dot = dsk->name_ptr[name_len-3]; + if(cmp_dot == '.' && + (cmp_p == 'p' || cmp_p == 'P') && + (cmp_o == 'o' || cmp_o == 'O')) { + dsk->image_type = DSK_TYPE_PRODOS; + } + + cmp_b = dsk->name_ptr[name_len-1]; + cmp_i = dsk->name_ptr[name_len-2]; + cmp_n = dsk->name_ptr[name_len-3]; + cmp_dot = dsk->name_ptr[name_len-4]; + if(cmp_dot == '.' && + (cmp_n == 'n' || cmp_n == 'N') && + (cmp_i == 'i' || cmp_i == 'I') && + (cmp_b == 'b' || cmp_b == 'B')) { + dsk->image_type = DSK_TYPE_NIB; + dsk->write_prot = 0; // OG : Remove WriteProtect on .nib !!!! TO REACTIVATE !! + dsk->write_through_to_unix = 0; + } + } + } + } + + dsk->disk_dirty = 0; + dsk->nib_pos = 0; + dsk->trks = 0; + + if(dsk->smartport) { + g_iwm.g_highest_smartport_unit = MAX(dsk->drive,g_iwm.g_highest_smartport_unit); + +// OG Disabled partition support +#ifndef ACTIVEGS + if( (partition_name != NULL && *partition_name ) || part_num >= 0) { + ret = cfg_partition_find_by_name_or_num(dsk->fd, + partition_name, part_num, dsk); + printf("partition %s (num %d) mounted, wr_prot: %d\n", + partition_name, part_num, dsk->write_prot); + + if(ret < 0) { + close(dsk->fd); + dsk->fd = -1; + return; + } + } +#endif + iwm_printf("adding smartport device[%d], size:%08x, " + "img_sz:%08x\n", dsk->drive, dsk->trks[0].unix_len, + dsk->image_size); + } else if(dsk->disk_525) { + unix_pos = dsk->image_start; + size = dsk->image_size; + disk_set_num_tracks(dsk, 4*35); + len = 0x1000; + nibs = NIB_LEN_525; + if(dsk->image_type == DSK_TYPE_NIB) { + len = dsk->image_size / 35;; + nibs = len; + } + if(size != 35*len) { + fatal_printf("Disk 5.25 error: size is %d, not 140K. " + "Will try to mount anyway\n", size, 35*len); + } + for(i = 0; i < 35; i++) { + iwm_move_to_track(dsk, 4*i); + disk_unix_to_nib(dsk, 4*i, unix_pos, len, nibs); + unix_pos += len; + } + } else { + /* disk_35 */ + unix_pos = dsk->image_start; + size = dsk->image_size; + if(size != 800*1024) { + fatal_printf("Disk 3.5 error: size is %d, not 800K. " + "Will try to mount anyway\n", size); + } + disk_set_num_tracks(dsk, 2*80); + for(i = 0; i < 2*80; i++) { + iwm_move_to_track(dsk, i); + len = g_track_bytes_35[i >> 5]; + nibs = g_track_nibs_35[i >> 5]; + iwm_printf("Trk: %d.%d = unix: %08x, %04x, %04x\n", + i>>1, i & 1, unix_pos, len, nibs); + disk_unix_to_nib(dsk, i, unix_pos, len, nibs); + unix_pos += len; + + iwm_printf(" trk_len:%05x\n", dsk->trks[i].track_len); + } + } + + iwm_move_to_track(dsk, save_track); + + x_notify_disk_insertion(dsk->image_size,dsk->image_start,(dsk->image_type == DSK_TYPE_PRODOS),slot,drive); + +} + +void +eject_named_disk(Disk *dsk, const char *name, const char *partition_name) +{ + + if(dsk->fd < 0) { + return; + } + + /* If name matches, eject the disk! */ + if(!strcmp(dsk->name_ptr, name)) { + /* It matches, eject it */ + if((partition_name != 0) && (dsk->partition_name != 0)) { + /* If both have partitions, and they differ, then */ + /* don't eject. Otherwise, eject */ + if(strcmp(dsk->partition_name, partition_name) != 0) { + /* Don't eject */ + return; + } + } + eject_disk(dsk); + } +} + +void +eject_disk_by_num(int slot, int drive) +{ + Disk *dsk; + + dsk = cfg_get_dsk_from_slot_drive(slot, drive); + + eject_disk(dsk); +} + +void +eject_disk(Disk *dsk) +{ + int motor_on; + int i; + + if(dsk->fd < 0) { + return; + } + + g_config_kegs_update_needed = 1; + + motor_on = g_iwm.iwm.motor_on; + if(g_moremem.g_c031_disk35 & 0x40) { + motor_on = g_iwm.iwm.motor_on35; + } + if(motor_on) { + halt_printf("Try eject dsk:%s, but motor_on!\n", dsk->name_ptr); + } + + iwm_flush_disk_to_unix(dsk); + + printf("Ejecting disk: %s\n", dsk->name_ptr); + + /* Free all memory, close file */ + + /* free the tracks first */ + if(dsk->trks != 0) { + for(i = 0; i < dsk->num_tracks; i++) { + if(dsk->trks[i].nib_area) { + free(dsk->trks[i].nib_area); + } + dsk->trks[i].nib_area = 0; + dsk->trks[i].track_len = 0; + } + free(dsk->trks); + } + dsk->num_tracks = 0; + dsk->trks = 0; + + /* close file, clean up dsk struct */ + close(dsk->fd); + + dsk->image_start = 0; + dsk->image_size = 0; + dsk->nib_pos = 0; + dsk->disk_dirty = 0; + dsk->write_through_to_unix = 0; + dsk->write_prot = 1; + dsk->fd = -1; + dsk->just_ejected = 1; + + /* Leave name_ptr valid */ // OG WHY? + + /* + if (dsk->name_ptr) + { + free(dsk->name_ptr); + dsk->name_ptr = NULL; + } + */ + dsk->name_ptr[0]=0; +} + + +int +cfg_get_fd_size(int fd) +{ + struct stat stat_buf; + int ret; + + ret = fstat(fd, &stat_buf); + if(ret != 0) { + fprintf(stderr,"fstat returned %d on fd %d, errno: %d\n", + ret, fd, errno); + stat_buf.st_size = 0; + } + + return (int)stat_buf.st_size; +} diff --git a/kegs/Src/defc.h b/kegs/Src/defc.h new file mode 100644 index 0000000..1ac1570 --- /dev/null +++ b/kegs/Src/defc.h @@ -0,0 +1,502 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + +#ifdef INCLUDE_RCSID_C +const char rcsid_defc_h[] = "@(#)$KmKId: defc.h,v 1.100 2004-11-09 02:02:07-05 kentd Exp $"; +#endif + +#if !defined(VIDEO_SINGLEHLINE) && !defined(VIDEO_DOUBLEHLINE) +# define VIDEO_DOUBLEHLINE +#endif + +#if !defined(VIDEO_SINGLEVLINE) && !defined(VIDEO_DOUBLEVLINE) +# define VIDEO_DOUBLEVLINE +#endif + +#ifdef VIDEO_DOUBLEHLINE +# define VIDEO_HFACTOR 2 +#else +# define VIDEO_HFACTOR 1 +#endif + + +#ifdef VIDEO_DOUBLEVLINE +# define VIDEO_VFACTOR 2 +#else +# define VIDEO_VFACTOR 1 +#endif + +#include "defcomm.h" + +// OG redirect printf to console +#ifdef ACTIVEGS +#include +extern "C" int outputInfo(const char* format,...); +extern "C" int fOutputInfo(FILE*,const char* format,...); +#define printf outputInfo +#define fprintf fOutputInfo +#ifdef _DEBUG +#define debug_printf(X,...) outputInfo(X,## __VA_ARGS__) +#else +#define debug_printf(X,...) + +#endif +#endif + +#define STRUCT(a) typedef struct _ ## a a; struct _ ## a + +typedef unsigned char byte; +typedef unsigned short word16; +typedef unsigned int word32; +#if _MSC_VER +typedef unsigned __int64 word64; +#else +typedef unsigned long long word64; +#endif + +void U_STACK_TRACE(); + +/* 28MHz crystal, plus every 65th 1MHz cycle is stretched 140ns */ +#define CYCS_28_MHZ (28636360) +#define DCYCS_28_MHZ (1.0*CYCS_28_MHZ) +#define CYCS_3_5_MHZ (CYCS_28_MHZ/8) +#define DCYCS_1_MHZ ((DCYCS_28_MHZ/28.0)*(65.0*7/(65.0*7+1.0))) +#define CYCS_1_MHZ ((int)DCYCS_1_MHZ) + +/* #define DCYCS_IN_16MS_RAW (DCYCS_1_MHZ / 60.0) */ +#define DCYCS_IN_16MS_RAW (262.0 * 65.0) +/* Use precisely 17030 instead of forcing 60 Hz since this is the number of */ +/* 1MHz cycles per screen */ +#define DCYCS_IN_16MS ((double)((int)DCYCS_IN_16MS_RAW)) +#define DRECIP_DCYCS_IN_16MS (1.0 / (DCYCS_IN_16MS)) + +#ifdef KEGS_LITTLE_ENDIAN +# define BIGEND(a) ((((a) >> 24) & 0xff) + \ + (((a) >> 8) & 0xff00) + \ + ((((unsigned)a) << 8) & 0xff0000) + \ + ((((unsigned)a) << 24) & 0xff000000)) +# define GET_BE_WORD16(a) ((((a) >> 8) & 0xff) + (((a) << 8) & 0xff00)) +# define GET_BE_WORD32(a) (BIGEND(a)) +#else +# define BIGEND(a) (a) +# define GET_BE_WORD16(a) (a) +# define GET_BE_WORD32(a) (a) +#endif + +#define MAXNUM_HEX_PER_LINE 32 + +#ifdef __NeXT__ +# include +#endif + +#if !defined( _WIN32) && !defined(UNDER_CE) // OG +# include +# include +# include +#endif + + + +#include +#include +#include + +#include +#include +#include + +#ifndef UNDER_CE // OG CE SPecific +#include +#include +#include +#include +// OG Adding support for open +#ifdef WIN32 +#include +#endif + +#else +extern int errno; +extern int open(const char* name,int,...); +extern int read(int,char*,int); +extern int close(int); +extern int write( int fd, const void *buffer, unsigned int count ); +extern int lseek(int,int,int); +struct stat { int st_size; }; +extern int stat(const char* name, struct stat*); +extern int fstat(int, struct stat*); +#define O_RDWR 1 +#define O_BINARY 2 +#define O_RDONLY 4 +#define O_WRONLY 8 +#define O_CREAT 16 +#define O_TRUNC 32 +#define EAGAIN 11 +#define EINTR 4 + +#endif + + +#ifdef HPUX +# include /* for GET_ITIMER */ +#endif + +#ifdef SOLARIS +# include +#endif + + +#ifndef O_BINARY +/* work around some Windows junk */ +# define O_BINARY 0 +#endif + +STRUCT(Pc_log) { + double dcycs; + word32 dbank_kpc; + word32 instr; + word32 psr_acc; + word32 xreg_yreg; + word32 stack_direct; + word32 pad; +}; + +STRUCT(Data_log) { + double dcycs; + word32 addr; + word32 val; + word32 size; +}; + +#if defined(_MSC_VER) +#define _ALIGNED(x) __declspec(align(x)) +#else +#if defined(__GNUC__) +#define _ALIGNED(x) __attribute__ ((aligned(x))) +#endif +#endif + +#define PRAGMA_PACK_SIZE 4 +#ifdef WIN32 +# define XCODE_PRAGMA_PACK +#else +# define XCODE_PRAGMA_PACK __attribute__((aligned (PRAGMA_PACK_SIZE))) +#endif +#ifdef _WIN32 +#pragma pack(push,PRAGMA_PACK_SIZE) +#endif + +STRUCT(Event) { + double dcycs; + int type; + Event *next; +} XCODE_PRAGMA_PACK; + +STRUCT(Fplus) { + double plus_1; + double plus_2; + double plus_3; + double plus_x_minus_1; +} XCODE_PRAGMA_PACK; + +STRUCT(Engine_reg) { + double fcycles; + word32 kpc; + word32 acc; + + word32 xreg; + word32 yreg; + + word32 stack; + word32 dbank; + + word32 direct; + word32 psr; + Fplus *fplus_ptr; +} XCODE_PRAGMA_PACK; + +STRUCT(Kimage) { + void *dev_handle; + void *dev_handle2; + byte *data_ptr; + int data_size; + int width_req; + int width_act; + int height; + int depth; + int mdepth; + int aux_info; +} XCODE_PRAGMA_PACK; + +typedef byte *Pg_info; +STRUCT(Page_info) { + Pg_info rd_wr; +} XCODE_PRAGMA_PACK; + +STRUCT(Cfg_menu) { + const char *str; + void *ptr; + const char *name_str; + void *defptr; + int cfgtype; +} XCODE_PRAGMA_PACK; + +STRUCT(Cfg_dirent) { + char *name; + int is_dir; + int size; + int image_start; + int part_num; +} XCODE_PRAGMA_PACK; + +STRUCT(Cfg_listhdr) { + Cfg_dirent *direntptr; + int max; + int last; + int invalid; + + int curent; + int topent; + + int num_to_show; +} XCODE_PRAGMA_PACK; + +STRUCT(Emustate_intlist) { + const char *str; + int *iptr; +} XCODE_PRAGMA_PACK; + +STRUCT(Emustate_dbllist) { + const char *str; + double *dptr; +} XCODE_PRAGMA_PACK; + +STRUCT(Emustate_word32list) { + const char *str; + word32 *wptr; +} XCODE_PRAGMA_PACK; + +#ifdef __LP64__ +# define PTR2WORD(a) ((unsigned long)(a)) +#else +# define PTR2WORD(a) ((unsigned int)(a)) +#endif + + + +#define C041_EN_25SEC_INTS 0x10 +#define C041_EN_VBL_INTS 0x08 +#define C041_EN_SWITCH_INTS 0x04 +#define C041_EN_MOVE_INTS 0x02 +#define C041_EN_MOUSE 0x01 + +/* WARNING: SCC1 and SCC0 interrupts must be in this order for scc.c */ +/* This order matches the SCC hardware */ +#define IRQ_PENDING_SCC1_ZEROCNT 0x00001 +#define IRQ_PENDING_SCC1_TX 0x00002 +#define IRQ_PENDING_SCC1_RX 0x00004 +#define IRQ_PENDING_SCC0_ZEROCNT 0x00008 +#define IRQ_PENDING_SCC0_TX 0x00010 +#define IRQ_PENDING_SCC0_RX 0x00020 +#define IRQ_PENDING_C023_SCAN 0x00100 +#define IRQ_PENDING_C023_1SEC 0x00200 +#define IRQ_PENDING_C046_25SEC 0x00400 +#define IRQ_PENDING_C046_VBL 0x00800 +#define IRQ_PENDING_ADB_KBD_SRQ 0x01000 +#define IRQ_PENDING_ADB_DATA 0x02000 +#define IRQ_PENDING_ADB_MOUSE 0x04000 +#define IRQ_PENDING_DOC 0x08000 + + +#define EXTRU(val, pos, len) \ + ( ( (len) >= (pos) + 1) ? ((val) >> (31-(pos))) : \ + (((val) >> (31-(pos)) ) & ( (1<<(len) ) - 1) ) ) + +#define DEP1(val, pos, old_val) \ + (((old_val) & ~(1 << (31 - (pos))) ) | \ + ( ((val) & 1) << (31 - (pos))) ) + +#define set_halt(val) \ + if(val) { set_halt_act(val); } + +#define clear_halt() \ + clr_halt_act() + +#define GET_PAGE_INFO_RD(page) \ + (r_sim65816.page_info_rd_wr[page].rd_wr) + +#define GET_PAGE_INFO_WR(page) \ + (r_sim65816.page_info_rd_wr[0x10000 + PAGE_INFO_PAD_SIZE + (page)].rd_wr) + +#define SET_PAGE_INFO_RD(page,val) \ + r_sim65816.page_info_rd_wr[page].rd_wr = (Pg_info)val; + +#define SET_PAGE_INFO_WR(page,val) \ + r_sim65816.page_info_rd_wr[0x10000 + PAGE_INFO_PAD_SIZE + (page)].rd_wr = (Pg_info)val; + +#define VERBOSE_DISK 0x001 +#define VERBOSE_IRQ 0x002 +#define VERBOSE_CLK 0x004 +#define VERBOSE_SHADOW 0x008 +#define VERBOSE_IWM 0x010 +#define VERBOSE_DOC 0x020 +#define VERBOSE_ADB 0x040 +#define VERBOSE_SCC 0x080 +#define VERBOSE_TEST 0x100 +#define VERBOSE_VIDEO 0x200 +#define VERBOSE_MAC 0x400 + +#if !defined(_DEBUG) || defined(NO_VERB) +# define DO_VERBOSE 0 +#else +# define DO_VERBOSE 1 +#endif + +#define disk_printf if(DO_VERBOSE && (Verbose & VERBOSE_DISK)) printf +#define irq_printf if(DO_VERBOSE && (Verbose & VERBOSE_IRQ)) printf +#define clk_printf if(DO_VERBOSE && (Verbose & VERBOSE_CLK)) printf +#define shadow_printf if(DO_VERBOSE && (Verbose & VERBOSE_SHADOW)) printf +#define iwm_printf if(DO_VERBOSE && (Verbose & VERBOSE_IWM)) printf +#define doc_printf if(DO_VERBOSE && (Verbose & VERBOSE_DOC)) printf +#define adb_printf if(DO_VERBOSE && (Verbose & VERBOSE_ADB)) printf +#define scc_printf if(DO_VERBOSE && (Verbose & VERBOSE_SCC)) printf +#define test_printf if(DO_VERBOSE && (Verbose & VERBOSE_TEST)) printf +#define vid_printf if(DO_VERBOSE && (Verbose & VERBOSE_VIDEO)) printf +#define mac_printf if(DO_VERBOSE && (Verbose & VERBOSE_MAC)) printf + + +#define HALT_ON_SCAN_INT 0x001 +#define HALT_ON_IRQ 0x002 +#define HALT_ON_SHADOW_REG 0x004 +#define HALT_ON_C70D_WRITES 0x008 + +#define HALT_ON(a, msg) \ + if(g_sim65816.Halt_on & a) { \ + halt_printf(msg); \ + } + + +#ifndef MIN +# define MIN(a,b) (((a) < (b)) ? (a) : (b)) +#endif +#ifndef MAX +# define MAX(a,b) (((a) < (b)) ? (b) : (a)) +#endif + +#define GET_ITIMER(dest) dest = get_itimer(); + +#include "protos.h" + +// OG Added interfaces to communicate with the emulator +void x_clk_setup_bram_version(); +void x_notify_disk_insertion(int _size, int _start, int _isprodos,int _slot, int _drive); +void x_notify_motor_status(int _motorOn,int _slot,int _drive, int _curtrack); +void x_notify_disk_ejection(int _slot,int _drive); +void x_refresh_video(); + +void x_exit(int _err); +void x_alert(const char* format,...); +void x_fatal_exit(const char* _str); + +enum refreshpanelenum +{ + PANEL_DISK = 1, + PANEL_RUNTIME = 2, + PANEL_PARAMS = 4, + PANEL_BOOT = 8, + PANEL_LOADED = 16, + PANEL_SPEED = 32, + PANEL_ALL = -1 +}; + +extern void x_refresh_panel(int _panel); + + +#include "compression.h" + +#ifdef DRIVER_ANDROID +#define ALIGNMENT_ERROR(_MODULE,_SIZE,_THISSIZE) \ +{ \ + char str[512]; \ + sprintf(str,"Alignment error in %s : got %d, this : %d",_MODULE,_SIZE,_THISSIZE); \ + x_fatal_exit(str); \ +} +#else +#define ALIGNMENT_ERROR(_MODULE,_SIZE,_THISSIZE) \ +{ \ + char str[512]; \ + sprintf(str,"Alignment error in %s : got %d, this : %ld",_MODULE,_SIZE,_THISSIZE); \ + x_fatal_exit(str); \ +} +#endif +class serialize +{ +public: + word32 size; + void* data; + int fastalloc; + int rlesize; + void* rledata; + int rletype; + serialize() + { + memset(this,0,sizeof(*this)); + + } + + void release(); + int compress(); + int expand(); + int releasecompressed(); + int releaseuncompressed(); + void save(const char* name,void*); + int load(const char*_name,void* _fileptr); +} XCODE_PRAGMA_PACK; + +class serialized +{ +public: + int _size; + serialized* _this; + void in(serialize* _s); + int out(serialize* _s, int _fastalloc); + +} XCODE_PRAGMA_PACK; + +#ifdef _WIN32 +#pragma pack(pop) +#endif + +#define INIT_SERIALIZED() \ + memset(this,0,sizeof(*this)); \ + _size = sizeof(*this); \ + _this = this; + +#define DEFAULT_SERIALIZE_IN_OUT \ + void in(serialize* _s) \ + { \ + byte* ptr = (byte*)_s->data; \ + int ssize = *(int*)ptr; \ + if (ssize!= sizeof(*this)) \ + ALIGNMENT_ERROR("n/a",ssize,sizeof(*this)); \ + ptr += sizeof(ssize); \ + memcpy(this,ptr,sizeof(*this)); \ + } \ + int out(serialize* _s, int _fastalloc) \ + { \ + int ssize = sizeof(*this); \ + int size = ssize + sizeof(ssize); \ + _s->size = size; \ + _s->fastalloc = _fastalloc; \ + _s->data = (void*)x_malloc(size,_fastalloc); \ + byte* ptr = (byte*) _s->data; \ + memcpy(ptr,&ssize,sizeof(ssize)); \ + ptr+=sizeof(ssize); \ + memcpy(ptr,this,sizeof(*this)); \ + return size; \ + } diff --git a/kegs/Src/defcomm.h b/kegs/Src/defcomm.h new file mode 100644 index 0000000..8e247c9 --- /dev/null +++ b/kegs/Src/defcomm.h @@ -0,0 +1,189 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#ifdef INCLUDE_RCSID_C +const char rcsdif_defcomm_h[] = "@(#)$KmKId: defcomm.h,v 1.94 2004-10-13 21:53:44-04 kentd Exp $"; +#endif + +#if 0 +# define CHECK_BREAKPOINTS +#endif + +#define SHIFT_PER_CHANGE 3 +#define CHANGE_SHIFT (5 + SHIFT_PER_CHANGE) + +#define SLOW_MEM_CH_SIZE (0x10000 >> CHANGE_SHIFT) + +#define MAXNUM_HEX_PER_LINE 32 + +/* Different Joystick defines */ +#define JOYSTICK_MOUSE 1 +#define JOYSTICK_LINUX 2 +#define JOYSTICK_KEYPAD 3 +#define JOYSTICK_WIN32_1 4 +#define JOYSTICK_WIN32_2 5 + + +#define HALT_EVENT 0x10 +//#define HALT_WANTTOQUIT 0x20 // OG : added WANTTOQUIT event +#define HALT_WANTTOBRK 0x40 // OG : added WANTTOBRK event + +#define MAX_BREAK_POINTS 128 + +#define MAX_BP_INDEX 0x100 +#define MAX_BP_PER_INDEX 3 /* 4 word32s total = 16 bytes */ +#define SIZE_BREAKPT_ENTRY_BITS 4 /* 16 bytes = 4 bits */ + +/* Warning--next defines used by asm! */ +#define PAGE_INFO_PAD_SIZE 0x800 +#define PAGE_INFO_WR_OFFSET 0x10000+PAGE_INFO_PAD_SIZE + +#define BANK_IO_BIT 31 +#define BANK_SHADOW_BIT 30 +#define BANK_SHADOW2_BIT 29 +#define BANK_IO2_BIT 28 +#define BANK_BREAK_BIT 27 +#define BANK_BREAK (1 << (31 - BANK_BREAK_BIT)) +#define BANK_IO2_TMP (1 << (31 - BANK_IO2_BIT)) +#define BANK_IO_TMP (1 << (31 - BANK_IO_BIT)) +#define BANK_SHADOW (1 << (31 - BANK_SHADOW_BIT)) +#define BANK_SHADOW2 (1 << (31 - BANK_SHADOW2_BIT)) +#define SET_BANK_IO \ + (&g_dummy_memory1_ptr[BANK_IO_TMP | BANK_IO2_TMP]) + +#define BANK_BAD_MEM (&g_dummy_memory1_ptr[0xff]) + + +#define ENGINE_FCYCLES 0x00 +#define ENGINE_REG_KPC 0x08 +#define ENGINE_REG_ACC 0x0c +#define ENGINE_REG_XREG 0x10 +#define ENGINE_REG_YREG 0x14 +#define ENGINE_REG_STACK 0x18 +#define ENGINE_REG_DBANK 0x1c +#define ENGINE_REG_DIRECT 0x20 +#define ENGINE_REG_PSR 0x24 +#define ENGINE_FPLUS_PTR 0x28 + +#define LOG_PC_DCYCS 0x00 +#define LOG_PC_DBANK_KPC 0x08 +#define LOG_PC_INSTR 0x0c +#define LOG_PC_PSR_ACC 0x10 +#define LOG_PC_XREG_YREG 0x14 +#define LOG_PC_STACK_DIRECT 0x18 +#define LOG_PC_PAD 0x1c + +#define LOG_PC_SIZE 0x20 + + +#define FPLUS_PLUS_1 0x00 +#define FPLUS_PLUS_2 0x08 +#define FPLUS_PLUS_3 0x10 +#define FPLUS_PLUS_X_M1 0x18 + +#define RET_BREAK 0x1 +#define RET_COP 0x2 +#define RET_WDM 0x3 +#define RET_MVP 0x4 +#define RET_MVN 0x5 +#define RET_WAI 0x6 +#define RET_STP 0x7 +#define RET_ADD_DEC_8 0x8 +#define RET_ADD_DEC_16 0x9 +#define RET_C700 0xa +#define RET_C70A 0xb +#define RET_C70D 0xc +#define RET_IRQ 0xd + + +#define MODE_BORDER 0 +#define MODE_TEXT 1 +#define MODE_GR 2 +#define MODE_HGR 3 +#define MODE_SUPER_HIRES 4 + +#define BIT_ALL_STAT_TEXT 0 +#define BIT_ALL_STAT_VID80 1 +#define BIT_ALL_STAT_ST80 2 +#define BIT_ALL_STAT_COLOR_C021 3 +#define BIT_ALL_STAT_MIX_T_GR 4 +#define BIT_ALL_STAT_DIS_COLOR_DHIRES 5 /* special val, c029 */ +#define BIT_ALL_STAT_PAGE2 6 /* special val, statereg */ +#define BIT_ALL_STAT_SUPER_HIRES 7 /* special, c029 */ +#define BIT_ALL_STAT_HIRES 8 +#define BIT_ALL_STAT_ANNUNC3 9 +#define BIT_ALL_STAT_BG_COLOR 10 /* 4 bits */ +#define BIT_ALL_STAT_TEXT_COLOR 14 /* 4 bits */ + /* Text must be just above */ + /* bg to match c022 reg */ +#define BIT_ALL_STAT_ALTCHARSET 18 +#define BIT_ALL_STAT_FLASH_STATE 19 +#define BIT_ALL_STAT_A2VID_PALETTE 20 /* 4 bits */ + +#define ALL_STAT_SUPER_HIRES (1 << (BIT_ALL_STAT_SUPER_HIRES)) +#define ALL_STAT_TEXT (1 << (BIT_ALL_STAT_TEXT)) +#define ALL_STAT_VID80 (1 << (BIT_ALL_STAT_VID80)) +#define ALL_STAT_PAGE2 (1 << (BIT_ALL_STAT_PAGE2)) +#define ALL_STAT_ST80 (1 << (BIT_ALL_STAT_ST80)) +#define ALL_STAT_COLOR_C021 (1 << (BIT_ALL_STAT_COLOR_C021)) +#define ALL_STAT_DIS_COLOR_DHIRES (1 << (BIT_ALL_STAT_DIS_COLOR_DHIRES)) +#define ALL_STAT_MIX_T_GR (1 << (BIT_ALL_STAT_MIX_T_GR)) +#define ALL_STAT_HIRES (1 << (BIT_ALL_STAT_HIRES)) +#define ALL_STAT_ANNUNC3 (1 << (BIT_ALL_STAT_ANNUNC3)) +#define ALL_STAT_TEXT_COLOR (0xf << (BIT_ALL_STAT_TEXT_COLOR)) +#define ALL_STAT_BG_COLOR (0xf << (BIT_ALL_STAT_BG_COLOR)) +#define ALL_STAT_ALTCHARSET (1 << (BIT_ALL_STAT_ALTCHARSET)) +#define ALL_STAT_FLASH_STATE (1 << (BIT_ALL_STAT_FLASH_STATE)) +#define ALL_STAT_A2VID_PALETTE (0xf << (BIT_ALL_STAT_A2VID_PALETTE)) + +#ifdef VIDEO_DOUBLEHLINE + #define BORDER_WIDTH 32 +#else + #define BORDER_WIDTH 16 +#endif + + +/* BASE_MARGIN_BOTTOM+MARGIN_TOP must equal 62. There are 262 scan lines */ +/* at 60Hz (15.7KHz line rate) and so we just make 62 border lines */ + +#ifdef VIDEO_DOUBLEVLINE +# define BASE_MARGIN_TOP 32 +# define BASE_MARGIN_BOTTOM 30 +#else +# define BASE_MARGIN_TOP 16 +# define BASE_MARGIN_BOTTOM 15 //was 15 +#endif + +#define BASE_MARGIN_LEFT BORDER_WIDTH +#define BASE_MARGIN_RIGHT BORDER_WIDTH + +#ifdef VIDEO_DOUBLEHLINE +# define EFF_BORDER_WIDTH (BORDER_WIDTH + (640-560)/2) +# define A2_WINDOW_WIDTH 640 +#else +# define EFF_BORDER_WIDTH (BORDER_WIDTH + (320-280)/2) +# define A2_WINDOW_WIDTH 320 +#endif + +#ifdef VIDEO_DOUBLEVLINE +# define A2_WINDOW_HEIGHT 400 +#else +# define A2_WINDOW_HEIGHT (400/2) +#endif + +#define X_A2_WINDOW_WIDTH (A2_WINDOW_WIDTH + BASE_MARGIN_LEFT + \ + BASE_MARGIN_RIGHT) +#define X_A2_WINDOW_HEIGHT (A2_WINDOW_HEIGHT + BASE_MARGIN_TOP + \ + BASE_MARGIN_BOTTOM) + +#define MAX_STATUS_LINES 7 +#define STATUS_LINE_LENGTH 88 + +#define BASE_WINDOW_WIDTH (X_A2_WINDOW_WIDTH) + + +#define A2_BORDER_COLOR_NUM 0xfe + diff --git a/kegs/Src/defs.h b/kegs/Src/defs.h new file mode 100644 index 0000000..f35c42c --- /dev/null +++ b/kegs/Src/defs.h @@ -0,0 +1,59 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#ifdef INCLUDE_RCSID_S + .data + .export rcsdif_defs_h,data +rcsdif_defs_h + .stringz "@(#)$KmKId: defs.h,v 1.22 2002-11-19 03:10:38-05 kadickey Exp $" + .code +#endif + +#include "defcomm.h" + +link .reg %r2 +acc .reg %r3 +xreg .reg %r4 +yreg .reg %r5 +stack .reg %r6 +dbank .reg %r7 +direct .reg %r8 +neg .reg %r9 +zero .reg %r10 +psr .reg %r11 +kpc .reg %r12 +const_fd .reg %r13 +instr .reg %r14 +#if 0 +cycles .reg %r13 +kbank .reg %r14 +#endif + +page_info_ptr .reg %r15 +inst_tab_ptr .reg %r16 +fcycles_stop_ptr .reg %r17 +addr_latch .reg %r18 + +scratch1 .reg %r19 +scratch2 .reg %r20 +scratch3 .reg %r21 +scratch4 .reg %r22 +;instr .reg %r23 ; arg3 + +fcycles .reg %fr12 +fr_plus_1 .reg %fr13 +fr_plus_2 .reg %fr14 +fr_plus_3 .reg %fr15 +fr_plus_x_m1 .reg %fr16 +fcycles_stop .reg %fr17 +fcycles_last_dcycs .reg %fr18 + +ftmp1 .reg %fr4 +ftmp2 .reg %fr5 +fscr1 .reg %fr6 + +#define LDC(val,reg) ldil L%val,reg ! ldo R%val(reg),reg + diff --git a/kegs/Src/defs_instr.h b/kegs/Src/defs_instr.h new file mode 100644 index 0000000..5802553 --- /dev/null +++ b/kegs/Src/defs_instr.h @@ -0,0 +1,1621 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#ifdef ASM +# ifdef INCLUDE_RCSID_S + .data + .export rcsdif_defs_instr_h,data +rcsdif_defs_instr_h + .stringz "@(#)$KmKId: defs_instr.h,v 1.57 2004-01-10 15:49:14-05 kentd Exp $" + .code +# endif + +# ifdef ACC8 + .export defs_instr_start_8,data +defs_instr_start_8 .word 0 +# else + .export defs_instr_start_16,data +defs_instr_start_16 .word 0 +# endif /* ACC8*/ +#endif /* ASM */ + + +#undef GET_DLOC_X_IND_RD + +#ifdef ASM_INTEL +# ifdef ACC8 +# define GET_DLOC_X_IND_RD() \ + __asm mov esi,arg0 ; + ldb 1(scratch1),arg0 ! \ + GET_DLOC_X_IND_WR() ! \ + bl get_mem_long_8,link ! \ + nop +# else +# define GET_DLOC_X_IND_RD() \ + ldb 1(scratch1),arg0 ! \ + GET_DLOC_X_IND_WR() ! \ + bl get_mem_long_16,link ! \ + nop +# endif /* ACC8 */ +#else /* C*/ +# ifdef ACC8 +# define GET_DLOC_X_IND_RD() \ + GET_1BYTE_ARG; \ + GET_DLOC_X_IND_WR(); \ + GET_MEMORY8(arg, arg); +# else +# define GET_DLOC_X_IND_RD() \ + GET_1BYTE_ARG; \ + GET_DLOC_X_IND_WR(); \ + GET_MEMORY16(arg, arg, 0); +# endif +#endif + +#undef GET_DISP8_S_RD + +#ifdef ASM +# ifdef ACC8 +# define GET_DISP8_S_RD() \ + ldb 1(scratch1),arg0 ! \ + GET_DISP8_S_WR() ! \ + bl get_mem_b0_8,link ! \ + nop +# else +# define GET_DISP8_S_RD() \ + ldb 1(scratch1),arg0 ! \ + GET_DISP8_S_WR() ! \ + bl get_mem_b0_16,link ! \ + nop +# endif +#else /* C */ +# ifdef ACC8 +# define GET_DISP8_S_RD() \ + GET_1BYTE_ARG; \ + GET_DISP8_S_WR(); \ + GET_MEMORY8(arg, arg); +# else +# define GET_DISP8_S_RD() \ + GET_1BYTE_ARG; \ + GET_DISP8_S_WR(); \ + GET_MEMORY16(arg, arg, 0); +# endif +#endif + + +#ifdef ASM +# define MUST_FIX \ + break +#endif + +#undef GET_DLOC_RD + +#ifdef ASM +# ifdef ACC8 +# define GET_DLOC_RD() \ + ldb 1(scratch1),arg0 ! \ + extru,= direct,31,8,0 ! \ + CYCLES_PLUS_1 ! \ + INC_KPC_2 ! \ + add direct,arg0,addr_latch ! \ + extru addr_latch,23,16,arg3 ! \ + CYCLES_PLUS_1 ! \ + ldwx,s arg3(page_info_ptr),scratch2 ! \ + extru addr_latch,31,8,scratch4 ! \ + extru addr_latch,31,16,addr_latch ! \ + ldbx scratch4(scratch2),ret0 ! \ + extru,= scratch2,BANK_IO_BIT,1,0 ! \ + bl get_memory_iocheck_stub_asm,link ! \ + copy addr_latch,arg0 +# else +# define GET_DLOC_RD() \ + ldb 1(scratch1),arg0 ! \ + extru,= direct,31,8,0 ! \ + CYCLES_PLUS_1 ! \ + INC_KPC_2 ! \ + add direct,arg0,arg0 ! \ + bl get_mem_b0_16,link ! \ + extru arg0,31,16,arg0 +# endif +#else /* C */ +# ifdef ACC8 +# define GET_DLOC_RD() \ + GET_1BYTE_ARG; \ + if(direct & 0xff) { \ + CYCLES_PLUS_1; \ + } \ + INC_KPC_2; \ + GET_MEMORY8((direct + arg) & 0xffff, arg); +# else +# define GET_DLOC_RD() \ + GET_1BYTE_ARG; \ + if(direct & 0xff) { \ + CYCLES_PLUS_1; \ + } \ + INC_KPC_2; \ + GET_MEMORY16((direct + arg) & 0xffff, arg, 1); +# endif +#endif + + +#undef GET_DLOC_L_IND_RD +#ifdef ASM +# ifdef ACC8 +# define GET_DLOC_L_IND_RD() \ + ldb 1(scratch1),arg0 ! \ + GET_DLOC_L_IND_WR() ! \ + bl get_mem_long_8,link ! \ + nop +# else +# define GET_DLOC_L_IND_RD() \ + ldb 1(scratch1),arg0 ! \ + GET_DLOC_L_IND_WR() ! \ + bl get_mem_long_16,link ! \ + nop +# endif +#else /* C */ +# ifdef ACC8 +# define GET_DLOC_L_IND_RD() \ + GET_1BYTE_ARG; \ + GET_DLOC_L_IND_WR(); \ + GET_MEMORY8(arg, arg); +# else +# define GET_DLOC_L_IND_RD() \ + GET_1BYTE_ARG; \ + GET_DLOC_L_IND_WR(); \ + GET_MEMORY16(arg, arg, 0); +# endif +#endif + + +#undef GET_IMM_MEM + +#ifdef ASM +# ifdef ACC8 +# define GET_IMM_MEM() \ + ldb 1(scratch1),ret0 ! \ + INC_KPC_2 +# else +# define GET_IMM_MEM() \ + ldb 2(scratch1),scratch2 ! \ + INC_KPC_3 ! \ + ldb 1(scratch1),ret0 ! \ + CYCLES_PLUS_1 ! \ + dep scratch2,23,8,ret0 +# endif +#else +# ifdef ACC8 +# define GET_IMM_MEM() \ + GET_1BYTE_ARG; \ + INC_KPC_2; +# else +# define GET_IMM_MEM() \ + GET_2BYTE_ARG; \ + CYCLES_PLUS_1; \ + INC_KPC_3; +# endif +#endif + + +#undef GET_ABS_RD + +#ifdef ASM +# ifdef ACC8 +# define GET_ABS_RD() \ + ldb 2(scratch1),arg3 ! \ + INC_KPC_3 ! \ + ldb 1(scratch1),addr_latch ! \ + CYCLES_PLUS_2 ! \ + dep dbank,23,24,arg3 ! \ + ldwx,s arg3(page_info_ptr),scratch2 ! \ + copy addr_latch,scratch4 ! \ + dep arg3,23,24,addr_latch ! \ + ldbx scratch4(scratch2),ret0 ! \ + extru,= scratch2,BANK_IO_BIT,1,0 ! \ + bl get_memory_iocheck_stub_asm,link ! \ + copy addr_latch,arg0 +# else +# define GET_ABS_RD() \ + ldb 1(scratch1),arg0 ! \ + CYCLES_PLUS_1 ! \ + ldb 2(scratch1),scratch2 ! \ + INC_KPC_3 ! \ + dep dbank,15,16,arg0 ! \ + bl get_mem_long_16,link ! \ + dep scratch2,23,8,arg0 +# endif +#else +# ifdef ACC8 +# define GET_ABS_RD() \ + GET_2BYTE_ARG; \ + CYCLES_PLUS_1; \ + GET_MEMORY8((dbank << 16) + arg, arg); \ + INC_KPC_3; +# else +# define GET_ABS_RD() \ + GET_2BYTE_ARG; \ + CYCLES_PLUS_1; \ + GET_MEMORY16((dbank << 16) + arg, arg, 0); \ + INC_KPC_3; +# endif +#endif + + +#undef GET_LONG_RD + + +#ifdef ASM +# ifdef ACC8 +# define GET_LONG_RD() \ + ldb 1(scratch1),arg0 ! \ + INC_KPC_4 ! \ + ldb 2(scratch1),scratch2 ! \ + CYCLES_PLUS_2 ! \ + ldb 3(scratch1),scratch1 ! \ + dep scratch2,23,8,arg0 ! \ + bl get_mem_long_8,link ! \ + dep scratch1,15,8,arg0 +# else +# define GET_LONG_RD() \ + ldb 1(scratch1),arg0 ! \ + INC_KPC_4 ! \ + ldb 2(scratch1),scratch2 ! \ + CYCLES_PLUS_2 ! \ + ldb 3(scratch1),scratch1 ! \ + dep scratch2,23,8,arg0 ! \ + bl get_mem_long_16,link ! \ + dep scratch1,15,8,arg0 +# endif +#else /* C */ +# ifdef ACC8 +# define GET_LONG_RD() \ + GET_3BYTE_ARG; \ + CYCLES_PLUS_2; \ + GET_MEMORY8(arg, arg); \ + INC_KPC_4; +# else +# define GET_LONG_RD() \ + GET_3BYTE_ARG; \ + CYCLES_PLUS_2; \ + GET_MEMORY16(arg, arg, 0); \ + INC_KPC_4; +# endif +#endif + + + +#undef GET_DLOC_IND_Y_RD + +#undef GET_DLOC_IND_Y_WR_SPECIAL2 + +#define GET_DLOC_IND_Y_WR_SPECIAL2() \ + add direct,arg0,arg0 ! \ + bl get_mem_b0_direct_page_16,link ! \ + extru arg0,31,16,arg0 ! \ + dep dbank,15,8,ret0 ! \ + extru,= direct,31,8,0 ! \ + CYCLES_PLUS_1 ! \ + add yreg,ret0,arg0 /* don't change this instr */ + /* or add any after */ + /* to preserve ret0 & arg0 */ + + +#ifdef ASM +# ifdef ACC8 +# define GET_DLOC_IND_Y_RD() \ + ldb 1(scratch1),arg0 ! \ + INC_KPC_2 ! \ + GET_DLOC_IND_Y_WR_SPECIAL2() ! \ + xor arg0,ret0,scratch1 ! \ + extru,= psr,27,1,0 ! \ + extru,= scratch1,23,8,0 ! \ + CYCLES_PLUS_1 ! \ + bl get_mem_long_8,link ! \ + nop +# else +# define GET_DLOC_IND_Y_RD() \ + ldb 1(scratch1),arg0 ! \ + INC_KPC_2 ! \ + GET_DLOC_IND_Y_WR_SPECIAL2() ! \ + xor arg0,ret0,scratch1 ! \ + extru,= psr,27,1,0 ! \ + extru,= scratch1,23,8,0 ! \ + CYCLES_PLUS_1 ! \ + bl get_mem_long_16,link ! \ + nop +# endif +#else /* C */ +# ifdef ACC8 +# define GET_DLOC_IND_Y_RD() \ + GET_1BYTE_ARG; \ + GET_MEMORY_DIRECT_PAGE16((direct + arg) & 0xffff, tmp1); \ + tmp1 += (dbank << 16); \ + if(direct & 0xff) { \ + CYCLES_PLUS_1; \ + } \ + tmp2 = tmp1 + yreg; \ + if(((psr & 0x10) == 0) || ((tmp1 ^ tmp2) & 0xff00)) { \ + CYCLES_PLUS_1; \ + } \ + INC_KPC_2; \ + GET_MEMORY8(tmp2, arg); +# else +# define GET_DLOC_IND_Y_RD() \ + GET_1BYTE_ARG; \ + GET_MEMORY_DIRECT_PAGE16((direct + arg) & 0xffff, tmp1); \ + tmp1 += (dbank << 16); \ + if(direct & 0xff) { \ + CYCLES_PLUS_1; \ + } \ + tmp2 = tmp1 + yreg; \ + if(((psr & 0x10) == 0) || ((tmp1 ^ tmp2) & 0xff00)) { \ + CYCLES_PLUS_1; \ + } \ + INC_KPC_2; \ + GET_MEMORY16(tmp2, arg, 0); +# endif +#endif + + +#undef GET_DLOC_IND_RD + +#ifdef ASM +# ifdef ACC8 +# define GET_DLOC_IND_RD() \ + ldb 1(scratch1),arg0 ! \ + extru,= direct,31,8,0 ! \ + CYCLES_PLUS_1 ! \ + INC_KPC_2 ! \ + add direct,arg0,arg0 ! \ + bl get_mem_b0_direct_page_16,link ! \ + extru arg0,31,16,arg0 ! \ + copy ret0,arg0 ! \ + bl get_mem_long_8,link ! \ + dep dbank,15,16,arg0 +# else +# define GET_DLOC_IND_RD() \ + ldb 1(scratch1),arg0 ! \ + extru,= direct,31,8,0 ! \ + CYCLES_PLUS_1 ! \ + INC_KPC_2 ! \ + add direct,arg0,arg0 ! \ + bl get_mem_b0_direct_page_16,link ! \ + extru arg0,31,16,arg0 ! \ + copy ret0,arg0 ! \ + bl get_mem_long_16,link ! \ + dep dbank,15,16,arg0 +# endif +#else +# ifdef ACC8 +# define GET_DLOC_IND_RD() \ + GET_1BYTE_ARG; \ + INC_KPC_2; \ + if(direct & 0xff) { \ + CYCLES_PLUS_1; \ + } \ + GET_MEMORY_DIRECT_PAGE16((direct + arg) & 0xffff, arg); \ + GET_MEMORY8((dbank << 16) + arg, arg); +# else +# define GET_DLOC_IND_RD() \ + GET_1BYTE_ARG; \ + INC_KPC_2; \ + if(direct & 0xff) { \ + CYCLES_PLUS_1; \ + } \ + GET_MEMORY_DIRECT_PAGE16((direct + arg) & 0xffff, arg); \ + GET_MEMORY16((dbank << 16) + arg, arg, 0); +# endif +#endif + + +#undef GET_DLOC_X_RD + +#ifdef ASM +# ifdef ACC8 +# define GET_DLOC_X_RD() \ + ldb 1(scratch1),arg0 ! \ + GET_DLOC_INDEX_WR_A(xreg) ! \ + bl get_mem_b0_8,link ! \ + GET_DLOC_INDEX_WR_B(xreg) +# else +# define GET_DLOC_X_RD() \ + ldb 1(scratch1),arg0 ! \ + GET_DLOC_INDEX_WR_A(xreg) ! \ + bl get_mem_b0_16,link ! \ + GET_DLOC_INDEX_WR_B(xreg) +# endif +#else +# ifdef ACC8 +# define GET_DLOC_X_RD() \ + GET_1BYTE_ARG; \ + CYCLES_PLUS_1; \ + if(direct & 0xff) { \ + CYCLES_PLUS_1; \ + } \ + INC_KPC_2; \ + arg = (arg + xreg + direct) & 0xffff; \ + if(psr & 0x100) { \ + if((direct & 0xff) == 0) { \ + arg = (direct & 0xff00) | (arg & 0xff); \ + } \ + } \ + GET_MEMORY8(arg & 0xffff, arg); +# else +# define GET_DLOC_X_RD() \ + GET_1BYTE_ARG; \ + CYCLES_PLUS_1; \ + if(direct & 0xff) { \ + CYCLES_PLUS_1; \ + } \ + INC_KPC_2; \ + arg = (arg + xreg + direct) & 0xffff; \ + if(psr & 0x100) { \ + if((direct & 0xff) == 0) { \ + arg = (direct & 0xff00) | (arg & 0xff); \ + } \ + } \ + GET_MEMORY16(arg, arg, 1); +# endif +#endif + + +#undef GET_DISP8_S_IND_Y_RD + +#ifdef ASM +# ifdef ACC8 +# define GET_DISP8_S_IND_Y_RD() \ + ldb 1(scratch1),arg0 ! \ + GET_DISP8_S_IND_Y_WR() ! \ + bl get_mem_long_8,link ! \ + nop +# else +# define GET_DISP8_S_IND_Y_RD() \ + ldb 1(scratch1),arg0 ! \ + GET_DISP8_S_IND_Y_WR() ! \ + bl get_mem_long_16,link ! \ + nop +# endif +#else +# ifdef ACC8 +# define GET_DISP8_S_IND_Y_RD() \ + GET_1BYTE_ARG; \ + GET_DISP8_S_IND_Y_WR(); \ + GET_MEMORY8(arg, arg); +# else +# define GET_DISP8_S_IND_Y_RD() \ + GET_1BYTE_ARG; \ + GET_DISP8_S_IND_Y_WR(); \ + GET_MEMORY16(arg, arg, 0); +# endif +#endif + + +#undef GET_DLOC_L_IND_Y_RD + +#ifdef ASM +# ifdef ACC8 +# define GET_DLOC_L_IND_Y_RD() \ + ldb 1(scratch1),arg0 ! \ + GET_DLOC_L_IND_Y_WR() ! \ + bl get_mem_long_8,link ! \ + nop +# else +# define GET_DLOC_L_IND_Y_RD() \ + ldb 1(scratch1),arg0 ! \ + GET_DLOC_L_IND_Y_WR() ! \ + bl get_mem_long_16,link ! \ + nop +# endif +#else /* C */ +# ifdef ACC8 +# define GET_DLOC_L_IND_Y_RD() \ + GET_1BYTE_ARG; \ + GET_DLOC_L_IND_Y_WR(); \ + GET_MEMORY8(arg, arg); +# else +# define GET_DLOC_L_IND_Y_RD() \ + GET_1BYTE_ARG; \ + GET_DLOC_L_IND_Y_WR(); \ + GET_MEMORY16(arg, arg, 0); +# endif +#endif + + +#undef GET_ABS_INDEX_ADDR_FOR_RD + +#ifdef ASM +/* to get cycle right: add 1 cycle */ +/* if (x is 16bit) || (carry into high byte), add another cycle */ +/* So, if x==16bit, add 1. If x==8bit then add 1 if carry */ +# define GET_ABS_INDEX_ADDR_FOR_RD(index_reg) \ + ldb 1(scratch1),ret0 ! \ + CYCLES_PLUS_1 ! \ + ldb 2(scratch1),scratch1 ! \ + dep dbank,15,16,ret0 ! \ + INC_KPC_3 ! \ + dep scratch1,23,8,ret0 ! \ + add ret0,index_reg,arg0 ! \ + xor arg0,ret0,scratch1 ! \ + extru,= psr,27,1,0 ! \ + extru,= scratch1,23,8,0 ! \ + CYCLES_PLUS_1 +#else /* C */ +# define GET_ABS_INDEX_ADDR_FOR_RD(index_reg) \ + GET_2BYTE_ARG; \ + CYCLES_PLUS_1; \ + INC_KPC_3; \ + tmp1 = (dbank << 16) + arg; \ + arg = tmp1 + index_reg; \ + if(((psr & 0x10) == 0) || ((tmp1 ^ arg) & 0xff00)) { \ + CYCLES_PLUS_1; \ + } +#endif + +#undef GET_ABS_Y_RD + +#ifdef ASM +# ifdef ACC8 +# define GET_ABS_Y_RD() \ + GET_ABS_INDEX_ADDR_FOR_RD(yreg) ! \ + bl get_mem_long_8,link ! \ + extru arg0,31,24,arg0 +# else +# define GET_ABS_Y_RD() \ + GET_ABS_INDEX_ADDR_FOR_RD(yreg) ! \ + bl get_mem_long_16,link ! \ + extru arg0,31,24,arg0 +# endif +#else /* C */ +# ifdef ACC8 +# define GET_ABS_Y_RD() \ + GET_ABS_INDEX_ADDR_FOR_RD(yreg); \ + GET_MEMORY8(arg, arg); +# else +# define GET_ABS_Y_RD() \ + GET_ABS_INDEX_ADDR_FOR_RD(yreg); \ + GET_MEMORY16(arg, arg, 0); +# endif +#endif + + + + +#undef GET_ABS_X_RD +#undef GET_ABS_X_RD_WR + +#ifdef ASM +# ifdef ACC8 +# define GET_ABS_X_RD() \ + GET_ABS_INDEX_ADDR_FOR_RD(xreg) ! \ + bl get_mem_long_8,link ! \ + extru arg0,31,24,arg0 + +# define GET_ABS_X_RD_WR() \ + ldb 1(scratch1),ret0 ! \ + INC_KPC_3 ! \ + ldb 2(scratch1),scratch1 ! \ + dep dbank,15,16,ret0 ! \ + CYCLES_PLUS_2 ! \ + dep scratch1,23,8,ret0 ! \ + add ret0,xreg,arg0 ! \ + bl get_mem_long_8,link ! \ + extru arg0,31,24,arg0 +# else +# define GET_ABS_X_RD() \ + GET_ABS_INDEX_ADDR_FOR_RD(xreg) ! \ + bl get_mem_long_16,link ! \ + extru arg0,31,24,arg0 + +# define GET_ABS_X_RD_WR() \ + ldb 1(scratch1),ret0 ! \ + INC_KPC_3 ! \ + ldb 2(scratch1),scratch1 ! \ + dep dbank,15,16,ret0 ! \ + CYCLES_PLUS_2 ! \ + dep scratch1,23,8,ret0 ! \ + add ret0,xreg,arg0 ! \ + bl get_mem_long_16,link ! \ + extru arg0,31,24,arg0 +# endif +#else /* C */ +# ifdef ACC8 +# define GET_ABS_X_RD() \ + GET_ABS_INDEX_ADDR_FOR_RD(xreg); \ + GET_MEMORY8(arg, arg); + +# define GET_ABS_X_RD_WR() \ + GET_2BYTE_ARG; \ + INC_KPC_3; \ + CYCLES_PLUS_2; \ + arg = (dbank << 16) + ((arg + xreg) & 0xffff); \ + GET_MEMORY8(arg, arg); +# else +# define GET_ABS_X_RD() \ + GET_ABS_INDEX_ADDR_FOR_RD(xreg); \ + GET_MEMORY16(arg, arg, 0); + +# define GET_ABS_X_RD_WR() \ + GET_2BYTE_ARG; \ + INC_KPC_3; \ + CYCLES_PLUS_2; \ + arg = (dbank << 16) + ((arg + xreg) & 0xffff); \ + GET_MEMORY16(arg, arg, 0); +# endif +#endif + + +#undef GET_LONG_X_RD + +#ifdef ASM +# ifdef ACC8 +# define GET_LONG_X_RD() \ + ldb 1(scratch1),ret0 ! \ + ldb 2(scratch1),scratch2 ! \ + CYCLES_PLUS_2 ! \ + ldb 3(scratch1),scratch1 ! \ + INC_KPC_4 ! \ + dep scratch2,23,8,ret0 ! \ + dep scratch1,15,8,ret0 ! \ + add ret0,xreg,arg0 ! \ + bl get_mem_long_8,link ! \ + extru arg0,31,24,arg0 +# else +# define GET_LONG_X_RD() \ + ldb 1(scratch1),ret0 ! \ + ldb 2(scratch1),scratch2 ! \ + CYCLES_PLUS_2 ! \ + ldb 3(scratch1),scratch1 ! \ + INC_KPC_4 ! \ + dep scratch2,23,8,ret0 ! \ + dep scratch1,15,8,ret0 ! \ + add ret0,xreg,arg0 ! \ + bl get_mem_long_16,link ! \ + extru arg0,31,24,arg0 +# endif +#else /* C */ +# ifdef ACC8 +# define GET_LONG_X_RD() \ + GET_3BYTE_ARG; \ + arg = (arg + xreg) & 0xffffff; \ + INC_KPC_4; \ + CYCLES_PLUS_2; \ + GET_MEMORY8(arg, arg); +# else +# define GET_LONG_X_RD() \ + GET_3BYTE_ARG; \ + arg = (arg + xreg) & 0xffffff; \ + INC_KPC_4; \ + CYCLES_PLUS_2; \ + GET_MEMORY16(arg, arg, 0); +# endif +#endif + +#undef SET_NEG_ZERO16 +#define SET_NEG_ZERO16(val) \ + zero = val; \ + neg = (val) >> 15; + +# define SET_NEG_ZERO8(val) \ + zero = val; \ + neg = (val) >> 7; + +#define SET_CARRY8(val) \ + psr = (psr & ~1) + (((val) >> 8) & 1); + +#define SET_CARRY16(val) \ + psr = (psr & ~1) + (((val) >> 16) & 1); + +#if 0 +# define NEGZERO8(val) SET_NEG_ZERO8(val) +#else +# define NEGZERO16(val) SET_NEG_ZERO16(val) +#endif + +#undef SET_INDEX_REG +#define SET_INDEX_REG(src, dest) \ + if(psr & 0x10) { \ + dest = (src) & 0xff; \ + SET_NEG_ZERO8(dest); \ + } else { \ + dest = (src) & 0xffff; \ + SET_NEG_ZERO16(dest); \ + } + +#define LD_INDEX_INST(index_reg, in_bank) \ + if(psr & 0x10) { \ + GET_MEMORY8(arg, arg); \ + } else { \ + GET_MEMORY16(arg, arg, in_bank);\ + } \ + SET_INDEX_REG(arg, index_reg); + +#define LDX_INST(in_bank) LD_INDEX_INST(xreg, in_bank) +#define LDY_INST(in_bank) LD_INDEX_INST(yreg, in_bank) + +#undef ORA_INST + +#ifdef ASM +# ifdef ACC8 +# define ORA_INST() \ + ldi 0xff,scratch1 ! \ + or acc,ret0,arg0 ! \ + and arg0,scratch1,zero ! \ + extru arg0,24,1,neg ! \ + b dispatch ! \ + dep arg0,31,8,acc +# else +# define ORA_INST() \ + zdepi -1,31,16,scratch1 ! \ + or acc,ret0,arg0 ! \ + and arg0,scratch1,zero ! \ + extru arg0,16,1,neg ! \ + b dispatch ! \ + dep arg0,31,16,acc +# endif +#else /* C */ +# ifdef ACC8 +# define ORA_INST() \ + tmp1 = (acc | arg) & 0xff; \ + acc = (acc & 0xff00) + tmp1; \ + SET_NEG_ZERO8(tmp1); +# else +# define ORA_INST() \ + acc = (acc | arg); \ + SET_NEG_ZERO16(acc); +# endif +#endif + +#undef AND_INST + +#ifdef ASM +# ifdef ACC8 +# define AND_INST() \ + ldi 0xff,scratch1 ! \ + and acc,ret0,arg0 ! \ + and arg0,scratch1,zero ! \ + extru arg0,24,1,neg ! \ + b dispatch ! \ + dep arg0,31,8,acc +# else +# define AND_INST() \ + zdepi -1,31,16,scratch1 ! \ + and acc,ret0,arg0 ! \ + and arg0,scratch1,zero ! \ + extru arg0,16,1,neg ! \ + b dispatch ! \ + dep arg0,31,16,acc +# endif +#else /* C */ +# ifdef ACC8 +# define AND_INST() \ + tmp1 = (acc & arg) & 0xff; \ + acc = (acc & 0xff00) + tmp1; \ + SET_NEG_ZERO8(tmp1); +# else +# define AND_INST() \ + acc = (acc & arg); \ + SET_NEG_ZERO16(acc); +# endif +#endif + +#undef EOR_INST + +#ifdef ASM +# ifdef ACC8 +# define EOR_INST() \ + ldi 0xff,scratch1 ! \ + xor acc,ret0,arg0 ! \ + and arg0,scratch1,zero ! \ + extru arg0,24,1,neg ! \ + b dispatch ! \ + dep arg0,31,8,acc +# else +# define EOR_INST() \ + zdepi -1,31,16,scratch1 ! \ + xor acc,ret0,arg0 ! \ + and arg0,scratch1,zero ! \ + extru arg0,16,1,neg ! \ + b dispatch ! \ + dep arg0,31,16,acc +# endif +#else /* C */ +# ifdef ACC8 +# define EOR_INST() \ + tmp1 = (acc ^ arg) & 0xff; \ + acc = (acc & 0xff00) + tmp1; \ + SET_NEG_ZERO8(tmp1); +# else +# define EOR_INST() \ + acc = (acc ^ arg); \ + SET_NEG_ZERO16(acc); +# endif +#endif + +# undef LDA_INST + +#ifdef ASM +# ifdef ACC8 +# define LDA_INST() \ + extru ret0,31,8,zero ! \ + extru ret0,24,1,neg ! \ + b dispatch ! \ + dep zero,31,8,acc +# else +# define LDA_INST() \ + extru ret0,31,16,zero ! \ + extru ret0,16,1,neg ! \ + b dispatch ! \ + dep zero,31,16,acc +# endif +#else /* C*/ +# ifdef ACC8 +# define LDA_INST() \ + acc = (acc & 0xff00) + (arg & 0xff); \ + SET_NEG_ZERO8(arg & 0xff); +# else +# define LDA_INST() \ + acc = (arg & 0xffff); \ + SET_NEG_ZERO16(acc); +# endif +#endif + +# undef ADC_INST + +#ifdef ASM +# ifdef ACC8 +# define ADC_INST() \ + b adc_binary_8 ! \ + extru acc,31,8,arg0 +# else +# define ADC_INST() \ + b adc_binary_16 ! \ + extru acc,31,16,arg0 +# endif +#else /* C */ +# ifdef ACC8 +# define ADC_INST() \ + tmp1 = do_adc_sbc8(acc & 0xff, arg & 0xff, psr, 0); \ + acc = (acc & 0xff00) + (tmp1 & 0xff); \ + psr = (tmp1 >> 16); \ + zero = !(psr & 0x2); \ + neg = (psr >> 7) & 1; +# else +# define ADC_INST() \ + tmp1 = do_adc_sbc16(acc, arg & 0xffff, psr, 0); \ + acc = (tmp1 & 0xffff); \ + psr = (tmp1 >> 16); \ + zero = !(psr & 0x2); \ + neg = (psr >> 7) & 1; +# endif +#endif + + +# undef SBC_INST + +#ifdef ASM +# ifdef ACC8 +# define SBC_INST() \ + uaddcm 0,ret0,ret0 ! \ + b sbc_binary_8 ! \ + extru acc,31,8,arg0 +# else +# define SBC_INST() \ + uaddcm 0,ret0,ret0 ! \ + b sbc_binary_16 ! \ + extru acc,31,16,arg0 +# endif +#else /* C */ +# ifdef ACC8 +# define SBC_INST() \ + tmp1 = do_adc_sbc8(acc & 0xff, arg & 0xff, psr, 1); \ + acc = (acc & 0xff00) + (tmp1 & 0xff); \ + psr = (tmp1 >> 16); \ + zero = !(psr & 0x2); \ + neg = (psr >> 7) & 1; +# else +# define SBC_INST() \ + tmp1 = do_adc_sbc16(acc, arg & 0xffff, psr, 1); \ + acc = (tmp1 & 0xffff); \ + psr = (tmp1 >> 16); \ + zero = !(psr & 0x2); \ + neg = (psr >> 7) & 1; +# endif +#endif + + +# undef CMP_INST + +#ifdef ASM +# ifdef ACC8 +# define CMP_INST() ! \ + extru acc,31,8,scratch1 ! \ + subi 0x100,ret0,ret0 ! \ + ldi 0xff,scratch2 ! \ + add ret0,scratch1,ret0 ! \ + extru ret0,23,1,scratch1 ! \ + and ret0,scratch2,zero ! \ + extru ret0,24,1,neg ! \ + b dispatch ! \ + dep scratch1,31,1,psr +# else +# define CMP_INST() ! \ + ldil l%0x10000,scratch3 ! \ + zdepi -1,31,16,scratch2 ! \ + sub scratch3,ret0,ret0 ! \ + add ret0,acc,ret0 ! \ + extru ret0,15,1,scratch1 ! \ + and ret0,scratch2,zero ! \ + extru ret0,16,1,neg ! \ + b dispatch ! \ + dep scratch1,31,1,psr +# endif +#else /* C */ +# ifdef ACC8 +# define CMP_INST() \ + arg = (acc & 0xff) + (0x100 - arg); \ + SET_CARRY8(arg); \ + arg = arg & 0xff; \ + SET_NEG_ZERO8(arg & 0xff); +# else +# define CMP_INST() \ + arg = (acc & 0xffff) + (0x10000 - arg); \ + SET_CARRY16(arg); \ + arg = arg & 0xffff; \ + SET_NEG_ZERO16(arg & 0xffff); +# endif +#endif + +# undef BIT_INST + +#ifdef ASM +# ifdef ACC8 +# define BIT_INST() \ + ldi 0xff,scratch1 ! \ + and acc,ret0,arg0 ! \ + extru ret0,24,1,neg ! \ + and arg0,scratch1,zero ! \ + extru ret0,25,1,scratch2 ! \ + b dispatch ! \ + dep scratch2,25,1,psr +# else +# define BIT_INST() \ + zdepi -1,31,16,scratch1 ! \ + and acc,ret0,arg0 ! \ + extru ret0,16,1,neg ! \ + and arg0,scratch1,zero ! \ + extru ret0,17,1,scratch2 ! \ + b dispatch ! \ + dep scratch2,25,1,psr +# endif +#else /* C */ +# ifdef ACC8 +# define BIT_INST() \ + neg = arg >> 7; \ + zero = (acc & arg & 0xff); \ + psr = (psr & (~0x40)) | (arg & 0x40); +# else +# define BIT_INST() \ + neg = arg >> 15; \ + zero = (acc & arg & 0xffff); \ + psr = (psr & (~0x40)) | ((arg >> 8) & 0x40); +# endif +#endif + +# undef STA_INST + +#ifdef ASM +# ifdef ACC8 +# define STA_INST() \ + extru acc,31,8,arg1 ! \ + ldil l%dispatch,link ! \ + b set_mem_long_8 ! \ + ldo r%dispatch(link),link +# else +# define STA_INST() \ + extru acc,31,16,arg1 ! \ + ldil l%dispatch,link ! \ + b set_mem_long_16 ! \ + ldo r%dispatch(link),link +# endif +#else /* C*/ +# ifdef ACC8 +# define STA_INST(in_bank) \ + SET_MEMORY8(arg, acc); +# else +# define STA_INST(in_bank) \ + SET_MEMORY16(arg, acc, in_bank); +# endif +#endif + + +#undef TSB_INST + +#ifdef ASM +# ifdef ACC8 +/* Uses addr_latch as full apple addr to write data to */ +# define TSB_INST() \ + or acc,ret0,arg1 ! \ + CYCLES_PLUS_1 ! \ + extru arg1,31,8,arg1 ! \ + and ret0,acc,zero ! \ + copy addr_latch,arg0 ! \ + extru zero,31,8,zero ! \ + ldil l%dispatch,link ! \ + b set_mem_long_8 ! \ + ldo r%dispatch(link),link +# else +/* Uses addr_latch as full apple addr to write data to */ +# define TSB_INST() \ + or acc,ret0,arg1 ! \ + CYCLES_PLUS_1 ! \ + extru arg1,31,16,arg1 ! \ + and ret0,acc,zero ! \ + copy addr_latch,arg0 ! \ + extru zero,31,16,zero ! \ + ldil l%dispatch,link ! \ + b set_mem_long_16 ! \ + ldo r%dispatch(link),link +# endif +#else /* C*/ +# ifdef ACC8 +# define TSB_INST(in_bank) \ + tmp1 = arg | acc; \ + CYCLES_PLUS_1; \ + zero = arg & acc; \ + SET_MEMORY8(addr_latch, tmp1); +# else +# define TSB_INST(in_bank) \ + tmp1 = arg | acc; \ + CYCLES_PLUS_1; \ + zero = arg & acc; \ + SET_MEMORY16(addr_latch, tmp1, in_bank); +# endif +#endif + + +#undef ASL_INST + +#ifdef ASM +# ifdef ACC8 +/* Uses addr_latch as full apple addr to write data to */ +# define ASL_INST() \ + ldi 0xff,scratch1 ! \ + copy addr_latch,arg0 ! \ + sh1add ret0,0,scratch3 ! \ + CYCLES_PLUS_1 ! \ + extru scratch3,24,1,neg ! \ + and scratch3,scratch1,zero ! \ + extru scratch3,23,1,scratch2 ! \ + copy zero,arg1 ! \ + dep scratch2,31,1,psr /* set carry */ ! \ + ldil l%dispatch,link ! \ + b set_mem_long_8 ! \ + ldo r%dispatch(link),link +# else +/* Uses addr_latch as full apple addr to write data to */ +# define ASL_INST() \ + zdepi -1,31,16,scratch1 ! \ + copy addr_latch,arg0 ! \ + sh1add ret0,0,scratch3 ! \ + CYCLES_PLUS_1 ! \ + extru scratch3,16,1,neg ! \ + and scratch3,scratch1,zero ! \ + extru scratch3,15,1,scratch2 ! \ + copy zero,arg1 ! \ + dep scratch2,31,1,psr /* set carry */ ! \ + ldil l%dispatch,link ! \ + b set_mem_long_16 ! \ + ldo r%dispatch(link),link +# endif +#else /* C */ +# ifdef ACC8 +# define ASL_INST(in_bank) \ + psr = (psr & 0x1fe) + ((arg >> 7) & 1); \ + tmp1 = (arg << 1) & 0xff; \ + CYCLES_PLUS_1; \ + SET_NEG_ZERO8(tmp1); \ + SET_MEMORY8(addr_latch, tmp1); +# else +# define ASL_INST(in_bank) \ + psr = (psr & 0x1fe) + ((arg >> 15) & 1);\ + tmp1 = (arg << 1) & 0xffff; \ + CYCLES_PLUS_1; \ + SET_NEG_ZERO16(tmp1); \ + SET_MEMORY16(addr_latch, tmp1, in_bank); +# endif +#endif + +# undef ROL_INST + +#ifdef ASM +# ifdef ACC8 +/* Uses addr_latch as full apple addr to write data to */ +# define ROL_INST() \ + extru psr,31,1,scratch2 ! \ + ldi 0xff,scratch1 ! \ + copy addr_latch,arg0 ! \ + sh1add ret0,scratch2,scratch3 ! \ + CYCLES_PLUS_1 ! \ + extru scratch3,24,1,neg ! \ + and scratch3,scratch1,zero ! \ + extru scratch3,23,1,scratch2 ! \ + copy zero,arg1 ! \ + dep scratch2,31,1,psr /* set carry */ ! \ + ldil l%dispatch,link ! \ + b set_mem_long_8 ! \ + ldo r%dispatch(link),link +# else +/* Uses addr_latch as full apple addr to write data to */ +# define ROL_INST() \ + extru psr,31,1,scratch2 ! \ + copy addr_latch,arg0 ! \ + zdepi -1,31,16,scratch1 ! \ + sh1add ret0,scratch2,scratch3 ! \ + CYCLES_PLUS_1 ! \ + extru scratch3,16,1,neg ! \ + and scratch3,scratch1,zero ! \ + extru scratch3,15,1,scratch2 ! \ + copy zero,arg1 ! \ + dep scratch2,31,1,psr /* set carry */ ! \ + ldil l%dispatch,link ! \ + b set_mem_long_16 ! \ + ldo r%dispatch(link),link +# endif +#else /* C */ +# ifdef ACC8 +# define ROL_INST(in_bank) \ + arg = (arg << 1) | (psr & 1); \ + SET_MEMORY8(addr_latch, arg); \ + CYCLES_PLUS_1; \ + SET_NEG_ZERO8(arg & 0xff); \ + SET_CARRY8(arg); +# else +# define ROL_INST(in_bank) \ + arg = (arg << 1) | (psr & 1); \ + SET_MEMORY16(addr_latch, arg, in_bank); \ + CYCLES_PLUS_1; \ + SET_NEG_ZERO16(arg & 0xffff); \ + SET_CARRY16(arg); +# endif +#endif + +# undef LSR_INST + +#ifdef ASM +# ifdef ACC8 +/* Uses addr_latch as full apple addr to write data to */ +# define LSR_INST() \ + copy addr_latch,arg0 ! \ + extru ret0,30,7,zero ! \ + CYCLES_PLUS_1 ! \ + ldi 0,neg ! \ + dep ret0,31,1,psr /* set carry */ ! \ + copy zero,arg1 ! \ + ldil l%dispatch,link ! \ + b set_mem_long_8 ! \ + ldo r%dispatch(link),link +# else +/* Uses addr_latch as full apple addr to write data to */ +# define LSR_INST() \ + copy addr_latch,arg0 ! \ + extru ret0,30,15,zero ! \ + CYCLES_PLUS_1 ! \ + ldi 0,neg ! \ + dep ret0,31,1,psr /* set carry */ ! \ + copy zero,arg1 ! \ + ldil l%dispatch,link ! \ + b set_mem_long_16 ! \ + ldo r%dispatch(link),link +# endif +#else /* C */ +# ifdef ACC8 +# define LSR_INST(in_bank) \ + SET_CARRY8(arg << 8); \ + arg = (arg >> 1) & 0x7f; \ + SET_MEMORY8(addr_latch, arg); \ + CYCLES_PLUS_1; \ + SET_NEG_ZERO8(arg); +# else +# define LSR_INST(in_bank) \ + SET_CARRY16(arg << 16); \ + arg = (arg >> 1) & 0x7fff; \ + SET_MEMORY16(addr_latch, arg, in_bank); \ + CYCLES_PLUS_1; \ + SET_NEG_ZERO16(arg); +# endif +#endif + + +# undef ROR_INST + +#ifdef ASM +# ifdef ACC8 +# define ROR_INST() ! \ + extru psr,31,1,neg ! \ + copy addr_latch,arg0 ! \ + extru ret0,30,7,zero ! \ + CYCLES_PLUS_1 ! \ + dep neg,24,1,zero ! \ + copy zero,arg1 ! \ + dep ret0,31,1,psr ! \ + ldil l%dispatch,link ! \ + b set_mem_long_8 ! \ + ldo r%dispatch(link),link +# else +# define ROR_INST() ! \ + extru psr,31,1,neg ! \ + copy addr_latch,arg0 ! \ + extru ret0,30,15,zero ! \ + CYCLES_PLUS_1 ! \ + dep neg,16,1,zero ! \ + copy zero,arg1 ! \ + dep ret0,31,1,psr ! \ + ldil l%dispatch,link ! \ + b set_mem_long_16 ! \ + ldo r%dispatch(link),link +# endif +#else /* C */ +# ifdef ACC8 +# define ROR_INST(in_bank) \ + tmp1 = psr & 1; \ + SET_CARRY8(arg << 8); \ + arg = ((arg >> 1) & 0x7f) | (tmp1 << 7); \ + SET_MEMORY8(addr_latch, arg); \ + CYCLES_PLUS_1; \ + SET_NEG_ZERO8(arg); +# else +# define ROR_INST(in_bank) \ + tmp1 = psr & 1; \ + SET_CARRY16(arg << 16); \ + arg = ((arg >> 1) & 0x7fff) | (tmp1 << 15); \ + SET_MEMORY16(addr_latch, arg, in_bank); \ + CYCLES_PLUS_1; \ + SET_NEG_ZERO16(arg); +# endif +#endif + +# undef TRB_INST + +#ifdef ASM +# ifdef ACC8 +/* Uses addr_latch as full apple addr to write data to */ +# define TRB_INST() \ + andcm ret0,acc,arg1 ! \ + copy addr_latch,arg0 ! \ + and ret0,acc,zero ! \ + extru arg1,31,8,arg1 ! \ + CYCLES_PLUS_1 ! \ + extru zero,31,8,zero ! \ + ldil l%dispatch,link ! \ + b set_mem_long_8 ! \ + ldo r%dispatch(link),link +# else +/* Uses addr_latch as full apple addr to write data to */ +# define TRB_INST() \ + andcm ret0,acc,arg1 ! \ + CYCLES_PLUS_1 ! \ + extru arg1,31,16,arg1 ! \ + and ret0,acc,zero ! \ + copy addr_latch,arg0 ! \ + extru zero,31,16,zero ! \ + ldil l%dispatch,link ! \ + b set_mem_long_16 ! \ + ldo r%dispatch(link),link +# endif +#else /* C */ +# ifdef ACC8 +# define TRB_INST(in_bank) \ + arg = arg & 0xff; \ + tmp1 = arg & ~acc; \ + CYCLES_PLUS_1; \ + zero = arg & acc; \ + SET_MEMORY8(addr_latch, tmp1); +# else +# define TRB_INST(in_bank) \ + tmp1 = arg & ~acc; \ + CYCLES_PLUS_1; \ + zero = arg & acc; \ + SET_MEMORY16(addr_latch, tmp1, in_bank); +# endif +#endif + +# undef DEC_INST + +#ifdef ASM +# ifdef ACC8 +# define DEC_INST() ! \ + addi -1,ret0,ret0 ! \ + copy addr_latch,arg0 ! \ + extru ret0,24,1,neg ! \ + CYCLES_PLUS_1 ! \ + extru ret0,31,8,zero ! \ + ldil l%dispatch,link ! \ + copy zero,arg1 ! \ + b set_mem_long_8 ! \ + ldo r%dispatch(link),link +# else +# define DEC_INST() ! \ + addi -1,ret0,ret0 ! \ + copy addr_latch,arg0 ! \ + extru ret0,16,1,neg ! \ + CYCLES_PLUS_1 ! \ + extru ret0,31,16,zero ! \ + ldil l%dispatch,link ! \ + copy zero,arg1 ! \ + b set_mem_long_16 ! \ + ldo r%dispatch(link),link +# endif +#else /* C */ +# ifdef ACC8 +# define DEC_INST(in_bank) \ + CYCLES_PLUS_1; \ + arg = (arg - 1) & 0xff; \ + SET_MEMORY8(addr_latch, arg); \ + SET_NEG_ZERO8(arg); +# else +# define DEC_INST(in_bank) \ + CYCLES_PLUS_1; \ + arg = (arg - 1) & 0xffff; \ + SET_MEMORY16(addr_latch, arg, in_bank); \ + SET_NEG_ZERO16(arg); +# endif +#endif + + +# undef INC_INST + +#ifdef ASM +# ifdef ACC8 +# define INC_INST() ! \ + addi 1,ret0,ret0 ! \ + copy addr_latch,arg0 ! \ + extru ret0,24,1,neg ! \ + CYCLES_PLUS_1 ! \ + extru ret0,31,8,zero ! \ + ldil l%dispatch,link ! \ + copy zero,arg1 ! \ + b set_mem_long_8 ! \ + ldo r%dispatch(link),link +# else +# define INC_INST() ! \ + addi 1,ret0,ret0 ! \ + copy addr_latch,arg0 ! \ + extru ret0,16,1,neg ! \ + CYCLES_PLUS_1 ! \ + extru ret0,31,16,zero ! \ + ldil l%dispatch,link ! \ + copy zero,arg1 ! \ + b set_mem_long_16 ! \ + ldo r%dispatch(link),link +# endif +#else /* C */ +# ifdef ACC8 +# define INC_INST(in_bank) \ + CYCLES_PLUS_1; \ + arg = (arg + 1) & 0xff; \ + SET_MEMORY8(addr_latch, arg); \ + SET_NEG_ZERO8(arg); +# else +# define INC_INST(in_bank) \ + CYCLES_PLUS_1; \ + arg = (arg + 1) & 0xffff; \ + SET_MEMORY16(addr_latch, arg, in_bank); \ + SET_NEG_ZERO16(arg); +# endif +#endif + +# undef STZ_INST + +#ifdef ASM +# ifdef ACC8 +# define STZ_INST() \ + ldi 0,arg1 ! \ + ldil l%dispatch,link ! \ + b set_mem_long_8 ! \ + ldo r%dispatch(link),link +# else +# define STZ_INST() \ + ldi 0,arg1 ! \ + ldil l%dispatch,link ! \ + b set_mem_long_16 ! \ + ldo r%dispatch(link),link +# endif +#else /* C */ +# ifdef ACC8 +# define STZ_INST(in_bank) \ + SET_MEMORY8(arg, 0); +# else +# define STZ_INST(in_bank) \ + SET_MEMORY16(arg, 0, in_bank); +# endif +#endif + + +#undef COND_BR1 +#undef COND_BR2 +#undef COND_BR_UNTAKEN + +#ifdef ASM +# define COND_BR1 \ + ldb 1(scratch1),arg0 + +/* be careful about modifying kpc as first instr of COND_Br2 since it */ +/* is in the delay slot of a branch! */ +# define COND_BR2 \ + addi 2,kpc,scratch3 ! \ + ldi 0x100,scratch4 ! \ + extrs arg0,31,8,ret0 ! \ + and scratch4,psr,scratch4 ! \ + add scratch3,ret0,ret0 ! \ + CYCLES_PLUS_1 ! \ + xor scratch3,ret0,scratch3 ! \ + and,= scratch4,scratch3,0 ! \ + CYCLES_PLUS_1 ! \ + b dispatch ! \ + dep ret0,31,16,kpc + + +# define COND_BR_UNTAKEN \ + b dispatch ! \ + INC_KPC_2 +#else /* C */ +#undef BRANCH_DISP8 +# define BRANCH_DISP8(cond) \ + GET_1BYTE_ARG; \ + tmp2 = kpc & 0xff0000; \ + kpc += 2; \ + tmp1 = kpc; \ + if(cond) { \ + kpc = kpc + arg - ((arg & 0x80) << 1); \ + CYCLES_PLUS_1; \ + if((tmp1 ^ kpc) & psr & 0x100) { \ + CYCLES_PLUS_1; \ + } \ + } \ + kpc = tmp2 + (kpc & 0xffff); +#endif + +#undef STY_INST +#undef STX_INST + +#ifdef ASM +# define STY_INST() \ + ldil l%dispatch,link ! \ + b set_mem_yreg ! \ + ldo r%dispatch(link),link + +# define STX_INST() \ + ldil l%dispatch,link ! \ + b set_mem_xreg ! \ + ldo r%dispatch(link),link +#else /* C */ +# define STY_INST(in_bank) \ + if(psr & 0x10) { \ + SET_MEMORY8(arg, yreg); \ + } else { \ + SET_MEMORY16(arg, yreg, in_bank);\ + } +# define STX_INST(in_bank) \ + if(psr & 0x10) { \ + SET_MEMORY8(arg, xreg); \ + } else { \ + SET_MEMORY16(arg, xreg, in_bank);\ + } +#endif + +#ifndef ASM +#undef C_LDX_ABS_Y +# define C_LDX_ABS_Y() \ + GET_ABS_INDEX_ADDR_FOR_RD(yreg); \ + LDX_INST(0); +#undef C_LDY_ABS_X +# define C_LDY_ABS_X() \ + GET_ABS_INDEX_ADDR_FOR_RD(xreg); \ + LDY_INST(0); +#undef C_LDX_ABS +# define C_LDX_ABS() \ + GET_ABS_ADDR(); \ + LDX_INST(0); +#undef C_LDY_ABS +# define C_LDY_ABS() \ + GET_ABS_ADDR(); \ + LDY_INST(0); +#undef C_LDX_DLOC +# define C_LDX_DLOC() \ + GET_DLOC_ADDR(); \ + LDX_INST(1); +#undef C_LDY_DLOC +# define C_LDY_DLOC() \ + GET_DLOC_ADDR(); \ + LDY_INST(1); +#undef C_LDY_DLOC_X +# define C_LDY_DLOC_X() \ + GET_DLOC_X_ADDR(); \ + LDY_INST(1); +#undef C_LDX_DLOC_Y +# define C_LDX_DLOC_Y() \ + GET_DLOC_Y_ADDR(); \ + LDX_INST(1); + +# define CP_INDEX_VAL(index_reg) \ + arg = 0x100 - arg + index_reg; \ + if((psr & 0x10) == 0) { \ + arg += 0xff00; \ + SET_NEG_ZERO16(arg & 0xffff); \ + SET_CARRY16(arg); \ + } else { \ + SET_NEG_ZERO8(arg & 0xff);\ + SET_CARRY8(arg); \ + } + +# define CP_INDEX_LOAD(index_reg, in_bank) \ + if((psr & 0x10) != 0) { \ + GET_MEMORY8(arg, arg); \ + } else { \ + GET_MEMORY16(arg, arg, in_bank);\ + } \ + CP_INDEX_VAL(index_reg) + +# define CPX_INST(in_bank) \ + CP_INDEX_LOAD(xreg, in_bank); + +# define CPY_INST(in_bank) \ + CP_INDEX_LOAD(yreg, in_bank); +#undef C_CPX_IMM +# define C_CPX_IMM() \ + INC_KPC_2; \ + if((psr & 0x10) == 0) { \ + GET_2BYTE_ARG; \ + CYCLES_PLUS_1; \ + INC_KPC_1; \ + } else { \ + GET_1BYTE_ARG; \ + } \ + CP_INDEX_VAL(xreg); +#undef C_CPY_IMM +# define C_CPY_IMM() \ + INC_KPC_2; \ + if((psr & 0x10) == 0) { \ + GET_2BYTE_ARG; \ + CYCLES_PLUS_1; \ + INC_KPC_1; \ + } else { \ + GET_1BYTE_ARG; \ + } \ + CP_INDEX_VAL(yreg); +#undef C_CPX_DLOC +# define C_CPX_DLOC() \ + GET_DLOC_ADDR(); \ + CPX_INST(1); +#undef C_CPY_DLOC +# define C_CPY_DLOC() \ + GET_DLOC_ADDR(); \ + CPY_INST(1); +#undef C_CPX_ABS +# define C_CPX_ABS() \ + GET_ABS_ADDR(); \ + CPX_INST(0); +#undef C_CPY_ABS +# define C_CPY_ABS() \ + GET_ABS_ADDR(); \ + CPY_INST(0); + +#endif + + + + +/* This is here to make sure all the macros expand to no instrs */ +/* if defs_instr_end_8 - start != 0, then something did expand */ + +#ifdef ASM +# ifdef ACC8 + .export defs_instr_end_8,data +defs_instr_end_8 .word 0 +# else + .export defs_instr_end_16,data +defs_instr_end_16 .word 0 +# endif +#endif diff --git a/kegs/Src/dis.cpp b/kegs/Src/dis.cpp new file mode 100644 index 0000000..3ba8c50 --- /dev/null +++ b/kegs/Src/dis.cpp @@ -0,0 +1,1227 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include +#include "defc.h" +#include + +#include "disas.h" +#include "adb.h" +#include "moremem.h" +#include "sim65816.h" +#include "iwm.h" +#include "protos_engine_c.h" + +#define LINE_SIZE 160 + +extern byte *g_memory_ptr; + + +extern int g_config_control_panel; + + +int g_num_breakpoints = 0; + +struct_breakpoint g_breakpts[MAX_BREAK_POINTS]; + + +#define W_BUF_LEN 128 +char w_buff[W_BUF_LEN]; + +int g_stepping = 0; + +word32 list_kpc; +int hex_line_len; +word32 a1,a2,a3; +word32 g_a4, g_a4bank; +int a1bank, a2bank, a3bank; +char *line_ptr; +int mode,old_mode; +int got_num; + +// OG replaced by HALT_WANTTOQUIT +//int g_quit_sim_now = 0; + +int +get_num() +{ + int tmp1; + + a2 = 0; + got_num = 0; + while(1) { + if(mode == 0 && got_num != 0) { +/* + printf("In getnum, mode =0, setting a1,a3 = a2\n"); + printf("a2: %x\n", a2); +*/ + a3 = a2; + a3bank = a2bank; + a1 = a2; + a1bank = a2bank; + } + tmp1 = *line_ptr++ & 0x7f; + if(tmp1 >= '0' && tmp1 <= '9') { + a2 = (a2 << 4) + tmp1 - '0'; + got_num = 1; + continue; + } + if(tmp1 >= 'a' && tmp1 <= 'f') { + a2 = (a2 << 4) + tmp1 - 'a' + 10; + got_num = 1; + continue; + } + if(tmp1 == '/') { + a2bank = a2; + a2 = 0; + continue; + } + return tmp1; + } +} + +void +debugger_help() +{ + printf("KEGS Debugger help (courtesy Fredric Devernay\n"); + printf("General command syntax: [bank]/[address][command]\n"); + printf("e.g. 'e1/0010B' to set a breakpoint at the interrupt jump pt\n"); + printf("Enter all addresses using lower-case\n"); + printf("As with the IIgs monitor, you can omit the bank number after\n"); + printf("having set it: 'e1/0010B' followed by '14B' will set\n"); + printf("breakpoints at e1/0010 and e1/0014\n"); + printf("\n"); + printf("g Go\n"); + printf("[bank]/[addr]g Go from [bank]/[address]\n"); + printf("s Step one instruction\n"); + printf("[bank]/[addr]s Step one instr at [bank]/[address]\n"); + printf("[bank]/[addr]B Set breakpoint at [bank]/[address]\n"); + printf("B Show all breakpoints\n"); + printf("[bank]/[addr]D Delete breakpoint at [bank]/[address]\n"); + printf("[bank]/[addr1].[addr2] View memory\n"); + printf("[bank]/[addr]L Disassemble memory\n"); + + printf("P Dump the trace to 'pc_log_out'\n"); + printf("Z Dump SCC state\n"); + printf("I Dump IWM state\n"); + printf("[drive].[track]I Dump IWM state\n"); + printf("E Dump Ensoniq state\n"); + printf("[osc]E Dump oscillator [osc] state\n"); + printf("R Dump dtime array and events\n"); + printf("T Show toolbox log\n"); + printf("[bank]/[addr]T Dump tools using ptr [bank]/[addr]\n"); + printf(" as 'tool_set_info'\n"); + printf("[mode]V XOR verbose with 1=DISK, 2=IRQ,\n"); + printf(" 4=CLK,8=SHADOW,10=IWM,20=DOC,\n"); + printf(" 40=ABD,80=SCC, 100=TEST, 200=VIDEO\n"); + printf("[mode]H XOR halt_on with 1=SCAN_INT,\n"); + printf(" 2=IRQ, 4=SHADOW_REG, 8=C70D_WRITES\n"); + printf("r Reset\n"); + printf("[0/1]=m Changes m bit for l listings\n"); + printf("[0/1]=x Changes x bit for l listings\n"); + printf("[t]=z Stops at absolute time t (obsolete)\n"); + printf("S show_bankptr_bank0 & smartport errs\n"); + printf("P show_pmhz\n"); + printf("A show_a2_line_stuff show_adb_log\n"); + printf("Ctrl-e Dump registers\n"); + printf("[bank]/[addr1].[addr2]us[file] Save mem area to [file]\n"); + printf("[bank]/[addr1].[addr2]ul[file] Load mem area from [file]\n"); + printf("v Show video information\n"); + printf("q Exit Debugger (and KEGS)\n"); +} + +void +do_debug_intfc() +{ + char linebuf[LINE_SIZE]; + int slot_drive; + int track; + int osc; + int done; + int ret_val; + + g_config_control_panel = 1; + + hex_line_len = 0x10; + a1 = 0; a2 = 0; a3 = 0; g_a4 = 0; + a1bank = 0; a2bank = 0; a3bank = 0; g_a4bank = 0; + list_kpc = g_sim65816.engine.kpc; + g_stepping = 0; + mode = 0; old_mode = 0; + done = 0; + g_sim65816.stop_run_at = -1; + + x_auto_repeat_on(0); + g_adb.fullscreen = 0; + x_full_screen(0); + + // OG use HALT_WANTTOQUIT instead of g_quit_sim_now + if (r_sim65816.should_emulator_terminate()) //g_sim65816.halt_sim&HALT_WANTTOQUIT) + { + printf("Exiting immediately\n"); + return; + } + + + printf("Type 'h' for help\n"); + + while(!done) { + printf("> "); fflush(stdout); + if(read_line(linebuf,LINE_SIZE-1) <= 0) { + done = 1; + continue; + } + line_ptr = linebuf; + +/* + printf("input line: :%s:\n", linebuf); + printf("mode: %d\n", mode); +*/ + mode = 0; + + while(*line_ptr != 0) { + ret_val = get_num(); +/* + printf("ret_val: %x, got_num= %d\n", ret_val, + got_num); +*/ + old_mode = mode; + mode = 0; + switch(ret_val) { + case 'h': + debugger_help(); + break; + case 'R': + show_dtime_array(); + show_all_events(); + break; + case 'I': + slot_drive = -1; + track = -1; + if(got_num) { + if(old_mode == '.') { + slot_drive = a1; + } + track = a2; + } + iwm_show_track(slot_drive, track); + iwm_show_stats(); + break; + case 'E': + osc = -1; + if(got_num) { + osc = a2; + } + doc_show_ensoniq_state(osc); + break; + case 'T': + if(got_num) { + show_toolset_tables(a2bank, a2); + } else { + show_toolbox_log(); + } + break; + case 'v': + if(got_num) { + dis_do_compare(); + } else { + video_show_debug_info(); + } + break; + case 'V': + printf("g_moremem.g_irq_pending: %05x\n", g_moremem.g_irq_pending); + printf("Setting g_sim65816.Verbose ^= %04x\n", a1); + Verbose ^= a1; + printf("Verbose is now: %04x\n", Verbose); + break; + case 'H': + printf("Setting g_sim65816.Halt_on ^= %04x\n", a1); + g_sim65816.Halt_on ^= a1; + printf("Halt_on is now: %04x\n", g_sim65816.Halt_on); + break; + case 'r': + do_reset(); + list_kpc = g_sim65816.engine.kpc; + break; + case 'm': + if(old_mode == '=') { + if(!a1) { + g_sim65816.engine.psr &= ~0x20; + } else { + g_sim65816.engine.psr |= 0x20; + } + if(g_sim65816.engine.psr & 0x100) { + g_sim65816.engine.psr |= 0x30; + } + } else { + dis_do_memmove(); + } + break; + case 'p': + dis_do_pattern_search(); + break; + case 'x': + if(old_mode == '=') { + if(!a1) { + g_sim65816.engine.psr &= ~0x10; + } else { + g_sim65816.engine.psr |= 0x10; + } + if(g_sim65816.engine.psr & 0x100) { + g_sim65816.engine.psr |= 0x30; + } + } + break; + case 'z': + if(old_mode == '=') { + g_sim65816.stop_run_at = a1; + printf("Calling add_event for t:%08x\n", + a1); + add_event_stop((double)a1); + printf("set g_sim65816.stop_run_at = %x\n", a1); + } + break; + case 'l': case 'L': + do_debug_list(); + break; + case 'Z': + show_scc_log(); + show_scc_state(); + break; + case 'S': + show_bankptrs_bank0rdwr(); + smartport_error(); + break; + case 'C': + x_show_color_array(); + break; + case 'P': + show_pc_log(); + break; + case 'M': + show_pmhz(); + break; + case 'A': + show_a2_line_stuff(); + show_adb_log(); + break; + case 's': + g_stepping = 1; + if(got_num) { + g_sim65816.engine.kpc = (a2bank<<16) + (a2&0xffff); + } + mode = 's'; + list_kpc = g_sim65816.engine.kpc; + break; + case 'B': + if(got_num) { + printf("got_num: %d, a2bank: %x, a2: %x\n", got_num, a2bank, a2); + set_bp((a2bank << 16) + a2,BRK_ALL,NULL,NULL); + } else { + show_bp(); + } + break; + case 'D': + if(got_num) { + printf("got_num: %d, a2bank: %x, a2: %x\n", got_num, a2bank, a2); + delete_bp((a2bank << 16) + a2); + } + break; + case 'g': + case 'G': + printf("Going..\n"); + g_stepping = 0; + if(got_num) { + g_sim65816.engine.kpc = (a2bank<<16) + (a2&0xffff); + } + if(ret_val == 'G' && g_sim65816.g_testing_enabled) { + do_gen_test(got_num, a2); + } else { + do_go(); + } + list_kpc = g_sim65816.engine.kpc; + break; + case 'q': + case 'Q': + printf("Exiting debugger\n"); + return; + break; + case 'u': + printf("Unix commands\n"); + do_debug_unix(); + break; + case ':': case '.': + case '+': case '-': + case '=': case ',': + mode = ret_val; + printf("Setting mode = %x\n", mode); + break; + case ' ': case '\t': + if(!got_num) { + mode = old_mode; + break; + } + do_blank(); + break; + case '<': + g_a4 = a2; + g_a4bank = a2bank; + break; + case 0x05: /* ctrl-e */ + show_regs(); + break; + case '\n': + *line_ptr = 0; + if(old_mode == 's') { + do_blank(); + break; + } + if(line_ptr == &linebuf[1]) { + a2 = a1 | (hex_line_len - 1); + show_hex_mem(a1bank,a1,a2bank,a2, -1); + a1 = a2 + 1; + } else { + if(got_num == 1 || mode == 's') { + do_blank(); + } + } + break; + case 'w': + read_line(w_buff, W_BUF_LEN); + break; + default: + printf("\nUnrecognized command: %s\n",linebuf); + *line_ptr = 0; + break; + } + } + + } + printf("Console closed.\n"); + +} + +word32 +dis_get_memory_ptr(word32 addr) +{ + word32 tmp1, tmp2, tmp3; + + tmp1 = get_memory_c(addr, 0); + tmp2 = get_memory_c(addr + 1, 0); + tmp3 = get_memory_c(addr + 2, 0); + + return (tmp3 << 16) + (tmp2 << 8) + tmp1; +} + +void +show_one_toolset(FILE *toolfile, int toolnum, word32 addr) +{ + word32 rout_addr; + int num_routs; + int i; + + num_routs = dis_get_memory_ptr(addr); + fprintf(toolfile, "Tool 0x%02x, table: 0x%06x, num_routs:%03x\n", + toolnum, addr, num_routs); + + for(i = 1; i < num_routs; i++) { + rout_addr = dis_get_memory_ptr(addr + 4*i); + fprintf(toolfile, "%06x = %02x%02x\n", rout_addr, i, toolnum); + } +} + +void +show_toolset_tables(word32 a2bank, word32 addr) +{ + FILE *toolfile; + word32 tool_addr; + int num_tools; + int i; + + addr = (a2bank << 16) + (addr & 0xffff); + + toolfile = fopen("tool_set_info", "w"); + if(toolfile == 0) { + fprintf(stderr, "fopen of tool_set_info failed: %d\n", errno); + x_exit(2); + } + + num_tools = dis_get_memory_ptr(addr); + fprintf(toolfile, "There are 0x%02x tools using ptr at %06x\n", + num_tools, addr); + + for(i = 1; i < num_tools; i++) { + tool_addr = dis_get_memory_ptr(addr + 4*i); + show_one_toolset(toolfile, i, tool_addr); + } + + fclose(toolfile); +} + + +#ifndef TEST65 +void +do_gen_test(int got_num, int base_seed) +{ + /* dummy */ +} +#endif + +void +set_bp(word32 _addr,enum mode_breakpoint _mode, const char* _patch, const char* _check) +{ + int count; + + //printf("About to set BP at %06x\n", _addr); + count = g_num_breakpoints; + if(count >= MAX_BREAK_POINTS) { + printf("Too many (0x%02x) breakpoints set!\n", count); + return; + } + + g_breakpts[count].addr = _addr; + g_breakpts[count].mode = _mode; + g_breakpts[count].patch = _patch; + g_breakpts[count].check = _check; + g_num_breakpoints = count + 1; + fixup_brks(); +} + +void +show_bp() +{ + int i; + + printf("Showing breakpoints set\n"); + for(i = 0; i < g_num_breakpoints; i++) + { + printf("bp:%02x: %06x ", i, g_breakpts[i].addr); + if (g_breakpts[i].mode&BRK_READ) + printf("R"); + if (g_breakpts[i].mode&BRK_WRITE) + printf("W"); + if (g_breakpts[i].mode&BRK_X) + printf("X"); + if (g_breakpts[i].mode&BRK_PATCH) + printf("P"); + if (g_breakpts[i].mode&BRK_STOP) + printf("B"); + if (g_breakpts[i].mode&BRK_SLOWSPEED) + printf("S"); + if (g_breakpts[i].mode&BRK_DEFAULTSPEED) + printf("D"); + if (g_breakpts[i].mode&BRK_MESSAGE) + printf("M:%s",g_breakpts[i].patch); + + if (g_breakpts[i].check && g_breakpts[i].check[0]) + printf(" *"); + + printf("\n"); + } +} + +void +delete_bp(word32 addr) +{ + int count; + int hit; + int i; + + printf("About to delete BP at %06x\n", addr); + count = g_num_breakpoints; + + hit = -1; + for(i = 0; i < count; i++) { + if(g_breakpts[i].addr == addr) { + hit = i; + break; + } + } + + if(hit < 0) { + printf("Breakpoint not found!\n"); + } else { + printf("Deleting brkpoint #0x%02x\n", hit); + for(i = hit+1; i < count; i++) { + g_breakpts[i-1] = g_breakpts[i]; + } + g_num_breakpoints = count - 1; + setup_pageinfo(); + } + + show_bp(); +} + +void +do_blank() +{ + int tmp, i; + + switch(old_mode) { + case 's': + tmp = a2; + if(tmp == 0) tmp = 1; + g_sim65816.enter_debug = 0; + for(i = 0; i < tmp; i++) { + g_stepping = 1; + do_step(); + if(g_sim65816.enter_debug || g_sim65816.halt_sim != 0) { + if(g_sim65816.halt_sim != HALT_EVENT) { + break; + } + } + } + list_kpc = g_sim65816.engine.kpc; + /* video_update_through_line(262); */ + break; + case ':': + set_memory_c(((a3bank << 16) + a3), a2, 0); + a3++; + mode = old_mode; + break; + case '.': + case 0: + xam_mem(-1); + break; + case ',': + xam_mem(16); + break; + case '+': + printf("%x\n", a1 + a2); + break; + case '-': + printf("%x\n", a1 - a2); + break; + default: + printf("Unknown mode at space: %d\n", old_mode); + break; + } +} + +void +do_go() +{ + + #ifdef ACTIVEGS + { + extern void disableConsole(); + disableConsole(); + } + #endif + + /* also called by do_step */ + + g_config_control_panel = 0; + clear_halt(); + + run_prog(); + show_regs(); + g_config_control_panel = 1; +} + +void +do_step() +{ + int size; + int size_mem_imm, size_x_imm; + + do_go(); + + size_mem_imm = 2; + if(g_sim65816.engine.psr & 0x20) { + size_mem_imm = 1; + } + size_x_imm = 2; + if(g_sim65816.engine.psr & 0x10) { + size_x_imm = 1; + } + size = do_dis(stdout, g_sim65816.engine.kpc, size_mem_imm, size_x_imm, 0, 0); +} + +void +xam_mem(int count) +{ + show_hex_mem(a1bank, a1, a2bank, a2, count); + a1 = a2 + 1; +} + +void +show_hex_mem(int startbank, word32 start, int endbank, word32 end, int count) +{ + char ascii[MAXNUM_HEX_PER_LINE]; + word32 i; + int val, offset; + + if(count < 0) { + count = 16 - (start & 0xf); + } + + offset = 0; + ascii[0] = 0; + printf("Showing hex mem: bank: %x, start: %x, end: %x\n", + startbank, start, end); + for(i = start; i <= end; i++) { + if( (i==start) || (count == 16) ) { + printf("%04x:",i); + } + printf(" %02x", get_memory_c((startbank <<16) + i, 0)); + val = get_memory_c((startbank << 16) + i, 0) & 0x7f; + if(val < 32 || val >= 0x7f) { + val = '.'; + } + ascii[offset++] = val; + ascii[offset] = 0; + count--; + if(count <= 0) { + printf(" %s\n", ascii); + offset = 0; + ascii[0] = 0; + count = 16; + } + } + if(offset > 0) { + printf(" %s\n", ascii); + } +} + + +int +read_line(char *buf, int len) +{ + int space_left; + int ret; +#ifndef _WIN32 + int flags, flags_save; + + /* Unix */ + flags = fcntl(0, F_GETFL, 0); + flags_save = flags; + if(flags == -1) { + return 0; + } + ret = fcntl(0, F_SETFL, flags | O_NONBLOCK); + if(ret == -1) { + return 0; + } +#endif + space_left = len; + + buf[0] = 0; + ret = 0; + while(space_left > 0) { +#ifdef _WIN32 + ret = win_nonblock_read_stdin(0, buf, 1); +#else + /* Unix */ + ret = read(0, buf, 1); +#endif + if(ret <= 0) { + micro_sleep(15.0/60.0); + if(errno == EAGAIN) { + /* it would block, so no chars--do update */ + video_update(); + ret = 0; + continue; + } + printf("read ret %d, errno: %d\n", ret, errno); + if(errno == EAGAIN || errno == EINTR) { + ret = 0; + continue; + } + break; + } + space_left -= ret; + if(buf[ret-1] == 0x0a) { + break; + } + buf = &buf[ret]; + } +#ifndef _WIN32 + (void)fcntl(0, F_SETFL, flags_save); +#endif + + return (len-space_left); +} + +void +do_debug_list() +{ + int i; + int size; + int size_mem_imm, size_x_imm; + + if(got_num) { + list_kpc = (a2bank << 16) + (a2 & 0xffff); + } + printf("%d=m %d=x %d=LCBANK\n", (g_sim65816.engine.psr >> 5)&1, + (g_sim65816.engine.psr >> 4) & 1, (g_moremem.g_c068_statereg & 0x4) >> 2); + + size_mem_imm = 2; + if(g_sim65816.engine.psr & 0x20) { + size_mem_imm = 1; + } + size_x_imm = 2; + if(g_sim65816.engine.psr & 0x10) { + size_x_imm = 1; + } + for(i=0;i<20;i++) { + size = do_dis(stdout, list_kpc, size_mem_imm, + size_x_imm, 0, 0); + list_kpc += size; + } +} + +void +dis_do_memmove() +{ + word32 val; + + printf("Memory move from %02x/%04x.%04x to %02x/%04x\n", a1bank, a1, a2, g_a4bank, g_a4); + while(a1 <= (a2 & 0xffff)) { + val = get_memory_c((a1bank << 16) + a1, 0); + set_memory_c((g_a4bank << 16) + g_a4, val, 0); + a1++; + g_a4++; + } + a1 = a1 & 0xffff; + g_a4 = g_a4 & 0xffff; +} + +void +dis_do_pattern_search() +{ + printf("Memory pattern search for %04x in %02x/%04x.%04x\n", g_a4, a1bank, a1, a2); +} + +void +dis_do_compare() +{ + word32 val1, val2; + + printf("Memory Compare from %02x/%04x.%04x with %02x/%04x\n", a1bank, a1, a2, g_a4bank, g_a4); + while(a1 <= (a2 & 0xffff)) { + val1 = get_memory_c((a1bank << 16) + a1, 0); + val2 = get_memory_c((g_a4bank << 16) + g_a4, 0); + if(val1 != val2) { + printf("%02x/%04x: %02x vs %02x\n", a1bank, a1, val1, val2); + } + a1++; + g_a4++; + } + a1 = a1 & 0xffff; + g_a4 = g_a4 & 0xffff; +} + +void +do_debug_unix() +{ + char localbuf[LINE_SIZE]; + word32 offset, len; + int fd, ret; + int load, save; + int i; + + load = 0; save = 0; + switch(*line_ptr++) { + case 'l': case 'L': + printf("Loading.."); + load = 1; + break; + case 's': case 'S': + printf("Saving..."); + save = 1; + break; + default: + printf("Unknown unix command: %c\n", *(line_ptr-1)); + *line_ptr = 0; + return; + } + while(*line_ptr == ' ' || *line_ptr == '\t') { + line_ptr++; + } + i = 0; + while(i < LINE_SIZE) { + localbuf[i++] = *line_ptr++; + if(*line_ptr==' ' || *line_ptr=='\t' || *line_ptr == '\n') { + break; + } + } + localbuf[i] = 0; + + + printf("About to open: %s,len: %d\n", localbuf, (int)strlen(localbuf)); + if(load) { + fd = open(localbuf,O_RDONLY | O_BINARY); + } else { + fd = open(localbuf,O_WRONLY | O_CREAT | O_BINARY, 0x1b6); + } + if(fd < 0) { + printf("Open %s failed: %d\n", localbuf, fd); + printf("errno: %d\n", errno); + return; + } + if(load) { + offset = a1 & 0xffff; + len = 0x20000 - offset; + } else { + if(old_mode == '.') { + len = a2 - a1 + 1; + } else { + len = 0x100; + } + } + if(load) { + if(a1bank >= 0xe0 && a1bank < 0xe2) { + ret = read(fd,(char*)&g_slow_memory_ptr[((a1bank & 1)<<16)+a1],len); + } else { + ret = read(fd,(char*)&g_memory_ptr[(a1bank << 16) + a1],len); + } + } else { + if(a1bank >= 0xe0 && a1bank < 0xe2) { + ret = write(fd,(char*)&g_slow_memory_ptr[((a1bank & 1)<<16)+a1],len); + } else { + ret = write(fd,(char*)&g_memory_ptr[(a1bank << 16) + a1],len); + } + } + printf("Read/write: addr %06x for %04x bytes, ret: %x bytes\n", + (a1bank << 16) + a1, len, ret); + if(ret < 0) { + printf("errno: %d\n", errno); + } + a1 = a1 + ret; +} + +void +do_debug_load() +{ + printf("Sorry, can't load now\n"); +} + + +int +do_dis(FILE *outfile, word32 kpc, int accsize, int xsize, + int op_provided, word32 instr) +{ + char buffer[150]; + const char *out; + int args, type; + int opcode; + word32 val; + word32 oldkpc; + word32 dtype; + int signed_val; + + oldkpc = kpc; + if(op_provided) { + opcode = (instr >> 24) & 0xff; + } else { + opcode = (int)get_memory_c(kpc, 0) & 0xff; + } + + kpc++; + + dtype = disas_types[opcode]; + out = disas_opcodes[opcode]; + type = dtype & 0xff; + args = dtype >> 8; + + if(args > 3) { + if(args == 4) { + args = accsize; + } else if(args == 5) { + args = xsize; + } + } + + val = -1; + switch(args) { + case 0: + val = 0; + break; + case 1: + if(op_provided) { + val = instr & 0xff; + } else { + val = get_memory_c(kpc, 0); + } + break; + case 2: + if(op_provided) { + val = instr & 0xffff; + } else { + val = get_memory16_c(kpc, 0); + } + break; + case 3: + if(op_provided) { + val = instr & 0xffffff; + } else { + val = get_memory24_c(kpc, 0); + } + break; + default: + fprintf(stderr, "args out of rang: %d, opcode: %08x\n", + args, opcode); + break; + } + kpc += args; + + if(!op_provided) { + instr = (opcode << 24) | (val & 0xffffff); + } + + switch(type) { + case ABS: + if(args != 2) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t$%04x",out,val); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case ABSX: + if(args != 2) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t$%04x,X",out,val); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case ABSY: + if(args != 2) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t$%04x,Y",out,val); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case ABSLONG: + if(args != 3) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t$%06x",out,val); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case ABSIND: + if(args != 2) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t($%04x)",out,val); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case ABSXIND: + if(args != 2) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t($%04x,X)",out,val); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case IMPLY: + if(args != 0) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s",out); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case ACCUM: + if(args != 0) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s",out); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case IMMED: + if(args == 1) { + sprintf(buffer,"%s\t#$%02x",out,val); + } else if(args == 2) { + sprintf(buffer,"%s\t#$%04x",out,val); + } else { + printf("arg # mismatch for opcode %x\n", opcode); + } + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case JUST8: + if(args != 1) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t$%02x",out,val); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case DLOC: + if(args != 1) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t$%02x",out,val); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case DLOCX: + if(args != 1) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t$%02x,X",out,val); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case DLOCY: + if(args != 1) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t$%02x,Y",out,val); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case LONG: + if(args != 3) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t$%06x",out,val); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case LONGX: + if(args != 3) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t$%06x,X",out,val); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case DLOCIND: + if(args != 1) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t($%02x)",out,val); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case DLOCINDY: + if(args != 1) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t($%02x),Y",out,val); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case DLOCXIND: + if(args != 1) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t($%02x,X)",out,val); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case DLOCBRAK: + if(args != 1) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t[$%02x]",out,val); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case DLOCBRAKY: + if(args != 1) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t[$%02x],y",out,val); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case DISP8: + if(args != 1) { + printf("arg # mismatch for opcode %x\n", opcode); + } + signed_val = (signed char)val; + sprintf(buffer,"%s\t$%04x",out, + (word32)(kpc+(signed_val)) & 0xffff); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case DISP8S: + if(args != 1) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t$%02x,S",out,(word32)(byte)(val)); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case DISP8SINDY: + if(args != 1) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t($%02x,S),Y",out,(word32)(byte)(val)); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case DISP16: + if(args != 2) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t$%04x", out, + (word32)(kpc+(signed)(word16)(val)) & 0xffff); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case MVPMVN: + if(args != 2) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t$%02x,$%02x",out,val&0xff,val>>8); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + case SEPVAL: + case REPVAL: + if(args != 1) { + printf("arg # mismatch for opcode %x\n", opcode); + } + sprintf(buffer,"%s\t#$%02x",out,val); + show_line(outfile, oldkpc,instr,args+1,buffer); + break; + default: + printf("argument type: %d unexpected\n", type); + break; + } + + return(args+1); +} + +void +show_line(FILE *outfile, word32 kaddr, word32 operand, int size, + char *string) +{ + int i; + int opcode; + +// fprintf(outfile, "%02x/%04x: ", kaddr >> 16, kaddr & 0xffff); + printf("%02x/%04x: ", kaddr >> 16, kaddr & 0xffff); + + opcode = (operand >> 24) & 0xff; +// fprintf(outfile,"%02x ", opcode); + printf("%02x ", opcode); + + for(i=1;i> 8; + } + for(;i<5;i++) { + // fprintf(outfile, " "); + printf(" "); + } + //fprintf(outfile,"%s\n", string); + printf("%s\n", string); + +} + +void +halt_printf(const char *fmt, ...) +{ + va_list args; + + va_start(args, fmt); + vprintf(fmt, args); + va_end(args); +#ifdef _DEBUG +// set_halt(HALT_WANTTOBRK); +#endif + set_halt(1); +} + +void +halt2_printf(const char *fmt, ...) +{ + va_list args; + + va_start(args, fmt); + vprintf(fmt, args); + va_end(args); + + set_halt(2); +} + diff --git a/kegs/Src/disas.h b/kegs/Src/disas.h new file mode 100644 index 0000000..dc61580 --- /dev/null +++ b/kegs/Src/disas.h @@ -0,0 +1,204 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +enum { + ABS = 1, + ABSX, + ABSY, + ABSLONG, + ABSIND, + ABSXIND, + IMPLY, + ACCUM, + IMMED, + JUST8, + DLOC, + DLOCX, + DLOCY, + LONG, + LONGX, + DLOCIND, + DLOCINDY, + DLOCXIND, + DLOCBRAK, + DLOCBRAKY, + DISP8, + DISP8S, + DISP8SINDY, + DISP16, + MVPMVN, + REPVAL, + SEPVAL +}; + + +const char * const disas_opcodes[256] = { + "BRK", "ORA", "COP", "ORA", "TSB", "ORA", "ASL", "ORA", /* 00-07 */ + "PHP", "ORA", "ASL", "PHD", "TSB", "ORA", "ASL", "ORA", /* 08-0f */ + "BPL", "ORA", "ORA", "ORA", "TRB", "ORA", "ASL", "ORA", /* 10-17 */ + "CLC", "ORA", "INC", "TCS", "TRB", "ORA", "ASL", "ORA", /* 18-1f */ + "JSR", "AND", "JSL", "AND", "BIT", "AND", "ROL", "AND", /* 20-27 */ + "PLP", "AND", "ROL", "PLD", "BIT", "AND", "ROL", "AND", /* 28-2f */ + "BMI", "AND", "AND", "AND", "BIT", "AND", "ROL", "AND", /* 30-37 */ + "SEC", "AND", "DEC", "TSC", "BIT", "AND", "ROL", "AND", /* 38-3f */ + "RTI", "EOR", "WDM", "EOR", "MVP", "EOR", "LSR", "EOR", /* 40-47 */ + "PHA", "EOR", "LSR", "PHK", "JMP", "EOR", "LSR", "EOR", /* 48-4f */ + "BVC", "EOR", "EOR", "EOR", "MVN", "EOR", "LSR", "EOR", /* 50-57 */ + "CLI", "EOR", "PHY", "TCD", "JMP", "EOR", "LSR", "EOR", /* 58-5f */ + "RTS", "ADC", "PER", "ADC", "STZ", "ADC", "ROR", "ADC", /* 60-67 */ + "PLA", "ADC", "ROR", "RTL", "JMP", "ADC", "ROR", "ADC", /* 68-6f */ + "BVS", "ADC", "ADC", "ADC", "STZ", "ADC", "ROR", "ADC", /* 70-77 */ + "SEI", "ADC", "PLY", "TDC", "JMP", "ADC", "ROR", "ADC", /* 78-7f */ + "BRA", "STA", "BRL", "STA", "STY", "STA", "STX", "STA", /* 80-87 */ + "DEY", "BIT", "TXA", "PHB", "STY", "STA", "STX", "STA", /* 88-8f */ + "BCC", "STA", "STA", "STA", "STY", "STA", "STX", "STA", /* 90-97 */ + "TYA", "STA", "TXS", "TXY", "STZ", "STA", "STZ", "STA", /* 98-9f */ + "LDY", "LDA", "LDX", "LDA", "LDY", "LDA", "LDX", "LDA", /* a0-a7 */ + "TAY", "LDA", "TAX", "PLB", "LDY", "LDA", "LDX", "LDA", /* a8-af */ + "BCS", "LDA", "LDA", "LDA", "LDY", "LDA", "LDX", "LDA", /* b0-b7 */ + "CLV", "LDA", "TSX", "TYX", "LDY", "LDA", "LDX", "LDA", /* b8-bf */ + "CPY", "CMP", "REP", "CMP", "CPY", "CMP", "DEC", "CMP", /* c0-c7 */ + "INY", "CMP", "DEX", "WAI", "CPY", "CMP", "DEC", "CMP", /* c8-cf */ + "BNE", "CMP", "CMP", "CMP", "PEI", "CMP", "DEC", "CMP", /* d0-d7 */ + "CLD", "CMP", "PHX", "STP", "JML", "CMP", "DEC", "CMP", /* d8-df */ + "CPX", "SBC", "SEP", "SBC", "CPX", "SBC", "INC", "SBC", /* e0-e7 */ + "INX", "SBC", "NOP", "XBA", "CPX", "SBC", "INC", "SBC", /* e8-ef */ + "BEQ", "SBC", "SBC", "SBC", "PEA", "SBC", "INC", "SBC", /* f0-f7 */ + "SED", "SBC", "PLX", "XCE", "JSR", "SBC", "INC", "SBC", /* f8-ff */ +}; + + +const word32 disas_types[256] = { + JUST8+0x100, DLOCXIND+0x100, /* 00-01 */ + JUST8+0x100, DISP8S+0x100, /* 02-03 */ + DLOC+0x100, DLOC+0x100, /* 04-05 */ + DLOC+0x100, DLOCBRAK+0x100, /* 06-07 */ + IMPLY+0x000, IMMED+0x400, /* 08-9 */ + ACCUM+0x000, IMPLY+0x000, /* 0a-b */ + ABS+0x200, ABS+0x200, /* c-d */ + ABS+0x200, LONG+0x300, /* e-f */ + DISP8+0x100, DLOCINDY+0x100, /* 10-11 */ + DLOCIND+0x100, DISP8SINDY+0x100, /* 12-13 */ + DLOC+0x100, DLOCX+0x100, /* 14-15 */ + DLOCX+0x100, DLOCBRAKY+0x100, /* 16-17 */ + IMPLY+0x000, ABSY+0x200, /* 18-19 */ + ACCUM+0x000, IMPLY+0x000, /* 1a-1b */ + ABS+0x200, ABSX+0x200, /* 1c-1d */ + ABSX+0x200, LONGX+0x300, /* 1e-1f */ + ABS+0x200, DLOCXIND+0x100, /* 20-21 */ + ABSLONG+0x300, DISP8S+0x100, /* 22-23 */ + DLOC+0x100, DLOC+0x100, /* 24-25 */ + DLOC+0x100, DLOCBRAK+0x100, /* 26-27 */ + IMPLY+0x000, IMMED+0x400, /* 28-29 */ + ACCUM+0x000, IMPLY+0x000, /* 2a-2b */ + ABS+0x200, ABS+0x200, /* 2c-2d */ + ABS+0x200, LONG+0x300, /* 2e-2f */ + DISP8+0x100, DLOCINDY+0x100, /* 30-31 */ + DLOCIND+0x100, DISP8SINDY+0x100, /* 32-33 */ + DLOCX+0x100, DLOCX+0x100, /* 34-35 */ + DLOCX+0x100, DLOCBRAKY+0x100, /* 36-37 */ + IMPLY+0x000, ABSY+0x200, /* 38-39 */ + ACCUM+0x000, IMPLY+0x000, /* 3a-3b */ + ABSX+0x200, ABSX+0x200, /* 3c-3d */ + ABSX+0x200, LONGX+0x300, /* 3e-3f */ + IMPLY+0x000, DLOCXIND+0x100, /* 40-41 */ + JUST8+0x100, DISP8S+0x100, /* 42-43 */ + MVPMVN+0x200, DLOC+0x100, /* 44-45 */ + DLOC+0x100, DLOCBRAK+0x100, /* 46-47 */ + IMPLY+0x000, IMMED+0x400, /* 48-49 */ + ACCUM+0x000, IMPLY+0x000, /* 4a-4b */ + ABS+0x200, ABS+0x200, /* 4c-4d */ + ABS+0x200, LONG+0x300, /* 4e-4f */ + DISP8+0x100, DLOCINDY+0x100, /* 50-51 */ + DLOCIND+0x100, DISP8SINDY+0x100, /* 52-53 */ + MVPMVN+0x200, DLOCX+0x100, /* 54-55 */ + DLOCX+0x100, DLOCBRAKY+0x100, /* 56-57 */ + IMPLY+0x000, ABSY+0x200, /* 58-59 */ + IMPLY+0x000, IMPLY+0x000, /* 5a-5b */ + LONG+0x300, ABSX+0x200, /* 5c-5d */ + ABSX+0x200, LONGX+0x300, /* 5e-5f */ + IMPLY+0x000, DLOCXIND+0x100, /* 60-61 */ + DISP16+0x200, DISP8S+0x100, /* 62-63 */ + DLOC+0x100, DLOC+0x100, /* 64-65 */ + DLOC+0x100, DLOCBRAK+0x100, /* 66-67 */ + IMPLY+0x000, IMMED+0x400, /* 68-69 */ + ACCUM+0x000, IMPLY+0x000, /* 6a-6b */ + ABSIND+0x200, ABS+0x200, /* 6c-6d */ + ABS+0x200, LONG+0x300, /* 6e-6f */ + DISP8+0x100, DLOCINDY+0x100, /* 70-71 */ + DLOCIND+0x100, DISP8SINDY+0x100, /* 72-73 */ + DLOCX+0x100, DLOCX+0x100, /* 74-75 */ + DLOCX+0x100, DLOCBRAKY+0x100, /* 76-77 */ + IMPLY+0x000, ABSY+0x200, /* 78-79 */ + IMPLY+0x000, IMPLY+0x000, /* 7a-7b */ + ABSXIND+0x200, ABSX+0x200, /* 7c-7d */ + ABSX+0x200, LONGX+0x300, /* 7e-7f */ + DISP8+0x100, DLOCXIND+0x100, /* 80-81 */ + DISP16+0x200, DISP8S+0x100, /* 82-83 */ + DLOC+0x100, DLOC+0x100, /* 84-85 */ + DLOC+0x100, DLOCBRAK+0x100, /* 86-87 */ + IMPLY+0x000, IMMED+0x400, /* 88-89 */ + IMPLY+0x000, IMPLY+0x000, /* 8a-8b */ + ABS+0x200, ABS+0x200, /* 8c-8d */ + ABS+0x200, LONG+0x300, /* 8e-8f */ + DISP8+0x100, DLOCINDY+0x100, /* 90-91 */ + DLOCIND+0x100, DISP8SINDY+0x100, /* 92-93 */ + DLOCX+0x100, DLOCX+0x100, /* 94-95 */ + DLOCY+0x100, DLOCBRAKY+0x100, /* 96-97 */ + IMPLY+0x000, ABSY+0x200, /* 98-99 */ + IMPLY+0x000, IMPLY+0x000, /* 9a-9b */ + ABS+0x200, ABSX+0x200, /* 9c-9d */ + ABSX+0x200, LONGX+0x300, /* 9e-9f */ + IMMED+0x500, DLOCXIND+0x100, /* a0-a1 */ + IMMED+0x500, DISP8S+0x100, /* a2-a3 */ + DLOC+0x100, DLOC+0x100, /* a4-a5 */ + DLOC+0x100, DLOCBRAK+0x100, /* a6-a7 */ + IMPLY+0x000, IMMED+0x400, /* a8-a9 */ + IMPLY+0x000, IMPLY+0x000, /* aa-ab */ + ABS+0x200, ABS+0x200, /* ac-ad */ + ABS+0x200, LONG+0x300, /* ae-af */ + DISP8+0x100, DLOCINDY+0x100, /* b0-b1 */ + DLOCIND+0x100, DISP8SINDY+0x100, /* b2-b3 */ + DLOCX+0x100, DLOCX+0x100, /* b4-b5 */ + DLOCY+0x100, DLOCBRAKY+0x100, /* b6-b7 */ + IMPLY+0x000, ABSY+0x200, /* b8-b9 */ + IMPLY+0x000, IMPLY+0x000, /* ba-bb */ + ABSX+0x200, ABSX+0x200, /* bc-bd */ + ABSY+0x200, LONGX+0x300, /* be-bf */ + IMMED+0x500, DLOCXIND+0x100, /* c0-c1 */ + REPVAL+0x100, DISP8S+0x100, /* c2-c3 */ + DLOC+0x100, DLOC+0x100, /* c4-c5 */ + DLOC+0x100, DLOCBRAK+0x100, /* c6-c7 */ + IMPLY+0x000, IMMED+0x400, /* c8-c9 */ + IMPLY+0x000, IMPLY+0x000, /* ca-cb */ + ABS+0x200, ABS+0x200, /* cc-cd */ + ABS+0x200, LONG+0x300, /* ce-cf */ + DISP8+0x100, DLOCINDY+0x100, /* d0-d1 */ + DLOCIND+0x100, DISP8SINDY+0x100, /* d2-d3 */ + DLOC+0x100, DLOCX+0x100, /* d4-d5 */ + DLOCX+0x100, DLOCBRAKY+0x100, /* d6-d7 */ + IMPLY+0x000, ABSY+0x200, /* d8-d9 */ + IMPLY+0x000, IMPLY+0x000, /* da-db */ + ABSIND+0x200, ABSX+0x200, /* dc-dd */ + ABSX+0x200, LONGX+0x300, /* de-df */ + IMMED+0x500, DLOCXIND+0x100, /* e0-e1 */ + SEPVAL+0x100, DISP8S+0x100, /* e2-e3 */ + DLOC+0x100, DLOC+0x100, /* e4-e5 */ + DLOC+0x100, DLOCBRAK+0x100, /* e6-e7 */ + IMPLY+0x000, IMMED+0x400, /* e8-e9 */ + IMPLY+0x000, IMPLY+0x000, /* ea-eb */ + ABS+0x200, ABS+0x200, /* ec-ed */ + ABS+0x200, LONG+0x300, /* ee-ef */ + DISP8+0x100, DLOCINDY+0x100, /* f0-f1 */ + DLOCIND+0x100, DISP8SINDY+0x100, /* f2-f3 */ + IMMED+0x200, DLOCX+0x100, /* f4-f5 */ + DLOCX+0x100, DLOCBRAKY+0x100, /* f6-f7 */ + IMPLY+0x000, ABSY+0x200, /* f8-f9 */ + IMPLY+0x000, IMPLY+0x000, /* fa-fb */ + ABSXIND+0x200, ABSX+0x200, /* fc-fd */ + ABSX+0x200, LONGX+0x300, /* fe-ff */ +}; + diff --git a/kegs/Src/driver.cpp b/kegs/Src/driver.cpp new file mode 100644 index 0000000..9151748 --- /dev/null +++ b/kegs/Src/driver.cpp @@ -0,0 +1,15 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "driver.h" + +s_driver g_driver; + +void s_driver::init(void (*_driver)()) +{ + if (_driver!=NULL) + _driver(); +} \ No newline at end of file diff --git a/kegs/Src/driver.h b/kegs/Src/driver.h new file mode 100644 index 0000000..ee12780 --- /dev/null +++ b/kegs/Src/driver.h @@ -0,0 +1,62 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "defc.h" + +enum ui_msg +{ + LOADING_ON=1304, + LOADING_OFF, + REFRESH_STATUS, + SHOW_CURSOR +}; + +enum { + PLATFORM_WINDOWS = 100, + PLATFORM_MACOSX, + PLATFORM_IOS, + PLATFORM_ANDROID }; + + +enum { + ENV_DESKTOP = 2000, + ENV_TOUCH, + ENV_BROWSER }; + + + + + +struct s_driver +{ + int platform ; + int environment; + char activegsxml[1024]; + void (*x_config_load_roms)(); + void (*x_post_event)(const char* _msg); + int (*x_handle_fkey)(int _key); + void (*x_handle_state)(); + void (*x_handle_state_on_paint)(float _width,float _height); + void (*x_apply_default_options)(void*); + void (*x_fixed_memory_ptr)(); + void (*x_notify_eject)(); + + + s_driver() + { + memset(this,0,sizeof(*this)); + } + + void init(void (*_driver)()); + void setLaunchXML(const char* _xml){ + if (_xml!=NULL) + strcpy(activegsxml,_xml); + else + activegsxml[0] = 0; + } +}; + +extern s_driver g_driver; \ No newline at end of file diff --git a/kegs/Src/engine_c.cpp b/kegs/Src/engine_c.cpp new file mode 100644 index 0000000..2730deb --- /dev/null +++ b/kegs/Src/engine_c.cpp @@ -0,0 +1,1155 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "defc.h" +#include "protos_engine_c.h" +#include "moremem.h" +#include "sim65816.h" +#include "iwm.h" +#include "video.h" +#include "driver.h" +#if 0 +# define LOG_PC +/* define FCYCS_PTR_FCYCLES_ROUND_SLOW to get accurate 1MHz write to slow mem*/ +/* this might help joystick emulation in some Apple //gs games like */ +/* Madness */ +# define FCYCS_PTR_FCYCLES_ROUND_SLOW FCYCLES_ROUND; *fcycs_ptr = fcycles; +#endif + +#ifndef FCYCS_PTR_FCYCLES_ROUND_SLOW +# define FCYCS_PTR_FCYCLES_ROUND_SLOW +#endif + +/* +extern int halt_sim; +extern int g_code_red; +extern int g_ignore_halts; +extern int g_user_halt_bad; +extern double g_fcycles_stop; +extern double g_last_vbl_dcycs; +//extern double g_sim65816.g_cur_dcycs; +extern int g_wait_pending; +extern int g_testing; +extern int g_num_brk; +extern int g_num_cop; + +*/ + +extern byte *g_memory_ptr; +extern byte *g_rom_fc_ff_ptr; +extern byte *g_rom_cards_ptr; +extern byte *g_dummy_memory1_ptr; + +// OG Need allocated memory +extern byte *g_slow_memory_ptr_allocated; +extern byte *g_memory_ptr_allocated; +extern byte *g_rom_fc_ff_ptr_allocated; +extern byte *g_rom_cards_ptr_allocated; +extern byte *g_dummy_memory1_ptr_allocated; + +/* +extern int g_num_breakpoints; +extern word32 g_breakpts[]; +*/ + +extern Pc_log *g_log_pc_ptr; +extern Pc_log *g_log_pc_start_ptr; +extern Pc_log *g_log_pc_end_ptr; + +extern Data_log *g_log_data_ptr; +extern Data_log *g_log_data_start_ptr; +extern Data_log *g_log_data_end_ptr; + +int size_tab[] = { +#include "size_c.h" +}; + +int bogus[] = { + 0, +#include "op_routs.h" +}; + +#define FINISH(arg1, arg2) g_moremem.g_ret1 = arg1; g_moremem.g_ret2 = arg2; goto finish; +#define INC_KPC_1 kpc = (kpc & 0xff0000) + ((kpc + 1) & 0xffff); +#define INC_KPC_2 kpc = (kpc & 0xff0000) + ((kpc + 2) & 0xffff); +#define INC_KPC_3 kpc = (kpc & 0xff0000) + ((kpc + 3) & 0xffff); +#define INC_KPC_4 kpc = (kpc & 0xff0000) + ((kpc + 4) & 0xffff); + +#define CYCLES_PLUS_1 fcycles += fplus_1; +#define CYCLES_PLUS_2 fcycles += fplus_2; +#define CYCLES_PLUS_3 fcycles += fplus_3; +#define CYCLES_PLUS_4 fcycles += (fplus_1 + fplus_3); +#define CYCLES_PLUS_5 fcycles += (fplus_2 + fplus_3); +#define CYCLES_MINUS_1 fcycles -= fplus_1; +#define CYCLES_MINUS_2 fcycles -= fplus_2; + +#define CYCLES_FINISH fcycles = g_sim65816.g_fcycles_stop + fplus_1; + +#define FCYCLES_ROUND fcycles = (int)(fcycles + fplus_x_m1); + +#ifdef LOG_PC +# define LOG_PC_MACRO() \ + tmp_pc_ptr = g_log_pc_ptr++; \ + tmp_pc_ptr->dbank_kpc = (dbank << 24) + kpc; \ + tmp_pc_ptr->instr = (opcode << 24) + arg_ptr[1] + \ + (arg_ptr[2] << 8) + (arg_ptr[3] << 16); \ + tmp_pc_ptr->psr_acc = ((psr & ~(0x82)) << 16) + acc + \ + (neg << 23) + ((!zero) << 17); \ + tmp_pc_ptr->xreg_yreg = (xreg << 16) + yreg; \ + tmp_pc_ptr->stack_direct = (stack << 16) + direct; \ + tmp_pc_ptr->dcycs = fcycles + g_last_vbl_dcycs - fplus_2; \ + if(g_log_pc_ptr >= g_log_pc_end_ptr) { \ + /*halt2_printf("log_pc oflow %f\n", tmp_pc_ptr->dcycs);*/ \ + g_log_pc_ptr = g_log_pc_start_ptr; \ + } + +# define LOG_DATA_MACRO(in_addr, in_val, in_size) \ + g_log_data_ptr->dcycs = fcycles + g_last_vbl_dcycs; \ + g_log_data_ptr->addr = in_addr; \ + g_log_data_ptr->val = in_val; \ + g_log_data_ptr->size = in_size; \ + g_log_data_ptr++; \ + if(g_log_data_ptr >= g_log_data_end_ptr) { \ + g_log_data_ptr = g_log_data_start_ptr; \ + } + +#else +# define LOG_PC_MACRO() +# define LOG_DATA_MACRO(addr, val, size) +/* Just do nothing */ +#endif + + +#define GET_1BYTE_ARG arg = arg_ptr[1]; +#define GET_2BYTE_ARG arg = arg_ptr[1] + (arg_ptr[2] << 8); +#define GET_3BYTE_ARG arg = arg_ptr[1] + (arg_ptr[2] << 8) + (arg_ptr[3]<<16); + +/* HACK HACK HACK */ +#define UPDATE_PSR(dummy, old_psr) \ + if(psr & 0x100) { \ + psr |= 0x30; \ + stack = 0x100 + (stack & 0xff); \ + } \ + if((old_psr ^ psr) & 0x10) { \ + if(psr & 0x10) { \ + xreg = xreg & 0xff; \ + yreg = yreg & 0xff; \ + } \ + } \ + if(((psr & 0x4) == 0) && g_moremem.g_irq_pending) { \ + FINISH(RET_IRQ, 0); \ + } \ + if((old_psr ^ psr) & 0x20) { \ + goto recalc_accsize; \ + } + +//extern Page_info page_info_rd_wr[]; +//extern word32 slow_mem_changed[]; + +#define GET_MEMORY8(addr,dest) \ + addr_latch = (addr); \ + CYCLES_PLUS_1; \ + stat = GET_PAGE_INFO_RD(((addr) >> 8) & 0xffff); \ + wstat = PTR2WORD(stat) & 0xff; \ + ptr = stat - wstat + ((addr) & 0xff); \ + if(wstat & (1 << (31 - BANK_IO_BIT))) { \ + fcycles_tmp1 = fcycles; \ + dest = get_memory8_io_stub((addr), stat, \ + &fcycles_tmp1, fplus_x_m1); \ + fcycles = fcycles_tmp1; \ + } else { \ + dest = *ptr; \ + } + +#define GET_MEMORY(addr,dest) GET_MEMORY8(addr, dest) + +#define GET_MEMORY16(addr, dest, in_bank) \ + save_addr = addr; \ + stat = GET_PAGE_INFO_RD(((addr) >> 8) & 0xffff); \ + wstat = PTR2WORD(stat) & 0xff; \ + ptr = stat - wstat + ((addr) & 0xff); \ + if((wstat & (1 << (31 - BANK_IO_BIT))) || (((addr) & 0xff) == 0xff)) { \ + fcycles_tmp1 = fcycles; \ + dest = get_memory16_pieces_stub((addr), stat, \ + &fcycles_tmp1, fplus_ptr, in_bank); \ + fcycles = fcycles_tmp1; \ + } else { \ + CYCLES_PLUS_2; \ + dest = ptr[0] + (ptr[1] << 8); \ + } \ + addr_latch = save_addr; + +#define GET_MEMORY24(addr, dest, in_bank) \ + save_addr = addr; \ + stat = GET_PAGE_INFO_RD(((addr) >> 8) & 0xffff); \ + wstat = PTR2WORD(stat) & 0xff; \ + ptr = stat - wstat + ((addr) & 0xff); \ + if((wstat & (1 << (31 - BANK_IO_BIT))) || (((addr) & 0xfe) == 0xfe)) { \ + fcycles_tmp1 = fcycles; \ + dest = get_memory24_pieces_stub((addr), stat, \ + &fcycles_tmp1, fplus_ptr, in_bank); \ + fcycles = fcycles_tmp1; \ + } else { \ + CYCLES_PLUS_3; \ + dest = ptr[0] + (ptr[1] << 8) + (ptr[2] << 16); \ + } \ + addr_latch = save_addr; + +#define GET_MEMORY_DIRECT_PAGE16(addr, dest) \ + save_addr = addr; \ + if(psr & 0x100) { \ + if((direct & 0xff) == 0) { \ + save_addr = (save_addr & 0xff) + direct; \ + } \ + } \ + if((psr & 0x100) && (((addr) & 0xff) == 0xff)) { \ + GET_MEMORY8(save_addr, getmem_tmp); \ + save_addr = (save_addr + 1) & 0xffff; \ + if((direct & 0xff) == 0) { \ + save_addr = (save_addr & 0xff) + direct; \ + } \ + GET_MEMORY8(save_addr, dest); \ + dest = (dest << 8) + getmem_tmp; \ + } else { \ + GET_MEMORY16(save_addr, dest, 1); \ + } + + +#define PUSH8(arg) \ + SET_MEMORY8(stack, arg); \ + stack--; \ + if(psr & 0x100) { \ + stack = 0x100 | (stack & 0xff); \ + } \ + stack = stack & 0xffff; + +#define PUSH16(arg) \ + if((stack & 0xfe) == 0) { \ + /* stack will cross page! */ \ + PUSH8((arg) >> 8); \ + PUSH8(arg); \ + } else { \ + stack -= 2; \ + stack = stack & 0xffff; \ + SET_MEMORY16(stack + 1, arg, 1); \ + } + +#define PUSH16_UNSAFE(arg) \ + save_addr = (stack - 1) & 0xffff; \ + stack -= 2; \ + if(psr & 0x100) { \ + stack = 0x100 | (stack & 0xff); \ + } \ + stack = stack & 0xffff; \ + SET_MEMORY16(save_addr, arg, 1); + +#define PUSH24_UNSAFE(arg) \ + save_addr = (stack - 2) & 0xffff; \ + stack -= 3; \ + if(psr & 0x100) { \ + stack = 0x100 | (stack & 0xff); \ + } \ + stack = stack & 0xffff; \ + SET_MEMORY24(save_addr, arg, 1); + +#define PULL8(dest) \ + stack++; \ + if(psr & 0x100) { \ + stack = 0x100 | (stack & 0xff); \ + } \ + stack = stack & 0xffff; \ + GET_MEMORY8(stack, dest); + +#define PULL16(dest) \ + if((stack & 0xfe) == 0xfe) { /* page cross */ \ + PULL8(dest); \ + PULL8(pull_tmp); \ + dest = (pull_tmp << 8) + dest; \ + } else { \ + GET_MEMORY16(stack + 1, dest, 1); \ + stack = (stack + 2) & 0xffff; \ + if(psr & 0x100) { \ + stack = 0x100 | (stack & 0xff); \ + } \ + } + +#define PULL16_UNSAFE(dest) \ + stack = (stack + 1) & 0xffff; \ + if(psr & 0x100) { \ + stack = 0x100 | (stack & 0xff); \ + } \ + GET_MEMORY16(stack, dest, 1); \ + stack = (stack + 1) & 0xffff; \ + if(psr & 0x100) { \ + stack = 0x100 | (stack & 0xff); \ + } + +#define PULL24(dest) \ + if((stack & 0xfc) == 0xfc) { /* page cross */ \ + PULL8(dest); \ + PULL8(pull_tmp); \ + pull_tmp = (pull_tmp << 8) + dest; \ + PULL8(dest); \ + dest = (dest << 16) + pull_tmp; \ + } else { \ + GET_MEMORY24(stack + 1, dest, 1); \ + stack = (stack + 3) & 0xffff; \ + if(psr & 0x100) { \ + stack = 0x100 | (stack & 0xff); \ + } \ + } + +#define SET_MEMORY8(addr, val) \ + LOG_DATA_MACRO(addr, val, 8); \ + CYCLES_PLUS_1; \ + stat = GET_PAGE_INFO_WR(((addr) >> 8) & 0xffff); \ + wstat = PTR2WORD(stat) & 0xff; \ + ptr = stat - wstat + ((addr) & 0xff); \ + if(wstat) { \ + fcycles_tmp1 = fcycles; \ + set_memory8_io_stub((addr), val, stat, &fcycles_tmp1, \ + fplus_x_m1); \ + fcycles = fcycles_tmp1; \ + } else { \ + *ptr = val; \ + } + + +#define SET_MEMORY16(addr, val, in_bank) \ + LOG_DATA_MACRO(addr, val, 16); \ + stat = GET_PAGE_INFO_WR(((addr) >> 8) & 0xffff); \ + wstat = PTR2WORD(stat) & 0xff; \ + ptr = stat - wstat + ((addr) & 0xff); \ + if((wstat) || (((addr) & 0xff) == 0xff)) { \ + fcycles_tmp1 = fcycles; \ + set_memory16_pieces_stub((addr), (val), \ + &fcycles_tmp1, fplus_1, fplus_x_m1, in_bank); \ + fcycles = fcycles_tmp1; \ + } else { \ + CYCLES_PLUS_2; \ + ptr[0] = (val); \ + ptr[1] = (val) >> 8; \ + } + +#define SET_MEMORY24(addr, val, in_bank) \ + LOG_DATA_MACRO(addr, val, 24); \ + stat = GET_PAGE_INFO_WR(((addr) >> 8) & 0xffff); \ + wstat = PTR2WORD(stat) & 0xff; \ + ptr = stat - wstat + ((addr) & 0xff); \ + if((wstat) || (((addr) & 0xfe) == 0xfe)) { \ + fcycles_tmp1 = fcycles; \ + set_memory24_pieces_stub((addr), (val), \ + &fcycles_tmp1, fplus_ptr, in_bank); \ + fcycles = fcycles_tmp1; \ + } else { \ + CYCLES_PLUS_3; \ + ptr[0] = (val); \ + ptr[1] = (val) >> 8; \ + ptr[2] = (val) >> 16; \ + } + + +int validate_breakpoint(word32 _addr, const char* check) +{ + if (check==NULL || *check==0) + return 1; + + while (check[0] || check[1]) + { + char p = g_memory_ptr[_addr++]; + if (p!=*check++) return 0; + + } + return 1; +} + +void +check_breakpoints(word32 _addr,enum mode_breakpoint _mode) +{ + int count; + int i; + + count = g_num_breakpoints; + for(i = 0; i < count; i++) { + if((g_breakpts[i].addr & 0xffffff) == _addr + && g_breakpts[i].mode & _mode) + { + + if (!validate_breakpoint(_addr,g_breakpts[i].check)) + continue ; + + if (g_breakpts[i].mode & BRK_MESSAGE) + { + + const char* msg = g_breakpts[i].patch; + if (g_driver.x_post_event) + g_driver.x_post_event(msg); + } + + if (g_breakpts[i].mode & BRK_SLOWSPEED) + { + g_moremem.g_c036_val_speed &= ~0x80; + } + if (g_breakpts[i].mode & BRK_DEFAULTSPEED) + { + g_moremem.g_c036_val_speed |= 0x80; + } + + if (g_breakpts[i].mode & BRK_PATCH) + { + const char*s = g_breakpts[i].patch; + if (s) + { + printf("patching.."); + while(*s) + { + #define READC(C) (C<='9'?C-'0':C<='Z'?C-'A'+10:C-'a'+10) + #define READX(P) READC(*P)*16+READC(*(P+1)) + int a = 0; + while(*s && *s!=':') + { + a = a*256+READX(s); + s+=2; + } + s++; + while(*s && *s!=';') + { + byte b = READX(s); + s+=2; + g_memory_ptr[a++]=b; + } + if (*s) s++; + } + g_breakpts[i].mode = (enum mode_breakpoint)( g_breakpts[i].mode & ~BRK_PATCH); + + } + } + if (g_breakpts[i].mode & BRK_STOP) + halt2_printf("Hit breakpoint at %06x\n", _addr); + } + } +} + +word32 +get_memory8_io_stub(word32 addr, byte *stat, double *fcycs_ptr, + double fplus_x_m1) +{ + double fcycles; + word32 wstat; + byte *ptr; + + wstat = PTR2WORD(stat) & 0xff; + if(wstat & BANK_BREAK) { + check_breakpoints(addr,BRK_READ); + } + fcycles = *fcycs_ptr; + if(wstat & BANK_IO2_TMP) { + FCYCLES_ROUND; + *fcycs_ptr = fcycles; + return get_memory_io((addr), fcycs_ptr); + } else { + ptr = stat - wstat + (addr & 0xff); + return *ptr; + } +} + +word32 +get_memory16_pieces_stub(word32 addr, byte *stat, double *fcycs_ptr, + Fplus *fplus_ptr, int in_bank) +{ + byte *ptr; + double fcycles, fcycles_tmp1; + double fplus_1; + double fplus_x_m1; + word32 addrp1; + word32 wstat; + word32 addr_latch; + word32 ret; + word32 tmp1; + + fcycles = *fcycs_ptr; + fplus_1 = fplus_ptr->plus_1; + fplus_x_m1 = fplus_ptr->plus_x_minus_1; + GET_MEMORY8(addr, tmp1); + addrp1 = addr + 1; + if(in_bank) { + addrp1 = (addr & 0xff0000) + (addrp1 & 0xffff); + } + GET_MEMORY8(addrp1, ret); + *fcycs_ptr = fcycles; + return (ret << 8) + (tmp1); +} + +word32 +get_memory24_pieces_stub(word32 addr, byte *stat, double *fcycs_ptr, + Fplus *fplus_ptr, int in_bank) +{ + byte *ptr; + double fcycles, fcycles_tmp1; + double fplus_1; + double fplus_x_m1; + word32 addrp1, addrp2; + word32 wstat; + word32 addr_latch; + word32 ret; + word32 tmp1; + word32 tmp2; + + fcycles = *fcycs_ptr; + fplus_1 = fplus_ptr->plus_1; + fplus_x_m1 = fplus_ptr->plus_x_minus_1; + GET_MEMORY8(addr, tmp1); + addrp1 = addr + 1; + if(in_bank) { + addrp1 = (addr & 0xff0000) + (addrp1 & 0xffff); + } + GET_MEMORY8(addrp1, tmp2); + addrp2 = addr + 2; + if(in_bank) { + addrp2 = (addr & 0xff0000) + (addrp2 & 0xffff); + } + GET_MEMORY8(addrp2, ret); + *fcycs_ptr = fcycles; + return (ret << 16) + (tmp2 << 8) + tmp1; +} + +void +set_memory8_io_stub(word32 addr, word32 val, byte *stat, double *fcycs_ptr, + double fplus_x_m1) +{ + double fcycles; + word32 setmem_tmp1; + word32 tmp1, tmp2; + byte *ptr; + word32 wstat; + + /* + if (Verbose) + { + if ( (addr >0x2000 && addr < 0x4000) && !(g_moremem.g_c068_statereg & 0x40)) + { + printf("writing page 0\n"); + set_halt(HALT_WANTTOBRK); + Verbose=0; + } + + if ( (addr >0x4000 && addr < 0x6000) && (g_moremem.g_c068_statereg & 0x40)) + { + printf("writing page 1\n"); + set_halt(HALT_WANTTOBRK); + Verbose=0; + + } + } + */ + + + wstat = PTR2WORD(stat) & 0xff; + /* + if(wstat & (1 << (31 - BANK_BREAK_BIT))) { + check_breakpoints(addr,BRK_WRITE); + } + */ + ptr = stat - wstat + ((addr) & 0xff); \ + fcycles = *fcycs_ptr; + if(wstat & (1 << (31 - BANK_IO2_BIT))) { + FCYCLES_ROUND; + *fcycs_ptr = fcycles; + set_memory_io((addr), val, fcycs_ptr); + } else if(wstat & (1 << (31 - BANK_SHADOW_BIT))) { + FCYCS_PTR_FCYCLES_ROUND_SLOW; + tmp1 = (addr & 0xffff); + setmem_tmp1 = g_slow_memory_ptr[tmp1]; + *ptr = val; + if(setmem_tmp1 != ((val) & 0xff)) { + g_slow_memory_ptr[tmp1] = val; + s_video.slow_mem_changed[tmp1 >> CHANGE_SHIFT] |= (1 << (31-((tmp1 >> SHIFT_PER_CHANGE) & 0x1f))); + } + } else if(wstat & (1 << (31 - BANK_SHADOW2_BIT))) { + FCYCS_PTR_FCYCLES_ROUND_SLOW; + tmp2 = (addr & 0xffff); + tmp1 = 0x10000 + tmp2; + setmem_tmp1 = g_slow_memory_ptr[tmp1]; + *ptr = val; + if(setmem_tmp1 != ((val) & 0xff)) { + g_slow_memory_ptr[tmp1] = val; + s_video.slow_mem_changed[tmp2 >>CHANGE_SHIFT] |= (1 <<(31-((tmp2 >> SHIFT_PER_CHANGE) & 0x1f))); + } + } else { + /* breakpoint only */ + *ptr = val; + } + // wstat = PTR2WORD(stat) & 0xff; + if(wstat & (1 << (31 - BANK_BREAK_BIT))) { + check_breakpoints(addr,BRK_WRITE); + } +} + +void +set_memory16_pieces_stub(word32 addr, word32 val, double *fcycs_ptr, + double fplus_1, double fplus_x_m1, int in_bank) +{ + byte *ptr; + byte *stat; + double fcycles, fcycles_tmp1; + word32 addrp1; + word32 wstat; + + fcycles = *fcycs_ptr; + SET_MEMORY8(addr, val); + addrp1 = addr + 1; + if(in_bank) { + addrp1 = (addr & 0xff0000) + (addrp1 & 0xffff); + } + SET_MEMORY8(addrp1, val >> 8); + + *fcycs_ptr = fcycles; +} + +void +set_memory24_pieces_stub(word32 addr, word32 val, double *fcycs_ptr, + Fplus *fplus_ptr, int in_bank) +{ + byte *ptr; + byte *stat; + double fcycles, fcycles_tmp1; + double fplus_1; + double fplus_x_m1; + word32 addrp1, addrp2; + word32 wstat; + + fcycles = *fcycs_ptr; + fplus_1 = fplus_ptr->plus_1; + fplus_x_m1 = fplus_ptr->plus_x_minus_1; + SET_MEMORY8(addr, val); + addrp1 = addr + 1; + if(in_bank) { + addrp1 = (addr & 0xff0000) + (addrp1 & 0xffff); + } + SET_MEMORY8(addrp1, val >> 8); + addrp2 = addr + 2; + if(in_bank) { + addrp2 = (addr & 0xff0000) + (addrp2 & 0xffff); + } + SET_MEMORY8(addrp2, val >> 16); + + *fcycs_ptr = fcycles; +} + + +word32 +get_memory_c(word32 addr, int cycs) +{ + byte *stat; + byte *ptr; + double fcycles, fcycles_tmp1; + double fplus_1; + double fplus_x_m1; + word32 addr_latch; + word32 wstat; + word32 ret; + + fcycles = 0; + fplus_1 = 0; + fplus_x_m1 = 0; + GET_MEMORY8(addr, ret); + return ret; +} + +word32 +get_memory16_c(word32 addr, int cycs) +{ + double fcycs; + + fcycs = 0; + return get_memory_c(addr, (int)fcycs) + + (get_memory_c(addr+1, (int)fcycs) << 8); +} + +word32 +get_memory24_c(word32 addr, int cycs) +{ + double fcycs; + + fcycs = 0; + return get_memory_c(addr, (int)fcycs) + + (get_memory_c(addr+1, (int)fcycs) << 8) + + (get_memory_c(addr+2, (int)fcycs) << 16); +} + +void +set_memory_c(word32 addr, word32 val, int cycs) +{ + byte *stat; + byte *ptr; + double fcycles, fcycles_tmp1; + double fplus_1; + double fplus_x_m1; + word32 wstat; + + fcycles = g_sim65816.g_cur_dcycs - g_sim65816.g_last_vbl_dcycs; + fplus_1 = 0; + fplus_x_m1 = 0; + SET_MEMORY8(addr, val); +} + +void +set_memory16_c(word32 addr, word32 val, int cycs) +{ + byte *stat; + byte *ptr; + double fcycles, fcycles_tmp1; + double fplus_1, fplus_2; + double fplus_x_m1; + word32 wstat; + + fcycles = g_sim65816.g_cur_dcycs - g_sim65816.g_last_vbl_dcycs; + fplus_1 = 0; + fplus_2 = 0; + fplus_x_m1 = 0; + SET_MEMORY16(addr, val, 0); +} + +void +set_memory24_c(word32 addr, word32 val, int cycs) +{ + set_memory_c(addr, val, 0); + set_memory_c(addr + 1, val >> 8, 0); + set_memory_c(addr + 2, val >> 16, 0); +} + +word32 +do_adc_sbc8(word32 in1, word32 in2, word32 psr, int sub) +{ + word32 sum, carry, overflow; + word32 zero; + int decimal; + + overflow = 0; + decimal = psr & 8; + if(sub) { + in2 = (in2 ^ 0xff); + } + if(!decimal) { + sum = (in1 & 0xff) + in2 + (psr & 1); + overflow = ((sum ^ in2) >> 1) & 0x40; + } else { + /* decimal */ + sum = (in1 & 0xf) + (in2 & 0xf) + (psr & 1); + if(sub) { + if(sum < 0x10) { + sum = (sum - 0x6) & 0xf; + } + } else { + if(sum >= 0xa) { + sum = (sum - 0xa) | 0x10; + } + } + + sum = (in1 & 0xf0) + (in2 & 0xf0) + sum; + overflow = ((sum >> 2) ^ (sum >> 1)) & 0x40; + if(sub) { + if(sum < 0x100) { + sum = (sum + 0xa0) & 0xff; + } + } else { + if(sum >= 0xa0) { + sum += 0x60; + } + } + } + + zero = ((sum & 0xff) == 0); + carry = (sum >= 0x100); + if((in1 ^ in2) & 0x80) { + overflow = 0; + } + + psr = psr & (~0xc3); + psr = psr + (sum & 0x80) + overflow + (zero << 1) + carry; + + return (psr << 16) + (sum & 0xff); +} + +word32 +do_adc_sbc16(word32 in1, word32 in2, word32 psr, int sub) +{ + word32 sum, carry, overflow; + word32 tmp1, tmp2; + word32 zero; + int decimal; + + overflow = 0; + decimal = psr & 8; + if(!decimal) { + if(sub) { + in2 = (in2 ^ 0xffff); + } + sum = in1 + in2 + (psr & 1); + overflow = ((sum ^ in2) >> 9) & 0x40; + } else { + /* decimal */ + if(sub) { + tmp1 = do_adc_sbc8(in1 & 0xff, in2 & 0xff, psr, sub); + psr = (tmp1 >> 16); + tmp2 = do_adc_sbc8((in1 >> 8) & 0xff, + (in2 >> 8) & 0xff, psr, sub); + in2 = (in2 ^ 0xfffff); + } else { + tmp1 = do_adc_sbc8(in1 & 0xff, in2 & 0xff, psr, sub); + psr = (tmp1 >> 16); + tmp2 = do_adc_sbc8((in1 >> 8) & 0xff, + (in2 >> 8) &0xff, psr, sub); + } + sum = ((tmp2 & 0xff) << 8) + (tmp1 & 0xff) + + (((tmp2 >> 16) & 1) << 16); + overflow = (tmp2 >> 16) & 0x40; + } + + zero = ((sum & 0xffff) == 0); + carry = (sum >= 0x10000); + if((in1 ^ in2) & 0x8000) { + overflow = 0; + } + + psr = psr & (~0xc3); + psr = psr + ((sum & 0x8000) >> 8) + overflow + (zero << 1) + carry; + + return (psr << 16) + (sum & 0xffff); +} + +/* +// moved to moremem +int g_ret1; +int g_ret2; +*/ + + +void fixed_memory_ptrs_init() +{ + /* set g_slow_memory_ptr, g_rom_fc_ff_ptr, g_dummy_memory1_ptr, */ + /* and rom_cards_ptr */ + + // OG Filled allocated ptr parameter to free the memory + g_slow_memory_ptr = memalloc_align(128*1024, 0, (void**)&g_slow_memory_ptr_allocated); + g_dummy_memory1_ptr = memalloc_align(256, 1024, (void**)&g_dummy_memory1_ptr_allocated); + g_rom_fc_ff_ptr = memalloc_align(256*1024, 512, (void**)&g_rom_fc_ff_ptr_allocated); + g_rom_cards_ptr = memalloc_align(16*256, 256, (void**)&g_rom_cards_ptr_allocated); + + if (g_driver.x_fixed_memory_ptr!=NULL) + g_driver.x_fixed_memory_ptr(); + +#if 0 + printf("g_memory_ptr: %08x, dummy_mem: %08x, slow_mem_ptr: %08x\n", + (word32)g_memory_ptr, (word32)g_dummy_memory1_ptr, + (word32)g_slow_memory_ptr); + printf("g_rom_fc_ff_ptr: %08x, g_rom_cards_ptr: %08x\n", + (word32)g_rom_fc_ff_ptr, (word32)g_rom_cards_ptr); + printf("page_info_rd = %08x, page_info_wr end = %08x\n", + (word32)&(page_info_rd_wr[0]), + (word32)&(page_info_rd_wr[PAGE_INFO_PAD_SIZE+0x1ffff].rd_wr)); +#endif +} + +// OG added fixed_memory_ptrs_shut +void fixed_memory_ptrs_shut() +{ + + free(g_slow_memory_ptr_allocated); + free(g_dummy_memory1_ptr_allocated); + free(g_rom_fc_ff_ptr_allocated); + free(g_rom_cards_ptr_allocated); + g_slow_memory_ptr=g_slow_memory_ptr_allocated= NULL; + g_dummy_memory1_ptr = g_dummy_memory1_ptr_allocated = NULL; + g_rom_fc_ff_ptr = g_rom_fc_ff_ptr_allocated = NULL; + g_rom_cards_ptr = g_rom_cards_ptr = NULL; +} + + +word32 +get_itimer() +{ +#if defined(__i386) && defined(__GNUC__) + /* Here's my bad ia32 asm code to do rdtsc */ + /* Linux source uses: */ + /* asm volatile("rdtsc" : "=a"(ret) : : "edx"); */ + /* asm volatile("rdtsc" : "=%eax"(ret) : : "%edx"); */ + + /* GCC bug report 2001-03/msg00786.html used: */ + /*register word64 dtmp; */ + /*asm volatile ("rdtsc" : "=A" (dtmp)); */ + /*return (word32)dtmp; */ + + register word32 ret; + + asm volatile ("rdtsc;movl %%eax,%0" : "=r"(ret) : : "%eax","%edx"); + + return ret; +#else +# if defined(__POWERPC__) && defined(__GNUC__) + register word32 ret; + + asm volatile ("mftb %0" : "=r"(ret)); + return ret; +# else + return 0; +# endif +#endif +} + +void +set_halt_act(int val) +{ + if(val == 1 && r_sim65816.g_ignore_halts && !r_sim65816.g_user_halt_bad) { + g_sim65816.g_code_red++; + } else { + g_sim65816.halt_sim |= val; + g_sim65816.g_fcycles_stop = (double)0.0; + } +} + +void +clr_halt_act() +{ + g_sim65816.halt_sim = 0; +} + +word32 +get_remaining_operands(word32 addr, word32 opcode, word32 psr, Fplus *fplus_ptr) +{ + byte *stat; + byte *ptr; + double fcycles, fcycles_tmp1; + double fplus_1, fplus_2, fplus_3; + double fplus_x_m1; + word32 addr_latch; + word32 wstat; + word32 save_addr; + word32 arg; + word32 addrp1; + int size; + + fcycles = 0; + fplus_1 = 0; + fplus_2 = 0; + fplus_3 = 0; + fplus_x_m1 = 0; + + size = size_tab[opcode]; + + addrp1 = (addr & 0xff0000) + ((addr + 1) & 0xffff); + switch(size) { + case 0: + arg = 0; /* no args */ + break; + case 1: + GET_MEMORY8(addrp1, arg); + break; /* 1 arg, already done */ + case 2: + GET_MEMORY16(addrp1, arg, 1); + break; + case 3: + GET_MEMORY24(addrp1, arg, 1); + break; + case 4: + if(psr & 0x20) { + GET_MEMORY8(addrp1, arg); + } else { + GET_MEMORY16(addrp1, arg, 1); + } + break; + case 5: + if(psr & 0x10) { + GET_MEMORY8(addrp1, arg); + } else { + GET_MEMORY16(addrp1, arg, 1); + } + break; + default: + printf("Unknown size: %d\n", size); + arg = 0; + x_exit(-2); + } + + return arg; +} + +#define FETCH_OPCODE \ + addr = kpc; \ + CYCLES_PLUS_2; \ + stat = GET_PAGE_INFO_RD(((addr) >> 8) & 0xffff); \ + wstat = PTR2WORD(stat) & 0xff; \ + ptr = stat - wstat + ((addr) & 0xff); \ + arg_ptr = ptr; \ + opcode = *ptr; \ + if((wstat & (1 << (31-BANK_IO_BIT))) || ((addr & 0xff) > 0xfc)) {\ + if(wstat & BANK_BREAK) { \ + check_breakpoints(addr,BRK_X); \ + } \ + if((addr & 0xfffff0) == 0x00c700) { \ + if(addr == 0xc700) { \ + FINISH(RET_C700, 0); \ + } else if(addr == 0xc70a) { \ + FINISH(RET_C70A, 0); \ + } else if(addr == 0xc70d) { \ + FINISH(RET_C70D, 0); \ + } \ + } \ + if(wstat & (1 << (31 - BANK_IO2_BIT))) { \ + FCYCLES_ROUND; \ + fcycles_tmp1 = fcycles; \ + opcode = get_memory_io((addr), &fcycles_tmp1); \ + fcycles = fcycles_tmp1; \ + } else { \ + opcode = *ptr; \ + } \ + arg = get_remaining_operands(addr, opcode, psr, fplus_ptr);\ + arg_ptr = (byte *)&tmp_bytes; \ + arg_ptr[1] = arg; \ + arg_ptr[2] = arg >> 8; \ + arg_ptr[3] = arg >> 16; \ + } + +#ifdef _DEBUG + word32 kpc; +#endif + +int +enter_engine(Engine_reg *engine_ptr) +{ + register byte *ptr; + byte *arg_ptr; + Pc_log *tmp_pc_ptr; + byte *stat; + word32 wstat; + word32 arg; +#ifndef _DEBUG + register word32 kpc; +#endif + register word32 acc; + register word32 xreg; + register word32 yreg; + word32 stack; + word32 dbank; + register word32 direct; + register word32 psr; + register word32 zero; + register word32 neg; + word32 getmem_tmp; + word32 save_addr; + word32 pull_tmp; + word32 tmp_bytes; + double fcycles; + Fplus *fplus_ptr; + double fplus_1; + double fplus_2; + double fplus_3; + double fplus_x_m1; + double fcycles_tmp1; + + word32 opcode; + register word32 addr; + word32 addr_latch; + word32 tmp1, tmp2; + + + tmp_pc_ptr = 0; + + kpc = engine_ptr->kpc; + acc = engine_ptr->acc; + xreg = engine_ptr->xreg; + yreg = engine_ptr->yreg; + stack = engine_ptr->stack; + dbank = engine_ptr->dbank; + direct = engine_ptr->direct; + psr = engine_ptr->psr; + fcycles = engine_ptr->fcycles; + fplus_ptr = engine_ptr->fplus_ptr; + zero = !(psr & 2); + neg = (psr >> 7) & 1; + + fplus_1 = fplus_ptr->plus_1; + fplus_2 = fplus_ptr->plus_2; + fplus_3 = fplus_ptr->plus_3; + fplus_x_m1 = fplus_ptr->plus_x_minus_1; + + g_moremem.g_ret1 = 0; + g_moremem.g_ret2 = 0; + +recalc_accsize: + if(psr & 0x20) { + while(fcycles <= g_sim65816.g_fcycles_stop) { +#if 0 + if((neg & ~1) || (psr & (~0x1ff))) { + halt_printf("psr = %04x\n", psr); + } +#endif + + FETCH_OPCODE; + + LOG_PC_MACRO(); + + switch(opcode) { + default: + halt_printf("acc8 unk op: %02x\n", opcode); + arg = 9 +#define ACC8 +#include "defs_instr.h" + * 2; + break; +#include "8inst_c.h" + break; + } + } + } else { + while(fcycles <= g_sim65816.g_fcycles_stop) { + FETCH_OPCODE; + LOG_PC_MACRO(); + + switch(opcode) { + default: + halt_printf("acc16 unk op: %02x\n", opcode); + arg = 9 +#undef ACC8 +#include "defs_instr.h" + * 2; + break; +#include "16inst_c.h" + break; + } + } + } + +finish: + engine_ptr->kpc = kpc; + engine_ptr->acc = acc; + engine_ptr->xreg = xreg; + engine_ptr->yreg = yreg; + engine_ptr->stack = stack; + engine_ptr->dbank = dbank; + engine_ptr->direct = direct; + engine_ptr->fcycles = fcycles; + + psr = psr & (~0x82); + psr |= (neg << 7); + psr |= ((!zero) << 1); + + engine_ptr->psr = psr; + + return (g_moremem.g_ret1 << 28) + g_moremem.g_ret2; +} + + +int g_engine_c_mode = 1; + +int defs_instr_start_8 = 0; +int defs_instr_end_8 = 0; +int defs_instr_start_16 = 0; +int defs_instr_end_16 = 0; +int op_routs_start = 0; +int op_routs_end = 0; + + diff --git a/kegs/Src/graphcounter.h b/kegs/Src/graphcounter.h new file mode 100644 index 0000000..01cd49a --- /dev/null +++ b/kegs/Src/graphcounter.h @@ -0,0 +1,53 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + +#if defined(_DEBUG) && defined(_WIN32) +//#define ENABLE_GRAPH +#endif + +#if defined(USE_RASTER) && defined(_DEBUG) +#define BORDER_SCAN +#endif + +#ifdef BORDER_SCAN +void change_border(int,int); +void draw_border(); +void reset_border(); +#define RESET_BORDER() reset_border() +#define CHANGE_BORDER(ID,X) change_border(ID,X) +#define DRAW_BORDER() draw_border() +#else +#define CHANGE_BORDER(ID,X) +#define DRAW_BORDER() +#define RESET_BORDER() + +#endif + + +#ifdef ENABLE_GRAPH + +#define NB_GRAPH 4 +#define NB_GRAPH_VALUES 300 +#define NB_GRAPH_HEIGHT 100 + +class s_graph +{ + float min[NB_GRAPH]; + float max[NB_GRAPH]; + float ref[NB_GRAPH]; + int color[NB_GRAPH]; + float values[NB_GRAPH][NB_GRAPH_VALUES]; + +public: + s_graph(); + void add_graph(int _counter, float _value, int _vblcount); + void draw_graph(Kimage* _dest, int _curvbl); +}; + +extern s_graph g_graph; +#endif // ENABLE_GRAPH \ No newline at end of file diff --git a/kegs/Src/iwm.cpp b/kegs/Src/iwm.cpp new file mode 100644 index 0000000..5b8f2ae --- /dev/null +++ b/kegs/Src/iwm.cpp @@ -0,0 +1,2378 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "defc.h" +#include "moremem.h" +#include "sim65816.h" +#include "iwm.h" +#include "config.h" +#include "sound.h" + +s_iwm g_iwm; + +const byte phys_to_dos_sec[] = { + 0x00, 0x07, 0x0e, 0x06, 0x0d, 0x05, 0x0c, 0x04, + 0x0b, 0x03, 0x0a, 0x02, 0x09, 0x01, 0x08, 0x0f +}; + +const byte phys_to_prodos_sec[] = { + 0x00, 0x08, 0x01, 0x09, 0x02, 0x0a, 0x03, 0x0b, + 0x04, 0x0c, 0x05, 0x0d, 0x06, 0x0e, 0x07, 0x0f +}; + + +const byte to_disk_byte[] = { + 0x96, 0x97, 0x9a, 0x9b, 0x9d, 0x9e, 0x9f, 0xa6, + 0xa7, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb2, 0xb3, +/* 0x10 */ + 0xb4, 0xb5, 0xb6, 0xb7, 0xb9, 0xba, 0xbb, 0xbc, + 0xbd, 0xbe, 0xbf, 0xcb, 0xcd, 0xce, 0xcf, 0xd3, +/* 0x20 */ + 0xd6, 0xd7, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, + 0xdf, 0xe5, 0xe6, 0xe7, 0xe9, 0xea, 0xeb, 0xec, +/* 0x30 */ + 0xed, 0xee, 0xef, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, + 0xf7, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff +}; + +/*const*/ int g_track_bytes_35[] = { + 0x200*12, + 0x200*11, + 0x200*10, + 0x200*9, + 0x200*8 +}; + +/*const*/ int g_track_nibs_35[] = { + 816*12, + 816*11, + 816*10, + 816*9, + 816*8 +}; + + +/* prototypes for IWM special routs */ +int iwm_read_data_35(Disk *dsk, int fast_disk_emul, double dcycs); +int iwm_read_data_525(Disk *dsk, int fast_disk_emul, double dcycs); +void iwm_write_data_35(Disk *dsk, word32 val, int fast_disk_emul, double dcycs); +void iwm_write_data_525(Disk *dsk, word32 val, int fast_disk_emul,double dcycs); + +void +iwm_init_drive(Disk *dsk, int smartport, int drive, int disk_525) +{ + dsk->dcycs_last_read = 0.0; + dsk->name_ptr[0] = 0; + dsk->partition_name[0] = 0; + dsk->partition_num = -1; + dsk->fd = -1; + dsk->force_size = 0; + dsk->image_start = 0; + dsk->image_size = 0; + dsk->smartport = smartport; + dsk->disk_525 = disk_525; + dsk->drive = drive; + dsk->cur_qtr_track = 0; + dsk->image_type = 0; + dsk->vol_num = 254; + dsk->write_prot = 1; + dsk->write_through_to_unix = 0; + dsk->disk_dirty = 0; + dsk->just_ejected = 0; + dsk->last_phase = 0; + dsk->nib_pos = 0; + dsk->num_tracks = 0; + dsk->trks = 0; + +} + +void +disk_set_num_tracks(Disk *dsk, int num_tracks) +{ + int i; + + if(dsk->trks != 0) { + /* This should not be necessary! */ + free(dsk->trks); + halt_printf("Needed to free dsk->trks: %p\n", dsk->trks); + } + dsk->num_tracks = num_tracks; + dsk->trks = (Trk *)malloc(num_tracks * sizeof(Trk)); + + for(i = 0; i < num_tracks; i++) { + dsk->trks[i].dsk = dsk; + dsk->trks[i].nib_area = 0; + dsk->trks[i].track_dirty = 0; + dsk->trks[i].overflow_size = 0; + dsk->trks[i].track_len = 0; + dsk->trks[i].unix_pos = -1; + dsk->trks[i].unix_len = -1; + } +} + +void +iwm_init() +{ + int val; + int i; + + for(i = 0; i < 2; i++) { + iwm_init_drive(&(g_iwm.iwm.drive525[i]), 0, i, 1); + iwm_init_drive(&(g_iwm.iwm.drive35[i]), 0, i, 0); + } + + for(i = 0; i < MAX_C7_DISKS; i++) { + iwm_init_drive(&(g_iwm.iwm.smartport[i]), 1, i, 0); + } + + if(g_iwm.from_disk_byte_valid == 0) { + for(i = 0; i < 256; i++) { + g_iwm.from_disk_byte[i] = -1; + } + for(i = 0; i < 64; i++) { + val = to_disk_byte[i]; + g_iwm.from_disk_byte[val] = i; + } + g_iwm.from_disk_byte_valid = 1; + } else { + halt_printf("iwm_init called twice!\n"); + } + + iwm_reset(); +} + +// OG Added shut function to IWM +// Free the memory, and more important free the open handle onto the disk +void +iwm_shut() +{ + int i; + for(i = 0; i < 2; i++) { + eject_disk(&g_iwm.iwm.drive525[i]); + eject_disk(&g_iwm.iwm.drive35[i]); + } + + for(i = 0; i < MAX_C7_DISKS; i++) { + eject_disk(&g_iwm.iwm.smartport[i]); + } + + g_iwm.from_disk_byte_valid = 0; +} + +void +iwm_reset() +{ + g_iwm.iwm.q6 = 0; + g_iwm.iwm.q7 = 0; + g_iwm.iwm.motor_on = 0; + g_iwm.iwm.motor_on35 = 0; + g_iwm.iwm.motor_off = 0; + g_iwm.iwm.motor_off_vbl_count = 0; + g_iwm.iwm.step_direction35 = 0; + g_iwm.iwm.head35 = 0; + g_iwm.iwm.drive_select = 0; + g_iwm.iwm.iwm_mode = 0; + g_iwm.iwm.enable2 = 0; + g_iwm.iwm.reset = 0; + g_iwm.iwm.iwm_phase[0] = 0; + g_iwm.iwm.iwm_phase[1] = 0; + g_iwm.iwm.iwm_phase[2] = 0; + g_iwm.iwm.iwm_phase[3] = 0; + g_iwm.iwm.previous_write_val = 0; + g_iwm.iwm.previous_write_bits = 0; + + g_iwm.g_iwm_motor_on = 0; + g_moremem.g_c031_disk35 = 0; +} + +void +draw_iwm_status(int line, char *buf) +{ + const char *flag[2][2]; + int apple35_sel; + + flag[0][0] = " "; + flag[0][1] = " "; + flag[1][0] = " "; + flag[1][1] = " "; + + apple35_sel = (g_moremem.g_c031_disk35 >> 6) & 1; + if(g_iwm.g_iwm_motor_on) { + flag[apple35_sel][g_iwm.iwm.drive_select] = "*"; + } + + // OG Pass motorOn information to the hosting program + extern void x_notify_motor_status(int _motorOn,int _slot,int _drive, int _curtrack); + + int curtrack=0; + if (apple35_sel) + curtrack = g_iwm.iwm.drive35[g_iwm.iwm.drive_select].cur_qtr_track ; + else + curtrack = g_iwm.iwm.drive525[g_iwm.iwm.drive_select].cur_qtr_track >> 2 ; + + x_notify_motor_status(g_iwm.g_iwm_motor_on,apple35_sel?5:6,g_iwm.iwm.drive_select+1,curtrack); + + sprintf(buf, "s6d1:%2d%s s6d2:%2d%s s5d1:%2d/%d%s " + "s5d2:%2d/%d%s fast_disk_emul:%d,%d c036:%02x", + g_iwm.iwm.drive525[0].cur_qtr_track >> 2, flag[0][0], + g_iwm.iwm.drive525[1].cur_qtr_track >> 2, flag[0][1], + g_iwm.iwm.drive35[0].cur_qtr_track >> 1, + g_iwm.iwm.drive35[0].cur_qtr_track & 1, flag[1][0], + g_iwm.iwm.drive35[1].cur_qtr_track >> 1, + g_iwm.iwm.drive35[1].cur_qtr_track & 1, flag[1][1], + g_iwm.g_fast_disk_emul, g_iwm.g_slow_525_emul_wr, g_moremem.g_c036_val_speed); + + video_update_status_line(line, buf); +} + + +void +iwm_flush_disk_to_unix(Disk *dsk) +{ + byte buffer[0x4000]; + int num_dirty; + int j; + int ret; + int unix_pos; + int unix_len; + + if(dsk->disk_dirty == 0 || dsk->write_through_to_unix == 0) { + return; + } + + printf("Writing disk %s to Unix\n", dsk->name_ptr); + dsk->disk_dirty = 0; + num_dirty = 0; + + /* Dirty data! */ + for(j = 0; j < dsk->num_tracks; j++) { + + ret = disk_track_to_unix(dsk, j, &(buffer[0])); + + if(ret != 1 && ret != 0) { + printf("iwm_flush_disk_to_unix ret: %d, cannot write " + "image to unix\n", ret); + halt_printf("Adjusting image not to write through!\n"); + dsk->write_through_to_unix = 0; + break; + } + + if(ret != 1) { + /* not at an even track, or not dirty */ + continue; + } + if((j & 3) != 0 && dsk->disk_525) { + halt_printf("Valid data on a non-whole trk: %03x\n", j); + continue; + } + + num_dirty++; + + /* Write it out */ + unix_pos = dsk->trks[j].unix_pos; + unix_len = dsk->trks[j].unix_len; + if(unix_pos < 0 || unix_len < 0x1000) { + halt_printf("Disk:%s trk:%d, unix_pos:%08x, len:%08x\n", + dsk->name_ptr, j, unix_pos, unix_len); + break; + } + + ret = lseek(dsk->fd, unix_pos, SEEK_SET); + if(ret != unix_pos) { + halt_printf("lseek 525: %08x, errno: %d\n", ret, errno); + } + + ret = write(dsk->fd, &(buffer[0]), unix_len); + if(ret != unix_len) { + printf("write: %08x, errno:%d, qtrk: %02x, disk: %s\n", + ret, errno, j, dsk->name_ptr); + } + } + + if(num_dirty == 0) { + halt_printf("Drive %s was dirty, but no track was dirty!\n", + dsk->name_ptr); + } + +} + +/* Check for dirty disk 3 times a second */ + +void +iwm_vbl_update(int doit_3_persec) +{ + Disk *dsk; + int motor_on; + int i; + + if(g_iwm.iwm.motor_on && g_iwm.iwm.motor_off) { + if((word32)g_iwm.iwm.motor_off_vbl_count <= g_sim65816.g_vbl_count) { + printf("Disk timer expired, drive off: %08x\n", + g_sim65816.g_vbl_count); + g_iwm.iwm.motor_on = 0; + g_iwm.iwm.motor_off = 0; + } + } + + if(!doit_3_persec) { + return; + } + + motor_on = g_iwm.iwm.motor_on; + if(g_moremem.g_c031_disk35 & 0x40) { + motor_on = g_iwm.iwm.motor_on35; + } + + if(motor_on == 0 || g_iwm.iwm.motor_off) { + /* Disk not spinning, see if any dirty tracks to flush */ + /* out to Unix */ + for(i = 0; i < 2; i++) { + dsk = &(g_iwm.iwm.drive525[i]); + iwm_flush_disk_to_unix(dsk); + } + for(i = 0; i < 2; i++) { + dsk = &(g_iwm.iwm.drive35[i]); + iwm_flush_disk_to_unix(dsk); + } + } +} + + +void +iwm_show_stats() +{ + printf("IWM stats: q7,q6: %d, %d, reset,enable2: %d,%d, mode: %02x\n", + g_iwm.iwm.q7, g_iwm.iwm.q6, g_iwm.iwm.reset, g_iwm.iwm.enable2, g_iwm.iwm.iwm_mode); + printf("motor: %d,%d, motor35:%d drive: %d, c031:%02x " + "phs: %d %d %d %d\n", + g_iwm.iwm.motor_on, g_iwm.iwm.motor_off, g_iwm.g_iwm_motor_on, + g_iwm.iwm.drive_select, g_moremem.g_c031_disk35, + g_iwm.iwm.iwm_phase[0], g_iwm.iwm.iwm_phase[1], g_iwm.iwm.iwm_phase[2], + g_iwm.iwm.iwm_phase[3]); + printf("g_iwm.iwm.drive525[0].fd: %d, [1].fd: %d\n", + g_iwm.iwm.drive525[0].fd, g_iwm.iwm.drive525[1].fd); + printf("g_iwm.iwm.drive525[0].last_phase: %d, [1].last_phase: %d\n", + g_iwm.iwm.drive525[0].last_phase, g_iwm.iwm.drive525[1].last_phase); +} + +void +iwm_touch_switches(int loc, double dcycs) +{ + Disk *dsk; + int phase; + int on; + int drive; + + if(g_iwm.iwm.reset) { + iwm_printf("IWM under reset: %d, enable2: %d\n", g_iwm.iwm.reset, + g_iwm.iwm.enable2); + } + + on = loc & 1; + drive = g_iwm.iwm.drive_select; + phase = loc >> 1; + if(g_moremem.g_c031_disk35 & 0x40) { + dsk = &(g_iwm.iwm.drive35[drive]); + } else { + dsk = &(g_iwm.iwm.drive525[drive]); + } + + + if(loc < 8) { + /* phase adjustments. See if motor is on */ + + g_iwm.iwm.iwm_phase[phase] = on; + iwm_printf("Iwm phase %d=%d, all phases: %d %d %d %d (%f)\n", + phase, on, g_iwm.iwm.iwm_phase[0], g_iwm.iwm.iwm_phase[1], + g_iwm.iwm.iwm_phase[2], g_iwm.iwm.iwm_phase[3], dcycs); + + if(g_iwm.iwm.motor_on) { + if(g_moremem.g_c031_disk35 & 0x40) { + if(phase == 3 && on) { + iwm_do_action35(dcycs); + } + } else if(on) { + /* Move apple525 head */ + iwm525_phase_change(drive, phase); + } + } + /* See if enable or reset is asserted */ + if(g_iwm.iwm.iwm_phase[0] && g_iwm.iwm.iwm_phase[2]) { + g_iwm.iwm.reset = 1; + iwm_printf("IWM reset active\n"); + } else { + g_iwm.iwm.reset = 0; + } + if(g_iwm.iwm.iwm_phase[1] && g_iwm.iwm.iwm_phase[3]) { + g_iwm.iwm.enable2 = 1; + iwm_printf("IWM ENABLE2 active\n"); + } else { + g_iwm.iwm.enable2 = 0; + } + } else { + /* loc >= 8 */ + switch(loc) { + case 0x8: + iwm_printf("Turning IWM motor off!\n"); + if(g_iwm.iwm.iwm_mode & 0x04) { + /* Turn off immediately */ + g_iwm.iwm.motor_off = 0; + g_iwm.iwm.motor_on = 0; + } else { + /* 1 second delay */ + if(g_iwm.iwm.motor_on && !g_iwm.iwm.motor_off) { + g_iwm.iwm.motor_off = 1; + g_iwm.iwm.motor_off_vbl_count = g_sim65816.g_vbl_count + + 60; + } + } + + if(g_iwm.g_iwm_motor_on || g_iwm.g_slow_525_emul_wr) { + /* recalc current speed */ + set_halt(HALT_EVENT); + } + + g_iwm.g_iwm_motor_on = 0; + g_iwm.g_slow_525_emul_wr = 0; + break; + case 0x9: + iwm_printf("Turning IWM motor on!\n"); + g_iwm.iwm.motor_on = 1; + g_iwm.iwm.motor_off = 0; + + if(g_iwm.g_iwm_motor_on == 0) { + /* recalc current speed */ + set_halt(HALT_EVENT); + } + g_iwm.g_iwm_motor_on = 1; + + break; + case 0xa: + case 0xb: + g_iwm.iwm.drive_select = on; + break; + case 0xc: + case 0xd: + g_iwm.iwm.q6 = on; + break; + case 0xe: + case 0xf: + g_iwm.iwm.q7 = on; + break; + default: + printf("iwm_touch_switches: loc: %02x unknown!\n", loc); + x_exit(2); + } + } + + if(!g_iwm.iwm.q7) { + g_iwm.iwm.previous_write_bits = 0; + } + + if((dcycs > g_iwm.g_dcycs_end_emul_wr) && g_iwm.g_slow_525_emul_wr) { + set_halt(HALT_EVENT); + g_iwm.g_slow_525_emul_wr = 0; + } +} + +void +iwm_move_to_track(Disk *dsk, int new_track) +{ + int disk_525; + int dr; + + disk_525 = dsk->disk_525; + + if(new_track < 0) { + new_track = 0; + } + if(new_track >= dsk->num_tracks) { + if(disk_525) { + new_track = dsk->num_tracks - 4; + } else { + new_track = dsk->num_tracks - 2 + g_iwm.iwm.head35; + } + + if(new_track <= 0) { + new_track = 0; + } + } + + if(dsk->cur_qtr_track != new_track) { + dr = dsk->drive + 1; + if(disk_525) { + iwm_printf("s6d%d Track: %d.%02d\n", dr, + new_track >> 2, 25* (new_track & 3)); + } else { + iwm_printf("s5d%d Track: %d Side: %d\n", dr, + new_track >> 1, new_track & 1); + } + + dsk->cur_qtr_track = new_track; + } +} + +void +iwm525_phase_change(int drive, int phase) +{ + Disk *dsk; + int qtr_track; + int last_phase; + int phase_up; + int phase_down; + int delta; + + phase_up = (phase - 1) & 3; + phase_down = (phase + 1) & 3; + + dsk = &(g_iwm.iwm.drive525[drive]); + last_phase = dsk->last_phase; + + qtr_track = dsk->cur_qtr_track; + + delta = 0; + if(last_phase == phase_up) { + delta = 2; + last_phase = phase; + } else if(last_phase == phase_down) { + delta = -2; + last_phase = phase; + } + + qtr_track += delta; + if(qtr_track < 0) + { +#ifndef ACTIVEGSKARATEKA + if(g_sim65816.g_enable_disk_sound) + play_sound(SOUND_SPIN_UP_SEARCH_1); +#else + extern void x_play_boot_sound(); + x_play_boot_sound(); +#endif + printf("GRIND...GRIND...GRIND\n"); + qtr_track = 0; + last_phase = 0; + } + else + if(qtr_track > 4*34) { + printf("Disk arm moved past track 34, moving it back\n"); + qtr_track = 4*34; + last_phase = 0; + } + + iwm_move_to_track(dsk, qtr_track); + + dsk->last_phase = last_phase; + + iwm_printf("Moving drive to qtr track: %04x (trk:%d.%02d), %d, %d, %d, " + "%d %d %d %d\n", qtr_track, qtr_track>>2, 25*(qtr_track & 3), + phase, delta, last_phase, g_iwm.iwm.iwm_phase[0], + g_iwm.iwm.iwm_phase[1], g_iwm.iwm.iwm_phase[2], g_iwm.iwm.iwm_phase[3]); + + /* sanity check stepping algorithm */ + if((qtr_track & 7) == 0) { + /* check for just access phase 0 */ + if(last_phase != 0 ) { + halt_printf("last_phase: %d!\n", last_phase); + } + } +} + +int +iwm_read_status35(double dcycs) +{ + Disk *dsk; + int drive; + int state; + int tmp; + + drive = g_iwm.iwm.drive_select; + dsk = &(g_iwm.iwm.drive35[drive]); + + if(g_iwm.iwm.motor_on) { + /* Read status */ + state = (g_iwm.iwm.iwm_phase[1] << 3) + (g_iwm.iwm.iwm_phase[0] << 2) + + ((g_moremem.g_c031_disk35 >> 6) & 2) + g_iwm.iwm.iwm_phase[2]; + + iwm_printf("Iwm status read state: %02x\n", state); + + switch(state) { + case 0x00: /* step direction */ + return g_iwm.iwm.step_direction35; + break; + case 0x01: /* lower head activate */ + /* also return instantaneous data from head */ + g_iwm.iwm.head35 = 0; + iwm_move_to_track(dsk, (dsk->cur_qtr_track & (-2))); + return (((int)dcycs) & 1); + break; + case 0x02: /* disk in place */ + /* 1 = no disk, 0 = disk */ + iwm_printf("read disk in place, num_tracks: %d\n", + dsk->num_tracks); + tmp = (dsk->num_tracks <= 0); + return tmp; + break; + case 0x03: /* upper head activate */ + /* also return instantaneous data from head */ + g_iwm.iwm.head35 = 1; + iwm_move_to_track(dsk, (dsk->cur_qtr_track | 1)); + return (((int)dcycs) & 1); + break; + case 0x04: /* disk is stepping? */ + /* 1 = not stepping, 0 = stepping */ + return 1; + break; + case 0x05: /* Unknown function of ROM 03? */ + /* 1 = or $20 into 0xe1/f24+drive, 0 = don't */ + return 1; + break; + case 0x06: /* disk is locked */ + /* 0 = locked, 1 = unlocked */ + return (!dsk->write_prot); + break; + case 0x08: /* motor on */ + /* 0 = on, 1 = off */ + return !g_iwm.iwm.motor_on35; + break; + case 0x09: /* number of sides */ + /* 1 = 2 sides, 0 = 1 side */ + return 1; + break; + case 0x0a: /* at track 0 */ + /* 1 = not at track 0, 0 = there */ + tmp = (dsk->cur_qtr_track != 0); + iwm_printf("Read at track0_35: %d\n", tmp); + return tmp; + break; + case 0x0b: /* disk ready??? */ + /* 0 = ready, 1 = not ready? */ + tmp = !g_iwm.iwm.motor_on35; + iwm_printf("Read disk ready, ret: %d\n", tmp); + return tmp; + break; + case 0x0c: /* disk switched?? */ + /* 0 = not switched, 1 = switched? */ + tmp = (dsk->just_ejected != 0); + iwm_printf("Read disk switched: %d\n", tmp); + return tmp; + break; + case 0x0d: /* false read when ejecting disk */ + return 1; + case 0x0e: /* tachometer */ + halt_printf("Reading tachometer!\n"); + return (((int)dcycs) & 1); + break; + case 0x0f: /* drive installed? */ + /* 0 = drive exists, 1 = no drive */ + if(drive) { + /* pretend no drive 1 */ + return 1; + } + return 0; + break; + default: + halt_printf("Read 3.5 status, state: %02x\n", state); + return 1; + } + } else { + iwm_printf("Read 3.5 status with drive off!\n"); + return 1; + } +} + +void +iwm_do_action35(double dcycs) +{ + Disk *dsk; + int drive; + int state; + + drive = g_iwm.iwm.drive_select; + dsk = &(g_iwm.iwm.drive35[drive]); + + if(g_iwm.iwm.motor_on) { + /* Perform action */ + state = (g_iwm.iwm.iwm_phase[1] << 3) + (g_iwm.iwm.iwm_phase[0] << 2) + + ((g_moremem.g_c031_disk35 >> 6) & 2) + g_iwm.iwm.iwm_phase[2]; + switch(state) { + case 0x00: /* Set step direction inward */ + /* towards higher tracks */ + g_iwm.iwm.step_direction35 = 0; + iwm_printf("Iwm set step dir35 = 0\n"); + break; + case 0x01: /* Set step direction outward */ + /* towards lower tracks */ + g_iwm.iwm.step_direction35 = 1; + iwm_printf("Iwm set step dir35 = 1\n"); + break; + case 0x03: /* reset disk-switched flag? */ + iwm_printf("Iwm reset disk switch\n"); + dsk->just_ejected = 0; + /* set_halt(1); */ + break; + case 0x04: /* step disk */ + if(g_iwm.iwm.step_direction35) { + iwm_move_to_track(dsk, dsk->cur_qtr_track - 2); + } else { + iwm_move_to_track(dsk, dsk->cur_qtr_track + 2); + } + break; + case 0x08: /* turn motor on */ + iwm_printf("Iwm set motor_on35 = 1\n"); + g_iwm.iwm.motor_on35 = 1; + break; + case 0x09: /* turn motor off */ + iwm_printf("Iwm set motor_on35 = 0\n"); + g_iwm.iwm.motor_on35 = 0; + break; + case 0x0d: /* eject disk */ + eject_disk(dsk); + // OG : pass eject info to the COntrol (ActiveX specific) + { + extern void x_notify_disk_ejection(int slot,int disk); + x_notify_disk_ejection(dsk->disk_525?6:5,dsk->drive+1); + } + break; + case 0x02: + case 0x07: + case 0x0b: /* hacks to allow AE 1.6MB driver to not crash me */ + break; + default: + halt_printf("Do 3.5 action, state: %02x\n", state); + return; + } + } else { + halt_printf("Set 3.5 status with drive off!\n"); + return; + } +} + +int +iwm_read_c0ec(double dcycs) +{ + Disk *dsk; + int drive; + + g_iwm.iwm.q6 = 0; + + if(g_iwm.iwm.q7 == 0 && g_iwm.iwm.enable2 == 0 && g_iwm.iwm.motor_on) { + drive = g_iwm.iwm.drive_select; + if(g_moremem.g_c031_disk35 & 0x40) { + dsk = &(g_iwm.iwm.drive35[drive]); + return iwm_read_data_35(dsk, g_iwm.g_fast_disk_emul, dcycs); + } else { + dsk = &(g_iwm.iwm.drive525[drive]); + return iwm_read_data_525(dsk, g_iwm.g_fast_disk_emul, dcycs); + } + + } + + return read_iwm(0xc, dcycs); +} + + +int +read_iwm(int loc, double dcycs) +{ + Disk *dsk; + word32 status; + double diff_dcycs; + double dcmp; + int on; + int state; + int drive; + int val; + + loc = loc & 0xf; + on = loc & 1; + + if(loc == 0xc) { + g_iwm.iwm.q6 = 0; + } else { + iwm_touch_switches(loc, dcycs); + } + + state = (g_iwm.iwm.q7 << 1) + g_iwm.iwm.q6; + drive = g_iwm.iwm.drive_select; + if(g_moremem.g_c031_disk35 & 0x40) { + dsk = &(g_iwm.iwm.drive35[drive]); + } else { + dsk = &(g_iwm.iwm.drive525[drive]); + } + + if(on) { + /* odd address, return 0 */ + return 0; + } else { + /* even address */ + switch(state) { + case 0x00: /* q7 = 0, q6 = 0 */ + if(g_iwm.iwm.enable2) { + return iwm_read_enable2(dcycs); + } else { + if(g_iwm.iwm.motor_on) { + return iwm_read_data(dsk, + g_iwm.g_fast_disk_emul, dcycs); + } else { + iwm_printf("read iwm st 0, m off!\n"); +/* HACK!!!! */ + return 0xff; + //return (((int)dcycs) & 0x7f) + 0x80; + } + } + break; + case 0x01: /* q7 = 0, q6 = 1 */ + /* read IWM status reg */ + if(g_iwm.iwm.enable2) { + iwm_printf("Read status under enable2: 1\n"); + status = 1; + } else { + if(g_moremem.g_c031_disk35 & 0x40) { + status = iwm_read_status35(dcycs); + } else { + status = dsk->write_prot; + } + } + + val = (status << 7) + (g_iwm.iwm.motor_on << 5) + + g_iwm.iwm.iwm_mode; + iwm_printf("Read status: %02x\n", val); + + return val; + break; + case 0x02: /* q7 = 1, q6 = 0 */ + /* read handshake register */ + if(g_iwm.iwm.enable2) { + return iwm_read_enable2_handshake(dcycs); + } else { + status = 0xc0; + diff_dcycs = dcycs - dsk->dcycs_last_read; + dcmp = 16.0; + if(dsk->disk_525 == 0) { + dcmp = 32.0; + } + if(diff_dcycs > dcmp) { + iwm_printf("Write underrun!\n"); + iwm_printf("cur: %f, dc_last: %f\n", + dcycs, dsk->dcycs_last_read); + status = status & 0xbf; + } + return status; + } + break; + case 0x03: /* q7 = 1, q6 = 1 */ + halt_printf("read g_iwm.iwm state 3!\n"); + return 0; + break; + } + + } + halt_printf("Got to end of read_iwm, loc: %02x!\n", loc); + + return 0; +} + +void +write_iwm(int loc, int val, double dcycs) +{ + Disk *dsk; + int on; + int state; + int drive; + int fast_writes; + + loc = loc & 0xf; + on = loc & 1; + + iwm_touch_switches(loc, dcycs); + + state = (g_iwm.iwm.q7 << 1) + g_iwm.iwm.q6; + drive = g_iwm.iwm.drive_select; + fast_writes = g_iwm.g_fast_disk_emul; + if(g_moremem.g_c031_disk35 & 0x40) { + dsk = &(g_iwm.iwm.drive35[drive]); + } else { + dsk = &(g_iwm.iwm.drive525[drive]); + fast_writes = !g_iwm.g_slow_525_emul_wr && fast_writes; + } + + if(on) { + /* odd address, write something */ + if(state == 0x03) { + /* q7, q6 = 1,1 */ + if(g_iwm.iwm.motor_on) { + if(g_iwm.iwm.enable2) { + iwm_write_enable2(val, dcycs); + } else { + iwm_write_data(dsk, val, + fast_writes, dcycs); + } + } else { + /* write mode register */ + val = val & 0x1f; + g_iwm.iwm.iwm_mode = val; + if(val != 0 && val != 0x0f && val != 0x07 && + val != 0x04 && val != 0x0b) { + halt_printf("set iwm_mode:%02x!\n",val); + } + } + } else { + if(g_iwm.iwm.enable2) { + iwm_write_enable2(val, dcycs); + } else { +#if 0 +// Flobynoid writes to 0xc0e9 causing these messages... + printf("Write iwm1, st: %02x, loc: %x: %02x\n", + state, loc, val); +#endif + } + } + return; + } else { + /* even address */ + if(g_iwm.iwm.enable2) { + iwm_write_enable2(val, dcycs); + } else { + iwm_printf("Write iwm2, st: %02x, loc: %x: %02x\n", + state, loc, val); + } + return; + } + + return; +} + + + +int +iwm_read_enable2(double dcycs) +{ + iwm_printf("Read under enable2!\n"); + return 0xff; +} + + +int +iwm_read_enable2_handshake(double dcycs) +{ + int val; + + iwm_printf("Read handshake under enable2!\n"); + + val = 0xc0; + g_iwm.g_cnt_enable2_handshake++; + if(g_iwm.g_cnt_enable2_handshake > 3) { + g_iwm.g_cnt_enable2_handshake = 0; + val = 0x80; + } + + return val; +} + +void +iwm_write_enable2(int val, double dcycs) +{ + iwm_printf("Write under enable2: %02x!\n", val); + + return; +} + +int +iwm_read_data(Disk *dsk, int fast_disk_emul, double dcycs) +{ + if(dsk->disk_525) { + return iwm_read_data_525(dsk, fast_disk_emul, dcycs); + } else { + return iwm_read_data_35(dsk, fast_disk_emul, dcycs); + } +} + +void +iwm_write_data(Disk *dsk, word32 val, int fast_disk_emul, double dcycs) +{ + if(dsk->disk_525) { + iwm_write_data_525(dsk, val, fast_disk_emul, dcycs); + } else { + iwm_write_data_35(dsk, val, fast_disk_emul, dcycs); + } +} + +#undef IWM_READ_ROUT +#undef IWM_WRITE_ROUT +#undef IWM_CYC_MULT +#undef IWM_DISK_525 + +#define IWM_READ_ROUT iwm_read_data_35 +#define IWM_WRITE_ROUT iwm_write_data_35 +#define IWM_CYC_MULT 1 +#define IWM_DISK_525 0 + +#define INCLUDE_IWM_RCSID_C +#include "iwm_35_525.h" +#undef INCLUDE_IWM_RCSID_C + +#undef IWM_READ_ROUT +#undef IWM_WRITE_ROUT +#undef IWM_CYC_MULT +#undef IWM_DISK_525 + +#define IWM_READ_ROUT iwm_read_data_525 +#define IWM_WRITE_ROUT iwm_write_data_525 +#define IWM_CYC_MULT 2 +#define IWM_DISK_525 1 +#include "iwm_35_525.h" + +#undef IWM_READ_ROUT +#undef IWM_WRITE_ROUT +#undef IWM_CYC_MULT +#undef IWM_DISK_525 + + + + + +/* c600 */ +void +sector_to_partial_nib(byte *in, byte *nib_ptr) +{ + byte *aux_buf; + byte *nib_out; + int val; + int val2; + int x; + int i; + + /* Convert 256(+1) data bytes to 342+1 disk nibbles */ + + aux_buf = nib_ptr; + nib_out = nib_ptr + 0x56; + + for(i = 0; i < 0x56; i++) { + aux_buf[i] = 0; + } + + x = 0x55; + for(i = 0x101; i >= 0; i--) { + val = in[i]; + if(i >= 0x100) { + val = 0; + } + val2 = (aux_buf[x] << 1) + (val & 1); + val = val >> 1; + val2 = (val2 << 1) + (val & 1); + val = val >> 1; + nib_out[i] = val; + aux_buf[x] = val2; + x--; + if(x < 0) { + x = 0x55; + } + } +} + + +int +disk_unnib_4x4(Disk *dsk) +{ + int val1; + int val2; + + val1 = iwm_read_data(dsk, 1, 0); + val2 = iwm_read_data(dsk, 1, 0); + + return ((val1 << 1) + 1) & val2; +} + +int +iwm_denib_track525(Disk *dsk, Trk *trk, int qtr_track, byte *outbuf) +{ + byte aux_buf[0x80]; + byte *buf; + int sector_done[16]; + int num_sectors_done; + int track_len; + int vol, track, phys_sec, log_sec, cksum; + int val; + int val2; + int prev_val; + int x; + int my_nib_cnt; + int save_qtr_track; + int save_nib_pos; + int tmp_nib_pos; + int status; + int i; + + save_qtr_track = dsk->cur_qtr_track; + save_nib_pos = dsk->nib_pos; + + iwm_move_to_track(dsk, qtr_track); + + dsk->nib_pos = 0; + g_iwm.g_fast_disk_unnib = 1; + + track_len = trk->track_len; + + for(i = 0; i < 16; i++) { + sector_done[i] = 0; + } + + num_sectors_done = 0; + + val = 0; + status = -1; + my_nib_cnt = 0; + while(my_nib_cnt++ < 2*track_len) { + /* look for start of a sector */ + if(val != 0xd5) { + val = iwm_read_data(dsk, 1, 0); + continue; + } + + val = iwm_read_data(dsk, 1, 0); + if(val != 0xaa) { + continue; + } + + val = iwm_read_data(dsk, 1, 0); + if(val != 0x96) { + continue; + } + + /* It's a sector start */ + vol = disk_unnib_4x4(dsk); + track = disk_unnib_4x4(dsk); + phys_sec = disk_unnib_4x4(dsk); + if(phys_sec < 0 || phys_sec > 15) { + printf("Track %02x, read sec as %02x\n", qtr_track>>2, + phys_sec); + break; + } + if(dsk->image_type == DSK_TYPE_DOS33) { + log_sec = phys_to_dos_sec[phys_sec]; + } else { + log_sec = phys_to_prodos_sec[phys_sec]; + } + cksum = disk_unnib_4x4(dsk); + if((vol ^ track ^ phys_sec ^ cksum) != 0) { + /* not correct format */ + printf("Track %02x not DOS 3.3 since hdr cksum, %02x " + "%02x %02x %02x\n", + qtr_track>>2, vol, track, phys_sec, cksum); + break; + } + + /* see what sector it is */ + if(track != (qtr_track>>2) || (phys_sec < 0)||(phys_sec > 15)) { + printf("Track %02x bad since track: %02x, sec: %02x\n", + qtr_track>>2, track, phys_sec); + break; + } + + if(sector_done[phys_sec]) { + printf("Already done sector %02x on track %02x!\n", + phys_sec, qtr_track>>2); + break; + } + + /* So far so good, let's do it! */ + val = 0; + i = 0; + while(i < NIBS_FROM_ADDR_TO_DATA) { + i++; + if(val != 0xd5) { + val = iwm_read_data(dsk, 1, 0); + continue; + } + + val = iwm_read_data(dsk, 1, 0); + if(val != 0xaa) { + continue; + } + + val = iwm_read_data(dsk, 1, 0); + if(val != 0xad) { + continue; + } + + /* got it, just break */ + break; + } + + if(i >= NIBS_FROM_ADDR_TO_DATA) { + printf("No data header, track %02x, sec %02x\n", + qtr_track>>2, phys_sec); + printf("nib_pos: %08x\n", dsk->nib_pos); + break; + } + + buf = outbuf + 0x100*log_sec; + + /* Data start! */ + prev_val = 0; + for(i = 0x55; i >= 0; i--) { + val = iwm_read_data(dsk, 1, 0); + val2 = g_iwm.from_disk_byte[val]; + if(val2 < 0) { + printf("Bad data area1, val:%02x,val2:%02x\n", + val, val2); + printf(" i:%03x,n_pos:%04x\n", i, dsk->nib_pos); + break; + } + prev_val = val2 ^ prev_val; + aux_buf[i] = prev_val; + } + + /* rest of data area */ + for(i = 0; i < 0x100; i++) { + val = iwm_read_data(dsk, 1, 0); + val2 = g_iwm.from_disk_byte[val]; + if(val2 < 0) { + printf("Bad data area2, read: %02x\n", val); + printf(" nib_pos: %04x\n", dsk->nib_pos); + break; + } + prev_val = val2 ^ prev_val; + buf[i] = prev_val; + } + + /* checksum */ + val = iwm_read_data(dsk, 1, 0); + val2 = g_iwm.from_disk_byte[val]; + if(val2 < 0) { + printf("Bad data area3, read: %02x\n", val); + printf(" nib_pos: %04x\n", dsk->nib_pos); + break; + } + if(val2 != prev_val) { + printf("Bad data cksum, got %02x, wanted: %02x\n", + val2, prev_val); + printf(" nib_pos: %04x\n", dsk->nib_pos); + break; + } + + /* Got this far, data is good, merge aux_buf into buf */ + x = 0x55; + for(i = 0; i < 0x100; i++) { + val = aux_buf[x]; + val2 = (buf[i] << 1) + (val & 1); + val = val >> 1; + val2 = (val2 << 1) + (val & 1); + buf[i] = val2; + val = val >> 1; + aux_buf[x] = val; + x--; + if(x < 0) { + x = 0x55; + } + } + sector_done[phys_sec] = 1; + num_sectors_done++; + if(num_sectors_done >= 16) { + status = 0; + break; + } + } + + tmp_nib_pos = dsk->nib_pos; + iwm_move_to_track(dsk, save_qtr_track); + dsk->nib_pos = save_nib_pos; + g_iwm.g_fast_disk_unnib = 0; + + if(status == 0) { + return 1; + } + + printf("Nibblization not done, %02x sectors found on track %02x\n", + num_sectors_done, qtr_track>>2); + printf("my_nib_cnt: %04x, nib_pos: %04x, trk_len: %04x\n", my_nib_cnt, + tmp_nib_pos, track_len); + for(i = 0; i < 16; i++) { + printf("sector_done[%d] = %d\n", i, sector_done[i]); + } + return -1; +} + +int +iwm_denib_track35(Disk *dsk, Trk *trk, int qtr_track, byte *outbuf) +{ + word32 buf_c00[0x100]; + word32 buf_d00[0x100]; + word32 buf_e00[0x100]; + byte *buf; + word32 tmp_5c, tmp_5d, tmp_5e; + word32 tmp_66, tmp_67; + int sector_done[16]; + int num_sectors_done; + int track_len; + int phys_track, phys_sec, phys_side, phys_capacity, cksum; + int tmp; + int track, side; + int num_sectors; + int val; + int val2; + int x, y; + int carry; + int my_nib_cnt; + int save_qtr_track; + int save_nib_pos; + int status; + int i; + + save_qtr_track = dsk->cur_qtr_track; + save_nib_pos = dsk->nib_pos; + + iwm_move_to_track(dsk, qtr_track); + + dsk->nib_pos = 0; + g_iwm.g_fast_disk_unnib = 1; + + track_len = trk->track_len; + + num_sectors = g_track_bytes_35[qtr_track >> 5] >> 9; + + for(i = 0; i < num_sectors; i++) { + sector_done[i] = 0; + } + + num_sectors_done = 0; + + val = 0; + status = -1; + my_nib_cnt = 0; + + track = qtr_track >> 1; + side = qtr_track & 1; + + while(my_nib_cnt++ < 2*track_len) { + /* look for start of a sector */ + if(val != 0xd5) { + val = iwm_read_data(dsk, 1, 0); + continue; + } + + val = iwm_read_data(dsk, 1, 0); + if(val != 0xaa) { + continue; + } + + val = iwm_read_data(dsk, 1, 0); + if(val != 0x96) { + continue; + } + + /* It's a sector start */ + val = iwm_read_data(dsk, 1, 0); + phys_track = g_iwm.from_disk_byte[val]; + if(phys_track != (track & 0x3f)) { + printf("Track %02x.%d, read track %02x, %02x\n", + track, side, phys_track, val); + break; + } + + phys_sec = g_iwm.from_disk_byte[iwm_read_data(dsk, 1, 0)]; + if(phys_sec < 0 || phys_sec >= num_sectors) { + printf("Track %02x.%d, read sector %02x??\n", + track, side, phys_sec); + break; + } + phys_side = g_iwm.from_disk_byte[iwm_read_data(dsk, 1, 0)]; + + if(phys_side != ((side << 5) + (track >> 6))) { + printf("Track %02x.%d, read side %02x??\n", + track, side, phys_side); + break; + } + phys_capacity = g_iwm.from_disk_byte[iwm_read_data(dsk, 1, 0)]; + if(phys_capacity != 0x24 && phys_capacity != 0x22) { + printf("Track %02x.%x capacity: %02x != 0x24/22\n", + track, side, phys_capacity); + } + cksum = g_iwm.from_disk_byte[iwm_read_data(dsk, 1, 0)]; + + tmp = phys_track ^ phys_sec ^ phys_side ^ phys_capacity; + if(cksum != tmp) { + printf("Track %02x.%d, sector %02x, cksum: %02x.%02x\n", + track, side, phys_sec, cksum, tmp); + break; + } + + + if(sector_done[phys_sec]) { + printf("Already done sector %02x on track %02x.%x!\n", + phys_sec, track, side); + break; + } + + /* So far so good, let's do it! */ + val = 0; + for(i = 0; i < 38; i++) { + val = iwm_read_data(dsk, 1, 0); + if(val == 0xd5) { + break; + } + } + if(val != 0xd5) { + printf("No data header, track %02x.%x, sec %02x\n", + track, side, phys_sec); + break; + } + + val = iwm_read_data(dsk, 1, 0); + if(val != 0xaa) { + printf("Bad data hdr1,val:%02x trk %02x.%x, sec %02x\n", + val, track, side, phys_sec); + printf("nib_pos: %08x\n", dsk->nib_pos); + break; + } + + val = iwm_read_data(dsk, 1, 0); + if(val != 0xad) { + printf("Bad data hdr2,val:%02x trk %02x.%x, sec %02x\n", + val, track, side, phys_sec); + break; + } + + buf = outbuf + (phys_sec << 9); + + /* check sector again */ + val = g_iwm.from_disk_byte[iwm_read_data(dsk, 1, 0)]; + if(val != phys_sec) { + printf("Bad data hdr3,val:%02x trk %02x.%x, sec %02x\n", + val, track, side, phys_sec); + break; + } + + /* Data start! */ + tmp_5c = 0; + tmp_5d = 0; + tmp_5e = 0; + y = 0xaf; + carry = 0; + + while(y > 0) { +/* 626f */ + val = iwm_read_data(dsk, 1, 0); + val2 = g_iwm.from_disk_byte[val]; + if(val2 < 0) { + printf("Bad data area1b, read: %02x\n", val); + printf(" i:%03x,n_pos:%04x\n", i, dsk->nib_pos); + break; + } + tmp_66 = val2; + + tmp_5c = tmp_5c << 1; + carry = (tmp_5c >> 8); + tmp_5c = (tmp_5c + carry) & 0xff; + + val = iwm_read_data(dsk, 1, 0); + val2 = g_iwm.from_disk_byte[val]; + if(val2 < 0) { + printf("Bad data area2, read: %02x\n", val); + break; + } + + val2 = val2 + ((tmp_66 << 2) & 0xc0); + + val2 = val2 ^ tmp_5c; + buf_c00[y] = val2; + + tmp_5e = val2 + tmp_5e + carry; + carry = (tmp_5e >> 8); + tmp_5e = tmp_5e & 0xff; +/* 62b8 */ + val = iwm_read_data(dsk, 1, 0); + val2 = g_iwm.from_disk_byte[val]; + val2 = val2 + ((tmp_66 << 4) & 0xc0); + val2 = val2 ^ tmp_5e; + buf_d00[y] = val2; + tmp_5d = val2 + tmp_5d + carry; + + carry = (tmp_5d >> 8); + tmp_5d = tmp_5d & 0xff; + + y--; + if(y <= 0) { + break; + } + +/* 6274 */ + val = iwm_read_data(dsk, 1, 0); + val2 = g_iwm.from_disk_byte[val]; + val2 = val2 + ((tmp_66 << 6) & 0xc0); + val2 = val2 ^ tmp_5d; + buf_e00[y+1] = val2; + + tmp_5c = val2 + tmp_5c + carry; + carry = (tmp_5c >> 8); + tmp_5c = tmp_5c & 0xff; + } + +/* 62d0 */ + val = iwm_read_data(dsk, 1, 0); + val2 = g_iwm.from_disk_byte[val]; + + tmp_66 = (val2 << 6) & 0xc0; + tmp_67 = (val2 << 4) & 0xc0; + val2 = (val2 << 2) & 0xc0; + + val = iwm_read_data(dsk, 1, 0); + val2 = g_iwm.from_disk_byte[val] + val2; + if(tmp_5e != (word32)val2) { + printf("Checksum 5e bad: %02x vs %02x\n", tmp_5e, val2); + printf("val:%02x trk %02x.%x, sec %02x\n", + val, track, side, phys_sec); + break; + } + + val = iwm_read_data(dsk, 1, 0); + val2 = g_iwm.from_disk_byte[val] + tmp_67; + if(tmp_5d != (word32)val2) { + printf("Checksum 5d bad: %02x vs %02x\n", tmp_5e, val2); + printf("val:%02x trk %02x.%x, sec %02x\n", + val, track, side, phys_sec); + break; + } + + val = iwm_read_data(dsk, 1, 0); + val2 = g_iwm.from_disk_byte[val] + tmp_66; + if(tmp_5c != (word32)val2) { + printf("Checksum 5c bad: %02x vs %02x\n", tmp_5e, val2); + printf("val:%02x trk %02x.%x, sec %02x\n", + val, track, side, phys_sec); + break; + } + + /* Whew, got it!...check for DE AA */ + val = iwm_read_data(dsk, 1, 0); + if(val != 0xde) { + printf("Bad data epi1,val:%02x trk %02x.%x, sec %02x\n", + val, track, side, phys_sec); + printf("nib_pos: %08x\n", dsk->nib_pos); + break; + } + + val = iwm_read_data(dsk, 1, 0); + if(val != 0xaa) { + printf("Bad data epi2,val:%02x trk %02x.%x, sec %02x\n", + val, track, side, phys_sec); + break; + } + + /* Now, convert buf_c/d/e to output */ +/* 6459 */ + y = 0; + for(x = 0xab; x >= 0; x--) { + *buf++ = buf_c00[x]; + y++; + if(y >= 0x200) { + break; + } + + *buf++ = buf_d00[x]; + y++; + if(y >= 0x200) { + break; + } + + *buf++ = buf_e00[x]; + y++; + if(y >= 0x200) { + break; + } + } + + sector_done[phys_sec] = 1; + num_sectors_done++; + if(num_sectors_done >= num_sectors) { + status = 0; + break; + } + val = 0; + } + + if(status < 0) { + printf("dsk->nib_pos: %04x, status: %d\n", dsk->nib_pos, + status); + for(i = 0; i < num_sectors; i++) { + printf("sector done[%d] = %d\n", i, sector_done[i]); + } + } + + iwm_move_to_track(dsk, save_qtr_track); + dsk->nib_pos = save_nib_pos; + g_iwm.g_fast_disk_unnib = 0; + + if(status == 0) { + return 1; + } + + printf("Nibblization not done, %02x sectors found on track %02x\n", + num_sectors_done, qtr_track>>2); + return -1; + + + +} + +/* ret = 1 -> dirty data written out */ +/* ret = 0 -> not dirty, no error */ +/* ret < 0 -> error */ +int +disk_track_to_unix(Disk *dsk, int qtr_track, byte *outbuf) +{ + Trk *trk; + int disk_525; + + disk_525 = dsk->disk_525; + + trk = &(dsk->trks[qtr_track]); + + if(trk->track_len == 0 || trk->track_dirty == 0) { + return 0; + } + + trk->track_dirty = 0; + + if((qtr_track & 3) && disk_525) { + halt_printf("You wrote to phase %02x! Can't wr bk to unix!\n", + qtr_track); + dsk->write_through_to_unix = 0; + return -1; + } + + if(disk_525) + { + // OG + // Add support for .nib file + if (dsk->image_type!=DSK_TYPE_NIB) + return iwm_denib_track525(dsk, trk, qtr_track, outbuf); + else + { + int len = trk->track_len; + byte* trk_ptr = trk->nib_area+1; + byte* nib_ptr = outbuf; + for(int i = 0; i < len; i += 2) + { + *nib_ptr++ = *trk_ptr; + trk_ptr+=2; + } + return 1; + } + } else { + return iwm_denib_track35(dsk, trk, qtr_track, outbuf); + } +} + + +void +show_hex_data(byte *buf, int count) +{ + int i; + + for(i = 0; i < count; i += 16) { + printf("%04x: %02x %02x %02x %02x %02x %02x %02x %02x " + "%02x %02x %02x %02x %02x %02x %02x %02x\n", i, + buf[i+0], buf[i+1], buf[i+2], buf[i+3], + buf[i+4], buf[i+5], buf[i+6], buf[i+7], + buf[i+8], buf[i+9], buf[i+10], buf[i+11], + buf[i+12], buf[i+13], buf[i+14], buf[i+15]); + } + +} + +void +disk_check_nibblization(Disk *dsk, int qtr_track, byte *buf, int size) +{ + byte buffer[0x3000]; + Trk *trk; + int ret, ret2; + int i; + + if(size > 0x3000) { + printf("size %08x is > 0x3000, disk_check_nibblization\n",size); + x_exit(3); + } + + for(i = 0; i < size; i++) { + buffer[i] = 0; + } + + trk = &(dsk->trks[qtr_track]); + + if(dsk->disk_525) { + ret = iwm_denib_track525(dsk, trk, qtr_track, &(buffer[0])); + } else { + ret = iwm_denib_track35(dsk, trk, qtr_track, &(buffer[0])); + } + + ret2 = -1; + for(i = 0; i < size; i++) { + if(buffer[i] != buf[i]) { + printf("buffer[%04x]: %02x != %02x\n", i, buffer[i], + buf[i]); + ret2 = i; + break; + } + } + + if(ret != 1 || ret2 >= 0) { + printf("disk_check_nib ret:%d, ret2:%d for q_track %03x\n", + ret, ret2, qtr_track); + show_hex_data(buf, 0x1000); + show_hex_data(buffer, 0x1000); + iwm_show_a_track(&(dsk->trks[qtr_track])); + + x_exit(2); + } +} + + +#define TRACK_BUF_LEN 0x2000 + +void +disk_unix_to_nib(Disk *dsk, int qtr_track, int unix_pos, int unix_len, + int nib_len) +{ + byte track_buf[TRACK_BUF_LEN]; + Trk *trk; + int must_clear_track; + int ret; + int len; + int i; + + /* Read track from dsk int track_buf */ + + must_clear_track = 0; + + if(unix_len > TRACK_BUF_LEN) { + printf("diks_unix_to_nib: requested len of image %s = %05x\n", + dsk->name_ptr, unix_len); + } + + if(unix_pos >= 0) { + ret = lseek(dsk->fd, unix_pos, SEEK_SET); + if(ret != unix_pos) { + printf("lseek of disk %s len 0x%x ret: %d, errno: %d\n", + dsk->name_ptr, unix_pos, ret, errno); + must_clear_track = 1; + } + + len = read(dsk->fd, (char*)track_buf, unix_len); + if(len != unix_len) { + printf("read of disk %s q_trk %d ret: %d, errno: %d\n", + dsk->name_ptr, qtr_track, ret, errno); + must_clear_track = 1; + } + } + + if(must_clear_track) { + for(i = 0; i < TRACK_BUF_LEN; i++) { + track_buf[i] = 0; + } + } +#ifdef ACTIVEGS + { + extern void apply_patch(int _slot, int _disk,byte * _buf, int pos, int len); + apply_patch(dsk->slot,dsk->disk,track_buf,unix_pos,unix_len); + } +#endif + +#if 0 + printf("Q_track %02x dumped out\n", qtr_track); + + for(i = 0; i < 4096; i += 32) { + printf("%04x: %02x%02x%02x%02x%02x%02x%02x%02x " + "%02x%02x%02x%02x%02x%02x%02x%02x " + "%02x%02x%02x%02x%02x%02x%02x%02x " + "%02x%02x%02x%02x%02x%02x%02x%02x\n", i, + track_buf[i+0], track_buf[i+1], track_buf[i+2], + track_buf[i+3], track_buf[i+4], track_buf[i+5], + track_buf[i+6], track_buf[i+7], track_buf[i+8], + track_buf[i+9], track_buf[i+10], track_buf[i+11], + track_buf[i+12], track_buf[i+13], track_buf[i+14], + track_buf[i+15], track_buf[i+16], track_buf[i+17], + track_buf[i+18], track_buf[i+19], track_buf[i+20], + track_buf[i+21], track_buf[i+22], track_buf[i+23], + track_buf[i+24], track_buf[i+25], track_buf[i+26], + track_buf[i+27], track_buf[i+28], track_buf[i+29], + track_buf[i+30], track_buf[i+31]); + } +#endif + + dsk->nib_pos = 0; /* for consistency */ + + trk = &(dsk->trks[qtr_track]); + trk->track_dirty = 0; + trk->overflow_size = 0; + trk->track_len = 2*nib_len; + trk->unix_pos = unix_pos; + trk->unix_len = unix_len; + trk->dsk = dsk; + trk->nib_area = (byte *)malloc(trk->track_len); + + /* create nibblized image */ + + if(dsk->disk_525 && dsk->image_type == DSK_TYPE_NIB) { + iwm_nibblize_track_nib525(dsk, trk, track_buf, qtr_track); + } else if(dsk->disk_525) { + iwm_nibblize_track_525(dsk, trk, track_buf, qtr_track); + } else { + iwm_nibblize_track_35(dsk, trk, track_buf, qtr_track); + } +} + +void +iwm_nibblize_track_nib525(Disk *dsk, Trk *trk, byte *track_buf, int qtr_track) +{ + byte *nib_ptr; + byte *trk_ptr; + int len; + int i; + + len = trk->track_len; + trk_ptr = track_buf; + nib_ptr = &(trk->nib_area[0]); + for(i = 0; i < len; i += 2) { + nib_ptr[i] = 8; + nib_ptr[i+1] = *trk_ptr++;; + } + + iwm_printf("Nibblized q_track %02x\n", qtr_track); +} + +void +iwm_nibblize_track_525(Disk *dsk, Trk *trk, byte *track_buf, int qtr_track) +{ + byte partial_nib_buf[0x300]; + word32 *word_ptr; + word32 val; + word32 last_val; + int phys_sec; + int log_sec; + int num_sync; + int i; + + + word_ptr = (word32 *)&(trk->nib_area[0]); +#ifdef KEGS_LITTLE_ENDIAN + val = 0xff08ff08; +#else + val = 0x08ff08ff; +#endif + for(i = 0; i < trk->track_len; i += 4) { + *word_ptr++ = val; + } + + + for(phys_sec = 0; phys_sec < 16; phys_sec++) { + if(dsk->image_type == DSK_TYPE_DOS33) { + log_sec = phys_to_dos_sec[phys_sec]; + } else { + log_sec = phys_to_prodos_sec[phys_sec]; + } + + /* Create sync headers */ + if(phys_sec == 0) { + num_sync = 70; + } else { + num_sync = 14; + } + + for(i = 0; i < num_sync; i++) { + disk_nib_out(dsk, 0xff, 10); + } + disk_nib_out(dsk, 0xd5, 10); /* prolog */ + disk_nib_out(dsk, 0xaa, 8); /* prolog */ + disk_nib_out(dsk, 0x96, 8); /* prolog */ + disk_4x4_nib_out(dsk, dsk->vol_num); + disk_4x4_nib_out(dsk, qtr_track >> 2); + disk_4x4_nib_out(dsk, phys_sec); + disk_4x4_nib_out(dsk, dsk->vol_num ^ (qtr_track>>2) ^ phys_sec); + disk_nib_out(dsk, 0xde, 8); /* epi */ + disk_nib_out(dsk, 0xaa, 8); /* epi */ + disk_nib_out(dsk, 0xeb, 8); /* epi */ + + /* Inter sync */ + disk_nib_out(dsk, 0xff, 8); + for(i = 0; i < 5; i++) { + disk_nib_out(dsk, 0xff, 10); + } + disk_nib_out(dsk, 0xd5, 10); /* data prolog */ + disk_nib_out(dsk, 0xaa, 8); /* data prolog */ + disk_nib_out(dsk, 0xad, 8); /* data prolog */ + + sector_to_partial_nib( &(track_buf[log_sec*256]), + &(partial_nib_buf[0])); + + last_val = 0; + for(i = 0; i < 0x156; i++) { + val = partial_nib_buf[i]; + disk_nib_out(dsk, to_disk_byte[last_val ^ val], 8); + last_val = val; + } + disk_nib_out(dsk, to_disk_byte[last_val], 8); + + /* data epilog */ + disk_nib_out(dsk, 0xde, 8); /* epi */ + disk_nib_out(dsk, 0xaa, 8); /* epi */ + disk_nib_out(dsk, 0xeb, 8); /* epi */ + disk_nib_out(dsk, 0xff, 8); + for(i = 0; i < 6; i++) { + disk_nib_out(dsk, 0xff, 10); + } + } + + /* finish nibblization */ + disk_nib_end_track(dsk); + + iwm_printf("Nibblized q_track %02x\n", qtr_track); + + if(g_iwm.g_check_nibblization) { + disk_check_nibblization(dsk, qtr_track, &(track_buf[0]),0x1000); + } +} + +void +iwm_nibblize_track_35(Disk *dsk, Trk *trk, byte *track_buf, int qtr_track) +{ + int phys_to_log_sec[16]; + word32 buf_c00[0x100]; + word32 buf_d00[0x100]; + word32 buf_e00[0x100]; + byte *buf; + word32 *word_ptr; + word32 val; + int num_sectors; + int unix_len; + int log_sec; + int phys_sec; + int track; + int side; + int interleave; + int num_sync; + word32 phys_track, phys_side, capacity, cksum; + word32 tmp_5c, tmp_5d, tmp_5e, tmp_5f; + word32 tmp_63, tmp_64, tmp_65; + word32 acc_hi; + int carry; + int x, y; + int i; + + word_ptr = (word32 *)&(trk->nib_area[0]); +#ifdef KEGS_LITTLE_ENDIAN + val = 0xff08ff08; +#else + val = 0x08ff08ff; +#endif + if(trk->track_len & 3) { + halt_printf("track_len: %08x is not a multiple of 4\n", + trk->track_len); + } + + for(i = 0; i < trk->track_len; i += 4) { + *word_ptr++ = val; + } + + unix_len = trk->unix_len; + + num_sectors = (unix_len >> 9); + + for(i = 0; i < num_sectors; i++) { + phys_to_log_sec[i] = -1; + } + + phys_sec = 0; + interleave = 2; + for(log_sec = 0; log_sec < num_sectors; log_sec++) { + while(phys_to_log_sec[phys_sec] >= 0) { + phys_sec++; + if(phys_sec >= num_sectors) { + phys_sec = 0; + } + } + phys_to_log_sec[phys_sec] = log_sec; + phys_sec += interleave; + if(phys_sec >= num_sectors) { + phys_sec -= num_sectors; + } + } + + track = qtr_track >> 1; + side = qtr_track & 1; + for(phys_sec = 0; phys_sec < num_sectors; phys_sec++) { + + log_sec = phys_to_log_sec[phys_sec]; + if(log_sec < 0) { + printf("Track: %02x.%x phys_sec: %02x = %d!\n", + track, side, phys_sec, log_sec); + x_exit(2); + } + + /* Create sync headers */ + if(phys_sec == 0) { + num_sync = 400; + } else { + num_sync = 54; + } + + for(i = 0; i < num_sync; i++) { + disk_nib_out(dsk, 0xff, 10); + } + + disk_nib_out(dsk, 0xd5, 10); /* prolog */ + disk_nib_out(dsk, 0xaa, 8); /* prolog */ + disk_nib_out(dsk, 0x96, 8); /* prolog */ + + phys_track = track & 0x3f; + phys_side = (side << 5) + (track >> 6); + capacity = 0x22; + disk_nib_out(dsk, to_disk_byte[phys_track], 8); /* trk */ + disk_nib_out(dsk, to_disk_byte[log_sec], 8); /* sec */ + disk_nib_out(dsk, to_disk_byte[phys_side], 8); /* sides+trk */ + disk_nib_out(dsk, to_disk_byte[capacity], 8); /* capacity*/ + + cksum = (phys_track ^ log_sec ^ phys_side ^ capacity) & 0x3f; + disk_nib_out(dsk, to_disk_byte[cksum], 8); /* cksum*/ + + disk_nib_out(dsk, 0xde, 8); /* epi */ + disk_nib_out(dsk, 0xaa, 8); /* epi */ + + /* Inter sync */ + for(i = 0; i < 5; i++) { + disk_nib_out(dsk, 0xff, 10); + } + disk_nib_out(dsk, 0xd5, 10); /* data prolog */ + disk_nib_out(dsk, 0xaa, 8); /* data prolog */ + disk_nib_out(dsk, 0xad, 8); /* data prolog */ + disk_nib_out(dsk, to_disk_byte[log_sec], 8); /* sec again */ + + /* do nibblizing! */ + buf = track_buf + (log_sec << 9); + +/* 6320 */ + tmp_5e = 0; + tmp_5d = 0; + tmp_5c = 0; + y = 0; + x = 0xaf; + buf_c00[0] = 0; + buf_d00[0] = 0; + buf_e00[0] = 0; + buf_e00[1] = 0; + for(y = 0x4; y > 0; y--) { + buf_c00[x] = 0; + buf_d00[x] = 0; + buf_e00[x] = 0; + x--; + } + + while(x >= 0) { +/* 6338 */ + tmp_5c = tmp_5c << 1; + carry = (tmp_5c >> 8); + tmp_5c = (tmp_5c + carry) & 0xff; + + val = buf[y]; + tmp_5e = val + tmp_5e + carry; + carry = (tmp_5e >> 8); + tmp_5e = tmp_5e & 0xff; + + val = val ^ tmp_5c; + buf_c00[x] = val; + y++; +/* 634c */ + val = buf[y]; + tmp_5d = tmp_5d + val + carry; + carry = (tmp_5d >> 8); + tmp_5d = tmp_5d & 0xff; + val = val ^ tmp_5e; + buf_d00[x] = val; + y++; + x--; + if(x <= 0) { + break; + } + +/* 632a */ + val = buf[y]; + tmp_5c = tmp_5c + val + carry; + carry = (tmp_5c >> 8); + tmp_5c = tmp_5c & 0xff; + + val = val ^ tmp_5d; + buf_e00[x+1] = val; + y++; + } + +/* 635f */ + val = ((tmp_5c >> 2) ^ tmp_5d) & 0x3f; +/* 6367 */ + val = (val ^ tmp_5d) >> 2; +/* 636b */ + val = (val ^ tmp_5e) & 0x3f; +/* 636f */ + val = (val ^ tmp_5e) >> 2; +/* 6373 */ + tmp_5f = val; +/* 6375 */ + tmp_63 = 0; + tmp_64 = 0; + tmp_65 = 0; + acc_hi = 0; + + + y = 0xae; + while(y >= 0) { +/* 63e4 */ + /* write out acc_hi */ + val = to_disk_byte[acc_hi & 0x3f]; + disk_nib_out(dsk, val, 8); + +/* 63f2 */ + val = to_disk_byte[tmp_63 & 0x3f]; + tmp_63 = buf_c00[y]; + acc_hi = tmp_63 >> 6; + disk_nib_out(dsk, val, 8); +/* 640b */ + val = to_disk_byte[tmp_64 & 0x3f]; + tmp_64 = buf_d00[y]; + acc_hi = (acc_hi << 2) + (tmp_64 >> 6); + disk_nib_out(dsk, val, 8); + y--; + if(y < 0) { + break; + } + +/* 63cb */ + val = to_disk_byte[tmp_65 & 0x3f]; + tmp_65 = buf_e00[y+1]; + acc_hi = (acc_hi << 2) + (tmp_65 >> 6); + disk_nib_out(dsk, val, 8); + } +/* 6429 */ + val = to_disk_byte[tmp_5f & 0x3f]; + disk_nib_out(dsk, val, 8); + + val = to_disk_byte[tmp_5e & 0x3f]; + disk_nib_out(dsk, val, 8); + + val = to_disk_byte[tmp_5d & 0x3f]; + disk_nib_out(dsk, val, 8); + + val = to_disk_byte[tmp_5c & 0x3f]; + disk_nib_out(dsk, val, 8); + +/* 6440 */ + /* data epilog */ + disk_nib_out(dsk, 0xde, 8); /* epi */ + disk_nib_out(dsk, 0xaa, 8); /* epi */ + disk_nib_out(dsk, 0xff, 8); + } + + + disk_nib_end_track(dsk); + + if(g_iwm.g_check_nibblization) { + disk_check_nibblization(dsk, qtr_track, &(track_buf[0]), + unix_len); + } +} + +void +disk_4x4_nib_out(Disk *dsk, word32 val) +{ + disk_nib_out(dsk, 0xaa | (val >> 1), 8); + disk_nib_out(dsk, 0xaa | val, 8); +} + +void +disk_nib_out(Disk *dsk, byte val, int size) +{ + Trk *trk; + int pos; + int old_size; + int track_len; + int overflow_size; + int qtr_track; + + + qtr_track = dsk->cur_qtr_track; + + track_len = 0; + trk = 0; + if(dsk->trks != 0) { + trk = &(dsk->trks[qtr_track]); + track_len = trk->track_len; + } + + if(track_len <= 10) { + printf("Writing to an invalid qtr track: %02x!\n", qtr_track); + printf("name: %s, track_len: %08x, val: %08x, size: %d\n", + dsk->name_ptr, track_len, val, size); + x_exit(1); + return; + } + + trk->track_dirty = 1; + dsk->disk_dirty = 1; + + pos = trk->dsk->nib_pos; + overflow_size = trk->overflow_size; + if(pos >= track_len) { + pos = 0; + } + + old_size = trk->nib_area[pos]; + + + while(size >= (10 + old_size)) { + size = size - old_size; + pos += 2; + if(pos >= track_len) { + pos = 0; + } + old_size = trk->nib_area[pos]; + } + + if(size > 10) { + size = 10; + } + + if((val & 0x80) == 0) { + val |= 0x80; + } + + trk->nib_area[pos++] = size; + trk->nib_area[pos++] = val; + if(pos >= track_len) { + pos = 0; + } + + overflow_size += (size - old_size); + if((overflow_size > 8) && (size > 8)) { + overflow_size -= trk->nib_area[pos]; + trk->nib_area[pos++] = 0; + trk->nib_area[pos++] = 0; + if(pos >= track_len) { + pos = 0; + } + } else if(overflow_size < -64) { + halt_printf("overflow_sz:%03x, pos:%02x\n",overflow_size,pos); + } + + trk->dsk->nib_pos = pos; + trk->overflow_size = overflow_size; + + if((val & 0x80) == 0 || size < 8) { + halt_printf("disk_nib_out, wrote %02x, size: %d\n", val, size); + } +} + +void +disk_nib_end_track(Disk *dsk) +{ + int qtr_track; + + dsk->nib_pos = 0; + qtr_track = dsk->cur_qtr_track; + dsk->trks[qtr_track].track_dirty = 0; + + dsk->disk_dirty = 0; +} + +void +iwm_show_track(int slot_drive, int track) +{ + Disk *dsk; + Trk *trk; + int drive; + int sel35; + int qtr_track; + + if(slot_drive < 0) { + drive = g_iwm.iwm.drive_select; + sel35 = (g_moremem.g_c031_disk35 >> 6) & 1; + } else { + drive = slot_drive & 1; + sel35 = !((slot_drive >> 1) & 1); + } + + if(sel35) { + dsk = &(g_iwm.iwm.drive35[drive]); + } else { + dsk = &(g_iwm.iwm.drive525[drive]); + } + + if(track < 0) { + qtr_track = dsk->cur_qtr_track; + } else { + qtr_track = track; + } + if(dsk->trks == 0) { + return; + } + trk = &(dsk->trks[qtr_track]); + + if(trk->track_len <= 0) { + printf("Track_len: %d\n", trk->track_len); + printf("No track for type: %d, drive: %d, qtrk: 0x%02x\n", + sel35, drive, qtr_track); + return; + } + + printf("Current drive: %d, q_track: 0x%02x\n", drive, qtr_track); + + iwm_show_a_track(trk); +} + +void +iwm_show_a_track(Trk *trk) +{ + int sum; + int len; + int pos; + int i; + + printf(" Showtrack:dirty: %d, pos: %04x, ovfl: %04x, len: %04x\n", + trk->track_dirty, trk->dsk->nib_pos, + trk->overflow_size, trk->track_len); + + len = trk->track_len; + printf("Track len in bytes: %04x\n", len); + if(len >= 2*15000) { + len = 2*15000; + printf("len too big, using %04x\n", len); + } + + pos = 0; + for(i = 0; i < len; i += 16) { + printf("%04x: %2d,%02x %2d,%02x %2d,%02x %2d,%02x " + "%2d,%02x %2d,%02x %2d,%02x %2d,%02x\n", pos, + trk->nib_area[pos], trk->nib_area[pos+1], + trk->nib_area[pos+2], trk->nib_area[pos+3], + trk->nib_area[pos+4], trk->nib_area[pos+5], + trk->nib_area[pos+6], trk->nib_area[pos+7], + trk->nib_area[pos+8], trk->nib_area[pos+9], + trk->nib_area[pos+10], trk->nib_area[pos+11], + trk->nib_area[pos+12], trk->nib_area[pos+13], + trk->nib_area[pos+14], trk->nib_area[pos+15]); + pos += 16; + if(pos >= len) { + pos -= len; + } + } + + sum = 0; + for(i = 0; i < len; i += 2) { + sum += trk->nib_area[i]; + } + + printf("bit_sum: %d, expected: %d, overflow_size: %d\n", + sum, len*8/2, trk->overflow_size); +} + diff --git a/kegs/Src/iwm.h b/kegs/Src/iwm.h new file mode 100644 index 0000000..85eca68 --- /dev/null +++ b/kegs/Src/iwm.h @@ -0,0 +1,326 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + +#ifdef INCLUDE_RCSID_C +const char rcsid_iwm_h[] = "@(#)$KmKId: iwm.h,v 1.14 2004-10-20 17:29:38-04 kentd Exp $"; +#endif + +#define MAX_TRACKS (2*80) +#define MAX_C7_DISKS 8 + +#define NIB_LEN_525 0x1900 /* 51072 bits per track */ +#define NIBS_FROM_ADDR_TO_DATA 20 + +#define DSK_TYPE_PRODOS 0 +#define DSK_TYPE_DOS33 1 +#define DSK_TYPE_NIB 2 + +typedef struct _Disk Disk; + +#ifdef _WIN32 +#pragma pack(push,PRAGMA_PACK_SIZE) +#endif + +STRUCT(Trk) { + Disk *dsk; + byte *nib_area; + int track_dirty; + int overflow_size; + int track_len; + int unix_pos; + int unix_len; +} XCODE_PRAGMA_PACK; + +#define MAX_DISK_NAME 512 +struct _Disk { + _ALIGNED(8) double dcycs_last_read; + char name_ptr[MAX_DISK_NAME]; + char partition_name[MAX_DISK_NAME]; + + int partition_num; + int fd; + int force_size; + int image_start; + int image_size; + int smartport; + int disk_525; + int drive; + int cur_qtr_track; + int image_type; + int vol_num; + int write_prot; + int write_through_to_unix; + int disk_dirty; + int just_ejected; + int last_phase; + int nib_pos; + int num_tracks; + Trk *trks; + int slot; + int disk; +} XCODE_PRAGMA_PACK; + + +STRUCT(Iwm) { + Disk drive525[2]; + Disk drive35[2]; + Disk smartport[MAX_C7_DISKS]; + int motor_on; + int motor_off; + int motor_off_vbl_count; + int motor_on35; + int head35; + int step_direction35; + int iwm_phase[4]; + int iwm_mode; + int drive_select; + int q6; + int q7; + int enable2; + int reset; + + word32 previous_write_val; + int previous_write_bits; +} XCODE_PRAGMA_PACK; + + +STRUCT(Driver_desc) { + word16 sig; + word16 blk_size; + word32 blk_count; + word16 dev_type; + word16 dev_id; + word32 data; + word16 drvr_count; +} XCODE_PRAGMA_PACK; + +STRUCT(Part_map) { + word16 sig; + word16 sigpad; + word32 map_blk_cnt; + word32 phys_part_start; + word32 part_blk_cnt; + char part_name[32]; + char part_type[32]; + word32 data_start; + word32 data_cnt; + word32 part_status; + word32 log_boot_start; + word32 boot_size; + word32 boot_load; + word32 boot_load2; + word32 boot_entry; + word32 boot_entry2; + word32 boot_cksum; + char processor[16]; + char junk[128]; +} XCODE_PRAGMA_PACK; + +class s_iwm : public serialized +{ +public: + int g_fast_disk_emul ; + int g_slow_525_emul_wr ; + _ALIGNED(8) double g_dcycs_end_emul_wr ; + int g_fast_disk_unnib ; + int g_iwm_fake_fast ; + int from_disk_byte[256]; + int from_disk_byte_valid ; + Iwm iwm; + int g_iwm_motor_on ; + int g_check_nibblization ; + int g_highest_smartport_unit ; + word32 g_cycs_in_io_read; + int g_cnt_enable2_handshake ; + + + s_iwm() + { + INIT_SERIALIZED(); + + g_fast_disk_emul = 1; + g_highest_smartport_unit = -1; + + } +#define WRITE_TRK(X) \ + if (X.trks) \ + { \ + memcpy(ptr,X.trks,X.num_tracks * sizeof(Trk)); \ + ptr += X.num_tracks * sizeof(Trk); \ + for(int t=0;tdata; + int ssize = *(int*)ptr; + if (ssize!= sizeof(*this)) + ALIGNMENT_ERROR("iwm",ssize,sizeof(*this)); + ptr += sizeof(ssize); + memcpy(this,ptr,sizeof(*this)); + + RESTORE_TRK_PTR(iwm.drive525[0],drive5251); + RESTORE_TRK_PTR(iwm.drive525[1],drive5252); + RESTORE_TRK_PTR(iwm.drive35[0],drive351); + RESTORE_TRK_PTR(iwm.drive35[1],drive352); + RESTORE_TRK_PTR(iwm.smartport[0],smartport0); + RESTORE_TRK_PTR(iwm.smartport[1],smartport1); + RESTORE_TRK_PTR(iwm.smartport[2],smartport2); + RESTORE_TRK_PTR(iwm.smartport[3],smartport3); + + + + } + + int out(serialize* _s, int _fastalloc) + { + // calcule la taille totale de la structure + + SAVE_TRK_PTR(iwm.drive525[0],drive5251); + SAVE_TRK_PTR(iwm.drive525[1],drive5252); + SAVE_TRK_PTR(iwm.drive35[0],drive351); + SAVE_TRK_PTR(iwm.drive35[1],drive352); + SAVE_TRK_PTR(iwm.smartport[0],smartport0); + SAVE_TRK_PTR(iwm.smartport[1],smartport1); + SAVE_TRK_PTR(iwm.smartport[2],smartport2); + SAVE_TRK_PTR(iwm.smartport[3],smartport3); + + // copie la structure de base + + int ssize = sizeof(*this); + int size = ssize + sizeof(ssize); + _s->size = size; + _s->fastalloc = _fastalloc; + _s->data = (void*)x_malloc(size,_fastalloc); + byte* ptr = (byte*) _s->data; + memcpy(ptr,&ssize,sizeof(ssize)); + ptr+=sizeof(ssize); + memcpy(ptr,this,sizeof(*this)); + + RESTORE_TRK_PTR(iwm.drive525[0],drive5251); + RESTORE_TRK_PTR(iwm.drive525[1],drive5252); + RESTORE_TRK_PTR(iwm.drive35[0],drive351); + RESTORE_TRK_PTR(iwm.drive35[1],drive352); + RESTORE_TRK_PTR(iwm.smartport[0],smartport0); + RESTORE_TRK_PTR(iwm.smartport[1],smartport1); + RESTORE_TRK_PTR(iwm.smartport[2],smartport2); + RESTORE_TRK_PTR(iwm.smartport[3],smartport3); + + return size; + } +} XCODE_PRAGMA_PACK; +#ifdef _WIN32 +#pragma pack(pop) +#endif + +extern s_iwm g_iwm; +extern int g_track_bytes_35[]; +extern int g_track_nibs_35[]; + +void iwm_init_drive(Disk *dsk, int smartport, int drive, int disk_525); +void disk_set_num_tracks(Disk *dsk, int num_tracks); +void iwm_init(void); +void iwm_shut(void); //OG +void iwm_reset(void); +void draw_iwm_status(int line, char *buf); +void iwm_flush_disk_to_unix(Disk *dsk); +void iwm_vbl_update(int doit_3_persec); +void iwm_show_stats(void); +void iwm_touch_switches(int loc, double dcycs); +void iwm_move_to_track(Disk *dsk, int new_track); +void iwm525_phase_change(int drive, int phase); +int iwm_read_status35(double dcycs); +void iwm_do_action35(double dcycs); +int iwm_read_c0ec(double dcycs); +int read_iwm(int loc, double dcycs); +void write_iwm(int loc, int val, double dcycs); +int iwm_read_enable2(double dcycs); +int iwm_read_enable2_handshake(double dcycs); +void iwm_write_enable2(int val, double dcycs); +int iwm_read_data(Disk *dsk, int fast_disk_emul, double dcycs); +void iwm_write_data(Disk *dsk, word32 val, int fast_disk_emul, double dcycs); +void sector_to_partial_nib(byte *in, byte *nib_ptr); +int disk_unnib_4x4(Disk *dsk); +int iwm_denib_track525(Disk *dsk, Trk *trk, int qtr_track, byte *outbuf); +int iwm_denib_track35(Disk *dsk, Trk *trk, int qtr_track, byte *outbuf); +int disk_track_to_unix(Disk *dsk, int qtr_track, byte *outbuf); +void show_hex_data(byte *buf, int count); +void disk_check_nibblization(Disk *dsk, int qtr_track, byte *buf, int size); +void disk_unix_to_nib(Disk *dsk, int qtr_track, int unix_pos, int unix_len, int nib_len); +void iwm_nibblize_track_nib525(Disk *dsk, Trk *trk, byte *track_buf, int qtr_track); +void iwm_nibblize_track_525(Disk *dsk, Trk *trk, byte *track_buf, int qtr_track); +void iwm_nibblize_track_35(Disk *dsk, Trk *trk, byte *track_buf, int qtr_track); +void disk_4x4_nib_out(Disk *dsk, word32 val); +void disk_nib_out(Disk *dsk, byte val, int size); +void disk_nib_end_track(Disk *dsk); +void iwm_show_track(int slot_drive, int track); +void iwm_show_a_track(Trk *trk); + + diff --git a/kegs/Src/iwm_35_525.h b/kegs/Src/iwm_35_525.h new file mode 100644 index 0000000..45bcca4 --- /dev/null +++ b/kegs/Src/iwm_35_525.h @@ -0,0 +1,331 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#ifdef INCLUDE_IWM_RCSID_C +const char rcsdif_iwm_35_525_h[] = "@(#)$KmKId: iwm_35_525.h,v 1.14 2004-12-01 19:45:02-05 kentd Exp $"; +#endif + +int +IWM_READ_ROUT (Disk *dsk, int fast_disk_emul, double dcycs) +{ + Trk *trk; + double dcycs_last_read; + int pos; + int pos2; + int size; + int next_size; + int qtr_track; + int skip_nibs; + int track_len; + byte ret; + int shift; + int skip; + int cycs_this_nib; + int cycs_passed; + double dcycs_this_nib; + double dcycs_next_nib; + double dcycs_passed; + double track_dcycs; + double dtmp; + + g_iwm.iwm.previous_write_bits = 0; + + qtr_track = dsk->cur_qtr_track; + +#if IWM_DISK_525 + qtr_track = qtr_track & -4; /* round to nearest whole trk! */ +#endif + + trk = 0; + track_len = 0; + if(dsk->trks) { + trk = &(dsk->trks[qtr_track]); + track_len = trk->track_len; + } + + dcycs_last_read = dsk->dcycs_last_read; + dcycs_passed = dcycs - dcycs_last_read; + + cycs_passed = (int)dcycs_passed; + + if(track_len == 0) { + ret = (cycs_passed & 0x7f) + 0x80; + iwm_printf("Reading c0ec, track_len 0, returning %02x\n", ret); + return ret; + } + + pos = dsk->nib_pos; + if(pos >= track_len) { + /* Arm may have moved from inner 3.5 track to outer one, */ + /* and so must make pos fit on smaller sized track */ + pos = 0; + } + + if (pos<0) + { + printf("invalid pos"); + pos=0; + } + size = trk->nib_area[pos]; + + while(size == 0) { + pos += 2; + if(pos >= track_len) { + pos = 0; + } + size = trk->nib_area[pos]; + } + + cycs_this_nib = size * (2 * IWM_CYC_MULT); + dcycs_this_nib = (double)cycs_this_nib; + + if(fast_disk_emul) { + cycs_passed = cycs_this_nib; + dcycs_passed = dcycs_this_nib; + + /* pull a trick to make disk motor-on test pass ($bd34 RWTS) */ + /* if this would be a sync byte, and we didn't just do this */ + /* then don't return whole byte */ + /* BUT, don't do this if g_fast_disk_unnib, since it will */ + /* cause the dsk->unix routines to break */ + if(size > 8 && !g_iwm.g_fast_disk_unnib && (g_iwm.g_iwm_fake_fast == 0)) { + cycs_passed = cycs_passed >> 1; + dcycs_passed = dcycs_passed * 0.5; + g_iwm.g_iwm_fake_fast = 1; + } else { + g_iwm.g_iwm_fake_fast = 0; + } + } + + skip = 0; + if(cycs_passed >= (cycs_this_nib + 11)) { + /* skip some bits? */ + skip = 1; + if(g_iwm.iwm.iwm_mode & 1) { + /* latch mode */ + + pos2 = pos + 2; + if(pos2 >= track_len) { + pos2 = 0; + } + next_size = trk->nib_area[pos2]; + while(next_size == 0) { + pos2 += 2; + if(pos2 >= track_len) { + pos2 = 0; + } + next_size = trk->nib_area[pos2]; + } + + dcycs_next_nib = next_size * (2 * IWM_CYC_MULT); + + if(dcycs_passed < (dcycs_this_nib + dcycs_next_nib)) { + skip = 0; + } + } + } + + if(skip) { + iwm_printf("skip since cycs_passed: %f, cycs_this_nib: %f\n", + dcycs_passed, dcycs_this_nib); + + track_dcycs = IWM_CYC_MULT * (track_len * 8); + + if(dcycs_passed >= track_dcycs) { + dtmp = (int)(dcycs_passed / track_dcycs); + dcycs_passed = dcycs_passed - + (dtmp * track_dcycs); + dcycs_last_read += (dtmp * track_dcycs); + } + + if(dcycs_passed >= track_dcycs || dcycs_passed < 0.0) { + dcycs_passed = 0.0; + } + + cycs_passed = (int)dcycs_passed; + + skip_nibs = ((word32)cycs_passed) >> (4 + IWM_DISK_525); + + pos += skip_nibs * 2; + while(pos >= track_len) { + pos -= track_len; + } + + dcycs_last_read += (skip_nibs * 16 * IWM_CYC_MULT); + + dsk->dcycs_last_read = dcycs_last_read; + + size = trk->nib_area[pos]; + dcycs_passed = dcycs - dcycs_last_read; + if(dcycs_passed < 0.0 || dcycs_passed > 64.0) { + halt_printf("skip, last_read:%f, dcycs:%f, dcyc_p:%f\n", + dcycs_last_read, dcycs, dcycs_passed); + } + + while(size == 0) { + pos += 2; + if(pos >= track_len) { + pos = 0; + } + size = trk->nib_area[pos]; + } + + cycs_this_nib = size * (2 * IWM_CYC_MULT); + cycs_passed = (int)dcycs_passed; + dcycs_this_nib = cycs_this_nib; + } + + if(cycs_passed < cycs_this_nib) { + /* partial */ +#if 0 + iwm_printf("Disk partial, %f < %f, size: %d\n", + dcycs_passed, dcycs_this_nib, size); +#endif + shift = (cycs_passed) >> (1 + IWM_DISK_525); + ret = trk->nib_area[pos+1] >> (size - shift); + if(ret & 0x80) { + halt_printf("Bad shift in partial read: %02x, but " + "c_pass:%f, this_nib:%f, shift: %d, size: %d\n", + ret, dcycs_passed, dcycs_this_nib, shift, size); + } + } else { + /* whole thing */ + ret = trk->nib_area[pos+1]; + pos += 2; + if(pos >= track_len) { + pos = 0; + } + if(!fast_disk_emul) { + dsk->dcycs_last_read = dcycs_last_read + dcycs_this_nib; + } + } + + dsk->nib_pos = pos; + if(pos < 0 || pos > track_len) { + halt_printf("I just set nib_pos: %d!\n", pos); + } + +#if 0 + iwm_printf("Disk read, returning: %02x\n", ret); +#endif + + return ret; +} + + +void +IWM_WRITE_ROUT (Disk *dsk, word32 val, int fast_disk_emul, double dcycs) +{ + double dcycs_last_read; + int bits_read; // OG must be signed to detect errors + word32 mask; + word32 prev_val; + double dcycs_this_nib; + double dcycs_passed; + int sdiff; + int prev_bits; + + if(dsk->fd < 0 || dsk->trks == 0) { + halt_printf("Tried to write to type: %d, drive: %d, fd: %d!\n", + IWM_DISK_525, dsk->drive, dsk->fd, dsk->trks); + return; + } + + dcycs_last_read = dsk->dcycs_last_read; + + dcycs_passed = dcycs - dcycs_last_read; + + prev_val = g_iwm.iwm.previous_write_val; + prev_bits = g_iwm.iwm.previous_write_bits; + mask = 0x100; + iwm_printf("Iwm write: prev: %x,%d, new:%02x\n", prev_val, prev_bits, + val); + + if(IWM_DISK_525) { + /* Activate slow write emulation mode */ + g_iwm.g_dcycs_end_emul_wr = dcycs + 64.0; + if(!g_iwm.g_slow_525_emul_wr) { + set_halt(HALT_EVENT); + g_iwm.g_slow_525_emul_wr = 1; + } + } else { + /* disable slow writes on 3.5" drives */ + if(g_iwm.g_slow_525_emul_wr) { + set_halt(HALT_EVENT); + printf("HACK3: g_slow_525_emul_wr set to 0\n"); + g_iwm.g_slow_525_emul_wr = 0; + } + } + + if(g_iwm.iwm.iwm_mode & 2) { + /* async mode = 3.5" default */ + bits_read = 8; + } else { + /* sync mode, 5.25" drives */ + bits_read = ((int)dcycs_passed) >> (1 + IWM_DISK_525); + if(bits_read < 8) { + bits_read = 8; + } + } + + if(fast_disk_emul) { + bits_read = 8; + } + + dcycs_this_nib = bits_read * (2 * IWM_CYC_MULT); + + if(fast_disk_emul) { + dcycs_passed = dcycs_this_nib; + } + + if(prev_bits > 0) { + while((prev_val & 0x80) == 0 && bits_read > 0) { + /* previous byte needs some bits */ + mask = mask >> 1; + prev_val = (prev_val << 1) + ((val & mask) !=0); + prev_bits++; + bits_read--; + } + } + + val = val & (mask - 1); + if(prev_bits) { + /* force out prev_val if it had many bits before */ + /* this prevents writes of 0 from messing us up */ + if(((prev_val & 0x80) == 0) && (prev_bits < 10)) { + /* special case: we still don't have enough to go */ + iwm_printf("iwm_write: zip2: %02x, %d, left:%02x,%d\n", + prev_val, prev_bits, val,bits_read); + val = prev_val; + bits_read = prev_bits; + } else { + iwm_printf("iwm_write: prev: %02x, %d, left:%02x, %d\n", + prev_val, prev_bits, val, bits_read); + disk_nib_out(dsk, prev_val, prev_bits); + } + } else if(val & 0x80) { + iwm_printf("iwm_write: new: %02x, %d\n", val,bits_read); + disk_nib_out(dsk, val, bits_read); + bits_read = 0; + } else { + iwm_printf("iwm_write: zip: %02x, %d, left:%02x,%d\n", + prev_val, prev_bits, val,bits_read); + } + + g_iwm.iwm.previous_write_val = val; + g_iwm.iwm.previous_write_bits = bits_read; + if(bits_read < 0) { + halt_printf("iwm, bits_rd:%d, val:%08x, prev:%02x, prevb:%d\n", + bits_read, val, prev_val, prev_bits); + } + + sdiff = (int)( dcycs - dcycs_last_read ); + if(sdiff < (dcycs_this_nib) || (sdiff > (2*dcycs_this_nib)) ) { + dsk->dcycs_last_read = dcycs; + } else { + dsk->dcycs_last_read = dcycs_last_read + dcycs_this_nib; + } +} diff --git a/kegs/Src/kegsfont.h b/kegs/Src/kegsfont.h new file mode 100644 index 0000000..15211dd --- /dev/null +++ b/kegs/Src/kegsfont.h @@ -0,0 +1,517 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + + { 0xc7, 0xbb, 0xab, 0xa3, 0xa7, 0xbf, 0xc3, 0xff }, +/* char 0x01 (raw 0x41) */ + { 0xef, 0xd7, 0xbb, 0xbb, 0x83, 0xbb, 0xbb, 0xff }, +/* char 0x02 (raw 0x42) */ + { 0x87, 0xbb, 0xbb, 0x87, 0xbb, 0xbb, 0x87, 0xff }, +/* char 0x03 (raw 0x43) */ + { 0xc7, 0xbb, 0xbf, 0xbf, 0xbf, 0xbb, 0xc7, 0xff }, +/* char 0x04 (raw 0x44) */ + { 0x87, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x87, 0xff }, +/* char 0x05 (raw 0x45) */ + { 0x83, 0xbf, 0xbf, 0x87, 0xbf, 0xbf, 0x83, 0xff }, +/* char 0x06 (raw 0x46) */ + { 0x83, 0xbf, 0xbf, 0x87, 0xbf, 0xbf, 0xbf, 0xff }, +/* char 0x07 (raw 0x47) */ + { 0xc3, 0xbf, 0xbf, 0xbf, 0xb3, 0xbb, 0xc3, 0xff }, +/* char 0x08 (raw 0x48) */ + { 0xbb, 0xbb, 0xbb, 0x83, 0xbb, 0xbb, 0xbb, 0xff }, +/* char 0x09 (raw 0x49) */ + { 0xc7, 0xef, 0xef, 0xef, 0xef, 0xef, 0xc7, 0xff }, +/* char 0x0a (raw 0x4a) */ + { 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xbb, 0xc7, 0xff }, +/* char 0x0b (raw 0x4b) */ + { 0xbb, 0xb7, 0xaf, 0x9f, 0xaf, 0xb7, 0xbb, 0xff }, +/* char 0x0c (raw 0x4c) */ + { 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0x83, 0xff }, +/* char 0x0d (raw 0x4d) */ + { 0xbb, 0x93, 0xab, 0xab, 0xbb, 0xbb, 0xbb, 0xff }, +/* char 0x0e (raw 0x4e) */ + { 0xbb, 0xbb, 0x9b, 0xab, 0xb3, 0xbb, 0xbb, 0xff }, +/* char 0x0f (raw 0x4f) */ + { 0xc7, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xc7, 0xff }, +/* char 0x10 (raw 0x50) */ + { 0x87, 0xbb, 0xbb, 0x87, 0xbf, 0xbf, 0xbf, 0xff }, +/* char 0x11 (raw 0x51) */ + { 0xc7, 0xbb, 0xbb, 0xbb, 0xab, 0xb7, 0xcb, 0xff }, +/* char 0x12 (raw 0x52) */ + { 0x87, 0xbb, 0xbb, 0x87, 0xaf, 0xb7, 0xbb, 0xff }, +/* char 0x13 (raw 0x53) */ + { 0xc7, 0xbb, 0xbf, 0xc7, 0xfb, 0xbb, 0xc7, 0xff }, +/* char 0x14 (raw 0x54) */ + { 0x83, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xff }, +/* char 0x15 (raw 0x55) */ + { 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xc7, 0xff }, +/* char 0x16 (raw 0x56) */ + { 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xd7, 0xef, 0xff }, +/* char 0x17 (raw 0x57) */ + { 0xbb, 0xbb, 0xbb, 0xab, 0xab, 0x93, 0xbb, 0xff }, +/* char 0x18 (raw 0x58) */ + { 0xbb, 0xbb, 0xd7, 0xef, 0xd7, 0xbb, 0xbb, 0xff }, +/* char 0x19 (raw 0x59) */ + { 0xbb, 0xbb, 0xd7, 0xef, 0xef, 0xef, 0xef, 0xff }, +/* char 0x1a (raw 0x5a) */ + { 0x83, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x83, 0xff }, +/* char 0x1b (raw 0x5b) */ + { 0x83, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x83, 0xff }, +/* char 0x1c (raw 0x5c) */ + { 0xff, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xff, 0xff }, +/* char 0x1d (raw 0x5d) */ + { 0x83, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0x83, 0xff }, +/* char 0x1e (raw 0x5e) */ + { 0xff, 0xff, 0xef, 0xd7, 0xbb, 0xff, 0xff, 0xff }, +/* char 0x1f (raw 0x5f) */ + { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01 }, +/* char 0x20 (raw 0x20) */ + { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, +/* char 0x21 (raw 0x21) */ + { 0xef, 0xef, 0xef, 0xef, 0xef, 0xff, 0xef, 0xff }, +/* char 0x22 (raw 0x22) */ + { 0xd7, 0xd7, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff }, +/* char 0x23 (raw 0x23) */ + { 0xd7, 0xd7, 0x83, 0xd7, 0x83, 0xd7, 0xd7, 0xff }, +/* char 0x24 (raw 0x24) */ + { 0xef, 0xc3, 0xaf, 0xc7, 0xeb, 0x87, 0xef, 0xff }, +/* char 0x25 (raw 0x25) */ + { 0x9f, 0x9b, 0xf7, 0xef, 0xdf, 0xb3, 0xf3, 0xff }, +/* char 0x26 (raw 0x26) */ + { 0xdf, 0xaf, 0xaf, 0xdf, 0xab, 0xb7, 0xcb, 0xff }, +/* char 0x27 (raw 0x27) */ + { 0xef, 0xef, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff }, +/* char 0x28 (raw 0x28) */ + { 0xef, 0xdf, 0xbf, 0xbf, 0xbf, 0xdf, 0xef, 0xff }, +/* char 0x29 (raw 0x29) */ + { 0xef, 0xf7, 0xfb, 0xfb, 0xfb, 0xf7, 0xef, 0xff }, +/* char 0x2a (raw 0x2a) */ + { 0xef, 0xab, 0xc7, 0xef, 0xc7, 0xab, 0xef, 0xff }, +/* char 0x2b (raw 0x2b) */ + { 0xff, 0xef, 0xef, 0x83, 0xef, 0xef, 0xff, 0xff }, +/* char 0x2c (raw 0x2c) */ + { 0xff, 0xff, 0xff, 0xff, 0xef, 0xef, 0xdf, 0xff }, +/* char 0x2d (raw 0x2d) */ + { 0xff, 0xff, 0xff, 0x83, 0xff, 0xff, 0xff, 0xff }, +/* char 0x2e (raw 0x2e) */ + { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff }, +/* char 0x2f (raw 0x2f) */ + { 0xff, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0xff, 0xff }, +/* char 0x30 (raw 0x30) */ + { 0xc7, 0xbb, 0xb3, 0xab, 0x9b, 0xbb, 0xc7, 0xff }, +/* char 0x31 (raw 0x31) */ + { 0xef, 0xcf, 0xef, 0xef, 0xef, 0xef, 0xc7, 0xff }, +/* char 0x32 (raw 0x32) */ + { 0xc7, 0xbb, 0xfb, 0xe7, 0xdf, 0xbf, 0x83, 0xff }, +/* char 0x33 (raw 0x33) */ + { 0x83, 0xfb, 0xf7, 0xe7, 0xfb, 0xbb, 0xc7, 0xff }, +/* char 0x34 (raw 0x34) */ + { 0xf7, 0xe7, 0xd7, 0xb7, 0x83, 0xf7, 0xf7, 0xff }, +/* char 0x35 (raw 0x35) */ + { 0x83, 0xbf, 0x87, 0xfb, 0xfb, 0xbb, 0xc7, 0xff }, +/* char 0x36 (raw 0x36) */ + { 0xe3, 0xdf, 0xbf, 0x87, 0xbb, 0xbb, 0xc7, 0xff }, +/* char 0x37 (raw 0x37) */ + { 0x83, 0xfb, 0xf7, 0xef, 0xdf, 0xdf, 0xdf, 0xff }, +/* char 0x38 (raw 0x38) */ + { 0xc7, 0xbb, 0xbb, 0xc7, 0xbb, 0xbb, 0xc7, 0xff }, +/* char 0x39 (raw 0x39) */ + { 0xc7, 0xbb, 0xbb, 0xc3, 0xfb, 0xf7, 0x8f, 0xff }, +/* char 0x3a (raw 0x3a) */ + { 0xff, 0xff, 0xef, 0xff, 0xef, 0xff, 0xff, 0xff }, +/* char 0x3b (raw 0x3b) */ + { 0xff, 0xff, 0xef, 0xff, 0xef, 0xef, 0xdf, 0xff }, +/* char 0x3c (raw 0x3c) */ + { 0xf7, 0xef, 0xdf, 0xbf, 0xdf, 0xef, 0xf7, 0xff }, +/* char 0x3d (raw 0x3d) */ + { 0xff, 0xff, 0x83, 0xff, 0x83, 0xff, 0xff, 0xff }, +/* char 0x3e (raw 0x3e) */ + { 0xdf, 0xef, 0xf7, 0xfb, 0xf7, 0xef, 0xdf, 0xff }, +/* char 0x3f (raw 0x3f) */ + { 0xc7, 0xbb, 0xf7, 0xef, 0xef, 0xff, 0xef, 0xff }, +/* char 0x40 (raw 0x14) */ + { 0x08, 0x10, 0x6c, 0xfe, 0xfc, 0xfc, 0x7e, 0x6c }, +/* char 0x41 (raw 0x11) */ + { 0x08, 0x10, 0x6c, 0x82, 0x84, 0x84, 0x52, 0x6c }, +/* char 0x42 (raw 0xf5) */ + { 0x00, 0x00, 0x40, 0x60, 0x70, 0x78, 0x6c, 0x42 }, +/* char 0x43 (raw 0x82) */ + { 0xfe, 0x44, 0x28, 0x10, 0x10, 0x28, 0x54, 0xfe }, +/* char 0x44 (raw 0xeb) */ + { 0x00, 0x02, 0x04, 0x88, 0x50, 0x20, 0x20, 0x00 }, +/* char 0x45 (raw 0xe4) */ + { 0xfe, 0xfc, 0xfa, 0x36, 0xae, 0xde, 0xde, 0xfe }, +/* char 0x46 (raw 0xec) */ + { 0xfc, 0xfc, 0xfc, 0xdc, 0x9c, 0x00, 0x9e, 0xde }, +/* char 0x47 (raw 0xed) */ + { 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0xfe }, +/* char 0x48 (raw 0xee) */ + { 0x10, 0x20, 0x40, 0xfe, 0x40, 0x20, 0x10, 0x00 }, +/* char 0x49 (raw 0xe9) */ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54 }, +/* char 0x4a (raw 0xef) */ + { 0x10, 0x10, 0x10, 0x10, 0x92, 0x54, 0x38, 0x10 }, +/* char 0x4b (raw 0xf0) */ + { 0x10, 0x38, 0x54, 0x92, 0x10, 0x10, 0x10, 0x10 }, +/* char 0x4c (raw 0xf1) */ + { 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, +/* char 0x4d (raw 0xf7) */ + { 0x02, 0x02, 0x02, 0x22, 0x62, 0xfe, 0x60, 0x20 }, +/* char 0x4e (raw 0xf6) */ + { 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc }, +/* char 0x4f (raw 0xaf) */ + { 0xc8, 0x18, 0x38, 0x7e, 0x38, 0x18, 0x08, 0xf6 }, +/* char 0x50 (raw 0xb8) */ + { 0x26, 0x30, 0x38, 0xfc, 0x38, 0x30, 0x20, 0xde }, +/* char 0x51 (raw 0xce) */ + { 0x02, 0x12, 0x10, 0xfe, 0x7c, 0x38, 0x12, 0x02 }, +/* char 0x52 (raw 0xe5) */ + { 0x02, 0x12, 0x38, 0x7c, 0xfe, 0x10, 0x12, 0x02 }, +/* char 0x53 (raw 0xea) */ + { 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00 }, +/* char 0x54 (raw 0xe6) */ + { 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xfe }, +/* char 0x55 (raw 0xe8) */ + { 0x10, 0x08, 0x04, 0xfe, 0x04, 0x08, 0x10, 0x00 }, +/* char 0x56 (raw 0xd7) */ + { 0x54, 0xaa, 0x54, 0xaa, 0x54, 0xaa, 0x54, 0xaa }, +/* char 0x57 (raw 0xe3) */ + { 0xaa, 0x54, 0xaa, 0x54, 0xaa, 0x54, 0xaa, 0x54 }, +/* char 0x58 (raw 0xf4) */ + { 0x00, 0x7c, 0x82, 0x80, 0x80, 0x80, 0xfe, 0x00 }, +/* char 0x59 (raw 0xe7) */ + { 0x00, 0x00, 0xfc, 0x02, 0x02, 0x02, 0xfe, 0x00 }, +/* char 0x5a (raw 0xf3) */ + { 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 }, +/* char 0x5b (raw 0xd2) */ + { 0x10, 0x38, 0x7c, 0xfe, 0x7c, 0x38, 0x10, 0x00 }, +/* char 0x5c (raw 0xc7) */ + { 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe }, +/* char 0x5d (raw 0xd4) */ + { 0x28, 0x28, 0xee, 0x00, 0xee, 0x28, 0x28, 0x00 }, +/* char 0x5e (raw 0xdf) */ + { 0xfe, 0x02, 0x02, 0x32, 0x32, 0x02, 0x02, 0xfe }, +/* char 0x5f (raw 0xd1) */ + { 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 }, +/* char 0x60 (raw 0x60) */ + { 0xdf, 0xef, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff }, +/* char 0x61 (raw 0x61) */ + { 0xff, 0xff, 0xc7, 0xfb, 0xc3, 0xbb, 0xc3, 0xff }, +/* char 0x62 (raw 0x62) */ + { 0xbf, 0xbf, 0x87, 0xbb, 0xbb, 0xbb, 0x87, 0xff }, +/* char 0x63 (raw 0x63) */ + { 0xff, 0xff, 0xc3, 0xbf, 0xbf, 0xbf, 0xc3, 0xff }, +/* char 0x64 (raw 0x64) */ + { 0xfb, 0xfb, 0xc3, 0xbb, 0xbb, 0xbb, 0xc3, 0xff }, +/* char 0x65 (raw 0x65) */ + { 0xff, 0xff, 0xc7, 0xbb, 0x83, 0xbf, 0xc3, 0xff }, +/* char 0x66 (raw 0x66) */ + { 0xe7, 0xdb, 0xdf, 0x87, 0xdf, 0xdf, 0xdf, 0xff }, +/* char 0x67 (raw 0x67) */ + { 0xff, 0xff, 0xc7, 0xbb, 0xbb, 0xc3, 0xfb, 0xc7 }, +/* char 0x68 (raw 0x68) */ + { 0xbf, 0xbf, 0x87, 0xbb, 0xbb, 0xbb, 0xbb, 0xff }, +/* char 0x69 (raw 0x69) */ + { 0xef, 0xff, 0xcf, 0xef, 0xef, 0xef, 0xc7, 0xff }, +/* char 0x6a (raw 0x6a) */ + { 0xf7, 0xff, 0xe7, 0xf7, 0xf7, 0xf7, 0xb7, 0xcf }, +/* char 0x6b (raw 0x6b) */ + { 0xbf, 0xbf, 0xbb, 0xb7, 0x8f, 0xb7, 0xbb, 0xff }, +/* char 0x6c (raw 0x6c) */ + { 0xcf, 0xef, 0xef, 0xef, 0xef, 0xef, 0xc7, 0xff }, +/* char 0x6d (raw 0x6d) */ + { 0xff, 0xff, 0x93, 0xab, 0xab, 0xab, 0xbb, 0xff }, +/* char 0x6e (raw 0x6e) */ + { 0xff, 0xff, 0x87, 0xbb, 0xbb, 0xbb, 0xbb, 0xff }, +/* char 0x6f (raw 0x6f) */ + { 0xff, 0xff, 0xc7, 0xbb, 0xbb, 0xbb, 0xc7, 0xff }, +/* char 0x70 (raw 0x70) */ + { 0xff, 0xff, 0x87, 0xbb, 0xbb, 0x87, 0xbf, 0xbf }, +/* char 0x71 (raw 0x71) */ + { 0xff, 0xff, 0xc3, 0xbb, 0xbb, 0xc3, 0xfb, 0xfb }, +/* char 0x72 (raw 0x72) */ + { 0xff, 0xff, 0xa3, 0x9f, 0xbf, 0xbf, 0xbf, 0xff }, +/* char 0x73 (raw 0x73) */ + { 0xff, 0xff, 0xc3, 0xbf, 0xc7, 0xfb, 0x87, 0xff }, +/* char 0x74 (raw 0x74) */ + { 0xdf, 0xdf, 0x87, 0xdf, 0xdf, 0xdb, 0xe7, 0xff }, +/* char 0x75 (raw 0x75) */ + { 0xff, 0xff, 0xbb, 0xbb, 0xbb, 0xb3, 0xcb, 0xff }, +/* char 0x76 (raw 0x76) */ + { 0xff, 0xff, 0xbb, 0xbb, 0xbb, 0xd7, 0xef, 0xff }, +/* char 0x77 (raw 0x77) */ + { 0xff, 0xff, 0xbb, 0xbb, 0xab, 0xab, 0x93, 0xff }, +/* char 0x78 (raw 0x78) */ + { 0xff, 0xff, 0xbb, 0xd7, 0xef, 0xd7, 0xbb, 0xff }, +/* char 0x79 (raw 0x79) */ + { 0xff, 0xff, 0xbb, 0xbb, 0xbb, 0xc3, 0xfb, 0xc7 }, +/* char 0x7a (raw 0x7a) */ + { 0xff, 0xff, 0x83, 0xf7, 0xef, 0xdf, 0x83, 0xff }, +/* char 0x7b (raw 0x7b) */ + { 0xe3, 0xcf, 0xcf, 0x9f, 0xcf, 0xcf, 0xe3, 0xff }, +/* char 0x7c (raw 0x7c) */ + { 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef }, +/* char 0x7d (raw 0x7d) */ + { 0x8f, 0xe7, 0xe7, 0xf3, 0xe7, 0xe7, 0x8f, 0xff }, +/* char 0x7e (raw 0x7e) */ + { 0xcb, 0xa7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, +/* char 0x7f (raw 0x7f) */ + { 0xff, 0xab, 0xd7, 0xab, 0xd7, 0xab, 0xff, 0xff }, +/* char 0x80 (raw 0x40) */ + { 0x38, 0x44, 0x54, 0x5c, 0x58, 0x40, 0x3c, 0x00 }, +/* char 0x81 (raw 0x41) */ + { 0x10, 0x28, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x00 }, +/* char 0x82 (raw 0x42) */ + { 0x78, 0x44, 0x44, 0x78, 0x44, 0x44, 0x78, 0x00 }, +/* char 0x83 (raw 0x43) */ + { 0x38, 0x44, 0x40, 0x40, 0x40, 0x44, 0x38, 0x00 }, +/* char 0x84 (raw 0x44) */ + { 0x78, 0x44, 0x44, 0x44, 0x44, 0x44, 0x78, 0x00 }, +/* char 0x85 (raw 0x45) */ + { 0x7c, 0x40, 0x40, 0x78, 0x40, 0x40, 0x7c, 0x00 }, +/* char 0x86 (raw 0x46) */ + { 0x7c, 0x40, 0x40, 0x78, 0x40, 0x40, 0x40, 0x00 }, +/* char 0x87 (raw 0x47) */ + { 0x3c, 0x40, 0x40, 0x40, 0x4c, 0x44, 0x3c, 0x00 }, +/* char 0x88 (raw 0x48) */ + { 0x44, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x44, 0x00 }, +/* char 0x89 (raw 0x49) */ + { 0x38, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, 0x00 }, +/* char 0x8a (raw 0x4a) */ + { 0x04, 0x04, 0x04, 0x04, 0x04, 0x44, 0x38, 0x00 }, +/* char 0x8b (raw 0x4b) */ + { 0x44, 0x48, 0x50, 0x60, 0x50, 0x48, 0x44, 0x00 }, +/* char 0x8c (raw 0x4c) */ + { 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7c, 0x00 }, +/* char 0x8d (raw 0x4d) */ + { 0x44, 0x6c, 0x54, 0x54, 0x44, 0x44, 0x44, 0x00 }, +/* char 0x8e (raw 0x4e) */ + { 0x44, 0x44, 0x64, 0x54, 0x4c, 0x44, 0x44, 0x00 }, +/* char 0x8f (raw 0x4f) */ + { 0x38, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00 }, +/* char 0x90 (raw 0x50) */ + { 0x78, 0x44, 0x44, 0x78, 0x40, 0x40, 0x40, 0x00 }, +/* char 0x91 (raw 0x51) */ + { 0x38, 0x44, 0x44, 0x44, 0x54, 0x48, 0x34, 0x00 }, +/* char 0x92 (raw 0x52) */ + { 0x78, 0x44, 0x44, 0x78, 0x50, 0x48, 0x44, 0x00 }, +/* char 0x93 (raw 0x53) */ + { 0x38, 0x44, 0x40, 0x38, 0x04, 0x44, 0x38, 0x00 }, +/* char 0x94 (raw 0x54) */ + { 0x7c, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00 }, +/* char 0x95 (raw 0x55) */ + { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00 }, +/* char 0x96 (raw 0x56) */ + { 0x44, 0x44, 0x44, 0x44, 0x44, 0x28, 0x10, 0x00 }, +/* char 0x97 (raw 0x57) */ + { 0x44, 0x44, 0x44, 0x54, 0x54, 0x6c, 0x44, 0x00 }, +/* char 0x98 (raw 0x58) */ + { 0x44, 0x44, 0x28, 0x10, 0x28, 0x44, 0x44, 0x00 }, +/* char 0x99 (raw 0x59) */ + { 0x44, 0x44, 0x28, 0x10, 0x10, 0x10, 0x10, 0x00 }, +/* char 0x9a (raw 0x5a) */ + { 0x7c, 0x04, 0x08, 0x10, 0x20, 0x40, 0x7c, 0x00 }, +/* char 0x9b (raw 0x5b) */ + { 0x7c, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7c, 0x00 }, +/* char 0x9c (raw 0x5c) */ + { 0x00, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00 }, +/* char 0x9d (raw 0x5d) */ + { 0x7c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x7c, 0x00 }, +/* char 0x9e (raw 0x5e) */ + { 0x00, 0x00, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00 }, +/* char 0x9f (raw 0x5f) */ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe }, +/* char 0xa0 (raw 0x20) */ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, +/* char 0xa1 (raw 0x21) */ + { 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x10, 0x00 }, +/* char 0xa2 (raw 0x22) */ + { 0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00 }, +/* char 0xa3 (raw 0x23) */ + { 0x28, 0x28, 0x7c, 0x28, 0x7c, 0x28, 0x28, 0x00 }, +/* char 0xa4 (raw 0x24) */ + { 0x10, 0x3c, 0x50, 0x38, 0x14, 0x78, 0x10, 0x00 }, +/* char 0xa5 (raw 0x25) */ + { 0x60, 0x64, 0x08, 0x10, 0x20, 0x4c, 0x0c, 0x00 }, +/* char 0xa6 (raw 0x26) */ + { 0x20, 0x50, 0x50, 0x20, 0x54, 0x48, 0x34, 0x00 }, +/* char 0xa7 (raw 0x27) */ + { 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 }, +/* char 0xa8 (raw 0x28) */ + { 0x10, 0x20, 0x40, 0x40, 0x40, 0x20, 0x10, 0x00 }, +/* char 0xa9 (raw 0x29) */ + { 0x10, 0x08, 0x04, 0x04, 0x04, 0x08, 0x10, 0x00 }, +/* char 0xaa (raw 0x2a) */ + { 0x10, 0x54, 0x38, 0x10, 0x38, 0x54, 0x10, 0x00 }, +/* char 0xab (raw 0x2b) */ + { 0x00, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x00, 0x00 }, +/* char 0xac (raw 0x2c) */ + { 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x20, 0x00 }, +/* char 0xad (raw 0x2d) */ + { 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00 }, +/* char 0xae (raw 0x2e) */ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00 }, +/* char 0xaf (raw 0x2f) */ + { 0x00, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00 }, +/* char 0xb0 (raw 0x30) */ + { 0x38, 0x44, 0x4c, 0x54, 0x64, 0x44, 0x38, 0x00 }, +/* char 0xb1 (raw 0x31) */ + { 0x10, 0x30, 0x10, 0x10, 0x10, 0x10, 0x38, 0x00 }, +/* char 0xb2 (raw 0x32) */ + { 0x38, 0x44, 0x04, 0x18, 0x20, 0x40, 0x7c, 0x00 }, +/* char 0xb3 (raw 0x33) */ + { 0x7c, 0x04, 0x08, 0x18, 0x04, 0x44, 0x38, 0x00 }, +/* char 0xb4 (raw 0x34) */ + { 0x08, 0x18, 0x28, 0x48, 0x7c, 0x08, 0x08, 0x00 }, +/* char 0xb5 (raw 0x35) */ + { 0x7c, 0x40, 0x78, 0x04, 0x04, 0x44, 0x38, 0x00 }, +/* char 0xb6 (raw 0x36) */ + { 0x1c, 0x20, 0x40, 0x78, 0x44, 0x44, 0x38, 0x00 }, +/* char 0xb7 (raw 0x37) */ + { 0x7c, 0x04, 0x08, 0x10, 0x20, 0x20, 0x20, 0x00 }, +/* char 0xb8 (raw 0x38) */ + { 0x38, 0x44, 0x44, 0x38, 0x44, 0x44, 0x38, 0x00 }, +/* char 0xb9 (raw 0x39) */ + { 0x38, 0x44, 0x44, 0x3c, 0x04, 0x08, 0x70, 0x00 }, +/* char 0xba (raw 0x3a) */ + { 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00 }, +/* char 0xbb (raw 0x3b) */ + { 0x00, 0x00, 0x10, 0x00, 0x10, 0x10, 0x20, 0x00 }, +/* char 0xbc (raw 0x3c) */ + { 0x08, 0x10, 0x20, 0x40, 0x20, 0x10, 0x08, 0x00 }, +/* char 0xbd (raw 0x3d) */ + { 0x00, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x00, 0x00 }, +/* char 0xbe (raw 0x3e) */ + { 0x20, 0x10, 0x08, 0x04, 0x08, 0x10, 0x20, 0x00 }, +/* char 0xbf (raw 0x3f) */ + { 0x38, 0x44, 0x08, 0x10, 0x10, 0x00, 0x10, 0x00 }, +/* char 0xc0 (raw 0x40) */ + { 0x38, 0x44, 0x54, 0x5c, 0x58, 0x40, 0x3c, 0x00 }, +/* char 0xc1 (raw 0x41) */ + { 0x10, 0x28, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x00 }, +/* char 0xc2 (raw 0x42) */ + { 0x78, 0x44, 0x44, 0x78, 0x44, 0x44, 0x78, 0x00 }, +/* char 0xc3 (raw 0x43) */ + { 0x38, 0x44, 0x40, 0x40, 0x40, 0x44, 0x38, 0x00 }, +/* char 0xc4 (raw 0x44) */ + { 0x78, 0x44, 0x44, 0x44, 0x44, 0x44, 0x78, 0x00 }, +/* char 0xc5 (raw 0x45) */ + { 0x7c, 0x40, 0x40, 0x78, 0x40, 0x40, 0x7c, 0x00 }, +/* char 0xc6 (raw 0x46) */ + { 0x7c, 0x40, 0x40, 0x78, 0x40, 0x40, 0x40, 0x00 }, +/* char 0xc7 (raw 0x47) */ + { 0x3c, 0x40, 0x40, 0x40, 0x4c, 0x44, 0x3c, 0x00 }, +/* char 0xc8 (raw 0x48) */ + { 0x44, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x44, 0x00 }, +/* char 0xc9 (raw 0x49) */ + { 0x38, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, 0x00 }, +/* char 0xca (raw 0x4a) */ + { 0x04, 0x04, 0x04, 0x04, 0x04, 0x44, 0x38, 0x00 }, +/* char 0xcb (raw 0x4b) */ + { 0x44, 0x48, 0x50, 0x60, 0x50, 0x48, 0x44, 0x00 }, +/* char 0xcc (raw 0x4c) */ + { 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7c, 0x00 }, +/* char 0xcd (raw 0x4d) */ + { 0x44, 0x6c, 0x54, 0x54, 0x44, 0x44, 0x44, 0x00 }, +/* char 0xce (raw 0x4e) */ + { 0x44, 0x44, 0x64, 0x54, 0x4c, 0x44, 0x44, 0x00 }, +/* char 0xcf (raw 0x4f) */ + { 0x38, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00 }, +/* char 0xd0 (raw 0x50) */ + { 0x78, 0x44, 0x44, 0x78, 0x40, 0x40, 0x40, 0x00 }, +/* char 0xd1 (raw 0x51) */ + { 0x38, 0x44, 0x44, 0x44, 0x54, 0x48, 0x34, 0x00 }, +/* char 0xd2 (raw 0x52) */ + { 0x78, 0x44, 0x44, 0x78, 0x50, 0x48, 0x44, 0x00 }, +/* char 0xd3 (raw 0x53) */ + { 0x38, 0x44, 0x40, 0x38, 0x04, 0x44, 0x38, 0x00 }, +/* char 0xd4 (raw 0x54) */ + { 0x7c, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00 }, +/* char 0xd5 (raw 0x55) */ + { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00 }, +/* char 0xd6 (raw 0x56) */ + { 0x44, 0x44, 0x44, 0x44, 0x44, 0x28, 0x10, 0x00 }, +/* char 0xd7 (raw 0x57) */ + { 0x44, 0x44, 0x44, 0x54, 0x54, 0x6c, 0x44, 0x00 }, +/* char 0xd8 (raw 0x58) */ + { 0x44, 0x44, 0x28, 0x10, 0x28, 0x44, 0x44, 0x00 }, +/* char 0xd9 (raw 0x59) */ + { 0x44, 0x44, 0x28, 0x10, 0x10, 0x10, 0x10, 0x00 }, +/* char 0xda (raw 0x5a) */ + { 0x7c, 0x04, 0x08, 0x10, 0x20, 0x40, 0x7c, 0x00 }, +/* char 0xdb (raw 0x5b) */ + { 0x7c, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7c, 0x00 }, +/* char 0xdc (raw 0x5c) */ + { 0x00, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00 }, +/* char 0xdd (raw 0x5d) */ + { 0x7c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x7c, 0x00 }, +/* char 0xde (raw 0x5e) */ + { 0x00, 0x00, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00 }, +/* char 0xdf (raw 0x5f) */ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe }, +/* char 0xe0 (raw 0x60) */ + { 0x20, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00 }, +/* char 0xe1 (raw 0x61) */ + { 0x00, 0x00, 0x38, 0x04, 0x3c, 0x44, 0x3c, 0x00 }, +/* char 0xe2 (raw 0x62) */ + { 0x40, 0x40, 0x78, 0x44, 0x44, 0x44, 0x78, 0x00 }, +/* char 0xe3 (raw 0x63) */ + { 0x00, 0x00, 0x3c, 0x40, 0x40, 0x40, 0x3c, 0x00 }, +/* char 0xe4 (raw 0x64) */ + { 0x04, 0x04, 0x3c, 0x44, 0x44, 0x44, 0x3c, 0x00 }, +/* char 0xe5 (raw 0x65) */ + { 0x00, 0x00, 0x38, 0x44, 0x7c, 0x40, 0x3c, 0x00 }, +/* char 0xe6 (raw 0x66) */ + { 0x18, 0x24, 0x20, 0x78, 0x20, 0x20, 0x20, 0x00 }, +/* char 0xe7 (raw 0x67) */ + { 0x00, 0x00, 0x38, 0x44, 0x44, 0x3c, 0x04, 0x38 }, +/* char 0xe8 (raw 0x68) */ + { 0x40, 0x40, 0x78, 0x44, 0x44, 0x44, 0x44, 0x00 }, +/* char 0xe9 (raw 0x69) */ + { 0x10, 0x00, 0x30, 0x10, 0x10, 0x10, 0x38, 0x00 }, +/* char 0xea (raw 0x6a) */ + { 0x08, 0x00, 0x18, 0x08, 0x08, 0x08, 0x48, 0x30 }, +/* char 0xeb (raw 0x6b) */ + { 0x40, 0x40, 0x44, 0x48, 0x70, 0x48, 0x44, 0x00 }, +/* char 0xec (raw 0x6c) */ + { 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, 0x00 }, +/* char 0xed (raw 0x6d) */ + { 0x00, 0x00, 0x6c, 0x54, 0x54, 0x54, 0x44, 0x00 }, +/* char 0xee (raw 0x6e) */ + { 0x00, 0x00, 0x78, 0x44, 0x44, 0x44, 0x44, 0x00 }, +/* char 0xef (raw 0x6f) */ + { 0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00 }, +/* char 0xf0 (raw 0x70) */ + { 0x00, 0x00, 0x78, 0x44, 0x44, 0x78, 0x40, 0x40 }, +/* char 0xf1 (raw 0x71) */ + { 0x00, 0x00, 0x3c, 0x44, 0x44, 0x3c, 0x04, 0x04 }, +/* char 0xf2 (raw 0x72) */ + { 0x00, 0x00, 0x5c, 0x60, 0x40, 0x40, 0x40, 0x00 }, +/* char 0xf3 (raw 0x73) */ + { 0x00, 0x00, 0x3c, 0x40, 0x38, 0x04, 0x78, 0x00 }, +/* char 0xf4 (raw 0x74) */ + { 0x20, 0x20, 0x78, 0x20, 0x20, 0x24, 0x18, 0x00 }, +/* char 0xf5 (raw 0x75) */ + { 0x00, 0x00, 0x44, 0x44, 0x44, 0x4c, 0x34, 0x00 }, +/* char 0xf6 (raw 0x76) */ + { 0x00, 0x00, 0x44, 0x44, 0x44, 0x28, 0x10, 0x00 }, +/* char 0xf7 (raw 0x77) */ + { 0x00, 0x00, 0x44, 0x44, 0x54, 0x54, 0x6c, 0x00 }, +/* char 0xf8 (raw 0x78) */ + { 0x00, 0x00, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00 }, +/* char 0xf9 (raw 0x79) */ + { 0x00, 0x00, 0x44, 0x44, 0x44, 0x3c, 0x04, 0x38 }, +/* char 0xfa (raw 0x7a) */ + { 0x00, 0x00, 0x7c, 0x08, 0x10, 0x20, 0x7c, 0x00 }, +/* char 0xfb (raw 0x7b) */ + { 0x1c, 0x30, 0x30, 0x60, 0x30, 0x30, 0x1c, 0x00 }, +/* char 0xfc (raw 0x7c) */ + { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10 }, +/* char 0xfd (raw 0x7d) */ + { 0x70, 0x18, 0x18, 0x0c, 0x18, 0x18, 0x70, 0x00 }, +/* char 0xfe (raw 0x7e) */ + { 0x34, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, +/* char 0xff (raw 0x7f) */ + { 0x00, 0x54, 0x28, 0x54, 0x28, 0x54, 0x00, 0x00 }, diff --git a/kegs/Src/kegsversion.h b/kegs/Src/kegsversion.h new file mode 100644 index 0000000..253a699 --- /dev/null +++ b/kegs/Src/kegsversion.h @@ -0,0 +1,10 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + +const char* g_kegs_version_str = "0.91"; +const char* g_kegs_version_build = "3.7.1199"; diff --git a/kegs/Src/marinetti.cpp b/kegs/Src/marinetti.cpp new file mode 100644 index 0000000..0a977d7 --- /dev/null +++ b/kegs/Src/marinetti.cpp @@ -0,0 +1,881 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "defc.h" +#include "sim65816.h" +#include "marinetti.h" + + +#ifdef NO_MARINETTI_SUPPORT +int process_marinetti_command(int _command,word32* param, word32& _regx, word32& _regy) +{ + return TCPIP_ERR_NO_DEVICE; +} + +void marinetti_init() +{ + printf("no marinetti support\n"); +} + +void marinetti_shutdown() +{ + +} + + +#else + +/* + 05/6187: SEGMENT ARRIVE + 05/6905: ACK_FINWAIT2 + 05/6945: ACK_CLOSING + 05/6cd5: PROCESSTHIS + 05/505f: TCPIPMangleDomainName + 05/4c70: TCPIPValidateI + 05/3f4d: PASC2HEXIP + 05/6DE0: BASICACK + */ + + + +// Constantes + +MAC_STRUCT server_mac_addr; +IP_STRUCT server_ip_addr; +IP_STRUCT server_identifier; +IP_STRUCT gateway_ip_addr; +MAC_STRUCT gateway_mac_addr; +IP_STRUCT gateway_dns_addr; +IP_STRUCT gateway_mask_addr; +IP_STRUCT client_ip_addr; +IP_STRUCT local_ip_addr; +IP_STRUCT host_ip_addr; + +// Globales + +MAC_STRUCT client_mac_addr; +int eth_first,eth_last; +eth_queue ethqueues[MAX_ETH_QUEUE]; +tcp_queue tcpqueues[MAX_TCP_QUEUE]; +PConnection PConnections[MAX_TCP_CONNECTION]; + +double start_tcp_time; + +void marinetti_init() +{ + + MAC_SET(server_mac_addr,0xAB,0xAB,0xAB,0xAB,0xAB, 0xAB ); + IP_SET(server_ip_addr, 100,100,0,1 ); + IP_SET(server_identifier, 9,9,9,9 ); + IP_SET(gateway_ip_addr,128,0,0,254 ); + MAC_SET(gateway_mac_addr,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA ); + IP_SET(gateway_dns_addr, 208,67,222,222); // OPENDNS + IP_SET(gateway_mask_addr, 255,255,255,0 ); + IP_SET(client_ip_addr,128,0,0,100 ); + IP_SET(local_ip_addr,127,0,0,1 ); + IP_SET(host_ip_addr,128,0,0,1 ); + + +} + +void marinetti_shutdown() +{ + for(int i=0;iudp+sizeof(UDP_HEADER)); + int dhcplen = ntohs(p->udp.udp_len)-sizeof(UDP_HEADER); + + packet->udp.udp_dst = p->udp.udp_src; // inverse + packet->udp.udp_src = p->udp.udp_dst; // inverse + + DHCP_HEADER* target = (DHCP_HEADER*)((byte*)&packet->udp + sizeof(UDP_HEADER)); + // construit la rponse en UDP + byte* response_str = (byte*)target; + + unsigned int pos= sizeof(DHCP_HEADER)-DHCP_OPTION_LEN; + unsigned int parse= 0; + const byte* dhcp_request = _dhcp->options; + + // vrifie le magic cookie + if ( + dhcp_request[0]!=99 + || dhcp_request[1]!=130 + || dhcp_request[2]!=83 + || dhcp_request[3]!=99) + { + printf("invalid magic cookie\n"); + return 0; + } + memcpy(&response_str[pos],dhcp_request,4); + parse+=4; + pos+=4; + + while( parse < ( dhcplen - ( sizeof(DHCP_HEADER) - DHCP_OPTION_LEN) ) ) + { + int cmd = dhcp_request[parse++]; + if (cmd==255) //-1 + break; + int len = dhcp_request[parse++]; + + switch(cmd) + { + case 53: // messagetype + { + int type = dhcp_request[parse]; + response_str[pos++]=53; + response_str[pos++]=1; + + switch(type) + { + case dhcpdiscover: + printf(" ### [DHCP] dhcpdiscover"); + response_str[pos++]=dhcpoffer; + break; + case dhcprequest: // request + printf(" ### [DHCP] dhcprequest"); + response_str[pos++]=dhcppack; + break; + + } + } + break; + + case 55: // options + { + for(int l=0;ludp.udp_len = htons(sizeof(UDP_HEADER) + pos); + + packet->ip.protocol = 17; // udp + packet->ip.ver = 4; + packet->ip.ihl = 5; + packet->ip.ttl = 64; + packet->ip.ucSource = server_ip_addr; + packet->ip.ucDestination = client_ip_addr; + packet->ip.length = htons(sizeof(IP_HEADER)+sizeof(UDP_HEADER) + pos); + + packet->eth.type = htons(0x0800); // IP + packet->eth.dest_mac = client_mac_addr ; + packet->eth.source_mac = server_mac_addr ; + + target->yiaddr = client_ip_addr; + *(MAC_STRUCT*)&target->chaddr = client_mac_addr; + target->xid = _dhcp->xid; + packet->queuelen = sizeof(ETH_HEADER)+sizeof(IP_HEADER)+sizeof(UDP_HEADER) + pos; + packet->iplen = sizeof(UDP_HEADER) + pos; + packet->state = QS_TOSEND; + return 1; +} + + +int process_marinetti_command(int _command,word32* _param, word32& _regx, word32& _regy) +{ + + switch(_command) + { + case TCPIP_CMD_STARTUP: + { + printf("TCPIP_CMD_STARTUP\n"); +#ifdef _WIN32 + int err; + + WORD wVersionRequested; + WSADATA wsaData; + + wVersionRequested = MAKEWORD(2, 2); + err = WSAStartup(wVersionRequested, &wsaData); + if (err != 0) + { + printf("WSAStartup failed with error: %d\n", err); + return TCPIP_ERR_STARTUP_FAILED; + } +#endif + + return 0; + } + break; + + case TCPIP_CMD_GET_DATAGRAM: + { + _param[1]=0; + + server_loop(); + + // if (eth_first == eth_last) + for(int i=0;itcpsocket>=0) + { + if (p->socktype == PCT_HOST && p->type==RT_UDP )// && p->udp_query) + { + + // regarde si il y a des donnes de dispo + fd_set input_set; + timeval timeout; + timeout.tv_usec = 1; + timeout.tv_sec = 0; + FD_ZERO(&input_set); + FD_SET(p->tcpsocket,&input_set); + int s = select(p->tcpsocket+1,&input_set,NULL,NULL,&timeout); + if (s>0) + { + + byte recvbuf[MAX_UDP_SIZE]; + int iResult = recv(p->tcpsocket, (char*)recvbuf, MAX_UDP_SIZE, 0); + if ( iResult > 0 ) + { + _LOG("Bytes received: %d\n", iResult); + // p->udp_query--; + p->sendudppacket(iResult,recvbuf); + } + else if ( iResult == 0 ) + printf("Connection closed\n"); + else + printf("recv failed: %d\n", SockLastError()); + } + else + if (s==SOCKET_ERROR) + printf("select failed: %d\n", SockLastError()); + } + else + if ( p->type==RT_TCP && p->state == PCS_CLEARINGQUEUE) + { + // regarde si il y a encore des donnes envoyer pour cette connection + int empty=1; + for(int q=0;qstate = PCS_LASTACK; + p->sendtcppacket(TCP_ACK|TCP_FIN,0,NULL); + p->state_seq = p->send_seq; + printf("\nLAST ACK SENT\n"); + } + + } + else + if ( p->type==RT_TCP&& p->state == PCS_ESTABLISHED && (p->already_sent<(p->window-MAX_TCP_SIZE))) + { + // regarde si il y a des donnes TCP en entre + // regarde si il y a des donnes de dispo + fd_set input_set; + timeval timeout; + timeout.tv_usec = 1; + timeout.tv_sec = 0; + FD_ZERO(&input_set); + FD_SET(p->tcpsocket,&input_set); + int s = select(p->tcpsocket+1,&input_set,NULL,NULL,&timeout); + if (s>0) + { + byte recv_data[MAX_TCP_SIZE]; // window max size + int lr =recv(p->tcpsocket,(char*)recv_data,MAX_TCP_SIZE,0); + if (lr>0) + { + // p->udp_query--; + if (lr>p->window) + printf("*** overflow ***\n"); + + p->sendtcppacket(TCP_ACK,lr,recv_data); + + } + } + } + } + } + + // ajout les TCP la liste des datagrammes envoyer + + for(int q=0;qstate == QS_TOSEND||tcp->state == QS_TOSENDANDRETRY ) + { + printf("\n<print(); + + static int identification=1; + + int sent = 0; + identification++; + while(sent < tcp->iplen) + { + int tosend = tcp->iplen - sent; + int frag = 0; + + eth_queue* qdest = findETHQueue(); + if (!qdest) + { + printf("\n *** no more queue ***\n"); + // not sure how it will recover??? + break; + } + + qdest->eth = tcp->eth; + qdest->ip = tcp->ip; + + if (tosend>ETH_MAX_SIZE) + { + frag = FLAG_MF; + tosend = ETH_MAX_SIZE; + } + + qdest->ip.flag_offset = htons(frag + sent/8); + qdest->ip.identification = identification; + qdest->ip.length = htons(tosend+sizeof(IP_HEADER)); + qdest->ip.checksum = 0; + qdest->queuelen = tosend+sizeof(IP_HEADER)+sizeof(ETH_HEADER); + + memcpy(((byte*)&qdest->ip) + sizeof(IP_HEADER),((const byte*)&tcp->padding) + sent,tosend); + u16 chkip= ip_sum_calc(sizeof(IP_HEADER),(const byte*)&qdest->ip); + qdest->ip.checksum = htons(chkip); + + sent += tosend; + } + + if (tcp->state == QS_TOSENDANDRETRY) + { + tcp->state = QS_SENT; + tcp->timeout =get_dtime(); + } + else + { + tcp->state = QS_IDLE; // pas d'ack + } + + } + else + if (tcp->state == QS_SENT) + { + double tick = get_dtime(); + if (tick - tcp->timeout>30.0) // 5 000ms + { + if (tcp->connection->state != PCS_ESTABLISHED) + { + tcp->state = QS_IDLE; + printf("syn did not succeed...\n"); + tcp->connection->Reset(); + } + else + { + printf("\nretrying..."); + tcp->state = QS_TOSENDANDRETRY; + } + } + } + } + + // envoie les datagrammes (dans l'ordre) + if (eth_first != eth_last) + { + eth_queue& q = ethqueues[eth_first]; + eth_first = (eth_first+1)% MAX_ETH_QUEUE; + q.print(); + + word32 p = _param[0]; + byte* pdata = (byte*)&g_memory_ptr[p]; + _param[1] = q.queuelen; + memcpy((void*)pdata,&q.eth,_param[1]); + *((byte*)pdata+q.queuelen) = 0; + + } + + return 0; + } + break; + + case TCPIP_CMD_SEND_DATAGRAM: + { + + word32 len = _param[1] & 0xFFFF; + byte* pdata = ( byte*)&g_memory_ptr[_param[0]]; + *(pdata+len) = 0; // odd-even + + eth_queue* p = (eth_queue*)pdata; + +#ifdef DEBUG_ETH + int d = (int)((get_dtime()-start_tcp_time)*1000); + printf("\n>>>[%07d]\n",d); +#endif + + int t = ntohs(p->eth.type); + switch(t) + { + case 0x0806: // arp + { + + print_arp(&p->arp); + eth_queue* packet = findETHQueue(); + if (!packet) + return TCPIP_ERR_UNSUPPORTED; + + + MAC_STRUCT target_mac; + IP_STRUCT target_ip = p->arp.dst_protoaddr; + if (GET_INT_FROM_IP(p->arp.dst_protoaddr) == GET_INT_FROM_IP(gateway_ip_addr)) + target_mac = gateway_mac_addr; + else + target_mac.SetFromIP(target_ip); + + packet->eth.type = ntohs(0x0806); + packet->eth.dest_mac = client_mac_addr; + packet->eth.source_mac = target_mac; //gateway_mac_addr; + + // copie la source en dest + packet->arp.dst_hwaddr = p->arp.src_hwaddr; + packet->arp.dst_protoaddr = p->arp.src_protoaddr; + + // remplis le destinataire + packet->arp.src_hwaddr =target_mac; //gateway_mac_addr; + packet->arp.src_protoaddr = target_ip; //gateway_ip_addr; + packet->arp.hwaddr_format = p->arp.hwaddr_format; + packet->arp.hwaddr_length = p->arp.hwaddr_length; + packet->arp.opcode = htons(2); // reply + packet->queuelen = sizeof(ARP_HEADER)+sizeof(ETH_HEADER); + + } + break; + case 0x0800: // IP + { + print_ip_packet(&p->ip); + // ajoute les donnes dans unfragmented + add_fragment(p); + } + break; + default: + printf("unsupported protocol"); + return TCPIP_ERR_UNSUPPORTED; + } + + } + return 0; + + case TCPIP_CMD_CONNECT: + for(int i=0;istate == QS_IDLE) + free_frag = q; + + if (tcp->state == QS_FRAGMENT && tcp->ip.identification == f->ip.identification) + return tcp; + } + + if (free_frag == -1) + { + printf("\n*** no more TCP queues****\n"); + return NULL; + } + tcp = &tcpqueues[free_frag]; + memset(tcp,0,sizeof(tcp_queue)); + tcp->state = QS_FRAGMENT; + tcp->eth = f->eth; + tcp->ip = f->ip; + return tcp; + +} + + +tcp_queue* findTCPQueue() +{ + tcp_queue* q = NULL; + for(int i=0;istate = QS_IDLE; + return q; + } + } + printf("\n*** no more TCP queues****\n"); + return q; +} + + + +int add_fragment(eth_queue* p) +{ + tcp_queue* f = findTCPQueueByFragment(p); + if (!f) + return 0; + + // ajoute les donnes + f->ip = p->ip; + f->eth = p->eth; + + int ipdatalen = ntohs(p->ip.length) - sizeof(IP_HEADER); + + memcpy(f->padding+f->iplen,(const byte*)&p->ip+sizeof(IP_HEADER),ipdatalen); + f->iplen += ipdatalen; + + int fo = ntohs(p->ip.flag_offset); + if (!(fo & FLAG_MF)) + { + process_unfragmented(f); + f->state=QS_IDLE; + } + + return 1; +} + +int process_unfragmented(tcp_queue* p) +{ + + int ip_protocol = p->ip.protocol; + p->print(); + + if (ip_protocol==17) // udp + { + + int dest_port = ntohs(p->udp.udp_dst); + int src_port = ntohs(p->udp.udp_src); + + if (p->isDHCP()) + { + send_dhcp_response(p); + } + else + { + print_udp(&p->udp); + + // cre une nouvelle connection udp + PConnection* pco = init_connection(PCT_HOST,RT_UDP, src_port,p->ip.ucDestination, dest_port, p->eth.dest_mac,0); + if (pco==NULL) + { + printf("\ncannot init connection\n"); + return TCPIP_ERR_SEND; + } + + // envoie la commande + struct sockaddr_in server; + server.sin_family = AF_INET; + server.sin_addr = p->ip.ucDestination; + server.sin_port = htons( dest_port ); + + int len = ntohs(p->udp.udp_len)-sizeof(UDP_HEADER); + const char* data = (const char*)&p->udp+sizeof(UDP_HEADER); + // prpare la rponse + int ret = sendto(pco->tcpsocket, data, len, 0, (struct sockaddr *) &server,sizeof(server) ); + if (ret< 0) + { +#ifdef _DEBUG + int err = SockLastError(); + printf("socket send failed with err:%d\n",err); +#endif + return TCPIP_ERR_SEND; + } + } + } + else + if (ip_protocol==6) // tcp + { + +#ifdef _DEBUG + int chk = p->check_tcp(); + if (!chk) + { + printf("ignoring packet\n"); + return 0; + } +#endif + + int offset =p->tcp.data_offset*4; + int tcplen = p->iplen - offset; + + int dest_port = ntohs(p->tcp.dest_port); + int source_port = ntohs(p->tcp.src_port); + struct in_addr dest_ip; + dest_ip= p->ip.ucDestination; + + const byte *tcpdata = (const byte*)&p->tcp +offset; + + if (p->tcp.flags & TCP_RST) + { + printf("\n*** CONNECTION RESET ***\n"); + const char* reset_str = "HTTP/1.0 500"; + ::send(p->connection->tcpsocket, (const char*)reset_str, strlen(reset_str), 0); + reset_connection(PCT_HOST,RT_TCP,source_port,dest_ip,dest_port); + + } + + if (p->tcp.flags & TCP_ACK) + { + PConnection* ptcp = find_connection(PCT_HOST,RT_TCP,source_port,dest_ip, dest_port); + if (ptcp) + { + // libre les query correspondantes + int ack_seq = ntohl(p->tcp.ack_number); + + for(int q=0;qalready_sent -= tcpqueues[q].tcplen; + if (ptcp->already_sent<0) + { + printf("too many acked!***\n"); + ptcp->already_sent=0; // pour essayer de se rcuprer + } + + tcpqueues[q].state = QS_IDLE; + } + } + if (ptcp->state == PCS_BEINGESTABLISHED && (ptcp->state_seq+1) == ack_seq) + { + ptcp->state = PCS_ESTABLISHED; + ptcp->send_seq++; + printf("\nCONNECTION ESTABLISHED (SERVER)\n"); + } + else + if (ptcp->state == PCS_SYNSENT && (ptcp->state_seq+1) == ack_seq) + { + ptcp->sendtcppacket(TCP_ACK , 0, NULL); + ptcp->state = PCS_ESTABLISHED; + ptcp->send_seq++; + printf("\nCONNECTION ESTABLISHED2 (CLIENT)\n"); + + } + else + if (ptcp->state == PCS_SYNCHING && (ptcp->state_seq+1) == ack_seq) + { + ptcp->state = PCS_ESTABLISHED; + printf("\nCONNECTION ESTABLISHED (CLIENT)\n"); + ptcp->send_seq++; + } + else + if (ptcp->state == PCS_CLOSING && ptcp->state_seq == ack_seq) + { + // envoie notre data de fin + ptcp->state = PCS_CLEARINGQUEUE; + + } + else + if (ptcp->state == PCS_LASTACK && ( ptcp->state_seq + 1) == ack_seq) + { + // envoie notre data de fin, mais n'attend pas de rponse + ptcp->last_ack = ntohl(p->tcp.seq_number)+1; + ptcp->sendtcppacket(TCP_ACK,0,NULL); + ptcp->Reset(); + printf("\nCONNECTION CLOSED\n"); + } + + + } + + } + + if (p->tcp.flags & TCP_FIN) + { + PConnection* ptcp = find_connection(PCT_HOST,RT_TCP,source_port,dest_ip, dest_port); + if (ptcp) + { + printf("\nclose_wait\n"); + + ptcp->last_ack = ntohl(p->tcp.seq_number)+2; + ptcp->sendtcppacket(TCP_ACK , 0, NULL); + ptcp->state_seq = ptcp->send_seq; + ptcp->state = PCS_CLOSING; + } + } + + + if (p->tcp.flags & TCP_SYN && !(p->tcp.flags & TCP_ACK)) + { + PConnection* ptcp = init_connection(PCT_HOST,RT_TCP,source_port,dest_ip, dest_port,p->eth.dest_mac, ntohs(p->tcp.window)); + if (ptcp==NULL) + return TCPIP_ERR_NO_CONNECTION; + + ptcp->last_ack = ntohl(p->tcp.seq_number)+1; + ptcp->state = PCS_SYNCHING; + ptcp->state_seq = ptcp->send_seq; + ptcp->sendtcppacket(TCP_ACK|TCP_SYN, 0, NULL); + + } + + if (tcplen) + { + PConnection* ptcp = find_connection(PCT_HOST,RT_TCP,source_port,dest_ip, dest_port); + if (ptcp==NULL) + return TCPIP_ERR_NO_CONNECTION; + + int ret = send(ptcp->tcpsocket, (const char*)tcpdata, tcplen, 0); + if (ret< 0) + { +#ifdef _DEBUG + int err = SockLastError(); + printf("socket send failed with err:%d\n",err); +#endif + return TCPIP_ERR_SEND; + } + + // envoie l'ack + ptcp->last_ack = ntohl( p->tcp.seq_number) +tcplen ; + ptcp->sendtcppacket(TCP_ACK , 0, NULL); + + } + + } + else + { + printf("unsupported ip protocol\n"); + return TCPIP_ERR_UNSUPPORTED; + } + + return 1; +} + +#endif diff --git a/kegs/Src/marinetti.h b/kegs/Src/marinetti.h new file mode 100644 index 0000000..a4279be --- /dev/null +++ b/kegs/Src/marinetti.h @@ -0,0 +1,460 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + +#if defined(ACTIVEGS_ANDROID) + // not tester yet! + #define NO_MARINETTI_SUPPORT +#endif + +#ifndef NO_MARINETTI_SUPPORT + #ifdef WIN32 + #include + #include + #include + #pragma comment(lib, "Ws2_32.lib") + #else + #include + #include + #include + #include + #include + #include + #include + #endif +#endif // NO MARINETTI SUPPORT + + + +#define MAX_TCP_QUEUE 32 +#define MAX_ETH_QUEUE 64 + +#define MAX_TCP_SIZE 2048 +#define MAX_UDP_SIZE 2048 +#define MTU 1500 + + +#define TCPIP_ERR_NO_DEVICE 1 // No network device found +#define TCPIP_ERR_NO_CONNECTION 2 // Unable to connect to network device +#define TCPIP_ERR_STARTUP_FAILED 3 // Unable to initiate network access +#define TCPIP_ERR_UNSUPPORTED 4 // An unsupported operation was attempted +#define TCPIP_ERR_MEMORY 5 // Unable to allocate buffer memory +#define TCPIP_ERR_SEND 6 // Error sending packet + +extern void marinetti_init(); +extern void marinetti_shutdown(); + + +#ifndef NO_MARINETTI_SUPPORT + +// helpers + +typedef unsigned short u16; +typedef unsigned long u32; + + +#pragma pack(push) +#pragma pack(1) + +#ifdef WIN32 +#define SockLastError() WSAGetLastError() +#define SockClose(X) if (X>=0) { closesocket(X); printf("\n sock %d closed\n",X); X=-1; } +#else +#define SockLastError() -1 +#define SockClose(X) if (X>=0) { close(X); X=-1; } +#define SOCKET_ERROR -1 +#endif + + +#define _LOG(...) do {} while(0) +#ifndef _DEBUG + #undef printf + #define printf(...) do {} while(0) +#endif + +enum enum_response_type +{ + RT_NA=0, + RT_UDP=100, + RT_ARP=101, + RT_DHCP=102, + RT_DNS=103, + RT_TCP=104 +}; + +// ETH/IP/UDP/ARP/TCP/DHCP HEADER + +#define dhcpdiscover 1 +#define dhcpoffer 2 +#define dhcprequest 3 +#define dhcpdecline 4 +#define dhcppack 5 +#define dhcpnack 6 +#define dhcprelease 7 +#define dhcpinform 8 + +// DNS STRUCT +typedef in_addr IP_STRUCT; + +#ifdef WIN32 +#define GET_INT_FROM_IP(X) X.S_un.S_addr +#else +#define GET_INT_FROM_IP(X) X.s_addr +#endif + +struct MAC_STRUCT +{ + + byte addr[6]; MAC_STRUCT& operator=(const byte* _ptr) + { + memcpy(addr,_ptr,6); + return *this; + }; + + void SetFromIP(IP_STRUCT _ip) + { + memset(addr,0x88,6); + *(int*)&addr[0]=GET_INT_FROM_IP(_ip); + }; +} ; + + +#define IP_SET(i,d,c,b,a) GET_INT_FROM_IP(i) = ((a << 24) + (b << 16) + (c << 8) + d) +#define MAC_SET(m,a,b,c,d,e,f) m.addr[0]=a;m.addr[1]=b;m.addr[2]=c;m.addr[3]=d;m.addr[4]=e;m.addr[5]=f; + + +typedef struct +{ + MAC_STRUCT dest_mac; + MAC_STRUCT source_mac; + unsigned short int type; +} ETH_HEADER; + + +#define FLAG_MF 0x2000 +#define GET_OFFSET(X) ((X & 0x1FFF)*8) + +typedef struct +{ + unsigned char ihl:4; + unsigned char ver:4; + unsigned char tos; + unsigned short int length; + unsigned short int identification; + unsigned short int flag_offset; +// unsigned short int offset:13; + unsigned char ttl; + unsigned char protocol; + unsigned short int checksum; + IP_STRUCT ucSource; + IP_STRUCT ucDestination; +} IP_HEADER; + +#define DHCP_SNAME_LEN 64 +#define DHCP_FILE_LEN 128 +#define DHCP_FIXED_NON_UDP 236 +#define DHCP_OPTION_LEN 1500 + +typedef struct +{ + byte op; /* 0: Message opcode/type */ + byte htype; /* 1: Hardware addr type (net/if_types.h) */ + byte hlen; /* 2: Hardware addr length */ + byte hops; /* 3: Number of relay agent hops from client */ + u32 xid; /* 4: Transaction ID */ + u16 secs; /* 8: Seconds since client started looking */ + u16 flags; /* 10: Flag bits */ + IP_STRUCT ciaddr; /* 12: Client IP address (if already in use) */ + IP_STRUCT yiaddr; /* 16: Client IP address */ + IP_STRUCT siaddr; /* 18: IP address of next server to talk to */ + IP_STRUCT giaddr; /* 20: DHCP relay agent IP address */ + unsigned char chaddr [16]; /* 24: Client hardware address */ + char sname [DHCP_SNAME_LEN]; /* 40: Server name */ + char file [DHCP_FILE_LEN]; /* 104: Boot filename */ + unsigned char options [DHCP_OPTION_LEN]; + /* 212: Optional parameters + (actual length dependent on MTU). */ +} DHCP_HEADER; + +typedef struct +{ + unsigned short src_port; + unsigned short dest_port; + unsigned int seq_number; + unsigned int ack_number; + unsigned char padding1:4; + unsigned char data_offset:4; + unsigned char flags; + +#define TCP_FIN (1 << 0) +#define TCP_SYN (1 << 1) +#define TCP_RST (1 << 2) +#define TCP_PSH (1 << 3) +#define TCP_ACK (1 << 4) +#define TCP_URG (1 << 5) + + unsigned short window; + unsigned short checksum; + unsigned short urgent_pointer; + unsigned int options; + +} TCP_HEADER; + +typedef struct +{ + u16 udp_src; + u16 udp_dst; + u16 udp_len; + u16 udp_chk; +} UDP_HEADER; + +typedef struct +{ +unsigned short id; // identification number +unsigned char rd :1; // recursion desired +unsigned char tc :1; // truncated message +unsigned char aa :1; // authoritive answer +unsigned char opcode :4; // purpose of message +unsigned char qr :1; // query/response flag +unsigned char rcode :4; // response code +unsigned char cd :1; // checking disabled +unsigned char ad :1; // authenticated data +unsigned char z :1; // its z! reserved +unsigned char ra :1; // recursion available +unsigned short q_count; // number of question entries +unsigned short ans_count; // number of answer entries +unsigned short auth_count; // number of authority entries +unsigned short add_count; // number of resource entries +} DNS_HEADER; + +typedef struct +{ +unsigned short qtype; +unsigned short qclass; +} QUESTION; + + +typedef struct +{ +unsigned short type; +unsigned short _class; +unsigned int ttl; +unsigned short data_len; +} R_DATA; + + +typedef struct +{ + char name[256]; +R_DATA *resource; + char rdata[256]; +} RES_RECORD; + +typedef struct +{ + char name[256]; +QUESTION *ques; +} QUERY; + + +#define TCPIP_CMD_STARTUP 1 // Initializes the network module +#define TCPIP_CMD_GET_DATAGRAM 2 // Called by GS to get a datagram from the network + // XXXXYYYY = pointer to buffer to receive datagram +#define TCPIP_CMD_SEND_DATAGRAM 3 // Called by GS to send a datagram + // XXXXYYYY = pointer to parameters: + // LONG pointer to data + // WORD datagram length in bytes +#define TCPIP_CMD_CONNECT 4 // Connects to the network +#define TCPIP_CMD_DISCONNECT 5 // Disconnects from the network +#define TCPIP_CMD_SHUTDOWN 6 // Shuts down the network support +#define TCPIP_SET_IP_ADDRESS 7 // Pass in XXXXYYYY a pointerto the + // six byte MAC address of the LL +#define TCPIP_GETIPADDRESS 9 // returns the Macs IP Address in X and Y + // if IP Address could not be obtained will return 0 + +u16 ip_sum_calc(u16 len_ip_header,const byte* _buf); +u16 udp_sum_calc(u16 proto,u16 len_udp, const byte* src_addr,const byte* dest_addr, const byte* buff); + +int dns_readname(const byte* reader,const byte* buffer,char outname[] ); + +extern IP_STRUCT client_ip_addr; +extern MAC_STRUCT client_mac_addr; +extern MAC_STRUCT gateway_mac_addr; +extern IP_STRUCT gateway_dns_addr; +extern const MAC_STRUCT broadcast_mac_addr; +extern IP_STRUCT local_ip_addr; +extern IP_STRUCT host_ip_addr; + +struct tcp_queue; + +enum PConnectionState +{ + PCS_INITIALIZED=300, + PCS_SYNSENT, + PCS_SYNCHING, + PCS_BEINGESTABLISHED, + PCS_ESTABLISHED, + PCS_CLOSING, + PCS_CLEARINGQUEUE, + PCS_LASTACK, + PCS_CLOSED +}; + +enum PConnectionType +{ + PCT_SERVER, + PCT_CLIENT, + PCT_HOST +}; + +struct PConnection +{ + int type; // UDP, TCP, //ARP + int dest_port; + int source_port; + IP_STRUCT dest_ip; + MAC_STRUCT dest_mac; + int window; + int already_sent; + int send_seq; + int last_ack; + int state_seq; + int tcpsocket; + + enum PConnectionState state; + enum PConnectionType socktype; + PConnection(); + ~PConnection(); + void Reset(); + + tcp_queue* sendtcppacket(int _flags, int len, byte* data); + int sendudppacket(int len,const byte* data); + +}; + +struct ARP_HEADER +{ + u16 hwaddr_format; // Ethernet, Token Ring, etc + u16 protoaddr_format; // Same as Ether Type field + byte hwaddr_length; // Lenght of hardware address + byte protoaddr_length; // Length of protocol address + u16 opcode; // Request or Response + MAC_STRUCT src_hwaddr; + IP_STRUCT src_protoaddr; + MAC_STRUCT dst_hwaddr; + IP_STRUCT dst_protoaddr; +}; + + +#define MAX_TCP_CONNECTION 100 +extern PConnection PConnections[MAX_TCP_CONNECTION]; +PConnection* init_connection( enum PConnectionType _socktype,int _type,int _srcport,IP_STRUCT _destip, int _destport, MAC_STRUCT _destmac, int _window); +void reset_connection( enum PConnectionType _socktype,int _type, int _srcport,IP_STRUCT _destip, int _destport); +PConnection* find_connection( enum PConnectionType _socktype,int _type, int _srcport,IP_STRUCT _destip, int _destport); + + +enum QUEUE_STATE +{ + QS_TOSEND=1000, + QS_TOSENDANDRETRY, + QS_SENT, + QS_WAITACK, + QS_IDLE, + QS_FRAGMENT +}; + +struct eth_queue +{ + // ne rien avoir ici! + struct + { + ETH_HEADER eth; + union + { + ARP_HEADER arp; + IP_HEADER ip; + byte padding[MTU]; + + }; + }; + + int queuelen; + + void print(); +}; + +#define ETH_MAX_SIZE ((MTU - sizeof(ETH_HEADER) - sizeof(IP_HEADER))&~7) + +struct tcp_queue +{ + int queuelen; + int queueseq; + double timeout; + int tcplen; // taille des donne tcp + int iplen; // taille du packet ip dfragment + enum QUEUE_STATE state; + PConnection* connection; + struct + { + ETH_HEADER eth; + IP_HEADER ip; + union + { + UDP_HEADER udp; + TCP_HEADER tcp; + byte padding[16384]; + }; + }; + void print(); + void Reset() { state=QS_IDLE; }; + int isDNS() + { + return (GET_INT_FROM_IP(gateway_dns_addr)== GET_INT_FROM_IP(this->ip.ucDestination)) + || (GET_INT_FROM_IP(gateway_dns_addr)== GET_INT_FROM_IP(this->ip.ucSource)) ; + }; + + int isDHCP() + { + if ( + ip.protocol == 17 // UDP + && ntohs(udp.udp_dst) == 67 + && !memcmp(eth.dest_mac.addr, broadcast_mac_addr.addr,6) + ) + return 1; + else + return 0; + }; + int check_tcp(); +}; + +eth_queue* findETHQueue(); +extern eth_queue ethqueues[MAX_ETH_QUEUE]; +tcp_queue* findTCPQueue(); +tcp_queue* findTCPQueueByFragment(eth_queue* q); +extern tcp_queue tcpqueues[MAX_TCP_QUEUE]; + + + +void print_ip(const IP_STRUCT p); +void print_mac(const MAC_STRUCT mac); +void print_dns(const byte* _ptr); +void print_udp(const UDP_HEADER *p); +void print_arp(const ARP_HEADER * p); +void print_tcp(TCP_HEADER* p); +void print_dhcp(const byte *); +void print_ip_packet( const IP_HEADER* _header); + +int init_server(void); +void server_loop(void); + + +int add_fragment(eth_queue* p); +int process_unfragmented(tcp_queue* p); +void reset_fragments(); + +#pragma pack(pop) +#endif diff --git a/kegs/Src/marinetti_helper.cpp b/kegs/Src/marinetti_helper.cpp new file mode 100644 index 0000000..eff13c2 --- /dev/null +++ b/kegs/Src/marinetti_helper.cpp @@ -0,0 +1,740 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "defc.h" +#include "sim65816.h" +#include "marinetti.h" + +#ifndef NO_MARINETTI_SUPPORT + +const MAC_STRUCT broadcast_mac_addr={ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; + + +void print_ip(IP_STRUCT _p) +{ +#ifdef _DEBUG + const byte*p = (const byte*)&_p; + printf("%3d.%3d.%3d.%3d",p[0],p[1],p[2],p[3]); +#endif +} + +void print_mac(MAC_STRUCT _p) +{ +#ifdef _DEBUG + const byte*mac = (const byte*)&_p; + printf("%0X.%0X.%0X.%0X.%0X.%0X",mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]); +#endif +} + +int dns_readname(const byte* _reader,const byte* _buffer,char _outname[] ) +{ + unsigned char *name = (unsigned char*)_outname; + const unsigned char *reader = (const unsigned char*)_reader; + const unsigned char *buffer = (const unsigned char*)_buffer; + + unsigned int p=0,jumped=0,offset; + int i , j; + + int count = 1; + + name[0]='\0'; + + //read the names in 3www6google3com format + while(*reader!=0) + { + if(*reader>=192) + { + offset = (*reader)*256 + *(reader+1) - 49152; //49152 = 11000000 00000000 ;) + reader = buffer + offset - 1; + jumped = 1; //we have jumped to another location so counting wont go up! + } + else + { + name[p++]=*reader; + } + + reader=reader+1; + + if(jumped==0) count = count + 1; //if we havent jumped to another location then we can count up + } + + name[p]='\0'; //string complete + if(jumped==1) + { + count = count + 1; //number of steps we actually moved forward in the packet + } + + //now convert 3www6google3com0 to www.google.com + for(i=0;i<(int)strlen((const char*)name);i++) + { + p=name[i]; + for(j=0;j<(int)p;j++) + { + name[i]=name[i+1]; + i=i+1; + } + name[i]='.'; + } + + name[i-1]='\0'; //remove the last dot + return count; +} + + +u16 ip_sum_calc(u16 len_ip_header,const byte* _buf) +{ +u16 word16; +u32 sum=0; +u16 i; + + const byte* buff = _buf; + for (i=0;i>16) + sum = (sum & 0xFFFF)+(sum >> 16); + + sum = ~sum; + return ((u16) sum); +} + +u16 udp_sum_calc(u16 _proto,u16 len_udp, const byte* src_addr,const byte* dest_addr, const byte* buff) +{ +u16 word16; +u32 sum=0; + + int i; + for (i=0;i>16) + sum = (sum & 0xFFFF)+(sum >> 16); + + for (i=0;i<4;i=i+2) + { + word16 =((src_addr[i]<<8)&0xFF00)+(src_addr[i+1]&0xFF); + sum=sum+ (u32)word16; + word16 =((dest_addr[i]<<8)&0xFF00)+(dest_addr[i+1]&0xFF); + sum=sum+(u32)word16; + } + + sum = sum + _proto + len_udp; + while (sum>>16) + sum = (sum & 0xFFFF)+(sum >> 16); + sum = ~sum; + + + + return ((u16) sum); +} + + +void print_dns(const byte* _ptr) +{ + DNS_HEADER* dns = (DNS_HEADER*)_ptr; + + char namestr [256]; + const byte* name = (const byte*)(_ptr+sizeof(DNS_HEADER)); + dns_readname(name,_ptr, namestr); + +#ifdef _DEBUG + QUESTION* q = (QUESTION*)(_ptr+strlen((const char*)name)+1+sizeof(DNS_HEADER)); + + printf("nb_question:%d nb_answer;%d\n", ntohs(dns->q_count), ntohs(dns->ans_count)); + printf("dns query : %s\n",namestr); + printf("question type:%d class: %d\n", ntohs(q->qtype), ntohs(q->qclass)); +#endif + RES_RECORD answers[20];//s,auth[20],addit[20]; //the replies from the DNS server + + //reading answers + int stop=0; + int i; + byte* reader = (byte*)(_ptr+strlen((const char*)name)+1+sizeof(DNS_HEADER)+sizeof(QUESTION)); + byte* buf = (byte*)_ptr; + + for(i=0;ians_count);i++) + { + stop = dns_readname(reader,buf,answers[i].name); + reader+=stop; + answers[i].resource=(R_DATA*)(reader); + reader+=sizeof(R_DATA); + if(ntohs(answers[i].resource->type)==1) + { + for(int j=0;jdata_len);j++) + answers[i].rdata[j]=reader[j]; + answers[i].rdata[ntohs(answers[i].resource->data_len)]=0; + reader+=ntohs(answers[i].resource->data_len); + } + else + { + stop = dns_readname(reader,buf,answers[i].rdata); + reader+=stop; + } + } + + for(i=0;ians_count);i++) + { + printf(" ### [DNS] Reply -- Name : %s ",answers[i].name); + + if(ntohs(answers[i].resource->type)==1) //IPv4 address + { + long *p; + p=(long*)answers[i].rdata; + sockaddr_in a; + a.sin_addr.s_addr=(*p); //working without ntohl + printf("has IPv4 address : %s",inet_ntoa(a.sin_addr)); + } + if(ntohs(answers[i].resource->type)==5) //Canonical name for an alias + { + printf("has alias name : %s",answers[i].rdata); + } + + printf("\n"); + } + + if (i==0) + printf(" ### [DNS] Query -- %s",namestr); + +} + +void print_udp(const UDP_HEADER *p) +{ + printf(" ### [UDP] "); + printf("len:%d, src: %d, dest %d ",ntohs(p->udp_len),ntohs(p->udp_src),ntohs(p->udp_dst)); +} + + +void print_arp(const ARP_HEADER * p) +{ +#ifdef DEBUG_ARP + int arp_type = ntohs(p->opcode); + printf("[ARP] -- type %d, ",arp_type); + printf(", src:"); + print_ip(p->src_protoaddr); + printf("/"); + print_mac(p->src_hwaddr); + printf(", dest:"); + print_ip(p->dst_protoaddr); + printf("/"); + print_mac(p->dst_hwaddr); +#endif +} + +void print_tcp(TCP_HEADER* p) +{ + +#ifdef _DEBUG + printf(" ### [TCP]"); + printf(" src_port:%d dst_port:%d",ntohs(p->src_port),ntohs(p->dest_port)); + printf(" s:%x",ntohl(p->seq_number)); + + if (p->flags & TCP_SYN) + printf(" SYN"); + if (p->flags & TCP_ACK) + { + printf(" ACK"); + printf("%x ",ntohl(p->ack_number)); + } + if (p->flags & TCP_RST) + printf(" RST"); + if (p->flags & TCP_FIN) + printf(" FIN"); + if (p->flags & TCP_PSH) + printf(" PSH"); + if (p->flags & TCP_URG) + printf(" URG"); +#endif +} + + +int tcp_queue::check_tcp() +{ + TCP_HEADER* p = &this->tcp; + + int len = this->iplen; + + u16 chk = udp_sum_calc(6,len,(const byte*)&GET_INT_FROM_IP(this->ip.ucDestination),(const byte*)&GET_INT_FROM_IP(this->ip.ucSource),(const byte*)p); + if (chk!=0 && p->checksum) + { + printf("tcp checksum errror!"); + return 0; + } + + return 1; +} + + +void print_ip_packet(const IP_HEADER* p) +{ +#ifdef DEBUG_IP + int l =ntohs(p->length); + printf("[IP] -- len:%3d", l); + printf(" src_ip:"); + print_ip(p->ucSource); + printf(" dest_ip:"); + print_ip(p->ucDestination); + + short unsigned int flag_offset = ntohs(p->flag_offset); + if (flag_offset & FLAG_MG) + printf(" MF"); + printf("\n"); +#endif +} + + +PConnection::PConnection() +{ + memset(this,0,sizeof(PConnection)); + tcpsocket=-1; +} + +void PConnection::Reset() +{ + // regarde si il y a encore des donnes envoyer pour cette connection + + for(int q=0;qtcpsocket>0) + return p; + } + else + for(int tcpindex=0;tcpindexsource_port = _srcport; + p->dest_port = _destport; + p->dest_ip = _destip; + p->dest_mac = _destmac; + p->window = _window; + p->already_sent = 0; + p->type = _type; + p->socktype = _socktype; + p->state=PCS_CLOSED; + + static int la = 0x300; + + p->last_ack = la; + p->send_seq = p-> last_ack; + la += 0x010000; + + printf("\nconnection created "); + print_ip(_destip); + printf("\n"); + break; + } + } + if (p==NULL) + { + printf("\n *** too many open connections ****\n"); + return NULL; + } + + + if (_socktype == PCT_CLIENT) + { + p->tcpsocket = _window; + p->window = 16384; + p->state=PCS_SYNSENT; + p->state_seq = p->send_seq; + p->sendtcppacket(TCP_SYN,0,NULL); + + return p; + + } + + if (_type==RT_TCP) // TCP + { + p->tcpsocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if (p->tcpsocket < 0) + { + printf("cannot create socket\n"); + return NULL; + } + // envoie la commande + struct sockaddr_in server; + server.sin_family = AF_INET; + if (GET_INT_FROM_IP(_destip)==GET_INT_FROM_IP(host_ip_addr)) + server.sin_addr = local_ip_addr; // host loop back + else + server.sin_addr = _destip; + server.sin_port = htons( _destport ); + memset(&(server.sin_zero),0,8); + + int err = connect(p->tcpsocket,(struct sockaddr *) &server,sizeof(server) ); + if (err < 0) + { + printf("connect send failed with err:%d\n",SockLastError()); + p->Reset(); + return NULL; + } + p->state=PCS_INITIALIZED; + + } + else + { + // udp + p->tcpsocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); + if (p->tcpsocket < 0) + { + printf("cannot open udp socket\n"); + p->Reset(); + return NULL; + } + + p->state=PCS_INITIALIZED; + } + return p; + +}; + +int PConnection::sendudppacket(int _len, const byte* _data) +{ + tcp_queue* packet = findTCPQueue(); + if (!packet) return 0; + + // UDP + int udp_len = sizeof(UDP_HEADER)+_len; + packet->udp.udp_len = htons(udp_len); + packet->udp.udp_dst = htons(source_port); // inverse + packet->udp.udp_src = htons(dest_port); + memcpy((byte*)&packet->udp+sizeof(UDP_HEADER),_data,_len); + u16 chk = udp_sum_calc(17,udp_len,(const byte*)&dest_ip,(const byte*)&client_ip_addr,(const byte*)&packet->udp); + packet->udp.udp_chk = htons(chk); + + + // IP + packet->ip.ucSource = dest_ip; + packet->ip.ucDestination = client_ip_addr; + packet->ip.protocol = 17; // udp + packet->ip.ver = 4; + packet->ip.ihl = 5; + packet->ip.ttl = 64; + + + int iplen = sizeof(IP_HEADER) + udp_len ; + packet->ip.length = htons(iplen); + u16 chkip= ip_sum_calc(sizeof(IP_HEADER),(const byte*)&packet->ip); + packet->ip.checksum = htons(chkip); + + // ETH + packet->eth.dest_mac = client_mac_addr; + packet->eth.source_mac = dest_mac; + packet->eth.type = htons(0x0800); //IP + + int eth_len = iplen+sizeof(ETH_HEADER); + packet->queuelen = eth_len ; + packet->iplen = udp_len; + packet->state = QS_TOSEND; + return eth_len; + +} + +tcp_queue* PConnection::sendtcppacket(int _flags,int _len, byte* _data) +{ + + tcp_queue* packet = findTCPQueue(); + if (!packet) return 0; + + // TCP + const int offset = 5; + int tcp_header_len = offset*4; + int tcp_len = tcp_header_len + _len; + + packet->tcp.flags = _flags ; + packet->tcp.ack_number = htonl(last_ack); + + packet->tcp.seq_number = htonl (send_seq ); + packet->tcp.window = htons(16384); + packet->tcp.data_offset = offset; + packet->tcp.dest_port = htons(source_port); // inverse + packet->tcp.src_port = htons(dest_port); + memcpy((byte*)&packet->tcp+tcp_header_len,_data,_len); + + u16 chk = udp_sum_calc(6,tcp_len,(const byte*)&dest_ip,(const byte*)&client_ip_addr,(const byte*)&packet->tcp); + packet->tcp.checksum = htons(chk); + + // IP + packet->ip.ucSource = dest_ip; + packet->ip.ucDestination = client_ip_addr; + packet->ip.protocol = 6; + packet->ip.ver = 4; + packet->ip.ihl = 5; + packet->ip.ttl = 64; + + + int iplen = sizeof(IP_HEADER) + tcp_len ; + packet->ip.length = htons(iplen); + u16 chkip= ip_sum_calc(sizeof(IP_HEADER),(const byte*)&packet->ip); + packet->ip.checksum = htons(chkip); + + // ETH + packet->eth.dest_mac = client_mac_addr; + packet->eth.source_mac = dest_mac; + packet->eth.type = htons(0x0800); + + int eth_len = iplen+sizeof(ETH_HEADER); + packet->queuelen = eth_len ; + packet->queueseq = send_seq+_len; + packet->state = QS_TOSENDANDRETRY; + packet->connection = this; + + packet->tcplen = _len; + packet->iplen = tcp_len; + send_seq+=_len; + already_sent += _len; + + if (already_sent > window) + { + printf("****window error****\n"); + } + return packet; // nb d'octect envoys +} + +PConnection* find_connection(enum PConnectionType _socktype,int _type,int _srcport,IP_STRUCT _destip, int _destport) +{ + for(int i=0;itype == _type) + && + (p->source_port == _srcport) + && + (p->dest_port == _destport) + && + (GET_INT_FROM_IP(p->dest_ip) == GET_INT_FROM_IP(_destip)) + && + (p->state != PCS_CLOSED) + ) + return p; + } + return NULL ; + +} + +void reset_connection(enum PConnectionType _socktype, int _type,int _srcport,IP_STRUCT _destip, int _destport) +{ + PConnection* p = find_connection(_socktype,_type,_srcport,_destip,_destport); + if (p) + p->Reset(); + else + printf("ignoring reset on unknown connection\n"); +} + +void eth_queue::print() +{ + +#ifdef DEBUG_ETH + if (this->eth.type==htons(0x0806)) + print_arp(&this->arp); + else + { + print_ip_packet(&this->ip); + int frag_offset = ntohs(this->ip.flag_offset); + if (frag_offset & FLAG_MF) + printf(" F"); + + printf("id:%x offset:%d ",this->ip.identification,GET_OFFSET(frag_offset)); + switch(this->ip.protocol) + { + case 17: // udp + printf("/UDP"); + break; + case 6: // tcp + printf("/TCP"); + break; + default: + break; + } + } + printf("\n"); +#endif +} + + +void tcp_queue::print() +{ + + if (this->ip.protocol == 17 ) // UDP + { + print_udp(&this->udp); + if (isDNS()) + print_dns((const byte*)&this->udp+sizeof(UDP_HEADER)); + } + else + if (this->ip.protocol == 6 ) // TCP + { + + + print_tcp(&this->tcp); + + int offset =this->tcp.data_offset*4; + int l = ntohs(this->ip.length); + int tcplen = l - sizeof(IP_HEADER) - offset; + if (tcplen) + printf(" [tcplen:%d]",tcplen); + } + else + printf("unknown protocol : %d",this->ip.protocol); + printf("\n"); +} + + + +// SERVER + +int server_sock; + +int init_server(void) +{ + // nb_client = 0; + + server_sock = socket(AF_INET, SOCK_STREAM, 0); + + if(server_sock == SOCKET_ERROR) + { + printf("server init failed\n"); + return 0; + } + + struct sockaddr_in sin; + + sin.sin_addr.s_addr = htonl(INADDR_ANY); + sin.sin_port = htons(8080); + sin.sin_family = AF_INET; + + if(bind(server_sock,(struct sockaddr *)&sin, sizeof sin) == SOCKET_ERROR) + { + printf("cannot bind\n"); + return 0; + } + + if(listen(server_sock, 0) == SOCKET_ERROR) + { + printf("cannot listent\n"); + return 0; + } + + + + return 1; +} + +void server_loop(void) +{ + for(int i=0;istate != PCS_CLOSED) // *** ON ATTEND LA FIN DE LA CONNECTION => BCP PLUS RAPIDE?? + { + // server not ready to accept new connection + return ; + } + } + + int max = server_sock; + + fd_set rdfs; + + + FD_ZERO(&rdfs); + + // add the connection socket + FD_SET(server_sock, &rdfs); + + timeval timeout; + timeout.tv_usec = 1; + timeout.tv_sec = 0; + + if(select(max + 1, &rdfs, NULL, NULL, &timeout) == -1) + { + // printf("failed select\n"); + return ; + } + + if(FD_ISSET(server_sock, &rdfs)) + { + // new client + struct sockaddr csin = { 0 }; + socklen_t sinsize = sizeof(struct sockaddr); + int csock = accept(server_sock, &csin, &sinsize); + if(csock == SOCKET_ERROR) + { + printf("failed accept\n");; + return; + } + + + max = csock > max ? csock : max; + + FD_SET(csock, &rdfs); + IP_STRUCT *ip_client = (IP_STRUCT*)&csin.sa_data[0]; + MAC_STRUCT mac_client; + mac_client.SetFromIP(*ip_client); + + + for(int i=0;istate == PCS_SYNSENT) + { + printf("\n*** INGORING %d from ",csock); + print_ip(*ip_client); + printf("\n"); + return ; + } + } + + printf("\n*** connection %d from ",csock); + print_ip(*ip_client); + printf("\n"); + + // gnre un port random pour ne pallier le IPOPENUSER qui ne s base que sur les ports! + static int free_port=100; + init_connection(PCT_CLIENT,RT_TCP, 80, *ip_client, free_port++, mac_client,csock); + + } + +} + +#endif \ No newline at end of file diff --git a/kegs/Src/moremem.cpp b/kegs/Src/moremem.cpp new file mode 100644 index 0000000..1001e83 --- /dev/null +++ b/kegs/Src/moremem.cpp @@ -0,0 +1,2549 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "defc.h" +#include "moremem.h" +#include "sim65816.h" +#include "iwm.h" +#include "video.h" +#include "protos_engine_c.h" +#include "graphcounter.h" + +s_moremem g_moremem; + + +extern const char* g_kegs_version_str; + +int x_fixed_framerate() +{ + static double lastfps = 0.0f; + +#ifdef ENABLE_GRAPH + g_graph.add_graph(2,(float)( 1.0/(get_dtime() - lastfps)),g_sim65816.g_vbl_count); +#endif + lastfps = get_dtime(); + addFrameRate(2); + return 0; +} + + +void s_sim65816::set_fixed_vblank(int _nbframe, speedenum _defaultspeed) +{ + + g_fixed_vblank = _nbframe; + if (g_fixed_vblank==0) + g_sim65816.set_limit_speed(_defaultspeed); + else + { + printf("gs speed with fixed vblank of %d\n",_nbframe); + g_sim65816.set_limit_speed(SPEED_GS); + } +} + + + +extern byte *g_memory_ptr; +extern byte *g_dummy_memory1_ptr; + +extern byte *g_rom_fc_ff_ptr; +extern byte *g_rom_cards_ptr; + +//extern word32 slow_mem_changed[]; + +//extern int g_num_breakpoints; +//extern word32 g_breakpts[]; + +//extern Page_info page_info_rd_wr[]; + +extern int g_user_page2_shadow; + + + +#define UNIMPL_READ \ + halt_printf("UNIMP READ to addr %08x\n", loc); \ + return 0; + +#define UNIMPL_WRITE \ + halt_printf("UNIMP WRITE to addr %08x, val: %04x\n", loc, val); \ + return; + +// OG Added Transwarp ROM +#define TRANSWARP +#ifdef _WIN32 +__declspec(align(256)) +#endif +unsigned char transwarpcode[][32] +#ifndef _WIN32 +__attribute__ ((aligned(256))) +#endif +={ +{ +/*0xBCFF00*/ 'T','W','G','S',0,0,0,0,0,0,0,0,0,0,0,0, +/*0xBCFF10*/ 0x5C,0x40,0xFF,0xBC, // JMP GetMaxSpeed +/*0xBCFF14*/ 0x5C,0x60,0xFF,0xBC, // JMP GetNumISpeed +/*0xBCFF18*/ 0x6B,0x00,0x00,0x00, // ??? +/*0xBCFF1C*/ 0x6B,0x00,0x00,0x00 // ??? +}, +{ +/*0xBCFF20*/ 0x5C,0x80,0xFF,0xBC, // JMP GetCurSpeed +/*0xBCFF24*/ 0x5C,0xA0,0xFF,0xBC, // JMP SetCurSpeed +/*0xBCFF28*/ 0x5C,0xC0,0xFF,0xBC, // JMP GetCurISpeed +/*0xBCFF2C*/ 0x5C,0xE0,0xFF,0xBC, // JMP SetCurISpeed +/*0xBCFF30*/ 0x6B,0x00,0x00,0x00, // ??? +/*0xBCFF34*/ 0x6B,0x00,0x00,0x00, // ??? +/*0xBCFF38*/ 0x6B,0x00,0x00,0x00, // ??? +/*0xBCFF3C*/ 0x6B,0x00,0x00,0x00 // GetTWConfig +}, +{ +/* 0xBCFF40*/ // GetMaxSpeed +#define ZIP_SPEED 8000 + +0xA9, ZIP_SPEED & 0xFF, (ZIP_SPEED >> 8) &0xFF, // LDA 0x1F40 // Max Speed = 8.0Mhz +0x6B, // RTL +0x00,0x00,0x00,0x00, //4 +0x00,0x00,0x00,0x00, //8 +0x6B,0x00,0x00,0x00, //C Space Shark calls this address ??? +}, +{ +/* 0xBCFF60*/ //GetNumISpeed +0xA9,0x02,0x00, // LDA 0x0002 // 0=slow, 1=normal, 2=warp +0x6B, // RTL +}, +{ +/* 0xBCFF80*/ //GetCurSpeed +0xAF, 0x6A, 0xC0, 0x00, // LDA 0xC06A (/6B) +0x6B, // RTL +}, +{ +/* 0xBCFFA0*/ //SetCurSpeed +0x8F, 0x6A, 0xC0, 0x00, // STA 0xC06A (/6B) +0x6B, // RTL +}, +{ +/* 0xBCFFC0*/ //GetCurISpeed +0x48, // PHA +0xAF, 0x6C, 0xC0, 0x00, // LDA 0xC06C (/6D) +0xAA, // TAX +0x68, // PLA +0x6B, // RTL +}, +{ +/* 0xBCFFE0*/ //SetCurISpeed +0x48, // PHA +0x8A, // TXA +0x8F, 0x6C, 0xC0, 0x00, // STA 0xC06C (/6D) +0x68, // PLA +0x6B, // RTL +}, +{ + /* 0xBCFFF0*/ //iPhone +0x20, 0x58, 0xFC, +0x4C, 0x59, 0xFF, + +} +} +; + +// OG Added moremem_init() +void moremem_init() +{ + g_moremem.g_em_emubyte_cnt = 0; + g_moremem.g_paddle_buttons = 0; + g_moremem.g_irq_pending = 0; + + g_moremem.g_c023_val = 0; + g_moremem.g_c029_val_some = 0x41; + g_moremem.g_c02b_val = 0x08; + g_moremem.g_c02d_int_crom = 0; + g_moremem.g_c031_disk35 = 0; + g_moremem.g_c034_val = 0; + g_moremem.g_c035_shadow_reg = 0x08; + g_moremem.g_c036_val_speed = 0x80; + g_moremem.g_c03ef_doc_ptr = 0; + g_moremem.g_c041_val = 0; /* C041_EN_25SEC_INTS, C041_EN_MOVE_INTS */ + g_moremem.g_c046_val = 0; + g_moremem.g_c05x_annuncs = 0; + g_moremem.g_c068_statereg = 0; + g_moremem.g_c08x_wrdefram = 0; + g_moremem.g_zipgs_unlock = 0; + g_moremem.g_zipgs_reg_c059 = 0x5f; +// g_moremem.g_zipgs_reg_c05a = 0x0f; // ne pas rinitializer la vitesse par default de la zipcard + g_moremem.g_zipgs_reg_c05b = 0x40; + g_moremem.g_zipgs_reg_c05c = 0x00; +} + +void +fixup_brks() +{ + word32 page; + word32 tmp, tmp2; + Pg_info val; + int is_wr_only; + int i, num; + + num = g_num_breakpoints; + for(i = 0; i < num; i++) { + page = (g_breakpts[i].addr >> 8) & 0xffff; + is_wr_only = (g_breakpts[i].addr >> 24) & 1; + if(!is_wr_only) { + val = GET_PAGE_INFO_RD(page); + tmp = PTR2WORD(val) & 0xff; + tmp2 = tmp | BANK_IO_TMP | BANK_BREAK; + SET_PAGE_INFO_RD(page, val - tmp + tmp2); + } + val = GET_PAGE_INFO_WR(page); + tmp = PTR2WORD(val) & 0xff; + tmp2 = tmp | BANK_IO_TMP | BANK_BREAK; + SET_PAGE_INFO_WR(page, val - tmp + tmp2); + } +} + +void +fixup_hires_on() +{ + if((g_video.g_cur_a2_stat & ALL_STAT_ST80) == 0) { + return; + } + + fixup_bank0_2000_4000(); + fixup_brks(); +} + +void +fixup_bank0_2000_4000() +{ + byte *mem0rd; + byte *mem0wr; + + mem0rd = &(g_memory_ptr[0x2000]); + mem0wr = mem0rd; + if((g_video.g_cur_a2_stat & ALL_STAT_ST80) && (g_video.g_cur_a2_stat & ALL_STAT_HIRES)){ + if(g_video.g_cur_a2_stat & ALL_STAT_PAGE2) { + mem0rd += 0x10000; + mem0wr += 0x10000; + if((g_moremem.g_c035_shadow_reg & 0x12) == 0 || + (g_moremem.g_c035_shadow_reg & 0x8) == 0) { + mem0wr += BANK_SHADOW2; + } + } else if((g_moremem.g_c035_shadow_reg & 0x02) == 0) { + mem0wr += BANK_SHADOW; + } + + } else { + if(RAMRD) { + mem0rd += 0x10000; + } + if(RAMWRT) { + mem0wr += 0x10000; + if((g_moremem.g_c035_shadow_reg & 0x12) == 0 || + (g_moremem.g_c035_shadow_reg & 0x8) == 0) { + mem0wr += BANK_SHADOW2; + } + } else if((g_moremem.g_c035_shadow_reg & 0x02) == 0) { + mem0wr += BANK_SHADOW; + } + } + + fixup_any_bank_any_page(0x20, 0x20, mem0rd, mem0wr); +} + +void +fixup_bank0_0400_0800() +{ + byte *mem0rd; + byte *mem0wr; + int shadow; + + mem0rd = &(g_memory_ptr[0x400]); + mem0wr = mem0rd; + shadow = BANK_SHADOW; + if(g_video.g_cur_a2_stat & ALL_STAT_ST80) { + if(g_video.g_cur_a2_stat & ALL_STAT_PAGE2) { + shadow = BANK_SHADOW2; + mem0rd += 0x10000; + mem0wr += 0x10000; + } + } else { + if(RAMWRT) { + shadow = BANK_SHADOW2; + mem0wr += 0x10000; + } + if(RAMRD) { + mem0rd += 0x10000; + } + } + if((g_moremem.g_c035_shadow_reg & 0x01) == 0) { + mem0wr += shadow; + } + + fixup_any_bank_any_page(0x4, 4, mem0rd, mem0wr); +} + +void +fixup_any_bank_any_page(int start_page, int num_pages, byte *mem0rd, + byte *mem0wr) +{ + int i; + + for(i = 0; i < num_pages; i++) { + SET_PAGE_INFO_RD(i + start_page, mem0rd); + mem0rd += 0x100; + } + + for(i = 0; i < num_pages; i++) { + SET_PAGE_INFO_WR(i + start_page, mem0wr); + mem0wr += 0x100; + } + +} + +void +fixup_intcx() +{ + byte *rom10000; + byte *rom_inc; + int no_io_shadow; + int off; + int start_k; + word32 mask; + int j, k; + + rom10000 = &(g_rom_fc_ff_ptr[0x30000]); + + no_io_shadow = (g_moremem.g_c035_shadow_reg & 0x40); + + start_k = 0; + if(no_io_shadow) { + /* if not shadowing, banks 0 and 1 are not affected by intcx */ + start_k = 2; + } + + for(k = start_k; k < 4; k++) { + off = k; + if(k >= 2) { + off += (0xe0 - 2); + } + /* step off through 0x00, 0x01, 0xe0, 0xe1 */ + + off = off << 8; + SET_PAGE_INFO_RD(0xc0 + off, SET_BANK_IO); + + for(j = 0xc1; j < 0xc8; j++) { + mask = 1 << (j & 0xf); + if(j < 0xc8) { + rom_inc = SET_BANK_IO; + if(((g_moremem.g_c02d_int_crom & mask) == 0) || INTCX) { + rom_inc = rom10000 + (j << 8); + } else { + // User-slot rom + rom_inc = &(g_rom_cards_ptr[0]) + + ((j - 0xc0) << 8); + } + SET_PAGE_INFO_RD(j + off, rom_inc); + } + } + for(j = 0xc8; j < 0xd0; j++) { + /* c800 - cfff */ + if(((g_moremem.g_c02d_int_crom & (1 << 3)) == 0) || INTCX) { + rom_inc = rom10000 + (j << 8); + } else { + /* c800 space not necessarily mapped */ + /* just map in ROM */ + rom_inc = rom10000 + (j << 8); + } + SET_PAGE_INFO_RD(j + off, rom_inc); + } + for(j = 0xc0; j < 0xd0; j++) { + SET_PAGE_INFO_WR(j + off, SET_BANK_IO); + } + } + + if(!no_io_shadow) { + SET_PAGE_INFO_RD(0xc7, SET_BANK_IO); /* smartport */ + } + + fixup_brks(); +} + +void +fixup_wrdefram(int new_wrdefram) +{ + byte *mem0wr; + byte *wrptr; + int j; + + g_moremem.g_c08x_wrdefram = new_wrdefram; + + if(g_moremem.g_c035_shadow_reg & 0x40) { + /* do nothing */ + return; + } + + /* if shadowing, banks 0 and 1 are affected by wrdefram */ + mem0wr = &(g_memory_ptr[0]); + if(!new_wrdefram) { + mem0wr += (BANK_IO_TMP | BANK_IO2_TMP); + } + + wrptr = mem0wr + 0x1e000; + for(j = 0x1e0; j < 0x200; j++) { + SET_PAGE_INFO_WR(j, wrptr); + wrptr += 0x100; + } + + wrptr = mem0wr + 0x0e000; + if(ALTZP) { + wrptr += 0x10000; + } + for(j = 0xe0; j < 0x100; j++) { + SET_PAGE_INFO_WR(j, wrptr); + wrptr += 0x100; + } + + wrptr = mem0wr + 0x1d000; + if(! LCBANK2) { + wrptr -= 0x1000; + } + for(j = 0x1d0; j < 0x1e0; j++) { + SET_PAGE_INFO_WR(j, wrptr); + wrptr += 0x100; + } + + wrptr = mem0wr + 0xd000; + if(! LCBANK2) { + wrptr -= 0x1000; + } + if(ALTZP) { + wrptr += 0x10000; + } + for(j = 0xd0; j < 0xe0; j++) { + SET_PAGE_INFO_WR(j, wrptr); + wrptr += 0x100; + } + + fixup_brks(); +} + +void +fixup_st80col(double dcycs) +{ + int cur_a2_stat; + + cur_a2_stat = g_video.g_cur_a2_stat; + + fixup_bank0_0400_0800(); + + if(cur_a2_stat & ALL_STAT_HIRES) { + /* fixup no matter what PAGE2 since PAGE2 and RAMRD/WR */ + /* can work against each other */ + fixup_bank0_2000_4000(); + } + + if(cur_a2_stat & ALL_STAT_PAGE2) { + change_display_mode(dcycs); + } + + fixup_brks(); +} + +void +fixup_altzp() +{ + byte *mem0rd, *mem0wr; + int rdrom, c08x_wrdefram; + int altzp; + + altzp = ALTZP; + mem0rd = &(g_memory_ptr[0]); + if(altzp) { + mem0rd += 0x10000; + } + SET_PAGE_INFO_RD(0, mem0rd); + SET_PAGE_INFO_RD(1, mem0rd + 0x100); + SET_PAGE_INFO_WR(0, mem0rd); + SET_PAGE_INFO_WR(1, mem0rd + 0x100); + + mem0rd = &(g_memory_ptr[0xd000]); + mem0wr = mem0rd; + c08x_wrdefram = g_moremem.g_c08x_wrdefram; + rdrom = RDROM; + + if(g_moremem.g_c035_shadow_reg & 0x40) { + if(ALTZP) { + mem0rd += 0x10000; + } + fixup_any_bank_any_page(0xd0, 0x10, mem0rd - 0x1000, + mem0rd - 0x1000); + c08x_wrdefram = 1; + rdrom = 0; + } else { + if(!c08x_wrdefram) { + mem0wr += (BANK_IO_TMP | BANK_IO2_TMP); + } + if(ALTZP) { + mem0rd += 0x10000; + mem0wr += 0x10000; + } + if(! LCBANK2) { + mem0rd -= 0x1000; + mem0wr -= 0x1000; + } + if(rdrom) { + mem0rd = &(g_rom_fc_ff_ptr[0x3d000]); + } + fixup_any_bank_any_page(0xd0, 0x10, mem0rd, mem0wr); + } + + mem0rd = &(g_memory_ptr[0xe000]); + mem0wr = mem0rd; + if(!c08x_wrdefram) { + mem0wr += (BANK_IO_TMP | BANK_IO2_TMP); + } + if(ALTZP) { + mem0rd += 0x10000; + mem0wr += 0x10000; + } + if(rdrom) { + mem0rd = &(g_rom_fc_ff_ptr[0x3e000]); + } + fixup_any_bank_any_page(0xe0, 0x20, mem0rd, mem0wr); + + /* No need for fixup_brks since called from set_statereg() */ +} + +void +fixup_page2(double dcycs) +{ + if((g_video.g_cur_a2_stat & ALL_STAT_ST80)) { + fixup_bank0_0400_0800(); + if((g_video.g_cur_a2_stat & ALL_STAT_HIRES)) { + fixup_bank0_2000_4000(); + } + } else { + change_display_mode(dcycs); + } +} + +void +fixup_ramrd() +{ + byte *mem0rd; + int cur_a2_stat; + int j; + + cur_a2_stat = g_video.g_cur_a2_stat; + + if((cur_a2_stat & ALL_STAT_ST80) == 0) { + fixup_bank0_0400_0800(); + } + if( ((cur_a2_stat & ALL_STAT_ST80) == 0) || + ((cur_a2_stat & ALL_STAT_HIRES) == 0) ) { + fixup_bank0_2000_4000(); + } + + mem0rd = &(g_memory_ptr[0x0000]); + if(RAMRD) { + mem0rd += 0x10000; + } + + SET_PAGE_INFO_RD(2, mem0rd + 0x200); + SET_PAGE_INFO_RD(3, mem0rd + 0x300); + + for(j = 8; j < 0x20; j++) { + SET_PAGE_INFO_RD(j, mem0rd + j*0x100); + } + + for(j = 0x40; j < 0xc0; j++) { + SET_PAGE_INFO_RD(j, mem0rd + j*0x100); + } + + /* No need for fixup_brks since only called from set_statereg() */ +} + +void +fixup_ramwrt() +{ + byte *mem0wr; + int cur_a2_stat; + int shadow; + int ramwrt; + int j; + + cur_a2_stat = g_video.g_cur_a2_stat; + + if((cur_a2_stat & ALL_STAT_ST80) == 0) { + fixup_bank0_0400_0800(); + } + if( ((cur_a2_stat & ALL_STAT_ST80) == 0) || + ((cur_a2_stat & ALL_STAT_HIRES) == 0) ) { + fixup_bank0_2000_4000(); + } + + mem0wr = &(g_memory_ptr[0x0000]); + ramwrt = RAMWRT; + if(ramwrt) { + mem0wr += 0x10000; + } + + SET_PAGE_INFO_WR(2, mem0wr + 0x200); + SET_PAGE_INFO_WR(3, mem0wr + 0x300); + + shadow = BANK_SHADOW; + if(ramwrt) { + shadow = BANK_SHADOW2; + } + if( ((g_moremem.g_c035_shadow_reg & 0x20) != 0) || + ((g_sim65816.g_rom_version < 3) && !g_user_page2_shadow)) { + shadow = 0; + } + for(j = 8; j < 0x0c; j++) { + SET_PAGE_INFO_WR(j, mem0wr + j*0x100 + shadow); + } + + for(j = 0xc; j < 0x20; j++) { + SET_PAGE_INFO_WR(j, mem0wr + j*0x100); + } + + shadow = 0; + if(ramwrt) { + if((g_moremem.g_c035_shadow_reg & 0x14) == 0 || + (g_moremem.g_c035_shadow_reg & 0x08) == 0) { + shadow = BANK_SHADOW2; + } + } else if((g_moremem.g_c035_shadow_reg & 0x04) == 0) { + shadow = BANK_SHADOW; + } + for(j = 0x40; j < 0x60; j++) { + SET_PAGE_INFO_WR(j, mem0wr + j*0x100 + shadow); + } + + shadow = 0; + if(ramwrt && (g_moremem.g_c035_shadow_reg & 0x08) == 0) { + /* shr shadowing */ + shadow = BANK_SHADOW2; + } + for(j = 0x60; j < 0xa0; j++) { + SET_PAGE_INFO_WR(j, mem0wr + j*0x100 + shadow); + } + + for(j = 0xa0; j < 0xc0; j++) { + SET_PAGE_INFO_WR(j, mem0wr + j*0x100); + } + + /* No need for fixup_brks() since only called from set_statereg() */ +} + +void +fixup_lcbank2() +{ + byte *mem0rd, *mem0wr; + int lcbank2, c08x_wrdefram, rdrom; + int off; + int k; + + for(k = 0; k < 4; k++) { + off = k; + if(k >= 2) { + off += (0xe0 - 2); + } + /* step off through 0x00, 0x01, 0xe0, 0xe1 */ + + if(k < 2) { + mem0rd = &(g_memory_ptr[k << 16]); + } else { + mem0rd = &(g_slow_memory_ptr[(k & 1) << 16]); + } + if((k == 0) && ALTZP) { + mem0rd += 0x10000; + } + lcbank2 = LCBANK2; + c08x_wrdefram = g_moremem.g_c08x_wrdefram; + rdrom = RDROM; + if((k < 2) && (g_moremem.g_c035_shadow_reg & 0x40)) { + lcbank2 = 0; + c08x_wrdefram = 1; + rdrom = 0; + } + if(! lcbank2) { + mem0rd -= 0x1000; /* lcbank1, use 0xc000-cfff */ + } + mem0wr = mem0rd; + if((k < 2) && !c08x_wrdefram) { + mem0wr += (BANK_IO_TMP | BANK_IO2_TMP); + } + if((k < 2) && rdrom) { + mem0rd = &(g_rom_fc_ff_ptr[0x30000]); + } + fixup_any_bank_any_page(off*0x100 + 0xd0, 0x10, + mem0rd + 0xd000, mem0wr + 0xd000); + } + + /* No need for fixup_brks() since only called from set_statereg(), */ + /* or from other routines which will handle it */ +} + +void +fixup_rdrom() +{ + byte *mem0rd; + int j, k; + + /* fixup_lcbank2 handles 0xd000-dfff for rd & wr*/ + fixup_lcbank2(); + + for(k = 0; k < 2; k++) { + /* k is the bank */ + mem0rd = &(g_memory_ptr[k << 16]); + if((k == 0) && ALTZP) { + mem0rd += 0x10000; + } + if((g_moremem.g_c035_shadow_reg & 0x40) == 0) { + if(RDROM) { + mem0rd = &(g_rom_fc_ff_ptr[0x30000]); + } + } + for(j = 0xe0; j < 0x100; j++) { + SET_PAGE_INFO_RD(j + k*0x100, mem0rd + j*0x100); + } + } + + /* No need for fixup_brks() since only called from set_statereg() */ +} + +void +set_statereg(double dcycs, int val) +{ + int _xor; // OG renamed xor to _xor + + _xor = val ^ g_moremem.g_c068_statereg; + g_moremem.g_c068_statereg = val; + if(_xor == 0) { + return; + } + + if(_xor & 0x80) { + /* altzp */ + fixup_altzp(); + } + if(_xor & 0x40) { + /* page2 */ + g_video.g_cur_a2_stat = (g_video.g_cur_a2_stat & ~ALL_STAT_PAGE2) | + (val & ALL_STAT_PAGE2); + fixup_page2(dcycs); + } + + if(_xor & 0x20) { + /* RAMRD */ + fixup_ramrd(); + } + + if(_xor & 0x10) { + /* RAMWRT */ + fixup_ramwrt(); + } + + if(_xor & 0x08) { + /* RDROM */ + fixup_rdrom(); + } + + if(_xor & 0x04) { + /* LCBANK2 */ + fixup_lcbank2(); + } + + if(_xor & 0x02) { + /* ROMBANK */ + halt_printf("Just set rombank = %d\n", ROMB); + } + + if(_xor & 0x01) { + fixup_intcx(); + } + + if(_xor) { + fixup_brks(); + } +} + +void +fixup_shadow_txt1() +{ + byte *mem0wr; + int j; + + fixup_bank0_0400_0800(); + + mem0wr = &(g_memory_ptr[0x10000]); + if((g_moremem.g_c035_shadow_reg & 0x01) == 0) { + mem0wr += BANK_SHADOW2; + } + for(j = 4; j < 8; j++) { + SET_PAGE_INFO_WR(0x100 + j, mem0wr + j*0x100); + } +} + +void +fixup_shadow_txt2() +{ + byte *mem0wr; + int shadow; + int j; + + /* bank 0 */ + mem0wr = &(g_memory_ptr[0x00000]); + shadow = BANK_SHADOW; + if(RAMWRT) { + mem0wr += 0x10000; + shadow = BANK_SHADOW2; + } + if(((g_moremem.g_c035_shadow_reg & 0x20) == 0) && + ((g_sim65816.g_rom_version >= 3) || g_user_page2_shadow)) { + mem0wr += shadow; + } + for(j = 8; j < 0xc; j++) { + SET_PAGE_INFO_WR(j, mem0wr + j*0x100); + } + + /* and bank 1 */ + mem0wr = &(g_memory_ptr[0x10000]); + if(((g_moremem.g_c035_shadow_reg & 0x20) == 0) && + ((g_sim65816.g_rom_version >= 3) || g_user_page2_shadow)) { + mem0wr += BANK_SHADOW2; + } + for(j = 8; j < 0xc; j++) { + SET_PAGE_INFO_WR(0x100 + j, mem0wr + j*0x100); + } +} + +void +fixup_shadow_hires1() +{ + byte *mem0wr; + int j; + + fixup_bank0_2000_4000(); + + /* and bank 1 */ + mem0wr = &(g_memory_ptr[0x10000]); + if((g_moremem.g_c035_shadow_reg & 0x12) == 0 || (g_moremem.g_c035_shadow_reg & 0x8) == 0) { + mem0wr += BANK_SHADOW2; + } + for(j = 0x20; j < 0x40; j++) { + SET_PAGE_INFO_WR(0x100 + j, mem0wr + j*0x100); + } +} + +void +fixup_shadow_hires2() +{ + byte *mem0wr; + int j; + + /* bank 0 */ + mem0wr = &(g_memory_ptr[0x00000]); + if(RAMWRT) { + mem0wr += 0x10000; + if((g_moremem.g_c035_shadow_reg & 0x14) == 0 || + (g_moremem.g_c035_shadow_reg & 0x8) == 0) { + mem0wr += BANK_SHADOW2; + } + } else if((g_moremem.g_c035_shadow_reg & 0x04) == 0) { + mem0wr += BANK_SHADOW; + } + for(j = 0x40; j < 0x60; j++) { + SET_PAGE_INFO_WR(j, mem0wr + j*0x100); + } + + /* and bank 1 */ + mem0wr = &(g_memory_ptr[0x10000]); + if((g_moremem.g_c035_shadow_reg & 0x14) == 0 || (g_moremem.g_c035_shadow_reg & 0x8) == 0) { + mem0wr += BANK_SHADOW2; + } + for(j = 0x40; j < 0x60; j++) { + SET_PAGE_INFO_WR(0x100 + j, mem0wr + j*0x100); + } +} + +void +fixup_shadow_shr() +{ + byte *mem0wr; + int j; + + /* bank 0, only pages 0x60 - 0xa0 */ + mem0wr = &(g_memory_ptr[0x00000]); + if(RAMWRT) { + mem0wr += 0x10000; + if((g_moremem.g_c035_shadow_reg & 0x8) == 0) { + mem0wr += BANK_SHADOW2; + } + } + for(j = 0x60; j < 0xa0; j++) { + SET_PAGE_INFO_WR(j, mem0wr + j*0x100); + } + + /* and bank 1, only pages 0x60 - 0xa0 */ + mem0wr = &(g_memory_ptr[0x10000]); + if((g_moremem.g_c035_shadow_reg & 0x8) == 0) { + mem0wr += BANK_SHADOW2; + } + for(j = 0x60; j < 0xa0; j++) { + SET_PAGE_INFO_WR(0x100 + j, mem0wr + j*0x100); + } +} + +void +fixup_shadow_iolc() +{ + byte *mem0rd; + int k; + + if(g_moremem.g_c035_shadow_reg & 0x40) { + /* Disable language card area */ + for(k = 0; k < 2; k++) { + mem0rd = &(g_memory_ptr[k << 16]); + fixup_any_bank_any_page((k << 8) + 0xc0, 0x10, + mem0rd + 0xd000, mem0rd + 0xd000); + if(k == 0 && ALTZP) { + mem0rd += 0x10000; + } + fixup_any_bank_any_page((k << 8) + 0xd0, 0x10, + mem0rd + 0xc000, mem0rd + 0xc000); + fixup_any_bank_any_page((k << 8) + 0xe0, 0x20, + mem0rd + 0xe000, mem0rd + 0xe000); + } + } else { + /* 0xc000 area */ + fixup_intcx(); + + /* 0xd000 area */ + /* fixup_lcbank2(); -- not needed since fixup_rdrom does it */ + + /* Fix 0xd000-0xffff for reads, banks 0 and 1 */ + fixup_rdrom(); /* which calls fixup_lcbank2 */ + + /* Fix 0xd000-0xffff for writes, banks 0 and 1 */ + fixup_wrdefram(g_moremem.g_c08x_wrdefram); + } +} + +void +update_shadow_reg(int val) +{ + int _xor; + + if(g_moremem.g_c035_shadow_reg == val) { + return; + } + + _xor = g_moremem.g_c035_shadow_reg ^ val; + g_moremem.g_c035_shadow_reg = val; + + if(_xor & 8) { + fixup_shadow_hires1(); + fixup_shadow_hires2(); + fixup_shadow_shr(); + _xor = _xor & (~0x16); + } + if(_xor & 0x10) { + fixup_shadow_hires1(); + fixup_shadow_hires2(); + _xor = _xor & (~0x6); + } + if(_xor & 2) { + fixup_shadow_hires1(); + } + if(_xor & 4) { + fixup_shadow_hires2(); + } + if(_xor & 1) { + fixup_shadow_txt1(); + } + if((_xor & 0x20) && ((g_sim65816.g_rom_version >= 3) || g_user_page2_shadow)) { + fixup_shadow_txt2(); + } + if(_xor & 0x40) { + fixup_shadow_iolc(); + } + if(_xor) { + fixup_brks(); + } +} + +void +fixup_shadow_all_banks() +{ + byte *mem0rd; + int shadow; + int num_banks; + int j, k; + + /* Assume Ninja Force Megademo */ + /* only do banks 3 - num_banks by 2, shadowing into e1 */ + + shadow = 0; + if((g_moremem.g_c036_val_speed & 0x10) && ((g_moremem.g_c035_shadow_reg & 0x08) == 0)) { + shadow = BANK_SHADOW2; + } + num_banks = g_sim65816.g_mem_size_total >> 16; + for(k = 3; k < num_banks; k += 2) { + mem0rd = &(g_memory_ptr[k*0x10000 + 0x2000]) + shadow; + for(j = 0x20; j < 0xa0; j++) { + SET_PAGE_INFO_WR(k*0x100 + j, mem0rd); + mem0rd += 0x100; + } + } + + fixup_brks(); +} + +void +setup_pageinfo() +{ + byte *mem0rd; + word32 mem_size_pages; + + /* first, set all of memory to point to itself */ + + mem_size_pages = g_sim65816.g_mem_size_total >> 8; + mem0rd = &(g_memory_ptr[0]); + fixup_any_bank_any_page(0, mem_size_pages, mem0rd, mem0rd); + + /* mark unused memory as BAD_MEM */ + fixup_any_bank_any_page(mem_size_pages, 0xfc00-mem_size_pages, + BANK_BAD_MEM, BANK_BAD_MEM); + + fixup_shadow_all_banks(); + + /* ROM */ + mem0rd = &(g_rom_fc_ff_ptr[0]); + fixup_any_bank_any_page(0xfc00, 0x400, mem0rd, + mem0rd + (BANK_IO_TMP | BANK_IO2_TMP)); + + /* banks e0, e1 */ + mem0rd = &(g_slow_memory_ptr[0]); + fixup_any_bank_any_page(0xe000, 0x04, mem0rd + 0x0000, mem0rd + 0x0000); + fixup_any_bank_any_page(0xe004, 0x08, mem0rd + 0x0400, + mem0rd + 0x0400 + BANK_SHADOW); + fixup_any_bank_any_page(0xe00c, 0x14, mem0rd + 0x0c00, mem0rd + 0x0c00); + fixup_any_bank_any_page(0xe020, 0x40, mem0rd + 0x2000, + mem0rd + 0x2000 + BANK_SHADOW); + fixup_any_bank_any_page(0xe060, 0xa0, mem0rd + 0x6000, mem0rd + 0x6000); + + mem0rd = &(g_slow_memory_ptr[0x10000]); + fixup_any_bank_any_page(0xe100, 0x04, mem0rd + 0x0000, mem0rd + 0x0000); + fixup_any_bank_any_page(0xe104, 0x08, mem0rd + 0x0400, + mem0rd + 0x0400 + BANK_SHADOW2); + fixup_any_bank_any_page(0xe10c, 0x14, mem0rd + 0x0c00, mem0rd + 0x0c00); + fixup_any_bank_any_page(0xe120, 0x80, mem0rd + 0x2000, + mem0rd + 0x2000 + BANK_SHADOW2); + fixup_any_bank_any_page(0xe1a0, 0x60, mem0rd + 0xa000, mem0rd + 0xa000); + + fixup_intcx(); /* correct banks 0xe0,0xe1, 0xc000-0xcfff area */ + fixup_lcbank2(); /* correct 0xd000-0xdfff area */ + + fixup_bank0_2000_4000(); + fixup_bank0_0400_0800(); + fixup_wrdefram(g_moremem.g_c08x_wrdefram); + fixup_altzp(); + fixup_ramrd(); + fixup_ramwrt(); + fixup_rdrom(); + fixup_shadow_txt1(); + fixup_shadow_txt2(); + fixup_shadow_hires1(); + fixup_shadow_hires2(); + fixup_shadow_shr(); + fixup_shadow_iolc(); + fixup_brks(); + +#ifdef TRANSWARP // OG adding Transwarp code + SET_PAGE_INFO_RD(0xBCFF,transwarpcode); +#endif +} + +void +show_bankptrs_bank0rdwr() +{ + show_bankptrs(0); + show_bankptrs(1); + show_bankptrs(0xe0); + show_bankptrs(0xe1); + printf("statereg: %02x\n", g_moremem.g_c068_statereg); +} + +void +show_bankptrs(int bnk) +{ + int i; + Pg_info rd, wr; + byte *ptr_rd, *ptr_wr; + + printf("g_memory_ptr: %p, dummy_mem: %p, slow_mem_ptr: %p\n", + g_memory_ptr, g_dummy_memory1_ptr, g_slow_memory_ptr); + printf("g_rom_fc_ff_ptr: %p\n", g_rom_fc_ff_ptr); + + printf("Showing bank_info array for %02x\n", bnk); + for(i = 0; i < 256; i++) { + rd = GET_PAGE_INFO_RD(bnk*0x100 + i); + wr = GET_PAGE_INFO_WR(bnk*0x100 + i); + ptr_rd = (byte *)rd; + ptr_wr = (byte *)wr; + printf("%04x rd: ", bnk*256 + i); + show_addr(ptr_rd); + printf(" wr: "); + show_addr(ptr_wr); + printf("\n"); + } +} + +void +show_addr(byte *ptr) +{ + word32 mem_size; + + mem_size = g_sim65816.g_mem_size_total; + if(ptr >= g_memory_ptr && ptr < &g_memory_ptr[mem_size]) { + printf("%p--memory[%06x]", ptr, + (word32)(ptr - g_memory_ptr)); + } else if(ptr >= g_rom_fc_ff_ptr && ptr < &g_rom_fc_ff_ptr[256*1024]) { + printf("%p--rom_fc_ff[%06x]", ptr, + (word32)(ptr - g_rom_fc_ff_ptr)); + } else if(ptr >= g_slow_memory_ptr && ptr<&g_slow_memory_ptr[128*1024]){ + printf("%p--slow_memory[%06x]", ptr, + (word32)(ptr - g_slow_memory_ptr)); + } else if(ptr >=g_dummy_memory1_ptr && ptr < &g_dummy_memory1_ptr[256]){ + printf("%p--dummy_memory[%06x]", ptr, + (word32)(ptr - g_dummy_memory1_ptr)); + } else { + printf("%p--unknown", ptr); + } +} + + +#define CALC_DCYCS_FROM_CYC_PTR(dcycs, cyc_ptr, fcyc, new_fcyc) \ + dcycs = g_sim65816.g_last_vbl_dcycs + *cyc_ptr; + + +int +io_read(word32 loc, double *cyc_ptr) +{ + double dcycs; + word64 word64_tmp; +#if 0 + double fcyc, new_fcyc; +#endif + word32 mask; + int new_lcbank2; + int new_wrdefram; + int tmp; + int i; + + CALC_DCYCS_FROM_CYC_PTR(dcycs, cyc_ptr, fcyc, new_fcyc); + +/* IO space */ + switch((loc >> 8) & 0xf) { + case 0: /* 0xc000 - 0xc0ff */ + switch(loc & 0xff) { + /* 0xc000 - 0xc00f */ + case 0x00: case 0x01: case 0x02: case 0x03: + case 0x04: case 0x05: case 0x06: case 0x07: + case 0x08: case 0x09: case 0x0a: case 0x0b: + case 0x0c: case 0x0d: case 0x0e: case 0x0f: + { + int r = adb_read_c000(); + // printf("c000=%x\n",r); + return r; + } + /* 0xc010 - 0xc01f */ + case 0x10: /* c010 */ + return(adb_access_c010()); + case 0x11: /* c011 = RDLCBANK2 */ + return IOR(LCBANK2); + case 0x12: /* c012= RDLCRAM */ + return IOR(!RDROM); + case 0x13: /* c013=rdramd */ + return IOR(RAMRD); + case 0x14: /* c014=rdramwrt */ + return IOR(RAMWRT); + case 0x15: /* c015 = INTCX */ + return IOR(INTCX); + case 0x16: /* c016: ALTZP */ + return IOR(ALTZP); + case 0x17: /* c017: rdc3rom */ + return IOR(g_moremem.g_c02d_int_crom & (1 << 3)); + case 0x18: /* c018: rd80c0l */ + return IOR((g_video.g_cur_a2_stat & ALL_STAT_ST80)); + case 0x19: /* c019: rdvblbar */ + tmp = in_vblank(dcycs); + return IOR(tmp); + case 0x1a: /* c01a: rdtext */ + return IOR(g_video.g_cur_a2_stat & ALL_STAT_TEXT); + case 0x1b: /* c01b: rdmix */ + return IOR(g_video.g_cur_a2_stat & ALL_STAT_MIX_T_GR); + case 0x1c: /* c01c: rdpage2 */ + return IOR(g_video.g_cur_a2_stat & ALL_STAT_PAGE2); + case 0x1d: /* c01d: rdhires */ + return IOR(g_video.g_cur_a2_stat & ALL_STAT_HIRES); + case 0x1e: /* c01e: altcharset on? */ + return IOR(g_video.g_cur_a2_stat & ALL_STAT_ALTCHARSET); + case 0x1f: /* c01f: rd80vid */ + return IOR(g_video.g_cur_a2_stat & ALL_STAT_VID80); + + /* 0xc020 - 0xc02f */ + case 0x20: /* 0xc020 */ + /* Click cassette port */ + return 0x00; + case 0x21: /* 0xc021 */ + /* Not documented, but let's return COLOR_C021 */ + return IOR(g_video.g_cur_a2_stat & ALL_STAT_COLOR_C021); + case 0x22: /* 0xc022 */ + return (g_video.g_cur_a2_stat >> BIT_ALL_STAT_BG_COLOR) & 0xff; + case 0x23: /* 0xc023 */ + /* + { + extern Engine_reg engine; + // printf("c023=%X (%X)\n",g_moremem.g_c023_val,engine.kpc); + if (engine.kpc==0xB7D84) __asm int 3; + } + */ + return g_moremem.g_c023_val; + case 0x24: /* 0xc024 */ + return mouse_read_c024(dcycs); + case 0x25: /* 0xc025 */ + return adb_read_c025(); + case 0x26: /* 0xc026 */ + return adb_read_c026(); + case 0x27: /* 0xc027 */ + return adb_read_c027(); + case 0x28: /* 0xc028 */ + UNIMPL_READ; + case 0x29: /* 0xc029 */ + return((g_video.g_cur_a2_stat & 0xa0) | g_moremem.g_c029_val_some); + case 0x2a: /* 0xc02a */ +#if 0 + printf("Reading c02a...returning 0\n"); +#endif + return 0; + case 0x2b: /* 0xc02b */ + return g_moremem.g_c02b_val; + case 0x2c: /* 0xc02c */ + /* printf("reading c02c, returning 0\n"); */ + return 0; + case 0x2d: /* 0xc02d */ + tmp = g_moremem.g_c02d_int_crom; + return tmp; + case 0x2e: /* 0xc02e */ + case 0x2f: /* 0xc02f */ + return read_vid_counters(loc, dcycs); + + /* 0xc030 - 0xc03f */ + case 0x30: /* 0xc030 */ + /* click speaker */ + /* + if (g_moremem.g_c036_val_speed & 0x80) + printf("fast sound at : %x\n",g_sim65816.engine.kpc); + */ + return doc_read_c030(dcycs); + case 0x31: /* 0xc031 */ + /* 3.5" control */ + return g_moremem.g_c031_disk35; + case 0x32: /* 0xc032 */ + /* scan int */ + return 0; + case 0x33: /* 0xc033 = CLOCKDATA*/ + return g_moremem.g_c033_data; + case 0x34: /* 0xc034 = CLOCKCTL */ + return g_moremem.g_c034_val; + case 0x35: /* 0xc035 */ + return g_moremem.g_c035_shadow_reg; + case 0x36: /* 0xc036 = CYAREG */ + return g_moremem.g_c036_val_speed; + case 0x37: /* 0xc037 */ + return 0; + case 0x38: /* 0xc038 */ + return scc_read_reg(1, dcycs); + case 0x39: /* 0xc039 */ + return scc_read_reg(0, dcycs); + case 0x3a: /* 0xc03a */ + return scc_read_data(1, dcycs); + case 0x3b: /* 0xc03b */ + return scc_read_data(0, dcycs); + case 0x3c: /* 0xc03c */ + /* doc control */ + return doc_read_c03c(dcycs); + case 0x3d: /* 0xc03d */ + return doc_read_c03d(dcycs); + case 0x3e: /* 0xc03e */ + return (g_moremem.g_c03ef_doc_ptr & 0xff); + case 0x3f: /* 0xc03f */ + return (g_moremem.g_c03ef_doc_ptr >> 8); + + /* 0xc040 - 0xc04f */ + case 0x40: /* 0xc040 */ + /* cassette */ + return 0; + case 0x41: /* 0xc041 */ + return g_moremem.g_c041_val; + case 0x45: /* 0xc045 */ + halt_printf("Mega II mouse read: c045\n"); + return 0; + case 0x46: /* 0xc046 */ + tmp = g_moremem.g_c046_val; + g_moremem.g_c046_val = (tmp & 0xbf) + ((tmp & 0x80) >> 1); + return tmp; + case 0x47: /* 0xc047 */ + remove_irq(IRQ_PENDING_C046_25SEC | + IRQ_PENDING_C046_VBL); + g_moremem.g_c046_val &= 0xe7; /* clear vbl_int, 1/4sec int*/ + return 0; + case 0x42: /* 0xc042 */ + case 0x43: /* 0xc043 */ + return 0; + case 0x4f: /* 0xc04f */ + /* for information on c04f, see: */ + /* www.sheppyware.net/tech/hardware/softswitches.html */ + /* write to $c04f to start. Then read $c04f to get */ + /* emulator ($16=sweet16, $fe=bernie II). */ + /* Then read again to get version: $21 == 2.1 */ + switch(g_moremem.g_em_emubyte_cnt) { + case 1: + g_moremem.g_em_emubyte_cnt = 2; + return 'K'; + case 2: + g_moremem.g_em_emubyte_cnt = 0; + tmp = g_kegs_version_str[0] - '0'; + i = g_kegs_version_str[2] - '0'; + return ((tmp & 0xf) << 4) + (i & 0xf); + default: + g_moremem.g_em_emubyte_cnt = 0; + return 0; + } + case 0x44: /* 0xc044 */ + // OG + // Detecting which program is trying to detect the hardware + if (g_sim65816.engine.kpc >= 0xb00 && g_sim65816.engine.kpc <= 0xb10) + { + if (g_sim65816.g_6502_emulation && g_sim65816.g_rom_version == 1) + { + printf("reverting to 65C816 emulation for Zoyon Patrol!"); + g_sim65816.g_6502_emulation=0; // 2GS Operands are back to normal + g_rom_fc_ff_ptr[0x03fe28]=0x18; // CLC => 2GS can now be detected + } + } + // return LDA FB55 + return g_rom_fc_ff_ptr[0x03fb55]; + + case 0x48: /* 0xc048 */ + case 0x49: /* 0xc049 */ + case 0x4a: /* 0xc04a */ + case 0x4b: /* 0xc04b */ + case 0x4c: /* 0xc04c */ + case 0x4d: /* 0xc04d */ + case 0x4e: /* 0xc04e */ + UNIMPL_READ; + + /* 0xc050 - 0xc05f */ + case 0x50: /* 0xc050 */ + if(g_video.g_cur_a2_stat & ALL_STAT_TEXT) { + g_video.g_cur_a2_stat &= (~ALL_STAT_TEXT); + change_display_mode(dcycs); + } + return float_bus(dcycs); + case 0x51: /* 0xc051 */ + if((g_video.g_cur_a2_stat & ALL_STAT_TEXT) == 0) { + g_video.g_cur_a2_stat |= (ALL_STAT_TEXT); + change_display_mode(dcycs); + } + return float_bus(dcycs); + case 0x52: /* 0xc052 */ + if(g_video.g_cur_a2_stat & ALL_STAT_MIX_T_GR) { + g_video.g_cur_a2_stat &= (~ALL_STAT_MIX_T_GR); + change_display_mode(dcycs); + } + return float_bus(dcycs); + case 0x53: /* 0xc053 */ + if((g_video.g_cur_a2_stat & ALL_STAT_MIX_T_GR) == 0) { + g_video.g_cur_a2_stat |= (ALL_STAT_MIX_T_GR); + change_display_mode(dcycs); + } + return float_bus(dcycs); + case 0x54: /* 0xc054 */ + x_fixed_framerate(); + set_statereg(dcycs, g_moremem.g_c068_statereg & (~0x40)); + return float_bus(dcycs); + case 0x55: /* 0xc055 */ + x_fixed_framerate(); + set_statereg(dcycs, g_moremem.g_c068_statereg | 0x40); + return float_bus(dcycs); + case 0x56: /* 0xc056 */ + if(g_video.g_cur_a2_stat & ALL_STAT_HIRES) { + g_video.g_cur_a2_stat &= (~ALL_STAT_HIRES); + fixup_hires_on(); + change_display_mode(dcycs); + } + return float_bus(dcycs); + case 0x57: /* 0xc057 */ + if((g_video.g_cur_a2_stat & ALL_STAT_HIRES) == 0) { + g_video.g_cur_a2_stat |= (ALL_STAT_HIRES); + fixup_hires_on(); + change_display_mode(dcycs); + } + return float_bus(dcycs); + case 0x58: /* 0xc058 */ + if(g_moremem.g_zipgs_unlock < 4) { + g_moremem.g_c05x_annuncs &= (~1); + } + return 0; + case 0x59: /* 0xc059 */ + if(g_moremem.g_zipgs_unlock >= 4) { + return g_moremem.g_zipgs_reg_c059; + } else { + g_moremem.g_c05x_annuncs |= 1; + } + return 0; + case 0x5a: /* 0xc05a */ + if(g_moremem.g_zipgs_unlock >= 4) { + return g_moremem.g_zipgs_reg_c05a; + } else { + g_moremem.g_c05x_annuncs &= (~2); + } + return 0; + case 0x5b: /* 0xc05b */ + if(g_moremem.g_zipgs_unlock >= 4) { + word64_tmp = (word64)dcycs; + tmp = (word64_tmp >> 9) & 1; + return (tmp << 7) + (g_moremem.g_zipgs_reg_c05b & 0x7f); + } else { + g_moremem.g_c05x_annuncs |= 2; + } + return 0; + case 0x5c: /* 0xc05c */ + if(g_moremem.g_zipgs_unlock >= 4) { + return g_moremem.g_zipgs_reg_c05c; + } else { + g_moremem.g_c05x_annuncs &= (~4); + } + return 0; + case 0x5d: /* 0xc05d */ + if(g_moremem.g_zipgs_unlock >= 4) { + halt_printf("Reading ZipGS $c05d!\n"); + } else { + g_moremem.g_c05x_annuncs |= 4; + } + return 0; + case 0x5e: /* 0xc05e */ + if(g_moremem.g_zipgs_unlock >= 4) { + halt_printf("Reading ZipGS $c05e!\n"); + } else if(g_video.g_cur_a2_stat & ALL_STAT_ANNUNC3) { + g_video.g_cur_a2_stat &= (~ALL_STAT_ANNUNC3); + change_display_mode(dcycs); + } + return 0; + case 0x5f: /* 0xc05f */ + if(g_moremem.g_zipgs_unlock >= 4) { + halt_printf("Reading ZipGS $c05f!\n"); + } else if((g_video.g_cur_a2_stat & ALL_STAT_ANNUNC3) == 0) { + g_video.g_cur_a2_stat |= (ALL_STAT_ANNUNC3); + change_display_mode(dcycs); + } + return 0; + + + /* 0xc060 - 0xc06f */ + case 0x60: /* 0xc060 */ + return IOR(g_moremem.g_paddle_buttons & 8); + case 0x61: /* 0xc061 */ + return IOR(adb_is_cmd_key_down() || + g_moremem.g_paddle_buttons & 1); + case 0x62: /* 0xc062 */ + return IOR(adb_is_option_key_down() || + g_moremem.g_paddle_buttons & 2); + case 0x63: /* 0xc063 */ + return IOR(g_moremem.g_paddle_buttons & 4); + case 0x64: /* 0xc064 */ + return read_paddles(dcycs, 0); + case 0x65: /* 0xc065 */ + return read_paddles(dcycs, 1); + case 0x66: /* 0xc066 */ + return read_paddles(dcycs, 2); + case 0x67: /* 0xc067 */ + return read_paddles(dcycs, 3); + case 0x68: /* 0xc068 = STATEREG */ + return g_moremem.g_c068_statereg; + case 0x69: /* 0xc069 */ + /* Reserved reg, return 0 */ + return 0; + + // OG Transwarp Read Interface + #ifdef TRANSWARP + case 0x6a: /* 0xc06a */ + { + // extern double g_zip_pmhz; + return (int)(g_sim65816.g_zip_pmhz*1000)&0xFF; + } + case 0x6b: /* 0xc06b */ + { + //extern double g_zip_pmhz; + return (((int)(g_sim65816.g_zip_pmhz*1000))>>8)&0xFF; + } + case 0x6c: /* 0xc06c */ + { + // extern double g_zip_pmhz; + if (g_sim65816.g_zip_pmhz==1.0) return 0; // slow + else if (g_sim65816.g_zip_pmhz>=2.6) return 2; // warp + else return 1; // zip + } + #else + case 0x6a: /* 0xc06a */ + case 0x6b: /* 0xc06b */ + case 0x6c: /* 0xc06c */ + #endif + case 0x6d: /* 0xc06d */ + case 0x6e: /* 0xc06e */ + case 0x6f: /* 0xc06f */ + UNIMPL_READ; + + /* 0xc070 - 0xc07f */ + case 0x70: /* c070 */ + paddle_trigger(dcycs); + return 0; + case 0x71: /* 0xc071 */ + case 0x72: case 0x73: + case 0x74: case 0x75: case 0x76: case 0x77: + case 0x78: case 0x79: case 0x7a: case 0x7b: + case 0x7c: case 0x7d: case 0x7e: case 0x7f: + return g_rom_fc_ff_ptr[3*65536 + 0xc000 + (loc & 0xff)]; + + /* 0xc080 - 0xc08f */ + case 0x80: case 0x81: case 0x82: case 0x83: + case 0x84: case 0x85: case 0x86: case 0x87: + case 0x88: case 0x89: case 0x8a: case 0x8b: + case 0x8c: case 0x8d: case 0x8e: case 0x8f: + new_lcbank2 = ((loc & 0x8) >> 1) ^ 0x4; + new_wrdefram = (loc & 1); + if(new_wrdefram != g_moremem.g_c08x_wrdefram) { + fixup_wrdefram(new_wrdefram); + } + switch(loc & 0x3) { + case 0x1: /* 0xc081 */ + case 0x2: /* 0xc082 */ + /* Read rom, set lcbank2 */ + set_statereg(dcycs, (g_moremem.g_c068_statereg & ~(0x04))| + (new_lcbank2 | 0x08)); + break; + case 0x0: /* 0xc080 */ + case 0x3: /* 0xc083 */ + /* Read ram (clear RDROM), set lcbank2 */ + set_statereg(dcycs, (g_moremem.g_c068_statereg & ~(0x0c))| + (new_lcbank2)); + break; + } + return float_bus(dcycs); + /* 0xc090 - 0xc09f */ + case 0x90: case 0x91: case 0x92: case 0x93: + case 0x94: case 0x95: case 0x96: case 0x97: + case 0x98: case 0x99: case 0x9a: case 0x9b: + case 0x9c: case 0x9d: case 0x9e: case 0x9f: + /* UNIMPL_READ; */ + return 0; + /* 0xc0a0 - 0xc0af */ + case 0xa0: case 0xa1: case 0xa2: case 0xa3: + case 0xa4: case 0xa5: case 0xa6: case 0xa7: + case 0xa8: case 0xa9: case 0xaa: case 0xab: + case 0xac: case 0xad: case 0xae: case 0xaf: + return 0; + /* UNIMPL_READ; */ + + /* 0xc0b0 - 0xc0bf */ + case 0xb0: + /* c0b0: female voice tool033 look at this */ + return 0; + case 0xb1: case 0xb2: case 0xb3: + case 0xb4: case 0xb5: case 0xb6: case 0xb7: + case 0xb9: case 0xba: case 0xbb: + case 0xbc: case 0xbd: case 0xbe: case 0xbf: + /* UNIMPL_READ; */ + return 0; + /* c0b8: Second Sight card stuff: return 0 */ + case 0xb8: + return 0; + break; + + /* 0xc0c0 - 0xc0cf */ + case 0xc0: case 0xc1: case 0xc2: case 0xc3: + case 0xc4: case 0xc5: case 0xc6: case 0xc7: + case 0xc8: case 0xc9: case 0xca: case 0xcb: + case 0xcc: case 0xcd: case 0xce: case 0xcf: + return 0; + /* 0xc0d0 - 0xc0df */ + case 0xd0: case 0xd1: case 0xd2: case 0xd3: + case 0xd4: case 0xd5: case 0xd6: case 0xd7: + case 0xd8: case 0xd9: case 0xda: case 0xdb: + case 0xdc: case 0xdd: case 0xde: case 0xdf: + return 0; + /* 0xc0e0 - 0xc0ef */ + case 0xe0: case 0xe1: case 0xe2: case 0xe3: + case 0xe4: case 0xe5: case 0xe6: case 0xe7: + case 0xe8: case 0xe9: case 0xea: case 0xeb: + case 0xed: case 0xee: case 0xef: + return read_iwm(loc, dcycs); + case 0xec: + return iwm_read_c0ec(dcycs); + /* 0xc0f0 - 0xc0ff */ + case 0xf0: case 0xf1: case 0xf2: case 0xf3: + case 0xf4: case 0xf5: case 0xf6: case 0xf7: + case 0xf8: case 0xf9: case 0xfa: case 0xfb: + case 0xfc: case 0xfd: case 0xfe: case 0xff: + return 0; + + default: + printf("loc: %04x bad\n", loc); + UNIMPL_READ; + } + case 1: case 2: case 3: case 4: case 5: case 6: + /* c100 - c6ff */ + mask = (1 << ((loc >> 8) & 7)); + if(INTCX || ((g_moremem.g_c02d_int_crom & mask) == 0)) { + return(g_rom_fc_ff_ptr[0x3c000 + (loc & 0xfff)]); + } + return float_bus(dcycs); + case 7: + /* c700 */ + if(INTCX || ((g_moremem.g_c02d_int_crom & (1 << 7)) == 0)) { + return(g_rom_fc_ff_ptr[0x3c000 + (loc & 0xfff)]); + } + tmp = g_rom_fc_ff_ptr[0x3c500 + (loc & 0xff)]; + if((loc & 0xff) == 0xfb) { + tmp = tmp & 0xbf; /* clear bit 6 for ROM 03 */ + } + return tmp; + case 8: case 9: case 0xa: case 0xb: case 0xc: case 0xd: case 0xe: + if(INTCX || ((g_moremem.g_c02d_int_crom & (1 << 3)) == 0)) { + return(g_rom_fc_ff_ptr[0x3c000 + (loc & 0xfff)]); + } + UNIMPL_READ; + case 0xf: + if(INTCX || ((g_moremem.g_c02d_int_crom & (1 << 3)) == 0)) { + return(g_rom_fc_ff_ptr[0x3c000 + (loc & 0xfff)]); + } + if((loc & 0xfff) == 0xfff) { + return g_rom_fc_ff_ptr[0x3cfff]; + } + UNIMPL_READ; + } + + halt_printf("io_read: hit end, loc: %06x\n", loc); + + return 0xff; +} + +void +io_write(word32 loc, int val, double *cyc_ptr) +{ + double dcycs; +#if 0 + double fcyc, new_fcyc; +#endif + int new_tmp; + int new_lcbank2; + int new_wrdefram; + int tmp; + int fixup; + + CALC_DCYCS_FROM_CYC_PTR(dcycs, cyc_ptr, fcyc, new_fcyc); + + val = val & 0xff; + switch((loc >> 8) & 0xf) { + case 0: /* 0xc000 - 0xc0ff */ + switch(loc & 0xff) { + /* 0xc000 - 0xc00f */ + case 0x00: /* 0xc000 */ + if(g_video.g_cur_a2_stat & ALL_STAT_ST80) { + g_video.g_cur_a2_stat &= (~ALL_STAT_ST80); + fixup_st80col(dcycs); + } + return; + case 0x01: /* 0xc001 */ + if((g_video.g_cur_a2_stat & ALL_STAT_ST80) == 0) { + g_video.g_cur_a2_stat |= (ALL_STAT_ST80); + fixup_st80col(dcycs); + } + return; + case 0x02: /* 0xc002 */ + set_statereg(dcycs, g_moremem.g_c068_statereg & ~0x20); + return; + case 0x03: /* 0xc003 */ + set_statereg(dcycs, g_moremem.g_c068_statereg | 0x20); + return; + case 0x04: /* 0xc004 */ + set_statereg(dcycs, g_moremem.g_c068_statereg & ~0x10); + return; + case 0x05: /* 0xc005 */ + set_statereg(dcycs, g_moremem.g_c068_statereg | 0x10); + return; + case 0x06: /* 0xc006 */ + set_statereg(dcycs, g_moremem.g_c068_statereg & ~0x01); + return; + case 0x07: /* 0xc007 */ + set_statereg(dcycs, g_moremem.g_c068_statereg | 0x01); + return; + case 0x08: /* 0xc008 */ + set_statereg(dcycs, g_moremem.g_c068_statereg & ~0x80); + return; + case 0x09: /* 0xc009 */ + set_statereg(dcycs, g_moremem.g_c068_statereg | 0x80); + return; + case 0x0a: /* 0xc00a */ + tmp = 1 << 3; + if((g_moremem.g_c02d_int_crom & tmp) != 0) { + g_moremem.g_c02d_int_crom &= ~tmp; + fixup_intcx(); + } + return; + case 0x0b: /* 0xc00b */ + tmp = 1 << 3; + if((g_moremem.g_c02d_int_crom & tmp) == 0) { + g_moremem.g_c02d_int_crom |= tmp; + fixup_intcx(); + } + return; + case 0x0c: /* 0xc00c */ + if(g_video.g_cur_a2_stat & ALL_STAT_VID80) { + g_video.g_cur_a2_stat &= (~ALL_STAT_VID80); + change_display_mode(dcycs); + } + return; + case 0x0d: /* 0xc00d */ + if((g_video.g_cur_a2_stat & ALL_STAT_VID80) == 0) { + g_video.g_cur_a2_stat |= (ALL_STAT_VID80); + change_display_mode(dcycs); + } + return; + case 0x0e: /* 0xc00e */ + if(g_video.g_cur_a2_stat & ALL_STAT_ALTCHARSET) { + g_video.g_cur_a2_stat &= (~ALL_STAT_ALTCHARSET); + change_display_mode(dcycs); + } + return; + case 0x0f: /* 0xc00f */ + if((g_video.g_cur_a2_stat & ALL_STAT_ALTCHARSET) == 0) { + g_video.g_cur_a2_stat |= (ALL_STAT_ALTCHARSET); + change_display_mode(dcycs); + } + return; + /* 0xc010 - 0xc01f */ + case 0x10: case 0x11: case 0x12: case 0x13: + case 0x14: case 0x15: case 0x16: case 0x17: + case 0x18: case 0x19: case 0x1a: case 0x1b: + case 0x1c: case 0x1d: case 0x1e: case 0x1f: + adb_access_c010(); + return; + /* 0xc020 - 0xc02f */ + case 0x20: /* 0xc020 */ + /* WRITE CASSETTE?? */ + return; + case 0x21: /* 0xc021 */ + new_tmp = ((val >> 7) & 1) << + (31 - BIT_ALL_STAT_COLOR_C021); + if((g_video.g_cur_a2_stat & ALL_STAT_COLOR_C021) != new_tmp) { + g_video.g_cur_a2_stat ^= new_tmp; + change_display_mode(dcycs); + } + return; + case 0x22: /* 0xc022 */ + /* change text color */ + tmp = (g_video.g_cur_a2_stat >> BIT_ALL_STAT_BG_COLOR) & 0xff; + if(val != tmp) { + /* change text/bg color! */ + g_video.g_cur_a2_stat &= ~(ALL_STAT_TEXT_COLOR | + ALL_STAT_BG_COLOR); + g_video.g_cur_a2_stat += (val << BIT_ALL_STAT_BG_COLOR); + change_display_mode(dcycs); + } + return; + case 0x23: /* 0xc023 */ + if((val & 0x19) != 0) { + halt_printf("c023 write of %02x!!!\n", val); + } + tmp = (g_moremem.g_c023_val & 0x70) | (val & 0x0f); + if((tmp & 0x22) == 0x22) { + //printf("adding scanline irq\n"); + add_irq(IRQ_PENDING_C023_SCAN); + } + if(!(tmp & 2)) { + //printf("remove scanline irq\n"); + remove_irq(IRQ_PENDING_C023_SCAN); + } + if((tmp & 0x44) == 0x44) { + add_irq(IRQ_PENDING_C023_1SEC); + } + if(!(tmp & 0x4)) { + remove_irq(IRQ_PENDING_C023_1SEC); + } + + if(g_moremem.g_irq_pending & (IRQ_PENDING_C023_SCAN | + IRQ_PENDING_C023_1SEC)) { + tmp |= 0x80; + } + //printf("old c023: %X new: %X\n",g_moremem.g_c023_val,tmp); + + g_moremem.g_c023_val = tmp; + return; + case 0x24: /* 0xc024 */ + /* Write to mouse reg: Throw it away */ + return; + case 0x26: /* 0xc026 */ + adb_write_c026(val); + return; + case 0x27: /* 0xc027 */ + adb_write_c027(val); + return; + case 0x29: /* 0xc029 */ + g_moremem.g_c029_val_some = val & 0x41; + if((val & 1) == 0) { + halt_printf("c029: %02x\n", val); + } + new_tmp = val & 0xa0; + if(new_tmp != (g_video.g_cur_a2_stat & 0xa0)) { + g_video.g_cur_a2_stat = (g_video.g_cur_a2_stat & (~0xa0)) + + new_tmp; + change_display_mode(dcycs); + } + return; + case 0x2a: /* 0xc02a */ +#if 0 + printf("Writing c02a with %02x\n", val); +#endif + return; + case 0x2b: /* 0xc02b */ + g_moremem.g_c02b_val = val; + if(val != 0x08 && val != 0x00) { + printf("Writing c02b with %02x\n", val); + } + return; + case 0x2d: /* 0xc02d */ + if((val & 0x9) != 0) { + halt_printf("Illegal c02d write: %02x!\n", val); + } + fixup = (val != g_moremem.g_c02d_int_crom); + g_moremem.g_c02d_int_crom = val; + if(fixup) { + vid_printf("Write c02d of %02x\n", val); + fixup_intcx(); + } + return; + case 0x28: /* 0xc028 */ + case 0x2c: /* 0xc02c */ + UNIMPL_WRITE; + case 0x25: /* 0xc025 */ + /* Space Shark writes to c025--ignore */ + case 0x2e: /* 0xc02e */ + case 0x2f: /* 0xc02f */ + /* Modulae writes to this--just ignore them */ + return; + break; + + /* 0xc030 - 0xc03f */ + case 0x30: /* 0xc030 */ +#if 0 + printf("Write speaker?\n"); +#endif + (void)doc_read_c030(dcycs); + return; + case 0x31: /* 0xc031 */ + tmp = val ^ g_moremem.g_c031_disk35; + if(tmp & 0x40) { + /* apple35_sel changed, maybe speed change */ + set_halt(HALT_EVENT); + } + g_moremem.g_c031_disk35 = val & 0xc0; + return; + case 0x32: /* 0xc032 */ + tmp = g_moremem.g_c023_val & 0x7f; + if(((val & 0x40) == 0) && (tmp & 0x40)) { + /* clear 1 sec int */ + remove_irq(IRQ_PENDING_C023_1SEC); + tmp &= 0xbf; + //printf("c032 (1s) old: %X new: %X\n",g_moremem.g_c023_val,tmp & 0xbf); + g_moremem.g_c023_val = tmp; + } + if( (val & 0x20) == 0 && !(tmp & 0x20) ) + { + irq_printf("no scan int irq to clear\n"); + } + else + if(((val & 0x20) == 0) && (tmp & 0x20)) { + + /* clear scan line int */ + remove_irq(IRQ_PENDING_C023_SCAN); + +#if 0 + // OG delayed write C023 (wait end of line before clearing value) + + { + extern word32 kpc; + printf("(%X) delayed clearing scanline irq old: %X new: %X\n",kpc,g_moremem.g_c023_val,tmp & 0xdf); + // add_event_entry(dcycs+ (DCYCS_IN_16MS/262.0)/2, 8 /*EV_DELAY_WRITE_C023*/ ); + g_delayed_c023_val = 1; + } +#else + //printf("clearing g_moremem.g_c023_val\n"); + g_moremem.g_c023_val = tmp & 0xdf; + check_for_new_scan_int(dcycs); +#endif + + + } + if(g_moremem.g_irq_pending & (IRQ_PENDING_C023_1SEC | + IRQ_PENDING_C023_SCAN)) { + irq_printf("c032 pending: %X\n",g_moremem.g_c023_val); + g_moremem.g_c023_val |= 0x80; + } + if((val & 0x9f) != 0x9f) { + irq_printf("c032: wrote %02x!\n", val); + } + return; + case 0x33: /* 0xc033 = CLOCKDATA*/ + g_moremem.g_c033_data = val; + return; + case 0x34: /* 0xc034 = CLOCKCTL */ + tmp = val ^ g_moremem.g_c034_val; + clock_write_c034(val); + if(tmp & 0xf) { + change_border_color(dcycs, val & 0xf); + } + return; + case 0x35: /* 0xc035 */ + update_shadow_reg(val); + return; + case 0x36: /* 0xc036 = CYAREG */ + tmp = val ^ g_moremem.g_c036_val_speed; + g_moremem.g_c036_val_speed = (val & ~0x20); /* clr bit 5 */ + if(tmp & 0x80) { + /* to recalculate times since speed changing */ + set_halt(HALT_EVENT); + } + if(tmp & 0xf) { + /* slot_motor_detect changed */ + set_halt(HALT_EVENT); + } + + if((val & 0x60) != 0) { + /* for ROM 03, 0x40 is the power-on status */ + /* and can be read/write */ + if(((val & 0x60) != 0x40) || + (g_sim65816.g_rom_version < 3)) { + g_moremem.g_c036_val_speed &= (~0x60); + halt_printf("c036: %2x\n", val); + } + } + if(tmp & 0x10) { /* shadow in all banks! */ + if(g_moremem.g_num_shadow_all_banks++ == 0) { + printf("Shadowing all banks...This " + "must be the NFC Megademo\n"); + } + fixup_shadow_all_banks(); + } + return; + case 0x37: /* 0xc037 */ + /* just ignore, probably someone writing c036 m=0 */ + return; + case 0x38: /* 0xc038 */ + scc_write_reg(1, val, dcycs); + return; + case 0x39: /* 0xc039 */ + scc_write_reg(0, val, dcycs); + return; + case 0x3a: /* 0xc03a */ + scc_write_data(1, val, dcycs); + return; + case 0x3b: /* 0xc03b */ + scc_write_data(0, val, dcycs); + return; + case 0x3c: /* 0xc03c */ + /* doc ctl */ + doc_write_c03c(val, dcycs); + return; + case 0x3d: /* 0xc03d */ + /* doc data reg */ + doc_write_c03d(val, dcycs); + return; + case 0x3e: /* 0xc03e */ + g_moremem.g_c03ef_doc_ptr = (g_moremem.g_c03ef_doc_ptr & 0xff00) + val; + return; + case 0x3f: /* 0xc03f */ + g_moremem.g_c03ef_doc_ptr = (g_moremem.g_c03ef_doc_ptr & 0xff) + (val << 8); + return; + + /* 0xc040 - 0xc04f */ + case 0x41: /* c041 */ + g_moremem.g_c041_val = val & 0x1f; + + if((val & 0xe7) != 0) { + halt_printf("write c041: %02x\n", val); + } + + if(!(val & C041_EN_VBL_INTS)) { + /* no more vbl interrupt */ + remove_irq(IRQ_PENDING_C046_VBL); + } + if(!(val & C041_EN_25SEC_INTS)) { + remove_irq(IRQ_PENDING_C046_25SEC); + } + return; + case 0x46: /* c046 */ + /* ignore writes to c046 */ + return; + case 0x47: /* c047 */ + remove_irq(IRQ_PENDING_C046_VBL | + IRQ_PENDING_C046_25SEC); + g_moremem.g_c046_val &= 0xe7; /* clear vblint, 1/4sec int*/ + return; + case 0x48: /* c048 */ + /* diversitune writes this--ignore it */ + return; + case 0x42: /* c042 */ + case 0x43: /* c043 */ + return; + case 0x4f: /* c04f */ + g_moremem.g_em_emubyte_cnt = 1; + return; + case 0x40: /* c040 */ + case 0x44: /* c044 */ + case 0x45: /* c045 */ + case 0x49: /* c049 */ + case 0x4a: /* c04a */ + case 0x4b: /* c04b */ + case 0x4c: /* c04c */ + case 0x4d: /* c04d */ + case 0x4e: /* c04e */ + UNIMPL_WRITE; + + /* 0xc050 - 0xc05f */ + case 0x50: /* 0xc050 */ + if(g_video.g_cur_a2_stat & ALL_STAT_TEXT) { + g_video.g_cur_a2_stat &= (~ALL_STAT_TEXT); + change_display_mode(dcycs); + } + return; + case 0x51: /* 0xc051 */ + if((g_video.g_cur_a2_stat & ALL_STAT_TEXT) == 0) { + g_video.g_cur_a2_stat |= (ALL_STAT_TEXT); + change_display_mode(dcycs); + } + return; + case 0x52: /* 0xc052 */ + if(g_video.g_cur_a2_stat & ALL_STAT_MIX_T_GR) { + g_video.g_cur_a2_stat &= (~ALL_STAT_MIX_T_GR); + change_display_mode(dcycs); + } + return; + case 0x53: /* 0xc053 */ + if((g_video.g_cur_a2_stat & ALL_STAT_MIX_T_GR) == 0) { + g_video.g_cur_a2_stat |= (ALL_STAT_MIX_T_GR); + change_display_mode(dcycs); + } + return; + case 0x54: /* 0xc054 */ + // printf("*"); + // addFrameRate(3); + set_statereg(dcycs, g_moremem.g_c068_statereg & (~0x40)); + return; + case 0x55: /* 0xc055 */ + // addFrameRate(4); + set_statereg(dcycs, g_moremem.g_c068_statereg | 0x40); + return; + case 0x56: /* 0xc056 */ + if(g_video.g_cur_a2_stat & ALL_STAT_HIRES) { + g_video.g_cur_a2_stat &= (~ALL_STAT_HIRES); + fixup_hires_on(); + change_display_mode(dcycs); + } + return; + case 0x57: /* 0xc057 */ + if((g_video.g_cur_a2_stat & ALL_STAT_HIRES) == 0) { + g_video.g_cur_a2_stat |= (ALL_STAT_HIRES); + fixup_hires_on(); + change_display_mode(dcycs); + } + return; + case 0x58: /* 0xc058 */ + if(g_moremem.g_zipgs_unlock >= 4) { + g_moremem.g_zipgs_reg_c059 &= 0x4; /* last reset cold */ + } else { + g_moremem.g_c05x_annuncs &= (~1); + } + return; + case 0x59: /* 0xc059 */ + if(g_moremem.g_zipgs_unlock >= 4) + { + if (g_sim65816.get_limit_speed() == SPEED_ZIP || g_sim65816.get_limit_speed() ==SPEED_UNLIMITED) + g_moremem.g_zipgs_reg_c059 = (val & 0xf8) | (g_moremem.g_zipgs_reg_c059 & 0x7); + else + { + printf("discarding zipgs detection in 2GS mode!\n"); + g_moremem.g_zipgs_reg_c059 ^= (0xaa); + } + } else { + g_moremem.g_c05x_annuncs |= 1; + } + return; + case 0x5a: /* 0xc05a */ + g_moremem.g_c05x_annuncs &= (~2); + if((val & 0xf0) == 0x50) { + g_moremem.g_zipgs_unlock++; + } else if((val & 0xf0) == 0xa0) { + g_moremem.g_zipgs_unlock = 0; + } else if(g_moremem.g_zipgs_unlock >= 4) { + if((g_moremem.g_zipgs_reg_c05b & 0x10) == 0) { + /* to recalculate times */ + set_halt(HALT_EVENT); + } + g_moremem.g_zipgs_reg_c05b |= 0x10; // disable + } + return; + case 0x5b: /* 0xc05b */ + if(g_moremem.g_zipgs_unlock >= 4) { + if((g_moremem.g_zipgs_reg_c05b & 0x10) != 0) { + /* to recalculate times */ + set_halt(HALT_EVENT); + } + g_moremem.g_zipgs_reg_c05b &= (~0x10); // enable + } else { + g_moremem.g_c05x_annuncs |= 2; + } + return; + case 0x5c: /* 0xc05c */ + if(g_moremem.g_zipgs_unlock >= 4) { + g_moremem.g_zipgs_reg_c05c = val; + } else { + g_moremem.g_c05x_annuncs &= (~4); + } + return; + case 0x5d: /* 0xc05d */ + if(g_moremem.g_zipgs_unlock >= 4) { + if(((g_moremem.g_zipgs_reg_c05a ^ val) >= 0x10) && + ((g_moremem.g_zipgs_reg_c05b & 0x10) == 0)) { + set_halt(HALT_EVENT); + } + g_moremem.g_zipgs_reg_c05a = val | 0xf; + } else { + g_moremem.g_c05x_annuncs |= 4; + } + return; + case 0x5e: /* 0xc05e */ + if(g_moremem.g_zipgs_unlock >= 4) { + /* Zippy writes 0x80 and 0x00 here... */ + } else if(g_video.g_cur_a2_stat & ALL_STAT_ANNUNC3) { + g_video.g_cur_a2_stat &= (~ALL_STAT_ANNUNC3); + change_display_mode(dcycs); + } + return; + case 0x5f: /* 0xc05f */ + if(g_moremem.g_zipgs_unlock >= 4) { + halt_printf("Wrote ZipGS $c05f: %02x\n", val); + } else if((g_video.g_cur_a2_stat & ALL_STAT_ANNUNC3) == 0) { + g_video.g_cur_a2_stat |= (ALL_STAT_ANNUNC3); + change_display_mode(dcycs); + } + return; + + + /* 0xc060 - 0xc06f */ + case 0x60: /* 0xc060 */ + case 0x61: /* 0xc061 */ + case 0x62: /* 0xc062 */ + case 0x63: /* 0xc063 */ + case 0x64: /* 0xc064 */ + case 0x65: /* 0xc065 */ + case 0x66: /* 0xc066 */ + case 0x67: /* 0xc067 */ + /* all the above do nothing--return */ + return; + case 0x68: /* 0xc068 = STATEREG */ + set_statereg(dcycs, val); + return; + case 0x69: /* 0xc069 */ + /* just ignore, someone writing c068 with m=0 */ + return; + + +#ifdef TRANSWARP + // OG writeTranswarp pseudo-register + case 0x6a: /* 0xc06a */ + g_moremem.transwarp_low_val = val; + return ; + case 0x6b: /* 0xc06b */ + val = (val<<8) + g_moremem.transwarp_low_val; + if ((val==2600) || (val==0x0028)) // Bug for demo ... + { + printf("Disabling Transwarp!\n"); + g_moremem.g_zipgs_reg_c05b |= 0x10; // disable + set_halt(HALT_EVENT); + } + else if (val==8000) + { + printf("Enabling Transwarp!\n"); + g_moremem.g_zipgs_reg_c05b &= ~0x10; // enable + set_halt(HALT_EVENT); + } + else + printf("unknown twgs speed:%d\n",val); + return; + case 0x6c: /* 0xc06c */ + if (val==0) + ; // set slow ? + else if (val==1) + { + // disable zip + g_moremem.g_zipgs_reg_c05b |= 0x10; // disable + set_halt(HALT_EVENT); + } + else if (val==2) + { + // enable zip + g_moremem.g_zipgs_reg_c05b &= ~0x10; // enable + set_halt(HALT_EVENT); + } + else + printf("unknown twgs index:%d\n",val); + return ; +#else + case 0x6a: /* 0xc06a */ + case 0x6b: /* 0xc06b */ + case 0x6c: /* 0xc06c */ +#endif + case 0x6d: /* 0xc06d */ + case 0x6e: /* 0xc06e */ + case 0x6f: /* 0xc06f */ + UNIMPL_WRITE; + + /* 0xc070 - 0xc07f */ + case 0x70: /* 0xc070 = Trigger paddles */ + paddle_trigger(dcycs); + return; + case 0x73: /* 0xc073 = multibank ram card bank addr? */ + return; + case 0x71: /* 0xc071 = another multibank ram card enable? */ + case 0x7e: /* 0xc07e */ + case 0x7f: /* 0xc07f */ + return; + case 0x72: /* 0xc072 */ + case 0x74: /* 0xc074 */ + case 0x75: /* 0xc075 */ + case 0x76: /* 0xc076 */ + case 0x77: /* 0xc077 */ + case 0x78: /* 0xc078 */ + case 0x79: /* 0xc079 */ + case 0x7a: /* 0xc07a */ + case 0x7b: /* 0xc07b */ + case 0x7c: /* 0xc07c */ + case 0x7d: /* 0xc07d */ + UNIMPL_WRITE; + + /* 0xc080 - 0xc08f */ + case 0x80: case 0x81: case 0x82: case 0x83: + case 0x84: case 0x85: case 0x86: case 0x87: + case 0x88: case 0x89: case 0x8a: case 0x8b: + case 0x8c: case 0x8d: case 0x8e: case 0x8f: + new_lcbank2 = ((loc >> 1) & 0x4) ^ 0x4; + new_wrdefram = (loc & 1); + if(new_wrdefram != g_moremem.g_c08x_wrdefram) { + fixup_wrdefram(new_wrdefram); + } + switch(loc & 0xf) { + case 0x1: /* 0xc081 */ + case 0x2: /* 0xc082 */ + case 0x5: /* 0xc085 */ + case 0x6: /* 0xc086 */ + case 0x9: /* 0xc089 */ + case 0xa: /* 0xc08a */ + case 0xd: /* 0xc08d */ + case 0xe: /* 0xc08e */ + /* Read rom, set lcbank2 */ + set_statereg(dcycs, (g_moremem.g_c068_statereg & ~(0x04))| + (new_lcbank2 | 0x08)); + break; + case 0x0: /* 0xc080 */ + case 0x3: /* 0xc083 */ + case 0x4: /* 0xc084 */ + case 0x7: /* 0xc087 */ + case 0x8: /* 0xc088 */ + case 0xb: /* 0xc08b */ + case 0xc: /* 0xc08c */ + case 0xf: /* 0xc08f */ + /* Read ram (clear RDROM), set lcbank2 */ + set_statereg(dcycs, (g_moremem.g_c068_statereg & ~(0x0c))| + (new_lcbank2)); + break; + } + return; + + /* 0xc090 - 0xc09f */ + case 0x90: case 0x91: case 0x92: case 0x93: + case 0x94: case 0x95: case 0x96: case 0x97: + case 0x98: case 0x99: case 0x9a: case 0x9b: + case 0x9c: case 0x9d: case 0x9e: case 0x9f: + UNIMPL_WRITE; + + /* 0xc0a0 - 0xc0af */ + case 0xa0: case 0xa1: case 0xa3: + case 0xa4: case 0xa5: case 0xa6: case 0xa7: + case 0xa9: case 0xaa: case 0xab: + case 0xac: case 0xad: case 0xae: case 0xaf: + UNIMPL_WRITE; + case 0xa2: /* Burger Times writes here on error */ + case 0xa8: + /* Kurzweil SMP writes to 0xc0a8, ignore it */ + return; + + /* 0xc0b0 - 0xc0bf */ + case 0xb0: + /* Second sight stuff--ignore it */ + return; + case 0xb1: case 0xb2: case 0xb3: + case 0xb4: case 0xb5: case 0xb6: case 0xb7: + case 0xb8: case 0xb9: case 0xba: case 0xbb: + case 0xbc: case 0xbd: case 0xbe: case 0xbf: + UNIMPL_WRITE; + + /* 0xc0c0 - 0xc0cf */ + case 0xc0: case 0xc1: case 0xc2: case 0xc3: + case 0xc4: case 0xc5: case 0xc6: case 0xc7: + case 0xc8: case 0xc9: case 0xca: case 0xcb: + case 0xcc: case 0xcd: case 0xce: case 0xcf: + UNIMPL_WRITE; + + /* 0xc0d0 - 0xc0df */ + case 0xd0: case 0xd1: case 0xd2: case 0xd3: + case 0xd4: case 0xd5: case 0xd6: case 0xd7: + case 0xd8: case 0xd9: case 0xda: case 0xdb: + case 0xdc: case 0xdd: case 0xde: case 0xdf: + UNIMPL_WRITE; + + /* 0xc0e0 - 0xc0ef */ + case 0xe0: case 0xe1: case 0xe2: case 0xe3: + case 0xe4: case 0xe5: case 0xe6: case 0xe7: + case 0xe8: case 0xe9: case 0xea: case 0xeb: + case 0xec: case 0xed: case 0xee: case 0xef: + write_iwm(loc, val, dcycs); + return; + + /* 0xc0f0 - 0xc0ff */ + case 0xf0: case 0xf1: case 0xf2: case 0xf3: + case 0xf4: case 0xf5: case 0xf6: case 0xf7: + case 0xf8: case 0xf9: case 0xfa: case 0xfb: + case 0xfc: case 0xfd: case 0xfe: case 0xff: + UNIMPL_WRITE; + default: + printf("WRite loc: %x\n",loc); + x_exit(-300); + } + break; + case 1: case 2: case 3: case 4: case 5: case 6: case 7: + /* c1000 - c7ff */ + UNIMPL_WRITE; + case 8: case 9: case 0xa: case 0xb: case 0xc: case 0xd: case 0xe: + UNIMPL_WRITE; + case 0xf: + if((loc & 0xfff) == 0xfff) { + /* cfff */ + return; + } + UNIMPL_WRITE; + } + printf("Huh2? Write loc: %x\n", loc); + x_exit(-290); +} + + + +#if 0 +int +get_slow_mem(word32 loc, int duff_cycles) +{ + int val; + + loc = loc & 0x1ffff; + + if((loc &0xf000) == 0xc000) { + return(io_read(loc &0xfff, duff_cycles)); + } + if((loc & 0xf000) >= 0xd000) { + if((loc & 0xf000) == 0xd000) { + if(!LCBANK2) { + /* Not LCBANK2 == be 0xc000 - 0xd000 */ + loc = loc - 0x1000; + } + } + } + + val = g_slow_memory_ptr[loc]; + + halt_printf("get_slow_mem: %06x = %02x\n", loc, val); + + return val; +} + +int +set_slow_mem(word32 loc, int val, int duff_cycles) +{ + int or_pos; + word32 or_val; + + loc = loc & 0x1ffff; + if((loc & 0xf000) == 0xc000) { + return(io_write(loc & 0xfff, val, duff_cycles)); + } + + if((loc & 0xf000) == 0xd000) { + if(!LCBANK2) { + /* Not LCBANK2 == be 0xc000 - 0xd000 */ + loc = loc - 0x1000; + } + } + + if(g_slow_memory_ptr[loc] != val) { + or_pos = (loc >> SHIFT_PER_CHANGE) & 0x1f; + or_val = DEP1(1, or_pos, 0); + if((loc >> CHANGE_SHIFT) >= SLOW_MEM_CH_SIZE || loc < 0) { + printf("loc: %08x!!\n", loc); + x_exit(11); + } + g_video.slow_mem_changed[(loc & 0xffff) >> CHANGE_SHIFT] |= or_val; + } + +/* doesn't shadow text/hires graphics properly! */ + g_slow_memory_ptr[loc] = val; + + return val; +} +#endif + +/* IIgs vertical line counters */ +/* 0x7d - 0x7f: in vbl, top of screen? */ +/* 0x80 - 0xdf: not in vbl, drawing screen */ +/* 0xe0 - 0xff: in vbl, bottom of screen */ + +/* Note: lines are then 0-0x60 effectively, for 192 lines */ +/* vertical blanking engages on line 192, even if in super hires mode */ +/* (Last 8 lines in SHR are drawn with vbl_active set */ + +word32 +get_lines_since_vbl(double dcycs) +{ + double dcycs_since_last_vbl; + double dlines_since_vbl; + double dcyc_line_start; + word32 lines_since_vbl; + int offset; + + dcycs_since_last_vbl = dcycs - g_sim65816.g_last_vbl_dcycs; + + dlines_since_vbl = dcycs_since_last_vbl * (1.0 / 65.0); + lines_since_vbl = (int)dlines_since_vbl; + dcyc_line_start = (double)lines_since_vbl * 65.0; + + offset = ((int)(dcycs_since_last_vbl - dcyc_line_start)) & 0xff; + + lines_since_vbl = (lines_since_vbl << 8) + offset; + + if(lines_since_vbl < 0x10680) { + return lines_since_vbl; + } else { + halt_printf("lines_since_vbl: %08x!\n", lines_since_vbl); + printf("dc_s_l_v: %f, dcycs: %f, last_vbl_cycs: %f\n", + dcycs_since_last_vbl, dcycs, g_sim65816.g_last_vbl_dcycs); + show_dtime_array(); + show_all_events(); + /* U_STACK_TRACE(); */ + } + + return lines_since_vbl; +} + + +int +in_vblank(double dcycs) +{ + int lines_since_vbl; + if (g_sim65816.g_fixed_vblank != 0) + { + if (g_sim65816.g_vbl_count < ( g_sim65816.g_vbl_count_since_lastvblank + g_sim65816.g_fixed_vblank) ) + return 0; + } + + lines_since_vbl = get_lines_since_vbl(dcycs); + + if(lines_since_vbl >= 0xc000) + { + g_sim65816.g_vbl_count_since_lastvblank = g_sim65816.g_vbl_count ; + return 1; + } + + return 0; +} + +/* horizontal video counter goes from 0x00,0x40 - 0x7f, then 0x80,0xc0-0xff */ +/* over 2*65 cycles. The last visible screen pos is 0x7f and 0xff */ +/* This matches KEGS starting line 0 at the border for line -1 */ +int +read_vid_counters(int loc, double dcycs) +{ + word32 mask; + int lines_since_vbl; + + loc = loc & 0xf; + + lines_since_vbl = get_lines_since_vbl(dcycs); + + lines_since_vbl += 0x10000; + if(lines_since_vbl >= 0x20000) { + lines_since_vbl = lines_since_vbl - 0x20000 + 0xfa00; + } + + if(lines_since_vbl > 0x1ffff) { + halt_printf("lines_since_vbl: %04x, dcycs: %f, last_vbl: %f\n", + lines_since_vbl, dcycs, g_sim65816.g_last_vbl_dcycs); + } + + if(loc == 0xe) { + /* Vertical count */ + // OxF0 never returned ('stopped at E3'), causing Noisetracker screen saver to freeze + int l = (lines_since_vbl >> 9) & 0xff ; + /* + + static int min=100000; + static int max=0; + + if (lmax) + { + max = l; + printf("max vlb:%x\n",l); + } + if (l==0xF0) + printf("*"); + */ + + return l; + } + + mask = (lines_since_vbl >> 1) & 0x80; + + lines_since_vbl = (lines_since_vbl & 0xff); + if(lines_since_vbl >= 0x01) { + lines_since_vbl = (lines_since_vbl + 0x3f) & 0x7f; + } + return (mask | (lines_since_vbl & 0xff)); +} + diff --git a/kegs/Src/moremem.h b/kegs/Src/moremem.h new file mode 100644 index 0000000..3830681 --- /dev/null +++ b/kegs/Src/moremem.h @@ -0,0 +1,93 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + +#define IOR(val) ( (val) ? 0x80 : 0x00 ) + +#define ALTZP (g_moremem.g_c068_statereg & 0x80) +/* #define PAGE2 (g_c068_statereg & 0x40) */ +#define RAMRD (g_moremem.g_c068_statereg & 0x20) +#define RAMWRT (g_moremem.g_c068_statereg & 0x10) +#define RDROM (g_moremem.g_c068_statereg & 0x08) +#define LCBANK2 (g_moremem.g_c068_statereg & 0x04) +#define ROMB (g_moremem.g_c068_statereg & 0x02) +#define INTCX (g_moremem.g_c068_statereg & 0x01) + + +#ifdef _WIN32 +#pragma pack(push,PRAGMA_PACK_SIZE) +#endif + +class s_moremem : public serialized +{ +public: + int g_num_shadow_all_banks ; + int g_em_emubyte_cnt ; + int g_paddle_buttons ; + int g_irq_pending ; + + int g_c023_val; + + int g_c029_val_some ; + int g_c02b_val ; + int g_c02d_int_crom ; + int g_c031_disk35 ; + int g_c033_data ; + int g_c034_val ; + int g_c035_shadow_reg ; + int g_c036_val_speed ; + int g_c03ef_doc_ptr ; + + int g_c041_val ; /* C041_EN_25SEC_INTS, C041_EN_MOVE_INTS */ + int g_c046_val ; + int g_c05x_annuncs ; + int g_c068_statereg ; + int g_c08x_wrdefram ; + int g_zipgs_unlock ; + int g_zipgs_reg_c059 ; + // 7=LC cache dis, 6==5ms paddle del en, 5==5ms ext del en, + // 4==5ms c02e enab, 3==CPS follow enab, 2-0: 111 + int g_zipgs_reg_c05a ; + // 7:4 = current ZIP speed, 0=100%, 1=93.75%, F=6.25% + // 3:0: always 1111 + int g_zipgs_reg_c05b; + // 7==1ms clock, 6==cshupd: tag data at c05f updated + // 5==LC cache disable, 4==bd is disabled, 3==delay in effect, + // 2==rombank, 1-0==ram size (00:8K, 01=16K, 10=32K, 11=64K) + int g_zipgs_reg_c05c ; + // 7:1==slot delay enable (for 52-54ms), 0==speaker 5ms delay + int transwarp_low_val ; + + // from engine_c.cpp + int g_ret1; + int g_ret2; + + + s_moremem() + { + + INIT_SERIALIZED(); + + g_c029_val_some = 0x41; + g_c02b_val = 0x08; + g_c035_shadow_reg = 0x08; + g_c036_val_speed = 0x80; + g_zipgs_reg_c059 = 0x5f; + g_zipgs_reg_c05a = 0x0f; + g_zipgs_reg_c05b = 0x40; + } + + DEFAULT_SERIALIZE_IN_OUT ; + +} XCODE_PRAGMA_PACK; + +#ifdef _WIN32 +#pragma pack(pop) +#endif + +extern s_moremem g_moremem; + diff --git a/kegs/Src/op_routs.h b/kegs/Src/op_routs.h new file mode 100644 index 0000000..29ad1d4 --- /dev/null +++ b/kegs/Src/op_routs.h @@ -0,0 +1,462 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#ifdef ASM +# ifdef INCLUDE_RCSID_S + .data + .export rcsdif_op_routs_h,data +rcsdif_op_routs_h + .stringz "@(#)$KmKId: op_routs.h,v 1.40 2004-01-10 15:49:46-05 kentd Exp $" + .code +# endif + + .import get_mem_b0_16,code + .import get_mem_b0_8,code + + .export op_routs_start,data +op_routs_start .word 0 +#endif /* ASM */ + +#ifdef ASM +# define CMP_INDEX_REG_MEAT8(index_reg) \ + extru ret0,31,8,ret0 ! \ + ldi 0xff,scratch3 ! \ + subi 0x100,ret0,ret0 ! \ + add index_reg,ret0,ret0 ! \ + extru ret0,23,1,scratch1 ! \ + and ret0,scratch3,zero ! \ + extru ret0,24,1,neg ! \ + b dispatch ! \ + dep scratch1,31,1,psr + +# define CMP_INDEX_REG_MEAT16(index_reg) \ + extru ret0,31,16,ret0 ! \ + ldil l%0x10000,scratch2 ! \ + zdepi -1,31,16,scratch3 ! \ + sub scratch2,ret0,ret0 ! \ + add index_reg,ret0,ret0 ! \ + extru ret0,15,1,scratch1 ! \ + and ret0,scratch3,zero ! \ + extru ret0,16,1,neg ! \ + b dispatch ! \ + dep scratch1,31,1,psr + +# define CMP_INDEX_REG_LOAD(new_label, index_reg) \ + bb,>=,n psr,27,new_label ! \ + bl get_mem_long_8,link ! \ + nop ! \ + CMP_INDEX_REG_MEAT8(index_reg) ! \ + .label new_label ! \ + bl get_mem_long_16,link ! \ + nop ! \ + CMP_INDEX_REG_MEAT16(index_reg) +#endif + + +#ifdef ASM +#define GET_DLOC_X_IND_WR() \ + CYCLES_PLUS_1 ! \ + add xreg,direct,scratch2 ! \ + INC_KPC_2 ! \ + add scratch2,arg0,arg0 ! \ + bl get_mem_b0_direct_page_16,link ! \ + extru arg0,31,16,arg0 ! \ + copy ret0,arg0 ! \ + extru,= direct,31,8,0 ! \ + CYCLES_PLUS_1 ! \ + dep dbank,15,8,arg0 +#else /* C */ +# define GET_DLOC_X_IND_WR() \ + CYCLES_PLUS_1; \ + INC_KPC_2; \ + if(direct & 0xff) { \ + CYCLES_PLUS_1; \ + } \ + arg = arg + xreg + direct; \ + GET_MEMORY_DIRECT_PAGE16(arg & 0xffff, arg); \ + arg = (dbank << 16) + arg; +#endif + + +#ifdef ASM +# define GET_DLOC_X_IND_ADDR() \ + ldb 1(scratch1),arg0 ! \ + GET_DLOC_X_IND_WR() +#else /* C */ +# define GET_DLOC_X_IND_ADDR() \ + GET_1BYTE_ARG; \ + GET_DLOC_X_IND_WR() +#endif + +#ifdef ASM +# define GET_DISP8_S_WR() \ + CYCLES_PLUS_1 ! \ + add stack,arg0,arg0 ! \ + INC_KPC_2 ! \ + extru arg0,31,16,arg0 +#else /* C */ +#define GET_DISP8_S_WR() \ + CYCLES_PLUS_1; \ + arg = (arg + stack) & 0xffff; \ + INC_KPC_2; +#endif + + +#ifdef ASM +# define GET_DISP8_S_ADDR() \ + ldb 1(scratch1),arg0 ! \ + GET_DISP8_S_WR() +#else /* C */ +# define GET_DISP8_S_ADDR() \ + GET_1BYTE_ARG; \ + GET_DISP8_S_WR() +#endif + +#ifdef ASM +# define GET_DLOC_WR() \ + INC_KPC_2 ! \ + extru,= direct,31,8,0 ! \ + CYCLES_PLUS_1 ! \ + add direct,arg0,arg0 ! \ + extru arg0,31,16,arg0 +#else /* C */ +# define GET_DLOC_WR() \ + arg = (arg + direct) & 0xffff; \ + if(direct & 0xff) { \ + CYCLES_PLUS_1; \ + } \ + INC_KPC_2; +#endif + +#ifdef ASM +# define GET_DLOC_ADDR() \ + ldb 1(scratch1),arg0 ! \ + GET_DLOC_WR() +#else /* C */ +# define GET_DLOC_ADDR() \ + GET_1BYTE_ARG; \ + GET_DLOC_WR() +#endif + +#ifdef ASM +# define GET_DLOC_L_IND_WR() \ + INC_KPC_2 ! \ + extru,= direct,31,8,0 ! \ + CYCLES_PLUS_1 ! \ + add direct,arg0,arg0 ! \ + bl get_mem_b0_24,link ! \ + extru arg0,31,16,arg0 ! \ + copy ret0,arg0 +#else /* C */ +# define GET_DLOC_L_IND_WR() \ + arg = (arg + direct) & 0xffff; \ + if(direct & 0xff) { \ + CYCLES_PLUS_1; \ + } \ + INC_KPC_2; \ + GET_MEMORY24(arg, arg, 1); +#endif + + +#ifdef ASM +# define GET_DLOC_L_IND_ADDR() \ + ldb 1(scratch1),arg0 ! \ + GET_DLOC_L_IND_WR() +#else /* C */ +# define GET_DLOC_L_IND_ADDR() \ + GET_1BYTE_ARG; \ + GET_DLOC_L_IND_WR() +#endif + +#ifdef ASM +# define GET_DLOC_IND_Y_ADDR_FOR_WR() \ + ldb 1(scratch1),arg0 ! \ + CYCLES_PLUS_1 ! \ + GET_DLOC_IND_Y_WR_SPECIAL() +#else /* C */ +# define GET_DLOC_IND_Y_ADDR_FOR_WR() \ + GET_1BYTE_ARG; \ + if(direct & 0xff) { \ + CYCLES_PLUS_1; \ + } \ + GET_MEMORY_DIRECT_PAGE16((direct + arg) & 0xffff, tmp1); \ + tmp1 += (dbank << 16); \ + arg = tmp1 + yreg; \ + CYCLES_PLUS_1; \ + INC_KPC_2; +#endif + + +#ifdef ASM +# define GET_DLOC_IND_WR() \ + extru,= direct,31,8,0 ! \ + CYCLES_PLUS_1 ! \ + INC_KPC_2 ! \ + add direct,arg0,arg0 ! \ + bl get_mem_b0_direct_page_16,link ! \ + extru arg0,31,16,arg0 ! \ + copy ret0,arg0 ! \ + dep dbank,15,16,arg0 +#else /* C */ +# define GET_DLOC_IND_WR() \ + INC_KPC_2; \ + if(direct & 0xff) { \ + CYCLES_PLUS_1; \ + } \ + GET_MEMORY_DIRECT_PAGE16((direct + arg) & 0xffff, arg); \ + arg = (dbank << 16) + arg; +#endif + + +#ifdef ASM +# define GET_DLOC_IND_ADDR() \ + ldb 1(scratch1),arg0 ! \ + GET_DLOC_IND_WR() +#else +# define GET_DLOC_IND_ADDR() \ + GET_1BYTE_ARG; \ + GET_DLOC_IND_WR(); +#endif + +#ifdef ASM +#define GET_DLOC_INDEX_WR(index_reg) \ + GET_DLOC_INDEX_WR_A(index_reg) ! GET_DLOC_INDEX_WR_B(index_reg) + +#define GET_DLOC_INDEX_WR_A(index_reg) \ + CYCLES_PLUS_1 ! \ + add index_reg,direct,scratch2 ! \ + extru direct,23,8,scratch1 ! \ + INC_KPC_2 ! \ + extru,= direct,31,8,0 ! \ + CYCLES_PLUS_1 ! \ + bb,>= psr,23,.+16 ! \ +/* 4*/ add scratch2,arg0,arg0 ! \ +/* 8*/ extru,<> direct,31,8,0 ! \ +/*12*/ dep scratch1,23,8,arg0 + +/* GET_DLOC_INDeX_WR_B must be exactly one instruction! */ +#define GET_DLOC_INDEX_WR_B(index_reg) \ +/*16*/ extru arg0,31,16,arg0 + +#define GET_DLOC_Y_WR() \ + GET_DLOC_INDEX_WR(yreg) + +#define GET_DLOC_X_WR() \ + GET_DLOC_INDEX_WR(xreg) + +#define GET_DLOC_Y_ADDR() \ + ldb 1(scratch1),arg0 ! \ + GET_DLOC_Y_WR() + +# define GET_DLOC_X_ADDR() \ + ldb 1(scratch1),arg0 ! \ + GET_DLOC_X_WR() + +#else +# define GET_DLOC_INDEX_WR(index_reg) \ + CYCLES_PLUS_1; \ + arg = (arg & 0xff) + index_reg; \ + INC_KPC_2; \ + if(direct & 0xff) { \ + CYCLES_PLUS_1; \ + } \ + if((psr & 0x100) && ((direct & 0xff) == 0)) { \ + arg = (arg & 0xff); \ + } \ + arg = (arg + direct) & 0xffff; + +# define GET_DLOC_X_WR() \ + GET_DLOC_INDEX_WR(xreg) +# define GET_DLOC_Y_WR() \ + GET_DLOC_INDEX_WR(yreg) + +# define GET_DLOC_X_ADDR() \ + GET_1BYTE_ARG; \ + GET_DLOC_INDEX_WR(xreg) + +# define GET_DLOC_Y_ADDR() \ + GET_1BYTE_ARG; \ + GET_DLOC_INDEX_WR(yreg) +#endif + + +#ifdef ASM +# define GET_DISP8_S_IND_Y_WR() \ + add stack,arg0,arg0 ! \ + bl get_mem_b0_16,link ! \ + extru arg0,31,16,arg0 ! \ + dep dbank,15,16,ret0 ! \ + CYCLES_PLUS_2 ! \ + add ret0,yreg,arg0 ! \ + INC_KPC_2 ! \ + extru arg0,31,24,arg0 + +# define GET_DISP8_S_IND_Y_ADDR() \ + ldb 1(scratch1),arg0 ! \ + GET_DISP8_S_IND_Y_WR() +#else /* C */ + +# define GET_DISP8_S_IND_Y_WR() \ + arg = (stack + arg) & 0xffff; \ + GET_MEMORY16(arg,arg,1); \ + CYCLES_PLUS_2; \ + arg += (dbank << 16); \ + INC_KPC_2; \ + arg = (arg + yreg) & 0xffffff; + +# define GET_DISP8_S_IND_Y_ADDR() \ + GET_1BYTE_ARG; \ + GET_DISP8_S_IND_Y_WR() +#endif + + +#ifdef ASM +# define GET_DLOC_L_IND_Y_WR() \ + extru,= direct,31,8,0 ! \ + CYCLES_PLUS_1 ! \ + INC_KPC_2 ! \ + add direct,arg0,arg0 ! \ + bl get_mem_b0_24,link ! \ + extru arg0,31,16,arg0 ! \ + add ret0,yreg,arg0 ! \ + extru arg0,31,24,arg0 + +# define GET_DLOC_L_IND_Y_ADDR() \ + ldb 1(scratch1),arg0 ! \ + GET_DLOC_L_IND_Y_WR() +#else /* C */ + +# define GET_DLOC_L_IND_Y_WR() \ + arg = (direct + arg) & 0xffff; \ + if(direct & 0xff) { \ + CYCLES_PLUS_1; \ + } \ + GET_MEMORY24(arg,arg,1); \ + INC_KPC_2; \ + arg = (arg + yreg) & 0xffffff; + +# define GET_DLOC_L_IND_Y_ADDR() \ + GET_1BYTE_ARG; \ + GET_DLOC_L_IND_Y_WR() +#endif + + +#ifdef ASM +# define GET_ABS_ADDR() \ + ldb 1(scratch1),arg0 ! \ + ldb 2(scratch1),scratch1 ! \ + CYCLES_PLUS_1 ! \ + dep dbank,15,8,arg0 ! \ + INC_KPC_3 ! \ + dep scratch1,23,8,arg0 + +# define GET_LONG_ADDR() \ + ldb 1(scratch1),arg0 ! \ + ldb 2(scratch1),scratch2 ! \ + CYCLES_PLUS_2 ! \ + ldb 3(scratch1),scratch1 ! \ + INC_KPC_4 ! \ + dep scratch2,23,8,arg0 ! \ + dep scratch1,15,8,arg0 +#else /* C */ + +# define GET_ABS_ADDR() \ + GET_2BYTE_ARG; \ + CYCLES_PLUS_1; \ + arg = arg + (dbank << 16); \ + INC_KPC_3; + +# define GET_LONG_ADDR() \ + GET_3BYTE_ARG; \ + CYCLES_PLUS_2; \ + INC_KPC_4; +#endif + +#ifdef ASM +#define GET_ABS_INDEX_ADDR_FOR_WR(index_reg) \ + ldb 1(scratch1),arg0 ! \ + copy index_reg,scratch3 ! \ + ldb 2(scratch1),scratch2 ! \ + dep dbank,15,8,scratch3 ! \ + INC_KPC_3 ! \ + dep scratch2,23,8,arg0 ! \ + CYCLES_PLUS_2 ! \ + add arg0,scratch3,arg0 ! \ + extru arg0,31,24,arg0 + +#define GET_LONG_X_ADDR_FOR_WR() \ + ldb 3(scratch1),scratch2 ! \ + copy xreg,scratch3 ! \ + ldb 1(scratch1),arg0 ! \ + ldb 2(scratch1),scratch1 ! \ + CYCLES_PLUS_2 ! \ + dep scratch2,15,8,scratch3 ! \ + INC_KPC_4 ! \ + dep scratch1,23,8,arg0 ! \ + add arg0,scratch3,arg0 ! \ + extru arg0,31,24,arg0 +#else /* C */ + +#define GET_ABS_INDEX_ADDR_FOR_WR(index_reg) \ + GET_2BYTE_ARG; \ + arg = arg + (dbank << 16); \ + INC_KPC_3; \ + CYCLES_PLUS_2; \ + arg = (arg + index_reg) & 0xffffff; + +#define GET_LONG_X_ADDR_FOR_WR() \ + GET_3BYTE_ARG; \ + INC_KPC_4; \ + arg = (arg + xreg) & 0xffffff; \ + CYCLES_PLUS_2; + +#endif /* ASM */ + + +#ifdef ASM + .export op_routs_end,data +op_routs_end .word 0 + + +#define GET_DLOC_IND_Y_WR_SPECIAL() \ + add direct,arg0,arg0 ! \ + extru,= direct,31,8,0 ! \ + CYCLES_PLUS_1 ! \ + bl get_mem_b0_direct_page_16,link ! \ + extru arg0,31,16,arg0 ! \ + dep dbank,15,8,ret0 ! \ + INC_KPC_2 ! \ + add yreg,ret0,arg0 /* don't change this instr */ + /* or add any after */ + /* to preserve ret0 & arg0 */ + + +/* cycle calc: if yreg is 16bit or carry into 2nd byte, inc cycle */ +/* So, if y==16bit, add 1. If x==8bit, add 1 if carry */ +get_dloc_ind_y_rd_8 + stw link,STACK_SAVE_OP_LINK(sp) + GET_DLOC_IND_Y_WR_SPECIAL() + xor arg0,ret0,scratch1 + extru,= psr,27,1,0 + extru,= scratch1,23,8,0 + CYCLES_PLUS_1 + b get_mem_long_8 + ldw STACK_SAVE_OP_LINK(sp),link + +get_dloc_ind_y_rd_16 + stw link,STACK_SAVE_OP_LINK(sp) + GET_DLOC_IND_Y_WR_SPECIAL() + xor arg0,ret0,scratch1 + extru,= psr,27,1,0 + extru,= scratch1,23,8,0 + CYCLES_PLUS_1 + b get_mem_long_16 + ldw STACK_SAVE_OP_LINK(sp),link + + + +#endif /* ASM */ + diff --git a/kegs/Src/openalasync_snddriver.cpp b/kegs/Src/openalasync_snddriver.cpp new file mode 100644 index 0000000..746e3a7 --- /dev/null +++ b/kegs/Src/openalasync_snddriver.cpp @@ -0,0 +1,657 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "defc.h" + +#if defined(DRIVER_IOS) || defined(DRIVER_OSX) +# include +# import +# import +# include +#else +# include "../OpenAL/AL/alc.h" +# include "../OpenAL/AL/al.h" +#endif + +#include "sound.h" + +//extern int g_audio_rate; + +#define AL_NUM_BUFFERS 8 +#define AL_BUFFER_SIZE (SOUND_SHM_SAMP_SIZE*4*2) +ALuint source=0, buffers[AL_NUM_BUFFERS]; +int sndQueues[AL_NUM_BUFFERS]; + +const ALenum format = AL_FORMAT_STEREO16; +unsigned char *al_tmp_buf[AL_NUM_BUFFERS][AL_BUFFER_SIZE]; +ALCdevice *dev=NULL; +ALCcontext *ctx=NULL; + +int nblog = 2000; +//#define SNDLOG(STR,VAL) if (nblog){outputInfo(STR,VAL); nblog--;} +//#define SNDLOG(STR,VAL) if (nblog){printf(STR,VAL); nblog--;} +#define SNDLOG(STR,VAL) + + +// http://www.subfurther.com/blog/?p=602 + +#if defined(DRIVER_IOS) || defined(DRIVER_OSX) +typedef ALvoid AL_APIENTRY (*alBufferDataStaticProcPtr) (const ALint bid, ALenum format, ALvoid* data, ALsizei size, ALsizei freq); + + +ALvoid alBufferDataStaticProc(const ALint bid, ALenum format, ALvoid* data, ALsizei size, ALsizei freq) +{ + + static alBufferDataStaticProcPtr proc = NULL; + + if (proc == NULL) { + proc = (alBufferDataStaticProcPtr) alGetProcAddress((const ALCchar*) "alBufferDataStatic"); + } + + if (proc) + proc(bid, format, data, size, freq); + + return; +} +#endif + +void resetQueues() +{ + + for(int i=0;i 0)) + { + if(l_DataBuffer == NULL) + { + printf("*** DataBuffer NULL!!! *** \n"); + } + // grab a buffer ID from openAL + alGenBuffers(1, (ALuint*)&sound.m_BufferId); + + ALenum l_error = alGetError(); + + if(l_error != AL_NO_ERROR) + { + printf("**** OpenAL ERROR buffer%i\n", l_error); + return sound; + } + else + { + printf("**** OpenAL OK buffer %i\n", sound.m_BufferId); + } + + ALuint f; + if (sound.depth==16) + { + if (sound.nbchannel == 1) + f = AL_FORMAT_MONO16; + else + f = AL_FORMAT_STEREO16; + } + else + { + if (sound.nbchannel == 1) + f = AL_FORMAT_MONO8; + else + f = AL_FORMAT_STEREO8; + + } + + + alBufferData(sound.m_BufferId, f, l_DataBuffer, l_FileSize, sound.frequency); + + l_error = alGetError(); + if(l_error != AL_NO_ERROR) + { + printf("**** OpenAL ERROR format\n"); + return sound; + } + + // create Source + alGenSources(1, (ALuint*)&sound.m_SourceId); + l_error = alGetError(); + if(l_error != AL_NO_ERROR) + { + printf("**** OpenAL ERROR source\n"); + return sound; + } + + alSourcei(sound.m_SourceId, AL_BUFFER, sound.m_BufferId); + + l_error = alGetError(); + if(l_error != AL_NO_ERROR) + { + printf("**** OpenAL ERROR source buffer\n"); + return sound; + } + + // if loop: + //alSourcei(m_SourceId, AL_LOOPING, AL_TRUE); + + alSourcef(sound.m_SourceId, AL_PITCH, 1.0f); + //l_error = alGetError(); + + //ASSERTC(l_error == AL_NO_ERROR,"**** OpenAL ERROR buffer\n"); + //if(l_error != AL_NO_ERROR) + //{ + // CONSOLEMSG("**** OpenAL ERROR properties\n"); + // return FAILURE; + //} + + alSourcef(sound.m_SourceId, AL_GAIN, 1.0f); + + l_error = alGetError(); + + if(l_error != AL_NO_ERROR) + { + printf("**** OpenAL ERROR properties\n"); + return sound; + } + } + else + { + return sound; + } + + if (l_DataBuffer) + { + free(l_DataBuffer); + l_DataBuffer = NULL; + } + + //printf("**** OpenAL Resource load SUCCESS\n"); + sound.successfullyLoaded = 1; + return sound; +} + +int async_release_wav(OASound* _pSound) +{ + if (!_pSound) + return 0; + + + if(_pSound->m_SourceId) + { + + alDeleteSources(1, (ALuint*)&_pSound->m_SourceId); + _pSound->m_SourceId = 0; + + } + if(_pSound->m_BufferId) + { + alDeleteBuffers(1, (ALuint*)&_pSound->m_BufferId); + _pSound->m_BufferId = 0; + } + _pSound->successfullyLoaded=0; + return 1; +} + + +// **************************************************************************** +// +// **************************************************************************** +int async_play_wav(OASound* _pSound, int _Loop, float _Attenuation, float _StartAt ) +{ + if (!_pSound) + return 0; + + if (!_pSound->successfullyLoaded) + return 0; + + + if(!_pSound->m_SourceId) + return 0; + + + alSourcePlay(_pSound->m_SourceId); + + int l_error = alGetError(); + + if(l_error != AL_NO_ERROR) + { + printf("**** OpenAL ERROR play %i\n", l_error); + } + + return 1; +} + +// **************************************************************************** +// +// **************************************************************************** +int async_stop_wav(OASound* _pSound) +{ + if (!_pSound) + return 0; + + if (!_pSound->successfullyLoaded) + return 0; + + if(!_pSound->m_SourceId) + return 0; + + + alSourceStop(_pSound->m_SourceId); + return 1; +} + +void x_play_sound(enum_sound _hSound) +{ + + async_play_wav(&g_system_sounds[_hSound].sound,0,0,0); + +} + +int x_is_sound_playing(enum_sound _hSound) +{ + OASound& sound = g_system_sounds[_hSound].sound; + if (sound.m_SourceId==0) + return 0; + ALint val; + alGetSourcei(sound.m_SourceId, AL_SOURCE_STATE, &val); + return (val == AL_PLAYING); +} + + +#if 1 + +/* + * Struct to hold fmt subchunk data for WAVE files. + */ +struct WAVE_Format { + char subChunkID[4]; + long subChunkSize; + short audioFormat; + short numChannels; + long sampleRate; + long byteRate; + short blockAlign; + short bitsPerSample; +}; + +/* + * Struct to hold the data of the wave file + */ +struct WAVE_Data { + char subChunkID[4]; //should contain the word data + long subChunk2Size; //Stores the size of the data block +}; + +struct RIFF_Header { + char chunkID[4]; + long chunkSize;//size not including chunkSize or chunkID + char format[4]; +}; + +bool loadWavFile(const char* filename, unsigned char** buffer, + unsigned int* size, int* frequency, + int* depth,int* nbchannel) { + //Local Declarations + FILE* soundFile = NULL; + WAVE_Format wave_format; + RIFF_Header riff_header; + WAVE_Data wave_data; + unsigned char* data; + + + soundFile = fopen(filename, "rb"); + if (!soundFile) + { + printf("could not open %s\n",filename); + return false; + } + + // Read in the first chunk into the struct + fread(&riff_header, sizeof(RIFF_Header), 1, soundFile); + + //check for RIFF and WAVE tag in memeory + if ((riff_header.chunkID[0] != 'R' || + riff_header.chunkID[1] != 'I' || + riff_header.chunkID[2] != 'F' || + riff_header.chunkID[3] != 'F') || + (riff_header.format[0] != 'W' || + riff_header.format[1] != 'A' || + riff_header.format[2] != 'V' || + riff_header.format[3] != 'E')) + { + fclose(soundFile); + printf ("Invalid RIFF or WAVE Header in %s\n",filename); + return false; + } + + //Read in the 2nd chunk for the wave info + fread(&wave_format, sizeof(WAVE_Format), 1, soundFile); + //check for fmt tag in memory + if (wave_format.subChunkID[0] != 'f' || + wave_format.subChunkID[1] != 'm' || + wave_format.subChunkID[2] != 't' || + wave_format.subChunkID[3] != ' ') + { + fclose(soundFile); + printf ("Invalid Wave Format"); + return false; + } + + + //check for extra parameters; + if (wave_format.subChunkSize > 16) + fseek(soundFile, sizeof(short), SEEK_CUR); + + //Read in the the last byte of data before the sound file + fread(&wave_data, sizeof(WAVE_Data), 1, soundFile); + //check for data tag in memory + if (wave_data.subChunkID[0] != 'd' || + wave_data.subChunkID[1] != 'a' || + wave_data.subChunkID[2] != 't' || + wave_data.subChunkID[3] != 'a') + { + + fclose(soundFile); + printf ( "Invalid data header"); + return false; + } + + //Allocate memory for data + data = (unsigned char*)malloc(wave_data.subChunk2Size); + + // Read in the sound data into the soundData variable + if (!fread(data, wave_data.subChunk2Size, 1, soundFile)) + { + free(data); + fclose(soundFile); + printf ( "error loading WAVE data into struct!"); + return false; + } + + //Now we set the variables that we passed in with the + //data from the structs + *size = wave_data.subChunk2Size; + *frequency = wave_format.sampleRate; + *nbchannel = wave_format.numChannels ; + *depth = wave_format.bitsPerSample; + *buffer = data; + fclose(soundFile); + return true; + } + +bool x_load_wav(const char* _Path, unsigned char** _outDataBuffer, unsigned int & _outFileSize, OASound & _sound ) +{ + + return loadWavFile(_Path,_outDataBuffer,&_outFileSize,&_sound.frequency,&_sound.depth,&_sound.nbchannel); + } + +#endif diff --git a/kegs/Src/paddles.cpp b/kegs/Src/paddles.cpp new file mode 100644 index 0000000..7d7357c --- /dev/null +++ b/kegs/Src/paddles.cpp @@ -0,0 +1,221 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "defc.h" +#include "adb.h" +#include "moremem.h" +#include "paddles.h" +#include "sim65816.h" + +s_paddles g_paddles; + +int g_invert_paddles = 0; +int g_swap_paddles = 0; + +int g_joystick_type = JOYSTICK_TYPE_NATIVE_1; // OG Trying to set native joystick as default +int g_joystick_native_type1 = -1; +int g_joystick_native_type2 = -1; +int g_joystick_native_type = -1; + + +void +paddle_fixup_joystick_type() +{ + /* If g_paddles.g_joystick_type points to an illegal value, change it */ + if(g_joystick_type == JOYSTICK_TYPE_NATIVE_1) { + g_joystick_native_type = g_joystick_native_type1; + if(g_joystick_native_type1 < 0) { + g_joystick_type = JOYSTICK_TYPE_KEYPAD; + printf("no joy 1 --- switching to keypad\n"); + } + } + if(g_joystick_type == JOYSTICK_TYPE_NATIVE_2) { + g_joystick_native_type = g_joystick_native_type2; + if(g_joystick_native_type2 < 0) { + g_joystick_type = JOYSTICK_TYPE_KEYPAD; + printf("no joy 2 --- switching to keypad\n"); + } + } +} + +void +paddle_trigger(double dcycs) +{ + /* Called by read/write to $c070 */ + g_paddles.g_paddle_trig_dcycs = dcycs; + + /* Determine what all the paddle values are right now */ + paddle_fixup_joystick_type(); + + switch(g_joystick_type) { + case JOYSTICK_TYPE_KEYPAD: /* Keypad Joystick */ + paddle_trigger_keypad(dcycs); + break; + case JOYSTICK_TYPE_MOUSE: /* Mouse Joystick */ + paddle_trigger_mouse(dcycs); + break; + case JOYSTICK_TYPE_NONE: /* None Joystick */ + paddle_trigger_none(dcycs); + break; +#if defined(DRIVER_IOS) && defined(ACTIVEGS) && !defined(ACTIVEGSKARATEKA) + case JOYSTICK_TYPE_ICADE: /* Mouse Joystick */ + { + extern void paddle_trigger_icade(double); + paddle_trigger_icade(dcycs); + } + break; +#endif + default: + joystick_update(dcycs); + } +} + +void +paddle_trigger_mouse(double dcycs) +{ + int val_x, val_y; + int mouse_x, mouse_y; + + val_x = 0; + + mouse_x = g_adb.g_mouse_raw_x; + mouse_y = g_adb.g_mouse_raw_y; + /* mous_phys_x is 0->560, convert that to -32768 to + 32767 cyc */ + /* So subtract 280 then mult by 117 */ + val_x = (mouse_x - 280) * 117; + + /* mous_phys_y is 0->384, convert that to -32768 to + 32767 cyc */ + /* so subtract 192 then mult by 180 to overscale it a bit */ + val_y = (mouse_y - 192) * 180; + + g_paddles.g_paddle_val[0] = val_x; + g_paddles.g_paddle_val[1] = val_y; + g_paddles.g_paddle_val[2] = 32767; + g_paddles.g_paddle_val[3] = 32767; + g_moremem.g_paddle_buttons |= 0xc; + paddle_update_trigger_dcycs(dcycs); +} + +void +paddle_trigger_none(double dcycs) +{ + g_paddles.g_paddle_val[0] = 32767; + g_paddles.g_paddle_val[1] = 32767; + g_paddles.g_paddle_val[2] = 32767; + g_paddles.g_paddle_val[3] = 32767; + g_moremem.g_paddle_buttons |= 0xc; + paddle_update_trigger_dcycs(dcycs); +} + +void +paddle_trigger_keypad(double dcycs) +{ + int get_y; + int val_x, val_y; + + val_x = adb_get_keypad_xy(get_y=0); + val_y = adb_get_keypad_xy(get_y=1); + /* val_x and val_y are already scale -32768 to +32768 */ + + g_paddles.g_paddle_val[0] = val_x; + g_paddles.g_paddle_val[1] = val_y; + g_paddles.g_paddle_val[2] = 32767; + g_paddles.g_paddle_val[3] = 32767; + g_moremem.g_paddle_buttons |= 0xc; + paddle_update_trigger_dcycs(dcycs); +} + +void +paddle_update_trigger_dcycs(double dcycs) +{ + double trig_dcycs; + int val; + int paddle_num; + int scale, trim; + int i; + + for(i = 0; i < 4; i++) { + paddle_num = i; + if(g_swap_paddles) { + paddle_num = i ^ 1; + } + val = g_paddles.g_paddle_val[paddle_num]; + if(g_invert_paddles) { + val = -val; + } + + /* convert -32768 to +32768 into 0->2816.0 cycles (the */ + /* paddle delay const) */ + /* First multiply by the scale factor to adjust range */ + if(paddle_num & 1) { + scale = g_paddles.g_joystick_scale_factor_y; + trim = g_paddles.g_joystick_trim_amount_y; + } else { + scale = g_paddles.g_joystick_scale_factor_x; + trim = g_paddles.g_joystick_trim_amount_x; + } +#if 0 + if(i == 0) { + printf("val was %04x(%d) * scale %03x = %d\n", + val, val, scale, (val*scale)>>16); + } +#endif + val = val * scale >> 16; + /* Val is now from -128 to + 128 since scale is */ + /* 256=1.0, 128 = 0.5 */ + val = val + 128 + trim; + if(val >= 255) { + val = 280; /* increase range */ + } + + + // OG Try to make the joystick up and running, even at fast speed (this might be turned into a user option?) + { + double facteur = 11.04; + + if (g_sim65816.g_speed_fast) + { + if (g_sim65816.get_limit_speed() == SPEED_ZIP) + facteur /= g_sim65816.g_zip_pmhz / 2.6; + else + if (g_sim65816.get_limit_speed() == SPEED_UNLIMITED) + facteur /= g_sim65816.g_projected_pmhz / 2.6; + } + else + { + // OG Hack to make the Joystick works with Miniprix (to investigate why it is needed...) + if (g_sim65816.engine.kpc == 0x5A02) + facteur /= 2.6; + } + + /* convert 0->255 into 0->2816.0 cycles (the paddle delay const) */ + trig_dcycs = dcycs + (val * facteur); + // trig_dcycs = dcycs + (val * 11.04); + g_paddles.g_paddle_dcycs[i] = trig_dcycs; + } + } +} + +int +read_paddles(double dcycs, int paddle) +{ + double trig_dcycs; + + trig_dcycs = g_paddles.g_paddle_dcycs[paddle & 3]; + + if(dcycs < trig_dcycs) { + return 0x80; + } else { + return 0x00; + } +} + +void +paddle_update_buttons() +{ + paddle_fixup_joystick_type(); + joystick_update_buttons(); +} diff --git a/kegs/Src/paddles.h b/kegs/Src/paddles.h new file mode 100644 index 0000000..d9bd220 --- /dev/null +++ b/kegs/Src/paddles.h @@ -0,0 +1,63 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + +// OG Added define for joystick +#define JOYSTICK_TYPE_KEYPAD 1000 +#define JOYSTICK_TYPE_MOUSE 1001 +#define JOYSTICK_TYPE_NATIVE_1 1002 +#define JOYSTICK_TYPE_NATIVE_2 1003 +#define JOYSTICK_TYPE_NONE 1004 // OG Added Joystick None +#define JOYSTICK_TYPE_ICADE 1005 // OG Added Joystick Icade + +//#define NB_JOYSTICK_TYPE 5 +#ifdef _WIN32 +#pragma pack(push,PRAGMA_PACK_SIZE) +#endif + +class s_paddles : public serialized +{ +public: + + + double g_paddle_trig_dcycs; + + int g_joystick_scale_factor_x ; + int g_joystick_scale_factor_y ; + int g_joystick_trim_amount_x ; + int g_joystick_trim_amount_y ; + + + int g_paddle_val[4] ; + /* g_paddle_val[0]: Joystick X coord, [1]:Y coord */ + + double g_paddle_dcycs[4] ; + /* g_paddle_dcycs are the dcycs the paddle goes to 0 */ + + s_paddles() + { + INIT_SERIALIZED(); + + g_joystick_scale_factor_x = 0x100; + g_joystick_scale_factor_y = 0x100; + + } + + DEFAULT_SERIALIZE_IN_OUT ; + +} XCODE_PRAGMA_PACK; + +#ifdef _WIN32 +#pragma pack(pop) +#endif + +extern s_paddles g_paddles; + +extern int g_joystick_type ; // OG Trying to set native joystick as default +extern int g_joystick_native_type1; +extern int g_joystick_native_type2; +extern int g_joystick_native_type ; diff --git a/kegs/Src/prodos.h b/kegs/Src/prodos.h new file mode 100644 index 0000000..c4165b6 --- /dev/null +++ b/kegs/Src/prodos.h @@ -0,0 +1,109 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#ifdef INCLUDE_RCSID_C +const char rcsid_defc_h[] = "@(#)$Id: prodos.h,v 1.4 2002/11/19 07:49:31 kadickey Exp $"; +#endif + + +typedef struct l2byte_st L2byte; +struct l2byte_st { + byte low; + byte hi; +}; + +typedef struct l3byte_st L3byte; +struct l3byte_st { + byte low; + byte hi; + byte higher; +}; + +typedef L2byte Block; + +typedef struct pro_time_st Pro_time; +struct pro_time_st { + byte times[4]; +}; + +typedef struct file_entry_st File_entry; +struct file_entry_st { + byte storage_type_name_len; + byte file_name[15]; +/* 0x10 */ + byte file_type; + Block key_pointer; +/* 0x13 */ + L2byte blocks_used; +/* 0x15 */ + L3byte eof; +/* 0x18 */ + Pro_time creation_time; +/* 0x1c */ + byte version; + byte min_version; +/* 0x1e */ + byte access; +/* 0x1f */ + L2byte aux_type; +/* 0x21 */ + Pro_time last_mod; +/* 0x25 */ + Block header_pointer; +}; + +STRUCT(Vol_hdr) { +/* 0x4 */ + byte storage_type_name_len; +/* 0x5 */ + byte vol_name[15]; +/* 0x14 */ + byte res1[8]; +/* 0x1c */ + Pro_time creation_time; +/* 0x20 */ + byte version; + byte min_version; + byte access; + byte entry_length; +/* 0x24 */ + byte entries_per_block; + L2byte file_count; +/* 0x27 */ + Block bit_map; +/* 0x29 */ + L2byte total_blocks; +}; + +typedef struct directory_st Directory; +struct directory_st { + Block prev_blk; + Block next_blk; + File_entry file_entries[13]; +}; + +STRUCT(ProDisk) { + int fd; + int total_blocks; + int size_bitmap_blocks; + int disk_bytes_left; + + int bitmap_bytes; + int bitmap_cur_pos; + byte *bitmap_ptr; + + int file_open; + File_entry *file_ptr; + int dir_blk_num; + int ind_blk_num; + int master_ind_blk_num; + byte dir_blk_data[512]; + byte ind_blk_data[512]; + byte master_ind_blk_data[512]; +}; + + +#include "prodos_protos.h" diff --git a/kegs/Src/prodos_protos.h b/kegs/Src/prodos_protos.h new file mode 100644 index 0000000..99b4e0d --- /dev/null +++ b/kegs/Src/prodos_protos.h @@ -0,0 +1,36 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +void flush_disk(ProDisk *disk); +void close_file(ProDisk *disk); +ProDisk *allocate_memdisk(char *out_name, int size); +void format_memdisk(ProDisk *ptr, char *name); +void disk_write_data(ProDisk *disk, int blk_num, byte *buf, int size); +void disk_read_data(ProDisk *disk, int blk_num, byte *buf, int size); +Directory *disk_read_dir(ProDisk *disk, int blk_num); +void disk_write_dir(ProDisk *disk, int blk_num); +void create_new_file(ProDisk *disk, int dir_block, int storage_type, + char *name, int file_type, word32 creation_time, int version, + int min_version, int access, int aux_type, word32 last_mod, word32 eof); +int pro_write_file(ProDisk *disk, byte *in_buf, int pos, int size); +int get_disk_block(ProDisk *disk, int pos, int create); +void get_new_ind_block(ProDisk *disk); +void write_ind_block(ProDisk *disk); +void get_new_master_ind_block(ProDisk *disk); +void write_master_ind_block(ProDisk *disk); +int find_next_free_block(ProDisk *disk); +void set_bitmap_used(byte *ptr, int i); +void set_bitmap_free(byte *ptr, int i); +void set_file_entry(File_entry *entry, int storage_type_name_len, + char *file_name, int file_type, int key_pointer, int blocks_used, + int eof, word32 creation, int version, int min_version, int access, + int aux_type, word32 last_mod, int header_pointer); +void set_l2byte(L2byte *ptr, int val); +void set_l3byte(L3byte *ptr, int val); +void set_pro_time(Pro_time *ptr, word32 val); +int get_l2byte(L2byte *ptr); +int get_l3byte(L3byte *ptr); +void inc_l2byte(L2byte *ptr); diff --git a/kegs/Src/protos.h b/kegs/Src/protos.h new file mode 100644 index 0000000..264b125 --- /dev/null +++ b/kegs/Src/protos.h @@ -0,0 +1,465 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#ifdef INCLUDE_RCSID_C +const char rcsid_protos_h[] = "@(#)$KmKId: protos.h,v 1.188 2004-12-06 19:08:34-05 kentd Exp $"; +#endif + +/* xdriver.c and macdriver.c and windriver.c */ +int x_show_alert(int is_fatal, const char *str); +int win_nonblock_read_stdin(int fd, char *bufptr, int len); +void x_dialog_create_kegs_conf(const char *str); +void update_color_array(int col_num, int a2_color); +void set_border_color(int val); +void x_update_physical_colormap(void); +void x_show_color_array(void); +void x_auto_repeat_on(int must); +void install_text_colormap(void); +void set_border_color(int val); +void draw_status(int line_num, const char *string1); +void x_video_shut(void); +void x_video_init(void); +void x_update_color(int col_num, int red, int green, int blue, word32 rgb); +void redraw_border(void); +void check_input_events(void); +void x_redraw_status_lines(void); +void x_push_kimage(Kimage *kimage_ptr, int destx, int desty, int srcx, int srcy, int width, int height); +void x_push_done(); +void x_hide_pointer(int); +void x_get_kimage(Kimage *kimage_ptr); +void x_full_screen(int do_full); + +/* test65.c */ +void do_gen_test(int got_num, int base_seed); + + +/* engine.s and engine_c.c */ +void fixed_memory_ptrs_init(); +void fixed_memory_ptrs_shut(); // OG Added shut to smoothly free up allocated memory +word32 get_itimer(void); + +word32 get_memory_c(word32 addr, int cycs); +word32 get_memory16_c(word32 addr, int cycs); +word32 get_memory24_c(word32 addr, int cycs); + +int get_memory_asm(word32 addr, int cycs); +int get_memory16_asm(word32 addr, int cycs); +int get_memory16_asm_fail(word32 addr, int cycs); +int get_memory_act_stub_asm(word32 addr, int cycs); +int get_memory16_act_stub_asm(word32 addr, int cycs); + +void set_memory_c(word32 addr, word32 val, int cycs); +void set_memory16_c(word32 addr, word32 val, int cycs); +void set_memory24_c(word32 addr, word32 val, int cycs); + +int enter_engine(Engine_reg *ptr); +void clr_halt_act(void); +void set_halt_act(int val); + +/* special scc_macdriver.c prototypes */ +int scc_serial_mac_init(int port); +void scc_serial_mac_change_params(int port); +void scc_serial_mac_fill_readbuf(int port, int space_left, double dcycs); +void scc_serial_mac_empty_writebuf(int port); + +/* special scc_windriver.c prototypes */ +int scc_serial_win_init(int port); +void scc_serial_win_change_params(int port); +void scc_serial_win_fill_readbuf(int port, int space_left, double dcycs); +void scc_serial_win_empty_writebuf(int port); + +/* special joystick_driver.c prototypes */ +void joystick_init(void); +void joystick_update(double dcycs); +void joystick_update_buttons(void); + + +/* END_HDR */ + +/* adb.c */ +void adb_init(void); +void adb_shut(); // OG Added adb_shut() +void adb_reset(void); +void adb_log(word32 addr, int val); +void show_adb_log(void); +void adb_error(void); +void adb_add_kbd_srq(void); +void adb_clear_kbd_srq(void); +void adb_add_data_int(void); +void adb_add_mouse_int(void); +void adb_clear_data_int(void); +void adb_clear_mouse_int(void); +void adb_send_bytes(int num_bytes, word32 val0, word32 val1, word32 val2); +void adb_send_1byte(word32 val); +void adb_response_packet(int num_bytes, word32 val); +void adb_kbd_reg0_data(int a2code, int is_up); +void adb_kbd_talk_reg0(void); +void adb_set_config(word32 val0, word32 val1, word32 val2); +void adb_set_new_mode(word32 val); +int adb_read_c026(void); +void adb_write_c026(int val); +void do_adb_cmd(void); +int adb_read_c027(void); +void adb_write_c027(int val); +int read_adb_ram(word32 addr); +void write_adb_ram(word32 addr, int val); +int adb_get_keypad_xy(int get_y); +int update_mouse(int x, int y, int button_states, int buttons_valid); +int mouse_read_c024(double dcycs); +void mouse_compress_fifo(double dcycs); +void adb_key_event(int a2code, int is_up); +word32 adb_read_c000(void); +word32 adb_access_c010(void); +word32 adb_read_c025(void); +int adb_is_cmd_key_down(void); +int adb_is_option_key_down(void); +void adb_increment_speed(void); +void adb_physical_key_update(int a2code, int is_up); +void adb_virtual_key_update(int a2code, int is_up); +void adb_all_keys_up(void); +void adb_kbd_repeat_off(void); + + +/* clock.c */ +double get_dtime(void); +int micro_sleep(double dtime); +void clk_bram_zero(void); +void clk_bram_set(int bram_num, int offset, int val); +void clk_setup_bram_version(void); +void clk_write_bram(FILE *fconf); +void update_cur_time(void); +void clock_update(void); +void clock_update_if_needed(void); +void clock_write_c034(word32 val); +void do_clock_data(void); + + +/* compile_time.c */ + + + + +/* dis.c */ +int get_num(void); +void debugger_help(void); +void do_debug_intfc(void); +word32 dis_get_memory_ptr(word32 addr); +void show_one_toolset(FILE *toolfile, int toolnum, word32 addr); +void show_toolset_tables(word32 a2bank, word32 addr); + + +enum mode_breakpoint + { + BRK_DISABLED=0, + BRK_X = 1, + BRK_READ=2, + BRK_WRITE=4, + BRK_PATCH=8, + BRK_STOP=16, + BRK_SLOWSPEED=32, + BRK_DEFAULTSPEED=64, + BRK_MESSAGE=128, + BRK_ALL = BRK_STOP|BRK_X|BRK_READ|BRK_WRITE + }; + + +void set_bp(word32 _addr,enum mode_breakpoint _mode,const char* _patch,const char* _check); +void show_bp(void); +void delete_bp(word32 addr); +void do_blank(void); +void do_go(void); +void do_step(void); +void xam_mem(int count); +void show_hex_mem(int startbank, word32 start, int endbank, word32 end, int count); +int read_line(char *buf, int len); +void do_debug_list(void); +void dis_do_memmove(void); +void dis_do_pattern_search(void); +void dis_do_compare(void); +void do_debug_unix(void); +void do_debug_load(void); +int do_dis(FILE *outfile, word32 kpc, int accsize, int xsize, int op_provided, word32 instr); +void show_line(FILE *outfile, word32 kaddr, word32 operand, int size, char *string); +void halt_printf(const char *fmt, ...); +void halt2_printf(const char *fmt, ...); + + +/* scc.c */ +void scc_init(void); +void scc_reset(void); +void scc_hard_reset_port(int port); +void scc_reset_port(int port); +void scc_regen_clocks(int port); +void scc_port_init(int port); +void scc_try_to_empty_writebuf(int port, double dcycs); +void scc_try_fill_readbuf(int port, double dcycs); +void scc_update(double dcycs); +void do_scc_event(int type, double dcycs); +void show_scc_state(void); +void scc_log(int regnum, word32 val, double dcycs); +void show_scc_log(void); +word32 scc_read_reg(int port, double dcycs); +void scc_write_reg(int port, word32 val, double dcycs); +void scc_maybe_br_event(int port, double dcycs); +void scc_evaluate_ints(int port); +void scc_maybe_rx_event(int port, double dcycs); +void scc_maybe_rx_int(int port, double dcycs); +void scc_clr_rx_int(int port); +void scc_handle_tx_event(int port, double dcycs); +void scc_maybe_tx_event(int port, double dcycs); +void scc_clr_tx_int(int port); +void scc_set_zerocnt_int(int port); +void scc_clr_zerocnt_int(int port); +void scc_add_to_readbuf(int port, word32 val, double dcycs); +void scc_add_to_readbufv(int port, double dcycs, const char *fmt, ...); +void scc_transmit(int port, word32 val, double dcycs); +void scc_add_to_writebuf(int port, word32 val, double dcycs); +word32 scc_read_data(int port, double dcycs); +void scc_write_data(int port, word32 val, double dcycs); + + +/* scc_socket_driver.c */ +void scc_socket_init(int port); +void scc_socket_maybe_open_incoming(int port, double dcycs); +void scc_socket_open_outgoing(int port, double dcycs); +void scc_socket_make_nonblock(int port, double dcycs); +void scc_socket_change_params(int port); +void scc_socket_close(int port, int full_close, double dcycs); +void scc_accept_socket(int port, double dcycs); +void scc_socket_telnet_reqs(int port, double dcycs); +void scc_socket_fill_readbuf(int port, int space_left, double dcycs); +void scc_socket_recvd_char(int port, int c, double dcycs); +void scc_socket_empty_writebuf(int port, double dcycs); +void scc_socket_modem_write(int port, int c, double dcycs); +void scc_socket_do_cmd_str(int port, double dcycs); +void scc_socket_send_modem_code(int port, int code, double dcycs); +void scc_socket_modem_hangup(int port, double dcycs); +void scc_socket_modem_connect(int port, double dcycs); +void scc_socket_modem_do_ring(int port, double dcycs); +void scc_socket_do_answer(int port, double dcycs); + + +/* scc_windriver.c */ + + +/* scc_macdriver.c */ + + +/* iwm.c */ + + +/* joystick_driver.c */ + + +/* moremem.c */ +void moremem_init(); // OG Added moremem_init() +void fixup_brks(void); +void fixup_hires_on(void); +void fixup_bank0_2000_4000(void); +void fixup_bank0_0400_0800(void); +void fixup_any_bank_any_page(int start_page, int num_pages, byte *mem0rd, byte *mem0wr); +void fixup_intcx(void); +void fixup_wrdefram(int new_wrdefram); +void fixup_st80col(double dcycs); +void fixup_altzp(void); +void fixup_page2(double dcycs); +void fixup_ramrd(void); +void fixup_ramwrt(void); +void fixup_lcbank2(void); +void fixup_rdrom(void); +void set_statereg(double dcycs, int val); +void fixup_shadow_txt1(void); +void fixup_shadow_txt2(void); +void fixup_shadow_hires1(void); +void fixup_shadow_hires2(void); +void fixup_shadow_shr(void); +void fixup_shadow_iolc(void); +void update_shadow_reg(int val); +void fixup_shadow_all_banks(void); +void setup_pageinfo(void); +void show_bankptrs_bank0rdwr(void); +void show_bankptrs(int bnk); +void show_addr(byte *ptr); +int io_read(word32 loc, double *cyc_ptr); +void io_write(word32 loc, int val, double *cyc_ptr); +word32 get_lines_since_vbl(double dcycs); +int in_vblank(double dcycs); +int read_vid_counters(int loc, double dcycs); + + +/* paddles.c */ +void paddle_fixup_joystick_type(void); +void paddle_trigger(double dcycs); +void paddle_trigger_mouse(double dcycs); +void paddle_trigger_none(double dcycs); +void paddle_trigger_keypad(double dcycs); +void paddle_update_trigger_dcycs(double dcycs); +int read_paddles(double dcycs, int paddle); +void paddle_update_buttons(void); + + +/* sim65816.c */ +void show_pc_log(void); +word32 toolbox_debug_4byte(word32 addr); +void toolbox_debug_c(word32 xreg, word32 stack, double *cyc_ptr); +void show_toolbox_log(void); +word32 get_memory_io(word32 loc, double *cyc_ptr); +void set_memory_io(word32 loc, int val, double *cyc_ptr); +void show_regs_act(Engine_reg *eptr); +void show_regs(void); +void my_exit(int ret); +void do_reset(void); +void check_engine_asm_defines(void); +byte *memalloc_align(int size, int skip_amt, void **alloc_ptr); +void memory_ptr_init(void); +void memory_ptr_shut(void); // OG Added shut +int kegsmain(int argc, char **argv); +void load_roms_init_memory(void); +void load_roms_shut_memory(void); // OG Added shut +void kegs_expand_path(char *out_ptr, const char *in_ptr, int maxlen); +void setup_kegs_file(char *outname, int maxlen, int ok_if_missing, int can_create_file, const char **name_ptr); +void initialize_events(void); +void check_for_one_event_type(int type); +void add_event_entry(double dcycs, int type); +double remove_event_entry(int type); +void add_event_stop(double dcycs); +void add_event_doc(double dcycs, int osc); +void add_event_scc(double dcycs, int type); +void add_event_vbl(void); +void add_event_vid_upd(int line); +double remove_event_doc(int osc); +double remove_event_scc(int type); +void show_all_events(void); +void show_pmhz(void); +void setup_zip_speeds(void); +void run_prog(void); +void add_irq(word32 irq_mask); +void remove_irq(word32 irq_mask); +void take_irq(int is_it_brk); +void show_dtime_array(void); +void update_60hz(double dcycs, double dtime_now); +void do_vbl_int(void); +void do_scan_int(double dcycs, int line); +void check_scan_line_int(double dcycs, int cur_video_line); +void check_for_new_scan_int(double dcycs); +void init_reg(void); +void handle_action(word32 ret); +void do_break(word32 ret); +void do_cop(word32 ret); +void do_wdm(word32 arg); +void do_wai(void); +void do_stp(void); +void size_fail(int val, word32 v1, word32 v2); +int fatal_printf(const char *fmt, ...); +int kegs_vprintf(const char *fmt, va_list ap); +void must_write(int fd, char *bufptr, int len); +void clear_fatal_logs(void); +char *kegs_malloc_str(const char *in_str); + + +/* smartport.c */ +void smartport_error(void); +void smartport_log(word32 start_addr, int cmd, int rts_addr, int cmd_list); +void do_c70d(word32 arg0); +void do_c70a(word32 arg0); +int do_read_c7(int unit_num, word32 buf, int blk); +int do_write_c7(int unit_num, word32 buf, int blk); +int do_format_c7(int unit_num); +void do_c700(word32 ret); + + +/* sound.c */ +void doc_log_rout(char *msg, int osc, double dsamps, int etc); +void show_doc_log(void); +void sound_init(void); +void sound_init_general(void); +void parent_sound_get_sample_rate(int read_fd); +void set_audio_rate(int rate); +void sound_reset(double dcycs); +void sound_shutdown(void); +void sound_update(double dcycs); +void open_sound_file(void); +void close_sound_file(void); +void check_for_range(word32 *addr, int num_samps, int offset); +void send_sound_to_file(word32 *addr, int shm_pos, int num_samps); +void send_sound(int real_samps, int size); +void show_c030_state(void); +void show_c030_samps(int *outptr, int num); +void sound_play(double dsamps); +void doc_handle_event(int osc, double dcycs); +void doc_sound_end(int osc, int can_repeat, double eff_dsamps, double dsamps); +void add_sound_irq(int osc); +void remove_sound_irq(int osc, int must); +void start_sound(int osc, double eff_dsamps, double dsamps); +void wave_end_estimate(int osc, double eff_dsamps, double dsamps); +void remove_sound_event(int osc); +void doc_write_ctl_reg(int osc, int val, double dsamps); +void doc_recalc_sound_parms(int osc, double eff_dcycs, double dsamps); +int doc_read_c030(double dcycs); +int doc_read_c03c(double dcycs); +int doc_read_c03d(double dcycs); +void doc_write_c03c(int val, double dcycs); +void doc_write_c03d(int val, double dcycs); +void doc_show_ensoniq_state(int osc); + + +/* sound_driver.c */ +void reliable_buf_write(word32 *shm_addr, int pos, int size); +void reliable_zero_write(int amt); +void child_sound_loop(int read_fd, int write_fd, word32 *shm_addr); +void child_sound_playit(word32 tmp); + + +/* video.c */ +void video_init(void); +void show_a2_line_stuff(void); +void video_reset(void); +void video_update(void); +int video_all_stat_to_line_stat(int line, int new_all_stat); +int *video_update_kimage_ptr(int line, int new_stat); +void change_a2vid_palette(int new_palette); +void check_a2vid_palette(void); +void change_display_mode(double dcycs); +void video_update_all_stat_through_line(int line); +void change_border_color(double dcycs, int val); +void update_border_info(void); +void update_border_line(int st_line_offset, int end_line_offset, int color); +void video_border_pixel_write(Kimage *kimage_ptr, int starty, int num_lines, word32 val, int st_off, int end_off); +void redraw_changed_text_40(int start_offset, int start_line, int num_lines, int reparse, byte *screen_data, int altcharset, int bg_val, int fg_val, int pixels_per_line); +void redraw_changed_text_80(int start_offset, int start_line, int num_lines, int reparse, byte *screen_data, int altcharset, int bg_val, int fg_val, int pixels_per_line); +void redraw_changed_gr(int start_offset, int start_line, int num_lines, int reparse, byte *screen_data, int pixels_per_line); +void redraw_changed_dbl_gr(int start_offset, int start_line, int num_lines, int reparse, byte *screen_data, int pixels_per_line); +void redraw_changed_hires(int start_offset, int start_line, int num_lines, int color, int reparse, byte *screen_data, int pixels_per_line); +void redraw_changed_hires_bw(int start_offset, int start_line, int num_lines, int reparse, byte *screen_data, int pixels_per_line); +void redraw_changed_hires_color(int start_offset, int start_line, int num_lines, int reparse, byte *screen_data, int pixels_per_line); +void redraw_changed_dbl_hires(int start_offset, int start_line, int num_lines, int color, int reparse, byte *screen_data, int pixels_per_line); +void redraw_changed_dbl_hires_bw(int start_offset, int start_line, int num_lines, int reparse, byte *screen_data, int pixels_per_line); +void redraw_changed_dbl_hires_color(int start_offset, int start_line, int num_lines, int reparse, byte *screen_data, int pixels_per_line); +int video_rebuild_super_hires_palette(word32 scan_info, int line, int reparse); +void redraw_changed_super_hires(int start_offset, int start_line, int num_lines, int in_reparse, byte *screen_data); +void display_screen(void); +void video_update_event_line(int line); +void video_check_input_events(void); +void video_update_through_line(int line); +void video_refresh_lines(int st_line, int num_lines, int must_reparse); +void refresh_border(void); +void end_screen(void); +void read_a2_font(void); +void video_get_kimage(Kimage *kimage_ptr, int extend_info, int depth, int mdepth); +void video_get_kimages(void); +void video_convert_kimage_depth(Kimage *kim_in, Kimage *kim_out, int startx, int starty, int width, int height); +void video_push_lines(Kimage *kimage_ptr, int start_line, int end_line, int left_pix, int right_pix); +void video_push_border_sides_lines(int src_x, int dest_x, int width, int start_line, int end_line); +void video_push_border_sides(void); +void video_push_border_special(void); +void video_push_kimages(void); +void video_update_color_raw(int col_num, int a2_color); +void video_update_color_array(int col_num, int a2_color); +void video_update_colormap(void); +void video_update_status_line(int line, const char *string); +void video_show_debug_info(void); +word32 float_bus(double dcycs); + diff --git a/kegs/Src/protos_engine_c.h b/kegs/Src/protos_engine_c.h new file mode 100644 index 0000000..77c2d36 --- /dev/null +++ b/kegs/Src/protos_engine_c.h @@ -0,0 +1,43 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#ifdef INCLUDE_RCSID_C +const char rcsid_protos_engine_c_h[] = "@(#)$KmKId: protos_engine_c.h,v 1.11 2004-10-11 22:48:16-04 kentd Exp $"; +#endif + +/* END_HDR */ + +/* engine_c.c */ +void check_breakpoints(word32 addr,enum mode_breakpoint); +word32 get_memory8_io_stub(word32 addr, byte *stat, double *fcycs_ptr, double fplus_x_m1); +word32 get_memory16_pieces_stub(word32 addr, byte *stat, double *fcycs_ptr, Fplus *fplus_ptr, int in_bank); +word32 get_memory24_pieces_stub(word32 addr, byte *stat, double *fcycs_ptr, Fplus *fplus_ptr, int in_bank); +void set_memory8_io_stub(word32 addr, word32 val, byte *stat, double *fcycs_ptr, double fplus_x_m1); +void set_memory16_pieces_stub(word32 addr, word32 val, double *fcycs_ptr, double fplus_1, double fplus_x_m1, int in_bank); +void set_memory24_pieces_stub(word32 addr, word32 val, double *fcycs_ptr, Fplus *fplus_ptr, int in_bank); +word32 get_memory_c(word32 addr, int cycs); +word32 get_memory16_c(word32 addr, int cycs); +word32 get_memory24_c(word32 addr, int cycs); +void set_memory_c(word32 addr, word32 val, int cycs); +void set_memory16_c(word32 addr, word32 val, int cycs); +void set_memory24_c(word32 addr, word32 val, int cycs); +word32 do_adc_sbc8(word32 in1, word32 in2, word32 psr, int sub); +word32 do_adc_sbc16(word32 in1, word32 in2, word32 psr, int sub); +void fixed_memory_ptrs_init(void); +word32 get_itimer(void); +void set_halt_act(int val); +void clr_halt_act(void); +word32 get_remaining_operands(word32 addr, word32 opcode, word32 psr, Fplus *fplus_ptr); +int enter_engine(Engine_reg *engine_ptr); +struct struct_breakpoint +{ + word32 addr; + enum mode_breakpoint mode; + const char* patch; + const char* check; +} ; +extern int g_num_breakpoints; +extern struct_breakpoint g_breakpts[MAX_BREAK_POINTS]; diff --git a/kegs/Src/protos_macdriver.h b/kegs/Src/protos_macdriver.h new file mode 100644 index 0000000..36cbd91 --- /dev/null +++ b/kegs/Src/protos_macdriver.h @@ -0,0 +1,59 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +void show_simple_alert(const char *str1, const char *str2, const char *str3, int num); +void x_dialog_create_kegs_conf(const char *str); +int x_show_alert(int is_fatal, const char *str);void update_window(void); + +//void mac_update_modifiers(word32 state); +void mac_warp_mouse(void); +void check_input_events(void); +void temp_run_application_event_loop(void); +int main(int argc, char *argv[]); +void x_update_color(int col_num, int red, int green, int blue, word32 rgb); +void x_update_physical_colormap(void); +void x_show_color_array(void); + + +void x_get_kimage(Kimage *kimage_ptr); +//void x_dev_video_init(void); +void x_redraw_status_lines(void); +void x_push_kimage(Kimage *kimage_ptr, int destx, int desty, int srcx, int srcy, int width, int height); +void x_push_done(void); +void x_auto_repeat_on(int must); +void x_auto_repeat_off(int must); +void x_hide_pointer(int do_hide); +void x_full_screen(int do_full); +void update_main_window_size(void); + +#ifndef __EVENTS__ +typedef unsigned short EventModifiers; +enum { + /* modifiers */ + activeFlagBit = 0, /* activate? (activateEvt and mouseDown)*/ + btnStateBit = 7, /* state of button?*/ + cmdKeyBit = 8, /* command key down?*/ + shiftKeyBit = 9, /* shift key down?*/ + alphaLockBit = 10, /* alpha lock down?*/ + optionKeyBit = 11, /* option key down?*/ + controlKeyBit = 12, /* control key down?*/ + rightShiftKeyBit = 13, /* right shift key down? Not supported on Mac OS X.*/ + rightOptionKeyBit = 14, /* right Option key down? Not supported on Mac OS X.*/ + rightControlKeyBit = 15 /* right Control key down? Not supported on Mac OS X.*/ +}; +enum { + activeFlag = 1 << activeFlagBit, + btnState = 1 << btnStateBit, + cmdKey = 1 << cmdKeyBit, + shiftKey = 1 << shiftKeyBit, + alphaLock = 1 << alphaLockBit, + optionKey = 1 << optionKeyBit, + controlKey = 1 << controlKeyBit, + rightShiftKey = 1 << rightShiftKeyBit, /* Not supported on Mac OS X.*/ + rightOptionKey = 1 << rightOptionKeyBit, /* Not supported on Mac OS X.*/ + rightControlKey = 1 << rightControlKeyBit /* Not supported on Mac OS X.*/ +}; +#endif \ No newline at end of file diff --git a/kegs/Src/protos_macsnd_driver.h b/kegs/Src/protos_macsnd_driver.h new file mode 100644 index 0000000..1ccf262 --- /dev/null +++ b/kegs/Src/protos_macsnd_driver.h @@ -0,0 +1,11 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +void mac_snd_callback(SndChannelPtr snd_chan_ptr, SndCommand *in_sndcmd); +int mac_send_audio(byte *ptr, int in_size); +void child_sound_init_mac(void); +void macsnd_init(word32 *shmaddr); + diff --git a/kegs/Src/protos_windriver.h b/kegs/Src/protos_windriver.h new file mode 100644 index 0000000..1896e3b --- /dev/null +++ b/kegs/Src/protos_windriver.h @@ -0,0 +1,27 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +int win_update_mouse(int x, int y, int button_states, int buttons_valid); +void win_event_mouse(int umsg,WPARAM wParam, LPARAM lParam); +void win_event_key(HWND hwnd, UINT raw_vk, BOOL down, int repeat, UINT flags); +void win_event_quit(HWND hwnd); +void window_needs_full_refresh(); +LRESULT CALLBACK win_event_handler(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam); +int main(int argc, char **argv); +void check_input_events(void); +void x_update_color(int col_num, int red, int green, int blue, word32 rgb); +void x_update_physical_colormap(void); +void show_xcolor_array(void); +void x_driver_end(void); +void x_get_kimage(Kimage *kimage_ptr); +//void x_dev_video_init(void); +void x_redraw_status_lines(void); +void x_push_kimage(Kimage *kimage_ptr, int destx, int desty, int srcx, int srcy, int width, int height); +void x_push_done(void); +void x_auto_repeat_on(int must); +void x_auto_repeat_off(int must); +void x_hide_pointer(int do_hide); + diff --git a/kegs/Src/protos_xdriver.h b/kegs/Src/protos_xdriver.h new file mode 100644 index 0000000..ddf7c19 --- /dev/null +++ b/kegs/Src/protos_xdriver.h @@ -0,0 +1,36 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +int main(int argc, char **argv); +void x_dialog_create_kegs_conf(const char *str); +int x_show_alert(int is_fatal, const char *str); +void x_update_color(int col_num, int red, int green, int blue, word32 rgb); +void x_update_physical_colormap(void); +void x_show_color_array(void); +int my_error_handler(Display *display, XErrorEvent *ev); +void x_driver_end(void); +void show_colormap(char *str, Colormap cmap, int index1, int index2, int index3); +void x_badpipe(int signum); +//void x_dev_video_init(void); +Visual *x_try_find_visual(int depth, int screen_num, XVisualInfo **visual_list_ptr); +void x_set_mask_and_shift(word32 x_mask, word32 *mask_ptr, int *shift_left_ptr, int *shift_right_ptr); +int xhandle_shm_error(Display *display, XErrorEvent *event); +void x_get_kimage(Kimage *kimage_ptr); +int get_shm(Kimage *kimage_ptr); +void get_ximage(Kimage *kimage_ptr); +void x_redraw_status_lines(void); +void x_push_kimage(Kimage *kimage_ptr, int destx, int desty, int srcx, int srcy, int width, int height); +void x_push_done(void); +int x_update_mouse(int raw_x, int raw_y, int button_states, int buttons_valid); +void check_input_events(void); +void x_hide_pointer(int do_hide); +void handle_keysym(XEvent *xev_in); +int x_keysym_to_a2code(int keysym, int is_up); +void x_update_modifier_state(int state); +void x_auto_repeat_on(int must); +void x_auto_repeat_off(int must); +void x_full_screen(int do_full); + diff --git a/kegs/Src/raster.h b/kegs/Src/raster.h new file mode 100644 index 0000000..7e85399 --- /dev/null +++ b/kegs/Src/raster.h @@ -0,0 +1,19 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + + + #ifdef USE_RASTER + +//#define TEST_RASTER +int getScanLine(); +int x_init_raster(void*); +void x_close_raster(); + int x_wait_for_vbl(); + int x_wait_for_last_refresh(double); +int x_test_raster(); +#endif \ No newline at end of file diff --git a/kegs/Src/scc.cpp b/kegs/Src/scc.cpp new file mode 100644 index 0000000..8d6ef65 --- /dev/null +++ b/kegs/Src/scc.cpp @@ -0,0 +1,1265 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "defc.h" +#include "moremem.h" +#include "sim65816.h" + +#ifdef UNDER_CE +#define vsnprintf _vsnprintf +#endif + + + +/* my scc port 0 == channel A = slot 1 = c039/c03b */ +/* port 1 == channel B = slot 2 = c038/c03a */ + +#include "scc.h" + +s_scc g_scc; + +#define SCC_R14_DPLL_SOURCE_BRG 0x100 +#define SCC_R14_FM_MODE 0x200 + +#define SCC_DCYCS_PER_PCLK ((DCYCS_1_MHZ) / ((DCYCS_28_MHZ) /8)) +#define SCC_DCYCS_PER_XTAL ((DCYCS_1_MHZ) / 3686400.0) + +#define SCC_BR_EVENT 1 +#define SCC_TX_EVENT 2 +#define SCC_RX_EVENT 3 +#define SCC_MAKE_EVENT(port, a) (((a) << 1) + (port)) + +const int g_baud_table[] = { + 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 +}; + + +void +scc_init() +{ + Scc *scc_ptr; + int i, j; + + for(i = 0; i < 2; i++) { + scc_ptr = &(g_scc.scc_stat[i]); + scc_ptr->accfd = -1; + scc_ptr->sockfd = -1; + scc_ptr->socket_state = -1; + scc_ptr->rdwrfd = -1; + scc_ptr->state = 0; + scc_ptr->host_handle = 0; + scc_ptr->host_handle2 = 0; + scc_ptr->br_event_pending = 0; + scc_ptr->rx_event_pending = 0; + scc_ptr->tx_event_pending = 0; + scc_ptr->char_size = 8; + scc_ptr->baud_rate = 9600; + scc_ptr->telnet_mode = 0; + scc_ptr->telnet_iac = 0; + scc_ptr->out_char_dcycs = 0.0; + scc_ptr->socket_num_rings = 0; + scc_ptr->socket_last_ring_dcycs = 0; + scc_ptr->modem_mode = 0; + scc_ptr->modem_dial_or_acc_mode = 0; + scc_ptr->modem_plus_mode = 0; + scc_ptr->modem_s0_val = 0; + scc_ptr->modem_cmd_len = 0; + scc_ptr->modem_cmd_str[0] = 0; + for(j = 0; j < 2; j++) { + scc_ptr->telnet_local_mode[j] = 0; + scc_ptr->telnet_remote_mode[j] = 0; + scc_ptr->telnet_reqwill_mode[j] = 0; + scc_ptr->telnet_reqdo_mode[j] = 0; + } + } + + scc_reset(); +} + +void +scc_reset() +{ + Scc *scc_ptr; + int i; + + for(i = 0; i < 2; i++) { + scc_ptr = &(g_scc.scc_stat[i]); + + scc_ptr->port = i; + scc_ptr->mode = 0; + scc_ptr->reg_ptr = 0; + scc_ptr->in_rdptr = 0; + scc_ptr->in_wrptr = 0; + scc_ptr->out_rdptr = 0; + scc_ptr->out_wrptr = 0; + scc_ptr->dcd = 0; + scc_ptr->wantint_rx = 0; + scc_ptr->wantint_tx = 0; + scc_ptr->wantint_zerocnt = 0; + scc_ptr->read_called_this_vbl = 0; + scc_ptr->write_called_this_vbl = 0; + scc_evaluate_ints(i); + scc_hard_reset_port(i); + } +} + +void +scc_hard_reset_port(int port) +{ + Scc *scc_ptr; + + scc_reset_port(port); + + scc_ptr = &(g_scc.scc_stat[port]); + scc_ptr->reg[14] = 0; /* zero bottom two bits */ + scc_ptr->reg[13] = 0; + scc_ptr->reg[12] = 0; + scc_ptr->reg[11] = 0x08; + scc_ptr->reg[10] = 0; + scc_ptr->reg[7] = 0; + scc_ptr->reg[6] = 0; + scc_ptr->reg[5] = 0; + scc_ptr->reg[4] = 0x04; + scc_ptr->reg[3] = 0; + scc_ptr->reg[2] = 0; + scc_ptr->reg[1] = 0; + + /* HACK HACK: */ + g_scc.scc_stat[0].reg[9] = 0; /* Clear all interrupts */ + + scc_evaluate_ints(port); + + scc_regen_clocks(port); +} + +void +scc_reset_port(int port) +{ + Scc *scc_ptr; + + scc_ptr = &(g_scc.scc_stat[port]); + scc_ptr->reg[15] = 0xf8; + scc_ptr->reg[14] &= 0x03; /* 0 most (including >= 0x100) bits */ + scc_ptr->reg[10] = 0; + scc_ptr->reg[5] &= 0x65; /* leave tx bits and sdlc/crc bits */ + scc_ptr->reg[4] |= 0x04; /* Set async mode */ + scc_ptr->reg[3] &= 0xfe; /* clear receiver enable */ + scc_ptr->reg[1] &= 0xfe; /* clear ext int enable */ + + scc_ptr->br_is_zero = 0; + scc_ptr->tx_buf_empty = 1; + + scc_ptr->wantint_rx = 0; + scc_ptr->wantint_tx = 0; + scc_ptr->wantint_zerocnt = 0; + + scc_ptr->rx_queue_depth = 0; + + scc_evaluate_ints(port); + + scc_regen_clocks(port); + + scc_clr_tx_int(port); + scc_clr_rx_int(port); +} + +void +scc_regen_clocks(int port) +{ + Scc *scc_ptr; + double br_dcycs, tx_dcycs, rx_dcycs; + double rx_char_size, tx_char_size; + double clock_mult; + word32 reg4; + word32 reg14; + word32 reg11; + word32 br_const; + word32 baud; + word32 max_diff; + word32 diff; + int state; + int baud_entries; + int pos; + int i; + + /* Always do baud rate generator */ + scc_ptr = &(g_scc.scc_stat[port]); + br_const = (scc_ptr->reg[13] << 8) + scc_ptr->reg[12]; + br_const += 2; /* counts down past 0 */ + + reg4 = scc_ptr->reg[4]; + clock_mult = 1.0; + switch((reg4 >> 6) & 3) { + case 0: /* x1 */ + clock_mult = 1.0; + break; + case 1: /* x16 */ + clock_mult = 16.0; + break; + case 2: /* x32 */ + clock_mult = 32.0; + break; + case 3: /* x64 */ + clock_mult = 64.0; + break; + } + + br_dcycs = 0.01; + reg14 = scc_ptr->reg[14]; + if(reg14 & 0x1) { + br_dcycs = SCC_DCYCS_PER_XTAL; + if(reg14 & 0x2) { + br_dcycs = SCC_DCYCS_PER_PCLK; + } + } + + br_dcycs = br_dcycs * (double)br_const; + + tx_dcycs = 1; + rx_dcycs = 1; + reg11 = scc_ptr->reg[11]; + if(((reg11 >> 3) & 3) == 2) { + tx_dcycs = 2.0 * br_dcycs * clock_mult; + } + if(((reg11 >> 5) & 3) == 2) { + rx_dcycs = 2.0 * br_dcycs * clock_mult; + } + + tx_char_size = 8.0; + switch((scc_ptr->reg[5] >> 5) & 0x3) { + case 0: // 5 bits + tx_char_size = 5.0; + break; + case 1: // 7 bits + tx_char_size = 7.0; + break; + case 2: // 6 bits + tx_char_size = 6.0; + break; + } + + scc_ptr->char_size = (int)tx_char_size; + + switch((scc_ptr->reg[4] >> 2) & 0x3) { + case 1: // 1 stop bit + tx_char_size += 2.0; // 1 stop + 1 start bit + break; + case 2: // 1.5 stop bit + tx_char_size += 2.5; // 1.5 stop + 1 start bit + break; + case 3: // 2 stop bits + tx_char_size += 3.0; // 2.0 stop + 1 start bit + break; + } + + if(scc_ptr->reg[4] & 1) { + // parity enabled + tx_char_size += 1.0; + } + + if(scc_ptr->reg[14] & 0x10) { + /* loopback mode, make it go faster...*/ + rx_char_size = 1.0; + tx_char_size = 1.0; + } + + rx_char_size = tx_char_size; /* HACK */ + + baud = (int)(DCYCS_1_MHZ / tx_dcycs); + max_diff = 5000000; + pos = 0; + baud_entries = sizeof(g_baud_table)/sizeof(g_baud_table[0]); + for(i = 0; i < baud_entries; i++) { + diff = abs((int)(g_baud_table[i] - baud)); + if(diff < max_diff) { + pos = i; + max_diff = diff; + } + } + + scc_ptr->baud_rate = g_baud_table[pos]; + + scc_ptr->br_dcycs = br_dcycs; + scc_ptr->tx_dcycs = tx_dcycs * tx_char_size; + scc_ptr->rx_dcycs = rx_dcycs * rx_char_size; + + state = scc_ptr->state; + if(state == 2) { + /* real serial ports */ +#if defined(DRIVER_IOS) || defined(DRIVER_OSX) + scc_serial_mac_change_params(port); +#endif +#ifdef _WIN32 + scc_serial_win_change_params(port); +#endif + } else { + scc_socket_change_params(port); + } +} + +void +scc_port_init(int port) +{ + int state; + + state = 0; + if(g_sim65816.g_raw_serial) { +#if defined(DRIVER_IOS) || defined(DRIVER_OSX) + state = scc_serial_mac_init(port); +#endif +#ifdef _WIN32 + state = scc_serial_win_init(port); +#endif + } + + if(state <= 0) { + scc_socket_init(port); + } +} + +void +scc_try_to_empty_writebuf(int port, double dcycs) +{ + Scc *scc_ptr; + int state; + + scc_ptr = &(g_scc.scc_stat[port]); + state = scc_ptr->state; + if(scc_ptr->write_called_this_vbl) { + return; + } + + scc_ptr->write_called_this_vbl = 1; + + if(state == 2) { +#if defined(DRIVER_IOS) || defined(DRIVER_OSX) + scc_serial_mac_empty_writebuf(port); +#endif +#if defined(_WIN32) + scc_serial_win_empty_writebuf(port); +#endif + } else if(state == 1) { + scc_socket_empty_writebuf(port, dcycs); + } +} + +void +scc_try_fill_readbuf(int port, double dcycs) +{ + Scc *scc_ptr; + int space_used, space_left; + int state; + + scc_ptr = &(g_scc.scc_stat[port]); + state = scc_ptr->state; + + space_used = scc_ptr->in_wrptr - scc_ptr->in_rdptr; + if(space_used < 0) { + space_used += SCC_INBUF_SIZE; + } + space_left = (7*SCC_INBUF_SIZE/8) - space_used; + if(space_left < 1) { + /* Buffer is pretty full, don't try to get more */ + return; + } + +#if 0 + if(scc_ptr->read_called_this_vbl) { + return; + } +#endif + + scc_ptr->read_called_this_vbl = 1; + + if(state == 2) { +#if defined(DRIVER_IOS) || defined(DRIVER_OSX) + scc_serial_mac_fill_readbuf(port, space_left, dcycs); +#endif +#if defined(_WIN32) + scc_serial_win_fill_readbuf(port, space_left, dcycs); +#endif + } else if(state == 1) { + scc_socket_fill_readbuf(port, space_left, dcycs); + } +} + +void +scc_update(double dcycs) +{ + /* called each VBL update */ + g_scc.scc_stat[0].write_called_this_vbl = 0; + g_scc.scc_stat[1].write_called_this_vbl = 0; + g_scc.scc_stat[0].read_called_this_vbl = 0; + g_scc.scc_stat[1].read_called_this_vbl = 0; + + scc_try_to_empty_writebuf(0, dcycs); + scc_try_to_empty_writebuf(1, dcycs); + scc_try_fill_readbuf(0, dcycs); + scc_try_fill_readbuf(1, dcycs); + + g_scc.scc_stat[0].write_called_this_vbl = 0; + g_scc.scc_stat[1].write_called_this_vbl = 0; + g_scc.scc_stat[0].read_called_this_vbl = 0; + g_scc.scc_stat[1].read_called_this_vbl = 0; +} + +void +do_scc_event(int type, double dcycs) +{ + Scc *scc_ptr; + int port; + + port = type & 1; + type = (type >> 1); + + scc_ptr = &(g_scc.scc_stat[port]); + if(type == SCC_BR_EVENT) { + // printf("SCC_BR_EVENT %d\n",port); + + /* baud rate generator counted down to 0 */ + scc_ptr->br_event_pending = 0; + scc_set_zerocnt_int(port); + scc_maybe_br_event(port, dcycs); + } else if(type == SCC_TX_EVENT) { + // printf("SCC_TX_EVENT %d\n",port); + + scc_ptr->tx_event_pending = 0; + scc_ptr->tx_buf_empty = 1; + scc_handle_tx_event(port, dcycs); + } else if(type == SCC_RX_EVENT) { + // printf("SCC_RX_EVENT %d\n",port); + scc_ptr->rx_event_pending = 0; + scc_maybe_rx_event(port, dcycs); + } else { + halt_printf("do_scc_event: %08x!\n", type); + } + return; +} + +void +show_scc_state() +{ + Scc *scc_ptr; + int i, j; + + for(i = 0; i < 2; i++) { + scc_ptr = &(g_scc.scc_stat[i]); + printf("SCC port: %d\n", i); + for(j = 0; j < 16; j += 4) { + printf("Reg %2d-%2d: %02x %02x %02x %02x\n", j, j+3, + scc_ptr->reg[j], scc_ptr->reg[j+1], + scc_ptr->reg[j+2], scc_ptr->reg[j+3]); + } + printf("state: %d, accfd: %d, rdwrfd: %d, host:%p, host2:%p\n", + scc_ptr->state, scc_ptr->accfd, scc_ptr->rdwrfd, + scc_ptr->host_handle, scc_ptr->host_handle2); + printf("in_rdptr: %04x, in_wr:%04x, out_rd:%04x, out_wr:%04x\n", + scc_ptr->in_rdptr, scc_ptr->in_wrptr, + scc_ptr->out_rdptr, scc_ptr->out_wrptr); + printf("rx_queue_depth: %d, queue: %02x, %02x, %02x, %02x\n", + scc_ptr->rx_queue_depth, scc_ptr->rx_queue[0], + scc_ptr->rx_queue[1], scc_ptr->rx_queue[2], + scc_ptr->rx_queue[3]); + printf("want_ints: rx:%d, tx:%d, zc:%d\n", + scc_ptr->wantint_rx, scc_ptr->wantint_tx, + scc_ptr->wantint_zerocnt); + printf("ev_pendings: rx:%d, tx:%d, br:%d\n", + scc_ptr->rx_event_pending, + scc_ptr->tx_event_pending, + scc_ptr->br_event_pending); + printf("br_dcycs: %f, tx_dcycs: %f, rx_dcycs: %f\n", + scc_ptr->br_dcycs, scc_ptr->tx_dcycs, + scc_ptr->rx_dcycs); + printf("char_size: %d, baud_rate: %d, mode: %d\n", + scc_ptr->char_size, scc_ptr->baud_rate, + scc_ptr->mode); + printf("modem_dial_mode:%d, telnet_mode:%d iac:%d, " + "modem_cmd_len:%d\n", scc_ptr->modem_dial_or_acc_mode, + scc_ptr->telnet_mode, scc_ptr->telnet_iac, + scc_ptr->modem_cmd_len); + printf("telnet_loc_modes:%08x %08x, telnet_rem_motes:" + "%08x %08x\n", scc_ptr->telnet_local_mode[0], + scc_ptr->telnet_local_mode[1], + scc_ptr->telnet_remote_mode[0], + scc_ptr->telnet_remote_mode[1]); + printf("modem_mode:%08x plus_mode: %d, out_char_dcycs: %f\n", + scc_ptr->modem_mode, scc_ptr->modem_plus_mode, + scc_ptr->out_char_dcycs); + } + +} + +#define LEN_SCC_LOG 50 +STRUCT(Scc_log) { + int regnum; + word32 val; + double dcycs; +}; + +Scc_log g_scc_log[LEN_SCC_LOG]; +int g_scc_log_pos = 0; + +#define SCC_REGNUM(wr,port,reg) ((wr << 8) + (port << 4) + reg) + +void +scc_log(int regnum, word32 val, double dcycs) +{ + int pos; + + pos = g_scc_log_pos; + g_scc_log[pos].regnum = regnum; + g_scc_log[pos].val = val; + g_scc_log[pos].dcycs = dcycs; + pos++; + if(pos >= LEN_SCC_LOG) { + pos = 0; + } + g_scc_log_pos = pos; +} + +void +show_scc_log(void) +{ + double dcycs; + int regnum; + int pos; + int i; + + pos = g_scc_log_pos; + dcycs = g_sim65816.g_cur_dcycs; + printf("SCC log pos: %d, cur dcycs:%f\n", pos, dcycs); + for(i = 0; i < LEN_SCC_LOG; i++) { + pos--; + if(pos < 0) { + pos = LEN_SCC_LOG - 1; + } + regnum = g_scc_log[pos].regnum; + printf("%d:%d: port:%d wr:%d reg: %d val:%02x at t:%f\n", + i, pos, (regnum >> 4) & 0xf, (regnum >> 8), + (regnum & 0xf), + g_scc_log[pos].val, + g_scc_log[pos].dcycs - dcycs); + } +} + +word32 +scc_read_reg(int port, double dcycs) +{ + Scc *scc_ptr; + word32 ret; + int regnum; + + scc_ptr = &(g_scc.scc_stat[port]); + scc_ptr->mode = 0; + regnum = scc_ptr->reg_ptr; + + /* port 0 is channel A, port 1 is channel B */ + switch(regnum) { + case 0: + case 4: + ret = 0x60; /* 0x44 = no dcd, no cts,0x6c = dcd ok, cts ok*/ + if(scc_ptr->dcd) { + ret |= 0x08; + } + ret |= 0x8; /* HACK HACK */ + if(scc_ptr->rx_queue_depth) { + ret |= 0x01; + } + if(scc_ptr->tx_buf_empty) { + ret |= 0x04; + } + if(scc_ptr->br_is_zero) { + ret |= 0x02; + } + //printf("Read scc[%d] stat: %f : %02x\n", port, dcycs, ret); + break; + case 1: + case 5: + /* HACK: residue codes not right */ + ret = 0x07; /* all sent */ + break; + case 2: + case 6: + if(port == 0) { + ret = scc_ptr->reg[2]; + } else { + + halt_printf("Read of RR2B...stopping\n"); + ret = 0; +#if 0 + ret = g_scc.scc_stat[0].reg[2]; + wr9 = g_scc.scc_stat[0].reg[9]; + for(i = 0; i < 8; i++) { + if(ZZZ){}; + } + if(wr9 & 0x10) { + /* wr9 status high */ + + } +#endif + } + break; + case 3: + case 7: + if(port == 0) { + ret = (g_moremem.g_irq_pending & 0x3f); + } else { + ret = 0; + } + break; + case 8: + ret = scc_read_data(port, dcycs); + break; + case 9: + case 13: + ret = scc_ptr->reg[13]; + break; + case 10: + case 14: + ret = 0; + break; + case 11: + case 15: + ret = scc_ptr->reg[15]; + break; + case 12: + ret = scc_ptr->reg[12]; + break; + default: + halt_printf("Tried reading c03%x with regnum: %d!\n", 8+port, + regnum); + ret = 0; + } + + scc_ptr->reg_ptr = 0; + scc_printf("Read c03%x, rr%d, ret: %02x\n", 8+port, regnum, ret); + if(regnum != 0 && regnum != 3) { + scc_log(SCC_REGNUM(0,port,regnum), ret, dcycs); + } + + return ret; +} + +void +scc_write_reg(int port, word32 val, double dcycs) +{ + Scc *scc_ptr; + word32 old_val; + word32 changed_bits; + word32 irq_mask; + int regnum; + int mode; + int tmp1; + + scc_ptr = &(g_scc.scc_stat[port]); + regnum = scc_ptr->reg_ptr & 0xf; + mode = scc_ptr->mode; + + if(mode == 0) { + if((val & 0xf0) == 0) { + /* Set reg_ptr */ + scc_ptr->reg_ptr = val & 0xf; + regnum = 0; + scc_ptr->mode = 1; + } else { + scc_log(SCC_REGNUM(1,port,0), val, dcycs); + } + } else { + scc_ptr->reg_ptr = 0; + scc_ptr->mode = 0; + } + + if(regnum != 0) { + scc_log(SCC_REGNUM(1,port,regnum), val, dcycs); + } + + changed_bits = (scc_ptr->reg[regnum] ^ val) & 0xff; + + /* Set reg reg */ + switch(regnum) { + case 0: /* wr0 */ + tmp1 = (val >> 3) & 0x7; + switch(tmp1) { + case 0x0: + case 0x1: + break; + case 0x2: /* reset ext/status ints */ + /* should clear other ext ints */ + scc_clr_zerocnt_int(port); + break; + case 0x5: /* reset tx int pending */ + scc_clr_tx_int(port); + break; + case 0x6: /* reset rr1 bits */ + break; + case 0x7: /* reset highest pri int pending */ + irq_mask = g_moremem.g_irq_pending; + if(port == 0) { + /* Move SCC0 ints into SCC1 positions */ + irq_mask = irq_mask >> 3; + } + if(irq_mask & IRQ_PENDING_SCC1_RX) { + scc_clr_rx_int(port); + } else if(irq_mask & IRQ_PENDING_SCC1_TX) { + scc_clr_tx_int(port); + } else if(irq_mask & IRQ_PENDING_SCC1_ZEROCNT) { + scc_clr_zerocnt_int(port); + } + break; + case 0x4: /* enable int on next rx char */ + default: + halt_printf("Wr c03%x to wr0 of %02x, bad cmd cd:%x!\n", + 8+port, val, tmp1); + } + tmp1 = (val >> 6) & 0x3; + switch(tmp1) { + case 0x0: /* null code */ + break; + case 0x1: /* reset rx crc */ + case 0x2: /* reset tx crc */ + printf("Wr c03%x to wr0 of %02x!\n", 8+port, val); + break; + case 0x3: /* reset tx underrun/eom latch */ + /* if no extern status pending, or being reset now */ + /* and tx disabled, ext int with tx underrun */ + /* ah, just do nothing */ + break; + } + return; + case 1: /* wr1 */ + /* proterm sets this == 0x10, which is int on all rx */ + scc_ptr->reg[regnum] = val; + return; + case 2: /* wr2 */ + /* All values do nothing, let 'em all through! */ + scc_ptr->reg[regnum] = val; + return; + case 3: /* wr3 */ + if((val & 0x1e) != 0x0) { + halt_printf("Wr c03%x to wr3 of %02x!\n", 8+port, val); + } + scc_ptr->reg[regnum] = val; + return; + case 4: /* wr4 */ + if((val & 0x30) != 0x00 || (val & 0x0c) == 0) { + halt_printf("Wr c03%x to wr4 of %02x!\n", 8+port, val); + } + scc_ptr->reg[regnum] = val; + if(changed_bits) { + scc_regen_clocks(port); + } + return; + case 5: /* wr5 */ + if((val & 0x15) != 0x0) { + halt_printf("Wr c03%x to wr5 of %02x!\n", 8+port, val); + } + scc_ptr->reg[regnum] = val; + if(changed_bits & 0x60) { + scc_regen_clocks(port); + } + return; + case 6: /* wr6 */ + if(val != 0) { + halt_printf("Wr c03%x to wr6 of %02x!\n", 8+port, val); + } + scc_ptr->reg[regnum] = val; + return; + case 7: /* wr7 */ + if(val != 0) { + halt_printf("Wr c03%x to wr7 of %02x!\n", 8+port, val); + } + scc_ptr->reg[regnum] = val; + return; + case 8: /* wr8 */ + scc_write_data(port, val, dcycs); + return; + case 9: /* wr9 */ + if((val & 0xc0)) { + if(val & 0x80) { + scc_reset_port(0); + } + if(val & 0x40) { + scc_reset_port(1); + } + if((val & 0xc0) == 0xc0) { + scc_hard_reset_port(0); + scc_hard_reset_port(1); + } + } + if((val & 0x35) != 0x00) { + printf("Write c03%x to wr9 of %02x!\n", 8+port, val); + halt_printf("val & 0x35: %02x\n", (val & 0x35)); + } + old_val = g_scc.scc_stat[0].reg[9]; + g_scc.scc_stat[0].reg[regnum] = val; + scc_evaluate_ints(0); + scc_evaluate_ints(1); + return; + case 10: /* wr10 */ + if((val & 0xff) != 0x00) { + printf("Wr c03%x to wr10 of %02x!\n", 8+port, val); + } + scc_ptr->reg[regnum] = val; + return; + case 11: /* wr11 */ + scc_ptr->reg[regnum] = val; + if(changed_bits) { + scc_regen_clocks(port); + } + return; + case 12: /* wr12 */ + scc_ptr->reg[regnum] = val; + if(changed_bits) { + scc_regen_clocks(port); + } + return; + case 13: /* wr13 */ + scc_ptr->reg[regnum] = val; + if(changed_bits) { + scc_regen_clocks(port); + } + return; + case 14: /* wr14 */ + old_val = scc_ptr->reg[regnum]; + val = val + (old_val & (~0xff)); + switch((val >> 5) & 0x7) { + case 0x0: + case 0x1: + case 0x2: + case 0x3: + break; + + case 0x4: /* DPLL source is BR gen */ + val |= SCC_R14_DPLL_SOURCE_BRG; + break; + default: + halt_printf("Wr c03%x to wr14 of %02x, bad dpll cd!\n", + 8+port, val); + } + if((val & 0x0c) != 0x0) { + halt_printf("Wr c03%x to wr14 of %02x!\n", 8+port, val); + } + scc_ptr->reg[regnum] = val; + if(changed_bits) { + scc_regen_clocks(port); + } + scc_maybe_br_event(port, dcycs); + return; + case 15: /* wr15 */ + /* ignore all accesses since IIgs self test messes with it */ + if((val & 0xff) != 0x0) { + scc_printf("Write c03%x to wr15 of %02x!\n", 8+port, + val); + } + if((g_scc.scc_stat[0].reg[9] & 0x8) && (val != 0)) { + printf("Write wr15:%02x and master int en = 1!\n",val); + /* set_halt(1); */ + } + scc_ptr->reg[regnum] = val; + scc_maybe_br_event(port, dcycs); + scc_evaluate_ints(port); + return; + default: + halt_printf("Wr c03%x to wr%d of %02x!\n", 8+port, regnum, val); + return; + } +} + +void +scc_maybe_br_event(int port, double dcycs) +{ + Scc *scc_ptr; + double br_dcycs; + + scc_ptr = &(g_scc.scc_stat[port]); + + if(((scc_ptr->reg[14] & 0x01) == 0) || scc_ptr->br_event_pending) { + return; + } + /* also, if ext ints not enabled, don't do baud rate ints */ + if((scc_ptr->reg[15] & 0x02) == 0) { + return; + } + + br_dcycs = scc_ptr->br_dcycs; + if(br_dcycs < 1.0) { + halt_printf("br_dcycs: %f!\n", br_dcycs); + } + + scc_ptr->br_event_pending = 1; + add_event_scc(dcycs + br_dcycs, SCC_MAKE_EVENT(port, SCC_BR_EVENT)); +} + +void +scc_evaluate_ints(int port) +{ + Scc *scc_ptr; + word32 irq_add_mask, irq_remove_mask; + int mie; + + scc_ptr = &(g_scc.scc_stat[port]); + mie = g_scc.scc_stat[0].reg[9] & 0x8; /* Master int en */ + + if(!mie) { + /* There can be no interrupts if MIE=0 */ + remove_irq(IRQ_PENDING_SCC1_RX | IRQ_PENDING_SCC1_TX | + IRQ_PENDING_SCC1_ZEROCNT | + IRQ_PENDING_SCC0_RX | IRQ_PENDING_SCC0_TX | + IRQ_PENDING_SCC0_ZEROCNT); + return; + } + + irq_add_mask = 0; + irq_remove_mask = 0; + if(scc_ptr->wantint_rx) { + irq_add_mask |= IRQ_PENDING_SCC1_RX; + } else { + irq_remove_mask |= IRQ_PENDING_SCC1_RX; + } + if(scc_ptr->wantint_tx) { + irq_add_mask |= IRQ_PENDING_SCC1_TX; + } else { + irq_remove_mask |= IRQ_PENDING_SCC1_TX; + } + if(scc_ptr->wantint_zerocnt) { + irq_add_mask |= IRQ_PENDING_SCC1_ZEROCNT; + } else { + irq_remove_mask |= IRQ_PENDING_SCC1_ZEROCNT; + } + if(port == 0) { + /* Port 1 is in bits 0-2 and port 0 is in bits 3-5 */ + irq_add_mask = irq_add_mask << 3; + irq_remove_mask = irq_remove_mask << 3; + } + if(irq_add_mask) { + add_irq(irq_add_mask); + } + if(irq_remove_mask) { + remove_irq(irq_remove_mask); + } +} + + +void +scc_maybe_rx_event(int port, double dcycs) +{ + Scc *scc_ptr; + double rx_dcycs; + int in_rdptr, in_wrptr; + int depth; + + scc_ptr = &(g_scc.scc_stat[port]); + + if(scc_ptr->rx_event_pending) { + + /* one pending already, wait for the event to arrive */ + return; + } + + in_rdptr = scc_ptr->in_rdptr; + in_wrptr = scc_ptr->in_wrptr; + depth = scc_ptr->rx_queue_depth; + if((in_rdptr == in_wrptr) || (depth >= 3)) { + /* no more chars or no more space, just get out */ + return; + } + + if(depth < 0) { + depth = 0; + } + + /* pull char from in_rdptr into queue */ + scc_ptr->rx_queue[depth] = scc_ptr->in_buf[in_rdptr]; + scc_ptr->in_rdptr = (in_rdptr + 1) & (SCC_INBUF_SIZE - 1); + scc_ptr->rx_queue_depth = depth + 1; + scc_maybe_rx_int(port, dcycs); + rx_dcycs = scc_ptr->rx_dcycs; + scc_ptr->rx_event_pending = 1; + add_event_scc(dcycs + rx_dcycs, SCC_MAKE_EVENT(port, SCC_RX_EVENT)); +} + +void +scc_maybe_rx_int(int port, double dcycs) +{ + Scc *scc_ptr; + int depth; + int rx_int_mode; + + scc_ptr = &(g_scc.scc_stat[port]); + + depth = scc_ptr->rx_queue_depth; + if(depth <= 0) { + /* no more chars, just get out */ + scc_clr_rx_int(port); + return; + } + rx_int_mode = (scc_ptr->reg[1] >> 3) & 0x3; + if(rx_int_mode == 1 || rx_int_mode == 2) { + scc_ptr->wantint_rx = 1; + } + scc_evaluate_ints(port); +} + +void +scc_clr_rx_int(int port) +{ + g_scc.scc_stat[port].wantint_rx = 0; + scc_evaluate_ints(port); +} + +void +scc_handle_tx_event(int port, double dcycs) +{ + Scc *scc_ptr; + int tx_int_mode; + + scc_ptr = &(g_scc.scc_stat[port]); + + /* nothing pending, see if ints on */ + tx_int_mode = (scc_ptr->reg[1] & 0x2); + if(tx_int_mode) { + scc_ptr->wantint_tx = 1; + } + scc_evaluate_ints(port); +} + +void +scc_maybe_tx_event(int port, double dcycs) +{ + Scc *scc_ptr; + double tx_dcycs; + + scc_ptr = &(g_scc.scc_stat[port]); + + if(scc_ptr->tx_event_pending) { + /* one pending already, tx_buf is full */ + scc_ptr->tx_buf_empty = 0; + } else { + /* nothing pending, see ints on */ + scc_evaluate_ints(port); + tx_dcycs = scc_ptr->tx_dcycs; + scc_ptr->tx_event_pending = 1; + add_event_scc(dcycs + tx_dcycs, + SCC_MAKE_EVENT(port, SCC_TX_EVENT)); + } +} + +void +scc_clr_tx_int(int port) +{ + g_scc.scc_stat[port].wantint_tx = 0; + scc_evaluate_ints(port); +} + +void +scc_set_zerocnt_int(int port) +{ + Scc *scc_ptr; + + scc_ptr = &(g_scc.scc_stat[port]); + + if(scc_ptr->reg[15] & 0x2) { + scc_ptr->wantint_zerocnt = 1; + } + scc_evaluate_ints(port); +} + +void +scc_clr_zerocnt_int(int port) +{ + g_scc.scc_stat[port].wantint_zerocnt = 0; + scc_evaluate_ints(port); +} + +void +scc_add_to_readbuf(int port, word32 val, double dcycs) +{ + Scc *scc_ptr; + int in_wrptr; + int in_wrptr_next; + int in_rdptr; + + scc_ptr = &(g_scc.scc_stat[port]); + + in_wrptr = scc_ptr->in_wrptr; + in_rdptr = scc_ptr->in_rdptr; + in_wrptr_next = (in_wrptr + 1) & (SCC_INBUF_SIZE - 1); + if(in_wrptr_next != in_rdptr) { + scc_ptr->in_buf[in_wrptr] = val; + scc_ptr->in_wrptr = in_wrptr_next; + scc_printf("scc in port[%d] add char 0x%02x, %d,%d != %d\n", + scc_ptr->port, val, + in_wrptr, in_wrptr_next, in_rdptr); + printf("sending to modem :%c\n",val); + g_scc.g_scc_overflow = 0; + } else { + if(g_scc.g_scc_overflow == 0) { + g_sim65816.g_code_yellow++; + printf("scc inbuf overflow port %d\n", port); + } + g_scc.g_scc_overflow = 1; + } + + scc_maybe_rx_event(port, dcycs); +} + +void +scc_add_to_readbufv(int port, double dcycs, const char *fmt, ...) +{ + va_list ap; + char *bufptr; + int ret, len, c; + int i; + + va_start(ap, fmt); + bufptr = (char*)malloc(4096); // OG cast added + bufptr[0] = 0; + ret = vsnprintf(bufptr, 4090, fmt, ap); + len = strlen(bufptr); + for(i = 0; i < len; i++) { + c = bufptr[i]; + if(c == 0x0a) { + scc_add_to_readbuf(port, 0x0d, dcycs); + } + scc_add_to_readbuf(port, c, dcycs); + } + va_end(ap); +} + +void +scc_transmit(int port, word32 val, double dcycs) +{ + Scc *scc_ptr; + int out_wrptr; + int out_rdptr; + + scc_ptr = &(g_scc.scc_stat[port]); + + /* See if port initialized, if not, do so now */ + if(scc_ptr->state == 0) { + scc_port_init(port); + } + if(scc_ptr->state < 0) { + /* No working serial port, just toss it and go */ + return; + } + + if(!scc_ptr->tx_buf_empty) { + /* toss character! */ + printf("Tossing char\n"); + return; + } + + out_wrptr = scc_ptr->out_wrptr; + out_rdptr = scc_ptr->out_rdptr; + if(scc_ptr->tx_dcycs < 1.0) { + if(out_wrptr != out_rdptr) { + /* do just one char, then get out */ + printf("tx_dcycs < 1\n"); + return; + } + } + if(g_sim65816.g_serial_out_masking) { + val = val & 0x7f; + } + + scc_add_to_writebuf(port, val, dcycs); +} + +void +scc_add_to_writebuf(int port, word32 val, double dcycs) +{ + Scc *scc_ptr; + int out_wrptr; + int out_wrptr_next; + int out_rdptr; + + scc_ptr = &(g_scc.scc_stat[port]); + + /* See if port initialized, if not, do so now */ + if(scc_ptr->state == 0) { + scc_port_init(port); + } + if(scc_ptr->state < 0) { + /* No working serial port, just toss it and go */ + return; + } + + out_wrptr = scc_ptr->out_wrptr; + out_rdptr = scc_ptr->out_rdptr; + + out_wrptr_next = (out_wrptr + 1) & (SCC_OUTBUF_SIZE - 1); + if(out_wrptr_next != out_rdptr) { + scc_ptr->out_buf[out_wrptr] = val; + scc_ptr->out_wrptr = out_wrptr_next; + scc_printf("scc wrbuf port %d had char 0x%02x added\n", + scc_ptr->port, val); + g_scc.g_scc_overflow = 0; + } else { + if(g_scc.g_scc_overflow == 0) { + g_sim65816.g_code_yellow++; + // OG Too many warning with DiversiTune + scc_printf("scc outbuf overflow port %d\n", port); + } + g_scc.g_scc_overflow = 1; + } +} + +word32 +scc_read_data(int port, double dcycs) +{ + Scc *scc_ptr; + word32 ret; + int depth; + int i; + + scc_ptr = &(g_scc.scc_stat[port]); + + scc_try_fill_readbuf(port, dcycs); + + depth = scc_ptr->rx_queue_depth; + + ret = 0; + if(depth != 0) { + ret = scc_ptr->rx_queue[0]; + for(i = 1; i < depth; i++) { + scc_ptr->rx_queue[i-1] = scc_ptr->rx_queue[i]; + } + scc_ptr->rx_queue_depth = depth - 1; + scc_maybe_rx_event(port, dcycs); + scc_maybe_rx_int(port, dcycs); + } + + scc_printf("SCC read %04x: ret %02x, depth:%d\n", 0xc03b-port, ret, + depth); + + scc_log(SCC_REGNUM(0,port,8), ret, dcycs); + +// printf("scc send %d\n",ret); + return ret; +} + + +void +scc_write_data(int port, word32 val, double dcycs) +{ + Scc *scc_ptr; + + scc_printf("SCC write %04x: %02x\n", 0xc03b-port, val); + scc_log(SCC_REGNUM(1,port,8), val, dcycs); + + scc_ptr = &(g_scc.scc_stat[port]); + if(scc_ptr->reg[14] & 0x10) { + /* local loopback! */ + scc_add_to_readbuf(port, val, dcycs); + } else { + scc_transmit(port, val, dcycs); + } + scc_try_to_empty_writebuf(port, dcycs); + + scc_maybe_tx_event(port, dcycs); +} + diff --git a/kegs/Src/scc.h b/kegs/Src/scc.h new file mode 100644 index 0000000..cc74ca4 --- /dev/null +++ b/kegs/Src/scc.h @@ -0,0 +1,172 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + +#ifdef INCLUDE_RCSID_C +const char rcsid_scc_h[] = "@(#)$KmKId: scc.h,v 1.17 2004-12-03 14:03:12-05 kentd Exp $"; +#endif + +#include + +#ifdef _WIN32 +# include +#else +# include +# include +# include +#endif + +#if defined(HPUX) || defined(__linux__) || defined(SOLARIS) || defined(DRIVER_IOS) || defined(DRIVER_OSX) || defined(__MACH__) || defined(_WIN32) +# define SCC_SOCKETS +#endif + + +/* my scc port 0 == channel A, port 1 = channel B */ + +#define SCC_INBUF_SIZE 512 /* must be a power of 2 */ +#define SCC_OUTBUF_SIZE 512 /* must be a power of 2 */ + +#define SCC_MODEM_MAX_CMD_STR 128 + +#ifndef SOCKET +# define SOCKET word32 /* for non-windows */ +#endif + + +#ifdef _WIN32 +#pragma pack(push,PRAGMA_PACK_SIZE) +#endif + +STRUCT(Scc) { + int port; + int state; + int accfd; + SOCKET sockfd; + int socket_state; + int rdwrfd; + void *host_handle; + void *host_handle2; + int host_aux1; + int read_called_this_vbl; + int write_called_this_vbl; + + int mode; + int reg_ptr; + int reg[16]; + + int rx_queue_depth; + byte rx_queue[4]; + + int in_rdptr; + int in_wrptr; + byte in_buf[SCC_INBUF_SIZE]; + + int out_rdptr; + int out_wrptr; + byte out_buf[SCC_OUTBUF_SIZE]; + + int br_is_zero; + int tx_buf_empty; + int wantint_rx; + int wantint_tx; + int wantint_zerocnt; + int dcd; + + _ALIGNED(8) double br_dcycs; + _ALIGNED(8) double tx_dcycs ; + _ALIGNED(8) double rx_dcycs; + + int br_event_pending; + int rx_event_pending; + int tx_event_pending; + + int char_size; + int baud_rate; + _ALIGNED(8) double out_char_dcycs; + + int socket_num_rings; + int socket_last_ring_dcycs; + word32 modem_mode; + int modem_dial_or_acc_mode; + int modem_plus_mode; + int modem_s0_val; + int telnet_mode; + int telnet_iac; + word32 telnet_local_mode[2]; + word32 telnet_remote_mode[2]; + word32 telnet_reqwill_mode[2]; + word32 telnet_reqdo_mode[2]; + int modem_cmd_len; + byte modem_cmd_str[SCC_MODEM_MAX_CMD_STR + 5]; +} XCODE_PRAGMA_PACK ; + + + + +#define SCCMODEM_NOECHO 0x0001 +#define SCCMODEM_NOVERBOSE 0x0002 + + +class s_scc : public serialized +{ +public: + Scc scc_stat[2]; + int g_scc_overflow ; + int g_wsastartup_called; + + s_scc() + { + INIT_SERIALIZED(); + } + + +#define SERIALIZE_SOCKET(X,N) int old_##N = X.sockfd; X.sockfd=0; +#define UNSERIALIZE_SOCKET(X,N) X.sockfd = old_##N ; + + void in(serialize* _s) + { + byte* ptr = (byte*)_s->data; + int ssize = *(int*)ptr; + if (ssize!= sizeof(*this)) + ALIGNMENT_ERROR("scc",ssize,sizeof(*this)); + ptr += sizeof(ssize); + memcpy(this,ptr,sizeof(*this)); + + // TODO UNSERIALIZE SOCKET + } + + int out(serialize* _s, int _fastalloc) + { + + int ssize = sizeof(*this); + int size = ssize + sizeof(ssize); + _s->size = size; + _s->fastalloc = _fastalloc; + _s->data = (void*)x_malloc(size,_fastalloc); + byte* ptr = (byte*) _s->data; + + memcpy(ptr,&ssize,sizeof(ssize)); + ptr+=sizeof(ssize); + + SERIALIZE_SOCKET(scc_stat[0],stat0); + SERIALIZE_SOCKET(scc_stat[1],stat1); + + memcpy(ptr,this,sizeof(*this)); + + UNSERIALIZE_SOCKET(scc_stat[0],stat0); + UNSERIALIZE_SOCKET(scc_stat[1],stat1); + + return size; + } + +} XCODE_PRAGMA_PACK; + +#ifdef _WIN32 +#pragma pack(pop) +#endif + +extern s_scc g_scc; \ No newline at end of file diff --git a/kegs/Src/scc_socket_driver.cpp b/kegs/Src/scc_socket_driver.cpp new file mode 100644 index 0000000..507d51d --- /dev/null +++ b/kegs/Src/scc_socket_driver.cpp @@ -0,0 +1,1183 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "defc.h" +#include "scc.h" +#include "sim65816.h" + + +#ifndef UNDER_CE //OG +#include +#endif + +#ifndef _MSC_VER //OG +extern int h_errno; +#else +#define socklen_t int +#endif + +/* Usage: scc_socket_init() called to init socket mode */ +/* At all times, we try to have a listen running on the incoming socket */ +/* If we want to dial out, we close the incoming socket and create a new */ +/* outgoing socket. Any hang-up causes the socket to be closed and it will */ +/* then re-open on a subsequent call to scc_socket_open */ + +void +scc_socket_init(int port) +{ + Scc *scc_ptr; + +#ifdef _WIN32 + WSADATA wsadata; + int ret; + + if(g_scc.g_wsastartup_called == 0) { + ret = WSAStartup(MAKEWORD(2,0), &wsadata); + printf("WSAStartup ret: %d\n", ret); + g_scc.g_wsastartup_called = 1; + } +#endif + scc_ptr = &(g_scc.scc_stat[port]); + scc_ptr->state = 1; /* successful socket */ + scc_ptr->sockfd = -1; /* Indicate no socket open yet */ + scc_ptr->accfd = -1; /* Indicate no socket open yet */ + scc_ptr->rdwrfd = -1; /* Indicate no socket open yet */ + scc_ptr->socket_state = -2; /* 0 means talk to "modem" */ + /* 1 connected */ + scc_ptr->socket_num_rings = 0; + scc_ptr->socket_last_ring_dcycs = 0; + scc_ptr->dcd = 0; /* 0 means no carrier */ + scc_ptr->modem_s0_val = 0; + scc_ptr->host_aux1 = sizeof(struct sockaddr_in); + scc_ptr->host_handle = malloc(scc_ptr->host_aux1); + /* Real init will be done when bytes need to be read/write from skt */ +} + +void +scc_socket_maybe_open_incoming(int port, double dcycs) +{ + Scc *scc_ptr; + struct sockaddr_in sa_in; + int on; + int ret; + SOCKET sockfd; + int inc; + + inc = 0; + + scc_ptr = &(g_scc.scc_stat[port]); + + if(scc_ptr->sockfd != -1) { + /* it's already open, get out */ + return; + } + if(scc_ptr->socket_state < 0) { + /* not initialized, get out */ + return; + } + + printf("scc socket close being called from socket_open_out\n"); + scc_socket_close(port, 0, dcycs); + + scc_ptr->socket_state = 0; + scc_ptr->socket_num_rings = 0; + + memset(scc_ptr->host_handle, 0, scc_ptr->host_aux1); + + while(1) { + sockfd = socket(AF_INET, SOCK_STREAM, 0); + printf("sockfd ret: %d\n", sockfd); + if(sockfd == -1) { + printf("socket ret: %d, errno: %d\n", sockfd, errno); + scc_socket_close(port, 0, dcycs); + scc_ptr->socket_state = -1; + return; + } + /* printf("socket ret: %d\n", sockfd); */ + + on = 1; + ret = setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, + (char *)&on, sizeof(on)); + if(ret < 0) { + printf("setsockopt REUSEADDR ret: %d, err:%d\n", + ret, errno); + scc_socket_close(port, 0, dcycs); + scc_ptr->socket_state = -1; + return; + } + + memset(&sa_in, 0, sizeof(sa_in)); + sa_in.sin_family = AF_INET; + sa_in.sin_port = htons(6501 + port + inc); + sa_in.sin_addr.s_addr = htonl(INADDR_ANY); + + ret = bind(sockfd, (struct sockaddr *)&sa_in, sizeof(sa_in)); + + if(ret >= 0) { + ret = listen(sockfd, 1); + break; + } + /* else ret to bind was < 0 */ + printf("bind ret: %d, errno: %d\n", ret, errno); + inc++; +#ifdef _WIN32 + closesocket(sockfd); +#else + close(sockfd); +#endif + printf("Trying next port: %d\n", 6501 + port + inc); + if(inc >= 10) { + printf("Too many retries, quitting\n"); + scc_socket_close(port, 0, dcycs); + scc_ptr->socket_state = -1; + return; + } + } + + printf("SCC port %d is at unix port %d\n", port, 6501 + port + inc); + + scc_ptr->sockfd = sockfd; + scc_ptr->state = 1; /* successful socket */ + + scc_socket_make_nonblock(port, dcycs); + +} + + +Scc *scc_delayed_ptr=NULL; + +void +scc_socket_open_outgoing(int port, double dcycs) +{ + Scc *scc_ptr; + struct sockaddr_in sa_in; + struct hostent *hostentptr; + int on; + int ret; + SOCKET sockfd; + + scc_ptr = &(g_scc.scc_stat[port]); + + printf("scc socket close being called from socket_open_out\n"); + scc_socket_close(port, 0, dcycs); + + scc_ptr->socket_state = 0; + + memset(scc_ptr->host_handle, 0, scc_ptr->host_aux1); + + sockfd = socket(AF_INET, SOCK_STREAM, 0); + printf("sockfd ret: %d\n", sockfd); + if(sockfd == -1) { + printf("socket ret: %d, errno: %d\n", sockfd, errno); + scc_socket_close(port, 1, dcycs); + return; + } + /* printf("socket ret: %d\n", sockfd); */ + + on = 1; + ret = setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, + (char *)&on, sizeof(on)); + if(ret < 0) { + printf("setsockopt REUSEADDR ret: %d, err:%d\n", + ret, errno); + scc_socket_close(port, 1, dcycs); + return; + } + + memset(&sa_in, 0, sizeof(sa_in)); + sa_in.sin_family = AF_INET; + + int requestport = 23; // default telnet + const char* str = (const char*)&scc_ptr->modem_cmd_str[0]; + char host[1024]; + int l = strlen(str); + int i ; + for(i=0;imodem_cmd_str[0]); +#else + fatal_printf("Lookup host %s failed, herrno: %d\n", + &scc_ptr->modem_cmd_str[0], h_errno); +#endif +#ifdef _WIN32 + closesocket(sockfd); +#else + close(sockfd); +#endif + + scc_socket_close(port, 1, dcycs); + x_show_alert(0, 0); + return; + } + memcpy(&sa_in.sin_addr.s_addr, hostentptr->h_addr, + hostentptr->h_length); + /* The above copies the 32-bit internet address into */ + /* sin_addr.s_addr. It's in correct network format */ + + ret = connect(sockfd, (struct sockaddr *)&sa_in, sizeof(sa_in)); + if(ret < 0) { + printf("connect ret: %d, errno: %d\n", ret, errno); +#ifdef _WIN32 + closesocket(sockfd); +#else + close(sockfd); +#endif + scc_socket_close(port, 1, dcycs); + return; + } + scc_socket_modem_connect(port, dcycs); + scc_ptr->dcd = 1; /* carrier on */ + scc_ptr->socket_state = 1; /* talk to socket */ + scc_ptr->socket_num_rings = 0; + + printf("SCC port %d is now outgoing to %s\n", port, + &scc_ptr->modem_cmd_str[0]); + + scc_ptr->sockfd = sockfd; +// scc_ptr->state = 1; /* successful socket */ + scc_ptr->state = 0; //delay state + scc_delayed_ptr = scc_ptr; + add_event_entry(dcycs+(5000/16)*DCYCS_IN_16MS , EV_SCC_ENABLE); //1s delay + + scc_socket_make_nonblock(port, dcycs); + scc_ptr->rdwrfd = scc_ptr->sockfd; +} + +void scc_delayed_enable() +{ + if (scc_delayed_ptr) + { + printf("enabling scc\n"); + scc_delayed_ptr->state = 1; + scc_delayed_ptr = NULL; + } +} + +void +scc_socket_make_nonblock(int port, double dcycs) +{ + Scc *scc_ptr; + SOCKET sockfd; + int ret; +#ifdef _WIN32 + u_long flags; +#else + int flags; +#endif + + scc_ptr = &(g_scc.scc_stat[port]); + sockfd = scc_ptr->sockfd; + +#ifdef _WIN32 + flags = 1; + ret = ioctlsocket(sockfd, FIONBIO, &flags); + if(ret != 0) { + printf("ioctlsocket ret: %d\n", ret); + } +#else + flags = fcntl(sockfd, F_GETFL, 0); + if(flags == -1) { + printf("fcntl GETFL ret: %d, errno: %d\n", flags, errno); + scc_socket_close(port, 1, dcycs); + scc_ptr->socket_state = -1; + return; + } + ret = fcntl(sockfd, F_SETFL, flags | O_NONBLOCK); + if(ret == -1) { + printf("fcntl SETFL ret: %d, errno: %d\n", ret, errno); + scc_socket_close(port, 1, dcycs); + scc_ptr->socket_state = -1; + return; + } +#endif +} + +void +scc_socket_change_params(int port) +{ +} + +void +scc_socket_close(int port, int full_close, double dcycs) +{ + Scc *scc_ptr; + int rdwrfd; + SOCKET sockfd; + int i; + + scc_ptr = &(g_scc.scc_stat[port]); + + printf("In scc_socket_close, %d, %d, %f\n", port, full_close, dcycs); + + rdwrfd = scc_ptr->rdwrfd; + if(rdwrfd >= 0) { + printf("socket_close: rdwrfd=%d, closing\n", rdwrfd); +#ifdef WIN32 + closesocket(rdwrfd); +#else + close(rdwrfd); +#endif + } + sockfd = scc_ptr->sockfd; + if(sockfd != -1) { + printf("socket_close: sockfd=%d, closing\n", sockfd); +#ifdef _WIN32 + closesocket(sockfd); +#else + close(sockfd); +#endif + } + + scc_ptr->modem_cmd_len = 0; + scc_ptr->telnet_mode = 0; + scc_ptr->telnet_iac = 0; + for(i = 0; i < 2; i++) { + scc_ptr->telnet_local_mode[i] = 0; + scc_ptr->telnet_remote_mode[i] = 0; + scc_ptr->telnet_reqwill_mode[i] = 0; + scc_ptr->telnet_reqdo_mode[i] = 0; + } + scc_ptr->rdwrfd = -1; + scc_ptr->sockfd = -1; + scc_ptr->dcd = 0; + scc_ptr->socket_num_rings = 0; + + if(!full_close) { + return; + } + + scc_socket_modem_hangup(port, dcycs); + + /* and go back to modem mode */ + scc_ptr->socket_state = 0; + if(g_sim65816.g_serial_modem[port]) { + scc_ptr->modem_dial_or_acc_mode = 0; + } else { + scc_ptr->modem_dial_or_acc_mode = 2; /* always accept */ + } +} + +void +scc_accept_socket(int port, double dcycs) +{ +#ifdef SCC_SOCKETS + Scc *scc_ptr; + int flags; + int num_rings; + int rdwrfd; + int ret; + + scc_ptr = &(g_scc.scc_stat[port]); + + if(scc_ptr->sockfd == -1) { + printf("in accept_socket, call socket_open\n"); + scc_socket_maybe_open_incoming(port, dcycs); + } + if(scc_ptr->sockfd == -1) { + return; /* just give up */ + } + if(scc_ptr->rdwrfd == -1) { + rdwrfd = accept(scc_ptr->sockfd, (sockaddr*)scc_ptr->host_handle, + (socklen_t*)&(scc_ptr->host_aux1)); + if(rdwrfd < 0) { + return; + } + + flags = 0; + ret = 0; +#ifndef _WIN32 + /* For Linux, we need to set O_NONBLOCK on the rdwrfd */ + flags = fcntl(rdwrfd, F_GETFL, 0); + if(flags == -1) { + printf("fcntl GETFL ret: %d, errno: %d\n", flags,errno); + return; + } + ret = fcntl(rdwrfd, F_SETFL, flags | O_NONBLOCK); + if(ret == -1) { + printf("fcntl SETFL ret: %d, errno: %d\n", ret, errno); + return; + } +#endif + scc_ptr->rdwrfd = rdwrfd; + printf("Set port[%d].rdwrfd = %d\n", port, rdwrfd); + + num_rings = 4; + if(scc_ptr->modem_s0_val > 0) { + num_rings = scc_ptr->modem_s0_val; + } + scc_ptr->socket_num_rings = num_rings; + scc_ptr->socket_last_ring_dcycs = 0; /* do ring now*/ + scc_socket_modem_do_ring(port, dcycs); + + /* and send some telnet codes */ + scc_ptr->telnet_reqwill_mode[0] = 0xa; /* 3=GO_AH and 1=ECHO */ + scc_ptr->telnet_reqdo_mode[0] = 0xa; /* 3=GO_AH and 1=ECHO */ +#if 0 + scc_ptr->telnet_reqdo_mode[1] = 0x4; /* 34=LINEMODE */ +#endif + } +#endif +} + +void +scc_socket_telnet_reqs(int port, double dcycs) +{ + Scc *scc_ptr; + word32 mask, willmask, domask; + int i, j; + + scc_ptr = &(g_scc.scc_stat[port]); + + for(i = 0; i < 64; i++) { + j = i >> 5; + mask = 1 << (i & 31); + willmask = scc_ptr->telnet_reqwill_mode[j]; + if(willmask & mask) { + scc_add_to_writebuf(port, 0xff, dcycs); + scc_add_to_writebuf(port, 0xfb, dcycs); /* WILL */ + scc_add_to_writebuf(port, i, dcycs); + } + domask = scc_ptr->telnet_reqdo_mode[j]; + if(domask & mask) { + scc_add_to_writebuf(port, 0xff, dcycs); + scc_add_to_writebuf(port, 0xfd, dcycs); /* DO */ + scc_add_to_writebuf(port, i, dcycs); + } + } +} + +void +scc_socket_fill_readbuf(int port, int space_left, double dcycs) +{ +#ifdef SCC_SOCKETS + byte tmp_buf[256]; + Scc *scc_ptr; + int rdwrfd; + int ret; + int i; + + scc_ptr = &(g_scc.scc_stat[port]); + + scc_accept_socket(port, dcycs); + scc_socket_modem_do_ring(port, dcycs); + + if(scc_ptr->socket_state == 0 && g_sim65816.g_serial_modem[port]) { + /* Just get out, this is modem mode */ + /* The transmit function stuffs any bytes in receive buf */ + return; + } + rdwrfd = scc_ptr->rdwrfd; + if(rdwrfd < 0) { + return; /* just get out */ + } + + /* Try reading some bytes */ + space_left = MIN(space_left, 256); + ret = recv(rdwrfd, (char*)tmp_buf, space_left, 0); // OG Added cast + if(ret > 0) { + for(i = 0; i < ret; i++) { + if(tmp_buf[i] == 0) { + /* Skip null chars */ + continue; + } + scc_socket_recvd_char(port, tmp_buf[i], dcycs); + } + } else if(ret == 0) { + /* assume socket close */ + printf("recv got 0 from rdwrfd=%d, closing\n", rdwrfd); + scc_socket_close(port, 1, dcycs); + } +#endif +} + +int g_scc_dbg_print_cnt = 50; + +void +scc_socket_recvd_char(int port, int c, double dcycs) +{ + Scc *scc_ptr; + word32 locmask, remmask, mask; + word32 reqwillmask, reqdomask; + int telnet_mode, telnet_iac; + int eff_c, cpos; + int reply; + + scc_ptr = &(g_scc.scc_stat[port]); + + scc_socket_maybe_open_incoming(port, dcycs); + + telnet_mode = scc_ptr->telnet_mode; + telnet_iac = scc_ptr->telnet_iac; + if(c >= 0xf0 || telnet_mode || telnet_iac) { + g_scc_dbg_print_cnt = 50; + } +#if 0 + if(g_scc_dbg_print_cnt) { + printf("Recv: %02x mode: %d\n", c, telnet_mode); + g_scc_dbg_print_cnt--; + } +#endif + + eff_c = c; + if(telnet_iac == 0) { + if(c == 0xff) { + scc_ptr->telnet_iac = 0xff; + return; /* and just get out */ + } + } else { + /* last char was 0xff, see if this is 0xff */ + if(c != 0xff) { + /* this is some kind of command */ + eff_c = eff_c | 0x100; /* indicate prev char IAC */ + } + } + scc_ptr->telnet_iac = 0; + + mask = 1 << (c & 31); + cpos = (c >> 5) & 1; + locmask = scc_ptr->telnet_local_mode[cpos] & mask; + remmask = scc_ptr->telnet_remote_mode[cpos] & mask; + reqwillmask = scc_ptr->telnet_reqwill_mode[cpos] & mask; + reqdomask = scc_ptr->telnet_reqdo_mode[cpos] & mask; + switch(telnet_mode) { + case 0: /* just passing through bytes */ + switch(eff_c) { + case 0x1fe: /* DON'T */ + case 0x1fd: /* DO */ + case 0x1fc: /* WON'T */ + case 0x1fb: /* WILL */ + case 0x1fa: /* SB */ + telnet_mode = c; + break; + default: + if(eff_c < 0x100) { + scc_add_to_readbuf(port, c, dcycs); + } + break; + } + break; + case 3: /* LINEMODE SB SLC, octet 0 */ + if(eff_c == 0x1f0) { + /* SE, the end */ + telnet_mode = 0; + } + printf("LINEMODE SLC octet 0: %02x\n", c); + telnet_mode = 4; + break; + case 4: /* LINEMODE SB SLC, octet 1 */ + printf("LINEMODE SLC octet 1: %02x\n", c); + telnet_mode = 5; + if(eff_c == 0x1f0) { + /* SE, the end */ + printf("Got SE at octet 1...\n"); + telnet_mode = 0; + } + break; + case 5: /* LINEMODE SB SLC, octet 2 */ + printf("LINEMODE SLC octet 2: %02x\n", c); + telnet_mode = 3; + if(eff_c == 0x1f0) { + /* SE, the end */ + printf("Got SE at octet 2...\n"); + telnet_mode = 0; + } + break; + case 34: /* LINEMODE SB beginning */ + switch(c) { + case 3: /* SLC */ + telnet_mode = 3; + break; + default: + telnet_mode = 0xee; /* go to SB eat */ + break; + } + break; + case 0xfa: /* in 0xfa = SB mode, eat up subcommands */ + switch(c) { + case 34: /* LINEMODE */ + telnet_mode = 34; + break; + default: + telnet_mode = 0xee; /* SB eat mode */ + break; + } + break; + case 0xee: /* in SB eat mode */ + if(eff_c == 0x1f0) { /* SE, end of sub-command */ + telnet_mode = 0; + } else { + /* just stay in eat mode */ + } + break; + case 0xfe: /* previous char was "DON'T" */ + if(locmask && (reqwillmask == 0)) { + /* it's a mode change */ + /* always OK to turn off a mode that we had on */ + scc_add_to_writebuf(port, 0xff, dcycs); + scc_add_to_writebuf(port, 0xfc, dcycs); /* WON'T */ + scc_add_to_writebuf(port, c, dcycs); + } + scc_ptr->telnet_local_mode[cpos] &= ~mask; + scc_ptr->telnet_reqwill_mode[cpos] &= ~mask; + telnet_mode = 0; + break; + case 0xfd: /* previous char was "DO" */ + reply = 0xfc; + if(locmask == 0 && (reqwillmask == 0)) { + /* it's a mode change, send some response */ + reply = 0xfc; /* nack it with WON'T */ + if(c == 0x03 || c == 0x01) { + reply = 0xfb; /* Ack with WILL */ + } + scc_add_to_writebuf(port, 0xff, dcycs); + scc_add_to_writebuf(port, reply, dcycs); + scc_add_to_writebuf(port, c, dcycs); + } + if(reqwillmask || (reply == 0xfb)) { + scc_ptr->telnet_local_mode[cpos] |= mask; + } + scc_ptr->telnet_reqwill_mode[cpos] &= ~mask; + telnet_mode = 0; + break; + case 0xfc: /* previous char was "WON'T" */ + if(remmask && (reqdomask == 0)) { + /* it's a mode change, ack with DON'T */ + scc_add_to_writebuf(port, 0xff, dcycs); + scc_add_to_writebuf(port, 0xfe, dcycs); /* DON'T */ + scc_add_to_writebuf(port, c, dcycs); + } + scc_ptr->telnet_remote_mode[cpos] &= ~mask; + scc_ptr->telnet_reqdo_mode[cpos] &= ~mask; + telnet_mode = 0; + break; + case 0xfb: /* previous char was "WILL" */ + reply = 0xfe; /* nack it with DON'T */ + if(remmask == 0 && (reqdomask == 0)) { + /* it's a mode change, send some response */ + if(c == 0x03 || c == 0x01) { + reply = 0xfd; /* Ack with DO */ + } + scc_add_to_writebuf(port, 0xff, dcycs); + scc_add_to_writebuf(port, reply, dcycs); + scc_add_to_writebuf(port, c, dcycs); + } + if(reqdomask || (reply == 0xfd)) { + scc_ptr->telnet_remote_mode[cpos] |= mask; + } + scc_ptr->telnet_reqdo_mode[cpos] &= ~mask; + telnet_mode = 0; + break; + default: + telnet_mode = 0; + break; + } + scc_ptr->telnet_mode = telnet_mode; +} + +void +scc_socket_empty_writebuf(int port, double dcycs) +{ +#ifdef SCC_SOCKETS +# ifndef _WIN32 + struct sigaction newact, oldact; +# endif + Scc *scc_ptr; + double diff_dcycs; + int plus_mode; + int rdptr; + int wrptr; + int rdwrfd; + int done; + int ret; + int len; + int c; + int i; + + scc_ptr = &(g_scc.scc_stat[port]); + + /* See if +++ done and we should go to command mode */ + diff_dcycs = dcycs - scc_ptr->out_char_dcycs; + if((diff_dcycs > 900.0*1000) && (scc_ptr->modem_plus_mode == 3) && + (scc_ptr->socket_state >= 1) && + (g_sim65816.g_serial_modem[port] != 0)) { + scc_ptr->socket_state = 0; /* go modem mode, stay connect*/ + scc_ptr->modem_plus_mode = 0; + scc_socket_send_modem_code(port, 0, dcycs); + } + + /* Try writing some bytes */ + done = 0; + while(!done) { + rdptr = scc_ptr->out_rdptr; + wrptr = scc_ptr->out_wrptr; + if(rdptr == wrptr) { + done = 1; + break; + } + rdwrfd = scc_ptr->rdwrfd; + len = wrptr - rdptr; + if(len < 0) { + len = SCC_OUTBUF_SIZE - rdptr; + } + if(len > 32) { + len = 32; + } + if(len <= 0) { + done = 1; + break; + } + + if(scc_ptr->socket_state < 1 && g_sim65816.g_serial_modem[port]) { + len = 1; + scc_socket_modem_write(port, scc_ptr->out_buf[rdptr], + dcycs); + ret = 1; + } else { + if(rdwrfd == -1) { + if(g_sim65816.g_serial_modem[port]) { + printf("socket_state: %d, ser_mod: %d, " + "rdwrfd: %d\n", + scc_ptr->socket_state, + g_sim65816.g_serial_modem[port], rdwrfd); + } + scc_ptr->socket_state = 0; + scc_socket_maybe_open_incoming(port, dcycs); + return; + } + for(i = 0; i < len; i++) { + c = scc_ptr->out_buf[rdptr + i]; + plus_mode = scc_ptr->modem_plus_mode; + diff_dcycs = dcycs - scc_ptr->out_char_dcycs; + if(c == '+' && plus_mode == 0) { + if(diff_dcycs > 500*1000) { + scc_ptr->modem_plus_mode = 1; + } + } else if(c == '+') { + if(diff_dcycs < 800.0*1000) { + plus_mode++; + scc_ptr->modem_plus_mode = + plus_mode; + } + } else { + scc_ptr->modem_plus_mode = 0; + } + scc_ptr->out_char_dcycs = dcycs; + } + +# ifdef _WIN32 + ret = send(rdwrfd, (const char*)&(scc_ptr->out_buf[rdptr]), len, 0); // OG Added Cast +# else + /* ignore SIGPIPE around writes to the socket, so we */ + /* can catch a closed socket and prepare to accept */ + /* a new connection. Otherwise, SIGPIPE kills KEGS */ + sigemptyset(&newact.sa_mask); + newact.sa_handler = SIG_IGN; + newact.sa_flags = 0; + sigaction(SIGPIPE, &newact, &oldact); + + ret = send(rdwrfd, &(scc_ptr->out_buf[rdptr]), len, 0); + + sigaction(SIGPIPE, &oldact, 0); + /* restore previous SIGPIPE behavior */ +# endif /* WIN32 */ + +#if 0 + printf("sock output: %02x\n", scc_ptr->out_buf[rdptr]); +#endif + + } + + if(ret == 0) { + done = 1; /* give up for now */ + break; + } else if(ret < 0) { + /* assume socket is dead */ + printf("socket write failed, resuming modem mode\n"); + scc_socket_close(port, 1, dcycs); + done = 1; + break; + } else { + rdptr = rdptr + ret; + if(rdptr >= SCC_OUTBUF_SIZE) { + rdptr = rdptr - SCC_OUTBUF_SIZE; + } + scc_ptr->out_rdptr = rdptr; + } + } +#endif +} + +void +scc_socket_modem_write(int port, int c, double dcycs) +{ + Scc *scc_ptr; + char *str; + word32 modem_mode; + int do_echo; + int got_at; + int len; + + scc_ptr = &(g_scc.scc_stat[port]); + + if(scc_ptr->sockfd == -1) { + scc_ptr->socket_state = 0; + scc_socket_maybe_open_incoming(port, dcycs); + } + + modem_mode = scc_ptr->modem_mode; + str = (char*)&(scc_ptr->modem_cmd_str[0]); // OG Added Cast + +#if 0 + printf("M: %02x\n", c); +#endif + do_echo = ((modem_mode & SCCMODEM_NOECHO) == 0); + len = scc_ptr->modem_cmd_len; + got_at = 0; + if(len >= 2 && str[0] == 'a' && str[1] == 't') { + /* we've got an 'at', do not back up past it */ + got_at = 1; + } + if(c == 0x0d) { + if(do_echo) { + scc_add_to_readbuf(port, c, dcycs); /* echo cr */ + scc_add_to_readbuf(port, 0x0a, dcycs); /* echo lf */ + } + do_echo = 0; /* already did the echo */ + scc_socket_do_cmd_str(port, dcycs); + scc_ptr->modem_cmd_len = 0; + len = 0; + str[0] = 0; + } else if(c == 0x08) { + if(len <= 0) { + do_echo = 0; /* do not go past left margin */ + } else if(len == 2 && got_at) { + do_echo = 0; /* do not erase "AT" */ + } else { + /* erase a character */ + len--; + str[len] = 0; + } + } else if(c < 0x20) { + /* ignore all control characters, don't echo */ + /* includes line feeds and nulls */ + do_echo = 0; + } else { + /* other characters */ + if(len < SCC_MODEM_MAX_CMD_STR) { + str[len] = tolower(c); + str[len+1] = 0; + len++; + } + } + scc_ptr->modem_cmd_len = len; + if(do_echo) { + scc_add_to_readbuf(port, c, dcycs); /* echo */ + } +} + +void +scc_socket_do_cmd_str(int port, double dcycs) +{ + Scc *scc_ptr; + char *str; + int pos, len; + int ret_val; + int reg, reg_val; + int was_amp; + int c; + int i; + + scc_ptr = &(g_scc.scc_stat[port]); + + str = (char*)&(scc_ptr->modem_cmd_str[0]); // OG Added cast + printf("Got modem string :%s:=%02x %02x %02x\n", str, str[0], str[1], + str[2]); + + len = scc_ptr->modem_cmd_len; + str[len] = 0; + str[len+1] = 0; + str[len+2] = 0; + pos = -1; + if(len < 2) { + /* just ignore it */ + return; + } + if(str[0] != 'a' || str[1] != 't') { + return; + } + + /* Some AT command received--make sure socket 6501/6502 is open */ + printf("Some AT command received, sockfd=%d\n", scc_ptr->sockfd); + + pos = 2 - 1; + ret_val = 0; /* "OK" */ + was_amp = 0; + while(++pos < len) { + c = str[pos] + was_amp; + was_amp = 0; + switch(c) { + case '&': /* at& */ + was_amp = 0x100; + break; + case 'z': /* atz */ + scc_ptr->modem_mode = 0; + scc_ptr->modem_s0_val = 0; + pos = len; /* ignore any other commands */ + break; + case 'e': /* ate = echo */ + c = str[pos+1]; + if(c == '1') { + scc_ptr->modem_mode &= ~SCCMODEM_NOECHO; + pos++; + } else { + scc_ptr->modem_mode |= SCCMODEM_NOECHO; + pos++; + } + break; + case 'v': /* atv = verbose */ + c = str[pos+1]; + if(c == '1') { + scc_ptr->modem_mode &= ~SCCMODEM_NOVERBOSE; + pos++; + } else { + scc_ptr->modem_mode |= SCCMODEM_NOVERBOSE; + pos++; + } + break; + case 'o': /* ato = go online */ + printf("ato\n"); + if(scc_ptr->dcd && (scc_ptr->rdwrfd != -1) && + (scc_ptr->socket_state == 0)) { + printf("Going back online\n"); + scc_ptr->socket_state = 1; + scc_socket_modem_connect(port, dcycs); + ret_val = -1; + } + break; + case 'h': /* ath = hang up */ + printf("ath, hanging up\n"); + scc_socket_close(port, (scc_ptr->rdwrfd != -1), dcycs); + /* scc_socket_maybe_open_incoming(port, dcycs); */ + /* reopen listen */ + break; + case 'a': /* ata */ + printf("Doing ATA\n"); + scc_socket_do_answer(port, dcycs); + ret_val = -1; + break; + case 'd': /* atd */ + pos++; + c = str[pos]; + if(c == 't' || c == 'p') { + /* skip tone or pulse */ + pos++; + } + /* see if it is 111 */ + if(strcmp(&str[pos], "111") == 0) { + /* Do PPP! */ + } else { + /* get string to connect to */ + /* Shift string so hostname moves to str[0] */ + for(i = 0; i < len; i++) { + str[i] = str[pos]; + if(pos >= len) { + break; + } + pos++; + } + + } + scc_ptr->modem_dial_or_acc_mode = 1; + scc_socket_open_outgoing(port, dcycs); + ret_val = -1; + pos = len; /* always eat rest of the line */ + break; + case 's': /* atsnn=yy */ + pos++; + reg = 0; + while(1) { + c = str[pos]; + if(c < '0' || c > '9') { + break; + } + reg = (reg * 10) + c - '0'; + pos++; + } + if(c == '?') { + /* display S-register */ + if(reg == 0) { + scc_add_to_readbufv(port, dcycs, + "S0=%d\n", + scc_ptr->modem_s0_val); + } + break; + } + if(c != '=') { + break; + } + pos++; + reg_val = 0; + while(1) { + c = str[pos]; + if(c < '0' || c >'9') { + break; + } + reg_val = (reg_val * 10) + c - '0'; + pos++; + } + printf("ats%d = %d\n", reg, reg_val); + if(reg == 0) { + scc_ptr->modem_s0_val = reg_val; + } + pos--; + break; + default: + /* some command--peek into next chars to finish it */ + while(1) { + c = str[pos+1]; + if(c >= '0' && c <= '9') { + /* eat numbers */ + pos++; + continue; + } + if(c == '=') { + /* eat this as well */ + pos++; + continue; + } + /* else get out */ + break; + } + } + } + + if(ret_val >= 0) { + scc_socket_send_modem_code(port, ret_val, dcycs); + } +} + +void +scc_socket_send_modem_code(int port, int code, double dcycs) +{ + Scc *scc_ptr; + const char *str; + word32 modem_mode; + + scc_ptr = &(g_scc.scc_stat[port]); + + switch(code) { + case 0: str = "OK"; break; + case 1: str = "CONNECT"; break; + case 2: str = "RING"; break; + case 3: str = "NO CARRIER"; break; + case 4: str = "ERROR"; break; + case 5: str = "CONNECT 1200"; break; + case 13: str = "CONNECT 9600"; break; + case 16: str = "CONNECT 19200"; break; + case 25: str = "CONNECT 14400"; break; + case 85: str = "CONNECT 19200"; break; + default: + str = "ERROR"; + } + + printf("Sending modem code %d = %s\n", code, str); + + modem_mode = scc_ptr->modem_mode; + if(modem_mode & SCCMODEM_NOVERBOSE) { + /* just the number */ + scc_add_to_readbufv(port, dcycs, "%d", code); + scc_add_to_readbuf(port, 0x0d, dcycs); + } else { + scc_add_to_readbufv(port, dcycs, "%s\n", str); + } +} + +void +scc_socket_modem_hangup(int port, double dcycs) +{ + scc_socket_send_modem_code(port, 3, dcycs); +} + +void +scc_socket_modem_connect(int port, double dcycs) +{ + /* decide which code to send. Default to 1 if needed */ + scc_socket_send_modem_code(port, 13, dcycs); /*13=9600*/ +} + +void +scc_socket_modem_do_ring(int port, double dcycs) +{ + Scc *scc_ptr; + double diff_dcycs; + int num_rings; + + scc_ptr = &(g_scc.scc_stat[port]); + num_rings = scc_ptr->socket_num_rings; + if(num_rings > 0 && scc_ptr->socket_state == 0) { + num_rings--; + diff_dcycs = dcycs - scc_ptr->socket_last_ring_dcycs; + if(diff_dcycs < 2.0*1000*1000 && g_sim65816.g_serial_modem[port]) { + return; /* nothing more to do */ + } + printf("In modem_do_ring, ringing at %f\n", dcycs); + if(g_sim65816.g_serial_modem[port]) { + scc_socket_send_modem_code(port, 2, dcycs); /* RING */ + } else { + num_rings = 0; + } + scc_ptr->socket_num_rings = num_rings; + scc_ptr->socket_last_ring_dcycs = (int)dcycs; + if(num_rings <= 0) { + /* decide on answering */ + if(scc_ptr->modem_s0_val || (g_sim65816.g_serial_modem[port]==0)) { + scc_socket_do_answer(port, dcycs); + } else { + printf("No answer, closing socket\n"); + scc_socket_close(port, 0, dcycs); + } + } + } +} + +void +scc_socket_do_answer(int port, double dcycs) +{ + Scc *scc_ptr; + + scc_ptr = &(g_scc.scc_stat[port]); + scc_ptr->modem_dial_or_acc_mode = 2; + scc_accept_socket(port, dcycs); + if(scc_ptr->rdwrfd == -1) { + printf("Answer when rdwrfd=-1, closing\n"); + scc_socket_close(port, 1, dcycs); + /* send NO CARRIER message */ + } else { + scc_ptr->socket_state = 1; + scc_socket_telnet_reqs(port, dcycs); + printf("Send telnet reqs, rdwrfd=%d\n", scc_ptr->rdwrfd); + if(g_sim65816.g_serial_modem[port]) { + scc_socket_modem_connect(port, dcycs); + } + scc_ptr->dcd = 1; /* carrier on */ + scc_ptr->socket_state = 1; /* talk to socket */ + scc_ptr->socket_num_rings = 0; + } +} diff --git a/kegs/Src/sim65816.cpp b/kegs/Src/sim65816.cpp new file mode 100644 index 0000000..a1ce06d --- /dev/null +++ b/kegs/Src/sim65816.cpp @@ -0,0 +1,3080 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#ifdef _WIN32 +# define _WINSOCKAPI_ +#endif + +#undef printf + +#include + +#define INCLUDE_RCSID_C +#include "defc.h" +#undef INCLUDE_RCSID_C +#include "raster.h" +#include "protos_engine_c.h" +#include "driver.h" + +// 2.6 = 60 +// 2.49 = 63 +// 2.45 = 64 +// 2.43 = 64 +// 2.41 = 65! *** + +#define DEFAULT_GS_SPEED 2.5 //(2.41*(2.8/2.322)) + + +#include "moremem.h" +#include "sim65816.h" +#include "iwm.h" +#include "config.h" +#include "sound.h" +#include "video.h" +#include "saveState.h" +#include "graphcounter.h" +#include "marinetti.h" + + +s_sim65816 g_sim65816; +run_sim65816 r_sim65816; + +void run_sim65816::set_state(int _newstate) +{ + int s = _newstate ; + printf("state changed from %d to %d\n",r_sim65816.emulator_state,s); + emulator_state = s; +} + +int run_sim65816::get_state() +{ + return emulator_state; +} + +void run_sim65816::set_rewind_enable(int _onoff) +{ + g_savestate_enable = _onoff; + +} + + +//OG for regular exit, use quitEmulator() +void run_sim65816::quit_emulator() +{ + printf("*** quit_emulator ***\n"); + quit_requested = 1; +} + +void run_sim65816::restart_emulator() +{ + printf("*** quit_emulator ***\n"); + restart_requested = 1; +} + + +void run_sim65816::reset_quit() +{ + printf("*** reset_quit ***\n"); + quit_requested = 0; +} + +void run_sim65816::reset_restart() +{ + printf("*** reset_restart ***\n"); + restart_requested = 0; +} + +int run_sim65816::should_emulator_terminate() +{ + return (quit_requested || restart_requested); +} + +int run_sim65816::is_emulator_offscreen_available() +{ + return ( emulator_state & OFFSCREEN_AVAILABLE ); +} + +int run_sim65816::is_emulator_in_640mode() +{ + + return g_video.g_a2_line_kimage[0]==&s_video.g_kimage_superhires && (g_slow_memory_ptr[0x19d00]&0x80) ; +} +void refresh_offscreen() +{ + printf("*** forcing offscreen refresh! ***\n"); + // recalcul la palette + r_sim65816.check_update_emulator_runtime_config(); + // regnre l'cran + g_video.g_screen_redraw_skip_count = 0; // pour forcer le refresh indpendamment du frame rate effectif + video_update(); + // force son rafraichissemnt + // OG NE PAS FAIRE LE REFRESH ICI CAR ON NE SAIT PAS D'OU VIENT LA DEMANDE!!! + // refresh_video(1); +} + + +void run_sim65816::set_color_mode(colormodeenum _cm) +{ + color_mode = _cm; + printf("color_mode set to %d\n",_cm); + g_video.g_needfullrefreshfornextframe = 1 ; + request_update_emulator_runtime_config(); + + if (r_sim65816.get_state()==IN_PAUSE) + refresh_offscreen(); + + + +} + + +void run_sim65816::set_video_fx(videofxenum _vfx) +{ + video_fx = _vfx; + g_video.g_needfullrefreshfornextframe = 1 ; + printf("video fx set to %d\n",_vfx); +#ifdef DRIVER_IOS + { + extern void x_set_video_fx(videofxenum _vfx); + x_set_video_fx(_vfx); + } +#endif +} + + +int run_sim65816::is_emulator_initialized() +{ + int s = r_sim65816.get_state(); + return (s==RUNNING) || (s==IN_PAUSE); +} + +void run_sim65816::request_update_emulator_runtime_config() +{ + emulator_config_requested=1; +} + +void run_sim65816::check_update_emulator_runtime_config() +{ + + if (!emulator_config_requested) + return ; + + emulator_config_requested=0; + + extern void video_update_palette_color(); + + if (color_mode == COLORMODE_BW) + g_video.g_cur_a2_stat |= ALL_STAT_COLOR_C021; + else + g_video.g_cur_a2_stat &= ~ALL_STAT_COLOR_C021; + + // recalcul les palettes + video_update_palette_color(); + + for(int i=0;i<200;i++) + for(int j=0;j<8;j++) + s_video.g_saved_line_palettes[i][j] = -1; + + // remets jour les borders (cf. change_border_color) + g_video.g_border_last_vbl_changes = 1; + for(int i=0;i<270;i++) + g_video.g_cur_border_colors[i] = -1; + + + // invalide la mmoire + for(int i = 0;idcycs; + dcycs = start_dcycs; + + data_wrap = 0; + /* find first data entry */ + while(data_wrap < 2 && (log_data_ptr->dcycs < dcycs)) { + log_data_ptr++; + if(log_data_ptr >= g_log_data_end_ptr) { + log_data_ptr = g_log_data_start_ptr; + data_wrap++; + } + } + fprintf(pcfile, "start_dcycs: %9.2f\n", start_dcycs); + + for(i = 0; i < PC_LOG_LEN; i++) { + dcycs = log_pc_ptr->dcycs; + while((data_wrap < 2) && (log_data_ptr->dcycs <= dcycs) && + (log_data_ptr->dcycs >= start_dcycs)) { + fprintf(pcfile, "DATA set %06x = %06x (%d) %9.2f\n", + log_data_ptr->addr, log_data_ptr->val, + log_data_ptr->size, + log_data_ptr->dcycs - start_dcycs); + log_data_ptr++; + if(log_data_ptr >= g_log_data_end_ptr) { + log_data_ptr = g_log_data_start_ptr; + data_wrap++; + } + } + dbank = (log_pc_ptr->dbank_kpc >> 24) & 0xff; + kpc = log_pc_ptr->dbank_kpc & 0xffffff; + instr = log_pc_ptr->instr; + psr = (log_pc_ptr->psr_acc >> 16) & 0xffff;; + acc = log_pc_ptr->psr_acc & 0xffff;; + xreg = (log_pc_ptr->xreg_yreg >> 16) & 0xffff;; + yreg = log_pc_ptr->xreg_yreg & 0xffff;; + stack = (log_pc_ptr->stack_direct >> 16) & 0xffff;; + direct = log_pc_ptr->stack_direct & 0xffff;; + + num = log_pc_ptr - g_log_pc_start_ptr; + + accsize = 2; + xsize = 2; + if(psr & 0x20) { + accsize = 1; + } + if(psr & 0x10) { + xsize = 1; + } + + fprintf(pcfile, "%04x: A:%04x X:%04x Y:%04x P:%03x " + "S:%04x D:%04x B:%02x %9.2f ", i, + acc, xreg, yreg, psr, stack, direct, dbank, + (dcycs-start_dcycs)); + + do_dis(pcfile, kpc, accsize, xsize, 1, instr); + log_pc_ptr++; + if(log_pc_ptr >= g_log_pc_end_ptr) { + log_pc_ptr = g_log_pc_start_ptr; + } + } + + fclose(pcfile); +} + + +word32 +toolbox_debug_4byte(word32 addr) +{ + word32 part1, part2; + + /* If addr looks safe, use it */ + if(addr > 0xbffc) { + return (word32)-1; + } + + part1 = get_memory16_c(addr, 0); + part1 = (part1 >> 8) + ((part1 & 0xff) << 8); + part2 = get_memory16_c(addr+2, 0); + part2 = (part2 >> 8) + ((part2 & 0xff) << 8); + + return (part1 << 16) + part2; +} + +void +toolbox_debug_c(word32 xreg, word32 stack, double *cyc_ptr) +{ + int pos; + + pos = g_toolbox_log_pos; + + stack += 9; + g_toolbox_log_array[pos][0] = (word32)(g_sim65816.g_last_vbl_dcycs + *cyc_ptr); + g_toolbox_log_array[pos][1] = stack+1; + g_toolbox_log_array[pos][2] = xreg; + g_toolbox_log_array[pos][3] = toolbox_debug_4byte(stack+1); + g_toolbox_log_array[pos][4] = toolbox_debug_4byte(stack+5); + g_toolbox_log_array[pos][5] = toolbox_debug_4byte(stack+9); + g_toolbox_log_array[pos][6] = toolbox_debug_4byte(stack+13); + g_toolbox_log_array[pos][7] = toolbox_debug_4byte(stack+17); + + pos++; + if(pos >= TOOLBOX_LOG_LEN) { + pos = 0; + } + + g_toolbox_log_pos = pos; +} + +void +show_toolbox_log() +{ + int pos; + int i; + + pos = g_toolbox_log_pos; + + for(i = TOOLBOX_LOG_LEN - 1; i >= 0; i--) { + printf("%2d:%2d: %08x %06x %04x: %08x %08x %08x %08x %08x\n", + i, pos, + g_toolbox_log_array[pos][0], + g_toolbox_log_array[pos][1], + g_toolbox_log_array[pos][2], + g_toolbox_log_array[pos][3], + g_toolbox_log_array[pos][4], + g_toolbox_log_array[pos][5], + g_toolbox_log_array[pos][6], + g_toolbox_log_array[pos][7]); + pos++; + if(pos >= TOOLBOX_LOG_LEN) { + pos = 0; + } + } +} + +#if 0 +/* get_memory_c is not used, get_memory_asm is, but this does what the */ +/* assembly language would do */ +word32 +get_memory_c(word32 loc, int diff_cycles) +{ + byte *addr; + word32 result; + int index; + +#ifdef CHECK_BREAKPOINTS + check_breakpoints_c(loc); +#endif + + index = loc >> 8; + result = page_info[index].rd; + if(result & BANK_IO_BIT) { + return get_memory_io(loc, diff_cycles); + } + + addr = (byte *)((result & 0xffffff00) + (loc & 0xff)); + + return *addr; +} +#endif + + +word32 +get_memory_io(word32 loc, double *cyc_ptr) +{ + int tmp; + + if(loc > 0xffffff) { + halt_printf("get_memory_io:%08x out of range==halt!\n", loc); + return 0; + } + + tmp = loc & 0xfef000; + if(tmp == 0xc000 || tmp == 0xe0c000) { + return(io_read(loc & 0xfff, cyc_ptr)); + } + + /* Else it's an illegal addr...skip if memory sizing */ + if(loc >= g_sim65816.g_mem_size_total) { + if((loc & 0xfffe) == 0) { +#if 0 + printf("get_io assuming mem sizing, not halting\n"); +#endif + return 0; + } + } + + /* Skip reads to f80000 and f00000, just return 0 */ + if((loc & 0xf70000) == 0xf00000) { + return 0; + } + + if((loc & 0xff0000) == 0xef0000) { + /* DOC RAM */ + return (g_sound.doc_ram[loc & 0xffff]); + } + + g_sim65816.g_code_yellow++; + if(r_sim65816.g_ignore_bad_acc && !r_sim65816.g_user_halt_bad) { + /* print no message, just get out. User doesn't want */ + /* to be bothered by buggy programs */ + return 0; + } + + printf("get_memory_io for addr: %06x\n", loc); + printf("stat for addr: %06x = %p\n", loc, + GET_PAGE_INFO_RD((loc >> 8) & 0xffff)); + set_halt(r_sim65816.g_halt_on_bad_read | r_sim65816.g_user_halt_bad); + + return 0; +} + +#if 0 +word32 +get_memory16_pieces(word32 loc, int diff_cycles) +{ + return(get_memory_c(loc, diff_cycles) + + (get_memory_c(loc+1, diff_cycles) << 8)); +} + +word32 +get_memory24(word32 loc, int diff_cycles) +{ + return(get_memory_c(loc, diff_cycles) + + (get_memory_c(loc+1, diff_cycles) << 8) + + (get_memory_c(loc+2, diff_cycles) << 16)); +} +#endif + +#if 0 +void +set_memory(word32 loc, int val, int diff_cycles) +{ + byte *ptr; + word32 new_addr; + word32 tmp; + word32 or_val; + int or_pos; + int old_slow_val; + +#ifdef CHECK_BREAKPOINTS + check_breakpoints_c(loc); +#endif + + tmp = GET_PAGE_INFO_WR((loc>>8) & 0xffff); + if(tmp & BANK_IO) { + set_memory_io(loc, val, diff_cycles); + return; + } + + if((loc & 0xfef000) == 0xe0c000) { + printf("set_memory_special: non-io for addr %08x, %02x, %d\n", + loc, val, diff_cycles); + halt_printf("tmp: %08x\n", tmp); + } + + ptr = (byte *)(tmp & (~0xff)); + + new_addr = loc & 0xffff; + old_slow_val = val; + + if(tmp & BANK_SHADOW) { + old_slow_val = g_slow_memory_ptr[new_addr]; + } else if(tmp & BANK_SHADOW2) { + new_addr += 0x10000; + old_slow_val = g_slow_memory_ptr[new_addr]; + } + + if(old_slow_val != val) { + g_slow_memory_ptr[new_addr] = val; + or_pos = (new_addr >> SHIFT_PER_CHANGE) & 0x1f; + or_val = DEP1(1, or_pos, 0); + if((new_addr >> CHANGE_SHIFT) >= SLOW_MEM_CH_SIZE) { + printf("new_addr: %08x\n", new_addr); + x_exit(12); + } + g_video.slow_mem_changed[(new_addr & 0xffff) >> CHANGE_SHIFT] |= or_val; + } + + ptr[loc & 0xff] = val; + +} +#endif + +void +set_memory_io(word32 loc, int val, double *cyc_ptr) +{ + word32 tmp; + + tmp = loc & 0xfef000; + if(tmp == 0xc000 || tmp == 0xe0c000) { + io_write(loc, val, cyc_ptr); + return; + } + + /* Else it's an illegal addr */ + if(loc >= g_sim65816.g_mem_size_total) { + if((loc & 0xfffe) == 0) { +#if 0 + printf("set_io assuming mem sizing, not halting\n"); +#endif + return; + } + } + + /* ignore writes to ROM */ + if((loc & 0xfc0000) == 0xfc0000) { + return; + } + + if((loc & 0xff0000) == 0xef0000) { + /* DOC RAM */ + g_sound.doc_ram[loc & 0xffff] = val; + return; + } + + if(r_sim65816.g_ignore_bad_acc && !r_sim65816.g_user_halt_bad) { + /* print no message, just get out. User doesn't want */ + /* to be bothered by buggy programs */ + return; + } + + if((loc & 0xffc000) == 0x00c000) { + printf("set_memory %06x = %02x, warning\n", loc, val); + return; + } + + halt_printf("set_memory %06x = %02x, stopping\n", loc, val); + + return; +} + + +#if 0 +void +check_breakpoints_c(word32 loc) +{ + int index; + int count; + int i; + + index = (loc & (MAX_BP_INDEX-1)); + count = breakpoints[index].count; + if(count) { + for(i = 0; i < count; i++) { + if(loc == breakpoints[index].addrs[i]) { + halt_printf("Write hit breakpoint %d!\n", i); + } + } + } +} +#endif + + +void +show_regs_act(Engine_reg *eptr) +{ + int tmp_acc, tmp_x, tmp_y, tmp_psw; + int kpc; + int direct_page, dbank; + int stack; + + kpc = eptr->kpc; + tmp_acc = eptr->acc; + direct_page = eptr->direct; + dbank = eptr->dbank; + stack = eptr->stack; + + tmp_x = eptr->xreg; + tmp_y = eptr->yreg; + + tmp_psw = eptr->psr; + + printf(" PC=%02x.%04x A=%04x X=%04x Y=%04x P=%03x", + kpc>>16, kpc & 0xffff ,tmp_acc,tmp_x,tmp_y,tmp_psw); + printf(" S=%04x D=%04x B=%02x,cyc:%.3f\n", stack, direct_page, + dbank, g_sim65816.g_cur_dcycs); +} + +void +show_regs() +{ + show_regs_act(&g_sim65816.engine); +} + + +//OG change exit() to x_exit() +extern void x_exit(int); + +void my_exit(int ret) +{ + end_screen(); + printf("exiting (ret=%d)\n",ret); + x_exit(ret); +} + + +void +do_reset() +{ + + g_moremem.g_c068_statereg = 0x08 + 0x04 + 0x01; /* rdrom, lcbank2, intcx */ + g_moremem.g_c035_shadow_reg = 0; + + g_moremem.g_c08x_wrdefram = 1; + g_moremem.g_c02d_int_crom = 0; + g_moremem.g_c023_val = 0; + g_moremem.g_c041_val = 0; + + g_sim65816.engine.psr = (g_sim65816.engine.psr | 0x134) & ~(0x08); + g_sim65816.engine.stack = 0x100 + (g_sim65816.engine.stack & 0xff); + g_sim65816.engine.dbank = 0; + g_sim65816.engine.direct = 0; + g_sim65816.engine.xreg &= 0xff; + g_sim65816.engine.yreg &= 0xff; + g_sim65816.g_wait_pending = 0; + g_sim65816.g_stp_pending = 0; + + + video_reset(); + adb_reset(); + iwm_reset(); + scc_reset(); + sound_reset(g_sim65816.g_cur_dcycs); + setup_pageinfo(); + change_display_mode(g_sim65816.g_cur_dcycs); + + g_moremem.g_irq_pending = 0; + + g_sim65816.engine.kpc = get_memory16_c(0x00fffc, 0); + + //set_bp(g_sim65816.engine.kpc); +// set_bp(0x666,(enum mode_breakpoint)(BRK_X|BRK_PATCH),"067B:60"); + + g_stepping = 0; + + // OG Cleared remaining IRQS on RESET + { + +/* + extern int g_scan_int_events ; + extern int g_c023_val; + + + #define REMOVEIRQ(ADR) { extern int ADR; if (ADR) { remove_irq(); ADR=0; } } + #define CLEARIRQ(ADR) { extern int ADR; ADR=0; } + + REMOVEIRQ(g_adb_kbd_srq_sent); + REMOVEIRQ(g_adb_data_int_sent); + REMOVEIRQ(g_adb_mouse_int_sent); + REMOVEIRQ(c046_vbl_irq_pending); + REMOVEIRQ(c046_25sec_irq_pend); + REMOVEIRQ(c023_scan_int_irq_pending); + REMOVEIRQ(c023_1sec_int_irq_pending); + REMOVEIRQ(c046_vbl_irq_pending); + + CLEARIRQ(c041_en_25sec_ints); + CLEARIRQ(c041_en_vbl_ints); + CLEARIRQ(c041_en_switch_ints); + CLEARIRQ(c041_en_move_ints); + CLEARIRQ(c041_en_mouse); + + g_sim65816.g_scan_int_events = 0; + + initialize_events(); +*/ + if (g_moremem.g_irq_pending) + halt_printf("*** irq remainings...\n"); + +/* + g_moremem.g_irq_pending = 0; + // reinitiliase zip speed (not sure)??? + // g_moremem.g_zipgs_reg_c05a = 0x80; + */ + } + +} + +#define CHECK(start, var, value, var1, var2) \ + var2 = PTR2WORD(&(var)); \ + var1 = PTR2WORD((start)); \ + if((var2 - var1) != value) { \ + printf("CHECK: " #var " is 0x%x, but " #value " is 0x%x\n", \ + (var2 - var1), value); \ + x_exit(5); \ + } + +void +check_engine_asm_defines() +{ + Fplus fplus; + Fplus *fplusptr; + Pc_log pclog; + Pc_log *pcptr; + Engine_reg ereg; + Engine_reg *eptr; + word32 val1; + word32 val2; + + eptr = &ereg; + CHECK(eptr, eptr->fcycles, ENGINE_FCYCLES, val1, val2); + CHECK(eptr, eptr->fplus_ptr, ENGINE_FPLUS_PTR, val1, val2); + CHECK(eptr, eptr->acc, ENGINE_REG_ACC, val1, val2); + CHECK(eptr, eptr->xreg, ENGINE_REG_XREG, val1, val2); + CHECK(eptr, eptr->yreg, ENGINE_REG_YREG, val1, val2); + CHECK(eptr, eptr->stack, ENGINE_REG_STACK, val1, val2); + CHECK(eptr, eptr->dbank, ENGINE_REG_DBANK, val1, val2); + CHECK(eptr, eptr->direct, ENGINE_REG_DIRECT, val1, val2); + CHECK(eptr, eptr->psr, ENGINE_REG_PSR, val1, val2); + CHECK(eptr, eptr->kpc, ENGINE_REG_KPC, val1, val2); + + pcptr = &pclog; + CHECK(pcptr, pcptr->dbank_kpc, LOG_PC_DBANK_KPC, val1, val2); + CHECK(pcptr, pcptr->instr, LOG_PC_INSTR, val1, val2); + CHECK(pcptr, pcptr->psr_acc, LOG_PC_PSR_ACC, val1, val2); + CHECK(pcptr, pcptr->xreg_yreg, LOG_PC_XREG_YREG, val1, val2); + CHECK(pcptr, pcptr->stack_direct, LOG_PC_STACK_DIRECT, val1, val2); + if(LOG_PC_SIZE != sizeof(pclog)) { + printf("LOG_PC_SIZE: %d != sizeof=%d\n", LOG_PC_SIZE, + (int)sizeof(pclog)); + x_exit(2); + } + + fplusptr = &fplus; + CHECK(fplusptr, fplusptr->plus_1, FPLUS_PLUS_1, val1, val2); + CHECK(fplusptr, fplusptr->plus_2, FPLUS_PLUS_2, val1, val2); + CHECK(fplusptr, fplusptr->plus_3, FPLUS_PLUS_3, val1, val2); + CHECK(fplusptr, fplusptr->plus_x_minus_1, FPLUS_PLUS_X_M1, val1, val2); +} + + +byte * +memalloc_align(int size, int skip_amt, void **alloc_ptr) +{ + byte *bptr; + word32 addr; + word32 offset; + + skip_amt = MAX(256, skip_amt); + bptr = (byte*)calloc(size + skip_amt + 256, 1); // OG Added cast + if(alloc_ptr) { + /* Save allocation address */ + *alloc_ptr = bptr; + } + + addr = PTR2WORD(bptr) & 0xff; + + /* must align bptr to be 256-byte aligned */ + /* this code should work even if ptrs are > 32 bits */ + + offset = ((addr + skip_amt - 1) & (~0xff)) - addr; + + return (bptr + offset); +} + + +void +memory_ptr_init() +{ + word32 mem_size; + + /* This routine may be called several times--each time the ROM file */ + /* changes this will be called */ + mem_size = MIN(0xdf0000, g_sim65816.g_mem_size_base + g_sim65816.g_mem_size_exp); + g_sim65816.g_mem_size_total = mem_size; + + // OG using memory_ptr_shut() instead + memory_ptr_shut(); + + g_memory_ptr = memalloc_align(mem_size, 256, &g_memory_alloc_ptr); + + printf("RAM size is 0 - %06x (%.2fMB)\n", mem_size, (double)mem_size/(1024.0*1024.0)); +} + +// OG Added memory_ptr_shut +void +memory_ptr_shut() +{ + if(g_memory_alloc_ptr) + { + free(g_memory_alloc_ptr); + g_memory_alloc_ptr = 0; + } + g_memory_ptr = 0; +} + + + + + + +void +kegsmain_init(int argc, char **argv) +{ + int diff; + printf("kegsmain"); + + r_sim65816.set_state(INITIALIZING); + + //initSavedStateModule(); + + // OG Restoring globals + sim65816_initglobals(); + moremem_init(); + +//OG Disabling argument parsing +#ifndef ACTIVEGS + + int skip_amt; + int tmp1; + + /* parse args */ + for(int i = 1; i < argc; i++) { + if(!strcmp("-badrd", argv[i])) { + printf("Halting on bad reads\n"); + r_sim65816.g_halt_on_bad_read = 2; + } else if(!strcmp("-noignbadacc", argv[i])) { + printf("Not ignoring bad memory accesses\n"); + r_sim65816.g_ignore_bad_acc = 0; + } else if(!strcmp("-noignhalt", argv[i])) { + printf("Not ignoring code red halts\n"); + r_sim65816.g_ignore_halts = 0; + } else if(!strcmp("-test", argv[i])) { + printf("Allowing testing\n"); + g_sim65816.g_testing_enabled = 1; + } else if(!strcmp("-hpdev", argv[i])) { + printf("Using /dev/audio\n"); + g_sim65816.g_use_alib = 0; + } else if(!strcmp("-alib", argv[i])) { + printf("Using Aserver audio server\n"); + g_sim65816.g_use_alib = 1; + } else if(!strcmp("-24", argv[i])) { + printf("Using 24-bit visual\n"); + g_sim65816.g_force_depth = 24; + } else if(!strcmp("-16", argv[i])) { + printf("Using 16-bit visual\n"); + g_sim65816.g_force_depth = 16; + } else if(!strcmp("-15", argv[i])) { + printf("Using 15-bit visual\n"); + g_sim65816.g_force_depth = 15; + } else if(!strcmp("-mem", argv[i])) { + if((i+1) >= argc) { + printf("Missing argument\n"); + x_exit(1); + } + g_sim65816.g_mem_size_exp = strtol(argv[i+1], 0, 0) & 0x00ff0000; + printf("Using %d as memory size\n", g_sim65816.g_mem_size_exp); + i++; + } else if(!strcmp("-skip", argv[i])) { + if((i+1) >= argc) { + printf("Missing argument\n"); + x_exit(1); + } + skip_amt = strtol(argv[i+1], 0, 0); + printf("Using %d as skip_amt\n", skip_amt); + g_video.g_screen_redraw_skip_amt = skip_amt; + i++; + } else if(!strcmp("-audio", argv[i])) { + if((i+1) >= argc) { + printf("Missing argument\n"); + x_exit(1); + } + tmp1 = strtol(argv[i+1], 0, 0); + printf("Using %d as audio enable val\n", tmp1); + g_sound.g_audio_enable = tmp1; + i++; + } + /* + else if(!strcmp("-arate", argv[i])) { + if((i+1) >= argc) { + printf("Missing argument\n"); + x_exit(1); + } + tmp1 = strtol(argv[i+1], 0, 0); + printf("Using %d as preferred audio rate\n", tmp1); + g_preferred_rate = tmp1; + i++; + }*/ + else if(!strcmp("-v", argv[i])) { + if((i+1) >= argc) { + printf("Missing argument\n"); + x_exit(1); + } + tmp1 = strtol(argv[i+1], 0, 0); + printf("Setting g_sim65816.Verbose = 0x%03x\n", tmp1); + Verbose = tmp1; + i++; +#ifndef __NeXT__ + } else if(!strcmp("-display", argv[i])) { + if((i+1) >= argc) { + printf("Missing argument\n"); + x_exit(1); + } + printf("Using %s as display\n", argv[i+1]); + sprintf(g_sim65816.g_display_env, "DISPLAY=%s", argv[i+1]); + putenv(&g_sim65816.g_display_env[0]); + i++; +#endif + } +#ifdef DRIVER_LINUX + else if(!strcmp("-noshm", argv[i])) { + printf("Not using X shared memory\n"); + g_use_shmem = 0; + } +#endif + else if(!strcmp("-joystick", argv[i])) { + printf("Ignoring -joystick option\n"); + } else if(!strcmp("-dhr140", argv[i])) { + printf("Using simple dhires color map\n"); + g_video.g_use_dhr140 = 1; + } else if(!strcmp("-bw", argv[i])) { + printf("Forcing black-and-white hires modes\n"); + g_video.g_cur_a2_stat |= ALL_STAT_COLOR_C021; + r_sim65816.set_color_mode(COLORMODE_BW); + // s_video.g_use_bw_hires = 1; + } else { + printf("Bad option: %s\n", argv[i]); + x_exit(3); + } + } +#endif + + check_engine_asm_defines(); + fixed_memory_ptrs_init(); + + if(sizeof(word32) != 4) { + printf("sizeof(word32) = %d, must be 4!\n", + (int)sizeof(word32)); + x_exit(1); + } + + if(!g_engine_c_mode) { + diff = &defs_instr_end_8 - &defs_instr_start_8; + if(diff != 1) { + printf("defs_instr_end_8 - start is %d\n",diff); + x_exit(1); + } + + diff = &defs_instr_end_16 - &defs_instr_start_16; + if(diff != 1) { + printf("defs_instr_end_16 - start is %d\n", diff); + x_exit(1); + } + + diff = &op_routs_end - &op_routs_start; + if(diff != 1) { + printf("op_routs_end - start is %d\n", diff); + x_exit(1); + } + } + + + iwm_init(); + config_init(); + + load_roms_init_memory(); + + init_reg(); + clear_halt(); + + initialize_events(); + + video_init(); + + sound_init(); + marinetti_init(); + scc_init(); + adb_init(); + joystick_init(); + if(g_sim65816.g_rom_version >= 3) { + g_moremem.g_c036_val_speed |= 0x40; /* set power-on bit */ + } + + + g_num_breakpoints = 0; +#ifdef ACTIVEGS + extern void apply_breakpoints(); + apply_breakpoints(); +#endif + + do_reset(); + g_stepping = 0; + + + + r_sim65816.request_update_emulator_runtime_config(); + r_sim65816.set_state(RUNNING); + if (g_driver.x_post_event) + g_driver.x_post_event("emulator_launched"); +} + +void kegsmain_shut() +{ + + + /* If we get here, we hit a breakpoint, call debug intfc */ + do_debug_intfc(); + + r_sim65816.set_state(SHUTTING_DOWN); + + marinetti_shutdown(); + sound_shutdown(); + + adb_shut(); + iwm_shut(); + fixed_memory_ptrs_shut(); + load_roms_shut_memory(); + clear_fatal_logs(); + + end_screen(); + + r_sim65816.set_state(NO_INITIALIZED); + + //return 0; +} + + +int +kegsmain(int argc, char **argv) +{ + + kegsmain_init(argc,argv); + + #ifdef ACTIVEGS + { + extern void disableConsole(); + disableConsole(); + } + #endif + +// do go +extern int g_config_control_panel; +extern void run_prog_init(); +extern void run_prog_shut(); +extern int run_prog_loop(); + + g_config_control_panel = 0; + clear_halt(); + + run_prog_init(); + + while(1) + { + int ret = run_prog_loop(); + if (!ret) + break; + } + + run_prog_shut(); + + show_regs(); + g_config_control_panel = 1; + + kegsmain_shut(); + return 0; +} + + +void +load_roms_init_memory() +{ + config_load_roms(); + memory_ptr_init(); + clk_setup_bram_version(); /* Must be after config_load_roms */ + if(g_sim65816.g_rom_version >= 3) { + g_moremem.g_c036_val_speed |= 0x40; /* set power-on bit */ + } else { + g_moremem.g_c036_val_speed &= (~0x40); /* clear the bit */ + } + do_reset(); + + /* if user booted ROM 01, switches to ROM 03, then switches back */ + /* to ROM 01, then the reset routines call to Tool $0102 looks */ + /* at uninitialized $e1/15fe and if it is negative it will JMP */ + /* through $e1/1688 which ROM 03 left pointing to fc/0199 */ + /* So set e1/15fe = 0 */ + set_memory16_c(0xe115fe, 0, 0); +} + +// OG Added load_roms_shut_memory +void load_roms_shut_memory() +{ + memory_ptr_shut(); +} + +#ifndef ACTIVEGS + +void +kegs_expand_path(char *out_ptr, const char *in_ptr, int maxlen) +{ + char name_buf[256]; + const char *tmp_ptr; + int name_len; + int in_char; + int state; + + out_ptr[0] = 0; + + name_len = 0; + state = 0; + + /* See if in_ptr has ${} notation, replace with getenv or argv0 */ + while(maxlen > 0) { + in_char = *in_ptr++; + *out_ptr++ = in_char; + maxlen--; + if(state == 0) { + /* No $ seen yet, look for it */ + if(in_char == '$') { + state = 1; + } + } else if(state == 1) { + /* See if next char is '{' (dummy }) */ + if(in_char == '{') { /* add dummy } */ + state = 2; + name_len = 0; + out_ptr -= 2; + } else { + state = 0; + } + } else if(state == 2) { + /* fill name_buf ... dummy '{' */ + out_ptr--; + if(in_char == '}') { + name_buf[name_len] = 0; + + /* got token, now look it up */ + tmp_ptr = ""; + if(!strncmp("0", name_buf, 128)) { + /* Replace ${0} with g_argv0_path */ + tmp_ptr = &(g_argv0_path[0]); + } else { + tmp_ptr = getenv(name_buf); + if(tmp_ptr == 0) { + tmp_ptr = ""; + } + } + strncpy(out_ptr, tmp_ptr, maxlen); + out_ptr += strlen(tmp_ptr); + maxlen -= strlen(tmp_ptr); + state = 0; + } else { + name_buf[name_len++] = in_char; + } + } + if(in_char == 0) { + /* make sure its null terminated */ + *out_ptr++ = 0; + break; + } + } +} + +void +setup_kegs_file(char *outname, int maxlen, int ok_if_missing, + int can_create_file, const char **name_ptr) +{ + char local_path[256]; + struct stat stat_buf; + const char **path_ptr; + const char **cur_name_ptr, **save_path_ptr; + int ret; + + outname[0] = 0; + + path_ptr = &g_kegs_default_paths[0]; + + save_path_ptr = path_ptr; + while(*path_ptr) { + kegs_expand_path(&(local_path[0]), *path_ptr, 250); + cur_name_ptr = name_ptr; + while(*cur_name_ptr) { + strcpy(outname, &(local_path[0])); + strncat(outname, *cur_name_ptr, 255-strlen(outname)); + if(!ok_if_missing) { + printf("Trying '%s'\n", outname); + } + ret = stat(outname, &stat_buf); + if(ret == 0) { + /* got it! */ + return; + } + cur_name_ptr++; + } + path_ptr++; + } + + outname[0] = 0; + if(ok_if_missing > 0) { + return; + } + + /* couldn't find it, print out all the attempts */ + path_ptr = save_path_ptr; + fatal_printf("Could not find required file \"%s\" in any of these " + "directories:\n", *name_ptr); + while(*path_ptr) { + fatal_printf(" %s\n", *path_ptr++); + } + + if(can_create_file) { + // Ask user if it's OK to create the file + x_dialog_create_kegs_conf(*name_ptr); + can_create_file = 0; + + // But clear out the fatal_printfs first + clear_fatal_logs(); + setup_kegs_file(outname, maxlen, ok_if_missing, + can_create_file, name_ptr); + // It's one-level of recursion--it cannot loop since we + // clear can_create_file. + // If it returns, then there was succes and we should get out + return; + } else if(ok_if_missing) { + /* Just show an alert and return if ok_if_missing < 0 */ + x_show_alert(0, 0); + return; + } + + system("pwd"); + + my_exit(2); +} + +#endif + + +void +initialize_events() +{ + int i; + + for(i = 1; i < MAX_EVENTS; i++) { + g_sim65816.g_event_list[i-1].next = &g_sim65816.g_event_list[i]; + } + g_sim65816.g_event_free.next = &g_sim65816.g_event_list[0]; + g_sim65816.g_event_list[MAX_EVENTS-1].next = 0; + + g_sim65816.g_event_start.next = 0; + g_sim65816.g_event_start.dcycs = 0.0; + + add_event_entry(DCYCS_IN_16MS, EV_60HZ); +} + +void +check_for_one_event_type(int type) +{ + Event *ptr; + int count; + int depth; + + count = 0; + depth = 0; + ptr = g_sim65816.g_event_start.next; + while(ptr != 0) { + depth++; + if(ptr->type == type) { + count++; + if(count != 1) { + halt_printf("in check_for_1, type %d found at " + "depth: %d, count: %d, at %f\n", + type, depth, count, ptr->dcycs); + } + } + ptr = ptr->next; + } +} + + +void +add_event_entry(double dcycs, int type) +{ + Event *this_event; + Event *ptr, *prev_ptr; + int tmp_type; + int done; + + this_event = g_sim65816.g_event_free.next; + if(this_event == 0) { + halt_printf("Out of queue entries!\n"); + show_all_events(); + return; + } + g_sim65816.g_event_free.next = this_event->next; + + this_event->type = type; + + tmp_type = type & 0xff; + if((dcycs < 0.0) || (dcycs > (g_sim65816.g_cur_dcycs + 50*1000*1000.0)) || + ((dcycs < g_sim65816.g_cur_dcycs) && (tmp_type != EV_SCAN_INT))) { + halt_printf("add_event: dcycs: %f, type:%05x, cur_dcycs: %f!\n", + dcycs, type, g_sim65816.g_cur_dcycs); + dcycs = g_sim65816.g_cur_dcycs + 1000.0; + } + + ptr = g_sim65816.g_event_start.next; + if(ptr && (dcycs < ptr->dcycs)) { + /* create event before next expected event */ + /* do this by setting HALT_EVENT */ + set_halt(HALT_EVENT); + } + + prev_ptr = &g_sim65816.g_event_start; + ptr = g_sim65816.g_event_start.next; + + done = 0; + while(!done) { + if(ptr == 0) { + this_event->next = ptr; + this_event->dcycs = dcycs; + prev_ptr->next = this_event; + return; + } else { + if(ptr->dcycs < dcycs) { + /* step across this guy */ + prev_ptr = ptr; + ptr = ptr->next; + } else { + /* go in front of this guy */ + this_event->dcycs = dcycs; + this_event->next = ptr; + prev_ptr->next = this_event; + return; + } + } + } +} + + +double +remove_event_entry(int type) +{ + Event *ptr, *prev_ptr; + Event *next_ptr; + + ptr = g_sim65816.g_event_start.next; + prev_ptr = &g_sim65816.g_event_start; + + while(ptr != 0) { + if((ptr->type & 0xffff) == type) { + /* got it, remove it */ + next_ptr = ptr->next; + prev_ptr->next = next_ptr; + + /* Add ptr to free list */ + ptr->next = g_sim65816.g_event_free.next; + g_sim65816.g_event_free.next = ptr; + + return ptr->dcycs; + } + prev_ptr = ptr; + ptr = ptr->next; + } + + halt_printf("remove event_entry: %08x, but not found!\n", type); + if((type & 0xff) == EV_DOC_INT) { + printf("DOC, g_doc_saved_ctl = %02x\n", g_sound.g_doc_saved_ctl); + } +#ifdef HPUX + U_STACK_TRACE(); +#endif + show_all_events(); + + return 0.0; +} + +void +add_event_stop(double dcycs) +{ + add_event_entry(dcycs, EV_STOP); +} + +void +add_event_doc(double dcycs, int osc) +{ + if(dcycs < g_sim65816.g_cur_dcycs) { + dcycs = g_sim65816.g_cur_dcycs; +#if 0 + halt_printf("add_event_doc: dcycs: %f, cur_dcycs: %f\n", + dcycs, g_sim65816.g_cur_dcycs); +#endif + } + + add_event_entry(dcycs, EV_DOC_INT + (osc << 8)); +} + +void +add_event_scc(double dcycs, int type) +{ + if(dcycs < g_sim65816.g_cur_dcycs) { + dcycs = g_sim65816.g_cur_dcycs; + } + + add_event_entry(dcycs, EV_SCC + (type << 8)); +} + +void +add_event_vbl() +{ + double dcycs; + + dcycs = g_sim65816.g_last_vbl_dcycs + (DCYCS_IN_16MS * (192.0/262.0)); + add_event_entry(dcycs, EV_VBL_INT); +} + +void +add_event_vid_upd(int line) +{ + double dcycs; + + dcycs = g_sim65816.g_last_vbl_dcycs + ((DCYCS_IN_16MS * line) / 262.0); + add_event_entry(dcycs, EV_VID_UPD + (line << 8)); +} + +double +remove_event_doc(int osc) +{ + return remove_event_entry(EV_DOC_INT + (osc << 8)); +} + +double +remove_event_scc(int type) +{ + return remove_event_entry(EV_SCC + (type << 8)); +} + +void +show_all_events() +{ + Event *ptr; + int count; + double dcycs; + + count = 0; + ptr = g_sim65816.g_event_start.next; + while(ptr != 0) { + dcycs = ptr->dcycs; + printf("Event: %02x: type: %05x, dcycs: %f (%f)\n", + count, ptr->type, dcycs, dcycs - g_sim65816.g_cur_dcycs); + ptr = ptr->next; + count++; + } + +} + +void +show_pmhz() +{ + printf("Pmhz: %f, c036:%02x, limit: %d\n", + g_sim65816.g_projected_pmhz, g_moremem.g_c036_val_speed, g_sim65816.get_limit_speed()); + +} + +void +setup_zip_speeds() +{ + double frecip; + double fmhz; + int mult; + + mult = 16 - ((g_moremem.g_zipgs_reg_c05a >> 4) & 0xf); + // 16 = full speed, 1 = 1/16th speed + fmhz = (8.0 * mult) / 16.0; +#if 0 + if(mult == 16) { + /* increase full speed by 19% to make zipgs freq measuring */ + /* programs work correctly */ + fmhz = fmhz * 1.19; + } +#endif + frecip = 1.0 / fmhz; + g_sim65816.g_zip_pmhz = fmhz; + g_sim65816.g_recip_projected_pmhz_zip.plus_1 = frecip; + g_sim65816.g_recip_projected_pmhz_zip.plus_2 = 2.0 * frecip; + g_sim65816.g_recip_projected_pmhz_zip.plus_3 = 3.0 * frecip; + if(frecip >= 0.5) { + g_sim65816.g_recip_projected_pmhz_zip.plus_x_minus_1 = 1.01; + } else { + g_sim65816.g_recip_projected_pmhz_zip.plus_x_minus_1 = 1.01 - frecip; + } +} + + +void +run_prog_init() +{ + + Fplus *fplus_ptr; + Event *this_event; + Event *db1; + double dcycs; + double now_dtime; + double prev_dtime; + double prerun_fcycles; + double fspeed_mult; + double fcycles_stop; + word32 ret; + word32 zip_speed_0tof, zip_speed_0tof_new; + int zip_en, zip_follow_cps; + int type; + int motor_on; + int iwm_1; + int iwm_25; + int limit_speed; + int apple35_sel; + int fast, zip_speed, faster_than_28, unl_speed; + int this_type; + + fflush(stdout); + + g_sim65816.g_cur_sim_dtime = 0.0; + + g_sim65816.g_recip_projected_pmhz_slow.plus_1 = 1.0; + g_sim65816.g_recip_projected_pmhz_slow.plus_2 = 2.0; + g_sim65816.g_recip_projected_pmhz_slow.plus_3 = 3.0; + g_sim65816.g_recip_projected_pmhz_slow.plus_x_minus_1 = 0.9; + + g_sim65816.g_recip_projected_pmhz_fast.plus_1 = (1.0 / DEFAULT_GS_SPEED); + g_sim65816.g_recip_projected_pmhz_fast.plus_2 = (2.0 / DEFAULT_GS_SPEED); + g_sim65816.g_recip_projected_pmhz_fast.plus_3 = (3.0 / DEFAULT_GS_SPEED); + g_sim65816.g_recip_projected_pmhz_fast.plus_x_minus_1 = (1.98 - (1.0/DEFAULT_GS_SPEED)); + + zip_speed_0tof = g_moremem.g_zipgs_reg_c05a & 0xf0; + setup_zip_speeds(); + + if(g_sim65816.engine.fplus_ptr == 0) { + g_sim65816.g_recip_projected_pmhz_unl = g_sim65816.g_recip_projected_pmhz_slow; + } + + +} + +int +run_prog_loop() +{ + + Fplus *fplus_ptr; + Event *this_event; + Event *db1; + double dcycs; + double now_dtime; + double prev_dtime; + double prerun_fcycles; + double fspeed_mult; + double fcycles_stop; + word32 ret; + word32 zip_speed_0tof, zip_speed_0tof_new; + int zip_en, zip_follow_cps; + int type; + int motor_on; + int iwm_1; + int iwm_25; + int limit_speed; + int apple35_sel; + int fast, zip_speed, faster_than_28, unl_speed; + int this_type; + + int isnextframe=0; + zip_speed_0tof = g_moremem.g_zipgs_reg_c05a & 0xf0; + + while(!r_sim65816.should_emulator_terminate()) + { + + fflush(stdout); + + r_sim65816.check_update_emulator_runtime_config(); + +// OG Disabling control panel +#ifndef ACTIVEGS + extern int g_config_control_panel; + if(g_config_control_panel) { + config_control_panel(); + } +#endif + if(g_moremem.g_irq_pending && !(g_sim65816.engine.psr & 0x4)) { + irq_printf("taking an irq!\n"); + take_irq(0); + /* Interrupt! */ + } + + motor_on = g_iwm.g_iwm_motor_on; + limit_speed = g_sim65816.get_limit_speed(); + apple35_sel = g_moremem.g_c031_disk35 & 0x40; + zip_en = ((g_moremem.g_zipgs_reg_c05b & 0x10) == 0); + zip_follow_cps = ((g_moremem.g_zipgs_reg_c059 & 0x8) != 0); + zip_speed_0tof_new = g_moremem.g_zipgs_reg_c05a & 0xf0; + fast = (g_moremem.g_c036_val_speed & 0x80) || (zip_en && !zip_follow_cps); + // OG Make fast parameter public + g_sim65816.g_speed_fast = fast; + if(zip_speed_0tof_new != zip_speed_0tof) { + zip_speed_0tof = zip_speed_0tof_new; + setup_zip_speeds(); + } + + iwm_1 = motor_on && !apple35_sel && + (g_moremem.g_c036_val_speed & 0x4) && + (g_iwm.g_slow_525_emul_wr || !g_iwm.g_fast_disk_emul); + iwm_25 = (motor_on && apple35_sel) && !g_iwm.g_fast_disk_emul; + faster_than_28 = fast && (!iwm_1 && !iwm_25) && zip_en && + ((limit_speed == 0) || (limit_speed == 3)); + zip_speed = faster_than_28 && + ((zip_speed_0tof != 0) || (limit_speed == 3) || + (g_moremem.g_zipgs_unlock >= 4) ); + + // OG unlimited speed should not be affected by zip. + // unl_speed = faster_than_28 && !zip_speed; + unl_speed = (limit_speed == 0) && faster_than_28; + + if(unl_speed) { + /* use unlimited speed */ + fspeed_mult = g_sim65816.g_projected_pmhz; + fplus_ptr = &g_sim65816.g_recip_projected_pmhz_unl; + } else if(zip_speed) { + fspeed_mult = g_sim65816.g_zip_pmhz; + fplus_ptr = &g_sim65816.g_recip_projected_pmhz_zip; + } else if(fast && !iwm_1 && !(limit_speed == 1)) { + fspeed_mult = DEFAULT_GS_SPEED; + fplus_ptr = &g_sim65816.g_recip_projected_pmhz_fast; + } else { + /* else run slow */ + fspeed_mult = 1.0; + fplus_ptr = &g_sim65816.g_recip_projected_pmhz_slow; + } + + g_sim65816.engine.fplus_ptr = fplus_ptr; + + this_type = g_sim65816.g_event_start.next->type; + + prerun_fcycles = g_sim65816.g_cur_dcycs - g_sim65816.g_last_vbl_dcycs; + g_sim65816.engine.fcycles = prerun_fcycles; + fcycles_stop = (g_sim65816.g_event_start.next->dcycs - g_sim65816.g_last_vbl_dcycs) + + 0.001; + if(g_stepping) { + fcycles_stop = prerun_fcycles; + } + g_sim65816.g_fcycles_stop = fcycles_stop; + +#if 0 + printf("Enter g_sim65816.engine, fcycs: %f, stop: %f\n", + prerun_fcycles, fcycles_stop); + printf("g_sim65816.g_cur_dcycs: %f, last_vbl_dcyc: %f\n", g_cur_dcycs, + g_sim65816.g_last_vbl_dcycs); +#endif + + g_sim65816.g_num_enter_engine++; + prev_dtime = get_dtime(); + + ret = enter_engine(&g_sim65816.engine); + + now_dtime = get_dtime(); + + g_sim65816.g_cur_sim_dtime += (now_dtime - prev_dtime); + + dcycs = g_sim65816.g_last_vbl_dcycs + (double)(g_sim65816.engine.fcycles); + + g_sim65816.g_dadjcycs += (g_sim65816.engine.fcycles - prerun_fcycles) * + fspeed_mult; + +#if 0 + printf("...back, g_sim65816.engine.fcycles: %f, dcycs: %f\n", + (double)g_sim65816.engine.fcycles, dcycs); +#endif + + g_sim65816.g_cur_dcycs = dcycs; + + if(ret != 0) { + g_sim65816.g_engine_action++; + handle_action(ret); + } + + if(g_sim65816.halt_sim == HALT_EVENT) { + g_sim65816.g_engine_halt_event++; + /* if we needed to stop to check for interrupts, */ + /* clear halt */ + g_sim65816.halt_sim = 0; + } + +#if 0 + if(!g_sim65816.g_testing && run_cycles < -2000000) { + halt_printf("run_cycles: %d, cycles: %d\n", run_cycles, + cycles); + printf("this_type: %05x\n", this_type); + printf("duff_cycles: %d\n", duff_cycles); + printf("start.next->rel_time: %d, type: %05x\n", + g_sim65816.g_event_start.next->rel_time, + g_sim65816.g_event_start.next->type); + } +#endif + + this_event = g_sim65816.g_event_start.next; + while(dcycs >= this_event->dcycs) { + /* Pop this guy off of the queue */ + g_sim65816.g_event_start.next = this_event->next; + + type = this_event->type; + this_event->next = g_sim65816.g_event_free.next; + g_sim65816.g_event_free.next = this_event; + switch(type & 0xff) { + case EV_60HZ: + update_60hz(dcycs, now_dtime); + isnextframe=1; + break; + case EV_STOP: + printf("type: EV_STOP\n"); + printf("next: %p, dcycs: %f\n", + g_sim65816.g_event_start.next, dcycs); + db1 = g_sim65816.g_event_start.next; + halt_printf("next.dcycs: %f\n", db1->dcycs); + break; + case EV_SCAN_INT: + g_sim65816.g_engine_scan_int++; + irq_printf("type: scan int\n"); + do_scan_int(dcycs, type >> 8); + break; + case EV_DOC_INT: + g_sim65816.g_engine_doc_int++; + doc_handle_event(type >> 8, dcycs); + break; + case EV_SCC_ENABLE: + { + extern void scc_delayed_enable(); + scc_delayed_enable(); + } + break; + case EV_VBL_INT: + do_vbl_int(); + break; + case EV_SCC: + do_scc_event(type >> 8, dcycs); + break; + case EV_VID_UPD: + { + /* + extern double last_vid_update_dcys; // OG + last_vid_update_dcys = this_event->dcycs; + */ + video_update_event_line(type >> 8); + } + break; + /* + // OG Added DelayWriteC023 Event + case EV_DELAY_WRITE_C023: + { + extern int g_c023_val; + printf("clearing c023 for line(%d)\n",type>>8); + g_moremem.g_c023_val = g_c023_val & 0xDF & 0x7F; + } + break; + */ + default: + printf("Unknown event: %d!\n", type); + x_exit(3); + break; + } + + this_event = g_sim65816.g_event_start.next; + + } + + if(g_sim65816.g_event_start.next == 0) { + halt_printf("ERROR...run_prog, event_start.n=0!\n"); + } + +#if 0 + if(!g_sim65816.g_testing && g_sim65816.g_event_start.next->rel_time > 2000000) { + printf("Z:start.next->rel_time: %d, duff_cycles: %d\n", + g_sim65816.g_event_start.next->rel_time, duff_cycles); + halt_printf("Zrun_cycles:%d, cycles:%d\n", run_cycles, + cycles); + + show_all_events(); + } +#endif + + if (isnextframe) + { + isnextframe=0; + if (g_driver.x_handle_state!=NULL) + g_driver.x_handle_state(); + else + g_savestate.handleState(); + + return 1; + } + + if(g_sim65816.halt_sim != 0 && g_sim65816.halt_sim != HALT_EVENT) + { + break; + } + if(g_stepping) + { + break; + } + + } + + return 0; // quit +} + + + + + +void +run_prog_shut() +{ + + + + if(!g_sim65816.g_testing) { + printf("leaving run_prog, g_sim65816.halt_sim:%d\n", g_sim65816.halt_sim); + } + + x_auto_repeat_on(0); +} + + +void run_prog() +{ + run_prog_init(); + while(1) + { + int ret = run_prog_loop(); + if (!ret) + break; + } + + run_prog_shut(); +} + + +void +add_irq(word32 irq_mask) +{ + if(g_moremem.g_irq_pending & irq_mask) { + /* Already requested, just get out */ + return; + } + g_moremem.g_irq_pending |= irq_mask; + set_halt(HALT_EVENT); +} + +void +remove_irq(word32 irq_mask) +{ + g_moremem.g_irq_pending = g_moremem.g_irq_pending & (~irq_mask); +} + +void +take_irq(int is_it_brk) +{ + word32 new_kpc; + word32 va; + + irq_printf("Taking irq, at: %02x/%04x, psw: %02x, dcycs: %f\n", + g_sim65816.engine.kpc>>16, g_sim65816.engine.kpc & 0xffff, g_sim65816.engine.psr, + g_sim65816.g_cur_dcycs); + + g_sim65816.g_num_irq++; + if(g_sim65816.g_wait_pending) { + /* step over WAI instruction */ + g_sim65816.engine.kpc++; + g_sim65816.g_wait_pending = 0; + } + + if(g_sim65816.engine.psr & 0x100) { + /* Emulation */ + set_memory_c(g_sim65816.engine.stack, (g_sim65816.engine.kpc >> 8) & 0xff, 0); + g_sim65816.engine.stack = ((g_sim65816.engine.stack -1) & 0xff) + 0x100; + + set_memory_c(g_sim65816.engine.stack, g_sim65816.engine.kpc & 0xff, 0); + g_sim65816.engine.stack = ((g_sim65816.engine.stack -1) & 0xff) + 0x100; + + set_memory_c(g_sim65816.engine.stack, + (g_sim65816.engine.psr & 0xef)|(is_it_brk<<4),0); + /* Clear B bit in psr on stack */ + g_sim65816.engine.stack = ((g_sim65816.engine.stack -1) & 0xff) + 0x100; + + va = 0xfffffe; + if(g_moremem.g_c035_shadow_reg & 0x40) { + /* I/O shadowing off...use ram locs */ + va = 0x00fffe; + } + + } else { + /* native */ + set_memory_c(g_sim65816.engine.stack, (g_sim65816.engine.kpc >> 16) & 0xff, 0); + g_sim65816.engine.stack = ((g_sim65816.engine.stack -1) & 0xffff); + + set_memory_c(g_sim65816.engine.stack, (g_sim65816.engine.kpc >> 8) & 0xff, 0); + g_sim65816.engine.stack = ((g_sim65816.engine.stack -1) & 0xffff); + + set_memory_c(g_sim65816.engine.stack, g_sim65816.engine.kpc & 0xff, 0); + g_sim65816.engine.stack = ((g_sim65816.engine.stack -1) & 0xffff); + + set_memory_c(g_sim65816.engine.stack, g_sim65816.engine.psr & 0xff, 0); + g_sim65816.engine.stack = ((g_sim65816.engine.stack -1) & 0xffff); + + if(is_it_brk) { + /* break */ + va = 0xffffe6; + if(g_moremem.g_c035_shadow_reg & 0x40) { + va = 0xffe6; + } + } else { + /* irq */ + va = 0xffffee; + if(g_moremem.g_c035_shadow_reg & 0x40) { + va = 0xffee; + } + } + + } + + new_kpc = get_memory_c(va, 0); + new_kpc = new_kpc + (get_memory_c(va+1, 0) << 8); + + g_sim65816.engine.psr = ((g_sim65816.engine.psr & 0x1f3) | 0x4); + + g_sim65816.engine.kpc = new_kpc; + HALT_ON(HALT_ON_IRQ, "Halting on IRQ\n"); + +} + + + +void +show_dtime_array() +{ + double dfirst_time; + double first_total_cycs; + int i; + int pos; + + dfirst_time = 0.0; + first_total_cycs = 0.0; + + + for(i = 0; i < 60; i++) { + pos = (g_sim65816.g_vbl_index_count + i) % 60; + printf("%2d:%2d dt:%.5f adjc:%9.1f this_vbl:%.6f " + "exp:%.5f p:%2.2f ep:%2.2f\n", + i, pos, + g_sim65816.dtime_array[pos] - dfirst_time, + g_sim65816.g_dadjcycs_array[pos] - first_total_cycs, + g_sim65816.g_dtime_this_vbl_array[pos], + g_sim65816.g_dtime_exp_array[pos] - dfirst_time, + g_sim65816.g_dtime_pmhz_array[pos], + g_sim65816.g_dtime_eff_pmhz_array[pos]); + dfirst_time = g_sim65816.dtime_array[pos]; + first_total_cycs = g_sim65816.g_dadjcycs_array[pos]; + } +} + + + +void +update_60hz(double dcycs, double dtime_now) +{ + register word32 end_time; + char status_buf[1024]; + char sim_mhz_buf[128]; + char total_mhz_buf[128]; + const char *sim_mhz_ptr, *total_mhz_ptr; + const char *code_str1, *code_str2/*,*sp_str*/; + double eff_pmhz; + double planned_dcycs; + double predicted_pmhz; + double recip_predicted_pmhz; + double dtime_this_vbl_sim; + double dtime_diff_1sec; + double dratio; + double dtime_till_expected; + double dtime_diff; + double dtime_this_vbl; + double dadjcycs_this_vbl; + double dadj_cycles_1sec; + double dtmp1, dtmp2, dtmp3, dtmp4, dtmp5; + double dnatcycs_1sec; + int tmp; + int doit_3_persec; + int cur_vbl_index; + int prev_vbl_index; + + g_sim65816.g_vbl_count++; + + /* + if (g_driver.x_post_event) + g_driver.x_post_event("60hz"); +*/ + + /* NOTE: this event is defined to occur before line 0 */ + /* It's actually happening at the start of the border for line (-1) */ + /* All other timings should be adjusted for this */ + + irq_printf("vbl_60hz: vbl: %d, dcycs: %f, last_vbl_dcycs: %f\n", + g_sim65816.g_vbl_count, dcycs, g_sim65816.g_last_vbl_dcycs); + + planned_dcycs = DCYCS_IN_16MS; + + g_sim65816.g_last_vbl_dcycs = g_sim65816.g_last_vbl_dcycs + planned_dcycs; + + add_event_entry(g_sim65816.g_last_vbl_dcycs + planned_dcycs, EV_60HZ); + check_for_one_event_type(EV_60HZ); + + cur_vbl_index = g_sim65816.g_vbl_index_count; + + /* figure out dtime spent running SIM, not all the overhead */ + dtime_this_vbl_sim = g_sim65816.g_cur_sim_dtime; + g_sim65816.g_cur_sim_dtime = 0.0; + g_sim65816.g_sim_sum = g_sim65816.g_sim_sum - g_sim65816.sim_time[cur_vbl_index] + dtime_this_vbl_sim; + g_sim65816.sim_time[cur_vbl_index] = dtime_this_vbl_sim; + + dadj_cycles_1sec = g_sim65816.g_dadjcycs - g_sim65816.g_dadjcycs_array[cur_vbl_index]; + + /* dtime_diff_1sec is dtime total spent over the last 60 ticks */ + dtime_diff_1sec = dtime_now - g_sim65816.dtime_array[cur_vbl_index]; + + g_sim65816.dtime_array[cur_vbl_index] = dtime_now; + g_sim65816.g_dadjcycs_array[cur_vbl_index] = g_sim65816.g_dadjcycs; + + prev_vbl_index = cur_vbl_index; + cur_vbl_index = prev_vbl_index + 1; + if(cur_vbl_index >= 60) { + cur_vbl_index = 0; + } + g_sim65816.g_vbl_index_count = cur_vbl_index; + + GET_ITIMER(end_time); + g_sim65816.g_dnatcycs_1sec += (double)(end_time - g_sim65816.g_natcycs_lastvbl); + g_sim65816.g_natcycs_lastvbl = end_time; + + if(prev_vbl_index == 0) { + if(g_sim65816.g_sim_sum < (1.0/250.0)) { + sim_mhz_ptr = "???"; + g_sim65816.g_sim_mhz = 250.0; + } else { + g_sim65816.g_sim_mhz = (dadj_cycles_1sec / g_sim65816.g_sim_sum) / + (1000.0*1000.0); + sprintf(sim_mhz_buf, "%6.2f", g_sim65816.g_sim_mhz); + sim_mhz_ptr = sim_mhz_buf; + } + if(dtime_diff_1sec < (1.0/250.0)) { + total_mhz_ptr = "???"; + } else { + sprintf(total_mhz_buf, "%6.2f", + (dadj_cycles_1sec / dtime_diff_1sec) / + (1000000.0)); + total_mhz_ptr = total_mhz_buf; + } + + x_update_info(total_mhz_ptr); + + if(g_sim65816.g_video_line_update_interval == 0) { + if(g_sim65816.g_sim_mhz > 12.0) { + /* just set video line_ref_amt to 1 */ + g_sim65816.g_line_ref_amt = 1; + } else if(g_sim65816.g_line_ref_amt == 1 && g_sim65816.g_sim_mhz < 4.0) { + g_sim65816.g_line_ref_amt = 8; + } + } else { + g_sim65816.g_line_ref_amt = g_sim65816.g_video_line_update_interval; + } + + if(g_sim65816.g_dnatcycs_1sec < (1000.0*1000.0)) { + /* make it so large that all %'s become 0 */ + g_sim65816.g_dnatcycs_1sec = 800.0*1000.0*1000.0*1000.0; + } + dnatcycs_1sec = g_sim65816.g_dnatcycs_1sec / 100.0; /* eff mult by 100 */ + + dtmp2 = (double)(g_video.g_cycs_in_check_input) / dnatcycs_1sec; + dtmp3 = (double)(g_video.g_cycs_in_refresh_line) / dnatcycs_1sec; + dtmp4 = (double)(g_video.g_cycs_in_refresh_ximage) / dnatcycs_1sec; + sprintf(status_buf, "xfer:%08x, %5.1f ref_amt:%d " + "ch_in:%4.1f%% ref_l:%4.1f%% ref_x:%4.1f%%", + g_refresh_bytes_xfer, g_sim65816.g_dnatcycs_1sec/(1000.0*1000.0), + g_sim65816.g_line_ref_amt, dtmp2, dtmp3, dtmp4); + video_update_status_line(1, status_buf); + + sprintf(status_buf, "Ints:%3d I/O:%4dK BRK:%3d COP:%2d " + "Eng:%3d act:%3d hev:%3d esi:%3d edi:%3d", + g_sim65816.g_num_irq, g_sim65816.g_io_amt>>10, g_sim65816.g_num_brk, g_sim65816.g_num_cop, + g_sim65816.g_num_enter_engine, g_sim65816.g_engine_action, + g_sim65816.g_engine_halt_event, g_sim65816.g_engine_scan_int, + g_sim65816.g_engine_doc_int); + video_update_status_line(2, status_buf); + + dtmp1 = (double)(g_cycs_in_sound1) / dnatcycs_1sec; + dtmp2 = (double)(g_cycs_in_sound2) / dnatcycs_1sec; + dtmp3 = (double)(g_cycs_in_sound3) / dnatcycs_1sec; + dtmp4 = (double)(g_cycs_in_start_sound) / dnatcycs_1sec; + dtmp5 = (double)(g_cycs_in_est_sound) / dnatcycs_1sec; + sprintf(status_buf, "snd1:%4.1f%%, 2:%4.1f%%, " + "3:%4.1f%%, st:%4.1f%% est:%4.1f%% %4.2f", + dtmp1, dtmp2, dtmp3, dtmp4, dtmp5, g_fvoices); + video_update_status_line(3, status_buf); + + code_str1 = ""; + code_str2 = ""; + if(g_sim65816.g_code_yellow) { + code_str1 = "Code: Yellow"; + code_str2 = "Emulated system state suspect, save work"; + } + if(g_sim65816.g_code_red) { + code_str1 = "Code: RED"; + code_str2 = "Emulated system state probably corrupt"; + } + sprintf(status_buf, "snd_plays:%4d, doc_ev:%4d, st_snd:%4d " + "snd_parms: %4d %s", + g_num_snd_plays, g_num_doc_events, g_num_start_sounds, + g_num_recalc_snd_parms, code_str1); + video_update_status_line(4, status_buf); + + draw_iwm_status(5, status_buf); + + sprintf(status_buf, "KEGS v%-6s BUILD v%s " + "Press F4 for Config Menu %s", + g_kegs_version_str, g_kegs_version_build,code_str2); + video_update_status_line(6, status_buf); + + g_video.g_status_refresh_needed = 1; + + g_sim65816.g_num_irq = 0; + g_sim65816.g_num_brk = 0; + g_sim65816.g_num_cop = 0; + g_sim65816.g_num_enter_engine = 0; + g_sim65816.g_io_amt = 0; + g_sim65816.g_engine_action = 0; + g_sim65816.g_engine_halt_event = 0; + g_sim65816.g_engine_scan_int = 0; + g_sim65816.g_engine_doc_int = 0; + + g_video.g_cycs_in_40col = 0; + g_video.g_cycs_in_xredraw = 0; + g_video.g_cycs_in_check_input = 0; + g_video.g_cycs_in_refresh_line = 0; + g_video.g_cycs_in_refresh_ximage = 0; + g_iwm.g_cycs_in_io_read = 0; + g_cycs_in_sound1 = 0; + g_cycs_in_sound2 = 0; + g_cycs_in_sound3 = 0; + g_cycs_in_sound4 = 0; + g_cycs_in_start_sound = 0; + g_cycs_in_est_sound = 0; + g_sim65816.g_dnatcycs_1sec = 0.0; + g_refresh_bytes_xfer = 0; + + g_num_snd_plays = 0; + g_num_doc_events = 0; + g_num_start_sounds = 0; + g_num_scan_osc = 0; + g_num_recalc_snd_parms = 0; + + g_fvoices = (float)0.0; + } + + dtime_this_vbl = dtime_now - g_sim65816.g_dtime_last_vbl; + if(dtime_this_vbl < 0.001) { + dtime_this_vbl = 0.001; + } + + g_sim65816.g_dtime_last_vbl = dtime_now; + + dadjcycs_this_vbl = g_sim65816.g_dadjcycs - g_sim65816.g_last_vbl_dadjcycs; + g_sim65816.g_last_vbl_dadjcycs = g_sim65816.g_dadjcycs; + + g_sim65816.g_dtime_expected += (1.0/60.0); + + eff_pmhz = ((dadjcycs_this_vbl) / (dtime_this_vbl)) / + DCYCS_1_MHZ; + + /* using eff_pmhz, predict how many cycles can be run by */ + /* g_sim65816.g_dtime_expected */ + + dtime_till_expected = g_sim65816.g_dtime_expected - dtime_now; + + dratio = 60.0 * dtime_till_expected; + + predicted_pmhz = eff_pmhz * dratio; + + if(! (predicted_pmhz < (1.4 * g_sim65816.g_projected_pmhz))) { + predicted_pmhz = 1.4 * g_sim65816.g_projected_pmhz; + } + + if(! (predicted_pmhz > (0.7 * g_sim65816.g_projected_pmhz))) { + predicted_pmhz = 0.7 * g_sim65816.g_projected_pmhz; + } + + if(!(predicted_pmhz >= 1.0)) { + irq_printf("predicted: %f, setting to 1.0\n", predicted_pmhz); + predicted_pmhz = 1.0; + } + + if(!(predicted_pmhz < 250.0)) { + irq_printf("predicted: %f, setting to 250.0\n", predicted_pmhz); + predicted_pmhz = 250.0; + } + + recip_predicted_pmhz = 1.0/predicted_pmhz; + g_sim65816.g_projected_pmhz = predicted_pmhz; + + g_sim65816.g_recip_projected_pmhz_unl.plus_1 = 1.0*recip_predicted_pmhz; + g_sim65816.g_recip_projected_pmhz_unl.plus_2 = 2.0*recip_predicted_pmhz; + g_sim65816.g_recip_projected_pmhz_unl.plus_3 = 3.0*recip_predicted_pmhz; + g_sim65816.g_recip_projected_pmhz_unl.plus_x_minus_1 = 1.01 - recip_predicted_pmhz; + + + if(dtime_till_expected < -0.125) { + /* If we were way off, get back on track */ + /* this happens because our sim took much longer than */ + /* expected, so we're going to skip some VBL */ + irq_printf("adj1: dtexp:%f, dt_new:%f\n", + g_sim65816.g_dtime_expected, dtime_now); + + dtime_diff = -dtime_till_expected; + + irq_printf("dtime_till_exp: %f, dtime_diff: %f, dcycs: %f\n", + dtime_till_expected, dtime_diff, dcycs); + + g_sim65816.g_dtime_expected += dtime_diff; + } + + double w = dtime_till_expected - (1.0/60.0); // OG was 3/60 !!! + +#ifdef USE_RASTER + x_wait_for_last_refresh(w); +#else + + + if(w>0.0) + { + /* we're running fast, usleep */ + double s = get_dtime(); + if (w>0.01) + micro_sleep(w); + // sur windows le micro_sleep est lgrement en retard! + while( get_dtime() < s+w); +#ifdef ENABLE_GRAPH + /* + double d = get_dtime() - s; + double d2 = d - w; + g_graph.add_graph(3,(float)d,g_sim65816.g_vbl_count); + g_graph.add_graph(2,(float)w,g_sim65816.g_vbl_count); + */ +#endif + } + +#endif + + CHANGE_BORDER(0,0xFF0000); + CHANGE_BORDER(2,0xFF0000); + + g_sim65816.g_dtime_this_vbl_array[prev_vbl_index] = dtime_this_vbl; + g_sim65816.g_dtime_exp_array[prev_vbl_index] = g_sim65816.g_dtime_expected; + g_sim65816.g_dtime_pmhz_array[prev_vbl_index] = predicted_pmhz; + g_sim65816.g_dtime_eff_pmhz_array[prev_vbl_index] = eff_pmhz; + + + if(g_moremem.g_c041_val & C041_EN_VBL_INTS) { + add_event_vbl(); + } + + g_sim65816.g_25sec_cntr++; + if(g_sim65816.g_25sec_cntr >= 16) { + g_sim65816.g_25sec_cntr = 0; + if(g_moremem.g_c041_val & C041_EN_25SEC_INTS) { + add_irq(IRQ_PENDING_C046_25SEC); + g_moremem.g_c046_val |= 0x10; + irq_printf("Setting c046 .25 sec int, g_irq_pend:%d\n", + g_moremem.g_irq_pending); + } + } + + g_sim65816.g_1sec_cntr++; + if(g_sim65816.g_1sec_cntr >= 60) { + g_sim65816.g_1sec_cntr = 0; + tmp = g_moremem.g_c023_val; + tmp |= 0x40; /* set 1sec int */ + if(tmp & 0x04) { + tmp |= 0x80; + add_irq(IRQ_PENDING_C023_1SEC); + irq_printf("Setting c023 to %02x irq_pend: %d\n", + tmp, g_moremem.g_irq_pending); + } + irq_printf("1s irq: %X new: %X\n",g_moremem.g_c023_val,tmp); + g_moremem.g_c023_val = tmp; + } + + /* + { + extern int g_delayed_c023_val; + if (g_delayed_c023_val) + { + g_moremem.g_c023_val = g_c023_val & 0xDF; + g_delayed_c023_val = 0; + printf("clearing c023 val\n"); + } + } + */ + + if(!g_sim65816.g_scan_int_events) { + check_scan_line_int(dcycs, 0); + } + + doit_3_persec = 0; + if(g_sim65816.g_config_iwm_vbl_count > 0) { + g_sim65816.g_config_iwm_vbl_count--; + } else { + g_sim65816.g_config_iwm_vbl_count = 20; + doit_3_persec = 1; + } + + iwm_vbl_update(doit_3_persec); + +// OG Disabling config update +#ifndef ACTIVEGS + config_vbl_update(doit_3_persec); +#else +// OG Added disk update + { + extern void checkImages(); + checkImages(); + } +#endif + +/* + +#if 0 //def USE_RASTER + + static double lastraster = 0; + double curraster = get_dtime(); + double target = lastraster+1/60.0; + double wait = target - curraster; + + // attend le rendu de la frame prcdente (ou la synchro) + + x_wait_for_vbl(); + + curraster = get_dtime(); + + double delay = curraster - lastraster; + double frame = 1/delay; + +#ifdef ENABLE_GRAPH +// g_graph.add_graph(2,frame,g_sim65816.g_vbl_count); +#endif + lastraster = curraster; +#endif + */ + g_video_offscreen_has_been_modified = 0; + + + CHANGE_BORDER(0,0xFF00FF); + CHANGE_BORDER(2,0xFF00FF); + + video_update(); + + DRAW_BORDER(); + + CHANGE_BORDER(0,0); + CHANGE_BORDER(2,0); + +#ifdef USE_RASTER + x_wait_for_vbl(); +#endif + refresh_video(0); + + CHANGE_BORDER(0,0x888888); + CHANGE_BORDER(2,0x888888); + sound_update(dcycs); + clock_update(); + scc_update(dcycs); + paddle_update_buttons(); + + CHANGE_BORDER(0,0); + CHANGE_BORDER(2,0xFF0000); + +} + +void +do_vbl_int() +{ + if(g_moremem.g_c041_val & C041_EN_VBL_INTS) { + g_moremem.g_c046_val |= 0x08; + add_irq(IRQ_PENDING_C046_VBL); + irq_printf("Setting c046 vbl_int_status to 1, irq_pend: %d\n", + g_moremem.g_irq_pending); + } +} + + +void +do_scan_int(double dcycs, int line) +{ + int c023_val; + g_sim65816.g_scan_int_events = 0; + + c023_val = g_moremem.g_c023_val; + if(c023_val & 0x20) { + halt_printf("c023 scan_int and another on line %03x\n", line); + } + + /* make sure scan int is still enabled for this line */ + if((g_slow_memory_ptr[0x19d00 + line] & 0x40) && + (g_video.g_cur_a2_stat & ALL_STAT_SUPER_HIRES)) { + /* valid interrupt, do it */ + c023_val |= 0xa0; /* vgc_int and scan_int */ + if(c023_val & 0x02) { + add_irq(IRQ_PENDING_C023_SCAN); + irq_printf("Setting c023 to %02x, irq_pend: %d\n", c023_val, g_moremem.g_irq_pending); + } + + g_moremem.g_c023_val = c023_val; + HALT_ON(HALT_ON_SCAN_INT, "In do_scan_int\n"); + } else { + /* scan int bit cleared on scan line control byte */ + /* look for next line, if any */ + check_scan_line_int(dcycs, line+1); + } +} + +void +check_scan_line_int(double dcycs, int cur_video_line) +{ + int delay; + int start; + int line; + int i; + /* Called during VBL interrupt phase */ + + if(!(g_video.g_cur_a2_stat & ALL_STAT_SUPER_HIRES)) { + return; + } + + if(g_moremem.g_c023_val & 0x20) { + /* don't check for any more */ + return; + } + + start = cur_video_line; + if(start < 0) { + halt_printf("check_scan_line_int: cur_video_line: %d\n", + cur_video_line); + start = 0; + } + + for(line = start; line < 200; line++) { + i = line; + + if(i < 0 || i >= 200) { + halt_printf("check_new_scan_int:i:%d, line:%d, st:%d\n", + i, line, start); + i = 0; + } + if(g_slow_memory_ptr[0x19d00+i] & 0x40) { + //printf("Adding scan_int for line %d\n", i); + delay = (int)( (DCYCS_IN_16MS/262.0) * ((double)line) ); + add_event_entry(g_sim65816.g_last_vbl_dcycs + delay, EV_SCAN_INT + + (line << 8)); + //add_event_entry(g_sim65816.g_last_vbl_dcycs + delay + (DCYCS_IN_16MS/262.0)*4/5 , EV_DELAY_WRITE_C023+ (line << 8)); + g_sim65816.g_scan_int_events = 1; + check_for_one_event_type(EV_SCAN_INT); + break; + } + } +} + +void +check_for_new_scan_int(double dcycs) +{ + int cur_video_line; + + cur_video_line = get_lines_since_vbl(dcycs) >> 8; + + check_scan_line_int(dcycs, cur_video_line); +} + +void +init_reg() +{ + g_sim65816.engine.acc = 0; + g_sim65816.engine.xreg = 0; + g_sim65816.engine.yreg = 0; + g_sim65816.engine.stack = 0x1ff; + g_sim65816.engine.direct = 0; + g_sim65816.engine.psr = 0x134; + g_sim65816.engine.fplus_ptr = 0; + +} + + +void +handle_action(word32 ret) +{ + int type; + + type = EXTRU(ret,3,4); + switch(type) { + case RET_BREAK: + do_break(ret & 0xff); + break; + case RET_COP: + do_cop(ret & 0xff); + break; +#if 0 + case RET_MVN: + do_mvn(ret & 0xffff); + break; +#endif + case RET_C700: + do_c700(ret); + break; + case RET_C70A: + do_c70a(ret); + break; + case RET_C70D: + do_c70d(ret); + break; +#if 0 + case RET_ADD_DEC_8: + do_add_dec_8(ret); + break; + case RET_ADD_DEC_16: + do_add_dec_16(ret); + break; +#endif + case RET_IRQ: + irq_printf("Special fast IRQ response. irq_pending: %x\n", + g_moremem.g_irq_pending); + break; + case RET_WDM: + do_wdm(ret & 0xff); + break; + case RET_STP: + do_stp(); + break; + default: + halt_printf("Unknown special action: %08x!\n", ret); + break; + } + +} + +#if 0 +void +do_add_dec_8(word32 ret) +{ + halt_printf("do_add_dec_8 called, ret: %08x\n", ret); +} + +void +do_add_dec_16(word32 ret) +{ + halt_printf("do_add_dec_16 called, ret: %08x\n", ret); +} +#endif + +void +do_break(word32 ret) +{ + if(!g_sim65816.g_testing) { + printf("I think I got a break, second byte: %02x!\n", ret); + printf("kpc: %06x\n", g_sim65816.engine.kpc); + } + + halt_printf("do_break, kpc: %06x\n", g_sim65816.engine.kpc); + g_sim65816.enter_debug = 1; +} + +void +do_cop(word32 ret) +{ + halt_printf("COP instr %02x!\n", ret); + fflush(stdout); +} + +#if 0 +void +do_mvn(word32 banks) +{ + int src_bank, dest_bank; + int dest, src; + int num; + int i; + int val; + + halt_printf("In MVN...just quitting\n"); + return; + printf("MVN instr with %04x, cycles: %08x\n", banks, g_sim65816.engine.cycles); + src_bank = banks >> 8; + dest_bank = banks & 0xff; + printf("psr: %03x\n", g_sim65816.engine.psr); + if((g_sim65816.engine.psr & 0x30) != 0) { + halt_printf("MVN in non-native mode unimplemented!\n"); + } + + dest = dest_bank << 16 | g_sim65816.engine.yreg; + src = src_bank << 16 | g_sim65816.engine.xreg; + num = g_sim65816.engine.acc; + printf("Moving %08x+1 bytes from %08x to %08x\n", num, src, dest); + + for(i = 0; i <= num; i++) { + val = get_memory_c(src, 0); + set_memory_c(dest, val, 0); + src = (src_bank << 16) | ((src + 1) & 0xffff); + dest = (dest_bank << 16) | ((dest + 1) & 0xffff); + } + g_sim65816.engine.dbank = dest_bank; + g_sim65816.engine.acc = 0xffff; + g_sim65816.engine.yreg = dest & 0xffff; + g_sim65816.engine.xreg = src & 0xffff; + g_sim65816.engine.kpc = (engine.kpc + 3); + printf("move done. db: %02x, acc: %04x, y: %04x, x: %04x, num: %08x\n", + g_sim65816.engine.dbank, engine.acc, engine.yreg, engine.xreg, num); +} +#endif + +void +do_wdm(word32 arg) +{ + switch(arg) { + case 0x8d: /* Bouncin Ferno does WDM 8d */ + break; + default: + halt_printf("do_wdm: %02x!\n", arg); + break; + } +} + +void +do_wai() +{ + halt_printf("do_wai!\n"); +} + +void +do_stp() +{ + if(!g_sim65816.g_stp_pending) { + g_sim65816.g_stp_pending = 1; + halt_printf("Hit STP instruction at: %06x, press RESET to " + "continue\n", g_sim65816.engine.kpc); + } +} + +void +size_fail(int val, word32 v1, word32 v2) +{ + halt_printf("Size failure, val: %08x, %08x %08x\n", val, v1, v2); +} + +int +fatal_printf(const char *fmt, ...) +{ + va_list ap; + int ret; + + va_start(ap, fmt); + + if(g_fatal_log < 0) { + g_fatal_log = 0; + } + ret = kegs_vprintf(fmt, ap); + va_end(ap); + + return ret; +} + +int +kegs_vprintf(const char *fmt, va_list ap) +{ + char *bufptr, *buf2ptr; + int len; + int ret; + + bufptr = (char*)malloc(4096); // OG Added Cast + ret = vsnprintf(bufptr, 4090, fmt, ap); + + // OG Display warning + printf("Warning:%s",bufptr); + + len = strlen(bufptr); + if(g_fatal_log >= 0 && g_fatal_log < MAX_FATAL_LOGS) { + buf2ptr = (char*)malloc(len+1); // OG Added Cast + memcpy(buf2ptr, bufptr, len+1); + g_fatal_log_strs[g_fatal_log++] = buf2ptr; + } + must_write(1, bufptr, len); + if(g_debug_file_fd >= 0) { + must_write(g_debug_file_fd, bufptr, len); + } + free(bufptr); + + return ret; +} + +void +must_write(int fd, char *bufptr, int len) +{ + int ret; + + while(len > 0) { + ret = write(fd, bufptr, len); + if(ret >= 0) { + len -= ret; + bufptr += ret; + } else if(errno != EAGAIN && errno != EINTR) { + return; // just get out + } + } +} + +void +clear_fatal_logs() +{ + int i; + + for(i = 0; i < g_fatal_log; i++) { + free(g_fatal_log_strs[i]); + g_fatal_log_strs[i] = 0; + } + g_fatal_log = -1; +} + + char * +kegs_malloc_str(const char *in_str) +{ + char *str; + size_t len = strlen(in_str) + 1; + str = (char*)malloc(len); // OG Added cast + memcpy(str, in_str, len); + + return str; +} + +enum speedenum s_sim65816:: set_limit_speed(enum speedenum _speed) +{ + extern unsigned char transwarpcode[][32]; + + if ( (_speed<0) || (_speed>=SPEED_ENUMSIZE) ) + _speed = SPEED_GS; + + if (_speed == SPEED_ZIP || _speed ==SPEED_UNLIMITED) + { + // enable transwarp hardware + transwarpcode[0][0]='T'; + } + else + { + // disable transwarp hardware + transwarpcode[0][0]=0; + } + + x_refresh_panel(PANEL_SPEED|PANEL_RUNTIME); + printf("speed:%d\n",_speed); + g_limit_speed = _speed; + return _speed; +} + +void serialize_engine(Engine_reg& engine) +{ + int fpp = -1; + if (engine.fplus_ptr == &g_sim65816.g_recip_projected_pmhz_unl) + fpp = 0; + else + if (engine.fplus_ptr == &g_sim65816.g_recip_projected_pmhz_zip) + fpp = 1; + else + if (engine.fplus_ptr == &g_sim65816.g_recip_projected_pmhz_fast) + fpp = 2; + else +// if (engine.fplus_ptr == &g_sim65816.g_recip_projected_pmhz_slow) + fpp = 3; + engine.fplus_ptr = (Fplus*)fpp; +} + +void unserialize_engine(Engine_reg& engine) +{ + intptr_t fpp = (intptr_t)engine.fplus_ptr; + if (fpp==0) + engine.fplus_ptr = &g_sim65816.g_recip_projected_pmhz_unl; + else + if (fpp==1) + engine.fplus_ptr = &g_sim65816.g_recip_projected_pmhz_zip; + else + if (fpp==2) + engine.fplus_ptr =&g_sim65816.g_recip_projected_pmhz_fast; + else +// if (fpp ==3) + engine.fplus_ptr = &g_sim65816.g_recip_projected_pmhz_slow; +} + diff --git a/kegs/Src/sim65816.h b/kegs/Src/sim65816.h new file mode 100644 index 0000000..46dc32d --- /dev/null +++ b/kegs/Src/sim65816.h @@ -0,0 +1,392 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + +#define START_DCYCS (0.0) +#define MAX_EVENTS 64 + +extern byte *g_memory_ptr; +extern byte *g_slow_memory_ptr; + + +enum { + OFFSCREEN_AVAILABLE=256, + NO_INITIALIZED = 0, + INITIALIZING = 1, + RUNNING = 2 + OFFSCREEN_AVAILABLE, +// IN_REWIND = 3 + OFFSCREEN_AVAILABLE, + IN_PAUSE = 4 + OFFSCREEN_AVAILABLE, + PAUSE_REQUESTED = 5 + OFFSCREEN_AVAILABLE, + SHUTTING_DOWN = 5 +}; + +typedef enum _colormode +{ + COLORMODE_AUTO = 100, + COLORMODE_BW, + COLORMODE_AMBER, + COLORMODE_GREEN, + COLORMODE_MONO +} colormodeenum; + +typedef enum _videofx +{ + VIDEOFX_LCD = 200, + VIDEOFX_CRT +} videofxenum; + + +enum speedenum +{ + SPEED_UNLIMITED = 0, + SPEED_1MHZ = 1, + SPEED_GS = 2, // 2.8 Mhz + SPEED_ZIP = 3, // 8 Mhz Zip speed + SPEED_ENUMSIZE=4, + SPEED_AUTO = 4, +}; + +class run_sim65816 +{ + int g_savestate_enable; + +public: + int emulator_state; + int quit_requested; + int restart_requested; + colormodeenum color_mode; + videofxenum video_fx; + + int g_user_halt_bad ; + int g_halt_on_bad_read ; + int g_ignore_bad_acc; + int g_ignore_halts ; + + Page_info page_info_rd_wr[2*65536 + PAGE_INFO_PAD_SIZE]; + + run_sim65816() + { + memset(this,0,sizeof(*this)); + emulator_state = NO_INITIALIZED; + color_mode = COLORMODE_AUTO; + video_fx = VIDEOFX_LCD; + g_ignore_bad_acc = 1; + g_ignore_halts = 1; + + } + + // Emulator COnfig + + + videofxenum get_video_fx() { return video_fx; } + void set_video_fx(videofxenum _vfx); + colormodeenum get_color_mode() { return color_mode; } + void set_color_mode(colormodeenum _cm); + int is_emulator_initialized(); + int emulator_config_requested; + void request_update_emulator_runtime_config(); + void check_update_emulator_runtime_config(); + + // Emulator State + + void set_rewind_enable(int _onoff); + int get_rewind_enable() { return g_savestate_enable; }; + + void set_state(int _newstate); + int get_state(); + void quit_emulator() ; + void restart_emulator(); + void reset_quit(); + void reset_restart(); + + int pause(); + int resume(); + + // Emulator Info + + int is_emulator_in_640mode(); + int is_emulator_offscreen_available(); + int should_emulator_terminate(); + +}; + +extern run_sim65816 r_sim65816; +extern void unserialize_engine(Engine_reg& engine); +extern void serialize_engine(Engine_reg& engine); + +#ifdef _WIN32 +#pragma pack(push,PRAGMA_PACK_SIZE) +#endif +class s_sim65816 : public serialized +{ + +public: + enum speedenum g_limit_speed ; + + int get_limit_speed() { return (int)g_limit_speed; } + enum speedenum set_limit_speed(enum speedenum _speed); + + int g_speed_fast ; // OG Expose fast parameter + Engine_reg engine; + _ALIGNED(8) double g_fcycles_stop; + volatile int halt_sim ; + int enter_debug; + int g_rom_version ; + int g_code_red ; + int g_code_yellow ; + int g_use_alib ; + int g_raw_serial ; + int g_iw2_emul ; + int g_serial_out_masking ; + int g_serial_modem[2]; + + int g_config_iwm_vbl_count; + + _ALIGNED(8) double g_last_vbl_dcycs ; + _ALIGNED(8) double g_cur_dcycs ; + + _ALIGNED(8) double g_last_vbl_dadjcycs ; + _ALIGNED(8) double g_dadjcycs; + + int g_wait_pending ; + int g_stp_pending ; + + int g_num_irq ; + int g_num_brk ; + int g_num_cop ; + int g_num_enter_engine ; + int g_io_amt ; + int g_engine_action ; + int g_engine_halt_event; + int g_engine_scan_int ; + int g_engine_doc_int ; + + int g_testing ; + int g_testing_enabled ; + + word32 stop_run_at; + + int g_25sec_cntr ; + int g_1sec_cntr ; + + _ALIGNED(8) double g_dnatcycs_1sec ; + word32 g_natcycs_lastvbl ; + +// int Verbose ; + int Halt_on ; + + word32 g_mem_size_base ; + word32 g_mem_size_exp ; + word32 g_mem_size_total ; + + + word32 g_vbl_count; + word32 g_vbl_count_since_lastvblank; + int g_fixed_vblank; + + void set_fixed_vblank(int _nbframe,speedenum _defaultspeed); + + int g_vbl_index_count; + _ALIGNED(8) double dtime_array[60]; + _ALIGNED(8) double g_dadjcycs_array[60]; + _ALIGNED(8) double g_dtime_diff3_array[60]; + _ALIGNED(8) double g_dtime_this_vbl_array[60]; + _ALIGNED(8) double g_dtime_exp_array[60]; + _ALIGNED(8) double g_dtime_pmhz_array[60]; + _ALIGNED(8) double g_dtime_eff_pmhz_array[60]; + _ALIGNED(8) double sim_time[60]; + _ALIGNED(8) double g_sim_sum ; + + _ALIGNED(8) double g_cur_sim_dtime ; + _ALIGNED(8) double g_projected_pmhz; + _ALIGNED(8) double g_zip_pmhz ; + _ALIGNED(8) double g_sim_mhz ; + int g_line_ref_amt ; + int g_video_line_update_interval ; + + Fplus g_recip_projected_pmhz_slow; + Fplus g_recip_projected_pmhz_fast; + Fplus g_recip_projected_pmhz_zip; + Fplus g_recip_projected_pmhz_unl; + + _ALIGNED(8) double g_dtime_last_vbl ; + _ALIGNED(8) double g_dtime_expected ; + + int g_scan_int_events ; + + char g_display_env[512]; + int g_force_depth; + + Event g_event_list[MAX_EVENTS]; + Event g_event_free; + Event g_event_start; + +// Page_info page_info_rd_wr[2*65536 + PAGE_INFO_PAD_SIZE]; + + // OG unsupported 6502 opcodes are turned into NOP + int g_6502_emulation ; + int g_use_apple2e_rom ; + int g_enable_disk_sound; + + + s_sim65816() + { + INIT_SERIALIZED(); + + g_rom_version = -1; + // g_ignore_bad_acc = 1; + // g_ignore_halts = 1; + g_raw_serial = 1; + g_serial_modem[1] = 1; + + g_last_vbl_dcycs = START_DCYCS; + g_cur_dcycs = START_DCYCS; + + g_mem_size_base = 256*1024; /* size of motherboard memory */ + g_mem_size_exp = 2*1024*1024; /* size of expansion RAM card */ + g_mem_size_total = 256*1024; /* Total contiguous RAM from 0 */ + + g_projected_pmhz = 1.0; + g_zip_pmhz = 8.0; + g_sim_mhz = 100.0; + g_line_ref_amt = 1; + + g_dtime_expected = (1.0/60.0); + + g_force_depth = -1; + g_limit_speed = SPEED_GS; + + + } + #define RECALC_BASE_EVENT_PTR(X,BASE) \ + if (X) \ + { \ + X = (Event*)( (intptr_t)X + (intptr_t)BASE ) ; \ + } + + void in(serialize* _s) + { + extern byte* g_dummy_memory1_ptr; + + byte* ptr = (byte*)_s->data; + int ssize = *(int*)ptr; + if (ssize!=sizeof(*this)) + ALIGNMENT_ERROR("sim65816",ssize,sizeof(*this)); + ptr+=4; + memcpy(this,_s->data,sizeof(*this)); + + unserialize_engine(engine); + ptr += sizeof(*this); + + + memcpy(g_slow_memory_ptr,ptr,128*1024); + ptr+=128*1024; + memcpy(g_dummy_memory1_ptr,ptr,256); + ptr+=256; + memcpy(g_memory_ptr,ptr,g_mem_size_total); + + + intptr_t base = (intptr_t)g_event_list +1; // pour ne pas commencer zero! + for(int i = 1; i < MAX_EVENTS; i++) + { + RECALC_BASE_EVENT_PTR(g_event_list[i-1].next,+base); + } + RECALC_BASE_EVENT_PTR(g_event_free.next,+base); + RECALC_BASE_EVENT_PTR(g_event_start.next,+base); + + g_dtime_last_vbl += get_dtime(); + g_dtime_expected += get_dtime(); + + + } + + + int out(serialize* _s,int _fastalloc) + { +extern byte* g_dummy_memory1_ptr; + + int ssize = sizeof(*this); + int size = sizeof(ssize); + size += ssize; + size += 128*1024; // slow memory + size += 256; // dummy + size += g_mem_size_total; + + + _s->size = size; + _s->fastalloc = _fastalloc; + _s->data = (void*)x_malloc(size,_fastalloc); + + intptr_t base = (intptr_t)g_event_list +1; // pour ne pas commencer zero! + + // reinitialize les event avant de les copier + for(int i = 1; i < MAX_EVENTS; i++) + { + RECALC_BASE_EVENT_PTR(g_event_list[i-1].next,-base); + } + RECALC_BASE_EVENT_PTR(g_event_free.next,-base); + RECALC_BASE_EVENT_PTR(g_event_start.next,-base); + + serialize_engine(engine); + double old_g_dtime_last_vbl = g_dtime_last_vbl; + g_dtime_last_vbl -= get_dtime(); + double old_g_dtime_expected = g_dtime_expected; + g_dtime_expected -= get_dtime(); + + byte* ptr = (byte*)_s->data; + memcpy(ptr,&ssize,sizeof(ssize)); + ptr+=sizeof(ssize); + memcpy(_s->data,this,sizeof(*this)); + ptr += sizeof(*this); + + unserialize_engine(engine); + g_dtime_last_vbl = old_g_dtime_last_vbl; + g_dtime_expected = old_g_dtime_expected; + + + memcpy(ptr,g_slow_memory_ptr,128*1024); + ptr+= 128*1024; + memcpy(ptr,g_dummy_memory1_ptr,256); + ptr+=256; + memcpy(ptr,g_memory_ptr,g_mem_size_total); + + // reinitialize les event avant de les copier + for(int i = 1; i < MAX_EVENTS; i++) + { + RECALC_BASE_EVENT_PTR(g_event_list[i-1].next,base); + } + RECALC_BASE_EVENT_PTR(g_event_free.next,base); + RECALC_BASE_EVENT_PTR(g_event_start.next,base); + + g_dtime_last_vbl += get_dtime(); + + return size; + + } +} XCODE_PRAGMA_PACK; +#ifdef _WIN32 +#pragma pack(pop) +#endif + + +extern void x_update_info(const char* total_mhz_ptr); + +extern s_sim65816 g_sim65816; +extern int Verbose; +//extern int g_pause; + + +/* All EV_* must be less than 256, since upper bits reserved for other use */ +/* e.g., DOC_INT uses upper bits to encode oscillator */ +#define EV_60HZ 1 +#define EV_STOP 2 +#define EV_SCAN_INT 3 +#define EV_DOC_INT 4 +#define EV_VBL_INT 5 +#define EV_SCC 6 +#define EV_VID_UPD 7 +#define EV_SCC_ENABLE 8 \ No newline at end of file diff --git a/kegs/Src/size_c.h b/kegs/Src/size_c.h new file mode 100644 index 0000000..dc2cfc4 --- /dev/null +++ b/kegs/Src/size_c.h @@ -0,0 +1,270 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#ifdef INCLUDE_RCSID_S + .stringz "@(#)$KmKId: size_tab.h,v 1.13 2002-11-19 03:10:38-05 kadickey Exp $" +#else + + 0x1, /* 00 */ /* brk */ + 0x1, /* 01 */ /* ORA (Dloc,X) */ + 0x1, /* 02 */ /* COP */ + 0x1, /* 03 */ /* ORA Disp8,S */ + 0x1, /* 04 */ /* TSB Dloc */ + 0x1, /* 05 */ /* ORA Dloc */ + 0x1, /* 06 */ /* ASL Dloc */ + 0x1, /* 07 */ /* ORA [Dloc] */ + 0x0, /* 08 */ /* PHP */ + 0x4, /* 09 */ /* ORA #imm */ + 0x0, /* 0a */ /* ASL a */ + 0x0, /* 0b */ /* PHD */ + 0x2, /* 0c */ /* TSB abs */ + 0x2, /* 0d */ /* ORA abs */ + 0x2, /* 0e */ /* ASL abs */ + 0x3, /* 0f */ /* ORA long */ + 0x1, /* 10 */ /* BPL disp8 */ + 0x1, /* 11 */ /* ORA (),y */ + 0x1, /* 12 */ /* ORA () */ + 0x1, /* 13 */ /* ORA (disp8,s),y */ + 0x1, /* 14 */ /* TRB Dloc */ + 0x1, /* 15 */ /* ORA Dloc,x */ + 0x1, /* 16 */ /* ASL Dloc,x */ + 0x1, /* 17 */ /* ORA [],y */ + 0x0, /* 18 */ /* clc */ + 0x2, /* 19 */ /* ORA abs,y */ + 0x0, /* 1a */ /* INC a */ + 0x0, /* 1b */ /* TCS */ + 0x2, /* 1c */ /* TRB Abs */ + 0x2, /* 1d */ /* ORA Abs,X */ + 0x2, /* 1e */ /* ASL abs,x */ + 0x3, /* 1f */ /* ORA Long,x */ + 0x2, /* 20 */ /* JSR abs */ + 0x1, /* 21 */ /* AND (Dloc,X) */ + 0x3, /* 22 */ /* JSL Abslong */ + 0x1, /* 23 */ /* AND Disp8,S */ + 0x1, /* 24 */ /* BIT Dloc */ + 0x1, /* 25 */ /* AND Dloc */ + 0x1, /* 26 */ /* ROL Dloc */ + 0x1, /* 27 */ /* AND [Dloc] */ + 0x0, /* 28 */ /* PLP */ + 0x4, /* 29 */ /* AND #imm */ + 0x0, /* 2a */ /* ROL a */ + 0x0, /* 2b */ /* PLD */ + 0x2, /* 2c */ /* BIT abs */ + 0x2, /* 2d */ /* AND abs */ + 0x2, /* 2e */ /* ROL abs */ + 0x3, /* 2f */ /* AND long */ + 0x1, /* 30 */ /* BMI disp8 */ + 0x1, /* 31 */ /* AND (),y */ + 0x1, /* 32 */ /* AND () */ + 0x1, /* 33 */ /* AND (disp8,s),y */ + 0x1, /* 34 */ /* BIT Dloc,X */ + 0x1, /* 35 */ /* AND Dloc,x */ + 0x1, /* 36 */ /* ROL Dloc,x */ + 0x1, /* 37 */ /* AND [],y */ + 0x0, /* 38 */ /* SEC */ + 0x2, /* 39 */ /* AND abs,y */ + 0x0, /* 3a */ /* DEC a */ + 0x0, /* 3b */ /* TSC */ + 0x2, /* 3c */ /* BIT Abs,X */ + 0x2, /* 3d */ /* AND Abs,X */ + 0x2, /* 3e */ /* ROL abs,x */ + 0x3, /* 3f */ /* AND Long,x */ + 0x0, /* 40 */ /* RTI */ + 0x1, /* 41 */ /* EOR (Dloc,X) */ + 0x1, /* 42 */ /* WDM */ + 0x1, /* 43 */ /* EOR Disp8,S */ + 0x2, /* 44 */ /* MVP I,J */ + 0x1, /* 45 */ /* EOR Dloc */ + 0x1, /* 46 */ /* LSR Dloc */ + 0x1, /* 47 */ /* EOR [Dloc] */ + 0x0, /* 48 */ /* PHA */ + 0x4, /* 49 */ /* EOR #imm */ + 0x0, /* 4a */ /* LSR a */ + 0x0, /* 4b */ /* PHK */ + 0x2, /* 4c */ /* JMP abs */ + 0x2, /* 4d */ /* EOR abs */ + 0x2, /* 4e */ /* LSR abs */ + 0x3, /* 4f */ /* EOR long */ + 0x1, /* 50 */ /* BVC disp8 */ + 0x1, /* 51 */ /* EOR (),y */ + 0x1, /* 52 */ /* EOR () */ + 0x1, /* 53 */ /* EOR (disp8,s),y */ + 0x2, /* 54 */ /* MVN I,J */ + 0x1, /* 55 */ /* EOR Dloc,x */ + 0x1, /* 56 */ /* LSR Dloc,x */ + 0x1, /* 57 */ /* EOR [],y */ + 0x0, /* 58 */ /* CLI */ + 0x2, /* 59 */ /* EOR abs,y */ + 0x0, /* 5a */ /* PHY */ + 0x0, /* 5b */ /* TCD */ + 0x3, /* 5c */ /* JMP Long */ + 0x2, /* 5d */ /* EOR Abs,X */ + 0x2, /* 5e */ /* LSR abs,x */ + 0x3, /* 5f */ /* EOR Long,x */ + 0x0, /* 60 */ /* RTS */ + 0x1, /* 61 */ /* ADC (Dloc,X) */ + 0x2, /* 62 */ /* PER DISP16 */ + 0x1, /* 63 */ /* ADC Disp8,S */ + 0x1, /* 64 */ /* STZ Dloc */ + 0x1, /* 65 */ /* ADC Dloc */ + 0x1, /* 66 */ /* ROR Dloc */ + 0x1, /* 67 */ /* ADC [Dloc] */ + 0x0, /* 68 */ /* PLA */ + 0x4, /* 69 */ /* ADC #imm */ + 0x0, /* 6a */ /* ROR a */ + 0x0, /* 6b */ /* RTL */ + 0x2, /* 6c */ /* JMP (abs) */ + 0x2, /* 6d */ /* ADC abs */ + 0x2, /* 6e */ /* ROR abs */ + 0x3, /* 6f */ /* ADC long */ + 0x1, /* 70 */ /* BVS disp8 */ + 0x1, /* 71 */ /* ADC (),y */ + 0x1, /* 72 */ /* ADC () */ + 0x1, /* 73 */ /* ADC (disp8,s),y */ + 0x1, /* 74 */ /* STZ Dloc,X */ + 0x1, /* 75 */ /* ADC Dloc,x */ + 0x1, /* 76 */ /* ROR Dloc,x */ + 0x1, /* 77 */ /* ADC [],y */ + 0x0, /* 78 */ /* SEI */ + 0x2, /* 79 */ /* ADC abs,y */ + 0x0, /* 7a */ /* PLY */ + 0x0, /* 7b */ /* TDC */ + 0x2, /* 7c */ /* JMP (abs,x) */ + 0x2, /* 7d */ /* ADC Abs,X */ + 0x2, /* 7e */ /* ROR abs,x */ + 0x3, /* 7f */ /* ADC Long,x */ + 0x1, /* 80 */ /* BRA Disp8 */ + 0x1, /* 81 */ /* STA (Dloc,X) */ + 0x2, /* 82 */ /* BRL DISP16 */ + 0x1, /* 83 */ /* STA Disp8,S */ + 0x1, /* 84 */ /* STY Dloc */ + 0x1, /* 85 */ /* STA Dloc */ + 0x1, /* 86 */ /* STX Dloc */ + 0x1, /* 87 */ /* STA [Dloc] */ + 0x0, /* 88 */ /* DEY */ + 0x4, /* 89 */ /* BIT #imm */ + 0x0, /* 8a */ /* TXA */ + 0x0, /* 8b */ /* PHB */ + 0x2, /* 8c */ /* STY abs */ + 0x2, /* 8d */ /* STA abs */ + 0x2, /* 8e */ /* STX abs */ + 0x3, /* 8f */ /* STA long */ + 0x1, /* 90 */ /* BCC disp8 */ + 0x1, /* 91 */ /* STA (),y */ + 0x1, /* 92 */ /* STA () */ + 0x1, /* 93 */ /* STA (disp8,s),y */ + 0x1, /* 94 */ /* STY Dloc,X */ + 0x1, /* 95 */ /* STA Dloc,x */ + 0x1, /* 96 */ /* STX Dloc,y */ + 0x1, /* 97 */ /* STA [],y */ + 0x0, /* 98 */ /* TYA */ + 0x2, /* 99 */ /* STA abs,y */ + 0x0, /* 9a */ /* TXS */ + 0x0, /* 9b */ /* TXY */ + 0x2, /* 9c */ /* STX abs */ + 0x2, /* 9d */ /* STA Abs,X */ + 0x2, /* 9e */ /* STZ abs,x */ + 0x3, /* 9f */ /* STA Long,x */ + 0x5, /* a0 */ /* LDY #imm */ + 0x1, /* a1 */ /* LDA (Dloc,X) */ + 0x5, /* a2 */ /* LDX #imm */ + 0x1, /* a3 */ /* LDA Disp8,S */ + 0x1, /* a4 */ /* LDY Dloc */ + 0x1, /* a5 */ /* LDA Dloc */ + 0x1, /* a6 */ /* LDX Dloc */ + 0x1, /* a7 */ /* LDA [Dloc] */ + 0x0, /* a8 */ /* TAY */ + 0x4, /* a9 */ /* LDA #imm */ + 0x0, /* aa */ /* TAX */ + 0x0, /* ab */ /* PLB */ + 0x2, /* ac */ /* LDY abs */ + 0x2, /* ad */ /* LDA abs */ + 0x2, /* ae */ /* LDX abs */ + 0x3, /* af */ /* LDA long */ + 0x1, /* b0 */ /* BCS disp8 */ + 0x1, /* b1 */ /* LDA (),y */ + 0x1, /* b2 */ /* LDA () */ + 0x1, /* b3 */ /* LDA (disp8,s),y */ + 0x1, /* b4 */ /* LDY Dloc,X */ + 0x1, /* b5 */ /* LDA Dloc,x */ + 0x1, /* b6 */ /* LDX Dloc,y */ + 0x1, /* b7 */ /* LDA [],y */ + 0x0, /* b8 */ /* CLV */ + 0x2, /* b9 */ /* LDA abs,y */ + 0x0, /* ba */ /* TSX */ + 0x0, /* bb */ /* TYX */ + 0x2, /* bc */ /* LDY abs,x */ + 0x2, /* bd */ /* LDA Abs,X */ + 0x2, /* be */ /* LDX abs,y */ + 0x3, /* bf */ /* LDA Long,x */ + 0x5, /* c0 */ /* CPY #Imm */ + 0x1, /* c1 */ /* CMP (Dloc,X) */ + 0x1, /* c2 */ /* REP #8bit */ + 0x1, /* c3 */ /* CMP Disp8,S */ + 0x1, /* c4 */ /* CPY Dloc */ + 0x1, /* c5 */ /* CMP Dloc */ + 0x1, /* c6 */ /* DEC Dloc */ + 0x1, /* c7 */ /* CMP [Dloc] */ + 0x0, /* c8 */ /* INY */ + 0x4, /* c9 */ /* CMP #imm */ + 0x0, /* ca */ /* DEX */ + 0x0, /* cb */ /* WAI */ + 0x2, /* cc */ /* CPY abs */ + 0x2, /* cd */ /* CMP abs */ + 0x2, /* ce */ /* DEC abs */ + 0x3, /* cf */ /* CMP long */ + 0x1, /* d0 */ /* BNE disp8 */ + 0x1, /* d1 */ /* CMP (),y */ + 0x1, /* d2 */ /* CMP () */ + 0x1, /* d3 */ /* CMP (disp8,s),y */ + 0x1, /* d4 */ /* PEI Dloc */ + 0x1, /* d5 */ /* CMP Dloc,x */ + 0x1, /* d6 */ /* DEC Dloc,x */ + 0x1, /* d7 */ /* CMP [],y */ + 0x0, /* d8 */ /* CLD */ + 0x2, /* d9 */ /* CMP abs,y */ + 0x0, /* da */ /* PHX */ + 0x0, /* db */ /* STP */ + 0x2, /* dc */ /* JML (Abs) */ + 0x2, /* dd */ /* CMP Abs,X */ + 0x2, /* de */ /* DEC abs,x */ + 0x3, /* df */ /* CMP Long,x */ + 0x5, /* e0 */ /* CPX #Imm */ + 0x1, /* e1 */ /* SBC (Dloc,X) */ + 0x1, /* e2 */ /* SEP #8bit */ + 0x1, /* e3 */ /* SBC Disp8,S */ + 0x1, /* e4 */ /* CPX Dloc */ + 0x1, /* e5 */ /* SBC Dloc */ + 0x1, /* e6 */ /* INC Dloc */ + 0x1, /* e7 */ /* SBC [Dloc] */ + 0x0, /* e8 */ /* INX */ + 0x4, /* e9 */ /* SBC #imm */ + 0x0, /* ea */ /* NOP */ + 0x0, /* eb */ /* XBA */ + 0x2, /* ec */ /* CPX abs */ + 0x2, /* ed */ /* SBC abs */ + 0x2, /* ee */ /* INC abs */ + 0x3, /* ef */ /* SBC long */ + 0x1, /* f0 */ /* BEQ disp8 */ + 0x1, /* f1 */ /* SBC (),y */ + 0x1, /* f2 */ /* SBC () */ + 0x1, /* f3 */ /* SBC (disp8,s),y */ + 0x2, /* f4 */ /* PEA Imm */ + 0x1, /* f5 */ /* SBC Dloc,x */ + 0x1, /* f6 */ /* INC Dloc,x */ + 0x1, /* f7 */ /* SBC [],y */ + 0x0, /* f8 */ /* SED */ + 0x2, /* f9 */ /* SBC abs,y */ + 0x0, /* fa */ /* PLX */ + 0x0, /* fb */ /* XCE */ + 0x2, /* fc */ /* JSR (Abs,x) */ + 0x2, /* fd */ /* SBC Abs,X */ + 0x2, /* fe */ /* INC abs,x */ + 0x3, /* ff */ /* SBC Long,x */ + + + +#endif diff --git a/kegs/Src/size_tab.h b/kegs/Src/size_tab.h new file mode 100644 index 0000000..1682fad --- /dev/null +++ b/kegs/Src/size_tab.h @@ -0,0 +1,270 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#ifdef INCLUDE_RCSID_S + .stringz "@(#)$KmKId: size_tab.h,v 1.13 2002-11-19 03:10:38-05 kadickey Exp $" +#else + + .word inst00_SYM+1 /* brk */ + .word inst01_SYM+1 /* ORA (Dloc,X) */ + .word inst02_SYM+1 /* COP */ + .word inst03_SYM+1 /* ORA Disp8,S */ + .word inst04_SYM+1 /* TSB Dloc */ + .word inst05_SYM+1 /* ORA Dloc */ + .word inst06_SYM+1 /* ASL Dloc */ + .word inst07_SYM+1 /* ORA [Dloc] */ + .word inst08_SYM+0 /* PHP */ + .word inst09_SYM+4 /* ORA #imm */ + .word inst0a_SYM+0 /* ASL a */ + .word inst0b_SYM+0 /* PHD */ + .word inst0c_SYM+2 /* TSB abs */ + .word inst0d_SYM+2 /* ORA abs */ + .word inst0e_SYM+2 /* ASL abs */ + .word inst0f_SYM+3 /* ORA long */ + .word inst10_SYM+1 /* BPL disp8 */ + .word inst11_SYM+1 /* ORA (),y */ + .word inst12_SYM+1 /* ORA () */ + .word inst13_SYM+1 /* ORA (disp8,s),y */ + .word inst14_SYM+1 /* TRB Dloc */ + .word inst15_SYM+1 /* ORA Dloc,x */ + .word inst16_SYM+1 /* ASL Dloc,x */ + .word inst17_SYM+1 /* ORA [],y */ + .word inst18_SYM+0 /* clc */ + .word inst19_SYM+2 /* ORA abs,y */ + .word inst1a_SYM+0 /* INC a */ + .word inst1b_SYM+0 /* TCS */ + .word inst1c_SYM+2 /* TRB Abs */ + .word inst1d_SYM+2 /* ORA Abs,X */ + .word inst1e_SYM+2 /* ASL abs,x */ + .word inst1f_SYM+3 /* ORA Long,x */ + .word inst20_SYM+2 /* JSR abs */ + .word inst21_SYM+1 /* AND (Dloc,X) */ + .word inst22_SYM+3 /* JSL Abslong */ + .word inst23_SYM+1 /* AND Disp8,S */ + .word inst24_SYM+1 /* BIT Dloc */ + .word inst25_SYM+1 /* AND Dloc */ + .word inst26_SYM+1 /* ROL Dloc */ + .word inst27_SYM+1 /* AND [Dloc] */ + .word inst28_SYM+0 /* PLP */ + .word inst29_SYM+4 /* AND #imm */ + .word inst2a_SYM+0 /* ROL a */ + .word inst2b_SYM+0 /* PLD */ + .word inst2c_SYM+2 /* BIT abs */ + .word inst2d_SYM+2 /* AND abs */ + .word inst2e_SYM+2 /* ROL abs */ + .word inst2f_SYM+3 /* AND long */ + .word inst30_SYM+1 /* BMI disp8 */ + .word inst31_SYM+1 /* AND (),y */ + .word inst32_SYM+1 /* AND () */ + .word inst33_SYM+1 /* AND (disp8,s),y */ + .word inst34_SYM+1 /* BIT Dloc,X */ + .word inst35_SYM+1 /* AND Dloc,x */ + .word inst36_SYM+1 /* ROL Dloc,x */ + .word inst37_SYM+1 /* AND [],y */ + .word inst38_SYM+0 /* SEC */ + .word inst39_SYM+2 /* AND abs,y */ + .word inst3a_SYM+0 /* DEC a */ + .word inst3b_SYM+0 /* TSC */ + .word inst3c_SYM+2 /* BIT Abs,X */ + .word inst3d_SYM+2 /* AND Abs,X */ + .word inst3e_SYM+2 /* ROL abs,x */ + .word inst3f_SYM+3 /* AND Long,x */ + .word inst40_SYM+0 /* RTI */ + .word inst41_SYM+1 /* EOR (Dloc,X) */ + .word inst42_SYM+1 /* WDM */ + .word inst43_SYM+1 /* EOR Disp8,S */ + .word inst44_SYM+2 /* MVP I,J */ + .word inst45_SYM+1 /* EOR Dloc */ + .word inst46_SYM+1 /* LSR Dloc */ + .word inst47_SYM+1 /* EOR [Dloc] */ + .word inst48_SYM+0 /* PHA */ + .word inst49_SYM+4 /* EOR #imm */ + .word inst4a_SYM+0 /* LSR a */ + .word inst4b_SYM+0 /* PHK */ + .word inst4c_SYM+2 /* JMP abs */ + .word inst4d_SYM+2 /* EOR abs */ + .word inst4e_SYM+2 /* LSR abs */ + .word inst4f_SYM+3 /* EOR long */ + .word inst50_SYM+1 /* BVC disp8 */ + .word inst51_SYM+1 /* EOR (),y */ + .word inst52_SYM+1 /* EOR () */ + .word inst53_SYM+1 /* EOR (disp8,s),y */ + .word inst54_SYM+2 /* MVN I,J */ + .word inst55_SYM+1 /* EOR Dloc,x */ + .word inst56_SYM+1 /* LSR Dloc,x */ + .word inst57_SYM+1 /* EOR [],y */ + .word inst58_SYM+0 /* CLI */ + .word inst59_SYM+2 /* EOR abs,y */ + .word inst5a_SYM+0 /* PHY */ + .word inst5b_SYM+0 /* TCD */ + .word inst5c_SYM+3 /* JMP Long */ + .word inst5d_SYM+2 /* EOR Abs,X */ + .word inst5e_SYM+2 /* LSR abs,x */ + .word inst5f_SYM+3 /* EOR Long,x */ + .word inst60_SYM+0 /* RTS */ + .word inst61_SYM+1 /* ADC (Dloc,X) */ + .word inst62_SYM+2 /* PER DISP16 */ + .word inst63_SYM+1 /* ADC Disp8,S */ + .word inst64_SYM+1 /* STZ Dloc */ + .word inst65_SYM+1 /* ADC Dloc */ + .word inst66_SYM+1 /* ROR Dloc */ + .word inst67_SYM+1 /* ADC [Dloc] */ + .word inst68_SYM+0 /* PLA */ + .word inst69_SYM+4 /* ADC #imm */ + .word inst6a_SYM+0 /* ROR a */ + .word inst6b_SYM+0 /* RTL */ + .word inst6c_SYM+2 /* JMP (abs) */ + .word inst6d_SYM+2 /* ADC abs */ + .word inst6e_SYM+2 /* ROR abs */ + .word inst6f_SYM+3 /* ADC long */ + .word inst70_SYM+1 /* BVS disp8 */ + .word inst71_SYM+1 /* ADC (),y */ + .word inst72_SYM+1 /* ADC () */ + .word inst73_SYM+1 /* ADC (disp8,s),y */ + .word inst74_SYM+1 /* STZ Dloc,X */ + .word inst75_SYM+1 /* ADC Dloc,x */ + .word inst76_SYM+1 /* ROR Dloc,x */ + .word inst77_SYM+1 /* ADC [],y */ + .word inst78_SYM+0 /* SEI */ + .word inst79_SYM+2 /* ADC abs,y */ + .word inst7a_SYM+0 /* PLY */ + .word inst7b_SYM+0 /* TDC */ + .word inst7c_SYM+2 /* JMP (abs,x) */ + .word inst7d_SYM+2 /* ADC Abs,X */ + .word inst7e_SYM+2 /* ROR abs,x */ + .word inst7f_SYM+3 /* ADC Long,x */ + .word inst80_SYM+1 /* BRA Disp8 */ + .word inst81_SYM+1 /* STA (Dloc,X) */ + .word inst82_SYM+2 /* BRL DISP16 */ + .word inst83_SYM+1 /* STA Disp8,S */ + .word inst84_SYM+1 /* STY Dloc */ + .word inst85_SYM+1 /* STA Dloc */ + .word inst86_SYM+1 /* STX Dloc */ + .word inst87_SYM+1 /* STA [Dloc] */ + .word inst88_SYM+0 /* DEY */ + .word inst89_SYM+4 /* BIT #imm */ + .word inst8a_SYM+0 /* TXA */ + .word inst8b_SYM+0 /* PHB */ + .word inst8c_SYM+2 /* STY abs */ + .word inst8d_SYM+2 /* STA abs */ + .word inst8e_SYM+2 /* STX abs */ + .word inst8f_SYM+3 /* STA long */ + .word inst90_SYM+1 /* BCC disp8 */ + .word inst91_SYM+1 /* STA (),y */ + .word inst92_SYM+1 /* STA () */ + .word inst93_SYM+1 /* STA (disp8,s),y */ + .word inst94_SYM+1 /* STY Dloc,X */ + .word inst95_SYM+1 /* STA Dloc,x */ + .word inst96_SYM+1 /* STX Dloc,y */ + .word inst97_SYM+1 /* STA [],y */ + .word inst98_SYM+0 /* TYA */ + .word inst99_SYM+2 /* STA abs,y */ + .word inst9a_SYM+0 /* TXS */ + .word inst9b_SYM+0 /* TXY */ + .word inst9c_SYM+2 /* STX abs */ + .word inst9d_SYM+2 /* STA Abs,X */ + .word inst9e_SYM+2 /* STZ abs,x */ + .word inst9f_SYM+3 /* STA Long,x */ + .word insta0_SYM+5 /* LDY #imm */ + .word insta1_SYM+1 /* LDA (Dloc,X) */ + .word insta2_SYM+5 /* LDX #imm */ + .word insta3_SYM+1 /* LDA Disp8,S */ + .word insta4_SYM+1 /* LDY Dloc */ + .word insta5_SYM+1 /* LDA Dloc */ + .word insta6_SYM+1 /* LDX Dloc */ + .word insta7_SYM+1 /* LDA [Dloc] */ + .word insta8_SYM+0 /* TAY */ + .word insta9_SYM+4 /* LDA #imm */ + .word instaa_SYM+0 /* TAX */ + .word instab_SYM+0 /* PLB */ + .word instac_SYM+2 /* LDY abs */ + .word instad_SYM+2 /* LDA abs */ + .word instae_SYM+2 /* LDX abs */ + .word instaf_SYM+3 /* LDA long */ + .word instb0_SYM+1 /* BCS disp8 */ + .word instb1_SYM+1 /* LDA (),y */ + .word instb2_SYM+1 /* LDA () */ + .word instb3_SYM+1 /* LDA (disp8,s),y */ + .word instb4_SYM+1 /* LDY Dloc,X */ + .word instb5_SYM+1 /* LDA Dloc,x */ + .word instb6_SYM+1 /* LDX Dloc,y */ + .word instb7_SYM+1 /* LDA [],y */ + .word instb8_SYM+0 /* CLV */ + .word instb9_SYM+2 /* LDA abs,y */ + .word instba_SYM+0 /* TSX */ + .word instbb_SYM+0 /* TYX */ + .word instbc_SYM+2 /* LDY abs,x */ + .word instbd_SYM+2 /* LDA Abs,X */ + .word instbe_SYM+2 /* LDX abs,y */ + .word instbf_SYM+3 /* LDA Long,x */ + .word instc0_SYM+5 /* CPY #Imm */ + .word instc1_SYM+1 /* CMP (Dloc,X) */ + .word instc2_SYM+1 /* REP #8bit */ + .word instc3_SYM+1 /* CMP Disp8,S */ + .word instc4_SYM+1 /* CPY Dloc */ + .word instc5_SYM+1 /* CMP Dloc */ + .word instc6_SYM+1 /* DEC Dloc */ + .word instc7_SYM+1 /* CMP [Dloc] */ + .word instc8_SYM+0 /* INY */ + .word instc9_SYM+4 /* CMP #imm */ + .word instca_SYM+0 /* DEX */ + .word instcb_SYM+0 /* WAI */ + .word instcc_SYM+2 /* CPY abs */ + .word instcd_SYM+2 /* CMP abs */ + .word instce_SYM+2 /* DEC abs */ + .word instcf_SYM+3 /* CMP long */ + .word instd0_SYM+1 /* BNE disp8 */ + .word instd1_SYM+1 /* CMP (),y */ + .word instd2_SYM+1 /* CMP () */ + .word instd3_SYM+1 /* CMP (disp8,s),y */ + .word instd4_SYM+1 /* PEI Dloc */ + .word instd5_SYM+1 /* CMP Dloc,x */ + .word instd6_SYM+1 /* DEC Dloc,x */ + .word instd7_SYM+1 /* CMP [],y */ + .word instd8_SYM+0 /* CLD */ + .word instd9_SYM+2 /* CMP abs,y */ + .word instda_SYM+0 /* PHX */ + .word instdb_SYM+0 /* STP */ + .word instdc_SYM+2 /* JML (Abs) */ + .word instdd_SYM+2 /* CMP Abs,X */ + .word instde_SYM+2 /* DEC abs,x */ + .word instdf_SYM+3 /* CMP Long,x */ + .word inste0_SYM+5 /* CPX #Imm */ + .word inste1_SYM+1 /* SBC (Dloc,X) */ + .word inste2_SYM+1 /* SEP #8bit */ + .word inste3_SYM+1 /* SBC Disp8,S */ + .word inste4_SYM+1 /* CPX Dloc */ + .word inste5_SYM+1 /* SBC Dloc */ + .word inste6_SYM+1 /* INC Dloc */ + .word inste7_SYM+1 /* SBC [Dloc] */ + .word inste8_SYM+0 /* INX */ + .word inste9_SYM+4 /* SBC #imm */ + .word instea_SYM+0 /* NOP */ + .word insteb_SYM+0 /* XBA */ + .word instec_SYM+2 /* CPX abs */ + .word insted_SYM+2 /* SBC abs */ + .word instee_SYM+2 /* INC abs */ + .word instef_SYM+3 /* SBC long */ + .word instf0_SYM+1 /* BEQ disp8 */ + .word instf1_SYM+1 /* SBC (),y */ + .word instf2_SYM+1 /* SBC () */ + .word instf3_SYM+1 /* SBC (disp8,s),y */ + .word instf4_SYM+2 /* PEA Imm */ + .word instf5_SYM+1 /* SBC Dloc,x */ + .word instf6_SYM+1 /* INC Dloc,x */ + .word instf7_SYM+1 /* SBC [],y */ + .word instf8_SYM+0 /* SED */ + .word instf9_SYM+2 /* SBC abs,y */ + .word instfa_SYM+0 /* PLX */ + .word instfb_SYM+0 /* XCE */ + .word instfc_SYM+2 /* JSR (Abs,x) */ + .word instfd_SYM+2 /* SBC Abs,X */ + .word instfe_SYM+2 /* INC abs,x */ + .word instff_SYM+3 /* SBC Long,x */ + + .block 4*16 + +#endif diff --git a/kegs/Src/smartport.cpp b/kegs/Src/smartport.cpp new file mode 100644 index 0000000..4120310 --- /dev/null +++ b/kegs/Src/smartport.cpp @@ -0,0 +1,798 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "defc.h" +#include "sim65816.h" +#include "iwm.h" + + +#define LEN_SMPT_LOG 16 +STRUCT(Smpt_log) { + word32 start_addr; + int cmd; + int rts_addr; + int cmd_list; + int extras; + int unit; + int buf; + int blk; +}; + +Smpt_log g_smpt_log[LEN_SMPT_LOG]; +int g_smpt_log_pos = 0; + +void +smartport_error(void) +{ + int pos; + int i; + + pos = g_smpt_log_pos; + printf("Smartport log pos: %d\n", pos); + for(i = 0; i < LEN_SMPT_LOG; i++) { + pos--; + if(pos < 0) { + pos = LEN_SMPT_LOG - 1; + } + printf("%d:%d: t:%04x, cmd:%02x, rts:%04x, " + "cmd_l:%04x, x:%d, unit:%d, buf:%04x, blk:%04x\n", + i, pos, + g_smpt_log[pos].start_addr, + g_smpt_log[pos].cmd, + g_smpt_log[pos].rts_addr, + g_smpt_log[pos].cmd_list, + g_smpt_log[pos].extras, + g_smpt_log[pos].unit, + g_smpt_log[pos].buf, + g_smpt_log[pos].blk); + } +} +void +smartport_log(word32 start_addr, int cmd, int rts_addr, int cmd_list) +{ + int pos; + + pos = g_smpt_log_pos; + if(start_addr != 0) { + g_smpt_log[pos].start_addr = start_addr; + g_smpt_log[pos].cmd = cmd; + g_smpt_log[pos].rts_addr = rts_addr; + g_smpt_log[pos].cmd_list = cmd_list; + g_smpt_log[pos].extras = 0; + g_smpt_log[pos].unit = 0; + g_smpt_log[pos].buf = 0; + g_smpt_log[pos].blk = 0; + } else { + pos--; + if(pos < 0) { + pos = LEN_SMPT_LOG - 1; + } + g_smpt_log[pos].extras = 1; + g_smpt_log[pos].unit = cmd; + g_smpt_log[pos].buf = rts_addr; + g_smpt_log[pos].blk = cmd_list; + } + pos++; + if(pos >= LEN_SMPT_LOG) { + pos = 0; + } + g_smpt_log_pos = pos; +} + +void +do_c70d(word32 arg0) +{ + int cmd; + int cmd_list_lo, cmd_list_mid, cmd_list_hi; + int rts_lo, rts_hi; + word32 rts_addr; + word32 cmd_list; + int unit; + int param_cnt; + int status_ptr_lo, status_ptr_mid, status_ptr_hi; + int buf_ptr_lo, buf_ptr_hi; + int buf_ptr; + int block_lo, block_mid, block_hi; + int block; + word32 status_ptr; + int status_code; + int ctl_ptr_lo, ctl_ptr_hi; + int ctl_ptr; + int ctl_code; + int mask; + int stat_val; + int size; + int ret; + int ext; + int i; + + set_memory_c(0x7f8, 0xc7, 0); + + if((g_sim65816.engine.psr & 0x100) == 0) { + disk_printf("c70d called in native mode!\n"); + if((g_sim65816.engine.psr & 0x30) != 0x30) { + halt_printf("c70d called native, psr: %03x!\n", + g_sim65816.engine.psr); + } + } + + g_sim65816.engine.stack = ((g_sim65816.engine.stack + 1) & 0xff) + 0x100; + rts_lo = get_memory_c(g_sim65816.engine.stack, 0); + g_sim65816.engine.stack = ((g_sim65816.engine.stack + 1) & 0xff) + 0x100; + rts_hi = get_memory_c(g_sim65816.engine.stack, 0); + rts_addr = (rts_lo + (256*rts_hi) + 1) & 0xffff; + disk_printf("rts_addr: %04x\n", rts_addr); + + cmd = get_memory_c(rts_addr, 0); + cmd_list_lo = get_memory_c((rts_addr + 1) & 0xffff, 0); + cmd_list_mid = get_memory_c((rts_addr + 2) & 0xffff, 0); + cmd_list_hi = 0; + mask = 0xffff; + if(cmd & 0x40) { + /* extended */ + mask = 0xffffff; + cmd_list_hi = get_memory_c((rts_addr + 3) & 0xffff, 0); + } + + cmd_list = cmd_list_lo + (256*cmd_list_mid) + (65536*cmd_list_hi); + + disk_printf("cmd: %02x, cmd_list: %06x\n", cmd, cmd_list); + param_cnt = get_memory_c(cmd_list, 0); + + ext = 0; + if(cmd & 0x40) { + ext = 2; + } + + smartport_log(0xc70d, cmd, rts_addr, cmd_list); + + switch(cmd & 0x3f) { + case 0x00: /* Status == 0x00 and 0x40 */ + if(param_cnt != 3) { + disk_printf("param_cnt %d is != 3!\n", param_cnt); + x_exit(8); + } + unit = get_memory_c((cmd_list+1) & mask, 0); + status_ptr_lo = get_memory_c((cmd_list+2) & mask, 0); + status_ptr_mid = get_memory_c((cmd_list+3) & mask, 0); + status_ptr_hi = 0; + if(cmd & 0x40) { + status_ptr_hi = get_memory_c((cmd_list+4) & mask, 0); + } + + status_ptr = status_ptr_lo + (256*status_ptr_mid) + + (65536*status_ptr_hi); + if(cmd & 0x40) { + status_code = get_memory_c((cmd_list+6) & mask, 0); + } else { + status_code = get_memory_c((cmd_list+4) & mask, 0); + } + + smartport_log(0, unit, status_ptr, status_code); + + disk_printf("unit: %02x, status_ptr: %06x, code: %02x\n", + unit, status_ptr, status_code); + if(unit == 0 && status_code == 0) { + /* Smartport driver status */ + /* see technotes/smpt/tn-smpt-002 */ + set_memory_c(status_ptr, g_iwm.g_highest_smartport_unit+1, 0); + set_memory_c(status_ptr+1, 0xff, 0); /* interrupt stat*/ + set_memory16_c(status_ptr+2, 0x0002, 0); /* vendor id */ + set_memory16_c(status_ptr+4, 0x1000, 0); /* version */ + set_memory16_c(status_ptr+6, 0x0000, 0); + + g_sim65816.engine.xreg = 8; + g_sim65816.engine.yreg = 0; + g_sim65816.engine.acc &= 0xff00; + g_sim65816.engine.psr &= ~1; + g_sim65816.engine.kpc = (rts_addr + 3 + ext) & mask; + return; + } else if(unit > 0 && status_code == 0) { + /* status for unit x */ + if(unit > MAX_C7_DISKS || g_iwm.iwm.smartport[unit-1].fd < 0){ + stat_val = 0x80; + size = 0; + } else { + stat_val = 0xf8; + size = g_iwm.iwm.smartport[unit-1].image_size; + size = (size+511) / 512; + } + set_memory_c(status_ptr, stat_val, 0); + set_memory24_c(status_ptr +1, size, 0); + g_sim65816.engine.xreg = 4; + if(cmd & 0x40) { + set_memory_c(status_ptr + 4, + (size >> 16) & 0xff, 0); + g_sim65816.engine.xreg = 5; + } + g_sim65816.engine.yreg = 0; + g_sim65816.engine.acc &= 0xff00; + g_sim65816.engine.psr &= ~1; + g_sim65816.engine.kpc = (rts_addr + 3 + ext) & mask; + + disk_printf("just finished unit %d, stat 0\n", unit); + return; + } else if(status_code == 3) { + if(unit > MAX_C7_DISKS || g_iwm.iwm.smartport[unit-1].fd < 0){ + stat_val = 0x80; + size = 0; + } else { + stat_val = 0xf8; + size = g_iwm.iwm.smartport[unit-1].image_size; + size = (size+511) / 512; + } + if(cmd & 0x40) { + disk_printf("extended for stat_code 3!\n"); + } + /* DIB for unit 1 */ + set_memory_c(status_ptr, stat_val, 0); + set_memory24_c(status_ptr +1, size, 0); + if(cmd & 0x40) { + set_memory_c(status_ptr + 4, + (size >> 24) & 0xff, 0); + status_ptr++; + } + set_memory_c(status_ptr +4, 4, 0); + for(i = 5; i < 21; i++) { + set_memory_c(status_ptr +i, 0x20, 0); + } + set_memory_c(status_ptr +5, 'K', 0); + set_memory_c(status_ptr +6, 'E', 0); + set_memory_c(status_ptr +7, 'G', 0); + set_memory_c(status_ptr +8, 'S', 0); + + /* hard disk supporting extended calls */ + set_memory16_c(status_ptr + 21, 0xa002, 0); + set_memory16_c(status_ptr + 23, 0x0000, 0); + + if(cmd & 0x40) { + g_sim65816.engine.xreg = 26; + } else { + g_sim65816.engine.xreg = 25; + } + g_sim65816.engine.yreg = 0; + g_sim65816.engine.acc &= 0xff00; + g_sim65816.engine.psr &= ~1; + g_sim65816.engine.kpc = (rts_addr + 3 + ext) & 0xffff; + + disk_printf("Just finished unit %d, stat 3\n", unit); + if(unit == 0 || unit > MAX_C7_DISKS) { + g_sim65816.engine.acc |= 0x28; + g_sim65816.engine.psr |= 1; + } + return; + } + printf("cmd: 00, unknown unit/status code!\n"); + break; + case 0x01: /* Read Block == 0x01 and 0x41 */ + if(param_cnt != 3) { + halt_printf("param_cnt %d is != 3!\n", param_cnt); + return; + } + unit = get_memory_c((cmd_list+1) & mask, 0); + buf_ptr_lo = get_memory_c((cmd_list+2) & mask, 0); + buf_ptr_hi = get_memory_c((cmd_list+3) & mask, 0); + + buf_ptr = buf_ptr_lo + (256*buf_ptr_hi); + if(cmd & 0x40) { + buf_ptr_lo = get_memory_c((cmd_list+4) & mask, 0); + buf_ptr_hi = get_memory_c((cmd_list+5) & mask, 0); + buf_ptr += ((buf_ptr_hi*256) + buf_ptr_lo)*65536; + cmd_list += 2; + } + block_lo = get_memory_c((cmd_list+4) & mask, 0); + block_mid = get_memory_c((cmd_list+5) & mask, 0); + block_hi = get_memory_c((cmd_list+6) & mask, 0); + block = ((block_hi*256) + block_mid)*256 + block_lo; + disk_printf("smartport read unit %d of block %04x into %04x\n", + unit, block, buf_ptr); + if(unit < 1 || unit > MAX_C7_DISKS) { + halt_printf("Unknown unit #: %d\n", unit); + } + + smartport_log(0, unit - 1, buf_ptr, block); + + ret = do_read_c7(unit - 1, buf_ptr, block); + g_sim65816.engine.xreg = 0; + g_sim65816.engine.yreg = 2; + g_sim65816.engine.acc = (g_sim65816.engine.acc & 0xff00) | (ret & 0xff); + g_sim65816.engine.psr &= ~1; + if(ret != 0) { + g_sim65816.engine.psr |= 1; + } + g_sim65816.engine.kpc = (rts_addr + 3 + ext) & 0xffff; + + return; + break; + case 0x02: /* Write Block == 0x02 and 0x42 */ + if(param_cnt != 3) { + halt_printf("param_cnt %d is != 3!\n", param_cnt); + return; + } + unit = get_memory_c((cmd_list+1) & mask, 0); + buf_ptr_lo = get_memory_c((cmd_list+2) & mask, 0); + buf_ptr_hi = get_memory_c((cmd_list+3) & mask, 0); + + buf_ptr = buf_ptr_lo + (256*buf_ptr_hi); + if(cmd & 0x40) { + buf_ptr_lo = get_memory_c((cmd_list+4) & mask, 0); + buf_ptr_hi = get_memory_c((cmd_list+5) & mask, 0); + buf_ptr += ((buf_ptr_hi*256) + buf_ptr_lo)*65536; + cmd_list += 2; + } + block_lo = get_memory_c((cmd_list+4) & mask, 0); + block_mid = get_memory_c((cmd_list+5) & mask, 0); + block_hi = get_memory_c((cmd_list+6) & mask, 0); + block = ((block_hi*256) + block_mid)*256 + block_lo; + disk_printf("smartport write unit %d of block %04x from %04x\n", + unit, block, buf_ptr); + if(unit < 1 || unit > MAX_C7_DISKS) { + halt_printf("Unknown unit #: %d\n", unit); + } + + smartport_log(0, unit - 1, buf_ptr, block); + + ret = do_write_c7(unit - 1, buf_ptr, block); + g_sim65816.engine.xreg = 0; + g_sim65816.engine.yreg = 2; + g_sim65816.engine.acc = (g_sim65816.engine.acc & 0xff00) | (ret & 0xff); + g_sim65816.engine.psr &= ~1; + if(ret != 0) { + g_sim65816.engine.psr |= 1; + } + g_sim65816.engine.kpc = (rts_addr + 3 + ext) & 0xffff; + + HALT_ON(HALT_ON_C70D_WRITES, "c70d Write done\n"); + return; + break; + case 0x03: /* Format == 0x03 and 0x43 */ + if(param_cnt != 1) { + halt_printf("param_cnt %d is != 1!\n", param_cnt); + return; + } + unit = get_memory_c((cmd_list+1) & mask, 0); + + if(unit < 1 || unit > MAX_C7_DISKS) { + halt_printf("Unknown unit #: %d\n", unit); + } + + smartport_log(0, unit - 1, 0, 0); + + ret = do_format_c7(unit - 1); + g_sim65816.engine.xreg = 0; + g_sim65816.engine.yreg = 2; + g_sim65816.engine.acc = (g_sim65816.engine.acc & 0xff00) | (ret & 0xff); + g_sim65816.engine.psr &= ~1; + if(ret != 0) { + g_sim65816.engine.psr |= 1; + } + g_sim65816.engine.kpc = (rts_addr + 3 + ext) & 0xffff; + + HALT_ON(HALT_ON_C70D_WRITES, "c70d Format done\n"); + return; + break; + case 0x04: /* Control == 0x04 and 0x44 */ + if(cmd == 0x44) { + halt_printf("smartport code 0x44 not supported\n"); + } + if(param_cnt != 3) { + halt_printf("param_cnt %d is != 3!\n", param_cnt); + return; + } + unit = get_memory_c((cmd_list+1) & mask, 0); + ctl_ptr_lo = get_memory_c((cmd_list+2) & mask, 0); + ctl_ptr_hi = get_memory_c((cmd_list+3) & mask, 0); + + ctl_ptr = (ctl_ptr_hi << 8) + ctl_ptr_lo; + if(cmd & 0x40) { + ctl_ptr_lo = get_memory_c((cmd_list+4) & mask, 0); + ctl_ptr_hi = get_memory_c((cmd_list+5) & mask, 0); + ctl_ptr += ((ctl_ptr_hi << 8) + ctl_ptr_lo) << 16; + cmd_list += 2; + } + + ctl_code = get_memory_c((cmd_list +4) & mask, 0); + + switch(ctl_code) { + case 0x00: + printf("Performing a reset on unit %d\n", unit); + break; + default: + halt_printf("control code: %02x unknown!\n", ctl_code); + } + + g_sim65816.engine.xreg = 0; + g_sim65816.engine.yreg = 2; + g_sim65816.engine.acc &= 0xff00; + g_sim65816.engine.psr &= ~1; + g_sim65816.engine.kpc = (rts_addr + 3 + ext) & 0xffff; + return; + break; + default: /* Unknown command! */ + /* set acc = 1, and set carry, and set kpc */ + g_sim65816.engine.xreg = (rts_addr) & 0xff; + g_sim65816.engine.yreg = (rts_addr >> 8) & 0xff; + g_sim65816.engine.acc = (g_sim65816.engine.acc & 0xff00) + 0x01; + g_sim65816.engine.psr |= 0x01; /* set carry */ + g_sim65816.engine.kpc = (rts_addr + 3 + ext) & 0xffff; + if(cmd != 0x4a && cmd != 0x48) { + /* Finder does 0x4a call before formatting disk */ + /* Many things do 0x48 call to see online drives */ + halt_printf("Just did smtport cmd:%02x rts_addr:%04x, " + "cmdlst:%06x\n", cmd, rts_addr, cmd_list); + } + return; + } + + halt_printf("Unknown smtport cmd:%02x, cmd_list:%06x, rts_addr:%06x\n", + cmd, cmd_list, rts_addr); +} + +void +do_c70a(word32 arg0) +{ + int cmd, unit; + int buf_lo, buf_hi; + int blk_lo, blk_hi; + int blk, buf; + int prodos_unit; + int size; + int ret; + + set_memory_c(0x7f8, 0xc7, 0); + + cmd = get_memory_c((g_sim65816.engine.direct + 0x42) & 0xffff, 0); + prodos_unit = get_memory_c((g_sim65816.engine.direct + 0x43) & 0xffff, 0); + buf_lo = get_memory_c((g_sim65816.engine.direct + 0x44) & 0xffff, 0); + buf_hi = get_memory_c((g_sim65816.engine.direct + 0x45) & 0xffff, 0); + blk_lo = get_memory_c((g_sim65816.engine.direct + 0x46) & 0xffff, 0); + blk_hi = get_memory_c((g_sim65816.engine.direct + 0x47) & 0xffff, 0); + + blk = (blk_hi << 8) + blk_lo; + buf = (buf_hi << 8) + buf_lo; + disk_printf("cmd: %02x, pro_unit: %02x, buf: %04x, blk: %04x\n", + cmd, prodos_unit, buf, blk); + + if((prodos_unit & 0x7f) == 0x70) { + unit = 0 + (prodos_unit >> 7); + } else if((prodos_unit & 0x7f) == 0x40) { + unit = 2 + (prodos_unit >> 7); + } else { + halt_printf("Unknown prodos_unit: %d\n", prodos_unit); + return; + } + + smartport_log(0xc70a, cmd, blk, buf); + + g_sim65816.engine.psr &= ~1; /* clear carry */ + if(g_sim65816.g_rom_version >= 3) { + g_sim65816.engine.kpc = 0xc764; + } else { + g_sim65816.engine.kpc = 0xc765; + } + + ret = 0x27; /* I/O error */ + if(cmd == 0x00) { + size = g_iwm.iwm.smartport[unit].image_size; + size = (size+511) / 512; + + smartport_log(0, unit, size, 0); + + ret = 0; + g_sim65816.engine.xreg = size & 0xff; + g_sim65816.engine.yreg = size >> 8; + } else if(cmd == 0x01) { + smartport_log(0, unit, buf, blk); + ret = do_read_c7(unit, buf, blk); + } else if(cmd == 0x02) { + smartport_log(0, unit, buf, blk); + ret = do_write_c7(unit, buf, blk); + } else if(cmd == 0x03) { /* format */ + smartport_log(0, unit, buf, blk); + ret = do_format_c7(unit); + } + + g_sim65816.engine.acc = (g_sim65816.engine.acc & 0xff00) | (ret & 0xff); + if(ret != 0) { + g_sim65816.engine.psr |= 1; + } + return; +} + +int +do_read_c7(int unit_num, word32 buf, int blk) +{ + byte local_buf[0x200]; + register word32 start_time; + register word32 end_time; + word32 val; + int len; + int fd; + int image_start; + int image_size; + int ret; + int i; + + if(unit_num < 0 || unit_num > MAX_C7_DISKS) { + halt_printf("do_read_c7: unit_num: %d\n", unit_num); + smartport_error(); + return 0x28; + } + + fd = g_iwm.iwm.smartport[unit_num].fd; + image_start = g_iwm.iwm.smartport[unit_num].image_start; + image_size = g_iwm.iwm.smartport[unit_num].image_size; + if(fd < 0) { + printf("c7_fd == %d!\n", fd); +#if 0 + if(blk != 2 && blk != 0) { + /* don't print error if only reading directory */ + smartport_error(); + halt_printf("Read unit:%02x blk:%04x\n", unit_num, blk); + } +#endif + return 0x2f; + } + + ret = lseek(fd, image_start + blk*0x200, SEEK_SET); + if(ret != image_start + blk*0x200) { + halt_printf("lseek returned %08x, errno: %d\n", ret, errno); + smartport_error(); + return 0x27; + } + + if(ret >= image_start + image_size) { + halt_printf("Tried to read from pos %08x on disk, (blk:%04x)\n", + ret, blk); + smartport_error(); + return 0x27; + } + + len = read(fd, (char*)&local_buf[0], 0x200); + if(len != 0x200) { + printf("read returned %08x, errno:%d, blk:%04x, unit: %02x\n", + len, errno, blk, unit_num); + halt_printf("name: %s\n", g_iwm.iwm.smartport[unit_num].name_ptr); + smartport_error(); + return 0x27; + } + + g_sim65816.g_io_amt += 0x200; + + if(buf >= 0xfc0000) { + disk_printf("reading into ROM, just returning\n"); + return 0; + } + + GET_ITIMER(start_time); + + for(i = 0; i < 0x200; i += 2) { + val = (local_buf[i+1] << 8) + local_buf[i]; + set_memory16_c(buf + i, val, 0); + } + + GET_ITIMER(end_time); + + g_iwm.g_cycs_in_io_read += (end_time - start_time); + + return 0; + +} + +int +do_write_c7(int unit_num, word32 buf, int blk) +{ + word32 local_buf[0x200/4]; + Disk *dsk; + word32 *ptr; + word32 val1, val2; + word32 val; + int len; + int ret; + int fd; + int image_start; + int image_size; + int i; + + if(unit_num < 0 || unit_num > MAX_C7_DISKS) { + halt_printf("do_write_c7: unit_num: %d\n", unit_num); + smartport_error(); + return 0x28; + } + + dsk = &(g_iwm.iwm.smartport[unit_num]); + fd = dsk->fd; + image_start = dsk->image_start; + image_size = dsk->image_size; + if(fd < 0) { + halt_printf("c7_fd == %d!\n", fd); + smartport_error(); + return 0x28; + } + + ptr = &(local_buf[0]); + for(i = 0; i < 0x200; i += 4) { + val1 = get_memory16_c(buf + i, 0); + val2 = get_memory16_c(buf + i + 2, 0); + /* reorder the little-endian bytes to be big-endian */ +#ifdef KEGS_LITTLE_ENDIAN + val = (val2 << 16) + val1; +#else + val = (val1 << 24) + ((val1 << 8) & 0xff0000) + + ((val2 << 8) & 0xff00) + (val2 >> 8); +#endif + *ptr++ = val; + } + + ret = lseek(fd, image_start + blk*0x200, SEEK_SET); + if(ret != image_start + blk*0x200) { + halt_printf("lseek returned %08x, errno: %d\n", ret, errno); + smartport_error(); + return 0x27; + } + + if(ret >= image_start + image_size) { + halt_printf("Tried to write to %08x\n", ret); + smartport_error(); + return 0x27; + } + + if(dsk->write_prot) { + printf("Write, but %s is write protected!\n", dsk->name_ptr); + return 0x2b; + } + + if(dsk->write_through_to_unix == 0) { + halt_printf("Write to %s, but not wr_thru!\n", dsk->name_ptr); + return 0x00; + } + + len = write(fd, (byte *)&local_buf[0], 0x200); + if(len != 0x200) { + halt_printf("write ret %08x bytes, errno: %d\n", len, errno); + smartport_error(); + return 0x27; + } + + g_sim65816.g_io_amt += 0x200; + + return 0; + +} + +int +do_format_c7(int unit_num) +{ + byte local_buf[0x1000]; + Disk *dsk; + int len; + int ret; + int sum; + int total; + int max; + int image_start; + int image_size; + int fd; + int i; + + if(unit_num < 0 || unit_num > MAX_C7_DISKS) { + halt_printf("do_format_c7: unit_num: %d\n", unit_num); + smartport_error(); + return 0x28; + } + + dsk = &(g_iwm.iwm.smartport[unit_num]); + fd = dsk->fd; + image_start = dsk->image_start; + image_size = dsk->image_size; + if(fd < 0) { + halt_printf("c7_fd == %d!\n", fd); + smartport_error(); + return 0x28; + } + + for(i = 0; i < 0x1000; i++) { + local_buf[i] = 0; + } + + ret = lseek(fd, image_start, SEEK_SET); + if(ret != image_start) { + halt_printf("lseek returned %08x, errno: %d\n", ret, errno); + smartport_error(); + return 0x27; + } + + if(dsk->write_prot) { + printf("Format, but %s is write protected!\n", dsk->name_ptr); + return 0x2b; + } + + if(dsk->write_through_to_unix == 0) { + printf("Format of %s ignored\n", dsk->name_ptr); + return 0x00; + } + + sum = 0; + total = image_size; + + while(sum < total) { + max = MIN(0x1000, total-sum); + len = write(fd, &local_buf[0], max); + if(len != max) { + halt_printf("write ret %08x, errno:%d\n", len, errno); + smartport_error(); + return 0x27; + } + sum += len; + } + + return 0; +} + + +void +do_c700(word32 ret) +{ + disk_printf("do_c700 called, ret: %08x\n", ret); + + ret = do_read_c7(0, 0x800, 0); + + set_memory_c(0x7f8, 7, 0); + set_memory16_c(0x42, 0x7001, 0); + set_memory16_c(0x44, 0x0800, 0); + set_memory16_c(0x46, 0x0000, 0); + g_sim65816.engine.xreg = 0x70; + g_sim65816.engine.kpc = 0x801; + + if(ret != 0) { + printf("Failure reading boot disk in s7d1!\n"); +#if defined(_DEBUG) || defined(DRIVER_IOS) + const byte iphonebootstrap[][0x80]={ + { + 0x20,0x58,0xFC, // call FC58 CLS + 0xa0,0x00, // ldy 0 + 0xb9,0x80,0x3, // @loop lda 380,y + 0xf0,0x13, // beq @end + 0x5A, // phy + 0xc9,0x0d, // cmp 0d + 0xd0,0x05, // bne @reg + 0x20,0x62,0xFC, // call lf + 0x80,0x05, // bra @next + 0x09,0x80, // ora 80 + 0x20,0xED,0xFD, // call cout + 0x7A, // ply + 0xC8, // @next iny + 0x80,0xE8, // @bra loop + // 0x4c,0x59,0xFF, // @end call FF59 dbg + 0x4c,0x00,0xe0, + 0x00 + }, + { + 0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D, + ']','W','e','l','c','o','m','e',' ','t','o',' ', + +#if 0 + 'B','e','s','t',' ','O','f',' ','F','T','A', +#else + 'A','c','t','i','v','e','G','S', +#endif + 0x0D, + ' ','S','w','i','p','e',' ','u','p','/','d','o','w','n',' ','f','o','r',' ','m','e','n','u',0x0D, + 0x0D, + 0 + } + }; + + extern byte* g_memory_ptr; + memcpy(g_memory_ptr+0x300,&iphonebootstrap,sizeof(iphonebootstrap)); + + g_sim65816.engine.kpc = 0x0300; /* Jump to monitor, fix $36-$39 */ +#else + g_sim65816.engine.kpc = 0xff59; /* Jump to monitor, fix $36-$39 */ +#endif + } +} + diff --git a/kegs/Src/sound.cpp b/kegs/Src/sound.cpp new file mode 100644 index 0000000..365e5a1 --- /dev/null +++ b/kegs/Src/sound.cpp @@ -0,0 +1,1925 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "defc.h" +#include "moremem.h" +#include "sim65816.h" +#include "StdString.h" +#include "driver.h" + +#define INCLUDE_RCSID_C +#include "sound.h" +#undef INCLUDE_RCSID_C + +s_sound g_sound; + +system_sound g_system_sounds[] = +{ + { "floppy_eject.wav", 0 }, + { "Spin Up Search 1.wav", 0 }, + { "Spin Up Search 2.wav", 0 }, + { "Search Skip Search 1.wav", 0 }, + { "Search Skip Search 2.wav", 0 }, + { "Search Skip Search 3.wav", 0 }, + { "Search Skip Search 4.wav", 0 }, + { "Search Skip Search 5.wav", 0 }, +}; + +#if 0 +# define DO_DOC_LOG +#endif + +extern int g_use_shmem; +word32 *g_sound_shm_addr ; + +//extern int g_preferred_rate; + +void U_STACK_TRACE(); + +/* local function prototypes */ +void doc_write_ctl_reg(int osc, int val, double dsamps); + +#define LEN_DOC_LOG 128 + +#define UPDATE_G_DCYCS_PER_DOC_UPDATE(osc_en) \ + g_sound.g_dcycs_per_doc_update = (double)((osc_en + 2) * DCYCS_1_MHZ) / \ + DOC_SCAN_RATE; \ + g_sound.g_dupd_per_dcyc = 1.0 / g_sound.g_dcycs_per_doc_update; \ + g_sound.g_drecip_osc_en_plus_2 = 1.0 / (double)(osc_en + 2); + +#define DOC_SCAN_RATE (DCYCS_28_MHZ/32.0) + +#define SND_PTR_SHIFT 14 +#define SND_PTR_SHIFT_DBL ((double)(1 << SND_PTR_SHIFT)) + +STRUCT(Doc_log) { + char *msg; + int osc; + double dsamps; + double dtmp2; + int etc; + Doc_reg doc_reg; +}; + +Doc_log g_doc_log[LEN_DOC_LOG]; +int g_doc_log_pos = 0; + + +#ifdef DO_DOC_LOG +# define DOC_LOG(a,b,c,d) doc_log_rout(a,b,c,d) +#else +# define DOC_LOG(a,b,c,d) +#endif + +word32 g_cycs_in_sound1 = 0; +word32 g_cycs_in_sound2 = 0; +word32 g_cycs_in_sound3 = 0; +word32 g_cycs_in_sound4 = 0; +word32 g_cycs_in_start_sound = 0; +word32 g_cycs_in_est_sound = 0; + +int g_num_snd_plays = 0; +int g_num_doc_events = 0; +int g_num_start_sounds = 0; +int g_num_scan_osc = 0; +int g_num_recalc_snd_parms = 0; + +int g_sound_file_num = 0; +int g_sound_file_fd = -1; +int g_send_sound_to_file = 0; +int g_send_file_bytes = 0; + +float g_fvoices = 0.0f; + + +void +doc_log_rout(char *msg, int osc, double dsamps, int etc) +{ + int pos; + + pos = g_doc_log_pos; + g_doc_log[pos].msg = msg; + g_doc_log[pos].osc = osc; + g_doc_log[pos].dsamps = dsamps; + g_doc_log[pos].dtmp2 = g_sound.g_last_sound_play_dsamp; + g_doc_log[pos].etc = etc; + if(osc >= 0 && osc < 32) { + g_doc_log[pos].doc_reg = g_sound.g_doc_regs[osc]; + } + pos++; + if(pos >= LEN_DOC_LOG) { + pos = 0; + } + + doc_printf("log: %s, osc:%d dsamp:%f, etc:%d\n", msg, osc, dsamps, etc); + + g_doc_log_pos = pos; +} + + +void +show_doc_log(void) +{ + FILE *docfile; + Doc_reg *rptr; + double dsamp_start; + int osc, ctl, freq; + int pos; + int i; + + docfile = fopen("doc_log_out", "w"); + if(docfile == 0) { + printf("fopen failed, errno: %d\n", errno); + return; + } + pos = g_doc_log_pos; + fprintf(docfile, "DOC log pos: %d\n", pos); + dsamp_start = g_doc_log[pos].dsamps; + for(i = 0; i < LEN_DOC_LOG; i++) { + rptr = &(g_doc_log[pos].doc_reg); + osc = g_doc_log[pos].osc; + ctl = rptr->ctl; + freq = rptr->freq; + if(osc < 0) { + ctl = 0; + freq = 0; + } + fprintf(docfile, "%03x:%03x: %-11s ds:%11.1f dt2:%10.1f " + "etc:%08x o:%02x c:%02x fq:%04x\n", + i, pos, g_doc_log[pos].msg, + g_doc_log[pos].dsamps - dsamp_start, + g_doc_log[pos].dtmp2, + g_doc_log[pos].etc, osc & 0xff, ctl, freq); + if(osc >= 0) { + fprintf(docfile, " ire:%d,%d,%d ptr4:%08x " + "inc4:%08x comp_ds:%.1f left:%04x, vol:%02x " + "wptr:%02x, wsz:%02x, 4st:%08x, 4end:%08x\n", + rptr->has_irq_pending, rptr->running, + rptr->event, 4*rptr->cur_acc, 4*rptr->cur_inc, + rptr->complete_dsamp - dsamp_start, + rptr->samps_left, rptr->vol, rptr->waveptr, + rptr->wavesize, 4*rptr->cur_start, + 4*rptr->cur_end); + } + pos++; + if(pos >= LEN_DOC_LOG) { + pos = 0; + } + } + + fprintf(docfile, "cur_dcycs: %f\n", g_sim65816.g_cur_dcycs); + fprintf(docfile, "dsamps_now: %f\n", + (g_sim65816.g_cur_dcycs * g_sound.g_dsamps_per_dcyc) - dsamp_start); + fprintf(docfile, "g_sound.g_doc_num_osc_en: %d\n", g_sound.g_doc_num_osc_en); + fclose(docfile); +} + +void +sound_init() +{ + Doc_reg *rptr; + int i; + + for(i = 0; i < 32; i++) { + rptr = &(g_sound.g_doc_regs[i]); + rptr->dsamp_ev = 0.0; + rptr->dsamp_ev2 = 0.0; + rptr->complete_dsamp = 0.0; + rptr->samps_left = 0; + rptr->cur_acc = 0; + rptr->cur_inc = 0; + rptr->cur_start = 0; + rptr->cur_end = 0; + rptr->cur_mask = 0; + rptr->size_bytes = 0; + rptr->event = 0; + rptr->running = 0; + rptr->has_irq_pending = 0; + rptr->freq = 0; + rptr->vol = 0; + rptr->waveptr = 0; + rptr->ctl = 1; + rptr->wavesize = 0; + rptr->last_samp_val = 0; + } + + // OG sound globals initialization + g_sound.g_num_c030_fsamps = 0; + g_sound.g_sound_shm_pos = 0; + g_sound.g_queued_samps = 0; + g_sound.g_queued_nonsamps = 0; + + g_sound.doc_sound_ctl = 0; + g_sound.doc_saved_val = 0; + g_sound.g_doc_num_osc_en = 1; + g_sound.g_dcycs_per_doc_update = 1.0; + g_sound.g_dupd_per_dcyc = 1.0; + g_sound.g_drecip_osc_en_plus_2 = 1.0 / (double)(1 + 2); + + g_sound.doc_reg_e0 = 0xff; + //g_sound.g_audio_rate = 0; + g_sound.g_daudio_rate = 0.0; + g_sound.g_drecip_audio_rate = 0.0; + g_sound.g_dsamps_per_dcyc = 0.0; + g_sound.g_dcycs_per_samp = 0.0; + g_sound.g_fsamps_per_dcyc = 0.0; + + g_sound.g_doc_vol = 2; + + g_sound.g_last_sound_play_dsamp = 0.0; + + sound_init_general(); +} + + +void +sound_init_general() +{ + + int size; + int ret; + + ret = 0; + + if(g_sound.g_audio_enable == 0) + { + set_audio_rate(g_sound.g_audio_rate); + // set_audio_rate(g_preferred_rate); + return; + } + + size = SOUND_SHM_SAMP_SIZE * SAMPLE_CHAN_SIZE; + g_sound_shm_addr = x_sound_allocate(size);; + + fflush(stdout); + + x_snd_init(g_sound_shm_addr); + + child_sound_loop(-1, -1, g_sound_shm_addr); + + +} + +void +parent_sound_get_sample_rate(int read_fd) +{ + word32 tmp; + int ret; + + ret = read(read_fd, (char*)&tmp, 4); + if(ret != 4) { + printf("parent dying, could not get sample rate from child\n"); + printf("ret: %d, fd: %d errno:%d\n", ret, read_fd, errno); + x_exit(1); + } + close(read_fd); + + set_audio_rate(tmp); +} + +void +set_audio_rate(int rate) +{ + printf("set audio rate : %d\n",rate); + g_sound.g_audio_rate = rate; + g_sound.g_daudio_rate = (rate)*1.0; + g_sound.g_drecip_audio_rate = 1.0/(rate); + g_sound.g_dsamps_per_dcyc = ((rate*1.0) / DCYCS_1_MHZ); + g_sound.g_dcycs_per_samp = (DCYCS_1_MHZ / (rate*1.0)); + g_sound.g_fsamps_per_dcyc = (float)((rate*1.0) / DCYCS_1_MHZ); +} + +void +sound_reset(double dcycs) +{ + double dsamps; + int i; + + dsamps = dcycs * g_sound.g_dsamps_per_dcyc; + for(i = 0; i < 32; i++) { + doc_write_ctl_reg(i, g_sound.g_doc_regs[i].ctl | 1, dsamps); + g_sound.doc_reg_e0 = 0xff; // OG : Don't understand???? + if(g_sound.g_doc_regs[i].has_irq_pending) { + halt_printf("reset: has_irq[%02x] = %d\n", i, + g_sound.g_doc_regs[i].has_irq_pending); + } + g_sound.g_doc_regs[i].has_irq_pending = 0; + } + if(g_sound.g_num_osc_interrupting) { + halt_printf("reset: num_osc_int:%d\n", g_sound.g_num_osc_interrupting); + } + g_sound.g_num_osc_interrupting = 0; + +// OG No reason to reset the number of active oscillo on reset : this should only be done on startup. + /* + g_sound.g_doc_num_osc_en = 1; + UPDATE_G_DCYCS_PER_DOC_UPDATE(1); + */ +} + + +void sound_shutdown() +{ + // OG stop sound and free memory on sound_shutdown + sound_reset(g_sim65816.g_cur_dcycs); + + x_snd_shutdown(); + + extern void x_sound_free(word32* mem); + x_sound_free(g_sound_shm_addr); + g_sound_shm_addr = NULL; + + +} + + + +void +sound_update(double dcycs) +{ + double dsamps; + /* Called every VBL time to update sound status */ + + /* "play" sounds for this vbl */ + + dsamps = dcycs * g_sound.g_dsamps_per_dcyc; + DOC_LOG("do_snd_pl", -1, dsamps, 0); + sound_play(dsamps); +} + + +void +open_sound_file() +{ + char name[256]; + int fd; + + sprintf(name, "snd.out.%d", g_sound_file_num); + + fd = open(name, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0x1ff); + if(fd < 0) { + printf("open_sound_file open ret: %d, errno: %d\n", fd, errno); + x_exit(1); + } + + g_sound_file_fd = fd; + g_sound_file_num++; + g_send_file_bytes = 0; +} + +void +close_sound_file() +{ + if(g_sound_file_fd >= 0) { + close(g_sound_file_fd); + } + + g_sound_file_fd = -1; +} + +void +check_for_range(word32 *addr, int num_samps, int offset) +{ + short *shortptr; + int i; + int left; + int right; + int max; + + max = -32768; + + if(num_samps > SOUND_SHM_SAMP_SIZE) { + halt_printf("num_samps: %d > %d!\n", num_samps, + SOUND_SHM_SAMP_SIZE); + } + + for(i = 0; i < num_samps; i++) { + shortptr = (short *)&(addr[i]); + left = shortptr[0]; + right = shortptr[1]; + if((left > 0x3000) || (right > 0x3000)) { + halt_printf("Sample %d of %d at snd_buf: %p is: " + "%d/%d\n", i + offset, num_samps, + &addr[i], left, right); + return; + } + + max = MAX(max, left); + max = MAX(max, right); + } + + printf("check4 max: %d over %d\n", max, num_samps); +} + +void +send_sound_to_file(word32 *addr, int shm_pos, int num_samps) +{ + int size; + int ret; + + if(g_sound_file_fd < 0) { + open_sound_file(); + } + + size = 0; + if((num_samps + shm_pos) > SOUND_SHM_SAMP_SIZE) { + size = SOUND_SHM_SAMP_SIZE - shm_pos; + g_send_file_bytes += (size * 4); + + ret = write(g_sound_file_fd, &(addr[shm_pos]), 4*size); + if(ret != 4*size) { + halt_printf("wrote %d not %d\n", ret, 4*size); + } + + if(g_sound.g_doc_vol < 3) { + check_for_range(&(addr[shm_pos]), size, 0); + } else { + printf("Not checking %d bytes since vol: %d\n", + 4*size, g_sound.g_doc_vol); + } + shm_pos = 0; + num_samps -= size; + } + + g_send_file_bytes += (num_samps * 4); + + ret = write(g_sound_file_fd, &(addr[shm_pos]), 4*num_samps); + if(ret != 4*num_samps) { + halt_printf("wrote %d not %d\n", ret, 4*num_samps); + } + + if(g_sound.g_doc_vol < 3) { + check_for_range(&(addr[shm_pos]), num_samps, size); + } else { + printf("Not checking2 %d bytes since vol: %d\n", + 4*num_samps, g_sound.g_doc_vol); + } + +} + +void +send_sound(int real_samps, int size) +{ + word32 tmp; + int ret; + + if(g_sound.g_audio_enable == 0) { + printf("Entered send_sound but audio off!\n"); + x_exit(2); + } + + if(real_samps) { + tmp = size + 0xa2000000; + } else { + tmp = size + 0xa1000000; + } + DOC_LOG("send_sound", -1, g_sound.g_last_sound_play_dsamp, + (real_samps << 30) + size); + +#if !defined(DRIVER_LINUX) + ret = 0; + child_sound_playit(tmp); +#else + /* Although this looks like a big/little-endian issue, since the */ + /* child is also reading an int, it just works with no byte swap */ + ret = write(g_pipe_fd[1], &tmp, 4); + if(ret != 4) { + halt_printf("send_sound, wr ret: %d, errno: %d\n", ret, errno); + } +#endif +} + +void +show_c030_state() +{ + show_c030_samps(&(g_sound.g_samp_buf[0]), 100); +} + +void +show_c030_samps(int *outptr, int num) +{ + int i; + + printf("c030_fsamps[]: %d\n", g_sound.g_num_c030_fsamps); + + for(i = 0; i < g_sound.g_num_c030_fsamps+2; i++) { + printf("%3d: %5.3f\n", i, g_sound.c030_fsamps[i]); + } + + printf("Samples[] = %d\n", num); + + for(i = 0; i < num+2; i++) { + printf("%4d: %d %d\n", i, outptr[0], outptr[1]); + outptr += 2; + } +} + + +void +sound_play(double dsamps) +{ + register word32 start_time1, start_time2, start_time3, start_time4; + register word32 end_time1, end_time2, end_time3; + Doc_reg *rptr; + int *outptr; + int *outptr_start; + word32 *sndptr; + double complete_dsamp; + double cur_dsamp; + double last_dsamp; + double dsamp_now; + double dnum_samps; + int val, val2; + int new_val; + float ftmp; + int imul; + int off; + int num; + float fsampnum; + float next_fsampnum; + int c030_lo_val, c030_hi_val; + float fc030_range; + float fc030_base; + int sampnum; + int next_sampnum; + float fpercent; + int c030_state; + int val0, val1; + word32 cur_acc; + word32 cur_pos; + word32 cur_mask; + word32 cur_inc; + word32 cur_end; + int ctl; + int num_osc_en; + int samps_left; + int samps_to_do; + int samps_played; + int samp_offset; + int snd_buf_init; + int pos; + int num_running; + int num_samps; + int osc; + int done; + int i, j; + + + GET_ITIMER(start_time1); + + g_num_snd_plays++; + if(g_sound.g_sound_play_depth) { + halt_printf("Nested sound_play!\n"); + } + + g_sound.g_sound_play_depth++; + + /* calc sample num */ + + last_dsamp = g_sound.g_last_sound_play_dsamp; + num_samps = (int)(dsamps - g_sound.g_last_sound_play_dsamp); + dnum_samps = (double)num_samps; + + dsamp_now = last_dsamp + dnum_samps; + + if(num_samps < 1) { + /* just say no */ + g_sound.g_sound_play_depth--; + return; + } + + DOC_LOG("sound_play", -1, dsamp_now, num_samps); + + if(num_samps > MAX_SND_BUF) { + printf("num_samps: %d, too big!\n", num_samps); + g_sound.g_sound_play_depth--; + return; + } + + + GET_ITIMER(start_time4); + + outptr_start = &(g_sound.g_samp_buf[0]); + outptr = outptr_start; + + snd_buf_init = 0; + + samps_played = 0; + + num = g_sound.g_num_c030_fsamps; + + if(num || ((g_sim65816.g_vbl_count - g_sound.g_last_c030_vbl_count) < 240)) { + + if(num) { + g_sound.g_last_c030_vbl_count = g_sim65816.g_vbl_count; + } + + pos = 0; + outptr = outptr_start; + c030_state = g_sound.g_c030_state; + + c030_hi_val = ((VAL_C030_BASE + VAL_C030_RANGE)*g_sound.g_doc_vol) >> 4; + c030_lo_val = (VAL_C030_BASE * g_sound.g_doc_vol) >> 4; + + fc030_range = (float)(((VAL_C030_RANGE) * g_sound.g_doc_vol) >> 4); + fc030_base = (float)(((VAL_C030_BASE) * g_sound.g_doc_vol) >> 4); + + val = c030_lo_val; + if(c030_state) { + val = c030_hi_val; + } + + snd_buf_init++; + + g_sound.c030_fsamps[num] = (float)(num_samps); + g_sound.c030_fsamps[num+1] = (float)(num_samps+1); + + ftmp = (float)num_samps; + /* ensure that all samps are in range */ + for(i = num - 1; i >= 0; i--) { + if(g_sound.c030_fsamps[i] > ftmp) { + g_sound.c030_fsamps[i] = ftmp; + } + } + + num++; + fsampnum = g_sound.c030_fsamps[0]; + sampnum = (int)fsampnum; + fpercent = (float)0.0; + i = 0; + + while(i < num) { + next_fsampnum = g_sound.c030_fsamps[i+1]; + next_sampnum = (int)next_fsampnum; + if(sampnum < 0 || sampnum > num_samps) { + halt_printf("play c030: [%d]:%f is %d, > %d\n", + i, fsampnum, sampnum, num_samps); + break; + } + + /* write in samples to all samps < me */ + new_val = c030_lo_val; + if(c030_state) { + new_val = c030_hi_val; + } + for(j = pos; j < sampnum; j++) { + outptr[0] = new_val; + outptr[1] = new_val; + outptr += 2; + pos++; + } + + /* now, calculate me */ + fpercent = (float)0.0; + if(c030_state) { + fpercent = (fsampnum - (float)sampnum); + } + + c030_state = !c030_state; + + while(next_sampnum == sampnum) { + if(c030_state) { + fpercent += (next_fsampnum - fsampnum); + } + i++; + fsampnum = next_fsampnum; + + next_fsampnum = g_sound.c030_fsamps[i+1]; + next_sampnum = (int)next_fsampnum; + c030_state = !c030_state; + } + + if(c030_state) { + /* add in fractional time */ + ftmp = (float)(int)(fsampnum + 1.0f); //OG added cast + fpercent += (ftmp - fsampnum); + } + + if((fpercent < (float)0.0) || (fpercent > (float)1.0)) { + halt_printf("fpercent: %d = %f\n", i, fpercent); + show_c030_samps(outptr_start, num_samps); + break; + } + + val = (int)((fpercent * fc030_range) + fc030_base); + outptr[0] = val; + outptr[1] = val; + outptr += 2; + pos++; + i++; + + sampnum = next_sampnum; + fsampnum = next_fsampnum; + } + + samps_played += num_samps; + + /* since we pretended to get one extra sample, we will */ + /* have toggled the speaker one time too many. Fix it */ + g_sound.g_c030_state = !c030_state; + + if(g_send_sound_to_file) { + show_c030_samps(outptr_start, num_samps); + } + } + + g_sound.g_num_c030_fsamps = 0; + + GET_ITIMER(start_time2); + + num_running = 0; + + num_osc_en = g_sound.g_doc_num_osc_en; + + done = 0; + while(!done) { + done = 1; + for(j = 0; j < num_osc_en; j++) { + osc = j; + rptr = &(g_sound.g_doc_regs[osc]); + complete_dsamp = rptr->complete_dsamp; + samps_left = rptr->samps_left; + cur_acc = rptr->cur_acc; + cur_mask = rptr->cur_mask; + cur_inc = rptr->cur_inc; + cur_end = rptr->cur_end; + if(!rptr->running || cur_inc == 0 || + (complete_dsamp >= dsamp_now)) { + continue; + } + + done = 0; + ctl = rptr->ctl; + + samp_offset = 0; + if(complete_dsamp > last_dsamp) { + samp_offset = (int)(complete_dsamp- last_dsamp); + if(samp_offset > num_samps) { + rptr->complete_dsamp = dsamp_now; + continue; + } + } + outptr = outptr_start + 2 * samp_offset; + if(ctl & 0x10) { + /* other channel */ + outptr += 1; + } + + imul = (rptr->vol * g_sound.g_doc_vol); + off = imul * 128; + + samps_to_do = MIN(samps_left, num_samps - samp_offset); + if(imul == 0 || samps_to_do == 0) { + /* produce no sound */ + samps_left = samps_left - samps_to_do; + cur_acc += cur_inc * samps_to_do; + rptr->samps_left = samps_left; + rptr->cur_acc = cur_acc; + cur_dsamp = last_dsamp + + (double)(samps_to_do + samp_offset); + DOC_LOG("nosnd", osc, cur_dsamp, samps_to_do); + rptr->complete_dsamp = dsamp_now; + cur_pos = rptr->cur_start+(cur_acc & cur_mask); + if(samps_left <= 0) { + doc_sound_end(osc, 1, cur_dsamp, + dsamp_now); + val = 0; + j--; + } else { + val = g_sound.doc_ram[cur_pos >> SND_PTR_SHIFT]; + } + rptr->last_samp_val = val; + continue; + } + + if(snd_buf_init == 0) { + memset(outptr_start, 0, + 2*sizeof(outptr_start[0])*num_samps); + snd_buf_init++; + } + + val = 0; + rptr->complete_dsamp = dsamp_now; + cur_pos = rptr->cur_start + (cur_acc & cur_mask); + for(i = 0; i < samps_to_do; i++) { + pos = cur_pos >> SND_PTR_SHIFT; + cur_pos += cur_inc; + cur_acc += cur_inc; + val = g_sound.doc_ram[pos]; + + val2 = (val * imul - off) >> 4; + if((val == 0) || (cur_pos >= cur_end)) { + cur_dsamp = last_dsamp + + (double)(samp_offset + i + 1); + rptr->cur_acc = cur_acc; + rptr->samps_left = 0; + DOC_LOG("end or 0", osc, cur_dsamp, + (pos << 16) + ((i &0xff) << 8) + + val); + doc_sound_end(osc, val, cur_dsamp, + dsamp_now); + val = 0; + break; + } + + val2 = outptr[0] + val2; + + samps_left--; + *outptr = val2; + outptr += 2; + } + + rptr->last_samp_val = val; + + if(val != 0) { + rptr->cur_acc = cur_acc; + rptr->samps_left = samps_left; + rptr->complete_dsamp = dsamp_now; + } + + samps_played += samps_to_do; + DOC_LOG("splayed", osc, dsamp_now, + (samps_to_do << 16) + (pos & 0xffff)); + } + } + + GET_ITIMER(end_time2); + + g_cycs_in_sound2 += (end_time2 - start_time2); + + g_sound.g_last_sound_play_dsamp = dsamp_now; + + GET_ITIMER(start_time3); + + outptr = outptr_start; + + pos = g_sound.g_sound_shm_pos; + sndptr = g_sound_shm_addr; + +#if 0 + printf("samps_left: %d, num_samps: %d\n", samps_left, num_samps); +#endif + + if(g_sound.g_audio_enable != 0) { + + if(snd_buf_init) { + /* convert sound buf */ + + for(i = 0; i < num_samps; i++) { + val0 = outptr[0]; + val1 = outptr[1]; + val = val0; + if(val0 > 32767) { + val = 32767; + } + if(val0 < -32768) { + val = -32768; + } + + val0 = val; + val = val1; + if(val1 > 32767) { + val = 32767; + } + if(val1 < -32768) { + val = -32768; + } + + + outptr += 2; + +#if defined(__linux__) || defined(OSS) + /* Linux seems to expect little-endian */ + /* samples always, even on PowerPC */ +# ifdef KEGS_LITTLE_ENDIAN + sndptr[pos] = (val << 16) + (val0 & 0xffff); +# else + sndptr[pos] = ((val & 0xff) << 24) + + ((val & 0xff00) << 8) + + ((val0 & 0xff) << 8) + + ((val0 >> 8) & 0xff); +# endif +#else +# ifdef KEGS_LITTLE_ENDIAN + sndptr[pos] = (val << 16) + (val0 & 0xffff); +# else + sndptr[pos] = (val0 << 16) + (val & 0xffff); +# endif +#endif + pos++; + if(pos >= SOUND_SHM_SAMP_SIZE) { + pos = 0; + } + } + + if(g_sound.g_queued_nonsamps) { + /* force out old 0 samps */ + send_sound(0, g_sound.g_queued_nonsamps); + g_sound.g_queued_nonsamps = 0; + } + + if(g_send_sound_to_file) { + send_sound_to_file(g_sound_shm_addr, + g_sound.g_sound_shm_pos, num_samps); + } + + g_sound.g_queued_samps += num_samps; + } else { + /* move pos */ + pos += num_samps; + while(pos >= SOUND_SHM_SAMP_SIZE) { + pos -= SOUND_SHM_SAMP_SIZE; + } + + if(g_send_sound_to_file) { + send_sound_to_file(g_sound.zero_buf, g_sound.g_sound_shm_pos, + num_samps); + } + + if(g_sound.g_queued_samps) { + /* force out old non-0 samps */ + send_sound(1, g_sound.g_queued_samps); + g_sound.g_queued_samps = 0; + } + + g_sound.g_queued_nonsamps += num_samps; + } + + } + + g_sound.g_sound_shm_pos = pos; + + + GET_ITIMER(end_time3); + + g_fvoices += ((float)(samps_played) * (float)(g_sound.g_drecip_audio_rate)); + + if(g_sound.g_audio_enable != 0) { + if(g_sound.g_queued_samps >= (g_sound.g_audio_rate/32)) { + send_sound(1, g_sound.g_queued_samps); + g_sound.g_queued_samps = 0; + } + + if(g_sound.g_queued_nonsamps >= (g_sound.g_audio_rate/32)) { + send_sound(0, g_sound.g_queued_nonsamps); + g_sound.g_queued_nonsamps = 0; + } + } + + GET_ITIMER(end_time1); + + g_cycs_in_sound1 += (end_time1 - start_time1); + g_cycs_in_sound3 += (end_time3 - start_time3); + g_cycs_in_sound4 += (start_time2 - start_time4); + + g_sound.g_last_sound_play_dsamp = dsamp_now; + + g_sound.g_sound_play_depth--; +} + + +void +doc_handle_event(int osc, double dcycs) +{ + double dsamps; + + /* handle osc stopping and maybe interrupting */ + + g_num_doc_events++; + + dsamps = dcycs * g_sound.g_dsamps_per_dcyc; + + DOC_LOG("doc_ev", osc, dcycs, 0); + + g_sound.g_doc_regs[osc].event = 0; + + sound_play(dsamps); + +} + +void +doc_sound_end(int osc, int can_repeat, double eff_dsamps, double dsamps) +{ + Doc_reg *rptr, *orptr; + int mode, omode; + int other_osc; + int one_shot_stop; + int ctl; + + /* handle osc stopping and maybe interrupting */ + + if(osc < 0 || osc > 31) { + printf("doc_handle_event: osc: %d!\n", osc); + return; + } + + rptr = &(g_sound.g_doc_regs[osc]); + ctl = rptr->ctl; + + if(rptr->event) { + remove_event_doc(osc); + } + rptr->event = 0; + rptr->cur_acc = 0; /* reset internal accumulator*/ + + /* check to make sure osc is running */ + if(ctl & 0x01) { + /* Oscillator already stopped. */ + halt_printf("Osc %d interrupt, but it was already stop!\n",osc); +#ifdef HPUX + U_STACK_TRACE(); +#endif + return; + } + + if(ctl & 0x08) { + if(rptr->has_irq_pending == 0) { + add_sound_irq(osc); + } + } + + if(!rptr->running) { + halt_printf("Doc event for osc %d, but ! running\n", osc); + } + + rptr->running = 0; + + mode = (ctl >> 1) & 3; + other_osc = osc ^ 1; + orptr = &(g_sound.g_doc_regs[other_osc]); + omode = (orptr->ctl >> 1) & 3; + + /* If either this osc or it's partner is in swap mode, treat the */ + /* pair as being in swap mode. This Ensoniq feature pointed out */ + /* by Ian Schmidt */ + if(mode == 0 && can_repeat) { + /* free-running mode with no 0 byte! */ + /* start doing it again */ + + start_sound(osc, eff_dsamps, dsamps); + + return; + } else if((mode == 3) || (omode == 3)) { + /* swap mode (even if we're one_shot and partner is swap)! */ + /* unless we're one-shot and we hit a 0-byte--then */ + /* Olivier Goguel says just stop */ + rptr->ctl |= 1; + one_shot_stop = (mode == 1) && (!can_repeat); + if(!one_shot_stop && !orptr->running && + (orptr->ctl & 0x1)) { + orptr->ctl = orptr->ctl & (~1); + start_sound(other_osc, eff_dsamps, dsamps); + } + return; + } else { + /* stop the oscillator */ + rptr->ctl |= 1; + } + + return; +} + +void +add_sound_irq(int osc) +{ + int num_osc_interrupting; + + if(g_sound.g_doc_regs[osc].has_irq_pending) { + halt_printf("Adding sound_irq for %02x, but irq_p: %d\n", osc, + g_sound.g_doc_regs[osc].has_irq_pending); + } + + num_osc_interrupting = g_sound.g_num_osc_interrupting + 1; + g_sound.g_doc_regs[osc].has_irq_pending = num_osc_interrupting; + g_sound.g_num_osc_interrupting = num_osc_interrupting; + + add_irq(IRQ_PENDING_DOC); + if(num_osc_interrupting == 1) { + g_sound.doc_reg_e0 = 0x00 + (osc << 1); + } + + DOC_LOG("add_irq", osc, g_cur_dcycs * g_sound.g_dsamps_per_dcyc, 0); +} + +void +remove_sound_irq(int osc, int must) +{ + Doc_reg *rptr; + int num_osc_interrupt; + int has_irq_pending; + int first; + int i; + + doc_printf("remove irq for osc: %d, has_irq: %d\n", + osc, g_sound.g_doc_regs[osc].has_irq_pending); + + num_osc_interrupt = g_sound.g_doc_regs[osc].has_irq_pending; + first = 0; + if(num_osc_interrupt) { + g_sound.g_num_osc_interrupting--; + g_sound.g_doc_regs[osc].has_irq_pending = 0; + DOC_LOG("rem_irq", osc, g_cur_dcycs * g_sound.g_dsamps_per_dcyc, 0); + if(g_sound.g_num_osc_interrupting == 0) { + remove_irq(IRQ_PENDING_DOC); + } + + first = 0x40 | (g_sound.doc_reg_e0 >> 1); + /* if none found, then def = no ints */ + for(i = 0; i < g_sound.g_doc_num_osc_en; i++) { + rptr = &(g_sound.g_doc_regs[i]); + has_irq_pending = rptr->has_irq_pending; + if(has_irq_pending > num_osc_interrupt) { + has_irq_pending--; + rptr->has_irq_pending = has_irq_pending; + } + if(has_irq_pending == 1) { + first = i; + } + } + if(num_osc_interrupt == 1) { + g_sound.doc_reg_e0 = (first << 1); + } else { +#if 0 + halt_printf("remove_sound_irq[%02x]=%d, first:%d\n", + osc, num_osc_interrupt, first); +#endif + } + } else { +#if 0 + /* make sure no int pending */ + if(g_sound.doc_reg_e0 != 0xff) { + halt_printf("remove_sound_irq[%02x]=0, but e0: %02x\n", + osc, g_sound.doc_reg_e0); + } +#endif + if(must) { + halt_printf("REMOVE_sound_irq[%02x]=0, but e0: %02x\n", + osc, g_sound.doc_reg_e0); + } + } + + if(g_sound.doc_reg_e0 & 0x80) { + for(i = 0; i < 0x20; i++) { + has_irq_pending = g_sound.g_doc_regs[i].has_irq_pending; + if(has_irq_pending) { + halt_printf("remove_sound_irq[%02x], but " + "[%02x]=%d!\n", osc,i,has_irq_pending); + printf("num_osc_int: %d, first: %02x\n", + num_osc_interrupt, first); + } + } + } +} + +void +start_sound(int osc, double eff_dsamps, double dsamps) +{ + register word32 start_time1; + register word32 end_time1; + Doc_reg *rptr; + int ctl; + int mode; + word32 sz; + word32 size; + word32 wave_size; + + if(osc < 0 || osc > 31) { + halt_printf("start_sound: osc: %02x!\n", osc); + } + + g_num_start_sounds++; + + rptr = &(g_sound.g_doc_regs[osc]); + + if(osc >= g_sound.g_doc_num_osc_en) { + rptr->ctl |= 1; + return; + } + + GET_ITIMER(start_time1); + + ctl = rptr->ctl; + + mode = (ctl >> 1) & 3; + + wave_size = rptr->wavesize; + + sz = ((wave_size >> 3) & 7) + 8; + size = 1 << sz; + + if(size < 0x100) { + halt_printf("size: %08x is too small, sz: %08x!\n", size, sz); + } + + if(rptr->running) { + halt_printf("start_sound osc: %d, already running!\n", osc); + } + + rptr->running = 1; + + rptr->complete_dsamp = eff_dsamps; + + doc_printf("Starting osc %02x, dsamp: %f\n", osc, dsamps); + doc_printf("size: %04x\n", size); + + if((mode == 2) && ((osc & 1) == 0)) { + printf("Sync mode osc %d starting!\n", osc); + /* set_halt(1); */ + + /* see if we should start our odd partner */ + if((rptr[1].ctl & 7) == 5) { + /* odd partner stopped in sync mode--start him */ + rptr[1].ctl &= (~1); + start_sound(osc + 1, eff_dsamps, dsamps); + } else { + printf("Osc %d starting sync, but osc %d ctl: %02x\n", + osc, osc+1, rptr[1].ctl); + } + } + + wave_end_estimate(osc, eff_dsamps, dsamps); + + DOC_LOG("st playing", osc, eff_dsamps, size); +#if 0 + if(rptr->cur_acc != 0) { + halt_printf("Start osc %02x, acc: %08x\n", osc, rptr->cur_acc); + } +#endif + + GET_ITIMER(end_time1); + + g_cycs_in_start_sound += (end_time1 - start_time1); +} + +void +wave_end_estimate(int osc, double eff_dsamps, double dsamps) +{ + register word32 start_time1; + register word32 end_time1; + Doc_reg *rptr; + byte *ptr1; + double event_dsamp; + double event_dcycs; + double dcycs_per_samp; + double dsamps_per_byte; + double num_dsamps; + double dcur_inc; + word32 tmp1; + word32 cur_inc; + word32 save_val; + int save_size; + int pos; + int size; + int estimate; + + GET_ITIMER(start_time1); + + dcycs_per_samp = g_sound.g_dcycs_per_samp; + + rptr = &(g_sound.g_doc_regs[osc]); + + cur_inc = rptr->cur_inc; + dcur_inc = (double)cur_inc; + dsamps_per_byte = 0.0; + if(cur_inc) { + dsamps_per_byte = SND_PTR_SHIFT_DBL / (double)dcur_inc; + } + + /* see if there's a zero byte */ + tmp1 = rptr->cur_start + (rptr->cur_acc & rptr->cur_mask); + pos = tmp1 >> SND_PTR_SHIFT; + size = ((rptr->cur_end) >> SND_PTR_SHIFT) - pos; + + ptr1 = &g_sound.doc_ram[pos]; + + estimate = 0; + if(rptr->ctl & 0x08 || g_sound.g_doc_regs[osc ^ 1].ctl & 0x08) { + estimate = 1; + } + +#if 0 + estimate = 1; +#endif + if(estimate) { + save_size = size; + save_val = ptr1[size]; + ptr1[size] = 0; + size = strlen((char *)ptr1); + ptr1[save_size] = save_val; + } + + /* calc samples to play */ + num_dsamps = (dsamps_per_byte * (double)size) + 1.0; + + rptr->samps_left = (int)num_dsamps; + + if(rptr->event) { + remove_event_doc(osc); + } + rptr->event = 0; + + event_dsamp = eff_dsamps + num_dsamps; + if(estimate) { + rptr->event = 1; + rptr->dsamp_ev = event_dsamp; + rptr->dsamp_ev2 = dsamps; + event_dcycs = (event_dsamp * dcycs_per_samp) + 1.0; + add_event_doc(event_dcycs, osc); + } + + GET_ITIMER(end_time1); + + g_cycs_in_est_sound += (end_time1 - start_time1); +} + + +void +remove_sound_event(int osc) +{ + if(g_sound.g_doc_regs[osc].event) { + g_sound.g_doc_regs[osc].event = 0; + remove_event_doc(osc); + } +} + + +void +doc_write_ctl_reg(int osc, int val, double dsamps) +{ + Doc_reg *rptr; + double eff_dsamps; + word32 old_halt; + word32 new_halt; + int old_val; + int mode; + + if(osc < 0 || osc >= 0x20) { + halt_printf("doc_write_ctl_reg: osc: %02x, val: %02x\n", + osc, val); + return; + } + + eff_dsamps = dsamps; + rptr = &(g_sound.g_doc_regs[osc]); + old_val = rptr->ctl; + g_sound.g_doc_saved_ctl = old_val; + + if(old_val == val) { + return; + } + + DOC_LOG("ctl_reg", osc, dsamps, (old_val << 16) + val); + + mode = (val >> 1) & 3; + + old_halt = (old_val & 1); + new_halt = (val & 1); + + /* bits are: 28: old int bit */ + /* 29: old halt bit */ + /* 30: new int bit */ + /* 31: new halt bit */ + +#if 0 + if(osc == 0x10) { + printf("osc %d new_ctl: %02x, old: %02x\n", osc, val, old_val); + } +#endif + + /* no matter what, remove any pending IRQs on this osc */ + remove_sound_irq(osc, 0); + +#if 0 + if(old_halt) { + printf("doc_write_ctl to osc %d, val: %02x, old: %02x\n", + osc, val, old_val); + } +#endif + + if(new_halt != 0) { + /* make sure sound is stopped */ + remove_sound_event(osc); + if(old_halt == 0) { + /* it was playing, finish it up */ +#if 0 + halt_printf("Aborted osc %d at eff_dsamps: %f, ctl: " + "%02x, oldctl: %02x\n", osc, eff_dsamps, + val, old_val); +#endif + sound_play(eff_dsamps); + } + if(((old_val >> 1) & 3) > 0) { + /* don't clear acc if free-running */ + g_sound.g_doc_regs[osc].cur_acc = 0; + } + + g_sound.g_doc_regs[osc].ctl = val; + g_sound.g_doc_regs[osc].running = 0; + } else { + /* new halt == 0 = make sure sound is running */ + if(old_halt != 0) { + /* start sound */ + DOC_LOG("ctl_sound_play", osc, eff_dsamps, val); + + // OG If the sound_play is executed, it may restart a oscillo we thought was stopped at time, + // hence crashing the start_sound function (cf. game Arrgh!) + //sound_play(eff_dsamps); + g_sound.g_doc_regs[osc].ctl = val; + + start_sound(osc, eff_dsamps, dsamps); + } else { + /* was running, and something changed */ + doc_printf("osc %d old ctl:%02x new:%02x!\n", + osc, old_val, val); +#if 0 + sound_play(eff_dsamps); +/* HACK: fix this??? */ +#endif + g_sound.g_doc_regs[osc].ctl = val; + if((old_val ^ val) & val & 0x8) { + /* now has ints on */ + wave_end_estimate(osc, dsamps, dsamps); + } + } + } +} + +void +doc_recalc_sound_parms(int osc, double eff_dcycs, double dsamps) +{ + Doc_reg *rptr; + double dfreq; + double dtmp1; + double dacc, dacc_recip; + word32 res; + word32 sz; + word32 size; + word32 wave_size; + word32 cur_start; + word32 shifted_size; + + g_num_recalc_snd_parms++; + + rptr = &(g_sound.g_doc_regs[osc]); + + wave_size = rptr->wavesize; + + dfreq = (double)rptr->freq; + + sz = ((wave_size >> 3) & 7) + 8; + size = 1 << sz; + rptr->size_bytes = size; + res = wave_size & 7; + + shifted_size = size << SND_PTR_SHIFT; + + cur_start = (rptr->waveptr << (8 + SND_PTR_SHIFT)) & (-(int)shifted_size); // OG + + dtmp1 = dfreq * (DOC_SCAN_RATE * g_sound.g_drecip_audio_rate); + dacc = (double)(1 << (20 - (17 - sz + res))); + dacc_recip = (SND_PTR_SHIFT_DBL) / ((double)(1 << 20)); + dtmp1 = dtmp1 * g_sound.g_drecip_osc_en_plus_2 * dacc * dacc_recip; + + rptr->cur_inc = (int)(dtmp1); + rptr->cur_start = cur_start; + rptr->cur_end = cur_start + shifted_size; + rptr->cur_mask = (shifted_size - 1); + + DOC_LOG("recalc", osc, dsamps, (rptr->waveptr << 16) + wave_size); +} + +int +doc_read_c030(double dcycs) +{ + int num; + + num = g_sound.g_num_c030_fsamps; + if(num >= MAX_C030_TIMES) { + halt_printf("Too many clicks per vbl: %d\n", num); + return 0; + } + + g_sound.c030_fsamps[num] = (float)(dcycs * g_sound.g_dsamps_per_dcyc - g_sound.g_last_sound_play_dsamp); + g_sound.g_num_c030_fsamps = num + 1; + + doc_printf("read c030, num this vbl: %04x\n", num); + + return 0; +} + +int +doc_read_c03c(double dcycs) +{ + return g_sound.doc_sound_ctl; +} + +int +doc_read_c03d(double dcycs) +{ + double dsamps; + Doc_reg *rptr; + int osc; + int type; + int ret; + + ret = g_sound.doc_saved_val; + dsamps = dcycs * g_sound.g_dsamps_per_dcyc; + + if(g_sound.doc_sound_ctl & 0x40) { + /* Read RAM */ + g_sound.doc_saved_val = g_sound.doc_ram[g_moremem.g_c03ef_doc_ptr]; + } else { + /* Read DOC */ + g_sound.doc_saved_val = 0; + + osc = g_moremem.g_c03ef_doc_ptr & 0x1f; + type = (g_moremem.g_c03ef_doc_ptr >> 5) & 0x7; + rptr = &(g_sound.g_doc_regs[osc]); + + switch(type) { + case 0x0: /* freq lo */ + g_sound.doc_saved_val = rptr->freq & 0xff; + break; + case 0x1: /* freq hi */ + g_sound.doc_saved_val = rptr->freq >> 8; + break; + case 0x2: /* vol */ + g_sound.doc_saved_val = rptr->vol; + break; + case 0x3: /* data register */ + /* HACK: make this call sound_play sometimes */ + g_sound.doc_saved_val = rptr->last_samp_val; + break; + case 0x4: /* wave ptr register */ + g_sound.doc_saved_val = rptr->waveptr; + break; + case 0x5: /* control register */ + g_sound.doc_saved_val = rptr->ctl; + break; + case 0x6: /* control register */ + g_sound.doc_saved_val = rptr->wavesize; + break; + case 0x7: /* 0xe0-0xff */ + switch(osc) { + case 0x00: /* 0xe0 */ + g_sound.doc_saved_val = g_sound.doc_reg_e0; + doc_printf("Reading doc 0xe0, ret: %02x\n", + g_sound.doc_saved_val); + + /* Clear IRQ on read of e0, if any irq pend */ + if((g_sound.doc_reg_e0 & 0x80) == 0) { + remove_sound_irq(g_sound.doc_reg_e0 >> 1, 1); + } + break; + case 0x01: /* 0xe1 */ + g_sound.doc_saved_val = (g_sound.g_doc_num_osc_en - 1) << 1; + break; + case 0x02: /* 0xe2 */ + g_sound.doc_saved_val = 0x80; +#if 0 + halt_printf("Reading doc 0xe2, ret: %02x\n", + g_sound.doc_saved_val); +#endif + break; + default: + g_sound.doc_saved_val = 0; + halt_printf("Reading bad doc_reg[%04x]: %02x\n", + g_moremem.g_c03ef_doc_ptr, g_sound.doc_saved_val); + } + break; + default: + g_sound.doc_saved_val = 0; + halt_printf("Reading bad doc_reg[%04x]: %02x\n", + g_moremem.g_c03ef_doc_ptr, g_sound.doc_saved_val); + } + } + + doc_printf("read c03d, doc_ptr: %04x, ret: %02x, saved: %02x\n", + g_moremem.g_c03ef_doc_ptr, ret, g_sound.doc_saved_val); + + DOC_LOG("read c03d", -1, dsamps, (g_moremem.g_c03ef_doc_ptr << 16) + + (g_sound.doc_saved_val << 8) + ret); + + if(g_sound.doc_sound_ctl & 0x20) { + g_moremem.g_c03ef_doc_ptr = (g_moremem.g_c03ef_doc_ptr + 1) & 0xffff; + } + + + return ret; +} + +void +doc_write_c03c(int val, double dcycs) +{ + int vol; + + vol = val & 0xf; + if(g_sound.g_doc_vol != vol) { + /* don't bother playing sound..wait till next update */ + /* sound_play(dcycs); */ + + g_sound.g_doc_vol = vol; + doc_printf("Setting doc vol to 0x%x at %f\n", + vol, dcycs); + } + DOC_LOG("c03c write", -1, dcycs * g_sound.g_dsamps_per_dcyc, val); + + g_sound.doc_sound_ctl = val; +} + +void +doc_write_c03d(int val, double dcycs) +{ + double dsamps; + double eff_dsamps; + Doc_reg *rptr; + int osc; + int type; + int ctl; + int tmp; + int i; + + val = val & 0xff; + + dsamps = dcycs * g_sound.g_dsamps_per_dcyc; + eff_dsamps = dsamps; + doc_printf("write c03d, doc_ptr: %04x, val: %02x\n", + g_moremem.g_c03ef_doc_ptr, val); + + DOC_LOG("write c03d", -1, dsamps, (g_moremem.g_c03ef_doc_ptr << 16) + val); + + if(g_sound.doc_sound_ctl & 0x40) { + /* RAM */ + g_sound.doc_ram[g_moremem.g_c03ef_doc_ptr] = val; + } else { + /* DOC */ + osc = g_moremem.g_c03ef_doc_ptr & 0x1f; + type = (g_moremem.g_c03ef_doc_ptr >> 5) & 0x7; + + rptr = &(g_sound.g_doc_regs[osc]); + ctl = rptr->ctl; +#if 0 + if((ctl & 1) == 0) { + if(type < 2 || type == 4 || type == 6) { + halt_printf("Osc %d is running, old ctl: %02x, " + "but write reg %02x=%02x\n", + osc, ctl, g_moremem.g_c03ef_doc_ptr & 0xff, val); + } + } +#endif + + switch(type) { + case 0x0: /* freq lo */ + if((rptr->freq & 0xff) == (word32)val) { + break; + } + if((ctl & 1) == 0) { + /* play through current status */ + DOC_LOG("flo_sound_play", osc, dsamps, val); + sound_play(dsamps); + } + rptr->freq = (rptr->freq & 0xff00) + val; + doc_recalc_sound_parms(osc, eff_dsamps, dsamps); + break; + case 0x1: /* freq hi */ + if((rptr->freq >> 8) == (word32)val) { + break; + } + if((ctl & 1) == 0) { + /* play through current status */ + DOC_LOG("fhi_sound_play", osc, dsamps, val); + sound_play(dsamps); + } + rptr->freq = (rptr->freq & 0xff) + (val << 8); + doc_recalc_sound_parms(osc, eff_dsamps, dsamps); + break; + case 0x2: /* vol */ + if(rptr->vol == (word32)val) { + break; + } + if((ctl & 1) == 0) { + /* play through current status */ + DOC_LOG("vol_sound_play", osc, dsamps, val); + sound_play(dsamps); +#if 0 + halt_printf("vol_sound_play at %.1f osc:%d " + "val:%d\n", dsamps, osc, val); +#endif + } + rptr->vol = val; + break; + case 0x3: /* data register */ +#if 0 + printf("Writing %02x into doc_data_reg[%02x]!\n", + val, osc); +#endif + break; + case 0x4: /* wave ptr register */ + if(rptr->waveptr == (word32)val) { + break; + } + if((ctl & 1) == 0) { + /* play through current status */ + DOC_LOG("wptr_sound_play", osc, dsamps, val); + sound_play(dsamps); + } + rptr->waveptr = val; + doc_recalc_sound_parms(osc, eff_dsamps, dsamps); + break; + case 0x5: /* control register */ +#if 0 + printf("doc_write ctl osc %d, val: %02x\n", osc, val); +#endif + if(rptr->ctl == (word32)val) { + break; + } + doc_write_ctl_reg(osc, val, dsamps); + break; + case 0x6: /* wavesize register */ + if(rptr->wavesize == (word32)val) { + break; + } + if((ctl & 1) == 0) { + /* play through current status */ + DOC_LOG("wsz_sound_play", osc, dsamps, val); + sound_play(dsamps); + } + rptr->wavesize = val; + doc_recalc_sound_parms(osc, eff_dsamps, dsamps); + break; + case 0x7: /* 0xe0-0xff */ + switch(osc) { + case 0x00: /* 0xe0 */ + doc_printf("writing doc 0xe0 with %02x, " + "was:%02x\n", val, g_sound.doc_reg_e0); +#if 0 + if(val != g_sound.doc_reg_e0) { + halt_printf("writing doc 0xe0 with " + "%02x, was:%02x\n", val, + doc_reg_e0); + } +#endif + break; + case 0x01: /* 0xe1 */ + doc_printf("Writing doc 0xe1 with %02x\n", val); + tmp = val & 0x3e; + tmp = (tmp >> 1) + 1; + if(tmp < 1) { + tmp = 1; + } + if(tmp > 32) { + halt_printf("doc 0xe1: %02x!\n", val); + tmp = 32; + } + g_sound.g_doc_num_osc_en = tmp; + UPDATE_G_DCYCS_PER_DOC_UPDATE(tmp); + + // OG Update any oscs that were running to take care of the new numbers of oscillo + for(i = 0; ictl, rptr->waveptr, rptr->wavesize, rptr->freq, + rptr->vol, rptr->event, rptr->running, + rptr->has_irq_pending, rptr->size_bytes); + printf(" acc:%08x inc:%08x st:%08x end:%08x m:%08x\n", + rptr->cur_acc, rptr->cur_inc, rptr->cur_start, + rptr->cur_end, rptr->cur_mask); + printf(" compl_ds:%f samps_left:%d ev:%f ev2:%f\n", + rptr->complete_dsamp, rptr->samps_left, + rptr->dsamp_ev, rptr->dsamp_ev2); + } + +#if 0 + for(osc = 0; osc < 32; osc++) { + fmax = 0.0; + printf("osc %d has %d samps\n", osc, g_fsamp_num[osc]); + for(i = 0; i < g_fsamp_num[osc]; i++) { + printf("%4d: %f\n", i, g_fsamps[osc][i]); + fmax = MAX(fmax, g_fsamps[osc][i]); + } + printf("osc %d, fmax: %f\n", osc, fmax); + } +#endif +} + + + +extern void x_play_sound(enum_sound _hSound); +void play_sound(enum_sound _hSound) +{ + if ( (_hSound == SOUND_EJECTION) && (g_driver.x_notify_eject !=NULL) ) + g_driver.x_notify_eject(); + + x_play_sound(_hSound); + +} + diff --git a/kegs/Src/sound.h b/kegs/Src/sound.h new file mode 100644 index 0000000..376cfc8 --- /dev/null +++ b/kegs/Src/sound.h @@ -0,0 +1,210 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + +#ifdef INCLUDE_RCSID_C +const char rcsid_sound_h[] = "@(#)$KmKId: sound.h,v 1.17 2003-11-21 15:15:57-05 kentd Exp $"; +#endif + +#if !defined(_WIN32) && !defined(__CYGWIN__) && !defined(DRIVER_ANDROID) +# include +# include +#endif + +#define SOUND_SHM_SAMP_SIZE (32*1024) + +#define SAMPLE_SIZE 2 +#define NUM_CHANNELS 2 +#define SAMPLE_CHAN_SIZE (SAMPLE_SIZE * NUM_CHANNELS) + +#define MAX_SND_BUF 65536 +#define VAL_C030_RANGE (32768) +#define VAL_C030_BASE (-16384) + +#ifdef _WIN32 +#pragma pack(push,PRAGMA_PACK_SIZE) +#endif + +STRUCT(Doc_reg) { + _ALIGNED(8) double dsamp_ev; + _ALIGNED(8) double dsamp_ev2; + _ALIGNED(8) double complete_dsamp; + int samps_left; + word32 cur_acc; + word32 cur_inc; + word32 cur_start; + word32 cur_end; + word32 cur_mask; + int size_bytes; + int event; + int running; + int has_irq_pending; + word32 freq; + word32 vol; + word32 waveptr; + word32 ctl; + word32 wavesize; + word32 last_samp_val; + + +} XCODE_PRAGMA_PACK; + +/* prototypes for hardware specific snd_driver.c functions */ +void x_snd_init(word32 *); +void x_snd_shutdown(); +void x_snd_child_init(); +int x_snd_send_audio(byte *ptr, int size); +word32* x_sound_allocate(int size); + +#define MAX_C030_TIMES 18000 + +class s_sound : public serialized +{ +public: + + byte doc_ram[0x10000 + 16]; + + word32 doc_sound_ctl ; + word32 doc_saved_val ; + int g_doc_num_osc_en ; + _ALIGNED(8) double g_dcycs_per_doc_update ; + _ALIGNED(8) double g_dupd_per_dcyc ; + _ALIGNED(8) double g_drecip_osc_en_plus_2 ; + + int g_doc_saved_ctl ; + int g_queued_samps ; + int g_queued_nonsamps ; + int g_num_osc_interrupting ; + + int g_audio_enable; + + Doc_reg g_doc_regs[32]; + + word32 doc_reg_e0 ; + + int g_audio_rate ; // OG Preferred Audio Rate + _ALIGNED(8) double g_daudio_rate ; + _ALIGNED(8) double g_drecip_audio_rate ; + _ALIGNED(8) double g_dsamps_per_dcyc ; + _ALIGNED(8) double g_dcycs_per_samp ; + float g_fsamps_per_dcyc ; + + int g_doc_vol ; + + _ALIGNED(8) double g_last_sound_play_dsamp ; + + float c030_fsamps[MAX_C030_TIMES + 1]; + int g_num_c030_fsamps ; + + int g_sound_shm_pos ; + + int g_samp_buf[2*MAX_SND_BUF]; + word32 zero_buf[SOUND_SHM_SAMP_SIZE]; + + _ALIGNED(8) double g_doc_dsamps_extra ; + + word32 g_last_c030_vbl_count; + int g_c030_state ; + + // TO CHECK! + int g_sound_play_depth ; + + + // sound_driver.c + + int g_bytes_written ; + + #define ZERO_BUF_SIZE 2048 + + word32 g_snd_zero_buf[ZERO_BUF_SIZE]; + + int g_zeroes_buffered ; + int g_zeroes_seen ; + int g_sound_paused ; + int g_childsnd_vbl ; + int g_childsnd_pos ; + + + s_sound() + { + + INIT_SERIALIZED(); + + g_doc_num_osc_en = 1; + g_dcycs_per_doc_update = 1.0; + g_dupd_per_dcyc = 1.0; + g_drecip_osc_en_plus_2 = 1.0 / (double)(1 + 2); + + g_audio_enable = -1; + + doc_reg_e0 = 0xff; + + g_audio_rate = 44100; // OG Preferred Audio Rate + g_doc_vol = 2; + } + + DEFAULT_SERIALIZE_IN_OUT ; + +} XCODE_PRAGMA_PACK; + + +#ifdef _WIN32 +#pragma pack(pop) +#endif + + +extern s_sound g_sound; +extern void x_async_sound_init(); +extern void x_async_snd_shutdown(); +extern void x_preload_sounds(); + +// WAV SUPPORT + + +struct OASound +{ + + int m_BufferId; + int m_SourceId; + int frequency; + int depth; + int nbchannel; + int successfullyLoaded; +}; + + +typedef struct +{ + const char* filename; + // unsigned int ref; + OASound sound; +} system_sound; + +extern system_sound g_system_sounds[]; + +typedef enum +{ + SOUND_EJECTION=0, + SOUND_SPIN_UP_SEARCH_1, + SOUND_SPIN_UP_SEARCH_2, + SOUND_SKIP_SEARCH_1, + SOUND_SKIP_SEARCH_2, + SOUND_SKIP_SEARCH_3, + SOUND_SKIP_SEARCH_4, + SOUND_SKIP_SEARCH_5, + SOUND_NB +} enum_sound; + +void play_sound(enum_sound hSound); + + + +bool x_load_wav(const char* _Path, unsigned char** _outDataBuffer, unsigned int & _outFileSize, OASound & _sound); +OASound async_init_wav(const char* _file); +int async_release_wav(OASound* _pSound); +int async_stop_wav(OASound* _pSound); +int async_play_wav(OASound* _pSound, int _Loop, float _Attenuation, float _StartAt ); diff --git a/kegs/Src/sound_driver.cpp b/kegs/Src/sound_driver.cpp new file mode 100644 index 0000000..b5e3465 --- /dev/null +++ b/kegs/Src/sound_driver.cpp @@ -0,0 +1,192 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "defc.h" +#include "sound.h" + +#ifndef UNDER_CE +#include +#endif + +extern int Verbose; + +#define ZERO_PAUSE_SAFETY_SAMPS (g_sound.g_audio_rate >> 5) +#define ZERO_PAUSE_NUM_SAMPS (4*g_sound.g_audio_rate) + + + +/* +int g_bytes_written = 0; + +#define ZERO_BUF_SIZE 2048 + +word32 g_snd_zero_buf[ZERO_BUF_SIZE]; + +#define ZERO_PAUSE_SAFETY_SAMPS (g_sound.g_audio_rate >> 5) +#define ZERO_PAUSE_NUM_SAMPS (4*g_sound.g_audio_rate) + +int g_zeroes_buffered = 0; +int g_zeroes_seen = 0; +int g_sound_paused = 0; +int g_childsnd_vbl = 0; +int g_childsnd_pos = 0; + + +*/ + +word32 *g_childsnd_shm_addr = 0; + + +void +reliable_buf_write(word32 *shm_addr, int pos, int size) +{ + byte *ptr; + int ret; + + if(size < 1 || pos < 0 || pos > SOUND_SHM_SAMP_SIZE || + size > SOUND_SHM_SAMP_SIZE || + (pos + size) > SOUND_SHM_SAMP_SIZE) { + printf("reliable_buf_write: pos: %04x, size: %04x\n", + pos, size); + x_exit(1); + } + + ptr = (byte *)&(shm_addr[pos]); + size = size * 4; + + while(size > 0) + { + + ret = x_snd_send_audio(ptr, size); + + if(ret < 0) { + printf("audio write, errno: %d\n", errno); + x_exit(1); + } + size = size - ret; + ptr += ret; + g_sound.g_bytes_written += ret; + } + +} + +void +reliable_zero_write(int amt) +{ + int len; + + while(amt > 0) { + len = MIN(amt, ZERO_BUF_SIZE); + reliable_buf_write(g_sound.g_snd_zero_buf, 0, len); + amt -= len; + } +} + + +void +child_sound_loop(int read_fd, int write_fd, word32 *shm_addr) +{ + + + doc_printf("Child pipe fd: %d\n", read_fd); + +// g_audio_rate = g_preferred_rate; + + g_sound.g_zeroes_buffered = 0; + g_sound.g_zeroes_seen = 0; + g_sound.g_sound_paused = 0; + + g_sound.g_childsnd_pos = 0; + g_sound.g_childsnd_vbl = 0; + g_childsnd_shm_addr = shm_addr; + + x_snd_child_init(); + +} + +void +child_sound_playit(word32 tmp) +{ + int size; + + size = tmp & 0xffffff; + + //printf("child_sound_playit: %08x\n", tmp); + + if((tmp >> 24) == 0xa2) { + /* play sound here */ + + +#if 0 + g_childsnd_pos += g_zeroes_buffered; + while(g_childsnd_pos >= SOUND_SHM_SAMP_SIZE) { + g_childsnd_pos -= SOUND_SHM_SAMP_SIZE; + } +#endif + + if(g_sound.g_zeroes_buffered) { + reliable_zero_write(g_sound.g_zeroes_buffered); + } + + g_sound.g_zeroes_buffered = 0; + g_sound.g_zeroes_seen = 0; + + if((size + g_sound.g_childsnd_pos) > SOUND_SHM_SAMP_SIZE) { + reliable_buf_write(g_childsnd_shm_addr, g_sound.g_childsnd_pos, + SOUND_SHM_SAMP_SIZE - g_sound.g_childsnd_pos); + size = (g_sound.g_childsnd_pos + size) - SOUND_SHM_SAMP_SIZE; + g_sound.g_childsnd_pos = 0; + } + + reliable_buf_write(g_childsnd_shm_addr, g_sound.g_childsnd_pos, size); + + if(g_sound.g_sound_paused) { + printf("Unpausing sound, zb: %d\n", g_sound.g_zeroes_buffered); + g_sound.g_sound_paused = 0; + } + + } else if((tmp >> 24) == 0xa1) { + if(g_sound.g_sound_paused) { + if(g_sound.g_zeroes_buffered < ZERO_PAUSE_SAFETY_SAMPS) { + g_sound.g_zeroes_buffered += size; + } + } else { + /* not paused, send it through */ + g_sound.g_zeroes_seen += size; + + reliable_zero_write(size); + + if(g_sound.g_zeroes_seen >= ZERO_PAUSE_NUM_SAMPS) { + printf("Pausing sound\n"); + g_sound.g_sound_paused = 1; + } + } + } else { + printf("tmp received bad: %08x\n", tmp); + x_exit(3); + } + + g_sound.g_childsnd_pos += size; + while(g_sound.g_childsnd_pos >= SOUND_SHM_SAMP_SIZE) { + g_sound.g_childsnd_pos -= SOUND_SHM_SAMP_SIZE; + } + + g_sound.g_childsnd_vbl++; + if(g_sound.g_childsnd_vbl >= 60) { + g_sound.g_childsnd_vbl = 0; +#if 0 + printf("sound bytes written: %06x\n", g_bytes_written); + printf("Sample samples[0]: %08x %08x %08x %08x\n", + g_childsnd_shm_addr[0], g_childsnd_shm_addr[1], + g_childsnd_shm_addr[2], g_childsnd_shm_addr[3]); + printf("Sample samples[100]: %08x %08x %08x %08x\n", + g_childsnd_shm_addr[100], g_childsnd_shm_addr[101], + g_childsnd_shm_addr[102], g_childsnd_shm_addr[103]); +#endif + g_sound.g_bytes_written = 0; + } +} + diff --git a/kegs/Src/superhires.h b/kegs/Src/superhires.h new file mode 100644 index 0000000..1477ea6 --- /dev/null +++ b/kegs/Src/superhires.h @@ -0,0 +1,231 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#ifndef SUPERHIRES_INCLUDED +const char rcsid_superhires_h[] = "@(#)$KmKId: superhires.h,v 1.9 2003-10-29 02:02:59-05 kentd Exp $"; +# define SUPERHIRES_INCLUDED +#endif + +void +SUPER_TYPE(byte *screen_data, int pixels_per_line, int y, int scan, + word32 ch_mask, int use_a2vid_palette, int mode_640) +{ + word32 *palptr; + word32 mem_ptr; + byte val0; + int x1, x2; + byte *b_ptr; + word32 *img_ptr; + word32 tmp, tmp2; +#ifdef VIDEO_DOUBLEVLINE + word32 *img_ptr2; +#endif + word32 ch_tmp; + byte *slow_mem_ptr; + int shift_per; + word32 pal; + word32 pal_word; + word32 pix0, pix1, pix2, pix3; + word32 save_pix; + int offset, next_line_offset; + int dopr; + + mem_ptr = 0xa0 * y + 0x12000; + tmp2 = 0; + tmp = 0; + + shift_per = (1 << SHIFT_PER_CHANGE); + if(use_a2vid_palette) { + pal = (g_video.g_a2vid_palette & 0xf); + } else { + pal = (scan & 0xf); + } + + if(SUPER_FILL) { + ch_mask = -1; + save_pix = 0; + } + + if(use_a2vid_palette) { + palptr = &(g_video.g_a2vid_palette_remap[0]); + } else { + palptr = &(g_palette_8to1624[pal * 16]); + } + + dopr = 0; +#if 0 + if(y == 1) { + dopr = 1; + printf("superhires line %d has ch_mask: %08x\n", y, ch_mask); + } +#endif + for(x1 = 0; x1 < 0xa0; x1 += shift_per) { + + CH_LOOP_A2_VID(ch_mask, ch_tmp); + + pal_word = (pal << 28) + (pal << 20) + (pal << 12) + + (pal << 4); + + if(mode_640 && !use_a2vid_palette) { +#ifdef KEGS_LITTLE_ENDIAN + pal_word += 0x04000c08; +#else + pal_word += 0x080c0004; +#endif + } + + + slow_mem_ptr = &(g_slow_memory_ptr[mem_ptr + x1]); + offset = y*VIDEO_VFACTOR*pixels_per_line + x1*2*VIDEO_HFACTOR; + next_line_offset = pixels_per_line; +#if SUPER_PIXEL_SIZE == 16 + offset *= 2; + next_line_offset *= 2; +#elif SUPER_PIXEL_SIZE == 32 + offset *= 4; + next_line_offset *= 4; +#endif + b_ptr = &screen_data[offset]; + img_ptr = (word32 *)b_ptr; +#ifdef VIDEO_DOUBLEVLINE + img_ptr2 = (word32 *)(b_ptr + next_line_offset); +#endif + if(mode_640) { + for(x2 = 0; x2 < shift_per; x2++) { + val0 = *slow_mem_ptr++; + + pix0 = (val0 >> 6) & 0x3; + pix1 = (val0 >> 4) & 0x3; + pix2 = (val0 >> 2) & 0x3; + pix3 = val0 & 0x3; + if(use_a2vid_palette || (SUPER_PIXEL_SIZE > 8)){ + pix0 = palptr[pix0+8]; + pix1 = palptr[pix1+12]; + pix2 = palptr[pix2+0]; + pix3 = palptr[pix3+4]; + } +#if SUPER_PIXEL_SIZE == 8 +# ifdef KEGS_LITTLE_ENDIAN + tmp = (pix3 << 24) + (pix2 << 16) + + (pix1 << 8) + pix0 + pal_word; +# else + tmp = (pix0 << 24) + (pix1 << 16) + + (pix2 << 8) + pix3 + pal_word; +# endif + *img_ptr++ = tmp; +#ifdef VIDEO_DOUBLEVLINE + *img_ptr2++ = tmp; +#endif +#elif SUPER_PIXEL_SIZE == 16 +# ifdef KEGS_LITTLE_ENDIAN + tmp = (pix1 << 16) + pix0; + tmp2 = (pix3 << 16) + pix2; +# else + tmp = (pix0 << 16) + pix1; + tmp2 = (pix2 << 16) + pix3; +# endif + *img_ptr++ = tmp; + *img_ptr++ = tmp2; +#ifdef VIDEO_DOUBLEVLINE + *img_ptr2++ = tmp; + *img_ptr2++ = tmp2; +#endif +#else /* SUPER_PIXEL_SIZE == 32 */ + *img_ptr++ = pix0; + *img_ptr++ = pix1; + *img_ptr++ = pix2; + *img_ptr++ = pix3; +#ifdef VIDEO_DOUBLEVLINE + *img_ptr2++ = pix0; + *img_ptr2++ = pix1; + *img_ptr2++ = pix2; + *img_ptr2++ = pix3; +#endif +#endif + +#if 0 + if(y == 1 && x1 == 0 && x2 == 0) { + printf("y==1,x1,x2=0, %02x = %08x %08x " + "%08x %08x, pal: %04x\n", val0, + pix0, pix1, pix2, pix3, pal); + printf("offset: %04x, nlo:%04x, ppl:" + "%04x, %d\n", offset, + next_line_offset, + pixels_per_line, SUPER_PIXEL_SIZE); + } +#endif + } + + } else { /* 320 mode */ + for(x2 = 0; x2 < shift_per; x2++) { + val0 = *slow_mem_ptr++; + pix0 = (val0 >> 4); + if(SUPER_FILL) { + if(pix0) { + save_pix = pix0; + } else { + pix0 = save_pix; + } + } + pix1 = (val0 & 0xf); + if(SUPER_FILL) { + if(pix1) { + save_pix = pix1; + } else { + pix1 = save_pix; + } + } + if(use_a2vid_palette || (SUPER_PIXEL_SIZE > 8)){ + pix0 = palptr[pix0]; + pix1 = palptr[pix1]; + } + if(dopr && x1 == 0) { + printf("y:%d, x2:%d, val:%02x = %08x %08x\n", y, x2, val0, pix0, pix1); + } +#if SUPER_PIXEL_SIZE == 8 +# ifdef KEGS_LITTLE_ENDIAN + tmp = (pix1 << 24) + (pix1 << 16) + + (pix0 << 8) + pix0 + pal_word; +# else + tmp = (pix0 << 24) + (pix0 << 16) + + (pix1 << 8) + pix1 + pal_word; +# endif + *img_ptr++ = tmp; +#ifdef VIDEO_DOUBLEVLINE + *img_ptr2++ = tmp; +#endif +#elif SUPER_PIXEL_SIZE == 16 + tmp = (pix0 << 16) + pix0; + tmp2 = (pix1 << 16) + pix1; + *img_ptr++ = tmp; + *img_ptr++ = tmp2; +#ifdef VIDEO_DOUBLEVLINE + *img_ptr2++ = tmp; + *img_ptr2++ = tmp2; +#endif +#else /* SUPER_PIXEL_SIZE == 32 */ + *img_ptr++ = pix0; +#ifdef VIDEO_DOUBLEHLINE + *img_ptr++ = pix0; +#endif + *img_ptr++ = pix1; +#ifdef VIDEO_DOUBLEHLINE + + *img_ptr++ = pix1; +#endif + +#ifdef VIDEO_DOUBLEVLINE + *img_ptr2++ = pix0; + *img_ptr2++ = pix0; + *img_ptr2++ = pix1; + *img_ptr2++ = pix1; +#endif +#endif + } + } + } +} + diff --git a/kegs/Src/video.cpp b/kegs/Src/video.cpp new file mode 100644 index 0000000..6f7dc07 --- /dev/null +++ b/kegs/Src/video.cpp @@ -0,0 +1,4224 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include + +#include "defc.h" +#include "moremem.h" +#include "sim65816.h" +#include "video.h" +#ifdef ACTIVEGS +#include "graphcounter.h" +#endif + +sd_video g_video; +ss_video s_video; + +Kimage g_kimage_offscreen; +int g_video_offscreen_has_been_modified = 0 ; + +//extern int g_save_cur_a2_stat; + +extern int g_config_control_panel; + +typedef byte Change; + word32 g_refresh_bytes_xfer = 0; + + + +char g_status_buf[MAX_STATUS_LINES][STATUS_LINE_LENGTH + 1]; +char *g_status_ptrs[MAX_STATUS_LINES] = { 0 }; + + word32 g_font40_even_bits[0x100][8][16/4]; + word32 g_font40_odd_bits[0x100][8][16/4]; + word32 g_font80_off0_bits[0x100][8][12/4]; + word32 g_font80_off1_bits[0x100][8][12/4]; + word32 g_font80_off2_bits[0x100][8][12/4]; + word32 g_font80_off3_bits[0x100][8][12/4]; + + word32 g_palette_8to1624[256]; + word32 g_a2palette_8to1624[256]; + + int g_expanded_col_0[16]; + int g_expanded_col_1[16]; + int g_expanded_col_2[16]; + +int g_video_act_margin_left = BASE_MARGIN_LEFT; +int g_video_act_margin_right = BASE_MARGIN_RIGHT; +int g_video_act_margin_top = BASE_MARGIN_TOP; + int g_video_act_margin_bottom = BASE_MARGIN_BOTTOM; + int g_video_act_width = X_A2_WINDOW_WIDTH; + int g_video_act_height = X_A2_WINDOW_HEIGHT; + +const int xxxg_dbhires_colors[] = { + /* rgb */ + 0x000, /* 0x0 black */ + 0xd03, /* 0x1 deep red */ + 0x852, /* 0x2 brown */ + 0xf60, /* 0x3 orange */ + 0x070, /* 0x4 dark green */ + 0x555, /* 0x5 dark gray */ + 0x0d0, /* 0x6 green */ + 0xff0, /* 0x7 yellow */ + 0x009, /* 0x8 dark blue */ + 0xd0d, /* 0x9 purple */ + 0xaaa, /* 0xa light gray */ + 0xf98, /* 0xb pink */ + 0x22f, /* 0xc medium blue */ + 0x6af, /* 0xd light blue */ + 0x0f9, /* 0xe aquamarine */ + 0xfff /* 0xf white */ +}; + +word32 g_dhires_convert[4096]; /* look up table of 7 bits (concat): */ + /* { 4 bits, |3 prev bits| } */ + +const byte g_dhires_colors_16[] = { + 0x00, /* 0x0 black */ + 0x02, /* 0x1 dark blue */ + 0x04, /* 0x2 dark green */ + 0x06, /* 0x3 medium blue */ + 0x08, /* 0x4 brown */ + 0x0a, /* 0x5 light gray */ + 0x0c, /* 0x6 green */ + 0x0e, /* 0x7 aquamarine */ + 0x01, /* 0x8 deep red */ + 0x03, /* 0x9 purple */ + 0x05, /* 0xa dark gray */ + 0x07, /* 0xb light blue */ + 0x09, /* 0xc orange */ + 0x0b, /* 0xd pink */ + 0x0d, /* 0xe yellow */ + 0x0f/* 0xf white */ +}; + + int g_lores_colors[] = { + /* rgb */ + 0x000, /* 0x0 black */ + 0xd03, /* 0x1 deep red */ + 0x009, /* 0x2 dark blue */ + 0xd0d, /* 0x3 purple */ + 0x070, /* 0x4 dark green */ + 0x555, /* 0x5 dark gray */ + 0x22f, /* 0x6 medium blue */ + 0x6af, /* 0x7 light blue */ + 0x852, /* 0x8 brown */ + 0xf60, /* 0x9 orange */ + 0xaaa, /* 0xa light gray */ + 0xf98, /* 0xb pink */ + 0x0d0, /* 0xc green */ + 0xff0, /* 0xd yellow */ + 0x0f9, /* 0xe aquamarine */ + 0xfff /* 0xf white */ +}; + +const word32 g_bw_hires_convert[4] = { + BIGEND(0x00000000), + BIGEND(0x0f0f0000), + BIGEND(0x00000f0f), + BIGEND(0x0f0f0f0f) +}; + +const word32 g_bw_dhires_convert[16] = { + BIGEND(0x00000000), + BIGEND(0x0f000000), + BIGEND(0x000f0000), + BIGEND(0x0f0f0000), + + BIGEND(0x00000f00), + BIGEND(0x0f000f00), + BIGEND(0x000f0f00), + BIGEND(0x0f0f0f00), + + BIGEND(0x0000000f), + BIGEND(0x0f00000f), + BIGEND(0x000f000f), + BIGEND(0x0f0f000f), + + BIGEND(0x00000f0f), + BIGEND(0x0f000f0f), + BIGEND(0x000f0f0f), + BIGEND(0x0f0f0f0f), +}; + +const word32 g_hires_convert[64] = { + BIGEND(0x00000000), /* 00,0000 = black, black, black, black */ + BIGEND(0x00000000), /* 00,0001 = black, black, black, black */ + BIGEND(0x03030000), /* 00,0010 = purp , purp , black, black */ + BIGEND(0x0f0f0000), /* 00,0011 = white, white, black, black */ + BIGEND(0x00000c0c), /* 00,0100 = black, black, green, green */ + BIGEND(0x0c0c0c0c), /* 00,0101 = green, green, green, green */ + BIGEND(0x0f0f0f0f), /* 00,0110 = white, white, white, white */ + BIGEND(0x0f0f0f0f), /* 00,0111 = white, white, white, white */ + BIGEND(0x00000000), /* 00,1000 = black, black, black, black */ + BIGEND(0x00000000), /* 00,1001 = black, black, black, black */ + BIGEND(0x03030303), /* 00,1010 = purp , purp , purp , purp */ + BIGEND(0x0f0f0303), /* 00,1011 = white ,white, purp , purp */ + BIGEND(0x00000f0f), /* 00,1100 = black ,black, white, white */ + BIGEND(0x0c0c0f0f), /* 00,1101 = green ,green, white, white */ + BIGEND(0x0f0f0f0f), /* 00,1110 = white ,white, white, white */ + BIGEND(0x0f0f0f0f), /* 00,1111 = white ,white, white, white */ + + BIGEND(0x00000000), /* 01,0000 = black, black, black, black */ + BIGEND(0x00000000), /* 01,0001 = black, black, black, black */ + BIGEND(0x06060000), /* 01,0010 = blue , blue , black, black */ + BIGEND(0x0f0f0000), /* 01,0011 = white, white, black, black */ + BIGEND(0x00000c0c), /* 01,0100 = black, black, green, green */ + BIGEND(0x09090c0c), /* 01,0101 = orang, orang, green, green */ + BIGEND(0x0f0f0f0f), /* 01,0110 = white, white, white, white */ + BIGEND(0x0f0f0f0f), /* 01,0111 = white, white, white, white */ + BIGEND(0x00000000), /* 01,1000 = black, black, black, black */ + BIGEND(0x00000000), /* 01,1001 = black, black, black, black */ + BIGEND(0x06060303), /* 01,1010 = blue , blue , purp , purp */ + BIGEND(0x0f0f0303), /* 01,1011 = white ,white, purp , purp */ + BIGEND(0x00000f0f), /* 01,1100 = black ,black, white, white */ + BIGEND(0x09090f0f), /* 01,1101 = orang ,orang, white, white */ + BIGEND(0x0f0f0f0f), /* 01,1110 = white ,white, white, white */ + BIGEND(0x0f0f0f0f), /* 01,1111 = white ,white, white, white */ + + BIGEND(0x00000000), /* 10,0000 = black, black, black, black */ + BIGEND(0x00000000), /* 10,0001 = black, black, black, black */ + BIGEND(0x03030000), /* 10,0010 = purp , purp , black, black */ + BIGEND(0x0f0f0000), /* 10,0011 = white, white, black, black */ + BIGEND(0x00000909), /* 10,0100 = black, black, orang, orang */ + BIGEND(0x0c0c0909), /* 10,0101 = green, green, orang, orang */ + BIGEND(0x0f0f0f0f), /* 10,0110 = white, white, white, white */ + BIGEND(0x0f0f0f0f), /* 10,0111 = white, white, white, white */ + BIGEND(0x00000000), /* 10,1000 = black, black, black, black */ + BIGEND(0x00000000), /* 10,1001 = black, black, black, black */ + BIGEND(0x03030606), /* 10,1010 = purp , purp , blue , blue */ + BIGEND(0x0f0f0606), /* 10,1011 = white ,white, blue , blue */ + BIGEND(0x00000f0f), /* 10,1100 = black ,black, white, white */ + BIGEND(0x0c0c0f0f), /* 10,1101 = green ,green, white, white */ + BIGEND(0x0f0f0f0f), /* 10,1110 = white ,white, white, white */ + BIGEND(0x0f0f0f0f), /* 10,1111 = white ,white, white, white */ + + BIGEND(0x00000000), /* 11,0000 = black, black, black, black */ + BIGEND(0x00000000), /* 11,0001 = black, black, black, black */ + BIGEND(0x06060000), /* 11,0010 = blue , blue , black, black */ + BIGEND(0x0f0f0000), /* 11,0011 = white, white, black, black */ + BIGEND(0x00000909), /* 11,0100 = black, black, orang, orang */ + BIGEND(0x09090909), /* 11,0101 = orang, orang, orang, orang */ + BIGEND(0x0f0f0f0f), /* 11,0110 = white, white, white, white */ + BIGEND(0x0f0f0f0f), /* 11,0111 = white, white, white, white */ + BIGEND(0x00000000), /* 11,1000 = black, black, black, black */ + BIGEND(0x00000000), /* 11,1001 = black, black, black, black */ + BIGEND(0x06060606), /* 11,1010 = blue , blue , blue , blue */ + BIGEND(0x0f0f0606), /* 11,1011 = white ,white, blue , blue */ + BIGEND(0x00000f0f), /* 11,1100 = black ,black, white, white */ + BIGEND(0x09090f0f), /* 11,1101 = orang ,orang, white, white */ + BIGEND(0x0f0f0f0f), /* 11,1110 = white ,white, white, white */ + BIGEND(0x0f0f0f0f), /* 11,1111 = white ,white, white, white */ +}; + + int g_screen_index[] = { + 0x000, 0x080, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380, + 0x028, 0x0a8, 0x128, 0x1a8, 0x228, 0x2a8, 0x328, 0x3a8, + 0x050, 0x0d0, 0x150, 0x1d0, 0x250, 0x2d0, 0x350, 0x3d0 +}; + + +void +video_init() +{ + word32 col[4]; + Kimage *kimage_ptr; + word32 *ptr; + word32 val0, val1, val2, val3; + word32 match_col; + word32 next_col, next2_col, next3_col; + word32 val; + word32 cur_col; + int width, height; + int total_bytes; + int i, j; + +// OG Reinit globals + g_video.g_a2_screen_buffer_changed = (word32)-1; + g_video.g_full_refresh_needed = (word32)-1; + g_video.g_cycs_in_40col = 0; + g_video.g_cycs_in_xredraw = 0; + + g_refresh_bytes_xfer = 0; + + g_video.g_video_dcycs_check_input = 0.0; + //g_video.g_video_extra_check_inputs = 0; // OG Initialized + + g_video.g_need_redraw = 1; + g_video.g_palette_change_summary = 0; + + g_video.g_border_sides_refresh_needed = 1; + g_video.g_border_special_refresh_needed = 1; + g_video.g_border_line24_refresh_needed = 1; + g_video.g_status_refresh_needed = 1; + + g_video.g_vbl_border_color = 0; + g_video.g_border_last_vbl_changes = 0; + + g_video.g_use_dhr140 = 0; +// s_video.g_use_bw_hires = 0; + + g_video.g_new_a2_stat_cur_line = 0; + g_video.g_vid_update_last_line = 0; + + g_video.g_cur_a2_stat = ALL_STAT_TEXT | ALL_STAT_ANNUNC3 |(0xf << BIT_ALL_STAT_TEXT_COLOR); + + + g_video.g_a2vid_palette = 0xe; + s_video.g_installed_full_superhires_colormap = 0; + + g_video.Max_color_size = 256; + + g_video.g_saved_a2vid_palette = -1; + + g_video.g_cycs_in_refresh_line = 0; + g_video.g_cycs_in_refresh_ximage = 0; + + g_video.g_num_lines_superhires = 0; + g_video.g_num_lines_superhires640 = 0; + g_video.g_num_lines_prev_superhires = 0; + g_video.g_num_lines_prev_superhires640 = 0; + + g_video.g_flash_count = 0; + + g_video.g_screen_redraw_skip_count = 0; + // g_video.g_screen_redraw_skip_amt = -1; + + g_video.g_cycs_in_check_input = 0; + + g_video.g_needfullrefreshfornextframe = 1 ; + + + g_video.g_num_a2vid_palette_checks = 1; + + g_video.g_border_color = 0; // OG Expose border color + + g_video.g_num_border_changes = 0; + + +/* Initialize video system */ + + for(i = 0; i < 200; i++) { + g_video.g_a2_line_kimage[i] = (Kimage *)0; // OG Changed from void* to kimage* + g_video.g_a2_line_stat[i] = -1; + g_video.g_a2_line_left_edge[i] = 0; + g_video.g_a2_line_right_edge[i] = 0; + } + for(i = 0; i < 200; i++) { + g_video.g_a2_new_all_stat[i] = 0; + g_video.g_a2_cur_all_stat[i] = 1; + for(j = 0; j < 8; j++) { + s_video.g_saved_line_palettes[i][j] = (word32)-1; + } + } + for(i = 0; i < 262; i++) { + g_video.g_cur_border_colors[i] = -1; + } + + g_video.g_new_a2_stat_cur_line = 0; + + x_video_init(); + + read_a2_font(); + + vid_printf("Zeroing out video memory\n"); + + for(i = 0; i < 8; i++) { + switch(i) { + case 0: + kimage_ptr = &(s_video.g_kimage_text[0]); + break; + case 1: + kimage_ptr = &(s_video.g_kimage_text[1]); + break; + case 2: + kimage_ptr = &(s_video.g_kimage_hires[0]); + break; + case 3: + kimage_ptr = &(s_video.g_kimage_hires[1]); + break; + case 4: + kimage_ptr = &s_video.g_kimage_superhires; + break; + case 5: + kimage_ptr = &s_video.g_kimage_border_sides; + break; + case 6: + kimage_ptr = &s_video.g_kimage_border_special; + break; + case 7: + kimage_ptr = &s_video.g_kimage_border_special2; + break; + + default: + printf("i: %d, unknown\n", i); + x_exit(3); + break; + } + + width = kimage_ptr->width_act; + height = kimage_ptr->height; + total_bytes = (kimage_ptr->mdepth >> 3) * width * height; + + ptr = (word32 *)kimage_ptr->data_ptr; + for(j = 0; j < total_bytes >> 2; j++) { + *ptr++ = 0; + } + + } + + for(i = 0; i < SLOW_MEM_CH_SIZE; i++) { + s_video.slow_mem_changed[i] = (word32)-1; + } + + /* create g_expanded_col_* */ + for(i = 0; i < 16; i++) { + val = (g_lores_colors[i] >> 0) & 0xf; + g_expanded_col_0[i] = val; + + val = (g_lores_colors[i] >> 4) & 0xf; + g_expanded_col_1[i] = val; + + val = (g_lores_colors[i] >> 8) & 0xf; + g_expanded_col_2[i] = val; + } + + /* create g_dhires_convert[] array */ + for(i = 0; i < 4096; i++) { + /* Convert index bits 11:0 where 3:0 is the previous color */ + /* and 7:4 is the current color to translate */ + /* Bit 4 will be the first pixel displayed on the screen */ + match_col = i & 0xf; + for(j = 0; j < 4; j++) { + cur_col = (i >> (1 + j)) & 0xf; + next_col = (i >> (2 + j)) & 0xf; + next2_col = (i >> (3 + j)) & 0xf; + next3_col = (i >> (4 + j)) & 0xf; + cur_col = (((cur_col << 4) + cur_col) >> (3 - j)) & 0xf; + + if((cur_col == 0xf) || (next_col == 0xf) || + (next2_col == 0xf) || + (next3_col == 0xf)) { + cur_col = 0xf; + col[j] = cur_col; + match_col = cur_col; + } else if((cur_col == 0) || (next_col == 0) || + (next2_col == 0) || (next3_col == 0)) { + cur_col = 0; + col[j] = cur_col; + match_col = cur_col; + } else { + col[j] = cur_col; + match_col = cur_col; + } + } + if(g_video.g_use_dhr140) { + for(j = 0; j < 4; j++) { + col[j] = (i >> 4) & 0xf; + } + } + val0 = g_dhires_colors_16[col[0] & 0xf]; + val1 = g_dhires_colors_16[col[1] & 0xf]; + val2 = g_dhires_colors_16[col[2] & 0xf]; + val3 = g_dhires_colors_16[col[3] & 0xf]; +#ifdef KEGS_LITTLE_ENDIAN + val = (val3 << 24) + (val2 << 16) + (val1 << 8) + val0; +#else + val = (val0 << 24) + (val1 << 16) + (val2 << 8) + val3; +#endif + g_dhires_convert[i] = val; + } +// printf("change_display_mode"); + change_display_mode(g_sim65816.g_cur_dcycs); +// printf("video_reset"); + video_reset(); +// printf("display_screen"); + display_screen(); + + fflush(stdout); +} + +void +show_a2_line_stuff() +{ + int i; + + for(i = 0; i < 200; i++) { + printf("line: %d: stat: %04x, ptr: %p, " + "left_edge:%d, right_edge:%d\n", + i, g_video.g_a2_line_stat[i], g_video.g_a2_line_kimage[i], + g_video.g_a2_line_left_edge[i], + g_video.g_a2_line_right_edge[i]); + } + + printf("new_a2_stat_cur_line: %d, cur_a2_stat:%04x\n", + g_video.g_new_a2_stat_cur_line, g_video.g_cur_a2_stat); + for(i = 0; i < 200; i++) { + printf("cur_all[%d]: %03x new_all: %03x\n", i, + g_video.g_a2_cur_all_stat[i], g_video.g_a2_new_all_stat[i]); + } + +} + +void +video_reset() +{ + int stat; + int i; + + s_video.g_installed_full_superhires_colormap = (s_video.g_screen_depth != 8); + stat = ALL_STAT_TEXT | ALL_STAT_ANNUNC3 | + (0xf << BIT_ALL_STAT_TEXT_COLOR); + + if(r_sim65816.get_color_mode()==COLORMODE_BW) + { + stat |= ALL_STAT_COLOR_C021; + } + + if(g_config_control_panel) + { + extern int g_save_cur_a2_stat; + /* Don't update cur_a2_stat when in configuration panel */ + g_save_cur_a2_stat = stat; + } else { + g_video.g_cur_a2_stat = stat; + } + + g_video.g_palette_change_summary = 0; + for(i = 0; i < 16; i++) { + g_video.g_palette_change_cnt[i] = 0; + } + + /* install_a2vid_colormap(); */ + video_update_colormap(); +} + + +void video_update() +{ + + int did_video; + + // OG g_needfullrefreshfornextframe + if (g_video.g_needfullrefreshfornextframe) + { + + g_video.g_full_refresh_needed = -1; + g_video.g_a2_screen_buffer_changed = -1; + g_video.g_status_refresh_needed = 1; + g_video.g_border_sides_refresh_needed = 1; + g_video.g_border_special_refresh_needed = 1; + g_video.g_needfullrefreshfornextframe = 0; + } + + update_border_info(); + + video_check_input_events(); + + g_video.g_screen_redraw_skip_count--; + did_video = 0; + if(g_video.g_screen_redraw_skip_count < 0) { + did_video = 1; + video_update_event_line(262); + g_video.g_screen_redraw_skip_count = g_video.g_screen_redraw_skip_amt; + } + + /* update flash */ + g_video.g_flash_count++; + if(g_video.g_flash_count >= 30) { + g_video.g_flash_count = 0; + g_video.g_cur_a2_stat ^= ALL_STAT_FLASH_STATE; + change_display_mode(g_sim65816.g_cur_dcycs); + } + + + check_a2vid_palette(); + + + if(did_video) { + g_video.g_new_a2_stat_cur_line = 0; + g_video.g_a2_new_all_stat[0] = g_video.g_cur_a2_stat; + g_video.g_vid_update_last_line = 0; + video_update_through_line(0); + } + +// refresh_video(0); + + +} + + +int +video_all_stat_to_line_stat(int line, int new_all_stat) +{ + int page, color, dbl; + int st80, hires, annunc3, mix_t_gr; + int altchar, text_color, bg_color, flash_state; + int mode; + + st80 = new_all_stat & ALL_STAT_ST80; + hires = new_all_stat & ALL_STAT_HIRES; + annunc3 = new_all_stat & ALL_STAT_ANNUNC3; + mix_t_gr = new_all_stat & ALL_STAT_MIX_T_GR; + + page = EXTRU(new_all_stat, 31 - BIT_ALL_STAT_PAGE2, 1) && !st80; + color = EXTRU(new_all_stat, 31 - BIT_ALL_STAT_COLOR_C021, 1); + dbl = EXTRU(new_all_stat, 31 - BIT_ALL_STAT_VID80, 1); + + altchar = 0; text_color = 0; bg_color = 0; flash_state = 0; + + if(new_all_stat & ALL_STAT_SUPER_HIRES) { + mode = MODE_SUPER_HIRES; + page = 0; dbl = 0; color = 0; + } else { + if(line >= 192) { + mode = MODE_BORDER; + page = 0; dbl = 0; color = 0; + } else if((new_all_stat & ALL_STAT_TEXT) || + (line >= 160 && mix_t_gr)) { + mode = MODE_TEXT; + color = 0; + altchar = EXTRU(new_all_stat, + 31 - BIT_ALL_STAT_ALTCHARSET, 1); + text_color = EXTRU(new_all_stat, + 31 - BIT_ALL_STAT_TEXT_COLOR, 4); + bg_color = EXTRU(new_all_stat, + 31 - BIT_ALL_STAT_BG_COLOR, 4); + flash_state = EXTRU(new_all_stat, + 31 - BIT_ALL_STAT_FLASH_STATE, 1); + if(altchar) { + /* don't bother flashing if altchar on */ + flash_state = 0; + } + } else { + /* obey the graphics mode */ + dbl = dbl && !annunc3; + if(hires) { + color = color | EXTRU(new_all_stat, + 31 - BIT_ALL_STAT_DIS_COLOR_DHIRES, 1); + mode = MODE_HGR; + } else { + mode = MODE_GR; + } + } + } + + return((text_color << 12) + (bg_color << 8) + (altchar << 7) + + (mode << 4) + (flash_state << 3) + (page << 2) + + (color << 1) + dbl); +} + +int * +video_update_kimage_ptr(int line, int new_stat) +{ + Kimage *kimage_ptr; + int *mode_ptr; + int page; + int mode; + + page = (new_stat >> 2) & 1; + mode = (new_stat >> 4) & 7; + + switch(mode) { + case MODE_TEXT: + case MODE_GR: + kimage_ptr = &(s_video.g_kimage_text[page]); + mode_ptr = &(g_video.g_mode_text[page][0]); + break; + case MODE_HGR: + kimage_ptr = &(s_video.g_kimage_hires[page]); + mode_ptr = &(g_video.g_mode_hires[page][0]); + /* arrange to force superhires reparse since we use the */ + /* same memory */ + g_video.g_mode_superhires[line] = -1; + break; + case MODE_SUPER_HIRES: + kimage_ptr = &s_video.g_kimage_superhires; + mode_ptr = &(g_video.g_mode_superhires[0]); + /* arrange to force hires reparse since we use the */ + /* same memory */ + g_video.g_mode_hires[0][line] = -1; + g_video.g_mode_hires[1][line] = -1; + break; + case MODE_BORDER: + /* Hack: reuse text page last line as the special border */ + kimage_ptr = &s_video.g_kimage_border_special2; + mode_ptr = &(g_video.g_mode_border[0]); + break; + default: + halt_printf("update_a2_ptrs: mode: %d unknown!\n", mode); + return &(g_video.g_mode_superhires[0]); + } + + vid_printf("video_update_kimage_ptr %d=%p\n",line,kimage_ptr); + + g_video.g_a2_line_kimage[line] = kimage_ptr; + return mode_ptr; +} + +void +change_a2vid_palette(int new_palette) +{ + int i; + + for(i = 0; i < 200; i++) { + g_video.g_mode_text[0][i] = -1; + g_video.g_mode_text[1][i] = -1; + g_video.g_mode_hires[0][i] = -1; + g_video.g_mode_hires[1][i] = -1; + g_video.g_mode_superhires[i] = -1; + g_video.g_mode_border[i] = -1; + } + + printf("Changed a2vid_palette to %x\n", new_palette); + + g_video.g_a2vid_palette = new_palette; + g_video.g_cur_a2_stat = (g_video.g_cur_a2_stat & (~ALL_STAT_A2VID_PALETTE)) + + (new_palette << BIT_ALL_STAT_A2VID_PALETTE); + change_display_mode(g_sim65816.g_cur_dcycs); + + g_video.g_border_sides_refresh_needed = 1; + g_video.g_border_special_refresh_needed = 1; + g_video.g_status_refresh_needed = 1; + g_video.g_palette_change_cnt[new_palette]++; + g_video.g_border_last_vbl_changes = 1; + for(i = 0; i < 262; i++) { + g_video.g_cur_border_colors[i] = -1; + } +} + +void +check_a2vid_palette() +{ + int sum; + int min; + int val; + int min_pos; + int count_cur; + int i; + + /* determine if g_video.g_a2vid_palette should change */ + /* This is the palette of least use on superhires so that the */ + /* borders don't change when all 256 superhires colors are used */ + + g_video.g_num_a2vid_palette_checks--; + if(g_video.g_num_a2vid_palette_checks || s_video.g_installed_full_superhires_colormap){ + return; + } + + g_video.g_num_a2vid_palette_checks = 60; + + sum = 0; + min = 0x100000; + min_pos = -1; + count_cur = g_video.g_shr_palette_used[g_video.g_a2vid_palette]; + + for(i = 0; i < 16; i++) { + val = g_video.g_shr_palette_used[i]; + g_video.g_shr_palette_used[i] = 0; + if(val < min) { + min = val; + min_pos = i; + } + sum += val; + } + + if(g_video.g_a2vid_palette != min_pos && (count_cur > min)) { + change_a2vid_palette(min_pos); + } +} + +void +change_display_mode(double dcycs) +{ + int line, tmp_line; + + line = ((get_lines_since_vbl(dcycs) + 0xff) >> 8); + if(line < 0) { + line = 0; + halt_printf("Line < 0!\n"); + } + tmp_line = MIN(199, line); + + video_update_all_stat_through_line(tmp_line); + + if(line < 200) { + g_video.g_a2_new_all_stat[line] = g_video.g_cur_a2_stat; + } + /* otherwise, g_video.g_cur_a2_stat is covered at the end of vbl */ +} + +void +video_update_all_stat_through_line(int line) +{ + int start_line; + int prev_stat; + int max_line; + int i; + + start_line = g_video.g_new_a2_stat_cur_line; + prev_stat = g_video.g_a2_new_all_stat[start_line]; + + max_line = MIN(199, line); + + for(i = start_line + 1; i <= max_line; i++) { + g_video.g_a2_new_all_stat[i] = prev_stat; + } + g_video.g_new_a2_stat_cur_line = max_line; +} + + + + +void +change_border_color(double dcycs, int val) +{ + int pos; + + g_video.g_border_color = val; // OG Expose border color + + pos = g_video.g_num_border_changes; + g_video.g_border_changes[pos].fcycs = (float)(dcycs - g_sim65816.g_last_vbl_dcycs); + g_video.g_border_changes[pos].val = val; + // OG + /* + static int max=100; + if (max) + { + max--; + double dline = g_video.g_border_changes[pos].fcycs / 65.0; + int new_line = (int)dline; + + printf("changing border color (%d) @vbl:%d,line:%d %f(%f)\n",val,g_sim65816.g_vbl_count,new_line,g_sim65816.g_last_vbl_dcycs,g_sim65816.g_cur_dcycs); + } + */ + pos++; + g_video.g_num_border_changes = pos; + + if(pos >= MAX_BORDER_CHANGES) { + halt_printf("num border changes: %d\n", pos); + g_video.g_num_border_changes = 0; + } +} + +//extern int first; + +void +update_border_info() +{ + double dlines_per_dcyc; + double dcycs, dline, dcyc_line_start; + int offset; + int new_line_offset, last_line_offset; + int new_line; + int new_val; + int limit; + int color_now; + int i; + + + /* to get this routine to redraw the border, change */ + /* g_video.g_vbl_border_color, set g_video.g_border_last_vbl_changes = 1 */ + /* and change the cur_border_colors[] array */ + + color_now = g_video.g_vbl_border_color; + + dlines_per_dcyc = (double)(1.0 / 65.0); + limit = g_video.g_num_border_changes; + if(g_video.g_border_last_vbl_changes || limit) { + /* add a dummy entry */ + g_video.g_border_changes[limit].fcycs = DCYCS_IN_16MS + 21.0; + g_video.g_border_changes[limit].val = (g_moremem.g_c034_val & 0xf); + limit++; + } + last_line_offset = (-1 << 8) + 44; + for(i = 0; i < limit; i++) { + dcycs = g_video.g_border_changes[i].fcycs; + dline = dcycs * dlines_per_dcyc; + new_line = (int)dline; + dcyc_line_start = (double)new_line * 65.0; + offset = ((int)(dcycs - dcyc_line_start)) & 0xff; + + /* here comes the tricky part */ + /* offset is from 0 to 65, where 0-3 is the right border of */ + /* the previous line, 4-20 is horiz blanking, 21-24 is the */ + /* left border and 25-64 is the main window */ + /* Convert this to a new notation which is 0-3 is the left */ + /* border, 4-43 is the main window, and 44-47 is the right */ + /* basically, add -21 to offset, and wrap < 0 to previous ln */ + /* note this makes line -1 offset 44-47 the left hand border */ + /* for true line 261 on the screen */ + offset -= 21; + if(offset < 0) { + new_line--; + offset += 64; + } + new_val = g_video.g_border_changes[i].val; + new_line_offset = (new_line << 8) + offset; + + if(new_line_offset < -256 || new_line_offset >(262*256 + 0x80)){ + printf("new_line_offset: %05x\n", new_line_offset); + new_line_offset = last_line_offset; + } + while(last_line_offset < new_line_offset) { + /* see if this will finish it */ + if((last_line_offset & -256)==(new_line_offset & -256)){ + update_border_line(last_line_offset, + new_line_offset, color_now); + last_line_offset = new_line_offset; + } else { + update_border_line(last_line_offset, + (last_line_offset & -256) + 65, + color_now); + last_line_offset =(last_line_offset & -256)+256; + } + } + + color_now = new_val; + } + +#if 0 + if(g_video.g_num_border_changes) { + printf("Border changes: %d\n", g_video.g_num_border_changes); + } +#endif + + if(limit > 1) { + g_video.g_border_last_vbl_changes = 1; + } else { + g_video.g_border_last_vbl_changes = 0; + } + + g_video.g_num_border_changes = 0; + g_video.g_vbl_border_color = (g_moremem.g_c034_val & 0xf); +} + +void +update_border_line(int st_line_offset, int end_line_offset, int color) +{ + + word32 val; + int st_offset, end_offset; + int left, right; + int line; + + line = st_line_offset >> 8; + if(line != (end_line_offset >> 8)) { + halt_printf("ubl, %04x %04x %02x!\n", st_line_offset, + end_line_offset, color); + } + if(line < -1 || line >= 262) { + halt_printf("ubl-b, mod line is %d\n", line); + line = 0; + } + if(line < 0 || line >= 262) { + line = 0; + } + + st_offset = st_line_offset & 0xff; + end_offset = end_line_offset & 0xff; + + if((st_offset == 0) && (end_offset >= 0x41)) { + /* might be the same as last time, save some work */ + if(g_video.g_cur_border_colors[line] == color) { + return; + } + g_video.g_cur_border_colors[line] = color; + } else { + g_video.g_cur_border_colors[line] = -1; + } + + val = (color + (g_video.g_a2vid_palette << 4)); + val = (val << 24) + (val << 16) + (val << 8) + val; + + /* 0-3: left border, 4-43: main window, 44-47: right border */ + /* 48-65: horiz blanking */ + /* first, do the sides from line 0 to line 199 */ + if((line < 200) || (line >= 262)) { + if(line >= 262) { + line = 0; + } + if(st_offset < 4) { + /* left side */ + left = st_offset; + right = MIN(4, end_offset); + video_border_pixel_write(&s_video.g_kimage_border_sides, + VIDEO_VFACTOR*line, VIDEO_VFACTOR, val, (left * BORDER_WIDTH)/4, + (right * BORDER_WIDTH) / 4); + g_video.g_border_sides_refresh_needed = 1; + } + if((st_offset < 48) && (end_offset >= 44)) { + /* right side */ + left = MAX(0, st_offset - 44); + right = MIN(4, end_offset - 44); + + video_border_pixel_write(&s_video.g_kimage_border_sides, + VIDEO_VFACTOR*line, VIDEO_VFACTOR, val, + BORDER_WIDTH + (left * EFF_BORDER_WIDTH/4), + BORDER_WIDTH + (right * EFF_BORDER_WIDTH/4)); + g_video.g_border_sides_refresh_needed = 1; + } + } + + if((line >= 192) && (line < 200)) { + if(st_offset < 44 && end_offset > 4) { + left = MAX(0, st_offset - 4); + right = MIN(40, end_offset - 4); + + video_border_pixel_write(&s_video.g_kimage_border_special2, + VIDEO_VFACTOR*line, VIDEO_VFACTOR, val, left * 320*VIDEO_HFACTOR / 40, + right * 320*VIDEO_HFACTOR / 40); + g_video.g_border_line24_refresh_needed = 1; + } + } + + /* now do the bottom, lines 200 to 215 */ + if((line >= 200) && (line < (200 + 15 /*BASE_MARGIN_BOTTOM/2*/)) ) // OG bottom border height is not linked to the real border size : it is 15px anyway + { + line -= 200; + left = st_offset; + right = MIN(48, end_offset); + video_border_pixel_write(&s_video.g_kimage_border_special, VIDEO_VFACTOR*line, VIDEO_VFACTOR, + val, (left * X_A2_WINDOW_WIDTH / 48), + (right * X_A2_WINDOW_WIDTH / 48)); + g_video.g_border_special_refresh_needed = 1; + } + + /* and top, lines 236 to 262 */ + if((line >= (262 - 16 /*BASE_MARGIN_TOP/2*/)) && (line < 262)) { // OG top border height is not linked to the real border size : it is 16px anyway + line -= (262 - 16 /*BASE_MARGIN_TOP/2*/); + left = st_offset; + right = MIN(48, end_offset); + video_border_pixel_write(&s_video.g_kimage_border_special, + BASE_MARGIN_BOTTOM + VIDEO_VFACTOR*line, VIDEO_VFACTOR, val, + (left * X_A2_WINDOW_WIDTH / 48), + (right * X_A2_WINDOW_WIDTH / 48)); + g_video.g_border_special_refresh_needed = 1; + } +} + +void +video_border_pixel_write(Kimage *kimage_ptr, int starty, int num_lines, + word32 val, int st_off, int end_off) +{ + + int width; + int width_act; + int mdepth; + int num_words, num_bytes; + int bytes_per_pix; + int i, j; + + if(end_off <= st_off) { + return; + } + + width = end_off - st_off; + width_act = kimage_ptr->width_act; + mdepth = kimage_ptr->mdepth; + bytes_per_pix = mdepth >> 3; + num_bytes = width * bytes_per_pix; + num_words = num_bytes >> 2; + + if(width > width_act) { + halt_printf("border write but width %d > act %d\n", width, + width_act); + } + + if(mdepth == 16) { + val = g_a2palette_8to1624[val & 0xff]; + val = (val << 16) + val; + } else if(mdepth == 32) { + /* 32-bit pixels */ + val = g_a2palette_8to1624[val & 0xff]; + } + + + for(i = 0; i < num_lines; i++) + { + + if (mdepth==8) + { + byte* ptr = (byte *)&(kimage_ptr->data_ptr[(starty + i)*width_act*bytes_per_pix]); + ptr += st_off; + memset(ptr,val,width); + } + else + { + word32* ptr = (word32 *)&(kimage_ptr->data_ptr[(starty + i)*width_act*bytes_per_pix]); + ptr += ((st_off * bytes_per_pix) / 4); + // HACK: the above isn't really right when bytes_per_pix is less than four... + for(j = 0; j < num_words; j++) + *ptr++ = val; + } + } +} + + +#define CH_SETUP_A2_VID(mem_ptr, ch_mask, reparse, do_clear) \ + ch_ptr = &(s_video.slow_mem_changed[mem_ptr >> CHANGE_SHIFT]); \ + ch_bitpos = 0; \ + bits_per_line = 40 >> SHIFT_PER_CHANGE; \ + ch_shift_amount = (mem_ptr >> SHIFT_PER_CHANGE) & 0x1f; \ + mask_per_line = (-(1 << (32 - bits_per_line))); \ + mask_per_line = mask_per_line >> ch_shift_amount; \ + ch_mask = *ch_ptr & mask_per_line; \ + if(do_clear) { \ + *ch_ptr = *ch_ptr & (~ch_mask); \ + } \ + ch_mask = ch_mask << ch_shift_amount; \ + \ + if(reparse) { \ + ch_mask = - (1 << (32 - bits_per_line)); \ + } + +#define CH_LOOP_A2_VID(ch_mask, ch_tmp) \ + ch_tmp = ch_mask & 0x80000000; \ + ch_mask = ch_mask << 1; \ + \ + if(!ch_tmp) { \ + continue; \ + } + +void +redraw_changed_text_40(int start_offset, int start_line, int num_lines, + int reparse, byte *screen_data, int altcharset, int bg_val, int fg_val, + int pixels_per_line) +{ + + register word32 start_time, end_time; + word32 *img_ptr; + word32 *save_img_ptr; +#ifdef VIDEO_DOUBLEVLINE + word32 *img_ptr2; + word32 *save_img_ptr2; +#endif + word32 *ch_ptr; + const word32 *font_ptr1; + const word32 *font_ptr2; + byte *slow_mem_ptr; + byte *b_ptr; + word32 ch_mask; + word32 ch_tmp; + word32 line_mask; + word32 mask_per_line; + word32 mem_ptr; + word32 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6; + word32 palette_add; + word32 diff_val; + word32 and_val; + word32 add_val; + const word32 ff_val = 0x0f0f0f0f; + word32 val0, val1; + int flash_state; + int y; + int x1, x2; + int ch_bitpos; + int bits_per_line; + int ch_shift_amount; + int shift_per; + int left, right; + int st_line_mod8, st_line; + int i; + + /* always redraws to the next multiple of 8 lines due to redraw */ + /* issues: char changed on one screen redraw at line 0 with */ + /* num_lines=1. We need to have drawn lines 1-7 also since line 1 */ + /* will not see any changed bytes */ + st_line_mod8 = start_line & 7; + st_line = start_line; + + start_line = start_line >> 3; + + y = start_line; + line_mask = 1 << (y); + mem_ptr = 0x400 + g_screen_index[y] + start_offset; + if(mem_ptr < 0x400 || mem_ptr >= 0xc00) { + halt_printf("redraw_changed_text: mem_ptr: %08x\n", mem_ptr); + } + + CH_SETUP_A2_VID(mem_ptr, ch_mask, reparse, (st_line_mod8 == 0)); + /* avoid clearing changed bits unless we are line 0 (mod 8) */ + + if(ch_mask == 0) { + return; + } + + GET_ITIMER(start_time); + + shift_per = (1 << SHIFT_PER_CHANGE); + + g_video.g_a2_screen_buffer_changed |= line_mask; + + palette_add = (g_video.g_a2vid_palette << 4); + palette_add = palette_add + (palette_add << 8) + (palette_add << 16) + + (palette_add << 24); + + left = 40; + right = 0; + + diff_val = (fg_val - bg_val) & 0xf; + and_val = diff_val + (diff_val << 8) + (diff_val << 16) +(diff_val<<24); + add_val = bg_val + (bg_val << 8) + (bg_val << 16) + (bg_val << 24); + + + flash_state = (g_video.g_cur_a2_stat & ALL_STAT_FLASH_STATE); + + for(x1 = 0; x1 < 40; x1 += shift_per) + { + + CH_LOOP_A2_VID(ch_mask, ch_tmp); + + left = MIN(x1, left); + right = MAX(x1 + shift_per, right); + slow_mem_ptr = &(g_slow_memory_ptr[mem_ptr + x1]); + + b_ptr = &screen_data[(8*y + st_line_mod8)*VIDEO_VFACTOR*pixels_per_line + x1*7*VIDEO_HFACTOR]; + + vid_printf("b_ptr:%p screen_data:%p\n",b_ptr,screen_data); + img_ptr = (word32 *)b_ptr; +#ifdef VIDEO_DOUBLEVLINE + img_ptr2 = (word32 *)(b_ptr + pixels_per_line); +#endif + + +#ifndef VIDEO_DOUBLEHLINE + for(x2 = 0; x2 < shift_per; x2 += 4) + { + /* do 4 chars at once! */ + val0 = slow_mem_ptr[0]; + val1 = slow_mem_ptr[1]; + word32 val2 = slow_mem_ptr[2]; + word32 val3 = slow_mem_ptr[3]; + slow_mem_ptr += 4; + + if(!altcharset) { + if(val0 >= 0x40 && val0 < 0x80) { + if(flash_state) { + val0 += 0x40; + } else { + val0 -= 0x40; + } + } + if(val1 >= 0x40 && val1 < 0x80) { + if(flash_state) { + val1 += 0x40; + } else { + val1 -= 0x40; + } + } + if(val2 >= 0x40 && val2 < 0x80) { + if(flash_state) { + val2 += 0x40; + } else { + val2 -= 0x40; + } + } + if(val3 >= 0x40 && val3 < 0x80) { + if(flash_state) { + val3 += 0x40; + } else { + val3 -= 0x40; + } + } + } + save_img_ptr = img_ptr; +#ifdef VIDEO_DOUBLEVLINE + save_img_ptr2 = img_ptr2; +#endif + for(i = st_line_mod8; i < 8; i++) + { + const word32* font_ptr0 = &(g_font80_off0_bits[val0][i][0]); + tmp0 = (font_ptr0[0] & and_val) + add_val; + + const word32* font_ptr3 = &(g_font80_off3_bits[val1][i][0]); + tmp1 = ((font_ptr0[1]+font_ptr3[0]) & and_val)+ + add_val; + /* 3 bytes from ptr0, 1 from ptr3 */ + tmp2 = (font_ptr3[1] & and_val) + add_val; + + font_ptr2 = &(g_font80_off2_bits[val2][i][0]); + tmp3 = ((font_ptr3[2]+font_ptr2[0]) & and_val)+ + add_val; + /* 2 bytes from ptr3, 2 from ptr2*/ + tmp4 = (font_ptr2[1] & and_val) + add_val; + + font_ptr1 = &(g_font80_off1_bits[val3][i][0]); + tmp5 = ((font_ptr2[2]+font_ptr1[0]) & and_val)+ + add_val; + /* 1 byte from ptr2, 3 from ptr1 */ + tmp6 = (font_ptr1[1] & and_val) + add_val; + + tmp0 = (tmp0 & ff_val) + palette_add; + tmp1 = (tmp1 & ff_val) + palette_add; + tmp2 = (tmp2 & ff_val) + palette_add; + tmp3 = (tmp3 & ff_val) + palette_add; + tmp4 = (tmp4 & ff_val) + palette_add; + tmp5 = (tmp5 & ff_val) + palette_add; + tmp6 = (tmp6 & ff_val) + palette_add; + + img_ptr[0] = tmp0; + img_ptr[1] = tmp1; + img_ptr[2] = tmp2; + img_ptr[3] = tmp3; + img_ptr[4] = tmp4; + img_ptr[5] = tmp5; + img_ptr[6] = tmp6; + + img_ptr += (VIDEO_VFACTOR*pixels_per_line)/4; + } + img_ptr = save_img_ptr + 7; +#ifdef VIDEO_DOUBLEVLINE + img_ptr2 = save_img_ptr2 + 7; +#endif + } + } +#else + for(x2 = 0; x2 < shift_per; x2 += 2) + { + val0 = *slow_mem_ptr++; + val1 = *slow_mem_ptr++; + + if(!altcharset) { + if(val0 >= 0x40 && val0 < 0x80) { + if(flash_state) { + val0 += 0x40; + } else { + val0 -= 0x40; + } + } + if(val1 >= 0x40 && val1 < 0x80) { + if(flash_state) { + val1 += 0x40; + } else { + val1 -= 0x40; + } + } + } + save_img_ptr = img_ptr; +#ifdef VIDEO_DOUBLEVLINE + save_img_ptr2 = img_ptr2; +#endif + for(i = st_line_mod8; i < 8; i++) { + font_ptr1 = &(g_font40_even_bits[val0][i][0]); + tmp0 = (font_ptr1[0] & and_val) + add_val; + tmp1 = (font_ptr1[1] & and_val) + add_val; + tmp2 = (font_ptr1[2] & and_val) + add_val; + + font_ptr2 = &(g_font40_odd_bits[val1][i][0]); + tmp3 = ((font_ptr1[3]+font_ptr2[0]) & and_val)+ + add_val; + + tmp4 = (font_ptr2[1] & and_val) + add_val; + tmp5 = (font_ptr2[2] & and_val) + add_val; + tmp6 = (font_ptr2[3] & and_val) + add_val; + + tmp0 = (tmp0 & ff_val) + palette_add; + tmp1 = (tmp1 & ff_val) + palette_add; + tmp2 = (tmp2 & ff_val) + palette_add; + tmp3 = (tmp3 & ff_val) + palette_add; + tmp4 = (tmp4 & ff_val) + palette_add; + tmp5 = (tmp5 & ff_val) + palette_add; + tmp6 = (tmp6 & ff_val) + palette_add; + + img_ptr[0] = tmp0; + img_ptr[1] = tmp1; + img_ptr[2] = tmp2; + img_ptr[3] = tmp3; + img_ptr[4] = tmp4; + img_ptr[5] = tmp5; + img_ptr[6] = tmp6; +#ifdef VIDEO_DOUBLEVLINE + img_ptr2[0] = tmp0; + img_ptr2[1] = tmp1; + img_ptr2[2] = tmp2; + img_ptr2[3] = tmp3; + img_ptr2[4] = tmp4; + img_ptr2[5] = tmp5; + img_ptr2[6] = tmp6; + + img_ptr += (2*pixels_per_line)/4; + img_ptr2 += (2*pixels_per_line)/4; +#else + img_ptr += (1*pixels_per_line)/4; +#endif + } + + img_ptr = save_img_ptr + 7; +#ifdef VIDEO_DOUBLEVLINE + img_ptr2 = save_img_ptr2 + 7; +#endif + } + } +#endif // VIDEO_DOUBLEHLINE + + GET_ITIMER(end_time); + + for(i = 0; i < (8 - st_line_mod8); i++) { + g_video.g_a2_line_left_edge[st_line + i] = (left*7*VIDEO_HFACTOR); + g_video.g_a2_line_right_edge[st_line + i] = (right*7*VIDEO_HFACTOR); + } + + if(left >= right || left < 0 || right < 0) { + printf("line %d, 40: left >= right: %d >= %d\n", + start_line, left, right); + } + + g_video.g_cycs_in_40col += (end_time - start_time); + + g_video.g_need_redraw = 0; +} + +void +redraw_changed_text_80(int start_offset, int start_line, int num_lines, + int reparse, byte *screen_data, int altcharset, int bg_val, int fg_val, + int pixels_per_line) +{ + const word32 *font_ptr0, *font_ptr1, *font_ptr2, *font_ptr3; + word32 *ch_ptr; + word32 *img_ptr; + word32 *save_img_ptr; +#ifdef VIDEO_DOUBLEVLINE + word32 *img_ptr2; + word32 *save_img_ptr2; +#endif + byte *b_ptr; + byte *slow_mem_ptr; + word32 ch_mask; + word32 ch_tmp; + word32 mask_per_line; + word32 mem_ptr; + word32 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6; + word32 diff_val; + word32 add_val, and_val, ff_val; + word32 palette_add; + word32 line_mask; + word32 val0, val1, val2, val3; + int st_line_mod8, st_line; + int flash_state; + int y; + int x1, x2; + int i; + int ch_bitpos; + int bits_per_line; + int ch_shift_amount; + int shift_per; + int left, right; + +#ifndef VIDEO_DOUBLEHLINE + return ; +#endif + + st_line_mod8 = start_line & 7; + st_line = start_line; + + start_line = start_line >> 3; + + y = start_line; + line_mask = 1 << (y); + mem_ptr = 0x400 + g_screen_index[y] + start_offset; + if(mem_ptr < 0x400 || mem_ptr >= 0xc00) { + halt_printf("redraw_changed_text: mem_ptr: %08x\n", mem_ptr); + } + + CH_SETUP_A2_VID(mem_ptr, ch_mask, reparse, (st_line_mod8 == 0)); + + if(ch_mask == 0) { + return; + } + + shift_per = (1 << SHIFT_PER_CHANGE); + + g_video.g_a2_screen_buffer_changed |= line_mask; + + palette_add = (g_video.g_a2vid_palette << 4); + palette_add = palette_add + (palette_add << 8) + (palette_add << 16) + + (palette_add << 24); + + left = 40; + right = 0; + + diff_val = (fg_val - bg_val) & 0xf; + add_val = bg_val + (bg_val << 8) + (bg_val << 16) + (bg_val << 24); + and_val = diff_val + (diff_val << 8) + (diff_val << 16) +(diff_val<<24); + ff_val = 0x0f0f0f0f; + + flash_state = (g_video.g_cur_a2_stat & ALL_STAT_FLASH_STATE); + + for(x1 = 0; x1 < 40; x1 += shift_per) { + CH_LOOP_A2_VID(ch_mask, ch_tmp); + + left = MIN(x1, left); + right = MAX(x1 + shift_per, right); + + slow_mem_ptr = &(g_slow_memory_ptr[mem_ptr + x1]); + b_ptr = &screen_data[(y*8 + st_line_mod8)*VIDEO_VFACTOR*pixels_per_line + x1*14]; + img_ptr = (word32 *)b_ptr; +#ifdef VIDEO_DOUBLEVLINE + img_ptr2 = (word32 *)(b_ptr + pixels_per_line); +#endif + + for(x2 = 0; x2 < shift_per; x2 += 2) { + /* do 4 chars at once! */ + + val1 = slow_mem_ptr[0]; + val3 = slow_mem_ptr[1]; + val0 = slow_mem_ptr[0x10000]; + val2 = slow_mem_ptr[0x10001]; + slow_mem_ptr += 2; + + if(!altcharset) { + if(val0 >= 0x40 && val0 < 0x80) { + if(flash_state) { + val0 += 0x40; + } else { + val0 -= 0x40; + } + } + if(val1 >= 0x40 && val1 < 0x80) { + if(flash_state) { + val1 += 0x40; + } else { + val1 -= 0x40; + } + } + if(val2 >= 0x40 && val2 < 0x80) { + if(flash_state) { + val2 += 0x40; + } else { + val2 -= 0x40; + } + } + if(val3 >= 0x40 && val3 < 0x80) { + if(flash_state) { + val3 += 0x40; + } else { + val3 -= 0x40; + } + } + } + save_img_ptr = img_ptr; +#ifdef VIDEO_DOUBLEVLINE + save_img_ptr2 = img_ptr2; +#endif + for(i = st_line_mod8; i < 8; i++) { + font_ptr0 = &(g_font80_off0_bits[val0][i][0]); + tmp0 = (font_ptr0[0] & and_val) + add_val; + + font_ptr3 = &(g_font80_off3_bits[val1][i][0]); + tmp1 = ((font_ptr0[1]+font_ptr3[0]) & and_val)+ + add_val; + /* 3 bytes from ptr0, 1 from ptr3 */ + tmp2 = (font_ptr3[1] & and_val) + add_val; + + font_ptr2 = &(g_font80_off2_bits[val2][i][0]); + tmp3 = ((font_ptr3[2]+font_ptr2[0]) & and_val)+ + add_val; + /* 2 bytes from ptr3, 2 from ptr2*/ + tmp4 = (font_ptr2[1] & and_val) + add_val; + + font_ptr1 = &(g_font80_off1_bits[val3][i][0]); + tmp5 = ((font_ptr2[2]+font_ptr1[0]) & and_val)+ + add_val; + /* 1 byte from ptr2, 3 from ptr1 */ + tmp6 = (font_ptr1[1] & and_val) + add_val; + + tmp0 = (tmp0 & ff_val) + palette_add; + tmp1 = (tmp1 & ff_val) + palette_add; + tmp2 = (tmp2 & ff_val) + palette_add; + tmp3 = (tmp3 & ff_val) + palette_add; + tmp4 = (tmp4 & ff_val) + palette_add; + tmp5 = (tmp5 & ff_val) + palette_add; + tmp6 = (tmp6 & ff_val) + palette_add; + + img_ptr[0] = tmp0; + img_ptr[1] = tmp1; + img_ptr[2] = tmp2; + img_ptr[3] = tmp3; + img_ptr[4] = tmp4; + img_ptr[5] = tmp5; + img_ptr[6] = tmp6; + + img_ptr += (VIDEO_VFACTOR*pixels_per_line)/4; + +#ifdef VIDEO_DOUBLEVLINE + img_ptr2[0] = tmp0; + img_ptr2[1] = tmp1; + img_ptr2[2] = tmp2; + img_ptr2[3] = tmp3; + img_ptr2[4] = tmp4; + img_ptr2[5] = tmp5; + img_ptr2[6] = tmp6; + + img_ptr2 += (2*pixels_per_line)/4; +#endif + } + + img_ptr = save_img_ptr + 7; +#ifdef VIDEO_DOUBLEVLINE + img_ptr2 = save_img_ptr2 + 7; +#endif + } + } + + for(i = 0; i < (8 - st_line_mod8); i++) { + g_video.g_a2_line_left_edge[st_line + i] = (left*14); + g_video.g_a2_line_right_edge[st_line + i] = (right*14); + } + + if(left >= right || left < 0 || right < 0) { + printf("line %d, 80: left >= right: %d >= %d\n", + start_line, left, right); + } + + g_video.g_need_redraw = 0; + +} + +void +redraw_changed_gr(int start_offset, int start_line, int num_lines, int reparse, + byte *screen_data, int pixels_per_line) +{ + word32 *img_ptr; + word32 *save_img_ptr; + word32 *ch_ptr; + byte *b_ptr; + byte *slow_mem_ptr; + word32 mask_per_line; + word32 ch_mask; + word32 ch_tmp; + word32 mem_ptr; + word32 line_mask; + word32 val0, val1; + word32 val0_wd, val1_wd; + word32 palette_add; + int half; + int x1, x2; + int y; + int y2; + int ch_bitpos; + int bits_per_line; + int ch_shift_amount; + int shift_per; + int left, right; + int st_line_mod8, st_line, eff_line, end_line; + int i; + + st_line_mod8 = start_line & 7; + st_line = start_line; + end_line = 8; // st_line_mod8 + num_lines; + + start_line = start_line >> 3; + + y = start_line; + line_mask = 1 << y; + mem_ptr = 0x400 + g_screen_index[y] + start_offset; + if(mem_ptr < 0x400 || mem_ptr >= 0xc00) { + printf("redraw_changed_gr: mem_ptr: %08x\n", mem_ptr); + } + + CH_SETUP_A2_VID(mem_ptr, ch_mask, reparse, (st_line_mod8 == 0)); + + if(ch_mask == 0) { + return; + } + + shift_per = (1 << SHIFT_PER_CHANGE); + + g_video.g_a2_screen_buffer_changed |= line_mask; + + palette_add = (g_video.g_a2vid_palette << 4); + palette_add = palette_add + (palette_add << 8) + (palette_add << 16) + + (palette_add << 24); + + left = 40; + right = 0; + + for(x1 = 0; x1 < 40; x1 += shift_per) { + CH_LOOP_A2_VID(ch_mask, ch_tmp); + + left = MIN(x1, left); + right = MAX(x1 + shift_per, right); + + slow_mem_ptr = &(g_slow_memory_ptr[mem_ptr + x1]); + b_ptr = &screen_data[(y*8 + st_line_mod8)*VIDEO_VFACTOR*pixels_per_line + + x1*7*VIDEO_HFACTOR]; + img_ptr = (word32 *)b_ptr; + +#ifndef VIDEO_DOUBLEHLINE + for(x2 = 0; x2 < shift_per; x2 += 4) { + byte val_even_main = slow_mem_ptr[0]; + byte val_odd_main = slow_mem_ptr[1]; + byte val_even_aux = slow_mem_ptr[2]; + byte val_odd_aux = slow_mem_ptr[3]; + slow_mem_ptr += 4; + + save_img_ptr = img_ptr; + + for(half = 0; half < 2; half++) { + val0 = val_even_aux & 0xf; + val1 = val_even_main & 0xf; + word32 val2 = val_odd_aux & 0xf; + word32 val3 = val_odd_main & 0xf; + + /* Handle funny pattern of dbl gr aux mem */ + val0 = ((val0 << 1) & 0xf) + (val0 >> 3); + val2 = ((val2 << 1) & 0xf) + (val2 >> 3); + + val0_wd = (val0 << 24) + (val0 << 16) + + (val0 << 8) + val0; + val1_wd = (val1 << 24) + (val1 << 16) + + (val1 << 8) + val1; + word32 val2_wd = (val2 << 24) + (val2 << 16) + + (val2 << 8) + val2; + word32 val3_wd = (val3 << 24) + (val3 << 16) + + (val3 << 8) + val3; +#ifdef KEGS_LITTLE_ENDIAN + word32 val01_wd = (val1_wd << 24) + (val0_wd&0xffffff); + word32 val12_wd = (val2_wd << 16) + (val1_wd & 0xffff); + word32 val23_wd = (val3_wd << 8) + (val2_wd & 0xff); +#else + word32 val01_wd = (val0_wd << 8) + (val1_wd & 0xff); + word32 val12_wd = (val1_wd << 16) + (val2_wd & 0xffff); + word32 val23_wd = (val2_wd << 24) + (val3_wd&0xffffff); +#endif + + for(y2 = 0; y2 < 8; y2++) { + eff_line = half*4 + (y2 >> 1); + if((eff_line < st_line_mod8) || + (eff_line > end_line)) { + continue; + } + img_ptr[0] = val0_wd + palette_add; + img_ptr[1] = val01_wd + palette_add; + img_ptr[2] = val1_wd + palette_add; + img_ptr[3] = val12_wd + palette_add; + img_ptr[4] = val2_wd + palette_add; + img_ptr[5] = val23_wd + palette_add; + img_ptr[6] = val3_wd + palette_add; + img_ptr += (pixels_per_line)/4; +#ifndef VIDEO_DOUBLEVLINE + y2++; // skip line +#endif + } + + val_even_aux = val_even_aux >> 4; + val_even_main = val_even_main >> 4; + val_odd_aux = val_odd_aux >> 4; + val_odd_main = val_odd_main >> 4; + } + + img_ptr = save_img_ptr + 7; + } + } +#else // VIDEO_DOUBLEHLINE + + for(x2 = 0; x2 < shift_per; x2 += 2) { + byte val_even = *slow_mem_ptr++; + byte val_odd = *slow_mem_ptr++; + + save_img_ptr = img_ptr; + + for(half = 0; half < 2; half++) { + val0 = val_even & 0xf; + val1 = val_odd & 0xf; + val0_wd = (val0 << 24) + (val0 << 16) + + (val0 << 8) + val0; + val1_wd = (val1 << 24) + (val1 << 16) + + (val1 << 8) + val1; +#ifdef KEGS_LITTLE_ENDIAN + word32 val01_wd = (val1_wd << 16) + (val0_wd & 0xffff); +#else + word32 val01_wd = (val0_wd << 16) + (val1_wd & 0xffff); +#endif + + for(y2 = 0; y2 < 8; y2++) { + + eff_line = half*4 + (y2 >> 1); + if((eff_line < st_line_mod8) || + (eff_line > end_line)) { + continue; + } + + img_ptr[0] = val0_wd + palette_add; + img_ptr[1] = val0_wd + palette_add; + img_ptr[2] = val0_wd + palette_add; + img_ptr[3] = val01_wd + palette_add; + img_ptr[4] = val1_wd + palette_add; + img_ptr[5] = val1_wd + palette_add; + img_ptr[6] = val1_wd + palette_add; + img_ptr += (pixels_per_line)/4; + +#ifndef VIDEO_DOUBLEVLINE + y2++; // skip line +#endif + } + + val_even = val_even >> 4; + val_odd = val_odd >> 4; + } + + img_ptr = save_img_ptr + 7; + } + } +#endif // !VIDEO_DOUBLEHLINE + for(i = 0; i < (8 - st_line_mod8); i++) { + g_video.g_a2_line_left_edge[st_line + i] = (left*7*VIDEO_HFACTOR); + g_video.g_a2_line_right_edge[st_line + i] = (right*7*VIDEO_HFACTOR); + } + + g_video.g_need_redraw = 0; +} + +void +redraw_changed_dbl_gr(int start_offset, int start_line, int num_lines, + int reparse, byte *screen_data, int pixels_per_line) +{ + word32 *img_ptr; + word32 *save_img_ptr; + word32 *ch_ptr; + byte *b_ptr; + byte *slow_mem_ptr; + word32 mask_per_line; + word32 ch_mask; + word32 ch_tmp; + word32 mem_ptr; + word32 line_mask; + word32 val0, val1, val2, val3; + word32 val0_wd, val1_wd, val2_wd, val3_wd; + word32 val01_wd, val12_wd, val23_wd; + word32 val_even_main, val_odd_main; + word32 val_even_aux, val_odd_aux; + word32 palette_add; + int half; + int x1, x2; + int y; + int y2; + int ch_bitpos; + int bits_per_line; + int ch_shift_amount; + int shift_per; + int left, right; + int st_line_mod8, st_line, eff_line, end_line; + int i; + +#ifndef VIDEO_DOUBLEHLINE + return ; +#endif + + + st_line_mod8 = start_line & 7; + end_line = 8; // st_line_mod8 + num_lines + st_line = start_line; + + start_line = start_line >> 3; + + y = start_line; + line_mask = 1 << y; + mem_ptr = 0x400 + g_screen_index[y] + start_offset; + if(mem_ptr < 0x400 || mem_ptr >= 0xc00) { + printf("redraw_changed_dbl_gr: mem_ptr: %08x\n", mem_ptr); + } + + CH_SETUP_A2_VID(mem_ptr, ch_mask, reparse, (st_line_mod8 == 0)); + + if(ch_mask == 0) { + return; + } + + shift_per = (1 << SHIFT_PER_CHANGE); + + g_video.g_a2_screen_buffer_changed |= line_mask; + + palette_add = (g_video.g_a2vid_palette << 4); + palette_add = palette_add + (palette_add << 8) + (palette_add << 16) + + (palette_add << 24); + + left = 40; + right = 0; + + for(x1 = 0; x1 < 40; x1 += shift_per) { + CH_LOOP_A2_VID(ch_mask, ch_tmp); + + left = MIN(x1, left); + right = MAX(x1 + shift_per, right); + + slow_mem_ptr = &(g_slow_memory_ptr[mem_ptr + x1]); + b_ptr = &screen_data[(y*8 + st_line_mod8)*VIDEO_VFACTOR*pixels_per_line + + x1*14]; + img_ptr = (word32 *)b_ptr; + + for(x2 = 0; x2 < shift_per; x2 += 2) { + val_even_main = slow_mem_ptr[0]; + val_odd_main = slow_mem_ptr[1]; + val_even_aux = slow_mem_ptr[0x10000]; + val_odd_aux = slow_mem_ptr[0x10001]; + slow_mem_ptr += 2; + + save_img_ptr = img_ptr; + + for(half = 0; half < 2; half++) { + val0 = val_even_aux & 0xf; + val1 = val_even_main & 0xf; + val2 = val_odd_aux & 0xf; + val3 = val_odd_main & 0xf; + + /* Handle funny pattern of dbl gr aux mem */ + val0 = ((val0 << 1) & 0xf) + (val0 >> 3); + val2 = ((val2 << 1) & 0xf) + (val2 >> 3); + + val0_wd = (val0 << 24) + (val0 << 16) + + (val0 << 8) + val0; + val1_wd = (val1 << 24) + (val1 << 16) + + (val1 << 8) + val1; + val2_wd = (val2 << 24) + (val2 << 16) + + (val2 << 8) + val2; + val3_wd = (val3 << 24) + (val3 << 16) + + (val3 << 8) + val3; +#ifdef KEGS_LITTLE_ENDIAN + val01_wd = (val1_wd << 24) + (val0_wd&0xffffff); + val12_wd = (val2_wd << 16) + (val1_wd & 0xffff); + val23_wd = (val3_wd << 8) + (val2_wd & 0xff); +#else + val01_wd = (val0_wd << 8) + (val1_wd & 0xff); + val12_wd = (val1_wd << 16) + (val2_wd & 0xffff); + val23_wd = (val2_wd << 24) + (val3_wd&0xffffff); +#endif + + for(y2 = 0; y2 < 8; y2++) { + eff_line = half*4 + (y2 >> 1); + if((eff_line < st_line_mod8) || + (eff_line > end_line)) { + continue; + } + img_ptr[0] = val0_wd + palette_add; + img_ptr[1] = val01_wd + palette_add; + img_ptr[2] = val1_wd + palette_add; + img_ptr[3] = val12_wd + palette_add; + img_ptr[4] = val2_wd + palette_add; + img_ptr[5] = val23_wd + palette_add; + img_ptr[6] = val3_wd + palette_add; + img_ptr += (pixels_per_line)/4; +#ifndef VIDEO_DOUBLEVLINE + y2++; // skip line +#endif + } + + val_even_aux = val_even_aux >> 4; + val_even_main = val_even_main >> 4; + val_odd_aux = val_odd_aux >> 4; + val_odd_main = val_odd_main >> 4; + } + + img_ptr = save_img_ptr + 7; + } + } + + for(i = 0; i < (8 - st_line_mod8); i++) { + g_video.g_a2_line_left_edge[st_line + i] = (left*14); + g_video.g_a2_line_right_edge[st_line + i] = (right*14); + } + + g_video.g_need_redraw = 0; +} + +void +redraw_changed_hires(int start_offset, int start_line, int num_lines, + int color, int reparse, byte *screen_data, int pixels_per_line) +{ + if(!color) + { + redraw_changed_hires_color(start_offset, start_line, num_lines, + reparse, screen_data, pixels_per_line); + } else { + redraw_changed_hires_bw(start_offset, start_line, num_lines, + reparse, screen_data, pixels_per_line); + } +} + +void +redraw_changed_hires_bw(int start_offset, int start_line, int num_lines, + int reparse, byte *screen_data, int pixels_per_line) +{ + word32 *img_ptr; +#ifdef VIDEO_DOUBLEVLINE + word32 *img_ptr2; +#endif + word32 *ch_ptr; + byte *b_ptr; + byte *slow_mem_ptr; + word32 mask_per_line; + word32 ch_mask; +#ifndef ACTIVEGSKARATEKA + word32 ch_tmp; +#endif + + word32 mem_ptr; + word32 val0, val1; + word32 val_whole; + word32 line_mask; + word32 palette_add; + int y; + int x1, x2; + int ch_bitpos; + int bits_per_line; + int ch_shift_amount; + int shift_per; + int left, right; + int st_line; + int i; + + + st_line = start_line; + start_line = start_line >> 3; + + palette_add = (g_video.g_a2vid_palette << 4); + palette_add = palette_add + (palette_add << 8) + (palette_add << 16) + + (palette_add << 24); + + left = 40; + right = 0; + + for(y = st_line; y < (st_line + num_lines); y++) { + line_mask = 1 << (y >> 3); + mem_ptr = 0x2000 + (((y & 7) * 0x400) + + g_screen_index[y >> 3]) + start_offset; + + CH_SETUP_A2_VID(mem_ptr, ch_mask, reparse, 1); + +#ifndef ACTIVEGSKARATEKA + if(ch_mask == 0) { + continue; + } +#else +#pragma message( "TODO Find why BW scrolling is broken") +#endif + + + + shift_per = (1 << SHIFT_PER_CHANGE); + + g_video.g_a2_screen_buffer_changed |= line_mask; + + for(x1 = 0; x1 < 40; x1 += shift_per) + { +#ifndef ACTIVEGSKARATEKA + CH_LOOP_A2_VID(ch_mask, ch_tmp); +#endif + + left = MIN(x1, left); + right = MAX(x1 + shift_per, right); + + slow_mem_ptr = &(g_slow_memory_ptr[mem_ptr + x1]); + b_ptr = &screen_data[(y*VIDEO_VFACTOR)*pixels_per_line + x1*7*VIDEO_HFACTOR]; + img_ptr = (word32 *)b_ptr; +#ifdef VIDEO_DOUBLEVLINE + img_ptr2 = (word32 *)(b_ptr + pixels_per_line); +#endif + + +#ifndef VIDEO_DOUBLEHLINE + for(x2 = 0; x2 < shift_per; x2 += 2) + { + + // word32 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6; + + val0 = slow_mem_ptr[0]; + val1 = slow_mem_ptr[1]; + word32 val2 = slow_mem_ptr[2]; + word32 val3 = slow_mem_ptr[3]; + slow_mem_ptr += 4; + + val_whole = ((val3 & 0x7f) << 21) + + ((val2 & 0x7f) << 14) + + ((val1 & 0x7f) << 7) + + (val0 & 0x7f); + + word32 tmp0 = g_bw_dhires_convert[val_whole & 0xf]; + val_whole = val_whole >> 4; + word32 tmp1 = g_bw_dhires_convert[val_whole & 0xf]; + val_whole = val_whole >> 4; + word32 tmp2 = g_bw_dhires_convert[val_whole & 0xf]; + val_whole = val_whole >> 4; + word32 tmp3 = g_bw_dhires_convert[val_whole & 0xf]; + val_whole = val_whole >> 4; + word32 tmp4 = g_bw_dhires_convert[val_whole & 0xf]; + val_whole = val_whole >> 4; + word32 tmp5 = g_bw_dhires_convert[val_whole & 0xf]; + val_whole = val_whole >> 4; + word32 tmp6 = g_bw_dhires_convert[val_whole & 0xf]; + + img_ptr[0] = tmp0 + palette_add; + img_ptr[1] = tmp1 + palette_add; + img_ptr[2] = tmp2 + palette_add; + img_ptr[3] = tmp3 + palette_add; + img_ptr[4] = tmp4 + palette_add; + img_ptr[5] = tmp5 + palette_add; + img_ptr[6] = tmp6 + palette_add; + img_ptr += 7; + } +#else // !VIDEO_DOUBLEHLINE + for(x2 = 0; x2 < shift_per; x2 += 2) { + val0 = *slow_mem_ptr++; + val1 = *slow_mem_ptr++; + + val_whole = ((val1 & 0x7f) << 7) +(val0 & 0x7f); + + word32 tmp0 = g_bw_hires_convert[val_whole & 3]; + val_whole = val_whole >> 2; + word32 tmp1 = g_bw_hires_convert[val_whole & 3]; + val_whole = val_whole >> 2; + word32 tmp2 = g_bw_hires_convert[val_whole & 3]; + val_whole = val_whole >> 2; + word32 tmp3 = g_bw_hires_convert[val_whole & 3]; + val_whole = val_whole >> 2; + word32 tmp4 = g_bw_hires_convert[val_whole & 3]; + val_whole = val_whole >> 2; + word32 tmp5 = g_bw_hires_convert[val_whole & 3]; + val_whole = val_whole >> 2; + word32 tmp6 = g_bw_hires_convert[val_whole & 3]; + + img_ptr[0] = tmp0 + palette_add; + img_ptr[1] = tmp1 + palette_add; + img_ptr[2] = tmp2 + palette_add; + img_ptr[3] = tmp3 + palette_add; + img_ptr[4] = tmp4 + palette_add; + img_ptr[5] = tmp5 + palette_add; + img_ptr[6] = tmp6 + palette_add; + img_ptr += 7; + +#ifdef VIDEO_DOUBLEVLINE + img_ptr2[0] = tmp0 + palette_add; + img_ptr2[1] = tmp1 + palette_add; + img_ptr2[2] = tmp2 + palette_add; + img_ptr2[3] = tmp3 + palette_add; + img_ptr2[4] = tmp4 + palette_add; + img_ptr2[5] = tmp5 + palette_add; + img_ptr2[6] = tmp6 + palette_add; + img_ptr2 += 7; +#endif + } +#endif // VIDEO_DOUBLEHLINE + } + + } + + for(i = 0; i < num_lines; i++) { + g_video.g_a2_line_left_edge[st_line + i] = (left*7*VIDEO_HFACTOR); + g_video.g_a2_line_right_edge[st_line + i] = (right*7*VIDEO_HFACTOR); + } + + g_video.g_need_redraw = 0; +} + +void +redraw_changed_hires_color(int start_offset, int start_line, int num_lines, + int reparse, byte *screen_data, int pixels_per_line) +{ + word32 *img_ptr; +#ifdef VIDEO_DOUBLEVLINE + word32 *img_ptr2; +#endif + word32 *ch_ptr; + byte *b_ptr; + byte *slow_mem_ptr; + word32 mask_per_line; + word32 ch_mask; + word32 ch_tmp; + word32 mem_ptr; + word32 val0, val1; + word32 val_whole; + word32 pix_val; + word32 line_mask; + word32 prev_pixel; + word32 prev_hi; + word32 loc_hi; + word32 val_hi; + word32 tmp_val; + word32 palette_add; + int y; + int x1, x2; + int ch_bitpos; + int bits_per_line; + int ch_shift_amount; + int shift_per; + int left, right; + int st_line; + int i, j; + + st_line = start_line; +// int st_line2 = start_line; + + start_line = start_line >> 3; + + palette_add = (g_video.g_a2vid_palette << 4); + palette_add = palette_add + (palette_add << 8) + (palette_add << 16) + + (palette_add << 24); + + left = 40; + right = 0; + + for(y = st_line; y < (st_line + num_lines); y++) { + line_mask = 1 << (y >> 3); + mem_ptr = 0x2000 + (((y & 7) * 0x400) + + g_screen_index[y >> 3]) + start_offset; + + CH_SETUP_A2_VID(mem_ptr, ch_mask, reparse, 1); + + if(ch_mask == 0) { + continue; + } + + /* Hires depends on adjacent bits, so also reparse adjacent */ + /* regions so that if bits on the edge change, redrawing is */ + /* correct */ + ch_mask = ch_mask | (ch_mask >> 1) | (ch_mask << 1); + + shift_per = (1 << SHIFT_PER_CHANGE); + + g_video.g_a2_screen_buffer_changed |= line_mask; + + for(x1 = 0; x1 < 40; x1 += shift_per) { + + CH_LOOP_A2_VID(ch_mask, ch_tmp); + + left = MIN(x1, left); + right = MAX(x1 + shift_per, right); + + slow_mem_ptr = &(g_slow_memory_ptr[mem_ptr + x1]); + b_ptr = &screen_data[(y*VIDEO_VFACTOR)*pixels_per_line + x1*7*VIDEO_HFACTOR]; + img_ptr = (word32 *)b_ptr; +#ifdef VIDEO_DOUBLEVLINE + img_ptr2 = (word32 *)(b_ptr + pixels_per_line); +#endif + prev_pixel = 0; + prev_hi = 0; + + if(x1 > 0) { + tmp_val = slow_mem_ptr[-1]; + prev_pixel = (tmp_val >> 6) & 1; + prev_hi = (tmp_val >> 7) & 0x1; + } + +#ifndef VIDEO_DOUBLEHLINE + +#if 0 + // mode B&w + for(x2 = 0; x2 < shift_per; x2 += 2) { + + val0 = slow_mem_ptr[0]; + val1 = slow_mem_ptr[1]; + word32 val2 = slow_mem_ptr[2]; + word32 val3 = slow_mem_ptr[3]; + slow_mem_ptr += 4; + + val_whole = ((val3 & 0x7f) << 21) + + ((val2 & 0x7f) << 14) + + ((val1 & 0x7f) << 7) + + (val0 & 0x7f); + + word32 tmp0 = g_bw_dhires_convert[val_whole & 0xf]; + val_whole = val_whole >> 4; + word32 tmp1 = g_bw_dhires_convert[val_whole & 0xf]; + val_whole = val_whole >> 4; + word32 tmp2 = g_bw_dhires_convert[val_whole & 0xf]; + val_whole = val_whole >> 4; + word32 tmp3 = g_bw_dhires_convert[val_whole & 0xf]; + val_whole = val_whole >> 4; + word32 tmp4 = g_bw_dhires_convert[val_whole & 0xf]; + val_whole = val_whole >> 4; + word32 tmp5 = g_bw_dhires_convert[val_whole & 0xf]; + val_whole = val_whole >> 4; + word32 tmp6 = g_bw_dhires_convert[val_whole & 0xf]; + + /* + word32 tmp0 = g_dhires_convert[val_whole & 0xfff]; + val_whole = val_whole >> 4; + word32 tmp1 = g_dhires_convert[val_whole & 0xfff]; + val_whole = val_whole >> 4; + word32 tmp2 = g_dhires_convert[val_whole & 0xfff]; + val_whole = val_whole >> 4; + word32 tmp3 = g_dhires_convert[val_whole & 0xfff]; + val_whole = val_whole >> 4; + word32 tmp4 = g_dhires_convert[val_whole & 0xfff]; + val_whole = val_whole >> 4; + word32 tmp5 = g_dhires_convert[val_whole & 0xfff]; + val_whole = val_whole >> 4; + if((x1 + x2 + 2) < 40) { + val_whole += (slow_mem_ptr[0]<<8); + } + word32 tmp6 = g_dhires_convert[val_whole & 0xfff]; + */ + img_ptr[0] = tmp0 + palette_add; + img_ptr[1] = tmp1 + palette_add; + img_ptr[2] = tmp2 + palette_add; + img_ptr[3] = tmp3 + palette_add; + img_ptr[4] = tmp4 + palette_add; + img_ptr[5] = tmp5 + palette_add; + img_ptr[6] = tmp6 + palette_add; + img_ptr += 7; + } + } +#endif + word16* img_ptrw = (word16*)b_ptr; + + for(x2 = 0; x2 < shift_per; x2 += 2) { + val0 = *slow_mem_ptr++; + val1 = *slow_mem_ptr++; + + val_whole = ((val1 & 0x7f) << 8) + + ((val0 & 0x7f) << 1) + + prev_pixel; + + loc_hi = prev_hi; + if(((val1 >> 7) & 1) != 0) { + loc_hi += 0x7f00; + } + if(((val0 >> 7) & 1) != 0) { + loc_hi += 0xfe; + } + + prev_pixel = (val1 >> 6) & 1; + prev_hi = (val1 >> 7) & 1; + if((x1 + x2 + 2) < 40) { + tmp_val = slow_mem_ptr[0]; + if(tmp_val & 1) { + val_whole |= 0x8000; + } + if(tmp_val & 0x80) { + loc_hi |= 0x8000; + } + } + + loc_hi = loc_hi >> 1; + + for(j = 0; j < 7; j+=1) { + tmp_val = val_whole & 0xf; + val_hi = loc_hi & 0x3; + + pix_val = g_hires_convert[(val_hi<<4) + tmp_val]; + + // OG To optimize + word16 pix_16 = (pix_val >> 8 ) & 0xFFFF; + *img_ptrw++ = pix_16; + +/* +#ifdef VIDEO_DOUBLEVLINE + *img_ptr2++ = pix_val + palette_add; +#endif + */ + val_whole = val_whole >> 2; + loc_hi = loc_hi >> 2; + } + } + } + +#else //!VIDEO_DOUBLEHLINE + for(x2 = 0; x2 < shift_per; x2 += 2) { + val0 = *slow_mem_ptr++; + val1 = *slow_mem_ptr++; + + val_whole = ((val1 & 0x7f) << 8) + + ((val0 & 0x7f) << 1) + + prev_pixel; + + loc_hi = prev_hi; + if(((val1 >> 7) & 1) != 0) { + loc_hi += 0x7f00; + } + if(((val0 >> 7) & 1) != 0) { + loc_hi += 0xfe; + } + + prev_pixel = (val1 >> 6) & 1; + prev_hi = (val1 >> 7) & 1; + if((x1 + x2 + 2) < 40) { + tmp_val = slow_mem_ptr[0]; + if(tmp_val & 1) { + val_whole |= 0x8000; + } + if(tmp_val & 0x80) { + loc_hi |= 0x8000; + } + } + + loc_hi = loc_hi >> 1; + + for(j = 0; j < 7; j+=2/VIDEO_HFACTOR) { + tmp_val = val_whole & 0xf; + val_hi = loc_hi & 0x3; + + pix_val = g_hires_convert[(val_hi<<4) + tmp_val]; + *img_ptr++ = pix_val + palette_add; +#ifdef VIDEO_DOUBLEVLINE + *img_ptr2++ = pix_val + palette_add; +#endif + val_whole = val_whole >> 2; + loc_hi = loc_hi >> 2; + } + } + } +#endif // VIDEO_DOUBLEHLINE + } + + for(i = 0; i < num_lines; i++) { + g_video.g_a2_line_left_edge[st_line + i] = (left*7*VIDEO_HFACTOR); + g_video.g_a2_line_right_edge[st_line + i] = (right*7*VIDEO_HFACTOR); + /* //OG + for(int j=0;j<32;j++) + { + screen_data[(i+st_line2)*VIDEO_VFACTOR*pixels_per_line+j] = start_offset?0x00:0xFF ; + screen_data[((i+st_line2)*VIDEO_VFACTOR+1)*pixels_per_line+j] = start_offset?0x00:0xFF ; + } + */ + } + + g_video.g_need_redraw = 0; +} + + +void +redraw_changed_dbl_hires(int start_offset, int start_line, int num_lines, + int color, int reparse, byte *screen_data, int pixels_per_line) +{ + if(!color) { + redraw_changed_dbl_hires_color(start_offset, start_line, + num_lines, reparse, screen_data, pixels_per_line); + } else { + redraw_changed_dbl_hires_bw(start_offset, start_line, + num_lines, reparse, screen_data, pixels_per_line); + } +} + + +void +redraw_changed_dbl_hires_bw(int start_offset, int start_line, int num_lines, + int reparse, byte *screen_data, int pixels_per_line) +{ + word32 *img_ptr; +#ifdef VIDEO_DOUBLEVLINE + word32 *img_ptr2; +#endif + word32 *ch_ptr; + byte *b_ptr; + byte *slow_mem_ptr; + word32 mask_per_line; + word32 ch_mask; + word32 ch_tmp; + word32 mem_ptr; + word32 val0, val1, val2, val3; + word32 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6; + word32 val_whole; + word32 line_mask; + word32 palette_add; + int y; + int x1, x2; + int ch_bitpos; + int bits_per_line; + int ch_shift_amount; + int shift_per; + int left, right; + int st_line; + int i; + + st_line = start_line; + start_line = start_line >> 3; + + palette_add = (g_video.g_a2vid_palette << 4); + palette_add = palette_add + (palette_add << 8) + (palette_add << 16) + + (palette_add << 24); + + left = 40; + right = 0; + + for(y = st_line; y < (st_line + num_lines); y++) { + line_mask = 1 << (y >> 3); + mem_ptr = 0x2000 + (((y & 7) * 0x400) + g_screen_index[y >> 3] + + start_offset); + + CH_SETUP_A2_VID(mem_ptr, ch_mask, reparse, 1); + + if(ch_mask == 0) { + continue; + } + + /* Hires depends on adjacent bits, so also reparse adjacent */ + /* regions so that if bits on the edge change, redrawing is */ + /* correct */ + ch_mask = ch_mask | (ch_mask >> 1) | (ch_mask << 1); + + shift_per = (1 << SHIFT_PER_CHANGE); + + g_video.g_a2_screen_buffer_changed |= line_mask; + + for(x1 = 0; x1 < 40; x1 += shift_per) { + + CH_LOOP_A2_VID(ch_mask, ch_tmp); + + left = MIN(x1, left); + right = MAX(x1 + shift_per, right); + + slow_mem_ptr = &(g_slow_memory_ptr[mem_ptr + x1]); + b_ptr = &screen_data[(y*VIDEO_VFACTOR)*pixels_per_line + x1*14]; + img_ptr = (word32 *)b_ptr; +#ifdef VIDEO_DOUBLEVLINE + img_ptr2 = (word32 *)(b_ptr + pixels_per_line); +#endif + for(x2 = 0; x2 < shift_per; x2 += 2) { + val0 = slow_mem_ptr[0x10000]; + val1 = slow_mem_ptr[0]; + val2 = slow_mem_ptr[0x10001]; + val3 = slow_mem_ptr[1]; + slow_mem_ptr += 2; + + val_whole = ((val3 & 0x7f) << 21) + + ((val2 & 0x7f) << 14) + + ((val1 & 0x7f) << 7) + + (val0 & 0x7f); + + tmp0 = g_bw_dhires_convert[val_whole & 0xf]; + val_whole = val_whole >> 4; + tmp1 = g_bw_dhires_convert[val_whole & 0xf]; + val_whole = val_whole >> 4; + tmp2 = g_bw_dhires_convert[val_whole & 0xf]; + val_whole = val_whole >> 4; + tmp3 = g_bw_dhires_convert[val_whole & 0xf]; + val_whole = val_whole >> 4; + tmp4 = g_bw_dhires_convert[val_whole & 0xf]; + val_whole = val_whole >> 4; + tmp5 = g_bw_dhires_convert[val_whole & 0xf]; + val_whole = val_whole >> 4; + tmp6 = g_bw_dhires_convert[val_whole & 0xf]; + + img_ptr[0] = tmp0 + palette_add; + img_ptr[1] = tmp1 + palette_add; + img_ptr[2] = tmp2 + palette_add; + img_ptr[3] = tmp3 + palette_add; + img_ptr[4] = tmp4 + palette_add; + img_ptr[5] = tmp5 + palette_add; + img_ptr[6] = tmp6 + palette_add; + img_ptr += 7; + +#ifdef VIDEO_DOUBLEVLINE + img_ptr2[0] = tmp0 + palette_add; + img_ptr2[1] = tmp1 + palette_add; + img_ptr2[2] = tmp2 + palette_add; + img_ptr2[3] = tmp3 + palette_add; + img_ptr2[4] = tmp4 + palette_add; + img_ptr2[5] = tmp5 + palette_add; + img_ptr2[6] = tmp6 + palette_add; + img_ptr2 += 7; +#endif + + } + } + } + + for(i = 0; i < num_lines; i++) { + g_video.g_a2_line_left_edge[st_line + i] = (left*14); + g_video.g_a2_line_right_edge[st_line + i] = (right*14); + } + + g_video.g_need_redraw = 0; +} + +void +redraw_changed_dbl_hires_color(int start_offset, int start_line, int num_lines, + int reparse, byte *screen_data, int pixels_per_line) +{ + word32 *ch_ptr; + word32 *img_ptr; +#ifdef VIDEO_DOUBLEVLINE + word32 *img_ptr2; +#endif + byte *slow_mem_ptr; + byte *b_ptr; + word32 mask_per_line; + word32 ch_mask; + word32 ch_tmp; + word32 mem_ptr; + word32 val0, val1, val2, val3; + word32 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6; + word32 val_whole; + word32 prev_val; + word32 line_mask; + word32 palette_add; + int y; + int x1, x2; + int ch_bitpos; + int bits_per_line; + int ch_shift_amount; + int shift_per; + int left, right; + int st_line; + int i; + + st_line = start_line; + start_line = start_line >> 3; + + palette_add = (g_video.g_a2vid_palette << 4); + palette_add = palette_add + (palette_add << 8) + (palette_add << 16) + + (palette_add << 24); + + left = 40; + right = 0; + + for(y = st_line; y < (st_line + num_lines); y++) { + line_mask = 1 << (y >> 3); + mem_ptr = 0x2000 + (((y & 7) * 0x400) + g_screen_index[y >> 3] + + start_offset); + + CH_SETUP_A2_VID(mem_ptr, ch_mask, reparse, 1); + + if(ch_mask == 0) { + continue; + } + + /* dbl-hires also depends on adjacent bits, so reparse */ + /* adjacent regions so that if bits on the edge change, */ + /* redrawing is correct */ + ch_mask = ch_mask | (ch_mask >> 1) | (ch_mask << 1); + ch_mask = -1; + + shift_per = (1 << SHIFT_PER_CHANGE); + + g_video.g_a2_screen_buffer_changed |= line_mask; + + for(x1 = 0; x1 < 40; x1 += shift_per) { + + CH_LOOP_A2_VID(ch_mask, ch_tmp); + + left = MIN(x1, left); + right = MAX(x1 + shift_per, right); + + slow_mem_ptr = &(g_slow_memory_ptr[mem_ptr + x1]); + b_ptr = &screen_data[(y*VIDEO_VFACTOR)*pixels_per_line + x1*14]; + img_ptr = (word32 *)b_ptr; +#ifdef VIDEO_DOUBLEVLINE + img_ptr2 = (word32 *)(b_ptr + pixels_per_line); +#endif + for(x2 = 0; x2 < shift_per; x2 += 2) { + val0 = slow_mem_ptr[0x10000]; + val1 = slow_mem_ptr[0]; + val2 = slow_mem_ptr[0x10001]; + val3 = slow_mem_ptr[1]; + + prev_val = 0; + if((x1 + x2) > 0) { + prev_val = (slow_mem_ptr[-1] >> 3) &0xf; + } + val_whole = ((val3 & 0x7f) << 25) + + ((val2 & 0x7f) << 18) + + ((val1 & 0x7f) << 11) + + ((val0 & 0x7f) << 4) + prev_val; + + tmp0 = g_dhires_convert[val_whole & 0xfff]; + val_whole = val_whole >> 4; + tmp1 = g_dhires_convert[val_whole & 0xfff]; + val_whole = val_whole >> 4; + tmp2 = g_dhires_convert[val_whole & 0xfff]; + val_whole = val_whole >> 4; + tmp3 = g_dhires_convert[val_whole & 0xfff]; + val_whole = val_whole >> 4; + tmp4 = g_dhires_convert[val_whole & 0xfff]; + val_whole = val_whole >> 4; + tmp5 = g_dhires_convert[val_whole & 0xfff]; + val_whole = val_whole >> 4; + if((x1 + x2 + 2) < 40) { + val_whole += (slow_mem_ptr[0x10002]<<8); + } + tmp6 = g_dhires_convert[val_whole & 0xfff]; + + img_ptr[0] = tmp0 + palette_add; + img_ptr[1] = tmp1 + palette_add; + img_ptr[2] = tmp2 + palette_add; + img_ptr[3] = tmp3 + palette_add; + img_ptr[4] = tmp4 + palette_add; + img_ptr[5] = tmp5 + palette_add; + img_ptr[6] = tmp6 + palette_add; + img_ptr += 7; + +#ifdef VIDEO_DOUBLEVLINE + img_ptr2[0] = tmp0 + palette_add; + img_ptr2[1] = tmp1 + palette_add; + img_ptr2[2] = tmp2 + palette_add; + img_ptr2[3] = tmp3 + palette_add; + img_ptr2[4] = tmp4 + palette_add; + img_ptr2[5] = tmp5 + palette_add; + img_ptr2[6] = tmp6 + palette_add; + img_ptr2 += 7; +#endif + slow_mem_ptr += 2; + + } + } + } + + for(i = 0; i < num_lines; i++) { + g_video.g_a2_line_left_edge[st_line + i] = (left*14); + g_video.g_a2_line_right_edge[st_line + i] = (right*14); + } + + g_video.g_need_redraw = 0; +} + +int +video_rebuild_super_hires_palette(word32 scan_info, int line, int reparse) +{ + word32 *word_ptr; + word32 *ch_ptr; + byte *byte_ptr; + word32 ch_mask, mask_per_line; + word32 tmp; + word32 scan, old_scan; + int palette_changed; + int diff0, diff1, diff2; + int val0, val1, val2; + int diffs; + int low_delta, low_color; + int delta; + int full; + int ch_bit_offset, ch_word_offset; + int bits_per_line; + int palette; + int j, k; + + palette_changed = 0; + palette = scan_info & 0xf; + + ch_ptr = &(s_video.slow_mem_changed[0x9e00 >> CHANGE_SHIFT]); + ch_bit_offset = (palette << 5) >> SHIFT_PER_CHANGE; + ch_word_offset = ch_bit_offset >> 5; + ch_bit_offset = ch_bit_offset & 0x1f; + bits_per_line = (0x20 >> SHIFT_PER_CHANGE); + mask_per_line = -(1 << (32 - bits_per_line)); + mask_per_line = mask_per_line >> ch_bit_offset; + + ch_mask = ch_ptr[ch_word_offset] & mask_per_line; + ch_ptr[ch_word_offset] &= ~mask_per_line; /* clear the bits */ + + old_scan = g_video.g_superhires_scan_save[line]; + scan = (scan_info & 0xfaf) + (g_video.g_palette_change_cnt[palette] << 12); + g_video.g_superhires_scan_save[line] = scan; + +#if 0 + if(line == 1) { + word_ptr = (word32 *)&(g_slow_memory_ptr[0x19e00+palette*0x20]); + printf("y1vrshp, ch:%08x, s:%08x,os:%08x %d = %08x %08x %08x %08x %08x %08x %08x %08x\n", + ch_mask, scan, old_scan, reparse, + word_ptr[0], word_ptr[1], word_ptr[2], word_ptr[3], + word_ptr[4], word_ptr[5], word_ptr[6], word_ptr[7]); + } +#endif + + diffs = reparse | ((scan ^ old_scan) & 0xf0f); + /* we must do full reparse if palette changed for this line */ + + if(!diffs && (ch_mask == 0) && (((scan ^ old_scan) & (~0xf0)) == 0)) { + /* nothing changed, get out fast */ + return 0; + } + + if(ch_mask) { + /* indicates the palette has changed, and other scan lines */ + /* using this palette need to do a full 32-byte compare to */ + /* decide if they need to update or not */ + g_video.g_palette_change_cnt[palette]++; + } + + word_ptr = (word32 *)&(g_slow_memory_ptr[0x19e00 + palette*0x20]); + for(j = 0; j < 8; j++) { + if(word_ptr[j] != s_video.g_saved_line_palettes[line][j]) { + diffs = 1; + break; + } + } + + if(diffs == 0) { + return 0; + } + + /* first, save this word_ptr into saved_line_palettes */ + byte_ptr = (byte *)word_ptr; + for(j = 0; j < 8; j++) { + s_video.g_saved_line_palettes[line][j] = word_ptr[j]; + } + + full = s_video.g_installed_full_superhires_colormap; + + if(!full && palette == g_video.g_a2vid_palette) { + /* construct new color approximations from lores */ + for(j = 0; j < 16; j++) { + tmp = *byte_ptr++; + val2 = (*byte_ptr++) & 0xf; + val0 = tmp & 0xf; + val1 = (tmp >> 4) & 0xf; + low_delta = 0x1000; + low_color = 0x0; + for(k = 0; k < 16; k++) { + diff0 = g_expanded_col_0[k] - val0; + diff1 = g_expanded_col_1[k] - val1; + diff2 = g_expanded_col_2[k] - val2; + if(diff0 < 0) { + diff0 = -diff0; + } + if(diff1 < 0) { + diff1 = -diff1; + } + if(diff2 < 0) { + diff2 = -diff2; + } + delta = diff0 + diff1 + diff2; + if(delta < low_delta) { + low_delta = delta; + low_color = k; + } + } + + g_video.g_a2vid_palette_remap[j] = low_color; + } + } + // OG + //extern double last_vid_update_dcys; + //printf("palette %d (%x) changed @line:%d (vidupd:%f) last_vbl:%d (%f) dcycs :%f\n",palette,*byte_ptr,line,last_vid_update_dcys,g_sim65816.g_vbl_count,g_sim65816.g_last_vbl_dcycs,g_sim65816.g_cur_dcycs); + byte_ptr = (byte *)word_ptr; + /* this palette has changed */ + for(j = 0; j < 16; j++) { + val0 = *byte_ptr++; + val1 = *byte_ptr++; + video_update_color_array(palette*16 + j, (val1<<8) + val0); + } + + g_video.g_palette_change_summary = 1; + + return 1; +} + +#define SUPER_TYPE redraw_changed_super_hires_oneline_nofill_8 +#define SUPER_FILL 0 +#define SUPER_PIXEL_SIZE 8 +#include "superhires.h" +#undef SUPER_TYPE +#undef SUPER_FILL +#undef SUPER_PIXEL_SIZE + +#define SUPER_TYPE redraw_changed_super_hires_oneline_nofill_16 +#define SUPER_FILL 0 +#define SUPER_PIXEL_SIZE 16 +#include "superhires.h" +#undef SUPER_TYPE +#undef SUPER_FILL +#undef SUPER_PIXEL_SIZE + +#define SUPER_TYPE redraw_changed_super_hires_oneline_nofill_32 +#define SUPER_FILL 0 +#define SUPER_PIXEL_SIZE 32 +#include "superhires.h" +#undef SUPER_TYPE +#undef SUPER_FILL +#undef SUPER_PIXEL_SIZE + +#define SUPER_TYPE redraw_changed_super_hires_oneline_fill_8 +#define SUPER_FILL 1 +#define SUPER_PIXEL_SIZE 8 +#include "superhires.h" +#undef SUPER_TYPE +#undef SUPER_FILL +#undef SUPER_PIXEL_SIZE + +#define SUPER_TYPE redraw_changed_super_hires_oneline_fill_16 +#define SUPER_FILL 1 +#define SUPER_PIXEL_SIZE 16 +#include "superhires.h" +#undef SUPER_TYPE +#undef SUPER_FILL +#undef SUPER_PIXEL_SIZE + +#define SUPER_TYPE redraw_changed_super_hires_oneline_fill_32 +#define SUPER_FILL 1 +#define SUPER_PIXEL_SIZE 32 +#include "superhires.h" +#undef SUPER_TYPE +#undef SUPER_FILL +#undef SUPER_PIXEL_SIZE + + + +void +redraw_changed_super_hires(int start_offset, int start_line, int num_lines, + int in_reparse, byte *screen_data) +{ + word32 *ch_ptr; + word32 mask_per_line; + word32 all_checks; + word32 check0, check1, mask0, mask1; + word32 this_check; + word32 tmp; + word32 line_mask; + word32 pal; + word32 scan, old_scan; + word32 kd_tmp_debug; + int y; + int bits_per_line; + int a2vid_palette; + int type; + int left, right; + int st_line; + int check_bit_pos, check_word_off; + int pixel_size, pixel_size_type; + int use_a2vid_palette, mode_640; + int pixels_per_line; + int ret; + int i; + + st_line = start_line; + start_line = start_line >> 3; + + pixel_size = s_video.g_kimage_superhires.mdepth; + pixels_per_line = s_video.g_kimage_superhires.width_act; + + pixel_size_type = (pixel_size >> 3) - 1; + /* pixel_size_type is now: 0=8bit, 1=16bit, 3=32bit */ + if(pixel_size_type >= 3) { + pixel_size_type = 2; + } + + kd_tmp_debug = g_video.g_a2_screen_buffer_changed; + + line_mask = 1 << (start_line); + + ch_ptr = &(s_video.slow_mem_changed[(0x2000) >> CHANGE_SHIFT]); + bits_per_line = 160 >> SHIFT_PER_CHANGE; + mask_per_line = -(1 << (32 - bits_per_line)); + + if(SHIFT_PER_CHANGE != 3) { + halt_printf("SHIFT_PER_CHANGE must be 3!\n"); + return; + } + + a2vid_palette = g_video.g_a2vid_palette; + if(s_video.g_installed_full_superhires_colormap) { + a2vid_palette = -1; + } else { + /* handle palette counting for finding least-used palette */ + if(pixel_size == 8) { + for(y = 8*start_line; y < 8*(start_line + 1); y++) { + scan = g_slow_memory_ptr[0x19d00 + y]; + pal = scan & 0xf; + g_video.g_shr_palette_used[pal]++; + } + } + } + + all_checks = 0; + check0 = 0; + check1 = 0; + for(y = st_line; y < (st_line + num_lines); y++) { + scan = g_slow_memory_ptr[0x19d00 + y]; + check_bit_pos = bits_per_line * y; + check_word_off = check_bit_pos >> 5; /* 32 bits per word */ + check_bit_pos = check_bit_pos & 0x1f; /* 5-bit bit_pos */ + check0 = ch_ptr[check_word_off]; + check1 = ch_ptr[check_word_off+1]; + mask0 = mask_per_line >> check_bit_pos; + mask1 = 0; + this_check = check0 << check_bit_pos; + /* move indicated bit to MSbit position */ + if((check_bit_pos + bits_per_line) > 32) { + this_check |= (check1 >> (32 - check_bit_pos)); + mask1 = mask_per_line << (32 - check_bit_pos); + } + + ch_ptr[check_word_off] = check0 & ~mask0; + ch_ptr[check_word_off+1] = check1 & ~mask1; + + this_check = this_check & mask_per_line; + old_scan = g_video.g_superhires_scan_save[y]; + use_a2vid_palette = ((scan & 0xf) == (word32)a2vid_palette); + scan = (scan + (a2vid_palette << 8)) & 0xfff; + + ret = video_rebuild_super_hires_palette(scan, y, in_reparse); +#if 0 + if(y == 1) { + printf("y1, ch:%08x, ret:%d, scan:%03x, os:%03x\n", + this_check, ret, scan, old_scan); + } +#endif + if(ret || in_reparse || ((scan ^ old_scan) & 0xa0)) { + /* 0x80 == mode640, 0x20 = fill */ + this_check = -1; + } + + if(this_check == 0) { + continue; + } + + mode_640 = (scan & 0x80); + if(mode_640) { + g_video.g_num_lines_superhires640++; + } + + type = ((scan >> 5) & 1) + (pixel_size_type << 1); + if(type & 1) { + /* fill mode--redraw whole line */ + this_check = -1; + } + + all_checks |= this_check; + + g_video.g_a2_screen_buffer_changed |= line_mask; + + + switch(type) { + case 0: /* nofill, 8 bit pixels */ + redraw_changed_super_hires_oneline_nofill_8( + screen_data, pixels_per_line, y, scan, + this_check, use_a2vid_palette, mode_640); + break; + case 1: /* fill, 8 bit pixels */ + redraw_changed_super_hires_oneline_fill_8( + screen_data, pixels_per_line, y, scan, + this_check, use_a2vid_palette, mode_640); + break; + case 2: /* nofill, 16 bit pixels */ + redraw_changed_super_hires_oneline_nofill_16( + screen_data, pixels_per_line, y, scan, + this_check, use_a2vid_palette, mode_640); + break; + case 3: /* fill, 16 bit pixels */ + redraw_changed_super_hires_oneline_fill_16( + screen_data, pixels_per_line, y, scan, + this_check, use_a2vid_palette, mode_640); + break; + case 4: /* nofill, 32 bit pixels */ + redraw_changed_super_hires_oneline_nofill_32( + screen_data, pixels_per_line, y, scan, + this_check, use_a2vid_palette, mode_640); + break; + case 5: /* fill, 32 byte pixels */ + redraw_changed_super_hires_oneline_fill_32( + screen_data, pixels_per_line, y, scan, + this_check, use_a2vid_palette, mode_640); + break; + default: + halt_printf("type: %d bad!\n", type); + break; + } + } + + left = 4*40; + right = 0; + + tmp = all_checks; + if(all_checks) { + for(i = 0; i < 160; i += 8) { + if(tmp & 0x80000000) { + left = MIN(i, left); + right = MAX(i + 8, right); + } + tmp = tmp << 1; + } + } + + for(i = 0; i < num_lines; i++) { + g_video.g_a2_line_left_edge[st_line + i] = 2*VIDEO_HFACTOR*left; + g_video.g_a2_line_right_edge[st_line + i] = 2*VIDEO_HFACTOR*right; + } + +#if 0 + if((g_video.g_a2_screen_buffer_changed & (1 << start_line)) != 0) { + if(((g_video.g_full_refresh_needed & (1 << start_line)) == 0) && + left >= right) { + halt_printf("shr: line: %d, left: %d, right:%d\n", + start_line, left, right); + printf("mask_per_line: %08x, all_checks: %08x\n", + mask_per_line, all_checks); + printf("check0,1 = %08x,%08x\n", check0, check1); + printf("a2_screen_chang: %08x\n", kd_tmp_debug); +#ifdef HPUX + U_STACK_TRACE(); +#endif + } + } +#endif + + g_video.g_need_redraw = 0; +} + +void +display_screen() +{ + + + video_update_through_line(262); +} +//double last_vid_update_dcys; // OG + +void +video_update_event_line(int line) +{ + int new_line; + + video_update_through_line(line); + + new_line = line + g_sim65816.g_line_ref_amt; + if(new_line < 200) { + if(!g_config_control_panel) { + add_event_vid_upd(new_line); + } + } else if(line >= 262) { + video_update_through_line(0); + if(!g_config_control_panel) { + add_event_vid_upd(1); /* add event for new screen */ + } + } + + if(g_video.g_video_extra_check_inputs) { + if(g_video.g_video_dcycs_check_input < g_sim65816.g_cur_dcycs) + { + video_check_input_events(); + } + } +} + +void +video_check_input_events() +{ + word32 start_time, end_time; + + g_video.g_video_dcycs_check_input = g_sim65816.g_cur_dcycs + 4000.0; + + GET_ITIMER(start_time); + extern void should_decrement_fifo(); + should_decrement_fifo(); + check_input_events(); + GET_ITIMER(end_time); + + g_video.g_cycs_in_check_input += (end_time - start_time); +} + +void +video_update_through_line(int line) +{ + register word32 start_time; + register word32 end_time; + int *mode_ptr; + word32 mask; + int last_line, num_lines; + int must_reparse; + int new_all_stat, prev_all_stat; + int new_stat, prev_stat; + int i; + +#if 0 + vid_printf("\nvideo_upd for line %d, lines: %06x\n", line, + get_lines_since_vbl(g_cur_dcycs)); +#endif + + GET_ITIMER(start_time); + + video_update_all_stat_through_line(line); + + i = g_video.g_vid_update_last_line; + + last_line = MIN(200, line+1); /* go through line, but not past 200 */ + + prev_stat = -2; + prev_all_stat = -2; + num_lines = 0; + must_reparse = 0; + for(i = g_video.g_vid_update_last_line; i < last_line; i++) { + new_all_stat = g_video.g_a2_new_all_stat[i]; + if(new_all_stat != g_video.g_a2_cur_all_stat[i]) { + /* regen line_stat for this line */ + g_video.g_a2_cur_all_stat[i] = new_all_stat; + if(new_all_stat == prev_all_stat) { + /* save a lookup */ + new_stat = prev_stat; + } else { + new_stat = video_all_stat_to_line_stat(i, + new_all_stat); + } + if(new_stat != g_video.g_a2_line_stat[i]) { + /* status changed */ + g_video.g_a2_line_stat[i] = new_stat; + mode_ptr = video_update_kimage_ptr(i, new_stat); + if(mode_ptr[i] != new_stat) { + must_reparse = 1; + mode_ptr[i] = new_stat; + } + mask = 1 << (line >> 3); + g_video.g_full_refresh_needed |= mask; + g_video.g_a2_screen_buffer_changed |= mask; + } + } + + new_stat = g_video.g_a2_line_stat[i]; + + if( ((new_stat == prev_stat) && ((i & 7) != 0)) || + (num_lines == 0) ) { + /* merge prev and this together */ + prev_stat = new_stat; + num_lines++; + continue; + } + + /* else, we must call refresh */ + video_refresh_lines(i - num_lines, num_lines, must_reparse); + num_lines = 1; + prev_all_stat = -1; + prev_stat = new_stat; + must_reparse = 0; + } + + if(num_lines > 0) { + + video_refresh_lines(i - num_lines, num_lines, must_reparse); + } + + g_video.g_vid_update_last_line = last_line; + + /* deal with border */ + if(line >= 262) { + if(g_video.g_num_lines_prev_superhires != g_video.g_num_lines_superhires) { + /* switched in/out from superhires--refresh borders */ + g_video.g_border_sides_refresh_needed = 1; + } + refresh_border(); + + if(g_video.g_status_refresh_needed) { + g_video.g_status_refresh_needed = 0; + x_redraw_status_lines(); + } + } + GET_ITIMER(end_time); + + g_video.g_cycs_in_refresh_line += (end_time - start_time); + + if(line >= 262) { + GET_ITIMER(start_time); + if(g_video.g_palette_change_summary) { + g_video.g_palette_change_summary = 0; + video_update_colormap(); + } + + video_push_kimages(); + GET_ITIMER(end_time); + g_video.g_cycs_in_refresh_ximage += (end_time - start_time); + + g_video.g_num_lines_prev_superhires = g_video.g_num_lines_superhires; + g_video.g_num_lines_prev_superhires640 = g_video.g_num_lines_superhires640; + g_video.g_num_lines_superhires = 0; + g_video.g_num_lines_superhires640 = 0; + } +} + +void +video_refresh_lines(int st_line, int num_lines, int must_reparse) +{ + byte *ptr; + int line; + int stat; + int mode; + int dbl, page, color; + int altchar, bg_color, text_color; + int pixels_per_line; + int i; + + vid_printf("video_refresh_lines %d %d\n",st_line,num_lines); + + line = st_line; + + /* do some basic checking, num_lines should be 1-8, and */ + /* st_line+num_lines-1 cannot roll over 8 */ + if((num_lines < 1) || (num_lines > 8) || + (((st_line & 7) + num_lines) > 8) ) { + halt_printf("video_refresh_lines called with %d, %d\n", + st_line, num_lines); + return; + } + + stat = g_video.g_a2_line_stat[line]; + ptr = g_video.g_a2_line_kimage[line]->data_ptr; + pixels_per_line = g_video.g_a2_line_kimage[line]->width_act; + + /* do not zero g_a2_line_left/right_edge here since text/gr routs */ + /* need to leave stale values around for drawing to work correctly */ + /* all routs force in new left/right when there are screen changes */ + + dbl = stat & 1; + color = (stat >> 1) & 1; + page = (stat >> 2) & 1; + mode = (stat >> 4) & 7; + +#if 0 + printf("refresh line: %d, stat: %04x\n", line, stat); +#endif + + switch(mode) { + case MODE_TEXT: + vid_printf("refresh line: %d, stat: %04x\n", line, stat); + altchar = (stat >> 7) & 1; + bg_color = (stat >> 8) & 0xf; + text_color = (stat >> 12) & 0xf; + if(dbl) { + redraw_changed_text_80(0x000 + page*0x400, st_line, + num_lines, must_reparse, ptr, altchar, bg_color, + text_color, pixels_per_line); + } else { + redraw_changed_text_40(0x000 + page*0x400, st_line, + num_lines, must_reparse, ptr, altchar, bg_color, + text_color, pixels_per_line); + } + break; + case MODE_GR: + if(dbl) { + redraw_changed_dbl_gr(0x000 + page*0x400, st_line, + num_lines, must_reparse, ptr, pixels_per_line); + } else { + redraw_changed_gr(0x000 + page*0x400, st_line, + num_lines, must_reparse, ptr, pixels_per_line); + } + break; + case MODE_HGR: + if(dbl) { + redraw_changed_dbl_hires(0x000 + page*0x2000, st_line, + num_lines, color, must_reparse, ptr, + pixels_per_line); + } else { + redraw_changed_hires(0x000 + page*0x2000, st_line, + num_lines, color, must_reparse, ptr, + pixels_per_line); + } + break; + case MODE_SUPER_HIRES: + g_video.g_num_lines_superhires++; + redraw_changed_super_hires(0, st_line, num_lines, + must_reparse, ptr); + break; + case MODE_BORDER: + if(line < 192) { + halt_printf("Border line not 192: %d\n", line); + } + for(i = 0; i < num_lines; i++) { + g_video.g_a2_line_left_edge[line + i] = 0; + g_video.g_a2_line_right_edge[line + i] = 320*VIDEO_HFACTOR; + } + if(g_video.g_border_line24_refresh_needed) { + g_video.g_border_line24_refresh_needed = 0; + g_video.g_a2_screen_buffer_changed |= (1 << 24); + } + break; + default: + halt_printf("refresh screen: mode: 0x%02x unknown!\n", mode); + x_exit(7); + break; + } +} + +void +refresh_border() +{ + /**ZZZZ***/ +} + +// OG Added video_release_kimages proto +void video_release_kimages(); + +void +end_screen() +{ + printf("In end_screen\n"); + + // OG Free up allocated images + video_release_kimages(); + x_video_shut(); +} + +byte g_font_array[256][8] = { +#include "kegsfont.h" +}; + +void +read_a2_font() +{ + byte *f40_e_ptr; + byte *f40_o_ptr; + byte *f80_0_ptr, *f80_1_ptr, *f80_2_ptr, *f80_3_ptr; + int char_num; + int j, k; + int val0; + int mask; + int pix; + + for(char_num = 0; char_num < 0x100; char_num++) { + for(j = 0; j < 8; j++) { + val0 = g_font_array[char_num][j]; + + mask = 0x80; + + for(k = 0; k < 3; k++) { + g_font80_off0_bits[char_num][j][k] = 0; + g_font80_off1_bits[char_num][j][k] = 0; + g_font80_off2_bits[char_num][j][k] = 0; + g_font80_off3_bits[char_num][j][k] = 0; + g_font40_even_bits[char_num][j][k] = 0; + g_font40_odd_bits[char_num][j][k] = 0; + } + g_font40_even_bits[char_num][j][3] = 0; + g_font40_odd_bits[char_num][j][3] = 0; + + f40_e_ptr = (byte *)&g_font40_even_bits[char_num][j][0]; + f40_o_ptr = (byte *)&g_font40_odd_bits[char_num][j][0]; + + f80_0_ptr = (byte *)&g_font80_off0_bits[char_num][j][0]; + f80_1_ptr = (byte *)&g_font80_off1_bits[char_num][j][0]; + f80_2_ptr = (byte *)&g_font80_off2_bits[char_num][j][0]; + f80_3_ptr = (byte *)&g_font80_off3_bits[char_num][j][0]; + + for(k = 0; k < 7; k++) { + pix = 0; + if(val0 & mask) { + pix = 0xf; + } + + f40_e_ptr[2*k] = pix; + f40_e_ptr[2*k+1] = pix; + + f40_o_ptr[2*k+2] = pix; + f40_o_ptr[2*k+3] = pix; + + f80_0_ptr[k] = pix; + f80_1_ptr[k+1] = pix; + f80_2_ptr[k+2] = pix; + f80_3_ptr[k+3] = pix; + + mask = mask >> 1; + } + } + } +} + + +/* Helper routine for the *driver.c files */ + +void init_kimage(Kimage *kimage_ptr, int extend_info, int depth, int mdepth) +{ + int width = A2_WINDOW_WIDTH; + int height = A2_WINDOW_HEIGHT; + if(extend_info & 1) { + /* Border at top and bottom of screen */ + width = X_A2_WINDOW_WIDTH; + height = X_A2_WINDOW_HEIGHT - A2_WINDOW_HEIGHT + 2*8; + } + if(extend_info & 2) { + /* Border at sides of screen */ + width = BORDER_WIDTH + EFF_BORDER_WIDTH; + height = A2_WINDOW_HEIGHT; + } + + memset(kimage_ptr,0,sizeof(Kimage)); + + kimage_ptr->width_req = width; + kimage_ptr->width_act = width; + kimage_ptr->height = height; + kimage_ptr->depth = depth; + kimage_ptr->mdepth = mdepth; + +} + +void video_get_kimage(Kimage *kimage_ptr, int extend_info, int _depth, int _mdepth) +{ + init_kimage(kimage_ptr,extend_info,_depth,_mdepth); + + byte *ptr; + + int width = kimage_ptr->width_req; + int height = kimage_ptr->height; + //int depth = kimage_ptr->depth; + int mdepth = kimage_ptr->mdepth; + + kimage_ptr->data_size = (width*height*mdepth) >> 3; + ptr = (byte *)malloc(kimage_ptr->data_size); + + if(ptr == 0) { + printf("malloc for data failed, mdepth: %d\n", mdepth); + x_exit(2); + } + + kimage_ptr->data_ptr = ptr; + kimage_ptr->dev_handle = (void *)-1; +} + + +void +video_get_kimages() +{ + video_get_kimage(&s_video.g_kimage_border_special2, 0, 8, 8); + video_get_kimage(&s_video.g_kimage_text[0], 0, 8, 8); + video_get_kimage(&s_video.g_kimage_text[1], 0, 8, 8); + video_get_kimage(&s_video.g_kimage_hires[0], 0, 8, 8); + video_get_kimage(&s_video.g_kimage_hires[1], 0, 8, 8); + video_get_kimage(&s_video.g_kimage_superhires, 0, s_video.g_screen_depth, + s_video.g_screen_mdepth); + video_get_kimage(&s_video.g_kimage_border_special, 1, s_video.g_screen_depth, + s_video.g_screen_mdepth); + video_get_kimage(&s_video.g_kimage_border_sides, 2, s_video.g_screen_depth, + s_video.g_screen_mdepth); +} + +// OG Added video_release_kimages (to match video_get_kimages) +void video_release_kimages() +{ + extern void x_release_kimage(Kimage *kimage_ptr); + + x_release_kimage(&s_video.g_kimage_border_special2); + x_release_kimage(&s_video.g_kimage_text[0]); + x_release_kimage(&s_video.g_kimage_text[1]); + x_release_kimage(&s_video.g_kimage_hires[0]); + x_release_kimage(&s_video.g_kimage_hires[1]); + x_release_kimage(&s_video.g_kimage_superhires); + x_release_kimage(&s_video.g_kimage_border_special); + x_release_kimage(&s_video.g_kimage_border_sides); +} + + +void +video_convert_kimage_depth(Kimage *kim_in, Kimage *kim_out, int startx, + int starty, int width, int height) +{ + byte *indata, *inptr; + word32 *outdata32, *outptr32; + word16 *outdata16, *outptr16; + word32 *palptr; + int out_width, in_width; + int x, y; + + indata = (byte *)kim_in->data_ptr; + outdata32 = (word32 *)kim_out->data_ptr; + outdata16 = (word16 *)kim_out->data_ptr; + + // OG added safe check (to investigate further) + if (!outdata32) + { + printf("video_convert_kimage_depth: kim_out* not yet initialized\n"); + return ; + } + + if(kim_in == &s_video.g_kimage_superhires) { + palptr = &(g_palette_8to1624[0]); + } else { + palptr = &(g_a2palette_8to1624[0]); + } + if(kim_in->depth != 8) { + printf("x_convert_kimage_depth from non-8 bit depth: %p\n", + kim_in); + x_exit(1); + } + + out_width = kim_out->width_act; + in_width = kim_in->width_act; + indata += (starty * in_width + startx); + outdata32 += (starty * out_width + startx); + outdata16 += (starty * out_width + startx); + if(kim_out->mdepth == 16) { + for(y = 0; y < height; y++) { + outptr16 = outdata16; + inptr = indata; + for(x = 0; x < width; x++) { + *outptr16++ = palptr[*inptr++]; + } + outdata16 += out_width; + indata += in_width; + } + } else { + /* 32-bit depth */ + for(y = 0; y < height; y++) { + outptr32 = outdata32; + inptr = indata; + for(x = 0; x < width; x++) { + *outptr32++ = palptr[*inptr++]; + } + outdata32 += out_width; + indata += in_width; + } + } +} + +void +video_push_lines(Kimage *kimage_ptr, int start_line, int end_line, int left_pix, + int right_pix) +{ + int mdepth_mismatch; + int srcy; + int center = 0; // OG added variable to center screen + + //OG add null pointer check when emulator is restarted + if (!kimage_ptr) + { + printf("warning : video_push_lines(kimage_ptr=null)\n"); + return ; + } + + if(left_pix >= right_pix || left_pix < 0 || right_pix <= 0) { + halt_printf("video_push_lines: lines %d to %d, pix %d to %d\n", + start_line, end_line, left_pix, right_pix); + printf("a2_screen_buf_ch:%08x, g_full_refr:%08x\n", + g_video.g_a2_screen_buffer_changed, g_video.g_full_refresh_needed); + } + + srcy = VIDEO_VFACTOR*start_line; + + mdepth_mismatch = (kimage_ptr->mdepth != s_video.g_screen_mdepth); + if(mdepth_mismatch) { + /* translate from 8-bit pseudo to correct visual */ + video_convert_kimage_depth(kimage_ptr, &s_video.g_mainwin_kimage, + left_pix, srcy, (right_pix - left_pix), + VIDEO_VFACTOR*(end_line - start_line)); + kimage_ptr = &s_video.g_mainwin_kimage; + } + g_refresh_bytes_xfer += VIDEO_VFACTOR*(end_line - start_line) *(right_pix - left_pix); + + // OG Calculating new center + if (g_video.g_cur_a2_stat & ALL_STAT_SUPER_HIRES) + center=0; + else + center=EFF_BORDER_WIDTH - BORDER_WIDTH; + + // OG shifting image to the center + x_push_kimage(kimage_ptr, g_video_act_margin_left + left_pix + center, + g_video_act_margin_top + srcy, left_pix, srcy, + (right_pix - left_pix), VIDEO_VFACTOR*(end_line - start_line)); +} + +void +video_push_border_sides_lines(int src_x, int dest_x, int width, int start_line, + int end_line) +{ + + Kimage *kimage_ptr; + int srcy; + + if(start_line < 0 || width < 0) { + return; + } + +#if 0 + printf("push_border_sides lines:%d-%d from %d to %d\n", + start_line, end_line, end_x - width, end_x); +#endif + kimage_ptr = &s_video.g_kimage_border_sides; + g_refresh_bytes_xfer += VIDEO_VFACTOR * (end_line - start_line) * width; + + srcy = VIDEO_VFACTOR * start_line; + + // Adjust dext_x to accound for changed margins + dest_x = dest_x + g_video_act_margin_left - BASE_MARGIN_LEFT; + if(dest_x < BASE_MARGIN_LEFT) { + src_x = src_x + g_video_act_margin_left - BASE_MARGIN_LEFT; + // Don't adjust src_x if doing right border + } + if(dest_x < 0) { + width = width + dest_x; + src_x = src_x - dest_x; + dest_x = 0; + } + if(src_x < 0) { + width = width + src_x; + dest_x = dest_x - src_x; + src_x = 0; + } + if(dest_x + width > g_video_act_width) { + width = g_video_act_width - dest_x; + } + if(width > 0) { + x_push_kimage(kimage_ptr, dest_x, g_video_act_margin_top + srcy, + src_x, srcy, width, VIDEO_VFACTOR*(end_line - start_line)); + } +} + +void +video_push_border_sides() +{ + int old_width; + int prev_line; + int width; + int mode; + int i; + +#if 0 + printf("refresh border sides!\n"); +#endif + + /* redraw left sides */ + // OG Left side can alos be "jagged" as a2 screen is now being centered + + //video_push_border_sides_lines(0, 0, BORDER_WIDTH, 0, 200); + + prev_line = -1; + old_width = -1; + for(i = 0; i < 200; i++) { + mode = (g_video.g_a2_line_stat[i] >> 4) & 7; + width = EFF_BORDER_WIDTH; + if(mode == MODE_SUPER_HIRES) { + width = BORDER_WIDTH; + } + if(width != old_width) { + video_push_border_sides_lines(BORDER_WIDTH, + 0, old_width, + prev_line, i); + prev_line = i; + old_width = width; + } + } + video_push_border_sides_lines(0/*BORDER_WIDTH*/, + 0, old_width, prev_line, 200); + + + /* right side--can be "jagged" */ + prev_line = -1; + old_width = -1; + for(i = 0; i < 200; i++) { + mode = (g_video.g_a2_line_stat[i] >> 4) & 7; + width = EFF_BORDER_WIDTH; + if(mode == MODE_SUPER_HIRES) { + width = BORDER_WIDTH; + } + if(width != old_width) { + video_push_border_sides_lines(BORDER_WIDTH, + X_A2_WINDOW_WIDTH - old_width, old_width, + prev_line, i); + prev_line = i; + old_width = width; + } + } + + + video_push_border_sides_lines(0/*BORDER_WIDTH*/, + X_A2_WINDOW_WIDTH - old_width, old_width, prev_line, 200); +} + +void +video_push_border_special() +{ + + Kimage *kimage_ptr; + int width, height; + int src_x, src_y; + int dest_x, dest_y; + + kimage_ptr = &s_video.g_kimage_border_special; + width = g_video_act_width; + g_refresh_bytes_xfer += width * (BASE_MARGIN_TOP + BASE_MARGIN_BOTTOM); + + // First do bottom border: dest_x from 0 to 640+MARGIN_LEFT+MARGIN_RIGHT + // and dest_y of BASE_MARGIN_BOTTOM starting at TOP+A2_HEIGHT + // src_x is dest_x, and src_y is 0. + dest_y = g_video_act_margin_top + A2_WINDOW_HEIGHT; + height = g_video_act_margin_bottom; + src_y = BASE_MARGIN_BOTTOM - height; + + dest_x = 0; + src_x = BASE_MARGIN_LEFT - g_video_act_margin_left; + + if(width > 0 && height > 0) { + x_push_kimage(kimage_ptr, dest_x, dest_y, src_x, src_y, + width, height); + } + + // Then fix top border: dest_x from 0 to 640+LEFT+RIGHT and + // dest_y from 0 to TOP. src_x is dest_x, but src_y is + // BOTTOM to BOTTOM+TOP + // Just use src_x and dest_x from earlier. + height = g_video_act_margin_top; + dest_y = 0; + src_y = BASE_MARGIN_BOTTOM; + if(width > 0 && height > 0) { + x_push_kimage(kimage_ptr, dest_x, dest_y, src_x, src_y, + width, height); + } +} + +// OG Added window ratio support +extern int x_calc_ratio(float&,float&); + +void +video_push_kimages() +{ + register word32 start_time; + register word32 end_time; + Kimage *last_kim, *cur_kim; + word32 mask; + int start; + int line; + int left_pix, right_pix; + int left, right; + int line_div8; + + if(g_video.g_border_sides_refresh_needed) { + g_video.g_border_sides_refresh_needed = 0; + video_push_border_sides(); + } + if(g_video.g_border_special_refresh_needed) { + g_video.g_border_special_refresh_needed = 0; + video_push_border_special(); + } + + if(g_video.g_a2_screen_buffer_changed == 0) { + return; + } + + GET_ITIMER(start_time); + + float ratiox,ratioy; + + if (x_calc_ratio(ratiox,ratioy)) + { + line = 0; + while (1) + { + start = line; + cur_kim = g_video.g_a2_line_kimage[line]; + while(line < 200 && g_video.g_a2_line_kimage[line] == cur_kim) line++; + if (cur_kim == &s_video.g_kimage_superhires ||cur_kim == &s_video.g_kimage_border_special2 ) + right = cur_kim->width_act/2*VIDEO_HFACTOR; + else + right = 560/2*VIDEO_HFACTOR; + + video_push_lines(cur_kim, start, line,0,right); + if (line==200) break; + } + + } + else + { + start = -1; + last_kim = (Kimage *)-1; + cur_kim = (Kimage *)0; + + left_pix = 640/2*VIDEO_HFACTOR; + right_pix = 0; + + for(line = 0; line < 200; line++) { + line_div8 = line >> 3; + mask = 1 << (line_div8); + cur_kim = g_video.g_a2_line_kimage[line]; + if((g_video.g_full_refresh_needed & mask) != 0) + { + left = 0; + + if (cur_kim == &s_video.g_kimage_superhires ||cur_kim == &s_video.g_kimage_border_special2 ) + right = cur_kim->width_act/2*VIDEO_HFACTOR; + else + right = 560/2*VIDEO_HFACTOR; + } + else + { + left = g_video.g_a2_line_left_edge[line]; + right = g_video.g_a2_line_right_edge[line]; + } + + if(!(g_video.g_a2_screen_buffer_changed & mask) || (left > right)) { + /* No need to update this line */ + /* Refresh previous chunks of lines, if any */ + if(start >= 0) { + video_push_lines(last_kim, start, line, + left_pix, right_pix); + start = -1; + left_pix = 640/2*VIDEO_HFACTOR; + right_pix = 0; + } + } else { + /* Need to update this line */ + if(start < 0) { + start = line; + last_kim = cur_kim; + } + if(cur_kim != last_kim) { + /* do the refresh */ + video_push_lines(last_kim, start, line, + left_pix, right_pix); + last_kim = cur_kim; + start = line; + left_pix = left; + right_pix = right; + } + left_pix = MIN(left, left_pix); + right_pix = MAX(right, right_pix); + } + } + + if(start >= 0) { + video_push_lines(last_kim, start, 200, left_pix, right_pix); + } + } + + g_video.g_a2_screen_buffer_changed = 0; + g_video.g_full_refresh_needed = 0; + +// refresh_video(0); + // x_push_done(); + + GET_ITIMER(end_time); + + g_video.g_cycs_in_xredraw += (end_time - start_time); +} + +void video_update_palette_color() +{ + for(int i = 0; i < 256; i++) + { + int lores_col = g_lores_colors[i & 0xf]; + video_update_color_raw(i, lores_col); + g_a2palette_8to1624[i] = g_palette_8to1624[i]; + } +} + +void +video_update_color_raw(int col_num, int a2_color) +{ + word32 tmp; + int red, green, blue; + int newred, newgreen, newblue; + + red = (a2_color >> 8) & 0xf; + green = (a2_color >> 4) & 0xf; + blue = (a2_color) & 0xf; + red = ((red << 4) + red); + green = ((green << 4) + green); + blue = ((blue << 4) + blue); + + float gray = (float)red*0.3f + (float)green*0.59f+ (float)blue*0.11f ; + + int cm = r_sim65816.get_color_mode(); + + switch(cm) + { + case COLORMODE_BW: + case COLORMODE_MONO: + green = (int)gray ; + red = (int)gray ; + blue = (int)gray; + break; + case COLORMODE_AMBER: + // It is a color that is 75% yellow (R+G) and 25% red. = 1R + green = (int) ( gray ); + blue = 0; + red = (int) ( gray ); + break; + case COLORMODE_GREEN: + green = (int)gray; + blue = 0; + red = 0; + break; + default: + break; + } + + newred = red >> s_video.g_red_right_shift; + newgreen = green >> s_video.g_green_right_shift; + newblue = blue >> s_video.g_blue_right_shift; + + tmp = ((newred & s_video.g_red_mask) << s_video.g_red_left_shift) + + ((newgreen & s_video.g_green_mask) << s_video.g_green_left_shift) + + ((newblue & s_video.g_blue_mask) << s_video.g_blue_left_shift); + + + + g_palette_8to1624[col_num] = tmp; + + x_update_color(col_num, red, green, blue, tmp); +} + +void +video_update_color_array(int col_num, int a2_color) +{ + int palette; + int full; + + if(col_num >= 256 || col_num < 0) { + halt_printf("video_update_color_array: col: %03x\n", col_num); + return; + } + + full = s_video.g_installed_full_superhires_colormap; + + palette = col_num >> 4; + if(!full && palette == g_video.g_a2vid_palette) { + return; + } + +#if 0 + if(s_video.g_screen_depth != 8) { + /* redraw whole superhires for now */ + g_video.g_full_refresh_needed = -1; + } +#endif + + video_update_color_raw(col_num, a2_color); +} + +void +video_update_colormap() +{ + int palette; + int full; + int i; + + full = s_video.g_installed_full_superhires_colormap; + + if(!full) { + palette = g_video.g_a2vid_palette << 4; + for(i = 0; i < 16; i++) { + video_update_color_raw(palette + i, g_lores_colors[i]); + } + x_update_physical_colormap(); + } +} + +void +video_update_status_line(int line, const char *string) +{ + char *buf; + const char *ptr; + int i; + + if(line >= MAX_STATUS_LINES || line < 0) { + printf("update_status_line: line: %d!\n", line); + x_exit(1); + } + + ptr = string; + buf = &(g_status_buf[line][0]); + g_status_ptrs[line] = buf; + for(i = 0; i < STATUS_LINE_LENGTH; i++) { + if(*ptr) { + buf[i] = *ptr++; + } else { + buf[i] = ' '; + } + } + + buf[STATUS_LINE_LENGTH] = 0; +} + +void +video_show_debug_info() +{ + word32 tmp1; + + printf("g_cur_dcycs: %f, last_vbl: %f\n", g_sim65816.g_cur_dcycs, + g_sim65816.g_last_vbl_dcycs); + tmp1 = get_lines_since_vbl(g_sim65816.g_cur_dcycs); + printf("lines since vbl: %06x\n", tmp1); + printf("Last line updated: %d\n", g_video.g_vid_update_last_line); +} + +word32 +float_bus(double dcycs) +{ + word32 val; + int lines_since_vbl; + int line, eff_line, line24; + int all_stat; + int byte_offset; + int hires, page2; + int addr; + + lines_since_vbl = get_lines_since_vbl(dcycs); + +/* For floating bus, model hires style: Visible lines 0-191 are simply the */ +/* data being displayed at that time. Lines 192-255 are lines 0 - 63 again */ +/* and lines 256-261 are lines 58-63 again */ +/* For each line, figure out starting byte at -25 mod 128 bytes from this */ +/* line's start */ +/* This emulates an Apple II style floating bus. A reall IIgs does not */ +/* drive anything meaningful during the 25 horizontal blanking lines, */ +/* nor during veritical blanking. The data seems to be 0 or related to */ +/* the instruction fetches on a real IIgs during blankings */ + + line = lines_since_vbl >> 8; + byte_offset = lines_since_vbl & 0xff; + /* byte offset is from 0 to 65, where the visible screen is drawn */ + /* from 25 to 65 */ + + eff_line = line; + if(line >= 192) { + eff_line = line - 192; + if(line >= 256) { + eff_line = line - 262 + 64; + } + } + all_stat = g_video.g_cur_a2_stat; + hires = all_stat & ALL_STAT_HIRES; + if((all_stat & ALL_STAT_MIX_T_GR) && (line >= 160)) { + hires = 0; + } + page2 = EXTRU(all_stat, 31 - BIT_ALL_STAT_PAGE2, 1); + if(all_stat & ALL_STAT_ST80) { + page2 = 0; + } + + line24 = (eff_line >> 3) & 0x1f; + addr = g_screen_index[line24] & 0x3ff; + addr = (addr & 0x380) + (((addr & 0x7f) - 25 + byte_offset) & 0x7f); + if(hires) { + addr = 0x2000 + addr + ((eff_line & 7) << 10) + (page2 << 13); + } else { + addr = 0x400 + addr + (page2 << 10); + } + + val = g_slow_memory_ptr[addr]; + if(byte_offset < 10) { + /* Bob Bishop's sample program seems to get confused by */ + /* these bytes--so mask some off to prevent seeing some */ + val = 0; + } +#if 0 + printf("For %04x (%d) addr=%04x, val=%02x, dcycs:%9.2f\n", + lines_since_vbl, eff_line, addr, val, dcycs - g_last_vbl_dcycs); +#endif + return val; +} + +void refresh_video(int _force) +{ + + if (!r_sim65816.is_emulator_offscreen_available() || r_sim65816.should_emulator_terminate()) + { + printf("refresh_video cancelled : offscreen not available\n"); + return ; + } + + addFrameRate(3); + + + if (_force || g_video_offscreen_has_been_modified ) + { + + addFrameRate(1); + + // pour avoir une synchro vbl + g_video_offscreen_has_been_modified = 1; + +#ifdef ENABLE_GRAPH + static double lastvbl=0.0; + double d = get_dtime(); + double delay = 1/(d - lastvbl); + lastvbl = d; + g_graph.add_graph(0,(float)delay,g_sim65816.g_vbl_count); + +#endif + + x_refresh_video(); + } + +} + +void SET_LINES() +{ + for(int i=0;i<200;i++) + { + Kimage* p = g_video.g_a2_line_kimage[i]; + if (p==(Kimage*)1) + p =&s_video.g_kimage_text[0]; + else + if (p==(Kimage*)2) + p =&s_video.g_kimage_text[1]; + else + if (p==(Kimage*)3) + p =&s_video.g_kimage_hires[0]; + else + if (p==(Kimage*)4 ) + p =&s_video.g_kimage_hires[1]; + else + if (p==(Kimage*)5) + p =&s_video.g_kimage_superhires; + else + if (p==(Kimage*)6) + p =&s_video.g_kimage_border_special; + else + if (p==(Kimage*)7) + p =&s_video.g_kimage_border_special2; + else + if (p==(Kimage*)8) + p =&s_video.g_kimage_border_sides; + else + if (p==(Kimage*)9) + p =&s_video.g_mainwin_kimage; + else + { + // to fix + p =&s_video.g_kimage_superhires; + } + g_video.g_a2_line_kimage[i]=p; + } +} +void RESET_LINES() +{ + for(int i=0;i<200;i++) + { + Kimage* p = g_video.g_a2_line_kimage[i]; + if (p==&s_video.g_kimage_text[0]) + p =(Kimage*)1; + else + if (p==&s_video.g_kimage_text[1]) + p =(Kimage*)2; + else + if (p==&s_video.g_kimage_hires[0]) + p =(Kimage*)3; + else + if (p==&s_video.g_kimage_hires[1]) + p =(Kimage*)4; + else + if (p==&s_video.g_kimage_superhires) + p =(Kimage*)5; + else + if (p==&s_video.g_kimage_border_special) + p =(Kimage*)6; + else + if (p==&s_video.g_kimage_border_special2) + p =(Kimage*)7; + else + if (p==&s_video.g_kimage_border_sides) + p =(Kimage*)8; + else + if (p==&s_video.g_mainwin_kimage) + p =(Kimage*)9; + else + { + // to fix + p=(Kimage*)5; + } + g_video.g_a2_line_kimage[i]=p; + } +} + + +#define NBSECSAMPLING 2.0f +int fpsNbFrames[NBFPSTIMER]; +double fpsLastSecond[NBFPSTIMER]; +int fpsValues[NBFPSTIMER]; + +void addFrameRate(int _id) +{ + + double timer = get_dtime(); + double delay = timer - fpsLastSecond[_id]; + if (delay>NBSECSAMPLING) + { + fpsValues[_id] = (int)((float)(fpsNbFrames[_id]*10.0)/NBSECSAMPLING); + fpsNbFrames[_id]=0; + fpsLastSecond[_id]=timer; + } + fpsNbFrames[_id]++; +// printf("%d-",_id); +} + +int getFrameRate(int _id) +{ + return fpsValues[_id]; +} diff --git a/kegs/Src/video.h b/kegs/Src/video.h new file mode 100644 index 0000000..79c119c --- /dev/null +++ b/kegs/Src/video.h @@ -0,0 +1,295 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + +extern void RESET_LINES(); +extern void SET_LINES(); + +#define MAX_BORDER_CHANGES 16384 + +#ifdef _WIN32 +#pragma pack(push,PRAGMA_PACK_SIZE) +#endif + +STRUCT(Border_changes) +{ + float fcycs; + int val; +} XCODE_PRAGMA_PACK;; + + +class sd_video : public serialized +{ +public: + int g_a2_line_stat[200]; + int g_a2_line_left_edge[200]; + int g_a2_line_right_edge[200]; + Kimage *g_a2_line_kimage[200]; + + int g_mode_text[2][200]; + int g_mode_hires[2][200]; + int g_mode_superhires[200]; + int g_mode_border[200]; + + byte g_cur_border_colors[270]; + byte g_new_special_border[64][64]; + byte g_cur_special_border[64][64]; + + word32 g_a2_screen_buffer_changed ; + word32 g_full_refresh_needed; + + word32 g_cycs_in_40col; + word32 g_cycs_in_xredraw ; + + + + + word32 g_superhires_scan_save[256]; + + double g_video_dcycs_check_input ; + int g_video_extra_check_inputs ; + + /* + int g_video_act_margin_left; + int g_video_act_margin_right; + int g_video_act_margin_top; + int g_video_act_margin_bottom ; + int g_video_act_width; + int g_video_act_height ; + */ + int g_need_redraw ; + int g_palette_change_summary ; + word32 g_palette_change_cnt[16]; + int g_border_sides_refresh_needed ; + int g_border_special_refresh_needed ; + int g_border_line24_refresh_needed ; + int g_status_refresh_needed ; + + int g_vbl_border_color ; + int g_border_last_vbl_changes ; + + int g_use_dhr140; + + int g_a2_new_all_stat[200]; + int g_a2_cur_all_stat[200]; + int g_new_a2_stat_cur_line ; + int g_vid_update_last_line ; + + + + int g_cur_a2_stat ; + + int g_a2vid_palette ; + + int Max_color_size ; + + + + int g_saved_a2vid_palette ; + word32 g_a2vid_palette_remap[16]; + + word32 g_cycs_in_refresh_line ; + word32 g_cycs_in_refresh_ximage ; + + int g_num_lines_superhires ; + int g_num_lines_superhires640; + int g_num_lines_prev_superhires ; + int g_num_lines_prev_superhires640 ; + + int g_flash_count ; + + int g_screen_redraw_skip_count ; + int g_screen_redraw_skip_amt ; + + word32 g_cycs_in_check_input ; + + int g_needfullrefreshfornextframe ; + + int g_num_a2vid_palette_checks ; + int g_shr_palette_used[16]; + + int g_border_color; + + Border_changes g_border_changes[MAX_BORDER_CHANGES]; + int g_num_border_changes; + + +#define RESET_KIMAGE(X,N) byte* old_##N = X.data_ptr; X.data_ptr=NULL; +#define SET_KIMAGE(X,N) X.data_ptr = old_##N ; + + +#define RESET_KIMAGES \ + RESET_KIMAGE(g_kimage_text[0],g_kimage_text0); \ + RESET_KIMAGE(g_kimage_text[1],g_kimage_text1); \ + RESET_KIMAGE(g_kimage_hires[0],g_kimage_hires0); \ + RESET_KIMAGE(g_kimage_hires[1],g_kimage_hires1); \ + RESET_KIMAGE(g_kimage_superhires,g_kimage_superhires); \ + RESET_KIMAGE(g_kimage_border_special,g_kimage_border_special); \ + RESET_KIMAGE(g_kimage_border_special2,g_kimage_border_special2); \ + RESET_KIMAGE(g_kimage_border_sides,g_kimage_border_sides); \ + RESET_KIMAGE(g_mainwin_kimage,g_mainwin_kimage); + + + +#define SET_KIMAGES \ + SET_KIMAGE(g_kimage_text[0],g_kimage_text0); \ + SET_KIMAGE(g_kimage_text[1],g_kimage_text1); \ + SET_KIMAGE(g_kimage_hires[0],g_kimage_hires0); \ + SET_KIMAGE(g_kimage_hires[1],g_kimage_hires1); \ + SET_KIMAGE(g_kimage_superhires,g_kimage_superhires); \ + SET_KIMAGE(g_kimage_border_special,g_kimage_border_special); \ + SET_KIMAGE(g_kimage_border_special2,g_kimage_border_special2); \ + SET_KIMAGE(g_kimage_border_sides,g_kimage_border_sides); \ + SET_KIMAGE(g_mainwin_kimage,g_mainwin_kimage); + + + + sd_video() + { + INIT_SERIALIZED(); + + g_video_extra_check_inputs=1; + + g_a2_screen_buffer_changed = (word32)-1; + g_full_refresh_needed = (word32)-1; +/* + g_video_act_margin_left = BASE_MARGIN_LEFT; + g_video_act_margin_right = BASE_MARGIN_RIGHT; + g_video_act_margin_top = BASE_MARGIN_TOP; + g_video_act_margin_bottom = BASE_MARGIN_BOTTOM; + g_video_act_width = X_A2_WINDOW_WIDTH; + g_video_act_height = X_A2_WINDOW_HEIGHT; +*/ + g_need_redraw = 1; + + g_border_sides_refresh_needed = 1; + g_border_special_refresh_needed = 1; + g_border_line24_refresh_needed = 1; + g_status_refresh_needed = 1; + + g_cur_a2_stat = ALL_STAT_TEXT | ALL_STAT_ANNUNC3 | (0xf << BIT_ALL_STAT_TEXT_COLOR); + g_a2vid_palette = 0xe; + Max_color_size = 256; + g_saved_a2vid_palette = -1; + + g_screen_redraw_skip_amt = -1; + g_needfullrefreshfornextframe = 1 ; + g_num_a2vid_palette_checks = 1; + } + + void in(serialize* _s) + { + + RESET_LINES(); + + byte* ptr = (byte*)_s->data; + + int ssize = *(int*)ptr; + if (ssize!=sizeof(*this)) + x_fatal_exit("alignment mismatch"); + ptr+=sizeof(ssize); + memcpy(this,ptr,sizeof(*this)); + + SET_LINES(); + g_needfullrefreshfornextframe = 1 ; + + } + + int out(serialize* _s, int _fastalloc) + { + int ssize= sizeof(*this); + int size = ssize + sizeof(ssize); + _s->size = size; + _s->fastalloc = _fastalloc; + _s->data = (void*)x_malloc(size,_fastalloc); + + RESET_LINES(); + byte* ptr = (byte*)_s->data; + + memcpy(ptr,&ssize,sizeof(ssize)); + ptr+=sizeof(ssize); + memcpy(ptr,this,sizeof(*this)); + SET_LINES(); + + + return size; + } +} XCODE_PRAGMA_PACK; + + +#ifdef _WIN32 +#pragma pack(pop) +#endif + + +extern sd_video g_video; + +extern int g_video_act_margin_left ; +extern int g_video_act_margin_right; +extern int g_video_act_margin_top ; +extern int g_video_act_margin_bottom ; +extern int g_video_act_width ; +extern int g_video_act_height ; + + +class ss_video +{ +public: + int g_screen_mdepth; + int g_screen_depth; + word32 g_red_mask; + word32 g_green_mask ; + word32 g_blue_mask ; + int g_red_left_shift; + int g_green_left_shift ; + int g_blue_left_shift; + int g_red_right_shift ; + int g_green_right_shift ; + int g_blue_right_shift ; + int g_installed_full_superhires_colormap ; + word32 g_saved_line_palettes[200][8]; + word32 slow_mem_changed[SLOW_MEM_CH_SIZE]; + + + Kimage g_kimage_text[2]; + Kimage g_kimage_hires[2]; + Kimage g_kimage_superhires; + Kimage g_kimage_border_special; + Kimage g_kimage_border_special2; + Kimage g_kimage_border_sides; + + Kimage g_mainwin_kimage; + + + ss_video() + { + memset(this,0,sizeof(*this)); + g_screen_depth = 8; + g_red_mask = 0xff; + g_green_mask = 0xff; + g_blue_mask = 0xff; + g_red_left_shift = 16; + g_green_left_shift = 8; + g_blue_left_shift = 0; + g_red_right_shift = 0; + g_green_right_shift = 0; + g_blue_right_shift = 0; + } +} ; + +extern ss_video s_video; + +extern Kimage g_kimage_offscreen; +extern int g_video_offscreen_has_been_modified ; + +void refresh_video(int _forcerefresh); + +void init_kimage(Kimage *kimage_ptr, int extend_info, int depth, int mdepth); + +#define NBFPSTIMER 5 +extern void addFrameRate(int ); +extern int getFrameRate(int ); diff --git a/kegs/iOS/emulatorView.h b/kegs/iOS/emulatorView.h new file mode 100644 index 0000000..cbc5dd1 --- /dev/null +++ b/kegs/iOS/emulatorView.h @@ -0,0 +1,32 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#pragma once + +#import +#include + +extern void x_async_refresh(CGContextRef myContext,CGRect r); +extern void add_event_key(int,int); +extern void add_event_mouse(int _x,int _y, int _state, int _button); +extern void add_event_modifier(unsigned int state) ; + +extern int g_warp_pointer; +extern int g_pause; + + +@interface emulatorView : UIView +{ + CADisplayLink* displayLink; + +} + + +-(void)activateEmulatorRefresh:(int)_frameRate; +-(void)deactivateEmulatorRefresh; + + +@end diff --git a/kegs/iOS/emulatorView.mm b/kegs/iOS/emulatorView.mm new file mode 100644 index 0000000..9e2a62d --- /dev/null +++ b/kegs/iOS/emulatorView.mm @@ -0,0 +1,98 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "../Src/defc.h" +#include "../Src/video.h" +#include "../Src/sim65816.h" +#import "emulatorView.h" + + +int x_frame_rate = -1; + +@implementation emulatorView + + +-(void)activateEmulatorRefresh:(int)_frameRate +{ + if (displayLink) + [self deactivateEmulatorRefresh]; + + displayLink = [[CADisplayLink displayLinkWithTarget:self selector:@selector(directDraw:)] retain]; + + x_frame_rate = _frameRate; + switch(_frameRate) + { + case 30: + [displayLink setFrameInterval:2]; + g_video.g_screen_redraw_skip_amt = 1; + break; + case 60: + [displayLink setFrameInterval:1]; + g_video.g_screen_redraw_skip_amt = -1; + break; + case 15: + [displayLink setFrameInterval:4]; + g_video.g_screen_redraw_skip_amt = 3; + break; + case 20: + default: // 20FPS + [displayLink setFrameInterval:3]; + g_video.g_screen_redraw_skip_amt = 2; + break; + } + // OG utiliser NSRunLoopCommonModes pour que le rendu ne s'arrete pas durant un uiscrollview + [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; +} + +-(void)deactivateEmulatorRefresh +{ + displayLink=nil; + +} + +int x_video_need_to_be_refreshed = 0; +extern int x_vbl_count ; + +void x_invalidrect() +{ + x_video_need_to_be_refreshed = 1; +} + +- (void)directDraw:(CADisplayLink *)sender +{ + + x_vbl_count++; + addFrameRate(4); + + if (x_video_need_to_be_refreshed) + { + x_video_need_to_be_refreshed = 0; + addFrameRate(3); + [self setNeedsDisplay]; + + } + /* +#ifdef ACTIVEGS + extern void x_update_framerate(); + x_update_framerate(); +#endif + */ +} + +-(void) drawRect:(CGRect) rect +{ + + CGContextRef g = UIGraphicsGetCurrentContext(); + x_async_refresh(g,rect); + +} + + + +@end + + + diff --git a/kegs/iOS/joystick_iphone.cpp b/kegs/iOS/joystick_iphone.cpp new file mode 100644 index 0000000..c6d506a --- /dev/null +++ b/kegs/iOS/joystick_iphone.cpp @@ -0,0 +1,57 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "../src/defc.h" +#include "../src/paddles.h" +#include "../src/moremem.h" + + +void +joystick_init() +{ + g_joystick_native_type1 = 0; + g_joystick_native_type2 = -1; + g_joystick_native_type = JOYSTICK_TYPE_NATIVE_1; +} + +extern float joyX,joyY; +extern int oaButton,caButton; +extern void x_notify_paddle(int _on); + +void +joystick_update(double dcycs) +{ + x_notify_paddle(1); + + // non linear joy + float x = joyX*1.0; + float y = joyY*1.0; + x = (x > 1.0?1.0:x); x = (x < -1.0?-1.0:x); + y = (y > 1.0?1.0:y); y = (y < -1.0?-1.0:y); + + + + g_paddles.g_paddle_val[0] = 32767*x; + g_paddles.g_paddle_val[1] = 32767*y; + g_paddles.g_paddle_val[2] = 32767; + g_paddles.g_paddle_val[3] = 32767; + + +// g_moremem.g_paddle_buttons = (oaButton & 1) + (caButton & 1)*2 ; + paddle_update_trigger_dcycs(dcycs); +} + +void +joystick_update_buttons() +{ +// g_moremem.g_paddle_buttons = (oaButton & 1) + (caButton & 1)*2 ; +} + +// OG +void joystick_shut() +{ +} + diff --git a/kegs/iOS/zoomEmulatorView.h b/kegs/iOS/zoomEmulatorView.h new file mode 100644 index 0000000..e999f7c --- /dev/null +++ b/kegs/iOS/zoomEmulatorView.h @@ -0,0 +1,73 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#import +#import "emulatorView.h" + +#if defined(VIDEO_DOUBLEVLINE) +# define HEIGHT_MULTIPLY 1 +#else +# define HEIGHT_MULTIPLY 2 +#endif + +#if defined(VIDEO_DOUBLEHLINE) +# define WIDTH_MULTIPLY 1 +#else +# define WIDTH_MULTIPLY 2 +#endif + + struct orientationVar +{ + float scale; + CGPoint p; +} ; + +typedef struct orientationVar orientationVar; + +@interface zoomEmulatorView : UIScrollView +{ + + float dpiRatio; + CGSize viewSize; + + + + int mouseDown; + int zoomDisabled; + orientationVar orientationVars[4]; + + float kbdScale; + + UIPanGestureRecognizer* panGR; + UIPinchGestureRecognizer* pinchGR; + CGPoint lastMousePos; + BOOL allowInput; + BOOL startNewPhase; +@public + UIImageView* _crt ; + emulatorView * _ew ; + UITouch* _useTouch; + UITouch* _secondTouch; + int curOrientation; +} +@property (retain,nonatomic) emulatorView* ew ; +@property (retain,nonatomic) UIImageView* crt ; +@property (retain,nonatomic) UITouch* useTouch ; +@property (retain,nonatomic) UITouch* secondTouch ; + +-(void)updateFrame:(CGRect)frame kbdRect:(CGRect)kbdRect; +-(void)updateScreen:(CGRect)frame ratio:(float)ratio; +- (void)switchOrientation:(int)orientation; +-(void)disableZoom; +-(void)enableZoom; +-(void)enableInput; +-(void)disableInput; +-(void)mouseUp; +-(void)mouseDown; +-(void)setRatioToOne; +-(CGPoint)rotateTouch:(UITouch*) _touch; +- (id)initWithFrame:(CGRect)frame ratio:(float)ratio; +@end diff --git a/kegs/iOS/zoomEmulatorView.mm b/kegs/iOS/zoomEmulatorView.mm new file mode 100644 index 0000000..64ff098 --- /dev/null +++ b/kegs/iOS/zoomEmulatorView.mm @@ -0,0 +1,808 @@ +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + +#include "../Src/defc.h" +#include "../Src/sim65816.h" +#include "../Src/adb.h" +#import "zoomEmulatorView.h" +#ifdef ACTIVEGSKARATEKA +#import "../../ActiveGS_Karateka/KaratekaAppDelegate.h" +#elif defined(ACTIVEGS) +#import "../../common.iphone/activegsAppDelegate.h" + +#endif + + + + + + +#undef debug_printf +#define debug_printf(...) +//#define debug_printf printf +//#define SHOW_COLOR + +@implementation zoomEmulatorView +@synthesize ew = _ew; +@synthesize crt = _crt; +@synthesize useTouch = _useTouch; +@synthesize secondTouch = _secondTouch; + +- (id)initWithFrame:(CGRect)frame ratio:(float)ratio +{ + + if (self = [super initWithFrame:frame]) + { + + self->dpiRatio = ratio; + self->viewSize = frame.size; + + debug_printf("ratio:%f width:%f height:%f",self->dpiRatio,self->viewSize.width,self->viewSize.height); + + CGRect r = CGRectMake(0.0,0.0,X_A2_WINDOW_WIDTH/self->dpiRatio ,X_A2_WINDOW_HEIGHT/self->dpiRatio ); + + self.contentSize = CGSizeMake(r.size.width,r.size.height); + + self.ew = [[[emulatorView alloc] initWithFrame:r] autorelease]; + [self.ew setUserInteractionEnabled:TRUE]; + + CGColorSpaceRef innerColorSpace = CGColorSpaceCreateDeviceRGB(); + CGContextRef icontext = CGBitmapContextCreate(nil, X_A2_WINDOW_WIDTH,X_A2_WINDOW_HEIGHT*2, 8, X_A2_WINDOW_WIDTH*4,innerColorSpace,kCGImageAlphaPremultipliedLast); + + CGContextSetRGBFillColor(icontext,0,0,0,0.0); // transparent + CGContextFillRect(icontext,CGRectMake(0,0,X_A2_WINDOW_WIDTH,X_A2_WINDOW_HEIGHT*2)); + for(int h=0;hviewSize = frame.size; + self->dpiRatio = ratio; + + CGRect r = CGRectMake(0.0,0.0,X_A2_WINDOW_WIDTH/self->dpiRatio ,X_A2_WINDOW_HEIGHT/self->dpiRatio ); + + self.contentSize = CGSizeMake(r.size.width,r.size.height); + [self.ew setFrame:r]; + + [self.crt setFrame:CGRectMake(0,0,r.size.width,r.size.height)]; + [self.crt setBounds:CGRectMake(0,0,r.size.width,r.size.height*2)]; + + [self setRatioToOne]; +} + +-(void)updateFrame:(CGRect)frame kbdRect:(CGRect)kbdRect +{ + + // adapte la vue pour que le clavier ne cache pas l'écran + CGRect scrollSize = self.bounds ; + + + float ref = kbdRect.size.height; + + if ( (-scrollSize.origin.y) < ref) + { + // centre par rapport à la hauteur restante + float hremaining = frame.size.height - ref; + frame.origin.y = - kbdRect.size.height- ( hremaining - scrollSize.size.height*HEIGHT_MULTIPLY ) /2 ; + // TODO : ajuster le zoom! + } + + // NSLog(@"Frame %f,%f %f,%f",frame.origin.x,frame.origin.y,frame.size.width,frame.size.height); + + [self setFrame:frame]; +} + + + + +-(void)setRatioToOne +{ + + int w = (int)viewSize.width; + int h = (int)viewSize.height; + + debug_printf("apprect %d x %d\n",w,h); + +#define ZOOM_CLAMP 0.25 // calcul un zoom par multiple *.25 + + + for(int i=0;i<4;i++) + { + if (!(i&1)) + { + + + + // prend le plus petit des zooms possible + + float r = w*dpiRatio / (A2_WINDOW_WIDTH*WIDTH_MULTIPLY); + r = r/ZOOM_CLAMP; + if (r<1.0) + r = 1.0; + int ir = (int)r; + float zoomw = (float)ir*ZOOM_CLAMP; + + r = h*dpiRatio / (A2_WINDOW_HEIGHT*HEIGHT_MULTIPLY); + r = r/ZOOM_CLAMP; + if (r<1.0) + r = 1.0; + ir = (int)r; + float zoomh = (float)ir*ZOOM_CLAMP; + + float zoom = zoomh < zoomw ? zoomh : zoomw ; + + orientationVars[i].scale = zoom; + + + float realew =(X_A2_WINDOW_WIDTH - A2_WINDOW_WIDTH)*WIDTH_MULTIPLY*zoom; + float realw = w*dpiRatio; + float posw = realw - A2_WINDOW_WIDTH*zoom; + float x = (posw - realew)/2; // pour centrer + + + float realeh =(X_A2_WINDOW_HEIGHT - A2_WINDOW_HEIGHT)*HEIGHT_MULTIPLY*zoom; + float realh = h*dpiRatio; + float posh = realh - A2_WINDOW_HEIGHT*HEIGHT_MULTIPLY*zoom; + float y = (posh - realeh)/2; // pour centrer + + orientationVars[i].p = CGPointMake(-x/dpiRatio/WIDTH_MULTIPLY,-y/dpiRatio/HEIGHT_MULTIPLY); + + + } + else + { + + + float r = h*dpiRatio / A2_WINDOW_WIDTH; + r = r/ZOOM_CLAMP; + if (r<1.0) + r = 1.0; + int ir = (int)r; + float zoomw = (float)ir*ZOOM_CLAMP; + + r = w*dpiRatio / ( A2_WINDOW_HEIGHT * HEIGHT_MULTIPLY ); + r = r/ZOOM_CLAMP; + if (r<1.0) + r = 1.0; + ir = (int)r; + float zoomh = (float)ir*ZOOM_CLAMP; + + float zoom = zoomh < zoomw ? zoomh : zoomw ; + + float realew =(X_A2_WINDOW_WIDTH - A2_WINDOW_WIDTH)*zoom; + float realw = h*dpiRatio; + float posw = realw - A2_WINDOW_WIDTH*zoom; + float x = (posw - realew)/2; + + + float realeh =(X_A2_WINDOW_HEIGHT - A2_WINDOW_HEIGHT)*HEIGHT_MULTIPLY*zoom; + float realh = w*dpiRatio; + float posh = realh - A2_WINDOW_HEIGHT*HEIGHT_MULTIPLY*zoom; + float y = (posh - realeh)/2; // pour centrer + + orientationVars[i].scale = zoom; + orientationVars[i].p = CGPointMake(-x/dpiRatio,-y/dpiRatio/2); + + + } + + debug_printf("orientation:%d = %f , p = %f,%f\n",i, orientationVars[i].scale,orientationVars[i].p.x,orientationVars[i].p.y); + + } + + mouseDown = 0; + allowInput = TRUE; + zoomDisabled = FALSE; + refScalePortrait = orientationVars[0].scale; + refScaleLandscape = orientationVars[1].scale; + + +} + + +- (void)switchOrientation:(int)orientation +{ + + curOrientation = -1; + float s = orientationVars[orientation].scale; + CGPoint p = orientationVars[orientation].p; + debug_printf("**** about to switchOrientation: (%d) scale:%f offset %f,%f\n",orientation,s,p.x,p.y); + + self.zoomScale = s ; + [self setContentOffset:p]; + curOrientation = orientation; + + s = orientationVars[orientation].scale; + p = orientationVars[orientation].p; + debug_printf("**** done switching (%d) scale:%f offset %f,%f\n",orientation,s,p.x,p.y); + + inCran = false; + + if (orientation & 1) + refScale = refScaleLandscape; + else + refScale = refScalePortrait; + +} + +-(void)setContentOffset:(CGPoint)p /*animated:(BOOL)animated*/ +{ + if (p.x == 0.0f || p.y == 0.0) + { + debug_printf("ignoring %f,%f\n",p.x,p.y); + return ; + } + // appelé par [super initWithFrame:frame] alors que ew n'est pas encore initialisé + if(self.ew != nil ) + { + + CGSize vs = self.ew.frame.size; + CGSize scrollSize = self.bounds.size; + + static float realScale=0.0f; + + + if (!inCran) + { + if ( fabs(self.zoomScale - refScale) < 0.05 ) + { + inCran = true; + realScale = self.zoomScale; + self.zoomScale = refScale; + } + } + else + { + realScale += self.zoomScale - refScale; + if (fabs(realScale - refScale) > 0.10 ) + { + // à faire avant le sef.zoomScale= sinon on tombe dans une boucle infinie! + inCran = false; + self.zoomScale = realScale; + } + else + self.zoomScale = refScale; + } + + + // recentre la fenetre si elle tient totalement en hauteur ou en largeur + + + if (scrollSize.width >= vs.width || inCran ) + p.x = - (scrollSize.width - abs(vs.width)) / 2.0; + if (scrollSize.height >= vs.height || inCran ) + p.y = - (scrollSize.height - abs(vs.height)) / 2.0; + + + if (curOrientation!=-1) + { + debug_printf("saving scale (%d) %f %f,%f\n",curOrientation,self.zoomScale,p.x,p.y); + orientationVars[curOrientation].scale = self.zoomScale ; // / kbdScale; + orientationVars[curOrientation].p = p; + } + + + } + debug_printf("********** offset : %f %f\n",p.x,p.y); + [super setContentOffset:p]; +} + + + +- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView +{ + return self.ew; + } + +- (void)drawRect:(CGRect)rect { + + // Drawing code + CGContextRef g = UIGraphicsGetCurrentContext(); + +#ifdef SHOW_COLOR + CGContextSetFillColorWithColor(g, [UIColor blueColor].CGColor); +#else + CGContextSetFillColorWithColor(g, [UIColor blackColor].CGColor); +#endif + + CGContextFillRect(g, rect); + + +} + + +-(CGPoint)rotateTouch:(UITouch*) _touch +{ + CGPoint pt; + float scale = self->dpiRatio/self.zoomScale; + + if (g_adb.g_warp_pointer==WARP_TOUCHSCREEN) + { + pt = [_touch locationInView:self.ew]; + pt.x *= self->dpiRatio; + pt.y *= self->dpiRatio; + pt.y = (X_A2_WINDOW_HEIGHT - pt.y); + pt.y *=2; + pt.x -= BASE_MARGIN_LEFT; + pt.y -= BASE_MARGIN_TOP*2; + + return pt; + } + + + pt = [_touch locationInView:self]; + int height = self.contentSize.height; + + if (r_sim65816.is_emulator_in_640mode()) + { + // current scale for 640 mode + } + else + { + // otherwise reduce the speed of the mouse + scale /= 2; + } + + pt.y = (height - pt.y)*scale; + pt.x *= scale; + + return pt; + +} + + +-(BOOL)touchesShouldCancelInContentView:(UIView *)view +{ + debug_printf("touchesShouldCancelInContentView\n"); + return !zoomDisabled; +} + +-(void)enableInput +{ + allowInput = TRUE; +} + +-(void)disableInput +{ + allowInput = FALSE; + if (self.useTouch) + self.useTouch = nil; + + if (self.secondTouch) + { + self.secondTouch = nil; + printf("*** secondtouch set in disableinput --- should never appear"); + } +} + + +-(void)disableZoom +{ + + debug_printf("disableZoom\n"); + + // BUG!!!! + // Sometimes, offset is being reset when gestures are disabled! + // Workaround = save the former offset and restore it afterwards + CGPoint offset = self.contentOffset; + + pinchGR.enabled = FALSE; + panGR.enabled = FALSE; + self.scrollEnabled = FALSE; + zoomDisabled= TRUE; + + // REstoring the offset + self.contentOffset = offset; + +} + +-(void)enableZoom +{ + + debug_printf("enableZoom\n"); + + pinchGR.enabled = TRUE; + panGR.enabled = TRUE; + + self.scrollEnabled = TRUE; + + zoomDisabled = FALSE; +} + + +- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view +{ + debug_printf("scrollViewWillBeginZooming\n"); +#ifdef ACTIVEGS + // le zoom a démarré : anule les timers pour que le zoom ne soit pas interrompu + [[pManager getEmulatorView].contentView disableGestures:(MODE_ALL + MODE_EMULATOR & ~MODE_ZOOM)]; + [[pManager getEmulatorView].kbdc setGestureIndicatorVisibility:MODE_ZOOM color:[UIColor grayColor]]; +#endif +} + + +- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale +{ + debug_printf("scrollViewDidEndZooming\n"); +#ifdef ACTIVEGS + // zoom terminé => on peut réactiver les gestures immédiatement + [[pManager getEmulatorView].contentView reenableAllGestures]; +#endif +} + + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView +{ + // NSLog(@" Offset = %@ ",NSStringFromCGPoint(scrollView.contentOffset)); +} + + +- (void)scrollViewDidZoom:(UIScrollView *)scrollView +{ +// printf("scrollViewDidZoom"); +// [ew directDraw:nil]; +} + +- (void) mouseDown +{ + if (!mouseDown) + { + + debug_printf("mouseDown %f %f\n",lastMousePos.x,lastMousePos.y); + mouseDown = 1; + add_event_mouse(lastMousePos.x,lastMousePos.y,1,1); +#ifdef ACTIVEGS + [[pManager getEmulatorView].kbdc setGestureIndicatorVisibility:MODE_MOUSEBUTTON color:[UIColor redColor]]; +#endif + } +} + +- (void) mouseUp +{ + if (mouseDown) + { + add_event_mouse(lastMousePos.x,lastMousePos.y,0,1); + mouseDown = 0; +#ifdef ACTIVEGS + [[pManager getEmulatorView].kbdc setGestureIndicatorVisibility:MODE_MOUSEBUTTON color:[UIColor greenColor]]; +#endif + } +} + +- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ +#ifdef ACTIVEGS + if ([[pManager getEmulatorView].kbdc myTouchesBegan:touches]) + { + debug_printf("pad activated"); + + [[pManager getEmulatorView].kbdc setGestureIndicatorVisibility:MODE_PAD color:[UIColor grayColor]]; + [[pManager getEmulatorView].contentView disableGestures:(MODE_ALL+MODE_EMULATOR & ~MODE_PAD)]; + return ; + } +#endif + + // prend la première touche + UITouch *touch = [[touches allObjects] objectAtIndex:0]; + + + + + + if (!allowInput) + { + debug_printf("input disabled"); + return ; + } + + if ([touches count] > 1) + { + debug_printf("multiple - disabling input"); +#ifdef ACTIVEGS + [[pManager getEmulatorView].contentView disableGestures:MODE_EMULATOR]; +#endif + return ; + } + + + if (self.useTouch) + { + if (!self.secondTouch && zoomDisabled) + { + if (!mouseDown) + { + debug_printf("second touch mouse Down\n"); + [self mouseDown]; + } + else + { + debug_printf("second touch\n"); + + } + + self.secondTouch = touch; + } + else + { + if (zoomDisabled) + { + debug_printf("third or more touch ignore"); + } + else + { + debug_printf("ignoring second touch - too soon, must be a gestures"); +#ifdef ACTIVEGS + [[pManager getEmulatorView].contentView disableGestures:MODE_EMULATOR]; +#endif + } + } + return ; + + } + + + + self.useTouch = touch; + + lastMousePos = [self rotateTouch:touch]; + + add_event_mouse(lastMousePos.x,lastMousePos.y,0,-1); + + if (self.secondTouch) + { + // mouseDown déjà enclenchée -> on a fini + return ; + } + + int nbtap = [touch tapCount]; + if (nbtap==1) + { + // prépare la désactivation des gestures + //[[pManager getEmulatorView].contentView scheduleDisableAllGestures]; + startNewPhase=TRUE; + + } + + + if (nbtap==2) + { + extern void simulate_space_event(); + simulate_space_event(); + } + + if (nbtap>=2 || g_adb.g_warp_pointer==WARP_TOUCHSCREEN) + { + + debug_printf("*** multi-tap\n"); + + [self mouseUp]; + + [self mouseDown]; + + // Désactive immédiatement les gestures +#ifdef ACTIVEGS + if (g_adb.g_warp_pointer!=WARP_TOUCHSCREEN) + [[pManager getEmulatorView].contentView disableGestures:MODE_ALL]; +#endif + } +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + + debug_printf("touchesEnded : %d",[touches count]); + +#ifdef ACTIVEGS + if (! [[pManager getEmulatorView].kbdc myTouchesEnded:touches]) + { + // le pad n'est plus actif - reactive les input si elles étaient disabled + if (!allowInput) + [[pManager getEmulatorView].contentView reenableAllGestures]; + } +#endif + + + if (!allowInput) + return ; + + if ( [touches containsObject:self.useTouch] + && [touches containsObject:self.secondTouch]) + { + debug_printf("both keys ended at the sametime"); + + [self mouseUp]; + + self.useTouch = nil; + self.secondTouch = nil; + + #ifdef ACTIVEGS + // vérifie les gestures + customView* cv = [pManager getEmulatorView].contentView; + [cv processGesturesOnTouchesEnded]; +#endif + return ; + } + + if ([touches containsObject:self.useTouch]) + { + debug_printf("contains useTouch"); + + if (self.secondTouch) + { + // libère useTouch mais ne fait rien d'autre - maintien la touche enclenchée + + debug_printf("maintaining mouseDown - secondTouch "); + self.useTouch = nil; + return; + } + else + { + debug_printf("touchesEnded\n"); + + [self mouseUp]; + self.useTouch = nil; +#ifdef ACTIVEGS + // vérifie les gestures + customView* cv = [pManager getEmulatorView].contentView; + [cv processGesturesOnTouchesEnded]; +#endif + } + } + + if ([touches containsObject:self.secondTouch]) + { + // correspond à un mouseUp + [self mouseUp]; + self.secondTouch = nil; + debug_printf("secondTouch ended"); + + if (!self.useTouch) + { +#ifdef ACTIVEGS + // aucune touche n'est plus appuyée : réactive les gestures + [[pManager getEmulatorView].contentView scheduleEnableAllGestures]; +#endif + } + } + +} + +- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event +{ + + // on est ici car lez zoom a démarré => théoriquement, il ne doit y avoir aucun useTouch, secondTouch, ou mouseDown + + if ([touches containsObject:self.useTouch]) + { + debug_printf("touchesCancelled useTouch\n"); + self.useTouch = nil; + } + if ([touches containsObject:self.secondTouch]) + { + debug_printf("touchesCancelled secondTouch\n"); + self.secondTouch = nil; + } + + // DEBUG INFO + if (mouseDown) + { + printf("mouseDown in touchesCancelled***"); + [self mouseUp]; + } + + //[[pManager getEmulatorView].contentView reenableAllGestures]; +} + + +- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event +{ + +#ifdef ACTIVEGS + if ([[pManager getEmulatorView].kbdc myTouchesMoved:touches]) + return ; +#endif + if (!allowInput) + return ; + + if (startNewPhase) + { + debug_printf("first finger moved"); + startNewPhase = FALSE; +#ifdef ACTIVEGS + [[pManager getEmulatorView].contentView disableGestures:MODE_ZOOM]; // à faire avant le schedule + [[pManager getEmulatorView].contentView scheduleDisableAllGestures]; +#endif + } + + if (!self.useTouch) return ; + if ([touches containsObject:self.useTouch]) + { + + lastMousePos = [self rotateTouch:self.useTouch]; + add_event_mouse(lastMousePos.x,lastMousePos.y,mouseDown,1); + } +} + + +- (void)dealloc { + + self.delegate = nil; + [super dealloc]; +} + + +@end diff --git a/xcodebuild.h b/xcodebuild.h new file mode 100644 index 0000000..14634a7 --- /dev/null +++ b/xcodebuild.h @@ -0,0 +1 @@ +const char* xcodebuild="304";

      @%y9FfW39j#H6O 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 z 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